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] gdb-17.2-rebase-f44: rename two of the patch files Date: Sun, 28 Jun 2026 00:02:15 GMT Message-ID: <178260493556.1.13192544990099379139.rpms-gdb-152468cce99e@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: 152468cce99ebd78a392c2392a8334729e390e44 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGdkYi0xNy4yLXJlYmFzZS1mNDQK ICAgICAgICAgICAgQ29tbWl0IDogMTUyNDY4Y2NlOTllYmQ3OGEzOTJjMjM5MmE4MzM0NzI5ZTM5 MGU0NAogICAgICAgICAgICBBdXRob3IgOiBBbmRyZXcgQnVyZ2VzcyA8YWJ1cmdlc3NAcmVkaGF0 LmNvbT4KICAgICAgICAgICAgRGF0ZSAgIDogMjAyNS0wNi0wM1QyMjowOTozNCswMTowMAogICAg ICAgICAgICBTdGF0cyAgOiArMTA1Ni8tMTA0OSBpbiA3IGZpbGUocykKICAgICAgICAgICAgVVJM ICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9nZGIvYy8xNTI0NjhjY2U5 OWViZDc4YTM5MmMyMzkyYTgzMzQ3MjllMzkwZTQ0P2JyYW5jaD1nZGItMTcuMi1yZWJhc2UtZjQ0 CgogICAgICAgICAgICBMb2c6CiAgICAgICAgICAgIHJlbmFtZSB0d28gb2YgdGhlIHBhdGNoIGZp bGVzCgpSZW5hbWUgJ2dkYi1hZGQtcnBtLXN1Z2dlc3Rpb24tc2NyaXB0LnBhdGNoJyB0bwonZ2Ri LXJwbS1zdWdnZXN0aW9uLXNjcmlwdC5wYXRjaCcgYW5kCidnZGItNi4zLXJoLXRlc3R2ZXJzaW9u LTIwMDQxMjAyLnBhdGNoJyB0bwonZ2RiLXRlc3Qtc2hvdy12ZXJzaW9uLnBhdGNoJy4gIFRoZSBu ZXcgbmFtZXMgYmV0dGVyIHJlZmxlY3QgdGhlIHBhdGNoCmNvbnRlbnRzLgoKTm9uZSBvZiB0aGUg cGF0Y2ggY29udGVudHMgaGF2ZSBjaGFuZ2VkLgoKVGhlcmUgc2hvdWxkIGJlIG5vIGNoYW5nZXMg aW4gZmluYWwgR0RCIHNvdXJjZSB0cmVlIGFmdGVyIHRoaXMgY29tbWl0LgoKLS0tCmRpZmYgLS1n aXQgYS9fZ2RiLnNwZWMuUGF0Y2guaW5jbHVkZSBiL19nZGIuc3BlYy5QYXRjaC5pbmNsdWRlCmlu ZGV4IGY3MjViYjAuLjQwMDUxMzQgMTAwNjQ0Ci0tLSBhL19nZGIuc3BlYy5QYXRjaC5pbmNsdWRl CisrKyBiL19nZGIuc3BlYy5QYXRjaC5pbmNsdWRlCkBAIC0xLDUgKzEsNSBAQAogIyBDaGVjayBk aXN0cm8gbmFtZSBpcyBpbmNsdWRlZCBpbiB0aGUgdmVyc2lvbiBvdXRwdXQuCi1QYXRjaDAwMTog Z2RiLTYuMy1yaC10ZXN0dmVyc2lvbi0yMDA0MTIwMi5wYXRjaAorUGF0Y2gwMDE6IGdkYi10ZXN0 LXNob3ctdmVyc2lvbi5wYXRjaAogCiAjIFVwZGF0ZSBnZGItYWRkLWluZGV4LnNoIHN1Y2ggdGhh dCwgd2hlbiB0aGUgR0RCIGVudmlyb25tZW50CiAjIHZhcmlhYmxlIGlzIG5vdCBzZXQsIHRoZSBz Y3JpcHQgaXMgc21hcnRlciB0aGFuIGp1c3QgbG9va2luZyBmb3IKQEAgLTE3LDcgKzE3LDcgQEAg UGF0Y2gwMDI6IGdkYi1hZGQtaW5kZXgucGF0Y2gKIAogIyBOb3QgYSBiYWNrcG9ydC4gIEFkZCBh IG5ldyBzY3JpcHQgd2hpY2ggaG9va3MgaW50byBHREIgYW5kIHN1Z2dlc3RzCiAjIFJQTXMgdG8g aW5zdGFsbCB3aGVuIEdEQiBmaW5kcyBhbiBvYmpmaWxlIHdpdGggbm8gZGVidWcgaW5mby4KLVBh dGNoMDAzOiBnZGItYWRkLXJwbS1zdWdnZXN0aW9uLXNjcmlwdC5wYXRjaAorUGF0Y2gwMDM6IGdk Yi1ycG0tc3VnZ2VzdGlvbi1zY3JpcHQucGF0Y2gKIAogIyBCYWNrcG9ydCAiRml4IGFub3RoZXIg dGltZW91dCBpbiBnZGIuYmFzZS9iZy1leGVjdXRpb24tcmVwZWF0LmV4cCIKIFBhdGNoMDA0OiBn ZGItZml4LWJnLWV4ZWN1dGlvbi1yZXBlYXQucGF0Y2gKCmRpZmYgLS1naXQgYS9fcGF0Y2hfb3Jk ZXIgYi9fcGF0Y2hfb3JkZXIKaW5kZXggMjk1ZDRhZS4uODEwM2Y2NiAxMDA2NDQKLS0tIGEvX3Bh dGNoX29yZGVyCisrKyBiL19wYXRjaF9vcmRlcgpAQCAtMSw0ICsxLDQgQEAKLWdkYi02LjMtcmgt dGVzdHZlcnNpb24tMjAwNDEyMDIucGF0Y2gKK2dkYi10ZXN0LXNob3ctdmVyc2lvbi5wYXRjaAog Z2RiLWFkZC1pbmRleC5wYXRjaAotZ2RiLWFkZC1ycG0tc3VnZ2VzdGlvbi1zY3JpcHQucGF0Y2gK K2dkYi1ycG0tc3VnZ2VzdGlvbi1zY3JpcHQucGF0Y2gKIGdkYi1maXgtYmctZXhlY3V0aW9uLXJl cGVhdC5wYXRjaAoKZGlmZiAtLWdpdCBhL2dkYi02LjMtcmgtdGVzdHZlcnNpb24tMjAwNDEyMDIu cGF0Y2ggYi9nZGItNi4zLXJoLXRlc3R2ZXJzaW9uLTIwMDQxMjAyLnBhdGNoCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCA1OTEzMmJmLi4wMDAwMDAwCi0tLSBhL2dkYi02LjMtcmgtdGVz dHZlcnNpb24tMjAwNDEyMDIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1G cm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmV3 IEJ1cmdlc3MgPGFidXJnZXNzQHJlZGhhdC5jb20+Ci1EYXRlOiBGcmksIDI3IE9jdCAyMDE3IDIx OjA3OjUwICswMjAwCi1TdWJqZWN0OiBnZGItNi4zLXJoLXRlc3R2ZXJzaW9uLTIwMDQxMjAyLnBh dGNoCi0KLTs7IENoZWNrIGRpc3RybyBuYW1lIGlzIGluY2x1ZGVkIGluIHRoZSB2ZXJzaW9uIG91 dHB1dC4KLQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZmVkb3JhLXZlcnNp b24uZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9mZWRvcmEtdmVyc2lvbi5leHAKLW5ldyBm aWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2ZlZG9yYS12ZXJzaW9uLmV4cAotQEAgLTAsMCArMSwyMiBAQAotKyMgQ29weXJpZ2h0IDIw MjMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgotKwotKyMgU3RhcnQgd2l0aCBhIGZyZXNoIGdkYgotK2NsZWFuX3Jlc3RhcnQK LSsKLSsjIENoZWNrIHRoZSB2ZXJzaW9uIHN0cmluZyBjb250YWlucyBlaXRoZXIgdGhlIEZlZG9y YSBvciBSSEVMIGRpc3RybwotKyMgbmFtZSwgYW5kIHRoYXQgdGhlIHZlcnNpb24gbnVtYmVyIGxv b2tzIHJvdWdobHkgY29ycmVjdCBpbiBmb3JtYXQuCi0rZ2RiX3Rlc3QgInNob3cgdmVyc2lvbiIg XAotKyAgICAiR05VIGdkYiBcXCgoRmVkb3JhIExpbnV4fFJlZCBIYXQgRW50ZXJwcmlzZSBMaW51 eClcXCkgXFswLTlcXStcXC5cWzAtOVxdKy1cWzAtOVxdKy4qIgoKZGlmZiAtLWdpdCBhL2dkYi1h ZGQtcnBtLXN1Z2dlc3Rpb24tc2NyaXB0LnBhdGNoIGIvZ2RiLWFkZC1ycG0tc3VnZ2VzdGlvbi1z Y3JpcHQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwMTBmYjguLjAwMDAw MDAKLS0tIGEvZ2RiLWFkZC1ycG0tc3VnZ2VzdGlvbi1zY3JpcHQucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSwxMDExICswLDAgQEAKLUZyb20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCi1Gcm9tOiBBbmRyZXcgQnVyZ2VzcyA8YWJ1cmdlc3NAcmVkaGF0LmNvbT4KLURh dGU6IFRodSwgNyBNYXIgMjAyNCAxNToxNDoyMyArMDAwMAotU3ViamVjdDogZ2RiLWFkZC1ycG0t c3VnZ2VzdGlvbi1zY3JpcHQucGF0Y2gKLQotOzsgTm90IGEgYmFja3BvcnQuICBBZGQgYSBuZXcg c2NyaXB0IHdoaWNoIGhvb2tzIGludG8gR0RCIGFuZCBzdWdnZXN0cwotOzsgUlBNcyB0byBpbnN0 YWxsIHdoZW4gR0RCIGZpbmRzIGFuIG9iamZpbGUgd2l0aCBubyBkZWJ1ZyBpbmZvLgotCi1nZGI6 IGFkZCBzY3JpcHQgd2hpY2ggd2lsbCBzdWdnZXN0IGRlYnVnaW5mbyBSUE1zIHRvIGluc3RhbGwK LQotVGhpcyBzY3JpcHQgaG9va3MgaW50byBHREIncyBtaXNzaW5nIGRlYnVnIGluZm8gUHl0aG9u IEFQSSBhbmQKLXN1Z2dlc3RzIGRlYnVnaW5mbyBSUE1zIHRvIGluc3RhbGwuCi0KLWRpZmYgLS1n aXQgYS9nZGIvZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUuaW4gYi9nZGIvZGF0YS1kaXJlY3Rvcnkv TWFrZWZpbGUuaW4KLS0tLSBhL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbgotKysrIGIv Z2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCi1AQCAtOTIsNiArOTIsNyBAQCBQWVRIT05f RklMRV9MSVNUID0gXAotIAlnZGIvY29tbWFuZC9taXNzaW5nX2ZpbGVzLnB5IFwKLSAJZ2RiL2Nv bW1hbmQvcHJldHR5X3ByaW50ZXJzLnB5IFwKLSAJZ2RiL2NvbW1hbmQvcHJvbXB0LnB5IFwKLSsJ Z2RiL2NvbW1hbmQvcnBtLXN1Z2dlc3Rpb25zLnB5IFwKLSAJZ2RiL2NvbW1hbmQvdHlwZV9wcmlu dGVycy5weSBcCi0gCWdkYi9jb21tYW5kL3Vud2luZGVycy5weSBcCi0gCWdkYi9jb21tYW5kL3ht ZXRob2RzLnB5IFwKLWRpZmYgLS1naXQgYS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIvZ2RiL2RvYy9n ZGIudGV4aW5mbwotLS0tIGEvZ2RiL2RvYy9nZGIudGV4aW5mbwotKysrIGIvZ2RiL2RvYy9nZGIu dGV4aW5mbwotQEAgLTE4Niw2ICsxODYsNyBAQCBzb2Z0d2FyZSBpbiBnZW5lcmFsLiAgV2Ugd2ls bCBtaXNzIGhpbS4KLSAqIFRyYWNlIEZpbGUgRm9ybWF0OjoJCUB2YWx1ZXtHREJOfSB0cmFjZSBm aWxlIGZvcm1hdAotICogSW5kZXggU2VjdGlvbiBGb3JtYXQ6OiAgICAgICAgLmdkYl9pbmRleCBz ZWN0aW9uIGZvcm1hdAotICogRGVidWdpbmZvZDo6ICAgICAgICAgICAgICAgICAgRG93bmxvYWQg ZGVidWdnaW5nIHJlc291cmNlcyB3aXRoIEBjb2Rle2RlYnVnaW5mb2R9Ci0rKiBSUE0gU3VnZ2Vz dGlvbnM6OgkJUlBNIFN1Z2dlc3Rpb25zIGZyb20gR0RCCi0gKiBNYW4gUGFnZXM6OiAgICAgICAg ICAgICAgICAgICBNYW51YWwgcGFnZXMKLSAqIENvcHlpbmc6OiAgICAgICAgICAgICAgICAgICAg IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHNheXMKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGhvdyB5b3UgY2FuIGNvcHkgYW5kIHNoYXJlIEB2YWx1ZXtHREJOfQotQEAgLTUw NTg4LDYgKzUwNTg5LDExMSBAQCBTaG93IHRoZSBjdXJyZW50IHZlcmJvc2l0eSBzZXR0aW5nLgot IAotIEBlbmQgdGFibGUKLSAKLStAbm9kZSBSUE0gU3VnZ2VzdGlvbnMKLStAYXBwZW5kaXggUmVj ZWl2aW5nIFJQTSBpbnN0YWxsYXRpb24gc3VnZ2VzdGlvbnMKLStAY2luZGV4IHJwbSBzdWdnZXN0 aW9ucwotKwotK1doZW4gQHZhbHVle0dEQk59IGxvYWRzIGFuIGV4ZWN1dGFibGUsIG9yIHNoYXJl ZCBsaWJyYXJ5LCBhbmQgY2Fubm90Ci0rZmluZCB0aGUgY29ycmVzcG9uZGluZyBkZWJ1ZyBpbmZv cm1hdGlvbiwgQHZhbHVle0dEQk59IHdpbGwgY2hlY2sgdG8KLStzZWUgaWYgYW4gUlBNIGlzIGF2 YWlsYWJsZSB3aGljaCBjb3VsZCBwcm92aWRlIHRoZSBtaXNzaW5nIGRlYnVnCi0raW5mb3JtYXRp b24uICBJZiBhIHN1aXRhYmxlIFJQTSBpcyBmb3VuZCB0aGVuIEB2YWx1ZXtHREJOfSB3aWxsIHBy aW50Ci0rYSBoaW50IGJlZm9yZSB0aGUgbmV4dCBwcm9tcHQgaXMgZGlzcGxheWVkOgotKwotK0Bz bWFsbGV4YW1wbGUKLSsoQHZhbHVle0dEQlB9KSBmaWxlIC9iaW4vbHMKLStSZWFkaW5nIHN5bWJv bHMgZnJvbSAvYmluL2xzLi4uCi0rUmVhZGluZyBzeW1ib2xzIGZyb20gLmdudV9kZWJ1Z2RhdGEg Zm9yIC91c3IvYmluL2xzLi4uCi0rKE5vIGRlYnVnZ2luZyBzeW1ib2xzIGZvdW5kIGluIC5nbnVf ZGVidWdkYXRhIGZvciAvdXNyL2Jpbi9scykKLStNaXNzaW5nIHJwbXMsIHRyeTogZG5mIC0tZW5h YmxlcmVwbz0nKmRlYnVnKicgaW5zdGFsbCBjb3JldXRpbHMtZGVidWdpbmZvLTkuMy03LmZjMzku eDg2XzY0Ci0rKEB2YWx1ZXtHREJQfSkKLStAZW5kIHNtYWxsZXhhbXBsZQotKwotK0luIHRoaXMg Y2FzZSwgaW5zdGFsbGluZyBAZmlsZXtjb3JldXRpbHMtZGVidWdpbmZvLTkuMy03LmZjMzkueDg2 XzY0fQotK3dpbGwgcHJvdmlkZSB0aGUgbWlzc2luZyBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3IgQGZp bGV7L2Jpbi9sc30uICBJdCBpcwotK3VwIHRvIHlvdSB0byBpbnN0YWxsIHRoZSBzdWdnZXN0ZWQg cGFja2FnZSwgaWYgcG9zc2libGUsIGFuZCBhZnRlcgotK3RoYXQgcmVsb2FkIHRoZSBleGVjdXRh YmxlIGluIEB2YWx1ZXtHREJOfSBzbyB0aGF0IHRoZSBuZXdseSBpbnN0YWxsZWQKLStkZWJ1ZyBp bmZvcm1hdGlvbiBjYW4gYmUgZm91bmQuCi0rCi0rVGhlIFJQTSBzdWdnZXN0aW9uIGZlYXR1cmUg Y2FuIGJlIGRpc2FibGVkOgotKwotK0B0YWJsZSBAY29kZQotK0BraW5kZXggc2V0IHJwbS1zdWdn ZXN0aW9uIGVuYWJsZWQKLStAa2luZGV4IHNob3cgcnBtLXN1Z2dlc3Rpb24gZW5hYmxlZAotK0Bj aW5kZXggcnBtIHN1Z2dlc3Rpb25zLCBkaXNhYmxpbmcKLStAaXRlbSBzZXQgcnBtLXN1Z2dlc3Rp b24gZW5hYmxlZCBAcntbfW9uQHJ7fH1vZmZAcntdfQotK0BpdGVteCBzaG93IHJwbS1zdWdnZXN0 aW9uIGVuYWJsZWQKLStXaGVuIEBzYW1we29ufSBAdmFsdWV7R0RCTn0gd2lsbCBtYWtlIFJQTSBz dWdnZXN0aW9ucyB3aGVyZSBwb3NzaWJsZS4KLStXaGVuIEBzYW1we29mZn0gYWxsIFJQTSBzdWdn ZXN0aW9uIHdpbGwgYmUgZGlzYWJsZWQuCi0rQGVuZCB0YWJsZQotKwotK1doZW4gb3BlbmluZyBh IGNvcmUgZmlsZSAoQHB4cmVme2NvcmUtZmlsZSBjb21tYW5kfSksIGl0IG1heSBiZSB0aGUKLStj YXNlIHRoYXQgbm90IG9ubHkgaXMgdGhlIGRlYnVnIGluZm9ybWF0aW9uIG1pc3NpbmcsIGJ1dCB0 aGUKLStjb3JyZXNwb25kaW5nIGV4ZWN1dGFibGUgaXRzZWxmIGlzIG1pc3NpbmcuICBGb3IgZXhh bXBsZSwgaWYgYSBjb3JlCi0rZmlsZSBpcyBjb3BpZWQgZnJvbSBvbmUgbWFjaGluZSB0byBhbm90 aGVyIGluIG9yZGVyIHRvIGRlYnVnLgotKwotK0luIHRoaXMgY2FzZSBAdmFsdWV7R0RCTn0gaXMg YWJsZSB0byBzdWdnZXN0IGEgY29tbWFuZCB3aGljaCB3aWxsCi0raW5zdGFsbCB0aGUgbWlzc2lu ZyBleGVjdXRhYmxlIGJhc2VkIG9uIHRoZSBidWlsZC1pZCBvZiB0aGUKLStleGVjdXRhYmxlLiAg Rm9yIGV4YW1wbGU6Ci0rCi0rQHNtYWxsZXhhbXBsZQotKyhAdmFsdWV7R0RCUH0pIGNvcmUtZmls ZSAvdG1wL2NvcmUuNTQ4OQotK3dhcm5pbmc6IENhbid0IG9wZW4gZmlsZSAvdXNyL2Jpbi9zbCBk dXJpbmcgZmlsZS1iYWNrZWQgbWFwcGluZyBub3RlIHByb2Nlc3NpbmcKLStbTmV3IExXUCA1NDg5 XQotK0NvcmUgd2FzIGdlbmVyYXRlZCBieSBgc2wnLgotK1Byb2dyYW0gdGVybWluYXRlZCB3aXRo IHNpZ25hbCBTSUdRVUlULCBRdWl0LgotKyMwICAweDAwMDA3ZjFiNDFjZWQxYTcgaW4gPz8gKCkK LStNaXNzaW5nIGZpbGUocyksIHRyeTogZG5mIC0tZW5hYmxlcmVwbz0nKmRlYnVnKicgaW5zdGFs bCAvdXNyL2xpYi8uYnVpbGQtaWQvMzMvMmYxYThlNTY2OTM5NjBlM2JlYjJkNzBjZDc5ZGRmZWM0 NTFjYzMgL3Vzci9saWIvZGVidWcvLmJ1aWxkLWlkLzMzLzJmMWE4ZTU2NjkzOTYwZTNiZWIyZDcw Y2Q3OWRkZmVjNDUxY2MzLmRlYnVnCi0rKEB2YWx1ZXtHREJQfSkKLStAZW5kIHNtYWxsZXhhbXBs ZQotKwotK1RoZSBjb3JlIGZpbGUgd2FzIGdlbmVyYXRlZCBmcm9tIHRoZSBAZmlsZXsvdXNyL2Jp bi9zbH0gYmluYXJ5LCB3aGljaAotK2lzIG5vdCBwcmVzZW50IG9uIHRoZSBtYWNoaW5lIG9wZW5p bmcgdGhlIGNvcmUgZmlsZS4gIEB2YWx1ZXtHREJOfSBoYXMKLStzdWdnZXN0ZWQgYSBjb21tYW5k LCBiYXNlZCBvbiB0aGUgYnVpbGQtaWQgb2YgdGhlIGJpbmFyeSwgd2hpY2ggd2FzCi0rZXh0cmFj dGVkIGZyb20gdGhlIGNvcmUgZmlsZSwgdGhhdCB3b3VsZCBpbnN0YWxsIGJvdGggdGhlIG1pc3Np bmcKLStiaW5hcnksIGFuZCB0aGUgY29ycmVzcG9uZGluZyBkZWJ1ZyBpbmZvcm1hdGlvbi4KLSsK LStVbmZvcnR1bmF0ZWx5LCBAdmFsdWV7R0RCTn0gZG9lc24ndCBrbm93IGlmIHRoZSBzdWdnZXN0 ZWQgY29tbWFuZCB3aWxsCi0rYWN0dWFsbHkgZmluZCBhIG1hdGNoaW5nIFJQTSBvciBub3QuICBR dWVyeWluZyB0aGUgUlBNIGRhdGFiYXNlIHRvIHNlZQotK3doaWNoIHBhY2thZ2VzLCBpZiBhbnks IHdpbGwgcHJvdmlkZSBhIGZpbGUgd2l0aCB0aGUgZ2l2ZW4gYnVpbGQtaWQsCi0raXMgcmF0aGVy IHNsb3cuICBBcyBAZmlsZXsvdXNyL2Jpbi9zbH0gaXMgYXZhaWxhYmxlIGluIGFuIFJQTSwgdGhl bgotK3RoZSBhYm92ZSBjb21tYW5kIHdpbGwgc3VjY2VlZC4KLSsKLStJdCBpcyBwb3NzaWJsZSB0 byBoYXZlIEB2YWx1ZXtHREJOfSBjaGVjayB0byBzZWUgaWYgdGhlcmUgaXMgYSBwYWNrYWdlCi0r YXZhaWxhYmxlIGJlZm9yZSBtYWtpbmcgdGhlIHN1Z2dlc3Rpb24sIGJ1dCB0aGlzIGlzIHNpZ25p ZmljYW50bHkKLStzbG93ZXIuICBUbyBlbmFibGUgdGhpcyBtb2RlIHVzZSB0aGUgZm9sbG93aW5n IGNvbW1hbmQ6Ci0rCi0rQHRhYmxlIEBjb2RlCi0rQGtpbmRleCBzZXQgcnBtLXN1Z2dlc3Rpb24g YnVpbGQtaWQtbW9kZQotK0BraW5kZXggc2hvdyBycG0tc3VnZ2VzdGlvbiBidWlsZC1pZC1tb2Rl Ci0rQGNpbmRleCBycG0gc3VnZ2VzdGlvbnMsIGJ1aWxkLWlkLW1vZGUKLStAaXRlbSBzZXQgcnBt LXN1Z2dlc3Rpb24gYnVpbGQtaWQtbW9kZSBAcntbfWZhc3RAcnt8fXNsb3dAcntdfQotK0BpdGVt eCBzaG93IHJwbS1zdWdnZXN0aW9uIGJ1aWxkLWlkLW1vZGUKLStXaGVuIHNldCB0byBAc2FtcHtm YXN0fSwgd2hpY2ggaXMgdGhlIGRlZmF1bHQsIEB2YWx1ZXtHREJOfSB3aWxsIG9mZmVyCi0rc3Vn Z2VzdGlvbnMgYmFzZWQgb24gdGhlIGJ1aWxkLWlkIG9mIGFueSBtaXNzaW5nIGV4ZWN1dGFibGVz IG9yIHNoYXJlZAotK2xpYnJhcmllcyB3aGlsZSBvcGVuaW5nIGEgY29yZSBmaWxlLiAgVGhpcyBp cyBmYXN0LCBidXQgQHZhbHVle0dEQk59Ci0raGFzIG5vdCBjaGVja2VkIGlmIHRoZXJlIGlzIGEg cGFja2FnZSBhdmFpbGFibGUgdGhhdCBjYW4gc3VwcGx5IHRoZQotK3JlcXVpcmVkIGZpbGUsIHNv IHJ1bm5pbmcgdGhlIHN1Z2dlc3RlZCBjb21tYW5kIG1pZ2h0IG5vdCBpbnN0YWxsIGFueQotK3Bh Y2thZ2VzLgotKwotK1doZW4gc2V0IHRvIEBzYW1we3Nsb3d9LCBlYWNoIHRpbWUgQHZhbHVle0dE Qk59IGVuY291bnRlcnMgYW4KLStleGVjdXRhYmxlLCBvciBzaGFyZWQgbGlicmFyeSwgdGhhdCBp cyBtaXNzaW5nLCBAdmFsdWV7R0RCTn0gd2lsbAotK2NoZWNrIHRvIHNlZSBpZiB0aGVyZSBpcyBh biBSUE0gYXZhaWxhYmxlIHRoYXQgd2lsbCBzdXBwbHkgdGhlIG1pc3NpbmcKLStiaW5hcnkuICBJ ZiBhIHN1aXRhYmxlIFJQTSBpcyBmb3VuZCB0aGVuIEB2YWx1ZXtHREJOfSB3aWxsIG9mZmVyIGEK LStjb21tYW5kIHdoaWNoIHdpbGwgaW5zdGFsbCB0aGUgbWlzc2luZyBSUE0uICBJZiBubyBzdWl0 YWJsZSBSUE0gaXMKLStmb3VuZCB0aGVuIEB2YWx1ZXtHREJOfSB3aWxsIG1ha2Ugbm8gc3VnZ2Vz dGlvbnMuCi0rQGVuZCB0YWJsZQotKwotK0l0IGlzIHBvc3NpYmxlIHRvIHJldmlldyBhbGwgb2Yg dGhlIHByZXZpb3VzIFJQTSBzdWdnZXN0aW9ucyB0aGF0Ci0rQHZhbHVle0dEQk59IGhhcyBtYWRl IHVzaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSsKLStAdGFibGUgQGNvZGUKLStAa2luZGV4 IGluZm8gcnBtLXN1Z2dlc3Rpb25zCi0rQGNpbmRleCBycG0gc3VnZ2VzdGlvbnMsIGxpc3RpbmcK LStAaXRlbSBpbmZvIHJwbS1zdWdnZXN0aW9ucwotK0xpc3QgYWxsIG9mIHRoZSBSUE0gc3VnZ2Vz dGlvbnMgQHZhbHVle0dEQk59IGhhcyBtYWRlIHNpbmNlIHRoZQotK2V4ZWN1dGFibGUgd2FzIGxh c3QgY2hhbmdlZC4KLStAZW5kIHRhYmxlCi0rCi0gQG5vZGUgTWFuIFBhZ2VzCi0gQGFwcGVuZGl4 IE1hbnVhbCBwYWdlcwotIEBjaW5kZXggTWFuIHBhZ2VzCi1kaWZmIC0tZ2l0IGEvZ2RiL3B5dGhv bi9saWIvZ2RiL2NvbW1hbmQvcnBtLXN1Z2dlc3Rpb25zLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2Ri L2NvbW1hbmQvcnBtLXN1Z2dlc3Rpb25zLnB5Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9k ZXYvbnVsbAotKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvcnBtLXN1Z2dlc3Rpb25z LnB5Ci1AQCAtMCwwICsxLDUyNyBAQAotKyMgQ29weXJpZ2h0IDIwMjMgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK2lt cG9ydCBnZGIKLStpbXBvcnQgZ2RiLm1pc3NpbmdfZGVidWcKLStpbXBvcnQgZ2RiLm1pc3Npbmdf b2JqZmlsZQotKwotKyMgVGhlc2UgbW9kdWxlcyBhcmUgYWxsIHN5c3RlbSBtb2R1bGVzLCBhbmQg c2hvdWxkIGJlIGF2YWlsYWJsZSBvbiBhbnkKLSsjIGNvcnJlY3RseSBzZXR1cCBQeXRob24gaW5z dGFsbC4KLStpbXBvcnQgc3lzCi0raW1wb3J0IG9zCi0raW1wb3J0IHN1YnByb2Nlc3MKLStpbXBv cnQgcmUKLStmcm9tIHRocmVhZGluZyBpbXBvcnQgVGhyZWFkCi0raW1wb3J0IHRpbWUKLSsKLSt0 cnk6Ci0rICAgIGltcG9ydCBycG0KLStleGNlcHQgTW9kdWxlTm90Rm91bmRFcnJvcjoKLSsgICAg IyBUaGUgIlJQTSBzdWdnZXN0aW9ucyIgbWVjaGFuaXNtIHdpbGwgbm90IHdvcmsgd2l0aG91dCB0 aGUgKHB5dGhvbikKLSsgICAgIyBycG0gbW9kdWxlLiAgSW5mb3JtIHRoZSB1c2VyIG9mIHRoaXMs IGJ1dCB3YWl0IHRvIGRvIHNvIHVudGlsCi0rICAgICMganVzdCBwcmlvciB0byBwcmludGluZyB0 aGUgR0RCIHByb21wdC4gIElmIHdlIGRvIGl0IHJpZ2h0IGF3YXksCi0rICAgICMgdGhlIG1lc3Nh Z2UgdHlwaWNhbGx5IGFwcGVhcnMgYmVmb3JlIHRoZSB2ZXJzaW9uIGFuZCBjb3B5cmlnaHQKLSsg ICAgIyBpbmZvLCB3aGljaCBpcyBlYXNpbHkgbWlzc2VkIGJ5IG1hbnkgdXNlcnMuICBBZGRpdGlv bmFsbHksIGl0Ci0rICAgICMgc2VlbXMgdGhhdCBzZXZlcmFsIG90aGVyIHBhY2thZ2VzIHdoaWNo IHBhcnNlIEdEQiB2ZXJzaW9uIGluZm8KLSsgICAgIyBhcmUgY29uZnVzZWQgYnkgYW4gZWFybHkg ZXJyb3IgbWVzc2FnZSByZWdhcmRpbmcgYSBtaXNzaW5nCi0rICAgICMgcHl0aG9uMy1ycG0gcGFj a2FnZSwgc28gd2FpdGluZyB0byBwcmludCB0aGUgZXJyb3IgYWxsb3dzIHRob3NlCi0rICAgICMg YXBwbGljYXRpb25zIHRvIHdvcmsgYXMgdGhleSB1c2VkIHRvLgotKyAgICBkZWYgYmVmb3JlX3By b21wdCgpOgotKyAgICAgICAgcHJpbnQoCi0rICAgICAgICAgICAgKCJcblVuYWJsZSB0byBsb2Fk IHRoZSBQeXRob24gJ3JwbScgbW9kdWxlLiAgTGFjayBvZiB0aGlzIG1vZHVsZSBkaXNhYmxlc1xu IgotKyAgICAgICAgICAgICAidGhlIFJQTSBzdWdnZXN0aW9ucyBtZWNoYW5pc20gd2hpY2ggcmVj b21tZW5kcyBzaGVsbCBjb21tYW5kcyBmb3JcbiIKLSsgICAgICAgICAgICAgImluc3RhbGxpbmcg bWlzc2luZyBkZWJ1Z2luZm8gcGFja2FnZXMuICBUbyBlbmFibGUgdGhpcyBmdW5jdGlvbmFsaXR5 LFxuIgotKyAgICAgICAgICAgICAicGxlYXNlIGluc3RhbGwgdGhlIHB5dGhvbjMtcnBtIHBhY2th Z2UuIiksCi0rICAgICAgICAgICAgZmlsZT1zeXMuc3RkZXJyCi0rICAgICAgICApCi0rICAgICAg ICBnZGIuZXZlbnRzLmJlZm9yZV9wcm9tcHQuZGlzY29ubmVjdChiZWZvcmVfcHJvbXB0KQotKwot KyAgICBnZGIuZXZlbnRzLmJlZm9yZV9wcm9tcHQuY29ubmVjdChiZWZvcmVfcHJvbXB0KQotKwot KyAgICAjIEltcGxlbWVudCAnaW5mbyBycG0tc3VnZ2VzdGlvbnMnIHdoZW4gdGhlICdycG0nIG1v ZHVsZSBpcyBub3QKLSsgICAgIyBhdmFpbGFibGUuICBKdXN0IHRocm93cyBhbiBlcnJvci4KLSsg ICAgZGVmIGluZm9fcnBtX3N1Z2dlc3Rpb25zKCk6Ci0rICAgICAgICByYWlzZSBnZGIuR2RiRXJy b3IoInJwbS1zdWdnZXN0aW9ucyBhcmUgZGlzYWJsZWQgYXMgdGhlIFB5dGhvbiAncnBtJyBtb2R1 bGUgaXMgbm90IGluc3RhbGxlZCIpCi0rZWxzZToKLSsgICAgIyBUcmFjayBhbGwgdGhlIFJQTXMg c3VnZ2VzdGVkIGR1cmluZyBhIHNpbmdsZSBkZWJ1ZyBzZXNzaW9uIHNvIHdlCi0rICAgICMgZG9u J3Qgc3VnZ2VzdCB0aGUgc2FtZSBSUE0gdHdpY2UuICBUaGlzIGlzIG9ubHkgY2xlYXJlZCB3aGVu IHRoZQotKyAgICAjIG1haW4gZXhlY3V0YWJsZSBpcyBjaGFuZ2VkLgotKyAgICBfX21pc3Npbmdf cnBtcyA9IHt9Ci0rCi0rICAgICMgVHJhY2sgYW55IG1pc3NpbmcgUlBNcyB0aGF0IGhhdmUgYmVl biBkaXNjb3ZlcmVkIHNpbmNlIHRoZSBsYXN0IHRpbWUKLSsgICAgIyB0aGUgcHJvbXB0IHdhcyBk aXNwbGF5ZWQuICBSUE1zIGluIGhlcmUgYXJlIGFsc28gcHJlc2VudCBpbiB0aGUKLSsgICAgIyBf X01JU1NJTkdfUlBNUyBkaWN0aW9uYXJ5LCBidXQgdGhpcyBkaWN0aW9uYXJ5IGlzIGNsZWFyZWQg ZWFjaCB0aW1lCi0rICAgICMgdGhlIHByb21wdCBpcyBzaG93bi4KLSsgICAgX19zdWdnZXN0X3Jw bXMgPSB7fQotKwotKyAgICAjIFRyYWNrIGFsbCB0aGUgYnVpbGQtaWRzIHN1Z2dlc3RlZCBkdXJp bmcgYSBzaW5nbGUgZGVidWcgc2Vzc2lvbiBzbyB3ZQotKyAgICAjIGRvbid0IHN1Z2dlc3QgaW5z dGFsbGluZyB1c2luZyB0aGUgc2FtZSBidWlsZC1pZCB0d2ljZS4gIFRoaXMgaXMgb25seQotKyAg ICAjIGNsZWFyZWQgd2hlbiB0aGUgbWFpbiBleGVjdXRhYmxlIGlzIGNoYW5nZWQuCi0rICAgIF9f bWlzc2luZ19idWlsZF9pZHMgPSB7fQotKwotKyAgICAjIFRyYWNrIGFueSBidWlsZC1pZHMgdGhh dCBoYXZlIGJlZW4gZGlzY292ZXJlZCBtaXNzaW5nIHNpbmNlIHRoZSBsYXN0Ci0rICAgICMgdGlt ZSB0aGUgcHJvbXB0IHdhcyBkaXNwbGF5ZWQuICBCdWlsZC1pZHMgaW4gaGVyZSBhcmUgYWxzbyBw cmVzZW50IGluCi0rICAgICMgdGhlIF9fTUlTU0lOR19CVUlMRF9JRFMgZGljdGlvbmFyeSwgYnV0 IHRoaXMgZGljdGlvbmFyeSBpcyBjbGVhcmVkCi0rICAgICMgZWFjaCB0aW1lIHRoZSBwcm9tcHQg aXMgc2hvd24uCi0rICAgIF9fc3VnZ2VzdF9idWlsZF9pZHMgPSB7fQotKwotKyAgICAjIFRoZSBi dWlsZC1pZCB0byBSUE0gbG9va3VwIGlzIHZlcnkgc2xvdy4gIFRoaXMgY2FjaGUgbWFwcwotKyAg ICAjIGJ1aWxkLWlkcyB0byB0aGUgc2V0IG9mIFJQTSB3ZSBjYW4gc3VnZ2VzdCBpbnN0YWxsaW5n LiAgVGhlIGtleQotKyAgICAjIGlzIHRoZSBidWlsZC1pZCBzdHJpbmcsIGFuZCB0aGUgdmFsdWUg aXMgYSBsaXN0IG9mIFJQTSBuYW1lcywgb3IKLSsgICAgIyBOb25lIGlmIHRoZXJlIHdhcyBhbiBl cnJvciB3aXRoIHRoZSBidWlsZC1pZCB0byBSUE0gbG9va3VwLgotKyAgICAjCi0rICAgICMgVGhp cyBjYWNoZSBpcyBuZXZlciBjbGVhcmVkLCBldmVuIHdoZW4gdGhlIGV4ZWN1dGFibGUgaXMKLSsg ICAgIyBjaGFuZ2VkLiAgVGhlIGJ1aWxkLWlkcyBzaG91bGQgYmUgdW5pcXVlLCBzbyBhIGJ1aWxk LWlkIGxvb2t1cAotKyAgICAjIHNob3VsZCBiZSBnb29kIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhl IHNlc3Npb24uCi0rICAgIF9fYnVpbGRfaWRfbG9va3VwX2NhY2hlID0ge30KLSsKLSsgICAgIyBX aGVuIHNlYXJjaGluZyBmb3IgYW4gUlBNIGdpdmVuIGEgYnVpbGQtaWQsIGlmIHRoZSBzZWFyY2gg dGFrZXMKLSsgICAgIyB0b28gbG9uZywgdGhlbiBhIG1lc3NhZ2UgaXMgcHJpbnRlZCB0byB0aGUg dXNlci4gIFdlIG9ubHkgcHJpbnQKLSsgICAgIyB0aGUgbWVzc2FnZSBvbmNlIGJldHdlZW4gZWFj aCBHREIgcHJvbXB0LiAgVGhpcyBmbGFnIGlzIHNldCBUcnVlCi0rICAgICMgd2hlbiB0aGUgbWVz c2FnZSBpcyBwcmludGVkLCBhbmQgcmVzZXQgdG8gRmFsc2Ugd2hlbiBhIHByb21wdCBpcwotKyAg ICAjIGRpc3BsYXllZC4KLSsgICAgX19zZWFyY2hpbmdfbWVzc2FnZV9wcmludGVkID0gRmFsc2UK LSsKLSsgICAgIyBBZGQgYSBzdWdnZXN0aW9uIHRvIGluc3RhbGwgUlBNX05BTUUgKHRoZSBmdWxs IG5hbWUgb2YgYW4gUlBNKQotKyAgICAjIHRvIHRoZSBsaXN0IG9mIHN1Z2dlc3Rpb25zIHRvIG1h a2UgdGhlIG5leHQgdGltZSBhIHByb21wdCBpcwotKyAgICAjIGRpc3BsYXllZC4KLSsgICAgZGVm IGFkZF9ycG1fc3VnZ2VzdGlvbihycG1fbmFtZSk6Ci0rICAgICAgICBnbG9iYWwgX19taXNzaW5n X3JwbXMKLSsgICAgICAgIGdsb2JhbCBfX3N1Z2dlc3RfcnBtcwotKwotKyAgICAgICAgaWYgbm90 IHJwbV9uYW1lIGluIF9fbWlzc2luZ19ycG1zOgotKyAgICAgICAgICAgIF9fc3VnZ2VzdF9ycG1z W3JwbV9uYW1lXSA9IFRydWUKLSsgICAgICAgICAgICBfX21pc3NpbmdfcnBtc1tycG1fbmFtZV0g PSBUcnVlCi0rCi0rICAgICMgUmV0dXJuIFRydWUgaWYgUlBNX05BTUUgaXMgaW5zdGFsbGVkLCB3 aGVyZSBSUE1fTkFNRSBpcyB0aGUgZnVsbAotKyAgICAjIG5hbWUgb2YgYW4gUlBNLgotKyAgICBk ZWYgaXNfcnBtX2luc3RhbGxlZCh0cywgcnBtX25hbWUpOgotKyAgICAgICAgcmVzID0gdHMuZGJN YXRjaChycG0uUlBNREJJX0xBQkVMLCBycG1fbmFtZSkKLSsgICAgICAgIHJldHVybiBsZW4ocmVz KSA+IDAKLSsKLSsgICAgIyBBZGQgYSBzdWdnZXN0aW9uIHRvIGluc3RhbGwgUlBNcyBiYXNlZCBv biBCVUlMRF9JRCwgYSBzdHJpbmcKLSsgICAgIyBjb250YWluaW5nIGEgYnVpbGQtaWQsIHRvIHRo ZSBsaXN0IG9mIHN1Z2dlc3Rpb25zIHRvIG1ha2UgdGhlIG5leHQKLSsgICAgIyB0aW1lIGEgcHJv bXB0IGlzIGRpc3BsYXllZC4KLSsgICAgZGVmIGFkZF9idWlsZF9pZF9zdWdnZXN0aW9uKGJ1aWxk X2lkKToKLSsgICAgICAgIGdsb2JhbCBfX21pc3NpbmdfYnVpbGRfaWRzCi0rICAgICAgICBnbG9i YWwgX19zdWdnZXN0X2J1aWxkX2lkcwotKwotKyAgICAgICAgaWYgbm90IGJ1aWxkX2lkIGluIF9f bWlzc2luZ19idWlsZF9pZHM6Ci0rICAgICAgICAgICAgX19zdWdnZXN0X2J1aWxkX2lkc1tidWls ZF9pZF0gPSBUcnVlCi0rICAgICAgICAgICAgX19taXNzaW5nX2J1aWxkX2lkc1tidWlsZF9pZF0g PSBUcnVlCi0rCi0rICAgICMgUmV0dXJuIHRydWUgaWYgJy91c3IvbGliJyBpcyBpbiB0aGUgZGVi dWctZmlsZS1kaXJlY3RvcnkgbGlzdC4KLSsgICAgIyBTeXN0ZW0gcGFja2FnZXMgaW5zdGFsbCB0 aGVpciBkZWJ1ZyBpbmZvcm1hdGlvbiBpbnRvIC91c3IvbGliLAotKyAgICAjIHNvIGlmIEdEQiBp c24ndCBsb29raW5nIGluIHRoYXQgZGlyZWN0b3J5LCB0aGVuIHRoZXJlJ3Mgbm8KLSsgICAgIyBy ZWFzb24gdG8gdHJ5IGFuZCBmaWd1cmUgb3V0IGEgc3VpdGFibGUgUlBNIHRvIGluc3RhbGwuCi0r ICAgIGRlZiB1c2luZ19zdWl0YWJsZV9kZWJ1Z19maWxlX2RpcmVjdG9yeSgpOgotKyAgICAgICAg ZGVidWdfZmlsZV9kaXJlY3RvcmllcyA9IGdkYi5wYXJhbWV0ZXIoImRlYnVnLWZpbGUtZGlyZWN0 b3J5IikKLSsgICAgICAgIGZvciBkIGluIGRlYnVnX2ZpbGVfZGlyZWN0b3JpZXMuc3BsaXQob3Mu cGF0aHNlcCk6Ci0rICAgICAgICAgICAgaWYgZFs6OF0gPT0gIi91c3IvbGliIjoKLSsgICAgICAg ICAgICAgICAgcmV0dXJuIFRydWUKLSsgICAgICAgIHJldHVybiBGYWxzZQotKwotKyAgICAjIFJl dHVybiBUcnVlIGlmIHJwbS1zdWdnZXN0aW9uIGlzIGRpc2FibGVkIGZvciBhbnkgcmVhc29uLgot KyAgICBkZWYgcnBtX3N1Z2dlc3Rpb25faXNfZGlzYWJsZWQoKToKLSsgICAgICAgICMgSWYgL3Vz ci9saWIvIGlzIG5vdCBiZWluZyB1c2VkIHRvIGZpbmQgZGVidWcgaW5mb3JtYXRpb24KLSsgICAg ICAgICMgdGhlbiB0aGVyZSdzIG5vIHBvaW50IG9mZmVyaW5nIGFueSBSUE1zIGFzIEdEQiB3b3Vs ZCBub3QKLSsgICAgICAgICMgZmluZCB0aGUgbmV3bHkgaW5zdGFsbGVkIGNvbnRlbnQuCi0rICAg ICAgICBpZiBub3QgdXNpbmdfc3VpdGFibGVfZGVidWdfZmlsZV9kaXJlY3RvcnkoKToKLSsgICAg ICAgICAgICByZXR1cm4gVHJ1ZQotKwotKyAgICAgICAgIyBJcyAncnBtLXN1Z2dlc3Rpb24gZW5h YmxlZCcgc2V0IHRvICdvZmYnPwotKyAgICAgICAgaWYgbm90IHBhcmFtX3JwbV9zdWdnZXN0aW9u X2VuYWJsZWQudmFsdWU6Ci0rICAgICAgICAgICAgcmV0dXJuIFRydWUKLSsKLSsgICAgICAgIHJl dHVybiBGYWxzZQotKwotKwotKyAgICAjIExvb2t1cCBSUE1zIHRoYXQgbWlnaHQgcHJvdmlkZSB0 aGUgZGVidWcgaW5mb3JtYXRpb24gZm9yIEZJTEVOQU1FLAotKyAgICAjIHdoaWNoIGlzIGEgc3Ry aW5nIGNvbnRhaW5pbmcgdGhlIHBhdGggdG8gYW4gb2JqZWN0IGZpbGUgR0RCIGNvdWxkCi0rICAg ICMgbm90IGZpbmQgYW55IGRlYnVnIGluZm9ybWF0aW9uIGZvci4KLSsgICAgIwotKyAgICAjIElm IGEgcG9zc2libGUgUlBNIGlzIGZvdW5kIHRoZW4gdGhpcyBpcyBhZGRlZCB0byB0aGUgZ2xvYmFs cwotKyAgICAjIF9fTUlTU0lOR19SUE1TIGFuZCBfX1NVR0dFU1RfUlBNUywgd2hpY2ggYXJlIHVz ZWQgZWxzZXdoZXJlIGluIHRoaXMKLSsgICAgIyBzY3JpcHQuCi0rICAgIGRlZiBmaW5kX2RlYnVn X3N1Z2dlc3Rpb25zKGZpbGVuYW1lKToKLSsgICAgICAgIGlmIHJwbV9zdWdnZXN0aW9uX2lzX2Rp c2FibGVkKCk6Ci0rICAgICAgICAgICAgcmV0dXJuCi0rCi0rICAgICAgICB0cyA9IHJwbS5UcmFu c2FjdGlvblNldCgpCi0rICAgICAgICBtaSA9IHRzLmRiTWF0Y2gocnBtLlJQTURCSV9CQVNFTkFN RVMsIGZpbGVuYW1lKQotKyAgICAgICAgZm9yIGggaW4gbWk6Ci0rICAgICAgICAgICAgIyBCdWls ZCB0aGUgZGVidWdpbmZvIHBhY2thZ2UgbmFtZS4KLSsgICAgICAgICAgICBvYmogPSBoLmZvcm1h dCgiJXtuYW1lfS1kZWJ1Z2luZm8tJXt2ZXJzaW9ufS0le3JlbGVhc2V9LiV7YXJjaH0iKQotKyAg ICAgICAgICAgIHJwbV9uYW1lID0gc3RyKG9iaikKLSsKLSsgICAgICAgICAgICAjIENoZWNrIHRv IHNlZSBpZiB0aGUgcGFja2FnZSBpcyBpbnN0YWxsZWQuCi0rICAgICAgICAgICAgaWYgaXNfcnBt X2luc3RhbGxlZCh0cywgcnBtX25hbWUpOgotKyAgICAgICAgICAgICAgICBjb250aW51ZQotKwot KyAgICAgICAgICAgIGFkZF9ycG1fc3VnZ2VzdGlvbihycG1fbmFtZSkKLSsKLSsKLSsgICAgIyBS ZXR1cm4gYSBzdHJpbmcgd2hpY2ggaXMgdGhlIGZpbGVuYW1lIG9mIHRoZSBmaWxlbmFtZQotKyAg ICAjIGNvcnJlc3BvbmRpbmcgdG8gQlVJTERfSUQgaW4gb25lIG9mIHRoZSB0d28gbG9jYXRpb25z IHVuZGVyCi0rICAgICMgL3Vzci9saWIuCi0rICAgICMKLSsgICAgIyBXaGVuIERFQlVHX1AgaXMg VHJ1ZSwgcmV0dXJuIGEgZmlsZW5hbWUgd2l0aGluOgotKyAgICAjIC91c3IvbGliL2RlYnVnLy5i dWlsZC1pZC8gYW5kIHdoZW4gREVCVUdfUCBpcyBGYWxzZSwgcmV0dXJuIGEKLSsgICAgIyBmaWxl bmFtZSB3aXRoaW46IC91c3IvbGliLy5idWlsZC1pZC8uCi0rICAgICMKLSsgICAgIyBUaGUgU1VG RklYIHN0cmluZyBpcyBhcHBlbmRlZCB0byB0aGUgZ2VuZXJhdGVkIGZpbGVuYW1lLgotKyAgICBk ZWYgYnVpbGRfaWRfdG9fdXNyX2xpYl9maWxlbmFtZShidWlsZF9pZCwgZGVidWdfcCwgc3VmZml4 ID0gIiIpOgotKyAgICAgICAga2V5ID0gYnVpbGRfaWRbOjJdCi0rICAgICAgICByc3QgPSBidWls ZF9pZFsyOl0KLSsKLSsgICAgICAgIGZpbGVuYW1lID0gJy91c3IvbGliJwotKyAgICAgICAgaWYg ZGVidWdfcDoKLSsgICAgICAgICAgICBmaWxlbmFtZSArPSAnL2RlYnVnJwotKyAgICAgICAgZmls ZW5hbWUgKz0gJy8uYnVpbGQtaWQvJyArIGtleSArICcvJyArIHJzdCArIHN1ZmZpeAotKwotKyAg ICAgICAgcmV0dXJuIGZpbGVuYW1lCi0rCi0rICAgICMgQSByZWdleHAgb2JqZWN0IHVzZWQgdG8g bWF0Y2ggYWdhaW5zdCB0aGUgb3V0cHV0IG9mIGBkbmZgLiAgVGhpcwotKyAgICAjIGlzIGluaXRp YWxpc2VkIHRoZSBmaXJzdCB0aW1lIGl0IGlzIG5lZWRlZC4KLSsgICAgZmluZF9vYmpmaWxlX3N1 Z2dlc3Rpb25zX3JlID0gTm9uZQotKwotKyAgICAjIEdpdmVuIEJVSUxEX0lELCBhIHN0cmluZyBj b250YWluaW5nIGEgYnVpbGQtaWQsIHJ1biBhIGBkbmZgCi0rICAgICMgY29tbWFuZCB0byBmaWd1 cmUgb3V0IGlmIGFueSBSUE1zIGNhbiBwcm92aWRlIGEgZmlsZSB3aXRoIHRoYXQKLSsgICAgIyBi dWlsZC1pZC4KLSsgICAgIwotKyAgICAjIElmIGFueSBzdWl0YWJsZSBSUE1zIGFyZSBmb3VuZCB0 aGVuIGBhZGRfcnBtX3N1Z2dlc3Rpb25gIGlzIGNhbGxlZAotKyAgICAjIHRvIHJlZ2lzdGVyIHRo ZSBzdWdnZXN0aW9uLgotKyAgICAjCi0rICAgICMgVGhpcyBmdW5jdGlvbiBpcyBwcmV0dHkgc2xv dywgd2hpY2ggaXMgYSBzaGFtZSwgYXMgdGhlIHJlc3VsdHMKLSsgICAgIyByZXR1cm5lZCBhcmUg bXVjaCBuaWNlciB0aGFuIGp1c3QgdGVsbGluZyB0aGUgdXNlciB0byB0cnkgdGhlCi0rICAgICMg bG9va3VwIGNvbW1hbmQgZm9yIHRoZW1zZWx2ZXMuCi0rICAgIGRlZiBmaW5kX29iamZpbGVfc3Vn Z2VzdGlvbnNfaW5fdGhyZWFkKGJ1aWxkX2lkKToKLSsgICAgICAgIGdsb2JhbCBmaW5kX29iamZp bGVfc3VnZ2VzdGlvbnNfcmUKLSsKLSsgICAgICAgIGlmIGZpbmRfb2JqZmlsZV9zdWdnZXN0aW9u c19yZSBpcyBOb25lOgotKyAgICAgICAgICAgIGZpbmRfb2JqZmlsZV9zdWdnZXN0aW9uc19yZSA9 IHJlLmNvbXBpbGUoIl4oLiopLWRlYnVnaW5mby0oLiopIDogRGVidWcgaW5mb3JtYXRpb24gZm9y IHBhY2thZ2UgKC4qKSQiKQotKwotKyAgICAgICAgcmVzdWx0ID0gc3VicHJvY2Vzcy5ydW4oWydk bmYnLCAiLS1lbmFibGVyZXBvPSpkZWJ1ZyoiLCAnLS1ub2dwZ2NoZWNrJywgJy1DJywgJ3Byb3Zp ZGVzJywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZF9pZF90b191c3Jf bGliX2ZpbGVuYW1lKGJ1aWxkX2lkLCBUcnVlKV0sCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjYXB0dXJlX291dHB1dD1UcnVlLCB0aW1lb3V0PTMwKQotKwotKyAgICAgICAgbGlu ZXMgPSByZXN1bHQuc3Rkb3V0LmRlY29kZSgndXRmLTgnKS5zcGxpdGxpbmVzKCkKLSsgICAgICAg IHRzID0gcnBtLlRyYW5zYWN0aW9uU2V0KCkKLSsKLSsgICAgICAgIGZvciBsIGluIGxpbmVzOgot KyAgICAgICAgICAgIG0gPSBmaW5kX29iamZpbGVfc3VnZ2VzdGlvbnNfcmUubWF0Y2gobCkKLSsg ICAgICAgICAgICBpZiBub3QgbToKLSsgICAgICAgICAgICAgICAgY29udGludWUKLSsgICAgICAg ICAgICBpZiBtLmdyb3VwKDEpICE9IG0uZ3JvdXAoMyk6Ci0rICAgICAgICAgICAgICAgIHJldHVy bgotKwotKyAgICAgICAgICAgIG1haW5fcnBtID0gbS5ncm91cCgxKSArICctJyArIG0uZ3JvdXAo MikKLSsgICAgICAgICAgICBkYmdfcnBtID0gbS5ncm91cCgxKSArICctZGVidWdpbmZvLScgKyBt Lmdyb3VwKDIpCi0rCi0rICAgICAgICAgICAgaWYgbm90IGlzX3JwbV9pbnN0YWxsZWQodHMsIG1h aW5fcnBtKToKLSsgICAgICAgICAgICAgICAgYWRkX3JwbV9zdWdnZXN0aW9uKG1haW5fcnBtKQot KwotKyAgICAgICAgICAgIGlmIG5vdCBpc19ycG1faW5zdGFsbGVkKHRzLCBkYmdfcnBtKToKLSsg ICAgICAgICAgICAgICAgYWRkX3JwbV9zdWdnZXN0aW9uKGRiZ19ycG0pCi0rCi0rICAgICAgICBy ZXR1cm4KLSsKLSsgICAgIyBDYWxsIGBmaW5kX29iamZpbGVfc3VnZ2VzdGlvbnNfaW5fdGhyZWFk YCBpcyBhIHNlcGFyYXRlIHRocmVhZCwKLSsgICAgIyB0aGVuIHdhaXQgZm9yIHRoZSB0aHJlYWQg dG8gY29tcGxldGUuICBEb24ndCB0b3VjaCBhbnkgc2hhcmVkCi0rICAgICMgc3RhdGUgd2hpbGUg d2FpdGluZyBmb3IgdGhlIHRocmVhZCB0byBjb21wbGV0ZS4gIFRoZXJlJ3Mgbm8KLSsgICAgIyBs b2NraW5nIG9uIGFueSBvZiBvdXIgY2FjaGVzLCBhbmQgdGhlIHdvcmtlciB0aHJlYWQgd2lsbCBh ZGQgUlBNCi0rICAgICMgc3VnZ2VzdGlvbnMgYXMgaXQgd2FudHMuCi0rICAgICMKLSsgICAgIyBJ ZiB0aHJlIHRocmVhZCB0YWtlcyB0b28gbG9uZyB0byBjb21wbGV0ZSB0aGVuIHByaW50IGEgbWVz c2FnZQotKyAgICAjIHRvIHRoZSB1c2VyIHRlbGxpbmcgdGhlbSB3aGF0J3MgZ29pbmcgb24uCi0r ICAgIGRlZiBmaW5kX29iamZpbGVfc3VnZ2VzdGlvbnNfc2xvd19jb3JlKGJ1aWxkX2lkKToKLSsg ICAgICAgIGdsb2JhbCBfX3NlYXJjaGluZ19tZXNzYWdlX3ByaW50ZWQKLSsKLSsgICAgICAgIHRo cmVhZCA9IFRocmVhZCh0YXJnZXQgPSBmaW5kX29iamZpbGVfc3VnZ2VzdGlvbnNfaW5fdGhyZWFk LCBhcmdzID0gKGJ1aWxkX2lkLCApKQotKyAgICAgICAgdGhyZWFkLnN0YXJ0KCkKLSsgICAgICAg IHN0YXJ0ID0gdGltZS50aW1lX25zKCkKLSsKLSsgICAgICAgIHdoaWxlIHRocmVhZC5pc19hbGl2 ZSAoKToKLSsgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMDUpCi0rICAgICAgICAgICAgbm93ID0g dGltZS50aW1lX25zICgpCi0rICAgICAgICAgICAgaWYgbm90IF9fc2VhcmNoaW5nX21lc3NhZ2Vf cHJpbnRlZCBhbmQgKG5vdyAtIHN0YXJ0ID4gMTAwMDAwMDAwMCk6Ci0rICAgICAgICAgICAgICAg IHByaW50KCJTZWFyY2hpbmcgZm9yIHBhY2thZ2VzIHRvIGluc3RhbGwgdGhhdCBjb3VsZCBpbXBy b3ZlIGRlYnVnZ2luZy4uLiIpCi0rICAgICAgICAgICAgICAgIF9fc2VhcmNoaW5nX21lc3NhZ2Vf cHJpbnRlZCA9IFRydWUKLSsKLSsgICAgICAgIHRocmVhZC5qb2luKCkKLSsKLSsKLSsgICAgIyBH aXZlbiBCVUlMRF9JRCwgYSBzdHJpbmcgY29udGFpbmluZyBhIGJ1aWxkLWlkLCBsb29rdXAgc3Vp dGFibGUKLSsgICAgIyBSUE1zIHRoYXQgY291bGQgYmUgaW5zdGFsbGVkIHRvIHByb3ZpZGUgYSBm aWxlIHdpdGggdGhlIHJlcXVpcmVkCi0rICAgICMgYnVpbGQtaWQuCi0rICAgICMKLSsgICAgIyBB bnkgc3VpdGFibGUgUlBNcyBhcmUgcmVjb3JkZWQgYnkgY2FsbGluZyBgYWRkX3JwbV9zdWdnZXN0 aW9uYCwgYW5kCi0rICAgICMgd2lsbCBiZSBwcmludGVkIGJlZm9yZSB0aGUgbmV4dCBwcm9tcHQu Ci0rICAgIGRlZiBmaW5kX29iamZpbGVfc3VnZ2VzdGlvbnNfc2xvdyhidWlsZF9pZCk6Ci0rICAg ICAgICBnbG9iYWwgX19idWlsZF9pZF9sb29rdXBfY2FjaGUKLSsgICAgICAgIGdsb2JhbCBfX3N1 Z2dlc3RfcnBtcwotKwotKyAgICAgICAgIyBUaGUgY29kZSB0byBsb29rdXAgYW4gUlBNIGdpdmVu IG9ubHkgYSBidWlsZC1pZCBpcyBwcmV0dHkKLSsgICAgICAgICMgc2xvdy4gIENhY2hlIHRoZSBy ZXN1bHRzIHRvIHRyeSBhbmQgcmVkdWNlIHRoZSBVSSBkZWxheXMuCi0rICAgICAgICBpZiBidWls ZF9pZCBpbiBfX2J1aWxkX2lkX2xvb2t1cF9jYWNoZToKLSsgICAgICAgICAgICBycG1zID0gX19i dWlsZF9pZF9sb29rdXBfY2FjaGVbYnVpbGRfaWRdCi0rICAgICAgICAgICAgaWYgcnBtcyBpcyBu b3QgTm9uZToKLSsgICAgICAgICAgICAgICAgZm9yIHIgaW4gcnBtczoKLSsgICAgICAgICAgICAg ICAgICAgIGFkZF9ycG1fc3VnZ2VzdGlvbihyKQotKyAgICAgICAgICAgIHJldHVybgotKwotKyAg ICAgICAgIyBNYWtlIHN1cmUgdGhlIGNhY2hlIGVudHJ5IGV4aXN0cyBiZWZvcmUgd2UgZG8gdGhl IGxvb2t1cC4KLSsgICAgICAgICMgSWYsIGZvciBhbnkgcmVhc29uLCB0aGUgbG9va3VwIHJhaXNl cyBhbiBleGNlcHRpb24sIHRoZW4KLSsgICAgICAgICMgaGF2aW5nIGEgY2FjaGUgZW50cnkgd2ls bCBwcmV2ZW50IHVzIHJldHJ5aW5nIHRoaXMgbG9va3VwIGluCi0rICAgICAgICAjIHRoZSBmdXR1 cmUuCi0rICAgICAgICBfX2J1aWxkX2lkX2xvb2t1cF9jYWNoZVtidWlsZF9pZF0gPSBOb25lCi0r Ci0rICAgICAgICAjIE5vdyBkbyB0aGUgbG9va3VwLiAgVGhpcyBpcyB0aGUgc2xvdyBwYXJ0Lgot KyAgICAgICAgZmluZF9vYmpmaWxlX3N1Z2dlc3Rpb25zX3Nsb3dfY29yZShidWlsZF9pZCkKLSsK LSsgICAgICAgICMgRmlsbCBpbiB0aGUgY2FjaGUsIGZvciBhIGdpdmVuIGJ1aWxkLWlkIHdoaWNo IFJQTXMgd2VyZQotKyAgICAgICAgIyBzdWdnZXN0ZWQuCi0rICAgICAgICBycG1zID0gW10KLSsg ICAgICAgIGZvciByIGluIF9fc3VnZ2VzdF9ycG1zOgotKyAgICAgICAgICAgIHJwbXMuYXBwZW5k KHIpCi0rICAgICAgICBfX2J1aWxkX2lkX2xvb2t1cF9jYWNoZVtidWlsZF9pZF0gPSBycG1zCi0r Ci0rCi0rICAgICMgR2l2ZW4gQlVJTERfSUQsIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSBidWlsZC1p ZCwganVzdCByZWNvcmQgdGhhdCB3ZQotKyAgICAjIHNob3VsZCBhZHZpc2UgdGhlIHVzZXIgdG8g dHJ5IGluc3RhbGxpbmcgUlBNcyBiYXNlZCBvbiB0aGlzIGJ1aWxkLWlkLgotKyAgICBkZWYgZmlu ZF9vYmpmaWxlX3N1Z2dlc3Rpb25zX2Zhc3QoYnVpbGRfaWQpOgotKyAgICAgICAgYWRkX2J1aWxk X2lkX3N1Z2dlc3Rpb24oYnVpbGRfaWQpCi0rCi0rICAgICMgR2l2ZW4gQlVJTERfSUQsIGEgc3Ry aW5nIGNvbnRhaW5pbmcgYSBidWlsZC1pZCwgd2hpY2ggR0RCIGhhcyBmYWlsZWQKLSsgICAgIyB0 byBmaW5kLCBwb3NzaWJseSByZWNvcmQgc29tZSBpbmZvcm1hdGlvbiBzbyB0aGF0IHdlIGNhbiwg YXQgdGhlIG5leHQKLSsgICAgIyBwcm9tcHQsIGdpdmUgc29tZSBSUE0gaW5zdGFsbGF0aW9uIGFk dmljZSB0byB0aGUgdXNlci4KLSsgICAgIwotKyAgICAjIFdlIGhhdmUgdHdvIGRpZmZlcmVudCBz dHJhdGVnaWVzIGZvciBSUE0gbG9va3VwIGJhc2VkIG9uIGEgYnVpbGQtaWQsCi0rICAgICMgb25l IGFwcHJvYWNoIGlzIHRoYXQgd2UgYWN0dWFsbHkgbG9va3VwIHRoZSBSUE1zIGFuZCBvbmx5IHN1 Z2dlc3QKLSsgICAgIyBzb21ldGhpbmcgaWYgdGhlcmUgaXMgYSBzdWl0YWJsZSBSUE0uICBIb3dl dmVyLCB0aGlzIGlzIHByZXR0eSBzbG93LAotKyAgICAjIGFuZCB1c2VycyB3aWxsIHByb2JhYmx5 IGZpbmQgdGhpcyBhbm5veWluZy4KLSsgICAgIwotKyAgICAjIFNvIHdlIGFsc28gaGF2ZSBhIGZh c3Qgd2F5LiAgV2l0aCB0aGlzIGFwcHJvYWNoIHdlIGp1c3QgcmVjb3JkIHRoZQotKyAgICAjIGJ1 aWxkLWlkIHRoYXQgd2FzIG1pc3NpbmcgYW5kIHRlbGwgdGhlIHVzZXIgdG8gdHJ5IGluc3RhbGxp bmcgYmFzZWQgb24KLSsgICAgIyB0aGUgYnVpbGQtaWQuICBUaGUgZG93bnNpZGUgd2l0aCB0aGlz IGlzIHRoYXQgaWYgdGhlcmUgaXMgbm8gUlBNIGZvcgotKyAgICAjIHRoYXQgYnVpbGQtaWQsIHRo ZW4gdGhlIHVzZXIgd2lsbCB0cnkgdGhlIGNvbW1hbmQsIGJ1dCBub3RoaW5nIHdpbGwKLSsgICAg IyBpbnN0YWxsLgotKyAgICBkZWYgZmluZF9vYmpmaWxlX3N1Z2dlc3Rpb25zKGJ1aWxkX2lkKToK LSsgICAgICAgIGlmIHJwbV9zdWdnZXN0aW9uX2lzX2Rpc2FibGVkKCk6Ci0rICAgICAgICAgICAg cmV0dXJuCi0rCi0rICAgICAgICBpZiBwYXJhbV9ycG1fc3VnZ2VzdGlvbl9idWlsZF9pZF9tb2Rl LmZhc3RfbW9kZSgpOgotKyAgICAgICAgICAgIGZpbmRfb2JqZmlsZV9zdWdnZXN0aW9uc19mYXN0 KGJ1aWxkX2lkKQotKyAgICAgICAgZWxzZToKLSsgICAgICAgICAgICBmaW5kX29iamZpbGVfc3Vn Z2VzdGlvbnNfc2xvdyhidWlsZF9pZCkKLSsKLSsgICAgIyBBIG1pc3NpbmcgZGVidWcgaGFuZGxl ciBjbGFzcy4gIEp1c3QgZm9yd2FyZHMgdGhlIG5hbWUgb2YgdGhlCi0rICAgICMgb2JqZmlsZSBm b3Igd2hpY2ggd2UgYXJlIG1pc3NpbmcgZGVidWcgaW5mb3JtYXRpb24gdG8KLSsgICAgIyBmaW5k X2RlYnVnX3N1Z2dlc3Rpb25zLgotKyAgICBjbGFzcyBSUE1fTWlzc2luZ0RlYnVnSGFuZGxlcihn ZGIubWlzc2luZ19kZWJ1Zy5NaXNzaW5nRGVidWdIYW5kbGVyKToKLSsgICAgICAgIGRlZiBfX2lu aXRfXyhzZWxmKToKLSsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKCJycG0tc3VnZ2VzdGlv bnMiKQotKwotKyAgICAgICAgZGVmIF9fY2FsbF9fKHNlbGYsIG9iamZpbGUpOgotKyAgICAgICAg ICAgIGZpbmRfZGVidWdfc3VnZ2VzdGlvbnMob2JqZmlsZS5maWxlbmFtZSkKLSsgICAgICAgICAg ICByZXR1cm4gRmFsc2UKLSsKLSsgICAgIyBBIG1pc3Npbmcgb2JqZmlsZSBoYW5kbGVyIGNsYXNz LiAgSnVzdCBmb3J3YXJkcyB0aGUgYnVpbGQtaWQgb2YKLSsgICAgIyB0aGUgb2JqZmlsZSB0aGF0 IGlzIG1pc3NpbmcgdG8gZmluZF9vYmpmaWxlX3N1Z2dlc3Rpb25zLgotKyAgICBjbGFzcyBSUE1f TWlzc2luZ09iamZpbGVIYW5kbGVyKGdkYi5taXNzaW5nX29iamZpbGUuTWlzc2luZ09iamZpbGVI YW5kbGVyKToKLSsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSsgICAgICAgICAgICBzdXBl cigpLl9faW5pdF9fKCJycG0tc3VnZ2VzdGlvbnMiKQotKwotKyAgICAgICAgZGVmIF9fY2FsbF9f KHNlbGYsIHBzcGFjZSwgYnVpbGRfaWQsIGZpbGVuYW1lKToKLSsgICAgICAgICAgICBmaW5kX29i amZpbGVfc3VnZ2VzdGlvbnMoYnVpbGRfaWQpCi0rICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0r Ci0rICAgICMgVGFrZSBhIG5vbi1lbXB0eSBsaXN0IG9mIFJQTSBuYW1lcyBhbmQgcHJpbnQgYSBj b21tYW5kIGxpbmUgYQotKyAgICAjIHVzZXIgY291bGQgcnVuIHRvIGluc3RhbGwgdGhlc2UgUlBN cy4KLSsgICAgZGVmIHByaW50X3JwbV9zdWdnZXN0aW9ucyhycG1fbmFtZV9saXN0KToKLSsgICAg ICAgIHByaW50KCJNaXNzaW5nIHJwbXMsIHRyeTogZG5mIC0tZW5hYmxlcmVwbz0nKmRlYnVnKicg aW5zdGFsbCAiICsgJyAnLmpvaW4ocnBtX25hbWVfbGlzdCkpCi0rCi0rICAgICMgVGFrZSBhIG5v bi1lbXB0eSBsaXN0IG9mIGJ1aWxkLWlkIHN0cmluZ3MgYW5kIHByaW50IGEgc2VyaWVzIG9mCi0r ICAgICMgbGluZXMgdGhhdCBhIHVzZXIgY291bGQgcnVuIHRvIGluc3RsbCB0aGUgUlBNcyB0aGF0 IHByb3ZpZGUKLSsgICAgIyBmaWxlcyB3aXRoIHRoaXMgYnVpbGQtaWQuCi0rICAgICMKLSsgICAg IyBUaGUgcHJpbnRlZCBjb21tYW5kcyB3aWxsIGFsc28gaW5zdGFsbCB0aGUgY29ycmVzcG9uZGlu ZyBkZWJ1ZwotKyAgICAjIHBhY2thZ2VzIGZvciB0aGUgZXhlY3V0YWJsZSB3aXRoIHRoZSBnaXZl biBidWlsZC1pZC4KLSsgICAgZGVmIHByaW50X2J1aWxkX2lkX3N1Z2dlc3Rpb25zKGJ1aWxkX2lk X2xpc3QpOgotKyAgICAgICAgZm9yIGJ1aWxkX2lkIGluIGJ1aWxkX2lkX2xpc3Q6Ci0rICAgICAg ICAgICAgcHJpbnQoIk1pc3NpbmcgZmlsZShzKSwgdHJ5OiBkbmYgLS1lbmFibGVyZXBvPScqZGVi dWcqJyBpbnN0YWxsICIKLSsgICAgICAgICAgICAgICAgICArIGJ1aWxkX2lkX3RvX3Vzcl9saWJf ZmlsZW5hbWUoYnVpbGRfaWQsIEZhbHNlKQotKyAgICAgICAgICAgICAgICAgICsgJyAnCi0rICAg ICAgICAgICAgICAgICAgKyBidWlsZF9pZF90b191c3JfbGliX2ZpbGVuYW1lKGJ1aWxkX2lkLCBU cnVlLCAiLmRlYnVnIikpCi0rCi0rICAgICMgQ2FsbGVkIGJlZm9yZSBHREIgZGlzcGxheXMgaXRz IHByb21wdC4gIElmIHRoZSBnbG9iYWwgX19TVUdHRVNUX1JQTVMKLSsgICAgIyBkaWN0aW9uYXJ5 IGlzIG5vdCBlbXB0eSwgdGhlbiB0aGlzIGhvb2sgcHJpbnRzIHRoZSBrZXlzIG9mIHRoaXMKLSsg ICAgIyBkaWN0aW9uYXJ5IGFzIHN0cmluZ3Mgd2hpY2ggYXJlIHRoZSBuYW1lcyBvZiBSUE1zLiAg VGhpcyBob29rIGZvcm1hdHMKLSsgICAgIyBlYWNoIFJQTSBuYW1lIGludG8gYSBzdWdnZXN0ZWQg J2RuZiBpbnN0YWxsJyBjb21tYW5kIGFuZCBzdWdnZXN0cyB0aGlzCi0rICAgICMgdG8gdGhlIHVz ZXIuCi0rICAgICMKLSsgICAgIyBBZGRpdGlvbmFsbHksIGlmIHRoZSBnbG9iYWwgX19TVUdHRVNU X0JVSUxEX0lEUyBkaWN0aW9uYXJ5IGlzIG5vdAotKyAgICAjIGVtcHR5LCB0aGVuIHRoaXMgaG9v ayB1c2VzIHRoZSBrZXlzIG9mIHRoaXMgZGljdGlvbmFyeSBhcyBidWlsZC1pZHMKLSsgICAgIyB0 aGF0IHdlcmUgZm91bmQgdG8gYmUgbWlzc2luZywgYW5kIGZvcm1hdHMgdGhlc2UgaW50byBzb21l IGZpbGUgYmFzZWQKLSsgICAgIyAnZG5mIGluc3RhbGwnIHN1Z2dlc3Rpb25zIHRvIHRoZSB1c2Vy LgotKyAgICBkZWYgYmVmb3JlX3Byb21wdCgpOgotKyAgICAgICAgZ2xvYmFsIF9fc3VnZ2VzdF9y cG1zCi0rICAgICAgICBnbG9iYWwgX19zdWdnZXN0X2J1aWxkX2lkcwotKyAgICAgICAgZ2xvYmFs IF9fc2VhcmNoaW5nX21lc3NhZ2VfcHJpbnRlZAotKwotKyAgICAgICAgIyBXZSBhbGxvdyB0aGUg c2VhcmNoaW5nIG1lc3NhZ2UgdG8gYmUgcHJpbnRlZCBqdXN0IG9uY2UKLSsgICAgICAgICMgYmV0 d2VlbiBwcm9tcHRzLgotKyAgICAgICAgX19zZWFyY2hpbmdfbWVzc2FnZV9wcmludGVkID0gRmFs c2UKLSsKLSsgICAgICAgIGlmIGxlbihfX3N1Z2dlc3RfcnBtcykgPiAwOgotKyAgICAgICAgICAg IHByaW50X3JwbV9zdWdnZXN0aW9ucyhfX3N1Z2dlc3RfcnBtcy5rZXlzKCkpCi0rICAgICAgICAg ICAgX19zdWdnZXN0X3JwbXMgPSB7fQotKwotKyAgICAgICAgaWYgbGVuKF9fc3VnZ2VzdF9idWls ZF9pZHMpID4gMDoKLSsgICAgICAgICAgICBwcmludF9idWlsZF9pZF9zdWdnZXN0aW9ucyhfX3N1 Z2dlc3RfYnVpbGRfaWRzLmtleXMoKSkKLSsgICAgICAgICAgICBfX3N1Z2dlc3RfYnVpbGRfaWRz ID0ge30KLSsKLSsgICAgIyBDYWxsZWQgd2hlbiB0aGUgZXhlY3V0YWJsZSB3aXRoaW4gYSBwcm9n cm0gc3BhY2UgaXMgY2hhbmdlZC4gIENsZWFyCi0rICAgICMgdGhlIGxpc3RzIG9mIFJQTSBzdWdn ZXN0aW9ucy4gIFdlIG9ubHkgY2xlYXIgdGhlIHByZXZpb3VzIHN1Z2dlc3Rpb24KLSsgICAgIyBs aXN0IHdoZW4gdGhlIGV4ZWN1dGFibGUgcmVhbGx5IGNoYW5nZXMuICBJZiB0aGUgdXNlciBzaW1w bHkKLSsgICAgIyByZWNvbXBpbGVzIHRoZSBleGVjdXRhYmxlLCB0aGVuIHdlIGRvbid0IGJvdGgg Y2xlYXJpbmcgdGhpcyBsaXN0LgotKyAgICBkZWYgZXhlY3V0YWJsZV9jaGFuZ2VkX2hhbmRsZXIo ZXZlbnQpOgotKyAgICAgICAgZ2xvYmFsIF9fbWlzc2luZ19ycG1zCi0rICAgICAgICBnbG9iYWwg X19zdWdnZXN0X3JwbXMKLSsgICAgICAgIGdsb2JhbCBfX3N1Z2dlc3RfYnVpbGRfaWRzCi0rICAg ICAgICBnbG9iYWwgX19taXNzaW5nX2J1aWxkX2lkcwotKwotKyAgICAgICAgaWYgbm90IGV2ZW50 LnJlbG9hZDoKLSsgICAgICAgICAgICBfX21pc3NpbmdfcnBtcyA9IHt9Ci0rICAgICAgICAgICAg X19zdWdnZXN0X3JwbXMgPSB7fQotKyAgICAgICAgICAgIF9fbWlzc2luZ19idWlsZF9pZHMgPSB7 fQotKyAgICAgICAgICAgIF9fc3VnZ2VzdF9idWlsZF9pZHMgPSB7fQotKwotKwotKyAgICAjIEF0 dGFjaCB0byB0aGUgcmVxdWlyZWQgR0RCIGV2ZW50cy4KLSsgICAgZ2RiLmV2ZW50cy5leGVjdXRh YmxlX2NoYW5nZWQuY29ubmVjdChleGVjdXRhYmxlX2NoYW5nZWRfaGFuZGxlcikKLSsgICAgZ2Ri LmV2ZW50cy5iZWZvcmVfcHJvbXB0LmNvbm5lY3QoYmVmb3JlX3Byb21wdCkKLSsKLSsgICAgIyBS ZWdpc3RlciB0aGUgbWlzc2luZyBkZWJ1ZyBhbmQgbWlzc2luZyBvYmpmaWxlIGhhbmRsZXJzIHdp dGggR0RCLgotKyAgICBnZGIubWlzc2luZ19kZWJ1Zy5yZWdpc3Rlcl9oYW5kbGVyKE5vbmUsIFJQ TV9NaXNzaW5nRGVidWdIYW5kbGVyKCkpCi0rICAgIGdkYi5taXNzaW5nX29iamZpbGUucmVnaXN0 ZXJfaGFuZGxlcihOb25lLCBSUE1fTWlzc2luZ09iamZpbGVIYW5kbGVyKCkpCi0rCi0rICAgICMg SW1wbGVtZW50IHRoZSBjb3JlIG9mICdpbmZvIHJwbS1zdWdnZXN0aW9ucycuICBSZXByaW50IGFs bCBycG0KLSsgICAgIyBzdWdnZXN0aW9ucy4KLSsgICAgZGVmIGluZm9fcnBtX3N1Z2dlc3Rpb25z KCk6Ci0rICAgICAgICBnbG9iYWwgX19taXNzaW5nX3JwbXMKLSsgICAgICAgIGdsb2JhbCBfX21p c3NpbmdfYnVpbGRfaWRzCi0rCi0rICAgICAgICBpZiBsZW4oX19taXNzaW5nX3JwbXMpID09IDAg YW5kIGxlbihfX21pc3NpbmdfYnVpbGRfaWRzKSA9PSAwOgotKyAgICAgICAgICAgIHByaW50KCJO byBSUE0gc3VnZ2VzdGlvbnMgaGF2ZSBiZWVuIG1hZGUgc28gZmFyLiIpCi0rICAgICAgICAgICAg cmV0dXJuCi0rCi0rICAgICAgICBpZiBsZW4oX19taXNzaW5nX3JwbXMpID4gMDoKLSsgICAgICAg ICAgICBwcmludF9ycG1fc3VnZ2VzdGlvbnMoX19taXNzaW5nX3JwbXMua2V5cygpKQotKyAgICAg ICAgaWYgbGVuKF9fbWlzc2luZ19idWlsZF9pZHMpID4gMDoKLSsgICAgICAgICAgICBwcmludF9i dWlsZF9pZF9zdWdnZXN0aW9ucyhfX21pc3NpbmdfYnVpbGRfaWRzLmtleXMoKSkKLSsKLSsjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIwotKyMgVGhlIGZvbGxvd2luZyBjb2RlIGlzIG91dHNpZGUgdGhlICdlbHNlJyBibG9j ayBvZiB0aGUgYXR0ZW1wdCB0byAjCi0rIyBsb2FkIHRoZSAncnBtJyBtb2R1bGUuICBOb3RoaW5n IGFmdGVyIHRoaXMgcG9pbnQgZGVwZW5kcyBvbiB0aGUgICMKLSsjICdycG0nIG1vZHVsZS4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwotKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCi0rCi0rIyBUaGUgJ3NldCBycG0tc3VnZ2VzdGlvbicgcHJlZml4IGNvbW1hbmQuCi0r Y2xhc3MgcnBtX3N1Z2dlc3Rpb25fc2V0X3ByZWZpeChnZGIuQ29tbWFuZCk6Ci0rICAgICIiIlBy ZWZpeCBjb21tYW5kIGZvciAnc2V0JyBycG0tc3VnZ2VzdGlvbiByZWxhdGVkIGNvbW1hbmRzLiIi IgotKwotKyAgICBkZWYgX19pbml0X18oc2VsZik6Ci0rICAgICAgICBzdXBlcigpLl9faW5pdF9f KCJzZXQgcnBtLXN1Z2dlc3Rpb24iLCBnZGIuQ09NTUFORF9OT05FLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICBnZGIuQ09NUExFVEVfTk9ORSwgVHJ1ZSkKLSsKLSsjIFRoZSAnc2hvdyBycG0t c3VnZ2VzdGlvbicgcHJlZml4IGNvbW1hbmQuCi0rY2xhc3MgcnBtX3N1Z2dlc3Rpb25fc2hvd19w cmVmaXgoZ2RiLkNvbW1hbmQpOgotKyAgICAiIiJQcmVmaXggY29tbWFuZCBmb3IgJ3Nob3cnIHJw bS1zdWdnZXN0aW9uIHJlbGF0ZWQgY29tbWFuZHMuIiIiCi0rCi0rICAgIGRlZiBfX2luaXRfXyhz ZWxmKToKLSsgICAgICAgIHN1cGVyKCkuX19pbml0X18oInNob3cgcnBtLXN1Z2dlc3Rpb24iLCBn ZGIuQ09NTUFORF9OT05FLAotKyAgICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09NUExFVEVf Tk9ORSwgVHJ1ZSkKLSsKLSsjIFRoZSAnc2V0L3Nob3cgcnBtLXN1Z2dlc3Rpb24gZW5hYmxlZCcg Y29tbWFuZC4KLStjbGFzcyBycG1fc3VnZ2VzdGlvbl9lbmFibGVkKGdkYi5QYXJhbWV0ZXIpOgot KyAgICAiIiIKLSsgICAgV2hlbiAnb24nIEdEQiB3aWxsIHNlYXJjaCBmb3IgUlBNUyB0aGF0IG1p Z2h0IHByb3ZpZGUgYWRkaXRpb25hbAotKyAgICBkZWJ1ZyBpbmZvcm1hdGlvbiwgb3IgcHJvdmlk ZSBtaXNzaW5nIGV4ZWN1dGFibGVzIG9yIHNoYXJlZAotKyAgICBsaWJyYXJpZXMgKHdoZW4gb3Bl bmluZyBhIGNvcmUgZmlsZSksIGFuZCB3aWxsIG1ha2Ugc3VnZ2VzdGlvbnMKLSsgICAgYWJvdXQg d2hhdCBzaG91bGQgYmUgaW5zdGFsbGVkLgotKwotKyAgICBXaGVuICdvZmYnIEdEQiB3aWxsIG5v dCBtYWtlIHRoZXNlIHN1Z2dlc3Rpb25zLgotKyAgICAiIiIKLSsKLSsgICAgc2V0X2RvYyA9ICJT ZXQgd2hldGhlciB0byBwZXJmb3JtIHJwbS1zdWdnZXN0aW9uLiIKLSsgICAgc2hvd19kb2MgPSAi U2hvdyB3aGV0aGVyIHJwbS1zdWdnZXN0aW9uIGlzIGVuYWJsZWQuIgotKwotKyAgICBkZWYgX19p bml0X18oc2VsZik6Ci0rICAgICAgICBzdXBlcigpLl9faW5pdF9fKCJycG0tc3VnZ2VzdGlvbiBl bmFibGVkIiwgZ2RiLkNPTU1BTkRfTk9ORSwgZ2RiLlBBUkFNX0JPT0xFQU4pCi0rICAgICAgICBz ZWxmLnZhbHVlID0gVHJ1ZQotKwotKyMgVGhlICdzZXQvc2hvdyBycG0tc3VnZ2VzdGlvbiBlbmFi bGVkJyBjb21tYW5kLgotK2NsYXNzIHJwbV9zdWdnZXN0aW9uX2J1aWxkX2lkX21vZGUoZ2RiLlBh cmFtZXRlcik6Ci0rICAgICIiIgotKyAgICBXaGVuIHNldCB0byAnZmFzdCcgKHRoZSBkZWZhdWx0 KSwgR0RCIGRvZXNuJ3QgdHJ5IHRvIG1hcCBhIGJ1aWxkLWlkIHRvCi0rICAgIGFuIGFjdHVhbCBS UE0sIGluc3RlYWQsIEdEQiBqdXN0IHN1Z2dlc3RzIGEgY29tbWFuZCBiYXNlZCBvbiB0aGUKLSsg ICAgYnVpbGQtaWQgd2hpY2ggbWlnaHQgaW5zdGFsbCBzb21lIFJQTXMsIGlmIHRoZXJlIGFyZSBh bnkgUlBNcyB0aGF0Ci0rICAgIHN1cHBseSB0aGF0IGJ1aWxkLWlkLiAgSG93ZXZlciwgaXQgaXMg ZXF1YWxseSBwb3NzaWJsZSB0aGF0IHRoZXJlIGFyZSBubwotKyAgICBzdWl0YWJsZSBSUE1zLCBh bmQgbm90aGluZyB3aWxsIGluc3RhbGwuICBUaGlzIGFwcHJvYWNoIGhhcyBhbG1vc3QgemVybwot KyAgICBvdmVyaGVhZC4KLSsKLSsgICAgV2hlbiBzZXQgdG8gJ3Nsb3cnLCBHREIgZmlyc3QgZG9l cyB0aGUgYnVpbGQtaWQgdG8gUlBNIGNoZWNrIGl0c2VsZiwgYW5kCi0rICAgIG9ubHkgaWYgc29t ZXRoaW5nIGlzIGZvdW5kIGFyZSBSUE1zIGluc3RhbGxhdGlvbiBjb21tYW5kcyBzdWdnZXN0ZWQu Ci0rICAgIFRoZSBzdWdnZXN0ZWQgY29tbWFuZCB3aWxsIGluY2x1ZGUgdGhlIG5hbWUgb2YgdGhl IFJQTSB0byBpbnN0YWxsLiAgVGhpcwotKyAgICBhcHByb2FjaCBpcyBjb25zaWRlcmFibHkgc2xv d2VyIGFzIHF1ZXJ5aW5nIHRoZSBSUE0gZGF0YWJhc2UgZm9yIHRoZSBSUE0KLSsgICAgdGhhdCBz dXBwbGllcyBhIHNwZWNpZmljIGZpbGUgaXMgc2xvdy4KLSsgICAgIiIiCi0rCi0rICAgIHNldF9k b2MgPSAiU2V0IGhvdyBidWlsZC1pZCBiYXNlZCBycG0gc3VnZ2VzdGlvbnMgc2hvdWxkIGJlIHBl cmZvcm1lZC4iCi0rICAgIHNob3dfZG9jID0gIlNob3cgaG93IGJ1aWxkLWlkIGJhc2VkIHJwbSBz dWdnZXN0aW9ucyBzaG91ZCBiZSBwZXJmb3JtZWQuIgotKwotKyAgICBkZWYgX19pbml0X18oc2Vs Zik6Ci0rICAgICAgICBzdXBlcigpLl9faW5pdF9fKCJycG0tc3VnZ2VzdGlvbiBidWlsZC1pZC1t b2RlIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiLkNPTU1BTkRfTk9ORSwgZ2RiLlBB UkFNX0VOVU0sIFsiZmFzdCIsICJzbG93Il0pCi0rICAgICAgICBzZWxmLnZhbHVlID0gImZhc3Qi Ci0rCi0rICAgIGRlZiBmYXN0X21vZGUoc2VsZik6Ci0rICAgICAgICByZXR1cm4gc2VsZi52YWx1 ZSA9PSAiZmFzdCIKLSsKLSsjIFRoZSAnaW5mbyBycG0tc3VnZ2VzdGlvbnMnIGNvbW1hbmQuCi0r Y2xhc3MgcnBtX3N1Z2dlc3Rpb25faW5mbyhnZGIuQ29tbWFuZCk6Ci0rICAgICIiIlJlbGlzdCBS UE0gc3VnZ2VzdGlvbnMuCi0rCi0rICAgIFJlbGlzdCBhbnkgUlBNIGluc3RhbGxhdGlvbiBzdWdn ZXN0aW9ucyB0aGF0IGhhdmUgYmVlbiBtYWRlCi0rICAgIHNpbmNlIHRoZSBleGVjdXRhYmxlIHdh cyBsYXN0IGNoYW5nZWQuIiIiCi0rICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSsgICAgICAgIHN1 cGVyKCkuX19pbml0X18oImluZm8gcnBtLXN1Z2dlc3Rpb25zIiwgZ2RiLkNPTU1BTkRfTk9ORSwg Z2RiLkNPTVBMRVRFX05PTkUpCi0rCi0rICAgIGRlZiBpbnZva2Uoc2VsZiwgYXJncywgZnJvbV90 dHkpOgotKyAgICAgICAgaWYgYXJncyAhPSAiIjoKLSsgICAgICAgICAgICByYWlzZSBnZGIuR2Ri RXJyb3IoInVuZXhwZWN0ZWQgYXJndW1lbnRzOiAlcyIgJSBhcmdzKQotKwotKyAgICAgICAgaW5m b19ycG1fc3VnZ2VzdGlvbnMgKCkKLSsKLSsKLSsjIENyZWF0ZSB0aGUgJ3NldC9zaG93IHJwbS1z dWdnZXN0aW9uJyBjb21tYW5kcy4KLStycG1fc3VnZ2VzdGlvbl9zZXRfcHJlZml4KCkKLStycG1f c3VnZ2VzdGlvbl9zaG93X3ByZWZpeCgpCi0rcGFyYW1fcnBtX3N1Z2dlc3Rpb25fZW5hYmxlZCA9 IHJwbV9zdWdnZXN0aW9uX2VuYWJsZWQoKQotK3BhcmFtX3JwbV9zdWdnZXN0aW9uX2J1aWxkX2lk X21vZGUgPSBycG1fc3VnZ2VzdGlvbl9idWlsZF9pZF9tb2RlKCkKLSsKLSsjIENyZWF0ZSB0aGUg J2luZm8gcnBtLXN1Z2dlc3Rpb25zJyBjb21tYW5kcy4KLStycG1fc3VnZ2VzdGlvbl9pbmZvKCkK LWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2djb3JlLWJ1aWxkaWQtZXhlYy1i dXQtbm90LXNvbGliLWxpYi5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nY29yZS1idWlsZGlk LWV4ZWMtYnV0LW5vdC1zb2xpYi1saWIuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2 L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2NvcmUtYnVpbGRpZC1leGVjLWJ1 dC1ub3Qtc29saWItbGliLmMKLUBAIC0wLDAgKzEsMjEgQEAKLSsvKiBDb3B5cmlnaHQgMjAxMCBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIGZpbGUgaXMgcGFydCBv ZiBHREIuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y Ci0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK LSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwot K3ZvaWQKLStsaWIgKHZvaWQpCi0rewotK30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2djb3JlLWJ1aWxkaWQtZXhlYy1idXQtbm90LXNvbGliLW1haW4uYyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvZ2NvcmUtYnVpbGRpZC1leGVjLWJ1dC1ub3Qtc29saWItbWFpbi5jCi1u ZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9nY29yZS1idWlsZGlkLWV4ZWMtYnV0LW5vdC1zb2xpYi1tYWluLmMKLUBAIC0wLDAg KzEsMjUgQEAKLSsvKiBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KLSsKLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCi0rCi0rICAgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK LSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotK2V4dGVybiB2b2lkIGxpYiAodm9pZCk7Ci0r Ci0raW50Ci0rbWFpbiAodm9pZCkKLSt7Ci0rICBsaWIgKCk7Ci0rICByZXR1cm4gMDsKLSt9Ci1k aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nY29yZS1idWlsZGlkLWV4ZWMtYnV0 LW5vdC1zb2xpYi5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2djb3JlLWJ1aWxkaWQtZXhl Yy1idXQtbm90LXNvbGliLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwK LSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2NvcmUtYnVpbGRpZC1leGVjLWJ1dC1ub3Qt c29saWIuZXhwCi1AQCAtMCwwICsxLDEwNCBAQAotKyMgQ29weXJpZ2h0IDIwMTYgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK LSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMK LSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgot KwotK3JlcXVpcmUgYWxsb3dfc2hsaWJfdGVzdHMKLSsKLStzZXQgdGVzdGZpbGUgImdjb3JlLWJ1 aWxkaWQtZXhlYy1idXQtbm90LXNvbGliIgotK3NldCBzcmNtYWluZmlsZSAke3Rlc3RmaWxlfS1t YWluLmMKLStzZXQgc3JjbGliZmlsZSAke3Rlc3RmaWxlfS1saWIuYwotK3NldCBsaWJmaWxlIFtz dGFuZGFyZF9vdXRwdXRfZmlsZSAke3Rlc3RmaWxlfS1saWIuc29dCi0rc2V0IG9iamZpbGUgW3N0 YW5kYXJkX291dHB1dF9maWxlICR7dGVzdGZpbGV9LW1haW4ub10KLStzZXQgZXhlY3V0YWJsZSAk e3Rlc3RmaWxlfS1tYWluCi0rc2V0IGJpbmZpbGUgW3N0YW5kYXJkX291dHB1dF9maWxlICR7ZXhl Y3V0YWJsZX1dCi0rc2V0IGdjb3JlZmlsZSBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJHtleGVjdXRh YmxlfS5nY29yZV0KLStzZXQgb3V0ZGlyIFtmaWxlIGRpcm5hbWUgJGJpbmZpbGVdCi0rCi0raWYg eyBbZ2RiX2NvbXBpbGVfc2hsaWIgJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2xpYmZpbGV9ICR7 bGliZmlsZX0gImRlYnVnIGFkZGl0aW9uYWxfZmxhZ3M9LVdsLC0tYnVpbGQtaWQiXSAhPSAiIgot KyAgICAgfHwgW2dkYl9jb21waWxlICR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNtYWluZmlsZX0g JHtvYmpmaWxlfSBvYmplY3Qge2RlYnVnfV0gIT0gIiIgfSB7Ci0rICAgICB1bnN1cHBvcnRlZCAi LVdsLC0tYnVpbGQtaWQgY29tcGlsYXRpb24gZmFpbGVkIgotKyAgICAgcmV0dXJuIC0xCi0rfQot K3NldCBvcHRzIFtsaXN0IGRlYnVnIHNobGliPSR7bGliZmlsZX0gImFkZGl0aW9uYWxfZmxhZ3M9 LVdsLC0tYnVpbGQtaWQiXQotK2lmIHsgW2dkYl9jb21waWxlICR7b2JqZmlsZX0gJHtiaW5maWxl fSBleGVjdXRhYmxlICRvcHRzXSAhPSAiIiB9IHsKLSsgICAgIHVuc3VwcG9ydGVkICItV2wsLS1i dWlsZC1pZCBjb21waWxhdGlvbiBmYWlsZWQiCi0rICAgICByZXR1cm4gLTEKLSt9Ci0rCi0rY2xl YW5fcmVzdGFydCAkZXhlY3V0YWJsZQotK2dkYl9sb2FkX3NobGliICRsaWJmaWxlCi0rCi0rIyBE b2VzIHRoaXMgZ2RiIHN1cHBvcnQgZ2NvcmU/Ci0rc2V0IHRlc3QgImhlbHAgZ2NvcmUiCi0rZ2Ri X3Rlc3RfbXVsdGlwbGUgJHRlc3QgJHRlc3QgewotKyAgICAtcmUgIlVuZGVmaW5lZCBjb21tYW5k OiAuZ2NvcmUuKlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCSMgZ2NvcmUgY29tbWFuZCBub3Qgc3Vw cG9ydGVkIC0tIG5vdGhpbmcgdG8gdGVzdCBoZXJlLgotKwl1bnN1cHBvcnRlZCAiZ2RiIGRvZXMg bm90IHN1cHBvcnQgZ2NvcmUgb24gdGhpcyB0YXJnZXQiCi0rCXJldHVybiAtMTsKLSsgICAgfQot KyAgICAtcmUgIlNhdmUgYSBjb3JlIGZpbGUgLipcclxuJGdkYl9wcm9tcHQgJCIgewotKwlwYXNz ICR0ZXN0Ci0rICAgIH0KLSt9Ci0rCi0raWYgeyAhW3J1bnRvIGxpYl0gfSB0aGVuIHsKLSsgICAg cmV0dXJuIC0xCi0rfQotKwotK3NldCBlc2NhcGVkZmlsZW5hbWUgW3N0cmluZ190b19yZWdleHAg JHtnY29yZWZpbGV9XQotKwotK3NldCB0ZXN0ICJzYXZlIGEgY29yZWZpbGUiCi0rZ2RiX3Rlc3Rf bXVsdGlwbGUgImdjb3JlICR7Z2NvcmVmaWxlfSIgJHRlc3QgewotKyAgICAtcmUgIlNhdmVkIGNv cmVmaWxlICR7ZXNjYXBlZGZpbGVuYW1lfVxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCXBhc3MgJHRl c3QKLSsgICAgfQotKyAgICAtcmUgIkNhbid0IGNyZWF0ZSBhIGNvcmVmaWxlXHJcbiRnZGJfcHJv bXB0ICQiIHsKLSsJdW5zdXBwb3J0ZWQgJHRlc3QKLSsJcmV0dXJuIC0xCi0rICAgIH0KLSt9Ci0r Ci0rIyBOb3cgcmVzdGFydCBnZGIgYW5kIGxvYWQgdGhlIGNvcmVmaWxlLgotKwotK2NsZWFuX3Jl c3RhcnQgJGV4ZWN1dGFibGUKLStnZGJfbG9hZF9zaGxpYiAkbGliZmlsZQotKwotK3NldCBidWls ZGlkIFtidWlsZF9pZF9kZWJ1Z19maWxlbmFtZV9nZXQgJGxpYmZpbGVdCi0rCi0rcmVnc3ViIHtc LmRlYnVnJH0gJGJ1aWxkaWQge30gYnVpbGRpZAotKwotK3NldCBkZWJ1Z2RpciBbc3RhbmRhcmRf b3V0cHV0X2ZpbGUgJHt0ZXN0ZmlsZX0tZGVidWdkaXJdCi0rZmlsZSBkZWxldGUgLWZvcmNlIC0t ICRkZWJ1Z2RpcgotKwotK2ZpbGUgbWtkaXIgJGRlYnVnZGlyL1tmaWxlIGRpcm5hbWUgJGxpYmZp bGVdCi0rZmlsZSBjb3B5ICRsaWJmaWxlICRkZWJ1Z2Rpci8ke2xpYmZpbGV9Ci0rCi0rZmlsZSBt a2RpciAkZGVidWdkaXIvW2ZpbGUgZGlybmFtZSAkYnVpbGRpZF0KLStmaWxlIGNvcHkgJGxpYmZp bGUgJGRlYnVnZGlyLyR7YnVpbGRpZH0KLSsKLStyZW1vdGVfZXhlYyBidWlsZCAibG4gLXMgL2xp YiAgICAgICAke2RlYnVnZGlyfS8iCi0rcmVtb3RlX2V4ZWMgYnVpbGQgImxuIC1zIC9saWI2NCAg ICAgJHtkZWJ1Z2Rpcn0vIgotKyMgL3VzciBpcyBub3QgbmVlZGVkLCBhbGwgdGhlIGxpYnMgYXJl IGluIC9saWI2NDogbGlibS5zby42IGxpYmMuc28uNiBsZC1saW51eC14ODYtNjQuc28uMgotKwot K2dkYl90ZXN0X25vX291dHB1dCAic2V0IHNvbGliLWFic29sdXRlLXByZWZpeCAkZGVidWdkaXIi IFwKLSsgICAgInNldCBzb2xpYi1hYnNvbHV0ZS1wcmVmaXgiCi0rCi0rZ2RiX3Rlc3Rfbm9fb3V0 cHV0ICJzZXQgZGVidWctZmlsZS1kaXJlY3RvcnkgJGRlYnVnZGlyIiAic2V0IGRlYnVnLWZpbGUt ZGlyZWN0b3J5IgotKwotK2dkYl90ZXN0ICJjb3JlICR7Z2NvcmVmaWxlfSIgIkNvcmUgd2FzIGdl bmVyYXRlZCBieSAuKiIgInJlLWxvYWQgZ2VuZXJhdGVkIGNvcmVmaWxlIgotKwotK2dkYl90ZXN0 ICJmcmFtZSIgIiMwIFxbXlxyXG5cXSogbGliIC4qIiAibGlicmFyeSBnb3QgbG9hZGVkIgotKwot K2dkYl90ZXN0ICJidCIKLStnZGJfdGVzdCAiaW5mbyBzaGFyZWQiCi1kaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9nZGJpbml0LWhpc3RvcnkuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9nZGJpbml0LWhpc3RvcnkuZXhwCi0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L2dkYmluaXQtaGlzdG9yeS5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2RiaW5p dC1oaXN0b3J5LmV4cAotQEAgLTE3OSw3ICsxNzksOCBAQCBwcm9jIHRlc3RfZW1wdHlfaGlzdG9y eV9maWxlbmFtZSB7IH0gewotICAgICBnbG9iYWwgZW52Ci0gICAgIGdsb2JhbCBnZGJfcHJvbXB0 Ci0gCi0tICAgIHNldCBjb21tb25faGlzdG9yeSBbbGlzdCAic2V0IGhlaWdodCAwIiAic2V0IHdp ZHRoIDAiXQotKyAgICBzZXQgY29tbW9uX2hpc3RvcnkgW2xpc3QgInNldCBoZWlnaHQgMCIgInNl dCB3aWR0aCAwIiBcCi0rCQkJICAgICJzZXQgcnBtLXN1Z2dlc3Rpb24gZW5hYmxlZCBvZmYiXQot IAotICAgICBzZXQgdGVzdF9kaXIgW3N0YW5kYXJkX291dHB1dF9maWxlIGhpc3RvcnlfdGVzdF0K LSAgICAgcmVtb3RlX2V4ZWMgaG9zdCAibWtkaXIgLXAgJHRlc3RfZGlyIgotZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvcmhiejk4MTE1NC1taXNsZWFkaW5nLXl1bS1pbnN0YWxs LXdhcm5pbmcuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9yaGJ6OTgxMTU0LW1pc2xlYWRp bmcteXVtLWluc3RhbGwtd2FybmluZy5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rl di9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3JoYno5ODExNTQtbWlzbGVhZGlu Zy15dW0taW5zdGFsbC13YXJuaW5nLmV4cAotQEAgLTAsMCArMSw2MCBAQAotKyMgQ29weXJpZ2h0 IChDKSAyMDE0ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rIyBDcmVhdGUgYSBjb3JlIGZpbGUsIHRoZW4gaGlkZSB0 aGUgZXhlY3V0YWJsZS4gIFJlc3RhcnQgR0RCIGFuZCBsb2FkCi0rIyB0aGUgY29yZSBmaWxlLiAg Q2hlY2sgR0RCIGdpdmVzIGEgbWVzc2FnZSBzdWdnZXN0aW5nIGEgJ2RuZicgY29tbWFuZAotKyMg dG8gdHJ5IGFuZCBpbnN0YWxsIHRoZSBleGVjdXRhYmxlIGJhc2VkIG9uIGl0cyBidWlsZC1pZC4K LSsKLStzdGFuZGFyZF90ZXN0ZmlsZSAibm9ybWFsLmMiCi0rCi0raWYgeyBbcHJlcGFyZV9mb3Jf dGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfV0gfSB7Ci0rICAg IHJldHVybiAtMQotK30KLSsKLSsjIEdldCB0aGUgYnVpbGQtaWQgb2YgdGhlIGZpbGUuCi0rc2V0 IGJ1aWxkX2lkX2RlYnVnX2ZpbGUgW2J1aWxkX2lkX2RlYnVnX2ZpbGVuYW1lX2dldCAkYmluZmls ZV0KLStyZWdzdWIgLWFsbCAiLmRlYnVnJCIgJGJ1aWxkX2lkX2RlYnVnX2ZpbGUgIiIgYnVpbGRf aWRfd2l0aG91dF9kZWJ1ZwotKwotKyMgUnVuIHRvIG1haW4uCi0raWYgeyAhW3J1bnRvX21haW5d IH0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rIyBXZSBmaXJzdCBuZWVkIHRvIGdlbmVyYXRl IGEgY29yZWZpbGUuCi0rc2V0IGNvcmVmaWxlbmFtZSAiW3N0YW5kYXJkX291dHB1dF9maWxlIGdj b3JlLnRlc3RdIgotK2lmIHsgIVtnZGJfZ2NvcmVfY21kICIkY29yZWZpbGVuYW1lIiAic2F2ZSBj b3JlZmlsZSJdIH0gewotKyAgICB1bnRlc3RlZCAiY291bGQgbm90IGdlbmVyYXRlIGEgY29yZWZp bGUiCi0rICAgIHJldHVybiAtMQotK30KLSsKLSsjIE1vdmUgdGhlIGJpbmZpbGUgdG8gYSB0ZW1w b3JhcnkgbmFtZS4KLStyZW1vdGVfZXhlYyBidWlsZCAibXYgJGJpbmZpbGUgJHtiaW5maWxlfS5v bGQiCi0rCi0rIyBSZWluaXRpYWxpemUgR0RCIGFuZCBzZWUgaWYgd2UgZ2V0IGEgZG5mIHN1Z2dl c3Rpb24uCi0rY2xlYW5fcmVzdGFydAotKwotK2dkYl90ZXN0ICJzZXQgcnBtLXN1Z2dlc3Rpb24g ZW5hYmxlZCBvbiIgIiIgXAotKyAgICAidHVybiBvbiBycG0tc3VnZ2VzdGlvbiBmZWF0dXJlIgot KwotKyMgR0RCIG9ubHkgbWFrZXMgYnVpbGQtaWQgYmFzZWQgUlBNIHN1Z2dlc3Rpb25zIGlmIC91 c3IvbGliIGlzIGluCi0rIyB0aGUgZGVidWctZmlsZS1kaXJlY3RvcnkgbGlzdCwgdGhlIHJlYXNv biBiZWluZyB0aGF0IHN5c3RlbSBSUE1zCi0rIyB3aWxsIGFsd2F5cyBpbnN0YWxsIHVuZGVyIHRo aXMgbG9jYXRpb24uICBJZiBHREIgaXMgbm90IGxvb2tpbmcKLSsjIGhlcmUgdGhlbiB0aGVyZSdz IG5vIHBvaW50IG1ha2luZyBzdWdnZXN0aW9ucy4KLStnZGJfdGVzdCAic2V0IGRlYnVnLWZpbGUt ZGlyZWN0b3J5IC91c3IvbGliLyIgIiIgXAotKyAgICAic2V0IGRlYnVnLWZpbGUtZGlyZWN0b3J5 IgotKwotK2dkYl90ZXN0ICJjb3JlLWZpbGUgW3N0YW5kYXJkX291dHB1dF9maWxlIGdjb3JlLnRl c3RdIiBcCi0rICAgICJNaXNzaW5nIGZpbGVcXChzXFwpLCB0cnk6IGRuZiAtLWVuYWJsZXJlcG89 J1xcKmRlYnVnXFwqJyBpbnN0YWxsIFtzdHJpbmdfdG9fcmVnZXhwIC91c3IvbGliLyRidWlsZF9p ZF93aXRob3V0X2RlYnVnXSBbc3RyaW5nX3RvX3JlZ2V4cCAvdXNyL2xpYi9kZWJ1Zy8kYnVpbGRf aWRfZGVidWdfZmlsZV0iIFwKLSsgICAgInRlc3QgZmlyc3QgeXVtL2RuZiB3YXJuaW5nIgotZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1taXNzaW5nLWRlYnVnLnB5IGIv Z2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW1pc3NpbmctZGVidWcucHkKLS0tLSBhL2dkYi90 ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1taXNzaW5nLWRlYnVnLnB5Ci0rKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5weXRob24vcHktbWlzc2luZy1kZWJ1Zy5weQotQEAgLTE5LDYgKzE5LDEzIEBAIGZy b20gZW51bSBpbXBvcnQgRW51bQotIGltcG9ydCBnZGIKLSBmcm9tIGdkYi5taXNzaW5nX2RlYnVn IGltcG9ydCBNaXNzaW5nRGVidWdIYW5kbGVyCi0gCi0rIyBUaGlzIGlzIGEgUkhFTC9GZWRvcmEg d29yayBhcm91bmQ6IFRoZXJlJ3MgYWxyZWFkeSBhCi0rIyBtaXNzaW5nLWRlYnVnLWluZm8gaGFu ZGxlciByZWdpc3RlcmVkIGZvciB0aGVzZSB2ZXJzaW9ucyBvZiBHREIuCi0rIyBEaXNjYXJkIHRo ZSBoYW5kbGVyIG5vdyBzbyB0aGF0IHRoZSB0ZXN0cyB3aWxsIHBhc3MgKHRoZSB0ZXN0cwotKyMg YXNzdW1lIG5vIGhhbmRsZXIgaXMgY3VycmVudGx5IHJlZ2lzdGVyZWQpLgotK2dkYi5taXNzaW5n X2RlYnVnX2hhbmRsZXJzID0gW10KLSsKLSsKLSAjIEEgZ2xvYmFsIGxvZyB0aGF0IGlzIGZpbGxl ZCBpbiBieSBpbnN0YW5jZXMgb2YgdGhlIExPR19IQU5ETEVSIGNsYXNzCi0gIyB3aGVuIHRoZXkg YXJlIGNhbGxlZC4KLSBoYW5kbGVyX2NhbGxfbG9nID0gW10KLUBAIC0xMTgsNCArMTI1LDcgQEAg ZGVmIHJlZ2lzdGVyKG5hbWUsIGxvY3VzPU5vbmUpOgotIHJoYW5kbGVyID0gZXhjZXB0aW9uX2hh bmRsZXIoKQotIGhhbmRsZXJfb2JqID0gaGFuZGxlcigpCi0gCi0rIyBEaXNjYXJkIHRoZSBycG0t c3VnZ2VzdGlvbiBoYW5kbGVyLgotK2dkYi5taXNzaW5nX2ZpbGVfaGFuZGxlcnMgPSBbXQotKwot IHByaW50KCJTdWNjZXNzIikKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24v cHktbWlzc2luZy1vYmpmaWxlLnB5IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW1pc3Np bmctb2JqZmlsZS5weQotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW1pc3Npbmct b2JqZmlsZS5weQotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW1pc3Npbmctb2Jq ZmlsZS5weQotQEAgLTE2NCw0ICsxNjQsNyBAQCBkZWYgcmVnaXN0ZXIobmFtZSwgbG9jdXM9Tm9u ZSk6Ci0gcmhhbmRsZXIgPSBleGNlcHRpb25faGFuZGxlcigpCi0gaGFuZGxlcl9vYmogPSBoYW5k bGVyKCkKLSAKLSsjIERpc2NhcmQgdGhlIHJwbS1zdWdnZXN0aW9uIGhhbmRsZXIuCi0rZ2RiLm1p c3NpbmdfZmlsZV9oYW5kbGVycyA9IFtdCi0rCi0gcHJpbnQoIlN1Y2Nlc3MiKQotZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAgYi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhw Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2xp Yi9nZGIuZXhwCi1AQCAtMjU1LDcgKzI1NSw4IEBAIGlmICFbaW5mbyBleGlzdHMgSU5URVJOQUxf R0RCRkxBR1NdIHsKLSAJCSAgICItbngiIFwKLSAJCSAgICItcSIgXAotIAkJICAgey1pZXggInNl dCBoZWlnaHQgMCJ9IFwKLS0JCSAgIHstaWV4ICJzZXQgd2lkdGggMCJ9XV0KLSsJCSAgIHstaWV4 ICJzZXQgd2lkdGggMCJ9IFwKLSsJCSAgIHstaWV4ICJzZXQgcnBtLXN1Z2dlc3Rpb24gZW5hYmxl ZCBvZmYifV1dCi0gCi0gICAgICMgSWYgREVCVUdJTkZPRF9VUkxTIGlzIHNldCwgZ2RiIHdpbGwg dHJ5IHRvIGRvd25sb2FkIHNvdXJjZXMgYW5kCi0gICAgICMgZGVidWcgaW5mbyBmb3IgZi5pLiBz eXN0ZW0gbGlicmFyaWVzLiAgUHJldmVudCB0aGlzLgotQEAgLTI2MTAsNiArMjYxMSwxOCBAQCBw cm9jIGRlZmF1bHRfZ2RiX3N0YXJ0IHsgfSB7Ci0gCX0KLSAgICAgfQotIAotKyAgICAjIFR1cm4g b2ZmIHRoZSBtaXNzaW5nIGRlYnVnIGluZm8gbWVzc2FnZXMgYXMgdGhlIHRlc3RzdWl0ZSBkb2Vz Ci0rICAgICMgbm90IGV4cGVjdCB0aGVtLgotKyAgICBzZW5kX2dkYiAic2V0IHJwbS1zdWdnZXN0 aW9uIGVuYWJsZWQgb2ZmXG4iCi0rICAgIGdkYl9leHBlY3QgMTAgewotKwktcmUgIiRnZGJfcHJv bXB0ICQiIHsKLSsJICAgIHZlcmJvc2UgIkRpc2FibGVkIHRoZSBtaXNzaW5nIGRlYnVnIGluZm8g bWVzc2FnZXMuIiAyCi0rCX0KLSsJdGltZW91dCB7Ci0rCSAgICB3YXJuaW5nICJDb3VsZCBub3Qg ZGlzYWJsZSB0aGUgbWlzc2luZyBkZWJ1ZyBpbmZvIG1lc3NhZ2VzLiIKLSsJfQotKyAgICB9Ci0r Ci0gICAgIGdkYl9kZWJ1Z19pbml0Ci0gICAgIHJldHVybiAwCi0gfQotZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3Vw cG9ydC5leHAKLS0tLSBhL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCi0rKysgYi9n ZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAotQEAgLTMyMSw2ICszMjEsMTcgQEAgcHJv YyBkZWZhdWx0X21pX2dkYl9zdGFydCB7IHsgZmxhZ3Mge30gfSB9IHsKLSAJICAgIHdhcm5pbmcg IkNvdWxkbid0IHNldCB0aGUgd2lkdGggdG8gMC4iCi0gCX0KLSAgICAgfQotKyAgICAjIFR1cm4g b2ZmIHRoZSBtaXNzaW5nIGRlYnVnIGluZm8gbWVzc2FnZXMgYXMgdGhlIHRlc3RzdWl0ZSBkb2Vz Ci0rICAgICMgbm90IGV4cGVjdCB0aGVtLgotKyAgICBzZW5kX2dkYiAiMTkwLWdkYi1zZXQgcnBt LXN1Z2dlc3Rpb24gZW5hYmxlZCBvZmZcbiIKLSsgICAgZ2RiX2V4cGVjdCAxMCB7Ci0rCS1yZSAi LioxOTAtZ2RiLXNldCBycG0tc3VnZ2VzdGlvbiBlbmFibGVkIG9mZlxyXG4xOTBcXFxeZG9uZVxy XG4kbWlfZ2RiX3Byb21wdCQiIHsKLSsJICAgIHZlcmJvc2UgIkRpc2FibGVkIHRoZSBtaXNzaW5n IGRlYnVnIGluZm8gbWVzc2FnZXMuIiAyCi0rCX0KLSsJdGltZW91dCB7Ci0rCSAgICB3YXJuaW5n ICJDb3VsZCBub3QgZGlzYWJsZSB0aGUgbWlzc2luZyBkZWJ1ZyBpbmZvIG1lc3NhZ2VzLiIKLSsJ fQotKyAgICB9Ci0gCi0gICAgIGlmIHsgJHNlcGFyYXRlX2luZmVyaW9yX3B0eSB9IHsKLSAJbWlf Y3JlYXRlX2luZmVyaW9yX3B0eQoKZGlmZiAtLWdpdCBhL2dkYi1ycG0tc3VnZ2VzdGlvbi1zY3Jp cHQucGF0Y2ggYi9nZGItcnBtLXN1Z2dlc3Rpb24tc2NyaXB0LnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3ZWNmOTEKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItcnBt LXN1Z2dlc3Rpb24tc2NyaXB0LnBhdGNoCkBAIC0wLDAgKzEsMTAxMSBAQAorRnJvbSBGRURPUkFf UEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJldyBCdXJnZXNzIDxh YnVyZ2Vzc0ByZWRoYXQuY29tPgorRGF0ZTogVGh1LCA3IE1hciAyMDI0IDE1OjE0OjIzICswMDAw CitTdWJqZWN0OiBnZGItcnBtLXN1Z2dlc3Rpb24tc2NyaXB0LnBhdGNoCisKKzs7IE5vdCBhIGJh Y2twb3J0LiAgQWRkIGEgbmV3IHNjcmlwdCB3aGljaCBob29rcyBpbnRvIEdEQiBhbmQgc3VnZ2Vz dHMKKzs7IFJQTXMgdG8gaW5zdGFsbCB3aGVuIEdEQiBmaW5kcyBhbiBvYmpmaWxlIHdpdGggbm8g ZGVidWcgaW5mby4KKworZ2RiOiBhZGQgc2NyaXB0IHdoaWNoIHdpbGwgc3VnZ2VzdCBkZWJ1Z2lu Zm8gUlBNcyB0byBpbnN0YWxsCisKK1RoaXMgc2NyaXB0IGhvb2tzIGludG8gR0RCJ3MgbWlzc2lu ZyBkZWJ1ZyBpbmZvIFB5dGhvbiBBUEkgYW5kCitzdWdnZXN0cyBkZWJ1Z2luZm8gUlBNcyB0byBp bnN0YWxsLgorCitkaWZmIC0tZ2l0IGEvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluIGIv Z2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCistLS0gYS9nZGIvZGF0YS1kaXJlY3Rvcnkv TWFrZWZpbGUuaW4KKysrKyBiL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbgorQEAgLTky LDYgKzkyLDcgQEAgUFlUSE9OX0ZJTEVfTElTVCA9IFwKKyAJZ2RiL2NvbW1hbmQvbWlzc2luZ19m aWxlcy5weSBcCisgCWdkYi9jb21tYW5kL3ByZXR0eV9wcmludGVycy5weSBcCisgCWdkYi9jb21t YW5kL3Byb21wdC5weSBcCisrCWdkYi9jb21tYW5kL3JwbS1zdWdnZXN0aW9ucy5weSBcCisgCWdk Yi9jb21tYW5kL3R5cGVfcHJpbnRlcnMucHkgXAorIAlnZGIvY29tbWFuZC91bndpbmRlcnMucHkg XAorIAlnZGIvY29tbWFuZC94bWV0aG9kcy5weSBcCitkaWZmIC0tZ2l0IGEvZ2RiL2RvYy9nZGIu dGV4aW5mbyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KKy0tLSBhL2dkYi9kb2MvZ2RiLnRleGluZm8K KysrKyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KK0BAIC0xODYsNiArMTg2LDcgQEAgc29mdHdhcmUg aW4gZ2VuZXJhbC4gIFdlIHdpbGwgbWlzcyBoaW0uCisgKiBUcmFjZSBGaWxlIEZvcm1hdDo6CQlA dmFsdWV7R0RCTn0gdHJhY2UgZmlsZSBmb3JtYXQKKyAqIEluZGV4IFNlY3Rpb24gRm9ybWF0Ojog ICAgICAgIC5nZGJfaW5kZXggc2VjdGlvbiBmb3JtYXQKKyAqIERlYnVnaW5mb2Q6OiAgICAgICAg ICAgICAgICAgIERvd25sb2FkIGRlYnVnZ2luZyByZXNvdXJjZXMgd2l0aCBAY29kZXtkZWJ1Z2lu Zm9kfQorKyogUlBNIFN1Z2dlc3Rpb25zOjoJCVJQTSBTdWdnZXN0aW9ucyBmcm9tIEdEQgorICog TWFuIFBhZ2VzOjogICAgICAgICAgICAgICAgICAgTWFudWFsIHBhZ2VzCisgKiBDb3B5aW5nOjog ICAgICAgICAgICAgICAgICAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBzYXlzCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3cgeW91IGNhbiBjb3B5IGFuZCBzaGFyZSBA dmFsdWV7R0RCTn0KK0BAIC01MDU4OCw2ICs1MDU4OSwxMTEgQEAgU2hvdyB0aGUgY3VycmVudCB2 ZXJib3NpdHkgc2V0dGluZy4KKyAKKyBAZW5kIHRhYmxlCisgCisrQG5vZGUgUlBNIFN1Z2dlc3Rp b25zCisrQGFwcGVuZGl4IFJlY2VpdmluZyBSUE0gaW5zdGFsbGF0aW9uIHN1Z2dlc3Rpb25zCisr QGNpbmRleCBycG0gc3VnZ2VzdGlvbnMKKysKKytXaGVuIEB2YWx1ZXtHREJOfSBsb2FkcyBhbiBl eGVjdXRhYmxlLCBvciBzaGFyZWQgbGlicmFyeSwgYW5kIGNhbm5vdAorK2ZpbmQgdGhlIGNvcnJl c3BvbmRpbmcgZGVidWcgaW5mb3JtYXRpb24sIEB2YWx1ZXtHREJOfSB3aWxsIGNoZWNrIHRvCisr c2VlIGlmIGFuIFJQTSBpcyBhdmFpbGFibGUgd2hpY2ggY291bGQgcHJvdmlkZSB0aGUgbWlzc2lu ZyBkZWJ1ZworK2luZm9ybWF0aW9uLiAgSWYgYSBzdWl0YWJsZSBSUE0gaXMgZm91bmQgdGhlbiBA dmFsdWV7R0RCTn0gd2lsbCBwcmludAorK2EgaGludCBiZWZvcmUgdGhlIG5leHQgcHJvbXB0IGlz IGRpc3BsYXllZDoKKysKKytAc21hbGxleGFtcGxlCisrKEB2YWx1ZXtHREJQfSkgZmlsZSAvYmlu L2xzCisrUmVhZGluZyBzeW1ib2xzIGZyb20gL2Jpbi9scy4uLgorK1JlYWRpbmcgc3ltYm9scyBm cm9tIC5nbnVfZGVidWdkYXRhIGZvciAvdXNyL2Jpbi9scy4uLgorKyhObyBkZWJ1Z2dpbmcgc3lt Ym9scyBmb3VuZCBpbiAuZ251X2RlYnVnZGF0YSBmb3IgL3Vzci9iaW4vbHMpCisrTWlzc2luZyBy cG1zLCB0cnk6IGRuZiAtLWVuYWJsZXJlcG89JypkZWJ1ZyonIGluc3RhbGwgY29yZXV0aWxzLWRl YnVnaW5mby05LjMtNy5mYzM5Lng4Nl82NAorKyhAdmFsdWV7R0RCUH0pCisrQGVuZCBzbWFsbGV4 YW1wbGUKKysKKytJbiB0aGlzIGNhc2UsIGluc3RhbGxpbmcgQGZpbGV7Y29yZXV0aWxzLWRlYnVn aW5mby05LjMtNy5mYzM5Lng4Nl82NH0KKyt3aWxsIHByb3ZpZGUgdGhlIG1pc3NpbmcgZGVidWcg aW5mb3JtYXRpb24gZm9yIEBmaWxley9iaW4vbHN9LiAgSXQgaXMKKyt1cCB0byB5b3UgdG8gaW5z dGFsbCB0aGUgc3VnZ2VzdGVkIHBhY2thZ2UsIGlmIHBvc3NpYmxlLCBhbmQgYWZ0ZXIKKyt0aGF0 IHJlbG9hZCB0aGUgZXhlY3V0YWJsZSBpbiBAdmFsdWV7R0RCTn0gc28gdGhhdCB0aGUgbmV3bHkg aW5zdGFsbGVkCisrZGVidWcgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kLgorKworK1RoZSBSUE0g c3VnZ2VzdGlvbiBmZWF0dXJlIGNhbiBiZSBkaXNhYmxlZDoKKysKKytAdGFibGUgQGNvZGUKKytA a2luZGV4IHNldCBycG0tc3VnZ2VzdGlvbiBlbmFibGVkCisrQGtpbmRleCBzaG93IHJwbS1zdWdn ZXN0aW9uIGVuYWJsZWQKKytAY2luZGV4IHJwbSBzdWdnZXN0aW9ucywgZGlzYWJsaW5nCisrQGl0 ZW0gc2V0IHJwbS1zdWdnZXN0aW9uIGVuYWJsZWQgQHJ7W31vbkBye3x9b2ZmQHJ7XX0KKytAaXRl bXggc2hvdyBycG0tc3VnZ2VzdGlvbiBlbmFibGVkCisrV2hlbiBAc2FtcHtvbn0gQHZhbHVle0dE Qk59IHdpbGwgbWFrZSBSUE0gc3VnZ2VzdGlvbnMgd2hlcmUgcG9zc2libGUuCisrV2hlbiBAc2Ft cHtvZmZ9IGFsbCBSUE0gc3VnZ2VzdGlvbiB3aWxsIGJlIGRpc2FibGVkLgorK0BlbmQgdGFibGUK KysKKytXaGVuIG9wZW5pbmcgYSBjb3JlIGZpbGUgKEBweHJlZntjb3JlLWZpbGUgY29tbWFuZH0p LCBpdCBtYXkgYmUgdGhlCisrY2FzZSB0aGF0IG5vdCBvbmx5IGlzIHRoZSBkZWJ1ZyBpbmZvcm1h dGlvbiBtaXNzaW5nLCBidXQgdGhlCisrY29ycmVzcG9uZGluZyBleGVjdXRhYmxlIGl0c2VsZiBp cyBtaXNzaW5nLiAgRm9yIGV4YW1wbGUsIGlmIGEgY29yZQorK2ZpbGUgaXMgY29waWVkIGZyb20g b25lIG1hY2hpbmUgdG8gYW5vdGhlciBpbiBvcmRlciB0byBkZWJ1Zy4KKysKKytJbiB0aGlzIGNh c2UgQHZhbHVle0dEQk59IGlzIGFibGUgdG8gc3VnZ2VzdCBhIGNvbW1hbmQgd2hpY2ggd2lsbAor K2luc3RhbGwgdGhlIG1pc3NpbmcgZXhlY3V0YWJsZSBiYXNlZCBvbiB0aGUgYnVpbGQtaWQgb2Yg dGhlCisrZXhlY3V0YWJsZS4gIEZvciBleGFtcGxlOgorKworK0BzbWFsbGV4YW1wbGUKKysoQHZh bHVle0dEQlB9KSBjb3JlLWZpbGUgL3RtcC9jb3JlLjU0ODkKKyt3YXJuaW5nOiBDYW4ndCBvcGVu IGZpbGUgL3Vzci9iaW4vc2wgZHVyaW5nIGZpbGUtYmFja2VkIG1hcHBpbmcgbm90ZSBwcm9jZXNz aW5nCisrW05ldyBMV1AgNTQ4OV0KKytDb3JlIHdhcyBnZW5lcmF0ZWQgYnkgYHNsJy4KKytQcm9n cmFtIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgU0lHUVVJVCwgUXVpdC4KKysjMCAgMHgwMDAwN2Yx YjQxY2VkMWE3IGluID8/ICgpCisrTWlzc2luZyBmaWxlKHMpLCB0cnk6IGRuZiAtLWVuYWJsZXJl cG89JypkZWJ1ZyonIGluc3RhbGwgL3Vzci9saWIvLmJ1aWxkLWlkLzMzLzJmMWE4ZTU2NjkzOTYw ZTNiZWIyZDcwY2Q3OWRkZmVjNDUxY2MzIC91c3IvbGliL2RlYnVnLy5idWlsZC1pZC8zMy8yZjFh OGU1NjY5Mzk2MGUzYmViMmQ3MGNkNzlkZGZlYzQ1MWNjMy5kZWJ1ZworKyhAdmFsdWV7R0RCUH0p CisrQGVuZCBzbWFsbGV4YW1wbGUKKysKKytUaGUgY29yZSBmaWxlIHdhcyBnZW5lcmF0ZWQgZnJv bSB0aGUgQGZpbGV7L3Vzci9iaW4vc2x9IGJpbmFyeSwgd2hpY2gKKytpcyBub3QgcHJlc2VudCBv biB0aGUgbWFjaGluZSBvcGVuaW5nIHRoZSBjb3JlIGZpbGUuICBAdmFsdWV7R0RCTn0gaGFzCisr c3VnZ2VzdGVkIGEgY29tbWFuZCwgYmFzZWQgb24gdGhlIGJ1aWxkLWlkIG9mIHRoZSBiaW5hcnks IHdoaWNoIHdhcworK2V4dHJhY3RlZCBmcm9tIHRoZSBjb3JlIGZpbGUsIHRoYXQgd291bGQgaW5z dGFsbCBib3RoIHRoZSBtaXNzaW5nCisrYmluYXJ5LCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgZGVi dWcgaW5mb3JtYXRpb24uCisrCisrVW5mb3J0dW5hdGVseSwgQHZhbHVle0dEQk59IGRvZXNuJ3Qg a25vdyBpZiB0aGUgc3VnZ2VzdGVkIGNvbW1hbmQgd2lsbAorK2FjdHVhbGx5IGZpbmQgYSBtYXRj aGluZyBSUE0gb3Igbm90LiAgUXVlcnlpbmcgdGhlIFJQTSBkYXRhYmFzZSB0byBzZWUKKyt3aGlj aCBwYWNrYWdlcywgaWYgYW55LCB3aWxsIHByb3ZpZGUgYSBmaWxlIHdpdGggdGhlIGdpdmVuIGJ1 aWxkLWlkLAorK2lzIHJhdGhlciBzbG93LiAgQXMgQGZpbGV7L3Vzci9iaW4vc2x9IGlzIGF2YWls YWJsZSBpbiBhbiBSUE0sIHRoZW4KKyt0aGUgYWJvdmUgY29tbWFuZCB3aWxsIHN1Y2NlZWQuCisr CisrSXQgaXMgcG9zc2libGUgdG8gaGF2ZSBAdmFsdWV7R0RCTn0gY2hlY2sgdG8gc2VlIGlmIHRo ZXJlIGlzIGEgcGFja2FnZQorK2F2YWlsYWJsZSBiZWZvcmUgbWFraW5nIHRoZSBzdWdnZXN0aW9u LCBidXQgdGhpcyBpcyBzaWduaWZpY2FudGx5Cisrc2xvd2VyLiAgVG8gZW5hYmxlIHRoaXMgbW9k ZSB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kOgorKworK0B0YWJsZSBAY29kZQorK0BraW5kZXgg c2V0IHJwbS1zdWdnZXN0aW9uIGJ1aWxkLWlkLW1vZGUKKytAa2luZGV4IHNob3cgcnBtLXN1Z2dl c3Rpb24gYnVpbGQtaWQtbW9kZQorK0BjaW5kZXggcnBtIHN1Z2dlc3Rpb25zLCBidWlsZC1pZC1t b2RlCisrQGl0ZW0gc2V0IHJwbS1zdWdnZXN0aW9uIGJ1aWxkLWlkLW1vZGUgQHJ7W31mYXN0QHJ7 fH1zbG93QHJ7XX0KKytAaXRlbXggc2hvdyBycG0tc3VnZ2VzdGlvbiBidWlsZC1pZC1tb2RlCisr V2hlbiBzZXQgdG8gQHNhbXB7ZmFzdH0sIHdoaWNoIGlzIHRoZSBkZWZhdWx0LCBAdmFsdWV7R0RC Tn0gd2lsbCBvZmZlcgorK3N1Z2dlc3Rpb25zIGJhc2VkIG9uIHRoZSBidWlsZC1pZCBvZiBhbnkg bWlzc2luZyBleGVjdXRhYmxlcyBvciBzaGFyZWQKKytsaWJyYXJpZXMgd2hpbGUgb3BlbmluZyBh IGNvcmUgZmlsZS4gIFRoaXMgaXMgZmFzdCwgYnV0IEB2YWx1ZXtHREJOfQorK2hhcyBub3QgY2hl Y2tlZCBpZiB0aGVyZSBpcyBhIHBhY2thZ2UgYXZhaWxhYmxlIHRoYXQgY2FuIHN1cHBseSB0aGUK KytyZXF1aXJlZCBmaWxlLCBzbyBydW5uaW5nIHRoZSBzdWdnZXN0ZWQgY29tbWFuZCBtaWdodCBu b3QgaW5zdGFsbCBhbnkKKytwYWNrYWdlcy4KKysKKytXaGVuIHNldCB0byBAc2FtcHtzbG93fSwg ZWFjaCB0aW1lIEB2YWx1ZXtHREJOfSBlbmNvdW50ZXJzIGFuCisrZXhlY3V0YWJsZSwgb3Igc2hh cmVkIGxpYnJhcnksIHRoYXQgaXMgbWlzc2luZywgQHZhbHVle0dEQk59IHdpbGwKKytjaGVjayB0 byBzZWUgaWYgdGhlcmUgaXMgYW4gUlBNIGF2YWlsYWJsZSB0aGF0IHdpbGwgc3VwcGx5IHRoZSBt aXNzaW5nCisrYmluYXJ5LiAgSWYgYSBzdWl0YWJsZSBSUE0gaXMgZm91bmQgdGhlbiBAdmFsdWV7 R0RCTn0gd2lsbCBvZmZlciBhCisrY29tbWFuZCB3aGljaCB3aWxsIGluc3RhbGwgdGhlIG1pc3Np bmcgUlBNLiAgSWYgbm8gc3VpdGFibGUgUlBNIGlzCisrZm91bmQgdGhlbiBAdmFsdWV7R0RCTn0g d2lsbCBtYWtlIG5vIHN1Z2dlc3Rpb25zLgorK0BlbmQgdGFibGUKKysKKytJdCBpcyBwb3NzaWJs ZSB0byByZXZpZXcgYWxsIG9mIHRoZSBwcmV2aW91cyBSUE0gc3VnZ2VzdGlvbnMgdGhhdAorK0B2 YWx1ZXtHREJOfSBoYXMgbWFkZSB1c2luZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CisrCisrQHRh YmxlIEBjb2RlCisrQGtpbmRleCBpbmZvIHJwbS1zdWdnZXN0aW9ucworK0BjaW5kZXggcnBtIHN1 Z2dlc3Rpb25zLCBsaXN0aW5nCisrQGl0ZW0gaW5mbyBycG0tc3VnZ2VzdGlvbnMKKytMaXN0IGFs bCBvZiB0aGUgUlBNIHN1Z2dlc3Rpb25zIEB2YWx1ZXtHREJOfSBoYXMgbWFkZSBzaW5jZSB0aGUK KytleGVjdXRhYmxlIHdhcyBsYXN0IGNoYW5nZWQuCisrQGVuZCB0YWJsZQorKworIEBub2RlIE1h biBQYWdlcworIEBhcHBlbmRpeCBNYW51YWwgcGFnZXMKKyBAY2luZGV4IE1hbiBwYWdlcworZGlm ZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3JwbS1zdWdnZXN0aW9ucy5weSBi L2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3JwbS1zdWdnZXN0aW9ucy5weQorbmV3IGZpbGUg bW9kZSAxMDA2NDQKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi9weXRob24vbGliL2dkYi9jb21t YW5kL3JwbS1zdWdnZXN0aW9ucy5weQorQEAgLTAsMCArMSw1MjcgQEAKKysjIENvcHlyaWdodCAy MDIzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysj IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KKysKKytpbXBvcnQgZ2RiCisraW1wb3J0IGdkYi5taXNzaW5nX2RlYnVnCisr aW1wb3J0IGdkYi5taXNzaW5nX29iamZpbGUKKysKKysjIFRoZXNlIG1vZHVsZXMgYXJlIGFsbCBz eXN0ZW0gbW9kdWxlcywgYW5kIHNob3VsZCBiZSBhdmFpbGFibGUgb24gYW55CisrIyBjb3JyZWN0 bHkgc2V0dXAgUHl0aG9uIGluc3RhbGwuCisraW1wb3J0IHN5cworK2ltcG9ydCBvcworK2ltcG9y dCBzdWJwcm9jZXNzCisraW1wb3J0IHJlCisrZnJvbSB0aHJlYWRpbmcgaW1wb3J0IFRocmVhZAor K2ltcG9ydCB0aW1lCisrCisrdHJ5OgorKyAgICBpbXBvcnQgcnBtCisrZXhjZXB0IE1vZHVsZU5v dEZvdW5kRXJyb3I6CisrICAgICMgVGhlICJSUE0gc3VnZ2VzdGlvbnMiIG1lY2hhbmlzbSB3aWxs IG5vdCB3b3JrIHdpdGhvdXQgdGhlIChweXRob24pCisrICAgICMgcnBtIG1vZHVsZS4gIEluZm9y bSB0aGUgdXNlciBvZiB0aGlzLCBidXQgd2FpdCB0byBkbyBzbyB1bnRpbAorKyAgICAjIGp1c3Qg cHJpb3IgdG8gcHJpbnRpbmcgdGhlIEdEQiBwcm9tcHQuICBJZiB3ZSBkbyBpdCByaWdodCBhd2F5 LAorKyAgICAjIHRoZSBtZXNzYWdlIHR5cGljYWxseSBhcHBlYXJzIGJlZm9yZSB0aGUgdmVyc2lv biBhbmQgY29weXJpZ2h0CisrICAgICMgaW5mbywgd2hpY2ggaXMgZWFzaWx5IG1pc3NlZCBieSBt YW55IHVzZXJzLiAgQWRkaXRpb25hbGx5LCBpdAorKyAgICAjIHNlZW1zIHRoYXQgc2V2ZXJhbCBv dGhlciBwYWNrYWdlcyB3aGljaCBwYXJzZSBHREIgdmVyc2lvbiBpbmZvCisrICAgICMgYXJlIGNv bmZ1c2VkIGJ5IGFuIGVhcmx5IGVycm9yIG1lc3NhZ2UgcmVnYXJkaW5nIGEgbWlzc2luZworKyAg ICAjIHB5dGhvbjMtcnBtIHBhY2thZ2UsIHNvIHdhaXRpbmcgdG8gcHJpbnQgdGhlIGVycm9yIGFs bG93cyB0aG9zZQorKyAgICAjIGFwcGxpY2F0aW9ucyB0byB3b3JrIGFzIHRoZXkgdXNlZCB0by4K KysgICAgZGVmIGJlZm9yZV9wcm9tcHQoKToKKysgICAgICAgIHByaW50KAorKyAgICAgICAgICAg ICgiXG5VbmFibGUgdG8gbG9hZCB0aGUgUHl0aG9uICdycG0nIG1vZHVsZS4gIExhY2sgb2YgdGhp cyBtb2R1bGUgZGlzYWJsZXNcbiIKKysgICAgICAgICAgICAgInRoZSBSUE0gc3VnZ2VzdGlvbnMg bWVjaGFuaXNtIHdoaWNoIHJlY29tbWVuZHMgc2hlbGwgY29tbWFuZHMgZm9yXG4iCisrICAgICAg ICAgICAgICJpbnN0YWxsaW5nIG1pc3NpbmcgZGVidWdpbmZvIHBhY2thZ2VzLiAgVG8gZW5hYmxl IHRoaXMgZnVuY3Rpb25hbGl0eSxcbiIKKysgICAgICAgICAgICAgInBsZWFzZSBpbnN0YWxsIHRo ZSBweXRob24zLXJwbSBwYWNrYWdlLiIpLAorKyAgICAgICAgICAgIGZpbGU9c3lzLnN0ZGVycgor KyAgICAgICAgKQorKyAgICAgICAgZ2RiLmV2ZW50cy5iZWZvcmVfcHJvbXB0LmRpc2Nvbm5lY3Qo YmVmb3JlX3Byb21wdCkKKysKKysgICAgZ2RiLmV2ZW50cy5iZWZvcmVfcHJvbXB0LmNvbm5lY3Qo YmVmb3JlX3Byb21wdCkKKysKKysgICAgIyBJbXBsZW1lbnQgJ2luZm8gcnBtLXN1Z2dlc3Rpb25z JyB3aGVuIHRoZSAncnBtJyBtb2R1bGUgaXMgbm90CisrICAgICMgYXZhaWxhYmxlLiAgSnVzdCB0 aHJvd3MgYW4gZXJyb3IuCisrICAgIGRlZiBpbmZvX3JwbV9zdWdnZXN0aW9ucygpOgorKyAgICAg ICAgcmFpc2UgZ2RiLkdkYkVycm9yKCJycG0tc3VnZ2VzdGlvbnMgYXJlIGRpc2FibGVkIGFzIHRo ZSBQeXRob24gJ3JwbScgbW9kdWxlIGlzIG5vdCBpbnN0YWxsZWQiKQorK2Vsc2U6CisrICAgICMg VHJhY2sgYWxsIHRoZSBSUE1zIHN1Z2dlc3RlZCBkdXJpbmcgYSBzaW5nbGUgZGVidWcgc2Vzc2lv biBzbyB3ZQorKyAgICAjIGRvbid0IHN1Z2dlc3QgdGhlIHNhbWUgUlBNIHR3aWNlLiAgVGhpcyBp cyBvbmx5IGNsZWFyZWQgd2hlbiB0aGUKKysgICAgIyBtYWluIGV4ZWN1dGFibGUgaXMgY2hhbmdl ZC4KKysgICAgX19taXNzaW5nX3JwbXMgPSB7fQorKworKyAgICAjIFRyYWNrIGFueSBtaXNzaW5n IFJQTXMgdGhhdCBoYXZlIGJlZW4gZGlzY292ZXJlZCBzaW5jZSB0aGUgbGFzdCB0aW1lCisrICAg ICMgdGhlIHByb21wdCB3YXMgZGlzcGxheWVkLiAgUlBNcyBpbiBoZXJlIGFyZSBhbHNvIHByZXNl bnQgaW4gdGhlCisrICAgICMgX19NSVNTSU5HX1JQTVMgZGljdGlvbmFyeSwgYnV0IHRoaXMgZGlj dGlvbmFyeSBpcyBjbGVhcmVkIGVhY2ggdGltZQorKyAgICAjIHRoZSBwcm9tcHQgaXMgc2hvd24u CisrICAgIF9fc3VnZ2VzdF9ycG1zID0ge30KKysKKysgICAgIyBUcmFjayBhbGwgdGhlIGJ1aWxk LWlkcyBzdWdnZXN0ZWQgZHVyaW5nIGEgc2luZ2xlIGRlYnVnIHNlc3Npb24gc28gd2UKKysgICAg IyBkb24ndCBzdWdnZXN0IGluc3RhbGxpbmcgdXNpbmcgdGhlIHNhbWUgYnVpbGQtaWQgdHdpY2Uu ICBUaGlzIGlzIG9ubHkKKysgICAgIyBjbGVhcmVkIHdoZW4gdGhlIG1haW4gZXhlY3V0YWJsZSBp cyBjaGFuZ2VkLgorKyAgICBfX21pc3NpbmdfYnVpbGRfaWRzID0ge30KKysKKysgICAgIyBUcmFj ayBhbnkgYnVpbGQtaWRzIHRoYXQgaGF2ZSBiZWVuIGRpc2NvdmVyZWQgbWlzc2luZyBzaW5jZSB0 aGUgbGFzdAorKyAgICAjIHRpbWUgdGhlIHByb21wdCB3YXMgZGlzcGxheWVkLiAgQnVpbGQtaWRz IGluIGhlcmUgYXJlIGFsc28gcHJlc2VudCBpbgorKyAgICAjIHRoZSBfX01JU1NJTkdfQlVJTERf SURTIGRpY3Rpb25hcnksIGJ1dCB0aGlzIGRpY3Rpb25hcnkgaXMgY2xlYXJlZAorKyAgICAjIGVh Y2ggdGltZSB0aGUgcHJvbXB0IGlzIHNob3duLgorKyAgICBfX3N1Z2dlc3RfYnVpbGRfaWRzID0g e30KKysKKysgICAgIyBUaGUgYnVpbGQtaWQgdG8gUlBNIGxvb2t1cCBpcyB2ZXJ5IHNsb3cuICBU aGlzIGNhY2hlIG1hcHMKKysgICAgIyBidWlsZC1pZHMgdG8gdGhlIHNldCBvZiBSUE0gd2UgY2Fu IHN1Z2dlc3QgaW5zdGFsbGluZy4gIFRoZSBrZXkKKysgICAgIyBpcyB0aGUgYnVpbGQtaWQgc3Ry aW5nLCBhbmQgdGhlIHZhbHVlIGlzIGEgbGlzdCBvZiBSUE0gbmFtZXMsIG9yCisrICAgICMgTm9u ZSBpZiB0aGVyZSB3YXMgYW4gZXJyb3Igd2l0aCB0aGUgYnVpbGQtaWQgdG8gUlBNIGxvb2t1cC4K KysgICAgIworKyAgICAjIFRoaXMgY2FjaGUgaXMgbmV2ZXIgY2xlYXJlZCwgZXZlbiB3aGVuIHRo ZSBleGVjdXRhYmxlIGlzCisrICAgICMgY2hhbmdlZC4gIFRoZSBidWlsZC1pZHMgc2hvdWxkIGJl IHVuaXF1ZSwgc28gYSBidWlsZC1pZCBsb29rdXAKKysgICAgIyBzaG91bGQgYmUgZ29vZCBmb3Ig dGhlIGxpZmV0aW1lIG9mIHRoZSBzZXNzaW9uLgorKyAgICBfX2J1aWxkX2lkX2xvb2t1cF9jYWNo ZSA9IHt9CisrCisrICAgICMgV2hlbiBzZWFyY2hpbmcgZm9yIGFuIFJQTSBnaXZlbiBhIGJ1aWxk LWlkLCBpZiB0aGUgc2VhcmNoIHRha2VzCisrICAgICMgdG9vIGxvbmcsIHRoZW4gYSBtZXNzYWdl IGlzIHByaW50ZWQgdG8gdGhlIHVzZXIuICBXZSBvbmx5IHByaW50CisrICAgICMgdGhlIG1lc3Nh Z2Ugb25jZSBiZXR3ZWVuIGVhY2ggR0RCIHByb21wdC4gIFRoaXMgZmxhZyBpcyBzZXQgVHJ1ZQor KyAgICAjIHdoZW4gdGhlIG1lc3NhZ2UgaXMgcHJpbnRlZCwgYW5kIHJlc2V0IHRvIEZhbHNlIHdo ZW4gYSBwcm9tcHQgaXMKKysgICAgIyBkaXNwbGF5ZWQuCisrICAgIF9fc2VhcmNoaW5nX21lc3Nh Z2VfcHJpbnRlZCA9IEZhbHNlCisrCisrICAgICMgQWRkIGEgc3VnZ2VzdGlvbiB0byBpbnN0YWxs IFJQTV9OQU1FICh0aGUgZnVsbCBuYW1lIG9mIGFuIFJQTSkKKysgICAgIyB0byB0aGUgbGlzdCBv ZiBzdWdnZXN0aW9ucyB0byBtYWtlIHRoZSBuZXh0IHRpbWUgYSBwcm9tcHQgaXMKKysgICAgIyBk aXNwbGF5ZWQuCisrICAgIGRlZiBhZGRfcnBtX3N1Z2dlc3Rpb24ocnBtX25hbWUpOgorKyAgICAg ICAgZ2xvYmFsIF9fbWlzc2luZ19ycG1zCisrICAgICAgICBnbG9iYWwgX19zdWdnZXN0X3JwbXMK KysKKysgICAgICAgIGlmIG5vdCBycG1fbmFtZSBpbiBfX21pc3NpbmdfcnBtczoKKysgICAgICAg ICAgICBfX3N1Z2dlc3RfcnBtc1tycG1fbmFtZV0gPSBUcnVlCisrICAgICAgICAgICAgX19taXNz aW5nX3JwbXNbcnBtX25hbWVdID0gVHJ1ZQorKworKyAgICAjIFJldHVybiBUcnVlIGlmIFJQTV9O QU1FIGlzIGluc3RhbGxlZCwgd2hlcmUgUlBNX05BTUUgaXMgdGhlIGZ1bGwKKysgICAgIyBuYW1l IG9mIGFuIFJQTS4KKysgICAgZGVmIGlzX3JwbV9pbnN0YWxsZWQodHMsIHJwbV9uYW1lKToKKysg ICAgICAgIHJlcyA9IHRzLmRiTWF0Y2gocnBtLlJQTURCSV9MQUJFTCwgcnBtX25hbWUpCisrICAg ICAgICByZXR1cm4gbGVuKHJlcykgPiAwCisrCisrICAgICMgQWRkIGEgc3VnZ2VzdGlvbiB0byBp bnN0YWxsIFJQTXMgYmFzZWQgb24gQlVJTERfSUQsIGEgc3RyaW5nCisrICAgICMgY29udGFpbmlu ZyBhIGJ1aWxkLWlkLCB0byB0aGUgbGlzdCBvZiBzdWdnZXN0aW9ucyB0byBtYWtlIHRoZSBuZXh0 CisrICAgICMgdGltZSBhIHByb21wdCBpcyBkaXNwbGF5ZWQuCisrICAgIGRlZiBhZGRfYnVpbGRf aWRfc3VnZ2VzdGlvbihidWlsZF9pZCk6CisrICAgICAgICBnbG9iYWwgX19taXNzaW5nX2J1aWxk X2lkcworKyAgICAgICAgZ2xvYmFsIF9fc3VnZ2VzdF9idWlsZF9pZHMKKysKKysgICAgICAgIGlm IG5vdCBidWlsZF9pZCBpbiBfX21pc3NpbmdfYnVpbGRfaWRzOgorKyAgICAgICAgICAgIF9fc3Vn Z2VzdF9idWlsZF9pZHNbYnVpbGRfaWRdID0gVHJ1ZQorKyAgICAgICAgICAgIF9fbWlzc2luZ19i dWlsZF9pZHNbYnVpbGRfaWRdID0gVHJ1ZQorKworKyAgICAjIFJldHVybiB0cnVlIGlmICcvdXNy L2xpYicgaXMgaW4gdGhlIGRlYnVnLWZpbGUtZGlyZWN0b3J5IGxpc3QuCisrICAgICMgU3lzdGVt IHBhY2thZ2VzIGluc3RhbGwgdGhlaXIgZGVidWcgaW5mb3JtYXRpb24gaW50byAvdXNyL2xpYiwK KysgICAgIyBzbyBpZiBHREIgaXNuJ3QgbG9va2luZyBpbiB0aGF0IGRpcmVjdG9yeSwgdGhlbiB0 aGVyZSdzIG5vCisrICAgICMgcmVhc29uIHRvIHRyeSBhbmQgZmlndXJlIG91dCBhIHN1aXRhYmxl IFJQTSB0byBpbnN0YWxsLgorKyAgICBkZWYgdXNpbmdfc3VpdGFibGVfZGVidWdfZmlsZV9kaXJl Y3RvcnkoKToKKysgICAgICAgIGRlYnVnX2ZpbGVfZGlyZWN0b3JpZXMgPSBnZGIucGFyYW1ldGVy KCJkZWJ1Zy1maWxlLWRpcmVjdG9yeSIpCisrICAgICAgICBmb3IgZCBpbiBkZWJ1Z19maWxlX2Rp cmVjdG9yaWVzLnNwbGl0KG9zLnBhdGhzZXApOgorKyAgICAgICAgICAgIGlmIGRbOjhdID09ICIv dXNyL2xpYiI6CisrICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisrICAgICAgICByZXR1cm4g RmFsc2UKKysKKysgICAgIyBSZXR1cm4gVHJ1ZSBpZiBycG0tc3VnZ2VzdGlvbiBpcyBkaXNhYmxl ZCBmb3IgYW55IHJlYXNvbi4KKysgICAgZGVmIHJwbV9zdWdnZXN0aW9uX2lzX2Rpc2FibGVkKCk6 CisrICAgICAgICAjIElmIC91c3IvbGliLyBpcyBub3QgYmVpbmcgdXNlZCB0byBmaW5kIGRlYnVn IGluZm9ybWF0aW9uCisrICAgICAgICAjIHRoZW4gdGhlcmUncyBubyBwb2ludCBvZmZlcmluZyBh bnkgUlBNcyBhcyBHREIgd291bGQgbm90CisrICAgICAgICAjIGZpbmQgdGhlIG5ld2x5IGluc3Rh bGxlZCBjb250ZW50LgorKyAgICAgICAgaWYgbm90IHVzaW5nX3N1aXRhYmxlX2RlYnVnX2ZpbGVf ZGlyZWN0b3J5KCk6CisrICAgICAgICAgICAgcmV0dXJuIFRydWUKKysKKysgICAgICAgICMgSXMg J3JwbS1zdWdnZXN0aW9uIGVuYWJsZWQnIHNldCB0byAnb2ZmJz8KKysgICAgICAgIGlmIG5vdCBw YXJhbV9ycG1fc3VnZ2VzdGlvbl9lbmFibGVkLnZhbHVlOgorKyAgICAgICAgICAgIHJldHVybiBU cnVlCisrCisrICAgICAgICByZXR1cm4gRmFsc2UKKysKKysKKysgICAgIyBMb29rdXAgUlBNcyB0 aGF0IG1pZ2h0IHByb3ZpZGUgdGhlIGRlYnVnIGluZm9ybWF0aW9uIGZvciBGSUxFTkFNRSwKKysg ICAgIyB3aGljaCBpcyBhIHN0cmluZyBjb250YWluaW5nIHRoZSBwYXRoIHRvIGFuIG9iamVjdCBm aWxlIEdEQiBjb3VsZAorKyAgICAjIG5vdCBmaW5kIGFueSBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3Iu CisrICAgICMKKysgICAgIyBJZiBhIHBvc3NpYmxlIFJQTSBpcyBmb3VuZCB0aGVuIHRoaXMgaXMg YWRkZWQgdG8gdGhlIGdsb2JhbHMKKysgICAgIyBfX01JU1NJTkdfUlBNUyBhbmQgX19TVUdHRVNU X1JQTVMsIHdoaWNoIGFyZSB1c2VkIGVsc2V3aGVyZSBpbiB0aGlzCisrICAgICMgc2NyaXB0Lgor KyAgICBkZWYgZmluZF9kZWJ1Z19zdWdnZXN0aW9ucyhmaWxlbmFtZSk6CisrICAgICAgICBpZiBy cG1fc3VnZ2VzdGlvbl9pc19kaXNhYmxlZCgpOgorKyAgICAgICAgICAgIHJldHVybgorKworKyAg ICAgICAgdHMgPSBycG0uVHJhbnNhY3Rpb25TZXQoKQorKyAgICAgICAgbWkgPSB0cy5kYk1hdGNo KHJwbS5SUE1EQklfQkFTRU5BTUVTLCBmaWxlbmFtZSkKKysgICAgICAgIGZvciBoIGluIG1pOgor KyAgICAgICAgICAgICMgQnVpbGQgdGhlIGRlYnVnaW5mbyBwYWNrYWdlIG5hbWUuCisrICAgICAg ICAgICAgb2JqID0gaC5mb3JtYXQoIiV7bmFtZX0tZGVidWdpbmZvLSV7dmVyc2lvbn0tJXtyZWxl YXNlfS4le2FyY2h9IikKKysgICAgICAgICAgICBycG1fbmFtZSA9IHN0cihvYmopCisrCisrICAg ICAgICAgICAgIyBDaGVjayB0byBzZWUgaWYgdGhlIHBhY2thZ2UgaXMgaW5zdGFsbGVkLgorKyAg ICAgICAgICAgIGlmIGlzX3JwbV9pbnN0YWxsZWQodHMsIHJwbV9uYW1lKToKKysgICAgICAgICAg ICAgICAgY29udGludWUKKysKKysgICAgICAgICAgICBhZGRfcnBtX3N1Z2dlc3Rpb24ocnBtX25h bWUpCisrCisrCisrICAgICMgUmV0dXJuIGEgc3RyaW5nIHdoaWNoIGlzIHRoZSBmaWxlbmFtZSBv ZiB0aGUgZmlsZW5hbWUKKysgICAgIyBjb3JyZXNwb25kaW5nIHRvIEJVSUxEX0lEIGluIG9uZSBv ZiB0aGUgdHdvIGxvY2F0aW9ucyB1bmRlcgorKyAgICAjIC91c3IvbGliLgorKyAgICAjCisrICAg ICMgV2hlbiBERUJVR19QIGlzIFRydWUsIHJldHVybiBhIGZpbGVuYW1lIHdpdGhpbjoKKysgICAg IyAvdXNyL2xpYi9kZWJ1Zy8uYnVpbGQtaWQvIGFuZCB3aGVuIERFQlVHX1AgaXMgRmFsc2UsIHJl dHVybiBhCisrICAgICMgZmlsZW5hbWUgd2l0aGluOiAvdXNyL2xpYi8uYnVpbGQtaWQvLgorKyAg ICAjCisrICAgICMgVGhlIFNVRkZJWCBzdHJpbmcgaXMgYXBwZW5kZWQgdG8gdGhlIGdlbmVyYXRl ZCBmaWxlbmFtZS4KKysgICAgZGVmIGJ1aWxkX2lkX3RvX3Vzcl9saWJfZmlsZW5hbWUoYnVpbGRf aWQsIGRlYnVnX3AsIHN1ZmZpeCA9ICIiKToKKysgICAgICAgIGtleSA9IGJ1aWxkX2lkWzoyXQor KyAgICAgICAgcnN0ID0gYnVpbGRfaWRbMjpdCisrCisrICAgICAgICBmaWxlbmFtZSA9ICcvdXNy L2xpYicKKysgICAgICAgIGlmIGRlYnVnX3A6CisrICAgICAgICAgICAgZmlsZW5hbWUgKz0gJy9k ZWJ1ZycKKysgICAgICAgIGZpbGVuYW1lICs9ICcvLmJ1aWxkLWlkLycgKyBrZXkgKyAnLycgKyBy c3QgKyBzdWZmaXgKKysKKysgICAgICAgIHJldHVybiBmaWxlbmFtZQorKworKyAgICAjIEEgcmVn ZXhwIG9iamVjdCB1c2VkIHRvIG1hdGNoIGFnYWluc3QgdGhlIG91dHB1dCBvZiBgZG5mYC4gIFRo aXMKKysgICAgIyBpcyBpbml0aWFsaXNlZCB0aGUgZmlyc3QgdGltZSBpdCBpcyBuZWVkZWQuCisr ICAgIGZpbmRfb2JqZmlsZV9zdWdnZXN0aW9uc19yZSA9IE5vbmUKKysKKysgICAgIyBHaXZlbiBC VUlMRF9JRCwgYSBzdHJpbmcgY29udGFpbmluZyBhIGJ1aWxkLWlkLCBydW4gYSBgZG5mYAorKyAg ICAjIGNvbW1hbmQgdG8gZmlndXJlIG91dCBpZiBhbnkgUlBNcyBjYW4gcHJvdmlkZSBhIGZpbGUg d2l0aCB0aGF0CisrICAgICMgYnVpbGQtaWQuCisrICAgICMKKysgICAgIyBJZiBhbnkgc3VpdGFi bGUgUlBNcyBhcmUgZm91bmQgdGhlbiBgYWRkX3JwbV9zdWdnZXN0aW9uYCBpcyBjYWxsZWQKKysg ICAgIyB0byByZWdpc3RlciB0aGUgc3VnZ2VzdGlvbi4KKysgICAgIworKyAgICAjIFRoaXMgZnVu Y3Rpb24gaXMgcHJldHR5IHNsb3csIHdoaWNoIGlzIGEgc2hhbWUsIGFzIHRoZSByZXN1bHRzCisr ICAgICMgcmV0dXJuZWQgYXJlIG11Y2ggbmljZXIgdGhhbiBqdXN0IHRlbGxpbmcgdGhlIHVzZXIg dG8gdHJ5IHRoZQorKyAgICAjIGxvb2t1cCBjb21tYW5kIGZvciB0aGVtc2VsdmVzLgorKyAgICBk ZWYgZmluZF9vYmpmaWxlX3N1Z2dlc3Rpb25zX2luX3RocmVhZChidWlsZF9pZCk6CisrICAgICAg ICBnbG9iYWwgZmluZF9vYmpmaWxlX3N1Z2dlc3Rpb25zX3JlCisrCisrICAgICAgICBpZiBmaW5k X29iamZpbGVfc3VnZ2VzdGlvbnNfcmUgaXMgTm9uZToKKysgICAgICAgICAgICBmaW5kX29iamZp bGVfc3VnZ2VzdGlvbnNfcmUgPSByZS5jb21waWxlKCJeKC4qKS1kZWJ1Z2luZm8tKC4qKSA6IERl YnVnIGluZm9ybWF0aW9uIGZvciBwYWNrYWdlICguKikkIikKKysKKysgICAgICAgIHJlc3VsdCA9 IHN1YnByb2Nlc3MucnVuKFsnZG5mJywgIi0tZW5hYmxlcmVwbz0qZGVidWcqIiwgJy0tbm9ncGdj aGVjaycsICctQycsICdwcm92aWRlcycsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYnVpbGRfaWRfdG9fdXNyX2xpYl9maWxlbmFtZShidWlsZF9pZCwgVHJ1ZSldLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgdGltZW91dD0z MCkKKysKKysgICAgICAgIGxpbmVzID0gcmVzdWx0LnN0ZG91dC5kZWNvZGUoJ3V0Zi04Jykuc3Bs aXRsaW5lcygpCisrICAgICAgICB0cyA9IHJwbS5UcmFuc2FjdGlvblNldCgpCisrCisrICAgICAg ICBmb3IgbCBpbiBsaW5lczoKKysgICAgICAgICAgICBtID0gZmluZF9vYmpmaWxlX3N1Z2dlc3Rp b25zX3JlLm1hdGNoKGwpCisrICAgICAgICAgICAgaWYgbm90IG06CisrICAgICAgICAgICAgICAg IGNvbnRpbnVlCisrICAgICAgICAgICAgaWYgbS5ncm91cCgxKSAhPSBtLmdyb3VwKDMpOgorKyAg ICAgICAgICAgICAgICByZXR1cm4KKysKKysgICAgICAgICAgICBtYWluX3JwbSA9IG0uZ3JvdXAo MSkgKyAnLScgKyBtLmdyb3VwKDIpCisrICAgICAgICAgICAgZGJnX3JwbSA9IG0uZ3JvdXAoMSkg KyAnLWRlYnVnaW5mby0nICsgbS5ncm91cCgyKQorKworKyAgICAgICAgICAgIGlmIG5vdCBpc19y cG1faW5zdGFsbGVkKHRzLCBtYWluX3JwbSk6CisrICAgICAgICAgICAgICAgIGFkZF9ycG1fc3Vn Z2VzdGlvbihtYWluX3JwbSkKKysKKysgICAgICAgICAgICBpZiBub3QgaXNfcnBtX2luc3RhbGxl ZCh0cywgZGJnX3JwbSk6CisrICAgICAgICAgICAgICAgIGFkZF9ycG1fc3VnZ2VzdGlvbihkYmdf cnBtKQorKworKyAgICAgICAgcmV0dXJuCisrCisrICAgICMgQ2FsbCBgZmluZF9vYmpmaWxlX3N1 Z2dlc3Rpb25zX2luX3RocmVhZGAgaXMgYSBzZXBhcmF0ZSB0aHJlYWQsCisrICAgICMgdGhlbiB3 YWl0IGZvciB0aGUgdGhyZWFkIHRvIGNvbXBsZXRlLiAgRG9uJ3QgdG91Y2ggYW55IHNoYXJlZAor KyAgICAjIHN0YXRlIHdoaWxlIHdhaXRpbmcgZm9yIHRoZSB0aHJlYWQgdG8gY29tcGxldGUuICBU aGVyZSdzIG5vCisrICAgICMgbG9ja2luZyBvbiBhbnkgb2Ygb3VyIGNhY2hlcywgYW5kIHRoZSB3 b3JrZXIgdGhyZWFkIHdpbGwgYWRkIFJQTQorKyAgICAjIHN1Z2dlc3Rpb25zIGFzIGl0IHdhbnRz LgorKyAgICAjCisrICAgICMgSWYgdGhyZSB0aHJlYWQgdGFrZXMgdG9vIGxvbmcgdG8gY29tcGxl dGUgdGhlbiBwcmludCBhIG1lc3NhZ2UKKysgICAgIyB0byB0aGUgdXNlciB0ZWxsaW5nIHRoZW0g d2hhdCdzIGdvaW5nIG9uLgorKyAgICBkZWYgZmluZF9vYmpmaWxlX3N1Z2dlc3Rpb25zX3Nsb3df Y29yZShidWlsZF9pZCk6CisrICAgICAgICBnbG9iYWwgX19zZWFyY2hpbmdfbWVzc2FnZV9wcmlu dGVkCisrCisrICAgICAgICB0aHJlYWQgPSBUaHJlYWQodGFyZ2V0ID0gZmluZF9vYmpmaWxlX3N1 Z2dlc3Rpb25zX2luX3RocmVhZCwgYXJncyA9IChidWlsZF9pZCwgKSkKKysgICAgICAgIHRocmVh ZC5zdGFydCgpCisrICAgICAgICBzdGFydCA9IHRpbWUudGltZV9ucygpCisrCisrICAgICAgICB3 aGlsZSB0aHJlYWQuaXNfYWxpdmUgKCk6CisrICAgICAgICAgICAgdGltZS5zbGVlcCgwLjA1KQor KyAgICAgICAgICAgIG5vdyA9IHRpbWUudGltZV9ucyAoKQorKyAgICAgICAgICAgIGlmIG5vdCBf X3NlYXJjaGluZ19tZXNzYWdlX3ByaW50ZWQgYW5kIChub3cgLSBzdGFydCA+IDEwMDAwMDAwMDAp OgorKyAgICAgICAgICAgICAgICBwcmludCgiU2VhcmNoaW5nIGZvciBwYWNrYWdlcyB0byBpbnN0 YWxsIHRoYXQgY291bGQgaW1wcm92ZSBkZWJ1Z2dpbmcuLi4iKQorKyAgICAgICAgICAgICAgICBf X3NlYXJjaGluZ19tZXNzYWdlX3ByaW50ZWQgPSBUcnVlCisrCisrICAgICAgICB0aHJlYWQuam9p bigpCisrCisrCisrICAgICMgR2l2ZW4gQlVJTERfSUQsIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSBi dWlsZC1pZCwgbG9va3VwIHN1aXRhYmxlCisrICAgICMgUlBNcyB0aGF0IGNvdWxkIGJlIGluc3Rh bGxlZCB0byBwcm92aWRlIGEgZmlsZSB3aXRoIHRoZSByZXF1aXJlZAorKyAgICAjIGJ1aWxkLWlk LgorKyAgICAjCisrICAgICMgQW55IHN1aXRhYmxlIFJQTXMgYXJlIHJlY29yZGVkIGJ5IGNhbGxp bmcgYGFkZF9ycG1fc3VnZ2VzdGlvbmAsIGFuZAorKyAgICAjIHdpbGwgYmUgcHJpbnRlZCBiZWZv cmUgdGhlIG5leHQgcHJvbXB0LgorKyAgICBkZWYgZmluZF9vYmpmaWxlX3N1Z2dlc3Rpb25zX3Ns b3coYnVpbGRfaWQpOgorKyAgICAgICAgZ2xvYmFsIF9fYnVpbGRfaWRfbG9va3VwX2NhY2hlCisr ICAgICAgICBnbG9iYWwgX19zdWdnZXN0X3JwbXMKKysKKysgICAgICAgICMgVGhlIGNvZGUgdG8g bG9va3VwIGFuIFJQTSBnaXZlbiBvbmx5IGEgYnVpbGQtaWQgaXMgcHJldHR5CisrICAgICAgICAj IHNsb3cuICBDYWNoZSB0aGUgcmVzdWx0cyB0byB0cnkgYW5kIHJlZHVjZSB0aGUgVUkgZGVsYXlz LgorKyAgICAgICAgaWYgYnVpbGRfaWQgaW4gX19idWlsZF9pZF9sb29rdXBfY2FjaGU6CisrICAg ICAgICAgICAgcnBtcyA9IF9fYnVpbGRfaWRfbG9va3VwX2NhY2hlW2J1aWxkX2lkXQorKyAgICAg ICAgICAgIGlmIHJwbXMgaXMgbm90IE5vbmU6CisrICAgICAgICAgICAgICAgIGZvciByIGluIHJw bXM6CisrICAgICAgICAgICAgICAgICAgICBhZGRfcnBtX3N1Z2dlc3Rpb24ocikKKysgICAgICAg ICAgICByZXR1cm4KKysKKysgICAgICAgICMgTWFrZSBzdXJlIHRoZSBjYWNoZSBlbnRyeSBleGlz dHMgYmVmb3JlIHdlIGRvIHRoZSBsb29rdXAuCisrICAgICAgICAjIElmLCBmb3IgYW55IHJlYXNv biwgdGhlIGxvb2t1cCByYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGVuCisrICAgICAgICAjIGhhdmlu ZyBhIGNhY2hlIGVudHJ5IHdpbGwgcHJldmVudCB1cyByZXRyeWluZyB0aGlzIGxvb2t1cCBpbgor KyAgICAgICAgIyB0aGUgZnV0dXJlLgorKyAgICAgICAgX19idWlsZF9pZF9sb29rdXBfY2FjaGVb YnVpbGRfaWRdID0gTm9uZQorKworKyAgICAgICAgIyBOb3cgZG8gdGhlIGxvb2t1cC4gIFRoaXMg aXMgdGhlIHNsb3cgcGFydC4KKysgICAgICAgIGZpbmRfb2JqZmlsZV9zdWdnZXN0aW9uc19zbG93 X2NvcmUoYnVpbGRfaWQpCisrCisrICAgICAgICAjIEZpbGwgaW4gdGhlIGNhY2hlLCBmb3IgYSBn aXZlbiBidWlsZC1pZCB3aGljaCBSUE1zIHdlcmUKKysgICAgICAgICMgc3VnZ2VzdGVkLgorKyAg ICAgICAgcnBtcyA9IFtdCisrICAgICAgICBmb3IgciBpbiBfX3N1Z2dlc3RfcnBtczoKKysgICAg ICAgICAgICBycG1zLmFwcGVuZChyKQorKyAgICAgICAgX19idWlsZF9pZF9sb29rdXBfY2FjaGVb YnVpbGRfaWRdID0gcnBtcworKworKworKyAgICAjIEdpdmVuIEJVSUxEX0lELCBhIHN0cmluZyBj b250YWluaW5nIGEgYnVpbGQtaWQsIGp1c3QgcmVjb3JkIHRoYXQgd2UKKysgICAgIyBzaG91bGQg YWR2aXNlIHRoZSB1c2VyIHRvIHRyeSBpbnN0YWxsaW5nIFJQTXMgYmFzZWQgb24gdGhpcyBidWls ZC1pZC4KKysgICAgZGVmIGZpbmRfb2JqZmlsZV9zdWdnZXN0aW9uc19mYXN0KGJ1aWxkX2lkKToK KysgICAgICAgIGFkZF9idWlsZF9pZF9zdWdnZXN0aW9uKGJ1aWxkX2lkKQorKworKyAgICAjIEdp dmVuIEJVSUxEX0lELCBhIHN0cmluZyBjb250YWluaW5nIGEgYnVpbGQtaWQsIHdoaWNoIEdEQiBo YXMgZmFpbGVkCisrICAgICMgdG8gZmluZCwgcG9zc2libHkgcmVjb3JkIHNvbWUgaW5mb3JtYXRp b24gc28gdGhhdCB3ZSBjYW4sIGF0IHRoZSBuZXh0CisrICAgICMgcHJvbXB0LCBnaXZlIHNvbWUg UlBNIGluc3RhbGxhdGlvbiBhZHZpY2UgdG8gdGhlIHVzZXIuCisrICAgICMKKysgICAgIyBXZSBo YXZlIHR3byBkaWZmZXJlbnQgc3RyYXRlZ2llcyBmb3IgUlBNIGxvb2t1cCBiYXNlZCBvbiBhIGJ1 aWxkLWlkLAorKyAgICAjIG9uZSBhcHByb2FjaCBpcyB0aGF0IHdlIGFjdHVhbGx5IGxvb2t1cCB0 aGUgUlBNcyBhbmQgb25seSBzdWdnZXN0CisrICAgICMgc29tZXRoaW5nIGlmIHRoZXJlIGlzIGEg c3VpdGFibGUgUlBNLiAgSG93ZXZlciwgdGhpcyBpcyBwcmV0dHkgc2xvdywKKysgICAgIyBhbmQg dXNlcnMgd2lsbCBwcm9iYWJseSBmaW5kIHRoaXMgYW5ub3lpbmcuCisrICAgICMKKysgICAgIyBT byB3ZSBhbHNvIGhhdmUgYSBmYXN0IHdheS4gIFdpdGggdGhpcyBhcHByb2FjaCB3ZSBqdXN0IHJl Y29yZCB0aGUKKysgICAgIyBidWlsZC1pZCB0aGF0IHdhcyBtaXNzaW5nIGFuZCB0ZWxsIHRoZSB1 c2VyIHRvIHRyeSBpbnN0YWxsaW5nIGJhc2VkIG9uCisrICAgICMgdGhlIGJ1aWxkLWlkLiAgVGhl IGRvd25zaWRlIHdpdGggdGhpcyBpcyB0aGF0IGlmIHRoZXJlIGlzIG5vIFJQTSBmb3IKKysgICAg IyB0aGF0IGJ1aWxkLWlkLCB0aGVuIHRoZSB1c2VyIHdpbGwgdHJ5IHRoZSBjb21tYW5kLCBidXQg bm90aGluZyB3aWxsCisrICAgICMgaW5zdGFsbC4KKysgICAgZGVmIGZpbmRfb2JqZmlsZV9zdWdn ZXN0aW9ucyhidWlsZF9pZCk6CisrICAgICAgICBpZiBycG1fc3VnZ2VzdGlvbl9pc19kaXNhYmxl ZCgpOgorKyAgICAgICAgICAgIHJldHVybgorKworKyAgICAgICAgaWYgcGFyYW1fcnBtX3N1Z2dl c3Rpb25fYnVpbGRfaWRfbW9kZS5mYXN0X21vZGUoKToKKysgICAgICAgICAgICBmaW5kX29iamZp bGVfc3VnZ2VzdGlvbnNfZmFzdChidWlsZF9pZCkKKysgICAgICAgIGVsc2U6CisrICAgICAgICAg ICAgZmluZF9vYmpmaWxlX3N1Z2dlc3Rpb25zX3Nsb3coYnVpbGRfaWQpCisrCisrICAgICMgQSBt aXNzaW5nIGRlYnVnIGhhbmRsZXIgY2xhc3MuICBKdXN0IGZvcndhcmRzIHRoZSBuYW1lIG9mIHRo ZQorKyAgICAjIG9iamZpbGUgZm9yIHdoaWNoIHdlIGFyZSBtaXNzaW5nIGRlYnVnIGluZm9ybWF0 aW9uIHRvCisrICAgICMgZmluZF9kZWJ1Z19zdWdnZXN0aW9ucy4KKysgICAgY2xhc3MgUlBNX01p c3NpbmdEZWJ1Z0hhbmRsZXIoZ2RiLm1pc3NpbmdfZGVidWcuTWlzc2luZ0RlYnVnSGFuZGxlcik6 CisrICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisrICAgICAgICAgICAgc3VwZXIoKS5fX2lu aXRfXygicnBtLXN1Z2dlc3Rpb25zIikKKysKKysgICAgICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBv YmpmaWxlKToKKysgICAgICAgICAgICBmaW5kX2RlYnVnX3N1Z2dlc3Rpb25zKG9iamZpbGUuZmls ZW5hbWUpCisrICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisrCisrICAgICMgQSBtaXNzaW5nIG9i amZpbGUgaGFuZGxlciBjbGFzcy4gIEp1c3QgZm9yd2FyZHMgdGhlIGJ1aWxkLWlkIG9mCisrICAg ICMgdGhlIG9iamZpbGUgdGhhdCBpcyBtaXNzaW5nIHRvIGZpbmRfb2JqZmlsZV9zdWdnZXN0aW9u cy4KKysgICAgY2xhc3MgUlBNX01pc3NpbmdPYmpmaWxlSGFuZGxlcihnZGIubWlzc2luZ19vYmpm aWxlLk1pc3NpbmdPYmpmaWxlSGFuZGxlcik6CisrICAgICAgICBkZWYgX19pbml0X18oc2VsZik6 CisrICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXygicnBtLXN1Z2dlc3Rpb25zIikKKysKKysg ICAgICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwc3BhY2UsIGJ1aWxkX2lkLCBmaWxlbmFtZSk6Cisr ICAgICAgICAgICAgZmluZF9vYmpmaWxlX3N1Z2dlc3Rpb25zKGJ1aWxkX2lkKQorKyAgICAgICAg ICAgIHJldHVybiBGYWxzZQorKworKyAgICAjIFRha2UgYSBub24tZW1wdHkgbGlzdCBvZiBSUE0g bmFtZXMgYW5kIHByaW50IGEgY29tbWFuZCBsaW5lIGEKKysgICAgIyB1c2VyIGNvdWxkIHJ1biB0 byBpbnN0YWxsIHRoZXNlIFJQTXMuCisrICAgIGRlZiBwcmludF9ycG1fc3VnZ2VzdGlvbnMocnBt X25hbWVfbGlzdCk6CisrICAgICAgICBwcmludCgiTWlzc2luZyBycG1zLCB0cnk6IGRuZiAtLWVu YWJsZXJlcG89JypkZWJ1ZyonIGluc3RhbGwgIiArICcgJy5qb2luKHJwbV9uYW1lX2xpc3QpKQor KworKyAgICAjIFRha2UgYSBub24tZW1wdHkgbGlzdCBvZiBidWlsZC1pZCBzdHJpbmdzIGFuZCBw cmludCBhIHNlcmllcyBvZgorKyAgICAjIGxpbmVzIHRoYXQgYSB1c2VyIGNvdWxkIHJ1biB0byBp bnN0bGwgdGhlIFJQTXMgdGhhdCBwcm92aWRlCisrICAgICMgZmlsZXMgd2l0aCB0aGlzIGJ1aWxk LWlkLgorKyAgICAjCisrICAgICMgVGhlIHByaW50ZWQgY29tbWFuZHMgd2lsbCBhbHNvIGluc3Rh bGwgdGhlIGNvcnJlc3BvbmRpbmcgZGVidWcKKysgICAgIyBwYWNrYWdlcyBmb3IgdGhlIGV4ZWN1 dGFibGUgd2l0aCB0aGUgZ2l2ZW4gYnVpbGQtaWQuCisrICAgIGRlZiBwcmludF9idWlsZF9pZF9z dWdnZXN0aW9ucyhidWlsZF9pZF9saXN0KToKKysgICAgICAgIGZvciBidWlsZF9pZCBpbiBidWls ZF9pZF9saXN0OgorKyAgICAgICAgICAgIHByaW50KCJNaXNzaW5nIGZpbGUocyksIHRyeTogZG5m IC0tZW5hYmxlcmVwbz0nKmRlYnVnKicgaW5zdGFsbCAiCisrICAgICAgICAgICAgICAgICAgKyBi dWlsZF9pZF90b191c3JfbGliX2ZpbGVuYW1lKGJ1aWxkX2lkLCBGYWxzZSkKKysgICAgICAgICAg ICAgICAgICArICcgJworKyAgICAgICAgICAgICAgICAgICsgYnVpbGRfaWRfdG9fdXNyX2xpYl9m aWxlbmFtZShidWlsZF9pZCwgVHJ1ZSwgIi5kZWJ1ZyIpKQorKworKyAgICAjIENhbGxlZCBiZWZv cmUgR0RCIGRpc3BsYXlzIGl0cyBwcm9tcHQuICBJZiB0aGUgZ2xvYmFsIF9fU1VHR0VTVF9SUE1T CisrICAgICMgZGljdGlvbmFyeSBpcyBub3QgZW1wdHksIHRoZW4gdGhpcyBob29rIHByaW50cyB0 aGUga2V5cyBvZiB0aGlzCisrICAgICMgZGljdGlvbmFyeSBhcyBzdHJpbmdzIHdoaWNoIGFyZSB0 aGUgbmFtZXMgb2YgUlBNcy4gIFRoaXMgaG9vayBmb3JtYXRzCisrICAgICMgZWFjaCBSUE0gbmFt ZSBpbnRvIGEgc3VnZ2VzdGVkICdkbmYgaW5zdGFsbCcgY29tbWFuZCBhbmQgc3VnZ2VzdHMgdGhp cworKyAgICAjIHRvIHRoZSB1c2VyLgorKyAgICAjCisrICAgICMgQWRkaXRpb25hbGx5LCBpZiB0 aGUgZ2xvYmFsIF9fU1VHR0VTVF9CVUlMRF9JRFMgZGljdGlvbmFyeSBpcyBub3QKKysgICAgIyBl bXB0eSwgdGhlbiB0aGlzIGhvb2sgdXNlcyB0aGUga2V5cyBvZiB0aGlzIGRpY3Rpb25hcnkgYXMg YnVpbGQtaWRzCisrICAgICMgdGhhdCB3ZXJlIGZvdW5kIHRvIGJlIG1pc3NpbmcsIGFuZCBmb3Jt YXRzIHRoZXNlIGludG8gc29tZSBmaWxlIGJhc2VkCisrICAgICMgJ2RuZiBpbnN0YWxsJyBzdWdn ZXN0aW9ucyB0byB0aGUgdXNlci4KKysgICAgZGVmIGJlZm9yZV9wcm9tcHQoKToKKysgICAgICAg IGdsb2JhbCBfX3N1Z2dlc3RfcnBtcworKyAgICAgICAgZ2xvYmFsIF9fc3VnZ2VzdF9idWlsZF9p ZHMKKysgICAgICAgIGdsb2JhbCBfX3NlYXJjaGluZ19tZXNzYWdlX3ByaW50ZWQKKysKKysgICAg ICAgICMgV2UgYWxsb3cgdGhlIHNlYXJjaGluZyBtZXNzYWdlIHRvIGJlIHByaW50ZWQganVzdCBv bmNlCisrICAgICAgICAjIGJldHdlZW4gcHJvbXB0cy4KKysgICAgICAgIF9fc2VhcmNoaW5nX21l c3NhZ2VfcHJpbnRlZCA9IEZhbHNlCisrCisrICAgICAgICBpZiBsZW4oX19zdWdnZXN0X3JwbXMp ID4gMDoKKysgICAgICAgICAgICBwcmludF9ycG1fc3VnZ2VzdGlvbnMoX19zdWdnZXN0X3JwbXMu a2V5cygpKQorKyAgICAgICAgICAgIF9fc3VnZ2VzdF9ycG1zID0ge30KKysKKysgICAgICAgIGlm IGxlbihfX3N1Z2dlc3RfYnVpbGRfaWRzKSA+IDA6CisrICAgICAgICAgICAgcHJpbnRfYnVpbGRf aWRfc3VnZ2VzdGlvbnMoX19zdWdnZXN0X2J1aWxkX2lkcy5rZXlzKCkpCisrICAgICAgICAgICAg X19zdWdnZXN0X2J1aWxkX2lkcyA9IHt9CisrCisrICAgICMgQ2FsbGVkIHdoZW4gdGhlIGV4ZWN1 dGFibGUgd2l0aGluIGEgcHJvZ3JtIHNwYWNlIGlzIGNoYW5nZWQuICBDbGVhcgorKyAgICAjIHRo ZSBsaXN0cyBvZiBSUE0gc3VnZ2VzdGlvbnMuICBXZSBvbmx5IGNsZWFyIHRoZSBwcmV2aW91cyBz dWdnZXN0aW9uCisrICAgICMgbGlzdCB3aGVuIHRoZSBleGVjdXRhYmxlIHJlYWxseSBjaGFuZ2Vz LiAgSWYgdGhlIHVzZXIgc2ltcGx5CisrICAgICMgcmVjb21waWxlcyB0aGUgZXhlY3V0YWJsZSwg dGhlbiB3ZSBkb24ndCBib3RoIGNsZWFyaW5nIHRoaXMgbGlzdC4KKysgICAgZGVmIGV4ZWN1dGFi bGVfY2hhbmdlZF9oYW5kbGVyKGV2ZW50KToKKysgICAgICAgIGdsb2JhbCBfX21pc3NpbmdfcnBt cworKyAgICAgICAgZ2xvYmFsIF9fc3VnZ2VzdF9ycG1zCisrICAgICAgICBnbG9iYWwgX19zdWdn ZXN0X2J1aWxkX2lkcworKyAgICAgICAgZ2xvYmFsIF9fbWlzc2luZ19idWlsZF9pZHMKKysKKysg ICAgICAgIGlmIG5vdCBldmVudC5yZWxvYWQ6CisrICAgICAgICAgICAgX19taXNzaW5nX3JwbXMg PSB7fQorKyAgICAgICAgICAgIF9fc3VnZ2VzdF9ycG1zID0ge30KKysgICAgICAgICAgICBfX21p c3NpbmdfYnVpbGRfaWRzID0ge30KKysgICAgICAgICAgICBfX3N1Z2dlc3RfYnVpbGRfaWRzID0g e30KKysKKysKKysgICAgIyBBdHRhY2ggdG8gdGhlIHJlcXVpcmVkIEdEQiBldmVudHMuCisrICAg IGdkYi5ldmVudHMuZXhlY3V0YWJsZV9jaGFuZ2VkLmNvbm5lY3QoZXhlY3V0YWJsZV9jaGFuZ2Vk X2hhbmRsZXIpCisrICAgIGdkYi5ldmVudHMuYmVmb3JlX3Byb21wdC5jb25uZWN0KGJlZm9yZV9w cm9tcHQpCisrCisrICAgICMgUmVnaXN0ZXIgdGhlIG1pc3NpbmcgZGVidWcgYW5kIG1pc3Npbmcg b2JqZmlsZSBoYW5kbGVycyB3aXRoIEdEQi4KKysgICAgZ2RiLm1pc3NpbmdfZGVidWcucmVnaXN0 ZXJfaGFuZGxlcihOb25lLCBSUE1fTWlzc2luZ0RlYnVnSGFuZGxlcigpKQorKyAgICBnZGIubWlz c2luZ19vYmpmaWxlLnJlZ2lzdGVyX2hhbmRsZXIoTm9uZSwgUlBNX01pc3NpbmdPYmpmaWxlSGFu ZGxlcigpKQorKworKyAgICAjIEltcGxlbWVudCB0aGUgY29yZSBvZiAnaW5mbyBycG0tc3VnZ2Vz dGlvbnMnLiAgUmVwcmludCBhbGwgcnBtCisrICAgICMgc3VnZ2VzdGlvbnMuCisrICAgIGRlZiBp bmZvX3JwbV9zdWdnZXN0aW9ucygpOgorKyAgICAgICAgZ2xvYmFsIF9fbWlzc2luZ19ycG1zCisr ICAgICAgICBnbG9iYWwgX19taXNzaW5nX2J1aWxkX2lkcworKworKyAgICAgICAgaWYgbGVuKF9f bWlzc2luZ19ycG1zKSA9PSAwIGFuZCBsZW4oX19taXNzaW5nX2J1aWxkX2lkcykgPT0gMDoKKysg ICAgICAgICAgICBwcmludCgiTm8gUlBNIHN1Z2dlc3Rpb25zIGhhdmUgYmVlbiBtYWRlIHNvIGZh ci4iKQorKyAgICAgICAgICAgIHJldHVybgorKworKyAgICAgICAgaWYgbGVuKF9fbWlzc2luZ19y cG1zKSA+IDA6CisrICAgICAgICAgICAgcHJpbnRfcnBtX3N1Z2dlc3Rpb25zKF9fbWlzc2luZ19y cG1zLmtleXMoKSkKKysgICAgICAgIGlmIGxlbihfX21pc3NpbmdfYnVpbGRfaWRzKSA+IDA6Cisr ICAgICAgICAgICAgcHJpbnRfYnVpbGRfaWRfc3VnZ2VzdGlvbnMoX19taXNzaW5nX2J1aWxkX2lk cy5rZXlzKCkpCisrCisrIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKysjIFRoZSBmb2xsb3dpbmcgY29kZSBpcyBvdXRz aWRlIHRoZSAnZWxzZScgYmxvY2sgb2YgdGhlIGF0dGVtcHQgdG8gIworKyMgbG9hZCB0aGUgJ3Jw bScgbW9kdWxlLiAgTm90aGluZyBhZnRlciB0aGlzIHBvaW50IGRlcGVuZHMgb24gdGhlICAjCisr IyAncnBtJyBtb2R1bGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICMKKysjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworKworKyMgVGhlICdzZXQgcnBtLXN1Z2dlc3Rpb24n IHByZWZpeCBjb21tYW5kLgorK2NsYXNzIHJwbV9zdWdnZXN0aW9uX3NldF9wcmVmaXgoZ2RiLkNv bW1hbmQpOgorKyAgICAiIiJQcmVmaXggY29tbWFuZCBmb3IgJ3NldCcgcnBtLXN1Z2dlc3Rpb24g cmVsYXRlZCBjb21tYW5kcy4iIiIKKysKKysgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorKyAgICAg ICAgc3VwZXIoKS5fX2luaXRfXygic2V0IHJwbS1zdWdnZXN0aW9uIiwgZ2RiLkNPTU1BTkRfTk9O RSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiLkNPTVBMRVRFX05PTkUsIFRydWUpCisr CisrIyBUaGUgJ3Nob3cgcnBtLXN1Z2dlc3Rpb24nIHByZWZpeCBjb21tYW5kLgorK2NsYXNzIHJw bV9zdWdnZXN0aW9uX3Nob3dfcHJlZml4KGdkYi5Db21tYW5kKToKKysgICAgIiIiUHJlZml4IGNv bW1hbmQgZm9yICdzaG93JyBycG0tc3VnZ2VzdGlvbiByZWxhdGVkIGNvbW1hbmRzLiIiIgorKwor KyAgICBkZWYgX19pbml0X18oc2VsZik6CisrICAgICAgICBzdXBlcigpLl9faW5pdF9fKCJzaG93 IHJwbS1zdWdnZXN0aW9uIiwgZ2RiLkNPTU1BTkRfTk9ORSwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgZ2RiLkNPTVBMRVRFX05PTkUsIFRydWUpCisrCisrIyBUaGUgJ3NldC9zaG93IHJwbS1z dWdnZXN0aW9uIGVuYWJsZWQnIGNvbW1hbmQuCisrY2xhc3MgcnBtX3N1Z2dlc3Rpb25fZW5hYmxl ZChnZGIuUGFyYW1ldGVyKToKKysgICAgIiIiCisrICAgIFdoZW4gJ29uJyBHREIgd2lsbCBzZWFy Y2ggZm9yIFJQTVMgdGhhdCBtaWdodCBwcm92aWRlIGFkZGl0aW9uYWwKKysgICAgZGVidWcgaW5m b3JtYXRpb24sIG9yIHByb3ZpZGUgbWlzc2luZyBleGVjdXRhYmxlcyBvciBzaGFyZWQKKysgICAg bGlicmFyaWVzICh3aGVuIG9wZW5pbmcgYSBjb3JlIGZpbGUpLCBhbmQgd2lsbCBtYWtlIHN1Z2dl c3Rpb25zCisrICAgIGFib3V0IHdoYXQgc2hvdWxkIGJlIGluc3RhbGxlZC4KKysKKysgICAgV2hl biAnb2ZmJyBHREIgd2lsbCBub3QgbWFrZSB0aGVzZSBzdWdnZXN0aW9ucy4KKysgICAgIiIiCisr CisrICAgIHNldF9kb2MgPSAiU2V0IHdoZXRoZXIgdG8gcGVyZm9ybSBycG0tc3VnZ2VzdGlvbi4i CisrICAgIHNob3dfZG9jID0gIlNob3cgd2hldGhlciBycG0tc3VnZ2VzdGlvbiBpcyBlbmFibGVk LiIKKysKKysgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorKyAgICAgICAgc3VwZXIoKS5fX2luaXRf XygicnBtLXN1Z2dlc3Rpb24gZW5hYmxlZCIsIGdkYi5DT01NQU5EX05PTkUsIGdkYi5QQVJBTV9C T09MRUFOKQorKyAgICAgICAgc2VsZi52YWx1ZSA9IFRydWUKKysKKysjIFRoZSAnc2V0L3Nob3cg cnBtLXN1Z2dlc3Rpb24gZW5hYmxlZCcgY29tbWFuZC4KKytjbGFzcyBycG1fc3VnZ2VzdGlvbl9i dWlsZF9pZF9tb2RlKGdkYi5QYXJhbWV0ZXIpOgorKyAgICAiIiIKKysgICAgV2hlbiBzZXQgdG8g J2Zhc3QnICh0aGUgZGVmYXVsdCksIEdEQiBkb2Vzbid0IHRyeSB0byBtYXAgYSBidWlsZC1pZCB0 bworKyAgICBhbiBhY3R1YWwgUlBNLCBpbnN0ZWFkLCBHREIganVzdCBzdWdnZXN0cyBhIGNvbW1h bmQgYmFzZWQgb24gdGhlCisrICAgIGJ1aWxkLWlkIHdoaWNoIG1pZ2h0IGluc3RhbGwgc29tZSBS UE1zLCBpZiB0aGVyZSBhcmUgYW55IFJQTXMgdGhhdAorKyAgICBzdXBwbHkgdGhhdCBidWlsZC1p ZC4gIEhvd2V2ZXIsIGl0IGlzIGVxdWFsbHkgcG9zc2libGUgdGhhdCB0aGVyZSBhcmUgbm8KKysg ICAgc3VpdGFibGUgUlBNcywgYW5kIG5vdGhpbmcgd2lsbCBpbnN0YWxsLiAgVGhpcyBhcHByb2Fj aCBoYXMgYWxtb3N0IHplcm8KKysgICAgb3ZlcmhlYWQuCisrCisrICAgIFdoZW4gc2V0IHRvICdz bG93JywgR0RCIGZpcnN0IGRvZXMgdGhlIGJ1aWxkLWlkIHRvIFJQTSBjaGVjayBpdHNlbGYsIGFu ZAorKyAgICBvbmx5IGlmIHNvbWV0aGluZyBpcyBmb3VuZCBhcmUgUlBNcyBpbnN0YWxsYXRpb24g Y29tbWFuZHMgc3VnZ2VzdGVkLgorKyAgICBUaGUgc3VnZ2VzdGVkIGNvbW1hbmQgd2lsbCBpbmNs dWRlIHRoZSBuYW1lIG9mIHRoZSBSUE0gdG8gaW5zdGFsbC4gIFRoaXMKKysgICAgYXBwcm9hY2gg aXMgY29uc2lkZXJhYmx5IHNsb3dlciBhcyBxdWVyeWluZyB0aGUgUlBNIGRhdGFiYXNlIGZvciB0 aGUgUlBNCisrICAgIHRoYXQgc3VwcGxpZXMgYSBzcGVjaWZpYyBmaWxlIGlzIHNsb3cuCisrICAg ICIiIgorKworKyAgICBzZXRfZG9jID0gIlNldCBob3cgYnVpbGQtaWQgYmFzZWQgcnBtIHN1Z2dl c3Rpb25zIHNob3VsZCBiZSBwZXJmb3JtZWQuIgorKyAgICBzaG93X2RvYyA9ICJTaG93IGhvdyBi dWlsZC1pZCBiYXNlZCBycG0gc3VnZ2VzdGlvbnMgc2hvdWQgYmUgcGVyZm9ybWVkLiIKKysKKysg ICAgZGVmIF9faW5pdF9fKHNlbGYpOgorKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygicnBtLXN1 Z2dlc3Rpb24gYnVpbGQtaWQtbW9kZSIsCisrICAgICAgICAgICAgICAgICAgICAgICAgIGdkYi5D T01NQU5EX05PTkUsIGdkYi5QQVJBTV9FTlVNLCBbImZhc3QiLCAic2xvdyJdKQorKyAgICAgICAg c2VsZi52YWx1ZSA9ICJmYXN0IgorKworKyAgICBkZWYgZmFzdF9tb2RlKHNlbGYpOgorKyAgICAg ICAgcmV0dXJuIHNlbGYudmFsdWUgPT0gImZhc3QiCisrCisrIyBUaGUgJ2luZm8gcnBtLXN1Z2dl c3Rpb25zJyBjb21tYW5kLgorK2NsYXNzIHJwbV9zdWdnZXN0aW9uX2luZm8oZ2RiLkNvbW1hbmQp OgorKyAgICAiIiJSZWxpc3QgUlBNIHN1Z2dlc3Rpb25zLgorKworKyAgICBSZWxpc3QgYW55IFJQ TSBpbnN0YWxsYXRpb24gc3VnZ2VzdGlvbnMgdGhhdCBoYXZlIGJlZW4gbWFkZQorKyAgICBzaW5j ZSB0aGUgZXhlY3V0YWJsZSB3YXMgbGFzdCBjaGFuZ2VkLiIiIgorKyAgICBkZWYgX19pbml0X18o c2VsZik6CisrICAgICAgICBzdXBlcigpLl9faW5pdF9fKCJpbmZvIHJwbS1zdWdnZXN0aW9ucyIs IGdkYi5DT01NQU5EX05PTkUsIGdkYi5DT01QTEVURV9OT05FKQorKworKyAgICBkZWYgaW52b2tl KHNlbGYsIGFyZ3MsIGZyb21fdHR5KToKKysgICAgICAgIGlmIGFyZ3MgIT0gIiI6CisrICAgICAg ICAgICAgcmFpc2UgZ2RiLkdkYkVycm9yKCJ1bmV4cGVjdGVkIGFyZ3VtZW50czogJXMiICUgYXJn cykKKysKKysgICAgICAgIGluZm9fcnBtX3N1Z2dlc3Rpb25zICgpCisrCisrCisrIyBDcmVhdGUg dGhlICdzZXQvc2hvdyBycG0tc3VnZ2VzdGlvbicgY29tbWFuZHMuCisrcnBtX3N1Z2dlc3Rpb25f c2V0X3ByZWZpeCgpCisrcnBtX3N1Z2dlc3Rpb25fc2hvd19wcmVmaXgoKQorK3BhcmFtX3JwbV9z dWdnZXN0aW9uX2VuYWJsZWQgPSBycG1fc3VnZ2VzdGlvbl9lbmFibGVkKCkKKytwYXJhbV9ycG1f c3VnZ2VzdGlvbl9idWlsZF9pZF9tb2RlID0gcnBtX3N1Z2dlc3Rpb25fYnVpbGRfaWRfbW9kZSgp CisrCisrIyBDcmVhdGUgdGhlICdpbmZvIHJwbS1zdWdnZXN0aW9ucycgY29tbWFuZHMuCisrcnBt X3N1Z2dlc3Rpb25faW5mbygpCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9n Y29yZS1idWlsZGlkLWV4ZWMtYnV0LW5vdC1zb2xpYi1saWIuYyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvZ2NvcmUtYnVpbGRpZC1leGVjLWJ1dC1ub3Qtc29saWItbGliLmMKK25ldyBmaWxlIG1v ZGUgMTAwNjQ0CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dj b3JlLWJ1aWxkaWQtZXhlYy1idXQtbm90LXNvbGliLWxpYi5jCitAQCAtMCwwICsxLDIxIEBACisr LyogQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAg VGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LiAgKi8KKysKKyt2b2lkCisrbGliICh2b2lkKQorK3sKKyt9CitkaWZmIC0tZ2l0 IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nY29yZS1idWlsZGlkLWV4ZWMtYnV0LW5vdC1zb2xp Yi1tYWluLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2djb3JlLWJ1aWxkaWQtZXhlYy1idXQt bm90LXNvbGliLW1haW4uYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKKy0tLSAvZGV2L251bGwKKysr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2NvcmUtYnVpbGRpZC1leGVjLWJ1dC1ub3Qtc29s aWItbWFpbi5jCitAQCAtMCwwICsxLDI1IEBACisrLyogQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgor KworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKytleHRlcm4g dm9pZCBsaWIgKHZvaWQpOworKworK2ludAorK21haW4gKHZvaWQpCisreworKyAgbGliICgpOwor KyAgcmV0dXJuIDA7CisrfQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2Nv cmUtYnVpbGRpZC1leGVjLWJ1dC1ub3Qtc29saWIuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9nY29yZS1idWlsZGlkLWV4ZWMtYnV0LW5vdC1zb2xpYi5leHAKK25ldyBmaWxlIG1vZGUgMTAw NjQ0CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2djb3JlLWJ1 aWxkaWQtZXhlYy1idXQtbm90LXNvbGliLmV4cAorQEAgLTAsMCArMSwxMDQgQEAKKysjIENvcHly aWdodCAyMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl CisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4KKysKKytyZXF1aXJlIGFsbG93X3NobGliX3Rlc3RzCisrCisrc2V0 IHRlc3RmaWxlICJnY29yZS1idWlsZGlkLWV4ZWMtYnV0LW5vdC1zb2xpYiIKKytzZXQgc3JjbWFp bmZpbGUgJHt0ZXN0ZmlsZX0tbWFpbi5jCisrc2V0IHNyY2xpYmZpbGUgJHt0ZXN0ZmlsZX0tbGli LmMKKytzZXQgbGliZmlsZSBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJHt0ZXN0ZmlsZX0tbGliLnNv XQorK3NldCBvYmpmaWxlIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAke3Rlc3RmaWxlfS1tYWluLm9d Cisrc2V0IGV4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0tbWFpbgorK3NldCBiaW5maWxlIFtzdGFuZGFy ZF9vdXRwdXRfZmlsZSAke2V4ZWN1dGFibGV9XQorK3NldCBnY29yZWZpbGUgW3N0YW5kYXJkX291 dHB1dF9maWxlICR7ZXhlY3V0YWJsZX0uZ2NvcmVdCisrc2V0IG91dGRpciBbZmlsZSBkaXJuYW1l ICRiaW5maWxlXQorKworK2lmIHsgW2dkYl9jb21waWxlX3NobGliICR7c3JjZGlyfS8ke3N1YmRp cn0vJHtzcmNsaWJmaWxlfSAke2xpYmZpbGV9ICJkZWJ1ZyBhZGRpdGlvbmFsX2ZsYWdzPS1XbCwt LWJ1aWxkLWlkIl0gIT0gIiIKKysgICAgIHx8IFtnZGJfY29tcGlsZSAke3NyY2Rpcn0vJHtzdWJk aXJ9LyR7c3JjbWFpbmZpbGV9ICR7b2JqZmlsZX0gb2JqZWN0IHtkZWJ1Z31dICE9ICIiIH0gewor KyAgICAgdW5zdXBwb3J0ZWQgIi1XbCwtLWJ1aWxkLWlkIGNvbXBpbGF0aW9uIGZhaWxlZCIKKysg ICAgIHJldHVybiAtMQorK30KKytzZXQgb3B0cyBbbGlzdCBkZWJ1ZyBzaGxpYj0ke2xpYmZpbGV9 ICJhZGRpdGlvbmFsX2ZsYWdzPS1XbCwtLWJ1aWxkLWlkIl0KKytpZiB7IFtnZGJfY29tcGlsZSAk e29iamZpbGV9ICR7YmluZmlsZX0gZXhlY3V0YWJsZSAkb3B0c10gIT0gIiIgfSB7CisrICAgICB1 bnN1cHBvcnRlZCAiLVdsLC0tYnVpbGQtaWQgY29tcGlsYXRpb24gZmFpbGVkIgorKyAgICAgcmV0 dXJuIC0xCisrfQorKworK2NsZWFuX3Jlc3RhcnQgJGV4ZWN1dGFibGUKKytnZGJfbG9hZF9zaGxp YiAkbGliZmlsZQorKworKyMgRG9lcyB0aGlzIGdkYiBzdXBwb3J0IGdjb3JlPworK3NldCB0ZXN0 ICJoZWxwIGdjb3JlIgorK2dkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKKysgICAgLXJl ICJVbmRlZmluZWQgY29tbWFuZDogLmdjb3JlLipcclxuJGdkYl9wcm9tcHQgJCIgeworKwkjIGdj b3JlIGNvbW1hbmQgbm90IHN1cHBvcnRlZCAtLSBub3RoaW5nIHRvIHRlc3QgaGVyZS4KKysJdW5z dXBwb3J0ZWQgImdkYiBkb2VzIG5vdCBzdXBwb3J0IGdjb3JlIG9uIHRoaXMgdGFyZ2V0IgorKwly ZXR1cm4gLTE7CisrICAgIH0KKysgICAgLXJlICJTYXZlIGEgY29yZSBmaWxlIC4qXHJcbiRnZGJf cHJvbXB0ICQiIHsKKysJcGFzcyAkdGVzdAorKyAgICB9CisrfQorKworK2lmIHsgIVtydW50byBs aWJdIH0gdGhlbiB7CisrICAgIHJldHVybiAtMQorK30KKysKKytzZXQgZXNjYXBlZGZpbGVuYW1l IFtzdHJpbmdfdG9fcmVnZXhwICR7Z2NvcmVmaWxlfV0KKysKKytzZXQgdGVzdCAic2F2ZSBhIGNv cmVmaWxlIgorK2dkYl90ZXN0X211bHRpcGxlICJnY29yZSAke2djb3JlZmlsZX0iICR0ZXN0IHsK KysgICAgLXJlICJTYXZlZCBjb3JlZmlsZSAke2VzY2FwZWRmaWxlbmFtZX1cclxuJGdkYl9wcm9t cHQgJCIgeworKwlwYXNzICR0ZXN0CisrICAgIH0KKysgICAgLXJlICJDYW4ndCBjcmVhdGUgYSBj b3JlZmlsZVxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCXVuc3VwcG9ydGVkICR0ZXN0CisrCXJldHVy biAtMQorKyAgICB9CisrfQorKworKyMgTm93IHJlc3RhcnQgZ2RiIGFuZCBsb2FkIHRoZSBjb3Jl ZmlsZS4KKysKKytjbGVhbl9yZXN0YXJ0ICRleGVjdXRhYmxlCisrZ2RiX2xvYWRfc2hsaWIgJGxp YmZpbGUKKysKKytzZXQgYnVpbGRpZCBbYnVpbGRfaWRfZGVidWdfZmlsZW5hbWVfZ2V0ICRsaWJm aWxlXQorKworK3JlZ3N1YiB7XC5kZWJ1ZyR9ICRidWlsZGlkIHt9IGJ1aWxkaWQKKysKKytzZXQg ZGVidWdkaXIgW3N0YW5kYXJkX291dHB1dF9maWxlICR7dGVzdGZpbGV9LWRlYnVnZGlyXQorK2Zp bGUgZGVsZXRlIC1mb3JjZSAtLSAkZGVidWdkaXIKKysKKytmaWxlIG1rZGlyICRkZWJ1Z2Rpci9b ZmlsZSBkaXJuYW1lICRsaWJmaWxlXQorK2ZpbGUgY29weSAkbGliZmlsZSAkZGVidWdkaXIvJHts aWJmaWxlfQorKworK2ZpbGUgbWtkaXIgJGRlYnVnZGlyL1tmaWxlIGRpcm5hbWUgJGJ1aWxkaWRd CisrZmlsZSBjb3B5ICRsaWJmaWxlICRkZWJ1Z2Rpci8ke2J1aWxkaWR9CisrCisrcmVtb3RlX2V4 ZWMgYnVpbGQgImxuIC1zIC9saWIgICAgICAgJHtkZWJ1Z2Rpcn0vIgorK3JlbW90ZV9leGVjIGJ1 aWxkICJsbiAtcyAvbGliNjQgICAgICR7ZGVidWdkaXJ9LyIKKysjIC91c3IgaXMgbm90IG5lZWRl ZCwgYWxsIHRoZSBsaWJzIGFyZSBpbiAvbGliNjQ6IGxpYm0uc28uNiBsaWJjLnNvLjYgbGQtbGlu dXgteDg2LTY0LnNvLjIKKysKKytnZGJfdGVzdF9ub19vdXRwdXQgInNldCBzb2xpYi1hYnNvbHV0 ZS1wcmVmaXggJGRlYnVnZGlyIiBcCisrICAgICJzZXQgc29saWItYWJzb2x1dGUtcHJlZml4Igor KworK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGRlYnVnLWZpbGUtZGlyZWN0b3J5ICRkZWJ1Z2Rp ciIgInNldCBkZWJ1Zy1maWxlLWRpcmVjdG9yeSIKKysKKytnZGJfdGVzdCAiY29yZSAke2djb3Jl ZmlsZX0iICJDb3JlIHdhcyBnZW5lcmF0ZWQgYnkgLioiICJyZS1sb2FkIGdlbmVyYXRlZCBjb3Jl ZmlsZSIKKysKKytnZGJfdGVzdCAiZnJhbWUiICIjMCBcW15cclxuXF0qIGxpYiAuKiIgImxpYnJh cnkgZ290IGxvYWRlZCIKKysKKytnZGJfdGVzdCAiYnQiCisrZ2RiX3Rlc3QgImluZm8gc2hhcmVk IgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2RiaW5pdC1oaXN0b3J5LmV4 cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2RiaW5pdC1oaXN0b3J5LmV4cAorLS0tIGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9nZGJpbml0LWhpc3RvcnkuZXhwCisrKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2dkYmluaXQtaGlzdG9yeS5leHAKK0BAIC0xNzksNyArMTc5LDggQEAgcHJv YyB0ZXN0X2VtcHR5X2hpc3RvcnlfZmlsZW5hbWUgeyB9IHsKKyAgICAgZ2xvYmFsIGVudgorICAg ICBnbG9iYWwgZ2RiX3Byb21wdAorIAorLSAgICBzZXQgY29tbW9uX2hpc3RvcnkgW2xpc3QgInNl dCBoZWlnaHQgMCIgInNldCB3aWR0aCAwIl0KKysgICAgc2V0IGNvbW1vbl9oaXN0b3J5IFtsaXN0 ICJzZXQgaGVpZ2h0IDAiICJzZXQgd2lkdGggMCIgXAorKwkJCSAgICAic2V0IHJwbS1zdWdnZXN0 aW9uIGVuYWJsZWQgb2ZmIl0KKyAKKyAgICAgc2V0IHRlc3RfZGlyIFtzdGFuZGFyZF9vdXRwdXRf ZmlsZSBoaXN0b3J5X3Rlc3RdCisgICAgIHJlbW90ZV9leGVjIGhvc3QgIm1rZGlyIC1wICR0ZXN0 X2RpciIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3JoYno5ODExNTQtbWlz bGVhZGluZy15dW0taW5zdGFsbC13YXJuaW5nLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv cmhiejk4MTE1NC1taXNsZWFkaW5nLXl1bS1pbnN0YWxsLXdhcm5pbmcuZXhwCituZXcgZmlsZSBt b2RlIDEwMDY0NAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9y aGJ6OTgxMTU0LW1pc2xlYWRpbmcteXVtLWluc3RhbGwtd2FybmluZy5leHAKK0BAIC0wLDAgKzEs NjAgQEAKKysjIENvcHlyaWdodCAoQykgMjAxNCAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90 LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworKyMgQ3JlYXRlIGEgY29y ZSBmaWxlLCB0aGVuIGhpZGUgdGhlIGV4ZWN1dGFibGUuICBSZXN0YXJ0IEdEQiBhbmQgbG9hZAor KyMgdGhlIGNvcmUgZmlsZS4gIENoZWNrIEdEQiBnaXZlcyBhIG1lc3NhZ2Ugc3VnZ2VzdGluZyBh ICdkbmYnIGNvbW1hbmQKKysjIHRvIHRyeSBhbmQgaW5zdGFsbCB0aGUgZXhlY3V0YWJsZSBiYXNl ZCBvbiBpdHMgYnVpbGQtaWQuCisrCisrc3RhbmRhcmRfdGVzdGZpbGUgIm5vcm1hbC5jIgorKwor K2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7 c3JjZmlsZX1dIH0geworKyAgICByZXR1cm4gLTEKKyt9CisrCisrIyBHZXQgdGhlIGJ1aWxkLWlk IG9mIHRoZSBmaWxlLgorK3NldCBidWlsZF9pZF9kZWJ1Z19maWxlIFtidWlsZF9pZF9kZWJ1Z19m aWxlbmFtZV9nZXQgJGJpbmZpbGVdCisrcmVnc3ViIC1hbGwgIi5kZWJ1ZyQiICRidWlsZF9pZF9k ZWJ1Z19maWxlICIiIGJ1aWxkX2lkX3dpdGhvdXRfZGVidWcKKysKKysjIFJ1biB0byBtYWluLgor K2lmIHsgIVtydW50b19tYWluXSB9IHsKKysgICAgcmV0dXJuIC0xCisrfQorKworKyMgV2UgZmly c3QgbmVlZCB0byBnZW5lcmF0ZSBhIGNvcmVmaWxlLgorK3NldCBjb3JlZmlsZW5hbWUgIltzdGFu ZGFyZF9vdXRwdXRfZmlsZSBnY29yZS50ZXN0XSIKKytpZiB7ICFbZ2RiX2djb3JlX2NtZCAiJGNv cmVmaWxlbmFtZSIgInNhdmUgY29yZWZpbGUiXSB9IHsKKysgICAgdW50ZXN0ZWQgImNvdWxkIG5v dCBnZW5lcmF0ZSBhIGNvcmVmaWxlIgorKyAgICByZXR1cm4gLTEKKyt9CisrCisrIyBNb3ZlIHRo ZSBiaW5maWxlIHRvIGEgdGVtcG9yYXJ5IG5hbWUuCisrcmVtb3RlX2V4ZWMgYnVpbGQgIm12ICRi aW5maWxlICR7YmluZmlsZX0ub2xkIgorKworKyMgUmVpbml0aWFsaXplIEdEQiBhbmQgc2VlIGlm IHdlIGdldCBhIGRuZiBzdWdnZXN0aW9uLgorK2NsZWFuX3Jlc3RhcnQKKysKKytnZGJfdGVzdCAi c2V0IHJwbS1zdWdnZXN0aW9uIGVuYWJsZWQgb24iICIiIFwKKysgICAgInR1cm4gb24gcnBtLXN1 Z2dlc3Rpb24gZmVhdHVyZSIKKysKKysjIEdEQiBvbmx5IG1ha2VzIGJ1aWxkLWlkIGJhc2VkIFJQ TSBzdWdnZXN0aW9ucyBpZiAvdXNyL2xpYiBpcyBpbgorKyMgdGhlIGRlYnVnLWZpbGUtZGlyZWN0 b3J5IGxpc3QsIHRoZSByZWFzb24gYmVpbmcgdGhhdCBzeXN0ZW0gUlBNcworKyMgd2lsbCBhbHdh eXMgaW5zdGFsbCB1bmRlciB0aGlzIGxvY2F0aW9uLiAgSWYgR0RCIGlzIG5vdCBsb29raW5nCisr IyBoZXJlIHRoZW4gdGhlcmUncyBubyBwb2ludCBtYWtpbmcgc3VnZ2VzdGlvbnMuCisrZ2RiX3Rl c3QgInNldCBkZWJ1Zy1maWxlLWRpcmVjdG9yeSAvdXNyL2xpYi8iICIiIFwKKysgICAgInNldCBk ZWJ1Zy1maWxlLWRpcmVjdG9yeSIKKysKKytnZGJfdGVzdCAiY29yZS1maWxlIFtzdGFuZGFyZF9v dXRwdXRfZmlsZSBnY29yZS50ZXN0XSIgXAorKyAgICAiTWlzc2luZyBmaWxlXFwoc1xcKSwgdHJ5 OiBkbmYgLS1lbmFibGVyZXBvPSdcXCpkZWJ1Z1xcKicgaW5zdGFsbCBbc3RyaW5nX3RvX3JlZ2V4 cCAvdXNyL2xpYi8kYnVpbGRfaWRfd2l0aG91dF9kZWJ1Z10gW3N0cmluZ190b19yZWdleHAgL3Vz ci9saWIvZGVidWcvJGJ1aWxkX2lkX2RlYnVnX2ZpbGVdIiBcCisrICAgICJ0ZXN0IGZpcnN0IHl1 bS9kbmYgd2FybmluZyIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHkt bWlzc2luZy1kZWJ1Zy5weSBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1taXNzaW5nLWRl YnVnLnB5CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktbWlzc2luZy1kZWJ1Zy5w eQorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW1pc3NpbmctZGVidWcucHkKK0BA IC0xOSw2ICsxOSwxMyBAQCBmcm9tIGVudW0gaW1wb3J0IEVudW0KKyBpbXBvcnQgZ2RiCisgZnJv bSBnZGIubWlzc2luZ19kZWJ1ZyBpbXBvcnQgTWlzc2luZ0RlYnVnSGFuZGxlcgorIAorKyMgVGhp cyBpcyBhIFJIRUwvRmVkb3JhIHdvcmsgYXJvdW5kOiBUaGVyZSdzIGFscmVhZHkgYQorKyMgbWlz c2luZy1kZWJ1Zy1pbmZvIGhhbmRsZXIgcmVnaXN0ZXJlZCBmb3IgdGhlc2UgdmVyc2lvbnMgb2Yg R0RCLgorKyMgRGlzY2FyZCB0aGUgaGFuZGxlciBub3cgc28gdGhhdCB0aGUgdGVzdHMgd2lsbCBw YXNzICh0aGUgdGVzdHMKKysjIGFzc3VtZSBubyBoYW5kbGVyIGlzIGN1cnJlbnRseSByZWdpc3Rl cmVkKS4KKytnZGIubWlzc2luZ19kZWJ1Z19oYW5kbGVycyA9IFtdCisrCisrCisgIyBBIGdsb2Jh bCBsb2cgdGhhdCBpcyBmaWxsZWQgaW4gYnkgaW5zdGFuY2VzIG9mIHRoZSBMT0dfSEFORExFUiBj bGFzcworICMgd2hlbiB0aGV5IGFyZSBjYWxsZWQuCisgaGFuZGxlcl9jYWxsX2xvZyA9IFtdCitA QCAtMTE4LDQgKzEyNSw3IEBAIGRlZiByZWdpc3RlcihuYW1lLCBsb2N1cz1Ob25lKToKKyByaGFu ZGxlciA9IGV4Y2VwdGlvbl9oYW5kbGVyKCkKKyBoYW5kbGVyX29iaiA9IGhhbmRsZXIoKQorIAor KyMgRGlzY2FyZCB0aGUgcnBtLXN1Z2dlc3Rpb24gaGFuZGxlci4KKytnZGIubWlzc2luZ19maWxl X2hhbmRsZXJzID0gW10KKysKKyBwcmludCgiU3VjY2VzcyIpCitkaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIucHl0aG9uL3B5LW1pc3Npbmctb2JqZmlsZS5weSBiL2dkYi90ZXN0c3VpdGUv Z2RiLnB5dGhvbi9weS1taXNzaW5nLW9iamZpbGUucHkKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2Ri LnB5dGhvbi9weS1taXNzaW5nLW9iamZpbGUucHkKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5 dGhvbi9weS1taXNzaW5nLW9iamZpbGUucHkKK0BAIC0xNjQsNCArMTY0LDcgQEAgZGVmIHJlZ2lz dGVyKG5hbWUsIGxvY3VzPU5vbmUpOgorIHJoYW5kbGVyID0gZXhjZXB0aW9uX2hhbmRsZXIoKQor IGhhbmRsZXJfb2JqID0gaGFuZGxlcigpCisgCisrIyBEaXNjYXJkIHRoZSBycG0tc3VnZ2VzdGlv biBoYW5kbGVyLgorK2dkYi5taXNzaW5nX2ZpbGVfaGFuZGxlcnMgPSBbXQorKworIHByaW50KCJT dWNjZXNzIikKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwIGIvZ2RiL3Rl c3RzdWl0ZS9saWIvZ2RiLmV4cAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAorKysr IGIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAorQEAgLTI1NSw3ICsyNTUsOCBAQCBpZiAhW2lu Zm8gZXhpc3RzIElOVEVSTkFMX0dEQkZMQUdTXSB7CisgCQkgICAiLW54IiBcCisgCQkgICAiLXEi IFwKKyAJCSAgIHstaWV4ICJzZXQgaGVpZ2h0IDAifSBcCistCQkgICB7LWlleCAic2V0IHdpZHRo IDAifV1dCisrCQkgICB7LWlleCAic2V0IHdpZHRoIDAifSBcCisrCQkgICB7LWlleCAic2V0IHJw bS1zdWdnZXN0aW9uIGVuYWJsZWQgb2ZmIn1dXQorIAorICAgICAjIElmIERFQlVHSU5GT0RfVVJM UyBpcyBzZXQsIGdkYiB3aWxsIHRyeSB0byBkb3dubG9hZCBzb3VyY2VzIGFuZAorICAgICAjIGRl YnVnIGluZm8gZm9yIGYuaS4gc3lzdGVtIGxpYnJhcmllcy4gIFByZXZlbnQgdGhpcy4KK0BAIC0y NjEwLDYgKzI2MTEsMTggQEAgcHJvYyBkZWZhdWx0X2dkYl9zdGFydCB7IH0geworIAl9CisgICAg IH0KKyAKKysgICAgIyBUdXJuIG9mZiB0aGUgbWlzc2luZyBkZWJ1ZyBpbmZvIG1lc3NhZ2VzIGFz IHRoZSB0ZXN0c3VpdGUgZG9lcworKyAgICAjIG5vdCBleHBlY3QgdGhlbS4KKysgICAgc2VuZF9n ZGIgInNldCBycG0tc3VnZ2VzdGlvbiBlbmFibGVkIG9mZlxuIgorKyAgICBnZGJfZXhwZWN0IDEw IHsKKysJLXJlICIkZ2RiX3Byb21wdCAkIiB7CisrCSAgICB2ZXJib3NlICJEaXNhYmxlZCB0aGUg bWlzc2luZyBkZWJ1ZyBpbmZvIG1lc3NhZ2VzLiIgMgorKwl9CisrCXRpbWVvdXQgeworKwkgICAg d2FybmluZyAiQ291bGQgbm90IGRpc2FibGUgdGhlIG1pc3NpbmcgZGVidWcgaW5mbyBtZXNzYWdl cy4iCisrCX0KKysgICAgfQorKworICAgICBnZGJfZGVidWdfaW5pdAorICAgICByZXR1cm4gMAor IH0KK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cCBiL2dkYi90 ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCistLS0gYS9nZGIvdGVzdHN1aXRlL2xpYi9taS1z dXBwb3J0LmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAKK0BAIC0z MjEsNiArMzIxLDE3IEBAIHByb2MgZGVmYXVsdF9taV9nZGJfc3RhcnQgeyB7IGZsYWdzIHt9IH0g fSB7CisgCSAgICB3YXJuaW5nICJDb3VsZG4ndCBzZXQgdGhlIHdpZHRoIHRvIDAuIgorIAl9Cisg ICAgIH0KKysgICAgIyBUdXJuIG9mZiB0aGUgbWlzc2luZyBkZWJ1ZyBpbmZvIG1lc3NhZ2VzIGFz IHRoZSB0ZXN0c3VpdGUgZG9lcworKyAgICAjIG5vdCBleHBlY3QgdGhlbS4KKysgICAgc2VuZF9n ZGIgIjE5MC1nZGItc2V0IHJwbS1zdWdnZXN0aW9uIGVuYWJsZWQgb2ZmXG4iCisrICAgIGdkYl9l eHBlY3QgMTAgeworKwktcmUgIi4qMTkwLWdkYi1zZXQgcnBtLXN1Z2dlc3Rpb24gZW5hYmxlZCBv ZmZcclxuMTkwXFxcXmRvbmVcclxuJG1pX2dkYl9wcm9tcHQkIiB7CisrCSAgICB2ZXJib3NlICJE aXNhYmxlZCB0aGUgbWlzc2luZyBkZWJ1ZyBpbmZvIG1lc3NhZ2VzLiIgMgorKwl9CisrCXRpbWVv dXQgeworKwkgICAgd2FybmluZyAiQ291bGQgbm90IGRpc2FibGUgdGhlIG1pc3NpbmcgZGVidWcg aW5mbyBtZXNzYWdlcy4iCisrCX0KKysgICAgfQorIAorICAgICBpZiB7ICRzZXBhcmF0ZV9pbmZl cmlvcl9wdHkgfSB7CisgCW1pX2NyZWF0ZV9pbmZlcmlvcl9wdHkKCmRpZmYgLS1naXQgYS9nZGIt dGVzdC1zaG93LXZlcnNpb24ucGF0Y2ggYi9nZGItdGVzdC1zaG93LXZlcnNpb24ucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmVlZTM4ZQotLS0gL2Rldi9udWxsCisr KyBiL2dkYi10ZXN0LXNob3ctdmVyc2lvbi5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIEZF RE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmV3IEJ1cmdl c3MgPGFidXJnZXNzQHJlZGhhdC5jb20+CitEYXRlOiBGcmksIDI3IE9jdCAyMDE3IDIxOjA3OjUw ICswMjAwCitTdWJqZWN0OiBnZGItdGVzdC1zaG93LXZlcnNpb24ucGF0Y2gKKworOzsgQ2hlY2sg ZGlzdHJvIG5hbWUgaXMgaW5jbHVkZWQgaW4gdGhlIHZlcnNpb24gb3V0cHV0LgorCitkaWZmIC0t Z2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9mZWRvcmEtdmVyc2lvbi5leHAgYi9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL2ZlZG9yYS12ZXJzaW9uLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQK Ky0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZmVkb3JhLXZlcnNp b24uZXhwCitAQCAtMCwwICsxLDIyIEBACisrIyBDb3B5cmlnaHQgMjAyMyBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisr IyBTdGFydCB3aXRoIGEgZnJlc2ggZ2RiCisrY2xlYW5fcmVzdGFydAorKworKyMgQ2hlY2sgdGhl IHZlcnNpb24gc3RyaW5nIGNvbnRhaW5zIGVpdGhlciB0aGUgRmVkb3JhIG9yIFJIRUwgZGlzdHJv CisrIyBuYW1lLCBhbmQgdGhhdCB0aGUgdmVyc2lvbiBudW1iZXIgbG9va3Mgcm91Z2hseSBjb3Jy ZWN0IGluIGZvcm1hdC4KKytnZGJfdGVzdCAic2hvdyB2ZXJzaW9uIiBcCisrICAgICJHTlUgZ2Ri IFxcKChGZWRvcmEgTGludXh8UmVkIEhhdCBFbnRlcnByaXNlIExpbnV4KVxcKSBcWzAtOVxdK1xc LlxbMC05XF0rLVxbMC05XF0rLioiCgpkaWZmIC0tZ2l0IGEvZ2RiLnNwZWMgYi9nZGIuc3BlYwpp bmRleCA5M2JmZDM4Li5lODRlNmVlIDEwMDY0NAotLS0gYS9nZGIuc3BlYworKysgYi9nZGIuc3Bl YwpAQCAtOTM3LDYgKzkzNywxMyBAQCBmaQogCiAlY2hhbmdlbG9nCiAqIFR1ZSBKdW4gMDMgMjAy NSBBbmRyZXcgQnVyZ2VzcyA8YWJ1cmdlc3NAcmVkaGF0LmNvbT4KKy0gUmVuYW1lICdnZGItYWRk LXJwbS1zdWdnZXN0aW9uLXNjcmlwdC5wYXRjaCcgdG8KKyAgJ2dkYi1ycG0tc3VnZ2VzdGlvbi1z Y3JpcHQucGF0Y2gnIGFuZAorICAnZ2RiLTYuMy1yaC10ZXN0dmVyc2lvbi0yMDA0MTIwMi5wYXRj aCcgdG8KKyAgJ2dkYi10ZXN0LXNob3ctdmVyc2lvbi5wYXRjaCcuICBUaGUgbmV3IG5hbWVzIGJl dHRlciByZWZsZWN0IHRoZQorICBwYXRjaCBjb250ZW50cy4KKworKiBUdWUgSnVuIDAzIDIwMjUg QW5kcmV3IEJ1cmdlc3MgPGFidXJnZXNzQHJlZGhhdC5jb20+CiAtIFJlbW92ZSBnZGItYXJjaGVy LW5leHQtb3Zlci10aHJvdy1jeHgtZXhlYy5wYXRjaCwgd2Ugbm93IGhhdmUKICAgdXBzdHJlYW0g Y29tbWl0IGQ0NjI1NTBjOTFjLgogCg==