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: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] fix-dup-patch: - Fix regressions on C++ names resolving (PR 11734, PR 12273, Keith Seitz). Date: Thu, 23 Jul 2026 18:29:48 GMT Message-ID: <178483138888.1.14227723438666212542.rpms-gdb-e266c66da6a1@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: e266c66da6a1f3b68b2e1decf569bb1dcedb9fbf QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2RiCkJyYW5jaCA6 IGZpeC1kdXAtcGF0Y2gKQ29tbWl0IDogZTI2NmM2NmRhNmExZjNiNjhiMmUxZGVjZjU2OWJiMWRj ZWRiOWZiZgpBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4KRGF0ZSAgIDogMjAxMS0wMi0wNlQyMzo0ODowOCswMTowMApTdGF0cyAgOiArODU3Ly0yIGlu IDQgZmlsZShzKQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2dk Yi9jL2UyNjZjNjZkYTZhMWYzYjY4YjJlMWRlY2Y1NjliYjFkY2VkYjlmYmY/YnJhbmNoPWZpeC1k dXAtcGF0Y2gKCkxvZzoKLSBGaXggcmVncmVzc2lvbnMgb24gQysrIG5hbWVzIHJlc29sdmluZyAo UFIgMTE3MzQsIFBSIDEyMjczLCBLZWl0aCBTZWl0eikuCgotLS0KZGlmZiAtLWdpdCBhL2dkYi1w aHlzbmFtZS1wcjExNzM0LTFvZjIucGF0Y2ggYi9nZGItcGh5c25hbWUtcHIxMTczNC0xb2YyLnBh dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyYTY5YjcKLS0tIC9kZXYv bnVsbAorKysgYi9nZGItcGh5c25hbWUtcHIxMTczNC0xb2YyLnBhdGNoCkBAIC0wLDAgKzEsNjE5 IEBACitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0xMi9tc2cwMDI2 My5odG1sCisKK0luZGV4OiBnZGItNy4yLjUwLjIwMTEwMjA2L2dkYi9jcC1zdXBwb3J0LmMKKz09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tLSBnZGItNy4yLjUwLjIwMTEwMjA2Lm9yaWcvZ2RiL2NwLXN1cHBvcnQuYwky MDExLTAyLTA2IDIzOjEyOjE2LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMTAy MDYvZ2RiL2NwLXN1cHBvcnQuYwkyMDExLTAyLTA2IDIzOjEyOjIyLjAwMDAwMDAwMCArMDEwMAor QEAgLTM1LDYgKzM1LDcgQEAKKyAjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgorICNpbmNsdWRlICJl eHByZXNzaW9uLmgiCisgI2luY2x1ZGUgInZhbHVlLmgiCisrI2luY2x1ZGUgImxhbmd1YWdlLmgi CisgCisgI2luY2x1ZGUgInNhZmUtY3R5cGUuaCIKKyAKK0BAIC05MzYsNyArOTM3LDggQEAgbWFr ZV9zeW1ib2xfb3ZlcmxvYWRfbGlzdF9xdWFsaWZpZWQgKGNvbgorICAgQUxMX09CSkZJTEVTIChv YmpmaWxlKQorICAgeworICAgICBpZiAob2JqZmlsZS0+c2YpCistICAgICAgb2JqZmlsZS0+c2Yt PnFmLT5leHBhbmRfc3ltdGFic19mb3JfZnVuY3Rpb24gKG9iamZpbGUsIGZ1bmNfbmFtZSk7Cisr ICAgICAgb2JqZmlsZS0+c2YtPnFmLT5leHBhbmRfc3ltdGFic19mb3JfZnVuY3Rpb24gKG9iamZp bGUsIGZ1bmNfbmFtZSwKKysJCQkJCQkgICAgbGFuZ3VhZ2VfY3BsdXMpOworICAgfQorIAorICAg LyogU2VhcmNoIHVwd2FyZHMgZnJvbSBjdXJyZW50bHkgc2VsZWN0ZWQgZnJhbWUgKHNvIHRoYXQg d2UgY2FuCitJbmRleDogZ2RiLTcuMi41MC4yMDExMDIwNi9nZGIvZHdhcmYycmVhZC5jCis9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLS0gZ2RiLTcuMi41MC4yMDExMDIwNi5vcmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAx MS0wMi0wNiAyMzoxMjoyMi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTEwMjA2 L2dkYi9kd2FyZjJyZWFkLmMJMjAxMS0wMi0wNiAyMzoxMjoyMi4wMDAwMDAwMDAgKzAxMDAKK0BA IC0yMzczLDcgKzIzNzMsOCBAQCBkdzJfbG9va3VwX3N5bXRhYiAoc3RydWN0IG9iamZpbGUgKm9i amZpCisgCisgc3RhdGljIHN0cnVjdCBzeW10YWIgKgorIGR3Ml9sb29rdXBfc3ltYm9sIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgaW50IGJsb2NrX2luZGV4LAorLQkJICAgY29uc3QgY2hhciAq bmFtZSwgZG9tYWluX2VudW0gZG9tYWluKQorKwkJICAgY29uc3QgY2hhciAqbmFtZSwgZG9tYWlu X2VudW0gZG9tYWluLAorKwkJICAgZW51bSBsYW5ndWFnZSBsYW5ndWFnZSkKKyB7CisgICAvKiBX ZSBkbyBhbGwgdGhlIHdvcmsgaW4gdGhlIHByZV9leHBhbmRfc3ltdGFic19tYXRjaGluZyBob29r CisgICAgICBpbnN0ZWFkLiAgKi8KK0BAIC0yNDQ5LDcgKzI0NTAsOCBAQCBkdzJfcmVsb2NhdGUg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzCisgCisgc3RhdGljIHZvaWQKKyBkdzJfZXhwYW5k X3N5bXRhYnNfZm9yX2Z1bmN0aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKy0JCQkJIGNv bnN0IGNoYXIgKmZ1bmNfbmFtZSkKKysJCQkJIGNvbnN0IGNoYXIgKmZ1bmNfbmFtZSwKKysJCQkJ IGVudW0gbGFuZ3VhZ2UgbGFuZ3VhZ2UpCisgeworICAgZHcyX2RvX2V4cGFuZF9zeW10YWJzX21h dGNoaW5nIChvYmpmaWxlLCBmdW5jX25hbWUpOworIH0KK0BAIC0yNTA5LDcgKzI1MTEsOCBAQCBk dzJfZXhwYW5kX3N5bXRhYnNfd2l0aF9maWxlbmFtZSAoc3RydWN0CisgfQorIAorIHN0YXRpYyBj b25zdCBjaGFyICoKKy1kdzJfZmluZF9zeW1ib2xfZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUsIGNvbnN0IGNoYXIgKm5hbWUpCisrZHcyX2ZpbmRfc3ltYm9sX2ZpbGUgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLCBjb25zdCBjaGFyICpuYW1lLAorKwkJICAgICAgZW51bSBsYW5ndWFnZSBs YW5ndWFnZSkKKyB7CisgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3U7CisgICBv ZmZzZXRfdHlwZSAqdmVjOworSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAyMDYvZ2RiL2xpbmVzcGVj LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4yLjUwLjIwMTEwMjA2Lm9yaWcvZ2RiL2xpbmVzcGVj LmMJMjAxMS0wMi0wNiAyMzoxMjoxNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIw MTEwMjA2L2dkYi9saW5lc3BlYy5jCTIwMTEtMDItMDYgMjM6MTI6MjYuMDAwMDAwMDAwICswMTAw CitAQCAtMTIyNiw3ICsxMjI2LDcgQEAgZGVjb2RlX29iamMgKGNoYXIgKiphcmdwdHIsIGludCBm dW5maXJzdAorIAorIHN0YXRpYyBzdHJ1Y3Qgc3ltdGFic19hbmRfbGluZXMKKyBkZWNvZGVfY29t cG91bmQgKGNoYXIgKiphcmdwdHIsIGludCBmdW5maXJzdGxpbmUsIGNoYXIgKioqY2Fub25pY2Fs LAorLQkJIGNoYXIgKnNhdmVkX2FyZywgY2hhciAqcCwgaW50ICpub3RfZm91bmRfcHRyKQorKwkJ IGNoYXIgKnRoZV9yZWFsX3NhdmVkX2FyZywgY2hhciAqcCwgaW50ICpub3RfZm91bmRfcHRyKQor IHsKKyAgIHN0cnVjdCBzeW10YWJzX2FuZF9saW5lcyB2YWx1ZXM7CisgICBjaGFyICpwMjsKK0BA IC0xMjM3LDcgKzEyMzcsMjMgQEAgZGVjb2RlX2NvbXBvdW5kIChjaGFyICoqYXJncHRyLCBpbnQg ZnVuZgorICAgc3RydWN0IHN5bWJvbCAqc3ltX2NsYXNzOworICAgc3RydWN0IHR5cGUgKnQ7Cisg ICBjaGFyICpzYXZlZF9qYXZhX2FyZ3B0ciA9IE5VTEw7CisrICBjaGFyICpzYXZlZF9hcmc7Cisg CisrICAvKiBUSEVfUkVBTF9TQVZFRF9BUkcgY2Fubm90IGJlIGFsdGVyZWQsIHNvIG1ha2UgYSBj b3B5IHRoYXQgY2FuIGJlLiAgKi8KKysgIHNhdmVkX2FyZyA9IGFsbG9jYSAoc3RybGVuICh0aGVf cmVhbF9zYXZlZF9hcmcpICsgMSk7CisrICBzdHJjcHkgKHNhdmVkX2FyZywgdGhlX3JlYWxfc2F2 ZWRfYXJnKTsKKysKKysgIC8qIElmIHRoZSB1c2VyIHNwZWNpZmllZCAiJ2Zvbzo6YmFyKGJheikn IiAobm90ZSB0aGUgcXVvdGVzIC0tIG9mdGVuCisrICAgICBhZGRlZCB0byB3b3JrYXJvdW5kIGNv bXBsZXRlciBpc3N1ZXMpIC0tIHNhdmVkX2FyZyB3aWxsIGJlCisrICAgICBlbmNhcHN1bGF0ZWQg aW4gc2luZ2xlLXF1b3Rlcy4gIFRoZXkgYXJlIHN1cGVyZmx1b3VzLCBzbyBqdXN0IHN0cmlwCisr ICAgICB0aGVtIG9mZi4gICovCisrICBpZiAoKnNhdmVkX2FyZyA9PSAnXCcnKQorKyAgICB7Cisr ICAgICAgY2hhciAqZW5kID0gc2tpcF9xdW90ZWQgKHNhdmVkX2FyZyk7CisrICAgICAgbWVtbW92 ZSAoc2F2ZWRfYXJnLCBzYXZlZF9hcmcgKyAxLCBlbmQgLSBzYXZlZF9hcmcpOworKyAgICAgIG1l bW1vdmUgKGVuZCAtIDIsIGVuZCwgc3RybGVuIChzYXZlZF9hcmcpICsgMSk7CisrICAgIH0KKysg ICAgICAKKyAgIC8qIEZpcnN0IGNoZWNrIGZvciAiZ2xvYmFsIiBuYW1lc3BhY2Ugc3BlY2lmaWNh dGlvbiwgb2YgdGhlIGZvcm0KKyAgICAgICI6OmZvbyIuICBJZiBmb3VuZCwgc2tpcCBvdmVyIHRo ZSBjb2xvbnMgYW5kIGp1bXAgdG8gbm9ybWFsCisgICAgICBzeW1ib2wgcHJvY2Vzc2luZy4gIEku ZS4gdGhlIHdob2xlIGxpbmUgc3BlY2lmaWNhdGlvbiBzdGFydHMgd2l0aAorQEAgLTE0ODksNyAr MTUwNSw3IEBAIGRlY29kZV9jb21wb3VuZCAoY2hhciAqKmFyZ3B0ciwgaW50IGZ1bmYKKyAgICAg IHVwLiAgVGhlIHF1b3RlcyBhcmUgaW1wb3J0YW50IGlmIGNvcHkgaXMgZW1wdHkuICAqLworICAg aWYgKG5vdF9mb3VuZF9wdHIpCisgICAgICpub3RfZm91bmRfcHRyID0gMTsKKy0gIGNwbHVzcGx1 c19lcnJvciAoc2F2ZWRfYXJnLAorKyAgY3BsdXNwbHVzX2Vycm9yICh0aGVfcmVhbF9zYXZlZF9h cmcsCisgCQkgICAiQ2FuJ3QgZmluZCBtZW1iZXIgb2YgbmFtZXNwYWNlLCAiCisgCQkgICAiY2xh c3MsIHN0cnVjdCwgb3IgdW5pb24gbmFtZWQgXCIlc1wiXG4iLAorIAkJICAgY29weSk7CitJbmRl eDogZ2RiLTcuMi41MC4yMDExMDIwNi9nZGIvcHN5bXRhYi5jCis9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2Ri LTcuMi41MC4yMDExMDIwNi5vcmlnL2dkYi9wc3ltdGFiLmMJMjAxMS0wMi0wNiAyMzoxMjoxNi4w MDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTEwMjA2L2dkYi9wc3ltdGFiLmMJMjAx MS0wMi0wNiAyMzoxMjo1NC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0zMyw2ICszMyw4IEBACisgI2lu Y2x1ZGUgInJlYWRsaW5lL3JlYWRsaW5lLmgiCisgI2luY2x1ZGUgImdkYl9yZWdleC5oIgorICNp bmNsdWRlICJkaWN0aW9uYXJ5LmgiCisrI2luY2x1ZGUgImxhbmd1YWdlLmgiCisrI2luY2x1ZGUg ImNwLXN1cHBvcnQuaCIKKyAKKyAjaWZuZGVmIERFVl9UVFkKKyAjZGVmaW5lIERFVl9UVFkgIi9k ZXYvdHR5IgorQEAgLTU1LDcgKzU3LDggQEAgc3RhdGljIHN0cnVjdCBwYXJ0aWFsX3N5bWJvbCAq bWF0Y2hfcGFydAorIAorIHN0YXRpYyBzdHJ1Y3QgcGFydGlhbF9zeW1ib2wgKmxvb2t1cF9wYXJ0 aWFsX3N5bWJvbCAoc3RydWN0IHBhcnRpYWxfc3ltdGFiICosCisgCQkJCQkJICAgICBjb25zdCBj aGFyICosIGludCwKKy0JCQkJCQkgICAgIGRvbWFpbl9lbnVtKTsKKysJCQkJCQkgICAgIGRvbWFp bl9lbnVtLAorKwkJCQkJCSAgICAgZW51bSBsYW5ndWFnZSk7CisgCisgc3RhdGljIGNoYXIgKnBz eW10YWJfdG9fZnVsbG5hbWUgKHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqcHMpOworIAorQEAgLTQx OCwxNSArNDIxLDM1IEBAIGZpeHVwX3BzeW1ib2xfc2VjdGlvbiAoc3RydWN0IHBhcnRpYWxfc3kK KyBzdGF0aWMgc3RydWN0IHN5bXRhYiAqCisgbG9va3VwX3N5bWJvbF9hdXhfcHN5bXRhYnMgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorIAkJCSAgICBpbnQgYmxvY2tfaW5kZXgsIGNvbnN0IGNo YXIgKm5hbWUsCistCQkJICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKKysJCQkgICAgY29u c3QgZG9tYWluX2VudW0gZG9tYWluLCBlbnVtIGxhbmd1YWdlIGxhbmd1YWdlKQorIHsKKyAgIHN0 cnVjdCBwYXJ0aWFsX3N5bXRhYiAqcHM7CisgICBjb25zdCBpbnQgcHN5bXRhYl9pbmRleCA9IChi bG9ja19pbmRleCA9PSBHTE9CQUxfQkxPQ0sgPyAxIDogMCk7CisgCisgICBBTExfT0JKRklMRV9Q U1lNVEFCUyAob2JqZmlsZSwgcHMpCisgICB7CistICAgIGlmICghcHMtPnJlYWRpbiAmJiBsb29r dXBfcGFydGlhbF9zeW1ib2wgKHBzLCBuYW1lLCBwc3ltdGFiX2luZGV4LCBkb21haW4pKQorLSAg ICAgIHJldHVybiBQU1lNVEFCX1RPX1NZTVRBQiAocHMpOworKyAgICBpZiAoIXBzLT5yZWFkaW4K KysJJiYgbG9va3VwX3BhcnRpYWxfc3ltYm9sIChwcywgbmFtZSwgcHN5bXRhYl9pbmRleCwgZG9t YWluLCBsYW5ndWFnZSkpCisrICAgICAgeworKwlzdHJ1Y3Qgc3ltYm9sICpzeW07CisrCXN0cnVj dCBzeW10YWIgKnN0YWIgPSBQU1lNVEFCX1RPX1NZTVRBQiAocHMpOworKwlzeW0gPSBOVUxMOwor KworKwkvKiBTb21lIGNhdXRpb24gbXVzdCBiZSBvYnNlcnZlZCB3aXRoIG92ZXJsb2FkZWQgZnVu Y3Rpb25zCisrCSAgIGFuZCBtZXRob2RzLCBzaW5jZSB0aGUgcHN5bXRhYiB3aWxsIG5vdCBjb250 YWluIGFueSBvdmVybG9hZAorKwkgICBpbmZvcm1hdGlvbiAoYnV0IE5BTUUgbWlnaHQgY29udGFp biBpdCkuICAqLworKwlpZiAoc3RhYi0+cHJpbWFyeSkKKysJICB7CisrCSAgICBzdHJ1Y3QgYmxv Y2t2ZWN0b3IgKmJ2ID0gQkxPQ0tWRUNUT1IgKHN0YWIpOworKwkgICAgc3RydWN0IGJsb2NrICpi bG9jayA9IEJMT0NLVkVDVE9SX0JMT0NLIChidiwgYmxvY2tfaW5kZXgpOworKwkgICAgc3ltID0g bG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5hbWUsIGRvbWFpbik7CisrCSAgfQorKworKwlp ZiAoc3ltICYmIHN0cmNtcF9pdyAoU1lNQk9MX1NFQVJDSF9OQU1FIChzeW0pLCBuYW1lKSA9PSAw KQorKwkgIHJldHVybiBzdGFiOworKworKwkvKiBLZWVwIGxvb2tpbmcgdGhyb3VnaCBvdGhlciBw c3ltdGFicy4gICovCisrICAgICAgfQorICAgfQorIAorICAgcmV0dXJuIE5VTEw7CitAQCAtNTE5 LDIyICs1NDIsNTggQEAgcHJlX2V4cGFuZF9zeW10YWJzX21hdGNoaW5nX3BzeW10YWJzIChzdAor ICAgLyogTm90aGluZy4gICovCisgfQorIAorKy8qIFJldHVybnMgdGhlIG5hbWUgdXNlZCB0byBz ZWFyY2ggcHN5bXRhYnMuICBVbmxpa2Ugc3ltdGFicywgcHN5bXRhYnMgZG8KKysgICBub3QgY29u dGFpbiBhbnkgbWV0aG9kL2Z1bmN0aW9uIGluc3RhbmNlIGluZm9ybWF0aW9uIChzaW5jZSB0aGlz IHdvdWxkCisrICAgZm9yY2UgcmVhZGluZyB0eXBlIGluZm9ybWF0aW9uIHdoaWxlIHJlYWRpbmcg cHN5bXRhYnMpLiAgVGhlcmVmb3JlLAorKyAgIGlmIE5BTUUgY29udGFpbnMgb3ZlcmxvYWQgaW5m b3JtYXRpb24sIGl0IG11c3QgYmUgc3RyaXBwZWQgYmVmb3JlIHNlYXJjaGluZworKyAgIHBzeW10 YWJzLgorKworKyAgIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGZyZWVpbmcgdGhlIHJl dHVybiByZXN1bHQuICAqLworKworK3N0YXRpYyBjb25zdCBjaGFyICoKKytwc3ltdGFiX3NlYXJj aF9uYW1lIChjb25zdCBjaGFyICpuYW1lLCBlbnVtIGxhbmd1YWdlIGxhbmd1YWdlKQorK3sKKysg IHN3aXRjaCAobGFuZ3VhZ2UpCisrICAgIHsKKysgICAgY2FzZSBsYW5ndWFnZV9jcGx1czoKKysg ICAgY2FzZSBsYW5ndWFnZV9qYXZhOgorKyAgICAgIHsKKysgICAgICAgaWYgKHN0cmNociAobmFt ZSwgJygnKSkKKysgICAgICAgICB7CisrICAgICAgICAgICBjaGFyICpyZXQgPSBjcF9yZW1vdmVf cGFyYW1zIChuYW1lKTsKKysgICAgICAgICAgIGlmIChyZXQpCisrICAgICAgICAgICAgIHJldHVy biByZXQ7CisrICAgICAgICAgfQorKyAgICAgIH0KKysKKysgICAgZGVmYXVsdDoKKysgICAgICBi cmVhazsKKysgICAgfQorKworKyAgcmV0dXJuIHhzdHJkdXAgKG5hbWUpOworK30KKysKKyAvKiBM b29rLCBpbiBwYXJ0aWFsX3N5bXRhYiBQU1QsIGZvciBzeW1ib2wgd2hvc2UgbmF0dXJhbCBuYW1l IGlzIE5BTUUuCisgICAgQ2hlY2sgdGhlIGdsb2JhbCBzeW1ib2xzIGlmIEdMT0JBTCwgdGhlIHN0 YXRpYyBzeW1ib2xzIGlmIG5vdC4gICovCisgCisgc3RhdGljIHN0cnVjdCBwYXJ0aWFsX3N5bWJv bCAqCisgbG9va3VwX3BhcnRpYWxfc3ltYm9sIChzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBzdCwg Y29uc3QgY2hhciAqbmFtZSwKKy0JCSAgICAgICBpbnQgZ2xvYmFsLCBkb21haW5fZW51bSBkb21h aW4pCisrCQkgICAgICAgaW50IGdsb2JhbCwgZG9tYWluX2VudW0gZG9tYWluLCBlbnVtIGxhbmd1 YWdlIGxhbmd1YWdlKQorIHsKKyAgIHN0cnVjdCBwYXJ0aWFsX3N5bWJvbCAqKnN0YXJ0LCAqKnBz eW07CisgICBzdHJ1Y3QgcGFydGlhbF9zeW1ib2wgKip0b3AsICoqcmVhbF90b3AsICoqYm90dG9t LCAqKmNlbnRlcjsKKyAgIGludCBsZW5ndGggPSAoZ2xvYmFsID8gcHN0LT5uX2dsb2JhbF9zeW1z IDogcHN0LT5uX3N0YXRpY19zeW1zKTsKKyAgIGludCBkb19saW5lYXJfc2VhcmNoID0gMTsKKysg IGNvbnN0IGNoYXIgKnNlYXJjaF9uYW1lOworKyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXA7Cisg CisgICBpZiAobGVuZ3RoID09IDApCisgICAgIHsKKyAgICAgICByZXR1cm4gKE5VTEwpOworICAg ICB9CisrCisrICBzZWFyY2hfbmFtZSA9IHBzeW10YWJfc2VhcmNoX25hbWUgKG5hbWUsIGxhbmd1 YWdlKTsKKysgIGNsZWFudXAgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCAodm9pZCAqKSBzZWFyY2hf bmFtZSk7CisgICBzdGFydCA9IChnbG9iYWwgPworIAkgICBwc3QtPm9iamZpbGUtPmdsb2JhbF9w c3ltYm9scy5saXN0ICsgcHN0LT5nbG9iYWxzX29mZnNldCA6CisgCSAgIHBzdC0+b2JqZmlsZS0+ c3RhdGljX3BzeW1ib2xzLmxpc3QgKyBwc3QtPnN0YXRpY3Nfb2Zmc2V0KTsKK0BAIC01NjMsNyAr NjIyLDggQEAgbG9va3VwX3BhcnRpYWxfc3ltYm9sIChzdHJ1Y3QgcGFydGlhbF9zeQorIAkgICAg eworIAkgICAgICBkb19saW5lYXJfc2VhcmNoID0gMTsKKyAJICAgIH0KKy0JICBpZiAoc3RyY21w X2l3X29yZGVyZWQgKFNZTUJPTF9TRUFSQ0hfTkFNRSAoKmNlbnRlciksIG5hbWUpID49IDApCisr CSAgaWYgKHN0cmNtcF9pd19vcmRlcmVkIChTWU1CT0xfU0VBUkNIX05BTUUgKCpjZW50ZXIpLAor KwkJCQkgc2VhcmNoX25hbWUpID49IDApCisgCSAgICB7CisgCSAgICAgIHRvcCA9IGNlbnRlcjsK KyAJICAgIH0KK0BAIC01NzcsMTEgKzYzNywxNCBAQCBsb29rdXBfcGFydGlhbF9zeW1ib2wgKHN0 cnVjdCBwYXJ0aWFsX3N5CisgCQkJXygiZmFpbGVkIGludGVybmFsIGNvbnNpc3RlbmN5IGNoZWNr IikpOworIAorICAgICAgIHdoaWxlICh0b3AgPD0gcmVhbF90b3AKKy0JICAgICAmJiBTWU1CT0xf TUFUQ0hFU19TRUFSQ0hfTkFNRSAoKnRvcCwgbmFtZSkpCisrCSAgICAgJiYgU1lNQk9MX01BVENI RVNfU0VBUkNIX05BTUUgKCp0b3AsIHNlYXJjaF9uYW1lKSkKKyAJeworIAkgIGlmIChzeW1ib2xf bWF0Y2hlc19kb21haW4gKFNZTUJPTF9MQU5HVUFHRSAoKnRvcCksCisgCQkJCSAgICAgU1lNQk9M X0RPTUFJTiAoKnRvcCksIGRvbWFpbikpCistCSAgICByZXR1cm4gKCp0b3ApOworKwkgICAgewor KwkgICAgICBkb19jbGVhbnVwcyAoY2xlYW51cCk7CisrCSAgICAgIHJldHVybiAoKnRvcCk7Cisr CSAgICB9CisgCSAgdG9wKys7CisgCX0KKyAgICAgfQorQEAgLTU5NSwxMSArNjU4LDE1IEBAIGxv b2t1cF9wYXJ0aWFsX3N5bWJvbCAoc3RydWN0IHBhcnRpYWxfc3kKKyAJeworIAkgIGlmIChzeW1i b2xfbWF0Y2hlc19kb21haW4gKFNZTUJPTF9MQU5HVUFHRSAoKnBzeW0pLAorIAkJCQkgICAgIFNZ TUJPTF9ET01BSU4gKCpwc3ltKSwgZG9tYWluKQorLQkgICAgICAmJiBTWU1CT0xfTUFUQ0hFU19T RUFSQ0hfTkFNRSAoKnBzeW0sIG5hbWUpKQorLQkgICAgcmV0dXJuICgqcHN5bSk7CisrCSAgICAg ICYmIFNZTUJPTF9NQVRDSEVTX1NFQVJDSF9OQU1FICgqcHN5bSwgc2VhcmNoX25hbWUpKQorKwkg ICAgeworKwkgICAgICBkb19jbGVhbnVwcyAoY2xlYW51cCk7CisrCSAgICAgIHJldHVybiAoKnBz eW0pOworKwkgICAgfQorIAl9CisgICAgIH0KKyAKKysgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsK KyAgIHJldHVybiAoTlVMTCk7CisgfQorIAorQEAgLTkxMSw3ICs5NzgsOCBAQCBkdW1wX3BzeW10 YWJzX2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsCisgICAgYnkgbWF0Y2hpbmcgRlVOQ19OQU1F LiAgTWFrZSBzdXJlIHdlIHJlYWQgdGhhdCBzeW1ib2wgdGFibGUgaW4uICAqLworIAorIHN0YXRp YyB2b2lkCistcmVhZF9zeW10YWJzX2Zvcl9mdW5jdGlvbiAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUsIGNvbnN0IGNoYXIgKmZ1bmNfbmFtZSkKKytyZWFkX3N5bXRhYnNfZm9yX2Z1bmN0aW9uIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqZnVuY19uYW1lLAorKwkJCSAgIGVu dW0gbGFuZ3VhZ2UgbGFuZ3VhZ2UpCisgeworICAgc3RydWN0IHBhcnRpYWxfc3ltdGFiICpwczsK KyAKK0BAIC05MjAsOSArOTg4LDkgQEAgcmVhZF9zeW10YWJzX2Zvcl9mdW5jdGlvbiAoc3RydWN0 IG9iamZpbAorICAgICBpZiAocHMtPnJlYWRpbikKKyAgICAgICBjb250aW51ZTsKKyAKKy0gICAg aWYgKChsb29rdXBfcGFydGlhbF9zeW1ib2wgKHBzLCBmdW5jX25hbWUsIDEsIFZBUl9ET01BSU4p CisrICAgIGlmICgobG9va3VwX3BhcnRpYWxfc3ltYm9sIChwcywgZnVuY19uYW1lLCAxLCBWQVJf RE9NQUlOLCBsYW5ndWFnZSkKKyAJICE9IE5VTEwpCistCXx8IChsb29rdXBfcGFydGlhbF9zeW1i b2wgKHBzLCBmdW5jX25hbWUsIDAsIFZBUl9ET01BSU4pCisrCXx8IChsb29rdXBfcGFydGlhbF9z eW1ib2wgKHBzLCBmdW5jX25hbWUsIDAsIFZBUl9ET01BSU4sIGxhbmd1YWdlKQorIAkgICAgIT0g TlVMTCkpCisgICAgICAgcHN5bXRhYl90b19zeW10YWIgKHBzKTsKKyAgIH0KK0BAIC0xMDQyLDEz ICsxMTEwLDE0IEBAIHBzeW10YWJfdG9fZnVsbG5hbWUgKHN0cnVjdCBwYXJ0aWFsX3N5bXQKKyB9 CisgCisgc3RhdGljIGNvbnN0IGNoYXIgKgorLWZpbmRfc3ltYm9sX2ZpbGVfZnJvbV9wYXJ0aWFs IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqbmFtZSkKKytmaW5kX3N5bWJv bF9maWxlX2Zyb21fcGFydGlhbCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGNvbnN0IGNoYXIg Km5hbWUsCisrCQkJICAgICAgIGVudW0gbGFuZ3VhZ2UgbGFuZ3VhZ2UpCisgeworICAgc3RydWN0 IHBhcnRpYWxfc3ltdGFiICpwc3Q7CisgCisgICBBTExfT0JKRklMRV9QU1lNVEFCUyAob2JqZmls ZSwgcHN0KQorICAgICB7CistICAgICAgaWYgKGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAocHN0LCBu YW1lLCAxLCBWQVJfRE9NQUlOKSkKKysgICAgICBpZiAobG9va3VwX3BhcnRpYWxfc3ltYm9sIChw c3QsIG5hbWUsIDEsIFZBUl9ET01BSU4sIGxhbmd1YWdlKSkKKyAJcmV0dXJuIHBzdC0+ZmlsZW5h bWU7CisgICAgIH0KKyAgIHJldHVybiBOVUxMOworSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAyMDYv Z2RiL3N5bWZpbGUuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjIuNTAuMjAxMTAyMDYub3JpZy9n ZGIvc3ltZmlsZS5oCTIwMTEtMDItMDYgMjM6MTI6MTYuMDAwMDAwMDAwICswMTAwCisrKysgZ2Ri LTcuMi41MC4yMDExMDIwNi9nZGIvc3ltZmlsZS5oCTIwMTEtMDItMDYgMjM6MTI6MjIuMDAwMDAw MDAwICswMTAwCitAQCAtMTY3LDE0ICsxNjcsMTUgQEAgc3RydWN0IHF1aWNrX3N5bWJvbF9mdW5j dGlvbnMKKyAgIC8qIENoZWNrIHRvIHNlZSBpZiB0aGUgc3ltYm9sIGlzIGRlZmluZWQgaW4gYSAi cGFydGlhbCIgc3ltYm9sIHRhYmxlCisgICAgICBvZiBPQkpGSUxFLiAgS0lORCBzaG91bGQgYmUg ZWl0aGVyIEdMT0JBTF9CTE9DSyBvciBTVEFUSUNfQkxPQ0ssCisgICAgICBkZXBlbmRpbmcgb24g d2hldGhlciB3ZSB3YW50IHRvIHNlYXJjaCBnbG9iYWwgc3ltYm9scyBvciBzdGF0aWMKKy0gICAg IHN5bWJvbHMuICBOQU1FIGlzIHRoZSBuYW1lIG9mIHRoZSBzeW1ib2wgdG8gbG9vayBmb3IuICBE T01BSU4KKy0gICAgIGluZGljYXRlcyB3aGF0IHNvcnQgb2Ygc3ltYm9sIHRvIHNlYXJjaCBmb3Iu CisrICAgICBzeW1ib2xzLiAgTkFNRSAodmFsaWQgaW4gTEFOR1VBR0UpIGlzIHRoZSBuYW1lIG9m IHRoZSBzeW1ib2wgdG8gbG9vayBmb3IuCisrICAgICBET01BSU4gaW5kaWNhdGVzIHdoYXQgc29y dCBvZiBzeW1ib2wgdG8gc2VhcmNoIGZvci4KKyAKKyAgICAgIFJldHVybnMgdGhlIG5ld2x5LWV4 cGFuZGVkIHN5bWJvbCB0YWJsZSBpbiB3aGljaCB0aGUgc3ltYm9sIGlzCisgICAgICBkZWZpbmVk LCBvciBOVUxMIGlmIG5vIHN1Y2ggc3ltYm9sIHRhYmxlIGV4aXN0cy4gICovCisgICBzdHJ1Y3Qg c3ltdGFiICooKmxvb2t1cF9zeW1ib2wpIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKyAJCQkJ ICAgaW50IGtpbmQsIGNvbnN0IGNoYXIgKm5hbWUsCistCQkJCSAgIGRvbWFpbl9lbnVtIGRvbWFp bik7CisrCQkJCSAgIGRvbWFpbl9lbnVtIGRvbWFpbiwKKysJCQkJICAgZW51bSBsYW5ndWFnZSBs YW5ndWFnZSk7CisgCisgICAvKiBUaGlzIGlzIGNhbGxlZCB0byBleHBhbmQgc3ltYm9sIHRhYmxl cyBiZWZvcmUgbG9va2luZyB1cCBhCisgICAgICBzeW1ib2wuICBBIGJhY2tlbmQgY2FuIGNob29z ZSB0byBpbXBsZW1lbnQgdGhpcyBhbmQgdGhlbiBoYXZlIGl0cworQEAgLTIwMCwxMCArMjAxLDEx IEBAIHN0cnVjdCBxdWlja19zeW1ib2xfZnVuY3Rpb25zCisgCQkgICAgc3RydWN0IHNlY3Rpb25f b2Zmc2V0cyAqbmV3X29mZnNldHMsCisgCQkgICAgc3RydWN0IHNlY3Rpb25fb2Zmc2V0cyAqZGVs dGEpOworIAorLSAgLyogRmluZCBhbGwgdGhlIHN5bWJvbHMgaW4gT0JKRklMRSBuYW1lZCBGVU5D X05BTUUsIGFuZCBlbnN1cmUgdGhhdAorLSAgICAgdGhlIGNvcnJlc3BvbmRpbmcgc3ltYm9sIHRh YmxlcyBhcmUgbG9hZGVkLiAgKi8KKysgIC8qIEZpbmQgYWxsIHRoZSBzeW1ib2xzIGluIE9CSkZJ TEUgbmFtZWQgRlVOQ19OQU1FICh2YWxpZCBpbiBMQU5HVUFHRSksCisrICAgICBhbmQgZW5zdXJl IHRoYXQgdGhlIGNvcnJlc3BvbmRpbmcgc3ltYm9sIHRhYmxlcyBhcmUgbG9hZGVkLiAgKi8KKyAg IHZvaWQgKCpleHBhbmRfc3ltdGFic19mb3JfZnVuY3Rpb24pIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwKKy0JCQkJICAgICAgIGNvbnN0IGNoYXIgKmZ1bmNfbmFtZSk7CisrCQkJCSAgICAgICBj b25zdCBjaGFyICpmdW5jX25hbWUsCisrCQkJCSAgICAgICBlbnVtIGxhbmd1YWdlIGxhbmd1YWdl KTsKKyAKKyAgIC8qIFJlYWQgYWxsIHN5bWJvbCB0YWJsZXMgYXNzb2NpYXRlZCB3aXRoIE9CSkZJ TEUuICAqLworICAgdm9pZCAoKmV4cGFuZF9hbGxfc3ltdGFicykgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlKTsKK0BAIC0yMTcsOCArMjE5LDEwIEBAIHN0cnVjdCBxdWlja19zeW1ib2xfZnVuY3Rp b25zCisgCQkJCQljb25zdCBjaGFyICpmaWxlbmFtZSk7CisgCisgICAvKiBSZXR1cm4gdGhlIGZp bGUgbmFtZSBvZiB0aGUgZmlsZSBob2xkaW5nIHRoZSBzeW1ib2wgaW4gT0JKRklMRQorLSAgICAg bmFtZWQgTkFNRS4gIElmIG5vIHN1Y2ggc3ltYm9sIGV4aXN0cyBpbiBPQkpGSUxFLCByZXR1cm4g TlVMTC4gICovCistICBjb25zdCBjaGFyICooKmZpbmRfc3ltYm9sX2ZpbGUpIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqbmFtZSk7CisrICAgICBuYW1lZCBOQU1FICh2YWxp ZCBpbiBMQU5HVUFHRSkuICBJZiBubyBzdWNoIHN5bWJvbCBleGlzdHMgaW4gT0JKRklMRSwKKysg ICAgIHJldHVybiBOVUxMLiAgKi8KKysgIGNvbnN0IGNoYXIgKigqZmluZF9zeW1ib2xfZmlsZSkg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBjb25zdCBjaGFyICpuYW1lLAorKwkJCQkgICBlbnVt IGxhbmd1YWdlIGxhbmd1YWdlKTsKKyAKKyAgIC8qIEZpbmQgZ2xvYmFsIG9yIHN0YXRpYyBzeW1i b2xzIGluIGFsbCB0YWJsZXMgdGhhdCBhcmUgaW4gTkFNRVNQQUNFIAorICAgICAgYW5kIGZvciB3 aGljaCBNQVRDSCAoc3ltYm9sIG5hbWUsIE5BTUUpID09IDAsIHBhc3NpbmcgZWFjaCB0byAKK0lu ZGV4OiBnZGItNy4yLjUwLjIwMTEwMjA2L2dkYi9zeW10YWIuYworPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdk Yi03LjIuNTAuMjAxMTAyMDYub3JpZy9nZGIvc3ltdGFiLmMJMjAxMS0wMi0wNiAyMzoxMjoxNi4w MDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTEwMjA2L2dkYi9zeW10YWIuYwkyMDEx LTAyLTA2IDIzOjEyOjIyLjAwMDAwMDAwMCArMDEwMAorQEAgLTEzODAsNyArMTM4MCw4IEBAIGxv b2t1cF9zeW1ib2xfYXV4X3F1aWNrIChzdHJ1Y3Qgb2JqZmlsZSAKKyAKKyAgIGlmICghb2JqZmls ZS0+c2YpCisgICAgIHJldHVybiBOVUxMOworLSAgc3ltdGFiID0gb2JqZmlsZS0+c2YtPnFmLT5s b29rdXBfc3ltYm9sIChvYmpmaWxlLCBraW5kLCBuYW1lLCBkb21haW4pOworKyAgc3ltdGFiID0g b2JqZmlsZS0+c2YtPnFmLT5sb29rdXBfc3ltYm9sIChvYmpmaWxlLCBraW5kLCBuYW1lLCBkb21h aW4sCisrCQkJCQkgICBjdXJyZW50X2xhbmd1YWdlLT5sYV9sYW5ndWFnZSk7CisgICBpZiAoIXN5 bXRhYikKKyAgICAgcmV0dXJuIE5VTEw7CisgCitAQCAtMTU1NCw3ICsxNTU1LDggQEAgYmFzaWNf bG9va3VwX3RyYW5zcGFyZW50X3R5cGVfcXVpY2sgKHN0cgorIAorICAgaWYgKCFvYmpmaWxlLT5z ZikKKyAgICAgcmV0dXJuIE5VTEw7CistICBzeW10YWIgPSBvYmpmaWxlLT5zZi0+cWYtPmxvb2t1 cF9zeW1ib2wgKG9iamZpbGUsIGtpbmQsIG5hbWUsIFNUUlVDVF9ET01BSU4pOworKyAgc3ltdGFi ID0gb2JqZmlsZS0+c2YtPnFmLT5sb29rdXBfc3ltYm9sIChvYmpmaWxlLCBraW5kLCBuYW1lLCBT VFJVQ1RfRE9NQUlOLAorKwkJCQkJICAgY3VycmVudF9sYW5ndWFnZS0+bGFfbGFuZ3VhZ2UpOwor ICAgaWYgKCFzeW10YWIpCisgICAgIHJldHVybiBOVUxMOworIAorQEAgLTE2ODYsNyArMTY4OCw4 IEBAIGZpbmRfbWFpbl9maWxlbmFtZSAodm9pZCkKKyAKKyAgICAgaWYgKCFvYmpmaWxlLT5zZikK KyAgICAgICBjb250aW51ZTsKKy0gICAgcmVzdWx0ID0gb2JqZmlsZS0+c2YtPnFmLT5maW5kX3N5 bWJvbF9maWxlIChvYmpmaWxlLCBuYW1lKTsKKysgICAgcmVzdWx0ID0gb2JqZmlsZS0+c2YtPnFm LT5maW5kX3N5bWJvbF9maWxlIChvYmpmaWxlLCBuYW1lLAorKwkJCQkJCWN1cnJlbnRfbGFuZ3Vh Z2UtPmxhX2xhbmd1YWdlKTsKKyAgICAgaWYgKHJlc3VsdCkKKyAgICAgICByZXR1cm4gcmVzdWx0 OworICAgfQorSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAyMDYvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Av cHIxMTczNC0xLmNjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6 MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2RiLTcuMi41MC4yMDExMDIwNi9nZGIvdGVzdHN1aXRl L2dkYi5jcC9wcjExNzM0LTEuY2MJMjAxMS0wMi0wNiAyMzoxMjoyMi4wMDAwMDAwMDAgKzAxMDAK K0BAIC0wLDAgKzEsMzAgQEAKKysvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUg R05VIGRlYnVnZ2VyLgorKworKyAgIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKwor KyAgIFBsZWFzZSBlbWFpbCBhbnkgYnVncywgY29tbWVudHMsIGFuZC9vciBhZGRpdGlvbnMgdG8g dGhpcyBmaWxlIHRvOgorKyAgIGJ1Zy1nZGJAZ251Lm9yZyAgKi8KKysKKysjaW5jbHVkZSAicHIx MTczNC5oIgorKworK2ludAorK21haW4gKCkKKyt7CisrICBwcjExNzM0ICpwID0gbmV3IHByMTE3 MzQ7CisrICBwLT5mb28gKCk7CisrICByZXR1cm4gMDsKKyt9CisrCitJbmRleDogZ2RiLTcuMi41 MC4yMDExMDIwNi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9wcjExNzM0LTIuY2MKKz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBn ZGItNy4yLjUwLjIwMTEwMjA2L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3ByMTE3MzQtMi5jYwkyMDEx LTAyLTA2IDIzOjEyOjIyLjAwMDAwMDAwMCArMDEwMAorQEAgLTAsMCArMSwyNyBAQAorKy8qIFRo aXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCisrCisrICAgQ29w eXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK KysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAg IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrICAgUGxlYXNlIGVtYWlsIGFueSBidWdz LCBjb21tZW50cywgYW5kL29yIGFkZGl0aW9ucyB0byB0aGlzIGZpbGUgdG86CisrICAgYnVnLWdk YkBnbnUub3JnICAqLworKworKyNpbmNsdWRlICJwcjExNzM0LmgiCisrCisrdm9pZAorK3ByMTE3 MzQ6OmZvbyh2b2lkKQorK3sKKyt9CisrCitJbmRleDogZ2RiLTcuMi41MC4yMDExMDIwNi9nZGIv dGVzdHN1aXRlL2dkYi5jcC9wcjExNzM0LTMuY2MKKz09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJ MTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy4yLjUwLjIwMTEw MjA2L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3ByMTE3MzQtMy5jYwkyMDExLTAyLTA2IDIzOjEyOjIy LjAwMDAwMDAwMCArMDEwMAorQEAgLTAsMCArMSwyNyBAQAorKy8qIFRoaXMgdGVzdGNhc2UgaXMg cGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCisrCisrICAgQ29weXJpZ2h0IDIwMTAgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCisrCisrICAgUGxlYXNlIGVtYWlsIGFueSBidWdzLCBjb21tZW50cywgYW5k L29yIGFkZGl0aW9ucyB0byB0aGlzIGZpbGUgdG86CisrICAgYnVnLWdkYkBnbnUub3JnICAqLwor KworKyNpbmNsdWRlICJwcjExNzM0LmgiCisrCisrdm9pZAorK3ByMTE3MzQ6OmZvbyAoaW50IGEp CisreworK30KKysKK0luZGV4OiBnZGItNy4yLjUwLjIwMTEwMjA2L2dkYi90ZXN0c3VpdGUvZ2Ri LmNwL3ByMTE3MzQtNC5jYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAw OjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjIuNTAuMjAxMTAyMDYvZ2RiL3Rlc3Rz dWl0ZS9nZGIuY3AvcHIxMTczNC00LmNjCTIwMTEtMDItMDYgMjM6MTI6MjIuMDAwMDAwMDAwICsw MTAwCitAQCAtMCwwICsxLDI3IEBACisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwg dGhlIEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAg IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4K KysKKysgICBQbGVhc2UgZW1haWwgYW55IGJ1Z3MsIGNvbW1lbnRzLCBhbmQvb3IgYWRkaXRpb25z IHRvIHRoaXMgZmlsZSB0bzoKKysgICBidWctZ2RiQGdudS5vcmcgICovCisrCisrI2luY2x1ZGUg InByMTE3MzQuaCIKKysKKyt2b2lkCisrcHIxMTczNDo6Zm9vIChjaGFyICphKQorK3sKKyt9Cisr CitJbmRleDogZ2RiLTcuMi41MC4yMDExMDIwNi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9wcjExNzM0 LmV4cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAw MDAwMCArMDAwMAorKysrIGdkYi03LjIuNTAuMjAxMTAyMDYvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Av cHIxMTczNC5leHAJMjAxMS0wMi0wNiAyMzoxMjoyMi4wMDAwMDAwMDAgKzAxMDAKK0BAIC0wLDAg KzEsNTUgQEAKKysjIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorKyMKKysjIENvbnRyaWJ1dGVkIGJ5IFJlZCBIYXQsIG9yaWdpbmFsbHkgd3JpdHRlbiBieSBL ZWl0aCBTZWl0ei4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworKyMgVGhp cyBmaWxlIGlzIHBhcnQgb2YgdGhlIGdkYiB0ZXN0c3VpdGUuCisrCisraWYgeyBbc2tpcF9jcGx1 c190ZXN0c10gfSB7IGNvbnRpbnVlIH0KKysKKytzZXQgdGVzdGZpbGUgInByMTE3MzQiCisrc2V0 IGNsYXNzICR0ZXN0ZmlsZQorKworK3NldCBzcmNmaWxlcyB7fQorK2ZvciB7c2V0IGkgMX0geyRp IDwgNX0ge2luY3IgaX0geworKyAgICBsYXBwZW5kIHNyY2ZpbGVzICR0ZXN0ZmlsZS0kaS5jYwor K30KKysKKytwcmVwYXJlX2Zvcl90ZXN0aW5nIHByMTE3MzQgJHRlc3RmaWxlICRzcmNmaWxlcyB7 YysrIGRlYnVnfQorKworK2lmIHshW3J1bnRvX21haW5dfSB7CisrICAgIHBlcnJvciAiY291bGRu J3QgcnVuIHRvIGJyZWFrcG9pbnQiCisrICAgIGNvbnRpbnVlCisrfQorKworKyMgQW4gYXJyYXkg aG9sZGluZyB0aGUgb3ZlcmxvYWQgdHlwZXMgZm9yIHRoZSBtZXRob2QgcHIxMTczNDo6Zm9vLiAg VGhlCisrIyBmaXJzdCBlbGVtZW50IGlzIHRoZSBvdmVybG9hZGVkIG1ldGhvZCBwYXJhbWV0ZXIu ICBUaGUgc2Vjb25kIGVsZW1lbnQKKysjIGlzIHRoZSBleHBlY3RlZCBzb3VyY2UgZmlsZSBudW1i ZXIsIGUuZy4gInByMTE3MzQtPy5jYyIuCisrYXJyYXkgc2V0IHRlc3RzIHsKKysgICAgImNoYXIq IiAgNAorKyAgICAiaW50IiAgICAzCisrICAgICIiICAgICAgIDIKKyt9CisrCisrIyBUZXN0IGVh Y2ggb3ZlcmxvYWQgaW5zdGFuY2UgdHdpY2U6IG9uY2UgcXVvdGVkLCBvbmNlIHVucXVvdGVkCisr Zm9yZWFjaCBvdmxkIFthcnJheSBuYW1lcyB0ZXN0c10geworKyAgICBzZXQgbWV0aG9kICIke2Ns YXNzfTo6Zm9vXCgkb3ZsZFwpIgorKyAgICBzZXQgcmVzdWx0ICJCcmVha3BvaW50IChcWzAtOVxd KS4qZmlsZSAuKi8kY2xhc3MtJHRlc3RzKCRvdmxkKS4qIgorKyAgICBnZGJfdGVzdCAiYnJlYWsg JG1ldGhvZCIgJHJlc3VsdAorKyAgICBnZGJfdGVzdCAiYnJlYWsgJyRtZXRob2QnIiAkcmVzdWx0 CisrfQorKworK2dkYl9leGl0CisrcmV0dXJuIDAKK0luZGV4OiBnZGItNy4yLjUwLjIwMTEwMjA2 L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3ByMTE3MzQuaAorPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVs bAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjIuNTAuMjAx MTAyMDYvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcHIxMTczNC5oCTIwMTEtMDItMDYgMjM6MTI6MjIu MDAwMDAwMDAwICswMTAwCitAQCAtMCwwICsxLDI4IEBACisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBw YXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5cmlnaHQgMjAxMCBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KKysKKysgICBQbGVhc2UgZW1haWwgYW55IGJ1Z3MsIGNvbW1lbnRzLCBhbmQv b3IgYWRkaXRpb25zIHRvIHRoaXMgZmlsZSB0bzoKKysgICBidWctZ2RiQGdudS5vcmcgICovCisr CisrY2xhc3MgcHIxMTczNAorK3sKKysgcHVibGljOgorKyAgdm9pZCBmb28gKCk7CisrICB2b2lk IGZvbyAoaW50KTsKKysgIHZvaWQgZm9vIChjaGFyICopOworK307CisrCgpkaWZmIC0tZ2l0IGEv Z2RiLXBoeXNuYW1lLXByMTE3MzQtMm9mMi5wYXRjaCBiL2dkYi1waHlzbmFtZS1wcjExNzM0LTJv ZjIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjNlZWM5ZgotLS0g L2Rldi9udWxsCisrKyBiL2dkYi1waHlzbmFtZS1wcjExNzM0LTJvZjIucGF0Y2gKQEAgLTAsMCAr MSwxOCBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTEtMDEvbXNn MDA0NjAuaHRtbAorCitJbmRleDogZ2RiLTcuMi9nZGIvbGluZXNwZWMuYworPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0tIGdkYi03LjIub3JpZy9nZGIvbGluZXNwZWMuYwkyMDExLTAyLTAzIDIyOjU5OjQ2LjAwMDAw MDAwMCArMDEwMAorKysrIGdkYi03LjIvZ2RiL2xpbmVzcGVjLmMJMjAxMS0wMi0wMyAyMzowMzoy OC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xMjMwLDcgKzEyMzAsMTAgQEAgZGVjb2RlX2NvbXBvdW5k IChjaGFyICoqYXJncHRyLCBpbnQgZnVuZgorICAgICB7CisgICAgICAgY2hhciAqZW5kID0gc2tp cF9xdW90ZWQgKHNhdmVkX2FyZyk7CisgICAgICAgbWVtbW92ZSAoc2F2ZWRfYXJnLCBzYXZlZF9h cmcgKyAxLCBlbmQgLSBzYXZlZF9hcmcpOworLSAgICAgIG1lbW1vdmUgKGVuZCAtIDIsIGVuZCwg c3RybGVuIChzYXZlZF9hcmcpICsgMSk7CisrICAgICAgaWYgKCZlbmRbLTJdID49IHNhdmVkX2Fy ZyAmJiBlbmRbLTJdID09ICdcJycpCisrCW1lbW1vdmUgKGVuZCAtIDIsIGVuZCwgc3RybGVuIChl bmQpICsgMSk7CisrICAgICAgZWxzZQorKwltZW1tb3ZlIChlbmQgLSAxLCBlbmQsIHN0cmxlbiAo ZW5kKSArIDEpOworICAgICB9CisgICAgICAgCisgICAvKiBGaXJzdCBjaGVjayBmb3IgImdsb2Jh bCIgbmFtZXNwYWNlIHNwZWNpZmljYXRpb24sIG9mIHRoZSBmb3JtCgpkaWZmIC0tZ2l0IGEvZ2Ri LXBoeXNuYW1lLXByMTIyNzMucGF0Y2ggYi9nZGItcGh5c25hbWUtcHIxMjI3My5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jY2VjNjJiCi0tLSAvZGV2L251bGwKKysr IGIvZ2RiLXBoeXNuYW1lLXByMTIyNzMucGF0Y2gKQEAgLTAsMCArMSwyMDcgQEAKK2h0dHA6Ly9z b3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTEyL21zZzAwMjY0Lmh0bWwKKworSW5k ZXg6IGdkYi03LjIuNTAuMjAxMTAyMDYvZ2RiL2xpbmVzcGVjLmMKKz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBn ZGItNy4yLjUwLjIwMTEwMjA2Lm9yaWcvZ2RiL2xpbmVzcGVjLmMJMjAxMS0wMi0wNiAyMzowNjoy Ni4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTEwMjA2L2dkYi9saW5lc3BlYy5j CTIwMTEtMDItMDYgMjM6MDg6MjMuMDAwMDAwMDAwICswMTAwCitAQCAtMTA1Nyw2ICsxMDU3LDEw IEBAIGxvY2F0ZV9maXJzdF9oYWxmIChjaGFyICoqYXJncHRyLCBpbnQgKmkKKyAJICAgIGVycm9y IChfKCJtYWxmb3JtZWQgdGVtcGxhdGUgc3BlY2lmaWNhdGlvbiBpbiBjb21tYW5kIikpOworIAkg IHAgPSB0ZW1wX2VuZDsKKyAJfQorKworKyAgICAgIGlmIChwWzBdID09ICcoJykKKysJcCA9IGZp bmRfbWV0aG9kX292ZXJsb2FkX2VuZCAocCk7CisrCisgICAgICAgLyogQ2hlY2sgZm9yIGEgY29s b24gYW5kIGEgcGx1cyBvciBtaW51cyBhbmQgYSBbICh3aGljaAorICAgICAgICAgIGluZGljYXRl cyBhbiBPYmplY3RpdmUtQyBtZXRob2QpLiAgKi8KKyAgICAgICBpZiAoaXNfb2JqY19tZXRob2Rf Zm9ybWF0IChwKSkKK0BAIC0xMjcyLDggKzEyNzYsMTAgQEAgZGVjb2RlX2NvbXBvdW5kIChjaGFy ICoqYXJncHRyLCBpbnQgZnVuZgorICAgICAgICAgZmluZF9tZXRob2QuCisgCisgICAgICAyKSBB QUE6OmluQSBpc24ndCB0aGUgbmFtZSBvZiBhIGNsYXNzLiAgSW4gdGhhdCBjYXNlLCBlaXRoZXIg dGhlCistICAgICAgICB1c2VyIG1hZGUgYSB0eXBvIG9yIEFBQTo6aW5BIGlzIHRoZSBuYW1lIG9m IGEgbmFtZXNwYWNlLgorLSAgICAgICAgRWl0aGVyIHdheSwgd2UganVzdCBsb29rIHVwIEFBQTo6 aW5BOjpmdW4gd2l0aCBsb29rdXBfc3ltYm9sLgorKyAgICAgICAgdXNlciBtYWRlIGEgdHlwbywg QUFBOjppbkEgaXMgdGhlIG5hbWUgb2YgYSBuYW1lc3BhY2UsIG9yIGl0IGlzCisrICAgICAgICB0 aGUgbmFtZSBvZiBhIG1pbmltYWwgc3ltYm9sLgorKyAgICAgICAgV2UganVzdCBsb29rIHVwIEFB QTo6aW5BOjpmdW4gd2l0aCBsb29rdXBfc3ltYm9sLiAgSWYgdGhhdCBmYWlscywKKysgICAgICAg IHRyeSBsb29rdXBfbWluaW1hbF9zeW1ib2wuCisgCisgICAgICBUaHVzLCBvdXIgZmlyc3QgdGFz ayBpcyB0byBmaW5kIGV2ZXJ5dGhpbmcgYmVmb3JlIHRoZSBsYXN0IHNldCBvZgorICAgICAgZG91 YmxlLWNvbG9ucyBhbmQgZmlndXJlIG91dCBpZiBpdCdzIHRoZSBuYW1lIG9mIGEgY2xhc3MuICBT byB3ZQorQEAgLTEyOTQsNiArMTMwMCw4IEBAIGRlY29kZV9jb21wb3VuZCAoY2hhciAqKmFyZ3B0 ciwgaW50IGZ1bmYKKyAKKyAgIHdoaWxlICgxKQorICAgICB7CisrICAgICAgc3RhdGljIGNoYXIg KmJyZWFrX2NoYXJhY3RlcnMgPSAiIFx0XCcoIjsKKysKKyAgICAgICAvKiBNb3ZlIHBvaW50ZXIg dXAgdG8gbmV4dCBwb3NzaWJsZSBjbGFzcy9uYW1lc3BhY2UgdG9rZW4uICAqLworIAorICAgICAg IHAgPSBwMiArIDE7CS8qIFJlc3RhcnQgd2l0aCBvbGQgdmFsdWUgKzEuICAqLworQEAgLTEzMDQs OCArMTMxMiw3IEBAIGRlY29kZV9jb21wb3VuZCAoY2hhciAqKmFyZ3B0ciwgaW50IGZ1bmYKKyAg ICAgICAvKiBQQVNTMjogcDItPiI6OmZ1biIsIHAtPiI6ZnVuIiAqLworIAorICAgICAgIC8qIE1v dmUgcG9pbnRlciBhaGVhZCB0byBuZXh0IGRvdWJsZS1jb2xvbi4gICovCistICAgICAgd2hpbGUg KCpwICYmIChwWzBdICE9ICcgJykgJiYgKHBbMF0gIT0gJ1x0JykgJiYgKHBbMF0gIT0gJ1wnJykK Ky0JICAgICAmJiAoKnAgIT0gJygnKSkKKysgICAgICB3aGlsZSAoKnAgJiYgc3RyY2hyIChicmVh a19jaGFyYWN0ZXJzLCAqcCkgPT0gTlVMTCkKKyAJeworIAkgIGlmIChjdXJyZW50X2xhbmd1YWdl LT5sYV9sYW5ndWFnZSA9PSBsYW5ndWFnZV9jcGx1cykKKyAJICAgIHAgKz0gY3BfdmFsaWRhdGVf b3BlcmF0b3IgKHApOworQEAgLTEzMjksOSArMTMzNiwxMiBAQCBkZWNvZGVfY29tcG91bmQgKGNo YXIgKiphcmdwdHIsIGludCBmdW5mCisgCSAgZWxzZSBpZiAoKHBbMF0gPT0gJzonKSAmJiAocFsx XSA9PSAnOicpKQorIAkgICAgYnJlYWs7CS8qIEZvdW5kIGRvdWJsZS1jb2xvbi4gICovCisgCSAg ZWxzZQorLQkgICAgLyogUEFTUzI6IFdlJ2xsIGtlZXAgZ2V0dGluZyBoZXJlLCB1bnRpbCBwLT4i IiwgYXQgd2hpY2ggcG9pbnQKKy0JICAgICAgIHdlIGV4aXQgdGhpcyBsb29wLiAgKi8KKy0JICAg IHArKzsKKysJICAgIHsKKysJICAgICAgLyogUEFTUzI6IFdlJ2xsIGtlZXAgZ2V0dGluZyBoZXJl LCB1bnRpbCBQIHBvaW50cyB0byBvbmUgb2YgdGhlCisrCQkgYnJlYWsgY2hhcmFjdGVycywgYXQg d2hpY2ggcG9pbnQgd2UgZXhpdCB0aGlzIGxvb3AuICAqLworKwkgICAgICBpZiAoc3RyY2hyIChi cmVha19jaGFyYWN0ZXJzLCAqcCkgPT0gTlVMTCkKKysJCXArKzsKKysJICAgIH0KKyAJfQorIAor ICAgICAgIGlmICgqcCAhPSAnOicpCitAQCAtMTM0MCw3ICsxMzUwLDcgQEAgZGVjb2RlX2NvbXBv dW5kIChjaGFyICoqYXJncHRyLCBpbnQgZnVuZgorIAkJCSAgIHVuc3VjY2Vzc2Z1bGx5IGFsbCB0 aGUgY29tcG9uZW50cyBvZiB0aGUKKyAJCQkgICBzdHJpbmcsIGFuZCBwLT4iIihQQVNTMikuICAq LworIAorLSAgICAgIC8qIFdlIGdldCBoZXJlIGlmIHAgcG9pbnRzIHRvICcgJywgJ1x0JywgJ1wn JywgIjo6IiBvciAiIihpLmUKKysgICAgICAvKiBXZSBnZXQgaGVyZSBpZiBwIHBvaW50cyB0byBv bmUgb2YgdGhlIGJyZWFrIGNoYXJhY3RlcnMgb3IgIiIoaS5lCisgCSBzdHJpbmcgZW5kZWQpLiAg Ki8KKyAgICAgICAvKiBTYXZlIHJlc3RhcnQgZm9yIG5leHQgdGltZSBhcm91bmQuICAqLworICAg ICAgIHAyID0gcDsKK0BAIC0xNDkxLDYgKzE1MDEsMTggQEAgZGVjb2RlX2NvbXBvdW5kIChjaGFy ICoqYXJncHRyLCBpbnQgZnVuZgorICAgLyogV2UgY291bGRuJ3QgZmluZCBhIGNsYXNzLCBzbyB3 ZSdyZSBpbiBjYXNlIDIgYWJvdmUuICBXZSBjaGVjayB0aGUKKyAgICAgIGVudGlyZSBuYW1lIGFz IGEgc3ltYm9sIGluc3RlYWQuICAqLworIAorKyAgaWYgKGN1cnJlbnRfbGFuZ3VhZ2UtPmxhX2xh bmd1YWdlID09IGxhbmd1YWdlX2NwbHVzCisrICAgICAgfHwgY3VycmVudF9sYW5ndWFnZS0+bGFf bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfamF2YSkKKysgICAgeworKyAgICAgIGNoYXIgKnBhcmVuID0g c3RyY2hyIChwLCAnKCcpOworKyAgICAgIGlmIChwYXJlbiAhPSBOVUxMKQorKwlwID0gZmluZF9t ZXRob2Rfb3ZlcmxvYWRfZW5kIChwYXJlbik7CisrCisrICAgICAgLyogTWFrZSBzdXJlIHdlIGtl ZXAgaW1wb3J0YW50IGtld29yZHMgbGlrZSAiY29uc3QiICovCisrICAgICAgaWYgKHN0cm5jbXAg KHAsICIgY29uc3QiLCA2KSA9PSAwKQorKwlwICs9IDY7CisrICAgIH0KKysKKyAgIGNvcHkgPSAo Y2hhciAqKSBhbGxvY2EgKHAgLSBzYXZlZF9hcmcyICsgMSk7CisgICBtZW1jcHkgKGNvcHksIHNh dmVkX2FyZzIsIHAgLSBzYXZlZF9hcmcyKTsKKyAgIC8qIE5vdGU6IGlmIGlzX3F1b3RlZCBzaG91 bGQgYmUgdHJ1ZSwgd2Ugc251ZmYgb3V0IHF1b3RlIGhlcmUKK0BAIC0xNTAzLDkgKzE1MjUsMTgg QEAgZGVjb2RlX2NvbXBvdW5kIChjaGFyICoqYXJncHRyLCBpbnQgZnVuZgorICAgc3ltID0gbG9v a3VwX3N5bWJvbCAoY29weSwgMCwgVkFSX0RPTUFJTiwgMCk7CisgICBpZiAoc3ltKQorICAgICBy ZXR1cm4gc3ltYm9sX2ZvdW5kIChmdW5maXJzdGxpbmUsIGNhbm9uaWNhbCwgY29weSwgc3ltLCBO VUxMKTsKKysgIGVsc2UKKysgICAgeworKyAgICAgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5 bTsKKysKKysgICAgICAvKiBDb3VsZG4ndCBmaW5kIGFueSBpbnRlcnByZXRhdGlvbiBhcyBjbGFz c2VzL25hbWVzcGFjZXMuICBBcyBhIGxhc3QKKysJIHJlc29ydCwgdHJ5IHRoZSBtaW5pbWFsIHN5 bWJvbCB0YWJsZXMuICAqLworKyAgICAgIG1zeW0gPSBsb29rdXBfbWluaW1hbF9zeW1ib2wgKGNv cHksIE5VTEwsIE5VTEwpOworKyAgICAgIGlmIChtc3ltICE9IE5VTEwpCisrCXJldHVybiBtaW5z eW1fZm91bmQgKGZ1bmZpcnN0bGluZSwgbXN5bSk7CisrICAgIH0gICAgCisgCistICAvKiBDb3Vs ZG4ndCBmaW5kIGFueSBpbnRlcnByZXRhdGlvbiBhcyBjbGFzc2VzL25hbWVzcGFjZXMsIHNvIGdp dmUKKy0gICAgIHVwLiAgVGhlIHF1b3RlcyBhcmUgaW1wb3J0YW50IGlmIGNvcHkgaXMgZW1wdHku ICAqLworKyAgLyogQ291bGRuJ3QgZmluZCBhIG1pbmltYWwgc3ltYm9sLCBlaXRoZXIsIHNvIGdp dmUgdXAuICAqLworICAgaWYgKG5vdF9mb3VuZF9wdHIpCisgICAgICpub3RfZm91bmRfcHRyID0g MTsKKyAgIGNwbHVzcGx1c19lcnJvciAodGhlX3JlYWxfc2F2ZWRfYXJnLAorSW5kZXg6IGdkYi03 LjIuNTAuMjAxMTAyMDYvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcHIxMjI3My5jYworPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysr IGdkYi03LjIuNTAuMjAxMTAyMDYvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcHIxMjI3My5jYwkyMDEx LTAyLTA2IDIzOjA3OjE5LjAwMDAwMDAwMCArMDEwMAorQEAgLTAsMCArMSwzNyBAQAorKy8qIFRo aXMgdGVzdCBjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAgIENv cHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysg ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKyt0ZW1wbGF0ZSA8dHlwZW5hbWUg VD4KKytjbGFzcyBHREIKKyt7CisrIHB1YmxpYzoKKysgICBzdGF0aWMgaW50IHNpbXBsZSAodm9p ZCkgeyByZXR1cm4gMDsgfQorKyAgIHN0YXRpYyBpbnQgaGFyZGVyIChUIGEpIHsgcmV0dXJuIDE7 IH0KKysgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgWD4KKysgICBzdGF0aWMgWCBldmVuX2hhcmRlciAo VCBhKSB7IHJldHVybiBzdGF0aWNfY2FzdDxYPiAoYSk7IH0KKysgICBpbnQgb3BlcmF0b3IgPT0g KEdEQiBjb25zdCYgb3RoZXIpCisrICAgeyByZXR1cm4gMTsgfQorK307CisrCisraW50IG1haW4o aW50IGFyZ2MsIGNoYXIgKiphcmd2KQorK3sKKysgICBHREI8aW50PiBhLCBiOworKyAgIGlmIChh ID09IGIpCisrICAgICByZXR1cm4gR0RCPGNoYXI+OjpoYXJkZXIoJ2EnKSArIEdEQjxpbnQ+Ojpo YXJkZXIoMykKKysJKyBHREI8Y2hhcj46OmV2ZW5faGFyZGVyPGludD4gKCdhJyk7CisrICAgcmV0 dXJuIEdEQjxpbnQ+OjpzaW1wbGUgKCk7CisrfQorSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAyMDYv Z2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcHIxMjI3My5leHAKKz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251 bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy4yLjUwLjIw MTEwMjA2L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3ByMTIyNzMuZXhwCTIwMTEtMDItMDYgMjM6MDc6 MTkuMDAwMDAwMDAwICswMTAwCitAQCAtMCwwICsxLDQ2IEBACisrIyBDb3B5cmlnaHQgMjAxMCBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysjCisrIyBDb250cmlidXRlZCBieSBSZWQg SGF0LCBvcmlnaW5hbGx5IHdyaXR0ZW4gYnkgS2VpdGggU2VpdHouCisrIworKyMgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl CisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4KKysKKysjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBnZGIgdGVz dHN1aXRlLgorKworK2lmIHtbc2tpcF9jcGx1c190ZXN0c119IHsgY29udGludWUgfQorKworK3Nl dCB0ZXN0ZmlsZSAicHIxMjI3MyIKKysjIERvIE5PVCBjb21waWxlIHdpdGggZGVidWcgZmxhZy4K KytwcmVwYXJlX2Zvcl90ZXN0aW5nIHByMTIyNzMgJHRlc3RmaWxlICR0ZXN0ZmlsZS5jYyB7Yysr fQorKworK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGxhbmd1YWdlIGMrKyIKKysKKysjIEEgbGlz dCBvZiBtaW5pbWFsIHN5bWJvbCBuYW1lcyB0byBjaGVjay4KKysjIE5vdGUgdGhhdCBHREI8Y2hh cj46OmV2ZW5faGFyZGVyPGludD4oY2hhcikgaXMgcXVvdGVkIGFuZCBpbmNsdWRlcworKyMgdGhl IHJldHVybiB0eXBlLiAgVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB0aGlzIGlzIHRoZSBkZW1h bmdsZWQgbmFtZQorKyMgb2YgdGhlIG1pbmltYWwgc3ltYm9sLgorK3NldCBtaW5fc3ltcyBbbGlz dCBcCisrCQkgICJHREI8aW50Pjo6b3BlcmF0b3IgPT0iIFwKKysJCSAgIkdEQjxpbnQ+OjpvcGVy YXRvcj09KEdEQjxpbnQ+IGNvbnN0JikiIFwKKysJCSAgIkdEQjxjaGFyPjo6aGFyZGVyKGNoYXIp IiBcCisrCQkgICJHREI8aW50Pjo6aGFyZGVyKGludCkiIFwKKysJCSAgeyJpbnQgR0RCPGNoYXI+ OjpldmVuX2hhcmRlcjxpbnQ+KGNoYXIpIn0gXAorKwkJICAiR0RCPGludD46OnNpbXBsZSgpIl0K KysKKytmb3JlYWNoIHN5bSAkbWluX3N5bXMgeworKyAgICBpZiB7W2dkYl9icmVha3BvaW50ICRz eW1dfSB7CisrCXBhc3MgInNldHRpbmcgYnJlYWtwb2ludCBhdCAkc3ltIgorKyAgICB9CisrfQor KworK2dkYl9leGl0CgpkaWZmIC0tZ2l0IGEvZ2RiLnNwZWMgYi9nZGIuc3BlYwppbmRleCBmY2Y2 MGYzLi4zYTViMjhhIDEwMDY0NAotLS0gYS9nZGIuc3BlYworKysgYi9nZGIuc3BlYwpAQCAtMjcs NyArMjcsNyBAQCBWZXJzaW9uOiA3LjIuNTAuMjAxMTAyMDYKIAogIyBUaGUgcmVsZWFzZSBhbHdh eXMgY29udGFpbnMgYSBsZWFkaW5nIHJlc2VydmVkIG51bWJlciwgc3RhcnQgaXQgYXQgMS4KICMg YHVwc3RyZWFtJyBpcyBub3QgYSBwYXJ0IG9mIGBuYW1lJyB0byBzdGF5IGZ1bGx5IHJwbSBkZXBl bmRlbmNpZXMgY29tcGF0aWJsZSBmb3IgdGhlIHRlc3RpbmcuCi1SZWxlYXNlOiAxNyV7P193aXRo X3Vwc3RyZWFtOi51cHN0cmVhbX0lez9kaXN0fQorUmVsZWFzZTogMTglez9fd2l0aF91cHN0cmVh bToudXBzdHJlYW19JXs/ZGlzdH0KIAogTGljZW5zZTogR1BMdjMrIGFuZCBHUEx2Mysgd2l0aCBl eGNlcHRpb25zIGFuZCBHUEx2MisgYW5kIEdQTHYyKyB3aXRoIGV4Y2VwdGlvbnMgYW5kIEdQTCsg YW5kIExHUEx2MisgYW5kIEdGREwgYW5kIEJTRCBhbmQgUHVibGljIERvbWFpbgogR3JvdXA6IERl dmVsb3BtZW50L0RlYnVnZ2VycwpAQCAtNTUyLDYgKzU1MiwxMSBAQCBQYXRjaDU1NjogZ2RiLWdj YzQ2LXN0ZGFyZy1wcm9sb2d1ZS5wYXRjaAogIyA9cHVzaAogUGF0Y2g1NTc6IGdkYi1weXRob24t bmV3YmFja3RyYWNlLnBhdGNoCiAKKyMgRml4IHJlZ3Jlc3Npb25zIG9uIEMrKyBuYW1lcyByZXNv bHZpbmcgKFBSIDExNzM0LCBQUiAxMjI3MywgS2VpdGggU2VpdHopLgorUGF0Y2g1NjU6IGdkYi1w aHlzbmFtZS1wcjExNzM0LTFvZjIucGF0Y2gKK1BhdGNoNTY2OiBnZGItcGh5c25hbWUtcHIxMTcz NC0yb2YyLnBhdGNoCitQYXRjaDU2NzogZ2RiLXBoeXNuYW1lLXByMTIyNzMucGF0Y2gKKwogQnVp bGRSZXF1aXJlczogbmN1cnNlcy1kZXZlbCV7P19pc2F9IHRleGluZm8gZ2V0dGV4dCBmbGV4IGJp c29uIGV4cGF0LWRldmVsJXs/X2lzYX0KIFJlcXVpcmVzOiByZWFkbGluZSV7P19pc2F9CiBCdWls ZFJlcXVpcmVzOiByZWFkbGluZS1kZXZlbCV7P19pc2F9CkBAIC04MDUsNiArODEwLDkgQEAgcm0g LWYgZ2RiL2p2LWV4cC5jIGdkYi9tMi1leHAuYyBnZGIvb2JqYy1leHAuYyBnZGIvcC1leHAuYwog JXBhdGNoNTU1IC1wMQogJXBhdGNoNTU2IC1wMQogJXBhdGNoNTU3IC1wMQorJXBhdGNoNTY1IC1w MQorJXBhdGNoNTY2IC1wMQorJXBhdGNoNTY3IC1wMQogCiAlcGF0Y2gzOTAgLXAxCiAlcGF0Y2gz OTMgLXAxCkBAIC0xMjExLDcgKzEyMTksMTAgQEAgZmkKICVlbmRpZgogCiAlY2hhbmdlbG9nCi0q IFRodSBKYW4gMjcgMjAxMSBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4gLSA3LjIuNTAuMjAxMTAyMDYtMTcuZmMxNQorKiBTdW4gRmViICA2IDIwMTEgSmFuIEtyYXRv Y2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4yLjUwLjIwMTEwMjA2LTE4LmZj MTUKKy0gRml4IHJlZ3Jlc3Npb25zIG9uIEMrKyBuYW1lcyByZXNvbHZpbmcgKFBSIDExNzM0LCBQ UiAxMjI3MywgS2VpdGggU2VpdHopLgorCisqIFN1biBGZWIgIDYgMjAxMSBKYW4gS3JhdG9jaHZp bCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjIuNTAuMjAxMTAyMDYtMTcuZmMxNQog LSBSZWJhc2UgdG8gRlNGIEdEQiA3LjIuNTAuMjAxMTAyMDYgKHdoaWNoIGlzIGEgNy4zIHByZS1y ZWxlYXNlKS4KIAogKiBUaHUgSmFuIDI3IDIwMTEgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+IC0gNy4yLjUwLjIwMTEwMTI1LTE2LmZjMTUK