From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id B4F8D8925D for ; Mon, 20 May 2019 10:16:30 +0000 (UTC) From: Petri Latvala Date: Mon, 20 May 2019 13:16:22 +0300 Message-Id: <20190520101623.12466-1-petri.latvala@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v3 1/2] runner: Add support for aborting on network failure List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org Cc: Tomi Sarvela , Petri Latvala , Daniel Vetter List-ID: SWYgdGhlIG5ldHdvcmsgZ29lcyBkb3duIHdoaWxlIHRlc3RpbmcsIENJIHRlbmRzIHRvIGludGVy cHJldCB0aGF0IGFzCnRoZSBkZXZpY2UgYmVpbmcgZG93biwgY3V0dGluZyBpdHMgcG93ZXIgYWZ0 ZXIgYSB3aGlsZS4gVGhpcyBjYXVzZXMgYW4KaW5jb21wbGV0ZSB0byBhbiBpbm5vY2VudCB0ZXN0 LCBpbmNyZWFzaW5nIG5vaXNlIGluIHRoZSByZXN1bHRzLgoKQSBuZXcgZmxhZyB0byAtLWFib3J0 LW9uLW1vbml0b3JlZC1lcnJvciwgInBpbmciLCB1c2VzIGxpYm9waW5nIHRvCnBpbmcgYSBob3N0 IGNvbmZpZ3VyZWQgaW4gLmlndHJjIHdpdGggb25lIHBpbmcgYWZ0ZXIgZWFjaCB0ZXN0CmV4ZWN1 dGlvbiBhbmQgYWJvcnRzIHRoZSBydW4gaWYgdGhlcmUgaXMgbm8gcmVwbHkgaW4gYSBoYXJkY29k ZWQKYW1vdW50IG9mIHRpbWUuCgp2MjoKIC0gVXNlIGEgaGlnaGVyIHRpbWVvdXQKIC0gQWxsb3cg aG9zdG5hbWUgY29uZmlndXJhdGlvbiBmcm9tIGVudmlyb25tZW50CnYzOgogLSBVc2UgcnVubmVy X2NfYXJncyBmb3IgaG9sZGluZyBjIGFyZ3MgZm9yIHJ1bm5lcgogLSBIYW5kbGUgcnVubmVyJ3Mg bWVzb24gb3B0aW9ucyBpbiBydW5uZXIvbWVzb24uYnVpbGQKIC0gSW5zdGVhZCBvZiBvbmUgcGlu ZyB3aXRoIDIwIHNlY29uZCB0aW1lb3V0LCBwaW5nIHdpdGggMSBzZWNvbmQgdGltZW91dAogICBm b3IgYSBkdXJhdGlvbiBvZiAyMCBzZWNvbmRzCgpTaWduZWQtb2ZmLWJ5OiBQZXRyaSBMYXR2YWxh IDxwZXRyaS5sYXR2YWxhQGludGVsLmNvbT4KQ2M6IEFya2FkaXVzeiBIaWxlciA8YXJrYWRpdXN6 LmhpbGVyQGludGVsLmNvbT4KQ2M6IE1hcnRpbiBQZXJlcyA8bWFydGluLnBlcmVzQGxpbnV4Lmlu dGVsLmNvbT4KQ2M6IFRvbWkgU2FydmVsYSA8dG9taS5wLnNhcnZlbGFAaW50ZWwuY29tPgpDYzog RGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPgotLS0KIG1lc29uX29wdGlvbnMudHh0ICB8 ICAgNiArKwogcnVubmVyL2V4ZWN1dG9yLmMgIHwgMTUwICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogcnVubmVyL21lc29uLmJ1aWxkIHwgIDE0ICsrKystCiBy dW5uZXIvc2V0dGluZ3MuYyAgfCAgIDQgKysKIHJ1bm5lci9zZXR0aW5ncy5oICB8ICAgNSArLQog NSBmaWxlcyBjaGFuZ2VkLCAxNzYgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9tZXNvbl9vcHRpb25zLnR4dCBiL21lc29uX29wdGlvbnMudHh0CmluZGV4IDg4OGVm ZTU2Li45MzVmODgzZSAxMDA2NDQKLS0tIGEvbWVzb25fb3B0aW9ucy50eHQKKysrIGIvbWVzb25f b3B0aW9ucy50eHQKQEAgLTU4LDYgKzU4LDEyIEBAIG9wdGlvbignYnVpbGRfcnVubmVyJywKICAg ICAgICBjaG9pY2VzIDogWydhdXRvJywgJ3RydWUnLCAnZmFsc2UnXSwKICAgICAgICBkZXNjcmlw dGlvbiA6ICdCdWlsZCB0ZXN0IHJ1bm5lcicpCiAKK29wdGlvbignd2l0aF9vcGluZycsCisgICAg ICAgdHlwZSA6ICdjb21ibycsCisgICAgICAgdmFsdWUgOiAnYXV0bycsCisgICAgICAgY2hvaWNl cyA6IFsnYXV0bycsICd0cnVlJywgJ2ZhbHNlJ10sCisgICAgICAgZGVzY3JpcHRpb24gOiAnQnVp bGQgaWd0X3J1bm5lciB3aXRoIGxpYm9waW5nJykKKwogb3B0aW9uKCd1c2VfcnBhdGgnLAogICAg ICAgIHR5cGUgOiAnYm9vbGVhbicsCiAgICAgICAgdmFsdWUgOiBmYWxzZSwKZGlmZiAtLWdpdCBh L3J1bm5lci9leGVjdXRvci5jIGIvcnVubmVyL2V4ZWN1dG9yLmMKaW5kZXggN2U1ZmJlOGYuLmMw N2U1M2ZhIDEwMDY0NAotLS0gYS9ydW5uZXIvZXhlY3V0b3IuYworKysgYi9ydW5uZXIvZXhlY3V0 b3IuYwpAQCAtMSw2ICsxLDEwIEBACiAjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxmY250 bC5oPgorI2luY2x1ZGUgPGdsaWIuaD4KICNpbmNsdWRlIDxsaW51eC93YXRjaGRvZy5oPgorI2lm IEhBVkVfT1BJTkcKKyNpbmNsdWRlIDxvcGluZy5oPgorI2VuZGlmCiAjaW5jbHVkZSA8c2lnbmFs Lmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KQEAgLTE2LDYgKzIw LDcgQEAKICNpbmNsdWRlIDx0aW1lLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAKKyNpbmNsdWRl ICJpZ3RfYXV4LmgiCiAjaW5jbHVkZSAiaWd0X2NvcmUuaCIKICNpbmNsdWRlICJleGVjdXRvci5o IgogI2luY2x1ZGUgIm91dHB1dF9zdHJpbmdzLmgiCkBAIC0xMDgsNiArMTEzLDE0NyBAQCBzdGF0 aWMgdm9pZCBwaW5nX3dhdGNoZG9ncyh2b2lkKQogCX0KIH0KIAorI2lmIEhBVkVfT1BJTkcKK3N0 YXRpYyBwaW5nb2JqX3QgKnBpbmdvYmogPSBOVUxMOworCitzdGF0aWMgYm9vbCBsb2FkX3Bpbmdf Y29uZmlnX2Zyb21fZmlsZSh2b2lkKQoreworCWNoYXIgKmtleV9maWxlX2VudiA9IE5VTEw7CisJ Y2hhciAqa2V5X2ZpbGVfbG9jID0gTlVMTDsKKwlHRXJyb3IgKmVycm9yID0gTlVMTDsKKwlHS2V5 RmlsZSAqa2V5X2ZpbGUgPSBOVUxMOworCWNvbnN0IGNoYXIgKnBpbmdfaG9zdG5hbWU7CisJaW50 IHJldDsKKworCS8qIERldGVybWluZSBpZ3QgY29uZmlnIHBhdGggKi8KKwlrZXlfZmlsZV9lbnYg PSBnZXRlbnYoIklHVF9DT05GSUdfUEFUSCIpOworCWlmIChrZXlfZmlsZV9lbnYpIHsKKwkJa2V5 X2ZpbGVfbG9jID0gc3RyZHVwKGtleV9maWxlX2Vudik7CisJfSBlbHNlIHsKKwkJYXNwcmludGYo JmtleV9maWxlX2xvYywgIiVzLy5pZ3RyYyIsIGdfZ2V0X2hvbWVfZGlyKCkpOworCX0KKworCS8q IExvYWQgaWd0IGNvbmZpZyBmaWxlICovCisJa2V5X2ZpbGUgPSBnX2tleV9maWxlX25ldygpOwor CXJldCA9IGdfa2V5X2ZpbGVfbG9hZF9mcm9tX2ZpbGUoa2V5X2ZpbGUsIGtleV9maWxlX2xvYywK KwkJCQkJR19LRVlfRklMRV9OT05FLCAmZXJyb3IpOworCWZyZWUoa2V5X2ZpbGVfbG9jKTsKKwor CWlmICghcmV0KSB7CisJCWdfZXJyb3JfZnJlZShlcnJvcik7CisJCWdfa2V5X2ZpbGVfZnJlZShr ZXlfZmlsZSk7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlnX2NsZWFyX2Vycm9yKCZlcnJvcik7 CisKKwlwaW5nX2hvc3RuYW1lID0KKwkJZ19rZXlfZmlsZV9nZXRfc3RyaW5nKGtleV9maWxlLCAi RFVUIiwKKwkJCQkgICAgICAiUGluZ0hvc3ROYW1lIiwgJmVycm9yKTsKKworCWdfY2xlYXJfZXJy b3IoJmVycm9yKTsKKwlnX2tleV9maWxlX2ZyZWUoa2V5X2ZpbGUpOworCisJaWYgKCFwaW5nX2hv c3RuYW1lKQorCQlyZXR1cm4gZmFsc2U7CisKKwlpZiAocGluZ19ob3N0X2FkZChwaW5nb2JqLCBw aW5nX2hvc3RuYW1lKSkgeworCQlmcHJpbnRmKHN0ZGVyciwKKwkJCSJhYm9ydCBvbiBwaW5nOiBD YW5ub3QgdXNlIGhvc3RuYW1lIGZyb20gY29uZmlnIGZpbGVcbiIpOworCQlyZXR1cm4gZmFsc2U7 CisJfQorCisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIGxvYWRfcGluZ19jb25maWdf ZnJvbV9lbnYodm9pZCkKK3sKKwljb25zdCBjaGFyICpwaW5nX2hvc3RuYW1lOworCisJcGluZ19o b3N0bmFtZSA9IGdldGVudigiSUdUX1BJTkdfSE9TVE5BTUUiKTsKKwlpZiAoIXBpbmdfaG9zdG5h bWUpCisJCXJldHVybiBmYWxzZTsKKworCWlmIChwaW5nX2hvc3RfYWRkKHBpbmdvYmosIHBpbmdf aG9zdG5hbWUpKSB7CisJCWZwcmludGYoc3RkZXJyLAorCQkJImFib3J0IG9uIHBpbmc6IENhbm5v dCB1c2UgaG9zdG5hbWUgZnJvbSBlbnZpcm9ubWVudFxuIik7CisJCXJldHVybiBmYWxzZTsKKwl9 CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgY2FuX3Bpbmcodm9pZCkKK3sKKwkv KgorCSAqIE9uIHNvbWUgaG9zdHMsIGdldHRpbmcgbmV0d29yayBiYWNrIHVwIGFmdGVyIHN1c3Bl bmQgdGFrZXMKKwkgKiB1cHdhcmRzIG9mIDEwIHNlY29uZHMuIDIwIHNlY29uZHMgc2hvdWxkIGJl IGVub3VnaCB0byBzZWUKKwkgKiBpZiBuZXR3b3JrIGNvbWVzIGJhY2sgYXQgYWxsLCBhbmQgaG9w ZWZ1bGx5IG5vdCB0b28gbG9uZyB0bworCSAqIG1ha2UgZXh0ZXJuYWwgbW9uaXRvcmluZyBmcmVh ayBvdXQuCisJICovCisJaWd0X3VudGlsX3RpbWVvdXQoMjApIHsKKwkJcGluZ29ial9pdGVyX3Qg Kml0ZXI7CisKKwkJcGluZ19zZW5kKHBpbmdvYmopOworCisJCWZvciAoaXRlciA9IHBpbmdfaXRl cmF0b3JfZ2V0KHBpbmdvYmopOworCQkgICAgIGl0ZXIgIT0gTlVMTDsKKwkJICAgICBpdGVyID0g cGluZ19pdGVyYXRvcl9uZXh0KGl0ZXIpKSB7CisJCQlkb3VibGUgbGF0ZW5jeTsKKwkJCXNpemVf dCBsZW4gPSBzaXplb2YobGF0ZW5jeSk7CisKKwkJCXBpbmdfaXRlcmF0b3JfZ2V0X2luZm8oaXRl ciwKKwkJCQkJICAgICAgIFBJTkdfSU5GT19MQVRFTkNZLAorCQkJCQkgICAgICAgJmxhdGVuY3ks CisJCQkJCSAgICAgICAmbGVuKTsKKwkJCWlmIChsYXRlbmN5ID49IDAuMCkKKwkJCQlyZXR1cm4g dHJ1ZTsKKwkJfQorCX0KKworCXJldHVybiBmYWxzZTsKK30KKworI2VuZGlmCisKK3N0YXRpYyB2 b2lkIHBpbmdfY29uZmlnKHZvaWQpCit7CisjaWYgSEFWRV9PUElORworCWRvdWJsZSB0aW1lb3V0 ID0gMS4wOworCisJaWYgKHBpbmdvYmopCisJCXJldHVybjsKKworCXBpbmdvYmogPSBwaW5nX2Nv bnN0cnVjdCgpOworCisJLyogVHJ5IGVudiBmaXJzdCwgdGhlbiBjb25maWcgZmlsZSAqLworCWlm ICghbG9hZF9waW5nX2NvbmZpZ19mcm9tX2VudigpICYmICFsb2FkX3BpbmdfY29uZmlnX2Zyb21f ZmlsZSgpKSB7CisJCWZwcmludGYoc3RkZXJyLAorCQkJImFib3J0IG9uIHBpbmc6IE5vIGhvc3Qg dG8gcGluZyBjb25maWd1cmVkXG4iKTsKKwkJcGluZ19kZXN0cm95KHBpbmdvYmopOworCQlwaW5n b2JqID0gTlVMTDsKKwkJcmV0dXJuOworCX0KKworCXBpbmdfc2V0b3B0KHBpbmdvYmosIFBJTkdf T1BUX1RJTUVPVVQsICZ0aW1lb3V0KTsKKyNlbmRpZgorfQorCitzdGF0aWMgY2hhciAqaGFuZGxl X3Bpbmcodm9pZCkKK3sKKyNpZiBIQVZFX09QSU5HCisJaWYgKHBpbmdvYmogJiYgIWNhbl9waW5n KCkpIHsKKwkJY2hhciAqcmVhc29uOworCisJCWFzcHJpbnRmKCZyZWFzb24sCisJCQkgIlBpbmcg aG9zdCBkaWQgbm90IHJlc3BvbmQgdG8gcGluZywgbmV0d29yayBkb3duIik7CisJCXJldHVybiBy ZWFzb247CisJfQorI2VuZGlmCisKKwlyZXR1cm4gTlVMTDsKK30KKwogc3RhdGljIGNoYXIgKmhh bmRsZV9sb2NrZGVwKHZvaWQpCiB7CiAJY29uc3QgY2hhciAqaGVhZGVyID0gIkxvY2tkZXAgbm90 IGFjdGl2ZVxuXG4vcHJvYy9sb2NrZGVwX3N0YXRzIGNvbnRlbnRzOlxuIjsKQEAgLTE5Nyw2ICsz NDMsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHsKIH0gYWJvcnRfaGFuZGxlcnNbXSA9IHsKIAl7 IEFCT1JUX0xPQ0tERVAsIGhhbmRsZV9sb2NrZGVwIH0sCiAJeyBBQk9SVF9UQUlOVCwgaGFuZGxl X3RhaW50IH0sCisJeyBBQk9SVF9QSU5HLCBoYW5kbGVfcGluZyB9LAogCXsgMCwgMCB9LAogfTsK IApAQCAtMTI4OCw2ICsxNDM1LDkgQEAgYm9vbCBleGVjdXRlKHN0cnVjdCBleGVjdXRlX3N0YXRl ICpzdGF0ZSwKIAogCWluaXRfd2F0Y2hkb2dzKHNldHRpbmdzKTsKIAorCWlmIChzZXR0aW5ncy0+ YWJvcnRfbWFzayAmIEFCT1JUX1BJTkcpCisJCXBpbmdfY29uZmlnKCk7CisKIAlpZiAoIXVuYW1l KCZ1bmFtZWJ1ZikpIHsKIAkJZHByaW50Zih1bmFtZWZkLCAiJXMgJXMgJXMgJXMgJXNcbiIsCiAJ CQl1bmFtZWJ1Zi5zeXNuYW1lLApkaWZmIC0tZ2l0IGEvcnVubmVyL21lc29uLmJ1aWxkIGIvcnVu bmVyL21lc29uLmJ1aWxkCmluZGV4IGI2NThmMWQyLi42ZDYwYzUzMCAxMDA2NDQKLS0tIGEvcnVu bmVyL21lc29uLmJ1aWxkCisrKyBiL3J1bm5lci9tZXNvbi5idWlsZApAQCAtMSw0ICsxLDE1IEBA CiBqc29uYyA9IGRlcGVuZGVuY3koJ2pzb24tYycsIHJlcXVpcmVkOiBfcnVubmVyX3JlcXVpcmVk KQorcnVubmVyX2RlcHMgPSBbanNvbmMsIGdsaWJdCitydW5uZXJfY19hcmdzID0gW10KKword2l0 aF9vcGluZyA9IGdldF9vcHRpb24oJ3dpdGhfb3BpbmcnKQoraWYgd2l0aF9vcGluZyAhPSAnZmFs c2UnCisJb3BpbmcgPSBkZXBlbmRlbmN5KCdsaWJvcGluZycsIHJlcXVpcmVkOiB3aXRoX29waW5n ID09ICd0cnVlJykKKwlpZiBvcGluZy5mb3VuZCgpCisJCXJ1bm5lcl9kZXBzICs9IG9waW5nCisJ CXJ1bm5lcl9jX2FyZ3MgKz0gJy1ESEFWRV9PUElORz0xJworCWVuZGlmCitlbmRpZgogCiBydW5u ZXJsaWJfc291cmNlcyA9IFsgJ3NldHRpbmdzLmMnLAogCQkgICAgICAnam9iX2xpc3QuYycsCkBA IC0yMSw3ICszMiw4IEBAIGlmIF9idWlsZF9ydW5uZXIgYW5kIF9idWlsZF90ZXN0cyBhbmQganNv bmMuZm91bmQoKQogCiAJcnVubmVybGliID0gc3RhdGljX2xpYnJhcnkoJ2lndF9ydW5uZXInLCBy dW5uZXJsaWJfc291cmNlcywKIAkJCQkgICBpbmNsdWRlX2RpcmVjdG9yaWVzIDogaW5jLAotCQkJ CSAgIGRlcGVuZGVuY2llcyA6IFtqc29uYywgZ2xpYl0pCisJCQkJICAgY19hcmdzIDogcnVubmVy X2NfYXJncywKKwkJCQkgICBkZXBlbmRlbmNpZXMgOiBydW5uZXJfZGVwcykKIAogCXJ1bm5lciA9 IGV4ZWN1dGFibGUoJ2lndF9ydW5uZXInLCBydW5uZXJfc291cmNlcywKIAkJCSAgICBsaW5rX3dp dGggOiBydW5uZXJsaWIsCmRpZmYgLS1naXQgYS9ydW5uZXIvc2V0dGluZ3MuYyBiL3J1bm5lci9z ZXR0aW5ncy5jCmluZGV4IGFkMzhhZThkLi5iNTdkMWE2YSAxMDA2NDQKLS0tIGEvcnVubmVyL3Nl dHRpbmdzLmMKKysrIGIvcnVubmVyL3NldHRpbmdzLmMKQEAgLTQ4LDYgKzQ4LDcgQEAgc3RhdGlj IHN0cnVjdCB7CiB9IGFib3J0X2NvbmRpdGlvbnNbXSA9IHsKIAl7IEFCT1JUX1RBSU5ULCAidGFp bnQiIH0sCiAJeyBBQk9SVF9MT0NLREVQLCAibG9ja2RlcCIgfSwKKwl7IEFCT1JUX1BJTkcsICJw aW5nIiB9LAogCXsgQUJPUlRfQUxMLCAiYWxsIiB9LAogCXsgMCwgMCB9LAogfTsKQEAgLTEzNiw2 ICsxMzcsOSBAQCBzdGF0aWMgY29uc3QgY2hhciAqdXNhZ2Vfc3RyID0KIAkiICAgICAgICAgICAg ICAgICAgICAgICAgUG9zc2libGUgY29uZGl0aW9uczpcbiIKIAkiICAgICAgICAgICAgICAgICAg ICAgICAgIGxvY2tkZXAgLSBhYm9ydCB3aGVuIGtlcm5lbCBsb2NrZGVwIGhhcyBiZWVuIGFuZ2Vy ZWQuXG4iCiAJIiAgICAgICAgICAgICAgICAgICAgICAgICB0YWludCAgIC0gYWJvcnQgd2hlbiBr ZXJuZWwgYmVjb21lcyBmYXRhbGx5IHRhaW50ZWQuXG4iCisJIiAgICAgICAgICAgICAgICAgICAg ICAgICBwaW5nICAgIC0gYWJvcnQgd2hlbiBhIGhvc3QgY29uZmlndXJlZCBpbiAuaWd0cmMgb3Jc biIKKwkiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCB2YXJp YWJsZSBJR1RfUElOR19IT1NUTkFNRSBkb2VzXG4iCisJIiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbm90IHJlc3BvbmQgdG8gcGluZy5cbiIKIAkiICAgICAgICAgICAgICAgICAg ICAgICAgIGFsbCAgICAgLSBhYm9ydCBmb3IgYWxsIG9mIHRoZSBhYm92ZS5cbiIKIAkiICAtcywg LS1zeW5jICAgICAgICAgICAgU3luYyByZXN1bHRzIHRvIGRpc2sgYWZ0ZXIgZXZlcnkgdGVzdFxu IgogCSIgIC1sIHtxdWlldCx2ZXJib3NlLGR1bW15fSwgLS1sb2ctbGV2ZWwge3F1aWV0LHZlcmJv c2UsZHVtbXl9XG4iCmRpZmYgLS1naXQgYS9ydW5uZXIvc2V0dGluZ3MuaCBiL3J1bm5lci9zZXR0 aW5ncy5oCmluZGV4IDBhMWVlMDhkLi4yYjZlNjVkMCAxMDA2NDQKLS0tIGEvcnVubmVyL3NldHRp bmdzLmgKKysrIGIvcnVubmVyL3NldHRpbmdzLmgKQEAgLTE1LDkgKzE1LDEwIEBAIGVudW0gewog CiAjZGVmaW5lIEFCT1JUX1RBSU5UICAgKDEgPDwgMCkKICNkZWZpbmUgQUJPUlRfTE9DS0RFUCAo MSA8PCAxKQotI2RlZmluZSBBQk9SVF9BTEwgICAgIChBQk9SVF9UQUlOVCB8IEFCT1JUX0xPQ0tE RVApCisjZGVmaW5lIEFCT1JUX1BJTkcgICAgKDEgPDwgMikKKyNkZWZpbmUgQUJPUlRfQUxMICAg ICAoQUJPUlRfVEFJTlQgfCBBQk9SVF9MT0NLREVQIHwgQUJPUlRfUElORykKIAotX1N0YXRpY19h c3NlcnQoQUJPUlRfQUxMID09IChBQk9SVF9UQUlOVCB8IEFCT1JUX0xPQ0tERVApLCAiQUJPUlRf QUxMIG11c3QgYmUgYWxsIGNvbmRpdGlvbnMgYml0d2lzZSBvcidkIik7CitfU3RhdGljX2Fzc2Vy dChBQk9SVF9BTEwgPT0gKEFCT1JUX1RBSU5UIHwgQUJPUlRfTE9DS0RFUCB8IEFCT1JUX1BJTkcp LCAiQUJPUlRfQUxMIG11c3QgYmUgYWxsIGNvbmRpdGlvbnMgYml0d2lzZSBvcidkIik7CiAKIHN0 cnVjdCByZWdleF9saXN0IHsKIAljaGFyICoqcmVnZXhfc3RyaW5nczsKLS0gCjIuMTkuMQoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWls aW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2