Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1veWl7-00ERR9-0O for pgsql-hackers@arkaria.postgresql.org; Sat, 10 Jan 2026 11:03:56 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1veWl1-009vNT-2S for pgsql-hackers@arkaria.postgresql.org; Sat, 10 Jan 2026 11:03:48 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1veWl0-009vNJ-1w for pgsql-hackers@lists.postgresql.org; Sat, 10 Jan 2026 11:03:48 +0000 Received: from mail-ed1-x534.google.com ([2a00:1450:4864:20::534]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1veWkq-005DqA-31 for pgsql-hackers@postgresql.org; Sat, 10 Jan 2026 11:03:46 +0000 Received: by mail-ed1-x534.google.com with SMTP id 4fb4d7f45d1cf-64d02c01865so8329126a12.1 for ; Sat, 10 Jan 2026 03:03:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jeltef.nl; s=google; t=1768043014; x=1768647814; darn=postgresql.org; h=in-reply-to:references:from:to:subject:cc:message-id:date :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=TEj3Ko/Af1pmVeaP0afZrUD04F2sd9sHD1E8L7cnWbU=; b=HSnlic0ckzsChhHtxtCRAgHOsI1kVsVmZfeRVt5M4j1xXRX7UrIkgBBbXaMEhBXiC0 4wMhe8GzdMvmsg5cb+gJTF2Ztoa/PrQvMgS7npAByxDvV3B3S40UYocsPHGALSMcuGoq KPSqqUiGsC3DSBZGlDH8LmHwu/Es2TisN9+RHriVVEXGMhvCA4BkAnT7lCf4CHCK00mP CpfZc8H5sn0LYA1C5AYll7LBg53w1TU6lN+ufjoJuS1/rdkh98mBRAqywHsoisoA92xR nC7myuSHpku/EM3oFRrObgxUSCKZDWOUqBQpOQolB43pMjNqWxJ+MffSlCMe3Bt1SZhK ZD1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768043014; x=1768647814; h=in-reply-to:references:from:to:subject:cc:message-id:date :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=TEj3Ko/Af1pmVeaP0afZrUD04F2sd9sHD1E8L7cnWbU=; b=RqfK4+cP1PtjXGr8p6p5U+fhKJKRlivUEQ77KnjV4fgZOFb0fx2huVwv+IhXX3CXr/ FnhOtTLWotiIapa/Fy0g86FwUs3+RuOr5nEev2Gx/qHKZ6BsLqbshmyCE7VNgdEiHnR8 +U2w2Pxny0L/JYDcgLK7+YWsWZJ4z8yY3mGtd94iEspGZhfEiVsf883AL6dm3CJg166/ uF3theV3WfVbrvwOJokR3XSt88tUd6BRcPPBNDFzw89Md4GyX9mS1RVU3qaoXqw0H7lh BSDXtrhpJtrICr3bxEkIiNHgWtgzhGdxDpknJNbMR2O6juktgScIrq0R4+1q2LUdAgLx nJZw== X-Forwarded-Encrypted: i=1; AJvYcCX8/dDWWehtcbvz0z3soIDCxQDX5ZcjjthGHCtDd2v4NxGgGTC1v6+t2W/jystSDeeRZYFXWSFPR1QmYiLe@postgresql.org X-Gm-Message-State: AOJu0YxwHyOEjl5NJwrwukHc36MtN/UEbMBfA1VTDx9rTeLtAJ2w0scE 7J9BwhelPfSL7MLJTP8KY4qxmwhJGC4vqpMAMXUA1GbEiZc+FWppjAV7SNG+8TOYCAQ= X-Gm-Gg: AY/fxX6z/RaBN6GvePA00xjWCMxHngld8MiMYYGuP6DbRY0/EBTC5X5KxNBKrpSDqu+ HOiqJW8ryWQN5WduCUy71DfMKTkvcbSwL/JeI37L40yNb3H64CTvvtepfUptMwUwgnEe4Pi5NsP w0TW0JPaOSeh0UpDvgPIlo2orVDFlTEHt+oSwU4aVKBLCSk6VoiJOAgtQjBq0VuiapuE9uFPkUT 2AOehYBWm8RvmHNFaOdwO8jgPWpop/lSBXvMha72c7C7qsr4SDDdaaDu2z1SSsEMzLND7+e2fnP vktdoM2Mr+PRLaHECoiju/0wWyaL+ldTTFDsVclC6xFBkVjRWgMwkgErXgjb8VAHwV0+NIkJOUe SHDqdyy4aXiy12YgR7GGTFYOyiitMSEkjG+JsZvb4Q1TnrTb9vvYhB2CVmkfz0N3DtlGqWYR7bd 3QxJrkoF+mmrALXeQ1OqKxP+XMdxjBglT2gCE= X-Google-Smtp-Source: AGHT+IGMpEaXt5iiVRZs6vpyLPaJslZ0cfTKDr14OrPieSvhlfkIWEVJ3xJtPFKElfSqry7fPV6JSg== X-Received: by 2002:a17:907:6d17:b0:b7c:e320:522c with SMTP id a640c23a62f3a-b84451ea50bmr1370009466b.53.1768043013908; Sat, 10 Jan 2026 03:03:33 -0800 (PST) Received: from localhost (145-53-221-196.fixed.kpn.net. [145.53.221.196]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b842a23432dsm1361843166b.11.2026.01.10.03.03.32 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 10 Jan 2026 03:03:33 -0800 (PST) Content-Type: multipart/mixed; boundary=cf0f2795fe617e705419450ca58cceb69e2a378a306664a6a3b70c8c4a92 Mime-Version: 1.0 Date: Sat, 10 Jan 2026 12:03:31 +0100 Message-Id: Cc: "Jacob Champion" , "PostgreSQL Hackers" , "Robert Haas" , "Daniel Gustafsson" , "Tom Lane" , "Peter Eisentraut" , "Nazir Bilal Yavuz" Subject: Re: RFC: adding pytest as a supported test framework To: "Andres Freund" From: "Jelte Fennema-Nio" X-Mailer: aerc 0.20.1-31-gf6db7c329ce0 References: In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --cf0f2795fe617e705419450ca58cceb69e2a378a306664a6a3b70c8c4a92 Content-Type: multipart/alternative; boundary=7e2938d8adca939952deb081a443b2900bf026ac7bc41863a6039292c020 --7e2938d8adca939952deb081a443b2900bf026ac7bc41863a6039292c020 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed On Thu Jan 8, 2026 at 1:34 PM CET, Jelte Fennema-Nio wrote: > Attached is a simplified version with all of the things you mentioned > removed. v10 attached to resolve merge conflicts. --7e2938d8adca939952deb081a443b2900bf026ac7bc41863a6039292c020-- --cf0f2795fe617e705419450ca58cceb69e2a378a306664a6a3b70c8c4a92 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v10-0001-Add-support-for-pytest-test-suites.patch Content-Type: text/x-patch; charset=utf-8; name=v10-0001-Add-support-for-pytest-test-suites.patch RnJvbSBlNmFjZWYyNTJiYjFiMTU1ZTFlMmU1NGIyOGQ4N2E2OGU1YzZjZDE3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogV2VkLCAxMyBBdWcgMjAyNSAxMDo1ODo1NiAtMDcwMApTdWJqZWN0 OiBbUEFUQ0ggdjEwIDEvNV0gQWRkIHN1cHBvcnQgZm9yIHB5dGVzdCB0ZXN0IHN1aXRlcwoKU3Bl Y2lmeSAtLWVuYWJsZS1weXRlc3QvLURweXRlc3Q9ZW5hYmxlZCBhdCBjb25maWd1cmUgdGltZS4g VGhpcwpjb250YWlucyBubyBQb3N0Z3JlcyB0ZXN0IGxvZ2ljIC0tIGl0IGlzIGp1c3QgYSAidmFu aWxsYSIgcHl0ZXN0CnNrZWxldG9uLgoKVGhpcyBjb250YWlucyBhIGN1c3RvbSBweXRlc3QgcGx1 Z2luIHRvIGdlbmVyYXRlIFRBUCBvdXRwdXQuIFRoaXMgcGx1Z2luCmlzIHVzZWQgYnkgdGhlIE1l c29uIG10ZXN0IHJ1bm5lciwgdG8gc2hvdyByZWxldmFudCBpbmZvcm1hdGlvbiBmb3IKZmFpbGVk IHRlc3RzLiBUaGUgcHl0ZXN0LXRhcCBwbHVnaW4gd291bGQgaGF2ZSBiZWVuIHByZWZlcmFibGUs IGJ1dCBpdCdzCm5vdyBpbiBtYWludGVuYW5jZSBtb2RlLCBhbmQgaXQgaGFzIHByb2JsZW1zIHdp dGggYWNjaWRlbnRhbGx5CnN1cHByZXNzaW5nIGltcG9ydGFudCBjb2xsZWN0aW9uIGZhaWx1cmVz LgoKQ28tYXV0aG9yZWQtYnk6IEplbHRlIEZlbm5lbWEtTmlvIDxwb3N0Z3Jlc0BqZWx0ZWYubmw+ Ci0tLQogLmNpcnJ1cy50YXNrcy55bWwgICAgICAgICAgIHwgIDExICstCiAuZ2l0aWdub3JlICAg ICAgICAgICAgICAgICAgfCAgIDMgKwogY29uZmlndXJlICAgICAgICAgICAgICAgICAgIHwgMTY2 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogY29uZmlndXJlLmFjICAgICAgICAgICAg ICAgIHwgIDI0ICsrKystCiBtZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgfCAxMDAgKysrKysr KysrKysrKysrKysrCiBtZXNvbl9vcHRpb25zLnR4dCAgICAgICAgICAgfCAgIDggKy0KIHB5cHJv amVjdC50b21sICAgICAgICAgICAgICB8ICAyMSArKysrCiBzcmMvTWFrZWZpbGUuZ2xvYmFsLmlu ICAgICAgfCAgMjkgKysrKysrCiBzcmMvbWFrZWZpbGVzL21lc29uLmJ1aWxkICAgfCAgIDIgKwog c3JjL3Rlc3QvTWFrZWZpbGUgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L21lc29uLmJ1aWxk ICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9weXRlc3QvTWFrZWZpbGUgICAgfCAgMjAgKysrKwog c3JjL3Rlc3QvcHl0ZXN0L1JFQURNRSAgICAgIHwgICAxICsKIHNyYy90ZXN0L3B5dGVzdC9tZXNv bi5idWlsZCB8ICAxNSArKysKIHNyYy90ZXN0L3B5dGVzdC9wZ3RhcC5weSAgICB8IDE5OCArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy90b29scy90ZXN0d3JhcCAgICAg ICAgICB8ICAgNiArLQogMTYgZmlsZXMgY2hhbmdlZCwgNTk4IGluc2VydGlvbnMoKyksIDggZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgcHlwcm9qZWN0LnRvbWwKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvdGVzdC9weXRlc3QvTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9weXRlc3QvUkVBRE1FCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcHl0ZXN0L21l c29uLmJ1aWxkCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcHl0ZXN0L3BndGFwLnB5Cgpk aWZmIC0tZ2l0IGEvLmNpcnJ1cy50YXNrcy55bWwgYi8uY2lycnVzLnRhc2tzLnltbAppbmRleCAy YTgyMTU5M2NlNS4uYzlkYjEyZDUzYjkgMTAwNjQ0Ci0tLSBhLy5jaXJydXMudGFza3MueW1sCisr KyBiLy5jaXJydXMudGFza3MueW1sCkBAIC00NCw2ICs0NCw3IEBAIGVudjoKICAgICAtRGxkYXA9 ZW5hYmxlZAogICAgIC1Ec3NsPW9wZW5zc2wKICAgICAtRHRhcF90ZXN0cz1lbmFibGVkCisgICAg LURweXRlc3Q9ZW5hYmxlZAogICAgIC1EcGxwZXJsPWVuYWJsZWQKICAgICAtRHBscHl0aG9uPWVu YWJsZWQKICAgICAtRGRvY3M9ZW5hYmxlZApAQCAtMzE1LDYgKzMxNiw3IEBAIHRhc2s6CiAgICAg ICAgICAgLURsaWJjdXJsPWVuYWJsZWQKICAgICAgICAgICAtRG5scz1lbmFibGVkCiAgICAgICAg ICAgLURwYW09ZW5hYmxlZAorICAgICAgICAgIC1EUFlURVNUPXB5dGVzdC0zLjEyCiAKICAgICAg IHNldHVwX2FkZGl0aW9uYWxfcGFja2FnZXNfc2NyaXB0OiB8CiAgICAgICAgICNwa2dpbiAteSBp bnN0YWxsIC4uLgpAQCAtNTE4LDE0ICs1MjAsMTUgQEAgdGFzazoKICAgICAgICAgICBzZXQgLWUK ICAgICAgICAgICAuL2NvbmZpZ3VyZSBcCiAgICAgICAgICAgICAtLWVuYWJsZS1jYXNzZXJ0IC0t ZW5hYmxlLWluamVjdGlvbi1wb2ludHMgLS1lbmFibGUtZGVidWcgXAotICAgICAgICAgICAgLS1l bmFibGUtdGFwLXRlc3RzIC0tZW5hYmxlLW5scyBcCisgICAgICAgICAgICAtLWVuYWJsZS10YXAt dGVzdHMgLS1lbmFibGUtcHl0ZXN0IC0tZW5hYmxlLW5scyBcCiAgICAgICAgICAgICAtLXdpdGgt c2Vnc2l6ZS1ibG9ja3M9NiBcCiAgICAgICAgICAgICAtLXdpdGgtbGlibnVtYSBcCiAgICAgICAg ICAgICAtLXdpdGgtbGlidXJpbmcgXAogICAgICAgICAgICAgXAogICAgICAgICAgICAgJHtMSU5V WF9DT05GSUdVUkVfRkVBVFVSRVN9IFwKICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIENMQU5H PSJjY2FjaGUgY2xhbmciCisgICAgICAgICAgICBDTEFORz0iY2NhY2hlIGNsYW5nIiBcCisgICAg ICAgICAgICBQWVRFU1Q9ImVudiBMRF9QUkVMT0FEPS9saWIveDg2XzY0LWxpbnV4LWdudS9saWJh c2FuLnNvLjggcHl0ZXN0IgogICAgICAgICBFT0YKICAgICAgIGJ1aWxkX3NjcmlwdDogc3UgcG9z dGdyZXMgLWMgIm1ha2UgLXMgLWoke0JVSUxEX0pPQlN9IHdvcmxkLWJpbiIKICAgICAgIHVwbG9h ZF9jYWNoZXM6IGNjYWNoZQpAQCAtNjYzLDYgKzY2Niw4IEBAIHRhc2s6CiAgICAgICBwNS4zNC1p by10dHkKICAgICAgIHA1LjM0LWlwYy1ydW4KICAgICAgIHB5dGhvbjMxMgorICAgICAgcHkzMTIt cGFja2FnaW5nCisgICAgICBweTMxMi1weXRlc3QKICAgICAgIHRjbAogICAgICAgenN0ZAogCkBA IC03MTIsNiArNzE3LDcgQEAgdGFzazoKICAgICBzaCBzcmMvdG9vbHMvY2kvY2lfbWFjcG9ydHNf cGFja2FnZXMuc2ggJE1BQ09TX1BBQ0tBR0VfTElTVAogICAgICMgc3lzdGVtIHB5dGhvbiBkb2Vz bid0IHByb3ZpZGUgaGVhZGVycwogICAgIHN1ZG8gL29wdC9sb2NhbC9iaW4vcG9ydCBzZWxlY3Qg cHl0aG9uMyBweXRob24zMTIKKyAgICBzdWRvIC9vcHQvbG9jYWwvYmluL3BvcnQgc2VsZWN0IHB5 dGVzdCBweXRlc3QzMTIKICAgICAjIE1ha2UgbWFjcG9ydHMgaW5zdGFsbCB2aXNpYmxlIGZvciBz dWJzZXF1ZW50IHN0ZXBzCiAgICAgZWNobyBQQVRIPS9vcHQvbG9jYWwvc2Jpbi86L29wdC9sb2Nh bC9iaW4vOiRQQVRIID4+ICRDSVJSVVNfRU5WCiAgIHVwbG9hZF9jYWNoZXM6IG1hY3BvcnRzCkBA IC03ODUsNiArNzkxLDcgQEAgdGFzazoKICAgICAgIC1EbGRhcD1lbmFibGVkCiAgICAgICAtRHNz bD1vcGVuc3NsCiAgICAgICAtRHRhcF90ZXN0cz1lbmFibGVkCisgICAgICAtRHB5dGVzdD1lbmFi bGVkCiAgICAgICAtRHBscGVybD1lbmFibGVkCiAgICAgICAtRHBscHl0aG9uPWVuYWJsZWQKIApk aWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUKaW5kZXggNGU5MTEzOTVmZTMuLmE1 NTBjZTYxOTRiIDEwMDY0NAotLS0gYS8uZ2l0aWdub3JlCisrKyBiLy5naXRpZ25vcmUKQEAgLTMx LDYgKzMxLDcgQEAgd2luMzJ2ZXIucmMKICouZXhlCiBsaWIqZGxsLmRlZgogbGliKi5wYworX19w eWNhY2hlX18vCiAKICMgTG9jYWwgZXhjbHVkZXMgaW4gcm9vdCBkaXJlY3RvcnkKIC9HTlVtYWtl ZmlsZQpAQCAtNDMsMyArNDQsNSBAQCBsaWIqLnBjCiAvUmVsZWFzZS8KIC90bXBfaW5zdGFsbC8K IC9wb3J0bG9jay8KKy8udmVudi8KKy91di5sb2NrCmRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9j b25maWd1cmUKaW5kZXggMDQ1YzkxMzg2NWQuLjEyNjNmODRlNjk5IDEwMDc1NQotLS0gYS9jb25m aWd1cmUKKysrIGIvY29uZmlndXJlCkBAIC02MzAsNiArNjMwLDggQEAgdnBhdGhfYnVpbGQKIFBH X1NZU1JPT1QKIFBHX1ZFUlNJT05fTlVNCiBMREZMQUdTX0VYX0JFCitVVgorUFlURVNUCiBQUk9W RQogREJUT0VQVUIKIEZPUApAQCAtNzcyLDYgKzc3NCw3IEBAIENGTEFHUwogQ0MKIGVuYWJsZV9p bmplY3Rpb25fcG9pbnRzCiBQR19URVNUX0VYVFJBCitlbmFibGVfcHl0ZXN0CiBlbmFibGVfdGFw X3Rlc3RzCiBlbmFibGVfZHRyYWNlCiBEVFJBQ0VGTEFHUwpAQCAtODUwLDYgKzg1Myw3IEBAIGVu YWJsZV9wcm9maWxpbmcKIGVuYWJsZV9jb3ZlcmFnZQogZW5hYmxlX2R0cmFjZQogZW5hYmxlX3Rh cF90ZXN0cworZW5hYmxlX3B5dGVzdAogZW5hYmxlX2luamVjdGlvbl9wb2ludHMKIHdpdGhfYmxv Y2tzaXplCiB3aXRoX3NlZ3NpemUKQEAgLTE1NTAsNyArMTU1NCwxMCBAQCBPcHRpb25hbCBGZWF0 dXJlczoKICAgLS1lbmFibGUtcHJvZmlsaW5nICAgICAgYnVpbGQgd2l0aCBwcm9maWxpbmcgZW5h YmxlZAogICAtLWVuYWJsZS1jb3ZlcmFnZSAgICAgICBidWlsZCB3aXRoIGNvdmVyYWdlIHRlc3Rp bmcgaW5zdHJ1bWVudGF0aW9uCiAgIC0tZW5hYmxlLWR0cmFjZSAgICAgICAgIGJ1aWxkIHdpdGgg RFRyYWNlIHN1cHBvcnQKLSAgLS1lbmFibGUtdGFwLXRlc3RzICAgICAgZW5hYmxlIFRBUCB0ZXN0 cyAocmVxdWlyZXMgUGVybCBhbmQgSVBDOjpSdW4pCisgIC0tZW5hYmxlLXRhcC10ZXN0cyAgICAg IGVuYWJsZSAoUGVybC1iYXNlZCkgVEFQIHRlc3RzIChyZXF1aXJlcyBQZXJsIGFuZAorICAgICAg ICAgICAgICAgICAgICAgICAgICBJUEM6OlJ1bikKKyAgLS1lbmFibGUtcHl0ZXN0ICAgICAgICAg ZW5hYmxlIChQeXRob24tYmFzZWQpIHB5dGVzdCBzdWl0ZXMgKHJlcXVpcmVzCisgICAgICAgICAg ICAgICAgICAgICAgICAgIFB5dGhvbikKICAgLS1lbmFibGUtaW5qZWN0aW9uLXBvaW50cwogICAg ICAgICAgICAgICAgICAgICAgICAgICBlbmFibGUgaW5qZWN0aW9uIHBvaW50cyAoZm9yIHRlc3Rp bmcpCiAgIC0tZW5hYmxlLWRlcGVuZCAgICAgICAgIHR1cm4gb24gYXV0b21hdGljIGRlcGVuZGVu Y3kgdHJhY2tpbmcKQEAgLTM2MzIsNyArMzYzOSw3IEBAIGZpCiAKIAogIwotIyBUQVAgdGVzdHMK KyMgVGVzdCBmcmFtZXdvcmtzCiAjCiAKIApAQCAtMzY2MCw2ICszNjY3LDMyIEBAIGZpCiAKIAog CisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1weXRlc3Qgd2FzIGdpdmVuLgoraWYgdGVzdCAi JHtlbmFibGVfcHl0ZXN0K3NldH0iID0gc2V0OyB0aGVuIDoKKyAgZW5hYmxldmFsPSRlbmFibGVf cHl0ZXN0OworICBjYXNlICRlbmFibGV2YWwgaW4KKyAgICB5ZXMpCisgICAgICA6CisgICAgICA7 OworICAgIG5vKQorICAgICAgOgorICAgICAgOzsKKyAgICAqKQorICAgICAgYXNfZm5fZXJyb3Ig JD8gIm5vIGFyZ3VtZW50IGV4cGVjdGVkIGZvciAtLWVuYWJsZS1weXRlc3Qgb3B0aW9uIiAiJExJ TkVOTyIgNQorICAgICAgOzsKKyAgZXNhYworCitlbHNlCisgIGVuYWJsZV9weXRlc3Q9bm8KKwor ZmkKKworCisKKworCisKICMKICMgSW5qZWN0aW9uIHBvaW50cwogIwpAQCAtMTkxNzQsNiArMTky MDcsMTM1IEBAICRhc19lY2hvICIkbW9kdWxlc3RkZXJyIiA+JjY7IH0KICAgZmkKIGZpCiAKK2lm IHRlc3QgIiRlbmFibGVfcHl0ZXN0IiA9IHllczsgdGhlbgorICBpZiB0ZXN0IC16ICIkUFlURVNU IjsgdGhlbgorICBmb3IgYWNfcHJvZyBpbiBweXRlc3QgcHkudGVzdAorZG8KKyAgIyBFeHRyYWN0 IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFt ZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUK KyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19j dl9wYXRoX1BZVEVTVCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIg PiY2CitlbHNlCisgIGNhc2UgJFBZVEVTVCBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgYWNf Y3ZfcGF0aF9QWVRFU1Q9IiRQWVRFU1QiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0 IHdpdGggYSBwYXRoLgorICA7OworICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhf U0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisg IHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcn ICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAi JGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKyAgICBhY19jdl9wYXRoX1BZVEVT VD0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+ JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKwor ICA7OworZXNhYworZmkKK1BZVEVTVD0kYWNfY3ZfcGF0aF9QWVRFU1QKK2lmIHRlc3QgLW4gIiRQ WVRFU1QiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog cmVzdWx0OiAkUFlURVNUIiA+JjUKKyRhc19lY2hvICIkUFlURVNUIiA+JjY7IH0KK2Vsc2UKKyAg eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUK KyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKKyAgdGVzdCAtbiAiJFBZVEVTVCIgJiYgYnJl YWsKK2RvbmUKKworZWxzZQorICAjIFJlcG9ydCB0aGUgdmFsdWUgb2YgUFlURVNUIGluIGNvbmZp Z3VyZSdzIG91dHB1dCBpbiBhbGwgY2FzZXMuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIFBZVEVTVCIgPiY1CiskYXNfZWNob19uICJjaGVj a2luZyBmb3IgUFlURVNULi4uICIgPiY2OyB9CisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogcmVzdWx0OiAkUFlURVNUIiA+JjUKKyRhc19lY2hvICIkUFlURVNUIiA+ JjY7IH0KK2ZpCisKKyAgaWYgdGVzdCAteiAiJFBZVEVTVCI7IHRoZW4KKyAgICAjIElmIHB5dGVz dCBub3QgZm91bmQsIHRyeSBpbnN0YWxsaW5nIHdpdGggdXYKKyAgICBpZiB0ZXN0IC16ICIkVVYi OyB0aGVuCisgIGZvciBhY19wcm9nIGluIHV2CitkbworICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdv cmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4K K3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAi Y2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfVVYrOn0g ZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNl ICRVViBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgYWNfY3ZfcGF0aF9VVj0iJFVWIiAjIExl dCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAg YXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFU SAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9 LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBk bworICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQi OyB0aGVuCisgICAgYWNfY3ZfcGF0aF9VVj0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIK KyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGly LyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRv bmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICA7OworZXNhYworZmkKK1VWPSRhY19jdl9wYXRoX1VW CitpZiB0ZXN0IC1uICIkVVYiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogcmVzdWx0OiAkVVYiID4mNQorJGFzX2VjaG8gIiRVViIgPiY2OyB9CitlbHNl CisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIg PiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCisgIHRlc3QgLW4gIiRVViIgJiYgYnJl YWsKK2RvbmUKKworZWxzZQorICAjIFJlcG9ydCB0aGUgdmFsdWUgb2YgVVYgaW4gY29uZmlndXJl J3Mgb3V0cHV0IGluIGFsbCBjYXNlcy4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBjaGVja2luZyBmb3IgVVYiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9y IFVWLi4uICIgPiY2OyB9CisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogcmVzdWx0OiAkVVYiID4mNQorJGFzX2VjaG8gIiRVViIgPiY2OyB9CitmaQorCisgICAgaWYg dGVzdCAtbiAiJFVWIjsgdGhlbgorICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHV2IGNhbiBpbnN0YWxsIHB5dGVzdCBkZXBlbmRl bmNpZXMiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB1diBjYW4gaW5zdGFsbCBw eXRlc3QgZGVwZW5kZW5jaWVzLi4uICIgPiY2OyB9CisgICAgICBpZiAiJFVWIiBwaXAgaW5zdGFs bCAiJHNyY2RpciIgPiY1IDI+JjE7IHRoZW4KKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7 IH0KKyAgICAgICAgUFlURVNUPSIkVVYgcnVuIHB5dGVzdCIKKyAgICAgIGVsc2UKKyAgICAgICAg eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUK KyRhc19lY2hvICJubyIgPiY2OyB9CisgICAgICAgIGFzX2ZuX2Vycm9yICQ/ICJweXRlc3Qgbm90 IGZvdW5kIGFuZCB1diBmYWlsZWQgdG8gaW5zdGFsbCBkZXBlbmRlbmNpZXMiICIkTElORU5PIiA1 CisgICAgICBmaQorICAgIGVsc2UKKyAgICAgIGFzX2ZuX2Vycm9yICQ/ICJweXRlc3Qgbm90IGZv dW5kIiAiJExJTkVOTyIgNQorICAgIGZpCisgIGZpCitmaQorCiAjIElmIGNvbXBpbGVyIHdpbGwg dGFrZSAtV2wsLS1hcy1uZWVkZWQgKG9yIHZhcmlvdXMgcGxhdGZvcm0tc3BlY2lmaWMKICMgc3Bl bGxpbmdzIHRoZXJlb2YpIHRoZW4gYWRkIHRoYXQgdG8gTERGTEFHUy4gIFRoaXMgaXMgbXVjaCBl YXNpZXIgdGhhbgogIyB0cnlpbmcgdG8gZmlsdGVyIExJQlMgdG8gdGhlIG1pbmltdW0gZm9yIGVh Y2ggZXhlY3V0YWJsZS4KZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwpp bmRleCAxNDUxOTdlNmJkNi4uMGE0NDk4OTk5ZmUgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYwor KysgYi9jb25maWd1cmUuYWMKQEAgLTIyNSwxMSArMjI1LDE2IEBAIEFDX1NVQlNUKERUUkFDRUZM QUdTKV0pCiBBQ19TVUJTVChlbmFibGVfZHRyYWNlKQogCiAjCi0jIFRBUCB0ZXN0cworIyBUZXN0 IGZyYW1ld29ya3MKICMKIFBHQUNfQVJHX0JPT0woZW5hYmxlLCB0YXAtdGVzdHMsIG5vLAotICAg ICAgICAgICAgICBbZW5hYmxlIFRBUCB0ZXN0cyAocmVxdWlyZXMgUGVybCBhbmQgSVBDOjpSdW4p XSkKKyAgICAgICAgICAgICAgW2VuYWJsZSAoUGVybC1iYXNlZCkgVEFQIHRlc3RzIChyZXF1aXJl cyBQZXJsIGFuZCBJUEM6OlJ1bildKQogQUNfU1VCU1QoZW5hYmxlX3RhcF90ZXN0cykKKworUEdB Q19BUkdfQk9PTChlbmFibGUsIHB5dGVzdCwgbm8sCisgICAgICAgICAgICAgIFtlbmFibGUgKFB5 dGhvbi1iYXNlZCkgcHl0ZXN0IHN1aXRlcyAocmVxdWlyZXMgUHl0aG9uKV0pCitBQ19TVUJTVChl bmFibGVfcHl0ZXN0KQorCiBBQ19BUkdfVkFSKFBHX1RFU1RfRVhUUkEsCiAgICAgICAgICAgIFtl bmFibGUgc2VsZWN0ZWQgZXh0cmEgdGVzdHMgKG92ZXJyaWRkZW4gYXQgcnVudGltZSBieSBQR19U RVNUX0VYVFJBIGVudmlyb25tZW50IHZhcmlhYmxlKV0pCiAKQEAgLTI0MDUsNiArMjQxMCwyMSBA QCBpZiB0ZXN0ICIkZW5hYmxlX3RhcF90ZXN0cyIgPSB5ZXM7IHRoZW4KICAgZmkKIGZpCiAKK2lm IHRlc3QgIiRlbmFibGVfcHl0ZXN0IiA9IHllczsgdGhlbgorICBQR0FDX1BBVEhfUFJPR1MoUFlU RVNULCBbcHl0ZXN0IHB5LnRlc3RdKQorICBpZiB0ZXN0IC16ICIkUFlURVNUIjsgdGhlbgorICAg ICMgVHJ5IHB5dGhvbiAtbSBweXRlc3QgYXMgYSBmYWxsYmFjaworICAgIEFDX01TR19DSEVDS0lO Ryhbd2hldGhlciBweXRob24gLW0gcHl0ZXN0IHdvcmtzXSkKKyAgICBpZiAiJFBZVEhPTiIgLW0g cHl0ZXN0IC0tdmVyc2lvbiA+JkFTX01FU1NBR0VfTE9HX0ZEIDI+JjE7IHRoZW4KKyAgICAgIEFD X01TR19SRVNVTFQoW3llc10pCisgICAgICBQWVRFU1Q9IiRQWVRIT04gLW0gcHl0ZXN0IgorICAg IGVsc2UKKyAgICAgIEFDX01TR19SRVNVTFQoW25vXSkKKyAgICAgIEFDX01TR19FUlJPUihbcHl0 ZXN0IG5vdCBmb3VuZF0pCisgICAgZmkKKyAgZmkKK2ZpCisKICMgSWYgY29tcGlsZXIgd2lsbCB0 YWtlIC1XbCwtLWFzLW5lZWRlZCAob3IgdmFyaW91cyBwbGF0Zm9ybS1zcGVjaWZpYwogIyBzcGVs bGluZ3MgdGhlcmVvZikgdGhlbiBhZGQgdGhhdCB0byBMREZMQUdTLiAgVGhpcyBpcyBtdWNoIGVh c2llciB0aGFuCiAjIHRyeWluZyB0byBmaWx0ZXIgTElCUyB0byB0aGUgbWluaW11bSBmb3IgZWFj aCBleGVjdXRhYmxlLgpkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAppbmRl eCA1NTVjOTQ3OTZjNi4uYThhYzliMjAzZjAgMTAwNjQ0Ci0tLSBhL21lc29uLmJ1aWxkCisrKyBi L21lc29uLmJ1aWxkCkBAIC0xNzE4LDYgKzE3MTgsNDcgQEAgZW5kaWYKIAogCiAKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor IyBMaWJyYXJ5OiBweXRlc3QKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitweXRlc3RfZW5hYmxlZCA9IGZhbHNlCitweXRl c3RfdmVyc2lvbiA9ICcnCitweXRlc3RfY21kID0gWydweXRlc3QnXSAgIyBkdW1teSwgb3Zlcndy aXR0ZW4gd2hlbiBweXRlc3QgaXMgZm91bmQKKyMgV2UgYWxzbyBjb25maWd1cmUgdGhlIHNhbWUg UFlUSE9OUEFUSCBpbiB0aGUgcHl0ZXN0IHNldHRpbmdzIGluCisjIHB5cHJvamVjdC50b21sLCBi dXQgcHl0ZXN0IHZlcnNpb25zIGJlbG93IDguNCBvbmx5IGFjdHVhbGx5IHVzZSB0aGF0CisjIHZh bHVlIGFmdGVyIHBsdWdpbiBsb2FkaW5nLiBPbiBsb3dlciB2ZXJzaW9ucyBweXRlc3Qgd2lsbCB0 aHJvdyBhbiBlcnJvciBldmVuCisjIHdoZW4ganVzdCBydW5uaW5nICdweXRlc3QgLS12ZXJzaW9u Jy4gU28gd2UgbmVlZCB0byBjb25maWd1cmUgaXQgaGVyZSB0b28uCisjIFRoaXMgd29uJ3QgaGVs cCBwZW9wbGUgbWFudWFsbHkgcnVubmluZyBweXRlc3Qgb3V0c2lkZSBvZiBtZXNvbi9tYWtlLCBi dXQgd2UKKyMgZXhwZWN0IHRob3NlIHRvIHVzZSBhIHJlY2VudCBlbm91Z2ggdmVyc2lvbiBvZiBw eXRlc3QgYW55d2F5IChhbmQgaWYgbm90IHRoZXkKKyMgY2FuIG1hbnVhbGx5IGNvbmZpZ3VyZSBQ WVRIT05QQVRIIHRvbykuCitweXRlc3RfZW52ID0geydQWVRIT05QQVRIJzogbWVzb24ucHJvamVj dF9zb3VyY2Vfcm9vdCgpIC8gJ3NyYycgLyAndGVzdCcgLyAncHl0ZXN0J30KKworcHl0ZXN0b3B0 ID0gZ2V0X29wdGlvbigncHl0ZXN0JykKK2lmIG5vdCBweXRlc3RvcHQuZGlzYWJsZWQoKQorICBw eXRlc3QgPSBmaW5kX3Byb2dyYW0oZ2V0X29wdGlvbignUFlURVNUJyksIG5hdGl2ZTogdHJ1ZSwg cmVxdWlyZWQ6IGZhbHNlKQorCisgIGlmIHB5dGVzdC5mb3VuZCgpCisgICAgcHl0ZXN0X2VuYWJs ZWQgPSB0cnVlCisgICAgcHl0ZXN0X3ZlcnNpb24gPSBydW5fY29tbWFuZChweXRlc3QsICctLXZl cnNpb24nLCBlbnY6IHB5dGVzdF9lbnYsIGNoZWNrOiBmYWxzZSkuc3Rkb3V0KCkuc3RyaXAoKS5z cGxpdCgnICcpWy0xXQorICAgIHB5dGVzdF9jbWQgPSBbcHl0ZXN0LmZ1bGxfcGF0aCgpXQorICBl bHNlCisgICAgIyBUcnkgcHl0aG9uIC1tIHB5dGVzdCBhcyBhIGZhbGxiYWNrCisgICAgcHl0ZXN0 X2NoZWNrID0gcnVuX2NvbW1hbmQocHl0aG9uLCAnLW0nLCAncHl0ZXN0JywgJy0tdmVyc2lvbics IGVudjogcHl0ZXN0X2VudiwgY2hlY2s6IGZhbHNlKQorICAgIGlmIHB5dGVzdF9jaGVjay5yZXR1 cm5jb2RlKCkgPT0gMAorICAgICAgcHl0ZXN0X2VuYWJsZWQgPSB0cnVlCisgICAgICBweXRlc3Rf dmVyc2lvbiA9IHB5dGVzdF9jaGVjay5zdGRvdXQoKS5zdHJpcCgpLnNwbGl0KCcgJylbLTFdCisg ICAgICBweXRlc3RfY21kID0gW3B5dGhvbi5mdWxsX3BhdGgoKSwgJy1tJywgJ3B5dGVzdCddCisg ICAgZW5kaWYKKyAgZW5kaWYKKworICBpZiBub3QgcHl0ZXN0X2VuYWJsZWQgYW5kIHB5dGVzdG9w dC5lbmFibGVkKCkKKyAgICBlcnJvcigncHl0ZXN0IG5vdCBmb3VuZCcpCisgIGVuZGlmCitlbmRp ZgorCisKKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCiAjIExpYnJhcnk6IHpzdGQKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtMzgwNyw2ICszODQ4 LDY0IEBAIGZvcmVhY2ggdGVzdF9kaXIgOiB0ZXN0cwogICAgICAgICApCiAgICAgICBlbmRmb3Jl YWNoCiAgICAgICBpbnN0YWxsX3N1aXRlcyArPSB0ZXN0X2dyb3VwCisgICAgZWxpZiBraW5kID09 ICdweXRlc3QnCisgICAgICB0ZXN0d3JhcF9weXRlc3QgPSB0ZXN0d3JhcF9iYXNlCisgICAgICBp ZiBub3QgcHl0ZXN0X2VuYWJsZWQKKyAgICAgICAgdGVzdHdyYXBfcHl0ZXN0ICs9IFsnLS1za2lw JywgJ3B5dGVzdCBub3QgZW5hYmxlZCddCisgICAgICBlbmRpZgorCisgICAgICB0ZXN0X2NvbW1h bmQgPSBweXRlc3RfY21kCisKKyAgICAgIHRlc3RfY29tbWFuZCArPSBbCisgICAgICAgICctYycs IG1lc29uLnByb2plY3Rfc291cmNlX3Jvb3QoKSAvICdweXByb2plY3QudG9tbCcsCisgICAgICAg ICctLXZlcmJvc2UnLAorICAgICAgICAnLXAnLCAncGd0YXAnLCAgIyBlbmFibGUgb3VyIHRlc3Qg cmVwb3J0ZXIgcGx1Z2luCisgICAgICAgICctcmEnLCAgIyBzaG93IHNraXBwZWQgYW5kIHhmYWls ZWQgdGVzdHMgdG9vCisgICAgICBdCisKKyAgICAgICMgQWRkIHRlbXBvcmFyeSBpbnN0YWxsLCB0 aGUgYnVpbGQgZGlyZWN0b3J5IGZvciBub24taW5zdGFsbGVkIGJpbmFyaWVzIGFuZAorICAgICAg IyBhbHNvIHRlc3QvIGZvciBub24taW5zdGFsbGVkIHRlc3QgYmluYXJpZXMgYnVpbHQgc2VwYXJh dGVseS4KKyAgICAgIGVudiA9IHRlc3RfZW52CisgICAgICBlbnYucHJlcGVuZCgnUEFUSCcsIHRl bXBfaW5zdGFsbF9iaW5kaXIsIHRlc3RfZGlyWydiZCddLCB0ZXN0X2RpclsnYmQnXSAvICd0ZXN0 JykKKyAgICAgIHRlbXBfaW5zdGFsbF9kYXRhZGlyID0gJ0AwQEAxQCcuZm9ybWF0KHRlc3RfaW5z dGFsbF9kZXN0ZGlyLCBkaXJfcHJlZml4IC8gZGlyX2RhdGEpCisgICAgICBlbnYuc2V0KCdzaGFy ZV9jb250cmliX2RpcicsIHRlbXBfaW5zdGFsbF9kYXRhZGlyIC8gJ2NvbnRyaWInKQorICAgICAg ZW52LnByZXBlbmQoJ1BZVEhPTlBBVEgnLCBweXRlc3RfZW52WydQWVRIT05QQVRIJ10pCisKKyAg ICAgIGZvcmVhY2ggbmFtZSwgdmFsdWUgOiB0LmdldCgnZW52Jywge30pCisgICAgICAgIGVudi5z ZXQobmFtZSwgdmFsdWUpCisgICAgICBlbmRmb3JlYWNoCisKKyAgICAgIHRlc3RfZ3JvdXAgPSB0 ZXN0X2RpclsnbmFtZSddCisgICAgICB0ZXN0X2t3YXJncyA9IHsKKyAgICAgICAgJ3Byb3RvY29s JzogJ3RhcCcsCisgICAgICAgICdzdWl0ZSc6IHRlc3RfZ3JvdXAsCisgICAgICAgICd0aW1lb3V0 JzogMTAwMCwKKyAgICAgICAgJ2RlcGVuZHMnOiB0ZXN0X2RlcHMgKyB0LmdldCgnZGVwcycsIFtd KSwKKyAgICAgICAgJ2Vudic6IGVudiwKKyAgICAgIH0gKyB0LmdldCgndGVzdF9rd2FyZ3MnLCB7 fSkKKworICAgICAgZm9yZWFjaCBvbmV0ZXN0IDogdFsndGVzdHMnXQorICAgICAgICAjIE1ha2Ug dGVzdCBuYW1lcyBwcmV0dGllciwgcmVtb3ZlIHB5dC8gYW5kIC5weQorICAgICAgICBvbmV0ZXN0 X3AgPSBvbmV0ZXN0CisgICAgICAgIGlmIG9uZXRlc3RfcC5zdGFydHN3aXRoKCdweXQvJykKKyAg ICAgICAgICBvbmV0ZXN0X3AgPSBvbmV0ZXN0LnNwbGl0KCdweXQvJylbMV0KKyAgICAgICAgZW5k aWYKKyAgICAgICAgaWYgb25ldGVzdF9wLmVuZHN3aXRoKCcucHknKQorICAgICAgICAgIG9uZXRl c3RfcCA9IGZzLnN0ZW0ob25ldGVzdF9wKQorICAgICAgICBlbmRpZgorCisgICAgICAgIHRlc3Qo dGVzdF9kaXJbJ25hbWUnXSAvIG9uZXRlc3RfcCwKKyAgICAgICAgICBweXRob24sCisgICAgICAg ICAga3dhcmdzOiB0ZXN0X2t3YXJncywKKyAgICAgICAgICBhcmdzOiB0ZXN0d3JhcF9weXRlc3Qg KyBbCisgICAgICAgICAgICAnLS10ZXN0Z3JvdXAnLCB0ZXN0X2RpclsnbmFtZSddLAorICAgICAg ICAgICAgJy0tdGVzdG5hbWUnLCBvbmV0ZXN0X3AsCisgICAgICAgICAgICAnLS0nLCB0ZXN0X2Nv bW1hbmQsCisgICAgICAgICAgICB0ZXN0X2Rpclsnc2QnXSAvIG9uZXRlc3QsCisgICAgICAgICAg XSwKKyAgICAgICAgKQorICAgICAgZW5kZm9yZWFjaAorICAgICAgaW5zdGFsbF9zdWl0ZXMgKz0g dGVzdF9ncm91cAogICAgIGVsc2UKICAgICAgIGVycm9yKCd1bmtub3duIGtpbmQgQDBAIG9mIHRl c3QgaW4gQDFAJy5mb3JtYXQoa2luZCwgdGVzdF9kaXJbJ3NkJ10pKQogICAgIGVuZGlmCkBAIC0z OTgwLDYgKzQwNzksNyBAQCBzdW1tYXJ5KAogICAgICdiaXNvbic6ICdAMEAgQDFAJy5mb3JtYXQo Ymlzb24uZnVsbF9wYXRoKCksIGJpc29uX3ZlcnNpb24pLAogICAgICdkdHJhY2UnOiBkdHJhY2Us CiAgICAgJ2ZsZXgnOiAnQDBAIEAxQCcuZm9ybWF0KGZsZXguZnVsbF9wYXRoKCksIGZsZXhfdmVy c2lvbiksCisgICAgJ3B5dGVzdCc6IHB5dGVzdF9lbmFibGVkID8gJyAnLmpvaW4ocHl0ZXN0X2Nt ZCkgKyAnICcgKyBweXRlc3RfdmVyc2lvbiA6IG5vdF9mb3VuZF9kZXAsCiAgIH0sCiAgIHNlY3Rp b246ICdQcm9ncmFtcycsCiApCmRpZmYgLS1naXQgYS9tZXNvbl9vcHRpb25zLnR4dCBiL21lc29u X29wdGlvbnMudHh0CmluZGV4IDZhNzkzZjNlNDc5Li5jYjQ4MjVjMzU3NSAxMDA2NDQKLS0tIGEv bWVzb25fb3B0aW9ucy50eHQKKysrIGIvbWVzb25fb3B0aW9ucy50eHQKQEAgLTQxLDcgKzQxLDEw IEBAIG9wdGlvbignY2Fzc2VydCcsIHR5cGU6ICdib29sZWFuJywgdmFsdWU6IGZhbHNlLAogICBk ZXNjcmlwdGlvbjogJ0VuYWJsZSBhc3NlcnRpb24gY2hlY2tzIChmb3IgZGVidWdnaW5nKScpCiAK IG9wdGlvbigndGFwX3Rlc3RzJywgdHlwZTogJ2ZlYXR1cmUnLCB2YWx1ZTogJ2F1dG8nLAotICBk ZXNjcmlwdGlvbjogJ0VuYWJsZSBUQVAgdGVzdHMnKQorICBkZXNjcmlwdGlvbjogJ0VuYWJsZSAo UGVybC1iYXNlZCkgVEFQIHRlc3RzJykKKworb3B0aW9uKCdweXRlc3QnLCB0eXBlOiAnZmVhdHVy ZScsIHZhbHVlOiAnYXV0bycsCisgIGRlc2NyaXB0aW9uOiAnRW5hYmxlIChQeXRob24tYmFzZWQp IHB5dGVzdCBzdWl0ZXMnKQogCiBvcHRpb24oJ2luamVjdGlvbl9wb2ludHMnLCB0eXBlOiAnYm9v bGVhbicsIHZhbHVlOiBmYWxzZSwKICAgZGVzY3JpcHRpb246ICdFbmFibGUgaW5qZWN0aW9uIHBv aW50cycpCkBAIC0xOTUsNiArMTk4LDkgQEAgb3B0aW9uKCdQRVJMJywgdHlwZTogJ3N0cmluZycs IHZhbHVlOiAncGVybCcsCiBvcHRpb24oJ1BST1ZFJywgdHlwZTogJ3N0cmluZycsIHZhbHVlOiAn cHJvdmUnLAogICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gcHJvdmUgYmluYXJ5JykKIAorb3B0aW9u KCdQWVRFU1QnLCB0eXBlOiAnYXJyYXknLCB2YWx1ZTogWydweXRlc3QnLCAncHkudGVzdCddLAor ICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gcHl0ZXN0IGJpbmFyeScpCisKIG9wdGlvbignUFlUSE9O JywgdHlwZTogJ2FycmF5JywgdmFsdWU6IFsncHl0aG9uMycsICdweXRob24nXSwKICAgZGVzY3Jp cHRpb246ICdQYXRoIHRvIHB5dGhvbiBiaW5hcnknKQogCmRpZmYgLS1naXQgYS9weXByb2plY3Qu dG9tbCBiL3B5cHJvamVjdC50b21sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi42MGFiYjRkMDY1NQotLS0gL2Rldi9udWxsCisrKyBiL3B5cHJvamVjdC50b21sCkBAIC0w LDAgKzEsMjEgQEAKK1twcm9qZWN0XQorbmFtZSA9ICJwb3N0Z3Jlc3FsLWhhY2tlcnMtdG9vbGlu ZyIKK3ZlcnNpb24gPSAiMC4xLjAiCitkZXNjcmlwdGlvbiA9ICJQeXRlc3QgaW5mcmFzdHJ1Y3R1 cmUgZm9yIFBvc3RncmVTUUwiCityZXF1aXJlcy1weXRob24gPSAiPj0zLjYiCitkZXBlbmRlbmNp ZXMgPSBbCisgICAgIyBweXRlc3QgNy4wIHdhcyB0aGUgbGFzdCB2ZXJzaW9uIHdoaWNoIHN1cHBv cnRlZCBQeXRob24gMy42LCBidXQgdGhlIEJTRHMKKyAgICAjIGhhdmUgc3RhcnRlZCBwdXR0aW5n IDgueCBpbnRvIHBvcnRzLCBzbyB3ZSBzdXBwb3J0IGJvdGguIChweXRlc3QgOCBjYW4gYmUKKyAg ICAjIHVzZWQgdGhyb3VnaG91dCBvbmNlIHdlIGRyb3Agc3VwcG9ydCBmb3IgUHl0aG9uIDMuNy4p CisgICAgInB5dGVzdCA+PSA3LjAsIDwgMTAiLAorCisgICAgIyBBbnkgb3RoZXIgZGVwZW5kZW5j aWVzIGFyZSBlZmZlY3RpdmVseSBvcHRpb25hbCAoYWRkZWQgYmVsb3cpLiBXZSBpbXBvcnQKKyAg ICAjIHRoZXNlIGxpYnJhcmllcyB1c2luZyBweXRlc3QuaW1wb3J0b3Jza2lwKCkuIFNvIHRlc3Rz IHdpbGwgYmUgc2tpcHBlZCBpZgorICAgICMgdGhleSBhcmUgbm90IGF2YWlsYWJsZS4KK10KKwor W3Rvb2wucHl0ZXN0LmluaV9vcHRpb25zXQorbWludmVyc2lvbiA9ICI3LjAiCisKKyMgQ29tbW9u IHRlc3QgY29kZSBjYW4gYmUgZm91bmQgaGVyZS4KK3B5dGhvbnBhdGggPSBbInNyYy90ZXN0L3B5 dGVzdCJdCmRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuZ2xvYmFsLmluIGIvc3JjL01ha2VmaWxl Lmdsb2JhbC5pbgppbmRleCAzNzFjZDdlYmEyYy4uMTYwY2RmZmQ0ZjEgMTAwNjQ0Ci0tLSBhL3Ny Yy9NYWtlZmlsZS5nbG9iYWwuaW4KKysrIGIvc3JjL01ha2VmaWxlLmdsb2JhbC5pbgpAQCAtMjEx LDYgKzIxMSw3IEBAIGVuYWJsZV9kdHJhY2UJPSBAZW5hYmxlX2R0cmFjZUAKIGVuYWJsZV9jb3Zl cmFnZQk9IEBlbmFibGVfY292ZXJhZ2VACiBlbmFibGVfaW5qZWN0aW9uX3BvaW50cyA9IEBlbmFi bGVfaW5qZWN0aW9uX3BvaW50c0AKIGVuYWJsZV90YXBfdGVzdHMJPSBAZW5hYmxlX3RhcF90ZXN0 c0AKK2VuYWJsZV9weXRlc3QJPSBAZW5hYmxlX3B5dGVzdEAKIAogcHl0aG9uX2luY2x1ZGVzcGVj CT0gQHB5dGhvbl9pbmNsdWRlc3BlY0AKIHB5dGhvbl9saWJkaXIJCT0gQHB5dGhvbl9saWJkaXJA CkBAIC0zNTQsNiArMzU1LDcgQEAgTVNHRk1UICA9IEBNU0dGTVRACiBNU0dGTVRfRkxBR1MgPSBA TVNHRk1UX0ZMQUdTQAogTVNHTUVSR0UgPSBATVNHTUVSR0VACiBPUEVOU1NMCT0gQE9QRU5TU0xA CitQWVRFU1QJPSBAUFlURVNUQAogUFlUSE9OCT0gQFBZVEhPTkAKIFRBUgk9IEBUQVJACiBYR0VU VEVYVCA9IEBYR0VUVEVYVEAKQEAgLTUwOCw2ICs1MTAsMzMgQEAgcHJvdmVfaW5zdGFsbGNoZWNr ID0gQGVjaG8gIlRBUCB0ZXN0cyBub3QgZW5hYmxlZC4gVHJ5IGNvbmZpZ3VyaW5nIHdpdGggLS1l bmFibGUKIHByb3ZlX2NoZWNrID0gJChwcm92ZV9pbnN0YWxsY2hlY2spCiBlbmRpZgogCitpZmVx ICgkKGVuYWJsZV9weXRlc3QpLHllcykKKworcHl0ZXN0X2luc3RhbGxjaGVjayA9IEBlY2hvICJJ bnN0YWxsY2hlY2sgaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgZm9yIHB5dGVzdC4iCisKKyMg V2UgYWxzbyBjb25maWd1cmUgdGhlIHNhbWUgUFlUSE9OUEFUSCBpbiB0aGUgcHl0ZXN0IHNldHRp bmdzIGluCisjIHB5cHJvamVjdC50b21sLCBidXQgcHl0ZXN0IHZlcnNpb25zIGJlbG93IDguNCBv bmx5IGFjdHVhbGx5IHVzZSB0aGF0IHZhbHVlCisjIGFmdGVyIHBsdWdpbiBsb2FkaW5nLiBTbyB3 ZSBuZWVkIHRvIGNvbmZpZ3VyZSBpdCBoZXJlIHRvby4gVGhpcyB3b24ndCBoZWxwCisjIHBlb3Bs ZSBtYW51YWxseSBydW5uaW5nIHB5dGVzdCBvdXRzaWRlIG9mIG1lc29uL21ha2UsIGJ1dCB3ZSBl eHBlY3QgdGhvc2UgdG8KKyMgdXNlIGEgcmVjZW50IGVub3VnaCB2ZXJzaW9uIG9mIHB5dGVzdCBh bnl3YXkgKGFuZCBpZiBub3QgdGhleSBjYW4gbWFudWFsbHkKKyMgY29uZmlndXJlIFBZVEhPTlBB VEggdG9vKS4KK2RlZmluZSBweXRlc3RfY2hlY2sKK2VjaG8gIiMgKysrIHB5dGVzdCBjaGVjayBp biAkKHN1YmRpcikgKysrIiAmJiBcCitybSAtcmYgJyQoQ1VSRElSKScvdG1wX2NoZWNrICYmIFwK KyQoTUtESVJfUCkgJyQoQ1VSRElSKScvdG1wX2NoZWNrICYmIFwKK2NkICQoc3JjZGlyKSAmJiBc CisgICBURVNUTE9HRElSPSckKENVUkRJUikvdG1wX2NoZWNrL2xvZycgXAorICAgVEVTVERBVEFE SVI9JyQoQ1VSRElSKS90bXBfY2hlY2snIFwKKyAgIFBZVEhPTlBBVEg9JyQoYWJzX3RvcF9zcmNk aXIpL3NyYy90ZXN0L3B5dGVzdDokJFBZVEhPTlBBVEgnIFwKKyAgICQod2l0aF90ZW1wX2luc3Rh bGwpIFwKKyAgICQoUFlURVNUKSAtYyAnJChhYnNfdG9wX3NyY2RpcikvcHlwcm9qZWN0LnRvbWwn IC0tdmVyYm9zZSAtcmEgLi9weXQvCitlbmRlZgorCitlbHNlCitweXRlc3RfaW5zdGFsbGNoZWNr ID0gQGVjaG8gInB5dGVzdCBpcyBub3QgZW5hYmxlZC4gVHJ5IGNvbmZpZ3VyaW5nIHdpdGggLS1l bmFibGUtcHl0ZXN0IgorcHl0ZXN0X2NoZWNrID0gJChweXRlc3RfaW5zdGFsbGNoZWNrKQorZW5k aWYKKwogIyBJbnN0YWxsYXRpb24uCiAKIGluc3RhbGxfYmluID0gQGluc3RhbGxfYmluQApkaWZm IC0tZ2l0IGEvc3JjL21ha2VmaWxlcy9tZXNvbi5idWlsZCBiL3NyYy9tYWtlZmlsZXMvbWVzb24u YnVpbGQKaW5kZXggYWEyZjlhODdiMTQuLjAwYTI0ZjBiMzZiIDEwMDY0NAotLS0gYS9zcmMvbWFr ZWZpbGVzL21lc29uLmJ1aWxkCisrKyBiL3NyYy9tYWtlZmlsZXMvbWVzb24uYnVpbGQKQEAgLTU2 LDYgKzU2LDggQEAgcGd4c19rdiA9IHsKICAgJ2VuYWJsZV9ubHMnOiBsaWJpbnRsLmZvdW5kKCkg PyAneWVzJyA6ICdubycsCiAgICdlbmFibGVfaW5qZWN0aW9uX3BvaW50cyc6IGdldF9vcHRpb24o J2luamVjdGlvbl9wb2ludHMnKSA/ICd5ZXMnIDogJ25vJywKICAgJ2VuYWJsZV90YXBfdGVzdHMn OiB0YXBfdGVzdHNfZW5hYmxlZCA/ICd5ZXMnIDogJ25vJywKKyAgJ2VuYWJsZV9weXRlc3QnOiBw eXRlc3RfZW5hYmxlZCA/ICd5ZXMnIDogJ25vJywKKyAgJ1BZVEVTVCc6IHB5dGVzdF9lbmFibGVk ID8gJyAnLmpvaW4ocHl0ZXN0X2NtZCkgOiAnJywKICAgJ2VuYWJsZV9kZWJ1Zyc6IGdldF9vcHRp b24oJ2RlYnVnJykgPyAneWVzJyA6ICdubycsCiAgICdlbmFibGVfY292ZXJhZ2UnOiAnbm8nLAog ICAnZW5hYmxlX2R0cmFjZSc6IGR0cmFjZS5mb3VuZCgpID8gJ3llcycgOiAnbm8nLApkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvTWFrZWZpbGUgYi9zcmMvdGVzdC9NYWtlZmlsZQppbmRleCAzZWIwYTA2 YWJiNC4uMGJlOTc3MWQ3MWYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L01ha2VmaWxlCisrKyBiL3Ny Yy90ZXN0L01ha2VmaWxlCkBAIC0xOCw2ICsxOCw3IEBAIFNVQkRJUlMgPSBcCiAJbW9kdWxlcyBc CiAJcGVybCBcCiAJcG9zdG1hc3RlciBcCisJcHl0ZXN0IFwKIAlyZWNvdmVyeSBcCiAJcmVncmVz cyBcCiAJc3Vic2NyaXB0aW9uCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tZXNvbi5idWlsZCBiL3Ny Yy90ZXN0L21lc29uLmJ1aWxkCmluZGV4IGNkNDVjYmY1N2ZiLi4wOTE3NWYwZWFlYSAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvbWVzb24uYnVpbGQKQEAg LTUsNiArNSw3IEBAIHN1YmRpcignaXNvbGF0aW9uJykKIAogc3ViZGlyKCdhdXRoZW50aWNhdGlv bicpCiBzdWJkaXIoJ3Bvc3RtYXN0ZXInKQorc3ViZGlyKCdweXRlc3QnKQogc3ViZGlyKCdyZWNv dmVyeScpCiBzdWJkaXIoJ3N1YnNjcmlwdGlvbicpCiBzdWJkaXIoJ21vZHVsZXMnKQpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcHl0ZXN0L01ha2VmaWxlIGIvc3JjL3Rlc3QvcHl0ZXN0L01ha2VmaWxl Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yYmRjYTk2Y2NiZQotLS0g L2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3B5dGVzdC9NYWtlZmlsZQpAQCAtMCwwICsxLDIwIEBA CisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIworIyBNYWtlZmlsZSBmb3IgcHl0ZXN0CisjCisjIFBvcnRp b25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVu dCBHcm91cAorIyBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVu aXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorIworIyBzcmMvdGVzdC9weXRlc3QvTWFrZWZpbGUKKyMK KyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisKK3N1YmRpciA9IHNyYy90ZXN0L3B5dGVzdAordG9wX2J1aWxk ZGlyID0gLi4vLi4vLi4KK2luY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9i YWwKKworY2hlY2s6CisJJChweXRlc3RfY2hlY2spCisKK2NsZWFuIGRpc3RjbGVhbiBtYWludGFp bmVyLWNsZWFuOgorCXJtIC1yZiB0bXBfY2hlY2sKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3B5dGVz dC9SRUFETUUgYi9zcmMvdGVzdC9weXRlc3QvUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi4xMzMzZWQ3N2I3ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0 L3B5dGVzdC9SRUFETUUKQEAgLTAsMCArMSBAQAorVE9ETwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cHl0ZXN0L21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvcHl0ZXN0L21lc29uLmJ1aWxkCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iMWY2MDYxYjMwNwotLS0gL2Rldi9udWxs CisrKyBiL3NyYy90ZXN0L3B5dGVzdC9tZXNvbi5idWlsZApAQCAtMCwwICsxLDE1IEBACisjIENv cHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKwor aWYgbm90IHB5dGVzdF9lbmFibGVkCisgIHN1YmRpcl9kb25lKCkKK2VuZGlmCisKK3Rlc3RzICs9 IHsKKyAgJ25hbWUnOiAncHl0ZXN0JywKKyAgJ3NkJzogbWVzb24uY3VycmVudF9zb3VyY2VfZGly KCksCisgICdiZCc6IG1lc29uLmN1cnJlbnRfYnVpbGRfZGlyKCksCisgICdweXRlc3QnOiB7Cisg ICAgJ3Rlc3RzJzogWworICAgIF0sCisgIH0sCit9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9weXRl c3QvcGd0YXAucHkgYi9zcmMvdGVzdC9weXRlc3QvcGd0YXAucHkKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLmM5MmNhZDk4ZDk1Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rlc3QvcHl0ZXN0L3BndGFwLnB5CkBAIC0wLDAgKzEsMTk4IEBACisjIENvcHlyaWdodCAoYykg MjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworaW1wb3J0IG9zCitp bXBvcnQgc3lzCisKK2ltcG9ydCBweXRlc3QKKworIworIyBIZWxwZXJzCisjCisKKworY2xhc3Mg VEFQOgorICAgICIiIgorICAgIEEgYmFzaWMgQVBJIGZvciByZXBvcnRpbmcgdmlhIHRoZSBUQVAg cHJvdG9jb2wuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNl bGYuY291bnQgPSAwCisKKyAgICAgICAgIyBYWFggaW50ZXJhY3RzIHBvb3JseSB3aXRoIHRlc3R3 cmFwJ3MgYm9pbGVycGxhdGUgZGlhZ25vc3RpY3MKKyAgICAgICAgIyBzZWxmLnByaW50KCJUQVAg dmVyc2lvbiAxMyIpCisKKyAgICBkZWYgZXhwZWN0KHNlbGYsIG51bTogaW50KToKKyAgICAgICAg c2VsZi5wcmludChmIjEuLntudW19IikKKworICAgIGRlZiBwcmludChzZWxmLCAqYXJncyk6Cisg ICAgICAgIHByaW50KCphcmdzLCBmaWxlPXN5cy5fX3N0ZG91dF9fKQorCisgICAgZGVmIG9rKHNl bGYsIG5hbWU6IHN0cik6CisgICAgICAgIHNlbGYuY291bnQgKz0gMQorICAgICAgICBzZWxmLnBy aW50KCJvayIsIHNlbGYuY291bnQsICItIiwgbmFtZSkKKworICAgIGRlZiBza2lwKHNlbGYsIG5h bWU6IHN0ciwgcmVhc29uOiBzdHIpOgorICAgICAgICBzZWxmLmNvdW50ICs9IDEKKyAgICAgICAg c2VsZi5wcmludCgib2siLCBzZWxmLmNvdW50LCAiLSIsIG5hbWUsICIjIHNraXAiLCByZWFzb24p CisKKyAgICBkZWYgZmFpbChzZWxmLCBuYW1lOiBzdHIsIGRldGFpbHM6IHN0cik6CisgICAgICAg IHNlbGYuY291bnQgKz0gMQorICAgICAgICBzZWxmLnByaW50KCJub3Qgb2siLCBzZWxmLmNvdW50 LCAiLSIsIG5hbWUpCisKKyAgICAgICAgIyBtdGVzdCBoYXMgc29tZSBvZGQgYmVoYXZpb3IgYXJv dW5kIFRBUCB0ZXN0cyB3aGVyZSBpdCB3b24ndCBwcmludAorICAgICAgICAjIGRpYWdub3N0aWNz IG9uIGZhaWx1cmUgaWYgdGhleSdyZSBwYXJ0IG9mIHRoZSBzdGRvdXQgc3RyZWFtLCBzbyB3ZQor ICAgICAgICAjIG1pZ2h0IGFzIHdlbGwganVzdCBkdW1wIHRoZSBkZXRhaWxzIGRpcmVjdGx5IHRv IHN0ZGVyciBpbnN0ZWFkLgorICAgICAgICBwcmludChkZXRhaWxzLCBmaWxlPXN5cy5fX3N0ZGVy cl9fKQorCisKK3RhcCA9IFRBUCgpCisKKworY2xhc3MgVGVzdE5vdGVzOgorICAgICIiIgorICAg IEFubm90YXRpb25zIGZvciBhIHNpbmdsZSB0ZXN0LiBUaGUgZXhpc3RpbmcgcHl0ZXN0IGhvb2tz IGtlZXAgaW50ZXJlc3RpbmcKKyAgICBpbmZvcm1hdGlvbiBzb21ld2hhdCBzZXBhcmF0ZWQgYWNy b3NzIHRoZSBkaWZmZXJlbnQgc3RhZ2VzCisgICAgKHNldHVwL3Rlc3QvdGVhcmRvd24pLCBzbyB0 aGlzIGNsYXNzIGlzIHVzZWQgdG8gY29ycmVsYXRlIHRoZW0uCisgICAgIiIiCisKKyAgICBza2lw cGVkID0gRmFsc2UKKyAgICBza2lwX3JlYXNvbiA9IE5vbmUKKworICAgIGZhaWxlZCA9IEZhbHNl CisgICAgZGV0YWlscyA9ICIiCisKKworIyBSZWdpc3RlciBhIGN1c3RvbSBrZXkgaW4gdGhlIHN0 YXNoIGRpY3Rpb25hcnkgZm9yIGtlZXBpbmcgb3VyIFRlc3ROb3Rlcy4KK25vdGVzX2tleSA9IHB5 dGVzdC5TdGFzaEtleVtUZXN0Tm90ZXNdKCkKKworCisjCisjIEhvb2sgSW1wbGVtZW50YXRpb25z CisjCisKKworQHB5dGVzdC5ob29raW1wbCh0cnlmaXJzdD1UcnVlKQorZGVmIHB5dGVzdF9jb25m aWd1cmUoY29uZmlnKToKKyAgICAiIiIKKyAgICBIaWphY2tzIHRoZSBzdGFuZGFyZCBzdHJlYW1z IGFzIHNvb24gYXMgcG9zc2libGUgZHVyaW5nIHB5dGVzdCBzdGFydHVwLiBUaGUKKyAgICBweXRl c3QtZm9ybWF0dGVkIG91dHB1dCBnZXRzIGxvZ2dlZCB0byBmaWxlIGluc3RlYWQsIGFuZCB3ZSds bCB1c2UgdGhlCisgICAgb3JpZ2luYWwgc3lzLl9fc3Rkb3V0X18vX19zdGRlcnJfXyBzdHJlYW1z IGZvciB0aGUgVEFQIHByb3RvY29sLgorICAgICIiIgorICAgIGxvZ2RpciA9IG9zLmdldGVudigi VEVTVExPR0RJUiIpCisgICAgaWYgbm90IGxvZ2RpcjoKKyAgICAgICAgcmFpc2UgUnVudGltZUVy cm9yKCJwZ3RhcCByZXF1aXJlcyB0aGUgVEVTVExPR0RJUiBlbnZ2YXIgdG8gYmUgc2V0IikKKwor ICAgIG9zLm1ha2VkaXJzKGxvZ2RpcikKKyAgICBsb2dwYXRoID0gb3MucGF0aC5qb2luKGxvZ2Rp ciwgInB5dGVzdC5sb2ciKQorICAgIHN5cy5zdGRvdXQgPSBzeXMuc3RkZXJyID0gb3Blbihsb2dw YXRoLCAiYSIsIGJ1ZmZlcmluZz0xKQorCisKK0BweXRlc3QuaG9va2ltcGwodHJ5bGFzdD1UcnVl KQorZGVmIHB5dGVzdF9zZXNzaW9uZmluaXNoKHNlc3Npb24sIGV4aXRzdGF0dXMpOgorICAgICIi IgorICAgIFN1cHByZXNzZXMgbm9uemVybyBleGl0IGNvZGVzIGR1ZSB0byBmYWlsZWQgdGVzdHMu IChJbiB0aGF0IGNhc2UsIHdlIHdhbnQKKyAgICBNZXNvbiB0byByZXBvcnQgYSBmYWlsdXJlIGNv dW50LCBub3QgYSBnZW5lcmljIEVSUk9SLikKKyAgICAiIiIKKyAgICBpZiBleGl0c3RhdHVzID09 IHB5dGVzdC5FeGl0Q29kZS5URVNUU19GQUlMRUQ6CisgICAgICAgIHNlc3Npb24uZXhpdHN0YXR1 cyA9IHB5dGVzdC5FeGl0Q29kZS5PSworCisKK0BweXRlc3QuaG9va2ltcGwKK2RlZiBweXRlc3Rf Y29sbGVjdHJlcG9ydChyZXBvcnQpOgorICAgICMgSW5jbHVkZSBjb2xsZWN0aW9uIGZhaWx1cmVz IGRpcmVjdGx5IGluIE1lc29uIGVycm9yIG91dHB1dC4KKyAgICBpZiByZXBvcnQuZmFpbGVkOgor ICAgICAgICBwcmludChyZXBvcnQubG9uZ3JlcHJ0ZXh0LCBmaWxlPXN5cy5fX3N0ZGVycl9fKQor CisKK0BweXRlc3QuaG9va2ltcGwKK2RlZiBweXRlc3RfaW50ZXJuYWxlcnJvcihleGNyZXByLCBl eGNpbmZvKToKKyAgICAjIEluY2x1ZGUgaW50ZXJuYWwgZXJyb3JzIGRpcmVjdGx5IGluIE1lc29u IGVycm9yIG91dHB1dC4KKyAgICBwcmludChleGNyZXByLCBmaWxlPXN5cy5fX3N0ZGVycl9fKQor CisKKyMKKyMgSG9vayBXcmFwcGVycworIworIyBJbiBweXRlc3QgcGFybGFuY2UsIGEgIndyYXBw ZXIiIGZvciBhIGhvb2sgY2FuIGluc3BlY3QgYW5kIG9wdGlvbmFsbHkgbW9kaWZ5CisjIGV4aXN0 aW5nIGhvb2tzJyBiZWhhdmlvciwgYnV0IGl0IGRvZXMgbm90IHJlcGxhY2UgdGhlIGhvb2sgY2hh aW4uIFRoaXMgaXMgZG9uZQorIyB0aHJvdWdoIGEgZ2VuZXJhdG9yLXN0eWxlIEFQSSB3aGljaCBj aGFpbnMgdGhlIGhvb2tzIHRvZ2V0aGVyIChzZWUgdGhlIHVzZSBvZgorIyBgeWllbGRgKS4KKyMK KworCitAcHl0ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUpCitkZWYgcHl0ZXN0X2NvbGxl Y3Rpb24oc2Vzc2lvbik6CisgICAgIiIiUmVwb3J0cyB0aGUgbnVtYmVyIG9mIGdhdGhlcmVkIHRl c3RzIGFmdGVyIGNvbGxlY3Rpb24gaXMgZmluaXNoZWQuIiIiCisgICAgcmVzID0geWllbGQKKyAg ICB0YXAuZXhwZWN0KHNlc3Npb24udGVzdHNjb2xsZWN0ZWQpCisgICAgcmV0dXJuIHJlcworCisK K0BweXRlc3QuaG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSkKK2RlZiBweXRlc3RfcnVudGVzdF9t YWtlcmVwb3J0KGl0ZW0sIGNhbGwpOgorICAgICIiIgorICAgIEFubm90YXRlcyBhIHRlc3QgaXRl bSB3aXRoIG91ciBUZXN0Tm90ZXMgYW5kIGdyYWJzIHJlbGV2YW50IGluZm9ybWF0aW9uIGZvcgor ICAgIHJlcG9ydGluZy4KKworICAgIFRoaXMgaXMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHBlciB0 ZXN0LCBzbyBpdCdzIG5vdCBjb3JyZWN0IHRvIHByaW50IHRoZSBUQVAKKyAgICByZXN1bHQgaGVy ZS4gKEEgdGVzdCBhbmQgaXRzIHRlYXJkb3duIHN0YWdlIGNhbiBib3RoIGZhaWwsIGFuZCB3ZSB3 YW50IHRvCisgICAgc2VlIHRoZSBkZXRhaWxzIGZvciBib3RoLikgV2UgaW5zdGVhZCBjb21iaW5l IGFsbCB0aGUgaW5mb3JtYXRpb24gZm9yIHVzZSBieQorICAgIG91ciBweXRlc3RfcnVudGVzdF9w cm90b2NvbCB3cmFwcGVyIGxhdGVyIG9uLgorICAgICIiIgorICAgIHJlcyA9IHlpZWxkCisKKyAg ICBpZiBub3Rlc19rZXkgbm90IGluIGl0ZW0uc3Rhc2g6CisgICAgICAgIGl0ZW0uc3Rhc2hbbm90 ZXNfa2V5XSA9IFRlc3ROb3RlcygpCisgICAgbm90ZXMgPSBpdGVtLnN0YXNoW25vdGVzX2tleV0K KworICAgIHJlcG9ydCA9IHJlcy5nZXRfcmVzdWx0KCkKKyAgICBpZiByZXBvcnQucGFzc2VkOgor ICAgICAgICBwYXNzICAjIG5vIGFubm90YXRpb24gbmVlZGVkCisKKyAgICBlbGlmIHJlcG9ydC5z a2lwcGVkOgorICAgICAgICBub3Rlcy5za2lwcGVkID0gVHJ1ZQorICAgICAgICBfLCBfLCBub3Rl cy5za2lwX3JlYXNvbiA9IHJlcG9ydC5sb25ncmVwcgorCisgICAgZWxpZiByZXBvcnQuZmFpbGVk OgorICAgICAgICBub3Rlcy5mYWlsZWQgPSBUcnVlCisKKyAgICAgICAgaWYgbm90IG5vdGVzLmRl dGFpbHM6CisgICAgICAgICAgICBub3Rlcy5kZXRhaWxzICs9ICJ7Ol9eNzJ9XG5cbiIuZm9ybWF0 KGYiIHtyZXBvcnQuaGVhZF9saW5lfSAiKQorCisgICAgICAgIGlmIHJlcG9ydC53aGVuIGluICgi c2V0dXAiLCAidGVhcmRvd24iKToKKyAgICAgICAgICAgIG5vdGVzLmRldGFpbHMgKz0gIlxuezpf XjcyfVxuXG4iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICBmIiBFcnJvciBkdXJpbmcge3JlcG9y dC53aGVufSBvZiB7cmVwb3J0LmhlYWRfbGluZX0gIgorICAgICAgICAgICAgKQorCisgICAgICAg IG5vdGVzLmRldGFpbHMgKz0gcmVwb3J0LmxvbmdyZXBydGV4dCArICJcbiIKKworICAgICAgICAj IEluY2x1ZGUgY2FwdHVyZWQgc3Rkb3V0L3N0ZGVyci9sb2cgaW4gZmFpbHVyZSBvdXRwdXQKKyAg ICAgICAgZm9yIHNlY3Rpb25fbmFtZSwgc2VjdGlvbl9jb250ZW50IGluIHJlcG9ydC5zZWN0aW9u czoKKyAgICAgICAgICAgIGlmIHNlY3Rpb25fY29udGVudC5zdHJpcCgpOgorICAgICAgICAgICAg ICAgIG5vdGVzLmRldGFpbHMgKz0gIlxuezotXjcyfVxuIi5mb3JtYXQoZiIge3NlY3Rpb25fbmFt ZX0gIikKKyAgICAgICAgICAgICAgICBub3Rlcy5kZXRhaWxzICs9IHNlY3Rpb25fY29udGVudCAr ICJcbiIKKworICAgIGVsc2U6CisgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigicHl0ZXN0X3J1 bnRlc3RfbWFrZXJlcG9ydCByZWNlaXZlZCB1bmtub3duIHRlc3Qgc3RhdHVzIikKKworICAgIHJl dHVybiByZXMKKworCitAcHl0ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUpCitkZWYgcHl0 ZXN0X3J1bnRlc3RfcHJvdG9jb2woaXRlbSwgbmV4dGl0ZW0pOgorICAgICIiIgorICAgIFJlcG9y dHMgdGhlIFRBUCByZXN1bHQgZm9yIHRoaXMgdGVzdCBpdGVtIHVzaW5nIG91ciBnYXRoZXJlZCBU ZXN0Tm90ZXMuCisgICAgIiIiCisgICAgcmVzID0geWllbGQKKworICAgIGFzc2VydCBub3Rlc19r ZXkgaW4gaXRlbS5zdGFzaCwgInBndGFwIGRpZG4ndCBhbm5vdGF0ZSBhIHRlc3QgaXRlbT8iCisg ICAgbm90ZXMgPSBpdGVtLnN0YXNoW25vdGVzX2tleV0KKworICAgIGlmIG5vdGVzLmZhaWxlZDoK KyAgICAgICAgdGFwLmZhaWwoaXRlbS5ub2RlaWQsIG5vdGVzLmRldGFpbHMpCisgICAgZWxpZiBu b3Rlcy5za2lwcGVkOgorICAgICAgICB0YXAuc2tpcChpdGVtLm5vZGVpZCwgbm90ZXMuc2tpcF9y ZWFzb24pCisgICAgZWxzZToKKyAgICAgICAgdGFwLm9rKGl0ZW0ubm9kZWlkKQorCisgICAgcmV0 dXJuIHJlcwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3Rlc3R3cmFwIGIvc3JjL3Rvb2xzL3Rlc3R3 cmFwCmluZGV4IGU5MTI5NmVjZDE1Li4zNDZmODZiOGVhMyAxMDA3NTUKLS0tIGEvc3JjL3Rvb2xz L3Rlc3R3cmFwCisrKyBiL3NyYy90b29scy90ZXN0d3JhcApAQCAtNDIsNyArNDIsMTEgQEAgb3Bl bihvcy5wYXRoLmpvaW4odGVzdGRpciwgJ3Rlc3Quc3RhcnQnKSwgJ3gnKQogCiBlbnZfZGljdCA9 IHsqKm9zLmVudmlyb24sCiAgICAgICAgICAgICAnVEVTVERBVEFESVInOiBvcy5wYXRoLmpvaW4o dGVzdGRpciwgJ2RhdGEnKSwKLSAgICAgICAgICAgICdURVNUTE9HRElSJzogb3MucGF0aC5qb2lu KHRlc3RkaXIsICdsb2cnKX0KKyAgICAgICAgICAgICdURVNUTE9HRElSJzogb3MucGF0aC5qb2lu KHRlc3RkaXIsICdsb2cnKSwKKyAgICAgICAgICAgICMgUHJldmVudCBlbWl0dGluZyB0ZXJtaW5h bCBjYXBhYmlsaXR5IHNlcXVlbmNlcyB0aGF0IHBvbGx1dGUgdGhlCisgICAgICAgICAgICAjIFRB UCBvdXRwdXQgc3RyZWFtIChpLmUuXDAzM1s/MTAzNGgpLiBUaGlzIGhhcHBlbnMgb24gT3BlbkJT RCB3aXRoCisgICAgICAgICAgICAjIHB5dGVzdCBmb3IgdW5rbm93biByZWFzb25zLgorICAgICAg ICAgICAgJ1RFUk0nOiAnJ30KIAogCiAjIFRoZSBjb25maWd1cmF0aW9uIHRpbWUgdmFsdWUgb2Yg UEdfVEVTVF9FWFRSQSBpcyBzdXBwbGllZCB2aWEgYXJndW1lbnQKCmJhc2UtY29tbWl0OiBlNWE1 ZTBhOTA3NTBkNjY1Y2FiNDE3MzIyYjlmODVjODA2NDMwZDg1Ci0tIAoyLjUyLjAKCg== --cf0f2795fe617e705419450ca58cceb69e2a378a306664a6a3b70c8c4a92 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v10-0002-Add-pytest-infrastructure-to-interact-with-Postg.patch Content-Type: text/x-patch; charset=utf-8; name=v10-0002-Add-pytest-infrastructure-to-interact-with-Postg.patch RnJvbSA0MzU0MzQ3MTM0YzEyMTc1MTM0OGUwNmMyODk4MDdkMDVlNmM0YjJkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUdWUsIDE2IERlYyAyMDI1IDA5OjI1OjQ4ICswMTAwClN1YmplY3Q6IFtQQVRDSCB2 MTAgMi81XSBBZGQgcHl0ZXN0IGluZnJhc3RydWN0dXJlIHRvIGludGVyYWN0IHdpdGggUG9zdGdy ZVNRTAogc2VydmVycwoKVGhpcyBhZGRzIGZ1bmN0aW9uYWxpdHkgdG8gdGhlIHB5dGVzdCBpbmZy YXN0cnVjdHVyZSB0aGF0IGFsbG93cyB0ZXN0cwp0byBkbyBjb21tb24gdGhpbmdzIHdpdGggUG9z dGdyZVNRTCBzZXJ2ZXJzIGxpa2U6Ci0gY3JlYXRpbmcKLSBzdGFydGluZwotIHN0b3BwaW5nCi0g Y29ubmVjdGluZwotIHJ1bm5pbmcgcXVlcmllcwotIGhhbmRsaW5nIGVycm9ycwoKVGhlIGdvYWwg b2YgdGhpcyBpbmZyYXN0cnVjdHVyZSBpcyB0byBiZSBzbyBlYXN5IHRvIHVzZSB0aGF0IHRoZSBh Y3R1YWwKdGVzdHMgcmVhbGx5IG9ubHkgY29udGFpbiB0aGUgbG9naWMgdG8gdGVzdCB0aGUgYmVo YXZpb3VyIHRoYXQgdGhlIHRlc3RzCmFyZSB0ZXN0aW5nLCBhcyBvcHBvc2VkIHRvIGEgYnVuY2gg b2YgYm9pbGVycGxhdGUuIEV4YW1wbGVzIG9mIHRoaXMgYXJlOgoKVHlwZXMgZ2V0IGNvbnZlcnRl ZCB0byB0aGVpciBQeXRob24gY291bnRlciBwYXJ0cyBhdXRvbWF0aWNhbGx5LiBFcnJvcnMKYmVj b21lIGFjdHVhbCBQeXRob24gZXhjZXB0aW9ucy4gUmVzdWx0cyBvZiBxdWVyaWVzIHRoYXQgb25s eSByZXR1cm4gYQpzaW5nbGUgcm93IG9yIGNlbGwgYXJlIHVucGFja2VkIGF1dG9tYXRpY2FsbHks IHNvIHlvdSBkb24ndCBoYXZlIHRvIGRvCnJvd3NbMF1bMF0gaWYgdGhlIHF1ZXJ5IG9ubHkgcmV0 dXJucyBhIHNpbmdsZSBjZWxsLgoKVGhlIG9ubHkgbmV3IHRlc3RzIHRoYXQgYXJlIHBhcnQgb2Yg dGhpcyBjb21taXQgYXJlIHRlc3RzIHRoYXQgY292ZXIKdGhpcyB0ZXN0aW5nIGluZnJhc3RydWN0 dXJlIGl0c2VsZi4gSXQncyBkZWJhdGFibGUgd2hldGhlciBzdWNoIHRlc3RzCmFyZSB1c2VmdWwg bG9uZyB0ZXJtLCBiZWNhdXNlIGFueSBpbmZyYXN0cnVjdHVyZSB0aGF0J3MgdW51c2VkIGJ5IGFj dHVhbAp0ZXN0cyBzaG91bGQgcHJvYmFibHkgbm90IGV4aXN0LiBGb3Igbm93IGl0IHNlZW1zIGdv b2QgdG8gdGVzdCB0aGlzCmJhc2ljIGZ1bmN0aW9uYWxpdHkgdGhvdWdoLCBib3RoIHRvIG1ha2Ug c3VyZSB3ZSBkb24ndCBicmVhayBpdCBiZWZvcmUKY29tbWl0dGluZyBhY3R1YWwgdGVzdHMgdGhh dCB1c2UgaXQsIGFuZCBhbHNvIGFzIGFuIGV4YW1wbGUgZm9yIHBlb3BsZQp3cml0aW5nIG5ldyB0 ZXN0cy4KLS0tCiBkb2Mvc3JjL3NnbWwvcmVncmVzcy5zZ21sICAgICAgICAgICAgICAgICB8ICA2 NiArKy0KIHB5cHJvamVjdC50b21sICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzICsK IHNyYy90ZXN0L3B5dGVzdC9SRUFETUUgICAgICAgICAgICAgICAgICAgIHwgMTU0ICsrKysrKy0K IHNyYy90ZXN0L3B5dGVzdC9saWJwcS9fX2luaXRfXy5weSAgICAgICAgIHwgIDM1ICsrCiBzcmMv dGVzdC9weXRlc3QvbGlicHEvX2NvcmUucHkgICAgICAgICAgICB8IDQ4OCArKysrKysrKysrKysr KysrKysrKysrCiBzcmMvdGVzdC9weXRlc3QvbGlicHEvZXJyb3JzLnB5ICAgICAgICAgICB8ICA2 MiArKysKIHNyYy90ZXN0L3B5dGVzdC9tZXNvbi5idWlsZCAgICAgICAgICAgICAgIHwgICA0ICsK IHNyYy90ZXN0L3B5dGVzdC9weXBnL19faW5pdF9fLnB5ICAgICAgICAgIHwgIDEwICsKIHNyYy90 ZXN0L3B5dGVzdC9weXBnL19lbnYucHkgICAgICAgICAgICAgIHwgIDcyICsrKysKIHNyYy90ZXN0 L3B5dGVzdC9weXBnL2ZpeHR1cmVzLnB5ICAgICAgICAgIHwgMzM1ICsrKysrKysrKysrKysrKwog c3JjL3Rlc3QvcHl0ZXN0L3B5cGcvc2VydmVyLnB5ICAgICAgICAgICAgfCA0NzAgKysrKysrKysr KysrKysrKysrKysrCiBzcmMvdGVzdC9weXRlc3QvcHlwZy91dGlsLnB5ICAgICAgICAgICAgICB8 ICA0MiArKwogc3JjL3Rlc3QvcHl0ZXN0L3B5dC9jb25mdGVzdC5weSAgICAgICAgICAgfCAgIDEg Kwogc3JjL3Rlc3QvcHl0ZXN0L3B5dC90ZXN0X2Vycm9ycy5weSAgICAgICAgfCAgMzQgKysKIHNy Yy90ZXN0L3B5dGVzdC9weXQvdGVzdF9saWJwcS5weSAgICAgICAgIHwgMTcyICsrKysrKysrCiBz cmMvdGVzdC9weXRlc3QvcHl0L3Rlc3RfbXVsdGlfc2VydmVyLnB5ICB8ICA0NiArKwogc3JjL3Rl c3QvcHl0ZXN0L3B5dC90ZXN0X3F1ZXJ5X2hlbHBlcnMucHkgfCAzNDcgKysrKysrKysrKysrKysr CiAxNyBmaWxlcyBjaGFuZ2VkLCAyMzM5IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcHl0ZXN0L2xpYnBxL19faW5pdF9fLnB5CiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcHl0ZXN0L2xpYnBxL19jb3JlLnB5CiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjL3Rlc3QvcHl0ZXN0L2xpYnBxL2Vycm9ycy5weQogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy90ZXN0L3B5dGVzdC9weXBnL19faW5pdF9fLnB5CiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL3Rlc3QvcHl0ZXN0L3B5cGcvX2Vudi5weQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0 L3B5dGVzdC9weXBnL2ZpeHR1cmVzLnB5CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcHl0 ZXN0L3B5cGcvc2VydmVyLnB5CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcHl0ZXN0L3B5 cGcvdXRpbC5weQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3B5dGVzdC9weXQvY29uZnRl c3QucHkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9weXRlc3QvcHl0L3Rlc3RfZXJyb3Jz LnB5CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcHl0ZXN0L3B5dC90ZXN0X2xpYnBxLnB5 CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcHl0ZXN0L3B5dC90ZXN0X211bHRpX3NlcnZl ci5weQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3B5dGVzdC9weXQvdGVzdF9xdWVyeV9o ZWxwZXJzLnB5CgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZ3Jlc3Muc2dtbCBiL2RvYy9z cmMvc2dtbC9yZWdyZXNzLnNnbWwKaW5kZXggZDgwZGQ0NmM1ZmQuLjJkODVlZGFjZWM3IDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVncmVzcy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWdy ZXNzLnNnbWwKQEAgLTg0MCw3ICs4NDAsNyBAQCBmbG9hdDQ6b3V0Oi4qLS4qLWN5Z3dpbi4qPWZs b2F0NC1taXNyb3VuZGVkLWlucHV0Lm91dAogICA8L3NlY3QxPgogCiAgIDxzZWN0MSBpZD0icmVn cmVzcy10YXAiPgotICAgPHRpdGxlPlRBUCBUZXN0czwvdGl0bGU+CisgICA8dGl0bGU+UGVybCBU QVAgVGVzdHM8L3RpdGxlPgogCiAgICA8cGFyYT4KICAgICBWYXJpb3VzIHRlc3RzLCBwYXJ0aWN1 bGFybHkgdGhlIGNsaWVudCBwcm9ncmFtIHRlc3RzCkBAIC05MjksNiArOTI5LDcwIEBAIFBHX1RF U1RfTk9DTEVBTj0xIG1ha2UgLUMgc3JjL2Jpbi9wZ19kdW1wIGNoZWNrCiAKICAgPC9zZWN0MT4K IAorICA8c2VjdDEgaWQ9InJlZ3Jlc3MtcHl0ZXN0Ij4KKyAgIDx0aXRsZT5QeXRlc3QgVGVzdHM8 L3RpdGxlPgorCisgICA8cGFyYT4KKyAgICBUZXN0cyBpbiA8ZmlsZW5hbWU+cHl0PC9maWxlbmFt ZT4gZGlyZWN0b3JpZXMgdXNlIHRoZSBQeXRob24KKyAgICA8YXBwbGljYXRpb24+cHl0ZXN0PC9h cHBsaWNhdGlvbj4gZnJhbWV3b3JrLiBUaGVzZSB0ZXN0cyBwcm92aWRlIGEKKyAgICBjb252ZW5p ZW50IHdheSB0byB0ZXN0IGxpYnBxIGNsaWVudCBmdW5jdGlvbmFsaXR5IGFuZCBzY2VuYXJpb3Mg cmVxdWlyaW5nCisgICAgbXVsdGlwbGUgUG9zdGdyZVNRTCBzZXJ2ZXIgaW5zdGFuY2VzLgorICAg PC9wYXJhPgorCisgICA8cGFyYT4KKyAgICBUaGUgcHl0ZXN0IHRlc3RzIHJlcXVpcmUgPHByb2R1 Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiB0byBiZQorICAgIGNvbmZpZ3VyZWQgd2l0 aCB0aGUgb3B0aW9uIDxvcHRpb24+LS1lbmFibGUtcHl0ZXN0PC9vcHRpb24+IChvcgorICAgIDxv cHRpb24+LURweXRlc3Q9ZW5hYmxlZDwvb3B0aW9uPiBmb3IgTWVzb24gYnVpbGRzKS4gWW91IGFs c28gbmVlZAorICAgIDxhcHBsaWNhdGlvbj5weXRlc3Q8L2FwcGxpY2F0aW9uPiBpbnN0YWxsZWQu IFlvdSBjYW4gZWl0aGVyIGluc3RhbGwgaXQKKyAgICBzeXN0ZW0td2lkZSwgb3IgY3JlYXRlIGEg dmlydHVhbCBlbnZpcm9ubWVudCBpbiB0aGUgc291cmNlIGRpcmVjdG9yeToKKzxwcm9ncmFtbGlz dGluZz4KK3B5dGhvbiAtbSB2ZW52IC52ZW52Citzb3VyY2UgLnZlbnYvYmluL2FjdGl2YXRlCitw aXAgaW5zdGFsbCAuCis8L3Byb2dyYW1saXN0aW5nPgorICAgIEFsdGVybmF0aXZlbHksIGlmIHlv dSBoYXZlIDxhcHBsaWNhdGlvbj51djwvYXBwbGljYXRpb24+IGluc3RhbGxlZDoKKzxwcm9ncmFt bGlzdGluZz4KK3V2IHN5bmMKK3NvdXJjZSAudmVudi9iaW4vYWN0aXZhdGUKKzwvcHJvZ3JhbWxp c3Rpbmc+CisgICAgUmVtZW1iZXIgdG8gYWN0aXZhdGUgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQg YmVmb3JlIHJ1bm5pbmcKKyAgICA8Y29tbWFuZD5jb25maWd1cmU8L2NvbW1hbmQ+IG9yIDxjb21t YW5kPm1lc29uIHNldHVwPC9jb21tYW5kPi4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAg V2l0aCBNZXNvbiBidWlsZHMsIHlvdSBjYW4gcnVuIHRoZSBweXRlc3QgdGVzdHMgdXNpbmc6Cis8 cHJvZ3JhbWxpc3Rpbmc+CittZXNvbiB0ZXN0IC0tc3VpdGUgcHl0ZXN0Cis8L3Byb2dyYW1saXN0 aW5nPgorICAgIFdpdGggYXV0b2NvbmYtYmFzZWQgYnVpbGRzLCB5b3UgY2FuIHJ1biB0aGVtIGZy b20gdGhlCisgICAgPGZpbGVuYW1lPnNyYy90ZXN0L3B5dGVzdDwvZmlsZW5hbWU+IGRpcmVjdG9y eSB1c2luZzoKKzxwcm9ncmFtbGlzdGluZz4KK21ha2UgY2hlY2sKKzwvcHJvZ3JhbWxpc3Rpbmc+ CisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIFlvdSBjYW4gYWxzbyBydW4gc3BlY2lmaWMg dGVzdCBmaWxlcyBkaXJlY3RseSB1c2luZyBweXRlc3Q6Cis8cHJvZ3JhbWxpc3Rpbmc+CitweXRl c3Qgc3JjL3Rlc3QvcHl0ZXN0L3B5dC90ZXN0X2xpYnBxLnB5CitweXRlc3QgLWsgInRlc3RfY29u bnN0ciIKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIE1h bnkgb3BlcmF0aW9ucyBpbiB0aGUgdGVzdCBzdWl0ZXMgdXNlIGEgMTgwLXNlY29uZCB0aW1lb3V0 LCB3aGljaCBvbiBzbG93CisgICAgaG9zdHMgbWF5IGxlYWQgdG8gbG9hZC1pbmR1Y2VkIHRpbWVv dXRzLiAgU2V0dGluZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKKyAgICA8dmFybmFtZT5QR19U RVNUX1RJTUVPVVRfREVGQVVMVDwvdmFybmFtZT4gdG8gYSBoaWdoZXIgbnVtYmVyIHdpbGwgY2hh bmdlCisgICAgdGhlIGRlZmF1bHQgdG8gYXZvaWQgdGhpcy4KKyAgIDwvcGFyYT4KKworICAgPHBh cmE+CisgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gd3JpdGluZyBweXRlc3QgdGVzdHMsIHNl ZSB0aGUKKyAgICA8ZmlsZW5hbWU+c3JjL3Rlc3QvcHl0ZXN0L1JFQURNRTwvZmlsZW5hbWU+IGZp bGUuCisgICA8L3BhcmE+CisKKyAgPC9zZWN0MT4KKwogICA8c2VjdDEgaWQ9InJlZ3Jlc3MtY292 ZXJhZ2UiPgogICAgPHRpdGxlPlRlc3QgQ292ZXJhZ2UgRXhhbWluYXRpb248L3RpdGxlPgogCmRp ZmYgLS1naXQgYS9weXByb2plY3QudG9tbCBiL3B5cHJvamVjdC50b21sCmluZGV4IDYwYWJiNGQw NjU1Li40NjI4ZDIyNzRlMCAxMDA2NDQKLS0tIGEvcHlwcm9qZWN0LnRvbWwKKysrIGIvcHlwcm9q ZWN0LnRvbWwKQEAgLTE5LDMgKzE5LDYgQEAgbWludmVyc2lvbiA9ICI3LjAiCiAKICMgQ29tbW9u IHRlc3QgY29kZSBjYW4gYmUgZm91bmQgaGVyZS4KIHB5dGhvbnBhdGggPSBbInNyYy90ZXN0L3B5 dGVzdCJdCisKKyMgTG9hZCB0aGUgc2hhcmVkIGZpeHR1cmVzIHBsdWdpbgorYWRkb3B0cyA9IFsi LXAiLCAicHlwZy5maXh0dXJlcyJdCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9weXRlc3QvUkVBRE1F IGIvc3JjL3Rlc3QvcHl0ZXN0L1JFQURNRQppbmRleCAxMzMzZWQ3N2I3ZS4uYmI3NWU1NmEyNWQg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3B5dGVzdC9SRUFETUUKKysrIGIvc3JjL3Rlc3QvcHl0ZXN0 L1JFQURNRQpAQCAtMSArMSwxNTMgQEAKLVRPRE8KK3NyYy90ZXN0L3B5dGVzdC9SRUFETUUKKwor UHl0ZXN0LWJhc2VkIHRlc3RzCis9PT09PT09PT09PT09PT09PT0KKworVGhpcyBkaXJlY3Rvcnkg Y29udGFpbnMgaW5mcmFzdHJ1Y3R1cmUgZm9yIFB5dGhvbi1iYXNlZCB0ZXN0cyB1c2luZyBweXRl c3QsCithbG9uZyB3aXRoIHNvbWUgY29yZSB0ZXN0cyBmb3IgdGhlIHB5dGVzdCBpbmZyYXN0cnVj dHVyZSBpdHNlbGYuIFRoZSBmcmFtZXdvcmsKK3Byb3ZpZGVzIGZpeHR1cmVzIGZvciBtYW5hZ2lu ZyBQb3N0Z3JlU1FMIHNlcnZlciBpbnN0YW5jZXMgYW5kIGNvbm5lY3RpbmcgdG8KK3RoZW0gdmlh IGxpYnBxLgorCisKK1J1bm5pbmcgdGhlIHRlc3RzCis9PT09PT09PT09PT09PT09PQorCitOT1RF OiBZb3UgbXVzdCBoYXZlIGdpdmVuIHRoZSAtLWVuYWJsZS1weXRlc3QgYXJndW1lbnQgdG8gY29u ZmlndXJlIChvcgorLURweXRlc3Q9ZW5hYmxlZCBmb3IgTWVzb24gYnVpbGRzKS4gWW91IGFsc28g bmVlZCB0byBoYXZlIHB5dGVzdCBpbnN0YWxsZWQuCisKK0lmIHlvdSBkb24ndCBoYXZlIHB5dGVz dCBpbnN0YWxsZWQgc3lzdGVtLXdpZGUsIHlvdSBjYW4gY3JlYXRlIGEgdmlydHVhbAorZW52aXJv bm1lbnQ6CisKKyAgICBweXRob24zIC1tIHZlbnYgLnZlbnYKKyAgICBzb3VyY2UgLnZlbnYvYmlu L2FjdGl2YXRlICAgICMgT24gV2luZG93czogLnZlbnZcU2NyaXB0c1xhY3RpdmF0ZQorICAgIHBp cCBpbnN0YWxsIC4gICAgICAgICAgICAgICAgIyBJbnN0YWxscyBweXRlc3QgYW5kIG90aGVyIGRl cGVuZGVuY2llcworCitPciB1c2luZyB1diAoaHR0cHM6Ly9kb2NzLmFzdHJhbC5zaC91di8pOgor CisgICAgdXYgc3luYworICAgIHNvdXJjZSAudmVudi9iaW4vYWN0aXZhdGUgICAgIyBPbiBXaW5k b3dzOiAudmVudlxTY3JpcHRzXGFjdGl2YXRlCisKK1JlbWVtYmVyIHRvIGFjdGl2YXRlIHRoZSB2 aXJ0dWFsIGVudmlyb25tZW50IGJlZm9yZSBydW5uaW5nIGNvbmZpZ3VyZS9tZXNvbgorc2V0dXAu CisKK1dpdGggTWVzb24gYnVpbGRzLCB5b3UgY2FuIHJ1bjoKKyAgICBtZXNvbiB0ZXN0IC0tc3Vp dGUgcHl0ZXN0CisKK1dpdGggYXV0b2NvbmYgYmFzZWQgYnVpbGRzLCB5b3UgY2FuIHJ1bjoKKyAg ICBtYWtlIGNoZWNrCitvcgorICAgIG1ha2UgaW5zdGFsbGNoZWNrCisKK1lvdSBjYW4gcnVuIHNw ZWNpZmljIHRlc3QgZmlsZXMgYW5kL29yIHVzZSBweXRlc3QncyAtayBvcHRpb24gdG8gc2VsZWN0 IHRlc3RzOgorICAgIHB5dGVzdCBzcmMvdGVzdC9weXRlc3QvcHl0L3Rlc3RfbGlicHEucHkKKyAg ICBweXRlc3QgLWsgInRlc3RfY29ubnN0ciIKKworCitEaXJlY3Rvcnkgc3RydWN0dXJlCis9PT09 PT09PT09PT09PT09PT09CisKK3B5cGcvCisgICAgUHl0aG9uIGxpYnJhcnkgcHJvdmlkaW5nIGNv bW1vbiBmdW5jdGlvbnMgYW5kIHB5dGVzdCBmaXh0dXJlcyB0aGF0IGNhbiBiZQorICAgIHVzZWQg aW4gdGVzdHMuCisKK2xpYnBxLworICAgIEEgc2ltcGxlIGJ1dCB1c2VyLWZyaWVuZGx5IHB5dGhv biB3cmFwcGVyIGFyb3VuZCBsaWJwcQorCitweXQvCisgICAgVGVzdHMgZm9yIHRoZSBweXRlc3Qg aW5mcmFzdHJ1Y3R1cmUgaXRzZWxmCisKK3BndGFwLnB5CisgICAgQSBweXRlc3QgcGx1Z2luIHRv IG91dHB1dCByZXN1bHRzIGluIFRBUCBmb3JtYXQKKworCitXcml0aW5nIHRlc3RzCis9PT09PT09 PT09PT09CisKK1Rlc3RzIHVzZSBweXRlc3QgZml4dHVyZXMgdG8gbWFuYWdlIHNlcnZlciBpbnN0 YW5jZXMgYW5kIGNvbm5lY3Rpb25zLiBUaGUKK21vc3QgY29tbW9ubHkgdXNlZCBmaXh0dXJlcyBh cmU6CisKK3BnCisgICAgQSBQb3N0Z3Jlc1NlcnZlciBpbnN0YW5jZSBjb25maWd1cmVkIGZvciB0 aGUgY3VycmVudCB0ZXN0LiBVc2UgdGhpcyBmb3IKKyAgICBjcmVhdGluZyB0ZXN0IHVzZXJzL2Rh dGFiYXNlcyBvciBtb2RpZnlpbmcgc2VydmVyIGNvbmZpZ3VyYXRpb24uIENoYW5nZXMKKyAgICBh cmUgYXV0b21hdGljYWxseSByb2xsZWQgYmFjayBhZnRlciB0aGUgdGVzdC4KKworY29ubgorICAg IEEgY29ubmVjdGVkIFBHY29ubiBpbnN0YW5jZSB0byB0aGUgdGVzdCBzZXJ2ZXIuIEF1dG9tYXRp Y2FsbHkgY2xlYW5lZCB1cAorICAgIGFmdGVyIHRoZSB0ZXN0LgorCitjb25uZWN0CisgICAgQSBm dW5jdGlvbiB0byBjcmVhdGUgYWRkaXRpb25hbCBjb25uZWN0aW9ucyB3aXRoIGN1c3RvbSBvcHRp b25zLgorCitjcmVhdGVfcGcKKyAgICBBIGZhY3RvcnkgZnVuY3Rpb24gdG8gY3JlYXRlIGFkZGl0 aW9uYWwgUG9zdGdyZVNRTCBzZXJ2ZXJzIHdpdGhpbiBhIHRlc3QuCisgICAgU2VydmVycyBhcmUg YXV0b21hdGljYWxseSBjbGVhbmVkIHVwIGF0IHRoZSBlbmQgb2YgdGhlIHRlc3QuIFVzZWZ1bCBm b3IKKyAgICB0ZXN0aW5nIHNjZW5hcmlvcyB0aGF0IHJlcXVpcmUgbXVsdGlwbGUgaW5kZXBlbmRl bnQgc2VydmVycy4KKworY3JlYXRlX3BnX21vZHVsZQorICAgIExpa2UgY3JlYXRlX3BnLCBidXQg c2VydmVycyBwZXJzaXN0IGZvciB0aGUgZW50aXJlIHRlc3QgbW9kdWxlLiBVc2UgdGhpcworICAg IHdoZW4gbXVsdGlwbGUgdGVzdHMgaW4gYSBtb2R1bGUgY2FuIHNoYXJlIHRoZSBzYW1lIHNlcnZl cnMsIHdoaWNoIGlzCisgICAgZmFzdGVyIHRoYW4gY3JlYXRpbmcgbmV3IHNlcnZlcnMgZm9yIGVh Y2ggdGVzdC4KKworCitFeGFtcGxlIHRlc3Q6CisKKyAgICBkZWYgdGVzdF9zaW1wbGVfcXVlcnko Y29ubik6CisgICAgICAgIHJlc3VsdCA9IGNvbm4uc3FsKCJTRUxFQ1QgMSArIDEiKQorICAgICAg ICBhc3NlcnQgcmVzdWx0ID09IDIKKworICAgIGRlZiB0ZXN0X3dpdGhfdXNlcihwZyk6CisgICAg ICAgIHVzZXJzID0gcGcuY3JlYXRlX3VzZXJzKCJ0ZXN0IikKKyAgICAgICAgd2l0aCBwZy5yZWxv YWRpbmcoKSBhcyBzOgorICAgICAgICAgICAgcy5oYmEucHJlcGVuZChbImxvY2FsIiwgImFsbCIs IHVzZXJzWyJ0ZXN0Il0sICJ0cnVzdCJdKQorCisgICAgICAgIGNvbm4gPSBwZy5jb25uZWN0KHVz ZXI9dXNlcnNbInRlc3QiXSkKKyAgICAgICAgYXNzZXJ0IGNvbm4uc3FsKCJTRUxFQ1QgY3VycmVu dF91c2VyIikgPT0gdXNlcnNbInRlc3QiXQorCisgICAgZGVmIHRlc3RfbXVsdGlwbGVfc2VydmVy cyhjcmVhdGVfcGcpOgorICAgICAgICBub2RlMSA9IGNyZWF0ZV9wZygicHJpbWFyeSIpCisgICAg ICAgIG5vZGUyID0gY3JlYXRlX3BnKCJzZWNvbmRhcnkiKQorCisgICAgICAgIGNvbm4xID0gbm9k ZTEuY29ubmVjdCgpCisgICAgICAgIGNvbm4yID0gbm9kZTIuY29ubmVjdCgpCisKKyAgICAgICAg IyBFYWNoIHNlcnZlciBpcyBpbmRlcGVuZGVudAorICAgICAgICBhc3NlcnQgbm9kZTEucG9ydCAh PSBub2RlMi5wb3J0CisKKworU2VydmVyIGNvbmZpZ3VyYXRpb24KKz09PT09PT09PT09PT09PT09 PT09CisKK1Rlc3RzIGNhbiB0ZW1wb3JhcmlseSBtb2RpZnkgc2VydmVyIGNvbmZpZ3VyYXRpb24g dXNpbmcgY29udGV4dCBtYW5hZ2VyczoKKworICAgIHdpdGggcGcucmVsb2FkaW5nKCkgYXMgczoK KyAgICAgICAgcy5jb25mLnNldChsb2dfY29ubmVjdGlvbnM9Im9uIikKKyAgICAgICAgcy5oYmEu cHJlcGVuZCgibG9jYWwgYWxsIGFsbCB0cnVzdCIpCisgICAgICAgICMgU2VydmVyIGlzIHJlbG9h ZGVkIGhlcmUKKyAgICAjIEFmdGVyIHRoZSB0ZXN0IGZpbmlzaGVkIHRoZSBvcmlnaW5hbCBjb25m aWd1cmF0aW9uIGlzIHJlc3RvcmVkIGFuZAorICAgICMgdGhlIHNlcnZlciBpcyByZWxvYWRlZCBh Z2FpbgorCitVc2UgcGcucmVzdGFydGluZygpIGluc3RlYWQgaWYgdGhlIGNvbmZpZ3VyYXRpb24g Y2hhbmdlIHJlcXVpcmVzIGEgcmVzdGFydC4KKworCitUaW1lb3V0cworPT09PT09PT0KKworVGVz dHMgaW5oZXJpdCB0aGUgUEdfVEVTVF9USU1FT1VUX0RFRkFVTFQgZW52aXJvbm1lbnQgdmFyaWFi bGUgKGRlZmF1bHRpbmcKK3RvIDE4MCBzZWNvbmRzKS4gVGhlIHJlbWFpbmluZ190aW1lb3V0IGZp eHR1cmUgcHJvdmlkZXMgYSBmdW5jdGlvbiB0aGF0CityZXR1cm5zIGhvdyBtdWNoIHRpbWUgcmVt YWlucyBmb3IgdGhlIGN1cnJlbnQgdGVzdC4KKworCitFbnZpcm9ubWVudCB2YXJpYWJsZXMKKz09 PT09PT09PT09PT09PT09PT09PQorCitQR19URVNUX1RJTUVPVVRfREVGQVVMVAorICAgIFBlci10 ZXN0IHRpbWVvdXQgaW4gc2Vjb25kcyAoZGVmYXVsdDogMTgwKQorCitQR19DT05GSUcKKyAgICBQ YXRoIHRvIHBnX2NvbmZpZyAoZGVmYXVsdDogdXNlcyBQQVRIKQorCitURVNUREFUQURJUgorICAg IERpcmVjdG9yeSBmb3IgdGVzdCBkYXRhIChkZWZhdWx0OiBweXRlc3QgdGVtcCBkaXJlY3Rvcnkp CisKK1BHX1RFU1RfRVhUUkEKKyAgICBTcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBvcHRpb25hbCB0 ZXN0IGNhdGVnb3JpZXMgdG8gcnVuIChlLmcuLCAic3NsIikKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3B5dGVzdC9saWJwcS9fX2luaXRfXy5weSBiL3NyYy90ZXN0L3B5dGVzdC9saWJwcS9fX2luaXRf Xy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNmE3MWViYmU0M2YK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9weXRlc3QvbGlicHEvX19pbml0X18ucHkKQEAg LTAsMCArMSwzNSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERl dmVsb3BtZW50IEdyb3VwCisKKyIiIgorbGlicHEgdGVzdGluZyB1dGlsaXRpZXMgLSBjdHlwZXMg YmluZGluZ3MgYW5kIGhlbHBlcnMgZm9yIFBvc3RncmVTUUwncyBsaWJwcSBsaWJyYXJ5LgorCitU aGlzIG1vZHVsZSBwcm92aWRlcyBQeXRob24gd3JhcHBlcnMgYXJvdW5kIGxpYnBxIGZvciB1c2Ug aW4gcHl0ZXN0IHRlc3RzLgorIiIiCisKK2Zyb20gLiBpbXBvcnQgZXJyb3JzCitmcm9tIC5lcnJv cnMgaW1wb3J0IExpYnBxRXJyb3IKK2Zyb20gLl9jb3JlIGltcG9ydCAoCisgICAgQ29ubmVjdGlv blN0YXR1cywKKyAgICBEaWFnRmllbGQsCisgICAgRXhlY1N0YXR1cywKKyAgICBQR2Nvbm4sCisg ICAgUEdyZXN1bHQsCisgICAgY29ubmVjdCwKKyAgICBjb25uc3RyLAorICAgIGxvYWRfbGlicHFf aGFuZGxlLAorICAgIHJlZ2lzdGVyX3R5cGVfaW5mbywKKykKKworX19hbGxfXyA9IFsKKyAgICAi ZXJyb3JzIiwKKyAgICAiTGlicHFFcnJvciIsCisgICAgIkNvbm5lY3Rpb25TdGF0dXMiLAorICAg ICJEaWFnRmllbGQiLAorICAgICJFeGVjU3RhdHVzIiwKKyAgICAiUEdjb25uIiwKKyAgICAiUEdy ZXN1bHQiLAorICAgICJjb25uZWN0IiwKKyAgICAiY29ubnN0ciIsCisgICAgImxvYWRfbGlicHFf aGFuZGxlIiwKKyAgICAicmVnaXN0ZXJfdHlwZV9pbmZvIiwKK10KZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3B5dGVzdC9saWJwcS9fY29yZS5weSBiL3NyYy90ZXN0L3B5dGVzdC9saWJwcS9fY29yZS5w eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMWMwNTliOWI0NDYKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9weXRlc3QvbGlicHEvX2NvcmUucHkKQEAgLTAsMCAr MSw0ODggQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9w bWVudCBHcm91cAorCisiIiIKK0NvcmUgbGlicHEgZnVuY3Rpb25hbGl0eSAtIGN0eXBlcyBiaW5k aW5ncyBhbmQgY29ubmVjdGlvbiBoYW5kbGluZy4KKyIiIgorCitpbXBvcnQgY29udGV4dGxpYgor aW1wb3J0IGN0eXBlcworaW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgZGVjaW1hbAoraW1wb3J0IGVu dW0KK2ltcG9ydCBqc29uCitpbXBvcnQgcGxhdGZvcm0KK2ltcG9ydCBvcworaW1wb3J0IHV1aWQK K2Zyb20gdHlwaW5nIGltcG9ydCBBbnksIENhbGxhYmxlLCBEaWN0LCBPcHRpb25hbAorCitmcm9t IC5lcnJvcnMgaW1wb3J0IExpYnBxRXJyb3IKKworCisjIFBHX0RJQUcgZmllbGQgaWRlbnRpZmll cnMgZnJvbSBwb3N0Z3Jlc19leHQuaAorY2xhc3MgRGlhZ0ZpZWxkKGVudW0uSW50RW51bSk6Cisg ICAgU0VWRVJJVFkgPSBvcmQoIlMiKQorICAgIFNFVkVSSVRZX05PTkxPQ0FMSVpFRCA9IG9yZCgi ViIpCisgICAgU1FMU1RBVEUgPSBvcmQoIkMiKQorICAgIE1FU1NBR0VfUFJJTUFSWSA9IG9yZCgi TSIpCisgICAgTUVTU0FHRV9ERVRBSUwgPSBvcmQoIkQiKQorICAgIE1FU1NBR0VfSElOVCA9IG9y ZCgiSCIpCisgICAgU1RBVEVNRU5UX1BPU0lUSU9OID0gb3JkKCJQIikKKyAgICBJTlRFUk5BTF9Q T1NJVElPTiA9IG9yZCgicCIpCisgICAgSU5URVJOQUxfUVVFUlkgPSBvcmQoInEiKQorICAgIENP TlRFWFQgPSBvcmQoIlciKQorICAgIFNDSEVNQV9OQU1FID0gb3JkKCJzIikKKyAgICBUQUJMRV9O QU1FID0gb3JkKCJ0IikKKyAgICBDT0xVTU5fTkFNRSA9IG9yZCgiYyIpCisgICAgREFUQVRZUEVf TkFNRSA9IG9yZCgiZCIpCisgICAgQ09OU1RSQUlOVF9OQU1FID0gb3JkKCJuIikKKyAgICBTT1VS Q0VfRklMRSA9IG9yZCgiRiIpCisgICAgU09VUkNFX0xJTkUgPSBvcmQoIkwiKQorICAgIFNPVVJD RV9GVU5DVElPTiA9IG9yZCgiUiIpCisKKworY2xhc3MgQ29ubmVjdGlvblN0YXR1cyhlbnVtLklu dEVudW0pOgorICAgICIiIlBvc3RncmVTUUwgY29ubmVjdGlvbiBzdGF0dXMgY29kZXMgZnJvbSBs aWJwcS4iIiIKKworICAgIENPTk5FQ1RJT05fT0sgPSAwCisgICAgQ09OTkVDVElPTl9CQUQgPSAx CisKKworY2xhc3MgRXhlY1N0YXR1cyhlbnVtLkludEVudW0pOgorICAgICIiIlBvc3RncmVTUUwg cmVzdWx0IHN0YXR1cyBjb2RlcyBmcm9tIFBRcmVzdWx0U3RhdHVzLiIiIgorCisgICAgUEdSRVNf RU1QVFlfUVVFUlkgPSAwCisgICAgUEdSRVNfQ09NTUFORF9PSyA9IDEKKyAgICBQR1JFU19UVVBM RVNfT0sgPSAyCisgICAgUEdSRVNfQ09QWV9PVVQgPSAzCisgICAgUEdSRVNfQ09QWV9JTiA9IDQK KyAgICBQR1JFU19CQURfUkVTUE9OU0UgPSA1CisgICAgUEdSRVNfTk9ORkFUQUxfRVJST1IgPSA2 CisgICAgUEdSRVNfRkFUQUxfRVJST1IgPSA3CisgICAgUEdSRVNfQ09QWV9CT1RIID0gOAorICAg IFBHUkVTX1NJTkdMRV9UVVBMRSA9IDkKKyAgICBQR1JFU19QSVBFTElORV9TWU5DID0gMTAKKyAg ICBQR1JFU19QSVBFTElORV9BQk9SVEVEID0gMTEKKworCitjbGFzcyBfUEdjb25uKGN0eXBlcy5T dHJ1Y3R1cmUpOgorICAgIHBhc3MKKworCitjbGFzcyBfUEdyZXN1bHQoY3R5cGVzLlN0cnVjdHVy ZSk6CisgICAgcGFzcworCisKK19QR2Nvbm5fcCA9IGN0eXBlcy5QT0lOVEVSKF9QR2Nvbm4pCitf UEdyZXN1bHRfcCA9IGN0eXBlcy5QT0lOVEVSKF9QR3Jlc3VsdCkKKworCitkZWYgbG9hZF9saWJw cV9oYW5kbGUobGliZGlyLCBiaW5kaXIpOgorICAgICIiIgorICAgIExvYWRzIGEgY3R5cGVzIGhh bmRsZSBmb3IgbGlicHEuIFNvbWUgY29tbW9uIGZ1bmN0aW9uIHByb3RvdHlwZXMgYXJlCisgICAg aW5pdGlhbGl6ZWQgZm9yIGdlbmVyYWwgdXNlLgorICAgICIiIgorICAgIHN5c3RlbSA9IHBsYXRm b3JtLnN5c3RlbSgpCisKKyAgICBpZiBzeXN0ZW0gaW4gKCJMaW51eCIsICJGcmVlQlNEIiwgIk5l dEJTRCIsICJPcGVuQlNEIik6CisgICAgICAgIG5hbWUgPSAibGlicHEuc28uNSIKKyAgICBlbGlm IHN5c3RlbSA9PSAiRGFyd2luIjoKKyAgICAgICAgbmFtZSA9ICJsaWJwcS41LmR5bGliIgorICAg IGVsaWYgc3lzdGVtID09ICJXaW5kb3dzIjoKKyAgICAgICAgbmFtZSA9ICJsaWJwcS5kbGwiCisg ICAgZWxzZToKKyAgICAgICAgYXNzZXJ0IEZhbHNlLCBmInRoZSBsaWJwcSBmaXh0dXJlIG11c3Qg YmUgdXBkYXRlZCBmb3Ige3N5c3RlbX0iCisKKyAgICBpZiBzeXN0ZW0gPT0gIldpbmRvd3MiOgor ICAgICAgICAjIE9uIFdpbmRvd3MsIGxpYnBxLmRsbCBpcyBjb25mdXNpbmdseSBpbiBiaW5kaXIs IG5vdCBsaWJkaXIuIEFuZCB3ZQorICAgICAgICAjIG5lZWQgdG8gYWRkIHRoaXMgZGlyZWN0b3J5 IHRoZSB0aGUgc2VhcmNoIHBhdGguCisgICAgICAgIGxpYnBxX3BhdGggPSBvcy5wYXRoLmpvaW4o YmluZGlyLCBuYW1lKQorICAgICAgICBsaWIgPSBjdHlwZXMuQ0RMTChsaWJwcV9wYXRoKQorICAg IGVsc2U6CisgICAgICAgIGxpYnBxX3BhdGggPSBvcy5wYXRoLmpvaW4obGliZGlyLCBuYW1lKQor ICAgICAgICBsaWIgPSBjdHlwZXMuQ0RMTChsaWJwcV9wYXRoKQorCisgICAgIworICAgICMgRnVu Y3Rpb24gUHJvdG90eXBlcworICAgICMKKworICAgIGxpYi5QUWNvbm5lY3RkYi5yZXN0eXBlID0g X1BHY29ubl9wCisgICAgbGliLlBRY29ubmVjdGRiLmFyZ3R5cGVzID0gW2N0eXBlcy5jX2NoYXJf cF0KKworICAgIGxpYi5QUXN0YXR1cy5yZXN0eXBlID0gY3R5cGVzLmNfaW50CisgICAgbGliLlBR c3RhdHVzLmFyZ3R5cGVzID0gW19QR2Nvbm5fcF0KKworICAgIGxpYi5QUWV4ZWMucmVzdHlwZSA9 IF9QR3Jlc3VsdF9wCisgICAgbGliLlBRZXhlYy5hcmd0eXBlcyA9IFtfUEdjb25uX3AsIGN0eXBl cy5jX2NoYXJfcF0KKworICAgIGxpYi5QUXJlc3VsdFN0YXR1cy5yZXN0eXBlID0gY3R5cGVzLmNf aW50CisgICAgbGliLlBRcmVzdWx0U3RhdHVzLmFyZ3R5cGVzID0gW19QR3Jlc3VsdF9wXQorCisg ICAgbGliLlBRY2xlYXIucmVzdHlwZSA9IE5vbmUKKyAgICBsaWIuUFFjbGVhci5hcmd0eXBlcyA9 IFtfUEdyZXN1bHRfcF0KKworICAgIGxpYi5QUWVycm9yTWVzc2FnZS5yZXN0eXBlID0gY3R5cGVz LmNfY2hhcl9wCisgICAgbGliLlBRZXJyb3JNZXNzYWdlLmFyZ3R5cGVzID0gW19QR2Nvbm5fcF0K KworICAgIGxpYi5QUWZpbmlzaC5yZXN0eXBlID0gTm9uZQorICAgIGxpYi5QUWZpbmlzaC5hcmd0 eXBlcyA9IFtfUEdjb25uX3BdCisKKyAgICBsaWIuUFFyZXN1bHRFcnJvck1lc3NhZ2UucmVzdHlw ZSA9IGN0eXBlcy5jX2NoYXJfcAorICAgIGxpYi5QUXJlc3VsdEVycm9yTWVzc2FnZS5hcmd0eXBl cyA9IFtfUEdyZXN1bHRfcF0KKworICAgIGxpYi5QUW50dXBsZXMucmVzdHlwZSA9IGN0eXBlcy5j X2ludAorICAgIGxpYi5QUW50dXBsZXMuYXJndHlwZXMgPSBbX1BHcmVzdWx0X3BdCisKKyAgICBs aWIuUFFuZmllbGRzLnJlc3R5cGUgPSBjdHlwZXMuY19pbnQKKyAgICBsaWIuUFFuZmllbGRzLmFy Z3R5cGVzID0gW19QR3Jlc3VsdF9wXQorCisgICAgbGliLlBRZ2V0dmFsdWUucmVzdHlwZSA9IGN0 eXBlcy5jX2NoYXJfcAorICAgIGxpYi5QUWdldHZhbHVlLmFyZ3R5cGVzID0gW19QR3Jlc3VsdF9w LCBjdHlwZXMuY19pbnQsIGN0eXBlcy5jX2ludF0KKworICAgIGxpYi5QUWdldGlzbnVsbC5yZXN0 eXBlID0gY3R5cGVzLmNfaW50CisgICAgbGliLlBRZ2V0aXNudWxsLmFyZ3R5cGVzID0gW19QR3Jl c3VsdF9wLCBjdHlwZXMuY19pbnQsIGN0eXBlcy5jX2ludF0KKworICAgIGxpYi5QUWZ0eXBlLnJl c3R5cGUgPSBjdHlwZXMuY191aW50CisgICAgbGliLlBRZnR5cGUuYXJndHlwZXMgPSBbX1BHcmVz dWx0X3AsIGN0eXBlcy5jX2ludF0KKworICAgIGxpYi5QUXJlc3VsdEVycm9yRmllbGQucmVzdHlw ZSA9IGN0eXBlcy5jX2NoYXJfcAorICAgIGxpYi5QUXJlc3VsdEVycm9yRmllbGQuYXJndHlwZXMg PSBbX1BHcmVzdWx0X3AsIGN0eXBlcy5jX2ludF0KKworICAgIHJldHVybiBsaWIKKworCisjIFBv c3RncmVTUUwgdHlwZSBPSURzIGFuZCBjb252ZXJzaW9uIHN5c3RlbQorIyBUeXBlIHJlZ2lzdHJ5 IC0gbWFwcyBPSUQgdG8gY29udmVydGVyIGZ1bmN0aW9uCitfdHlwZV9jb252ZXJ0ZXJzOiBEaWN0 W2ludCwgQ2FsbGFibGVbW3N0cl0sIEFueV1dID0ge30KK19hcnJheV90b19lbGVtX21hcDogRGlj dFtpbnQsIGludF0gPSB7fQorCisKK2RlZiByZWdpc3Rlcl90eXBlX2luZm8oCisgICAgbmFtZTog c3RyLCBvaWQ6IGludCwgYXJyYXlfb2lkOiBpbnQsIGNvbnZlcnRlcjogQ2FsbGFibGVbW3N0cl0s IEFueV0KKyk6CisgICAgIiIiCisgICAgUmVnaXN0ZXIgYSBQb3N0Z3JlU1FMIHR5cGUgd2l0aCBp dHMgT0lELCBhcnJheSBPSUQsIGFuZCBjb252ZXJzaW9uIGZ1bmN0aW9uLgorCisgICAgVXNhZ2U6 CisgICAgICAgIHJlZ2lzdGVyX3R5cGVfaW5mbygiYm9vbCIsIDE2LCAxMDAwLCBsYW1iZGEgdjog diA9PSAidCIpCisgICAgIiIiCisgICAgX3R5cGVfY29udmVydGVyc1tvaWRdID0gY29udmVydGVy CisgICAgaWYgYXJyYXlfb2lkIGlzIG5vdCBOb25lOgorICAgICAgICBfYXJyYXlfdG9fZWxlbV9t YXBbYXJyYXlfb2lkXSA9IG9pZAorCisKK2RlZiBfcGFyc2VfYXJyYXkodmFsdWU6IHN0ciwgZWxl bV9vaWQ6IGludCk6CisgICAgIiIiUGFyc2UgUG9zdGdyZVNRTCBhcnJheSBzeW50YXggaW50byBu ZXN0ZWQgUHl0aG9uIGxpc3RzLiIiIgorICAgIHN0YWNrOiBsaXN0W2xpc3RdID0gW10KKyAgICBj dXJyZW50X2VsZW1lbnQ6IGxpc3Rbc3RyXSA9IFtdCisgICAgaW5fcXVvdGVzID0gRmFsc2UKKyAg ICB3YXNfcXVvdGVkID0gRmFsc2UKKyAgICBwb3MgPSAwCisKKyAgICB3aGlsZSBwb3MgPCBsZW4o dmFsdWUpOgorICAgICAgICBjaGFyID0gdmFsdWVbcG9zXQorCisgICAgICAgIGlmIGluX3F1b3Rl czoKKyAgICAgICAgICAgIGlmIGNoYXIgPT0gIlxcIjoKKyAgICAgICAgICAgICAgICBuZXh0X2No YXIgPSB2YWx1ZVtwb3MgKyAxXQorICAgICAgICAgICAgICAgIGlmIG5leHRfY2hhciBub3QgaW4g JyJcXCc6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ09u bHkgXFwiIGFuZCBcXFxcIGVzY2FwZXMgYXJlIHN1cHBvcnRlZCcpCisgICAgICAgICAgICAgICAg Y3VycmVudF9lbGVtZW50LmFwcGVuZChuZXh0X2NoYXIpCisgICAgICAgICAgICAgICAgcG9zICs9 IDIKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZWxpZiBjaGFyID09ICci JzoKKyAgICAgICAgICAgICAgICBpbl9xdW90ZXMgPSBGYWxzZQorICAgICAgICAgICAgZWxzZToK KyAgICAgICAgICAgICAgICBjdXJyZW50X2VsZW1lbnQuYXBwZW5kKGNoYXIpCisgICAgICAgIGVs aWYgY2hhciA9PSAnIic6CisgICAgICAgICAgICBpbl9xdW90ZXMgPSBUcnVlCisgICAgICAgICAg ICB3YXNfcXVvdGVkID0gVHJ1ZQorICAgICAgICBlbGlmIGNoYXIgPT0gInsiOgorICAgICAgICAg ICAgc3RhY2suYXBwZW5kKFtdKQorICAgICAgICBlbGlmIGNoYXIgaW4gIix9IjoKKyAgICAgICAg ICAgIGlmIGN1cnJlbnRfZWxlbWVudCBvciB3YXNfcXVvdGVkOgorICAgICAgICAgICAgICAgIGVs ZW0gPSAiIi5qb2luKGN1cnJlbnRfZWxlbWVudCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgd2Fz X3F1b3RlZCBhbmQgZWxlbSA9PSAiTlVMTCI6CisgICAgICAgICAgICAgICAgICAgIHN0YWNrWy0x XS5hcHBlbmQoTm9uZSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAg ICBzdGFja1stMV0uYXBwZW5kKF9jb252ZXJ0X3BnX3ZhbHVlKGVsZW0sIGVsZW1fb2lkKSkKKyAg ICAgICAgICAgICAgICBjdXJyZW50X2VsZW1lbnQgPSBbXQorICAgICAgICAgICAgICAgIHdhc19x dW90ZWQgPSBGYWxzZQorICAgICAgICAgICAgaWYgY2hhciA9PSAifSI6CisgICAgICAgICAgICAg ICAgY29tcGxldGVkID0gc3RhY2sucG9wKCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc3RhY2s6 CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0ZWQKKyAgICAgICAgICAgICAgICBz dGFja1stMV0uYXBwZW5kKGNvbXBsZXRlZCkKKyAgICAgICAgZWxpZiBjaGFyICE9ICIgIjoKKyAg ICAgICAgICAgIGN1cnJlbnRfZWxlbWVudC5hcHBlbmQoY2hhcikKKyAgICAgICAgcG9zICs9IDEK KworICAgIHJhaXNlIFZhbHVlRXJyb3IoZiJNYWxmb3JtZWQgYXJyYXkgbGl0ZXJhbDoge3ZhbHVl fSIpCisKKworIyBSZWdpc3RlciBzdGFuZGFyZCBQb3N0Z3JlU1FMIHR5cGVzIHRoYXQgd2UnbGwg bGlrZWx5IGVuY291bnRlciBpbiB0ZXN0cworcmVnaXN0ZXJfdHlwZV9pbmZvKCJib29sIiwgMTYs IDEwMDAsIGxhbWJkYSB2OiB2ID09ICJ0IikKK3JlZ2lzdGVyX3R5cGVfaW5mbygiaW50MiIsIDIx LCAxMDA1LCBpbnQpCityZWdpc3Rlcl90eXBlX2luZm8oImludDQiLCAyMywgMTAwNywgaW50KQor cmVnaXN0ZXJfdHlwZV9pbmZvKCJpbnQ4IiwgMjAsIDEwMTYsIGludCkKK3JlZ2lzdGVyX3R5cGVf aW5mbygiZmxvYXQ0IiwgNzAwLCAxMDIxLCBmbG9hdCkKK3JlZ2lzdGVyX3R5cGVfaW5mbygiZmxv YXQ4IiwgNzAxLCAxMDIyLCBmbG9hdCkKK3JlZ2lzdGVyX3R5cGVfaW5mbygibnVtZXJpYyIsIDE3 MDAsIDEyMzEsIGRlY2ltYWwuRGVjaW1hbCkKK3JlZ2lzdGVyX3R5cGVfaW5mbygidGV4dCIsIDI1 LCAxMDA5LCBzdHIpCityZWdpc3Rlcl90eXBlX2luZm8oInZhcmNoYXIiLCAxMDQzLCAxMDE1LCBz dHIpCityZWdpc3Rlcl90eXBlX2luZm8oImRhdGUiLCAxMDgyLCAxMTgyLCBkYXRldGltZS5kYXRl LmZyb21pc29mb3JtYXQpCityZWdpc3Rlcl90eXBlX2luZm8oInRpbWUiLCAxMDgzLCAxMTgzLCBk YXRldGltZS50aW1lLmZyb21pc29mb3JtYXQpCityZWdpc3Rlcl90eXBlX2luZm8oInRpbWVzdGFt cCIsIDExMTQsIDExMTUsIGRhdGV0aW1lLmRhdGV0aW1lLmZyb21pc29mb3JtYXQpCityZWdpc3Rl cl90eXBlX2luZm8oInRpbWVzdGFtcHR6IiwgMTE4NCwgMTE4NSwgZGF0ZXRpbWUuZGF0ZXRpbWUu ZnJvbWlzb2Zvcm1hdCkKK3JlZ2lzdGVyX3R5cGVfaW5mbygidXVpZCIsIDI5NTAsIDI5NTEsIHV1 aWQuVVVJRCkKK3JlZ2lzdGVyX3R5cGVfaW5mbygianNvbiIsIDExNCwgMTk5LCBqc29uLmxvYWRz KQorcmVnaXN0ZXJfdHlwZV9pbmZvKCJqc29uYiIsIDM4MDIsIDM4MDcsIGpzb24ubG9hZHMpCisK KworZGVmIF9jb252ZXJ0X3BnX3ZhbHVlKHZhbHVlOiBzdHIsIHR5cGVfb2lkOiBpbnQpIC0+IEFu eToKKyAgICAiIiIKKyAgICBDb252ZXJ0IFBvc3RncmVTUUwgc3RyaW5nIHZhbHVlIHRvIGFwcHJv cHJpYXRlIFB5dGhvbiB0eXBlIGJhc2VkIG9uIE9JRC4KKyAgICBVc2VzIHRoZSByZWdpc3RlcmVk IHR5cGUgY29udmVydGVycyBmcm9tIHJlZ2lzdGVyX3R5cGVfaW5mbygpLgorICAgICIiIgorICAg ICMgQ2hlY2sgaWYgaXQncyBhbiBhcnJheSB0eXBlCisgICAgaWYgdHlwZV9vaWQgaW4gX2FycmF5 X3RvX2VsZW1fbWFwOgorICAgICAgICBlbGVtX29pZCA9IF9hcnJheV90b19lbGVtX21hcFt0eXBl X29pZF0KKyAgICAgICAgcmV0dXJuIF9wYXJzZV9hcnJheSh2YWx1ZSwgZWxlbV9vaWQpCisKKyAg ICAjIFVzZSByZWdpc3RlcmVkIGNvbnZlcnRlciBpZiBhdmFpbGFibGUKKyAgICBjb252ZXJ0ZXIg PSBfdHlwZV9jb252ZXJ0ZXJzLmdldCh0eXBlX29pZCkKKyAgICBpZiBjb252ZXJ0ZXI6CisgICAg ICAgIHJldHVybiBjb252ZXJ0ZXIodmFsdWUpCisKKyAgICAjIFVua25vd24gdHlwZXMgLSByZXR1 cm4gYXMgc3RyaW5nCisgICAgcmV0dXJuIHZhbHVlCisKKworZGVmIHNpbXBsaWZ5X3F1ZXJ5X3Jl c3VsdHMocmVzdWx0cykgLT4gQW55OgorICAgICIiIgorICAgIFNpbXBsaWZ5IHRoZSByZXN1bHRz IG9mIGEgcXVlcnkgc28gdGhhdCB0aGUgY2FsbGVyIGRvZXNuJ3QgaGF2ZSB0byB1bnBhY2sKKyAg ICBsaXN0cyBhbmQgdHVwbGVzIG9mIGxlbmd0aCAxLgorICAgICIiIgorICAgIGlmIGxlbihyZXN1 bHRzKSA9PSAxOgorICAgICAgICByb3cgPSByZXN1bHRzWzBdCisgICAgICAgIGlmIGxlbihyb3cp ID09IDE6CisgICAgICAgICAgICAjIElmIHRoZXJlJ3Mgb25seSBhIHNpbmdsZSBjZWxsLCBqdXN0 IHJldHVybiB0aGUgdmFsdWUKKyAgICAgICAgICAgIHJldHVybiByb3dbMF0KKyAgICAgICAgIyBJ ZiB0aGVyZSdzIG9ubHkgYSBzaW5nbGUgcm93LCBqdXN0IHJldHVybiB0aGF0IHJvdworICAgICAg ICByZXR1cm4gcm93CisKKyAgICBpZiBsZW4ocmVzdWx0cykgIT0gMCBhbmQgbGVuKHJlc3VsdHNb MF0pID09IDE6CisgICAgICAgICMgSWYgdGhlcmUncyBvbmx5IGEgc2luZ2xlIGNvbHVtbiwgcmV0 dXJuIGFuIGFycmF5IG9mIHZhbHVlcworICAgICAgICByZXR1cm4gW3Jvd1swXSBmb3Igcm93IGlu IHJlc3VsdHNdCisKKyAgICAjIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSByb3dzIGFuZCBjb2x1bW5z LCByZXR1cm4gdGhlIHJlc3VsdHMgYXMgaXMKKyAgICByZXR1cm4gcmVzdWx0cworCisKK2NsYXNz IFBHcmVzdWx0KGNvbnRleHRsaWIuQWJzdHJhY3RDb250ZXh0TWFuYWdlcik6CisgICAgIiIiV3Jh cHMgYSByYXcgX1BHcmVzdWx0X3Agd2l0aCBhIG1vcmUgZnJpZW5kbHkgaW50ZXJmYWNlLiIiIgor CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxpYjogY3R5cGVzLkNETEwsIHJlczogX1BHcmVzdWx0 X3ApOgorICAgICAgICBzZWxmLl9saWIgPSBsaWIKKyAgICAgICAgc2VsZi5fcmVzID0gcmVzCisK KyAgICBkZWYgX19leGl0X18oc2VsZiwgKmV4Yyk6CisgICAgICAgIHNlbGYuX2xpYi5QUWNsZWFy KHNlbGYuX3JlcykKKyAgICAgICAgc2VsZi5fcmVzID0gTm9uZQorCisgICAgZGVmIHN0YXR1cyhz ZWxmKSAtPiBFeGVjU3RhdHVzOgorICAgICAgICByZXR1cm4gRXhlY1N0YXR1cyhzZWxmLl9saWIu UFFyZXN1bHRTdGF0dXMoc2VsZi5fcmVzKSkKKworICAgIGRlZiBlcnJvcl9tZXNzYWdlKHNlbGYp OgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBlcnJvciBtZXNzYWdlIGFzc29jaWF0ZWQgd2l0aCB0 aGlzIHJlc3VsdC4iIiIKKyAgICAgICAgbXNnID0gc2VsZi5fbGliLlBRcmVzdWx0RXJyb3JNZXNz YWdlKHNlbGYuX3JlcykKKyAgICAgICAgcmV0dXJuIG1zZy5kZWNvZGUoKSBpZiBtc2cgZWxzZSAi IgorCisgICAgZGVmIF9nZXRfZXJyb3JfZmllbGQoc2VsZiwgZmllbGQ6IERpYWdGaWVsZCkgLT4g T3B0aW9uYWxbc3RyXToKKyAgICAgICAgIiIiR2V0IGFuIGVycm9yIGZpZWxkIGZyb20gdGhlIHJl c3VsdCB1c2luZyBQUXJlc3VsdEVycm9yRmllbGQuIiIiCisgICAgICAgIHZhbCA9IHNlbGYuX2xp Yi5QUXJlc3VsdEVycm9yRmllbGQoc2VsZi5fcmVzLCBpbnQoZmllbGQpKQorICAgICAgICByZXR1 cm4gdmFsLmRlY29kZSgpIGlmIHZhbCBlbHNlIE5vbmUKKworICAgIGRlZiByYWlzZV9lcnJvcihz ZWxmKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgUmFpc2VzIExpYnBxRXJyb3Igd2l0 aCBkaWFnbm9zdGljIGluZm9ybWF0aW9uIGZyb20gdGhlIHJlc3VsdC4KKyAgICAgICAgIiIiCisg ICAgICAgIGlmIG5vdCBzZWxmLl9yZXM6CisgICAgICAgICAgICByYWlzZSBMaWJwcUVycm9yKCJx dWVyeSBmYWlsZWQ6IG91dCBvZiBtZW1vcnkgb3IgY29ubmVjdGlvbiBsb3N0IikKKworICAgICAg ICBzcWxzdGF0ZSA9IHNlbGYuX2dldF9lcnJvcl9maWVsZChEaWFnRmllbGQuU1FMU1RBVEUpCisg ICAgICAgIHByaW1hcnkgPSBzZWxmLl9nZXRfZXJyb3JfZmllbGQoRGlhZ0ZpZWxkLk1FU1NBR0Vf UFJJTUFSWSkKKyAgICAgICAgZGV0YWlsID0gc2VsZi5fZ2V0X2Vycm9yX2ZpZWxkKERpYWdGaWVs ZC5NRVNTQUdFX0RFVEFJTCkKKyAgICAgICAgaGludCA9IHNlbGYuX2dldF9lcnJvcl9maWVsZChE aWFnRmllbGQuTUVTU0FHRV9ISU5UKQorICAgICAgICBzZXZlcml0eSA9IHNlbGYuX2dldF9lcnJv cl9maWVsZChEaWFnRmllbGQuU0VWRVJJVFkpCisgICAgICAgIHNjaGVtYV9uYW1lID0gc2VsZi5f Z2V0X2Vycm9yX2ZpZWxkKERpYWdGaWVsZC5TQ0hFTUFfTkFNRSkKKyAgICAgICAgdGFibGVfbmFt ZSA9IHNlbGYuX2dldF9lcnJvcl9maWVsZChEaWFnRmllbGQuVEFCTEVfTkFNRSkKKyAgICAgICAg Y29sdW1uX25hbWUgPSBzZWxmLl9nZXRfZXJyb3JfZmllbGQoRGlhZ0ZpZWxkLkNPTFVNTl9OQU1F KQorICAgICAgICBkYXRhdHlwZV9uYW1lID0gc2VsZi5fZ2V0X2Vycm9yX2ZpZWxkKERpYWdGaWVs ZC5EQVRBVFlQRV9OQU1FKQorICAgICAgICBjb25zdHJhaW50X25hbWUgPSBzZWxmLl9nZXRfZXJy b3JfZmllbGQoRGlhZ0ZpZWxkLkNPTlNUUkFJTlRfTkFNRSkKKyAgICAgICAgY29udGV4dCA9IHNl bGYuX2dldF9lcnJvcl9maWVsZChEaWFnRmllbGQuQ09OVEVYVCkKKworICAgICAgICBwb3NpdGlv bl9zdHIgPSBzZWxmLl9nZXRfZXJyb3JfZmllbGQoRGlhZ0ZpZWxkLlNUQVRFTUVOVF9QT1NJVElP TikKKyAgICAgICAgcG9zaXRpb24gPSBpbnQocG9zaXRpb25fc3RyKSBpZiBwb3NpdGlvbl9zdHIg ZWxzZSBOb25lCisKKyAgICAgICAgcmFpc2UgTGlicHFFcnJvcigKKyAgICAgICAgICAgIHByaW1h cnkgb3Igc2VsZi5lcnJvcl9tZXNzYWdlKCksCisgICAgICAgICAgICBzcWxzdGF0ZT1zcWxzdGF0 ZSwKKyAgICAgICAgICAgIHNldmVyaXR5PXNldmVyaXR5LAorICAgICAgICAgICAgcHJpbWFyeT1w cmltYXJ5LAorICAgICAgICAgICAgZGV0YWlsPWRldGFpbCwKKyAgICAgICAgICAgIGhpbnQ9aGlu dCwKKyAgICAgICAgICAgIHNjaGVtYV9uYW1lPXNjaGVtYV9uYW1lLAorICAgICAgICAgICAgdGFi bGVfbmFtZT10YWJsZV9uYW1lLAorICAgICAgICAgICAgY29sdW1uX25hbWU9Y29sdW1uX25hbWUs CisgICAgICAgICAgICBkYXRhdHlwZV9uYW1lPWRhdGF0eXBlX25hbWUsCisgICAgICAgICAgICBj b25zdHJhaW50X25hbWU9Y29uc3RyYWludF9uYW1lLAorICAgICAgICAgICAgcG9zaXRpb249cG9z aXRpb24sCisgICAgICAgICAgICBjb250ZXh0PWNvbnRleHQsCisgICAgICAgICkKKworICAgIGRl ZiBmZXRjaF9hbGwoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBGZXRjaCBhbGwgcm93cyBh bmQgY29udmVydCB0byBQeXRob24gdHlwZXMuCisgICAgICAgIFJldHVybnMgYSBsaXN0IG9mIHR1 cGxlcywgd2l0aCB2YWx1ZXMgY29udmVydGVkIGJhc2VkIG9uIHRoZWlyIFBvc3RncmVTUUwgdHlw ZS4KKyAgICAgICAgIiIiCisgICAgICAgIG5yb3dzID0gc2VsZi5fbGliLlBRbnR1cGxlcyhzZWxm Ll9yZXMpCisgICAgICAgIG5jb2xzID0gc2VsZi5fbGliLlBRbmZpZWxkcyhzZWxmLl9yZXMpCisK KyAgICAgICAgIyBHZXQgdHlwZSBPSURzIGZvciBlYWNoIGNvbHVtbgorICAgICAgICB0eXBlX29p ZHMgPSBbc2VsZi5fbGliLlBRZnR5cGUoc2VsZi5fcmVzLCBjb2wpIGZvciBjb2wgaW4gcmFuZ2Uo bmNvbHMpXQorCisgICAgICAgIHJlc3VsdHMgPSBbXQorICAgICAgICBmb3Igcm93IGluIHJhbmdl KG5yb3dzKToKKyAgICAgICAgICAgIHJvd19kYXRhID0gW10KKyAgICAgICAgICAgIGZvciBjb2wg aW4gcmFuZ2UobmNvbHMpOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuX2xpYi5QUWdldGlzbnVs bChzZWxmLl9yZXMsIHJvdywgY29sKToKKyAgICAgICAgICAgICAgICAgICAgcm93X2RhdGEuYXBw ZW5kKE5vbmUpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdmFs dWUgPSBzZWxmLl9saWIuUFFnZXR2YWx1ZShzZWxmLl9yZXMsIHJvdywgY29sKS5kZWNvZGUoKQor ICAgICAgICAgICAgICAgICAgICByb3dfZGF0YS5hcHBlbmQoX2NvbnZlcnRfcGdfdmFsdWUodmFs dWUsIHR5cGVfb2lkc1tjb2xdKSkKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHR1cGxlKHJv d19kYXRhKSkKKworICAgICAgICByZXR1cm4gcmVzdWx0cworCisKK2NsYXNzIFBHY29ubihjb250 ZXh0bGliLkFic3RyYWN0Q29udGV4dE1hbmFnZXIpOgorICAgICIiIgorICAgIFdyYXBzIGEgcmF3 IF9QR2Nvbm5fcCB3aXRoIGEgbW9yZSBmcmllbmRseSBpbnRlcmZhY2UuIFRoaXMgaXMganVzdCBh CisgICAgc3R1YjsgaXQncyBleHBlY3RlZCB0byBncm93LgorICAgICIiIgorCisgICAgZGVmIF9f aW5pdF9fKAorICAgICAgICBzZWxmLAorICAgICAgICBsaWI6IGN0eXBlcy5DRExMLAorICAgICAg ICBoYW5kbGU6IF9QR2Nvbm5fcCwKKyAgICAgICAgc3RhY2s6IGNvbnRleHRsaWIuRXhpdFN0YWNr LAorICAgICk6CisgICAgICAgIHNlbGYuX2xpYiA9IGxpYgorICAgICAgICBzZWxmLl9oYW5kbGUg PSBoYW5kbGUKKyAgICAgICAgc2VsZi5fc3RhY2sgPSBzdGFjaworCisgICAgZGVmIF9fZXhpdF9f KHNlbGYsICpleGMpOgorICAgICAgICBzZWxmLl9saWIuUFFmaW5pc2goc2VsZi5faGFuZGxlKQor ICAgICAgICBzZWxmLl9oYW5kbGUgPSBOb25lCisKKyAgICBkZWYgZXhlYyhzZWxmLCBxdWVyeTog c3RyKToKKyAgICAgICAgIiIiCisgICAgICAgIEV4ZWN1dGVzIGEgcXVlcnkgdmlhIFBRZXhlYygp IGFuZCByZXR1cm5zIGEgUEdyZXN1bHQuCisgICAgICAgICIiIgorICAgICAgICByZXMgPSBzZWxm Ll9saWIuUFFleGVjKHNlbGYuX2hhbmRsZSwgcXVlcnkuZW5jb2RlKCkpCisgICAgICAgIHJldHVy biBzZWxmLl9zdGFjay5lbnRlcl9jb250ZXh0KFBHcmVzdWx0KHNlbGYuX2xpYiwgcmVzKSkKKwor ICAgIGRlZiBzcWwoc2VsZiwgcXVlcnk6IHN0cik6CisgICAgICAgICIiIgorICAgICAgICBFeGVj dXRlcyBhIHF1ZXJ5IGFuZCByYWlzZXMgYW4gZXhjZXB0aW9uIGlmIGl0IGZhaWxzLgorICAgICAg ICBSZXR1cm5zIHRoZSBxdWVyeSByZXN1bHRzIHdpdGggYXV0b21hdGljIHR5cGUgY29udmVyc2lv biBhbmQgc2ltcGxpZmljYXRpb24uCisgICAgICAgIEZvciBjb21tYW5kcyB0aGF0IGRvbid0IHJl dHVybiBkYXRhIChJTlNFUlQsIFVQREFURSwgZXRjLiksIHJldHVybnMgTm9uZS4KKworICAgICAg ICBFeGFtcGxlczoKKyAgICAgICAgLSBTRUxFQ1QgMSAtPiAxCisgICAgICAgIC0gU0VMRUNUIDEs IDIgLT4gKDEsIDIpCisgICAgICAgIC0gU0VMRUNUICogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg MykgLT4gWzEsIDIsIDNdCisgICAgICAgIC0gU0VMRUNUICogRlJPTSAoVkFMVUVTICgxLCAnYScp LCAoMiwgJ2InKSkgdCAtPiBbKDEsICdhJyksICgyLCAnYicpXQorICAgICAgICAtIENSRUFURSBU QUJMRSAuLi4gLT4gTm9uZQorICAgICAgICAtIElOU0VSVCBJTlRPIC4uLiAtPiBOb25lCisgICAg ICAgICIiIgorICAgICAgICByZXMgPSBzZWxmLmV4ZWMocXVlcnkpCisgICAgICAgIHN0YXR1cyA9 IHJlcy5zdGF0dXMoKQorCisgICAgICAgIGlmIHN0YXR1cyA9PSBFeGVjU3RhdHVzLlBHUkVTX0ZB VEFMX0VSUk9SOgorICAgICAgICAgICAgcmVzLnJhaXNlX2Vycm9yKCkKKyAgICAgICAgZWxpZiBz dGF0dXMgPT0gRXhlY1N0YXR1cy5QR1JFU19DT01NQU5EX09LOgorICAgICAgICAgICAgcmV0dXJu IE5vbmUKKyAgICAgICAgZWxpZiBzdGF0dXMgPT0gRXhlY1N0YXR1cy5QR1JFU19UVVBMRVNfT0s6 CisgICAgICAgICAgICByZXN1bHRzID0gcmVzLmZldGNoX2FsbCgpCisgICAgICAgICAgICByZXR1 cm4gc2ltcGxpZnlfcXVlcnlfcmVzdWx0cyhyZXN1bHRzKQorICAgICAgICBlbHNlOgorICAgICAg ICAgICAgcmVzLnJhaXNlX2Vycm9yKCkKKworCitkZWYgY29ubnN0cihvcHRzOiBEaWN0W3N0ciwg QW55XSkgLT4gc3RyOgorICAgICIiIgorICAgIEZsYXR0ZW5zIHRoZSBwcm92aWRlZCBvcHRpb25z IGludG8gYSBsaWJwcSBjb25uZWN0aW9uIHN0cmluZy4gVmFsdWVzCisgICAgYXJlIGNvbnZlcnRl ZCB0byBzdHIgYW5kIHF1b3RlZC9lc2NhcGVkIGFzIG5lY2Vzc2FyeS4KKyAgICAiIiIKKyAgICBz ZXR0aW5ncyA9IFtdCisKKyAgICBmb3IgaywgdiBpbiBvcHRzLml0ZW1zKCk6CisgICAgICAgIHYg PSBzdHIodikKKyAgICAgICAgaWYgbm90IHY6CisgICAgICAgICAgICB2ID0gIicnIgorICAgICAg ICBlbHNlOgorICAgICAgICAgICAgdiA9IHYucmVwbGFjZSgiXFwiLCAiXFxcXCIpCisgICAgICAg ICAgICB2ID0gdi5yZXBsYWNlKCInIiwgIlxcJyIpCisKKyAgICAgICAgICAgIGlmICIgIiBpbiB2 OgorICAgICAgICAgICAgICAgIHYgPSBmIid7dn0nIgorCisgICAgICAgIHNldHRpbmdzLmFwcGVu ZChmIntrfT17dn0iKQorCisgICAgcmV0dXJuICIgIi5qb2luKHNldHRpbmdzKQorCisKK2RlZiBj b25uZWN0KAorICAgIGxpYnBxX2hhbmRsZTogY3R5cGVzLkNETEwsCisgICAgc3RhY2s6IGNvbnRl eHRsaWIuRXhpdFN0YWNrLAorICAgIHJlbWFpbmluZ190aW1lb3V0X2ZuOiBDYWxsYWJsZVtbXSwg ZmxvYXRdLAorICAgICoqb3B0cywKKykgLT4gUEdjb25uOgorICAgICIiIgorICAgIENvbm5lY3Rz IHRvIGEgc2VydmVyLCB1c2luZyB0aGUgZ2l2ZW4gY29ubmVjdGlvbiBvcHRpb25zLCBhbmQKKyAg ICByZXR1cm5zIGEgUEdjb25uIG9iamVjdCB3cmFwcGluZyB0aGUgY29ubmVjdGlvbiBoYW5kbGUu IEEKKyAgICBmYWlsdXJlIHdpbGwgcmFpc2UgTGlicHFFcnJvci4KKworICAgIENvbm5lY3Rpb25z IGhvbm9yIFBHX1RFU1RfVElNRU9VVF9ERUZBVUxUIHVubGVzcyBjb25uZWN0X3RpbWVvdXQgaXMK KyAgICBleHBsaWNpdGx5IG92ZXJyaWRkZW4gaW4gb3B0cy4KKworICAgIEFyZ3M6CisgICAgICAg IGxpYnBxX2hhbmRsZTogY3R5cGVzLkNETEwgaGFuZGxlIHRvIGxpYnBxIGxpYnJhcnkKKyAgICAg ICAgc3RhY2s6IEV4aXRTdGFjayBmb3IgbWFuYWdpbmcgY29ubmVjdGlvbiBjbGVhbnVwCisgICAg ICAgIHJlbWFpbmluZ190aW1lb3V0X2ZuOiBGdW5jdGlvbiB0aGF0IHJldHVybnMgcmVtYWluaW5n IHRpbWVvdXQgaW4gc2Vjb25kcworICAgICAgICAqKm9wdHM6IENvbm5lY3Rpb24gb3B0aW9ucyAo aG9zdCwgcG9ydCwgZGJuYW1lLCBldGMuKQorCisgICAgUmV0dXJuczoKKyAgICAgICAgUEdjb25u OiBDb25uZWN0ZWQgZGF0YWJhc2UgY29ubmVjdGlvbgorCisgICAgUmFpc2VzOgorICAgICAgICBM aWJwcUVycm9yOiBJZiBjb25uZWN0aW9uIGZhaWxzCisgICAgIiIiCisKKyAgICBpZiAiY29ubmVj dF90aW1lb3V0IiBub3QgaW4gb3B0czoKKyAgICAgICAgdCA9IGludChyZW1haW5pbmdfdGltZW91 dF9mbigpKQorICAgICAgICBvcHRzWyJjb25uZWN0X3RpbWVvdXQiXSA9IG1heCh0LCAxKQorCisg ICAgY29ubl9wID0gbGlicHFfaGFuZGxlLlBRY29ubmVjdGRiKGNvbm5zdHIob3B0cykuZW5jb2Rl KCkpCisKKyAgICAjIENoZWNrIGNvbm5lY3Rpb24gc3RhdHVzIGJlZm9yZSBhZGRpbmcgdG8gc3Rh Y2sKKyAgICBpZiBsaWJwcV9oYW5kbGUuUFFzdGF0dXMoY29ubl9wKSAhPSBDb25uZWN0aW9uU3Rh dHVzLkNPTk5FQ1RJT05fT0s6CisgICAgICAgIGVycm9yX21zZyA9IGxpYnBxX2hhbmRsZS5QUWVy cm9yTWVzc2FnZShjb25uX3ApLmRlY29kZSgpCisgICAgICAgICMgTWFudWFsbHkgY2xvc2UgdGhl IGZhaWxlZCBjb25uZWN0aW9uCisgICAgICAgIGxpYnBxX2hhbmRsZS5QUWZpbmlzaChjb25uX3Ap CisgICAgICAgIHJhaXNlIExpYnBxRXJyb3IoZXJyb3JfbXNnKQorCisgICAgIyBDb25uZWN0aW9u IHN1Y2NlZWRlZCAtIGFkZCB0byBzdGFjayBmb3IgY2xlYW51cAorICAgIGNvbm4gPSBzdGFjay5l bnRlcl9jb250ZXh0KFBHY29ubihsaWJwcV9oYW5kbGUsIGNvbm5fcCwgc3RhY2s9c3RhY2spKQor ICAgIHJldHVybiBjb25uCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9weXRlc3QvbGlicHEvZXJyb3Jz LnB5IGIvc3JjL3Rlc3QvcHl0ZXN0L2xpYnBxL2Vycm9ycy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uYzY2NWI2NjNlMjIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv dGVzdC9weXRlc3QvbGlicHEvZXJyb3JzLnB5CkBAIC0wLDAgKzEsNjIgQEAKKyMgQ29weXJpZ2h0 IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisiIiIKK0V4 Y2VwdGlvbiBjbGFzc2VzIGZvciBsaWJwcSBlcnJvcnMuCisiIiIKKworZnJvbSB0eXBpbmcgaW1w b3J0IE9wdGlvbmFsCisKKworY2xhc3MgTGlicHFFcnJvcihSdW50aW1lRXJyb3IpOgorICAgICIi IkV4Y2VwdGlvbiBmb3IgbGlicHEgZXJyb3JzIHdpdGggUG9zdGdyZVNRTCBkaWFnbm9zdGljIGZp ZWxkcy4iIiIKKworICAgIHNxbHN0YXRlOiBPcHRpb25hbFtzdHJdCisgICAgc2V2ZXJpdHk6IE9w dGlvbmFsW3N0cl0KKyAgICBwcmltYXJ5OiBPcHRpb25hbFtzdHJdCisgICAgZGV0YWlsOiBPcHRp b25hbFtzdHJdCisgICAgaGludDogT3B0aW9uYWxbc3RyXQorICAgIHNjaGVtYV9uYW1lOiBPcHRp b25hbFtzdHJdCisgICAgdGFibGVfbmFtZTogT3B0aW9uYWxbc3RyXQorICAgIGNvbHVtbl9uYW1l OiBPcHRpb25hbFtzdHJdCisgICAgZGF0YXR5cGVfbmFtZTogT3B0aW9uYWxbc3RyXQorICAgIGNv bnN0cmFpbnRfbmFtZTogT3B0aW9uYWxbc3RyXQorICAgIHBvc2l0aW9uOiBPcHRpb25hbFtpbnRd CisgICAgY29udGV4dDogT3B0aW9uYWxbc3RyXQorCisgICAgZGVmIF9faW5pdF9fKAorICAgICAg ICBzZWxmLAorICAgICAgICBtZXNzYWdlOiBzdHIsCisgICAgICAgICosCisgICAgICAgIHNxbHN0 YXRlOiBPcHRpb25hbFtzdHJdID0gTm9uZSwKKyAgICAgICAgc2V2ZXJpdHk6IE9wdGlvbmFsW3N0 cl0gPSBOb25lLAorICAgICAgICBwcmltYXJ5OiBPcHRpb25hbFtzdHJdID0gTm9uZSwKKyAgICAg ICAgZGV0YWlsOiBPcHRpb25hbFtzdHJdID0gTm9uZSwKKyAgICAgICAgaGludDogT3B0aW9uYWxb c3RyXSA9IE5vbmUsCisgICAgICAgIHNjaGVtYV9uYW1lOiBPcHRpb25hbFtzdHJdID0gTm9uZSwK KyAgICAgICAgdGFibGVfbmFtZTogT3B0aW9uYWxbc3RyXSA9IE5vbmUsCisgICAgICAgIGNvbHVt bl9uYW1lOiBPcHRpb25hbFtzdHJdID0gTm9uZSwKKyAgICAgICAgZGF0YXR5cGVfbmFtZTogT3B0 aW9uYWxbc3RyXSA9IE5vbmUsCisgICAgICAgIGNvbnN0cmFpbnRfbmFtZTogT3B0aW9uYWxbc3Ry XSA9IE5vbmUsCisgICAgICAgIHBvc2l0aW9uOiBPcHRpb25hbFtpbnRdID0gTm9uZSwKKyAgICAg ICAgY29udGV4dDogT3B0aW9uYWxbc3RyXSA9IE5vbmUsCisgICAgKToKKyAgICAgICAgc3VwZXIo KS5fX2luaXRfXyhtZXNzYWdlKQorICAgICAgICBzZWxmLnNxbHN0YXRlID0gc3Fsc3RhdGUKKyAg ICAgICAgc2VsZi5zZXZlcml0eSA9IHNldmVyaXR5CisgICAgICAgIHNlbGYucHJpbWFyeSA9IHBy aW1hcnkKKyAgICAgICAgc2VsZi5kZXRhaWwgPSBkZXRhaWwKKyAgICAgICAgc2VsZi5oaW50ID0g aGludAorICAgICAgICBzZWxmLnNjaGVtYV9uYW1lID0gc2NoZW1hX25hbWUKKyAgICAgICAgc2Vs Zi50YWJsZV9uYW1lID0gdGFibGVfbmFtZQorICAgICAgICBzZWxmLmNvbHVtbl9uYW1lID0gY29s dW1uX25hbWUKKyAgICAgICAgc2VsZi5kYXRhdHlwZV9uYW1lID0gZGF0YXR5cGVfbmFtZQorICAg ICAgICBzZWxmLmNvbnN0cmFpbnRfbmFtZSA9IGNvbnN0cmFpbnRfbmFtZQorICAgICAgICBzZWxm LnBvc2l0aW9uID0gcG9zaXRpb24KKyAgICAgICAgc2VsZi5jb250ZXh0ID0gY29udGV4dAorCisg ICAgQHByb3BlcnR5CisgICAgZGVmIHNxbHN0YXRlX2NsYXNzKHNlbGYpIC0+IE9wdGlvbmFsW3N0 cl06CisgICAgICAgICIiIlJldHVybnMgdGhlIDItY2hhcmFjdGVyIFNRTFNUQVRFIGNsYXNzLiIi IgorICAgICAgICBpZiBzZWxmLnNxbHN0YXRlIGFuZCBsZW4oc2VsZi5zcWxzdGF0ZSkgPj0gMjoK KyAgICAgICAgICAgIHJldHVybiBzZWxmLnNxbHN0YXRlWzoyXQorICAgICAgICByZXR1cm4gTm9u ZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcHl0ZXN0L21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvcHl0 ZXN0L21lc29uLmJ1aWxkCmluZGV4IGIxZjYwNjFiMzA3Li5iODZiZTkwMWU3YyAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcHl0ZXN0L21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L3B5dGVzdC9tZXNv bi5idWlsZApAQCAtMTAsNiArMTAsMTAgQEAgdGVzdHMgKz0gewogICAnYmQnOiBtZXNvbi5jdXJy ZW50X2J1aWxkX2RpcigpLAogICAncHl0ZXN0JzogewogICAgICd0ZXN0cyc6IFsKKyAgICAgICdw eXQvdGVzdF9lcnJvcnMucHknLAorICAgICAgJ3B5dC90ZXN0X2xpYnBxLnB5JywKKyAgICAgICdw eXQvdGVzdF9tdWx0aV9zZXJ2ZXIucHknLAorICAgICAgJ3B5dC90ZXN0X3F1ZXJ5X2hlbHBlcnMu cHknLAogICAgIF0sCiAgIH0sCiB9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9weXRlc3QvcHlwZy9f X2luaXRfXy5weSBiL3NyYy90ZXN0L3B5dGVzdC9weXBnL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40ZWU5MTI4OWY3MAotLS0gL2Rldi9udWxsCisr KyBiL3NyYy90ZXN0L3B5dGVzdC9weXBnL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsMTAgQEAKKyMg Q29weXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAor Citmcm9tIC5fZW52IGltcG9ydCByZXF1aXJlX3Rlc3RfZXh0cmFzLCBza2lwX3VubGVzc190ZXN0 X2V4dHJhcworZnJvbSAuc2VydmVyIGltcG9ydCBQb3N0Z3Jlc1NlcnZlcgorCitfX2FsbF9fID0g WworICAgICJyZXF1aXJlX3Rlc3RfZXh0cmFzIiwKKyAgICAic2tpcF91bmxlc3NfdGVzdF9leHRy YXMiLAorICAgICJQb3N0Z3Jlc1NlcnZlciIsCitdCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9weXRl c3QvcHlwZy9fZW52LnB5IGIvc3JjL3Rlc3QvcHl0ZXN0L3B5cGcvX2Vudi5weQpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzQwODdiZTMyMTIKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvdGVzdC9weXRlc3QvcHlwZy9fZW52LnB5CkBAIC0wLDAgKzEsNzIgQEAKKyMgQ29w eXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCitp bXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCisKK2ltcG9ydCBweXRlc3QKKworbG9nZ2VyID0gbG9n Z2luZy5nZXRMb2dnZXIoX19uYW1lX18pCisKKworZGVmIF90ZXN0X2V4dHJhX3NraXBfcmVhc29u KCprZXlzOiBzdHIpIC0+IHN0cjoKKyAgICByZXR1cm4gInJlcXVpcmVzIHt9IHRvIGJlIHNldCBp biBQR19URVNUX0VYVFJBIi5mb3JtYXQoIiwgIi5qb2luKGtleXMpKQorCisKK2RlZiBfaGFzX3Rl c3RfZXh0cmEoa2V5OiBzdHIpIC0+IGJvb2w6CisgICAgIiIiCisgICAgUmV0dXJucyBUcnVlIGlm IHRoZSBQR19URVNUX0VYVFJBIGVudmlyb25tZW50IHZhcmlhYmxlIGNvbnRhaW5zIHRoZSBnaXZl bgorICAgIGtleS4KKyAgICAiIiIKKyAgICBleHRyYSA9IG9zLmdldGVudigiUEdfVEVTVF9FWFRS QSIsICIiKQorICAgIHJldHVybiBrZXkgaW4gZXh0cmEuc3BsaXQoKQorCisKK2RlZiByZXF1aXJl X3Rlc3RfZXh0cmFzKCprZXlzOiBzdHIpOgorICAgICIiIgorICAgIEEgY29udmVuaWVuY2UgYW5u b3RhdGlvbiB3aGljaCB3aWxsIHNraXAgdGVzdHMgaWYgYWxsIG9mIHRoZSByZXF1aXJlZCBrZXlz CisgICAgYXJlIG5vdCBwcmVzZW50IGluIFBHX1RFU1RfRVhUUkEuCisKKyAgICBUbyBza2lwIGEg cGFydGljdWxhciB0ZXN0IGZ1bmN0aW9uIG9yIGNsYXNzOgorCisgICAgICAgIEBweXBnLnJlcXVp cmVfdGVzdF9leHRyYXMoImxkYXAiKQorICAgICAgICBkZWYgdGVzdF9zb21lX2xkYXBfZmVhdHVy ZSgpOgorICAgICAgICAgICAgLi4uCisKKyAgICBUbyBza2lwIGFuIGVudGlyZSBtb2R1bGU6CisK KyAgICAgICAgcHl0ZXN0bWFyayA9IHB5cGcucmVxdWlyZV90ZXN0X2V4dHJhKCJzc2wiLCAia2Vy YmVyb3MiKQorICAgICIiIgorICAgIHJldHVybiBweXRlc3QubWFyay5za2lwaWYoCisgICAgICAg IG5vdCBhbGwoW19oYXNfdGVzdF9leHRyYShrKSBmb3IgayBpbiBrZXlzXSksCisgICAgICAgIHJl YXNvbj1fdGVzdF9leHRyYV9za2lwX3JlYXNvbigqa2V5cyksCisgICAgKQorCisKK2RlZiBza2lw X3VubGVzc190ZXN0X2V4dHJhcygqa2V5czogc3RyKToKKyAgICAiIiIKKyAgICBTa2lwIHRoZSBj dXJyZW50IHRlc3QvZml4dHVyZSBpZiBhbnkgb2YgdGhlIHJlcXVpcmVkIGtleXMgYXJlIG5vdCBw cmVzZW50CisgICAgaW4gUEdfVEVTVF9FWFRSQS4gVXNlIHRoaXMgaW5zaWRlIGZpeHR1cmVzIHdo ZXJlIGRlY29yYXRvcnMgY2FuJ3QgYmUgdXNlZC4KKworICAgICAgICBAcHl0ZXN0LmZpeHR1cmUK KyAgICAgICAgZGVmIG15X2ZpeHR1cmUoKToKKyAgICAgICAgICAgIHNraXBfdW5sZXNzX3Rlc3Rf ZXh0cmFzKCJsZGFwIikKKyAgICAgICAgICAgIC4uLgorICAgICIiIgorICAgIGlmIG5vdCBhbGwo W19oYXNfdGVzdF9leHRyYShrKSBmb3IgayBpbiBrZXlzXSk6CisgICAgICAgIHB5dGVzdC5za2lw KF90ZXN0X2V4dHJhX3NraXBfcmVhc29uKCprZXlzKSkKKworCitkZWYgdGVzdF90aW1lb3V0X2Rl ZmF1bHQoKSAtPiBpbnQ6CisgICAgIiIiCisgICAgUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIFBH X1RFU1RfVElNRU9VVF9ERUZBVUxUIGVudmlyb25tZW50IHZhcmlhYmxlLCBpbgorICAgIHNlY29u ZHMsIG9yIDE4MCBpZiBvbmUgd2FzIG5vdCBwcm92aWRlZC4KKyAgICAiIiIKKyAgICBkZWZhdWx0 ID0gb3MuZ2V0ZW52KCJQR19URVNUX1RJTUVPVVRfREVGQVVMVCIsICIiKQorICAgIGlmIG5vdCBk ZWZhdWx0OgorICAgICAgICByZXR1cm4gMTgwCisKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBp bnQoZGVmYXVsdCkKKyAgICBleGNlcHQgVmFsdWVFcnJvciBhcyB2OgorICAgICAgICBsb2dnZXIu d2FybmluZygiUEdfVEVTVF9USU1FT1VUX0RFRkFVTFQgY291bGQgbm90IGJlIHBhcnNlZDogIiAr IHN0cih2KSkKKyAgICAgICAgcmV0dXJuIDE4MApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcHl0ZXN0 L3B5cGcvZml4dHVyZXMucHkgYi9zcmMvdGVzdC9weXRlc3QvcHlwZy9maXh0dXJlcy5weQpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOGMwY2I2MGRhYTUKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvdGVzdC9weXRlc3QvcHlwZy9maXh0dXJlcy5weQpAQCAtMCwwICsxLDMz NSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50 IEdyb3VwCisKK2ltcG9ydCBvcworaW1wb3J0IGNvbnRleHRsaWIKK2ltcG9ydCBwYXRobGliCitp bXBvcnQgdGltZQorZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKKworaW1wb3J0IHB5dGVzdAorCitm cm9tIC5fZW52IGltcG9ydCB0ZXN0X3RpbWVvdXRfZGVmYXVsdAorZnJvbSAudXRpbCBpbXBvcnQg Y2FwdHVyZQorZnJvbSAuc2VydmVyIGltcG9ydCBQb3N0Z3Jlc1NlcnZlcgorCitmcm9tIGxpYnBx IGltcG9ydCBsb2FkX2xpYnBxX2hhbmRsZSwgY29ubmVjdCBhcyBsaWJwcV9jb25uZWN0CisKKwor IyBTdGFzaCBrZXkgZm9yIHRyYWNraW5nIHNlcnZlcnMgZm9yIGxvZyByZXBvcnRpbmcuCitfc2Vy dmVyc19rZXkgPSBweXRlc3QuU3Rhc2hLZXlbTGlzdFtQb3N0Z3Jlc1NlcnZlcl1dKCkKKworCitk ZWYgX3JlY29yZF9zZXJ2ZXJfZm9yX2xvZ19yZXBvcnRpbmcocmVxdWVzdCwgc2VydmVyKToKKyAg ICAiIiJSZWNvcmQgYSBzZXJ2ZXIgZm9yIGxvZyByZXBvcnRpbmcgb24gdGVzdCBmYWlsdXJlLiIi IgorICAgIGlmIF9zZXJ2ZXJzX2tleSBub3QgaW4gcmVxdWVzdC5ub2RlLnN0YXNoOgorICAgICAg ICByZXF1ZXN0Lm5vZGUuc3Rhc2hbX3NlcnZlcnNfa2V5XSA9IFtdCisgICAgcmVxdWVzdC5ub2Rl LnN0YXNoW19zZXJ2ZXJzX2tleV0uYXBwZW5kKHNlcnZlcikKKworCitAcHl0ZXN0LmZpeHR1cmUK K2RlZiByZW1haW5pbmdfdGltZW91dCgpOgorICAgICIiIgorICAgIFRoaXMgZml4dHVyZSBwcm92 aWRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBob3cgbXVjaCBvZiB0aGUKKyAgICBQR19URVNU X1RJTUVPVVRfREVGQVVMVCByZW1haW5zIGZvciB0aGUgY3VycmVudCB0ZXN0LCBpbiBmcmFjdGlv bmFsIHNlY29uZHMuCisgICAgVGhpcyB2YWx1ZSBpcyBuZXZlciBsZXNzIHRoYW4gemVyby4KKwor ICAgIFRoaXMgZml4dHVyZSBpcyBwZXItdGVzdCwgc28gdGhlIGRlYWRsaW5lIGlzIGFsc28gcmVz ZXQgb24gYSBwZXItdGVzdCBiYXNpcy4KKyAgICAiIiIKKyAgICBub3cgPSB0aW1lLm1vbm90b25p YygpCisgICAgZGVhZGxpbmUgPSBub3cgKyB0ZXN0X3RpbWVvdXRfZGVmYXVsdCgpCisKKyAgICBy ZXR1cm4gbGFtYmRhOiBtYXgoZGVhZGxpbmUgLSB0aW1lLm1vbm90b25pYygpLCAwKQorCisKK0Bw eXRlc3QuZml4dHVyZShzY29wZT0ibW9kdWxlIikKK2RlZiByZW1haW5pbmdfdGltZW91dF9tb2R1 bGUoKToKKyAgICAiIiIKKyAgICBTYW1lIGFzIHJlbWFpbmluZ190aW1lb3V0LCBidXQgdGhlIGRl YWRsaW5lIGlzIHNldCBvbmNlIHBlciBtb2R1bGUuCisKKyAgICBUaGlzIGZpeHR1cmUgaXMgcGVy LW1vZHVsZSwgd2hpY2ggbWVhbnMgaXQncyBnZW5lcmFsbHkgb25seSByZWFsbHkgdXNlZnVsCisg ICAgZm9yIGNvbmZpZ3VyaW5nIHRpbWVvdXRzIG9mIG9wZXJhdGlvbnMgdGhhdCBoYXBwZW4gaW4g dGhlIHNldHVwIHBoYXNlIG9mCisgICAgYW5vdGhlciBtb2R1bGUgZml4dHVyZXMuIElmIHlvdSB1 c2UgaXQgaW4gYSB0ZXN0IGl0IHdvdWxkIG1lYW4gdGhhdCBlYWNoCisgICAgc3Vic2VxdWVudCB0 ZXN0IGluIHRoZSBtb2R1bGUgZ2V0cyBhIHJlZHVjZWQgdGltZW91dC4KKyAgICAiIiIKKyAgICBu b3cgPSB0aW1lLm1vbm90b25pYygpCisgICAgZGVhZGxpbmUgPSBub3cgKyB0ZXN0X3RpbWVvdXRf ZGVmYXVsdCgpCisKKyAgICByZXR1cm4gbGFtYmRhOiBtYXgoZGVhZGxpbmUgLSB0aW1lLm1vbm90 b25pYygpLCAwKQorCisKK0BweXRlc3QuZml4dHVyZShzY29wZT0ic2Vzc2lvbiIpCitkZWYgbGli cHFfaGFuZGxlKGxpYmRpciwgYmluZGlyKToKKyAgICAiIiIKKyAgICBMb2FkcyBhIGN0eXBlcyBo YW5kbGUgZm9yIGxpYnBxLiBTb21lIGNvbW1vbiBmdW5jdGlvbiBwcm90b3R5cGVzIGFyZQorICAg IGluaXRpYWxpemVkIGZvciBnZW5lcmFsIHVzZS4KKyAgICAiIiIKKyAgICB0cnk6CisgICAgICAg IHJldHVybiBsb2FkX2xpYnBxX2hhbmRsZShsaWJkaXIsIGJpbmRpcikKKyAgICBleGNlcHQgT1NF cnJvciBhcyBlOgorICAgICAgICBpZiAid3JvbmcgRUxGIGNsYXNzIiBpbiBzdHIoZSk6CisgICAg ICAgICAgICAjIFRoaXMgaGFwcGVucyBpbiBDSSB3aGVuIHRyeWluZyB0byBsZWFkIGEgMzItYml0 IGxpYnBxIGxpYnJhcnkKKyAgICAgICAgICAgICMgd2l0aCBhIDY0LWJpdCBQeXRob24KKyAgICAg ICAgICAgIHB5dGVzdC5za2lwKCJsaWJwcSBhcmNoaXRlY3R1cmUgZG9lcyBub3QgbWF0Y2ggUHl0 aG9uIGludGVycHJldGVyIikKKyAgICAgICAgcmFpc2UKKworCitAcHl0ZXN0LmZpeHR1cmUKK2Rl ZiBjb25uZWN0KGxpYnBxX2hhbmRsZSwgcmVtYWluaW5nX3RpbWVvdXQpOgorICAgICIiIgorICAg IFJldHVybnMgYSBmdW5jdGlvbiB0byBjb25uZWN0IHRvIFBvc3RncmVTUUwgdmlhIGxpYnBxLgor CisgICAgVGhlIHJldHVybmVkIGZ1bmN0aW9uIGFjY2VwdHMgY29ubmVjdGlvbiBvcHRpb25zIGFz IGtleXdvcmQgYXJndW1lbnRzCisgICAgKGhvc3QsIHBvcnQsIGRibmFtZSwgZXRjLikgYW5kIHJl dHVybnMgYSBQR2Nvbm4gb2JqZWN0LiBDb25uZWN0aW9ucworICAgIGFyZSBhdXRvbWF0aWNhbGx5 IGNsZWFuZWQgdXAgYXQgdGhlIGVuZCBvZiB0aGUgdGVzdC4KKworICAgIEV4YW1wbGU6CisgICAg ICAgIGNvbm4gPSBjb25uZWN0KGhvc3Q9J2xvY2FsaG9zdCcsIHBvcnQ9NTQzMiwgZGJuYW1lPSdw b3N0Z3JlcycpCisgICAgICAgIHJlc3VsdCA9IGNvbm4uc3FsKCJTRUxFQ1QgMSIpCisgICAgIiIi CisgICAgd2l0aCBjb250ZXh0bGliLkV4aXRTdGFjaygpIGFzIHN0YWNrOgorCisgICAgICAgIGRl ZiBfY29ubmVjdCgqKm9wdHMpOgorICAgICAgICAgICAgcmV0dXJuIGxpYnBxX2Nvbm5lY3QobGli cHFfaGFuZGxlLCBzdGFjaywgcmVtYWluaW5nX3RpbWVvdXQsICoqb3B0cykKKworICAgICAgICB5 aWVsZCBfY29ubmVjdAorCisKK0BweXRlc3QuZml4dHVyZShzY29wZT0ic2Vzc2lvbiIpCitkZWYg cGdfY29uZmlnKCk6CisgICAgIiIiCisgICAgUmV0dXJucyB0aGUgcGF0aCB0byBwZ19jb25maWcu IFVzZXMgUEdfQ09ORklHIGVudmlyb25tZW50IHZhcmlhYmxlIGlmIHNldCwKKyAgICBvdGhlcndp c2UgdXNlcyAncGdfY29uZmlnJyBmcm9tIFBBVEguCisgICAgIiIiCisgICAgcmV0dXJuIG9zLmVu dmlyb24uZ2V0KCJQR19DT05GSUciLCAicGdfY29uZmlnIikKKworCitAcHl0ZXN0LmZpeHR1cmUo c2NvcGU9InNlc3Npb24iKQorZGVmIGJpbmRpcihwZ19jb25maWcpOgorICAgICIiIgorICAgIFJl dHVybnMgdGhlIFBvc3RncmVTUUwgYmluIGRpcmVjdG9yeSB1c2luZyBwZ19jb25maWcgLS1iaW5k aXIuCisgICAgIiIiCisgICAgcmV0dXJuIHBhdGhsaWIuUGF0aChjYXB0dXJlKHBnX2NvbmZpZywg Ii0tYmluZGlyIikpCisKKworQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJzZXNzaW9uIikKK2RlZiBs aWJkaXIocGdfY29uZmlnKToKKyAgICAiIiIKKyAgICBSZXR1cm5zIHRoZSBQb3N0Z3JlU1FMIGxp YiBkaXJlY3RvcnkgdXNpbmcgcGdfY29uZmlnIC0tbGliZGlyLgorICAgICIiIgorICAgIHJldHVy biBwYXRobGliLlBhdGgoY2FwdHVyZShwZ19jb25maWcsICItLWxpYmRpciIpKQorCisKK0BweXRl c3QuZml4dHVyZShzY29wZT0ic2Vzc2lvbiIpCitkZWYgdG1wX2NoZWNrKHRtcF9wYXRoX2ZhY3Rv cnkpIC0+IHBhdGhsaWIuUGF0aDoKKyAgICAiIiIKKyAgICBSZXR1cm5zIHRoZSB0bXBfY2hlY2sg ZGlyZWN0b3J5IHRoYXQgc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSB0ZXN0cy4gSWYKKyAgICBURVNU REFUQURJUiBpcyBwcm92aWRlZCwgdGhhdCB3aWxsIGJlIHVzZWQ7IG90aGVyd2lzZSBhIG5ldyB0 ZW1wb3JhcnkKKyAgICBkaXJlY3RvcnkgaXMgY3JlYXRlZCBpbiB0aGUgcHl0ZXN0IHRlbXAgcm9v dC4KKyAgICAiIiIKKyAgICBkID0gb3MuZ2V0ZW52KCJURVNUREFUQURJUiIpCisgICAgaWYgZDoK KyAgICAgICAgZCA9IHBhdGhsaWIuUGF0aChkKQorICAgIGVsc2U6CisgICAgICAgIGQgPSB0bXBf cGF0aF9mYWN0b3J5Lm1rdGVtcCgidG1wX2NoZWNrIikKKworICAgIHJldHVybiBkCisKKworQHB5 dGVzdC5maXh0dXJlKHNjb3BlPSJzZXNzaW9uIikKK2RlZiBkYXRhZGlyKHRtcF9jaGVjayk6Cisg ICAgIiIiCisgICAgUmV0dXJucyB0aGUgZGF0YSBkaXJlY3RvcnkgdG8gdXNlIGZvciB0aGUgcGcg Zml4dHVyZS4KKyAgICAiIiIKKworICAgIHJldHVybiB0bXBfY2hlY2sgLyAicGdkYXRhIgorCisK K0BweXRlc3QuZml4dHVyZShzY29wZT0ic2Vzc2lvbiIpCitkZWYgc29ja2Rpcih0bXBfcGF0aF9m YWN0b3J5KToKKyAgICAiIiIKKyAgICBSZXR1cm5zIHRoZSBkaXJlY3RvcnkgbmFtZSB0byB1c2Ug YXMgdGhlIHNlcnZlcidzIHVuaXhfc29ja2V0X2RpcmVjdG9yaWVzCisgICAgc2V0dGluZy4gTG9j YWwgY2xpZW50IGNvbm5lY3Rpb25zIHVzZSB0aGlzIGFzIHRoZSBQR0hPU1QuCisKKyAgICBBdCB0 aGUgbW9tZW50LCB0aGlzIGlzIGFsd2F5cyBwdXQgdW5kZXIgdGhlIHB5dGVzdCB0ZW1wIHJvb3Qu CisgICAgIiIiCisgICAgcmV0dXJuIHRtcF9wYXRoX2ZhY3RvcnkubWt0ZW1wKCJzb2NrZmlsZXMi KQorCisKK0BweXRlc3QuZml4dHVyZShzY29wZT0ic2Vzc2lvbiIpCitkZWYgcGdfc2VydmVyX2ds b2JhbChiaW5kaXIsIGRhdGFkaXIsIHNvY2tkaXIsIGxpYnBxX2hhbmRsZSk6CisgICAgIiIiCisg ICAgU3RhcnRzIGEgcnVubmluZyBQb3N0Z3JlcyBzZXJ2ZXIgbGlzdGVuaW5nIG9uIGxvY2FsaG9z dC4gVGhlIEhCQSBpbml0aWFsbHkKKyAgICBhbGxvd3Mgb25seSBsb2NhbCBVTklYIGNvbm5lY3Rp b25zIGZyb20gdGhlIHNhbWUgdXNlci4KKworICAgIFJldHVybnMgYSBQb3N0Z3Jlc1NlcnZlciBp bnN0YW5jZSB3aXRoIG1ldGhvZHMgZm9yIHNlcnZlciBtYW5hZ2VtZW50LCBjb25maWd1cmF0aW9u LAorICAgIGFuZCBjcmVhdGluZyB0ZXN0IGRhdGFiYXNlcy91c2Vycy4KKyAgICAiIiIKKyAgICBz ZXJ2ZXIgPSBQb3N0Z3Jlc1NlcnZlcigiZGVmYXVsdCIsIGJpbmRpciwgZGF0YWRpciwgc29ja2Rp ciwgbGlicHFfaGFuZGxlKQorCisgICAgeWllbGQgc2VydmVyCisKKyAgICAjIENsZWFudXAgYW55 IHRlc3QgcmVzb3VyY2VzCisgICAgc2VydmVyLmNsZWFudXAoKQorCisgICAgIyBTdG9wIHRoZSBz ZXJ2ZXIKKyAgICBzZXJ2ZXIuc3RvcCgpCisKKworQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJtb2R1 bGUiKQorZGVmIHBnX3NlcnZlcl9tb2R1bGUocGdfc2VydmVyX2dsb2JhbCk6CisgICAgIiIiCisg ICAgTW9kdWxlLXNjb3BlZCBzZXJ2ZXIgY29udGV4dC4gV2hpY2ggY2FuIGJlIHVzZWZ1bCBzbyB0 aGF0IGNlcnRhaW4gc2V0dGluZ3MKKyAgICBjYW4gYmUgb3ZlcnJpZGVuIGF0IHRoZSBtb2R1bGUg bGV2ZWwgdGhyb3VnaCBhdXRvdXNlIGZpeHR1cmVzLiBBbiBleGFtcGxlCisgICAgb2YgdGhpcyBp cyBpbiB0aGUgU1NMIHRlc3RzLgorICAgICIiIgorICAgIHdpdGggcGdfc2VydmVyX2dsb2JhbC5z dWJjb250ZXh0KCkgYXMgczoKKyAgICAgICAgeWllbGQgcworCisKK0BweXRlc3QuZml4dHVyZQor ZGVmIHBnKHJlcXVlc3QsIHBnX3NlcnZlcl9tb2R1bGUsIHJlbWFpbmluZ190aW1lb3V0KToKKyAg ICAiIiIKKyAgICBQZXItdGVzdCBzZXJ2ZXIgY29udGV4dC4gVXNlIHRoaXMgZml4dHVyZSB0byBt YWtlIGNoYW5nZXMgdG8gdGhlIHNlcnZlcgorICAgIHdoaWNoIHdpbGwgYmUgcm9sbGVkIGJhY2sg YXQgdGhlIGVuZCBvZiB0aGUgdGVzdCAoZS5nLiwgY3JlYXRpbmcgdGVzdAorICAgIHVzZXJzL2Rh dGFiYXNlcykuCisKKyAgICBBbHNvIGNhcHR1cmVzIHRoZSBQb3N0Z3JlU1FMIGxvZyBwb3NpdGlv biBhdCB0ZXN0IHN0YXJ0IHNvIHRoYXQgYW55IG5ldworICAgIGxvZyBlbnRyaWVzIGNhbiBiZSBp bmNsdWRlZCBpbiB0aGUgdGVzdCByZXBvcnQgb24gZmFpbHVyZS4KKyAgICAiIiIKKyAgICB3aXRo IHBnX3NlcnZlcl9tb2R1bGUuc3RhcnRfbmV3X3Rlc3QocmVtYWluaW5nX3RpbWVvdXQpIGFzIHM6 CisgICAgICAgIF9yZWNvcmRfc2VydmVyX2Zvcl9sb2dfcmVwb3J0aW5nKHJlcXVlc3QsIHMpCisg ICAgICAgIHlpZWxkIHMKKworCitAcHl0ZXN0LmZpeHR1cmUKK2RlZiBjb25uKHBnKToKKyAgICAi IiIKKyAgICBSZXR1cm5zIGEgY29ubmVjdGVkIFBHY29ubiBpbnN0YW5jZSB0byB0aGUgdGVzdCBQ b3N0Z3JlU1FMIHNlcnZlci4KKyAgICBUaGUgY29ubmVjdGlvbiBpcyBhdXRvbWF0aWNhbGx5IGNs ZWFuZWQgdXAgYXQgdGhlIGVuZCBvZiB0aGUgdGVzdC4KKworICAgIEV4YW1wbGU6CisgICAgICAg IGRlZiB0ZXN0X3NvbWV0aGluZyhjb25uKToKKyAgICAgICAgICAgIHJlc3VsdCA9IGNvbm4uc3Fs KCJTRUxFQ1QgMSIpCisgICAgICAgICAgICBhc3NlcnQgcmVzdWx0ID09IDEKKyAgICAiIiIKKyAg ICByZXR1cm4gcGcuY29ubmVjdCgpCisKKworQHB5dGVzdC5maXh0dXJlCitkZWYgY3JlYXRlX3Bn KHJlcXVlc3QsIGJpbmRpciwgc29ja2RpciwgbGlicHFfaGFuZGxlLCB0bXBfY2hlY2ssIHJlbWFp bmluZ190aW1lb3V0KToKKyAgICAiIiIKKyAgICBGYWN0b3J5IGZpeHR1cmUgdG8gY3JlYXRlIGFk ZGl0aW9uYWwgUG9zdGdyZVNRTCBzZXJ2ZXJzIChwZXItdGVzdCBzY29wZSkuCisKKyAgICBSZXR1 cm5zIGEgZnVuY3Rpb24gdGhhdCBjcmVhdGVzIG5ldyBQb3N0Z3JlU1FMIHNlcnZlciBpbnN0YW5j ZXMuCisgICAgU2VydmVycyBhcmUgYXV0b21hdGljYWxseSBjbGVhbmVkIHVwIGF0IHRoZSBlbmQg b2YgdGhlIHRlc3QuCisKKyAgICBFeGFtcGxlOgorICAgICAgICBkZWYgdGVzdF9tdWx0aXBsZV9z ZXJ2ZXJzKGNyZWF0ZV9wZyk6CisgICAgICAgICAgICBub2RlMSA9IGNyZWF0ZV9wZygpCisgICAg ICAgICAgICBub2RlMiA9IGNyZWF0ZV9wZygpCisgICAgICAgICAgICBub2RlMyA9IGNyZWF0ZV9w ZygpCisgICAgIiIiCisgICAgc2VydmVycyA9IFtdCisKKyAgICBkZWYgX2NyZWF0ZShuYW1lPU5v bmUsICoqa3dhcmdzKToKKyAgICAgICAgaWYgbmFtZSBpcyBOb25lOgorICAgICAgICAgICAgY291 bnQgPSBsZW4oc2VydmVycykgKyAxCisgICAgICAgICAgICBuYW1lID0gZiJwZ3tjb3VudH0iCisK KyAgICAgICAgZGF0YWRpciA9IHRtcF9jaGVjayAvIGYicGdkYXRhX3tuYW1lfSIKKyAgICAgICAg c2VydmVyID0gUG9zdGdyZXNTZXJ2ZXIobmFtZSwgYmluZGlyLCBkYXRhZGlyLCBzb2NrZGlyLCBs aWJwcV9oYW5kbGUsICoqa3dhcmdzKQorICAgICAgICBzZXJ2ZXIuc2V0X3RpbWVvdXQocmVtYWlu aW5nX3RpbWVvdXQpCisgICAgICAgIF9yZWNvcmRfc2VydmVyX2Zvcl9sb2dfcmVwb3J0aW5nKHJl cXVlc3QsIHNlcnZlcikKKyAgICAgICAgc2VydmVycy5hcHBlbmQoc2VydmVyKQorICAgICAgICBy ZXR1cm4gc2VydmVyCisKKyAgICB5aWVsZCBfY3JlYXRlCisKKyAgICBmb3Igc2VydmVyIGluIHNl cnZlcnM6CisgICAgICAgIHNlcnZlci5jbGVhbnVwKCkKKyAgICAgICAgc2VydmVyLnN0b3AoKQor CisKK0BweXRlc3QuZml4dHVyZShzY29wZT0ibW9kdWxlIikKK2RlZiBfbW9kdWxlX3Njb3BlZF9z ZXJ2ZXJzKCk6CisgICAgIiIiU2Vzc2lvbi1zY29wZWQgbGlzdCB0byB0cmFjayBzZXJ2ZXJzIGNy ZWF0ZWQgYnkgY3JlYXRlX3BnX21vZHVsZS4iIiIKKyAgICByZXR1cm4gW10KKworCitAcHl0ZXN0 LmZpeHR1cmUoc2NvcGU9Im1vZHVsZSIpCitkZWYgY3JlYXRlX3BnX21vZHVsZSgKKyAgICBiaW5k aXIsCisgICAgc29ja2RpciwKKyAgICBsaWJwcV9oYW5kbGUsCisgICAgdG1wX2NoZWNrLAorICAg IHJlbWFpbmluZ190aW1lb3V0X21vZHVsZSwKKyAgICBfbW9kdWxlX3Njb3BlZF9zZXJ2ZXJzLAor KToKKyAgICAiIiIKKyAgICBGYWN0b3J5IGZpeHR1cmUgdG8gY3JlYXRlIGFkZGl0aW9uYWwgUG9z dGdyZVNRTCBzZXJ2ZXJzIChtb2R1bGUgc2NvcGUpLgorCisgICAgTGlrZSBjcmVhdGVfcGcsIGJ1 dCBzZXJ2ZXJzIHBlcnNpc3QgZm9yIHRoZSBlbnRpcmUgdGVzdCBtb2R1bGUuCisgICAgVXNlIHRo aXMgd2hlbiBtdWx0aXBsZSB0ZXN0cyBpbiBhIG1vZHVsZSBjYW4gc2hhcmUgdGhlIHNhbWUgc2Vy dmVycy4KKworICAgIFRoZSB0aW1lb3V0IGlzIGF1dG9tYXRpY2FsbHkgc2V0IG9uIGFsbCBzZXJ2 ZXJzIGF0IHRoZSBzdGFydCBvZiBlYWNoIHRlc3QKKyAgICB2aWEgdGhlIF9zZXRfbW9kdWxlX3Nl cnZlcl90aW1lb3V0cyBhdXRvdXNlIGZpeHR1cmUuCisKKyAgICBFeGFtcGxlOgorICAgICAgICBA cHl0ZXN0LmZpeHR1cmUoc2NvcGU9Im1vZHVsZSIpCisgICAgICAgIGRlZiBzaGFyZWRfbm9kZXMo Y3JlYXRlX3BnX21vZHVsZSk6CisgICAgICAgICAgICByZXR1cm4gW2NyZWF0ZV9wZ19tb2R1bGUo KSBmb3IgXyBpbiByYW5nZSgzKV0KKyAgICAiIiIKKworICAgIGRlZiBfY3JlYXRlKG5hbWU9Tm9u ZSwgKiprd2FyZ3MpOgorICAgICAgICBpZiBuYW1lIGlzIE5vbmU6CisgICAgICAgICAgICBjb3Vu dCA9IGxlbihfbW9kdWxlX3Njb3BlZF9zZXJ2ZXJzKSArIDEKKyAgICAgICAgICAgIG5hbWUgPSBm InBne2NvdW50fSIKKyAgICAgICAgZGF0YWRpciA9IHRtcF9jaGVjayAvIGYicGdkYXRhX3tuYW1l fSIKKyAgICAgICAgc2VydmVyID0gUG9zdGdyZXNTZXJ2ZXIobmFtZSwgYmluZGlyLCBkYXRhZGly LCBzb2NrZGlyLCBsaWJwcV9oYW5kbGUsICoqa3dhcmdzKQorICAgICAgICBzZXJ2ZXIuc2V0X3Rp bWVvdXQocmVtYWluaW5nX3RpbWVvdXRfbW9kdWxlKQorICAgICAgICBfbW9kdWxlX3Njb3BlZF9z ZXJ2ZXJzLmFwcGVuZChzZXJ2ZXIpCisgICAgICAgIHJldHVybiBzZXJ2ZXIKKworICAgIHlpZWxk IF9jcmVhdGUKKworICAgIGZvciBzZXJ2ZXIgaW4gX21vZHVsZV9zY29wZWRfc2VydmVyczoKKyAg ICAgICAgc2VydmVyLmNsZWFudXAoKQorICAgICAgICBzZXJ2ZXIuc3RvcCgpCisKKworQHB5dGVz dC5maXh0dXJlKGF1dG91c2U9VHJ1ZSkKK2RlZiBfc2V0X21vZHVsZV9zZXJ2ZXJfdGltZW91dHMo cmVxdWVzdCwgX21vZHVsZV9zY29wZWRfc2VydmVycywgcmVtYWluaW5nX3RpbWVvdXQpOgorICAg ICIiIkF1dG91c2UgZml4dHVyZSB0aGF0IHNldHMgdGltZW91dCwgZW50ZXJzIHN1YmNvbnRleHQs IGFuZCByZWNvcmRzIGxvZyBwb3NpdGlvbnMgZm9yIG1vZHVsZS1zY29wZWQgc2VydmVycy4iIiIK KyAgICB3aXRoIGNvbnRleHRsaWIuRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgIGZvciBz ZXJ2ZXIgaW4gX21vZHVsZV9zY29wZWRfc2VydmVyczoKKyAgICAgICAgICAgIHN0YWNrLmVudGVy X2NvbnRleHQoc2VydmVyLnN0YXJ0X25ld190ZXN0KHJlbWFpbmluZ190aW1lb3V0KSkKKyAgICAg ICAgICAgIF9yZWNvcmRfc2VydmVyX2Zvcl9sb2dfcmVwb3J0aW5nKHJlcXVlc3QsIHNlcnZlcikK KyAgICAgICAgeWllbGQKKworCitAcHl0ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUsIHRy eWxhc3Q9VHJ1ZSkKK2RlZiBweXRlc3RfcnVudGVzdF9tYWtlcmVwb3J0KGl0ZW0sIGNhbGwpOgor ICAgICIiIgorICAgIEFkZHMgUG9zdGdyZVNRTCBzZXJ2ZXIgbG9ncyB0byB0aGUgdGVzdCByZXBv cnQgc2VjdGlvbnMuCisgICAgIiIiCisgICAgb3V0Y29tZSA9IHlpZWxkCisgICAgcmVwb3J0ID0g b3V0Y29tZS5nZXRfcmVzdWx0KCkKKworICAgIGlmIHJlcG9ydC53aGVuICE9ICJjYWxsIjoKKyAg ICAgICAgcmV0dXJuCisKKyAgICBpZiBfc2VydmVyc19rZXkgbm90IGluIGl0ZW0uc3Rhc2g6Cisg ICAgICAgIHJldHVybgorCisgICAgc2VydmVycyA9IGl0ZW0uc3Rhc2hbX3NlcnZlcnNfa2V5XQor ICAgIGRlbCBpdGVtLnN0YXNoW19zZXJ2ZXJzX2tleV0KKworICAgIGluY2x1ZGVfbmFtZSA9IGxl bihzZXJ2ZXJzKSA+IDEKKworICAgIGZvciBzZXJ2ZXIgaW4gc2VydmVyczoKKyAgICAgICAgY29u dGVudCA9IHNlcnZlci5sb2dfY29udGVudCgpCisgICAgICAgIGlmIGNvbnRlbnQuc3RyaXAoKToK KyAgICAgICAgICAgIHNlY3Rpb25fdGl0bGUgPSAiUG9zdGdyZXMgbG9nIgorICAgICAgICAgICAg aWYgaW5jbHVkZV9uYW1lOgorICAgICAgICAgICAgICAgIHNlY3Rpb25fdGl0bGUgKz0gZiIgKHtz ZXJ2ZXIubmFtZX0pIgorICAgICAgICAgICAgcmVwb3J0LnNlY3Rpb25zLmFwcGVuZCgoc2VjdGlv bl90aXRsZSwgY29udGVudCkpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9weXRlc3QvcHlwZy9zZXJ2 ZXIucHkgYi9zcmMvdGVzdC9weXRlc3QvcHlwZy9zZXJ2ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLjkyNDJhYjI1MDA3Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rlc3QvcHl0ZXN0L3B5cGcvc2VydmVyLnB5CkBAIC0wLDAgKzEsNDcwIEBACisjIENvcHlyaWdo dCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworaW1wb3J0 IGNvbnRleHRsaWIKK2ltcG9ydCBvcworaW1wb3J0IHBhdGhsaWIKK2ltcG9ydCBwbGF0Zm9ybQor aW1wb3J0IHJlCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc29ja2V0CitpbXBvcnQgc3VicHJvY2Vz cworaW1wb3J0IHRlbXBmaWxlCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCitm cm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGUsIE9wdGlvbmFsCisKK2Zyb20gLnV0aWwgaW1wb3J0 IHJ1bgorZnJvbSBsaWJwcSBpbXBvcnQgUEdjb25uLCBjb25uZWN0IGFzIGxpYnBxX2Nvbm5lY3QK KworCitjbGFzcyBGaWxlQmFja3VwKGNvbnRleHRsaWIuQWJzdHJhY3RDb250ZXh0TWFuYWdlcik6 CisgICAgIiIiCisgICAgQSBjb250ZXh0IG1hbmFnZXIgd2hpY2ggYmFja3MgdXAgYSBmaWxlJ3Mg Y29udGVudHMsIHJlc3RvcmluZyB0aGVtIG9uIGV4aXQuCisgICAgIiIiCisKKyAgICBkZWYgX19p bml0X18oc2VsZiwgZmlsZTogcGF0aGxpYi5QYXRoKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRf XygpCisKKyAgICAgICAgc2VsZi5fZmlsZSA9IGZpbGUKKworICAgIGRlZiBfX2VudGVyX18oc2Vs Zik6CisgICAgICAgIHdpdGggdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKAorICAgICAgICAg ICAgcHJlZml4PXNlbGYuX2ZpbGUubmFtZSwgZGlyPXNlbGYuX2ZpbGUucGFyZW50LCBkZWxldGU9 RmFsc2UKKyAgICAgICAgKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5fYmFja3VwID0gcGF0aGxp Yi5QYXRoKGYubmFtZSkKKworICAgICAgICBzaHV0aWwuY29weWZpbGUoc2VsZi5fZmlsZSwgc2Vs Zi5fYmFja3VwKQorCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2Vs ZiwgKmV4Yyk6CisgICAgICAgICMgU3dhcCB0aGUgYmFja3VwIGFuZCB0aGUgb3JpZ2luYWwgZmls ZSwgc28gdGhhdCB0aGUgbW9kaWZpZWQgY29udGVudHMKKyAgICAgICAgIyBjYW4gc3RpbGwgYmUg aW5zcGVjdGVkIGluIGNhc2Ugb2YgZmFpbHVyZS4KKyAgICAgICAgdG1wID0gc2VsZi5fYmFja3Vw LnBhcmVudCAvIChzZWxmLl9iYWNrdXAubmFtZSArICIudG1wIikKKworICAgICAgICBzaHV0aWwu Y29weWZpbGUoc2VsZi5fZmlsZSwgdG1wKQorICAgICAgICBzaHV0aWwuY29weWZpbGUoc2VsZi5f YmFja3VwLCBzZWxmLl9maWxlKQorICAgICAgICBzaHV0aWwubW92ZSh0bXAsIHNlbGYuX2JhY2t1 cCkKKworCitjbGFzcyBIQkEoRmlsZUJhY2t1cCk6CisgICAgIiIiCisgICAgQmFja3MgdXAgYSBz ZXJ2ZXIncyBIQkEgY29uZmlndXJhdGlvbiBhbmQgcHJvdmlkZXMgbWVhbnMgZm9yIHRlbXBvcmFy aWx5CisgICAgZWRpdGluZyBpdC4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBk YXRhZGlyOiBwYXRobGliLlBhdGgpOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKGRhdGFkaXIg LyAicGdfaGJhLmNvbmYiKQorCisgICAgZGVmIHByZXBlbmQoc2VsZiwgKmxpbmVzKToKKyAgICAg ICAgIiIiCisgICAgICAgIFRlbXBvcmFyaWx5IHByZXBlbmRzIGxpbmVzIHRvIHRoZSBzZXJ2ZXIn cyBwZ19oYmEuY29uZi4KKworICAgICAgICBBcyBzdWdhciBmb3IgYWxpZ25pbmcgSEJBIGNvbHVt bnMgaW4gdGhlIHRlc3RzLCBlYWNoIGxpbmUgY2FuIGJlIGVpdGhlcgorICAgICAgICBhIHN0cmlu ZyBvciBhIGxpc3Qgb2Ygc3RyaW5ncy4gTGlzdCBlbGVtZW50cyB3aWxsIGJlIGpvaW5lZCBieSBz aW5nbGUKKyAgICAgICAgc3BhY2VzIGJlZm9yZSB0aGV5IGFyZSB3cml0dGVuIHRvIGZpbGUuCisg ICAgICAgICIiIgorICAgICAgICB3aXRoIG9wZW4oc2VsZi5fZmlsZSwgInIiKSBhcyBmOgorICAg ICAgICAgICAgcHJpb3JfZGF0YSA9IGYucmVhZCgpCisKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYu X2ZpbGUsICJ3IikgYXMgZjoKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGxpbmVzOgorICAgICAg ICAgICAgICAgIGlmIGlzaW5zdGFuY2UobGluZSwgbGlzdCk6CisgICAgICAgICAgICAgICAgICAg IHByaW50KCpsaW5lLCBmaWxlPWYpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg ICAgICAgICAgcHJpbnQobGluZSwgZmlsZT1mKQorCisgICAgICAgICAgICBmLndyaXRlKHByaW9y X2RhdGEpCisKKworY2xhc3MgQ29uZmlnKEZpbGVCYWNrdXApOgorICAgICIiIgorICAgIEJhY2tz IHVwIGEgc2VydmVyJ3MgcG9zdGdyZXNxbC5jb25mIGFuZCBwcm92aWRlcyBtZWFucyBmb3IgdGVt cG9yYXJpbHkKKyAgICBlZGl0aW5nIGl0LgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNl bGYsIGRhdGFkaXI6IHBhdGhsaWIuUGF0aCk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oZGF0 YWRpciAvICJwb3N0Z3Jlc3FsLmNvbmYiKQorCisgICAgZGVmIHNldChzZWxmLCAqKmd1Y3MpOgor ICAgICAgICAiIiIKKyAgICAgICAgVGVtcG9yYXJpbHkgYXBwZW5kcyBHVUMgc2V0dGluZ3MgdG8g dGhlIHNlcnZlcidzIHBvc3RncmVzcWwuY29uZi4KKyAgICAgICAgIiIiCisKKyAgICAgICAgd2l0 aCBvcGVuKHNlbGYuX2ZpbGUsICJhIikgYXMgZjoKKyAgICAgICAgICAgIHByaW50KGZpbGU9ZikK KworICAgICAgICAgICAgZm9yIG4sIHYgaW4gZ3Vjcy5pdGVtcygpOgorICAgICAgICAgICAgICAg IHYgPSBzdHIodikKKworICAgICAgICAgICAgICAgICMgVE9ETzogcHJvcGVyIHF1b3RpbmcKKyAg ICAgICAgICAgICAgICB2ID0gdi5yZXBsYWNlKCJcXCIsICJcXFxcIikKKyAgICAgICAgICAgICAg ICB2ID0gdi5yZXBsYWNlKCInIiwgIlxcJyIpCisgICAgICAgICAgICAgICAgdiA9ICIne30nIi5m b3JtYXQodikKKworICAgICAgICAgICAgICAgIHByaW50KG4sICI9IiwgdiwgZmlsZT1mKQorCisK K0JhY2t1cCA9IG5hbWVkdHVwbGUoIkJhY2t1cCIsICJjb25mLCBoYmEiKQorCisKK2NsYXNzIFBv c3RncmVzU2VydmVyOgorICAgICIiIgorICAgIFJlcHJlc2VudHMgYSBydW5uaW5nIFBvc3RncmVT UUwgc2VydmVyIGluc3RhbmNlIHdpdGggbWFuYWdlbWVudCB1dGlsaXRpZXMuCisgICAgUHJvdmlk ZXMgbWV0aG9kcyBmb3IgY29uZmlndXJhdGlvbiwgdXNlci9kYXRhYmFzZSBjcmVhdGlvbiwgYW5k IHNlcnZlciBjb250cm9sLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBz ZWxmLAorICAgICAgICBuYW1lLAorICAgICAgICBiaW5kaXIsCisgICAgICAgIGRhdGFkaXIsCisg ICAgICAgIHNvY2tkaXIsCisgICAgICAgIGxpYnBxX2hhbmRsZSwKKyAgICAgICAgKiwKKyAgICAg ICAgaG9zdGFkZHI6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAorICAgICAgICBwb3J0OiBPcHRpb25h bFtpbnRdID0gTm9uZSwKKyAgICApOgorICAgICAgICAiIiIKKyAgICAgICAgSW5pdGlhbGl6ZSBh bmQgc3RhcnQgYSBQb3N0Z3JlU1FMIHNlcnZlciBpbnN0YW5jZS4KKworICAgICAgICBBcmdzOgor ICAgICAgICAgICAgbmFtZTogVGhlIG5hbWUgb2YgdGhpcyBzZXJ2ZXIgaW5zdGFuY2UgKGZvciBs b2dnaW5nIHB1cnBvc2VzKQorICAgICAgICAgICAgYmluZGlyOiBQYXRoIHRvIFBvc3RncmVTUUwg YmluIGRpcmVjdG9yeQorICAgICAgICAgICAgZGF0YWRpcjogUGF0aCB0byBkYXRhIGRpcmVjdG9y eSBmb3IgdGhpcyBzZXJ2ZXIKKyAgICAgICAgICAgIHNvY2tkaXI6IFBhdGggdG8gZGlyZWN0b3J5 IGZvciBVbml4IHNvY2tldHMKKyAgICAgICAgICAgIGxpYnBxX2hhbmRsZTogY3R5cGVzIGhhbmRs ZSB0byBsaWJwcQorICAgICAgICAgICAgaG9zdGFkZHI6IElmIHByb3ZpZGVkLCB1c2UgdGhpcyBz cGVjaWZpYyBhZGRyZXNzIChlLmcuLCAiMTI3LjAuMC4yIikKKyAgICAgICAgICAgIHBvcnQ6IElm IHByb3ZpZGVkLCB1c2UgdGhpcyBwb3J0IGluc3RlYWQgb2YgZmluZGluZyBhIGZyZWUgb25lLAor ICAgICAgICAgICAgICAgIGlzIGN1cnJlbnRseSBvbmx5IGFsbG93ZWQgaWYgaG9zdGFkZHIgaXMg YWxzbyBwcm92aWRlZAorICAgICAgICAiIiIKKworICAgICAgICBpZiBob3N0YWRkciBpcyBOb25l IGFuZCBwb3J0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRF cnJvcigicG9ydCB3YXMgcHJvdmlkZWQgd2l0aG91dCBob3N0YWRkciIpCisKKyAgICAgICAgc2Vs Zi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLmRhdGFkaXIgPSBkYXRhZGlyCisgICAgICAgIHNl bGYuc29ja2RpciA9IHNvY2tkaXIKKyAgICAgICAgc2VsZi5saWJwcV9oYW5kbGUgPSBsaWJwcV9o YW5kbGUKKyAgICAgICAgc2VsZi5fcmVtYWluaW5nX3RpbWVvdXRfZm46IE9wdGlvbmFsW0NhbGxh YmxlW1tdLCBmbG9hdF1dID0gTm9uZQorICAgICAgICBzZWxmLl9iaW5kaXIgPSBiaW5kaXIKKyAg ICAgICAgc2VsZi5fcGdfY3RsID0gYmluZGlyIC8gInBnX2N0bCIKKyAgICAgICAgc2VsZi5sb2cg PSBkYXRhZGlyIC8gInBvc3RncmVzcWwubG9nIgorICAgICAgICBzZWxmLl9sb2dfc3RhcnRfcG9z ID0gMAorCisgICAgICAgICMgRGV0ZXJtaW5lIHdoZXRoZXIgdG8gdXNlIFVuaXggc29ja2V0cwor ICAgICAgICB1c2VfdW5peF9zb2NrZXRzID0gcGxhdGZvcm0uc3lzdGVtKCkgIT0gIldpbmRvd3Mi IGFuZCBob3N0YWRkciBpcyBOb25lCisKKyAgICAgICAgIyBVc2UgSU5JVERCX1RFTVBMQVRFIGlm IGF2YWlsYWJsZSAobXVjaCBmYXN0ZXIgdGhhbiBydW5uaW5nIGluaXRkYikKKyAgICAgICAgaW5p dGRiX3RlbXBsYXRlID0gb3MuZW52aXJvbi5nZXQoIklOSVREQl9URU1QTEFURSIpCisgICAgICAg IGlmIGluaXRkYl90ZW1wbGF0ZSBhbmQgb3MucGF0aC5pc2Rpcihpbml0ZGJfdGVtcGxhdGUpOgor ICAgICAgICAgICAgc2h1dGlsLmNvcHl0cmVlKGluaXRkYl90ZW1wbGF0ZSwgZGF0YWRpcikKKyAg ICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIHBsYXRmb3JtLnN5c3RlbSgpID09ICJXaW5kb3dz IjoKKyAgICAgICAgICAgICAgICBhdXRoX21ldGhvZCA9ICJ0cnVzdCIKKyAgICAgICAgICAgIGVs c2U6CisgICAgICAgICAgICAgICAgYXV0aF9tZXRob2QgPSAicGVlciIKKyAgICAgICAgICAgIHJ1 bigKKyAgICAgICAgICAgICAgICBiaW5kaXIgLyAiaW5pdGRiIiwKKyAgICAgICAgICAgICAgICAi LS1uby1zeW5jIiwKKyAgICAgICAgICAgICAgICAiLS1hdXRoIiwKKyAgICAgICAgICAgICAgICBh dXRoX21ldGhvZCwKKyAgICAgICAgICAgICAgICAiLS1wZ2RhdGEiLAorICAgICAgICAgICAgICAg IHNlbGYuZGF0YWRpciwKKyAgICAgICAgICAgICkKKworICAgICAgICAjIEZpZ3VyZSBvdXQgYSBw b3J0IHRvIGxpc3RlbiBvbi4gQXR0ZW1wdCB0byByZXNlcnZlIGJvdGggSVB2NCBhbmQgSVB2Ngor ICAgICAgICAjIGFkZHJlc3NlcyBpbiBvbmUgZ28uCisgICAgICAgICMKKyAgICAgICAgIyBOb3Rl OiBzb2NrZXQuaGFzX2R1YWxzdGFja19pcHY2L2NyZWF0ZV9zZXJ2ZXIgYXJlIG9ubHkgaW4gUHl0 aG9uIDMuOCsuCisgICAgICAgIGlmIGhvc3RhZGRyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAg IyBFeHBsaWNpdCBhZGRyZXNzIHByb3ZpZGVkCisgICAgICAgICAgICBhZGRyczogbGlzdFtzdHJd ID0gW2hvc3RhZGRyXQorICAgICAgICAgICAgdGVtcF9zb2NrID0gc29ja2V0LnNvY2tldCgpCisg ICAgICAgICAgICBpZiBwb3J0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgdGVtcF9zb2NrLmJp bmQoKGhvc3RhZGRyLCAwKSkKKyAgICAgICAgICAgICAgICBfLCBwb3J0ID0gdGVtcF9zb2NrLmdl dHNvY2tuYW1lKCkKKworICAgICAgICBlbGlmIGhhc2F0dHIoc29ja2V0LCAiaGFzX2R1YWxzdGFj a19pcHY2IikgYW5kIHNvY2tldC5oYXNfZHVhbHN0YWNrX2lwdjYoKToKKyAgICAgICAgICAgIGFk ZHIgPSAoIjo6MSIsIDApCisgICAgICAgICAgICB0ZW1wX3NvY2sgPSBzb2NrZXQuY3JlYXRlX3Nl cnZlcigKKyAgICAgICAgICAgICAgICBhZGRyLCBmYW1pbHk9c29ja2V0LkFGX0lORVQ2LCBkdWFs c3RhY2tfaXB2Nj1UcnVlCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgIGhvc3RhZGRyLCBw b3J0LCBfLCBfID0gdGVtcF9zb2NrLmdldHNvY2tuYW1lKCkKKyAgICAgICAgICAgIGFzc2VydCBo b3N0YWRkciBpcyBub3QgTm9uZQorICAgICAgICAgICAgYWRkcnMgPSBbaG9zdGFkZHIsICIxMjcu MC4wLjEiXQorCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhZGRyID0gKCIxMjcuMC4wLjEi LCAwKQorCisgICAgICAgICAgICB0ZW1wX3NvY2sgPSBzb2NrZXQuc29ja2V0KCkKKyAgICAgICAg ICAgIHRlbXBfc29jay5iaW5kKGFkZHIpCisKKyAgICAgICAgICAgIGhvc3RhZGRyLCBwb3J0ID0g dGVtcF9zb2NrLmdldHNvY2tuYW1lKCkKKyAgICAgICAgICAgIGFzc2VydCBob3N0YWRkciBpcyBu b3QgTm9uZQorICAgICAgICAgICAgYWRkcnMgPSBbaG9zdGFkZHJdCisKKyAgICAgICAgIyBTdG9y ZSB0aGUgY29tcHV0ZWQgdmFsdWVzCisgICAgICAgIHNlbGYuaG9zdGFkZHIgPSBob3N0YWRkcgor ICAgICAgICBzZWxmLnBvcnQgPSBwb3J0CisgICAgICAgICMgSW5jbHVkaW5nIHRoZSBob3N0IHRv IHVzZSBmb3IgY29ubmVjdGlvbnMgLSBlaXRoZXIgdGhlIHNvY2tldAorICAgICAgICAjIGRpcmVj dG9yeSBvciBUQ1AgYWRkcmVzcworICAgICAgICBpZiB1c2VfdW5peF9zb2NrZXRzOgorICAgICAg ICAgICAgc2VsZi5ob3N0ID0gc3RyKHNvY2tkaXIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAg ICBzZWxmLmhvc3QgPSBob3N0YWRkcgorCisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4o ZGF0YWRpciwgInBvc3RncmVzcWwuY29uZiIpLCAiYSIpIGFzIGY6CisgICAgICAgICAgICBwcmlu dChmaWxlPWYpCisgICAgICAgICAgICBpZiB1c2VfdW5peF9zb2NrZXRzOgorICAgICAgICAgICAg ICAgIHByaW50KAorICAgICAgICAgICAgICAgICAgICAidW5peF9zb2NrZXRfZGlyZWN0b3JpZXMg PSAne30nIi5mb3JtYXQoc29ja2Rpci5hc19wb3NpeCgpKSwKKyAgICAgICAgICAgICAgICAgICAg ZmlsZT1mLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAg ICAgICAgIyBEaXNhYmxlIFVuaXggc29ja2V0cyB3aGVuIHVzaW5nIFRDUCB0byBhdm9pZCBsb2Nr IGNvbmZsaWN0cworICAgICAgICAgICAgICAgIHByaW50KCJ1bml4X3NvY2tldF9kaXJlY3Rvcmll cyA9ICcnIiwgZmlsZT1mKQorICAgICAgICAgICAgcHJpbnQoImxpc3Rlbl9hZGRyZXNzZXMgPSAn e30nIi5mb3JtYXQoIiwiLmpvaW4oYWRkcnMpKSwgZmlsZT1mKQorICAgICAgICAgICAgcHJpbnQo InBvcnQgPSIsIHBvcnQsIGZpbGU9ZikKKyAgICAgICAgICAgIHByaW50KCJsb2dfY29ubmVjdGlv bnMgPSBhbGwiLCBmaWxlPWYpCisgICAgICAgICAgICBwcmludCgiZnN5bmMgPSBvZmYiLCBmaWxl PWYpCisgICAgICAgICAgICBwcmludCgiZGF0ZXN0eWxlID0gJ0lTTyciLCBmaWxlPWYpCisgICAg ICAgICAgICBwcmludCgidGltZXpvbmUgPSAnVVRDJyIsIGZpbGU9ZikKKworICAgICAgICAjIEJl dHdlZW4gY2xvc2luZyBvZiB0aGUgc29ja2V0LCBzLCBhbmQgc2VydmVyIHN0YXJ0LCB3ZSdyZSBy YWNpbmcKKyAgICAgICAgIyBhZ2FpbnN0IGFueXRoaW5nIHRoYXQgd2FudHMgdG8gb3BlbiB1cCBl cGhlbWVyYWwgcG9ydHMsIHNvIHRyeSBub3QgdG8KKyAgICAgICAgIyBwdXQgYW55IG5ldyB3b3Jr IGhlcmUuCisKKyAgICAgICAgdGVtcF9zb2NrLmNsb3NlKCkKKyAgICAgICAgc2VsZi5wZ19jdGwo InN0YXJ0IikKKworICAgICAgICAjIFJlYWQgdGhlIFBJRCBmaWxlIHRvIGdldCB0aGUgcG9zdG1h c3RlciBQSUQKKyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihkYXRhZGlyLCAicG9zdG1h c3Rlci5waWQiKSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYucGlkID0gaW50KGYucmVhZGxpbmUo KS5zdHJpcCgpKQorCisgICAgICAgICMgRXhpdFN0YWNrIGZvciBjbGVhbnVwIGNhbGxiYWNrcwor ICAgICAgICBzZWxmLl9jbGVhbnVwX3N0YWNrID0gY29udGV4dGxpYi5FeGl0U3RhY2soKQorCisg ICAgZGVmIGN1cnJlbnRfbG9nX3Bvc2l0aW9uKHNlbGYpOgorICAgICAgICAiIiJHZXQgdGhlIGN1 cnJlbnQgZW5kIHBvc2l0aW9uIG9mIHRoZSBsb2cgZmlsZS4iIiIKKyAgICAgICAgaWYgc2VsZi5s b2cuZXhpc3RzKCk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5sb2cuc3RhdCgpLnN0X3NpemUK KyAgICAgICAgcmV0dXJuIDAKKworICAgIGRlZiByZXNldF9sb2dfcG9zaXRpb24oc2VsZik6Cisg ICAgICAgICIiIk1hcmsgY3VycmVudCBsb2cgcG9zaXRpb24gYXMgc3RhcnQgZm9yIGxvZ19jb250 ZW50KCkuIiIiCisgICAgICAgIHNlbGYuX2xvZ19zdGFydF9wb3MgPSBzZWxmLmN1cnJlbnRfbG9n X3Bvc2l0aW9uKCkKKworICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIHN0 YXJ0X25ld190ZXN0KHNlbGYsIHJlbWFpbmluZ190aW1lb3V0KToKKyAgICAgICAgIiIiCisgICAg ICAgIFByZXBhcmUgc2VydmVyIGZvciBhIG5ldyB0ZXN0LgorCisgICAgICAgIFNldHMgdGltZW91 dCwgcmVzZXRzIGxvZyBwb3NpdGlvbiwgYW5kIGVudGVycyBhIGNsZWFudXAgc3ViY29udGV4dC4K KyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuc2V0X3RpbWVvdXQocmVtYWluaW5nX3RpbWVvdXQp CisgICAgICAgIHNlbGYucmVzZXRfbG9nX3Bvc2l0aW9uKCkKKyAgICAgICAgd2l0aCBzZWxmLnN1 YmNvbnRleHQoKToKKyAgICAgICAgICAgIHlpZWxkIHNlbGYKKworICAgIGRlZiBwc3FsKHNlbGYs ICphcmdzKToKKyAgICAgICAgIiIiUnVuIHBzcWwgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzLiIi IgorICAgICAgICBzZWxmLl9ydW4ob3MucGF0aC5qb2luKHNlbGYuX2JpbmRpciwgInBzcWwiKSwg Ii13IiwgKmFyZ3MpCisKKyAgICBkZWYgc3FsKHNlbGYsIHF1ZXJ5KToKKyAgICAgICAgIiIiRXhl Y3V0ZSBhIFNRTCBxdWVyeSB2aWEgbGlicHEuIFJldHVybnMgc2ltcGxpZmllZCByZXN1bHRzLiIi IgorICAgICAgICB3aXRoIHNlbGYuY29ubmVjdCgpIGFzIGNvbm46CisgICAgICAgICAgICByZXR1 cm4gY29ubi5zcWwocXVlcnkpCisKKyAgICBkZWYgcGdfY3RsKHNlbGYsICphcmdzKToKKyAgICAg ICAgIiIiUnVuIHBnX2N0bCB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMuIiIiCisgICAgICAgIHNl bGYuX3J1bihzZWxmLl9wZ19jdGwsICItLXBnZGF0YSIsIHNlbGYuZGF0YWRpciwgIi0tbG9nIiwg c2VsZi5sb2csICphcmdzKQorCisgICAgZGVmIF9ydW4oc2VsZiwgY21kLCAqYXJncywgYWRkZW52 OiBPcHRpb25hbFtkaWN0XSA9IE5vbmUpOgorICAgICAgICAiIiJSdW4gYSBjb21tYW5kIHdpdGgg UEcqIGVudmlyb25tZW50IHZhcmlhYmxlcyBzZXQuIiIiCisgICAgICAgIHN1YmVudiA9IGRpY3Qo b3MuZW52aXJvbikKKyAgICAgICAgc3ViZW52LnVwZGF0ZSgKKyAgICAgICAgICAgIHsKKyAgICAg ICAgICAgICAgICAiUEdIT1NUIjogc3RyKHNlbGYuaG9zdCksCisgICAgICAgICAgICAgICAgIlBH UE9SVCI6IHN0cihzZWxmLnBvcnQpLAorICAgICAgICAgICAgICAgICJQR0RBVEFCQVNFIjogInBv c3RncmVzIiwKKyAgICAgICAgICAgICAgICAiUEdEQVRBIjogc3RyKHNlbGYuZGF0YWRpciksCisg ICAgICAgICAgICB9CisgICAgICAgICkKKyAgICAgICAgaWYgYWRkZW52OgorICAgICAgICAgICAg c3ViZW52LnVwZGF0ZShhZGRlbnYpCisgICAgICAgIHJ1bihjbWQsICphcmdzLCBlbnY9c3ViZW52 KQorCisgICAgZGVmIGNyZWF0ZV91c2VycyhzZWxmLCAqdXNlcmtleXM6IHN0cik6CisgICAgICAg ICIiIkNyZWF0ZSB0ZXN0IHVzZXJzIGFuZCByZWdpc3RlciB0aGVtIGZvciBjbGVhbnVwLiIiIgor ICAgICAgICB1c2VybWFwID0ge30KKyAgICAgICAgZm9yIHUgaW4gdXNlcmtleXM6CisgICAgICAg ICAgICBuYW1lID0gdSArICJ1c2VyIgorICAgICAgICAgICAgdXNlcm1hcFt1XSA9IG5hbWUKKyAg ICAgICAgICAgIHNlbGYucHNxbCgiLWMiLCAiQ1JFQVRFIFVTRVIgIiArIG5hbWUpCisgICAgICAg ICAgICBzZWxmLl9jbGVhbnVwX3N0YWNrLmNhbGxiYWNrKHNlbGYucHNxbCwgIi1jIiwgIkRST1Ag VVNFUiAiICsgbmFtZSkKKyAgICAgICAgcmV0dXJuIHVzZXJtYXAKKworICAgIGRlZiBjcmVhdGVf ZGJzKHNlbGYsICpkYmtleXM6IHN0cik6CisgICAgICAgICIiIkNyZWF0ZSB0ZXN0IGRhdGFiYXNl cyBhbmQgcmVnaXN0ZXIgdGhlbSBmb3IgY2xlYW51cC4iIiIKKyAgICAgICAgZGJtYXAgPSB7fQor ICAgICAgICBmb3IgZCBpbiBkYmtleXM6CisgICAgICAgICAgICBuYW1lID0gZCArICJkYiIKKyAg ICAgICAgICAgIGRibWFwW2RdID0gbmFtZQorICAgICAgICAgICAgc2VsZi5wc3FsKCItYyIsICJD UkVBVEUgREFUQUJBU0UgIiArIG5hbWUpCisgICAgICAgICAgICBzZWxmLl9jbGVhbnVwX3N0YWNr LmNhbGxiYWNrKHNlbGYucHNxbCwgIi1jIiwgIkRST1AgREFUQUJBU0UgIiArIG5hbWUpCisgICAg ICAgIHJldHVybiBkYm1hcAorCisgICAgQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKKyAgICBk ZWYgcmVsb2FkaW5nKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgUHJvdmlkZXMgYSBjb250 ZXh0IG1hbmFnZXIgZm9yIG1ha2luZyBjb25maWd1cmF0aW9uIGNoYW5nZXMuCisKKyAgICAgICAg SWYgdGhlIGNvbnRleHQgc3VpdGUgZmluaXNoZXMgc3VjY2Vzc2Z1bGx5LCB0aGUgY29uZmlndXJh dGlvbiB3aWxsCisgICAgICAgIGJlIHJlbG9hZGVkIHZpYSBwZ19jdGwuIE9uIHRlYXJkb3duLCB0 aGUgY29uZmlndXJhdGlvbiBjaGFuZ2VzIHdpbGwKKyAgICAgICAgYmUgdW53b3VuZCwgYW5kIHRo ZSBzZXJ2ZXIgd2lsbCBiZSBzaWduYWxlZCB0byByZWxvYWQgYWdhaW4uCisKKyAgICAgICAgVGhl IGNvbnRleHQgdGFyZ2V0IGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyB3aGljaCBj YW4gYmUKKyAgICAgICAgdXNlZCB0byBjb25maWd1cmUgdGhlIHNlcnZlcjoKKyAgICAgICAgLSAu Y29uZjogbW9kaWZpZXMgcG9zdGdyZXNxbC5jb25mCisgICAgICAgIC0gLmhiYTogbW9kaWZpZXMg cGdfaGJhLmNvbmYKKworICAgICAgICBGb3IgZXhhbXBsZToKKworICAgICAgICAgICAgd2l0aCBw Z19zZXJ2ZXJfc2Vzc2lvbi5yZWxvYWRpbmcoKSBhcyBzOgorICAgICAgICAgICAgICAgIHMuY29u Zi5zZXQobG9nX2Nvbm5lY3Rpb25zPSJvbiIpCisgICAgICAgICAgICAgICAgcy5oYmEucHJlcGVu ZCgibG9jYWwgYWxsIGFsbCB0cnVzdCIpCisgICAgICAgICIiIgorICAgICAgICAjIFB1c2ggYSBy ZWxvYWQgb250byB0aGUgc3RhY2sgYmVmb3JlIG1ha2luZyBhbnkgb3RoZXIKKyAgICAgICAgIyB1 bndpbmRhYmxlIGNoYW5nZXMuIFRoYXQgd2F5IHRoZSBvcmRlciBvZiBvcGVyYXRpb25zIHdpbGwg YmUKKyAgICAgICAgIworICAgICAgICAjICAjIHRlc3QKKyAgICAgICAgIyAgIC0gY29uZmlnIGNo YW5nZSAxCisgICAgICAgICMgICAtIGNvbmZpZyBjaGFuZ2UgMgorICAgICAgICAjICAgLSByZWxv YWQKKyAgICAgICAgIyAgIyB0ZWFyZG93bgorICAgICAgICAjICAgLSB1bmRvIGNvbmZpZyBjaGFu Z2UgMgorICAgICAgICAjICAgLSB1bmRvIGNvbmZpZyBjaGFuZ2UgMQorICAgICAgICAjICAgLSBy ZWxvYWQKKyAgICAgICAgIworICAgICAgICBzZWxmLl9jbGVhbnVwX3N0YWNrLmNhbGxiYWNrKHNl bGYucGdfY3RsLCAicmVsb2FkIikKKyAgICAgICAgeWllbGQgc2VsZi5fYmFja3VwX2NvbmZpZ3Vy YXRpb24oKQorCisgICAgICAgICMgTm93IGFjdHVhbGx5IHJlbG9hZAorICAgICAgICBzZWxmLnBn X2N0bCgicmVsb2FkIikKKworICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVm IHJlc3RhcnRpbmcoc2VsZik6CisgICAgICAgICIiIkxpa2UgLnJlbG9hZGluZygpLCBidXQgd2l0 aCBhIGZ1bGwgc2VydmVyIHJlc3RhcnQuIiIiCisgICAgICAgIHNlbGYuX2NsZWFudXBfc3RhY2su Y2FsbGJhY2soc2VsZi5wZ19jdGwsICJyZXN0YXJ0IikKKyAgICAgICAgeWllbGQgc2VsZi5fYmFj a3VwX2NvbmZpZ3VyYXRpb24oKQorICAgICAgICBzZWxmLnBnX2N0bCgicmVzdGFydCIpCisKKyAg ICBkZWYgX2JhY2t1cF9jb25maWd1cmF0aW9uKHNlbGYpOgorICAgICAgICAjIFdyYXAgdGhlIGV4 aXN0aW5nIEhCQSBhbmQgY29uZmlndXJhdGlvbiB3aXRoIEZpbGVCYWNrdXBzLgorICAgICAgICBy ZXR1cm4gQmFja3VwKAorICAgICAgICAgICAgaGJhPXNlbGYuX2NsZWFudXBfc3RhY2suZW50ZXJf Y29udGV4dChIQkEoc2VsZi5kYXRhZGlyKSksCisgICAgICAgICAgICBjb25mPXNlbGYuX2NsZWFu dXBfc3RhY2suZW50ZXJfY29udGV4dChDb25maWcoc2VsZi5kYXRhZGlyKSksCisgICAgICAgICkK KworICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIHN1YmNvbnRleHQoc2Vs Zik6CisgICAgICAgICIiIgorICAgICAgICBDcmVhdGUgYSBuZXcgY2xlYW51cCBjb250ZXh0IGZv ciBwZXItdGVzdCBpc29sYXRpb24uCisKKyAgICAgICAgVGVtcG9yYXJpbHkgcmVwbGFjZXMgdGhl IGNsZWFudXAgc3RhY2sgc28gdGhhdCBhbnkgY2xlYW51cCBjYWxsYmFja3MKKyAgICAgICAgcmVn aXN0ZXJlZCB3aXRoaW4gdGhpcyBjb250ZXh0IHdpbGwgYmUgY2xlYW5lZCB1cCB3aGVuIHRoZSBj b250ZXh0IGV4aXRzLgorICAgICAgICAiIiIKKyAgICAgICAgb2xkX3N0YWNrID0gc2VsZi5fY2xl YW51cF9zdGFjaworICAgICAgICBzZWxmLl9jbGVhbnVwX3N0YWNrID0gY29udGV4dGxpYi5FeGl0 U3RhY2soKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLl9jbGVhbnVwX3N0YWNrLl9f ZW50ZXJfXygpCisgICAgICAgICAgICB5aWVsZCBzZWxmCisgICAgICAgIGZpbmFsbHk6CisgICAg ICAgICAgICBzZWxmLl9jbGVhbnVwX3N0YWNrLl9fZXhpdF9fKE5vbmUsIE5vbmUsIE5vbmUpCisg ICAgICAgICAgICBzZWxmLl9jbGVhbnVwX3N0YWNrID0gb2xkX3N0YWNrCisKKyAgICBkZWYgc3Rv cChzZWxmLCBtb2RlPSJmYXN0Iik6CisgICAgICAgICIiIgorICAgICAgICBTdG9wIHRoZSBQb3N0 Z3JlU1FMIHNlcnZlciBpbnN0YW5jZS4KKworICAgICAgICBJZ25vcmVzIGZhaWx1cmVzIGlmIHRo ZSBzZXJ2ZXIgaXMgYWxyZWFkeSBzdG9wcGVkLgorICAgICAgICAiIiIKKyAgICAgICAgdHJ5Ogor ICAgICAgICAgICAgc2VsZi5wZ19jdGwoInN0b3AiLCAiLS1tb2RlIiwgbW9kZSkKKyAgICAgICAg ZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yOgorICAgICAgICAgICAgIyBTZXJ2 ZXIgbWF5IGhhdmUgYWxyZWFkeSBiZWVuIHN0b3BwZWQKKyAgICAgICAgICAgIHBhc3MKKworICAg IGRlZiBsb2dfY29udGVudChzZWxmKSAtPiBzdHI6CisgICAgICAgICIiIlJldHVybiBsb2cgY29u dGVudCBmcm9tIHRoZSBjdXJyZW50IGNvbnRleHQncyBzdGFydCBwb3NpdGlvbi4iIiIKKyAgICAg ICAgd2l0aCBvcGVuKHNlbGYubG9nKSBhcyBmOgorICAgICAgICAgICAgZi5zZWVrKHNlbGYuX2xv Z19zdGFydF9wb3MpCisgICAgICAgICAgICByZXR1cm4gZi5yZWFkKCkKKworICAgIEBjb250ZXh0 bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIGxvZ19jb250YWlucyhzZWxmLCBwYXR0ZXJuLCB0 aW1lcz1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIENvbnRleHQgbWFuYWdlciB0aGF0IGNo ZWNrcyBpZiB0aGUgbG9nIG1hdGNoZXMgcGF0dGVybiBkdXJpbmcgdGhlIGJsb2NrLgorCisgICAg ICAgIEFyZ3M6CisgICAgICAgICAgICBwYXR0ZXJuOiBUaGUgcmVnZXggcGF0dGVybiB0byBzZWFy Y2ggZm9yLgorICAgICAgICAgICAgdGltZXM6IElmIE5vbmUsIGFueSBudW1iZXIgb2YgbWF0Y2hl cyBpcyBhY2NlcHRlZC4KKyAgICAgICAgICAgICAgICAgICBJZiBhIG51bWJlciwgZXhhY3RseSB0 aGF0IG1hbnkgbWF0Y2hlcyBhcmUgcmVxdWlyZWQuCisgICAgICAgICIiIgorICAgICAgICBzdGFy dF9wb3MgPSBzZWxmLmN1cnJlbnRfbG9nX3Bvc2l0aW9uKCkKKyAgICAgICAgeWllbGQKKyAgICAg ICAgd2l0aCBvcGVuKHNlbGYubG9nKSBhcyBmOgorICAgICAgICAgICAgZi5zZWVrKHN0YXJ0X3Bv cykKKyAgICAgICAgICAgIGNvbnRlbnQgPSBmLnJlYWQoKQorICAgICAgICBpZiB0aW1lcyBpcyBO b25lOgorICAgICAgICAgICAgYXNzZXJ0IHJlLnNlYXJjaChwYXR0ZXJuLCBjb250ZW50KSwgZiJQ YXR0ZXJuIHtwYXR0ZXJuIXJ9IG5vdCBmb3VuZCBpbiBsb2ciCisgICAgICAgIGVsc2U6CisgICAg ICAgICAgICBtYXRjaF9jb3VudCA9IGxlbihyZS5maW5kYWxsKHBhdHRlcm4sIGNvbnRlbnQpKQor ICAgICAgICAgICAgYXNzZXJ0IG1hdGNoX2NvdW50ID09IHRpbWVzLCAoCisgICAgICAgICAgICAg ICAgZiJFeHBlY3RlZCB7dGltZXN9IG1hdGNoZXMgb2Yge3BhdHRlcm4hcn0sIGZvdW5kIHttYXRj aF9jb3VudH0iCisgICAgICAgICAgICApCisKKyAgICBkZWYgY2xlYW51cChzZWxmKToKKyAgICAg ICAgIiIiUnVuIGFsbCByZWdpc3RlcmVkIGNsZWFudXAgY2FsbGJhY2tzLiIiIgorICAgICAgICBz ZWxmLl9jbGVhbnVwX3N0YWNrLmNsb3NlKCkKKworICAgIGRlZiBzZXRfdGltZW91dChzZWxmLCBy ZW1haW5pbmdfdGltZW91dF9mbjogQ2FsbGFibGVbW10sIGZsb2F0XSkgLT4gTm9uZToKKyAgICAg ICAgIiIiCisgICAgICAgIFNldCB0aGUgdGltZW91dCBmdW5jdGlvbiBmb3IgY29ubmVjdGlvbnMu CisgICAgICAgIFRoaXMgaXMgdHlwaWNhbGx5IGNhbGxlZCBieSBwZyBmaXh0dXJlIGZvciBlYWNo IHRlc3QuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9yZW1haW5pbmdfdGltZW91dF9mbiA9 IHJlbWFpbmluZ190aW1lb3V0X2ZuCisKKyAgICBkZWYgY29ubmVjdChzZWxmLCAqKm9wdHMpIC0+ IFBHY29ubjoKKyAgICAgICAgIiIiCisgICAgICAgIENyZWF0ZXMgYSBjb25uZWN0aW9uIHRvIHRo aXMgUG9zdGdyZVNRTCBzZXJ2ZXIgaW5zdGFuY2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAg ICAgICoqb3B0czogQWRkaXRpb25hbCBjb25uZWN0aW9uIG9wdGlvbnMgKGNhbiBvdmVycmlkZSBk ZWZhdWx0cykKKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgUEdjb25uOiBDb25uZWN0 ZWQgZGF0YWJhc2UgY29ubmVjdGlvbgorCisgICAgICAgIEV4YW1wbGU6CisgICAgICAgICAgICBj b25uID0gcGcuY29ubmVjdCgpCisgICAgICAgICAgICBjb25uID0gcGcuY29ubmVjdChkYm5hbWU9 J215ZGInKQorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5fcmVtYWluaW5nX3RpbWVvdXRf Zm4gaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKKyAgICAgICAgICAg ICAgICAiVGltZW91dCBmdW5jdGlvbiBub3Qgc2V0LiBVc2Ugc2V0X3RpbWVvdXQoKSBvciBwZyBm aXh0dXJlLiIKKyAgICAgICAgICAgICkKKworICAgICAgICBkZWZhdWx0cyA9IHsKKyAgICAgICAg ICAgICJob3N0Ijogc2VsZi5ob3N0LAorICAgICAgICAgICAgInBvcnQiOiBzZWxmLnBvcnQsCisg ICAgICAgICAgICAiZGJuYW1lIjogInBvc3RncmVzIiwKKyAgICAgICAgfQorICAgICAgICBkZWZh dWx0cy51cGRhdGUob3B0cykKKworICAgICAgICByZXR1cm4gbGlicHFfY29ubmVjdCgKKyAgICAg ICAgICAgIHNlbGYubGlicHFfaGFuZGxlLAorICAgICAgICAgICAgc2VsZi5fY2xlYW51cF9zdGFj aywKKyAgICAgICAgICAgIHNlbGYuX3JlbWFpbmluZ190aW1lb3V0X2ZuLAorICAgICAgICAgICAg KipkZWZhdWx0cywKKyAgICAgICAgKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcHl0ZXN0L3B5cGcv dXRpbC5weSBiL3NyYy90ZXN0L3B5dGVzdC9weXBnL3V0aWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLmIyYTFlNjI3ZTRiCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rlc3QvcHl0ZXN0L3B5cGcvdXRpbC5weQpAQCAtMCwwICsxLDQyIEBACisjIENvcHlyaWdodCAo YykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworaW1wb3J0IHNo bGV4CitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworCisKK2RlZiBlcHJpbnQoKmFyZ3Ms ICoqa3dhcmdzKToKKyAgICAiIiJlcHJpbnQgcHJpbnRzIHRvIHN0ZGVyciIiIgorICAgIHByaW50 KCphcmdzLCBmaWxlPXN5cy5zdGRlcnIsICoqa3dhcmdzKQorCisKK2RlZiBydW4oKmNvbW1hbmQs IGNoZWNrPVRydWUsIHNoZWxsPU5vbmUsIHNpbGVudD1GYWxzZSwgKiprd2FyZ3MpOgorICAgICIi InJ1biBydW5zIHRoZSBnaXZlbiBjb21tYW5kIGFuZCBwcmludHMgaXQgdG8gc3RkZXJyIiIiCisK KyAgICBpZiBzaGVsbCBpcyBOb25lOgorICAgICAgICBzaGVsbCA9IGxlbihjb21tYW5kKSA9PSAx IGFuZCBpc2luc3RhbmNlKGNvbW1hbmRbMF0sIHN0cikKKworICAgIGlmIHNoZWxsOgorICAgICAg ICBjb21tYW5kID0gY29tbWFuZFswXQorICAgIGVsc2U6CisgICAgICAgIGNvbW1hbmQgPSBsaXN0 KG1hcChzdHIsIGNvbW1hbmQpKQorCisgICAgaWYgbm90IHNpbGVudDoKKyAgICAgICAgaWYgc2hl bGw6CisgICAgICAgICAgICBlcHJpbnQoZiIrIHtjb21tYW5kfSIpCisgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICAjIFdlIGNvdWxkIG5vcm1hbGx5IHVzZSBzaGxleC5qb2luIGhlcmUsIGJ1dCBp dCdzIG5vdCBhdmFpbGFibGUgaW4KKyAgICAgICAgICAgICMgUHl0aG9uIDMuNiB3aGljaCB3ZSBz dGlsbCBsaWtlIHRvIHN1cHBvcnQKKyAgICAgICAgICAgIHVuc2FmZV9zdHJpbmdfY21kID0gIiAi LmpvaW4obWFwKHNobGV4LnF1b3RlLCBjb21tYW5kKSkKKyAgICAgICAgICAgIGVwcmludChmIisg e3Vuc2FmZV9zdHJpbmdfY21kfSIpCisKKyAgICBpZiBzaWxlbnQ6CisgICAgICAgIGt3YXJncy5z ZXRkZWZhdWx0KCJzdGRvdXQiLCBzdWJwcm9jZXNzLkRFVk5VTEwpCisKKyAgICByZXR1cm4gc3Vi cHJvY2Vzcy5ydW4oY29tbWFuZCwgY2hlY2s9Y2hlY2ssIHNoZWxsPXNoZWxsLCAqKmt3YXJncykK KworCitkZWYgY2FwdHVyZShjb21tYW5kLCAqYXJncywgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwg ZW5jb2Rpbmc9InV0Zi04IiwgKiprd2FyZ3MpOgorICAgIHJldHVybiBydW4oCisgICAgICAgIGNv bW1hbmQsICphcmdzLCBzdGRvdXQ9c3Rkb3V0LCBlbmNvZGluZz1lbmNvZGluZywgKiprd2FyZ3MK KyAgICApLnN0ZG91dC5yZW1vdmVzdWZmaXgoIlxuIikKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3B5 dGVzdC9weXQvY29uZnRlc3QucHkgYi9zcmMvdGVzdC9weXRlc3QvcHl0L2NvbmZ0ZXN0LnB5Cm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kZDczOTE3YzY4YwotLS0gL2Rl di9udWxsCisrKyBiL3NyYy90ZXN0L3B5dGVzdC9weXQvY29uZnRlc3QucHkKQEAgLTAsMCArMSBA QAorIyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdy b3VwCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9weXRlc3QvcHl0L3Rlc3RfZXJyb3JzLnB5IGIvc3Jj L3Rlc3QvcHl0ZXN0L3B5dC90ZXN0X2Vycm9ycy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uNzcxZmU4Zjc2ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9w eXRlc3QvcHl0L3Rlc3RfZXJyb3JzLnB5CkBAIC0wLDAgKzEsMzQgQEAKKyMgQ29weXJpZ2h0IChj KSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisiIiIKK1Rlc3Rz IGZvciBsaWJwcSBlcnJvciB0eXBlcyBhbmQgU1FMU1RBVEUtYmFzZWQgZXhjZXB0aW9uIG1hcHBp bmcuCisiIiIKKworaW1wb3J0IHB5dGVzdAorZnJvbSBsaWJwcSBpbXBvcnQgTGlicHFFcnJvcgor CisKK2RlZiB0ZXN0X3N5bnRheF9lcnJvcihjb25uKToKKyAgICAiIiJJbnZhbGlkIFNRTCBzeW50 YXggcmFpc2VzIExpYnBxRXJyb3Igd2l0aCBjb3JyZWN0IFNRTFNUQVRFLiIiIgorICAgIHdpdGgg cHl0ZXN0LnJhaXNlcyhMaWJwcUVycm9yKSBhcyBleGNfaW5mbzoKKyAgICAgICAgY29ubi5zcWwo IlNFTEVDIDEiKQorCisgICAgZXJyID0gZXhjX2luZm8udmFsdWUKKyAgICBhc3NlcnQgZXJyLnNx bHN0YXRlID09ICI0MjYwMSIKKyAgICBhc3NlcnQgZXJyLnNxbHN0YXRlX2NsYXNzID09ICI0MiIK KyAgICBhc3NlcnQgInN5bnRheCIgaW4gc3RyKGVycikubG93ZXIoKQorCisKK2RlZiB0ZXN0X3Vu aXF1ZV92aW9sYXRpb24oY29ubik6CisgICAgIiIiVW5pcXVlIHZpb2xhdGlvbiBpbmNsdWRlcyBh bGwgZXJyb3IgZmllbGRzLiIiIgorICAgIGNvbm4uc3FsKCJDUkVBVEUgVEVNUCBUQUJMRSB0ZXN0 X3V2IChpZCBpbnQgQ09OU1RSQUlOVCB0ZXN0X3V2X3BrIFBSSU1BUlkgS0VZKSIpCisgICAgY29u bi5zcWwoIklOU0VSVCBJTlRPIHRlc3RfdXYgVkFMVUVTICgxKSIpCisKKyAgICB3aXRoIHB5dGVz dC5yYWlzZXMoTGlicHFFcnJvcikgYXMgZXhjX2luZm86CisgICAgICAgIGNvbm4uc3FsKCJJTlNF UlQgSU5UTyB0ZXN0X3V2IFZBTFVFUyAoMSkiKQorCisgICAgZXJyID0gZXhjX2luZm8udmFsdWUK KyAgICBhc3NlcnQgZXJyLnNxbHN0YXRlID09ICIyMzUwNSIKKyAgICBhc3NlcnQgZXJyLnRhYmxl X25hbWUgPT0gInRlc3RfdXYiCisgICAgYXNzZXJ0IGVyci5jb25zdHJhaW50X25hbWUgPT0gInRl c3RfdXZfcGsiCisgICAgYXNzZXJ0IGVyci5kZXRhaWwgPT0gIktleSAoaWQpPSgxKSBhbHJlYWR5 IGV4aXN0cy4iCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9weXRlc3QvcHl0L3Rlc3RfbGlicHEucHkg Yi9zcmMvdGVzdC9weXRlc3QvcHl0L3Rlc3RfbGlicHEucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjRmY2Y0MDU2ZjQxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rl c3QvcHl0ZXN0L3B5dC90ZXN0X2xpYnBxLnB5CkBAIC0wLDAgKzEsMTcyIEBACisjIENvcHlyaWdo dCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworaW1wb3J0 IGNvbnRleHRsaWIKK2ltcG9ydCBvcworaW1wb3J0IHNvY2tldAoraW1wb3J0IHN0cnVjdAoraW1w b3J0IHRocmVhZGluZworZnJvbSB0eXBpbmcgaW1wb3J0IENhbGxhYmxlCisKK2ltcG9ydCBweXRl c3QKKworZnJvbSBsaWJwcSBpbXBvcnQgY29ubnN0ciwgTGlicHFFcnJvcgorCisKK0BweXRlc3Qu bWFyay5wYXJhbWV0cml6ZSgKKyAgICAib3B0cywgZXhwZWN0ZWQiLAorICAgIFsKKyAgICAgICAg KGRpY3QoKSwgIiIpLAorICAgICAgICAoZGljdChwb3J0PTU0MzIpLCAicG9ydD01NDMyIiksCisg ICAgICAgIChkaWN0KHBvcnQ9NTQzMiwgZGJuYW1lPSJwb3N0Z3JlcyIpLCAicG9ydD01NDMyIGRi bmFtZT1wb3N0Z3JlcyIpLAorICAgICAgICAoZGljdChob3N0PSIiKSwgImhvc3Q9JyciKSwKKyAg ICAgICAgKGRpY3QoaG9zdD0iICIpLCByImhvc3Q9JyAnIiksCisgICAgICAgIChkaWN0KGtleXdv cmQ9IiciKSwgciJrZXl3b3JkPVwnIiksCisgICAgICAgIChkaWN0KGtleXdvcmQ9IiBcXCcgIiks IHIia2V5d29yZD0nIFxcXCcgJyIpLAorICAgIF0sCispCitkZWYgdGVzdF9jb25uc3RyKG9wdHMs IGV4cGVjdGVkKToKKyAgICAiIiJUZXN0cyB0aGUgZXNjYXBlIGJlaGF2aW9yIGZvciBjb25uc3Ry KCkuIiIiCisgICAgYXNzZXJ0IGNvbm5zdHIob3B0cykgPT0gZXhwZWN0ZWQKKworCitkZWYgdGVz dF9tdXN0X2Nvbm5lY3RfZXJyb3JzKGNvbm5lY3QpOgorICAgICIiIlRlc3RzIHRoYXQgY29ubmVj dCgpIHJhaXNlcyBMaWJwcUVycm9yLiIiIgorICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhMaWJwcUVy cm9yLCBtYXRjaD0iaW52YWxpZCBjb25uZWN0aW9uIG9wdGlvbiIpOgorICAgICAgICBjb25uZWN0 KHNvbWVfdW5rbm93bl9rZXl3b3JkPSJ3aGF0ZXZlciIpCisKKworQHB5dGVzdC5maXh0dXJlCitk ZWYgbG9jYWxfc2VydmVyKHRtcF9wYXRoLCByZW1haW5pbmdfdGltZW91dCk6CisgICAgIiIiCisg ICAgT3BlbnMgdXAgYSBsb2NhbCBVTklYIHNvY2tldCBmb3IgbW9ja2luZyBhIFBvc3RncmVzIHNl cnZlciBvbiBhIGJhY2tncm91bmQKKyAgICB0aHJlYWQuIFNlZSB0aGUgX1NlcnZlciBBUEkgZm9y IHVzYWdlLgorCisgICAgVGhpcyBmaXh0dXJlIHJlcXVpcmVzIEFGX1VOSVggc3VwcG9ydDsgZGVw ZW5kZW50IHRlc3RzIHdpbGwgYmUgc2tpcHBlZCBvbgorICAgIHBsYXRmb3JtcyB0aGF0IGRvbid0 IHByb3ZpZGUgaXQuCisgICAgIiIiCisKKyAgICB0cnk6CisgICAgICAgIGZyb20gc29ja2V0IGlt cG9ydCBBRl9VTklYCisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICBweXRlc3Quc2tp cCgiQUZfVU5JWCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0iKQorCisgICAgY2xhc3Mg X1NlcnZlcihjb250ZXh0bGliLkV4aXRTdGFjayk6CisgICAgICAgICIiIgorICAgICAgICBJbXBs ZW1lbnRhdGlvbiBjbGFzcyBmb3IgbG9jYWxfc2VydmVyLiBTZWUgLmJhY2tncm91bmQoKSBmb3Ig dGhlIHByaW1hcnkKKyAgICAgICAgZW50cnkgcG9pbnQgZm9yIHRlc3RzLiBQb3N0Z3JlcyBjbGll bnRzIG1heSBjb25uZWN0IHRvIHRoaXMgc2VydmVyIHZpYQorICAgICAgICBsb2NhbF9zZXJ2ZXIu aG9zdC9sb2NhbF9zZXJ2ZXIucG9ydC4KKworICAgICAgICBfU2VydmVyIGRlcml2ZXMgZnJvbSBj b250ZXh0bGliLkV4aXRTdGFjayB0byBwcm92aWRlIGVhc3kgY2xlYW51cCBvZgorICAgICAgICBh c3NvY2lhdGVkIHJlc291cmNlczsgc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGF0IGNsYXNz IGZvciBhIGZ1bGwKKyAgICAgICAgZXhwbGFuYXRpb24uCisgICAgICAgICIiIgorCisgICAgICAg IGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18oKQorCisg ICAgICAgICAgICBzZWxmLmhvc3QgPSB0bXBfcGF0aAorICAgICAgICAgICAgc2VsZi5wb3J0ID0g NTQzMgorCisgICAgICAgICAgICBzZWxmLl90aHJlYWQgPSBOb25lCisgICAgICAgICAgICBzZWxm Ll90aHJlYWRfZXhjID0gTm9uZQorICAgICAgICAgICAgc2VsZi5fbGlzdGVuZXIgPSBzZWxmLmVu dGVyX2NvbnRleHQoCisgICAgICAgICAgICAgICAgc29ja2V0LnNvY2tldChBRl9VTklYLCBzb2Nr ZXQuU09DS19TVFJFQU0pLAorICAgICAgICAgICAgKQorCisgICAgICAgIGRlZiBiaW5kX2FuZF9s aXN0ZW4oc2VsZik6CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIERvZXMgdGhlIGFjdHVh bCB3b3JrIG9mIGJpbmRpbmcgdGhlIFVOSVggc29ja2V0IHVzaW5nIHRoZSBQb3N0Z3JlcworICAg ICAgICAgICAgc2VydmVyIGNvbnZlbnRpb25zIGFuZCBsaXN0ZW5pbmcgZm9yIGNvbm5lY3Rpb25z LgorCisgICAgICAgICAgICBUaGUgbGlzdGVuIGJhY2tsb2cgaXMgY3VycmVudGx5IGhhcmRjb2Rl ZCB0byBvbmUuCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIHNvY2tmaWxlID0gc2VsZi5o b3N0IC8gIi5zLlBHU1FMLnt9Ii5mb3JtYXQoc2VsZi5wb3J0KQorCisgICAgICAgICAgICAjIExv Y2sgZG93biB0aGUgcGVybWlzc2lvbnMgb24gdGhlIG5ldyBzb2NrZXQuCisgICAgICAgICAgICBw cmV2X21hc2sgPSBvcy51bWFzaygwbzA3NykKKworICAgICAgICAgICAgIyBCaW5kIChjcmVhdGlu ZyB0aGUgc29ja2V0IGZpbGUpLCBhbmQgaW1tZWRpYXRlbHkgcmVnaXN0ZXIgaXQgZm9yCisgICAg ICAgICAgICAjIGRlbGV0aW9uIGZyb20gZGlzayB3aGVuIHRoZSBzdGFjayBpcyBjbGVhbmVkIHVw LgorICAgICAgICAgICAgc2VsZi5fbGlzdGVuZXIuYmluZChieXRlcyhzb2NrZmlsZSkpCisgICAg ICAgICAgICBzZWxmLmNhbGxiYWNrKG9zLnVubGluaywgc29ja2ZpbGUpCisKKyAgICAgICAgICAg IG9zLnVtYXNrKHByZXZfbWFzaykKKworICAgICAgICAgICAgc2VsZi5fbGlzdGVuZXIubGlzdGVu KDEpCisKKyAgICAgICAgZGVmIGJhY2tncm91bmQoc2VsZiwgZm46IENhbGxhYmxlW1tzb2NrZXQu c29ja2V0XSwgTm9uZV0pIC0+IE5vbmU6CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIEFj Y2VwdHMgYSBjbGllbnQgY29ubmVjdGlvbiBvbiBhIGJhY2tncm91bmQgdGhyZWFkIGFuZCBwYXNz ZXMgaXQgdG8KKyAgICAgICAgICAgIHRoZSBwcm92aWRlZCBjYWxsYmFjay4gQW55IGV4Y2VwdGlv bnMgcmFpc2VkIGZyb20gdGhlIGNhbGxiYWNrIHdpbGwKKyAgICAgICAgICAgIGJlIHJlLXJhaXNl ZCBvbiB0aGUgbWFpbiB0aHJlYWQgZHVyaW5nIGZpeHR1cmUgdGVhcmRvd24uCisKKyAgICAgICAg ICAgIEJsb2NraW5nIG9wZXJhdGlvbnMgb24gdGhlIGNvbm5lY3RlZCBzb2NrZXQgZGVmYXVsdCB0 byB1c2luZyB0aGUKKyAgICAgICAgICAgIHJlbWFpbmluZ190aW1lb3V0KCksIHRob3VnaCB0aGlz IGNhbiBiZSBjaGFuZ2VkIGJ5IHRoZSB0ZXN0IHZpYSB0aGUKKyAgICAgICAgICAgIHNvY2tldCdz IC5zZXR0aW1lb3V0KCkuCisgICAgICAgICAgICAiIiIKKworICAgICAgICAgICAgZGVmIF9iZygp OgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fbGlzdGVu ZXIuc2V0dGltZW91dChyZW1haW5pbmdfdGltZW91dCgpKQorICAgICAgICAgICAgICAgICAgICBz b2NrLCBfID0gc2VsZi5fbGlzdGVuZXIuYWNjZXB0KCkKKworICAgICAgICAgICAgICAgICAgICB3 aXRoIHNvY2s6CisgICAgICAgICAgICAgICAgICAgICAgICBzb2NrLnNldHRpbWVvdXQocmVtYWlu aW5nX3RpbWVvdXQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZuKHNvY2spCisKKyAgICAg ICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICMg U2F2ZSB0aGUgZXhjZXB0aW9uIGZvciByZS1yYWlzaW5nIG9uIHRoZSBtYWluIHRocmVhZC4KKyAg ICAgICAgICAgICAgICAgICAgc2VsZi5fdGhyZWFkX2V4YyA9IGUKKworICAgICAgICAgICAgIyBU T0RPOiByYXRoZXIgdGhhbiB1c2luZyBjYWxsYmFjaygpLCBjb25zaWRlciBleHBsaWNpdGx5IHNp Z25hbGluZworICAgICAgICAgICAgIyB0aGUgZm4oKSBpbXBsZW1lbnRhdGlvbiB0byBzdG9wIGVh cmx5IGlmIHdlIGdldCBhbiBleGNlcHRpb24uCisgICAgICAgICAgICAjIE90aGVyd2lzZSB3ZSds bCBoYW5nIHVudGlsIHRoZSBlbmQgb2YgdGhlIHRpbWVvdXQuCisgICAgICAgICAgICBzZWxmLl90 aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1fYmcpCisgICAgICAgICAgICBzZWxmLmNh bGxiYWNrKHNlbGYuX2pvaW4pCisKKyAgICAgICAgICAgIHNlbGYuX3RocmVhZC5zdGFydCgpCisK KyAgICAgICAgZGVmIF9qb2luKHNlbGYpOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBX YWl0cyBmb3IgdGhlIGJhY2tncm91bmQgdGhyZWFkIHRvIGZpbmlzaCBhbmQgcmFpc2VzIGFueSB0 aHJvd24KKyAgICAgICAgICAgIGV4Y2VwdGlvbi4gVGhpcyBpcyBjYWxsZWQgZHVyaW5nIGZpeHR1 cmUgdGVhcmRvd24uCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICMgR2l2ZSBhIGxpdHRs ZSBiaXQgb2Ygd2lnZ2xlIHJvb20gb24gdGhlIGpvaW4gdGltZW91dCwgc2luY2Ugd2UncmUKKyAg ICAgICAgICAgICMgcmFjaW5nIGFnYWluc3QgdGhlIHRlc3QncyBvd24gdXNlIG9mIHJlbWFpbmlu Z190aW1lb3V0KCkuIChJdCdzCisgICAgICAgICAgICAjIHByZWZlcmFibGUgdG8gbGV0IHRlc3Rz IHJlcG9ydCB0aW1lb3V0czsgdGhlIHN0YWNrIHRyYWNlcyB3aWxsCisgICAgICAgICAgICAjIGhl bHAgd2l0aCBkZWJ1Z2dpbmcuKQorICAgICAgICAgICAgc2VsZi5fdGhyZWFkLmpvaW4ocmVtYWlu aW5nX3RpbWVvdXQoKSArIDEpCisgICAgICAgICAgICBpZiBzZWxmLl90aHJlYWQuaXNfYWxpdmUo KToKKyAgICAgICAgICAgICAgICByYWlzZSBUaW1lb3V0RXJyb3IoImJhY2tncm91bmQgdGhyZWFk IGlzIHN0aWxsIHJ1bm5pbmcgYWZ0ZXIgdGltZW91dCIpCisKKyAgICAgICAgICAgIGlmIHNlbGYu X3RocmVhZF9leGMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5fdGhy ZWFkX2V4YworCisgICAgd2l0aCBfU2VydmVyKCkgYXMgczoKKyAgICAgICAgcy5iaW5kX2FuZF9s aXN0ZW4oKQorICAgICAgICB5aWVsZCBzCisKKworZGVmIHRlc3RfY29ubmVjdGlvbl9pc19maW5p c2hlZF9vbl9lcnJvcihjb25uZWN0LCBsb2NhbF9zZXJ2ZXIpOgorICAgICIiIlRlc3RzIHRoYXQg UFFmaW5pc2goKSBnZXRzIGNhbGxlZCBhdCB0aGUgZW5kIG9mIHRlc3RpbmcuIiIiCisgICAgZXhw ZWN0ZWRfZXJyb3IgPSAic29tZXRoaW5nIGlzIHdyb25nIgorCisgICAgZGVmIHNlcnZlX2Vycm9y KHM6IHNvY2tldC5zb2NrZXQpIC0+IE5vbmU6CisgICAgICAgIHBrdGxlbiA9IHN0cnVjdC51bnBh Y2soIiFJIiwgcy5yZWN2KDQpKVswXQorCisgICAgICAgICMgUXVpY2sgY2hlY2sgZm9yIHRoZSBz dGFydHVwIHBhY2tldCB2ZXJzaW9uLgorICAgICAgICB2ZXJzaW9uID0gc3RydWN0LnVucGFjaygi IUhIIiwgcy5yZWN2KDQpKQorICAgICAgICBhc3NlcnQgdmVyc2lvbiA9PSAoMywgMCkKKworICAg ICAgICAjIERpc2NhcmQgdGhlIHJlbWFpbmRlciBvZiB0aGUgc3RhcnR1cCBwYWNrZXQgYW5kIHNl bmQgYSB2MiBlcnJvci4KKyAgICAgICAgcy5yZWN2KHBrdGxlbiAtIDgpCisgICAgICAgIHMuc2Vu ZChiIkUiICsgZXhwZWN0ZWRfZXJyb3IuZW5jb2RlKCkgKyBiIlwwIikKKworICAgICAgICAjIEFu ZCBub3cgdGhlIHNvY2tldCBzaG91bGQgYmUgY2xvc2VkLgorICAgICAgICBhc3NlcnQgbm90IHMu cmVjdigxKSwgImNsaWVudCBzZW50IHVuZXhwZWN0ZWQgZGF0YSIKKworICAgIGxvY2FsX3NlcnZl ci5iYWNrZ3JvdW5kKHNlcnZlX2Vycm9yKQorCisgICAgd2l0aCBweXRlc3QucmFpc2VzKExpYnBx RXJyb3IsIG1hdGNoPWV4cGVjdGVkX2Vycm9yKToKKyAgICAgICAgIyBFeGl0aW5nIHRoaXMgY29u dGV4dCBzaG91bGQgcmVzdWx0IGluIFBRZmluaXNoKCkuCisgICAgICAgIGNvbm5lY3QoaG9zdD1s b2NhbF9zZXJ2ZXIuaG9zdCwgcG9ydD1sb2NhbF9zZXJ2ZXIucG9ydCkKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3B5dGVzdC9weXQvdGVzdF9tdWx0aV9zZXJ2ZXIucHkgYi9zcmMvdGVzdC9weXRlc3Qv cHl0L3Rlc3RfbXVsdGlfc2VydmVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi44ZWUwNDViMGNjOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3B5dGVzdC9w eXQvdGVzdF9tdWx0aV9zZXJ2ZXIucHkKQEAgLTAsMCArMSw0NiBAQAorIyBDb3B5cmlnaHQgKGMp IDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyIiIgorVGVzdHMg ZGVtb25zdHJhdGluZyBtdWx0aS1zZXJ2ZXIgZnVuY3Rpb25hbGl0eSB1c2luZyBjcmVhdGVfcGcg Zml4dHVyZS4KKworVGhlc2UgdGVzdHMgdmVyaWZ5IHRoYXQgdGhlIHB5dGVzdCBpbmZyYXN0cnVj dHVyZSBjb3JyZWN0bHkgaGFuZGxlcworbXVsdGlwbGUgUG9zdGdyZVNRTCBzZXJ2ZXIgaW5zdGFu Y2VzIHdpdGhpbiBhIHNpbmdsZSB0ZXN0LCBhbmQgdGhhdAorbW9kdWxlLXNjb3BlZCBzZXJ2ZXJz IHBlcnNpc3QgYWNyb3NzIHRlc3RzLgorIiIiCisKK2ltcG9ydCBweXRlc3QKKworCitkZWYgdGVz dF9tdWx0aXBsZV9zZXJ2ZXJzX2Jhc2ljKGNyZWF0ZV9wZyk6CisgICAgIiIiVGVzdCB0aGF0IHdl IGNhbiBjcmVhdGUgYW5kIGNvbm5lY3QgdG8gbXVsdGlwbGUgc2VydmVycy4iIiIKKyAgICBub2Rl MSA9IGNyZWF0ZV9wZygicHJpbWFyeSIpCisgICAgbm9kZTIgPSBjcmVhdGVfcGcoInNlY29uZGFy eSIpCisKKyAgICBjb25uMSA9IG5vZGUxLmNvbm5lY3QoKQorICAgIGNvbm4yID0gbm9kZTIuY29u bmVjdCgpCisKKyAgICAjIEVhY2ggc2VydmVyIHNob3VsZCBoYXZlIGl0cyBvd24gZGF0YSBkaXJl Y3RvcnkKKyAgICBkYXRhZGlyMSA9IGNvbm4xLnNxbCgiU0hPVyBkYXRhX2RpcmVjdG9yeSIpCisg ICAgZGF0YWRpcjIgPSBjb25uMi5zcWwoIlNIT1cgZGF0YV9kaXJlY3RvcnkiKQorICAgIGFzc2Vy dCBkYXRhZGlyMSAhPSBkYXRhZGlyMgorCisgICAgIyBFYWNoIHNlcnZlciBzaG91bGQgYmUgbGlz dGVuaW5nIG9uIGEgZGlmZmVyZW50IHBvcnQKKyAgICBhc3NlcnQgbm9kZTEucG9ydCAhPSBub2Rl Mi5wb3J0CisKKworQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJtb2R1bGUiKQorZGVmIHNoYXJlZF9z ZXJ2ZXIoY3JlYXRlX3BnX21vZHVsZSk6CisgICAgIiIiQSBzZXJ2ZXIgc2hhcmVkIGFjcm9zcyBh bGwgdGVzdHMgaW4gdGhpcyBtb2R1bGUuIiIiCisgICAgc2VydmVyID0gY3JlYXRlX3BnX21vZHVs ZSgic2hhcmVkIikKKyAgICBzZXJ2ZXIuc3FsKCJDUkVBVEUgVEFCTEUgbW9kdWxlX3N0YXRlICh2 YWx1ZSBpbnQgREVGQVVMVCAwKSIpCisgICAgcmV0dXJuIHNlcnZlcgorCisKK2RlZiB0ZXN0X21v ZHVsZV9zZXJ2ZXJfY3JlYXRlX3JvdyhzaGFyZWRfc2VydmVyKToKKyAgICAiIiJGaXJzdCB0ZXN0 OiBjcmVhdGUgYSByb3cgaW4gdGhlIHNoYXJlZCBzZXJ2ZXIuIiIiCisgICAgc2hhcmVkX3NlcnZl ci5jb25uZWN0KCkuc3FsKCJJTlNFUlQgSU5UTyBtb2R1bGVfc3RhdGUgVkFMVUVTICg0MikiKQor CisKK2RlZiB0ZXN0X21vZHVsZV9zZXJ2ZXJfc2VlX3JvdyhzaGFyZWRfc2VydmVyKToKKyAgICAi IiJTZWNvbmQgdGVzdDogdmVyaWZ5IHdlIHNlZSB0aGUgcm93IGZyb20gdGhlIHByZXZpb3VzIHRl c3QuIiIiCisgICAgYXNzZXJ0IHNoYXJlZF9zZXJ2ZXIuY29ubmVjdCgpLnNxbCgiU0VMRUNUIHZh bHVlIEZST00gbW9kdWxlX3N0YXRlIikgPT0gNDIKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3B5dGVz dC9weXQvdGVzdF9xdWVyeV9oZWxwZXJzLnB5IGIvc3JjL3Rlc3QvcHl0ZXN0L3B5dC90ZXN0X3F1 ZXJ5X2hlbHBlcnMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmFi Y2Q5MDg0MjE0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcHl0ZXN0L3B5dC90ZXN0X3F1 ZXJ5X2hlbHBlcnMucHkKQEAgLTAsMCArMSwzNDcgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI1LCBQ b3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisiIiIKK1Rlc3RzIGZvciBxdWVy eSBoZWxwZXIgZnVuY3Rpb25zIHdpdGggdHlwZSBjb252ZXJzaW9uIGFuZCByZXN1bHQgc2ltcGxp ZmljYXRpb24uCisiIiIKKworaW1wb3J0IHV1aWQKKworaW1wb3J0IHB5dGVzdAorCisKK2RlZiB0 ZXN0X3NpbmdsZV9jZWxsX2ludChjb25uKToKKyAgICAiIiJTaW5nbGUgY2VsbCBpbnRlZ2VyIHF1 ZXJ5IHJldHVybnMganVzdCB0aGUgdmFsdWUuIiIiCisgICAgcmVzdWx0ID0gY29ubi5zcWwoIlNF TEVDVCAxIikKKyAgICBhc3NlcnQgcmVzdWx0ID09IDEKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShy ZXN1bHQsIGludCkKKworCitkZWYgdGVzdF9zaW5nbGVfY2VsbF9zdHJpbmcoY29ubik6CisgICAg IiIiU2luZ2xlIGNlbGwgc3RyaW5nIHF1ZXJ5IHJldHVybnMganVzdCB0aGUgdmFsdWUuIiIiCisg ICAgcmVzdWx0ID0gY29ubi5zcWwoIlNFTEVDVCAnaGVsbG8nIikKKyAgICBhc3NlcnQgcmVzdWx0 ID09ICJoZWxsbyIKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXN1bHQsIHN0cikKKworCitkZWYg dGVzdF9zaW5nbGVfY2VsbF9ib29sKGNvbm4pOgorICAgICIiIlNpbmdsZSBjZWxsIGJvb2xlYW4g cXVlcnkgcmV0dXJucyBqdXN0IHRoZSB2YWx1ZS4iIiIKKworICAgIHJlc3VsdCA9IGNvbm4uc3Fs KCJTRUxFQ1QgdHJ1ZSIpCisgICAgYXNzZXJ0IHJlc3VsdCBpcyBUcnVlCisgICAgYXNzZXJ0IGlz aW5zdGFuY2UocmVzdWx0LCBib29sKQorCisgICAgcmVzdWx0ID0gY29ubi5zcWwoIlNFTEVDVCBm YWxzZSIpCisgICAgYXNzZXJ0IHJlc3VsdCBpcyBGYWxzZQorCisKK2RlZiB0ZXN0X3NpbmdsZV9j ZWxsX2Zsb2F0KGNvbm4pOgorICAgICIiIlNpbmdsZSBjZWxsIGZsb2F0IHF1ZXJ5IHJldHVybnMg anVzdCB0aGUgdmFsdWUuIiIiCisKKyAgICByZXN1bHQgPSBjb25uLnNxbCgiU0VMRUNUIDMuMTQ6 OmZsb2F0NCIpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVzdWx0LCBmbG9hdCkKKyAgICBhc3Nl cnQgYWJzKHJlc3VsdCAtIDMuMTQpIDwgMC4wMQorCisKK2RlZiB0ZXN0X3NpbmdsZV9jZWxsX251 bGwoY29ubik6CisgICAgIiIiU2luZ2xlIGNlbGwgTlVMTCBxdWVyeSByZXR1cm5zIE5vbmUuIiIi CisKKyAgICByZXN1bHQgPSBjb25uLnNxbCgiU0VMRUNUIE5VTEwiKQorICAgIGFzc2VydCByZXN1 bHQgaXMgTm9uZQorCisKK2RlZiB0ZXN0X3NpbmdsZV9yb3dfbXVsdGlwbGVfY29sdW1ucyhjb25u KToKKyAgICAiIiJTaW5nbGUgcm93IHdpdGggbXVsdGlwbGUgY29sdW1ucyByZXR1cm5zIGEgdHVw bGUuIiIiCisKKyAgICByZXN1bHQgPSBjb25uLnNxbCgiU0VMRUNUIDEsICdoZWxsbycsIHRydWUi KQorICAgIGFzc2VydCByZXN1bHQgPT0gKDEsICJoZWxsbyIsIFRydWUpCisgICAgYXNzZXJ0IGlz aW5zdGFuY2UocmVzdWx0LCB0dXBsZSkKKworCitkZWYgdGVzdF9zaW5nbGVfY29sdW1uX211bHRp cGxlX3Jvd3MoY29ubik6CisgICAgIiIiU2luZ2xlIGNvbHVtbiB3aXRoIG11bHRpcGxlIHJvd3Mg cmV0dXJucyBhIGxpc3Qgb2YgdmFsdWVzLiIiIgorCisgICAgcmVzdWx0ID0gY29ubi5zcWwoIlNF TEVDVCAqIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMpIikKKyAgICBhc3NlcnQgcmVzdWx0ID09 IFsxLCAyLCAzXQorICAgIGFzc2VydCBpc2luc3RhbmNlKHJlc3VsdCwgbGlzdCkKKworCitkZWYg dGVzdF9tdWx0aXBsZV9yb3dzX2FuZF9jb2x1bW5zKGNvbm4pOgorICAgICIiIk11bHRpcGxlIHJv d3MgYW5kIGNvbHVtbnMgcmV0dXJucyBsaXN0IG9mIHR1cGxlcy4iIiIKKworICAgIHJlc3VsdCA9 IGNvbm4uc3FsKCJTRUxFQ1QgKiBGUk9NIChWQUxVRVMgKDEsICdhJyksICgyLCAnYicpLCAoMywg J2MnKSkgQVMgdCIpCisgICAgYXNzZXJ0IHJlc3VsdCA9PSBbKDEsICJhIiksICgyLCAiYiIpLCAo MywgImMiKV0KKyAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXN1bHQsIGxpc3QpCisgICAgYXNzZXJ0 IGFsbChpc2luc3RhbmNlKHJvdywgdHVwbGUpIGZvciByb3cgaW4gcmVzdWx0KQorCisKK2RlZiB0 ZXN0X2VtcHR5X3Jlc3VsdChjb25uKToKKyAgICAiIiJFbXB0eSByZXN1bHQgc2V0IHJldHVybnMg ZW1wdHkgbGlzdC4iIiIKKworICAgIHJlc3VsdCA9IGNvbm4uc3FsKCJTRUxFQ1QgMSBXSEVSRSBm YWxzZSIpCisgICAgYXNzZXJ0IHJlc3VsdCA9PSBbXQorCisKK2RlZiB0ZXN0X3F1ZXJ5X2Vycm9y X2hhbmRsaW5nKGNvbm4pOgorICAgICIiIlF1ZXJ5IGVycm9ycyByYWlzZSBSdW50aW1lRXJyb3Ig d2l0aCBhY3R1YWwgZXJyb3IgbWVzc2FnZS4iIiIKKworICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhS dW50aW1lRXJyb3IpIGFzIGV4Y19pbmZvOgorICAgICAgICBjb25uLnNxbCgiU0VMRUNUICogRlJP TSBub25leGlzdGVudF90YWJsZSIpCisKKyAgICBlcnJvcl9tc2cgPSBzdHIoZXhjX2luZm8udmFs dWUpCisgICAgYXNzZXJ0ICJub25leGlzdGVudF90YWJsZSIgaW4gZXJyb3JfbXNnIG9yICJkb2Vz IG5vdCBleGlzdCIgaW4gZXJyb3JfbXNnCisKKworZGVmIHRlc3RfZGl2aXNpb25fYnlfemVyb19l cnJvcihjb25uKToKKyAgICAiIiJEaXZpc2lvbiBieSB6ZXJvIHJhaXNlcyBSdW50aW1lRXJyb3Iu IiIiCisKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMoUnVudGltZUVycm9yKSBhcyBleGNfaW5mbzoK KyAgICAgICAgY29ubi5zcWwoIlNFTEVDVCAxLzAiKQorCisgICAgZXJyb3JfbXNnID0gc3RyKGV4 Y19pbmZvLnZhbHVlKQorICAgIGFzc2VydCAiZGl2aXNpb24gYnkgemVybyIgaW4gZXJyb3JfbXNn Lmxvd2VyKCkKKworCitkZWYgdGVzdF9zaW1wbGVfZXhlY19jcmVhdGVfdGFibGUoY29ubik6Cisg ICAgIiIic3FsIGZvciBDUkVBVEUgVEFCTEUgcmV0dXJucyBOb25lLiIiIgorCisgICAgcmVzdWx0 ID0gY29ubi5zcWwoIkNSRUFURSBURU1QIFRBQkxFIHRlc3RfdGFibGUgKGlkIGludCwgbmFtZSB0 ZXh0KSIpCisgICAgYXNzZXJ0IHJlc3VsdCBpcyBOb25lCisKKyAgICAjIFZlcmlmeSB0YWJsZSB3 YXMgY3JlYXRlZAorICAgIGNvdW50ID0gY29ubi5zcWwoIlNFTEVDVCBDT1VOVCgqKSBGUk9NIHRl c3RfdGFibGUiKQorICAgIGFzc2VydCBjb3VudCA9PSAwCisKKworZGVmIHRlc3Rfc2ltcGxlX2V4 ZWNfaW5zZXJ0KGNvbm4pOgorICAgICIiInNxbCBmb3IgSU5TRVJUIHJldHVybnMgTm9uZS4iIiIK KworICAgIGNvbm4uc3FsKCJDUkVBVEUgVEVNUCBUQUJMRSB0ZXN0X3RhYmxlIChpZCBpbnQsIG5h bWUgdGV4dCkiKQorICAgIHJlc3VsdCA9IGNvbm4uc3FsKCJJTlNFUlQgSU5UTyB0ZXN0X3RhYmxl IFZBTFVFUyAoMSwgJ0FsaWNlJyksICgyLCAnQm9iJykiKQorICAgIGFzc2VydCByZXN1bHQgaXMg Tm9uZQorCisgICAgIyBWZXJpZnkgZGF0YSB3YXMgaW5zZXJ0ZWQKKyAgICBjb3VudCA9IGNvbm4u c3FsKCJTRUxFQ1QgQ09VTlQoKikgRlJPTSB0ZXN0X3RhYmxlIikKKyAgICBhc3NlcnQgY291bnQg PT0gMgorCisKK2RlZiB0ZXN0X3R5cGVfY29udmVyc2lvbl9taXhlZChjb25uKToKKyAgICAiIiJU ZXN0IG1peGVkIHR5cGUgY29udmVyc2lvbiBpbiBhIHNpbmdsZSByb3cuIiIiCisKKyAgICByZXN1 bHQgPSBjb25uLnNxbCgiU0VMRUNUIDQyOjppbnQ0LCAxMjM6OmludDgsIDMuMTQ6OmZsb2F0OCwg J3RleHQnLCB0cnVlLCBOVUxMIikKKyAgICBhc3NlcnQgcmVzdWx0ID09ICg0MiwgMTIzLCAzLjE0 LCAidGV4dCIsIFRydWUsIE5vbmUpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVzdWx0WzBdLCBp bnQpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVzdWx0WzFdLCBpbnQpCisgICAgYXNzZXJ0IGlz aW5zdGFuY2UocmVzdWx0WzJdLCBmbG9hdCkKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXN1bHRb M10sIHN0cikKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXN1bHRbNF0sIGJvb2wpCisgICAgYXNz ZXJ0IHJlc3VsdFs1XSBpcyBOb25lCisKKworZGVmIHRlc3RfbXVsdGlwbGVfcXVlcmllc19zYW1l X2Nvbm5lY3Rpb24oY29ubik6CisgICAgIiIiVGVzdCBydW5uaW5nIG11bHRpcGxlIHF1ZXJpZXMg b24gdGhlIHNhbWUgY29ubmVjdGlvbi4iIiIKKworICAgIHJlc3VsdDEgPSBjb25uLnNxbCgiU0VM RUNUIDEiKQorICAgIGFzc2VydCByZXN1bHQxID09IDEKKworICAgIHJlc3VsdDIgPSBjb25uLnNx bCgiU0VMRUNUICdoZWxsbycsICd3b3JsZCciKQorICAgIGFzc2VydCByZXN1bHQyID09ICgiaGVs bG8iLCAid29ybGQiKQorCisgICAgcmVzdWx0MyA9IGNvbm4uc3FsKCJTRUxFQ1QgKiBGUk9NIGdl bmVyYXRlX3NlcmllcygxLCA1KSIpCisgICAgYXNzZXJ0IHJlc3VsdDMgPT0gWzEsIDIsIDMsIDQs IDVdCisKKworZGVmIHRlc3RfZGF0ZV90eXBlKGNvbm4pOgorICAgICIiIlRlc3QgZGF0ZSB0eXBl IGNvbnZlcnNpb24uIiIiCisgICAgaW1wb3J0IGRhdGV0aW1lCisKKyAgICByZXN1bHQgPSBjb25u LnNxbCgiU0VMRUNUICcyMDI1LTEwLTIwJzo6ZGF0ZSIpCisgICAgYXNzZXJ0IHJlc3VsdCA9PSBk YXRldGltZS5kYXRlKDIwMjUsIDEwLCAyMCkKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXN1bHQs IGRhdGV0aW1lLmRhdGUpCisKKworZGVmIHRlc3RfdGltZXN0YW1wX3R5cGUoY29ubik6CisgICAg IiIiVGVzdCB0aW1lc3RhbXAgdHlwZSBjb252ZXJzaW9uLiIiIgorICAgIGltcG9ydCBkYXRldGlt ZQorCisgICAgcmVzdWx0ID0gY29ubi5zcWwoIlNFTEVDVCAnMjAyNS0xMC0yMCAxNTozMDo0NSc6 OnRpbWVzdGFtcCIpCisgICAgYXNzZXJ0IHJlc3VsdCA9PSBkYXRldGltZS5kYXRldGltZSgyMDI1 LCAxMCwgMjAsIDE1LCAzMCwgNDUpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVzdWx0LCBkYXRl dGltZS5kYXRldGltZSkKKworCitkZWYgdGVzdF90aW1lX3R5cGUoY29ubik6CisgICAgIiIiVGVz dCB0aW1lIHR5cGUgY29udmVyc2lvbi4iIiIKKyAgICBpbXBvcnQgZGF0ZXRpbWUKKworICAgIHJl c3VsdCA9IGNvbm4uc3FsKCJTRUxFQ1QgJzE1OjMwOjQ1Jzo6dGltZSIpCisgICAgYXNzZXJ0IHJl c3VsdCA9PSBkYXRldGltZS50aW1lKDE1LCAzMCwgNDUpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2Uo cmVzdWx0LCBkYXRldGltZS50aW1lKQorCisKK2RlZiB0ZXN0X251bWVyaWNfdHlwZShjb25uKToK KyAgICAiIiJUZXN0IG51bWVyaWMvZGVjaW1hbCB0eXBlIGNvbnZlcnNpb24uIiIiCisgICAgaW1w b3J0IGRlY2ltYWwKKworICAgIHJlc3VsdCA9IGNvbm4uc3FsKCJTRUxFQ1QgMTIzLjQ1Njo6bnVt ZXJpYyIpCisgICAgYXNzZXJ0IHJlc3VsdCA9PSBkZWNpbWFsLkRlY2ltYWwoIjEyMy40NTYiKQor ICAgIGFzc2VydCBpc2luc3RhbmNlKHJlc3VsdCwgZGVjaW1hbC5EZWNpbWFsKQorCisKK2RlZiB0 ZXN0X2ludF9hcnJheShjb25uKToKKyAgICAiIiJUZXN0IGludGVnZXIgYXJyYXkgdHlwZSBjb252 ZXJzaW9uLiIiIgorCisgICAgcmVzdWx0ID0gY29ubi5zcWwoIlNFTEVDVCBBUlJBWVsxLCAyLCAz LCA0LCA1XSIpCisgICAgYXNzZXJ0IHJlc3VsdCA9PSBbMSwgMiwgMywgNCwgNV0KKyAgICBhc3Nl cnQgaXNpbnN0YW5jZShyZXN1bHQsIGxpc3QpCisgICAgYXNzZXJ0IGFsbChpc2luc3RhbmNlKHgs IGludCkgZm9yIHggaW4gcmVzdWx0KQorCisKK2RlZiB0ZXN0X3RleHRfYXJyYXkoY29ubik6Cisg ICAgIiIiVGVzdCB0ZXh0IGFycmF5IHR5cGUgY29udmVyc2lvbi4iIiIKKworICAgIHJlc3VsdCA9 IGNvbm4uc3FsKCJTRUxFQ1QgQVJSQVlbJ2hlbGxvJywgJ3dvcmxkJywgJ3Rlc3QnXSIpCisgICAg YXNzZXJ0IHJlc3VsdCA9PSBbImhlbGxvIiwgIndvcmxkIiwgInRlc3QiXQorICAgIGFzc2VydCBp c2luc3RhbmNlKHJlc3VsdCwgbGlzdCkKKyAgICBhc3NlcnQgYWxsKGlzaW5zdGFuY2UoeCwgc3Ry KSBmb3IgeCBpbiByZXN1bHQpCisKKworZGVmIHRlc3RfYm9vbF9hcnJheShjb25uKToKKyAgICAi IiJUZXN0IGJvb2xlYW4gYXJyYXkgdHlwZSBjb252ZXJzaW9uLiIiIgorCisgICAgcmVzdWx0ID0g Y29ubi5zcWwoIlNFTEVDVCBBUlJBWVt0cnVlLCBmYWxzZSwgdHJ1ZV0iKQorICAgIGFzc2VydCBy ZXN1bHQgPT0gW1RydWUsIEZhbHNlLCBUcnVlXQorICAgIGFzc2VydCBpc2luc3RhbmNlKHJlc3Vs dCwgbGlzdCkKKyAgICBhc3NlcnQgYWxsKGlzaW5zdGFuY2UoeCwgYm9vbCkgZm9yIHggaW4gcmVz dWx0KQorCisKK2RlZiB0ZXN0X2VtcHR5X2FycmF5KGNvbm4pOgorICAgICIiIlRlc3QgZW1wdHkg YXJyYXkgdHlwZSBjb252ZXJzaW9uLiIiIgorCisgICAgcmVzdWx0ID0gY29ubi5zcWwoIlNFTEVD VCBBUlJBWVtdOjppbnRbXSIpCisgICAgYXNzZXJ0IHJlc3VsdCA9PSBbXQorICAgIGFzc2VydCBp c2luc3RhbmNlKHJlc3VsdCwgbGlzdCkKKworCitkZWYgdGVzdF9qc29uX3R5cGUoY29ubik6Cisg ICAgIiIiVGVzdCBKU09OIHR5cGUgKHBhcnNlZCB0byBkaWN0KS4iIiIKKworICAgIHJlc3VsdCA9 IGNvbm4uc3FsKCdTRUxFQ1QgXCd7ImtleSI6ICJ2YWx1ZSJ9XCc6Ompzb24nKQorICAgIGFzc2Vy dCBpc2luc3RhbmNlKHJlc3VsdCwgZGljdCkKKyAgICBhc3NlcnQgcmVzdWx0ID09IHsia2V5Ijog InZhbHVlIn0KKworCitkZWYgdGVzdF9qc29uYl90eXBlKGNvbm4pOgorICAgICIiIlRlc3QgSlNP TkIgdHlwZSAocGFyc2VkIHRvIGRpY3QpLiIiIgorCisgICAgcmVzdWx0ID0gY29ubi5zcWwoJ1NF TEVDVCBcJ3sibmFtZSI6ICJ0ZXN0IiwgImNvdW50IjogNDJ9XCc6Ompzb25iJykKKyAgICBhc3Nl cnQgaXNpbnN0YW5jZShyZXN1bHQsIGRpY3QpCisgICAgYXNzZXJ0IHJlc3VsdCA9PSB7Im5hbWUi OiAidGVzdCIsICJjb3VudCI6IDQyfQorCisKK2RlZiB0ZXN0X2pzb25fYXJyYXkoY29ubik6Cisg ICAgIiIiVGVzdCBKU09OIGFycmF5IHR5cGUuIiIiCisKKyAgICByZXN1bHQgPSBjb25uLnNxbCgi U0VMRUNUICdbMSwgMiwgMywgNCwgNV0nOjpqc29uIikKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShy ZXN1bHQsIGxpc3QpCisgICAgYXNzZXJ0IHJlc3VsdCA9PSBbMSwgMiwgMywgNCwgNV0KKworCitk ZWYgdGVzdF9qc29uX25lc3RlZChjb25uKToKKyAgICAiIiJUZXN0IG5lc3RlZCBKU09OIG9iamVj dC4iIiIKKworICAgIHJlc3VsdCA9IGNvbm4uc3FsKAorICAgICAgICAnU0VMRUNUIFwneyJ1c2Vy IjogeyJpZCI6IDEsICJuYW1lIjogIkFsaWNlIn0sICJhY3RpdmUiOiB0cnVlfVwnOjpqc29uJwor ICAgICkKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXN1bHQsIGRpY3QpCisgICAgYXNzZXJ0IHJl c3VsdCA9PSB7InVzZXIiOiB7ImlkIjogMSwgIm5hbWUiOiAiQWxpY2UifSwgImFjdGl2ZSI6IFRy dWV9CisKKworZGVmIHRlc3RfbWl4ZWRfdHlwZXNfd2l0aF9hcnJheXMoY29ubik6CisgICAgIiIi VGVzdCBtaXhlZCB0eXBlcyBpbmNsdWRpbmcgYXJyYXlzIGluIGEgc2luZ2xlIHJvdy4iIiIKKwor ICAgIHJlc3VsdCA9IGNvbm4uc3FsKCJTRUxFQ1QgNDIsICd0ZXh0JywgQVJSQVlbMSwgMiwgM10s IHRydWUiKQorICAgIGFzc2VydCByZXN1bHQgPT0gKDQyLCAidGV4dCIsIFsxLCAyLCAzXSwgVHJ1 ZSkKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXN1bHRbMF0sIGludCkKKyAgICBhc3NlcnQgaXNp bnN0YW5jZShyZXN1bHRbMV0sIHN0cikKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXN1bHRbMl0s IGxpc3QpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVzdWx0WzNdLCBib29sKQorCisKK2RlZiB0 ZXN0X3V1aWRfdHlwZShjb25uKToKKyAgICAiIiJUZXN0IFVVSUQgdHlwZSBjb252ZXJzaW9uLiIi IgorICAgIHRlc3RfdXVpZCA9ICI1NTBlODQwMC1lMjliLTQxZDQtYTcxNi00NDY2NTU0NDAwMDAi CisgICAgcmVzdWx0ID0gY29ubi5zcWwoZiJTRUxFQ1QgJ3t0ZXN0X3V1aWR9Jzo6dXVpZCIpCisg ICAgYXNzZXJ0IHJlc3VsdCA9PSB1dWlkLlVVSUQodGVzdF91dWlkKQorICAgIGFzc2VydCBpc2lu c3RhbmNlKHJlc3VsdCwgdXVpZC5VVUlEKQorCisKK2RlZiB0ZXN0X3V1aWRfZ2VuZXJhdGlvbihj b25uKToKKyAgICAiIiJUZXN0IGdlbmVyYXRlZCBVVUlEIHR5cGUgY29udmVyc2lvbi4iIiIKKyAg ICByZXN1bHQgPSBjb25uLnNxbCgiU0VMRUNUIHV1aWR2NCgpIikKKyAgICBhc3NlcnQgaXNpbnN0 YW5jZShyZXN1bHQsIHV1aWQuVVVJRCkKKyAgICAjIENoZWNrIGl0J3MgYSB2YWxpZCBVVUlEIGJ5 IGVuc3VyaW5nIGl0IGNhbiBiZSBjb252ZXJ0ZWQgdG8gc3RyaW5nCisgICAgYXNzZXJ0IGxlbihz dHIocmVzdWx0KSkgPT0gMzYgICMgVVVJRCBzdHJpbmcgZm9ybWF0IGxlbmd0aAorCisKK2RlZiB0 ZXN0X3RleHRfYXJyYXlfd2l0aF9jb21tYXMoY29ubik6CisgICAgIiIiVGVzdCB0ZXh0IGFycmF5 IHdpdGggZWxlbWVudHMgY29udGFpbmluZyBjb21tYXMuIiIiCisKKyAgICByZXN1bHQgPSBjb25u LnNxbCgiU0VMRUNUIEFSUkFZWydBLEInLCAnQycsICcgRCAnXSIpCisgICAgYXNzZXJ0IHJlc3Vs dCA9PSBbIkEsQiIsICJDIiwgIiBEICJdCisKKworZGVmIHRlc3RfdGV4dF9hcnJheV93aXRoX3F1 b3Rlcyhjb25uKToKKyAgICAiIiJUZXN0IHRleHQgYXJyYXkgd2l0aCBlbGVtZW50cyBjb250YWlu aW5nIHF1b3Rlcy4iIiIKKworICAgIHJlc3VsdCA9IGNvbm4uc3FsKHIiU0VMRUNUIEFSUkFZW0Un YVwiYicsICdjJ10iKQorICAgIGFzc2VydCByZXN1bHQgPT0gWydhImInLCAiYyJdCisKKworZGVm IHRlc3RfdGV4dF9hcnJheV93aXRoX2JhY2tzbGFzaChjb25uKToKKyAgICAiIiJUZXN0IHRleHQg YXJyYXkgd2l0aCBlbGVtZW50cyBjb250YWluaW5nIGJhY2tzbGFzaGVzLiIiIgorCisgICAgcmVz dWx0ID0gY29ubi5zcWwociJTRUxFQ1QgQVJSQVlbRSdhXFxiJywgJ2MnXSIpCisgICAgYXNzZXJ0 IHJlc3VsdCA9PSBbImFcXGIiLCAiYyJdCisKKworZGVmIHRlc3RfanNvbl9hcnJheV90eXBlKGNv bm4pOgorICAgICIiIlRlc3QgYXJyYXkgb2YgSlNPTiB2YWx1ZXMgd2l0aCBlbWJlZGRlZCBxdW90 ZXMgYW5kIGNvbW1hcy4iIiIKKworICAgIHJlc3VsdCA9IGNvbm4uc3FsKCIiIlNFTEVDVCBBUlJB WVsneyJhYmMiOiAxMjMsICJ4eXoiOiA0NTZ9Jzo6anNvbl0iIiIpCisgICAgYXNzZXJ0IHJlc3Vs dCA9PSBbeyJhYmMiOiAxMjMsICJ4eXoiOiA0NTZ9XQorCisKK2RlZiB0ZXN0X2pzb25fYXJyYXlf bXVsdGlwbGUoY29ubik6CisgICAgIiIiVGVzdCBhcnJheSBvZiBtdWx0aXBsZSBKU09OIG9iamVj dHMuIiIiCisKKyAgICByZXN1bHQgPSBjb25uLnNxbCgKKyAgICAgICAgIiIiU0VMRUNUIEFSUkFZ Wyd7ImEiOiAxfSc6Ompzb24sICd7ImIiOiAyfSc6Ompzb24sICdbIngiLCAieSJdJzo6anNvbl0i IiIKKyAgICApCisgICAgYXNzZXJ0IHJlc3VsdCA9PSBbeyJhIjogMX0sIHsiYiI6IDJ9LCBbIngi LCAieSJdXQorCisKK2RlZiB0ZXN0XzJkX2ludF9hcnJheShjb25uKToKKyAgICAiIiJUZXN0IDJE IGludGVnZXIgYXJyYXkuIiIiCisKKyAgICByZXN1bHQgPSBjb25uLnNxbCgiU0VMRUNUIEFSUkFZ W1sxLDJdLFszLDRdXSIpCisgICAgYXNzZXJ0IHJlc3VsdCA9PSBbWzEsIDJdLCBbMywgNF1dCisK KworZGVmIHRlc3RfMmRfdGV4dF9hcnJheShjb25uKToKKyAgICAiIiJUZXN0IDJEIGludGVnZXIg YXJyYXkuIiIiCisKKyAgICByZXN1bHQgPSBjb25uLnNxbCgiU0VMRUNUIEFSUkFZW1snYScsJ2In XSxbJ2MnLCdkLGUnXV0iKQorICAgIGFzc2VydCByZXN1bHQgPT0gW1siYSIsICJiIl0sIFsiYyIs ICJkLGUiXV0KKworCitkZWYgdGVzdF8zZF9pbnRfYXJyYXkoY29ubik6CisgICAgIiIiVGVzdCAz RCBpbnRlZ2VyIGFycmF5LiIiIgorCisgICAgcmVzdWx0ID0gY29ubi5zcWwoIlNFTEVDVCBBUlJB WVtbWzEsMl0sWzMsNF1dLFtbNSw2XSxbNyw4XV1dIikKKyAgICBhc3NlcnQgcmVzdWx0ID09IFtb WzEsIDJdLCBbMywgNF1dLCBbWzUsIDZdLCBbNywgOF1dXQorCisKK2RlZiB0ZXN0X2FycmF5X3dp dGhfbnVsbChjb25uKToKKyAgICAiIiJUZXN0IGFycmF5IHdpdGggTlVMTCBlbGVtZW50cy4iIiIK KworICAgIHJlc3VsdCA9IGNvbm4uc3FsKCJTRUxFQ1QgQVJSQVlbMSwgTlVMTCwgM10iKQorICAg IGFzc2VydCByZXN1bHQgPT0gWzEsIE5vbmUsIDNdCi0tIAoyLjUyLjAKCg== --cf0f2795fe617e705419450ca58cceb69e2a378a306664a6a3b70c8c4a92 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v10-0003-POC-Convert-load-balance-tests-from-perl-to-pyth.patch Content-Type: text/x-patch; charset=utf-8; name=v10-0003-POC-Convert-load-balance-tests-from-perl-to-pyth.patch RnJvbSBiODE0NjZkMTNjMzBkYjBkNzQzODE5MTNmYzc4ODljYjdmYzNmN2MxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBGcmksIDI2IERlYyAyMDI1IDEyOjMxOjQzICswMTAwClN1YmplY3Q6IFtQQVRDSCB2 MTAgMy81XSBQT0M6IENvbnZlcnQgbG9hZCBiYWxhbmNlIHRlc3RzIGZyb20gcGVybCB0byBweXRo b24KClRoaXMgaXMgYSBwcm9vZiBvZiBjb25jZXB0IHRvIHNob3cgaG93IHRvIHVzZSB0aGUgcHl0 ZXN0IHRlc3QKaW5mcmFzdHJ1Y3R1cmUuIEl0IGNvbnZlcnRzIHR3byBleGlzdGluZyB0ZXN0cyB0 aGF0IGNvdWxkIG5vdCBzaGFyZQpjb2RlLiBBbmQgbm93IHRoZXkgZG8uIElmIHdlIGV2ZXIgaW50 cm9kdWNlIGFub3RoZXIgbG9hZCBiYWxhbmNlIG1ldGhvZAooZS5nLiByb3VuZCByb2JpbikuIFdl IGNhbiBlYXNpbHkgdGVzdCBpdCBmb3IgYm90aCBETlMgYW5kIGhvc3RsaXN0CmJhc2VkIGxvYWQg YmFsYW5jaW5nIGJ5IGFkZGluZyBhIHNpbmdsZSBuZXcgdGVzdCBmdW5jdGlvbi4KLS0tCiBzcmMv aW50ZXJmYWNlcy9saWJwcS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2lu dGVyZmFjZXMvbGlicHEvbWVzb24uYnVpbGQgICAgICAgICAgICAgIHwgICA3ICstCiBzcmMvaW50 ZXJmYWNlcy9saWJwcS9weXQvdGVzdF9sb2FkX2JhbGFuY2UucHkgfCAxNzAgKysrKysrKysrKysr KysrKysrCiAuLi4vbGlicHEvdC8wMDNfbG9hZF9iYWxhbmNlX2hvc3RfbGlzdC5wbCAgICAgfCAg OTQgLS0tLS0tLS0tLQogLi4uL2xpYnBxL3QvMDA0X2xvYWRfYmFsYW5jZV9kbnMucGwgICAgICAg ICAgIHwgMTQ0IC0tLS0tLS0tLS0tLS0tLQogNSBmaWxlcyBjaGFuZ2VkLCAxNzYgaW5zZXJ0aW9u cygrKSwgMjQwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbnRlcmZhY2Vz L2xpYnBxL3B5dC90ZXN0X2xvYWRfYmFsYW5jZS5weQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy9p bnRlcmZhY2VzL2xpYnBxL3QvMDAzX2xvYWRfYmFsYW5jZV9ob3N0X2xpc3QucGwKIGRlbGV0ZSBt b2RlIDEwMDY0NCBzcmMvaW50ZXJmYWNlcy9saWJwcS90LzAwNF9sb2FkX2JhbGFuY2VfZG5zLnBs CgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvTWFrZWZpbGUgYi9zcmMvaW50ZXJm YWNlcy9saWJwcS9NYWtlZmlsZQppbmRleCBiZjRiYWE5MjkxNy4uNGM0YmRiNGIzYTMgMTAwNjQ0 Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL01ha2VmaWxlCisrKyBiL3NyYy9pbnRlcmZhY2Vz L2xpYnBxL01ha2VmaWxlCkBAIC0xNjcsNiArMTY3LDcgQEAgY2hlY2sgaW5zdGFsbGNoZWNrOiBl eHBvcnQgUEFUSCA6PSAkKENVUkRJUikvdGVzdDokKFBBVEgpCiAKIGNoZWNrOiB0ZXN0LWJ1aWxk IGFsbAogCSQocHJvdmVfY2hlY2spCisJJChweXRlc3RfY2hlY2spCiAKIGluc3RhbGxjaGVjazog dGVzdC1idWlsZCBhbGwKIAkkKHByb3ZlX2luc3RhbGxjaGVjaykKZGlmZiAtLWdpdCBhL3NyYy9p bnRlcmZhY2VzL2xpYnBxL21lc29uLmJ1aWxkIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvbWVzb24u YnVpbGQKaW5kZXggYzVlY2Q5YzNhODcuLjU2NzkwZGQ5MmE5IDEwMDY0NAotLS0gYS9zcmMvaW50 ZXJmYWNlcy9saWJwcS9tZXNvbi5idWlsZAorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9tZXNv bi5idWlsZApAQCAtMTUwLDggKzE1MCw2IEBAIHRlc3RzICs9IHsKICAgICAndGVzdHMnOiBbCiAg ICAgICAndC8wMDFfdXJpLnBsJywKICAgICAgICd0LzAwMl9hcGkucGwnLAotICAgICAgJ3QvMDAz X2xvYWRfYmFsYW5jZV9ob3N0X2xpc3QucGwnLAotICAgICAgJ3QvMDA0X2xvYWRfYmFsYW5jZV9k bnMucGwnLAogICAgICAgJ3QvMDA1X25lZ290aWF0ZV9lbmNyeXB0aW9uLnBsJywKICAgICAgICd0 LzAwNl9zZXJ2aWNlLnBsJywKICAgICBdLApAQCAtMTYyLDYgKzE2MCwxMSBAQCB0ZXN0cyArPSB7 CiAgICAgfSwKICAgICAnZGVwcyc6IGxpYnBxX3Rlc3RfZGVwcywKICAgfSwKKyAgJ3B5dGVzdCc6 IHsKKyAgICAndGVzdHMnOiBbCisgICAgICAncHl0L3Rlc3RfbG9hZF9iYWxhbmNlLnB5JywKKyAg ICBdLAorICB9LAogfQogCiBzdWJkaXIoJ3BvJywgaWZfZm91bmQ6IGxpYmludGwpCmRpZmYgLS1n aXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9weXQvdGVzdF9sb2FkX2JhbGFuY2UucHkgYi9zcmMv aW50ZXJmYWNlcy9saWJwcS9weXQvdGVzdF9sb2FkX2JhbGFuY2UucHkKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjBhZjQ2ZDhmMzdkCi0tLSAvZGV2L251bGwKKysrIGIv c3JjL2ludGVyZmFjZXMvbGlicHEvcHl0L3Rlc3RfbG9hZF9iYWxhbmNlLnB5CkBAIC0wLDAgKzEs MTcwIEBACisjIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1l bnQgR3JvdXAKKworIiIiCitUZXN0cyBmb3IgbG9hZF9iYWxhbmNlX2hvc3RzIGNvbm5lY3Rpb24g cGFyYW1ldGVyLgorCitUaGVzZSB0ZXN0cyB2ZXJpZnkgdGhhdCBsaWJwcSBjb3JyZWN0bHkgaGFu ZGxlcyBsb2FkIGJhbGFuY2luZyBhY3Jvc3MgbXVsdGlwbGUKK1Bvc3RncmVTUUwgc2VydmVycyBz cGVjaWZpZWQgaW4gdGhlIGNvbm5lY3Rpb24gc3RyaW5nLgorIiIiCisKK2ltcG9ydCBwbGF0Zm9y bQoraW1wb3J0IHJlCisKK2ltcG9ydCBweXRlc3QKKworZnJvbSBsaWJwcSBpbXBvcnQgTGlicHFF cnJvcgoraW1wb3J0IHB5cGcKKworCitAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9Im1vZHVsZSIpCitk ZWYgbG9hZF9iYWxhbmNlX25vZGVzX2hvc3RsaXN0KGNyZWF0ZV9wZ19tb2R1bGUpOgorICAgICIi IgorICAgIENyZWF0ZSAzIFBvc3RncmVTUUwgbm9kZXMgd2l0aCBkaWZmZXJlbnQgc29ja2V0IGRp cmVjdG9yaWVzLgorCisgICAgRWFjaCBub2RlIGhhcyBpdHMgb3duIFVuaXggc29ja2V0IGRpcmVj dG9yeSBmb3IgaXNvbGF0aW9uLgorICAgIFJldHVybnMgYSB0dXBsZSBvZiAobm9kZXMsIGNvbm5l Y3QpLgorICAgICIiIgorICAgIG5vZGVzID0gW2NyZWF0ZV9wZ19tb2R1bGUoKSBmb3IgXyBpbiBy YW5nZSgzKV0KKworICAgIGhvc3RsaXN0ID0gIiwiLmpvaW4obm9kZS5ob3N0IGZvciBub2RlIGlu IG5vZGVzKQorICAgIHBvcnRsaXN0ID0gIiwiLmpvaW4oc3RyKG5vZGUucG9ydCkgZm9yIG5vZGUg aW4gbm9kZXMpCisKKyAgICBkZWYgY29ubmVjdCgqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBu b2Rlc1swXS5jb25uZWN0KGhvc3Q9aG9zdGxpc3QsIHBvcnQ9cG9ydGxpc3QsICoqa3dhcmdzKQor CisgICAgcmV0dXJuIG5vZGVzLCBjb25uZWN0CisKKworQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJt b2R1bGUiKQorZGVmIGxvYWRfYmFsYW5jZV9ub2Rlc19kbnMoY3JlYXRlX3BnX21vZHVsZSk6Cisg ICAgIiIiCisgICAgQ3JlYXRlIDMgUG9zdGdyZVNRTCBub2RlcyBvbiB0aGUgc2FtZSBwb3J0IGJ1 dCBkaWZmZXJlbnQgSVAgYWRkcmVzc2VzLgorCisgICAgVXNlcyAxMjcuMC4wLjEsIDEyNy4wLjAu MiwgMTI3LjAuMC4zIHdpdGggYSBzaGFyZWQgcG9ydCwgc28gdGhhdAorICAgIGNvbm5lY3Rpb25z IHRvICdwZy1sb2FkYmFsYW5jZXRlc3QnIGNhbiBiZSBsb2FkIGJhbGFuY2VkIHZpYSBETlMuCisK KyAgICBTaW5jZSBzZXR0aW5nIHVwIGEgRE5TIHNlcnZlciBpcyBtb3JlIGVmZm9ydCB0aGFuIHdl IGNvbnNpZGVyIHJlYXNvbmFibGUgdG8KKyAgICBydW4gdGhpcyB0ZXN0LCB0aGlzIHNpdHVhdGlv biBpcyBpbnN0ZWFkIGltaXRhdGVkIGJ5IHVzaW5nIGEgaG9zdHMgZmlsZQorICAgIHdoZXJlIGEg c2luZ2xlIGhvc3RuYW1lIG1hcHMgdG8gbXVsdGlwbGUgZGlmZmVyZW50IElQIGFkZHJlc3Nlcy4g VGhpcyB0ZXN0CisgICAgcmVxdWlyZXMgdGhlIGFkbWluaXN0cmF0b3IgdG8gYWRkIHRoZSBmb2xs b3dpbmcgbGluZXMgdG8gdGhlIGhvc3RzIGZpbGUgKGlmCisgICAgd2UgZGV0ZWN0IHRoYXQgdGhp cyBoYXNuJ3QgaGFwcGVuZWQgd2Ugc2tpcCB0aGUgdGVzdCk6CisKKyAgICAxMjcuMC4wLjEgcGct bG9hZGJhbGFuY2V0ZXN0CisgICAgMTI3LjAuMC4yIHBnLWxvYWRiYWxhbmNldGVzdAorICAgIDEy Ny4wLjAuMyBwZy1sb2FkYmFsYW5jZXRlc3QKKworICAgIFdpbmRvd3Mgb3IgTGludXggYXJlIHJl cXVpcmVkIHRvIHJ1biB0aGlzIHRlc3QgYmVjYXVzZSB0aGVzZSBPU2VzIGFsbG93CisgICAgYmlu ZGluZyB0byAxMjcuMC4wLjIgYW5kIDEyNy4wLjAuMyBhZGRyZXNzZXMgYnkgZGVmYXVsdCwgYnV0 IG90aGVyIE9TZXMKKyAgICBkb24ndC4gV2UgbmVlZCB0byBiaW5kIHRvIGRpZmZlcmVudCBJUCBh ZGRyZXNzZXMsIHNvIHRoYXQgd2UgY2FuIHVzZSB0aGVzZQorICAgIGRpZmZlcmVudCBJUCBhZGRy ZXNzZXMgaW4gdGhlIGhvc3RzIGZpbGUuCisKKyAgICBUaGUgaG9zdHMgZmlsZSBuZWVkcyB0byBi ZSBwcmVwYXJlZCBiZWZvcmUgcnVubmluZyB0aGlzIHRlc3QuIFdlIGRvbid0IGRvCisgICAgaXQg b24gdGhlIGZseSwgYmVjYXVzZSBpdCByZXF1aXJlcyByb290IHBlcm1pc3Npb25zIHRvIGNoYW5n ZSB0aGUgaG9zdHMKKyAgICBmaWxlLiBJbiBDSSB3ZSBzZXQgdXAgdGhlIHByZXZpb3VzbHkgbWVu dGlvbmVkIHJ1bGVzIGluIHRoZSBob3N0cyBmaWxlLCBzbworICAgIHRoYXQgdGhpcyBsb2FkIGJh bGFuY2luZyBtZXRob2QgaXMgdGVzdGVkLgorCisgICAgUmVxdWlyZXMgUEdfVEVTVF9FWFRSQT1s b2FkX2JhbGFuY2UgYmVjYXVzZSBpdCByZXF1aXJlcyB0aGlzIG1hbnVhbCBob3N0cworICAgIGZp bGUgY29uZmlndXJhdGlvbiBhbmQgYWxzbyB1c2VzIFRDUCB3aXRoIHRydXN0IGF1dGgsIHdoaWNo IGlzIHBvdGVudGlhbGx5CisgICAgdW5zYWZlIG9uIG11bHRpdXNlciBzeXN0ZW1zLgorICAgICIi IgorICAgIHB5cGcuc2tpcF91bmxlc3NfdGVzdF9leHRyYXMoImxvYWRfYmFsYW5jZSIpCisKKyAg ICBpZiBwbGF0Zm9ybS5zeXN0ZW0oKSBub3QgaW4gKCJMaW51eCIsICJXaW5kb3dzIik6CisgICAg ICAgIHB5dGVzdC5za2lwKCJETlMgbG9hZCBiYWxhbmNlIHRlc3Qgb25seSBzdXBwb3J0ZWQgb24g TGludXggYW5kIFdpbmRvd3MiKQorCisgICAgaWYgcGxhdGZvcm0uc3lzdGVtKCkgPT0gIldpbmRv d3MiOgorICAgICAgICBob3N0c19wYXRoID0gciJjOlxXaW5kb3dzXFN5c3RlbTMyXERyaXZlcnNc ZXRjXGhvc3RzIgorICAgIGVsc2U6CisgICAgICAgIGhvc3RzX3BhdGggPSAiL2V0Yy9ob3N0cyIK KworICAgIHRyeToKKyAgICAgICAgd2l0aCBvcGVuKGhvc3RzX3BhdGgpIGFzIGY6CisgICAgICAg ICAgICBob3N0c19jb250ZW50ID0gZi5yZWFkKCkKKyAgICBleGNlcHQgKE9TRXJyb3IsIElPRXJy b3IpOgorICAgICAgICBweXRlc3Quc2tpcChmIkNvdWxkIG5vdCByZWFkIGhvc3RzIGZpbGU6IHto b3N0c19wYXRofSIpCisKKyAgICBjb3VudCA9IGxlbihyZS5maW5kYWxsKHIiMTI3XC4wXC4wXC5b MS0zXVxzK3BnLWxvYWRiYWxhbmNldGVzdCIsIGhvc3RzX2NvbnRlbnQpKQorICAgIGlmIGNvdW50 ICE9IDM6CisgICAgICAgIHB5dGVzdC5za2lwKCJob3N0cyBmaWxlIG5vdCBwcmVwYXJlZCBmb3Ig RE5TIGxvYWQgYmFsYW5jZSB0ZXN0IikKKworICAgIGZpcnN0X25vZGUgPSBjcmVhdGVfcGdfbW9k dWxlKGhvc3RhZGRyPSIxMjcuMC4wLjEiKQorICAgIG5vZGVzID0gWworICAgICAgICBmaXJzdF9u b2RlLAorICAgICAgICBjcmVhdGVfcGdfbW9kdWxlKGhvc3RhZGRyPSIxMjcuMC4wLjIiLCBwb3J0 PWZpcnN0X25vZGUucG9ydCksCisgICAgICAgIGNyZWF0ZV9wZ19tb2R1bGUoaG9zdGFkZHI9IjEy Ny4wLjAuMyIsIHBvcnQ9Zmlyc3Rfbm9kZS5wb3J0KSwKKyAgICBdCisKKyAgICAjIEFsbG93IHRy dXN0IGF1dGhlbnRpY2F0aW9uIGZvciBUQ1AgY29ubmVjdGlvbnMgZnJvbSBsb29wYmFjaworICAg IGZvciBub2RlIGluIG5vZGVzOgorICAgICAgICBoYmFfcGF0aCA9IG5vZGUuZGF0YWRpciAvICJw Z19oYmEuY29uZiIKKyAgICAgICAgd2l0aCBvcGVuKGhiYV9wYXRoLCAiciIpIGFzIGY6CisgICAg ICAgICAgICBvcmlnaW5hbF9jb250ZW50ID0gZi5yZWFkKCkKKyAgICAgICAgd2l0aCBvcGVuKGhi YV9wYXRoLCAidyIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKCJob3N0IGFsbCBhbGwgMTI3 LjAuMC4wLzggdHJ1c3RcbiIpCisgICAgICAgICAgICBmLndyaXRlKG9yaWdpbmFsX2NvbnRlbnQp CisgICAgICAgIG5vZGUucGdfY3RsKCJyZWxvYWQiKQorCisgICAgZGVmIGNvbm5lY3QoKiprd2Fy Z3MpOgorICAgICAgICByZXR1cm4gbm9kZXNbMF0uY29ubmVjdChob3N0PSJwZy1sb2FkYmFsYW5j ZXRlc3QiLCAqKmt3YXJncykKKworICAgIHJldHVybiBub2RlcywgY29ubmVjdAorCisKK0BweXRl c3QuZml4dHVyZShzY29wZT0ibW9kdWxlIiwgcGFyYW1zPVsiaG9zdGxpc3QiLCAiZG5zIl0pCitk ZWYgbG9hZF9iYWxhbmNlX25vZGVzKHJlcXVlc3QpOgorICAgICIiIgorICAgIFBhcmFtZXRyaXpl ZCBmaXh0dXJlIHByb3ZpZGluZyBib3RoIGxvYWQgYmFsYW5jaW5nIHRlc3QgZW52aXJvbm1lbnRz LgorICAgICIiIgorICAgIHJldHVybiByZXF1ZXN0LmdldGZpeHR1cmV2YWx1ZShmImxvYWRfYmFs YW5jZV9ub2Rlc197cmVxdWVzdC5wYXJhbX0iKQorCisKK2RlZiB0ZXN0X2xvYWRfYmFsYW5jZV9o b3N0c19pbnZhbGlkX3ZhbHVlKGxvYWRfYmFsYW5jZV9ub2Rlcyk6CisgICAgIiIibG9hZF9iYWxh bmNlX2hvc3RzIGRvZXNuJ3QgYWNjZXB0IHVua25vd24gdmFsdWVzLiIiIgorICAgIF8sIGNvbm5l Y3QgPSBsb2FkX2JhbGFuY2Vfbm9kZXMKKworICAgIHdpdGggcHl0ZXN0LnJhaXNlcygKKyAgICAg ICAgTGlicHFFcnJvciwgbWF0Y2g9J2ludmFsaWQgbG9hZF9iYWxhbmNlX2hvc3RzIHZhbHVlOiAi ZG9lc25vdGV4aXN0IicKKyAgICApOgorICAgICAgICBjb25uZWN0KGxvYWRfYmFsYW5jZV9ob3N0 cz0iZG9lc25vdGV4aXN0IikKKworCitkZWYgdGVzdF9sb2FkX2JhbGFuY2VfaG9zdHNfZGlzYWJs ZShsb2FkX2JhbGFuY2Vfbm9kZXMpOgorICAgICIiImxvYWRfYmFsYW5jZV9ob3N0cz1kaXNhYmxl IGFsd2F5cyBjb25uZWN0cyB0byB0aGUgZmlyc3Qgbm9kZS4iIiIKKyAgICBub2RlcywgY29ubmVj dCA9IGxvYWRfYmFsYW5jZV9ub2RlcworCisgICAgd2l0aCBub2Rlc1swXS5sb2dfY29udGFpbnMo ImNvbm5lY3Rpb24gcmVjZWl2ZWQiKToKKyAgICAgICAgY29ubmVjdChsb2FkX2JhbGFuY2VfaG9z dHM9ImRpc2FibGUiKQorCisKK2RlZiB0ZXN0X2xvYWRfYmFsYW5jZV9ob3N0c19yYW5kb21fZGlz dHJpYnV0aW9uKGxvYWRfYmFsYW5jZV9ub2Rlcyk6CisgICAgIiIibG9hZF9iYWxhbmNlX2hvc3Rz PXJhbmRvbSBkaXN0cmlidXRlcyBjb25uZWN0aW9ucyBhY3Jvc3MgYWxsIG5vZGVzLiIiIgorICAg IG5vZGVzLCBjb25uZWN0ID0gbG9hZF9iYWxhbmNlX25vZGVzCisKKyAgICBmb3IgXyBpbiByYW5n ZSg1MCk6CisgICAgICAgIGNvbm5lY3QobG9hZF9iYWxhbmNlX2hvc3RzPSJyYW5kb20iKQorCisg ICAgb2NjdXJyZW5jZXMgPSBbCisgICAgICAgIGxlbihyZS5maW5kYWxsKCJjb25uZWN0aW9uIHJl Y2VpdmVkIiwgbm9kZS5sb2dfY29udGVudCgpKSkgZm9yIG5vZGUgaW4gbm9kZXMKKyAgICBdCisK KyAgICAjIFN0YXRpc3RpY2FsbHksIGVhY2ggbm9kZSBzaG91bGQgcmVjZWl2ZSBhdCBsZWFzdCBv bmUgY29ubmVjdGlvbi4KKyAgICAjIFRoZSBwcm9iYWJpbGl0eSBvZiBhbnkgbm9kZSByZWNlaXZp bmcgMCBjb25uZWN0aW9ucyBpcyAoMi8zKV41MCDiiYggMS41N2UtOQorICAgIGFzc2VydCBvY2N1 cnJlbmNlc1swXSA+IDAsICJub2RlMSBzaG91bGQgcmVjZWl2ZSBhdCBsZWFzdCBvbmUgY29ubmVj dGlvbiIKKyAgICBhc3NlcnQgb2NjdXJyZW5jZXNbMV0gPiAwLCAibm9kZTIgc2hvdWxkIHJlY2Vp dmUgYXQgbGVhc3Qgb25lIGNvbm5lY3Rpb24iCisgICAgYXNzZXJ0IG9jY3VycmVuY2VzWzJdID4g MCwgIm5vZGUzIHNob3VsZCByZWNlaXZlIGF0IGxlYXN0IG9uZSBjb25uZWN0aW9uIgorICAgIGFz c2VydCBzdW0ob2NjdXJyZW5jZXMpID09IDUwLCAidG90YWwgY29ubmVjdGlvbnMgc2hvdWxkIGJl IDUwIgorCisKK2RlZiB0ZXN0X2xvYWRfYmFsYW5jZV9ob3N0c19mYWlsb3Zlcihsb2FkX2JhbGFu Y2Vfbm9kZXMpOgorICAgICIiImxvYWRfYmFsYW5jZV9ob3N0cyBjb250aW51ZXMgdHJ5aW5nIGhv c3RzIHVudGlsIGl0IGZpbmRzIGEgd29ya2luZyBvbmUuIiIiCisgICAgbm9kZXMsIGNvbm5lY3Qg PSBsb2FkX2JhbGFuY2Vfbm9kZXMKKworICAgIG5vZGVzWzBdLnN0b3AoKQorICAgIG5vZGVzWzFd LnN0b3AoKQorCisgICAgd2l0aCBub2Rlc1syXS5sb2dfY29udGFpbnMoImNvbm5lY3Rpb24gcmVj ZWl2ZWQiKToKKyAgICAgICAgY29ubmVjdChsb2FkX2JhbGFuY2VfaG9zdHM9ImRpc2FibGUiKQor CisgICAgd2l0aCBub2Rlc1syXS5sb2dfY29udGFpbnMoImNvbm5lY3Rpb24gcmVjZWl2ZWQiLCB0 aW1lcz01KToKKyAgICAgICAgZm9yIF8gaW4gcmFuZ2UoNSk6CisgICAgICAgICAgICBjb25uZWN0 KGxvYWRfYmFsYW5jZV9ob3N0cz0icmFuZG9tIikKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2Vz L2xpYnBxL3QvMDAzX2xvYWRfYmFsYW5jZV9ob3N0X2xpc3QucGwgYi9zcmMvaW50ZXJmYWNlcy9s aWJwcS90LzAwM19sb2FkX2JhbGFuY2VfaG9zdF9saXN0LnBsCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAxZjk3MGZmOTk0Yi4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjL2ludGVyZmFjZXMv bGlicHEvdC8wMDNfbG9hZF9iYWxhbmNlX2hvc3RfbGlzdC5wbAorKysgL2Rldi9udWxsCkBAIC0x LDk0ICswLDAgQEAKLSMgQ29weXJpZ2h0IChjKSAyMDIzLTIwMjYsIFBvc3RncmVTUUwgR2xvYmFs IERldmVsb3BtZW50IEdyb3VwCi11c2Ugc3RyaWN0OwotdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdh bGwnOwotdXNlIENvbmZpZzsKLXVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKLXVzZSBQb3N0 Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwotdXNlIFRlc3Q6Ok1vcmU7Ci0KLSMgVGhpcyB0ZXN0cyBs b2FkIGJhbGFuY2luZyBhY3Jvc3MgdGhlIGxpc3Qgb2YgZGlmZmVyZW50IGhvc3RzIGluIHRoZSBo b3N0Ci0jIHBhcmFtZXRlciBvZiB0aGUgY29ubmVjdGlvbiBzdHJpbmcuCi0KLSMgQ2x1c3RlciBz ZXR1cCB3aGljaCBpcyBzaGFyZWQgZm9yIHRlc3RpbmcgYm90aCBsb2FkIGJhbGFuY2luZyBtZXRo b2RzCi1teSAkbm9kZTEgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ25vZGUxJyk7 Ci1teSAkbm9kZTIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ25vZGUyJywgb3du X2hvc3QgPT4gMSk7Ci1teSAkbm9kZTMgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXco J25vZGUzJywgb3duX2hvc3QgPT4gMSk7Ci0KLSMgQ3JlYXRlIGEgZGF0YSBkaXJlY3Rvcnkgd2l0 aCBpbml0ZGIKLSRub2RlMS0+aW5pdCgpOwotJG5vZGUyLT5pbml0KCk7Ci0kbm9kZTMtPmluaXQo KTsKLQotIyBTdGFydCB0aGUgUG9zdGdyZVNRTCBzZXJ2ZXIKLSRub2RlMS0+c3RhcnQoKTsKLSRu b2RlMi0+c3RhcnQoKTsKLSRub2RlMy0+c3RhcnQoKTsKLQotIyBTdGFydCB0aGUgdGVzdHMgZm9y IGxvYWQgYmFsYW5jaW5nIG1ldGhvZCAxCi1teSAkaG9zdGxpc3QgPSAkbm9kZTEtPmhvc3QgLiAn LCcgLiAkbm9kZTItPmhvc3QgLiAnLCcgLiAkbm9kZTMtPmhvc3Q7Ci1teSAkcG9ydGxpc3QgPSAk bm9kZTEtPnBvcnQgLiAnLCcgLiAkbm9kZTItPnBvcnQgLiAnLCcgLiAkbm9kZTMtPnBvcnQ7Ci0K LSRub2RlMS0+Y29ubmVjdF9mYWlscygKLQkiaG9zdD0kaG9zdGxpc3QgcG9ydD0kcG9ydGxpc3Qg bG9hZF9iYWxhbmNlX2hvc3RzPWRvZXNub3RleGlzdCIsCi0JImxvYWRfYmFsYW5jZV9ob3N0cyBk b2Vzbid0IGFjY2VwdCB1bmtub3duIHZhbHVlcyIsCi0JZXhwZWN0ZWRfc3RkZXJyID0+IHFyL2lu dmFsaWQgbG9hZF9iYWxhbmNlX2hvc3RzIHZhbHVlOiAiZG9lc25vdGV4aXN0Ii8pOwotCi0jIGxv YWRfYmFsYW5jZV9ob3N0cz1kaXNhYmxlIHNob3VsZCBhbHdheXMgY2hvb3NlIHRoZSBmaXJzdCBv bmUuCi0kbm9kZTEtPmNvbm5lY3Rfb2soCi0JImhvc3Q9JGhvc3RsaXN0IHBvcnQ9JHBvcnRsaXN0 IGxvYWRfYmFsYW5jZV9ob3N0cz1kaXNhYmxlIiwKLQkibG9hZF9iYWxhbmNlX2hvc3RzPWRpc2Fi bGUgY29ubmVjdHMgdG8gdGhlIGZpcnN0IG5vZGUiLAotCXNxbCA9PiAiU0VMRUNUICdjb25uZWN0 MSciLAotCWxvZ19saWtlID0+IFtxci9zdGF0ZW1lbnQ6IFNFTEVDVCAnY29ubmVjdDEnL10pOwot Ci0jIFN0YXRpc3RpY2FsbHkgdGhlIGZvbGxvd2luZyBsb29wIHdpdGggbG9hZF9iYWxhbmNlX2hv c3RzPXJhbmRvbSB3aWxsIGFsbW9zdAotIyBjZXJ0YWlubHkgY29ubmVjdCBhdCBsZWFzdCBvbmNl IHRvIGVhY2ggb2YgdGhlIG5vZGVzLiBUaGUgY2hhbmNlIG9mIHRoYXQgbm90Ci0jIGhhcHBlbmlu ZyBpcyBzbyBzbWFsbCB0aGF0IGl0J3MgbmVnbGlnaWJsZTogKDIvMyleNTAgPSAxLjU2ODMyODU1 ZS05Ci1mb3JlYWNoIG15ICRpICgxIC4uIDUwKQotewotCSRub2RlMS0+Y29ubmVjdF9vaygKLQkJ Imhvc3Q9JGhvc3RsaXN0IHBvcnQ9JHBvcnRsaXN0IGxvYWRfYmFsYW5jZV9ob3N0cz1yYW5kb20i LAotCQkicmVwZWF0ZWQgY29ubmVjdGlvbnMgd2l0aCByYW5kb20gbG9hZCBiYWxhbmNpbmciLAot CQlzcWwgPT4gIlNFTEVDVCAnY29ubmVjdDInIik7Ci19Ci0KLW15ICRub2RlMV9vY2N1cnJlbmNl cyA9ICgpID0KLSAgJG5vZGUxLT5sb2dfY29udGVudCgpID1+IC9zdGF0ZW1lbnQ6IFNFTEVDVCAn Y29ubmVjdDInL2c7Ci1teSAkbm9kZTJfb2NjdXJyZW5jZXMgPSAoKSA9Ci0gICRub2RlMi0+bG9n X2NvbnRlbnQoKSA9fiAvc3RhdGVtZW50OiBTRUxFQ1QgJ2Nvbm5lY3QyJy9nOwotbXkgJG5vZGUz X29jY3VycmVuY2VzID0gKCkgPQotICAkbm9kZTMtPmxvZ19jb250ZW50KCkgPX4gL3N0YXRlbWVu dDogU0VMRUNUICdjb25uZWN0MicvZzsKLQotbXkgJHRvdGFsX29jY3VycmVuY2VzID0KLSAgJG5v ZGUxX29jY3VycmVuY2VzICsgJG5vZGUyX29jY3VycmVuY2VzICsgJG5vZGUzX29jY3VycmVuY2Vz OwotCi1jbXBfb2soJG5vZGUxX29jY3VycmVuY2VzLCAnPicsIDEsCi0JInJlY2VpdmVkIGF0IGxl YXN0IG9uZSBjb25uZWN0aW9uIG9uIG5vZGUxIik7Ci1jbXBfb2soJG5vZGUyX29jY3VycmVuY2Vz LCAnPicsIDEsCi0JInJlY2VpdmVkIGF0IGxlYXN0IG9uZSBjb25uZWN0aW9uIG9uIG5vZGUyIik7 Ci1jbXBfb2soJG5vZGUzX29jY3VycmVuY2VzLCAnPicsIDEsCi0JInJlY2VpdmVkIGF0IGxlYXN0 IG9uZSBjb25uZWN0aW9uIG9uIG5vZGUzIik7Ci1pcygkdG90YWxfb2NjdXJyZW5jZXMsIDUwLCAi cmVjZWl2ZWQgNTAgY29ubmVjdGlvbnMgYWNyb3NzIGFsbCBub2RlcyIpOwotCi0kbm9kZTEtPnN0 b3AoKTsKLSRub2RlMi0+c3RvcCgpOwotCi0jIGxvYWRfYmFsYW5jZV9ob3N0cz1kaXNhYmxlIHNo b3VsZCBjb250aW51ZSB0cnlpbmcgaG9zdHMgdW50aWwgaXQgZmluZHMgYQotIyB3b3JraW5nIG9u ZS4KLSRub2RlMy0+Y29ubmVjdF9vaygKLQkiaG9zdD0kaG9zdGxpc3QgcG9ydD0kcG9ydGxpc3Qg bG9hZF9iYWxhbmNlX2hvc3RzPWRpc2FibGUiLAotCSJsb2FkX2JhbGFuY2VfaG9zdHM9ZGlzYWJs ZSBjb250aW51ZXMgdW50aWwgaXQgY29ubmVjdHMgdG8gdGhlIGEgd29ya2luZyBub2RlIiwKLQlz cWwgPT4gIlNFTEVDVCAnY29ubmVjdDMnIiwKLQlsb2dfbGlrZSA9PiBbcXIvc3RhdGVtZW50OiBT RUxFQ1QgJ2Nvbm5lY3QzJy9dKTsKLQotIyBBbHNvIHdpdGggbG9hZF9iYWxhbmNlX2hvc3RzPXJh bmRvbSB3ZSBjb250aW51ZSB0byB0aGUgbmV4dCBub2RlcyBpZiBwcmV2aW91cwotIyBvbmVzIGFy ZSBkb3duLiBDb25uZWN0IGEgZmV3IHRpbWVzIHRvIG1ha2Ugc3VyZSBpdCdzIG5vdCBqdXN0IGx1 Y2t5LgotZm9yZWFjaCBteSAkaSAoMSAuLiA1KQotewotCSRub2RlMy0+Y29ubmVjdF9vaygKLQkJ Imhvc3Q9JGhvc3RsaXN0IHBvcnQ9JHBvcnRsaXN0IGxvYWRfYmFsYW5jZV9ob3N0cz1yYW5kb20i LAotCQkibG9hZF9iYWxhbmNlX2hvc3RzPXJhbmRvbSBjb250aW51ZXMgdW50aWwgaXQgY29ubmVj dHMgdG8gdGhlIGEgd29ya2luZyBub2RlIiwKLQkJc3FsID0+ICJTRUxFQ1QgJ2Nvbm5lY3Q0JyIs Ci0JCWxvZ19saWtlID0+IFtxci9zdGF0ZW1lbnQ6IFNFTEVDVCAnY29ubmVjdDQnL10pOwotfQot Ci1kb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL3QvMDA0 X2xvYWRfYmFsYW5jZV9kbnMucGwgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS90LzAwNF9sb2FkX2Jh bGFuY2VfZG5zLnBsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMWZmOWEwNjAyNC4u MDAwMDAwMDAwMDAKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvdC8wMDRfbG9hZF9iYWxhbmNl X2Rucy5wbAorKysgL2Rldi9udWxsCkBAIC0xLDE0NCArMCwwIEBACi0jIENvcHlyaWdodCAoYykg MjAyMy0yMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAotdXNlIHN0cmlj dDsKLXVzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKLXVzZSBDb25maWc7Ci11c2UgUG9zdGdy ZVNRTDo6VGVzdDo6VXRpbHM7Ci11c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKLXVzZSBU ZXN0OjpNb3JlOwotCi1pZiAoISRFTlZ7UEdfVEVTVF9FWFRSQX0gfHwgJEVOVntQR19URVNUX0VY VFJBfSAhfiAvXGJsb2FkX2JhbGFuY2VcYi8pCi17Ci0JcGxhbiBza2lwX2FsbCA9PgotCSAgJ1Bv dGVudGlhbGx5IHVuc2FmZSB0ZXN0IGxvYWRfYmFsYW5jZSBub3QgZW5hYmxlZCBpbiBQR19URVNU X0VYVFJBJzsKLX0KLQotIyBUaGlzIHRlc3RzIGxvYWRiYWxhbmNpbmcgYmFzZWQgb24gYSBETlMg ZW50cnkgdGhhdCBjb250YWlucyBtdWx0aXBsZSByZWNvcmRzCi0jIGZvciBkaWZmZXJlbnQgSVBz LiBTaW5jZSBzZXR0aW5nIHVwIGEgRE5TIHNlcnZlciBpcyBtb3JlIGVmZm9ydCB0aGFuIHdlCi0j IGNvbnNpZGVyIHJlYXNvbmFibGUgdG8gcnVuIHRoaXMgdGVzdCwgdGhpcyBzaXR1YXRpb24gaXMg aW5zdGVhZCBpbWl0YXRlZCBieQotIyB1c2luZyBhIGhvc3RzIGZpbGUgd2hlcmUgYSBzaW5nbGUg aG9zdG5hbWUgbWFwcyB0byBtdWx0aXBsZSBkaWZmZXJlbnQgSVAKLSMgYWRkcmVzc2VzLiBUaGlz IHRlc3QgcmVxdWlyZXMgdGhlIGFkbWluaXN0cmF0b3IgdG8gYWRkIHRoZSBmb2xsb3dpbmcgbGlu ZXMgdG8KLSMgdGhlIGhvc3RzIGZpbGUgKGlmIHdlIGRldGVjdCB0aGF0IHRoaXMgaGFzbid0IGhh cHBlbmVkIHdlIHNraXAgdGhlIHRlc3QpOgotIwotIyAxMjcuMC4wLjEgcGctbG9hZGJhbGFuY2V0 ZXN0Ci0jIDEyNy4wLjAuMiBwZy1sb2FkYmFsYW5jZXRlc3QKLSMgMTI3LjAuMC4zIHBnLWxvYWRi YWxhbmNldGVzdAotIwotIyBXaW5kb3dzIG9yIExpbnV4IGFyZSByZXF1aXJlZCB0byBydW4gdGhp cyB0ZXN0IGJlY2F1c2UgdGhlc2UgT1NlcyBhbGxvdwotIyBiaW5kaW5nIHRvIDEyNy4wLjAuMiBh bmQgMTI3LjAuMC4zIGFkZHJlc3NlcyBieSBkZWZhdWx0LCBidXQgb3RoZXIgT1NlcwotIyBkb24n dC4gV2UgbmVlZCB0byBiaW5kIHRvIGRpZmZlcmVudCBJUCBhZGRyZXNzZXMsIHNvIHRoYXQgd2Ug Y2FuIHVzZSB0aGVzZQotIyBkaWZmZXJlbnQgSVAgYWRkcmVzc2VzIGluIHRoZSBob3N0cyBmaWxl LgotIwotIyBUaGUgaG9zdHMgZmlsZSBuZWVkcyB0byBiZSBwcmVwYXJlZCBiZWZvcmUgcnVubmlu ZyB0aGlzIHRlc3QuIFdlIGRvbid0IGRvIGl0Ci0jIG9uIHRoZSBmbHksIGJlY2F1c2UgaXQgcmVx dWlyZXMgcm9vdCBwZXJtaXNzaW9ucyB0byBjaGFuZ2UgdGhlIGhvc3RzIGZpbGUuIEluCi0jIENJ IHdlIHNldCB1cCB0aGUgcHJldmlvdXNseSBtZW50aW9uZWQgcnVsZXMgaW4gdGhlIGhvc3RzIGZp bGUsIHNvIHRoYXQgdGhpcwotIyBsb2FkIGJhbGFuY2luZyBtZXRob2QgaXMgdGVzdGVkLgotCi0j IENsdXN0ZXIgc2V0dXAgd2hpY2ggaXMgc2hhcmVkIGZvciB0ZXN0aW5nIGJvdGggbG9hZCBiYWxh bmNpbmcgbWV0aG9kcwotbXkgJGNhbl9iaW5kX3RvXzEyN18wXzBfMiA9Ci0gICRDb25maWd7b3Nu YW1lfSBlcSAnbGludXgnIHx8ICRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6d2luZG93c19vczsK LQotIyBDaGVja3MgZm9yIHRoZSByZXF1aXJlbWVudHMgZm9yIHRlc3RpbmcgbG9hZCBiYWxhbmNp bmcgbWV0aG9kIDIKLWlmICghJGNhbl9iaW5kX3RvXzEyN18wXzBfMikKLXsKLQlwbGFuIHNraXBf YWxsID0+ICdsb2FkX2JhbGFuY2UgdGVzdCBvbmx5IHN1cHBvcnRlZCBvbiBMaW51eCBhbmQgV2lu ZG93cyc7Ci19Ci0KLW15ICRob3N0c19wYXRoOwotaWYgKCR3aW5kb3dzX29zKQotewotCSRob3N0 c19wYXRoID0gJ2M6XFdpbmRvd3NcU3lzdGVtMzJcRHJpdmVyc1xldGNcaG9zdHMnOwotfQotZWxz ZQotewotCSRob3N0c19wYXRoID0gJy9ldGMvaG9zdHMnOwotfQotCi1teSAkaG9zdHNfY29udGVu dCA9IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjpzbHVycF9maWxlKCRob3N0c19wYXRoKTsKLQot bXkgJGhvc3RzX2NvdW50ID0gKCkgPQotICAkaG9zdHNfY29udGVudCA9fiAvMTI3XC4wXC4wXC5b MS0zXSBwZy1sb2FkYmFsYW5jZXRlc3QvZzsKLWlmICgkaG9zdHNfY291bnQgIT0gMykKLXsKLQkj IEhvc3QgZmlsZSBpcyBub3QgcHJlcGFyZWQgZm9yIHRoaXMgdGVzdAotCXBsYW4gc2tpcF9hbGwg PT4gImhvc3RzIGZpbGUgd2FzIG5vdCBwcmVwYXJlZCBmb3IgRE5TIGxvYWQgYmFsYW5jZSB0ZXN0 IjsKLX0KLQotJFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI6OnVzZV90Y3AgPSAxOwotJFBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXI6OnRlc3RfcGdob3N0ID0gJzEyNy4wLjAuMSc7Ci1teSAkcG9y dCA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI6OmdldF9mcmVlX3BvcnQoKTsKLW15ICRub2Rl MSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnbm9kZTEnLCBwb3J0ID0+ICRwb3J0 KTsKLW15ICRub2RlMiA9Ci0gIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnbm9kZTIn LCBwb3J0ID0+ICRwb3J0LCBvd25faG9zdCA9PiAxKTsKLW15ICRub2RlMyA9Ci0gIFBvc3RncmVT UUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnbm9kZTMnLCBwb3J0ID0+ICRwb3J0LCBvd25faG9zdCA9 PiAxKTsKLQotIyBDcmVhdGUgYSBkYXRhIGRpcmVjdG9yeSB3aXRoIGluaXRkYgotJG5vZGUxLT5p bml0KCk7Ci0kbm9kZTItPmluaXQoKTsKLSRub2RlMy0+aW5pdCgpOwotCi0jIFN0YXJ0IHRoZSBQ b3N0Z3JlU1FMIHNlcnZlcgotJG5vZGUxLT5zdGFydCgpOwotJG5vZGUyLT5zdGFydCgpOwotJG5v ZGUzLT5zdGFydCgpOwotCi0jIGxvYWRfYmFsYW5jZV9ob3N0cz1kaXNhYmxlIHNob3VsZCBhbHdh eXMgY2hvb3NlIHRoZSBmaXJzdCBvbmUuCi0kbm9kZTEtPmNvbm5lY3Rfb2soCi0JImhvc3Q9cGct bG9hZGJhbGFuY2V0ZXN0IHBvcnQ9JHBvcnQgbG9hZF9iYWxhbmNlX2hvc3RzPWRpc2FibGUiLAot CSJsb2FkX2JhbGFuY2VfaG9zdHM9ZGlzYWJsZSBjb25uZWN0cyB0byB0aGUgZmlyc3Qgbm9kZSIs Ci0Jc3FsID0+ICJTRUxFQ1QgJ2Nvbm5lY3QxJyIsCi0JbG9nX2xpa2UgPT4gW3FyL3N0YXRlbWVu dDogU0VMRUNUICdjb25uZWN0MScvXSk7Ci0KLQotIyBTdGF0aXN0aWNhbGx5IHRoZSBmb2xsb3dp bmcgbG9vcCB3aXRoIGxvYWRfYmFsYW5jZV9ob3N0cz1yYW5kb20gd2lsbCBhbG1vc3QKLSMgY2Vy dGFpbmx5IGNvbm5lY3QgYXQgbGVhc3Qgb25jZSB0byBlYWNoIG9mIHRoZSBub2Rlcy4gVGhlIGNo YW5jZSBvZiB0aGF0IG5vdAotIyBoYXBwZW5pbmcgaXMgc28gc21hbGwgdGhhdCBpdCdzIG5lZ2xp Z2libGU6ICgyLzMpXjUwID0gMS41NjgzMjg1NWUtOQotZm9yZWFjaCBteSAkaSAoMSAuLiA1MCkK LXsKLQkkbm9kZTEtPmNvbm5lY3Rfb2soCi0JCSJob3N0PXBnLWxvYWRiYWxhbmNldGVzdCBwb3J0 PSRwb3J0IGxvYWRfYmFsYW5jZV9ob3N0cz1yYW5kb20iLAotCQkicmVwZWF0ZWQgY29ubmVjdGlv bnMgd2l0aCByYW5kb20gbG9hZCBiYWxhbmNpbmciLAotCQlzcWwgPT4gIlNFTEVDVCAnY29ubmVj dDInIik7Ci19Ci0KLW15ICRub2RlMV9vY2N1cnJlbmNlcyA9ICgpID0KLSAgJG5vZGUxLT5sb2df Y29udGVudCgpID1+IC9zdGF0ZW1lbnQ6IFNFTEVDVCAnY29ubmVjdDInL2c7Ci1teSAkbm9kZTJf b2NjdXJyZW5jZXMgPSAoKSA9Ci0gICRub2RlMi0+bG9nX2NvbnRlbnQoKSA9fiAvc3RhdGVtZW50 OiBTRUxFQ1QgJ2Nvbm5lY3QyJy9nOwotbXkgJG5vZGUzX29jY3VycmVuY2VzID0gKCkgPQotICAk bm9kZTMtPmxvZ19jb250ZW50KCkgPX4gL3N0YXRlbWVudDogU0VMRUNUICdjb25uZWN0MicvZzsK LQotbXkgJHRvdGFsX29jY3VycmVuY2VzID0KLSAgJG5vZGUxX29jY3VycmVuY2VzICsgJG5vZGUy X29jY3VycmVuY2VzICsgJG5vZGUzX29jY3VycmVuY2VzOwotCi1jbXBfb2soJG5vZGUxX29jY3Vy cmVuY2VzLCAnPicsIDEsCi0JInJlY2VpdmVkIGF0IGxlYXN0IG9uZSBjb25uZWN0aW9uIG9uIG5v ZGUxIik7Ci1jbXBfb2soJG5vZGUyX29jY3VycmVuY2VzLCAnPicsIDEsCi0JInJlY2VpdmVkIGF0 IGxlYXN0IG9uZSBjb25uZWN0aW9uIG9uIG5vZGUyIik7Ci1jbXBfb2soJG5vZGUzX29jY3VycmVu Y2VzLCAnPicsIDEsCi0JInJlY2VpdmVkIGF0IGxlYXN0IG9uZSBjb25uZWN0aW9uIG9uIG5vZGUz Iik7Ci1pcygkdG90YWxfb2NjdXJyZW5jZXMsIDUwLCAicmVjZWl2ZWQgNTAgY29ubmVjdGlvbnMg YWNyb3NzIGFsbCBub2RlcyIpOwotCi0kbm9kZTEtPnN0b3AoKTsKLSRub2RlMi0+c3RvcCgpOwot Ci0jIGxvYWRfYmFsYW5jZV9ob3N0cz1kaXNhYmxlIHNob3VsZCBjb250aW51ZSB0cnlpbmcgaG9z dHMgdW50aWwgaXQgZmluZHMgYQotIyB3b3JraW5nIG9uZS4KLSRub2RlMy0+Y29ubmVjdF9vaygK LQkiaG9zdD1wZy1sb2FkYmFsYW5jZXRlc3QgcG9ydD0kcG9ydCBsb2FkX2JhbGFuY2VfaG9zdHM9 ZGlzYWJsZSIsCi0JImxvYWRfYmFsYW5jZV9ob3N0cz1kaXNhYmxlIGNvbnRpbnVlcyB1bnRpbCBp dCBjb25uZWN0cyB0byBhIHdvcmtpbmcgbm9kZSIsCi0Jc3FsID0+ICJTRUxFQ1QgJ2Nvbm5lY3Qz JyIsCi0JbG9nX2xpa2UgPT4gW3FyL3N0YXRlbWVudDogU0VMRUNUICdjb25uZWN0MycvXSk7Ci0K LSMgQWxzbyB3aXRoIGxvYWRfYmFsYW5jZV9ob3N0cz1yYW5kb20gd2UgY29udGludWUgdG8gdGhl IG5leHQgbm9kZXMgaWYgcHJldmlvdXMKLSMgb25lcyBhcmUgZG93bi4gQ29ubmVjdCBhIGZldyB0 aW1lcyB0byBtYWtlIHN1cmUgaXQncyBub3QganVzdCBsdWNreS4KLWZvcmVhY2ggbXkgJGkgKDEg Li4gNSkKLXsKLQkkbm9kZTMtPmNvbm5lY3Rfb2soCi0JCSJob3N0PXBnLWxvYWRiYWxhbmNldGVz dCBwb3J0PSRwb3J0IGxvYWRfYmFsYW5jZV9ob3N0cz1yYW5kb20iLAotCQkibG9hZF9iYWxhbmNl X2hvc3RzPXJhbmRvbSBjb250aW51ZXMgdW50aWwgaXQgY29ubmVjdHMgdG8gYSB3b3JraW5nIG5v ZGUiLAotCQlzcWwgPT4gIlNFTEVDVCAnY29ubmVjdDQnIiwKLQkJbG9nX2xpa2UgPT4gW3FyL3N0 YXRlbWVudDogU0VMRUNUICdjb25uZWN0NCcvXSk7Ci19Ci0KLWRvbmVfdGVzdGluZygpOwotLSAK Mi41Mi4wCgo= --cf0f2795fe617e705419450ca58cceb69e2a378a306664a6a3b70c8c4a92 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v10-0004-WIP-pytest-Add-some-SSL-client-tests.patch Content-Type: text/x-patch; charset=utf-8; name=v10-0004-WIP-pytest-Add-some-SSL-client-tests.patch RnJvbSBkZDNjZGUwMDM5YWM5MWFhZGE3MDA0YTFmZWExMDIzOGE0ZTBhNmE4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogVHVlLCAxNiBEZWMgMjAyNSAwOTozMDo1NSArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjEwIDQvNV0gV0lQOiBweXRlc3Q6IEFkZCBzb21lIFNTTCBjbGllbnQgdGVzdHMK ClRoaXMgaXMgYSBzYW1wbGUgY2xpZW50LW9ubHkgdGVzdCBzdWl0ZS4gSXQgdGVzdHMgc29tZSBo YW5kc2hha2UKZmFpbHVyZXMgYWdhaW5zdCBhIG1vY2sgc2VydmVyLCBhcyB3ZWxsIGFzIGEgZnVs bCBTU0wgaGFuZHNoYWtlICsgZW1wdHkKcXVlcnkgKyByZXNwb25zZS4KCnB5Y2EvY3J5cHRvZ3Jh cGh5IGlzIGFkZGVkIGFzIGEgbmV3IHBhY2thZ2UgZGVwZW5kZW5jeS4gQ2VydGlmaWNhdGVzIGZv cgp0ZXN0aW5nIGFyZSBnZW5lcmF0ZWQgb24gdGhlIGZseS4KClRoZSBtb2NrIGRlc2lnbiBpcyB0 aHJlYWRlZDogdGhlIHNlcnZlciBzb2NrZXQgaXMgbGlzdGVuaW5nIG9uIGEKYmFja2dyb3VuZCB0 aHJlYWQsIGFuZCB0aGUgdGVzdCBwcm92aWRlcyB0aGUgc2VydmVyIGxvZ2ljIHZpYSBhCmNhbGxi YWNrLiBUaGVyZSBpcyBzb21lIGFkZGl0aW9uYWwgd29yayBzdGlsbCBuZWVkZWQgdG8gbWFrZSB0 aGlzCnByb2R1Y3Rpb24tcmVhZHk7IHNlZSB0aGUgbm90ZXMgZm9yIF9UQ1BTZXJ2ZXIuYmFja2dy b3VuZCgpLiAoQ3VycmVudGx5LAphbiBleGNlcHRpb24gaW4gdGhlIHdyb25nIHBsYWNlIGNvdWxk IHJlc3VsdCBpbiBhIGhhbmctdW50aWwtdGltZW91dApyYXRoZXIgdGhhbiBhbiBpbW1lZGlhdGUg ZmFpbHVyZS4pCgpUT0RPczoKLSBsb2NhbF9zZXJ2ZXIgYW5kIHRjcF9zZXJ2ZXJfY2xhc3MgYXJl IG5lYXJseSBpZGVudGljYWwgYW5kIHNob3VsZAogIHNoYXJlIGNvZGUuCi0gZml4IGV4Y2VwdGlv bi1yZWxhdGVkIHRpbWVvdXRzIGZvciAuYmFja2dyb3VuZCgpCi0gZmlndXJlIG91dCB0aGUgcHJv cGVyIHVzZSBvZiAic2Vzc2lvbiIgdnMgIm1vZHVsZSIgc2NvcGUKLSBlbnN1cmUgdGhhdCBwcS5s aWJwcSB1bndpbmRzICh0byBjbG9zZSBjb25uZWN0aW9ucykgYmVmb3JlIHRjcF9zZXJ2ZXI7CiAg c2VlIGNvbW1lbnQgaW4gdGVzdF9zZXJ2ZXJfd2l0aF9zc2xfZGlzYWJsZWQoKQotLS0KIC5jaXJy dXMudGFza3MueW1sICAgICAgICAgICAgICAgfCAgIDIgKwogcHlwcm9qZWN0LnRvbWwgICAgICAg ICAgICAgICAgICB8ICAgOCArCiBzcmMvdGVzdC9zc2wvTWFrZWZpbGUgICAgICAgICAgIHwgICAy ICsKIHNyYy90ZXN0L3NzbC9tZXNvbi5idWlsZCAgICAgICAgfCAgIDYgKwogc3JjL3Rlc3Qvc3Ns L3B5dC9jb25mdGVzdC5weSAgICB8IDEyOCArKysrKysrKysrKysrKysKIHNyYy90ZXN0L3NzbC9w eXQvdGVzdF9jbGllbnQucHkgfCAyNzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK IDYgZmlsZXMgY2hhbmdlZCwgNDI0IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvdGVzdC9zc2wvcHl0L2NvbmZ0ZXN0LnB5CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qv c3NsL3B5dC90ZXN0X2NsaWVudC5weQoKZGlmZiAtLWdpdCBhLy5jaXJydXMudGFza3MueW1sIGIv LmNpcnJ1cy50YXNrcy55bWwKaW5kZXggYzlkYjEyZDUzYjkuLmM3NWYxMmI3NzliIDEwMDY0NAot LS0gYS8uY2lycnVzLnRhc2tzLnltbAorKysgYi8uY2lycnVzLnRhc2tzLnltbApAQCAtNjQ2LDYg KzY0Niw3IEBAIHRhc2s6CiAgICAgQ0lSUlVTX1dPUktJTkdfRElSOiAke0hPTUV9L3Bnc3FsLwog ICAgIENDQUNIRV9ESVI6ICR7SE9NRX0vY2NhY2hlCiAgICAgTUFDUE9SVFNfQ0FDSEU6ICR7SE9N RX0vbWFjcG9ydHMtY2FjaGUKKyAgICBQWVRFU1RfREVCVUdfVEVNUFJPT1Q6IC90bXAgICMgZGVm YXVsdCBpcyB0b28gbG9uZyBmb3IgVU5JWCBzb2NrZXRzIG9uIE1hYwogCiAgICAgTUVTT05fRkVB VFVSRVM6ID4tCiAgICAgICAtRGJvbmpvdXI9ZW5hYmxlZApAQCAtNjY2LDYgKzY2Nyw3IEBAIHRh c2s6CiAgICAgICBwNS4zNC1pby10dHkKICAgICAgIHA1LjM0LWlwYy1ydW4KICAgICAgIHB5dGhv bjMxMgorICAgICAgcHkzMTItY3J5cHRvZ3JhcGh5CiAgICAgICBweTMxMi1wYWNrYWdpbmcKICAg ICAgIHB5MzEyLXB5dGVzdAogICAgICAgdGNsCmRpZmYgLS1naXQgYS9weXByb2plY3QudG9tbCBi L3B5cHJvamVjdC50b21sCmluZGV4IDQ2MjhkMjI3NGUwLi4wMGM4YWU4ODU4MyAxMDA2NDQKLS0t IGEvcHlwcm9qZWN0LnRvbWwKKysrIGIvcHlwcm9qZWN0LnRvbWwKQEAgLTEyLDYgKzEyLDE0IEBA IGRlcGVuZGVuY2llcyA9IFsKICAgICAjIEFueSBvdGhlciBkZXBlbmRlbmNpZXMgYXJlIGVmZmVj dGl2ZWx5IG9wdGlvbmFsIChhZGRlZCBiZWxvdykuIFdlIGltcG9ydAogICAgICMgdGhlc2UgbGli cmFyaWVzIHVzaW5nIHB5dGVzdC5pbXBvcnRvcnNraXAoKS4gU28gdGVzdHMgd2lsbCBiZSBza2lw cGVkIGlmCiAgICAgIyB0aGV5IGFyZSBub3QgYXZhaWxhYmxlLgorCisgICAgIyBOb3RlcyBvbiB0 aGUgY3J5cHRvZ3JhcGh5IHBhY2thZ2U6CisgICAgIyAtIDMuMy4yIGlzIHNoaXBwZWQgb24gRGVi aWFuIGJ1bGxzZXllLgorICAgICMgLSAzLjQueCBkcm9wcyBzdXBwb3J0IGZvciBQeXRob24gMiwg bWFraW5nIGl0IGEgdmVyc2lvbiBvZiBub3RlIGZvciBvbGRlciBMVFMKKyAgICAjICAgZGlzdHJv cy4KKyAgICAjIC0gMzUueCBzd2l0Y2hlZCB2ZXJzaW9uaW5nIHNjaGVtZXMgYW5kIG1vdmVkIHRv IFJ1c3QgcGFyc2luZy4KKyAgICAjIC0gNDAueCBpcyB0aGUgbGFzdCB2ZXJzaW9uIHN1cHBvcnRp bmcgUHl0aG9uIDMuNi4KKyAgICAiY3J5cHRvZ3JhcGh5ID49IDMuMy4yIiwKIF0KIAogW3Rvb2wu cHl0ZXN0LmluaV9vcHRpb25zXQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3NsL01ha2VmaWxlIGIv c3JjL3Rlc3Qvc3NsL01ha2VmaWxlCmluZGV4IGFhMDYyOTQ1ZmI5Li4yODc3MjlhZDlmYiAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3Qvc3NsL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L3NzbC9NYWtlZmls ZQpAQCAtMzAsNiArMzAsOCBAQCBjbGVhbiBkaXN0Y2xlYW46CiAjIERvZXNuJ3QgZGVwZW5kIG9u IHNzbGZpbGVzIGJlY2F1c2Ugd2UgZG9uJ3QgcmVidWlsZCB0aGVtIGJ5IGRlZmF1bHQKIGNoZWNr OgogCSQocHJvdmVfY2hlY2spCisJIyBYWFggdGhlc2Ugc3VpdGVzIHNob3VsZCBydW4gaW5kZXBl bmRlbnRseSwgbm90IHNlcmlhbGx5CisJJChweXRlc3RfY2hlY2spCiAKIGluc3RhbGxjaGVjazoK IAkkKHByb3ZlX2luc3RhbGxjaGVjaykKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3NzbC9tZXNvbi5i dWlsZCBiL3NyYy90ZXN0L3NzbC9tZXNvbi5idWlsZAppbmRleCA5ZTViZGJiNjEzNi4uNmVjMjc0 ZDgxNjUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3NzbC9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVz dC9zc2wvbWVzb24uYnVpbGQKQEAgLTE1LDQgKzE1LDEwIEBAIHRlc3RzICs9IHsKICAgICAgICd0 LzAwM19zc2xpbmZvLnBsJywKICAgICBdLAogICB9LAorICAncHl0ZXN0JzogeworICAgICd0ZXN0 cyc6IFsKKyAgICAgICdweXQvdGVzdF9jbGllbnQucHknLAorICAgICAgJ3B5dC90ZXN0X3NlcnZl ci5weScsCisgICAgXSwKKyAgfSwKIH0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3NzbC9weXQvY29u ZnRlc3QucHkgYi9zcmMvdGVzdC9zc2wvcHl0L2NvbmZ0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44NzBmNzM4YWM0NAotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy90ZXN0L3NzbC9weXQvY29uZnRlc3QucHkKQEAgLTAsMCArMSwxMjggQEAKKyMgQ29weXJpZ2h0 IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCitpbXBvcnQg ZGF0ZXRpbWUKK2ltcG9ydCByZQoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCB0ZW1wZmlsZQor ZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQorCitpbXBvcnQgcHl0ZXN0CisKKwor QHB5dGVzdC5maXh0dXJlKHNjb3BlPSJzZXNzaW9uIikKK2RlZiBjcnlwdG9ncmFwaHkoKToKKyAg ICByZXR1cm4gcHl0ZXN0LmltcG9ydG9yc2tpcCgiY3J5cHRvZ3JhcGh5IiwgIjMuMy4yIikKKwor CitDZXJ0ID0gbmFtZWR0dXBsZSgiQ2VydCIsICJjZXJ0LCBjZXJ0cGF0aCwga2V5LCBrZXlwYXRo IikKKworCitAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9InNlc3Npb24iKQorZGVmIGNlcnRzKGNyeXB0 b2dyYXBoeSwgdG1wX3BhdGhfZmFjdG9yeSk6CisgICAgIiIiCisgICAgQ2FjaGVzIGNvbW1vbmx5 IHVzZWQgY2VydGlmaWNhdGVzIGF0IHRoZSBzZXNzaW9uIGxldmVsLCBhbmQgcHJvdmlkZXMgYSB3 YXkKKyAgICB0byBjcmVhdGUgbmV3IG9uZXMuCisKKyAgICAtIGNlcnRzLmNhOiB0aGUgcm9vdCBD QSBjZXJ0aWZpY2F0ZQorCisgICAgLSBjZXJ0cy5zZXJ2ZXI6IHRoZSAic3RhbmRhcmQiIHNlcnZl ciBjZXJ0ZmljYXRlLCBzaWduZWQgYnkgY2VydHMuY2EKKworICAgIC0gY2VydHMuc2VydmVyX2hv c3Q6IHRoZSBob3N0bmFtZSBvZiB0aGUgY2VydHMuc2VydmVyIGNlcnRpZmljYXRlCisKKyAgICAt IGNlcnRzLm5ldygpOiBjcmVhdGVzIGEgY3VzdG9tIGNlcnRpZmljYXRlLCBzaWduZWQgYnkgY2Vy dHMuY2EKKyAgICAiIiIKKworICAgIGZyb20gY3J5cHRvZ3JhcGh5IGltcG9ydCB4NTA5CisgICAg ZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2ZXMgaW1wb3J0IGhhc2hlcywgc2VyaWFs aXphdGlvbgorICAgIGZyb20gY3J5cHRvZ3JhcGh5Lmhhem1hdC5wcmltaXRpdmVzLmFzeW1tZXRy aWMgaW1wb3J0IHJzYQorICAgIGZyb20gY3J5cHRvZ3JhcGh5Lng1MDkub2lkIGltcG9ydCBOYW1l T0lECisKKyAgICB0bXBkaXIgPSB0bXBfcGF0aF9mYWN0b3J5Lm1rdGVtcCgidGVzdC1jZXJ0cyIp CisKKyAgICBjbGFzcyBfQ2VydHM6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAg ICAgICAgIHNlbGYuY2EgPSBzZWxmLm5ldygKKyAgICAgICAgICAgICAgICB4NTA5Lk5hbWUoCisg ICAgICAgICAgICAgICAgICAgIFt4NTA5Lk5hbWVBdHRyaWJ1dGUoTmFtZU9JRC5DT01NT05fTkFN RSwgIlBHIHB5dGVzdCBDQSIpXSwKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAg IGNhPVRydWUsCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgIHNlbGYuc2VydmVyX2hvc3Qg PSAiZXhhbXBsZS5vcmciCisgICAgICAgICAgICBzZWxmLnNlcnZlciA9IHNlbGYubmV3KAorICAg ICAgICAgICAgICAgIHg1MDkuTmFtZSgKKyAgICAgICAgICAgICAgICAgICAgW3g1MDkuTmFtZUF0 dHJpYnV0ZShOYW1lT0lELkNPTU1PTl9OQU1FLCBzZWxmLnNlcnZlcl9ob3N0KV0sCisgICAgICAg ICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgICAgIGRlZiBuZXcoc2VsZiwgc3ViamVj dDogeDUwOS5OYW1lLCAqLCBjYT1GYWxzZSkgLT4gQ2VydDoKKyAgICAgICAgICAgICIiIgorICAg ICAgICAgICAgQ3JlYXRlcyBhbmQgc2lnbnMgYSBuZXcgQ2VydCB3aXRoIHRoZSBnaXZlbiBzdWJq ZWN0IG5hbWUuIElmIGNhIGlzCisgICAgICAgICAgICBUcnVlLCB0aGUgY2VydGlmaWNhdGUgd2ls bCBiZSBzZWxmLXNpZ25lZDsgb3RoZXJ3aXNlIHRoZSBjZXJ0aWZpY2F0ZQorICAgICAgICAgICAg aXMgc2lnbmVkIGJ5IHNlbGYuY2EuCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGtleSA9 IHJzYS5nZW5lcmF0ZV9wcml2YXRlX2tleSgKKyAgICAgICAgICAgICAgICBwdWJsaWNfZXhwb25l bnQ9NjU1MzcsCisgICAgICAgICAgICAgICAga2V5X3NpemU9MjA0OCwKKyAgICAgICAgICAgICkK KworICAgICAgICAgICAgYnVpbGRlciA9IHg1MDkuQ2VydGlmaWNhdGVCdWlsZGVyKCkKKyAgICAg ICAgICAgIG5vdyA9IGRhdGV0aW1lLmRhdGV0aW1lLm5vdyhkYXRldGltZS50aW1lem9uZS51dGMp CisKKyAgICAgICAgICAgIGJ1aWxkZXIgPSAoCisgICAgICAgICAgICAgICAgYnVpbGRlci5zdWJq ZWN0X25hbWUoc3ViamVjdCkKKyAgICAgICAgICAgICAgICAucHVibGljX2tleShrZXkucHVibGlj X2tleSgpKQorICAgICAgICAgICAgICAgIC5zZXJpYWxfbnVtYmVyKHg1MDkucmFuZG9tX3Nlcmlh bF9udW1iZXIoKSkKKyAgICAgICAgICAgICAgICAubm90X3ZhbGlkX2JlZm9yZShub3cpCisgICAg ICAgICAgICAgICAgLm5vdF92YWxpZF9hZnRlcihub3cgKyBkYXRldGltZS50aW1lZGVsdGEoaG91 cnM9MSkpCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgIGlmIGNhOgorICAgICAgICAgICAg ICAgIGJ1aWxkZXIgPSBidWlsZGVyLmlzc3Vlcl9uYW1lKHN1YmplY3QpCisgICAgICAgICAgICBl bHNlOgorICAgICAgICAgICAgICAgIGJ1aWxkZXIgPSBidWlsZGVyLmlzc3Vlcl9uYW1lKHNlbGYu Y2EuY2VydC5zdWJqZWN0KQorCisgICAgICAgICAgICBidWlsZGVyID0gYnVpbGRlci5hZGRfZXh0 ZW5zaW9uKAorICAgICAgICAgICAgICAgIHg1MDkuQmFzaWNDb25zdHJhaW50cyhjYT1jYSwgcGF0 aF9sZW5ndGg9Tm9uZSksCisgICAgICAgICAgICAgICAgY3JpdGljYWw9VHJ1ZSwKKyAgICAgICAg ICAgICkKKworICAgICAgICAgICAgY2VydCA9IGJ1aWxkZXIuc2lnbigKKyAgICAgICAgICAgICAg ICBwcml2YXRlX2tleT1rZXkgaWYgY2EgZWxzZSBzZWxmLmNhLmtleSwKKyAgICAgICAgICAgICAg ICBhbGdvcml0aG09aGFzaGVzLlNIQTI1NigpLAorICAgICAgICAgICAgKQorCisgICAgICAgICAg ICAjIER1bXAgdGhlIGNlcnRpZmljYXRlIGFuZCBrZXkgdG8gZmlsZS4KKyAgICAgICAgICAgIGtl eXBhdGggPSBzZWxmLl90b2ZpbGUoCisgICAgICAgICAgICAgICAga2V5LnByaXZhdGVfYnl0ZXMo CisgICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6YXRpb24uRW5jb2RpbmcuUEVNLAorICAgICAg ICAgICAgICAgICAgICBzZXJpYWxpemF0aW9uLlByaXZhdGVGb3JtYXQuUEtDUzgsCisgICAgICAg ICAgICAgICAgICAgIHNlcmlhbGl6YXRpb24uTm9FbmNyeXB0aW9uKCksCisgICAgICAgICAgICAg ICAgKSwKKyAgICAgICAgICAgICAgICBzdWZmaXg9Ii5rZXkiLAorICAgICAgICAgICAgKQorICAg ICAgICAgICAgY2VydHBhdGggPSBzZWxmLl90b2ZpbGUoCisgICAgICAgICAgICAgICAgY2VydC5w dWJsaWNfYnl0ZXMoc2VyaWFsaXphdGlvbi5FbmNvZGluZy5QRU0pLAorICAgICAgICAgICAgICAg IHN1ZmZpeD0iLWNhLmNydCIgaWYgY2EgZWxzZSAiLmNydCIsCisgICAgICAgICAgICApCisKKyAg ICAgICAgICAgIHJldHVybiBDZXJ0KAorICAgICAgICAgICAgICAgIGNlcnQ9Y2VydCwKKyAgICAg ICAgICAgICAgICBjZXJ0cGF0aD1jZXJ0cGF0aCwKKyAgICAgICAgICAgICAgICBrZXk9a2V5LAor ICAgICAgICAgICAgICAgIGtleXBhdGg9a2V5cGF0aCwKKyAgICAgICAgICAgICkKKworICAgICAg ICBkZWYgX3RvZmlsZShzZWxmLCBkYXRhOiBieXRlcywgKiwgc3VmZml4KSAtPiBzdHI6CisgICAg ICAgICAgICAiIiIKKyAgICAgICAgICAgIER1bXBzIGRhdGEgdG8gYSBmaWxlIG9uIGRpc2sgd2l0 aCB0aGUgcmVxdWVzdGVkIHN1ZmZpeCBhbmQgcmV0dXJucworICAgICAgICAgICAgdGhlIHBhdGgu IFRoZSBmaWxlIGlzIGxvY2F0ZWQgc29tZXdoZXJlIGluIHB5dGVzdCdzIHRlbXBvcmFyeQorICAg ICAgICAgICAgZGlyZWN0b3J5IHJvb3QuCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGYg PSB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoc3VmZml4PXN1ZmZpeCwgZGlyPXRtcGRpciwg ZGVsZXRlPUZhbHNlKQorICAgICAgICAgICAgd2l0aCBmOgorICAgICAgICAgICAgICAgIGYud3Jp dGUoZGF0YSkKKworICAgICAgICAgICAgcmV0dXJuIGYubmFtZQorCisgICAgcmV0dXJuIF9DZXJ0 cygpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zc2wvcHl0L3Rlc3RfY2xpZW50LnB5IGIvc3JjL3Rl c3Qvc3NsL3B5dC90ZXN0X2NsaWVudC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMC4uNTU2YmFkMzNiZjgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zc2wvcHl0 L3Rlc3RfY2xpZW50LnB5CkBAIC0wLDAgKzEsMjc4IEBACisjIENvcHlyaWdodCAoYykgMjAyNSwg UG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworaW1wb3J0IGNvbnRleHRsaWIK K2ltcG9ydCBjdHlwZXMKK2ltcG9ydCBzb2NrZXQKK2ltcG9ydCBzc2wKK2ltcG9ydCBzdHJ1Y3QK K2ltcG9ydCB0aHJlYWRpbmcKK2Zyb20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZQorCitpbXBvcnQg cHl0ZXN0CisKK2ltcG9ydCBweXBnCitmcm9tIGxpYnBxIGltcG9ydCBMaWJwcUVycm9yLCBFeGVj U3RhdHVzCisKKyMgVGhpcyBzdWl0ZSBvcGVucyB1cCBsb2NhbCBUQ1AgcG9ydHMgYW5kIGlzIGhp ZGRlbiBiZWhpbmQgUEdfVEVTVF9FWFRSQT1zc2wuCitweXRlc3RtYXJrID0gcHlwZy5yZXF1aXJl X3Rlc3RfZXh0cmFzKCJzc2wiKQorCisKK0BweXRlc3QuZml4dHVyZShzY29wZT0ic2Vzc2lvbiIs IGF1dG91c2U9VHJ1ZSkKK2RlZiBza2lwX2lmX25vX3NzbF9zdXBwb3J0KGxpYnBxX2hhbmRsZSk6 CisgICAgIiIiU2tpcHMgdGVzdHMgaWYgU1NMIHN1cHBvcnQgaXMgbm90IGNvbmZpZ3VyZWQuIiIi CisKKyAgICAjIERlY2xhcmUgUFFzc2xBdHRyaWJ1dGUoKS4KKyAgICBQUXNzbEF0dHJpYnV0ZSA9 IGxpYnBxX2hhbmRsZS5QUXNzbEF0dHJpYnV0ZQorICAgIFBRc3NsQXR0cmlidXRlLnJlc3R5cGUg PSBjdHlwZXMuY19jaGFyX3AKKyAgICBQUXNzbEF0dHJpYnV0ZS5hcmd0eXBlcyA9IFtjdHlwZXMu Y192b2lkX3AsIGN0eXBlcy5jX2NoYXJfcF0KKworICAgIGlmIG5vdCBQUXNzbEF0dHJpYnV0ZShO b25lLCBiImxpYnJhcnkiKToKKyAgICAgICAgcHl0ZXN0LnNraXAoInJlcXVpcmVzIFNTTCBzdXBw b3J0IHRvIGJlIGNvbmZpZ3VyZWQiKQorCisKKyMKKyMgVGVzdCBGaXh0dXJlcworIworCisKK0Bw eXRlc3QuZml4dHVyZQorZGVmIHRjcF9zZXJ2ZXJfY2xhc3MocmVtYWluaW5nX3RpbWVvdXQpOgor ICAgICIiIgorICAgIE1ldGFmaXh0dXJlIHRvIGNvbWJpbmUgcmVsYXRlZCBsb2dpYyBmb3IgdGNw X3NlcnZlciBhbmQgc3NsX3NlcnZlci4KKworICAgIFRPRE86IGNvbWJpbmUgd2l0aCB0ZXN0X2xp YnBxLmxvY2FsX3NlcnZlcgorICAgICIiIgorCisgICAgY2xhc3MgX1RDUFNlcnZlcihjb250ZXh0 bGliLkV4aXRTdGFjayk6CisgICAgICAgICIiIgorICAgICAgICBJbXBsZW1lbnRhdGlvbiBjbGFz cyBmb3IgdGNwX3NlcnZlci4gU2VlIC5iYWNrZ3JvdW5kKCkgZm9yIHRoZSBwcmltYXJ5CisgICAg ICAgIGVudHJ5IHBvaW50IGZvciB0ZXN0cy4gUG9zdGdyZXMgY2xpZW50cyBtYXkgY29ubmVjdCB0 byB0aGlzIHNlcnZlciB2aWEKKyAgICAgICAgKip0Y3Bfc2VydmVyLmNvbm5pbmZvLgorCisgICAg ICAgIF9UQ1BTZXJ2ZXIgZGVyaXZlcyBmcm9tIGNvbnRleHRsaWIuRXhpdFN0YWNrIHRvIHByb3Zp ZGUgZWFzeSBjbGVhbnVwIG9mCisgICAgICAgIGFzc29jaWF0ZWQgcmVzb3VyY2VzOyBzZWUgdGhl IGRvY3VtZW50YXRpb24gZm9yIHRoYXQgY2xhc3MgZm9yIGEgZnVsbAorICAgICAgICBleHBsYW5h dGlvbi4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAg ICAgICAgc3VwZXIoKS5fX2luaXRfXygpCisKKyAgICAgICAgICAgIHNlbGYuX3RocmVhZCA9IE5v bmUKKyAgICAgICAgICAgIHNlbGYuX3RocmVhZF9leGMgPSBOb25lCisgICAgICAgICAgICBzZWxm Ll9saXN0ZW5lciA9IHNlbGYuZW50ZXJfY29udGV4dCgKKyAgICAgICAgICAgICAgICBzb2NrZXQu c29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pLAorICAgICAgICAgICAg KQorCisgICAgICAgICAgICBzZWxmLl9iaW5kX2FuZF9saXN0ZW4oKQorICAgICAgICAgICAgc29j a25hbWUgPSBzZWxmLl9saXN0ZW5lci5nZXRzb2NrbmFtZSgpCisgICAgICAgICAgICBzZWxmLmNv bm5pbmZvID0gZGljdCgKKyAgICAgICAgICAgICAgICBob3N0YWRkcj1zb2NrbmFtZVswXSwKKyAg ICAgICAgICAgICAgICBwb3J0PXNvY2tuYW1lWzFdLAorICAgICAgICAgICAgKQorCisgICAgICAg IGRlZiBfYmluZF9hbmRfbGlzdGVuKHNlbGYpOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAg ICBEb2VzIHRoZSBhY3R1YWwgd29yayBvZiBiaW5kaW5nIHRoZSBzb2NrZXQgYW5kIGxpc3Rlbmlu ZyBmb3IKKyAgICAgICAgICAgIGNvbm5lY3Rpb25zLgorCisgICAgICAgICAgICBUaGUgbGlzdGVu IGJhY2tsb2cgaXMgY3VycmVudGx5IGhhcmRjb2RlZCB0byBvbmUuCisgICAgICAgICAgICAiIiIK KyAgICAgICAgICAgIHNlbGYuX2xpc3RlbmVyLmJpbmQoKCIxMjcuMC4wLjEiLCAwKSkKKyAgICAg ICAgICAgIHNlbGYuX2xpc3RlbmVyLmxpc3RlbigxKQorCisgICAgICAgIGRlZiBiYWNrZ3JvdW5k KHNlbGYsIGZuOiBDYWxsYWJsZVtbc29ja2V0LnNvY2tldF0sIE5vbmVdKSAtPiBOb25lOgorICAg ICAgICAgICAgIiIiCisgICAgICAgICAgICBBY2NlcHRzIGEgY2xpZW50IGNvbm5lY3Rpb24gb24g YSBiYWNrZ3JvdW5kIHRocmVhZCBhbmQgcGFzc2VzIGl0IHRvCisgICAgICAgICAgICB0aGUgcHJv dmlkZWQgY2FsbGJhY2suIEFueSBleGNlcHRpb25zIHJhaXNlZCBmcm9tIHRoZSBjYWxsYmFjayB3 aWxsCisgICAgICAgICAgICBiZSByZS1yYWlzZWQgb24gdGhlIG1haW4gdGhyZWFkIGR1cmluZyBm aXh0dXJlIHRlYXJkb3duLgorCisgICAgICAgICAgICBCbG9ja2luZyBvcGVyYXRpb25zIG9uIHRo ZSBjb25uZWN0ZWQgc29ja2V0IGRlZmF1bHQgdG8gdXNpbmcgdGhlCisgICAgICAgICAgICByZW1h aW5pbmdfdGltZW91dCgpLCB0aG91Z2ggdGhpcyBjYW4gYmUgY2hhbmdlZCBieSB0aGUgdGVzdCB2 aWEgdGhlCisgICAgICAgICAgICBzb2NrZXQncyAuc2V0dGltZW91dCgpLgorICAgICAgICAgICAg IiIiCisKKyAgICAgICAgICAgIGRlZiBfYmcoKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAg ICAgICAgICAgICAgICAgIHNlbGYuX2xpc3RlbmVyLnNldHRpbWVvdXQocmVtYWluaW5nX3RpbWVv dXQoKSkKKyAgICAgICAgICAgICAgICAgICAgc29jaywgXyA9IHNlbGYuX2xpc3RlbmVyLmFjY2Vw dCgpCisKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBzb2NrOgorICAgICAgICAgICAgICAgICAg ICAgICAgc29jay5zZXR0aW1lb3V0KHJlbWFpbmluZ190aW1lb3V0KCkpCisgICAgICAgICAgICAg ICAgICAgICAgICBmbihzb2NrKQorCisgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBh cyBlOgorICAgICAgICAgICAgICAgICAgICAjIFNhdmUgdGhlIGV4Y2VwdGlvbiBmb3IgcmUtcmFp c2luZyBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3RocmVh ZF9leGMgPSBlCisKKyAgICAgICAgICAgICMgVE9ETzogcmF0aGVyIHRoYW4gdXNpbmcgY2FsbGJh Y2soKSwgY29uc2lkZXIgZXhwbGljaXRseSBzaWduYWxpbmcKKyAgICAgICAgICAgICMgdGhlIGZu KCkgaW1wbGVtZW50YXRpb24gdG8gc3RvcCBlYXJseSBpZiB3ZSBnZXQgYW4gZXhjZXB0aW9uLgor ICAgICAgICAgICAgIyBPdGhlcndpc2Ugd2UnbGwgaGFuZyB1bnRpbCB0aGUgZW5kIG9mIHRoZSB0 aW1lb3V0LgorICAgICAgICAgICAgc2VsZi5fdGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCh0YXJn ZXQ9X2JnKQorICAgICAgICAgICAgc2VsZi5jYWxsYmFjayhzZWxmLl9qb2luKQorCisgICAgICAg ICAgICBzZWxmLl90aHJlYWQuc3RhcnQoKQorCisgICAgICAgIGRlZiBfam9pbihzZWxmKToKKyAg ICAgICAgICAgICIiIgorICAgICAgICAgICAgV2FpdHMgZm9yIHRoZSBiYWNrZ3JvdW5kIHRocmVh ZCB0byBmaW5pc2ggYW5kIHJhaXNlcyBhbnkgdGhyb3duCisgICAgICAgICAgICBleGNlcHRpb24u IFRoaXMgaXMgY2FsbGVkIGR1cmluZyBmaXh0dXJlIHRlYXJkb3duLgorICAgICAgICAgICAgIiIi CisgICAgICAgICAgICAjIEdpdmUgYSBsaXR0bGUgYml0IG9mIHdpZ2dsZSByb29tIG9uIHRoZSBq b2luIHRpbWVvdXQsIHNpbmNlIHdlJ3JlCisgICAgICAgICAgICAjIHJhY2luZyBhZ2FpbnN0IHRo ZSB0ZXN0J3Mgb3duIHVzZSBvZiByZW1haW5pbmdfdGltZW91dCgpLiAoSXQncworICAgICAgICAg ICAgIyBwcmVmZXJhYmxlIHRvIGxldCB0ZXN0cyByZXBvcnQgdGltZW91dHM7IHRoZSBzdGFjayB0 cmFjZXMgd2lsbAorICAgICAgICAgICAgIyBoZWxwIHdpdGggZGVidWdnaW5nLikKKyAgICAgICAg ICAgIHNlbGYuX3RocmVhZC5qb2luKHJlbWFpbmluZ190aW1lb3V0KCkgKyAxKQorICAgICAgICAg ICAgaWYgc2VsZi5fdGhyZWFkLmlzX2FsaXZlKCk6CisgICAgICAgICAgICAgICAgcmFpc2UgVGlt ZW91dEVycm9yKCJiYWNrZ3JvdW5kIHRocmVhZCBpcyBzdGlsbCBydW5uaW5nIGFmdGVyIHRpbWVv dXQiKQorCisgICAgICAgICAgICBpZiBzZWxmLl90aHJlYWRfZXhjIGlzIG5vdCBOb25lOgorICAg ICAgICAgICAgICAgIHJhaXNlIHNlbGYuX3RocmVhZF9leGMKKworICAgIHJldHVybiBfVENQU2Vy dmVyCisKKworQHB5dGVzdC5maXh0dXJlCitkZWYgdGNwX3NlcnZlcih0Y3Bfc2VydmVyX2NsYXNz KToKKyAgICAiIiIKKyAgICBPcGVucyB1cCBhIGxvY2FsIFRDUCBzb2NrZXQgZm9yIG1vY2tpbmcg YSBQb3N0Z3JlcyBzZXJ2ZXIgb24gYSBiYWNrZ3JvdW5kCisgICAgdGhyZWFkLiBTZWUgdGhlIF9U Q1BTZXJ2ZXIgQVBJIGZvciB1c2FnZS4KKyAgICAiIiIKKyAgICB3aXRoIHRjcF9zZXJ2ZXJfY2xh c3MoKSBhcyBzOgorICAgICAgICB5aWVsZCBzCisKKworQHB5dGVzdC5maXh0dXJlCitkZWYgc3Ns X3NlcnZlcih0Y3Bfc2VydmVyX2NsYXNzLCBjZXJ0cyk6CisgICAgIiIiCisgICAgTGlrZSB0Y3Bf c2VydmVyLCBidXQgd2l0aCBhbiBhZGRpdGlvbmFsIC5iYWNrZ3JvdW5kX3NzbCgpIG1ldGhvZCB3 aGljaCB3aWxsCisgICAgcGVyZm9ybSBhIFNTTFJlcXVlc3QgaGFuZHNoYWtlIG9uIHRoZSBzb2Nr ZXQgYmVmb3JlIGhhbmRpbmcgdGhlIGNvbm5lY3Rpb24KKyAgICB0byB0aGUgdGVzdCBjYWxsYmFj ay4KKworICAgIFRoaXMgc2VydmVyIHVzZXMgY2VydHMuc2VydmVyIGFzIGl0cyBpZGVudGl0eS4K KyAgICAiIiIKKworICAgIGNsYXNzIF9TU0xTZXJ2ZXIodGNwX3NlcnZlcl9jbGFzcyk6CisgICAg ICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18oKQor CisgICAgICAgICAgICBzZWxmLmNvbm5pbmZvWyJob3N0Il0gPSBjZXJ0cy5zZXJ2ZXJfaG9zdAor CisgICAgICAgICAgICBzZWxmLl9jdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExT X1NFUlZFUikKKyAgICAgICAgICAgIHNlbGYuX2N0eC5sb2FkX2NlcnRfY2hhaW4oY2VydHMuc2Vy dmVyLmNlcnRwYXRoLCBjZXJ0cy5zZXJ2ZXIua2V5cGF0aCkKKworICAgICAgICBkZWYgYmFja2dy b3VuZF9zc2woc2VsZiwgZm46IENhbGxhYmxlW1tzc2wuU1NMU29ja2V0XSwgTm9uZV0pIC0+IE5v bmU6CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIEludm9rZXMgYSBzZXJ2ZXIgY2FsbGJh Y2sgYXMgd2l0aCAuYmFja2dyb3VuZCgpLCBidXQgYW4gU1NMUmVxdWVzdAorICAgICAgICAgICAg aGFuZHNoYWtlIGlzIHBlcmZvcm1lZCBmaXJzdCwgYW5kIHRoZSBzb2NrZXQgcHJvdmlkZWQgdG8g dGhlCisgICAgICAgICAgICBjYWxsYmFjayBoYXMgYmVlbiB3cmFwcGVkIGluIGFuIE9wZW5TU0wg bGF5ZXIuCisgICAgICAgICAgICAiIiIKKworICAgICAgICAgICAgZGVmIGhhbmRzaGFrZShzOiBz b2NrZXQuc29ja2V0KToKKyAgICAgICAgICAgICAgICBwa3RsZW4gPSBzdHJ1Y3QudW5wYWNrKCIh SSIsIHMucmVjdig0KSlbMF0KKworICAgICAgICAgICAgICAgICMgTWFrZSBzdXJlIHdlIGdldCBh biBTU0xSZXF1ZXN0LgorICAgICAgICAgICAgICAgIHZlcnNpb24gPSBzdHJ1Y3QudW5wYWNrKCIh SEgiLCBzLnJlY3YoNCkpCisgICAgICAgICAgICAgICAgYXNzZXJ0IHZlcnNpb24gPT0gKDEyMzQs IDU2NzkpCisgICAgICAgICAgICAgICAgYXNzZXJ0IHBrdGxlbiA9PSA4CisKKyAgICAgICAgICAg ICAgICAjIEFjY2VwdCB0aGUgU1NMUmVxdWVzdC4KKyAgICAgICAgICAgICAgICBzLnNlbmQoYiJT IikKKworICAgICAgICAgICAgICAgIHdpdGggc2VsZi5fY3R4LndyYXBfc29ja2V0KHMsIHNlcnZl cl9zaWRlPVRydWUpIGFzIHdyYXBwZWQ6CisgICAgICAgICAgICAgICAgICAgIGZuKHdyYXBwZWQp CisKKyAgICAgICAgICAgIHNlbGYuYmFja2dyb3VuZChoYW5kc2hha2UpCisKKyAgICB3aXRoIF9T U0xTZXJ2ZXIoKSBhcyBzOgorICAgICAgICB5aWVsZCBzCisKKworIworIyBUZXN0cworIworCisK K0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgic3NsbW9kZSIsICgicmVxdWlyZSIsICJ2ZXJpZnkt Y2EiLCAidmVyaWZ5LWZ1bGwiKSkKK2RlZiB0ZXN0X3NlcnZlcl93aXRoX3NzbF9kaXNhYmxlZChj b25uZWN0LCB0Y3Bfc2VydmVyLCBjZXJ0cywgc3NsbW9kZSk6CisgICAgIiIiCisgICAgTWFrZSBz dXJlIGNsaWVudCByZWZ1c2VzIHRvIHRhbGsgdG8gbm9uLVNTTCBzZXJ2ZXJzIHdpdGggc3RyaWN0 ZXIKKyAgICBzc2xtb2Rlcy4KKyAgICAiIiIKKworICAgIGRlZiByZWZ1c2Vfc3NsKHM6IHNvY2tl dC5zb2NrZXQpOgorICAgICAgICBwa3RsZW4gPSBzdHJ1Y3QudW5wYWNrKCIhSSIsIHMucmVjdig0 KSlbMF0KKworICAgICAgICAjIE1ha2Ugc3VyZSB3ZSBnZXQgYW4gU1NMUmVxdWVzdC4KKyAgICAg ICAgdmVyc2lvbiA9IHN0cnVjdC51bnBhY2soIiFISCIsIHMucmVjdig0KSkKKyAgICAgICAgYXNz ZXJ0IHZlcnNpb24gPT0gKDEyMzQsIDU2NzkpCisgICAgICAgIGFzc2VydCBwa3RsZW4gPT0gOAor CisgICAgICAgICMgUmVmdXNlIHRoZSBTU0xSZXF1ZXN0LgorICAgICAgICBzLnNlbmQoYiJOIikK KworICAgICAgICAjIFdhaXQgZm9yIHRoZSBjbGllbnQgdG8gY2xvc2UgdGhlIGNvbm5lY3Rpb24u CisgICAgICAgIGFzc2VydCBub3Qgcy5yZWN2KDEpLCAiY2xpZW50IHNlbnQgdW5leHBlY3RlZCBk YXRhIgorCisgICAgdGNwX3NlcnZlci5iYWNrZ3JvdW5kKHJlZnVzZV9zc2wpCisKKyAgICB3aXRo IHB5dGVzdC5yYWlzZXMoTGlicHFFcnJvciwgbWF0Y2g9InNlcnZlciBkb2VzIG5vdCBzdXBwb3J0 IFNTTCIpOgorICAgICAgICBjb25uZWN0KAorICAgICAgICAgICAgKip0Y3Bfc2VydmVyLmNvbm5p bmZvLAorICAgICAgICAgICAgc3Nscm9vdGNlcnQ9Y2VydHMuY2EuY2VydHBhdGgsCisgICAgICAg ICAgICBzc2xtb2RlPXNzbG1vZGUsCisgICAgICAgICkKKworCitkZWYgdGVzdF92ZXJpZnlfZnVs bF9jb25uZWN0aW9uKGNvbm5lY3QsIHNzbF9zZXJ2ZXIsIGNlcnRzKToKKyAgICAiIiJDb21wbGV0 ZXMgYSB2ZXJpZnktZnVsbCBjb25uZWN0aW9uIGFuZCBlbXB0eSBxdWVyeS4iIiIKKworICAgIGRl ZiBoYW5kbGVfZW1wdHlfcXVlcnkoczogc3NsLlNTTFNvY2tldCk6CisgICAgICAgIHBrdGxlbiA9 IHN0cnVjdC51bnBhY2soIiFJIiwgcy5yZWN2KDQpKVswXQorCisgICAgICAgICMgQ2hlY2sgdGhl IHN0YXJ0dXAgcGFja2V0IHZlcnNpb24sIHRoZW4gZGlzY2FyZCB0aGUgcmVtYWluZGVyLgorICAg ICAgICB2ZXJzaW9uID0gc3RydWN0LnVucGFjaygiIUhIIiwgcy5yZWN2KDQpKQorICAgICAgICBh c3NlcnQgdmVyc2lvbiA9PSAoMywgMCkKKyAgICAgICAgcy5yZWN2KHBrdGxlbiAtIDgpCisKKyAg ICAgICAgIyBTZW5kIHRoZSByZXF1aXJlZCBsaXRhbnkgb2Ygc2VydmVyIG1lc3NhZ2VzLgorICAg ICAgICBzLnNlbmQoc3RydWN0LnBhY2soIiFjSUkiLCBiIlIiLCA4LCAwKSkgICMgQXV0aGVudGlj YXRpb25PSworCisgICAgICAgICMgUGFyYW1ldGVyU3RhdHVzOiBjbGllbnRfZW5jb2RpbmcKKyAg ICAgICAga2V5ID0gYiJjbGllbnRfZW5jb2RpbmdcMCIKKyAgICAgICAgdmFsID0gYiJVVEYtOFww IgorICAgICAgICBzLnNlbmQoc3RydWN0LnBhY2soIiFjSSIsIGIiUyIsIDQgKyBsZW4oa2V5KSAr IGxlbih2YWwpKSArIGtleSArIHZhbCkKKworICAgICAgICAjIFBhcmFtZXRlclN0YXR1czogRGF0 ZVN0eWxlCisgICAgICAgIGtleSA9IGIiRGF0ZVN0eWxlXDAiCisgICAgICAgIHZhbCA9IGIiSVNP LCBNRFlcMCIKKyAgICAgICAgcy5zZW5kKHN0cnVjdC5wYWNrKCIhY0kiLCBiIlMiLCA0ICsgbGVu KGtleSkgKyBsZW4odmFsKSkgKyBrZXkgKyB2YWwpCisKKyAgICAgICAgcy5zZW5kKHN0cnVjdC5w YWNrKCIhY0lJSSIsIGIiSyIsIDEyLCAxMjM0LCAxMjM0KSkgICMgQmFja2VuZEtleURhdGEKKyAg ICAgICAgcy5zZW5kKHN0cnVjdC5wYWNrKCIhY0ljIiwgYiJaIiwgNSwgYiJJIikpICAjIFJlYWR5 Rm9yUXVlcnkKKworICAgICAgICAjIEV4cGVjdCBhbiBlbXB0eSBxdWVyeS4KKyAgICAgICAgcGt0 dHlwZSA9IHMucmVjdigxKQorICAgICAgICBhc3NlcnQgcGt0dHlwZSA9PSBiIlEiCisgICAgICAg IHBrdGxlbiA9IHN0cnVjdC51bnBhY2soIiFJIiwgcy5yZWN2KDQpKVswXQorICAgICAgICBhc3Nl cnQgcy5yZWN2KHBrdGxlbiAtIDQpID09IGIiXDAiCisKKyAgICAgICAgIyBTZW5kIGFuIEVtcHR5 UXVlcnlSZXNwb25zZStSZWFkeUZvclF1ZXJ5LgorICAgICAgICBzLnNlbmQoc3RydWN0LnBhY2so IiFjSSIsIGIiSSIsIDQpKQorICAgICAgICBzLnNlbmQoc3RydWN0LnBhY2soIiFjSWMiLCBiIloi LCA1LCBiIkkiKSkKKworICAgICAgICAjIGxpYnBxIHNob3VsZCB0ZXJtaW5hdGUgYW5kIGNsb3Nl IHRoZSBjb25uZWN0aW9uLgorICAgICAgICBhc3NlcnQgcy5yZWN2KDEpID09IGIiWCIKKyAgICAg ICAgcGt0bGVuID0gc3RydWN0LnVucGFjaygiIUkiLCBzLnJlY3YoNCkpWzBdCisgICAgICAgIGFz c2VydCBwa3RsZW4gPT0gNAorCisgICAgICAgIGFzc2VydCBub3Qgcy5yZWN2KDEpLCAiY2xpZW50 IHNlbnQgdW5leHBlY3RlZCBkYXRhIgorCisgICAgc3NsX3NlcnZlci5iYWNrZ3JvdW5kX3NzbCho YW5kbGVfZW1wdHlfcXVlcnkpCisKKyAgICBjb25uID0gY29ubmVjdCgKKyAgICAgICAgKipzc2xf c2VydmVyLmNvbm5pbmZvLAorICAgICAgICBzc2xyb290Y2VydD1jZXJ0cy5jYS5jZXJ0cGF0aCwK KyAgICAgICAgc3NsbW9kZT0idmVyaWZ5LWZ1bGwiLAorICAgICkKKyAgICB3aXRoIGNvbm46Cisg ICAgICAgIGFzc2VydCBjb25uLmV4ZWMoIiIpLnN0YXR1cygpID09IEV4ZWNTdGF0dXMuUEdSRVNf RU1QVFlfUVVFUlkKLS0gCjIuNTIuMAoK --cf0f2795fe617e705419450ca58cceb69e2a378a306664a6a3b70c8c4a92 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v10-0005-WIP-pytest-Add-some-server-side-SSL-tests.patch Content-Type: text/x-patch; charset=utf-8; name=v10-0005-WIP-pytest-Add-some-server-side-SSL-tests.patch RnJvbSAzMjhkZTExNGFjNjBmMWEyNzRiMjg5MjU4ZGE3ZjgxMjk3MjViMTNmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogVHVlLCAxNiBEZWMgMjAyNSAwOTozMTo0NiArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjEwIDUvNV0gV0lQOiBweXRlc3Q6IEFkZCBzb21lIHNlcnZlci1zaWRlIFNTTCB0 ZXN0cwoKSW4gdGhlIHNhbWUgdmVpbiBhcyB0aGUgcHJldmlvdXMgY29tbWl0LCB0aGlzIGlzIGEg c2VydmVyLW9ubHkgdGVzdApzdWl0ZSBvcGVyYXRpbmcgYWdhaW5zdCBhIG1vY2sgY2xpZW50LiBU aGUgdGVzdCBpdHNlbGYgaXMgYSBoZWF2aWx5CnBhcmFtZXRlcml6ZWQgY2hlY2sgZm9yIGRpcmVj dC1TU0wgaGFuZHNoYWtlIGJlaGF2aW9yLCB1c2luZyBhCmNvbWJpbmF0aW9uIG9mICJzdGFuZGFy ZCIgYW5kICJjdXN0b20iIGNlcnRpZmljYXRlcyB2aWEgdGhlIGNlcnRzCmZpeHR1cmUuCgppbnN0 YWxsY2hlY2sgaXMgY3VycmVudGx5IHVuc3VwcG9ydGVkLCBidXQgdGhlIGFyY2hpdGVjdHVyZSBo YXMgc29tZQpleHRlbnNpb24gcG9pbnRzIHRoYXQgc2hvdWxkIG1ha2UgaXQgcG9zc2libGUgbGF0 ZXIuIEZvciBub3csIGEgbmV3CnNlcnZlciBpcyBhbHdheXMgc3RhcnRlZCBmb3IgdGhlIHRlc3Qg c2Vzc2lvbi4KClRPRE9zOgotIGltcHJvdmUgcmVtYWluaW5nX3RpbWVvdXQoKSBpbnRlZ3JhdGlv biB3aXRoIHNvY2tldCBvcGVyYXRpb25zOyBhdCB0aGUKICBtb21lbnQsIHRoZSB0aW1lb3V0IHJl c2V0cyBvbiBldmVyeSBjYWxsIHJhdGhlciB0aGFuIGRlY3JlbWVudGluZwotLS0KIHNyYy90ZXN0 L3NzbC9weXQvY29uZnRlc3QucHkgICAgfCAgNTAgKysrKysrKysrKwogc3JjL3Rlc3Qvc3NsL3B5 dC90ZXN0X3NlcnZlci5weSB8IDE2MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog MiBmaWxlcyBjaGFuZ2VkLCAyMTEgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy90ZXN0L3NzbC9weXQvdGVzdF9zZXJ2ZXIucHkKCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zc2wv cHl0L2NvbmZ0ZXN0LnB5IGIvc3JjL3Rlc3Qvc3NsL3B5dC9jb25mdGVzdC5weQppbmRleCA4NzBm NzM4YWM0NC4uZDEyMTcyNDgwMGIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3NzbC9weXQvY29uZnRl c3QucHkKKysrIGIvc3JjL3Rlc3Qvc3NsL3B5dC9jb25mdGVzdC5weQpAQCAtMTI2LDMgKzEyNiw1 MyBAQCBkZWYgY2VydHMoY3J5cHRvZ3JhcGh5LCB0bXBfcGF0aF9mYWN0b3J5KToKICAgICAgICAg ICAgIHJldHVybiBmLm5hbWUKIAogICAgIHJldHVybiBfQ2VydHMoKQorCisKK0BweXRlc3QuZml4 dHVyZShzY29wZT0ibW9kdWxlIiwgYXV0b3VzZT1UcnVlKQorZGVmIHNzbF9zZXR1cChwZ19zZXJ2 ZXJfbW9kdWxlLCBjZXJ0cywgZGF0YWRpcik6CisgICAgIiIiCisgICAgU2V0cyB1cCByZXF1aXJl ZCBzZXJ2ZXIgc2V0dGluZ3MgZm9yIGFsbCB0ZXN0cyBpbiB0aGlzIG1vZHVsZS4KKyAgICAiIiIK KyAgICB0cnk6CisgICAgICAgIHdpdGggcGdfc2VydmVyX21vZHVsZS5yZXN0YXJ0aW5nKCkgYXMg czoKKyAgICAgICAgICAgIHMuY29uZi5zZXQoCisgICAgICAgICAgICAgICAgc3NsPSJvbiIsCisg ICAgICAgICAgICAgICAgc3NsX2NhX2ZpbGU9Y2VydHMuY2EuY2VydHBhdGgsCisgICAgICAgICAg ICAgICAgc3NsX2NlcnRfZmlsZT1jZXJ0cy5zZXJ2ZXIuY2VydHBhdGgsCisgICAgICAgICAgICAg ICAgc3NsX2tleV9maWxlPWNlcnRzLnNlcnZlci5rZXlwYXRoLAorICAgICAgICAgICAgKQorCisg ICAgICAgICAgICAjIFJlamVjdCBieSBkZWZhdWx0LgorICAgICAgICAgICAgcy5oYmEucHJlcGVu ZCgiaG9zdHNzbCBhbGwgYWxsIGFsbCByZWplY3QiKQorCisgICAgZXhjZXB0IHN1YnByb2Nlc3Mu Q2FsbGVkUHJvY2Vzc0Vycm9yOgorICAgICAgICAjIFRoaXMgaXMgYSBkZWNlbnQgcGxhY2UgdG8g c2tpcCBpZiB0aGUgc2VydmVyIGlzbid0IHNldCB1cCBmb3IgU1NMLgorICAgICAgICBsb2dwYXRo ID0gZGF0YWRpciAvICJwb3N0Z3Jlc3FsLmxvZyIKKyAgICAgICAgdW5zdXBwb3J0ZWQgPSByZS5j b21waWxlKCJTU0wgaXMgbm90IHN1cHBvcnRlZCIpCisKKyAgICAgICAgd2l0aCBvcGVuKGxvZ3Bh dGgsICJyIikgYXMgbG9nOgorICAgICAgICAgICAgZm9yIGxpbmUgaW4gbG9nOgorICAgICAgICAg ICAgICAgIGlmIHVuc3VwcG9ydGVkLnNlYXJjaChsaW5lKToKKyAgICAgICAgICAgICAgICAgICAg cHl0ZXN0LnNraXAoInRoZSBzZXJ2ZXIgZG9lcyBub3Qgc3VwcG9ydCBTU0wiKQorCisgICAgICAg ICMgU29tZSBvdGhlciBlcnJvciBoYXBwZW5lZC4KKyAgICAgICAgcmFpc2UKKworICAgIHVzZXJz ID0gcGdfc2VydmVyX21vZHVsZS5jcmVhdGVfdXNlcnMoInNzbCIpCisgICAgZGJzID0gcGdfc2Vy dmVyX21vZHVsZS5jcmVhdGVfZGJzKCJzc2wiKQorCisgICAgcmV0dXJuICh1c2VycywgZGJzKQor CisKK0BweXRlc3QuZml4dHVyZShzY29wZT0ibW9kdWxlIikKK2RlZiBjbGllbnRfY2VydChzc2xf c2V0dXAsIGNlcnRzKToKKyAgICAiIiIKKyAgICBDcmVhdGVzIGEgQ2VydCBmb3IgdGhlICJzc2wi IHVzZXIuCisgICAgIiIiCisgICAgZnJvbSBjcnlwdG9ncmFwaHkgaW1wb3J0IHg1MDkKKyAgICBm cm9tIGNyeXB0b2dyYXBoeS54NTA5Lm9pZCBpbXBvcnQgTmFtZU9JRAorCisgICAgdXNlcnMsIF8g PSBzc2xfc2V0dXAKKyAgICB1c2VyID0gdXNlcnNbInNzbCJdCisKKyAgICByZXR1cm4gY2VydHMu bmV3KHg1MDkuTmFtZShbeDUwOS5OYW1lQXR0cmlidXRlKE5hbWVPSUQuQ09NTU9OX05BTUUsIHVz ZXIpXSkpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zc2wvcHl0L3Rlc3Rfc2VydmVyLnB5IGIvc3Jj L3Rlc3Qvc3NsL3B5dC90ZXN0X3NlcnZlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uZDVjYjE0YjZjOWEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zc2wv cHl0L3Rlc3Rfc2VydmVyLnB5CkBAIC0wLDAgKzEsMTYxIEBACisjIENvcHlyaWdodCAoYykgMjAy NSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworaW1wb3J0IHJlCitpbXBv cnQgc29ja2V0CitpbXBvcnQgc3NsCitpbXBvcnQgc3RydWN0CisKK2ltcG9ydCBweXRlc3QKKwor aW1wb3J0IHB5cGcKKworIyBUaGlzIHN1aXRlIG9wZW5zIHVwIGxvY2FsIFRDUCBwb3J0cyBhbmQg aXMgaGlkZGVuIGJlaGluZCBQR19URVNUX0VYVFJBPXNzbC4KK3B5dGVzdG1hcmsgPSBweXBnLnJl cXVpcmVfdGVzdF9leHRyYXMoInNzbCIpCisKKyMgRm9yIHVzZSB3aXRoIHRoZSBgY3JlZHNgIHBh cmFtZXRlciBiZWxvdy4KK0NMSUVOVCA9ICJjbGllbnQiCitTRVJWRVIgPSAic2VydmVyIgorCisK KyMgZm10OiBvZmYKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAiYXV0aF9tZXRob2Qs ICAgICAgICAgICAgICAgICAgICBjcmVkcywgIGV4cGVjdGVkX2Vycm9yIiwKK1sKKyAgICAjIFRy dXN0IGFsbG93cyBhbnl0aGluZy4KKyAgICAoInRydXN0IiwgICAgICAgICAgICAgICAgICAgICAg ICBOb25lLCAgIE5vbmUpLAorICAgICgidHJ1c3QiLCAgICAgICAgICAgICAgICAgICAgICAgIENM SUVOVCwgTm9uZSksCisgICAgKCJ0cnVzdCIsICAgICAgICAgICAgICAgICAgICAgICAgU0VSVkVS LCBOb25lKSwKKworICAgICMgdmVyaWZ5LWNhIGFsbG93cyBhbnkgQ0Etc2lnbmVkIGNlcnRpZmlj YXRlLgorICAgICgidHJ1c3QgY2xpZW50Y2VydD12ZXJpZnktY2EiLCAgIE5vbmUsICAgInJlcXVp cmVzIGEgdmFsaWQgY2xpZW50IGNlcnRpZmljYXRlIiksCisgICAgKCJ0cnVzdCBjbGllbnRjZXJ0 PXZlcmlmeS1jYSIsICAgQ0xJRU5ULCBOb25lKSwKKyAgICAoInRydXN0IGNsaWVudGNlcnQ9dmVy aWZ5LWNhIiwgICBTRVJWRVIsIE5vbmUpLAorCisgICAgIyBjZXJ0IGFuZCB2ZXJpZnktZnVsbCBh bGxvdyBvbmx5IHRoZSBjb3JyZWN0IGNlcnRpZmljYXRlLgorICAgICgidHJ1c3QgY2xpZW50Y2Vy dD12ZXJpZnktZnVsbCIsIE5vbmUsICAgInJlcXVpcmVzIGEgdmFsaWQgY2xpZW50IGNlcnRpZmlj YXRlIiksCisgICAgKCJ0cnVzdCBjbGllbnRjZXJ0PXZlcmlmeS1mdWxsIiwgQ0xJRU5ULCBOb25l KSwKKyAgICAoInRydXN0IGNsaWVudGNlcnQ9dmVyaWZ5LWZ1bGwiLCBTRVJWRVIsICJhdXRoZW50 aWNhdGlvbiBmYWlsZWQgZm9yIHVzZXIiKSwKKyAgICAoImNlcnQiLCAgICAgICAgICAgICAgICAg ICAgICAgICBOb25lLCAgICJyZXF1aXJlcyBhIHZhbGlkIGNsaWVudCBjZXJ0aWZpY2F0ZSIpLAor ICAgICgiY2VydCIsICAgICAgICAgICAgICAgICAgICAgICAgIENMSUVOVCwgTm9uZSksCisgICAg KCJjZXJ0IiwgICAgICAgICAgICAgICAgICAgICAgICAgU0VSVkVSLCAiYXV0aGVudGljYXRpb24g ZmFpbGVkIGZvciB1c2VyIiksCitdLAorKQorIyBmbXQ6IG9uCitkZWYgdGVzdF9kaXJlY3Rfc3Ns X2NlcnRpZmljYXRlX2F1dGhlbnRpY2F0aW9uKAorICAgIHBnLAorICAgIHNzbF9zZXR1cCwKKyAg ICBjZXJ0cywKKyAgICBjbGllbnRfY2VydCwKKyAgICByZW1haW5pbmdfdGltZW91dCwKKyAgICAj IHRlc3QgcGFyYW1ldGVycworICAgIGF1dGhfbWV0aG9kLAorICAgIGNyZWRzLAorICAgIGV4cGVj dGVkX2Vycm9yLAorKToKKyAgICAiIiIKKyAgICBUZXN0cyBkaXJlY3QgU1NMIGNvbm5lY3Rpb25z IHdpdGggdmFyaW91cyBjbGllbnQtY2VydGlmaWNhdGUvSEJBCisgICAgY29tYmluYXRpb25zLgor ICAgICIiIgorCisgICAgIyBTZXQgdXAgdGhlIEhCQSBhcyBkZXNpcmVkIGJ5IHRoZSB0ZXN0Lgor ICAgIHVzZXJzLCBkYnMgPSBzc2xfc2V0dXAKKworICAgIHVzZXIgPSB1c2Vyc1sic3NsIl0KKyAg ICBkYiA9IGRic1sic3NsIl0KKworICAgIHdpdGggcGcucmVsb2FkaW5nKCkgYXMgczoKKyAgICAg ICAgcy5oYmEucHJlcGVuZCgKKyAgICAgICAgICAgIFsiaG9zdHNzbCIsIGRiLCB1c2VyLCAiMTI3 LjAuMC4xLzMyIiwgYXV0aF9tZXRob2RdLAorICAgICAgICAgICAgWyJob3N0c3NsIiwgZGIsIHVz ZXIsICI6OjEvMTI4IiwgYXV0aF9tZXRob2RdLAorICAgICAgICApCisKKyAgICAjIENvbmZpZ3Vy ZSB0aGUgU1NMIHNldHRpbmdzIGZvciB0aGUgY2xpZW50LgorICAgIGN0eCA9IHNzbC5TU0xDb250 ZXh0KHNzbC5QUk9UT0NPTF9UTFNfQ0xJRU5UKQorICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlv bnMoY2FmaWxlPWNlcnRzLmNhLmNlcnRwYXRoKQorICAgIGN0eC5zZXRfYWxwbl9wcm90b2NvbHMo WyJwb3N0Z3Jlc3FsIl0pICAjIGZvciBkaXJlY3QgU1NMCisKKyAgICAjIExvYWQgdXAgYSBjbGll bnQgY2VydGlmaWNhdGUgaWYgcmVxdWlyZWQgYnkgdGhlIHRlc3QuCisgICAgaWYgY3JlZHMgPT0g Q0xJRU5UOgorICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKGNsaWVudF9jZXJ0LmNlcnRwYXRo LCBjbGllbnRfY2VydC5rZXlwYXRoKQorICAgIGVsaWYgY3JlZHMgPT0gU0VSVkVSOgorICAgICAg ICAjIFVzaW5nIGEgc2VydmVyIGNlcnRpZmljYXRlIGFzIHRoZSBjbGllbnQgY3JlZGVudGlhbCBp cyBleHBlY3RlZCB0bworICAgICAgICAjIHdvcmsgb25seSBmb3IgY2xpZW50Y2VydD12ZXJpZnkt Y2EgKGFuZCBgdHJ1c3RgLCBuYXR1cmFsbHkpLgorICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWlu KGNlcnRzLnNlcnZlci5jZXJ0cGF0aCwgY2VydHMuc2VydmVyLmtleXBhdGgpCisKKyAgICAjIE1h a2UgYSBkaXJlY3QgU1NMIGNvbm5lY3Rpb24uIFRoZXJlJ3Mgbm8gU1NMUmVxdWVzdCBpbiB0aGUg aGFuZHNoYWtlOyB3ZQorICAgICMgc2ltcGx5IHdyYXAgYSBUQ1AgY29ubmVjdGlvbiB3aXRoIE9w ZW5TU0wuCisgICAgYWRkciA9IChwZy5ob3N0YWRkciwgcGcucG9ydCkKKyAgICB3aXRoIHNvY2tl dC5jcmVhdGVfY29ubmVjdGlvbihhZGRyKSBhcyBzOgorICAgICAgICBzLnNldHRpbWVvdXQocmVt YWluaW5nX3RpbWVvdXQoKSkgICMgWFhYIHRoaXMgcmVzZXRzIGV2ZXJ5IG9wZXJhdGlvbgorCisg ICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHMsIHNlcnZlcl9ob3N0bmFtZT1jZXJ0cy5zZXJ2 ZXJfaG9zdCkgYXMgY29ubjoKKyAgICAgICAgICAgICMgQnVpbGQgYW5kIHNlbmQgdGhlIHN0YXJ0 dXAgcGFja2V0LgorICAgICAgICAgICAgc3RhcnR1cF9vcHRpb25zID0gZGljdCgKKyAgICAgICAg ICAgICAgICB1c2VyPXVzZXIsCisgICAgICAgICAgICAgICAgZGF0YWJhc2U9ZGIsCisgICAgICAg ICAgICAgICAgYXBwbGljYXRpb25fbmFtZT0icHl0ZXN0IiwKKyAgICAgICAgICAgICkKKworICAg ICAgICAgICAgcGF5bG9hZCA9IGIiIgorICAgICAgICAgICAgZm9yIGssIHYgaW4gc3RhcnR1cF9v cHRpb25zLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgcGF5bG9hZCArPSBrLmVuY29kZSgpICsg YiJcMCIKKyAgICAgICAgICAgICAgICBwYXlsb2FkICs9IHN0cih2KS5lbmNvZGUoKSArIGIiXDAi CisgICAgICAgICAgICBwYXlsb2FkICs9IGIiXDAiICAjIG51bGwgdGVybWluYXRvcgorCisgICAg ICAgICAgICBwa3RsZW4gPSA0ICsgNCArIGxlbihwYXlsb2FkKQorICAgICAgICAgICAgY29ubi5z ZW5kKHN0cnVjdC5wYWNrKCIhSUhIIiwgcGt0bGVuLCAzLCAwKSArIHBheWxvYWQpCisKKyAgICAg ICAgICAgIGlmIG5vdCBleHBlY3RlZF9lcnJvcjoKKyAgICAgICAgICAgICAgICAjIEV4cGVjdCBh biBBdXRoZW50aWNhdGlvbk9LIHRvIGNvbWUgYmFjay4KKyAgICAgICAgICAgICAgICBwa3R0eXBl LCBwa3RsZW4gPSBzdHJ1Y3QudW5wYWNrKCIhY0kiLCBjb25uLnJlY3YoNSkpCisgICAgICAgICAg ICAgICAgYXNzZXJ0IHBrdHR5cGUgPT0gYiJSIgorICAgICAgICAgICAgICAgIGFzc2VydCBwa3Rs ZW4gPT0gOAorCisgICAgICAgICAgICAgICAgYXV0aG5fcmVzdWx0ID0gc3RydWN0LnVucGFjaygi IUkiLCBjb25uLnJlY3YoNCkpWzBdCisgICAgICAgICAgICAgICAgYXNzZXJ0IGF1dGhuX3Jlc3Vs dCA9PSAwCisKKyAgICAgICAgICAgICAgICAjIFJlYWQgYW5kIGRpc2NhcmQgdG8gUmVhZHlGb3JR dWVyeS4KKyAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICBw a3R0eXBlLCBwa3RsZW4gPSBzdHJ1Y3QudW5wYWNrKCIhY0kiLCBjb25uLnJlY3YoNSkpCisgICAg ICAgICAgICAgICAgICAgIHBheWxvYWQgPSBjb25uLnJlY3YocGt0bGVuIC0gNCkKKworICAgICAg ICAgICAgICAgICAgICBpZiBwa3R0eXBlID09IGIiWiI6CisgICAgICAgICAgICAgICAgICAgICAg ICBhc3NlcnQgcGF5bG9hZCA9PSBiIkkiCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhawor CisgICAgICAgICAgICAgICAgIyBTZW5kIGFuIGVtcHR5IHF1ZXJ5LgorICAgICAgICAgICAgICAg IGNvbm4uc2VuZChzdHJ1Y3QucGFjaygiIWNJIiwgYiJRIiwgNSkgKyBiIlwwIikKKworICAgICAg ICAgICAgICAgICMgRXhwZWN0IEVtcHR5UXVlcnlSZXNwb25zZStSZWFkeUZvclF1ZXJ5LgorICAg ICAgICAgICAgICAgIHBrdHR5cGUsIHBrdGxlbiA9IHN0cnVjdC51bnBhY2soIiFjSSIsIGNvbm4u cmVjdig1KSkKKyAgICAgICAgICAgICAgICBhc3NlcnQgcGt0dHlwZSA9PSBiIkkiCisgICAgICAg ICAgICAgICAgYXNzZXJ0IHBrdGxlbiA9PSA0CisKKyAgICAgICAgICAgICAgICBwa3R0eXBlLCBw a3RsZW4gPSBzdHJ1Y3QudW5wYWNrKCIhY0kiLCBjb25uLnJlY3YoNSkpCisgICAgICAgICAgICAg ICAgYXNzZXJ0IHBrdHR5cGUgPT0gYiJaIgorCisgICAgICAgICAgICAgICAgcGF5bG9hZCA9IGNv bm4ucmVjdihwa3RsZW4gLSA0KQorICAgICAgICAgICAgICAgIGFzc2VydCBwYXlsb2FkID09IGIi SSIKKworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIE1hdGNoIHRoZSBleHBl Y3RlZCBhdXRoZW50aWNhdGlvbiBlcnJvci4KKyAgICAgICAgICAgICAgICBwa3R0eXBlLCBwa3Rs ZW4gPSBzdHJ1Y3QudW5wYWNrKCIhY0kiLCBjb25uLnJlY3YoNSkpCisgICAgICAgICAgICAgICAg YXNzZXJ0IHBrdHR5cGUgPT0gYiJFIgorCisgICAgICAgICAgICAgICAgcGF5bG9hZCA9IGNvbm4u cmVjdihwa3RsZW4gLSA0KQorICAgICAgICAgICAgICAgIG1zZyA9IE5vbmUKKworICAgICAgICAg ICAgICAgIGZvciBjb21wb25lbnQgaW4gcGF5bG9hZC5zcGxpdChiIlwwIik6CisgICAgICAgICAg ICAgICAgICAgIGlmIG5vdCBjb21wb25lbnQ6CisgICAgICAgICAgICAgICAgICAgICAgICBicmVh ayAgIyBlbmQgb2YgbWVzc2FnZQorCisgICAgICAgICAgICAgICAgICAgIGtleSwgdmFsID0gY29t cG9uZW50WzoxXSwgY29tcG9uZW50WzE6XQorICAgICAgICAgICAgICAgICAgICBpZiBrZXkgPT0g YiJTIjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCB2YWwgPT0gYiJGQVRBTCIKKyAg ICAgICAgICAgICAgICAgICAgZWxpZiBrZXkgPT0gYiJNIjoKKyAgICAgICAgICAgICAgICAgICAg ICAgIG1zZyA9IHZhbC5kZWNvZGUoKQorCisgICAgICAgICAgICAgICAgYXNzZXJ0IHJlLnNlYXJj aChleHBlY3RlZF9lcnJvciwgbXNnKSwgInNlcnZlciBlcnJvciBkaWQgbm90IG1hdGNoIgorCisg ICAgICAgICAgICAjIFRlcm1pbmF0ZS4KKyAgICAgICAgICAgIGNvbm4uc2VuZChzdHJ1Y3QucGFj aygiIWNJIiwgYiJYIiwgNCkpCi0tIAoyLjUyLjAKCg== --cf0f2795fe617e705419450ca58cceb69e2a378a306664a6a3b70c8c4a92--