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 1vwp5s-00FPLQ-1o for pgsql-hackers@arkaria.postgresql.org; Sun, 01 Mar 2026 22:16:58 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vwp5q-00EAdY-2k for pgsql-hackers@arkaria.postgresql.org; Sun, 01 Mar 2026 22:16:54 +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 1vwp5p-00EAdN-26 for pgsql-hackers@lists.postgresql.org; Sun, 01 Mar 2026 22:16:54 +0000 Received: from mail-ej1-x62b.google.com ([2a00:1450:4864:20::62b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vwp5e-00000001zft-1ofs for pgsql-hackers@postgresql.org; Sun, 01 Mar 2026 22:16:52 +0000 Received: by mail-ej1-x62b.google.com with SMTP id a640c23a62f3a-b936b85cc71so416117766b.2 for ; Sun, 01 Mar 2026 14:16:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jeltef.nl; s=google; t=1772403401; x=1773008201; 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=WQtpYf174RfoNWmkmepeIO5ZTiUxzwcLXFu81aj1Fx8=; b=jL8MM/QfbEC0FsXeYTn/ad5jgCZnyP9QyjKbrsCIX/Dxi8J19g3NaTK8a2NuhlMql7 IRiyzV9ZrRMPXU7F916I7hgLWYQBJy7yuIIiiY25MGQ/qPXVb19chFhjZYtY2Nlfx0ig z3vJV3MKnFWg0E5RPRnjLlu2yJuDANYBbEb4sqF/g0cDFIsQ6r20Tf2YPDdzSdbhQgzu o/D2sh7Zon2TaGAH9Uk60q0R+rf8+UroMVOA1ang1rnz5fL0LoaM1m1PMxe7szCch0aA 9zHIk9tVbH31CLyHXQBZZ606295GdRrPzfu5qARzucQM2GDJpcKd2IsrXzLZCZ8bnROv YZSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772403401; x=1773008201; 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=WQtpYf174RfoNWmkmepeIO5ZTiUxzwcLXFu81aj1Fx8=; b=HDWZ/l5LMOAT09X+xD2BclTOwkE0dOHG2lg+GCTcCAvKElI7jIGwq7OSYUCUzbK8Ww D6YDUn0uB+Clefmf600kc1V7H/FzcLQpnGlN409i4TmdN7UP+ftVoniJr86zpe+3n0VA cNw53m18xfssAHHeo5oYNC0ateIKgaxxBOc0uN1qDAV9/U4JiaiGIQhoFl6A1h55w1g6 Di4q1N+uwSDUByXyIwP/pej0YMIRBPMs04Ogp9Rb6fjf98JwV1jMU05OvzaXffx1OlCU eIR4iMXslEIPERzA4W5yZoO0HDN14Ywg/WU9zAn+K/eg1Yk8aq2XmhEBXfldw7nTMEWJ S2FA== X-Forwarded-Encrypted: i=1; AJvYcCVp95FXa04Hvci43sNC1OCsc1pHDOk6p46soeaSbEXzx5DSiQSO+BFzotohPd+Q/WJ/hBGYu8rT9OW5O1Mx@postgresql.org X-Gm-Message-State: AOJu0YygeE9cyPUUKWI/2hDE79lr+Ef9rQKFG0PVe5uSVus6E4Mlyd+L z9r1pmlY1Zj28IZAHFEjtBFcYELG4EMCOyVPLsSTJRh6aQ1XtE+H9V+AVzxVRX1dEN4= X-Gm-Gg: ATEYQzzeVx2r/1WvDGhdldRpEkaM/yvfL5dNBqC6yOcMOufv4vbWy048xsn+/F/YZzM birDwLgzb4Q0eO38rGUhvkPLxqFsu0tG0Hd8s1rRabkzz7VSsU89FXX5H7GaLP0eW786QtY7D3e gPwHUw3KpJfsk/h9qyXklrq2eX73kQOAdCyrXVisWmKwivFlhxVjqMRt3we1QO5nd8zIbXdovp8 BfcfrkCF98jmGep1dL4MH9VurK6FV5TkjKsvXwN6oVlO/3uwFdEDvVWiIxFrv1zpNA/S6V1yC77 Q9jEmwWht/KxS7dMHB3Wk1DGKQdMTrLXAlnmgxjZ77kgQ7A8OVpBc76k7V2lg+1RSpi/BtEODvA sv4+VGv7Lp+5MX6jPtJrEMh9RZSQ+KSXHASs8/rkGikOxg2NnDvgu5N94yi1SYYeDwg6nDbomzt x43cCoI57daAOXD3Yc7izhVnP4c5ZIyibldG+07Jr7D8q1LVnu X-Received: by 2002:a17:907:db16:b0:b93:657e:ac52 with SMTP id a640c23a62f3a-b937656291emr676021466b.54.1772403400399; Sun, 01 Mar 2026 14:16:40 -0800 (PST) Received: from localhost (145-53-221-196.fixed.kpn.net. [145.53.221.196]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b935ac74adasm396450966b.27.2026.03.01.14.16.38 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 01 Mar 2026 14:16:39 -0800 (PST) Content-Type: multipart/mixed; boundary=96edea3d04a35249385fadaf89258e13166ceb54185dbcc5d8ae1ac19276 Mime-Version: 1.0 Date: Sun, 01 Mar 2026 23:16:38 +0100 Message-Id: Cc: "Andres Freund" , "Jacob Champion" , "Robert Haas" , "Daniel Gustafsson" , "Tom Lane" , "Peter Eisentraut" , "Nazir Bilal Yavuz" Subject: Re: RFC: adding pytest as a supported test framework To: "Aleksander Alekseev" , "PostgreSQL Hackers" 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 --96edea3d04a35249385fadaf89258e13166ceb54185dbcc5d8ae1ac19276 Content-Type: multipart/alternative; boundary=5effba0db52807d58644938131ba3c3dc65fb60ba45315951a59a16f27c3 --5effba0db52807d58644938131ba3c3dc65fb60ba45315951a59a16f27c3 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed On Sun Jan 25, 2026 at 1:54 PM CET, Jelte Fennema-Nio wrote: >> I haven't looked at 0004 and 0005. > > Makes sense. I mostly kept those patches as part of the patchset to make > sure I did not break Jacob's usecase with all my changes to the test > suite. They were more meant as: "I did not touch these patches, nor are > they ready to merge, but it's possible to do stuff like this too". These patches caused CI to fail after the addition of the protocol grease (4966bd3ed95). I fixed the tests (by forcing usage of 3.2), but I attached them as nocfbot now, so that they can't be the reason that CI fails again. --5effba0db52807d58644938131ba3c3dc65fb60ba45315951a59a16f27c3-- --96edea3d04a35249385fadaf89258e13166ceb54185dbcc5d8ae1ac19276 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=nocfbot-v12-0004-WIP-pytest-Add-some-SSL-client-tests.patch Content-Type: text/x-patch; charset=utf-8; name=nocfbot-v12-0004-WIP-pytest-Add-some-SSL-client-tests.patch RnJvbSA5NTM1MTJhMTdhZWRlMTExZjJjOWE3N2RjOTJmZDFkYmMzMzY1MTQ1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogVHVlLCAxNiBEZWMgMjAyNSAwOTozMDo1NSArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjEyIDQvNV0gV0lQOiBweXRlc3Q6IEFkZCBzb21lIFNTTCBjbGllbnQgdGVzdHMK ClRoaXMgaXMgYSBzYW1wbGUgY2xpZW50LW9ubHkgdGVzdCBzdWl0ZS4gSXQgdGVzdHMgc29tZSBo YW5kc2hha2UKZmFpbHVyZXMgYWdhaW5zdCBhIG1vY2sgc2VydmVyLCBhcyB3ZWxsIGFzIGEgZnVs bCBTU0wgaGFuZHNoYWtlICsgZW1wdHkKcXVlcnkgKyByZXNwb25zZS4KCnB5Y2EvY3J5cHRvZ3Jh cGh5IGlzIGFkZGVkIGFzIGEgbmV3IHBhY2thZ2UgZGVwZW5kZW5jeS4gQ2VydGlmaWNhdGVzIGZv cgp0ZXN0aW5nIGFyZSBnZW5lcmF0ZWQgb24gdGhlIGZseS4KClRoZSBtb2NrIGRlc2lnbiBpcyB0 aHJlYWRlZDogdGhlIHNlcnZlciBzb2NrZXQgaXMgbGlzdGVuaW5nIG9uIGEKYmFja2dyb3VuZCB0 aHJlYWQsIGFuZCB0aGUgdGVzdCBwcm92aWRlcyB0aGUgc2VydmVyIGxvZ2ljIHZpYSBhCmNhbGxi YWNrLiBUaGVyZSBpcyBzb21lIGFkZGl0aW9uYWwgd29yayBzdGlsbCBuZWVkZWQgdG8gbWFrZSB0 aGlzCnByb2R1Y3Rpb24tcmVhZHk7IHNlZSB0aGUgbm90ZXMgZm9yIF9UQ1BTZXJ2ZXIuYmFja2dy b3VuZCgpLiAoQ3VycmVudGx5LAphbiBleGNlcHRpb24gaW4gdGhlIHdyb25nIHBsYWNlIGNvdWxk IHJlc3VsdCBpbiBhIGhhbmctdW50aWwtdGltZW91dApyYXRoZXIgdGhhbiBhbiBpbW1lZGlhdGUg ZmFpbHVyZS4pCgpUT0RPczoKLSBsb2NhbF9zZXJ2ZXIgYW5kIHRjcF9zZXJ2ZXJfY2xhc3MgYXJl IG5lYXJseSBpZGVudGljYWwgYW5kIHNob3VsZAogIHNoYXJlIGNvZGUuCi0gZml4IGV4Y2VwdGlv bi1yZWxhdGVkIHRpbWVvdXRzIGZvciAuYmFja2dyb3VuZCgpCi0gZmlndXJlIG91dCB0aGUgcHJv cGVyIHVzZSBvZiAic2Vzc2lvbiIgdnMgIm1vZHVsZSIgc2NvcGUKLSBlbnN1cmUgdGhhdCBwcS5s aWJwcSB1bndpbmRzICh0byBjbG9zZSBjb25uZWN0aW9ucykgYmVmb3JlIHRjcF9zZXJ2ZXI7CiAg c2VlIGNvbW1lbnQgaW4gdGVzdF9zZXJ2ZXJfd2l0aF9zc2xfZGlzYWJsZWQoKQotLS0KIC5jaXJy dXMudGFza3MueW1sICAgICAgICAgICAgICAgICB8ICAgMiArCiBweXByb2plY3QudG9tbCAgICAg ICAgICAgICAgICAgICAgfCAgIDggKwogc3JjL3Rlc3QvcHl0ZXN0L3B5dC90ZXN0X2xpYnBxLnB5 IHwgMTQxICsrKysrKysrKysrKysrKwogc3JjL3Rlc3Qvc3NsL01ha2VmaWxlICAgICAgICAgICAg IHwgICAyICsKIHNyYy90ZXN0L3NzbC9tZXNvbi5idWlsZCAgICAgICAgICB8ICAgNiArCiBzcmMv dGVzdC9zc2wvcHl0L2NvbmZ0ZXN0LnB5ICAgICAgfCAxMjggKysrKysrKysrKysrKysKIHNyYy90 ZXN0L3NzbC9weXQvdGVzdF9jbGllbnQucHkgICB8IDI4MCArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKIDcgZmlsZXMgY2hhbmdlZCwgNTY3IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvdGVzdC9zc2wvcHl0L2NvbmZ0ZXN0LnB5CiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL3Rlc3Qvc3NsL3B5dC90ZXN0X2NsaWVudC5weQoKZGlmZiAtLWdpdCBhLy5jaXJydXMudGFz a3MueW1sIGIvLmNpcnJ1cy50YXNrcy55bWwKaW5kZXggNDdlYzlkZWYyMGUuLmUzNDU5YzJlMDhi IDEwMDY0NAotLS0gYS8uY2lycnVzLnRhc2tzLnltbAorKysgYi8uY2lycnVzLnRhc2tzLnltbApA QCAtNjQ3LDYgKzY0Nyw3IEBAIHRhc2s6CiAgICAgQ0lSUlVTX1dPUktJTkdfRElSOiAke0hPTUV9 L3Bnc3FsLwogICAgIENDQUNIRV9ESVI6ICR7SE9NRX0vY2NhY2hlCiAgICAgTUFDUE9SVFNfQ0FD SEU6ICR7SE9NRX0vbWFjcG9ydHMtY2FjaGUKKyAgICBQWVRFU1RfREVCVUdfVEVNUFJPT1Q6IC90 bXAgICMgZGVmYXVsdCBpcyB0b28gbG9uZyBmb3IgVU5JWCBzb2NrZXRzIG9uIE1hYwogCiAgICAg TUVTT05fRkVBVFVSRVM6ID4tCiAgICAgICAtRGJvbmpvdXI9ZW5hYmxlZApAQCAtNjY3LDYgKzY2 OCw3IEBAIHRhc2s6CiAgICAgICBwNS4zNC1pby10dHkKICAgICAgIHA1LjM0LWlwYy1ydW4KICAg ICAgIHB5dGhvbjMxMgorICAgICAgcHkzMTItY3J5cHRvZ3JhcGh5CiAgICAgICBweTMxMi1wYWNr YWdpbmcKICAgICAgIHB5MzEyLXB5dGVzdAogICAgICAgdGNsCmRpZmYgLS1naXQgYS9weXByb2pl Y3QudG9tbCBiL3B5cHJvamVjdC50b21sCmluZGV4IDQ2MjhkMjI3NGUwLi4wMGM4YWU4ODU4MyAx MDA2NDQKLS0tIGEvcHlwcm9qZWN0LnRvbWwKKysrIGIvcHlwcm9qZWN0LnRvbWwKQEAgLTEyLDYg KzEyLDE0IEBAIGRlcGVuZGVuY2llcyA9IFsKICAgICAjIEFueSBvdGhlciBkZXBlbmRlbmNpZXMg YXJlIGVmZmVjdGl2ZWx5IG9wdGlvbmFsIChhZGRlZCBiZWxvdykuIFdlIGltcG9ydAogICAgICMg dGhlc2UgbGlicmFyaWVzIHVzaW5nIHB5dGVzdC5pbXBvcnRvcnNraXAoKS4gU28gdGVzdHMgd2ls bCBiZSBza2lwcGVkIGlmCiAgICAgIyB0aGV5IGFyZSBub3QgYXZhaWxhYmxlLgorCisgICAgIyBO b3RlcyBvbiB0aGUgY3J5cHRvZ3JhcGh5IHBhY2thZ2U6CisgICAgIyAtIDMuMy4yIGlzIHNoaXBw ZWQgb24gRGViaWFuIGJ1bGxzZXllLgorICAgICMgLSAzLjQueCBkcm9wcyBzdXBwb3J0IGZvciBQ eXRob24gMiwgbWFraW5nIGl0IGEgdmVyc2lvbiBvZiBub3RlIGZvciBvbGRlciBMVFMKKyAgICAj ICAgZGlzdHJvcy4KKyAgICAjIC0gMzUueCBzd2l0Y2hlZCB2ZXJzaW9uaW5nIHNjaGVtZXMgYW5k IG1vdmVkIHRvIFJ1c3QgcGFyc2luZy4KKyAgICAjIC0gNDAueCBpcyB0aGUgbGFzdCB2ZXJzaW9u IHN1cHBvcnRpbmcgUHl0aG9uIDMuNi4KKyAgICAiY3J5cHRvZ3JhcGh5ID49IDMuMy4yIiwKIF0K IAogW3Rvb2wucHl0ZXN0LmluaV9vcHRpb25zXQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcHl0ZXN0 L3B5dC90ZXN0X2xpYnBxLnB5IGIvc3JjL3Rlc3QvcHl0ZXN0L3B5dC90ZXN0X2xpYnBxLnB5Cmlu ZGV4IDFkMGQ5YmMzYjk0Li4wMWIyNzYxYTc2ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcHl0ZXN0 L3B5dC90ZXN0X2xpYnBxLnB5CisrKyBiL3NyYy90ZXN0L3B5dGVzdC9weXQvdGVzdF9saWJwcS5w eQpAQCAtMzMsMyArMzMsMTQ0IEBAIGRlZiB0ZXN0X211c3RfY29ubmVjdF9lcnJvcnMoY29ubmVj dCk6CiAgICAgIiIiVGVzdHMgdGhhdCBjb25uZWN0KCkgcmFpc2VzIExpYnBxRXJyb3IuIiIiCiAg ICAgd2l0aCBweXRlc3QucmFpc2VzKExpYnBxRXJyb3IsIG1hdGNoPSJpbnZhbGlkIGNvbm5lY3Rp b24gb3B0aW9uIik6CiAgICAgICAgIGNvbm5lY3Qoc29tZV91bmtub3duX2tleXdvcmQ9IndoYXRl dmVyIikKKworCitAcHl0ZXN0LmZpeHR1cmUKK2RlZiBsb2NhbF9zZXJ2ZXIodG1wX3BhdGgsIHJl bWFpbmluZ190aW1lb3V0KToKKyAgICAiIiIKKyAgICBPcGVucyB1cCBhIGxvY2FsIFVOSVggc29j a2V0IGZvciBtb2NraW5nIGEgUG9zdGdyZXMgc2VydmVyIG9uIGEgYmFja2dyb3VuZAorICAgIHRo cmVhZC4gU2VlIHRoZSBfU2VydmVyIEFQSSBmb3IgdXNhZ2UuCisKKyAgICBUaGlzIGZpeHR1cmUg cmVxdWlyZXMgQUZfVU5JWCBzdXBwb3J0OyBkZXBlbmRlbnQgdGVzdHMgd2lsbCBiZSBza2lwcGVk IG9uCisgICAgcGxhdGZvcm1zIHRoYXQgZG9uJ3QgcHJvdmlkZSBpdC4KKyAgICAiIiIKKworICAg IHRyeToKKyAgICAgICAgZnJvbSBzb2NrZXQgaW1wb3J0IEFGX1VOSVgKKyAgICBleGNlcHQgSW1w b3J0RXJyb3I6CisgICAgICAgIHB5dGVzdC5za2lwKCJBRl9VTklYIG5vdCBzdXBwb3J0ZWQgb24g dGhpcyBwbGF0Zm9ybSIpCisKKyAgICBjbGFzcyBfU2VydmVyKGNvbnRleHRsaWIuRXhpdFN0YWNr KToKKyAgICAgICAgIiIiCisgICAgICAgIEltcGxlbWVudGF0aW9uIGNsYXNzIGZvciBsb2NhbF9z ZXJ2ZXIuIFNlZSAuYmFja2dyb3VuZCgpIGZvciB0aGUgcHJpbWFyeQorICAgICAgICBlbnRyeSBw b2ludCBmb3IgdGVzdHMuIFBvc3RncmVzIGNsaWVudHMgbWF5IGNvbm5lY3QgdG8gdGhpcyBzZXJ2 ZXIgdmlhCisgICAgICAgIGxvY2FsX3NlcnZlci5ob3N0L2xvY2FsX3NlcnZlci5wb3J0LgorCisg ICAgICAgIF9TZXJ2ZXIgZGVyaXZlcyBmcm9tIGNvbnRleHRsaWIuRXhpdFN0YWNrIHRvIHByb3Zp ZGUgZWFzeSBjbGVhbnVwIG9mCisgICAgICAgIGFzc29jaWF0ZWQgcmVzb3VyY2VzOyBzZWUgdGhl IGRvY3VtZW50YXRpb24gZm9yIHRoYXQgY2xhc3MgZm9yIGEgZnVsbAorICAgICAgICBleHBsYW5h dGlvbi4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAg ICAgICAgc3VwZXIoKS5fX2luaXRfXygpCisKKyAgICAgICAgICAgIHNlbGYuaG9zdCA9IHRtcF9w YXRoCisgICAgICAgICAgICBzZWxmLnBvcnQgPSA1NDMyCisKKyAgICAgICAgICAgIHNlbGYuX3Ro cmVhZCA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYuX3RocmVhZF9leGMgPSBOb25lCisgICAgICAg ICAgICBzZWxmLl9saXN0ZW5lciA9IHNlbGYuZW50ZXJfY29udGV4dCgKKyAgICAgICAgICAgICAg ICBzb2NrZXQuc29ja2V0KEFGX1VOSVgsIHNvY2tldC5TT0NLX1NUUkVBTSksCisgICAgICAgICAg ICApCisKKyAgICAgICAgZGVmIGJpbmRfYW5kX2xpc3RlbihzZWxmKToKKyAgICAgICAgICAgICIi IgorICAgICAgICAgICAgRG9lcyB0aGUgYWN0dWFsIHdvcmsgb2YgYmluZGluZyB0aGUgVU5JWCBz b2NrZXQgdXNpbmcgdGhlIFBvc3RncmVzCisgICAgICAgICAgICBzZXJ2ZXIgY29udmVudGlvbnMg YW5kIGxpc3RlbmluZyBmb3IgY29ubmVjdGlvbnMuCisKKyAgICAgICAgICAgIFRoZSBsaXN0ZW4g YmFja2xvZyBpcyBjdXJyZW50bHkgaGFyZGNvZGVkIHRvIG9uZS4KKyAgICAgICAgICAgICIiIgor ICAgICAgICAgICAgc29ja2ZpbGUgPSBzZWxmLmhvc3QgLyAiLnMuUEdTUUwue30iLmZvcm1hdChz ZWxmLnBvcnQpCisKKyAgICAgICAgICAgICMgTG9jayBkb3duIHRoZSBwZXJtaXNzaW9ucyBvbiB0 aGUgbmV3IHNvY2tldC4KKyAgICAgICAgICAgIHByZXZfbWFzayA9IG9zLnVtYXNrKDBvMDc3KQor CisgICAgICAgICAgICAjIEJpbmQgKGNyZWF0aW5nIHRoZSBzb2NrZXQgZmlsZSksIGFuZCBpbW1l ZGlhdGVseSByZWdpc3RlciBpdCBmb3IKKyAgICAgICAgICAgICMgZGVsZXRpb24gZnJvbSBkaXNr IHdoZW4gdGhlIHN0YWNrIGlzIGNsZWFuZWQgdXAuCisgICAgICAgICAgICBzZWxmLl9saXN0ZW5l ci5iaW5kKGJ5dGVzKHNvY2tmaWxlKSkKKyAgICAgICAgICAgIHNlbGYuY2FsbGJhY2sob3MudW5s aW5rLCBzb2NrZmlsZSkKKworICAgICAgICAgICAgb3MudW1hc2socHJldl9tYXNrKQorCisgICAg ICAgICAgICBzZWxmLl9saXN0ZW5lci5saXN0ZW4oMSkKKworICAgICAgICBkZWYgYmFja2dyb3Vu ZChzZWxmLCBmbjogQ2FsbGFibGVbW3NvY2tldC5zb2NrZXRdLCBOb25lXSkgLT4gTm9uZToKKyAg ICAgICAgICAgICIiIgorICAgICAgICAgICAgQWNjZXB0cyBhIGNsaWVudCBjb25uZWN0aW9uIG9u IGEgYmFja2dyb3VuZCB0aHJlYWQgYW5kIHBhc3NlcyBpdCB0bworICAgICAgICAgICAgdGhlIHBy b3ZpZGVkIGNhbGxiYWNrLiBBbnkgZXhjZXB0aW9ucyByYWlzZWQgZnJvbSB0aGUgY2FsbGJhY2sg d2lsbAorICAgICAgICAgICAgYmUgcmUtcmFpc2VkIG9uIHRoZSBtYWluIHRocmVhZCBkdXJpbmcg Zml4dHVyZSB0ZWFyZG93bi4KKworICAgICAgICAgICAgQmxvY2tpbmcgb3BlcmF0aW9ucyBvbiB0 aGUgY29ubmVjdGVkIHNvY2tldCBkZWZhdWx0IHRvIHVzaW5nIHRoZQorICAgICAgICAgICAgcmVt YWluaW5nX3RpbWVvdXQoKSwgdGhvdWdoIHRoaXMgY2FuIGJlIGNoYW5nZWQgYnkgdGhlIHRlc3Qg dmlhIHRoZQorICAgICAgICAgICAgc29ja2V0J3MgLnNldHRpbWVvdXQoKS4KKyAgICAgICAgICAg ICIiIgorCisgICAgICAgICAgICBkZWYgX2JnKCk6CisgICAgICAgICAgICAgICAgdHJ5OgorICAg ICAgICAgICAgICAgICAgICBzZWxmLl9saXN0ZW5lci5zZXR0aW1lb3V0KHJlbWFpbmluZ190aW1l b3V0KCkpCisgICAgICAgICAgICAgICAgICAgIHNvY2ssIF8gPSBzZWxmLl9saXN0ZW5lci5hY2Nl cHQoKQorCisgICAgICAgICAgICAgICAgICAgIHdpdGggc29jazoKKyAgICAgICAgICAgICAgICAg ICAgICAgIHNvY2suc2V0dGltZW91dChyZW1haW5pbmdfdGltZW91dCgpKQorICAgICAgICAgICAg ICAgICAgICAgICAgZm4oc29jaykKKworICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24g YXMgZToKKyAgICAgICAgICAgICAgICAgICAgIyBTYXZlIHRoZSBleGNlcHRpb24gZm9yIHJlLXJh aXNpbmcgb24gdGhlIG1haW4gdGhyZWFkLgorICAgICAgICAgICAgICAgICAgICBzZWxmLl90aHJl YWRfZXhjID0gZQorCisgICAgICAgICAgICAjIFRPRE86IHJhdGhlciB0aGFuIHVzaW5nIGNhbGxi YWNrKCksIGNvbnNpZGVyIGV4cGxpY2l0bHkgc2lnbmFsaW5nCisgICAgICAgICAgICAjIHRoZSBm bigpIGltcGxlbWVudGF0aW9uIHRvIHN0b3AgZWFybHkgaWYgd2UgZ2V0IGFuIGV4Y2VwdGlvbi4K KyAgICAgICAgICAgICMgT3RoZXJ3aXNlIHdlJ2xsIGhhbmcgdW50aWwgdGhlIGVuZCBvZiB0aGUg dGltZW91dC4KKyAgICAgICAgICAgIHNlbGYuX3RocmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFy Z2V0PV9iZykKKyAgICAgICAgICAgIHNlbGYuY2FsbGJhY2soc2VsZi5fam9pbikKKworICAgICAg ICAgICAgc2VsZi5fdGhyZWFkLnN0YXJ0KCkKKworICAgICAgICBkZWYgX2pvaW4oc2VsZik6Cisg ICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIFdhaXRzIGZvciB0aGUgYmFja2dyb3VuZCB0aHJl YWQgdG8gZmluaXNoIGFuZCByYWlzZXMgYW55IHRocm93bgorICAgICAgICAgICAgZXhjZXB0aW9u LiBUaGlzIGlzIGNhbGxlZCBkdXJpbmcgZml4dHVyZSB0ZWFyZG93bi4KKyAgICAgICAgICAgICIi IgorICAgICAgICAgICAgIyBHaXZlIGEgbGl0dGxlIGJpdCBvZiB3aWdnbGUgcm9vbSBvbiB0aGUg am9pbiB0aW1lb3V0LCBzaW5jZSB3ZSdyZQorICAgICAgICAgICAgIyByYWNpbmcgYWdhaW5zdCB0 aGUgdGVzdCdzIG93biB1c2Ugb2YgcmVtYWluaW5nX3RpbWVvdXQoKS4gKEl0J3MKKyAgICAgICAg ICAgICMgcHJlZmVyYWJsZSB0byBsZXQgdGVzdHMgcmVwb3J0IHRpbWVvdXRzOyB0aGUgc3RhY2sg dHJhY2VzIHdpbGwKKyAgICAgICAgICAgICMgaGVscCB3aXRoIGRlYnVnZ2luZy4pCisgICAgICAg ICAgICBzZWxmLl90aHJlYWQuam9pbihyZW1haW5pbmdfdGltZW91dCgpICsgMSkKKyAgICAgICAg ICAgIGlmIHNlbGYuX3RocmVhZC5pc19hbGl2ZSgpOgorICAgICAgICAgICAgICAgIHJhaXNlIFRp bWVvdXRFcnJvcigiYmFja2dyb3VuZCB0aHJlYWQgaXMgc3RpbGwgcnVubmluZyBhZnRlciB0aW1l b3V0IikKKworICAgICAgICAgICAgaWYgc2VsZi5fdGhyZWFkX2V4YyBpcyBub3QgTm9uZToKKyAg ICAgICAgICAgICAgICByYWlzZSBzZWxmLl90aHJlYWRfZXhjCisKKyAgICB3aXRoIF9TZXJ2ZXIo KSBhcyBzOgorICAgICAgICBzLmJpbmRfYW5kX2xpc3RlbigpCisgICAgICAgIHlpZWxkIHMKKwor CitkZWYgdGVzdF9jb25uZWN0aW9uX2lzX2ZpbmlzaGVkX29uX2Vycm9yKGNvbm5lY3QsIGxvY2Fs X3NlcnZlcik6CisgICAgIiIiVGVzdHMgdGhhdCBQUWZpbmlzaCgpIGdldHMgY2FsbGVkIGF0IHRo ZSBlbmQgb2YgdGVzdGluZy4iIiIKKyAgICBleHBlY3RlZF9lcnJvciA9ICJzb21ldGhpbmcgaXMg d3JvbmciCisKKyAgICBkZWYgc2VydmVfZXJyb3Ioczogc29ja2V0LnNvY2tldCkgLT4gTm9uZToK KyAgICAgICAgcGt0bGVuID0gc3RydWN0LnVucGFjaygiIUkiLCBzLnJlY3YoNCkpWzBdCisKKyAg ICAgICAgIyBRdWljayBjaGVjayBmb3IgdGhlIHN0YXJ0dXAgcGFja2V0IHZlcnNpb24uCisgICAg ICAgIHZlcnNpb24gPSBzdHJ1Y3QudW5wYWNrKCIhSEgiLCBzLnJlY3YoNCkpCisgICAgICAgIGFz c2VydCB2ZXJzaW9uID09ICgzLCAyKQorCisgICAgICAgICMgRGlzY2FyZCB0aGUgcmVtYWluZGVy IG9mIHRoZSBzdGFydHVwIHBhY2tldCBhbmQgc2VuZCBhIHYyIGVycm9yLgorICAgICAgICBzLnJl Y3YocGt0bGVuIC0gOCkKKyAgICAgICAgcy5zZW5kKGIiRSIgKyBleHBlY3RlZF9lcnJvci5lbmNv ZGUoKSArIGIiXDAiKQorCisgICAgICAgICMgQW5kIG5vdyB0aGUgc29ja2V0IHNob3VsZCBiZSBj bG9zZWQuCisgICAgICAgIGFzc2VydCBub3Qgcy5yZWN2KDEpLCAiY2xpZW50IHNlbnQgdW5leHBl Y3RlZCBkYXRhIgorCisgICAgbG9jYWxfc2VydmVyLmJhY2tncm91bmQoc2VydmVfZXJyb3IpCisK KyAgICB3aXRoIHB5dGVzdC5yYWlzZXMoTGlicHFFcnJvciwgbWF0Y2g9ZXhwZWN0ZWRfZXJyb3Ip OgorICAgICAgICAjIEV4aXRpbmcgdGhpcyBjb250ZXh0IHNob3VsZCByZXN1bHQgaW4gUFFmaW5p c2goKS4KKyAgICAgICAgY29ubmVjdCgKKyAgICAgICAgICAgIGhvc3Q9bG9jYWxfc2VydmVyLmhv c3QsCisgICAgICAgICAgICBwb3J0PWxvY2FsX3NlcnZlci5wb3J0LAorICAgICAgICAgICAgbWF4 X3Byb3RvY29sX3ZlcnNpb249IjMuMiIsICAjIERvbid0IHVzZSBncmVhc2UKKyAgICAgICAgKQpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3NsL01ha2VmaWxlIGIvc3JjL3Rlc3Qvc3NsL01ha2VmaWxl CmluZGV4IGFhMDYyOTQ1ZmI5Li4yODc3MjlhZDlmYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Ns L01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L3NzbC9NYWtlZmlsZQpAQCAtMzAsNiArMzAsOCBAQCBj bGVhbiBkaXN0Y2xlYW46CiAjIERvZXNuJ3QgZGVwZW5kIG9uIHNzbGZpbGVzIGJlY2F1c2Ugd2Ug ZG9uJ3QgcmVidWlsZCB0aGVtIGJ5IGRlZmF1bHQKIGNoZWNrOgogCSQocHJvdmVfY2hlY2spCisJ IyBYWFggdGhlc2Ugc3VpdGVzIHNob3VsZCBydW4gaW5kZXBlbmRlbnRseSwgbm90IHNlcmlhbGx5 CisJJChweXRlc3RfY2hlY2spCiAKIGluc3RhbGxjaGVjazoKIAkkKHByb3ZlX2luc3RhbGxjaGVj aykKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3NzbC9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L3NzbC9t ZXNvbi5idWlsZAppbmRleCA5ZTViZGJiNjEzNi4uNmVjMjc0ZDgxNjUgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3NzbC9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9zc2wvbWVzb24uYnVpbGQKQEAg LTE1LDQgKzE1LDEwIEBAIHRlc3RzICs9IHsKICAgICAgICd0LzAwM19zc2xpbmZvLnBsJywKICAg ICBdLAogICB9LAorICAncHl0ZXN0JzogeworICAgICd0ZXN0cyc6IFsKKyAgICAgICdweXQvdGVz dF9jbGllbnQucHknLAorICAgICAgJ3B5dC90ZXN0X3NlcnZlci5weScsCisgICAgXSwKKyAgfSwK IH0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3NzbC9weXQvY29uZnRlc3QucHkgYi9zcmMvdGVzdC9z c2wvcHl0L2NvbmZ0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li44NzBmNzM4YWM0NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3NzbC9weXQvY29uZnRl c3QucHkKQEAgLTAsMCArMSwxMjggQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FM IEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCByZQor aW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCB0ZW1wZmlsZQorZnJvbSBjb2xsZWN0aW9ucyBpbXBv cnQgbmFtZWR0dXBsZQorCitpbXBvcnQgcHl0ZXN0CisKKworQHB5dGVzdC5maXh0dXJlKHNjb3Bl PSJzZXNzaW9uIikKK2RlZiBjcnlwdG9ncmFwaHkoKToKKyAgICByZXR1cm4gcHl0ZXN0LmltcG9y dG9yc2tpcCgiY3J5cHRvZ3JhcGh5IiwgIjMuMy4yIikKKworCitDZXJ0ID0gbmFtZWR0dXBsZSgi Q2VydCIsICJjZXJ0LCBjZXJ0cGF0aCwga2V5LCBrZXlwYXRoIikKKworCitAcHl0ZXN0LmZpeHR1 cmUoc2NvcGU9InNlc3Npb24iKQorZGVmIGNlcnRzKGNyeXB0b2dyYXBoeSwgdG1wX3BhdGhfZmFj dG9yeSk6CisgICAgIiIiCisgICAgQ2FjaGVzIGNvbW1vbmx5IHVzZWQgY2VydGlmaWNhdGVzIGF0 IHRoZSBzZXNzaW9uIGxldmVsLCBhbmQgcHJvdmlkZXMgYSB3YXkKKyAgICB0byBjcmVhdGUgbmV3 IG9uZXMuCisKKyAgICAtIGNlcnRzLmNhOiB0aGUgcm9vdCBDQSBjZXJ0aWZpY2F0ZQorCisgICAg LSBjZXJ0cy5zZXJ2ZXI6IHRoZSAic3RhbmRhcmQiIHNlcnZlciBjZXJ0ZmljYXRlLCBzaWduZWQg YnkgY2VydHMuY2EKKworICAgIC0gY2VydHMuc2VydmVyX2hvc3Q6IHRoZSBob3N0bmFtZSBvZiB0 aGUgY2VydHMuc2VydmVyIGNlcnRpZmljYXRlCisKKyAgICAtIGNlcnRzLm5ldygpOiBjcmVhdGVz IGEgY3VzdG9tIGNlcnRpZmljYXRlLCBzaWduZWQgYnkgY2VydHMuY2EKKyAgICAiIiIKKworICAg IGZyb20gY3J5cHRvZ3JhcGh5IGltcG9ydCB4NTA5CisgICAgZnJvbSBjcnlwdG9ncmFwaHkuaGF6 bWF0LnByaW1pdGl2ZXMgaW1wb3J0IGhhc2hlcywgc2VyaWFsaXphdGlvbgorICAgIGZyb20gY3J5 cHRvZ3JhcGh5Lmhhem1hdC5wcmltaXRpdmVzLmFzeW1tZXRyaWMgaW1wb3J0IHJzYQorICAgIGZy b20gY3J5cHRvZ3JhcGh5Lng1MDkub2lkIGltcG9ydCBOYW1lT0lECisKKyAgICB0bXBkaXIgPSB0 bXBfcGF0aF9mYWN0b3J5Lm1rdGVtcCgidGVzdC1jZXJ0cyIpCisKKyAgICBjbGFzcyBfQ2VydHM6 CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgIHNlbGYuY2EgPSBzZWxm Lm5ldygKKyAgICAgICAgICAgICAgICB4NTA5Lk5hbWUoCisgICAgICAgICAgICAgICAgICAgIFt4 NTA5Lk5hbWVBdHRyaWJ1dGUoTmFtZU9JRC5DT01NT05fTkFNRSwgIlBHIHB5dGVzdCBDQSIpXSwK KyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIGNhPVRydWUsCisgICAgICAgICAg ICApCisKKyAgICAgICAgICAgIHNlbGYuc2VydmVyX2hvc3QgPSAiZXhhbXBsZS5vcmciCisgICAg ICAgICAgICBzZWxmLnNlcnZlciA9IHNlbGYubmV3KAorICAgICAgICAgICAgICAgIHg1MDkuTmFt ZSgKKyAgICAgICAgICAgICAgICAgICAgW3g1MDkuTmFtZUF0dHJpYnV0ZShOYW1lT0lELkNPTU1P Tl9OQU1FLCBzZWxmLnNlcnZlcl9ob3N0KV0sCisgICAgICAgICAgICAgICAgKQorICAgICAgICAg ICAgKQorCisgICAgICAgIGRlZiBuZXcoc2VsZiwgc3ViamVjdDogeDUwOS5OYW1lLCAqLCBjYT1G YWxzZSkgLT4gQ2VydDoKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgQ3JlYXRlcyBhbmQg c2lnbnMgYSBuZXcgQ2VydCB3aXRoIHRoZSBnaXZlbiBzdWJqZWN0IG5hbWUuIElmIGNhIGlzCisg ICAgICAgICAgICBUcnVlLCB0aGUgY2VydGlmaWNhdGUgd2lsbCBiZSBzZWxmLXNpZ25lZDsgb3Ro ZXJ3aXNlIHRoZSBjZXJ0aWZpY2F0ZQorICAgICAgICAgICAgaXMgc2lnbmVkIGJ5IHNlbGYuY2Eu CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGtleSA9IHJzYS5nZW5lcmF0ZV9wcml2YXRl X2tleSgKKyAgICAgICAgICAgICAgICBwdWJsaWNfZXhwb25lbnQ9NjU1MzcsCisgICAgICAgICAg ICAgICAga2V5X3NpemU9MjA0OCwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgYnVpbGRl ciA9IHg1MDkuQ2VydGlmaWNhdGVCdWlsZGVyKCkKKyAgICAgICAgICAgIG5vdyA9IGRhdGV0aW1l LmRhdGV0aW1lLm5vdyhkYXRldGltZS50aW1lem9uZS51dGMpCisKKyAgICAgICAgICAgIGJ1aWxk ZXIgPSAoCisgICAgICAgICAgICAgICAgYnVpbGRlci5zdWJqZWN0X25hbWUoc3ViamVjdCkKKyAg ICAgICAgICAgICAgICAucHVibGljX2tleShrZXkucHVibGljX2tleSgpKQorICAgICAgICAgICAg ICAgIC5zZXJpYWxfbnVtYmVyKHg1MDkucmFuZG9tX3NlcmlhbF9udW1iZXIoKSkKKyAgICAgICAg ICAgICAgICAubm90X3ZhbGlkX2JlZm9yZShub3cpCisgICAgICAgICAgICAgICAgLm5vdF92YWxp ZF9hZnRlcihub3cgKyBkYXRldGltZS50aW1lZGVsdGEoaG91cnM9MSkpCisgICAgICAgICAgICAp CisKKyAgICAgICAgICAgIGlmIGNhOgorICAgICAgICAgICAgICAgIGJ1aWxkZXIgPSBidWlsZGVy Lmlzc3Vlcl9uYW1lKHN1YmplY3QpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg IGJ1aWxkZXIgPSBidWlsZGVyLmlzc3Vlcl9uYW1lKHNlbGYuY2EuY2VydC5zdWJqZWN0KQorCisg ICAgICAgICAgICBidWlsZGVyID0gYnVpbGRlci5hZGRfZXh0ZW5zaW9uKAorICAgICAgICAgICAg ICAgIHg1MDkuQmFzaWNDb25zdHJhaW50cyhjYT1jYSwgcGF0aF9sZW5ndGg9Tm9uZSksCisgICAg ICAgICAgICAgICAgY3JpdGljYWw9VHJ1ZSwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAg Y2VydCA9IGJ1aWxkZXIuc2lnbigKKyAgICAgICAgICAgICAgICBwcml2YXRlX2tleT1rZXkgaWYg Y2EgZWxzZSBzZWxmLmNhLmtleSwKKyAgICAgICAgICAgICAgICBhbGdvcml0aG09aGFzaGVzLlNI QTI1NigpLAorICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIER1bXAgdGhlIGNlcnRpZmlj YXRlIGFuZCBrZXkgdG8gZmlsZS4KKyAgICAgICAgICAgIGtleXBhdGggPSBzZWxmLl90b2ZpbGUo CisgICAgICAgICAgICAgICAga2V5LnByaXZhdGVfYnl0ZXMoCisgICAgICAgICAgICAgICAgICAg IHNlcmlhbGl6YXRpb24uRW5jb2RpbmcuUEVNLAorICAgICAgICAgICAgICAgICAgICBzZXJpYWxp emF0aW9uLlByaXZhdGVGb3JtYXQuUEtDUzgsCisgICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6 YXRpb24uTm9FbmNyeXB0aW9uKCksCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAg ICBzdWZmaXg9Ii5rZXkiLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgY2VydHBhdGggPSBz ZWxmLl90b2ZpbGUoCisgICAgICAgICAgICAgICAgY2VydC5wdWJsaWNfYnl0ZXMoc2VyaWFsaXph dGlvbi5FbmNvZGluZy5QRU0pLAorICAgICAgICAgICAgICAgIHN1ZmZpeD0iLWNhLmNydCIgaWYg Y2EgZWxzZSAiLmNydCIsCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgIHJldHVybiBDZXJ0 KAorICAgICAgICAgICAgICAgIGNlcnQ9Y2VydCwKKyAgICAgICAgICAgICAgICBjZXJ0cGF0aD1j ZXJ0cGF0aCwKKyAgICAgICAgICAgICAgICBrZXk9a2V5LAorICAgICAgICAgICAgICAgIGtleXBh dGg9a2V5cGF0aCwKKyAgICAgICAgICAgICkKKworICAgICAgICBkZWYgX3RvZmlsZShzZWxmLCBk YXRhOiBieXRlcywgKiwgc3VmZml4KSAtPiBzdHI6CisgICAgICAgICAgICAiIiIKKyAgICAgICAg ICAgIER1bXBzIGRhdGEgdG8gYSBmaWxlIG9uIGRpc2sgd2l0aCB0aGUgcmVxdWVzdGVkIHN1ZmZp eCBhbmQgcmV0dXJucworICAgICAgICAgICAgdGhlIHBhdGguIFRoZSBmaWxlIGlzIGxvY2F0ZWQg c29tZXdoZXJlIGluIHB5dGVzdCdzIHRlbXBvcmFyeQorICAgICAgICAgICAgZGlyZWN0b3J5IHJv b3QuCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGYgPSB0ZW1wZmlsZS5OYW1lZFRlbXBv cmFyeUZpbGUoc3VmZml4PXN1ZmZpeCwgZGlyPXRtcGRpciwgZGVsZXRlPUZhbHNlKQorICAgICAg ICAgICAgd2l0aCBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoZGF0YSkKKworICAgICAgICAg ICAgcmV0dXJuIGYubmFtZQorCisgICAgcmV0dXJuIF9DZXJ0cygpCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9zc2wvcHl0L3Rlc3RfY2xpZW50LnB5IGIvc3JjL3Rlc3Qvc3NsL3B5dC90ZXN0X2NsaWVu dC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNDExM2RkMjE3NTIK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zc2wvcHl0L3Rlc3RfY2xpZW50LnB5CkBAIC0w LDAgKzEsMjgwIEBACisjIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2 ZWxvcG1lbnQgR3JvdXAKKworaW1wb3J0IGNvbnRleHRsaWIKK2ltcG9ydCBjdHlwZXMKK2ltcG9y dCBzb2NrZXQKK2ltcG9ydCBzc2wKK2ltcG9ydCBzdHJ1Y3QKK2ltcG9ydCB0aHJlYWRpbmcKK2Zy b20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZQorCitpbXBvcnQgcHl0ZXN0CisKK2ltcG9ydCBweXBn Citmcm9tIGxpYnBxIGltcG9ydCBMaWJwcUVycm9yLCBFeGVjU3RhdHVzCisKKyMgVGhpcyBzdWl0 ZSBvcGVucyB1cCBsb2NhbCBUQ1AgcG9ydHMgYW5kIGlzIGhpZGRlbiBiZWhpbmQgUEdfVEVTVF9F WFRSQT1zc2wuCitweXRlc3RtYXJrID0gcHlwZy5yZXF1aXJlX3Rlc3RfZXh0cmFzKCJzc2wiKQor CisKK0BweXRlc3QuZml4dHVyZShzY29wZT0ic2Vzc2lvbiIsIGF1dG91c2U9VHJ1ZSkKK2RlZiBz a2lwX2lmX25vX3NzbF9zdXBwb3J0KGxpYnBxX2hhbmRsZSk6CisgICAgIiIiU2tpcHMgdGVzdHMg aWYgU1NMIHN1cHBvcnQgaXMgbm90IGNvbmZpZ3VyZWQuIiIiCisKKyAgICAjIERlY2xhcmUgUFFz c2xBdHRyaWJ1dGUoKS4KKyAgICBQUXNzbEF0dHJpYnV0ZSA9IGxpYnBxX2hhbmRsZS5QUXNzbEF0 dHJpYnV0ZQorICAgIFBRc3NsQXR0cmlidXRlLnJlc3R5cGUgPSBjdHlwZXMuY19jaGFyX3AKKyAg ICBQUXNzbEF0dHJpYnV0ZS5hcmd0eXBlcyA9IFtjdHlwZXMuY192b2lkX3AsIGN0eXBlcy5jX2No YXJfcF0KKworICAgIGlmIG5vdCBQUXNzbEF0dHJpYnV0ZShOb25lLCBiImxpYnJhcnkiKToKKyAg ICAgICAgcHl0ZXN0LnNraXAoInJlcXVpcmVzIFNTTCBzdXBwb3J0IHRvIGJlIGNvbmZpZ3VyZWQi KQorCisKKyMKKyMgVGVzdCBGaXh0dXJlcworIworCisKK0BweXRlc3QuZml4dHVyZQorZGVmIHRj cF9zZXJ2ZXJfY2xhc3MocmVtYWluaW5nX3RpbWVvdXQpOgorICAgICIiIgorICAgIE1ldGFmaXh0 dXJlIHRvIGNvbWJpbmUgcmVsYXRlZCBsb2dpYyBmb3IgdGNwX3NlcnZlciBhbmQgc3NsX3NlcnZl ci4KKworICAgIFRPRE86IGNvbWJpbmUgd2l0aCB0ZXN0X2xpYnBxLmxvY2FsX3NlcnZlcgorICAg ICIiIgorCisgICAgY2xhc3MgX1RDUFNlcnZlcihjb250ZXh0bGliLkV4aXRTdGFjayk6CisgICAg ICAgICIiIgorICAgICAgICBJbXBsZW1lbnRhdGlvbiBjbGFzcyBmb3IgdGNwX3NlcnZlci4gU2Vl IC5iYWNrZ3JvdW5kKCkgZm9yIHRoZSBwcmltYXJ5CisgICAgICAgIGVudHJ5IHBvaW50IGZvciB0 ZXN0cy4gUG9zdGdyZXMgY2xpZW50cyBtYXkgY29ubmVjdCB0byB0aGlzIHNlcnZlciB2aWEKKyAg ICAgICAgKip0Y3Bfc2VydmVyLmNvbm5pbmZvLgorCisgICAgICAgIF9UQ1BTZXJ2ZXIgZGVyaXZl cyBmcm9tIGNvbnRleHRsaWIuRXhpdFN0YWNrIHRvIHByb3ZpZGUgZWFzeSBjbGVhbnVwIG9mCisg ICAgICAgIGFzc29jaWF0ZWQgcmVzb3VyY2VzOyBzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRo YXQgY2xhc3MgZm9yIGEgZnVsbAorICAgICAgICBleHBsYW5hdGlvbi4KKyAgICAgICAgIiIiCisK KyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRf XygpCisKKyAgICAgICAgICAgIHNlbGYuX3RocmVhZCA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYu X3RocmVhZF9leGMgPSBOb25lCisgICAgICAgICAgICBzZWxmLl9saXN0ZW5lciA9IHNlbGYuZW50 ZXJfY29udGV4dCgKKyAgICAgICAgICAgICAgICBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVU LCBzb2NrZXQuU09DS19TVFJFQU0pLAorICAgICAgICAgICAgKQorCisgICAgICAgICAgICBzZWxm Ll9iaW5kX2FuZF9saXN0ZW4oKQorICAgICAgICAgICAgc29ja25hbWUgPSBzZWxmLl9saXN0ZW5l ci5nZXRzb2NrbmFtZSgpCisgICAgICAgICAgICBzZWxmLmNvbm5pbmZvID0gZGljdCgKKyAgICAg ICAgICAgICAgICBob3N0YWRkcj1zb2NrbmFtZVswXSwKKyAgICAgICAgICAgICAgICBwb3J0PXNv Y2tuYW1lWzFdLAorICAgICAgICAgICAgKQorCisgICAgICAgIGRlZiBfYmluZF9hbmRfbGlzdGVu KHNlbGYpOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBEb2VzIHRoZSBhY3R1YWwgd29y ayBvZiBiaW5kaW5nIHRoZSBzb2NrZXQgYW5kIGxpc3RlbmluZyBmb3IKKyAgICAgICAgICAgIGNv bm5lY3Rpb25zLgorCisgICAgICAgICAgICBUaGUgbGlzdGVuIGJhY2tsb2cgaXMgY3VycmVudGx5 IGhhcmRjb2RlZCB0byBvbmUuCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIHNlbGYuX2xp c3RlbmVyLmJpbmQoKCIxMjcuMC4wLjEiLCAwKSkKKyAgICAgICAgICAgIHNlbGYuX2xpc3RlbmVy Lmxpc3RlbigxKQorCisgICAgICAgIGRlZiBiYWNrZ3JvdW5kKHNlbGYsIGZuOiBDYWxsYWJsZVtb c29ja2V0LnNvY2tldF0sIE5vbmVdKSAtPiBOb25lOgorICAgICAgICAgICAgIiIiCisgICAgICAg ICAgICBBY2NlcHRzIGEgY2xpZW50IGNvbm5lY3Rpb24gb24gYSBiYWNrZ3JvdW5kIHRocmVhZCBh bmQgcGFzc2VzIGl0IHRvCisgICAgICAgICAgICB0aGUgcHJvdmlkZWQgY2FsbGJhY2suIEFueSBl eGNlcHRpb25zIHJhaXNlZCBmcm9tIHRoZSBjYWxsYmFjayB3aWxsCisgICAgICAgICAgICBiZSBy ZS1yYWlzZWQgb24gdGhlIG1haW4gdGhyZWFkIGR1cmluZyBmaXh0dXJlIHRlYXJkb3duLgorCisg ICAgICAgICAgICBCbG9ja2luZyBvcGVyYXRpb25zIG9uIHRoZSBjb25uZWN0ZWQgc29ja2V0IGRl ZmF1bHQgdG8gdXNpbmcgdGhlCisgICAgICAgICAgICByZW1haW5pbmdfdGltZW91dCgpLCB0aG91 Z2ggdGhpcyBjYW4gYmUgY2hhbmdlZCBieSB0aGUgdGVzdCB2aWEgdGhlCisgICAgICAgICAgICBz b2NrZXQncyAuc2V0dGltZW91dCgpLgorICAgICAgICAgICAgIiIiCisKKyAgICAgICAgICAgIGRl ZiBfYmcoKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYu X2xpc3RlbmVyLnNldHRpbWVvdXQocmVtYWluaW5nX3RpbWVvdXQoKSkKKyAgICAgICAgICAgICAg ICAgICAgc29jaywgXyA9IHNlbGYuX2xpc3RlbmVyLmFjY2VwdCgpCisKKyAgICAgICAgICAgICAg ICAgICAgd2l0aCBzb2NrOgorICAgICAgICAgICAgICAgICAgICAgICAgc29jay5zZXR0aW1lb3V0 KHJlbWFpbmluZ190aW1lb3V0KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBmbihzb2NrKQor CisgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAg ICAgICAjIFNhdmUgdGhlIGV4Y2VwdGlvbiBmb3IgcmUtcmFpc2luZyBvbiB0aGUgbWFpbiB0aHJl YWQuCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3RocmVhZF9leGMgPSBlCisKKyAgICAgICAg ICAgICMgVE9ETzogcmF0aGVyIHRoYW4gdXNpbmcgY2FsbGJhY2soKSwgY29uc2lkZXIgZXhwbGlj aXRseSBzaWduYWxpbmcKKyAgICAgICAgICAgICMgdGhlIGZuKCkgaW1wbGVtZW50YXRpb24gdG8g c3RvcCBlYXJseSBpZiB3ZSBnZXQgYW4gZXhjZXB0aW9uLgorICAgICAgICAgICAgIyBPdGhlcndp c2Ugd2UnbGwgaGFuZyB1bnRpbCB0aGUgZW5kIG9mIHRoZSB0aW1lb3V0LgorICAgICAgICAgICAg c2VsZi5fdGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9X2JnKQorICAgICAgICAgICAg c2VsZi5jYWxsYmFjayhzZWxmLl9qb2luKQorCisgICAgICAgICAgICBzZWxmLl90aHJlYWQuc3Rh cnQoKQorCisgICAgICAgIGRlZiBfam9pbihzZWxmKToKKyAgICAgICAgICAgICIiIgorICAgICAg ICAgICAgV2FpdHMgZm9yIHRoZSBiYWNrZ3JvdW5kIHRocmVhZCB0byBmaW5pc2ggYW5kIHJhaXNl cyBhbnkgdGhyb3duCisgICAgICAgICAgICBleGNlcHRpb24uIFRoaXMgaXMgY2FsbGVkIGR1cmlu ZyBmaXh0dXJlIHRlYXJkb3duLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAjIEdpdmUg YSBsaXR0bGUgYml0IG9mIHdpZ2dsZSByb29tIG9uIHRoZSBqb2luIHRpbWVvdXQsIHNpbmNlIHdl J3JlCisgICAgICAgICAgICAjIHJhY2luZyBhZ2FpbnN0IHRoZSB0ZXN0J3Mgb3duIHVzZSBvZiBy ZW1haW5pbmdfdGltZW91dCgpLiAoSXQncworICAgICAgICAgICAgIyBwcmVmZXJhYmxlIHRvIGxl dCB0ZXN0cyByZXBvcnQgdGltZW91dHM7IHRoZSBzdGFjayB0cmFjZXMgd2lsbAorICAgICAgICAg ICAgIyBoZWxwIHdpdGggZGVidWdnaW5nLikKKyAgICAgICAgICAgIHNlbGYuX3RocmVhZC5qb2lu KHJlbWFpbmluZ190aW1lb3V0KCkgKyAxKQorICAgICAgICAgICAgaWYgc2VsZi5fdGhyZWFkLmlz X2FsaXZlKCk6CisgICAgICAgICAgICAgICAgcmFpc2UgVGltZW91dEVycm9yKCJiYWNrZ3JvdW5k IHRocmVhZCBpcyBzdGlsbCBydW5uaW5nIGFmdGVyIHRpbWVvdXQiKQorCisgICAgICAgICAgICBp ZiBzZWxmLl90aHJlYWRfZXhjIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIHNl bGYuX3RocmVhZF9leGMKKworICAgIHJldHVybiBfVENQU2VydmVyCisKKworQHB5dGVzdC5maXh0 dXJlCitkZWYgdGNwX3NlcnZlcih0Y3Bfc2VydmVyX2NsYXNzKToKKyAgICAiIiIKKyAgICBPcGVu cyB1cCBhIGxvY2FsIFRDUCBzb2NrZXQgZm9yIG1vY2tpbmcgYSBQb3N0Z3JlcyBzZXJ2ZXIgb24g YSBiYWNrZ3JvdW5kCisgICAgdGhyZWFkLiBTZWUgdGhlIF9UQ1BTZXJ2ZXIgQVBJIGZvciB1c2Fn ZS4KKyAgICAiIiIKKyAgICB3aXRoIHRjcF9zZXJ2ZXJfY2xhc3MoKSBhcyBzOgorICAgICAgICB5 aWVsZCBzCisKKworQHB5dGVzdC5maXh0dXJlCitkZWYgc3NsX3NlcnZlcih0Y3Bfc2VydmVyX2Ns YXNzLCBjZXJ0cyk6CisgICAgIiIiCisgICAgTGlrZSB0Y3Bfc2VydmVyLCBidXQgd2l0aCBhbiBh ZGRpdGlvbmFsIC5iYWNrZ3JvdW5kX3NzbCgpIG1ldGhvZCB3aGljaCB3aWxsCisgICAgcGVyZm9y bSBhIFNTTFJlcXVlc3QgaGFuZHNoYWtlIG9uIHRoZSBzb2NrZXQgYmVmb3JlIGhhbmRpbmcgdGhl IGNvbm5lY3Rpb24KKyAgICB0byB0aGUgdGVzdCBjYWxsYmFjay4KKworICAgIFRoaXMgc2VydmVy IHVzZXMgY2VydHMuc2VydmVyIGFzIGl0cyBpZGVudGl0eS4KKyAgICAiIiIKKworICAgIGNsYXNz IF9TU0xTZXJ2ZXIodGNwX3NlcnZlcl9jbGFzcyk6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxm KToKKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18oKQorCisgICAgICAgICAgICBzZWxmLmNv bm5pbmZvWyJob3N0Il0gPSBjZXJ0cy5zZXJ2ZXJfaG9zdAorCisgICAgICAgICAgICBzZWxmLl9j dHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTX1NFUlZFUikKKyAgICAgICAgICAg IHNlbGYuX2N0eC5sb2FkX2NlcnRfY2hhaW4oY2VydHMuc2VydmVyLmNlcnRwYXRoLCBjZXJ0cy5z ZXJ2ZXIua2V5cGF0aCkKKworICAgICAgICBkZWYgYmFja2dyb3VuZF9zc2woc2VsZiwgZm46IENh bGxhYmxlW1tzc2wuU1NMU29ja2V0XSwgTm9uZV0pIC0+IE5vbmU6CisgICAgICAgICAgICAiIiIK KyAgICAgICAgICAgIEludm9rZXMgYSBzZXJ2ZXIgY2FsbGJhY2sgYXMgd2l0aCAuYmFja2dyb3Vu ZCgpLCBidXQgYW4gU1NMUmVxdWVzdAorICAgICAgICAgICAgaGFuZHNoYWtlIGlzIHBlcmZvcm1l ZCBmaXJzdCwgYW5kIHRoZSBzb2NrZXQgcHJvdmlkZWQgdG8gdGhlCisgICAgICAgICAgICBjYWxs YmFjayBoYXMgYmVlbiB3cmFwcGVkIGluIGFuIE9wZW5TU0wgbGF5ZXIuCisgICAgICAgICAgICAi IiIKKworICAgICAgICAgICAgZGVmIGhhbmRzaGFrZShzOiBzb2NrZXQuc29ja2V0KToKKyAgICAg ICAgICAgICAgICBwa3RsZW4gPSBzdHJ1Y3QudW5wYWNrKCIhSSIsIHMucmVjdig0KSlbMF0KKwor ICAgICAgICAgICAgICAgICMgTWFrZSBzdXJlIHdlIGdldCBhbiBTU0xSZXF1ZXN0LgorICAgICAg ICAgICAgICAgIHZlcnNpb24gPSBzdHJ1Y3QudW5wYWNrKCIhSEgiLCBzLnJlY3YoNCkpCisgICAg ICAgICAgICAgICAgYXNzZXJ0IHZlcnNpb24gPT0gKDEyMzQsIDU2NzkpCisgICAgICAgICAgICAg ICAgYXNzZXJ0IHBrdGxlbiA9PSA4CisKKyAgICAgICAgICAgICAgICAjIEFjY2VwdCB0aGUgU1NM UmVxdWVzdC4KKyAgICAgICAgICAgICAgICBzLnNlbmQoYiJTIikKKworICAgICAgICAgICAgICAg IHdpdGggc2VsZi5fY3R4LndyYXBfc29ja2V0KHMsIHNlcnZlcl9zaWRlPVRydWUpIGFzIHdyYXBw ZWQ6CisgICAgICAgICAgICAgICAgICAgIGZuKHdyYXBwZWQpCisKKyAgICAgICAgICAgIHNlbGYu YmFja2dyb3VuZChoYW5kc2hha2UpCisKKyAgICB3aXRoIF9TU0xTZXJ2ZXIoKSBhcyBzOgorICAg ICAgICB5aWVsZCBzCisKKworIworIyBUZXN0cworIworCisKK0BweXRlc3QubWFyay5wYXJhbWV0 cml6ZSgic3NsbW9kZSIsICgicmVxdWlyZSIsICJ2ZXJpZnktY2EiLCAidmVyaWZ5LWZ1bGwiKSkK K2RlZiB0ZXN0X3NlcnZlcl93aXRoX3NzbF9kaXNhYmxlZChjb25uZWN0LCB0Y3Bfc2VydmVyLCBj ZXJ0cywgc3NsbW9kZSk6CisgICAgIiIiCisgICAgTWFrZSBzdXJlIGNsaWVudCByZWZ1c2VzIHRv IHRhbGsgdG8gbm9uLVNTTCBzZXJ2ZXJzIHdpdGggc3RyaWN0ZXIKKyAgICBzc2xtb2Rlcy4KKyAg ICAiIiIKKworICAgIGRlZiByZWZ1c2Vfc3NsKHM6IHNvY2tldC5zb2NrZXQpOgorICAgICAgICBw a3RsZW4gPSBzdHJ1Y3QudW5wYWNrKCIhSSIsIHMucmVjdig0KSlbMF0KKworICAgICAgICAjIE1h a2Ugc3VyZSB3ZSBnZXQgYW4gU1NMUmVxdWVzdC4KKyAgICAgICAgdmVyc2lvbiA9IHN0cnVjdC51 bnBhY2soIiFISCIsIHMucmVjdig0KSkKKyAgICAgICAgYXNzZXJ0IHZlcnNpb24gPT0gKDEyMzQs IDU2NzkpCisgICAgICAgIGFzc2VydCBwa3RsZW4gPT0gOAorCisgICAgICAgICMgUmVmdXNlIHRo ZSBTU0xSZXF1ZXN0LgorICAgICAgICBzLnNlbmQoYiJOIikKKworICAgICAgICAjIFdhaXQgZm9y IHRoZSBjbGllbnQgdG8gY2xvc2UgdGhlIGNvbm5lY3Rpb24uCisgICAgICAgIGFzc2VydCBub3Qg cy5yZWN2KDEpLCAiY2xpZW50IHNlbnQgdW5leHBlY3RlZCBkYXRhIgorCisgICAgdGNwX3NlcnZl ci5iYWNrZ3JvdW5kKHJlZnVzZV9zc2wpCisKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMoTGlicHFF cnJvciwgbWF0Y2g9InNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IFNTTCIpOgorICAgICAgICBjb25u ZWN0KAorICAgICAgICAgICAgKip0Y3Bfc2VydmVyLmNvbm5pbmZvLAorICAgICAgICAgICAgc3Ns cm9vdGNlcnQ9Y2VydHMuY2EuY2VydHBhdGgsCisgICAgICAgICAgICBzc2xtb2RlPXNzbG1vZGUs CisgICAgICAgICAgICBtYXhfcHJvdG9jb2xfdmVyc2lvbj0iMy4yIiwgICMgRG9uJ3QgdXNlIGdy ZWFzZQorICAgICAgICApCisKKworZGVmIHRlc3RfdmVyaWZ5X2Z1bGxfY29ubmVjdGlvbihjb25u ZWN0LCBzc2xfc2VydmVyLCBjZXJ0cyk6CisgICAgIiIiQ29tcGxldGVzIGEgdmVyaWZ5LWZ1bGwg Y29ubmVjdGlvbiBhbmQgZW1wdHkgcXVlcnkuIiIiCisKKyAgICBkZWYgaGFuZGxlX2VtcHR5X3F1 ZXJ5KHM6IHNzbC5TU0xTb2NrZXQpOgorICAgICAgICBwa3RsZW4gPSBzdHJ1Y3QudW5wYWNrKCIh SSIsIHMucmVjdig0KSlbMF0KKworICAgICAgICAjIENoZWNrIHRoZSBzdGFydHVwIHBhY2tldCB2 ZXJzaW9uLCB0aGVuIGRpc2NhcmQgdGhlIHJlbWFpbmRlci4KKyAgICAgICAgdmVyc2lvbiA9IHN0 cnVjdC51bnBhY2soIiFISCIsIHMucmVjdig0KSkKKyAgICAgICAgYXNzZXJ0IHZlcnNpb24gPT0g KDMsIDIpCisgICAgICAgIHMucmVjdihwa3RsZW4gLSA4KQorCisgICAgICAgICMgU2VuZCB0aGUg cmVxdWlyZWQgbGl0YW55IG9mIHNlcnZlciBtZXNzYWdlcy4KKyAgICAgICAgcy5zZW5kKHN0cnVj dC5wYWNrKCIhY0lJIiwgYiJSIiwgOCwgMCkpICAjIEF1dGhlbnRpY2F0aW9uT0sKKworICAgICAg ICAjIFBhcmFtZXRlclN0YXR1czogY2xpZW50X2VuY29kaW5nCisgICAgICAgIGtleSA9IGIiY2xp ZW50X2VuY29kaW5nXDAiCisgICAgICAgIHZhbCA9IGIiVVRGLThcMCIKKyAgICAgICAgcy5zZW5k KHN0cnVjdC5wYWNrKCIhY0kiLCBiIlMiLCA0ICsgbGVuKGtleSkgKyBsZW4odmFsKSkgKyBrZXkg KyB2YWwpCisKKyAgICAgICAgIyBQYXJhbWV0ZXJTdGF0dXM6IERhdGVTdHlsZQorICAgICAgICBr ZXkgPSBiIkRhdGVTdHlsZVwwIgorICAgICAgICB2YWwgPSBiIklTTywgTURZXDAiCisgICAgICAg IHMuc2VuZChzdHJ1Y3QucGFjaygiIWNJIiwgYiJTIiwgNCArIGxlbihrZXkpICsgbGVuKHZhbCkp ICsga2V5ICsgdmFsKQorCisgICAgICAgIHMuc2VuZChzdHJ1Y3QucGFjaygiIWNJSUkiLCBiIksi LCAxMiwgMTIzNCwgMTIzNCkpICAjIEJhY2tlbmRLZXlEYXRhCisgICAgICAgIHMuc2VuZChzdHJ1 Y3QucGFjaygiIWNJYyIsIGIiWiIsIDUsIGIiSSIpKSAgIyBSZWFkeUZvclF1ZXJ5CisKKyAgICAg ICAgIyBFeHBlY3QgYW4gZW1wdHkgcXVlcnkuCisgICAgICAgIHBrdHR5cGUgPSBzLnJlY3YoMSkK KyAgICAgICAgYXNzZXJ0IHBrdHR5cGUgPT0gYiJRIgorICAgICAgICBwa3RsZW4gPSBzdHJ1Y3Qu dW5wYWNrKCIhSSIsIHMucmVjdig0KSlbMF0KKyAgICAgICAgYXNzZXJ0IHMucmVjdihwa3RsZW4g LSA0KSA9PSBiIlwwIgorCisgICAgICAgICMgU2VuZCBhbiBFbXB0eVF1ZXJ5UmVzcG9uc2UrUmVh ZHlGb3JRdWVyeS4KKyAgICAgICAgcy5zZW5kKHN0cnVjdC5wYWNrKCIhY0kiLCBiIkkiLCA0KSkK KyAgICAgICAgcy5zZW5kKHN0cnVjdC5wYWNrKCIhY0ljIiwgYiJaIiwgNSwgYiJJIikpCisKKyAg ICAgICAgIyBsaWJwcSBzaG91bGQgdGVybWluYXRlIGFuZCBjbG9zZSB0aGUgY29ubmVjdGlvbi4K KyAgICAgICAgYXNzZXJ0IHMucmVjdigxKSA9PSBiIlgiCisgICAgICAgIHBrdGxlbiA9IHN0cnVj dC51bnBhY2soIiFJIiwgcy5yZWN2KDQpKVswXQorICAgICAgICBhc3NlcnQgcGt0bGVuID09IDQK KworICAgICAgICBhc3NlcnQgbm90IHMucmVjdigxKSwgImNsaWVudCBzZW50IHVuZXhwZWN0ZWQg ZGF0YSIKKworICAgIHNzbF9zZXJ2ZXIuYmFja2dyb3VuZF9zc2woaGFuZGxlX2VtcHR5X3F1ZXJ5 KQorCisgICAgY29ubiA9IGNvbm5lY3QoCisgICAgICAgICoqc3NsX3NlcnZlci5jb25uaW5mbywK KyAgICAgICAgc3Nscm9vdGNlcnQ9Y2VydHMuY2EuY2VydHBhdGgsCisgICAgICAgIHNzbG1vZGU9 InZlcmlmeS1mdWxsIiwKKyAgICAgICAgbWF4X3Byb3RvY29sX3ZlcnNpb249IjMuMiIsICAjIERv bid0IHVzZSBncmVhc2UKKyAgICApCisgICAgd2l0aCBjb25uOgorICAgICAgICBhc3NlcnQgY29u bi5leGVjKCIiKS5zdGF0dXMoKSA9PSBFeGVjU3RhdHVzLlBHUkVTX0VNUFRZX1FVRVJZCi0tIAoy LjUzLjAKCg== --96edea3d04a35249385fadaf89258e13166ceb54185dbcc5d8ae1ac19276 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=nocfbot-v12-0005-WIP-pytest-Add-some-server-side-SSL-tests.patch Content-Type: text/x-patch; charset=utf-8; name=nocfbot-v12-0005-WIP-pytest-Add-some-server-side-SSL-tests.patch RnJvbSA4ODc0NjI3YmVlMDU5MGU0YTdkZTk2YmEzN2JjOGY2ZTY2ZmI2YzM5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogVHVlLCAxNiBEZWMgMjAyNSAwOTozMTo0NiArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjEyIDUvNV0gV0lQOiBweXRlc3Q6IEFkZCBzb21lIHNlcnZlci1zaWRlIFNTTCB0 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 aygiIWNJIiwgYiJYIiwgNCkpCi0tIAoyLjUzLjAKCg== --96edea3d04a35249385fadaf89258e13166ceb54185dbcc5d8ae1ac19276 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v12-0001-Add-support-for-pytest-test-suites.patch Content-Type: text/x-patch; charset=utf-8; name=v12-0001-Add-support-for-pytest-test-suites.patch RnJvbSBhMGUxYzI0YTIyMjE5MWJkMzgyZTUxN2I4YzVkNGI0ZjgxNjY0MDg1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogV2VkLCAxMyBBdWcgMjAyNSAxMDo1ODo1NiAtMDcwMApTdWJqZWN0 OiBbUEFUQ0ggdjEyIDEvNV0gQWRkIHN1cHBvcnQgZm9yIHB5dGVzdCB0ZXN0IHN1aXRlcwoKU3Bl Y2lmeSAtLWVuYWJsZS1weXRlc3QvLURweXRlc3Q9ZW5hYmxlZCBhdCBjb25maWd1cmUgdGltZS4g VGhpcwpjb250YWlucyBubyBQb3N0Z3JlcyB0ZXN0IGxvZ2ljIC0tIGl0IGlzIGp1c3QgYSAidmFu aWxsYSIgcHl0ZXN0CnNrZWxldG9uLgoKVGhpcyBjb250YWlucyBhIGN1c3RvbSBweXRlc3QgcGx1 Z2luIHRvIGdlbmVyYXRlIFRBUCBvdXRwdXQuIFRoaXMgcGx1Z2luCmlzIHVzZWQgYnkgdGhlIE1l c29uIG10ZXN0IHJ1bm5lciwgdG8gc2hvdyByZWxldmFudCBpbmZvcm1hdGlvbiBmb3IKZmFpbGVk IHRlc3RzLiBUaGUgcHl0ZXN0LXRhcCBwbHVnaW4gd291bGQgaGF2ZSBiZWVuIHByZWZlcmFibGUs IGJ1dCBpdCdzCm5vdyBpbiBtYWludGVuYW5jZSBtb2RlLCBhbmQgaXQgaGFzIHByb2JsZW1zIHdp dGggYWNjaWRlbnRhbGx5CnN1cHByZXNzaW5nIGltcG9ydGFudCBjb2xsZWN0aW9uIGZhaWx1cmVz LgoKQ28tYXV0aG9yZWQtYnk6IEplbHRlIEZlbm5lbWEtTmlvIDxwb3N0Z3Jlc0BqZWx0ZWYubmw+ Ci0tLQogLmNpcnJ1cy50YXNrcy55bWwgICAgICAgICAgIHwgIDExICstCiAuZ2l0aWdub3JlICAg ICAgICAgICAgICAgICAgfCAgIDMgKwogY29uZmlndXJlICAgICAgICAgICAgICAgICAgIHwgMTY2 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogY29uZmlndXJlLmFjICAgICAgICAgICAg ICAgIHwgIDI0ICsrKystCiBtZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgfCAxMDAgKysrKysr KysrKysrKysrKysrCiBtZXNvbl9vcHRpb25zLnR4dCAgICAgICAgICAgfCAgIDggKy0KIHB5cHJv amVjdC50b21sICAgICAgICAgICAgICB8ICAyMSArKysrCiBzcmMvTWFrZWZpbGUuZ2xvYmFsLmlu ICAgICAgfCAgMjkgKysrKysrCiBzcmMvbWFrZWZpbGVzL21lc29uLmJ1aWxkICAgfCAgIDIgKwog c3JjL3Rlc3QvTWFrZWZpbGUgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L21lc29uLmJ1aWxk ICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9weXRlc3QvTWFrZWZpbGUgICAgfCAgMjAgKysrKwog c3JjL3Rlc3QvcHl0ZXN0L1JFQURNRSAgICAgIHwgICAxICsKIHNyYy90ZXN0L3B5dGVzdC9tZXNv bi5idWlsZCB8ICAxNSArKysKIHNyYy90ZXN0L3B5dGVzdC9wZ3RhcC5weSAgICB8IDE5NyArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy90b29scy90ZXN0d3JhcCAgICAg ICAgICB8ICAgNiArLQogMTYgZmlsZXMgY2hhbmdlZCwgNTk3IGluc2VydGlvbnMoKyksIDggZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgcHlwcm9qZWN0LnRvbWwKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvdGVzdC9weXRlc3QvTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9weXRlc3QvUkVBRE1FCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcHl0ZXN0L21l c29uLmJ1aWxkCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcHl0ZXN0L3BndGFwLnB5Cgpk aWZmIC0tZ2l0IGEvLmNpcnJ1cy50YXNrcy55bWwgYi8uY2lycnVzLnRhc2tzLnltbAppbmRleCA0 ODQxYTIwNDI0OC4uNDdlYzlkZWYyMGUgMTAwNjQ0Ci0tLSBhLy5jaXJydXMudGFza3MueW1sCisr KyBiLy5jaXJydXMudGFza3MueW1sCkBAIC00NCw2ICs0NCw3IEBAIGVudjoKICAgICAtRGxkYXA9 ZW5hYmxlZAogICAgIC1Ec3NsPW9wZW5zc2wKICAgICAtRHRhcF90ZXN0cz1lbmFibGVkCisgICAg LURweXRlc3Q9ZW5hYmxlZAogICAgIC1EcGxwZXJsPWVuYWJsZWQKICAgICAtRHBscHl0aG9uPWVu YWJsZWQKICAgICAtRGRvY3M9ZW5hYmxlZApAQCAtMzE2LDYgKzMxNyw3IEBAIHRhc2s6CiAgICAg ICAgICAgLURsaWJjdXJsPWVuYWJsZWQKICAgICAgICAgICAtRG5scz1lbmFibGVkCiAgICAgICAg ICAgLURwYW09ZW5hYmxlZAorICAgICAgICAgIC1EUFlURVNUPXB5dGVzdC0zLjEyCiAKICAgICAg IHNldHVwX2FkZGl0aW9uYWxfcGFja2FnZXNfc2NyaXB0OiB8CiAgICAgICAgICNwa2dpbiAteSBp bnN0YWxsIC4uLgpAQCAtNTE5LDE0ICs1MjEsMTUgQEAgdGFzazoKICAgICAgICAgICBzZXQgLWUK ICAgICAgICAgICAuL2NvbmZpZ3VyZSBcCiAgICAgICAgICAgICAtLWVuYWJsZS1jYXNzZXJ0IC0t ZW5hYmxlLWluamVjdGlvbi1wb2ludHMgLS1lbmFibGUtZGVidWcgXAotICAgICAgICAgICAgLS1l bmFibGUtdGFwLXRlc3RzIC0tZW5hYmxlLW5scyBcCisgICAgICAgICAgICAtLWVuYWJsZS10YXAt dGVzdHMgLS1lbmFibGUtcHl0ZXN0IC0tZW5hYmxlLW5scyBcCiAgICAgICAgICAgICAtLXdpdGgt c2Vnc2l6ZS1ibG9ja3M9NiBcCiAgICAgICAgICAgICAtLXdpdGgtbGlibnVtYSBcCiAgICAgICAg ICAgICAtLXdpdGgtbGlidXJpbmcgXAogICAgICAgICAgICAgXAogICAgICAgICAgICAgJHtMSU5V WF9DT05GSUdVUkVfRkVBVFVSRVN9IFwKICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIENMQU5H PSJjY2FjaGUgY2xhbmciCisgICAgICAgICAgICBDTEFORz0iY2NhY2hlIGNsYW5nIiBcCisgICAg ICAgICAgICBQWVRFU1Q9ImVudiBMRF9QUkVMT0FEPS9saWIveDg2XzY0LWxpbnV4LWdudS9saWJh c2FuLnNvLjggcHl0ZXN0IgogICAgICAgICBFT0YKICAgICAgIGJ1aWxkX3NjcmlwdDogc3UgcG9z dGdyZXMgLWMgIm1ha2UgLXMgLWoke0JVSUxEX0pPQlN9IHdvcmxkLWJpbiIKICAgICAgIHVwbG9h ZF9jYWNoZXM6IGNjYWNoZQpAQCAtNjY0LDYgKzY2Nyw4IEBAIHRhc2s6CiAgICAgICBwNS4zNC1p by10dHkKICAgICAgIHA1LjM0LWlwYy1ydW4KICAgICAgIHB5dGhvbjMxMgorICAgICAgcHkzMTIt cGFja2FnaW5nCisgICAgICBweTMxMi1weXRlc3QKICAgICAgIHRjbAogICAgICAgenN0ZAogCkBA IC03MTMsNiArNzE4LDcgQEAgdGFzazoKICAgICBzaCBzcmMvdG9vbHMvY2kvY2lfbWFjcG9ydHNf cGFja2FnZXMuc2ggJE1BQ09TX1BBQ0tBR0VfTElTVAogICAgICMgc3lzdGVtIHB5dGhvbiBkb2Vz bid0IHByb3ZpZGUgaGVhZGVycwogICAgIHN1ZG8gL29wdC9sb2NhbC9iaW4vcG9ydCBzZWxlY3Qg cHl0aG9uMyBweXRob24zMTIKKyAgICBzdWRvIC9vcHQvbG9jYWwvYmluL3BvcnQgc2VsZWN0IHB5 dGVzdCBweXRlc3QzMTIKICAgICAjIE1ha2UgbWFjcG9ydHMgaW5zdGFsbCB2aXNpYmxlIGZvciBz dWJzZXF1ZW50IHN0ZXBzCiAgICAgZWNobyBQQVRIPS9vcHQvbG9jYWwvc2Jpbi86L29wdC9sb2Nh bC9iaW4vOiRQQVRIID4+ICRDSVJSVVNfRU5WCiAgIHVwbG9hZF9jYWNoZXM6IG1hY3BvcnRzCkBA IC03ODYsNiArNzkyLDcgQEAgdGFzazoKICAgICAgIC1EbGRhcD1lbmFibGVkCiAgICAgICAtRHNz bD1vcGVuc3NsCiAgICAgICAtRHRhcF90ZXN0cz1lbmFibGVkCisgICAgICAtRHB5dGVzdD1lbmFi bGVkCiAgICAgICAtRHBscGVybD1lbmFibGVkCiAgICAgICAtRHBscHl0aG9uPWVuYWJsZWQKIApk aWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUKaW5kZXggNGU5MTEzOTVmZTMuLmE1 NTBjZTYxOTRiIDEwMDY0NAotLS0gYS8uZ2l0aWdub3JlCisrKyBiLy5naXRpZ25vcmUKQEAgLTMx LDYgKzMxLDcgQEAgd2luMzJ2ZXIucmMKICouZXhlCiBsaWIqZGxsLmRlZgogbGliKi5wYworX19w eWNhY2hlX18vCiAKICMgTG9jYWwgZXhjbHVkZXMgaW4gcm9vdCBkaXJlY3RvcnkKIC9HTlVtYWtl ZmlsZQpAQCAtNDMsMyArNDQsNSBAQCBsaWIqLnBjCiAvUmVsZWFzZS8KIC90bXBfaW5zdGFsbC8K IC9wb3J0bG9jay8KKy8udmVudi8KKy91di5sb2NrCmRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9j b25maWd1cmUKaW5kZXggYTI4NWE2ZWMzZDcuLmI2ZTMyY2Y0NTQ5IDEwMDc1NQotLS0gYS9jb25m aWd1cmUKKysrIGIvY29uZmlndXJlCkBAIC02MzAsNiArNjMwLDggQEAgdnBhdGhfYnVpbGQKIFBH X1NZU1JPT1QKIFBHX1ZFUlNJT05fTlVNCiBMREZMQUdTX0VYX0JFCitVVgorUFlURVNUCiBQUk9W RQogREJUT0VQVUIKIEZPUApAQCAtNzczLDYgKzc3NSw3IEBAIENGTEFHUwogQ0MKIGVuYWJsZV9p bmplY3Rpb25fcG9pbnRzCiBQR19URVNUX0VYVFJBCitlbmFibGVfcHl0ZXN0CiBlbmFibGVfdGFw X3Rlc3RzCiBlbmFibGVfZHRyYWNlCiBEVFJBQ0VGTEFHUwpAQCAtODUxLDYgKzg1NCw3IEBAIGVu YWJsZV9wcm9maWxpbmcKIGVuYWJsZV9jb3ZlcmFnZQogZW5hYmxlX2R0cmFjZQogZW5hYmxlX3Rh cF90ZXN0cworZW5hYmxlX3B5dGVzdAogZW5hYmxlX2luamVjdGlvbl9wb2ludHMKIHdpdGhfYmxv Y2tzaXplCiB3aXRoX3NlZ3NpemUKQEAgLTE1NTEsNyArMTU1NSwxMCBAQCBPcHRpb25hbCBGZWF0 dXJlczoKICAgLS1lbmFibGUtcHJvZmlsaW5nICAgICAgYnVpbGQgd2l0aCBwcm9maWxpbmcgZW5h YmxlZAogICAtLWVuYWJsZS1jb3ZlcmFnZSAgICAgICBidWlsZCB3aXRoIGNvdmVyYWdlIHRlc3Rp bmcgaW5zdHJ1bWVudGF0aW9uCiAgIC0tZW5hYmxlLWR0cmFjZSAgICAgICAgIGJ1aWxkIHdpdGgg RFRyYWNlIHN1cHBvcnQKLSAgLS1lbmFibGUtdGFwLXRlc3RzICAgICAgZW5hYmxlIFRBUCB0ZXN0 cyAocmVxdWlyZXMgUGVybCBhbmQgSVBDOjpSdW4pCisgIC0tZW5hYmxlLXRhcC10ZXN0cyAgICAg IGVuYWJsZSAoUGVybC1iYXNlZCkgVEFQIHRlc3RzIChyZXF1aXJlcyBQZXJsIGFuZAorICAgICAg ICAgICAgICAgICAgICAgICAgICBJUEM6OlJ1bikKKyAgLS1lbmFibGUtcHl0ZXN0ICAgICAgICAg ZW5hYmxlIChQeXRob24tYmFzZWQpIHB5dGVzdCBzdWl0ZXMgKHJlcXVpcmVzCisgICAgICAgICAg ICAgICAgICAgICAgICAgIFB5dGhvbikKICAgLS1lbmFibGUtaW5qZWN0aW9uLXBvaW50cwogICAg ICAgICAgICAgICAgICAgICAgICAgICBlbmFibGUgaW5qZWN0aW9uIHBvaW50cyAoZm9yIHRlc3Rp bmcpCiAgIC0tZW5hYmxlLWRlcGVuZCAgICAgICAgIHR1cm4gb24gYXV0b21hdGljIGRlcGVuZGVu Y3kgdHJhY2tpbmcKQEAgLTM2MzQsNyArMzY0MSw3IEBAIGZpCiAKIAogIwotIyBUQVAgdGVzdHMK KyMgVGVzdCBmcmFtZXdvcmtzCiAjCiAKIApAQCAtMzY2Miw2ICszNjY5LDMyIEBAIGZpCiAKIAog CisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1weXRlc3Qgd2FzIGdpdmVuLgoraWYgdGVzdCAi JHtlbmFibGVfcHl0ZXN0K3NldH0iID0gc2V0OyB0aGVuIDoKKyAgZW5hYmxldmFsPSRlbmFibGVf cHl0ZXN0OworICBjYXNlICRlbmFibGV2YWwgaW4KKyAgICB5ZXMpCisgICAgICA6CisgICAgICA7 OworICAgIG5vKQorICAgICAgOgorICAgICAgOzsKKyAgICAqKQorICAgICAgYXNfZm5fZXJyb3Ig JD8gIm5vIGFyZ3VtZW50IGV4cGVjdGVkIGZvciAtLWVuYWJsZS1weXRlc3Qgb3B0aW9uIiAiJExJ TkVOTyIgNQorICAgICAgOzsKKyAgZXNhYworCitlbHNlCisgIGVuYWJsZV9weXRlc3Q9bm8KKwor ZmkKKworCisKKworCisKICMKICMgSW5qZWN0aW9uIHBvaW50cwogIwpAQCAtMTkyNjEsNiArMTky OTQsMTM1IEBAICRhc19lY2hvICIkbW9kdWxlc3RkZXJyIiA+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 bmRleCA0NzZhNzZjNzk5MS4uZGJmOWJkOThmOTUgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYwor KysgYi9jb25maWd1cmUuYWMKQEAgLTIyNiwxMSArMjI2LDE2IEBAIEFDX1NVQlNUKERUUkFDRUZM QUdTKV0pCiBBQ19TVUJTVChlbmFibGVfZHRyYWNlKQogCiAjCi0jIFRBUCB0ZXN0cworIyBUZXN0 IGZyYW1ld29ya3MKICMKIFBHQUNfQVJHX0JPT0woZW5hYmxlLCB0YXAtdGVzdHMsIG5vLAotICAg ICAgICAgICAgICBbZW5hYmxlIFRBUCB0ZXN0cyAocmVxdWlyZXMgUGVybCBhbmQgSVBDOjpSdW4p XSkKKyAgICAgICAgICAgICAgW2VuYWJsZSAoUGVybC1iYXNlZCkgVEFQIHRlc3RzIChyZXF1aXJl cyBQZXJsIGFuZCBJUEM6OlJ1bildKQogQUNfU1VCU1QoZW5hYmxlX3RhcF90ZXN0cykKKworUEdB Q19BUkdfQk9PTChlbmFibGUsIHB5dGVzdCwgbm8sCisgICAgICAgICAgICAgIFtlbmFibGUgKFB5 dGhvbi1iYXNlZCkgcHl0ZXN0IHN1aXRlcyAocmVxdWlyZXMgUHl0aG9uKV0pCitBQ19TVUJTVChl bmFibGVfcHl0ZXN0KQorCiBBQ19BUkdfVkFSKFBHX1RFU1RfRVhUUkEsCiAgICAgICAgICAgIFtl bmFibGUgc2VsZWN0ZWQgZXh0cmEgdGVzdHMgKG92ZXJyaWRkZW4gYXQgcnVudGltZSBieSBQR19U RVNUX0VYVFJBIGVudmlyb25tZW50IHZhcmlhYmxlKV0pCiAKQEAgLTI0NTcsNiArMjQ2MiwyMSBA QCBpZiB0ZXN0ICIkZW5hYmxlX3RhcF90ZXN0cyIgPSB5ZXM7IHRoZW4KICAgZmkKIGZpCiAKK2lm IHRlc3QgIiRlbmFibGVfcHl0ZXN0IiA9IHllczsgdGhlbgorICBQR0FDX1BBVEhfUFJPR1MoUFlU RVNULCBbcHl0ZXN0IHB5LnRlc3RdKQorICBpZiB0ZXN0IC16ICIkUFlURVNUIjsgdGhlbgorICAg ICMgVHJ5IHB5dGhvbiAtbSBweXRlc3QgYXMgYSBmYWxsYmFjaworICAgIEFDX01TR19DSEVDS0lO Ryhbd2hldGhlciBweXRob24gLW0gcHl0ZXN0IHdvcmtzXSkKKyAgICBpZiAiJFBZVEhPTiIgLW0g cHl0ZXN0IC0tdmVyc2lvbiA+JkFTX01FU1NBR0VfTE9HX0ZEIDI+JjE7IHRoZW4KKyAgICAgIEFD X01TR19SRVNVTFQoW3llc10pCisgICAgICBQWVRFU1Q9IiRQWVRIT04gLW0gcHl0ZXN0IgorICAg IGVsc2UKKyAgICAgIEFDX01TR19SRVNVTFQoW25vXSkKKyAgICAgIEFDX01TR19FUlJPUihbcHl0 ZXN0IG5vdCBmb3VuZF0pCisgICAgZmkKKyAgZmkKK2ZpCisKICMgSWYgY29tcGlsZXIgd2lsbCB0 YWtlIC1XbCwtLWFzLW5lZWRlZCAob3IgdmFyaW91cyBwbGF0Zm9ybS1zcGVjaWZpYwogIyBzcGVs bGluZ3MgdGhlcmVvZikgdGhlbiBhZGQgdGhhdCB0byBMREZMQUdTLiAgVGhpcyBpcyBtdWNoIGVh c2llciB0aGFuCiAjIHRyeWluZyB0byBmaWx0ZXIgTElCUyB0byB0aGUgbWluaW11bSBmb3IgZWFj aCBleGVjdXRhYmxlLgpkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAppbmRl eCA1MTIyNzA2NDc3ZC4uYmE1MzQ4M2Y1NTEgMTAwNjQ0Ci0tLSBhL21lc29uLmJ1aWxkCisrKyBi L21lc29uLmJ1aWxkCkBAIC0xODI0LDYgKzE4MjQsNDcgQEAgZW5kaWYKIAogCiAKKyMjIyMjIyMj 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 IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtMzkyMyw2ICszOTY0 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 c3QgaW4gQDFAJy5mb3JtYXQoa2luZCwgdGVzdF9kaXJbJ3NkJ10pKQogICAgIGVuZGlmCkBAIC00 MDk2LDYgKzQxOTUsNyBAQCBzdW1tYXJ5KAogICAgICdiaXNvbic6ICdAMEAgQDFAJy5mb3JtYXQo 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 Lmdsb2JhbC5pbgppbmRleCA5NDdhMmQ3OWUyOS4uNTcyYzI0YzNmNTUgMTAwNjQ0Ci0tLSBhL3Ny Yy9NYWtlZmlsZS5nbG9iYWwuaW4KKysrIGIvc3JjL01ha2VmaWxlLmdsb2JhbC5pbgpAQCAtMjEx LDYgKzIxMSw3IEBAIGVuYWJsZV9kdHJhY2UJPSBAZW5hYmxlX2R0cmFjZUAKIGVuYWJsZV9jb3Zl cmFnZQk9IEBlbmFibGVfY292ZXJhZ2VACiBlbmFibGVfaW5qZWN0aW9uX3BvaW50cyA9IEBlbmFi bGVfaW5qZWN0aW9uX3BvaW50c0AKIGVuYWJsZV90YXBfdGVzdHMJPSBAZW5hYmxlX3RhcF90ZXN0 c0AKK2VuYWJsZV9weXRlc3QJPSBAZW5hYmxlX3B5dGVzdEAKIAogcHl0aG9uX2luY2x1ZGVzcGVj CT0gQHB5dGhvbl9pbmNsdWRlc3BlY0AKIHB5dGhvbl9saWJkaXIJCT0gQHB5dGhvbl9saWJkaXJA CkBAIC0zNTYsNiArMzU3LDcgQEAgTVNHRk1UICA9IEBNU0dGTVRACiBNU0dGTVRfRkxBR1MgPSBA TVNHRk1UX0ZMQUdTQAogTVNHTUVSR0UgPSBATVNHTUVSR0VACiBPUEVOU1NMCT0gQE9QRU5TU0xA CitQWVRFU1QJPSBAUFlURVNUQAogUFlUSE9OCT0gQFBZVEhPTkAKIFRBUgk9IEBUQVJACiBYR0VU VEVYVCA9IEBYR0VUVEVYVEAKQEAgLTUxMCw2ICs1MTIsMzMgQEAgcHJvdmVfaW5zdGFsbGNoZWNr ID0gQGVjaG8gIlRBUCB0ZXN0cyBub3QgZW5hYmxlZC4gVHJ5IGNvbmZpZ3VyaW5nIHdpdGggLS1l bmFibGUKIHByb3ZlX2NoZWNrID0gJChwcm92ZV9pbnN0YWxsY2hlY2spCiBlbmRpZgogCitpZmVx ICgkKGVuYWJsZV9weXRlc3QpLHllcykKKworcHl0ZXN0X2luc3RhbGxjaGVjayA9IEBlY2hvICJJ bnN0YWxsY2hlY2sgaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgZm9yIHB5dGVzdC4iCisKKyMg V2UgYWxzbyBjb25maWd1cmUgdGhlIHNhbWUgUFlUSE9OUEFUSCBpbiB0aGUgcHl0ZXN0IHNldHRp bmdzIGluCisjIHB5cHJvamVjdC50b21sLCBidXQgcHl0ZXN0IHZlcnNpb25zIGJlbG93IDguNCBv bmx5IGFjdHVhbGx5IHVzZSB0aGF0IHZhbHVlCisjIGFmdGVyIHBsdWdpbiBsb2FkaW5nLiBTbyB3 ZSBuZWVkIHRvIGNvbmZpZ3VyZSBpdCBoZXJlIHRvby4gVGhpcyB3b24ndCBoZWxwCisjIHBlb3Bs ZSBtYW51YWxseSBydW5uaW5nIHB5dGVzdCBvdXRzaWRlIG9mIG1lc29uL21ha2UsIGJ1dCB3ZSBl eHBlY3QgdGhvc2UgdG8KKyMgdXNlIGEgcmVjZW50IGVub3VnaCB2ZXJzaW9uIG9mIHB5dGVzdCBh bnl3YXkgKGFuZCBpZiBub3QgdGhleSBjYW4gbWFudWFsbHkKKyMgY29uZmlndXJlIFBZVEhPTlBB VEggdG9vKS4KK2RlZmluZSBweXRlc3RfY2hlY2sKK2VjaG8gIiMgKysrIHB5dGVzdCBjaGVjayBp biAkKHN1YmRpcikgKysrIiAmJiBcCitybSAtcmYgJyQoQ1VSRElSKScvdG1wX2NoZWNrICYmIFwK KyQoTUtESVJfUCkgJyQoQ1VSRElSKScvdG1wX2NoZWNrICYmIFwKK2NkICQoc3JjZGlyKSAmJiBc CisgICBURVNUTE9HRElSPSckKENVUkRJUikvdG1wX2NoZWNrL2xvZycgXAorICAgVEVTVERBVEFE SVI9JyQoQ1VSRElSKS90bXBfY2hlY2snIFwKKyAgIFBZVEhPTlBBVEg9JyQoYWJzX3RvcF9zcmNk aXIpL3NyYy90ZXN0L3B5dGVzdDokJFBZVEhPTlBBVEgnIFwKKyAgICQod2l0aF90ZW1wX2luc3Rh bGwpIFwKKyAgICQoUFlURVNUKSAtYyAnJChhYnNfdG9wX3NyY2RpcikvcHlwcm9qZWN0LnRvbWwn IC0tdmVyYm9zZSAtcmEgLi9weXQvCitlbmRlZgorCitlbHNlCitweXRlc3RfaW5zdGFsbGNoZWNr ID0gQGVjaG8gInB5dGVzdCBpcyBub3QgZW5hYmxlZC4gVHJ5IGNvbmZpZ3VyaW5nIHdpdGggLS1l bmFibGUtcHl0ZXN0IgorcHl0ZXN0X2NoZWNrID0gJChweXRlc3RfaW5zdGFsbGNoZWNrKQorZW5k aWYKKwogIyBJbnN0YWxsYXRpb24uCiAKIGluc3RhbGxfYmluID0gQGluc3RhbGxfYmluQApkaWZm IC0tZ2l0IGEvc3JjL21ha2VmaWxlcy9tZXNvbi5idWlsZCBiL3NyYy9tYWtlZmlsZXMvbWVzb24u YnVpbGQKaW5kZXggNzdmN2E3MjljYzIuLjY4MTUxNzhiMzVlIDEwMDY0NAotLS0gYS9zcmMvbWFr 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 NDQKaW5kZXggMDAwMDAwMDAwMDAuLjJhZTE2YjYyNGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rlc3QvcHl0ZXN0L3BndGFwLnB5CkBAIC0wLDAgKzEsMTk3IEBACisjIENvcHlyaWdodCAoYykg MjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworaW1wb3J0IG9zCitp bXBvcnQgc3lzCisKK2ltcG9ydCBweXRlc3QKKworIworIyBIZWxwZXJzCisjCisKKworY2xhc3Mg VEFQOgorICAgICIiIgorICAgIEEgYmFzaWMgQVBJIGZvciByZXBvcnRpbmcgdmlhIHRoZSBUQVAg MTIgcHJvdG9jb2wuCisKKyAgICBodHRwczovL3Rlc3Rhbnl0aGluZy5vcmcvdGFwLXNwZWNpZmlj YXRpb24uaHRtbAorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBz ZWxmLmNvdW50ID0gMAorCisgICAgZGVmIGV4cGVjdChzZWxmLCBudW06IGludCk6CisgICAgICAg IHNlbGYucHJpbnQoZiIxLi57bnVtfSIpCisKKyAgICBkZWYgcHJpbnQoc2VsZiwgKmFyZ3MpOgor ICAgICAgICBwcmludCgqYXJncywgZmlsZT1zeXMuX19zdGRvdXRfXykKKworICAgIGRlZiBvayhz ZWxmLCBuYW1lOiBzdHIpOgorICAgICAgICBzZWxmLmNvdW50ICs9IDEKKyAgICAgICAgc2VsZi5w cmludCgib2siLCBzZWxmLmNvdW50LCAiLSIsIG5hbWUpCisKKyAgICBkZWYgc2tpcChzZWxmLCBu YW1lOiBzdHIsIHJlYXNvbjogc3RyKToKKyAgICAgICAgc2VsZi5jb3VudCArPSAxCisgICAgICAg IHNlbGYucHJpbnQoIm9rIiwgc2VsZi5jb3VudCwgIi0iLCBuYW1lLCAiIyBza2lwIiwgcmVhc29u KQorCisgICAgZGVmIGZhaWwoc2VsZiwgbmFtZTogc3RyLCBkZXRhaWxzOiBzdHIpOgorICAgICAg ICBzZWxmLmNvdW50ICs9IDEKKyAgICAgICAgc2VsZi5wcmludCgibm90IG9rIiwgc2VsZi5jb3Vu dCwgIi0iLCBuYW1lKQorCisgICAgICAgICMgbXRlc3QgaGFzIHNvbWUgb2RkIGJlaGF2aW9yIGFy b3VuZCBUQVAgdGVzdHMgd2hlcmUgaXQgd29uJ3QgcHJpbnQKKyAgICAgICAgIyBkaWFnbm9zdGlj cyBvbiBmYWlsdXJlIGlmIHRoZXkncmUgcGFydCBvZiB0aGUgc3Rkb3V0IHN0cmVhbSwgc28gd2UK KyAgICAgICAgIyBtaWdodCBhcyB3ZWxsIGp1c3QgZHVtcCB0aGUgZGV0YWlscyBkaXJlY3RseSB0 byBzdGRlcnIgaW5zdGVhZC4KKyAgICAgICAgcHJpbnQoZGV0YWlscywgZmlsZT1zeXMuX19zdGRl cnJfXykKKworCit0YXAgPSBUQVAoKQorCisKK2NsYXNzIFRlc3ROb3RlczoKKyAgICAiIiIKKyAg ICBBbm5vdGF0aW9ucyBmb3IgYSBzaW5nbGUgdGVzdC4gVGhlIGV4aXN0aW5nIHB5dGVzdCBob29r cyBrZWVwIGludGVyZXN0aW5nCisgICAgaW5mb3JtYXRpb24gc29tZXdoYXQgc2VwYXJhdGVkIGFj cm9zcyB0aGUgZGlmZmVyZW50IHN0YWdlcworICAgIChzZXR1cC90ZXN0L3RlYXJkb3duKSwgc28g dGhpcyBjbGFzcyBpcyB1c2VkIHRvIGNvcnJlbGF0ZSB0aGVtLgorICAgICIiIgorCisgICAgc2tp cHBlZCA9IEZhbHNlCisgICAgc2tpcF9yZWFzb24gPSBOb25lCisKKyAgICBmYWlsZWQgPSBGYWxz ZQorICAgIGRldGFpbHMgPSAiIgorCisKKyMgUmVnaXN0ZXIgYSBjdXN0b20ga2V5IGluIHRoZSBz dGFzaCBkaWN0aW9uYXJ5IGZvciBrZWVwaW5nIG91ciBUZXN0Tm90ZXMuCitub3Rlc19rZXkgPSBw eXRlc3QuU3Rhc2hLZXlbVGVzdE5vdGVzXSgpCisKKworIworIyBIb29rIEltcGxlbWVudGF0aW9u cworIworCisKK0BweXRlc3QuaG9va2ltcGwodHJ5Zmlyc3Q9VHJ1ZSkKK2RlZiBweXRlc3RfY29u ZmlndXJlKGNvbmZpZyk6CisgICAgIiIiCisgICAgSGlqYWNrcyB0aGUgc3RhbmRhcmQgc3RyZWFt cyBhcyBzb29uIGFzIHBvc3NpYmxlIGR1cmluZyBweXRlc3Qgc3RhcnR1cC4gVGhlCisgICAgcHl0 ZXN0LWZvcm1hdHRlZCBvdXRwdXQgZ2V0cyBsb2dnZWQgdG8gZmlsZSBpbnN0ZWFkLCBhbmQgd2Un bGwgdXNlIHRoZQorICAgIG9yaWdpbmFsIHN5cy5fX3N0ZG91dF9fL19fc3RkZXJyX18gc3RyZWFt cyBmb3IgdGhlIFRBUCBwcm90b2NvbC4KKyAgICAiIiIKKyAgICBsb2dkaXIgPSBvcy5nZXRlbnYo IlRFU1RMT0dESVIiKQorICAgIGlmIG5vdCBsb2dkaXI6CisgICAgICAgIHJhaXNlIFJ1bnRpbWVF cnJvcigicGd0YXAgcmVxdWlyZXMgdGhlIFRFU1RMT0dESVIgZW52dmFyIHRvIGJlIHNldCIpCisK KyAgICBvcy5tYWtlZGlycyhsb2dkaXIpCisgICAgbG9ncGF0aCA9IG9zLnBhdGguam9pbihsb2dk aXIsICJweXRlc3QubG9nIikKKyAgICBzeXMuc3Rkb3V0ID0gc3lzLnN0ZGVyciA9IG9wZW4obG9n cGF0aCwgImEiLCBidWZmZXJpbmc9MSkKKworCitAcHl0ZXN0Lmhvb2tpbXBsKHRyeWxhc3Q9VHJ1 ZSkKK2RlZiBweXRlc3Rfc2Vzc2lvbmZpbmlzaChzZXNzaW9uLCBleGl0c3RhdHVzKToKKyAgICAi IiIKKyAgICBTdXBwcmVzc2VzIG5vbnplcm8gZXhpdCBjb2RlcyBkdWUgdG8gZmFpbGVkIHRlc3Rz LiAoSW4gdGhhdCBjYXNlLCB3ZSB3YW50CisgICAgTWVzb24gdG8gcmVwb3J0IGEgZmFpbHVyZSBj b3VudCwgbm90IGEgZ2VuZXJpYyBFUlJPUi4pCisgICAgIiIiCisgICAgaWYgZXhpdHN0YXR1cyA9 PSBweXRlc3QuRXhpdENvZGUuVEVTVFNfRkFJTEVEOgorICAgICAgICBzZXNzaW9uLmV4aXRzdGF0 dXMgPSBweXRlc3QuRXhpdENvZGUuT0sKKworCitAcHl0ZXN0Lmhvb2tpbXBsCitkZWYgcHl0ZXN0 X2NvbGxlY3RyZXBvcnQocmVwb3J0KToKKyAgICAjIEluY2x1ZGUgY29sbGVjdGlvbiBmYWlsdXJl cyBkaXJlY3RseSBpbiBNZXNvbiBlcnJvciBvdXRwdXQuCisgICAgaWYgcmVwb3J0LmZhaWxlZDoK KyAgICAgICAgcHJpbnQocmVwb3J0LmxvbmdyZXBydGV4dCwgZmlsZT1zeXMuX19zdGRlcnJfXykK KworCitAcHl0ZXN0Lmhvb2tpbXBsCitkZWYgcHl0ZXN0X2ludGVybmFsZXJyb3IoZXhjcmVwciwg ZXhjaW5mbyk6CisgICAgIyBJbmNsdWRlIGludGVybmFsIGVycm9ycyBkaXJlY3RseSBpbiBNZXNv biBlcnJvciBvdXRwdXQuCisgICAgcHJpbnQoZXhjcmVwciwgZmlsZT1zeXMuX19zdGRlcnJfXykK KworCisjCisjIEhvb2sgV3JhcHBlcnMKKyMKKyMgSW4gcHl0ZXN0IHBhcmxhbmNlLCBhICJ3cmFw cGVyIiBmb3IgYSBob29rIGNhbiBpbnNwZWN0IGFuZCBvcHRpb25hbGx5IG1vZGlmeQorIyBleGlz dGluZyBob29rcycgYmVoYXZpb3IsIGJ1dCBpdCBkb2VzIG5vdCByZXBsYWNlIHRoZSBob29rIGNo YWluLiBUaGlzIGlzIGRvbmUKKyMgdGhyb3VnaCBhIGdlbmVyYXRvci1zdHlsZSBBUEkgd2hpY2gg Y2hhaW5zIHRoZSBob29rcyB0b2dldGhlciAoc2VlIHRoZSB1c2Ugb2YKKyMgYHlpZWxkYCkuCisj CisKKworQHB5dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1UcnVlKQorZGVmIHB5dGVzdF9jb2xs ZWN0aW9uKHNlc3Npb24pOgorICAgICIiIlJlcG9ydHMgdGhlIG51bWJlciBvZiBnYXRoZXJlZCB0 ZXN0cyBhZnRlciBjb2xsZWN0aW9uIGlzIGZpbmlzaGVkLiIiIgorICAgIHJlcyA9IHlpZWxkCisg ICAgdGFwLmV4cGVjdChzZXNzaW9uLnRlc3RzY29sbGVjdGVkKQorICAgIHJldHVybiByZXMKKwor CitAcHl0ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUpCitkZWYgcHl0ZXN0X3J1bnRlc3Rf bWFrZXJlcG9ydChpdGVtLCBjYWxsKToKKyAgICAiIiIKKyAgICBBbm5vdGF0ZXMgYSB0ZXN0IGl0 ZW0gd2l0aCBvdXIgVGVzdE5vdGVzIGFuZCBncmFicyByZWxldmFudCBpbmZvcm1hdGlvbiBmb3IK KyAgICByZXBvcnRpbmcuCisKKyAgICBUaGlzIGlzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBwZXIg dGVzdCwgc28gaXQncyBub3QgY29ycmVjdCB0byBwcmludCB0aGUgVEFQCisgICAgcmVzdWx0IGhl cmUuIChBIHRlc3QgYW5kIGl0cyB0ZWFyZG93biBzdGFnZSBjYW4gYm90aCBmYWlsLCBhbmQgd2Ug d2FudCB0bworICAgIHNlZSB0aGUgZGV0YWlscyBmb3IgYm90aC4pIFdlIGluc3RlYWQgY29tYmlu ZSBhbGwgdGhlIGluZm9ybWF0aW9uIGZvciB1c2UgYnkKKyAgICBvdXIgcHl0ZXN0X3J1bnRlc3Rf cHJvdG9jb2wgd3JhcHBlciBsYXRlciBvbi4KKyAgICAiIiIKKyAgICByZXMgPSB5aWVsZAorCisg ICAgaWYgbm90ZXNfa2V5IG5vdCBpbiBpdGVtLnN0YXNoOgorICAgICAgICBpdGVtLnN0YXNoW25v dGVzX2tleV0gPSBUZXN0Tm90ZXMoKQorICAgIG5vdGVzID0gaXRlbS5zdGFzaFtub3Rlc19rZXld CisKKyAgICByZXBvcnQgPSByZXMuZ2V0X3Jlc3VsdCgpCisgICAgaWYgcmVwb3J0LnBhc3NlZDoK KyAgICAgICAgcGFzcyAgIyBubyBhbm5vdGF0aW9uIG5lZWRlZAorCisgICAgZWxpZiByZXBvcnQu c2tpcHBlZDoKKyAgICAgICAgbm90ZXMuc2tpcHBlZCA9IFRydWUKKyAgICAgICAgXywgXywgbm90 ZXMuc2tpcF9yZWFzb24gPSByZXBvcnQubG9uZ3JlcHIKKworICAgIGVsaWYgcmVwb3J0LmZhaWxl ZDoKKyAgICAgICAgbm90ZXMuZmFpbGVkID0gVHJ1ZQorCisgICAgICAgIGlmIG5vdCBub3Rlcy5k ZXRhaWxzOgorICAgICAgICAgICAgbm90ZXMuZGV0YWlscyArPSAiezpfXjcyfVxuXG4iLmZvcm1h dChmIiB7cmVwb3J0LmhlYWRfbGluZX0gIikKKworICAgICAgICBpZiByZXBvcnQud2hlbiBpbiAo InNldHVwIiwgInRlYXJkb3duIik6CisgICAgICAgICAgICBub3Rlcy5kZXRhaWxzICs9ICJcbns6 X143Mn1cblxuIi5mb3JtYXQoCisgICAgICAgICAgICAgICAgZiIgRXJyb3IgZHVyaW5nIHtyZXBv cnQud2hlbn0gb2Yge3JlcG9ydC5oZWFkX2xpbmV9ICIKKyAgICAgICAgICAgICkKKworICAgICAg ICBub3Rlcy5kZXRhaWxzICs9IHJlcG9ydC5sb25ncmVwcnRleHQgKyAiXG4iCisKKyAgICAgICAg IyBJbmNsdWRlIGNhcHR1cmVkIHN0ZG91dC9zdGRlcnIvbG9nIGluIGZhaWx1cmUgb3V0cHV0Cisg ICAgICAgIGZvciBzZWN0aW9uX25hbWUsIHNlY3Rpb25fY29udGVudCBpbiByZXBvcnQuc2VjdGlv bnM6CisgICAgICAgICAgICBpZiBzZWN0aW9uX2NvbnRlbnQuc3RyaXAoKToKKyAgICAgICAgICAg ICAgICBub3Rlcy5kZXRhaWxzICs9ICJcbns6LV43Mn1cbiIuZm9ybWF0KGYiIHtzZWN0aW9uX25h bWV9ICIpCisgICAgICAgICAgICAgICAgbm90ZXMuZGV0YWlscyArPSBzZWN0aW9uX2NvbnRlbnQg KyAiXG4iCisKKyAgICBlbHNlOgorICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoInB5dGVzdF9y dW50ZXN0X21ha2VyZXBvcnQgcmVjZWl2ZWQgdW5rbm93biB0ZXN0IHN0YXR1cyIpCisKKyAgICBy ZXR1cm4gcmVzCisKKworQHB5dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1UcnVlKQorZGVmIHB5 dGVzdF9ydW50ZXN0X3Byb3RvY29sKGl0ZW0sIG5leHRpdGVtKToKKyAgICAiIiIKKyAgICBSZXBv cnRzIHRoZSBUQVAgcmVzdWx0IGZvciB0aGlzIHRlc3QgaXRlbSB1c2luZyBvdXIgZ2F0aGVyZWQg VGVzdE5vdGVzLgorICAgICIiIgorICAgIHJlcyA9IHlpZWxkCisKKyAgICBhc3NlcnQgbm90ZXNf a2V5IGluIGl0ZW0uc3Rhc2gsICJwZ3RhcCBkaWRuJ3QgYW5ub3RhdGUgYSB0ZXN0IGl0ZW0/Igor ICAgIG5vdGVzID0gaXRlbS5zdGFzaFtub3Rlc19rZXldCisKKyAgICBpZiBub3Rlcy5mYWlsZWQ6 CisgICAgICAgIHRhcC5mYWlsKGl0ZW0ubm9kZWlkLCBub3Rlcy5kZXRhaWxzKQorICAgIGVsaWYg bm90ZXMuc2tpcHBlZDoKKyAgICAgICAgdGFwLnNraXAoaXRlbS5ub2RlaWQsIG5vdGVzLnNraXBf cmVhc29uKQorICAgIGVsc2U6CisgICAgICAgIHRhcC5vayhpdGVtLm5vZGVpZCkKKworICAgIHJl dHVybiByZXMKZGlmZiAtLWdpdCBhL3NyYy90b29scy90ZXN0d3JhcCBiL3NyYy90b29scy90ZXN0 d3JhcAppbmRleCBlOTEyOTZlY2QxNS4uMzQ2Zjg2YjhlYTMgMTAwNzU1Ci0tLSBhL3NyYy90b29s cy90ZXN0d3JhcAorKysgYi9zcmMvdG9vbHMvdGVzdHdyYXAKQEAgLTQyLDcgKzQyLDExIEBAIG9w ZW4ob3MucGF0aC5qb2luKHRlc3RkaXIsICd0ZXN0LnN0YXJ0JyksICd4JykKIAogZW52X2RpY3Qg PSB7Kipvcy5lbnZpcm9uLAogICAgICAgICAgICAgJ1RFU1REQVRBRElSJzogb3MucGF0aC5qb2lu KHRlc3RkaXIsICdkYXRhJyksCi0gICAgICAgICAgICAnVEVTVExPR0RJUic6IG9zLnBhdGguam9p bih0ZXN0ZGlyLCAnbG9nJyl9CisgICAgICAgICAgICAnVEVTVExPR0RJUic6IG9zLnBhdGguam9p bih0ZXN0ZGlyLCAnbG9nJyksCisgICAgICAgICAgICAjIFByZXZlbnQgZW1pdHRpbmcgdGVybWlu YWwgY2FwYWJpbGl0eSBzZXF1ZW5jZXMgdGhhdCBwb2xsdXRlIHRoZQorICAgICAgICAgICAgIyBU QVAgb3V0cHV0IHN0cmVhbSAoaS5lLlwwMzNbPzEwMzRoKS4gVGhpcyBoYXBwZW5zIG9uIE9wZW5C U0Qgd2l0aAorICAgICAgICAgICAgIyBweXRlc3QgZm9yIHVua25vd24gcmVhc29ucy4KKyAgICAg ICAgICAgICdURVJNJzogJyd9CiAKIAogIyBUaGUgY29uZmlndXJhdGlvbiB0aW1lIHZhbHVlIG9m IFBHX1RFU1RfRVhUUkEgaXMgc3VwcGxpZWQgdmlhIGFyZ3VtZW50CgpiYXNlLWNvbW1pdDogZDgw YjAyMjUwMTBmZDQwN2M3ODRiYmVjZGUxMTZhMjgxOThiNmVhYgotLSAKMi41My4wCgo= --96edea3d04a35249385fadaf89258e13166ceb54185dbcc5d8ae1ac19276 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v12-0002-Add-pytest-infrastructure-to-interact-with-Postg.patch Content-Type: text/x-patch; charset=utf-8; name=v12-0002-Add-pytest-infrastructure-to-interact-with-Postg.patch RnJvbSA5Y2RmYjNlZTMxOWZhMDcwMGFlMWY2NTM5OWQ5ZWQ0MWEwMTE1Y2I3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUdWUsIDE2IERlYyAyMDI1IDA5OjI1OjQ4ICswMTAwClN1YmplY3Q6IFtQQVRDSCB2 MTIgMi81XSBBZGQgcHl0ZXN0IGluZnJhc3RydWN0dXJlIHRvIGludGVyYWN0IHdpdGggUG9zdGdy 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 c3JjL3Rlc3QvcHl0ZXN0L3B5cGcvc2VydmVyLnB5ICAgICAgICAgICAgfCA0NzYgKysrKysrKysr KysrKysrKysrKysrCiBzcmMvdGVzdC9weXRlc3QvcHlwZy91dGlsLnB5ICAgICAgICAgICAgICB8 ICA0MiArKwogc3JjL3Rlc3QvcHl0ZXN0L3B5dC9jb25mdGVzdC5weSAgICAgICAgICAgfCAgIDEg Kwogc3JjL3Rlc3QvcHl0ZXN0L3B5dC90ZXN0X2Vycm9ycy5weSAgICAgICAgfCAgMzQgKysKIHNy Yy90ZXN0L3B5dGVzdC9weXQvdGVzdF9saWJwcS5weSAgICAgICAgIHwgIDM1ICsrCiBzcmMvdGVz dC9weXRlc3QvcHl0L3Rlc3RfbXVsdGlfc2VydmVyLnB5ICB8ICA0NiArKwogc3JjL3Rlc3QvcHl0 ZXN0L3B5dC90ZXN0X3F1ZXJ5X2hlbHBlcnMucHkgfCAzNDcgKysrKysrKysrKysrKysrCiAxNyBm aWxlcyBjaGFuZ2VkLCAyMjA4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL3Rlc3QvcHl0ZXN0L2xpYnBxL19faW5pdF9fLnB5CiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjL3Rlc3QvcHl0ZXN0L2xpYnBxL19jb3JlLnB5CiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL3Rlc3QvcHl0ZXN0L2xpYnBxL2Vycm9ycy5weQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy90ZXN0L3B5dGVzdC9weXBnL19faW5pdF9fLnB5CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvcHl0ZXN0L3B5cGcvX2Vudi5weQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3B5dGVz dC9weXBnL2ZpeHR1cmVzLnB5CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcHl0ZXN0L3B5 cGcvc2VydmVyLnB5CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcHl0ZXN0L3B5cGcvdXRp bC5weQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3B5dGVzdC9weXQvY29uZnRlc3QucHkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9weXRlc3QvcHl0L3Rlc3RfZXJyb3JzLnB5CiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcHl0ZXN0L3B5dC90ZXN0X2xpYnBxLnB5CiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcHl0ZXN0L3B5dC90ZXN0X211bHRpX3NlcnZlci5weQog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3B5dGVzdC9weXQvdGVzdF9xdWVyeV9oZWxwZXJz LnB5CgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZ3Jlc3Muc2dtbCBiL2RvYy9zcmMvc2dt bC9yZWdyZXNzLnNnbWwKaW5kZXggZDgwZGQ0NmM1ZmQuLjJkODVlZGFjZWM3IDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvcmVncmVzcy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWdyZXNzLnNn bWwKQEAgLTg0MCw3ICs4NDAsNyBAQCBmbG9hdDQ6b3V0Oi4qLS4qLWN5Z3dpbi4qPWZsb2F0NC1t aXNyb3VuZGVkLWlucHV0Lm91dAogICA8L3NlY3QxPgogCiAgIDxzZWN0MSBpZD0icmVncmVzcy10 YXAiPgotICAgPHRpdGxlPlRBUCBUZXN0czwvdGl0bGU+CisgICA8dGl0bGU+UGVybCBUQVAgVGVz dHM8L3RpdGxlPgogCiAgICA8cGFyYT4KICAgICBWYXJpb3VzIHRlc3RzLCBwYXJ0aWN1bGFybHkg dGhlIGNsaWVudCBwcm9ncmFtIHRlc3RzCkBAIC05MjksNiArOTI5LDcwIEBAIFBHX1RFU1RfTk9D TEVBTj0xIG1ha2UgLUMgc3JjL2Jpbi9wZ19kdW1wIGNoZWNrCiAKICAgPC9zZWN0MT4KIAorICA8 c2VjdDEgaWQ9InJlZ3Jlc3MtcHl0ZXN0Ij4KKyAgIDx0aXRsZT5QeXRlc3QgVGVzdHM8L3RpdGxl PgorCisgICA8cGFyYT4KKyAgICBUZXN0cyBpbiA8ZmlsZW5hbWU+cHl0PC9maWxlbmFtZT4gZGly ZWN0b3JpZXMgdXNlIHRoZSBQeXRob24KKyAgICA8YXBwbGljYXRpb24+cHl0ZXN0PC9hcHBsaWNh dGlvbj4gZnJhbWV3b3JrLiBUaGVzZSB0ZXN0cyBwcm92aWRlIGEKKyAgICBjb252ZW5pZW50IHdh eSB0byB0ZXN0IGxpYnBxIGNsaWVudCBmdW5jdGlvbmFsaXR5IGFuZCBzY2VuYXJpb3MgcmVxdWly aW5nCisgICAgbXVsdGlwbGUgUG9zdGdyZVNRTCBzZXJ2ZXIgaW5zdGFuY2VzLgorICAgPC9wYXJh PgorCisgICA8cGFyYT4KKyAgICBUaGUgcHl0ZXN0IHRlc3RzIHJlcXVpcmUgPHByb2R1Y3RuYW1l PlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiB0byBiZQorICAgIGNvbmZpZ3VyZWQgd2l0aCB0aGUg b3B0aW9uIDxvcHRpb24+LS1lbmFibGUtcHl0ZXN0PC9vcHRpb24+IChvcgorICAgIDxvcHRpb24+ LURweXRlc3Q9ZW5hYmxlZDwvb3B0aW9uPiBmb3IgTWVzb24gYnVpbGRzKS4gWW91IGFsc28gbmVl ZAorICAgIDxhcHBsaWNhdGlvbj5weXRlc3Q8L2FwcGxpY2F0aW9uPiBpbnN0YWxsZWQuIFlvdSBj YW4gZWl0aGVyIGluc3RhbGwgaXQKKyAgICBzeXN0ZW0td2lkZSwgb3IgY3JlYXRlIGEgdmlydHVh bCBlbnZpcm9ubWVudCBpbiB0aGUgc291cmNlIGRpcmVjdG9yeToKKzxwcm9ncmFtbGlzdGluZz4K K3B5dGhvbiAtbSB2ZW52IC52ZW52Citzb3VyY2UgLnZlbnYvYmluL2FjdGl2YXRlCitwaXAgaW5z dGFsbCAuCis8L3Byb2dyYW1saXN0aW5nPgorICAgIEFsdGVybmF0aXZlbHksIGlmIHlvdSBoYXZl IDxhcHBsaWNhdGlvbj51djwvYXBwbGljYXRpb24+IGluc3RhbGxlZDoKKzxwcm9ncmFtbGlzdGlu Zz4KK3V2IHN5bmMKK3NvdXJjZSAudmVudi9iaW4vYWN0aXZhdGUKKzwvcHJvZ3JhbWxpc3Rpbmc+ CisgICAgUmVtZW1iZXIgdG8gYWN0aXZhdGUgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQgYmVmb3Jl IHJ1bm5pbmcKKyAgICA8Y29tbWFuZD5jb25maWd1cmU8L2NvbW1hbmQ+IG9yIDxjb21tYW5kPm1l c29uIHNldHVwPC9jb21tYW5kPi4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgV2l0aCBN ZXNvbiBidWlsZHMsIHlvdSBjYW4gcnVuIHRoZSBweXRlc3QgdGVzdHMgdXNpbmc6Cis8cHJvZ3Jh bWxpc3Rpbmc+CittZXNvbiB0ZXN0IC0tc3VpdGUgcHl0ZXN0Cis8L3Byb2dyYW1saXN0aW5nPgor ICAgIFdpdGggYXV0b2NvbmYtYmFzZWQgYnVpbGRzLCB5b3UgY2FuIHJ1biB0aGVtIGZyb20gdGhl CisgICAgPGZpbGVuYW1lPnNyYy90ZXN0L3B5dGVzdDwvZmlsZW5hbWU+IGRpcmVjdG9yeSB1c2lu ZzoKKzxwcm9ncmFtbGlzdGluZz4KK21ha2UgY2hlY2sKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICA8 L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIFlvdSBjYW4gYWxzbyBydW4gc3BlY2lmaWMgdGVzdCBm aWxlcyBkaXJlY3RseSB1c2luZyBweXRlc3Q6Cis8cHJvZ3JhbWxpc3Rpbmc+CitweXRlc3Qgc3Jj L3Rlc3QvcHl0ZXN0L3B5dC90ZXN0X2xpYnBxLnB5CitweXRlc3QgLWsgInRlc3RfY29ubnN0ciIK KzwvcHJvZ3JhbWxpc3Rpbmc+CisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIE1hbnkgb3Bl cmF0aW9ucyBpbiB0aGUgdGVzdCBzdWl0ZXMgdXNlIGEgMTgwLXNlY29uZCB0aW1lb3V0LCB3aGlj aCBvbiBzbG93CisgICAgaG9zdHMgbWF5IGxlYWQgdG8gbG9hZC1pbmR1Y2VkIHRpbWVvdXRzLiAg U2V0dGluZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKKyAgICA8dmFybmFtZT5QR19URVNUX1RJ TUVPVVRfREVGQVVMVDwvdmFybmFtZT4gdG8gYSBoaWdoZXIgbnVtYmVyIHdpbGwgY2hhbmdlCisg ICAgdGhlIGRlZmF1bHQgdG8gYXZvaWQgdGhpcy4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+Cisg ICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gd3JpdGluZyBweXRlc3QgdGVzdHMsIHNlZSB0aGUK KyAgICA8ZmlsZW5hbWU+c3JjL3Rlc3QvcHl0ZXN0L1JFQURNRTwvZmlsZW5hbWU+IGZpbGUuCisg ICA8L3BhcmE+CisKKyAgPC9zZWN0MT4KKwogICA8c2VjdDEgaWQ9InJlZ3Jlc3MtY292ZXJhZ2Ui PgogICAgPHRpdGxlPlRlc3QgQ292ZXJhZ2UgRXhhbWluYXRpb248L3RpdGxlPgogCmRpZmYgLS1n aXQgYS9weXByb2plY3QudG9tbCBiL3B5cHJvamVjdC50b21sCmluZGV4IDYwYWJiNGQwNjU1Li40 NjI4ZDIyNzRlMCAxMDA2NDQKLS0tIGEvcHlwcm9qZWN0LnRvbWwKKysrIGIvcHlwcm9qZWN0LnRv bWwKQEAgLTE5LDMgKzE5LDYgQEAgbWludmVyc2lvbiA9ICI3LjAiCiAKICMgQ29tbW9uIHRlc3Qg Y29kZSBjYW4gYmUgZm91bmQgaGVyZS4KIHB5dGhvbnBhdGggPSBbInNyYy90ZXN0L3B5dGVzdCJd CisKKyMgTG9hZCB0aGUgc2hhcmVkIGZpeHR1cmVzIHBsdWdpbgorYWRkb3B0cyA9IFsiLXAiLCAi cHlwZy5maXh0dXJlcyJdCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9weXRlc3QvUkVBRE1FIGIvc3Jj L3Rlc3QvcHl0ZXN0L1JFQURNRQppbmRleCAxMzMzZWQ3N2I3ZS4uYmI3NWU1NmEyNWQgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3B5dGVzdC9SRUFETUUKKysrIGIvc3JjL3Rlc3QvcHl0ZXN0L1JFQURN RQpAQCAtMSArMSwxNTMgQEAKLVRPRE8KK3NyYy90ZXN0L3B5dGVzdC9SRUFETUUKKworUHl0ZXN0 LWJhc2VkIHRlc3RzCis9PT09PT09PT09PT09PT09PT0KKworVGhpcyBkaXJlY3RvcnkgY29udGFp bnMgaW5mcmFzdHJ1Y3R1cmUgZm9yIFB5dGhvbi1iYXNlZCB0ZXN0cyB1c2luZyBweXRlc3QsCith bG9uZyB3aXRoIHNvbWUgY29yZSB0ZXN0cyBmb3IgdGhlIHB5dGVzdCBpbmZyYXN0cnVjdHVyZSBp dHNlbGYuIFRoZSBmcmFtZXdvcmsKK3Byb3ZpZGVzIGZpeHR1cmVzIGZvciBtYW5hZ2luZyBQb3N0 Z3JlU1FMIHNlcnZlciBpbnN0YW5jZXMgYW5kIGNvbm5lY3RpbmcgdG8KK3RoZW0gdmlhIGxpYnBx LgorCisKK1J1bm5pbmcgdGhlIHRlc3RzCis9PT09PT09PT09PT09PT09PQorCitOT1RFOiBZb3Ug bXVzdCBoYXZlIGdpdmVuIHRoZSAtLWVuYWJsZS1weXRlc3QgYXJndW1lbnQgdG8gY29uZmlndXJl IChvcgorLURweXRlc3Q9ZW5hYmxlZCBmb3IgTWVzb24gYnVpbGRzKS4gWW91IGFsc28gbmVlZCB0 byBoYXZlIHB5dGVzdCBpbnN0YWxsZWQuCisKK0lmIHlvdSBkb24ndCBoYXZlIHB5dGVzdCBpbnN0 YWxsZWQgc3lzdGVtLXdpZGUsIHlvdSBjYW4gY3JlYXRlIGEgdmlydHVhbAorZW52aXJvbm1lbnQ6 CisKKyAgICBweXRob24zIC1tIHZlbnYgLnZlbnYKKyAgICBzb3VyY2UgLnZlbnYvYmluL2FjdGl2 YXRlICAgICMgT24gV2luZG93czogLnZlbnZcU2NyaXB0c1xhY3RpdmF0ZQorICAgIHBpcCBpbnN0 YWxsIC4gICAgICAgICAgICAgICAgIyBJbnN0YWxscyBweXRlc3QgYW5kIG90aGVyIGRlcGVuZGVu Y2llcworCitPciB1c2luZyB1diAoaHR0cHM6Ly9kb2NzLmFzdHJhbC5zaC91di8pOgorCisgICAg dXYgc3luYworICAgIHNvdXJjZSAudmVudi9iaW4vYWN0aXZhdGUgICAgIyBPbiBXaW5kb3dzOiAu dmVudlxTY3JpcHRzXGFjdGl2YXRlCisKK1JlbWVtYmVyIHRvIGFjdGl2YXRlIHRoZSB2aXJ0dWFs IGVudmlyb25tZW50IGJlZm9yZSBydW5uaW5nIGNvbmZpZ3VyZS9tZXNvbgorc2V0dXAuCisKK1dp dGggTWVzb24gYnVpbGRzLCB5b3UgY2FuIHJ1bjoKKyAgICBtZXNvbiB0ZXN0IC0tc3VpdGUgcHl0 ZXN0CisKK1dpdGggYXV0b2NvbmYgYmFzZWQgYnVpbGRzLCB5b3UgY2FuIHJ1bjoKKyAgICBtYWtl IGNoZWNrCitvcgorICAgIG1ha2UgaW5zdGFsbGNoZWNrCisKK1lvdSBjYW4gcnVuIHNwZWNpZmlj IHRlc3QgZmlsZXMgYW5kL29yIHVzZSBweXRlc3QncyAtayBvcHRpb24gdG8gc2VsZWN0IHRlc3Rz OgorICAgIHB5dGVzdCBzcmMvdGVzdC9weXRlc3QvcHl0L3Rlc3RfbGlicHEucHkKKyAgICBweXRl c3QgLWsgInRlc3RfY29ubnN0ciIKKworCitEaXJlY3Rvcnkgc3RydWN0dXJlCis9PT09PT09PT09 PT09PT09PT09CisKK3B5cGcvCisgICAgUHl0aG9uIGxpYnJhcnkgcHJvdmlkaW5nIGNvbW1vbiBm dW5jdGlvbnMgYW5kIHB5dGVzdCBmaXh0dXJlcyB0aGF0IGNhbiBiZQorICAgIHVzZWQgaW4gdGVz dHMuCisKK2xpYnBxLworICAgIEEgc2ltcGxlIGJ1dCB1c2VyLWZyaWVuZGx5IHB5dGhvbiB3cmFw cGVyIGFyb3VuZCBsaWJwcQorCitweXQvCisgICAgVGVzdHMgZm9yIHRoZSBweXRlc3QgaW5mcmFz dHJ1Y3R1cmUgaXRzZWxmCisKK3BndGFwLnB5CisgICAgQSBweXRlc3QgcGx1Z2luIHRvIG91dHB1 dCByZXN1bHRzIGluIFRBUCBmb3JtYXQKKworCitXcml0aW5nIHRlc3RzCis9PT09PT09PT09PT09 CisKK1Rlc3RzIHVzZSBweXRlc3QgZml4dHVyZXMgdG8gbWFuYWdlIHNlcnZlciBpbnN0YW5jZXMg YW5kIGNvbm5lY3Rpb25zLiBUaGUKK21vc3QgY29tbW9ubHkgdXNlZCBmaXh0dXJlcyBhcmU6CisK K3BnCisgICAgQSBQb3N0Z3Jlc1NlcnZlciBpbnN0YW5jZSBjb25maWd1cmVkIGZvciB0aGUgY3Vy cmVudCB0ZXN0LiBVc2UgdGhpcyBmb3IKKyAgICBjcmVhdGluZyB0ZXN0IHVzZXJzL2RhdGFiYXNl cyBvciBtb2RpZnlpbmcgc2VydmVyIGNvbmZpZ3VyYXRpb24uIENoYW5nZXMKKyAgICBhcmUgYXV0 b21hdGljYWxseSByb2xsZWQgYmFjayBhZnRlciB0aGUgdGVzdC4KKworY29ubgorICAgIEEgY29u bmVjdGVkIFBHY29ubiBpbnN0YW5jZSB0byB0aGUgdGVzdCBzZXJ2ZXIuIEF1dG9tYXRpY2FsbHkg Y2xlYW5lZCB1cAorICAgIGFmdGVyIHRoZSB0ZXN0LgorCitjb25uZWN0CisgICAgQSBmdW5jdGlv biB0byBjcmVhdGUgYWRkaXRpb25hbCBjb25uZWN0aW9ucyB3aXRoIGN1c3RvbSBvcHRpb25zLgor CitjcmVhdGVfcGcKKyAgICBBIGZhY3RvcnkgZnVuY3Rpb24gdG8gY3JlYXRlIGFkZGl0aW9uYWwg UG9zdGdyZVNRTCBzZXJ2ZXJzIHdpdGhpbiBhIHRlc3QuCisgICAgU2VydmVycyBhcmUgYXV0b21h dGljYWxseSBjbGVhbmVkIHVwIGF0IHRoZSBlbmQgb2YgdGhlIHRlc3QuIFVzZWZ1bCBmb3IKKyAg ICB0ZXN0aW5nIHNjZW5hcmlvcyB0aGF0IHJlcXVpcmUgbXVsdGlwbGUgaW5kZXBlbmRlbnQgc2Vy dmVycy4KKworY3JlYXRlX3BnX21vZHVsZQorICAgIExpa2UgY3JlYXRlX3BnLCBidXQgc2VydmVy cyBwZXJzaXN0IGZvciB0aGUgZW50aXJlIHRlc3QgbW9kdWxlLiBVc2UgdGhpcworICAgIHdoZW4g bXVsdGlwbGUgdGVzdHMgaW4gYSBtb2R1bGUgY2FuIHNoYXJlIHRoZSBzYW1lIHNlcnZlcnMsIHdo aWNoIGlzCisgICAgZmFzdGVyIHRoYW4gY3JlYXRpbmcgbmV3IHNlcnZlcnMgZm9yIGVhY2ggdGVz dC4KKworCitFeGFtcGxlIHRlc3Q6CisKKyAgICBkZWYgdGVzdF9zaW1wbGVfcXVlcnkoY29ubik6 CisgICAgICAgIHJlc3VsdCA9IGNvbm4uc3FsKCJTRUxFQ1QgMSArIDEiKQorICAgICAgICBhc3Nl cnQgcmVzdWx0ID09IDIKKworICAgIGRlZiB0ZXN0X3dpdGhfdXNlcihwZyk6CisgICAgICAgIHVz ZXJzID0gcGcuY3JlYXRlX3VzZXJzKCJ0ZXN0IikKKyAgICAgICAgd2l0aCBwZy5yZWxvYWRpbmco KSBhcyBzOgorICAgICAgICAgICAgcy5oYmEucHJlcGVuZChbImxvY2FsIiwgImFsbCIsIHVzZXJz WyJ0ZXN0Il0sICJ0cnVzdCJdKQorCisgICAgICAgIGNvbm4gPSBwZy5jb25uZWN0KHVzZXI9dXNl cnNbInRlc3QiXSkKKyAgICAgICAgYXNzZXJ0IGNvbm4uc3FsKCJTRUxFQ1QgY3VycmVudF91c2Vy IikgPT0gdXNlcnNbInRlc3QiXQorCisgICAgZGVmIHRlc3RfbXVsdGlwbGVfc2VydmVycyhjcmVh dGVfcGcpOgorICAgICAgICBub2RlMSA9IGNyZWF0ZV9wZygicHJpbWFyeSIpCisgICAgICAgIG5v ZGUyID0gY3JlYXRlX3BnKCJzZWNvbmRhcnkiKQorCisgICAgICAgIGNvbm4xID0gbm9kZTEuY29u bmVjdCgpCisgICAgICAgIGNvbm4yID0gbm9kZTIuY29ubmVjdCgpCisKKyAgICAgICAgIyBFYWNo IHNlcnZlciBpcyBpbmRlcGVuZGVudAorICAgICAgICBhc3NlcnQgbm9kZTEucG9ydCAhPSBub2Rl Mi5wb3J0CisKKworU2VydmVyIGNvbmZpZ3VyYXRpb24KKz09PT09PT09PT09PT09PT09PT09CisK K1Rlc3RzIGNhbiB0ZW1wb3JhcmlseSBtb2RpZnkgc2VydmVyIGNvbmZpZ3VyYXRpb24gdXNpbmcg Y29udGV4dCBtYW5hZ2VyczoKKworICAgIHdpdGggcGcucmVsb2FkaW5nKCkgYXMgczoKKyAgICAg ICAgcy5jb25mLnNldChsb2dfY29ubmVjdGlvbnM9Im9uIikKKyAgICAgICAgcy5oYmEucHJlcGVu ZCgibG9jYWwgYWxsIGFsbCB0cnVzdCIpCisgICAgICAgICMgU2VydmVyIGlzIHJlbG9hZGVkIGhl cmUKKyAgICAjIEFmdGVyIHRoZSB0ZXN0IGZpbmlzaGVkIHRoZSBvcmlnaW5hbCBjb25maWd1cmF0 aW9uIGlzIHJlc3RvcmVkIGFuZAorICAgICMgdGhlIHNlcnZlciBpcyByZWxvYWRlZCBhZ2Fpbgor CitVc2UgcGcucmVzdGFydGluZygpIGluc3RlYWQgaWYgdGhlIGNvbmZpZ3VyYXRpb24gY2hhbmdl IHJlcXVpcmVzIGEgcmVzdGFydC4KKworCitUaW1lb3V0cworPT09PT09PT0KKworVGVzdHMgaW5o ZXJpdCB0aGUgUEdfVEVTVF9USU1FT1VUX0RFRkFVTFQgZW52aXJvbm1lbnQgdmFyaWFibGUgKGRl ZmF1bHRpbmcKK3RvIDE4MCBzZWNvbmRzKS4gVGhlIHJlbWFpbmluZ190aW1lb3V0IGZpeHR1cmUg cHJvdmlkZXMgYSBmdW5jdGlvbiB0aGF0CityZXR1cm5zIGhvdyBtdWNoIHRpbWUgcmVtYWlucyBm b3IgdGhlIGN1cnJlbnQgdGVzdC4KKworCitFbnZpcm9ubWVudCB2YXJpYWJsZXMKKz09PT09PT09 PT09PT09PT09PT09PQorCitQR19URVNUX1RJTUVPVVRfREVGQVVMVAorICAgIFBlci10ZXN0IHRp bWVvdXQgaW4gc2Vjb25kcyAoZGVmYXVsdDogMTgwKQorCitQR19DT05GSUcKKyAgICBQYXRoIHRv IHBnX2NvbmZpZyAoZGVmYXVsdDogdXNlcyBQQVRIKQorCitURVNUREFUQURJUgorICAgIERpcmVj dG9yeSBmb3IgdGVzdCBkYXRhIChkZWZhdWx0OiBweXRlc3QgdGVtcCBkaXJlY3RvcnkpCisKK1BH X1RFU1RfRVhUUkEKKyAgICBTcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBvcHRpb25hbCB0ZXN0IGNh dGVnb3JpZXMgdG8gcnVuIChlLmcuLCAic3NsIikKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3B5dGVz dC9saWJwcS9fX2luaXRfXy5weSBiL3NyYy90ZXN0L3B5dGVzdC9saWJwcS9fX2luaXRfXy5weQpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNmE3MWViYmU0M2YKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvdGVzdC9weXRlc3QvbGlicHEvX19pbml0X18ucHkKQEAgLTAsMCAr MSwzNSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3Bt ZW50IEdyb3VwCisKKyIiIgorbGlicHEgdGVzdGluZyB1dGlsaXRpZXMgLSBjdHlwZXMgYmluZGlu Z3MgYW5kIGhlbHBlcnMgZm9yIFBvc3RncmVTUUwncyBsaWJwcSBsaWJyYXJ5LgorCitUaGlzIG1v ZHVsZSBwcm92aWRlcyBQeXRob24gd3JhcHBlcnMgYXJvdW5kIGxpYnBxIGZvciB1c2UgaW4gcHl0 ZXN0IHRlc3RzLgorIiIiCisKK2Zyb20gLiBpbXBvcnQgZXJyb3JzCitmcm9tIC5lcnJvcnMgaW1w b3J0IExpYnBxRXJyb3IKK2Zyb20gLl9jb3JlIGltcG9ydCAoCisgICAgQ29ubmVjdGlvblN0YXR1 cywKKyAgICBEaWFnRmllbGQsCisgICAgRXhlY1N0YXR1cywKKyAgICBQR2Nvbm4sCisgICAgUEdy ZXN1bHQsCisgICAgY29ubmVjdCwKKyAgICBjb25uc3RyLAorICAgIGxvYWRfbGlicHFfaGFuZGxl LAorICAgIHJlZ2lzdGVyX3R5cGVfaW5mbywKKykKKworX19hbGxfXyA9IFsKKyAgICAiZXJyb3Jz IiwKKyAgICAiTGlicHFFcnJvciIsCisgICAgIkNvbm5lY3Rpb25TdGF0dXMiLAorICAgICJEaWFn RmllbGQiLAorICAgICJFeGVjU3RhdHVzIiwKKyAgICAiUEdjb25uIiwKKyAgICAiUEdyZXN1bHQi LAorICAgICJjb25uZWN0IiwKKyAgICAiY29ubnN0ciIsCisgICAgImxvYWRfbGlicHFfaGFuZGxl IiwKKyAgICAicmVnaXN0ZXJfdHlwZV9pbmZvIiwKK10KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3B5 dGVzdC9saWJwcS9fY29yZS5weSBiL3NyYy90ZXN0L3B5dGVzdC9saWJwcS9fY29yZS5weQpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMWMwNTliOWI0NDYKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvdGVzdC9weXRlc3QvbGlicHEvX2NvcmUucHkKQEAgLTAsMCArMSw0ODgg QEAKKyMgQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBH cm91cAorCisiIiIKK0NvcmUgbGlicHEgZnVuY3Rpb25hbGl0eSAtIGN0eXBlcyBiaW5kaW5ncyBh bmQgY29ubmVjdGlvbiBoYW5kbGluZy4KKyIiIgorCitpbXBvcnQgY29udGV4dGxpYgoraW1wb3J0 IGN0eXBlcworaW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgZGVjaW1hbAoraW1wb3J0IGVudW0KK2lt cG9ydCBqc29uCitpbXBvcnQgcGxhdGZvcm0KK2ltcG9ydCBvcworaW1wb3J0IHV1aWQKK2Zyb20g dHlwaW5nIGltcG9ydCBBbnksIENhbGxhYmxlLCBEaWN0LCBPcHRpb25hbAorCitmcm9tIC5lcnJv cnMgaW1wb3J0IExpYnBxRXJyb3IKKworCisjIFBHX0RJQUcgZmllbGQgaWRlbnRpZmllcnMgZnJv bSBwb3N0Z3Jlc19leHQuaAorY2xhc3MgRGlhZ0ZpZWxkKGVudW0uSW50RW51bSk6CisgICAgU0VW RVJJVFkgPSBvcmQoIlMiKQorICAgIFNFVkVSSVRZX05PTkxPQ0FMSVpFRCA9IG9yZCgiViIpCisg ICAgU1FMU1RBVEUgPSBvcmQoIkMiKQorICAgIE1FU1NBR0VfUFJJTUFSWSA9IG9yZCgiTSIpCisg ICAgTUVTU0FHRV9ERVRBSUwgPSBvcmQoIkQiKQorICAgIE1FU1NBR0VfSElOVCA9IG9yZCgiSCIp CisgICAgU1RBVEVNRU5UX1BPU0lUSU9OID0gb3JkKCJQIikKKyAgICBJTlRFUk5BTF9QT1NJVElP TiA9IG9yZCgicCIpCisgICAgSU5URVJOQUxfUVVFUlkgPSBvcmQoInEiKQorICAgIENPTlRFWFQg PSBvcmQoIlciKQorICAgIFNDSEVNQV9OQU1FID0gb3JkKCJzIikKKyAgICBUQUJMRV9OQU1FID0g b3JkKCJ0IikKKyAgICBDT0xVTU5fTkFNRSA9IG9yZCgiYyIpCisgICAgREFUQVRZUEVfTkFNRSA9 IG9yZCgiZCIpCisgICAgQ09OU1RSQUlOVF9OQU1FID0gb3JkKCJuIikKKyAgICBTT1VSQ0VfRklM RSA9IG9yZCgiRiIpCisgICAgU09VUkNFX0xJTkUgPSBvcmQoIkwiKQorICAgIFNPVVJDRV9GVU5D VElPTiA9IG9yZCgiUiIpCisKKworY2xhc3MgQ29ubmVjdGlvblN0YXR1cyhlbnVtLkludEVudW0p OgorICAgICIiIlBvc3RncmVTUUwgY29ubmVjdGlvbiBzdGF0dXMgY29kZXMgZnJvbSBsaWJwcS4i IiIKKworICAgIENPTk5FQ1RJT05fT0sgPSAwCisgICAgQ09OTkVDVElPTl9CQUQgPSAxCisKKwor Y2xhc3MgRXhlY1N0YXR1cyhlbnVtLkludEVudW0pOgorICAgICIiIlBvc3RncmVTUUwgcmVzdWx0 IHN0YXR1cyBjb2RlcyBmcm9tIFBRcmVzdWx0U3RhdHVzLiIiIgorCisgICAgUEdSRVNfRU1QVFlf UVVFUlkgPSAwCisgICAgUEdSRVNfQ09NTUFORF9PSyA9IDEKKyAgICBQR1JFU19UVVBMRVNfT0sg PSAyCisgICAgUEdSRVNfQ09QWV9PVVQgPSAzCisgICAgUEdSRVNfQ09QWV9JTiA9IDQKKyAgICBQ R1JFU19CQURfUkVTUE9OU0UgPSA1CisgICAgUEdSRVNfTk9ORkFUQUxfRVJST1IgPSA2CisgICAg UEdSRVNfRkFUQUxfRVJST1IgPSA3CisgICAgUEdSRVNfQ09QWV9CT1RIID0gOAorICAgIFBHUkVT X1NJTkdMRV9UVVBMRSA9IDkKKyAgICBQR1JFU19QSVBFTElORV9TWU5DID0gMTAKKyAgICBQR1JF U19QSVBFTElORV9BQk9SVEVEID0gMTEKKworCitjbGFzcyBfUEdjb25uKGN0eXBlcy5TdHJ1Y3R1 cmUpOgorICAgIHBhc3MKKworCitjbGFzcyBfUEdyZXN1bHQoY3R5cGVzLlN0cnVjdHVyZSk6Cisg ICAgcGFzcworCisKK19QR2Nvbm5fcCA9IGN0eXBlcy5QT0lOVEVSKF9QR2Nvbm4pCitfUEdyZXN1 bHRfcCA9IGN0eXBlcy5QT0lOVEVSKF9QR3Jlc3VsdCkKKworCitkZWYgbG9hZF9saWJwcV9oYW5k bGUobGliZGlyLCBiaW5kaXIpOgorICAgICIiIgorICAgIExvYWRzIGEgY3R5cGVzIGhhbmRsZSBm b3IgbGlicHEuIFNvbWUgY29tbW9uIGZ1bmN0aW9uIHByb3RvdHlwZXMgYXJlCisgICAgaW5pdGlh bGl6ZWQgZm9yIGdlbmVyYWwgdXNlLgorICAgICIiIgorICAgIHN5c3RlbSA9IHBsYXRmb3JtLnN5 c3RlbSgpCisKKyAgICBpZiBzeXN0ZW0gaW4gKCJMaW51eCIsICJGcmVlQlNEIiwgIk5ldEJTRCIs ICJPcGVuQlNEIik6CisgICAgICAgIG5hbWUgPSAibGlicHEuc28uNSIKKyAgICBlbGlmIHN5c3Rl bSA9PSAiRGFyd2luIjoKKyAgICAgICAgbmFtZSA9ICJsaWJwcS41LmR5bGliIgorICAgIGVsaWYg c3lzdGVtID09ICJXaW5kb3dzIjoKKyAgICAgICAgbmFtZSA9ICJsaWJwcS5kbGwiCisgICAgZWxz ZToKKyAgICAgICAgYXNzZXJ0IEZhbHNlLCBmInRoZSBsaWJwcSBmaXh0dXJlIG11c3QgYmUgdXBk YXRlZCBmb3Ige3N5c3RlbX0iCisKKyAgICBpZiBzeXN0ZW0gPT0gIldpbmRvd3MiOgorICAgICAg ICAjIE9uIFdpbmRvd3MsIGxpYnBxLmRsbCBpcyBjb25mdXNpbmdseSBpbiBiaW5kaXIsIG5vdCBs aWJkaXIuIEFuZCB3ZQorICAgICAgICAjIG5lZWQgdG8gYWRkIHRoaXMgZGlyZWN0b3J5IHRoZSB0 aGUgc2VhcmNoIHBhdGguCisgICAgICAgIGxpYnBxX3BhdGggPSBvcy5wYXRoLmpvaW4oYmluZGly LCBuYW1lKQorICAgICAgICBsaWIgPSBjdHlwZXMuQ0RMTChsaWJwcV9wYXRoKQorICAgIGVsc2U6 CisgICAgICAgIGxpYnBxX3BhdGggPSBvcy5wYXRoLmpvaW4obGliZGlyLCBuYW1lKQorICAgICAg ICBsaWIgPSBjdHlwZXMuQ0RMTChsaWJwcV9wYXRoKQorCisgICAgIworICAgICMgRnVuY3Rpb24g UHJvdG90eXBlcworICAgICMKKworICAgIGxpYi5QUWNvbm5lY3RkYi5yZXN0eXBlID0gX1BHY29u bl9wCisgICAgbGliLlBRY29ubmVjdGRiLmFyZ3R5cGVzID0gW2N0eXBlcy5jX2NoYXJfcF0KKwor ICAgIGxpYi5QUXN0YXR1cy5yZXN0eXBlID0gY3R5cGVzLmNfaW50CisgICAgbGliLlBRc3RhdHVz LmFyZ3R5cGVzID0gW19QR2Nvbm5fcF0KKworICAgIGxpYi5QUWV4ZWMucmVzdHlwZSA9IF9QR3Jl c3VsdF9wCisgICAgbGliLlBRZXhlYy5hcmd0eXBlcyA9IFtfUEdjb25uX3AsIGN0eXBlcy5jX2No YXJfcF0KKworICAgIGxpYi5QUXJlc3VsdFN0YXR1cy5yZXN0eXBlID0gY3R5cGVzLmNfaW50Cisg ICAgbGliLlBRcmVzdWx0U3RhdHVzLmFyZ3R5cGVzID0gW19QR3Jlc3VsdF9wXQorCisgICAgbGli LlBRY2xlYXIucmVzdHlwZSA9IE5vbmUKKyAgICBsaWIuUFFjbGVhci5hcmd0eXBlcyA9IFtfUEdy ZXN1bHRfcF0KKworICAgIGxpYi5QUWVycm9yTWVzc2FnZS5yZXN0eXBlID0gY3R5cGVzLmNfY2hh cl9wCisgICAgbGliLlBRZXJyb3JNZXNzYWdlLmFyZ3R5cGVzID0gW19QR2Nvbm5fcF0KKworICAg IGxpYi5QUWZpbmlzaC5yZXN0eXBlID0gTm9uZQorICAgIGxpYi5QUWZpbmlzaC5hcmd0eXBlcyA9 IFtfUEdjb25uX3BdCisKKyAgICBsaWIuUFFyZXN1bHRFcnJvck1lc3NhZ2UucmVzdHlwZSA9IGN0 eXBlcy5jX2NoYXJfcAorICAgIGxpYi5QUXJlc3VsdEVycm9yTWVzc2FnZS5hcmd0eXBlcyA9IFtf UEdyZXN1bHRfcF0KKworICAgIGxpYi5QUW50dXBsZXMucmVzdHlwZSA9IGN0eXBlcy5jX2ludAor ICAgIGxpYi5QUW50dXBsZXMuYXJndHlwZXMgPSBbX1BHcmVzdWx0X3BdCisKKyAgICBsaWIuUFFu ZmllbGRzLnJlc3R5cGUgPSBjdHlwZXMuY19pbnQKKyAgICBsaWIuUFFuZmllbGRzLmFyZ3R5cGVz ID0gW19QR3Jlc3VsdF9wXQorCisgICAgbGliLlBRZ2V0dmFsdWUucmVzdHlwZSA9IGN0eXBlcy5j X2NoYXJfcAorICAgIGxpYi5QUWdldHZhbHVlLmFyZ3R5cGVzID0gW19QR3Jlc3VsdF9wLCBjdHlw ZXMuY19pbnQsIGN0eXBlcy5jX2ludF0KKworICAgIGxpYi5QUWdldGlzbnVsbC5yZXN0eXBlID0g Y3R5cGVzLmNfaW50CisgICAgbGliLlBRZ2V0aXNudWxsLmFyZ3R5cGVzID0gW19QR3Jlc3VsdF9w LCBjdHlwZXMuY19pbnQsIGN0eXBlcy5jX2ludF0KKworICAgIGxpYi5QUWZ0eXBlLnJlc3R5cGUg PSBjdHlwZXMuY191aW50CisgICAgbGliLlBRZnR5cGUuYXJndHlwZXMgPSBbX1BHcmVzdWx0X3As IGN0eXBlcy5jX2ludF0KKworICAgIGxpYi5QUXJlc3VsdEVycm9yRmllbGQucmVzdHlwZSA9IGN0 eXBlcy5jX2NoYXJfcAorICAgIGxpYi5QUXJlc3VsdEVycm9yRmllbGQuYXJndHlwZXMgPSBbX1BH cmVzdWx0X3AsIGN0eXBlcy5jX2ludF0KKworICAgIHJldHVybiBsaWIKKworCisjIFBvc3RncmVT UUwgdHlwZSBPSURzIGFuZCBjb252ZXJzaW9uIHN5c3RlbQorIyBUeXBlIHJlZ2lzdHJ5IC0gbWFw cyBPSUQgdG8gY29udmVydGVyIGZ1bmN0aW9uCitfdHlwZV9jb252ZXJ0ZXJzOiBEaWN0W2ludCwg Q2FsbGFibGVbW3N0cl0sIEFueV1dID0ge30KK19hcnJheV90b19lbGVtX21hcDogRGljdFtpbnQs IGludF0gPSB7fQorCisKK2RlZiByZWdpc3Rlcl90eXBlX2luZm8oCisgICAgbmFtZTogc3RyLCBv aWQ6IGludCwgYXJyYXlfb2lkOiBpbnQsIGNvbnZlcnRlcjogQ2FsbGFibGVbW3N0cl0sIEFueV0K Kyk6CisgICAgIiIiCisgICAgUmVnaXN0ZXIgYSBQb3N0Z3JlU1FMIHR5cGUgd2l0aCBpdHMgT0lE LCBhcnJheSBPSUQsIGFuZCBjb252ZXJzaW9uIGZ1bmN0aW9uLgorCisgICAgVXNhZ2U6CisgICAg ICAgIHJlZ2lzdGVyX3R5cGVfaW5mbygiYm9vbCIsIDE2LCAxMDAwLCBsYW1iZGEgdjogdiA9PSAi dCIpCisgICAgIiIiCisgICAgX3R5cGVfY29udmVydGVyc1tvaWRdID0gY29udmVydGVyCisgICAg aWYgYXJyYXlfb2lkIGlzIG5vdCBOb25lOgorICAgICAgICBfYXJyYXlfdG9fZWxlbV9tYXBbYXJy YXlfb2lkXSA9IG9pZAorCisKK2RlZiBfcGFyc2VfYXJyYXkodmFsdWU6IHN0ciwgZWxlbV9vaWQ6 IGludCk6CisgICAgIiIiUGFyc2UgUG9zdGdyZVNRTCBhcnJheSBzeW50YXggaW50byBuZXN0ZWQg UHl0aG9uIGxpc3RzLiIiIgorICAgIHN0YWNrOiBsaXN0W2xpc3RdID0gW10KKyAgICBjdXJyZW50 X2VsZW1lbnQ6IGxpc3Rbc3RyXSA9IFtdCisgICAgaW5fcXVvdGVzID0gRmFsc2UKKyAgICB3YXNf cXVvdGVkID0gRmFsc2UKKyAgICBwb3MgPSAwCisKKyAgICB3aGlsZSBwb3MgPCBsZW4odmFsdWUp OgorICAgICAgICBjaGFyID0gdmFsdWVbcG9zXQorCisgICAgICAgIGlmIGluX3F1b3RlczoKKyAg ICAgICAgICAgIGlmIGNoYXIgPT0gIlxcIjoKKyAgICAgICAgICAgICAgICBuZXh0X2NoYXIgPSB2 YWx1ZVtwb3MgKyAxXQorICAgICAgICAgICAgICAgIGlmIG5leHRfY2hhciBub3QgaW4gJyJcXCc6 CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ09ubHkgXFwi IGFuZCBcXFxcIGVzY2FwZXMgYXJlIHN1cHBvcnRlZCcpCisgICAgICAgICAgICAgICAgY3VycmVu dF9lbGVtZW50LmFwcGVuZChuZXh0X2NoYXIpCisgICAgICAgICAgICAgICAgcG9zICs9IDIKKyAg ICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZWxpZiBjaGFyID09ICciJzoKKyAg ICAgICAgICAgICAgICBpbl9xdW90ZXMgPSBGYWxzZQorICAgICAgICAgICAgZWxzZToKKyAgICAg ICAgICAgICAgICBjdXJyZW50X2VsZW1lbnQuYXBwZW5kKGNoYXIpCisgICAgICAgIGVsaWYgY2hh ciA9PSAnIic6CisgICAgICAgICAgICBpbl9xdW90ZXMgPSBUcnVlCisgICAgICAgICAgICB3YXNf cXVvdGVkID0gVHJ1ZQorICAgICAgICBlbGlmIGNoYXIgPT0gInsiOgorICAgICAgICAgICAgc3Rh Y2suYXBwZW5kKFtdKQorICAgICAgICBlbGlmIGNoYXIgaW4gIix9IjoKKyAgICAgICAgICAgIGlm IGN1cnJlbnRfZWxlbWVudCBvciB3YXNfcXVvdGVkOgorICAgICAgICAgICAgICAgIGVsZW0gPSAi Ii5qb2luKGN1cnJlbnRfZWxlbWVudCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgd2FzX3F1b3Rl ZCBhbmQgZWxlbSA9PSAiTlVMTCI6CisgICAgICAgICAgICAgICAgICAgIHN0YWNrWy0xXS5hcHBl bmQoTm9uZSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzdGFj a1stMV0uYXBwZW5kKF9jb252ZXJ0X3BnX3ZhbHVlKGVsZW0sIGVsZW1fb2lkKSkKKyAgICAgICAg ICAgICAgICBjdXJyZW50X2VsZW1lbnQgPSBbXQorICAgICAgICAgICAgICAgIHdhc19xdW90ZWQg PSBGYWxzZQorICAgICAgICAgICAgaWYgY2hhciA9PSAifSI6CisgICAgICAgICAgICAgICAgY29t cGxldGVkID0gc3RhY2sucG9wKCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc3RhY2s6CisgICAg ICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0ZWQKKyAgICAgICAgICAgICAgICBzdGFja1st MV0uYXBwZW5kKGNvbXBsZXRlZCkKKyAgICAgICAgZWxpZiBjaGFyICE9ICIgIjoKKyAgICAgICAg ICAgIGN1cnJlbnRfZWxlbWVudC5hcHBlbmQoY2hhcikKKyAgICAgICAgcG9zICs9IDEKKworICAg IHJhaXNlIFZhbHVlRXJyb3IoZiJNYWxmb3JtZWQgYXJyYXkgbGl0ZXJhbDoge3ZhbHVlfSIpCisK KworIyBSZWdpc3RlciBzdGFuZGFyZCBQb3N0Z3JlU1FMIHR5cGVzIHRoYXQgd2UnbGwgbGlrZWx5 IGVuY291bnRlciBpbiB0ZXN0cworcmVnaXN0ZXJfdHlwZV9pbmZvKCJib29sIiwgMTYsIDEwMDAs IGxhbWJkYSB2OiB2ID09ICJ0IikKK3JlZ2lzdGVyX3R5cGVfaW5mbygiaW50MiIsIDIxLCAxMDA1 LCBpbnQpCityZWdpc3Rlcl90eXBlX2luZm8oImludDQiLCAyMywgMTAwNywgaW50KQorcmVnaXN0 ZXJfdHlwZV9pbmZvKCJpbnQ4IiwgMjAsIDEwMTYsIGludCkKK3JlZ2lzdGVyX3R5cGVfaW5mbygi ZmxvYXQ0IiwgNzAwLCAxMDIxLCBmbG9hdCkKK3JlZ2lzdGVyX3R5cGVfaW5mbygiZmxvYXQ4Iiwg NzAxLCAxMDIyLCBmbG9hdCkKK3JlZ2lzdGVyX3R5cGVfaW5mbygibnVtZXJpYyIsIDE3MDAsIDEy MzEsIGRlY2ltYWwuRGVjaW1hbCkKK3JlZ2lzdGVyX3R5cGVfaW5mbygidGV4dCIsIDI1LCAxMDA5 LCBzdHIpCityZWdpc3Rlcl90eXBlX2luZm8oInZhcmNoYXIiLCAxMDQzLCAxMDE1LCBzdHIpCity ZWdpc3Rlcl90eXBlX2luZm8oImRhdGUiLCAxMDgyLCAxMTgyLCBkYXRldGltZS5kYXRlLmZyb21p c29mb3JtYXQpCityZWdpc3Rlcl90eXBlX2luZm8oInRpbWUiLCAxMDgzLCAxMTgzLCBkYXRldGlt ZS50aW1lLmZyb21pc29mb3JtYXQpCityZWdpc3Rlcl90eXBlX2luZm8oInRpbWVzdGFtcCIsIDEx MTQsIDExMTUsIGRhdGV0aW1lLmRhdGV0aW1lLmZyb21pc29mb3JtYXQpCityZWdpc3Rlcl90eXBl X2luZm8oInRpbWVzdGFtcHR6IiwgMTE4NCwgMTE4NSwgZGF0ZXRpbWUuZGF0ZXRpbWUuZnJvbWlz b2Zvcm1hdCkKK3JlZ2lzdGVyX3R5cGVfaW5mbygidXVpZCIsIDI5NTAsIDI5NTEsIHV1aWQuVVVJ RCkKK3JlZ2lzdGVyX3R5cGVfaW5mbygianNvbiIsIDExNCwgMTk5LCBqc29uLmxvYWRzKQorcmVn aXN0ZXJfdHlwZV9pbmZvKCJqc29uYiIsIDM4MDIsIDM4MDcsIGpzb24ubG9hZHMpCisKKworZGVm IF9jb252ZXJ0X3BnX3ZhbHVlKHZhbHVlOiBzdHIsIHR5cGVfb2lkOiBpbnQpIC0+IEFueToKKyAg ICAiIiIKKyAgICBDb252ZXJ0IFBvc3RncmVTUUwgc3RyaW5nIHZhbHVlIHRvIGFwcHJvcHJpYXRl IFB5dGhvbiB0eXBlIGJhc2VkIG9uIE9JRC4KKyAgICBVc2VzIHRoZSByZWdpc3RlcmVkIHR5cGUg Y29udmVydGVycyBmcm9tIHJlZ2lzdGVyX3R5cGVfaW5mbygpLgorICAgICIiIgorICAgICMgQ2hl Y2sgaWYgaXQncyBhbiBhcnJheSB0eXBlCisgICAgaWYgdHlwZV9vaWQgaW4gX2FycmF5X3RvX2Vs ZW1fbWFwOgorICAgICAgICBlbGVtX29pZCA9IF9hcnJheV90b19lbGVtX21hcFt0eXBlX29pZF0K KyAgICAgICAgcmV0dXJuIF9wYXJzZV9hcnJheSh2YWx1ZSwgZWxlbV9vaWQpCisKKyAgICAjIFVz ZSByZWdpc3RlcmVkIGNvbnZlcnRlciBpZiBhdmFpbGFibGUKKyAgICBjb252ZXJ0ZXIgPSBfdHlw ZV9jb252ZXJ0ZXJzLmdldCh0eXBlX29pZCkKKyAgICBpZiBjb252ZXJ0ZXI6CisgICAgICAgIHJl dHVybiBjb252ZXJ0ZXIodmFsdWUpCisKKyAgICAjIFVua25vd24gdHlwZXMgLSByZXR1cm4gYXMg c3RyaW5nCisgICAgcmV0dXJuIHZhbHVlCisKKworZGVmIHNpbXBsaWZ5X3F1ZXJ5X3Jlc3VsdHMo cmVzdWx0cykgLT4gQW55OgorICAgICIiIgorICAgIFNpbXBsaWZ5IHRoZSByZXN1bHRzIG9mIGEg cXVlcnkgc28gdGhhdCB0aGUgY2FsbGVyIGRvZXNuJ3QgaGF2ZSB0byB1bnBhY2sKKyAgICBsaXN0 cyBhbmQgdHVwbGVzIG9mIGxlbmd0aCAxLgorICAgICIiIgorICAgIGlmIGxlbihyZXN1bHRzKSA9 PSAxOgorICAgICAgICByb3cgPSByZXN1bHRzWzBdCisgICAgICAgIGlmIGxlbihyb3cpID09IDE6 CisgICAgICAgICAgICAjIElmIHRoZXJlJ3Mgb25seSBhIHNpbmdsZSBjZWxsLCBqdXN0IHJldHVy biB0aGUgdmFsdWUKKyAgICAgICAgICAgIHJldHVybiByb3dbMF0KKyAgICAgICAgIyBJZiB0aGVy ZSdzIG9ubHkgYSBzaW5nbGUgcm93LCBqdXN0IHJldHVybiB0aGF0IHJvdworICAgICAgICByZXR1 cm4gcm93CisKKyAgICBpZiBsZW4ocmVzdWx0cykgIT0gMCBhbmQgbGVuKHJlc3VsdHNbMF0pID09 IDE6CisgICAgICAgICMgSWYgdGhlcmUncyBvbmx5IGEgc2luZ2xlIGNvbHVtbiwgcmV0dXJuIGFu IGFycmF5IG9mIHZhbHVlcworICAgICAgICByZXR1cm4gW3Jvd1swXSBmb3Igcm93IGluIHJlc3Vs dHNdCisKKyAgICAjIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSByb3dzIGFuZCBjb2x1bW5zLCByZXR1 cm4gdGhlIHJlc3VsdHMgYXMgaXMKKyAgICByZXR1cm4gcmVzdWx0cworCisKK2NsYXNzIFBHcmVz dWx0KGNvbnRleHRsaWIuQWJzdHJhY3RDb250ZXh0TWFuYWdlcik6CisgICAgIiIiV3JhcHMgYSBy YXcgX1BHcmVzdWx0X3Agd2l0aCBhIG1vcmUgZnJpZW5kbHkgaW50ZXJmYWNlLiIiIgorCisgICAg ZGVmIF9faW5pdF9fKHNlbGYsIGxpYjogY3R5cGVzLkNETEwsIHJlczogX1BHcmVzdWx0X3ApOgor ICAgICAgICBzZWxmLl9saWIgPSBsaWIKKyAgICAgICAgc2VsZi5fcmVzID0gcmVzCisKKyAgICBk ZWYgX19leGl0X18oc2VsZiwgKmV4Yyk6CisgICAgICAgIHNlbGYuX2xpYi5QUWNsZWFyKHNlbGYu X3JlcykKKyAgICAgICAgc2VsZi5fcmVzID0gTm9uZQorCisgICAgZGVmIHN0YXR1cyhzZWxmKSAt PiBFeGVjU3RhdHVzOgorICAgICAgICByZXR1cm4gRXhlY1N0YXR1cyhzZWxmLl9saWIuUFFyZXN1 bHRTdGF0dXMoc2VsZi5fcmVzKSkKKworICAgIGRlZiBlcnJvcl9tZXNzYWdlKHNlbGYpOgorICAg ICAgICAiIiJSZXR1cm5zIHRoZSBlcnJvciBtZXNzYWdlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJl c3VsdC4iIiIKKyAgICAgICAgbXNnID0gc2VsZi5fbGliLlBRcmVzdWx0RXJyb3JNZXNzYWdlKHNl bGYuX3JlcykKKyAgICAgICAgcmV0dXJuIG1zZy5kZWNvZGUoKSBpZiBtc2cgZWxzZSAiIgorCisg ICAgZGVmIF9nZXRfZXJyb3JfZmllbGQoc2VsZiwgZmllbGQ6IERpYWdGaWVsZCkgLT4gT3B0aW9u YWxbc3RyXToKKyAgICAgICAgIiIiR2V0IGFuIGVycm9yIGZpZWxkIGZyb20gdGhlIHJlc3VsdCB1 c2luZyBQUXJlc3VsdEVycm9yRmllbGQuIiIiCisgICAgICAgIHZhbCA9IHNlbGYuX2xpYi5QUXJl c3VsdEVycm9yRmllbGQoc2VsZi5fcmVzLCBpbnQoZmllbGQpKQorICAgICAgICByZXR1cm4gdmFs LmRlY29kZSgpIGlmIHZhbCBlbHNlIE5vbmUKKworICAgIGRlZiByYWlzZV9lcnJvcihzZWxmKSAt PiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgUmFpc2VzIExpYnBxRXJyb3Igd2l0aCBkaWFn bm9zdGljIGluZm9ybWF0aW9uIGZyb20gdGhlIHJlc3VsdC4KKyAgICAgICAgIiIiCisgICAgICAg IGlmIG5vdCBzZWxmLl9yZXM6CisgICAgICAgICAgICByYWlzZSBMaWJwcUVycm9yKCJxdWVyeSBm YWlsZWQ6IG91dCBvZiBtZW1vcnkgb3IgY29ubmVjdGlvbiBsb3N0IikKKworICAgICAgICBzcWxz dGF0ZSA9IHNlbGYuX2dldF9lcnJvcl9maWVsZChEaWFnRmllbGQuU1FMU1RBVEUpCisgICAgICAg IHByaW1hcnkgPSBzZWxmLl9nZXRfZXJyb3JfZmllbGQoRGlhZ0ZpZWxkLk1FU1NBR0VfUFJJTUFS WSkKKyAgICAgICAgZGV0YWlsID0gc2VsZi5fZ2V0X2Vycm9yX2ZpZWxkKERpYWdGaWVsZC5NRVNT QUdFX0RFVEFJTCkKKyAgICAgICAgaGludCA9IHNlbGYuX2dldF9lcnJvcl9maWVsZChEaWFnRmll bGQuTUVTU0FHRV9ISU5UKQorICAgICAgICBzZXZlcml0eSA9IHNlbGYuX2dldF9lcnJvcl9maWVs ZChEaWFnRmllbGQuU0VWRVJJVFkpCisgICAgICAgIHNjaGVtYV9uYW1lID0gc2VsZi5fZ2V0X2Vy cm9yX2ZpZWxkKERpYWdGaWVsZC5TQ0hFTUFfTkFNRSkKKyAgICAgICAgdGFibGVfbmFtZSA9IHNl bGYuX2dldF9lcnJvcl9maWVsZChEaWFnRmllbGQuVEFCTEVfTkFNRSkKKyAgICAgICAgY29sdW1u X25hbWUgPSBzZWxmLl9nZXRfZXJyb3JfZmllbGQoRGlhZ0ZpZWxkLkNPTFVNTl9OQU1FKQorICAg ICAgICBkYXRhdHlwZV9uYW1lID0gc2VsZi5fZ2V0X2Vycm9yX2ZpZWxkKERpYWdGaWVsZC5EQVRB VFlQRV9OQU1FKQorICAgICAgICBjb25zdHJhaW50X25hbWUgPSBzZWxmLl9nZXRfZXJyb3JfZmll bGQoRGlhZ0ZpZWxkLkNPTlNUUkFJTlRfTkFNRSkKKyAgICAgICAgY29udGV4dCA9IHNlbGYuX2dl dF9lcnJvcl9maWVsZChEaWFnRmllbGQuQ09OVEVYVCkKKworICAgICAgICBwb3NpdGlvbl9zdHIg PSBzZWxmLl9nZXRfZXJyb3JfZmllbGQoRGlhZ0ZpZWxkLlNUQVRFTUVOVF9QT1NJVElPTikKKyAg ICAgICAgcG9zaXRpb24gPSBpbnQocG9zaXRpb25fc3RyKSBpZiBwb3NpdGlvbl9zdHIgZWxzZSBO b25lCisKKyAgICAgICAgcmFpc2UgTGlicHFFcnJvcigKKyAgICAgICAgICAgIHByaW1hcnkgb3Ig c2VsZi5lcnJvcl9tZXNzYWdlKCksCisgICAgICAgICAgICBzcWxzdGF0ZT1zcWxzdGF0ZSwKKyAg ICAgICAgICAgIHNldmVyaXR5PXNldmVyaXR5LAorICAgICAgICAgICAgcHJpbWFyeT1wcmltYXJ5 LAorICAgICAgICAgICAgZGV0YWlsPWRldGFpbCwKKyAgICAgICAgICAgIGhpbnQ9aGludCwKKyAg ICAgICAgICAgIHNjaGVtYV9uYW1lPXNjaGVtYV9uYW1lLAorICAgICAgICAgICAgdGFibGVfbmFt ZT10YWJsZV9uYW1lLAorICAgICAgICAgICAgY29sdW1uX25hbWU9Y29sdW1uX25hbWUsCisgICAg ICAgICAgICBkYXRhdHlwZV9uYW1lPWRhdGF0eXBlX25hbWUsCisgICAgICAgICAgICBjb25zdHJh aW50X25hbWU9Y29uc3RyYWludF9uYW1lLAorICAgICAgICAgICAgcG9zaXRpb249cG9zaXRpb24s CisgICAgICAgICAgICBjb250ZXh0PWNvbnRleHQsCisgICAgICAgICkKKworICAgIGRlZiBmZXRj aF9hbGwoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBGZXRjaCBhbGwgcm93cyBhbmQgY29u dmVydCB0byBQeXRob24gdHlwZXMuCisgICAgICAgIFJldHVybnMgYSBsaXN0IG9mIHR1cGxlcywg d2l0aCB2YWx1ZXMgY29udmVydGVkIGJhc2VkIG9uIHRoZWlyIFBvc3RncmVTUUwgdHlwZS4KKyAg ICAgICAgIiIiCisgICAgICAgIG5yb3dzID0gc2VsZi5fbGliLlBRbnR1cGxlcyhzZWxmLl9yZXMp CisgICAgICAgIG5jb2xzID0gc2VsZi5fbGliLlBRbmZpZWxkcyhzZWxmLl9yZXMpCisKKyAgICAg ICAgIyBHZXQgdHlwZSBPSURzIGZvciBlYWNoIGNvbHVtbgorICAgICAgICB0eXBlX29pZHMgPSBb c2VsZi5fbGliLlBRZnR5cGUoc2VsZi5fcmVzLCBjb2wpIGZvciBjb2wgaW4gcmFuZ2UobmNvbHMp XQorCisgICAgICAgIHJlc3VsdHMgPSBbXQorICAgICAgICBmb3Igcm93IGluIHJhbmdlKG5yb3dz KToKKyAgICAgICAgICAgIHJvd19kYXRhID0gW10KKyAgICAgICAgICAgIGZvciBjb2wgaW4gcmFu Z2UobmNvbHMpOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuX2xpYi5QUWdldGlzbnVsbChzZWxm Ll9yZXMsIHJvdywgY29sKToKKyAgICAgICAgICAgICAgICAgICAgcm93X2RhdGEuYXBwZW5kKE5v bmUpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBz ZWxmLl9saWIuUFFnZXR2YWx1ZShzZWxmLl9yZXMsIHJvdywgY29sKS5kZWNvZGUoKQorICAgICAg ICAgICAgICAgICAgICByb3dfZGF0YS5hcHBlbmQoX2NvbnZlcnRfcGdfdmFsdWUodmFsdWUsIHR5 cGVfb2lkc1tjb2xdKSkKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHR1cGxlKHJvd19kYXRh KSkKKworICAgICAgICByZXR1cm4gcmVzdWx0cworCisKK2NsYXNzIFBHY29ubihjb250ZXh0bGli LkFic3RyYWN0Q29udGV4dE1hbmFnZXIpOgorICAgICIiIgorICAgIFdyYXBzIGEgcmF3IF9QR2Nv bm5fcCB3aXRoIGEgbW9yZSBmcmllbmRseSBpbnRlcmZhY2UuIFRoaXMgaXMganVzdCBhCisgICAg c3R1YjsgaXQncyBleHBlY3RlZCB0byBncm93LgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9f KAorICAgICAgICBzZWxmLAorICAgICAgICBsaWI6IGN0eXBlcy5DRExMLAorICAgICAgICBoYW5k bGU6IF9QR2Nvbm5fcCwKKyAgICAgICAgc3RhY2s6IGNvbnRleHRsaWIuRXhpdFN0YWNrLAorICAg ICk6CisgICAgICAgIHNlbGYuX2xpYiA9IGxpYgorICAgICAgICBzZWxmLl9oYW5kbGUgPSBoYW5k bGUKKyAgICAgICAgc2VsZi5fc3RhY2sgPSBzdGFjaworCisgICAgZGVmIF9fZXhpdF9fKHNlbGYs ICpleGMpOgorICAgICAgICBzZWxmLl9saWIuUFFmaW5pc2goc2VsZi5faGFuZGxlKQorICAgICAg ICBzZWxmLl9oYW5kbGUgPSBOb25lCisKKyAgICBkZWYgZXhlYyhzZWxmLCBxdWVyeTogc3RyKToK KyAgICAgICAgIiIiCisgICAgICAgIEV4ZWN1dGVzIGEgcXVlcnkgdmlhIFBRZXhlYygpIGFuZCBy ZXR1cm5zIGEgUEdyZXN1bHQuCisgICAgICAgICIiIgorICAgICAgICByZXMgPSBzZWxmLl9saWIu UFFleGVjKHNlbGYuX2hhbmRsZSwgcXVlcnkuZW5jb2RlKCkpCisgICAgICAgIHJldHVybiBzZWxm Ll9zdGFjay5lbnRlcl9jb250ZXh0KFBHcmVzdWx0KHNlbGYuX2xpYiwgcmVzKSkKKworICAgIGRl ZiBzcWwoc2VsZiwgcXVlcnk6IHN0cik6CisgICAgICAgICIiIgorICAgICAgICBFeGVjdXRlcyBh IHF1ZXJ5IGFuZCByYWlzZXMgYW4gZXhjZXB0aW9uIGlmIGl0IGZhaWxzLgorICAgICAgICBSZXR1 cm5zIHRoZSBxdWVyeSByZXN1bHRzIHdpdGggYXV0b21hdGljIHR5cGUgY29udmVyc2lvbiBhbmQg c2ltcGxpZmljYXRpb24uCisgICAgICAgIEZvciBjb21tYW5kcyB0aGF0IGRvbid0IHJldHVybiBk YXRhIChJTlNFUlQsIFVQREFURSwgZXRjLiksIHJldHVybnMgTm9uZS4KKworICAgICAgICBFeGFt cGxlczoKKyAgICAgICAgLSBTRUxFQ1QgMSAtPiAxCisgICAgICAgIC0gU0VMRUNUIDEsIDIgLT4g KDEsIDIpCisgICAgICAgIC0gU0VMRUNUICogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMykgLT4g WzEsIDIsIDNdCisgICAgICAgIC0gU0VMRUNUICogRlJPTSAoVkFMVUVTICgxLCAnYScpLCAoMiwg J2InKSkgdCAtPiBbKDEsICdhJyksICgyLCAnYicpXQorICAgICAgICAtIENSRUFURSBUQUJMRSAu Li4gLT4gTm9uZQorICAgICAgICAtIElOU0VSVCBJTlRPIC4uLiAtPiBOb25lCisgICAgICAgICIi IgorICAgICAgICByZXMgPSBzZWxmLmV4ZWMocXVlcnkpCisgICAgICAgIHN0YXR1cyA9IHJlcy5z dGF0dXMoKQorCisgICAgICAgIGlmIHN0YXR1cyA9PSBFeGVjU3RhdHVzLlBHUkVTX0ZBVEFMX0VS Uk9SOgorICAgICAgICAgICAgcmVzLnJhaXNlX2Vycm9yKCkKKyAgICAgICAgZWxpZiBzdGF0dXMg PT0gRXhlY1N0YXR1cy5QR1JFU19DT01NQU5EX09LOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUK KyAgICAgICAgZWxpZiBzdGF0dXMgPT0gRXhlY1N0YXR1cy5QR1JFU19UVVBMRVNfT0s6CisgICAg ICAgICAgICByZXN1bHRzID0gcmVzLmZldGNoX2FsbCgpCisgICAgICAgICAgICByZXR1cm4gc2lt cGxpZnlfcXVlcnlfcmVzdWx0cyhyZXN1bHRzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg cmVzLnJhaXNlX2Vycm9yKCkKKworCitkZWYgY29ubnN0cihvcHRzOiBEaWN0W3N0ciwgQW55XSkg LT4gc3RyOgorICAgICIiIgorICAgIEZsYXR0ZW5zIHRoZSBwcm92aWRlZCBvcHRpb25zIGludG8g YSBsaWJwcSBjb25uZWN0aW9uIHN0cmluZy4gVmFsdWVzCisgICAgYXJlIGNvbnZlcnRlZCB0byBz dHIgYW5kIHF1b3RlZC9lc2NhcGVkIGFzIG5lY2Vzc2FyeS4KKyAgICAiIiIKKyAgICBzZXR0aW5n cyA9IFtdCisKKyAgICBmb3IgaywgdiBpbiBvcHRzLml0ZW1zKCk6CisgICAgICAgIHYgPSBzdHIo dikKKyAgICAgICAgaWYgbm90IHY6CisgICAgICAgICAgICB2ID0gIicnIgorICAgICAgICBlbHNl OgorICAgICAgICAgICAgdiA9IHYucmVwbGFjZSgiXFwiLCAiXFxcXCIpCisgICAgICAgICAgICB2 ID0gdi5yZXBsYWNlKCInIiwgIlxcJyIpCisKKyAgICAgICAgICAgIGlmICIgIiBpbiB2OgorICAg ICAgICAgICAgICAgIHYgPSBmIid7dn0nIgorCisgICAgICAgIHNldHRpbmdzLmFwcGVuZChmIntr fT17dn0iKQorCisgICAgcmV0dXJuICIgIi5qb2luKHNldHRpbmdzKQorCisKK2RlZiBjb25uZWN0 KAorICAgIGxpYnBxX2hhbmRsZTogY3R5cGVzLkNETEwsCisgICAgc3RhY2s6IGNvbnRleHRsaWIu RXhpdFN0YWNrLAorICAgIHJlbWFpbmluZ190aW1lb3V0X2ZuOiBDYWxsYWJsZVtbXSwgZmxvYXRd LAorICAgICoqb3B0cywKKykgLT4gUEdjb25uOgorICAgICIiIgorICAgIENvbm5lY3RzIHRvIGEg c2VydmVyLCB1c2luZyB0aGUgZ2l2ZW4gY29ubmVjdGlvbiBvcHRpb25zLCBhbmQKKyAgICByZXR1 cm5zIGEgUEdjb25uIG9iamVjdCB3cmFwcGluZyB0aGUgY29ubmVjdGlvbiBoYW5kbGUuIEEKKyAg ICBmYWlsdXJlIHdpbGwgcmFpc2UgTGlicHFFcnJvci4KKworICAgIENvbm5lY3Rpb25zIGhvbm9y IFBHX1RFU1RfVElNRU9VVF9ERUZBVUxUIHVubGVzcyBjb25uZWN0X3RpbWVvdXQgaXMKKyAgICBl eHBsaWNpdGx5IG92ZXJyaWRkZW4gaW4gb3B0cy4KKworICAgIEFyZ3M6CisgICAgICAgIGxpYnBx X2hhbmRsZTogY3R5cGVzLkNETEwgaGFuZGxlIHRvIGxpYnBxIGxpYnJhcnkKKyAgICAgICAgc3Rh Y2s6IEV4aXRTdGFjayBmb3IgbWFuYWdpbmcgY29ubmVjdGlvbiBjbGVhbnVwCisgICAgICAgIHJl bWFpbmluZ190aW1lb3V0X2ZuOiBGdW5jdGlvbiB0aGF0IHJldHVybnMgcmVtYWluaW5nIHRpbWVv dXQgaW4gc2Vjb25kcworICAgICAgICAqKm9wdHM6IENvbm5lY3Rpb24gb3B0aW9ucyAoaG9zdCwg cG9ydCwgZGJuYW1lLCBldGMuKQorCisgICAgUmV0dXJuczoKKyAgICAgICAgUEdjb25uOiBDb25u ZWN0ZWQgZGF0YWJhc2UgY29ubmVjdGlvbgorCisgICAgUmFpc2VzOgorICAgICAgICBMaWJwcUVy cm9yOiBJZiBjb25uZWN0aW9uIGZhaWxzCisgICAgIiIiCisKKyAgICBpZiAiY29ubmVjdF90aW1l b3V0IiBub3QgaW4gb3B0czoKKyAgICAgICAgdCA9IGludChyZW1haW5pbmdfdGltZW91dF9mbigp KQorICAgICAgICBvcHRzWyJjb25uZWN0X3RpbWVvdXQiXSA9IG1heCh0LCAxKQorCisgICAgY29u bl9wID0gbGlicHFfaGFuZGxlLlBRY29ubmVjdGRiKGNvbm5zdHIob3B0cykuZW5jb2RlKCkpCisK KyAgICAjIENoZWNrIGNvbm5lY3Rpb24gc3RhdHVzIGJlZm9yZSBhZGRpbmcgdG8gc3RhY2sKKyAg ICBpZiBsaWJwcV9oYW5kbGUuUFFzdGF0dXMoY29ubl9wKSAhPSBDb25uZWN0aW9uU3RhdHVzLkNP Tk5FQ1RJT05fT0s6CisgICAgICAgIGVycm9yX21zZyA9IGxpYnBxX2hhbmRsZS5QUWVycm9yTWVz c2FnZShjb25uX3ApLmRlY29kZSgpCisgICAgICAgICMgTWFudWFsbHkgY2xvc2UgdGhlIGZhaWxl ZCBjb25uZWN0aW9uCisgICAgICAgIGxpYnBxX2hhbmRsZS5QUWZpbmlzaChjb25uX3ApCisgICAg ICAgIHJhaXNlIExpYnBxRXJyb3IoZXJyb3JfbXNnKQorCisgICAgIyBDb25uZWN0aW9uIHN1Y2Nl ZWRlZCAtIGFkZCB0byBzdGFjayBmb3IgY2xlYW51cAorICAgIGNvbm4gPSBzdGFjay5lbnRlcl9j b250ZXh0KFBHY29ubihsaWJwcV9oYW5kbGUsIGNvbm5fcCwgc3RhY2s9c3RhY2spKQorICAgIHJl dHVybiBjb25uCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9weXRlc3QvbGlicHEvZXJyb3JzLnB5IGIv c3JjL3Rlc3QvcHl0ZXN0L2xpYnBxL2Vycm9ycy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uYzY2NWI2NjNlMjIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9w eXRlc3QvbGlicHEvZXJyb3JzLnB5CkBAIC0wLDAgKzEsNjIgQEAKKyMgQ29weXJpZ2h0IChjKSAy MDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisiIiIKK0V4Y2VwdGlv biBjbGFzc2VzIGZvciBsaWJwcSBlcnJvcnMuCisiIiIKKworZnJvbSB0eXBpbmcgaW1wb3J0IE9w dGlvbmFsCisKKworY2xhc3MgTGlicHFFcnJvcihSdW50aW1lRXJyb3IpOgorICAgICIiIkV4Y2Vw dGlvbiBmb3IgbGlicHEgZXJyb3JzIHdpdGggUG9zdGdyZVNRTCBkaWFnbm9zdGljIGZpZWxkcy4i IiIKKworICAgIHNxbHN0YXRlOiBPcHRpb25hbFtzdHJdCisgICAgc2V2ZXJpdHk6IE9wdGlvbmFs W3N0cl0KKyAgICBwcmltYXJ5OiBPcHRpb25hbFtzdHJdCisgICAgZGV0YWlsOiBPcHRpb25hbFtz dHJdCisgICAgaGludDogT3B0aW9uYWxbc3RyXQorICAgIHNjaGVtYV9uYW1lOiBPcHRpb25hbFtz dHJdCisgICAgdGFibGVfbmFtZTogT3B0aW9uYWxbc3RyXQorICAgIGNvbHVtbl9uYW1lOiBPcHRp b25hbFtzdHJdCisgICAgZGF0YXR5cGVfbmFtZTogT3B0aW9uYWxbc3RyXQorICAgIGNvbnN0cmFp bnRfbmFtZTogT3B0aW9uYWxbc3RyXQorICAgIHBvc2l0aW9uOiBPcHRpb25hbFtpbnRdCisgICAg Y29udGV4dDogT3B0aW9uYWxbc3RyXQorCisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxm LAorICAgICAgICBtZXNzYWdlOiBzdHIsCisgICAgICAgICosCisgICAgICAgIHNxbHN0YXRlOiBP cHRpb25hbFtzdHJdID0gTm9uZSwKKyAgICAgICAgc2V2ZXJpdHk6IE9wdGlvbmFsW3N0cl0gPSBO b25lLAorICAgICAgICBwcmltYXJ5OiBPcHRpb25hbFtzdHJdID0gTm9uZSwKKyAgICAgICAgZGV0 YWlsOiBPcHRpb25hbFtzdHJdID0gTm9uZSwKKyAgICAgICAgaGludDogT3B0aW9uYWxbc3RyXSA9 IE5vbmUsCisgICAgICAgIHNjaGVtYV9uYW1lOiBPcHRpb25hbFtzdHJdID0gTm9uZSwKKyAgICAg ICAgdGFibGVfbmFtZTogT3B0aW9uYWxbc3RyXSA9IE5vbmUsCisgICAgICAgIGNvbHVtbl9uYW1l OiBPcHRpb25hbFtzdHJdID0gTm9uZSwKKyAgICAgICAgZGF0YXR5cGVfbmFtZTogT3B0aW9uYWxb c3RyXSA9IE5vbmUsCisgICAgICAgIGNvbnN0cmFpbnRfbmFtZTogT3B0aW9uYWxbc3RyXSA9IE5v bmUsCisgICAgICAgIHBvc2l0aW9uOiBPcHRpb25hbFtpbnRdID0gTm9uZSwKKyAgICAgICAgY29u dGV4dDogT3B0aW9uYWxbc3RyXSA9IE5vbmUsCisgICAgKToKKyAgICAgICAgc3VwZXIoKS5fX2lu aXRfXyhtZXNzYWdlKQorICAgICAgICBzZWxmLnNxbHN0YXRlID0gc3Fsc3RhdGUKKyAgICAgICAg c2VsZi5zZXZlcml0eSA9IHNldmVyaXR5CisgICAgICAgIHNlbGYucHJpbWFyeSA9IHByaW1hcnkK KyAgICAgICAgc2VsZi5kZXRhaWwgPSBkZXRhaWwKKyAgICAgICAgc2VsZi5oaW50ID0gaGludAor ICAgICAgICBzZWxmLnNjaGVtYV9uYW1lID0gc2NoZW1hX25hbWUKKyAgICAgICAgc2VsZi50YWJs ZV9uYW1lID0gdGFibGVfbmFtZQorICAgICAgICBzZWxmLmNvbHVtbl9uYW1lID0gY29sdW1uX25h bWUKKyAgICAgICAgc2VsZi5kYXRhdHlwZV9uYW1lID0gZGF0YXR5cGVfbmFtZQorICAgICAgICBz ZWxmLmNvbnN0cmFpbnRfbmFtZSA9IGNvbnN0cmFpbnRfbmFtZQorICAgICAgICBzZWxmLnBvc2l0 aW9uID0gcG9zaXRpb24KKyAgICAgICAgc2VsZi5jb250ZXh0ID0gY29udGV4dAorCisgICAgQHBy b3BlcnR5CisgICAgZGVmIHNxbHN0YXRlX2NsYXNzKHNlbGYpIC0+IE9wdGlvbmFsW3N0cl06Cisg ICAgICAgICIiIlJldHVybnMgdGhlIDItY2hhcmFjdGVyIFNRTFNUQVRFIGNsYXNzLiIiIgorICAg ICAgICBpZiBzZWxmLnNxbHN0YXRlIGFuZCBsZW4oc2VsZi5zcWxzdGF0ZSkgPj0gMjoKKyAgICAg ICAgICAgIHJldHVybiBzZWxmLnNxbHN0YXRlWzoyXQorICAgICAgICByZXR1cm4gTm9uZQpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcHl0ZXN0L21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvcHl0ZXN0L21l c29uLmJ1aWxkCmluZGV4IGIxZjYwNjFiMzA3Li5iODZiZTkwMWU3YyAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcHl0ZXN0L21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L3B5dGVzdC9tZXNvbi5idWls ZApAQCAtMTAsNiArMTAsMTAgQEAgdGVzdHMgKz0gewogICAnYmQnOiBtZXNvbi5jdXJyZW50X2J1 aWxkX2RpcigpLAogICAncHl0ZXN0JzogewogICAgICd0ZXN0cyc6IFsKKyAgICAgICdweXQvdGVz dF9lcnJvcnMucHknLAorICAgICAgJ3B5dC90ZXN0X2xpYnBxLnB5JywKKyAgICAgICdweXQvdGVz dF9tdWx0aV9zZXJ2ZXIucHknLAorICAgICAgJ3B5dC90ZXN0X3F1ZXJ5X2hlbHBlcnMucHknLAog ICAgIF0sCiAgIH0sCiB9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9weXRlc3QvcHlwZy9fX2luaXRf Xy5weSBiL3NyYy90ZXN0L3B5dGVzdC9weXBnL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40ZWU5MTI4OWY3MAotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy90ZXN0L3B5dGVzdC9weXBnL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsMTAgQEAKKyMgQ29weXJp Z2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCitmcm9t IC5fZW52IGltcG9ydCByZXF1aXJlX3Rlc3RfZXh0cmFzLCBza2lwX3VubGVzc190ZXN0X2V4dHJh cworZnJvbSAuc2VydmVyIGltcG9ydCBQb3N0Z3Jlc1NlcnZlcgorCitfX2FsbF9fID0gWworICAg ICJyZXF1aXJlX3Rlc3RfZXh0cmFzIiwKKyAgICAic2tpcF91bmxlc3NfdGVzdF9leHRyYXMiLAor ICAgICJQb3N0Z3Jlc1NlcnZlciIsCitdCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9weXRlc3QvcHlw Zy9fZW52LnB5IGIvc3JjL3Rlc3QvcHl0ZXN0L3B5cGcvX2Vudi5weQpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzQwODdiZTMyMTIKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9weXRlc3QvcHlwZy9fZW52LnB5CkBAIC0wLDAgKzEsNzIgQEAKKyMgQ29weXJpZ2h0 IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCitpbXBvcnQg bG9nZ2luZworaW1wb3J0IG9zCisKK2ltcG9ydCBweXRlc3QKKworbG9nZ2VyID0gbG9nZ2luZy5n ZXRMb2dnZXIoX19uYW1lX18pCisKKworZGVmIF90ZXN0X2V4dHJhX3NraXBfcmVhc29uKCprZXlz OiBzdHIpIC0+IHN0cjoKKyAgICByZXR1cm4gInJlcXVpcmVzIHt9IHRvIGJlIHNldCBpbiBQR19U RVNUX0VYVFJBIi5mb3JtYXQoIiwgIi5qb2luKGtleXMpKQorCisKK2RlZiBfaGFzX3Rlc3RfZXh0 cmEoa2V5OiBzdHIpIC0+IGJvb2w6CisgICAgIiIiCisgICAgUmV0dXJucyBUcnVlIGlmIHRoZSBQ R19URVNUX0VYVFJBIGVudmlyb25tZW50IHZhcmlhYmxlIGNvbnRhaW5zIHRoZSBnaXZlbgorICAg IGtleS4KKyAgICAiIiIKKyAgICBleHRyYSA9IG9zLmdldGVudigiUEdfVEVTVF9FWFRSQSIsICIi KQorICAgIHJldHVybiBrZXkgaW4gZXh0cmEuc3BsaXQoKQorCisKK2RlZiByZXF1aXJlX3Rlc3Rf ZXh0cmFzKCprZXlzOiBzdHIpOgorICAgICIiIgorICAgIEEgY29udmVuaWVuY2UgYW5ub3RhdGlv biB3aGljaCB3aWxsIHNraXAgdGVzdHMgaWYgYWxsIG9mIHRoZSByZXF1aXJlZCBrZXlzCisgICAg YXJlIG5vdCBwcmVzZW50IGluIFBHX1RFU1RfRVhUUkEuCisKKyAgICBUbyBza2lwIGEgcGFydGlj dWxhciB0ZXN0IGZ1bmN0aW9uIG9yIGNsYXNzOgorCisgICAgICAgIEBweXBnLnJlcXVpcmVfdGVz dF9leHRyYXMoImxkYXAiKQorICAgICAgICBkZWYgdGVzdF9zb21lX2xkYXBfZmVhdHVyZSgpOgor ICAgICAgICAgICAgLi4uCisKKyAgICBUbyBza2lwIGFuIGVudGlyZSBtb2R1bGU6CisKKyAgICAg ICAgcHl0ZXN0bWFyayA9IHB5cGcucmVxdWlyZV90ZXN0X2V4dHJhKCJzc2wiLCAia2VyYmVyb3Mi KQorICAgICIiIgorICAgIHJldHVybiBweXRlc3QubWFyay5za2lwaWYoCisgICAgICAgIG5vdCBh bGwoW19oYXNfdGVzdF9leHRyYShrKSBmb3IgayBpbiBrZXlzXSksCisgICAgICAgIHJlYXNvbj1f dGVzdF9leHRyYV9za2lwX3JlYXNvbigqa2V5cyksCisgICAgKQorCisKK2RlZiBza2lwX3VubGVz c190ZXN0X2V4dHJhcygqa2V5czogc3RyKToKKyAgICAiIiIKKyAgICBTa2lwIHRoZSBjdXJyZW50 IHRlc3QvZml4dHVyZSBpZiBhbnkgb2YgdGhlIHJlcXVpcmVkIGtleXMgYXJlIG5vdCBwcmVzZW50 CisgICAgaW4gUEdfVEVTVF9FWFRSQS4gVXNlIHRoaXMgaW5zaWRlIGZpeHR1cmVzIHdoZXJlIGRl Y29yYXRvcnMgY2FuJ3QgYmUgdXNlZC4KKworICAgICAgICBAcHl0ZXN0LmZpeHR1cmUKKyAgICAg ICAgZGVmIG15X2ZpeHR1cmUoKToKKyAgICAgICAgICAgIHNraXBfdW5sZXNzX3Rlc3RfZXh0cmFz KCJsZGFwIikKKyAgICAgICAgICAgIC4uLgorICAgICIiIgorICAgIGlmIG5vdCBhbGwoW19oYXNf dGVzdF9leHRyYShrKSBmb3IgayBpbiBrZXlzXSk6CisgICAgICAgIHB5dGVzdC5za2lwKF90ZXN0 X2V4dHJhX3NraXBfcmVhc29uKCprZXlzKSkKKworCitkZWYgdGVzdF90aW1lb3V0X2RlZmF1bHQo KSAtPiBpbnQ6CisgICAgIiIiCisgICAgUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIFBHX1RFU1Rf VElNRU9VVF9ERUZBVUxUIGVudmlyb25tZW50IHZhcmlhYmxlLCBpbgorICAgIHNlY29uZHMsIG9y IDE4MCBpZiBvbmUgd2FzIG5vdCBwcm92aWRlZC4KKyAgICAiIiIKKyAgICBkZWZhdWx0ID0gb3Mu Z2V0ZW52KCJQR19URVNUX1RJTUVPVVRfREVGQVVMVCIsICIiKQorICAgIGlmIG5vdCBkZWZhdWx0 OgorICAgICAgICByZXR1cm4gMTgwCisKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBpbnQoZGVm YXVsdCkKKyAgICBleGNlcHQgVmFsdWVFcnJvciBhcyB2OgorICAgICAgICBsb2dnZXIud2Fybmlu ZygiUEdfVEVTVF9USU1FT1VUX0RFRkFVTFQgY291bGQgbm90IGJlIHBhcnNlZDogIiArIHN0cih2 KSkKKyAgICAgICAgcmV0dXJuIDE4MApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcHl0ZXN0L3B5cGcv Zml4dHVyZXMucHkgYi9zcmMvdGVzdC9weXRlc3QvcHlwZy9maXh0dXJlcy5weQpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOGMwY2I2MGRhYTUKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvdGVzdC9weXRlc3QvcHlwZy9maXh0dXJlcy5weQpAQCAtMCwwICsxLDMzNSBAQAor IyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3Vw CisKK2ltcG9ydCBvcworaW1wb3J0IGNvbnRleHRsaWIKK2ltcG9ydCBwYXRobGliCitpbXBvcnQg dGltZQorZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKKworaW1wb3J0IHB5dGVzdAorCitmcm9tIC5f ZW52IGltcG9ydCB0ZXN0X3RpbWVvdXRfZGVmYXVsdAorZnJvbSAudXRpbCBpbXBvcnQgY2FwdHVy ZQorZnJvbSAuc2VydmVyIGltcG9ydCBQb3N0Z3Jlc1NlcnZlcgorCitmcm9tIGxpYnBxIGltcG9y dCBsb2FkX2xpYnBxX2hhbmRsZSwgY29ubmVjdCBhcyBsaWJwcV9jb25uZWN0CisKKworIyBTdGFz aCBrZXkgZm9yIHRyYWNraW5nIHNlcnZlcnMgZm9yIGxvZyByZXBvcnRpbmcuCitfc2VydmVyc19r ZXkgPSBweXRlc3QuU3Rhc2hLZXlbTGlzdFtQb3N0Z3Jlc1NlcnZlcl1dKCkKKworCitkZWYgX3Jl Y29yZF9zZXJ2ZXJfZm9yX2xvZ19yZXBvcnRpbmcocmVxdWVzdCwgc2VydmVyKToKKyAgICAiIiJS ZWNvcmQgYSBzZXJ2ZXIgZm9yIGxvZyByZXBvcnRpbmcgb24gdGVzdCBmYWlsdXJlLiIiIgorICAg IGlmIF9zZXJ2ZXJzX2tleSBub3QgaW4gcmVxdWVzdC5ub2RlLnN0YXNoOgorICAgICAgICByZXF1 ZXN0Lm5vZGUuc3Rhc2hbX3NlcnZlcnNfa2V5XSA9IFtdCisgICAgcmVxdWVzdC5ub2RlLnN0YXNo W19zZXJ2ZXJzX2tleV0uYXBwZW5kKHNlcnZlcikKKworCitAcHl0ZXN0LmZpeHR1cmUKK2RlZiBy ZW1haW5pbmdfdGltZW91dCgpOgorICAgICIiIgorICAgIFRoaXMgZml4dHVyZSBwcm92aWRlcyBh IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBob3cgbXVjaCBvZiB0aGUKKyAgICBQR19URVNUX1RJTUVP VVRfREVGQVVMVCByZW1haW5zIGZvciB0aGUgY3VycmVudCB0ZXN0LCBpbiBmcmFjdGlvbmFsIHNl Y29uZHMuCisgICAgVGhpcyB2YWx1ZSBpcyBuZXZlciBsZXNzIHRoYW4gemVyby4KKworICAgIFRo aXMgZml4dHVyZSBpcyBwZXItdGVzdCwgc28gdGhlIGRlYWRsaW5lIGlzIGFsc28gcmVzZXQgb24g YSBwZXItdGVzdCBiYXNpcy4KKyAgICAiIiIKKyAgICBub3cgPSB0aW1lLm1vbm90b25pYygpCisg ICAgZGVhZGxpbmUgPSBub3cgKyB0ZXN0X3RpbWVvdXRfZGVmYXVsdCgpCisKKyAgICByZXR1cm4g bGFtYmRhOiBtYXgoZGVhZGxpbmUgLSB0aW1lLm1vbm90b25pYygpLCAwKQorCisKK0BweXRlc3Qu Zml4dHVyZShzY29wZT0ibW9kdWxlIikKK2RlZiByZW1haW5pbmdfdGltZW91dF9tb2R1bGUoKToK KyAgICAiIiIKKyAgICBTYW1lIGFzIHJlbWFpbmluZ190aW1lb3V0LCBidXQgdGhlIGRlYWRsaW5l IGlzIHNldCBvbmNlIHBlciBtb2R1bGUuCisKKyAgICBUaGlzIGZpeHR1cmUgaXMgcGVyLW1vZHVs ZSwgd2hpY2ggbWVhbnMgaXQncyBnZW5lcmFsbHkgb25seSByZWFsbHkgdXNlZnVsCisgICAgZm9y IGNvbmZpZ3VyaW5nIHRpbWVvdXRzIG9mIG9wZXJhdGlvbnMgdGhhdCBoYXBwZW4gaW4gdGhlIHNl dHVwIHBoYXNlIG9mCisgICAgYW5vdGhlciBtb2R1bGUgZml4dHVyZXMuIElmIHlvdSB1c2UgaXQg aW4gYSB0ZXN0IGl0IHdvdWxkIG1lYW4gdGhhdCBlYWNoCisgICAgc3Vic2VxdWVudCB0ZXN0IGlu IHRoZSBtb2R1bGUgZ2V0cyBhIHJlZHVjZWQgdGltZW91dC4KKyAgICAiIiIKKyAgICBub3cgPSB0 aW1lLm1vbm90b25pYygpCisgICAgZGVhZGxpbmUgPSBub3cgKyB0ZXN0X3RpbWVvdXRfZGVmYXVs dCgpCisKKyAgICByZXR1cm4gbGFtYmRhOiBtYXgoZGVhZGxpbmUgLSB0aW1lLm1vbm90b25pYygp LCAwKQorCisKK0BweXRlc3QuZml4dHVyZShzY29wZT0ic2Vzc2lvbiIpCitkZWYgbGlicHFfaGFu ZGxlKGxpYmRpciwgYmluZGlyKToKKyAgICAiIiIKKyAgICBMb2FkcyBhIGN0eXBlcyBoYW5kbGUg Zm9yIGxpYnBxLiBTb21lIGNvbW1vbiBmdW5jdGlvbiBwcm90b3R5cGVzIGFyZQorICAgIGluaXRp YWxpemVkIGZvciBnZW5lcmFsIHVzZS4KKyAgICAiIiIKKyAgICB0cnk6CisgICAgICAgIHJldHVy biBsb2FkX2xpYnBxX2hhbmRsZShsaWJkaXIsIGJpbmRpcikKKyAgICBleGNlcHQgT1NFcnJvciBh cyBlOgorICAgICAgICBpZiAid3JvbmcgRUxGIGNsYXNzIiBpbiBzdHIoZSk6CisgICAgICAgICAg ICAjIFRoaXMgaGFwcGVucyBpbiBDSSB3aGVuIHRyeWluZyB0byBsZWFkIGEgMzItYml0IGxpYnBx IGxpYnJhcnkKKyAgICAgICAgICAgICMgd2l0aCBhIDY0LWJpdCBQeXRob24KKyAgICAgICAgICAg IHB5dGVzdC5za2lwKCJsaWJwcSBhcmNoaXRlY3R1cmUgZG9lcyBub3QgbWF0Y2ggUHl0aG9uIGlu dGVycHJldGVyIikKKyAgICAgICAgcmFpc2UKKworCitAcHl0ZXN0LmZpeHR1cmUKK2RlZiBjb25u ZWN0KGxpYnBxX2hhbmRsZSwgcmVtYWluaW5nX3RpbWVvdXQpOgorICAgICIiIgorICAgIFJldHVy bnMgYSBmdW5jdGlvbiB0byBjb25uZWN0IHRvIFBvc3RncmVTUUwgdmlhIGxpYnBxLgorCisgICAg VGhlIHJldHVybmVkIGZ1bmN0aW9uIGFjY2VwdHMgY29ubmVjdGlvbiBvcHRpb25zIGFzIGtleXdv cmQgYXJndW1lbnRzCisgICAgKGhvc3QsIHBvcnQsIGRibmFtZSwgZXRjLikgYW5kIHJldHVybnMg YSBQR2Nvbm4gb2JqZWN0LiBDb25uZWN0aW9ucworICAgIGFyZSBhdXRvbWF0aWNhbGx5IGNsZWFu ZWQgdXAgYXQgdGhlIGVuZCBvZiB0aGUgdGVzdC4KKworICAgIEV4YW1wbGU6CisgICAgICAgIGNv bm4gPSBjb25uZWN0KGhvc3Q9J2xvY2FsaG9zdCcsIHBvcnQ9NTQzMiwgZGJuYW1lPSdwb3N0Z3Jl cycpCisgICAgICAgIHJlc3VsdCA9IGNvbm4uc3FsKCJTRUxFQ1QgMSIpCisgICAgIiIiCisgICAg d2l0aCBjb250ZXh0bGliLkV4aXRTdGFjaygpIGFzIHN0YWNrOgorCisgICAgICAgIGRlZiBfY29u bmVjdCgqKm9wdHMpOgorICAgICAgICAgICAgcmV0dXJuIGxpYnBxX2Nvbm5lY3QobGlicHFfaGFu ZGxlLCBzdGFjaywgcmVtYWluaW5nX3RpbWVvdXQsICoqb3B0cykKKworICAgICAgICB5aWVsZCBf Y29ubmVjdAorCisKK0BweXRlc3QuZml4dHVyZShzY29wZT0ic2Vzc2lvbiIpCitkZWYgcGdfY29u ZmlnKCk6CisgICAgIiIiCisgICAgUmV0dXJucyB0aGUgcGF0aCB0byBwZ19jb25maWcuIFVzZXMg UEdfQ09ORklHIGVudmlyb25tZW50IHZhcmlhYmxlIGlmIHNldCwKKyAgICBvdGhlcndpc2UgdXNl cyAncGdfY29uZmlnJyBmcm9tIFBBVEguCisgICAgIiIiCisgICAgcmV0dXJuIG9zLmVudmlyb24u Z2V0KCJQR19DT05GSUciLCAicGdfY29uZmlnIikKKworCitAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9 InNlc3Npb24iKQorZGVmIGJpbmRpcihwZ19jb25maWcpOgorICAgICIiIgorICAgIFJldHVybnMg dGhlIFBvc3RncmVTUUwgYmluIGRpcmVjdG9yeSB1c2luZyBwZ19jb25maWcgLS1iaW5kaXIuCisg ICAgIiIiCisgICAgcmV0dXJuIHBhdGhsaWIuUGF0aChjYXB0dXJlKHBnX2NvbmZpZywgIi0tYmlu ZGlyIikpCisKKworQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJzZXNzaW9uIikKK2RlZiBsaWJkaXIo cGdfY29uZmlnKToKKyAgICAiIiIKKyAgICBSZXR1cm5zIHRoZSBQb3N0Z3JlU1FMIGxpYiBkaXJl Y3RvcnkgdXNpbmcgcGdfY29uZmlnIC0tbGliZGlyLgorICAgICIiIgorICAgIHJldHVybiBwYXRo bGliLlBhdGgoY2FwdHVyZShwZ19jb25maWcsICItLWxpYmRpciIpKQorCisKK0BweXRlc3QuZml4 dHVyZShzY29wZT0ic2Vzc2lvbiIpCitkZWYgdG1wX2NoZWNrKHRtcF9wYXRoX2ZhY3RvcnkpIC0+ IHBhdGhsaWIuUGF0aDoKKyAgICAiIiIKKyAgICBSZXR1cm5zIHRoZSB0bXBfY2hlY2sgZGlyZWN0 b3J5IHRoYXQgc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSB0ZXN0cy4gSWYKKyAgICBURVNUREFUQURJ UiBpcyBwcm92aWRlZCwgdGhhdCB3aWxsIGJlIHVzZWQ7IG90aGVyd2lzZSBhIG5ldyB0ZW1wb3Jh cnkKKyAgICBkaXJlY3RvcnkgaXMgY3JlYXRlZCBpbiB0aGUgcHl0ZXN0IHRlbXAgcm9vdC4KKyAg ICAiIiIKKyAgICBkID0gb3MuZ2V0ZW52KCJURVNUREFUQURJUiIpCisgICAgaWYgZDoKKyAgICAg ICAgZCA9IHBhdGhsaWIuUGF0aChkKQorICAgIGVsc2U6CisgICAgICAgIGQgPSB0bXBfcGF0aF9m YWN0b3J5Lm1rdGVtcCgidG1wX2NoZWNrIikKKworICAgIHJldHVybiBkCisKKworQHB5dGVzdC5m aXh0dXJlKHNjb3BlPSJzZXNzaW9uIikKK2RlZiBkYXRhZGlyKHRtcF9jaGVjayk6CisgICAgIiIi CisgICAgUmV0dXJucyB0aGUgZGF0YSBkaXJlY3RvcnkgdG8gdXNlIGZvciB0aGUgcGcgZml4dHVy ZS4KKyAgICAiIiIKKworICAgIHJldHVybiB0bXBfY2hlY2sgLyAicGdkYXRhIgorCisKK0BweXRl c3QuZml4dHVyZShzY29wZT0ic2Vzc2lvbiIpCitkZWYgc29ja2Rpcih0bXBfcGF0aF9mYWN0b3J5 KToKKyAgICAiIiIKKyAgICBSZXR1cm5zIHRoZSBkaXJlY3RvcnkgbmFtZSB0byB1c2UgYXMgdGhl IHNlcnZlcidzIHVuaXhfc29ja2V0X2RpcmVjdG9yaWVzCisgICAgc2V0dGluZy4gTG9jYWwgY2xp ZW50IGNvbm5lY3Rpb25zIHVzZSB0aGlzIGFzIHRoZSBQR0hPU1QuCisKKyAgICBBdCB0aGUgbW9t ZW50LCB0aGlzIGlzIGFsd2F5cyBwdXQgdW5kZXIgdGhlIHB5dGVzdCB0ZW1wIHJvb3QuCisgICAg IiIiCisgICAgcmV0dXJuIHRtcF9wYXRoX2ZhY3RvcnkubWt0ZW1wKCJzb2NrZmlsZXMiKQorCisK K0BweXRlc3QuZml4dHVyZShzY29wZT0ic2Vzc2lvbiIpCitkZWYgcGdfc2VydmVyX2dsb2JhbChi aW5kaXIsIGRhdGFkaXIsIHNvY2tkaXIsIGxpYnBxX2hhbmRsZSk6CisgICAgIiIiCisgICAgU3Rh cnRzIGEgcnVubmluZyBQb3N0Z3JlcyBzZXJ2ZXIgbGlzdGVuaW5nIG9uIGxvY2FsaG9zdC4gVGhl IEhCQSBpbml0aWFsbHkKKyAgICBhbGxvd3Mgb25seSBsb2NhbCBVTklYIGNvbm5lY3Rpb25zIGZy b20gdGhlIHNhbWUgdXNlci4KKworICAgIFJldHVybnMgYSBQb3N0Z3Jlc1NlcnZlciBpbnN0YW5j ZSB3aXRoIG1ldGhvZHMgZm9yIHNlcnZlciBtYW5hZ2VtZW50LCBjb25maWd1cmF0aW9uLAorICAg IGFuZCBjcmVhdGluZyB0ZXN0IGRhdGFiYXNlcy91c2Vycy4KKyAgICAiIiIKKyAgICBzZXJ2ZXIg PSBQb3N0Z3Jlc1NlcnZlcigiZGVmYXVsdCIsIGJpbmRpciwgZGF0YWRpciwgc29ja2RpciwgbGli cHFfaGFuZGxlKQorCisgICAgeWllbGQgc2VydmVyCisKKyAgICAjIENsZWFudXAgYW55IHRlc3Qg cmVzb3VyY2VzCisgICAgc2VydmVyLmNsZWFudXAoKQorCisgICAgIyBTdG9wIHRoZSBzZXJ2ZXIK KyAgICBzZXJ2ZXIuc3RvcCgpCisKKworQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJtb2R1bGUiKQor ZGVmIHBnX3NlcnZlcl9tb2R1bGUocGdfc2VydmVyX2dsb2JhbCk6CisgICAgIiIiCisgICAgTW9k dWxlLXNjb3BlZCBzZXJ2ZXIgY29udGV4dC4gV2hpY2ggY2FuIGJlIHVzZWZ1bCBzbyB0aGF0IGNl cnRhaW4gc2V0dGluZ3MKKyAgICBjYW4gYmUgb3ZlcnJpZGVuIGF0IHRoZSBtb2R1bGUgbGV2ZWwg dGhyb3VnaCBhdXRvdXNlIGZpeHR1cmVzLiBBbiBleGFtcGxlCisgICAgb2YgdGhpcyBpcyBpbiB0 aGUgU1NMIHRlc3RzLgorICAgICIiIgorICAgIHdpdGggcGdfc2VydmVyX2dsb2JhbC5zdWJjb250 ZXh0KCkgYXMgczoKKyAgICAgICAgeWllbGQgcworCisKK0BweXRlc3QuZml4dHVyZQorZGVmIHBn KHJlcXVlc3QsIHBnX3NlcnZlcl9tb2R1bGUsIHJlbWFpbmluZ190aW1lb3V0KToKKyAgICAiIiIK KyAgICBQZXItdGVzdCBzZXJ2ZXIgY29udGV4dC4gVXNlIHRoaXMgZml4dHVyZSB0byBtYWtlIGNo YW5nZXMgdG8gdGhlIHNlcnZlcgorICAgIHdoaWNoIHdpbGwgYmUgcm9sbGVkIGJhY2sgYXQgdGhl IGVuZCBvZiB0aGUgdGVzdCAoZS5nLiwgY3JlYXRpbmcgdGVzdAorICAgIHVzZXJzL2RhdGFiYXNl cykuCisKKyAgICBBbHNvIGNhcHR1cmVzIHRoZSBQb3N0Z3JlU1FMIGxvZyBwb3NpdGlvbiBhdCB0 ZXN0IHN0YXJ0IHNvIHRoYXQgYW55IG5ldworICAgIGxvZyBlbnRyaWVzIGNhbiBiZSBpbmNsdWRl ZCBpbiB0aGUgdGVzdCByZXBvcnQgb24gZmFpbHVyZS4KKyAgICAiIiIKKyAgICB3aXRoIHBnX3Nl cnZlcl9tb2R1bGUuc3RhcnRfbmV3X3Rlc3QocmVtYWluaW5nX3RpbWVvdXQpIGFzIHM6CisgICAg ICAgIF9yZWNvcmRfc2VydmVyX2Zvcl9sb2dfcmVwb3J0aW5nKHJlcXVlc3QsIHMpCisgICAgICAg IHlpZWxkIHMKKworCitAcHl0ZXN0LmZpeHR1cmUKK2RlZiBjb25uKHBnKToKKyAgICAiIiIKKyAg ICBSZXR1cm5zIGEgY29ubmVjdGVkIFBHY29ubiBpbnN0YW5jZSB0byB0aGUgdGVzdCBQb3N0Z3Jl U1FMIHNlcnZlci4KKyAgICBUaGUgY29ubmVjdGlvbiBpcyBhdXRvbWF0aWNhbGx5IGNsZWFuZWQg dXAgYXQgdGhlIGVuZCBvZiB0aGUgdGVzdC4KKworICAgIEV4YW1wbGU6CisgICAgICAgIGRlZiB0 ZXN0X3NvbWV0aGluZyhjb25uKToKKyAgICAgICAgICAgIHJlc3VsdCA9IGNvbm4uc3FsKCJTRUxF Q1QgMSIpCisgICAgICAgICAgICBhc3NlcnQgcmVzdWx0ID09IDEKKyAgICAiIiIKKyAgICByZXR1 cm4gcGcuY29ubmVjdCgpCisKKworQHB5dGVzdC5maXh0dXJlCitkZWYgY3JlYXRlX3BnKHJlcXVl c3QsIGJpbmRpciwgc29ja2RpciwgbGlicHFfaGFuZGxlLCB0bXBfY2hlY2ssIHJlbWFpbmluZ190 aW1lb3V0KToKKyAgICAiIiIKKyAgICBGYWN0b3J5IGZpeHR1cmUgdG8gY3JlYXRlIGFkZGl0aW9u YWwgUG9zdGdyZVNRTCBzZXJ2ZXJzIChwZXItdGVzdCBzY29wZSkuCisKKyAgICBSZXR1cm5zIGEg ZnVuY3Rpb24gdGhhdCBjcmVhdGVzIG5ldyBQb3N0Z3JlU1FMIHNlcnZlciBpbnN0YW5jZXMuCisg ICAgU2VydmVycyBhcmUgYXV0b21hdGljYWxseSBjbGVhbmVkIHVwIGF0IHRoZSBlbmQgb2YgdGhl IHRlc3QuCisKKyAgICBFeGFtcGxlOgorICAgICAgICBkZWYgdGVzdF9tdWx0aXBsZV9zZXJ2ZXJz KGNyZWF0ZV9wZyk6CisgICAgICAgICAgICBub2RlMSA9IGNyZWF0ZV9wZygpCisgICAgICAgICAg ICBub2RlMiA9IGNyZWF0ZV9wZygpCisgICAgICAgICAgICBub2RlMyA9IGNyZWF0ZV9wZygpCisg ICAgIiIiCisgICAgc2VydmVycyA9IFtdCisKKyAgICBkZWYgX2NyZWF0ZShuYW1lPU5vbmUsICoq a3dhcmdzKToKKyAgICAgICAgaWYgbmFtZSBpcyBOb25lOgorICAgICAgICAgICAgY291bnQgPSBs ZW4oc2VydmVycykgKyAxCisgICAgICAgICAgICBuYW1lID0gZiJwZ3tjb3VudH0iCisKKyAgICAg ICAgZGF0YWRpciA9IHRtcF9jaGVjayAvIGYicGdkYXRhX3tuYW1lfSIKKyAgICAgICAgc2VydmVy ID0gUG9zdGdyZXNTZXJ2ZXIobmFtZSwgYmluZGlyLCBkYXRhZGlyLCBzb2NrZGlyLCBsaWJwcV9o YW5kbGUsICoqa3dhcmdzKQorICAgICAgICBzZXJ2ZXIuc2V0X3RpbWVvdXQocmVtYWluaW5nX3Rp bWVvdXQpCisgICAgICAgIF9yZWNvcmRfc2VydmVyX2Zvcl9sb2dfcmVwb3J0aW5nKHJlcXVlc3Qs IHNlcnZlcikKKyAgICAgICAgc2VydmVycy5hcHBlbmQoc2VydmVyKQorICAgICAgICByZXR1cm4g c2VydmVyCisKKyAgICB5aWVsZCBfY3JlYXRlCisKKyAgICBmb3Igc2VydmVyIGluIHNlcnZlcnM6 CisgICAgICAgIHNlcnZlci5jbGVhbnVwKCkKKyAgICAgICAgc2VydmVyLnN0b3AoKQorCisKK0Bw eXRlc3QuZml4dHVyZShzY29wZT0ibW9kdWxlIikKK2RlZiBfbW9kdWxlX3Njb3BlZF9zZXJ2ZXJz KCk6CisgICAgIiIiU2Vzc2lvbi1zY29wZWQgbGlzdCB0byB0cmFjayBzZXJ2ZXJzIGNyZWF0ZWQg YnkgY3JlYXRlX3BnX21vZHVsZS4iIiIKKyAgICByZXR1cm4gW10KKworCitAcHl0ZXN0LmZpeHR1 cmUoc2NvcGU9Im1vZHVsZSIpCitkZWYgY3JlYXRlX3BnX21vZHVsZSgKKyAgICBiaW5kaXIsCisg ICAgc29ja2RpciwKKyAgICBsaWJwcV9oYW5kbGUsCisgICAgdG1wX2NoZWNrLAorICAgIHJlbWFp bmluZ190aW1lb3V0X21vZHVsZSwKKyAgICBfbW9kdWxlX3Njb3BlZF9zZXJ2ZXJzLAorKToKKyAg ICAiIiIKKyAgICBGYWN0b3J5IGZpeHR1cmUgdG8gY3JlYXRlIGFkZGl0aW9uYWwgUG9zdGdyZVNR TCBzZXJ2ZXJzIChtb2R1bGUgc2NvcGUpLgorCisgICAgTGlrZSBjcmVhdGVfcGcsIGJ1dCBzZXJ2 ZXJzIHBlcnNpc3QgZm9yIHRoZSBlbnRpcmUgdGVzdCBtb2R1bGUuCisgICAgVXNlIHRoaXMgd2hl biBtdWx0aXBsZSB0ZXN0cyBpbiBhIG1vZHVsZSBjYW4gc2hhcmUgdGhlIHNhbWUgc2VydmVycy4K KworICAgIFRoZSB0aW1lb3V0IGlzIGF1dG9tYXRpY2FsbHkgc2V0IG9uIGFsbCBzZXJ2ZXJzIGF0 IHRoZSBzdGFydCBvZiBlYWNoIHRlc3QKKyAgICB2aWEgdGhlIF9zZXRfbW9kdWxlX3NlcnZlcl90 aW1lb3V0cyBhdXRvdXNlIGZpeHR1cmUuCisKKyAgICBFeGFtcGxlOgorICAgICAgICBAcHl0ZXN0 LmZpeHR1cmUoc2NvcGU9Im1vZHVsZSIpCisgICAgICAgIGRlZiBzaGFyZWRfbm9kZXMoY3JlYXRl X3BnX21vZHVsZSk6CisgICAgICAgICAgICByZXR1cm4gW2NyZWF0ZV9wZ19tb2R1bGUoKSBmb3Ig XyBpbiByYW5nZSgzKV0KKyAgICAiIiIKKworICAgIGRlZiBfY3JlYXRlKG5hbWU9Tm9uZSwgKipr d2FyZ3MpOgorICAgICAgICBpZiBuYW1lIGlzIE5vbmU6CisgICAgICAgICAgICBjb3VudCA9IGxl bihfbW9kdWxlX3Njb3BlZF9zZXJ2ZXJzKSArIDEKKyAgICAgICAgICAgIG5hbWUgPSBmInBne2Nv dW50fSIKKyAgICAgICAgZGF0YWRpciA9IHRtcF9jaGVjayAvIGYicGdkYXRhX3tuYW1lfSIKKyAg ICAgICAgc2VydmVyID0gUG9zdGdyZXNTZXJ2ZXIobmFtZSwgYmluZGlyLCBkYXRhZGlyLCBzb2Nr ZGlyLCBsaWJwcV9oYW5kbGUsICoqa3dhcmdzKQorICAgICAgICBzZXJ2ZXIuc2V0X3RpbWVvdXQo cmVtYWluaW5nX3RpbWVvdXRfbW9kdWxlKQorICAgICAgICBfbW9kdWxlX3Njb3BlZF9zZXJ2ZXJz LmFwcGVuZChzZXJ2ZXIpCisgICAgICAgIHJldHVybiBzZXJ2ZXIKKworICAgIHlpZWxkIF9jcmVh dGUKKworICAgIGZvciBzZXJ2ZXIgaW4gX21vZHVsZV9zY29wZWRfc2VydmVyczoKKyAgICAgICAg c2VydmVyLmNsZWFudXAoKQorICAgICAgICBzZXJ2ZXIuc3RvcCgpCisKKworQHB5dGVzdC5maXh0 dXJlKGF1dG91c2U9VHJ1ZSkKK2RlZiBfc2V0X21vZHVsZV9zZXJ2ZXJfdGltZW91dHMocmVxdWVz dCwgX21vZHVsZV9zY29wZWRfc2VydmVycywgcmVtYWluaW5nX3RpbWVvdXQpOgorICAgICIiIkF1 dG91c2UgZml4dHVyZSB0aGF0IHNldHMgdGltZW91dCwgZW50ZXJzIHN1YmNvbnRleHQsIGFuZCBy ZWNvcmRzIGxvZyBwb3NpdGlvbnMgZm9yIG1vZHVsZS1zY29wZWQgc2VydmVycy4iIiIKKyAgICB3 aXRoIGNvbnRleHRsaWIuRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgIGZvciBzZXJ2ZXIg aW4gX21vZHVsZV9zY29wZWRfc2VydmVyczoKKyAgICAgICAgICAgIHN0YWNrLmVudGVyX2NvbnRl eHQoc2VydmVyLnN0YXJ0X25ld190ZXN0KHJlbWFpbmluZ190aW1lb3V0KSkKKyAgICAgICAgICAg IF9yZWNvcmRfc2VydmVyX2Zvcl9sb2dfcmVwb3J0aW5nKHJlcXVlc3QsIHNlcnZlcikKKyAgICAg ICAgeWllbGQKKworCitAcHl0ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUsIHRyeWxhc3Q9 VHJ1ZSkKK2RlZiBweXRlc3RfcnVudGVzdF9tYWtlcmVwb3J0KGl0ZW0sIGNhbGwpOgorICAgICIi IgorICAgIEFkZHMgUG9zdGdyZVNRTCBzZXJ2ZXIgbG9ncyB0byB0aGUgdGVzdCByZXBvcnQgc2Vj dGlvbnMuCisgICAgIiIiCisgICAgb3V0Y29tZSA9IHlpZWxkCisgICAgcmVwb3J0ID0gb3V0Y29t ZS5nZXRfcmVzdWx0KCkKKworICAgIGlmIHJlcG9ydC53aGVuICE9ICJjYWxsIjoKKyAgICAgICAg cmV0dXJuCisKKyAgICBpZiBfc2VydmVyc19rZXkgbm90IGluIGl0ZW0uc3Rhc2g6CisgICAgICAg IHJldHVybgorCisgICAgc2VydmVycyA9IGl0ZW0uc3Rhc2hbX3NlcnZlcnNfa2V5XQorICAgIGRl bCBpdGVtLnN0YXNoW19zZXJ2ZXJzX2tleV0KKworICAgIGluY2x1ZGVfbmFtZSA9IGxlbihzZXJ2 ZXJzKSA+IDEKKworICAgIGZvciBzZXJ2ZXIgaW4gc2VydmVyczoKKyAgICAgICAgY29udGVudCA9 IHNlcnZlci5sb2dfY29udGVudCgpCisgICAgICAgIGlmIGNvbnRlbnQuc3RyaXAoKToKKyAgICAg ICAgICAgIHNlY3Rpb25fdGl0bGUgPSAiUG9zdGdyZXMgbG9nIgorICAgICAgICAgICAgaWYgaW5j bHVkZV9uYW1lOgorICAgICAgICAgICAgICAgIHNlY3Rpb25fdGl0bGUgKz0gZiIgKHtzZXJ2ZXIu bmFtZX0pIgorICAgICAgICAgICAgcmVwb3J0LnNlY3Rpb25zLmFwcGVuZCgoc2VjdGlvbl90aXRs ZSwgY29udGVudCkpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9weXRlc3QvcHlwZy9zZXJ2ZXIucHkg Yi9zcmMvdGVzdC9weXRlc3QvcHlwZy9zZXJ2ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjY2NDk2MzI4ZDJkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qv cHl0ZXN0L3B5cGcvc2VydmVyLnB5CkBAIC0wLDAgKzEsNDc2IEBACisjIENvcHlyaWdodCAoYykg MjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworaW1wb3J0IGNvbnRl eHRsaWIKK2ltcG9ydCBvcworaW1wb3J0IHBhdGhsaWIKK2ltcG9ydCBwbGF0Zm9ybQoraW1wb3J0 IHJlCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc29ja2V0CitpbXBvcnQgc3VicHJvY2VzcworaW1w b3J0IHRlbXBmaWxlCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCitmcm9tIHR5 cGluZyBpbXBvcnQgQ2FsbGFibGUsIE9wdGlvbmFsCisKK2Zyb20gLnV0aWwgaW1wb3J0IHJ1bgor ZnJvbSBsaWJwcSBpbXBvcnQgUEdjb25uLCBjb25uZWN0IGFzIGxpYnBxX2Nvbm5lY3QKKworCitj bGFzcyBGaWxlQmFja3VwKGNvbnRleHRsaWIuQWJzdHJhY3RDb250ZXh0TWFuYWdlcik6CisgICAg IiIiCisgICAgQSBjb250ZXh0IG1hbmFnZXIgd2hpY2ggYmFja3MgdXAgYSBmaWxlJ3MgY29udGVu dHMsIHJlc3RvcmluZyB0aGVtIG9uIGV4aXQuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18o c2VsZiwgZmlsZTogcGF0aGxpYi5QYXRoKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCisK KyAgICAgICAgc2VsZi5fZmlsZSA9IGZpbGUKKworICAgIGRlZiBfX2VudGVyX18oc2VsZik6Cisg ICAgICAgIHdpdGggdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKAorICAgICAgICAgICAgcHJl Zml4PXNlbGYuX2ZpbGUubmFtZSwgZGlyPXNlbGYuX2ZpbGUucGFyZW50LCBkZWxldGU9RmFsc2UK KyAgICAgICAgKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5fYmFja3VwID0gcGF0aGxpYi5QYXRo KGYubmFtZSkKKworICAgICAgICBzaHV0aWwuY29weWZpbGUoc2VsZi5fZmlsZSwgc2VsZi5fYmFj a3VwKQorCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgKmV4 Yyk6CisgICAgICAgICMgU3dhcCB0aGUgYmFja3VwIGFuZCB0aGUgb3JpZ2luYWwgZmlsZSwgc28g dGhhdCB0aGUgbW9kaWZpZWQgY29udGVudHMKKyAgICAgICAgIyBjYW4gc3RpbGwgYmUgaW5zcGVj dGVkIGluIGNhc2Ugb2YgZmFpbHVyZS4KKyAgICAgICAgdG1wID0gc2VsZi5fYmFja3VwLnBhcmVu dCAvIChzZWxmLl9iYWNrdXAubmFtZSArICIudG1wIikKKworICAgICAgICBzaHV0aWwuY29weWZp bGUoc2VsZi5fZmlsZSwgdG1wKQorICAgICAgICBzaHV0aWwuY29weWZpbGUoc2VsZi5fYmFja3Vw LCBzZWxmLl9maWxlKQorICAgICAgICBzaHV0aWwubW92ZSh0bXAsIHNlbGYuX2JhY2t1cCkKKwor CitjbGFzcyBIQkEoRmlsZUJhY2t1cCk6CisgICAgIiIiCisgICAgQmFja3MgdXAgYSBzZXJ2ZXIn cyBIQkEgY29uZmlndXJhdGlvbiBhbmQgcHJvdmlkZXMgbWVhbnMgZm9yIHRlbXBvcmFyaWx5Cisg ICAgZWRpdGluZyBpdC4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkYXRhZGly OiBwYXRobGliLlBhdGgpOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKGRhdGFkaXIgLyAicGdf aGJhLmNvbmYiKQorCisgICAgZGVmIHByZXBlbmQoc2VsZiwgKmxpbmVzKToKKyAgICAgICAgIiIi CisgICAgICAgIFRlbXBvcmFyaWx5IHByZXBlbmRzIGxpbmVzIHRvIHRoZSBzZXJ2ZXIncyBwZ19o YmEuY29uZi4KKworICAgICAgICBBcyBzdWdhciBmb3IgYWxpZ25pbmcgSEJBIGNvbHVtbnMgaW4g dGhlIHRlc3RzLCBlYWNoIGxpbmUgY2FuIGJlIGVpdGhlcgorICAgICAgICBhIHN0cmluZyBvciBh IGxpc3Qgb2Ygc3RyaW5ncy4gTGlzdCBlbGVtZW50cyB3aWxsIGJlIGpvaW5lZCBieSBzaW5nbGUK KyAgICAgICAgc3BhY2VzIGJlZm9yZSB0aGV5IGFyZSB3cml0dGVuIHRvIGZpbGUuCisgICAgICAg ICIiIgorICAgICAgICB3aXRoIG9wZW4oc2VsZi5fZmlsZSwgInIiKSBhcyBmOgorICAgICAgICAg ICAgcHJpb3JfZGF0YSA9IGYucmVhZCgpCisKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuX2ZpbGUs ICJ3IikgYXMgZjoKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGxpbmVzOgorICAgICAgICAgICAg ICAgIGlmIGlzaW5zdGFuY2UobGluZSwgbGlzdCk6CisgICAgICAgICAgICAgICAgICAgIHByaW50 KCpsaW5lLCBmaWxlPWYpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAg ICAgcHJpbnQobGluZSwgZmlsZT1mKQorCisgICAgICAgICAgICBmLndyaXRlKHByaW9yX2RhdGEp CisKKworY2xhc3MgQ29uZmlnKEZpbGVCYWNrdXApOgorICAgICIiIgorICAgIEJhY2tzIHVwIGEg c2VydmVyJ3MgcG9zdGdyZXNxbC5jb25mIGFuZCBwcm92aWRlcyBtZWFucyBmb3IgdGVtcG9yYXJp bHkKKyAgICBlZGl0aW5nIGl0LgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRh dGFkaXI6IHBhdGhsaWIuUGF0aCk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oZGF0YWRpciAv ICJwb3N0Z3Jlc3FsLmNvbmYiKQorCisgICAgZGVmIHNldChzZWxmLCAqKmd1Y3MpOgorICAgICAg ICAiIiIKKyAgICAgICAgVGVtcG9yYXJpbHkgYXBwZW5kcyBHVUMgc2V0dGluZ3MgdG8gdGhlIHNl cnZlcidzIHBvc3RncmVzcWwuY29uZi4KKyAgICAgICAgIiIiCisKKyAgICAgICAgd2l0aCBvcGVu KHNlbGYuX2ZpbGUsICJhIikgYXMgZjoKKyAgICAgICAgICAgIHByaW50KGZpbGU9ZikKKworICAg ICAgICAgICAgZm9yIG4sIHYgaW4gZ3Vjcy5pdGVtcygpOgorICAgICAgICAgICAgICAgIHYgPSBz dHIodikKKworICAgICAgICAgICAgICAgICMgUXVvdGUgYW5kIGVzY2FwZSB0aGUgdmFsdWUgZm9y IHBvc3RncmVzcWwuY29uZiBzaW5nbGUtcXVvdGVkCisgICAgICAgICAgICAgICAgIyBzdHJpbmdz LiBUaGlzIGlzIGRvaW5nIHRoZSByZXZlcnNlZSBvZiBEZWVzY2FwZVF1b3RlZFN0cmluZy4KKyAg ICAgICAgICAgICAgICB2ID0gdi5yZXBsYWNlKCJcXCIsICJcXFxcIikKKyAgICAgICAgICAgICAg ICB2ID0gdi5yZXBsYWNlKCInIiwgIicnIikKKyAgICAgICAgICAgICAgICB2ID0gdi5yZXBsYWNl KCJcbiIsICJcXG4iKQorICAgICAgICAgICAgICAgIHYgPSB2LnJlcGxhY2UoIlxyIiwgIlxcciIp CisgICAgICAgICAgICAgICAgdiA9IHYucmVwbGFjZSgiXHQiLCAiXFx0IikKKyAgICAgICAgICAg ICAgICB2ID0gdi5yZXBsYWNlKCJcYiIsICJcXGIiKQorICAgICAgICAgICAgICAgIHYgPSB2LnJl cGxhY2UoIlxmIiwgIlxcZiIpCisgICAgICAgICAgICAgICAgdiA9ICIne30nIi5mb3JtYXQodikK KworICAgICAgICAgICAgICAgIHByaW50KG4sICI9IiwgdiwgZmlsZT1mKQorCisKK0JhY2t1cCA9 IG5hbWVkdHVwbGUoIkJhY2t1cCIsICJjb25mLCBoYmEiKQorCisKK2NsYXNzIFBvc3RncmVzU2Vy dmVyOgorICAgICIiIgorICAgIFJlcHJlc2VudHMgYSBydW5uaW5nIFBvc3RncmVTUUwgc2VydmVy IGluc3RhbmNlIHdpdGggbWFuYWdlbWVudCB1dGlsaXRpZXMuCisgICAgUHJvdmlkZXMgbWV0aG9k cyBmb3IgY29uZmlndXJhdGlvbiwgdXNlci9kYXRhYmFzZSBjcmVhdGlvbiwgYW5kIHNlcnZlciBj b250cm9sLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLAorICAg ICAgICBuYW1lLAorICAgICAgICBiaW5kaXIsCisgICAgICAgIGRhdGFkaXIsCisgICAgICAgIHNv Y2tkaXIsCisgICAgICAgIGxpYnBxX2hhbmRsZSwKKyAgICAgICAgKiwKKyAgICAgICAgaG9zdGFk ZHI6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAorICAgICAgICBwb3J0OiBPcHRpb25hbFtpbnRdID0g Tm9uZSwKKyAgICApOgorICAgICAgICAiIiIKKyAgICAgICAgSW5pdGlhbGl6ZSBhbmQgc3RhcnQg YSBQb3N0Z3JlU1FMIHNlcnZlciBpbnN0YW5jZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAg ICAgbmFtZTogVGhlIG5hbWUgb2YgdGhpcyBzZXJ2ZXIgaW5zdGFuY2UgKGZvciBsb2dnaW5nIHB1 cnBvc2VzKQorICAgICAgICAgICAgYmluZGlyOiBQYXRoIHRvIFBvc3RncmVTUUwgYmluIGRpcmVj dG9yeQorICAgICAgICAgICAgZGF0YWRpcjogUGF0aCB0byBkYXRhIGRpcmVjdG9yeSBmb3IgdGhp cyBzZXJ2ZXIKKyAgICAgICAgICAgIHNvY2tkaXI6IFBhdGggdG8gZGlyZWN0b3J5IGZvciBVbml4 IHNvY2tldHMKKyAgICAgICAgICAgIGxpYnBxX2hhbmRsZTogY3R5cGVzIGhhbmRsZSB0byBsaWJw cQorICAgICAgICAgICAgaG9zdGFkZHI6IElmIHByb3ZpZGVkLCB1c2UgdGhpcyBzcGVjaWZpYyBh ZGRyZXNzIChlLmcuLCAiMTI3LjAuMC4yIikKKyAgICAgICAgICAgIHBvcnQ6IElmIHByb3ZpZGVk LCB1c2UgdGhpcyBwb3J0IGluc3RlYWQgb2YgZmluZGluZyBhIGZyZWUgb25lLAorICAgICAgICAg ICAgICAgIGlzIGN1cnJlbnRseSBvbmx5IGFsbG93ZWQgaWYgaG9zdGFkZHIgaXMgYWxzbyBwcm92 aWRlZAorICAgICAgICAiIiIKKworICAgICAgICBpZiBob3N0YWRkciBpcyBOb25lIGFuZCBwb3J0 IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigicG9y dCB3YXMgcHJvdmlkZWQgd2l0aG91dCBob3N0YWRkciIpCisKKyAgICAgICAgc2VsZi5uYW1lID0g bmFtZQorICAgICAgICBzZWxmLmRhdGFkaXIgPSBkYXRhZGlyCisgICAgICAgIHNlbGYuc29ja2Rp ciA9IHNvY2tkaXIKKyAgICAgICAgc2VsZi5saWJwcV9oYW5kbGUgPSBsaWJwcV9oYW5kbGUKKyAg ICAgICAgc2VsZi5fcmVtYWluaW5nX3RpbWVvdXRfZm46IE9wdGlvbmFsW0NhbGxhYmxlW1tdLCBm bG9hdF1dID0gTm9uZQorICAgICAgICBzZWxmLl9iaW5kaXIgPSBiaW5kaXIKKyAgICAgICAgc2Vs Zi5fcGdfY3RsID0gYmluZGlyIC8gInBnX2N0bCIKKyAgICAgICAgc2VsZi5sb2cgPSBkYXRhZGly IC8gInBvc3RncmVzcWwubG9nIgorICAgICAgICBzZWxmLl9sb2dfc3RhcnRfcG9zID0gMAorCisg ICAgICAgICMgRGV0ZXJtaW5lIHdoZXRoZXIgdG8gdXNlIFVuaXggc29ja2V0cworICAgICAgICB1 c2VfdW5peF9zb2NrZXRzID0gcGxhdGZvcm0uc3lzdGVtKCkgIT0gIldpbmRvd3MiIGFuZCBob3N0 YWRkciBpcyBOb25lCisKKyAgICAgICAgIyBVc2UgSU5JVERCX1RFTVBMQVRFIGlmIGF2YWlsYWJs ZSAobXVjaCBmYXN0ZXIgdGhhbiBydW5uaW5nIGluaXRkYikKKyAgICAgICAgaW5pdGRiX3RlbXBs YXRlID0gb3MuZW52aXJvbi5nZXQoIklOSVREQl9URU1QTEFURSIpCisgICAgICAgIGlmIGluaXRk Yl90ZW1wbGF0ZSBhbmQgb3MucGF0aC5pc2Rpcihpbml0ZGJfdGVtcGxhdGUpOgorICAgICAgICAg ICAgc2h1dGlsLmNvcHl0cmVlKGluaXRkYl90ZW1wbGF0ZSwgZGF0YWRpcikKKyAgICAgICAgZWxz ZToKKyAgICAgICAgICAgIGlmIHBsYXRmb3JtLnN5c3RlbSgpID09ICJXaW5kb3dzIjoKKyAgICAg ICAgICAgICAgICBhdXRoX21ldGhvZCA9ICJ0cnVzdCIKKyAgICAgICAgICAgIGVsc2U6CisgICAg ICAgICAgICAgICAgYXV0aF9tZXRob2QgPSAicGVlciIKKyAgICAgICAgICAgIHJ1bigKKyAgICAg ICAgICAgICAgICBiaW5kaXIgLyAiaW5pdGRiIiwKKyAgICAgICAgICAgICAgICAiLS1uby1zeW5j IiwKKyAgICAgICAgICAgICAgICAiLS1hdXRoIiwKKyAgICAgICAgICAgICAgICBhdXRoX21ldGhv ZCwKKyAgICAgICAgICAgICAgICAiLS1wZ2RhdGEiLAorICAgICAgICAgICAgICAgIHNlbGYuZGF0 YWRpciwKKyAgICAgICAgICAgICkKKworICAgICAgICAjIEZpZ3VyZSBvdXQgYSBwb3J0IHRvIGxp c3RlbiBvbi4gQXR0ZW1wdCB0byByZXNlcnZlIGJvdGggSVB2NCBhbmQgSVB2NgorICAgICAgICAj IGFkZHJlc3NlcyBpbiBvbmUgZ28uCisgICAgICAgICMKKyAgICAgICAgIyBOb3RlOiBzb2NrZXQu aGFzX2R1YWxzdGFja19pcHY2L2NyZWF0ZV9zZXJ2ZXIgYXJlIG9ubHkgaW4gUHl0aG9uIDMuOCsu CisgICAgICAgIGlmIGhvc3RhZGRyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgIyBFeHBsaWNp dCBhZGRyZXNzIHByb3ZpZGVkCisgICAgICAgICAgICBhZGRyczogbGlzdFtzdHJdID0gW2hvc3Rh ZGRyXQorICAgICAgICAgICAgdGVtcF9zb2NrID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgICAg ICBpZiBwb3J0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgdGVtcF9zb2NrLmJpbmQoKGhvc3Rh ZGRyLCAwKSkKKyAgICAgICAgICAgICAgICBfLCBwb3J0ID0gdGVtcF9zb2NrLmdldHNvY2tuYW1l KCkKKworICAgICAgICBlbGlmIGhhc2F0dHIoc29ja2V0LCAiaGFzX2R1YWxzdGFja19pcHY2Iikg YW5kIHNvY2tldC5oYXNfZHVhbHN0YWNrX2lwdjYoKToKKyAgICAgICAgICAgIGFkZHIgPSAoIjo6 MSIsIDApCisgICAgICAgICAgICB0ZW1wX3NvY2sgPSBzb2NrZXQuY3JlYXRlX3NlcnZlcigKKyAg ICAgICAgICAgICAgICBhZGRyLCBmYW1pbHk9c29ja2V0LkFGX0lORVQ2LCBkdWFsc3RhY2tfaXB2 Nj1UcnVlCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgIGhvc3RhZGRyLCBwb3J0LCBfLCBf ID0gdGVtcF9zb2NrLmdldHNvY2tuYW1lKCkKKyAgICAgICAgICAgIGFzc2VydCBob3N0YWRkciBp cyBub3QgTm9uZQorICAgICAgICAgICAgYWRkcnMgPSBbaG9zdGFkZHIsICIxMjcuMC4wLjEiXQor CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhZGRyID0gKCIxMjcuMC4wLjEiLCAwKQorCisg ICAgICAgICAgICB0ZW1wX3NvY2sgPSBzb2NrZXQuc29ja2V0KCkKKyAgICAgICAgICAgIHRlbXBf c29jay5iaW5kKGFkZHIpCisKKyAgICAgICAgICAgIGhvc3RhZGRyLCBwb3J0ID0gdGVtcF9zb2Nr LmdldHNvY2tuYW1lKCkKKyAgICAgICAgICAgIGFzc2VydCBob3N0YWRkciBpcyBub3QgTm9uZQor ICAgICAgICAgICAgYWRkcnMgPSBbaG9zdGFkZHJdCisKKyAgICAgICAgIyBTdG9yZSB0aGUgY29t cHV0ZWQgdmFsdWVzCisgICAgICAgIHNlbGYuaG9zdGFkZHIgPSBob3N0YWRkcgorICAgICAgICBz ZWxmLnBvcnQgPSBwb3J0CisgICAgICAgICMgSW5jbHVkaW5nIHRoZSBob3N0IHRvIHVzZSBmb3Ig Y29ubmVjdGlvbnMgLSBlaXRoZXIgdGhlIHNvY2tldAorICAgICAgICAjIGRpcmVjdG9yeSBvciBU Q1AgYWRkcmVzcworICAgICAgICBpZiB1c2VfdW5peF9zb2NrZXRzOgorICAgICAgICAgICAgc2Vs Zi5ob3N0ID0gc3RyKHNvY2tkaXIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmhv c3QgPSBob3N0YWRkcgorCisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oZGF0YWRpciwg InBvc3RncmVzcWwuY29uZiIpLCAiYSIpIGFzIGY6CisgICAgICAgICAgICBwcmludChmaWxlPWYp CisgICAgICAgICAgICBpZiB1c2VfdW5peF9zb2NrZXRzOgorICAgICAgICAgICAgICAgIHByaW50 KAorICAgICAgICAgICAgICAgICAgICAidW5peF9zb2NrZXRfZGlyZWN0b3JpZXMgPSAne30nIi5m b3JtYXQoc29ja2Rpci5hc19wb3NpeCgpKSwKKyAgICAgICAgICAgICAgICAgICAgZmlsZT1mLAor ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBE aXNhYmxlIFVuaXggc29ja2V0cyB3aGVuIHVzaW5nIFRDUCB0byBhdm9pZCBsb2NrIGNvbmZsaWN0 cworICAgICAgICAgICAgICAgIHByaW50KCJ1bml4X3NvY2tldF9kaXJlY3RvcmllcyA9ICcnIiwg ZmlsZT1mKQorICAgICAgICAgICAgcHJpbnQoImxpc3Rlbl9hZGRyZXNzZXMgPSAne30nIi5mb3Jt YXQoIiwiLmpvaW4oYWRkcnMpKSwgZmlsZT1mKQorICAgICAgICAgICAgcHJpbnQoInBvcnQgPSIs IHBvcnQsIGZpbGU9ZikKKyAgICAgICAgICAgIHByaW50KCJsb2dfY29ubmVjdGlvbnMgPSBhbGwi LCBmaWxlPWYpCisgICAgICAgICAgICBwcmludCgiZnN5bmMgPSBvZmYiLCBmaWxlPWYpCisgICAg ICAgICAgICBwcmludCgiZGF0ZXN0eWxlID0gJ0lTTyciLCBmaWxlPWYpCisgICAgICAgICAgICBw cmludCgidGltZXpvbmUgPSAnVVRDJyIsIGZpbGU9ZikKKworICAgICAgICAjIEJldHdlZW4gY2xv c2luZyBvZiB0aGUgc29ja2V0LCBzLCBhbmQgc2VydmVyIHN0YXJ0LCB3ZSdyZSByYWNpbmcKKyAg ICAgICAgIyBhZ2FpbnN0IGFueXRoaW5nIHRoYXQgd2FudHMgdG8gb3BlbiB1cCBlcGhlbWVyYWwg cG9ydHMsIHNvIHRyeSBub3QgdG8KKyAgICAgICAgIyBwdXQgYW55IG5ldyB3b3JrIGhlcmUuCisK KyAgICAgICAgdGVtcF9zb2NrLmNsb3NlKCkKKyAgICAgICAgc2VsZi5wZ19jdGwoInN0YXJ0IikK KworICAgICAgICAjIFJlYWQgdGhlIFBJRCBmaWxlIHRvIGdldCB0aGUgcG9zdG1hc3RlciBQSUQK KyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihkYXRhZGlyLCAicG9zdG1hc3Rlci5waWQi KSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYucGlkID0gaW50KGYucmVhZGxpbmUoKS5zdHJpcCgp KQorCisgICAgICAgICMgRXhpdFN0YWNrIGZvciBjbGVhbnVwIGNhbGxiYWNrcworICAgICAgICBz ZWxmLl9jbGVhbnVwX3N0YWNrID0gY29udGV4dGxpYi5FeGl0U3RhY2soKQorCisgICAgZGVmIGN1 cnJlbnRfbG9nX3Bvc2l0aW9uKHNlbGYpOgorICAgICAgICAiIiJHZXQgdGhlIGN1cnJlbnQgZW5k IHBvc2l0aW9uIG9mIHRoZSBsb2cgZmlsZS4iIiIKKyAgICAgICAgaWYgc2VsZi5sb2cuZXhpc3Rz KCk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5sb2cuc3RhdCgpLnN0X3NpemUKKyAgICAgICAg cmV0dXJuIDAKKworICAgIGRlZiByZXNldF9sb2dfcG9zaXRpb24oc2VsZik6CisgICAgICAgICIi Ik1hcmsgY3VycmVudCBsb2cgcG9zaXRpb24gYXMgc3RhcnQgZm9yIGxvZ19jb250ZW50KCkuIiIi CisgICAgICAgIHNlbGYuX2xvZ19zdGFydF9wb3MgPSBzZWxmLmN1cnJlbnRfbG9nX3Bvc2l0aW9u KCkKKworICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIHN0YXJ0X25ld190 ZXN0KHNlbGYsIHJlbWFpbmluZ190aW1lb3V0KToKKyAgICAgICAgIiIiCisgICAgICAgIFByZXBh cmUgc2VydmVyIGZvciBhIG5ldyB0ZXN0LgorCisgICAgICAgIFNldHMgdGltZW91dCwgcmVzZXRz IGxvZyBwb3NpdGlvbiwgYW5kIGVudGVycyBhIGNsZWFudXAgc3ViY29udGV4dC4KKyAgICAgICAg IiIiCisgICAgICAgIHNlbGYuc2V0X3RpbWVvdXQocmVtYWluaW5nX3RpbWVvdXQpCisgICAgICAg IHNlbGYucmVzZXRfbG9nX3Bvc2l0aW9uKCkKKyAgICAgICAgd2l0aCBzZWxmLnN1YmNvbnRleHQo KToKKyAgICAgICAgICAgIHlpZWxkIHNlbGYKKworICAgIGRlZiBwc3FsKHNlbGYsICphcmdzKToK KyAgICAgICAgIiIiUnVuIHBzcWwgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzLiIiIgorICAgICAg ICBzZWxmLl9ydW4ob3MucGF0aC5qb2luKHNlbGYuX2JpbmRpciwgInBzcWwiKSwgIi13IiwgKmFy Z3MpCisKKyAgICBkZWYgc3FsKHNlbGYsIHF1ZXJ5KToKKyAgICAgICAgIiIiRXhlY3V0ZSBhIFNR TCBxdWVyeSB2aWEgbGlicHEuIFJldHVybnMgc2ltcGxpZmllZCByZXN1bHRzLiIiIgorICAgICAg ICB3aXRoIHNlbGYuY29ubmVjdCgpIGFzIGNvbm46CisgICAgICAgICAgICByZXR1cm4gY29ubi5z cWwocXVlcnkpCisKKyAgICBkZWYgcGdfY3RsKHNlbGYsICphcmdzKToKKyAgICAgICAgIiIiUnVu IHBnX2N0bCB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMuIiIiCisgICAgICAgIHNlbGYuX3J1bihz ZWxmLl9wZ19jdGwsICItLXBnZGF0YSIsIHNlbGYuZGF0YWRpciwgIi0tbG9nIiwgc2VsZi5sb2cs ICphcmdzKQorCisgICAgZGVmIF9ydW4oc2VsZiwgY21kLCAqYXJncywgYWRkZW52OiBPcHRpb25h bFtkaWN0XSA9IE5vbmUpOgorICAgICAgICAiIiJSdW4gYSBjb21tYW5kIHdpdGggUEcqIGVudmly b25tZW50IHZhcmlhYmxlcyBzZXQuIiIiCisgICAgICAgIHN1YmVudiA9IGRpY3Qob3MuZW52aXJv bikKKyAgICAgICAgc3ViZW52LnVwZGF0ZSgKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg ICAiUEdIT1NUIjogc3RyKHNlbGYuaG9zdCksCisgICAgICAgICAgICAgICAgIlBHUE9SVCI6IHN0 cihzZWxmLnBvcnQpLAorICAgICAgICAgICAgICAgICJQR0RBVEFCQVNFIjogInBvc3RncmVzIiwK KyAgICAgICAgICAgICAgICAiUEdEQVRBIjogc3RyKHNlbGYuZGF0YWRpciksCisgICAgICAgICAg ICB9CisgICAgICAgICkKKyAgICAgICAgaWYgYWRkZW52OgorICAgICAgICAgICAgc3ViZW52LnVw ZGF0ZShhZGRlbnYpCisgICAgICAgIHJ1bihjbWQsICphcmdzLCBlbnY9c3ViZW52KQorCisgICAg ZGVmIGNyZWF0ZV91c2VycyhzZWxmLCAqdXNlcmtleXM6IHN0cik6CisgICAgICAgICIiIkNyZWF0 ZSB0ZXN0IHVzZXJzIGFuZCByZWdpc3RlciB0aGVtIGZvciBjbGVhbnVwLiIiIgorICAgICAgICB1 c2VybWFwID0ge30KKyAgICAgICAgZm9yIHUgaW4gdXNlcmtleXM6CisgICAgICAgICAgICBuYW1l ID0gdSArICJ1c2VyIgorICAgICAgICAgICAgdXNlcm1hcFt1XSA9IG5hbWUKKyAgICAgICAgICAg IHNlbGYucHNxbCgiLWMiLCAiQ1JFQVRFIFVTRVIgIiArIG5hbWUpCisgICAgICAgICAgICBzZWxm Ll9jbGVhbnVwX3N0YWNrLmNhbGxiYWNrKHNlbGYucHNxbCwgIi1jIiwgIkRST1AgVVNFUiAiICsg bmFtZSkKKyAgICAgICAgcmV0dXJuIHVzZXJtYXAKKworICAgIGRlZiBjcmVhdGVfZGJzKHNlbGYs ICpkYmtleXM6IHN0cik6CisgICAgICAgICIiIkNyZWF0ZSB0ZXN0IGRhdGFiYXNlcyBhbmQgcmVn aXN0ZXIgdGhlbSBmb3IgY2xlYW51cC4iIiIKKyAgICAgICAgZGJtYXAgPSB7fQorICAgICAgICBm b3IgZCBpbiBkYmtleXM6CisgICAgICAgICAgICBuYW1lID0gZCArICJkYiIKKyAgICAgICAgICAg IGRibWFwW2RdID0gbmFtZQorICAgICAgICAgICAgc2VsZi5wc3FsKCItYyIsICJDUkVBVEUgREFU QUJBU0UgIiArIG5hbWUpCisgICAgICAgICAgICBzZWxmLl9jbGVhbnVwX3N0YWNrLmNhbGxiYWNr KHNlbGYucHNxbCwgIi1jIiwgIkRST1AgREFUQUJBU0UgIiArIG5hbWUpCisgICAgICAgIHJldHVy biBkYm1hcAorCisgICAgQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKKyAgICBkZWYgcmVsb2Fk aW5nKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgUHJvdmlkZXMgYSBjb250ZXh0IG1hbmFn ZXIgZm9yIG1ha2luZyBjb25maWd1cmF0aW9uIGNoYW5nZXMuCisKKyAgICAgICAgSWYgdGhlIGNv bnRleHQgc3VpdGUgZmluaXNoZXMgc3VjY2Vzc2Z1bGx5LCB0aGUgY29uZmlndXJhdGlvbiB3aWxs CisgICAgICAgIGJlIHJlbG9hZGVkIHZpYSBwZ19jdGwuIE9uIHRlYXJkb3duLCB0aGUgY29uZmln dXJhdGlvbiBjaGFuZ2VzIHdpbGwKKyAgICAgICAgYmUgdW53b3VuZCwgYW5kIHRoZSBzZXJ2ZXIg d2lsbCBiZSBzaWduYWxlZCB0byByZWxvYWQgYWdhaW4uCisKKyAgICAgICAgVGhlIGNvbnRleHQg dGFyZ2V0IGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyB3aGljaCBjYW4gYmUKKyAg ICAgICAgdXNlZCB0byBjb25maWd1cmUgdGhlIHNlcnZlcjoKKyAgICAgICAgLSAuY29uZjogbW9k aWZpZXMgcG9zdGdyZXNxbC5jb25mCisgICAgICAgIC0gLmhiYTogbW9kaWZpZXMgcGdfaGJhLmNv bmYKKworICAgICAgICBGb3IgZXhhbXBsZToKKworICAgICAgICAgICAgd2l0aCBwZ19zZXJ2ZXJf c2Vzc2lvbi5yZWxvYWRpbmcoKSBhcyBzOgorICAgICAgICAgICAgICAgIHMuY29uZi5zZXQobG9n X2Nvbm5lY3Rpb25zPSJvbiIpCisgICAgICAgICAgICAgICAgcy5oYmEucHJlcGVuZCgibG9jYWwg YWxsIGFsbCB0cnVzdCIpCisgICAgICAgICIiIgorICAgICAgICAjIFB1c2ggYSByZWxvYWQgb250 byB0aGUgc3RhY2sgYmVmb3JlIG1ha2luZyBhbnkgb3RoZXIKKyAgICAgICAgIyB1bndpbmRhYmxl IGNoYW5nZXMuIFRoYXQgd2F5IHRoZSBvcmRlciBvZiBvcGVyYXRpb25zIHdpbGwgYmUKKyAgICAg ICAgIworICAgICAgICAjICAjIHRlc3QKKyAgICAgICAgIyAgIC0gY29uZmlnIGNoYW5nZSAxCisg ICAgICAgICMgICAtIGNvbmZpZyBjaGFuZ2UgMgorICAgICAgICAjICAgLSByZWxvYWQKKyAgICAg ICAgIyAgIyB0ZWFyZG93bgorICAgICAgICAjICAgLSB1bmRvIGNvbmZpZyBjaGFuZ2UgMgorICAg ICAgICAjICAgLSB1bmRvIGNvbmZpZyBjaGFuZ2UgMQorICAgICAgICAjICAgLSByZWxvYWQKKyAg ICAgICAgIworICAgICAgICBzZWxmLl9jbGVhbnVwX3N0YWNrLmNhbGxiYWNrKHNlbGYucGdfY3Rs LCAicmVsb2FkIikKKyAgICAgICAgeWllbGQgc2VsZi5fYmFja3VwX2NvbmZpZ3VyYXRpb24oKQor CisgICAgICAgICMgTm93IGFjdHVhbGx5IHJlbG9hZAorICAgICAgICBzZWxmLnBnX2N0bCgicmVs b2FkIikKKworICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIHJlc3RhcnRp bmcoc2VsZik6CisgICAgICAgICIiIkxpa2UgLnJlbG9hZGluZygpLCBidXQgd2l0aCBhIGZ1bGwg c2VydmVyIHJlc3RhcnQuIiIiCisgICAgICAgIHNlbGYuX2NsZWFudXBfc3RhY2suY2FsbGJhY2so c2VsZi5wZ19jdGwsICJyZXN0YXJ0IikKKyAgICAgICAgeWllbGQgc2VsZi5fYmFja3VwX2NvbmZp Z3VyYXRpb24oKQorICAgICAgICBzZWxmLnBnX2N0bCgicmVzdGFydCIpCisKKyAgICBkZWYgX2Jh Y2t1cF9jb25maWd1cmF0aW9uKHNlbGYpOgorICAgICAgICAjIFdyYXAgdGhlIGV4aXN0aW5nIEhC QSBhbmQgY29uZmlndXJhdGlvbiB3aXRoIEZpbGVCYWNrdXBzLgorICAgICAgICByZXR1cm4gQmFj a3VwKAorICAgICAgICAgICAgaGJhPXNlbGYuX2NsZWFudXBfc3RhY2suZW50ZXJfY29udGV4dChI QkEoc2VsZi5kYXRhZGlyKSksCisgICAgICAgICAgICBjb25mPXNlbGYuX2NsZWFudXBfc3RhY2su ZW50ZXJfY29udGV4dChDb25maWcoc2VsZi5kYXRhZGlyKSksCisgICAgICAgICkKKworICAgIEBj b250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIHN1YmNvbnRleHQoc2VsZik6CisgICAg ICAgICIiIgorICAgICAgICBDcmVhdGUgYSBuZXcgY2xlYW51cCBjb250ZXh0IGZvciBwZXItdGVz dCBpc29sYXRpb24uCisKKyAgICAgICAgVGVtcG9yYXJpbHkgcmVwbGFjZXMgdGhlIGNsZWFudXAg c3RhY2sgc28gdGhhdCBhbnkgY2xlYW51cCBjYWxsYmFja3MKKyAgICAgICAgcmVnaXN0ZXJlZCB3 aXRoaW4gdGhpcyBjb250ZXh0IHdpbGwgYmUgY2xlYW5lZCB1cCB3aGVuIHRoZSBjb250ZXh0IGV4 aXRzLgorICAgICAgICAiIiIKKyAgICAgICAgb2xkX3N0YWNrID0gc2VsZi5fY2xlYW51cF9zdGFj aworICAgICAgICBzZWxmLl9jbGVhbnVwX3N0YWNrID0gY29udGV4dGxpYi5FeGl0U3RhY2soKQor ICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLl9jbGVhbnVwX3N0YWNrLl9fZW50ZXJfXygp CisgICAgICAgICAgICB5aWVsZCBzZWxmCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBz ZWxmLl9jbGVhbnVwX3N0YWNrLl9fZXhpdF9fKE5vbmUsIE5vbmUsIE5vbmUpCisgICAgICAgICAg ICBzZWxmLl9jbGVhbnVwX3N0YWNrID0gb2xkX3N0YWNrCisKKyAgICBkZWYgc3RvcChzZWxmLCBt b2RlPSJmYXN0Iik6CisgICAgICAgICIiIgorICAgICAgICBTdG9wIHRoZSBQb3N0Z3JlU1FMIHNl cnZlciBpbnN0YW5jZS4KKworICAgICAgICBJZ25vcmVzIGZhaWx1cmVzIGlmIHRoZSBzZXJ2ZXIg aXMgYWxyZWFkeSBzdG9wcGVkLgorICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAg ICAgc2VsZi5wZ19jdGwoInN0b3AiLCAiLS1tb2RlIiwgbW9kZSkKKyAgICAgICAgZXhjZXB0IHN1 YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yOgorICAgICAgICAgICAgIyBTZXJ2ZXIgbWF5IGhh dmUgYWxyZWFkeSBiZWVuIHN0b3BwZWQKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiBsb2df Y29udGVudChzZWxmKSAtPiBzdHI6CisgICAgICAgICIiIlJldHVybiBsb2cgY29udGVudCBmcm9t IHRoZSBjdXJyZW50IGNvbnRleHQncyBzdGFydCBwb3NpdGlvbi4iIiIKKyAgICAgICAgd2l0aCBv cGVuKHNlbGYubG9nKSBhcyBmOgorICAgICAgICAgICAgZi5zZWVrKHNlbGYuX2xvZ19zdGFydF9w b3MpCisgICAgICAgICAgICByZXR1cm4gZi5yZWFkKCkKKworICAgIEBjb250ZXh0bGliLmNvbnRl eHRtYW5hZ2VyCisgICAgZGVmIGxvZ19jb250YWlucyhzZWxmLCBwYXR0ZXJuLCB0aW1lcz1Ob25l KToKKyAgICAgICAgIiIiCisgICAgICAgIENvbnRleHQgbWFuYWdlciB0aGF0IGNoZWNrcyBpZiB0 aGUgbG9nIG1hdGNoZXMgcGF0dGVybiBkdXJpbmcgdGhlIGJsb2NrLgorCisgICAgICAgIEFyZ3M6 CisgICAgICAgICAgICBwYXR0ZXJuOiBUaGUgcmVnZXggcGF0dGVybiB0byBzZWFyY2ggZm9yLgor ICAgICAgICAgICAgdGltZXM6IElmIE5vbmUsIGFueSBudW1iZXIgb2YgbWF0Y2hlcyBpcyBhY2Nl cHRlZC4KKyAgICAgICAgICAgICAgICAgICBJZiBhIG51bWJlciwgZXhhY3RseSB0aGF0IG1hbnkg bWF0Y2hlcyBhcmUgcmVxdWlyZWQuCisgICAgICAgICIiIgorICAgICAgICBzdGFydF9wb3MgPSBz ZWxmLmN1cnJlbnRfbG9nX3Bvc2l0aW9uKCkKKyAgICAgICAgeWllbGQKKyAgICAgICAgd2l0aCBv cGVuKHNlbGYubG9nKSBhcyBmOgorICAgICAgICAgICAgZi5zZWVrKHN0YXJ0X3BvcykKKyAgICAg ICAgICAgIGNvbnRlbnQgPSBmLnJlYWQoKQorICAgICAgICBpZiB0aW1lcyBpcyBOb25lOgorICAg ICAgICAgICAgYXNzZXJ0IHJlLnNlYXJjaChwYXR0ZXJuLCBjb250ZW50KSwgZiJQYXR0ZXJuIHtw YXR0ZXJuIXJ9IG5vdCBmb3VuZCBpbiBsb2ciCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBt YXRjaF9jb3VudCA9IGxlbihyZS5maW5kYWxsKHBhdHRlcm4sIGNvbnRlbnQpKQorICAgICAgICAg ICAgYXNzZXJ0IG1hdGNoX2NvdW50ID09IHRpbWVzLCAoCisgICAgICAgICAgICAgICAgZiJFeHBl Y3RlZCB7dGltZXN9IG1hdGNoZXMgb2Yge3BhdHRlcm4hcn0sIGZvdW5kIHttYXRjaF9jb3VudH0i CisgICAgICAgICAgICApCisKKyAgICBkZWYgY2xlYW51cChzZWxmKToKKyAgICAgICAgIiIiUnVu IGFsbCByZWdpc3RlcmVkIGNsZWFudXAgY2FsbGJhY2tzLiIiIgorICAgICAgICBzZWxmLl9jbGVh bnVwX3N0YWNrLmNsb3NlKCkKKworICAgIGRlZiBzZXRfdGltZW91dChzZWxmLCByZW1haW5pbmdf dGltZW91dF9mbjogQ2FsbGFibGVbW10sIGZsb2F0XSkgLT4gTm9uZToKKyAgICAgICAgIiIiCisg ICAgICAgIFNldCB0aGUgdGltZW91dCBmdW5jdGlvbiBmb3IgY29ubmVjdGlvbnMuCisgICAgICAg IFRoaXMgaXMgdHlwaWNhbGx5IGNhbGxlZCBieSBwZyBmaXh0dXJlIGZvciBlYWNoIHRlc3QuCisg ICAgICAgICIiIgorICAgICAgICBzZWxmLl9yZW1haW5pbmdfdGltZW91dF9mbiA9IHJlbWFpbmlu Z190aW1lb3V0X2ZuCisKKyAgICBkZWYgY29ubmVjdChzZWxmLCAqKm9wdHMpIC0+IFBHY29ubjoK KyAgICAgICAgIiIiCisgICAgICAgIENyZWF0ZXMgYSBjb25uZWN0aW9uIHRvIHRoaXMgUG9zdGdy ZVNRTCBzZXJ2ZXIgaW5zdGFuY2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgICoqb3B0 czogQWRkaXRpb25hbCBjb25uZWN0aW9uIG9wdGlvbnMgKGNhbiBvdmVycmlkZSBkZWZhdWx0cykK KworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgUEdjb25uOiBDb25uZWN0ZWQgZGF0YWJh c2UgY29ubmVjdGlvbgorCisgICAgICAgIEV4YW1wbGU6CisgICAgICAgICAgICBjb25uID0gcGcu Y29ubmVjdCgpCisgICAgICAgICAgICBjb25uID0gcGcuY29ubmVjdChkYm5hbWU9J215ZGInKQor ICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5fcmVtYWluaW5nX3RpbWVvdXRfZm4gaXMgTm9u ZToKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKKyAgICAgICAgICAgICAgICAiVGlt ZW91dCBmdW5jdGlvbiBub3Qgc2V0LiBVc2Ugc2V0X3RpbWVvdXQoKSBvciBwZyBmaXh0dXJlLiIK KyAgICAgICAgICAgICkKKworICAgICAgICBkZWZhdWx0cyA9IHsKKyAgICAgICAgICAgICJob3N0 Ijogc2VsZi5ob3N0LAorICAgICAgICAgICAgInBvcnQiOiBzZWxmLnBvcnQsCisgICAgICAgICAg ICAiZGJuYW1lIjogInBvc3RncmVzIiwKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0cy51cGRh dGUob3B0cykKKworICAgICAgICByZXR1cm4gbGlicHFfY29ubmVjdCgKKyAgICAgICAgICAgIHNl bGYubGlicHFfaGFuZGxlLAorICAgICAgICAgICAgc2VsZi5fY2xlYW51cF9zdGFjaywKKyAgICAg ICAgICAgIHNlbGYuX3JlbWFpbmluZ190aW1lb3V0X2ZuLAorICAgICAgICAgICAgKipkZWZhdWx0 cywKKyAgICAgICAgKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcHl0ZXN0L3B5cGcvdXRpbC5weSBi L3NyYy90ZXN0L3B5dGVzdC9weXBnL3V0aWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLmIyYTFlNjI3ZTRiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcHl0 ZXN0L3B5cGcvdXRpbC5weQpAQCAtMCwwICsxLDQyIEBACisjIENvcHlyaWdodCAoYykgMjAyNSwg UG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworaW1wb3J0IHNobGV4CitpbXBv cnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworCisKK2RlZiBlcHJpbnQoKmFyZ3MsICoqa3dhcmdz KToKKyAgICAiIiJlcHJpbnQgcHJpbnRzIHRvIHN0ZGVyciIiIgorICAgIHByaW50KCphcmdzLCBm aWxlPXN5cy5zdGRlcnIsICoqa3dhcmdzKQorCisKK2RlZiBydW4oKmNvbW1hbmQsIGNoZWNrPVRy dWUsIHNoZWxsPU5vbmUsIHNpbGVudD1GYWxzZSwgKiprd2FyZ3MpOgorICAgICIiInJ1biBydW5z IHRoZSBnaXZlbiBjb21tYW5kIGFuZCBwcmludHMgaXQgdG8gc3RkZXJyIiIiCisKKyAgICBpZiBz aGVsbCBpcyBOb25lOgorICAgICAgICBzaGVsbCA9IGxlbihjb21tYW5kKSA9PSAxIGFuZCBpc2lu c3RhbmNlKGNvbW1hbmRbMF0sIHN0cikKKworICAgIGlmIHNoZWxsOgorICAgICAgICBjb21tYW5k ID0gY29tbWFuZFswXQorICAgIGVsc2U6CisgICAgICAgIGNvbW1hbmQgPSBsaXN0KG1hcChzdHIs IGNvbW1hbmQpKQorCisgICAgaWYgbm90IHNpbGVudDoKKyAgICAgICAgaWYgc2hlbGw6CisgICAg ICAgICAgICBlcHJpbnQoZiIrIHtjb21tYW5kfSIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAg ICAjIFdlIGNvdWxkIG5vcm1hbGx5IHVzZSBzaGxleC5qb2luIGhlcmUsIGJ1dCBpdCdzIG5vdCBh dmFpbGFibGUgaW4KKyAgICAgICAgICAgICMgUHl0aG9uIDMuNiB3aGljaCB3ZSBzdGlsbCBsaWtl IHRvIHN1cHBvcnQKKyAgICAgICAgICAgIHVuc2FmZV9zdHJpbmdfY21kID0gIiAiLmpvaW4obWFw KHNobGV4LnF1b3RlLCBjb21tYW5kKSkKKyAgICAgICAgICAgIGVwcmludChmIisge3Vuc2FmZV9z dHJpbmdfY21kfSIpCisKKyAgICBpZiBzaWxlbnQ6CisgICAgICAgIGt3YXJncy5zZXRkZWZhdWx0 KCJzdGRvdXQiLCBzdWJwcm9jZXNzLkRFVk5VTEwpCisKKyAgICByZXR1cm4gc3VicHJvY2Vzcy5y dW4oY29tbWFuZCwgY2hlY2s9Y2hlY2ssIHNoZWxsPXNoZWxsLCAqKmt3YXJncykKKworCitkZWYg Y2FwdHVyZShjb21tYW5kLCAqYXJncywgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgZW5jb2Rpbmc9 InV0Zi04IiwgKiprd2FyZ3MpOgorICAgIHJldHVybiBydW4oCisgICAgICAgIGNvbW1hbmQsICph cmdzLCBzdGRvdXQ9c3Rkb3V0LCBlbmNvZGluZz1lbmNvZGluZywgKiprd2FyZ3MKKyAgICApLnN0 ZG91dC5yZW1vdmVzdWZmaXgoIlxuIikKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3B5dGVzdC9weXQv Y29uZnRlc3QucHkgYi9zcmMvdGVzdC9weXRlc3QvcHl0L2NvbmZ0ZXN0LnB5Cm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kZDczOTE3YzY4YwotLS0gL2Rldi9udWxsCisr KyBiL3NyYy90ZXN0L3B5dGVzdC9weXQvY29uZnRlc3QucHkKQEAgLTAsMCArMSBAQAorIyBDb3B5 cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9weXRlc3QvcHl0L3Rlc3RfZXJyb3JzLnB5IGIvc3JjL3Rlc3QvcHl0 ZXN0L3B5dC90ZXN0X2Vycm9ycy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uNzcxZmU4Zjc2ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9weXRlc3QvcHl0 L3Rlc3RfZXJyb3JzLnB5CkBAIC0wLDAgKzEsMzQgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI1LCBQ b3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisiIiIKK1Rlc3RzIGZvciBsaWJw cSBlcnJvciB0eXBlcyBhbmQgU1FMU1RBVEUtYmFzZWQgZXhjZXB0aW9uIG1hcHBpbmcuCisiIiIK KworaW1wb3J0IHB5dGVzdAorZnJvbSBsaWJwcSBpbXBvcnQgTGlicHFFcnJvcgorCisKK2RlZiB0 ZXN0X3N5bnRheF9lcnJvcihjb25uKToKKyAgICAiIiJJbnZhbGlkIFNRTCBzeW50YXggcmFpc2Vz IExpYnBxRXJyb3Igd2l0aCBjb3JyZWN0IFNRTFNUQVRFLiIiIgorICAgIHdpdGggcHl0ZXN0LnJh aXNlcyhMaWJwcUVycm9yKSBhcyBleGNfaW5mbzoKKyAgICAgICAgY29ubi5zcWwoIlNFTEVDIDEi KQorCisgICAgZXJyID0gZXhjX2luZm8udmFsdWUKKyAgICBhc3NlcnQgZXJyLnNxbHN0YXRlID09 ICI0MjYwMSIKKyAgICBhc3NlcnQgZXJyLnNxbHN0YXRlX2NsYXNzID09ICI0MiIKKyAgICBhc3Nl cnQgInN5bnRheCIgaW4gc3RyKGVycikubG93ZXIoKQorCisKK2RlZiB0ZXN0X3VuaXF1ZV92aW9s YXRpb24oY29ubik6CisgICAgIiIiVW5pcXVlIHZpb2xhdGlvbiBpbmNsdWRlcyBhbGwgZXJyb3Ig ZmllbGRzLiIiIgorICAgIGNvbm4uc3FsKCJDUkVBVEUgVEVNUCBUQUJMRSB0ZXN0X3V2IChpZCBp bnQgQ09OU1RSQUlOVCB0ZXN0X3V2X3BrIFBSSU1BUlkgS0VZKSIpCisgICAgY29ubi5zcWwoIklO U0VSVCBJTlRPIHRlc3RfdXYgVkFMVUVTICgxKSIpCisKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMo TGlicHFFcnJvcikgYXMgZXhjX2luZm86CisgICAgICAgIGNvbm4uc3FsKCJJTlNFUlQgSU5UTyB0 ZXN0X3V2IFZBTFVFUyAoMSkiKQorCisgICAgZXJyID0gZXhjX2luZm8udmFsdWUKKyAgICBhc3Nl cnQgZXJyLnNxbHN0YXRlID09ICIyMzUwNSIKKyAgICBhc3NlcnQgZXJyLnRhYmxlX25hbWUgPT0g InRlc3RfdXYiCisgICAgYXNzZXJ0IGVyci5jb25zdHJhaW50X25hbWUgPT0gInRlc3RfdXZfcGsi CisgICAgYXNzZXJ0IGVyci5kZXRhaWwgPT0gIktleSAoaWQpPSgxKSBhbHJlYWR5IGV4aXN0cy4i CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9weXRlc3QvcHl0L3Rlc3RfbGlicHEucHkgYi9zcmMvdGVz dC9weXRlc3QvcHl0L3Rlc3RfbGlicHEucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLjFkMGQ5YmMzYjk0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcHl0ZXN0 L3B5dC90ZXN0X2xpYnBxLnB5CkBAIC0wLDAgKzEsMzUgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI1 LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCitpbXBvcnQgY29udGV4dGxp YgoraW1wb3J0IG9zCitpbXBvcnQgc29ja2V0CitpbXBvcnQgc3RydWN0CitpbXBvcnQgdGhyZWFk aW5nCitmcm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGUKKworaW1wb3J0IHB5dGVzdAorCitmcm9t IGxpYnBxIGltcG9ydCBjb25uc3RyLCBMaWJwcUVycm9yCisKKworQHB5dGVzdC5tYXJrLnBhcmFt ZXRyaXplKAorICAgICJvcHRzLCBleHBlY3RlZCIsCisgICAgWworICAgICAgICAoZGljdCgpLCAi IiksCisgICAgICAgIChkaWN0KHBvcnQ9NTQzMiksICJwb3J0PTU0MzIiKSwKKyAgICAgICAgKGRp Y3QocG9ydD01NDMyLCBkYm5hbWU9InBvc3RncmVzIiksICJwb3J0PTU0MzIgZGJuYW1lPXBvc3Rn cmVzIiksCisgICAgICAgIChkaWN0KGhvc3Q9IiIpLCAiaG9zdD0nJyIpLAorICAgICAgICAoZGlj dChob3N0PSIgIiksIHIiaG9zdD0nICciKSwKKyAgICAgICAgKGRpY3Qoa2V5d29yZD0iJyIpLCBy ImtleXdvcmQ9XCciKSwKKyAgICAgICAgKGRpY3Qoa2V5d29yZD0iIFxcJyAiKSwgciJrZXl3b3Jk PScgXFxcJyAnIiksCisgICAgXSwKKykKK2RlZiB0ZXN0X2Nvbm5zdHIob3B0cywgZXhwZWN0ZWQp OgorICAgICIiIlRlc3RzIHRoZSBlc2NhcGUgYmVoYXZpb3IgZm9yIGNvbm5zdHIoKS4iIiIKKyAg ICBhc3NlcnQgY29ubnN0cihvcHRzKSA9PSBleHBlY3RlZAorCisKK2RlZiB0ZXN0X211c3RfY29u bmVjdF9lcnJvcnMoY29ubmVjdCk6CisgICAgIiIiVGVzdHMgdGhhdCBjb25uZWN0KCkgcmFpc2Vz IExpYnBxRXJyb3IuIiIiCisgICAgd2l0aCBweXRlc3QucmFpc2VzKExpYnBxRXJyb3IsIG1hdGNo PSJpbnZhbGlkIGNvbm5lY3Rpb24gb3B0aW9uIik6CisgICAgICAgIGNvbm5lY3Qoc29tZV91bmtu b3duX2tleXdvcmQ9IndoYXRldmVyIikKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3B5dGVzdC9weXQv dGVzdF9tdWx0aV9zZXJ2ZXIucHkgYi9zcmMvdGVzdC9weXRlc3QvcHl0L3Rlc3RfbXVsdGlfc2Vy dmVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44ZWUwNDViMGNj OAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3B5dGVzdC9weXQvdGVzdF9tdWx0aV9zZXJ2 ZXIucHkKQEAgLTAsMCArMSw0NiBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwg R2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyIiIgorVGVzdHMgZGVtb25zdHJhdGluZyBtdWx0 aS1zZXJ2ZXIgZnVuY3Rpb25hbGl0eSB1c2luZyBjcmVhdGVfcGcgZml4dHVyZS4KKworVGhlc2Ug dGVzdHMgdmVyaWZ5IHRoYXQgdGhlIHB5dGVzdCBpbmZyYXN0cnVjdHVyZSBjb3JyZWN0bHkgaGFu ZGxlcworbXVsdGlwbGUgUG9zdGdyZVNRTCBzZXJ2ZXIgaW5zdGFuY2VzIHdpdGhpbiBhIHNpbmds ZSB0ZXN0LCBhbmQgdGhhdAorbW9kdWxlLXNjb3BlZCBzZXJ2ZXJzIHBlcnNpc3QgYWNyb3NzIHRl c3RzLgorIiIiCisKK2ltcG9ydCBweXRlc3QKKworCitkZWYgdGVzdF9tdWx0aXBsZV9zZXJ2ZXJz X2Jhc2ljKGNyZWF0ZV9wZyk6CisgICAgIiIiVGVzdCB0aGF0IHdlIGNhbiBjcmVhdGUgYW5kIGNv bm5lY3QgdG8gbXVsdGlwbGUgc2VydmVycy4iIiIKKyAgICBub2RlMSA9IGNyZWF0ZV9wZygicHJp bWFyeSIpCisgICAgbm9kZTIgPSBjcmVhdGVfcGcoInNlY29uZGFyeSIpCisKKyAgICBjb25uMSA9 IG5vZGUxLmNvbm5lY3QoKQorICAgIGNvbm4yID0gbm9kZTIuY29ubmVjdCgpCisKKyAgICAjIEVh Y2ggc2VydmVyIHNob3VsZCBoYXZlIGl0cyBvd24gZGF0YSBkaXJlY3RvcnkKKyAgICBkYXRhZGly MSA9IGNvbm4xLnNxbCgiU0hPVyBkYXRhX2RpcmVjdG9yeSIpCisgICAgZGF0YWRpcjIgPSBjb25u Mi5zcWwoIlNIT1cgZGF0YV9kaXJlY3RvcnkiKQorICAgIGFzc2VydCBkYXRhZGlyMSAhPSBkYXRh ZGlyMgorCisgICAgIyBFYWNoIHNlcnZlciBzaG91bGQgYmUgbGlzdGVuaW5nIG9uIGEgZGlmZmVy ZW50IHBvcnQKKyAgICBhc3NlcnQgbm9kZTEucG9ydCAhPSBub2RlMi5wb3J0CisKKworQHB5dGVz dC5maXh0dXJlKHNjb3BlPSJtb2R1bGUiKQorZGVmIHNoYXJlZF9zZXJ2ZXIoY3JlYXRlX3BnX21v ZHVsZSk6CisgICAgIiIiQSBzZXJ2ZXIgc2hhcmVkIGFjcm9zcyBhbGwgdGVzdHMgaW4gdGhpcyBt b2R1bGUuIiIiCisgICAgc2VydmVyID0gY3JlYXRlX3BnX21vZHVsZSgic2hhcmVkIikKKyAgICBz ZXJ2ZXIuc3FsKCJDUkVBVEUgVEFCTEUgbW9kdWxlX3N0YXRlICh2YWx1ZSBpbnQgREVGQVVMVCAw KSIpCisgICAgcmV0dXJuIHNlcnZlcgorCisKK2RlZiB0ZXN0X21vZHVsZV9zZXJ2ZXJfY3JlYXRl X3JvdyhzaGFyZWRfc2VydmVyKToKKyAgICAiIiJGaXJzdCB0ZXN0OiBjcmVhdGUgYSByb3cgaW4g dGhlIHNoYXJlZCBzZXJ2ZXIuIiIiCisgICAgc2hhcmVkX3NlcnZlci5jb25uZWN0KCkuc3FsKCJJ TlNFUlQgSU5UTyBtb2R1bGVfc3RhdGUgVkFMVUVTICg0MikiKQorCisKK2RlZiB0ZXN0X21vZHVs ZV9zZXJ2ZXJfc2VlX3JvdyhzaGFyZWRfc2VydmVyKToKKyAgICAiIiJTZWNvbmQgdGVzdDogdmVy aWZ5IHdlIHNlZSB0aGUgcm93IGZyb20gdGhlIHByZXZpb3VzIHRlc3QuIiIiCisgICAgYXNzZXJ0 IHNoYXJlZF9zZXJ2ZXIuY29ubmVjdCgpLnNxbCgiU0VMRUNUIHZhbHVlIEZST00gbW9kdWxlX3N0 YXRlIikgPT0gNDIKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3B5dGVzdC9weXQvdGVzdF9xdWVyeV9o ZWxwZXJzLnB5IGIvc3JjL3Rlc3QvcHl0ZXN0L3B5dC90ZXN0X3F1ZXJ5X2hlbHBlcnMucHkKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmFiY2Q5MDg0MjE0Ci0tLSAvZGV2 L251bGwKKysrIGIvc3JjL3Rlc3QvcHl0ZXN0L3B5dC90ZXN0X3F1ZXJ5X2hlbHBlcnMucHkKQEAg LTAsMCArMSwzNDcgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBE ZXZlbG9wbWVudCBHcm91cAorCisiIiIKK1Rlc3RzIGZvciBxdWVyeSBoZWxwZXIgZnVuY3Rpb25z IHdpdGggdHlwZSBjb252ZXJzaW9uIGFuZCByZXN1bHQgc2ltcGxpZmljYXRpb24uCisiIiIKKwor aW1wb3J0IHV1aWQKKworaW1wb3J0IHB5dGVzdAorCisKK2RlZiB0ZXN0X3NpbmdsZV9jZWxsX2lu dChjb25uKToKKyAgICAiIiJTaW5nbGUgY2VsbCBpbnRlZ2VyIHF1ZXJ5IHJldHVybnMganVzdCB0 aGUgdmFsdWUuIiIiCisgICAgcmVzdWx0ID0gY29ubi5zcWwoIlNFTEVDVCAxIikKKyAgICBhc3Nl cnQgcmVzdWx0ID09IDEKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXN1bHQsIGludCkKKworCitk ZWYgdGVzdF9zaW5nbGVfY2VsbF9zdHJpbmcoY29ubik6CisgICAgIiIiU2luZ2xlIGNlbGwgc3Ry aW5nIHF1ZXJ5IHJldHVybnMganVzdCB0aGUgdmFsdWUuIiIiCisgICAgcmVzdWx0ID0gY29ubi5z cWwoIlNFTEVDVCAnaGVsbG8nIikKKyAgICBhc3NlcnQgcmVzdWx0ID09ICJoZWxsbyIKKyAgICBh c3NlcnQgaXNpbnN0YW5jZShyZXN1bHQsIHN0cikKKworCitkZWYgdGVzdF9zaW5nbGVfY2VsbF9i b29sKGNvbm4pOgorICAgICIiIlNpbmdsZSBjZWxsIGJvb2xlYW4gcXVlcnkgcmV0dXJucyBqdXN0 IHRoZSB2YWx1ZS4iIiIKKworICAgIHJlc3VsdCA9IGNvbm4uc3FsKCJTRUxFQ1QgdHJ1ZSIpCisg ICAgYXNzZXJ0IHJlc3VsdCBpcyBUcnVlCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVzdWx0LCBi b29sKQorCisgICAgcmVzdWx0ID0gY29ubi5zcWwoIlNFTEVDVCBmYWxzZSIpCisgICAgYXNzZXJ0 IHJlc3VsdCBpcyBGYWxzZQorCisKK2RlZiB0ZXN0X3NpbmdsZV9jZWxsX2Zsb2F0KGNvbm4pOgor ICAgICIiIlNpbmdsZSBjZWxsIGZsb2F0IHF1ZXJ5IHJldHVybnMganVzdCB0aGUgdmFsdWUuIiIi CisKKyAgICByZXN1bHQgPSBjb25uLnNxbCgiU0VMRUNUIDMuMTQ6OmZsb2F0NCIpCisgICAgYXNz ZXJ0IGlzaW5zdGFuY2UocmVzdWx0LCBmbG9hdCkKKyAgICBhc3NlcnQgYWJzKHJlc3VsdCAtIDMu MTQpIDwgMC4wMQorCisKK2RlZiB0ZXN0X3NpbmdsZV9jZWxsX251bGwoY29ubik6CisgICAgIiIi U2luZ2xlIGNlbGwgTlVMTCBxdWVyeSByZXR1cm5zIE5vbmUuIiIiCisKKyAgICByZXN1bHQgPSBj b25uLnNxbCgiU0VMRUNUIE5VTEwiKQorICAgIGFzc2VydCByZXN1bHQgaXMgTm9uZQorCisKK2Rl ZiB0ZXN0X3NpbmdsZV9yb3dfbXVsdGlwbGVfY29sdW1ucyhjb25uKToKKyAgICAiIiJTaW5nbGUg cm93IHdpdGggbXVsdGlwbGUgY29sdW1ucyByZXR1cm5zIGEgdHVwbGUuIiIiCisKKyAgICByZXN1 bHQgPSBjb25uLnNxbCgiU0VMRUNUIDEsICdoZWxsbycsIHRydWUiKQorICAgIGFzc2VydCByZXN1 bHQgPT0gKDEsICJoZWxsbyIsIFRydWUpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVzdWx0LCB0 dXBsZSkKKworCitkZWYgdGVzdF9zaW5nbGVfY29sdW1uX211bHRpcGxlX3Jvd3MoY29ubik6Cisg ICAgIiIiU2luZ2xlIGNvbHVtbiB3aXRoIG11bHRpcGxlIHJvd3MgcmV0dXJucyBhIGxpc3Qgb2Yg dmFsdWVzLiIiIgorCisgICAgcmVzdWx0ID0gY29ubi5zcWwoIlNFTEVDVCAqIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDMpIikKKyAgICBhc3NlcnQgcmVzdWx0ID09IFsxLCAyLCAzXQorICAgIGFz c2VydCBpc2luc3RhbmNlKHJlc3VsdCwgbGlzdCkKKworCitkZWYgdGVzdF9tdWx0aXBsZV9yb3dz X2FuZF9jb2x1bW5zKGNvbm4pOgorICAgICIiIk11bHRpcGxlIHJvd3MgYW5kIGNvbHVtbnMgcmV0 dXJucyBsaXN0IG9mIHR1cGxlcy4iIiIKKworICAgIHJlc3VsdCA9IGNvbm4uc3FsKCJTRUxFQ1Qg KiBGUk9NIChWQUxVRVMgKDEsICdhJyksICgyLCAnYicpLCAoMywgJ2MnKSkgQVMgdCIpCisgICAg YXNzZXJ0IHJlc3VsdCA9PSBbKDEsICJhIiksICgyLCAiYiIpLCAoMywgImMiKV0KKyAgICBhc3Nl cnQgaXNpbnN0YW5jZShyZXN1bHQsIGxpc3QpCisgICAgYXNzZXJ0IGFsbChpc2luc3RhbmNlKHJv dywgdHVwbGUpIGZvciByb3cgaW4gcmVzdWx0KQorCisKK2RlZiB0ZXN0X2VtcHR5X3Jlc3VsdChj b25uKToKKyAgICAiIiJFbXB0eSByZXN1bHQgc2V0IHJldHVybnMgZW1wdHkgbGlzdC4iIiIKKwor ICAgIHJlc3VsdCA9IGNvbm4uc3FsKCJTRUxFQ1QgMSBXSEVSRSBmYWxzZSIpCisgICAgYXNzZXJ0 IHJlc3VsdCA9PSBbXQorCisKK2RlZiB0ZXN0X3F1ZXJ5X2Vycm9yX2hhbmRsaW5nKGNvbm4pOgor ICAgICIiIlF1ZXJ5IGVycm9ycyByYWlzZSBSdW50aW1lRXJyb3Igd2l0aCBhY3R1YWwgZXJyb3Ig bWVzc2FnZS4iIiIKKworICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhSdW50aW1lRXJyb3IpIGFzIGV4 Y19pbmZvOgorICAgICAgICBjb25uLnNxbCgiU0VMRUNUICogRlJPTSBub25leGlzdGVudF90YWJs ZSIpCisKKyAgICBlcnJvcl9tc2cgPSBzdHIoZXhjX2luZm8udmFsdWUpCisgICAgYXNzZXJ0ICJu b25leGlzdGVudF90YWJsZSIgaW4gZXJyb3JfbXNnIG9yICJkb2VzIG5vdCBleGlzdCIgaW4gZXJy b3JfbXNnCisKKworZGVmIHRlc3RfZGl2aXNpb25fYnlfemVyb19lcnJvcihjb25uKToKKyAgICAi IiJEaXZpc2lvbiBieSB6ZXJvIHJhaXNlcyBSdW50aW1lRXJyb3IuIiIiCisKKyAgICB3aXRoIHB5 dGVzdC5yYWlzZXMoUnVudGltZUVycm9yKSBhcyBleGNfaW5mbzoKKyAgICAgICAgY29ubi5zcWwo IlNFTEVDVCAxLzAiKQorCisgICAgZXJyb3JfbXNnID0gc3RyKGV4Y19pbmZvLnZhbHVlKQorICAg IGFzc2VydCAiZGl2aXNpb24gYnkgemVybyIgaW4gZXJyb3JfbXNnLmxvd2VyKCkKKworCitkZWYg dGVzdF9zaW1wbGVfZXhlY19jcmVhdGVfdGFibGUoY29ubik6CisgICAgIiIic3FsIGZvciBDUkVB VEUgVEFCTEUgcmV0dXJucyBOb25lLiIiIgorCisgICAgcmVzdWx0ID0gY29ubi5zcWwoIkNSRUFU RSBURU1QIFRBQkxFIHRlc3RfdGFibGUgKGlkIGludCwgbmFtZSB0ZXh0KSIpCisgICAgYXNzZXJ0 IHJlc3VsdCBpcyBOb25lCisKKyAgICAjIFZlcmlmeSB0YWJsZSB3YXMgY3JlYXRlZAorICAgIGNv dW50ID0gY29ubi5zcWwoIlNFTEVDVCBDT1VOVCgqKSBGUk9NIHRlc3RfdGFibGUiKQorICAgIGFz c2VydCBjb3VudCA9PSAwCisKKworZGVmIHRlc3Rfc2ltcGxlX2V4ZWNfaW5zZXJ0KGNvbm4pOgor ICAgICIiInNxbCBmb3IgSU5TRVJUIHJldHVybnMgTm9uZS4iIiIKKworICAgIGNvbm4uc3FsKCJD UkVBVEUgVEVNUCBUQUJMRSB0ZXN0X3RhYmxlIChpZCBpbnQsIG5hbWUgdGV4dCkiKQorICAgIHJl c3VsdCA9IGNvbm4uc3FsKCJJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIFZBTFVFUyAoMSwgJ0FsaWNl JyksICgyLCAnQm9iJykiKQorICAgIGFzc2VydCByZXN1bHQgaXMgTm9uZQorCisgICAgIyBWZXJp ZnkgZGF0YSB3YXMgaW5zZXJ0ZWQKKyAgICBjb3VudCA9IGNvbm4uc3FsKCJTRUxFQ1QgQ09VTlQo KikgRlJPTSB0ZXN0X3RhYmxlIikKKyAgICBhc3NlcnQgY291bnQgPT0gMgorCisKK2RlZiB0ZXN0 X3R5cGVfY29udmVyc2lvbl9taXhlZChjb25uKToKKyAgICAiIiJUZXN0IG1peGVkIHR5cGUgY29u dmVyc2lvbiBpbiBhIHNpbmdsZSByb3cuIiIiCisKKyAgICByZXN1bHQgPSBjb25uLnNxbCgiU0VM RUNUIDQyOjppbnQ0LCAxMjM6OmludDgsIDMuMTQ6OmZsb2F0OCwgJ3RleHQnLCB0cnVlLCBOVUxM IikKKyAgICBhc3NlcnQgcmVzdWx0ID09ICg0MiwgMTIzLCAzLjE0LCAidGV4dCIsIFRydWUsIE5v bmUpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVzdWx0WzBdLCBpbnQpCisgICAgYXNzZXJ0IGlz aW5zdGFuY2UocmVzdWx0WzFdLCBpbnQpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVzdWx0WzJd LCBmbG9hdCkKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXN1bHRbM10sIHN0cikKKyAgICBhc3Nl cnQgaXNpbnN0YW5jZShyZXN1bHRbNF0sIGJvb2wpCisgICAgYXNzZXJ0IHJlc3VsdFs1XSBpcyBO b25lCisKKworZGVmIHRlc3RfbXVsdGlwbGVfcXVlcmllc19zYW1lX2Nvbm5lY3Rpb24oY29ubik6 CisgICAgIiIiVGVzdCBydW5uaW5nIG11bHRpcGxlIHF1ZXJpZXMgb24gdGhlIHNhbWUgY29ubmVj dGlvbi4iIiIKKworICAgIHJlc3VsdDEgPSBjb25uLnNxbCgiU0VMRUNUIDEiKQorICAgIGFzc2Vy dCByZXN1bHQxID09IDEKKworICAgIHJlc3VsdDIgPSBjb25uLnNxbCgiU0VMRUNUICdoZWxsbycs ICd3b3JsZCciKQorICAgIGFzc2VydCByZXN1bHQyID09ICgiaGVsbG8iLCAid29ybGQiKQorCisg ICAgcmVzdWx0MyA9IGNvbm4uc3FsKCJTRUxFQ1QgKiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1 KSIpCisgICAgYXNzZXJ0IHJlc3VsdDMgPT0gWzEsIDIsIDMsIDQsIDVdCisKKworZGVmIHRlc3Rf ZGF0ZV90eXBlKGNvbm4pOgorICAgICIiIlRlc3QgZGF0ZSB0eXBlIGNvbnZlcnNpb24uIiIiCisg ICAgaW1wb3J0IGRhdGV0aW1lCisKKyAgICByZXN1bHQgPSBjb25uLnNxbCgiU0VMRUNUICcyMDI1 LTEwLTIwJzo6ZGF0ZSIpCisgICAgYXNzZXJ0IHJlc3VsdCA9PSBkYXRldGltZS5kYXRlKDIwMjUs IDEwLCAyMCkKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXN1bHQsIGRhdGV0aW1lLmRhdGUpCisK KworZGVmIHRlc3RfdGltZXN0YW1wX3R5cGUoY29ubik6CisgICAgIiIiVGVzdCB0aW1lc3RhbXAg dHlwZSBjb252ZXJzaW9uLiIiIgorICAgIGltcG9ydCBkYXRldGltZQorCisgICAgcmVzdWx0ID0g Y29ubi5zcWwoIlNFTEVDVCAnMjAyNS0xMC0yMCAxNTozMDo0NSc6OnRpbWVzdGFtcCIpCisgICAg YXNzZXJ0IHJlc3VsdCA9PSBkYXRldGltZS5kYXRldGltZSgyMDI1LCAxMCwgMjAsIDE1LCAzMCwg NDUpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVzdWx0LCBkYXRldGltZS5kYXRldGltZSkKKwor CitkZWYgdGVzdF90aW1lX3R5cGUoY29ubik6CisgICAgIiIiVGVzdCB0aW1lIHR5cGUgY29udmVy c2lvbi4iIiIKKyAgICBpbXBvcnQgZGF0ZXRpbWUKKworICAgIHJlc3VsdCA9IGNvbm4uc3FsKCJT RUxFQ1QgJzE1OjMwOjQ1Jzo6dGltZSIpCisgICAgYXNzZXJ0IHJlc3VsdCA9PSBkYXRldGltZS50 aW1lKDE1LCAzMCwgNDUpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVzdWx0LCBkYXRldGltZS50 aW1lKQorCisKK2RlZiB0ZXN0X251bWVyaWNfdHlwZShjb25uKToKKyAgICAiIiJUZXN0IG51bWVy aWMvZGVjaW1hbCB0eXBlIGNvbnZlcnNpb24uIiIiCisgICAgaW1wb3J0IGRlY2ltYWwKKworICAg IHJlc3VsdCA9IGNvbm4uc3FsKCJTRUxFQ1QgMTIzLjQ1Njo6bnVtZXJpYyIpCisgICAgYXNzZXJ0 IHJlc3VsdCA9PSBkZWNpbWFsLkRlY2ltYWwoIjEyMy40NTYiKQorICAgIGFzc2VydCBpc2luc3Rh bmNlKHJlc3VsdCwgZGVjaW1hbC5EZWNpbWFsKQorCisKK2RlZiB0ZXN0X2ludF9hcnJheShjb25u KToKKyAgICAiIiJUZXN0IGludGVnZXIgYXJyYXkgdHlwZSBjb252ZXJzaW9uLiIiIgorCisgICAg cmVzdWx0ID0gY29ubi5zcWwoIlNFTEVDVCBBUlJBWVsxLCAyLCAzLCA0LCA1XSIpCisgICAgYXNz ZXJ0IHJlc3VsdCA9PSBbMSwgMiwgMywgNCwgNV0KKyAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXN1 bHQsIGxpc3QpCisgICAgYXNzZXJ0IGFsbChpc2luc3RhbmNlKHgsIGludCkgZm9yIHggaW4gcmVz dWx0KQorCisKK2RlZiB0ZXN0X3RleHRfYXJyYXkoY29ubik6CisgICAgIiIiVGVzdCB0ZXh0IGFy cmF5IHR5cGUgY29udmVyc2lvbi4iIiIKKworICAgIHJlc3VsdCA9IGNvbm4uc3FsKCJTRUxFQ1Qg QVJSQVlbJ2hlbGxvJywgJ3dvcmxkJywgJ3Rlc3QnXSIpCisgICAgYXNzZXJ0IHJlc3VsdCA9PSBb ImhlbGxvIiwgIndvcmxkIiwgInRlc3QiXQorICAgIGFzc2VydCBpc2luc3RhbmNlKHJlc3VsdCwg bGlzdCkKKyAgICBhc3NlcnQgYWxsKGlzaW5zdGFuY2UoeCwgc3RyKSBmb3IgeCBpbiByZXN1bHQp CisKKworZGVmIHRlc3RfYm9vbF9hcnJheShjb25uKToKKyAgICAiIiJUZXN0IGJvb2xlYW4gYXJy YXkgdHlwZSBjb252ZXJzaW9uLiIiIgorCisgICAgcmVzdWx0ID0gY29ubi5zcWwoIlNFTEVDVCBB UlJBWVt0cnVlLCBmYWxzZSwgdHJ1ZV0iKQorICAgIGFzc2VydCByZXN1bHQgPT0gW1RydWUsIEZh bHNlLCBUcnVlXQorICAgIGFzc2VydCBpc2luc3RhbmNlKHJlc3VsdCwgbGlzdCkKKyAgICBhc3Nl cnQgYWxsKGlzaW5zdGFuY2UoeCwgYm9vbCkgZm9yIHggaW4gcmVzdWx0KQorCisKK2RlZiB0ZXN0 X2VtcHR5X2FycmF5KGNvbm4pOgorICAgICIiIlRlc3QgZW1wdHkgYXJyYXkgdHlwZSBjb252ZXJz aW9uLiIiIgorCisgICAgcmVzdWx0ID0gY29ubi5zcWwoIlNFTEVDVCBBUlJBWVtdOjppbnRbXSIp CisgICAgYXNzZXJ0IHJlc3VsdCA9PSBbXQorICAgIGFzc2VydCBpc2luc3RhbmNlKHJlc3VsdCwg bGlzdCkKKworCitkZWYgdGVzdF9qc29uX3R5cGUoY29ubik6CisgICAgIiIiVGVzdCBKU09OIHR5 cGUgKHBhcnNlZCB0byBkaWN0KS4iIiIKKworICAgIHJlc3VsdCA9IGNvbm4uc3FsKCdTRUxFQ1Qg XCd7ImtleSI6ICJ2YWx1ZSJ9XCc6Ompzb24nKQorICAgIGFzc2VydCBpc2luc3RhbmNlKHJlc3Vs dCwgZGljdCkKKyAgICBhc3NlcnQgcmVzdWx0ID09IHsia2V5IjogInZhbHVlIn0KKworCitkZWYg dGVzdF9qc29uYl90eXBlKGNvbm4pOgorICAgICIiIlRlc3QgSlNPTkIgdHlwZSAocGFyc2VkIHRv IGRpY3QpLiIiIgorCisgICAgcmVzdWx0ID0gY29ubi5zcWwoJ1NFTEVDVCBcJ3sibmFtZSI6ICJ0 ZXN0IiwgImNvdW50IjogNDJ9XCc6Ompzb25iJykKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXN1 bHQsIGRpY3QpCisgICAgYXNzZXJ0IHJlc3VsdCA9PSB7Im5hbWUiOiAidGVzdCIsICJjb3VudCI6 IDQyfQorCisKK2RlZiB0ZXN0X2pzb25fYXJyYXkoY29ubik6CisgICAgIiIiVGVzdCBKU09OIGFy cmF5IHR5cGUuIiIiCisKKyAgICByZXN1bHQgPSBjb25uLnNxbCgiU0VMRUNUICdbMSwgMiwgMywg NCwgNV0nOjpqc29uIikKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXN1bHQsIGxpc3QpCisgICAg YXNzZXJ0IHJlc3VsdCA9PSBbMSwgMiwgMywgNCwgNV0KKworCitkZWYgdGVzdF9qc29uX25lc3Rl ZChjb25uKToKKyAgICAiIiJUZXN0IG5lc3RlZCBKU09OIG9iamVjdC4iIiIKKworICAgIHJlc3Vs dCA9IGNvbm4uc3FsKAorICAgICAgICAnU0VMRUNUIFwneyJ1c2VyIjogeyJpZCI6IDEsICJuYW1l IjogIkFsaWNlIn0sICJhY3RpdmUiOiB0cnVlfVwnOjpqc29uJworICAgICkKKyAgICBhc3NlcnQg aXNpbnN0YW5jZShyZXN1bHQsIGRpY3QpCisgICAgYXNzZXJ0IHJlc3VsdCA9PSB7InVzZXIiOiB7 ImlkIjogMSwgIm5hbWUiOiAiQWxpY2UifSwgImFjdGl2ZSI6IFRydWV9CisKKworZGVmIHRlc3Rf bWl4ZWRfdHlwZXNfd2l0aF9hcnJheXMoY29ubik6CisgICAgIiIiVGVzdCBtaXhlZCB0eXBlcyBp bmNsdWRpbmcgYXJyYXlzIGluIGEgc2luZ2xlIHJvdy4iIiIKKworICAgIHJlc3VsdCA9IGNvbm4u c3FsKCJTRUxFQ1QgNDIsICd0ZXh0JywgQVJSQVlbMSwgMiwgM10sIHRydWUiKQorICAgIGFzc2Vy dCByZXN1bHQgPT0gKDQyLCAidGV4dCIsIFsxLCAyLCAzXSwgVHJ1ZSkKKyAgICBhc3NlcnQgaXNp bnN0YW5jZShyZXN1bHRbMF0sIGludCkKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXN1bHRbMV0s IHN0cikKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXN1bHRbMl0sIGxpc3QpCisgICAgYXNzZXJ0 IGlzaW5zdGFuY2UocmVzdWx0WzNdLCBib29sKQorCisKK2RlZiB0ZXN0X3V1aWRfdHlwZShjb25u KToKKyAgICAiIiJUZXN0IFVVSUQgdHlwZSBjb252ZXJzaW9uLiIiIgorICAgIHRlc3RfdXVpZCA9 ICI1NTBlODQwMC1lMjliLTQxZDQtYTcxNi00NDY2NTU0NDAwMDAiCisgICAgcmVzdWx0ID0gY29u bi5zcWwoZiJTRUxFQ1QgJ3t0ZXN0X3V1aWR9Jzo6dXVpZCIpCisgICAgYXNzZXJ0IHJlc3VsdCA9 PSB1dWlkLlVVSUQodGVzdF91dWlkKQorICAgIGFzc2VydCBpc2luc3RhbmNlKHJlc3VsdCwgdXVp ZC5VVUlEKQorCisKK2RlZiB0ZXN0X3V1aWRfZ2VuZXJhdGlvbihjb25uKToKKyAgICAiIiJUZXN0 IGdlbmVyYXRlZCBVVUlEIHR5cGUgY29udmVyc2lvbi4iIiIKKyAgICByZXN1bHQgPSBjb25uLnNx bCgiU0VMRUNUIHV1aWR2NCgpIikKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXN1bHQsIHV1aWQu VVVJRCkKKyAgICAjIENoZWNrIGl0J3MgYSB2YWxpZCBVVUlEIGJ5IGVuc3VyaW5nIGl0IGNhbiBi ZSBjb252ZXJ0ZWQgdG8gc3RyaW5nCisgICAgYXNzZXJ0IGxlbihzdHIocmVzdWx0KSkgPT0gMzYg ICMgVVVJRCBzdHJpbmcgZm9ybWF0IGxlbmd0aAorCisKK2RlZiB0ZXN0X3RleHRfYXJyYXlfd2l0 aF9jb21tYXMoY29ubik6CisgICAgIiIiVGVzdCB0ZXh0IGFycmF5IHdpdGggZWxlbWVudHMgY29u dGFpbmluZyBjb21tYXMuIiIiCisKKyAgICByZXN1bHQgPSBjb25uLnNxbCgiU0VMRUNUIEFSUkFZ WydBLEInLCAnQycsICcgRCAnXSIpCisgICAgYXNzZXJ0IHJlc3VsdCA9PSBbIkEsQiIsICJDIiwg IiBEICJdCisKKworZGVmIHRlc3RfdGV4dF9hcnJheV93aXRoX3F1b3Rlcyhjb25uKToKKyAgICAi IiJUZXN0IHRleHQgYXJyYXkgd2l0aCBlbGVtZW50cyBjb250YWluaW5nIHF1b3Rlcy4iIiIKKwor ICAgIHJlc3VsdCA9IGNvbm4uc3FsKHIiU0VMRUNUIEFSUkFZW0UnYVwiYicsICdjJ10iKQorICAg IGFzc2VydCByZXN1bHQgPT0gWydhImInLCAiYyJdCisKKworZGVmIHRlc3RfdGV4dF9hcnJheV93 aXRoX2JhY2tzbGFzaChjb25uKToKKyAgICAiIiJUZXN0IHRleHQgYXJyYXkgd2l0aCBlbGVtZW50 cyBjb250YWluaW5nIGJhY2tzbGFzaGVzLiIiIgorCisgICAgcmVzdWx0ID0gY29ubi5zcWwociJT RUxFQ1QgQVJSQVlbRSdhXFxiJywgJ2MnXSIpCisgICAgYXNzZXJ0IHJlc3VsdCA9PSBbImFcXGIi LCAiYyJdCisKKworZGVmIHRlc3RfanNvbl9hcnJheV90eXBlKGNvbm4pOgorICAgICIiIlRlc3Qg YXJyYXkgb2YgSlNPTiB2YWx1ZXMgd2l0aCBlbWJlZGRlZCBxdW90ZXMgYW5kIGNvbW1hcy4iIiIK KworICAgIHJlc3VsdCA9IGNvbm4uc3FsKCIiIlNFTEVDVCBBUlJBWVsneyJhYmMiOiAxMjMsICJ4 eXoiOiA0NTZ9Jzo6anNvbl0iIiIpCisgICAgYXNzZXJ0IHJlc3VsdCA9PSBbeyJhYmMiOiAxMjMs ICJ4eXoiOiA0NTZ9XQorCisKK2RlZiB0ZXN0X2pzb25fYXJyYXlfbXVsdGlwbGUoY29ubik6Cisg ICAgIiIiVGVzdCBhcnJheSBvZiBtdWx0aXBsZSBKU09OIG9iamVjdHMuIiIiCisKKyAgICByZXN1 bHQgPSBjb25uLnNxbCgKKyAgICAgICAgIiIiU0VMRUNUIEFSUkFZWyd7ImEiOiAxfSc6Ompzb24s ICd7ImIiOiAyfSc6Ompzb24sICdbIngiLCAieSJdJzo6anNvbl0iIiIKKyAgICApCisgICAgYXNz ZXJ0IHJlc3VsdCA9PSBbeyJhIjogMX0sIHsiYiI6IDJ9LCBbIngiLCAieSJdXQorCisKK2RlZiB0 ZXN0XzJkX2ludF9hcnJheShjb25uKToKKyAgICAiIiJUZXN0IDJEIGludGVnZXIgYXJyYXkuIiIi CisKKyAgICByZXN1bHQgPSBjb25uLnNxbCgiU0VMRUNUIEFSUkFZW1sxLDJdLFszLDRdXSIpCisg ICAgYXNzZXJ0IHJlc3VsdCA9PSBbWzEsIDJdLCBbMywgNF1dCisKKworZGVmIHRlc3RfMmRfdGV4 dF9hcnJheShjb25uKToKKyAgICAiIiJUZXN0IDJEIGludGVnZXIgYXJyYXkuIiIiCisKKyAgICBy ZXN1bHQgPSBjb25uLnNxbCgiU0VMRUNUIEFSUkFZW1snYScsJ2InXSxbJ2MnLCdkLGUnXV0iKQor ICAgIGFzc2VydCByZXN1bHQgPT0gW1siYSIsICJiIl0sIFsiYyIsICJkLGUiXV0KKworCitkZWYg dGVzdF8zZF9pbnRfYXJyYXkoY29ubik6CisgICAgIiIiVGVzdCAzRCBpbnRlZ2VyIGFycmF5LiIi IgorCisgICAgcmVzdWx0ID0gY29ubi5zcWwoIlNFTEVDVCBBUlJBWVtbWzEsMl0sWzMsNF1dLFtb NSw2XSxbNyw4XV1dIikKKyAgICBhc3NlcnQgcmVzdWx0ID09IFtbWzEsIDJdLCBbMywgNF1dLCBb WzUsIDZdLCBbNywgOF1dXQorCisKK2RlZiB0ZXN0X2FycmF5X3dpdGhfbnVsbChjb25uKToKKyAg ICAiIiJUZXN0IGFycmF5IHdpdGggTlVMTCBlbGVtZW50cy4iIiIKKworICAgIHJlc3VsdCA9IGNv bm4uc3FsKCJTRUxFQ1QgQVJSQVlbMSwgTlVMTCwgM10iKQorICAgIGFzc2VydCByZXN1bHQgPT0g WzEsIE5vbmUsIDNdCi0tIAoyLjUzLjAKCg== --96edea3d04a35249385fadaf89258e13166ceb54185dbcc5d8ae1ac19276 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v12-0003-POC-Convert-load-balance-tests-from-perl-to-pyth.patch Content-Type: text/x-patch; charset=utf-8; name=v12-0003-POC-Convert-load-balance-tests-from-perl-to-pyth.patch RnJvbSBiOWRiMjkyNWY0MWQzMjkzOGNjODFkZmFjM2E1NmQ4Y2U4M2JkNDhhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBGcmksIDI2IERlYyAyMDI1IDEyOjMxOjQzICswMTAwClN1YmplY3Q6IFtQQVRDSCB2 MTIgMy81XSBQT0M6IENvbnZlcnQgbG9hZCBiYWxhbmNlIHRlc3RzIGZyb20gcGVybCB0byBweXRo b24KClRoaXMgaXMgYSBwcm9vZiBvZiBjb25jZXB0IHRvIHNob3cgaG93IHRvIHVzZSB0aGUgcHl0 ZXN0IHRlc3QKaW5mcmFzdHJ1Y3R1cmUuIEl0IGNvbnZlcnRzIHR3byBleGlzdGluZyB0ZXN0cyB0 aGF0IGNvdWxkIG5vdCBzaGFyZQpjb2RlLiBBbmQgbm93IHRoZXkgZG8uIElmIHdlIGV2ZXIgaW50 cm9kdWNlIGFub3RoZXIgbG9hZCBiYWxhbmNlIG1ldGhvZAooZS5nLiByb3VuZCByb2JpbikuIFdl IGNhbiBlYXNpbHkgdGVzdCBpdCBmb3IgYm90aCBETlMgYW5kIGhvc3RsaXN0CmJhc2VkIGxvYWQg YmFsYW5jaW5nIGJ5IGFkZGluZyBhIHNpbmdsZSBuZXcgdGVzdCBmdW5jdGlvbi4KLS0tCiBzcmMv aW50ZXJmYWNlcy9saWJwcS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2lu dGVyZmFjZXMvbGlicHEvbWVzb24uYnVpbGQgICAgICAgICAgICAgIHwgICA3ICstCiBzcmMvaW50 ZXJmYWNlcy9saWJwcS9weXQvdGVzdF9sb2FkX2JhbGFuY2UucHkgfCAxNzAgKysrKysrKysrKysr KysrKysrCiAuLi4vbGlicHEvdC8wMDNfbG9hZF9iYWxhbmNlX2hvc3RfbGlzdC5wbCAgICAgfCAg OTQgLS0tLS0tLS0tLQogLi4uL2xpYnBxL3QvMDA0X2xvYWRfYmFsYW5jZV9kbnMucGwgICAgICAg ICAgIHwgMTQ0IC0tLS0tLS0tLS0tLS0tLQogNSBmaWxlcyBjaGFuZ2VkLCAxNzYgaW5zZXJ0aW9u cygrKSwgMjQwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbnRlcmZhY2Vz L2xpYnBxL3B5dC90ZXN0X2xvYWRfYmFsYW5jZS5weQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy9p bnRlcmZhY2VzL2xpYnBxL3QvMDAzX2xvYWRfYmFsYW5jZV9ob3N0X2xpc3QucGwKIGRlbGV0ZSBt b2RlIDEwMDY0NCBzcmMvaW50ZXJmYWNlcy9saWJwcS90LzAwNF9sb2FkX2JhbGFuY2VfZG5zLnBs CgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvTWFrZWZpbGUgYi9zcmMvaW50ZXJm YWNlcy9saWJwcS9NYWtlZmlsZQppbmRleCAwOTYzOTk1ZWVkNC4uZDA4ODE0MmY4YzYgMTAwNjQ0 Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL01ha2VmaWxlCisrKyBiL3NyYy9pbnRlcmZhY2Vz L2xpYnBxL01ha2VmaWxlCkBAIC0xNjksNiArMTY5LDcgQEAgY2hlY2sgaW5zdGFsbGNoZWNrOiBl eHBvcnQgUEFUSCA6PSAkKENVUkRJUikvdGVzdDokKFBBVEgpCiAKIGNoZWNrOiB0ZXN0LWJ1aWxk IGFsbAogCSQocHJvdmVfY2hlY2spCisJJChweXRlc3RfY2hlY2spCiAKIGluc3RhbGxjaGVjazog dGVzdC1idWlsZCBhbGwKIAkkKHByb3ZlX2luc3RhbGxjaGVjaykKZGlmZiAtLWdpdCBhL3NyYy9p bnRlcmZhY2VzL2xpYnBxL21lc29uLmJ1aWxkIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvbWVzb24u YnVpbGQKaW5kZXggYjBhZTcyMTY3YTEuLjYyY2RlOTdkMTY5IDEwMDY0NAotLS0gYS9zcmMvaW50 ZXJmYWNlcy9saWJwcS9tZXNvbi5idWlsZAorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9tZXNv bi5idWlsZApAQCAtMTU3LDggKzE1Nyw2IEBAIHRlc3RzICs9IHsKICAgICAndGVzdHMnOiBbCiAg ICAgICAndC8wMDFfdXJpLnBsJywKICAgICAgICd0LzAwMl9hcGkucGwnLAotICAgICAgJ3QvMDAz X2xvYWRfYmFsYW5jZV9ob3N0X2xpc3QucGwnLAotICAgICAgJ3QvMDA0X2xvYWRfYmFsYW5jZV9k bnMucGwnLAogICAgICAgJ3QvMDA1X25lZ290aWF0ZV9lbmNyeXB0aW9uLnBsJywKICAgICAgICd0 LzAwNl9zZXJ2aWNlLnBsJywKICAgICBdLApAQCAtMTY5LDYgKzE2NywxMSBAQCB0ZXN0cyArPSB7 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 Mi41My4wCgo= --96edea3d04a35249385fadaf89258e13166ceb54185dbcc5d8ae1ac19276--