From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Andrew Burgess To: git-commits@fedoraproject.org Subject: [rpms/gdb] fix-dup-patch: rename two of the patch files Date: Thu, 23 Jul 2026 18:36:21 GMT Message-ID: <178483178140.1.7182635326946299110.rpms-gdb-152468cce99e@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: 152468cce99ebd78a392c2392a8334729e390e44 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGZpeC1kdXAtcGF0Y2gKICAgICAg ICAgICAgQ29tbWl0IDogMTUyNDY4Y2NlOTllYmQ3OGEzOTJjMjM5MmE4MzM0NzI5ZTM5MGU0NAog ICAgICAgICAgICBBdXRob3IgOiBBbmRyZXcgQnVyZ2VzcyA8YWJ1cmdlc3NAcmVkaGF0LmNvbT4K ICAgICAgICAgICAgRGF0ZSAgIDogMjAyNS0wNi0wM1QyMjowOTozNCswMTowMAogICAgICAgICAg ICBTdGF0cyAgOiArMTA1Ni8tMTA0OSBpbiA3IGZpbGUocykKICAgICAgICAgICAgVVJMICAgIDog aHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9nZGIvYy8xNTI0NjhjY2U5OWViZDc4 YTM5MmMyMzkyYTgzMzQ3MjllMzkwZTQ0P2JyYW5jaD1maXgtZHVwLXBhdGNoCgogICAgICAgICAg ICBMb2c6CiAgICAgICAgICAgIHJlbmFtZSB0d28gb2YgdGhlIHBhdGNoIGZpbGVzCgpSZW5hbWUg J2dkYi1hZGQtcnBtLXN1Z2dlc3Rpb24tc2NyaXB0LnBhdGNoJyB0bwonZ2RiLXJwbS1zdWdnZXN0 aW9uLXNjcmlwdC5wYXRjaCcgYW5kCidnZGItNi4zLXJoLXRlc3R2ZXJzaW9uLTIwMDQxMjAyLnBh dGNoJyB0bwonZ2RiLXRlc3Qtc2hvdy12ZXJzaW9uLnBhdGNoJy4gIFRoZSBuZXcgbmFtZXMgYmV0 dGVyIHJlZmxlY3QgdGhlIHBhdGNoCmNvbnRlbnRzLgoKTm9uZSBvZiB0aGUgcGF0Y2ggY29udGVu dHMgaGF2ZSBjaGFuZ2VkLgoKVGhlcmUgc2hvdWxkIGJlIG5vIGNoYW5nZXMgaW4gZmluYWwgR0RC IHNvdXJjZSB0cmVlIGFmdGVyIHRoaXMgY29tbWl0LgoKLS0tCmRpZmYgLS1naXQgYS9fZ2RiLnNw ZWMuUGF0Y2guaW5jbHVkZSBiL19nZGIuc3BlYy5QYXRjaC5pbmNsdWRlCmluZGV4IGY3MjViYjAu LjQwMDUxMzQgMTAwNjQ0Ci0tLSBhL19nZGIuc3BlYy5QYXRjaC5pbmNsdWRlCisrKyBiL19nZGIu c3BlYy5QYXRjaC5pbmNsdWRlCkBAIC0xLDUgKzEsNSBAQAogIyBDaGVjayBkaXN0cm8gbmFtZSBp cyBpbmNsdWRlZCBpbiB0aGUgdmVyc2lvbiBvdXRwdXQuCi1QYXRjaDAwMTogZ2RiLTYuMy1yaC10 ZXN0dmVyc2lvbi0yMDA0MTIwMi5wYXRjaAorUGF0Y2gwMDE6IGdkYi10ZXN0LXNob3ctdmVyc2lv bi5wYXRjaAogCiAjIFVwZGF0ZSBnZGItYWRkLWluZGV4LnNoIHN1Y2ggdGhhdCwgd2hlbiB0aGUg R0RCIGVudmlyb25tZW50CiAjIHZhcmlhYmxlIGlzIG5vdCBzZXQsIHRoZSBzY3JpcHQgaXMgc21h cnRlciB0aGFuIGp1c3QgbG9va2luZyBmb3IKQEAgLTE3LDcgKzE3LDcgQEAgUGF0Y2gwMDI6IGdk Yi1hZGQtaW5kZXgucGF0Y2gKIAogIyBOb3QgYSBiYWNrcG9ydC4gIEFkZCBhIG5ldyBzY3JpcHQg d2hpY2ggaG9va3MgaW50byBHREIgYW5kIHN1Z2dlc3RzCiAjIFJQTXMgdG8gaW5zdGFsbCB3aGVu IEdEQiBmaW5kcyBhbiBvYmpmaWxlIHdpdGggbm8gZGVidWcgaW5mby4KLVBhdGNoMDAzOiBnZGIt YWRkLXJwbS1zdWdnZXN0aW9uLXNjcmlwdC5wYXRjaAorUGF0Y2gwMDM6IGdkYi1ycG0tc3VnZ2Vz dGlvbi1zY3JpcHQucGF0Y2gKIAogIyBCYWNrcG9ydCAiRml4IGFub3RoZXIgdGltZW91dCBpbiBn ZGIuYmFzZS9iZy1leGVjdXRpb24tcmVwZWF0LmV4cCIKIFBhdGNoMDA0OiBnZGItZml4LWJnLWV4 ZWN1dGlvbi1yZXBlYXQucGF0Y2gKCmRpZmYgLS1naXQgYS9fcGF0Y2hfb3JkZXIgYi9fcGF0Y2hf b3JkZXIKaW5kZXggMjk1ZDRhZS4uODEwM2Y2NiAxMDA2NDQKLS0tIGEvX3BhdGNoX29yZGVyCisr KyBiL19wYXRjaF9vcmRlcgpAQCAtMSw0ICsxLDQgQEAKLWdkYi02LjMtcmgtdGVzdHZlcnNpb24t MjAwNDEyMDIucGF0Y2gKK2dkYi10ZXN0LXNob3ctdmVyc2lvbi5wYXRjaAogZ2RiLWFkZC1pbmRl eC5wYXRjaAotZ2RiLWFkZC1ycG0tc3VnZ2VzdGlvbi1zY3JpcHQucGF0Y2gKK2dkYi1ycG0tc3Vn Z2VzdGlvbi1zY3JpcHQucGF0Y2gKIGdkYi1maXgtYmctZXhlY3V0aW9uLXJlcGVhdC5wYXRjaAoK ZGlmZiAtLWdpdCBhL2dkYi02LjMtcmgtdGVzdHZlcnNpb24tMjAwNDEyMDIucGF0Y2ggYi9nZGIt Ni4zLXJoLXRlc3R2ZXJzaW9uLTIwMDQxMjAyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCA1OTEzMmJmLi4wMDAwMDAwCi0tLSBhL2dkYi02LjMtcmgtdGVzdHZlcnNpb24tMjAw NDEyMDIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIEZFRE9SQV9Q QVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmV3IEJ1cmdlc3MgPGFi dXJnZXNzQHJlZGhhdC5jb20+Ci1EYXRlOiBGcmksIDI3IE9jdCAyMDE3IDIxOjA3OjUwICswMjAw Ci1TdWJqZWN0OiBnZGItNi4zLXJoLXRlc3R2ZXJzaW9uLTIwMDQxMjAyLnBhdGNoCi0KLTs7IENo ZWNrIGRpc3RybyBuYW1lIGlzIGluY2x1ZGVkIGluIHRoZSB2ZXJzaW9uIG91dHB1dC4KLQotZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZmVkb3JhLXZlcnNpb24uZXhwIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9mZWRvcmEtdmVyc2lvbi5leHAKLW5ldyBmaWxlIG1vZGUgMTAw NjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ZlZG9yYS12 ZXJzaW9uLmV4cAotQEAgLTAsMCArMSwyMiBAQAotKyMgQ29weXJpZ2h0IDIwMjMgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK LSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMK LSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgot KwotKyMgU3RhcnQgd2l0aCBhIGZyZXNoIGdkYgotK2NsZWFuX3Jlc3RhcnQKLSsKLSsjIENoZWNr IHRoZSB2ZXJzaW9uIHN0cmluZyBjb250YWlucyBlaXRoZXIgdGhlIEZlZG9yYSBvciBSSEVMIGRp c3RybwotKyMgbmFtZSwgYW5kIHRoYXQgdGhlIHZlcnNpb24gbnVtYmVyIGxvb2tzIHJvdWdobHkg Y29ycmVjdCBpbiBmb3JtYXQuCi0rZ2RiX3Rlc3QgInNob3cgdmVyc2lvbiIgXAotKyAgICAiR05V IGdkYiBcXCgoRmVkb3JhIExpbnV4fFJlZCBIYXQgRW50ZXJwcmlzZSBMaW51eClcXCkgXFswLTlc XStcXC5cWzAtOVxdKy1cWzAtOVxdKy4qIgoKZGlmZiAtLWdpdCBhL2dkYi1hZGQtcnBtLXN1Z2dl c3Rpb24tc2NyaXB0LnBhdGNoIGIvZ2RiLWFkZC1ycG0tc3VnZ2VzdGlvbi1zY3JpcHQucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwMTBmYjguLjAwMDAwMDAKLS0tIGEvZ2Ri LWFkZC1ycG0tc3VnZ2VzdGlvbi1zY3JpcHQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEx ICswLDAgQEAKLUZyb20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1G cm9tOiBBbmRyZXcgQnVyZ2VzcyA8YWJ1cmdlc3NAcmVkaGF0LmNvbT4KLURhdGU6IFRodSwgNyBN YXIgMjAyNCAxNToxNDoyMyArMDAwMAotU3ViamVjdDogZ2RiLWFkZC1ycG0tc3VnZ2VzdGlvbi1z Y3JpcHQucGF0Y2gKLQotOzsgTm90IGEgYmFja3BvcnQuICBBZGQgYSBuZXcgc2NyaXB0IHdoaWNo IGhvb2tzIGludG8gR0RCIGFuZCBzdWdnZXN0cwotOzsgUlBNcyB0byBpbnN0YWxsIHdoZW4gR0RC IGZpbmRzIGFuIG9iamZpbGUgd2l0aCBubyBkZWJ1ZyBpbmZvLgotCi1nZGI6IGFkZCBzY3JpcHQg d2hpY2ggd2lsbCBzdWdnZXN0IGRlYnVnaW5mbyBSUE1zIHRvIGluc3RhbGwKLQotVGhpcyBzY3Jp cHQgaG9va3MgaW50byBHREIncyBtaXNzaW5nIGRlYnVnIGluZm8gUHl0aG9uIEFQSSBhbmQKLXN1 Z2dlc3RzIGRlYnVnaW5mbyBSUE1zIHRvIGluc3RhbGwuCi0KLWRpZmYgLS1naXQgYS9nZGIvZGF0 YS1kaXJlY3RvcnkvTWFrZWZpbGUuaW4gYi9nZGIvZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUuaW4K LS0tLSBhL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbgotKysrIGIvZ2RiL2RhdGEtZGly ZWN0b3J5L01ha2VmaWxlLmluCi1AQCAtOTIsNiArOTIsNyBAQCBQWVRIT05fRklMRV9MSVNUID0g XAotIAlnZGIvY29tbWFuZC9taXNzaW5nX2ZpbGVzLnB5IFwKLSAJZ2RiL2NvbW1hbmQvcHJldHR5 X3ByaW50ZXJzLnB5IFwKLSAJZ2RiL2NvbW1hbmQvcHJvbXB0LnB5IFwKLSsJZ2RiL2NvbW1hbmQv cnBtLXN1Z2dlc3Rpb25zLnB5IFwKLSAJZ2RiL2NvbW1hbmQvdHlwZV9wcmludGVycy5weSBcCi0g CWdkYi9jb21tYW5kL3Vud2luZGVycy5weSBcCi0gCWdkYi9jb21tYW5kL3htZXRob2RzLnB5IFwK LWRpZmYgLS1naXQgYS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwot LS0tIGEvZ2RiL2RvYy9nZGIudGV4aW5mbwotKysrIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwotQEAg LTE4Niw2ICsxODYsNyBAQCBzb2Z0d2FyZSBpbiBnZW5lcmFsLiAgV2Ugd2lsbCBtaXNzIGhpbS4K LSAqIFRyYWNlIEZpbGUgRm9ybWF0OjoJCUB2YWx1ZXtHREJOfSB0cmFjZSBmaWxlIGZvcm1hdAot ICogSW5kZXggU2VjdGlvbiBGb3JtYXQ6OiAgICAgICAgLmdkYl9pbmRleCBzZWN0aW9uIGZvcm1h dAotICogRGVidWdpbmZvZDo6ICAgICAgICAgICAgICAgICAgRG93bmxvYWQgZGVidWdnaW5nIHJl c291cmNlcyB3aXRoIEBjb2Rle2RlYnVnaW5mb2R9Ci0rKiBSUE0gU3VnZ2VzdGlvbnM6OgkJUlBN IFN1Z2dlc3Rpb25zIGZyb20gR0RCCi0gKiBNYW4gUGFnZXM6OiAgICAgICAgICAgICAgICAgICBN YW51YWwgcGFnZXMKLSAqIENvcHlpbmc6OiAgICAgICAgICAgICAgICAgICAgIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIHNheXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhv dyB5b3UgY2FuIGNvcHkgYW5kIHNoYXJlIEB2YWx1ZXtHREJOfQotQEAgLTUwNTg4LDYgKzUwNTg5 LDExMSBAQCBTaG93IHRoZSBjdXJyZW50IHZlcmJvc2l0eSBzZXR0aW5nLgotIAotIEBlbmQgdGFi bGUKLSAKLStAbm9kZSBSUE0gU3VnZ2VzdGlvbnMKLStAYXBwZW5kaXggUmVjZWl2aW5nIFJQTSBp bnN0YWxsYXRpb24gc3VnZ2VzdGlvbnMKLStAY2luZGV4IHJwbSBzdWdnZXN0aW9ucwotKwotK1do ZW4gQHZhbHVle0dEQk59IGxvYWRzIGFuIGV4ZWN1dGFibGUsIG9yIHNoYXJlZCBsaWJyYXJ5LCBh bmQgY2Fubm90Ci0rZmluZCB0aGUgY29ycmVzcG9uZGluZyBkZWJ1ZyBpbmZvcm1hdGlvbiwgQHZh bHVle0dEQk59IHdpbGwgY2hlY2sgdG8KLStzZWUgaWYgYW4gUlBNIGlzIGF2YWlsYWJsZSB3aGlj aCBjb3VsZCBwcm92aWRlIHRoZSBtaXNzaW5nIGRlYnVnCi0raW5mb3JtYXRpb24uICBJZiBhIHN1 aXRhYmxlIFJQTSBpcyBmb3VuZCB0aGVuIEB2YWx1ZXtHREJOfSB3aWxsIHByaW50Ci0rYSBoaW50 IGJlZm9yZSB0aGUgbmV4dCBwcm9tcHQgaXMgZGlzcGxheWVkOgotKwotK0BzbWFsbGV4YW1wbGUK LSsoQHZhbHVle0dEQlB9KSBmaWxlIC9iaW4vbHMKLStSZWFkaW5nIHN5bWJvbHMgZnJvbSAvYmlu L2xzLi4uCi0rUmVhZGluZyBzeW1ib2xzIGZyb20gLmdudV9kZWJ1Z2RhdGEgZm9yIC91c3IvYmlu L2xzLi4uCi0rKE5vIGRlYnVnZ2luZyBzeW1ib2xzIGZvdW5kIGluIC5nbnVfZGVidWdkYXRhIGZv ciAvdXNyL2Jpbi9scykKLStNaXNzaW5nIHJwbXMsIHRyeTogZG5mIC0tZW5hYmxlcmVwbz0nKmRl YnVnKicgaW5zdGFsbCBjb3JldXRpbHMtZGVidWdpbmZvLTkuMy03LmZjMzkueDg2XzY0Ci0rKEB2 YWx1ZXtHREJQfSkKLStAZW5kIHNtYWxsZXhhbXBsZQotKwotK0luIHRoaXMgY2FzZSwgaW5zdGFs bGluZyBAZmlsZXtjb3JldXRpbHMtZGVidWdpbmZvLTkuMy03LmZjMzkueDg2XzY0fQotK3dpbGwg cHJvdmlkZSB0aGUgbWlzc2luZyBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3IgQGZpbGV7L2Jpbi9sc30u ICBJdCBpcwotK3VwIHRvIHlvdSB0byBpbnN0YWxsIHRoZSBzdWdnZXN0ZWQgcGFja2FnZSwgaWYg cG9zc2libGUsIGFuZCBhZnRlcgotK3RoYXQgcmVsb2FkIHRoZSBleGVjdXRhYmxlIGluIEB2YWx1 ZXtHREJOfSBzbyB0aGF0IHRoZSBuZXdseSBpbnN0YWxsZWQKLStkZWJ1ZyBpbmZvcm1hdGlvbiBj YW4gYmUgZm91bmQuCi0rCi0rVGhlIFJQTSBzdWdnZXN0aW9uIGZlYXR1cmUgY2FuIGJlIGRpc2Fi bGVkOgotKwotK0B0YWJsZSBAY29kZQotK0BraW5kZXggc2V0IHJwbS1zdWdnZXN0aW9uIGVuYWJs ZWQKLStAa2luZGV4IHNob3cgcnBtLXN1Z2dlc3Rpb24gZW5hYmxlZAotK0BjaW5kZXggcnBtIHN1 Z2dlc3Rpb25zLCBkaXNhYmxpbmcKLStAaXRlbSBzZXQgcnBtLXN1Z2dlc3Rpb24gZW5hYmxlZCBA cntbfW9uQHJ7fH1vZmZAcntdfQotK0BpdGVteCBzaG93IHJwbS1zdWdnZXN0aW9uIGVuYWJsZWQK LStXaGVuIEBzYW1we29ufSBAdmFsdWV7R0RCTn0gd2lsbCBtYWtlIFJQTSBzdWdnZXN0aW9ucyB3 aGVyZSBwb3NzaWJsZS4KLStXaGVuIEBzYW1we29mZn0gYWxsIFJQTSBzdWdnZXN0aW9uIHdpbGwg YmUgZGlzYWJsZWQuCi0rQGVuZCB0YWJsZQotKwotK1doZW4gb3BlbmluZyBhIGNvcmUgZmlsZSAo QHB4cmVme2NvcmUtZmlsZSBjb21tYW5kfSksIGl0IG1heSBiZSB0aGUKLStjYXNlIHRoYXQgbm90 IG9ubHkgaXMgdGhlIGRlYnVnIGluZm9ybWF0aW9uIG1pc3NpbmcsIGJ1dCB0aGUKLStjb3JyZXNw b25kaW5nIGV4ZWN1dGFibGUgaXRzZWxmIGlzIG1pc3NpbmcuICBGb3IgZXhhbXBsZSwgaWYgYSBj b3JlCi0rZmlsZSBpcyBjb3BpZWQgZnJvbSBvbmUgbWFjaGluZSB0byBhbm90aGVyIGluIG9yZGVy IHRvIGRlYnVnLgotKwotK0luIHRoaXMgY2FzZSBAdmFsdWV7R0RCTn0gaXMgYWJsZSB0byBzdWdn ZXN0IGEgY29tbWFuZCB3aGljaCB3aWxsCi0raW5zdGFsbCB0aGUgbWlzc2luZyBleGVjdXRhYmxl IGJhc2VkIG9uIHRoZSBidWlsZC1pZCBvZiB0aGUKLStleGVjdXRhYmxlLiAgRm9yIGV4YW1wbGU6 Ci0rCi0rQHNtYWxsZXhhbXBsZQotKyhAdmFsdWV7R0RCUH0pIGNvcmUtZmlsZSAvdG1wL2NvcmUu NTQ4OQotK3dhcm5pbmc6IENhbid0IG9wZW4gZmlsZSAvdXNyL2Jpbi9zbCBkdXJpbmcgZmlsZS1i YWNrZWQgbWFwcGluZyBub3RlIHByb2Nlc3NpbmcKLStbTmV3IExXUCA1NDg5XQotK0NvcmUgd2Fz IGdlbmVyYXRlZCBieSBgc2wnLgotK1Byb2dyYW0gdGVybWluYXRlZCB3aXRoIHNpZ25hbCBTSUdR VUlULCBRdWl0LgotKyMwICAweDAwMDA3ZjFiNDFjZWQxYTcgaW4gPz8gKCkKLStNaXNzaW5nIGZp bGUocyksIHRyeTogZG5mIC0tZW5hYmxlcmVwbz0nKmRlYnVnKicgaW5zdGFsbCAvdXNyL2xpYi8u YnVpbGQtaWQvMzMvMmYxYThlNTY2OTM5NjBlM2JlYjJkNzBjZDc5ZGRmZWM0NTFjYzMgL3Vzci9s aWIvZGVidWcvLmJ1aWxkLWlkLzMzLzJmMWE4ZTU2NjkzOTYwZTNiZWIyZDcwY2Q3OWRkZmVjNDUx Y2MzLmRlYnVnCi0rKEB2YWx1ZXtHREJQfSkKLStAZW5kIHNtYWxsZXhhbXBsZQotKwotK1RoZSBj b3JlIGZpbGUgd2FzIGdlbmVyYXRlZCBmcm9tIHRoZSBAZmlsZXsvdXNyL2Jpbi9zbH0gYmluYXJ5 LCB3aGljaAotK2lzIG5vdCBwcmVzZW50IG9uIHRoZSBtYWNoaW5lIG9wZW5pbmcgdGhlIGNvcmUg ZmlsZS4gIEB2YWx1ZXtHREJOfSBoYXMKLStzdWdnZXN0ZWQgYSBjb21tYW5kLCBiYXNlZCBvbiB0 aGUgYnVpbGQtaWQgb2YgdGhlIGJpbmFyeSwgd2hpY2ggd2FzCi0rZXh0cmFjdGVkIGZyb20gdGhl IGNvcmUgZmlsZSwgdGhhdCB3b3VsZCBpbnN0YWxsIGJvdGggdGhlIG1pc3NpbmcKLStiaW5hcnks IGFuZCB0aGUgY29ycmVzcG9uZGluZyBkZWJ1ZyBpbmZvcm1hdGlvbi4KLSsKLStVbmZvcnR1bmF0 ZWx5LCBAdmFsdWV7R0RCTn0gZG9lc24ndCBrbm93IGlmIHRoZSBzdWdnZXN0ZWQgY29tbWFuZCB3 aWxsCi0rYWN0dWFsbHkgZmluZCBhIG1hdGNoaW5nIFJQTSBvciBub3QuICBRdWVyeWluZyB0aGUg UlBNIGRhdGFiYXNlIHRvIHNlZQotK3doaWNoIHBhY2thZ2VzLCBpZiBhbnksIHdpbGwgcHJvdmlk ZSBhIGZpbGUgd2l0aCB0aGUgZ2l2ZW4gYnVpbGQtaWQsCi0raXMgcmF0aGVyIHNsb3cuICBBcyBA ZmlsZXsvdXNyL2Jpbi9zbH0gaXMgYXZhaWxhYmxlIGluIGFuIFJQTSwgdGhlbgotK3RoZSBhYm92 ZSBjb21tYW5kIHdpbGwgc3VjY2VlZC4KLSsKLStJdCBpcyBwb3NzaWJsZSB0byBoYXZlIEB2YWx1 ZXtHREJOfSBjaGVjayB0byBzZWUgaWYgdGhlcmUgaXMgYSBwYWNrYWdlCi0rYXZhaWxhYmxlIGJl Zm9yZSBtYWtpbmcgdGhlIHN1Z2dlc3Rpb24sIGJ1dCB0aGlzIGlzIHNpZ25pZmljYW50bHkKLStz bG93ZXIuICBUbyBlbmFibGUgdGhpcyBtb2RlIHVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0r Ci0rQHRhYmxlIEBjb2RlCi0rQGtpbmRleCBzZXQgcnBtLXN1Z2dlc3Rpb24gYnVpbGQtaWQtbW9k ZQotK0BraW5kZXggc2hvdyBycG0tc3VnZ2VzdGlvbiBidWlsZC1pZC1tb2RlCi0rQGNpbmRleCBy cG0gc3VnZ2VzdGlvbnMsIGJ1aWxkLWlkLW1vZGUKLStAaXRlbSBzZXQgcnBtLXN1Z2dlc3Rpb24g YnVpbGQtaWQtbW9kZSBAcntbfWZhc3RAcnt8fXNsb3dAcntdfQotK0BpdGVteCBzaG93IHJwbS1z dWdnZXN0aW9uIGJ1aWxkLWlkLW1vZGUKLStXaGVuIHNldCB0byBAc2FtcHtmYXN0fSwgd2hpY2gg aXMgdGhlIGRlZmF1bHQsIEB2YWx1ZXtHREJOfSB3aWxsIG9mZmVyCi0rc3VnZ2VzdGlvbnMgYmFz ZWQgb24gdGhlIGJ1aWxkLWlkIG9mIGFueSBtaXNzaW5nIGV4ZWN1dGFibGVzIG9yIHNoYXJlZAot K2xpYnJhcmllcyB3aGlsZSBvcGVuaW5nIGEgY29yZSBmaWxlLiAgVGhpcyBpcyBmYXN0LCBidXQg QHZhbHVle0dEQk59Ci0raGFzIG5vdCBjaGVja2VkIGlmIHRoZXJlIGlzIGEgcGFja2FnZSBhdmFp bGFibGUgdGhhdCBjYW4gc3VwcGx5IHRoZQotK3JlcXVpcmVkIGZpbGUsIHNvIHJ1bm5pbmcgdGhl IHN1Z2dlc3RlZCBjb21tYW5kIG1pZ2h0IG5vdCBpbnN0YWxsIGFueQotK3BhY2thZ2VzLgotKwot K1doZW4gc2V0IHRvIEBzYW1we3Nsb3d9LCBlYWNoIHRpbWUgQHZhbHVle0dEQk59IGVuY291bnRl cnMgYW4KLStleGVjdXRhYmxlLCBvciBzaGFyZWQgbGlicmFyeSwgdGhhdCBpcyBtaXNzaW5nLCBA dmFsdWV7R0RCTn0gd2lsbAotK2NoZWNrIHRvIHNlZSBpZiB0aGVyZSBpcyBhbiBSUE0gYXZhaWxh YmxlIHRoYXQgd2lsbCBzdXBwbHkgdGhlIG1pc3NpbmcKLStiaW5hcnkuICBJZiBhIHN1aXRhYmxl IFJQTSBpcyBmb3VuZCB0aGVuIEB2YWx1ZXtHREJOfSB3aWxsIG9mZmVyIGEKLStjb21tYW5kIHdo aWNoIHdpbGwgaW5zdGFsbCB0aGUgbWlzc2luZyBSUE0uICBJZiBubyBzdWl0YWJsZSBSUE0gaXMK LStmb3VuZCB0aGVuIEB2YWx1ZXtHREJOfSB3aWxsIG1ha2Ugbm8gc3VnZ2VzdGlvbnMuCi0rQGVu ZCB0YWJsZQotKwotK0l0IGlzIHBvc3NpYmxlIHRvIHJldmlldyBhbGwgb2YgdGhlIHByZXZpb3Vz IFJQTSBzdWdnZXN0aW9ucyB0aGF0Ci0rQHZhbHVle0dEQk59IGhhcyBtYWRlIHVzaW5nIHRoZSBm b2xsb3dpbmcgY29tbWFuZDoKLSsKLStAdGFibGUgQGNvZGUKLStAa2luZGV4IGluZm8gcnBtLXN1 Z2dlc3Rpb25zCi0rQGNpbmRleCBycG0gc3VnZ2VzdGlvbnMsIGxpc3RpbmcKLStAaXRlbSBpbmZv IHJwbS1zdWdnZXN0aW9ucwotK0xpc3QgYWxsIG9mIHRoZSBSUE0gc3VnZ2VzdGlvbnMgQHZhbHVl e0dEQk59IGhhcyBtYWRlIHNpbmNlIHRoZQotK2V4ZWN1dGFibGUgd2FzIGxhc3QgY2hhbmdlZC4K LStAZW5kIHRhYmxlCi0rCi0gQG5vZGUgTWFuIFBhZ2VzCi0gQGFwcGVuZGl4IE1hbnVhbCBwYWdl cwotIEBjaW5kZXggTWFuIHBhZ2VzCi1kaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2Nv bW1hbmQvcnBtLXN1Z2dlc3Rpb25zLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvcnBt LXN1Z2dlc3Rpb25zLnB5Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysr IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvcnBtLXN1Z2dlc3Rpb25zLnB5Ci1AQCAtMCww ICsxLDUyNyBAQAotKyMgQ29weXJpZ2h0IDIwMjMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90 LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK2ltcG9ydCBnZGIKLStp bXBvcnQgZ2RiLm1pc3NpbmdfZGVidWcKLStpbXBvcnQgZ2RiLm1pc3Npbmdfb2JqZmlsZQotKwot KyMgVGhlc2UgbW9kdWxlcyBhcmUgYWxsIHN5c3RlbSBtb2R1bGVzLCBhbmQgc2hvdWxkIGJlIGF2 YWlsYWJsZSBvbiBhbnkKLSsjIGNvcnJlY3RseSBzZXR1cCBQeXRob24gaW5zdGFsbC4KLStpbXBv cnQgc3lzCi0raW1wb3J0IG9zCi0raW1wb3J0IHN1YnByb2Nlc3MKLStpbXBvcnQgcmUKLStmcm9t IHRocmVhZGluZyBpbXBvcnQgVGhyZWFkCi0raW1wb3J0IHRpbWUKLSsKLSt0cnk6Ci0rICAgIGlt cG9ydCBycG0KLStleGNlcHQgTW9kdWxlTm90Rm91bmRFcnJvcjoKLSsgICAgIyBUaGUgIlJQTSBz dWdnZXN0aW9ucyIgbWVjaGFuaXNtIHdpbGwgbm90IHdvcmsgd2l0aG91dCB0aGUgKHB5dGhvbikK LSsgICAgIyBycG0gbW9kdWxlLiAgSW5mb3JtIHRoZSB1c2VyIG9mIHRoaXMsIGJ1dCB3YWl0IHRv IGRvIHNvIHVudGlsCi0rICAgICMganVzdCBwcmlvciB0byBwcmludGluZyB0aGUgR0RCIHByb21w dC4gIElmIHdlIGRvIGl0IHJpZ2h0IGF3YXksCi0rICAgICMgdGhlIG1lc3NhZ2UgdHlwaWNhbGx5 IGFwcGVhcnMgYmVmb3JlIHRoZSB2ZXJzaW9uIGFuZCBjb3B5cmlnaHQKLSsgICAgIyBpbmZvLCB3 aGljaCBpcyBlYXNpbHkgbWlzc2VkIGJ5IG1hbnkgdXNlcnMuICBBZGRpdGlvbmFsbHksIGl0Ci0r ICAgICMgc2VlbXMgdGhhdCBzZXZlcmFsIG90aGVyIHBhY2thZ2VzIHdoaWNoIHBhcnNlIEdEQiB2 ZXJzaW9uIGluZm8KLSsgICAgIyBhcmUgY29uZnVzZWQgYnkgYW4gZWFybHkgZXJyb3IgbWVzc2Fn ZSByZWdhcmRpbmcgYSBtaXNzaW5nCi0rICAgICMgcHl0aG9uMy1ycG0gcGFja2FnZSwgc28gd2Fp dGluZyB0byBwcmludCB0aGUgZXJyb3IgYWxsb3dzIHRob3NlCi0rICAgICMgYXBwbGljYXRpb25z IHRvIHdvcmsgYXMgdGhleSB1c2VkIHRvLgotKyAgICBkZWYgYmVmb3JlX3Byb21wdCgpOgotKyAg ICAgICAgcHJpbnQoCi0rICAgICAgICAgICAgKCJcblVuYWJsZSB0byBsb2FkIHRoZSBQeXRob24g J3JwbScgbW9kdWxlLiAgTGFjayBvZiB0aGlzIG1vZHVsZSBkaXNhYmxlc1xuIgotKyAgICAgICAg ICAgICAidGhlIFJQTSBzdWdnZXN0aW9ucyBtZWNoYW5pc20gd2hpY2ggcmVjb21tZW5kcyBzaGVs bCBjb21tYW5kcyBmb3JcbiIKLSsgICAgICAgICAgICAgImluc3RhbGxpbmcgbWlzc2luZyBkZWJ1 Z2luZm8gcGFja2FnZXMuICBUbyBlbmFibGUgdGhpcyBmdW5jdGlvbmFsaXR5LFxuIgotKyAgICAg ICAgICAgICAicGxlYXNlIGluc3RhbGwgdGhlIHB5dGhvbjMtcnBtIHBhY2thZ2UuIiksCi0rICAg ICAgICAgICAgZmlsZT1zeXMuc3RkZXJyCi0rICAgICAgICApCi0rICAgICAgICBnZGIuZXZlbnRz LmJlZm9yZV9wcm9tcHQuZGlzY29ubmVjdChiZWZvcmVfcHJvbXB0KQotKwotKyAgICBnZGIuZXZl bnRzLmJlZm9yZV9wcm9tcHQuY29ubmVjdChiZWZvcmVfcHJvbXB0KQotKwotKyAgICAjIEltcGxl bWVudCAnaW5mbyBycG0tc3VnZ2VzdGlvbnMnIHdoZW4gdGhlICdycG0nIG1vZHVsZSBpcyBub3QK LSsgICAgIyBhdmFpbGFibGUuICBKdXN0IHRocm93cyBhbiBlcnJvci4KLSsgICAgZGVmIGluZm9f cnBtX3N1Z2dlc3Rpb25zKCk6Ci0rICAgICAgICByYWlzZSBnZGIuR2RiRXJyb3IoInJwbS1zdWdn ZXN0aW9ucyBhcmUgZGlzYWJsZWQgYXMgdGhlIFB5dGhvbiAncnBtJyBtb2R1bGUgaXMgbm90IGlu c3RhbGxlZCIpCi0rZWxzZToKLSsgICAgIyBUcmFjayBhbGwgdGhlIFJQTXMgc3VnZ2VzdGVkIGR1 cmluZyBhIHNpbmdsZSBkZWJ1ZyBzZXNzaW9uIHNvIHdlCi0rICAgICMgZG9uJ3Qgc3VnZ2VzdCB0 aGUgc2FtZSBSUE0gdHdpY2UuICBUaGlzIGlzIG9ubHkgY2xlYXJlZCB3aGVuIHRoZQotKyAgICAj IG1haW4gZXhlY3V0YWJsZSBpcyBjaGFuZ2VkLgotKyAgICBfX21pc3NpbmdfcnBtcyA9IHt9Ci0r Ci0rICAgICMgVHJhY2sgYW55IG1pc3NpbmcgUlBNcyB0aGF0IGhhdmUgYmVlbiBkaXNjb3ZlcmVk IHNpbmNlIHRoZSBsYXN0IHRpbWUKLSsgICAgIyB0aGUgcHJvbXB0IHdhcyBkaXNwbGF5ZWQuICBS UE1zIGluIGhlcmUgYXJlIGFsc28gcHJlc2VudCBpbiB0aGUKLSsgICAgIyBfX01JU1NJTkdfUlBN UyBkaWN0aW9uYXJ5LCBidXQgdGhpcyBkaWN0aW9uYXJ5IGlzIGNsZWFyZWQgZWFjaCB0aW1lCi0r ICAgICMgdGhlIHByb21wdCBpcyBzaG93bi4KLSsgICAgX19zdWdnZXN0X3JwbXMgPSB7fQotKwot KyAgICAjIFRyYWNrIGFsbCB0aGUgYnVpbGQtaWRzIHN1Z2dlc3RlZCBkdXJpbmcgYSBzaW5nbGUg ZGVidWcgc2Vzc2lvbiBzbyB3ZQotKyAgICAjIGRvbid0IHN1Z2dlc3QgaW5zdGFsbGluZyB1c2lu ZyB0aGUgc2FtZSBidWlsZC1pZCB0d2ljZS4gIFRoaXMgaXMgb25seQotKyAgICAjIGNsZWFyZWQg d2hlbiB0aGUgbWFpbiBleGVjdXRhYmxlIGlzIGNoYW5nZWQuCi0rICAgIF9fbWlzc2luZ19idWls ZF9pZHMgPSB7fQotKwotKyAgICAjIFRyYWNrIGFueSBidWlsZC1pZHMgdGhhdCBoYXZlIGJlZW4g ZGlzY292ZXJlZCBtaXNzaW5nIHNpbmNlIHRoZSBsYXN0Ci0rICAgICMgdGltZSB0aGUgcHJvbXB0 IHdhcyBkaXNwbGF5ZWQuICBCdWlsZC1pZHMgaW4gaGVyZSBhcmUgYWxzbyBwcmVzZW50IGluCi0r ICAgICMgdGhlIF9fTUlTU0lOR19CVUlMRF9JRFMgZGljdGlvbmFyeSwgYnV0IHRoaXMgZGljdGlv bmFyeSBpcyBjbGVhcmVkCi0rICAgICMgZWFjaCB0aW1lIHRoZSBwcm9tcHQgaXMgc2hvd24uCi0r ICAgIF9fc3VnZ2VzdF9idWlsZF9pZHMgPSB7fQotKwotKyAgICAjIFRoZSBidWlsZC1pZCB0byBS UE0gbG9va3VwIGlzIHZlcnkgc2xvdy4gIFRoaXMgY2FjaGUgbWFwcwotKyAgICAjIGJ1aWxkLWlk cyB0byB0aGUgc2V0IG9mIFJQTSB3ZSBjYW4gc3VnZ2VzdCBpbnN0YWxsaW5nLiAgVGhlIGtleQot KyAgICAjIGlzIHRoZSBidWlsZC1pZCBzdHJpbmcsIGFuZCB0aGUgdmFsdWUgaXMgYSBsaXN0IG9m IFJQTSBuYW1lcywgb3IKLSsgICAgIyBOb25lIGlmIHRoZXJlIHdhcyBhbiBlcnJvciB3aXRoIHRo ZSBidWlsZC1pZCB0byBSUE0gbG9va3VwLgotKyAgICAjCi0rICAgICMgVGhpcyBjYWNoZSBpcyBu ZXZlciBjbGVhcmVkLCBldmVuIHdoZW4gdGhlIGV4ZWN1dGFibGUgaXMKLSsgICAgIyBjaGFuZ2Vk LiAgVGhlIGJ1aWxkLWlkcyBzaG91bGQgYmUgdW5pcXVlLCBzbyBhIGJ1aWxkLWlkIGxvb2t1cAot KyAgICAjIHNob3VsZCBiZSBnb29kIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIHNlc3Npb24uCi0r ICAgIF9fYnVpbGRfaWRfbG9va3VwX2NhY2hlID0ge30KLSsKLSsgICAgIyBXaGVuIHNlYXJjaGlu ZyBmb3IgYW4gUlBNIGdpdmVuIGEgYnVpbGQtaWQsIGlmIHRoZSBzZWFyY2ggdGFrZXMKLSsgICAg IyB0b28gbG9uZywgdGhlbiBhIG1lc3NhZ2UgaXMgcHJpbnRlZCB0byB0aGUgdXNlci4gIFdlIG9u bHkgcHJpbnQKLSsgICAgIyB0aGUgbWVzc2FnZSBvbmNlIGJldHdlZW4gZWFjaCBHREIgcHJvbXB0 LiAgVGhpcyBmbGFnIGlzIHNldCBUcnVlCi0rICAgICMgd2hlbiB0aGUgbWVzc2FnZSBpcyBwcmlu dGVkLCBhbmQgcmVzZXQgdG8gRmFsc2Ugd2hlbiBhIHByb21wdCBpcwotKyAgICAjIGRpc3BsYXll ZC4KLSsgICAgX19zZWFyY2hpbmdfbWVzc2FnZV9wcmludGVkID0gRmFsc2UKLSsKLSsgICAgIyBB ZGQgYSBzdWdnZXN0aW9uIHRvIGluc3RhbGwgUlBNX05BTUUgKHRoZSBmdWxsIG5hbWUgb2YgYW4g UlBNKQotKyAgICAjIHRvIHRoZSBsaXN0IG9mIHN1Z2dlc3Rpb25zIHRvIG1ha2UgdGhlIG5leHQg dGltZSBhIHByb21wdCBpcwotKyAgICAjIGRpc3BsYXllZC4KLSsgICAgZGVmIGFkZF9ycG1fc3Vn Z2VzdGlvbihycG1fbmFtZSk6Ci0rICAgICAgICBnbG9iYWwgX19taXNzaW5nX3JwbXMKLSsgICAg ICAgIGdsb2JhbCBfX3N1Z2dlc3RfcnBtcwotKwotKyAgICAgICAgaWYgbm90IHJwbV9uYW1lIGlu IF9fbWlzc2luZ19ycG1zOgotKyAgICAgICAgICAgIF9fc3VnZ2VzdF9ycG1zW3JwbV9uYW1lXSA9 IFRydWUKLSsgICAgICAgICAgICBfX21pc3NpbmdfcnBtc1tycG1fbmFtZV0gPSBUcnVlCi0rCi0r ICAgICMgUmV0dXJuIFRydWUgaWYgUlBNX05BTUUgaXMgaW5zdGFsbGVkLCB3aGVyZSBSUE1fTkFN RSBpcyB0aGUgZnVsbAotKyAgICAjIG5hbWUgb2YgYW4gUlBNLgotKyAgICBkZWYgaXNfcnBtX2lu c3RhbGxlZCh0cywgcnBtX25hbWUpOgotKyAgICAgICAgcmVzID0gdHMuZGJNYXRjaChycG0uUlBN REJJX0xBQkVMLCBycG1fbmFtZSkKLSsgICAgICAgIHJldHVybiBsZW4ocmVzKSA+IDAKLSsKLSsg ICAgIyBBZGQgYSBzdWdnZXN0aW9uIHRvIGluc3RhbGwgUlBNcyBiYXNlZCBvbiBCVUlMRF9JRCwg YSBzdHJpbmcKLSsgICAgIyBjb250YWluaW5nIGEgYnVpbGQtaWQsIHRvIHRoZSBsaXN0IG9mIHN1 Z2dlc3Rpb25zIHRvIG1ha2UgdGhlIG5leHQKLSsgICAgIyB0aW1lIGEgcHJvbXB0IGlzIGRpc3Bs YXllZC4KLSsgICAgZGVmIGFkZF9idWlsZF9pZF9zdWdnZXN0aW9uKGJ1aWxkX2lkKToKLSsgICAg ICAgIGdsb2JhbCBfX21pc3NpbmdfYnVpbGRfaWRzCi0rICAgICAgICBnbG9iYWwgX19zdWdnZXN0 X2J1aWxkX2lkcwotKwotKyAgICAgICAgaWYgbm90IGJ1aWxkX2lkIGluIF9fbWlzc2luZ19idWls ZF9pZHM6Ci0rICAgICAgICAgICAgX19zdWdnZXN0X2J1aWxkX2lkc1tidWlsZF9pZF0gPSBUcnVl Ci0rICAgICAgICAgICAgX19taXNzaW5nX2J1aWxkX2lkc1tidWlsZF9pZF0gPSBUcnVlCi0rCi0r ICAgICMgUmV0dXJuIHRydWUgaWYgJy91c3IvbGliJyBpcyBpbiB0aGUgZGVidWctZmlsZS1kaXJl Y3RvcnkgbGlzdC4KLSsgICAgIyBTeXN0ZW0gcGFja2FnZXMgaW5zdGFsbCB0aGVpciBkZWJ1ZyBp bmZvcm1hdGlvbiBpbnRvIC91c3IvbGliLAotKyAgICAjIHNvIGlmIEdEQiBpc24ndCBsb29raW5n IGluIHRoYXQgZGlyZWN0b3J5LCB0aGVuIHRoZXJlJ3Mgbm8KLSsgICAgIyByZWFzb24gdG8gdHJ5 IGFuZCBmaWd1cmUgb3V0IGEgc3VpdGFibGUgUlBNIHRvIGluc3RhbGwuCi0rICAgIGRlZiB1c2lu Z19zdWl0YWJsZV9kZWJ1Z19maWxlX2RpcmVjdG9yeSgpOgotKyAgICAgICAgZGVidWdfZmlsZV9k aXJlY3RvcmllcyA9IGdkYi5wYXJhbWV0ZXIoImRlYnVnLWZpbGUtZGlyZWN0b3J5IikKLSsgICAg ICAgIGZvciBkIGluIGRlYnVnX2ZpbGVfZGlyZWN0b3JpZXMuc3BsaXQob3MucGF0aHNlcCk6Ci0r ICAgICAgICAgICAgaWYgZFs6OF0gPT0gIi91c3IvbGliIjoKLSsgICAgICAgICAgICAgICAgcmV0 dXJuIFRydWUKLSsgICAgICAgIHJldHVybiBGYWxzZQotKwotKyAgICAjIFJldHVybiBUcnVlIGlm IHJwbS1zdWdnZXN0aW9uIGlzIGRpc2FibGVkIGZvciBhbnkgcmVhc29uLgotKyAgICBkZWYgcnBt X3N1Z2dlc3Rpb25faXNfZGlzYWJsZWQoKToKLSsgICAgICAgICMgSWYgL3Vzci9saWIvIGlzIG5v dCBiZWluZyB1c2VkIHRvIGZpbmQgZGVidWcgaW5mb3JtYXRpb24KLSsgICAgICAgICMgdGhlbiB0 aGVyZSdzIG5vIHBvaW50IG9mZmVyaW5nIGFueSBSUE1zIGFzIEdEQiB3b3VsZCBub3QKLSsgICAg ICAgICMgZmluZCB0aGUgbmV3bHkgaW5zdGFsbGVkIGNvbnRlbnQuCi0rICAgICAgICBpZiBub3Qg dXNpbmdfc3VpdGFibGVfZGVidWdfZmlsZV9kaXJlY3RvcnkoKToKLSsgICAgICAgICAgICByZXR1 cm4gVHJ1ZQotKwotKyAgICAgICAgIyBJcyAncnBtLXN1Z2dlc3Rpb24gZW5hYmxlZCcgc2V0IHRv ICdvZmYnPwotKyAgICAgICAgaWYgbm90IHBhcmFtX3JwbV9zdWdnZXN0aW9uX2VuYWJsZWQudmFs dWU6Ci0rICAgICAgICAgICAgcmV0dXJuIFRydWUKLSsKLSsgICAgICAgIHJldHVybiBGYWxzZQot KwotKwotKyAgICAjIExvb2t1cCBSUE1zIHRoYXQgbWlnaHQgcHJvdmlkZSB0aGUgZGVidWcgaW5m b3JtYXRpb24gZm9yIEZJTEVOQU1FLAotKyAgICAjIHdoaWNoIGlzIGEgc3RyaW5nIGNvbnRhaW5p bmcgdGhlIHBhdGggdG8gYW4gb2JqZWN0IGZpbGUgR0RCIGNvdWxkCi0rICAgICMgbm90IGZpbmQg YW55IGRlYnVnIGluZm9ybWF0aW9uIGZvci4KLSsgICAgIwotKyAgICAjIElmIGEgcG9zc2libGUg UlBNIGlzIGZvdW5kIHRoZW4gdGhpcyBpcyBhZGRlZCB0byB0aGUgZ2xvYmFscwotKyAgICAjIF9f TUlTU0lOR19SUE1TIGFuZCBfX1NVR0dFU1RfUlBNUywgd2hpY2ggYXJlIHVzZWQgZWxzZXdoZXJl IGluIHRoaXMKLSsgICAgIyBzY3JpcHQuCi0rICAgIGRlZiBmaW5kX2RlYnVnX3N1Z2dlc3Rpb25z KGZpbGVuYW1lKToKLSsgICAgICAgIGlmIHJwbV9zdWdnZXN0aW9uX2lzX2Rpc2FibGVkKCk6Ci0r ICAgICAgICAgICAgcmV0dXJuCi0rCi0rICAgICAgICB0cyA9IHJwbS5UcmFuc2FjdGlvblNldCgp Ci0rICAgICAgICBtaSA9IHRzLmRiTWF0Y2gocnBtLlJQTURCSV9CQVNFTkFNRVMsIGZpbGVuYW1l KQotKyAgICAgICAgZm9yIGggaW4gbWk6Ci0rICAgICAgICAgICAgIyBCdWlsZCB0aGUgZGVidWdp bmZvIHBhY2thZ2UgbmFtZS4KLSsgICAgICAgICAgICBvYmogPSBoLmZvcm1hdCgiJXtuYW1lfS1k ZWJ1Z2luZm8tJXt2ZXJzaW9ufS0le3JlbGVhc2V9LiV7YXJjaH0iKQotKyAgICAgICAgICAgIHJw bV9uYW1lID0gc3RyKG9iaikKLSsKLSsgICAgICAgICAgICAjIENoZWNrIHRvIHNlZSBpZiB0aGUg cGFja2FnZSBpcyBpbnN0YWxsZWQuCi0rICAgICAgICAgICAgaWYgaXNfcnBtX2luc3RhbGxlZCh0 cywgcnBtX25hbWUpOgotKyAgICAgICAgICAgICAgICBjb250aW51ZQotKwotKyAgICAgICAgICAg IGFkZF9ycG1fc3VnZ2VzdGlvbihycG1fbmFtZSkKLSsKLSsKLSsgICAgIyBSZXR1cm4gYSBzdHJp bmcgd2hpY2ggaXMgdGhlIGZpbGVuYW1lIG9mIHRoZSBmaWxlbmFtZQotKyAgICAjIGNvcnJlc3Bv bmRpbmcgdG8gQlVJTERfSUQgaW4gb25lIG9mIHRoZSB0d28gbG9jYXRpb25zIHVuZGVyCi0rICAg ICMgL3Vzci9saWIuCi0rICAgICMKLSsgICAgIyBXaGVuIERFQlVHX1AgaXMgVHJ1ZSwgcmV0dXJu IGEgZmlsZW5hbWUgd2l0aGluOgotKyAgICAjIC91c3IvbGliL2RlYnVnLy5idWlsZC1pZC8gYW5k IHdoZW4gREVCVUdfUCBpcyBGYWxzZSwgcmV0dXJuIGEKLSsgICAgIyBmaWxlbmFtZSB3aXRoaW46 IC91c3IvbGliLy5idWlsZC1pZC8uCi0rICAgICMKLSsgICAgIyBUaGUgU1VGRklYIHN0cmluZyBp cyBhcHBlbmRlZCB0byB0aGUgZ2VuZXJhdGVkIGZpbGVuYW1lLgotKyAgICBkZWYgYnVpbGRfaWRf dG9fdXNyX2xpYl9maWxlbmFtZShidWlsZF9pZCwgZGVidWdfcCwgc3VmZml4ID0gIiIpOgotKyAg ICAgICAga2V5ID0gYnVpbGRfaWRbOjJdCi0rICAgICAgICByc3QgPSBidWlsZF9pZFsyOl0KLSsK LSsgICAgICAgIGZpbGVuYW1lID0gJy91c3IvbGliJwotKyAgICAgICAgaWYgZGVidWdfcDoKLSsg ICAgICAgICAgICBmaWxlbmFtZSArPSAnL2RlYnVnJwotKyAgICAgICAgZmlsZW5hbWUgKz0gJy8u YnVpbGQtaWQvJyArIGtleSArICcvJyArIHJzdCArIHN1ZmZpeAotKwotKyAgICAgICAgcmV0dXJu IGZpbGVuYW1lCi0rCi0rICAgICMgQSByZWdleHAgb2JqZWN0IHVzZWQgdG8gbWF0Y2ggYWdhaW5z dCB0aGUgb3V0cHV0IG9mIGBkbmZgLiAgVGhpcwotKyAgICAjIGlzIGluaXRpYWxpc2VkIHRoZSBm aXJzdCB0aW1lIGl0IGlzIG5lZWRlZC4KLSsgICAgZmluZF9vYmpmaWxlX3N1Z2dlc3Rpb25zX3Jl ID0gTm9uZQotKwotKyAgICAjIEdpdmVuIEJVSUxEX0lELCBhIHN0cmluZyBjb250YWluaW5nIGEg YnVpbGQtaWQsIHJ1biBhIGBkbmZgCi0rICAgICMgY29tbWFuZCB0byBmaWd1cmUgb3V0IGlmIGFu eSBSUE1zIGNhbiBwcm92aWRlIGEgZmlsZSB3aXRoIHRoYXQKLSsgICAgIyBidWlsZC1pZC4KLSsg ICAgIwotKyAgICAjIElmIGFueSBzdWl0YWJsZSBSUE1zIGFyZSBmb3VuZCB0aGVuIGBhZGRfcnBt X3N1Z2dlc3Rpb25gIGlzIGNhbGxlZAotKyAgICAjIHRvIHJlZ2lzdGVyIHRoZSBzdWdnZXN0aW9u LgotKyAgICAjCi0rICAgICMgVGhpcyBmdW5jdGlvbiBpcyBwcmV0dHkgc2xvdywgd2hpY2ggaXMg YSBzaGFtZSwgYXMgdGhlIHJlc3VsdHMKLSsgICAgIyByZXR1cm5lZCBhcmUgbXVjaCBuaWNlciB0 aGFuIGp1c3QgdGVsbGluZyB0aGUgdXNlciB0byB0cnkgdGhlCi0rICAgICMgbG9va3VwIGNvbW1h bmQgZm9yIHRoZW1zZWx2ZXMuCi0rICAgIGRlZiBmaW5kX29iamZpbGVfc3VnZ2VzdGlvbnNfaW5f dGhyZWFkKGJ1aWxkX2lkKToKLSsgICAgICAgIGdsb2JhbCBmaW5kX29iamZpbGVfc3VnZ2VzdGlv bnNfcmUKLSsKLSsgICAgICAgIGlmIGZpbmRfb2JqZmlsZV9zdWdnZXN0aW9uc19yZSBpcyBOb25l OgotKyAgICAgICAgICAgIGZpbmRfb2JqZmlsZV9zdWdnZXN0aW9uc19yZSA9IHJlLmNvbXBpbGUo Il4oLiopLWRlYnVnaW5mby0oLiopIDogRGVidWcgaW5mb3JtYXRpb24gZm9yIHBhY2thZ2UgKC4q KSQiKQotKwotKyAgICAgICAgcmVzdWx0ID0gc3VicHJvY2Vzcy5ydW4oWydkbmYnLCAiLS1lbmFi bGVyZXBvPSpkZWJ1ZyoiLCAnLS1ub2dwZ2NoZWNrJywgJy1DJywgJ3Byb3ZpZGVzJywKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZF9pZF90b191c3JfbGliX2ZpbGVuYW1l KGJ1aWxkX2lkLCBUcnVlKV0sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXB0 dXJlX291dHB1dD1UcnVlLCB0aW1lb3V0PTMwKQotKwotKyAgICAgICAgbGluZXMgPSByZXN1bHQu c3Rkb3V0LmRlY29kZSgndXRmLTgnKS5zcGxpdGxpbmVzKCkKLSsgICAgICAgIHRzID0gcnBtLlRy YW5zYWN0aW9uU2V0KCkKLSsKLSsgICAgICAgIGZvciBsIGluIGxpbmVzOgotKyAgICAgICAgICAg IG0gPSBmaW5kX29iamZpbGVfc3VnZ2VzdGlvbnNfcmUubWF0Y2gobCkKLSsgICAgICAgICAgICBp ZiBub3QgbToKLSsgICAgICAgICAgICAgICAgY29udGludWUKLSsgICAgICAgICAgICBpZiBtLmdy b3VwKDEpICE9IG0uZ3JvdXAoMyk6Ci0rICAgICAgICAgICAgICAgIHJldHVybgotKwotKyAgICAg ICAgICAgIG1haW5fcnBtID0gbS5ncm91cCgxKSArICctJyArIG0uZ3JvdXAoMikKLSsgICAgICAg ICAgICBkYmdfcnBtID0gbS5ncm91cCgxKSArICctZGVidWdpbmZvLScgKyBtLmdyb3VwKDIpCi0r Ci0rICAgICAgICAgICAgaWYgbm90IGlzX3JwbV9pbnN0YWxsZWQodHMsIG1haW5fcnBtKToKLSsg ICAgICAgICAgICAgICAgYWRkX3JwbV9zdWdnZXN0aW9uKG1haW5fcnBtKQotKwotKyAgICAgICAg ICAgIGlmIG5vdCBpc19ycG1faW5zdGFsbGVkKHRzLCBkYmdfcnBtKToKLSsgICAgICAgICAgICAg ICAgYWRkX3JwbV9zdWdnZXN0aW9uKGRiZ19ycG0pCi0rCi0rICAgICAgICByZXR1cm4KLSsKLSsg ICAgIyBDYWxsIGBmaW5kX29iamZpbGVfc3VnZ2VzdGlvbnNfaW5fdGhyZWFkYCBpcyBhIHNlcGFy YXRlIHRocmVhZCwKLSsgICAgIyB0aGVuIHdhaXQgZm9yIHRoZSB0aHJlYWQgdG8gY29tcGxldGUu ICBEb24ndCB0b3VjaCBhbnkgc2hhcmVkCi0rICAgICMgc3RhdGUgd2hpbGUgd2FpdGluZyBmb3Ig dGhlIHRocmVhZCB0byBjb21wbGV0ZS4gIFRoZXJlJ3Mgbm8KLSsgICAgIyBsb2NraW5nIG9uIGFu eSBvZiBvdXIgY2FjaGVzLCBhbmQgdGhlIHdvcmtlciB0aHJlYWQgd2lsbCBhZGQgUlBNCi0rICAg ICMgc3VnZ2VzdGlvbnMgYXMgaXQgd2FudHMuCi0rICAgICMKLSsgICAgIyBJZiB0aHJlIHRocmVh ZCB0YWtlcyB0b28gbG9uZyB0byBjb21wbGV0ZSB0aGVuIHByaW50IGEgbWVzc2FnZQotKyAgICAj IHRvIHRoZSB1c2VyIHRlbGxpbmcgdGhlbSB3aGF0J3MgZ29pbmcgb24uCi0rICAgIGRlZiBmaW5k X29iamZpbGVfc3VnZ2VzdGlvbnNfc2xvd19jb3JlKGJ1aWxkX2lkKToKLSsgICAgICAgIGdsb2Jh bCBfX3NlYXJjaGluZ19tZXNzYWdlX3ByaW50ZWQKLSsKLSsgICAgICAgIHRocmVhZCA9IFRocmVh ZCh0YXJnZXQgPSBmaW5kX29iamZpbGVfc3VnZ2VzdGlvbnNfaW5fdGhyZWFkLCBhcmdzID0gKGJ1 aWxkX2lkLCApKQotKyAgICAgICAgdGhyZWFkLnN0YXJ0KCkKLSsgICAgICAgIHN0YXJ0ID0gdGlt ZS50aW1lX25zKCkKLSsKLSsgICAgICAgIHdoaWxlIHRocmVhZC5pc19hbGl2ZSAoKToKLSsgICAg ICAgICAgICB0aW1lLnNsZWVwKDAuMDUpCi0rICAgICAgICAgICAgbm93ID0gdGltZS50aW1lX25z ICgpCi0rICAgICAgICAgICAgaWYgbm90IF9fc2VhcmNoaW5nX21lc3NhZ2VfcHJpbnRlZCBhbmQg KG5vdyAtIHN0YXJ0ID4gMTAwMDAwMDAwMCk6Ci0rICAgICAgICAgICAgICAgIHByaW50KCJTZWFy Y2hpbmcgZm9yIHBhY2thZ2VzIHRvIGluc3RhbGwgdGhhdCBjb3VsZCBpbXByb3ZlIGRlYnVnZ2lu Zy4uLiIpCi0rICAgICAgICAgICAgICAgIF9fc2VhcmNoaW5nX21lc3NhZ2VfcHJpbnRlZCA9IFRy dWUKLSsKLSsgICAgICAgIHRocmVhZC5qb2luKCkKLSsKLSsKLSsgICAgIyBHaXZlbiBCVUlMRF9J RCwgYSBzdHJpbmcgY29udGFpbmluZyBhIGJ1aWxkLWlkLCBsb29rdXAgc3VpdGFibGUKLSsgICAg IyBSUE1zIHRoYXQgY291bGQgYmUgaW5zdGFsbGVkIHRvIHByb3ZpZGUgYSBmaWxlIHdpdGggdGhl IHJlcXVpcmVkCi0rICAgICMgYnVpbGQtaWQuCi0rICAgICMKLSsgICAgIyBBbnkgc3VpdGFibGUg UlBNcyBhcmUgcmVjb3JkZWQgYnkgY2FsbGluZyBgYWRkX3JwbV9zdWdnZXN0aW9uYCwgYW5kCi0r ICAgICMgd2lsbCBiZSBwcmludGVkIGJlZm9yZSB0aGUgbmV4dCBwcm9tcHQuCi0rICAgIGRlZiBm aW5kX29iamZpbGVfc3VnZ2VzdGlvbnNfc2xvdyhidWlsZF9pZCk6Ci0rICAgICAgICBnbG9iYWwg X19idWlsZF9pZF9sb29rdXBfY2FjaGUKLSsgICAgICAgIGdsb2JhbCBfX3N1Z2dlc3RfcnBtcwot KwotKyAgICAgICAgIyBUaGUgY29kZSB0byBsb29rdXAgYW4gUlBNIGdpdmVuIG9ubHkgYSBidWls ZC1pZCBpcyBwcmV0dHkKLSsgICAgICAgICMgc2xvdy4gIENhY2hlIHRoZSByZXN1bHRzIHRvIHRy eSBhbmQgcmVkdWNlIHRoZSBVSSBkZWxheXMuCi0rICAgICAgICBpZiBidWlsZF9pZCBpbiBfX2J1 aWxkX2lkX2xvb2t1cF9jYWNoZToKLSsgICAgICAgICAgICBycG1zID0gX19idWlsZF9pZF9sb29r dXBfY2FjaGVbYnVpbGRfaWRdCi0rICAgICAgICAgICAgaWYgcnBtcyBpcyBub3QgTm9uZToKLSsg ICAgICAgICAgICAgICAgZm9yIHIgaW4gcnBtczoKLSsgICAgICAgICAgICAgICAgICAgIGFkZF9y cG1fc3VnZ2VzdGlvbihyKQotKyAgICAgICAgICAgIHJldHVybgotKwotKyAgICAgICAgIyBNYWtl IHN1cmUgdGhlIGNhY2hlIGVudHJ5IGV4aXN0cyBiZWZvcmUgd2UgZG8gdGhlIGxvb2t1cC4KLSsg ICAgICAgICMgSWYsIGZvciBhbnkgcmVhc29uLCB0aGUgbG9va3VwIHJhaXNlcyBhbiBleGNlcHRp b24sIHRoZW4KLSsgICAgICAgICMgaGF2aW5nIGEgY2FjaGUgZW50cnkgd2lsbCBwcmV2ZW50IHVz IHJldHJ5aW5nIHRoaXMgbG9va3VwIGluCi0rICAgICAgICAjIHRoZSBmdXR1cmUuCi0rICAgICAg ICBfX2J1aWxkX2lkX2xvb2t1cF9jYWNoZVtidWlsZF9pZF0gPSBOb25lCi0rCi0rICAgICAgICAj IE5vdyBkbyB0aGUgbG9va3VwLiAgVGhpcyBpcyB0aGUgc2xvdyBwYXJ0LgotKyAgICAgICAgZmlu ZF9vYmpmaWxlX3N1Z2dlc3Rpb25zX3Nsb3dfY29yZShidWlsZF9pZCkKLSsKLSsgICAgICAgICMg RmlsbCBpbiB0aGUgY2FjaGUsIGZvciBhIGdpdmVuIGJ1aWxkLWlkIHdoaWNoIFJQTXMgd2VyZQot KyAgICAgICAgIyBzdWdnZXN0ZWQuCi0rICAgICAgICBycG1zID0gW10KLSsgICAgICAgIGZvciBy IGluIF9fc3VnZ2VzdF9ycG1zOgotKyAgICAgICAgICAgIHJwbXMuYXBwZW5kKHIpCi0rICAgICAg ICBfX2J1aWxkX2lkX2xvb2t1cF9jYWNoZVtidWlsZF9pZF0gPSBycG1zCi0rCi0rCi0rICAgICMg R2l2ZW4gQlVJTERfSUQsIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSBidWlsZC1pZCwganVzdCByZWNv cmQgdGhhdCB3ZQotKyAgICAjIHNob3VsZCBhZHZpc2UgdGhlIHVzZXIgdG8gdHJ5IGluc3RhbGxp bmcgUlBNcyBiYXNlZCBvbiB0aGlzIGJ1aWxkLWlkLgotKyAgICBkZWYgZmluZF9vYmpmaWxlX3N1 Z2dlc3Rpb25zX2Zhc3QoYnVpbGRfaWQpOgotKyAgICAgICAgYWRkX2J1aWxkX2lkX3N1Z2dlc3Rp b24oYnVpbGRfaWQpCi0rCi0rICAgICMgR2l2ZW4gQlVJTERfSUQsIGEgc3RyaW5nIGNvbnRhaW5p bmcgYSBidWlsZC1pZCwgd2hpY2ggR0RCIGhhcyBmYWlsZWQKLSsgICAgIyB0byBmaW5kLCBwb3Nz aWJseSByZWNvcmQgc29tZSBpbmZvcm1hdGlvbiBzbyB0aGF0IHdlIGNhbiwgYXQgdGhlIG5leHQK LSsgICAgIyBwcm9tcHQsIGdpdmUgc29tZSBSUE0gaW5zdGFsbGF0aW9uIGFkdmljZSB0byB0aGUg dXNlci4KLSsgICAgIwotKyAgICAjIFdlIGhhdmUgdHdvIGRpZmZlcmVudCBzdHJhdGVnaWVzIGZv ciBSUE0gbG9va3VwIGJhc2VkIG9uIGEgYnVpbGQtaWQsCi0rICAgICMgb25lIGFwcHJvYWNoIGlz IHRoYXQgd2UgYWN0dWFsbHkgbG9va3VwIHRoZSBSUE1zIGFuZCBvbmx5IHN1Z2dlc3QKLSsgICAg IyBzb21ldGhpbmcgaWYgdGhlcmUgaXMgYSBzdWl0YWJsZSBSUE0uICBIb3dldmVyLCB0aGlzIGlz IHByZXR0eSBzbG93LAotKyAgICAjIGFuZCB1c2VycyB3aWxsIHByb2JhYmx5IGZpbmQgdGhpcyBh bm5veWluZy4KLSsgICAgIwotKyAgICAjIFNvIHdlIGFsc28gaGF2ZSBhIGZhc3Qgd2F5LiAgV2l0 aCB0aGlzIGFwcHJvYWNoIHdlIGp1c3QgcmVjb3JkIHRoZQotKyAgICAjIGJ1aWxkLWlkIHRoYXQg d2FzIG1pc3NpbmcgYW5kIHRlbGwgdGhlIHVzZXIgdG8gdHJ5IGluc3RhbGxpbmcgYmFzZWQgb24K LSsgICAgIyB0aGUgYnVpbGQtaWQuICBUaGUgZG93bnNpZGUgd2l0aCB0aGlzIGlzIHRoYXQgaWYg dGhlcmUgaXMgbm8gUlBNIGZvcgotKyAgICAjIHRoYXQgYnVpbGQtaWQsIHRoZW4gdGhlIHVzZXIg d2lsbCB0cnkgdGhlIGNvbW1hbmQsIGJ1dCBub3RoaW5nIHdpbGwKLSsgICAgIyBpbnN0YWxsLgot KyAgICBkZWYgZmluZF9vYmpmaWxlX3N1Z2dlc3Rpb25zKGJ1aWxkX2lkKToKLSsgICAgICAgIGlm IHJwbV9zdWdnZXN0aW9uX2lzX2Rpc2FibGVkKCk6Ci0rICAgICAgICAgICAgcmV0dXJuCi0rCi0r ICAgICAgICBpZiBwYXJhbV9ycG1fc3VnZ2VzdGlvbl9idWlsZF9pZF9tb2RlLmZhc3RfbW9kZSgp OgotKyAgICAgICAgICAgIGZpbmRfb2JqZmlsZV9zdWdnZXN0aW9uc19mYXN0KGJ1aWxkX2lkKQot KyAgICAgICAgZWxzZToKLSsgICAgICAgICAgICBmaW5kX29iamZpbGVfc3VnZ2VzdGlvbnNfc2xv dyhidWlsZF9pZCkKLSsKLSsgICAgIyBBIG1pc3NpbmcgZGVidWcgaGFuZGxlciBjbGFzcy4gIEp1 c3QgZm9yd2FyZHMgdGhlIG5hbWUgb2YgdGhlCi0rICAgICMgb2JqZmlsZSBmb3Igd2hpY2ggd2Ug YXJlIG1pc3NpbmcgZGVidWcgaW5mb3JtYXRpb24gdG8KLSsgICAgIyBmaW5kX2RlYnVnX3N1Z2dl c3Rpb25zLgotKyAgICBjbGFzcyBSUE1fTWlzc2luZ0RlYnVnSGFuZGxlcihnZGIubWlzc2luZ19k ZWJ1Zy5NaXNzaW5nRGVidWdIYW5kbGVyKToKLSsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToK LSsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKCJycG0tc3VnZ2VzdGlvbnMiKQotKwotKyAg ICAgICAgZGVmIF9fY2FsbF9fKHNlbGYsIG9iamZpbGUpOgotKyAgICAgICAgICAgIGZpbmRfZGVi dWdfc3VnZ2VzdGlvbnMob2JqZmlsZS5maWxlbmFtZSkKLSsgICAgICAgICAgICByZXR1cm4gRmFs c2UKLSsKLSsgICAgIyBBIG1pc3Npbmcgb2JqZmlsZSBoYW5kbGVyIGNsYXNzLiAgSnVzdCBmb3J3 YXJkcyB0aGUgYnVpbGQtaWQgb2YKLSsgICAgIyB0aGUgb2JqZmlsZSB0aGF0IGlzIG1pc3Npbmcg dG8gZmluZF9vYmpmaWxlX3N1Z2dlc3Rpb25zLgotKyAgICBjbGFzcyBSUE1fTWlzc2luZ09iamZp bGVIYW5kbGVyKGdkYi5taXNzaW5nX29iamZpbGUuTWlzc2luZ09iamZpbGVIYW5kbGVyKToKLSsg ICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9f KCJycG0tc3VnZ2VzdGlvbnMiKQotKwotKyAgICAgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBzcGFj ZSwgYnVpbGRfaWQsIGZpbGVuYW1lKToKLSsgICAgICAgICAgICBmaW5kX29iamZpbGVfc3VnZ2Vz dGlvbnMoYnVpbGRfaWQpCi0rICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0rCi0rICAgICMgVGFr ZSBhIG5vbi1lbXB0eSBsaXN0IG9mIFJQTSBuYW1lcyBhbmQgcHJpbnQgYSBjb21tYW5kIGxpbmUg YQotKyAgICAjIHVzZXIgY291bGQgcnVuIHRvIGluc3RhbGwgdGhlc2UgUlBNcy4KLSsgICAgZGVm IHByaW50X3JwbV9zdWdnZXN0aW9ucyhycG1fbmFtZV9saXN0KToKLSsgICAgICAgIHByaW50KCJN aXNzaW5nIHJwbXMsIHRyeTogZG5mIC0tZW5hYmxlcmVwbz0nKmRlYnVnKicgaW5zdGFsbCAiICsg JyAnLmpvaW4ocnBtX25hbWVfbGlzdCkpCi0rCi0rICAgICMgVGFrZSBhIG5vbi1lbXB0eSBsaXN0 IG9mIGJ1aWxkLWlkIHN0cmluZ3MgYW5kIHByaW50IGEgc2VyaWVzIG9mCi0rICAgICMgbGluZXMg dGhhdCBhIHVzZXIgY291bGQgcnVuIHRvIGluc3RsbCB0aGUgUlBNcyB0aGF0IHByb3ZpZGUKLSsg ICAgIyBmaWxlcyB3aXRoIHRoaXMgYnVpbGQtaWQuCi0rICAgICMKLSsgICAgIyBUaGUgcHJpbnRl ZCBjb21tYW5kcyB3aWxsIGFsc28gaW5zdGFsbCB0aGUgY29ycmVzcG9uZGluZyBkZWJ1ZwotKyAg ICAjIHBhY2thZ2VzIGZvciB0aGUgZXhlY3V0YWJsZSB3aXRoIHRoZSBnaXZlbiBidWlsZC1pZC4K LSsgICAgZGVmIHByaW50X2J1aWxkX2lkX3N1Z2dlc3Rpb25zKGJ1aWxkX2lkX2xpc3QpOgotKyAg ICAgICAgZm9yIGJ1aWxkX2lkIGluIGJ1aWxkX2lkX2xpc3Q6Ci0rICAgICAgICAgICAgcHJpbnQo Ik1pc3NpbmcgZmlsZShzKSwgdHJ5OiBkbmYgLS1lbmFibGVyZXBvPScqZGVidWcqJyBpbnN0YWxs ICIKLSsgICAgICAgICAgICAgICAgICArIGJ1aWxkX2lkX3RvX3Vzcl9saWJfZmlsZW5hbWUoYnVp bGRfaWQsIEZhbHNlKQotKyAgICAgICAgICAgICAgICAgICsgJyAnCi0rICAgICAgICAgICAgICAg ICAgKyBidWlsZF9pZF90b191c3JfbGliX2ZpbGVuYW1lKGJ1aWxkX2lkLCBUcnVlLCAiLmRlYnVn IikpCi0rCi0rICAgICMgQ2FsbGVkIGJlZm9yZSBHREIgZGlzcGxheXMgaXRzIHByb21wdC4gIElm IHRoZSBnbG9iYWwgX19TVUdHRVNUX1JQTVMKLSsgICAgIyBkaWN0aW9uYXJ5IGlzIG5vdCBlbXB0 eSwgdGhlbiB0aGlzIGhvb2sgcHJpbnRzIHRoZSBrZXlzIG9mIHRoaXMKLSsgICAgIyBkaWN0aW9u YXJ5IGFzIHN0cmluZ3Mgd2hpY2ggYXJlIHRoZSBuYW1lcyBvZiBSUE1zLiAgVGhpcyBob29rIGZv cm1hdHMKLSsgICAgIyBlYWNoIFJQTSBuYW1lIGludG8gYSBzdWdnZXN0ZWQgJ2RuZiBpbnN0YWxs JyBjb21tYW5kIGFuZCBzdWdnZXN0cyB0aGlzCi0rICAgICMgdG8gdGhlIHVzZXIuCi0rICAgICMK LSsgICAgIyBBZGRpdGlvbmFsbHksIGlmIHRoZSBnbG9iYWwgX19TVUdHRVNUX0JVSUxEX0lEUyBk aWN0aW9uYXJ5IGlzIG5vdAotKyAgICAjIGVtcHR5LCB0aGVuIHRoaXMgaG9vayB1c2VzIHRoZSBr ZXlzIG9mIHRoaXMgZGljdGlvbmFyeSBhcyBidWlsZC1pZHMKLSsgICAgIyB0aGF0IHdlcmUgZm91 bmQgdG8gYmUgbWlzc2luZywgYW5kIGZvcm1hdHMgdGhlc2UgaW50byBzb21lIGZpbGUgYmFzZWQK LSsgICAgIyAnZG5mIGluc3RhbGwnIHN1Z2dlc3Rpb25zIHRvIHRoZSB1c2VyLgotKyAgICBkZWYg YmVmb3JlX3Byb21wdCgpOgotKyAgICAgICAgZ2xvYmFsIF9fc3VnZ2VzdF9ycG1zCi0rICAgICAg ICBnbG9iYWwgX19zdWdnZXN0X2J1aWxkX2lkcwotKyAgICAgICAgZ2xvYmFsIF9fc2VhcmNoaW5n X21lc3NhZ2VfcHJpbnRlZAotKwotKyAgICAgICAgIyBXZSBhbGxvdyB0aGUgc2VhcmNoaW5nIG1l c3NhZ2UgdG8gYmUgcHJpbnRlZCBqdXN0IG9uY2UKLSsgICAgICAgICMgYmV0d2VlbiBwcm9tcHRz LgotKyAgICAgICAgX19zZWFyY2hpbmdfbWVzc2FnZV9wcmludGVkID0gRmFsc2UKLSsKLSsgICAg ICAgIGlmIGxlbihfX3N1Z2dlc3RfcnBtcykgPiAwOgotKyAgICAgICAgICAgIHByaW50X3JwbV9z dWdnZXN0aW9ucyhfX3N1Z2dlc3RfcnBtcy5rZXlzKCkpCi0rICAgICAgICAgICAgX19zdWdnZXN0 X3JwbXMgPSB7fQotKwotKyAgICAgICAgaWYgbGVuKF9fc3VnZ2VzdF9idWlsZF9pZHMpID4gMDoK LSsgICAgICAgICAgICBwcmludF9idWlsZF9pZF9zdWdnZXN0aW9ucyhfX3N1Z2dlc3RfYnVpbGRf aWRzLmtleXMoKSkKLSsgICAgICAgICAgICBfX3N1Z2dlc3RfYnVpbGRfaWRzID0ge30KLSsKLSsg ICAgIyBDYWxsZWQgd2hlbiB0aGUgZXhlY3V0YWJsZSB3aXRoaW4gYSBwcm9ncm0gc3BhY2UgaXMg Y2hhbmdlZC4gIENsZWFyCi0rICAgICMgdGhlIGxpc3RzIG9mIFJQTSBzdWdnZXN0aW9ucy4gIFdl IG9ubHkgY2xlYXIgdGhlIHByZXZpb3VzIHN1Z2dlc3Rpb24KLSsgICAgIyBsaXN0IHdoZW4gdGhl IGV4ZWN1dGFibGUgcmVhbGx5IGNoYW5nZXMuICBJZiB0aGUgdXNlciBzaW1wbHkKLSsgICAgIyBy ZWNvbXBpbGVzIHRoZSBleGVjdXRhYmxlLCB0aGVuIHdlIGRvbid0IGJvdGggY2xlYXJpbmcgdGhp cyBsaXN0LgotKyAgICBkZWYgZXhlY3V0YWJsZV9jaGFuZ2VkX2hhbmRsZXIoZXZlbnQpOgotKyAg ICAgICAgZ2xvYmFsIF9fbWlzc2luZ19ycG1zCi0rICAgICAgICBnbG9iYWwgX19zdWdnZXN0X3Jw bXMKLSsgICAgICAgIGdsb2JhbCBfX3N1Z2dlc3RfYnVpbGRfaWRzCi0rICAgICAgICBnbG9iYWwg X19taXNzaW5nX2J1aWxkX2lkcwotKwotKyAgICAgICAgaWYgbm90IGV2ZW50LnJlbG9hZDoKLSsg ICAgICAgICAgICBfX21pc3NpbmdfcnBtcyA9IHt9Ci0rICAgICAgICAgICAgX19zdWdnZXN0X3Jw bXMgPSB7fQotKyAgICAgICAgICAgIF9fbWlzc2luZ19idWlsZF9pZHMgPSB7fQotKyAgICAgICAg ICAgIF9fc3VnZ2VzdF9idWlsZF9pZHMgPSB7fQotKwotKwotKyAgICAjIEF0dGFjaCB0byB0aGUg cmVxdWlyZWQgR0RCIGV2ZW50cy4KLSsgICAgZ2RiLmV2ZW50cy5leGVjdXRhYmxlX2NoYW5nZWQu Y29ubmVjdChleGVjdXRhYmxlX2NoYW5nZWRfaGFuZGxlcikKLSsgICAgZ2RiLmV2ZW50cy5iZWZv cmVfcHJvbXB0LmNvbm5lY3QoYmVmb3JlX3Byb21wdCkKLSsKLSsgICAgIyBSZWdpc3RlciB0aGUg bWlzc2luZyBkZWJ1ZyBhbmQgbWlzc2luZyBvYmpmaWxlIGhhbmRsZXJzIHdpdGggR0RCLgotKyAg ICBnZGIubWlzc2luZ19kZWJ1Zy5yZWdpc3Rlcl9oYW5kbGVyKE5vbmUsIFJQTV9NaXNzaW5nRGVi dWdIYW5kbGVyKCkpCi0rICAgIGdkYi5taXNzaW5nX29iamZpbGUucmVnaXN0ZXJfaGFuZGxlcihO b25lLCBSUE1fTWlzc2luZ09iamZpbGVIYW5kbGVyKCkpCi0rCi0rICAgICMgSW1wbGVtZW50IHRo ZSBjb3JlIG9mICdpbmZvIHJwbS1zdWdnZXN0aW9ucycuICBSZXByaW50IGFsbCBycG0KLSsgICAg IyBzdWdnZXN0aW9ucy4KLSsgICAgZGVmIGluZm9fcnBtX3N1Z2dlc3Rpb25zKCk6Ci0rICAgICAg ICBnbG9iYWwgX19taXNzaW5nX3JwbXMKLSsgICAgICAgIGdsb2JhbCBfX21pc3NpbmdfYnVpbGRf aWRzCi0rCi0rICAgICAgICBpZiBsZW4oX19taXNzaW5nX3JwbXMpID09IDAgYW5kIGxlbihfX21p c3NpbmdfYnVpbGRfaWRzKSA9PSAwOgotKyAgICAgICAgICAgIHByaW50KCJObyBSUE0gc3VnZ2Vz dGlvbnMgaGF2ZSBiZWVuIG1hZGUgc28gZmFyLiIpCi0rICAgICAgICAgICAgcmV0dXJuCi0rCi0r ICAgICAgICBpZiBsZW4oX19taXNzaW5nX3JwbXMpID4gMDoKLSsgICAgICAgICAgICBwcmludF9y cG1fc3VnZ2VzdGlvbnMoX19taXNzaW5nX3JwbXMua2V5cygpKQotKyAgICAgICAgaWYgbGVuKF9f bWlzc2luZ19idWlsZF9pZHMpID4gMDoKLSsgICAgICAgICAgICBwcmludF9idWlsZF9pZF9zdWdn ZXN0aW9ucyhfX21pc3NpbmdfYnVpbGRfaWRzLmtleXMoKSkKLSsKLSsjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMg VGhlIGZvbGxvd2luZyBjb2RlIGlzIG91dHNpZGUgdGhlICdlbHNlJyBibG9jayBvZiB0aGUgYXR0 ZW1wdCB0byAjCi0rIyBsb2FkIHRoZSAncnBtJyBtb2R1bGUuICBOb3RoaW5nIGFmdGVyIHRoaXMg cG9pbnQgZGVwZW5kcyBvbiB0aGUgICMKLSsjICdycG0nIG1vZHVsZS4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwotKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rCi0r IyBUaGUgJ3NldCBycG0tc3VnZ2VzdGlvbicgcHJlZml4IGNvbW1hbmQuCi0rY2xhc3MgcnBtX3N1 Z2dlc3Rpb25fc2V0X3ByZWZpeChnZGIuQ29tbWFuZCk6Ci0rICAgICIiIlByZWZpeCBjb21tYW5k IGZvciAnc2V0JyBycG0tc3VnZ2VzdGlvbiByZWxhdGVkIGNvbW1hbmRzLiIiIgotKwotKyAgICBk ZWYgX19pbml0X18oc2VsZik6Ci0rICAgICAgICBzdXBlcigpLl9faW5pdF9fKCJzZXQgcnBtLXN1 Z2dlc3Rpb24iLCBnZGIuQ09NTUFORF9OT05FLAotKyAgICAgICAgICAgICAgICAgICAgICAgICBn ZGIuQ09NUExFVEVfTk9ORSwgVHJ1ZSkKLSsKLSsjIFRoZSAnc2hvdyBycG0tc3VnZ2VzdGlvbicg cHJlZml4IGNvbW1hbmQuCi0rY2xhc3MgcnBtX3N1Z2dlc3Rpb25fc2hvd19wcmVmaXgoZ2RiLkNv bW1hbmQpOgotKyAgICAiIiJQcmVmaXggY29tbWFuZCBmb3IgJ3Nob3cnIHJwbS1zdWdnZXN0aW9u IHJlbGF0ZWQgY29tbWFuZHMuIiIiCi0rCi0rICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSsgICAg ICAgIHN1cGVyKCkuX19pbml0X18oInNob3cgcnBtLXN1Z2dlc3Rpb24iLCBnZGIuQ09NTUFORF9O T05FLAotKyAgICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09NUExFVEVfTk9ORSwgVHJ1ZSkK LSsKLSsjIFRoZSAnc2V0L3Nob3cgcnBtLXN1Z2dlc3Rpb24gZW5hYmxlZCcgY29tbWFuZC4KLStj bGFzcyBycG1fc3VnZ2VzdGlvbl9lbmFibGVkKGdkYi5QYXJhbWV0ZXIpOgotKyAgICAiIiIKLSsg ICAgV2hlbiAnb24nIEdEQiB3aWxsIHNlYXJjaCBmb3IgUlBNUyB0aGF0IG1pZ2h0IHByb3ZpZGUg YWRkaXRpb25hbAotKyAgICBkZWJ1ZyBpbmZvcm1hdGlvbiwgb3IgcHJvdmlkZSBtaXNzaW5nIGV4 ZWN1dGFibGVzIG9yIHNoYXJlZAotKyAgICBsaWJyYXJpZXMgKHdoZW4gb3BlbmluZyBhIGNvcmUg ZmlsZSksIGFuZCB3aWxsIG1ha2Ugc3VnZ2VzdGlvbnMKLSsgICAgYWJvdXQgd2hhdCBzaG91bGQg YmUgaW5zdGFsbGVkLgotKwotKyAgICBXaGVuICdvZmYnIEdEQiB3aWxsIG5vdCBtYWtlIHRoZXNl IHN1Z2dlc3Rpb25zLgotKyAgICAiIiIKLSsKLSsgICAgc2V0X2RvYyA9ICJTZXQgd2hldGhlciB0 byBwZXJmb3JtIHJwbS1zdWdnZXN0aW9uLiIKLSsgICAgc2hvd19kb2MgPSAiU2hvdyB3aGV0aGVy IHJwbS1zdWdnZXN0aW9uIGlzIGVuYWJsZWQuIgotKwotKyAgICBkZWYgX19pbml0X18oc2VsZik6 Ci0rICAgICAgICBzdXBlcigpLl9faW5pdF9fKCJycG0tc3VnZ2VzdGlvbiBlbmFibGVkIiwgZ2Ri LkNPTU1BTkRfTk9ORSwgZ2RiLlBBUkFNX0JPT0xFQU4pCi0rICAgICAgICBzZWxmLnZhbHVlID0g VHJ1ZQotKwotKyMgVGhlICdzZXQvc2hvdyBycG0tc3VnZ2VzdGlvbiBlbmFibGVkJyBjb21tYW5k LgotK2NsYXNzIHJwbV9zdWdnZXN0aW9uX2J1aWxkX2lkX21vZGUoZ2RiLlBhcmFtZXRlcik6Ci0r ICAgICIiIgotKyAgICBXaGVuIHNldCB0byAnZmFzdCcgKHRoZSBkZWZhdWx0KSwgR0RCIGRvZXNu J3QgdHJ5IHRvIG1hcCBhIGJ1aWxkLWlkIHRvCi0rICAgIGFuIGFjdHVhbCBSUE0sIGluc3RlYWQs IEdEQiBqdXN0IHN1Z2dlc3RzIGEgY29tbWFuZCBiYXNlZCBvbiB0aGUKLSsgICAgYnVpbGQtaWQg d2hpY2ggbWlnaHQgaW5zdGFsbCBzb21lIFJQTXMsIGlmIHRoZXJlIGFyZSBhbnkgUlBNcyB0aGF0 Ci0rICAgIHN1cHBseSB0aGF0IGJ1aWxkLWlkLiAgSG93ZXZlciwgaXQgaXMgZXF1YWxseSBwb3Nz aWJsZSB0aGF0IHRoZXJlIGFyZSBubwotKyAgICBzdWl0YWJsZSBSUE1zLCBhbmQgbm90aGluZyB3 aWxsIGluc3RhbGwuICBUaGlzIGFwcHJvYWNoIGhhcyBhbG1vc3QgemVybwotKyAgICBvdmVyaGVh ZC4KLSsKLSsgICAgV2hlbiBzZXQgdG8gJ3Nsb3cnLCBHREIgZmlyc3QgZG9lcyB0aGUgYnVpbGQt aWQgdG8gUlBNIGNoZWNrIGl0c2VsZiwgYW5kCi0rICAgIG9ubHkgaWYgc29tZXRoaW5nIGlzIGZv dW5kIGFyZSBSUE1zIGluc3RhbGxhdGlvbiBjb21tYW5kcyBzdWdnZXN0ZWQuCi0rICAgIFRoZSBz dWdnZXN0ZWQgY29tbWFuZCB3aWxsIGluY2x1ZGUgdGhlIG5hbWUgb2YgdGhlIFJQTSB0byBpbnN0 YWxsLiAgVGhpcwotKyAgICBhcHByb2FjaCBpcyBjb25zaWRlcmFibHkgc2xvd2VyIGFzIHF1ZXJ5 aW5nIHRoZSBSUE0gZGF0YWJhc2UgZm9yIHRoZSBSUE0KLSsgICAgdGhhdCBzdXBwbGllcyBhIHNw ZWNpZmljIGZpbGUgaXMgc2xvdy4KLSsgICAgIiIiCi0rCi0rICAgIHNldF9kb2MgPSAiU2V0IGhv dyBidWlsZC1pZCBiYXNlZCBycG0gc3VnZ2VzdGlvbnMgc2hvdWxkIGJlIHBlcmZvcm1lZC4iCi0r ICAgIHNob3dfZG9jID0gIlNob3cgaG93IGJ1aWxkLWlkIGJhc2VkIHJwbSBzdWdnZXN0aW9ucyBz aG91ZCBiZSBwZXJmb3JtZWQuIgotKwotKyAgICBkZWYgX19pbml0X18oc2VsZik6Ci0rICAgICAg ICBzdXBlcigpLl9faW5pdF9fKCJycG0tc3VnZ2VzdGlvbiBidWlsZC1pZC1tb2RlIiwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgZ2RiLkNPTU1BTkRfTk9ORSwgZ2RiLlBBUkFNX0VOVU0sIFsi ZmFzdCIsICJzbG93Il0pCi0rICAgICAgICBzZWxmLnZhbHVlID0gImZhc3QiCi0rCi0rICAgIGRl ZiBmYXN0X21vZGUoc2VsZik6Ci0rICAgICAgICByZXR1cm4gc2VsZi52YWx1ZSA9PSAiZmFzdCIK LSsKLSsjIFRoZSAnaW5mbyBycG0tc3VnZ2VzdGlvbnMnIGNvbW1hbmQuCi0rY2xhc3MgcnBtX3N1 Z2dlc3Rpb25faW5mbyhnZGIuQ29tbWFuZCk6Ci0rICAgICIiIlJlbGlzdCBSUE0gc3VnZ2VzdGlv bnMuCi0rCi0rICAgIFJlbGlzdCBhbnkgUlBNIGluc3RhbGxhdGlvbiBzdWdnZXN0aW9ucyB0aGF0 IGhhdmUgYmVlbiBtYWRlCi0rICAgIHNpbmNlIHRoZSBleGVjdXRhYmxlIHdhcyBsYXN0IGNoYW5n ZWQuIiIiCi0rICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSsgICAgICAgIHN1cGVyKCkuX19pbml0 X18oImluZm8gcnBtLXN1Z2dlc3Rpb25zIiwgZ2RiLkNPTU1BTkRfTk9ORSwgZ2RiLkNPTVBMRVRF X05PTkUpCi0rCi0rICAgIGRlZiBpbnZva2Uoc2VsZiwgYXJncywgZnJvbV90dHkpOgotKyAgICAg ICAgaWYgYXJncyAhPSAiIjoKLSsgICAgICAgICAgICByYWlzZSBnZGIuR2RiRXJyb3IoInVuZXhw ZWN0ZWQgYXJndW1lbnRzOiAlcyIgJSBhcmdzKQotKwotKyAgICAgICAgaW5mb19ycG1fc3VnZ2Vz dGlvbnMgKCkKLSsKLSsKLSsjIENyZWF0ZSB0aGUgJ3NldC9zaG93IHJwbS1zdWdnZXN0aW9uJyBj b21tYW5kcy4KLStycG1fc3VnZ2VzdGlvbl9zZXRfcHJlZml4KCkKLStycG1fc3VnZ2VzdGlvbl9z aG93X3ByZWZpeCgpCi0rcGFyYW1fcnBtX3N1Z2dlc3Rpb25fZW5hYmxlZCA9IHJwbV9zdWdnZXN0 aW9uX2VuYWJsZWQoKQotK3BhcmFtX3JwbV9zdWdnZXN0aW9uX2J1aWxkX2lkX21vZGUgPSBycG1f c3VnZ2VzdGlvbl9idWlsZF9pZF9tb2RlKCkKLSsKLSsjIENyZWF0ZSB0aGUgJ2luZm8gcnBtLXN1 Z2dlc3Rpb25zJyBjb21tYW5kcy4KLStycG1fc3VnZ2VzdGlvbl9pbmZvKCkKLWRpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2djb3JlLWJ1aWxkaWQtZXhlYy1idXQtbm90LXNvbGli LWxpYi5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nY29yZS1idWlsZGlkLWV4ZWMtYnV0LW5v dC1zb2xpYi1saWIuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2NvcmUtYnVpbGRpZC1leGVjLWJ1dC1ub3Qtc29saWIt bGliLmMKLUBAIC0wLDAgKzEsMjEgQEAKLSsvKiBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCi0rCi0r ICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot KyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotK3ZvaWQKLStsaWIg KHZvaWQpCi0rewotK30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2djb3Jl LWJ1aWxkaWQtZXhlYy1idXQtbm90LXNvbGliLW1haW4uYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvZ2NvcmUtYnVpbGRpZC1leGVjLWJ1dC1ub3Qtc29saWItbWFpbi5jCi1uZXcgZmlsZSBtb2Rl IDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nY29y ZS1idWlsZGlkLWV4ZWMtYnV0LW5vdC1zb2xpYi1tYWluLmMKLUBAIC0wLDAgKzEsMjUgQEAKLSsv KiBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBU aGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uICAqLwotKwotK2V4dGVybiB2b2lkIGxpYiAodm9pZCk7Ci0rCi0raW50Ci0rbWFp biAodm9pZCkKLSt7Ci0rICBsaWIgKCk7Ci0rICByZXR1cm4gMDsKLSt9Ci1kaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nY29yZS1idWlsZGlkLWV4ZWMtYnV0LW5vdC1zb2xpYi5l eHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2djb3JlLWJ1aWxkaWQtZXhlYy1idXQtbm90LXNv bGliLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvZ2NvcmUtYnVpbGRpZC1leGVjLWJ1dC1ub3Qtc29saWIuZXhwCi1A QCAtMCwwICsxLDEwNCBAQAotKyMgQ29weXJpZ2h0IDIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y Ci0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot KyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK3JlcXVpcmUg YWxsb3dfc2hsaWJfdGVzdHMKLSsKLStzZXQgdGVzdGZpbGUgImdjb3JlLWJ1aWxkaWQtZXhlYy1i dXQtbm90LXNvbGliIgotK3NldCBzcmNtYWluZmlsZSAke3Rlc3RmaWxlfS1tYWluLmMKLStzZXQg c3JjbGliZmlsZSAke3Rlc3RmaWxlfS1saWIuYwotK3NldCBsaWJmaWxlIFtzdGFuZGFyZF9vdXRw dXRfZmlsZSAke3Rlc3RmaWxlfS1saWIuc29dCi0rc2V0IG9iamZpbGUgW3N0YW5kYXJkX291dHB1 dF9maWxlICR7dGVzdGZpbGV9LW1haW4ub10KLStzZXQgZXhlY3V0YWJsZSAke3Rlc3RmaWxlfS1t YWluCi0rc2V0IGJpbmZpbGUgW3N0YW5kYXJkX291dHB1dF9maWxlICR7ZXhlY3V0YWJsZX1dCi0r c2V0IGdjb3JlZmlsZSBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJHtleGVjdXRhYmxlfS5nY29yZV0K LStzZXQgb3V0ZGlyIFtmaWxlIGRpcm5hbWUgJGJpbmZpbGVdCi0rCi0raWYgeyBbZ2RiX2NvbXBp bGVfc2hsaWIgJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2xpYmZpbGV9ICR7bGliZmlsZX0gImRl YnVnIGFkZGl0aW9uYWxfZmxhZ3M9LVdsLC0tYnVpbGQtaWQiXSAhPSAiIgotKyAgICAgfHwgW2dk Yl9jb21waWxlICR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNtYWluZmlsZX0gJHtvYmpmaWxlfSBv YmplY3Qge2RlYnVnfV0gIT0gIiIgfSB7Ci0rICAgICB1bnN1cHBvcnRlZCAiLVdsLC0tYnVpbGQt aWQgY29tcGlsYXRpb24gZmFpbGVkIgotKyAgICAgcmV0dXJuIC0xCi0rfQotK3NldCBvcHRzIFts aXN0IGRlYnVnIHNobGliPSR7bGliZmlsZX0gImFkZGl0aW9uYWxfZmxhZ3M9LVdsLC0tYnVpbGQt aWQiXQotK2lmIHsgW2dkYl9jb21waWxlICR7b2JqZmlsZX0gJHtiaW5maWxlfSBleGVjdXRhYmxl ICRvcHRzXSAhPSAiIiB9IHsKLSsgICAgIHVuc3VwcG9ydGVkICItV2wsLS1idWlsZC1pZCBjb21w aWxhdGlvbiBmYWlsZWQiCi0rICAgICByZXR1cm4gLTEKLSt9Ci0rCi0rY2xlYW5fcmVzdGFydCAk ZXhlY3V0YWJsZQotK2dkYl9sb2FkX3NobGliICRsaWJmaWxlCi0rCi0rIyBEb2VzIHRoaXMgZ2Ri IHN1cHBvcnQgZ2NvcmU/Ci0rc2V0IHRlc3QgImhlbHAgZ2NvcmUiCi0rZ2RiX3Rlc3RfbXVsdGlw bGUgJHRlc3QgJHRlc3QgewotKyAgICAtcmUgIlVuZGVmaW5lZCBjb21tYW5kOiAuZ2NvcmUuKlxy XG4kZ2RiX3Byb21wdCAkIiB7Ci0rCSMgZ2NvcmUgY29tbWFuZCBub3Qgc3VwcG9ydGVkIC0tIG5v dGhpbmcgdG8gdGVzdCBoZXJlLgotKwl1bnN1cHBvcnRlZCAiZ2RiIGRvZXMgbm90IHN1cHBvcnQg Z2NvcmUgb24gdGhpcyB0YXJnZXQiCi0rCXJldHVybiAtMTsKLSsgICAgfQotKyAgICAtcmUgIlNh dmUgYSBjb3JlIGZpbGUgLipcclxuJGdkYl9wcm9tcHQgJCIgewotKwlwYXNzICR0ZXN0Ci0rICAg IH0KLSt9Ci0rCi0raWYgeyAhW3J1bnRvIGxpYl0gfSB0aGVuIHsKLSsgICAgcmV0dXJuIC0xCi0r fQotKwotK3NldCBlc2NhcGVkZmlsZW5hbWUgW3N0cmluZ190b19yZWdleHAgJHtnY29yZWZpbGV9 XQotKwotK3NldCB0ZXN0ICJzYXZlIGEgY29yZWZpbGUiCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgImdj b3JlICR7Z2NvcmVmaWxlfSIgJHRlc3QgewotKyAgICAtcmUgIlNhdmVkIGNvcmVmaWxlICR7ZXNj YXBlZGZpbGVuYW1lfVxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCXBhc3MgJHRlc3QKLSsgICAgfQot KyAgICAtcmUgIkNhbid0IGNyZWF0ZSBhIGNvcmVmaWxlXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJ dW5zdXBwb3J0ZWQgJHRlc3QKLSsJcmV0dXJuIC0xCi0rICAgIH0KLSt9Ci0rCi0rIyBOb3cgcmVz dGFydCBnZGIgYW5kIGxvYWQgdGhlIGNvcmVmaWxlLgotKwotK2NsZWFuX3Jlc3RhcnQgJGV4ZWN1 dGFibGUKLStnZGJfbG9hZF9zaGxpYiAkbGliZmlsZQotKwotK3NldCBidWlsZGlkIFtidWlsZF9p ZF9kZWJ1Z19maWxlbmFtZV9nZXQgJGxpYmZpbGVdCi0rCi0rcmVnc3ViIHtcLmRlYnVnJH0gJGJ1 aWxkaWQge30gYnVpbGRpZAotKwotK3NldCBkZWJ1Z2RpciBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUg JHt0ZXN0ZmlsZX0tZGVidWdkaXJdCi0rZmlsZSBkZWxldGUgLWZvcmNlIC0tICRkZWJ1Z2Rpcgot KwotK2ZpbGUgbWtkaXIgJGRlYnVnZGlyL1tmaWxlIGRpcm5hbWUgJGxpYmZpbGVdCi0rZmlsZSBj b3B5ICRsaWJmaWxlICRkZWJ1Z2Rpci8ke2xpYmZpbGV9Ci0rCi0rZmlsZSBta2RpciAkZGVidWdk aXIvW2ZpbGUgZGlybmFtZSAkYnVpbGRpZF0KLStmaWxlIGNvcHkgJGxpYmZpbGUgJGRlYnVnZGly LyR7YnVpbGRpZH0KLSsKLStyZW1vdGVfZXhlYyBidWlsZCAibG4gLXMgL2xpYiAgICAgICAke2Rl YnVnZGlyfS8iCi0rcmVtb3RlX2V4ZWMgYnVpbGQgImxuIC1zIC9saWI2NCAgICAgJHtkZWJ1Z2Rp cn0vIgotKyMgL3VzciBpcyBub3QgbmVlZGVkLCBhbGwgdGhlIGxpYnMgYXJlIGluIC9saWI2NDog bGlibS5zby42IGxpYmMuc28uNiBsZC1saW51eC14ODYtNjQuc28uMgotKwotK2dkYl90ZXN0X25v X291dHB1dCAic2V0IHNvbGliLWFic29sdXRlLXByZWZpeCAkZGVidWdkaXIiIFwKLSsgICAgInNl dCBzb2xpYi1hYnNvbHV0ZS1wcmVmaXgiCi0rCi0rZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgZGVi dWctZmlsZS1kaXJlY3RvcnkgJGRlYnVnZGlyIiAic2V0IGRlYnVnLWZpbGUtZGlyZWN0b3J5Igot KwotK2dkYl90ZXN0ICJjb3JlICR7Z2NvcmVmaWxlfSIgIkNvcmUgd2FzIGdlbmVyYXRlZCBieSAu KiIgInJlLWxvYWQgZ2VuZXJhdGVkIGNvcmVmaWxlIgotKwotK2dkYl90ZXN0ICJmcmFtZSIgIiMw IFxbXlxyXG5cXSogbGliIC4qIiAibGlicmFyeSBnb3QgbG9hZGVkIgotKwotK2dkYl90ZXN0ICJi dCIKLStnZGJfdGVzdCAiaW5mbyBzaGFyZWQiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9nZGJpbml0LWhpc3RvcnkuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nZGJp bml0LWhpc3RvcnkuZXhwCi0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQtaGlz dG9yeS5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2RiaW5pdC1oaXN0b3J5LmV4 cAotQEAgLTE3OSw3ICsxNzksOCBAQCBwcm9jIHRlc3RfZW1wdHlfaGlzdG9yeV9maWxlbmFtZSB7 IH0gewotICAgICBnbG9iYWwgZW52Ci0gICAgIGdsb2JhbCBnZGJfcHJvbXB0Ci0gCi0tICAgIHNl dCBjb21tb25faGlzdG9yeSBbbGlzdCAic2V0IGhlaWdodCAwIiAic2V0IHdpZHRoIDAiXQotKyAg ICBzZXQgY29tbW9uX2hpc3RvcnkgW2xpc3QgInNldCBoZWlnaHQgMCIgInNldCB3aWR0aCAwIiBc Ci0rCQkJICAgICJzZXQgcnBtLXN1Z2dlc3Rpb24gZW5hYmxlZCBvZmYiXQotIAotICAgICBzZXQg dGVzdF9kaXIgW3N0YW5kYXJkX291dHB1dF9maWxlIGhpc3RvcnlfdGVzdF0KLSAgICAgcmVtb3Rl X2V4ZWMgaG9zdCAibWtkaXIgLXAgJHRlc3RfZGlyIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2Uvcmhiejk4MTE1NC1taXNsZWFkaW5nLXl1bS1pbnN0YWxsLXdhcm5pbmcuZXhw IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9yaGJ6OTgxMTU0LW1pc2xlYWRpbmcteXVtLWluc3Rh bGwtd2FybmluZy5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysg Yi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3JoYno5ODExNTQtbWlzbGVhZGluZy15dW0taW5zdGFs bC13YXJuaW5nLmV4cAotQEAgLTAsMCArMSw2MCBAQAotKyMgQ29weXJpZ2h0IChDKSAyMDE0ICBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCi0rCi0rIyBDcmVhdGUgYSBjb3JlIGZpbGUsIHRoZW4gaGlkZSB0aGUgZXhlY3V0YWJs ZS4gIFJlc3RhcnQgR0RCIGFuZCBsb2FkCi0rIyB0aGUgY29yZSBmaWxlLiAgQ2hlY2sgR0RCIGdp dmVzIGEgbWVzc2FnZSBzdWdnZXN0aW5nIGEgJ2RuZicgY29tbWFuZAotKyMgdG8gdHJ5IGFuZCBp bnN0YWxsIHRoZSBleGVjdXRhYmxlIGJhc2VkIG9uIGl0cyBidWlsZC1pZC4KLSsKLStzdGFuZGFy ZF90ZXN0ZmlsZSAibm9ybWFsLmMiCi0rCi0raWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rl c3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfV0gfSB7Ci0rICAgIHJldHVybiAtMQot K30KLSsKLSsjIEdldCB0aGUgYnVpbGQtaWQgb2YgdGhlIGZpbGUuCi0rc2V0IGJ1aWxkX2lkX2Rl YnVnX2ZpbGUgW2J1aWxkX2lkX2RlYnVnX2ZpbGVuYW1lX2dldCAkYmluZmlsZV0KLStyZWdzdWIg LWFsbCAiLmRlYnVnJCIgJGJ1aWxkX2lkX2RlYnVnX2ZpbGUgIiIgYnVpbGRfaWRfd2l0aG91dF9k ZWJ1ZwotKwotKyMgUnVuIHRvIG1haW4uCi0raWYgeyAhW3J1bnRvX21haW5dIH0gewotKyAgICBy ZXR1cm4gLTEKLSt9Ci0rCi0rIyBXZSBmaXJzdCBuZWVkIHRvIGdlbmVyYXRlIGEgY29yZWZpbGUu Ci0rc2V0IGNvcmVmaWxlbmFtZSAiW3N0YW5kYXJkX291dHB1dF9maWxlIGdjb3JlLnRlc3RdIgot K2lmIHsgIVtnZGJfZ2NvcmVfY21kICIkY29yZWZpbGVuYW1lIiAic2F2ZSBjb3JlZmlsZSJdIH0g ewotKyAgICB1bnRlc3RlZCAiY291bGQgbm90IGdlbmVyYXRlIGEgY29yZWZpbGUiCi0rICAgIHJl dHVybiAtMQotK30KLSsKLSsjIE1vdmUgdGhlIGJpbmZpbGUgdG8gYSB0ZW1wb3JhcnkgbmFtZS4K LStyZW1vdGVfZXhlYyBidWlsZCAibXYgJGJpbmZpbGUgJHtiaW5maWxlfS5vbGQiCi0rCi0rIyBS ZWluaXRpYWxpemUgR0RCIGFuZCBzZWUgaWYgd2UgZ2V0IGEgZG5mIHN1Z2dlc3Rpb24uCi0rY2xl YW5fcmVzdGFydAotKwotK2dkYl90ZXN0ICJzZXQgcnBtLXN1Z2dlc3Rpb24gZW5hYmxlZCBvbiIg IiIgXAotKyAgICAidHVybiBvbiBycG0tc3VnZ2VzdGlvbiBmZWF0dXJlIgotKwotKyMgR0RCIG9u bHkgbWFrZXMgYnVpbGQtaWQgYmFzZWQgUlBNIHN1Z2dlc3Rpb25zIGlmIC91c3IvbGliIGlzIGlu Ci0rIyB0aGUgZGVidWctZmlsZS1kaXJlY3RvcnkgbGlzdCwgdGhlIHJlYXNvbiBiZWluZyB0aGF0 IHN5c3RlbSBSUE1zCi0rIyB3aWxsIGFsd2F5cyBpbnN0YWxsIHVuZGVyIHRoaXMgbG9jYXRpb24u ICBJZiBHREIgaXMgbm90IGxvb2tpbmcKLSsjIGhlcmUgdGhlbiB0aGVyZSdzIG5vIHBvaW50IG1h a2luZyBzdWdnZXN0aW9ucy4KLStnZGJfdGVzdCAic2V0IGRlYnVnLWZpbGUtZGlyZWN0b3J5IC91 c3IvbGliLyIgIiIgXAotKyAgICAic2V0IGRlYnVnLWZpbGUtZGlyZWN0b3J5IgotKwotK2dkYl90 ZXN0ICJjb3JlLWZpbGUgW3N0YW5kYXJkX291dHB1dF9maWxlIGdjb3JlLnRlc3RdIiBcCi0rICAg ICJNaXNzaW5nIGZpbGVcXChzXFwpLCB0cnk6IGRuZiAtLWVuYWJsZXJlcG89J1xcKmRlYnVnXFwq JyBpbnN0YWxsIFtzdHJpbmdfdG9fcmVnZXhwIC91c3IvbGliLyRidWlsZF9pZF93aXRob3V0X2Rl YnVnXSBbc3RyaW5nX3RvX3JlZ2V4cCAvdXNyL2xpYi9kZWJ1Zy8kYnVpbGRfaWRfZGVidWdfZmls ZV0iIFwKLSsgICAgInRlc3QgZmlyc3QgeXVtL2RuZiB3YXJuaW5nIgotZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1taXNzaW5nLWRlYnVnLnB5IGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIucHl0aG9uL3B5LW1pc3NpbmctZGVidWcucHkKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2Ri LnB5dGhvbi9weS1taXNzaW5nLWRlYnVnLnB5Ci0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRo b24vcHktbWlzc2luZy1kZWJ1Zy5weQotQEAgLTE5LDYgKzE5LDEzIEBAIGZyb20gZW51bSBpbXBv cnQgRW51bQotIGltcG9ydCBnZGIKLSBmcm9tIGdkYi5taXNzaW5nX2RlYnVnIGltcG9ydCBNaXNz aW5nRGVidWdIYW5kbGVyCi0gCi0rIyBUaGlzIGlzIGEgUkhFTC9GZWRvcmEgd29yayBhcm91bmQ6 IFRoZXJlJ3MgYWxyZWFkeSBhCi0rIyBtaXNzaW5nLWRlYnVnLWluZm8gaGFuZGxlciByZWdpc3Rl cmVkIGZvciB0aGVzZSB2ZXJzaW9ucyBvZiBHREIuCi0rIyBEaXNjYXJkIHRoZSBoYW5kbGVyIG5v dyBzbyB0aGF0IHRoZSB0ZXN0cyB3aWxsIHBhc3MgKHRoZSB0ZXN0cwotKyMgYXNzdW1lIG5vIGhh bmRsZXIgaXMgY3VycmVudGx5IHJlZ2lzdGVyZWQpLgotK2dkYi5taXNzaW5nX2RlYnVnX2hhbmRs ZXJzID0gW10KLSsKLSsKLSAjIEEgZ2xvYmFsIGxvZyB0aGF0IGlzIGZpbGxlZCBpbiBieSBpbnN0 YW5jZXMgb2YgdGhlIExPR19IQU5ETEVSIGNsYXNzCi0gIyB3aGVuIHRoZXkgYXJlIGNhbGxlZC4K LSBoYW5kbGVyX2NhbGxfbG9nID0gW10KLUBAIC0xMTgsNCArMTI1LDcgQEAgZGVmIHJlZ2lzdGVy KG5hbWUsIGxvY3VzPU5vbmUpOgotIHJoYW5kbGVyID0gZXhjZXB0aW9uX2hhbmRsZXIoKQotIGhh bmRsZXJfb2JqID0gaGFuZGxlcigpCi0gCi0rIyBEaXNjYXJkIHRoZSBycG0tc3VnZ2VzdGlvbiBo YW5kbGVyLgotK2dkYi5taXNzaW5nX2ZpbGVfaGFuZGxlcnMgPSBbXQotKwotIHByaW50KCJTdWNj ZXNzIikKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktbWlzc2luZy1v YmpmaWxlLnB5IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW1pc3Npbmctb2JqZmlsZS5w eQotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW1pc3Npbmctb2JqZmlsZS5weQot KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW1pc3Npbmctb2JqZmlsZS5weQotQEAg LTE2NCw0ICsxNjQsNyBAQCBkZWYgcmVnaXN0ZXIobmFtZSwgbG9jdXM9Tm9uZSk6Ci0gcmhhbmRs ZXIgPSBleGNlcHRpb25faGFuZGxlcigpCi0gaGFuZGxlcl9vYmogPSBoYW5kbGVyKCkKLSAKLSsj IERpc2NhcmQgdGhlIHJwbS1zdWdnZXN0aW9uIGhhbmRsZXIuCi0rZ2RiLm1pc3NpbmdfZmlsZV9o YW5kbGVycyA9IFtdCi0rCi0gcHJpbnQoIlN1Y2Nlc3MiKQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvbGliL2dkYi5leHAgYi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCi0tLS0gYS9nZGIv dGVzdHN1aXRlL2xpYi9nZGIuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCi1A QCAtMjU1LDcgKzI1NSw4IEBAIGlmICFbaW5mbyBleGlzdHMgSU5URVJOQUxfR0RCRkxBR1NdIHsK LSAJCSAgICItbngiIFwKLSAJCSAgICItcSIgXAotIAkJICAgey1pZXggInNldCBoZWlnaHQgMCJ9 IFwKLS0JCSAgIHstaWV4ICJzZXQgd2lkdGggMCJ9XV0KLSsJCSAgIHstaWV4ICJzZXQgd2lkdGgg MCJ9IFwKLSsJCSAgIHstaWV4ICJzZXQgcnBtLXN1Z2dlc3Rpb24gZW5hYmxlZCBvZmYifV1dCi0g Ci0gICAgICMgSWYgREVCVUdJTkZPRF9VUkxTIGlzIHNldCwgZ2RiIHdpbGwgdHJ5IHRvIGRvd25s b2FkIHNvdXJjZXMgYW5kCi0gICAgICMgZGVidWcgaW5mbyBmb3IgZi5pLiBzeXN0ZW0gbGlicmFy aWVzLiAgUHJldmVudCB0aGlzLgotQEAgLTI2MTAsNiArMjYxMSwxOCBAQCBwcm9jIGRlZmF1bHRf Z2RiX3N0YXJ0IHsgfSB7Ci0gCX0KLSAgICAgfQotIAotKyAgICAjIFR1cm4gb2ZmIHRoZSBtaXNz aW5nIGRlYnVnIGluZm8gbWVzc2FnZXMgYXMgdGhlIHRlc3RzdWl0ZSBkb2VzCi0rICAgICMgbm90 IGV4cGVjdCB0aGVtLgotKyAgICBzZW5kX2dkYiAic2V0IHJwbS1zdWdnZXN0aW9uIGVuYWJsZWQg b2ZmXG4iCi0rICAgIGdkYl9leHBlY3QgMTAgewotKwktcmUgIiRnZGJfcHJvbXB0ICQiIHsKLSsJ ICAgIHZlcmJvc2UgIkRpc2FibGVkIHRoZSBtaXNzaW5nIGRlYnVnIGluZm8gbWVzc2FnZXMuIiAy Ci0rCX0KLSsJdGltZW91dCB7Ci0rCSAgICB3YXJuaW5nICJDb3VsZCBub3QgZGlzYWJsZSB0aGUg bWlzc2luZyBkZWJ1ZyBpbmZvIG1lc3NhZ2VzLiIKLSsJfQotKyAgICB9Ci0rCi0gICAgIGdkYl9k ZWJ1Z19pbml0Ci0gICAgIHJldHVybiAwCi0gfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv bGliL21pLXN1cHBvcnQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAKLS0t LSBhL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRl L2xpYi9taS1zdXBwb3J0LmV4cAotQEAgLTMyMSw2ICszMjEsMTcgQEAgcHJvYyBkZWZhdWx0X21p X2dkYl9zdGFydCB7IHsgZmxhZ3Mge30gfSB9IHsKLSAJICAgIHdhcm5pbmcgIkNvdWxkbid0IHNl dCB0aGUgd2lkdGggdG8gMC4iCi0gCX0KLSAgICAgfQotKyAgICAjIFR1cm4gb2ZmIHRoZSBtaXNz aW5nIGRlYnVnIGluZm8gbWVzc2FnZXMgYXMgdGhlIHRlc3RzdWl0ZSBkb2VzCi0rICAgICMgbm90 IGV4cGVjdCB0aGVtLgotKyAgICBzZW5kX2dkYiAiMTkwLWdkYi1zZXQgcnBtLXN1Z2dlc3Rpb24g ZW5hYmxlZCBvZmZcbiIKLSsgICAgZ2RiX2V4cGVjdCAxMCB7Ci0rCS1yZSAiLioxOTAtZ2RiLXNl dCBycG0tc3VnZ2VzdGlvbiBlbmFibGVkIG9mZlxyXG4xOTBcXFxeZG9uZVxyXG4kbWlfZ2RiX3By b21wdCQiIHsKLSsJICAgIHZlcmJvc2UgIkRpc2FibGVkIHRoZSBtaXNzaW5nIGRlYnVnIGluZm8g bWVzc2FnZXMuIiAyCi0rCX0KLSsJdGltZW91dCB7Ci0rCSAgICB3YXJuaW5nICJDb3VsZCBub3Qg ZGlzYWJsZSB0aGUgbWlzc2luZyBkZWJ1ZyBpbmZvIG1lc3NhZ2VzLiIKLSsJfQotKyAgICB9Ci0g Ci0gICAgIGlmIHsgJHNlcGFyYXRlX2luZmVyaW9yX3B0eSB9IHsKLSAJbWlfY3JlYXRlX2luZmVy aW9yX3B0eQoKZGlmZiAtLWdpdCBhL2dkYi1ycG0tc3VnZ2VzdGlvbi1zY3JpcHQucGF0Y2ggYi9n ZGItcnBtLXN1Z2dlc3Rpb24tc2NyaXB0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLmM3ZWNmOTEKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItcnBtLXN1Z2dlc3Rpb24t c2NyaXB0LnBhdGNoCkBAIC0wLDAgKzEsMTAxMSBAQAorRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJldyBCdXJnZXNzIDxhYnVyZ2Vzc0ByZWRo YXQuY29tPgorRGF0ZTogVGh1LCA3IE1hciAyMDI0IDE1OjE0OjIzICswMDAwCitTdWJqZWN0OiBn ZGItcnBtLXN1Z2dlc3Rpb24tc2NyaXB0LnBhdGNoCisKKzs7IE5vdCBhIGJhY2twb3J0LiAgQWRk IGEgbmV3IHNjcmlwdCB3aGljaCBob29rcyBpbnRvIEdEQiBhbmQgc3VnZ2VzdHMKKzs7IFJQTXMg dG8gaW5zdGFsbCB3aGVuIEdEQiBmaW5kcyBhbiBvYmpmaWxlIHdpdGggbm8gZGVidWcgaW5mby4K KworZ2RiOiBhZGQgc2NyaXB0IHdoaWNoIHdpbGwgc3VnZ2VzdCBkZWJ1Z2luZm8gUlBNcyB0byBp bnN0YWxsCisKK1RoaXMgc2NyaXB0IGhvb2tzIGludG8gR0RCJ3MgbWlzc2luZyBkZWJ1ZyBpbmZv IFB5dGhvbiBBUEkgYW5kCitzdWdnZXN0cyBkZWJ1Z2luZm8gUlBNcyB0byBpbnN0YWxsLgorCitk aWZmIC0tZ2l0IGEvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluIGIvZ2RiL2RhdGEtZGly ZWN0b3J5L01ha2VmaWxlLmluCistLS0gYS9nZGIvZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUuaW4K KysrKyBiL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbgorQEAgLTkyLDYgKzkyLDcgQEAg UFlUSE9OX0ZJTEVfTElTVCA9IFwKKyAJZ2RiL2NvbW1hbmQvbWlzc2luZ19maWxlcy5weSBcCisg CWdkYi9jb21tYW5kL3ByZXR0eV9wcmludGVycy5weSBcCisgCWdkYi9jb21tYW5kL3Byb21wdC5w eSBcCisrCWdkYi9jb21tYW5kL3JwbS1zdWdnZXN0aW9ucy5weSBcCisgCWdkYi9jb21tYW5kL3R5 cGVfcHJpbnRlcnMucHkgXAorIAlnZGIvY29tbWFuZC91bndpbmRlcnMucHkgXAorIAlnZGIvY29t bWFuZC94bWV0aG9kcy5weSBcCitkaWZmIC0tZ2l0IGEvZ2RiL2RvYy9nZGIudGV4aW5mbyBiL2dk Yi9kb2MvZ2RiLnRleGluZm8KKy0tLSBhL2dkYi9kb2MvZ2RiLnRleGluZm8KKysrKyBiL2dkYi9k b2MvZ2RiLnRleGluZm8KK0BAIC0xODYsNiArMTg2LDcgQEAgc29mdHdhcmUgaW4gZ2VuZXJhbC4g IFdlIHdpbGwgbWlzcyBoaW0uCisgKiBUcmFjZSBGaWxlIEZvcm1hdDo6CQlAdmFsdWV7R0RCTn0g dHJhY2UgZmlsZSBmb3JtYXQKKyAqIEluZGV4IFNlY3Rpb24gRm9ybWF0OjogICAgICAgIC5nZGJf aW5kZXggc2VjdGlvbiBmb3JtYXQKKyAqIERlYnVnaW5mb2Q6OiAgICAgICAgICAgICAgICAgIERv d25sb2FkIGRlYnVnZ2luZyByZXNvdXJjZXMgd2l0aCBAY29kZXtkZWJ1Z2luZm9kfQorKyogUlBN IFN1Z2dlc3Rpb25zOjoJCVJQTSBTdWdnZXN0aW9ucyBmcm9tIEdEQgorICogTWFuIFBhZ2VzOjog ICAgICAgICAgICAgICAgICAgTWFudWFsIHBhZ2VzCisgKiBDb3B5aW5nOjogICAgICAgICAgICAg ICAgICAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBzYXlzCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBob3cgeW91IGNhbiBjb3B5IGFuZCBzaGFyZSBAdmFsdWV7R0RCTn0K K0BAIC01MDU4OCw2ICs1MDU4OSwxMTEgQEAgU2hvdyB0aGUgY3VycmVudCB2ZXJib3NpdHkgc2V0 dGluZy4KKyAKKyBAZW5kIHRhYmxlCisgCisrQG5vZGUgUlBNIFN1Z2dlc3Rpb25zCisrQGFwcGVu ZGl4IFJlY2VpdmluZyBSUE0gaW5zdGFsbGF0aW9uIHN1Z2dlc3Rpb25zCisrQGNpbmRleCBycG0g c3VnZ2VzdGlvbnMKKysKKytXaGVuIEB2YWx1ZXtHREJOfSBsb2FkcyBhbiBleGVjdXRhYmxlLCBv ciBzaGFyZWQgbGlicmFyeSwgYW5kIGNhbm5vdAorK2ZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgZGVi dWcgaW5mb3JtYXRpb24sIEB2YWx1ZXtHREJOfSB3aWxsIGNoZWNrIHRvCisrc2VlIGlmIGFuIFJQ TSBpcyBhdmFpbGFibGUgd2hpY2ggY291bGQgcHJvdmlkZSB0aGUgbWlzc2luZyBkZWJ1ZworK2lu Zm9ybWF0aW9uLiAgSWYgYSBzdWl0YWJsZSBSUE0gaXMgZm91bmQgdGhlbiBAdmFsdWV7R0RCTn0g d2lsbCBwcmludAorK2EgaGludCBiZWZvcmUgdGhlIG5leHQgcHJvbXB0IGlzIGRpc3BsYXllZDoK KysKKytAc21hbGxleGFtcGxlCisrKEB2YWx1ZXtHREJQfSkgZmlsZSAvYmluL2xzCisrUmVhZGlu ZyBzeW1ib2xzIGZyb20gL2Jpbi9scy4uLgorK1JlYWRpbmcgc3ltYm9scyBmcm9tIC5nbnVfZGVi dWdkYXRhIGZvciAvdXNyL2Jpbi9scy4uLgorKyhObyBkZWJ1Z2dpbmcgc3ltYm9scyBmb3VuZCBp biAuZ251X2RlYnVnZGF0YSBmb3IgL3Vzci9iaW4vbHMpCisrTWlzc2luZyBycG1zLCB0cnk6IGRu ZiAtLWVuYWJsZXJlcG89JypkZWJ1ZyonIGluc3RhbGwgY29yZXV0aWxzLWRlYnVnaW5mby05LjMt Ny5mYzM5Lng4Nl82NAorKyhAdmFsdWV7R0RCUH0pCisrQGVuZCBzbWFsbGV4YW1wbGUKKysKKytJ biB0aGlzIGNhc2UsIGluc3RhbGxpbmcgQGZpbGV7Y29yZXV0aWxzLWRlYnVnaW5mby05LjMtNy5m YzM5Lng4Nl82NH0KKyt3aWxsIHByb3ZpZGUgdGhlIG1pc3NpbmcgZGVidWcgaW5mb3JtYXRpb24g Zm9yIEBmaWxley9iaW4vbHN9LiAgSXQgaXMKKyt1cCB0byB5b3UgdG8gaW5zdGFsbCB0aGUgc3Vn Z2VzdGVkIHBhY2thZ2UsIGlmIHBvc3NpYmxlLCBhbmQgYWZ0ZXIKKyt0aGF0IHJlbG9hZCB0aGUg ZXhlY3V0YWJsZSBpbiBAdmFsdWV7R0RCTn0gc28gdGhhdCB0aGUgbmV3bHkgaW5zdGFsbGVkCisr ZGVidWcgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kLgorKworK1RoZSBSUE0gc3VnZ2VzdGlvbiBm ZWF0dXJlIGNhbiBiZSBkaXNhYmxlZDoKKysKKytAdGFibGUgQGNvZGUKKytAa2luZGV4IHNldCBy cG0tc3VnZ2VzdGlvbiBlbmFibGVkCisrQGtpbmRleCBzaG93IHJwbS1zdWdnZXN0aW9uIGVuYWJs ZWQKKytAY2luZGV4IHJwbSBzdWdnZXN0aW9ucywgZGlzYWJsaW5nCisrQGl0ZW0gc2V0IHJwbS1z dWdnZXN0aW9uIGVuYWJsZWQgQHJ7W31vbkBye3x9b2ZmQHJ7XX0KKytAaXRlbXggc2hvdyBycG0t c3VnZ2VzdGlvbiBlbmFibGVkCisrV2hlbiBAc2FtcHtvbn0gQHZhbHVle0dEQk59IHdpbGwgbWFr ZSBSUE0gc3VnZ2VzdGlvbnMgd2hlcmUgcG9zc2libGUuCisrV2hlbiBAc2FtcHtvZmZ9IGFsbCBS UE0gc3VnZ2VzdGlvbiB3aWxsIGJlIGRpc2FibGVkLgorK0BlbmQgdGFibGUKKysKKytXaGVuIG9w ZW5pbmcgYSBjb3JlIGZpbGUgKEBweHJlZntjb3JlLWZpbGUgY29tbWFuZH0pLCBpdCBtYXkgYmUg dGhlCisrY2FzZSB0aGF0IG5vdCBvbmx5IGlzIHRoZSBkZWJ1ZyBpbmZvcm1hdGlvbiBtaXNzaW5n LCBidXQgdGhlCisrY29ycmVzcG9uZGluZyBleGVjdXRhYmxlIGl0c2VsZiBpcyBtaXNzaW5nLiAg Rm9yIGV4YW1wbGUsIGlmIGEgY29yZQorK2ZpbGUgaXMgY29waWVkIGZyb20gb25lIG1hY2hpbmUg dG8gYW5vdGhlciBpbiBvcmRlciB0byBkZWJ1Zy4KKysKKytJbiB0aGlzIGNhc2UgQHZhbHVle0dE Qk59IGlzIGFibGUgdG8gc3VnZ2VzdCBhIGNvbW1hbmQgd2hpY2ggd2lsbAorK2luc3RhbGwgdGhl IG1pc3NpbmcgZXhlY3V0YWJsZSBiYXNlZCBvbiB0aGUgYnVpbGQtaWQgb2YgdGhlCisrZXhlY3V0 YWJsZS4gIEZvciBleGFtcGxlOgorKworK0BzbWFsbGV4YW1wbGUKKysoQHZhbHVle0dEQlB9KSBj b3JlLWZpbGUgL3RtcC9jb3JlLjU0ODkKKyt3YXJuaW5nOiBDYW4ndCBvcGVuIGZpbGUgL3Vzci9i aW4vc2wgZHVyaW5nIGZpbGUtYmFja2VkIG1hcHBpbmcgbm90ZSBwcm9jZXNzaW5nCisrW05ldyBM V1AgNTQ4OV0KKytDb3JlIHdhcyBnZW5lcmF0ZWQgYnkgYHNsJy4KKytQcm9ncmFtIHRlcm1pbmF0 ZWQgd2l0aCBzaWduYWwgU0lHUVVJVCwgUXVpdC4KKysjMCAgMHgwMDAwN2YxYjQxY2VkMWE3IGlu ID8/ICgpCisrTWlzc2luZyBmaWxlKHMpLCB0cnk6IGRuZiAtLWVuYWJsZXJlcG89JypkZWJ1Zyon IGluc3RhbGwgL3Vzci9saWIvLmJ1aWxkLWlkLzMzLzJmMWE4ZTU2NjkzOTYwZTNiZWIyZDcwY2Q3 OWRkZmVjNDUxY2MzIC91c3IvbGliL2RlYnVnLy5idWlsZC1pZC8zMy8yZjFhOGU1NjY5Mzk2MGUz YmViMmQ3MGNkNzlkZGZlYzQ1MWNjMy5kZWJ1ZworKyhAdmFsdWV7R0RCUH0pCisrQGVuZCBzbWFs bGV4YW1wbGUKKysKKytUaGUgY29yZSBmaWxlIHdhcyBnZW5lcmF0ZWQgZnJvbSB0aGUgQGZpbGV7 L3Vzci9iaW4vc2x9IGJpbmFyeSwgd2hpY2gKKytpcyBub3QgcHJlc2VudCBvbiB0aGUgbWFjaGlu ZSBvcGVuaW5nIHRoZSBjb3JlIGZpbGUuICBAdmFsdWV7R0RCTn0gaGFzCisrc3VnZ2VzdGVkIGEg Y29tbWFuZCwgYmFzZWQgb24gdGhlIGJ1aWxkLWlkIG9mIHRoZSBiaW5hcnksIHdoaWNoIHdhcwor K2V4dHJhY3RlZCBmcm9tIHRoZSBjb3JlIGZpbGUsIHRoYXQgd291bGQgaW5zdGFsbCBib3RoIHRo ZSBtaXNzaW5nCisrYmluYXJ5LCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgZGVidWcgaW5mb3JtYXRp b24uCisrCisrVW5mb3J0dW5hdGVseSwgQHZhbHVle0dEQk59IGRvZXNuJ3Qga25vdyBpZiB0aGUg c3VnZ2VzdGVkIGNvbW1hbmQgd2lsbAorK2FjdHVhbGx5IGZpbmQgYSBtYXRjaGluZyBSUE0gb3Ig bm90LiAgUXVlcnlpbmcgdGhlIFJQTSBkYXRhYmFzZSB0byBzZWUKKyt3aGljaCBwYWNrYWdlcywg aWYgYW55LCB3aWxsIHByb3ZpZGUgYSBmaWxlIHdpdGggdGhlIGdpdmVuIGJ1aWxkLWlkLAorK2lz IHJhdGhlciBzbG93LiAgQXMgQGZpbGV7L3Vzci9iaW4vc2x9IGlzIGF2YWlsYWJsZSBpbiBhbiBS UE0sIHRoZW4KKyt0aGUgYWJvdmUgY29tbWFuZCB3aWxsIHN1Y2NlZWQuCisrCisrSXQgaXMgcG9z c2libGUgdG8gaGF2ZSBAdmFsdWV7R0RCTn0gY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGlzIGEgcGFj a2FnZQorK2F2YWlsYWJsZSBiZWZvcmUgbWFraW5nIHRoZSBzdWdnZXN0aW9uLCBidXQgdGhpcyBp cyBzaWduaWZpY2FudGx5Cisrc2xvd2VyLiAgVG8gZW5hYmxlIHRoaXMgbW9kZSB1c2UgdGhlIGZv bGxvd2luZyBjb21tYW5kOgorKworK0B0YWJsZSBAY29kZQorK0BraW5kZXggc2V0IHJwbS1zdWdn ZXN0aW9uIGJ1aWxkLWlkLW1vZGUKKytAa2luZGV4IHNob3cgcnBtLXN1Z2dlc3Rpb24gYnVpbGQt aWQtbW9kZQorK0BjaW5kZXggcnBtIHN1Z2dlc3Rpb25zLCBidWlsZC1pZC1tb2RlCisrQGl0ZW0g c2V0IHJwbS1zdWdnZXN0aW9uIGJ1aWxkLWlkLW1vZGUgQHJ7W31mYXN0QHJ7fH1zbG93QHJ7XX0K KytAaXRlbXggc2hvdyBycG0tc3VnZ2VzdGlvbiBidWlsZC1pZC1tb2RlCisrV2hlbiBzZXQgdG8g QHNhbXB7ZmFzdH0sIHdoaWNoIGlzIHRoZSBkZWZhdWx0LCBAdmFsdWV7R0RCTn0gd2lsbCBvZmZl cgorK3N1Z2dlc3Rpb25zIGJhc2VkIG9uIHRoZSBidWlsZC1pZCBvZiBhbnkgbWlzc2luZyBleGVj dXRhYmxlcyBvciBzaGFyZWQKKytsaWJyYXJpZXMgd2hpbGUgb3BlbmluZyBhIGNvcmUgZmlsZS4g IFRoaXMgaXMgZmFzdCwgYnV0IEB2YWx1ZXtHREJOfQorK2hhcyBub3QgY2hlY2tlZCBpZiB0aGVy ZSBpcyBhIHBhY2thZ2UgYXZhaWxhYmxlIHRoYXQgY2FuIHN1cHBseSB0aGUKKytyZXF1aXJlZCBm aWxlLCBzbyBydW5uaW5nIHRoZSBzdWdnZXN0ZWQgY29tbWFuZCBtaWdodCBub3QgaW5zdGFsbCBh bnkKKytwYWNrYWdlcy4KKysKKytXaGVuIHNldCB0byBAc2FtcHtzbG93fSwgZWFjaCB0aW1lIEB2 YWx1ZXtHREJOfSBlbmNvdW50ZXJzIGFuCisrZXhlY3V0YWJsZSwgb3Igc2hhcmVkIGxpYnJhcnks IHRoYXQgaXMgbWlzc2luZywgQHZhbHVle0dEQk59IHdpbGwKKytjaGVjayB0byBzZWUgaWYgdGhl cmUgaXMgYW4gUlBNIGF2YWlsYWJsZSB0aGF0IHdpbGwgc3VwcGx5IHRoZSBtaXNzaW5nCisrYmlu YXJ5LiAgSWYgYSBzdWl0YWJsZSBSUE0gaXMgZm91bmQgdGhlbiBAdmFsdWV7R0RCTn0gd2lsbCBv ZmZlciBhCisrY29tbWFuZCB3aGljaCB3aWxsIGluc3RhbGwgdGhlIG1pc3NpbmcgUlBNLiAgSWYg bm8gc3VpdGFibGUgUlBNIGlzCisrZm91bmQgdGhlbiBAdmFsdWV7R0RCTn0gd2lsbCBtYWtlIG5v IHN1Z2dlc3Rpb25zLgorK0BlbmQgdGFibGUKKysKKytJdCBpcyBwb3NzaWJsZSB0byByZXZpZXcg YWxsIG9mIHRoZSBwcmV2aW91cyBSUE0gc3VnZ2VzdGlvbnMgdGhhdAorK0B2YWx1ZXtHREJOfSBo YXMgbWFkZSB1c2luZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CisrCisrQHRhYmxlIEBjb2RlCisr QGtpbmRleCBpbmZvIHJwbS1zdWdnZXN0aW9ucworK0BjaW5kZXggcnBtIHN1Z2dlc3Rpb25zLCBs aXN0aW5nCisrQGl0ZW0gaW5mbyBycG0tc3VnZ2VzdGlvbnMKKytMaXN0IGFsbCBvZiB0aGUgUlBN IHN1Z2dlc3Rpb25zIEB2YWx1ZXtHREJOfSBoYXMgbWFkZSBzaW5jZSB0aGUKKytleGVjdXRhYmxl IHdhcyBsYXN0IGNoYW5nZWQuCisrQGVuZCB0YWJsZQorKworIEBub2RlIE1hbiBQYWdlcworIEBh cHBlbmRpeCBNYW51YWwgcGFnZXMKKyBAY2luZGV4IE1hbiBwYWdlcworZGlmZiAtLWdpdCBhL2dk Yi9weXRob24vbGliL2dkYi9jb21tYW5kL3JwbS1zdWdnZXN0aW9ucy5weSBiL2dkYi9weXRob24v bGliL2dkYi9jb21tYW5kL3JwbS1zdWdnZXN0aW9ucy5weQorbmV3IGZpbGUgbW9kZSAxMDA2NDQK Ky0tLSAvZGV2L251bGwKKysrKyBiL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3JwbS1zdWdn ZXN0aW9ucy5weQorQEAgLTAsMCArMSw1MjcgQEAKKysjIENvcHlyaWdodCAyMDIzIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo ZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysj CisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4K KysKKytpbXBvcnQgZ2RiCisraW1wb3J0IGdkYi5taXNzaW5nX2RlYnVnCisraW1wb3J0IGdkYi5t aXNzaW5nX29iamZpbGUKKysKKysjIFRoZXNlIG1vZHVsZXMgYXJlIGFsbCBzeXN0ZW0gbW9kdWxl cywgYW5kIHNob3VsZCBiZSBhdmFpbGFibGUgb24gYW55CisrIyBjb3JyZWN0bHkgc2V0dXAgUHl0 aG9uIGluc3RhbGwuCisraW1wb3J0IHN5cworK2ltcG9ydCBvcworK2ltcG9ydCBzdWJwcm9jZXNz CisraW1wb3J0IHJlCisrZnJvbSB0aHJlYWRpbmcgaW1wb3J0IFRocmVhZAorK2ltcG9ydCB0aW1l CisrCisrdHJ5OgorKyAgICBpbXBvcnQgcnBtCisrZXhjZXB0IE1vZHVsZU5vdEZvdW5kRXJyb3I6 CisrICAgICMgVGhlICJSUE0gc3VnZ2VzdGlvbnMiIG1lY2hhbmlzbSB3aWxsIG5vdCB3b3JrIHdp dGhvdXQgdGhlIChweXRob24pCisrICAgICMgcnBtIG1vZHVsZS4gIEluZm9ybSB0aGUgdXNlciBv ZiB0aGlzLCBidXQgd2FpdCB0byBkbyBzbyB1bnRpbAorKyAgICAjIGp1c3QgcHJpb3IgdG8gcHJp bnRpbmcgdGhlIEdEQiBwcm9tcHQuICBJZiB3ZSBkbyBpdCByaWdodCBhd2F5LAorKyAgICAjIHRo ZSBtZXNzYWdlIHR5cGljYWxseSBhcHBlYXJzIGJlZm9yZSB0aGUgdmVyc2lvbiBhbmQgY29weXJp Z2h0CisrICAgICMgaW5mbywgd2hpY2ggaXMgZWFzaWx5IG1pc3NlZCBieSBtYW55IHVzZXJzLiAg QWRkaXRpb25hbGx5LCBpdAorKyAgICAjIHNlZW1zIHRoYXQgc2V2ZXJhbCBvdGhlciBwYWNrYWdl cyB3aGljaCBwYXJzZSBHREIgdmVyc2lvbiBpbmZvCisrICAgICMgYXJlIGNvbmZ1c2VkIGJ5IGFu IGVhcmx5IGVycm9yIG1lc3NhZ2UgcmVnYXJkaW5nIGEgbWlzc2luZworKyAgICAjIHB5dGhvbjMt cnBtIHBhY2thZ2UsIHNvIHdhaXRpbmcgdG8gcHJpbnQgdGhlIGVycm9yIGFsbG93cyB0aG9zZQor KyAgICAjIGFwcGxpY2F0aW9ucyB0byB3b3JrIGFzIHRoZXkgdXNlZCB0by4KKysgICAgZGVmIGJl Zm9yZV9wcm9tcHQoKToKKysgICAgICAgIHByaW50KAorKyAgICAgICAgICAgICgiXG5VbmFibGUg dG8gbG9hZCB0aGUgUHl0aG9uICdycG0nIG1vZHVsZS4gIExhY2sgb2YgdGhpcyBtb2R1bGUgZGlz YWJsZXNcbiIKKysgICAgICAgICAgICAgInRoZSBSUE0gc3VnZ2VzdGlvbnMgbWVjaGFuaXNtIHdo aWNoIHJlY29tbWVuZHMgc2hlbGwgY29tbWFuZHMgZm9yXG4iCisrICAgICAgICAgICAgICJpbnN0 YWxsaW5nIG1pc3NpbmcgZGVidWdpbmZvIHBhY2thZ2VzLiAgVG8gZW5hYmxlIHRoaXMgZnVuY3Rp b25hbGl0eSxcbiIKKysgICAgICAgICAgICAgInBsZWFzZSBpbnN0YWxsIHRoZSBweXRob24zLXJw bSBwYWNrYWdlLiIpLAorKyAgICAgICAgICAgIGZpbGU9c3lzLnN0ZGVycgorKyAgICAgICAgKQor KyAgICAgICAgZ2RiLmV2ZW50cy5iZWZvcmVfcHJvbXB0LmRpc2Nvbm5lY3QoYmVmb3JlX3Byb21w dCkKKysKKysgICAgZ2RiLmV2ZW50cy5iZWZvcmVfcHJvbXB0LmNvbm5lY3QoYmVmb3JlX3Byb21w dCkKKysKKysgICAgIyBJbXBsZW1lbnQgJ2luZm8gcnBtLXN1Z2dlc3Rpb25zJyB3aGVuIHRoZSAn cnBtJyBtb2R1bGUgaXMgbm90CisrICAgICMgYXZhaWxhYmxlLiAgSnVzdCB0aHJvd3MgYW4gZXJy b3IuCisrICAgIGRlZiBpbmZvX3JwbV9zdWdnZXN0aW9ucygpOgorKyAgICAgICAgcmFpc2UgZ2Ri LkdkYkVycm9yKCJycG0tc3VnZ2VzdGlvbnMgYXJlIGRpc2FibGVkIGFzIHRoZSBQeXRob24gJ3Jw bScgbW9kdWxlIGlzIG5vdCBpbnN0YWxsZWQiKQorK2Vsc2U6CisrICAgICMgVHJhY2sgYWxsIHRo ZSBSUE1zIHN1Z2dlc3RlZCBkdXJpbmcgYSBzaW5nbGUgZGVidWcgc2Vzc2lvbiBzbyB3ZQorKyAg ICAjIGRvbid0IHN1Z2dlc3QgdGhlIHNhbWUgUlBNIHR3aWNlLiAgVGhpcyBpcyBvbmx5IGNsZWFy ZWQgd2hlbiB0aGUKKysgICAgIyBtYWluIGV4ZWN1dGFibGUgaXMgY2hhbmdlZC4KKysgICAgX19t aXNzaW5nX3JwbXMgPSB7fQorKworKyAgICAjIFRyYWNrIGFueSBtaXNzaW5nIFJQTXMgdGhhdCBo YXZlIGJlZW4gZGlzY292ZXJlZCBzaW5jZSB0aGUgbGFzdCB0aW1lCisrICAgICMgdGhlIHByb21w dCB3YXMgZGlzcGxheWVkLiAgUlBNcyBpbiBoZXJlIGFyZSBhbHNvIHByZXNlbnQgaW4gdGhlCisr ICAgICMgX19NSVNTSU5HX1JQTVMgZGljdGlvbmFyeSwgYnV0IHRoaXMgZGljdGlvbmFyeSBpcyBj bGVhcmVkIGVhY2ggdGltZQorKyAgICAjIHRoZSBwcm9tcHQgaXMgc2hvd24uCisrICAgIF9fc3Vn Z2VzdF9ycG1zID0ge30KKysKKysgICAgIyBUcmFjayBhbGwgdGhlIGJ1aWxkLWlkcyBzdWdnZXN0 ZWQgZHVyaW5nIGEgc2luZ2xlIGRlYnVnIHNlc3Npb24gc28gd2UKKysgICAgIyBkb24ndCBzdWdn ZXN0IGluc3RhbGxpbmcgdXNpbmcgdGhlIHNhbWUgYnVpbGQtaWQgdHdpY2UuICBUaGlzIGlzIG9u bHkKKysgICAgIyBjbGVhcmVkIHdoZW4gdGhlIG1haW4gZXhlY3V0YWJsZSBpcyBjaGFuZ2VkLgor KyAgICBfX21pc3NpbmdfYnVpbGRfaWRzID0ge30KKysKKysgICAgIyBUcmFjayBhbnkgYnVpbGQt aWRzIHRoYXQgaGF2ZSBiZWVuIGRpc2NvdmVyZWQgbWlzc2luZyBzaW5jZSB0aGUgbGFzdAorKyAg ICAjIHRpbWUgdGhlIHByb21wdCB3YXMgZGlzcGxheWVkLiAgQnVpbGQtaWRzIGluIGhlcmUgYXJl IGFsc28gcHJlc2VudCBpbgorKyAgICAjIHRoZSBfX01JU1NJTkdfQlVJTERfSURTIGRpY3Rpb25h cnksIGJ1dCB0aGlzIGRpY3Rpb25hcnkgaXMgY2xlYXJlZAorKyAgICAjIGVhY2ggdGltZSB0aGUg cHJvbXB0IGlzIHNob3duLgorKyAgICBfX3N1Z2dlc3RfYnVpbGRfaWRzID0ge30KKysKKysgICAg IyBUaGUgYnVpbGQtaWQgdG8gUlBNIGxvb2t1cCBpcyB2ZXJ5IHNsb3cuICBUaGlzIGNhY2hlIG1h cHMKKysgICAgIyBidWlsZC1pZHMgdG8gdGhlIHNldCBvZiBSUE0gd2UgY2FuIHN1Z2dlc3QgaW5z dGFsbGluZy4gIFRoZSBrZXkKKysgICAgIyBpcyB0aGUgYnVpbGQtaWQgc3RyaW5nLCBhbmQgdGhl IHZhbHVlIGlzIGEgbGlzdCBvZiBSUE0gbmFtZXMsIG9yCisrICAgICMgTm9uZSBpZiB0aGVyZSB3 YXMgYW4gZXJyb3Igd2l0aCB0aGUgYnVpbGQtaWQgdG8gUlBNIGxvb2t1cC4KKysgICAgIworKyAg ICAjIFRoaXMgY2FjaGUgaXMgbmV2ZXIgY2xlYXJlZCwgZXZlbiB3aGVuIHRoZSBleGVjdXRhYmxl IGlzCisrICAgICMgY2hhbmdlZC4gIFRoZSBidWlsZC1pZHMgc2hvdWxkIGJlIHVuaXF1ZSwgc28g YSBidWlsZC1pZCBsb29rdXAKKysgICAgIyBzaG91bGQgYmUgZ29vZCBmb3IgdGhlIGxpZmV0aW1l IG9mIHRoZSBzZXNzaW9uLgorKyAgICBfX2J1aWxkX2lkX2xvb2t1cF9jYWNoZSA9IHt9CisrCisr ICAgICMgV2hlbiBzZWFyY2hpbmcgZm9yIGFuIFJQTSBnaXZlbiBhIGJ1aWxkLWlkLCBpZiB0aGUg c2VhcmNoIHRha2VzCisrICAgICMgdG9vIGxvbmcsIHRoZW4gYSBtZXNzYWdlIGlzIHByaW50ZWQg dG8gdGhlIHVzZXIuICBXZSBvbmx5IHByaW50CisrICAgICMgdGhlIG1lc3NhZ2Ugb25jZSBiZXR3 ZWVuIGVhY2ggR0RCIHByb21wdC4gIFRoaXMgZmxhZyBpcyBzZXQgVHJ1ZQorKyAgICAjIHdoZW4g dGhlIG1lc3NhZ2UgaXMgcHJpbnRlZCwgYW5kIHJlc2V0IHRvIEZhbHNlIHdoZW4gYSBwcm9tcHQg aXMKKysgICAgIyBkaXNwbGF5ZWQuCisrICAgIF9fc2VhcmNoaW5nX21lc3NhZ2VfcHJpbnRlZCA9 IEZhbHNlCisrCisrICAgICMgQWRkIGEgc3VnZ2VzdGlvbiB0byBpbnN0YWxsIFJQTV9OQU1FICh0 aGUgZnVsbCBuYW1lIG9mIGFuIFJQTSkKKysgICAgIyB0byB0aGUgbGlzdCBvZiBzdWdnZXN0aW9u cyB0byBtYWtlIHRoZSBuZXh0IHRpbWUgYSBwcm9tcHQgaXMKKysgICAgIyBkaXNwbGF5ZWQuCisr ICAgIGRlZiBhZGRfcnBtX3N1Z2dlc3Rpb24ocnBtX25hbWUpOgorKyAgICAgICAgZ2xvYmFsIF9f bWlzc2luZ19ycG1zCisrICAgICAgICBnbG9iYWwgX19zdWdnZXN0X3JwbXMKKysKKysgICAgICAg IGlmIG5vdCBycG1fbmFtZSBpbiBfX21pc3NpbmdfcnBtczoKKysgICAgICAgICAgICBfX3N1Z2dl c3RfcnBtc1tycG1fbmFtZV0gPSBUcnVlCisrICAgICAgICAgICAgX19taXNzaW5nX3JwbXNbcnBt X25hbWVdID0gVHJ1ZQorKworKyAgICAjIFJldHVybiBUcnVlIGlmIFJQTV9OQU1FIGlzIGluc3Rh bGxlZCwgd2hlcmUgUlBNX05BTUUgaXMgdGhlIGZ1bGwKKysgICAgIyBuYW1lIG9mIGFuIFJQTS4K KysgICAgZGVmIGlzX3JwbV9pbnN0YWxsZWQodHMsIHJwbV9uYW1lKToKKysgICAgICAgIHJlcyA9 IHRzLmRiTWF0Y2gocnBtLlJQTURCSV9MQUJFTCwgcnBtX25hbWUpCisrICAgICAgICByZXR1cm4g bGVuKHJlcykgPiAwCisrCisrICAgICMgQWRkIGEgc3VnZ2VzdGlvbiB0byBpbnN0YWxsIFJQTXMg YmFzZWQgb24gQlVJTERfSUQsIGEgc3RyaW5nCisrICAgICMgY29udGFpbmluZyBhIGJ1aWxkLWlk LCB0byB0aGUgbGlzdCBvZiBzdWdnZXN0aW9ucyB0byBtYWtlIHRoZSBuZXh0CisrICAgICMgdGlt ZSBhIHByb21wdCBpcyBkaXNwbGF5ZWQuCisrICAgIGRlZiBhZGRfYnVpbGRfaWRfc3VnZ2VzdGlv bihidWlsZF9pZCk6CisrICAgICAgICBnbG9iYWwgX19taXNzaW5nX2J1aWxkX2lkcworKyAgICAg ICAgZ2xvYmFsIF9fc3VnZ2VzdF9idWlsZF9pZHMKKysKKysgICAgICAgIGlmIG5vdCBidWlsZF9p ZCBpbiBfX21pc3NpbmdfYnVpbGRfaWRzOgorKyAgICAgICAgICAgIF9fc3VnZ2VzdF9idWlsZF9p ZHNbYnVpbGRfaWRdID0gVHJ1ZQorKyAgICAgICAgICAgIF9fbWlzc2luZ19idWlsZF9pZHNbYnVp bGRfaWRdID0gVHJ1ZQorKworKyAgICAjIFJldHVybiB0cnVlIGlmICcvdXNyL2xpYicgaXMgaW4g dGhlIGRlYnVnLWZpbGUtZGlyZWN0b3J5IGxpc3QuCisrICAgICMgU3lzdGVtIHBhY2thZ2VzIGlu c3RhbGwgdGhlaXIgZGVidWcgaW5mb3JtYXRpb24gaW50byAvdXNyL2xpYiwKKysgICAgIyBzbyBp ZiBHREIgaXNuJ3QgbG9va2luZyBpbiB0aGF0IGRpcmVjdG9yeSwgdGhlbiB0aGVyZSdzIG5vCisr ICAgICMgcmVhc29uIHRvIHRyeSBhbmQgZmlndXJlIG91dCBhIHN1aXRhYmxlIFJQTSB0byBpbnN0 YWxsLgorKyAgICBkZWYgdXNpbmdfc3VpdGFibGVfZGVidWdfZmlsZV9kaXJlY3RvcnkoKToKKysg ICAgICAgIGRlYnVnX2ZpbGVfZGlyZWN0b3JpZXMgPSBnZGIucGFyYW1ldGVyKCJkZWJ1Zy1maWxl LWRpcmVjdG9yeSIpCisrICAgICAgICBmb3IgZCBpbiBkZWJ1Z19maWxlX2RpcmVjdG9yaWVzLnNw bGl0KG9zLnBhdGhzZXApOgorKyAgICAgICAgICAgIGlmIGRbOjhdID09ICIvdXNyL2xpYiI6Cisr ICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisrICAgICAgICByZXR1cm4gRmFsc2UKKysKKysg ICAgIyBSZXR1cm4gVHJ1ZSBpZiBycG0tc3VnZ2VzdGlvbiBpcyBkaXNhYmxlZCBmb3IgYW55IHJl YXNvbi4KKysgICAgZGVmIHJwbV9zdWdnZXN0aW9uX2lzX2Rpc2FibGVkKCk6CisrICAgICAgICAj IElmIC91c3IvbGliLyBpcyBub3QgYmVpbmcgdXNlZCB0byBmaW5kIGRlYnVnIGluZm9ybWF0aW9u CisrICAgICAgICAjIHRoZW4gdGhlcmUncyBubyBwb2ludCBvZmZlcmluZyBhbnkgUlBNcyBhcyBH REIgd291bGQgbm90CisrICAgICAgICAjIGZpbmQgdGhlIG5ld2x5IGluc3RhbGxlZCBjb250ZW50 LgorKyAgICAgICAgaWYgbm90IHVzaW5nX3N1aXRhYmxlX2RlYnVnX2ZpbGVfZGlyZWN0b3J5KCk6 CisrICAgICAgICAgICAgcmV0dXJuIFRydWUKKysKKysgICAgICAgICMgSXMgJ3JwbS1zdWdnZXN0 aW9uIGVuYWJsZWQnIHNldCB0byAnb2ZmJz8KKysgICAgICAgIGlmIG5vdCBwYXJhbV9ycG1fc3Vn Z2VzdGlvbl9lbmFibGVkLnZhbHVlOgorKyAgICAgICAgICAgIHJldHVybiBUcnVlCisrCisrICAg ICAgICByZXR1cm4gRmFsc2UKKysKKysKKysgICAgIyBMb29rdXAgUlBNcyB0aGF0IG1pZ2h0IHBy b3ZpZGUgdGhlIGRlYnVnIGluZm9ybWF0aW9uIGZvciBGSUxFTkFNRSwKKysgICAgIyB3aGljaCBp cyBhIHN0cmluZyBjb250YWluaW5nIHRoZSBwYXRoIHRvIGFuIG9iamVjdCBmaWxlIEdEQiBjb3Vs ZAorKyAgICAjIG5vdCBmaW5kIGFueSBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3IuCisrICAgICMKKysg ICAgIyBJZiBhIHBvc3NpYmxlIFJQTSBpcyBmb3VuZCB0aGVuIHRoaXMgaXMgYWRkZWQgdG8gdGhl IGdsb2JhbHMKKysgICAgIyBfX01JU1NJTkdfUlBNUyBhbmQgX19TVUdHRVNUX1JQTVMsIHdoaWNo IGFyZSB1c2VkIGVsc2V3aGVyZSBpbiB0aGlzCisrICAgICMgc2NyaXB0LgorKyAgICBkZWYgZmlu ZF9kZWJ1Z19zdWdnZXN0aW9ucyhmaWxlbmFtZSk6CisrICAgICAgICBpZiBycG1fc3VnZ2VzdGlv bl9pc19kaXNhYmxlZCgpOgorKyAgICAgICAgICAgIHJldHVybgorKworKyAgICAgICAgdHMgPSBy cG0uVHJhbnNhY3Rpb25TZXQoKQorKyAgICAgICAgbWkgPSB0cy5kYk1hdGNoKHJwbS5SUE1EQklf QkFTRU5BTUVTLCBmaWxlbmFtZSkKKysgICAgICAgIGZvciBoIGluIG1pOgorKyAgICAgICAgICAg ICMgQnVpbGQgdGhlIGRlYnVnaW5mbyBwYWNrYWdlIG5hbWUuCisrICAgICAgICAgICAgb2JqID0g aC5mb3JtYXQoIiV7bmFtZX0tZGVidWdpbmZvLSV7dmVyc2lvbn0tJXtyZWxlYXNlfS4le2FyY2h9 IikKKysgICAgICAgICAgICBycG1fbmFtZSA9IHN0cihvYmopCisrCisrICAgICAgICAgICAgIyBD aGVjayB0byBzZWUgaWYgdGhlIHBhY2thZ2UgaXMgaW5zdGFsbGVkLgorKyAgICAgICAgICAgIGlm IGlzX3JwbV9pbnN0YWxsZWQodHMsIHJwbV9uYW1lKToKKysgICAgICAgICAgICAgICAgY29udGlu dWUKKysKKysgICAgICAgICAgICBhZGRfcnBtX3N1Z2dlc3Rpb24ocnBtX25hbWUpCisrCisrCisr ICAgICMgUmV0dXJuIGEgc3RyaW5nIHdoaWNoIGlzIHRoZSBmaWxlbmFtZSBvZiB0aGUgZmlsZW5h bWUKKysgICAgIyBjb3JyZXNwb25kaW5nIHRvIEJVSUxEX0lEIGluIG9uZSBvZiB0aGUgdHdvIGxv Y2F0aW9ucyB1bmRlcgorKyAgICAjIC91c3IvbGliLgorKyAgICAjCisrICAgICMgV2hlbiBERUJV R19QIGlzIFRydWUsIHJldHVybiBhIGZpbGVuYW1lIHdpdGhpbjoKKysgICAgIyAvdXNyL2xpYi9k ZWJ1Zy8uYnVpbGQtaWQvIGFuZCB3aGVuIERFQlVHX1AgaXMgRmFsc2UsIHJldHVybiBhCisrICAg ICMgZmlsZW5hbWUgd2l0aGluOiAvdXNyL2xpYi8uYnVpbGQtaWQvLgorKyAgICAjCisrICAgICMg VGhlIFNVRkZJWCBzdHJpbmcgaXMgYXBwZW5kZWQgdG8gdGhlIGdlbmVyYXRlZCBmaWxlbmFtZS4K KysgICAgZGVmIGJ1aWxkX2lkX3RvX3Vzcl9saWJfZmlsZW5hbWUoYnVpbGRfaWQsIGRlYnVnX3As IHN1ZmZpeCA9ICIiKToKKysgICAgICAgIGtleSA9IGJ1aWxkX2lkWzoyXQorKyAgICAgICAgcnN0 ID0gYnVpbGRfaWRbMjpdCisrCisrICAgICAgICBmaWxlbmFtZSA9ICcvdXNyL2xpYicKKysgICAg ICAgIGlmIGRlYnVnX3A6CisrICAgICAgICAgICAgZmlsZW5hbWUgKz0gJy9kZWJ1ZycKKysgICAg ICAgIGZpbGVuYW1lICs9ICcvLmJ1aWxkLWlkLycgKyBrZXkgKyAnLycgKyByc3QgKyBzdWZmaXgK KysKKysgICAgICAgIHJldHVybiBmaWxlbmFtZQorKworKyAgICAjIEEgcmVnZXhwIG9iamVjdCB1 c2VkIHRvIG1hdGNoIGFnYWluc3QgdGhlIG91dHB1dCBvZiBgZG5mYC4gIFRoaXMKKysgICAgIyBp cyBpbml0aWFsaXNlZCB0aGUgZmlyc3QgdGltZSBpdCBpcyBuZWVkZWQuCisrICAgIGZpbmRfb2Jq ZmlsZV9zdWdnZXN0aW9uc19yZSA9IE5vbmUKKysKKysgICAgIyBHaXZlbiBCVUlMRF9JRCwgYSBz dHJpbmcgY29udGFpbmluZyBhIGJ1aWxkLWlkLCBydW4gYSBgZG5mYAorKyAgICAjIGNvbW1hbmQg dG8gZmlndXJlIG91dCBpZiBhbnkgUlBNcyBjYW4gcHJvdmlkZSBhIGZpbGUgd2l0aCB0aGF0Cisr ICAgICMgYnVpbGQtaWQuCisrICAgICMKKysgICAgIyBJZiBhbnkgc3VpdGFibGUgUlBNcyBhcmUg Zm91bmQgdGhlbiBgYWRkX3JwbV9zdWdnZXN0aW9uYCBpcyBjYWxsZWQKKysgICAgIyB0byByZWdp c3RlciB0aGUgc3VnZ2VzdGlvbi4KKysgICAgIworKyAgICAjIFRoaXMgZnVuY3Rpb24gaXMgcHJl dHR5IHNsb3csIHdoaWNoIGlzIGEgc2hhbWUsIGFzIHRoZSByZXN1bHRzCisrICAgICMgcmV0dXJu ZWQgYXJlIG11Y2ggbmljZXIgdGhhbiBqdXN0IHRlbGxpbmcgdGhlIHVzZXIgdG8gdHJ5IHRoZQor KyAgICAjIGxvb2t1cCBjb21tYW5kIGZvciB0aGVtc2VsdmVzLgorKyAgICBkZWYgZmluZF9vYmpm aWxlX3N1Z2dlc3Rpb25zX2luX3RocmVhZChidWlsZF9pZCk6CisrICAgICAgICBnbG9iYWwgZmlu ZF9vYmpmaWxlX3N1Z2dlc3Rpb25zX3JlCisrCisrICAgICAgICBpZiBmaW5kX29iamZpbGVfc3Vn Z2VzdGlvbnNfcmUgaXMgTm9uZToKKysgICAgICAgICAgICBmaW5kX29iamZpbGVfc3VnZ2VzdGlv bnNfcmUgPSByZS5jb21waWxlKCJeKC4qKS1kZWJ1Z2luZm8tKC4qKSA6IERlYnVnIGluZm9ybWF0 aW9uIGZvciBwYWNrYWdlICguKikkIikKKysKKysgICAgICAgIHJlc3VsdCA9IHN1YnByb2Nlc3Mu cnVuKFsnZG5mJywgIi0tZW5hYmxlcmVwbz0qZGVidWcqIiwgJy0tbm9ncGdjaGVjaycsICctQycs ICdwcm92aWRlcycsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRfaWRf dG9fdXNyX2xpYl9maWxlbmFtZShidWlsZF9pZCwgVHJ1ZSldLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgdGltZW91dD0zMCkKKysKKysgICAg ICAgIGxpbmVzID0gcmVzdWx0LnN0ZG91dC5kZWNvZGUoJ3V0Zi04Jykuc3BsaXRsaW5lcygpCisr ICAgICAgICB0cyA9IHJwbS5UcmFuc2FjdGlvblNldCgpCisrCisrICAgICAgICBmb3IgbCBpbiBs aW5lczoKKysgICAgICAgICAgICBtID0gZmluZF9vYmpmaWxlX3N1Z2dlc3Rpb25zX3JlLm1hdGNo KGwpCisrICAgICAgICAgICAgaWYgbm90IG06CisrICAgICAgICAgICAgICAgIGNvbnRpbnVlCisr ICAgICAgICAgICAgaWYgbS5ncm91cCgxKSAhPSBtLmdyb3VwKDMpOgorKyAgICAgICAgICAgICAg ICByZXR1cm4KKysKKysgICAgICAgICAgICBtYWluX3JwbSA9IG0uZ3JvdXAoMSkgKyAnLScgKyBt Lmdyb3VwKDIpCisrICAgICAgICAgICAgZGJnX3JwbSA9IG0uZ3JvdXAoMSkgKyAnLWRlYnVnaW5m by0nICsgbS5ncm91cCgyKQorKworKyAgICAgICAgICAgIGlmIG5vdCBpc19ycG1faW5zdGFsbGVk KHRzLCBtYWluX3JwbSk6CisrICAgICAgICAgICAgICAgIGFkZF9ycG1fc3VnZ2VzdGlvbihtYWlu X3JwbSkKKysKKysgICAgICAgICAgICBpZiBub3QgaXNfcnBtX2luc3RhbGxlZCh0cywgZGJnX3Jw bSk6CisrICAgICAgICAgICAgICAgIGFkZF9ycG1fc3VnZ2VzdGlvbihkYmdfcnBtKQorKworKyAg ICAgICAgcmV0dXJuCisrCisrICAgICMgQ2FsbCBgZmluZF9vYmpmaWxlX3N1Z2dlc3Rpb25zX2lu X3RocmVhZGAgaXMgYSBzZXBhcmF0ZSB0aHJlYWQsCisrICAgICMgdGhlbiB3YWl0IGZvciB0aGUg dGhyZWFkIHRvIGNvbXBsZXRlLiAgRG9uJ3QgdG91Y2ggYW55IHNoYXJlZAorKyAgICAjIHN0YXRl IHdoaWxlIHdhaXRpbmcgZm9yIHRoZSB0aHJlYWQgdG8gY29tcGxldGUuICBUaGVyZSdzIG5vCisr ICAgICMgbG9ja2luZyBvbiBhbnkgb2Ygb3VyIGNhY2hlcywgYW5kIHRoZSB3b3JrZXIgdGhyZWFk IHdpbGwgYWRkIFJQTQorKyAgICAjIHN1Z2dlc3Rpb25zIGFzIGl0IHdhbnRzLgorKyAgICAjCisr ICAgICMgSWYgdGhyZSB0aHJlYWQgdGFrZXMgdG9vIGxvbmcgdG8gY29tcGxldGUgdGhlbiBwcmlu dCBhIG1lc3NhZ2UKKysgICAgIyB0byB0aGUgdXNlciB0ZWxsaW5nIHRoZW0gd2hhdCdzIGdvaW5n IG9uLgorKyAgICBkZWYgZmluZF9vYmpmaWxlX3N1Z2dlc3Rpb25zX3Nsb3dfY29yZShidWlsZF9p ZCk6CisrICAgICAgICBnbG9iYWwgX19zZWFyY2hpbmdfbWVzc2FnZV9wcmludGVkCisrCisrICAg ICAgICB0aHJlYWQgPSBUaHJlYWQodGFyZ2V0ID0gZmluZF9vYmpmaWxlX3N1Z2dlc3Rpb25zX2lu X3RocmVhZCwgYXJncyA9IChidWlsZF9pZCwgKSkKKysgICAgICAgIHRocmVhZC5zdGFydCgpCisr ICAgICAgICBzdGFydCA9IHRpbWUudGltZV9ucygpCisrCisrICAgICAgICB3aGlsZSB0aHJlYWQu aXNfYWxpdmUgKCk6CisrICAgICAgICAgICAgdGltZS5zbGVlcCgwLjA1KQorKyAgICAgICAgICAg IG5vdyA9IHRpbWUudGltZV9ucyAoKQorKyAgICAgICAgICAgIGlmIG5vdCBfX3NlYXJjaGluZ19t ZXNzYWdlX3ByaW50ZWQgYW5kIChub3cgLSBzdGFydCA+IDEwMDAwMDAwMDApOgorKyAgICAgICAg ICAgICAgICBwcmludCgiU2VhcmNoaW5nIGZvciBwYWNrYWdlcyB0byBpbnN0YWxsIHRoYXQgY291 bGQgaW1wcm92ZSBkZWJ1Z2dpbmcuLi4iKQorKyAgICAgICAgICAgICAgICBfX3NlYXJjaGluZ19t ZXNzYWdlX3ByaW50ZWQgPSBUcnVlCisrCisrICAgICAgICB0aHJlYWQuam9pbigpCisrCisrCisr ICAgICMgR2l2ZW4gQlVJTERfSUQsIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSBidWlsZC1pZCwgbG9v a3VwIHN1aXRhYmxlCisrICAgICMgUlBNcyB0aGF0IGNvdWxkIGJlIGluc3RhbGxlZCB0byBwcm92 aWRlIGEgZmlsZSB3aXRoIHRoZSByZXF1aXJlZAorKyAgICAjIGJ1aWxkLWlkLgorKyAgICAjCisr ICAgICMgQW55IHN1aXRhYmxlIFJQTXMgYXJlIHJlY29yZGVkIGJ5IGNhbGxpbmcgYGFkZF9ycG1f c3VnZ2VzdGlvbmAsIGFuZAorKyAgICAjIHdpbGwgYmUgcHJpbnRlZCBiZWZvcmUgdGhlIG5leHQg cHJvbXB0LgorKyAgICBkZWYgZmluZF9vYmpmaWxlX3N1Z2dlc3Rpb25zX3Nsb3coYnVpbGRfaWQp OgorKyAgICAgICAgZ2xvYmFsIF9fYnVpbGRfaWRfbG9va3VwX2NhY2hlCisrICAgICAgICBnbG9i YWwgX19zdWdnZXN0X3JwbXMKKysKKysgICAgICAgICMgVGhlIGNvZGUgdG8gbG9va3VwIGFuIFJQ TSBnaXZlbiBvbmx5IGEgYnVpbGQtaWQgaXMgcHJldHR5CisrICAgICAgICAjIHNsb3cuICBDYWNo ZSB0aGUgcmVzdWx0cyB0byB0cnkgYW5kIHJlZHVjZSB0aGUgVUkgZGVsYXlzLgorKyAgICAgICAg aWYgYnVpbGRfaWQgaW4gX19idWlsZF9pZF9sb29rdXBfY2FjaGU6CisrICAgICAgICAgICAgcnBt cyA9IF9fYnVpbGRfaWRfbG9va3VwX2NhY2hlW2J1aWxkX2lkXQorKyAgICAgICAgICAgIGlmIHJw bXMgaXMgbm90IE5vbmU6CisrICAgICAgICAgICAgICAgIGZvciByIGluIHJwbXM6CisrICAgICAg ICAgICAgICAgICAgICBhZGRfcnBtX3N1Z2dlc3Rpb24ocikKKysgICAgICAgICAgICByZXR1cm4K KysKKysgICAgICAgICMgTWFrZSBzdXJlIHRoZSBjYWNoZSBlbnRyeSBleGlzdHMgYmVmb3JlIHdl IGRvIHRoZSBsb29rdXAuCisrICAgICAgICAjIElmLCBmb3IgYW55IHJlYXNvbiwgdGhlIGxvb2t1 cCByYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGVuCisrICAgICAgICAjIGhhdmluZyBhIGNhY2hlIGVu dHJ5IHdpbGwgcHJldmVudCB1cyByZXRyeWluZyB0aGlzIGxvb2t1cCBpbgorKyAgICAgICAgIyB0 aGUgZnV0dXJlLgorKyAgICAgICAgX19idWlsZF9pZF9sb29rdXBfY2FjaGVbYnVpbGRfaWRdID0g Tm9uZQorKworKyAgICAgICAgIyBOb3cgZG8gdGhlIGxvb2t1cC4gIFRoaXMgaXMgdGhlIHNsb3cg cGFydC4KKysgICAgICAgIGZpbmRfb2JqZmlsZV9zdWdnZXN0aW9uc19zbG93X2NvcmUoYnVpbGRf aWQpCisrCisrICAgICAgICAjIEZpbGwgaW4gdGhlIGNhY2hlLCBmb3IgYSBnaXZlbiBidWlsZC1p ZCB3aGljaCBSUE1zIHdlcmUKKysgICAgICAgICMgc3VnZ2VzdGVkLgorKyAgICAgICAgcnBtcyA9 IFtdCisrICAgICAgICBmb3IgciBpbiBfX3N1Z2dlc3RfcnBtczoKKysgICAgICAgICAgICBycG1z LmFwcGVuZChyKQorKyAgICAgICAgX19idWlsZF9pZF9sb29rdXBfY2FjaGVbYnVpbGRfaWRdID0g cnBtcworKworKworKyAgICAjIEdpdmVuIEJVSUxEX0lELCBhIHN0cmluZyBjb250YWluaW5nIGEg YnVpbGQtaWQsIGp1c3QgcmVjb3JkIHRoYXQgd2UKKysgICAgIyBzaG91bGQgYWR2aXNlIHRoZSB1 c2VyIHRvIHRyeSBpbnN0YWxsaW5nIFJQTXMgYmFzZWQgb24gdGhpcyBidWlsZC1pZC4KKysgICAg ZGVmIGZpbmRfb2JqZmlsZV9zdWdnZXN0aW9uc19mYXN0KGJ1aWxkX2lkKToKKysgICAgICAgIGFk ZF9idWlsZF9pZF9zdWdnZXN0aW9uKGJ1aWxkX2lkKQorKworKyAgICAjIEdpdmVuIEJVSUxEX0lE LCBhIHN0cmluZyBjb250YWluaW5nIGEgYnVpbGQtaWQsIHdoaWNoIEdEQiBoYXMgZmFpbGVkCisr ICAgICMgdG8gZmluZCwgcG9zc2libHkgcmVjb3JkIHNvbWUgaW5mb3JtYXRpb24gc28gdGhhdCB3 ZSBjYW4sIGF0IHRoZSBuZXh0CisrICAgICMgcHJvbXB0LCBnaXZlIHNvbWUgUlBNIGluc3RhbGxh dGlvbiBhZHZpY2UgdG8gdGhlIHVzZXIuCisrICAgICMKKysgICAgIyBXZSBoYXZlIHR3byBkaWZm ZXJlbnQgc3RyYXRlZ2llcyBmb3IgUlBNIGxvb2t1cCBiYXNlZCBvbiBhIGJ1aWxkLWlkLAorKyAg ICAjIG9uZSBhcHByb2FjaCBpcyB0aGF0IHdlIGFjdHVhbGx5IGxvb2t1cCB0aGUgUlBNcyBhbmQg b25seSBzdWdnZXN0CisrICAgICMgc29tZXRoaW5nIGlmIHRoZXJlIGlzIGEgc3VpdGFibGUgUlBN LiAgSG93ZXZlciwgdGhpcyBpcyBwcmV0dHkgc2xvdywKKysgICAgIyBhbmQgdXNlcnMgd2lsbCBw cm9iYWJseSBmaW5kIHRoaXMgYW5ub3lpbmcuCisrICAgICMKKysgICAgIyBTbyB3ZSBhbHNvIGhh dmUgYSBmYXN0IHdheS4gIFdpdGggdGhpcyBhcHByb2FjaCB3ZSBqdXN0IHJlY29yZCB0aGUKKysg ICAgIyBidWlsZC1pZCB0aGF0IHdhcyBtaXNzaW5nIGFuZCB0ZWxsIHRoZSB1c2VyIHRvIHRyeSBp bnN0YWxsaW5nIGJhc2VkIG9uCisrICAgICMgdGhlIGJ1aWxkLWlkLiAgVGhlIGRvd25zaWRlIHdp dGggdGhpcyBpcyB0aGF0IGlmIHRoZXJlIGlzIG5vIFJQTSBmb3IKKysgICAgIyB0aGF0IGJ1aWxk LWlkLCB0aGVuIHRoZSB1c2VyIHdpbGwgdHJ5IHRoZSBjb21tYW5kLCBidXQgbm90aGluZyB3aWxs CisrICAgICMgaW5zdGFsbC4KKysgICAgZGVmIGZpbmRfb2JqZmlsZV9zdWdnZXN0aW9ucyhidWls ZF9pZCk6CisrICAgICAgICBpZiBycG1fc3VnZ2VzdGlvbl9pc19kaXNhYmxlZCgpOgorKyAgICAg ICAgICAgIHJldHVybgorKworKyAgICAgICAgaWYgcGFyYW1fcnBtX3N1Z2dlc3Rpb25fYnVpbGRf aWRfbW9kZS5mYXN0X21vZGUoKToKKysgICAgICAgICAgICBmaW5kX29iamZpbGVfc3VnZ2VzdGlv bnNfZmFzdChidWlsZF9pZCkKKysgICAgICAgIGVsc2U6CisrICAgICAgICAgICAgZmluZF9vYmpm aWxlX3N1Z2dlc3Rpb25zX3Nsb3coYnVpbGRfaWQpCisrCisrICAgICMgQSBtaXNzaW5nIGRlYnVn IGhhbmRsZXIgY2xhc3MuICBKdXN0IGZvcndhcmRzIHRoZSBuYW1lIG9mIHRoZQorKyAgICAjIG9i amZpbGUgZm9yIHdoaWNoIHdlIGFyZSBtaXNzaW5nIGRlYnVnIGluZm9ybWF0aW9uIHRvCisrICAg ICMgZmluZF9kZWJ1Z19zdWdnZXN0aW9ucy4KKysgICAgY2xhc3MgUlBNX01pc3NpbmdEZWJ1Z0hh bmRsZXIoZ2RiLm1pc3NpbmdfZGVidWcuTWlzc2luZ0RlYnVnSGFuZGxlcik6CisrICAgICAgICBk ZWYgX19pbml0X18oc2VsZik6CisrICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXygicnBtLXN1 Z2dlc3Rpb25zIikKKysKKysgICAgICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBvYmpmaWxlKToKKysg ICAgICAgICAgICBmaW5kX2RlYnVnX3N1Z2dlc3Rpb25zKG9iamZpbGUuZmlsZW5hbWUpCisrICAg ICAgICAgICAgcmV0dXJuIEZhbHNlCisrCisrICAgICMgQSBtaXNzaW5nIG9iamZpbGUgaGFuZGxl ciBjbGFzcy4gIEp1c3QgZm9yd2FyZHMgdGhlIGJ1aWxkLWlkIG9mCisrICAgICMgdGhlIG9iamZp bGUgdGhhdCBpcyBtaXNzaW5nIHRvIGZpbmRfb2JqZmlsZV9zdWdnZXN0aW9ucy4KKysgICAgY2xh c3MgUlBNX01pc3NpbmdPYmpmaWxlSGFuZGxlcihnZGIubWlzc2luZ19vYmpmaWxlLk1pc3NpbmdP YmpmaWxlSGFuZGxlcik6CisrICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisrICAgICAgICAg ICAgc3VwZXIoKS5fX2luaXRfXygicnBtLXN1Z2dlc3Rpb25zIikKKysKKysgICAgICAgIGRlZiBf X2NhbGxfXyhzZWxmLCBwc3BhY2UsIGJ1aWxkX2lkLCBmaWxlbmFtZSk6CisrICAgICAgICAgICAg ZmluZF9vYmpmaWxlX3N1Z2dlc3Rpb25zKGJ1aWxkX2lkKQorKyAgICAgICAgICAgIHJldHVybiBG YWxzZQorKworKyAgICAjIFRha2UgYSBub24tZW1wdHkgbGlzdCBvZiBSUE0gbmFtZXMgYW5kIHBy aW50IGEgY29tbWFuZCBsaW5lIGEKKysgICAgIyB1c2VyIGNvdWxkIHJ1biB0byBpbnN0YWxsIHRo ZXNlIFJQTXMuCisrICAgIGRlZiBwcmludF9ycG1fc3VnZ2VzdGlvbnMocnBtX25hbWVfbGlzdCk6 CisrICAgICAgICBwcmludCgiTWlzc2luZyBycG1zLCB0cnk6IGRuZiAtLWVuYWJsZXJlcG89Jypk ZWJ1ZyonIGluc3RhbGwgIiArICcgJy5qb2luKHJwbV9uYW1lX2xpc3QpKQorKworKyAgICAjIFRh a2UgYSBub24tZW1wdHkgbGlzdCBvZiBidWlsZC1pZCBzdHJpbmdzIGFuZCBwcmludCBhIHNlcmll cyBvZgorKyAgICAjIGxpbmVzIHRoYXQgYSB1c2VyIGNvdWxkIHJ1biB0byBpbnN0bGwgdGhlIFJQ TXMgdGhhdCBwcm92aWRlCisrICAgICMgZmlsZXMgd2l0aCB0aGlzIGJ1aWxkLWlkLgorKyAgICAj CisrICAgICMgVGhlIHByaW50ZWQgY29tbWFuZHMgd2lsbCBhbHNvIGluc3RhbGwgdGhlIGNvcnJl c3BvbmRpbmcgZGVidWcKKysgICAgIyBwYWNrYWdlcyBmb3IgdGhlIGV4ZWN1dGFibGUgd2l0aCB0 aGUgZ2l2ZW4gYnVpbGQtaWQuCisrICAgIGRlZiBwcmludF9idWlsZF9pZF9zdWdnZXN0aW9ucyhi dWlsZF9pZF9saXN0KToKKysgICAgICAgIGZvciBidWlsZF9pZCBpbiBidWlsZF9pZF9saXN0Ogor KyAgICAgICAgICAgIHByaW50KCJNaXNzaW5nIGZpbGUocyksIHRyeTogZG5mIC0tZW5hYmxlcmVw bz0nKmRlYnVnKicgaW5zdGFsbCAiCisrICAgICAgICAgICAgICAgICAgKyBidWlsZF9pZF90b191 c3JfbGliX2ZpbGVuYW1lKGJ1aWxkX2lkLCBGYWxzZSkKKysgICAgICAgICAgICAgICAgICArICcg JworKyAgICAgICAgICAgICAgICAgICsgYnVpbGRfaWRfdG9fdXNyX2xpYl9maWxlbmFtZShidWls ZF9pZCwgVHJ1ZSwgIi5kZWJ1ZyIpKQorKworKyAgICAjIENhbGxlZCBiZWZvcmUgR0RCIGRpc3Bs YXlzIGl0cyBwcm9tcHQuICBJZiB0aGUgZ2xvYmFsIF9fU1VHR0VTVF9SUE1TCisrICAgICMgZGlj dGlvbmFyeSBpcyBub3QgZW1wdHksIHRoZW4gdGhpcyBob29rIHByaW50cyB0aGUga2V5cyBvZiB0 aGlzCisrICAgICMgZGljdGlvbmFyeSBhcyBzdHJpbmdzIHdoaWNoIGFyZSB0aGUgbmFtZXMgb2Yg UlBNcy4gIFRoaXMgaG9vayBmb3JtYXRzCisrICAgICMgZWFjaCBSUE0gbmFtZSBpbnRvIGEgc3Vn Z2VzdGVkICdkbmYgaW5zdGFsbCcgY29tbWFuZCBhbmQgc3VnZ2VzdHMgdGhpcworKyAgICAjIHRv IHRoZSB1c2VyLgorKyAgICAjCisrICAgICMgQWRkaXRpb25hbGx5LCBpZiB0aGUgZ2xvYmFsIF9f U1VHR0VTVF9CVUlMRF9JRFMgZGljdGlvbmFyeSBpcyBub3QKKysgICAgIyBlbXB0eSwgdGhlbiB0 aGlzIGhvb2sgdXNlcyB0aGUga2V5cyBvZiB0aGlzIGRpY3Rpb25hcnkgYXMgYnVpbGQtaWRzCisr ICAgICMgdGhhdCB3ZXJlIGZvdW5kIHRvIGJlIG1pc3NpbmcsIGFuZCBmb3JtYXRzIHRoZXNlIGlu dG8gc29tZSBmaWxlIGJhc2VkCisrICAgICMgJ2RuZiBpbnN0YWxsJyBzdWdnZXN0aW9ucyB0byB0 aGUgdXNlci4KKysgICAgZGVmIGJlZm9yZV9wcm9tcHQoKToKKysgICAgICAgIGdsb2JhbCBfX3N1 Z2dlc3RfcnBtcworKyAgICAgICAgZ2xvYmFsIF9fc3VnZ2VzdF9idWlsZF9pZHMKKysgICAgICAg IGdsb2JhbCBfX3NlYXJjaGluZ19tZXNzYWdlX3ByaW50ZWQKKysKKysgICAgICAgICMgV2UgYWxs b3cgdGhlIHNlYXJjaGluZyBtZXNzYWdlIHRvIGJlIHByaW50ZWQganVzdCBvbmNlCisrICAgICAg ICAjIGJldHdlZW4gcHJvbXB0cy4KKysgICAgICAgIF9fc2VhcmNoaW5nX21lc3NhZ2VfcHJpbnRl ZCA9IEZhbHNlCisrCisrICAgICAgICBpZiBsZW4oX19zdWdnZXN0X3JwbXMpID4gMDoKKysgICAg ICAgICAgICBwcmludF9ycG1fc3VnZ2VzdGlvbnMoX19zdWdnZXN0X3JwbXMua2V5cygpKQorKyAg ICAgICAgICAgIF9fc3VnZ2VzdF9ycG1zID0ge30KKysKKysgICAgICAgIGlmIGxlbihfX3N1Z2dl c3RfYnVpbGRfaWRzKSA+IDA6CisrICAgICAgICAgICAgcHJpbnRfYnVpbGRfaWRfc3VnZ2VzdGlv bnMoX19zdWdnZXN0X2J1aWxkX2lkcy5rZXlzKCkpCisrICAgICAgICAgICAgX19zdWdnZXN0X2J1 aWxkX2lkcyA9IHt9CisrCisrICAgICMgQ2FsbGVkIHdoZW4gdGhlIGV4ZWN1dGFibGUgd2l0aGlu IGEgcHJvZ3JtIHNwYWNlIGlzIGNoYW5nZWQuICBDbGVhcgorKyAgICAjIHRoZSBsaXN0cyBvZiBS UE0gc3VnZ2VzdGlvbnMuICBXZSBvbmx5IGNsZWFyIHRoZSBwcmV2aW91cyBzdWdnZXN0aW9uCisr ICAgICMgbGlzdCB3aGVuIHRoZSBleGVjdXRhYmxlIHJlYWxseSBjaGFuZ2VzLiAgSWYgdGhlIHVz ZXIgc2ltcGx5CisrICAgICMgcmVjb21waWxlcyB0aGUgZXhlY3V0YWJsZSwgdGhlbiB3ZSBkb24n dCBib3RoIGNsZWFyaW5nIHRoaXMgbGlzdC4KKysgICAgZGVmIGV4ZWN1dGFibGVfY2hhbmdlZF9o YW5kbGVyKGV2ZW50KToKKysgICAgICAgIGdsb2JhbCBfX21pc3NpbmdfcnBtcworKyAgICAgICAg Z2xvYmFsIF9fc3VnZ2VzdF9ycG1zCisrICAgICAgICBnbG9iYWwgX19zdWdnZXN0X2J1aWxkX2lk cworKyAgICAgICAgZ2xvYmFsIF9fbWlzc2luZ19idWlsZF9pZHMKKysKKysgICAgICAgIGlmIG5v dCBldmVudC5yZWxvYWQ6CisrICAgICAgICAgICAgX19taXNzaW5nX3JwbXMgPSB7fQorKyAgICAg ICAgICAgIF9fc3VnZ2VzdF9ycG1zID0ge30KKysgICAgICAgICAgICBfX21pc3NpbmdfYnVpbGRf aWRzID0ge30KKysgICAgICAgICAgICBfX3N1Z2dlc3RfYnVpbGRfaWRzID0ge30KKysKKysKKysg ICAgIyBBdHRhY2ggdG8gdGhlIHJlcXVpcmVkIEdEQiBldmVudHMuCisrICAgIGdkYi5ldmVudHMu ZXhlY3V0YWJsZV9jaGFuZ2VkLmNvbm5lY3QoZXhlY3V0YWJsZV9jaGFuZ2VkX2hhbmRsZXIpCisr ICAgIGdkYi5ldmVudHMuYmVmb3JlX3Byb21wdC5jb25uZWN0KGJlZm9yZV9wcm9tcHQpCisrCisr ICAgICMgUmVnaXN0ZXIgdGhlIG1pc3NpbmcgZGVidWcgYW5kIG1pc3Npbmcgb2JqZmlsZSBoYW5k bGVycyB3aXRoIEdEQi4KKysgICAgZ2RiLm1pc3NpbmdfZGVidWcucmVnaXN0ZXJfaGFuZGxlcihO b25lLCBSUE1fTWlzc2luZ0RlYnVnSGFuZGxlcigpKQorKyAgICBnZGIubWlzc2luZ19vYmpmaWxl LnJlZ2lzdGVyX2hhbmRsZXIoTm9uZSwgUlBNX01pc3NpbmdPYmpmaWxlSGFuZGxlcigpKQorKwor KyAgICAjIEltcGxlbWVudCB0aGUgY29yZSBvZiAnaW5mbyBycG0tc3VnZ2VzdGlvbnMnLiAgUmVw cmludCBhbGwgcnBtCisrICAgICMgc3VnZ2VzdGlvbnMuCisrICAgIGRlZiBpbmZvX3JwbV9zdWdn ZXN0aW9ucygpOgorKyAgICAgICAgZ2xvYmFsIF9fbWlzc2luZ19ycG1zCisrICAgICAgICBnbG9i YWwgX19taXNzaW5nX2J1aWxkX2lkcworKworKyAgICAgICAgaWYgbGVuKF9fbWlzc2luZ19ycG1z KSA9PSAwIGFuZCBsZW4oX19taXNzaW5nX2J1aWxkX2lkcykgPT0gMDoKKysgICAgICAgICAgICBw cmludCgiTm8gUlBNIHN1Z2dlc3Rpb25zIGhhdmUgYmVlbiBtYWRlIHNvIGZhci4iKQorKyAgICAg ICAgICAgIHJldHVybgorKworKyAgICAgICAgaWYgbGVuKF9fbWlzc2luZ19ycG1zKSA+IDA6Cisr ICAgICAgICAgICAgcHJpbnRfcnBtX3N1Z2dlc3Rpb25zKF9fbWlzc2luZ19ycG1zLmtleXMoKSkK KysgICAgICAgIGlmIGxlbihfX21pc3NpbmdfYnVpbGRfaWRzKSA+IDA6CisrICAgICAgICAgICAg cHJpbnRfYnVpbGRfaWRfc3VnZ2VzdGlvbnMoX19taXNzaW5nX2J1aWxkX2lkcy5rZXlzKCkpCisr CisrIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKysjIFRoZSBmb2xsb3dpbmcgY29kZSBpcyBvdXRzaWRlIHRoZSAnZWxz ZScgYmxvY2sgb2YgdGhlIGF0dGVtcHQgdG8gIworKyMgbG9hZCB0aGUgJ3JwbScgbW9kdWxlLiAg Tm90aGluZyBhZnRlciB0aGlzIHBvaW50IGRlcGVuZHMgb24gdGhlICAjCisrIyAncnBtJyBtb2R1 bGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMK KysjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworKworKyMgVGhlICdzZXQgcnBtLXN1Z2dlc3Rpb24nIHByZWZpeCBjb21t YW5kLgorK2NsYXNzIHJwbV9zdWdnZXN0aW9uX3NldF9wcmVmaXgoZ2RiLkNvbW1hbmQpOgorKyAg ICAiIiJQcmVmaXggY29tbWFuZCBmb3IgJ3NldCcgcnBtLXN1Z2dlc3Rpb24gcmVsYXRlZCBjb21t YW5kcy4iIiIKKysKKysgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorKyAgICAgICAgc3VwZXIoKS5f X2luaXRfXygic2V0IHJwbS1zdWdnZXN0aW9uIiwgZ2RiLkNPTU1BTkRfTk9ORSwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgZ2RiLkNPTVBMRVRFX05PTkUsIFRydWUpCisrCisrIyBUaGUgJ3No b3cgcnBtLXN1Z2dlc3Rpb24nIHByZWZpeCBjb21tYW5kLgorK2NsYXNzIHJwbV9zdWdnZXN0aW9u X3Nob3dfcHJlZml4KGdkYi5Db21tYW5kKToKKysgICAgIiIiUHJlZml4IGNvbW1hbmQgZm9yICdz aG93JyBycG0tc3VnZ2VzdGlvbiByZWxhdGVkIGNvbW1hbmRzLiIiIgorKworKyAgICBkZWYgX19p bml0X18oc2VsZik6CisrICAgICAgICBzdXBlcigpLl9faW5pdF9fKCJzaG93IHJwbS1zdWdnZXN0 aW9uIiwgZ2RiLkNPTU1BTkRfTk9ORSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiLkNP TVBMRVRFX05PTkUsIFRydWUpCisrCisrIyBUaGUgJ3NldC9zaG93IHJwbS1zdWdnZXN0aW9uIGVu YWJsZWQnIGNvbW1hbmQuCisrY2xhc3MgcnBtX3N1Z2dlc3Rpb25fZW5hYmxlZChnZGIuUGFyYW1l dGVyKToKKysgICAgIiIiCisrICAgIFdoZW4gJ29uJyBHREIgd2lsbCBzZWFyY2ggZm9yIFJQTVMg dGhhdCBtaWdodCBwcm92aWRlIGFkZGl0aW9uYWwKKysgICAgZGVidWcgaW5mb3JtYXRpb24sIG9y IHByb3ZpZGUgbWlzc2luZyBleGVjdXRhYmxlcyBvciBzaGFyZWQKKysgICAgbGlicmFyaWVzICh3 aGVuIG9wZW5pbmcgYSBjb3JlIGZpbGUpLCBhbmQgd2lsbCBtYWtlIHN1Z2dlc3Rpb25zCisrICAg IGFib3V0IHdoYXQgc2hvdWxkIGJlIGluc3RhbGxlZC4KKysKKysgICAgV2hlbiAnb2ZmJyBHREIg d2lsbCBub3QgbWFrZSB0aGVzZSBzdWdnZXN0aW9ucy4KKysgICAgIiIiCisrCisrICAgIHNldF9k b2MgPSAiU2V0IHdoZXRoZXIgdG8gcGVyZm9ybSBycG0tc3VnZ2VzdGlvbi4iCisrICAgIHNob3df ZG9jID0gIlNob3cgd2hldGhlciBycG0tc3VnZ2VzdGlvbiBpcyBlbmFibGVkLiIKKysKKysgICAg ZGVmIF9faW5pdF9fKHNlbGYpOgorKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygicnBtLXN1Z2dl c3Rpb24gZW5hYmxlZCIsIGdkYi5DT01NQU5EX05PTkUsIGdkYi5QQVJBTV9CT09MRUFOKQorKyAg ICAgICAgc2VsZi52YWx1ZSA9IFRydWUKKysKKysjIFRoZSAnc2V0L3Nob3cgcnBtLXN1Z2dlc3Rp b24gZW5hYmxlZCcgY29tbWFuZC4KKytjbGFzcyBycG1fc3VnZ2VzdGlvbl9idWlsZF9pZF9tb2Rl KGdkYi5QYXJhbWV0ZXIpOgorKyAgICAiIiIKKysgICAgV2hlbiBzZXQgdG8gJ2Zhc3QnICh0aGUg ZGVmYXVsdCksIEdEQiBkb2Vzbid0IHRyeSB0byBtYXAgYSBidWlsZC1pZCB0bworKyAgICBhbiBh Y3R1YWwgUlBNLCBpbnN0ZWFkLCBHREIganVzdCBzdWdnZXN0cyBhIGNvbW1hbmQgYmFzZWQgb24g dGhlCisrICAgIGJ1aWxkLWlkIHdoaWNoIG1pZ2h0IGluc3RhbGwgc29tZSBSUE1zLCBpZiB0aGVy ZSBhcmUgYW55IFJQTXMgdGhhdAorKyAgICBzdXBwbHkgdGhhdCBidWlsZC1pZC4gIEhvd2V2ZXIs IGl0IGlzIGVxdWFsbHkgcG9zc2libGUgdGhhdCB0aGVyZSBhcmUgbm8KKysgICAgc3VpdGFibGUg UlBNcywgYW5kIG5vdGhpbmcgd2lsbCBpbnN0YWxsLiAgVGhpcyBhcHByb2FjaCBoYXMgYWxtb3N0 IHplcm8KKysgICAgb3ZlcmhlYWQuCisrCisrICAgIFdoZW4gc2V0IHRvICdzbG93JywgR0RCIGZp cnN0IGRvZXMgdGhlIGJ1aWxkLWlkIHRvIFJQTSBjaGVjayBpdHNlbGYsIGFuZAorKyAgICBvbmx5 IGlmIHNvbWV0aGluZyBpcyBmb3VuZCBhcmUgUlBNcyBpbnN0YWxsYXRpb24gY29tbWFuZHMgc3Vn Z2VzdGVkLgorKyAgICBUaGUgc3VnZ2VzdGVkIGNvbW1hbmQgd2lsbCBpbmNsdWRlIHRoZSBuYW1l IG9mIHRoZSBSUE0gdG8gaW5zdGFsbC4gIFRoaXMKKysgICAgYXBwcm9hY2ggaXMgY29uc2lkZXJh Ymx5IHNsb3dlciBhcyBxdWVyeWluZyB0aGUgUlBNIGRhdGFiYXNlIGZvciB0aGUgUlBNCisrICAg IHRoYXQgc3VwcGxpZXMgYSBzcGVjaWZpYyBmaWxlIGlzIHNsb3cuCisrICAgICIiIgorKworKyAg ICBzZXRfZG9jID0gIlNldCBob3cgYnVpbGQtaWQgYmFzZWQgcnBtIHN1Z2dlc3Rpb25zIHNob3Vs ZCBiZSBwZXJmb3JtZWQuIgorKyAgICBzaG93X2RvYyA9ICJTaG93IGhvdyBidWlsZC1pZCBiYXNl ZCBycG0gc3VnZ2VzdGlvbnMgc2hvdWQgYmUgcGVyZm9ybWVkLiIKKysKKysgICAgZGVmIF9faW5p dF9fKHNlbGYpOgorKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygicnBtLXN1Z2dlc3Rpb24gYnVp bGQtaWQtbW9kZSIsCisrICAgICAgICAgICAgICAgICAgICAgICAgIGdkYi5DT01NQU5EX05PTkUs IGdkYi5QQVJBTV9FTlVNLCBbImZhc3QiLCAic2xvdyJdKQorKyAgICAgICAgc2VsZi52YWx1ZSA9 ICJmYXN0IgorKworKyAgICBkZWYgZmFzdF9tb2RlKHNlbGYpOgorKyAgICAgICAgcmV0dXJuIHNl bGYudmFsdWUgPT0gImZhc3QiCisrCisrIyBUaGUgJ2luZm8gcnBtLXN1Z2dlc3Rpb25zJyBjb21t YW5kLgorK2NsYXNzIHJwbV9zdWdnZXN0aW9uX2luZm8oZ2RiLkNvbW1hbmQpOgorKyAgICAiIiJS ZWxpc3QgUlBNIHN1Z2dlc3Rpb25zLgorKworKyAgICBSZWxpc3QgYW55IFJQTSBpbnN0YWxsYXRp b24gc3VnZ2VzdGlvbnMgdGhhdCBoYXZlIGJlZW4gbWFkZQorKyAgICBzaW5jZSB0aGUgZXhlY3V0 YWJsZSB3YXMgbGFzdCBjaGFuZ2VkLiIiIgorKyAgICBkZWYgX19pbml0X18oc2VsZik6CisrICAg ICAgICBzdXBlcigpLl9faW5pdF9fKCJpbmZvIHJwbS1zdWdnZXN0aW9ucyIsIGdkYi5DT01NQU5E X05PTkUsIGdkYi5DT01QTEVURV9OT05FKQorKworKyAgICBkZWYgaW52b2tlKHNlbGYsIGFyZ3Ms IGZyb21fdHR5KToKKysgICAgICAgIGlmIGFyZ3MgIT0gIiI6CisrICAgICAgICAgICAgcmFpc2Ug Z2RiLkdkYkVycm9yKCJ1bmV4cGVjdGVkIGFyZ3VtZW50czogJXMiICUgYXJncykKKysKKysgICAg ICAgIGluZm9fcnBtX3N1Z2dlc3Rpb25zICgpCisrCisrCisrIyBDcmVhdGUgdGhlICdzZXQvc2hv dyBycG0tc3VnZ2VzdGlvbicgY29tbWFuZHMuCisrcnBtX3N1Z2dlc3Rpb25fc2V0X3ByZWZpeCgp CisrcnBtX3N1Z2dlc3Rpb25fc2hvd19wcmVmaXgoKQorK3BhcmFtX3JwbV9zdWdnZXN0aW9uX2Vu YWJsZWQgPSBycG1fc3VnZ2VzdGlvbl9lbmFibGVkKCkKKytwYXJhbV9ycG1fc3VnZ2VzdGlvbl9i dWlsZF9pZF9tb2RlID0gcnBtX3N1Z2dlc3Rpb25fYnVpbGRfaWRfbW9kZSgpCisrCisrIyBDcmVh dGUgdGhlICdpbmZvIHJwbS1zdWdnZXN0aW9ucycgY29tbWFuZHMuCisrcnBtX3N1Z2dlc3Rpb25f aW5mbygpCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nY29yZS1idWlsZGlk LWV4ZWMtYnV0LW5vdC1zb2xpYi1saWIuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2NvcmUt YnVpbGRpZC1leGVjLWJ1dC1ub3Qtc29saWItbGliLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0Cist LS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2djb3JlLWJ1aWxkaWQt ZXhlYy1idXQtbm90LXNvbGliLWxpYi5jCitAQCAtMCwwICsxLDIxIEBACisrLyogQ29weXJpZ2h0 IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBmaWxlIGlz IHBhcnQgb2YgR0RCLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAg Ki8KKysKKyt2b2lkCisrbGliICh2b2lkKQorK3sKKyt9CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9nY29yZS1idWlsZGlkLWV4ZWMtYnV0LW5vdC1zb2xpYi1tYWluLmMgYi9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2djb3JlLWJ1aWxkaWQtZXhlYy1idXQtbm90LXNvbGliLW1h aW4uYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvZ2NvcmUtYnVpbGRpZC1leGVjLWJ1dC1ub3Qtc29saWItbWFpbi5jCitA QCAtMCwwICsxLDI1IEBACisrLyogQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCisrCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgorKworKyAgIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysg ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKytleHRlcm4gdm9pZCBsaWIgKHZv aWQpOworKworK2ludAorK21haW4gKHZvaWQpCisreworKyAgbGliICgpOworKyAgcmV0dXJuIDA7 CisrfQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2NvcmUtYnVpbGRpZC1l eGVjLWJ1dC1ub3Qtc29saWIuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nY29yZS1idWls ZGlkLWV4ZWMtYnV0LW5vdC1zb2xpYi5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CistLS0gL2Rl di9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2djb3JlLWJ1aWxkaWQtZXhlYy1i dXQtbm90LXNvbGliLmV4cAorQEAgLTAsMCArMSwxMDQgQEAKKysjIENvcHlyaWdodCAyMDE2IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4KKysKKytyZXF1aXJlIGFsbG93X3NobGliX3Rlc3RzCisrCisrc2V0IHRlc3RmaWxlICJn Y29yZS1idWlsZGlkLWV4ZWMtYnV0LW5vdC1zb2xpYiIKKytzZXQgc3JjbWFpbmZpbGUgJHt0ZXN0 ZmlsZX0tbWFpbi5jCisrc2V0IHNyY2xpYmZpbGUgJHt0ZXN0ZmlsZX0tbGliLmMKKytzZXQgbGli ZmlsZSBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJHt0ZXN0ZmlsZX0tbGliLnNvXQorK3NldCBvYmpm aWxlIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAke3Rlc3RmaWxlfS1tYWluLm9dCisrc2V0IGV4ZWN1 dGFibGUgJHt0ZXN0ZmlsZX0tbWFpbgorK3NldCBiaW5maWxlIFtzdGFuZGFyZF9vdXRwdXRfZmls ZSAke2V4ZWN1dGFibGV9XQorK3NldCBnY29yZWZpbGUgW3N0YW5kYXJkX291dHB1dF9maWxlICR7 ZXhlY3V0YWJsZX0uZ2NvcmVdCisrc2V0IG91dGRpciBbZmlsZSBkaXJuYW1lICRiaW5maWxlXQor KworK2lmIHsgW2dkYl9jb21waWxlX3NobGliICR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNsaWJm aWxlfSAke2xpYmZpbGV9ICJkZWJ1ZyBhZGRpdGlvbmFsX2ZsYWdzPS1XbCwtLWJ1aWxkLWlkIl0g IT0gIiIKKysgICAgIHx8IFtnZGJfY29tcGlsZSAke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjbWFp bmZpbGV9ICR7b2JqZmlsZX0gb2JqZWN0IHtkZWJ1Z31dICE9ICIiIH0geworKyAgICAgdW5zdXBw b3J0ZWQgIi1XbCwtLWJ1aWxkLWlkIGNvbXBpbGF0aW9uIGZhaWxlZCIKKysgICAgIHJldHVybiAt MQorK30KKytzZXQgb3B0cyBbbGlzdCBkZWJ1ZyBzaGxpYj0ke2xpYmZpbGV9ICJhZGRpdGlvbmFs X2ZsYWdzPS1XbCwtLWJ1aWxkLWlkIl0KKytpZiB7IFtnZGJfY29tcGlsZSAke29iamZpbGV9ICR7 YmluZmlsZX0gZXhlY3V0YWJsZSAkb3B0c10gIT0gIiIgfSB7CisrICAgICB1bnN1cHBvcnRlZCAi LVdsLC0tYnVpbGQtaWQgY29tcGlsYXRpb24gZmFpbGVkIgorKyAgICAgcmV0dXJuIC0xCisrfQor KworK2NsZWFuX3Jlc3RhcnQgJGV4ZWN1dGFibGUKKytnZGJfbG9hZF9zaGxpYiAkbGliZmlsZQor KworKyMgRG9lcyB0aGlzIGdkYiBzdXBwb3J0IGdjb3JlPworK3NldCB0ZXN0ICJoZWxwIGdjb3Jl IgorK2dkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKKysgICAgLXJlICJVbmRlZmluZWQg Y29tbWFuZDogLmdjb3JlLipcclxuJGdkYl9wcm9tcHQgJCIgeworKwkjIGdjb3JlIGNvbW1hbmQg bm90IHN1cHBvcnRlZCAtLSBub3RoaW5nIHRvIHRlc3QgaGVyZS4KKysJdW5zdXBwb3J0ZWQgImdk YiBkb2VzIG5vdCBzdXBwb3J0IGdjb3JlIG9uIHRoaXMgdGFyZ2V0IgorKwlyZXR1cm4gLTE7Cisr ICAgIH0KKysgICAgLXJlICJTYXZlIGEgY29yZSBmaWxlIC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsK KysJcGFzcyAkdGVzdAorKyAgICB9CisrfQorKworK2lmIHsgIVtydW50byBsaWJdIH0gdGhlbiB7 CisrICAgIHJldHVybiAtMQorK30KKysKKytzZXQgZXNjYXBlZGZpbGVuYW1lIFtzdHJpbmdfdG9f cmVnZXhwICR7Z2NvcmVmaWxlfV0KKysKKytzZXQgdGVzdCAic2F2ZSBhIGNvcmVmaWxlIgorK2dk Yl90ZXN0X211bHRpcGxlICJnY29yZSAke2djb3JlZmlsZX0iICR0ZXN0IHsKKysgICAgLXJlICJT YXZlZCBjb3JlZmlsZSAke2VzY2FwZWRmaWxlbmFtZX1cclxuJGdkYl9wcm9tcHQgJCIgeworKwlw YXNzICR0ZXN0CisrICAgIH0KKysgICAgLXJlICJDYW4ndCBjcmVhdGUgYSBjb3JlZmlsZVxyXG4k Z2RiX3Byb21wdCAkIiB7CisrCXVuc3VwcG9ydGVkICR0ZXN0CisrCXJldHVybiAtMQorKyAgICB9 CisrfQorKworKyMgTm93IHJlc3RhcnQgZ2RiIGFuZCBsb2FkIHRoZSBjb3JlZmlsZS4KKysKKytj bGVhbl9yZXN0YXJ0ICRleGVjdXRhYmxlCisrZ2RiX2xvYWRfc2hsaWIgJGxpYmZpbGUKKysKKytz ZXQgYnVpbGRpZCBbYnVpbGRfaWRfZGVidWdfZmlsZW5hbWVfZ2V0ICRsaWJmaWxlXQorKworK3Jl Z3N1YiB7XC5kZWJ1ZyR9ICRidWlsZGlkIHt9IGJ1aWxkaWQKKysKKytzZXQgZGVidWdkaXIgW3N0 YW5kYXJkX291dHB1dF9maWxlICR7dGVzdGZpbGV9LWRlYnVnZGlyXQorK2ZpbGUgZGVsZXRlIC1m b3JjZSAtLSAkZGVidWdkaXIKKysKKytmaWxlIG1rZGlyICRkZWJ1Z2Rpci9bZmlsZSBkaXJuYW1l ICRsaWJmaWxlXQorK2ZpbGUgY29weSAkbGliZmlsZSAkZGVidWdkaXIvJHtsaWJmaWxlfQorKwor K2ZpbGUgbWtkaXIgJGRlYnVnZGlyL1tmaWxlIGRpcm5hbWUgJGJ1aWxkaWRdCisrZmlsZSBjb3B5 ICRsaWJmaWxlICRkZWJ1Z2Rpci8ke2J1aWxkaWR9CisrCisrcmVtb3RlX2V4ZWMgYnVpbGQgImxu IC1zIC9saWIgICAgICAgJHtkZWJ1Z2Rpcn0vIgorK3JlbW90ZV9leGVjIGJ1aWxkICJsbiAtcyAv bGliNjQgICAgICR7ZGVidWdkaXJ9LyIKKysjIC91c3IgaXMgbm90IG5lZWRlZCwgYWxsIHRoZSBs aWJzIGFyZSBpbiAvbGliNjQ6IGxpYm0uc28uNiBsaWJjLnNvLjYgbGQtbGludXgteDg2LTY0LnNv LjIKKysKKytnZGJfdGVzdF9ub19vdXRwdXQgInNldCBzb2xpYi1hYnNvbHV0ZS1wcmVmaXggJGRl YnVnZGlyIiBcCisrICAgICJzZXQgc29saWItYWJzb2x1dGUtcHJlZml4IgorKworK2dkYl90ZXN0 X25vX291dHB1dCAic2V0IGRlYnVnLWZpbGUtZGlyZWN0b3J5ICRkZWJ1Z2RpciIgInNldCBkZWJ1 Zy1maWxlLWRpcmVjdG9yeSIKKysKKytnZGJfdGVzdCAiY29yZSAke2djb3JlZmlsZX0iICJDb3Jl IHdhcyBnZW5lcmF0ZWQgYnkgLioiICJyZS1sb2FkIGdlbmVyYXRlZCBjb3JlZmlsZSIKKysKKytn ZGJfdGVzdCAiZnJhbWUiICIjMCBcW15cclxuXF0qIGxpYiAuKiIgImxpYnJhcnkgZ290IGxvYWRl ZCIKKysKKytnZGJfdGVzdCAiYnQiCisrZ2RiX3Rlc3QgImluZm8gc2hhcmVkIgorZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2RiaW5pdC1oaXN0b3J5LmV4cCBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvZ2RiaW5pdC1oaXN0b3J5LmV4cAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9nZGJpbml0LWhpc3RvcnkuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L2dkYmluaXQtaGlzdG9yeS5leHAKK0BAIC0xNzksNyArMTc5LDggQEAgcHJvYyB0ZXN0X2VtcHR5 X2hpc3RvcnlfZmlsZW5hbWUgeyB9IHsKKyAgICAgZ2xvYmFsIGVudgorICAgICBnbG9iYWwgZ2Ri X3Byb21wdAorIAorLSAgICBzZXQgY29tbW9uX2hpc3RvcnkgW2xpc3QgInNldCBoZWlnaHQgMCIg InNldCB3aWR0aCAwIl0KKysgICAgc2V0IGNvbW1vbl9oaXN0b3J5IFtsaXN0ICJzZXQgaGVpZ2h0 IDAiICJzZXQgd2lkdGggMCIgXAorKwkJCSAgICAic2V0IHJwbS1zdWdnZXN0aW9uIGVuYWJsZWQg b2ZmIl0KKyAKKyAgICAgc2V0IHRlc3RfZGlyIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSBoaXN0b3J5 X3Rlc3RdCisgICAgIHJlbW90ZV9leGVjIGhvc3QgIm1rZGlyIC1wICR0ZXN0X2RpciIKK2RpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3JoYno5ODExNTQtbWlzbGVhZGluZy15dW0t aW5zdGFsbC13YXJuaW5nLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvcmhiejk4MTE1NC1t aXNsZWFkaW5nLXl1bS1pbnN0YWxsLXdhcm5pbmcuZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAor LS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9yaGJ6OTgxMTU0LW1p c2xlYWRpbmcteXVtLWluc3RhbGwtd2FybmluZy5leHAKK0BAIC0wLDAgKzEsNjAgQEAKKysjIENv cHlyaWdodCAoQykgMjAxNCAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK KysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworKyMgQ3JlYXRlIGEgY29yZSBmaWxlLCB0aGVu IGhpZGUgdGhlIGV4ZWN1dGFibGUuICBSZXN0YXJ0IEdEQiBhbmQgbG9hZAorKyMgdGhlIGNvcmUg ZmlsZS4gIENoZWNrIEdEQiBnaXZlcyBhIG1lc3NhZ2Ugc3VnZ2VzdGluZyBhICdkbmYnIGNvbW1h bmQKKysjIHRvIHRyeSBhbmQgaW5zdGFsbCB0aGUgZXhlY3V0YWJsZSBiYXNlZCBvbiBpdHMgYnVp bGQtaWQuCisrCisrc3RhbmRhcmRfdGVzdGZpbGUgIm5vcm1hbC5jIgorKworK2lmIHsgW3ByZXBh cmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX1dIH0g eworKyAgICByZXR1cm4gLTEKKyt9CisrCisrIyBHZXQgdGhlIGJ1aWxkLWlkIG9mIHRoZSBmaWxl LgorK3NldCBidWlsZF9pZF9kZWJ1Z19maWxlIFtidWlsZF9pZF9kZWJ1Z19maWxlbmFtZV9nZXQg JGJpbmZpbGVdCisrcmVnc3ViIC1hbGwgIi5kZWJ1ZyQiICRidWlsZF9pZF9kZWJ1Z19maWxlICIi IGJ1aWxkX2lkX3dpdGhvdXRfZGVidWcKKysKKysjIFJ1biB0byBtYWluLgorK2lmIHsgIVtydW50 b19tYWluXSB9IHsKKysgICAgcmV0dXJuIC0xCisrfQorKworKyMgV2UgZmlyc3QgbmVlZCB0byBn ZW5lcmF0ZSBhIGNvcmVmaWxlLgorK3NldCBjb3JlZmlsZW5hbWUgIltzdGFuZGFyZF9vdXRwdXRf ZmlsZSBnY29yZS50ZXN0XSIKKytpZiB7ICFbZ2RiX2djb3JlX2NtZCAiJGNvcmVmaWxlbmFtZSIg InNhdmUgY29yZWZpbGUiXSB9IHsKKysgICAgdW50ZXN0ZWQgImNvdWxkIG5vdCBnZW5lcmF0ZSBh IGNvcmVmaWxlIgorKyAgICByZXR1cm4gLTEKKyt9CisrCisrIyBNb3ZlIHRoZSBiaW5maWxlIHRv IGEgdGVtcG9yYXJ5IG5hbWUuCisrcmVtb3RlX2V4ZWMgYnVpbGQgIm12ICRiaW5maWxlICR7Ymlu ZmlsZX0ub2xkIgorKworKyMgUmVpbml0aWFsaXplIEdEQiBhbmQgc2VlIGlmIHdlIGdldCBhIGRu ZiBzdWdnZXN0aW9uLgorK2NsZWFuX3Jlc3RhcnQKKysKKytnZGJfdGVzdCAic2V0IHJwbS1zdWdn ZXN0aW9uIGVuYWJsZWQgb24iICIiIFwKKysgICAgInR1cm4gb24gcnBtLXN1Z2dlc3Rpb24gZmVh dHVyZSIKKysKKysjIEdEQiBvbmx5IG1ha2VzIGJ1aWxkLWlkIGJhc2VkIFJQTSBzdWdnZXN0aW9u cyBpZiAvdXNyL2xpYiBpcyBpbgorKyMgdGhlIGRlYnVnLWZpbGUtZGlyZWN0b3J5IGxpc3QsIHRo ZSByZWFzb24gYmVpbmcgdGhhdCBzeXN0ZW0gUlBNcworKyMgd2lsbCBhbHdheXMgaW5zdGFsbCB1 bmRlciB0aGlzIGxvY2F0aW9uLiAgSWYgR0RCIGlzIG5vdCBsb29raW5nCisrIyBoZXJlIHRoZW4g dGhlcmUncyBubyBwb2ludCBtYWtpbmcgc3VnZ2VzdGlvbnMuCisrZ2RiX3Rlc3QgInNldCBkZWJ1 Zy1maWxlLWRpcmVjdG9yeSAvdXNyL2xpYi8iICIiIFwKKysgICAgInNldCBkZWJ1Zy1maWxlLWRp cmVjdG9yeSIKKysKKytnZGJfdGVzdCAiY29yZS1maWxlIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSBn Y29yZS50ZXN0XSIgXAorKyAgICAiTWlzc2luZyBmaWxlXFwoc1xcKSwgdHJ5OiBkbmYgLS1lbmFi bGVyZXBvPSdcXCpkZWJ1Z1xcKicgaW5zdGFsbCBbc3RyaW5nX3RvX3JlZ2V4cCAvdXNyL2xpYi8k YnVpbGRfaWRfd2l0aG91dF9kZWJ1Z10gW3N0cmluZ190b19yZWdleHAgL3Vzci9saWIvZGVidWcv JGJ1aWxkX2lkX2RlYnVnX2ZpbGVdIiBcCisrICAgICJ0ZXN0IGZpcnN0IHl1bS9kbmYgd2Fybmlu ZyIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktbWlzc2luZy1kZWJ1 Zy5weSBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1taXNzaW5nLWRlYnVnLnB5CistLS0g YS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktbWlzc2luZy1kZWJ1Zy5weQorKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW1pc3NpbmctZGVidWcucHkKK0BAIC0xOSw2ICsxOSwx MyBAQCBmcm9tIGVudW0gaW1wb3J0IEVudW0KKyBpbXBvcnQgZ2RiCisgZnJvbSBnZGIubWlzc2lu Z19kZWJ1ZyBpbXBvcnQgTWlzc2luZ0RlYnVnSGFuZGxlcgorIAorKyMgVGhpcyBpcyBhIFJIRUwv RmVkb3JhIHdvcmsgYXJvdW5kOiBUaGVyZSdzIGFscmVhZHkgYQorKyMgbWlzc2luZy1kZWJ1Zy1p bmZvIGhhbmRsZXIgcmVnaXN0ZXJlZCBmb3IgdGhlc2UgdmVyc2lvbnMgb2YgR0RCLgorKyMgRGlz Y2FyZCB0aGUgaGFuZGxlciBub3cgc28gdGhhdCB0aGUgdGVzdHMgd2lsbCBwYXNzICh0aGUgdGVz dHMKKysjIGFzc3VtZSBubyBoYW5kbGVyIGlzIGN1cnJlbnRseSByZWdpc3RlcmVkKS4KKytnZGIu bWlzc2luZ19kZWJ1Z19oYW5kbGVycyA9IFtdCisrCisrCisgIyBBIGdsb2JhbCBsb2cgdGhhdCBp cyBmaWxsZWQgaW4gYnkgaW5zdGFuY2VzIG9mIHRoZSBMT0dfSEFORExFUiBjbGFzcworICMgd2hl biB0aGV5IGFyZSBjYWxsZWQuCisgaGFuZGxlcl9jYWxsX2xvZyA9IFtdCitAQCAtMTE4LDQgKzEy NSw3IEBAIGRlZiByZWdpc3RlcihuYW1lLCBsb2N1cz1Ob25lKToKKyByaGFuZGxlciA9IGV4Y2Vw dGlvbl9oYW5kbGVyKCkKKyBoYW5kbGVyX29iaiA9IGhhbmRsZXIoKQorIAorKyMgRGlzY2FyZCB0 aGUgcnBtLXN1Z2dlc3Rpb24gaGFuZGxlci4KKytnZGIubWlzc2luZ19maWxlX2hhbmRsZXJzID0g W10KKysKKyBwcmludCgiU3VjY2VzcyIpCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu cHl0aG9uL3B5LW1pc3Npbmctb2JqZmlsZS5weSBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9w eS1taXNzaW5nLW9iamZpbGUucHkKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1t aXNzaW5nLW9iamZpbGUucHkKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1taXNz aW5nLW9iamZpbGUucHkKK0BAIC0xNjQsNCArMTY0LDcgQEAgZGVmIHJlZ2lzdGVyKG5hbWUsIGxv Y3VzPU5vbmUpOgorIHJoYW5kbGVyID0gZXhjZXB0aW9uX2hhbmRsZXIoKQorIGhhbmRsZXJfb2Jq ID0gaGFuZGxlcigpCisgCisrIyBEaXNjYXJkIHRoZSBycG0tc3VnZ2VzdGlvbiBoYW5kbGVyLgor K2dkYi5taXNzaW5nX2ZpbGVfaGFuZGxlcnMgPSBbXQorKworIHByaW50KCJTdWNjZXNzIikKK2Rp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9saWIv Z2RiLmV4cAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAorKysrIGIvZ2RiL3Rlc3Rz dWl0ZS9saWIvZ2RiLmV4cAorQEAgLTI1NSw3ICsyNTUsOCBAQCBpZiAhW2luZm8gZXhpc3RzIElO VEVSTkFMX0dEQkZMQUdTXSB7CisgCQkgICAiLW54IiBcCisgCQkgICAiLXEiIFwKKyAJCSAgIHst aWV4ICJzZXQgaGVpZ2h0IDAifSBcCistCQkgICB7LWlleCAic2V0IHdpZHRoIDAifV1dCisrCQkg ICB7LWlleCAic2V0IHdpZHRoIDAifSBcCisrCQkgICB7LWlleCAic2V0IHJwbS1zdWdnZXN0aW9u IGVuYWJsZWQgb2ZmIn1dXQorIAorICAgICAjIElmIERFQlVHSU5GT0RfVVJMUyBpcyBzZXQsIGdk YiB3aWxsIHRyeSB0byBkb3dubG9hZCBzb3VyY2VzIGFuZAorICAgICAjIGRlYnVnIGluZm8gZm9y IGYuaS4gc3lzdGVtIGxpYnJhcmllcy4gIFByZXZlbnQgdGhpcy4KK0BAIC0yNjEwLDYgKzI2MTEs MTggQEAgcHJvYyBkZWZhdWx0X2dkYl9zdGFydCB7IH0geworIAl9CisgICAgIH0KKyAKKysgICAg IyBUdXJuIG9mZiB0aGUgbWlzc2luZyBkZWJ1ZyBpbmZvIG1lc3NhZ2VzIGFzIHRoZSB0ZXN0c3Vp dGUgZG9lcworKyAgICAjIG5vdCBleHBlY3QgdGhlbS4KKysgICAgc2VuZF9nZGIgInNldCBycG0t c3VnZ2VzdGlvbiBlbmFibGVkIG9mZlxuIgorKyAgICBnZGJfZXhwZWN0IDEwIHsKKysJLXJlICIk Z2RiX3Byb21wdCAkIiB7CisrCSAgICB2ZXJib3NlICJEaXNhYmxlZCB0aGUgbWlzc2luZyBkZWJ1 ZyBpbmZvIG1lc3NhZ2VzLiIgMgorKwl9CisrCXRpbWVvdXQgeworKwkgICAgd2FybmluZyAiQ291 bGQgbm90IGRpc2FibGUgdGhlIG1pc3NpbmcgZGVidWcgaW5mbyBtZXNzYWdlcy4iCisrCX0KKysg ICAgfQorKworICAgICBnZGJfZGVidWdfaW5pdAorICAgICByZXR1cm4gMAorIH0KK2RpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cCBiL2dkYi90ZXN0c3VpdGUvbGli L21pLXN1cHBvcnQuZXhwCistLS0gYS9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAor KysrIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAKK0BAIC0zMjEsNiArMzIxLDE3 IEBAIHByb2MgZGVmYXVsdF9taV9nZGJfc3RhcnQgeyB7IGZsYWdzIHt9IH0gfSB7CisgCSAgICB3 YXJuaW5nICJDb3VsZG4ndCBzZXQgdGhlIHdpZHRoIHRvIDAuIgorIAl9CisgICAgIH0KKysgICAg IyBUdXJuIG9mZiB0aGUgbWlzc2luZyBkZWJ1ZyBpbmZvIG1lc3NhZ2VzIGFzIHRoZSB0ZXN0c3Vp dGUgZG9lcworKyAgICAjIG5vdCBleHBlY3QgdGhlbS4KKysgICAgc2VuZF9nZGIgIjE5MC1nZGIt c2V0IHJwbS1zdWdnZXN0aW9uIGVuYWJsZWQgb2ZmXG4iCisrICAgIGdkYl9leHBlY3QgMTAgewor KwktcmUgIi4qMTkwLWdkYi1zZXQgcnBtLXN1Z2dlc3Rpb24gZW5hYmxlZCBvZmZcclxuMTkwXFxc XmRvbmVcclxuJG1pX2dkYl9wcm9tcHQkIiB7CisrCSAgICB2ZXJib3NlICJEaXNhYmxlZCB0aGUg bWlzc2luZyBkZWJ1ZyBpbmZvIG1lc3NhZ2VzLiIgMgorKwl9CisrCXRpbWVvdXQgeworKwkgICAg d2FybmluZyAiQ291bGQgbm90IGRpc2FibGUgdGhlIG1pc3NpbmcgZGVidWcgaW5mbyBtZXNzYWdl cy4iCisrCX0KKysgICAgfQorIAorICAgICBpZiB7ICRzZXBhcmF0ZV9pbmZlcmlvcl9wdHkgfSB7 CisgCW1pX2NyZWF0ZV9pbmZlcmlvcl9wdHkKCmRpZmYgLS1naXQgYS9nZGItdGVzdC1zaG93LXZl cnNpb24ucGF0Y2ggYi9nZGItdGVzdC1zaG93LXZlcnNpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uZmVlZTM4ZQotLS0gL2Rldi9udWxsCisrKyBiL2dkYi10ZXN0 LXNob3ctdmVyc2lvbi5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIEZFRE9SQV9QQVRDSEVT IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmV3IEJ1cmdlc3MgPGFidXJnZXNz QHJlZGhhdC5jb20+CitEYXRlOiBGcmksIDI3IE9jdCAyMDE3IDIxOjA3OjUwICswMjAwCitTdWJq ZWN0OiBnZGItdGVzdC1zaG93LXZlcnNpb24ucGF0Y2gKKworOzsgQ2hlY2sgZGlzdHJvIG5hbWUg aXMgaW5jbHVkZWQgaW4gdGhlIHZlcnNpb24gb3V0cHV0LgorCitkaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9mZWRvcmEtdmVyc2lvbi5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2ZlZG9yYS12ZXJzaW9uLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKKy0tLSAvZGV2L251 bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZmVkb3JhLXZlcnNpb24uZXhwCitAQCAt MCwwICsxLDIyIEBACisrIyBDb3B5cmlnaHQgMjAyMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysj IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrIyBTdGFydCB3aXRo IGEgZnJlc2ggZ2RiCisrY2xlYW5fcmVzdGFydAorKworKyMgQ2hlY2sgdGhlIHZlcnNpb24gc3Ry aW5nIGNvbnRhaW5zIGVpdGhlciB0aGUgRmVkb3JhIG9yIFJIRUwgZGlzdHJvCisrIyBuYW1lLCBh bmQgdGhhdCB0aGUgdmVyc2lvbiBudW1iZXIgbG9va3Mgcm91Z2hseSBjb3JyZWN0IGluIGZvcm1h dC4KKytnZGJfdGVzdCAic2hvdyB2ZXJzaW9uIiBcCisrICAgICJHTlUgZ2RiIFxcKChGZWRvcmEg TGludXh8UmVkIEhhdCBFbnRlcnByaXNlIExpbnV4KVxcKSBcWzAtOVxdK1xcLlxbMC05XF0rLVxb MC05XF0rLioiCgpkaWZmIC0tZ2l0IGEvZ2RiLnNwZWMgYi9nZGIuc3BlYwppbmRleCA5M2JmZDM4 Li5lODRlNmVlIDEwMDY0NAotLS0gYS9nZGIuc3BlYworKysgYi9nZGIuc3BlYwpAQCAtOTM3LDYg KzkzNywxMyBAQCBmaQogCiAlY2hhbmdlbG9nCiAqIFR1ZSBKdW4gMDMgMjAyNSBBbmRyZXcgQnVy Z2VzcyA8YWJ1cmdlc3NAcmVkaGF0LmNvbT4KKy0gUmVuYW1lICdnZGItYWRkLXJwbS1zdWdnZXN0 aW9uLXNjcmlwdC5wYXRjaCcgdG8KKyAgJ2dkYi1ycG0tc3VnZ2VzdGlvbi1zY3JpcHQucGF0Y2gn IGFuZAorICAnZ2RiLTYuMy1yaC10ZXN0dmVyc2lvbi0yMDA0MTIwMi5wYXRjaCcgdG8KKyAgJ2dk Yi10ZXN0LXNob3ctdmVyc2lvbi5wYXRjaCcuICBUaGUgbmV3IG5hbWVzIGJldHRlciByZWZsZWN0 IHRoZQorICBwYXRjaCBjb250ZW50cy4KKworKiBUdWUgSnVuIDAzIDIwMjUgQW5kcmV3IEJ1cmdl c3MgPGFidXJnZXNzQHJlZGhhdC5jb20+CiAtIFJlbW92ZSBnZGItYXJjaGVyLW5leHQtb3Zlci10 aHJvdy1jeHgtZXhlYy5wYXRjaCwgd2Ugbm93IGhhdmUKICAgdXBzdHJlYW0gY29tbWl0IGQ0NjI1 NTBjOTFjLgogCg==