From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (qmail 32315 invoked from network); 4 May 2022 12:17:26 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 4 May 2022 12:17:26 -0000 Content-Type: multipart/mixed; boundary="===============1329399588106103136==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_Llvm14?= To: ml@inbox.vuxu.org From: prez Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Wed, 04 May 2022 14:17:25 +0200 List-Id: Message-ID: <20220504121725.8ItjY-8PkF-bdIyxVdw8Al_T0TCyo_yAeJKZ1owVw_U@z> GitHub notification mails are now in MIME to allow UTF8. --===============1329399588106103136== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgcHJleiBhZ2FpbnN0IG1hc3RlciBv biB0aGUgdm9pZC1wYWNrYWdlcyByZXBvc2l0b3J5CgpodHRwczovL2dpdGh1Yi5jb20vcHJlei92 b2lkLXBhY2thZ2VzIGxsdm0KaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNr YWdlcy9wdWxsLzM2OTYyCgpMbHZtMTQKU3VwZXJzZWRlcyBodHRwczovL2dpdGh1Yi5jb20vdm9p ZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvMzYyMjksIGh0dHBzOi8vZ2l0aHViLmNvbS92b2lk LWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC8zNDgwMCAtIHRoYW5rIHlvdSBAbW90b3J0byBhbmQg QERCTG91aXMuDQoNClVwZGF0ZWQgcGF0Y2hlcywgcGluZyBAcTY2IC4NCg0KQGlmcmV1bmQgdG9k bzogemlnLiBTaW5jZSBpdCBkZXBlbmRzIG9uIGBsbGQtZGV2ZWxgLCBJIGd1ZXNzIHdlIG5lZWQg dG8gc3BsaXQgb3V0IGBsbGQxMmA/IFdvdWxkIGFwcHJlY2lhdGUgeW91ciBoZWxwIHdpdGggdGhp cywgSSBkb24ndCB3YW50IHRvIHdhaXQgZm9yIHRoZSBuZXh0IHppZyB2ZXJzaW9uLg0KDQpbY2kg c2tpcF0KCkEgcGF0Y2ggZmlsZSBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS92b2lkLWxpbnV4L3Zv aWQtcGFja2FnZXMvcHVsbC8zNjk2Mi5wYXRjaCBpcyBhdHRhY2hlZA== --===============1329399588106103136== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-llvm-36962.patch" RnJvbSBhZjMyMTRkMDA2ZTdiYzc3Y2ExMjAxYzIyMGJlNGNlNGI4YmViZDM0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBwcmV6IDxwcmV6QG5hdGlvbmFsLnNoaXRwb3N0aW5nLmFnZW5j eT4KRGF0ZTogTW9uLCAyIE1heSAyMDIyIDIxOjE1OjA2ICswMjAwClN1YmplY3Q6IFtQQVRDSCAw MS8yOV0gTmV3IHBhY2thZ2U6IGxsdm0xNC0xNC4wLjMKCi0tLQogY29tbW9uL3NobGlicyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE2ICstCiBzcmNwa2dzL2NsYW5nICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyY3BrZ3MvY2xhbmctYW5hbHl6 ZXIgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogc3JjcGtncy9jbGFuZy10b29scy1l eHRyYSAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmNwa2dzL2xpYmNsYW5nICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyY3BrZ3MvbGliY2xhbmctY3BwICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogc3JjcGtncy9saWJjeHggICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmNwa2dzL2xpYmN4eC1kZXZlbCAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyY3BrZ3MvbGliY3h4YWJpICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogc3JjcGtncy9saWJjeHhhYmktZGV2ZWwgICAg ICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmNwa2dzL2xpYmxsdm0xNCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtncy9saWJvbXAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmNwa2dzL2xpYm9tcC1kZXZlbCAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyY3BrZ3MvbGxkICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgMiArLQogc3JjcGtncy9sbGQtZGV2ZWwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAyICstCiBzcmNwa2dzL2xsZGIgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDIgKy0KIHNyY3BrZ3MvbGxkYi1kZXZlbCAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMiArLQogc3JjcGtncy9sbHZtLWxpYnVud2luZCAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAyICstCiBzcmNwa2dzL2xsdm0tbGlidW53aW5kLWRldmVsICAgICAgICAg ICAgICAgICAgfCAgIDIgKy0KIC4uLi9wYXRjaGVzL2NsYW5nLTAwMi1hZGQtbXVzbC10cmlwbGVz LnBhdGNoICB8IDExMCArKysrKwogLi4uL2NsYW5nLTAwMy1wcGM2NC1keW5hbWljLWxpbmtlci1w YXRoLnBhdGNoIHwgIDEzICsKIC4uLi9wYXRjaGVzL2NsYW5nLTAwNC1wcGM2NC1tdXNsLWVsZnYy LnBhdGNoICB8ICA0OCArKwogLi4uL2NvbXBpbGVyLXJ0LXNhbml0aXplci1wcGM2NC1tdXNsLnBh dGNoICAgIHwgIDM1ICsrCiAuLi4vcGF0Y2hlcy9jb21waWxlci1ydC14cmF5LXBwYzY0LW11c2wu cGF0Y2ggfCAgNjIgKysrCiBzcmNwa2dzL2xsdm0xNC9wYXRjaGVzL2xpYmN4eC1tdXNsLnBhdGNo ICAgICAgfCAgMjYgKysKIHNyY3BrZ3MvbGx2bTE0L3BhdGNoZXMvbGliY3h4LXBwYy5wYXRjaCAg ICAgICB8ICAyMiArCiAuLi4vbGx2bTE0L3BhdGNoZXMvbGliY3h4LXNzcC1ub25zaGFyZWQucGF0 Y2ggfCAgMTEgKwogc3JjcGtncy9sbHZtMTQvcGF0Y2hlcy9saWJjeHhhYmktZGwucGF0Y2ggICAg IHwgIDI1ICsrCiBzcmNwa2dzL2xsdm0xNC9wYXRjaGVzL2xsZGItbXVzbC5wYXRjaCAgICAgICAg fCAgMzEgKysKIHNyY3BrZ3MvbGx2bTE0L3BhdGNoZXMvbGx2bS0wMDEtbXVzbC5wYXRjaCAgICB8 ICA1NyArKysKIC4uLi9wYXRjaGVzL2xsdm0tMDAyLW11c2wtcHBjNjQtZWxmdjIucGF0Y2ggICB8 ICAzMCArKwogLi4uL3BhdGNoZXMvbGx2bS0wMDMtcHBjLXNlY3VyZXBsdC5wYXRjaCAgICAgIHwg IDExICsKIC4uLi9wYXRjaGVzL2xsdm0tMDA0LW92ZXJyaWRlLW9wdC5wYXRjaCAgICAgICB8ICAx OCArCiAuLi4vbGx2bTE0L3BhdGNoZXMvbGx2bS0wMDUtcHBjLWJpZ3BpYy5wYXRjaCAgfCAgMzYg KysKIC4uLi9wYXRjaGVzL2xsdm0tMDA2LWFhcmNoNjQtbWZfZXhlYy5wYXRjaCAgICB8ICAyNSAr Kwogc3JjcGtncy9sbHZtMTQvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgIHwgNDI0ICsr KysrKysrKysrKysrKysrKwogc3JjcGtncy9sbHZtMTQvdXBkYXRlICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAzICsKIDM3IGZpbGVzIGNoYW5nZWQsIDEwMTggaW5zZXJ0aW9ucygrKSwgMjAg ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJsbHZtMTQKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xNC9wYXRjaGVzL2NsYW5nLTAwMi1hZGQtbXVzbC10 cmlwbGVzLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTQvcGF0Y2hlcy9j bGFuZy0wMDMtcHBjNjQtZHluYW1pYy1saW5rZXItcGF0aC5wYXRjaAogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyY3BrZ3MvbGx2bTE0L3BhdGNoZXMvY2xhbmctMDA0LXBwYzY0LW11c2wtZWxmdjIucGF0 Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xNC9wYXRjaGVzL2NvbXBpbGVyLXJ0 LXNhbml0aXplci1wcGM2NC1tdXNsLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9s bHZtMTQvcGF0Y2hlcy9jb21waWxlci1ydC14cmF5LXBwYzY0LW11c2wucGF0Y2gKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xNC9wYXRjaGVzL2xpYmN4eC1tdXNsLnBhdGNoCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTQvcGF0Y2hlcy9saWJjeHgtcHBjLnBhdGNoCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTQvcGF0Y2hlcy9saWJjeHgtc3NwLW5vbnNo YXJlZC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTE0L3BhdGNoZXMvbGli Y3h4YWJpLWRsLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTQvcGF0Y2hl cy9sbGRiLW11c2wucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xNC9wYXRj aGVzL2xsdm0tMDAxLW11c2wucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0x NC9wYXRjaGVzL2xsdm0tMDAyLW11c2wtcHBjNjQtZWxmdjIucGF0Y2gKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmNwa2dzL2xsdm0xNC9wYXRjaGVzL2xsdm0tMDAzLXBwYy1zZWN1cmVwbHQucGF0Y2gK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xNC9wYXRjaGVzL2xsdm0tMDA0LW92ZXJy aWRlLW9wdC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTE0L3BhdGNoZXMv bGx2bS0wMDUtcHBjLWJpZ3BpYy5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2 bTE0L3BhdGNoZXMvbGx2bS0wMDYtYWFyY2g2NC1tZl9leGVjLnBhdGNoCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjcGtncy9sbHZtMTQvdGVtcGxhdGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dz L2xsdm0xNC91cGRhdGUKCmRpZmYgLS1naXQgYS9jb21tb24vc2hsaWJzIGIvY29tbW9uL3NobGli cwppbmRleCA0MTE0MTUxNjYyZmIuLjgxYWNjMzlkZWZiNCAxMDA2NDQKLS0tIGEvY29tbW9uL3No bGlicworKysgYi9jb21tb24vc2hsaWJzCkBAIC05NzUsMTEgKzk3NSwxMiBAQCBsaWJ1Y2hhcmRl dC5zby4wIHVjaGFyZGV0LTAuMC42XzEKIGxpYmd0a3NvdXJjZXZpZXdtbS0zLjAuc28uMCBndGtz b3VyY2V2aWV3bW0tMy4yLjBfMQogbGlieWFqbC5zby4yIHlhamwtMi4wLjFfMQogbGliY29uZnVz ZS5zby4yIGNvbmZ1c2UtMy4yLjFfMQotbGlibGxkYi5zby4xMiBsbGRiLTEyLjAuMF8xCi1saWJj bGFuZy5zby4xMiBsaWJjbGFuZy0xMi4wLjBfMQotbGliY2xhbmctY3BwLnNvLjEyIGxpYmNsYW5n LWNwcC0xMi4wLjBfMQorbGlibGxkYi5zby4xNCBsbGRiLTE0LjAuM18xCitsaWJjbGFuZy5zby4x NCBsaWJjbGFuZy0xNC4wLjNfMQorbGliY2xhbmctY3BwLnNvLjE0IGxpYmNsYW5nLWNwcC0xNC4w LjNfMQogbGliTExWTS0xMS5zbyBsaWJsbHZtMTEtMTEuMC4wXzEKIGxpYkxMVk0tMTIuc28gbGli bGx2bTEyLTEyLjAuMF8xCitsaWJMTFZNLTE0LnNvIGxpYmxsdm0xNC0xNC4wLjNfMQogbGliaXNv ZnMuc28uNiBsaWJpc29mcy0wLjYuMjRfMQogbGlibXBhY2suc28uMCBsaWJtcGFjay0xLjAuNV8x CiBsaWJHZW9JUC5zby4xIGxpYmdlb2lwLTEuNC44XzEKQEAgLTQxNTIsMyArNDE1MywxMiBAQCBs aWJyel9iaW4uc28uMC4zLjQgcml6aW4tMC4zLjRfMQogbGliYXJhdmlzLTAuOC5zby4wIGxpYmFy YXZpcy0wLjguMjFfMQogbGliTGltZVN1aXRlLnNvLjIwLjEwLTEgTGltZVN1aXRlLTIwLjEwLjBf MQogbGlibnZtZS5zby4xIGxpYm52bWUtMS4wXzEKK2xpYm9tcC5zbyBsaWJvbXAtMTQuMC4zXzEK K2xpYm9tcHRhcmdldC5ydGwuYW1kZ3B1LnNvIGxpYm9tcC0xNC4wLjNfMQorbGlib21wdGFyZ2V0 LnJ0bC5jdWRhLnNvIGxpYm9tcC0xNC4wLjNfMQorbGlib21wdGFyZ2V0LnJ0bC54ODZfNjQuc28g bGlib21wLTE0LjAuM18xCitsaWJhcmNoZXIuc28gbGlib21wLTE0LjAuM18xCitsaWJvbXB0YXJn ZXQuc28gbGlib21wLTE0LjAuM18xCitsaWJsbGRiSW50ZWxGZWF0dXJlcy5zby4xNCBsbGRiLTE0 LjAuM18xCitsaWJMVE8uc28uMTQgbGx2bTE0LTE0LjAuM18xCitsaWJSZW1hcmtzLnNvLjE0IGxs dm0xNC0xNC4wLjNfMQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jbGFuZyBiL3NyY3BrZ3MvY2xhbmcK aW5kZXggY2Q2MGZkN2E5ODFiLi4xZDQyZWQ3NjMyYTYgMTIwMDAwCi0tLSBhL3NyY3BrZ3MvY2xh bmcKKysrIGIvc3JjcGtncy9jbGFuZwpAQCAtMSArMSBAQAotbGx2bTEyClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQorbGx2bTE0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t Z2l0IGEvc3JjcGtncy9jbGFuZy1hbmFseXplciBiL3NyY3BrZ3MvY2xhbmctYW5hbHl6ZXIKaW5k ZXggY2Q2MGZkN2E5ODFiLi4xZDQyZWQ3NjMyYTYgMTIwMDAwCi0tLSBhL3NyY3BrZ3MvY2xhbmct YW5hbHl6ZXIKKysrIGIvc3JjcGtncy9jbGFuZy1hbmFseXplcgpAQCAtMSArMSBAQAotbGx2bTEy ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorbGx2bTE0ClwgTm8gbmV3bGluZSBhdCBlbmQg b2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jbGFuZy10b29scy1leHRyYSBiL3NyY3BrZ3Mv Y2xhbmctdG9vbHMtZXh0cmEKaW5kZXggY2Q2MGZkN2E5ODFiLi4xZDQyZWQ3NjMyYTYgMTIwMDAw Ci0tLSBhL3NyY3BrZ3MvY2xhbmctdG9vbHMtZXh0cmEKKysrIGIvc3JjcGtncy9jbGFuZy10b29s cy1leHRyYQpAQCAtMSArMSBAQAotbGx2bTEyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQor bGx2bTE0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9s aWJjbGFuZyBiL3NyY3BrZ3MvbGliY2xhbmcKaW5kZXggY2Q2MGZkN2E5ODFiLi4xZDQyZWQ3NjMy YTYgMTIwMDAwCi0tLSBhL3NyY3BrZ3MvbGliY2xhbmcKKysrIGIvc3JjcGtncy9saWJjbGFuZwpA QCAtMSArMSBAQAotbGx2bTEyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorbGx2bTE0Clwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJjbGFuZy1j cHAgYi9zcmNwa2dzL2xpYmNsYW5nLWNwcAppbmRleCBjZDYwZmQ3YTk4MWIuLjFkNDJlZDc2MzJh NiAxMjAwMDAKLS0tIGEvc3JjcGtncy9saWJjbGFuZy1jcHAKKysrIGIvc3JjcGtncy9saWJjbGFu Zy1jcHAKQEAgLTEgKzEgQEAKLWxsdm0xMgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2xs dm0xNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGli Y3h4IGIvc3JjcGtncy9saWJjeHgKaW5kZXggY2Q2MGZkN2E5ODFiLi4xZDQyZWQ3NjMyYTYgMTIw MDAwCi0tLSBhL3NyY3BrZ3MvbGliY3h4CisrKyBiL3NyY3BrZ3MvbGliY3h4CkBAIC0xICsxIEBA Ci1sbHZtMTIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitsbHZtMTQKXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYmN4eC1kZXZlbCBiL3NyY3Br Z3MvbGliY3h4LWRldmVsCmluZGV4IGNkNjBmZDdhOTgxYi4uMWQ0MmVkNzYzMmE2IDEyMDAwMAot LS0gYS9zcmNwa2dzL2xpYmN4eC1kZXZlbAorKysgYi9zcmNwa2dzL2xpYmN4eC1kZXZlbApAQCAt MSArMSBAQAotbGx2bTEyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorbGx2bTE0ClwgTm8g bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJjeHhhYmkgYi9z cmNwa2dzL2xpYmN4eGFiaQppbmRleCBjZDYwZmQ3YTk4MWIuLjFkNDJlZDc2MzJhNiAxMjAwMDAK LS0tIGEvc3JjcGtncy9saWJjeHhhYmkKKysrIGIvc3JjcGtncy9saWJjeHhhYmkKQEAgLTEgKzEg QEAKLWxsdm0xMgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2xsdm0xNApcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGliY3h4YWJpLWRldmVsIGIv c3JjcGtncy9saWJjeHhhYmktZGV2ZWwKaW5kZXggY2Q2MGZkN2E5ODFiLi4xZDQyZWQ3NjMyYTYg MTIwMDAwCi0tLSBhL3NyY3BrZ3MvbGliY3h4YWJpLWRldmVsCisrKyBiL3NyY3BrZ3MvbGliY3h4 YWJpLWRldmVsCkBAIC0xICsxIEBACi1sbHZtMTIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl CitsbHZtMTQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dz L2xpYmxsdm0xNCBiL3NyY3BrZ3MvbGlibGx2bTE0Cm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4 IDAwMDAwMDAwMDAwMC4uMWQ0MmVkNzYzMmE2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9s aWJsbHZtMTQKQEAgLTAsMCArMSBAQAorbGx2bTE0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls ZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJvbXAgYi9zcmNwa2dzL2xpYm9tcAppbmRleCBjZDYw ZmQ3YTk4MWIuLjFkNDJlZDc2MzJhNiAxMjAwMDAKLS0tIGEvc3JjcGtncy9saWJvbXAKKysrIGIv c3JjcGtncy9saWJvbXAKQEAgLTEgKzEgQEAKLWxsdm0xMgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUKK2xsdm0xNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvbGlib21wLWRldmVsIGIvc3JjcGtncy9saWJvbXAtZGV2ZWwKaW5kZXggY2Q2MGZkN2E5 ODFiLi4xZDQyZWQ3NjMyYTYgMTIwMDAwCi0tLSBhL3NyY3BrZ3MvbGlib21wLWRldmVsCisrKyBi L3NyY3BrZ3MvbGlib21wLWRldmVsCkBAIC0xICsxIEBACi1sbHZtMTIKXCBObyBuZXdsaW5lIGF0 IGVuZCBvZiBmaWxlCitsbHZtMTQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2xsZCBiL3NyY3BrZ3MvbGxkCmluZGV4IGNkNjBmZDdhOTgxYi4uMWQ0MmVk NzYzMmE2IDEyMDAwMAotLS0gYS9zcmNwa2dzL2xsZAorKysgYi9zcmNwa2dzL2xsZApAQCAtMSAr MSBAQAotbGx2bTEyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorbGx2bTE0ClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbGQtZGV2ZWwgYi9zcmNw a2dzL2xsZC1kZXZlbAppbmRleCBjZDYwZmQ3YTk4MWIuLjFkNDJlZDc2MzJhNiAxMjAwMDAKLS0t IGEvc3JjcGtncy9sbGQtZGV2ZWwKKysrIGIvc3JjcGtncy9sbGQtZGV2ZWwKQEAgLTEgKzEgQEAK LWxsdm0xMgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2xsdm0xNApcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGxkYiBiL3NyY3BrZ3MvbGxkYgpp bmRleCBjZDYwZmQ3YTk4MWIuLjFkNDJlZDc2MzJhNiAxMjAwMDAKLS0tIGEvc3JjcGtncy9sbGRi CisrKyBiL3NyY3BrZ3MvbGxkYgpAQCAtMSArMSBAQAotbGx2bTEyClwgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQorbGx2bTE0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9sbGRiLWRldmVsIGIvc3JjcGtncy9sbGRiLWRldmVsCmluZGV4IGNkNjBmZDdh OTgxYi4uMWQ0MmVkNzYzMmE2IDEyMDAwMAotLS0gYS9zcmNwa2dzL2xsZGItZGV2ZWwKKysrIGIv c3JjcGtncy9sbGRiLWRldmVsCkBAIC0xICsxIEBACi1sbHZtMTIKXCBObyBuZXdsaW5lIGF0IGVu ZCBvZiBmaWxlCitsbHZtMTQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg YS9zcmNwa2dzL2xsdm0tbGlidW53aW5kIGIvc3JjcGtncy9sbHZtLWxpYnVud2luZAppbmRleCBj ZDYwZmQ3YTk4MWIuLjFkNDJlZDc2MzJhNiAxMjAwMDAKLS0tIGEvc3JjcGtncy9sbHZtLWxpYnVu d2luZAorKysgYi9zcmNwa2dzL2xsdm0tbGlidW53aW5kCkBAIC0xICsxIEBACi1sbHZtMTIKXCBO byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitsbHZtMTQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0tbGlidW53aW5kLWRldmVsIGIvc3JjcGtncy9s bHZtLWxpYnVud2luZC1kZXZlbAppbmRleCBjZDYwZmQ3YTk4MWIuLjFkNDJlZDc2MzJhNiAxMjAw MDAKLS0tIGEvc3JjcGtncy9sbHZtLWxpYnVud2luZC1kZXZlbAorKysgYi9zcmNwa2dzL2xsdm0t bGlidW53aW5kLWRldmVsCkBAIC0xICsxIEBACi1sbHZtMTIKXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCitsbHZtMTQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9z cmNwa2dzL2xsdm0xNC9wYXRjaGVzL2NsYW5nLTAwMi1hZGQtbXVzbC10cmlwbGVzLnBhdGNoIGIv c3JjcGtncy9sbHZtMTQvcGF0Y2hlcy9jbGFuZy0wMDItYWRkLW11c2wtdHJpcGxlcy5wYXRjaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjdiNjQwZTEwMmJlZAotLS0g L2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2bTE0L3BhdGNoZXMvY2xhbmctMDAyLWFkZC1tdXNs LXRyaXBsZXMucGF0Y2gKQEAgLTAsMCArMSwxMTAgQEAKKy0tLSBhL2NsYW5nL2xpYi9Ecml2ZXIv VG9vbENoYWlucy9HbnUuY3BwCisrKysgYi9jbGFuZy9saWIvRHJpdmVyL1Rvb2xDaGFpbnMvR251 LmNwcAorQEAgLTIwODMsNyArMjA4Myw4IEBAIHZvaWQgR2VuZXJpY19HQ0M6OkdDQ0luc3RhbGxh dGlvbkRldGVjdG9yOjpBZGREZWZhdWx0R0NDUHJlZml4ZXMoCisgICBzdGF0aWMgY29uc3QgY2hh ciAqY29uc3QgQVJNSEZUcmlwbGVzW10gPSB7ImFybS1saW51eC1nbnVlYWJpaGYiLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcm12N2hsLXJlZGhhdC1s aW51eC1nbnVlYWJpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiYXJtdjZobC1zdXNlLWxpbnV4LWdudWVhYmkiLAorLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJhcm12N2hsLXN1c2UtbGludXgtZ251ZWFiaSJ9Owor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcm12N2hsLXN1 c2UtbGludXgtZ251ZWFiaSIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgImFybXY3bC1saW51eC1nbnVlYWJpaGYifTsKKyAgIHN0YXRpYyBjb25zdCBjaGFy ICpjb25zdCBBUk1lYkxpYkRpcnNbXSA9IHsiL2xpYiJ9OworICAgc3RhdGljIGNvbnN0IGNoYXIg KmNvbnN0IEFSTWViVHJpcGxlc1tdID0geyJhcm1lYi1saW51eC1nbnVlYWJpIn07CisgICBzdGF0 aWMgY29uc3QgY2hhciAqY29uc3QgQVJNZWJIRlRyaXBsZXNbXSA9IHsKK0BAIC0yMTUxLDggKzIx NTIsNyBAQCB2b2lkIEdlbmVyaWNfR0NDOjpHQ0NJbnN0YWxsYXRpb25EZXRlY3Rvcjo6QWRkRGVm YXVsdEdDQ1ByZWZpeGVzKAorICAgICAgICJwb3dlcnBjNjQtc3VzZS1saW51eCIsICJwb3dlcnBj LW1vbnRhdmlzdGEtbGludXhzcGUifTsKKyAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBQUENM RUxpYkRpcnNbXSA9IHsiL2xpYjMyIiwgIi9saWIifTsKKyAgIHN0YXRpYyBjb25zdCBjaGFyICpj b25zdCBQUENMRVRyaXBsZXNbXSA9IHsicG93ZXJwY2xlLWxpbnV4LWdudSIsCistICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBvd2VycGNsZS11bmtub3duLWxp bnV4LWdudSIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg InBvd2VycGNsZS1saW51eC1tdXNsIn07CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgInBvd2VycGNsZS11bmtub3duLWxpbnV4LWdudSJ9OworCisgICBzdGF0 aWMgY29uc3QgY2hhciAqY29uc3QgUFBDNjRMaWJEaXJzW10gPSB7Ii9saWI2NCIsICIvbGliIn07 CisgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgUFBDNjRUcmlwbGVzW10gPSB7CitAQCAtMjIz MSw2ICsyMjMxLDg3IEBAIHZvaWQgR2VuZXJpY19HQ0M6OkdDQ0luc3RhbGxhdGlvbkRldGVjdG9y OjpBZGREZWZhdWx0R0NDUHJlZml4ZXMoCisgICAgIHJldHVybjsKKyAgIH0KKworKyAgaWYgKFRh cmdldFRyaXBsZS5pc011c2woKSkgeworKyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgQUFy Y2g2NE11c2xUcmlwbGVzW10gPSB7ImFhcmNoNjQtbGludXgtbXVzbCJ9OworKyAgICBzdGF0aWMg Y29uc3QgY2hhciAqY29uc3QgQVJNSEZNdXNsVHJpcGxlc1tdID0geworKyAgICAgICAgImFybS1s aW51eC1tdXNsZWFiaWhmIiwgImFybXY3bC1saW51eC1tdXNsZWFiaWhmIgorKyAgICB9OworKyAg ICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgQVJNTXVzbFRyaXBsZXNbXSA9IHsiYXJtLWxpbnV4 LW11c2xlYWJpIn07CisrICAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBYODZfNjRNdXNsVHJp cGxlc1tdID0geyJ4ODZfNjQtbGludXgtbXVzbCJ9OworKyAgICBzdGF0aWMgY29uc3QgY2hhciAq Y29uc3QgWDg2TXVzbFRyaXBsZXNbXSA9IHsiaTY4Ni1saW51eC1tdXNsIn07CisrICAgIHN0YXRp YyBjb25zdCBjaGFyICpjb25zdCBNSVBTTXVzbFRyaXBsZXNbXSA9IHsKKysgICAgICAgICJtaXBz LWxpbnV4LW11c2wiLCAibWlwc2VsLWxpbnV4LW11c2wiLAorKyAgICAgICAgIm1pcHNlbC1saW51 eC1tdXNsaGYiLCAibWlwcy1saW51eC1tdXNsaGYiCisrICAgIH07CisrICAgIHN0YXRpYyBjb25z dCBjaGFyICpjb25zdCBQUENNdXNsVHJpcGxlc1tdID0geyJwb3dlcnBjLWxpbnV4LW11c2wifTsK KysgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IFBQQ0xFTXVzbFRyaXBsZXNbXSA9IHsicG93 ZXJwY2xlLWxpbnV4LW11c2wifTsKKysgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IFBQQzY0 TXVzbFRyaXBsZXNbXSA9IHsicG93ZXJwYzY0LWxpbnV4LW11c2wifTsKKysgICAgc3RhdGljIGNv bnN0IGNoYXIgKmNvbnN0IFBQQzY0TEVNdXNsVHJpcGxlc1tdID0geyJwb3dlcnBjNjRsZS1saW51 eC1tdXNsIn07CisrCisrICAgIHN3aXRjaCAoVGFyZ2V0VHJpcGxlLmdldEFyY2goKSkgeworKyAg ICBjYXNlIGxsdm06OlRyaXBsZTo6YWFyY2g2NDoKKysgICAgICBMaWJEaXJzLmFwcGVuZChiZWdp bihBQXJjaDY0TGliRGlycyksIGVuZChBQXJjaDY0TGliRGlycykpOworKyAgICAgIFRyaXBsZUFs aWFzZXMuYXBwZW5kKGJlZ2luKEFBcmNoNjRNdXNsVHJpcGxlcyksIGVuZChBQXJjaDY0TXVzbFRy aXBsZXMpKTsKKysgICAgICBCaWFyY2hMaWJEaXJzLmFwcGVuZChiZWdpbihBQXJjaDY0TGliRGly cyksIGVuZChBQXJjaDY0TGliRGlycykpOworKyAgICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMuYXBw ZW5kKGJlZ2luKEFBcmNoNjRNdXNsVHJpcGxlcyksIGVuZChBQXJjaDY0TXVzbFRyaXBsZXMpKTsK KysgICAgICBicmVhazsKKysgICAgY2FzZSBsbHZtOjpUcmlwbGU6OmFybToKKysgICAgICBMaWJE aXJzLmFwcGVuZChiZWdpbihBUk1MaWJEaXJzKSwgZW5kKEFSTUxpYkRpcnMpKTsKKysgICAgICBp ZiAoVGFyZ2V0VHJpcGxlLmdldEVudmlyb25tZW50KCkgPT0gbGx2bTo6VHJpcGxlOjpNdXNsRUFC SUhGKSB7CisrICAgICAgICBUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihBUk1IRk11c2xUcmlw bGVzKSwgZW5kKEFSTUhGTXVzbFRyaXBsZXMpKTsKKysgICAgICB9IGVsc2UgeworKyAgICAgICAg VHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oQVJNTXVzbFRyaXBsZXMpLCBlbmQoQVJNTXVzbFRy aXBsZXMpKTsKKysgICAgICB9CisrICAgICAgYnJlYWs7CisrICAgIGNhc2UgbGx2bTo6VHJpcGxl Ojp4ODZfNjQ6CisrICAgICAgTGliRGlycy5hcHBlbmQoYmVnaW4oWDg2XzY0TGliRGlycyksIGVu ZChYODZfNjRMaWJEaXJzKSk7CisrICAgICAgVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oWDg2 XzY0TXVzbFRyaXBsZXMpLCBlbmQoWDg2XzY0TXVzbFRyaXBsZXMpKTsKKysgICAgICBCaWFyY2hM aWJEaXJzLmFwcGVuZChiZWdpbihYODZMaWJEaXJzKSwgZW5kKFg4NkxpYkRpcnMpKTsKKysgICAg ICBCaWFyY2hUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihYODZNdXNsVHJpcGxlcyksIGVuZChY ODZNdXNsVHJpcGxlcykpOworKyAgICAgIGJyZWFrOworKyAgICBjYXNlIGxsdm06OlRyaXBsZTo6 eDg2OgorKyAgICAgIExpYkRpcnMuYXBwZW5kKGJlZ2luKFg4NkxpYkRpcnMpLCBlbmQoWDg2TGli RGlycykpOworKyAgICAgIFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFg4Nk11c2xUcmlwbGVz KSwgZW5kKFg4Nk11c2xUcmlwbGVzKSk7CisrICAgICAgQmlhcmNoTGliRGlycy5hcHBlbmQoYmVn aW4oWDg2XzY0TGliRGlycyksIGVuZChYODZfNjRMaWJEaXJzKSk7CisrICAgICAgQmlhcmNoVHJp cGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oWDg2XzY0TXVzbFRyaXBsZXMpLCBlbmQoWDg2XzY0TXVz bFRyaXBsZXMpKTsKKysgICAgICBicmVhazsKKysgICAgY2FzZSBsbHZtOjpUcmlwbGU6Om1pcHM6 CisrICAgICAgTGliRGlycy5hcHBlbmQoYmVnaW4oTUlQU0xpYkRpcnMpLCBlbmQoTUlQU0xpYkRp cnMpKTsKKysgICAgICBUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihNSVBTTXVzbFRyaXBsZXMp LCBlbmQoTUlQU011c2xUcmlwbGVzKSk7CisrICAgICAgYnJlYWs7CisrICAgIGNhc2UgbGx2bTo6 VHJpcGxlOjpwcGM6CisrICAgICAgTGliRGlycy5hcHBlbmQoYmVnaW4oUFBDTGliRGlycyksIGVu ZChQUENMaWJEaXJzKSk7CisrICAgICAgVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oUFBDTXVz bFRyaXBsZXMpLCBlbmQoUFBDTXVzbFRyaXBsZXMpKTsKKysgICAgICBCaWFyY2hMaWJEaXJzLmFw cGVuZChiZWdpbihQUEM2NExpYkRpcnMpLCBlbmQoUFBDNjRMaWJEaXJzKSk7CisrICAgICAgQmlh cmNoVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oUFBDNjRNdXNsVHJpcGxlcyksIGVuZChQUEM2 NE11c2xUcmlwbGVzKSk7CisrICAgICAgYnJlYWs7CisrICAgIGNhc2UgbGx2bTo6VHJpcGxlOjpw cGNsZToKKysgICAgICBMaWJEaXJzLmFwcGVuZChiZWdpbihQUENMRUxpYkRpcnMpLCBlbmQoUFBD TEVMaWJEaXJzKSk7CisrICAgICAgVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oUFBDTEVNdXNs VHJpcGxlcyksIGVuZChQUENMRU11c2xUcmlwbGVzKSk7CisrICAgICAgQmlhcmNoTGliRGlycy5h cHBlbmQoYmVnaW4oUFBDNjRMRUxpYkRpcnMpLCBlbmQoUFBDNjRMRUxpYkRpcnMpKTsKKysgICAg ICBCaWFyY2hUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihQUEM2NExFTXVzbFRyaXBsZXMpLCBl bmQoUFBDNjRMRU11c2xUcmlwbGVzKSk7CisrICAgICAgYnJlYWs7CisrICAgIGNhc2UgbGx2bTo6 VHJpcGxlOjpwcGM2NDoKKysgICAgICBMaWJEaXJzLmFwcGVuZChiZWdpbihQUEM2NExpYkRpcnMp LCBlbmQoUFBDNjRMaWJEaXJzKSk7CisrICAgICAgVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4o UFBDNjRNdXNsVHJpcGxlcyksIGVuZChQUEM2NE11c2xUcmlwbGVzKSk7CisrICAgICAgQmlhcmNo TGliRGlycy5hcHBlbmQoYmVnaW4oUFBDTGliRGlycyksIGVuZChQUENMaWJEaXJzKSk7CisrICAg ICAgQmlhcmNoVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oUFBDTXVzbFRyaXBsZXMpLCBlbmQo UFBDTXVzbFRyaXBsZXMpKTsKKysgICAgICBicmVhazsKKysgICAgY2FzZSBsbHZtOjpUcmlwbGU6 OnBwYzY0bGU6CisrICAgICAgTGliRGlycy5hcHBlbmQoYmVnaW4oUFBDNjRMRUxpYkRpcnMpLCBl bmQoUFBDNjRMRUxpYkRpcnMpKTsKKysgICAgICBUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihQ UEM2NExFTXVzbFRyaXBsZXMpLCBlbmQoUFBDNjRMRU11c2xUcmlwbGVzKSk7CisrICAgICAgQmlh cmNoTGliRGlycy5hcHBlbmQoYmVnaW4oUFBDTEVMaWJEaXJzKSwgZW5kKFBQQ0xFTGliRGlycykp OworKyAgICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFBQQ0xFTXVzbFRyaXBs ZXMpLCBlbmQoUFBDTEVNdXNsVHJpcGxlcykpOworKyAgICAgIGJyZWFrOworKyAgICBkZWZhdWx0 OgorKyAgICAgIGJyZWFrOworKyAgICB9CisrICAgIFRyaXBsZUFsaWFzZXMucHVzaF9iYWNrKFRh cmdldFRyaXBsZS5zdHIoKSk7CisrICAgIGlmIChUYXJnZXRUcmlwbGUuc3RyKCkgIT0gQmlhcmNo VHJpcGxlLnN0cigpKQorKyAgICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMucHVzaF9iYWNrKEJpYXJj aFRyaXBsZS5zdHIoKSk7CisrICAgIHJldHVybjsKKysgIH0KKysKKyAgIC8vIEFuZHJvaWQgdGFy Z2V0cyBzaG91bGQgbm90IHVzZSBHTlUvTGludXggdG9vbHMgb3IgbGlicmFyaWVzLgorICAgaWYg KFRhcmdldFRyaXBsZS5pc0FuZHJvaWQoKSkgeworICAgICBzdGF0aWMgY29uc3QgY2hhciAqY29u c3QgQUFyY2g2NEFuZHJvaWRUcmlwbGVzW10gPSB7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0x NC9wYXRjaGVzL2NsYW5nLTAwMy1wcGM2NC1keW5hbWljLWxpbmtlci1wYXRoLnBhdGNoIGIvc3Jj cGtncy9sbHZtMTQvcGF0Y2hlcy9jbGFuZy0wMDMtcHBjNjQtZHluYW1pYy1saW5rZXItcGF0aC5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjQ3MTI4YWY3OWI3 ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2bTE0L3BhdGNoZXMvY2xhbmctMDAzLXBw YzY0LWR5bmFtaWMtbGlua2VyLXBhdGgucGF0Y2gKQEAgLTAsMCArMSwxMyBAQAorLS0tIGEvY2xh bmcvbGliL0RyaXZlci9Ub29sQ2hhaW5zL0xpbnV4LmNwcAorKysrIGIvY2xhbmcvbGliL0RyaXZl ci9Ub29sQ2hhaW5zL0xpbnV4LmNwcAorQEAgLTQ5MCwxMCArNDkwLDYgQEAgc3RkOjpzdHJpbmcg TGludXg6OmdldER5bmFtaWNMaW5rZXIoY29uc3QgQXJnTGlzdCAmQXJncykgY29uc3QgeworICAg ICBMb2FkZXIgPSAibGQuc28uMSI7CisgICAgIGJyZWFrOworICAgY2FzZSBsbHZtOjpUcmlwbGU6 OnBwYzY0OgorLSAgICBMaWJEaXIgPSAibGliNjQiOworLSAgICBMb2FkZXIgPQorLSAgICAgICAg KHRvb2xzOjpwcGM6Omhhc1BQQ0FiaUFyZyhBcmdzLCAiZWxmdjIiKSkgPyAibGQ2NC5zby4yIiA6 ICJsZDY0LnNvLjEiOworLSAgICBicmVhazsKKyAgIGNhc2UgbGx2bTo6VHJpcGxlOjpwcGM2NGxl OgorICAgICBMaWJEaXIgPSAibGliNjQiOworICAgICBMb2FkZXIgPQpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9sbHZtMTQvcGF0Y2hlcy9jbGFuZy0wMDQtcHBjNjQtbXVzbC1lbGZ2Mi5wYXRjaCBiL3Ny Y3BrZ3MvbGx2bTE0L3BhdGNoZXMvY2xhbmctMDA0LXBwYzY0LW11c2wtZWxmdjIucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yMWZjODAwM2M1ZjEKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmNwa2dzL2xsdm0xNC9wYXRjaGVzL2NsYW5nLTAwNC1wcGM2NC1tdXNs LWVsZnYyLnBhdGNoCkBAIC0wLDAgKzEsNDggQEAKKy0tLSBhL2NsYW5nL2xpYi9CYXNpYy9UYXJn ZXRzL1BQQy5oCisrKysgYi9jbGFuZy9saWIvQmFzaWMvVGFyZ2V0cy9QUEMuaAorQEAgLTQxNSwx MSArNDE1LDEwIEBAIHB1YmxpYzoKKyAgICAgICBMb25nRG91YmxlRm9ybWF0ID0gJmxsdm06OkFQ RmxvYXQ6OklFRUVkb3VibGUoKTsKKyAgICAgfSBlbHNlIGlmICgoVHJpcGxlLmdldEFyY2goKSA9 PSBsbHZtOjpUcmlwbGU6OnBwYzY0bGUpKSB7CisgICAgICAgRGF0YUxheW91dCA9ICJlLW06ZS1p NjQ6NjQtbjMyOjY0IjsKKy0gICAgICBBQkkgPSAiZWxmdjIiOworICAgICB9IGVsc2UgeworICAg ICAgIERhdGFMYXlvdXQgPSAiRS1tOmUtaTY0OjY0LW4zMjo2NCI7CistICAgICAgQUJJID0gImVs ZnYxIjsKKyAgICAgfQorKyAgICBBQkkgPSAiZWxmdjIiOworIAorICAgICBpZiAoVHJpcGxlLmlz T1NGcmVlQlNEKCkgfHwgVHJpcGxlLmlzT1NPcGVuQlNEKCkgfHwgVHJpcGxlLmlzTXVzbCgpKSB7 CisgICAgICAgTG9uZ0RvdWJsZVdpZHRoID0gTG9uZ0RvdWJsZUFsaWduID0gNjQ7CistLS0gYS9j bGFuZy9saWIvQ29kZUdlbi9UYXJnZXRJbmZvLmNwcAorKysrIGIvY2xhbmcvbGliL0NvZGVHZW4v VGFyZ2V0SW5mby5jcHAKK0BAIC0xMDkyNyw5ICsxMDkyNyw5IEBAIGNvbnN0IFRhcmdldENvZGVH ZW5JbmZvICZDb2RlR2VuTW9kdWxlOjpnZXRUYXJnZXRDb2RlR2VuSW5mbygpIHsKKyAgICAgICBy ZXR1cm4gU2V0Q0dJbmZvKG5ldyBBSVhUYXJnZXRDb2RlR2VuSW5mbyhUeXBlcywgLypJczY0Qml0 Ki8gdHJ1ZSkpOworIAorICAgICBpZiAoVHJpcGxlLmlzT1NCaW5Gb3JtYXRFTEYoKSkgeworLSAg ICAgIFBQQzY0X1NWUjRfQUJJSW5mbzo6QUJJS2luZCBLaW5kID0gUFBDNjRfU1ZSNF9BQklJbmZv OjpFTEZ2MTsKKy0gICAgICBpZiAoZ2V0VGFyZ2V0KCkuZ2V0QUJJKCkgPT0gImVsZnYyIikKKy0g ICAgICAgIEtpbmQgPSBQUEM2NF9TVlI0X0FCSUluZm86OkVMRnYyOworKyAgICAgIFBQQzY0X1NW UjRfQUJJSW5mbzo6QUJJS2luZCBLaW5kID0gUFBDNjRfU1ZSNF9BQklJbmZvOjpFTEZ2MjsKKysg ICAgICBpZiAoZ2V0VGFyZ2V0KCkuZ2V0QUJJKCkgPT0gImVsZnYxIikKKysgICAgICAgIEtpbmQg PSBQUEM2NF9TVlI0X0FCSUluZm86OkVMRnYxOworICAgICAgIGJvb2wgSXNTb2Z0RmxvYXQgPSBD b2RlR2VuT3B0cy5GbG9hdEFCSSA9PSAic29mdCI7CisgCisgICAgICAgcmV0dXJuIFNldENHSW5m bygKKy0tLSBhL2NsYW5nL2xpYi9Ecml2ZXIvVG9vbENoYWlucy9DbGFuZy5jcHAKKysrKyBiL2Ns YW5nL2xpYi9Ecml2ZXIvVG9vbENoYWlucy9DbGFuZy5jcHAKK0BAIC0xOTIwLDE0ICsxOTIwLDcg QEAgdm9pZCBDbGFuZzo6QWRkUFBDVGFyZ2V0QXJncyhjb25zdCBBcmdMaXN0ICZBcmdzLAorICAg Y29uc3QgbGx2bTo6VHJpcGxlICZUID0gZ2V0VG9vbENoYWluKCkuZ2V0VHJpcGxlKCk7CisgICBp ZiAoVC5pc09TQmluRm9ybWF0RUxGKCkpIHsKKyAgICAgc3dpdGNoIChnZXRUb29sQ2hhaW4oKS5n ZXRBcmNoKCkpIHsKKy0gICAgY2FzZSBsbHZtOjpUcmlwbGU6OnBwYzY0OiB7CistICAgICAgaWYg KChULmlzT1NGcmVlQlNEKCkgJiYgVC5nZXRPU01ham9yVmVyc2lvbigpID49IDEzKSB8fAorLSAg ICAgICAgICBULmlzT1NPcGVuQlNEKCkgfHwgVC5pc011c2woKSkKKy0gICAgICAgIEFCSU5hbWUg PSAiZWxmdjIiOworLSAgICAgIGVsc2UKKy0gICAgICAgIEFCSU5hbWUgPSAiZWxmdjEiOworLSAg ICAgIGJyZWFrOworLSAgICB9CisrICAgIGNhc2UgbGx2bTo6VHJpcGxlOjpwcGM2NDoKKyAgICAg Y2FzZSBsbHZtOjpUcmlwbGU6OnBwYzY0bGU6CisgICAgICAgQUJJTmFtZSA9ICJlbGZ2MiI7Cisg ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xNC9wYXRjaGVzL2NvbXBpbGVy LXJ0LXNhbml0aXplci1wcGM2NC1tdXNsLnBhdGNoIGIvc3JjcGtncy9sbHZtMTQvcGF0Y2hlcy9j b21waWxlci1ydC1zYW5pdGl6ZXItcHBjNjQtbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAuLjQxMzViZmQ0NDg2YQotLS0gL2Rldi9udWxsCisrKyBiL3Ny Y3BrZ3MvbGx2bTE0L3BhdGNoZXMvY29tcGlsZXItcnQtc2FuaXRpemVyLXBwYzY0LW11c2wucGF0 Y2gKQEAgLTAsMCArMSwzNSBAQAorLS0tIGEvY29tcGlsZXItcnQvbGliL3Nhbml0aXplcl9jb21t b24vc2FuaXRpemVyX2xpbnV4LmNwcAorKysrIGIvY29tcGlsZXItcnQvbGliL3Nhbml0aXplcl9j b21tb24vc2FuaXRpemVyX2xpbnV4LmNwcAorQEAgLTc0LDYgKzc0LDEwIEBACisgI2luY2x1ZGUg PHN5cy91dHNuYW1lLmg+CisgI2VuZGlmCisKKysjaWYgU0FOSVRJWkVSX0xJTlVYICYmIGRlZmlu ZWQoX19wb3dlcnBjX18pCisrI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KKysjZW5kaWYKKysKKyAj aWYgU0FOSVRJWkVSX0xJTlVYICYmICFTQU5JVElaRVJfQU5EUk9JRAorICNpbmNsdWRlIDxzeXMv cGVyc29uYWxpdHkuaD4KKyAjZW5kaWYKKy0tLSBhL2NvbXBpbGVyLXJ0L2xpYi9zYW5pdGl6ZXJf Y29tbW9uL3Nhbml0aXplcl9wbGF0Zm9ybV9saW1pdHNfcG9zaXguY3BwCisrKysgYi9jb21waWxl ci1ydC9saWIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfcGxhdGZvcm1fbGltaXRzX3Bvc2l4 LmNwcAorQEAgLTkyLDcgKzkyLDcgQEAKKyAjIGluY2x1ZGUgPHV0aW1lLmg+CisgIyBpbmNsdWRl IDxzeXMvcHRyYWNlLmg+CisgIyAgICBpZiBkZWZpbmVkKF9fbWlwczY0KSB8fCBkZWZpbmVkKF9f YWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IFwKKy0gICAgICAgIGRlZmluZWQoX19o ZXhhZ29uX18pIHx8IFNBTklUSVpFUl9SSVNDVjY0CisrICAgICAgICBkZWZpbmVkKF9faGV4YWdv bl9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBTQU5JVElaRVJfUklTQ1Y2NAorICMgICAg ICBpbmNsdWRlIDxhc20vcHRyYWNlLmg+CisgIyAgICAgIGlmZGVmIF9fYXJtX18KKyB0eXBlZGVm IHN0cnVjdCB1c2VyX2ZwcmVncyBlbGZfZnByZWdzZXRfdDsKKy0tLSBhL2NvbXBpbGVyLXJ0L2xp Yi9zYW5pdGl6ZXJfY29tbW9uL3Nhbml0aXplcl9zdG9wdGhld29ybGRfbGludXhfbGliY2RlcC5j cHAKKysrKyBiL2NvbXBpbGVyLXJ0L2xpYi9zYW5pdGl6ZXJfY29tbW9uL3Nhbml0aXplcl9zdG9w dGhld29ybGRfbGludXhfbGliY2RlcC5jcHAKK0BAIC0zMSw3ICszMSw3IEBACisgI2luY2x1ZGUg PHN5cy90eXBlcy5oPiAvLyBmb3IgcGlkX3QKKyAjaW5jbHVkZSA8c3lzL3Vpby5oPiAvLyBmb3Ig aW92ZWMKKyAjaW5jbHVkZSA8ZWxmLmg+IC8vIGZvciBOVF9QUlNUQVRVUworLSNpZiAoZGVmaW5l ZChfX2FhcmNoNjRfXykgfHwgU0FOSVRJWkVSX1JJU0NWNjQpICYmICFTQU5JVElaRVJfQU5EUk9J RAorKyNpZiAoZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGNfXykgfHwg U0FOSVRJWkVSX1JJU0NWNjQpICYmICFTQU5JVElaRVJfQU5EUk9JRAorIC8vIEdMSUJDIDIuMjAr IHN5cy91c2VyIGRvZXMgbm90IGluY2x1ZGUgYXNtL3B0cmFjZS5oCisgIyBpbmNsdWRlIDxhc20v cHRyYWNlLmg+CisgI2VuZGlmCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xNC9wYXRjaGVzL2Nv bXBpbGVyLXJ0LXhyYXktcHBjNjQtbXVzbC5wYXRjaCBiL3NyY3BrZ3MvbGx2bTE0L3BhdGNoZXMv Y29tcGlsZXItcnQteHJheS1wcGM2NC1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMC4uZDBiNjFjODBjODk3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtn cy9sbHZtMTQvcGF0Y2hlcy9jb21waWxlci1ydC14cmF5LXBwYzY0LW11c2wucGF0Y2gKQEAgLTAs MCArMSw2MiBAQAorLS0tIGEvY29tcGlsZXItcnQvbGliL3hyYXkveHJheV9wb3dlcnBjNjQuaW5j CisrKysgYi9jb21waWxlci1ydC9saWIveHJheS94cmF5X3Bvd2VycGM2NC5pbmMKK0BAIC0xMiw3 ICsxMiwxMyBAQAorIAorICNpbmNsdWRlIDxjc3RkaW50PgorICNpbmNsdWRlIDxtdXRleD4KKysj aWZkZWYgX19HTElCQ19fCisgI2luY2x1ZGUgPHN5cy9wbGF0Zm9ybS9wcGMuaD4KKysjZWxzZQor KyNpbmNsdWRlIDxjY3R5cGU+CisrI2luY2x1ZGUgPGNzdHJpbmc+CisrI2luY2x1ZGUgPGNzdGRs aWI+CisrI2VuZGlmCisgCisgI2luY2x1ZGUgInhyYXlfZGVmcy5oIgorIAorQEAgLTIwLDEzICsy Niw0NSBAQCBuYW1lc3BhY2UgX194cmF5IHsKKyAKKyBBTFdBWVNfSU5MSU5FIHVpbnQ2NF90IHJl YWRUU0ModWludDhfdCAmQ1BVKSBYUkFZX05FVkVSX0lOU1RSVU1FTlQgeworICAgQ1BVID0gMDsK KysjaWZkZWYgX19HTElCQ19fCisgICByZXR1cm4gX19wcGNfZ2V0X3RpbWViYXNlKCk7CisrI2Vs c2UKKysgIHJldHVybiBfX2J1aWx0aW5fcHBjX2dldF90aW1lYmFzZSgpOworKyNlbmRpZgorIH0K KyAKKyBpbmxpbmUgdWludDY0X3QgZ2V0VFNDRnJlcXVlbmN5KCkgWFJBWV9ORVZFUl9JTlNUUlVN RU5UIHsKKyAgIHN0YXRpYyBzdGQ6Om11dGV4IE07CisgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjpt dXRleD4gR3VhcmQoTSk7CisrI2lmZGVmIF9fR0xJQkNfXworICAgcmV0dXJuIF9fcHBjX2dldF90 aW1lYmFzZV9mcmVxKCk7CisrI2Vsc2UKKysgIC8qIEZJWE1FOiBhIGxlc3MgZGlydHkgaW1wbGVt ZW50YXRpb24/ICovCisrICBzdGF0aWMgdWludDY0X3QgYmFzZTsKKysgIGlmICghYmFzZSkgewor KyAgICBGSUxFICpmID0gZm9wZW4oIi9wcm9jL2NwdWluZm8iLCAicmIiKTsKKysgICAgaWYgKGYp IHsKKysgICAgICBzc2l6ZV90IG5yOworKyAgICAgIC8qIHZpcnR1YWxseSBhbHdheXMgYmlnIGVu b3VnaCB0byBob2xkIHRoZSBsaW5lICovCisrICAgICAgY2hhciBidWZbNTEyXTsKKysgICAgICB3 aGlsZSAoZmdldHMoYnVmLCBzaXplb2YoYnVmKSwgZikpIHsKKysgICAgICAgIGNoYXIgKnJldCA9 IHN0cnN0cihidWYsICJ0aW1lYmFzZSIpOworKyAgICAgICAgaWYgKCFyZXQpIHsKKysgICAgICAg ICAgY29udGludWU7CisrICAgICAgICB9CisrICAgICAgICByZXQgKz0gc2l6ZW9mKCJ0aW1lYmFz ZSIpIC0gMTsKKysgICAgICAgIHJldCA9IHN0cmNocihyZXQsICc6Jyk7CisrICAgICAgICBpZiAo IXJldCkgeworKyAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgIH0KKysgICAgICAgIGJhc2Ug PSBzdHJ0b3VsKHJldCArIDEsIG51bGxwdHIsIDEwKTsKKysgICAgICAgIGJyZWFrOworKyAgICAg IH0KKysgICAgICBmY2xvc2UoZik7CisrICAgIH0KKysgIH0KKysgIHJldHVybiBiYXNlOworKyNl bmRpZgorIH0KKyAKKyBpbmxpbmUgYm9vbCBwcm9iZVJlcXVpcmVkQ1BVRmVhdHVyZXMoKSBYUkFZ X05FVkVSX0lOU1RSVU1FTlQgewpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTQvcGF0Y2hlcy9s aWJjeHgtbXVzbC5wYXRjaCBiL3NyY3BrZ3MvbGx2bTE0L3BhdGNoZXMvbGliY3h4LW11c2wucGF0 Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iYmQzMWZmYzJjYjEK LS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xsdm0xNC9wYXRjaGVzL2xpYmN4eC1tdXNsLnBh dGNoCkBAIC0wLDAgKzEsMjYgQEAKKy0tLSBhL2xpYmN4eC9pbmNsdWRlL2xvY2FsZQorKysrIGIv bGliY3h4L2luY2x1ZGUvbG9jYWxlCitAQCAtNzQyLDcgKzc0MiwxMSBAQCBfX251bV9nZXRfc2ln bmVkX2ludGVncmFsKGNvbnN0IGNoYXIqIF9fYSwgY29uc3QgY2hhciogX19hX2VuZCwKKyAgICAg ICAgIHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2U8ZGVjbHR5cGUoZXJybm8pPjo6dHlwZSBfX3Nh dmVfZXJybm8gPSBlcnJubzsKKyAgICAgICAgIGVycm5vID0gMDsKKyAgICAgICAgIGNoYXIgKl9f cDI7CisrI2lmIGRlZmluZWQoX19saW51eF9fKSAmJiAhZGVmaW5lZChfX0dMSUJDX18pCisrICAg ICAgICBsb25nIGxvbmcgX19sbCA9IHN0cnRvbGwoX19hLCAmX19wMiwgX19iYXNlKTsKKysjZWxz ZQorICAgICAgICAgbG9uZyBsb25nIF9fbGwgPSBzdHJ0b2xsX2woX19hLCAmX19wMiwgX19iYXNl LCBfTElCQ1BQX0dFVF9DX0xPQ0FMRSk7CisrI2VuZGlmCisgICAgICAgICB0eXBlbmFtZSByZW1v dmVfcmVmZXJlbmNlPGRlY2x0eXBlKGVycm5vKT46OnR5cGUgX19jdXJyZW50X2Vycm5vID0gZXJy bm87CisgICAgICAgICBpZiAoX19jdXJyZW50X2Vycm5vID09IDApCisgICAgICAgICAgICAgZXJy bm8gPSBfX3NhdmVfZXJybm87CitAQCAtNzgyLDcgKzc4NiwxMSBAQCBfX251bV9nZXRfdW5zaWdu ZWRfaW50ZWdyYWwoY29uc3QgY2hhciogX19hLCBjb25zdCBjaGFyKiBfX2FfZW5kLAorICAgICAg ICAgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxkZWNsdHlwZShlcnJubyk+Ojp0eXBlIF9fc2F2 ZV9lcnJubyA9IGVycm5vOworICAgICAgICAgZXJybm8gPSAwOworICAgICAgICAgY2hhciAqX19w MjsKKysjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmICFkZWZpbmVkKF9fR0xJQkNfXykKKysgICAg ICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2xsID0gc3RydG91bGwoX19hLCAmX19wMiwgX19iYXNl KTsKKysjZWxzZQorICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIF9fbGwgPSBzdHJ0b3VsbF9s KF9fYSwgJl9fcDIsIF9fYmFzZSwgX0xJQkNQUF9HRVRfQ19MT0NBTEUpOworKyNlbmRpZgorICAg ICAgICAgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxkZWNsdHlwZShlcnJubyk+Ojp0eXBlIF9f Y3VycmVudF9lcnJubyA9IGVycm5vOworICAgICAgICAgaWYgKF9fY3VycmVudF9lcnJubyA9PSAw KQorICAgICAgICAgICAgIGVycm5vID0gX19zYXZlX2Vycm5vOwpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9sbHZtMTQvcGF0Y2hlcy9saWJjeHgtcHBjLnBhdGNoIGIvc3JjcGtncy9sbHZtMTQvcGF0Y2hl cy9saWJjeHgtcHBjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MC4uN2E5MmY4MDA0ZTFjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9sbHZtMTQvcGF0Y2hl cy9saWJjeHgtcHBjLnBhdGNoCkBAIC0wLDAgKzEsMjIgQEAKK1RoaXMgZW5zdXJlcyBgaXNfaWVj NTU5YCBpcyBkZWZpbmVkIGNvcnJlY3RseSB1bmRlciBhbGwgbG9uZyBkb3VibGUgQUJJcywKK2lu Y2x1ZGluZyBtdXNsIGFuZCBpdHMgNjQtYml0IGxvbmcgZG91YmxlLiBBbHNvLCBgX19wcGNfX2Ag b3IgYF9fcHBjNjRfX2AKK2lzIG5vdCBkZWZpbmVkIG9uIGdjYy4KKworLS0tIGEvbGliY3h4L2lu Y2x1ZGUvbGltaXRzCisrKysgYi9saWJjeHgvaW5jbHVkZS9saW1pdHMKK0BAIC00MjYsOCArNDI2 LDE0IEBAIHByb3RlY3RlZDoKKyAgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBzdGF0aWMg X0xJQkNQUF9DT05TVEVYUFIgdHlwZSBzaWduYWxpbmdfTmFOKCkgX05PRVhDRVBUIHtyZXR1cm4g X19idWlsdGluX25hbnNsKCIiKTt9CisgICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgc3Rh dGljIF9MSUJDUFBfQ09OU1RFWFBSIHR5cGUgZGVub3JtX21pbigpIF9OT0VYQ0VQVCB7cmV0dXJu IF9fTERCTF9ERU5PUk1fTUlOX187fQorIAorLSNpZiAoZGVmaW5lZChfX3BwY19fKSB8fCBkZWZp bmVkKF9fcHBjNjRfXykpCisrI2lmIGRlZmluZWQoX19wb3dlcnBjX18pIHx8IGRlZmluZWQoX19w b3dlcnBjNjRfXykKKysjaWYgKF9fTERCTF9NQVhfRVhQX18gPiBfX0RCTF9NQVhfRVhQX18pIHx8 IChfX0xEQkxfTUFOVF9ESUdfXyA9PSBfX0RCTF9NQU5UX0RJR19fKQorKyAgICAvKiBJRUVFIDc1 NCBxdWFkcnVwbGUgb3IgZG91YmxlIHByZWNpc2lvbiAqLworKyAgICBzdGF0aWMgX0xJQkNQUF9D T05TVEVYUFIgY29uc3QgYm9vbCBpc19pZWM1NTkgPSB0cnVlOworKyNlbHNlCisrICAgIC8qIDEy OC1iaXQgSUJNIGRvdWJsZS1kb3VibGUgKi8KKyAgICAgc3RhdGljIF9MSUJDUFBfQ09OU1RFWFBS IGNvbnN0IGJvb2wgaXNfaWVjNTU5ID0gZmFsc2U7CisrI2VuZGlmCisgI2Vsc2UKKyAgICAgc3Rh dGljIF9MSUJDUFBfQ09OU1RFWFBSIGNvbnN0IGJvb2wgaXNfaWVjNTU5ID0gdHJ1ZTsKKyAjZW5k aWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTE0L3BhdGNoZXMvbGliY3h4LXNzcC1ub25zaGFy ZWQucGF0Y2ggYi9zcmNwa2dzL2xsdm0xNC9wYXRjaGVzL2xpYmN4eC1zc3Atbm9uc2hhcmVkLnBh dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNzAyOTJiZWIyZmNk Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9sbHZtMTQvcGF0Y2hlcy9saWJjeHgtc3NwLW5v bnNoYXJlZC5wYXRjaApAQCAtMCwwICsxLDExIEBACistLS0gYS9saWJjeHgvQ01ha2VMaXN0cy50 eHQKKysrKyBiL2xpYmN4eC9DTWFrZUxpc3RzLnR4dAorQEAgLTc2OSw2ICs3NjksOCBAQCBmdW5j dGlvbihjeHhfbGlua19zeXN0ZW1fbGlicmFyaWVzIHRhcmdldCkKKyAgICAgdGFyZ2V0X2xpbmtf bGlicmFyaWVzKCR7dGFyZ2V0fSBQUklWQVRFIGF0b21pYykKKyAgIGVuZGlmKCkKKyAKKysjc3Nw ICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHt0YXJnZXR9IFBSSVZBVEUgc3NwX25vbnNoYXJlZCkK KysKKyAgIGlmIChNSU5HVykKKyAgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7dGFyZ2V0fSBQ UklWQVRFICIke01JTkdXX0xJQlJBUklFU30iKQorICAgZW5kaWYoKQpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9sbHZtMTQvcGF0Y2hlcy9saWJjeHhhYmktZGwucGF0Y2ggYi9zcmNwa2dzL2xsdm0xNC9w YXRjaGVzL2xpYmN4eGFiaS1kbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLjNhMTVmOWRiOGM5OAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2bTE0 L3BhdGNoZXMvbGliY3h4YWJpLWRsLnBhdGNoCkBAIC0wLDAgKzEsMjUgQEAKK0Fsc28gbGluayB0 byAtbGRsIHRvIHByZXZlbnQgdW5kZWZpbmVkIHJlZmVyZW5jZXMuCisKKy0tLSBhL2xpYmN4eGFi aS9zcmMvQ01ha2VMaXN0cy50eHQKKysrKyBiL2xpYmN4eGFiaS9zcmMvQ01ha2VMaXN0cy50eHQK K0BAIC03Myw2ICs3Myw3IEBACisgICBlbmRpZigpCisgCisgICBhZGRfbGlicmFyeV9mbGFnc19p ZihMSUJDWFhBQklfSEFTX0NfTElCIGMpCisrICBhZGRfbGlicmFyeV9mbGFnc19pZihMSUJDWFhB QklfSEFTX0NfTElCIGRsKQorIGVuZGlmKCkKKyAKKyBpZiAoTElCQ1hYQUJJX1VTRV9MTFZNX1VO V0lOREVSKQorLS0tIGEvbGliY3h4L0NNYWtlTGlzdHMudHh0CisrKysgYi9saWJjeHgvQ01ha2VM aXN0cy50eHQKK0BAIC03NDUsNiArNzQ1LDEwIEBACisgICAgIHRhcmdldF9saW5rX2xpYnJhcmll cygke3RhcmdldH0gUFJJVkFURSBtKQorICAgZW5kaWYoKQorIAorKyAgaWYgKExJQkNYWF9IQVNf Q19MSUIpCisrICAgIHRhcmdldF9saW5rX2xpYnJhcmllcygke3RhcmdldH0gUFJJVkFURSBkbCkK KysgIGVuZGlmKCkKKysKKyAgIGlmIChMSUJDWFhfSEFTX1JUX0xJQikKKyAgICAgdGFyZ2V0X2xp bmtfbGlicmFyaWVzKCR7dGFyZ2V0fSBQUklWQVRFIHJ0KQorICAgZW5kaWYoKQpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9sbHZtMTQvcGF0Y2hlcy9sbGRiLW11c2wucGF0Y2ggYi9zcmNwa2dzL2xsdm0x NC9wYXRjaGVzL2xsZGItbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLjYwMWMwZDEzODUyMwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2bTE0 L3BhdGNoZXMvbGxkYi1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKKy0tLSBhL2xsZGIvc291 cmNlL1BsdWdpbnMvUHJvY2Vzcy9MaW51eC9Qcm9jZnMuaAorKysrIGIvbGxkYi9zb3VyY2UvUGx1 Z2lucy9Qcm9jZXNzL0xpbnV4L1Byb2Nmcy5oCitAQCAtMTAsMjEgKzEwLDEyIEBACisgLy8gc3lz L3Byb2Nmcy5oIG9uIEFuZHJvaWQvTGludXggZm9yIGFsbCBzdXBwb3J0ZWQgYXJjaGl0ZWN0dXJl cy4KKyAKKyAjaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgorKyNpbmNsdWRlIDxhc20vcHRyYWNlLmg+ CisgCistI2lmZGVmIF9fQU5EUk9JRF9fCistI2lmIGRlZmluZWQoX19hcm02NF9fKSB8fCBkZWZp bmVkKF9fYWFyY2g2NF9fKQorLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBlbGZfZ3JlZ190OworLXR5 cGVkZWYgZWxmX2dyZWdfdAorLSAgICBlbGZfZ3JlZ3NldF90WyhzaXplb2Yoc3RydWN0IHVzZXJf cHRfcmVncykgLyBzaXplb2YoZWxmX2dyZWdfdCkpXTsKKy10eXBlZGVmIHN0cnVjdCB1c2VyX2Zw c2ltZF9zdGF0ZSBlbGZfZnByZWdzZXRfdDsKKy0jaWZuZGVmIE5UX0ZQUkVHU0VUCistI2RlZmlu ZSBOVF9GUFJFR1NFVCBOVF9QUkZQUkVHCistI2VuZGlmIC8vIE5UX0ZQUkVHU0VUCistI2VsaWYg ZGVmaW5lZChfX21pcHNfXykKKy0jaWZuZGVmIE5UX0ZQUkVHU0VUCistI2RlZmluZSBOVF9GUFJF R1NFVCBOVF9QUkZQUkVHCistI2VuZGlmIC8vIE5UX0ZQUkVHU0VUCistI2VuZGlmCistI2Vsc2Ug Ly8gX19BTkRST0lEX18KKysjaWYgIWRlZmluZWQoX19HTElCQ19fKSAmJiBkZWZpbmVkKF9fcG93 ZXJwY19fKQorKyNkZWZpbmUgcHRfcmVncyBtdXNsX3B0X3JlZ3MKKysjaW5jbHVkZSA8c3lzL3By b2Nmcy5oPgorKyN1bmRlZiBwdF9yZWdzCisrI2Vsc2UKKyAjaW5jbHVkZSA8c3lzL3Byb2Nmcy5o PgorLSNlbmRpZiAvLyBfX0FORFJPSURfXworKyNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9s bHZtMTQvcGF0Y2hlcy9sbHZtLTAwMS1tdXNsLnBhdGNoIGIvc3JjcGtncy9sbHZtMTQvcGF0Y2hl cy9sbHZtLTAwMS1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMC4uZjJhM2Y4ZDYyODEzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9sbHZtMTQvcGF0 Y2hlcy9sbHZtLTAwMS1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsNTcgQEAKK0Zyb20gZmFjYTNmYmQx NWQwYzMxMDg0OTNjM2M1NGNkOTMxMzhlMDQ5YWM0MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK K0Zyb206IEFuZHJlYSBCcmFuY2FsZW9uaSA8bWl3YXhlQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwg OCBTZXAgMjAxNSAyMjowMzowMiArMDIwMAorU3ViamVjdDogW1BBVENIIDMvM10gbXVzbAorCist LS0KKyBpbmNsdWRlL2xsdm0vQW5hbHlzaXMvVGFyZ2V0TGlicmFyeUluZm8uaCB8IDkgKysrKysr KysrCisgbGliL1N1cHBvcnQvRHluYW1pY0xpYnJhcnkuY3BwICAgICAgICAgICAgfCAyICstCisg bGliL1N1cHBvcnQvVW5peC9TaWduYWxzLmluYyAgICAgICAgICAgICAgfCA2ICsrKy0tLQorIHV0 aWxzL3VuaXR0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LmNjICAgIHwgMSArCisgNSBmaWxlcyBj aGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEv aW5jbHVkZS9sbHZtL0FuYWx5c2lzL1RhcmdldExpYnJhcnlJbmZvLmggYi9pbmNsdWRlL2xsdm0v QW5hbHlzaXMvVGFyZ2V0TGlicmFyeUluZm8uaAoraW5kZXggMzRhOGExZTMuLjEyMTRlY2U1IDEw MDY0NAorLS0tIGEvbGx2bS9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVGFyZ2V0TGlicmFyeUluZm8u aAorKysrIGIvbGx2bS9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVGFyZ2V0TGlicmFyeUluZm8uaAor QEAgLTE4LDYgKzE4LDE1IEBACisgI2luY2x1ZGUgImxsdm0vSVIvUGFzc01hbmFnZXIuaCIKKyAj aW5jbHVkZSAibGx2bS9QYXNzLmgiCisgCisrI3VuZGVmIGZvcGVuNjQKKysjdW5kZWYgZnNlZWtv NjQKKysjdW5kZWYgZnN0YXQ2NAorKyN1bmRlZiBmc3RhdHZmczY0CisrI3VuZGVmIGZ0ZWxsbzY0 CisrI3VuZGVmIGxzdGF0NjQKKysjdW5kZWYgc3RhdDY0CisrI3VuZGVmIHRtcGZpbGU2NAorKwor IG5hbWVzcGFjZSBsbHZtIHsKKyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgQXJyYXlSZWY7 CisgY2xhc3MgVHJpcGxlOworZGlmZiAtLWdpdCBhL2xpYi9TdXBwb3J0L1VuaXgvRHluYW1pY0xp YnJhcnkuaW5jIGIvbGliL1N1cHBvcnQvVW5peC9EeW5hbWljTGlicmFyeS5pbmMKK2luZGV4IGEy YTM3OTk2Li4yZjg2YzQ3MCAxMDA2NDQKKy0tLSBhL2xsdm0vbGliL1N1cHBvcnQvVW5peC9EeW5h bWljTGlicmFyeS5pbmMKKysrKyBiL2xsdm0vbGliL1N1cHBvcnQvVW5peC9EeW5hbWljTGlicmFy eS5pbmMKK0BAIC0xMDIsNyArMTAyLDcgQEAgc3RhdGljIHZvaWQgKkRvU2VhcmNoKGNvbnN0IGNo YXIqIFN5bWJvbE5hbWUpIHsKKyAKKyAvLyBUaGlzIG1hY3JvIHJldHVybnMgdGhlIGFkZHJlc3Mg b2YgYSB3ZWxsLWtub3duLCBleHBsaWNpdCBzeW1ib2wKKyAjZGVmaW5lIEVYUExJQ0lUX1NZTUJP TChTWU0pIFwKKy0gICBpZiAoIXN0cmNtcChTeW1ib2xOYW1lLCAjU1lNKSkgcmV0dXJuICZTWU0K KysgICBpZiAoIXN0cmNtcChTeW1ib2xOYW1lLCAjU1lNKSkgcmV0dXJuICh2b2lkICopJlNZTQor IAorIC8vIFVuZGVyIGdsaWJjIHdlIGhhdmUgYSB3ZWlyZCBzaXR1YXRpb24uIFRoZSBzdGRlcnIv b3V0L2luIHN5bWJvbHMgYXJlIGJvdGgKKyAvLyBtYWNyb3MgYW5kIGdsb2JhbCB2YXJpYWJsZXMg YmVjYXVzZSBvZiBzdGFuZGFyZHMgcmVxdWlyZW1lbnRzLiBTbywgd2UKK2RpZmYgLS1naXQgYS91 dGlscy91bml0dGVzdC9nb29nbGV0ZXN0L3NyYy9ndGVzdC5jYyBiL3V0aWxzL3VuaXR0ZXN0L2dv b2dsZXRlc3Qvc3JjL2d0ZXN0LmNjCitpbmRleCBkODgyYWIyZS4uZjFmYjEyZDAgMTAwNjQ0Cist LS0gYS9sbHZtL3V0aWxzL3VuaXR0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LmNjCisrKysgYi9s bHZtL3V0aWxzL3VuaXR0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LmNjCitAQCAtMTI4LDYgKzEy OCw3IEBACisgCisgI2lmIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KKyAjIGluY2x1ZGUgPGFy cGEvaW5ldC5oPiAgLy8gTk9MSU5UCisrIyBpbmNsdWRlIDxzeXMvc29ja2V0Lmg+ICAvLyBOT0xJ TlQKKyAjIGluY2x1ZGUgPG5ldGRiLmg+ICAvLyBOT0xJTlQKKyAjIGluY2x1ZGUgPHN5cy9zb2Nr ZXQuaD4gIC8vIE5PTElOVAorICMgaW5jbHVkZSA8c3lzL3R5cGVzLmg+ICAvLyBOT0xJTlQKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTE0L3BhdGNoZXMvbGx2bS0wMDItbXVzbC1wcGM2NC1lbGZ2 Mi5wYXRjaCBiL3NyY3BrZ3MvbGx2bTE0L3BhdGNoZXMvbGx2bS0wMDItbXVzbC1wcGM2NC1lbGZ2 Mi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjAwNzFkOTY0 YmQzNwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2bTE0L3BhdGNoZXMvbGx2bS0wMDIt bXVzbC1wcGM2NC1lbGZ2Mi5wYXRjaApAQCAtMCwwICsxLDMwIEBACitUaGlzIHBhdGNoZXMgTExW TSB0byB1c2UgRUxGdjIgb24gcHBjNjQgdW5jb25kaXRpb25hbGx5IHVubGVzcyBvdmVycmlkZGVu LiBXZQorbmVlZCB0aGlzIGJlY2F1c2UgdW5saWtlIG1vc3QgZGlzdHJvcyB3ZSB1c2UgRUxGdjIg Zm9yIGJvdGggZ2xpYmMgYW5kIG11c2wKK29uIGJpZyBlbmRpYW4gcHBjNjQuCisKK2RpZmYgLS1n aXQgYS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDVGFyZ2V0TWFjaGluZS5jcHAgYi9saWIvVGFyZ2V0 L1Bvd2VyUEMvUFBDVGFyZ2V0TWFjaGluZS5jcHAKK2luZGV4IDA2MzQ4MzNlLi5iN2NiYzJlNyAx MDA2NDQKKy0tLSBhL2xsdm0vbGliL1RhcmdldC9Qb3dlclBDL1BQQ1RhcmdldE1hY2hpbmUuY3Bw CisrKysgYi9sbHZtL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENUYXJnZXRNYWNoaW5lLmNwcAorQEAg LTIyMiw5ICsyMjIsOCBAQCBzdGF0aWMgUFBDVGFyZ2V0TWFjaGluZTo6UFBDQUJJIGNvbXB1dGVU YXJnZXRBQkkoY29uc3QgVHJpcGxlICZUVCwKKyAKKyAgIHN3aXRjaCAoVFQuZ2V0QXJjaCgpKSB7 CisgICBjYXNlIFRyaXBsZTo6cHBjNjRsZToKKy0gICAgcmV0dXJuIFBQQ1RhcmdldE1hY2hpbmU6 OlBQQ19BQklfRUxGdjI7CisgICBjYXNlIFRyaXBsZTo6cHBjNjQ6CistICAgIHJldHVybiBQUENU YXJnZXRNYWNoaW5lOjpQUENfQUJJX0VMRnYxOworKyAgICByZXR1cm4gUFBDVGFyZ2V0TWFjaGlu ZTo6UFBDX0FCSV9FTEZ2MjsKKyAgIGRlZmF1bHQ6CisgICAgIHJldHVybiBQUENUYXJnZXRNYWNo aW5lOjpQUENfQUJJX1VOS05PV047CisgICB9CitkaWZmIC0tZ2l0IGEvdGVzdC9Db2RlR2VuL1Bv d2VyUEMvcHBjNjQtZWxmLWFiaS5sbCBiL3Rlc3QvQ29kZUdlbi9Qb3dlclBDL3BwYzY0LWVsZi1h YmkubGwKK2luZGV4IDhiMWNmNmI1Li4yOTZhMmFmYSAxMDA2NDQKKy0tLSBhL2xsdm0vdGVzdC9D b2RlR2VuL1Bvd2VyUEMvcHBjNjQtZWxmLWFiaS5sbAorKysrIGIvbGx2bS90ZXN0L0NvZGVHZW4v UG93ZXJQQy9wcGM2NC1lbGYtYWJpLmxsCitAQCAtMSw0ICsxLDUgQEAKKy07IFJVTjogbGxjIC12 ZXJpZnktbWFjaGluZWluc3RycyAtbXRyaXBsZT1wb3dlcnBjNjQtdW5rbm93bi1saW51eC1nbnUg PCAlcyB8IEZpbGVDaGVjayAlcyAtY2hlY2stcHJlZml4PUNIRUNLLUVMRnYxCisrOyBSVU46IGxs YyAtdmVyaWZ5LW1hY2hpbmVpbnN0cnMgLW10cmlwbGU9cG93ZXJwYzY0LXVua25vd24tbGludXgt Z251IDwgJXMgfCBGaWxlQ2hlY2sgJXMgLWNoZWNrLXByZWZpeD1DSEVDSy1FTEZ2MgorKzsgUlVO OiBsbGMgLXZlcmlmeS1tYWNoaW5laW5zdHJzIC1tdHJpcGxlPXBvd2VycGM2NC11bmtub3duLWxp bnV4LW11c2wgPCAlcyB8IEZpbGVDaGVjayAlcyAtY2hlY2stcHJlZml4PUNIRUNLLUVMRnYyCisg OyBSVU46IGxsYyAtdmVyaWZ5LW1hY2hpbmVpbnN0cnMgLW10cmlwbGU9cG93ZXJwYzY0LXVua25v d24tbGludXgtZ251IC10YXJnZXQtYWJpIGVsZnYxIDwgJXMgfCBGaWxlQ2hlY2sgJXMgLWNoZWNr LXByZWZpeD1DSEVDSy1FTEZ2MQorIDsgUlVOOiBsbGMgLXZlcmlmeS1tYWNoaW5laW5zdHJzIC1t dHJpcGxlPXBvd2VycGM2NC11bmtub3duLWxpbnV4LWdudSAtdGFyZ2V0LWFiaSBlbGZ2MiA8ICVz IHwgRmlsZUNoZWNrICVzIC1jaGVjay1wcmVmaXg9Q0hFQ0stRUxGdjIKKyA7IFJVTjogbGxjIC12 ZXJpZnktbWFjaGluZWluc3RycyAtbXRyaXBsZT1wb3dlcnBjNjRsZS11bmtub3duLWxpbnV4LWdu dSA8ICVzIHwgRmlsZUNoZWNrICVzIC1jaGVjay1wcmVmaXg9Q0hFQ0stRUxGdjIKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvbGx2bTE0L3BhdGNoZXMvbGx2bS0wMDMtcHBjLXNlY3VyZXBsdC5wYXRjaCBi L3NyY3BrZ3MvbGx2bTE0L3BhdGNoZXMvbGx2bS0wMDMtcHBjLXNlY3VyZXBsdC5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmI1ZDE1OTc0Mzc1ZAotLS0gL2Rl di9udWxsCisrKyBiL3NyY3BrZ3MvbGx2bTE0L3BhdGNoZXMvbGx2bS0wMDMtcHBjLXNlY3VyZXBs dC5wYXRjaApAQCAtMCwwICsxLDExIEBACistLS0gYS9sbHZtL2xpYi9UYXJnZXQvUG93ZXJQQy9Q UENTdWJ0YXJnZXQuY3BwCisrKysgYi9sbHZtL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENTdWJ0YXJn ZXQuY3BwCitAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgUFBDU3VidGFyZ2V0Ojppbml0U3VidGFy Z2V0RmVhdHVyZXMoU3RyaW5nUmVmIENQVSwgU3RyaW5nUmVmIEZTKSB7CisgCisgICBpZiAoKFRh cmdldFRyaXBsZS5pc09TRnJlZUJTRCgpICYmIFRhcmdldFRyaXBsZS5nZXRPU01ham9yVmVyc2lv bigpID49IDEzKSB8fAorICAgICAgIFRhcmdldFRyaXBsZS5pc09TTmV0QlNEKCkgfHwgVGFyZ2V0 VHJpcGxlLmlzT1NPcGVuQlNEKCkgfHwKKy0gICAgICBUYXJnZXRUcmlwbGUuaXNNdXNsKCkpCisr ICAgICAgaXNUYXJnZXRMaW51eCgpKQorICAgICBTZWN1cmVQbHQgPSB0cnVlOworIAorICAgaWYg KEhhc1NQRSAmJiBJc1BQQzY0KQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTQvcGF0Y2hlcy9s bHZtLTAwNC1vdmVycmlkZS1vcHQucGF0Y2ggYi9zcmNwa2dzL2xsdm0xNC9wYXRjaGVzL2xsdm0t MDA0LW92ZXJyaWRlLW9wdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLjUxZDBlNGIzMWIzMgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2bTE0L3Bh dGNoZXMvbGx2bS0wMDQtb3ZlcnJpZGUtb3B0LnBhdGNoCkBAIC0wLDAgKzEsMTggQEAKK1RoaXMg YWxsb3dzIHVzIHRvIG92ZXJyaWRlIHRoZSBvcHRpbWl6YXRpb24gbGV2ZWwgYXMgbm90IGFsbCBw bGF0Zm9ybXMgY2FuCitkZWFsIHdpdGggLU8zLgorCistLS0gYS9sbHZtL0NNYWtlTGlzdHMudHh0 CisrKysgYi9sbHZtL0NNYWtlTGlzdHMudHh0CitAQCAtOTE4LDYgKzkxOCwxMiBAQCBpZiggTUlO R1cgQU5EIE5PVCAiJHtDTUFLRV9DWFhfQ09NUElMRVJfSUR9IiBNQVRDSEVTICJDbGFuZyIgKQor ICAgbGx2bV9yZXBsYWNlX2NvbXBpbGVyX29wdGlvbihDTUFLRV9DWFhfRkxBR1NfUkVMRUFTRSAi LU8zIiAiLU8yIikKKyBlbmRpZigpCisgCisrc2V0KFZPSURfQ1hYX09QVF9GTEFHUyAiIiBDQUNI RSBTVFJJTkcgIk9wdGltaXphdGlvbiBsZXZlbCB0byB1c2UiKQorKworK2lmIChOT1QgVk9JRF9D WFhfT1BUX0ZMQUdTIFNUUkVRVUFMICIiKQorKyAgICBsbHZtX3JlcGxhY2VfY29tcGlsZXJfb3B0 aW9uKENNQUtFX0NYWF9GTEFHU19SRUxFQVNFICItTzMiICIke1ZPSURfQ1hYX09QVF9GTEFHU30i KQorK2VuZGlmKCkKKysKKyAjIFB1dCB0aGlzIGJlZm9yZSB0YmxnZW4uIEVsc2Ugd2UgaGF2ZSBh IGNpcmN1bGFyIGRlcGVuZGVuY2UuCisgYWRkX3N1YmRpcmVjdG9yeShsaWIvRGVtYW5nbGUpCisg YWRkX3N1YmRpcmVjdG9yeShsaWIvU3VwcG9ydCkKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTE0 L3BhdGNoZXMvbGx2bS0wMDUtcHBjLWJpZ3BpYy5wYXRjaCBiL3NyY3BrZ3MvbGx2bTE0L3BhdGNo ZXMvbGx2bS0wMDUtcHBjLWJpZ3BpYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAuLmQzMzI2ODdiOWQ5MgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2 bTE0L3BhdGNoZXMvbGx2bS0wMDUtcHBjLWJpZ3BpYy5wYXRjaApAQCAtMCwwICsxLDM2IEBACitG cm9tIGYzZGJkZDQ5YzA2YmZhZmMxZDYxMzgwOTRjZjQyODg5YzE0ZDM4YjYgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCitGcm9tOiBTYW11ZWwgSG9sbGFuZCA8c2FtdWVsQHNob2xsYW5kLm9yZz4K K0RhdGU6IFN1biwgMyBOb3YgMjAxOSAxMDo1NzoyNyAtMDYwMAorU3ViamVjdDogW1BBVENIXSBb TExWTV1bUG93ZXJQQ10gQXNzdW1lIEJpZ1BJQyBpZiBubyBQSUMgbGV2ZWwgaXMgc3BlY2lmaWVk CisKKy0tLQorIGxsdm0vbGliL1RhcmdldC9Qb3dlclBDL1BQQ0FzbVByaW50ZXIuY3BwICB8IDIg Ky0KKyBsbHZtL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENNQ0luc3RMb3dlci5jcHAgfCAyICstCisg MiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYg LS1naXQgYS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDQXNtUHJpbnRlci5jcHAgYi9saWIvVGFyZ2V0 L1Bvd2VyUEMvUFBDQXNtUHJpbnRlci5jcHAKK2luZGV4IGNjZTIxZjMyLi44N2NhNWY5YiAxMDA2 NDQKKy0tLSBhL2xsdm0vbGliL1RhcmdldC9Qb3dlclBDL1BQQ0FzbVByaW50ZXIuY3BwCisrKysg Yi9sbHZtL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENBc21QcmludGVyLmNwcAorQEAgLTUyMCw3ICs1 MjAsNyBAQCB2b2lkIFBQQ0FzbVByaW50ZXI6OkVtaXRUbHNDYWxsKGNvbnN0IE1hY2hpbmVJbnN0 ciAqTUksCisgCisgICAvLyBBZGQgMzI3Njggb2Zmc2V0IHRvIHRoZSBzeW1ib2wgc28gd2UgZm9s bG93IHVwIHRoZSBsYXRlc3QgR09UL1BMVCBBQkkuCisgICBpZiAoS2luZCA9PSBNQ1N5bWJvbFJl ZkV4cHI6OlZLX1BMVCAmJiBTdWJ0YXJnZXQtPmlzU2VjdXJlUGx0KCkgJiYKKy0gICAgICBNLT5n ZXRQSUNMZXZlbCgpID09IFBJQ0xldmVsOjpCaWdQSUMpCisrICAgICAgTS0+Z2V0UElDTGV2ZWwo KSAhPSBQSUNMZXZlbDo6U21hbGxQSUMpCisgICAgIFRsc1JlZiA9IE1DQmluYXJ5RXhwcjo6Y3Jl YXRlQWRkKAorICAgICAgICAgVGxzUmVmLCBNQ0NvbnN0YW50RXhwcjo6Y3JlYXRlKDMyNzY4LCBP dXRDb250ZXh0KSwgT3V0Q29udGV4dCk7CisgICBjb25zdCBNYWNoaW5lT3BlcmFuZCAmTU8gPSBN SS0+Z2V0T3BlcmFuZCgyKTsKK2RpZmYgLS1naXQgYS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDTUNJ bnN0TG93ZXIuY3BwIGIvbGliL1RhcmdldC9Qb3dlclBDL1BQQ01DSW5zdExvd2VyLmNwcAoraW5k ZXggNWNjMTgwZDcuLmE1YjAyNTY1IDEwMDY0NAorLS0tIGEvbGx2bS9saWIvVGFyZ2V0L1Bvd2Vy UEMvUFBDTUNJbnN0TG93ZXIuY3BwCisrKysgYi9sbHZtL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENN Q0luc3RMb3dlci5jcHAKK0BAIC0xMTcsNyArMTE3LDcgQEAgc3RhdGljIE1DT3BlcmFuZCBHZXRT eW1ib2xSZWYoY29uc3QgTWFjaGluZU9wZXJhbmQgJk1PLCBjb25zdCBNQ1N5bWJvbCAqU3ltYm9s LAorICAgY29uc3QgTUNFeHByICpFeHByID0gTUNTeW1ib2xSZWZFeHByOjpjcmVhdGUoU3ltYm9s LCBSZWZLaW5kLCBDdHgpOworICAgLy8gSWYgLW1zZWN1cmUtcGx0IC1mUElDLCBhZGQgMzI3Njgg dG8gc3ltYm9sLgorICAgaWYgKFN1YnRhcmdldC0+aXNTZWN1cmVQbHQoKSAmJiBUTS5pc1Bvc2l0 aW9uSW5kZXBlbmRlbnQoKSAmJgorLSAgICAgIE0tPmdldFBJQ0xldmVsKCkgPT0gUElDTGV2ZWw6 OkJpZ1BJQyAmJgorKyAgICAgIE0tPmdldFBJQ0xldmVsKCkgIT0gUElDTGV2ZWw6OlNtYWxsUElD ICYmCisgICAgICAgTU8uZ2V0VGFyZ2V0RmxhZ3MoKSA9PSBQUENJSTo6TU9fUExUKQorICAgICBF eHByID0KKyAgICAgICAgIE1DQmluYXJ5RXhwcjo6Y3JlYXRlQWRkKEV4cHIsIE1DQ29uc3RhbnRF eHByOjpjcmVhdGUoMzI3NjgsIEN0eCksIEN0eCk7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0x NC9wYXRjaGVzL2xsdm0tMDA2LWFhcmNoNjQtbWZfZXhlYy5wYXRjaCBiL3NyY3BrZ3MvbGx2bTE0 L3BhdGNoZXMvbGx2bS0wMDYtYWFyY2g2NC1tZl9leGVjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTAwYWJkMjE2NjY1Ci0tLSAvZGV2L251bGwKKysrIGIv c3JjcGtncy9sbHZtMTQvcGF0Y2hlcy9sbHZtLTAwNi1hYXJjaDY0LW1mX2V4ZWMucGF0Y2gKQEAg LTAsMCArMSwyNSBAQAorRml4IGZhaWx1cmVzIGluIEFsbG9jYXRpb25UZXN0cy9NYXBwZWRNZW1v cnlUZXN0Liogb24gYWFyY2g2NDoKKworICAgIEZhaWxpbmcgVGVzdHMgKDgpOgorICAgICAgICBM TFZNLVVuaXQgOjogU3VwcG9ydC8uL1N1cHBvcnRUZXN0cy9BbGxvY2F0aW9uVGVzdHMvTWFwcGVk TWVtb3J5VGVzdC5BbGxvY0FuZFJlbGVhc2UvMworICAgICAgICBMTFZNLVVuaXQgOjogU3VwcG9y dC8uL1N1cHBvcnRUZXN0cy9BbGxvY2F0aW9uVGVzdHMvTWFwcGVkTWVtb3J5VGVzdC5EdXBsaWNh dGVOZWFyLzMKKyAgICAgICAgTExWTS1Vbml0IDo6IFN1cHBvcnQvLi9TdXBwb3J0VGVzdHMvQWxs b2NhdGlvblRlc3RzL01hcHBlZE1lbW9yeVRlc3QuRW5hYmxlZFdyaXRlLzMKKyAgICAgICAgTExW TS1Vbml0IDo6IFN1cHBvcnQvLi9TdXBwb3J0VGVzdHMvQWxsb2NhdGlvblRlc3RzL01hcHBlZE1l bW9yeVRlc3QuTXVsdGlwbGVBbGxvY0FuZFJlbGVhc2UvMworICAgICAgICBMTFZNLVVuaXQgOjog U3VwcG9ydC8uL1N1cHBvcnRUZXN0cy9BbGxvY2F0aW9uVGVzdHMvTWFwcGVkTWVtb3J5VGVzdC5T dWNjZXNzaXZlTmVhci8zCisgICAgICAgIExMVk0tVW5pdCA6OiBTdXBwb3J0Ly4vU3VwcG9ydFRl c3RzL0FsbG9jYXRpb25UZXN0cy9NYXBwZWRNZW1vcnlUZXN0LlVuYWxpZ25lZE5lYXIvMworICAg ICAgICBMTFZNLVVuaXQgOjogU3VwcG9ydC8uL1N1cHBvcnRUZXN0cy9BbGxvY2F0aW9uVGVzdHMv TWFwcGVkTWVtb3J5VGVzdC5aZXJvTmVhci8zCisgICAgICAgIExMVk0tVW5pdCA6OiBTdXBwb3J0 Ly4vU3VwcG9ydFRlc3RzL0FsbG9jYXRpb25UZXN0cy9NYXBwZWRNZW1vcnlUZXN0Llplcm9TaXpl TmVhci8zCisKK1Vwc3RyZWFtLUlzc3VlOiBodHRwczovL2J1Z3MubGx2bS5vcmcvc2hvd19idWcu Y2dpP2lkPTE0Mjc4I2MxMAorCistLS0gYS9sbHZtL2xpYi9TdXBwb3J0L1VuaXgvTWVtb3J5Lmlu YworKysrIGIvbGx2bS9saWIvU3VwcG9ydC9Vbml4L01lbW9yeS5pbmMKK0BAIC01OCw3ICs1OCw3 IEBAIHN0YXRpYyBpbnQgZ2V0UG9zaXhQcm90ZWN0aW9uRmxhZ3ModW5zaWduZWQgRmxhZ3MpIHsK KyAgICAgcmV0dXJuIFBST1RfUkVBRCB8IFBST1RfV1JJVEUgfCBQUk9UX0VYRUM7CisgICBjYXNl IGxsdm06OnN5czo6TWVtb3J5OjpNRl9FWEVDOgorICNpZiAoZGVmaW5lZChfX0ZyZWVCU0RfXykg fHwgZGVmaW5lZChfX1BPV0VSUENfXykgfHwgZGVmaW5lZCAoX19wcGNfXykgfHwgXAorLSAgICAg ZGVmaW5lZChfUE9XRVIpIHx8IGRlZmluZWQoX0FSQ0hfUFBDKSkKKysgICAgIGRlZmluZWQoX1BP V0VSKSB8fCBkZWZpbmVkKF9BUkNIX1BQQykgfHwgKGRlZmluZWQoX19saW51eF9fKSAmJiBkZWZp bmVkKF9fYWFyY2g2NF9fKSkpCisgICAgIC8vIE9uIFBvd2VyUEMsIGhhdmluZyBhbiBleGVjdXRh YmxlIHBhZ2UgdGhhdCBoYXMgbm8gcmVhZCBwZXJtaXNzaW9uCisgICAgIC8vIGNhbiBoYXZlIHVu aW50ZW5kZWQgY29uc2VxdWVuY2VzLiAgVGhlIGZ1bmN0aW9uIEludmFsaWRhdGVJbnN0cnVjdGlv bi0KKyAgICAgLy8gQ2FjaGUgdXNlcyBpbnN0cnVjdGlvbnMgZGNiZiBhbmQgaWNiaSwgYm90aCBv ZiB3aGljaCBhcmUgdHJlYXRlZCBieQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTQvdGVtcGxh dGUgYi9zcmNwa2dzL2xsdm0xNC90ZW1wbGF0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAuLjNlN2U2YWIyYzAwYgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2 bTE0L3RlbXBsYXRlCkBAIC0wLDAgKzEsNDI0IEBACisjIFRlbXBsYXRlIGZpbGUgZm9yICdsbHZt MTQnCitwa2duYW1lPWxsdm0xNAordmVyc2lvbj0xNC4wLjMKK3JldmlzaW9uPTEKK3dya3NyYz0i bGx2bS1wcm9qZWN0LSR7dmVyc2lvbn0uc3JjIgorYnVpbGRfd3Jrc3JjPWxsdm0KK2J1aWxkX3N0 eWxlPWNtYWtlCitjb25maWd1cmVfYXJncz0iCisgLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2Ug LVduby1kZXYKKyAtREVOQUJMRV9MSU5LRVJfQlVJTERfSUQ9WUVTCisgLURMTERCX1VTRV9TWVNU RU1fU0lYPVlFUworIC1ETElCQ1hYX0NYWF9BQkk9bGliY3h4YWJpCisgLURMSUJDWFhfRU5BQkxF X1NUQVRJQ19BQklfTElCUkFSWT1ZRVMKKyAtRExJQkNYWEFCSV9VU0VfTExWTV9VTldJTkRFUj1Z RVMKKyAtRExJQkNYWEFCSV9FTkFCTEVfU1RBVElDX1VOV0lOREVSPVlFUworIC1ETElCT01QX0VO QUJMRV9TSEFSRUQ9WUVTCisgLURMSUJPTVBfSU5TVEFMTF9BTElBU0VTPU5PCisgLURMTFZNX0lO Q0xVREVfRE9DUz1ZRVMKKyAtRExMVk1fQlVJTERfRE9DUz1ZRVMKKyAtRExMVk1fRU5BQkxFX1NQ SElOWD1ZRVMKKyAtRFNQSElOWF9XQVJOSU5HU19BU19FUlJPUlM9Tk8KKyAtRExMVk1fSU5TVEFM TF9VVElMUz1ZRVMKKyAtRExMVk1fQlVJTERfTExWTV9EWUxJQj1ZRVMKKyAtRExMVk1fTElOS19M TFZNX0RZTElCPVlFUworIC1ETExWTV9FTkFCTEVfUlRUST1ZRVMKKyAtRExMVk1fRU5BQkxFX0ZG ST1ZRVMKKyAtRExMVk1fQklOVVRJTFNfSU5DRElSPS91c3IvaW5jbHVkZSIKK2hvc3RtYWtlZGVw ZW5kcz0icGVybCBweXRob24zIHpsaWItZGV2ZWwgbGliZmZpLWRldmVsIHN3aWcgcHl0aG9uMy1T cGhpbngKKyBweXRob24zLXJlY29tbW9ubWFyayBweXRob24zLXNwaGlueC1hdXRvbW9kYXBpIgor bWFrZWRlcGVuZHM9InB5dGhvbjMtZGV2ZWwgemxpYi1kZXZlbCBlbGZ1dGlscy1kZXZlbCBsaWJm ZmktZGV2ZWwgbGliZWRpdC1kZXZlbAorIGxpYnhtbDItZGV2ZWwgYmludXRpbHMtZGV2ZWwgbGli YXRvbWljLWRldmVsIgorZGVwZW5kcz0ibGlibGx2bTE0Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259 Igorc2hvcnRfZGVzYz0iTG93IExldmVsIFZpcnR1YWwgTWFjaGluZSIKK21haW50YWluZXI9InE2 NiA8ZGFuaWVsQG9jdGFmb3JnZS5vcmc+IgorbGljZW5zZT0iQXBhY2hlLTIuMCIKK2hvbWVwYWdl PSJodHRwczovL3d3dy5sbHZtLm9yZyIKK2Rpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL2xs dm0vbGx2bS1wcm9qZWN0L3JlbGVhc2VzL2Rvd25sb2FkL2xsdm1vcmctJHt2ZXJzaW9ufS9sbHZt LXByb2plY3QtJHt2ZXJzaW9ufS5zcmMudGFyLnh6IgorY2hlY2tzdW09NDRkM2U3YTc4NGQ1Y2Y4 MDVlNzI4NTNiYjAzZjIxOGJkMTA1OGQ0NDhjMDNjYTg4M2RhYmJlYmM5OTIwNGUwYworbGliMzJk aXNhYmxlZD15ZXMKK3B5dGhvbl92ZXJzaW9uPTMKKworaWYgWyAiJFhCUFNfVEFSR0VUX0xJQkMi ID0gIm11c2wiIF07IHRoZW4KKwljb25maWd1cmVfYXJncys9IiAtRExJQkNYWF9IQVNfTVVTTF9M SUJDPVlFUyIKKwltYWtlZGVwZW5kcys9IiBsaWJleGVjaW5mby1kZXZlbCIKKwlkZXBlbmRzKz0i IGxpYmV4ZWNpbmZvLWRldmVsIgorZmkKKworIyAib3BlcmFuZCBvdXQgb2YgcmFuZ2UiIGFzc2Vt YmxlciBmYWlsdXJlcworY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCisJcHBjNjQqKSA7 OworCXBwYyopIGNvbmZpZ3VyZV9hcmdzKz0iIC1EQ0xBTkdfRU5BQkxFX0NMQU5HRD1PRkYiIDs7 Citlc2FjCisKK19lbmFibGVkX3Byb2plY3RzPSJjbGFuZztjbGFuZy10b29scy1leHRyYTtjb21w aWxlci1ydDtsaWJjeHg7bGliY3h4YWJpO2xpYnVud2luZDtsbGQiCisKK19sbGRiX2VuYWJsZT15 ZXMKK19saWJvbXBfZW5hYmxlPW5vCisKK2Nhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgor CXBwYzY0bGUqKSA7OworCXBwYyp8aTY4NiopIF9sbGRiX2VuYWJsZT1ubyA7OworZXNhYworCitj YXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KKwl4ODZfNjQqfGFhcmNoNjQqfHBwYzY0Kikg X2xpYm9tcF9lbmFibGU9eWVzOzsKK2VzYWMKKworc3VicGFja2FnZXM9ImNsYW5nLXRvb2xzLWV4 dHJhIgorCisjIG11c3QgZ28gYmVmb3JlIGNsYW5nCitpZiBbICIkX2xpYm9tcF9lbmFibGUiID0g InllcyIgXTsgdGhlbgorCV9lbmFibGVkX3Byb2plY3RzKz0iO29wZW5tcCIKKwlzdWJwYWNrYWdl cys9IiBsaWJvbXAgbGlib21wLWRldmVsIgorCSMgYmVjYXVzZSBvZiBjbWFrZSBub25zZW5zZSBy ZWZlcmVuY2luZyBsaWJvbXB0YXJnZXQuc28uKgorCWRlcGVuZHMrPSIgbGlib21wPj0ke3ZlcnNp b259XyR7cmV2aXNpb259IgorZmkKKworc3VicGFja2FnZXMrPSIgY2xhbmcgY2xhbmctYW5hbHl6 ZXIgbGliY2xhbmcgbGliY2xhbmctY3BwCisgbGx2bS1saWJ1bndpbmQgbGx2bS1saWJ1bndpbmQt ZGV2ZWwgbGliY3h4IGxpYmN4eC1kZXZlbAorIGxpYmN4eGFiaSBsaWJjeHhhYmktZGV2ZWwgbGli bGx2bTE0IgorCitpZiBbICIkX2xsZGJfZW5hYmxlIiA9ICJ5ZXMiIF07IHRoZW4KKwkjIFhYWCBm YWlscyB0byBjcm9zcyBjb21waWxlIGR1ZSB0byBweXRob24KKwlfZW5hYmxlZF9wcm9qZWN0cys9 IjtsbGRiIgorCXN1YnBhY2thZ2VzKz0iIGxsZGIgbGxkYi1kZXZlbCIKK2ZpCisKK3N1YnBhY2th Z2VzKz0iIGxsZCBsbGQtZGV2ZWwiCisKK2NvbmZpZ3VyZV9hcmdzKz0iIC1ETExWTV9FTkFCTEVf UFJPSkVDVFM9JHtfZW5hYmxlZF9wcm9qZWN0c30iCisKK3Bvc3RfcGF0Y2goKSB7CisJaWYgWyAi JF9sbGRiX2VuYWJsZSIgPSAieWVzIiBdOyB0aGVuCisJCWlmIFsgIiRYQlBTX1RBUkdFVF9MSUJD IiA9ICJtdXNsIiBdOyB0aGVuCisJCQl2c2VkIC1pICdzfF9fcHRyYWNlX3JlcXVlc3R8aW50fGcn IFwKKwkJCQkke3dya3NyY30vbGxkYi9zb3VyY2UvUGx1Z2lucy9Qcm9jZXNzL0xpbnV4L05hdGl2 ZVByb2Nlc3NMaW51eC5jcHAKKwkJZmkKKwkJIyBkaXNhYmxlIGRvY3MgZm9yIGxsZGIgYXMgdGhl eSBmYWlsIHRvIGdlbmVyYXRlCisJCXZzZWQgLWkgJy9hZGRfc3ViZGlyZWN0b3J5KGRvY3MpL2Qn IFwKKwkJCSR7d3Jrc3JjfS9sbGRiL0NNYWtlTGlzdHMudHh0CisJZmkKKworCSMgdXBkYXRlIGNv bmZpZy5ndWVzcyBmb3IgYmV0dGVyIHBsYXRmb3JtIGRldGVjdGlvbgorCWNwICRYQlBTX0NPTU1P TkRJUi9lbnZpcm9ubWVudC9jb25maWd1cmUvYXV0b21ha2UvY29uZmlnLmd1ZXNzIFwKKwkJJHt3 cmtzcmN9L2xsdm0vY21ha2UKKworCSMgZml4IGxpbmtlciBmYWlsdXJlcyBvbiBzb21lIGFyY2hz CisJdnNlZCAtaSAncyxjaGVja19saWJyYXJ5X2V4aXN0cyhnY2NfcyAuKixzZXQoTElCQ1hYQUJJ X0hBU19HQ0NfU19MSUIgT04pLCcgXAorCQkke3dya3NyY30vbGliY3h4YWJpL2NtYWtlL2NvbmZp Zy1peC5jbWFrZQorCXZzZWQgLWkgJ3MsY2hlY2tfbGlicmFyeV9leGlzdHMoZ2NjIC4qLHNldChM SUJDWFhBQklfSEFTX0dDQ19MSUIgT04pLCcgXAorCQkke3dya3NyY30vbGliY3h4YWJpL2NtYWtl L2NvbmZpZy1peC5jbWFrZQorCisJIyBuZWVkIGxpYnNzcF9ub25zaGFyZWQgb24gc29tZSBtdXNs IHBsYXRmb3JtcyAoYmVjYXVzZSBvZiBub2RlZmF1bHRsaWJzKQorCWNhc2UgIiRYQlBTX1RBUkdF VF9NQUNISU5FIiBpbgorCQlwcGM2NCopIDs7CisJCXBwYyotbXVzbHxpNjg2LW11c2x8bWlwcyot bXVzbCkKKwkJCXZzZWQgLWkgJ3MsXiMgU2V0dXAgZmxhZ3MuJCxhZGRfbGlicmFyeV9mbGFncyhz c3Bfbm9uc2hhcmVkKSwnIFwKKwkJCQkke3dya3NyY30vbGlidW53aW5kL3NyYy9DTWFrZUxpc3Rz LnR4dAorCQkJdnNlZCAtaSAncyxeIyBTZXR1cCBmbGFncy4kLGFkZF9saWJyYXJ5X2ZsYWdzKHNz cF9ub25zaGFyZWQpLCcgXAorCQkJCSR7d3Jrc3JjfS9saWJjeHhhYmkvc3JjL0NNYWtlTGlzdHMu dHh0CisJCQl2c2VkIC1pICdzLCNzc3AsLCcgJHt3cmtzcmN9L2xpYmN4eC9DTWFrZUxpc3RzLnR4 dAorCQkJOzsKKwllc2FjCisKKwljYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KKwkJeDg2 XzY0LW11c2wpICMgc29tZSBzYW5pdGl6ZXIgY3VycmVudGx5IG9ubHkgb24geDg2XzY0IHN0dWZm IG5lZWRzIGJhY2t0cmFjZQorCQkJdnNlZCAtaSAncywjIFNldCBjb21tb24gbGluayBmbGFncy4s bGlzdChBUFBFTkQgU0FOSVRJWkVSX0NPTU1PTl9MSU5LX0xJQlMgZXhlY2luZm8pLCcgXAorCQkJ CSR7d3Jrc3JjfS9jb21waWxlci1ydC9DTWFrZUxpc3RzLnR4dAorCQkJOzsKKwkJYXJtKi1tdXNs fGk2ODYtbXVzbCkgIyBzYW5pdGl6ZXIgY29kZSBpcyBicm9rZW4gc2luY2UgaXQgZHVwbGljYXRl cyBzb21lIGxpYmMgYml0cworCQkJdnNlZCAtaSAncy9zZXQoQ09NUElMRVJfUlRfSEFTX1NBTklU SVpFUl9DT01NT04gVFJVRSkvc2V0KENPTVBJTEVSX1JUX0hBU19TQU5JVElaRVJfQ09NTU9OIEZB TFNFKS8nIFwKKwkJCQkke3dya3NyY30vY29tcGlsZXItcnQvY21ha2UvY29uZmlnLWl4LmNtYWtl CisJCQk7OworCWVzYWMKK30KKworcHJlX2NvbmZpZ3VyZSgpIHsKKwlsb2NhbCB0cmlwbGV0CisK KwkjIFZhc3RseSByZWR1Y2Ugc2l6ZSBvZiBkZWJ1Z2dpbmcgc3ltYm9sczoKKwlDRkxBR1M9JHtD RkxBR1MvIC1nLyAtZzF9CisJQ1hYRkxBR1M9JHtDWFhGTEFHUy8gLWcvIC1nMX0KKworCSMgc2lu Y2UgZ2NjOSwgdGhlIGJ1aWxkIGxpa2VzIHRvIGJsb3cgdXAgZm9yIHBwYzMyIGFwcGFyZW50bHkg YmVjYXVzZQorCSMgb2YgY2xhbmcgYmVpbmcgdG9vIGxhcmdlIGZvciBhIDI0LWJpdCByZWxhdGl2 ZSBjYWxsIHRvIHRoZSBQTFQsIHNvCisJIyBvcHRpbWl6ZSBmb3Igc2l6ZSBpbnN0ZWFkCisJY2Fz ZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCisJCXBwYzY0KikgOzsKKwkJbWlwcyotbXVzbHxw cGMqKSBjb25maWd1cmVfYXJncys9IiAtRFZPSURfQ1hYX09QVF9GTEFHUz0tT3MiIDs7CisJZXNh YworCisJaWYgWyAiJENST1NTX0JVSUxEIiBdOyB0aGVuCisJCW1zZ19ub3JtYWwgIkJ1aWxkaW5n IGhvc3QgdGJsZ2VuXG4iCisJCW1rZGlyIC1wIGJ1aWxkL0hPU1QKKwkJY2QgYnVpbGQvSE9TVAor CQlDQz0iJEJVSUxEX0NDIiBDWFg9IiRCVUlMRF9DWFgiIENGTEFHUz0iJEJVSUxEX0NGTEFHUyIg XAorCQkJQ1hYRkxBR1M9IiRCVUlMRF9DWFhGTEFHUyIgTERGTEFHUz0iJEJVSUxEX0xERkxBR1Mi IFwKKwkJCWNtYWtlIC4uLy4uIC1EQ01BS0VfQlVJTERfVFlQRT1SZWxlYXNlIFwKKwkJCS1ETExW TV9FTkFCTEVfUFJPSkVDVFM9JHtfZW5hYmxlZF9wcm9qZWN0c30KKwkJbWFrZSAke21ha2Vqb2Jz fSAtQyB1dGlscy9UYWJsZUdlbgorCQltYWtlICR7bWFrZWpvYnN9IC1DIHRvb2xzL2NsYW5nL3V0 aWxzL1RhYmxlR2VuCisJCVsgIiRfbGxkYl9lbmFibGUiID0gInllcyIgXSAmJiBtYWtlICR7bWFr ZWpvYnN9IC1DIHRvb2xzL2xsZGIvdXRpbHMvVGFibGVHZW4KKwkJY29uZmlndXJlX2FyZ3MrPSIg LURMTFZNX1RBQkxFR0VOPSR7d3Jrc3JjfS9sbHZtL2J1aWxkL0hPU1QvYmluL2xsdm0tdGJsZ2Vu IgorCQljb25maWd1cmVfYXJncys9IiAtRENMQU5HX1RBQkxFR0VOPSR7d3Jrc3JjfS9sbHZtL2J1 aWxkL0hPU1QvYmluL2NsYW5nLXRibGdlbiIKKwkJWyAiJF9sbGRiX2VuYWJsZSIgPSAieWVzIiBd ICYmIGNvbmZpZ3VyZV9hcmdzKz0iIC1ETExEQl9UQUJMRUdFTj0ke3dya3NyY30vbGx2bS9idWls ZC9IT1NUL2Jpbi9sbGRiLXRibGdlbiIKKwkJY2QgLi4vLi4KKwlmaQorCisJY2FzZSAiJFhCUFNf VEFSR0VUX01BQ0hJTkUiIGluCisJCWk2ODYqKSBfYXJjaD0iWDg2Ijs7CisJCXg4Nl82NCopIF9h cmNoPSJYODYiOzsKKwkJYXJtdjUqKSBfYXJjaD0iQXJtdjV0ZSI7OworCQlhcm12NiopIF9hcmNo PSJBcm12NiI7OworCQlhcm12NyopIF9hcmNoPSJBcm12NyI7OworCQlhYXJjaDY0KikgX2FyY2g9 IkFBcmNoNjQiOzsKKwkJbWlwcyopIF9hcmNoPSJNaXBzIjs7CisJCXBwYyopIF9hcmNoPSJQb3dl clBDIjs7CisJCXJpc2N2NjQqKSBfYXJjaD0iUklTQ1Y2NCI7OworCWVzYWMKKworCXRyaXBsZXQ9 JHtYQlBTX0NST1NTX1RSSVBMRVQ6LSRYQlBTX1RSSVBMRVR9CisKKwljb25maWd1cmVfYXJncys9 IiAtRExMVk1fVEFSR0VUX0FSQ0g9JHtfYXJjaH0iCisJY29uZmlndXJlX2FyZ3MrPSIgLURMTFZN X0hPU1RfVFJJUExFPSR7dHJpcGxldH0iCisJY29uZmlndXJlX2FyZ3MrPSIgLURMTFZNX0RFRkFV TFRfVEFSR0VUX1RSSVBMRT0ke3RyaXBsZXR9IgorfQorCitkb19pbnN0YWxsKCkgeworCWNkIGJ1 aWxkCisJY21ha2UgLURDTUFLRV9JTlNUQUxMX1BSRUZJWD0ke0RFU1RESVJ9L3VzciAtUCBjbWFr ZV9pbnN0YWxsLmNtYWtlCisKKwkjIFJlcXVpcmVkIGZvciBtdWx0aWxpYi4KKwlpZiBbICIkWEJQ U19UQVJHRVRfTUFDSElORSIgPSAieDg2XzY0IiBdOyB0aGVuCisJCWZvciBfaGVhZGVyIGluIGxs dm0tY29uZmlnOyBkbworCQkJbXYgJHtERVNURElSfS91c3IvaW5jbHVkZS9sbHZtL0NvbmZpZy8k e19oZWFkZXJ9eywtNjR9LmgKKwkJCXZpbnN0YWxsICR7RklMRVNESVJ9L2xsdm0tQ29uZmlnLSR7 X2hlYWRlcn0uaCA2NDQgXAorCQkJCXVzci9pbmNsdWRlL2xsdm0vQ29uZmlnICR7X2hlYWRlcn0u aAorCQlkb25lCisJZmkKKworCSMgUmVtb3ZlIGxsdm0tY29uZmlnLWhvc3QgaW4gY3Jvc3MgYnVp bGRzLgorCWlmIFsgIiRDUk9TU19CVUlMRCIgXTsgdGhlbgorCQlybSAtZiAke0RFU1RESVJ9L3Vz ci9iaW4vbGx2bS1jb25maWctaG9zdAorCWZpCisKKwkjIEluc3RhbGwgbGliY3h4YWJpIGhlYWRl cnMKKwl2aW5zdGFsbCAke3dya3NyY30vbGliY3h4YWJpL2luY2x1ZGUvX19jeHhhYmlfY29uZmln LmggNjQ0IHVzci9pbmNsdWRlCisJdmluc3RhbGwgJHt3cmtzcmN9L2xpYmN4eGFiaS9pbmNsdWRl L2N4eGFiaS5oIDY0NCB1c3IvaW5jbHVkZQorCisJIyBJbnN0YWxsIGxpYnVud2luZCBoZWFkZXJz CisJdmluc3RhbGwgJHt3cmtzcmN9L2xpYnVud2luZC9pbmNsdWRlL19fbGlidW53aW5kX2NvbmZp Zy5oIDY0NCB1c3IvaW5jbHVkZQorCXZpbnN0YWxsICR7d3Jrc3JjfS9saWJ1bndpbmQvaW5jbHVk ZS9saWJ1bndpbmQuaCA2NDQgdXNyL2luY2x1ZGUKKwl2aW5zdGFsbCAke3dya3NyY30vbGlidW53 aW5kL2luY2x1ZGUvdW53aW5kLmggNjQ0IHVzci9pbmNsdWRlCisJdmluc3RhbGwgJHt3cmtzcmN9 L2xpYnVud2luZC9pbmNsdWRlL21hY2gtby9jb21wYWN0X3Vud2luZF9lbmNvZGluZy5oIFwKKwkJ NjQ0IHVzci9pbmNsdWRlL21hY2gtbworfQorCitjbGFuZy1hbmFseXplcl9wYWNrYWdlKCkgewor CXB5Y29tcGlsZV9kaXJzPSJ1c3Ivc2hhcmUvc2Nhbi12aWV3IgorCWRlcGVuZHM9ImNsYW5nLSR7 dmVyc2lvbn1fJHtyZXZpc2lvbn0gcHl0aG9uMyBwZXJsIgorCXNob3J0X2Rlc2MrPSIgLSBBIHNv dXJjZSBjb2RlIGFuYWx5c2lzIGZyYW1ld29yayIKKwlob21lcGFnZT0iaHR0cHM6Ly9jbGFuZy1h bmFseXplci5sbHZtLm9yZy8iCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlIHVzci9zaGFyZS9t YW4vbWFuMS9zY2FuLWJ1aWxkLjEKKwkJdm1vdmUgIi91c3IvYmluL3NjYW4tKiIKKwkJdm1vdmUg Ii91c3Ivc2hhcmUvc2Nhbi0qIgorCQl2bW92ZSAiL3Vzci9saWJleGVjLyphbmFseXplciIKKwl9 Cit9CisKK2NsYW5nLXRvb2xzLWV4dHJhX3BhY2thZ2UoKSB7CisJbGliMzJkaXNhYmxlZD15ZXMK KwlkZXBlbmRzPSJjbGFuZy0ke3ZlcnNpb259XyR7cmV2aXNpb259IHB5dGhvbjMiCisJc2hvcnRf ZGVzYys9IiAtIEV4dHJhIENsYW5nIHRvb2xzIgorCWhvbWVwYWdlPSJodHRwczovL2NsYW5nLmxs dm0ub3JnL2V4dHJhLyIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgdXNyL2luY2x1ZGUvY2xh bmctdGlkeQorCQl2bW92ZSB1c3IvYmluL2NsYW5nLWFwcGx5LXJlcGxhY2VtZW50cworCQl2bW92 ZSB1c3IvYmluL2NsYW5nLXF1ZXJ5CisJCXZtb3ZlIHVzci9iaW4vY2xhbmctcmVuYW1lCisJCXZt b3ZlIHVzci9iaW4vY2xhbmctdGlkeQorCQl2bW92ZSB1c3IvYmluL2RpYWd0b29sCisJCXZtb3Zl IHVzci9iaW4vZmluZC1hbGwtc3ltYm9scworCQl2bW92ZSB1c3IvYmluL2htYXB0b29sCisJCXZt b3ZlIHVzci9iaW4vbW9kdWxhcml6ZQorCQl2bW92ZSB1c3IvYmluL3BwLXRyYWNlCisJCXZtb3Zl IHVzci9iaW4vc2FuY292CisJCXZtb3ZlICJ1c3IvbGliL2xpYmNsYW5nQXBwbHlSZXBsYWNlbWVu dHMqIgorCQl2bW92ZSAidXNyL2xpYi9saWJjbGFuZ1F1ZXJ5KiIKKwkJdm1vdmUgInVzci9saWIv bGliY2xhbmdUaWR5KiIKKwkJdm1vdmUgInVzci9zaGFyZS9jbGFuZy8qdGlkeSoiCisJCXZtb3Zl IHVzci9zaGFyZS9kb2MvY2xhbmctdG9vbHMKKwkJdm1vdmUgdXNyL3NoYXJlL21hbi9tYW4xL2V4 dHJhY2xhbmd0b29scy4xCisJCXZtb3ZlIHVzci9zaGFyZS9tYW4vbWFuMS9kaWFndG9vbC4xCisJ fQorfQorCitjbGFuZ19wYWNrYWdlKCkgeworCWxpYjMyZGlzYWJsZWQ9eWVzCisJZGVwZW5kcz0i bGlic3RkYysrLWRldmVsIGxpYmdjYy1kZXZlbCAgYmludXRpbHMgJHtYQlBTX1RBUkdFVF9MSUJD fS1kZXZlbAorCSBsaWJjbGFuZy0ke3ZlcnNpb259XyR7cmV2aXNpb259IgorCXNob3J0X2Rlc2Mr PSIgLSBDIGxhbmd1YWdlIGZhbWlseSBmcm9udGVuZCIKKwlob21lcGFnZT0iaHR0cHM6Ly9jbGFu Zy5sbHZtLm9yZy8iCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlIHVzci9pbmNsdWRlL2NsYW5n CisJCXZtb3ZlIHVzci9pbmNsdWRlL2NsYW5nLWMKKwkJdm1vdmUgInVzci9iaW4vKmNsYW5nKiIK KwkJdm1vdmUgdXNyL2Jpbi9jLWluZGV4LXRlc3QKKwkJdm1vdmUgdXNyL2xpYi9jbGFuZworCQl2 bW92ZSB1c3IvbGliL2NtYWtlL2NsYW5nCisJCXZtb3ZlICJ1c3IvbGliL2xpYmNsYW5nKi5hIgor CQl2bW92ZSAidXNyL2xpYi9saWJjbGFuZyouc28iCisJCXZtb3ZlIHVzci9zaGFyZS9jbGFuZwor CQl2bW92ZSB1c3Ivc2hhcmUvZG9jL2NsYW5nCisJCXZtb3ZlIHVzci9zaGFyZS9tYW4vbWFuMS9j bGFuZy4xCisJfQorfQorCitsaWJjbGFuZ19wYWNrYWdlKCkgeworCXNob3J0X2Rlc2MrPSIgLSBD IGZyb250ZW5kIHJ1bnRpbWUgbGlicmFyeSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVz ci9saWIvbGliY2xhbmcuc28uKiIKKwl9Cit9CisKK2xpYmNsYW5nLWNwcF9wYWNrYWdlKCkgewor CXNob3J0X2Rlc2MrPSIgLSBDIGZyb250ZW5kIHJ1bnRpbWUgbGlicmFyeSAoQysrIGludGVyZmFj ZSkiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYmNsYW5nLWNwcC5zby4q IgorCX0KK30KKworbGxkX3BhY2thZ2UoKSB7CisJbGliMzJkaXNhYmxlZD15ZXMKKwlzaG9ydF9k ZXNjKz0iIC0gbGlua2VyIgorCWhvbWVwYWdlPSJodHRwczovL2xsZC5sbHZtLm9yZyIKKwlwa2df aW5zdGFsbCgpIHsKKwkJdm1vdmUgdXNyL2Jpbi9sbGQqCisJCXZtb3ZlIHVzci9iaW4vd2FzbS1s ZAorCQl2bW92ZSB1c3IvYmluL2xkLmxsZCoKKwkJdm1vdmUgdXNyL2Jpbi9sZDY0LmxsZCoKKwkJ dm1vdmUgdXNyL3NoYXJlL2RvYy9sbGQKKwl9Cit9CisKK2xsZC1kZXZlbF9wYWNrYWdlKCkgewor CWxpYjMyZGlzYWJsZWQ9eWVzCisJc2hvcnRfZGVzYys9IiAtIGxpbmtlciAtIGRldmVsb3BtZW50 IGZpbGVzIgorCWhvbWVwYWdlPSJodHRwczovL2xsZC5sbHZtLm9yZyIKKwlkZXBlbmRzPSJsbGQ+ PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlIHVzci9p bmNsdWRlL2xsZAorCQl2bW92ZSB1c3IvbGliL2NtYWtlL2xsZAorCQl2bW92ZSAidXNyL2xpYi9s aWJsbGQqYSIKKwl9Cit9CisKK2xsZGJfcGFja2FnZSgpIHsKKwlsaWIzMmRpc2FibGVkPXllcwor CWRlcGVuZHMrPSIgcHl0aG9uMy1zaXgiCisJc2hvcnRfZGVzYys9IiAtIExMREIgZGVidWdnZXIi CisJaG9tZXBhZ2U9Imh0dHBzOi8vbGxkYi5sbHZtLm9yZy8iCisJcGtnX2luc3RhbGwoKSB7CisJ CXZtb3ZlIHVzci9iaW4vKmxsZGIqCisJCXZtb3ZlIHVzci9saWIvbGlibGxkYipzby4qCisJCXZt b3ZlIC91c3IvbGliL3B5dGhvbioKKwl9Cit9CisKK2xsZGItZGV2ZWxfcGFja2FnZSgpIHsKKwls aWIzMmRpc2FibGVkPXllcworCWRlcGVuZHM9ImxsZGI+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0i CisJc2hvcnRfZGVzYys9IiAtIExMREIgZGVidWdnZXIgLSBkZXZlbG9wbWVudCBmaWxlcyIKKwlw a2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgdXNyL2luY2x1ZGUvbGxkYgorCQl2bW92ZSAidXNyL2xp Yi9saWJsbGRiKi5zbyIKKwl9Cit9CisKK2xsdm0tbGlidW53aW5kX3BhY2thZ2UoKSB7CisJc2hv cnRfZGVzYys9IiAtIGxpYnVud2luZCIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9s aWIvbGlidW53aW5kLnNvLioiCisJfQorfQorCitsbHZtLWxpYnVud2luZC1kZXZlbF9wYWNrYWdl KCkgeworCXNob3J0X2Rlc2MrPSIgLSBsaWJ1bndpbmQgLSBkZXZlbG9wbWVudCBmaWxlcyIKKwlk ZXBlbmRzPSJsbHZtLWxpYnVud2luZD49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKKwljb25mbGlj dHM9ImxpYnVud2luZC1kZXZlbD49MCIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgdXNyL2xp Yi9saWJ1bndpbmQuc28KKwkJdm1vdmUgdXNyL2xpYi9saWJ1bndpbmQuYQorCQl2bW92ZSAidXNy L2luY2x1ZGUvKnVud2luZCoiCisJCXZtb3ZlIHVzci9pbmNsdWRlL21hY2gtbworCQl2bW92ZSB1 c3Ivc2hhcmUvZG9jL2xpYnVud2luZAorCX0KK30KKworbGliY3h4YWJpX3BhY2thZ2UoKSB7CisJ c2hvcnRfZGVzYys9IiAtIGxvdyBsZXZlbCBzdXBwb3J0IGZvciBsaWJjKysiCisJcGtnX2luc3Rh bGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYmMrK2FiaS5zby4qIgorCX0KK30KKworbGliY3h4 YWJpLWRldmVsX3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYys9IiAtIGxvdyBsZXZlbCBzdXBwb3J0 IGZvciBsaWJjKysgLSBkZXZlbG9wbWVudCBmaWxlcyIKKwlkZXBlbmRzPSJsaWJjeHhhYmk+PSR7 dmVyc2lvbn1fJHtyZXZpc2lvbn0iCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlIHVzci9saWIv bGliYysrYWJpLnNvCisJCXZtb3ZlIHVzci9saWIvbGliYysrYWJpLmEKKwkJdm1vdmUgInVzci9p bmNsdWRlLypjeHhhYmkqIgorCX0KK30KKworbGliY3h4X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVz Yys9IiAtIEMrKyBzdGFuZGFyZCBsaWJyYXJ5IgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSAi dXNyL2xpYi9saWJjKysuc28uKiIKKwl9Cit9CisKK2xpYmN4eC1kZXZlbF9wYWNrYWdlKCkgewor CXNob3J0X2Rlc2MrPSIgLSBDKysgc3RhbmRhcmQgbGlicmFyeSAtIGRldmVsb3BtZW50IGZpbGVz IgorCWRlcGVuZHM9ImxpYmN4eD49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKKwlwa2dfaW5zdGFs bCgpIHsKKwkJdm1vdmUgdXNyL2xpYi9saWJjKysuc28KKwkJdm1vdmUgdXNyL2xpYi9saWJjKysu YQorCQl2bW92ZSB1c3IvbGliL2xpYmMrK2V4cGVyaW1lbnRhbC5hCisJCXZtb3ZlIHVzci9pbmNs dWRlL2MrKworCQl2bW92ZSB1c3Ivc2hhcmUvZG9jL2xpYmN4eAorCX0KK30KKworbGlib21wX3Bh Y2thZ2UoKSB7CisJc2hvcnRfZGVzYys9IiAtIENsYW5nIE9wZW5NUCBzdXBwb3J0IGxpYnJhcnki CisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlIHVzci9saWIvbGlib21wLnNvCisJCXZtb3ZlICJ1 c3IvbGliL2xpYm9tcHRhcmdldC5ydGwuKi5zbyIKKwkJdm1vdmUgdXNyL2xpYi9saWJhcmNoZXIu c28KKwkJdm1vdmUgInVzci9saWIvbGlib21wKi5zby4qIgorCX0KK30KKworbGlib21wLWRldmVs X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYys9IiAtIENsYW5nIE9wZW5NUCBzdXBwb3J0IGxpYnJh cnkgLSBkZXZlbG9wbWVudCBmaWxlcyIKKwlkZXBlbmRzPSJsaWJvbXA+PSR7dmVyc2lvbn1fJHty ZXZpc2lvbn0iCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYm9tcCouc28i CisJCXZtb3ZlICJ1c3IvbGliL2xpYmFyY2hlcioiCisJCXZtb3ZlICJ1c3IvaW5jbHVkZS9vbXAq LmgiCisJCXZtb3ZlICJ1c3IvbGliL2NsYW5nLyR7dmVyc2lvbn0vaW5jbHVkZS9vbXAqLmgiCisJ CXZtb3ZlIHVzci9zaGFyZS9tYW4vbWFuMS9sbHZtb3Blbm1wLjEKKwkJdm1vdmUgdXNyL3NoYXJl L2RvYy9vcGVubXAKKwl9Cit9CisKK2xpYmxsdm0xNF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2Mr PSIgLSBydW50aW1lIGxpYnJhcnkiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGli L2xpYkxMVk0tKi5zbyoiCisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTQvdXBkYXRl IGIvc3JjcGtncy9sbHZtMTQvdXBkYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uZTk1Y2YyNmIzNTg2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9sbHZtMTQv dXBkYXRlCkBAIC0wLDAgKzEsMyBAQAorc2l0ZT0iaHR0cHM6Ly9naXRodWIuY29tL2xsdm0vbGx2 bS1wcm9qZWN0L3JlbGVhc2VzIgorcGF0dGVybj0ibGx2bW9yZy1cSyhcZCsuKXsyfVxkKygtcmNc ZCspPyIKK2lnbm9yZT0iKi1yYyoiCgpGcm9tIDg0MzhkNjJlODE4ZjQxZTJjMjY2M2JiNmVkMGUz MGQ3MzAxMThjYWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHByZXogPHByZXpAbmF0 aW9uYWwuc2hpdHBvc3RpbmcuYWdlbmN5PgpEYXRlOiBNb24sIDIgTWF5IDIwMjIgMjE6MTY6MDcg KzAyMDAKU3ViamVjdDogW1BBVENIIDAyLzI5XSBsbHZtOiB1cGRhdGUgdG8gMTQuMC4zLgoKLS0t CiBzcmNwa2dzL2xsdm0vdGVtcGxhdGUgfCA2ICsrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDMgaW5z ZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0vdGVt cGxhdGUgYi9zcmNwa2dzL2xsdm0vdGVtcGxhdGUKaW5kZXggYTkyZGI2Zjk0ZjlmLi5kMjI2YzYx YzczNGUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbGx2bS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2xs dm0vdGVtcGxhdGUKQEAgLTEsMTAgKzEsMTAgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2xsdm0n CiBwa2duYW1lPWxsdm0KLXZlcnNpb249MTIuMC4wCit2ZXJzaW9uPTE0LjAuMwogcmV2aXNpb249 MQogYnVpbGRfc3R5bGU9bWV0YQotZGVwZW5kcz0ibGx2bTEyIgotcmVwbGFjZXM9Imxsdm0xMT49 MCBsbHZtMTA+PTAgbGx2bTk+PTAgbGx2bTg+PTAgbGx2bTc+PTAgbGx2bTYuMD49MCBsbHZtMy45 Pj0wIgorZGVwZW5kcz0ibGx2bTE0IgorcmVwbGFjZXM9Imxsdm0xMz49MCBsbHZtMTI+PTAgbGx2 bTExPj0wIGxsdm0xMD49MCBsbHZtOT49MCBsbHZtOD49MCBsbHZtNz49MCBsbHZtNi4wPj0wIGxs dm0zLjk+PTAiCiBzaG9ydF9kZXNjPSJMTFZNIG1ldGEgcGFja2FnZSIKIG1haW50YWluZXI9IkVu bm8gQm9sYW5kIDxnb3R0b3hAdm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJQdWJsaWMgRG9tYWlu IgoKRnJvbSA5MmVkYWExNzU5YjdiNTJlOThmZDZhM2FkZjVhNzYxMzM0ODQ5MzA0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBwcmV6IDxwcmV6QG5hdGlvbmFsLnNoaXRwb3N0aW5nLmFn ZW5jeT4KRGF0ZTogTW9uLCAyIE1heSAyMDIyIDIxOjM2OjMyICswMjAwClN1YmplY3Q6IFtQQVRD SCAwMy8yOV0gbGx2bTEyOiBkcm9wIG5vbi1sbHZtIGNvbXBvbmVudHMKCi0tLQogLi4uY2xhbmct MDAxLWZpeC11bndpbmQtY2hhaW4taW5jbHVzaW9uLnBhdGNoIHwgIDQ0IC0tLQogLi4uL3BhdGNo ZXMvY2xhbmctMDAyLWFkZC1tdXNsLXRyaXBsZXMucGF0Y2ggIHwgMTEwIC0tLS0tLS0KIC4uLi9j bGFuZy0wMDMtcHBjNjQtZHluYW1pYy1saW5rZXItcGF0aC5wYXRjaCB8ICAxMyAtCiAuLi4vcGF0 Y2hlcy9jbGFuZy0wMDQtcHBjNjQtbXVzbC1lbGZ2Mi5wYXRjaCAgfCAgNDggLS0tCiAuLi4vY29t cGlsZXItcnQtYWFyY2g2NC11Y29udGV4dC5wYXRjaCAgICAgICAgfCAgMTEgLQogLi4uL2NvbXBp bGVyLXJ0LXNhbml0aXplci1wcGM2NC1tdXNsLnBhdGNoICAgIHwgIDM1IC0tCiAuLi4vbGx2bTEy L3BhdGNoZXMvY29tcGlsZXItcnQtc2l6ZV90LnBhdGNoICAgfCAgMTAgLQogLi4uL3BhdGNoZXMv Y29tcGlsZXItcnQteHJheS1wcGM2NC1tdXNsLnBhdGNoIHwgIDYyIC0tLS0KIHNyY3BrZ3MvbGx2 bTEyL3BhdGNoZXMvbGliY3h4LW11c2wucGF0Y2ggICAgICB8ICAyNiAtLQogc3JjcGtncy9sbHZt MTIvcGF0Y2hlcy9saWJjeHgtcHBjLnBhdGNoICAgICAgIHwgIDIyIC0tCiAuLi4vbGx2bTEyL3Bh dGNoZXMvbGliY3h4LXNzcC1ub25zaGFyZWQucGF0Y2ggfCAgMTEgLQogc3JjcGtncy9sbHZtMTIv cGF0Y2hlcy9saWJjeHhhYmktZGwucGF0Y2ggICAgIHwgIDI1IC0tCiBzcmNwa2dzL2xsdm0xMi9w YXRjaGVzL2xpYnVud2luZC1wcGMzMi5wYXRjaCAgfCAgNjMgLS0tLQogc3JjcGtncy9sbHZtMTIv cGF0Y2hlcy9sbGRiLW11c2wucGF0Y2ggICAgICAgIHwgIDMxIC0tCiAuLi4vbGx2bTEyL3BhdGNo ZXMvcHBjMzItY29tcGlsZXItcnQucGF0Y2ggICAgfCAgMjEgLS0KIHNyY3BrZ3MvbGx2bTEyL3Rl bXBsYXRlICAgICAgICAgICAgICAgICAgICAgICB8IDMwMSArLS0tLS0tLS0tLS0tLS0tLS0KIDE2 IGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCA4MzIgZGVsZXRpb25zKC0pCiBkZWxldGUg bW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jbGFuZy0wMDEtZml4LXVud2luZC1j aGFpbi1pbmNsdXNpb24ucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9w YXRjaGVzL2NsYW5nLTAwMi1hZGQtbXVzbC10cmlwbGVzLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2 NDQgc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jbGFuZy0wMDMtcHBjNjQtZHluYW1pYy1saW5rZXIt cGF0aC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY2xh bmctMDA0LXBwYzY0LW11c2wtZWxmdjIucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dz L2xsdm0xMi9wYXRjaGVzL2NvbXBpbGVyLXJ0LWFhcmNoNjQtdWNvbnRleHQucGF0Y2gKIGRlbGV0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2NvbXBpbGVyLXJ0LXNhbml0aXpl ci1wcGM2NC1tdXNsLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTIvcGF0 Y2hlcy9jb21waWxlci1ydC1zaXplX3QucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dz L2xsdm0xMi9wYXRjaGVzL2NvbXBpbGVyLXJ0LXhyYXktcHBjNjQtbXVzbC5wYXRjaAogZGVsZXRl IG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGliY3h4LW11c2wucGF0Y2gKIGRl bGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xpYmN4eC1wcGMucGF0Y2gK IGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xpYmN4eC1zc3Atbm9u c2hhcmVkLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9s aWJjeHhhYmktZGwucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRj aGVzL2xpYnVud2luZC1wcGMzMi5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2 bTEyL3BhdGNoZXMvbGxkYi1tdXNsLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9s bHZtMTIvcGF0Y2hlcy9wcGMzMi1jb21waWxlci1ydC5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvbGx2bTEyL3BhdGNoZXMvY2xhbmctMDAxLWZpeC11bndpbmQtY2hhaW4taW5jbHVzaW9uLnBh dGNoIGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jbGFuZy0wMDEtZml4LXVud2luZC1jaGFpbi1p bmNsdXNpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0ZWFhNzc4M2U3 YS4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY2xhbmctMDAxLWZp eC11bndpbmQtY2hhaW4taW5jbHVzaW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAs MCBAQAotRnJvbSAzNTI5NzQxNjlmMGQyYjVkYTNkNTMyMWY1ODhmNWUzYjU5NDEzMzBlIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmVhIEJyYW5jYWxlb25pIDxtaXdheGVAZ21h aWwuY29tPgotRGF0ZTogVHVlLCA4IFNlcCAyMDE1IDIyOjE0OjU3ICswMjAwCi1TdWJqZWN0OiBb UEFUQ0ggMi83XSBmaXggdW53aW5kIGNoYWluIGluY2x1c2lvbgotCi0tLS0KLSBsaWIvSGVhZGVy cy91bndpbmQuaCB8IDkgKysrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygr KSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYi9IZWFkZXJzL3Vud2luZC5oIGIv bGliL0hlYWRlcnMvdW53aW5kLmgKLWluZGV4IDMwM2Q3OTIuLjQ0ZTEwY2MgMTAwNjQ0Ci0tLS0g YS9jbGFuZy9saWIvSGVhZGVycy91bndpbmQuaAotKysrIGIvY2xhbmcvbGliL0hlYWRlcnMvdW53 aW5kLmgKLUBAIC05LDkgKzksNiBAQAotIAotIC8qIFNlZSAiRGF0YSBEZWZpbml0aW9ucyBmb3Ig bGliZ2NjX3MiIGluIHRoZSBMaW51eCBTdGFuZGFyZCBCYXNlLiovCi0gCi0tI2lmbmRlZiBfX0NM QU5HX1VOV0lORF9ICi0tI2RlZmluZSBfX0NMQU5HX1VOV0lORF9ICi0tCi0gI2lmIGRlZmluZWQo X19BUFBMRV9fKSAmJiBfX2hhc19pbmNsdWRlX25leHQoPHVud2luZC5oPikKLSAvKiBEYXJ3aW4g KGZyb20gMTEueCBvbikgcHJvdmlkZSBhbiB1bndpbmQuaC4gSWYgdGhhdCdzIGF2YWlsYWJsZSwK LSAgKiB1c2UgaXQuIGxpYnVud2luZCB3cmFwcyBzb21lIG9mIGl0cyBkZWZpbml0aW9ucyBpbiAj aWZkZWYgX0dOVV9TT1VSQ0UsCi1AQCAtMzksNiArMzYsOSBAQAotICMgZW5kaWYKLSAjZWxzZQot IAotKyNpZm5kZWYgX19DTEFOR19VTldJTkRfSAotKyNkZWZpbmUgX19DTEFOR19VTldJTkRfSAot KwotICNpbmNsdWRlIDxzdGRpbnQuaD4KLSAKLSAjaWZkZWYgX19jcGx1c3BsdXMKLUBAIC0zMjIs NiArMzIyLDcgQEAgX1Vud2luZF9QdHIgX1Vud2luZF9HZXRUZXh0UmVsQmFzZShzdHJ1Y3QgX1Vu d2luZF9Db250ZXh0ICopOwotIH0KLSAjZW5kaWYKLSAKLSsjZW5kaWYgLyogX19DTEFOR19VTldJ TkRfSCAqLwotKwotICNlbmRpZgotIAotLSNlbmRpZiAvKiBfX0NMQU5HX1VOV0lORF9IICovCi0t LSAKLTIuNS4xCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2NsYW5nLTAwMi1h ZGQtbXVzbC10cmlwbGVzLnBhdGNoIGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jbGFuZy0wMDIt YWRkLW11c2wtdHJpcGxlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjU2 ODhkNDBkYmMyLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jbGFu Zy0wMDItYWRkLW11c2wtdHJpcGxlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCww IEBACi0tLS0gYS9jbGFuZy9saWIvRHJpdmVyL1Rvb2xDaGFpbnMvR251LmNwcAotKysrIGIvY2xh bmcvbGliL0RyaXZlci9Ub29sQ2hhaW5zL0dudS5jcHAKLUBAIC0yMDg2LDcgKzIwODYsOCBAQCB2 b2lkIEdlbmVyaWNfR0NDOjpHQ0NJbnN0YWxsYXRpb25EZXRlY3Rvcjo6QWRkRGVmYXVsdEdDQ1By ZWZpeGVzKAotICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IEFSTUhGVHJpcGxlc1tdID0geyJh cm0tbGludXgtZ251ZWFiaWhmIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiYXJtdjdobC1yZWRoYXQtbGludXgtZ251ZWFiaSIsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFybXY2aGwtc3VzZS1saW51eC1nbnVl YWJpIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJt djdobC1zdXNlLWxpbnV4LWdudWVhYmkifTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiYXJtdjdobC1zdXNlLWxpbnV4LWdudWVhYmkiLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcm12N2wtbGludXgtZ251ZWFi aWhmIn07Ci0gICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgQVJNZWJMaWJEaXJzW10gPSB7Ii9s aWIifTsKLSAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBBUk1lYlRyaXBsZXNbXSA9IHsiYXJt ZWItbGludXgtZ251ZWFiaSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgImFybWViLWxpbnV4LWFuZHJvaWRlYWJpIn07Ci1AQCAtMjE1Myw4ICsyMTU0LDcg QEAgdm9pZCBHZW5lcmljX0dDQzo6R0NDSW5zdGFsbGF0aW9uRGV0ZWN0b3I6OkFkZERlZmF1bHRH Q0NQcmVmaXhlcygKLSAgICAgICAicG93ZXJwYzY0LXN1c2UtbGludXgiLCAicG93ZXJwYy1tb250 YXZpc3RhLWxpbnV4c3BlIn07Ci0gICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgUFBDTEVMaWJE aXJzW10gPSB7Ii9saWIzMiIsICIvbGliIn07Ci0gICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3Qg UFBDTEVUcmlwbGVzW10gPSB7InBvd2VycGNsZS1saW51eC1nbnUiLAotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBjbGUtdW5rbm93bi1saW51eC1n bnUiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwb3dl cnBjbGUtbGludXgtbXVzbCJ9OwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJwb3dlcnBjbGUtdW5rbm93bi1saW51eC1nbnUifTsKLSAKLSAgIHN0YXRpYyBj b25zdCBjaGFyICpjb25zdCBQUEM2NExpYkRpcnNbXSA9IHsiL2xpYjY0IiwgIi9saWIifTsKLSAg IHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBQUEM2NFRyaXBsZXNbXSA9IHsKLUBAIC0yMjM1LDYg KzIyMzUsODcgQEAgdm9pZCBHZW5lcmljX0dDQzo6R0NDSW5zdGFsbGF0aW9uRGV0ZWN0b3I6OkFk ZERlZmF1bHRHQ0NQcmVmaXhlcygKLSAgICAgcmV0dXJuOwotICAgfQotIAotKyAgaWYgKFRhcmdl dFRyaXBsZS5pc011c2woKSkgewotKyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgQUFyY2g2 NE11c2xUcmlwbGVzW10gPSB7ImFhcmNoNjQtbGludXgtbXVzbCJ9OwotKyAgICBzdGF0aWMgY29u c3QgY2hhciAqY29uc3QgQVJNSEZNdXNsVHJpcGxlc1tdID0gewotKyAgICAgICAgImFybS1saW51 eC1tdXNsZWFiaWhmIiwgImFybXY3bC1saW51eC1tdXNsZWFiaWhmIgotKyAgICB9OwotKyAgICBz dGF0aWMgY29uc3QgY2hhciAqY29uc3QgQVJNTXVzbFRyaXBsZXNbXSA9IHsiYXJtLWxpbnV4LW11 c2xlYWJpIn07Ci0rICAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBYODZfNjRNdXNsVHJpcGxl c1tdID0geyJ4ODZfNjQtbGludXgtbXVzbCJ9OwotKyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29u c3QgWDg2TXVzbFRyaXBsZXNbXSA9IHsiaTY4Ni1saW51eC1tdXNsIn07Ci0rICAgIHN0YXRpYyBj b25zdCBjaGFyICpjb25zdCBNSVBTTXVzbFRyaXBsZXNbXSA9IHsKLSsgICAgICAgICJtaXBzLWxp bnV4LW11c2wiLCAibWlwc2VsLWxpbnV4LW11c2wiLAotKyAgICAgICAgIm1pcHNlbC1saW51eC1t dXNsaGYiLCAibWlwcy1saW51eC1tdXNsaGYiCi0rICAgIH07Ci0rICAgIHN0YXRpYyBjb25zdCBj aGFyICpjb25zdCBQUENNdXNsVHJpcGxlc1tdID0geyJwb3dlcnBjLWxpbnV4LW11c2wifTsKLSsg ICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IFBQQ0xFTXVzbFRyaXBsZXNbXSA9IHsicG93ZXJw Y2xlLWxpbnV4LW11c2wifTsKLSsgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IFBQQzY0TXVz bFRyaXBsZXNbXSA9IHsicG93ZXJwYzY0LWxpbnV4LW11c2wifTsKLSsgICAgc3RhdGljIGNvbnN0 IGNoYXIgKmNvbnN0IFBQQzY0TEVNdXNsVHJpcGxlc1tdID0geyJwb3dlcnBjNjRsZS1saW51eC1t dXNsIn07Ci0rCi0rICAgIHN3aXRjaCAoVGFyZ2V0VHJpcGxlLmdldEFyY2goKSkgewotKyAgICBj YXNlIGxsdm06OlRyaXBsZTo6YWFyY2g2NDoKLSsgICAgICBMaWJEaXJzLmFwcGVuZChiZWdpbihB QXJjaDY0TGliRGlycyksIGVuZChBQXJjaDY0TGliRGlycykpOwotKyAgICAgIFRyaXBsZUFsaWFz ZXMuYXBwZW5kKGJlZ2luKEFBcmNoNjRNdXNsVHJpcGxlcyksIGVuZChBQXJjaDY0TXVzbFRyaXBs ZXMpKTsKLSsgICAgICBCaWFyY2hMaWJEaXJzLmFwcGVuZChiZWdpbihBQXJjaDY0TGliRGlycyks IGVuZChBQXJjaDY0TGliRGlycykpOwotKyAgICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMuYXBwZW5k KGJlZ2luKEFBcmNoNjRNdXNsVHJpcGxlcyksIGVuZChBQXJjaDY0TXVzbFRyaXBsZXMpKTsKLSsg ICAgICBicmVhazsKLSsgICAgY2FzZSBsbHZtOjpUcmlwbGU6OmFybToKLSsgICAgICBMaWJEaXJz LmFwcGVuZChiZWdpbihBUk1MaWJEaXJzKSwgZW5kKEFSTUxpYkRpcnMpKTsKLSsgICAgICBpZiAo VGFyZ2V0VHJpcGxlLmdldEVudmlyb25tZW50KCkgPT0gbGx2bTo6VHJpcGxlOjpNdXNsRUFCSUhG KSB7Ci0rICAgICAgICBUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihBUk1IRk11c2xUcmlwbGVz KSwgZW5kKEFSTUhGTXVzbFRyaXBsZXMpKTsKLSsgICAgICB9IGVsc2UgewotKyAgICAgICAgVHJp cGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oQVJNTXVzbFRyaXBsZXMpLCBlbmQoQVJNTXVzbFRyaXBs ZXMpKTsKLSsgICAgICB9Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgbGx2bTo6VHJpcGxlOjp4 ODZfNjQ6Ci0rICAgICAgTGliRGlycy5hcHBlbmQoYmVnaW4oWDg2XzY0TGliRGlycyksIGVuZChY ODZfNjRMaWJEaXJzKSk7Ci0rICAgICAgVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oWDg2XzY0 TXVzbFRyaXBsZXMpLCBlbmQoWDg2XzY0TXVzbFRyaXBsZXMpKTsKLSsgICAgICBCaWFyY2hMaWJE aXJzLmFwcGVuZChiZWdpbihYODZMaWJEaXJzKSwgZW5kKFg4NkxpYkRpcnMpKTsKLSsgICAgICBC aWFyY2hUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihYODZNdXNsVHJpcGxlcyksIGVuZChYODZN dXNsVHJpcGxlcykpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIGxsdm06OlRyaXBsZTo6eDg2 OgotKyAgICAgIExpYkRpcnMuYXBwZW5kKGJlZ2luKFg4NkxpYkRpcnMpLCBlbmQoWDg2TGliRGly cykpOwotKyAgICAgIFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFg4Nk11c2xUcmlwbGVzKSwg ZW5kKFg4Nk11c2xUcmlwbGVzKSk7Ci0rICAgICAgQmlhcmNoTGliRGlycy5hcHBlbmQoYmVnaW4o WDg2XzY0TGliRGlycyksIGVuZChYODZfNjRMaWJEaXJzKSk7Ci0rICAgICAgQmlhcmNoVHJpcGxl QWxpYXNlcy5hcHBlbmQoYmVnaW4oWDg2XzY0TXVzbFRyaXBsZXMpLCBlbmQoWDg2XzY0TXVzbFRy aXBsZXMpKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBsbHZtOjpUcmlwbGU6Om1pcHM6Ci0r ICAgICAgTGliRGlycy5hcHBlbmQoYmVnaW4oTUlQU0xpYkRpcnMpLCBlbmQoTUlQU0xpYkRpcnMp KTsKLSsgICAgICBUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihNSVBTTXVzbFRyaXBsZXMpLCBl bmQoTUlQU011c2xUcmlwbGVzKSk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgbGx2bTo6VHJp cGxlOjpwcGM6Ci0rICAgICAgTGliRGlycy5hcHBlbmQoYmVnaW4oUFBDTGliRGlycyksIGVuZChQ UENMaWJEaXJzKSk7Ci0rICAgICAgVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oUFBDTXVzbFRy aXBsZXMpLCBlbmQoUFBDTXVzbFRyaXBsZXMpKTsKLSsgICAgICBCaWFyY2hMaWJEaXJzLmFwcGVu ZChiZWdpbihQUEM2NExpYkRpcnMpLCBlbmQoUFBDNjRMaWJEaXJzKSk7Ci0rICAgICAgQmlhcmNo VHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oUFBDNjRNdXNsVHJpcGxlcyksIGVuZChQUEM2NE11 c2xUcmlwbGVzKSk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgbGx2bTo6VHJpcGxlOjpwcGNs ZToKLSsgICAgICBMaWJEaXJzLmFwcGVuZChiZWdpbihQUENMRUxpYkRpcnMpLCBlbmQoUFBDTEVM aWJEaXJzKSk7Ci0rICAgICAgVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oUFBDTEVNdXNsVHJp cGxlcyksIGVuZChQUENMRU11c2xUcmlwbGVzKSk7Ci0rICAgICAgQmlhcmNoTGliRGlycy5hcHBl bmQoYmVnaW4oUFBDNjRMRUxpYkRpcnMpLCBlbmQoUFBDNjRMRUxpYkRpcnMpKTsKLSsgICAgICBC aWFyY2hUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihQUEM2NExFTXVzbFRyaXBsZXMpLCBlbmQo UFBDNjRMRU11c2xUcmlwbGVzKSk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgbGx2bTo6VHJp cGxlOjpwcGM2NDoKLSsgICAgICBMaWJEaXJzLmFwcGVuZChiZWdpbihQUEM2NExpYkRpcnMpLCBl bmQoUFBDNjRMaWJEaXJzKSk7Ci0rICAgICAgVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oUFBD NjRNdXNsVHJpcGxlcyksIGVuZChQUEM2NE11c2xUcmlwbGVzKSk7Ci0rICAgICAgQmlhcmNoTGli RGlycy5hcHBlbmQoYmVnaW4oUFBDTGliRGlycyksIGVuZChQUENMaWJEaXJzKSk7Ci0rICAgICAg QmlhcmNoVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oUFBDTXVzbFRyaXBsZXMpLCBlbmQoUFBD TXVzbFRyaXBsZXMpKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBsbHZtOjpUcmlwbGU6OnBw YzY0bGU6Ci0rICAgICAgTGliRGlycy5hcHBlbmQoYmVnaW4oUFBDNjRMRUxpYkRpcnMpLCBlbmQo UFBDNjRMRUxpYkRpcnMpKTsKLSsgICAgICBUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihQUEM2 NExFTXVzbFRyaXBsZXMpLCBlbmQoUFBDNjRMRU11c2xUcmlwbGVzKSk7Ci0rICAgICAgQmlhcmNo TGliRGlycy5hcHBlbmQoYmVnaW4oUFBDTEVMaWJEaXJzKSwgZW5kKFBQQ0xFTGliRGlycykpOwot KyAgICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFBQQ0xFTXVzbFRyaXBsZXMp LCBlbmQoUFBDTEVNdXNsVHJpcGxlcykpOwotKyAgICAgIGJyZWFrOwotKyAgICBkZWZhdWx0Ogot KyAgICAgIGJyZWFrOwotKyAgICB9Ci0rICAgIFRyaXBsZUFsaWFzZXMucHVzaF9iYWNrKFRhcmdl dFRyaXBsZS5zdHIoKSk7Ci0rICAgIGlmIChUYXJnZXRUcmlwbGUuc3RyKCkgIT0gQmlhcmNoVHJp cGxlLnN0cigpKQotKyAgICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMucHVzaF9iYWNrKEJpYXJjaFRy aXBsZS5zdHIoKSk7Ci0rICAgIHJldHVybjsKLSsgIH0KLSsKLSAgIC8vIEFuZHJvaWQgdGFyZ2V0 cyBzaG91bGQgbm90IHVzZSBHTlUvTGludXggdG9vbHMgb3IgbGlicmFyaWVzLgotICAgaWYgKFRh cmdldFRyaXBsZS5pc0FuZHJvaWQoKSkgewotICAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3Qg QUFyY2g2NEFuZHJvaWRUcmlwbGVzW10gPSB7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMi9w YXRjaGVzL2NsYW5nLTAwMy1wcGM2NC1keW5hbWljLWxpbmtlci1wYXRoLnBhdGNoIGIvc3JjcGtn cy9sbHZtMTIvcGF0Y2hlcy9jbGFuZy0wMDMtcHBjNjQtZHluYW1pYy1saW5rZXItcGF0aC5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGFkNjQxMmQxZTZjLi4wMDAwMDAwMDAw MDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jbGFuZy0wMDMtcHBjNjQtZHluYW1pYy1s aW5rZXItcGF0aC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLS0tLSBhL2Ns YW5nL2xpYi9Ecml2ZXIvVG9vbENoYWlucy9MaW51eC5jcHAKLSsrKyBiL2NsYW5nL2xpYi9Ecml2 ZXIvVG9vbENoYWlucy9MaW51eC5jcHAKLUBAIC01MDQsMTAgKzUwNCw2IEBAIHN0ZDo6c3RyaW5n IExpbnV4OjpnZXREeW5hbWljTGlua2VyKGNvbnN0IEFyZ0xpc3QgJkFyZ3MpIGNvbnN0IHsKLSAg ICAgTG9hZGVyID0gImxkLnNvLjEiOwotICAgICBicmVhazsKLSAgIGNhc2UgbGx2bTo6VHJpcGxl OjpwcGM2NDoKLS0gICAgTGliRGlyID0gImxpYjY0IjsKLS0gICAgTG9hZGVyID0KLS0gICAgICAg ICh0b29sczo6cHBjOjpoYXNQUENBYmlBcmcoQXJncywgImVsZnYyIikpID8gImxkNjQuc28uMiIg OiAibGQ2NC5zby4xIjsKLS0gICAgYnJlYWs7Ci0gICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjNjRs ZToKLSAgICAgTGliRGlyID0gImxpYjY0IjsKLSAgICAgTG9hZGVyID0KZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvbGx2bTEyL3BhdGNoZXMvY2xhbmctMDA0LXBwYzY0LW11c2wtZWxmdjIucGF0Y2ggYi9z cmNwa2dzL2xsdm0xMi9wYXRjaGVzL2NsYW5nLTAwNC1wcGM2NC1tdXNsLWVsZnYyLnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMWZjODAwM2M1ZjEuLjAwMDAwMDAwMDAwMAot LS0gYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2NsYW5nLTAwNC1wcGM2NC1tdXNsLWVsZnYyLnBh dGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLS0tIGEvY2xhbmcvbGliL0Jhc2lj L1RhcmdldHMvUFBDLmgKLSsrKyBiL2NsYW5nL2xpYi9CYXNpYy9UYXJnZXRzL1BQQy5oCi1AQCAt NDE1LDExICs0MTUsMTAgQEAgcHVibGljOgotICAgICAgIExvbmdEb3VibGVGb3JtYXQgPSAmbGx2 bTo6QVBGbG9hdDo6SUVFRWRvdWJsZSgpOwotICAgICB9IGVsc2UgaWYgKChUcmlwbGUuZ2V0QXJj aCgpID09IGxsdm06OlRyaXBsZTo6cHBjNjRsZSkpIHsKLSAgICAgICBEYXRhTGF5b3V0ID0gImUt bTplLWk2NDo2NC1uMzI6NjQiOwotLSAgICAgIEFCSSA9ICJlbGZ2MiI7Ci0gICAgIH0gZWxzZSB7 Ci0gICAgICAgRGF0YUxheW91dCA9ICJFLW06ZS1pNjQ6NjQtbjMyOjY0IjsKLS0gICAgICBBQkkg PSAiZWxmdjEiOwotICAgICB9Ci0rICAgIEFCSSA9ICJlbGZ2MiI7Ci0gCi0gICAgIGlmIChUcmlw bGUuaXNPU0ZyZWVCU0QoKSB8fCBUcmlwbGUuaXNPU09wZW5CU0QoKSB8fCBUcmlwbGUuaXNNdXNs KCkpIHsKLSAgICAgICBMb25nRG91YmxlV2lkdGggPSBMb25nRG91YmxlQWxpZ24gPSA2NDsKLS0t LSBhL2NsYW5nL2xpYi9Db2RlR2VuL1RhcmdldEluZm8uY3BwCi0rKysgYi9jbGFuZy9saWIvQ29k ZUdlbi9UYXJnZXRJbmZvLmNwcAotQEAgLTEwOTI3LDkgKzEwOTI3LDkgQEAgY29uc3QgVGFyZ2V0 Q29kZUdlbkluZm8gJkNvZGVHZW5Nb2R1bGU6OmdldFRhcmdldENvZGVHZW5JbmZvKCkgewotICAg ICAgIHJldHVybiBTZXRDR0luZm8obmV3IEFJWFRhcmdldENvZGVHZW5JbmZvKFR5cGVzLCAvKklz NjRCaXQqLyB0cnVlKSk7Ci0gCi0gICAgIGlmIChUcmlwbGUuaXNPU0JpbkZvcm1hdEVMRigpKSB7 Ci0tICAgICAgUFBDNjRfU1ZSNF9BQklJbmZvOjpBQklLaW5kIEtpbmQgPSBQUEM2NF9TVlI0X0FC SUluZm86OkVMRnYxOwotLSAgICAgIGlmIChnZXRUYXJnZXQoKS5nZXRBQkkoKSA9PSAiZWxmdjIi KQotLSAgICAgICAgS2luZCA9IFBQQzY0X1NWUjRfQUJJSW5mbzo6RUxGdjI7Ci0rICAgICAgUFBD NjRfU1ZSNF9BQklJbmZvOjpBQklLaW5kIEtpbmQgPSBQUEM2NF9TVlI0X0FCSUluZm86OkVMRnYy OwotKyAgICAgIGlmIChnZXRUYXJnZXQoKS5nZXRBQkkoKSA9PSAiZWxmdjEiKQotKyAgICAgICAg S2luZCA9IFBQQzY0X1NWUjRfQUJJSW5mbzo6RUxGdjE7Ci0gICAgICAgYm9vbCBJc1NvZnRGbG9h dCA9IENvZGVHZW5PcHRzLkZsb2F0QUJJID09ICJzb2Z0IjsKLSAKLSAgICAgICByZXR1cm4gU2V0 Q0dJbmZvKAotLS0tIGEvY2xhbmcvbGliL0RyaXZlci9Ub29sQ2hhaW5zL0NsYW5nLmNwcAotKysr IGIvY2xhbmcvbGliL0RyaXZlci9Ub29sQ2hhaW5zL0NsYW5nLmNwcAotQEAgLTE5MjAsMTQgKzE5 MjAsNyBAQCB2b2lkIENsYW5nOjpBZGRQUENUYXJnZXRBcmdzKGNvbnN0IEFyZ0xpc3QgJkFyZ3Ms Ci0gICBjb25zdCBsbHZtOjpUcmlwbGUgJlQgPSBnZXRUb29sQ2hhaW4oKS5nZXRUcmlwbGUoKTsK LSAgIGlmIChULmlzT1NCaW5Gb3JtYXRFTEYoKSkgewotICAgICBzd2l0Y2ggKGdldFRvb2xDaGFp bigpLmdldEFyY2goKSkgewotLSAgICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjNjQ6IHsKLS0gICAg ICBpZiAoKFQuaXNPU0ZyZWVCU0QoKSAmJiBULmdldE9TTWFqb3JWZXJzaW9uKCkgPj0gMTMpIHx8 Ci0tICAgICAgICAgIFQuaXNPU09wZW5CU0QoKSB8fCBULmlzTXVzbCgpKQotLSAgICAgICAgQUJJ TmFtZSA9ICJlbGZ2MiI7Ci0tICAgICAgZWxzZQotLSAgICAgICAgQUJJTmFtZSA9ICJlbGZ2MSI7 Ci0tICAgICAgYnJlYWs7Ci0tICAgIH0KLSsgICAgY2FzZSBsbHZtOjpUcmlwbGU6OnBwYzY0Ogot ICAgICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjNjRsZToKLSAgICAgICBBQklOYW1lID0gImVsZnYy IjsKLSAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY29t cGlsZXItcnQtYWFyY2g2NC11Y29udGV4dC5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMv Y29tcGlsZXItcnQtYWFyY2g2NC11Y29udGV4dC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggODkzYzA1OWQ3YjhkLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIv cGF0Y2hlcy9jb21waWxlci1ydC1hYXJjaDY0LXVjb250ZXh0LnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsMTEgKzAsMCBAQAotLS0tIGEvY29tcGlsZXItcnQvbGliL3Nhbml0aXplcl9jb21tb24v c2FuaXRpemVyX2xpbnV4LmNwcC5vcmlnCi0rKysgYi9jb21waWxlci1ydC9saWIvc2FuaXRpemVy X2NvbW1vbi9zYW5pdGl6ZXJfbGludXguY3BwCi1AQCAtMTc5OSw3ICsxNzk5LDcgQEAKLSAKLSBz dGF0aWMgYm9vbCBBYXJjaDY0R2V0RVNSKHVjb250ZXh0X3QgKnVjb250ZXh0LCB1NjQgKmVzcikg ewotICAgc3RhdGljIGNvbnN0IHUzMiBrRXNyTWFnaWMgPSAweDQ1NTM1MjAxOwotLSAgdTggKmF1 eCA9IHVjb250ZXh0LT51Y19tY29udGV4dC5fX3Jlc2VydmVkOwotKyAgdTggKmF1eCA9IHJlaW50 ZXJwcmV0X2Nhc3Q8dTggKj4odWNvbnRleHQtPnVjX21jb250ZXh0Ll9fcmVzZXJ2ZWQpOwotICAg d2hpbGUgKHRydWUpIHsKLSAgICAgX2FhcmNoNjRfY3R4ICpjdHggPSAoX2FhcmNoNjRfY3R4ICop YXV4OwotICAgICBpZiAoY3R4LT5zaXplID09IDApIGJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9sbHZtMTIvcGF0Y2hlcy9jb21waWxlci1ydC1zYW5pdGl6ZXItcHBjNjQtbXVzbC5wYXRjaCBi L3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY29tcGlsZXItcnQtc2FuaXRpemVyLXBwYzY0LW11c2wu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1ZjE2ZDI0ZjM0MC4uMDAwMDAw MDAwMDAwCi0tLSBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY29tcGlsZXItcnQtc2FuaXRpemVy LXBwYzY0LW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0tLS0gYS9j b21waWxlci1ydC9saWIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfbGludXguY3BwCi0rKysg Yi9jb21waWxlci1ydC9saWIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfbGludXguY3BwCi1A QCAtNzQsNiArNzQsMTAgQEAKLSAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KLSAjZW5kaWYKLSAK LSsjaWYgU0FOSVRJWkVSX0xJTlVYICYmIGRlZmluZWQoX19wb3dlcnBjX18pCi0rI2luY2x1ZGUg PGFzbS9wdHJhY2UuaD4KLSsjZW5kaWYKLSsKLSAjaWYgU0FOSVRJWkVSX0xJTlVYICYmICFTQU5J VElaRVJfQU5EUk9JRAotICNpbmNsdWRlIDxzeXMvcGVyc29uYWxpdHkuaD4KLSAjZW5kaWYKLS0t LSBhL2NvbXBpbGVyLXJ0L2xpYi9zYW5pdGl6ZXJfY29tbW9uL3Nhbml0aXplcl9wbGF0Zm9ybV9s aW1pdHNfcG9zaXguY3BwCi0rKysgYi9jb21waWxlci1ydC9saWIvc2FuaXRpemVyX2NvbW1vbi9z YW5pdGl6ZXJfcGxhdGZvcm1fbGltaXRzX3Bvc2l4LmNwcAotQEAgLTkyLDcgKzkyLDcgQEAKLSAj IGluY2x1ZGUgPHV0aW1lLmg+Ci0gIyBpbmNsdWRlIDxzeXMvcHRyYWNlLmg+Ci0gI2lmIGRlZmlu ZWQoX19taXBzNjQpIHx8IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19hcm1fXykg fHwgXAotLSAgICBTQU5JVElaRVJfUklTQ1Y2NAotKyAgICBkZWZpbmVkKF9fcG93ZXJwY19fKSB8 fCBTQU5JVElaRVJfUklTQ1Y2NAotICMgIGluY2x1ZGUgPGFzbS9wdHJhY2UuaD4KLSAjICBpZmRl ZiBfX2FybV9fCi0gdHlwZWRlZiBzdHJ1Y3QgdXNlcl9mcHJlZ3MgZWxmX2ZwcmVnc2V0X3Q7Ci0t LS0gYS9jb21waWxlci1ydC9saWIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfc3RvcHRoZXdv cmxkX2xpbnV4X2xpYmNkZXAuY3BwCi0rKysgYi9jb21waWxlci1ydC9saWIvc2FuaXRpemVyX2Nv bW1vbi9zYW5pdGl6ZXJfc3RvcHRoZXdvcmxkX2xpbnV4X2xpYmNkZXAuY3BwCi1AQCAtMzEsNyAr MzEsNyBAQAotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4gLy8gZm9yIHBpZF90Ci0gI2luY2x1ZGUg PHN5cy91aW8uaD4gLy8gZm9yIGlvdmVjCi0gI2luY2x1ZGUgPGVsZi5oPiAvLyBmb3IgTlRfUFJT VEFUVVMKLS0jaWYgKGRlZmluZWQoX19hYXJjaDY0X18pIHx8IFNBTklUSVpFUl9SSVNDVjY0KSAm JiAhU0FOSVRJWkVSX0FORFJPSUQKLSsjaWYgKGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmlu ZWQoX19wb3dlcnBjX18pIHx8IFNBTklUSVpFUl9SSVNDVjY0KSAmJiAhU0FOSVRJWkVSX0FORFJP SUQKLSAvLyBHTElCQyAyLjIwKyBzeXMvdXNlciBkb2VzIG5vdCBpbmNsdWRlIGFzbS9wdHJhY2Uu aAotICMgaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgotICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9sbHZtMTIvcGF0Y2hlcy9jb21waWxlci1ydC1zaXplX3QucGF0Y2ggYi9zcmNwa2dzL2xsdm0x Mi9wYXRjaGVzL2NvbXBpbGVyLXJ0LXNpemVfdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMmM2MzA2M2E1ZTllLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIv cGF0Y2hlcy9jb21waWxlci1ydC1zaXplX3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMCAr MCwwIEBACi0tLS0gYS9jb21waWxlci1ydC9saWIvZnV6emVyL0Z1enplckludGVyY2VwdG9ycy5j cHAub3JpZwotKysrIGIvY29tcGlsZXItcnQvbGliL2Z1enplci9GdXp6ZXJJbnRlcmNlcHRvcnMu Y3BwCi1AQCAtMjUsNiArMjUsNyBAQAotICAgfQotIAotICNpbmNsdWRlIDxjYXNzZXJ0PgotKyNp bmNsdWRlIDxjc3RkZGVmPgotICNpbmNsdWRlIDxjc3RkaW50PgotICNpbmNsdWRlIDxkbGZjbi5o PiAvLyBmb3IgZGxzeW0oKQotIApkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9j b21waWxlci1ydC14cmF5LXBwYzY0LW11c2wucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMi9wYXRjaGVz L2NvbXBpbGVyLXJ0LXhyYXktcHBjNjQtbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggZDBiNjFjODBjODk3Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIv cGF0Y2hlcy9jb21waWxlci1ydC14cmF5LXBwYzY0LW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSw2MiArMCwwIEBACi0tLS0gYS9jb21waWxlci1ydC9saWIveHJheS94cmF5X3Bvd2VycGM2 NC5pbmMKLSsrKyBiL2NvbXBpbGVyLXJ0L2xpYi94cmF5L3hyYXlfcG93ZXJwYzY0LmluYwotQEAg LTEyLDcgKzEyLDEzIEBACi0gCi0gI2luY2x1ZGUgPGNzdGRpbnQ+Ci0gI2luY2x1ZGUgPG11dGV4 PgotKyNpZmRlZiBfX0dMSUJDX18KLSAjaW5jbHVkZSA8c3lzL3BsYXRmb3JtL3BwYy5oPgotKyNl bHNlCi0rI2luY2x1ZGUgPGNjdHlwZT4KLSsjaW5jbHVkZSA8Y3N0cmluZz4KLSsjaW5jbHVkZSA8 Y3N0ZGxpYj4KLSsjZW5kaWYKLSAKLSAjaW5jbHVkZSAieHJheV9kZWZzLmgiCi0gCi1AQCAtMjAs MTMgKzI2LDQ1IEBAIG5hbWVzcGFjZSBfX3hyYXkgewotIAotIEFMV0FZU19JTkxJTkUgdWludDY0 X3QgcmVhZFRTQyh1aW50OF90ICZDUFUpIFhSQVlfTkVWRVJfSU5TVFJVTUVOVCB7Ci0gICBDUFUg PSAwOwotKyNpZmRlZiBfX0dMSUJDX18KLSAgIHJldHVybiBfX3BwY19nZXRfdGltZWJhc2UoKTsK LSsjZWxzZQotKyAgcmV0dXJuIF9fYnVpbHRpbl9wcGNfZ2V0X3RpbWViYXNlKCk7Ci0rI2VuZGlm Ci0gfQotIAotIGlubGluZSB1aW50NjRfdCBnZXRUU0NGcmVxdWVuY3koKSBYUkFZX05FVkVSX0lO U1RSVU1FTlQgewotICAgc3RhdGljIHN0ZDo6bXV0ZXggTTsKLSAgIHN0ZDo6bG9ja19ndWFyZDxz dGQ6Om11dGV4PiBHdWFyZChNKTsKLSsjaWZkZWYgX19HTElCQ19fCi0gICByZXR1cm4gX19wcGNf Z2V0X3RpbWViYXNlX2ZyZXEoKTsKLSsjZWxzZQotKyAgLyogRklYTUU6IGEgbGVzcyBkaXJ0eSBp bXBsZW1lbnRhdGlvbj8gKi8KLSsgIHN0YXRpYyB1aW50NjRfdCBiYXNlOwotKyAgaWYgKCFiYXNl KSB7Ci0rICAgIEZJTEUgKmYgPSBmb3BlbigiL3Byb2MvY3B1aW5mbyIsICJyYiIpOwotKyAgICBp ZiAoZikgewotKyAgICAgIHNzaXplX3QgbnI7Ci0rICAgICAgLyogdmlydHVhbGx5IGFsd2F5cyBi aWcgZW5vdWdoIHRvIGhvbGQgdGhlIGxpbmUgKi8KLSsgICAgICBjaGFyIGJ1Zls1MTJdOwotKyAg ICAgIHdoaWxlIChmZ2V0cyhidWYsIHNpemVvZihidWYpLCBmKSkgewotKyAgICAgICAgY2hhciAq cmV0ID0gc3Ryc3RyKGJ1ZiwgInRpbWViYXNlIik7Ci0rICAgICAgICBpZiAoIXJldCkgewotKyAg ICAgICAgICBjb250aW51ZTsKLSsgICAgICAgIH0KLSsgICAgICAgIHJldCArPSBzaXplb2YoInRp bWViYXNlIikgLSAxOwotKyAgICAgICAgcmV0ID0gc3RyY2hyKHJldCwgJzonKTsKLSsgICAgICAg IGlmICghcmV0KSB7Ci0rICAgICAgICAgIGNvbnRpbnVlOwotKyAgICAgICAgfQotKyAgICAgICAg YmFzZSA9IHN0cnRvdWwocmV0ICsgMSwgbnVsbHB0ciwgMTApOwotKyAgICAgICAgYnJlYWs7Ci0r ICAgICAgfQotKyAgICAgIGZjbG9zZShmKTsKLSsgICAgfQotKyAgfQotKyAgcmV0dXJuIGJhc2U7 Ci0rI2VuZGlmCi0gfQotIAotIGlubGluZSBib29sIHByb2JlUmVxdWlyZWRDUFVGZWF0dXJlcygp IFhSQVlfTkVWRVJfSU5TVFJVTUVOVCB7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMi9wYXRj aGVzL2xpYmN4eC1tdXNsLnBhdGNoIGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJjeHgtbXVz bC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmJkMzFmZmMyY2IxLi4wMDAw MDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJjeHgtbXVzbC5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS0tLSBhL2xpYmN4eC9pbmNsdWRlL2xvY2Fs ZQotKysrIGIvbGliY3h4L2luY2x1ZGUvbG9jYWxlCi1AQCAtNzQyLDcgKzc0MiwxMSBAQCBfX251 bV9nZXRfc2lnbmVkX2ludGVncmFsKGNvbnN0IGNoYXIqIF9fYSwgY29uc3QgY2hhciogX19hX2Vu ZCwKLSAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2U8ZGVjbHR5cGUoZXJybm8pPjo6 dHlwZSBfX3NhdmVfZXJybm8gPSBlcnJubzsKLSAgICAgICAgIGVycm5vID0gMDsKLSAgICAgICAg IGNoYXIgKl9fcDI7Ci0rI2lmIGRlZmluZWQoX19saW51eF9fKSAmJiAhZGVmaW5lZChfX0dMSUJD X18pCi0rICAgICAgICBsb25nIGxvbmcgX19sbCA9IHN0cnRvbGwoX19hLCAmX19wMiwgX19iYXNl KTsKLSsjZWxzZQotICAgICAgICAgbG9uZyBsb25nIF9fbGwgPSBzdHJ0b2xsX2woX19hLCAmX19w MiwgX19iYXNlLCBfTElCQ1BQX0dFVF9DX0xPQ0FMRSk7Ci0rI2VuZGlmCi0gICAgICAgICB0eXBl bmFtZSByZW1vdmVfcmVmZXJlbmNlPGRlY2x0eXBlKGVycm5vKT46OnR5cGUgX19jdXJyZW50X2Vy cm5vID0gZXJybm87Ci0gICAgICAgICBpZiAoX19jdXJyZW50X2Vycm5vID09IDApCi0gICAgICAg ICAgICAgZXJybm8gPSBfX3NhdmVfZXJybm87Ci1AQCAtNzgyLDcgKzc4NiwxMSBAQCBfX251bV9n ZXRfdW5zaWduZWRfaW50ZWdyYWwoY29uc3QgY2hhciogX19hLCBjb25zdCBjaGFyKiBfX2FfZW5k LAotICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxkZWNsdHlwZShlcnJubyk+Ojp0 eXBlIF9fc2F2ZV9lcnJubyA9IGVycm5vOwotICAgICAgICAgZXJybm8gPSAwOwotICAgICAgICAg Y2hhciAqX19wMjsKLSsjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmICFkZWZpbmVkKF9fR0xJQkNf XykKLSsgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2xsID0gc3RydG91bGwoX19hLCAmX19w MiwgX19iYXNlKTsKLSsjZWxzZQotICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIF9fbGwgPSBz dHJ0b3VsbF9sKF9fYSwgJl9fcDIsIF9fYmFzZSwgX0xJQkNQUF9HRVRfQ19MT0NBTEUpOwotKyNl bmRpZgotICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxkZWNsdHlwZShlcnJubyk+ Ojp0eXBlIF9fY3VycmVudF9lcnJubyA9IGVycm5vOwotICAgICAgICAgaWYgKF9fY3VycmVudF9l cnJubyA9PSAwKQotICAgICAgICAgICAgIGVycm5vID0gX19zYXZlX2Vycm5vOwpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJjeHgtcHBjLnBhdGNoIGIvc3JjcGtncy9sbHZt MTIvcGF0Y2hlcy9saWJjeHgtcHBjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCA3YTkyZjgwMDRlMWMuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVz L2xpYmN4eC1wcGMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1UaGlzIGVu c3VyZXMgYGlzX2llYzU1OWAgaXMgZGVmaW5lZCBjb3JyZWN0bHkgdW5kZXIgYWxsIGxvbmcgZG91 YmxlIEFCSXMsCi1pbmNsdWRpbmcgbXVzbCBhbmQgaXRzIDY0LWJpdCBsb25nIGRvdWJsZS4gQWxz bywgYF9fcHBjX19gIG9yIGBfX3BwYzY0X19gCi1pcyBub3QgZGVmaW5lZCBvbiBnY2MuCi0KLS0t LSBhL2xpYmN4eC9pbmNsdWRlL2xpbWl0cwotKysrIGIvbGliY3h4L2luY2x1ZGUvbGltaXRzCi1A QCAtNDI2LDggKzQyNiwxNCBAQCBwcm90ZWN0ZWQ6Ci0gICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lC SUxJVFkgc3RhdGljIF9MSUJDUFBfQ09OU1RFWFBSIHR5cGUgc2lnbmFsaW5nX05hTigpIF9OT0VY Q0VQVCB7cmV0dXJuIF9fYnVpbHRpbl9uYW5zbCgiIik7fQotICAgICBfTElCQ1BQX0lOTElORV9W SVNJQklMSVRZIHN0YXRpYyBfTElCQ1BQX0NPTlNURVhQUiB0eXBlIGRlbm9ybV9taW4oKSBfTk9F WENFUFQge3JldHVybiBfX0xEQkxfREVOT1JNX01JTl9fO30KLSAKLS0jaWYgKGRlZmluZWQoX19w cGNfXykgfHwgZGVmaW5lZChfX3BwYzY0X18pKQotKyNpZiBkZWZpbmVkKF9fcG93ZXJwY19fKSB8 fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rI2lmIChfX0xEQkxfTUFYX0VYUF9fID4gX19EQkxf TUFYX0VYUF9fKSB8fCAoX19MREJMX01BTlRfRElHX18gPT0gX19EQkxfTUFOVF9ESUdfXykKLSsg ICAgLyogSUVFRSA3NTQgcXVhZHJ1cGxlIG9yIGRvdWJsZSBwcmVjaXNpb24gKi8KLSsgICAgc3Rh dGljIF9MSUJDUFBfQ09OU1RFWFBSIGNvbnN0IGJvb2wgaXNfaWVjNTU5ID0gdHJ1ZTsKLSsjZWxz ZQotKyAgICAvKiAxMjgtYml0IElCTSBkb3VibGUtZG91YmxlICovCi0gICAgIHN0YXRpYyBfTElC Q1BQX0NPTlNURVhQUiBjb25zdCBib29sIGlzX2llYzU1OSA9IGZhbHNlOwotKyNlbmRpZgotICNl bHNlCi0gICAgIHN0YXRpYyBfTElCQ1BQX0NPTlNURVhQUiBjb25zdCBib29sIGlzX2llYzU1OSA9 IHRydWU7Ci0gI2VuZGlmCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xpYmN4 eC1zc3Atbm9uc2hhcmVkLnBhdGNoIGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJjeHgtc3Nw LW5vbnNoYXJlZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzAyOTJiZWIy ZmNkLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJjeHgtc3Nw LW5vbnNoYXJlZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLS0tLSBhL2xp YmN4eC9DTWFrZUxpc3RzLnR4dAotKysrIGIvbGliY3h4L0NNYWtlTGlzdHMudHh0Ci1AQCAtNzY5 LDYgKzc2OSw4IEBAIGZ1bmN0aW9uKGN4eF9saW5rX3N5c3RlbV9saWJyYXJpZXMgdGFyZ2V0KQot ICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHt0YXJnZXR9IFBSSVZBVEUgYXRvbWljKQotICAg ZW5kaWYoKQotIAotKyNzc3AgIHRhcmdldF9saW5rX2xpYnJhcmllcygke3RhcmdldH0gUFJJVkFU RSBzc3Bfbm9uc2hhcmVkKQotKwotICAgaWYgKE1JTkdXKQotICAgICB0YXJnZXRfbGlua19saWJy YXJpZXMoJHt0YXJnZXR9IFBSSVZBVEUgIiR7TUlOR1dfTElCUkFSSUVTfSIpCi0gICBlbmRpZigp CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xpYmN4eGFiaS1kbC5wYXRjaCBi L3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGliY3h4YWJpLWRsLnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAzYTE1ZjlkYjhjOTguLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dz L2xsdm0xMi9wYXRjaGVzL2xpYmN4eGFiaS1kbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI1 ICswLDAgQEAKLUFsc28gbGluayB0byAtbGRsIHRvIHByZXZlbnQgdW5kZWZpbmVkIHJlZmVyZW5j ZXMuCi0KLS0tLSBhL2xpYmN4eGFiaS9zcmMvQ01ha2VMaXN0cy50eHQKLSsrKyBiL2xpYmN4eGFi aS9zcmMvQ01ha2VMaXN0cy50eHQKLUBAIC03Myw2ICs3Myw3IEBACi0gICBlbmRpZigpCi0gCi0g ICBhZGRfbGlicmFyeV9mbGFnc19pZihMSUJDWFhBQklfSEFTX0NfTElCIGMpCi0rICBhZGRfbGli cmFyeV9mbGFnc19pZihMSUJDWFhBQklfSEFTX0NfTElCIGRsKQotIGVuZGlmKCkKLSAKLSBpZiAo TElCQ1hYQUJJX1VTRV9MTFZNX1VOV0lOREVSKQotLS0tIGEvbGliY3h4L0NNYWtlTGlzdHMudHh0 Ci0rKysgYi9saWJjeHgvQ01ha2VMaXN0cy50eHQKLUBAIC03NDUsNiArNzQ1LDEwIEBACi0gICAg IHRhcmdldF9saW5rX2xpYnJhcmllcygke3RhcmdldH0gUFJJVkFURSBtKQotICAgZW5kaWYoKQot IAotKyAgaWYgKExJQkNYWF9IQVNfQ19MSUIpCi0rICAgIHRhcmdldF9saW5rX2xpYnJhcmllcygk e3RhcmdldH0gUFJJVkFURSBkbCkKLSsgIGVuZGlmKCkKLSsKLSAgIGlmIChMSUJDWFhfSEFTX1JU X0xJQikKLSAgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7dGFyZ2V0fSBQUklWQVRFIHJ0KQot ICAgZW5kaWYoKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJ1bndpbmQt cHBjMzIucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xpYnVud2luZC1wcGMzMi5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzRhYTc1NzZlY2Y5Li4wMDAwMDAwMDAw MDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJ1bndpbmQtcHBjMzIucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi1UaGlzIGZpeGVzIGJ1aWxkIGF0IGxlYXN0IHdp dGggZ2NjOSB3aGljaCBkb2VzIG5vdCBkZWZpbmUgYF9fcHBjX19gLgotCi0tLS0gYS9saWJ1bndp bmQvaW5jbHVkZS9fX2xpYnVud2luZF9jb25maWcuaAotKysrIGIvbGlidW53aW5kL2luY2x1ZGUv X19saWJ1bndpbmRfY29uZmlnLmgKLUBAIC00OSw3ICs0OSw3IEBACi0gIyAgZGVmaW5lIF9MSUJV TldJTkRfQ09OVEVYVF9TSVpFIDE2NwotICMgIGRlZmluZSBfTElCVU5XSU5EX0NVUlNPUl9TSVpF IDE3OQotICMgIGRlZmluZSBfTElCVU5XSU5EX0hJR0hFU1RfRFdBUkZfUkVHSVNURVIgX0xJQlVO V0lORF9ISUdIRVNUX0RXQVJGX1JFR0lTVEVSX1BQQzY0Ci0tIyBlbGlmIGRlZmluZWQoX19wcGNf XykKLSsjIGVsaWYgZGVmaW5lZChfX3Bvd2VycGNfXykKLSAjICBkZWZpbmUgX0xJQlVOV0lORF9U QVJHRVRfUFBDIDEKLSAjICBkZWZpbmUgX0xJQlVOV0lORF9DT05URVhUX1NJWkUgMTE3Ci0gIyAg ZGVmaW5lIF9MSUJVTldJTkRfQ1VSU09SX1NJWkUgMTI0Ci0tLS0gYS9saWJ1bndpbmQvc3JjL1Vu d2luZFJlZ2lzdGVyc1Jlc3RvcmUuUwotKysrIGIvbGlidW53aW5kL3NyYy9VbndpbmRSZWdpc3Rl cnNSZXN0b3JlLlMKLUBAIC0zOTIsNyArMzkyLDcgQEAgTG5vdmVjOgotICAgUFBDNjRfTFIoMykK LSAgIGJjdHIKLSAKLS0jZWxpZiBkZWZpbmVkKF9fcHBjX18pCi0rI2VsaWYgZGVmaW5lZChfX3Bv d2VycGNfXykKLSAKLSBERUZJTkVfTElCVU5XSU5EX0ZVTkNUSU9OKF9aTjlsaWJ1bndpbmQxM1Jl Z2lzdGVyc19wcGM2anVtcHRvRXYpCi0gLy8KLS0tLSBhL2xpYnVud2luZC9zcmMvVW53aW5kUmVn aXN0ZXJzU2F2ZS5TCi0rKysgYi9saWJ1bndpbmQvc3JjL1Vud2luZFJlZ2lzdGVyc1NhdmUuUwot QEAgLTU1NCw3ICs1NTQsNyBAQCBERUZJTkVfTElCVU5XSU5EX0ZVTkNUSU9OKF9fdW53X2dldGNv bnRleHQpCi0gICBibHIKLSAKLSAKLS0jZWxpZiBkZWZpbmVkKF9fcHBjX18pCi0rI2VsaWYgZGVm aW5lZChfX3Bvd2VycGNfXykKLSAKLSAvLwotIC8vIGV4dGVybiBpbnQgdW53X2dldGNvbnRleHQo dW53X2NvbnRleHRfdCogdGhyZWFkX3N0YXRlKQotLS0tIGEvbGlidW53aW5kL3NyYy9jb25maWcu aAotKysrIGIvbGlidW53aW5kL3NyYy9jb25maWcuaAotQEAgLTk1LDEyICs5NSwxMiBAQAotICNk ZWZpbmUgX0xJQlVOV0lORF9CVUlMRF9TSkxKX0FQSVMKLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5l ZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fcHBjX18pIHx8 IGRlZmluZWQoX19wcGM2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rI2lmIGRlZmlu ZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGNf XykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICNkZWZpbmUgX0xJQlVOV0lORF9TVVBQT1JU X0ZSQU1FX0FQSVMKLSAjZW5kaWYKLSAKLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5l ZChfX3g4Nl82NF9fKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICBk ZWZpbmVkKF9fcHBjX18pIHx8IGRlZmluZWQoX19wcGM2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJw YzY0X18pIHx8ICAgICAgICBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjX18pIHx8IGRlZmluZWQo X19wb3dlcnBjNjRfXykgfHwgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgKCFkZWZp bmVkKF9fQVBQTEVfXykgJiYgZGVmaW5lZChfX2FybV9fKSkgfHwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotICAgICAoZGVmaW5lZChfX2FybTY0X18pIHx8IGRlZmluZWQoX19hYXJj aDY0X18pKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIGRlZmluZWQoX19t aXBzX18pCi0tLS0gYS9saWJ1bndpbmQvc3JjL2xpYnVud2luZC5jcHAKLSsrKyBiL2xpYnVud2lu ZC9zcmMvbGlidW53aW5kLmNwcAotQEAgLTQyLDcgKzQyLDcgQEAgX0xJQlVOV0lORF9ISURERU4g aW50IF9fdW53X2luaXRfbG9jYWwodW53X2N1cnNvcl90ICpjdXJzb3IsCi0gIyBkZWZpbmUgUkVH SVNURVJfS0lORCBSZWdpc3RlcnNfeDg2XzY0Ci0gI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9f KQotICMgZGVmaW5lIFJFR0lTVEVSX0tJTkQgUmVnaXN0ZXJzX3BwYzY0Ci0tI2VsaWYgZGVmaW5l ZChfX3BwY19fKQotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjX18pCi0gIyBkZWZpbmUgUkVHSVNU RVJfS0lORCBSZWdpc3RlcnNfcHBjCi0gI2VsaWYgZGVmaW5lZChfX2FhcmNoNjRfXykKLSAjIGRl ZmluZSBSRUdJU1RFUl9LSU5EIFJlZ2lzdGVyc19hcm02NApkaWZmIC0tZ2l0IGEvc3JjcGtncy9s bHZtMTIvcGF0Y2hlcy9sbGRiLW11c2wucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xs ZGItbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjAxYzBkMTM4NTIz Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9sbGRiLW11c2wucGF0 Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0tLS0gYS9sbGRiL3NvdXJjZS9QbHVn aW5zL1Byb2Nlc3MvTGludXgvUHJvY2ZzLmgKLSsrKyBiL2xsZGIvc291cmNlL1BsdWdpbnMvUHJv Y2Vzcy9MaW51eC9Qcm9jZnMuaAotQEAgLTEwLDIxICsxMCwxMiBAQAotIC8vIHN5cy9wcm9jZnMu aCBvbiBBbmRyb2lkL0xpbnV4IGZvciBhbGwgc3VwcG9ydGVkIGFyY2hpdGVjdHVyZXMuCi0gCi0g I2luY2x1ZGUgPHN5cy9wdHJhY2UuaD4KLSsjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgotIAotLSNp ZmRlZiBfX0FORFJPSURfXwotLSNpZiBkZWZpbmVkKF9fYXJtNjRfXykgfHwgZGVmaW5lZChfX2Fh cmNoNjRfXykKLS10eXBlZGVmIHVuc2lnbmVkIGxvbmcgZWxmX2dyZWdfdDsKLS10eXBlZGVmIGVs Zl9ncmVnX3QKLS0gICAgZWxmX2dyZWdzZXRfdFsoc2l6ZW9mKHN0cnVjdCB1c2VyX3B0X3JlZ3Mp IC8gc2l6ZW9mKGVsZl9ncmVnX3QpKV07Ci0tdHlwZWRlZiBzdHJ1Y3QgdXNlcl9mcHNpbWRfc3Rh dGUgZWxmX2ZwcmVnc2V0X3Q7Ci0tI2lmbmRlZiBOVF9GUFJFR1NFVAotLSNkZWZpbmUgTlRfRlBS RUdTRVQgTlRfUFJGUFJFRwotLSNlbmRpZiAvLyBOVF9GUFJFR1NFVAotLSNlbGlmIGRlZmluZWQo X19taXBzX18pCi0tI2lmbmRlZiBOVF9GUFJFR1NFVAotLSNkZWZpbmUgTlRfRlBSRUdTRVQgTlRf UFJGUFJFRwotLSNlbmRpZiAvLyBOVF9GUFJFR1NFVAotLSNlbmRpZgotLSNlbHNlIC8vIF9fQU5E Uk9JRF9fCi0rI2lmICFkZWZpbmVkKF9fR0xJQkNfXykgJiYgZGVmaW5lZChfX3Bvd2VycGNfXykK LSsjZGVmaW5lIHB0X3JlZ3MgbXVzbF9wdF9yZWdzCi0rI2luY2x1ZGUgPHN5cy9wcm9jZnMuaD4K LSsjdW5kZWYgcHRfcmVncwotKyNlbHNlCi0gI2luY2x1ZGUgPHN5cy9wcm9jZnMuaD4KLS0jZW5k aWYgLy8gX19BTkRST0lEX18KLSsjZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEyL3Bh dGNoZXMvcHBjMzItY29tcGlsZXItcnQucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL3Bw YzMyLWNvbXBpbGVyLXJ0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTBh OWE3NzlkMWIuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL3BwYzMy LWNvbXBpbGVyLXJ0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotY29tbWl0 IGJhNGVkZTU5NWZmOTU5OTIzMmY1ZGQyYjQzODRjMjQzMTM3YjUzZmMKLUF1dGhvcjogRGFuaWVs IEtvbGVzYSA8ZGFuaWVsQG9jdGFmb3JnZS5vcmc+Ci1EYXRlOiAgIFR1ZSBKdW4gMjIgMjM6NDA6 NTQgMjAyMSArMDIwMAotCi0gICAgZW5hYmxlIGNvbXBpbGVyLXJ0IHN1cHBvcnQgZm9yIHBwYzMy Ci0KLWRpZmYgLS1naXQgYS9jb21waWxlci1ydC9jbWFrZS9iYXNlLWNvbmZpZy1peC5jbWFrZSBi L2NvbXBpbGVyLXJ0L2NtYWtlL2Jhc2UtY29uZmlnLWl4LmNtYWtlCi1pbmRleCAxZWRhYjQzLi41 YzBjOGEyIDEwMDY0NAotLS0tIGEvY29tcGlsZXItcnQvY21ha2UvYmFzZS1jb25maWctaXguY21h a2UKLSsrKyBiL2NvbXBpbGVyLXJ0L2NtYWtlL2Jhc2UtY29uZmlnLWl4LmNtYWtlCi1AQCAtMTgy LDkgKzE4Miw3IEBAIG1hY3JvKHRlc3RfdGFyZ2V0cykKLSAgICAgZWxzZWlmKCIke0NPTVBJTEVS X1JUX0RFRkFVTFRfVEFSR0VUX0FSQ0h9IiBNQVRDSEVTICJwb3dlcnBjNjRsZSIpCi0gICAgICAg dGVzdF90YXJnZXRfYXJjaChwb3dlcnBjNjRsZSAiIiAiLW02NCIpCi0gICAgIGVsc2VpZigiJHtD T01QSUxFUl9SVF9ERUZBVUxUX1RBUkdFVF9BUkNIfSIgTUFUQ0hFUyAicG93ZXJwYyIpCi0tICAg ICAgaWYoQ01BS0VfU1lTVEVNX05BTUUgTUFUQ0hFUyAiQUlYIikKLS0gICAgICAgIHRlc3RfdGFy Z2V0X2FyY2gocG93ZXJwYyAiIiAiLW0zMiIpCi0tICAgICAgZW5kaWYoKQotKyAgICAgIHRlc3Rf dGFyZ2V0X2FyY2gocG93ZXJwYyAiIiAiLW0zMiIpCi0gICAgICAgdGVzdF90YXJnZXRfYXJjaChw b3dlcnBjNjQgIiIgIi1tNjQiKQotICAgICBlbHNlaWYoIiR7Q09NUElMRVJfUlRfREVGQVVMVF9U QVJHRVRfQVJDSH0iIE1BVENIRVMgInMzOTB4IikKLSAgICAgICB0ZXN0X3RhcmdldF9hcmNoKHMz OTB4ICIiICIiKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTIvdGVtcGxhdGUgYi9zcmNwa2dz L2xsdm0xMi90ZW1wbGF0ZQppbmRleCA3Y2UxODAyOGU0YTMuLjdiMzYxYmJiZjViYyAxMDA2NDQK LS0tIGEvc3JjcGtncy9sbHZtMTIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9sbHZtMTIvdGVtcGxh dGUKQEAgLTEsMjUgKzEsMTcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2xsdm0xMicKIHBrZ25h bWU9bGx2bTEyCiB2ZXJzaW9uPTEyLjAuMQotcmV2aXNpb249MgorcmV2aXNpb249Mwogd3Jrc3Jj PSJsbHZtLXByb2plY3QtJHt2ZXJzaW9ufS5zcmMiCiBidWlsZF93cmtzcmM9bGx2bQogYnVpbGRf c3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSIKICAtRENNQUtFX0JVSUxEX1RZUEU9UmVsZWFz ZSAtV25vLWRldgogIC1ERU5BQkxFX0xJTktFUl9CVUlMRF9JRD1ZRVMKLSAtRExMREJfVVNFX1NZ U1RFTV9TSVg9WUVTCi0gLURMSUJDWFhfQ1hYX0FCST1saWJjeHhhYmkKLSAtRExJQkNYWF9FTkFC TEVfU1RBVElDX0FCSV9MSUJSQVJZPVlFUwotIC1ETElCQ1hYQUJJX1VTRV9MTFZNX1VOV0lOREVS PVlFUwotIC1ETElCQ1hYQUJJX0VOQUJMRV9TVEFUSUNfVU5XSU5ERVI9WUVTCi0gLURMSUJPTVBf RU5BQkxFX1NIQVJFRD1ZRVMKLSAtRExJQk9NUF9JTlNUQUxMX0FMSUFTRVM9Tk8KICAtRExMVk1f SU5DTFVERV9ET0NTPVlFUwogIC1ETExWTV9CVUlMRF9ET0NTPVlFUwogIC1ETExWTV9FTkFCTEVf U1BISU5YPVlFUwogIC1EU1BISU5YX1dBUk5JTkdTX0FTX0VSUk9SUz1OTwotIC1ETExWTV9JTlNU QUxMX1VUSUxTPVlFUwogIC1ETExWTV9CVUlMRF9MTFZNX0RZTElCPVlFUwogIC1ETExWTV9MSU5L X0xMVk1fRFlMSUI9WUVTCiAgLURMTFZNX0VOQUJMRV9SVFRJPVlFUwpAQCAtNTEsODcgKzQzLDEw IEBAIGNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgogCXBwYyopIGNvbmZpZ3VyZV9hcmdz Kz0iIC1EQ0xBTkdfRU5BQkxFX0NMQU5HRD1PRkYiIDs7CiBlc2FjCiAKLV9lbmFibGVkX3Byb2pl Y3RzPSJjbGFuZztjbGFuZy10b29scy1leHRyYTtjb21waWxlci1ydDtsaWJjeHg7bGliY3h4YWJp O2xpYnVud2luZDtsbGQiCi0KLV9sbGRiX2VuYWJsZT15ZXMKLV9saWJvbXBfZW5hYmxlPW5vCi0K LWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgotCXBwYzY0bGUqKSA7OwotCXBwYyp8aTY4 NiopIF9sbGRiX2VuYWJsZT1ubyA7OwotZXNhYwotCi1jYXNlICIkWEJQU19UQVJHRVRfTUFDSElO RSIgaW4KLQl4ODZfNjQqfGFhcmNoNjQqfHBwYzY0KikgX2xpYm9tcF9lbmFibGU9eWVzOzsKLWVz YWMKLQotc3VicGFja2FnZXM9ImNsYW5nLXRvb2xzLWV4dHJhIgotCi0jIG11c3QgZ28gYmVmb3Jl IGNsYW5nCi1pZiBbICIkX2xpYm9tcF9lbmFibGUiID0gInllcyIgXTsgdGhlbgotCV9lbmFibGVk X3Byb2plY3RzKz0iO29wZW5tcCIKLQlzdWJwYWNrYWdlcys9IiBsaWJvbXAgbGlib21wLWRldmVs IgotCSMgYmVjYXVzZSBvZiBjbWFrZSBub25zZW5zZSByZWZlcmVuY2luZyBsaWJvbXB0YXJnZXQu c28uKgotCWRlcGVuZHMrPSIgbGlib21wPj0ke3ZlcnNpb259XyR7cmV2aXNpb259IgotZmkKLQot c3VicGFja2FnZXMrPSIgY2xhbmcgY2xhbmctYW5hbHl6ZXIgbGliY2xhbmcgbGliY2xhbmctY3Bw Ci0gbGx2bS1saWJ1bndpbmQgbGx2bS1saWJ1bndpbmQtZGV2ZWwgbGliY3h4IGxpYmN4eC1kZXZl bAotIGxpYmN4eGFiaSBsaWJjeHhhYmktZGV2ZWwgbGlibGx2bTEyIgotCi1pZiBbICIkX2xsZGJf ZW5hYmxlIiA9ICJ5ZXMiIF07IHRoZW4KLQkjIFhYWCBmYWlscyB0byBjcm9zcyBjb21waWxlIGR1 ZSB0byBweXRob24KLQlfZW5hYmxlZF9wcm9qZWN0cys9IjtsbGRiIgotCXN1YnBhY2thZ2VzKz0i IGxsZGIgbGxkYi1kZXZlbCIKLWZpCi0KLXN1YnBhY2thZ2VzKz0iIGxsZCBsbGQtZGV2ZWwiCi0K LWNvbmZpZ3VyZV9hcmdzKz0iIC1ETExWTV9FTkFCTEVfUFJPSkVDVFM9JHtfZW5hYmxlZF9wcm9q ZWN0c30iCi0KIHBvc3RfcGF0Y2goKSB7Ci0JaWYgWyAiJF9sbGRiX2VuYWJsZSIgPSAieWVzIiBd OyB0aGVuCi0JCWlmIFsgIiRYQlBTX1RBUkdFVF9MSUJDIiA9ICJtdXNsIiBdOyB0aGVuCi0JCQl2 c2VkIC1pICdzfF9fcHRyYWNlX3JlcXVlc3R8aW50fGcnIFwKLQkJCQkke3dya3NyY30vbGxkYi9z b3VyY2UvUGx1Z2lucy9Qcm9jZXNzL0xpbnV4L05hdGl2ZVByb2Nlc3NMaW51eC5jcHAKLQkJZmkK LQkJIyBkaXNhYmxlIGRvY3MgZm9yIGxsZGIgYXMgdGhleSBmYWlsIHRvIGdlbmVyYXRlCi0JCXZz ZWQgLWkgJy9hZGRfc3ViZGlyZWN0b3J5KGRvY3MpL2QnIFwKLQkJCSR7d3Jrc3JjfS9sbGRiL0NN YWtlTGlzdHMudHh0Ci0JZmkKLQogCSMgdXBkYXRlIGNvbmZpZy5ndWVzcyBmb3IgYmV0dGVyIHBs YXRmb3JtIGRldGVjdGlvbgogCWNwICRYQlBTX0NPTU1PTkRJUi9lbnZpcm9ubWVudC9jb25maWd1 cmUvYXV0b21ha2UvY29uZmlnLmd1ZXNzIFwKIAkJJHt3cmtzcmN9L2xsdm0vY21ha2UKLQotCSMg Zml4IGxpbmtlciBmYWlsdXJlcyBvbiBzb21lIGFyY2hzCi0JdnNlZCAtaSAncyxjaGVja19saWJy YXJ5X2V4aXN0cyhnY2NfcyAuKixzZXQoTElCQ1hYQUJJX0hBU19HQ0NfU19MSUIgT04pLCcgXAot CQkke3dya3NyY30vbGliY3h4YWJpL2NtYWtlL2NvbmZpZy1peC5jbWFrZQotCXZzZWQgLWkgJ3Ms Y2hlY2tfbGlicmFyeV9leGlzdHMoZ2NjIC4qLHNldChMSUJDWFhBQklfSEFTX0dDQ19MSUIgT04p LCcgXAotCQkke3dya3NyY30vbGliY3h4YWJpL2NtYWtlL2NvbmZpZy1peC5jbWFrZQotCi0JIyBu ZWVkIGxpYnNzcF9ub25zaGFyZWQgb24gc29tZSBtdXNsIHBsYXRmb3JtcyAoYmVjYXVzZSBvZiBu b2RlZmF1bHRsaWJzKQotCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgotCQlwcGM2NCop IDs7Ci0JCXBwYyotbXVzbHxpNjg2LW11c2x8bWlwcyotbXVzbCkKLQkJCXZzZWQgLWkgJ3MsXiMg U2V0dXAgZmxhZ3MuJCxhZGRfbGlicmFyeV9mbGFncyhzc3Bfbm9uc2hhcmVkKSwnIFwKLQkJCQkk e3dya3NyY30vbGlidW53aW5kL3NyYy9DTWFrZUxpc3RzLnR4dAotCQkJdnNlZCAtaSAncyxeIyBT ZXR1cCBmbGFncy4kLGFkZF9saWJyYXJ5X2ZsYWdzKHNzcF9ub25zaGFyZWQpLCcgXAotCQkJCSR7 d3Jrc3JjfS9saWJjeHhhYmkvc3JjL0NNYWtlTGlzdHMudHh0Ci0JCQl2c2VkIC1pICdzLCNzc3As LCcgJHt3cmtzcmN9L2xpYmN4eC9DTWFrZUxpc3RzLnR4dAotCQkJOzsKLQllc2FjCi0KLQljYXNl ICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KLQkJeDg2XzY0LW11c2wpICMgc29tZSBzYW5pdGl6 ZXIgY3VycmVudGx5IG9ubHkgb24geDg2XzY0IHN0dWZmIG5lZWRzIGJhY2t0cmFjZQotCQkJdnNl ZCAtaSAncywjIFNldCBjb21tb24gbGluayBmbGFncy4sbGlzdChBUFBFTkQgU0FOSVRJWkVSX0NP TU1PTl9MSU5LX0xJQlMgZXhlY2luZm8pLCcgXAotCQkJCSR7d3Jrc3JjfS9jb21waWxlci1ydC9D TWFrZUxpc3RzLnR4dAotCQkJOzsKLQkJYXJtKi1tdXNsfGk2ODYtbXVzbCkgIyBzYW5pdGl6ZXIg Y29kZSBpcyBicm9rZW4gc2luY2UgaXQgZHVwbGljYXRlcyBzb21lIGxpYmMgYml0cwotCQkJdnNl ZCAtaSAncy9zZXQoQ09NUElMRVJfUlRfSEFTX1NBTklUSVpFUl9DT01NT04gVFJVRSkvc2V0KENP TVBJTEVSX1JUX0hBU19TQU5JVElaRVJfQ09NTU9OIEZBTFNFKS8nIFwKLQkJCQkke3dya3NyY30v Y29tcGlsZXItcnQvY21ha2UvY29uZmlnLWl4LmNtYWtlCi0JCQk7OwotCWVzYWMKIH0KIAogcHJl X2NvbmZpZ3VyZSgpIHsKQEAgLTE1OCwxMCArNzMsOCBAQCBwcmVfY29uZmlndXJlKCkgewogCQkJ Y21ha2UgLi4vLi4gLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UgXAogCQkJLURMTFZNX0VOQUJM RV9QUk9KRUNUUz0ke19lbmFibGVkX3Byb2plY3RzfQogCQltYWtlICR7bWFrZWpvYnN9IC1DIHV0 aWxzL1RhYmxlR2VuCi0JCW1ha2UgJHttYWtlam9ic30gLUMgdG9vbHMvY2xhbmcvdXRpbHMvVGFi bGVHZW4KIAkJWyAiJF9sbGRiX2VuYWJsZSIgPSAieWVzIiBdICYmIG1ha2UgJHttYWtlam9ic30g LUMgdG9vbHMvbGxkYi91dGlscy9UYWJsZUdlbgogCQljb25maWd1cmVfYXJncys9IiAtRExMVk1f VEFCTEVHRU49JHt3cmtzcmN9L2xsdm0vYnVpbGQvSE9TVC9iaW4vbGx2bS10YmxnZW4iCi0JCWNv bmZpZ3VyZV9hcmdzKz0iIC1EQ0xBTkdfVEFCTEVHRU49JHt3cmtzcmN9L2xsdm0vYnVpbGQvSE9T VC9iaW4vY2xhbmctdGJsZ2VuIgogCQlbICIkX2xsZGJfZW5hYmxlIiA9ICJ5ZXMiIF0gJiYgY29u ZmlndXJlX2FyZ3MrPSIgLURMTERCX1RBQkxFR0VOPSR7d3Jrc3JjfS9sbHZtL2J1aWxkL0hPU1Qv YmluL2xsZGItdGJsZ2VuIgogCQljZCAuLi8uLgogCWZpCkBAIC0yMDIsMjE4ICsxMTUsNiBAQCBk b19pbnN0YWxsKCkgewogCWlmIFsgIiRDUk9TU19CVUlMRCIgXTsgdGhlbgogCQlybSAtZiAke0RF U1RESVJ9L3Vzci9iaW4vbGx2bS1jb25maWctaG9zdAogCWZpCi0KLQkjIEluc3RhbGwgbGliY3h4 YWJpIGhlYWRlcnMKLQl2aW5zdGFsbCAke3dya3NyY30vbGliY3h4YWJpL2luY2x1ZGUvX19jeHhh YmlfY29uZmlnLmggNjQ0IHVzci9pbmNsdWRlCi0Jdmluc3RhbGwgJHt3cmtzcmN9L2xpYmN4eGFi aS9pbmNsdWRlL2N4eGFiaS5oIDY0NCB1c3IvaW5jbHVkZQotCi0JIyBJbnN0YWxsIGxpYnVud2lu ZCBoZWFkZXJzCi0Jdmluc3RhbGwgJHt3cmtzcmN9L2xpYnVud2luZC9pbmNsdWRlL19fbGlidW53 aW5kX2NvbmZpZy5oIDY0NCB1c3IvaW5jbHVkZQotCXZpbnN0YWxsICR7d3Jrc3JjfS9saWJ1bndp bmQvaW5jbHVkZS9saWJ1bndpbmQuaCA2NDQgdXNyL2luY2x1ZGUKLQl2aW5zdGFsbCAke3dya3Ny Y30vbGlidW53aW5kL2luY2x1ZGUvdW53aW5kLmggNjQ0IHVzci9pbmNsdWRlCi0Jdmluc3RhbGwg JHt3cmtzcmN9L2xpYnVud2luZC9pbmNsdWRlL21hY2gtby9jb21wYWN0X3Vud2luZF9lbmNvZGlu Zy5oIFwKLQkJNjQ0IHVzci9pbmNsdWRlL21hY2gtbwotfQotCi1jbGFuZy1hbmFseXplcl9wYWNr YWdlKCkgewotCXB5Y29tcGlsZV9kaXJzPSJ1c3Ivc2hhcmUvc2Nhbi12aWV3IgotCWRlcGVuZHM9 ImNsYW5nLSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0gcHl0aG9uMyBwZXJsIgotCXNob3J0X2Rlc2Mr PSIgLSBBIHNvdXJjZSBjb2RlIGFuYWx5c2lzIGZyYW1ld29yayIKLQlob21lcGFnZT0iaHR0cHM6 Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy8iCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlIHVz ci9zaGFyZS9tYW4vbWFuMS9zY2FuLWJ1aWxkLjEKLQkJdm1vdmUgIi91c3IvYmluL3NjYW4tKiIK LQkJdm1vdmUgIi91c3Ivc2hhcmUvc2Nhbi0qIgotCQl2bW92ZSAiL3Vzci9saWJleGVjLyphbmFs eXplciIKLQl9Ci19Ci0KLWNsYW5nLXRvb2xzLWV4dHJhX3BhY2thZ2UoKSB7Ci0JbGliMzJkaXNh YmxlZD15ZXMKLQlkZXBlbmRzPSJjbGFuZy0ke3ZlcnNpb259XyR7cmV2aXNpb259IHB5dGhvbjMi Ci0Jc2hvcnRfZGVzYys9IiAtIEV4dHJhIENsYW5nIHRvb2xzIgotCWhvbWVwYWdlPSJodHRwczov L2NsYW5nLmxsdm0ub3JnL2V4dHJhLyIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJdm1vdmUgdXNyL2lu Y2x1ZGUvY2xhbmctdGlkeQotCQl2bW92ZSB1c3IvYmluL2NsYW5nLWFwcGx5LXJlcGxhY2VtZW50 cwotCQl2bW92ZSB1c3IvYmluL2NsYW5nLXF1ZXJ5Ci0JCXZtb3ZlIHVzci9iaW4vY2xhbmctcmVu YW1lCi0JCXZtb3ZlIHVzci9iaW4vY2xhbmctdGlkeQotCQl2bW92ZSB1c3IvYmluL2RpYWd0b29s Ci0JCXZtb3ZlIHVzci9iaW4vZmluZC1hbGwtc3ltYm9scwotCQl2bW92ZSB1c3IvYmluL2htYXB0 b29sCi0JCXZtb3ZlIHVzci9iaW4vbW9kdWxhcml6ZQotCQl2bW92ZSB1c3IvYmluL3BwLXRyYWNl Ci0JCXZtb3ZlIHVzci9iaW4vc2FuY292Ci0JCXZtb3ZlICJ1c3IvbGliL2xpYmNsYW5nQXBwbHlS ZXBsYWNlbWVudHMqIgotCQl2bW92ZSAidXNyL2xpYi9saWJjbGFuZ1F1ZXJ5KiIKLQkJdm1vdmUg InVzci9saWIvbGliY2xhbmdUaWR5KiIKLQkJdm1vdmUgInVzci9zaGFyZS9jbGFuZy8qdGlkeSoi Ci0JCXZtb3ZlIHVzci9zaGFyZS9kb2MvY2xhbmctdG9vbHMKLQkJdm1vdmUgdXNyL3NoYXJlL21h bi9tYW4xL2V4dHJhY2xhbmd0b29scy4xCi0JCXZtb3ZlIHVzci9zaGFyZS9tYW4vbWFuMS9kaWFn dG9vbC4xCi0JfQotfQotCi1jbGFuZ19wYWNrYWdlKCkgewotCWxpYjMyZGlzYWJsZWQ9eWVzCi0J ZGVwZW5kcz0ibGlic3RkYysrLWRldmVsIGxpYmdjYy1kZXZlbCAgYmludXRpbHMgJHtYQlBTX1RB UkdFVF9MSUJDfS1kZXZlbAotCSBsaWJjbGFuZy0ke3ZlcnNpb259XyR7cmV2aXNpb259IgotCXNo b3J0X2Rlc2MrPSIgLSBDIGxhbmd1YWdlIGZhbWlseSBmcm9udGVuZCIKLQlob21lcGFnZT0iaHR0 cHM6Ly9jbGFuZy5sbHZtLm9yZy8iCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlIHVzci9pbmNs dWRlL2NsYW5nCi0JCXZtb3ZlIHVzci9pbmNsdWRlL2NsYW5nLWMKLQkJdm1vdmUgInVzci9iaW4v KmNsYW5nKiIKLQkJdm1vdmUgdXNyL2Jpbi9jLWluZGV4LXRlc3QKLQkJdm1vdmUgdXNyL2xpYi9j bGFuZwotCQl2bW92ZSB1c3IvbGliL2NtYWtlL2NsYW5nCi0JCXZtb3ZlICJ1c3IvbGliL2xpYmNs YW5nKi5hIgotCQl2bW92ZSAidXNyL2xpYi9saWJjbGFuZyouc28iCi0JCXZtb3ZlIHVzci9zaGFy ZS9jbGFuZwotCQl2bW92ZSB1c3Ivc2hhcmUvZG9jL2NsYW5nCi0JCXZtb3ZlIHVzci9zaGFyZS9t YW4vbWFuMS9jbGFuZy4xCi0JfQotfQotCi1saWJjbGFuZ19wYWNrYWdlKCkgewotCXNob3J0X2Rl c2MrPSIgLSBDIGZyb250ZW5kIHJ1bnRpbWUgbGlicmFyeSIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJ dm1vdmUgInVzci9saWIvbGliY2xhbmcuc28uKiIKLQl9Ci19Ci0KLWxpYmNsYW5nLWNwcF9wYWNr YWdlKCkgewotCXNob3J0X2Rlc2MrPSIgLSBDIGZyb250ZW5kIHJ1bnRpbWUgbGlicmFyeSAoQysr IGludGVyZmFjZSkiCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlICJ1c3IvbGliL2xpYmNsYW5n LWNwcC5zby4qIgotCX0KLX0KLQotbGxkX3BhY2thZ2UoKSB7Ci0JbGliMzJkaXNhYmxlZD15ZXMK LQlzaG9ydF9kZXNjKz0iIC0gbGlua2VyIgotCWhvbWVwYWdlPSJodHRwczovL2xsZC5sbHZtLm9y ZyIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJdm1vdmUgdXNyL2Jpbi9sbGQqCi0JCXZtb3ZlIHVzci9i aW4vd2FzbS1sZAotCQl2bW92ZSB1c3IvYmluL2xkLmxsZCoKLQkJdm1vdmUgdXNyL2Jpbi9sZDY0 LmxsZCoKLQkJdm1vdmUgdXNyL3NoYXJlL2RvYy9sbGQKLQl9Ci19Ci0KLWxsZC1kZXZlbF9wYWNr YWdlKCkgewotCWxpYjMyZGlzYWJsZWQ9eWVzCi0Jc2hvcnRfZGVzYys9IiAtIGxpbmtlciAtIGRl dmVsb3BtZW50IGZpbGVzIgotCWhvbWVwYWdlPSJodHRwczovL2xsZC5sbHZtLm9yZyIKLQlkZXBl bmRzPSJsbGQ+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZt b3ZlIHVzci9pbmNsdWRlL2xsZAotCQl2bW92ZSB1c3IvbGliL2NtYWtlL2xsZAotCQl2bW92ZSAi dXNyL2xpYi9saWJsbGQqYSIKLQl9Ci19Ci0KLWxsZGJfcGFja2FnZSgpIHsKLQlsaWIzMmRpc2Fi bGVkPXllcwotCWRlcGVuZHMrPSIgcHl0aG9uMy1zaXgiCi0Jc2hvcnRfZGVzYys9IiAtIExMREIg ZGVidWdnZXIiCi0JaG9tZXBhZ2U9Imh0dHBzOi8vbGxkYi5sbHZtLm9yZy8iCi0JcGtnX2luc3Rh bGwoKSB7Ci0JCXZtb3ZlIHVzci9iaW4vKmxsZGIqCi0JCXZtb3ZlIHVzci9saWIvbGlibGxkYipz by4qCi0JCXZtb3ZlIC91c3IvbGliL3B5dGhvbioKLQl9Ci19Ci0KLWxsZGItZGV2ZWxfcGFja2Fn ZSgpIHsKLQlsaWIzMmRpc2FibGVkPXllcwotCWRlcGVuZHM9ImxsZGI+PSR7dmVyc2lvbn1fJHty ZXZpc2lvbn0iCi0Jc2hvcnRfZGVzYys9IiAtIExMREIgZGVidWdnZXIgLSBkZXZlbG9wbWVudCBm aWxlcyIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJdm1vdmUgdXNyL2luY2x1ZGUvbGxkYgotCQl2bW92 ZSAidXNyL2xpYi9saWJsbGRiKi5zbyIKLQl9Ci19Ci0KLWxsdm0tbGlidW53aW5kX3BhY2thZ2Uo KSB7Ci0Jc2hvcnRfZGVzYys9IiAtIGxpYnVud2luZCIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJdm1v dmUgInVzci9saWIvbGlidW53aW5kLnNvLioiCi0JfQotfQotCi1sbHZtLWxpYnVud2luZC1kZXZl bF9wYWNrYWdlKCkgewotCXNob3J0X2Rlc2MrPSIgLSBsaWJ1bndpbmQgLSBkZXZlbG9wbWVudCBm aWxlcyIKLQlkZXBlbmRzPSJsbHZtLWxpYnVud2luZD49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIK LQljb25mbGljdHM9ImxpYnVud2luZC1kZXZlbD49MCIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJdm1v dmUgdXNyL2xpYi9saWJ1bndpbmQuc28KLQkJdm1vdmUgdXNyL2xpYi9saWJ1bndpbmQuYQotCQl2 bW92ZSAidXNyL2luY2x1ZGUvKnVud2luZCoiCi0JCXZtb3ZlIHVzci9pbmNsdWRlL21hY2gtbwot CQl2bW92ZSB1c3Ivc2hhcmUvZG9jL2xpYnVud2luZAotCX0KLX0KLQotbGliY3h4YWJpX3BhY2th Z2UoKSB7Ci0Jc2hvcnRfZGVzYys9IiAtIGxvdyBsZXZlbCBzdXBwb3J0IGZvciBsaWJjKysiCi0J cGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlICJ1c3IvbGliL2xpYmMrK2FiaS5zby4qIgotCX0KLX0K LQotbGliY3h4YWJpLWRldmVsX3BhY2thZ2UoKSB7Ci0Jc2hvcnRfZGVzYys9IiAtIGxvdyBsZXZl bCBzdXBwb3J0IGZvciBsaWJjKysgLSBkZXZlbG9wbWVudCBmaWxlcyIKLQlkZXBlbmRzPSJsaWJj eHhhYmk+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3Zl IHVzci9saWIvbGliYysrYWJpLnNvCi0JCXZtb3ZlIHVzci9saWIvbGliYysrYWJpLmEKLQkJdm1v dmUgInVzci9pbmNsdWRlLypjeHhhYmkqIgotCX0KLX0KLQotbGliY3h4X3BhY2thZ2UoKSB7Ci0J c2hvcnRfZGVzYys9IiAtIEMrKyBzdGFuZGFyZCBsaWJyYXJ5IgotCXBrZ19pbnN0YWxsKCkgewot CQl2bW92ZSAidXNyL2xpYi9saWJjKysuc28uKiIKLQl9Ci19Ci0KLWxpYmN4eC1kZXZlbF9wYWNr YWdlKCkgewotCXNob3J0X2Rlc2MrPSIgLSBDKysgc3RhbmRhcmQgbGlicmFyeSAtIGRldmVsb3Bt ZW50IGZpbGVzIgotCWRlcGVuZHM9ImxpYmN4eD49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKLQlw a2dfaW5zdGFsbCgpIHsKLQkJdm1vdmUgdXNyL2xpYi9saWJjKysuc28KLQkJdm1vdmUgdXNyL2xp Yi9saWJjKysuYQotCQl2bW92ZSB1c3IvbGliL2xpYmMrK2V4cGVyaW1lbnRhbC5hCi0JCXZtb3Zl IHVzci9pbmNsdWRlL2MrKwotCQl2bW92ZSB1c3Ivc2hhcmUvZG9jL2xpYmN4eAotCX0KLX0KLQot bGlib21wX3BhY2thZ2UoKSB7Ci0Jc2hvcnRfZGVzYys9IiAtIENsYW5nIE9wZW5NUCBzdXBwb3J0 IGxpYnJhcnkiCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlIHVzci9saWIvbGlib21wLnNvCi0J CXZtb3ZlICJ1c3IvbGliL2xpYm9tcHRhcmdldC5ydGwuKi5zbyIKLQkJdm1vdmUgdXNyL2xpYi9s aWJhcmNoZXIuc28KLQkJdm1vdmUgInVzci9saWIvbGlib21wKi5zby4qIgotCX0KLX0KLQotbGli b21wLWRldmVsX3BhY2thZ2UoKSB7Ci0Jc2hvcnRfZGVzYys9IiAtIENsYW5nIE9wZW5NUCBzdXBw b3J0IGxpYnJhcnkgLSBkZXZlbG9wbWVudCBmaWxlcyIKLQlkZXBlbmRzPSJsaWJvbXA+PSR7dmVy c2lvbn1fJHtyZXZpc2lvbn0iCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlICJ1c3IvbGliL2xp Ym9tcCouc28iCi0JCXZtb3ZlICJ1c3IvbGliL2xpYmFyY2hlcioiCi0JCXZtb3ZlICJ1c3IvaW5j bHVkZS9vbXAqLmgiCi0JCXZtb3ZlICJ1c3IvbGliL2NsYW5nLyR7dmVyc2lvbn0vaW5jbHVkZS9v bXAqLmgiCi0JCXZtb3ZlIHVzci9zaGFyZS9tYW4vbWFuMS9sbHZtb3Blbm1wLjEKLQkJdm1vdmUg dXNyL3NoYXJlL2RvYy9vcGVubXAKLQl9CiB9CiAKIGxpYmxsdm0xMl9wYWNrYWdlKCkgewoKRnJv bSAxY2IzMjQ5NzczNzdlMDU5ODYwMDYwODQzMWU2ZjQ4ZTk1NTg5ODI5IE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiBwcmV6IDxwcmV6QG5hdGlvbmFsLnNoaXRwb3N0aW5nLmFnZW5jeT4K RGF0ZTogV2VkLCA0IE1heSAyMDIyIDE0OjAwOjI4ICswMjAwClN1YmplY3Q6IFtQQVRDSCAwNC8y OV0gTmV3IHBhY2thZ2VzOiBjbGFuZzEyLCBsaWJjbGFuZzEyLCBsaWJjbGFuZzEyLWNwcCwKIGxs ZDEyLCBsbGQxMi1kZXZlbC4KCi0tLQogY29tbW9uL3NobGlicyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAzICsKIHNyY3BrZ3MvY2xhbmcxMiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMSArCiBzcmNwa2dzL2xpYmNsYW5nMTIgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgIDEgKwogc3JjcGtncy9saWJjbGFuZzEyLWNwcCAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAxICsKIHNyY3BrZ3MvbGxkMTIgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgMSArCiBzcmNwa2dzL2xsZDEyLWRldmVsICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDEgKwogLi4uY2xhbmctMDAxLWZpeC11bndpbmQtY2hhaW4taW5jbHVzaW9uLnBhdGNo IHwgIDQ0ICsrKysrKysKIC4uLi9wYXRjaGVzL2NsYW5nLTAwMi1hZGQtbXVzbC10cmlwbGVzLnBh dGNoICB8IDExMCArKysrKysrKysrKysrKysrKysKIC4uLi9jbGFuZy0wMDMtcHBjNjQtZHluYW1p Yy1saW5rZXItcGF0aC5wYXRjaCB8ICAxMyArKysKIC4uLi9wYXRjaGVzL2NsYW5nLTAwNC1wcGM2 NC1tdXNsLWVsZnYyLnBhdGNoICB8ICA0OCArKysrKysrKwogc3JjcGtncy9sbHZtMTIvdGVtcGxh dGUgICAgICAgICAgICAgICAgICAgICAgIHwgIDcxICsrKysrKysrKysrCiAxMSBmaWxlcyBjaGFu Z2VkLCAyOTQgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvY2xhbmcx MgogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvbGliY2xhbmcxMgogY3JlYXRlIG1vZGUgMTIw MDAwIHNyY3BrZ3MvbGliY2xhbmcxMi1jcHAKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL2xs ZDEyCiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9sbGQxMi1kZXZlbAogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY2xhbmctMDAxLWZpeC11bndpbmQtY2hhaW4t aW5jbHVzaW9uLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTIvcGF0Y2hl cy9jbGFuZy0wMDItYWRkLW11c2wtdHJpcGxlcy5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Y3BrZ3MvbGx2bTEyL3BhdGNoZXMvY2xhbmctMDAzLXBwYzY0LWR5bmFtaWMtbGlua2VyLXBhdGgu cGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2NsYW5nLTAw NC1wcGM2NC1tdXNsLWVsZnYyLnBhdGNoCgpkaWZmIC0tZ2l0IGEvY29tbW9uL3NobGlicyBiL2Nv bW1vbi9zaGxpYnMKaW5kZXggODFhY2MzOWRlZmI0Li40YjM3YTlmN2NiNDQgMTAwNjQ0Ci0tLSBh L2NvbW1vbi9zaGxpYnMKKysrIGIvY29tbW9uL3NobGlicwpAQCAtOTc1LDYgKzk3NSw5IEBAIGxp YnVjaGFyZGV0LnNvLjAgdWNoYXJkZXQtMC4wLjZfMQogbGliZ3Rrc291cmNldmlld21tLTMuMC5z by4wIGd0a3NvdXJjZXZpZXdtbS0zLjIuMF8xCiBsaWJ5YWpsLnNvLjIgeWFqbC0yLjAuMV8xCiBs aWJjb25mdXNlLnNvLjIgY29uZnVzZS0zLjIuMV8xCitsaWJsbGRiLnNvLjEyIGxsZGItMTIuMC4w XzEKK2xpYmNsYW5nLnNvLjEyIGxpYmNsYW5nLTEyLjAuMF8xCitsaWJjbGFuZy1jcHAuc28uMTIg bGliY2xhbmctY3BwLTEyLjAuMF8xCiBsaWJsbGRiLnNvLjE0IGxsZGItMTQuMC4zXzEKIGxpYmNs YW5nLnNvLjE0IGxpYmNsYW5nLTE0LjAuM18xCiBsaWJjbGFuZy1jcHAuc28uMTQgbGliY2xhbmct Y3BwLTE0LjAuM18xCmRpZmYgLS1naXQgYS9zcmNwa2dzL2NsYW5nMTIgYi9zcmNwa2dzL2NsYW5n MTIKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwLi5jZDYwZmQ3YTk4MWIK LS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2NsYW5nMTIKQEAgLTAsMCArMSBAQAorbGx2bTEy ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJjbGFu ZzEyIGIvc3JjcGtncy9saWJjbGFuZzEyCm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAw MDAwMDAwMC4uY2Q2MGZkN2E5ODFiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJjbGFu ZzEyCkBAIC0wLDAgKzEgQEAKK2xsdm0xMgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvbGliY2xhbmcxMi1jcHAgYi9zcmNwa2dzL2xpYmNsYW5nMTItY3Bw Cm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMC4uY2Q2MGZkN2E5ODFiCi0t LSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJjbGFuZzEyLWNwcApAQCAtMCwwICsxIEBACits bHZtMTIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xs ZDEyIGIvc3JjcGtncy9sbGQxMgpuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAw MDAuLmNkNjBmZDdhOTgxYgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGxkMTIKQEAgLTAs MCArMSBAQAorbGx2bTEyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv c3JjcGtncy9sbGQxMi1kZXZlbCBiL3NyY3BrZ3MvbGxkMTItZGV2ZWwKbmV3IGZpbGUgbW9kZSAx MjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwLi5jZDYwZmQ3YTk4MWIKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmNwa2dzL2xsZDEyLWRldmVsCkBAIC0wLDAgKzEgQEAKK2xsdm0xMgpcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY2xhbmct MDAxLWZpeC11bndpbmQtY2hhaW4taW5jbHVzaW9uLnBhdGNoIGIvc3JjcGtncy9sbHZtMTIvcGF0 Y2hlcy9jbGFuZy0wMDEtZml4LXVud2luZC1jaGFpbi1pbmNsdXNpb24ucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lNGVhYTc3ODNlN2EKLS0tIC9kZXYvbnVs bAorKysgYi9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2NsYW5nLTAwMS1maXgtdW53aW5kLWNoYWlu LWluY2x1c2lvbi5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitGcm9tIDM1Mjk3NDE2OWYwZDJiNWRh M2Q1MzIxZjU4OGY1ZTNiNTk0MTMzMGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBB bmRyZWEgQnJhbmNhbGVvbmkgPG1pd2F4ZUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDggU2VwIDIw MTUgMjI6MTQ6NTcgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzddIGZpeCB1bndpbmQgY2hhaW4g aW5jbHVzaW9uCisKKy0tLQorIGxpYi9IZWFkZXJzL3Vud2luZC5oIHwgOSArKysrKy0tLS0KKyAx IGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0t Z2l0IGEvbGliL0hlYWRlcnMvdW53aW5kLmggYi9saWIvSGVhZGVycy91bndpbmQuaAoraW5kZXgg MzAzZDc5Mi4uNDRlMTBjYyAxMDA2NDQKKy0tLSBhL2NsYW5nL2xpYi9IZWFkZXJzL3Vud2luZC5o CisrKysgYi9jbGFuZy9saWIvSGVhZGVycy91bndpbmQuaAorQEAgLTksOSArOSw2IEBACisgCisg LyogU2VlICJEYXRhIERlZmluaXRpb25zIGZvciBsaWJnY2NfcyIgaW4gdGhlIExpbnV4IFN0YW5k YXJkIEJhc2UuKi8KKyAKKy0jaWZuZGVmIF9fQ0xBTkdfVU5XSU5EX0gKKy0jZGVmaW5lIF9fQ0xB TkdfVU5XSU5EX0gKKy0KKyAjaWYgZGVmaW5lZChfX0FQUExFX18pICYmIF9faGFzX2luY2x1ZGVf bmV4dCg8dW53aW5kLmg+KQorIC8qIERhcndpbiAoZnJvbSAxMS54IG9uKSBwcm92aWRlIGFuIHVu d2luZC5oLiBJZiB0aGF0J3MgYXZhaWxhYmxlLAorICAqIHVzZSBpdC4gbGlidW53aW5kIHdyYXBz IHNvbWUgb2YgaXRzIGRlZmluaXRpb25zIGluICNpZmRlZiBfR05VX1NPVVJDRSwKK0BAIC0zOSw2 ICszNiw5IEBACisgIyBlbmRpZgorICNlbHNlCisgCisrI2lmbmRlZiBfX0NMQU5HX1VOV0lORF9I CisrI2RlZmluZSBfX0NMQU5HX1VOV0lORF9ICisrCisgI2luY2x1ZGUgPHN0ZGludC5oPgorIAor ICNpZmRlZiBfX2NwbHVzcGx1cworQEAgLTMyMiw2ICszMjIsNyBAQCBfVW53aW5kX1B0ciBfVW53 aW5kX0dldFRleHRSZWxCYXNlKHN0cnVjdCBfVW53aW5kX0NvbnRleHQgKik7CisgfQorICNlbmRp ZgorIAorKyNlbmRpZiAvKiBfX0NMQU5HX1VOV0lORF9IICovCisrCisgI2VuZGlmCisgCistI2Vu ZGlmIC8qIF9fQ0xBTkdfVU5XSU5EX0ggKi8KKy0tIAorMi41LjEKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvbGx2bTEyL3BhdGNoZXMvY2xhbmctMDAyLWFkZC1tdXNsLXRyaXBsZXMucGF0Y2ggYi9zcmNw a2dzL2xsdm0xMi9wYXRjaGVzL2NsYW5nLTAwMi1hZGQtbXVzbC10cmlwbGVzLnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMjU2ODhkNDBkYmMyCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jbGFuZy0wMDItYWRkLW11c2wtdHJp cGxlcy5wYXRjaApAQCAtMCwwICsxLDExMCBAQAorLS0tIGEvY2xhbmcvbGliL0RyaXZlci9Ub29s Q2hhaW5zL0dudS5jcHAKKysrKyBiL2NsYW5nL2xpYi9Ecml2ZXIvVG9vbENoYWlucy9HbnUuY3Bw CitAQCAtMjA4Niw3ICsyMDg2LDggQEAgdm9pZCBHZW5lcmljX0dDQzo6R0NDSW5zdGFsbGF0aW9u RGV0ZWN0b3I6OkFkZERlZmF1bHRHQ0NQcmVmaXhlcygKKyAgIHN0YXRpYyBjb25zdCBjaGFyICpj b25zdCBBUk1IRlRyaXBsZXNbXSA9IHsiYXJtLWxpbnV4LWdudWVhYmloZiIsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFybXY3aGwtcmVkaGF0LWxpbnV4 LWdudWVhYmkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJhcm12NmhsLXN1c2UtbGludXgtZ251ZWFiaSIsCistICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgImFybXY3aGwtc3VzZS1saW51eC1nbnVlYWJpIn07CisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFybXY3aGwtc3VzZS1s aW51eC1nbnVlYWJpIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiYXJtdjdsLWxpbnV4LWdudWVhYmloZiJ9OworICAgc3RhdGljIGNvbnN0IGNoYXIgKmNv bnN0IEFSTWViTGliRGlyc1tdID0geyIvbGliIn07CisgICBzdGF0aWMgY29uc3QgY2hhciAqY29u c3QgQVJNZWJUcmlwbGVzW10gPSB7ImFybWViLWxpbnV4LWdudWVhYmkiLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcm1lYi1saW51eC1hbmRyb2lkZWFi aSJ9OworQEAgLTIxNTMsOCArMjE1NCw3IEBAIHZvaWQgR2VuZXJpY19HQ0M6OkdDQ0luc3RhbGxh dGlvbkRldGVjdG9yOjpBZGREZWZhdWx0R0NDUHJlZml4ZXMoCisgICAgICAgInBvd2VycGM2NC1z dXNlLWxpbnV4IiwgInBvd2VycGMtbW9udGF2aXN0YS1saW51eHNwZSJ9OworICAgc3RhdGljIGNv bnN0IGNoYXIgKmNvbnN0IFBQQ0xFTGliRGlyc1tdID0geyIvbGliMzIiLCAiL2xpYiJ9OworICAg c3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IFBQQ0xFVHJpcGxlc1tdID0geyJwb3dlcnBjbGUtbGlu dXgtZ251IiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi cG93ZXJwY2xlLXVua25vd24tbGludXgtZ251IiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAicG93ZXJwY2xlLWxpbnV4LW11c2wifTsKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicG93ZXJwY2xlLXVua25vd24tbGlu dXgtZ251In07CisgCisgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgUFBDNjRMaWJEaXJzW10g PSB7Ii9saWI2NCIsICIvbGliIn07CisgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgUFBDNjRU cmlwbGVzW10gPSB7CitAQCAtMjIzNSw2ICsyMjM1LDg3IEBAIHZvaWQgR2VuZXJpY19HQ0M6OkdD Q0luc3RhbGxhdGlvbkRldGVjdG9yOjpBZGREZWZhdWx0R0NDUHJlZml4ZXMoCisgICAgIHJldHVy bjsKKyAgIH0KKyAKKysgIGlmIChUYXJnZXRUcmlwbGUuaXNNdXNsKCkpIHsKKysgICAgc3RhdGlj IGNvbnN0IGNoYXIgKmNvbnN0IEFBcmNoNjRNdXNsVHJpcGxlc1tdID0geyJhYXJjaDY0LWxpbnV4 LW11c2wifTsKKysgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IEFSTUhGTXVzbFRyaXBsZXNb XSA9IHsKKysgICAgICAgICJhcm0tbGludXgtbXVzbGVhYmloZiIsICJhcm12N2wtbGludXgtbXVz bGVhYmloZiIKKysgICAgfTsKKysgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IEFSTU11c2xU cmlwbGVzW10gPSB7ImFybS1saW51eC1tdXNsZWFiaSJ9OworKyAgICBzdGF0aWMgY29uc3QgY2hh ciAqY29uc3QgWDg2XzY0TXVzbFRyaXBsZXNbXSA9IHsieDg2XzY0LWxpbnV4LW11c2wifTsKKysg ICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IFg4Nk11c2xUcmlwbGVzW10gPSB7Imk2ODYtbGlu dXgtbXVzbCJ9OworKyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgTUlQU011c2xUcmlwbGVz W10gPSB7CisrICAgICAgICAibWlwcy1saW51eC1tdXNsIiwgIm1pcHNlbC1saW51eC1tdXNsIiwK KysgICAgICAgICJtaXBzZWwtbGludXgtbXVzbGhmIiwgIm1pcHMtbGludXgtbXVzbGhmIgorKyAg ICB9OworKyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgUFBDTXVzbFRyaXBsZXNbXSA9IHsi cG93ZXJwYy1saW51eC1tdXNsIn07CisrICAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBQUENM RU11c2xUcmlwbGVzW10gPSB7InBvd2VycGNsZS1saW51eC1tdXNsIn07CisrICAgIHN0YXRpYyBj b25zdCBjaGFyICpjb25zdCBQUEM2NE11c2xUcmlwbGVzW10gPSB7InBvd2VycGM2NC1saW51eC1t dXNsIn07CisrICAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBQUEM2NExFTXVzbFRyaXBsZXNb XSA9IHsicG93ZXJwYzY0bGUtbGludXgtbXVzbCJ9OworKworKyAgICBzd2l0Y2ggKFRhcmdldFRy aXBsZS5nZXRBcmNoKCkpIHsKKysgICAgY2FzZSBsbHZtOjpUcmlwbGU6OmFhcmNoNjQ6CisrICAg ICAgTGliRGlycy5hcHBlbmQoYmVnaW4oQUFyY2g2NExpYkRpcnMpLCBlbmQoQUFyY2g2NExpYkRp cnMpKTsKKysgICAgICBUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihBQXJjaDY0TXVzbFRyaXBs ZXMpLCBlbmQoQUFyY2g2NE11c2xUcmlwbGVzKSk7CisrICAgICAgQmlhcmNoTGliRGlycy5hcHBl bmQoYmVnaW4oQUFyY2g2NExpYkRpcnMpLCBlbmQoQUFyY2g2NExpYkRpcnMpKTsKKysgICAgICBC aWFyY2hUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihBQXJjaDY0TXVzbFRyaXBsZXMpLCBlbmQo QUFyY2g2NE11c2xUcmlwbGVzKSk7CisrICAgICAgYnJlYWs7CisrICAgIGNhc2UgbGx2bTo6VHJp cGxlOjphcm06CisrICAgICAgTGliRGlycy5hcHBlbmQoYmVnaW4oQVJNTGliRGlycyksIGVuZChB Uk1MaWJEaXJzKSk7CisrICAgICAgaWYgKFRhcmdldFRyaXBsZS5nZXRFbnZpcm9ubWVudCgpID09 IGxsdm06OlRyaXBsZTo6TXVzbEVBQklIRikgeworKyAgICAgICAgVHJpcGxlQWxpYXNlcy5hcHBl bmQoYmVnaW4oQVJNSEZNdXNsVHJpcGxlcyksIGVuZChBUk1IRk11c2xUcmlwbGVzKSk7CisrICAg ICAgfSBlbHNlIHsKKysgICAgICAgIFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKEFSTU11c2xU cmlwbGVzKSwgZW5kKEFSTU11c2xUcmlwbGVzKSk7CisrICAgICAgfQorKyAgICAgIGJyZWFrOwor KyAgICBjYXNlIGxsdm06OlRyaXBsZTo6eDg2XzY0OgorKyAgICAgIExpYkRpcnMuYXBwZW5kKGJl Z2luKFg4Nl82NExpYkRpcnMpLCBlbmQoWDg2XzY0TGliRGlycykpOworKyAgICAgIFRyaXBsZUFs aWFzZXMuYXBwZW5kKGJlZ2luKFg4Nl82NE11c2xUcmlwbGVzKSwgZW5kKFg4Nl82NE11c2xUcmlw bGVzKSk7CisrICAgICAgQmlhcmNoTGliRGlycy5hcHBlbmQoYmVnaW4oWDg2TGliRGlycyksIGVu ZChYODZMaWJEaXJzKSk7CisrICAgICAgQmlhcmNoVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4o WDg2TXVzbFRyaXBsZXMpLCBlbmQoWDg2TXVzbFRyaXBsZXMpKTsKKysgICAgICBicmVhazsKKysg ICAgY2FzZSBsbHZtOjpUcmlwbGU6Ong4NjoKKysgICAgICBMaWJEaXJzLmFwcGVuZChiZWdpbihY ODZMaWJEaXJzKSwgZW5kKFg4NkxpYkRpcnMpKTsKKysgICAgICBUcmlwbGVBbGlhc2VzLmFwcGVu ZChiZWdpbihYODZNdXNsVHJpcGxlcyksIGVuZChYODZNdXNsVHJpcGxlcykpOworKyAgICAgIEJp YXJjaExpYkRpcnMuYXBwZW5kKGJlZ2luKFg4Nl82NExpYkRpcnMpLCBlbmQoWDg2XzY0TGliRGly cykpOworKyAgICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFg4Nl82NE11c2xU cmlwbGVzKSwgZW5kKFg4Nl82NE11c2xUcmlwbGVzKSk7CisrICAgICAgYnJlYWs7CisrICAgIGNh c2UgbGx2bTo6VHJpcGxlOjptaXBzOgorKyAgICAgIExpYkRpcnMuYXBwZW5kKGJlZ2luKE1JUFNM aWJEaXJzKSwgZW5kKE1JUFNMaWJEaXJzKSk7CisrICAgICAgVHJpcGxlQWxpYXNlcy5hcHBlbmQo YmVnaW4oTUlQU011c2xUcmlwbGVzKSwgZW5kKE1JUFNNdXNsVHJpcGxlcykpOworKyAgICAgIGJy ZWFrOworKyAgICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjOgorKyAgICAgIExpYkRpcnMuYXBwZW5k KGJlZ2luKFBQQ0xpYkRpcnMpLCBlbmQoUFBDTGliRGlycykpOworKyAgICAgIFRyaXBsZUFsaWFz ZXMuYXBwZW5kKGJlZ2luKFBQQ011c2xUcmlwbGVzKSwgZW5kKFBQQ011c2xUcmlwbGVzKSk7Cisr ICAgICAgQmlhcmNoTGliRGlycy5hcHBlbmQoYmVnaW4oUFBDNjRMaWJEaXJzKSwgZW5kKFBQQzY0 TGliRGlycykpOworKyAgICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFBQQzY0 TXVzbFRyaXBsZXMpLCBlbmQoUFBDNjRNdXNsVHJpcGxlcykpOworKyAgICAgIGJyZWFrOworKyAg ICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjbGU6CisrICAgICAgTGliRGlycy5hcHBlbmQoYmVnaW4o UFBDTEVMaWJEaXJzKSwgZW5kKFBQQ0xFTGliRGlycykpOworKyAgICAgIFRyaXBsZUFsaWFzZXMu YXBwZW5kKGJlZ2luKFBQQ0xFTXVzbFRyaXBsZXMpLCBlbmQoUFBDTEVNdXNsVHJpcGxlcykpOwor KyAgICAgIEJpYXJjaExpYkRpcnMuYXBwZW5kKGJlZ2luKFBQQzY0TEVMaWJEaXJzKSwgZW5kKFBQ QzY0TEVMaWJEaXJzKSk7CisrICAgICAgQmlhcmNoVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4o UFBDNjRMRU11c2xUcmlwbGVzKSwgZW5kKFBQQzY0TEVNdXNsVHJpcGxlcykpOworKyAgICAgIGJy ZWFrOworKyAgICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjNjQ6CisrICAgICAgTGliRGlycy5hcHBl bmQoYmVnaW4oUFBDNjRMaWJEaXJzKSwgZW5kKFBQQzY0TGliRGlycykpOworKyAgICAgIFRyaXBs ZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFBQQzY0TXVzbFRyaXBsZXMpLCBlbmQoUFBDNjRNdXNsVHJp cGxlcykpOworKyAgICAgIEJpYXJjaExpYkRpcnMuYXBwZW5kKGJlZ2luKFBQQ0xpYkRpcnMpLCBl bmQoUFBDTGliRGlycykpOworKyAgICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2lu KFBQQ011c2xUcmlwbGVzKSwgZW5kKFBQQ011c2xUcmlwbGVzKSk7CisrICAgICAgYnJlYWs7Cisr ICAgIGNhc2UgbGx2bTo6VHJpcGxlOjpwcGM2NGxlOgorKyAgICAgIExpYkRpcnMuYXBwZW5kKGJl Z2luKFBQQzY0TEVMaWJEaXJzKSwgZW5kKFBQQzY0TEVMaWJEaXJzKSk7CisrICAgICAgVHJpcGxl QWxpYXNlcy5hcHBlbmQoYmVnaW4oUFBDNjRMRU11c2xUcmlwbGVzKSwgZW5kKFBQQzY0TEVNdXNs VHJpcGxlcykpOworKyAgICAgIEJpYXJjaExpYkRpcnMuYXBwZW5kKGJlZ2luKFBQQ0xFTGliRGly cyksIGVuZChQUENMRUxpYkRpcnMpKTsKKysgICAgICBCaWFyY2hUcmlwbGVBbGlhc2VzLmFwcGVu ZChiZWdpbihQUENMRU11c2xUcmlwbGVzKSwgZW5kKFBQQ0xFTXVzbFRyaXBsZXMpKTsKKysgICAg ICBicmVhazsKKysgICAgZGVmYXVsdDoKKysgICAgICBicmVhazsKKysgICAgfQorKyAgICBUcmlw bGVBbGlhc2VzLnB1c2hfYmFjayhUYXJnZXRUcmlwbGUuc3RyKCkpOworKyAgICBpZiAoVGFyZ2V0 VHJpcGxlLnN0cigpICE9IEJpYXJjaFRyaXBsZS5zdHIoKSkKKysgICAgICBCaWFyY2hUcmlwbGVB bGlhc2VzLnB1c2hfYmFjayhCaWFyY2hUcmlwbGUuc3RyKCkpOworKyAgICByZXR1cm47CisrICB9 CisrCisgICAvLyBBbmRyb2lkIHRhcmdldHMgc2hvdWxkIG5vdCB1c2UgR05VL0xpbnV4IHRvb2xz IG9yIGxpYnJhcmllcy4KKyAgIGlmIChUYXJnZXRUcmlwbGUuaXNBbmRyb2lkKCkpIHsKKyAgICAg c3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IEFBcmNoNjRBbmRyb2lkVHJpcGxlc1tdID0gewpkaWZm IC0tZ2l0IGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jbGFuZy0wMDMtcHBjNjQtZHluYW1pYy1s aW5rZXItcGF0aC5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY2xhbmctMDAzLXBwYzY0 LWR5bmFtaWMtbGlua2VyLXBhdGgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwLi40YWQ2NDEyZDFlNmMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xsdm0x Mi9wYXRjaGVzL2NsYW5nLTAwMy1wcGM2NC1keW5hbWljLWxpbmtlci1wYXRoLnBhdGNoCkBAIC0w LDAgKzEsMTMgQEAKKy0tLSBhL2NsYW5nL2xpYi9Ecml2ZXIvVG9vbENoYWlucy9MaW51eC5jcHAK KysrKyBiL2NsYW5nL2xpYi9Ecml2ZXIvVG9vbENoYWlucy9MaW51eC5jcHAKK0BAIC01MDQsMTAg KzUwNCw2IEBAIHN0ZDo6c3RyaW5nIExpbnV4OjpnZXREeW5hbWljTGlua2VyKGNvbnN0IEFyZ0xp c3QgJkFyZ3MpIGNvbnN0IHsKKyAgICAgTG9hZGVyID0gImxkLnNvLjEiOworICAgICBicmVhazsK KyAgIGNhc2UgbGx2bTo6VHJpcGxlOjpwcGM2NDoKKy0gICAgTGliRGlyID0gImxpYjY0IjsKKy0g ICAgTG9hZGVyID0KKy0gICAgICAgICh0b29sczo6cHBjOjpoYXNQUENBYmlBcmcoQXJncywgImVs ZnYyIikpID8gImxkNjQuc28uMiIgOiAibGQ2NC5zby4xIjsKKy0gICAgYnJlYWs7CisgICBjYXNl IGxsdm06OlRyaXBsZTo6cHBjNjRsZToKKyAgICAgTGliRGlyID0gImxpYjY0IjsKKyAgICAgTG9h ZGVyID0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY2xhbmctMDA0LXBwYzY0 LW11c2wtZWxmdjIucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2NsYW5nLTAwNC1wcGM2 NC1tdXNsLWVsZnYyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MC4uMjFmYzgwMDNjNWYxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hl cy9jbGFuZy0wMDQtcHBjNjQtbXVzbC1lbGZ2Mi5wYXRjaApAQCAtMCwwICsxLDQ4IEBACistLS0g YS9jbGFuZy9saWIvQmFzaWMvVGFyZ2V0cy9QUEMuaAorKysrIGIvY2xhbmcvbGliL0Jhc2ljL1Rh cmdldHMvUFBDLmgKK0BAIC00MTUsMTEgKzQxNSwxMCBAQCBwdWJsaWM6CisgICAgICAgTG9uZ0Rv dWJsZUZvcm1hdCA9ICZsbHZtOjpBUEZsb2F0OjpJRUVFZG91YmxlKCk7CisgICAgIH0gZWxzZSBp ZiAoKFRyaXBsZS5nZXRBcmNoKCkgPT0gbGx2bTo6VHJpcGxlOjpwcGM2NGxlKSkgeworICAgICAg IERhdGFMYXlvdXQgPSAiZS1tOmUtaTY0OjY0LW4zMjo2NCI7CistICAgICAgQUJJID0gImVsZnYy IjsKKyAgICAgfSBlbHNlIHsKKyAgICAgICBEYXRhTGF5b3V0ID0gIkUtbTplLWk2NDo2NC1uMzI6 NjQiOworLSAgICAgIEFCSSA9ICJlbGZ2MSI7CisgICAgIH0KKysgICAgQUJJID0gImVsZnYyIjsK KyAKKyAgICAgaWYgKFRyaXBsZS5pc09TRnJlZUJTRCgpIHx8IFRyaXBsZS5pc09TT3BlbkJTRCgp IHx8IFRyaXBsZS5pc011c2woKSkgeworICAgICAgIExvbmdEb3VibGVXaWR0aCA9IExvbmdEb3Vi bGVBbGlnbiA9IDY0OworLS0tIGEvY2xhbmcvbGliL0NvZGVHZW4vVGFyZ2V0SW5mby5jcHAKKysr KyBiL2NsYW5nL2xpYi9Db2RlR2VuL1RhcmdldEluZm8uY3BwCitAQCAtMTA5MjcsOSArMTA5Mjcs OSBAQCBjb25zdCBUYXJnZXRDb2RlR2VuSW5mbyAmQ29kZUdlbk1vZHVsZTo6Z2V0VGFyZ2V0Q29k ZUdlbkluZm8oKSB7CisgICAgICAgcmV0dXJuIFNldENHSW5mbyhuZXcgQUlYVGFyZ2V0Q29kZUdl bkluZm8oVHlwZXMsIC8qSXM2NEJpdCovIHRydWUpKTsKKyAKKyAgICAgaWYgKFRyaXBsZS5pc09T QmluRm9ybWF0RUxGKCkpIHsKKy0gICAgICBQUEM2NF9TVlI0X0FCSUluZm86OkFCSUtpbmQgS2lu ZCA9IFBQQzY0X1NWUjRfQUJJSW5mbzo6RUxGdjE7CistICAgICAgaWYgKGdldFRhcmdldCgpLmdl dEFCSSgpID09ICJlbGZ2MiIpCistICAgICAgICBLaW5kID0gUFBDNjRfU1ZSNF9BQklJbmZvOjpF TEZ2MjsKKysgICAgICBQUEM2NF9TVlI0X0FCSUluZm86OkFCSUtpbmQgS2luZCA9IFBQQzY0X1NW UjRfQUJJSW5mbzo6RUxGdjI7CisrICAgICAgaWYgKGdldFRhcmdldCgpLmdldEFCSSgpID09ICJl bGZ2MSIpCisrICAgICAgICBLaW5kID0gUFBDNjRfU1ZSNF9BQklJbmZvOjpFTEZ2MTsKKyAgICAg ICBib29sIElzU29mdEZsb2F0ID0gQ29kZUdlbk9wdHMuRmxvYXRBQkkgPT0gInNvZnQiOworIAor ICAgICAgIHJldHVybiBTZXRDR0luZm8oCistLS0gYS9jbGFuZy9saWIvRHJpdmVyL1Rvb2xDaGFp bnMvQ2xhbmcuY3BwCisrKysgYi9jbGFuZy9saWIvRHJpdmVyL1Rvb2xDaGFpbnMvQ2xhbmcuY3Bw CitAQCAtMTkyMCwxNCArMTkyMCw3IEBAIHZvaWQgQ2xhbmc6OkFkZFBQQ1RhcmdldEFyZ3MoY29u c3QgQXJnTGlzdCAmQXJncywKKyAgIGNvbnN0IGxsdm06OlRyaXBsZSAmVCA9IGdldFRvb2xDaGFp bigpLmdldFRyaXBsZSgpOworICAgaWYgKFQuaXNPU0JpbkZvcm1hdEVMRigpKSB7CisgICAgIHN3 aXRjaCAoZ2V0VG9vbENoYWluKCkuZ2V0QXJjaCgpKSB7CistICAgIGNhc2UgbGx2bTo6VHJpcGxl OjpwcGM2NDogeworLSAgICAgIGlmICgoVC5pc09TRnJlZUJTRCgpICYmIFQuZ2V0T1NNYWpvclZl cnNpb24oKSA+PSAxMykgfHwKKy0gICAgICAgICAgVC5pc09TT3BlbkJTRCgpIHx8IFQuaXNNdXNs KCkpCistICAgICAgICBBQklOYW1lID0gImVsZnYyIjsKKy0gICAgICBlbHNlCistICAgICAgICBB QklOYW1lID0gImVsZnYxIjsKKy0gICAgICBicmVhazsKKy0gICAgfQorKyAgICBjYXNlIGxsdm06 OlRyaXBsZTo6cHBjNjQ6CisgICAgIGNhc2UgbGx2bTo6VHJpcGxlOjpwcGM2NGxlOgorICAgICAg IEFCSU5hbWUgPSAiZWxmdjIiOworICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9s bHZtMTIvdGVtcGxhdGUgYi9zcmNwa2dzL2xsdm0xMi90ZW1wbGF0ZQppbmRleCA3YjM2MWJiYmY1 YmMuLjI3NGI1NzE4MzY1NCAxMDA2NDQKLS0tIGEvc3JjcGtncy9sbHZtMTIvdGVtcGxhdGUKKysr IGIvc3JjcGtncy9sbHZtMTIvdGVtcGxhdGUKQEAgLTQzLDYgKzQzLDEyIEBAIGNhc2UgIiRYQlBT X1RBUkdFVF9NQUNISU5FIiBpbgogCXBwYyopIGNvbmZpZ3VyZV9hcmdzKz0iIC1EQ0xBTkdfRU5B QkxFX0NMQU5HRD1PRkYiIDs7CiBlc2FjCiAKK19lbmFibGVkX3Byb2plY3RzPSJjbGFuZztsbGQi CisKK3N1YnBhY2thZ2VzKz0iIGNsYW5nMTIgbGliY2xhbmcxMiBsaWJjbGFuZzEyLWNwcCBsaWJs bHZtMTIgbGxkMTIgbGxkMTItZGV2ZWwiCisKK2NvbmZpZ3VyZV9hcmdzKz0iIC1ETExWTV9FTkFC TEVfUFJPSkVDVFM9JHtfZW5hYmxlZF9wcm9qZWN0c30iCisKIHBvc3RfcGF0Y2goKSB7CiAJIyB1 cGRhdGUgY29uZmlnLmd1ZXNzIGZvciBiZXR0ZXIgcGxhdGZvcm0gZGV0ZWN0aW9uCiAJY3AgJFhC UFNfQ09NTU9ORElSL2Vudmlyb25tZW50L2NvbmZpZ3VyZS9hdXRvbWFrZS9jb25maWcuZ3Vlc3Mg XApAQCAtNzMsOCArNzksMTAgQEAgcHJlX2NvbmZpZ3VyZSgpIHsKIAkJCWNtYWtlIC4uLy4uIC1E Q01BS0VfQlVJTERfVFlQRT1SZWxlYXNlIFwKIAkJCS1ETExWTV9FTkFCTEVfUFJPSkVDVFM9JHtf ZW5hYmxlZF9wcm9qZWN0c30KIAkJbWFrZSAke21ha2Vqb2JzfSAtQyB1dGlscy9UYWJsZUdlbgor CQltYWtlICR7bWFrZWpvYnN9IC1DIHRvb2xzL2NsYW5nL3V0aWxzL1RhYmxlR2VuCiAJCVsgIiRf bGxkYl9lbmFibGUiID0gInllcyIgXSAmJiBtYWtlICR7bWFrZWpvYnN9IC1DIHRvb2xzL2xsZGIv dXRpbHMvVGFibGVHZW4KIAkJY29uZmlndXJlX2FyZ3MrPSIgLURMTFZNX1RBQkxFR0VOPSR7d3Jr c3JjfS9sbHZtL2J1aWxkL0hPU1QvYmluL2xsdm0tdGJsZ2VuIgorCQljb25maWd1cmVfYXJncys9 IiAtRENMQU5HX1RBQkxFR0VOPSR7d3Jrc3JjfS9sbHZtL2J1aWxkL0hPU1QvYmluL2NsYW5nLXRi bGdlbiIKIAkJWyAiJF9sbGRiX2VuYWJsZSIgPSAieWVzIiBdICYmIGNvbmZpZ3VyZV9hcmdzKz0i IC1ETExEQl9UQUJMRUdFTj0ke3dya3NyY30vbGx2bS9idWlsZC9IT1NUL2Jpbi9sbGRiLXRibGdl biIKIAkJY2QgLi4vLi4KIAlmaQpAQCAtMTE3LDYgKzEyNSw2OSBAQCBkb19pbnN0YWxsKCkgewog CWZpCiB9CiAKK2NsYW5nMTJfcGFja2FnZSgpIHsKKwljb25mbGljdHM9ImNsYW5nIgorCWxpYjMy ZGlzYWJsZWQ9eWVzCisJZGVwZW5kcz0ibGlic3RkYysrLWRldmVsIGxpYmdjYy1kZXZlbCAgYmlu dXRpbHMgJHtYQlBTX1RBUkdFVF9MSUJDfS1kZXZlbAorCSBsaWJjbGFuZzEyLSR7dmVyc2lvbn1f JHtyZXZpc2lvbn0iCisJc2hvcnRfZGVzYys9IiAtIEMgbGFuZ3VhZ2UgZmFtaWx5IGZyb250ZW5k IgorCWhvbWVwYWdlPSJodHRwczovL2NsYW5nLmxsdm0ub3JnLyIKKwlwa2dfaW5zdGFsbCgpIHsK KwkJdm1vdmUgdXNyL2luY2x1ZGUvY2xhbmcKKwkJdm1vdmUgdXNyL2luY2x1ZGUvY2xhbmctYwor CQl2bW92ZSAidXNyL2Jpbi8qY2xhbmcqIgorCQl2bW92ZSB1c3IvYmluL2MtaW5kZXgtdGVzdAor CQl2bW92ZSB1c3IvbGliL2NsYW5nCisJCXZtb3ZlIHVzci9saWIvY21ha2UvY2xhbmcKKwkJdm1v dmUgInVzci9saWIvbGliY2xhbmcqLmEiCisJCXZtb3ZlICJ1c3IvbGliL2xpYmNsYW5nKi5zbyIK KwkJdm1vdmUgdXNyL3NoYXJlL2NsYW5nCisJCXZtb3ZlIHVzci9zaGFyZS9kb2MvY2xhbmcKKwkJ dm1vdmUgdXNyL3NoYXJlL21hbi9tYW4xL2NsYW5nLjEKKwl9Cit9CisKK2xpYmNsYW5nMTJfcGFj a2FnZSgpIHsKKwlzaG9ydF9kZXNjKz0iIC0gQyBmcm9udGVuZCBydW50aW1lIGxpYnJhcnkiCisJ cGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYmNsYW5nLnNvLioiCisJfQorfQor CitsaWJjbGFuZzEyLWNwcF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2MrPSIgLSBDIGZyb250ZW5k IHJ1bnRpbWUgbGlicmFyeSAoQysrIGludGVyZmFjZSkiCisJcGtnX2luc3RhbGwoKSB7CisJCXZt b3ZlICJ1c3IvbGliL2xpYmNsYW5nLWNwcC5zby4qIgorCX0KK30KKworbGxkMTJfcGFja2FnZSgp IHsKKwljb25mbGljdHM9ImxsZCIKKwlsaWIzMmRpc2FibGVkPXllcworCXNob3J0X2Rlc2MrPSIg LSBsaW5rZXIiCisJaG9tZXBhZ2U9Imh0dHBzOi8vbGxkLmxsdm0ub3JnIgorCXBrZ19pbnN0YWxs KCkgeworCQl2bW92ZSB1c3IvYmluL2xsZCoKKwkJdm1vdmUgdXNyL2Jpbi93YXNtLWxkCisJCXZt b3ZlIHVzci9iaW4vbGQubGxkKgorCQl2bW92ZSB1c3IvYmluL2xkNjQubGxkKgorCQl2bW92ZSB1 c3Ivc2hhcmUvZG9jL2xsZAorCX0KK30KKworbGxkMTItZGV2ZWxfcGFja2FnZSgpIHsKKwljb25m bGljdHM9ImxsZC1kZXZlbCIKKwlsaWIzMmRpc2FibGVkPXllcworCXNob3J0X2Rlc2MrPSIgLSBs aW5rZXIgLSBkZXZlbG9wbWVudCBmaWxlcyIKKwlob21lcGFnZT0iaHR0cHM6Ly9sbGQubGx2bS5v cmciCisJZGVwZW5kcz0ibGxkMTI+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCisJcGtnX2luc3Rh bGwoKSB7CisJCXZtb3ZlIHVzci9pbmNsdWRlL2xsZAorCQl2bW92ZSB1c3IvbGliL2NtYWtlL2xs ZAorCQl2bW92ZSAidXNyL2xpYi9saWJsbGQqYSIKKwl9Cit9CisKIGxpYmxsdm0xMl9wYWNrYWdl KCkgewogCXNob3J0X2Rlc2MrPSIgLSBydW50aW1lIGxpYnJhcnkiCiAJcGtnX2luc3RhbGwoKSB7 CgpGcm9tIDI3NDkzNWFlMDg4ZTZiM2ZiNjgwZjQ5Y2Y3NWQzOTE5NzNhYjUzOTEgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHByZXogPHByZXpAbmF0aW9uYWwuc2hpdHBvc3RpbmcuYWdl bmN5PgpEYXRlOiBNb24sIDIgTWF5IDIwMjIgMTk6MDc6NDAgKzAyMDAKU3ViamVjdDogW1BBVENI IDA1LzI5XSBjaHJvbWl1bTogdXBkYXRlIGZvciBsbHZtMTQKCi0tLQogc3JjcGtncy9jaHJvbWl1 bS90ZW1wbGF0ZSB8IDEwICsrLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMo KyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jaHJvbWl1bS90ZW1wbGF0 ZSBiL3NyY3BrZ3MvY2hyb21pdW0vdGVtcGxhdGUKaW5kZXggMGRjZTg3NzJmZGI4Li44YjYwNGEz NDkyMjkgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvY2hyb21pdW0vdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9jaHJvbWl1bS90ZW1wbGF0ZQpAQCAtMiw3ICsyLDcgQEAKIHBrZ25hbWU9Y2hyb21pdW0KICMg U2VlIGh0dHBzOi8vY2hyb21pdW1kYXNoLmFwcHNwb3QuY29tL3JlbGVhc2VzP3BsYXRmb3JtPUxp bnV4IGZvciB0aGUgbGF0ZXN0IHZlcnNpb24KIHZlcnNpb249MTAxLjAuNDk1MS40MQotcmV2aXNp b249MQorcmV2aXNpb249MgogYXJjaHM9Imk2ODYqIHg4Nl82NCogYWFyY2g2NCogYXJtdjdsKiBw cGM2NGxlKiIKIHNob3J0X2Rlc2M9Ikdvb2dsZSdzIGF0dGVtcHQgYXQgY3JlYXRpbmcgYSBzYWZl ciwgZmFzdGVyLCBhbmQgbW9yZSBzdGFibGUgYnJvd3NlciIKIG1haW50YWluZXI9IkR1bmNhZW4g PGR1bmNhZW5Adm9pZGxpbnV4Lm9yZz4iCkBAIC0yMCw3ICsyMCw3IEBAIGRlc2Nfb3B0aW9uX2Rl YnVnPSJCdWlsZCB3aXRoIGRlYnVnIHN5bWJvbHMiCiBkZXNjX29wdGlvbl9qc19vcHRpbWl6ZT0i T3B0aW1pemUgdGhlIEpTIHVzZWQgZm9yIENocm9taXVtJ3MgVUkiCiBkZXNjX29wdGlvbl9waXBl d2lyZT0iRW5hYmxlIHN1cHBvcnQgZm9yIHNjcmVlbiBzaGFyaW5nIGZvciBXZWJSVEMgdmlhIFBp cGVXaXJlIgogCi1ob3N0bWFrZWRlcGVuZHM9IiQodm9wdF9pZiBjbGFuZyAiY2xhbmcgbGxkIGxs dm0xMiIpIHB5dGhvbiBweXRob24zIHBrZ2NvbmYgcGVybCBncGVyZiBiaXNvbiBuaW5qYSBub2Rl anMgaHdpZHMKK2hvc3RtYWtlZGVwZW5kcz0iJCh2b3B0X2lmIGNsYW5nICJjbGFuZyBsbGQgbGx2 bTE0IikgcHl0aG9uIHB5dGhvbjMgcGtnY29uZiBwZXJsIGdwZXJmIGJpc29uIG5pbmphIG5vZGVq cyBod2lkcwogIGxpYmF0b21pYy1kZXZlbCBsaWJldmVudC1kZXZlbCBsaWJnbGliLWRldmVsICQo dm9wdF9pZiBqc19vcHRpbWl6ZSBvcGVuamRrKSB3YXlsYW5kLWRldmVsIGxpYmVwb3h5LWRldmVs IgogbWFrZWRlcGVuZHM9ImxpYnBuZy1kZXZlbCBndGsrLWRldmVsIGd0ayszLWRldmVsIG5zcy1k ZXZlbCBwY2l1dGlscy1kZXZlbAogIGxpYlhpLWRldmVsIGxpYmdjcnlwdC1kZXZlbCBsaWJnbm9t ZS1rZXlyaW5nLWRldmVsIGN1cHMtZGV2ZWwgZWxmdXRpbHMtZGV2ZWwKQEAgLTI2NiwxMiArMjY2 LDYgQEAgZG9fY29uZmlndXJlKCkgewogCQknZGlzYWJsZV9maWVsZHRyaWFsX3Rlc3RpbmdfY29u ZmlnPXRydWUnCiAKIAkJJ2lzX29mZmljaWFsX2J1aWxkPXRydWUnCi0KLQkJIyBzZWdmYXVsdHMg d2l0aCBsbHZtLTEyLjAuMQotCQknaXNfY2ZpPWZhbHNlJwotCQkndXNlX3RoaW5fbHRvPWZhbHNl JwotCQkndXNlX2NmaV9pY2FsbD1mYWxzZScKLQkJJ2Nocm9tZV9wZ29fcGhhc2U9MCcKIAkpCiAK IAlpZiBbICIkQ1JPU1NfQlVJTEQiIF07IHRoZW4KCkZyb20gYzE4NmIzOTI3NGY4NjdkODdiYzVk OTdkYjNjMzBlMjQ5YjAyNWJlOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogcHJleiA8 cHJlekBuYXRpb25hbC5zaGl0cG9zdGluZy5hZ2VuY3k+CkRhdGU6IE1vbiwgMiBNYXkgMjAyMiAx OTowNzozOCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDYvMjldIGdoZGw6IHVwZGF0ZSBmb3IgbGx2 bTE0CgotLS0KIHNyY3BrZ3MvZ2hkbC9wYXRjaGVzL3tsbHZtMTIucGF0Y2ggPT4gbGx2bS5wYXRj aH0gfCAyICsrCiBzcmNwa2dzL2doZGwvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24o LSkKIHJlbmFtZSBzcmNwa2dzL2doZGwvcGF0Y2hlcy97bGx2bTEyLnBhdGNoID0+IGxsdm0ucGF0 Y2h9ICg4MiUpCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9naGRsL3BhdGNoZXMvbGx2bTEyLnBhdGNo IGIvc3JjcGtncy9naGRsL3BhdGNoZXMvbGx2bS5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDgyJQpy ZW5hbWUgZnJvbSBzcmNwa2dzL2doZGwvcGF0Y2hlcy9sbHZtMTIucGF0Y2gKcmVuYW1lIHRvIHNy Y3BrZ3MvZ2hkbC9wYXRjaGVzL2xsdm0ucGF0Y2gKaW5kZXggOGQyZjc2YmZkYTA2Li45MjAxODE2 YWUwNTMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ2hkbC9wYXRjaGVzL2xsdm0xMi5wYXRjaAorKysg Yi9zcmNwa2dzL2doZGwvcGF0Y2hlcy9sbHZtLnBhdGNoCkBAIC03LDYgKzcsOCBAQCBpbmRleCBj MWMxYTZkLi5kYWQ3YzM4IDEwMDc1NQogICAgICAgICBjaGVja192ZXJzaW9uIDEwLjAgJGxsdm1f dmVyc2lvbiB8fAogICAgICAgICBjaGVja192ZXJzaW9uIDExLjAgJGxsdm1fdmVyc2lvbiB8fAog KyAgICAgICBjaGVja192ZXJzaW9uIDEyLjAgJGxsdm1fdmVyc2lvbiB8fAorKyAgICAgICBjaGVj a192ZXJzaW9uIDEzLjAgJGxsdm1fdmVyc2lvbiB8fAorKyAgICAgICBjaGVja192ZXJzaW9uIDE0 LjAgJGxsdm1fdmVyc2lvbiB8fAogICAgICAgICBmYWxzZTsgdGhlbgogICAgICBlY2hvICJEZWJ1 Z2dpbmcgaXMgZW5hYmxlZCB3aXRoIGxsdm0gJGxsdm1fdmVyc2lvbiIKICAgIGVsc2UKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvZ2hkbC90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ2hkbC90ZW1wbGF0ZQppbmRl eCBlNzU2ZDhjM2NkODcuLjljYTExNjliMjJiZCAxMDA2NDQKLS0tIGEvc3JjcGtncy9naGRsL3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3MvZ2hkbC90ZW1wbGF0ZQpAQCAtNyw3ICs3LDcgQEAKIHBrZ25h bWU9Z2hkbAogcmV2ZXJ0cz0iMjAxODExMjlfMSIKIHZlcnNpb249MS4wLjAKLXJldmlzaW9uPTEK K3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0tcHJl Zml4PS91c3IgLS1zcmNkaXI9Li4gLS1pbmNkaXI9bGliL2doZGwvaW5jbHVkZSIKIG1ha2VkZXBl bmRzPSJ6bGliLWRldmVsIgoKRnJvbSBhMGYxZGYyNmQzNDdmNjUxMzdhZWRjNzY5ZGY4MDVkMmE3 M2I2MjhkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBwcmV6IDxwcmV6QG5hdGlvbmFs LnNoaXRwb3N0aW5nLmFnZW5jeT4KRGF0ZTogTW9uLCAyIE1heSAyMDIyIDE5OjA3OjM4ICswMjAw ClN1YmplY3Q6IFtQQVRDSCAwNy8yOV0gcXQ1OiByZWJ1aWxkIGZvciBsbHZtMTQKCi0tLQogc3Jj cGtncy9xdDUvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyks IDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS90ZW1wbGF0ZSBiL3NyY3Br Z3MvcXQ1L3RlbXBsYXRlCmluZGV4IGVlNzg4ZmFkMjAxOS4uMjVmMTU1ODNhNDJkIDEwMDY0NAot LS0gYS9zcmNwa2dzL3F0NS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0NS90ZW1wbGF0ZQpAQCAt Myw3ICszLDcgQEAgcGtnbmFtZT1xdDUKIHZlcnNpb249NS4xNS4zKzIwMjIwMjIyCiAjIGNvbW1p dCBmY2NhODJjYTQwYTVkOGEwMmE0ZGRkOTA4NDZkMDcwZjJjNThjZmFkCiAjIGJhc2UgcmVwbzog aHR0cHM6Ly9pbnZlbnQua2RlLm9yZy9xdC9xdC9xdDUKLXJldmlzaW9uPTMKK3JldmlzaW9uPTQK IGJ1aWxkX3N0eWxlPW1ldGEKIGhvc3RtYWtlZGVwZW5kcz0iY21ha2UgY2xhbmcgZmxleCBwZXJs IGdsaWItZGV2ZWwgcGtnLWNvbmZpZwogIHB5dGhvbiByZTJjIHJ1Ynkgd2hpY2giCgpGcm9tIDc1 MDJlNjQwY2U1YjU3NWNhNDZlN2NiMTQwNmE5ZjVkOTEzYTEyMWIgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHByZXogPHByZXpAbmF0aW9uYWwuc2hpdHBvc3RpbmcuYWdlbmN5PgpEYXRl OiBNb24sIDIgTWF5IDIwMjIgMTk6MDc6MzggKzAyMDAKU3ViamVjdDogW1BBVENIIDA4LzI5XSB0 aWxpeDogcmVidWlsZCBmb3IgbGx2bTE0CgotLS0KIHNyY3BrZ3MvdGlsaXgvdGVtcGxhdGUgfCAy ICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL3RpbGl4L3RlbXBsYXRlIGIvc3JjcGtncy90aWxpeC90ZW1wbGF0ZQpp bmRleCBkOGYwMTRiYzc4YzUuLmFjMWJmN2RkM2JkZCAxMDA2NDQKLS0tIGEvc3JjcGtncy90aWxp eC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3RpbGl4L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAndGlsaXgnCiBwa2duYW1lPXRpbGl4CiB2ZXJzaW9uPTEuOS40 Ci1yZXZpc2lvbj0zCityZXZpc2lvbj00CiBidWlsZF9zdHlsZT1tZXNvbgogY29uZmlndXJlX2Fy Z3M9Ii1EYl9sdG89ZmFsc2UiCiBob3N0bWFrZWRlcGVuZHM9ImF1dG9tYWtlIGdldHRleHQtZGV2 ZWwgZ2RrLXBpeGJ1ZiBnbGliLWRldmVsIGxkYyBwbzRhIHBrZy1jb25maWcKCkZyb20gNTliMWE2 Y2Y5MGE2OGM2N2IwODA0NmY3YjIwZjk5Y2ZkOWYzZDYyOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogcHJleiA8cHJlekBuYXRpb25hbC5zaGl0cG9zdGluZy5hZ2VuY3k+CkRhdGU6IE1v biwgMiBNYXkgMjAyMiAxOTowNzozOCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDkvMjldIHNoaWJv a2VuMjogcmVidWlsZCBmb3IgbGx2bTE0CgotLS0KIHNyY3BrZ3Mvc2hpYm9rZW4yL3RlbXBsYXRl IHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpk aWZmIC0tZ2l0IGEvc3JjcGtncy9zaGlib2tlbjIvdGVtcGxhdGUgYi9zcmNwa2dzL3NoaWJva2Vu Mi90ZW1wbGF0ZQppbmRleCBiNTY2MTMyMjljMTMuLmFiOWQyYzRjYjhmOSAxMDA2NDQKLS0tIGEv c3JjcGtncy9zaGlib2tlbjIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zaGlib2tlbjIvdGVtcGxh dGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdzaGlib2tlbjInCiBwa2du YW1lPXNoaWJva2VuMgogdmVyc2lvbj01LjE1LjIKLXJldmlzaW9uPTQKK3JldmlzaW9uPTUKIF9w a2duYW1lPSJweXNpZGUtc2V0dXAtb3BlbnNvdXJjZS1zcmMtJHt2ZXJzaW9ufSIKIHdya3NyYz0i JHtfcGtnbmFtZS8lNS4xNC4yLjEvNS4xNC4yfSIKIGJ1aWxkX3dya3NyYz0ic291cmNlcy9zaGli b2tlbjIiCgpGcm9tIDNmMTAzNTUxZWI5MDhlYzM2NzcxYzkyYjlhNDA5YTZjOTk1YTk1NTIgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHByZXogPHByZXpAbmF0aW9uYWwuc2hpdHBvc3Rp bmcuYWdlbmN5PgpEYXRlOiBNb24sIDIgTWF5IDIwMjIgMTk6MDc6MzkgKzAyMDAKU3ViamVjdDog W1BBVENIIDEwLzI5XSBnbm9tZS1idWlsZGVyOiByZWJ1aWxkIGZvciBsbHZtMTQKCi0tLQogc3Jj cGtncy9nbm9tZS1idWlsZGVyL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nbm9tZS1idWls ZGVyL3RlbXBsYXRlIGIvc3JjcGtncy9nbm9tZS1idWlsZGVyL3RlbXBsYXRlCmluZGV4IDkzNTU5 YjIxNzc0Zi4uNWE1YTUxODkzYWU4IDEwMDY0NAotLS0gYS9zcmNwa2dzL2dub21lLWJ1aWxkZXIv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9nbm9tZS1idWlsZGVyL3RlbXBsYXRlCkBAIC0xLDcgKzEs NyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ25vbWUtYnVpbGRlcicKIHBrZ25hbWU9Z25vbWUt YnVpbGRlcgogdmVyc2lvbj00MS4zCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHls ZT1tZXNvbgogYnVpbGRfaGVscGVyPXFlbXUKIGNvbmZpZ3VyZV9hcmdzPSItRGhlbHA9dHJ1ZSAt RG5ldHdvcmtfdGVzdHM9ZmFsc2UiCgpGcm9tIGRmMmZlZDgxZTBmNjE1YTczNjY0MWQ4OWVkNmI5 ZGZmMzgyMjE4N2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHByZXogPHByZXpAbmF0 aW9uYWwuc2hpdHBvc3RpbmcuYWdlbmN5PgpEYXRlOiBNb24sIDIgTWF5IDIwMjIgMTk6MDc6Mzkg KzAyMDAKU3ViamVjdDogW1BBVENIIDExLzI5XSBiY2M6IHJlYnVpbGQgZm9yIGxsdm0xNAoKLS0t CiBzcmNwa2dzL2JjYy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlv bigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmNjL3RlbXBsYXRlIGIv c3JjcGtncy9iY2MvdGVtcGxhdGUKaW5kZXggNTQ1MDliNjNkNWE3Li4yY2ZhMGEyOTc3ZDAgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvYmNjL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvYmNjL3RlbXBsYXRl CkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnYmNjJwogcGtnbmFtZT1iY2MK IHZlcnNpb249MC4yNC4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiB3cmtzcmM9ImJjYyIKIGJ1 aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURSRVZJU0lPTj0ke3ZlcnNpb259IC1E RU5BQkxFX0xMVk1fU0hBUkVEPTEiCgpGcm9tIDBjODVhOGUyZjNiM2I1MmZjZDZmMzM5OGQ5NGVm Yzk3Yjg0MTE2NzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHByZXogPHByZXpAbmF0 aW9uYWwuc2hpdHBvc3RpbmcuYWdlbmN5PgpEYXRlOiBNb24sIDIgTWF5IDIwMjIgMTk6MDc6Mzkg KzAyMDAKU3ViamVjdDogW1BBVENIIDEyLzI5XSBtZXNhOiByZWJ1aWxkIGZvciBsbHZtMTQKCi0t LQogc3JjcGtncy9tZXNhL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0 aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tZXNhL3RlbXBsYXRl IGIvc3JjcGtncy9tZXNhL3RlbXBsYXRlCmluZGV4IGM5MDUwMGRlNzQxNi4uOGYwODI2MmZiMTM1 IDEwMDY0NAotLS0gYS9zcmNwa2dzL21lc2EvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tZXNhL3Rl bXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbWVzYScKIHBrZ25h bWU9bWVzYQogdmVyc2lvbj0yMS4zLjcKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0 eWxlPW1lc29uCiBjb25maWd1cmVfYXJncz0iLURnbHZuZD10cnVlIC1Ec2hhcmVkLWdsYXBpPWVu YWJsZWQgLURnYm09ZW5hYmxlZCAtRGVnbD1lbmFibGVkCiAgLURvc21lc2E9dHJ1ZSAtRGdsZXMx PWVuYWJsZWQgLURnbGVzMj1lbmFibGVkIC1EZ2x4PWRyaSAtRGRyaTM9ZW5hYmxlZAoKRnJvbSA4 ZjIxNTgwNzgyZTA4ZmU3MGVlMzc3NWEwNTA0ODdlOGI1ZjQ5MTdmIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiBwcmV6IDxwcmV6QG5hdGlvbmFsLnNoaXRwb3N0aW5nLmFnZW5jeT4KRGF0 ZTogTW9uLCAyIE1heSAyMDIyIDE5OjA3OjQwICswMjAwClN1YmplY3Q6IFtQQVRDSCAxMy8yOV0g anVDaSsrOiByZWJ1aWxkIGZvciBsbHZtMTQKCi0tLQogc3JjcGtncy9qdUNpKysvdGVtcGxhdGUg fCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL2p1Q2krKy90ZW1wbGF0ZSBiL3NyY3BrZ3MvanVDaSsrL3RlbXBs YXRlCmluZGV4IDFhNzYwNGI0NGEwMC4uNTEwMzMyNGRlYzIwIDEwMDY0NAotLS0gYS9zcmNwa2dz L2p1Q2krKy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2p1Q2krKy90ZW1wbGF0ZQpAQCAtMSw3ICsx LDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2p1Q2krKycKIHBrZ25hbWU9anVDaSsrCiB2ZXJz aW9uPTEuNi4yCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBfbGliY2xhbmdtbV9jb21taXQ9ImIz NDJmNGRkNmRlNGZlNTA5YTY5MmE0YjRmY2ZjN2UyNGFhZTk1OTAiCiBfdGlueV9jb21taXQ9ImM5 YzhiZjgxMGRkYWQ4Y2QxNzg4MmI5YTllZTYyOGE2OTBlNzc5ZjUiCiB3cmtzcmM9Imp1Y2lwcC12 JHt2ZXJzaW9ufSIKCkZyb20gYmEyNjdlMmE4NTQ1NTk3ZTBmYjhlNjQzZmNmNjE2ODk3YzNmYTZl NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogcHJleiA8cHJlekBuYXRpb25hbC5zaGl0 cG9zdGluZy5hZ2VuY3k+CkRhdGU6IE1vbiwgMiBNYXkgMjAyMiAxOTowNzo0MCArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMTQvMjldIGtkZXZlbG9wOiByZWJ1aWxkIGZvciBsbHZtMTQKCi0tLQogc3Jj cGtncy9rZGV2ZWxvcC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlv bigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mva2RldmVsb3AvdGVtcGxh dGUgYi9zcmNwa2dzL2tkZXZlbG9wL3RlbXBsYXRlCmluZGV4IDAxMDE4NTg0OWQ4MC4uYWJmMDhj MzEzMDcxIDEwMDY0NAotLS0gYS9zcmNwa2dzL2tkZXZlbG9wL3RlbXBsYXRlCisrKyBiL3NyY3Br Z3Mva2RldmVsb3AvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdrZGV2ZWxvcCcKIHBrZ25hbWU9a2RldmVsb3AKIHZlcnNpb249MjEuMTIuMwotcmV2aXNpb249 MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItREJVSUxE X1RFU1RJTkc9T0ZGIgogaG9zdG1ha2VkZXBlbmRzPSJleHRyYS1jbWFrZS1tb2R1bGVzIHF0NS1x bWFrZSBxdDUtaG9zdC10b29scyBxdDUtdG9vbHMKCkZyb20gNDBjYzM4ZTUyZWFkNTFiZWRmODUx ZDNjYjA5NTA5OTgzNTBjY2RlNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogcHJleiA8 cHJlekBuYXRpb25hbC5zaGl0cG9zdGluZy5hZ2VuY3k+CkRhdGU6IE1vbiwgMiBNYXkgMjAyMiAx OTowNzo0MCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMTUvMjldIGNvZGVsaXRlOiByZWJ1aWxkIGZv ciBsbHZtMTQKCi0tLQogc3JjcGtncy9jb2RlbGl0ZS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvY29kZWxpdGUvdGVtcGxhdGUgYi9zcmNwa2dzL2NvZGVsaXRlL3RlbXBsYXRlCmluZGV4IDNh OTkzYTJjMGNmYi4uMjRlMmM4NzlkZDQ1IDEwMDY0NAotLS0gYS9zcmNwa2dzL2NvZGVsaXRlL3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3MvY29kZWxpdGUvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdjb2RlbGl0ZScKIHBrZ25hbWU9Y29kZWxpdGUKIHZlcnNpb249 MTUuMC42Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogYnVpbGRf aGVscGVyPWNtYWtlLXd4V2lkZ2V0cy1ndGszCiBjb25maWd1cmVfYXJncz0iLURXSVRIX1BDSD0w IC1EV0lUSF9XWF9DT05GSUc9d3gtY29uZmlnLWd0azMKCkZyb20gYjdlZjY1YjdlNTA4NjQwOWU4 MTgxNWRhOGZhMTk4NTFkZWNlOGM4NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogcHJl eiA8cHJlekBuYXRpb25hbC5zaGl0cG9zdGluZy5hZ2VuY3k+CkRhdGU6IE1vbiwgMiBNYXkgMjAy MiAxOTowNzo0MSArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMTYvMjldIGNjbHM6IHJlYnVpbGQgZm9y IGxsdm0xNAoKLS0tCiBzcmNwa2dzL2NjbHMvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdl ZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Nj bHMvdGVtcGxhdGUgYi9zcmNwa2dzL2NjbHMvdGVtcGxhdGUKaW5kZXggZmJiN2M2ODQ3YmMxLi40 MGFiYTNiNTViZmUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvY2Nscy90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL2NjbHMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdj Y2xzJwogcGtnbmFtZT1jY2xzCiB2ZXJzaW9uPTAuMjAyMTAzMzAKLXJldmlzaW9uPTIKK3Jldmlz aW9uPTMKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9ImNsYW5nLXRvb2xzLWV4 dHJhIgogbWFrZWRlcGVuZHM9Imxsdm0gbmN1cnNlcy1kZXZlbCByYXBpZGpzb24gemxpYi1kZXZl bCBjbGFuZy10b29scy1leHRyYSIKCkZyb20gYjhhZGJjZTYzYTdiNzI2NDIyZjJmMTA0ZTZkN2Ew ZGM0MmFlNzI4MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogcHJleiA8cHJlekBuYXRp b25hbC5zaGl0cG9zdGluZy5hZ2VuY3k+CkRhdGU6IE1vbiwgMiBNYXkgMjAyMiAxOTowNzo0MSAr MDIwMApTdWJqZWN0OiBbUEFUQ0ggMTcvMjldIGNsYXp5OiByZWJ1aWxkIGZvciBsbHZtMTQKCi0t LQogc3JjcGtncy9jbGF6eS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2Vy dGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY2xhenkvdGVtcGxh dGUgYi9zcmNwa2dzL2NsYXp5L3RlbXBsYXRlCmluZGV4IDExZjNiYWI1NWFlZi4uZjgxZGUwOGFi ODM2IDEwMDY0NAotLS0gYS9zcmNwa2dzL2NsYXp5L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvY2xh enkvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdjbGF6eScK IHBrZ25hbWU9Y2xhenkKIHZlcnNpb249MS4xMQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVp bGRfc3R5bGU9Y21ha2UKIGJ1aWxkX2hlbHBlcj1xZW11CiBob3N0bWFrZWRlcGVuZHM9Imxsdm0i CgpGcm9tIDg5ZGNmZjZhYzlhYjFlNDc3YjEwMjlmZjU5NjNhOGFmNTMzZDU1NzUgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHByZXogPHByZXpAbmF0aW9uYWwuc2hpdHBvc3RpbmcuYWdl bmN5PgpEYXRlOiBNb24sIDIgTWF5IDIwMjIgMTk6MDc6NDEgKzAyMDAKU3ViamVjdDogW1BBVENI IDE4LzI5XSBicGZ0cmFjZTogcmVidWlsZCBmb3IgbGx2bTE0CgotLS0KIHNyY3BrZ3MvYnBmdHJh Y2UvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVs ZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2JwZnRyYWNlL3RlbXBsYXRlIGIvc3JjcGtn cy9icGZ0cmFjZS90ZW1wbGF0ZQppbmRleCAyOGFiM2M2MjYzOTkuLmViMjQ4MGQyMjMwZSAxMDA2 NDQKLS0tIGEvc3JjcGtncy9icGZ0cmFjZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2JwZnRyYWNl L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnYnBmdHJhY2Un CiBwa2duYW1lPWJwZnRyYWNlCiB2ZXJzaW9uPTAuMTQuMQotcmV2aXNpb249MQorcmV2aXNpb249 MgogYXJjaHM9Ing4Nl82NCogYWFyY2g2NCogcHBjNjQqIgogYnVpbGRfc3R5bGU9Y21ha2UKIGNv bmZpZ3VyZV9hcmdzPSItREJVSUxEX1RFU1RJTkc9T0ZGIiAgIyBuZWVkcyByb290IHRvIHJ1bgoK RnJvbSBhMzg2MzcxZDA4NzhiNWE5OWU5MzIxMTAzZmMxOWNiMjI0NjY1MGY3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBwcmV6IDxwcmV6QG5hdGlvbmFsLnNoaXRwb3N0aW5nLmFnZW5j eT4KRGF0ZTogTW9uLCAyIE1heSAyMDIyIDE5OjA3OjQxICswMjAwClN1YmplY3Q6IFtQQVRDSCAx OS8yOV0gcnRhZ3M6IHJlYnVpbGQgZm9yIGxsdm0xNAoKLS0tCiBzcmNwa2dzL3J0YWdzL3RlbXBs YXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0p CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9ydGFncy90ZW1wbGF0ZSBiL3NyY3BrZ3MvcnRhZ3MvdGVt cGxhdGUKaW5kZXggYjQ5NmExYjBlNzIxLi45YjE2MWU2OTBkNzYgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3MvcnRhZ3MvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9ydGFncy90ZW1wbGF0ZQpAQCAtMSw3ICsx LDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3J0YWdzJwogcGtnbmFtZT1ydGFncwogdmVyc2lv bj0yLjM4Ci1yZXZpc2lvbj01CityZXZpc2lvbj02CiBidWlsZF9zdHlsZT1jbWFrZQogIyBEb24n dCBydW4gdGVzdHMgaW4gZG9faW5zdGFsbCwgcGxlYXNlLgogY29uZmlndXJlX2FyZ3M9Ii1EU0tJ UF9DVEVTVD1UUlVFIgoKRnJvbSAyM2Y1NDVkMGMxZjY4OTQwNTRlN2M3MmRhODg2NTRlY2FkNDAw NDc5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBwcmV6IDxwcmV6QG5hdGlvbmFsLnNo aXRwb3N0aW5nLmFnZW5jeT4KRGF0ZTogTW9uLCAyIE1heSAyMDIyIDIxOjA3OjE5ICswMjAwClN1 YmplY3Q6IFtQQVRDSCAyMC8yOV0gYmVpZ25ldDogcmVtb3ZlIHBhY2thZ2UKCi0tLQogc3JjcGtn cy9iZWlnbmV0L3BhdGNoZXMvY2xfdWludC5wYXRjaCAgICAgICAgIHwgIDIyIC0KIC4uLjQxOWEw MDA4ZTM4ZWYyZDlkMjU1ZDllOWM3NGU5ZmJhMDg0Yi5wYXRjaCB8IDEzNCAtLS0KIHNyY3BrZ3Mv YmVpZ25ldC9wYXRjaGVzL2xsdm0wNi5wYXRjaCAgICAgICAgICB8ICAzMyAtCiBzcmNwa2dzL2Jl aWduZXQvcGF0Y2hlcy9sbHZtMDgucGF0Y2ggICAgICAgICAgfCAgNTYgLS0KIHNyY3BrZ3MvYmVp Z25ldC9wYXRjaGVzL2xsdm0wOS5wYXRjaCAgICAgICAgICB8IDExMSAtLS0KIHNyY3BrZ3MvYmVp Z25ldC9wYXRjaGVzL2xsdm0xMC5wYXRjaCAgICAgICAgICB8IDM0NyAtLS0tLS0tCiBzcmNwa2dz L2JlaWduZXQvcGF0Y2hlcy9sbHZtMTEucGF0Y2ggICAgICAgICAgfCA5MzcgLS0tLS0tLS0tLS0t LS0tLS0tCiBzcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMTIucGF0Y2ggICAgICAgICAgfCAx MTUgLS0tCiBzcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9tdXNsLnBhdGNoICAgICAgICAgICAgfCAg MTEgLQogc3JjcGtncy9iZWlnbmV0L3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgIHwgIDIy IC0KIHNyY3BrZ3MvYmVpZ25ldC91cGRhdGUgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSAt CiBzcmNwa2dzL3JlbW92ZWQtcGFja2FnZXMvdGVtcGxhdGUgICAgICAgICAgICAgfCAgIDMgKy0K IDEyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMTc5MCBkZWxldGlvbnMoLSkKIGRl bGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9jbF91aW50LnBhdGNoCiBk ZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvZTFiMjQxOWEwMDA4ZTM4 ZWYyZDlkMjU1ZDllOWM3NGU5ZmJhMDg0Yi5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0wNi5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0wOC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0wOS5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0xMC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0xMS5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0xMi5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvYmVpZ25ldC9wYXRjaGVzL211c2wucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dz L2JlaWduZXQvdGVtcGxhdGUKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2JlaWduZXQvdXBk YXRlCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvY2xfdWludC5wYXRjaCBi L3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2NsX3VpbnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDg2YmEwMGYwNGU5NS4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmVp Z25ldC9wYXRjaGVzL2NsX3VpbnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBA Ci0tLS0gYS9zcmMvY2xfYXBpX2tlcm5lbC5jCTIwMTctMDktMjIgMTA6MDU6MjIuMDAwMDAwMDAw ICswMjAwCi0rKysgYi9zcmMvY2xfYXBpX2tlcm5lbC5jCTIwMjAtMDMtMjQgMTg6Mjc6NDAuMTg2 NDg1ODg3ICswMTAwCi1AQCAtMTUxLDcgKzE1MSw3IEBACi0gICAgICAgICBmaXhlZF9sb2NhbF9z elswXSA9IDE2OwotICAgICAgICAgZml4ZWRfbG9jYWxfc3pbMV0gPSAxOwotICAgICAgIH0gZWxz ZSB7Ci0tICAgICAgICB1aW50IGosIG1heERpbVNpemUgPSA2NCAvKiBmcm9tIDY0PyAqLywgbWF4 R3JvdXBTaXplID0gMjU2OyAvL01BWF9XT1JLX0dST1VQX1NJWkUgbWF5IHRvbyBsYXJnZQotKyAg ICAgICAgY2xfdWludCBqLCBtYXhEaW1TaXplID0gNjQgLyogZnJvbSA2ND8gKi8sIG1heEdyb3Vw U2l6ZSA9IDI1NjsgLy9NQVhfV09SS19HUk9VUF9TSVpFIG1heSB0b28gbGFyZ2UKLSAgICAgICAg IHNpemVfdCByZWFsR3JvdXBTaXplID0gMTsKLSAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB3b3Jr X2RpbTsgaSsrKSB7Ci0gICAgICAgICAgIGZvciAoaiA9IG1heERpbVNpemU7IGogPiAxOyBqLS0p IHsKLS0tLSBhL3NyYy9jbF9lbnF1ZXVlLmMJMjAxNy0wOS0yMiAxMDowNToyMi4wMDAwMDAwMDAg KzAyMDAKLSsrKyBiL3NyYy9jbF9lbnF1ZXVlLmMJMjAyMC0wMy0yNCAxODozMDoxMi4wMzE0Nzk4 MzMgKzAxMDAKLUBAIC00OTQsNyArNDk0LDcgQEAKLSBjbF9pbnQgY2xfZW5xdWV1ZV9zdm1fZnJl ZShlbnF1ZXVlX2RhdGEgKmRhdGEsIGNsX2ludCBzdGF0dXMpIHsKLSAgIGludCBpOwotICAgdm9p ZCAqKnBvaW50ZXJzID0gZGF0YS0+cG9pbnRlcnM7Ci0tICB1aW50IG51bV9zdm1fcHRycyA9IGRh dGEtPnNpemU7Ci0rICBjbF91aW50IG51bV9zdm1fcHRycyA9IGRhdGEtPnNpemU7Ci0gICBjbF9p bnQgZXJyID0gQ0xfU1VDQ0VTUzsKLSAKLSAgIGlmIChzdGF0dXMgIT0gQ0xfQ09NUExFVEUpCmRp ZmYgLS1naXQgYS9zcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9lMWIyNDE5YTAwMDhlMzhlZjJkOWQy NTVkOWU5Yzc0ZTlmYmEwODRiLnBhdGNoIGIvc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvZTFiMjQx OWEwMDA4ZTM4ZWYyZDlkMjU1ZDllOWM3NGU5ZmJhMDg0Yi5wYXRjaApkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggOGRlOWU2ZTJmMDkzLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9i ZWlnbmV0L3BhdGNoZXMvZTFiMjQxOWEwMDA4ZTM4ZWYyZDlkMjU1ZDllOWM3NGU5ZmJhMDg0Yi5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNCArMCwwIEBACi1Gcm9tIGUxYjI0MTlhMDAwOGUz OGVmMmQ5ZDI1NWQ5ZTljNzRlOWZiYTA4NGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9t OiAiUmViZWNjYSBOLiBQYWxtZXIiIDxyZWJlY2NhX3BhbG1lckB6b2hvLmNvbT4KLURhdGU6IFNh dCwgMjEgSnVsIDIwMTggMjA6MDU6NTQgKzAxMDAKLVN1YmplY3Q6IEFkZCBwcmVsaW1pbmFyeSBM TFZNIDcgc3VwcG9ydAotCi1UaGlzIGlzIHByZWxpbWluYXJ5IGJlY2F1c2UgTExWTSA3IGhhcyBu b3QgYmVlbiByZWxlYXNlZCB5ZXQ6Ci1pdCB3YXMgdGVzdGVkIHdpdGggdGhlIHNuYXBzaG90IGZy b20gRGViaWFuIGV4cGVyaW1lbnRhbCAoc3ZuMzM2ODk0KS4KLQotMS5DaGFuZ2UgbGlua2luZyBv cmRlciwgYXMgY2xhbmdDb2RlR2VuIG5vdyBsaW5rcyB0byBjbGFuZ0Zyb250ZW5kCi0yLlBhc3Mg cmVmZXJlbmNlcyBub3QgcG9pbnRlcnMgdG8gV3JpdGVCaXRjb2RlVG9GaWxlIGFuZCBDbG9uZU1v ZHVsZQotMy5BZGQgdGhlIGhlYWRlcnMgdGhhdCBMb29wU2ltcGxpZnlJRCwgTENTU0FJRCBhbmQK LXNvbWUgY3JlYXRlKlBhc3MgaGF2ZSBtb3ZlZCB0bwotNC5EZWZpbmUgb3VyIERFQlVHIHdoZXRo ZXIgb3Igbm90IHdlIGp1c3QgdW5kZWZpbmVkIExMVk0ncwotKHRoZWlycyBpcyBub3cgTExWTV9E RUJVRywgYnV0IHdlIG5ldmVyIGFjdHVhbGx5IHVzZSBpdCkKLQotU2lnbmVkLW9mZi1ieTogUmVi ZWNjYSBOLiBQYWxtZXIgPHJlYmVjY2FfcGFsbWVyQHpvaG8uY29tPgotUmV2aWV3ZWQtYnk6IFlh bmcgUm9uZyA8cm9uZy5yLnlhbmdAaW50ZWwuY29tPgotLS0tCi0gQ01ha2UvRmluZExMVk0uY21h a2UgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KLSBiYWNrZW5kL3NyYy9iYWNrZW5kL2dlbl9w cm9ncmFtLmNwcCAgICAgIHwgOCArKysrKysrKwotIGJhY2tlbmQvc3JjL2JhY2tlbmQvcHJvZ3Jh bS5jcHAgICAgICAgICAgfCA0ICsrKysKLSBiYWNrZW5kL3NyYy9sbHZtL0V4cGFuZExhcmdlSW50 ZWdlcnMuY3BwIHwgMiArLQotIGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9iaXRjb2RlX2xpbmsuY3Bw ICAgfCA0ICsrKysKLSBiYWNrZW5kL3NyYy9sbHZtL2xsdm1faW5jbHVkZXMuaHBwICAgICAgIHwg NCArKysrCi0gNiBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygt KQotCi1kaWZmIC0tZ2l0IGEvQ01ha2UvRmluZExMVk0uY21ha2UgYi9DTWFrZS9GaW5kTExWTS5j bWFrZQotaW5kZXggNTQ1N2YyNC4uZjg4MjU4OSAxMDA2NDQKLS0tLSBhL0NNYWtlL0ZpbmRMTFZN LmNtYWtlCi0rKysgYi9DTWFrZS9GaW5kTExWTS5jbWFrZQotQEAgLTExMywxMCArMTEzLDEwIEBA IG1hY3JvKGFkZF9vbmVfbGliIG5hbWUpCi0gZW5kbWFjcm8oKQotIAotICNBc3N1bWUgY2xhbmcg bGliIHBhdGggc2FtZSBhcyBsbHZtIGxpYiBwYXRoCi0rYWRkX29uZV9saWIoImNsYW5nQ29kZUdl biIpCi0gYWRkX29uZV9saWIoImNsYW5nRnJvbnRlbmQiKQotIGFkZF9vbmVfbGliKCJjbGFuZ1Nl cmlhbGl6YXRpb24iKQotIGFkZF9vbmVfbGliKCJjbGFuZ0RyaXZlciIpCi0tYWRkX29uZV9saWIo ImNsYW5nQ29kZUdlbiIpCi0gYWRkX29uZV9saWIoImNsYW5nU2VtYSIpCi0gYWRkX29uZV9saWIo ImNsYW5nU3RhdGljQW5hbHl6ZXJGcm9udGVuZCIpCi0gYWRkX29uZV9saWIoImNsYW5nU3RhdGlj QW5hbHl6ZXJDaGVja2VycyIpCi1kaWZmIC0tZ2l0IGEvYmFja2VuZC9zcmMvYmFja2VuZC9nZW5f cHJvZ3JhbS5jcHAgYi9iYWNrZW5kL3NyYy9iYWNrZW5kL2dlbl9wcm9ncmFtLmNwcAotaW5kZXgg Mjc0Yzk5Yy4uNDE1OTIzNCAxMDA2NDQKLS0tLSBhL2JhY2tlbmQvc3JjL2JhY2tlbmQvZ2VuX3By b2dyYW0uY3BwCi0rKysgYi9iYWNrZW5kL3NyYy9iYWNrZW5kL2dlbl9wcm9ncmFtLmNwcAotQEAg LTQ1NCw3ICs0NTQsMTEgQEAgbmFtZXNwYWNlIGdiZSB7Ci0gI2lmZGVmIEdCRV9DT01QSUxFUl9B VkFJTEFCTEUKLSAgICAgICBzdGQ6OnN0cmluZyBzdHI7Ci0gICAgICAgbGx2bTo6cmF3X3N0cmlu Z19vc3RyZWFtIE9TKHN0cik7Ci0rI2lmIExMVk1fVkVSU0lPTl9NQUpPUiA+PSA3Ci0rICAgICAg bGx2bTo6V3JpdGVCaXRjb2RlVG9GaWxlKCooKGxsdm06Ok1vZHVsZSopcHJvZy0+bW9kdWxlKSwg T1MpOwotKyNlbHNlCi0gICAgICAgbGx2bTo6V3JpdGVCaXRjb2RlVG9GaWxlKChsbHZtOjpNb2R1 bGUqKXByb2ctPm1vZHVsZSwgT1MpOwotKyNlbmRpZgotICAgICAgIHN0ZDo6c3RyaW5nJiBiaW5f c3RyID0gT1Muc3RyKCk7Ci0gICAgICAgaW50IGxsc3ogPSBiaW5fc3RyLnNpemUoKTsKLSAgICAg ICAqYmluYXJ5ID0gKGNoYXIgKiltYWxsb2Moc2l6ZW9mKGNoYXIpICogKGxsc3orMSkgKTsKLUBA IC01NDUsNyArNTQ5LDExIEBAIG5hbWVzcGFjZSBnYmUgewotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICZtb2RSZWYpOwotICAgICAgICAgc3JjID0gbGx2bTo6dW53cmFwKG1v ZFJlZik7Ci0gICAgICAgfQotKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgPj0gNwotKyAgICAgIGxs dm06Ok1vZHVsZSogY2xvbmUgPSBsbHZtOjpDbG9uZU1vZHVsZSgqc3JjKS5yZWxlYXNlKCk7Ci0r I2Vsc2UKLSAgICAgICBsbHZtOjpNb2R1bGUqIGNsb25lID0gbGx2bTo6Q2xvbmVNb2R1bGUoc3Jj KS5yZWxlYXNlKCk7Ci0rI2VuZGlmCi0gICAgICAgaWYgKExMVk1MaW5rTW9kdWxlczIod3JhcChk c3QpLCB3cmFwKGNsb25lKSkpIHsKLSAjZWxpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExM Vk1fVkVSU0lPTl9NSU5PUiA+PSAzNwotICAgICAgIGlmIChMTFZNTGlua01vZHVsZXMod3JhcChk c3QpLCB3cmFwKHNyYyksIExMVk1MaW5rZXJQcmVzZXJ2ZVNvdXJjZV9SZW1vdmVkLCAmZXJyTXNn KSkgewotZGlmZiAtLWdpdCBhL2JhY2tlbmQvc3JjL2JhY2tlbmQvcHJvZ3JhbS5jcHAgYi9iYWNr ZW5kL3NyYy9iYWNrZW5kL3Byb2dyYW0uY3BwCi1pbmRleCBjMzdjNTk1Li5iMzZmN2I0IDEwMDY0 NAotLS0tIGEvYmFja2VuZC9zcmMvYmFja2VuZC9wcm9ncmFtLmNwcAotKysrIGIvYmFja2VuZC9z cmMvYmFja2VuZC9wcm9ncmFtLmNwcAotQEAgLTc5NCw3ICs3OTQsMTEgQEAgbmFtZXNwYWNlIGdi ZSB7Ci0gICAgICAgbGx2bTo6cmF3X2ZkX29zdHJlYW0gb3N0cmVhbSAoZHVtcFNQSVJCaW5hcnlO YW1lLmNfc3RyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyLCBs bHZtOjpzeXM6OmZzOjpGX05vbmUpOwotICAgICAgIGlmICghZXJyKQotKyNpZiBMTFZNX1ZFUlNJ T05fTUFKT1I8NwotICAgICAgICAgbGx2bTo6V3JpdGVCaXRjb2RlVG9GaWxlKCpvdXRfbW9kdWxl LCBvc3RyZWFtKTsKLSsjZWxzZQotKyAgICAgICAgbGx2bTo6V3JpdGVCaXRjb2RlVG9GaWxlKCoq b3V0X21vZHVsZSwgb3N0cmVhbSk7Ci0rI2VuZGlmCi0gICAgIH0KLSAjZW5kaWYKLSAgICAgcmV0 dXJuIHRydWU7Ci1kaWZmIC0tZ2l0IGEvYmFja2VuZC9zcmMvbGx2bS9FeHBhbmRMYXJnZUludGVn ZXJzLmNwcCBiL2JhY2tlbmQvc3JjL2xsdm0vRXhwYW5kTGFyZ2VJbnRlZ2Vycy5jcHAKLWluZGV4 IDg1MTVkYzEuLjRhZWM0NGUgMTAwNjQ0Ci0tLS0gYS9iYWNrZW5kL3NyYy9sbHZtL0V4cGFuZExh cmdlSW50ZWdlcnMuY3BwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL0V4cGFuZExhcmdlSW50ZWdl cnMuY3BwCi1AQCAtOTksOCArOTksOCBAQCB1c2luZyBuYW1lc3BhY2UgbGx2bTsKLSAKLSAjaWZk ZWYgREVCVUcKLSAgICN1bmRlZiBERUJVRwotLSAgI2RlZmluZSBERUJVRyguLi4pCi0gI2VuZGlm Ci0rI2RlZmluZSBERUJVRyguLi4pCi0gLy8gQnJlYWsgaW5zdHJ1Y3Rpb25zIHVwIGludG8gbm8g bGFyZ2VyIHRoYW4gNjQtYml0IGNodW5rcy4KLSBzdGF0aWMgY29uc3QgdW5zaWduZWQga0NodW5r Qml0cyA9IDY0OwotIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBrQ2h1bmtCeXRlcyA9IGtDaHVua0Jp dHMgLyBDSEFSX0JJVDsKLWRpZmYgLS1naXQgYS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fYml0Y29k ZV9saW5rLmNwcCBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9iaXRjb2RlX2xpbmsuY3BwCi1pbmRl eCBlZjU2ZTRjLi40YzNlMjBlIDEwMDY0NAotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2Jp dGNvZGVfbGluay5jcHAKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9iaXRjb2RlX2xpbmsu Y3BwCi1AQCAtMzQwLDcgKzM0MCwxMSBAQCBuYW1lc3BhY2UgZ2JlCi0gICAgIC8qIFdlIHVzZSBi ZWlnbmV0J3MgYml0Y29kZSBhcyBkc3QgYmVjYXVzZSBpdCB3aWxsIGhhdmUgYSBsb3Qgb2YKLSAg ICAgICAgbGF6eSBmdW5jdGlvbnMgd2hpY2ggd2lsbCBub3QgYmUgbG9hZGVkLiAqLwotICNpZiBM TFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSAzOQotKyNpZiBM TFZNX1ZFUlNJT05fTUFKT1IgPj0gNwotKyAgICBsbHZtOjpNb2R1bGUgKiBsaW5rZWRfbW9kdWxl ID0gbGx2bTo6Q2xvbmVNb2R1bGUoKihsbHZtOjpNb2R1bGUqKW1vZCkucmVsZWFzZSgpOwotKyNl bHNlCi0gICAgIGxsdm06Ok1vZHVsZSAqIGxpbmtlZF9tb2R1bGUgPSBsbHZtOjpDbG9uZU1vZHVs ZSgobGx2bTo6TW9kdWxlKiltb2QpLnJlbGVhc2UoKTsKLSsjZW5kaWYKLSAgICAgaWYoTExWTUxp bmtNb2R1bGVzMih3cmFwKGNsb25lZExpYiksIHdyYXAobGlua2VkX21vZHVsZSkpKSB7Ci0gI2Vs c2UKLSAgICAgY2hhciogZXJyb3JNc2c7Ci1kaWZmIC0tZ2l0IGEvYmFja2VuZC9zcmMvbGx2bS9s bHZtX2luY2x1ZGVzLmhwcCBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9pbmNsdWRlcy5ocHAKLWlu ZGV4IDE4NDU1M2EuLmZmY2NmMDIgMTAwNjQ0Ci0tLS0gYS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1f aW5jbHVkZXMuaHBwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1faW5jbHVkZXMuaHBwCi1A QCAtODksNiArODksMTAgQEAKLSAjaW5jbHVkZSAibGx2bS9Db2RlR2VuL0ludHJpbnNpY0xvd2Vy aW5nLmgiCi0gCi0gI2luY2x1ZGUgImxsdm0vVHJhbnNmb3Jtcy9TY2FsYXIuaCIKLSsjaWYgTExW TV9WRVJTSU9OX01BSk9SID49IDcKLSsjaW5jbHVkZSAibGx2bS9UcmFuc2Zvcm1zL1V0aWxzLmgi Ci0rI2luY2x1ZGUgImxsdm0vVHJhbnNmb3Jtcy9JbnN0Q29tYmluZS9JbnN0Q29tYmluZS5oIgot KyNlbmRpZgotICNpbmNsdWRlICJsbHZtL01DL01DQXNtSW5mby5oIgotICNpbmNsdWRlICJsbHZt L01DL01DQ29udGV4dC5oIgotICNpbmNsdWRlICJsbHZtL01DL01DSW5zdHJJbmZvLmgiCi0tLSAK LWNnaXQgdjEuMQotCmRpZmYgLS1naXQgYS9zcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMDYu cGF0Y2ggYi9zcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMDYucGF0Y2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDMzODllNjZjODJkZi4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3Br Z3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0wNi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICsw LDAgQEAKLVNvdXJjZTogQXJjaCBMaW51eAotVXBzdHJlYW06IHVua25vd24KLVJlYXNvbjogZml4 ZXMgbGx2bTYgY29tcGlsYXRpb24KLQotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX3RvX2dl bi5jcHAJMjAxNy0xMC0yNCAwOTowNDo0OC4wMDAwMDAwMDAgKzAzMDAKLSsrKyBiL2JhY2tlbmQv c3JjL2xsdm0vbGx2bV90b19nZW4uY3BwCTIwMTgtMDMtMTYgMTY6MDg6NTQuNjY5OTYzODI0ICsw MjAwCi1AQCAtMzIyLDcgKzMyMiwxMSBAQCBuYW1lc3BhY2UgZ2JlCi0gICAgIERhdGFMYXlvdXQg REwoJm1vZCk7Ci0gICAgIAotICAgICBnYmVEaWFnbm9zdGljQ29udGV4dCBkYzsKLSsjaWYgTExW TV9WRVJTSU9OX01BSk9SID49IDYKLSsgICAgbW9kLmdldENvbnRleHQoKS5zZXREaWFnbm9zdGlj SGFuZGxlckNhbGxCYWNrKCZnYmVEaWFnbm9zdGljSGFuZGxlciwmZGMpOwotKyNlbHNlCi0gICAg IG1vZC5nZXRDb250ZXh0KCkuc2V0RGlhZ25vc3RpY0hhbmRsZXIoJmdiZURpYWdub3N0aWNIYW5k bGVyLCZkYyk7Ci0rI2VuZGlmCi0gCi0gI2lmIExMVk1fVkVSU0lPTl9NQUpPUiAqIDEwICsgTExW TV9WRVJTSU9OX01JTk9SID49IDM3Ci0gICAgIG1vZC5zZXREYXRhTGF5b3V0KERMKTsKLS0tLSBh L2JhY2tlbmQvc3JjL2xsdm0vbGx2bV91bnJvbGwuY3BwCTIwMTctMTAtMjQgMDk6MDQ6NDguMDAw MDAwMDAwICswMzAwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fdW5yb2xsLmNwcAkyMDE4 LTAzLTE2IDE2OjA5OjQ3LjczNjQwMzU1NyArMDIwMAotQEAgLTIwNSw3ICsyMDUsOSBAQCBuYW1l c3BhY2UgZ2JlIHsKLSAgICAgICAgICAgaWYgKHBhcmVudFRyaXBDb3VudCAhPSAwICYmIGN1cnJU cmlwQ291bnQgKiBwYXJlbnRUcmlwQ291bnQgPiAzMikgewotICAgICAgICAgICAgIC8vRG9uJ3Qg Y2hhbmdlIHRoZSB1bnJvbGxJRCBpZiBkb2Vzbid0IGZvcmNlIHVucm9sbC4KLSAgICAgICAgICAg ICAvL3NldFVucm9sbElEKHBhcmVudEwsIGZhbHNlKTsKLS0jaWYgTExWTV9WRVJTSU9OX01BSk9S ICogMTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gMzgKLSsjaWYgTExWTV9WRVJTSU9OX01BSk9S ID49IDYKLSsgICAgICAgICAgICBsb29wSW5mby5lcmFzZShwYXJlbnRMKTsKLSsjZWxpZiBMTFZN X1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSAzOAotICAgICAgICAg ICAgIGxvb3BJbmZvLm1hcmtBc1JlbW92ZWQocGFyZW50TCk7Ci0gI2Vsc2UKLSAgICAgICAgICAg ICBMUE0uZGVsZXRlTG9vcEZyb21RdWV1ZShwYXJlbnRMKTsKLU9ubHkgaW4gQmVpZ25ldC0xLjMu Mi1Tb3VyY2U6IGJ1aWxkCi0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xs dm0wOC5wYXRjaCBiL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0wOC5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTBjNWU3YTdjNGY3Li4wMDAwMDAwMDAwMDAKLS0tIGEv c3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvbGx2bTA4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs NTYgKzAsMCBAQAotRnJvbSA3NWMxNTI1OTlhN2MxNzM5ZTZkYWRjZGI5YjM3N2FjZjdlNDRkOWNm IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmFuIEJlaWNoIDxqYmVpY2hARnJlZUJT RC5vcmc+Ci1EYXRlOiBXZWQsIDMwIEphbiAyMDE5IDEyOjQyOjM0ICswMDAwCi1TdWJqZWN0OiBb UEFUQ0hdIGxhbmcvYmVpZ25ldDogdW5icmVhayB3aXRoIGxsdm04MAotCi1SZWdyZXNzZWQgYnkg aHR0cHM6Ly9naXRodWIuY29tL2xsdm0vbGx2bS1wcm9qZWN0L2NvbW1pdC83MjFkOTU3MTNhOWUK LQotdW5hYmxlIHRvIGxvYWQgL3Vzci9sb2NhbC9saWIvYmVpZ25ldC8vbGliZ2JlaW50ZXJwLnNv IHdoaWNoIGlzIHBhcnQgb2YgdGhlIGRyaXZlciwgcGxlYXNlIGNoZWNrIQotbGQtZWxmLnNvLjE6 IC91c3IvbG9jYWwvbGliL2JlaWduZXQvL2xpYmdiZWludGVycC5zbzogVW5kZWZpbmVkIHN5bWJv bCAiX1pONGxsdm0yNERpc2FibGVBQklCcmVha2luZ0NoZWNrc0UiCi0KLVJlZ3Jlc3NlZCBieSBo dHRwczovL2dpdGh1Yi5jb20vbGx2bS9sbHZtLXByb2plY3QvY29tbWl0LzRhMmQ1OGUxNmFjYwot Ci1iYWNrZW5kL3NyYy9sbHZtL2xsdm1fZ2VuX2JhY2tlbmQuY3BwOjMwNzY6NTogZXJyb3I6Ci0g ICAgICB1bmtub3duIHR5cGUgbmFtZSAnVGVybWluYXRvckluc3QnCi0gICAgVGVybWluYXRvcklu c3QgKnRlcm0gPSBiYi0+Z2V0VGVybWluYXRvcigpOwotICAgIF4KLWJhY2tlbmQvc3JjL2xsdm0v bGx2bV9nZW5fYmFja2VuZC5jcHA6MzA4Mzo1OiBlcnJvcjoKLSAgICAgIHVua25vd24gdHlwZSBu YW1lICdUZXJtaW5hdG9ySW5zdCcKLSAgICBUZXJtaW5hdG9ySW5zdCAqdGVybSA9IGJiLT5nZXRU ZXJtaW5hdG9yKCk7Ci0gICAgXgotCi0tLS0gYS9iYWNrZW5kL3NyYy9DTWFrZUxpc3RzLnR4dAky MDE3LTA5LTIyIDA4OjA1OjIyIFVUQwotKysrIGIvYmFja2VuZC9zcmMvQ01ha2VMaXN0cy50eHQK LUBAIC0xNjgsNiArMTY4LDcgQEAgYWRkX2RlcGVuZGVuY2llcyhnYmUgYmVpZ25ldF9iaXRjb2Rl KQotIGVuZGlmIChOT1QgKFVTRV9TVEFOREFMT05FX0dCRV9DT01QSUxFUiBTVFJFUVVBTCAidHJ1 ZSIpKQotIAotIGFkZF9saWJyYXJ5KGdiZWludGVycCBTSEFSRUQgZ2JlX2Jpbl9pbnRlcnByZXRl ci5jcHApCi0rdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGdiZWludGVycCAke0xMVk1fTU9EVUxFX0xJ QlN9KQotIAotIGlmIChMTFZNX1ZFUlNJT05fTk9ET1QgVkVSU0lPTl9FUVVBTCAzNCkKLSAgIGZp bmRfbGlicmFyeShURVJNSU5GTyBOQU1FUyB0aW5mbyBuY3Vyc2VzKQotLS0tIGEvYmFja2VuZC9z cmMvbGx2bS9sbHZtX2dlbl9iYWNrZW5kLmNwcAkyMDE3LTEwLTI0IDA2OjA0OjQ4IFVUQwotKysr IGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2dlbl9iYWNrZW5kLmNwcAotQEAgLTMwNzMsMTQgKzMw NzMsMjIgQEAgbmFtZXNwYWNlIGdiZQotIAotIAotICAgc3RhdGljIHVuc2lnbmVkIGdldENoaWxk Tm8oQmFzaWNCbG9jayAqYmIpIHsKLSsjaWYgTExWTV9WRVJTSU9OX01BSk9SIDwgOAotICAgICBU ZXJtaW5hdG9ySW5zdCAqdGVybSA9IGJiLT5nZXRUZXJtaW5hdG9yKCk7Ci0rI2Vsc2UKLSsgICAg SW5zdHJ1Y3Rpb24gKnRlcm0gPSBiYi0+Z2V0VGVybWluYXRvcigpOwotKyNlbmRpZgotICAgICBy ZXR1cm4gdGVybS0+Z2V0TnVtU3VjY2Vzc29ycygpOwotICAgfQotIAotICAgLy8gcmV0dXJuIE5V TEwgaWYgaW5kZXggb3V0LXJhbmdlIG9mIGNoaWxkcmVuIG51bWJlcgotICAgc3RhdGljIEJhc2lj QmxvY2sgKmdldENoaWxkUG9zc2libGUoQmFzaWNCbG9jayAqYmIsIHVuc2lnbmVkIGluZGV4KSB7 Ci0gCi0rI2lmIExMVk1fVkVSU0lPTl9NQUpPUiA8IDgKLSAgICAgVGVybWluYXRvckluc3QgKnRl cm0gPSBiYi0+Z2V0VGVybWluYXRvcigpOwotKyNlbHNlCi0rICAgIEluc3RydWN0aW9uICp0ZXJt ID0gYmItPmdldFRlcm1pbmF0b3IoKTsKLSsjZW5kaWYKLSAgICAgdW5zaWduZWQgY2hpbGRObyA9 IHRlcm0tPmdldE51bVN1Y2Nlc3NvcnMoKTsKLSAgICAgQmFzaWNCbG9jayAqY2hpbGQgPSBOVUxM OwotICAgICBpZihpbmRleCA8IGNoaWxkTm8pIHsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmVpZ25l dC9wYXRjaGVzL2xsdm0wOS5wYXRjaCBiL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0wOS5w YXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWNhZWNlYWJiNmRkLi4wMDAwMDAw MDAwMDAKLS0tIGEvc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvbGx2bTA5LnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsMTExICswLDAgQEAKLVNvdXJjZTogRnJlZUJTRCArIHE2NgotCi1Nb3N0bHkg RnJlZUJTRCBvdGhlciB0aGFuIEZpbmRMTFZNLmNtYWtlIGNoYW5nZXMuCi1MaW5raW5nIGFnYWlu c3QgY2xhbmctY3BwIGRvZXMgbm90IHdvcmsgZm9yIHVzLgotCi0tLS0gYS9DTWFrZS9GaW5kTExW TS5jbWFrZQotKysrIGIvQ01ha2UvRmluZExMVk0uY21ha2UKLUBAIC0xNDAsNiArMTQwLDcgQEAg YWRkX29uZV9saWIoImNsYW5nU3RhdGljQW5hbHl6ZXJDb3JlIikKLSBhZGRfb25lX2xpYigiY2xh bmdBbmFseXNpcyIpCi0gYWRkX29uZV9saWIoImNsYW5nRWRpdCIpCi0gYWRkX29uZV9saWIoImNs YW5nQVNUIikKLSthZGRfb25lX2xpYigiY2xhbmdBU1RNYXRjaGVycyIpCi0gYWRkX29uZV9saWIo ImNsYW5nUGFyc2UiKQotIGFkZF9vbmVfbGliKCJjbGFuZ1NlbWEiKQotIGFkZF9vbmVfbGliKCJj bGFuZ0xleCIpCi0tLS0gYS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1faW50cmluc2ljX2xvd2VyaW5n LmNwcAkyMDE3LTEwLTI0IDA2OjA0OjQ4IFVUQwotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9sbHZt X2ludHJpbnNpY19sb3dlcmluZy5jcHAKLUBAIC03Nyw3ICs3NywxMSBAQCBuYW1lc3BhY2UgZ2Jl IHsKLSAgICAgICAgIHN0ZDo6dmVjdG9yPFR5cGUgKj4gUGFyYW1UeXM7Ci0gICAgICAgICBmb3Ig KFZhbHVlKiogSSA9IEFyZ0JlZ2luOyBJICE9IEFyZ0VuZDsgKytJKQotICAgICAgICAgICBQYXJh bVR5cy5wdXNoX2JhY2soKCpJKS0+Z2V0VHlwZSgpKTsKLSsjaWYgTExWTV9WRVJTSU9OX01BSk9S ICogMTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gOTAKLSsgICAgICAgIEZ1bmN0aW9uQ2FsbGVl IEZDYWNoZSA9IE0tPmdldE9ySW5zZXJ0RnVuY3Rpb24oTmV3Rm4sCi0rI2Vsc2UKLSAgICAgICAg IENvbnN0YW50KiBGQ2FjaGUgPSBNLT5nZXRPckluc2VydEZ1bmN0aW9uKE5ld0ZuLAotKyNlbmRp ZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvblR5cGU6 OmdldChSZXRUeSwgUGFyYW1UeXMsIGZhbHNlKSk7Ci0gCi0gICAgICAgICBJUkJ1aWxkZXI8PiBC dWlsZGVyKENJLT5nZXRQYXJlbnQoKSwgQmFzaWNCbG9jazo6aXRlcmF0b3IoQ0kpKTsKLS0tLSBh L2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9zYW1wbGVyX2ZpeC5jcHAJMjAxNy0xMC0yNCAwNjowNDo0 OCBVVEMKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9zYW1wbGVyX2ZpeC5jcHAKLUBAIC04 Miw3ICs4MiwxMSBAQCBuYW1lc3BhY2UgZ2JlIHsKLSAjaWYgTExWTV9WRVJTSU9OX01BSk9SICog MTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gNDAKLSAgICAgICAgICAgTW9kdWxlICpNID0gSS0+ Z2V0UGFyZW50KCktPmdldFBhcmVudCgpLT5nZXRQYXJlbnQoKTsKLSAjaWYgTExWTV9WRVJTSU9O X01BSk9SICogMTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gNTAKLSsjaWYgTExWTV9WRVJTSU9O X01BSk9SICogMTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gOTAKLSsgICAgICAgICAgRnVuY3Rp b25DYWxsZWUgc2FtcGxlckN2dCA9IE0tPmdldE9ySW5zZXJ0RnVuY3Rpb24oIl9fZ2VuX29jbF9z YW1wbGVyX3RvX2ludCIsIGkzMlR5LCBJLT5nZXRPcGVyYW5kKDApLT5nZXRUeXBlKCkpOwotKyNl bHNlCi0gICAgICAgICAgIFZhbHVlKiBzYW1wbGVyQ3Z0ID0gTS0+Z2V0T3JJbnNlcnRGdW5jdGlv bigiX19nZW5fb2NsX3NhbXBsZXJfdG9faW50IiwgaTMyVHksIEktPmdldE9wZXJhbmQoMCktPmdl dFR5cGUoKSk7Ci0rI2VuZGlmCi0gI2Vsc2UKLSAgICAgICAgICAgVmFsdWUqIHNhbXBsZXJDdnQg PSBNLT5nZXRPckluc2VydEZ1bmN0aW9uKCJfX2dlbl9vY2xfc2FtcGxlcl90b19pbnQiLCBpMzJU eSwgSS0+Z2V0T3BlcmFuZCgwKS0+Z2V0VHlwZSgpLCBudWxscHRyKTsKLSAjZW5kaWYKLUBAIC0x MjQsNyArMTI4LDExIEBAIG5hbWVzcGFjZSBnYmUgewotICNpZiBMTFZNX1ZFUlNJT05fTUFKT1Ig KiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSA0MAotICAgICAgICAgICBNb2R1bGUgKk0gPSBJ LT5nZXRQYXJlbnQoKS0+Z2V0UGFyZW50KCktPmdldFBhcmVudCgpOwotICNpZiBMTFZNX1ZFUlNJ T05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSA1MAotKyNpZiBMTFZNX1ZFUlNJ T05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSA5MAotKyAgICAgICAgICBGdW5j dGlvbkNhbGxlZSBzYW1wbGVyQ3Z0ID0gTS0+Z2V0T3JJbnNlcnRGdW5jdGlvbigiX19nZW5fb2Ns X3NhbXBsZXJfdG9faW50IiwgaTMyVHksIEktPmdldE9wZXJhbmQoMCktPmdldFR5cGUoKSk7Ci0r I2Vsc2UKLSAgICAgICAgICAgVmFsdWUqIHNhbXBsZXJDdnQgPSBNLT5nZXRPckluc2VydEZ1bmN0 aW9uKCJfX2dlbl9vY2xfc2FtcGxlcl90b19pbnQiLCBpMzJUeSwgSS0+Z2V0T3BlcmFuZCgwKS0+ Z2V0VHlwZSgpKTsKLSsjZW5kaWYKLSAjZWxzZQotICAgICAgICAgICBWYWx1ZSogc2FtcGxlckN2 dCA9IE0tPmdldE9ySW5zZXJ0RnVuY3Rpb24oIl9fZ2VuX29jbF9zYW1wbGVyX3RvX2ludCIsIGkz MlR5LCBJLT5nZXRPcGVyYW5kKDApLT5nZXRUeXBlKCksIG51bGxwdHIpOwotICNlbmRpZgotLS0t IGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX3Byb2ZpbGluZy5jcHAJMjAxNy0xMC0yNCAwNjowNDo0 OCBVVEMKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9wcm9maWxpbmcuY3BwCi1AQCAtMTYz LDEwICsxNjMsMTggQEAgbmFtZXNwYWNlIGdiZQotICAgICAgIC8vIF9fZ2VuX29jbF9zdG9yZV90 aW1lc3RhbXAoaW50IG50aCwgaW50IHR5cGUpOwotICAgICAgIFZhbHVlICpBcmdzWzJdID0ge0Nv bnN0YW50SW50OjpnZXQoaW50VHksIHBvaW50TnVtKyspLCBDb25zdGFudEludDo6Z2V0KGludFR5 LCBwcm9maWxpbmdUeXBlKX07Ci0gI2lmIExMVk1fVkVSU0lPTl9NQUpPUiAqIDEwICsgTExWTV9W RVJTSU9OX01JTk9SID49IDUwCi0rI2lmIExMVk1fVkVSU0lPTl9NQUpPUiAqIDEwICsgTExWTV9W RVJTSU9OX01JTk9SID49IDkwCi0rICAgICAgYnVpbGRlci0+Q3JlYXRlQ2FsbChtb2R1bGUtPmdl dE9ySW5zZXJ0RnVuY3Rpb24oCi0rI2Vsc2UKLSAgICAgICBidWlsZGVyLT5DcmVhdGVDYWxsKGNh c3Q8bGx2bTo6RnVuY3Rpb24+KG1vZHVsZS0+Z2V0T3JJbnNlcnRGdW5jdGlvbigKLSsjZW5kaWYK LSAgICAgICAgICAgICAgICJfX2dlbl9vY2xfY2FsY190aW1lc3RhbXAiLCBUeXBlOjpnZXRWb2lk VHkobW9kdWxlLT5nZXRDb250ZXh0KCkpLAotICAgICAgICAgICAgICAgSW50ZWdlclR5cGU6Omdl dEludDMyVHkobW9kdWxlLT5nZXRDb250ZXh0KCkpLAotKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1Ig KiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSA5MAotKyAgICAgICAgICAgICAgSW50ZWdlclR5 cGU6OmdldEludDMyVHkobW9kdWxlLT5nZXRDb250ZXh0KCkpKSwKLSsjZWxzZQotICAgICAgICAg ICAgICAgSW50ZWdlclR5cGU6OmdldEludDMyVHkobW9kdWxlLT5nZXRDb250ZXh0KCkpKSksCi0r I2VuZGlmCi0gICAgICAgICAgICAgICBBcnJheVJlZjxWYWx1ZSo+KEFyZ3MpKTsKLSAjZWxzZQot ICAgICAgIGJ1aWxkZXItPkNyZWF0ZUNhbGwoY2FzdDxsbHZtOjpGdW5jdGlvbj4obW9kdWxlLT5n ZXRPckluc2VydEZ1bmN0aW9uKAotQEAgLTE4NSwxMCArMTkzLDE4IEBAIG5hbWVzcGFjZSBnYmUK LSAgICAgVmFsdWUgKkFyZ3MyWzJdID0ge3Byb2ZpbGluZ0J1ZiwgQ29uc3RhbnRJbnQ6OmdldChp bnRUeSwgcHJvZmlsaW5nVHlwZSl9OwotIAotICNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCAr IExMVk1fVkVSU0lPTl9NSU5PUiA+PSA1MAotKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCAr IExMVk1fVkVSU0lPTl9NSU5PUiA+PSA5MAotKyAgICBidWlsZGVyLT5DcmVhdGVDYWxsKG1vZHVs ZS0+Z2V0T3JJbnNlcnRGdW5jdGlvbigKLSsjZWxzZQotICAgICBidWlsZGVyLT5DcmVhdGVDYWxs KGNhc3Q8bGx2bTo6RnVuY3Rpb24+KG1vZHVsZS0+Z2V0T3JJbnNlcnRGdW5jdGlvbigKLSsjZW5k aWYKLSAgICAgICAgICAgICAiX19nZW5fb2NsX3N0b3JlX3Byb2ZpbGluZyIsIFR5cGU6OmdldFZv aWRUeShtb2R1bGUtPmdldENvbnRleHQoKSksCi0gICAgICAgICAgICAgcHRyVHksCi0rI2lmIExM Vk1fVkVSU0lPTl9NQUpPUiAqIDEwICsgTExWTV9WRVJTSU9OX01JTk9SID49IDkwCi0rICAgICAg ICAgICAgSW50ZWdlclR5cGU6OmdldEludDMyVHkobW9kdWxlLT5nZXRDb250ZXh0KCkpKSwKLSsj ZWxzZQotICAgICAgICAgICAgIEludGVnZXJUeXBlOjpnZXRJbnQzMlR5KG1vZHVsZS0+Z2V0Q29u dGV4dCgpKSkpLAotKyNlbmRpZgotICAgICAgICAgICAgIEFycmF5UmVmPFZhbHVlKj4oQXJnczIp KTsKLSAjZWxzZQotICAgICBidWlsZGVyLT5DcmVhdGVDYWxsKGNhc3Q8bGx2bTo6RnVuY3Rpb24+ KG1vZHVsZS0+Z2V0T3JJbnNlcnRGdW5jdGlvbigKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2 bV9kZXZpY2VfZW5xdWV1ZS5jcHAJMjAxNy0xMC0yNCAwNjowNDo0OCBVVEMKLSsrKyBiL2JhY2tl bmQvc3JjL2xsdm0vbGx2bV9kZXZpY2VfZW5xdWV1ZS5jcHAKLUBAIC0zOTgsOCArMzk4LDEzIEBA IG5hbWVzcGFjZSBnYmUgewotICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8VHlwZSAqPiBQYXJh bVR5czsKLSAgICAgICAgICAgICAgIGZvciAoVmFsdWUqKiBpdGVyID0gYXJncy5iZWdpbigpOyBp dGVyICE9IGFyZ3MuZW5kKCk7ICsraXRlcikKLSAgICAgICAgICAgICAgICAgUGFyYW1UeXMucHVz aF9iYWNrKCgqaXRlciktPmdldFR5cGUoKSk7Ci0rI2lmIExMVk1fVkVSU0lPTl9NQUpPUiAqIDEw ICsgTExWTV9WRVJTSU9OX01JTk9SID49IDkwCi0rICAgICAgICAgICAgICBDYWxsSW5zdCogbmV3 Q0kgPSBidWlsZGVyLkNyZWF0ZUNhbGwobW9kLT5nZXRPckluc2VydEZ1bmN0aW9uKAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJfX2dlbl9lbnF1ZXVlX2tlcm5lbF9zbG0iLCBGdW5j dGlvblR5cGU6OmdldChpbnRUeSwgUGFyYW1UeXMsIGZhbHNlKSksIGFyZ3MpOwotKyNlbHNlCi0g ICAgICAgICAgICAgICBDYWxsSW5zdCogbmV3Q0kgPSBidWlsZGVyLkNyZWF0ZUNhbGwoY2FzdDxs bHZtOjpGdW5jdGlvbj4obW9kLT5nZXRPckluc2VydEZ1bmN0aW9uKAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJfX2dlbl9lbnF1ZXVlX2tlcm5lbF9zbG0iLCBGdW5jdGlvblR5cGU6 OmdldChpbnRUeSwgUGFyYW1UeXMsIGZhbHNlKSkpLCBhcmdzKTsKLSsjZW5kaWYKLSAgICAgICAg ICAgICAgIENJLT5yZXBsYWNlQWxsVXNlc1dpdGgobmV3Q0kpOwotICAgICAgICAgICAgICAgZGVh ZEluc25TZXQuaW5zZXJ0KENJKTsKLSAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9zcmNwa2dz L2JlaWduZXQvcGF0Y2hlcy9sbHZtMTAucGF0Y2ggYi9zcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9s bHZtMTAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhYWZlNDhhMjQwZC4u MDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0xMC5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDM0NyArMCwwIEBACi1kaWZmIC0tZ2l0IENNYWtlL0ZpbmRMTFZN LmNtYWtlIENNYWtlL0ZpbmRMTFZNLmNtYWtlCi1pbmRleCAwYTU5ZTQ3Li42ZTkwOTIzIDEwMDY0 NAotLS0tIGEvQ01ha2UvRmluZExMVk0uY21ha2UKLSsrKyBiL0NNYWtlL0ZpbmRMTFZNLmNtYWtl Ci1AQCAtMTA0LDI4ICsxMDQsMTYgQEAgc3RyaW5nKFJFR0VYIFJFUExBQ0UgIiAqXG4iICIiIExM Vk1fU1lTVEVNX0xJQlMgJHtMTFZNX1NZU1RFTV9MSUJTX09SSUd9KQotIGVuZGlmIChMTFZNX1NZ U1RFTV9MSUJTX09SSUcpCi0gZW5kaWYgKExMVk1fVkVSU0lPTl9OT0RPVCBWRVJTSU9OX0dSRUFU RVIgMzQpCi0gCi0rI3NvbWV0aGluZyBoYXJtbGVzcyBiZWNhdXNlIHdoaXRlc3BhY2UgYXQgc3Rh cnQgaXMgYW4gZXJyb3IKLStzZXQoQ0xBTkdfTElCUkFSSUVTICItbGRsIikKLSBtYWNybyhhZGRf b25lX2xpYiBuYW1lKQotICAgRklORF9MSUJSQVJZKENMQU5HX0xJQgotICAgICBOQU1FUyAke25h bWV9Ci0gICAgIFBBVEhTICR7TExWTV9MSUJSQVJZX0RJUn0gTk9fREVGQVVMVF9QQVRIKQotLSAg c2V0KENMQU5HX0xJQlJBUklFUyAke0NMQU5HX0xJQlJBUklFU30gJHtDTEFOR19MSUJ9KQotKyAg c2V0KENMQU5HX0xJQlJBUklFUyAiJHtDTEFOR19MSUJSQVJJRVN9ICR7Q0xBTkdfTElCfSIpCi0r ICBtZXNzYWdlKFNUQVRVUyAiY2xhbmdsaWJzIG5hbWUgJHtuYW1lfSB0aGlzICR7Q0xBTkdfTElC fSBhbGwgJHtDTEFOR19MSUJSQVJJRVN9ICIpCi0gCXVuc2V0KENMQU5HX0xJQiBDQUNIRSkKLSBl bmRtYWNybygpCi0gCi0gI0Fzc3VtZSBjbGFuZyBsaWIgcGF0aCBzYW1lIGFzIGxsdm0gbGliIHBh dGgKLS1hZGRfb25lX2xpYigiY2xhbmdDb2RlR2VuIikKLS1hZGRfb25lX2xpYigiY2xhbmdGcm9u dGVuZCIpCi0tYWRkX29uZV9saWIoImNsYW5nU2VyaWFsaXphdGlvbiIpCi0tYWRkX29uZV9saWIo ImNsYW5nRHJpdmVyIikKLS1hZGRfb25lX2xpYigiY2xhbmdTZW1hIikKLS1hZGRfb25lX2xpYigi Y2xhbmdTdGF0aWNBbmFseXplckZyb250ZW5kIikKLS1hZGRfb25lX2xpYigiY2xhbmdTdGF0aWNB bmFseXplckNoZWNrZXJzIikKLS1hZGRfb25lX2xpYigiY2xhbmdTdGF0aWNBbmFseXplckNvcmUi KQotLWFkZF9vbmVfbGliKCJjbGFuZ0FuYWx5c2lzIikKLS1hZGRfb25lX2xpYigiY2xhbmdFZGl0 IikKLS1hZGRfb25lX2xpYigiY2xhbmdBU1QiKQotLWFkZF9vbmVfbGliKCJjbGFuZ0FTVE1hdGNo ZXJzIikKLS1hZGRfb25lX2xpYigiY2xhbmdQYXJzZSIpCi0tYWRkX29uZV9saWIoImNsYW5nU2Vt YSIpCi0tYWRkX29uZV9saWIoImNsYW5nTGV4IikKLS1hZGRfb25lX2xpYigiY2xhbmdCYXNpYyIp Ci0rYWRkX29uZV9saWIoImNsYW5nLWNwcCIpCi1kaWZmIC0tZ2l0IENNYWtlTGlzdHMudHh0IENN YWtlTGlzdHMudHh0Ci1pbmRleCBjMTFhY2JiLi4wOGY0MjdkIDEwMDY0NAotLS0tIGEvQ01ha2VM aXN0cy50eHQKLSsrKyBiL0NNYWtlTGlzdHMudHh0Ci1AQCAtNzksNyArNzksNyBAQCBlbHNlaWYg KENPTVBJTEVSIFNUUkVRVUFMICJDTEFORyIpCi0gZWxzZWlmIChDT01QSUxFUiBTVFJFUVVBTCAi SUNDIikKLSAgIHNldCAoQ01BS0VfQ19DWFhfRkxBR1MgIiR7Q01BS0VfQ19DWFhfRkxBR1N9ICAt d2QyOTI4IC1XYWxsIC1mUElDIC1mc3RyaWN0LWFsaWFzaW5nIC1mcC1tb2RlbCBmYXN0IC1tc3Nl NC4xIC1XbCwtRSIpCi0gZW5kaWYgKCkKLS1zZXQgKENNQUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9D WFhfRkxBR1N9ICR7Q01BS0VfQ19DWFhfRkxBR1N9IC1zdGQ9YysrMHggLVduby1pbnZhbGlkLW9m ZnNldG9mIikKLStzZXQgKENNQUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9ICR7Q01B S0VfQ19DWFhfRkxBR1N9IC1Xbm8taW52YWxpZC1vZmZzZXRvZiIpCi0gc2V0IChDTUFLRV9DX0ZM QUdTICIke0NNQUtFX0NfRkxBR1N9ICR7Q01BS0VfQ19DWFhfRkxBR1N9IikKLSBzZXQgKENNQUtF X0NYWF9GTEFHU19ERUJVRyAgICAgICAgICAiLU8wIC1nIC1ER0JFX0RFQlVHPTEiKQotIHNldCAo Q01BS0VfQ1hYX0ZMQUdTX1JFTFdJVEhERUJJTkZPICItTzIgLWcgLURHQkVfREVCVUc9MSIpCi1k aWZmIC0tZ2l0IGJhY2tlbmQvc3JjL2JhY2tlbmQvcHJvZ3JhbS5jcHAgYmFja2VuZC9zcmMvYmFj a2VuZC9wcm9ncmFtLmNwcAotaW5kZXggYjM2ZjdiNC4uZTY2NjAzMSAxMDA2NDQKLS0tLSBhL2Jh Y2tlbmQvc3JjL2JhY2tlbmQvcHJvZ3JhbS5jcHAKLSsrKyBiL2JhY2tlbmQvc3JjL2JhY2tlbmQv cHJvZ3JhbS5jcHAKLUBAIC02OTQsOSArNjk0LDkgQEAgbmFtZXNwYWNlIGdiZSB7Ci0gI2VuZGlm Ci0gICAgICAgICAgICAgICAgICk7Ci0gCi0rICAgIGxsdm06OmNsOjpSZXNldEFsbE9wdGlvbk9j Y3VycmVuY2VzKCk7Ci0gICAgIGNsYW5nOjpDb21waWxlckludm9jYXRpb246OkNyZWF0ZUZyb21B cmdzKCpDSSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JmFyZ3NbMF0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZhcmdzWzBdICsgYXJncy5zaXplKCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNsYW5nOjpBcnJheVJlZjxjb25zdCBjaGFyKj4oYXJncyksCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpYWdzKTsKLSAgICAg Ly8gQ3JlYXRlIHRoZSBjb21waWxlciBpbnN0YW5jZQotICAgICBjbGFuZzo6Q29tcGlsZXJJbnN0 YW5jZSBDbGFuZzsKLUBAIC0xMjQyLDggKzEyNDIsNyBAQCBFWFRFTkRfUVVPVEU6Ci0gICAgICAg Ly8gQ3JlYXRlIHRoZSBjb21waWxlciBpbnZvY2F0aW9uCi0gICAgICAgc3RkOjp1bmlxdWVfcHRy PGNsYW5nOjpDb21waWxlckludm9jYXRpb24+IENJKG5ldyBjbGFuZzo6Q29tcGlsZXJJbnZvY2F0 aW9uKTsKLSAgICAgICByZXR1cm4gY2xhbmc6OkNvbXBpbGVySW52b2NhdGlvbjo6Q3JlYXRlRnJv bUFyZ3MoKkNJLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmYXJnc1swXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJmFyZ3NbMF0gKyBhcmdzLnNpemUoKSwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhbmc6OkFycmF5 UmVmPGNvbnN0IGNoYXIqPihhcmdzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRGlhZ3MpOwotICAgICB9Ci0gI2VuZGlmCi1kaWZmIC0t Z2l0IGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9nZW5fYmFja2VuZC5jcHAgYmFja2VuZC9zcmMvbGx2 bS9sbHZtX2dlbl9iYWNrZW5kLmNwcAotaW5kZXggYzZmYzMwZC4uODI0NDFkOCAxMDA2NDQKLS0t LSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9nZW5fYmFja2VuZC5jcHAKLSsrKyBiL2JhY2tlbmQv c3JjL2xsdm0vbGx2bV9nZW5fYmFja2VuZC5jcHAKLUBAIC01NzUsMTAgKzU3NSwxMiBAQCBuYW1l c3BhY2UgZ2JlCi0gICAgICAgICBoYXNfZXJyb3JzKGZhbHNlKSwKLSAgICAgICAgIGxlZ2FjeU1v ZGUodHJ1ZSkKLSAgICAgewotKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgPCAxMAotICNpZiBMTFZN X1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSAzNwotICAgICAgIGlu aXRpYWxpemVMb29wSW5mb1dyYXBwZXJQYXNzUGFzcygqUGFzc1JlZ2lzdHJ5OjpnZXRQYXNzUmVn aXN0cnkoKSk7Ci0gI2Vsc2UKLSAgICAgICBpbml0aWFsaXplTG9vcEluZm9QYXNzKCpQYXNzUmVn aXN0cnk6OmdldFBhc3NSZWdpc3RyeSgpKTsKLSsjZW5kaWYKLSAjZW5kaWYKLSAgICAgICBwYXNz ID0gUEFTU19FTUlUX1JFR0lTVEVSUzsKLSAgICAgfQotZGlmZiAtLWdpdCBiYWNrZW5kL3NyYy9s bHZtL2xsdm1fZ2VuX2JhY2tlbmQuaHBwIGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9nZW5fYmFja2Vu ZC5ocHAKLWluZGV4IGI0NzE1YjEuLjhlNzRmN2EgMTAwNjQ0Ci0tLS0gYS9iYWNrZW5kL3NyYy9s bHZtL2xsdm1fZ2VuX2JhY2tlbmQuaHBwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fZ2Vu X2JhY2tlbmQuaHBwCi1AQCAtMTMwLDEwICsxMzAsMTAgQEAgbmFtZXNwYWNlIGdiZQotICAgbGx2 bTo6RnVuY3Rpb25QYXNzICpjcmVhdGVHZW5QYXNzKGlyOjpVbml0ICZ1bml0KTsKLSAKLSAgIC8q ISBSZW1vdmUgdGhlIEdFUCBpbnN0cnVjdGlvbnMgKi8KLS0gIGxsdm06OkJhc2ljQmxvY2tQYXNz ICpjcmVhdGVSZW1vdmVHRVBQYXNzKGNvbnN0IGlyOjpVbml0ICZ1bml0KTsKLSsgIGxsdm06OkZ1 bmN0aW9uUGFzcyAqY3JlYXRlUmVtb3ZlR0VQUGFzcyhjb25zdCBpcjo6VW5pdCAmdW5pdCk7Ci0g Ci0gICAvKiEgTWVyZ2UgbG9hZC9zdG9yZSBpZiBwb3NzaWJsZSAqLwotLSAgbGx2bTo6QmFzaWNC bG9ja1Bhc3MgKmNyZWF0ZUxvYWRTdG9yZU9wdGltaXphdGlvblBhc3MoKTsKLSsgIGxsdm06OkZ1 bmN0aW9uUGFzcyAqY3JlYXRlTG9hZFN0b3JlT3B0aW1pemF0aW9uUGFzcygpOwotIAotICAgLyoh IFNjYWxhcml6ZSBhbGwgdmVjdG9yIG9wIGluc3RydWN0aW9ucyAqLwotICAgbGx2bTo6RnVuY3Rp b25QYXNzKiBjcmVhdGVTY2FsYXJpemVQYXNzKCk7Ci1AQCAtMTQxLDcgKzE0MSw3IEBAIG5hbWVz cGFjZSBnYmUKLSAgIGxsdm06Ok1vZHVsZVBhc3MqIGNyZWF0ZUJhcnJpZXJOb2R1cFBhc3MoYm9v bCk7Ci0gCi0gICAvKiEgQ29udmVydCB0aGUgSW50cmluc2ljIGNhbGwgdG8gZ2VuIGZ1bmN0aW9u ICovCi0tICBsbHZtOjpCYXNpY0Jsb2NrUGFzcyAqY3JlYXRlSW50cmluc2ljTG93ZXJpbmdQYXNz KCk7Ci0rICBsbHZtOjpGdW5jdGlvblBhc3MgKmNyZWF0ZUludHJpbnNpY0xvd2VyaW5nUGFzcygp OwotIAotICAgLyohIFBhc3NlciB0aGUgcHJpbnRmIGZ1bmN0aW9uIGNhbGwuICovCi0gICBsbHZt OjpGdW5jdGlvblBhc3MqIGNyZWF0ZVByaW50ZlBhcnNlclBhc3MoaXI6OlVuaXQgJnVuaXQpOwot ZGlmZiAtLWdpdCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1faW50cmluc2ljX2xvd2VyaW5nLmNwcCBi YWNrZW5kL3NyYy9sbHZtL2xsdm1faW50cmluc2ljX2xvd2VyaW5nLmNwcAotaW5kZXggOTRmMGNl Ni4uYjU1MzllOSAxMDA2NDQKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9pbnRyaW5zaWNf bG93ZXJpbmcuY3BwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1faW50cmluc2ljX2xvd2Vy aW5nLmNwcAotQEAgLTI5LDEyICsyOSwxMiBAQAotIHVzaW5nIG5hbWVzcGFjZSBsbHZtOwotIAot IG5hbWVzcGFjZSBnYmUgewotLSAgICBjbGFzcyBJbnN0cmluc2ljTG93ZXJpbmcgOiBwdWJsaWMg QmFzaWNCbG9ja1Bhc3MKLSsgICAgY2xhc3MgSW5zdHJpbnNpY0xvd2VyaW5nIDogcHVibGljIEZ1 bmN0aW9uUGFzcwotICAgICB7Ci0gICAgIHB1YmxpYzoKLSAgICAgICBzdGF0aWMgY2hhciBJRDsK LSAgICAgICBJbnN0cmluc2ljTG93ZXJpbmcoKSA6Ci0tICAgICAgICBCYXNpY0Jsb2NrUGFzcyhJ RCkge30KLSsgICAgICAgIEZ1bmN0aW9uUGFzcyhJRCkge30KLSAKLSAgICAgICB2b2lkIGdldEFu YWx5c2lzVXNhZ2UoQW5hbHlzaXNVc2FnZSAmQVUpIGNvbnN0IHsKLSAKLUBAIC05Myw5ICs5Myw5 IEBAIG5hbWVzcGFjZSBnYmUgewotICAgICAgICAgQ0ktPmVyYXNlRnJvbVBhcmVudCgpOwotICAg ICAgICAgcmV0dXJuIE5ld0NJOwotICAgICAgIH0KLS0gICAgICB2aXJ0dWFsIGJvb2wgcnVuT25C YXNpY0Jsb2NrKEJhc2ljQmxvY2sgJkJCKQotKyAgICAgIHZpcnR1YWwgYm9vbCBydW5PbkZ1bmN0 aW9uKEZ1bmN0aW9uICZGKQotICAgICAgIHsKLS0gICAgICAgIGJvb2wgY2hhbmdlZEJsb2NrID0g ZmFsc2U7Ci0rICAgICAgICBmb3IgKEJhc2ljQmxvY2sgJkJCIDogRikgewotICAgICAgICAgTW9k dWxlICpNID0gQkIuZ2V0UGFyZW50KCktPmdldFBhcmVudCgpOwotIAotICAgICAgICAgRGF0YUxh eW91dCBURChNKTsKLUBAIC0xNTksMTMgKzE1OSwxNCBAQCBuYW1lc3BhY2UgZ2JlIHsKLSAgICAg ICAgICAgICB9Ci0gICAgICAgICAgIH0KLSAgICAgICAgIH0KLS0gICAgICAgIHJldHVybiBjaGFu Z2VkQmxvY2s7Ci0rICAgICAgICB9Ci0rICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICB9Ci0g ICAgIH07Ci0gCi0gICAgIGNoYXIgSW5zdHJpbnNpY0xvd2VyaW5nOjpJRCA9IDA7Ci0gCi0tICAg IEJhc2ljQmxvY2tQYXNzICpjcmVhdGVJbnRyaW5zaWNMb3dlcmluZ1Bhc3MoKSB7Ci0rICAgIEZ1 bmN0aW9uUGFzcyAqY3JlYXRlSW50cmluc2ljTG93ZXJpbmdQYXNzKCkgewotICAgICAgIHJldHVy biBuZXcgSW5zdHJpbnNpY0xvd2VyaW5nKCk7Ci0gICAgIH0KLSB9IC8vIGVuZCBuYW1lc3BhY2UK LWRpZmYgLS1naXQgYmFja2VuZC9zcmMvbGx2bS9sbHZtX2xvYWRzdG9yZV9vcHRpbWl6YXRpb24u Y3BwIGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9sb2Fkc3RvcmVfb3B0aW1pemF0aW9uLmNwcAotaW5k ZXggNWFhMzhiZS4uZTMxNDMwMiAxMDA2NDQKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9s b2Fkc3RvcmVfb3B0aW1pemF0aW9uLmNwcAotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2xv YWRzdG9yZV9vcHRpbWl6YXRpb24uY3BwCi1AQCAtMjYsMTMgKzI2LDEzIEBACi0gCi0gdXNpbmcg bmFtZXNwYWNlIGxsdm07Ci0gbmFtZXNwYWNlIGdiZSB7Ci0tICBjbGFzcyBHZW5Mb2FkU3RvcmVP cHRpbWl6YXRpb24gOiBwdWJsaWMgQmFzaWNCbG9ja1Bhc3MgewotKyAgY2xhc3MgR2VuTG9hZFN0 b3JlT3B0aW1pemF0aW9uIDogcHVibGljIEZ1bmN0aW9uUGFzcyB7Ci0gCi0gICBwdWJsaWM6Ci0g ICAgIHN0YXRpYyBjaGFyIElEOwotICAgICBTY2FsYXJFdm9sdXRpb24gKlNFOwotICAgICBjb25z dCBEYXRhTGF5b3V0ICpURDsKLS0gICAgR2VuTG9hZFN0b3JlT3B0aW1pemF0aW9uKCkgOiBCYXNp Y0Jsb2NrUGFzcyhJRCkge30KLSsgICAgR2VuTG9hZFN0b3JlT3B0aW1pemF0aW9uKCkgOiBGdW5j dGlvblBhc3MoSUQpIHt9Ci0gCi0gICAgIHZvaWQgZ2V0QW5hbHlzaXNVc2FnZShBbmFseXNpc1Vz YWdlICZBVSkgY29uc3QgewotICNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVS U0lPTl9NSU5PUiA+PSAzOAotQEAgLTQ1LDcgKzQ1LDkgQEAgbmFtZXNwYWNlIGdiZSB7Ci0gICAg ICAgQVUuc2V0UHJlc2VydmVzQ0ZHKCk7Ci0gICAgIH0KLSAKLS0gICAgdmlydHVhbCBib29sIHJ1 bk9uQmFzaWNCbG9jayhCYXNpY0Jsb2NrICZCQikgewotKyAgICB2aXJ0dWFsIGJvb2wgcnVuT25G dW5jdGlvbihGdW5jdGlvbiAmRikgewotKyAgICAgICAgYm9vbCBjaGFuZ2VkQW55QmxvY2sgPSBm YWxzZTsKLSsgICAgICAgIGZvciAoQmFzaWNCbG9jayAmQkIgOiBGKSB7Ci0gI2lmIExMVk1fVkVS U0lPTl9NQUpPUiAqIDEwICsgTExWTV9WRVJTSU9OX01JTk9SID49IDM4Ci0gICAgICAgU0UgPSAm Z2V0QW5hbHlzaXM8U2NhbGFyRXZvbHV0aW9uV3JhcHBlclBhc3M+KCkuZ2V0U0UoKTsKLSAjZWxz ZQotQEAgLTU5LDcgKzYxLDkgQEAgbmFtZXNwYWNlIGdiZSB7Ci0gICAgICAgI2Vsc2UKLSAgICAg ICAgIFREID0gZ2V0QW5hbHlzaXNJZkF2YWlsYWJsZTxEYXRhTGF5b3V0PigpOwotICAgICAgICNl bmRpZgotLSAgICAgIHJldHVybiBvcHRpbWl6ZUxvYWRTdG9yZShCQik7Ci0rICAgICAgICAgICBj aGFuZ2VkQW55QmxvY2sgPSBvcHRpbWl6ZUxvYWRTdG9yZShCQikgfCBjaGFuZ2VkQW55QmxvY2s7 Ci0rICAgICAgICB9Ci0rICAgICAgICByZXR1cm4gY2hhbmdlZEFueUJsb2NrOwotICAgICB9Ci0g ICAgIFR5cGUgICAgKmdldFZhbHVlVHlwZShWYWx1ZSAqaW5zbik7Ci0gICAgIFZhbHVlICAgKmdl dFBvaW50ZXJPcGVyYW5kKFZhbHVlICpJKTsKLUBAIC0xNDgsNyArMTUyLDcgQEAgbmFtZXNwYWNl IGdiZSB7Ci0gICAgICAgdmFsdWVzLnB1c2hfYmFjayhtZXJnZWRbaV0pOwotICAgICB9Ci0gICAg IExvYWRJbnN0ICpsZCA9IGNhc3Q8TG9hZEluc3Q+KG1lcmdlZFswXSk7Ci0tICAgIHVuc2lnbmVk IGFsaWduID0gbGQtPmdldEFsaWdubWVudCgpOwotKyAgICBNYXliZUFsaWduIGFsaWduID0gbGQt PmdldEFsaWduKCk7Ci0gICAgIHVuc2lnbmVkIGFkZHJTcGFjZSA9IGxkLT5nZXRQb2ludGVyQWRk cmVzc1NwYWNlKCk7Ci0gICAgIC8vIGluc2VydCBiZWZvcmUgZmlyc3QgbG9hZAotICAgICBCdWls ZGVyLlNldEluc2VydFBvaW50KGxkKTsKLUBAIC0yMzEsNyArMjM1LDcgQEAgbmFtZXNwYWNlIGdi ZSB7Ci0gCi0gICAgIHVuc2lnbmVkIGFkZHJTcGFjZSA9IHN0LT5nZXRQb2ludGVyQWRkcmVzc1Nw YWNlKCk7Ci0gCi0tICAgIHVuc2lnbmVkIGFsaWduID0gc3QtPmdldEFsaWdubWVudCgpOwotKyAg ICBNYXliZUFsaWduIGFsaWduID0gc3QtPmdldEFsaWduKCk7Ci0gICAgIC8vIGluc2VydCBiZWZv cmUgdGhlIGxhc3Qgc3RvcmUKLSAgICAgQnVpbGRlci5TZXRJbnNlcnRQb2ludChtZXJnZWRbc2l6 ZS0xXSk7Ci0gCi1AQCAtMzI1LDcgKzMyOSw3IEBAIG5hbWVzcGFjZSBnYmUgewotICAgICByZXR1 cm4gY2hhbmdlZDsKLSAgIH0KLSAKLS0gIEJhc2ljQmxvY2tQYXNzICpjcmVhdGVMb2FkU3RvcmVP cHRpbWl6YXRpb25QYXNzKCkgewotKyAgRnVuY3Rpb25QYXNzICpjcmVhdGVMb2FkU3RvcmVPcHRp bWl6YXRpb25QYXNzKCkgewotICAgICByZXR1cm4gbmV3IEdlbkxvYWRTdG9yZU9wdGltaXphdGlv bigpOwotICAgfQotIH07Ci1kaWZmIC0tZ2l0IGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9wYXNzZXMu Y3BwIGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9wYXNzZXMuY3BwCi1pbmRleCAxMDc1MmEzLi5iOGYy MjgyIDEwMDY0NAotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX3Bhc3Nlcy5jcHAKLSsrKyBi L2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9wYXNzZXMuY3BwCi1AQCAtMzcsNyArMzcsNyBAQAotICNp bmNsdWRlICJzeXMvbWFwLmhwcCIKLSAKLSB1c2luZyBuYW1lc3BhY2UgbGx2bTsKLS0KLSt0ZW1w bGF0ZSBjbGFzcyBjZmc6OlVwZGF0ZTxCYXNpY0Jsb2NrICo+OwotIG5hbWVzcGFjZSBnYmUKLSB7 Ci0gICBib29sIGlzS2VybmVsRnVuY3Rpb24oY29uc3QgbGx2bTo6RnVuY3Rpb24gJkYpIHsKLUBA IC0yMTksMTMgKzIxOSwxMyBAQCBuYW1lc3BhY2UgZ2JlCi0gICAgIHJldHVybiBvZmZzZXQ7Ci0g ICB9Ci0gCi0tICBjbGFzcyBHZW5SZW1vdmVHRVBQYXNzcyA6IHB1YmxpYyBCYXNpY0Jsb2NrUGFz cwotKyAgY2xhc3MgR2VuUmVtb3ZlR0VQUGFzc3MgOiBwdWJsaWMgRnVuY3Rpb25QYXNzCi0gICB7 Ci0gCi0gICAgcHVibGljOgotICAgICBzdGF0aWMgY2hhciBJRDsKLSAgICAgR2VuUmVtb3ZlR0VQ UGFzc3MoY29uc3QgaXI6OlVuaXQgJnVuaXQpIDoKLS0gICAgICBCYXNpY0Jsb2NrUGFzcyhJRCks Ci0rICAgICAgRnVuY3Rpb25QYXNzKElEKSwKLSAgICAgICB1bml0KHVuaXQpIHt9Ci0gICAgIGNv bnN0IGlyOjpVbml0ICZ1bml0OwotICAgICB2b2lkIGdldEFuYWx5c2lzVXNhZ2UoQW5hbHlzaXNV c2FnZSAmQVUpIGNvbnN0IHsKLUBAIC0yNDIsMTYgKzI0MiwxOCBAQCBuYW1lc3BhY2UgZ2JlCi0g Ci0gICAgIGJvb2wgc2ltcGxpZnlHRVBJbnN0cnVjdGlvbnMoR2V0RWxlbWVudFB0ckluc3QqIEdF UEluc3QpOwotIAotLSAgICB2aXJ0dWFsIGJvb2wgcnVuT25CYXNpY0Jsb2NrKEJhc2ljQmxvY2sg JkJCKQotKyAgICB2aXJ0dWFsIGJvb2wgcnVuT25GdW5jdGlvbihGdW5jdGlvbiAmRikKLSAgICAg ewotLSAgICAgIGJvb2wgY2hhbmdlZEJsb2NrID0gZmFsc2U7Ci0rICAgICAgYm9vbCBjaGFuZ2Vk QW55QmxvY2sgPSBmYWxzZTsKLSsgICAgICAgIGZvciAoQmFzaWNCbG9jayAmQkIgOiBGKSB7Ci0g ICAgICAgaXBsaXN0PEluc3RydWN0aW9uPjo6aXRlcmF0b3IgSSA9IEJCLmdldEluc3RMaXN0KCku YmVnaW4oKTsKLSAgICAgICBmb3IgKGF1dG8gbmV4dEkgPSBJLCBFID0gLS1CQi5nZXRJbnN0TGlz dCgpLmVuZCgpOyBJICE9IEU7IEkgPSBuZXh0SSkgewotICAgICAgICAgaXBsaXN0PEluc3RydWN0 aW9uPjo6aXRlcmF0b3IgSSA9IG5leHRJKys7Ci0gICAgICAgICBpZihHZXRFbGVtZW50UHRySW5z dCogZ2VwID0gZHluX2Nhc3Q8R2V0RWxlbWVudFB0ckluc3Q+KCYqSSkpCi0tICAgICAgICAgIGNo YW5nZWRCbG9jayA9IChzaW1wbGlmeUdFUEluc3RydWN0aW9ucyhnZXApIHx8IGNoYW5nZWRCbG9j ayk7Ci0rICAgICAgICAgIGNoYW5nZWRBbnlCbG9jayA9IChzaW1wbGlmeUdFUEluc3RydWN0aW9u cyhnZXApIHwgY2hhbmdlZEFueUJsb2NrKTsKLSAgICAgICB9Ci0tICAgICAgcmV0dXJuIGNoYW5n ZWRCbG9jazsKLSsgICAgICAgIH0KLSsgICAgICByZXR1cm4gY2hhbmdlZEFueUJsb2NrOwotICAg ICB9Ci0gICB9OwotIAotQEAgLTM2Nyw3ICszNjksNyBAQCBuYW1lc3BhY2UgZ2JlCi0gICAgIHJl dHVybiB0cnVlOwotICAgfQotIAotLSAgQmFzaWNCbG9ja1Bhc3MgKmNyZWF0ZVJlbW92ZUdFUFBh c3MoY29uc3QgaXI6OlVuaXQgJnVuaXQpIHsKLSsgIEZ1bmN0aW9uUGFzcyAqY3JlYXRlUmVtb3Zl R0VQUGFzcyhjb25zdCBpcjo6VW5pdCAmdW5pdCkgewotICAgICByZXR1cm4gbmV3IEdlblJlbW92 ZUdFUFBhc3NzKHVuaXQpOwotICAgfQotIH0gLyogbmFtZXNwYWNlIGdiZSAqLwotZGlmZiAtLWdp dCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1fc2FtcGxlcl9maXguY3BwIGJhY2tlbmQvc3JjL2xsdm0v bGx2bV9zYW1wbGVyX2ZpeC5jcHAKLWluZGV4IDJhMDk3YzguLjg2M2JlNmQgMTAwNjQ0Ci0tLS0g YS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fc2FtcGxlcl9maXguY3BwCi0rKysgYi9iYWNrZW5kL3Ny Yy9sbHZtL2xsdm1fc2FtcGxlcl9maXguY3BwCi1AQCAtMzMsMTAgKzMzLDEyIEBAIG5hbWVzcGFj ZSBnYmUgewotICAgY2xhc3MgU2FtcGxlckZpeCA6IHB1YmxpYyBGdW5jdGlvblBhc3MgewotICAg cHVibGljOgotICAgICBTYW1wbGVyRml4KCkgOiBGdW5jdGlvblBhc3MoSUQpIHsKLSsjaWYgTExW TV9WRVJTSU9OX01BSk9SIDwgMTAKLSAjaWYgTExWTV9WRVJTSU9OX01BSk9SICogMTAgKyBMTFZN X1ZFUlNJT05fTUlOT1IgPj0gMzUKLSAgICAgICBpbml0aWFsaXplRG9taW5hdG9yVHJlZVdyYXBw ZXJQYXNzUGFzcygqUGFzc1JlZ2lzdHJ5OjpnZXRQYXNzUmVnaXN0cnkoKSk7Ci0gI2Vsc2UKLSAg ICAgICBpbml0aWFsaXplRG9taW5hdG9yVHJlZVBhc3MoKlBhc3NSZWdpc3RyeTo6Z2V0UGFzc1Jl Z2lzdHJ5KCkpOwotKyNlbmRpZgotICNlbmRpZgotICAgICB9Ci0gCi1kaWZmIC0tZ2l0IGJhY2tl bmQvc3JjL2xsdm0vbGx2bV9zY2FsYXJpemUuY3BwIGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9zY2Fs YXJpemUuY3BwCi1pbmRleCBlOWEyYTY2Li5lOWQyZWU0IDEwMDY0NAotLS0tIGEvYmFja2VuZC9z cmMvbGx2bS9sbHZtX3NjYWxhcml6ZS5jcHAKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9z Y2FsYXJpemUuY3BwCi1AQCAtOTYsMTAgKzk2LDEyIEBAIG5hbWVzcGFjZSBnYmUgewotIAotICAg ICBTY2FsYXJpemUoKSA6IEZ1bmN0aW9uUGFzcyhJRCkKLSAgICAgewotKyNpZiBMTFZNX1ZFUlNJ T05fTUFKT1IgPCAxMAotICNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lP Tl9NSU5PUiA+PSAzNQotICAgICAgIGluaXRpYWxpemVEb21pbmF0b3JUcmVlV3JhcHBlclBhc3NQ YXNzKCpQYXNzUmVnaXN0cnk6OmdldFBhc3NSZWdpc3RyeSgpKTsKLSAjZWxzZQotICAgICAgIGlu aXRpYWxpemVEb21pbmF0b3JUcmVlUGFzcygqUGFzc1JlZ2lzdHJ5OjpnZXRQYXNzUmVnaXN0cnko KSk7Ci0rI2VuZGlmCi0gI2VuZGlmCi0gICAgIH0KLSAKLWRpZmYgLS1naXQgdXRlc3RzL0NNYWtl TGlzdHMudHh0IHV0ZXN0cy9DTWFrZUxpc3RzLnR4dAotaW5kZXggMzAwZDg3YS4uNjQxNzljNyAx MDA2NDQKLS0tLSBhL3V0ZXN0cy9DTWFrZUxpc3RzLnR4dAotKysrIGIvdXRlc3RzL0NNYWtlTGlz dHMudHh0Ci1AQCAtMjYsOCArMjYsOCBAQCBpZiAoTk9UIE5PVF9CVUlMRF9TVEFORF9BTE9ORV9V VEVTVCkKLSAgICMgVGhyZWFkcwotICAgRmluZF9QYWNrYWdlKFRocmVhZHMpCi0gCi0tICBzZXQg KENNQUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9ICR7Q01BS0VfQ19DWFhfRkxBR1N9 IC1zdGQ9YysrMHggLVduby1pbnZhbGlkLW9mZnNldG9mIikKLS0gIHNldCAoQ01BS0VfQ19GTEFH UyAiJHtDTUFLRV9DX0ZMQUdTfSAke0NNQUtFX0NfQ1hYX0ZMQUdTfSIpCi0rICBzZXQgKENNQUtF X0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9ICR7Q01BS0VfQ19DWFhfRkxBR1N9IC1Xbm8t aW52YWxpZC1vZmZzZXRvZiAtZmZsb2F0LXN0b3JlIC1mbm8tc3RyaWN0LWFsaWFzaW5nIikKLSsg IHNldCAoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAke0NNQUtFX0NfQ1hYX0ZMQUdT fSAtZmZsb2F0LXN0b3JlIC1mbm8tc3RyaWN0LWFsaWFzaW5nIikgI2NvbXBpbGVyX3tkZWdyZWVz LHJhZGlhbnMsZnVuY3Rpb25fYXJndW1lbnQyfSB1c2UgZXF1YWxpdHkgY29tcGFyaXNvbiBvZiBm bG9hdHMsIGNvbXBpbGVyX2xvbmdfYml0Y2FzdCB1c2VzIGFsaWFzaW5nCi0gICBzZXQgKENNQUtF X0NYWF9GTEFHU19ERUJVRyAgICAgICAgICAiLU8wIC1nIC1ER0JFX0RFQlVHPTEiKQotICAgc2V0 IChDTUFLRV9DWFhfRkxBR1NfUkVMV0lUSERFQklORk8gIi1PMiAtZyAtREdCRV9ERUJVRz0xIikK LSAgIHNldCAoQ01BS0VfQ1hYX0ZMQUdTX01JTlNJWkVSRUwgICAgICItT3MgLUROREVCVUcgLURH QkVfREVCVUc9MCIpCmRpZmYgLS1naXQgYS9zcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMTEu cGF0Y2ggYi9zcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMTEucGF0Y2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDJjM2E0Mjc4OTQzYy4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3Br Z3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0xMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDkzNyAr MCwwIEBACi1Tb3VyY2U6IFNuZWt0cm9uCi0KLVRoZXJlIHdlcmUgYSBmZXcgY2hhbmdlcyByZXF1 aXJlZCBmb3IgTExWTSAxMToKLSogbGx2bTo6U3RyaW5nUmVmIHJlcXVpcmVzIC5zdHIoKSwgaW1w bGljaXQgY29udmVyc2lvbiB3YXMgcmVtb3ZlZAotKiBsbHZtOjpDYWxsU2l0ZSB3YXMgcmVtb3Zl ZCwgYnV0IHRoZSByZXF1aXJlZCBtZXRob2RzIGFyZSBhdmFpbGFibGUgb24gbGx2bTo6Q2FsbElu c3QKLSogVmVjdG9yVHlJRCB3YXMgc3BsaXQgaW50byBGaXhlZFZlY3RvclR5SUQgYW5kIFNjYWxh YmxlVmVjdG9yVHlJRCwgRml4ZWRWZWN0b3JUeUlEIHdhcyB1c2VkCi0qIENhbGxJbnN0OjpnZXRD YWxsZWRWYWx1ZSgpIHdhcyByZW5hbWVkIHRvIENhbGxJbnN0OjpnZXRDYWxsZWRPcGVyYW5kKCkK LSogSW1wbGljaXQgY29udmVyc2lvbiBmcm9tIE1heWJlQWxpZ24gdG8gQWxpZ24gd2FzIHJlbW92 ZWQsIHNvIE1heWJlQWxpZ246OnZhbHVlT3JPbmUgd2FzIHVzZWQgaW5zdGVhZC4KLQotLS0tIGEv YmFja2VuZC9zcmMvbGx2bS9TdHJpcEF0dHJpYnV0ZXMuY3BwCTIwMjAtMTEtMDkgMTY6NDg6MjAu ODIzODY2MTEyICswMTAwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL1N0cmlwQXR0cmlidXRlcy5j cHAJMjAyMC0xMS0wOSAxOTowNDoxOS42NDE4OTcxNDEgKzAxMDAKLUBAIC0xMDcsOSArMTA3LDgg QEAKLSAgICAgICAgQkIgIT0gRTsgKytCQikgewotICAgICBmb3IgKEJhc2ljQmxvY2s6Oml0ZXJh dG9yIEluc3QgPSBCQi0+YmVnaW4oKSwgRSA9IEJCLT5lbmQoKTsKLSAgICAgICAgICBJbnN0ICE9 IEU7ICsrSW5zdCkgewotLSAgICAgIENhbGxTaXRlIENhbGwoJipJbnN0KTsKLS0gICAgICBpZiAo Q2FsbCkKLS0gICAgICAgIENhbGwuc2V0Q2FsbGluZ0NvbnYoQ2FsbGluZ0NvbnY6OkMpOwotKyAg ICAgIGlmIChDYWxsSW5zdCogY2FsbEluc3QgPSBkeW5fY2FzdDxDYWxsSW5zdD4oJipJbnN0KSkK LSsgICAgICAgIGNhbGxJbnN0LT5zZXRDYWxsaW5nQ29udihDYWxsaW5nQ29udjo6Qyk7Ci0gICAg IH0KLSAgIH0KLQotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2JpdGNvZGVfbGluay5jcHAJ MjAyMC0xMS0wOSAxNjo0ODoyMC44MjM4NjYxMTIgKzAxMDAKLSsrKyBiL2JhY2tlbmQvc3JjL2xs dm0vbGx2bV9iaXRjb2RlX2xpbmsuY3BwCTIwMjAtMTEtMDkgMTc6MDQ6MDkuNjMzNzUzNDI4ICsw MTAwCi1AQCAtOTgsNyArOTgsNyBAQAotICAgICAgICAgaWYgKGNhbGxGdW5jICYmIGNhbGxGdW5j LT5nZXRJbnRyaW5zaWNJRCgpICE9IDApCi0gICAgICAgICAgIGNvbnRpbnVlOwotCi0tICAgICAg ICBzdGQ6OnN0cmluZyBmbk5hbWUgPSBjYWxsLT5nZXRDYWxsZWRWYWx1ZSgpLT5zdHJpcFBvaW50 ZXJDYXN0cygpLT5nZXROYW1lKCk7Ci0rICAgICAgICBzdGQ6OnN0cmluZyBmbk5hbWUgPSBjYWxs LT5nZXRDYWxsZWRPcGVyYW5kKCktPnN0cmlwUG9pbnRlckNhc3RzKCktPmdldE5hbWUoKS5zdHIo KTsKLQotICAgICAgICAgaWYgKCFNRlMuaW5zZXJ0KGZuTmFtZSkuc2Vjb25kKSB7Ci0gICAgICAg ICAgIGNvbnRpbnVlOwotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2RldmljZV9lbnF1ZXVl LmNwcAkyMDIwLTExLTA5IDE2OjQ4OjIwLjgyMzg2NjExMiArMDEwMAotKysrIGIvYmFja2VuZC9z cmMvbGx2bS9sbHZtX2RldmljZV9lbnF1ZXVlLmNwcAkyMDIwLTExLTA5IDE5OjAxOjQ5LjIwMTkx NTAwOCArMDEwMAotQEAgLTQ1LDcgKzQ1LDcgQEAKLSAgICAgICByZXR1cm4gTlVMTDsKLQotICAg ICAvKiBUaGlzIGlzIGEgZmFrZSwgdG8gY2hlY2sgdGhlIGZ1bmN0aW9uIGJpdGNhc3QgaXMgZm9y IGJsb2NrIG9yIG5vdCAqLwotLSAgICBzdGQ6OnN0cmluZyBmbk5hbWUgPSBGbi0+Z2V0TmFtZSgp OwotKyAgICBzdGQ6OnN0cmluZyBmbk5hbWUgPSBGbi0+Z2V0TmFtZSgpLnN0cigpOwotICAgICBp Zihmbk5hbWUuZmluZCgiX2ludm9rZSIpID09IHN0ZDo6c3RyaW5nOjpucG9zKQotICAgICAgIHJl dHVybiBOVUxMOwotCi1AQCAtMTE5LDE4ICsxMTksMTggQEAKLSAgICAgICBQYXJhbVR5cy5wdXNo X2JhY2sodHkpOwotICAgICB9Ci0gICAgIEZ1bmN0aW9uVHlwZSogTmV3RlQgPSBGdW5jdGlvblR5 cGU6OmdldChGbi0+Z2V0UmV0dXJuVHlwZSgpLCBQYXJhbVR5cywgZmFsc2UpOwotLSAgICBGdW5j dGlvbiogTmV3Rm4gPSBGdW5jdGlvbjo6Q3JlYXRlKE5ld0ZULCBGdW5jdGlvbjo6RXh0ZXJuYWxM aW5rYWdlLCBGbi0+Z2V0TmFtZSgpKTsKLSsgICAgRnVuY3Rpb24qIE5ld0ZuID0gRnVuY3Rpb246 OkNyZWF0ZShOZXdGVCwgRnVuY3Rpb246OkV4dGVybmFsTGlua2FnZSwgRm4tPmdldE5hbWUoKS5z dHIoKSk7Ci0gICAgIFNtYWxsVmVjdG9yPFJldHVybkluc3QqLCA4PiBSZXR1cm5zOwotCi0gICAg IEZ1bmN0aW9uOjphcmdfaXRlcmF0b3IgTmV3Rm5BcmdJdCA9IE5ld0ZuLT5hcmdfYmVnaW4oKTsK LSAgICAgZm9yIChGdW5jdGlvbjo6YXJnX2l0ZXJhdG9yIEkgPSBGbi0+YXJnX2JlZ2luKCksIEUg PSBGbi0+YXJnX2VuZCgpOyBJICE9IEU7ICsrSSkgewotLSAgICAgIHN0ZDo6c3RyaW5nIEFyZ05h bWUgPSBJLT5nZXROYW1lKCk7Ci0rICAgICAgc3RkOjpzdHJpbmcgQXJnTmFtZSA9IEktPmdldE5h bWUoKS5zdHIoKTsKLSAgICAgICBOZXdGbkFyZ0l0LT5zZXROYW1lKEFyZ05hbWUpOwotICAgICAg IFZNYXBbJipJXSA9ICYoKk5ld0ZuQXJnSXQrKyk7Ci0gICAgIH0KLSAgICAgQ2xvbmVGdW5jdGlv bkludG8oTmV3Rm4sIEZuLCBWTWFwLCAvKk1vZHVsZUxldmVsQ2hhbmdlcz0qL3RydWUsIFJldHVy bnMpOwotCi0tICAgIEZuLT5zZXROYW1lKCJfX2QiICsgRm4tPmdldE5hbWUoKSk7Ci0rICAgIEZu LT5zZXROYW1lKCJfX2QiICsgRm4tPmdldE5hbWUoKS5zdHIoKSk7Ci0gICAgIG1vZC0+Z2V0RnVu Y3Rpb25MaXN0KCkucHVzaF9iYWNrKE5ld0ZuKTsKLSAgICAgLy9tb2QtPmdldE9ySW5zZXJ0RnVu Y3Rpb24oTmV3Rm4tPmdldE5hbWUoKSwgTmV3Rm4tPmdldEZ1bmN0aW9uVHlwZSgpLAotICAgICAv LyAgICAgICAgICAgICAgICAgICAgICAgICBOZXdGbi0+Z2V0QXR0cmlidXRlcygpKTsKLUBAIC0x NDcsNyArMTQ3LDcgQEAKLSAgICAgICBhcmdUeXBlTmFtZXMucHVzaF9iYWNrKGxsdm06Ok1EU3Ry aW5nOjpnZXQoQ29udGV4dCwgImNoYXIqIikpOwotICAgICAgIGFyZ0Jhc2VUeXBlTmFtZXMucHVz aF9iYWNrKGxsdm06Ok1EU3RyaW5nOjpnZXQoQ29udGV4dCwgImNoYXIqIikpOwotICAgICAgIGFy Z1R5cGVRdWFscy5wdXNoX2JhY2sobGx2bTo6TURTdHJpbmc6OmdldChDb250ZXh0LCAiIikpOwot LSAgICAgIGFyZ05hbWVzLnB1c2hfYmFjayhsbHZtOjpNRFN0cmluZzo6Z2V0KENvbnRleHQsIEkt PmdldE5hbWUoKSkpOwotKyAgICAgIGFyZ05hbWVzLnB1c2hfYmFjayhsbHZtOjpNRFN0cmluZzo6 Z2V0KENvbnRleHQsIEktPmdldE5hbWUoKS5zdHIoKSkpOwotICAgICB9Ci0KLSAgICAgLy9JZiBy dW4gdG8gaGVyZSwgbGx2bSB2ZXJzaW9uIGFsd2F5cyA+IDMuOSwgYWRkIHRoZSB2ZXJzaW9uIGNo ZWNrIGp1c3QgZm9yIGJ1aWxkLgotQEAgLTE5OCw3ICsxOTgsNyBAQAotICAgICAgICAgICAgKiBp bnZva2UgcG9pbnRlciB0byBzdG9yZSB0aGUgaW5kZXggaW4gdGhlIHVuaXQncyBibG9jayBmdW5j dGlvbnMgaW5kZXguKi8KLSAgICAgICAgICAgRnVuY3Rpb24gKkZuID0gZHluX2Nhc3Q8RnVuY3Rp b24+KGJ0LT5nZXRPcGVyYW5kKDApKTsKLQotLSAgICAgICAgICBzdGQ6OnN0cmluZyBmbk5hbWUg PSBGbi0+Z2V0TmFtZSgpOwotKyAgICAgICAgICBzdGQ6OnN0cmluZyBmbk5hbWUgPSBGbi0+Z2V0 TmFtZSgpLnN0cigpOwotICAgICAgICAgICBpbnQgaW5kZXggPSAtMTsKLSAgICAgICAgICAgZm9y KHNpemVfdCBpPTA7IGk8dW5pdC5ibG9ja0Z1bmNzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAg ICAgaWYodW5pdC5ibG9ja0Z1bmNzW2ldID09IGZuTmFtZSkgewotQEAgLTI0MSw3ICsyNDEsNyBA QAotICAgICAgICAgICAgIC8vdW5uYW1lZCBjYWxsIGZ1bmN0aW9uLCBwYXJzZSB0aGUgdXNlIHRv IGZpbmQgdGhlIGRlZmluZSBvZiBjYWxsZWQgZnVuY3Rpb24KLSAgICAgICAgICAgICBTbWFsbFZl Y3RvcjxWYWx1ZSosIDE2PiBhcmdzKENJLT5vcF9iZWdpbigpLCBDSS0+b3BfZW5kKCktMSk7Ci0K LS0gICAgICAgICAgICBWYWx1ZSAqdiA9IENJLT5nZXRDYWxsZWRWYWx1ZSgpOwotKyAgICAgICAg ICAgIFZhbHVlICp2ID0gQ0ktPmdldENhbGxlZE9wZXJhbmQoKTsKLSAgICAgICAgICAgICBCaXRD YXN0SW5zdCogYnQgPSBkeW5fY2FzdDxCaXRDYXN0SW5zdD4odik7Ci0gICAgICAgICAgICAgaWYo YnQgPT0gTlVMTCkKLSAgICAgICAgICAgICAgIGNvbnRpbnVlOwotQEAgLTMxNiw3ICszMTYsNyBA QAotICAgICAgICAgICAgICAgICAgIENvbnN0YW50RXhwciAqZXhwciA9IGR5bl9jYXN0PENvbnN0 YW50RXhwcj4oYy0+Z2V0T3BlcmFuZCgzKSk7Ci0gICAgICAgICAgICAgICAgICAgQml0Q2FzdElu c3QgKmJ0ID0gZHluX2Nhc3Q8Qml0Q2FzdEluc3Q+KGV4cHItPmdldEFzSW5zdHJ1Y3Rpb24oKSk7 Ci0gICAgICAgICAgICAgICAgICAgRnVuY3Rpb24qIGYgPSBkeW5fY2FzdDxGdW5jdGlvbj4oYnQt PmdldE9wZXJhbmQoMCkpOwotLSAgICAgICAgICAgICAgICAgIGJsb2Nrc1t2XSA9IGYtPmdldE5h bWUoKTsKLSsgICAgICAgICAgICAgICAgICBibG9ja3Nbdl0gPSBmLT5nZXROYW1lKCkuc3RyKCk7 Ci0gICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgIH0KLQotQEAgLTMzMiw3ICszMzIs NyBAQAotICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgIC8vaGFuZGxlIGVucXVldWVf a2VybmVsIGZ1bmN0aW9uIGNhbGwKLSAgICAgICAgICAgICBGdW5jdGlvbiAqZm4gPSBDSS0+Z2V0 Q2FsbGVkRnVuY3Rpb24oKTsKLS0gICAgICAgICAgICBpZiAoZm4tPmdldE5hbWUoKS5maW5kKCJl bnF1ZXVlX2tlcm5lbCIpID09IHN0ZDo6c3RyaW5nOjpucG9zKQotKyAgICAgICAgICAgIGlmIChm bi0+Z2V0TmFtZSgpLnN0cigpLmZpbmQoImVucXVldWVfa2VybmVsIikgPT0gc3RkOjpzdHJpbmc6 Om5wb3MpCi0gICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgIC8vYmxvY2sg cGFyYW1ldGVyJ3MgaW5kZXgsIDMgb3IgNgotQEAgLTM2MSw3ICszNjEsNyBAQAotICAgICAgICAg ICAgICAgICAgIENvbnN0YW50RXhwciAqZXhwciA9IGR5bl9jYXN0PENvbnN0YW50RXhwcj4oYy0+ Z2V0T3BlcmFuZCgzKSk7Ci0gICAgICAgICAgICAgICAgICAgQml0Q2FzdEluc3QgKmJ0ID0gZHlu X2Nhc3Q8Qml0Q2FzdEluc3Q+KGV4cHItPmdldEFzSW5zdHJ1Y3Rpb24oKSk7Ci0gICAgICAgICAg ICAgICAgICAgRnVuY3Rpb24qIGYgPSBkeW5fY2FzdDxGdW5jdGlvbj4oYnQtPmdldE9wZXJhbmQo MCkpOwotLSAgICAgICAgICAgICAgICAgIGJsb2Nrc1t2XSA9IGYtPmdldE5hbWUoKTsKLSsgICAg ICAgICAgICAgICAgICBibG9ja3Nbdl0gPSBmLT5nZXROYW1lKCkuc3RyKCk7Ci0gICAgICAgICAg ICAgICAgIH0KLSAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICB9IGVsc2UgaWYoaXNhPEFs bG9jYUluc3Q+KGJsb2NrKSkgewotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2dlbl9iYWNr ZW5kLmNwcAkyMDIwLTExLTA5IDE2OjQ4OjIwLjgyMzg2NjExMiArMDEwMAotKysrIGIvYmFja2Vu ZC9zcmMvbGx2bS9sbHZtX2dlbl9iYWNrZW5kLmNwcAkyMDIwLTExLTA5IDE4OjMzOjUwLjkxOTEx NDMyNyArMDEwMAotQEAgLTM3Niw3ICszNzYsNyBAQAotICAgICAgICAgICBHQkVfQVNTRVJUKGlu ZGV4ID09IDApOwotICAgICAgICAgICByZXR1cm4gdGhpcy0+X25ld1NjYWxhcih2YWx1ZSwga2V5 LCB0eXBlLCBpbmRleCwgdW5pZm9ybSk7Ci0gICAgICAgICAgIGJyZWFrOwotLSAgICAgICAgY2Fz ZSBUeXBlOjpWZWN0b3JUeUlEOgotKyAgICAgICAgY2FzZSBUeXBlOjpGaXhlZFZlY3RvclR5SUQ6 Ci0gICAgICAgICB7Ci0gICAgICAgICAgIGF1dG8gdmVjdG9yVHlwZSA9IGNhc3Q8VmVjdG9yVHlw ZT4odHlwZSk7Ci0gICAgICAgICAgIGF1dG8gZWxlbWVudFR5cGUgPSB2ZWN0b3JUeXBlLT5nZXRF bGVtZW50VHlwZSgpOwotQEAgLTc0MywyMCArNzQzLDIwIEBACi0gI3VuZGVmIERFQ0xfVklTSVRf Rk4KLQotICAgICAvLyBFbWl0IHJvdW5kaW5nIGluc3RydWN0aW9ucyBmcm9tIGdlbiBuYXRpdmUg ZnVuY3Rpb24KLS0gICAgdm9pZCBlbWl0Um91bmRpbmdDYWxsSW5zdChDYWxsSW5zdCAmSSwgQ2Fs bFNpdGUgJkNTLCBpcjo6T3Bjb2RlIG9wY29kZSk7Ci0rICAgIHZvaWQgZW1pdFJvdW5kaW5nQ2Fs bEluc3QoQ2FsbEluc3QgJkksIGlyOjpPcGNvZGUgb3Bjb2RlKTsKLSAgICAgLy8gRW1pdCB1bmFy eSBpbnN0cnVjdGlvbnMgZnJvbSBnZW4gbmF0aXZlIGZ1bmN0aW9uCi0tICAgIHZvaWQgZW1pdFVu YXJ5Q2FsbEluc3QoQ2FsbEluc3QgJkksIENhbGxTaXRlICZDUywgaXI6Ok9wY29kZSBvcGNvZGUs IGlyOjpUeXBlID0gaXI6OlRZUEVfRkxPQVQpOwotKyAgICB2b2lkIGVtaXRVbmFyeUNhbGxJbnN0 KENhbGxJbnN0ICZJLCBpcjo6T3Bjb2RlIG9wY29kZSwgaXI6OlR5cGUgPSBpcjo6VFlQRV9GTE9B VCk7Ci0gICAgIC8vIEVtaXQgdW5hcnkgaW5zdHJ1Y3Rpb25zIGZyb20gZ2VuIG5hdGl2ZSBmdW5j dGlvbgotLSAgICB2b2lkIGVtaXRBdG9taWNJbnN0KENhbGxJbnN0ICZJLCBDYWxsU2l0ZSAmQ1Ms IGlyOjpBdG9taWNPcHMgb3Bjb2RlKTsKLSsgICAgdm9pZCBlbWl0QXRvbWljSW5zdChDYWxsSW5z dCAmSSwgaXI6OkF0b21pY09wcyBvcGNvZGUpOwotICAgICAvLyBFbWl0IHdvcmtncm91cCBpbnN0 cnVjdGlvbnMKLS0gICAgdm9pZCBlbWl0V29ya0dyb3VwSW5zdChDYWxsSW5zdCAmSSwgQ2FsbFNp dGUgJkNTLCBpcjo6V29ya0dyb3VwT3BzIG9wY29kZSk7Ci0rICAgIHZvaWQgZW1pdFdvcmtHcm91 cEluc3QoQ2FsbEluc3QgJkksIGlyOjpXb3JrR3JvdXBPcHMgb3Bjb2RlKTsKLSAgICAgLy8gRW1p dCBzdWJncm91cCBpbnN0cnVjdGlvbnMKLS0gICAgdm9pZCBlbWl0U3ViR3JvdXBJbnN0KENhbGxJ bnN0ICZJLCBDYWxsU2l0ZSAmQ1MsIGlyOjpXb3JrR3JvdXBPcHMgb3Bjb2RlKTsKLSsgICAgdm9p ZCBlbWl0U3ViR3JvdXBJbnN0KENhbGxJbnN0ICZJLCBpcjo6V29ya0dyb3VwT3BzIG9wY29kZSk7 Ci0gICAgIC8vIEVtaXQgc3ViZ3JvdXAgaW5zdHJ1Y3Rpb25zCi0tICAgIHZvaWQgZW1pdEJsb2Nr UmVhZFdyaXRlTWVtSW5zdChDYWxsSW5zdCAmSSwgQ2FsbFNpdGUgJkNTLCBib29sIGlzV3JpdGUs IHVpbnQ4X3QgdmVjX3NpemUsIGlyOjpUeXBlID0gaXI6OlRZUEVfVTMyKTsKLS0gICAgdm9pZCBl bWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoQ2FsbEluc3QgJkksIENhbGxTaXRlICZDUywgYm9v bCBpc1dyaXRlLCB1aW50OF90IHZlY19zaXplLCBpcjo6VHlwZSA9IGlyOjpUWVBFX1UzMik7Ci0r ICAgIHZvaWQgZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChDYWxsSW5zdCAmSSwgYm9vbCBpc1dy aXRlLCB1aW50OF90IHZlY19zaXplLCBpcjo6VHlwZSA9IGlyOjpUWVBFX1UzMik7Ci0rICAgIHZv aWQgZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KENhbGxJbnN0ICZJLCBib29sIGlzV3JpdGUs IHVpbnQ4X3QgdmVjX3NpemUsIGlyOjpUeXBlID0gaXI6OlRZUEVfVTMyKTsKLQotLSAgICB1aW50 OF90IGFwcGVuZFNhbXBsZXIoQ2FsbFNpdGU6OmFyZ19pdGVyYXRvciBBSSk7Ci0rICAgIHVpbnQ4 X3QgYXBwZW5kU2FtcGxlcihVc2VyOjpvcF9pdGVyYXRvciBBSSk7Ci0gICAgIHVpbnQ4X3QgZ2V0 SW1hZ2VJRChDYWxsSW5zdCAmSSk7Ci0KLSAgICAgLy8gVGhlc2UgaW5zdHJ1Y3Rpb25zIGFyZSBu b3Qgc3VwcG9ydGVkIGF0IGFsbAotQEAgLTEzMjAsMTMgKzEzMjAsMTMgQEAKLSAjZW5kaWYKLQot ICAgICAgIGlmKHR5cGVOYW1lTm9kZSkgewotLSAgICAgICAgbGx2bUluZm8udHlwZU5hbWU9IChj YXN0PE1EU3RyaW5nPih0eXBlTmFtZU5vZGUtPmdldE9wZXJhbmQob3BJRCkpKS0+Z2V0U3RyaW5n KCk7Ci0rICAgICAgICBsbHZtSW5mby50eXBlTmFtZT0gKGNhc3Q8TURTdHJpbmc+KHR5cGVOYW1l Tm9kZS0+Z2V0T3BlcmFuZChvcElEKSkpLT5nZXRTdHJpbmcoKS5zdHIoKTsKLSAgICAgICB9Ci0g ICAgICAgaWYodHlwZUJhc2VOYW1lTm9kZSkgewotLSAgICAgICAgbGx2bUluZm8udHlwZUJhc2VO YW1lPSAoY2FzdDxNRFN0cmluZz4odHlwZUJhc2VOYW1lTm9kZS0+Z2V0T3BlcmFuZChvcElEKSkp LT5nZXRTdHJpbmcoKTsKLSsgICAgICAgIGxsdm1JbmZvLnR5cGVCYXNlTmFtZT0gKGNhc3Q8TURT dHJpbmc+KHR5cGVCYXNlTmFtZU5vZGUtPmdldE9wZXJhbmQob3BJRCkpKS0+Z2V0U3RyaW5nKCku c3RyKCk7Ci0gICAgICAgfQotLSAgICAgIGxsdm1JbmZvLnR5cGVOYW1lPSAoY2FzdDxNRFN0cmlu Zz4odHlwZU5hbWVOb2RlLT5nZXRPcGVyYW5kKG9wSUQpKSktPmdldFN0cmluZygpOwotLSAgICAg IGxsdm1JbmZvLnR5cGVRdWFsID0gKGNhc3Q8TURTdHJpbmc+KHR5cGVRdWFsTm9kZS0+Z2V0T3Bl cmFuZChvcElEKSkpLT5nZXRTdHJpbmcoKTsKLSsgICAgICBsbHZtSW5mby50eXBlTmFtZT0gKGNh c3Q8TURTdHJpbmc+KHR5cGVOYW1lTm9kZS0+Z2V0T3BlcmFuZChvcElEKSkpLT5nZXRTdHJpbmco KS5zdHIoKTsKLSsgICAgICBsbHZtSW5mby50eXBlUXVhbCA9IChjYXN0PE1EU3RyaW5nPih0eXBl UXVhbE5vZGUtPmdldE9wZXJhbmQob3BJRCkpKS0+Z2V0U3RyaW5nKCkuc3RyKCk7Ci0gICAgICAg Ym9vbCBpc0ltYWdlID0gbGx2bUluZm8uaXNJbWFnZVR5cGUoKTsKLSAgICAgICBib29sIGlzUGlw ZSA9IGxsdm1JbmZvLmlzUGlwZVR5cGUoKTsKLSAgICAgICBpZiAoSS0+Z2V0VHlwZSgpLT5pc1Bv aW50ZXJUeSgpIHx8IGlzSW1hZ2UgfHwgaXNQaXBlKSB7Ci1AQCAtMTUzMSw3ICsxNTMxLDcgQEAK LSAgICAgICAgICAgICBFbHRUeSA9IGdldEVsdFR5cGUoRWx0VHksIFR5cGVJbmRleCk7Ci0gICAg ICAgICB9Ci0KLS0gICAgICAgIGlyOjpDb25zdGFudCBjYyA9IHVuaXQuZ2V0Q29uc3RhbnRTZXQo KS5nZXRDb25zdGFudChwb2ludGVyLT5nZXROYW1lKCkpOwotKyAgICAgICAgaXI6OkNvbnN0YW50 IGNjID0gdW5pdC5nZXRDb25zdGFudFNldCgpLmdldENvbnN0YW50KHBvaW50ZXItPmdldE5hbWUo KS5zdHIoKSk7Ci0gICAgICAgICB1bnNpZ25lZCBpbnQgZGVmT2Zmc2V0ID0gY2MuZ2V0T2Zmc2V0 KCk7Ci0gICAgICAgICByZWxvY3MucHVzaF9iYWNrKGlyOjpSZWxvY0VudHJ5KG9mZnNldCwgZGVm T2Zmc2V0ICsgY29uc3RhbnRPZmZzZXQpKTsKLQotQEAgLTE1NDYsNyArMTU0Niw3IEBACi0gICAg ICAgcmV0dXJuOwotICAgICB9Ci0gICAgIGlmIChpc2E8R2xvYmFsVmFyaWFibGU+KGMpKSB7Ci0t ICAgICAgaXI6OkNvbnN0YW50IGNjID0gdW5pdC5nZXRDb25zdGFudFNldCgpLmdldENvbnN0YW50 KGMtPmdldE5hbWUoKSk7Ci0rICAgICAgaXI6OkNvbnN0YW50IGNjID0gdW5pdC5nZXRDb25zdGFu dFNldCgpLmdldENvbnN0YW50KGMtPmdldE5hbWUoKS5zdHIoKSk7Ci0gICAgICAgdW5zaWduZWQg aW50IGRlZk9mZnNldCA9IGNjLmdldE9mZnNldCgpOwotCi0gICAgICAgcmVsb2NzLnB1c2hfYmFj ayhpcjo6UmVsb2NFbnRyeShvZmZzZXQsIGRlZk9mZnNldCkpOwotQEAgLTE2MDksNyArMTYwOSw3 IEBACi0gICAgICAgICAgIH0KLSAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0tICAgICAg Y2FzZSBUeXBlOjpUeXBlSUQ6OlZlY3RvclR5SUQ6Ci0rICAgICAgY2FzZSBUeXBlOjpUeXBlSUQ6 OkZpeGVkVmVjdG9yVHlJRDoKLSAgICAgICAgIHsKLSAgICAgICAgICAgY29uc3QgQ29uc3RhbnRE YXRhU2VxdWVudGlhbCAqY2RzID0gZHluX2Nhc3Q8Q29uc3RhbnREYXRhU2VxdWVudGlhbD4oYyk7 Ci0gICAgICAgICAgIGNvbnN0IFZlY3RvclR5cGUgKnZlY1R5ID0gY2FzdDxWZWN0b3JUeXBlPih0 eXBlKTsKLUBAIC0xOTM2LDcgKzE5MzYsNyBAQAotICAgICAgIGNhc2UgVHlwZTo6UG9pbnRlclR5 SUQ6Ci0gICAgICAgICByZWdUcmFuc2xhdG9yLm5ld1NjYWxhcih2YWx1ZSwga2V5LCAwLCB1bmlm b3JtKTsKLSAgICAgICAgIGJyZWFrOwotLSAgICAgIGNhc2UgVHlwZTo6VmVjdG9yVHlJRDoKLSsg ICAgICBjYXNlIFR5cGU6OkZpeGVkVmVjdG9yVHlJRDoKLSAgICAgICB7Ci0gICAgICAgICBhdXRv IHZlY3RvclR5cGUgPSBjYXN0PFZlY3RvclR5cGU+KHR5cGUpOwotICAgICAgICAgY29uc3QgdWlu dDMyX3QgZWxlbU51bSA9IHZlY3RvclR5cGUtPmdldE51bUVsZW1lbnRzKCk7Ci1AQCAtMjM5NSw3 ICsyMzk1LDcgQEAKLSAjZW5kaWYKLSAgICAgICAgIH0KLSAgICAgICAgIGlmKHR5cGVOYW1lTm9k ZSkgewotLSAgICAgICAgICBsbHZtSW5mby50eXBlTmFtZSA9IChjYXN0PE1EU3RyaW5nPih0eXBl TmFtZU5vZGUtPmdldE9wZXJhbmQob3BJRCkpKS0+Z2V0U3RyaW5nKCk7Ci0rICAgICAgICAgIGxs dm1JbmZvLnR5cGVOYW1lID0gKGNhc3Q8TURTdHJpbmc+KHR5cGVOYW1lTm9kZS0+Z2V0T3BlcmFu ZChvcElEKSkpLT5nZXRTdHJpbmcoKS5zdHIoKTsKLSAgICAgICAgICAgLy9MTFZNIDMuOSBpbWFn ZSdzIHR5cGUgbmFtZSBpbmNsdWRlIGFjY2VzcyBxdWFsLCBkb24ndCBtYXRjaCBPcGVuQ0wgc3Bl YywgZXJhc2UgdGhlbS4KLSAgICAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGZpbHRl cnMgPSB7Il9fcmVhZF9vbmx5ICIsICJfX3dyaXRlX29ubHkgIn07Ci0gICAgICAgICAgIGZvciAo dWludDMyX3QgaSA9IDA7IGkgPCBmaWx0ZXJzLnNpemUoKTsgaSsrKSB7Ci1AQCAtMjQwNiwxNiAr MjQwNiwxNiBAQAotICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICAgICBpZih0eXBlQmFz ZU5hbWVOb2RlKXsKLS0gICAgICAgICAgbGx2bUluZm8udHlwZUJhc2VOYW1lID0gKGNhc3Q8TURT dHJpbmc+KHR5cGVCYXNlTmFtZU5vZGUtPmdldE9wZXJhbmQob3BJRCkpKS0+Z2V0U3RyaW5nKCk7 Ci0rICAgICAgICAgIGxsdm1JbmZvLnR5cGVCYXNlTmFtZSA9IChjYXN0PE1EU3RyaW5nPih0eXBl QmFzZU5hbWVOb2RlLT5nZXRPcGVyYW5kKG9wSUQpKSktPmdldFN0cmluZygpLnN0cigpOwotICAg ICAgICAgfQotICAgICAgICAgaWYoYWNjZXNzUXVhbE5vZGUpIHsKLS0gICAgICAgICAgbGx2bUlu Zm8uYWNjZXNzUXVhbCA9IChjYXN0PE1EU3RyaW5nPihhY2Nlc3NRdWFsTm9kZS0+Z2V0T3BlcmFu ZChvcElEKSkpLT5nZXRTdHJpbmcoKTsKLSsgICAgICAgICAgbGx2bUluZm8uYWNjZXNzUXVhbCA9 IChjYXN0PE1EU3RyaW5nPihhY2Nlc3NRdWFsTm9kZS0+Z2V0T3BlcmFuZChvcElEKSkpLT5nZXRT dHJpbmcoKS5zdHIoKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGlmKHR5cGVRdWFsTm9kZSkgewot LSAgICAgICAgICBsbHZtSW5mby50eXBlUXVhbCA9IChjYXN0PE1EU3RyaW5nPih0eXBlUXVhbE5v ZGUtPmdldE9wZXJhbmQob3BJRCkpKS0+Z2V0U3RyaW5nKCk7Ci0rICAgICAgICAgIGxsdm1JbmZv LnR5cGVRdWFsID0gKGNhc3Q8TURTdHJpbmc+KHR5cGVRdWFsTm9kZS0+Z2V0T3BlcmFuZChvcElE KSkpLT5nZXRTdHJpbmcoKS5zdHIoKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGlmKGFyZ05hbWVO b2RlKXsKLS0gICAgICAgICAgbGx2bUluZm8uYXJnTmFtZSA9IChjYXN0PE1EU3RyaW5nPihhcmdO YW1lTm9kZS0+Z2V0T3BlcmFuZChvcElEKSkpLT5nZXRTdHJpbmcoKTsKLSsgICAgICAgICAgbGx2 bUluZm8uYXJnTmFtZSA9IChjYXN0PE1EU3RyaW5nPihhcmdOYW1lTm9kZS0+Z2V0T3BlcmFuZChv cElEKSkpLT5nZXRTdHJpbmcoKS5zdHIoKTsKLSAgICAgICAgIH0KLQotICAgICAgICAgLy8gZnVu Y3Rpb24gYXJndW1lbnRzIGFyZSB1bmlmb3JtIHZhbHVlcy4KLUBAIC0zMDEwLDcgKzMwMTAsNyBA QAotICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgdGhpcy0+bmV3UmVnaXN0ZXIoY29uc3Rf Y2FzdDxHbG9iYWxWYXJpYWJsZSo+KCZ2KSk7Ci0gICAgICAgICAgIGlyOjpSZWdpc3RlciByZWcg PSByZWdUcmFuc2xhdG9yLmdldFNjYWxhcihjb25zdF9jYXN0PEdsb2JhbFZhcmlhYmxlKj4oJnYp LCAwKTsKLS0gICAgICAgICAgaXI6OkNvbnN0YW50ICZjb24gPSB1bml0LmdldENvbnN0YW50U2V0 KCkuZ2V0Q29uc3RhbnQodi5nZXROYW1lKCkpOwotKyAgICAgICAgICBpcjo6Q29uc3RhbnQgJmNv biA9IHVuaXQuZ2V0Q29uc3RhbnRTZXQoKS5nZXRDb25zdGFudCh2LmdldE5hbWUoKS5zdHIoKSk7 Ci0gICAgICAgICAgIGlmICghbGVnYWN5TW9kZSkgewotICAgICAgICAgICAgIGlyOjpSZWdpc3Rl ciByZWdsb2FkID0gY3R4LnJlZyhnZXRGYW1pbHkoZ2V0VHlwZShjdHgsIHYuZ2V0VHlwZSgpKSkp OwotICAgICAgICAgICAgIGN0eC5MT0FESShnZXRUeXBlKGN0eCwgdi5nZXRUeXBlKCkpLCByZWds b2FkLCBjdHgubmV3SW50ZWdlckltbWVkaWF0ZShjb24uZ2V0T2Zmc2V0KCksIGdldFR5cGUoY3R4 LCB2LmdldFR5cGUoKSkpKTsKLUBAIC0zMjEyLDcgKzMyMTIsNyBAQAotICAgICAgICAgR0JFX0FT U0VSVE0oZmFsc2UsICJVbnN1cHBvcnRlZCBjYWxsaW5nIGNvbnZlbnRpb24iKTsKLSAgICAgfQot Ci0tICAgIGN0eC5zdGFydEZ1bmN0aW9uKEYuZ2V0TmFtZSgpKTsKLSsgICAgY3R4LnN0YXJ0RnVu Y3Rpb24oRi5nZXROYW1lKCkuc3RyKCkpOwotCi0gICAgIGlyOjpGdW5jdGlvbiAmZm4gPSBjdHgu Z2V0RnVuY3Rpb24oKTsKLSAgICAgdGhpcy0+cmVnVHJhbnNsYXRvci5jbGVhcigpOwotQEAgLTM4 MTAsOSArMzgxMCw5IEBACi0KLSAgIHZvaWQgR2VuV3JpdGVyOjpyZWdBbGxvY2F0ZUNhbGxJbnN0 KENhbGxJbnN0ICZJKSB7Ci0gICAgIFZhbHVlICpkc3QgPSAmSTsKLS0gICAgVmFsdWUgKkNhbGxl ZSA9IEkuZ2V0Q2FsbGVkVmFsdWUoKTsKLSsgICAgVmFsdWUgKkNhbGxlZSA9IEkuZ2V0Q2FsbGVk T3BlcmFuZCgpOwotICAgICBHQkVfQVNTRVJUKGN0eC5nZXRGdW5jdGlvbigpLmdldFByb2ZpbGUo KSA9PSBpcjo6UFJPRklMRV9PQ0wpOwotLSAgICBHQkVfQVNTRVJUKGlzYTxJbmxpbmVBc20+KEku Z2V0Q2FsbGVkVmFsdWUoKSkgPT0gZmFsc2UpOwotKyAgICBHQkVfQVNTRVJUKGlzYTxJbmxpbmVB c20+KEkuZ2V0Q2FsbGVkT3BlcmFuZCgpKSA9PSBmYWxzZSk7Ci0gICAgIGlmKEkuZ2V0TnVtQXJn T3BlcmFuZHMoKSkgR0JFX0FTU0VSVChJLmhhc1N0cnVjdFJldEF0dHIoKSA9PSBmYWxzZSk7Ci0K LSAgICAgLy8gV2Ugb25seSBzdXBwb3J0IGEgc21hbGwgbnVtYmVyIG9mIGludHJpbnNpY3Mgcmln aHQgbm93Ci1AQCAtMzg3MCw3ICszODcwLDcgQEAKLSAgICAgICB9Ci0gICAgIH0KLSAgICAgLy8g R2V0IHRoZSBuYW1lIG9mIHRoZSBjYWxsZWQgZnVuY3Rpb24gYW5kIGhhbmRsZSBpdAotLSAgICBj b25zdCBzdGQ6OnN0cmluZyBmbk5hbWUgPSBDYWxsZWUtPnN0cmlwUG9pbnRlckNhc3RzKCktPmdl dE5hbWUoKTsKLSsgICAgY29uc3Qgc3RkOjpzdHJpbmcgZm5OYW1lID0gQ2FsbGVlLT5zdHJpcFBv aW50ZXJDYXN0cygpLT5nZXROYW1lKCkuc3RyKCk7Ci0gICAgIGF1dG8gZ2VuSW50cmluc2ljSUQg PSBpbnRyaW5zaWNNYXAuZmluZChmbk5hbWUpOwotICAgICBzd2l0Y2ggKGdlbkludHJpbnNpY0lE KSB7Ci0gICAgICAgY2FzZSBHRU5fT0NMX0dFVF9HUk9VUF9JRDA6Ci1AQCAtNDE2Niw3ICs0MTY2 LDcgQEAKLSAgICAgfTsKLSAgIH0KLQotLSAgdm9pZCBHZW5Xcml0ZXI6OmVtaXRSb3VuZGluZ0Nh bGxJbnN0KENhbGxJbnN0ICZJLCBDYWxsU2l0ZSAmQ1MsIGlyOjpPcGNvZGUgb3Bjb2RlKSB7Ci0r ICB2b2lkIEdlbldyaXRlcjo6ZW1pdFJvdW5kaW5nQ2FsbEluc3QoQ2FsbEluc3QgJkksIGlyOjpP cGNvZGUgb3Bjb2RlKSB7Ci0gICAgIGlmIChJLmdldFR5cGUoKS0+aXNIYWxmVHkoKSkgewotICAg ICAgIGNvbnN0IGlyOjpSZWdpc3RlciBzcmMgPSB0aGlzLT5nZXRSZWdpc3RlcihJLmdldE9wZXJh bmQoMCkpOwotICAgICAgIGNvbnN0IGlyOjpSZWdpc3RlciBzcmNGbG9hdCA9IGN0eC5yZWcoaXI6 OkZBTUlMWV9EV09SRCk7Ci1AQCAtNDE3NywxNCArNDE3NywxNCBAQAotICAgICAgIGN0eC5GMzJU TzE2KGlyOjpUWVBFX1UxNiwgaXI6OlRZUEVfRkxPQVQsIGRzdCwgZHN0RmxvYXQpOwotICAgICB9 IGVsc2UgewotICAgICAgIEdCRV9BU1NFUlQoSS5nZXRUeXBlKCktPmlzRmxvYXRUeSgpKTsKLS0g ICAgICB0aGlzLT5lbWl0VW5hcnlDYWxsSW5zdChJLENTLG9wY29kZSk7Ci0rICAgICAgdGhpcy0+ ZW1pdFVuYXJ5Q2FsbEluc3QoSSxvcGNvZGUpOwotICAgICB9Ci0gICB9Ci0KLS0gIHZvaWQgR2Vu V3JpdGVyOjplbWl0VW5hcnlDYWxsSW5zdChDYWxsSW5zdCAmSSwgQ2FsbFNpdGUgJkNTLCBpcjo6 T3Bjb2RlIG9wY29kZSwgaXI6OlR5cGUgdHlwZSkgewotLSAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJh dG9yIEFJID0gQ1MuYXJnX2JlZ2luKCk7Ci0rICB2b2lkIEdlbldyaXRlcjo6ZW1pdFVuYXJ5Q2Fs bEluc3QoQ2FsbEluc3QgJkksIGlyOjpPcGNvZGUgb3Bjb2RlLCBpcjo6VHlwZSB0eXBlKSB7Ci0r ICAgIFVzZXI6Om9wX2l0ZXJhdG9yIEFJID0gSS5hcmdfYmVnaW4oKTsKLSAjaWYgR0JFX0RFQlVH Ci0tICAgIENhbGxTaXRlOjphcmdfaXRlcmF0b3IgQUUgPSBDUy5hcmdfZW5kKCk7Ci0rICAgIFVz ZXI6Om9wX2l0ZXJhdG9yIEFFID0gSS5hcmdfZW5kKCk7Ci0gI2VuZGlmIC8qIEdCRV9ERUJVRyAq LwotICAgICBHQkVfQVNTRVJUKEFJICE9IEFFKTsKLSAgICAgY29uc3QgaXI6OlJlZ2lzdGVyIHNy YyA9IHRoaXMtPmdldFJlZ2lzdGVyKCpBSSk7Ci1AQCAtNDI5Myw5ICs0MjkzLDkgQEAKLSAgICAg dGhpcy0+ZW1pdEF0b21pY0luc3RIZWxwZXIob3Bjb2RlLCB0eXBlLCBkc3QsIGxsdm1QdHIsIHBh eWxvYWRUdXBsZSk7Ci0gICB9Ci0KLS0gIHZvaWQgR2VuV3JpdGVyOjplbWl0QXRvbWljSW5zdChD YWxsSW5zdCAmSSwgQ2FsbFNpdGUgJkNTLCBpcjo6QXRvbWljT3BzIG9wY29kZSkgewotLSAgICBD YWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIEFJID0gQ1MuYXJnX2JlZ2luKCk7Ci0tICAgIENhbGxTaXRl OjphcmdfaXRlcmF0b3IgQUUgPSBDUy5hcmdfZW5kKCk7Ci0rICB2b2lkIEdlbldyaXRlcjo6ZW1p dEF0b21pY0luc3QoQ2FsbEluc3QgJkksIGlyOjpBdG9taWNPcHMgb3Bjb2RlKSB7Ci0rICAgIFVz ZXI6Om9wX2l0ZXJhdG9yIEFJID0gSS5hcmdfYmVnaW4oKTsKLSsgICAgVXNlcjo6b3BfaXRlcmF0 b3IgQUUgPSBJLmFyZ19lbmQoKTsKLSAgICAgR0JFX0FTU0VSVChBSSAhPSBBRSk7Ci0gICAgIFZh bHVlICpsbHZtUHRyID0gKkFJOwotICAgICBpcjo6QWRkcmVzc1NwYWNlIGFkZHJTcGFjZSA9IGFk ZHJlc3NTcGFjZUxMVk1Ub0dlbihsbHZtUHRyLT5nZXRUeXBlKCktPmdldFBvaW50ZXJBZGRyZXNz U3BhY2UoKSk7Ci1AQCAtNDM0OCw3ICs0MzQ4LDcgQEAKLSAgICAgfQotICAgfQotCi0tICB2b2lk IEdlbldyaXRlcjo6ZW1pdFdvcmtHcm91cEluc3QoQ2FsbEluc3QgJkksIENhbGxTaXRlICZDUywg aXI6OldvcmtHcm91cE9wcyBvcGNvZGUpIHsKLSsgIHZvaWQgR2VuV3JpdGVyOjplbWl0V29ya0dy b3VwSW5zdChDYWxsSW5zdCAmSSwgaXI6OldvcmtHcm91cE9wcyBvcGNvZGUpIHsKLSAgICAgaXI6 OkZ1bmN0aW9uICZmID0gY3R4LmdldEZ1bmN0aW9uKCk7Ci0KLSAgICAgaWYgKGYuZ2V0d2dCcm9h ZGNhc3RTTE0oKSA8IDAgJiYgb3Bjb2RlID09IGlyOjpXT1JLR1JPVVBfT1BfQlJPQURDQVNUKSB7 Ci1AQCAtNDM3OCw4ICs0Mzc4LDggQEAKLSAgICAgICBHQkVfQVNTRVJUKGYuZ2V0dGlkTWFwU0xN KCkgPj0gMCk7Ci0gICAgIH0KLQotLSAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIEFJID0gQ1Mu YXJnX2JlZ2luKCk7Ci0tICAgIENhbGxTaXRlOjphcmdfaXRlcmF0b3IgQUUgPSBDUy5hcmdfZW5k KCk7Ci0rICAgIFVzZXI6Om9wX2l0ZXJhdG9yIEFJID0gSS5hcmdfYmVnaW4oKTsKLSsgICAgVXNl cjo6b3BfaXRlcmF0b3IgQUUgPSBJLmFyZ19lbmQoKTsKLSAgICAgR0JFX0FTU0VSVChBSSAhPSBB RSk7Ci0KLSAgICAgaWYgKG9wY29kZSA9PSBpcjo6V09SS0dST1VQX09QX0FMTCB8fCBvcGNvZGUg PT0gaXI6OldPUktHUk9VUF9PUF9BTlkpIHsKLUBAIC00MzkxLDE0ICs0MzkxLDE0IEBACi0gICAg ICAgY29uc3QgaXI6OlR1cGxlIHNyY1R1cGxlID0gY3R4LmFycmF5VHVwbGUoJnNyY1swXSwgMyk7 Ci0gICAgICAgY3R4LldPUktHUk9VUChvcGNvZGUsICh1aW50MzJfdClmLmdldHRpZE1hcFNMTSgp LCBnZXRSZWdpc3RlcigmSSksIHNyY1R1cGxlLCAzLCBpcjo6VFlQRV9TMzIpOwotICAgICB9IGVs c2UgaWYgKG9wY29kZSA9PSBpcjo6V09SS0dST1VQX09QX0JST0FEQ0FTVCkgewotLSAgICAgIGlu dCBhcmdOdW0gPSBDUy5hcmdfc2l6ZSgpOwotKyAgICAgIGludCBhcmdOdW0gPSBJLmFyZ19zaXpl KCk7Ci0gICAgICAgc3RkOjp2ZWN0b3I8aXI6OlJlZ2lzdGVyPiBzcmMoYXJnTnVtKTsKLSAgICAg ICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ051bTsgaSsrKSB7Ci0gICAgICAgICBzcmNbaV0gPSB0 aGlzLT5nZXRSZWdpc3RlcigqKEFJKyspKTsKLSAgICAgICB9Ci0gICAgICAgY29uc3QgaXI6OlR1 cGxlIHNyY1R1cGxlID0gY3R4LmFycmF5VHVwbGUoJnNyY1swXSwgYXJnTnVtKTsKLSAgICAgICBj dHguV09SS0dST1VQKGlyOjpXT1JLR1JPVVBfT1BfQlJPQURDQVNULCAodWludDMyX3QpZi5nZXR3 Z0Jyb2FkY2FzdFNMTSgpLCBnZXRSZWdpc3RlcigmSSksIHNyY1R1cGxlLCBhcmdOdW0sCi0tICAg ICAgICAgIGdldFR5cGUoY3R4LCAoKkNTLmFyZ19iZWdpbigpKS0+Z2V0VHlwZSgpKSk7Ci0rICAg ICAgICAgIGdldFR5cGUoY3R4LCAoKkkuYXJnX2JlZ2luKCkpLT5nZXRUeXBlKCkpKTsKLSAgICAg fSBlbHNlIHsKLSAgICAgICBDb25zdGFudEludCAqc2lnbiA9IGR5bl9jYXN0PENvbnN0YW50SW50 PihBSSk7Ci0gICAgICAgR0JFX0FTU0VSVChzaWduKTsKLUBAIC00NDIzLDkgKzQ0MjMsOSBAQAot ICAgICBHQkVfQVNTRVJUKEFJID09IEFFKTsKLSAgIH0KLQotLSAgdm9pZCBHZW5Xcml0ZXI6OmVt aXRTdWJHcm91cEluc3QoQ2FsbEluc3QgJkksIENhbGxTaXRlICZDUywgaXI6OldvcmtHcm91cE9w cyBvcGNvZGUpIHsKLS0gICAgQ2FsbFNpdGU6OmFyZ19pdGVyYXRvciBBSSA9IENTLmFyZ19iZWdp bigpOwotLSAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIEFFID0gQ1MuYXJnX2VuZCgpOwotKyAg dm9pZCBHZW5Xcml0ZXI6OmVtaXRTdWJHcm91cEluc3QoQ2FsbEluc3QgJkksIGlyOjpXb3JrR3Jv dXBPcHMgb3Bjb2RlKSB7Ci0rICAgIFVzZXI6Om9wX2l0ZXJhdG9yIEFJID0gSS5hcmdfYmVnaW4o KTsKLSsgICAgVXNlcjo6b3BfaXRlcmF0b3IgQUUgPSBJLmFyZ19lbmQoKTsKLSAgICAgR0JFX0FT U0VSVChBSSAhPSBBRSk7Ci0KLSAgICAgaWYgKG9wY29kZSA9PSBpcjo6V09SS0dST1VQX09QX0FM TCB8fCBvcGNvZGUgPT0gaXI6OldPUktHUk9VUF9PUF9BTlkpIHsKLUBAIC00NDM1LDcgKzQ0MzUs NyBAQAotICAgICAgIGNvbnN0IGlyOjpUdXBsZSBzcmNUdXBsZSA9IGN0eC5hcnJheVR1cGxlKCZz cmNbMF0sIDEpOwotICAgICAgIGN0eC5TVUJHUk9VUChvcGNvZGUsIGdldFJlZ2lzdGVyKCZJKSwg c3JjVHVwbGUsIDEsIGlyOjpUWVBFX1MzMik7Ci0gICAgIH0gZWxzZSBpZiAob3Bjb2RlID09IGly OjpXT1JLR1JPVVBfT1BfQlJPQURDQVNUKSB7Ci0tICAgICAgaW50IGFyZ051bSA9IENTLmFyZ19z aXplKCk7Ci0rICAgICAgaW50IGFyZ051bSA9IEkuYXJnX3NpemUoKTsKLSAgICAgICBHQkVfQVNT RVJUKGFyZ051bSA9PSAyKTsKLSAgICAgICBzdGQ6OnZlY3Rvcjxpcjo6UmVnaXN0ZXI+IHNyYyhh cmdOdW0pOwotICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJnTnVtOyBpKyspIHsKLUBAIC00 NDQzLDcgKzQ0NDMsNyBAQAotICAgICAgIH0KLSAgICAgICBjb25zdCBpcjo6VHVwbGUgc3JjVHVw bGUgPSBjdHguYXJyYXlUdXBsZSgmc3JjWzBdLCBhcmdOdW0pOwotICAgICAgIGN0eC5TVUJHUk9V UChpcjo6V09SS0dST1VQX09QX0JST0FEQ0FTVCwgZ2V0UmVnaXN0ZXIoJkkpLCBzcmNUdXBsZSwg YXJnTnVtLAotLSAgICAgICAgICBnZXRUeXBlKGN0eCwgKCpDUy5hcmdfYmVnaW4oKSktPmdldFR5 cGUoKSkpOwotKyAgICAgICAgICBnZXRUeXBlKGN0eCwgKCpJLmFyZ19iZWdpbigpKS0+Z2V0VHlw ZSgpKSk7Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAgQ29uc3RhbnRJbnQgKnNpZ24gPSBkeW5fY2Fz dDxDb25zdGFudEludD4oQUkpOwotICAgICAgIEdCRV9BU1NFUlQoc2lnbik7Ci1AQCAtNDQ2Niw5 ICs0NDY2LDkgQEAKLSAgICAgR0JFX0FTU0VSVChBSSA9PSBBRSk7Ci0gICB9Ci0KLS0gIHZvaWQg R2VuV3JpdGVyOjplbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KENhbGxJbnN0ICZJLCBDYWxsU2l0 ZSAmQ1MsIGJvb2wgaXNXcml0ZSwgdWludDhfdCB2ZWNfc2l6ZSwgaXI6OlR5cGUgdHlwZSkgewot LSAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIEFJID0gQ1MuYXJnX2JlZ2luKCk7Ci0tICAgIENh bGxTaXRlOjphcmdfaXRlcmF0b3IgQUUgPSBDUy5hcmdfZW5kKCk7Ci0rICB2b2lkIEdlbldyaXRl cjo6ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChDYWxsSW5zdCAmSSwgYm9vbCBpc1dyaXRlLCB1 aW50OF90IHZlY19zaXplLCBpcjo6VHlwZSB0eXBlKSB7Ci0rICAgIFVzZXI6Om9wX2l0ZXJhdG9y IEFJID0gSS5hcmdfYmVnaW4oKTsKLSsgICAgVXNlcjo6b3BfaXRlcmF0b3IgQUUgPSBJLmFyZ19l bmQoKTsKLSAgICAgR0JFX0FTU0VSVChBSSAhPSBBRSk7Ci0KLSAgICAgVmFsdWUgKmxsdm1QdHIg PSAqKEFJKyspOwotQEAgLTQ1MjIsOSArNDUyMiw5IEBACi0gICAgIEdCRV9BU1NFUlQoQUkgPT0g QUUpOwotICAgfQotCi0tICB2b2lkIEdlbldyaXRlcjo6ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJ bnN0KENhbGxJbnN0ICZJLCBDYWxsU2l0ZSAmQ1MsIGJvb2wgaXNXcml0ZSwgdWludDhfdCB2ZWNf c2l6ZSwgaXI6OlR5cGUgdHlwZSkgewotLSAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIEFJID0g Q1MuYXJnX2JlZ2luKCk7Ci0tICAgIENhbGxTaXRlOjphcmdfaXRlcmF0b3IgQUUgPSBDUy5hcmdf ZW5kKCk7Ci0rICB2b2lkIEdlbldyaXRlcjo6ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KENh bGxJbnN0ICZJLCBib29sIGlzV3JpdGUsIHVpbnQ4X3QgdmVjX3NpemUsIGlyOjpUeXBlIHR5cGUp IHsKLSsgICAgVXNlcjo6b3BfaXRlcmF0b3IgQUkgPSBJLmFyZ19iZWdpbigpOwotKyAgICBVc2Vy OjpvcF9pdGVyYXRvciBBRSA9IEkuYXJnX2VuZCgpOwotICAgICBHQkVfQVNTRVJUKEFJICE9IEFF KTsKLQotICAgICBjb25zdCB1aW50OF90IGltYWdlSUQgPSBnZXRJbWFnZUlEKEkpOwotQEAgLTQ1 NTcsNyArNDU1Nyw3IEBACi0KLSAgIC8qIGFwcGVuZCBhIG5ldyBzYW1wbGVyLiBzaG91bGQgYmUg Y2FsbGVkIGJlZm9yZSBhbnkgcmVmZXJlbmNlIHRvCi0gICAgKiBhIHNhbXBsZXJfdCB2YWx1ZS4g Ki8KLS0gIHVpbnQ4X3QgR2VuV3JpdGVyOjphcHBlbmRTYW1wbGVyKENhbGxTaXRlOjphcmdfaXRl cmF0b3IgQUkpIHsKLSsgIHVpbnQ4X3QgR2VuV3JpdGVyOjphcHBlbmRTYW1wbGVyKFVzZXI6Om9w X2l0ZXJhdG9yIEFJKSB7Ci0gI2lmIExMVk1fVkVSU0lPTl9NQUpPUiAqIDEwICsgTExWTV9WRVJT SU9OX01JTk9SID49IDQwCi0gICAgIENhbGxJbnN0ICpUQyA9IGR5bl9jYXN0PENhbGxJbnN0Pigq QUkpOwotICAgICBDb25zdGFudCAqQ1BWID0gVEMgPyBkeW5fY2FzdDxDb25zdGFudD4oVEMtPmdl dE9wZXJhbmQoMCkpIDogTlVMTDsKLUBAIC00NTk1LDEwICs0NTk1LDkgQEAKLSAgICAgICAgIGNv bnN0IGlyOjpGdW5jdGlvbiAmZm4gPSBjdHguZ2V0RnVuY3Rpb24oKTsKLQotICAgICAgICAgLy8g R2V0IHRoZSBmdW5jdGlvbiBhcmd1bWVudHMKLS0gICAgICAgIENhbGxTaXRlIENTKCZJKTsKLS0g ICAgICAgIENhbGxTaXRlOjphcmdfaXRlcmF0b3IgQUkgPSBDUy5hcmdfYmVnaW4oKTsKLSsgICAg ICAgIFVzZXI6Om9wX2l0ZXJhdG9yIEFJID0gSS5hcmdfYmVnaW4oKTsKLSAjaWYgR0JFX0RFQlVH Ci0tICAgICAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIEFFID0gQ1MuYXJnX2VuZCgpOwotKyAg ICAgICAgVXNlcjo6b3BfaXRlcmF0b3IgQUUgPSBJLmFyZ19lbmQoKTsKLSAjZW5kaWYgLyogR0JF X0RFQlVHICovCi0gICAgICAgICBzd2l0Y2ggKEYtPmdldEludHJpbnNpY0lEKCkpIHsKLSAgICAg ICAgICAgY2FzZSBJbnRyaW5zaWM6OnN0YWNrc2F2ZToKLUBAIC00NzY0LDE3ICs0NzYzLDE3IEBA Ci0gICAgICAgICAgICAgY3R4Lk1BRChzcmNUeXBlLCBkc3QsIHNyYzAsIHNyYzEsIHNyYzIpOwot ICAgICAgICAgICB9Ci0gICAgICAgICAgIGJyZWFrOwotLSAgICAgICAgICBjYXNlIEludHJpbnNp Yzo6c3FydDogdGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3QoSSxDUyxpcjo6T1BfU1FSKTsgYnJlYWs7 Ci0tICAgICAgICAgIGNhc2UgSW50cmluc2ljOjpjZWlsOiB0aGlzLT5lbWl0Um91bmRpbmdDYWxs SW5zdChJLENTLGlyOjpPUF9STkRVKTsgYnJlYWs7Ci0tICAgICAgICAgIGNhc2UgSW50cmluc2lj Ojp0cnVuYzogdGhpcy0+ZW1pdFJvdW5kaW5nQ2FsbEluc3QoSSxDUyxpcjo6T1BfUk5EWik7IGJy ZWFrOwotLSAgICAgICAgICBjYXNlIEludHJpbnNpYzo6cmludDogdGhpcy0+ZW1pdFJvdW5kaW5n Q2FsbEluc3QoSSxDUyxpcjo6T1BfUk5ERSk7IGJyZWFrOwotLSAgICAgICAgICBjYXNlIEludHJp bnNpYzo6Zmxvb3I6IHRoaXMtPmVtaXRSb3VuZGluZ0NhbGxJbnN0KEksQ1MsaXI6Ok9QX1JOREQp OyBicmVhazsKLS0gICAgICAgICAgY2FzZSBJbnRyaW5zaWM6OnNpbjogdGhpcy0+ZW1pdFVuYXJ5 Q2FsbEluc3QoSSxDUyxpcjo6T1BfU0lOKTsgYnJlYWs7Ci0tICAgICAgICAgIGNhc2UgSW50cmlu c2ljOjpjb3M6IHRoaXMtPmVtaXRVbmFyeUNhbGxJbnN0KEksQ1MsaXI6Ok9QX0NPUyk7IGJyZWFr OwotLSAgICAgICAgICBjYXNlIEludHJpbnNpYzo6bG9nMjogdGhpcy0+ZW1pdFVuYXJ5Q2FsbElu c3QoSSxDUyxpcjo6T1BfTE9HKTsgYnJlYWs7Ci0tICAgICAgICAgIGNhc2UgSW50cmluc2ljOjpl eHAyOiB0aGlzLT5lbWl0VW5hcnlDYWxsSW5zdChJLENTLGlyOjpPUF9FWFApOyBicmVhazsKLSsg ICAgICAgICAgY2FzZSBJbnRyaW5zaWM6OnNxcnQ6IHRoaXMtPmVtaXRVbmFyeUNhbGxJbnN0KEks aXI6Ok9QX1NRUik7IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEludHJpbnNpYzo6Y2VpbDogdGhp cy0+ZW1pdFJvdW5kaW5nQ2FsbEluc3QoSSxpcjo6T1BfUk5EVSk7IGJyZWFrOwotKyAgICAgICAg ICBjYXNlIEludHJpbnNpYzo6dHJ1bmM6IHRoaXMtPmVtaXRSb3VuZGluZ0NhbGxJbnN0KEksaXI6 Ok9QX1JORFopOyBicmVhazsKLSsgICAgICAgICAgY2FzZSBJbnRyaW5zaWM6OnJpbnQ6IHRoaXMt PmVtaXRSb3VuZGluZ0NhbGxJbnN0KEksaXI6Ok9QX1JOREUpOyBicmVhazsKLSsgICAgICAgICAg Y2FzZSBJbnRyaW5zaWM6OmZsb29yOiB0aGlzLT5lbWl0Um91bmRpbmdDYWxsSW5zdChJLGlyOjpP UF9STkREKTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgSW50cmluc2ljOjpzaW46IHRoaXMtPmVt aXRVbmFyeUNhbGxJbnN0KEksaXI6Ok9QX1NJTik7IGJyZWFrOwotKyAgICAgICAgICBjYXNlIElu dHJpbnNpYzo6Y29zOiB0aGlzLT5lbWl0VW5hcnlDYWxsSW5zdChJLGlyOjpPUF9DT1MpOyBicmVh azsKLSsgICAgICAgICAgY2FzZSBJbnRyaW5zaWM6OmxvZzI6IHRoaXMtPmVtaXRVbmFyeUNhbGxJ bnN0KEksaXI6Ok9QX0xPRyk7IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEludHJpbnNpYzo6ZXhw MjogdGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3QoSSxpcjo6T1BfRVhQKTsgYnJlYWs7Ci0gICAgICAg ICAgIGNhc2UgSW50cmluc2ljOjpic3dhcDoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0VW5hcnlD YWxsSW5zdChJLENTLGlyOjpPUF9CU1dBUCwgZ2V0VW5zaWduZWRUeXBlKGN0eCwgSS5nZXRUeXBl KCkpKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3QoSSxpcjo6 T1BfQlNXQVAsIGdldFVuc2lnbmVkVHlwZShjdHgsIEkuZ2V0VHlwZSgpKSk7IGJyZWFrOwotICAg ICAgICAgICBjYXNlIEludHJpbnNpYzo6cG93OgotICAgICAgICAgICB7Ci0gICAgICAgICAgICAg Y29uc3QgaXI6OlJlZ2lzdGVyIHNyYzAgPSB0aGlzLT5nZXRSZWdpc3RlcigqQUkpOyArK0FJOwot QEAgLTQ3OTQsMjEgKzQ3OTMsMjAgQEAKLSAgICAgICAgIH0KLSAgICAgICB9IGVsc2UgewotICAg ICAgICAgLy8gR2V0IHRoZSBuYW1lIG9mIHRoZSBjYWxsZWQgZnVuY3Rpb24gYW5kIGhhbmRsZSBp dAotLSAgICAgICAgVmFsdWUgKkNhbGxlZSA9IEkuZ2V0Q2FsbGVkVmFsdWUoKTsKLS0gICAgICAg IGNvbnN0IHN0ZDo6c3RyaW5nIGZuTmFtZSA9IENhbGxlZS0+c3RyaXBQb2ludGVyQ2FzdHMoKS0+ Z2V0TmFtZSgpOwotKyAgICAgICAgVmFsdWUgKkNhbGxlZSA9IEkuZ2V0Q2FsbGVkT3BlcmFuZCgp OwotKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZm5OYW1lID0gQ2FsbGVlLT5zdHJpcFBvaW50 ZXJDYXN0cygpLT5nZXROYW1lKCkuc3RyKCk7Ci0gICAgICAgICBhdXRvIGdlbkludHJpbnNpY0lE ID0gaW50cmluc2ljTWFwLmZpbmQoZm5OYW1lKTsKLQotICAgICAgICAgLy8gR2V0IHRoZSBmdW5j dGlvbiBhcmd1bWVudHMKLS0gICAgICAgIENhbGxTaXRlIENTKCZJKTsKLS0gICAgICAgIENhbGxT aXRlOjphcmdfaXRlcmF0b3IgQUkgPSBDUy5hcmdfYmVnaW4oKTsKLSsgICAgICAgIFVzZXI6Om9w X2l0ZXJhdG9yIEFJID0gSS5hcmdfYmVnaW4oKTsKLSAjaWYgR0JFX0RFQlVHCi0tICAgICAgICBD YWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIEFFID0gQ1MuYXJnX2VuZCgpOwotKyAgICAgICAgVXNlcjo6 b3BfaXRlcmF0b3IgQUUgPSBJLmFyZ19lbmQoKTsKLSAjZW5kaWYgLyogR0JFX0RFQlVHICovCi0K LSAgICAgICAgIHN3aXRjaCAoZ2VuSW50cmluc2ljSUQpIHsKLS0gICAgICAgICAgY2FzZSBHRU5f T0NMX0ZCSDogdGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3QoSSxDUyxpcjo6T1BfRkJILCBpcjo6VFlQ RV9VMzIpOyBicmVhazsKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX0ZCTDogdGhpcy0+ZW1pdFVu YXJ5Q2FsbEluc3QoSSxDUyxpcjo6T1BfRkJMLCBpcjo6VFlQRV9VMzIpOyBicmVhazsKLS0gICAg ICAgICAgY2FzZSBHRU5fT0NMX0NCSVQ6IHRoaXMtPmVtaXRVbmFyeUNhbGxJbnN0KEksQ1MsaXI6 Ok9QX0NCSVQsIGdldFVuc2lnbmVkVHlwZShjdHgsICgqQUkpLT5nZXRUeXBlKCkpKTsgYnJlYWs7 Ci0rICAgICAgICAgIGNhc2UgR0VOX09DTF9GQkg6IHRoaXMtPmVtaXRVbmFyeUNhbGxJbnN0KEks aXI6Ok9QX0ZCSCwgaXI6OlRZUEVfVTMyKTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgR0VOX09D TF9GQkw6IHRoaXMtPmVtaXRVbmFyeUNhbGxJbnN0KEksaXI6Ok9QX0ZCTCwgaXI6OlRZUEVfVTMy KTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgR0VOX09DTF9DQklUOiB0aGlzLT5lbWl0VW5hcnlD YWxsSW5zdChJLGlyOjpPUF9DQklULCBnZXRVbnNpZ25lZFR5cGUoY3R4LCAoKkFJKS0+Z2V0VHlw ZSgpKSk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfQUJTOgotICAgICAgICAgICB7 Ci0gICAgICAgICAgICAgY29uc3QgaXI6OlJlZ2lzdGVyIHNyYyA9IHRoaXMtPmdldFJlZ2lzdGVy KCpBSSk7Ci1AQCAtNDkxNSw4ICs0OTEzLDggQEAKLSAgICAgICAgICAgICBjdHguUkVHSU9OKGRz dCwgc3JjLCB4LmdldEludGVnZXJWYWx1ZSgpKTsKLSAgICAgICAgICAgICBicmVhazsKLSAgICAg ICAgICAgfQotLSAgICAgICAgICBjYXNlIEdFTl9PQ0xfUlNROiB0aGlzLT5lbWl0VW5hcnlDYWxs SW5zdChJLENTLGlyOjpPUF9SU1EpOyBicmVhazsKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX1JD UDogdGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3QoSSxDUyxpcjo6T1BfUkNQKTsgYnJlYWs7Ci0rICAg ICAgICAgIGNhc2UgR0VOX09DTF9SU1E6IHRoaXMtPmVtaXRVbmFyeUNhbGxJbnN0KEksaXI6Ok9Q X1JTUSk7IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEdFTl9PQ0xfUkNQOiB0aGlzLT5lbWl0VW5h cnlDYWxsSW5zdChJLGlyOjpPUF9SQ1ApOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NM X0ZPUkNFX1NJTUQ4OiBjdHguc2V0U2ltZFdpZHRoKDgpOyBicmVhazsKLSAgICAgICAgICAgY2Fz ZSBHRU5fT0NMX0ZPUkNFX1NJTUQxNjogY3R4LnNldFNpbWRXaWR0aCgxNik7IGJyZWFrOwotICAg ICAgICAgICBjYXNlIEdFTl9PQ0xfTEJBUlJJRVI6IGN0eC5TWU5DKGlyOjpzeW5jTG9jYWxCYXJy aWVyKTsgYnJlYWs7Ci1AQCAtNDk0NywzMSArNDk0NSwzMSBAQAotICAgICAgICAgICAgIGJyZWFr OwotICAgICAgICAgICB9Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfQUREMDoKLS0g ICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19BREQxOiB0aGlzLT5lbWl0QXRvbWljSW5zdChJ LENTLGlyOjpBVE9NSUNfT1BfQUREKTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgR0VOX09DTF9B VE9NSUNfQUREMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxpcjo6QVRPTUlDX09QX0FERCk7IGJy ZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlDX1NVQjA6Ci0tICAgICAgICAgIGNh c2UgR0VOX09DTF9BVE9NSUNfU1VCMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxDUyxpcjo6QVRP TUlDX09QX1NVQik7IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlDX1NVQjE6 IHRoaXMtPmVtaXRBdG9taWNJbnN0KEksaXI6OkFUT01JQ19PUF9TVUIpOyBicmVhazsKLSAgICAg ICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19BTkQwOgotLSAgICAgICAgICBjYXNlIEdFTl9PQ0xf QVRPTUlDX0FORDE6IHRoaXMtPmVtaXRBdG9taWNJbnN0KEksQ1MsaXI6OkFUT01JQ19PUF9BTkQp OyBicmVhazsKLSsgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19BTkQxOiB0aGlzLT5lbWl0 QXRvbWljSW5zdChJLGlyOjpBVE9NSUNfT1BfQU5EKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2Ug R0VOX09DTF9BVE9NSUNfT1IwOgotLSAgICAgICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlDX09SMTog dGhpcy0+ZW1pdEF0b21pY0luc3QoSSxDUyxpcjo6QVRPTUlDX09QX09SKTsgYnJlYWs7Ci0rICAg ICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfT1IxOiB0aGlzLT5lbWl0QXRvbWljSW5zdChJLGly OjpBVE9NSUNfT1BfT1IpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19Y T1IwOgotLSAgICAgICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlDX1hPUjE6IHRoaXMtPmVtaXRBdG9t aWNJbnN0KEksQ1MsaXI6OkFUT01JQ19PUF9YT1IpOyBicmVhazsKLSsgICAgICAgICAgY2FzZSBH RU5fT0NMX0FUT01JQ19YT1IxOiB0aGlzLT5lbWl0QXRvbWljSW5zdChJLGlyOjpBVE9NSUNfT1Bf WE9SKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfWENIRzA6Ci0tICAg ICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfWENIRzE6IHRoaXMtPmVtaXRBdG9taWNJbnN0KEks Q1MsaXI6OkFUT01JQ19PUF9YQ0hHKTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgR0VOX09DTF9B VE9NSUNfWENIRzE6IHRoaXMtPmVtaXRBdG9taWNJbnN0KEksaXI6OkFUT01JQ19PUF9YQ0hHKTsg YnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfSU5DMDoKLS0gICAgICAgICAg Y2FzZSBHRU5fT0NMX0FUT01JQ19JTkMxOiB0aGlzLT5lbWl0QXRvbWljSW5zdChJLENTLGlyOjpB VE9NSUNfT1BfSU5DKTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfSU5D MTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxpcjo6QVRPTUlDX09QX0lOQyk7IGJyZWFrOwotICAg ICAgICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlDX0RFQzA6Ci0tICAgICAgICAgIGNhc2UgR0VOX09D TF9BVE9NSUNfREVDMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxDUyxpcjo6QVRPTUlDX09QX0RF Qyk7IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlDX0RFQzE6IHRoaXMtPmVt aXRBdG9taWNJbnN0KEksaXI6OkFUT01JQ19PUF9ERUMpOyBicmVhazsKLSAgICAgICAgICAgY2Fz ZSBHRU5fT0NMX0FUT01JQ19VTUlOMDoKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19V TUlOMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxDUyxpcjo6QVRPTUlDX09QX1VNSU4pOyBicmVh azsKLSsgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19VTUlOMTogdGhpcy0+ZW1pdEF0b21p Y0luc3QoSSxpcjo6QVRPTUlDX09QX1VNSU4pOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5f T0NMX0FUT01JQ19VTUFYMDoKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19VTUFYMTog dGhpcy0+ZW1pdEF0b21pY0luc3QoSSxDUyxpcjo6QVRPTUlDX09QX1VNQVgpOyBicmVhazsKLSsg ICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19VTUFYMTogdGhpcy0+ZW1pdEF0b21pY0luc3Qo SSxpcjo6QVRPTUlDX09QX1VNQVgpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0FU T01JQ19JTUlOMDoKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19JTUlOMTogdGhpcy0+ ZW1pdEF0b21pY0luc3QoSSxDUyxpcjo6QVRPTUlDX09QX0lNSU4pOyBicmVhazsKLSsgICAgICAg ICAgY2FzZSBHRU5fT0NMX0FUT01JQ19JTUlOMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxpcjo6 QVRPTUlDX09QX0lNSU4pOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19J TUFYMDoKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19JTUFYMTogdGhpcy0+ZW1pdEF0 b21pY0luc3QoSSxDUyxpcjo6QVRPTUlDX09QX0lNQVgpOyBicmVhazsKLSsgICAgICAgICAgY2Fz ZSBHRU5fT0NMX0FUT01JQ19JTUFYMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxpcjo6QVRPTUlD X09QX0lNQVgpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19DTVBYQ0hH MDoKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19DTVBYQ0hHMTogdGhpcy0+ZW1pdEF0 b21pY0luc3QoSSxDUyxpcjo6QVRPTUlDX09QX0NNUFhDSEcpOyBicmVhazsKLSsgICAgICAgICAg Y2FzZSBHRU5fT0NMX0FUT01JQ19DTVBYQ0hHMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxpcjo6 QVRPTUlDX09QX0NNUFhDSEcpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0dFVF9J TUFHRV9XSURUSDoKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0dFVF9JTUFHRV9IRUlHSFQ6Ci0g ICAgICAgICAgIGNhc2UgR0VOX09DTF9HRVRfSU1BR0VfREVQVEg6Ci1AQCAtNTQyOSw0OCArNTQy Nyw0OCBAQAotICAgICAgICAgICAgIGN0eC5XQUlUKCk7Ci0gICAgICAgICAgICAgYnJlYWs7Ci0g ICAgICAgICAgIH0KLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX1dPUktfR1JPVVBfQUxMOiB0aGlz LT5lbWl0V29ya0dyb3VwSW5zdChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9BTEwpOyBicmVhazsK LS0gICAgICAgICAgY2FzZSBHRU5fT0NMX1dPUktfR1JPVVBfQU5ZOiB0aGlzLT5lbWl0V29ya0dy b3VwSW5zdChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9BTlkpOyBicmVhazsKLSsgICAgICAgICAg Y2FzZSBHRU5fT0NMX1dPUktfR1JPVVBfQUxMOiB0aGlzLT5lbWl0V29ya0dyb3VwSW5zdChJLCBp cjo6V09SS0dST1VQX09QX0FMTCk7IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEdFTl9PQ0xfV09S S19HUk9VUF9BTlk6IHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0KEksIGlyOjpXT1JLR1JPVVBfT1Bf QU5ZKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9XT1JLX0dST1VQX0JST0FEQ0FT VDoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0V29ya0dyb3VwSW5zdChJLCBDUywgaXI6OldPUktH Uk9VUF9PUF9CUk9BRENBU1QpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0V29ya0dy b3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09QX0JST0FEQ0FTVCk7IGJyZWFrOwotICAgICAgICAg ICBjYXNlIEdFTl9PQ0xfV09SS19HUk9VUF9SRURVQ0VfQUREOgotLSAgICAgICAgICAgIHRoaXMt PmVtaXRXb3JrR3JvdXBJbnN0KEksIENTLCBpcjo6V09SS0dST1VQX09QX1JFRFVDRV9BREQpOyBi cmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0V29ya0dyb3VwSW5zdChJLCBpcjo6V09SS0dS T1VQX09QX1JFRFVDRV9BREQpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1dPUktf R1JPVVBfUkVEVUNFX01BWDoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0V29ya0dyb3VwSW5zdChJ LCBDUywgaXI6OldPUktHUk9VUF9PUF9SRURVQ0VfTUFYKTsgYnJlYWs7Ci0rICAgICAgICAgICAg dGhpcy0+ZW1pdFdvcmtHcm91cEluc3QoSSwgaXI6OldPUktHUk9VUF9PUF9SRURVQ0VfTUFYKTsg YnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9XT1JLX0dST1VQX1JFRFVDRV9NSU46Ci0t ICAgICAgICAgICAgdGhpcy0+ZW1pdFdvcmtHcm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBf T1BfUkVEVUNFX01JTik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRXb3JrR3JvdXBJ bnN0KEksIGlyOjpXT1JLR1JPVVBfT1BfUkVEVUNFX01JTik7IGJyZWFrOwotICAgICAgICAgICBj YXNlIEdFTl9PQ0xfV09SS19HUk9VUF9TQ0FOX0VYQ0xVU0lWRV9BREQ6Ci0tICAgICAgICAgICAg dGhpcy0+ZW1pdFdvcmtHcm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfRVhDTFVTSVZF X0FERCk7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0KEksIGly OjpXT1JLR1JPVVBfT1BfRVhDTFVTSVZFX0FERCk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdF Tl9PQ0xfV09SS19HUk9VUF9TQ0FOX0VYQ0xVU0lWRV9NQVg6Ci0tICAgICAgICAgICAgdGhpcy0+ ZW1pdFdvcmtHcm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfRVhDTFVTSVZFX01BWCk7 IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0KEksIGlyOjpXT1JL R1JPVVBfT1BfRVhDTFVTSVZFX01BWCk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xf V09SS19HUk9VUF9TQ0FOX0VYQ0xVU0lWRV9NSU46Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFdv cmtHcm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfRVhDTFVTSVZFX01JTik7IGJyZWFr OwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0KEksIGlyOjpXT1JLR1JPVVBf T1BfRVhDTFVTSVZFX01JTik7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfV09SS19H Uk9VUF9TQ0FOX0lOQ0xVU0lWRV9BREQ6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFdvcmtHcm91 cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfSU5DTFVTSVZFX0FERCk7IGJyZWFrOwotKyAg ICAgICAgICAgIHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0KEksIGlyOjpXT1JLR1JPVVBfT1BfSU5D TFVTSVZFX0FERCk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfV09SS19HUk9VUF9T Q0FOX0lOQ0xVU0lWRV9NQVg6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFdvcmtHcm91cEluc3Qo SSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfSU5DTFVTSVZFX01BWCk7IGJyZWFrOwotKyAgICAgICAg ICAgIHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0KEksIGlyOjpXT1JLR1JPVVBfT1BfSU5DTFVTSVZF X01BWCk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfV09SS19HUk9VUF9TQ0FOX0lO Q0xVU0lWRV9NSU46Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFdvcmtHcm91cEluc3QoSSwgQ1Ms IGlyOjpXT1JLR1JPVVBfT1BfSU5DTFVTSVZFX01JTik7IGJyZWFrOwotKyAgICAgICAgICAgIHRo aXMtPmVtaXRXb3JrR3JvdXBJbnN0KEksIGlyOjpXT1JLR1JPVVBfT1BfSU5DTFVTSVZFX01JTik7 IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JST0FEQ0FTVDoKLS0g ICAgICAgICAgICB0aGlzLT5lbWl0U3ViR3JvdXBJbnN0KEksIENTLCBpcjo6V09SS0dST1VQX09Q X0JST0FEQ0FTVCk7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRTdWJHcm91cEluc3Qo SSwgaXI6OldPUktHUk9VUF9PUF9CUk9BRENBU1QpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBH RU5fT0NMX1NVQl9HUk9VUF9SRURVQ0VfQUREOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRTdWJH cm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfUkVEVUNFX0FERCk7IGJyZWFrOwotKyAg ICAgICAgICAgIHRoaXMtPmVtaXRTdWJHcm91cEluc3QoSSwgaXI6OldPUktHUk9VUF9PUF9SRURV Q0VfQUREKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfUkVEVUNF X01BWDoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0U3ViR3JvdXBJbnN0KEksIENTLCBpcjo6V09S S0dST1VQX09QX1JFRFVDRV9NQVgpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0U3Vi R3JvdXBJbnN0KEksIGlyOjpXT1JLR1JPVVBfT1BfUkVEVUNFX01BWCk7IGJyZWFrOwotICAgICAg ICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX1JFRFVDRV9NSU46Ci0tICAgICAgICAgICAgdGhp cy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9SRURVQ0VfTUlOKTsg YnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBpcjo6V09SS0dS T1VQX09QX1JFRFVDRV9NSU4pOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9H Uk9VUF9TQ0FOX0VYQ0xVU0lWRV9BREQ6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3Vw SW5zdChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9FWENMVVNJVkVfQUREKTsgYnJlYWs7Ci0rICAg ICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09QX0VYQ0xV U0lWRV9BREQpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9TQ0FO X0VYQ0xVU0lWRV9NQVg6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBD UywgaXI6OldPUktHUk9VUF9PUF9FWENMVVNJVkVfTUFYKTsgYnJlYWs7Ci0rICAgICAgICAgICAg dGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09QX0VYQ0xVU0lWRV9NQVgp OyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9TQ0FOX0VYQ0xVU0lW RV9NSU46Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBDUywgaXI6OldP UktHUk9VUF9PUF9FWENMVVNJVkVfTUlOKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1p dFN1Ykdyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09QX0VYQ0xVU0lWRV9NSU4pOyBicmVhazsK LSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9TQ0FOX0lOQ0xVU0lWRV9BREQ6Ci0t ICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBDUywgaXI6OldPUktHUk9VUF9P UF9JTkNMVVNJVkVfQUREKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3Vw SW5zdChJLCBpcjo6V09SS0dST1VQX09QX0lOQ0xVU0lWRV9BREQpOyBicmVhazsKLSAgICAgICAg ICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9TQ0FOX0lOQ0xVU0lWRV9NQVg6Ci0tICAgICAgICAg ICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9JTkNMVVNJ VkVfTUFYKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBp cjo6V09SS0dST1VQX09QX0lOQ0xVU0lWRV9NQVgpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBH RU5fT0NMX1NVQl9HUk9VUF9TQ0FOX0lOQ0xVU0lWRV9NSU46Ci0tICAgICAgICAgICAgdGhpcy0+ ZW1pdFN1Ykdyb3VwSW5zdChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9JTkNMVVNJVkVfTUlOKTsg YnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBpcjo6V09SS0dS T1VQX09QX0lOQ0xVU0lWRV9NSU4pOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0xS UDoKLSAgICAgICAgICAgewotICAgICAgICAgICAgIGNvbnN0IGlyOjpSZWdpc3RlciBkc3QgID0g dGhpcy0+Z2V0UmVnaXN0ZXIoJkkpOwotQEAgLTU0ODQsNjkgKzU0ODIsNjkgQEAKLSAgICAgICAg ICAgICBicmVhazsKLSAgICAgICAgICAgfQotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dS T1VQX0JMT0NLX1JFQURfVUlfTUVNOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRX cml0ZU1lbUluc3QoSSwgQ1MsIGZhbHNlLCAxKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCBmYWxzZSwgMSk7IGJyZWFrOwotICAgICAgICAg ICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1JFQURfVUlfTUVNMjoKLS0gICAgICAgICAg ICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIENTLCBmYWxzZSwgMik7IGJyZWFr OwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgZmFsc2Us IDIpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19SRUFE X1VJX01FTTQ6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJ LCBDUywgZmFsc2UsIDQpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFk V3JpdGVNZW1JbnN0KEksIGZhbHNlLCA0KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09D TF9TVUJfR1JPVVBfQkxPQ0tfUkVBRF9VSV9NRU04OgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRC bG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgQ1MsIGZhbHNlLCA4KTsgYnJlYWs7Ci0rICAgICAgICAg ICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCBmYWxzZSwgOCk7IGJyZWFrOwot ICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1dSSVRFX1VJX01FTToKLS0g ICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIENTLCB0cnVlLCAx KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJ LCB0cnVlLCAxKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxP Q0tfV1JJVEVfVUlfTUVNMjoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVN ZW1JbnN0KEksIENTLCB0cnVlLCAyKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJs b2NrUmVhZFdyaXRlTWVtSW5zdChJLCB0cnVlLCAyKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2Ug R0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfV1JJVEVfVUlfTUVNNDoKLS0gICAgICAgICAgICB0aGlz LT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIENTLCB0cnVlLCA0KTsgYnJlYWs7Ci0rICAg ICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCB0cnVlLCA0KTsgYnJl YWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfV1JJVEVfVUlfTUVN ODoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIENTLCB0 cnVlLCA4KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVt SW5zdChJLCB0cnVlLCA4KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JP VVBfQkxPQ0tfUkVBRF9VSV9JTUFHRToKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFk V3JpdGVJbWFnZUluc3QoSSwgQ1MsIGZhbHNlLCAxKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhp cy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIGZhbHNlLCAxKTsgYnJlYWs7Ci0gICAg ICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfUkVBRF9VSV9JTUFHRTI6Ci0tICAg ICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIENTLCBmYWxzZSwg Mik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5z dChJLCBmYWxzZSwgMik7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQ X0JMT0NLX1JFQURfVUlfSU1BR0U0OgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRX cml0ZUltYWdlSW5zdChJLCBDUywgZmFsc2UsIDQpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlz LT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoSSwgZmFsc2UsIDQpOyBicmVhazsKLSAgICAg ICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19SRUFEX1VJX0lNQUdFODoKLS0gICAg ICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoSSwgQ1MsIGZhbHNlLCA4 KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0 KEksIGZhbHNlLCA4KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBf QkxPQ0tfV1JJVEVfVUlfSU1BR0U6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdy aXRlSW1hZ2VJbnN0KEksIENTLCB0cnVlLCAxKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIHRydWUsIDEpOyBicmVhazsKLSAgICAgICAg ICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19XUklURV9VSV9JTUFHRTI6Ci0tICAgICAg ICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIENTLCB0cnVlLCAyKTsg YnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEks IHRydWUsIDIpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9D S19XUklURV9VSV9JTUFHRTQ6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRl SW1hZ2VJbnN0KEksIENTLCB0cnVlLCA0KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1p dEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIHRydWUsIDQpOyBicmVhazsKLSAgICAgICAgICAg Y2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19XUklURV9VSV9JTUFHRTg6Ci0tICAgICAgICAg ICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIENTLCB0cnVlLCA4KTsgYnJl YWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIHRy dWUsIDgpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19S RUFEX1VTX01FTToKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0 KEksIENTLCBmYWxzZSwgMSwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhp cy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCBmYWxzZSwgMSwgaXI6OlRZUEVfVTE2KTsg YnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfUkVBRF9VU19N RU0yOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgQ1Ms IGZhbHNlLCAyLCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0 QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIGZhbHNlLCAyLCBpcjo6VFlQRV9VMTYpOyBicmVhazsK LSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19SRUFEX1VTX01FTTQ6Ci0t ICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCBDUywgZmFsc2Us IDQsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1Jl YWRXcml0ZU1lbUluc3QoSSwgZmFsc2UsIDQsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotICAgICAg ICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1JFQURfVVNfTUVNODoKLS0gICAgICAg ICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIENTLCBmYWxzZSwgOCwgaXI6 OlRZUEVfVTE2KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRl TWVtSW5zdChJLCBmYWxzZSwgOCwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0gICAgICAgICAgIGNh c2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfV1JJVEVfVVNfTUVNOgotLSAgICAgICAgICAgIHRo aXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgQ1MsIHRydWUsIDEsIGlyOjpUWVBFX1Ux Nik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3Qo SSwgdHJ1ZSwgMSwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09D TF9TVUJfR1JPVVBfQkxPQ0tfV1JJVEVfVVNfTUVNMjoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0 QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIENTLCB0cnVlLCAyLCBpcjo6VFlQRV9VMTYpOyBicmVh azsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIHRydWUs IDIsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dS T1VQX0JMT0NLX1dSSVRFX1VTX01FTTQ6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVh ZFdyaXRlTWVtSW5zdChJLCBDUywgdHJ1ZSwgNCwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0rICAg ICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCB0cnVlLCA0LCBpcjo6 VFlQRV9VMTYpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9D S19XUklURV9VU19NRU04OgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1l bUluc3QoSSwgQ1MsIHRydWUsIDgsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotKyAgICAgICAgICAg IHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgdHJ1ZSwgOCwgaXI6OlRZUEVfVTE2 KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfUkVBRF9V U19JTUFHRToKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3Qo SSwgQ1MsIGZhbHNlLCAxLCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlz LT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoSSwgZmFsc2UsIDEsIGlyOjpUWVBFX1UxNik7 IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1JFQURfVVNf SU1BR0UyOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJ LCBDUywgZmFsc2UsIDIsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMt PmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCBmYWxzZSwgMiwgaXI6OlRZUEVfVTE2KTsg YnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfUkVBRF9VU19J TUFHRTQ6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEks IENTLCBmYWxzZSwgNCwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIGZhbHNlLCA0LCBpcjo6VFlQRV9VMTYpOyBi cmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19SRUFEX1VTX0lN QUdFODoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoSSwg Q1MsIGZhbHNlLCA4LCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5l bWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoSSwgZmFsc2UsIDgsIGlyOjpUWVBFX1UxNik7IGJy ZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1dSSVRFX1VTX0lN QUdFOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCBD UywgdHJ1ZSwgMSwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1p dEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIHRydWUsIDEsIGlyOjpUWVBFX1UxNik7IGJyZWFr OwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1dSSVRFX1VTX0lNQUdF MjoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoSSwgQ1Ms IHRydWUsIDIsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRC bG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCB0cnVlLCAyLCBpcjo6VFlQRV9VMTYpOyBicmVhazsK LSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19XUklURV9VU19JTUFHRTQ6 Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIENTLCB0 cnVlLCA0LCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0Qmxv Y2tSZWFkV3JpdGVJbWFnZUluc3QoSSwgdHJ1ZSwgNCwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0g ICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfV1JJVEVfVVNfSU1BR0U4Ogot LSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCBDUywgdHJ1 ZSwgOCwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2Nr UmVhZFdyaXRlSW1hZ2VJbnN0KEksIHRydWUsIDgsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotICAg ICAgICAgICBjYXNlIEdFTl9PQ0xfR0VUX1BJUEU6Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9N QUtFX1JJRDoKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0dFVF9SSUQ6Ci0tLS0gYS9iYWNrZW5k L3NyYy9sbHZtL2xsdm1faW5jbHVkZXMuaHBwCTIwMjAtMTEtMDkgMTY6NDg6MjAuODIzODY2MTEy ICswMTAwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1faW5jbHVkZXMuaHBwCTIwMjAtMTEt MDkgMTk6MDA6MDkuOTU1OTI2Nzk1ICswMTAwCi1AQCAtMTAzLDcgKzEwMyw2IEBACi0KLSAjaWYg TExWTV9WRVJTSU9OX01BSk9SICogMTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gMzUKLSAjaW5j bHVkZSAibGx2bS9JUi9NYW5nbGVyLmgiCi0tI2luY2x1ZGUgImxsdm0vSVIvQ2FsbFNpdGUuaCIK LSAjaW5jbHVkZSAibGx2bS9JUi9DRkcuaCIKLSAjaW5jbHVkZSAibGx2bS9JUi9JbnN0VmlzaXRv ci5oIgotICNpbmNsdWRlICJsbHZtL0lSL0lSUHJpbnRpbmdQYXNzZXMuaCIKLS0tLSBhL2JhY2tl bmQvc3JjL2xsdm0vbGx2bV9sb2Fkc3RvcmVfb3B0aW1pemF0aW9uLmNwcAkyMDIwLTExLTA5IDE2 OjQ4OjIwLjgyMzg2NjExMiArMDEwMAotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2xvYWRz dG9yZV9vcHRpbWl6YXRpb24uY3BwCTIwMjAtMTEtMDkgMTk6MTA6MzcuMTQxODUyMzA4ICswMTAw Ci1AQCAtMTYwLDcgKzE2MCw3IEBACi0gICAgIFZhbHVlICp2ZWNQdHIgPSBCdWlsZGVyLkNyZWF0 ZUJpdENhc3QobGQtPmdldFBvaW50ZXJPcGVyYW5kKCksCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFBvaW50ZXJUeXBlOjpnZXQodmVjVHksIGFkZHJTcGFjZSkpOwot ICAgICBMb2FkSW5zdCAqdmVjVmFsdWUgPSBCdWlsZGVyLkNyZWF0ZUxvYWQodmVjUHRyKTsKLS0g ICAgdmVjVmFsdWUtPnNldEFsaWdubWVudChhbGlnbik7Ci0rICAgIHZlY1ZhbHVlLT5zZXRBbGln bm1lbnQoYWxpZ24udmFsdWVPck9uZSgpKTsKLQotICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp IDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgVmFsdWUgKlMgPSBCdWlsZGVyLkNyZWF0ZUV4dHJhY3RF bGVtZW50KHZlY1ZhbHVlLCBCdWlsZGVyLmdldEludDMyKGkpKTsKLUBAIC0yNTEsNyArMjUxLDcg QEAKLSAgICAgICByZXR1cm47Ci0gICAgIFZhbHVlICpuZXdQdHIgPSBCdWlsZGVyLkNyZWF0ZUJp dENhc3Qoc3RQb2ludGVyLCBQb2ludGVyVHlwZTo6Z2V0KHZlY1R5LCBhZGRyU3BhY2UpKTsKLSAg ICAgU3RvcmVJbnN0ICpuZXdTVCA9IEJ1aWxkZXIuQ3JlYXRlU3RvcmUocGFyZW50LCBuZXdQdHIp OwotLSAgICBuZXdTVC0+c2V0QWxpZ25tZW50KGFsaWduKTsKLSsgICAgbmV3U1QtPnNldEFsaWdu bWVudChhbGlnbi52YWx1ZU9yT25lKCkpOwotICAgfQotCi0gICAvLyBGaW5kIHRoZSBzYWZlIGl0 ZXJhdG9yIHdlIGNhbiBwb2ludCB0by4gSWYgcmVvcmRlciBoYXBwZW5zLCB3ZSBuZWVkIHRvCi0t LS0gYS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fcGFzc2VzLmNwcAkyMDIwLTExLTA5IDE2OjQ4OjIw LjgyMzg2NjExMiArMDEwMAotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX3Bhc3Nlcy5jcHAJ MjAyMC0xMS0wOSAxODo0ODo1NS45OTcwMDY4MzcgKzAxMDAKLUBAIC05NSw3ICs5NSw3IEBACi0g ICB7Ci0gICAgIHN3aXRjaCAoVHktPmdldFR5cGVJRCgpKSB7Ci0gICAgICAgY2FzZSBUeXBlOjpW b2lkVHlJRDogTk9UX1NVUFBPUlRFRDsKLS0gICAgICBjYXNlIFR5cGU6OlZlY3RvclR5SUQ6Ci0r ICAgICAgY2FzZSBUeXBlOjpGaXhlZFZlY3RvclR5SUQ6Ci0gICAgICAgewotICAgICAgICAgY29u c3QgVmVjdG9yVHlwZSogVmVjVHkgPSBjYXN0PFZlY3RvclR5cGU+KFR5KTsKLSAgICAgICAgIHVp bnQzMl90IGVsZW1OdW0gPSBWZWNUeS0+Z2V0TnVtRWxlbWVudHMoKTsKLUBAIC0xMzgsNyArMTM4 LDcgQEAKLSAgICAgICBjYXNlIFR5cGU6OkhhbGZUeUlEOiAgICByZXR1cm4gMTY7Ci0gICAgICAg Y2FzZSBUeXBlOjpGbG9hdFR5SUQ6ICAgcmV0dXJuIDMyOwotICAgICAgIGNhc2UgVHlwZTo6RG91 YmxlVHlJRDogIHJldHVybiA2NDsKLS0gICAgICBjYXNlIFR5cGU6OlZlY3RvclR5SUQ6Ci0rICAg ICAgY2FzZSBUeXBlOjpGaXhlZFZlY3RvclR5SUQ6Ci0gICAgICAgewotICAgICAgICAgY29uc3Qg VmVjdG9yVHlwZSogVmVjVHkgPSBjYXN0PFZlY3RvclR5cGU+KFR5KTsKLSAgICAgICAgIHVpbnQz Ml90IG51bUVsZW0gPSBWZWNUeS0+Z2V0TnVtRWxlbWVudHMoKTsKLUBAIC0xODQsMTAgKzE4NCwx MiBAQAotICAgICBUeXBlICplbGVtZW50VHlwZSA9IE5VTEw7Ci0gICAgIGlmIChQb2ludGVyVHlw ZSogcHRyVHlwZSA9IGR5bl9jYXN0PFBvaW50ZXJUeXBlPihlbHRUeSkpCi0gICAgICAgZWxlbWVu dFR5cGUgPSBwdHJUeXBlLT5nZXRFbGVtZW50VHlwZSgpOwotLSAgICBlbHNlIGlmKFNlcXVlbnRp YWxUeXBlICogc2VxVHlwZSA9IGR5bl9jYXN0PFNlcXVlbnRpYWxUeXBlPihlbHRUeSkpCi0tICAg ICAgZWxlbWVudFR5cGUgPSBzZXFUeXBlLT5nZXRFbGVtZW50VHlwZSgpOwotLSAgICBlbHNlIGlm KENvbXBvc2l0ZVR5cGUgKiBjb21wVHk9IGR5bl9jYXN0PENvbXBvc2l0ZVR5cGU+KGVsdFR5KSkK LS0gICAgICBlbGVtZW50VHlwZSA9IGNvbXBUeS0+Z2V0VHlwZUF0SW5kZXgoaW5kZXgpOwotKyAg ICBlbHNlIGlmIChBcnJheVR5cGUgKiBhcnJUeXBlID0gZHluX2Nhc3Q8QXJyYXlUeXBlPihlbHRU eSkpCi0rICAgICAgZWxlbWVudFR5cGUgPSBhcnJUeXBlLT5nZXRFbGVtZW50VHlwZSgpOwotKyAg ICBlbHNlIGlmKFZlY3RvclR5cGUgKiB2ZWNUeXBlID0gZHluX2Nhc3Q8VmVjdG9yVHlwZT4oZWx0 VHkpKQotKyAgICAgIGVsZW1lbnRUeXBlID0gdmVjVHlwZS0+Z2V0RWxlbWVudFR5cGUoKTsKLSsg ICAgZWxzZSBpZihTdHJ1Y3RUeXBlICogc3RydWN0VHlwZSA9IGR5bl9jYXN0PFN0cnVjdFR5cGU+ KGVsdFR5KSkKLSsgICAgICBlbGVtZW50VHlwZSA9IHN0cnVjdFR5cGUtPmdldFR5cGVBdEluZGV4 KGluZGV4KTsKLSAgICAgR0JFX0FTU0VSVChlbGVtZW50VHlwZSk7Ci0gICAgIHJldHVybiBlbGVt ZW50VHlwZTsKLSAgIH0KLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9wcmludGZfcGFyc2Vy LmNwcAkyMDIwLTExLTA5IDE2OjQ4OjIwLjgyMzg2NjExMiArMDEwMAotKysrIGIvYmFja2VuZC9z cmMvbGx2bS9sbHZtX3ByaW50Zl9wYXJzZXIuY3BwCTIwMjAtMTEtMDkgMTg6NTc6NTIuNjE4OTQz MTA1ICswMTAwCi1AQCAtMzIzLDggKzMyMyw3IEBACi0KLSAgIGJvb2wgUHJpbnRmUGFyc2VyOjpw YXJzZU9uZVByaW50Zkluc3RydWN0aW9uKENhbGxJbnN0ICogY2FsbCkKLSAgIHsKLS0gICAgQ2Fs bFNpdGUgQ1MoY2FsbCk7Ci0tICAgIENhbGxTaXRlOjphcmdfaXRlcmF0b3IgQ0lfRk1UID0gQ1Mu YXJnX2JlZ2luKCk7Ci0rICAgIFVzZXI6Om9wX2l0ZXJhdG9yIENJX0ZNVCA9IGNhbGwtPmFyZ19i ZWdpbigpOwotICAgICBpbnQgcGFyYW1fbnVtID0gMDsKLQotICAgICBsbHZtOjpDb25zdGFudCog YXJnMCA9IGR5bl9jYXN0PGxsdm06OkNvbnN0YW50RXhwcj4oKkNJX0ZNVCk7Ci1AQCAtMzQxLDcg KzM0MCw3IEBACi0gICAgICAgcmV0dXJuIGZhbHNlOwotICAgICB9Ci0KLS0gICAgc3RkOjpzdHJp bmcgZm10ID0gZm10X2FyZy0+Z2V0QXNDU3RyaW5nKCk7Ci0rICAgIHN0ZDo6c3RyaW5nIGZtdCA9 IGZtdF9hcmctPmdldEFzQ1N0cmluZygpLnN0cigpOwotICAgICBpZiAoZm10LnNpemUoKSA9PSAw KQotICAgICAgIHJldHVybiBmYWxzZTsKLQotQEAgLTQzNyw4ICs0MzYsOCBAQAotICAgICAgICAg aWYgKCBjYWxsRnVuYy0+Z2V0SW50cmluc2ljSUQoKSAhPSAwKQotICAgICAgICAgICBjb250aW51 ZTsKLQotLSAgICAgICAgVmFsdWUgKkNhbGxlZSA9IGNhbGwtPmdldENhbGxlZFZhbHVlKCk7Ci0t ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmbk5hbWUgPSBDYWxsZWUtPmdldE5hbWUoKTsKLSsg ICAgICAgIFZhbHVlICpDYWxsZWUgPSBjYWxsLT5nZXRDYWxsZWRPcGVyYW5kKCk7Ci0rICAgICAg ICBjb25zdCBzdGQ6OnN0cmluZyBmbk5hbWUgPSBDYWxsZWUtPmdldE5hbWUoKS5zdHIoKTsKLQot ICAgICAgICAgaWYgKGZuTmFtZSAhPSAiX19nZW5fb2NsX3ByaW50Zl9zdHViIiAmJiBmbk5hbWUg IT0gIl9fZ2VuX29jbF9wdXRzX3N0dWIiKQotICAgICAgICAgICBjb250aW51ZTsKLUBAIC01ODIs NyArNTgxLDcgQEAKLSAgICAgICAgICAgICBpZiAoIWZtdF9hcmcgfHwgIWZtdF9hcmctPmlzQ1N0 cmluZygpKSB7Ci0gICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgfQot LSAgICAgICAgICAgIHNsb3Quc3RhdGUuc3RyID0gZm10X2FyZy0+Z2V0QXNDU3RyaW5nKCk7Ci0r ICAgICAgICAgICAgc2xvdC5zdGF0ZS5zdHIgPSBmbXRfYXJnLT5nZXRBc0NTdHJpbmcoKS5zdHIo KTsKLSAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgfQotICAgICAgICAgICBj YXNlIFBSSU5URl9DT05WRVJTSU9OX1A6IHsKLUBAIC01OTUsMTAgKzU5NCwxMCBAQAotCi0gICAg ICAgICBicmVhazsKLQotLSAgICAgIGNhc2UgVHlwZTo6VmVjdG9yVHlJRDogewotLSAgICAgICAg VHlwZSogdmVjdF90eXBlID0gYXJnLT5nZXRUeXBlKCk7Ci0tICAgICAgICBUeXBlKiBlbHRfdHlw ZSA9IHZlY3RfdHlwZS0+Z2V0VmVjdG9yRWxlbWVudFR5cGUoKTsKLS0gICAgICAgIGludCB2ZWNf bnVtID0gdmVjdF90eXBlLT5nZXRWZWN0b3JOdW1FbGVtZW50cygpOwotKyAgICAgIGNhc2UgVHlw ZTo6Rml4ZWRWZWN0b3JUeUlEOiB7Ci0rICAgICAgICBWZWN0b3JUeXBlKiB2ZWN0X3R5cGUgPSBk eW5fY2FzdDxWZWN0b3JUeXBlPihhcmctPmdldFR5cGUoKSk7Ci0rICAgICAgICBUeXBlKiBlbHRf dHlwZSA9IHZlY3RfdHlwZS0+Z2V0RWxlbWVudFR5cGUoKTsKLSsgICAgICAgIGludCB2ZWNfbnVt ID0gdmVjdF90eXBlLT5nZXROdW1FbGVtZW50cygpOwotICAgICAgICAgYm9vbCBzaWduID0gZmFs c2U7Ci0KLSAgICAgICAgIGlmICh2ZWNfbnVtICE9IHNsb3Quc3RhdGUudmVjdG9yX24pIHsKLS0t LSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9wcm9maWxpbmcuY3BwCTIwMjAtMTEtMDkgMTY6NDg6 MjAuODIzODY2MTEyICswMTAwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fcHJvZmlsaW5n LmNwcAkyMDIwLTExLTA5IDE4OjU5OjUwLjEyMDkyOTE1MCArMDEwMAotQEAgLTM1LDcgKzM1LDYg QEAKLSAjaW5jbHVkZSAibGx2bS9JUi9JUkJ1aWxkZXIuaCIKLQotICNpZiBMTFZNX1ZFUlNJT05f TUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSAzNQotLSNpbmNsdWRlICJsbHZtL0lS L0NhbGxTaXRlLmgiCi0gI2luY2x1ZGUgImxsdm0vSVIvQ0ZHLmgiCi0gI2Vsc2UKLSAjaW5jbHVk ZSAibGx2bS9TdXBwb3J0L0NhbGxTaXRlLmgiCi0tLS0gYS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1f c2FtcGxlcl9maXguY3BwCTIwMjAtMTEtMDkgMTY6NDg6MjAuODIzODY2MTEyICswMTAwCi0rKysg Yi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fc2FtcGxlcl9maXguY3BwCTIwMjAtMTEtMDkgMTc6MDE6 MDkuNDA3Nzc0ODMyICswMTAwCi1AQCAtNDUsOCArNDUsOCBAQAotICAgICBib29sIHZpc2l0Q2Fs bEluc3QoQ2FsbEluc3QgKkkpIHsKLSAgICAgICBpZighSSkKLSAgICAgICAgIHJldHVybiBmYWxz ZTsKLS0gICAgICBWYWx1ZSAqQ2FsbGVlID0gSS0+Z2V0Q2FsbGVkVmFsdWUoKTsKLS0gICAgICBj b25zdCBzdGQ6OnN0cmluZyBmbk5hbWUgPSBDYWxsZWUtPmdldE5hbWUoKTsKLSsgICAgICBWYWx1 ZSAqQ2FsbGVlID0gSS0+Z2V0Q2FsbGVkT3BlcmFuZCgpOwotKyAgICAgIGNvbnN0IHN0ZDo6c3Ry aW5nIGZuTmFtZSA9IENhbGxlZS0+Z2V0TmFtZSgpLnN0cigpOwotICAgICAgIGJvb2wgY2hhbmdl ZCA9IGZhbHNlOwotICAgICAgIFR5cGUgKmJvb2xUeSA9IEludGVnZXJUeXBlOjpnZXQoSS0+Z2V0 Q29udGV4dCgpLCAxKTsKLSAgICAgICBUeXBlICppMzJUeSA9IEludGVnZXJUeXBlOjpnZXQoSS0+ Z2V0Q29udGV4dCgpLCAzMik7Ci1AQCAtNTksNyArNTksNyBAQAotICAgICAgICAgVmFsdWUgKm5l ZWRGaXhWYWw7Ci0gI2lmIExMVk1fVkVSU0lPTl9NQUpPUiAqIDEwICsgTExWTV9WRVJTSU9OX01J Tk9SID49IDQwCi0gICAgICAgICBDYWxsSW5zdCAqaW5pdCA9IGR5bl9jYXN0PENhbGxJbnN0PihJ LT5nZXRPcGVyYW5kKDApKTsKLS0gICAgICAgIGlmIChpbml0ICYmIGluaXQtPmdldENhbGxlZFZh bHVlKCktPmdldE5hbWUoKS5jb21wYXJlKCJfX3RyYW5zbGF0ZV9zYW1wbGVyX2luaXRpYWxpemVy IikpCi0rICAgICAgICBpZiAoaW5pdCAmJiBpbml0LT5nZXRDYWxsZWRPcGVyYW5kKCktPmdldE5h bWUoKS5jb21wYXJlKCJfX3RyYW5zbGF0ZV9zYW1wbGVyX2luaXRpYWxpemVyIikpCi0gICAgICAg ICB7Ci0gICAgICAgICAgIGNvbnN0IENvbnN0YW50SW50ICpjaSA9IGR5bl9jYXN0PENvbnN0YW50 SW50Pihpbml0LT5nZXRPcGVyYW5kKDApKTsKLSAgICAgICAgICAgdWludDMyX3Qgc2FtcGxlcklu dCA9IGNpLT5nZXRaRXh0VmFsdWUoKTsKLUBAIC0xMTMsNyArMTEzLDcgQEAKLSAgICAgICAgIFZh bHVlICpuZWVkRml4VmFsOwotICAjaWYgTExWTV9WRVJTSU9OX01BSk9SICogMTAgKyBMTFZNX1ZF UlNJT05fTUlOT1IgPj0gNDAKLSAgICAgICAgIENhbGxJbnN0ICppbml0ID0gZHluX2Nhc3Q8Q2Fs bEluc3Q+KEktPmdldE9wZXJhbmQoMCkpOwotLSAgICAgICAgaWYgKGluaXQgJiYgaW5pdC0+Z2V0 Q2FsbGVkVmFsdWUoKS0+Z2V0TmFtZSgpLmNvbXBhcmUoIl9fdHJhbnNsYXRlX3NhbXBsZXJfaW5p dGlhbGl6ZXIiKSkKLSsgICAgICAgIGlmIChpbml0ICYmIGluaXQtPmdldENhbGxlZE9wZXJhbmQo KS0+Z2V0TmFtZSgpLmNvbXBhcmUoIl9fdHJhbnNsYXRlX3NhbXBsZXJfaW5pdGlhbGl6ZXIiKSkK LSAgICAgICAgIHsKLSAgICAgICAgICAgY29uc3QgQ29uc3RhbnRJbnQgKmNpID0gZHluX2Nhc3Q8 Q29uc3RhbnRJbnQ+KGluaXQtPmdldE9wZXJhbmQoMCkpOwotICAgICAgICAgICB1aW50MzJfdCBz YW1wbGVySW50ID0gY2ktPmdldFpFeHRWYWx1ZSgpOwotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9s bHZtX3NjYWxhcml6ZS5jcHAJMjAyMC0xMS0wOSAxNjo0ODoyMC44MjM4NjYxMTIgKzAxMDAKLSsr KyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9zY2FsYXJpemUuY3BwCTIwMjAtMTEtMDkgMTg6NTE6 MTYuODg4OTkwMTA0ICswMTAwCi1AQCAtMTc4LDcgKzE3OCw3IEBACi0gICAgICAgaWYoIXR5cGUp Ci0gICAgICAgICByZXR1cm4gdHlwZTsKLSAgICAgICBzd2l0Y2godHlwZS0+Z2V0VHlwZUlEKCkp IHsKLS0gICAgICBjYXNlIFR5cGU6OlZlY3RvclR5SUQ6Ci0rICAgICAgY2FzZSBUeXBlOjpGaXhl ZFZlY3RvclR5SUQ6Ci0gICAgICAgY2FzZSBUeXBlOjpBcnJheVR5SUQ6Ci0gICAgICAgICByZXR1 cm4gR2V0QmFzaWNUeXBlKHR5cGUtPmdldENvbnRhaW5lZFR5cGUoMCkpOwotICAgICAgIGRlZmF1 bHQ6Ci1AQCAtMTg4LDcgKzE4OCw3IEBACi0gICAgIH0KLQotICAgICBpbnQgR2V0Q29tcG9uZW50 Q291bnQoY29uc3QgVHlwZSogdHlwZSkgIHsKLS0gICAgICBpZiAodHlwZSAmJiB0eXBlLT5nZXRU eXBlSUQoKSA9PSBUeXBlOjpWZWN0b3JUeUlEKQotKyAgICAgIGlmICh0eXBlICYmIHR5cGUtPmdl dFR5cGVJRCgpID09IFR5cGU6OkZpeGVkVmVjdG9yVHlJRCkKLSAgICAgICAgIHJldHVybiBsbHZt OjpkeW5fY2FzdDxWZWN0b3JUeXBlPih0eXBlKS0+Z2V0TnVtRWxlbWVudHMoKTsKLSAgICAgICBl bHNlCi0gICAgICAgICByZXR1cm4gMTsKLUBAIC02NTIsMTMgKzY1MiwxMiBAQAotICAgICAgICAg ICBicmVhazsKLSAgICAgICAgIH0KLSAgICAgICB9IGVsc2UgewotLSAgICAgICAgVmFsdWUgKkNh bGxlZSA9IGNhbGwtPmdldENhbGxlZFZhbHVlKCk7Ci0tICAgICAgICBjb25zdCBzdGQ6OnN0cmlu ZyBmbk5hbWUgPSBDYWxsZWUtPmdldE5hbWUoKTsKLSsgICAgICAgIFZhbHVlICpDYWxsZWUgPSBj YWxsLT5nZXRDYWxsZWRPcGVyYW5kKCk7Ci0rICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmbk5h bWUgPSBDYWxsZWUtPmdldE5hbWUoKS5zdHIoKTsKLSAgICAgICAgIGF1dG8gZ2VuSW50cmluc2lj SUQgPSBpbnRyaW5zaWNNYXAuZmluZChmbk5hbWUpOwotCi0gICAgICAgICAvLyBHZXQgdGhlIGZ1 bmN0aW9uIGFyZ3VtZW50cwotLSAgICAgICAgQ2FsbFNpdGUgQ1MoY2FsbCk7Ci0tICAgICAgICBD YWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIENJID0gQ1MuYXJnX2JlZ2luKCkgKyAxOwotKyAgICAgICAg VXNlcjo6b3BfaXRlcmF0b3IgQ0kgPSBjYWxsLT5hcmdfYmVnaW4oKSArIDE7Ci0KLSAgICAgICAg IHN3aXRjaCAoZ2VuSW50cmluc2ljSUQpIHsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX05PVF9G T1VORDoKLUBAIC03MjksNyArNzI4LDcgQEAKLSAgICAgICAgICAgICBleHRyYWN0RnJvbVZlY3Rv cihjYWxsKTsKLSAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1BS SU5URjoKLS0gICAgICAgICAgICBmb3IgKDsgQ0kgIT0gQ1MuYXJnX2VuZCgpOyArK0NJKQotKyAg ICAgICAgICAgIGZvciAoOyBDSSAhPSBjYWxsLT5hcmdfZW5kKCk7ICsrQ0kpCi0gICAgICAgICAg ICAgICBpZiAoKCpDSSktPmdldFR5cGUoKS0+aXNWZWN0b3JUeSgpKQotICAgICAgICAgICAgICAg ICAqQ0kgPSBJbnNlcnRUb1ZlY3RvcihjYWxsLCAqQ0kpOwotICAgICAgICAgICAgIGJyZWFrOwpk aWZmIC0tZ2l0IGEvc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvbGx2bTEyLnBhdGNoIGIvc3JjcGtn cy9iZWlnbmV0L3BhdGNoZXMvbGx2bTEyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCA2ZjhhYjAwNWMxNDguLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2JlaWduZXQvcGF0 Y2hlcy9sbHZtMTIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTUgKzAsMCBAQAotZGlmZiAt LWdpdCBiYWNrZW5kL3NyYy9sbHZtL0V4cGFuZExhcmdlSW50ZWdlcnMuY3BwIGJhY2tlbmQvc3Jj L2xsdm0vRXhwYW5kTGFyZ2VJbnRlZ2Vycy5jcHAKLWluZGV4IDg1MTVkYzEzLi4yNzA4MDM4MCAx MDA2NDQKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vRXhwYW5kTGFyZ2VJbnRlZ2Vycy5jcHAKLSsr KyBiL2JhY2tlbmQvc3JjL2xsdm0vRXhwYW5kTGFyZ2VJbnRlZ2Vycy5jcHAKLUBAIC0zMjgsNyAr MzI4LDcgQEAgc3RhdGljIFZhbHVlICpidWlsZFZlY3Rvck9yU2NhbGFyKENvbnZlcnNpb25TdGF0 ZSAmU3RhdGUsIElSQnVpbGRlcjw+ICZJUkIsIFNtYWwKLSAgICAgLy8gc3BsaXRlZCwgdGhhdCdz IHdoeSB0aGVzZSB0ZW1wb3JhcnkgdmFsdWVzIHNob3VsZCBiZSBlcmFzZWQuCi0gICAgIGJvb2wg S2VlcEluc2VydCA9IGlzTGVnYWxCaXRTaXplKEVsZW1UeS0+Z2V0UHJpbWl0aXZlU2l6ZUluQml0 cygpICogRWxlbU5vKTsKLSAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEVsZW1ObzsgKytp KSB7Ci0tICAgICAgVmFsdWUgKnRtcCA9IHZlYyA/IHZlYyA6IFVuZGVmVmFsdWU6OmdldChWZWN0 b3JUeXBlOjpnZXQoRWxlbVR5LCBFbGVtTm8pKTsKLSsgICAgICBWYWx1ZSAqdG1wID0gdmVjID8g dmVjIDogVW5kZWZWYWx1ZTo6Z2V0KFZlY3RvclR5cGU6OmdldChFbGVtVHksIEVsZW1ObywgZmFs c2UpKTsKLSAgICAgICBWYWx1ZSAqaWR4ID0gQ29uc3RhbnRJbnQ6OmdldChJbnRUeSwgaSk7Ci0g ICAgICAgdmVjID0gSVJCLkNyZWF0ZUluc2VydEVsZW1lbnQodG1wLCBFbGVtZW50c1tpXSwgaWR4 KTsKLSAgICAgICBpZiAoIUtlZXBJbnNlcnQgJiYgIWlzYTxDb25zdGFudD4odmVjKSkgewotQEAg LTM3Myw3ICszNzMsNyBAQCBzdGF0aWMgdm9pZCB1bmlmeUVsZW1lbnRUeXBlKElSQnVpbGRlcjw+ ICZJUkIsIFNtYWxsVmVjdG9yPFZhbHVlICosIDE2PiAmU3JjLCBTbQotICAgICAgIGFzc2VydCgo U2l6ZSAlIE1pbldpZHRoKSA9PSAwKTsKLSAKLSAgICAgICBpZiAoU2l6ZSA+IE1pbldpZHRoKSB7 Ci0tICAgICAgICBWZWN0b3JUeXBlICpWZWNUeSA9IFZlY3RvclR5cGU6OmdldChFbGVtVHksIFNp emUvTWluV2lkdGgpOwotKyAgICAgICAgVmVjdG9yVHlwZSAqVmVjVHkgPSBWZWN0b3JUeXBlOjpn ZXQoRWxlbVR5LCBTaXplL01pbldpZHRoLCBmYWxzZSk7Ci0gICAgICAgICBWYWx1ZSAqQ2FzdGVk ID0gSVJCLkNyZWF0ZUJpdENhc3QoU3JjW2ldLCBWZWNUeSk7Ci0gICAgICAgICBmb3IgKHVuc2ln bmVkIGogPSAwOyBqIDwgU2l6ZS9NaW5XaWR0aDsgaisrKQotICAgICAgICAgICBEc3QucHVzaF9i YWNrKElSQi5DcmVhdGVFeHRyYWN0RWxlbWVudChDYXN0ZWQsIENvbnN0YW50SW50OjpnZXQoSW50 VHksIGopKSk7Ci1AQCAtNDYyLDcgKzQ2Miw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRJbnN0cnVj dGlvbihJbnN0cnVjdGlvbiAqSW5zdCwgQ29udmVyc2lvblN0YXRlICZTdGF0ZSwKLSAgICAgICB1 bnNpZ25lZCBFbGVtTm8gPSBVbmlmaWVkLnNpemUoKTsKLSAgICAgICBUeXBlICpFbGVtVHkgPSBV bmlmaWVkWzBdLT5nZXRUeXBlKCk7Ci0gICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEVs ZW1ObzsgKytpKSB7Ci0tICAgICAgICBWYWx1ZSAqdG1wID0gdmVjID8gdmVjIDogVW5kZWZWYWx1 ZTo6Z2V0KFZlY3RvclR5cGU6OmdldChFbGVtVHksIEVsZW1ObykpOwotKyAgICAgICAgVmFsdWUg KnRtcCA9IHZlYyA/IHZlYyA6IFVuZGVmVmFsdWU6OmdldChWZWN0b3JUeXBlOjpnZXQoRWxlbVR5 LCBFbGVtTm8sIGZhbHNlKSk7Ci0gICAgICAgICBWYWx1ZSAqaWR4ID0gQ29uc3RhbnRJbnQ6Omdl dChJbnRUeSwgaSk7Ci0gICAgICAgICB2ZWMgPSBJUkIuQ3JlYXRlSW5zZXJ0RWxlbWVudCh0bXAs IFVuaWZpZWRbaV0sIGlkeCk7Ci0gICAgICAgfQotZGlmZiAtLWdpdCBiYWNrZW5kL3NyYy9sbHZt L2xsdm1fZ2VuX2JhY2tlbmQuY3BwIGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9nZW5fYmFja2VuZC5j cHAKLWluZGV4IGM5M2Q4OWNjLi42NGQ1YjBlNSAxMDA2NDQKLS0tLSBhL2JhY2tlbmQvc3JjL2xs dm0vbGx2bV9nZW5fYmFja2VuZC5jcHAKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9nZW5f YmFja2VuZC5jcHAKLUBAIC0zMDQsNyArMzA0LDcgQEAgbmFtZXNwYWNlIGdiZQotICAgICAgIFRZ UEVTSVpFVkVDKGxvbmcsOCkKLSAgICAgICBUWVBFU0laRVZFQyh1bnNpZ25lZCBsb25nLDgpCi0g ICAgICAgZWxzZXsKLS0gICAgICAgIFN0cnVjdFR5cGUgKlN0clR5ID0gTS0+Z2V0VHlwZUJ5TmFt ZSgic3RydWN0LiIrbmFtZSk7Ci0rICAgICAgICBTdHJ1Y3RUeXBlICpTdHJUeSA9IFN0cnVjdFR5 cGU6OmdldFR5cGVCeU5hbWUoTS0+Z2V0Q29udGV4dCgpLCAic3RydWN0LiIrbmFtZSk7Ci0gICAg ICAgICBpZihTdHJUeSkKLSAgICAgICAgICAgcmV0dXJuIGdldFR5cGVCeXRlU2l6ZSh1bml0LFN0 clR5KTsKLSAgICAgICB9Ci1kaWZmIC0tZ2l0IGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9sb2Fkc3Rv cmVfb3B0aW1pemF0aW9uLmNwcCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1fbG9hZHN0b3JlX29wdGlt aXphdGlvbi5jcHAKLWluZGV4IDVhYTM4YmVmLi42YjVjMWJhZCAxMDA2NDQKLS0tLSBhL2JhY2tl bmQvc3JjL2xsdm0vbGx2bV9sb2Fkc3RvcmVfb3B0aW1pemF0aW9uLmNwcAotKysrIGIvYmFja2Vu ZC9zcmMvbGx2bS9sbHZtX2xvYWRzdG9yZV9vcHRpbWl6YXRpb24uY3BwCi1AQCAtMTUyLDcgKzE1 Miw3IEBAIG5hbWVzcGFjZSBnYmUgewotICAgICB1bnNpZ25lZCBhZGRyU3BhY2UgPSBsZC0+Z2V0 UG9pbnRlckFkZHJlc3NTcGFjZSgpOwotICAgICAvLyBpbnNlcnQgYmVmb3JlIGZpcnN0IGxvYWQK LSAgICAgQnVpbGRlci5TZXRJbnNlcnRQb2ludChsZCk7Ci0tICAgIFZlY3RvclR5cGUgKnZlY1R5 ID0gVmVjdG9yVHlwZTo6Z2V0KGxkLT5nZXRUeXBlKCksIHNpemUpOwotKyAgICBWZWN0b3JUeXBl ICp2ZWNUeSA9IFZlY3RvclR5cGU6OmdldChsZC0+Z2V0VHlwZSgpLCBzaXplLCBmYWxzZSk7Ci0g ICAgIFZhbHVlICp2ZWNQdHIgPSBCdWlsZGVyLkNyZWF0ZUJpdENhc3QobGQtPmdldFBvaW50ZXJP cGVyYW5kKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvaW50 ZXJUeXBlOjpnZXQodmVjVHksIGFkZHJTcGFjZSkpOwotICAgICBMb2FkSW5zdCAqdmVjVmFsdWUg PSBCdWlsZGVyLkNyZWF0ZUxvYWQodmVjUHRyKTsKLUBAIC0yMzYsNyArMjM2LDcgQEAgbmFtZXNw YWNlIGdiZSB7Ci0gICAgIEJ1aWxkZXIuU2V0SW5zZXJ0UG9pbnQobWVyZ2VkW3NpemUtMV0pOwot IAotICAgICBUeXBlICpkYXRhVHkgPSBzdC0+Z2V0VmFsdWVPcGVyYW5kKCktPmdldFR5cGUoKTsK LS0gICAgVmVjdG9yVHlwZSAqdmVjVHkgPSBWZWN0b3JUeXBlOjpnZXQoZGF0YVR5LCBzaXplKTsK LSsgICAgVmVjdG9yVHlwZSAqdmVjVHkgPSBWZWN0b3JUeXBlOjpnZXQoZGF0YVR5LCBzaXplLCBm YWxzZSk7Ci0gICAgIFZhbHVlICogcGFyZW50ID0gVW5kZWZWYWx1ZTo6Z2V0KHZlY1R5KTsKLSAg ICAgZm9yKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgcGFyZW50ID0g QnVpbGRlci5DcmVhdGVJbnNlcnRFbGVtZW50KHBhcmVudCwgdmFsdWVzW2ldLCBDb25zdGFudElu dDo6Z2V0KEludGVnZXJUeXBlOjpnZXQoc3QtPmdldENvbnRleHQoKSwgMzIpLCBpKSk7Ci1kaWZm IC0tZ2l0IGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9wcmludGZfcGFyc2VyLmNwcCBiYWNrZW5kL3Ny Yy9sbHZtL2xsdm1fcHJpbnRmX3BhcnNlci5jcHAKLWluZGV4IDZiYjdjNTJhLi5hZjQ1OWNkMiAx MDA2NDQKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9wcmludGZfcGFyc2VyLmNwcAotKysr IGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX3ByaW50Zl9wYXJzZXIuY3BwCi1AQCAtNjMwLDcgKzYz MCw3IEBAIGVycm9yOgotICAgICAgICAgICAgIGlmIChlbHRfdHlwZSAhPSBlbHRfZHN0X3R5cGUp IHsKLSAgICAgICAgICAgICAgIFZhbHVlICpJSSA9IE5VTEw7Ci0gICAgICAgICAgICAgICBmb3Ig KGludCBpID0gMDsgaSA8IHZlY19udW07IGkrKykgewotLSAgICAgICAgICAgICAgICBWYWx1ZSAq dmVjID0gSUkgPyBJSSA6IFVuZGVmVmFsdWU6OmdldChWZWN0b3JUeXBlOjpnZXQoZWx0X2RzdF90 eXBlLCB2ZWNfbnVtKSk7Ci0rICAgICAgICAgICAgICAgIFZhbHVlICp2ZWMgPSBJSSA/IElJIDog VW5kZWZWYWx1ZTo6Z2V0KFZlY3RvclR5cGU6OmdldChlbHRfZHN0X3R5cGUsIHZlY19udW0sIGZh bHNlKSk7Ci0gICAgICAgICAgICAgICAgIFZhbHVlICpjdiA9IENvbnN0YW50SW50OjpnZXQoVHlw ZTo6Z2V0SW50MzJUeShlbHRfdHlwZS0+Z2V0Q29udGV4dCgpKSwgaSk7Ci0gICAgICAgICAgICAg ICAgIFZhbHVlICpvcmcgPSBidWlsZGVyLT5DcmVhdGVFeHRyYWN0RWxlbWVudChhcmcsIGN2KTsK LSAgICAgICAgICAgICAgICAgVmFsdWUgKmN2dCA9IGJ1aWxkZXItPkNyZWF0ZUludENhc3Qob3Jn LCBlbHRfZHN0X3R5cGUsIHNpZ24pOwotQEAgLTY1OCw3ICs2NTgsNyBAQCBlcnJvcjoKLSAgICAg ICAgICAgICBpZiAoZWx0X3R5cGUtPmdldFR5cGVJRCgpICE9IFR5cGU6OkZsb2F0VHlJRCkgewot ICAgICAgICAgICAgICAgVmFsdWUgKklJID0gTlVMTDsKLSAgICAgICAgICAgICAgIGZvciAoaW50 IGkgPSAwOyBpIDwgdmVjX251bTsgaSsrKSB7Ci0tICAgICAgICAgICAgICAgIFZhbHVlICp2ZWMg PSBJSSA/IElJIDogVW5kZWZWYWx1ZTo6Z2V0KFZlY3RvclR5cGU6OmdldChUeXBlOjpnZXRGbG9h dFR5KGVsdF90eXBlLT5nZXRDb250ZXh0KCkpLCB2ZWNfbnVtKSk7Ci0rICAgICAgICAgICAgICAg IFZhbHVlICp2ZWMgPSBJSSA/IElJIDogVW5kZWZWYWx1ZTo6Z2V0KFZlY3RvclR5cGU6OmdldChU eXBlOjpnZXRGbG9hdFR5KGVsdF90eXBlLT5nZXRDb250ZXh0KCkpLCB2ZWNfbnVtLCBmYWxzZSkp OwotICAgICAgICAgICAgICAgICBWYWx1ZSAqY3YgPSBDb25zdGFudEludDo6Z2V0KFR5cGU6Omdl dEludDMyVHkoZWx0X3R5cGUtPmdldENvbnRleHQoKSksIGkpOwotICAgICAgICAgICAgICAgICBW YWx1ZSAqb3JnID0gYnVpbGRlci0+Q3JlYXRlRXh0cmFjdEVsZW1lbnQoYXJnLCBjdik7Ci0gICAg ICAgICAgICAgICAgIFZhbHVlKiBjdnQgID0gYnVpbGRlci0+Q3JlYXRlRlBDYXN0KG9yZywgVHlw ZTo6Z2V0RmxvYXRUeShtb2R1bGUtPmdldENvbnRleHQoKSkpOwotZGlmZiAtLWdpdCBiYWNrZW5k L3NyYy9sbHZtL2xsdm1fdG9fZ2VuLmNwcCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1fdG9fZ2VuLmNw cAotaW5kZXggN2Y3ZGVmZmUuLjllOGNjYzY3IDEwMDY0NAotLS0tIGEvYmFja2VuZC9zcmMvbGx2 bS9sbHZtX3RvX2dlbi5jcHAKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV90b19nZW4uY3Bw Ci1AQCAtMzU4LDcgKzM1OCw3IEBAIG5hbWVzcGFjZSBnYmUKLSAgICAgcGFzc2VzLmFkZChjcmVh dGVTY2FsYXJSZXBsQWdncmVnYXRlc1Bhc3MoNjQsIHRydWUsIC0xLCAtMSwgNjQpKTsKLSAjZW5k aWYKLSAgICAgcGFzc2VzLmFkZChjcmVhdGVMb2FkU3RvcmVPcHRpbWl6YXRpb25QYXNzKCkpOwot LSAgICBwYXNzZXMuYWRkKGNyZWF0ZUNvbnN0YW50UHJvcGFnYXRpb25QYXNzKCkpOwotKyAgICAv L3Bhc3Nlcy5hZGQoY3JlYXRlQ29uc3RhbnRQcm9wYWdhdGlvblBhc3MoKSk7Ci0gICAgIHBhc3Nl cy5hZGQoY3JlYXRlUHJvbW90ZU1lbW9yeVRvUmVnaXN0ZXJQYXNzKCkpOwotICAgICBpZihvcHRM ZXZlbCA+IDApCi0gICAgICAgcGFzc2VzLmFkZChjcmVhdGVHVk5QYXNzKCkpOyAgICAgICAgICAg ICAgICAgLy8gUmVtb3ZlIHJlZHVuZGFuY2llcwotQEAgLTM2NywxMSArMzY3LDExIEBAIG5hbWVz cGFjZSBnYmUKLSAgICAgcGFzc2VzLmFkZChjcmVhdGVTY2FsYXJpemVQYXNzKCkpOyAgICAgICAg ICAgICAvLyBFeHBhbmQgYWxsIHZlY3RvciBvcHMKLSAgICAgcGFzc2VzLmFkZChjcmVhdGVFeHBh bmRMYXJnZUludGVnZXJzUGFzcygpKTsgICAvLyBsZWdhbGl6ZSBsYXJnZSBpbnRlZ2VyIG9wZXJh dGlvbgotICAgICBwYXNzZXMuYWRkKGNyZWF0ZUluc3RydWN0aW9uQ29tYmluaW5nUGFzcygpKTsg IC8vIGxlZ2FsaXplIHdpbGwgZ2VuZXJhdGUgc29tZSBzaWxseSBpbnN0cnVjdGlvbnMKLS0gICAg cGFzc2VzLmFkZChjcmVhdGVDb25zdGFudFByb3BhZ2F0aW9uUGFzcygpKTsgICAvLyBwcm9wYWdh dGUgY29uc3RhbnQgYWZ0ZXIgc2NhbGFyaXplL2xlZ2FsaXplCi0rICAgIC8vcGFzc2VzLmFkZChj cmVhdGVDb25zdGFudFByb3BhZ2F0aW9uUGFzcygpKTsgICAvLyBwcm9wYWdhdGUgY29uc3RhbnQg YWZ0ZXIgc2NhbGFyaXplL2xlZ2FsaXplCi0gICAgIHBhc3Nlcy5hZGQoY3JlYXRlRXhwYW5kQ29u c3RhbnRFeHByUGFzcygpKTsgICAgLy8gY29uc3RhbnQgcHJvcCBtYXkgZ2VuZXJhdGUgQ29uc3Rh bnRFeHByCi0gICAgIHBhc3Nlcy5hZGQoY3JlYXRlUHJvbW90ZUludGVnZXJzUGFzcygpKTsgICAg ICAgLy8gYWxpZ24gaW50ZWdlciBzaXplIHRvIHBvd2VyIG9mIHR3bwotICAgICBwYXNzZXMuYWRk KGNyZWF0ZVJlbW92ZUdFUFBhc3ModW5pdCkpOyAgICAgICAgIC8vIENvbnN0YW50IHByb3AgbWF5 IGdlbmVyYXRlIGdlcAotLSAgICBwYXNzZXMuYWRkKGNyZWF0ZURlYWRJbnN0RWxpbWluYXRpb25Q YXNzKCkpOyAgIC8vIFJlbW92ZSBzaW1wbGlmaWVkIGluc3RydWN0aW9ucwotKyAgICAvL3Bhc3Nl cy5hZGQoY3JlYXRlRGVhZEluc3RFbGltaW5hdGlvblBhc3MoKSk7ICAgLy8gUmVtb3ZlIHNpbXBs aWZpZWQgaW5zdHJ1Y3Rpb25zCi0gICAgIHBhc3Nlcy5hZGQoY3JlYXRlQ0ZHU2ltcGxpZmljYXRp b25QYXNzKCkpOyAgICAgLy8gTWVyZ2UgJiByZW1vdmUgQkJzCi0gICAgIHBhc3Nlcy5hZGQoY3Jl YXRlTG93ZXJTd2l0Y2hQYXNzKCkpOyAgICAgICAgICAgLy8gc2ltcGxpZnkgY2ZnIHdpbGwgZ2Vu ZXJhdGUgc3dpdGNoLWNhc2UgaW5zdHJ1Y3Rpb24KLSAgICAgaWYgKHByb2ZpbGluZykgewpkaWZm IC0tZ2l0IGEvc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvbXVzbC5wYXRjaCBiL3NyY3BrZ3MvYmVp Z25ldC9wYXRjaGVzL211c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNl ZmFmYmI2NTU4OC4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL211 c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0tLS0gYS9iYWNrZW5kL3Ny Yy9iYWNrZW5kL2dlbi9nZW5fbWVzYV9kaXNhc20uYwotKysrIGIvYmFja2VuZC9zcmMvYmFja2Vu ZC9nZW4vZ2VuX21lc2FfZGlzYXNtLmMKLUBAIC0xMTM3LDcgKzExMzcsNyBAQCBzdGF0aWMgdWlu dDMyX3QgX19jb252X2hhbGZfdG9fZmxvYXQodWludDE2X3QgaCkKLSAgICAgICAvLyBBZGp1c3Qg bWFudGlzc2Egc28gaXQncyBub3JtYWxpemVkIChhbmQga2VlcAotICAgICAgIC8vIHRyYWNrIG9m IGV4cG9uZW50IGFkanVzdG1lbnQpCi0gICAgICAgaW50IGUgPSAtMTsKLS0gICAgICB1aW50IG0g PSBpLm1hbnRpc3NhOwotKyAgICAgIHVuc2lnbmVkIGludCBtID0gaS5tYW50aXNzYTsKLSAgICAg ICBkbyB7Ci0gICAgICAgICBlKys7Ci0gICAgICAgICBtIDw8PSAxOwpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9iZWlnbmV0L3RlbXBsYXRlIGIvc3JjcGtncy9iZWlnbmV0L3RlbXBsYXRlCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkY2U2YmJiN2FlMjQuLjAwMDAwMDAwMDAwMAotLS0gYS9z cmNwa2dzL2JlaWduZXQvdGVtcGxhdGUKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0j IFRlbXBsYXRlIGZpbGUgZm9yICdiZWlnbmV0JwotcGtnbmFtZT1iZWlnbmV0Ci12ZXJzaW9uPTEu My4yCi1yZXZpc2lvbj0xMAotYXJjaHM9Imk2ODYqIHg4Nl82NCoiCi13cmtzcmM9IkJlaWduZXQt JHt2ZXJzaW9ufS1Tb3VyY2UiCi1idWlsZF9zdHlsZT1jbWFrZQotaG9zdG1ha2VkZXBlbmRzPSJj bGFuZyBsbHZtIHBrZy1jb25maWciCi1tYWtlZGVwZW5kcz0iTWVzYUxpYi1kZXZlbCBsaWJlZGl0 LWRldmVsIGxpYmZmaS1kZXZlbCBvY2wtaWNkLWRldmVsIHpsaWItZGV2ZWwKLSBsaWJYZml4ZXMt ZGV2ZWwiCi1kZXBlbmRzPSJvY2wtaWNkIgotc2hvcnRfZGVzYz0iQmVpZ25ldCBHUEdQVSBTeXN0 ZW0gZm9yIEludGVsIEdQVXMiCi1tYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51 eC5vcmc+IgotbGljZW5zZT0iTEdQTC0yLjEtb3ItbGF0ZXIiCi1ob21lcGFnZT0iaHR0cDovL3d3 dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9CZWlnbmV0LyIKLWRpc3RmaWxlcz0iaHR0 cHM6Ly8wMS5vcmcvc2l0ZXMvZGVmYXVsdC9maWxlcy8ke3BrZ25hbWV9LSR7dmVyc2lvbn0tc291 cmNlLnRhci5neiIKLWNoZWNrc3VtPWM1NTVlZGJhMTQ5ZGUyMzI0Mzk2NWE3MDNmMzlmNzlmYTA2 ZjE1YmNmZjVhMzc2MmI1NTQ0YjA5MjUwMTBiNDMKLQotcG9zdF9pbnN0YWxsKCkgewotCSMgcmVt b3ZlIENMIGhlYWRlcnMsIHdlIGRvIHVzZSBvcGVuY2wtaGVhZGVycyBpbnN0ZWFkLgotCXJtIC1y ICR7REVTVERJUn0vdXNyL2luY2x1ZGUKLX0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmVpZ25ldC91 cGRhdGUgYi9zcmNwa2dzL2JlaWduZXQvdXBkYXRlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCBjYTQxZTBhZmU2MGMuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2JlaWduZXQvdXBk YXRlCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotc2l0ZT0iaHR0cHM6Ly8wMS5vcmcvYmVp Z25ldC9kb3dubG9hZHMiCmRpZmYgLS1naXQgYS9zcmNwa2dzL3JlbW92ZWQtcGFja2FnZXMvdGVt cGxhdGUgYi9zcmNwa2dzL3JlbW92ZWQtcGFja2FnZXMvdGVtcGxhdGUKaW5kZXggMDkyM2M1M2Nm YzA1Li5kNTliZDIwZjgyMGMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcmVtb3ZlZC1wYWNrYWdlcy90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3JlbW92ZWQtcGFja2FnZXMvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdyZW1vdmVkLXBhY2thZ2VzJwogcGtnbmFtZT1y ZW1vdmVkLXBhY2thZ2VzCiB2ZXJzaW9uPTAuMQotcmV2aXNpb249NjkKK3JldmlzaW9uPTcwCiBi dWlsZF9zdHlsZT1tZXRhCiBzaG9ydF9kZXNjPSJVbmluc3RhbGxzIHBhY2thZ2VzIHJlbW92ZWQg ZnJvbSByZXBvc2l0b3J5IgogbWFpbnRhaW5lcj0iUGlvdHIgV8OzamNpayA8Y2hvY2ltaWVyQHRs ZW4ucGw+IgpAQCAtMjUsNiArMjUsNyBAQCByZXBsYWNlcz0iCiAgYXRvbTw9MS40NC4wXzEKICBh dm9nYWRyby1kZXZlbDw9MS4yLjBfOAogIGF2b2dhZHJvPD0xLjIuMF84CisgYmVpZ25ldDw9MS4z LjJfMTAKICBib2trZW48PTEuOF8zCiAgYm9taTw9MC45LjExXzE3CiAgYnVycC1jbGllbnQ8PTEu NC40MF8xMwoKRnJvbSBmODAzNjc1Y2JmNzE5MWNiZTE0M2NmZThkY2FlOTg4NGY1NjgwMDU3IE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBwcmV6IDxwcmV6QG5hdGlvbmFsLnNoaXRwb3N0 aW5nLmFnZW5jeT4KRGF0ZTogTW9uLCAyIE1heSAyMDIyIDE5OjA3OjM4ICswMjAwClN1YmplY3Q6 IFtQQVRDSCAyMS8yOV0gbGRjOiByZWJ1aWxkIGZvciBsbHZtMTQKCi0tLQogc3JjcGtncy9sZGMv dGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRp b24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xkYy90ZW1wbGF0ZSBiL3NyY3BrZ3MvbGRjL3Rl bXBsYXRlCmluZGV4IGEyNzI4MGRkZTNiOC4uZTIxYmM2NTU1ZTM4IDEwMDY0NAotLS0gYS9zcmNw a2dzL2xkYy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2xkYy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2xkYycKIHBrZ25hbWU9bGRjCiB2ZXJzaW9uPTEuMjgu MAotcmV2aXNpb249MQorcmV2aXNpb249Mgogd3Jrc3JjPSJsZGMtJHt2ZXJzaW9ufS1zcmMiCiBi dWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9IgoKRnJvbSBkNmQ5MGUwNDE2MjFjNmQ1 M2FmNmY5NjY3NzhkMmE5NzJmYWIxYTViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBw cmV6IDxwcmV6QG5hdGlvbmFsLnNoaXRwb3N0aW5nLmFnZW5jeT4KRGF0ZTogTW9uLCAyIE1heSAy MDIyIDIyOjMxOjI1ICswMjAwClN1YmplY3Q6IFtQQVRDSCAyMi8yOV0gbGRjOiB1cGRhdGUgdG8g MS4yOS4wLgoKLS0tCiBzcmNwa2dzL2xkYy90ZW1wbGF0ZSB8IDggKysrKy0tLS0KIDEgZmlsZSBj aGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9sZGMvdGVtcGxhdGUgYi9zcmNwa2dzL2xkYy90ZW1wbGF0ZQppbmRleCBlMjFiYzY1NTVl MzguLjFkNzJhODgwNWViNiAxMDA2NDQKLS0tIGEvc3JjcGtncy9sZGMvdGVtcGxhdGUKKysrIGIv c3JjcGtncy9sZGMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdsZGMnCiBwa2duYW1lPWxkYwotdmVyc2lvbj0xLjI4LjAKLXJldmlzaW9uPTIKK3ZlcnNpb249 MS4yOS4wCityZXZpc2lvbj0xCiB3cmtzcmM9ImxkYy0ke3ZlcnNpb259LXNyYyIKIGJ1aWxkX3N0 eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iCkBAIC0xMSw3ICsxMSw3IEBAIGNvbmZpZ3VyZV9h cmdzPSIKICAtREJBU0hfQ09NUExFVElPTl9DT01QTEVUSU9OU0RJUj0vdXNyL3NoYXJlL2Jhc2gt Y29tcGxldGlvbgogIC1EQ19TWVNURU1fTElCUz0ndW53aW5kO207cHRocmVhZDtydDtkbCciCiBj b25mX2ZpbGVzPSIvZXRjL2xkYzIuY29uZiIKLWhvc3RtYWtlZGVwZW5kcz0iZG1kIGxsdm0xMiBw ZXJsIHBrZy1jb25maWciCitob3N0bWFrZWRlcGVuZHM9ImRtZCBsbHZtMTQgcGVybCBwa2ctY29u ZmlnIgogbWFrZWRlcGVuZHM9ImxpYmN1cmwtZGV2ZWwgbGliZmZpLWRldmVsIG5jdXJzZXMtZGV2 ZWwgemxpYi1kZXZlbAogIGxsdm0tbGlidW53aW5kLWRldmVsIgogZGVwZW5kcz0ibGRjLXJ1bnRp bWUgbGx2bS1saWJ1bndpbmQtZGV2ZWwiCkBAIC0yMiw3ICsyMiw3IEBAIGxpY2Vuc2U9IkJTRC0z LUNsYXVzZSwgQlNMLTEuMCIKIGhvbWVwYWdlPSJodHRwczovL3dpa2kuZGxhbmcub3JnL0xEQyIK IGNoYW5nZWxvZz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2xkYy1kZXZlbG9w ZXJzL2xkYy9tYXN0ZXIvQ0hBTkdFTE9HLm1kIgogZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5j b20vbGRjLWRldmVsb3BlcnMvbGRjL3JlbGVhc2VzL2Rvd25sb2FkL3Yke3ZlcnNpb259L2xkYy0k e3ZlcnNpb259LXNyYy50YXIuZ3oiCi1jaGVja3N1bT0xN2ZlZThiYjUzNWJjYjhjZGEwYTQ1OTQ3 NTI2NTU1YzQ2YzA0NWYzMDJhNzM0OWNjODcxMWIyNTRlNTRjZjA5CitjaGVja3N1bT1kMGMwNjZl Yjk2NTQ2NzYyNWQ5YzVlNzVjMDBjNTgzNDUxYjlmZmEzNjM2MDFmOWUzNzI3NWNhOGE4YWVhMTQw CiBub3BpZT15ZXMKIG5vY3Jvc3M9ImRtZCBjb21waWxhdGlvbiBmYWlscyBvbiBjcm9zcyIKICMg dGVzdHMgdGltZW91dCBvbiBtdXNsOyBhbHNvIHJlcXVpcmUgdW5wYWNrYWdlZCBweXRob24zLWxp dAoKRnJvbSAyNzFhMzU3YTMwYTFiOGQzYTExYTE5M2M5MDViMzRjMzEyZmIwNGNjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBwcmV6IDxwcmV6QG5hdGlvbmFsLnNoaXRwb3N0aW5nLmFn ZW5jeT4KRGF0ZTogTW9uLCAyIE1heSAyMDIyIDE5OjA3OjQwICswMjAwClN1YmplY3Q6IFtQQVRD SCAyMy8yOV0gaW5jbHVkZS13aGF0LXlvdS11c2U6IHVwZGF0ZSB0byAwLjE4LgoKLS0tCiBzcmNw a2dzL2luY2x1ZGUtd2hhdC15b3UtdXNlL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdl ZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv aW5jbHVkZS13aGF0LXlvdS11c2UvdGVtcGxhdGUgYi9zcmNwa2dzL2luY2x1ZGUtd2hhdC15b3Ut dXNlL3RlbXBsYXRlCmluZGV4IGIxM2JiN2VlNTZhZi4uMjk3NjY5ZjYwNDU5IDEwMDY0NAotLS0g YS9zcmNwa2dzL2luY2x1ZGUtd2hhdC15b3UtdXNlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvaW5j bHVkZS13aGF0LXlvdS11c2UvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdpbmNsdWRlLXdoYXQteW91LXVzZScKIHBrZ25hbWU9aW5jbHVkZS13aGF0LXlvdS11 c2UKLXZlcnNpb249MC4xNgordmVyc2lvbj0wLjE4CiByZXZpc2lvbj0xCiB3cmtzcmM9IiR7cGtn bmFtZX0iCiBidWlsZF9zdHlsZT1jbWFrZQpAQCAtMTIsNyArMTIsNyBAQCBtYWludGFpbmVyPSJM ZWFoIE5ldWtpcmNoZW4gPGxlYWhAdnV4dS5vcmc+IgogbGljZW5zZT0iTkNTQSIKIGhvbWVwYWdl PSJodHRwczovL2luY2x1ZGUtd2hhdC15b3UtdXNlLm9yZy8iCiBkaXN0ZmlsZXM9Imh0dHBzOi8v aW5jbHVkZS13aGF0LXlvdS11c2Uub3JnL2Rvd25sb2Fkcy8ke3BrZ25hbWV9LSR7dmVyc2lvbn0u c3JjLnRhci5neiIKLWNoZWNrc3VtPThkNmZjOWIyNTUzNDNiYzFlNWVjNDU5ZTM5NTEyZGYxZDUx YzYwZTAzNTYyOTg1ZTAwNzYwMzYxMTlmZjVhMWMKK2NoZWNrc3VtPTkxMDJmYzg0MTkyOTQ3NTdk Zjg2YTg5Y2U2ZWMzMDVmOGQ5MGE4MThkMWYyNTk4YTEzOWQxNWViMTg5NGI4ZjMKIHB5dGhvbl92 ZXJzaW9uPTMKIAogcG9zdF9pbnN0YWxsKCkgewoKRnJvbSBmMWMyNGRkOTRmMjA3YzEyZjc3MDg5 M2I5ZDhhZjdkZGUyNGFmNzMyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBwcmV6IDxw cmV6QG5hdGlvbmFsLnNoaXRwb3N0aW5nLmFnZW5jeT4KRGF0ZTogTW9uLCAyIE1heSAyMDIyIDIx OjE4OjI0ICswMjAwClN1YmplY3Q6IFtQQVRDSCAyNC8yOV0gU1BJUlYtTExWTS1UcmFuc2xhdG9y OiB1cGRhdGUgdG8gMTQuMC4wLgoKLS0tCiBjb21tb24vc2hsaWJzICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAxICsKIHNyY3BrZ3MvU1BJUlYtTExWTS1UcmFuc2xhdG9yL3RlbXBsYXRlIHwg MTEgKysrKysrLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA1IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbW1vbi9zaGxpYnMgYi9jb21tb24vc2hsaWJzCmluZGV4 IDRiMzdhOWY3Y2I0NC4uNjRlYWRkMDNjZmNiIDEwMDY0NAotLS0gYS9jb21tb24vc2hsaWJzCisr KyBiL2NvbW1vbi9zaGxpYnMKQEAgLTk4NCw2ICs5ODQsNyBAQCBsaWJjbGFuZy1jcHAuc28uMTQg bGliY2xhbmctY3BwLTE0LjAuM18xCiBsaWJMTFZNLTExLnNvIGxpYmxsdm0xMS0xMS4wLjBfMQog bGliTExWTS0xMi5zbyBsaWJsbHZtMTItMTIuMC4wXzEKIGxpYkxMVk0tMTQuc28gbGlibGx2bTE0 LTE0LjAuM18xCitsaWJMTFZNU1BJUlZMaWIuc28uMTQgU1BJUlYtTExWTS1UcmFuc2xhdG9yLTE0 LjAuMF8xCiBsaWJpc29mcy5zby42IGxpYmlzb2ZzLTAuNi4yNF8xCiBsaWJtcGFjay5zby4wIGxp Ym1wYWNrLTEuMC41XzEKIGxpYkdlb0lQLnNvLjEgbGliZ2VvaXAtMS40LjhfMQpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9TUElSVi1MTFZNLVRyYW5zbGF0b3IvdGVtcGxhdGUgYi9zcmNwa2dzL1NQSVJW LUxMVk0tVHJhbnNsYXRvci90ZW1wbGF0ZQppbmRleCAyNTA0Y2FiZWQzNjcuLjIyNzdkMDYyZDk5 MiAxMDA2NDQKLS0tIGEvc3JjcGtncy9TUElSVi1MTFZNLVRyYW5zbGF0b3IvdGVtcGxhdGUKKysr IGIvc3JjcGtncy9TUElSVi1MTFZNLVRyYW5zbGF0b3IvdGVtcGxhdGUKQEAgLTEsMTkgKzEsMjAg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ1NQSVJWLUxMVk0tVHJhbnNsYXRvcicKIHBrZ25hbWU9 U1BJUlYtTExWTS1UcmFuc2xhdG9yCi12ZXJzaW9uPTEyLjAuMAordmVyc2lvbj0xNC4wLjAKIHJl dmlzaW9uPTEKIGJ1aWxkX3N0eWxlPWNtYWtlCiBtYWtlX2J1aWxkX2FyZ3M9Imxsdm0tc3BpcnYi Ci1jb25maWd1cmVfYXJncz0iLVduby1kZXYgLURMTFZNX0xJTktfTExWTV9EWUxJQj1PTiAtRENN QUtFX1NLSVBfUlBBVEg9T04KLSAtRExMVk1fU1BJUlZfSU5DTFVERV9URVNUUz1PRkYgLURCVUlM RF9TSEFSRURfTElCUz1PTiIKK2NvbmZpZ3VyZV9hcmdzPSItREJVSUxEX1NIQVJFRF9MSUJTPU9O IC1EQ01BS0VfQlVJTERfVFlQRT1SZWxlYXNlCisgLURDTUFLRV9QT1NJVElPTl9JTkRFUEVOREVO VF9DT0RFPU9OIC1EQ01BS0VfU0tJUF9SUEFUSD1PTiAtRExMVk1fSU5DTFVERV9URVNUUz1PRkYK KyAtRExMVk1fTElOS19MTFZNX0RZTElCPU9OIC1ETExWTV9FWFRFUk5BTF9MSVQ9L3Vzci9iaW4v bGl0IC1Xbm8tZGV2IC1ETExWTV9FWFRFUk5BTF9TUElSVl9IRUFERVJTX1NPVVJDRV9ESVI9L3Vz ci9pbmNsdWRlL3NwaXJ2LyAiCiBob3N0bWFrZWRlcGVuZHM9ImNsYW5nIGNsYW5nLXRvb2xzLWV4 dHJhIGxsdm0iCi1tYWtlZGVwZW5kcz0ibGx2bSIKK21ha2VkZXBlbmRzPSJsbHZtIFNQSVJWLUhl YWRlcnMiCiBzaG9ydF9kZXNjPSJBUEkgYW5kIGNvbW1hbmRzIGZvciBwcm9jZXNzaW5nIFNQSVIt ViBtb2R1bGVzIgogbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIK IGxpY2Vuc2U9Ik5DU0EiCiBob21lcGFnZT0iaHR0cHM6Ly9naXRodWIuY29tL0tocm9ub3NHcm91 cC9TUElSVi1MTFZNLVRyYW5zbGF0b3IiCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9L aHJvbm9zR3JvdXAvJHtwa2duYW1lfS9hcmNoaXZlL3JlZnMvdGFncy92JHt2ZXJzaW9ufS50YXIu Z3oiCi1jaGVja3N1bT02ZTRmYWQwNDIwM2YyNWZjZGU0YzMwOGM1M2U5ZjU5YmQwNWEzOTA5Nzg5 OTJkYjMyMTJkNGI2M2FmZjYyMTA4CitjaGVja3N1bT0xYWZjNTJiYjRlMzlhZWI5YjViNjkzMjRh MjAxYzgxYmQ5ODYzNjRmMzQ3YjU1OTk5NWVmZjZmZDZmMDEzMzE4CiBtYWtlX2NoZWNrPW5vCiAK IHBvc3RfaW5zdGFsbCgpIHsKCkZyb20gNmEwNTNmMDc3NDhmMWZiYTNlYjI5MjU4MTdhZmYwNzNh MzE3OWU4ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogcHJleiA8cHJlekBuYXRpb25h bC5zaGl0cG9zdGluZy5hZ2VuY3k+CkRhdGU6IE1vbiwgMiBNYXkgMjAyMiAyMToxNzoyOSArMDIw MApTdWJqZWN0OiBbUEFUQ0ggMjUvMjldIFNQSVJWLUhlYWRlcnM6IHVwZGF0ZSB0byAxLjMuMjEx LjAuCgotLS0KIHNyY3BrZ3MvU1BJUlYtSGVhZGVycy90ZW1wbGF0ZSB8IDggKysrKystLS0KIDEg ZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9TUElSVi1IZWFkZXJzL3RlbXBsYXRlIGIvc3JjcGtncy9TUElSVi1IZWFkZXJz L3RlbXBsYXRlCmluZGV4IDVkY2Y0NTdjMDRjNy4uY2U4Mjg4MTc0ZTQ4IDEwMDY0NAotLS0gYS9z cmNwa2dzL1NQSVJWLUhlYWRlcnMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9TUElSVi1IZWFkZXJz L3RlbXBsYXRlCkBAIC0xLDExICsxLDEzIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdTUElSVi1I ZWFkZXJzJwogcGtnbmFtZT1TUElSVi1IZWFkZXJzCi12ZXJzaW9uPTEuNS40LnJheXRyYWNpbmcu Zml4ZWQKK3ZlcnNpb249MS4zLjIxMS4wCiByZXZpc2lvbj0xCityZXZlcnRzPSIxLjUuNC5yYXl0 cmFjaW5nLmZpeGVkIgord3Jrc3JjPSR7cGtnbmFtZX0tc2RrLSR7dmVyc2lvbn0KIGJ1aWxkX3N0 eWxlPWNtYWtlCiBzaG9ydF9kZXNjPSJNYWNoaW5lLXJlYWRhYmxlIGZpbGVzIGZvciB0aGUgU1BJ Ui1WIFJlZ2lzdHJ5IgogbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3Jn PiIKIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly9naXRodWIu Y29tL0tocm9ub3NHcm91cC9TUElSVi1IZWFkZXJzIgotZGlzdGZpbGVzPSJodHRwczovL2dpdGh1 Yi5jb20vS2hyb25vc0dyb3VwL1NQSVJWLUhlYWRlcnMvYXJjaGl2ZS8ke3ZlcnNpb259LnRhci5n eiIKLWNoZWNrc3VtPWRmMmFkMjUyMGJlNGQ5NWE0NzlmYTI0ODkyMTA2NTg4NWJiZjQzNWE2NTgz NDlhN2ZjMTY0YWQ3YjI2YjY4YzYKK2Rpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL0tocm9u b3NHcm91cC9TUElSVi1IZWFkZXJzL2FyY2hpdmUvc2RrLSR7dmVyc2lvbn0udGFyLmd6IgorY2hl Y2tzdW09MzBhNzhlNjFiZDgxMmM3NWUwOWZkYzdhMzE5YWYyMDZiMTA0NDUzNjMyNmJjM2U4NWZl YTgxODM3NmExMjU2OAoKRnJvbSA1MDlmMDI2MTQ0ODMwZjEyZThmOTU0ODdhOTkyZWQ4Y2RkYjIw MDY2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBwcmV6IDxwcmV6QG5hdGlvbmFsLnNo aXRwb3N0aW5nLmFnZW5jeT4KRGF0ZTogTW9uLCAyIE1heSAyMDIyIDIxOjM1OjQzICswMjAwClN1 YmplY3Q6IFtQQVRDSCAyNi8yOV0gaXNwYzogdXBkYXRlIHRvIDEuMTcuMC4KCi0tLQogLi4uL2lz cGMvcGF0Y2hlcy9jbWFrZS1idWlsZC10eXBlLW5vbmUucGF0Y2ggIHwgICAxOCAtCiBzcmNwa2dz L2lzcGMvcGF0Y2hlcy9sbHZtMTItMDAxLnBhdGNoICAgICAgICAgfCAgIDU3IC0KIHNyY3BrZ3Mv aXNwYy9wYXRjaGVzL2xsdm0xMi0wMDIucGF0Y2ggICAgICAgICB8ICA5MjMgLS0tLS0tLS0KIHNy Y3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDMucGF0Y2ggICAgICAgICB8IDE1MDQgLS0tLS0t LS0tLS0tCiBzcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA0LnBhdGNoICAgICAgICAgfCAg IDM0IC0KIHNyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDUucGF0Y2ggICAgICAgICB8ICAz NzIgLS0tCiBzcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA2LnBhdGNoICAgICAgICAgfCAg MTI2IC0KIHNyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDcucGF0Y2ggICAgICAgICB8ICAx NjAgLS0KIHNyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDgucGF0Y2ggICAgICAgICB8ICAx NDkgLS0KIHNyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDkucGF0Y2ggICAgICAgICB8IDIx MDkgLS0tLS0tLS0tLS0tLS0tLS0KIHNyY3BrZ3MvaXNwYy90ZW1wbGF0ZSAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgIDYgKy0KIDExIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwg NTQ1NSBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2lzcGMvcGF0Y2hl cy9jbWFrZS1idWlsZC10eXBlLW5vbmUucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dz L2lzcGMvcGF0Y2hlcy9sbHZtMTItMDAxLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtn cy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwMi5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDMucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNw a2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA0LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3Jj cGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwNS5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNy Y3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDYucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA3LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQg c3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwOC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0 IHNyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDkucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNw a2dzL2lzcGMvcGF0Y2hlcy9jbWFrZS1idWlsZC10eXBlLW5vbmUucGF0Y2ggYi9zcmNwa2dzL2lz cGMvcGF0Y2hlcy9jbWFrZS1idWlsZC10eXBlLW5vbmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDQxMWUzNTNjNzMxNC4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvaXNw Yy9wYXRjaGVzL2NtYWtlLWJ1aWxkLXR5cGUtbm9uZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDE4ICswLDAgQEAKLUluZGV4OiBpc3BjLTEuMTUuMC9DTWFrZUxpc3RzLnR4dAotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGlzcGMtMS4xNS4wLm9yaWcvQ01ha2VMaXN0cy50eHQKLSsrKyBpc3BjLTEuMTUuMC9D TWFrZUxpc3RzLnR4dAotQEAgLTE1NywxMyArMTU3LDYgQEAgc2V0KE9VVFBVVF9SRUxFQVNFIFJl bGVhc2UvYmluKQotIHNldChDTUFLRV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUlkgJHtDTUFLRV9D VVJSRU5UX0JJTkFSWV9ESVJ9L2JpbiApCi0gCi0gaWYoQ01BS0VfQlVJTERfVFlQRSkKLS0gICAg IyBWYWxpZGF0ZSBidWlsZCB0eXBlCi0tICAgIHNldChDT05GSUdVUkFUSU9OX1RZUEVTICJEZWJ1 ZztSZWxlYXNlO1JlbFdpdGhEZWJJbmZvIikKLS0KLS0gICAgc3RyaW5nKEZJTkQgIiR7Q09ORklH VVJBVElPTl9UWVBFU30iICIke0NNQUtFX0JVSUxEX1RZUEV9IiBNQVRDSEVEX0NPTkZJRykKLS0g ICAgaWYgKCR7TUFUQ0hFRF9DT05GSUd9IEVRVUFMIC0xKQotLSAgICAgICAgIG1lc3NhZ2UoRkFU QUxfRVJST1IgIkNNQUtFX0JVSUxEX1RZUEUgKCR7Q01BS0VfQlVJTERfVFlQRX0pIGFsbG93cyBv bmx5IHRoZSBmb2xsb3dpbmcgdmFsdWVzOiAke0NPTkZJR1VSQVRJT05fVFlQRVN9IikKLS0gICAg ZW5kaWYoKQotIGVsc2UoTk9UIENNQUtFX0JVSUxEX1RZUEUpCi0gICAgIHNldChDTUFLRV9CVUlM RF9UWVBFICJSZWxlYXNlIikKLSAgICAgbWVzc2FnZShTVEFUVVMgIkJ1aWxkIHR5cGUgbm90IHNw ZWNpZmllZDogVXNlIFJlbGVhc2UgYnkgZGVmYXVsdC4iKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9p c3BjL3BhdGNoZXMvbGx2bTEyLTAwMS5wYXRjaCBiL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0x Mi0wMDEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmMmQzZjVhNDA5ZS4u MDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDEucGF0Y2gK KysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1Gcm9tIDFjMGY4OWRjY2I3NzRmMjE2Yzdm NmU3NmE5OWVlOTA3YTFlNjQxY2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEbWl0 cnkgQmFib2tpbiA8ZG1pdHJ5LnkuYmFib2tpbkBpbnRlbC5jb20+Ci1EYXRlOiBUdWUsIDIyIERl YyAyMDIwIDE3OjAzOjU5IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCB0byB3b3JrIHdpdGgg TExWTSB0cnVuayBhZnRlciBsbHZtL2xsdm0tcHJvamVjdEA0MWMzYjI3MTMKLQotLS0tCi0gc3Jj L2N0eC5jcHAgfCAxOCArKysrKysrKysrKystLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTIgaW5z ZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jdHguY3BwIGIv c3JjL2N0eC5jcHAKLWluZGV4IDZmYmI4YjljZi4uOTc3ZTlkMjIyIDEwMDY0NAotLS0tIGEvc3Jj L2N0eC5jcHAKLSsrKyBiL3NyYy9jdHguY3BwCi1AQCAtMTQ3MywxMSArMTQ3MywxNSBAQCB2b2lk IEZ1bmN0aW9uRW1pdENvbnRleHQ6OkFkZERlYnVnUG9zKGxsdm06OlZhbHVlICp2YWx1ZSwgY29u c3QgU291cmNlUG9zICpwb3MsCi0gICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0gbGx2bTo6 ZHluX2Nhc3Q8bGx2bTo6SW5zdHJ1Y3Rpb24+KHZhbHVlKTsKLSAgICAgaWYgKGluc3QgIT0gTlVM TCAmJiBtLT5kaUJ1aWxkZXIpIHsKLSAgICAgICAgIFNvdXJjZVBvcyBwID0gcG9zID8gKnBvcyA6 IGN1cnJlbnRQb3M7Ci0tICAgICAgICBpZiAocC5maXJzdF9saW5lICE9IDApCi0rICAgICAgICBp ZiAocC5maXJzdF9saW5lICE9IDApIHsKLSAgICAgICAgICAgICAvLyBJZiBmaXJzdF9saW5lID09 IDAsIHRoZW4gd2UncmUgaW4gdGhlIG1pZGRsZSBvZiBzZXR0aW5nIHVwCi0gICAgICAgICAgICAg Ly8gdGhlIHN0YW5kYXJkIGxpYnJhcnkgb3IgdGhlIGxpa2U7IGRvbid0IGFkZCBkZWJ1ZyBwb3Np dGlvbnMKLSAgICAgICAgICAgICAvLyBmb3IgdGhvc2UgZnVuY3Rpb25zCi0tICAgICAgICAgICAg aW5zdC0+c2V0RGVidWdMb2MobGx2bTo6RGVidWdMb2M6OmdldChwLmZpcnN0X2xpbmUsIHAuZmly c3RfY29sdW1uLCBzY29wZSA/IHNjb3BlIDogR2V0RElTY29wZSgpKSk7Ci0rICAgICAgICAgICAg c2NvcGUgPSBzY29wZSA/IHNjb3BlIDogR2V0RElTY29wZSgpOwotKyAgICAgICAgICAgIGxsdm06 OkRlYnVnTG9jIGRpTG9jID0KLSsgICAgICAgICAgICAgICAgbGx2bTo6RElMb2NhdGlvbjo6Z2V0 KHNjb3BlLT5nZXRDb250ZXh0KCksIHAuZmlyc3RfbGluZSwgcC5maXJzdF9jb2x1bW4sIHNjb3Bl LCBudWxscHRyLCBmYWxzZSk7Ci0rICAgICAgICAgICAgaW5zdC0+c2V0RGVidWdMb2MoZGlMb2Mp OwotKyAgICAgICAgfQotICAgICB9Ci0gfQotIAotQEAgLTE1MTgsOSArMTUyMiwxMCBAQCB2b2lk IEZ1bmN0aW9uRW1pdENvbnRleHQ6OkVtaXRWYXJpYWJsZURlYnVnSW5mbyhTeW1ib2wgKnN5bSkg ewotICAgICBsbHZtOjpESUxvY2FsVmFyaWFibGUgKnZhciA9IG0tPmRpQnVpbGRlci0+Y3JlYXRl QXV0b1ZhcmlhYmxlKAotICAgICAgICAgc2NvcGUsIHN5bS0+bmFtZSwgc3ltLT5wb3MuR2V0RElG aWxlKCksIHN5bS0+cG9zLmZpcnN0X2xpbmUsIGRpVHlwZSwgdHJ1ZSAvKiBwcmVzZXJ2ZSB0aHJv dWdoIG9wdHMgKi8pOwotIAotKyAgICBsbHZtOjpEZWJ1Z0xvYyBkaUxvYyA9Ci0rICAgICAgICBs bHZtOjpESUxvY2F0aW9uOjpnZXQoc2NvcGUtPmdldENvbnRleHQoKSwgc3ltLT5wb3MuZmlyc3Rf bGluZSwgc3ltLT5wb3MuZmlyc3RfY29sdW1uLCBzY29wZSwgbnVsbHB0ciwgZmFsc2UpOwotICAg ICBsbHZtOjpJbnN0cnVjdGlvbiAqZGVjbGFyZUluc3QgPQotLSAgICAgICAgbS0+ZGlCdWlsZGVy LT5pbnNlcnREZWNsYXJlKHN5bS0+c3RvcmFnZVB0ciwgdmFyLCBtLT5kaUJ1aWxkZXItPmNyZWF0 ZUV4cHJlc3Npb24oKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZt OjpEZWJ1Z0xvYzo6Z2V0KHN5bS0+cG9zLmZpcnN0X2xpbmUsIHN5bS0+cG9zLmZpcnN0X2NvbHVt biwgc2NvcGUpLCBiYmxvY2spOwotKyAgICAgICAgbS0+ZGlCdWlsZGVyLT5pbnNlcnREZWNsYXJl KHN5bS0+c3RvcmFnZVB0ciwgdmFyLCBtLT5kaUJ1aWxkZXItPmNyZWF0ZUV4cHJlc3Npb24oKSwg ZGlMb2MsIGJibG9jayk7Ci0gICAgIEFkZERlYnVnUG9zKGRlY2xhcmVJbnN0LCAmc3ltLT5wb3Ms IHNjb3BlKTsKLSB9Ci0gCi1AQCAtMTUzNSw5ICsxNTQwLDEwIEBAIHZvaWQgRnVuY3Rpb25FbWl0 Q29udGV4dDo6RW1pdEZ1bmN0aW9uUGFyYW1ldGVyRGVidWdJbmZvKFN5bWJvbCAqc3ltLCBpbnQg YXJnTnVtCi0gICAgICAgICBtLT5kaUJ1aWxkZXItPmNyZWF0ZVBhcmFtZXRlclZhcmlhYmxlKHNj b3BlLCBzeW0tPm5hbWUsIGFyZ051bSArIDEsIHN5bS0+cG9zLkdldERJRmlsZSgpLCBzeW0tPnBv cy5maXJzdF9saW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkaVR5cGUsIHRydWUgLyogcHJlc2VydmUgdGhyb3VnaCBvcHRzICovLCBmbGFncyk7Ci0g Ci0rICAgIGxsdm06OkRlYnVnTG9jIGRpTG9jID0KLSsgICAgICAgIGxsdm06OkRJTG9jYXRpb246 OmdldChzY29wZS0+Z2V0Q29udGV4dCgpLCBzeW0tPnBvcy5maXJzdF9saW5lLCBzeW0tPnBvcy5m aXJzdF9jb2x1bW4sIHNjb3BlLCBudWxscHRyLCBmYWxzZSk7Ci0gICAgIGxsdm06Okluc3RydWN0 aW9uICpkZWNsYXJlSW5zdCA9Ci0tICAgICAgICBtLT5kaUJ1aWxkZXItPmluc2VydERlY2xhcmUo c3ltLT5zdG9yYWdlUHRyLCB2YXIsIG0tPmRpQnVpbGRlci0+Y3JlYXRlRXhwcmVzc2lvbigpLAot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OkRlYnVnTG9jOjpnZXQo c3ltLT5wb3MuZmlyc3RfbGluZSwgc3ltLT5wb3MuZmlyc3RfY29sdW1uLCBzY29wZSksIGJibG9j ayk7Ci0rICAgICAgICBtLT5kaUJ1aWxkZXItPmluc2VydERlY2xhcmUoc3ltLT5zdG9yYWdlUHRy LCB2YXIsIG0tPmRpQnVpbGRlci0+Y3JlYXRlRXhwcmVzc2lvbigpLCBkaUxvYywgYmJsb2NrKTsK LSAgICAgQWRkRGVidWdQb3MoZGVjbGFyZUluc3QsICZzeW0tPnBvcywgc2NvcGUpOwotIH0KLSAK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDIucGF0Y2ggYi9zcmNw a2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDAyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwOTAzZjMwZGExMGQuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2lzcGMvcGF0 Y2hlcy9sbHZtMTItMDAyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTIzICswLDAgQEAKLUZy b20gMDU5N2E3OWQwODRjMDE0NzgwMTM2ZGE5MDZhZmUyMWQxNWU5ODJjYiBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKLUZyb206IERlZXBha1JhamVuZHJha3VtYXJhbiA8ZGVlcGFrLnJhamVuZHJh a3VtYXJhbkBpbnRlbC5jb20+Ci1EYXRlOiBUdWUsIDUgSmFuIDIwMjEgMTM6NTM6MzAgLTA4MDAK LVN1YmplY3Q6IFtQQVRDSF0gUmVtb3ZlIExMVk0gOC4wIGFuZCBMTFZNIDkuMC4gKCMxOTY2KQot Ci0tLS0KLSAuYXBwdmV5b3IueW1sICAgICAgICAgICAgICAgICAgICAgICAgfCAgMyAtLQotIC50 cmF2aXMueW1sICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA3IC0tLQotIENNYWtlTGlzdHMu dHh0ICAgICAgICAgICAgICAgICAgICAgICB8IDEyICsrLS0tLQotIHNyYy9hc3QuY3BwICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICA0IC0tCi0gc3JjL2N0eC5jcHAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgMzAgLS0tLS0tLS0tLS0tLQotIHNyYy9nZW4vR2xvYmFsc0xvY2FsaXphdGlv bi5jcHAgICAgICB8ICA0IC0tCi0gc3JjL2lzcGMuY3BwICAgICAgICAgICAgICAgICAgICAgICAg IHwgMjAgLS0tLS0tLS0tCi0gc3JjL2lzcGMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg IDMgKy0KLSBzcmMvaXNwY192ZXJzaW9uLmggICAgICAgICAgICAgICAgICAgfCAgNCArLQotIHNy Yy9tYWluLmNwcCAgICAgICAgICAgICAgICAgICAgICAgICB8IDEzIC0tLS0tLQotIHNyYy9tb2R1 bGUuY3BwICAgICAgICAgICAgICAgICAgICAgICB8IDI3IC0tLS0tLS0tLS0tLQotIHNyYy9tb2R1 bGUuaCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyIC0KLSBzcmMvb3B0LmNwcCAgICAgICAg ICAgICAgICAgICAgICAgICAgfCA2NCArKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gc3Jj L3R5cGUuY3BwICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAgKystLS0KLSB0ZXN0cy9saXQt dGVzdHMvMTc3MS5pc3BjICAgICAgICAgICAgfCAgMSAtCi0gdGVzdHMvbGl0LXRlc3RzLzE4NDQu aXNwYyAgICAgICAgICAgIHwgIDMgLS0KLSB0ZXN0cy9saXQtdGVzdHMvMTkyNi5pc3BjICAgICAg ICAgICAgfCAgMiAtCi0gdGVzdHMvbGl0LXRlc3RzL2NwdXNfeDg2LmlzcGMgICAgICAgIHwgIDIg KwotIHRlc3RzL2xpdC10ZXN0cy9jcHVzX3g4Nl9sbHZtMTAuaXNwYyB8IDExIC0tLS0tCi0gdGVz dHMvbGl0LXRlc3RzL2xpdC5jZmcgICAgICAgICAgICAgIHwgIDUgLS0tCi0gMjAgZmlsZXMgY2hh bmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMjEzIGRlbGV0aW9ucygtKQotIGRlbGV0ZSBtb2RlIDEw MDY0NCB0ZXN0cy9saXQtdGVzdHMvY3B1c194ODZfbGx2bTEwLmlzcGMKLQotZGlmZiAtLWdpdCBh Ly5hcHB2ZXlvci55bWwgYi8uYXBwdmV5b3IueW1sCi1pbmRleCA0NTFhN2IzZTAuLjc5NDVjY2Ey YSAxMDA2NDQKLS0tLSBhLy5hcHB2ZXlvci55bWwKLSsrKyBiLy5hcHB2ZXlvci55bWwKLUBAIC00 MSw4ICs0MSw2IEBAIGVudmlyb25tZW50OgotICAgICAgIExMVk1fVkVSU0lPTjogbGF0ZXN0Ci0g ICAgIC0gQVBQVkVZT1JfQlVJTERfV09SS0VSX0lNQUdFOiBWaXN1YWwgU3R1ZGlvIDIwMTkKLSAg ICAgICBMTFZNX1ZFUlNJT046IDEwLjAKLS0gICAgLSBBUFBWRVlPUl9CVUlMRF9XT1JLRVJfSU1B R0U6IFZpc3VhbCBTdHVkaW8gMjAxOQotLSAgICAgIExMVk1fVkVSU0lPTjogOS4wCi0gCi0gZm9y OgotIC0KLUBAIC02Miw3ICs2MCw2IEBAIGZvcjoKLSAgICAgICAgIGlmICIlQVBQVkVZT1JfQlVJ TERfV09SS0VSX0lNQUdFJSI9PSJWaXN1YWwgU3R1ZGlvIDIwMTkiICggKHNldCBnZW5lcmF0b3I9 IlZpc3VhbCBTdHVkaW8gMTYiKSAmIChzZXQgdnN2ZXJzaW9uPTIwMTkpKQotICAgICAgICAgc2V0 IExMVk1fVEFSPWxsdm0tMTEuMC4wLXdpbi52czIwMTktUmVsZWFzZStBc3NlcnRzLXg4Ni5hcm0u d2FzbS43egotICAgICAgICAgaWYgIiVMTFZNX1ZFUlNJT04lIj09IjEwLjAiIChzZXQgTExWTV9U QVI9bGx2bS0xMC4wLjEtd2luLnZzMjAxOS1SZWxlYXNlK0Fzc2VydHMteDg2LmFybS53YXNtLnpp cCkKLS0gICAgICAgIGlmICIlTExWTV9WRVJTSU9OJSI9PSI5LjAiIChzZXQgTExWTV9UQVI9bGx2 bS05LjAuMS13aW4udnMyMDE3LVJlbGVhc2UrQXNzZXJ0cy14ODYuYXJtLndhc20uemlwKQotICAg aW5zdGFsbDoKLSAgICAgLSBwczogY2hvY28gaW5zdGFsbCAtLW5vLXByb2dyZXNzIHdpbmZsZXhi aXNvbjMgd2dldCA3emlwCi0gICAgIC0gY21kOiB8LQotZGlmZiAtLWdpdCBhLy50cmF2aXMueW1s IGIvLnRyYXZpcy55bWwKLWluZGV4IDJlOTYwMTdhNi4uM2E2Yjg1MjY0IDEwMDY0NAotLS0tIGEv LnRyYXZpcy55bWwKLSsrKyBiLy50cmF2aXMueW1sCi1AQCAtMTA4LDEzICsxMDgsNiBAQCBqb2Jz OgotICAgICAgICAgLSBMTFZNX1RBUj1sbHZtLTEwLjAuMS11YnVudHUxNi4wNC1SZWxlYXNlK0Fz c2VydHMteDg2LmFybS53YXNtLnRhci54egotICAgICAgICAgLSBMTFZNX1JFUE89aHR0cHM6Ly9n aXRodWIuY29tL2RiYWJva2luL2xsdm0tcHJvamVjdAotICAgICAgICAgLSBJU1BDX0hPTUU9JFRS QVZJU19CVUlMRF9ESVIKLS0gICAgIyBMTFZNIDkuMCArIFVidW50dSAxNi4wNDogYnVpbGQsIGxp dCB0ZXN0cywgZXhhbXBsZXMgKGJ1aWxkICsgcnVuKSwgYmVuY2htYXJrcyAoYnVpbGQgKyB0cmlh bCBydW4pCi0tICAgIC0gPDw6ICpteV90YWcKLS0gICAgICBlbnY6Ci0tICAgICAgICAtIExMVk1f VkVSU0lPTj05LjAgT1M9VWJ1bnR1MTYuMDQKLS0gICAgICAgIC0gTExWTV9UQVI9bGx2bS05LjAu MS11YnVudHUxNi4wNC1SZWxlYXNlK0Fzc2VydHMteDg2LmFybS53YXNtLnRhci54egotLSAgICAg ICAgLSBMTFZNX1JFUE89aHR0cHM6Ly9naXRodWIuY29tL2RiYWJva2luL2xsdm0tcHJvamVjdAot LSAgICAgICAgLSBJU1BDX0hPTUU9JFRSQVZJU19CVUlMRF9ESVIKLSAgICAgIyBXQVNNIGVuYWJs ZWQgYnVpbGQKLSAgICAgIyBMTFZNIDExLjAgKyBVYnVudHUgMTYuMDQ6IGJ1aWxkLCBsaXQgdGVz dHMsIGV4YW1wbGVzIChidWlsZCksIGJlbmNobWFya3MgKGJ1aWxkICsgdHJpYWwgcnVuKQotICAg ICAtIDw8OiAqbXlfdGFnCi1kaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3Rz LnR4dAotaW5kZXggNWZhODYzZmNmLi5hNmIzZWQyNTEgMTAwNjQ0Ci0tLS0gYS9DTWFrZUxpc3Rz LnR4dAotKysrIGIvQ01ha2VMaXN0cy50eHQKLUBAIC0yNDEsMTAgKzI0MSw4IEBAIGlmIChYODZf RU5BQkxFRCkKLSAgICAgICAgIGF2eDItaTh4MzIgYXZ4Mi1pMTZ4MTYKLSAgICAgICAgIGF2eDIt aTMyeDQgYXZ4Mi1pMzJ4OCBhdngyLWkzMngxNiBhdngyLWk2NHg0Ci0gICAgICAgICBhdng1MTJr bmwtaTMyeDE2Ci0tICAgICAgICBhdng1MTJza3gtaTMyeDE2IGF2eDUxMnNreC1pMzJ4OCkKLS0g ICAgaWYgKCR7TExWTV9WRVJTSU9OX05VTUJFUn0gVkVSU0lPTl9HUkVBVEVSX0VRVUFMICIxMC4w LjAiKQotLSAgICAgICAgbGlzdChBUFBFTkQgSVNQQ19UQVJHRVRTIGF2eDUxMnNreC1pOHg2NCBh dng1MTJza3gtaTE2eDMyKQotLSAgICBlbmRpZigpCi0rICAgICAgICBhdng1MTJza3gtaTMyeDE2 IGF2eDUxMnNreC1pMzJ4OAotKyAgICAgICAgYXZ4NTEyc2t4LWk4eDY0IGF2eDUxMnNreC1pMTZ4 MzIpCi0gZW5kaWYoKQotIGlmIChBUk1fRU5BQkxFRCkKLSAgICAgbGlzdChBUFBFTkQgSVNQQ19U QVJHRVRTIG5lb24taTh4MTYgbmVvbi1pMTZ4OCBuZW9uLWkzMng0IG5lb24taTMyeDgpCi1AQCAt MjU5LDExICsyNTcsNyBAQCBpZiAoV0FTTV9FTkFCTEVEKQotIGVuZGlmKCkKLSAKLSBzZXQoQ0xB TkdfTElCUkFSWV9MSVNUIGNsYW5nRnJvbnRlbmQgY2xhbmdEcml2ZXIgY2xhbmdTZXJpYWxpemF0 aW9uIGNsYW5nUGFyc2UgY2xhbmdTZW1hIGNsYW5nQW5hbHlzaXMgY2xhbmdBU1QgY2xhbmdCYXNp YyBjbGFuZ0VkaXQgY2xhbmdMZXgpCi0tc2V0KExMVk1fQ09NUE9ORU5UUyBlbmdpbmUgaXBvIGJp dHJlYWRlciBiaXR3cml0ZXIgaW5zdHJ1bWVudGF0aW9uIGxpbmtlciBvcHRpb24pCi0tCi0taWYg KCR7TExWTV9WRVJTSU9OX05VTUJFUn0gVkVSU0lPTl9HUkVBVEVSX0VRVUFMICIxMC4wLjAiKQot LSAgICBsaXN0KEFQUEVORCBMTFZNX0NPTVBPTkVOVFMgZnJvbnRlbmRvcGVubXApCi0tZW5kaWYo KQotK3NldChMTFZNX0NPTVBPTkVOVFMgZW5naW5lIGlwbyBiaXRyZWFkZXIgYml0d3JpdGVyIGlu c3RydW1lbnRhdGlvbiBsaW5rZXIgb3B0aW9uIGZyb250ZW5kb3Blbm1wKQotIAotIGlmIChYODZf RU5BQkxFRCkKLSAgICAgbGlzdChBUFBFTkQgTExWTV9DT01QT05FTlRTIHg4NikKLWRpZmYgLS1n aXQgYS9zcmMvYXN0LmNwcCBiL3NyYy9hc3QuY3BwCi1pbmRleCAyMGY3NWEyOWMuLjVhNDNjNDg1 NCAxMDA2NDQKLS0tLSBhL3NyYy9hc3QuY3BwCi0rKysgYi9zcmMvYXN0LmNwcAotQEAgLTQ0LDkg KzQ0LDcgQEAKLSAjaW5jbHVkZSAic3ltLmgiCi0gI2luY2x1ZGUgInV0aWwuaCIKLSAKLS0jaWYg SVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAjaW5jbHVkZSA8bGx2bS9TdXBw b3J0L1RpbWVQcm9maWxlci5oPgotLSNlbmRpZgotIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotIC8vIEFT VE5vZGUKLSAKLUBAIC02Miw5ICs2MCw3IEBAIHZvaWQgQVNUOjpBZGRGdW5jdGlvbihTeW1ib2wg KnN5bSwgU3RtdCAqY29kZSkgewotIH0KLSAKLSB2b2lkIEFTVDo6R2VuZXJhdGVJUigpIHsKLS0j aWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgbGx2bTo6VGltZVRy YWNlU2NvcGUgVGltZVNjb3BlKCJHZW5lcmF0ZUlSIik7Ci0tI2VuZGlmCi0gICAgIGZvciAodW5z aWduZWQgaW50IGkgPSAwOyBpIDwgZnVuY3Rpb25zLnNpemUoKTsgKytpKQotICAgICAgICAgZnVu Y3Rpb25zW2ldLT5HZW5lcmF0ZUlSKCk7Ci0gfQotZGlmZiAtLWdpdCBhL3NyYy9jdHguY3BwIGIv c3JjL2N0eC5jcHAKLWluZGV4IDk3N2U5ZDIyMi4uNDJjNGVhMDlkIDEwMDY0NAotLS0tIGEvc3Jj L2N0eC5jcHAKLSsrKyBiL3NyYy9jdHguY3BwCi1AQCAtMzA5LDIxICszMDksMTMgQEAgRnVuY3Rp b25FbWl0Q29udGV4dDo6RnVuY3Rpb25FbWl0Q29udGV4dChGdW5jdGlvbiAqZnVuYywgU3ltYm9s ICpmdW5TeW0sIGxsdm06OkYKLSAgICAgICAgICAgICBjaGFyIGJ1ZlsyNTZdOwotICAgICAgICAg ICAgIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJfX29mZl9hbGxfb25fbWFza18lcyIsIGct PnRhcmdldC0+R2V0SVNBU3RyaW5nKCkpOwotIAotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8PSBJ U1BDX0xMVk1fOF8wCi0tICAgICAgICAgICAgbGx2bTo6Q29uc3RhbnQgKm9mZkZ1bmMgPSBtLT5t b2R1bGUtPmdldE9ySW5zZXJ0RnVuY3Rpb24oYnVmLCBMTFZNVHlwZXM6OlZvaWRUeXBlKTsKLS0j ZWxzZSAvLyBMTFZNIDkuMCsKLSAgICAgICAgICAgICBsbHZtOjpGdW5jdGlvbkNhbGxlZSBvZmZG dW5jQ2FsbGVlID0gbS0+bW9kdWxlLT5nZXRPckluc2VydEZ1bmN0aW9uKGJ1ZiwgTExWTVR5cGVz OjpWb2lkVHlwZSk7Ci0gICAgICAgICAgICAgbGx2bTo6Q29uc3RhbnQgKm9mZkZ1bmMgPSBsbHZt OjpjYXN0PGxsdm06OkNvbnN0YW50PihvZmZGdW5jQ2FsbGVlLmdldENhbGxlZSgpKTsKLS0jZW5k aWYKLSAgICAgICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbGx2bTo6aXNhPGxsdm06OkZ1 bmN0aW9uPihvZmZGdW5jKSk7Ci0gICAgICAgICAgICAgbGx2bTo6QmFzaWNCbG9jayAqb2ZmQkIg PSBsbHZtOjpCYXNpY0Jsb2NrOjpDcmVhdGUoKmctPmN0eCwgImVudHJ5IiwgKGxsdm06OkZ1bmN0 aW9uICopb2ZmRnVuYywgMCk7Ci0gICAgICAgICAgICAgbGx2bTo6U3RvcmVJbnN0ICppbnN0ID0g bmV3IGxsdm06OlN0b3JlSW5zdChMTFZNTWFza0FsbE9mZiwgZ2xvYmFsQWxsT25NYXNrUHRyLCBv ZmZCQik7Ci0gICAgICAgICAgICAgaWYgKGctPm9wdC5mb3JjZUFsaWduZWRNZW1vcnkpIHsKLS0j aWYgSVNQQ19MTFZNX1ZFUlNJT04gPD0gSVNQQ19MTFZNXzlfMAotLSAgICAgICAgICAgICAgICBp bnN0LT5zZXRBbGlnbm1lbnQoZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JBbGlnbm1lbnQoKSk7 Ci0tI2Vsc2UgLy8gTExWTSAxMC4wKwotICAgICAgICAgICAgICAgICBpbnN0LT5zZXRBbGlnbm1l bnQobGx2bTo6TWF5YmVBbGlnbihnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvckFsaWdubWVudCgp KS52YWx1ZU9yT25lKCkpOwotLSNlbmRpZgotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBs bHZtOjpSZXR1cm5JbnN0OjpDcmVhdGUoKmctPmN0eCwgb2ZmQkIpOwotICAgICAgICAgfQotQEAg LTIyODgsMTEgKzIyODAsNyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6TG9h ZEluc3QobGx2bTo6VmFsdWUgKnB0ciwgY29uc3QgVHlwZSAqdHlwZSwgYwotICNlbmRpZgotIAot ICAgICBpZiAoZy0+b3B0LmZvcmNlQWxpZ25lZE1lbW9yeSAmJiBsbHZtOjpkeW5fY2FzdDxsbHZt OjpWZWN0b3JUeXBlPihwdC0+Z2V0RWxlbWVudFR5cGUoKSkpIHsKLS0jaWYgSVNQQ19MTFZNX1ZF UlNJT04gPD0gSVNQQ19MTFZNXzlfMAotLSAgICAgICAgaW5zdC0+c2V0QWxpZ25tZW50KGctPnRh cmdldC0+Z2V0TmF0aXZlVmVjdG9yQWxpZ25tZW50KCkpOwotLSNlbHNlIC8vIExMVk0gMTAuMCsK LSAgICAgICAgIGluc3QtPnNldEFsaWdubWVudChsbHZtOjpNYXliZUFsaWduKGctPnRhcmdldC0+ Z2V0TmF0aXZlVmVjdG9yQWxpZ25tZW50KCkpLnZhbHVlT3JPbmUoKSk7Ci0tI2VuZGlmCi0gICAg IH0KLSAKLSAgICAgQWRkRGVidWdQb3MoaW5zdCk7Ci1AQCAtMjQzMSwxMSArMjQxOSw3IEBAIGxs dm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpMb2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRy LCBsbHZtOjpWYWx1ZSAqbWFzaywKLSAgICAgICAgICAgICAgICAgLy8gdnMgdGhlIHByb3BlciBh bGlnbm1lbnQgaW4gcHJhY3RpY2UuKQotICAgICAgICAgICAgICAgICBpbnQgYWxpZ24gPSAxOwot IAotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8PSBJU1BDX0xMVk1fOV8wCi0tICAgICAgICAgICAg ICAgIGluc3QtPnNldEFsaWdubWVudChhbGlnbik7Ci0tI2Vsc2UgLy8gTExWTSAxMC4wKwotICAg ICAgICAgICAgICAgICBpbnN0LT5zZXRBbGlnbm1lbnQobGx2bTo6TWF5YmVBbGlnbihhbGlnbiku dmFsdWVPck9uZSgpKTsKLS0jZW5kaWYKLSAgICAgICAgICAgICB9Ci0gCi0gICAgICAgICAgICAg QWRkRGVidWdQb3MoaW5zdCk7Ci1AQCAtMjY0OSwxMSArMjYzMyw3IEBAIGxsdm06OlZhbHVlICpG dW5jdGlvbkVtaXRDb250ZXh0OjpBbGxvY2FJbnN0KGxsdm06OlR5cGUgKmxsdm1UeXBlLCBjb25z dCBjaGFyICpuCi0gICAgICAgICBhbGlnbiA9IGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yQWxp Z25tZW50KCk7Ci0gCi0gICAgIGlmIChhbGlnbiAhPSAwKSB7Ci0tI2lmIElTUENfTExWTV9WRVJT SU9OIDw9IElTUENfTExWTV85XzAKLS0gICAgICAgIGluc3QtPnNldEFsaWdubWVudChhbGlnbik7 Ci0tI2Vsc2UgLy8gTExWTSAxMC4wKwotICAgICAgICAgaW5zdC0+c2V0QWxpZ25tZW50KGxsdm06 Ok1heWJlQWxpZ24oYWxpZ24pLnZhbHVlT3JPbmUoKSk7Ci0tI2VuZGlmCi0gICAgIH0KLSAgICAg Ly8gRG9uJ3QgYWRkIGRlYnVnZ2luZyBpbmZvIHRvIGFsbG9jYSBpbnN0cnVjdGlvbnMKLSAgICAg cmV0dXJuIGluc3Q7Ci1AQCAtMjkyNiwxMSArMjkwNiw3IEBAIHZvaWQgRnVuY3Rpb25FbWl0Q29u dGV4dDo6U3RvcmVJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VmFsdWUgKnB0ciwgY29u c3QKLSAgICAgbGx2bTo6U3RvcmVJbnN0ICppbnN0ID0gbmV3IGxsdm06OlN0b3JlSW5zdCh2YWx1 ZSwgcHRyLCBiYmxvY2spOwotIAotICAgICBpZiAoZy0+b3B0LmZvcmNlQWxpZ25lZE1lbW9yeSAm JiBsbHZtOjpkeW5fY2FzdDxsbHZtOjpWZWN0b3JUeXBlPihwdC0+Z2V0RWxlbWVudFR5cGUoKSkp IHsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPD0gSVNQQ19MTFZNXzlfMAotLSAgICAgICAgaW5z dC0+c2V0QWxpZ25tZW50KGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yQWxpZ25tZW50KCkpOwot LSNlbHNlIC8vIExMVk0gMTAuMCsKLSAgICAgICAgIGluc3QtPnNldEFsaWdubWVudChsbHZtOjpN YXliZUFsaWduKGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yQWxpZ25tZW50KCkpLnZhbHVlT3JP bmUoKSk7Ci0tI2VuZGlmCi0gICAgIH0KLSAKLSAjaWZkZWYgSVNQQ19HRU5YX0VOQUJMRUQKLUBA IC0zMDI1LDE2ICszMDAxLDEwIEBAIHZvaWQgRnVuY3Rpb25FbWl0Q29udGV4dDo6TWVtY3B5SW5z dChsbHZtOjpWYWx1ZSAqZGVzdCwgbGx2bTo6VmFsdWUgKnNyYywgbGx2bTo6Ci0gICAgIH0KLSAg ICAgaWYgKGFsaWduID09IE5VTEwpCi0gICAgICAgICBhbGlnbiA9IExMVk1JbnQzMigxKTsKLS0j aWYgSVNQQ19MTFZNX1ZFUlNJT04gPD0gSVNQQ19MTFZNXzhfMAotLSAgICBsbHZtOjpDb25zdGFu dCAqbWNGdW5jID0KLS0gICAgICAgIG0tPm1vZHVsZS0+Z2V0T3JJbnNlcnRGdW5jdGlvbigibGx2 bS5tZW1jcHkucDBpOC5wMGk4Lmk2NCIsIExMVk1UeXBlczo6Vm9pZFR5cGUsIExMVk1UeXBlczo6 Vm9pZFBvaW50ZXJUeXBlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExMVk1UeXBlczo6Vm9pZFBvaW50ZXJUeXBlLCBMTFZNVHlwZXM6OkludDY0VHlwZSwgTExWTVR5 cGVzOjpCb29sVHlwZSk7Ci0tI2Vsc2UgLy8gTExWTSA5LjArCi0gICAgIGxsdm06OkZ1bmN0aW9u Q2FsbGVlIG1jRnVuY0NhbGxlZSA9Ci0gICAgICAgICBtLT5tb2R1bGUtPmdldE9ySW5zZXJ0RnVu Y3Rpb24oImxsdm0ubWVtY3B5LnAwaTgucDBpOC5pNjQiLCBMTFZNVHlwZXM6OlZvaWRUeXBlLCBM TFZNVHlwZXM6OlZvaWRQb2ludGVyVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMTFZNVHlwZXM6OlZvaWRQb2ludGVyVHlwZSwgTExWTVR5cGVzOjpJbnQ2NFR5 cGUsIExMVk1UeXBlczo6Qm9vbFR5cGUpOwotICAgICBsbHZtOjpDb25zdGFudCAqbWNGdW5jID0g bGx2bTo6Y2FzdDxsbHZtOjpDb25zdGFudD4obWNGdW5jQ2FsbGVlLmdldENhbGxlZSgpKTsKLS0j ZW5kaWYKLSAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG1jRnVuYyAhPSBOVUxMKTsKLSAgICAg QXNzZXJ0UG9zKGN1cnJlbnRQb3MsIGxsdm06OmlzYTxsbHZtOjpGdW5jdGlvbj4obWNGdW5jKSk7 Ci0gCi1kaWZmIC0tZ2l0IGEvc3JjL2dlbi9HbG9iYWxzTG9jYWxpemF0aW9uLmNwcCBiL3NyYy9n ZW4vR2xvYmFsc0xvY2FsaXphdGlvbi5jcHAKLWluZGV4IDE5M2E2NjI4OS4uYTE3NmU5NDYyIDEw MDY0NAotLS0tIGEvc3JjL2dlbi9HbG9iYWxzTG9jYWxpemF0aW9uLmNwcAotKysrIGIvc3JjL2dl bi9HbG9iYWxzTG9jYWxpemF0aW9uLmNwcAotQEAgLTQ3MCwxMSArNDcwLDcgQEAgdm9pZCBHbG9i YWxzTG9jYWxpemF0aW9uOjpMb2NhbGl6ZUdsb2JhbHMoTG9jYWxpemF0aW9uSW5mbyAmTEkpIHsK LSAgICAgICAgIEluc3RydWN0aW9uICZGaXJzdEkgPSAqRm4tPmdldEVudHJ5QmxvY2soKS5iZWdp bigpOwotICAgICAgICAgVHlwZSAqRWxlbVR5ID0gR1YtPmdldFR5cGUoKS0+Z2V0RWxlbWVudFR5 cGUoKTsKLSAgICAgICAgIEFsbG9jYUluc3QgKkFsbG9jYSA9IG5ldyBBbGxvY2FJbnN0KEVsZW1U eSwgMCwgR1YtPmdldE5hbWUoKSArICIubG9jYWwiLCAmRmlyc3RJKTsKLS0jaWYgSVNQQ19MTFZN X1ZFUlNJT04gPD0gSVNQQ19MTFZNXzlfMAotLSAgICAgICAgQWxsb2NhLT5zZXRBbGlnbm1lbnQo R1YtPmdldEFsaWdubWVudCgpKTsKLS0jZWxzZSAvLyBMTFZNIDEwLjArCi0gICAgICAgICBBbGxv Y2EtPnNldEFsaWdubWVudChsbHZtOjpNYXliZUFsaWduKEdWLT5nZXRBbGlnbm1lbnQoKSkpOwot LSNlbmRpZgotICAgICAgICAgaWYgKCFpc2E8VW5kZWZWYWx1ZT4oR1YtPmdldEluaXRpYWxpemVy KCkpKQotICAgICAgICAgICAgIG5ldyBTdG9yZUluc3QoR1YtPmdldEluaXRpYWxpemVyKCksIEFs bG9jYSwgJkZpcnN0SSk7Ci0gCi1kaWZmIC0tZ2l0IGEvc3JjL2lzcGMuY3BwIGIvc3JjL2lzcGMu Y3BwCi1pbmRleCBlMmQwZjIwNmUuLmZhYzUyMzNmNyAxMDA2NDQKLS0tLSBhL3NyYy9pc3BjLmNw cAotKysrIGIvc3JjL2lzcGMuY3BwCi1AQCAtMjcyLDkgKzI3Miw3IEBAIHR5cGVkZWYgZW51bSB7 Ci0gICAgIENQVV9TaWx2ZXJtb250LAotIAotICAgICBDUFVfSUNYLAotLSNpZiBJU1BDX0xMVk1f VkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICBDUFVfVEdMLAotLSNlbmRpZgotICNpZiBJ U1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTJfMAotICAgICBDUFVfQURMLAotICAgICBD UFVfU1BSLAotQEAgLTM2NSwxMCArMzYzLDggQEAgY2xhc3MgQWxsQ1BVcyB7Ci0gCi0gICAgICAg ICBuYW1lc1tDUFVfSUNYXS5wdXNoX2JhY2soImljZWxha2Utc2VydmVyIik7Ci0gICAgICAgICBu YW1lc1tDUFVfSUNYXS5wdXNoX2JhY2soImljeCIpOwotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+ PSBJU1BDX0xMVk1fMTBfMAotICAgICAgICAgbmFtZXNbQ1BVX1RHTF0ucHVzaF9iYWNrKCJ0aWdl cmxha2UiKTsKLSAgICAgICAgIG5hbWVzW0NQVV9UR0xdLnB1c2hfYmFjaygidGdsIik7Ci0tI2Vu ZGlmCi0gI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMl8wCi0gICAgICAgICBu YW1lc1tDUFVfQURMXS5wdXNoX2JhY2soImFsZGVybGFrZSIpOwotICAgICAgICAgbmFtZXNbQ1BV X0FETF0ucHVzaF9iYWNrKCJhZGwiKTsKLUBAIC00MTEsMTEgKzQwNyw5IEBAIGNsYXNzIEFsbENQ VXMgewotICAgICAgICAgY29tcGF0W0NQVV9BRExdID0gU2V0KENQVV9BREwsIENQVV94ODZfNjQs IENQVV9Cb25uZWxsLCBDUFVfUGVucnluLCBDUFVfQ29yZTIsIENQVV9OZWhhbGVtLCBDUFVfU2ls dmVybW9udCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUFVfU2FuZHlCcmlkZ2Us IENQVV9JdnlCcmlkZ2UsIENQVV9IYXN3ZWxsLCBDUFVfQnJvYWR3ZWxsLCBDUFVfTm9uZSk7Ci0g I2VuZGlmCi0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgICAg ICBjb21wYXRbQ1BVX1RHTF0gPQotICAgICAgICAgICAgIFNldChDUFVfVEdMLCBDUFVfeDg2XzY0 LCBDUFVfQm9ubmVsbCwgQ1BVX1BlbnJ5biwgQ1BVX0NvcmUyLCBDUFVfTmVoYWxlbSwgQ1BVX1Np bHZlcm1vbnQsIENQVV9TYW5keUJyaWRnZSwKLSAgICAgICAgICAgICAgICAgQ1BVX0l2eUJyaWRn ZSwgQ1BVX0hhc3dlbGwsIENQVV9Ccm9hZHdlbGwsIENQVV9TS1gsIENQVV9JQ0wsIENQVV9JQ1gs IENQVV9Ob25lKTsKLS0jZW5kaWYKLSAgICAgICAgIGNvbXBhdFtDUFVfSUNYXSA9IFNldChDUFVf SUNYLCBDUFVfeDg2XzY0LCBDUFVfQm9ubmVsbCwgQ1BVX1BlbnJ5biwgQ1BVX0NvcmUyLCBDUFVf TmVoYWxlbSwgQ1BVX1NpbHZlcm1vbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Q1BVX1NhbmR5QnJpZGdlLCBDUFVfSXZ5QnJpZGdlLCBDUFVfSGFzd2VsbCwgQ1BVX0Jyb2Fkd2Vs bCwgQ1BVX1NLWCwgQ1BVX0lDTCwgQ1BVX05vbmUpOwotIAotQEAgLTU1Niw5ICs1NTAsNyBAQCBU YXJnZXQ6OlRhcmdldChBcmNoIGFyY2gsIGNvbnN0IGNoYXIgKmNwdSwgSVNQQ1RhcmdldCBpc3Bj X3RhcmdldCwgYm9vbCBwaWMsIGJvbwotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xM Vk1fMTJfMAotICAgICAgICAgY2FzZSBDUFVfU1BSOgotICNlbmRpZgotLSNpZiBJU1BDX0xMVk1f VkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICAgICAgY2FzZSBDUFVfVEdMOgotLSNlbmRp ZgotICAgICAgICAgY2FzZSBDUFVfSUNYOgotICAgICAgICAgY2FzZSBDUFVfSUNMOgotICAgICAg ICAgY2FzZSBDUFVfU0tYOgotQEAgLTkxNiw3ICs5MDgsNiBAQCBUYXJnZXQ6OlRhcmdldChBcmNo IGFyY2gsIGNvbnN0IGNoYXIgKmNwdSwgSVNQQ1RhcmdldCBpc3BjX3RhcmdldCwgYm9vbCBwaWMs IGJvbwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgSVNQQ1RhcmdldDo6 YXZ4NTEyc2t4X2k4eDY0OgotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBf MCAvLyBMTFZNIDEwLjArCi0gICAgICAgICAvLyBUaGlzIHRhcmdldCBpcyBlbmFibGVkIG9ubHkg Zm9yIExMVk0gMTAuMCBhbmQgbGF0ZXIKLSAgICAgICAgIC8vIGJlY2F1c2UgTExWTSByZXF1aXJl cyBhIG51bWJlciBvZiBmaXhlcywgd2hpY2ggYXJlCi0gICAgICAgICAvLyBjb21taXR0ZWQgdG8g TExWTSAxMS4wIGFuZCBjYW4gYmUgYXBwbGllZCB0byAxMC4wLCBidXQgbm90Ci1AQCAtOTM3LDEy ICs5MjgsNyBAQCBUYXJnZXQ6OlRhcmdldChBcmNoIGFyY2gsIGNvbnN0IGNoYXIgKmNwdSwgSVNQ Q1RhcmdldCBpc3BjX3RhcmdldCwgYm9vbCBwaWMsIGJvbwotICAgICAgICAgdGhpcy0+bV9oYXNW ZWNQcmVmZXRjaCA9IGZhbHNlOwotICAgICAgICAgQ1BVZnJvbUlTQSA9IENQVV9TS1g7Ci0gICAg ICAgICBicmVhazsKLS0jZWxzZQotLSAgICAgICAgdW5zdXBwb3J0ZWRfdGFyZ2V0ID0gdHJ1ZTsK LS0gICAgICAgIGJyZWFrOwotLSNlbmRpZgotICAgICBjYXNlIElTUENUYXJnZXQ6OmF2eDUxMnNr eF9pMTZ4MzI6Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wIC8vIExM Vk0gMTAuMCsKLSAgICAgICAgIC8vIFRoaXMgdGFyZ2V0IGlzIGVuYWJsZWQgb25seSBmb3IgTExW TSAxMC4wIGFuZCBsYXRlcgotICAgICAgICAgLy8gYmVjYXVzZSBMTFZNIHJlcXVpcmVzIGEgbnVt YmVyIG9mIGZpeGVzLCB3aGljaCBhcmUKLSAgICAgICAgIC8vIGNvbW1pdHRlZCB0byBMTFZNIDEx LjAgYW5kIGNhbiBiZSBhcHBsaWVkIHRvIDEwLjAsIGJ1dCBub3QKLUBAIC05NjMsMTAgKzk0OSw2 IEBAIFRhcmdldDo6VGFyZ2V0KEFyY2ggYXJjaCwgY29uc3QgY2hhciAqY3B1LCBJU1BDVGFyZ2V0 IGlzcGNfdGFyZ2V0LCBib29sIHBpYywgYm9vCi0gICAgICAgICB0aGlzLT5tX2hhc1ZlY1ByZWZl dGNoID0gZmFsc2U7Ci0gICAgICAgICBDUFVmcm9tSVNBID0gQ1BVX1NLWDsKLSAgICAgICAgIGJy ZWFrOwotLSNlbHNlCi0tICAgICAgICB1bnN1cHBvcnRlZF90YXJnZXQgPSB0cnVlOwotLSAgICAg ICAgYnJlYWs7Ci0tI2VuZGlmCi0gI2lmZGVmIElTUENfQVJNX0VOQUJMRUQKLSAgICAgY2FzZSBJ U1BDVGFyZ2V0OjpuZW9uX2k4eDE2OgotICAgICAgICAgdGhpcy0+bV9pc2EgPSBUYXJnZXQ6Ok5F T047Ci1AQCAtMTY2MiwxMSArMTY0NCw5IEBAIEdsb2JhbHM6Okdsb2JhbHMoKSB7Ci0gICAgIGlz TXVsdGlUYXJnZXRDb21waWxhdGlvbiA9IGZhbHNlOwotICAgICBlcnJvckxpbWl0ID0gLTE7Ci0g Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgIGVuYWJsZVRp bWVUcmFjZSA9IGZhbHNlOwotICAgICAvLyBzZXQgZGVmYXVsdCBncmFudWxhcml0eSB0byA1MDAu Ci0gICAgIHRpbWVUcmFjZUdyYW51bGFyaXR5ID0gNTAwOwotLSNlbmRpZgotICAgICB0YXJnZXQg PSBOVUxMOwotICAgICBjdHggPSBuZXcgbGx2bTo6TExWTUNvbnRleHQ7Ci0gCi1kaWZmIC0tZ2l0 IGEvc3JjL2lzcGMuaCBiL3NyYy9pc3BjLmgKLWluZGV4IGUyNWQ4ODMwZS4uZGUzNTdhMjFjIDEw MDY0NAotLS0tIGEvc3JjL2lzcGMuaAotKysrIGIvc3JjL2lzcGMuaAotQEAgLTY5NSwxMyArNjk1 LDEyIEBAIHN0cnVjdCBHbG9iYWxzIHsKLSAKLSAgICAgLyogTnVtYmVyIG9mIGVycm9ycyB0byBz aG93IGluIElTUEMuICovCi0gICAgIGludCBlcnJvckxpbWl0OwotLSNpZiBJU1BDX0xMVk1fVkVS U0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotKwotICAgICAvKiBXaGVuIHRydWUsIGVuYWJsZSBjb21w aWxlIHRpbWUgdHJhY2luZy4gKi8KLSAgICAgYm9vbCBlbmFibGVUaW1lVHJhY2U7Ci0gCi0gICAg IC8qIFdoZW4gY29tcGlsZSB0aW1lIHRyYWNpbmcgaXMgZW5hYmxlZCwgc2V0IHRpbWUgZ3JhbnVs YXJpdHkuICovCi0gICAgIGludCB0aW1lVHJhY2VHcmFudWxhcml0eTsKLS0jZW5kaWYKLSB9Owot IAotIGVudW0gewotZGlmZiAtLWdpdCBhL3NyYy9pc3BjX3ZlcnNpb24uaCBiL3NyYy9pc3BjX3Zl cnNpb24uaAotaW5kZXggZDc4MTM0N2ZkLi40MzRiMmQ2NzggMTAwNjQ0Ci0tLS0gYS9zcmMvaXNw Y192ZXJzaW9uLmgKLSsrKyBiL3NyYy9pc3BjX3ZlcnNpb24uaAotQEAgLTQ0LDEzICs0NCwxMSBA QAotIAotICNkZWZpbmUgSVNQQ19MTFZNX1ZFUlNJT04gKExMVk1fVkVSU0lPTl9NQUpPUiAqIDEw MDAwICsgTExWTV9WRVJTSU9OX01JTk9SICogMTAwKQotIAotLSNkZWZpbmUgSVNQQ19MTFZNXzhf MCA4MDAwMAotLSNkZWZpbmUgSVNQQ19MTFZNXzlfMCA5MDAwMAotICNkZWZpbmUgSVNQQ19MTFZN XzEwXzAgMTAwMDAwCi0gI2RlZmluZSBJU1BDX0xMVk1fMTFfMCAxMTAwMDAKLSAjZGVmaW5lIElT UENfTExWTV8xMl8wIDEyMDAwMAotIAotLSNkZWZpbmUgT0xERVNUX1NVUFBPUlRFRF9MTFZNIElT UENfTExWTV84XzAKLSsjZGVmaW5lIE9MREVTVF9TVVBQT1JURURfTExWTSBJU1BDX0xMVk1fMTBf MAotICNkZWZpbmUgTEFURVNUX1NVUFBPUlRFRF9MTFZNIElTUENfTExWTV8xMl8wCi0gCi0gI2lm ZGVmIF9faXNwY19feHN0cgotZGlmZiAtLWdpdCBhL3NyYy9tYWluLmNwcCBiL3NyYy9tYWluLmNw cAotaW5kZXggOGY2NDMzMGNjLi41YzkyMGVhYmMgMTAwNjQ0Ci0tLS0gYS9zcmMvbWFpbi5jcHAK LSsrKyBiL3NyYy9tYWluLmNwcAotQEAgLTU1LDkgKzU1LDcgQEAKLSAjaW5jbHVkZSA8bGx2bS9T dXBwb3J0L1NpZ25hbHMuaD4KLSAjaW5jbHVkZSA8bGx2bS9TdXBwb3J0L1RhcmdldFJlZ2lzdHJ5 Lmg+Ci0gI2luY2x1ZGUgPGxsdm0vU3VwcG9ydC9UYXJnZXRTZWxlY3QuaD4KLS0jaWYgSVNQQ19M TFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAjaW5jbHVkZSA8bGx2bS9TdXBwb3J0L1Rv b2xPdXRwdXRGaWxlLmg+Ci0tI2VuZGlmCi0gCi0gI2lmZGVmIElTUENfSE9TVF9JU19XSU5ET1dT Ci0gI2RlZmluZSBzdHJjYXNlY21wIHN0cmljbXAKLUBAIC0xODEsMTEgKzE3OSw5IEBAIHN0YXRp YyB2b2lkIGxQcmludFZlcnNpb24oKSB7Ci0gICAgIHNucHJpbnRmKHRhcmdldEhlbHAsIHNpemVv Zih0YXJnZXRIZWxwKSwgIlstLXRhcmdldC1vcz08b3M+XVx0XHRcdFNlbGVjdCB0YXJnZXQgT1Mu ICA8b3M+PXslc30iLAotICAgICAgICAgICAgICBnLT50YXJnZXRfcmVnaXN0cnktPmdldFN1cHBv cnRlZE9TZXMoKS5jX3N0cigpKTsKLSAgICAgUHJpbnRXaXRoV29yZEJyZWFrcyh0YXJnZXRIZWxw LCAyNCwgVGVybWluYWxXaWR0aCgpLCBzdGRvdXQpOwotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+ PSBJU1BDX0xMVk1fMTBfMAotICAgICBwcmludGYoIiAgICBbLS10aW1lLXRyYWNlXVx0XHRcdFR1 cm4gb24gdGltZSBwcm9maWxlci4gR2VuZXJhdGVzIEpTT04gZmlsZSBiYXNlZCBvbiBvdXRwdXQg ZmlsZW5hbWUuXG4iKTsKLSAgICAgcHJpbnRmKCIgICAgWy0tdGltZS10cmFjZS1ncmFudWxhcml0 eT08dmFsdWU+XHRNaW5pbXVtIHRpbWUgZ3JhbnVsYXJpdHkgKGluIG1pY3Jvc2Vjb25kcykgdHJh Y2VkIGJ5IHRpbWUgIgotICAgICAgICAgICAgInByb2ZpbGVyLlxuIik7Ci0tI2VuZGlmCi0gICAg IHByaW50ZigiICAgIFstLXZlcnNpb25dXHRcdFx0XHRQcmludCBpc3BjIHZlcnNpb25cbiIpOwot ICNpZmRlZiBJU1BDX0dFTlhfRU5BQkxFRAotICAgICBwcmludGYoIiAgICBbLS12Yy1vcHRpb25z PTxcIi1vcHRpb24xIC1vcHRpb24yLi4uXCI+XVx0XHRcdFx0UGFzcyBhZGRpdGlvbmFsIG9wdGlv bnMgdG8gVmVjdG9yIENvbXBpbGVyIGJhY2tlbmRcbiIpOwotQEAgLTQ2Miw3ICs0NTgsNiBAQCBz dGF0aWMgdm9pZCBzZXRDYWxsaW5nQ29udihWZWN0b3JDYWxsU3RhdHVzIHZlY3RvckNhbGwsIEFy Y2ggYXJjaCkgewotICAgICB9Ci0gfQotIAotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BD X0xMVk1fMTBfMAotIHN0YXRpYyB2b2lkIHdyaXRlQ29tcGlsZVRpbWVGaWxlKGNvbnN0IGNoYXIg Km91dEZpbGVOYW1lKSB7Ci0gICAgIGxsdm06OlNtYWxsU3RyaW5nPDEyOD4ganNvbkZpbGVOYW1l KG91dEZpbGVOYW1lKTsKLSAgICAganNvbkZpbGVOYW1lLmFwcGVuZCgiLmpzb24iKTsKLUBAIC00 NzksNyArNDc0LDYgQEAgc3RhdGljIHZvaWQgd3JpdGVDb21waWxlVGltZUZpbGUoY29uc3QgY2hh ciAqb3V0RmlsZU5hbWUpIHsKLSAgICAgb2YtPmtlZXAoKTsKLSAgICAgcmV0dXJuOwotIH0KLS0j ZW5kaWYKLSAKLSBzdGF0aWMgc3RkOjpzZXQ8aW50PiBQYXJzaW5nUGhhc2VzKGNoYXIgKnN0YWdl cywgQXJnRXJyb3JzICZlcnJvckhhbmRsZXIpIHsKLSAgICAgY29uc3RleHByIGludCBwYXJzaW5n X2xpbWl0ID0gMTAwOwotQEAgLTc5MSwxMiArNzg1LDEwIEBAIGludCBtYWluKGludCBBcmdjLCBj aGFyICpBcmd2W10pIHsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICB9IGVsc2UgaWYgKCFzdHJu Y21wKGFyZ3ZbaV0sICItLWZvcmNlLWFsaWdubWVudD0iLCAxOCkpIHsKLSAgICAgICAgICAgICBn LT5mb3JjZUFsaWdubWVudCA9IGF0b2koYXJndltpXSArIDE4KTsKLS0jaWYgSVNQQ19MTFZNX1ZF UlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgICAgIH0gZWxzZSBpZiAoIXN0cmNtcChhcmd2 W2ldLCAiLS10aW1lLXRyYWNlIikpIHsKLSAgICAgICAgICAgICBnLT5lbmFibGVUaW1lVHJhY2Ug PSB0cnVlOwotICAgICAgICAgfSBlbHNlIGlmICghc3RybmNtcChhcmd2W2ldLCAiLS10aW1lLXRy YWNlLWdyYW51bGFyaXR5PSIsIDI1KSkgewotICAgICAgICAgICAgIGctPnRpbWVUcmFjZUdyYW51 bGFyaXR5ID0gYXRvaShhcmd2W2ldICsgMjUpOwotLSNlbmRpZgotICAgICAgICAgfSBlbHNlIGlm ICghc3RyY21wKGFyZ3ZbaV0sICItLXdvZmYiKSB8fCAhc3RyY21wKGFyZ3ZbaV0sICItd29mZiIp KSB7Ci0gICAgICAgICAgICAgZy0+ZGlzYWJsZVdhcm5pbmdzID0gdHJ1ZTsKLSAgICAgICAgICAg ICBnLT5lbWl0UGVyZldhcm5pbmdzID0gZmFsc2U7Ci1AQCAtMTA1OSw3ICsxMDUxLDYgQEAgaW50 IG1haW4oaW50IEFyZ2MsIGNoYXIgKkFyZ3ZbXSkgewotIAotICAgICAvLyBUaGlzIG5lZWRzIHRv IGhhcHBlbiBhZnRlciB0aGUgVGFyZ2V0T1MgaXMgZGVjaWRlZC4KLSAgICAgc2V0Q2FsbGluZ0Nv bnYodmVjdG9yQ2FsbCwgYXJjaCk7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExW TV8xMF8wCi0gICAgIGlmIChnLT5lbmFibGVUaW1lVHJhY2UpIHsKLSAgICAgICAgIGxsdm06OnRp bWVUcmFjZVByb2ZpbGVySW5pdGlhbGl6ZShnLT50aW1lVHJhY2VHcmFudWxhcml0eSwgImlzcGMi KTsKLSAgICAgfQotQEAgLTEwNzcsOSArMTA2OCw1IEBAIGludCBtYWluKGludCBBcmdjLCBjaGFy ICpBcmd2W10pIHsKLSAgICAgICAgIH0KLSAgICAgICAgIGxsdm06OnRpbWVUcmFjZVByb2ZpbGVy Q2xlYW51cCgpOwotICAgICB9Ci0tI2Vsc2UKLS0gICAgaW50IHJldCA9IE1vZHVsZTo6Q29tcGls ZUFuZE91dHB1dChmaWxlLCBhcmNoLCBjcHUsIHRhcmdldHMsIGZsYWdzLCBvdCwgb3V0RmlsZU5h bWUsIGhlYWRlckZpbGVOYW1lLCBkZXBzRmlsZU5hbWUsCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGVwc1RhcmdldE5hbWUsIGhvc3RTdHViRmlsZU5hbWUsIGRldlN0 dWJGaWxlTmFtZSk7Ci0tI2VuZGlmCi0gICAgIHJldHVybiByZXQ7Ci0gfQotZGlmZiAtLWdpdCBh L3NyYy9tb2R1bGUuY3BwIGIvc3JjL21vZHVsZS5jcHAKLWluZGV4IGZlNzQ1MmRmMS4uYTg1ZmVj NzdhIDEwMDY0NAotLS0tIGEvc3JjL21vZHVsZS5jcHAKLSsrKyBiL3NyYy9tb2R1bGUuY3BwCi1A QCAtMTcwLDkgKzE3MCw3IEBAIE1vZHVsZTo6TW9kdWxlKGNvbnN0IGNoYXIgKmZuKSB7Ci0gICAg IG1vZHVsZS0+c2V0RGF0YUxheW91dChnLT50YXJnZXQtPmdldERhdGFMYXlvdXQoKS0+Z2V0U3Ry aW5nUmVwcmVzZW50YXRpb24oKSk7Ci0gCi0gICAgIGlmIChnLT5nZW5lcmF0ZURlYnVnZ2luZ1N5 bWJvbHMpIHsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAg ICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIFRpbWVTY29wZSgiQ3JlYXRlIERlYnVnIERhdGEiKTsK LS0jZW5kaWYKLSAgICAgICAgIC8vIFRvIGVuYWJsZSBkZWJ1ZyBpbmZvcm1hdGlvbiBvbiBXaW5k b3dzLCB3ZSBoYXZlIHRvIGxldCBsbHZtIGtub3csIHRoYXQKLSAgICAgICAgIC8vIGRlYnVnIGlu Zm9ybWF0aW9uIHNob3VsZCBiZSBlbWl0dGVkIGluIENvZGVWaWV3IGZvcm1hdC4KLSAgICAgICAg IGlmIChnLT50YXJnZXRfb3MgPT0gVGFyZ2V0T1M6OndpbmRvd3MpIHsKLUBAIC0yMjYsMTAgKzIy NCw4IEBAIGV4dGVybiBZWV9CVUZGRVJfU1RBVEUgeXlfY3JlYXRlX2J1ZmZlcihGSUxFICosIGlu dCk7Ci0gZXh0ZXJuIHZvaWQgeXlfZGVsZXRlX2J1ZmZlcihZWV9CVUZGRVJfU1RBVEUpOwotIAot IGludCBNb2R1bGU6OkNvbXBpbGVGaWxlKCkgewotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJ U1BDX0xMVk1fMTBfMAotICAgICBsbHZtOjpUaW1lVHJhY2VTY29wZSBDb21waWxlRmlsZVRpbWVT Y29wZSgKLSAgICAgICAgICJDb21waWxlRmlsZSIsIGxsdm06OlN0cmluZ1JlZihmaWxlbmFtZSAr ICgiXyIgKyBzdGQ6OnN0cmluZyhnLT50YXJnZXQtPkdldElTQVN0cmluZygpKSkpKTsKLS0jZW5k aWYKLSAgICAgZXh0ZXJuIHZvaWQgUGFyc2VySW5pdCgpOwotICAgICBQYXJzZXJJbml0KCk7Ci0g Ci1AQCAtMjM4LDE4ICsyMzQsMTQgQEAgaW50IE1vZHVsZTo6Q29tcGlsZUZpbGUoKSB7Ci0gICAg IC8vIHZhcmlhYmxlICdtJyB0byBiZSBpbml0aWFsaXplZCBhbmQgYXZhaWxhYmxlICh3aGljaCBp dCBpc24ndCB1bnRpbAotICAgICAvLyB0aGUgTW9kdWxlIGNvbnN0cnVjdG9yIHJldHVybnMuLi4p Ci0gICAgIHsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAg ICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIFRpbWVTY29wZSgiRGVmaW5lU3RkbGliIik7Ci0tI2Vu ZGlmCi0gICAgICAgICBEZWZpbmVTdGRsaWIoc3ltYm9sVGFibGUsIGctPmN0eCwgbW9kdWxlLCBn LT5pbmNsdWRlU3RkbGliKTsKLSAgICAgfQotIAotICAgICBib29sIHJ1blByZXByb2Nlc3NvciA9 IGctPnJ1bkNQUDsKLSAKLSAgICAgaWYgKHJ1blByZXByb2Nlc3NvcikgewotLSNpZiBJU1BDX0xM Vk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICAgICAgbGx2bTo6VGltZVRyYWNlU2Nv cGUgVGltZVNjb3BlKCJGcm9udGVuZCBwYXJzZXIiKTsKLS0jZW5kaWYKLSAgICAgICAgIGlmICgh SXNTdGRpbihmaWxlbmFtZSkpIHsKLSAgICAgICAgICAgICAvLyBUcnkgdG8gb3BlbiB0aGUgZmls ZSBmaXJzdCwgc2luY2Ugb3RoZXJ3aXNlIHdlIGNyYXNoIGluIHRoZQotICAgICAgICAgICAgIC8v IHByZXByb2Nlc3NvciBpZiB0aGUgZmlsZSBkb2Vzbid0IGV4aXN0LgotQEAgLTI2OCw5ICsyNjAs NyBAQCBpbnQgTW9kdWxlOjpDb21waWxlRmlsZSgpIHsKLSAgICAgICAgIHl5cGFyc2UoKTsKLSAg ICAgICAgIHl5X2RlbGV0ZV9idWZmZXIoc3RyYnVmKTsKLSAgICAgfSBlbHNlIHsKLS0jaWYgSVNQ Q19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgICAgIGxsdm06OlRpbWVUcmFj ZVNjb3BlIFRpbWVTY29wZSgiRnJvbnRlbmQgcGFyc2VyIik7Ci0tI2VuZGlmCi0gICAgICAgICAv LyBObyBwcmVwcm9jZXNzb3IsIGp1c3Qgb3BlbiB1cCB0aGUgZmlsZSBpZiBpdCdzIG5vdCBzdGRp bi4uCi0gICAgICAgICBGSUxFICpmID0gTlVMTDsKLSAgICAgICAgIGlmIChJc1N0ZGluKGZpbGVu YW1lKSkgewotQEAgLTI5Nyw5ICsyODcsNyBAQCBpbnQgTW9kdWxlOjpDb21waWxlRmlsZSgpIHsK LSAKLSAgICAgaWYgKGRpQnVpbGRlcikKLSAgICAgICAgIGRpQnVpbGRlci0+ZmluYWxpemUoKTsK LS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgbGx2bTo6VGlt ZVRyYWNlU2NvcGUgVGltZVNjb3BlKCJPcHRpbWl6ZSIpOwotLSNlbmRpZgotICAgICBpZiAoZXJy b3JDb3VudCA9PSAwKQotICAgICAgICAgT3B0aW1pemUobW9kdWxlLCBnLT5vcHQubGV2ZWwpOwot IAotQEAgLTEyNDMsMTUgKzEyMzEsOCBAQCBib29sIE1vZHVsZTo6d3JpdGVPYmplY3RGaWxlT3JB c3NlbWJseShsbHZtOjpUYXJnZXRNYWNoaW5lICp0YXJnZXRNYWNoaW5lLCBsbHZtOgotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm91dEZpbGVOYW1l KSB7Ci0gICAgIC8vIEZpZ3VyZSBvdXQgaWYgd2UncmUgZ2VuZXJhdGluZyBvYmplY3QgZmlsZSBv ciBhc3NlbWJseSBvdXRwdXQsIGFuZAotICAgICAvLyBzZXQgYmluYXJ5IG91dHB1dCBmb3Igb2Jq ZWN0IGZpbGVzCi0tI2lmIElTUENfTExWTV9WRVJTSU9OIDw9IElTUENfTExWTV85XzAKLS0gICAg QXNzZXJ0KCFnLT50YXJnZXQtPmlzR2VuWFRhcmdldCgpKTsKLS0gICAgbGx2bTo6VGFyZ2V0TWFj aGluZTo6Q29kZUdlbkZpbGVUeXBlIGZpbGVUeXBlID0KLS0gICAgICAgIChvdXRwdXRUeXBlID09 IE9iamVjdCkgPyBsbHZtOjpUYXJnZXRNYWNoaW5lOjpDR0ZUX09iamVjdEZpbGUgOiBsbHZtOjpU YXJnZXRNYWNoaW5lOjpDR0ZUX0Fzc2VtYmx5RmlsZTsKLS0gICAgYm9vbCBiaW5hcnkgPSAoZmls ZVR5cGUgPT0gbGx2bTo6VGFyZ2V0TWFjaGluZTo6Q0dGVF9PYmplY3RGaWxlKTsKLS0jZWxzZSAv LyBMTFZNIDEwLjArCi0gICAgIGxsdm06OkNvZGVHZW5GaWxlVHlwZSBmaWxlVHlwZSA9IChvdXRw dXRUeXBlID09IE9iamVjdCkgPyBsbHZtOjpDR0ZUX09iamVjdEZpbGUgOiBsbHZtOjpDR0ZUX0Fz c2VtYmx5RmlsZTsKLSAgICAgYm9vbCBiaW5hcnkgPSAoZmlsZVR5cGUgPT0gbGx2bTo6Q0dGVF9P YmplY3RGaWxlKTsKLS0jZW5kaWYKLSAKLSAgICAgbGx2bTo6c3lzOjpmczo6T3BlbkZsYWdzIGZs YWdzID0gYmluYXJ5ID8gbGx2bTo6c3lzOjpmczo6Rl9Ob25lIDogbGx2bTo6c3lzOjpmczo6Rl9U ZXh0OwotIAotQEAgLTIyMTksMTEgKzIyMDAsNyBAQCB2b2lkIE1vZHVsZTo6ZXhlY1ByZXByb2Nl c3Nvcihjb25zdCBjaGFyICppbmZpbGVuYW1lLCBsbHZtOjpyYXdfc3RyaW5nX29zdHJlYW0gKgot ICAgICBpbnN0LnNldFRhcmdldCh0YXJnZXQpOwotICAgICBpbnN0LmNyZWF0ZVNvdXJjZU1hbmFn ZXIoaW5zdC5nZXRGaWxlTWFuYWdlcigpKTsKLSAKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPD0g SVNQQ19MTFZNXzlfMAotLSAgICBjbGFuZzo6RnJvbnRlbmRJbnB1dEZpbGUgaW5wdXRGaWxlKGlu ZmlsZW5hbWUsIGNsYW5nOjpJbnB1dEtpbmQ6OlVua25vd24pOwotLSNlbHNlIC8vIExMVk0gMTAu MCsKLSAgICAgY2xhbmc6OkZyb250ZW5kSW5wdXRGaWxlIGlucHV0RmlsZShpbmZpbGVuYW1lLCBj bGFuZzo6SW5wdXRLaW5kKCkpOwotLSNlbmRpZgotIAotICAgICBpbnN0LkluaXRpYWxpemVTb3Vy Y2VNYW5hZ2VyKGlucHV0RmlsZSk7Ci0gCi1AQCAtMjcyMiw5ICsyNjk5LDcgQEAgaW50IE1vZHVs ZTo6Q29tcGlsZUFuZE91dHB1dChjb25zdCBjaGFyICpzcmNGaWxlLCBBcmNoIGFyY2gsIGNvbnN0 IGNoYXIgKmNwdSwgc3QKLSAKLSAgICAgICAgIG0gPSBuZXcgTW9kdWxlKHNyY0ZpbGUpOwotICAg ICAgICAgaWYgKG0tPkNvbXBpbGVGaWxlKCkgPT0gMCkgewotLSNpZiBJU1BDX0xMVk1fVkVSU0lP TiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICAgICAgICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIFRp bWVTY29wZSgiQmFja2VuZCIpOwotLSNlbmRpZgotICNpZmRlZiBJU1BDX0dFTlhfRU5BQkxFRAot ICAgICAgICAgICAgIGlmIChvdXRwdXRUeXBlID09IEFzbSB8fCBvdXRwdXRUeXBlID09IE9iamVj dCkgewotICAgICAgICAgICAgICAgICBpZiAoZy0+dGFyZ2V0LT5pc0dlblhUYXJnZXQoKSkgewot QEAgLTI4NTUsOSArMjgzMCw3IEBAIGludCBNb2R1bGU6OkNvbXBpbGVBbmRPdXRwdXQoY29uc3Qg Y2hhciAqc3JjRmlsZSwgQXJjaCBhcmNoLCBjb25zdCBjaGFyICpjcHUsIHN0Ci0gCi0gICAgICAg ICAgICAgbSA9IG5ldyBNb2R1bGUoc3JjRmlsZSk7Ci0gICAgICAgICAgICAgaW50IGNvbXBpbGVG aWxlRXJyb3IgPSBtLT5Db21waWxlRmlsZSgpOwotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJ U1BDX0xMVk1fMTBfMAotICAgICAgICAgICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIFRpbWVTY29w ZSgiQmFja2VuZCIpOwotLSNlbmRpZgotICAgICAgICAgICAgIGlmIChjb21waWxlRmlsZUVycm9y ID09IDApIHsKLSAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSBkaXNwYXRjaCBtb2R1bGUs IHVubGVzcyBhbHJlYWR5IGNyZWF0ZWQ7Ci0gICAgICAgICAgICAgICAgIC8vIGluIHRoZSBsYXR0 ZXIgY2FzZSwganVzdCBkbyB0aGUgY2hlY2tpbmcKLWRpZmYgLS1naXQgYS9zcmMvbW9kdWxlLmgg Yi9zcmMvbW9kdWxlLmgKLWluZGV4IDYxZDNjZmVhMC4uNjAzMTI0ZDUwIDEwMDY0NAotLS0tIGEv c3JjL21vZHVsZS5oCi0rKysgYi9zcmMvbW9kdWxlLmgKLUBAIC00Myw5ICs0Myw3IEBACi0gCi0g I2luY2x1ZGUgPGxsdm0vSVIvRGVidWdJbmZvLmg+Ci0gCi0tI2lmIElTUENfTExWTV9WRVJTSU9O ID49IElTUENfTExWTV8xMF8wCi0gI2luY2x1ZGUgPGxsdm0vU3VwcG9ydC9UaW1lUHJvZmlsZXIu aD4KLS0jZW5kaWYKLSAKLSAjaWZkZWYgSVNQQ19HRU5YX0VOQUJMRUQKLSAjaW5jbHVkZSAib2Ns X2lnY19pbnRlcmZhY2UvaWdjX29jbF9kZXZpY2VfY3R4LmgiCi1kaWZmIC0tZ2l0IGEvc3JjL29w dC5jcHAgYi9zcmMvb3B0LmNwcAotaW5kZXggYTY1NWE4MzQ0Li41YjFhYzdiNjMgMTAwNjQ0Ci0t LS0gYS9zcmMvb3B0LmNwcAotKysrIGIvc3JjL29wdC5jcHAKLUBAIC02Niw2ICs2Niw3IEBACi0g I2luY2x1ZGUgPGxsdm0vSVIvSW5zdHJ1Y3Rpb25zLmg+Ci0gI2luY2x1ZGUgPGxsdm0vSVIvSW50 cmluc2ljSW5zdC5oPgotICNpbmNsdWRlIDxsbHZtL0lSL0ludHJpbnNpY3MuaD4KLSsjaW5jbHVk ZSA8bGx2bS9JUi9JbnRyaW5zaWNzWDg2Lmg+Ci0gI2luY2x1ZGUgPGxsdm0vSVIvTGVnYWN5UGFz c01hbmFnZXIuaD4KLSAjaW5jbHVkZSA8bGx2bS9JUi9Nb2R1bGUuaD4KLSAjaW5jbHVkZSA8bGx2 bS9JUi9QYXR0ZXJuTWF0Y2guaD4KLUBAIC04NSw5ICs4Niw2IEBACi0gI2luY2x1ZGUgPGxsdm0v VHJhbnNmb3Jtcy9TY2FsYXIvSW5zdFNpbXBsaWZ5UGFzcy5oPgotICNpbmNsdWRlIDxsbHZtL1Ry YW5zZm9ybXMvVXRpbHMuaD4KLSAjaW5jbHVkZSA8bGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0Jhc2lj QmxvY2tVdGlscy5oPgotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAot LSNpbmNsdWRlIDxsbHZtL0lSL0ludHJpbnNpY3NYODYuaD4KLS0jZW5kaWYKLSAKLSAjaWZkZWYg SVNQQ19IT1NUX0lTX0xJTlVYCi0gI2luY2x1ZGUgPGFsbG9jYS5oPgotQEAgLTEwMDMsMTAgKzEw MDEsNyBAQCBib29sIEludHJpbnNpY3NPcHQ6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Js b2NrICZiYikgewotICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICBh bGlnbiA9IGNhbGxJbnN0LT5nZXRDYWxsZWRGdW5jdGlvbigpID09IGF2eE1hc2tlZExvYWQzMiA/ IDQgOiA4OwotICAgICAgICAgICAgICAgICBuYW1lID0gTExWTUdldE5hbWUoY2FsbEluc3QtPmdl dEFyZ09wZXJhbmQoMCksICJfbG9hZCIpOwotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8PSBJU1BD X0xMVk1fOV8wCi0tICAgICAgICAgICAgICAgIGxsdm06Okluc3RydWN0aW9uICpsb2FkSW5zdCA9 Ci0tICAgICAgICAgICAgICAgICAgICBuZXcgbGx2bTo6TG9hZEluc3QoY2FzdFB0ciwgbmFtZSwg ZmFsc2UgLyogbm90IHZvbGF0aWxlICovLCBhbGlnbiwgKGxsdm06Okluc3RydWN0aW9uICopTlVM TCk7Ci0tI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04gPT0gSVNQQ19MTFZNXzEwXzAKLSsjaWYgSVNQ Q19MTFZNX1ZFUlNJT04gPT0gSVNQQ19MTFZNXzEwXzAKLSAgICAgICAgICAgICAgICAgbGx2bTo6 SW5zdHJ1Y3Rpb24gKmxvYWRJbnN0ID0gbmV3IGxsdm06OkxvYWRJbnN0KGNhc3RQdHIsIG5hbWUs IGZhbHNlIC8qIG5vdCB2b2xhdGlsZSAqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06Ok1heWJlQWxpZ24oYWxp Z24pLCAobGx2bTo6SW5zdHJ1Y3Rpb24gKilOVUxMKTsKLSAjZWxzZQotQEAgLTEwNDMsMTMgKzEw MzgsOCBAQCBib29sIEludHJpbnNpY3NPcHQ6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Js b2NrICZiYikgewotICAgICAgICAgICAgICAgICAgICAgYWxpZ24gPSBnLT50YXJnZXQtPmdldE5h dGl2ZVZlY3RvckFsaWdubWVudCgpOwotICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg ICAgICAgICAgICBhbGlnbiA9IGNhbGxJbnN0LT5nZXRDYWxsZWRGdW5jdGlvbigpID09IGF2eE1h c2tlZFN0b3JlMzIgPyA0IDogODsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPD0gSVNQQ19MTFZN XzlfMAotLSAgICAgICAgICAgICAgICBsbHZtOjpTdG9yZUluc3QgKnN0b3JlSW5zdCA9IG5ldyBs bHZtOjpTdG9yZUluc3QocnZhbHVlLCBjYXN0UHRyLCAobGx2bTo6SW5zdHJ1Y3Rpb24gKilOVUxM KTsKLS0gICAgICAgICAgICAgICAgc3RvcmVJbnN0LT5zZXRBbGlnbm1lbnQoYWxpZ24pOwotLSNl bHNlCi0gICAgICAgICAgICAgICAgIGxsdm06OlN0b3JlSW5zdCAqc3RvcmVJbnN0ID0gbmV3IGxs dm06OlN0b3JlSW5zdChydmFsdWUsIGNhc3RQdHIsIChsbHZtOjpJbnN0cnVjdGlvbiAqKU5VTEws Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBsbHZtOjpNYXliZUFsaWduKGFsaWduKS52YWx1ZU9yT25lKCkpOwotLSNlbmRp ZgotICAgICAgICAgICAgICAgICBsQ29weU1ldGFkYXRhKHN0b3JlSW5zdCwgY2FsbEluc3QpOwot ICAgICAgICAgICAgICAgICBsbHZtOjpSZXBsYWNlSW5zdFdpdGhJbnN0KGNhbGxJbnN0LCBzdG9y ZUluc3QpOwotIAotQEAgLTEwNjYsOSArMTA1Niw3IEBAIGJvb2wgSW50cmluc2ljc09wdDo6cnVu T25CYXNpY0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gCi0gYm9vbCBJbnRyaW5zaWNz T3B0OjpydW5PbkZ1bmN0aW9uKGxsdm06OkZ1bmN0aW9uICZGKSB7Ci0gCi0tI2lmIElTUENfTExW TV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIEZ1 bmNTY29wZSgiSW50cmluc2ljc09wdDo6cnVuT25GdW5jdGlvbiIsIEYuZ2V0TmFtZSgpKTsKLS0j ZW5kaWYKLSAgICAgYm9vbCBtb2RpZmllZEFueSA9IGZhbHNlOwotICAgICBmb3IgKGxsdm06OkJh c2ljQmxvY2sgJkJCIDogRikgewotICAgICAgICAgbW9kaWZpZWRBbnkgfD0gcnVuT25CYXNpY0Js b2NrKEJCKTsKLUBAIC0xMjM5LDkgKzEyMjcsNyBAQCBib29sIEluc3RydWN0aW9uU2ltcGxpZnlQ YXNzOjpydW5PbkJhc2ljQmxvY2sobGx2bTo6QmFzaWNCbG9jayAmYmIpIHsKLSAKLSBib29sIElu c3RydWN0aW9uU2ltcGxpZnlQYXNzOjpydW5PbkZ1bmN0aW9uKGxsdm06OkZ1bmN0aW9uICZGKSB7 Ci0gCi0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06 OlRpbWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiSW5zdHJ1Y3Rpb25TaW1wbGlmeVBhc3M6OnJ1bk9u RnVuY3Rpb24iLCBGLmdldE5hbWUoKSk7Ci0tI2VuZGlmCi0gICAgIGJvb2wgbW9kaWZpZWRBbnkg PSBmYWxzZTsKLSAgICAgZm9yIChsbHZtOjpCYXNpY0Jsb2NrICZCQiA6IEYpIHsKLSAgICAgICAg IG1vZGlmaWVkQW55IHw9IHJ1bk9uQmFzaWNCbG9jayhCQik7Ci1AQCAtMjk3NCwxNiArMjk2MCwx MCBAQCBzdGF0aWMgYm9vbCBsSW1wcm92ZU1hc2tlZFN0b3JlKGxsdm06OkNhbGxJbnN0ICpjYWxs SW5zdCkgewotIAotICAgICAgICAgICAgIGx2YWx1ZSA9IG5ldyBsbHZtOjpCaXRDYXN0SW5zdChs dmFsdWUsIHB0clR5cGUsICJsdmFsdWVfdG9fcHRyX3R5cGUiLCBjYWxsSW5zdCk7Ci0gICAgICAg ICAgICAgbENvcHlNZXRhZGF0YShsdmFsdWUsIGNhbGxJbnN0KTsKLS0jaWYgSVNQQ19MTFZNX1ZF UlNJT04gPD0gSVNQQ19MTFZNXzlfMAotLSAgICAgICAgICAgIHN0b3JlID0KLS0gICAgICAgICAg ICAgICAgbmV3IGxsdm06OlN0b3JlSW5zdChydmFsdWUsIGx2YWx1ZSwgZmFsc2UgLyogbm90IHZv bGF0aWxlICovLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGctPm9wdC5m b3JjZUFsaWduZWRNZW1vcnkgPyBnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvckFsaWdubWVudCgp IDogaW5mby0+YWxpZ24pOwotLSNlbHNlCi0gICAgICAgICAgICAgc3RvcmUgPSBuZXcgbGx2bTo6 U3RvcmVJbnN0KAotICAgICAgICAgICAgICAgICBydmFsdWUsIGx2YWx1ZSwgZmFsc2UgLyogbm90 IHZvbGF0aWxlICovLAotICAgICAgICAgICAgICAgICBsbHZtOjpNYXliZUFsaWduKGctPm9wdC5m b3JjZUFsaWduZWRNZW1vcnkgPyBnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvckFsaWdubWVudCgp IDogaW5mby0+YWxpZ24pCi0gICAgICAgICAgICAgICAgICAgICAudmFsdWVPck9uZSgpKTsKLS0j ZW5kaWYKLSAgICAgICAgIH0KLSAgICAgICAgIGlmIChzdG9yZSAhPSBOVUxMKSB7Ci0gICAgICAg ICAgICAgbENvcHlNZXRhZGF0YShzdG9yZSwgY2FsbEluc3QpOwotQEAgLTMwNTksMTEgKzMwMzks NyBAQCBzdGF0aWMgYm9vbCBsSW1wcm92ZU1hc2tlZExvYWQobGx2bTo6Q2FsbEluc3QgKmNhbGxJ bnN0LCBsbHZtOjpCYXNpY0Jsb2NrOjppdGVyYQotICAgICAgICAgewotICAgICAgICAgICAgIGxs dm06OlR5cGUgKnB0clR5cGUgPSBsbHZtOjpQb2ludGVyVHlwZTo6Z2V0KGNhbGxJbnN0LT5nZXRU eXBlKCksIDApOwotICAgICAgICAgICAgIHB0ciA9IG5ldyBsbHZtOjpCaXRDYXN0SW5zdChwdHIs IHB0clR5cGUsICJwdHJfY2FzdF9mb3JfbG9hZCIsIGNhbGxJbnN0KTsKLS0jaWYgSVNQQ19MTFZN X1ZFUlNJT04gPD0gSVNQQ19MTFZNXzlfMAotLSAgICAgICAgICAgIGxvYWQgPSBuZXcgbGx2bTo6 TG9hZEluc3QocHRyLCBjYWxsSW5zdC0+Z2V0TmFtZSgpLCBmYWxzZSAvKiBub3Qgdm9sYXRpbGUg Ki8sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnLT5vcHQuZm9yY2VB bGlnbmVkTWVtb3J5ID8gZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JBbGlnbm1lbnQoKSA6IGlu Zm8tPmFsaWduLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxsdm06 Okluc3RydWN0aW9uICopTlVMTCk7Ci0tI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04gPT0gSVNQQ19M TFZNXzEwXzAKLSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPT0gSVNQQ19MTFZNXzEwXzAKLSAgICAg ICAgICAgICBsb2FkID0gbmV3IGxsdm06OkxvYWRJbnN0KAotICAgICAgICAgICAgICAgICBwdHIs IGNhbGxJbnN0LT5nZXROYW1lKCksIGZhbHNlIC8qIG5vdCB2b2xhdGlsZSAqLywKLSAgICAgICAg ICAgICAgICAgbGx2bTo6TWF5YmVBbGlnbihnLT5vcHQuZm9yY2VBbGlnbmVkTWVtb3J5ID8gZy0+ dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JBbGlnbm1lbnQoKSA6IGluZm8tPmFsaWduKQotQEAgLTMx MjksOSArMzEwNSw3IEBAIGJvb2wgSW1wcm92ZU1lbW9yeU9wc1Bhc3M6OnJ1bk9uQmFzaWNCbG9j ayhsbHZtOjpCYXNpY0Jsb2NrICZiYikgewotIAotIGJvb2wgSW1wcm92ZU1lbW9yeU9wc1Bhc3M6 OnJ1bk9uRnVuY3Rpb24obGx2bTo6RnVuY3Rpb24gJkYpIHsKLSAKLS0jaWYgSVNQQ19MTFZNX1ZF UlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgbGx2bTo6VGltZVRyYWNlU2NvcGUgRnVuY1Nj b3BlKCJJbXByb3ZlTWVtb3J5T3BzUGFzczo6cnVuT25GdW5jdGlvbiIsIEYuZ2V0TmFtZSgpKTsK LS0jZW5kaWYKLSAgICAgYm9vbCBtb2RpZmllZEFueSA9IGZhbHNlOwotICAgICBmb3IgKGxsdm06 OkJhc2ljQmxvY2sgJkJCIDogRikgewotICAgICAgICAgbW9kaWZpZWRBbnkgfD0gcnVuT25CYXNp Y0Jsb2NrKEJCKTsKLUBAIC0zNDI0LDkgKzMzOTgsNyBAQCBsbHZtOjpWYWx1ZSAqbEdFUEFuZExv YWQobGx2bTo6VmFsdWUgKmJhc2VQdHIsIGludDY0X3Qgb2Zmc2V0LCBpbnQgYWxpZ24sIGxsdm06 OgotICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpUeXBlICp0eXBlKSB7Ci0gICAgIGxs dm06OlZhbHVlICpwdHIgPSBsR0VQSW5zdChiYXNlUHRyLCBMTFZNSW50NjQob2Zmc2V0KSwgIm5l d19iYXNlIiwgaW5zZXJ0QmVmb3JlKTsKLSAgICAgcHRyID0gbmV3IGxsdm06OkJpdENhc3RJbnN0 KHB0ciwgbGx2bTo6UG9pbnRlclR5cGU6OmdldCh0eXBlLCAwKSwgInB0cl9jYXN0IiwgaW5zZXJ0 QmVmb3JlKTsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPD0gSVNQQ19MTFZNXzlfMAotLSAgICBy ZXR1cm4gbmV3IGxsdm06OkxvYWRJbnN0KHB0ciwgImdhdGhlcl9sb2FkIiwgZmFsc2UgLyogbm90 IHZvbGF0aWxlICovLCBhbGlnbiwgaW5zZXJ0QmVmb3JlKTsKLS0jZWxpZiBJU1BDX0xMVk1fVkVS U0lPTiA9PSBJU1BDX0xMVk1fMTBfMAotKyNpZiBJU1BDX0xMVk1fVkVSU0lPTiA9PSBJU1BDX0xM Vk1fMTBfMAotICAgICByZXR1cm4gbmV3IGxsdm06OkxvYWRJbnN0KHB0ciwgImdhdGhlcl9sb2Fk IiwgZmFsc2UgLyogbm90IHZvbGF0aWxlICovLCBsbHZtOjpNYXliZUFsaWduKGFsaWduKSwgaW5z ZXJ0QmVmb3JlKTsKLSAjZWxzZSAvLyBMTFZNIDExLjArCi0gICAgIHJldHVybiBuZXcgbGx2bTo6 TG9hZEluc3QobGx2bTo6ZHluX2Nhc3Q8bGx2bTo6UG9pbnRlclR5cGU+KHB0ci0+Z2V0VHlwZSgp KS0+Z2V0UG9pbnRlckVsZW1lbnRUeXBlKCksIHB0ciwKLUBAIC00MTM1LDkgKzQxMDcsNyBAQCBi b29sIEdhdGhlckNvYWxlc2NlUGFzczo6cnVuT25CYXNpY0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sg JmJiKSB7Ci0gCi0gYm9vbCBHYXRoZXJDb2FsZXNjZVBhc3M6OnJ1bk9uRnVuY3Rpb24obGx2bTo6 RnVuY3Rpb24gJkYpIHsKLSAKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEw XzAKLSAgICAgbGx2bTo6VGltZVRyYWNlU2NvcGUgRnVuY1Njb3BlKCJHYXRoZXJDb2FsZXNjZVBh c3M6OnJ1bk9uRnVuY3Rpb24iLCBGLmdldE5hbWUoKSk7Ci0tI2VuZGlmCi0gICAgIGJvb2wgbW9k aWZpZWRBbnkgPSBmYWxzZTsKLSAgICAgZm9yIChsbHZtOjpCYXNpY0Jsb2NrICZCQiA6IEYpIHsK LSAgICAgICAgIG1vZGlmaWVkQW55IHw9IHJ1bk9uQmFzaWNCbG9jayhCQik7Ci1AQCAtNDQ2Nyw5 ICs0NDM3LDcgQEAgYm9vbCBSZXBsYWNlUHNldWRvTWVtb3J5T3BzUGFzczo6cnVuT25CYXNpY0Js b2NrKGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gCi0gYm9vbCBSZXBsYWNlUHNldWRvTWVtb3J5 T3BzUGFzczo6cnVuT25GdW5jdGlvbihsbHZtOjpGdW5jdGlvbiAmRikgewotIAotLSNpZiBJU1BD X0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICBsbHZtOjpUaW1lVHJhY2VTY29w ZSBGdW5jU2NvcGUoIlJlcGxhY2VQc2V1ZG9NZW1vcnlPcHNQYXNzOjpydW5PbkZ1bmN0aW9uIiwg Ri5nZXROYW1lKCkpOwotLSNlbmRpZgotICAgICBib29sIG1vZGlmaWVkQW55ID0gZmFsc2U7Ci0g ICAgIGZvciAobGx2bTo6QmFzaWNCbG9jayAmQkIgOiBGKSB7Ci0gICAgICAgICBtb2RpZmllZEFu eSB8PSBydW5PbkJhc2ljQmxvY2soQkIpOwotQEAgLTQ1NzMsOSArNDU0MSw3IEBAIGJvb2wgSXND b21waWxlVGltZUNvbnN0YW50UGFzczo6cnVuT25CYXNpY0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sg JmJiKSB7Ci0gCi0gYm9vbCBJc0NvbXBpbGVUaW1lQ29uc3RhbnRQYXNzOjpydW5PbkZ1bmN0aW9u KGxsdm06OkZ1bmN0aW9uICZGKSB7Ci0gCi0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENf TExWTV8xMF8wCi0gICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiSXNDb21waWxl VGltZUNvbnN0YW50UGFzczo6cnVuT25GdW5jdGlvbiIsIEYuZ2V0TmFtZSgpKTsKLS0jZW5kaWYK LSAgICAgYm9vbCBtb2RpZmllZEFueSA9IGZhbHNlOwotICAgICBmb3IgKGxsdm06OkJhc2ljQmxv Y2sgJkJCIDogRikgewotICAgICAgICAgbW9kaWZpZWRBbnkgfD0gcnVuT25CYXNpY0Jsb2NrKEJC KTsKLUBAIC01MjAxLDkgKzUxNjcsNyBAQCBib29sIFBlZXBob2xlUGFzczo6cnVuT25CYXNpY0Js b2NrKGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gCi0gYm9vbCBQZWVwaG9sZVBhc3M6OnJ1bk9u RnVuY3Rpb24obGx2bTo6RnVuY3Rpb24gJkYpIHsKLSAKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04g Pj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgbGx2bTo6VGltZVRyYWNlU2NvcGUgRnVuY1Njb3BlKCJQ ZWVwaG9sZVBhc3M6OnJ1bk9uRnVuY3Rpb24iLCBGLmdldE5hbWUoKSk7Ci0tI2VuZGlmCi0gICAg IGJvb2wgbW9kaWZpZWRBbnkgPSBmYWxzZTsKLSAgICAgZm9yIChsbHZtOjpCYXNpY0Jsb2NrICZC QiA6IEYpIHsKLSAgICAgICAgIG1vZGlmaWVkQW55IHw9IHJ1bk9uQmFzaWNCbG9jayhCQik7Ci1A QCAtNTI5OSw5ICs1MjYzLDcgQEAgYm9vbCBSZXBsYWNlU3RkbGliU2hpZnRQYXNzOjpydW5PbkJh c2ljQmxvY2sobGx2bTo6QmFzaWNCbG9jayAmYmIpIHsKLSAKLSBib29sIFJlcGxhY2VTdGRsaWJT aGlmdFBhc3M6OnJ1bk9uRnVuY3Rpb24obGx2bTo6RnVuY3Rpb24gJkYpIHsKLSAKLS0jaWYgSVNQ Q19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgbGx2bTo6VGltZVRyYWNlU2Nv cGUgRnVuY1Njb3BlKCJSZXBsYWNlU3RkbGliU2hpZnRQYXNzOjpydW5PbkZ1bmN0aW9uIiwgRi5n ZXROYW1lKCkpOwotLSNlbmRpZgotICAgICBib29sIG1vZGlmaWVkQW55ID0gZmFsc2U7Ci0gICAg IGZvciAobGx2bTo6QmFzaWNCbG9jayAmQkIgOiBGKSB7Ci0gICAgICAgICBtb2RpZmllZEFueSB8 PSBydW5PbkJhc2ljQmxvY2soQkIpOwotQEAgLTUzOTksOSArNTM2MSw3IEBAIGxsdm06Okluc3Ry dWN0aW9uICpGaXhCb29sZWFuU2VsZWN0UGFzczo6Zml4U2VsZWN0KGxsdm06OlNlbGVjdEluc3Qg KnNlbCwgbGx2bTo6Ci0gfQotIAotIGJvb2wgRml4Qm9vbGVhblNlbGVjdFBhc3M6OnJ1bk9uRnVu Y3Rpb24obGx2bTo6RnVuY3Rpb24gJkYpIHsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQ Q19MTFZNXzEwXzAKLSAgICAgbGx2bTo6VGltZVRyYWNlU2NvcGUgRnVuY1Njb3BlKCJGaXhCb29s ZWFuU2VsZWN0UGFzczo6cnVuT25GdW5jdGlvbiIsIEYuZ2V0TmFtZSgpKTsKLS0jZW5kaWYKLSAg ICAgYm9vbCBtb2RpZmllZEFueSA9IGZhbHNlOwotIAotICAgICByZXR1cm4gbW9kaWZpZWRBbnk7 Ci1AQCAtNTk2NCw5ICs1OTI0LDcgQEAgYm9vbCBHZW5YR2F0aGVyQ29hbGVzY2luZzo6cnVuT25C YXNpY0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gfQotIAotIGJvb2wgR2VuWEdhdGhl ckNvYWxlc2Npbmc6OnJ1bk9uRnVuY3Rpb24obGx2bTo6RnVuY3Rpb24gJkYpIHsKLS0jaWYgSVNQ Q19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgbGx2bTo6VGltZVRyYWNlU2Nv cGUgRnVuY1Njb3BlKCJHZW5YR2F0aGVyQ29hbGVzY2luZzo6cnVuT25GdW5jdGlvbiIsIEYuZ2V0 TmFtZSgpKTsKLS0jZW5kaWYKLSAgICAgYm9vbCBtb2RpZmllZEFueSA9IGZhbHNlOwotICAgICBm b3IgKGxsdm06OkJhc2ljQmxvY2sgJkJCIDogRikgewotICAgICAgICAgbW9kaWZpZWRBbnkgfD0g cnVuT25CYXNpY0Jsb2NrKEJCKTsKLUBAIC02MTEzLDkgKzYwNzEsNyBAQCBib29sIFByb21vdGVU b1ByaXZhdGVNZW1vcnlQYXNzOjpydW5PbkJhc2ljQmxvY2sobGx2bTo6QmFzaWNCbG9jayAmYmIp IHsKLSAKLSBib29sIFByb21vdGVUb1ByaXZhdGVNZW1vcnlQYXNzOjpydW5PbkZ1bmN0aW9uKGxs dm06OkZ1bmN0aW9uICZGKSB7Ci0gCi0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExW TV8xMF8wCi0gICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiUHJvbW90ZVRvUHJp dmF0ZU1lbW9yeVBhc3M6OnJ1bk9uRnVuY3Rpb24iLCBGLmdldE5hbWUoKSk7Ci0tI2VuZGlmCi0g ICAgIGJvb2wgbW9kaWZpZWRBbnkgPSBmYWxzZTsKLSAgICAgZm9yIChsbHZtOjpCYXNpY0Jsb2Nr ICZCQiA6IEYpIHsKLSAgICAgICAgIG1vZGlmaWVkQW55IHw9IHJ1bk9uQmFzaWNCbG9jayhCQik7 Ci1AQCAtNjE4MSw5ICs2MTM3LDcgQEAgYm9vbCBSZXBsYWNlTExWTUludHJpbnNpY3M6OnJ1bk9u QmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICZiYikgewotIAotIGJvb2wgUmVwbGFjZUxMVk1J bnRyaW5zaWNzOjpydW5PbkZ1bmN0aW9uKGxsdm06OkZ1bmN0aW9uICZGKSB7Ci0gCi0tI2lmIElT UENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06OlRpbWVUcmFjZVNj b3BlIEZ1bmNTY29wZSgiUmVwbGFjZUxMVk1JbnRyaW5zaWNzOjpydW5PbkZ1bmN0aW9uIiwgRi5n ZXROYW1lKCkpOwotLSNlbmRpZgotICAgICBib29sIG1vZGlmaWVkQW55ID0gZmFsc2U7Ci0gICAg IGZvciAobGx2bTo6QmFzaWNCbG9jayAmQkIgOiBGKSB7Ci0gICAgICAgICBtb2RpZmllZEFueSB8 PSBydW5PbkJhc2ljQmxvY2soQkIpOwotQEAgLTYyNzgsOSArNjIzMiw3IEBAIGJvb2wgUmVwbGFj ZVVuc3VwcG9ydGVkSW5zdHM6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICZiYikg ewotIAotIGJvb2wgUmVwbGFjZVVuc3VwcG9ydGVkSW5zdHM6OnJ1bk9uRnVuY3Rpb24obGx2bTo6 RnVuY3Rpb24gJkYpIHsKLSAKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEw XzAKLSAgICAgbGx2bTo6VGltZVRyYWNlU2NvcGUgRnVuY1Njb3BlKCJSZXBsYWNlVW5zdXBwb3J0 ZWRJbnN0czo6cnVuT25GdW5jdGlvbiIsIEYuZ2V0TmFtZSgpKTsKLS0jZW5kaWYKLSAgICAgYm9v bCBtb2RpZmllZEFueSA9IGZhbHNlOwotICAgICBmb3IgKGxsdm06OkJhc2ljQmxvY2sgJkJCIDog RikgewotICAgICAgICAgbW9kaWZpZWRBbnkgfD0gcnVuT25CYXNpY0Jsb2NrKEJCKTsKLUBAIC02 MzY5LDkgKzYzMjEsNyBAQCBib29sIENoZWNrVW5zdXBwb3J0ZWRJbnN0czo6cnVuT25CYXNpY0Js b2NrKGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gfQotIAotIGJvb2wgQ2hlY2tVbnN1cHBvcnRl ZEluc3RzOjpydW5PbkZ1bmN0aW9uKGxsdm06OkZ1bmN0aW9uICZGKSB7Ci0tI2lmIElTUENfTExW TV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIEZ1 bmNTY29wZSgiQ2hlY2tVbnN1cHBvcnRlZEluc3RzOjpydW5PbkZ1bmN0aW9uIiwgRi5nZXROYW1l KCkpOwotLSNlbmRpZgotICAgICBib29sIG1vZGlmaWVkQW55ID0gZmFsc2U7Ci0gICAgIGZvciAo bGx2bTo6QmFzaWNCbG9jayAmQkIgOiBGKSB7Ci0gICAgICAgICBtb2RpZmllZEFueSB8PSBydW5P bkJhc2ljQmxvY2soQkIpOwotQEAgLTY0NDAsOSArNjM5MCw3IEBAIGJvb2wgTWFuZ2xlT3BlbkNM QnVpbHRpbnM6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICZiYikgewotIH0KLSAK LSBib29sIE1hbmdsZU9wZW5DTEJ1aWx0aW5zOjpydW5PbkZ1bmN0aW9uKGxsdm06OkZ1bmN0aW9u ICZGKSB7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgIGxs dm06OlRpbWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiTWFuZ2xlT3BlbkNMQnVpbHRpbnM6OnJ1bk9u RnVuY3Rpb24iLCBGLmdldE5hbWUoKSk7Ci0tI2VuZGlmCi0gICAgIGJvb2wgbW9kaWZpZWRBbnkg PSBmYWxzZTsKLSAgICAgZm9yIChsbHZtOjpCYXNpY0Jsb2NrICZCQiA6IEYpIHsKLSAgICAgICAg IG1vZGlmaWVkQW55IHw9IHJ1bk9uQmFzaWNCbG9jayhCQik7Ci1AQCAtNjgyOCw5ICs2Nzc2LDcg QEAgYm9vbCBGaXhBZGRyZXNzU3BhY2U6OnJ1bk9uRnVuY3Rpb24obGx2bTo6RnVuY3Rpb24gJkYp IHsKLSAgICAgLy8gVHJhbnNmb3JtYXRpb25zIGFyZSBjb3JyZWN0IHdoZW4gdGhlIGZ1bmN0aW9u IGlzIG5vdCBpbnRlcm5hbC4KLSAgICAgLy8gVGhpcyBpcyBkdWUgdG8gYWRkcmVzcyBzcGFjZSBj YWxjdWxhdGlvbiBhbGdvcml0aG0uCi0gICAgIC8vIFRPRE86IHByb2JsZW1zIGNhbiBiZSBtZXQg aW4gY2FzZSBvZiBTdGFjayBDYWxscwotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xM Vk1fMTBfMAotICAgICBsbHZtOjpUaW1lVHJhY2VTY29wZSBGdW5jU2NvcGUoIkZpeEFkZHJlc3NT cGFjZTo6cnVuT25GdW5jdGlvbiIsIEYuZ2V0TmFtZSgpKTsKLS0jZW5kaWYKLSAgICAgaWYgKEYu Z2V0TGlua2FnZSgpID09IGxsdm06Okdsb2JhbFZhbHVlOjpMaW5rYWdlVHlwZXM6OkludGVybmFs TGlua2FnZSkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAKLUBAIC02ODU0LDkgKzY4MDAsNyBA QCBjbGFzcyBEZW1vdGVQSElzIDogcHVibGljIGxsdm06OkZ1bmN0aW9uUGFzcyB7Ci0gY2hhciBE ZW1vdGVQSElzOjpJRCA9IDA7Ci0gCi0gYm9vbCBEZW1vdGVQSElzOjpydW5PbkZ1bmN0aW9uKGxs dm06OkZ1bmN0aW9uICZGKSB7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8x MF8wCi0gICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiRGVtb3RlUEhJczo6cnVu T25GdW5jdGlvbiIsIEYuZ2V0TmFtZSgpKTsKLS0jZW5kaWYKLSAgICAgaWYgKEYuaXNEZWNsYXJh dGlvbigpIHx8IHNraXBGdW5jdGlvbihGKSkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg c3RkOjp2ZWN0b3I8bGx2bTo6SW5zdHJ1Y3Rpb24gKj4gV29ya0xpc3Q7Ci1kaWZmIC0tZ2l0IGEv c3JjL3R5cGUuY3BwIGIvc3JjL3R5cGUuY3BwCi1pbmRleCA2ODhhNGU4NzQuLmZhMGNiMDRkYiAx MDA2NDQKLS0tLSBhL3NyYy90eXBlLmNwcAotKysrIGIvc3JjL3R5cGUuY3BwCi1AQCAtMTgyMiwx NCArMTgyMiwxMCBAQCBsbHZtOjpESVR5cGUgKlN0cnVjdFR5cGU6OkdldERJVHlwZShsbHZtOjpE SVNjb3BlICpzY29wZSkgY29uc3QgewotICAgICBsbHZtOjpESUZpbGUgKmRpRmlsZSA9IHBvcy5H ZXRESUZpbGUoKTsKLSAgICAgbGx2bTo6RElOYW1lc3BhY2UgKmRpU3BhY2UgPSBwb3MuR2V0RElO YW1lc3BhY2UoKTsKLSAgICAgcmV0dXJuIG0tPmRpQnVpbGRlci0+Y3JlYXRlU3RydWN0VHlwZShk aVNwYWNlLCBHZXRTdHJpbmcoKSwgZGlGaWxlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHBvcy5maXJzdF9saW5lLCAgICAgICAgICAvLyBMaW5lIG51bWJlcgot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dC0+Z2V0U2l6 ZUluQml0cygpLCAvLyBTaXplIGluIGJpdHMKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPD0gSVNQ Q19MTFZNXzlfMAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxh eW91dC0+Z2V0QWxpZ25tZW50KCkgKiA4LCAvLyBBbGlnbm1lbnQgaW4gYml0cwotLSNlbHNlICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvLyBMTFZNIDEwLjArCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcG9zLmZpcnN0X2xpbmUsICAgICAgICAgICAgICAgICAgICAgLy8gTGluZSBudW1iZXIK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQtPmdldFNp emVJbkJpdHMoKSwgICAgICAgICAgICAvLyBTaXplIGluIGJpdHMKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQtPmdldEFsaWdubWVudCgpLnZhbHVlKCkg KiA4LCAvLyBBbGlnbm1lbnQgaW4gYml0cwotLSNlbmRpZgotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGxsdm06OkRJTm9kZTo6RmxhZ1plcm8sIC8vIEZsYWdzCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6RElOb2RlOjpG bGFnWmVybywgICAgICAgICAgICAgLy8gRmxhZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBOVUxMLCBlbGVtZW50cyk7Ci0gfQotIAotZGlmZiAtLWdpdCBhL3Rl c3RzL2xpdC10ZXN0cy8xNzcxLmlzcGMgYi90ZXN0cy9saXQtdGVzdHMvMTc3MS5pc3BjCi1pbmRl eCA5ODA2NGQ4NGQuLjRmZWI3M2RkNyAxMDA2NDQKLS0tLSBhL3Rlc3RzL2xpdC10ZXN0cy8xNzcx LmlzcGMKLSsrKyBiL3Rlc3RzL2xpdC10ZXN0cy8xNzcxLmlzcGMKLUBAIC01LDcgKzUsNiBAQAot IC8vIFJVTjogJXtpc3BjfSAlcyAtLXRhcmdldD1zc2U0LWkxNng4IC0tZW1pdC1hc20gLW8gLSB8 IEZpbGVDaGVjayAlcyAtY2hlY2stcHJlZml4PUNIRUNLU1NFNF9JMTZYOAotIC8vIFJVTjogJXtp c3BjfSAlcyAtLXRhcmdldD1zc2U0LWk4eDE2IC0tZW1pdC1hc20gLW8gLSB8IEZpbGVDaGVjayAl cyAtY2hlY2stcHJlZml4PUNIRUNLU1NFNF9JOFgxNgotIAotLS8vIFJFUVVJUkVTOiBMTFZNXzEw XzArCi0gLy8gUkVRVUlSRVM6IFg4Nl9FTkFCTEVECi0gCi0gLy8gQ0hFQ0tBVlgyX0kzMlg4OiB7 e1thLXpdKnhvclthLXpdKn19ICAleG1tMCwgJXhtbTAsICV4bW0wCi1kaWZmIC0tZ2l0IGEvdGVz dHMvbGl0LXRlc3RzLzE4NDQuaXNwYyBiL3Rlc3RzL2xpdC10ZXN0cy8xODQ0LmlzcGMKLWluZGV4 IDc5M2E4ODY2Yy4uMTg5ZWRmNGMzIDEwMDY0NAotLS0tIGEvdGVzdHMvbGl0LXRlc3RzLzE4NDQu aXNwYwotKysrIGIvdGVzdHMvbGl0LXRlc3RzLzE4NDQuaXNwYwotQEAgLTYsOSArNiw2IEBACi0g Ci0gLy8gUkVRVUlSRVM6IFg4Nl9FTkFCTEVECi0gCi0tLy8gSXQgZG9lc24ndCB3b3JrIGZvciBh bnl0aGluZyBlYXJsaWVyIHRoYW4gMTAuMCwgYnV0IGl0IHdpbGwgbm90IGJlIGZpeGVkLCBzbyBk b24ndCBydW4uCi0tLy8gUkVRVUlSRVM6IExMVk1fMTBfMCsKLS0KLSBleHRlcm4gdW5pZm9ybSB1 bnNpZ25lZCBpbnQ2NCB2YXJfNjsKLSBleHRlcm4gdW5pZm9ybSB1bnNpZ25lZCBpbnQxNiB2YXJf MTE7Ci0gZXh0ZXJuIHVuaWZvcm0gYm9vbCBhcnJfMjAxIFsxXSBbMTVdIFsyMF07Ci1kaWZmIC0t Z2l0IGEvdGVzdHMvbGl0LXRlc3RzLzE5MjYuaXNwYyBiL3Rlc3RzL2xpdC10ZXN0cy8xOTI2Lmlz cGMKLWluZGV4IDcwZjdjYzNjMi4uNzkyMWM5MWE2IDEwMDY0NAotLS0tIGEvdGVzdHMvbGl0LXRl c3RzLzE5MjYuaXNwYwotKysrIGIvdGVzdHMvbGl0LXRlc3RzLzE5MjYuaXNwYwotQEAgLTIsOCAr Miw2IEBACi0gLy8gUlVOOiBjYXQgJVQvMTkyNi5vLmpzb24gXAotIC8vIFJVTjogICB8IEZpbGVD aGVjayAlcwotIAotLS8vIFJFUVVJUkVTOiBMTFZNXzEwXzArCi0tCi0gLy8gQ0hFQ0s6ICJ0cmFj ZUV2ZW50cyIKLSAvLyBDSEVDSzogImRldGFpbCIKLSBleHBvcnQgdW5pZm9ybSBpbnQgZm9vKHVu aWZvcm0gaW50IGFbXSwgdW5pZm9ybSBpbnQgY291bnQpIHsKLWRpZmYgLS1naXQgYS90ZXN0cy9s aXQtdGVzdHMvY3B1c194ODYuaXNwYyBiL3Rlc3RzL2xpdC10ZXN0cy9jcHVzX3g4Ni5pc3BjCi1p bmRleCA1MTZlZmRkNGMuLjRkNjAxODZmNiAxMDA2NDQKLS0tLSBhL3Rlc3RzL2xpdC10ZXN0cy9j cHVzX3g4Ni5pc3BjCi0rKysgYi90ZXN0cy9saXQtdGVzdHMvY3B1c194ODYuaXNwYwotQEAgLTI0 LDYgKzI0LDggQEAKLSAvLzsgUlVOOiAle2lzcGN9ICVzIC1vICV0Lm8gLS1ub3N0ZGxpYiAtLXRh cmdldD1zc2UyLWkzMng0IC0tY3B1PWljbAotIC8vOyBSVU46ICV7aXNwY30gJXMgLW8gJXQubyAt LW5vc3RkbGliIC0tdGFyZ2V0PXNzZTItaTMyeDQgLS1jcHU9aWNlbGFrZS1zZXJ2ZXIKLSAvLzsg UlVOOiAle2lzcGN9ICVzIC1vICV0Lm8gLS1ub3N0ZGxpYiAtLXRhcmdldD1zc2UyLWkzMng0IC0t Y3B1PWljeAotKy8vOyBSVU46ICV7aXNwY30gJXMgLW8gJXQubyAtLW5vc3RkbGliIC0tdGFyZ2V0 PXNzZTItaTMyeDQgLS1jcHU9dGlnZXJsYWtlCi0rLy87IFJVTjogJXtpc3BjfSAlcyAtbyAldC5v IC0tbm9zdGRsaWIgLS10YXJnZXQ9c3NlMi1pMzJ4NCAtLWNwdT10Z2wKLSAKLSAvLyBSRVFVSVJF UzogWDg2X0VOQUJMRUQKLSAKLWRpZmYgLS1naXQgYS90ZXN0cy9saXQtdGVzdHMvY3B1c194ODZf bGx2bTEwLmlzcGMgYi90ZXN0cy9saXQtdGVzdHMvY3B1c194ODZfbGx2bTEwLmlzcGMKLWRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggZWYwMDAwMGU1Li4wMDAwMDAwMDAKLS0tLSBhL3Rl c3RzL2xpdC10ZXN0cy9jcHVzX3g4Nl9sbHZtMTAuaXNwYwotKysrIC9kZXYvbnVsbAotQEAgLTEs MTEgKzAsMCBAQAotLS8vIFRoZSB0ZXN0IGNoZWNrcyB0aGF0IGNwdSBkZWZpbml0aW9ucyAoaW5j bHVkaW5nIGFsbCBzeW5vbnltcykgYXJlIHN1Y2Nlc3NmdWxseSBjb25zdW1lZCBieSBjb21waWxl ci4KLS0KLS0vLzsgUlVOOiAle2lzcGN9ICVzIC1vICV0Lm8gLS1ub3N0ZGxpYiAtLXRhcmdldD1z c2UyLWkzMng0IC0tY3B1PXRpZ2VybGFrZQotLS8vOyBSVU46ICV7aXNwY30gJXMgLW8gJXQubyAt LW5vc3RkbGliIC0tdGFyZ2V0PXNzZTItaTMyeDQgLS1jcHU9dGdsCi0tCi0tLy8gUkVRVUlSRVM6 IFg4Nl9FTkFCTEVECi0tLy8gUkVRVUlSRVM6IExMVk1fMTBfMCsKLS0KLS11bmlmb3JtIGludCBp OwotLQotLXZvaWQgZm9vKCkge30KLWRpZmYgLS1naXQgYS90ZXN0cy9saXQtdGVzdHMvbGl0LmNm ZyBiL3Rlc3RzL2xpdC10ZXN0cy9saXQuY2ZnCi1pbmRleCAxNzAxNjU3OWQuLjA0NWU2OTQzNyAx MDA2NDQKLS0tLSBhL3Rlc3RzL2xpdC10ZXN0cy9saXQuY2ZnCi0rKysgYi90ZXN0cy9saXQtdGVz dHMvbGl0LmNmZwotQEAgLTMwLDExICszMCw2IEBAIHByaW50KCJDb25maWc6IikKLSAKLSAjIExM Vk0gdmVyc2lvbgotIGxsdm1fdmVyc2lvbiA9IExvb3NlVmVyc2lvbihpc3BjX2xsdm1fdmVyc2lv bl9udW1iZXIpCi0taWYgbGx2bV92ZXJzaW9uID49IExvb3NlVmVyc2lvbigiMTAuMC4wIik6Ci0t ICAgIHByaW50KCJMTFZNXzEwXzArOiBZRVMiKQotLSAgICBjb25maWcuYXZhaWxhYmxlX2ZlYXR1 cmVzLmFkZCgiTExWTV8xMF8wKyIpCi0tZWxzZToKLS0gICAgcHJpbnQoIkxMVk1fMTBfMCs6IE5P IikKLSAKLSBpZiBsbHZtX3ZlcnNpb24gPj0gTG9vc2VWZXJzaW9uKCIxMi4wLjAiKToKLSAgICAg cHJpbnQoIkxMVk1fMTJfMCs6IFlFUyIpCmRpZmYgLS1naXQgYS9zcmNwa2dzL2lzcGMvcGF0Y2hl cy9sbHZtMTItMDAzLnBhdGNoIGIvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwMy5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQyM2FmYzllM2Y5Li4wMDAwMDAwMDAw MDAKLS0tIGEvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwMy5wYXRjaAorKysgL2Rldi9u dWxsCkBAIC0xLDE1MDQgKzAsMCBAQAotRnJvbSAxODUxZDE4YjIxM2RiYWQxNjk5MzcwNzYxNzZi MmQ1NTA5NzMzYzc2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGVlcGFrIFJhamVu ZHJha3VtYXJhbiA8ZGVlcGFrLnJhamVuZHJha3VtYXJhbkBpbnRlbC5jb20+Ci1EYXRlOiBUdWUs IDEyIEphbiAyMDIxIDIyOjE1OjEyIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGZpeGVzICMxODIx IC0gUmVtb3ZpbmcgTExWTUdldE5hbWUoKSBhbmQgc3dpdGNoaW5nIHRvCi0gTExWTTo6VHdpbmUu Ci0KLS0tLQotIHNyYy9jdHguY3BwICAgICAgfCAzMDQgKysrKysrKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBzcmMvY3R4LmggICAgICAgIHwgIDcyICsrKysrLS0t LS0tCi0gc3JjL2V4cHIuY3BwICAgICB8ICAzNiArKystLS0KLSBzcmMvbGx2bXV0aWwuY3BwIHwg IDE3IC0tLQotIHNyYy9sbHZtdXRpbC5oICAgfCAgIDUgLQotIHNyYy9vcHQuY3BwICAgICAgfCAx MDMgKysrKysrKysrLS0tLS0tLQotIDYgZmlsZXMgY2hhbmdlZCwgMjU1IGluc2VydGlvbnMoKyks IDI4MiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jdHguY3BwIGIvc3JjL2N0eC5j cHAKLWluZGV4IDQyYzRlYTA5ZC4uZGVkNTI0YjcxIDEwMDY0NAotLS0tIGEvc3JjL2N0eC5jcHAK LSsrKyBiL3NyYy9jdHguY3BwCi1AQCAtMTAyMCw4ICsxMDIwLDggQEAgdm9pZCBGdW5jdGlvbkVt aXRDb250ZXh0OjpFbWl0Q2FzZUxhYmVsKGludCB2YWx1ZSwgYm9vbCBjaGVja01hc2ssIFNvdXJj ZVBvcyBwb3MKLSAgICAgbGx2bTo6QmFzaWNCbG9jayAqYmJDYXNlSW1wbCA9IE5VTEw7Ci0gICAg IGlmIChlbWl0R2VuWEhhcmR3YXJlTWFzaygpKSB7Ci0gICAgICAgICAvLyBDcmVhdGUgYmFzaWMg YmxvY2sgd2l0aCBhY3R1YWwgY2FzZSBpbXBsZW1lbnRhdGlvbgotLSAgICAgICAgc3RkOjpzdHJp bmcgYmJOYW1lID0gYmJDYXNlLT5nZXROYW1lKCkuc3RyKCkgKyAiX2ltcGwiOwotLSAgICAgICAg YmJDYXNlSW1wbCA9IENyZWF0ZUJhc2ljQmxvY2soYmJOYW1lLmNfc3RyKCksIGJiQ2FzZSk7Ci0r ICAgICAgICBsbHZtOjpUd2luZSBiYk5hbWUgPSBsbHZtOjpUd2luZShiYkNhc2UtPmdldE5hbWUo KSkgKyAiX2ltcGwiOwotKyAgICAgICAgYmJDYXNlSW1wbCA9IENyZWF0ZUJhc2ljQmxvY2soYmJO YW1lLCBiYkNhc2UpOwotICAgICB9Ci0gI2VuZGlmCi0gCi1AQCAtMTE4NSw3ICsxMTg1LDcgQEAg Ym9vbCBGdW5jdGlvbkVtaXRDb250ZXh0Ojppbml0TGFiZWxCQmxvY2tzKEFTVE5vZGUgKm5vZGUs IHZvaWQgKmRhdGEpIHsKLSAgICAgaWYgKGN0eC0+bGFiZWxNYXAuZmluZChscy0+bmFtZSkgIT0g Y3R4LT5sYWJlbE1hcC5lbmQoKSkKLSAgICAgICAgIEVycm9yKGxzLT5wb3MsICJNdWx0aXBsZSBs YWJlbHMgbmFtZWQgXCIlc1wiIGluIGZ1bmN0aW9uLiIsIGxzLT5uYW1lLmNfc3RyKCkpOwotICAg ICBlbHNlIHsKLS0gICAgICAgIGxsdm06OkJhc2ljQmxvY2sgKmJiID0gY3R4LT5DcmVhdGVCYXNp Y0Jsb2NrKGxzLT5uYW1lLmNfc3RyKCkpOwotKyAgICAgICAgbGx2bTo6QmFzaWNCbG9jayAqYmIg PSBjdHgtPkNyZWF0ZUJhc2ljQmxvY2sobHMtPm5hbWUpOwotICAgICAgICAgY3R4LT5sYWJlbE1h cFtscy0+bmFtZV0gPSBiYjsKLSAgICAgfQotICAgICByZXR1cm4gdHJ1ZTsKLUBAIC0xMjk5LDcg KzEyOTksNyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6QW55KGxsdm06OlZh bHVlICptYXNrKSB7Ci0gICAgIC8vIFdlIGNhbiBhY3R1YWxseSBjYWxsIGVpdGhlciBvbmUsIHNp bmNlIGJvdGggYXJlIGkzMnMgYXMgZmFyIGFzCi0gICAgIC8vIExMVk0ncyB0eXBlIHN5c3RlbSBp cyBjb25jZXJuZWQuLi4KLSAgICAgbGx2bTo6RnVuY3Rpb24gKmZtbSA9IG1tWzBdLT5mdW5jdGlv bjsKLS0gICAgcmV0dXJuIENhbGxJbnN0KGZtbSwgTlVMTCwgbWFzaywgTExWTUdldE5hbWUobWFz aywgIl9hbnkiKSk7Ci0rICAgIHJldHVybiBDYWxsSW5zdChmbW0sIE5VTEwsIG1hc2ssIGxsdm06 OlR3aW5lKG1hc2stPmdldE5hbWUoKSkgKyAiX2FueSIpOwotIH0KLSAKLSBsbHZtOjpWYWx1ZSAq RnVuY3Rpb25FbWl0Q29udGV4dDo6QWxsKGxsdm06OlZhbHVlICptYXNrKSB7Ci1AQCAtMTMxNSw3 ICsxMzE1LDcgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkFsbChsbHZtOjpW YWx1ZSAqbWFzaykgewotICAgICAvLyBXZSBjYW4gYWN0dWFsbHkgY2FsbCBlaXRoZXIgb25lLCBz aW5jZSBib3RoIGFyZSBpMzJzIGFzIGZhciBhcwotICAgICAvLyBMTFZNJ3MgdHlwZSBzeXN0ZW0g aXMgY29uY2VybmVkLi4uCi0gICAgIGxsdm06OkZ1bmN0aW9uICpmbW0gPSBtbVswXS0+ZnVuY3Rp b247Ci0tICAgIHJldHVybiBDYWxsSW5zdChmbW0sIE5VTEwsIG1hc2ssIExMVk1HZXROYW1lKG1h c2ssICJfYWxsIikpOwotKyAgICByZXR1cm4gQ2FsbEluc3QoZm1tLCBOVUxMLCBtYXNrLCBsbHZt OjpUd2luZShtYXNrLT5nZXROYW1lKCkpICsgIl9hbGwiKTsKLSB9Ci0gCi0gbGx2bTo6VmFsdWUg KkZ1bmN0aW9uRW1pdENvbnRleHQ6Ok5vbmUobGx2bTo6VmFsdWUgKm1hc2spIHsKLUBAIC0xMzMx LDcgKzEzMzEsNyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6Tm9uZShsbHZt OjpWYWx1ZSAqbWFzaykgewotICAgICAvLyBXZSBjYW4gYWN0dWFsbHkgY2FsbCBlaXRoZXIgb25l LCBzaW5jZSBib3RoIGFyZSBpMzJzIGFzIGZhciBhcwotICAgICAvLyBMTFZNJ3MgdHlwZSBzeXN0 ZW0gaXMgY29uY2VybmVkLi4uCi0gICAgIGxsdm06OkZ1bmN0aW9uICpmbW0gPSBtbVswXS0+ZnVu Y3Rpb247Ci0tICAgIHJldHVybiBDYWxsSW5zdChmbW0sIE5VTEwsIG1hc2ssIExMVk1HZXROYW1l KG1hc2ssICJfbm9uZSIpKTsKLSsgICAgcmV0dXJuIENhbGxJbnN0KGZtbSwgTlVMTCwgbWFzaywg bGx2bTo6VHdpbmUobWFzay0+Z2V0TmFtZSgpKSArICJfbm9uZSIpOwotIH0KLSAKLSBsbHZtOjpW YWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6TGFuZU1hc2sobGx2bTo6VmFsdWUgKnYpIHsKLUBA IC0xMzQ5LDcgKzEzNDksNyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6TGFu ZU1hc2sobGx2bTo6VmFsdWUgKnYpIHsKLSAgICAgLy8gV2UgY2FuIGFjdHVhbGx5IGNhbGwgZWl0 aGVyIG9uZSwgc2luY2UgYm90aCBhcmUgaTMycyBhcyBmYXIgYXMKLSAgICAgLy8gTExWTSdzIHR5 cGUgc3lzdGVtIGlzIGNvbmNlcm5lZC4uLgotICAgICBsbHZtOjpGdW5jdGlvbiAqZm1tID0gbW1b MF0tPmZ1bmN0aW9uOwotLSAgICByZXR1cm4gQ2FsbEluc3QoZm1tLCBOVUxMLCB2LCBMTFZNR2V0 TmFtZSh2LCAiX21vdm1zayIpKTsKLSsgICAgcmV0dXJuIENhbGxJbnN0KGZtbSwgTlVMTCwgdiwg bGx2bTo6VHdpbmUodi0+Z2V0TmFtZSgpKSArICJfbW92bXNrIik7Ci0gfQotIAotIGxsdm06OlZh bHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpNYXNrc0FsbEVxdWFsKGxsdm06OlZhbHVlICp2MSwg bGx2bTo6VmFsdWUgKnYyKSB7Ci1AQCAtMTM2NCwxMSArMTM2NCwxMiBAQCBsbHZtOjpWYWx1ZSAq RnVuY3Rpb25FbWl0Q29udGV4dDo6TWFza3NBbGxFcXVhbChsbHZtOjpWYWx1ZSAqdjEsIGxsdm06 OlZhbHVlICp2MgotICNlbHNlCi0gICAgIGlmIChnLT50YXJnZXQtPmdldEFyY2goKSA9PSBBcmNo Ojp3YXNtMzIpIHsKLSAgICAgICAgIGxsdm06OkZ1bmN0aW9uICpmbW0gPSBtLT5tb2R1bGUtPmdl dEZ1bmN0aW9uKCJfX3dhc21fY21wX21za19lcSIpOwotLSAgICAgICAgcmV0dXJuIENhbGxJbnN0 KGZtbSwgTlVMTCwge3YxLCB2Mn0sIExMVk1HZXROYW1lKCJ3YXNtX2NtcF9tc2tfZXEiLCB2MSwg djIpKTsKLSsgICAgICAgIHJldHVybiBDYWxsSW5zdChmbW0sIE5VTEwsIHt2MSwgdjJ9LCAoKGxs dm06OlR3aW5lKCJ3YXNtX2NtcF9tc2tfZXFfIikgKyB2MS0+Z2V0TmFtZSgpKSArICJfIikgKyB2 Mi0+Z2V0TmFtZSgpKTsKLSAgICAgfQotICAgICBsbHZtOjpWYWx1ZSAqbW0xID0gTGFuZU1hc2so djEpOwotICAgICBsbHZtOjpWYWx1ZSAqbW0yID0gTGFuZU1hc2sodjIpOwotLSAgICByZXR1cm4g Q21wSW5zdChsbHZtOjpJbnN0cnVjdGlvbjo6SUNtcCwgbGx2bTo6Q21wSW5zdDo6SUNNUF9FUSwg bW0xLCBtbTIsIExMVk1HZXROYW1lKCJlcXVhbCIsIHYxLCB2MikpOwotKyAgICByZXR1cm4gQ21w SW5zdChsbHZtOjpJbnN0cnVjdGlvbjo6SUNtcCwgbGx2bTo6Q21wSW5zdDo6SUNNUF9FUSwgbW0x LCBtbTIsCi0rICAgICAgICAgICAgICAgICAgICgobGx2bTo6VHdpbmUoImVxdWFsXyIpICsgdjEt PmdldE5hbWUoKSkgKyAiXyIpICsgdjItPmdldE5hbWUoKSk7Ci0gI2VuZGlmCi0gfQotIAotQEAg LTEzOTIsNyArMTM5Myw3IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpHZXRT dHJpbmdQdHIoY29uc3Qgc3RkOjpzdHJpbmcgJnN0cikgewotICAgICByZXR1cm4gbmV3IGxsdm06 OkJpdENhc3RJbnN0KGxzdHJQdHIsIExMVk1UeXBlczo6Vm9pZFBvaW50ZXJUeXBlLCAic3RyX3Zv aWRfcHRyIiwgYmJsb2NrKTsKLSB9Ci0gCi0tbGx2bTo6QmFzaWNCbG9jayAqRnVuY3Rpb25FbWl0 Q29udGV4dDo6Q3JlYXRlQmFzaWNCbG9jayhjb25zdCBjaGFyICpuYW1lLCBsbHZtOjpCYXNpY0Js b2NrICppbnNlcnRBZnRlcikgewotK2xsdm06OkJhc2ljQmxvY2sgKkZ1bmN0aW9uRW1pdENvbnRl eHQ6OkNyZWF0ZUJhc2ljQmxvY2soY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUsIGxsdm06OkJhc2lj QmxvY2sgKmluc2VydEFmdGVyKSB7Ci0gICAgIGxsdm06OkJhc2ljQmxvY2sgKm5ld0JCID0gbGx2 bTo6QmFzaWNCbG9jazo6Q3JlYXRlKCpnLT5jdHgsIG5hbWUsIGxsdm1GdW5jdGlvbik7Ci0gICAg IGlmIChpbnNlcnRBZnRlcikKLSAgICAgICAgIG5ld0JCLT5tb3ZlQWZ0ZXIoaW5zZXJ0QWZ0ZXIp OwotQEAgLTE0MTYsMTQgKzE0MTcsMTUgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRl eHQ6OkkxVmVjVG9Cb29sVmVjKGxsdm06OlZhbHVlICpiKSB7Ci0gCi0gICAgICAgICBmb3IgKHVu c2lnbmVkIGludCBpID0gMDsgaSA8IGF0LT5nZXROdW1FbGVtZW50cygpOyArK2kpIHsKLSAgICAg ICAgICAgICBsbHZtOjpWYWx1ZSAqZWx0ID0gRXh0cmFjdEluc3QoYiwgaSk7Ci0tICAgICAgICAg ICAgbGx2bTo6VmFsdWUgKnNleHQgPSBTd2l0Y2hCb29sU2l6ZShlbHQsIExMVk1UeXBlczo6Qm9v bFZlY3RvclN0b3JhZ2VUeXBlLCBMTFZNR2V0TmFtZShlbHQsICJfdG9fYm9vbHZlYyIpKTsKLSsg ICAgICAgICAgICBsbHZtOjpWYWx1ZSAqc2V4dCA9Ci0rICAgICAgICAgICAgICAgIFN3aXRjaEJv b2xTaXplKGVsdCwgTExWTVR5cGVzOjpCb29sVmVjdG9yU3RvcmFnZVR5cGUsIGxsdm06OlR3aW5l KGVsdC0+Z2V0TmFtZSgpKSArICJfdG9fYm9vbHZlYyIpOwotICAgICAgICAgICAgIHJldCA9IElu c2VydEluc3QocmV0LCBzZXh0LCBpKTsKLSAgICAgICAgIH0KLSAgICAgICAgIHJldHVybiByZXQ7 Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAgICAvLyBGb3Igbm9uLWFycmF5IHR5cGVzLCBjb252ZXJ0 IHRvICdMTFZNVHlwZXM6OkJvb2xWZWN0b3JUeXBlJyBpZgotICAgICAgICAgLy8gbmVjZXNzYXJ5 LgotLSAgICAgICAgcmV0dXJuIFN3aXRjaEJvb2xTaXplKGIsIExMVk1UeXBlczo6Qm9vbFZlY3Rv clR5cGUsIExMVk1HZXROYW1lKGIsICJfdG9fYm9vbHZlYyIpKTsKLSsgICAgICAgIHJldHVybiBT d2l0Y2hCb29sU2l6ZShiLCBMTFZNVHlwZXM6OkJvb2xWZWN0b3JUeXBlLCBsbHZtOjpUd2luZShi LT5nZXROYW1lKCkpICsgIl90b19ib29sdmVjIik7Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMTU2Myw3 ICsxNTY1LDcgQEAgc3RhdGljIGludCBsQXJyYXlWZWN0b3JXaWR0aChsbHZtOjpUeXBlICp0KSB7 Ci0gfQotIAotIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpCaW5hcnlPcGVyYXRv cihsbHZtOjpJbnN0cnVjdGlvbjo6QmluYXJ5T3BzIGluc3QsIGxsdm06OlZhbHVlICp2MCwgbGx2 bTo6VmFsdWUgKnYxLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBjaGFyICpuYW1lKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIGlm ICh2MCA9PSBOVUxMIHx8IHYxID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50 UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLUBAIC0xNTcz LDcgKzE1NzUsNyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6QmluYXJ5T3Bl cmF0b3IobGx2bTo6SW5zdHJ1Y3Rpb246OkJpbmFyeU9wcyBpbgotICAgICBsbHZtOjpUeXBlICp0 eXBlID0gdjAtPmdldFR5cGUoKTsKLSAgICAgaW50IGFycmF5U2l6ZSA9IGxBcnJheVZlY3Rvcldp ZHRoKHR5cGUpOwotICAgICBpZiAoYXJyYXlTaXplID09IDApIHsKLS0gICAgICAgIGxsdm06Oklu c3RydWN0aW9uICpib3AgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlKGluc3QsIHYwLCB2 MSwgbmFtZSA/IG5hbWUgOiAiIiwgYmJsb2NrKTsKLSsgICAgICAgIGxsdm06Okluc3RydWN0aW9u ICpib3AgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlKGluc3QsIHYwLCB2MSwgbmFtZSwg YmJsb2NrKTsKLSAgICAgICAgIEFkZERlYnVnUG9zKGJvcCk7Ci0gICAgICAgICByZXR1cm4gYm9w OwotICAgICB9IGVsc2UgewotQEAgLTE1OTEsNyArMTU5Myw3IEBAIGxsdm06OlZhbHVlICpGdW5j dGlvbkVtaXRDb250ZXh0OjpCaW5hcnlPcGVyYXRvcihsbHZtOjpJbnN0cnVjdGlvbjo6QmluYXJ5 T3BzIGluCi0gICAgIH0KLSB9Ci0gCi0tbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6 Ok5vdE9wZXJhdG9yKGxsdm06OlZhbHVlICp2LCBjb25zdCBjaGFyICpuYW1lKSB7Ci0rbGx2bTo6 VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6Ok5vdE9wZXJhdG9yKGxsdm06OlZhbHVlICp2LCBj b25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBpZiAodiA9PSBOVUxMKSB7Ci0gICAgICAg ICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAgICAgcmV0 dXJuIE5VTEw7Ci1AQCAtMTYwMywxNCArMTYwNSwxNCBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25F bWl0Q29udGV4dDo6Tm90T3BlcmF0b3IobGx2bTo6VmFsdWUgKnYsIGNvbnN0IGNoYXIgKm5hbWUp Ci0gICAgIGxsdm06OlR5cGUgKnR5cGUgPSB2LT5nZXRUeXBlKCk7Ci0gICAgIGludCBhcnJheVNp emUgPSBsQXJyYXlWZWN0b3JXaWR0aCh0eXBlKTsKLSAgICAgaWYgKGFycmF5U2l6ZSA9PSAwKSB7 Ci0tICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqYmluc3QgPSBsbHZtOjpCaW5hcnlPcGVyYXRv cjo6Q3JlYXRlTm90KHYsIG5hbWUgPyBuYW1lIDogIm5vdCIsIGJibG9jayk7Ci0rICAgICAgICBs bHZtOjpJbnN0cnVjdGlvbiAqYmluc3QgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlTm90 KHYsIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gIm5vdCIgOiBuYW1lLCBiYmxvY2spOwotICAg ICAgICAgQWRkRGVidWdQb3MoYmluc3QpOwotICAgICAgICAgcmV0dXJuIGJpbnN0OwotICAgICB9 IGVsc2UgewotICAgICAgICAgbGx2bTo6VmFsdWUgKnJldCA9IGxsdm06OlVuZGVmVmFsdWU6Omdl dCh0eXBlKTsKLSAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kpIHsK LSAgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqYSA9IEV4dHJhY3RJbnN0KHYsIGkpOwotLSAgICAg ICAgICAgIGxsdm06OlZhbHVlICpvcCA9IGxsdm06OkJpbmFyeU9wZXJhdG9yOjpDcmVhdGVOb3Qo YSwgbmFtZSA/IG5hbWUgOiAibm90IiwgYmJsb2NrKTsKLSsgICAgICAgICAgICBsbHZtOjpWYWx1 ZSAqb3AgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlTm90KGEsIG5hbWUuaXNUcml2aWFs bHlFbXB0eSgpID8gIm5vdCIgOiBuYW1lLCBiYmxvY2spOwotICAgICAgICAgICAgIEFkZERlYnVn UG9zKG9wKTsKLSAgICAgICAgICAgICByZXQgPSBJbnNlcnRJbnN0KHJldCwgb3AsIGkpOwotICAg ICAgICAgfQotQEAgLTE2MzgsNyArMTY0MCw3IEBAIHN0YXRpYyBsbHZtOjpUeXBlICpsR2V0TWF0 Y2hpbmdCb29sVmVjdG9yVHlwZShsbHZtOjpUeXBlICp0eXBlKSB7Ci0gfQotIAotIGxsdm06OlZh bHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpDbXBJbnN0KGxsdm06Okluc3RydWN0aW9uOjpPdGhl ck9wcyBpbnN0LCBsbHZtOjpDbXBJbnN0OjpQcmVkaWNhdGUgcHJlZCwKLS0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqdjAsIGxsdm06OlZhbHVl ICp2MSwgY29uc3QgY2hhciAqbmFtZSkgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGxsdm06OlZhbHVlICp2MCwgbGx2bTo6VmFsdWUgKnYxLCBjb25zdCBsbHZt OjpUd2luZSAmbmFtZSkgewotICAgICBpZiAodjAgPT0gTlVMTCB8fCB2MSA9PSBOVUxMKSB7Ci0g ICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAg ICAgcmV0dXJuIE5VTEw7Ci1AQCAtMTY0OCw3ICsxNjUwLDggQEAgbGx2bTo6VmFsdWUgKkZ1bmN0 aW9uRW1pdENvbnRleHQ6OkNtcEluc3QobGx2bTo6SW5zdHJ1Y3Rpb246Ok90aGVyT3BzIGluc3Qs IGxsdm0KLSAgICAgbGx2bTo6VHlwZSAqdHlwZSA9IHYwLT5nZXRUeXBlKCk7Ci0gICAgIGludCBh cnJheVNpemUgPSBsQXJyYXlWZWN0b3JXaWR0aCh0eXBlKTsKLSAgICAgaWYgKGFycmF5U2l6ZSA9 PSAwKSB7Ci0tICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqY2kgPSBsbHZtOjpDbXBJbnN0OjpD cmVhdGUoaW5zdCwgcHJlZCwgdjAsIHYxLCBuYW1lID8gbmFtZSA6ICJjbXAiLCBiYmxvY2spOwot KyAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmNpID0KLSsgICAgICAgICAgICBsbHZtOjpDbXBJ bnN0OjpDcmVhdGUoaW5zdCwgcHJlZCwgdjAsIHYxLCBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/ ICJjbXAiIDogbmFtZSwgYmJsb2NrKTsKLSAgICAgICAgIEFkZERlYnVnUG9zKGNpKTsKLSAgICAg ICAgIHJldHVybiBjaTsKLSAgICAgfSBlbHNlIHsKLUBAIC0xNjU3LDE0ICsxNjYwLDE0IEBAIGxs dm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpDbXBJbnN0KGxsdm06Okluc3RydWN0aW9u OjpPdGhlck9wcyBpbnN0LCBsbHZtCi0gICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFycmF5 U2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICAgbGx2bTo6VmFsdWUgKmEgPSBFeHRyYWN0SW5zdCh2 MCwgaSk7Ci0gICAgICAgICAgICAgbGx2bTo6VmFsdWUgKmIgPSBFeHRyYWN0SW5zdCh2MSwgaSk7 Ci0tICAgICAgICAgICAgbGx2bTo6VmFsdWUgKm9wID0gQ21wSW5zdChpbnN0LCBwcmVkLCBhLCBi LCBuYW1lKTsKLSsgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqb3AgPSBDbXBJbnN0KGluc3QsIHBy ZWQsIGEsIGIsIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gImNtcCIgOiBuYW1lKTsKLSAgICAg ICAgICAgICByZXQgPSBJbnNlcnRJbnN0KHJldCwgb3AsIGkpOwotICAgICAgICAgfQotICAgICAg ICAgcmV0dXJuIHJldDsKLSAgICAgfQotIH0KLSAKLS1sbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0 Q29udGV4dDo6U21lYXJVbmlmb3JtKGxsdm06OlZhbHVlICp2YWx1ZSwgY29uc3QgY2hhciAqbmFt ZSkgewotK2xsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpTbWVhclVuaWZvcm0obGx2 bTo6VmFsdWUgKnZhbHVlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBpZiAodmFs dWUgPT0gTlVMTCkgewotICAgICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291 bnQgPiAwKTsKLSAgICAgICAgIHJldHVybiBOVUxMOwotQEAgLTE3MDQsMjEgKzE3MDcsMTkgQEAg bGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OlNtZWFyVW5pZm9ybShsbHZtOjpWYWx1 ZSAqdmFsdWUsIGNvbnN0IGNoYXIgKm4KLSAgICAgcmV0dXJuIHJldDsKLSB9Ci0gCi0tbGx2bTo6 VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkJpdENhc3RJbnN0KGxsdm06OlZhbHVlICp2YWx1 ZSwgbGx2bTo6VHlwZSAqdHlwZSwgY29uc3QgY2hhciAqbmFtZSkgewotK2xsdm06OlZhbHVlICpG dW5jdGlvbkVtaXRDb250ZXh0OjpCaXRDYXN0SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06 OlR5cGUgKnR5cGUsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIGlmICh2YWx1ZSA9 PSBOVUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JDb3VudCA+ IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgIH0KLSAKLS0gICAgaWYgKG5hbWUgPT0g TlVMTCkKLS0gICAgICAgIG5hbWUgPSBMTFZNR2V0TmFtZSh2YWx1ZSwgIl9iaXRjYXN0Iik7Ci0t Ci0tICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0gbmV3IGxsdm06OkJpdENhc3RJbnN0KHZh bHVlLCB0eXBlLCBuYW1lLCBiYmxvY2spOwotKyAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9 IG5ldyBsbHZtOjpCaXRDYXN0SW5zdCgKLSsgICAgICAgIHZhbHVlLCB0eXBlLCBuYW1lLmlzVHJp dmlhbGx5RW1wdHkoKSA/IGxsdm06OlR3aW5lKHZhbHVlLT5nZXROYW1lKCkpICsgIl9iaXRjYXN0 IiA6IG5hbWUsIGJibG9jayk7Ci0gICAgIEFkZERlYnVnUG9zKGluc3QpOwotICAgICByZXR1cm4g aW5zdDsKLSB9Ci0gCi0tbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OlB0clRvSW50 SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGNvbnN0IGNoYXIgKm5hbWUpIHsKLStsbHZtOjpWYWx1 ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6UHRyVG9JbnRJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwg Y29uc3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKLSAg ICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAg ICByZXR1cm4gTlVMTDsKLUBAIC0xNzI4LDIzICsxNzI5LDE5IEBAIGxsdm06OlZhbHVlICpGdW5j dGlvbkVtaXRDb250ZXh0OjpQdHJUb0ludEluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBjb25zdCBj aGFyICpuCi0gICAgICAgICAvLyBuby1vcCBmb3IgdmFyeWluZyBwb2ludGVyczsgdGhleSdyZSBh bHJlYWR5IHZlY3RvcnMgb2YgaW50cwotICAgICAgICAgcmV0dXJuIHZhbHVlOwotIAotLSAgICBp ZiAobmFtZSA9PSBOVUxMKQotLSAgICAgICAgbmFtZSA9IExMVk1HZXROYW1lKHZhbHVlLCAiX3B0 cjJpbnQiKTsKLSAgICAgbGx2bTo6VHlwZSAqdHlwZSA9IExMVk1UeXBlczo6UG9pbnRlckludFR5 cGU7Ci0tICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0gbmV3IGxsdm06OlB0clRvSW50SW5z dCh2YWx1ZSwgdHlwZSwgbmFtZSwgYmJsb2NrKTsKLSsgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmlu c3QgPSBuZXcgbGx2bTo6UHRyVG9JbnRJbnN0KAotKyAgICAgICAgdmFsdWUsIHR5cGUsIG5hbWUu aXNUcml2aWFsbHlFbXB0eSgpID8gbGx2bTo6VHdpbmUodmFsdWUtPmdldE5hbWUoKSkgKyAiX3B0 cjJpbnQiIDogbmFtZSwgYmJsb2NrKTsKLSAgICAgQWRkRGVidWdQb3MoaW5zdCk7Ci0gICAgIHJl dHVybiBpbnN0OwotIH0KLSAKLS1sbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6UHRy VG9JbnRJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdG9UeXBlLCBjb25zdCBj aGFyICpuYW1lKSB7Ci0rbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OlB0clRvSW50 SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnRvVHlwZSwgY29uc3QgbGx2bTo6 VHdpbmUgJm5hbWUpIHsKLSAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2Vy dFBvcyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVM TDsKLSAgICAgfQotIAotLSAgICBpZiAobmFtZSA9PSBOVUxMKQotLSAgICAgICAgbmFtZSA9IExM Vk1HZXROYW1lKHZhbHVlLCAiX3B0cjJpbnQiKTsKLS0KLSAgICAgbGx2bTo6VHlwZSAqZnJvbVR5 cGUgPSB2YWx1ZS0+Z2V0VHlwZSgpOwotICAgICBpZiAobGx2bTo6aXNhPGxsdm06OlZlY3RvclR5 cGU+KGZyb21UeXBlKSkgewotICAgICAgICAgLy8gdmFyeWluZyBwb2ludGVyCi1AQCAtMTc1Miwy NyArMTc0OSwyNiBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6UHRyVG9JbnRJ bnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdAotICAgICAgICAgICAgIC8vIGFs cmVhZHkgdGhlIHJpZ2h0IHR5cGUtLWRvbmUKLSAgICAgICAgICAgICByZXR1cm4gdmFsdWU7Ci0g ICAgICAgICBlbHNlIGlmIChmcm9tVHlwZS0+Z2V0U2NhbGFyU2l6ZUluQml0cygpID4gdG9UeXBl LT5nZXRTY2FsYXJTaXplSW5CaXRzKCkpCi0tICAgICAgICAgICAgcmV0dXJuIFRydW5jSW5zdCh2 YWx1ZSwgdG9UeXBlLCBuYW1lKTsKLSsgICAgICAgICAgICByZXR1cm4gVHJ1bmNJbnN0KHZhbHVl LCB0b1R5cGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLmlzVHJpdmlhbGx5 RW1wdHkoKSA/IGxsdm06OlR3aW5lKHZhbHVlLT5nZXROYW1lKCkpICsgIl9wdHIyaW50IiA6IG5h bWUpOwotICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3Ms IGZyb21UeXBlLT5nZXRTY2FsYXJTaXplSW5CaXRzKCkgPCB0b1R5cGUtPmdldFNjYWxhclNpemVJ bkJpdHMoKSk7Ci0tICAgICAgICAgICAgcmV0dXJuIFpFeHRJbnN0KHZhbHVlLCB0b1R5cGUsIG5h bWUpOwotKyAgICAgICAgICAgIHJldHVybiBaRXh0SW5zdCh2YWx1ZSwgdG9UeXBlLCBuYW1lLmlz VHJpdmlhbGx5RW1wdHkoKSA/IGxsdm06OlR3aW5lKHZhbHVlLT5nZXROYW1lKCkpICsgIl9wdHIy aW50IiA6IG5hbWUpOwotICAgICAgICAgfQotICAgICB9Ci0gCi0tICAgIGxsdm06Okluc3RydWN0 aW9uICppbnN0ID0gbmV3IGxsdm06OlB0clRvSW50SW5zdCh2YWx1ZSwgdG9UeXBlLCBuYW1lLCBi YmxvY2spOwotKyAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9IG5ldyBsbHZtOjpQdHJUb0lu dEluc3QoCi0rICAgICAgICB2YWx1ZSwgdG9UeXBlLCBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/ IGxsdm06OlR3aW5lKHZhbHVlLT5nZXROYW1lKCkpICsgIl9wdHIyaW50IiA6IG5hbWUsIGJibG9j ayk7Ci0gICAgIEFkZERlYnVnUG9zKGluc3QpOwotICAgICByZXR1cm4gaW5zdDsKLSB9Ci0gCi0t bGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkludFRvUHRySW5zdChsbHZtOjpWYWx1 ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnRvVHlwZSwgY29uc3QgY2hhciAqbmFtZSkgewotK2xsdm06 OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpJbnRUb1B0ckluc3QobGx2bTo6VmFsdWUgKnZh bHVlLCBsbHZtOjpUeXBlICp0b1R5cGUsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0gICAg IGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ ZXJyb3JDb3VudCA+IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgIH0KLSAKLS0gICAg aWYgKG5hbWUgPT0gTlVMTCkKLS0gICAgICAgIG5hbWUgPSBMTFZNR2V0TmFtZSh2YWx1ZSwgIl9p bnQycHRyIik7Ci0tCi0gICAgIGxsdm06OlR5cGUgKmZyb21UeXBlID0gdmFsdWUtPmdldFR5cGUo KTsKLSAgICAgaWYgKGxsdm06OmlzYTxsbHZtOjpWZWN0b3JUeXBlPihmcm9tVHlwZSkpIHsKLSAg ICAgICAgIC8vIHZhcnlpbmcgcG9pbnRlcgotQEAgLTE3ODAsOTUgKzE3NzYsODcgQEAgbGx2bTo6 VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkludFRvUHRySW5zdChsbHZtOjpWYWx1ZSAqdmFs dWUsIGxsdm06OlR5cGUgKnQKLSAgICAgICAgICAgICAvLyBkb25lCi0gICAgICAgICAgICAgcmV0 dXJuIHZhbHVlOwotICAgICAgICAgZWxzZSBpZiAoZnJvbVR5cGUtPmdldFNjYWxhclNpemVJbkJp dHMoKSA+IHRvVHlwZS0+Z2V0U2NhbGFyU2l6ZUluQml0cygpKQotLSAgICAgICAgICAgIHJldHVy biBUcnVuY0luc3QodmFsdWUsIHRvVHlwZSwgbmFtZSk7Ci0rICAgICAgICAgICAgcmV0dXJuIFRy dW5jSW5zdCh2YWx1ZSwgdG9UeXBlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFt ZS5pc1RyaXZpYWxseUVtcHR5KCkgPyBsbHZtOjpUd2luZSh2YWx1ZS0+Z2V0TmFtZSgpKSArICJf aW50MnB0ciIgOiBuYW1lKTsKLSAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgIEFzc2VydFBv cyhjdXJyZW50UG9zLCBmcm9tVHlwZS0+Z2V0U2NhbGFyU2l6ZUluQml0cygpIDwgdG9UeXBlLT5n ZXRTY2FsYXJTaXplSW5CaXRzKCkpOwotLSAgICAgICAgICAgIHJldHVybiBaRXh0SW5zdCh2YWx1 ZSwgdG9UeXBlLCBuYW1lKTsKLSsgICAgICAgICAgICByZXR1cm4gWkV4dEluc3QodmFsdWUsIHRv VHlwZSwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyBsbHZtOjpUd2luZSh2YWx1ZS0+Z2V0TmFt ZSgpKSArICJfaW50MnB0ciIgOiBuYW1lKTsKLSAgICAgICAgIH0KLSAgICAgfQotIAotLSAgICBs bHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9IG5ldyBsbHZtOjpJbnRUb1B0ckluc3QodmFsdWUsIHRv VHlwZSwgbmFtZSwgYmJsb2NrKTsKLSsgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QgPSBuZXcg bGx2bTo6SW50VG9QdHJJbnN0KAotKyAgICAgICAgdmFsdWUsIHRvVHlwZSwgbmFtZS5pc1RyaXZp YWxseUVtcHR5KCkgPyBsbHZtOjpUd2luZSh2YWx1ZS0+Z2V0TmFtZSgpKSArICJfaW50MnB0ciIg OiBuYW1lLCBiYmxvY2spOwotICAgICBBZGREZWJ1Z1BvcyhpbnN0KTsKLSAgICAgcmV0dXJuIGlu c3Q7Ci0gfQotIAotLWxsdm06Okluc3RydWN0aW9uICpGdW5jdGlvbkVtaXRDb250ZXh0OjpUcnVu Y0luc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0eXBlLCBjb25zdCBjaGFyICpu YW1lKSB7Ci0rbGx2bTo6SW5zdHJ1Y3Rpb24gKkZ1bmN0aW9uRW1pdENvbnRleHQ6OlRydW5jSW5z dChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5cGUsIGNvbnN0IGxsdm06OlR3aW5l ICZuYW1lKSB7Ci0gICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3Mo Y3VycmVudFBvcywgbS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci0g ICAgIH0KLSAKLS0gICAgaWYgKG5hbWUgPT0gTlVMTCkKLS0gICAgICAgIG5hbWUgPSBMTFZNR2V0 TmFtZSh2YWx1ZSwgIl90cnVuYyIpOwotLQotICAgICAvLyBUT0RPOiB3ZSBzaG91bGQgcHJvYmFi bHkgaGFuZGxlIHRoZSBhcnJheSBjYXNlIGFzIGluCi0gICAgIC8vIGUuZy4gQml0Q2FzdEluc3Qo KSwgYnV0IHdlIGRvbid0IGN1cnJlbnRseSBuZWVkIHRoYXQgZnVuY3Rpb25hbGl0eQotLSAgICBs bHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9IG5ldyBsbHZtOjpUcnVuY0luc3QodmFsdWUsIHR5cGUs IG5hbWUsIGJibG9jayk7Ci0rICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0gbmV3IGxsdm06 OlRydW5jSW5zdCgKLSsgICAgICAgIHZhbHVlLCB0eXBlLCBuYW1lLmlzVHJpdmlhbGx5RW1wdHko KSA/IGxsdm06OlR3aW5lKHZhbHVlLT5nZXROYW1lKCkpICsgIl90cnVuYyIgOiBuYW1lLCBiYmxv Y2spOwotICAgICBBZGREZWJ1Z1BvcyhpbnN0KTsKLSAgICAgcmV0dXJuIGluc3Q7Ci0gfQotIAot IGxsdm06Okluc3RydWN0aW9uICpGdW5jdGlvbkVtaXRDb250ZXh0OjpDYXN0SW5zdChsbHZtOjpJ bnN0cnVjdGlvbjo6Q2FzdE9wcyBvcCwgbGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0 eXBlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBjaGFyICpuYW1lKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIGlmICh2YWx1ZSA9 PSBOVUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JDb3VudCA+ IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgIH0KLSAKLS0gICAgaWYgKG5hbWUgPT0g TlVMTCkKLS0gICAgICAgIG5hbWUgPSBMTFZNR2V0TmFtZSh2YWx1ZSwgIl9jYXN0Iik7Ci0tCi0g ICAgIC8vIFRPRE86IHdlIHNob3VsZCBwcm9iYWJseSBoYW5kbGUgdGhlIGFycmF5IGNhc2UgYXMg aW4KLSAgICAgLy8gZS5nLiBCaXRDYXN0SW5zdCgpLCBidXQgd2UgZG9uJ3QgY3VycmVudGx5IG5l ZWQgdGhhdCBmdW5jdGlvbmFsaXR5Ci0tICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0gbGx2 bTo6Q2FzdEluc3Q6OkNyZWF0ZShvcCwgdmFsdWUsIHR5cGUsIG5hbWUsIGJibG9jayk7Ci0rICAg IGxsdm06Okluc3RydWN0aW9uICppbnN0ID0gbGx2bTo6Q2FzdEluc3Q6OkNyZWF0ZSgKLSsgICAg ICAgIG9wLCB2YWx1ZSwgdHlwZSwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyBsbHZtOjpUd2lu ZSh2YWx1ZS0+Z2V0TmFtZSgpKSArICJfY2FzdCIgOiBuYW1lLCBiYmxvY2spOwotICAgICBBZGRE ZWJ1Z1BvcyhpbnN0KTsKLSAgICAgcmV0dXJuIGluc3Q7Ci0gfQotIAotLWxsdm06Okluc3RydWN0 aW9uICpGdW5jdGlvbkVtaXRDb250ZXh0OjpGUENhc3RJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwg bGx2bTo6VHlwZSAqdHlwZSwgY29uc3QgY2hhciAqbmFtZSkgewotK2xsdm06Okluc3RydWN0aW9u ICpGdW5jdGlvbkVtaXRDb250ZXh0OjpGUENhc3RJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2 bTo6VHlwZSAqdHlwZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAgaWYgKHZhbHVl ID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50 ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgfQotIAotLSAgICBpZiAobmFtZSA9 PSBOVUxMKQotLSAgICAgICAgbmFtZSA9IExMVk1HZXROYW1lKHZhbHVlLCAiX2Nhc3QiKTsKLS0K LSAgICAgLy8gVE9ETzogd2Ugc2hvdWxkIHByb2JhYmx5IGhhbmRsZSB0aGUgYXJyYXkgY2FzZSBh cyBpbgotICAgICAvLyBlLmcuIEJpdENhc3RJbnN0KCksIGJ1dCB3ZSBkb24ndCBjdXJyZW50bHkg bmVlZCB0aGF0IGZ1bmN0aW9uYWxpdHkKLS0gICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QgPSBs bHZtOjpDYXN0SW5zdDo6Q3JlYXRlRlBDYXN0KHZhbHVlLCB0eXBlLCBuYW1lLCBiYmxvY2spOwot KyAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9IGxsdm06OkNhc3RJbnN0OjpDcmVhdGVGUENh c3QoCi0rICAgICAgICB2YWx1ZSwgdHlwZSwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyBsbHZt OjpUd2luZSh2YWx1ZS0+Z2V0TmFtZSgpKSArICJfY2FzdCIgOiBuYW1lLCBiYmxvY2spOwotICAg ICBBZGREZWJ1Z1BvcyhpbnN0KTsKLSAgICAgcmV0dXJuIGluc3Q7Ci0gfQotIAotLWxsdm06Oklu c3RydWN0aW9uICpGdW5jdGlvbkVtaXRDb250ZXh0OjpTRXh0SW5zdChsbHZtOjpWYWx1ZSAqdmFs dWUsIGxsdm06OlR5cGUgKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUpIHsKLStsbHZtOjpJbnN0cnVj dGlvbiAqRnVuY3Rpb25FbWl0Q29udGV4dDo6U0V4dEluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBs bHZtOjpUeXBlICp0eXBlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBpZiAodmFs dWUgPT0gTlVMTCkgewotICAgICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291 bnQgPiAwKTsKLSAgICAgICAgIHJldHVybiBOVUxMOwotICAgICB9Ci0gCi0tICAgIGlmIChuYW1l ID09IE5VTEwpCi0tICAgICAgICBuYW1lID0gTExWTUdldE5hbWUodmFsdWUsICJfc2V4dCIpOwot LQotICAgICAvLyBUT0RPOiB3ZSBzaG91bGQgcHJvYmFibHkgaGFuZGxlIHRoZSBhcnJheSBjYXNl IGFzIGluCi0gICAgIC8vIGUuZy4gQml0Q2FzdEluc3QoKSwgYnV0IHdlIGRvbid0IGN1cnJlbnRs eSBuZWVkIHRoYXQgZnVuY3Rpb25hbGl0eQotLSAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9 IG5ldyBsbHZtOjpTRXh0SW5zdCh2YWx1ZSwgdHlwZSwgbmFtZSwgYmJsb2NrKTsKLSsgICAgbGx2 bTo6SW5zdHJ1Y3Rpb24gKmluc3QgPSBuZXcgbGx2bTo6U0V4dEluc3QoCi0rICAgICAgICB2YWx1 ZSwgdHlwZSwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyBsbHZtOjpUd2luZSh2YWx1ZS0+Z2V0 TmFtZSgpKSArICJfc2V4dCIgOiBuYW1lLCBiYmxvY2spOwotICAgICBBZGREZWJ1Z1BvcyhpbnN0 KTsKLSAgICAgcmV0dXJuIGluc3Q7Ci0gfQotIAotLWxsdm06Okluc3RydWN0aW9uICpGdW5jdGlv bkVtaXRDb250ZXh0OjpaRXh0SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5 cGUsIGNvbnN0IGNoYXIgKm5hbWUpIHsKLStsbHZtOjpJbnN0cnVjdGlvbiAqRnVuY3Rpb25FbWl0 Q29udGV4dDo6WkV4dEluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0eXBlLCBj b25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBpZiAodmFsdWUgPT0gTlVMTCkgewotICAg ICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsKLSAgICAgICAg IHJldHVybiBOVUxMOwotICAgICB9Ci0gCi0tICAgIGlmIChuYW1lID09IE5VTEwpCi0tICAgICAg ICBuYW1lID0gTExWTUdldE5hbWUodmFsdWUsICJfemV4dCIpOwotLQotICAgICAvLyBUT0RPOiB3 ZSBzaG91bGQgcHJvYmFibHkgaGFuZGxlIHRoZSBhcnJheSBjYXNlIGFzIGluCi0gICAgIC8vIGUu Zy4gQml0Q2FzdEluc3QoKSwgYnV0IHdlIGRvbid0IGN1cnJlbnRseSBuZWVkIHRoYXQgZnVuY3Rp b25hbGl0eQotLSAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9IG5ldyBsbHZtOjpaRXh0SW5z dCh2YWx1ZSwgdHlwZSwgbmFtZSwgYmJsb2NrKTsKLSsgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmlu c3QgPSBuZXcgbGx2bTo6WkV4dEluc3QoCi0rICAgICAgICB2YWx1ZSwgdHlwZSwgbmFtZS5pc1Ry aXZpYWxseUVtcHR5KCkgPyBsbHZtOjpUd2luZSh2YWx1ZS0+Z2V0TmFtZSgpKSArICJfemV4dCIg OiBuYW1lLCBiYmxvY2spOwotICAgICBBZGREZWJ1Z1BvcyhpbnN0KTsKLSAgICAgcmV0dXJuIGlu c3Q7Ci0gfQotQEAgLTE5MTMsMTQgKzE5MDEsMTUgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1p dENvbnRleHQ6OmFwcGx5VmFyeWluZ0dFUChsbHZtOjpWYWx1ZSAqYmFzZVB0ciwgbGx2bTo6VmEK LSAgICAgICAgIHNjYWxlID0gU21lYXJVbmlmb3JtKHNjYWxlKTsKLSAgICAgICAgIEFzc2VydChp bmRleCAhPSBOVUxMKTsKLSAgICAgICAgIC8vIG9mZnNldCA9IGluZGV4ICogc2NhbGUKLS0gICAg ICAgIG9mZnNldCA9IEJpbmFyeU9wZXJhdG9yKGxsdm06Okluc3RydWN0aW9uOjpNdWwsIHNjYWxl LCBpbmRleCwgTExWTUdldE5hbWUoIm11bCIsIHNjYWxlLCBpbmRleCkpOwotKyAgICAgICAgb2Zm c2V0ID0gQmluYXJ5T3BlcmF0b3IobGx2bTo6SW5zdHJ1Y3Rpb246Ok11bCwgc2NhbGUsIGluZGV4 LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsbHZtOjpUd2luZSgibXVsXyIp ICsgc2NhbGUtPmdldE5hbWUoKSkgKyAiXyIpICsgaW5kZXgtPmdldE5hbWUoKSk7Ci0gICAgIH0K LSAKLSAgICAgLy8gRm9yIDY0LWJpdCB0YXJnZXRzLCBpZiB3ZSd2ZSBiZWVuIGRvaW5nIG91ciBv ZmZzZXQgY2FsY3VsYXRpb25zIGluCi0gICAgIC8vIDMyIGJpdHMsIHdlIHN0aWxsIGhhdmUgdG8g Y29udmVydCB0byBhIDY0LWJpdCB2YWx1ZSBiZWZvcmUgd2UKLSAgICAgLy8gYWN0dWFsbHkgYWRk IHRoZSBvZmZzZXQgdG8gdGhlIHBvaW50ZXIuCi0gICAgIGlmIChnLT50YXJnZXQtPmlzMzJCaXQo KSA9PSBmYWxzZSAmJiBnLT5vcHQuZm9yY2UzMkJpdEFkZHJlc3NpbmcgPT0gdHJ1ZSkKLS0gICAg ICAgIG9mZnNldCA9IFNFeHRJbnN0KG9mZnNldCwgTExWTVR5cGVzOjpJbnQ2NFZlY3RvclR5cGUs IExMVk1HZXROYW1lKG9mZnNldCwgIl90b182NCIpKTsKLSsgICAgICAgIG9mZnNldCA9IFNFeHRJ bnN0KG9mZnNldCwgTExWTVR5cGVzOjpJbnQ2NFZlY3RvclR5cGUsIGxsdm06OlR3aW5lKG9mZnNl dC0+Z2V0TmFtZSgpKSArICJfdG9fNjQiKTsKLSAKLSAgICAgLy8gU21lYXIgb3V0IHRoZSBwb2lu dGVyIHRvIGJlIHZhcnlpbmc7IGVpdGhlciB0aGUgYmFzZSBwb2ludGVyIG9yIHRoZQotICAgICAv LyBpbmRleCBtdXN0IGJlIHZhcnlpbmcgZm9yIHRoaXMgbWV0aG9kIHRvIGJlIGNhbGxlZC4KLUBA IC0xOTI5LDcgKzE5MTgsNyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6YXBw bHlWYXJ5aW5nR0VQKGxsdm06OlZhbHVlICpiYXNlUHRyLCBsbHZtOjpWYQotICAgICBsbHZtOjpW YWx1ZSAqdmFyeWluZ1B0ciA9IGJhc2VJc1VuaWZvcm0gPyBTbWVhclVuaWZvcm0oYmFzZVB0cikg OiBiYXNlUHRyOwotIAotICAgICAvLyBuZXdQdHIgPSBwdHIgKyBvZmZzZXQKLS0gICAgcmV0dXJu IEJpbmFyeU9wZXJhdG9yKGxsdm06Okluc3RydWN0aW9uOjpBZGQsIHZhcnlpbmdQdHIsIG9mZnNl dCwgTExWTUdldE5hbWUoYmFzZVB0ciwgIl9vZmZzZXQiKSk7Ci0rICAgIHJldHVybiBCaW5hcnlP cGVyYXRvcihsbHZtOjpJbnN0cnVjdGlvbjo6QWRkLCB2YXJ5aW5nUHRyLCBvZmZzZXQsIGxsdm06 OlR3aW5lKGJhc2VQdHItPmdldE5hbWUoKSkgKyAiX29mZnNldCIpOwotIH0KLSAKLSB2b2lkIEZ1 bmN0aW9uRW1pdENvbnRleHQ6Ok1hdGNoSW50ZWdlclR5cGVzKGxsdm06OlZhbHVlICoqdjAsIGxs dm06OlZhbHVlICoqdjEpIHsKLUBAIC0yMDA2LDEzICsxOTk1LDEzIEBAIGxsdm06OlZhbHVlICpG dW5jdGlvbkVtaXRDb250ZXh0OjpNYWtlU2xpY2VQb2ludGVyKGxsdm06OlZhbHVlICpwdHIsIGxs dm06OlZhbHVlCi0gICAgIGxsdm06OlN0cnVjdFR5cGUgKnN0ID0gbGx2bTo6U3RydWN0VHlwZTo6 Z2V0KCpnLT5jdHgsIGVsdFR5cGVzKTsKLSAKLSAgICAgbGx2bTo6VmFsdWUgKnJldCA9IGxsdm06 OlVuZGVmVmFsdWU6OmdldChzdCk7Ci0tICAgIHJldCA9IEluc2VydEluc3QocmV0LCBwdHIsIDAs IExMVk1HZXROYW1lKHJldCwgIl9zbGljZV9wdHIiKSk7Ci0tICAgIHJldCA9IEluc2VydEluc3Qo cmV0LCBvZmZzZXQsIDEsIExMVk1HZXROYW1lKHJldCwgIl9zbGljZV9vZmZzZXQiKSk7Ci0rICAg IHJldCA9IEluc2VydEluc3QocmV0LCBwdHIsIDAsIGxsdm06OlR3aW5lKHJldC0+Z2V0TmFtZSgp KSArICJfc2xpY2VfcHRyIik7Ci0rICAgIHJldCA9IEluc2VydEluc3QocmV0LCBvZmZzZXQsIDEs IGxsdm06OlR3aW5lKHJldC0+Z2V0TmFtZSgpKSArICJfc2xpY2Vfb2Zmc2V0Iik7Ci0gICAgIHJl dHVybiByZXQ7Ci0gfQotIAotIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpHZXRF bGVtZW50UHRySW5zdChsbHZtOjpWYWx1ZSAqYmFzZVB0ciwgbGx2bTo6VmFsdWUgKmluZGV4LCBj b25zdCBUeXBlICpwdHJSZWZUeXBlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lKSB7Ci0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxsdm06OlR3aW5lICZu YW1lKSB7Ci0gICAgIGlmIChiYXNlUHRyID09IE5VTEwgfHwgaW5kZXggPT0gTlVMTCkgewotICAg ICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsKLSAgICAgICAg IHJldHVybiBOVUxMOwotQEAgLTIwNjUsOCArMjA1NCw4IEBAIGxsdm06OlZhbHVlICpGdW5jdGlv bkVtaXRDb250ZXh0OjpHZXRFbGVtZW50UHRySW5zdChsbHZtOjpWYWx1ZSAqYmFzZVB0ciwgbGx2 bTo6Ci0gICAgICAgICAvLyB1bmlmb3JtLCBzbyBqdXN0IGVtaXQgdGhlIHJlZ3VsYXIgTExWTSBH RVAgaW5zdHJ1Y3Rpb24KLSAgICAgICAgIGxsdm06OlZhbHVlICppbmRbMV0gPSB7aW5kZXh9Owot ICAgICAgICAgbGx2bTo6QXJyYXlSZWY8bGx2bTo6VmFsdWUgKj4gYXJyYXlSZWYoJmluZFswXSwg JmluZFsxXSk7Ci0tICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9Ci0tICAgICAgICAg ICAgbGx2bTo6R2V0RWxlbWVudFB0ckluc3Q6OkNyZWF0ZShQVFlQRShiYXNlUHRyKSwgYmFzZVB0 ciwgYXJyYXlSZWYsIG5hbWUgPyBuYW1lIDogImdlcCIsIGJibG9jayk7Ci0rICAgICAgICBsbHZt OjpJbnN0cnVjdGlvbiAqaW5zdCA9IGxsdm06OkdldEVsZW1lbnRQdHJJbnN0OjpDcmVhdGUoUFRZ UEUoYmFzZVB0ciksIGJhc2VQdHIsIGFycmF5UmVmLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUuaXNUcml2aWFs bHlFbXB0eSgpID8gImdlcCIgOiBuYW1lLCBiYmxvY2spOwotICAgICAgICAgQWRkRGVidWdQb3Mo aW5zdCk7Ci0gICAgICAgICByZXR1cm4gaW5zdDsKLSAgICAgfSBlbHNlCi1AQCAtMjA3NCw3ICsy MDYzLDcgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkdldEVsZW1lbnRQdHJJ bnN0KGxsdm06OlZhbHVlICpiYXNlUHRyLCBsbHZtOjoKLSB9Ci0gCi0gbGx2bTo6VmFsdWUgKkZ1 bmN0aW9uRW1pdENvbnRleHQ6OkdldEVsZW1lbnRQdHJJbnN0KGxsdm06OlZhbHVlICpiYXNlUHRy LCBsbHZtOjpWYWx1ZSAqaW5kZXgwLCBsbHZtOjpWYWx1ZSAqaW5kZXgxLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUeXBlICpwdHJS ZWZUeXBlLCBjb25zdCBjaGFyICpuYW1lKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFR5cGUgKnB0clJlZlR5cGUsIGNvbnN0IGxs dm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIGlmIChiYXNlUHRyID09IE5VTEwgfHwgaW5kZXgwID09 IE5VTEwgfHwgaW5kZXgxID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9z LCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLUBAIC0yMTE0LDgg KzIxMDMsOCBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6R2V0RWxlbWVudFB0 ckluc3QobGx2bTo6VmFsdWUgKmJhc2VQdHIsIGxsdm06OgotICAgICAgICAgLy8gdW5pZm9ybSwg c28ganVzdCBlbWl0IHRoZSByZWd1bGFyIExMVk0gR0VQIGluc3RydWN0aW9uCi0gICAgICAgICBs bHZtOjpWYWx1ZSAqaW5kaWNlc1syXSA9IHtpbmRleDAsIGluZGV4MX07Ci0gICAgICAgICBsbHZt OjpBcnJheVJlZjxsbHZtOjpWYWx1ZSAqPiBhcnJheVJlZigmaW5kaWNlc1swXSwgJmluZGljZXNb Ml0pOwotLSAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QgPQotLSAgICAgICAgICAgIGxs dm06OkdldEVsZW1lbnRQdHJJbnN0OjpDcmVhdGUoUFRZUEUoYmFzZVB0ciksIGJhc2VQdHIsIGFy cmF5UmVmLCBuYW1lID8gbmFtZSA6ICJnZXAiLCBiYmxvY2spOwotKyAgICAgICAgbGx2bTo6SW5z dHJ1Y3Rpb24gKmluc3QgPSBsbHZtOjpHZXRFbGVtZW50UHRySW5zdDo6Q3JlYXRlKFBUWVBFKGJh c2VQdHIpLCBiYXNlUHRyLCBhcnJheVJlZiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLmlzVHJpdmlhbGx5RW1w dHkoKSA/ICJnZXAiIDogbmFtZSwgYmJsb2NrKTsKLSAgICAgICAgIEFkZERlYnVnUG9zKGluc3Qp OwotICAgICAgICAgcmV0dXJuIGluc3Q7Ci0gICAgIH0gZWxzZSB7Ci1AQCAtMjEzOCw3ICsyMTI3 LDcgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkdldEVsZW1lbnRQdHJJbnN0 KGxsdm06OlZhbHVlICpiYXNlUHRyLCBsbHZtOjoKLSB9Ci0gCi0gbGx2bTo6VmFsdWUgKkZ1bmN0 aW9uRW1pdENvbnRleHQ6OkFkZEVsZW1lbnRPZmZzZXQobGx2bTo6VmFsdWUgKmZ1bGxCYXNlUHRy LCBpbnQgZWxlbWVudE51bSwgY29uc3QgVHlwZSAqcHRyUmVmVHlwZSwKLS0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLCBj b25zdCBQb2ludGVyVHlwZSAqKnJlc3VsdFB0clR5cGUpIHsKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSwg Y29uc3QgUG9pbnRlclR5cGUgKipyZXN1bHRQdHJUeXBlKSB7Ci0gICAgIGlmIChyZXN1bHRQdHJU eXBlICE9IE5VTEwpCi0gICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgcHRyUmVmVHlwZSAh PSBOVUxMKTsKLSAKLUBAIC0yMTk1LDggKzIxODQsOCBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25F bWl0Q29udGV4dDo6QWRkRWxlbWVudE9mZnNldChsbHZtOjpWYWx1ZSAqZnVsbEJhc2VQdHIsIGlu dAotICAgICAgICAgLy8gSWYgdGhlIHBvaW50ZXIgaXMgdW5pZm9ybSwgd2UgY2FuIHVzZSB0aGUg cmVndWxhciBMTFZNIEdFUC4KLSAgICAgICAgIGxsdm06OlZhbHVlICpvZmZzZXRzWzJdID0ge0xM Vk1JbnQzMigwKSwgTExWTUludDMyKGVsZW1lbnROdW0pfTsKLSAgICAgICAgIGxsdm06OkFycmF5 UmVmPGxsdm06OlZhbHVlICo+IGFycmF5UmVmKCZvZmZzZXRzWzBdLCAmb2Zmc2V0c1syXSk7Ci0t ICAgICAgICByZXN1bHRQdHIgPQotLSAgICAgICAgICAgIGxsdm06OkdldEVsZW1lbnRQdHJJbnN0 OjpDcmVhdGUoUFRZUEUoYmFzZVB0ciksIGJhc2VQdHIsIGFycmF5UmVmLCBuYW1lID8gbmFtZSA6 ICJzdHJ1Y3Rfb2Zmc2V0IiwgYmJsb2NrKTsKLSsgICAgICAgIHJlc3VsdFB0ciA9IGxsdm06Okdl dEVsZW1lbnRQdHJJbnN0OjpDcmVhdGUoUFRZUEUoYmFzZVB0ciksIGJhc2VQdHIsIGFycmF5UmVm LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu YW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/ICJzdHJ1Y3Rfb2Zmc2V0IiA6IG5hbWUsIGJibG9jayk7 Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAgICAvLyBPdGhlcndpc2UgZG8gdGhlIG1hdGggdG8gZmlu ZCB0aGUgb2Zmc2V0IGFuZCBhZGQgaXQgdG8gdGhlIGdpdmVuCi0gICAgICAgICAvLyB2YXJ5aW5n IHBvaW50ZXJzCi1AQCAtMjIzNyw3ICsyMjI2LDcgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1p dENvbnRleHQ6OkFkZEVsZW1lbnRPZmZzZXQobGx2bTo6VmFsdWUgKmZ1bGxCYXNlUHRyLCBpbnQK LSAgICAgICAgIHJldHVybiByZXN1bHRQdHI7Ci0gfQotIAotLWxsdm06OlZhbHVlICpGdW5jdGlv bkVtaXRDb250ZXh0OjpTd2l0Y2hCb29sU2l6ZShsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5 cGUgKnRvVHlwZSwgY29uc3QgY2hhciAqbmFtZSkgewotK2xsdm06OlZhbHVlICpGdW5jdGlvbkVt aXRDb250ZXh0OjpTd2l0Y2hCb29sU2l6ZShsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUg KnRvVHlwZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAgaWYgKCh2YWx1ZSA9PSBO VUxMKSB8fCAodG9UeXBlID09IE5VTEwpKSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBv cywgbS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci1AQCAtMjI0OCwy MCArMjIzNywxOCBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6U3dpdGNoQm9v bFNpemUobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlCi0gICAgIGxsdm06OlZhbHVlICpu ZXdCb29sID0gdmFsdWU7Ci0gICAgIGlmIChnLT50YXJnZXQtPmdldERhdGFMYXlvdXQoKS0+Z2V0 VHlwZVNpemVJbkJpdHMoZnJvbVR5cGUpID4KLSAgICAgICAgIGctPnRhcmdldC0+Z2V0RGF0YUxh eW91dCgpLT5nZXRUeXBlU2l6ZUluQml0cyh0b1R5cGUpKSB7Ci0tICAgICAgICBpZiAobmFtZSA9 PSBOVUxMKQotLSAgICAgICAgICAgIG5hbWUgPSBMTFZNR2V0TmFtZSh2YWx1ZSwgIl9zd2l0Y2hC b29sIik7Ci0tICAgICAgICBuZXdCb29sID0gVHJ1bmNJbnN0KHZhbHVlLCB0b1R5cGUsIG5hbWUp OwotKyAgICAgICAgbmV3Qm9vbCA9Ci0rICAgICAgICAgICAgVHJ1bmNJbnN0KHZhbHVlLCB0b1R5 cGUsIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gKGxsdm06OlR3aW5lKHZhbHVlLT5nZXROYW1l KCkpICsgIl9zd2l0Y2hCb29sIikgOiBuYW1lKTsKLSAgICAgfSBlbHNlIGlmIChnLT50YXJnZXQt PmdldERhdGFMYXlvdXQoKS0+Z2V0VHlwZVNpemVJbkJpdHMoZnJvbVR5cGUpIDwKLSAgICAgICAg ICAgICAgICBnLT50YXJnZXQtPmdldERhdGFMYXlvdXQoKS0+Z2V0VHlwZVNpemVJbkJpdHModG9U eXBlKSkgewotLSAgICAgICAgaWYgKG5hbWUgPT0gTlVMTCkKLS0gICAgICAgICAgICBuYW1lID0g TExWTUdldE5hbWUodmFsdWUsICJfc3dpdGNoQm9vbCIpOwotLSAgICAgICAgbmV3Qm9vbCA9IFNF eHRJbnN0KHZhbHVlLCB0b1R5cGUsIG5hbWUpOwotKyAgICAgICAgbmV3Qm9vbCA9Ci0rICAgICAg ICAgICAgU0V4dEluc3QodmFsdWUsIHRvVHlwZSwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyAo bGx2bTo6VHdpbmUodmFsdWUtPmdldE5hbWUoKSkgKyAiX3N3aXRjaEJvb2wiKSA6IG5hbWUpOwot ICAgICB9Ci0gCi0gICAgIHJldHVybiBuZXdCb29sOwotIH0KLSAKLS1sbHZtOjpWYWx1ZSAqRnVu Y3Rpb25FbWl0Q29udGV4dDo6TG9hZEluc3QobGx2bTo6VmFsdWUgKnB0ciwgY29uc3QgVHlwZSAq dHlwZSwgY29uc3QgY2hhciAqbmFtZSkgewotK2xsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250 ZXh0OjpMb2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBjb25zdCBUeXBlICp0eXBlLCBjb25zdCBs bHZtOjpUd2luZSAmbmFtZSkgewotICAgICBpZiAocHRyID09IE5VTEwpIHsKLSAgICAgICAgIEFz c2VydFBvcyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4g TlVMTDsKLUBAIC0yMjcwLDEzICsyMjU3LDEzIEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRD b250ZXh0OjpMb2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBjb25zdCBUeXBlICp0eXBlLCBjCi0g ICAgIGxsdm06OlBvaW50ZXJUeXBlICpwdCA9IGxsdm06OmR5bl9jYXN0PGxsdm06OlBvaW50ZXJU eXBlPihwdHItPmdldFR5cGUoKSk7Ci0gICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBwdCAhPSBO VUxMKTsKLSAKLS0gICAgaWYgKG5hbWUgPT0gTlVMTCkKLS0gICAgICAgIG5hbWUgPSBMTFZNR2V0 TmFtZShwdHIsICJfbG9hZCIpOwotLQotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xM Vk1fMTFfMAotLSAgICBsbHZtOjpMb2FkSW5zdCAqaW5zdCA9IG5ldyBsbHZtOjpMb2FkSW5zdChw dC0+Z2V0UG9pbnRlckVsZW1lbnRUeXBlKCksIHB0ciwgbmFtZSwgYmJsb2NrKTsKLSsgICAgbGx2 bTo6TG9hZEluc3QgKmluc3QgPQotKyAgICAgICAgbmV3IGxsdm06OkxvYWRJbnN0KHB0LT5nZXRQ b2ludGVyRWxlbWVudFR5cGUoKSwgcHRyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5h bWUuaXNUcml2aWFsbHlFbXB0eSgpID8gKGxsdm06OlR3aW5lKHB0ci0+Z2V0TmFtZSgpKSArICJf bG9hZCIpIDogbmFtZSwgYmJsb2NrKTsKLSAjZWxzZQotLSAgICBsbHZtOjpMb2FkSW5zdCAqaW5z dCA9IG5ldyBsbHZtOjpMb2FkSW5zdChwdHIsIG5hbWUsIGJibG9jayk7Ci0rICAgIGxsdm06Okxv YWRJbnN0ICppbnN0ID0KLSsgICAgICAgIG5ldyBsbHZtOjpMb2FkSW5zdChwdHIsIG5hbWUuaXNU cml2aWFsbHlFbXB0eSgpID8gKGxsdm06OlR3aW5lKHB0ci0+Z2V0TmFtZSgpKSArICJfbG9hZCIp IDogbmFtZSwgYmJsb2NrKTsKLSAjZW5kaWYKLSAKLSAgICAgaWYgKGctPm9wdC5mb3JjZUFsaWdu ZWRNZW1vcnkgJiYgbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4ocHQtPmdldEVsZW1l bnRUeXBlKCkpKSB7Ci1AQCAtMjMwNyw4ICsyMjk0LDggQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9u RW1pdENvbnRleHQ6OkxvYWRJbnN0KGxsdm06OlZhbHVlICpwdHIsIGNvbnN0IFR5cGUgKnR5cGUs IGMKLSBzdGF0aWMgbGx2bTo6VmFsdWUgKmxGaW5hbFNsaWNlT2Zmc2V0KEZ1bmN0aW9uRW1pdENv bnRleHQgKmN0eCwgbGx2bTo6VmFsdWUgKnB0ciwgY29uc3QgUG9pbnRlclR5cGUgKipwdHJUeXBl KSB7Ci0gICAgIEFzc2VydChDYXN0VHlwZTxQb2ludGVyVHlwZT4oKnB0clR5cGUpICE9IE5VTEwp OwotIAotLSAgICBsbHZtOjpWYWx1ZSAqc2xpY2VQdHIgPSBjdHgtPkV4dHJhY3RJbnN0KHB0ciwg MCwgTExWTUdldE5hbWUocHRyLCAiX3B0ciIpKTsKLS0gICAgbGx2bTo6VmFsdWUgKnNsaWNlT2Zm c2V0ID0gY3R4LT5FeHRyYWN0SW5zdChwdHIsIDEsIExMVk1HZXROYW1lKHB0ciwgIl9vZmZzZXQi KSk7Ci0rICAgIGxsdm06OlZhbHVlICpzbGljZVB0ciA9IGN0eC0+RXh0cmFjdEluc3QocHRyLCAw LCBsbHZtOjpUd2luZShwdHItPmdldE5hbWUoKSkgKyAiX3B0ciIpOwotKyAgICBsbHZtOjpWYWx1 ZSAqc2xpY2VPZmZzZXQgPSBjdHgtPkV4dHJhY3RJbnN0KHB0ciwgMSwgbGx2bTo6VHdpbmUocHRy LT5nZXROYW1lKCkpICsgIl9vZmZzZXQiKTsKLSAKLSAgICAgLy8gc2xpY2VQdHIgc2hvdWxkIGJl IGEgcG9pbnRlciB0byBhbiBzb2Etd2lkdGggd2lkZSBhcnJheSBvZiB0aGUKLSAgICAgLy8gZmlu YWwgYXRvbWljL2VudW0vcG9pbnRlciB0eXBlCi1AQCAtMjMyNywxNCArMjMxNCwxNCBAQCBzdGF0 aWMgbGx2bTo6VmFsdWUgKmxGaW5hbFNsaWNlT2Zmc2V0KEZ1bmN0aW9uRW1pdENvbnRleHQgKmN0 eCwgbGx2bTo6VmFsdWUgKnB0cgotICAgICAgICAgc2xpY2VQdHIgPSBjdHgtPkJpdENhc3RJbnN0 KHNsaWNlUHRyLCAoKnB0clR5cGUpLT5MTFZNVHlwZShnLT5jdHgpKTsKLSAKLSAgICAgLy8gQW5k IGZpbmFsbHkgaW5kZXggYmFzZWQgb24gdGhlIHNsaWNlIG9mZnNldAotLSAgICByZXR1cm4gY3R4 LT5HZXRFbGVtZW50UHRySW5zdChzbGljZVB0ciwgc2xpY2VPZmZzZXQsICpwdHJUeXBlLCBMTFZN R2V0TmFtZShzbGljZVB0ciwgIl9maW5hbF9nZXAiKSk7Ci0rICAgIHJldHVybiBjdHgtPkdldEVs ZW1lbnRQdHJJbnN0KHNsaWNlUHRyLCBzbGljZU9mZnNldCwgKnB0clR5cGUsIGxsdm06OlR3aW5l KHNsaWNlUHRyLT5nZXROYW1lKCkpICsgIl9maW5hbF9nZXAiKTsKLSB9Ci0gCi0gLyoqIFV0aWxp dHkgcm91dGluZSB0aGF0IGxvYWRzIGZyb20gYSB1bmlmb3JtIHBvaW50ZXIgdG8gc29hPD4gZGF0 YSwKLSAgICAgcmV0dXJuaW5nIGEgcmVndWxhciB1bmlmb3JtIChub24tU09BIHJlc3VsdCkuCi0g ICovCi0gbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OmxvYWRVbmlmb3JtRnJvbVNP QShsbHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjpWYWx1ZSAqbWFzaywgY29uc3QgUG9pbnRlclR5cGUg KnB0clR5cGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBjaGFyICpuYW1lKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAg ICBjb25zdCBUeXBlICp1bmlmVHlwZSA9IHB0clR5cGUtPkdldEJhc2VUeXBlKCktPkdldEFzVW5p Zm9ybVR5cGUoKTsKLSAKLSAgICAgY29uc3QgQ29sbGVjdGlvblR5cGUgKmN0ID0gQ2FzdFR5cGU8 Q29sbGVjdGlvblR5cGU+KHB0clR5cGUtPkdldEJhc2VUeXBlKCkpOwotQEAgLTIzNjMsNyArMjM1 MCw3IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0Ojpsb2FkVW5pZm9ybUZyb21T T0EobGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6VmFsCi0gfQotIAotIGxsdm06OlZhbHVlICpGdW5j dGlvbkVtaXRDb250ZXh0OjpMb2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjpWYWx1ZSAq bWFzaywgY29uc3QgVHlwZSAqcHRyUmVmVHlwZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwgYm9vbCBvbmVfZWxlbSkgewotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsbHZtOjpUd2lu ZSAmbmFtZSwgYm9vbCBvbmVfZWxlbSkgewotICAgICBpZiAocHRyID09IE5VTEwpIHsKLSAgICAg ICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAgICBy ZXR1cm4gTlVMTDsKLUBAIC0yMzcxLDkgKzIzNTgsNiBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25F bWl0Q29udGV4dDo6TG9hZEluc3QobGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6VmFsdWUgKm1hc2ss Ci0gCi0gICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBwdHJSZWZUeXBlICE9IE5VTEwgJiYgbWFz ayAhPSBOVUxMKTsKLSAKLS0gICAgaWYgKG5hbWUgPT0gTlVMTCkKLS0gICAgICAgIG5hbWUgPSBM TFZNR2V0TmFtZShwdHIsICJfbG9hZCIpOwotLQotICAgICBjb25zdCBQb2ludGVyVHlwZSAqcHRy VHlwZTsKLSAgICAgY29uc3QgVHlwZSAqZWxUeXBlOwotICAgICBpZiAoQ2FzdFR5cGU8UmVmZXJl bmNlVHlwZT4ocHRyUmVmVHlwZSkgIT0gTlVMTCkgewotQEAgLTIzOTMsNyArMjM3Nyw4IEBAIGxs dm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpMb2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRy LCBsbHZtOjpWYWx1ZSAqbWFzaywKLSAKLSAgICAgaWYgKHB0clR5cGUtPklzVW5pZm9ybVR5cGUo KSkgewotICAgICAgICAgaWYgKHB0clR5cGUtPklzU2xpY2UoKSkgewotLSAgICAgICAgICAgIHJl dHVybiBsb2FkVW5pZm9ybUZyb21TT0EocHRyLCBtYXNrLCBwdHJUeXBlLCBuYW1lKTsKLSsgICAg ICAgICAgICByZXR1cm4gbG9hZFVuaWZvcm1Gcm9tU09BKHB0ciwgbWFzaywgcHRyVHlwZSwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUuaXNUcml2aWFsbHlFbXB0 eSgpID8gKGxsdm06OlR3aW5lKHB0ci0+Z2V0TmFtZSgpKSArICJfbG9hZCIpIDogbmFtZSk7Ci0g ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgIC8vIEZJWE1FOiBzYW1lIGlzc3VlIGFzIGFi b3ZlIGxvYWQgaW5zdCByZWdhcmRpbmcgYWxpZ25tZW50Li4uCi0gICAgICAgICAgICAgLy8KLUBA IC0yNDA1LDExICsyMzkwLDE1IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpM b2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjpWYWx1ZSAqbWFzaywKLSAgICAgICAgICAg ICBjb25zdCBBdG9taWNUeXBlICphdG9taWNUeXBlID0gQ2FzdFR5cGU8QXRvbWljVHlwZT4ocHRy VHlwZS0+R2V0QmFzZVR5cGUoKSk7Ci0gCi0gI2lmIElTUENfTExWTV9WRVJTSU9OIDw9IElTUENf TExWTV8xMF8wCi0tICAgICAgICAgICAgbGx2bTo6TG9hZEluc3QgKmluc3QgPSBuZXcgbGx2bTo6 TG9hZEluc3QocHRyLCBuYW1lLCBmYWxzZSAvKiBub3Qgdm9sYXRpbGUgKi8sIGJibG9jayk7Ci0r ICAgICAgICAgICAgbGx2bTo6TG9hZEluc3QgKmluc3QgPQotKyAgICAgICAgICAgICAgICBuZXcg bGx2bTo6TG9hZEluc3QocHRyLCBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/IChsbHZtOjpUd2lu ZShwdHItPmdldE5hbWUoKSkgKyAiX2xvYWQiKSA6IG5hbWUsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmYWxzZSAvKiBub3Qgdm9sYXRpbGUgKi8sIGJibG9jayk7Ci0gI2Vs c2UgLy8gTExWTSAxMS4wKwotICAgICAgICAgICAgIGxsdm06OlBvaW50ZXJUeXBlICpwdHJfdHlw ZSA9IGxsdm06OmR5bl9jYXN0PGxsdm06OlBvaW50ZXJUeXBlPihwdHItPmdldFR5cGUoKSk7Ci0g ICAgICAgICAgICAgbGx2bTo6TG9hZEluc3QgKmluc3QgPQotLSAgICAgICAgICAgICAgICBuZXcg bGx2bTo6TG9hZEluc3QocHRyX3R5cGUtPmdldFBvaW50ZXJFbGVtZW50VHlwZSgpLCBwdHIsIG5h bWUsIGZhbHNlIC8qIG5vdCB2b2xhdGlsZSAqLywgYmJsb2NrKTsKLSsgICAgICAgICAgICAgICAg bmV3IGxsdm06OkxvYWRJbnN0KHB0cl90eXBlLT5nZXRQb2ludGVyRWxlbWVudFR5cGUoKSwgcHRy LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZS5pc1RyaXZpYWxseUVt cHR5KCkgPyAobGx2bTo6VHdpbmUocHRyLT5nZXROYW1lKCkpICsgIl9sb2FkIikgOiBuYW1lLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgLyogbm90IHZvbGF0aWxl ICovLCBiYmxvY2spOwotICNlbmRpZgotIAotICAgICAgICAgICAgIGlmIChhdG9taWNUeXBlICE9 IE5VTEwgJiYgYXRvbWljVHlwZS0+SXNWYXJ5aW5nVHlwZSgpKSB7Ci1AQCAtMjQzMyw3ICsyNDIy LDggQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkxvYWRJbnN0KGxsdm06OlZh bHVlICpwdHIsIGxsdm06OlZhbHVlICptYXNrLAotICAgICB9IGVsc2UgewotICAgICAgICAgLy8g T3RoZXJ3aXNlIHdlIHNob3VsZCBoYXZlIGEgdmFyeWluZyBwdHIgYW5kIGl0J3MgdGltZSBmb3Ig YQotICAgICAgICAgLy8gZ2F0aGVyLgotLSAgICAgICAgbGx2bTo6VmFsdWUgKmdhdGhlcl9yZXN1 bHQgPSBnYXRoZXIocHRyLCBwdHJUeXBlLCBHZXRGdWxsTWFzaygpLCBuYW1lKTsKLSsgICAgICAg IGxsdm06OlZhbHVlICpnYXRoZXJfcmVzdWx0ID0gZ2F0aGVyKHB0ciwgcHRyVHlwZSwgR2V0RnVs bE1hc2soKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5h bWUuaXNUcml2aWFsbHlFbXB0eSgpID8gKGxsdm06OlR3aW5lKHB0ci0+Z2V0TmFtZSgpKSArICJf bG9hZCIpIDogbmFtZSk7Ci0gICAgICAgICBpZiAoIW9uZV9lbGVtKQotICAgICAgICAgICAgIHJl dHVybiBnYXRoZXJfcmVzdWx0OwotIAotQEAgLTI0NTMsMTkgKzI0NDMsMTkgQEAgbGx2bTo6VmFs dWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkxvYWRJbnN0KGxsdm06OlZhbHVlICpwdHIsIGxsdm06 OlZhbHVlICptYXNrLAotICAgICAgICAgLy8gV2UgY2FuIGFjdHVhbGx5IGNhbGwgZWl0aGVyIG9u ZSwgc2luY2UgYm90aCBhcmUgaTMycyBhcyBmYXIgYXMKLSAgICAgICAgIC8vIExMVk0ncyB0eXBl IHN5c3RlbSBpcyBjb25jZXJuZWQuLi4KLSAgICAgICAgIGxsdm06OkZ1bmN0aW9uICpmbW0gPSBt bVswXS0+ZnVuY3Rpb247Ci0tICAgICAgICBsbHZtOjpWYWx1ZSAqaW50X21hc2sgPSBDYWxsSW5z dChmbW0sIE5VTEwsIG1hc2ssIExMVk1HZXROYW1lKG1hc2ssICJfbW92bXNrIikpOwotKyAgICAg ICAgbGx2bTo6VmFsdWUgKmludF9tYXNrID0gQ2FsbEluc3QoZm1tLCBOVUxMLCBtYXNrLCBsbHZt OjpUd2luZShtYXNrLT5nZXROYW1lKCkpICsgIl9tb3Ztc2siKTsKLSAgICAgICAgIHN0ZDo6dmVj dG9yPFN5bWJvbCAqPiBsejsKLSAgICAgICAgIG0tPnN5bWJvbFRhYmxlLT5Mb29rdXBGdW5jdGlv bigiX19jb3VudF90cmFpbGluZ196ZXJvc19pNjQiLCAmbHopOwotICAgICAgICAgbGx2bTo6RnVu Y3Rpb24gKmZseiA9IGx6WzBdLT5mdW5jdGlvbjsKLS0gICAgICAgIGxsdm06OlZhbHVlICplbGVt X2lkeCA9IENhbGxJbnN0KGZseiwgTlVMTCwgaW50X21hc2ssIExMVk1HZXROYW1lKG1hc2ssICJf Y2x6IikpOwotLSAgICAgICAgbGx2bTo6VmFsdWUgKmVsZW0gPSBsbHZtOjpFeHRyYWN0RWxlbWVu dEluc3Q6OkNyZWF0ZShnYXRoZXJfcmVzdWx0LCBlbGVtX2lkeCwKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExWTUdldE5hbWUo Z2F0aGVyX3Jlc3VsdCwgIl91bWFza2VkX2VsZW0iKSwgYmJsb2NrKTsKLSsgICAgICAgIGxsdm06 OlZhbHVlICplbGVtX2lkeCA9IENhbGxJbnN0KGZseiwgTlVMTCwgaW50X21hc2ssIGxsdm06OlR3 aW5lKG1hc2stPmdldE5hbWUoKSkgKyAiX2NseiIpOwotKyAgICAgICAgbGx2bTo6VmFsdWUgKmVs ZW0gPSBsbHZtOjpFeHRyYWN0RWxlbWVudEluc3Q6OkNyZWF0ZSgKLSsgICAgICAgICAgICBnYXRo ZXJfcmVzdWx0LCBlbGVtX2lkeCwgbGx2bTo6VHdpbmUoZ2F0aGVyX3Jlc3VsdC0+Z2V0TmFtZSgp KSArICJfdW1hc2tlZF9lbGVtIiwgYmJsb2NrKTsKLSAgICAgICAgIHJldHVybiBlbGVtOwotICAg ICB9Ci0gfQotIAotIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpnYXRoZXIobGx2 bTo6VmFsdWUgKnB0ciwgY29uc3QgUG9pbnRlclR5cGUgKnB0clR5cGUsIGxsdm06OlZhbHVlICpt YXNrLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh ciAqbmFtZSkgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgYSB2YXJ5aW5n IHBvaW50ZXIgaWYgd2UgZ2V0IGhlcmUuLi4KLSAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIHB0 clR5cGUtPklzVmFyeWluZ1R5cGUoKSk7Ci0gCi1AQCAtMjYwMiw3ICsyNTkyLDggQEAgdm9pZCBG dW5jdGlvbkVtaXRDb250ZXh0OjphZGRHU01ldGFkYXRhKGxsdm06OlZhbHVlICp2LCBTb3VyY2VQ b3MgcG9zKSB7Ci0gICAgIGluc3QtPnNldE1ldGFkYXRhKCJsYXN0X2NvbHVtbiIsIG1kKTsKLSB9 Ci0gCi0tbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkFsbG9jYUluc3QobGx2bTo6 VHlwZSAqbGx2bVR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBhbGlnbiwgYm9vbCBhdEVudHJ5 QmxvY2spIHsKLStsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6QWxsb2NhSW5zdChs bHZtOjpUeXBlICpsbHZtVHlwZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUsIGludCBhbGlnbiwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGF0RW50 cnlCbG9jaykgewotICAgICBpZiAobGx2bVR5cGUgPT0gTlVMTCkgewotICAgICAgICAgQXNzZXJ0 UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsKLSAgICAgICAgIHJldHVybiBOVUxM OwotQEAgLTI2MTUsMTIgKzI2MDYsMTIgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRl eHQ6OkFsbG9jYUluc3QobGx2bTo6VHlwZSAqbGx2bVR5cGUsIGNvbnN0IGNoYXIgKm4KLSAgICAg ICAgIGxsdm06Okluc3RydWN0aW9uICpyZXRJbnN0ID0gYWxsb2NhQmxvY2stPmdldFRlcm1pbmF0 b3IoKTsKLSAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCByZXRJbnN0KTsKLSAgICAgICAg IHVuc2lnbmVkIEFTID0gbGx2bUZ1bmN0aW9uLT5nZXRQYXJlbnQoKS0+Z2V0RGF0YUxheW91dCgp LmdldEFsbG9jYUFkZHJTcGFjZSgpOwotLSAgICAgICAgaW5zdCA9IG5ldyBsbHZtOjpBbGxvY2FJ bnN0KGxsdm1UeXBlLCBBUywgbmFtZSA/IG5hbWUgOiAiIiwgcmV0SW5zdCk7Ci0rICAgICAgICBp bnN0ID0gbmV3IGxsdm06OkFsbG9jYUluc3QobGx2bVR5cGUsIEFTLCBuYW1lLCByZXRJbnN0KTsK LSAgICAgfSBlbHNlIHsKLSAgICAgICAgIC8vIFVubGVzcyB0aGUgY2FsbGVyIG92ZXJyb2RlIHRo ZSBkZWZhdWx0IGFuZCB3YW50cyBpdCBpbiB0aGUKLSAgICAgICAgIC8vIGN1cnJlbnQgYmFzaWMg YmxvY2sKLSAgICAgICAgIHVuc2lnbmVkIEFTID0gbGx2bUZ1bmN0aW9uLT5nZXRQYXJlbnQoKS0+ Z2V0RGF0YUxheW91dCgpLmdldEFsbG9jYUFkZHJTcGFjZSgpOwotLSAgICAgICAgaW5zdCA9IG5l dyBsbHZtOjpBbGxvY2FJbnN0KGxsdm1UeXBlLCBBUywgbmFtZSA/IG5hbWUgOiAiIiwgYmJsb2Nr KTsKLSsgICAgICAgIGluc3QgPSBuZXcgbGx2bTo6QWxsb2NhSW5zdChsbHZtVHlwZSwgQVMsIG5h bWUsIGJibG9jayk7Ci0gICAgIH0KLSAKLSAgICAgLy8gSWYgbm8gYWxpZ25tZW50IHdhcyBzcGVj aWZpZWQgYnV0IHdlIGhhdmUgYW4gYXJyYXkgb2YgYSB1bmlmb3JtCi1AQCAtMjYzOSw3ICsyNjMw LDggQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkFsbG9jYUluc3QobGx2bTo6 VHlwZSAqbGx2bVR5cGUsIGNvbnN0IGNoYXIgKm4KLSAgICAgcmV0dXJuIGluc3Q7Ci0gfQotIAot LWxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpBbGxvY2FJbnN0KGNvbnN0IFR5cGUg KnB0clR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBhbGlnbiwgYm9vbCBhdEVudHJ5QmxvY2sp IHsKLStsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6QWxsb2NhSW5zdChjb25zdCBU eXBlICpwdHJUeXBlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSwgaW50IGFsaWduLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYXRFbnRyeUJsb2Nr KSB7Ci0gICAgIGlmIChwdHJUeXBlID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBvcyhjdXJy ZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLUBAIC0z MDc1LDY2ICszMDY3LDU5IEBAIGxsdm06Okluc3RydWN0aW9uICpGdW5jdGlvbkVtaXRDb250ZXh0 OjpCcmFuY2hJbnN0KGxsdm06OkJhc2ljQmxvY2sgKnRydWVCbG9jaywKLSAgICAgcmV0dXJuIGI7 Ci0gfQotIAotLWxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpFeHRyYWN0SW5zdChs bHZtOjpWYWx1ZSAqdiwgaW50IGVsdCwgY29uc3QgY2hhciAqbmFtZSkgewotK2xsdm06OlZhbHVl ICpGdW5jdGlvbkVtaXRDb250ZXh0OjpFeHRyYWN0SW5zdChsbHZtOjpWYWx1ZSAqdiwgaW50IGVs dCwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAgaWYgKHYgPT0gTlVMTCkgewotICAg ICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsKLSAgICAgICAg IHJldHVybiBOVUxMOwotICAgICB9Ci0gCi0tICAgIGlmIChuYW1lID09IE5VTEwpIHsKLS0gICAg ICAgIGNoYXIgYnVmWzMyXTsKLS0gICAgICAgIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJf ZXh0cmFjdF8lZCIsIGVsdCk7Ci0tICAgICAgICBuYW1lID0gTExWTUdldE5hbWUodiwgYnVmKTsK LS0gICAgfQotICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqZWkgPSBOVUxMOwotICAgICBpZiAobGx2 bTo6aXNhPGxsdm06OlZlY3RvclR5cGU+KHYtPmdldFR5cGUoKSkpCi0tICAgICAgICBlaSA9IGxs dm06OkV4dHJhY3RFbGVtZW50SW5zdDo6Q3JlYXRlKHYsIExMVk1JbnQzMihlbHQpLCBuYW1lLCBi YmxvY2spOwotKyAgICAgICAgZWkgPSBsbHZtOjpFeHRyYWN0RWxlbWVudEluc3Q6OkNyZWF0ZSgK LSsgICAgICAgICAgICB2LCBMTFZNSW50MzIoZWx0KSwKLSsgICAgICAgICAgICBuYW1lLmlzVHJp dmlhbGx5RW1wdHkoKSA/ICgobGx2bTo6VHdpbmUodi0+Z2V0TmFtZSgpKSArICJfZXh0cmFjdF8i KSArIGxsdm06OlR3aW5lKGVsdCkpIDogbmFtZSwgYmJsb2NrKTsKLSAgICAgZWxzZQotLSAgICAg ICAgZWkgPSBsbHZtOjpFeHRyYWN0VmFsdWVJbnN0OjpDcmVhdGUodiwgZWx0LCBuYW1lLCBiYmxv Y2spOwotKyAgICAgICAgZWkgPSBsbHZtOjpFeHRyYWN0VmFsdWVJbnN0OjpDcmVhdGUoCi0rICAg ICAgICAgICAgdiwgZWx0LCBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/ICgobGx2bTo6VHdpbmUo di0+Z2V0TmFtZSgpKSArICJfZXh0cmFjdF8iKSArIGxsdm06OlR3aW5lKGVsdCkpIDogbmFtZSwK LSsgICAgICAgICAgICBiYmxvY2spOwotICAgICBBZGREZWJ1Z1BvcyhlaSk7Ci0gICAgIHJldHVy biBlaTsKLSB9Ci0gCi0tbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6Okluc2VydElu c3QobGx2bTo6VmFsdWUgKnYsIGxsdm06OlZhbHVlICplbHRWYWwsIGludCBlbHQsIGNvbnN0IGNo YXIgKm5hbWUpIHsKLStsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6SW5zZXJ0SW5z dChsbHZtOjpWYWx1ZSAqdiwgbGx2bTo6VmFsdWUgKmVsdFZhbCwgaW50IGVsdCwgY29uc3QgbGx2 bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAgaWYgKHYgPT0gTlVMTCB8fCBlbHRWYWwgPT0gTlVMTCkg ewotICAgICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsKLSAg ICAgICAgIHJldHVybiBOVUxMOwotICAgICB9Ci0gCi0tICAgIGlmIChuYW1lID09IE5VTEwpIHsK LS0gICAgICAgIGNoYXIgYnVmWzMyXTsKLS0gICAgICAgIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1 ZiksICJfaW5zZXJ0XyVkIiwgZWx0KTsKLS0gICAgICAgIG5hbWUgPSBMTFZNR2V0TmFtZSh2LCBi dWYpOwotLSAgICB9Ci0tCi0gICAgIGxsdm06Okluc3RydWN0aW9uICppaSA9IE5VTEw7Ci0gICAg IGlmIChsbHZtOjppc2E8bGx2bTo6VmVjdG9yVHlwZT4odi0+Z2V0VHlwZSgpKSkKLS0gICAgICAg IGlpID0gbGx2bTo6SW5zZXJ0RWxlbWVudEluc3Q6OkNyZWF0ZSh2LCBlbHRWYWwsIExMVk1JbnQz MihlbHQpLCBuYW1lLCBiYmxvY2spOwotKyAgICAgICAgaWkgPSBsbHZtOjpJbnNlcnRFbGVtZW50 SW5zdDo6Q3JlYXRlKAotKyAgICAgICAgICAgIHYsIGVsdFZhbCwgTExWTUludDMyKGVsdCksCi0r ICAgICAgICAgICAgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyAoKGxsdm06OlR3aW5lKHYtPmdl dE5hbWUoKSkgKyAiX2luc2VydF8iKSArIGxsdm06OlR3aW5lKGVsdCkpIDogbmFtZSwgYmJsb2Nr KTsKLSAgICAgZWxzZQotLSAgICAgICAgaWkgPSBsbHZtOjpJbnNlcnRWYWx1ZUluc3Q6OkNyZWF0 ZSh2LCBlbHRWYWwsIGVsdCwgbmFtZSwgYmJsb2NrKTsKLSsgICAgICAgIGlpID0gbGx2bTo6SW5z ZXJ0VmFsdWVJbnN0OjpDcmVhdGUoCi0rICAgICAgICAgICAgdiwgZWx0VmFsLCBlbHQsCi0rICAg ICAgICAgICAgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyAoKGxsdm06OlR3aW5lKHYtPmdldE5h bWUoKSkgKyAiX2luc2VydF8iKSArIGxsdm06OlR3aW5lKGVsdCkpIDogbmFtZSwgYmJsb2NrKTsK LSAgICAgQWRkRGVidWdQb3MoaWkpOwotICAgICByZXR1cm4gaWk7Ci0gfQotIAotLWxsdm06OlZh bHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpTaHVmZmxlSW5zdChsbHZtOjpWYWx1ZSAqdjEsIGxs dm06OlZhbHVlICp2MiwgbGx2bTo6VmFsdWUgKm1hc2ssIGNvbnN0IGNoYXIgKm5hbWUpIHsKLSts bHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6U2h1ZmZsZUluc3QobGx2bTo6VmFsdWUg KnYxLCBsbHZtOjpWYWx1ZSAqdjIsIGxsdm06OlZhbHVlICptYXNrLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkg ewotICAgICBpZiAodjEgPT0gTlVMTCB8fCB2MiA9PSBOVUxMIHx8IG1hc2sgPT0gTlVMTCkgewot ICAgICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsKLSAgICAg ICAgIHJldHVybiBOVUxMOwotICAgICB9Ci0gCi0tICAgIGlmIChuYW1lID09IE5VTEwpIHsKLS0g ICAgICAgIGNoYXIgYnVmWzMyXTsKLS0gICAgICAgIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1Ziks ICJfc2h1ZmZsZSIpOwotLSAgICAgICAgbmFtZSA9IExMVk1HZXROYW1lKHYxLCBidWYpOwotLSAg ICB9Ci0tCi0tICAgIGxsdm06Okluc3RydWN0aW9uICppaSA9IG5ldyBsbHZtOjpTaHVmZmxlVmVj dG9ySW5zdCh2MSwgdjIsIG1hc2ssIG5hbWUsIGJibG9jayk7Ci0rICAgIGxsdm06Okluc3RydWN0 aW9uICppaSA9IG5ldyBsbHZtOjpTaHVmZmxlVmVjdG9ySW5zdCgKLSsgICAgICAgIHYxLCB2Miwg bWFzaywgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyAobGx2bTo6VHdpbmUodjEtPmdldE5hbWUo KSkgKyAiX3NodWZmbGUiKSA6IG5hbWUsIGJibG9jayk7Ci0gCi0gICAgIEFkZERlYnVnUG9zKGlp KTsKLSAgICAgcmV0dXJuIGlpOwotIH0KLSAKLS1sbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29u dGV4dDo6QnJvYWRjYXN0VmFsdWUobGx2bTo6VmFsdWUgKnYsIGxsdm06OlR5cGUgKnZlY1R5cGUs IGNvbnN0IGNoYXIgKm5hbWUpIHsKLStsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6 QnJvYWRjYXN0VmFsdWUobGx2bTo6VmFsdWUgKnYsIGxsdm06OlR5cGUgKnZlY1R5cGUsIGNvbnN0 IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIGlmICh2ID09IE5VTEwgfHwgdmVjVHlwZSA9PSBO VUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JDb3VudCA+IDAp OwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci1AQCAtMzE0OCwxMiArMzEzMyw2IEBAIGxsdm06OlZh bHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpCcm9hZGNhc3RWYWx1ZShsbHZtOjpWYWx1ZSAqdiwg bGx2bTo6VHlwZSAqdmVjCi0gICAgIEFzc2VydCh0eSAmJiB0eS0+Z2V0VmVjdG9yRWxlbWVudFR5 cGUoKSA9PSB2LT5nZXRUeXBlKCkpOwotICNlbmRpZgotIAotLSAgICBpZiAobmFtZSA9PSBOVUxM KSB7Ci0tICAgICAgICBjaGFyIGJ1ZlszMl07Ci0tICAgICAgICBzbnByaW50ZihidWYsIHNpemVv ZihidWYpLCAiX2Jyb2FkY2FzdCIpOwotLSAgICAgICAgbmFtZSA9IExMVk1HZXROYW1lKHYsIGJ1 Zik7Ci0tICAgIH0KLS0KLSAgICAgLy8gR2VuZXJhdGUgdGhlIGZvbGxvd2luZyBzZXF1ZW5jZToK LSAgICAgLy8gICAlbmFtZV9pbml0LmkgPSBpbnNlcnRlbGVtZW50IDw0IHggaTMyPiB1bmRlZiwg aTMyICV2YWwsIGkzMiAwCi0gICAgIC8vICAgJW5hbWUuaSA9IHNodWZmbGV2ZWN0b3IgPDQgeCBp MzI+ICVuYW1lX2luaXQuaSwgPDQgeCBpMzI+IHVuZGVmLAotQEAgLTMxNjMsNyArMzE0Miw3IEBA IGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpCcm9hZGNhc3RWYWx1ZShsbHZtOjpW YWx1ZSAqdiwgbGx2bTo6VHlwZSAqdmVjCi0gICAgIGxsdm06OlZhbHVlICp1bmRlZjIgPSBsbHZt OjpVbmRlZlZhbHVlOjpnZXQodmVjVHlwZSk7Ci0gCi0gICAgIC8vIEluc2VydEVsZW1lbnQKLS0g ICAgbGx2bTo6VHdpbmUgdHcgPSBsbHZtOjpUd2luZShuYW1lKSArIGxsdm06OlR3aW5lKCJfaW5p dCIpOwotKyAgICBsbHZtOjpUd2luZSB0dyA9IG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gKGxs dm06OlR3aW5lKHYtPmdldE5hbWUoKSkgKyAiX2Jyb2FkY2FzdCIpIDogbmFtZSArIGxsdm06OlR3 aW5lKCJfaW5pdCIpOwotICAgICBsbHZtOjpWYWx1ZSAqaW5zZXJ0ID0gSW5zZXJ0SW5zdCh1bmRl ZjEsIHYsIDAsIHR3LnN0cigpLmNfc3RyKCkpOwotIAotICAgICAvLyBTaHVmZmxlVmVjdG9yCi1A QCAtMzE3OSwyOCArMzE1OCwyNyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6 QnJvYWRjYXN0VmFsdWUobGx2bTo6VmFsdWUgKnYsIGxsdm06OlR5cGUgKnZlYwotICAgICAgICAg bGx2bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0KGxsdm06OkVsZW1lbnRDb3VudDo6Z2V0KHN0 YXRpY19jYXN0PHVuc2lnbmVkIGludD4odHktPmdldE51bUVsZW1lbnRzKCkpLCBmYWxzZSksCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6Q29uc3RhbnQ6Omdl dE51bGxWYWx1ZShsbHZtOjpUeXBlOjpnZXRJbnQzMlR5KCpnLT5jdHgpKSk7Ci0gI2VuZGlmCi0t ICAgIGxsdm06OlZhbHVlICpyZXQgPSBTaHVmZmxlSW5zdChpbnNlcnQsIHVuZGVmMiwgemVyb1Zl YywgbmFtZSk7Ci0rICAgIGxsdm06OlZhbHVlICpyZXQgPSBTaHVmZmxlSW5zdChpbnNlcnQsIHVu ZGVmMiwgemVyb1ZlYywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUu aXNUcml2aWFsbHlFbXB0eSgpID8gKGxsdm06OlR3aW5lKHYtPmdldE5hbWUoKSkgKyAiX2Jyb2Fk Y2FzdCIpIDogbmFtZSk7Ci0gCi0gICAgIHJldHVybiByZXQ7Ci0gfQotIAotLWxsdm06OlBISU5v ZGUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OlBoaU5vZGUobGx2bTo6VHlwZSAqdHlwZSwgaW50IGNv dW50LCBjb25zdCBjaGFyICpuYW1lKSB7Ci0tICAgIGxsdm06OlBISU5vZGUgKnBuID0gbGx2bTo6 UEhJTm9kZTo6Q3JlYXRlKHR5cGUsIGNvdW50LCBuYW1lID8gbmFtZSA6ICJwaGkiLCBiYmxvY2sp OwotK2xsdm06OlBISU5vZGUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OlBoaU5vZGUobGx2bTo6VHlw ZSAqdHlwZSwgaW50IGNvdW50LCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotKyAgICBsbHZt OjpQSElOb2RlICpwbiA9IGxsdm06OlBISU5vZGU6OkNyZWF0ZSh0eXBlLCBjb3VudCwgbmFtZS5p c1RyaXZpYWxseUVtcHR5KCkgPyAicGhpIiA6IG5hbWUsIGJibG9jayk7Ci0gICAgIEFkZERlYnVn UG9zKHBuKTsKLSAgICAgcmV0dXJuIHBuOwotIH0KLSAKLSBsbHZtOjpJbnN0cnVjdGlvbiAqRnVu Y3Rpb25FbWl0Q29udGV4dDo6U2VsZWN0SW5zdChsbHZtOjpWYWx1ZSAqdGVzdCwgbGx2bTo6VmFs dWUgKnZhbDAsIGxsdm06OlZhbHVlICp2YWwxLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpIHsKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsbHZtOjpUd2lu ZSAmbmFtZSkgewotICAgICBpZiAodGVzdCA9PSBOVUxMIHx8IHZhbDAgPT0gTlVMTCB8fCB2YWwx ID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50 ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgfQotIAotLSAgICBpZiAobmFtZSA9 PSBOVUxMKQotLSAgICAgICAgbmFtZSA9IExMVk1HZXROYW1lKHRlc3QsICJfc2VsZWN0Iik7Ci0t Ci0tICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0gbGx2bTo6U2VsZWN0SW5zdDo6Q3JlYXRl KHRlc3QsIHZhbDAsIHZhbDEsIG5hbWUsIGJibG9jayk7Ci0rICAgIGxsdm06Okluc3RydWN0aW9u ICppbnN0ID0gbGx2bTo6U2VsZWN0SW5zdDo6Q3JlYXRlKAotKyAgICAgICAgdGVzdCwgdmFsMCwg dmFsMSwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyAobGx2bTo6VHdpbmUodGVzdC0+Z2V0TmFt ZSgpKSArICJfc2VsZWN0IikgOiBuYW1lLCBiYmxvY2spOwotICAgICBBZGREZWJ1Z1BvcyhpbnN0 KTsKLSAgICAgcmV0dXJuIGluc3Q7Ci0gfQotQEAgLTMyMjYsNyArMzIwNCw3IEBAIHN0YXRpYyB1 bnNpZ25lZCBpbnQgbENhbGxlZUFyZ0NvdW50KGxsdm06OlZhbHVlICpjYWxsZWUsIGNvbnN0IEZ1 bmN0aW9uVHlwZSAqZnVuCi0gfQotIAotIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0 OjpDYWxsSW5zdChsbHZtOjpWYWx1ZSAqZnVuYywgY29uc3QgRnVuY3Rpb25UeXBlICpmdW5jVHlw ZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk Ojp2ZWN0b3I8bGx2bTo6VmFsdWUgKj4gJmFyZ3MsIGNvbnN0IGNoYXIgKm5hbWUpIHsKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8 bGx2bTo6VmFsdWUgKj4gJmFyZ3MsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIGlm IChmdW5jID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBtLT5lcnJv ckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLUBAIC0zMjU4LDkgKzMyMzYsOSBA QCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6Q2FsbEluc3QobGx2bTo6VmFsdWUg KmZ1bmMsIGNvbnN0IEZ1bmN0aW9uVHlwZQotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BD X0xMVk1fMTFfMAotICAgICAgICAgbGx2bTo6UG9pbnRlclR5cGUgKmZ1bmNfcHRyX3R5cGUgPSBs bHZtOjpkeW5fY2FzdDxsbHZtOjpQb2ludGVyVHlwZT4oZnVuYy0+Z2V0VHlwZSgpKTsKLSAgICAg ICAgIGxsdm06OkZ1bmN0aW9uVHlwZSAqZnVuY190eXBlID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6 RnVuY3Rpb25UeXBlPihmdW5jX3B0cl90eXBlLT5nZXRQb2ludGVyRWxlbWVudFR5cGUoKSk7Ci0t ICAgICAgICBsbHZtOjpDYWxsSW5zdCAqY2FsbGluc3QgPSBsbHZtOjpDYWxsSW5zdDo6Q3JlYXRl KGZ1bmNfdHlwZSwgZnVuYywgYXJnVmFscywgbmFtZSA/IG5hbWUgOiAiIiwgYmJsb2NrKTsKLSsg ICAgICAgIGxsdm06OkNhbGxJbnN0ICpjYWxsaW5zdCA9IGxsdm06OkNhbGxJbnN0OjpDcmVhdGUo ZnVuY190eXBlLCBmdW5jLCBhcmdWYWxzLCBuYW1lLCBiYmxvY2spOwotICNlbHNlCi0tICAgICAg ICBsbHZtOjpDYWxsSW5zdCAqY2FsbGluc3QgPSBsbHZtOjpDYWxsSW5zdDo6Q3JlYXRlKGZ1bmMs IGFyZ1ZhbHMsIG5hbWUgPyBuYW1lIDogIiIsIGJibG9jayk7Ci0rICAgICAgICBsbHZtOjpDYWxs SW5zdCAqY2FsbGluc3QgPSBsbHZtOjpDYWxsSW5zdDo6Q3JlYXRlKGZ1bmMsIGFyZ1ZhbHMsIG5h bWUsIGJibG9jayk7Ci0gI2VuZGlmCi0gCi0gICAgICAgICAvLyBXZSBjb3VsZCBiZSBkZWFsaW5n IHdpdGggYSBmdW5jdGlvbiBwb2ludGVyIGluIHdoaWNoIGNhc2UgdGhpcyB3aWxsIG5vdCBiZSBh ICdsbHZtOjpGdW5jdGlvbicuCi1AQCAtMzQ2NCwxNCArMzQ0MiwxNCBAQCBsbHZtOjpWYWx1ZSAq RnVuY3Rpb25FbWl0Q29udGV4dDo6Q2FsbEluc3QobGx2bTo6VmFsdWUgKmZ1bmMsIGNvbnN0IEZ1 bmN0aW9uVHlwZQotIH0KLSAKLSBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6Q2Fs bEluc3QobGx2bTo6VmFsdWUgKmZ1bmMsIGNvbnN0IEZ1bmN0aW9uVHlwZSAqZnVuY1R5cGUsIGxs dm06OlZhbHVlICphcmcsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IGNoYXIgKm5hbWUpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAgc3RkOjp2ZWN0b3I8 bGx2bTo6VmFsdWUgKj4gYXJnczsKLSAgICAgYXJncy5wdXNoX2JhY2soYXJnKTsKLSAgICAgcmV0 dXJuIENhbGxJbnN0KGZ1bmMsIGZ1bmNUeXBlLCBhcmdzLCBuYW1lKTsKLSB9Ci0gCi0gbGx2bTo6 VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkNhbGxJbnN0KGxsdm06OlZhbHVlICpmdW5jLCBj b25zdCBGdW5jdGlvblR5cGUgKmZ1bmNUeXBlLCBsbHZtOjpWYWx1ZSAqYXJnMCwKLS0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6VmFsdWUgKmFyZzEsIGNv bnN0IGNoYXIgKm5hbWUpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbGx2bTo6VmFsdWUgKmFyZzEsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0gICAg IHN0ZDo6dmVjdG9yPGxsdm06OlZhbHVlICo+IGFyZ3M7Ci0gICAgIGFyZ3MucHVzaF9iYWNrKGFy ZzApOwotICAgICBhcmdzLnB1c2hfYmFjayhhcmcxKTsKLWRpZmYgLS1naXQgYS9zcmMvY3R4Lmgg Yi9zcmMvY3R4LmgKLWluZGV4IDZlNWFkNzRiYS4uNDhiM2JiODI2IDEwMDY0NAotLS0tIGEvc3Jj L2N0eC5oCi0rKysgYi9zcmMvY3R4LmgKLUBAIC0zMDIsNyArMzAyLDcgQEAgY2xhc3MgRnVuY3Rp b25FbWl0Q29udGV4dCB7Ci0gICAgIGxsdm06OlZhbHVlICpHZXRTdHJpbmdQdHIoY29uc3Qgc3Rk OjpzdHJpbmcgJnN0cik7Ci0gCi0gICAgIC8qKiBDcmVhdGUgYSBuZXcgYmFzaWMgYmxvY2sgd2l0 aCBnaXZlbiBuYW1lICovCi0tICAgIGxsdm06OkJhc2ljQmxvY2sgKkNyZWF0ZUJhc2ljQmxvY2so Y29uc3QgY2hhciAqbmFtZSwgbGx2bTo6QmFzaWNCbG9jayAqaW5zZXJ0QWZ0ZXIgPSBOVUxMKTsK LSsgICAgbGx2bTo6QmFzaWNCbG9jayAqQ3JlYXRlQmFzaWNCbG9jayhjb25zdCBsbHZtOjpUd2lu ZSAmbmFtZSwgbGx2bTo6QmFzaWNCbG9jayAqaW5zZXJ0QWZ0ZXIgPSBOVUxMKTsKLSAKLSAgICAg LyoqIEdpdmVuIGEgdmVjdG9yIHdpdGggZWxlbWVudCB0eXBlIGkxLCByZXR1cm4gYSB2ZWN0b3Ig b2YgdHlwZQotICAgICAgICAgTExWTVR5cGVzOjpCb29sVmVjdG9yVHlwZS4gIFRoaXMgbWV0aG9k IGhhbmRsZXMgdGhlIGNvbnZlcnNpb24gZm9yCi1AQCAtMzgwLDMzICszODAsMzMgQEAgY2xhc3Mg RnVuY3Rpb25FbWl0Q29udGV4dCB7Ci0gICAgICAgICB0aGlzIGFsc28gaGFuZGxlcyBhcHBseWlu ZyB0aGUgZ2l2ZW4gb3BlcmF0aW9uIHRvIHRoZSB2ZWN0b3IKLSAgICAgICAgIGVsZW1lbnRzLiAq LwotICAgICBsbHZtOjpWYWx1ZSAqQmluYXJ5T3BlcmF0b3IobGx2bTo6SW5zdHJ1Y3Rpb246OkJp bmFyeU9wcyBpbnN0LCBsbHZtOjpWYWx1ZSAqdjAsIGxsdm06OlZhbHVlICp2MSwKLS0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIp OwotIAotICAgICAvKiogRW1pdCB0aGUgIm5vdCIgb3BlcmF0b3IuICBMaWtlIEJpbmFyeU9wZXJh dG9yKCksIHRoaXMgYWxzbyBoYW5kbGVzCi0gICAgICAgICBhIFZlY3RvclR5cGUtYmFzZWQgb3Bl cmFuZC4gKi8KLS0gICAgbGx2bTo6VmFsdWUgKk5vdE9wZXJhdG9yKGxsdm06OlZhbHVlICp2LCBj b25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0rICAgIGxsdm06OlZhbHVlICpOb3RPcGVyYXRvcihs bHZtOjpWYWx1ZSAqdiwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0gCi0gICAgIC8q KiBFbWl0IGEgY29tcGFyaXNvbiBpbnN0cnVjdGlvbi4gIElmIHRoZSBvcGVyYW5kcyBhcmUgVmVj dG9yVHlwZXMsCi0gICAgICAgICB0aGVuIGEgdmFsdWUgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGJv b2xlYW4gVmVjdG9yVHlwZSBpcwotICAgICAgICAgcmV0dXJuZWQuICovCi0gICAgIGxsdm06OlZh bHVlICpDbXBJbnN0KGxsdm06Okluc3RydWN0aW9uOjpPdGhlck9wcyBpbnN0LCBsbHZtOjpDbXBJ bnN0OjpQcmVkaWNhdGUgcHJlZCwgbGx2bTo6VmFsdWUgKnYwLAotLSAgICAgICAgICAgICAgICAg ICAgICAgICBsbHZtOjpWYWx1ZSAqdjEsIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgbGx2bTo6VmFsdWUgKnYxLCBjb25zdCBsbHZtOjpUd2luZSAm bmFtZSA9ICIiKTsKLSAKLSAgICAgLyoqIEdpdmVuIGEgc2NhbGFyIHZhbHVlLCByZXR1cm4gYSB2 ZWN0b3Igb2YgdGhlIHNhbWUgdHlwZSAob3IgYW4KLSAgICAgICAgIGFycmF5LCBmb3IgcG9pbnRl ciB0eXBlcykuICovCi0tICAgIGxsdm06OlZhbHVlICpTbWVhclVuaWZvcm0obGx2bTo6VmFsdWUg KnZhbHVlLCBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0rICAgIGxsdm06OlZhbHVlICpTbWVh clVuaWZvcm0obGx2bTo6VmFsdWUgKnZhbHVlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIi KTsKLSAKLS0gICAgbGx2bTo6VmFsdWUgKkJpdENhc3RJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwg bGx2bTo6VHlwZSAqdHlwZSwgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwpOwotLSAgICBsbHZtOjpW YWx1ZSAqUHRyVG9JbnRJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgY29uc3QgY2hhciAqbmFtZSA9 IE5VTEwpOwotLSAgICBsbHZtOjpWYWx1ZSAqUHRyVG9JbnRJbnN0KGxsdm06OlZhbHVlICp2YWx1 ZSwgbGx2bTo6VHlwZSAqdHlwZSwgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwpOwotLSAgICBsbHZt OjpWYWx1ZSAqSW50VG9QdHJJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdHlw ZSwgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwpOwotKyAgICBsbHZtOjpWYWx1ZSAqQml0Q2FzdElu c3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0eXBlLCBjb25zdCBsbHZtOjpUd2lu ZSAmbmFtZSA9ICIiKTsKLSsgICAgbGx2bTo6VmFsdWUgKlB0clRvSW50SW5zdChsbHZtOjpWYWx1 ZSAqdmFsdWUsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotKyAgICBsbHZtOjpWYWx1 ZSAqUHRyVG9JbnRJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwgY29u c3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0rICAgIGxsdm06OlZhbHVlICpJbnRUb1B0cklu c3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0eXBlLCBjb25zdCBsbHZtOjpUd2lu ZSAmbmFtZSA9ICIiKTsKLSAKLS0gICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKlRydW5jSW5zdChsbHZt OjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxM KTsKLSsgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKlRydW5jSW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUs IGxsdm06OlR5cGUgKnR5cGUsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotICAgICBs bHZtOjpJbnN0cnVjdGlvbiAqQ2FzdEluc3QobGx2bTo6SW5zdHJ1Y3Rpb246OkNhc3RPcHMgb3As IGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLS0gICAgbGx2bTo6SW5z dHJ1Y3Rpb24gKkZQQ2FzdEluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0eXBl LCBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0tICAgIGxsdm06Okluc3RydWN0aW9uICpTRXh0 SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5cGUsIGNvbnN0IGNoYXIgKm5h bWUgPSBOVUxMKTsKLS0gICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKlpFeHRJbnN0KGxsdm06OlZhbHVl ICp2YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwpOwotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAi Iik7Ci0rICAgIGxsdm06Okluc3RydWN0aW9uICpGUENhc3RJbnN0KGxsdm06OlZhbHVlICp2YWx1 ZSwgbGx2bTo6VHlwZSAqdHlwZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0rICAg IGxsdm06Okluc3RydWN0aW9uICpTRXh0SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5 cGUgKnR5cGUsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotKyAgICBsbHZtOjpJbnN0 cnVjdGlvbiAqWkV4dEluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0eXBlLCBj b25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSAKLSAgICAgLyoqIEdpdmVuIHR3byBpbnRl Z2VyLXR5cGVkIHZhbHVlcyAoYnV0IHBvc3NpYmx5IG9uZSB2ZWN0b3IgYW5kIHRoZQotICAgICAg ICAgb3RoZXIgbm90LCBhbmQgb3Igb2YgcG9zc2libHktZGlmZmVyZW50IGJpdC13aWR0aHMpLCB1 cGRhdGUgdGhlaXIKLUBAIC00MjYsOSArNDI2LDkgQEAgY2xhc3MgRnVuY3Rpb25FbWl0Q29udGV4 dCB7Ci0gICAgICAgICBwb2ludGVycy4gIFRoZSB1bmRlcmx5aW5nIHR5cGUgb2YgdGhlIGJhc2Ug cG9pbnRlciBtdXN0IGJlIHByb3ZpZGVkCi0gICAgICAgICB2aWEgdGhlIHB0clR5cGUgcGFyYW1l dGVyICovCi0gICAgIGxsdm06OlZhbHVlICpHZXRFbGVtZW50UHRySW5zdChsbHZtOjpWYWx1ZSAq YmFzZVB0ciwgbGx2bTo6VmFsdWUgKmluZGV4LCBjb25zdCBUeXBlICpwdHJUeXBlLAotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwpOwot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGx2bTo6VHdpbmUgJm5h bWUgPSAiIik7Ci0gICAgIGxsdm06OlZhbHVlICpHZXRFbGVtZW50UHRySW5zdChsbHZtOjpWYWx1 ZSAqYmFzZVB0ciwgbGx2bTo6VmFsdWUgKmluZGV4MCwgbGx2bTo6VmFsdWUgKmluZGV4MSwgY29u c3QgVHlwZSAqcHRyVHlwZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotIAotICAgICAvKiogVGhpcyBtZXRo b2QgcmV0dXJucyBhIG5ldyBwb2ludGVyIHRoYXQgcmVwcmVzZW50cyBvZmZzZXR0aW5nIHRoZQot ICAgICAgICAgZ2l2ZW4gYmFzZSBwb2ludGVyIHRvIHBvaW50IGF0IHRoZSBnaXZlbiBlbGVtZW50 IG51bWJlciBvZiB0aGUKLUBAIC00MzYsMjYgKzQzNiwyNiBAQCBjbGFzcyBGdW5jdGlvbkVtaXRD b250ZXh0IHsKLSAgICAgICAgIHBvaW50ZXIgbXVzdCBiZSBhIHBvaW50ZXIgdG8gYSBzdHJ1Y3R1 cmUgdHlwZS4gIFRoZSBwdHJUeXBlIGdpdmVzCi0gICAgICAgICB0aGUgdHlwZSBvZiB0aGUgcG9p bnRlciwgdGhvdWdoIGl0IG1heSBiZSBOVUxMIGlmIHRoZSBiYXNlIHBvaW50ZXIKLSAgICAgICAg IGlzIHVuaWZvcm0uICovCi0tICAgIGxsdm06OlZhbHVlICpBZGRFbGVtZW50T2Zmc2V0KGxsdm06 OlZhbHVlICpiYXNlUHRyLCBpbnQgZWxlbWVudE51bSwgY29uc3QgVHlwZSAqcHRyVHlwZSwgY29u c3QgY2hhciAqbmFtZSA9IE5VTEwsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IFBvaW50ZXJUeXBlICoqcmVzdWx0UHRyVHlwZSA9IE5VTEwpOwotKyAgICBsbHZtOjpW YWx1ZSAqQWRkRWxlbWVudE9mZnNldChsbHZtOjpWYWx1ZSAqYmFzZVB0ciwgaW50IGVsZW1lbnRO dW0sIGNvbnN0IFR5cGUgKnB0clR5cGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIsIGNvbnN0IFBvaW50ZXJUeXBlICoqcmVz dWx0UHRyVHlwZSA9IE5VTEwpOwotIAotICAgICAvKiogQm9vbCBpcyBzdG9yZWQgYXMgaTggYW5k IDxXSURUSCB4IGk4PiBidXQgcmVwcmVzZW50ZWQgaW4gSVIgYXMgaTEgYW5kCi0gICAgICAqIDxX SURUSCB4IE1BU0s+LiBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIHRvIG1hdGNoIGJvb2wgc2l6 ZSBhdCBzdG9yYWdlCi0gICAgICAqIGludGVyZmFjZS4gKi8KLS0gICAgbGx2bTo6VmFsdWUgKlN3 aXRjaEJvb2xTaXplKGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdG9UeXBlLCBjb25z dCBjaGFyICpuYW1lID0gTlVMTCk7Ci0rICAgIGxsdm06OlZhbHVlICpTd2l0Y2hCb29sU2l6ZShs bHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnRvVHlwZSwgY29uc3QgbGx2bTo6VHdpbmUg Jm5hbWUgPSAiIik7Ci0gICAgIC8qKiBMb2FkIGZyb20gdGhlIG1lbW9yeSBsb2NhdGlvbihzKSBn aXZlbiBieSBsdmFsdWUsIHVzaW5nIHRoZSBnaXZlbgotICAgICAgICAgbWFzay4gIFRoZSBsdmFs dWUgbWF5IGJlIHZhcnlpbmcsIGluIHdoaWNoIGNhc2UgdGhpcyBjb3JyZXNwb25kcyB0bwotICAg ICAgICAgYSBnYXRoZXIgZnJvbSB0aGUgbXVsdGlwbGUgbWVtb3J5IGxvY2F0aW9ucyBnaXZlbiBi eSB0aGUgYXJyYXkgb2YKLSAgICAgICAgIHBvaW50ZXIgdmFsdWVzIGdpdmVuIGJ5IHRoZSBsdmFs dWUuICBJZiB0aGUgbHZhbHVlIGlzIG5vdCB2YXJ5aW5nLAotICAgICAgICAgdGhlbiBib3RoIHRo ZSBtYXNrIHBvaW50ZXIgYW5kIHRoZSB0eXBlIHBvaW50ZXIgbWF5IGJlIE5VTEwuICovCi0tICAg IGxsdm06OlZhbHVlICpMb2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjpWYWx1ZSAqbWFz aywgY29uc3QgVHlwZSAqcHRyVHlwZSwgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwsCi0rICAgIGxs dm06OlZhbHVlICpMb2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjpWYWx1ZSAqbWFzaywg Y29uc3QgVHlwZSAqcHRyVHlwZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIiwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgb25lX2VsZW0gPSBmYWxzZSk7Ci0gCi0gICAgIC8q IExvYWQgZnJvbSBtZW1vcnkgbG9jYXRpb24ocykgZ2l2ZW4uCi0gICAgICAqICd0eXBlJyBuZWVk cyB0byBiZSBwcm92aWRlZCB3aGVuIHN0b3JhZ2UgdHlwZSBpcyBkaWZmZXJlbnQgZnJvbSBJUiB0 eXBlLiBGb3IgZXhhbXBsZSwKLSAgICAgICogJ3VuZm9ybSBib29sJyBpcyAnaTEnIGluIElSIGJ1 dCBzdG9yZWQgYXMgJ2k4Jy4KLSAgICAgICogT3RoZXJ3aXNlIGxlYXZlIHRoaXMgYXMgTlVMTC4g Ki8KLS0gICAgbGx2bTo6VmFsdWUgKkxvYWRJbnN0KGxsdm06OlZhbHVlICpwdHIsIGNvbnN0IFR5 cGUgKnR5cGUgPSBOVUxMLCBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0rICAgIGxsdm06OlZh bHVlICpMb2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBjb25zdCBUeXBlICp0eXBlID0gTlVMTCwg Y29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0gCi0gICAgIC8qKiBFbWl0cyBhbiBhbGxv Y2EgaW5zdHJ1Y3Rpb24gdG8gYWxsb2NhdGUgc3RhY2sgc3RvcmFnZSBmb3IgdGhlIGdpdmVuCi0g ICAgICAgICB0eXBlLiAgSWYgYSBub24temVybyBhbGlnbm1lbnQgaXMgc3BlY2lmaWVkLCB0aGUg b2JqZWN0IGlzIGFsc28KLUBAIC00NjMsNyArNDYzLDggQEAgY2xhc3MgRnVuY3Rpb25FbWl0Q29u dGV4dCB7Ci0gICAgICAgICBpbnN0cnVjdGlvbiBpcyBhZGRlZCBhdCB0aGUgc3RhcnQgb2YgdGhl IGZ1bmN0aW9uIGluIHRoZSBlbnRyeQotICAgICAgICAgYmFzaWMgYmxvY2s7IGlmIGl0IHNob3Vs ZCBiZSBhZGRlZCB0byB0aGUgY3VycmVudCBiYXNpYyBibG9jaywgdGhlbgotICAgICAgICAgdGhl IGF0RW50cnlCbG9jayBwYXJhbWV0ZXIgc2hvdWxkIGJlIGZhbHNlLiAqLwotLSAgICBsbHZtOjpW YWx1ZSAqQWxsb2NhSW5zdChsbHZtOjpUeXBlICpsbHZtVHlwZSwgY29uc3QgY2hhciAqbmFtZSA9 IE5VTEwsIGludCBhbGlnbiA9IDAsIGJvb2wgYXRFbnRyeUJsb2NrID0gdHJ1ZSk7Ci0rICAgIGxs dm06OlZhbHVlICpBbGxvY2FJbnN0KGxsdm06OlR5cGUgKmxsdm1UeXBlLCBjb25zdCBsbHZtOjpU d2luZSAmbmFtZSA9ICIiLCBpbnQgYWxpZ24gPSAwLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBib29sIGF0RW50cnlCbG9jayA9IHRydWUpOwotIAotICAgICAvKiogRW1pdHMgYW4gYWxs b2NhIGluc3RydWN0aW9uIHRvIGFsbG9jYXRlIHN0YWNrIHN0b3JhZ2UgZm9yIHRoZSBnaXZlbgot ICAgICAgICAgdHlwZS4gIElmIGEgbm9uLXplcm8gYWxpZ25tZW50IGlzIHNwZWNpZmllZCwgdGhl IG9iamVjdCBpcyBhbHNvCi1AQCAtNDc0LDcgKzQ3NSw3IEBAIGNsYXNzIEZ1bmN0aW9uRW1pdENv bnRleHQgewotICAgICAgICAgVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBwcmVmZXJyZWQgd2hlbiBw b3NzaWJsZS4gSXQgaXMgbmVlZGVkIHdoZW4KLSAgICAgICAgIHN0b3JhZ2UgdHlwZSBpcyBkaWZm ZXJlbnQgZnJvbSBJUiB0eXBlLiBGb3IgZXhhbXBsZSwKLSAgICAgICAgICd1bmZvcm0gYm9vbCcg aXMgJ2kxJyBpbiBJUiBidXQgc3RvcmVkIGFzICdpOCcuICovCi0tICAgIGxsdm06OlZhbHVlICpB bGxvY2FJbnN0KGNvbnN0IFR5cGUgKnB0clR5cGUsIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMLCBp bnQgYWxpZ24gPSAwLCBib29sIGF0RW50cnlCbG9jayA9IHRydWUpOwotKyAgICBsbHZtOjpWYWx1 ZSAqQWxsb2NhSW5zdChjb25zdCBUeXBlICpwdHJUeXBlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFt ZSA9ICIiLCBpbnQgYWxpZ24gPSAwLCBib29sIGF0RW50cnlCbG9jayA9IHRydWUpOwotIAotICAg ICAvKiogU3RhbmRhcmQgc3RvcmUgaW5zdHJ1Y3Rpb247IGZvciB0aGlzIHZhcmlhbnQsIHRoZSBs dmFsdWUgbXVzdCBiZSBhCi0gICAgICAgICBzaW5nbGUgcG9pbnRlciwgbm90IGEgdmFyeWluZyBs dmFsdWUuCi1AQCAtNTAyLDM5ICs1MDMsNDEgQEAgY2xhc3MgRnVuY3Rpb25FbWl0Q29udGV4dCB7 Ci0gICAgIC8qKiBUaGlzIGNvbnZlbmllbmNlIG1ldGhvZCBtYXBzIHRvIGFuIGxsdm06OkV4dHJh Y3RFbGVtZW50SW5zdCBpZiB0aGUKLSAgICAgICAgIGdpdmVuIHZhbHVlIGlzIGEgbGx2bTo6VmVj dG9yVHlwZSwgYW5kIHRvIGFuIGxsdm06OkV4dHJhY3RWYWx1ZUluc3QKLSAgICAgICAgIG90aGVy d2lzZS4gKi8KLS0gICAgbGx2bTo6VmFsdWUgKkV4dHJhY3RJbnN0KGxsdm06OlZhbHVlICp2LCBp bnQgZWx0LCBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0rICAgIGxsdm06OlZhbHVlICpFeHRy YWN0SW5zdChsbHZtOjpWYWx1ZSAqdiwgaW50IGVsdCwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUg PSAiIik7Ci0gCi0gICAgIC8qKiBUaGlzIGNvbnZlbmllbmNlIG1ldGhvZCBtYXBzIHRvIGFuIGxs dm06Okluc2VydEVsZW1lbnRJbnN0IGlmIHRoZQotICAgICAgICAgZ2l2ZW4gdmFsdWUgaXMgYSBs bHZtOjpWZWN0b3JUeXBlLCBhbmQgdG8gYW4gbGx2bTo6SW5zZXJ0VmFsdWVJbnN0Ci0gICAgICAg ICBvdGhlcndpc2UuICovCi0tICAgIGxsdm06OlZhbHVlICpJbnNlcnRJbnN0KGxsdm06OlZhbHVl ICp2LCBsbHZtOjpWYWx1ZSAqZWx0VmFsLCBpbnQgZWx0LCBjb25zdCBjaGFyICpuYW1lID0gTlVM TCk7Ci0rICAgIGxsdm06OlZhbHVlICpJbnNlcnRJbnN0KGxsdm06OlZhbHVlICp2LCBsbHZtOjpW YWx1ZSAqZWx0VmFsLCBpbnQgZWx0LCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSAK LSAgICAgLyoqIFRoaXMgY29udmVuaWVuY2UgbWV0aG9kIG1hcHMgdG8gYW4gbGx2bTo6U2h1ZmZs ZVZlY3Rvckluc3QuICovCi0tICAgIGxsdm06OlZhbHVlICpTaHVmZmxlSW5zdChsbHZtOjpWYWx1 ZSAqdjEsIGxsdm06OlZhbHVlICp2MiwgbGx2bTo6VmFsdWUgKm1hc2ssIGNvbnN0IGNoYXIgKm5h bWUgPSBOVUxMKTsKLSsgICAgbGx2bTo6VmFsdWUgKlNodWZmbGVJbnN0KGxsdm06OlZhbHVlICp2 MSwgbGx2bTo6VmFsdWUgKnYyLCBsbHZtOjpWYWx1ZSAqbWFzaywgY29uc3QgbGx2bTo6VHdpbmUg Jm5hbWUgPSAiIik7Ci0gCi0gICAgIC8qKiBUaGlzIGNvbnZlbmllbmNlIG1ldGhvZCB0byBnZW5l cmF0ZSBicm9hZGNhc3QgcGF0dGVybi4gSXQgdGFrZXMgYSB2YWx1ZQotICAgICAgICAgYW5kIGEg dmVjdG9yIHR5cGUuIFR5cGUgb2YgdGhlIHZhbHVlIG11c3QgbWF0Y2ggZWxlbWVudCB0eXBlIG9m IHRoZQotICAgICAgICAgdmVjdG9yLiAqLwotLSAgICBsbHZtOjpWYWx1ZSAqQnJvYWRjYXN0VmFs dWUobGx2bTo6VmFsdWUgKnYsIGxsdm06OlR5cGUgKnZlY1R5cGUsIGNvbnN0IGNoYXIgKm5hbWUg PSBOVUxMKTsKLSsgICAgbGx2bTo6VmFsdWUgKkJyb2FkY2FzdFZhbHVlKGxsdm06OlZhbHVlICp2 LCBsbHZtOjpUeXBlICp2ZWNUeXBlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSAK LS0gICAgbGx2bTo6UEhJTm9kZSAqUGhpTm9kZShsbHZtOjpUeXBlICp0eXBlLCBpbnQgY291bnQs IGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLS0gICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKlNlbGVj dEluc3QobGx2bTo6VmFsdWUgKnRlc3QsIGxsdm06OlZhbHVlICp2YWwwLCBsbHZtOjpWYWx1ZSAq dmFsMSwgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwpOwotKyAgICBsbHZtOjpQSElOb2RlICpQaGlO b2RlKGxsdm06OlR5cGUgKnR5cGUsIGludCBjb3VudCwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUg PSAiIik7Ci0rICAgIGxsdm06Okluc3RydWN0aW9uICpTZWxlY3RJbnN0KGxsdm06OlZhbHVlICp0 ZXN0LCBsbHZtOjpWYWx1ZSAqdmFsMCwgbGx2bTo6VmFsdWUgKnZhbDEsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotIAot ICAgICAvKiogRW1pdHMgSVIgdG8gZG8gYSBmdW5jdGlvbiBjYWxsIHdpdGggdGhlIGdpdmVuIGFy Z3VtZW50cy4gIElmIHRoZQotICAgICAgICAgZnVuY3Rpb24gdHlwZSBpcyBhIHZhcnlpbmcgZnVu Y3Rpb24gcG9pbnRlciB0eXBlLCBpdHMgZnVsbCB0eXBlCi0gICAgICAgICBtdXN0IGJlIHByb3Zp ZGVkIGluIGZ1bmNUeXBlLiAgZnVuY1R5cGUgY2FuIGJlIE5VTEwgaWYgZnVuYyBpcyBhCi0gICAg ICAgICB1bmlmb3JtIGZ1bmN0aW9uIHBvaW50ZXIuICovCi0gICAgIGxsdm06OlZhbHVlICpDYWxs SW5zdChsbHZtOjpWYWx1ZSAqZnVuYywgY29uc3QgRnVuY3Rpb25UeXBlICpmdW5jVHlwZSwgY29u c3Qgc3RkOjp2ZWN0b3I8bGx2bTo6VmFsdWUgKj4gJmFyZ3MsCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0rICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSAKLSAgICAgLyoqIFRoaXMgaXMg YSBjb252ZW5pZW5jZSBtZXRob2QgdGhhdCBpc3N1ZXMgYSBjYWxsIGluc3RydWN0aW9uIHRvIGEK LSAgICAgICAgIGZ1bmN0aW9uIHRoYXQgdGFrZXMganVzdCBhIHNpbmdsZSBhcmd1bWVudC4gKi8K LS0gICAgbGx2bTo6VmFsdWUgKkNhbGxJbnN0KGxsdm06OlZhbHVlICpmdW5jLCBjb25zdCBGdW5j dGlvblR5cGUgKmZ1bmNUeXBlLCBsbHZtOjpWYWx1ZSAqYXJnLCBjb25zdCBjaGFyICpuYW1lID0g TlVMTCk7Ci0rICAgIGxsdm06OlZhbHVlICpDYWxsSW5zdChsbHZtOjpWYWx1ZSAqZnVuYywgY29u c3QgRnVuY3Rpb25UeXBlICpmdW5jVHlwZSwgbGx2bTo6VmFsdWUgKmFyZywKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotIAotICAgICAv KiogVGhpcyBpcyBhIGNvbnZlbmllbmNlIG1ldGhvZCB0aGF0IGlzc3VlcyBhIGNhbGwgaW5zdHJ1 Y3Rpb24gdG8gYQotICAgICAgICAgZnVuY3Rpb24gdGhhdCB0YWtlcyB0d28gYXJndW1lbnRzLiAq LwotICAgICBsbHZtOjpWYWx1ZSAqQ2FsbEluc3QobGx2bTo6VmFsdWUgKmZ1bmMsIGNvbnN0IEZ1 bmN0aW9uVHlwZSAqZnVuY1R5cGUsIGxsdm06OlZhbHVlICphcmcwLCBsbHZtOjpWYWx1ZSAqYXJn MSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsK LSsgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIp OwotIAotICAgICAvKiogTGF1bmNoIGFuIGFzeW5jaHJvbm91cyB0YXNrIHRvIHJ1biB0aGUgZ2l2 ZW4gZnVuY3Rpb24sIHBhc3NpbmcgaXQKLSAgICAgICAgIGhlIGdpdmVuIGFyZ3VtZW50IHZhbHVl cy4gKi8KLUBAIC03NTYsOSArNzU5LDEwIEBAIGNsYXNzIEZ1bmN0aW9uRW1pdENvbnRleHQgewot ICAgICB2b2lkIG1hc2tlZFN0b3JlKGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VmFsdWUgKnB0 ciwgY29uc3QgVHlwZSAqcHRyVHlwZSwgbGx2bTo6VmFsdWUgKm1hc2spOwotICAgICB2b2lkIHN0 b3JlVW5pZm9ybVRvU09BKGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VmFsdWUgKnB0ciwgbGx2 bTo6VmFsdWUgKm1hc2ssIGNvbnN0IFR5cGUgKnZhbHVlVHlwZSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBQb2ludGVyVHlwZSAqcHRyVHlwZSk7Ci0tICAgIGxsdm06OlZhbHVl ICpsb2FkVW5pZm9ybUZyb21TT0EobGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6VmFsdWUgKm1hc2ss IGNvbnN0IFBvaW50ZXJUeXBlICpwdHJUeXBlLCBjb25zdCBjaGFyICpuYW1lKTsKLSsgICAgbGx2 bTo6VmFsdWUgKmxvYWRVbmlmb3JtRnJvbVNPQShsbHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjpWYWx1 ZSAqbWFzaywgY29uc3QgUG9pbnRlclR5cGUgKnB0clR5cGUsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0gCi0tICAg IGxsdm06OlZhbHVlICpnYXRoZXIobGx2bTo6VmFsdWUgKnB0ciwgY29uc3QgUG9pbnRlclR5cGUg KnB0clR5cGUsIGxsdm06OlZhbHVlICptYXNrLCBjb25zdCBjaGFyICpuYW1lKTsKLSsgICAgbGx2 bTo6VmFsdWUgKmdhdGhlcihsbHZtOjpWYWx1ZSAqcHRyLCBjb25zdCBQb2ludGVyVHlwZSAqcHRy VHlwZSwgbGx2bTo6VmFsdWUgKm1hc2ssIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwot IAotICAgICBsbHZtOjpWYWx1ZSAqYWRkVmFyeWluZ09mZnNldHNJZk5lZWRlZChsbHZtOjpWYWx1 ZSAqcHRyLCBjb25zdCBUeXBlICpwdHJUeXBlKTsKLSB9OwotZGlmZiAtLWdpdCBhL3NyYy9leHBy LmNwcCBiL3NyYy9leHByLmNwcAotaW5kZXggODBjYzMwMjBhLi42ZDM4ZDE4ODkgMTAwNjQ0Ci0t LS0gYS9zcmMvZXhwci5jcHAKLSsrKyBiL3NyYy9leHByLmNwcAotQEAgLTEwMjEsMTEgKzEwMjEs MTEgQEAgc3RhdGljIGxsdm06OlZhbHVlICpsRW1pdE5lZ2F0ZShFeHByICphcmcsIFNvdXJjZVBv cyBwb3MsIEZ1bmN0aW9uRW1pdENvbnRleHQgKmMKLSAgICAgY3R4LT5TZXREZWJ1Z1Bvcyhwb3Mp OwotICAgICBpZiAodHlwZS0+SXNGbG9hdFR5cGUoKSkgewotICAgICAgICAgbGx2bTo6VmFsdWUg Knplcm8gPSBsbHZtOjpDb25zdGFudEZQOjpnZXRaZXJvVmFsdWVGb3JOZWdhdGlvbih0eXBlLT5M TFZNVHlwZShnLT5jdHgpKTsKLS0gICAgICAgIHJldHVybiBjdHgtPkJpbmFyeU9wZXJhdG9yKGxs dm06Okluc3RydWN0aW9uOjpGU3ViLCB6ZXJvLCBhcmdWYWwsIExMVk1HZXROYW1lKGFyZ1ZhbCwg Il9uZWdhdGUiKSk7Ci0rICAgICAgICByZXR1cm4gY3R4LT5CaW5hcnlPcGVyYXRvcihsbHZtOjpJ bnN0cnVjdGlvbjo6RlN1YiwgemVybywgYXJnVmFsLCBsbHZtOjpUd2luZShhcmdWYWwtPmdldE5h bWUoKSkgKyAiX25lZ2F0ZSIpOwotICAgICB9IGVsc2UgewotICAgICAgICAgbGx2bTo6VmFsdWUg Knplcm8gPSBsTExWTUNvbnN0YW50VmFsdWUodHlwZSwgZy0+Y3R4LCAwLik7Ci0gICAgICAgICBB c3NlcnRQb3MocG9zLCB0eXBlLT5Jc0ludFR5cGUoKSk7Ci0tICAgICAgICByZXR1cm4gY3R4LT5C aW5hcnlPcGVyYXRvcihsbHZtOjpJbnN0cnVjdGlvbjo6U3ViLCB6ZXJvLCBhcmdWYWwsIExMVk1H ZXROYW1lKGFyZ1ZhbCwgIl9uZWdhdGUiKSk7Ci0rICAgICAgICByZXR1cm4gY3R4LT5CaW5hcnlP cGVyYXRvcihsbHZtOjpJbnN0cnVjdGlvbjo6U3ViLCB6ZXJvLCBhcmdWYWwsIGxsdm06OlR3aW5l KGFyZ1ZhbC0+Z2V0TmFtZSgpKSArICJfbmVnYXRlIik7Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMTA0 NywxMSArMTA0NywxMSBAQCBsbHZtOjpWYWx1ZSAqVW5hcnlFeHByOjpHZXRWYWx1ZShGdW5jdGlv bkVtaXRDb250ZXh0ICpjdHgpIGNvbnN0IHsKLSAgICAgICAgIHJldHVybiBsRW1pdE5lZ2F0ZShl eHByLCBwb3MsIGN0eCk7Ci0gICAgIGNhc2UgTG9naWNhbE5vdDogewotICAgICAgICAgbGx2bTo6 VmFsdWUgKmFyZ1ZhbCA9IGV4cHItPkdldFZhbHVlKGN0eCk7Ci0tICAgICAgICByZXR1cm4gY3R4 LT5Ob3RPcGVyYXRvcihhcmdWYWwsIExMVk1HZXROYW1lKGFyZ1ZhbCwgIl9sb2dpY2Fsbm90Iikp OwotKyAgICAgICAgcmV0dXJuIGN0eC0+Tm90T3BlcmF0b3IoYXJnVmFsLCBsbHZtOjpUd2luZShh cmdWYWwtPmdldE5hbWUoKSkgKyAiX2xvZ2ljYWxub3QiKTsKLSAgICAgfQotICAgICBjYXNlIEJp dE5vdDogewotICAgICAgICAgbGx2bTo6VmFsdWUgKmFyZ1ZhbCA9IGV4cHItPkdldFZhbHVlKGN0 eCk7Ci0tICAgICAgICByZXR1cm4gY3R4LT5Ob3RPcGVyYXRvcihhcmdWYWwsIExMVk1HZXROYW1l KGFyZ1ZhbCwgIl9iaXRub3QiKSk7Ci0rICAgICAgICByZXR1cm4gY3R4LT5Ob3RPcGVyYXRvcihh cmdWYWwsIGxsdm06OlR3aW5lKGFyZ1ZhbC0+Z2V0TmFtZSgpKSArICJfYml0bm90Iik7Ci0gICAg IH0KLSAgICAgZGVmYXVsdDoKLSAgICAgICAgIEZBVEFMKCJsb2dpYyBlcnJvciIpOwotQEAgLTE1 MTgsNyArMTUxOCw4IEBAIHN0YXRpYyBsbHZtOjpWYWx1ZSAqbEVtaXRCaW5hcnlBcml0aChCaW5h cnlFeHByOjpPcCBvcCwgbGx2bTo6VmFsdWUgKnZhbHVlMCwgbGx2Ci0gICAgICAgICAgICAgcmV0 dXJuIE5VTEw7Ci0gICAgICAgICB9Ci0gCi0tICAgICAgICByZXR1cm4gY3R4LT5CaW5hcnlPcGVy YXRvcihpbnN0LCB2YWx1ZTAsIHZhbHVlMSwgTExWTUdldE5hbWUob3BOYW1lLCB2YWx1ZTAsIHZh bHVlMSkpOwotKyAgICAgICAgcmV0dXJuIGN0eC0+QmluYXJ5T3BlcmF0b3IoaW5zdCwgdmFsdWUw LCB2YWx1ZTEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChsbHZtOjpU d2luZShvcE5hbWUpICsgIl8iKSArIHZhbHVlMC0+Z2V0TmFtZSgpKSArICJfIikgKyB2YWx1ZTEt PmdldE5hbWUoKSk7Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMTU2Myw3ICsxNTY0LDcgQEAgc3RhdGlj IGxsdm06OlZhbHVlICpsRW1pdEJpbmFyeUNtcChCaW5hcnlFeHByOjpPcCBvcCwgbGx2bTo6VmFs dWUgKmUwVmFsLCBsbHZtOjoKLSAgICAgfQotIAotICAgICBsbHZtOjpWYWx1ZSAqY21wID0gY3R4 LT5DbXBJbnN0KGlzRmxvYXRPcCA/IGxsdm06Okluc3RydWN0aW9uOjpGQ21wIDogbGx2bTo6SW5z dHJ1Y3Rpb246OklDbXAsIHByZWQsIGUwVmFsLCBlMVZhbCwKLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMTFZNR2V0TmFtZShvcE5hbWUsIGUwVmFsLCBlMVZhbCkpOwotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKGxsdm06OlR3aW5lKG9wTmFtZSkg KyAiXyIpICsgZTBWYWwtPmdldE5hbWUoKSkgKyAiXyIpICsgZTFWYWwtPmdldE5hbWUoKSk7Ci0g ICAgIC8vIFRoaXMgaXMgYSBsaXR0bGUgdWdseTogQ21wSW5zdCByZXR1cm5zIGkxIHZhbHVlcywg YnV0IHdlIHVzZSB2ZWN0b3JzCi0gICAgIC8vIG9mIGkzMnMgZm9yIHZhcnlpbmcgYm9vbCB2YWx1 ZXM7IHR5cGUgY29udmVydCB0aGUgcmVzdWx0IGhlcmUgaWYKLSAgICAgLy8gbmVlZGVkLgotQEAg LTQxNzcsNyArNDE3OCw3IEBAIHN0YXRpYyBsbHZtOjpWYWx1ZSAqbENvbnZlcnRUb1NsaWNlUG9p bnRlcihGdW5jdGlvbkVtaXRDb250ZXh0ICpjdHgsIGxsdm06OlZhbHVlCi0gICAgIC8vIG9mZnNl dHMKLSAgICAgbGx2bTo6VmFsdWUgKnJlc3VsdCA9IGxsdm06OkNvbnN0YW50OjpnZXROdWxsVmFs dWUoc2xpY2VTdHJ1Y3RUeXBlKTsKLSAgICAgLy8gQW5kIHJlcGxhY2UgdGhlIHBvaW50ZXIgaW4g dGhlIHN0cnVjdCB3aXRoIHRoZSBnaXZlbiBwb2ludGVyCi0tICAgIHJldHVybiBjdHgtPkluc2Vy dEluc3QocmVzdWx0LCBwdHIsIDAsIExMVk1HZXROYW1lKHB0ciwgIl9zbGljZSIpKTsKLSsgICAg cmV0dXJuIGN0eC0+SW5zZXJ0SW5zdChyZXN1bHQsIHB0ciwgMCwgbGx2bTo6VHdpbmUocHRyLT5n ZXROYW1lKCkpICsgIl9zbGljZSIpOwotIH0KLSAKLSAvKiogSWYgdGhlIGdpdmVuIGFycmF5IGlu ZGV4IGlzIGEgY29tcGlsZSB0aW1lIGNvbnN0YW50LCBjaGVjayB0byBzZWUgaWYgaXQKLUBAIC00 MjU4LDggKzQyNTksOCBAQCBsbHZtOjpWYWx1ZSAqSW5kZXhFeHByOjpHZXRMVmFsdWUoRnVuY3Rp b25FbWl0Q29udGV4dCAqY3R4KSBjb25zdCB7Ci0gICAgICAgICAvLyBDb252ZXJ0IHRvIGEgc2xp Y2UgcG9pbnRlciBpZiB3ZSdyZSBpbmRleGluZyBpbnRvIFNPQSBkYXRhCi0gICAgICAgICBiYXNl UHRyVmFsdWUgPSBsQ29udmVydFB0clRvU2xpY2VJZk5lZWRlZChjdHgsIGJhc2VQdHJWYWx1ZSwg JmJhc2VFeHByVHlwZSk7Ci0gCi0tICAgICAgICBsbHZtOjpWYWx1ZSAqcHRyID0KLS0gICAgICAg ICAgICBjdHgtPkdldEVsZW1lbnRQdHJJbnN0KGJhc2VQdHJWYWx1ZSwgaW5kZXhWYWx1ZSwgYmFz ZUV4cHJUeXBlLCBMTFZNR2V0TmFtZShiYXNlUHRyVmFsdWUsICJfb2Zmc2V0IikpOwotKyAgICAg ICAgbGx2bTo6VmFsdWUgKnB0ciA9IGN0eC0+R2V0RWxlbWVudFB0ckluc3QoYmFzZVB0clZhbHVl LCBpbmRleFZhbHVlLCBiYXNlRXhwclR5cGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpUd2luZShiYXNlUHRyVmFsdWUtPmdldE5hbWUo KSkgKyAiX29mZnNldCIpOwotICAgICAgICAgcmV0dXJuIGxBZGRWYXJ5aW5nT2Zmc2V0c0lmTmVl ZGVkKGN0eCwgcHRyLCBHZXRMVmFsdWVUeXBlKCkpOwotICAgICB9Ci0gCi1AQCAtNDI5MCw4ICs0 MjkxLDggQEAgbGx2bTo6VmFsdWUgKkluZGV4RXhwcjo6R2V0TFZhbHVlKEZ1bmN0aW9uRW1pdENv bnRleHQgKmN0eCkgY29uc3QgewotICAgICBjdHgtPlNldERlYnVnUG9zKHBvcyk7Ci0gCi0gICAg IC8vIEFuZCBkbyB0aGUgYWN0dWFsIGluZGV4aW5nIGNhbGN1bGF0aW9uLi4KLS0gICAgbGx2bTo6 VmFsdWUgKnB0ciA9Ci0tICAgICAgICBjdHgtPkdldEVsZW1lbnRQdHJJbnN0KGJhc2VQdHIsIExM Vk1JbnQzMigwKSwgaW5kZXhWYWx1ZSwgYmFzZVB0clR5cGUsIExMVk1HZXROYW1lKGJhc2VQdHIs ICJfb2Zmc2V0IikpOwotKyAgICBsbHZtOjpWYWx1ZSAqcHRyID0gY3R4LT5HZXRFbGVtZW50UHRy SW5zdChiYXNlUHRyLCBMTFZNSW50MzIoMCksIGluZGV4VmFsdWUsIGJhc2VQdHJUeXBlLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpUd2luZShi YXNlUHRyLT5nZXROYW1lKCkpICsgIl9vZmZzZXQiKTsKLSAgICAgcmV0dXJuIGxBZGRWYXJ5aW5n T2Zmc2V0c0lmTmVlZGVkKGN0eCwgcHRyLCBHZXRMVmFsdWVUeXBlKCkpOwotIH0KLSAKLUBAIC00 Nzg4LDE1ICs0Nzg5LDE0IEBAIGxsdm06OlZhbHVlICpWZWN0b3JNZW1iZXJFeHByOjpHZXRWYWx1 ZShGdW5jdGlvbkVtaXRDb250ZXh0ICpjdHgpIGNvbnN0IHsKLSAgICAgICAgIGZvciAoc2l6ZV90 IGkgPSAwOyBpIDwgaWRlbnRpZmllci5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgIGNoYXIg aWRTdHJbMl0gPSB7aWRlbnRpZmllcltpXSwgJ1wwJ307Ci0gICAgICAgICAgICAgbGx2bTo6VmFs dWUgKmVsZW1lbnRQdHIgPQotLSAgICAgICAgICAgICAgICBjdHgtPkFkZEVsZW1lbnRPZmZzZXQo YmFzZVB0ciwgaW5kaWNlc1tpXSwgYmFzZVB0clR5cGUsIExMVk1HZXROYW1lKGJhc2VQdHIsIGlk U3RyKSk7Ci0rICAgICAgICAgICAgICAgIGN0eC0+QWRkRWxlbWVudE9mZnNldChiYXNlUHRyLCBp bmRpY2VzW2ldLCBiYXNlUHRyVHlwZSwgbGx2bTo6VHdpbmUoYmFzZVB0ci0+Z2V0TmFtZSgpKSAr IGlkU3RyKTsKLSAgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqZWxlbWVudFZhbHVlID0gY3R4LT5M b2FkSW5zdChlbGVtZW50UHRyLCBlbGVtZW50TWFzaywgZWxlbWVudFB0clR5cGUpOwotIAotLSAg ICAgICAgICAgIGNvbnN0IGNoYXIgKnJlc3VsdE5hbWUgPSBMTFZNR2V0TmFtZShyZXN1bHRQdHIs IGlkU3RyKTsKLS0gICAgICAgICAgICBsbHZtOjpWYWx1ZSAqcHRtcCA9IGN0eC0+QWRkRWxlbWVu dE9mZnNldChyZXN1bHRQdHIsIGksIE5VTEwsIHJlc3VsdE5hbWUpOwotKyAgICAgICAgICAgIGxs dm06OlZhbHVlICpwdG1wID0gY3R4LT5BZGRFbGVtZW50T2Zmc2V0KHJlc3VsdFB0ciwgaSwgTlVM TCwgbGx2bTo6VHdpbmUocmVzdWx0UHRyLT5nZXROYW1lKCkpICsgaWRTdHIpOwotICAgICAgICAg ICAgIGN0eC0+U3RvcmVJbnN0KGVsZW1lbnRWYWx1ZSwgcHRtcCwgZWxlbWVudFB0clR5cGUsIGV4 cHItPkdldFR5cGUoKS0+SXNVbmlmb3JtVHlwZSgpKTsKLSAgICAgICAgIH0KLSAKLS0gICAgICAg IHJldHVybiBjdHgtPkxvYWRJbnN0KHJlc3VsdFB0ciwgbWVtYmVyVHlwZSwgTExWTUdldE5hbWUo YmFzZVB0ciwgIl9zd2l6emxlIikpOwotKyAgICAgICAgcmV0dXJuIGN0eC0+TG9hZEluc3QocmVz dWx0UHRyLCBtZW1iZXJUeXBlLCBsbHZtOjpUd2luZShiYXNlUHRyLT5nZXROYW1lKCkpICsgIl9z d2l6emxlIik7Ci0gICAgIH0KLSB9Ci0gCi1AQCAtNDkzMiw3ICs0OTMyLDcgQEAgbGx2bTo6VmFs dWUgKk1lbWJlckV4cHI6OkdldFZhbHVlKEZ1bmN0aW9uRW1pdENvbnRleHQgKmN0eCkgY29uc3Qg ewotIAotICAgICBjdHgtPlNldERlYnVnUG9zKHBvcyk7Ci0gICAgIHN0ZDo6c3RyaW5nIHN1ZmZp eCA9IHN0ZDo6c3RyaW5nKCJfIikgKyBpZGVudGlmaWVyOwotLSAgICByZXR1cm4gY3R4LT5Mb2Fk SW5zdChsdmFsdWUsIG1hc2ssIGx2YWx1ZVR5cGUsIExMVk1HZXROYW1lKGx2YWx1ZSwgc3VmZml4 LmNfc3RyKCkpKTsKLSsgICAgcmV0dXJuIGN0eC0+TG9hZEluc3QobHZhbHVlLCBtYXNrLCBsdmFs dWVUeXBlLCBsbHZtOjpUd2luZShsdmFsdWUtPmdldE5hbWUoKSkgKyBzdWZmaXgpOwotIH0KLSAK LSBjb25zdCBUeXBlICpNZW1iZXJFeHByOjpHZXRUeXBlKCkgY29uc3QgeyByZXR1cm4gTlVMTDsg fQotQEAgLTY1MDIsNyArNjUwMiw3IEBAIHN0YXRpYyBsbHZtOjpWYWx1ZSAqbFR5cGVDb252QXRv bWljKEZ1bmN0aW9uRW1pdENvbnRleHQgKmN0eCwgbGx2bTo6VmFsdWUgKmV4cHJWCi0gICAgICAg ICAgICAgICAgIC8vIGRvZXMgZm9yIGV2ZXJ5b25lIGVsc2UuLi4KLSAgICAgICAgICAgICAgICAg QXNzZXJ0KGNhc3QpOwotICAgICAgICAgICAgICAgICBjYXN0ID0gY3R4LT5Td2l0Y2hCb29sU2l6 ZShjYXN0LCBMTFZNVHlwZXM6OkJvb2xWZWN0b3JUeXBlLT5nZXRFbGVtZW50VHlwZSgpLAotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZNR2V0TmFtZShjYXN0 LCAidG9faV9ib29sIikpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsbHZtOjpUd2luZShjYXN0LT5nZXROYW1lKCkpICsgInRvX2lfYm9vbCIpOwotICAgICAg ICAgICAgIH0KLSAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgLy8gZnJvbVR5cGUtPklz VmFyeWluZ1R5cGUoKSkKLUBAIC04MjQ2LDcgKzgyNDYsNyBAQCBsbHZtOjpWYWx1ZSAqTmV3RXhw cjo6R2V0VmFsdWUoRnVuY3Rpb25FbWl0Q29udGV4dCAqY3R4KSBjb25zdCB7Ci0gICAgICAgICAv LyBwb2ludGVyIG9mIHRoZSByZXR1cm4gdHlwZSBhbmQgdG8gcnVuIHRoZSBjb2RlIGZvciBpbml0 aWFsaXplcnMsCi0gICAgICAgICAvLyBpZiBwcmVzZW50LgotICAgICAgICAgbGx2bTo6VHlwZSAq cHRyVHlwZSA9IHJldFR5cGUtPkxMVk1UeXBlKGctPmN0eCk7Ci0tICAgICAgICBwdHJWYWx1ZSA9 IGN0eC0+Qml0Q2FzdEluc3QocHRyVmFsdWUsIHB0clR5cGUsIExMVk1HZXROYW1lKHB0clZhbHVl LCAiX2Nhc3RfcHRyIikpOwotKyAgICAgICAgcHRyVmFsdWUgPSBjdHgtPkJpdENhc3RJbnN0KHB0 clZhbHVlLCBwdHJUeXBlLCBsbHZtOjpUd2luZShwdHJWYWx1ZS0+Z2V0TmFtZSgpKSArICJfY2Fz dF9wdHIiKTsKLSAKLSAgICAgICAgIGlmIChpbml0RXhwciAhPSBOVUxMKQotICAgICAgICAgICAg IEluaXRTeW1ib2wocHRyVmFsdWUsIGFsbG9jVHlwZSwgaW5pdEV4cHIsIGN0eCwgcG9zKTsKLWRp ZmYgLS1naXQgYS9zcmMvbGx2bXV0aWwuY3BwIGIvc3JjL2xsdm11dGlsLmNwcAotaW5kZXggOTcw MTc1ZGJmLi5kMGJlY2I5ZjUgMTAwNjQ0Ci0tLS0gYS9zcmMvbGx2bXV0aWwuY3BwCi0rKysgYi9z cmMvbGx2bXV0aWwuY3BwCi1AQCAtMTYwNSwyMyArMTYwNSw2IEBAIGxsdm06OlZhbHVlICpMTFZN U2h1ZmZsZVZlY3RvcnMobGx2bTo6VmFsdWUgKnYxLCBsbHZtOjpWYWx1ZSAqdjIsIGludDMyX3Qg c2h1ZltdCi0gICAgIHJldHVybiBuZXcgbGx2bTo6U2h1ZmZsZVZlY3Rvckluc3QodjEsIHYyLCB2 ZWMsICJzaHVmZmxlIiwgaW5zZXJ0QmVmb3JlKTsKLSB9Ci0gCi0tY29uc3QgY2hhciAqTExWTUdl dE5hbWUobGx2bTo6VmFsdWUgKnYsIGNvbnN0IGNoYXIgKnMpIHsKLS0gICAgaWYgKHYgPT0gTlVM TCkKLS0gICAgICAgIHJldHVybiBzOwotLSAgICBzdGQ6OnN0cmluZyByZXQgPSBzdGQ6OnN0cmlu Zyh2LT5nZXROYW1lKCkpOwotLSAgICByZXQgKz0gczsKLS0gICAgcmV0dXJuIHN0cmR1cChyZXQu Y19zdHIoKSk7Ci0tfQotLQotLWNvbnN0IGNoYXIgKkxMVk1HZXROYW1lKGNvbnN0IGNoYXIgKm9w LCBsbHZtOjpWYWx1ZSAqdjEsIGxsdm06OlZhbHVlICp2MikgewotLSAgICBzdGQ6OnN0cmluZyBy ID0gb3A7Ci0tICAgIHIgKz0gIl8iOwotLSAgICByICs9IHYxLT5nZXROYW1lKCkuc3RyKCk7Ci0t ICAgIHIgKz0gIl8iOwotLSAgICByICs9IHYyLT5nZXROYW1lKCkuc3RyKCk7Ci0tICAgIHJldHVy biBzdHJkdXAoci5jX3N0cigpKTsKLS19Ci0tCi0gI2lmZGVmIElTUENfR0VOWF9FTkFCTEVECi0g Ym9vbCBsSXNTVk1Mb2FkKGxsdm06Okluc3RydWN0aW9uICppbnN0KSB7Ci0gICAgIEFzc2VydChp bnN0KTsKLWRpZmYgLS1naXQgYS9zcmMvbGx2bXV0aWwuaCBiL3NyYy9sbHZtdXRpbC5oCi1pbmRl eCA0MmNjZTRkODMuLjA3ZDA4OWJiNCAxMDA2NDQKLS0tLSBhL3NyYy9sbHZtdXRpbC5oCi0rKysg Yi9zcmMvbGx2bXV0aWwuaAotQEAgLTMyOCwxMSArMzI4LDYgQEAgZXh0ZXJuIGxsdm06OlZhbHVl ICpMTFZNQ29uY2F0VmVjdG9ycyhsbHZtOjpWYWx1ZSAqdjEsIGxsdm06OlZhbHVlICp2MiwgbGx2 bTo6SW4KLSBleHRlcm4gbGx2bTo6VmFsdWUgKkxMVk1TaHVmZmxlVmVjdG9ycyhsbHZtOjpWYWx1 ZSAqdjEsIGxsdm06OlZhbHVlICp2MiwgaW50MzJfdCBzaHVmW10sIGludCBzaHVmU2l6ZSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAq aW5zZXJ0QmVmb3JlKTsKLSAKLS0vKiogVXRpbGl0eSByb3V0aW5lcyB0byBjb25jYXQgc3RyaW5n cyB3aXRoIHRoZSBuYW1lcyBvZiBleGlzdGluZyB2YWx1ZXMgdG8KLS0gICAgY3JlYXRlIG1lYW5p bmdmdWwgbmV3IG5hbWVzIGZvciBpbnN0cnVjdGlvbiB2YWx1ZXMuCi0tKi8KLS1leHRlcm4gY29u c3QgY2hhciAqTExWTUdldE5hbWUobGx2bTo6VmFsdWUgKnYsIGNvbnN0IGNoYXIgKik7Ci0tZXh0 ZXJuIGNvbnN0IGNoYXIgKkxMVk1HZXROYW1lKGNvbnN0IGNoYXIgKm9wLCBsbHZtOjpWYWx1ZSAq djEsIGxsdm06OlZhbHVlICp2Mik7Ci0gI2lmZGVmIElTUENfR0VOWF9FTkFCTEVECi0gZW51bSBB ZGRyZXNzU3BhY2UgeyBMb2NhbCwgR2xvYmFsLCBFeHRlcm5hbCB9OwotIAotZGlmZiAtLWdpdCBh L3NyYy9vcHQuY3BwIGIvc3JjL29wdC5jcHAKLWluZGV4IDViMWFjN2I2My4uOWQ2Y2FlMDU4IDEw MDY0NAotLS0tIGEvc3JjL29wdC5jcHAKLSsrKyBiL3NyYy9vcHQuY3BwCi1AQCAtMjU3LDcgKzI1 Nyw3IEBAIHN0YXRpYyBib29sIGxHZXRTb3VyY2VQb3NGcm9tTWV0YWRhdGEoY29uc3QgbGx2bTo6 SW5zdHJ1Y3Rpb24gKmluc3QsIFNvdXJjZVBvcyAqCi0gICAgIHJldHVybiB0cnVlOwotIH0KLSAK LS1zdGF0aWMgbGx2bTo6SW5zdHJ1Y3Rpb24gKmxDYWxsSW5zdChsbHZtOjpGdW5jdGlvbiAqZnVu YywgbGx2bTo6VmFsdWUgKmFyZzAsIGxsdm06OlZhbHVlICphcmcxLCBjb25zdCBjaGFyICpuYW1l LAotK3N0YXRpYyBsbHZtOjpJbnN0cnVjdGlvbiAqbENhbGxJbnN0KGxsdm06OkZ1bmN0aW9uICpm dW5jLCBsbHZtOjpWYWx1ZSAqYXJnMCwgbGx2bTo6VmFsdWUgKmFyZzEsIGNvbnN0IGxsdm06OlR3 aW5lICZuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06Oklu c3RydWN0aW9uICppbnNlcnRCZWZvcmUgPSBOVUxMKSB7Ci0gICAgIGxsdm06OlZhbHVlICphcmdz WzJdID0ge2FyZzAsIGFyZzF9OwotICAgICBsbHZtOjpBcnJheVJlZjxsbHZtOjpWYWx1ZSAqPiBu ZXdBcmdBcnJheSgmYXJnc1swXSwgJmFyZ3NbMl0pOwotQEAgLTI2NSwyMSArMjY1LDIyIEBAIHN0 YXRpYyBsbHZtOjpJbnN0cnVjdGlvbiAqbENhbGxJbnN0KGxsdm06OkZ1bmN0aW9uICpmdW5jLCBs bHZtOjpWYWx1ZSAqYXJnMCwgbGx2Ci0gfQotIAotIHN0YXRpYyBsbHZtOjpJbnN0cnVjdGlvbiAq bENhbGxJbnN0KGxsdm06OkZ1bmN0aW9uICpmdW5jLCBsbHZtOjpWYWx1ZSAqYXJnMCwgbGx2bTo6 VmFsdWUgKmFyZzEsIGxsdm06OlZhbHVlICphcmcyLAotLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGxsdm06Okluc3RydWN0aW9uICppbnNlcnRC ZWZvcmUgPSBOVUxMKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgbGx2bTo6VHdpbmUgJm5hbWUsIGxsdm06Okluc3RydWN0aW9uICppbnNlcnRCZWZvcmUgPSBO VUxMKSB7Ci0gICAgIGxsdm06OlZhbHVlICphcmdzWzNdID0ge2FyZzAsIGFyZzEsIGFyZzJ9Owot ICAgICBsbHZtOjpBcnJheVJlZjxsbHZtOjpWYWx1ZSAqPiBuZXdBcmdBcnJheSgmYXJnc1swXSwg JmFyZ3NbM10pOwotICAgICByZXR1cm4gbGx2bTo6Q2FsbEluc3Q6OkNyZWF0ZShmdW5jLCBuZXdB cmdBcnJheSwgbmFtZSwgaW5zZXJ0QmVmb3JlKTsKLSB9Ci0gCi0gc3RhdGljIGxsdm06Okluc3Ry dWN0aW9uICpsQ2FsbEluc3QobGx2bTo6RnVuY3Rpb24gKmZ1bmMsIGxsdm06OlZhbHVlICphcmcw LCBsbHZtOjpWYWx1ZSAqYXJnMSwgbGx2bTo6VmFsdWUgKmFyZzIsCi0tICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbGx2bTo6VmFsdWUgKmFyZzMsIGNvbnN0IGNoYXIgKm5hbWUs IGxsdm06Okluc3RydWN0aW9uICppbnNlcnRCZWZvcmUgPSBOVUxMKSB7Ci0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6VmFsdWUgKmFyZzMsIGNvbnN0IGxsdm06OlR3 aW5lICZuYW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06Oklu c3RydWN0aW9uICppbnNlcnRCZWZvcmUgPSBOVUxMKSB7Ci0gICAgIGxsdm06OlZhbHVlICphcmdz WzRdID0ge2FyZzAsIGFyZzEsIGFyZzIsIGFyZzN9OwotICAgICBsbHZtOjpBcnJheVJlZjxsbHZt OjpWYWx1ZSAqPiBuZXdBcmdBcnJheSgmYXJnc1swXSwgJmFyZ3NbNF0pOwotICAgICByZXR1cm4g bGx2bTo6Q2FsbEluc3Q6OkNyZWF0ZShmdW5jLCBuZXdBcmdBcnJheSwgbmFtZSwgaW5zZXJ0QmVm b3JlKTsKLSB9Ci0gCi0gc3RhdGljIGxsdm06Okluc3RydWN0aW9uICpsQ2FsbEluc3QobGx2bTo6 RnVuY3Rpb24gKmZ1bmMsIGxsdm06OlZhbHVlICphcmcwLCBsbHZtOjpWYWx1ZSAqYXJnMSwgbGx2 bTo6VmFsdWUgKmFyZzIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2 bTo6VmFsdWUgKmFyZzMsIGxsdm06OlZhbHVlICphcmc0LCBjb25zdCBjaGFyICpuYW1lLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OlZhbHVlICphcmczLCBsbHZt OjpWYWx1ZSAqYXJnNCwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc2VydEJlZm9yZSA9IE5V TEwpIHsKLSAgICAgbGx2bTo6VmFsdWUgKmFyZ3NbNV0gPSB7YXJnMCwgYXJnMSwgYXJnMiwgYXJn MywgYXJnNH07Ci0gICAgIGxsdm06OkFycmF5UmVmPGxsdm06OlZhbHVlICo+IG5ld0FyZ0FycmF5 KCZhcmdzWzBdLCAmYXJnc1s1XSk7Ci1AQCAtMjg3LDcgKzI4OCw3IEBAIHN0YXRpYyBsbHZtOjpJ bnN0cnVjdGlvbiAqbENhbGxJbnN0KGxsdm06OkZ1bmN0aW9uICpmdW5jLCBsbHZtOjpWYWx1ZSAq YXJnMCwgbGx2Ci0gfQotIAotIHN0YXRpYyBsbHZtOjpJbnN0cnVjdGlvbiAqbENhbGxJbnN0KGxs dm06OkZ1bmN0aW9uICpmdW5jLCBsbHZtOjpWYWx1ZSAqYXJnMCwgbGx2bTo6VmFsdWUgKmFyZzEs IGxsdm06OlZhbHVlICphcmcyLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGxsdm06OlZhbHVlICphcmczLCBsbHZtOjpWYWx1ZSAqYXJnNCwgbGx2bTo6VmFsdWUgKmFyZzUs IGNvbnN0IGNoYXIgKm5hbWUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bGx2bTo6VmFsdWUgKmFyZzMsIGxsdm06OlZhbHVlICphcmc0LCBsbHZtOjpWYWx1ZSAqYXJnNSwg Y29uc3QgbGx2bTo6VHdpbmUgJm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc2VydEJlZm9yZSA9IE5VTEwpIHsKLSAgICAgbGx2 bTo6VmFsdWUgKmFyZ3NbNl0gPSB7YXJnMCwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNX07 Ci0gICAgIGxsdm06OkFycmF5UmVmPGxsdm06OlZhbHVlICo+IG5ld0FyZ0FycmF5KCZhcmdzWzBd LCAmYXJnc1s2XSk7Ci1AQCAtOTkxLDIzICs5OTIsMjQgQEAgYm9vbCBJbnRyaW5zaWNzT3B0Ojpy dW5PbkJhc2ljQmxvY2sobGx2bTo6QmFzaWNCbG9jayAmYmIpIHsKLSAgICAgICAgICAgICAgICAg bGx2bTo6VHlwZSAqcmV0dXJuVHlwZSA9IGNhbGxJbnN0LT5nZXRUeXBlKCk7Ci0gICAgICAgICAg ICAgICAgIEFzc2VydChsbHZtOjppc2E8bGx2bTo6VmVjdG9yVHlwZT4ocmV0dXJuVHlwZSkpOwot ICAgICAgICAgICAgICAgICAvLyBjYXN0IHRoZSBpOCAqIHRvIHRoZSBhcHByb3ByaWF0ZSB0eXBl Ci0tICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBMTFZNR2V0TmFtZShjYWxsSW5z dC0+Z2V0QXJnT3BlcmFuZCgwKSwgIl9jYXN0Iik7Ci0tICAgICAgICAgICAgICAgIGxsdm06OlZh bHVlICpjYXN0UHRyID0gbmV3IGxsdm06OkJpdENhc3RJbnN0KGNhbGxJbnN0LT5nZXRBcmdPcGVy YW5kKDApLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBsbHZtOjpQb2ludGVyVHlwZTo6Z2V0KHJldHVyblR5cGUsIDApLCBuYW1l LCBjYWxsSW5zdCk7Ci0rICAgICAgICAgICAgICAgIGxsdm06OlZhbHVlICpjYXN0UHRyID0KLSsg ICAgICAgICAgICAgICAgICAgIG5ldyBsbHZtOjpCaXRDYXN0SW5zdChjYWxsSW5zdC0+Z2V0QXJn T3BlcmFuZCgwKSwgbGx2bTo6UG9pbnRlclR5cGU6OmdldChyZXR1cm5UeXBlLCAwKSwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpUd2luZShjYWxsSW5z dC0+Z2V0QXJnT3BlcmFuZCgwKS0+Z2V0TmFtZSgpKSArICJfY2FzdCIsIGNhbGxJbnN0KTsKLSAg ICAgICAgICAgICAgICAgbENvcHlNZXRhZGF0YShjYXN0UHRyLCBjYWxsSW5zdCk7Ci0gICAgICAg ICAgICAgICAgIGludCBhbGlnbjsKLSAgICAgICAgICAgICAgICAgaWYgKGctPm9wdC5mb3JjZUFs aWduZWRNZW1vcnkpCi0gICAgICAgICAgICAgICAgICAgICBhbGlnbiA9IGctPnRhcmdldC0+Z2V0 TmF0aXZlVmVjdG9yQWxpZ25tZW50KCk7Ci0gICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg ICAgICAgICAgICAgIGFsaWduID0gY2FsbEluc3QtPmdldENhbGxlZEZ1bmN0aW9uKCkgPT0gYXZ4 TWFza2VkTG9hZDMyID8gNCA6IDg7Ci0tICAgICAgICAgICAgICAgIG5hbWUgPSBMTFZNR2V0TmFt ZShjYWxsSW5zdC0+Z2V0QXJnT3BlcmFuZCgwKSwgIl9sb2FkIik7Ci0gI2lmIElTUENfTExWTV9W RVJTSU9OID09IElTUENfTExWTV8xMF8wCi0tICAgICAgICAgICAgICAgIGxsdm06Okluc3RydWN0 aW9uICpsb2FkSW5zdCA9IG5ldyBsbHZtOjpMb2FkSW5zdChjYXN0UHRyLCBuYW1lLCBmYWxzZSAv KiBub3Qgdm9sYXRpbGUgKi8sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpNYXliZUFsaWduKGFsaWduKSwgKGxs dm06Okluc3RydWN0aW9uICopTlVMTCk7Ci0rICAgICAgICAgICAgICAgIGxsdm06Okluc3RydWN0 aW9uICpsb2FkSW5zdCA9Ci0rICAgICAgICAgICAgICAgICAgICBuZXcgbGx2bTo6TG9hZEluc3Qo Y2FzdFB0ciwgbGx2bTo6VHdpbmUoY2FsbEluc3QtPmdldEFyZ09wZXJhbmQoMCktPmdldE5hbWUo KSkgKyAiX2xvYWQiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZh bHNlIC8qIG5vdCB2b2xhdGlsZSAqLywgbGx2bTo6TWF5YmVBbGlnbihhbGlnbiksIChsbHZtOjpJ bnN0cnVjdGlvbiAqKU5VTEwpOwotICNlbHNlCi0gICAgICAgICAgICAgICAgIGxsdm06Okluc3Ry dWN0aW9uICpsb2FkSW5zdCA9IG5ldyBsbHZtOjpMb2FkSW5zdCgKLS0gICAgICAgICAgICAgICAg ICAgIGxsdm06OmR5bl9jYXN0PGxsdm06OlBvaW50ZXJUeXBlPihjYXN0UHRyLT5nZXRUeXBlKCkp LT5nZXRQb2ludGVyRWxlbWVudFR5cGUoKSwgY2FzdFB0ciwgbmFtZSwKLS0gICAgICAgICAgICAg ICAgICAgIGZhbHNlIC8qIG5vdCB2b2xhdGlsZSAqLywgbGx2bTo6TWF5YmVBbGlnbihhbGlnbiku dmFsdWVPck9uZSgpLCAobGx2bTo6SW5zdHJ1Y3Rpb24gKilOVUxMKTsKLSsgICAgICAgICAgICAg ICAgICAgIGxsdm06OmR5bl9jYXN0PGxsdm06OlBvaW50ZXJUeXBlPihjYXN0UHRyLT5nZXRUeXBl KCkpLT5nZXRQb2ludGVyRWxlbWVudFR5cGUoKSwgY2FzdFB0ciwKLSsgICAgICAgICAgICAgICAg ICAgIGxsdm06OlR3aW5lKGNhbGxJbnN0LT5nZXRBcmdPcGVyYW5kKDApLT5nZXROYW1lKCkpICsg Il9sb2FkIiwgZmFsc2UgLyogbm90IHZvbGF0aWxlICovLAotKyAgICAgICAgICAgICAgICAgICAg bGx2bTo6TWF5YmVBbGlnbihhbGlnbikudmFsdWVPck9uZSgpLCAobGx2bTo6SW5zdHJ1Y3Rpb24g KilOVUxMKTsKLSAjZW5kaWYKLSAgICAgICAgICAgICAgICAgbENvcHlNZXRhZGF0YShsb2FkSW5z dCwgY2FsbEluc3QpOwotICAgICAgICAgICAgICAgICBsbHZtOjpSZXBsYWNlSW5zdFdpdGhJbnN0 KGNhbGxJbnN0LCBsb2FkSW5zdCk7Ci1AQCAtMTAyOCw5ICsxMDMwLDkgQEAgYm9vbCBJbnRyaW5z aWNzT3B0OjpydW5PbkJhc2ljQmxvY2sobGx2bTo6QmFzaWNCbG9jayAmYmIpIHsKLSAgICAgICAg ICAgICAgICAgLy8gYWxsIGxhbmVzIHN0b3JpbmcsIHNvIHJlcGxhY2Ugd2l0aCBhIHJlZ3VsYXIg c3RvcmUKLSAgICAgICAgICAgICAgICAgbGx2bTo6VmFsdWUgKnJ2YWx1ZSA9IGNhbGxJbnN0LT5n ZXRBcmdPcGVyYW5kKDIpOwotICAgICAgICAgICAgICAgICBsbHZtOjpUeXBlICpzdG9yZVR5cGUg PSBydmFsdWUtPmdldFR5cGUoKTsKLS0gICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSA9 IExMVk1HZXROYW1lKGNhbGxJbnN0LT5nZXRBcmdPcGVyYW5kKDApLCAiX3B0cmNhc3QiKTsKLS0g ICAgICAgICAgICAgICAgbGx2bTo6VmFsdWUgKmNhc3RQdHIgPSBuZXcgbGx2bTo6Qml0Q2FzdElu c3QoY2FsbEluc3QtPmdldEFyZ09wZXJhbmQoMCksCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OlBvaW50ZXJUeXBlOjpn ZXQoc3RvcmVUeXBlLCAwKSwgbmFtZSwgY2FsbEluc3QpOwotKyAgICAgICAgICAgICAgICBsbHZt OjpWYWx1ZSAqY2FzdFB0ciA9Ci0rICAgICAgICAgICAgICAgICAgICBuZXcgbGx2bTo6Qml0Q2Fz dEluc3QoY2FsbEluc3QtPmdldEFyZ09wZXJhbmQoMCksIGxsdm06OlBvaW50ZXJUeXBlOjpnZXQo c3RvcmVUeXBlLCAwKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBsbHZtOjpUd2luZShjYWxsSW5zdC0+Z2V0QXJnT3BlcmFuZCgwKS0+Z2V0TmFtZSgpKSArICJf cHRyY2FzdCIsIGNhbGxJbnN0KTsKLSAgICAgICAgICAgICAgICAgbENvcHlNZXRhZGF0YShjYXN0 UHRyLCBjYWxsSW5zdCk7Ci0gCi0gICAgICAgICAgICAgICAgIGludCBhbGlnbjsKLUBAIC0xMzM5 LDggKzEzNDEsOCBAQCBzdGF0aWMgbGx2bTo6VmFsdWUgKmxHZXRCYXNlUG9pbnRlcihsbHZtOjpW YWx1ZSAqdiwgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc2VydEJlZgotICAgICAgICAgaWYgKHQgPT0g TlVMTCkgewotICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgfSBlbHNlIHsKLS0g ICAgICAgICAgICByZXR1cm4gbGx2bTo6Q2FzdEluc3Q6OkNyZWF0ZShjaS0+Z2V0T3Bjb2RlKCks IHQsIGNpLT5nZXRUeXBlKCktPmdldFNjYWxhclR5cGUoKSwgTExWTUdldE5hbWUodCwgIl9jYXN0 IiksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0QmVm b3JlKTsKLSsgICAgICAgICAgICByZXR1cm4gbGx2bTo6Q2FzdEluc3Q6OkNyZWF0ZShjaS0+Z2V0 T3Bjb2RlKCksIHQsIGNpLT5nZXRUeXBlKCktPmdldFNjYWxhclR5cGUoKSwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpUd2luZSh0LT5nZXROYW1lKCkp ICsgIl9jYXN0IiwgaW5zZXJ0QmVmb3JlKTsKLSAgICAgICAgIH0KLSAgICAgfQotIAotQEAgLTE1 ODMsMTMgKzE1ODUsMTMgQEAgc3RhdGljIHZvaWQgbEV4dHJhY3RDb25zdGFudE9mZnNldChsbHZt OjpWYWx1ZSAqdmVjLCBsbHZtOjpWYWx1ZSAqKmNvbnN0T2Zmc2V0LAotICAgICAgICAgaWYgKGNv ID09IE5VTEwpCi0gICAgICAgICAgICAgKmNvbnN0T2Zmc2V0ID0gTlVMTDsKLSAgICAgICAgIGVs c2UKLS0gICAgICAgICAgICAqY29uc3RPZmZzZXQgPQotLSAgICAgICAgICAgICAgICBsbHZtOjpD YXN0SW5zdDo6Q3JlYXRlKGNhc3QtPmdldE9wY29kZSgpLCBjbywgY2FzdC0+Z2V0VHlwZSgpLCBM TFZNR2V0TmFtZShjbywgIl9jYXN0IiksIGluc2VydEJlZm9yZSk7Ci0rICAgICAgICAgICAgKmNv bnN0T2Zmc2V0ID0gbGx2bTo6Q2FzdEluc3Q6OkNyZWF0ZShjYXN0LT5nZXRPcGNvZGUoKSwgY28s IGNhc3QtPmdldFR5cGUoKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGxsdm06OlR3aW5lKGNvLT5nZXROYW1lKCkpICsgIl9jYXN0IiwgaW5zZXJ0 QmVmb3JlKTsKLSAgICAgICAgIGlmICh2byA9PSBOVUxMKQotICAgICAgICAgICAgICp2YXJpYWJs ZU9mZnNldCA9IE5VTEw7Ci0gICAgICAgICBlbHNlCi0tICAgICAgICAgICAgKnZhcmlhYmxlT2Zm c2V0ID0KLS0gICAgICAgICAgICAgICAgbGx2bTo6Q2FzdEluc3Q6OkNyZWF0ZShjYXN0LT5nZXRP cGNvZGUoKSwgdm8sIGNhc3QtPmdldFR5cGUoKSwgTExWTUdldE5hbWUodm8sICJfY2FzdCIpLCBp bnNlcnRCZWZvcmUpOwotKyAgICAgICAgICAgICp2YXJpYWJsZU9mZnNldCA9IGxsdm06OkNhc3RJ bnN0OjpDcmVhdGUoY2FzdC0+Z2V0T3Bjb2RlKCksIHZvLCBjYXN0LT5nZXRUeXBlKCksCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpU d2luZSh2by0+Z2V0TmFtZSgpKSArICJfY2FzdCIsIGluc2VydEJlZm9yZSk7Ci0gICAgICAgICBy ZXR1cm47Ci0gICAgIH0KLSAKLUBAIC0xNjA4LDE2ICsxNjEwLDE4IEBAIHN0YXRpYyB2b2lkIGxF eHRyYWN0Q29uc3RhbnRPZmZzZXQobGx2bTo6VmFsdWUgKnZlYywgbGx2bTo6VmFsdWUgKipjb25z dE9mZnNldCwKLSAgICAgICAgICAgICBlbHNlIGlmIChjMSA9PSBOVUxMIHx8IGxsdm06OmlzYTxs bHZtOjpDb25zdGFudEFnZ3JlZ2F0ZVplcm8+KGMxKSkKLSAgICAgICAgICAgICAgICAgKmNvbnN0 T2Zmc2V0ID0gYzA7Ci0gICAgICAgICAgICAgZWxzZQotLSAgICAgICAgICAgICAgICAqY29uc3RP ZmZzZXQgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlKGxsdm06Okluc3RydWN0aW9uOjpB ZGQsIGMwLCBjMSwgTExWTUdldE5hbWUoImFkZCIsIGMwLCBjMSksCi0tICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0QmVmb3Jl KTsKLSsgICAgICAgICAgICAgICAgKmNvbnN0T2Zmc2V0ID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6 OkNyZWF0ZSgKLSsgICAgICAgICAgICAgICAgICAgIGxsdm06Okluc3RydWN0aW9uOjpBZGQsIGMw LCBjMSwgKChsbHZtOjpUd2luZSgiYWRkXyIpICsgYzAtPmdldE5hbWUoKSkgKyAiXyIpICsgYzEt PmdldE5hbWUoKSwKLSsgICAgICAgICAgICAgICAgICAgIGluc2VydEJlZm9yZSk7Ci0gCi0gICAg ICAgICAgICAgaWYgKHYwID09IE5VTEwgfHwgbGx2bTo6aXNhPGxsdm06OkNvbnN0YW50QWdncmVn YXRlWmVybz4odjApKQotICAgICAgICAgICAgICAgICAqdmFyaWFibGVPZmZzZXQgPSB2MTsKLSAg ICAgICAgICAgICBlbHNlIGlmICh2MSA9PSBOVUxMIHx8IGxsdm06OmlzYTxsbHZtOjpDb25zdGFu dEFnZ3JlZ2F0ZVplcm8+KHYxKSkKLSAgICAgICAgICAgICAgICAgKnZhcmlhYmxlT2Zmc2V0ID0g djA7Ci0gICAgICAgICAgICAgZWxzZQotLSAgICAgICAgICAgICAgICAqdmFyaWFibGVPZmZzZXQg PSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlKGxsdm06Okluc3RydWN0aW9uOjpBZGQsIHYw LCB2MSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMTFZNR2V0TmFtZSgiYWRkIiwgdjAsIHYxKSwgaW5zZXJ0QmVmb3JlKTsK LSsgICAgICAgICAgICAgICAgKnZhcmlhYmxlT2Zmc2V0ID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6 OkNyZWF0ZSgKLSsgICAgICAgICAgICAgICAgICAgIGxsdm06Okluc3RydWN0aW9uOjpBZGQsIHYw LCB2MSwgKChsbHZtOjpUd2luZSgiYWRkXyIpICsgdjAtPmdldE5hbWUoKSkgKyAiXyIpICsgdjEt PmdldE5hbWUoKSwKLSsgICAgICAgICAgICAgICAgICAgIGluc2VydEJlZm9yZSk7Ci0gICAgICAg ICAgICAgcmV0dXJuOwotICAgICAgICAgfSBlbHNlIGlmIChib3AtPmdldE9wY29kZSgpID09IGxs dm06Okluc3RydWN0aW9uOjpTaGwpIHsKLSAgICAgICAgICAgICBsRXh0cmFjdENvbnN0YW50T2Zm c2V0KG9wMCwgJmMwLCAmdjAsIGluc2VydEJlZm9yZSk7Ci1AQCAtMTYzMywxMCArMTYzNywxMiBA QCBzdGF0aWMgdm9pZCBsRXh0cmFjdENvbnN0YW50T2Zmc2V0KGxsdm06OlZhbHVlICp2ZWMsIGxs dm06OlZhbHVlICoqY29uc3RPZmZzZXQsCi0gICAgICAgICAgICAgICAgICpjb25zdE9mZnNldCA9 IHZlYzsKLSAgICAgICAgICAgICAgICAgKnZhcmlhYmxlT2Zmc2V0ID0gTlVMTDsKLSAgICAgICAg ICAgICB9IGVsc2UgewotLSAgICAgICAgICAgICAgICAqY29uc3RPZmZzZXQgPSBsbHZtOjpCaW5h cnlPcGVyYXRvcjo6Q3JlYXRlKGxsdm06Okluc3RydWN0aW9uOjpTaGwsIGMwLCBjMSwgTExWTUdl dE5hbWUoInNobCIsIGMwLCBjMSksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0QmVmb3JlKTsKLS0gICAgICAgICAgICAg ICAgKnZhcmlhYmxlT2Zmc2V0ID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZShsbHZtOjpJ bnN0cnVjdGlvbjo6U2hsLCB2MCwgYzEsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExWTUdldE5hbWUoInNobCIsIHYwLCBj MSksIGluc2VydEJlZm9yZSk7Ci0rICAgICAgICAgICAgICAgICpjb25zdE9mZnNldCA9IGxsdm06 OkJpbmFyeU9wZXJhdG9yOjpDcmVhdGUoCi0rICAgICAgICAgICAgICAgICAgICBsbHZtOjpJbnN0 cnVjdGlvbjo6U2hsLCBjMCwgYzEsICgobGx2bTo6VHdpbmUoInNobF8iKSArIGMwLT5nZXROYW1l KCkpICsgIl8iKSArIGMxLT5nZXROYW1lKCksCi0rICAgICAgICAgICAgICAgICAgICBpbnNlcnRC ZWZvcmUpOwotKyAgICAgICAgICAgICAgICAqdmFyaWFibGVPZmZzZXQgPSBsbHZtOjpCaW5hcnlP cGVyYXRvcjo6Q3JlYXRlKAotKyAgICAgICAgICAgICAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb246 OlNobCwgdjAsIGMxLCAoKGxsdm06OlR3aW5lKCJzaGxfIikgKyB2MC0+Z2V0TmFtZSgpKSArICJf IikgKyBjMS0+Z2V0TmFtZSgpLAotKyAgICAgICAgICAgICAgICAgICAgaW5zZXJ0QmVmb3JlKTsK LSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgfSBlbHNlIGlm IChib3AtPmdldE9wY29kZSgpID09IGxsdm06Okluc3RydWN0aW9uOjpNdWwpIHsKLUBAIC0xNjQ4 LDI1ICsxNjU0LDMwIEBAIHN0YXRpYyB2b2lkIGxFeHRyYWN0Q29uc3RhbnRPZmZzZXQobGx2bTo6 VmFsdWUgKnZlYywgbGx2bTo6VmFsdWUgKipjb25zdE9mZnNldCwKLSAgICAgICAgICAgICAvLyBO b3RlIHRoYXQgdGhlIGZpcnN0IHRlcm0gaXMgYSBjb25zdGFudCBhbmQgdGhlIGxhc3QgdGhyZWUg YXJlCi0gICAgICAgICAgICAgLy8gdmFyaWFibGUuCi0gICAgICAgICAgICAgaWYgKGMwICE9IE5V TEwgJiYgYzEgIT0gTlVMTCkKLS0gICAgICAgICAgICAgICAgKmNvbnN0T2Zmc2V0ID0gbGx2bTo6 QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZShsbHZtOjpJbnN0cnVjdGlvbjo6TXVsLCBjMCwgYzEsIExM Vk1HZXROYW1lKCJtdWwiLCBjMCwgYzEpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydEJlZm9yZSk7Ci0rICAgICAgICAg ICAgICAgICpjb25zdE9mZnNldCA9IGxsdm06OkJpbmFyeU9wZXJhdG9yOjpDcmVhdGUoCi0rICAg ICAgICAgICAgICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbjo6TXVsLCBjMCwgYzEsICgobGx2bTo6 VHdpbmUoIm11bF8iKSArIGMwLT5nZXROYW1lKCkpICsgIl8iKSArIGMxLT5nZXROYW1lKCksCi0r ICAgICAgICAgICAgICAgICAgICBpbnNlcnRCZWZvcmUpOwotICAgICAgICAgICAgIGVsc2UKLSAg ICAgICAgICAgICAgICAgKmNvbnN0T2Zmc2V0ID0gTlVMTDsKLSAKLSAgICAgICAgICAgICBsbHZt OjpWYWx1ZSAqdmEgPSBOVUxMLCAqdmIgPSBOVUxMLCAqdmMgPSBOVUxMOwotICAgICAgICAgICAg IGlmICh2MCAhPSBOVUxMICYmIGMxICE9IE5VTEwpCi0tICAgICAgICAgICAgICAgIHZhID0gbGx2 bTo6QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZShsbHZtOjpJbnN0cnVjdGlvbjo6TXVsLCB2MCwgYzEs IExMVk1HZXROYW1lKCJtdWwiLCB2MCwgYzEpLAotKyAgICAgICAgICAgICAgICB2YSA9IGxsdm06 OkJpbmFyeU9wZXJhdG9yOjpDcmVhdGUobGx2bTo6SW5zdHJ1Y3Rpb246Ok11bCwgdjAsIGMxLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsbHZt OjpUd2luZSgibXVsXyIpICsgdjAtPmdldE5hbWUoKSkgKyAiXyIpICsgYzEtPmdldE5hbWUoKSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2Vy dEJlZm9yZSk7Ci0gICAgICAgICAgICAgaWYgKGMwICE9IE5VTEwgJiYgdjEgIT0gTlVMTCkKLS0g ICAgICAgICAgICAgICAgdmIgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlKGxsdm06Oklu c3RydWN0aW9uOjpNdWwsIGMwLCB2MSwgTExWTUdldE5hbWUoIm11bCIsIGMwLCB2MSksCi0rICAg ICAgICAgICAgICAgIHZiID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZShsbHZtOjpJbnN0 cnVjdGlvbjo6TXVsLCBjMCwgdjEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoKGxsdm06OlR3aW5lKCJtdWxfIikgKyBjMC0+Z2V0TmFtZSgpKSAr ICJfIikgKyB2MS0+Z2V0TmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW5zZXJ0QmVmb3JlKTsKLSAgICAgICAgICAgICBpZiAodjAgIT0g TlVMTCAmJiB2MSAhPSBOVUxMKQotLSAgICAgICAgICAgICAgICB2YyA9IGxsdm06OkJpbmFyeU9w ZXJhdG9yOjpDcmVhdGUobGx2bTo6SW5zdHJ1Y3Rpb246Ok11bCwgdjAsIHYxLCBMTFZNR2V0TmFt ZSgibXVsIiwgdjAsIHYxKSwKLSsgICAgICAgICAgICAgICAgdmMgPSBsbHZtOjpCaW5hcnlPcGVy YXRvcjo6Q3JlYXRlKGxsdm06Okluc3RydWN0aW9uOjpNdWwsIHYwLCB2MSwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobGx2bTo6VHdpbmUoIm11 bF8iKSArIHYwLT5nZXROYW1lKCkpICsgIl8iKSArIHYxLT5nZXROYW1lKCksCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRCZWZvcmUpOwot IAotICAgICAgICAgICAgIGxsdm06OlZhbHVlICp2YWIgPSBOVUxMOwotICAgICAgICAgICAgIGlm ICh2YSAhPSBOVUxMICYmIHZiICE9IE5VTEwpCi0tICAgICAgICAgICAgICAgIHZhYiA9IGxsdm06 OkJpbmFyeU9wZXJhdG9yOjpDcmVhdGUobGx2bTo6SW5zdHJ1Y3Rpb246OkFkZCwgdmEsIHZiLCBM TFZNR2V0TmFtZSgiYWRkIiwgdmEsIHZiKSwKLSsgICAgICAgICAgICAgICAgdmFiID0gbGx2bTo6 QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZShsbHZtOjpJbnN0cnVjdGlvbjo6QWRkLCB2YSwgdmIsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsbHZt OjpUd2luZSgiYWRkXyIpICsgdmEtPmdldE5hbWUoKSkgKyAiXyIpICsgdmItPmdldE5hbWUoKSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNl cnRCZWZvcmUpOwotICAgICAgICAgICAgIGVsc2UgaWYgKHZhICE9IE5VTEwpCi0gICAgICAgICAg ICAgICAgIHZhYiA9IHZhOwotQEAgLTE2NzQsOCArMTY4NSw5IEBAIHN0YXRpYyB2b2lkIGxFeHRy YWN0Q29uc3RhbnRPZmZzZXQobGx2bTo6VmFsdWUgKnZlYywgbGx2bTo6VmFsdWUgKipjb25zdE9m ZnNldCwKLSAgICAgICAgICAgICAgICAgdmFiID0gdmI7Ci0gCi0gICAgICAgICAgICAgaWYgKHZh YiAhPSBOVUxMICYmIHZjICE9IE5VTEwpCi0tICAgICAgICAgICAgICAgICp2YXJpYWJsZU9mZnNl dCA9IGxsdm06OkJpbmFyeU9wZXJhdG9yOjpDcmVhdGUobGx2bTo6SW5zdHJ1Y3Rpb246OkFkZCwg dmFiLCB2YywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMTFZNR2V0TmFtZSgiYWRkIiwgdmFiLCB2YyksIGluc2VydEJlZm9y ZSk7Ci0rICAgICAgICAgICAgICAgICp2YXJpYWJsZU9mZnNldCA9IGxsdm06OkJpbmFyeU9wZXJh dG9yOjpDcmVhdGUoCi0rICAgICAgICAgICAgICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbjo6QWRk LCB2YWIsIHZjLCAoKGxsdm06OlR3aW5lKCJhZGRfIikgKyB2YWItPmdldE5hbWUoKSkgKyAiXyIp ICsgdmMtPmdldE5hbWUoKSwKLSsgICAgICAgICAgICAgICAgICAgIGluc2VydEJlZm9yZSk7Ci0g ICAgICAgICAgICAgZWxzZSBpZiAodmFiICE9IE5VTEwpCi0gICAgICAgICAgICAgICAgICp2YXJp YWJsZU9mZnNldCA9IHZhYjsKLSAgICAgICAgICAgICBlbHNlCi1AQCAtMTk0Myw3ICsxOTU1LDcg QEAgc3RhdGljIGJvb2wgbE9mZnNldHMzMkJpdFNhZmUobGx2bTo6VmFsdWUgKip2YXJpYWJsZU9m ZnNldFB0ciwgbGx2bTo6VmFsdWUgKipjb24KLSAgICAgICAgICAgICAvLyBhbGwgemVyb3MgKGku ZS4gYSBDb25zdGFudEFnZ3JlZ2F0ZVplcm8sIGJ1dCBqdXN0IGluIGNhc2UsCi0gICAgICAgICAg ICAgLy8gZG8gdGhlIG1vcmUgZ2VuZXJhbCBjaGVjayB3aXRoIGxWZWN0b3JJczMyQml0SW50cygp LgotICAgICAgICAgICAgIHZhcmlhYmxlT2Zmc2V0ID0gbmV3IGxsdm06OlRydW5jSW5zdCh2YXJp YWJsZU9mZnNldCwgTExWTVR5cGVzOjpJbnQzMlZlY3RvclR5cGUsCi0tICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1HZXROYW1lKHZhcmlhYmxlT2Zm c2V0LCAiX3RydW5jIiksIGluc2VydEJlZm9yZSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OlR3aW5lKHZhcmlhYmxlT2Zmc2V0LT5nZXRO YW1lKCkpICsgIl90cnVuYyIsIGluc2VydEJlZm9yZSk7Ci0gICAgICAgICBlbHNlCi0gICAgICAg ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICB9Ci1AQCAtMTk1Miw3ICsxOTY0LDcgQEAgc3RhdGlj IGJvb2wgbE9mZnNldHMzMkJpdFNhZmUobGx2bTo6VmFsdWUgKip2YXJpYWJsZU9mZnNldFB0ciwg bGx2bTo6VmFsdWUgKipjb24KLSAgICAgICAgIGlmIChsVmVjdG9ySXMzMkJpdEludHMoY29uc3RP ZmZzZXQpKSB7Ci0gICAgICAgICAgICAgLy8gVHJ1bmNhdGUgdGhlbSBzbyB3ZSBoYXZlIGEgMzIt Yml0IHZlY3RvciB0eXBlIGZvciB0aGVtLgotICAgICAgICAgICAgIGNvbnN0T2Zmc2V0ID0gbmV3 IGxsdm06OlRydW5jSW5zdChjb25zdE9mZnNldCwgTExWTVR5cGVzOjpJbnQzMlZlY3RvclR5cGUs Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1HZXRO YW1lKGNvbnN0T2Zmc2V0LCAiX3RydW5jIiksIGluc2VydEJlZm9yZSk7Ci0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OlR3aW5lKGNvbnN0T2Zmc2V0 LT5nZXROYW1lKCkpICsgIl90cnVuYyIsIGluc2VydEJlZm9yZSk7Ci0gICAgICAgICB9IGVsc2Ug ewotICAgICAgICAgICAgIC8vIEZJWE1FOiBvdGhlcndpc2Ugd2UganVzdCBhc3N1bWUgdGhhdCBh bGwgY29uc3RhbnQgb2Zmc2V0cwotICAgICAgICAgICAgIC8vIGNhbiBhY3R1YWxseSBhbHdheXMg Zml0IGludG8gMzItYml0cy4uLiAgKFRoaXMgY291bGQgYmUKLUBAIC0xOTYzLDcgKzE5NzUsNyBA QCBzdGF0aWMgYm9vbCBsT2Zmc2V0czMyQml0U2FmZShsbHZtOjpWYWx1ZSAqKnZhcmlhYmxlT2Zm c2V0UHRyLCBsbHZtOjpWYWx1ZSAqKmNvbgotICAgICAgICAgICAgIC8vIGxsdm06OkNvbnN0YW50 Rm9sZEluc3RydWN0aW9uKCkgZG9lc24ndCBzZWVtIHRvIGJlIGRvaW5nCi0gICAgICAgICAgICAg Ly8gZW5vdWdoIGZvciB1cyBpbiBzb21lIGNhc2VzIGlmIHdlIGNhbGwgaXQgZnJvbSBoZXJlLgot ICAgICAgICAgICAgIGNvbnN0T2Zmc2V0ID0gbmV3IGxsdm06OlRydW5jSW5zdChjb25zdE9mZnNl dCwgTExWTVR5cGVzOjpJbnQzMlZlY3RvclR5cGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExMVk1HZXROYW1lKGNvbnN0T2Zmc2V0LCAiX3RydW5jIiks IGluc2VydEJlZm9yZSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxsdm06OlR3aW5lKGNvbnN0T2Zmc2V0LT5nZXROYW1lKCkpICsgIl90cnVuYyIsIGlu c2VydEJlZm9yZSk7Ci0gICAgICAgICB9Ci0gICAgIH0KLSAKLUBAIC0yMDEyLDggKzIwMjQsOCBA QCBzdGF0aWMgYm9vbCBsT2Zmc2V0czMyQml0U2FmZShsbHZtOjpWYWx1ZSAqKm9mZnNldFB0ciwg bGx2bTo6SW5zdHJ1Y3Rpb24gKmluc2VydAotIAotICAgICAgICAgLy8gQWx0ZXJuYXRpdmVseSwg b2Zmc2V0IGNvdWxkIGJlIGEgc2VxdWVuY2Ugb2YgYWRkcyB0ZXJtaW5hdGluZwotICAgICAgICAg Ly8gaW4gc2FmZSBjb25zdGFudCB2ZWN0b3JzIG9yIGEgU0V4dC4KLS0gICAgICAgICpvZmZzZXRQ dHIgPQotLSAgICAgICAgICAgIG5ldyBsbHZtOjpUcnVuY0luc3Qob2Zmc2V0LCBMTFZNVHlwZXM6 OkludDMyVmVjdG9yVHlwZSwgTExWTUdldE5hbWUob2Zmc2V0LCAiX3RydW5jIiksIGluc2VydEJl Zm9yZSk7Ci0rICAgICAgICAqb2Zmc2V0UHRyID0gbmV3IGxsdm06OlRydW5jSW5zdChvZmZzZXQs IExMVk1UeXBlczo6SW50MzJWZWN0b3JUeXBlLCBsbHZtOjpUd2luZShvZmZzZXQtPmdldE5hbWUo KSkgKyAiX3RydW5jIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGluc2VydEJlZm9yZSk7Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgfSBlbHNlCi0gICAg ICAgICByZXR1cm4gZmFsc2U7Ci1AQCAtMjIyOSw3ICsyMjQxLDggQEAgc3RhdGljIGJvb2wgbEdT VG9HU0Jhc2VPZmZzZXRzKGxsdm06OkNhbGxJbnN0ICpjYWxsSW5zdCkgewotICAgICB9Ci0gICAg IC8vIENhc3QgdGhlIGJhc2UgcG9pbnRlciB0byBhIHZvaWQgKiwgc2luY2UgdGhhdCdzIHdoYXQg dGhlCi0gICAgIC8vIF9fcHNldWRvXypfYmFzZV9vZmZzZXRzXyogZnVuY3Rpb25zIHdhbnQuCi0t ICAgIGJhc2VQdHIgPSBuZXcgbGx2bTo6SW50VG9QdHJJbnN0KGJhc2VQdHIsIExMVk1UeXBlczo6 Vm9pZFBvaW50ZXJUeXBlLCBMTFZNR2V0TmFtZShiYXNlUHRyLCAiXzJ2b2lkIiksIGNhbGxJbnN0 KTsKLSsgICAgYmFzZVB0ciA9IG5ldyBsbHZtOjpJbnRUb1B0ckluc3QoYmFzZVB0ciwgTExWTVR5 cGVzOjpWb2lkUG9pbnRlclR5cGUsIGxsdm06OlR3aW5lKGJhc2VQdHItPmdldE5hbWUoKSkgKyAi XzJ2b2lkIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbEluc3Qp OwotICAgICBsQ29weU1ldGFkYXRhKGJhc2VQdHIsIGNhbGxJbnN0KTsKLSAgICAgbGx2bTo6RnVu Y3Rpb24gKmdhdGhlclNjYXR0ZXJGdW5jID0gaW5mby0+YmFzZU9mZnNldHNGdW5jOwotIAotQEAg LTI4MDMsNyArMjgxNiw3IEBAIHN0YXRpYyBib29sIGxHU1RvTG9hZFN0b3JlKGxsdm06OkNhbGxJ bnN0ICpjYWxsSW5zdCkgewotICAgICAgICAgICAgICAgICBsQ29weU1ldGFkYXRhKHB0ciwgY2Fs bEluc3QpOwotICAgICAgICAgICAgICAgICBEZWJ1Zyhwb3MsICJUcmFuc2Zvcm1lZCBnYXRoZXIg dG8gdW5hbGlnbmVkIHZlY3RvciBsb2FkISIpOwotICAgICAgICAgICAgICAgICBsbHZtOjpJbnN0 cnVjdGlvbiAqbmV3Q2FsbCA9Ci0tICAgICAgICAgICAgICAgICAgICBsQ2FsbEluc3QoZ2F0aGVy SW5mby0+bG9hZE1hc2tlZEZ1bmMsIHB0ciwgbWFzaywgTExWTUdldE5hbWUocHRyLCAiX21hc2tl ZF9sb2FkIikpOwotKyAgICAgICAgICAgICAgICAgICAgbENhbGxJbnN0KGdhdGhlckluZm8tPmxv YWRNYXNrZWRGdW5jLCBwdHIsIG1hc2ssIGxsdm06OlR3aW5lKHB0ci0+Z2V0TmFtZSgpKSArICJf bWFza2VkX2xvYWQiKTsKLSAgICAgICAgICAgICAgICAgbENvcHlNZXRhZGF0YShuZXdDYWxsLCBj YWxsSW5zdCk7Ci0gICAgICAgICAgICAgICAgIGxsdm06OlJlcGxhY2VJbnN0V2l0aEluc3QoY2Fs bEluc3QsIG5ld0NhbGwpOwotICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDQucGF0Y2ggYi9zcmNwa2dzL2lzcGMv cGF0Y2hlcy9sbHZtMTItMDA0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAz YTk0ZDg0NDNhNWUuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZt MTItMDA0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotRnJvbSBjMDNhNTE0 MjQ0NDQ3NmExY2FhNWMyYmE3ZmEyZDkyZDc3OTNkNmYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQotRnJvbTogRGVlcGFrIFJhamVuZHJha3VtYXJhbiA8ZGVlcGFrLnJhamVuZHJha3VtYXJhbkBp bnRlbC5jb20+Ci1EYXRlOiBNb24sIDI1IEphbiAyMDIxIDA5OjIyOjQ5IC0wODAwCi1TdWJqZWN0 OiBbUEFUQ0hdIEZpeGluZyBidWlsZCBvbiBsbHZtIHRydW5rLgotCi0tLS0KLSBzcmMvY3R4LmNw cCB8IDcgKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDQgZGVsZXRp b25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvY3R4LmNwcCBiL3NyYy9jdHguY3BwCi1pbmRleCBk ZWQ1MjRiNzEuLmI2MGU2ZmU4NCAxMDA2NDQKLS0tLSBhL3NyYy9jdHguY3BwCi0rKysgYi9zcmMv Y3R4LmNwcAotQEAgLTEwMjAsOCArMTAyMCw3IEBAIHZvaWQgRnVuY3Rpb25FbWl0Q29udGV4dDo6 RW1pdENhc2VMYWJlbChpbnQgdmFsdWUsIGJvb2wgY2hlY2tNYXNrLCBTb3VyY2VQb3MgcG9zCi0g ICAgIGxsdm06OkJhc2ljQmxvY2sgKmJiQ2FzZUltcGwgPSBOVUxMOwotICAgICBpZiAoZW1pdEdl blhIYXJkd2FyZU1hc2soKSkgewotICAgICAgICAgLy8gQ3JlYXRlIGJhc2ljIGJsb2NrIHdpdGgg YWN0dWFsIGNhc2UgaW1wbGVtZW50YXRpb24KLS0gICAgICAgIGxsdm06OlR3aW5lIGJiTmFtZSA9 IGxsdm06OlR3aW5lKGJiQ2FzZS0+Z2V0TmFtZSgpKSArICJfaW1wbCI7Ci0tICAgICAgICBiYkNh c2VJbXBsID0gQ3JlYXRlQmFzaWNCbG9jayhiYk5hbWUsIGJiQ2FzZSk7Ci0rICAgICAgICBiYkNh c2VJbXBsID0gQ3JlYXRlQmFzaWNCbG9jayhsbHZtOjpUd2luZShiYkNhc2UtPmdldE5hbWUoKSkg KyAiX2ltcGwiLCBiYkNhc2UpOwotICAgICB9Ci0gI2VuZGlmCi0gCi1AQCAtMzE0Miw4ICszMTQx LDggQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkJyb2FkY2FzdFZhbHVlKGxs dm06OlZhbHVlICp2LCBsbHZtOjpUeXBlICp2ZWMKLSAgICAgbGx2bTo6VmFsdWUgKnVuZGVmMiA9 IGxsdm06OlVuZGVmVmFsdWU6OmdldCh2ZWNUeXBlKTsKLSAKLSAgICAgLy8gSW5zZXJ0RWxlbWVu dAotLSAgICBsbHZtOjpUd2luZSB0dyA9IG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gKGxsdm06 OlR3aW5lKHYtPmdldE5hbWUoKSkgKyAiX2Jyb2FkY2FzdCIpIDogbmFtZSArIGxsdm06OlR3aW5l KCJfaW5pdCIpOwotLSAgICBsbHZtOjpWYWx1ZSAqaW5zZXJ0ID0gSW5zZXJ0SW5zdCh1bmRlZjEs IHYsIDAsIHR3LnN0cigpLmNfc3RyKCkpOwotKyAgICBsbHZtOjpWYWx1ZSAqaW5zZXJ0ID0KLSsg ICAgICAgIEluc2VydEluc3QodW5kZWYxLCB2LCAwLCBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/ IChsbHZtOjpUd2luZSh2LT5nZXROYW1lKCkpICsgIl9icm9hZGNhc3QiKSA6IG5hbWUgKyAiX2lu aXQiKTsKLSAKLSAgICAgLy8gU2h1ZmZsZVZlY3RvcgotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8 IElTUENfTExWTV8xMV8wCmRpZmYgLS1naXQgYS9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTIt MDA1LnBhdGNoIGIvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwNS5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTNlOTZiMDBhYmZhLi4wMDAwMDAwMDAwMDAKLS0tIGEv c3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDM3MiArMCwwIEBACi1Gcm9tIGMxZDBhNTFiZjg0MTZkNDIxNDRkZTllMmJkZDU5ODI1ZWFlZmYx YWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBcmluYSBOZXNobHlhZXZhIDxhcmlu YS5uZXNobHlhZXZhQGludGVsLmNvbT4KLURhdGU6IEZyaSwgOCBKYW4gMjAyMSAxNDoxMzo0OSAt MDgwMAotU3ViamVjdDogW1BBVENIXSBMTFZNIDExIHN1cHBvcnQgZm9yIGdlbiBjb2RlCi0KLS0t LQotIHNyYy9jdHguY3BwICAgICAgICAgICAgICAgICAgICAgfCAgMTMgKystCi0gc3JjL2dlbi9H bG9iYWxzTG9jYWxpemF0aW9uLmNwcCB8ICAgOSArLQotIHNyYy9vcHQuY3BwICAgICAgICAgICAg ICAgICAgICAgfCAxNDMgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KLSAzIGZpbGVz IGNoYW5nZWQsIDEyNCBpbnNlcnRpb25zKCspLCA0MSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdp dCBhL3NyYy9jdHguY3BwIGIvc3JjL2N0eC5jcHAKLWluZGV4IGI2MGU2ZmU4NC4uMmE3MmU2ODM3 IDEwMDY0NAotLS0tIGEvc3JjL2N0eC5jcHAKLSsrKyBiL3NyYy9jdHguY3BwCi1AQCAtMSw1ICsx LDUgQEAKLSAvKgotLSAgQ29weXJpZ2h0IChjKSAyMDEwLTIwMjAsIEludGVsIENvcnBvcmF0aW9u Ci0rICBDb3B5cmlnaHQgKGMpIDIwMTAtMjAyMSwgSW50ZWwgQ29ycG9yYXRpb24KLSAgIEFsbCBy aWdodHMgcmVzZXJ2ZWQuCi0gCi0gICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLUBAIC0zNjg1LDggKzM2ODUsMTcgQEAg bGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkdlblhTaW1kQ0ZQcmVkaWNhdGUobGx2 bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjoKLSAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIGxsdm06 OmlzYTxsbHZtOjpWZWN0b3JUeXBlPih2YWx1ZS0+Z2V0VHlwZSgpKSk7Ci0gICAgIGxsdm06OlZl Y3RvclR5cGUgKnZ0ID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4odmFsdWUtPmdl dFR5cGUoKSk7Ci0gICAgIGlmIChkZWZhdWx0cyA9PSBOVUxMKSB7Ci0tICAgICAgICBkZWZhdWx0 cyA9IGxsdm06OkNvbnN0YW50VmVjdG9yOjpnZXRTcGxhdCh2YWx1ZS0+Z2V0VHlwZSgpLT5nZXRW ZWN0b3JOdW1FbGVtZW50cygpLAotKyNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8x MV8wCi0rICAgICAgICBkZWZhdWx0cyA9IGxsdm06OkNvbnN0YW50VmVjdG9yOjpnZXRTcGxhdCh2 dC0+Z2V0VmVjdG9yTnVtRWxlbWVudHMoKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGxsdm06OkNvbnN0YW50OjpnZXROdWxsVmFsdWUodnQtPmdl dEVsZW1lbnRUeXBlKCkpKTsKLSsjZWxpZiBJU1BDX0xMVk1fVkVSU0lPTiA9PSBJU1BDX0xMVk1f MTFfMAotKyAgICAgICAgZGVmYXVsdHMgPSBsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQo e3N0YXRpY19jYXN0PHVuc2lnbmVkIGludD4odnQtPmdldE51bUVsZW1lbnRzKCkpLCBmYWxzZX0s Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZt OjpDb25zdGFudDo6Z2V0TnVsbFZhbHVlKHZ0LT5nZXRFbGVtZW50VHlwZSgpKSk7Ci0rI2Vsc2UK LSsgICAgICAgIGRlZmF1bHRzID0gbGx2bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0KAotKyAg ICAgICAgICAgIGxsdm06OkVsZW1lbnRDb3VudDo6Z2V0KHN0YXRpY19jYXN0PHVuc2lnbmVkIGlu dD4odnQtPmdldE51bUVsZW1lbnRzKCkpLCBmYWxzZSksCi0rICAgICAgICAgICAgbGx2bTo6Q29u c3RhbnQ6OmdldE51bGxWYWx1ZSh2dC0+Z2V0RWxlbWVudFR5cGUoKSkpOwotKyNlbmRpZgotICAg ICB9Ci0gCi0gICAgIGF1dG8gRm4gPSBsbHZtOjpHZW5YSW50cmluc2ljOjpnZXRHZW5YRGVjbGFy YXRpb24obS0+bW9kdWxlLCBsbHZtOjpHZW5YSW50cmluc2ljOjpnZW54X3NpbWRjZl9wcmVkaWNh dGUsCi1kaWZmIC0tZ2l0IGEvc3JjL2dlbi9HbG9iYWxzTG9jYWxpemF0aW9uLmNwcCBiL3NyYy9n ZW4vR2xvYmFsc0xvY2FsaXphdGlvbi5jcHAKLWluZGV4IGExNzZlOTQ2Mi4uNDFmM2IwMGUyIDEw MDY0NAotLS0tIGEvc3JjL2dlbi9HbG9iYWxzTG9jYWxpemF0aW9uLmNwcAotKysrIGIvc3JjL2dl bi9HbG9iYWxzTG9jYWxpemF0aW9uLmNwcAotQEAgLTEsNSArMSw1IEBACi0gLyoKLS0gIENvcHly aWdodCAoYykgMjAxNCwgMjAxNi0yMDIwLCBJbnRlbCBDb3Jwb3JhdGlvbgotKyAgQ29weXJpZ2h0 IChjKSAyMDE0LCAyMDE2LTIwMjEsIEludGVsIENvcnBvcmF0aW9uCi0gICBBbGwgcmlnaHRzIHJl c2VydmVkLgotIAotICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1AQCAtNTMsOCArNTMsMTAgQEAKLSAjaW5jbHVkZSA8 bGx2bS9HZW5YSW50cmluc2ljcy9HZW5YSW50ck9wdHMuaD4KLSAjaW5jbHVkZSA8bGx2bS9HZW5Y SW50cmluc2ljcy9HZW5YSW50cmluc2ljcy5oPgotICNpbmNsdWRlIDxsbHZtL0dlblhJbnRyaW5z aWNzL0dlblhNZXRhZGF0YS5oPgotLSNpbmNsdWRlIDxsbHZtL0lSL0NGRy5oPgotKyNpZiBJU1BD X0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMV8wCi0gI2luY2x1ZGUgPGxsdm0vSVIvQ2FsbFNp dGUuaD4KLSsjZW5kaWYKLSsjaW5jbHVkZSA8bGx2bS9JUi9DRkcuaD4KLSAjaW5jbHVkZSA8bGx2 bS9JUi9EZWJ1Z0luZm8uaD4KLSAjaW5jbHVkZSA8bGx2bS9JUi9Eb21pbmF0b3JzLmg+Ci0gI2lu Y2x1ZGUgPGxsdm0vSVIvRnVuY3Rpb24uaD4KLUBAIC00NzAsNyArNDcyLDggQEAgdm9pZCBHbG9i YWxzTG9jYWxpemF0aW9uOjpMb2NhbGl6ZUdsb2JhbHMoTG9jYWxpemF0aW9uSW5mbyAmTEkpIHsK LSAgICAgICAgIEluc3RydWN0aW9uICZGaXJzdEkgPSAqRm4tPmdldEVudHJ5QmxvY2soKS5iZWdp bigpOwotICAgICAgICAgVHlwZSAqRWxlbVR5ID0gR1YtPmdldFR5cGUoKS0+Z2V0RWxlbWVudFR5 cGUoKTsKLSAgICAgICAgIEFsbG9jYUluc3QgKkFsbG9jYSA9IG5ldyBBbGxvY2FJbnN0KEVsZW1U eSwgMCwgR1YtPmdldE5hbWUoKSArICIubG9jYWwiLCAmRmlyc3RJKTsKLS0gICAgICAgIEFsbG9j YS0+c2V0QWxpZ25tZW50KGxsdm06Ok1heWJlQWxpZ24oR1YtPmdldEFsaWdubWVudCgpKSk7Ci0r ICAgICAgICBBbGxvY2EtPnNldEFsaWdubWVudChsbHZtOjpNYXliZUFsaWduKEdWLT5nZXRBbGln bm1lbnQoKSkudmFsdWVPck9uZSgpKTsKLSsKLSAgICAgICAgIGlmICghaXNhPFVuZGVmVmFsdWU+ KEdWLT5nZXRJbml0aWFsaXplcigpKSkKLSAgICAgICAgICAgICBuZXcgU3RvcmVJbnN0KEdWLT5n ZXRJbml0aWFsaXplcigpLCBBbGxvY2EsICZGaXJzdEkpOwotIAotZGlmZiAtLWdpdCBhL3NyYy9v cHQuY3BwIGIvc3JjL29wdC5jcHAKLWluZGV4IGQ1OGQ3N2Y3My4uMTc4OWI4NDc2IDEwMDY0NAot LS0tIGEvc3JjL29wdC5jcHAKLSsrKyBiL3NyYy9vcHQuY3BwCi1AQCAtMjg5OSwxNSArMjg5OSwx NyBAQCBzdGF0aWMgbGx2bTo6RnVuY3Rpb24gKmxHZW5YTWFza2VkSW50OEluc3QobGx2bTo6SW5z dHJ1Y3Rpb24gKmluc3QsIGJvb2wgaXNTdG9yZQotIHN0YXRpYyBsbHZtOjpDYWxsSW5zdCAqbEdl blhTdG9yZUluc3QobGx2bTo6VmFsdWUgKnZhbCwgbGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6SW5z dHJ1Y3Rpb24gKmluc3QpIHsKLSAgICAgQXNzZXJ0KGctPnRhcmdldC0+aXNHZW5YVGFyZ2V0KCkp OwotICAgICBBc3NlcnQobGx2bTo6aXNhPGxsdm06OlZlY3RvclR5cGU+KHZhbC0+Z2V0VHlwZSgp KSk7Ci0tICAgIEFzc2VydChsbHZtOjppc1Bvd2VyT2YyXzMyKHZhbC0+Z2V0VHlwZSgpLT5nZXRW ZWN0b3JOdW1FbGVtZW50cygpKSk7Ci0tICAgIEFzc2VydCh2YWwtPmdldFR5cGUoKS0+Z2V0UHJp bWl0aXZlU2l6ZUluQml0cygpIC8gOCA8PSA4ICogT1dPUkQpOwotKwotKyAgICBsbHZtOjpWZWN0 b3JUeXBlICp2YWxWZWNUeXBlID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4odmFs LT5nZXRUeXBlKCkpOwotKyAgICBBc3NlcnQobGx2bTo6aXNQb3dlck9mMl8zMih2YWxWZWNUeXBl LT5nZXROdW1FbGVtZW50cygpKSk7Ci0rICAgIEFzc2VydCh2YWxWZWNUeXBlLT5nZXRQcmltaXRp dmVTaXplSW5CaXRzKCkgLyA4IDw9IDggKiBPV09SRCk7Ci0gCi0gICAgIC8vIFRoZSBkYXRhIHdy aXRlIG9mIHN2bSBzdG9yZSBtdXN0IGhhdmUgYSBzaXplIHRoYXQgaXMgYSBwb3dlciBvZiB0d28g ZnJvbSAxNiB0byAxMjgKLSAgICAgLy8gYnl0ZXMuIEhvd2V2ZXIgZm9yIGludDggdHlwZSBhbmQg c2ltZCB3aWR0aCA9IDgsIHRoZSBkYXRhIHdyaXRlIHNpemUgaXMgOC4KLSAgICAgLy8gU28gd2Ug dXNlIG1hc2tlZCBzdG9yZSBmdW5jdGlvbiBoZXJlIGluc3RlYWQgb2Ygc3ZtIHN0b3JlIHdoaWNo IHByb2Nlc3MgaW50OCB0eXBlCi0gICAgIC8vIGNvcnJlY3RseS4KLS0gICAgaWYgKHZhbC0+Z2V0 VHlwZSgpLT5nZXRQcmltaXRpdmVTaXplSW5CaXRzKCkgLyA4IDwgMTYpIHsKLS0gICAgICAgIEFz c2VydCh2YWwtPmdldFR5cGUoKS0+Z2V0U2NhbGFyVHlwZSgpID09IExMVk1UeXBlczo6SW50OFR5 cGUpOwotKyAgICBpZiAodmFsVmVjVHlwZS0+Z2V0UHJpbWl0aXZlU2l6ZUluQml0cygpIC8gOCA8 IDE2KSB7Ci0rICAgICAgICBBc3NlcnQodmFsVmVjVHlwZS0+Z2V0U2NhbGFyVHlwZSgpID09IExM Vk1UeXBlczo6SW50OFR5cGUpOwotICAgICAgICAgaWYgKGxsdm06OkZ1bmN0aW9uICptYXNrZWRG dW5jID0gbEdlblhNYXNrZWRJbnQ4SW5zdChpbnN0LCB0cnVlKSkKLSAgICAgICAgICAgICByZXR1 cm4gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6Q2FsbEluc3Q+KGxDYWxsSW5zdChtYXNrZWRGdW5jLCBw dHIsIHZhbCwgTExWTU1hc2tBbGxPbiwgIiIpKTsKLSAgICAgICAgIGVsc2UgewotQEAgLTI5MjMs MTUgKzI5MjUsMTcgQEAgc3RhdGljIGxsdm06OkNhbGxJbnN0ICpsR2VuWFN0b3JlSW5zdChsbHZt OjpWYWx1ZSAqdmFsLCBsbHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjoKLSAKLSBzdGF0aWMgbGx2bTo6 Q2FsbEluc3QgKmxHZW5YTG9hZEluc3QobGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6VHlwZSAqcmV0 VHlwZSwgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QpIHsKLSAgICAgQXNzZXJ0KGxsdm06OmlzYTxs bHZtOjpWZWN0b3JUeXBlPihyZXRUeXBlKSk7Ci0tICAgIEFzc2VydChsbHZtOjppc1Bvd2VyT2Yy XzMyKHJldFR5cGUtPmdldFZlY3Rvck51bUVsZW1lbnRzKCkpKTsKLS0gICAgQXNzZXJ0KHJldFR5 cGUtPmdldFByaW1pdGl2ZVNpemVJbkJpdHMoKSk7Ci0tICAgIEFzc2VydChyZXRUeXBlLT5nZXRQ cmltaXRpdmVTaXplSW5CaXRzKCkgLyA4IDw9IDggKiBPV09SRCk7Ci0rCi0rICAgIGxsdm06OlZl Y3RvclR5cGUgKnJldFZlY1R5cGUgPSBsbHZtOjpkeW5fY2FzdDxsbHZtOjpWZWN0b3JUeXBlPihy ZXRUeXBlKTsKLSsgICAgQXNzZXJ0KGxsdm06OmlzUG93ZXJPZjJfMzIocmV0VmVjVHlwZS0+Z2V0 TnVtRWxlbWVudHMoKSkpOwotKyAgICBBc3NlcnQocmV0VmVjVHlwZS0+Z2V0UHJpbWl0aXZlU2l6 ZUluQml0cygpKTsKLSsgICAgQXNzZXJ0KHJldFZlY1R5cGUtPmdldFByaW1pdGl2ZVNpemVJbkJp dHMoKSAvIDggPD0gOCAqIE9XT1JEKTsKLSAgICAgLy8gVGhlIGRhdGEgcmVhZCBvZiBzdm0gbG9h ZCBtdXN0IGhhdmUgYSBzaXplIHRoYXQgaXMgYSBwb3dlciBvZiB0d28gZnJvbSAxNiB0byAxMjgK LSAgICAgLy8gYnl0ZXMuIEhvd2V2ZXIgZm9yIGludDggdHlwZSBhbmQgc2ltZCB3aWR0aCA9IDgs IHRoZSBkYXRhIHJlYWQgc2l6ZSBpcyA4LgotICAgICAvLyBTbyB3ZSB1c2UgbWFza2VkIGxvYWQg ZnVuY3Rpb24gaGVyZSBpbnN0ZWFkIG9mIHN2bSBsb2FkIHdoaWNoIHByb2Nlc3MgaW50OCB0eXBl Ci0gICAgIC8vIGNvcnJlY3RseS4KLS0gICAgaWYgKHJldFR5cGUtPmdldFByaW1pdGl2ZVNpemVJ bkJpdHMoKSAvIDggPCAxNikgewotLSAgICAgICAgQXNzZXJ0KHJldFR5cGUtPmdldFNjYWxhclR5 cGUoKSA9PSBMTFZNVHlwZXM6OkludDhUeXBlKTsKLSsgICAgaWYgKHJldFZlY1R5cGUtPmdldFBy aW1pdGl2ZVNpemVJbkJpdHMoKSAvIDggPCAxNikgewotKyAgICAgICAgQXNzZXJ0KHJldFZlY1R5 cGUtPmdldFNjYWxhclR5cGUoKSA9PSBMTFZNVHlwZXM6OkludDhUeXBlKTsKLSAgICAgICAgIGlm IChsbHZtOjpGdW5jdGlvbiAqbWFza2VkRnVuYyA9IGxHZW5YTWFza2VkSW50OEluc3QoaW5zdCwg ZmFsc2UpKQotICAgICAgICAgICAgIHJldHVybiBsbHZtOjpkeW5fY2FzdDxsbHZtOjpDYWxsSW5z dD4obENhbGxJbnN0KG1hc2tlZEZ1bmMsIHB0ciwgTExWTU1hc2tBbGxPbiwgIiIpKTsKLSAgICAg ICAgIGVsc2UgewotQEAgLTU2MjIsMTUgKzU2MjYsMjQgQEAgc3RhdGljIGJvb2wgbFZlY3Rvcml6 ZUdFUHMobGx2bTo6VmFsdWUgKnB0ciwgc3RkOjp2ZWN0b3I8UHRyVXNlPiAmcHRyVXNlcywgc3Rk OjoKLSAgICAgICAgIGxsdm06OlB0clRvSW50SW5zdCAqcHRyVG9JbnQgPQotICAgICAgICAgICAg IG5ldyBsbHZtOjpQdHJUb0ludEluc3QocHRyLCBMTFZNVHlwZXM6OkludDY0VHlwZSwgInZlY3Rv cml6ZWRfcHRydG9pbnQiLCBpbnNlcnRCZWZvcmUpOwotICAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rp b24gKmFkZHIgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlQWRkKHB0clRvSW50LCBvZmZz ZXQsICJ2ZWN0b3JpemVkX2FkZHJlc3MiLCBpbnNlcnRCZWZvcmUpOwotKyNpZiBJU1BDX0xMVk1f VkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFfMAotKyAgICAgICAgbGx2bTo6VHlwZSAqcmV0VHlwZSA9 IGxsdm06OkZpeGVkVmVjdG9yVHlwZTo6Z2V0KHNjYWxhcl90eXBlLCByZXFTaXplIC8gdF9zaXpl KTsKLSsjZWxzZQotICAgICAgICAgbGx2bTo6VHlwZSAqcmV0VHlwZSA9IGxsdm06OlZlY3RvclR5 cGU6OmdldChzY2FsYXJfdHlwZSwgcmVxU2l6ZSAvIHRfc2l6ZSk7Ci0rI2VuZGlmCi0gICAgICAg ICBsbHZtOjpGdW5jdGlvbiAqZm4gPSBsbHZtOjpHZW5YSW50cmluc2ljOjpnZXRHZW5YRGVjbGFy YXRpb24oCi0gICAgICAgICAgICAgbS0+bW9kdWxlLCBsbHZtOjpHZW5YSW50cmluc2ljOjpnZW54 X3N2bV9ibG9ja19sZF91bmFsaWduZWQsIHtyZXRUeXBlLCBhZGRyLT5nZXRUeXBlKCl9KTsKLSAg ICAgICAgIGxsdm06Okluc3RydWN0aW9uICpsZCA9IGxsdm06OkNhbGxJbnN0OjpDcmVhdGUoZm4s IHthZGRyfSwgInZlY3Rvcml6ZWRfbGQiLCBpbnNlcnRCZWZvcmUpOwotIAotICAgICAgICAgaWYg KGxvYWRpbmdQdHIpIHsKLSAgICAgICAgICAgICAvLyBDYXN0IGludCB0byBwdHIgdmlhIGludHRv cHRyCi0rI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMV8wCi0rICAgICAgICAg ICAgbGQgPSBuZXcgbGx2bTo6SW50VG9QdHJJbnN0KGxkLCBsbHZtOjpGaXhlZFZlY3RvclR5cGU6 OmdldChvcmlnaW5hbFR5cGUsIHJlcVNpemUgLyB0X3NpemUpLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAidmVjdG9yaXplZF9pbnR0b3B0ciIsIGluc2VydEJlZm9y ZSk7Ci0rI2Vsc2UKLSAgICAgICAgICAgICBsZCA9IG5ldyBsbHZtOjpJbnRUb1B0ckluc3QobGQs IGxsdm06OlZlY3RvclR5cGU6OmdldChvcmlnaW5hbFR5cGUsIHJlcVNpemUgLyB0X3NpemUpLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmVjdG9yaXplZF9pbnR0 b3B0ciIsIGluc2VydEJlZm9yZSk7Ci0rI2VuZGlmCi0gICAgICAgICB9Ci0gCi0gICAgICAgICAv LyBTY2FsYXIgZXh0cmFjdHMgZm9yIGFsbCBsb2FkZWQgZWxlbWVudHMKLUBAIC02MTYwLDE5ICs2 MTczLDM0IEBAIGJvb2wgUmVwbGFjZUxMVk1JbnRyaW5zaWNzOjpydW5PbkJhc2ljQmxvY2sobGx2 bTo6QmFzaWNCbG9jayAmYmIpIHsKLSAgICAgICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0g JipJOwotICAgICAgICAgaWYgKGxsdm06OkNhbGxJbnN0ICpjaSA9IGxsdm06OmR5bl9jYXN0PGxs dm06OkNhbGxJbnN0PihpbnN0KSkgewotICAgICAgICAgICAgIGxsdm06OkZ1bmN0aW9uICpmdW5j ID0gY2ktPmdldENhbGxlZEZ1bmN0aW9uKCk7Ci0tICAgICAgICAgICAgaWYgKGZ1bmMgJiYgZnVu Yy0+Z2V0TmFtZSgpID09ICJsbHZtLnRyYXAiKSB7Ci0rICAgICAgICAgICAgaWYgKGZ1bmMgJiYg ZnVuYy0+Z2V0TmFtZSgpLmVxdWFscygibGx2bS50cmFwIikpIHsKLSAgICAgICAgICAgICAgICAg bGx2bTo6VHlwZSAqYXJnVHlwZXNbXSA9IHtMTFZNVHlwZXM6OkludDFWZWN0b3JUeXBlLCBMTFZN VHlwZXM6OkludDE2VmVjdG9yVHlwZX07Ci0gICAgICAgICAgICAgICAgIC8vIERlc2NyaXB0aW9u IG9mIHBhcmFtZXRlcnMgZm9yIGdlbnhfcmF3X3NlbmRfbm9yZXN1bHQgY2FuIGJlIGZvdW5kIGlu IHRhcmdldC1nZW54LmxsCi0gICAgICAgICAgICAgICAgIGF1dG8gRm4gPSArbGx2bTo6R2VuWElu dHJpbnNpYzo6Z2V0R2VuWERlY2xhcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgbS0+bW9k dWxlLCBsbHZtOjpHZW5YSW50cmluc2ljOjpnZW54X3Jhd19zZW5kX25vcmVzdWx0LCBhcmdUeXBl cyk7Ci0gICAgICAgICAgICAgICAgIGxsdm06OlNtYWxsVmVjdG9yPGxsdm06OlZhbHVlICosIDg+ IEFyZ3M7Ci0gICAgICAgICAgICAgICAgIEFyZ3MucHVzaF9iYWNrKGxsdm06OkNvbnN0YW50SW50 OjpnZXQoTExWTVR5cGVzOjpJbnQzMlR5cGUsIDApKTsKLS0gICAgICAgICAgICAgICAgQXJncy5w dXNoX2JhY2sobGx2bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0KGctPnRhcmdldC0+Z2V0TmF0 aXZlVmVjdG9yV2lkdGgoKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OkNvbnN0YW50SW50OjpnZXRUcnVlKCpnLT5j dHgpKSk7Ci0rICAgICAgICAgICAgICAgIEFyZ3MucHVzaF9iYWNrKGxsdm06OkNvbnN0YW50VmVj dG9yOjpnZXRTcGxhdCgKLSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1fMTFfMAot KyAgICAgICAgICAgICAgICAgICAgZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JXaWR0aCgpLAot KyNlbGlmIElTUENfTExWTV9WRVJTSU9OID09IElTUENfTExWTV8xMV8wCi0rICAgICAgICAgICAg ICAgICAgICB7c3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihnLT50YXJnZXQtPmdldE5hdGl2ZVZl Y3RvcldpZHRoKCkpLCBmYWxzZX0sCi0rI2Vsc2UgLy8gTExWTSAxMi4wKwotKyAgICAgICAgICAg ICAgICAgICAgbGx2bTo6RWxlbWVudENvdW50OjpnZXQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50 PihnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvcldpZHRoKCkpLCBmYWxzZSksCi0rI2VuZGlmCi0r ICAgICAgICAgICAgICAgICAgICBsbHZtOjpDb25zdGFudEludDo6Z2V0VHJ1ZSgqZy0+Y3R4KSkp OwotKwotICAgICAgICAgICAgICAgICBBcmdzLnB1c2hfYmFjayhsbHZtOjpDb25zdGFudEludDo6 Z2V0KExMVk1UeXBlczo6SW50MzJUeXBlLCAzOSkpOwotICAgICAgICAgICAgICAgICBBcmdzLnB1 c2hfYmFjayhsbHZtOjpDb25zdGFudEludDo6Z2V0KExMVk1UeXBlczo6SW50MzJUeXBlLCAzMzU1 NDQ0OCkpOwotICAgICAgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqemVyb01hc2sgPSBsbHZtOjpD b25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQoCi0tICAgICAgICAgICAgICAgICAgICBnLT50YXJnZXQt PmdldE5hdGl2ZVZlY3RvcldpZHRoKCksIGxsdm06OkNvbnN0YW50OjpnZXROdWxsVmFsdWUobGx2 bTo6VHlwZTo6Z2V0SW50MTZUeSgqZy0+Y3R4KSkpOwotKyNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8 IElTUENfTExWTV8xMV8wCi0rICAgICAgICAgICAgICAgICAgICBnLT50YXJnZXQtPmdldE5hdGl2 ZVZlY3RvcldpZHRoKCksCi0rI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04gPT0gSVNQQ19MTFZNXzEx XzAKLSsgICAgICAgICAgICAgICAgICAgIHtzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGctPnRh cmdldC0+Z2V0TmF0aXZlVmVjdG9yV2lkdGgoKSksIGZhbHNlfSwKLSsjZWxzZSAvLyBMTFZNIDEy LjArCi0rICAgICAgICAgICAgICAgICAgICBsbHZtOjpFbGVtZW50Q291bnQ6OmdldChzdGF0aWNf Y2FzdDx1bnNpZ25lZCBpbnQ+KGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yV2lkdGgoKSksIGZh bHNlKSwKLSsjZW5kaWYKLSsgICAgICAgICAgICAgICAgICAgIGxsdm06OkNvbnN0YW50OjpnZXRO dWxsVmFsdWUobGx2bTo6VHlwZTo6Z2V0SW50MTZUeSgqZy0+Y3R4KSkpOwotICAgICAgICAgICAg ICAgICBBcmdzLnB1c2hfYmFjayh6ZXJvTWFzayk7Ci0gCi0gICAgICAgICAgICAgICAgIGxsdm06 Okluc3RydWN0aW9uICpuZXdJbnN0ID0gbGx2bTo6Q2FsbEluc3Q6OkNyZWF0ZShGbiwgQXJncywg Y2ktPmdldE5hbWUoKSk7Ci1AQCAtNjE4MSw3ICs2MjA5LDcgQEAgYm9vbCBSZXBsYWNlTExWTUlu dHJpbnNpY3M6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICZiYikgewotICAgICAg ICAgICAgICAgICAgICAgbW9kaWZpZWRBbnkgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAg Z290byByZXN0YXJ0OwotICAgICAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgfSBlbHNlIGlm IChmdW5jICYmIGZ1bmMtPmdldE5hbWUoKSA9PSAibGx2bS5hc3N1bWUiKSB7Ci0rICAgICAgICAg ICAgfSBlbHNlIGlmIChmdW5jICYmIGZ1bmMtPmdldE5hbWUoKS5lcXVhbHMoImxsdm0uYXNzdW1l IikpIHsKLSAgICAgICAgICAgICAgICAgY2ktPmVyYXNlRnJvbVBhcmVudCgpOwotICAgICAgICAg ICAgICAgICBtb2RpZmllZEFueSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgIGdvdG8gcmVzdGFy dDsKLUBAIC02MzM1LDcgKzYzNjMsNyBAQCBib29sIENoZWNrVW5zdXBwb3J0ZWRJbnN0czo6cnVu T25CYXNpY0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gICAgICAgICAgICAgICAgIGNv bnRpbnVlOwotICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdW5zdXBwb3J0ZWRGdW5j cy5zaXplKCk7IGkrKykgewotICAgICAgICAgICAgICAgICBzdGQ6OnNtYXRjaCBtYXRjaDsKLS0g ICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgZnVuY05hbWUgPSBmdW5jLT5nZXROYW1lKCk7Ci0r ICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGZ1bmNOYW1lID0gZnVuYy0+Z2V0TmFtZSgpLnN0 cigpOwotICAgICAgICAgICAgICAgICBpZiAoc3RkOjpyZWdleF9tYXRjaChmdW5jTmFtZSwgbWF0 Y2gsIHVuc3VwcG9ydGVkRnVuY3NbaV0pKSB7Ci0gICAgICAgICAgICAgICAgICAgICAvLyBXZSBm b3VuZCB1bnN1cHBvcnRlZCBmdW5jdGlvbi4gR2VuZXJhdGUgZXJyb3IgYW5kIHN0b3AgY29tcGls YXRpb24uCi0gICAgICAgICAgICAgICAgICAgICBTb3VyY2VQb3MgcG9zOwotQEAgLTY0MTgsMTIg KzY0NDYsMTQgQEAgYm9vbCBNYW5nbGVPcGVuQ0xCdWlsdGluczo6cnVuT25CYXNpY0Jsb2NrKGxs dm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gICAgICAgICAgICAgaWYgKGZ1bmMtPmdldE5hbWUoKS5z dGFydHN3aXRoKCJfX3NwaXJ2X29jbCIpKSB7Ci0gICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5n IG1hbmdsZWROYW1lOwotICAgICAgICAgICAgICAgICBsbHZtOjpUeXBlICpyZXRUeXBlID0gZnVu Yy0+Z2V0UmV0dXJuVHlwZSgpOwotLSAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBmdW5jTmFt ZSA9IGZ1bmMtPmdldE5hbWUoKTsKLSsgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgZnVuY05h bWUgPSBmdW5jLT5nZXROYW1lKCkuc3RyKCk7Ci0gICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9y PGxsdm06OlR5cGUgKj4gQXJnVHk7Ci0gICAgICAgICAgICAgICAgIC8vIHNwaXJ2IE9wZW5DTCBi dWlsdGlucyBhcmUgdXNlZCBmb3IgZG91YmxlIHR5cGVzIG9ubHkKLS0gICAgICAgICAgICAgICAg QXNzZXJ0KHJldFR5cGUtPmlzVmVjdG9yVHkoKSAmJiByZXRUeXBlLT5nZXRWZWN0b3JFbGVtZW50 VHlwZSgpLT5pc0RvdWJsZVR5KCkgfHwKLSsgICAgICAgICAgICAgICAgQXNzZXJ0KHJldFR5cGUt PmlzVmVjdG9yVHkoKSAmJgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OmR5bl9j YXN0PGxsdm06OlZlY3RvclR5cGU+KHJldFR5cGUpLT5nZXRFbGVtZW50VHlwZSgpLT5pc0RvdWJs ZVR5KCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldFR5cGUtPmlzU2luZ2xlVmFsdWVU eXBlKCkgJiYgcmV0VHlwZS0+aXNEb3VibGVUeSgpKTsKLS0gICAgICAgICAgICAgICAgaWYgKHJl dFR5cGUtPmlzVmVjdG9yVHkoKSAmJiByZXRUeXBlLT5nZXRWZWN0b3JFbGVtZW50VHlwZSgpLT5p c0RvdWJsZVR5KCkpIHsKLSsgICAgICAgICAgICAgICAgaWYgKHJldFR5cGUtPmlzVmVjdG9yVHko KSAmJgotKyAgICAgICAgICAgICAgICAgICAgbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlw ZT4ocmV0VHlwZSktPmdldEVsZW1lbnRUeXBlKCktPmlzRG91YmxlVHkoKSkgewotICAgICAgICAg ICAgICAgICAgICAgQXJnVHkucHVzaF9iYWNrKExMVk1UeXBlczo6RG91YmxlVmVjdG9yVHlwZSk7 Ci0gICAgICAgICAgICAgICAgICAgICAvLyBfRHZXSURUSCBzdWZmaXggaXMgdXNlZCBpbiB0YXJn ZXQgZmlsZSB0byBkaWZmZXJlbnRpYXRlIHNjYWxhcgotICAgICAgICAgICAgICAgICAgICAgLy8g YW5kIHZlY3RvciB2ZXJzaW9ucyBvZiBpbnRyaW5zaWNzLiBIZXJlIHdlIHJlbW92ZSB0aGlzCi1A QCAtNjUxMSw4ICs2NTQxLDE1IEBAIGxsdm06OlZhbHVlICpGaXhBZGRyZXNzU3BhY2U6OmNhbGN1 bGF0ZUdhdGhlclNjYXR0ZXJBZGRyZXNzKGxsdm06OlZhbHVlICpQdHIsIGxsCi0gCi0gICAgIC8v IENhc3Qgb2Zmc2V0cyB0byBpbnQ2NAotICAgICBPZmZzZXRzID0gbmV3IGxsdm06OlpFeHRJbnN0 KAotKyNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFfMAotKyAgICAgICAgT2Zm c2V0cywKLSsgICAgICAgIGxsdm06OkZpeGVkVmVjdG9yVHlwZTo6Z2V0KExMVk1UeXBlczo6SW50 NjRUeXBlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6ZHluX2Nh c3Q8bGx2bTo6VmVjdG9yVHlwZT4oT2Zmc2V0cy0+Z2V0VHlwZSgpKS0+Z2V0TnVtRWxlbWVudHMo KSksCi0rICAgICAgICAic3ZtX29mZnNldF96ZXh0IiwgSW5zZXJ0QmVmb3JlKTsKLSsjZWxzZQot ICAgICAgICAgT2Zmc2V0cywgbGx2bTo6VmVjdG9yVHlwZTo6Z2V0KExMVk1UeXBlczo6SW50NjRU eXBlLCBPZmZzZXRzLT5nZXRUeXBlKCktPmdldFZlY3Rvck51bUVsZW1lbnRzKCkpLAotICAgICAg ICAgInN2bV9vZmZzZXRfemV4dCIsIEluc2VydEJlZm9yZSk7Ci0rI2VuZGlmCi0gCi0gICAgIGlm ICghbGx2bTo6aXNhPGxsdm06OkNvbnN0YW50UG9pbnRlck51bGw+KFB0cikpIHsKLSAgICAgICAg IC8vIENhc3QgcHRyIHRvIGludDY0Ci1AQCAtNjUyMCwxMyArNjU1NywzMSBAQCBsbHZtOjpWYWx1 ZSAqRml4QWRkcmVzc1NwYWNlOjpjYWxjdWxhdGVHYXRoZXJTY2F0dGVyQWRkcmVzcyhsbHZtOjpW YWx1ZSAqUHRyLCBsbAotIAotICAgICAgICAgLy8gVmVjdG9yaXplIHB0cgotICAgICAgICAgbGx2 bTo6VmFsdWUgKnVuZGVmSW5zZXJ0VmFsdWUgPQotKyNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJ U1BDX0xMVk1fMTFfMAotKyAgICAgICAgICAgIGxsdm06OlVuZGVmVmFsdWU6OmdldChsbHZtOjpG aXhlZFZlY3RvclR5cGU6OmdldCgKLSsgICAgICAgICAgICAgICAgTExWTVR5cGVzOjpJbnQ2NFR5 cGUsIGxsdm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KGFkZHJlc3NUeXBlKS0+Z2V0TnVt RWxlbWVudHMoKSkpOwotKyNlbHNlCi0gICAgICAgICAgICAgbGx2bTo6VW5kZWZWYWx1ZTo6Z2V0 KGxsdm06OlZlY3RvclR5cGU6OmdldChMTFZNVHlwZXM6OkludDY0VHlwZSwgYWRkcmVzc1R5cGUt PmdldFZlY3Rvck51bUVsZW1lbnRzKCkpKTsKLSsjZW5kaWYKLSAgICAgICAgIGFkZHJlc3MgPSBs bHZtOjpJbnNlcnRFbGVtZW50SW5zdDo6Q3JlYXRlKHVuZGVmSW5zZXJ0VmFsdWUsIGFkZHJlc3Ms IExMVk1JbnQzMigwKSwgInN2bV9wdHJfaWVpIiwgSW5zZXJ0QmVmb3JlKTsKLSAgICAgICAgIGxs dm06OkNvbnN0YW50ICp6ZXJvVmVjID0gbGx2bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0KAot KyNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMV8wCi0gICAgICAgICAgICAgYWRk cmVzc1R5cGUtPmdldFZlY3Rvck51bUVsZW1lbnRzKCksCi0rI2VsaWYgSVNQQ19MTFZNX1ZFUlNJ T04gPT0gSVNQQ19MTFZNXzExXzAKLSsgICAgICAgICAgICB7bGx2bTo6ZHluX2Nhc3Q8bGx2bTo6 VmVjdG9yVHlwZT4oYWRkcmVzc1R5cGUpLT5nZXROdW1FbGVtZW50cygpLCBmYWxzZX0sCi0rI2Vs c2UKLSsgICAgICAgIGxsdm06OkVsZW1lbnRDb3VudDo6Z2V0KAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6Rml4ZWRWZWN0b3JUeXBlPihhZGRy ZXNzVHlwZS0+Z2V0TnVtRWxlbWVudHMoKSwgZmFsc2UpLAotKyNlbmRpZgotICAgICAgICAgICAg IGxsdm06OkNvbnN0YW50OjpnZXROdWxsVmFsdWUobGx2bTo6VHlwZTo6Z2V0SW50MzJUeShJbnNl cnRCZWZvcmUtPmdldENvbnRleHQoKSkpKTsKLSsKLSAgICAgICAgIGxsdm06OlZhbHVlICp1bmRl ZlNodWZmbGVWYWx1ZSA9Ci0rI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMV8w Ci0rICAgICAgICAgICAgbGx2bTo6VW5kZWZWYWx1ZTo6Z2V0KGxsdm06OkZpeGVkVmVjdG9yVHlw ZTo6Z2V0KAotKyAgICAgICAgICAgICAgICBMTFZNVHlwZXM6OkludDY0VHlwZSwgbGx2bTo6ZHlu X2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4oYWRkcmVzc1R5cGUpLT5nZXROdW1FbGVtZW50cygpKSk7 Ci0rI2Vsc2UKLSAgICAgICAgICAgICBsbHZtOjpVbmRlZlZhbHVlOjpnZXQobGx2bTo6VmVjdG9y VHlwZTo6Z2V0KExMVk1UeXBlczo6SW50NjRUeXBlLCBhZGRyZXNzVHlwZS0+Z2V0VmVjdG9yTnVt RWxlbWVudHMoKSkpOwotKyNlbmRpZgotICAgICAgICAgYWRkcmVzcyA9IG5ldyBsbHZtOjpTaHVm ZmxlVmVjdG9ySW5zdChhZGRyZXNzLCB1bmRlZlNodWZmbGVWYWx1ZSwgemVyb1ZlYywgInN2bV9w dHJfc3ZpIiwgSW5zZXJ0QmVmb3JlKTsKLSAKLSAgICAgICAgIC8vIENhbGN1bGF0ZSBhZGRyZXNz Ci1AQCAtNjU1Myw5ICs2NjA4LDEyIEBAIGxsdm06Okluc3RydWN0aW9uICpGaXhBZGRyZXNzU3Bh Y2U6OnByb2Nlc3NWZWN0b3JMb2FkKGxsdm06OkxvYWRJbnN0ICpMSSkgewotICAgICBpZiAocmV0 VHlwZS0+Z2V0U2NhbGFyVHlwZSgpLT5pc1BvaW50ZXJUeSgpKSB7Ci0gICAgICAgICBpc1B0ckxv YWQgPSB0cnVlOwotICAgICAgICAgYXV0byBzY2FsYXJUeXBlID0gZy0+dGFyZ2V0LT5pczMyQml0 KCkgPyBMTFZNVHlwZXM6OkludDMyVHlwZSA6IExMVk1UeXBlczo6SW50NjRUeXBlOwotKyNpZiBJ U1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFfMAotKyAgICAgICAgcmV0VHlwZSA9IGxs dm06OkZpeGVkVmVjdG9yVHlwZTo6Z2V0KHNjYWxhclR5cGUsIGxsdm06OmR5bl9jYXN0PGxsdm06 OlZlY3RvclR5cGU+KHJldFR5cGUpLT5nZXROdW1FbGVtZW50cygpKTsKLSsjZWxzZQotICAgICAg ICAgcmV0VHlwZSA9IGxsdm06OlZlY3RvclR5cGU6OmdldChzY2FsYXJUeXBlLCByZXRUeXBlLT5n ZXRWZWN0b3JOdW1FbGVtZW50cygpKTsKLSsjZW5kaWYKLSAgICAgfQotLQotICAgICBsbHZtOjpJ bnN0cnVjdGlvbiAqcmVzID0gbEdlblhMb2FkSW5zdChwdHIsIHJldFR5cGUsIGxsdm06OmR5bl9j YXN0PGxsdm06Okluc3RydWN0aW9uPihMSSkpOwotICAgICBBc3NlcnQocmVzKTsKLSAKLUBAIC02 NTgwLDExICs2NjM4LDE2IEBAIGxsdm06Okluc3RydWN0aW9uICpGaXhBZGRyZXNzU3BhY2U6OnBy b2Nlc3NTVk1WZWN0b3JMb2FkKGxsdm06Okluc3RydWN0aW9uICpDSSkKLSAgICAgcHRyID0gbmV3 IGxsdm06OkludFRvUHRySW5zdChwdHIsIGxsdm06OlBvaW50ZXJUeXBlOjpnZXQocmV0VHlwZSwg MCksIENJLT5nZXROYW1lKCkgKyAiX2ludHRvcHRyIiwgQ0kpOwotICAgICBsbHZtOjpJbnN0cnVj dGlvbiAqbG9hZEluc3QgPSBOVUxMOwotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xM Vk1fMTFfMAotLSAgICBsb2FkSW5zdCA9IG5ldyBsbHZtOjpMb2FkSW5zdChsbHZtOjpkeW5fY2Fz dDxsbHZtOjpQb2ludGVyVHlwZT4ocHRyLT5nZXRUeXBlKCkpLT5nZXRQb2ludGVyRWxlbWVudFR5 cGUoKSwgbG9hZEluc3QsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENJLT5n ZXROYW1lKCksIChsbHZtOjpJbnN0cnVjdGlvbiAqKU5VTEwpOwotKyAgICBsb2FkSW5zdCA9IG5l dyBsbHZtOjpMb2FkSW5zdChsbHZtOjpkeW5fY2FzdDxsbHZtOjpQb2ludGVyVHlwZT4ocHRyLT5n ZXRUeXBlKCkpLT5nZXRQb2ludGVyRWxlbWVudFR5cGUoKSwgcHRyLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBDSS0+Z2V0TmFtZSgpLCBmYWxzZSAvKiBub3Qgdm9sYXRpbGUg Ki8sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06Ok1heWJlQWxpZ24o Zy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JBbGlnbm1lbnQoKSkudmFsdWVPck9uZSgpLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGx2bTo6SW5zdHJ1Y3Rpb24gKilOVUxM KTsKLSAjZWxzZQotLSAgICBsb2FkSW5zdCA9IG5ldyBsbHZtOjpMb2FkSW5zdChwdHIsIENJLT5n ZXROYW1lKCksIChsbHZtOjpJbnN0cnVjdGlvbiAqKU5VTEwpOwotKyAgICBsb2FkSW5zdCA9IG5l dyBsbHZtOjpMb2FkSW5zdChwdHIsIENJLT5nZXROYW1lKCksIGZhbHNlLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpNYXliZUFsaWduKGctPnRhcmdldC0+Z2V0TmF0 aXZlVmVjdG9yQWxpZ25tZW50KCkpLnZhbHVlT3JPbmUoKSwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGxsdm06Okluc3RydWN0aW9uICopTlVMTCk7Ci0gI2VuZGlmCi0rCi0g ICAgIEFzc2VydChsb2FkSW5zdCk7Ci0gICAgIHJldHVybiBsb2FkSW5zdDsKLSB9Ci1AQCAtNjYw Niw3ICs2NjY5LDExIEBAIGxsdm06Okluc3RydWN0aW9uICpGaXhBZGRyZXNzU3BhY2U6OnByb2Nl c3NWZWN0b3JTdG9yZShsbHZtOjpTdG9yZUluc3QgKlNJKSB7Ci0gICAgIC8vIE5vdGU6IGl0IGRv ZXNuJ3QgbG9vayBsaWtlIGEgbm9ybWFsIGNhc2UgZm9yIEdlblggdGFyZ2V0Ci0gICAgIGlmICh2 YWxUeXBlLT5nZXRTY2FsYXJUeXBlKCktPmlzUG9pbnRlclR5KCkpIHsKLSAgICAgICAgIGF1dG8g c2NhbGFyVHlwZSA9IGctPnRhcmdldC0+aXMzMkJpdCgpID8gTExWTVR5cGVzOjpJbnQzMlR5cGUg OiBMTFZNVHlwZXM6OkludDY0VHlwZTsKLSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19M TFZNXzExXzAKLSsgICAgICAgIHZhbFR5cGUgPSBsbHZtOjpGaXhlZFZlY3RvclR5cGU6OmdldChz Y2FsYXJUeXBlLCBsbHZtOjpkeW5fY2FzdDxsbHZtOjpWZWN0b3JUeXBlPih2YWxUeXBlKS0+Z2V0 TnVtRWxlbWVudHMoKSk7Ci0rI2Vsc2UKLSAgICAgICAgIHZhbFR5cGUgPSBsbHZtOjpWZWN0b3JU eXBlOjpnZXQoc2NhbGFyVHlwZSwgdmFsVHlwZS0+Z2V0VmVjdG9yTnVtRWxlbWVudHMoKSk7Ci0r I2VuZGlmCi0gICAgICAgICB2YWwgPSBuZXcgbGx2bTo6UHRyVG9JbnRJbnN0KHZhbCwgdmFsVHlw ZSwgInN2bV9zdF92YWxfcHRydG9pbnQiLCBTSSk7Ci0gICAgIH0KLSAKLUBAIC02NjMxLDEyICs2 Njk4LDggQEAgbGx2bTo6SW5zdHJ1Y3Rpb24gKkZpeEFkZHJlc3NTcGFjZTo6cHJvY2Vzc1NWTVZl Y3RvclN0b3JlKGxsdm06Okluc3RydWN0aW9uICpDSSkKLSAgICAgcHRyID0gbmV3IGxsdm06Oklu dFRvUHRySW5zdChwdHIsIGxsdm06OlBvaW50ZXJUeXBlOjpnZXQodmFsVHlwZSwgMCksIENJLT5n ZXROYW1lKCkgKyAiX2ludHRvcHRyIiwgQ0kpOwotIAotICAgICBsbHZtOjpJbnN0cnVjdGlvbiAq c3RvcmVJbnN0ID0gTlVMTDsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEx XzAKLS0gICAgbG9hZEluc3QgPSBuZXcgbGx2bTo6U3RvcmVJbnN0KHZhbCwgbGx2bTo6ZHluX2Nh c3Q8bGx2bTo6UG9pbnRlclR5cGU+KHB0ci0+Z2V0VHlwZSgpKS0+Z2V0UG9pbnRlckVsZW1lbnRU eXBlKCksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZUluc3QsIENJ LT5nZXROYW1lKCksIChsbHZtOjpJbnN0cnVjdGlvbiAqKU5VTEwpOwotLSNlbHNlCi0tICAgIHN0 b3JlSW5zdCA9IG5ldyBsbHZtOjpTdG9yZUluc3QodmFsLCBwdHIsIChsbHZtOjpJbnN0cnVjdGlv biAqKU5VTEwpOwotLSNlbmRpZgotKyAgICBzdG9yZUluc3QgPSBuZXcgbGx2bTo6U3RvcmVJbnN0 KHZhbCwgcHRyLCAobGx2bTo6SW5zdHJ1Y3Rpb24gKilOVUxMLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGxsdm06Ok1heWJlQWxpZ24oZy0+dGFyZ2V0LT5nZXROYXRpdmVW ZWN0b3JBbGlnbm1lbnQoKSkudmFsdWVPck9uZSgpKTsKLSAgICAgQXNzZXJ0KHN0b3JlSW5zdCk7 Ci0gICAgIHJldHVybiBzdG9yZUluc3Q7Ci0gfQotQEAgLTY2NDUsMTUgKzY3MDgsMTggQEAgbGx2 bTo6SW5zdHJ1Y3Rpb24gKkZpeEFkZHJlc3NTcGFjZTo6Y3JlYXRlSW50OFdyUmVnaW9uKGxsdm06 OlZhbHVlICpWYWwsIGxsdm06OlYKLSAgICAgaW50IHdpZHRoID0gZy0+dGFyZ2V0LT5nZXRWZWN0 b3JXaWR0aCgpOwotIAotICAgICBsbHZtOjpWYWx1ZSAqQXJnc1s4XTsKLS0KLSsjaWYgSVNQQ19M TFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzExXzAKLSsgICAgQXJnc1swXSA9IGxsdm06OlVuZGVm VmFsdWU6OmdldChsbHZtOjpGaXhlZFZlY3RvclR5cGU6OmdldChMTFZNVHlwZXM6OkludDhUeXBl LCB3aWR0aCAqIDQpKTsgLy8gb2xkIHZhbHVlCi0rI2Vsc2UKLSAgICAgQXJnc1swXSA9IGxsdm06 OlVuZGVmVmFsdWU6OmdldChsbHZtOjpWZWN0b3JUeXBlOjpnZXQoTExWTVR5cGVzOjpJbnQ4VHlw ZSwgd2lkdGggKiA0KSk7IC8vIG9sZCB2YWx1ZQotLSAgICBBcmdzWzFdID0gVmFsOyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLy8gdmFsdWUgdG8gc3RvcmUKLS0gICAgQXJnc1syXSA9IGxsdm06OkNvbnN0YW50 SW50OjpnZXQoTExWTVR5cGVzOjpJbnQzMlR5cGUsIDApOyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8vIHZzdHJpZGUKLS0gICAgQXJnc1szXSA9IGxsdm06OkNvbnN0YW50SW50OjpnZXQo TExWTVR5cGVzOjpJbnQzMlR5cGUsIHdpZHRoKTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8v IHdpZHRoCi0tICAgIEFyZ3NbNF0gPSBsbHZtOjpDb25zdGFudEludDo6Z2V0KExMVk1UeXBlczo6 SW50MzJUeXBlLCA0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdHJpZGUKLS0g ICAgQXJnc1s1XSA9IGxsdm06OkNvbnN0YW50SW50OjpnZXQoTExWTVR5cGVzOjpJbnQxNlR5cGUs IDApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mZnNldHMKLS0gICAgQXJnc1s2 XSA9IGxsdm06OkNvbnN0YW50SW50OjpnZXQoTExWTVR5cGVzOjpJbnQzMlR5cGUsIDApOyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBhcmVudCB3aWR0aCAoaWdub3JlZCkKLS0gICAg QXJnc1s3XSA9IE1hc2s7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1hc2sKLSsjZW5kaWYKLSsgICAgQXJn c1sxXSA9IFZhbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLy8gdmFsdWUgdG8gc3RvcmUKLSsgICAgQXJnc1syXSA9IGxsdm06OkNvbnN0YW50SW50Ojpn ZXQoTExWTVR5cGVzOjpJbnQzMlR5cGUsIDApOyAgICAgLy8gdnN0cmlkZQotKyAgICBBcmdzWzNd ID0gbGx2bTo6Q29uc3RhbnRJbnQ6OmdldChMTFZNVHlwZXM6OkludDMyVHlwZSwgd2lkdGgpOyAv LyB3aWR0aAotKyAgICBBcmdzWzRdID0gbGx2bTo6Q29uc3RhbnRJbnQ6OmdldChMTFZNVHlwZXM6 OkludDMyVHlwZSwgNCk7ICAgICAvLyBzdHJpZGUKLSsgICAgQXJnc1s1XSA9IGxsdm06OkNvbnN0 YW50SW50OjpnZXQoTExWTVR5cGVzOjpJbnQxNlR5cGUsIDApOyAgICAgLy8gb2Zmc2V0cwotKyAg ICBBcmdzWzZdID0gbGx2bTo6Q29uc3RhbnRJbnQ6OmdldChMTFZNVHlwZXM6OkludDMyVHlwZSwg MCk7ICAgICAvLyBwYXJlbnQgd2lkdGggKGlnbm9yZWQpCi0rICAgIEFyZ3NbN10gPSBNYXNrOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1hc2sKLSAK LSAgICAgbGx2bTo6VHlwZSAqVHlzWzRdOwotIAotQEAgLTY3MDgsNyArNjc3NCwxMiBAQCBsbHZt OjpJbnN0cnVjdGlvbiAqRml4QWRkcmVzc1NwYWNlOjpwcm9jZXNzR2F0aGVyU2NhdHRlclByaXZh dGUobGx2bTo6Q2FsbEluc3QgKgotICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gCi0gICAgIGxsdm06 OlZhbHVlICphZGRyZXNzID0gY2FsY3VsYXRlR2F0aGVyU2NhdHRlckFkZHJlc3MocHRyLCBvZmZz ZXRzLCBDSSk7Ci0rI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMV8wCi0rICAg IGxsdm06OlR5cGUgKmk4VmVjVHlwZSA9IGxsdm06OkZpeGVkVmVjdG9yVHlwZTo6Z2V0KExMVk1U eXBlczo6SW50OFR5cGUsIHdpZHRoICogNCk7Ci0rI2Vsc2UKLSAgICAgbGx2bTo6VHlwZSAqaThW ZWNUeXBlID0gbGx2bTo6VmVjdG9yVHlwZTo6Z2V0KExMVk1UeXBlczo6SW50OFR5cGUsIHdpZHRo ICogNCk7Ci0rI2VuZGlmCi0rCi0gICAgIGJvb2wgaXNJbnQ4ID0gKHZhbHVlLT5nZXRUeXBlKCkt PmdldFNjYWxhclR5cGUoKSA9PSBMTFZNVHlwZXM6OkludDhUeXBlKTsKLSAKLSAgICAgQXNzZXJ0 KGFkZHJlc3MgJiYgIkJhZCBnYXRoZXIvc2NhdHRlciBhZGRyZXNzISIpOwpkaWZmIC0tZ2l0IGEv c3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwNi5wYXRjaCBiL3NyY3BrZ3MvaXNwYy9wYXRj aGVzL2xsdm0xMi0wMDYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4Mjll YTQ4MzkxZS4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0w MDYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjYgKzAsMCBAQAotRnJvbSBiYjNmNDkzZDFm YmQ0NWM3OWUxZDlkZWU2N2EwNDMwYmEzMTNlYWFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQot RnJvbTogQXJpbmEgTmVzaGx5YWV2YSA8YXJpbmEubmVzaGx5YWV2YUBpbnRlbC5jb20+Ci1EYXRl OiBUdWUsIDE5IEphbiAyMDIxIDExOjA3OjMzIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeGVk IGlmZGVmcyBmb3IgTExWTV8xMQotCi0tLS0KLSBzcmMvY3R4LmNwcCB8ICA2ICsrKy0tLQotIHNy Yy9vcHQuY3BwIHwgMTggKysrKysrKysrLS0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMiBp bnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jdHguY3Bw IGIvc3JjL2N0eC5jcHAKLWluZGV4IDJhNzJlNjgzNy4uNTI3YTAyZjMwIDEwMDY0NAotLS0tIGEv c3JjL2N0eC5jcHAKLSsrKyBiL3NyYy9jdHguY3BwCi1AQCAtMTY5MSw3ICsxNjkxLDcgQEAgbGx2 bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OlNtZWFyVW5pZm9ybShsbHZtOjpWYWx1ZSAq dmFsdWUsIGNvbnN0IGxsdm06OlQKLSAgICAgaWYgKGxsdm06OkNvbnN0YW50ICpjb25zdF92YWwg PSBsbHZtOjpkeW5fY2FzdDxsbHZtOjpDb25zdGFudD4odmFsdWUpKSB7Ci0gI2lmIElTUENfTExW TV9WRVJTSU9OIDwgSVNQQ19MTFZNXzExXzAKLSAgICAgICAgIHJldCA9IGxsdm06OkNvbnN0YW50 VmVjdG9yOjpnZXRTcGxhdChnLT50YXJnZXQtPmdldFZlY3RvcldpZHRoKCksIGNvbnN0X3ZhbCk7 Ci0tI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04gPT0gSVNQQ19MTFZNXzExXzAKLSsjZWxpZiBJU1BD X0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMl8wCi0gICAgICAgICByZXQgPQotICAgICAgICAg ICAgIGxsdm06OkNvbnN0YW50VmVjdG9yOjpnZXRTcGxhdCh7c3RhdGljX2Nhc3Q8dW5zaWduZWQg aW50PihnLT50YXJnZXQtPmdldFZlY3RvcldpZHRoKCkpLCBmYWxzZX0sIGNvbnN0X3ZhbCk7Ci0g I2Vsc2UgLy8gTExWTSAxMi4wKwotQEAgLTMxNDgsNyArMzE0OCw3IEBAIGxsdm06OlZhbHVlICpG dW5jdGlvbkVtaXRDb250ZXh0OjpCcm9hZGNhc3RWYWx1ZShsbHZtOjpWYWx1ZSAqdiwgbGx2bTo6 VHlwZSAqdmVjCi0gI2lmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzExXzAKLSAgICAg bGx2bTo6Q29uc3RhbnQgKnplcm9WZWMgPSBsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQo Ci0gICAgICAgICB2ZWNUeXBlLT5nZXRWZWN0b3JOdW1FbGVtZW50cygpLCBsbHZtOjpDb25zdGFu dDo6Z2V0TnVsbFZhbHVlKGxsdm06OlR5cGU6OmdldEludDMyVHkoKmctPmN0eCkpKTsKLS0jZWxp ZiBJU1BDX0xMVk1fVkVSU0lPTiA9PSBJU1BDX0xMVk1fMTFfMAotKyNlbGlmIElTUENfTExWTV9W RVJTSU9OIDwgSVNQQ19MTFZNXzEyXzAKLSAgICAgbGx2bTo6Q29uc3RhbnQgKnplcm9WZWMgPQot ICAgICAgICAgbGx2bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0KHtzdGF0aWNfY2FzdDx1bnNp Z25lZCBpbnQ+KHR5LT5nZXROdW1FbGVtZW50cygpKSwgZmFsc2V9LAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OkNvbnN0YW50OjpnZXROdWxsVmFsdWUobGx2 bTo6VHlwZTo6Z2V0SW50MzJUeSgqZy0+Y3R4KSkpOwotQEAgLTM2ODgsNyArMzY4OCw3IEBAIGxs dm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpHZW5YU2ltZENGUHJlZGljYXRlKGxsdm06 OlZhbHVlICp2YWx1ZSwgbGx2bTo6Ci0gI2lmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZN XzExXzAKLSAgICAgICAgIGRlZmF1bHRzID0gbGx2bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0 KHZ0LT5nZXRWZWN0b3JOdW1FbGVtZW50cygpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6Q29uc3RhbnQ6OmdldE51bGxWYWx1ZSh2dC0+ Z2V0RWxlbWVudFR5cGUoKSkpOwotLSNlbGlmIElTUENfTExWTV9WRVJTSU9OID09IElTUENfTExW TV8xMV8wCi0rI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1fMTJfMAotICAgICAg ICAgZGVmYXVsdHMgPSBsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQoe3N0YXRpY19jYXN0 PHVuc2lnbmVkIGludD4odnQtPmdldE51bUVsZW1lbnRzKCkpLCBmYWxzZX0sCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpDb25zdGFudDo6 Z2V0TnVsbFZhbHVlKHZ0LT5nZXRFbGVtZW50VHlwZSgpKSk7Ci0gI2Vsc2UKLWRpZmYgLS1naXQg YS9zcmMvb3B0LmNwcCBiL3NyYy9vcHQuY3BwCi1pbmRleCAxNzg5Yjg0NzYuLjNmZjE5MWEwYSAx MDA2NDQKLS0tLSBhL3NyYy9vcHQuY3BwCi0rKysgYi9zcmMvb3B0LmNwcAotQEAgLTEwNDUsNyAr MTA0NSw3IEBAIGJvb2wgSW50cmluc2ljc09wdDo6cnVuT25CYXNpY0Jsb2NrKGxsdm06OkJhc2lj QmxvY2sgJmJiKSB7Ci0gICAgICAgICAgICAgICAgICAgICBhbGlnbiA9IGctPnRhcmdldC0+Z2V0 TmF0aXZlVmVjdG9yQWxpZ25tZW50KCk7Ci0gICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg ICAgICAgICAgICAgIGFsaWduID0gY2FsbEluc3QtPmdldENhbGxlZEZ1bmN0aW9uKCkgPT0gYXZ4 TWFza2VkTG9hZDMyID8gNCA6IDg7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID09IElTUENfTExW TV8xMF8wCi0rI2lmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzExXzAKLSAgICAgICAg ICAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmxvYWRJbnN0ID0KLSAgICAgICAgICAgICAgICAg ICAgIG5ldyBsbHZtOjpMb2FkSW5zdChjYXN0UHRyLCBsbHZtOjpUd2luZShjYWxsSW5zdC0+Z2V0 QXJnT3BlcmFuZCgwKS0+Z2V0TmFtZSgpKSArICJfbG9hZCIsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZmFsc2UgLyogbm90IHZvbGF0aWxlICovLCBsbHZtOjpNYXli ZUFsaWduKGFsaWduKSwgKGxsdm06Okluc3RydWN0aW9uICopTlVMTCk7Ci1AQCAtMTQ3Miw3ICsx NDcyLDcgQEAgc3RhdGljIGxsdm06OlZhbHVlICpsR2V0QmFzZVB0ckFuZE9mZnNldHMobGx2bTo6 VmFsdWUgKnB0cnMsIGxsdm06OlZhbHVlICoqb2Zmc2UKLSAgICAgICAgICAgICAgICAgICAgIGxs dm06OlZhbHVlICp6ZXJvTWFzayA9Ci0gI2lmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZN XzExXzAKLSAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0 U3BsYXQoY3YtPmdldFR5cGUoKS0+Z2V0VmVjdG9yTnVtRWxlbWVudHMoKSwKLS0jZWxpZiBJU1BD X0xMVk1fVkVSU0lPTiA9PSBJU1BDX0xMVk1fMTFfMAotKyNlbGlmIElTUENfTExWTV9WRVJTSU9O IDwgSVNQQ19MTFZNXzEyXzAKLSAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpDb25zdGFu dFZlY3Rvcjo6Z2V0U3BsYXQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtsbHZtOjpk eW5fY2FzdDxsbHZtOjpWZWN0b3JUeXBlPihjdi0+Z2V0VHlwZSgpKS0+Z2V0TnVtRWxlbWVudHMo KSwgZmFsc2V9LAotICNlbHNlIC8vIExMVk0gMTIuMCsKLUBAIC0xNDk1LDcgKzE0OTUsNyBAQCBz dGF0aWMgbGx2bTo6VmFsdWUgKmxHZXRCYXNlUHRyQW5kT2Zmc2V0cyhsbHZtOjpWYWx1ZSAqcHRy cywgbGx2bTo6VmFsdWUgKipvZmZzZQotICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OlZh bHVlICp6ZXJvTWFzayA9IGxsdm06OkNvbnN0YW50VmVjdG9yOjpnZXRTcGxhdCgKLSAjaWYgSVNQ Q19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1fMTFfMAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBib3BfdmFyX3R5cGUtPmdldFZlY3Rvck51bUVsZW1lbnRzKCksCi0tI2VsaWYgSVNQQ19M TFZNX1ZFUlNJT04gPT0gSVNQQ19MTFZNXzExXzAKLSsjZWxpZiBJU1BDX0xMVk1fVkVSU0lPTiA8 IElTUENfTExWTV8xMl8wCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtsbHZtOjpkeW5f Y2FzdDxsbHZtOjpWZWN0b3JUeXBlPihib3BfdmFyX3R5cGUpLT5nZXROdW1FbGVtZW50cygpLCBm YWxzZX0sCi0gI2Vsc2UgLy8gTExWTSAxMi4wKwotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBsbHZtOjpFbGVtZW50Q291bnQ6OmdldCgKLUBAIC0yODAzLDcgKzI4MDMsNyBAQCBzdGF0aWMg Ym9vbCBsR1NUb0xvYWRTdG9yZShsbHZtOjpDYWxsSW5zdCAqY2FsbEluc3QpIHsKLSAgICAgICAg ICAgICBsbHZtOjpWYWx1ZSAqemVyb01hc2sgPQotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElT UENfTExWTV8xMV8wCi0gICAgICAgICAgICAgICAgIGxsdm06OkNvbnN0YW50VmVjdG9yOjpnZXRT cGxhdChjYWxsSW5zdC0+Z2V0VHlwZSgpLT5nZXRWZWN0b3JOdW1FbGVtZW50cygpLAotLSNlbGlm IElTUENfTExWTV9WRVJTSU9OID09IElTUENfTExWTV8xMV8wCi0rI2VsaWYgSVNQQ19MTFZNX1ZF UlNJT04gPCBJU1BDX0xMVk1fMTJfMAotICAgICAgICAgICAgICAgICBsbHZtOjpDb25zdGFudFZl Y3Rvcjo6Z2V0U3BsYXQoCi0gICAgICAgICAgICAgICAgICAgICB7bGx2bTo6ZHluX2Nhc3Q8bGx2 bTo6VmVjdG9yVHlwZT4oY2FsbEluc3QtPmdldFR5cGUoKSktPmdldE51bUVsZW1lbnRzKCksIGZh bHNlfSwKLSAKLUBAIC0zMTAwLDcgKzMxMDAsNyBAQCBzdGF0aWMgYm9vbCBsSW1wcm92ZU1hc2tl ZExvYWQobGx2bTo6Q2FsbEluc3QgKmNhbGxJbnN0LCBsbHZtOjpCYXNpY0Jsb2NrOjppdGVyYQot ICAgICAgICAgewotICAgICAgICAgICAgIGxsdm06OlR5cGUgKnB0clR5cGUgPSBsbHZtOjpQb2lu dGVyVHlwZTo6Z2V0KGNhbGxJbnN0LT5nZXRUeXBlKCksIDApOwotICAgICAgICAgICAgIHB0ciA9 IG5ldyBsbHZtOjpCaXRDYXN0SW5zdChwdHIsIHB0clR5cGUsICJwdHJfY2FzdF9mb3JfbG9hZCIs IGNhbGxJbnN0KTsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPT0gSVNQQ19MTFZNXzEwXzAKLSsj aWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1fMTFfMAotICAgICAgICAgICAgIGxvYWQg PSBuZXcgbGx2bTo6TG9hZEluc3QoCi0gICAgICAgICAgICAgICAgIHB0ciwgY2FsbEluc3QtPmdl dE5hbWUoKSwgZmFsc2UgLyogbm90IHZvbGF0aWxlICovLAotICAgICAgICAgICAgICAgICBsbHZt OjpNYXliZUFsaWduKGctPm9wdC5mb3JjZUFsaWduZWRNZW1vcnkgPyBnLT50YXJnZXQtPmdldE5h dGl2ZVZlY3RvckFsaWdubWVudCgpIDogaW5mby0+YWxpZ24pCi1AQCAtMzQ1OSw3ICszNDU5LDcg QEAgbGx2bTo6VmFsdWUgKmxHRVBBbmRMb2FkKGxsdm06OlZhbHVlICpiYXNlUHRyLCBpbnQ2NF90 IG9mZnNldCwgaW50IGFsaWduLCBsbHZtOjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2 bTo6VHlwZSAqdHlwZSkgewotICAgICBsbHZtOjpWYWx1ZSAqcHRyID0gbEdFUEluc3QoYmFzZVB0 ciwgTExWTUludDY0KG9mZnNldCksICJuZXdfYmFzZSIsIGluc2VydEJlZm9yZSk7Ci0gICAgIHB0 ciA9IG5ldyBsbHZtOjpCaXRDYXN0SW5zdChwdHIsIGxsdm06OlBvaW50ZXJUeXBlOjpnZXQodHlw ZSwgMCksICJwdHJfY2FzdCIsIGluc2VydEJlZm9yZSk7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9O ID09IElTUENfTExWTV8xMF8wCi0rI2lmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzEx XzAKLSAgICAgcmV0dXJuIG5ldyBsbHZtOjpMb2FkSW5zdChwdHIsICJnYXRoZXJfbG9hZCIsIGZh bHNlIC8qIG5vdCB2b2xhdGlsZSAqLywgbGx2bTo6TWF5YmVBbGlnbihhbGlnbiksIGluc2VydEJl Zm9yZSk7Ci0gI2Vsc2UgLy8gTExWTSAxMS4wKwotICAgICByZXR1cm4gbmV3IGxsdm06OkxvYWRJ bnN0KGxsdm06OmR5bl9jYXN0PGxsdm06OlBvaW50ZXJUeXBlPihwdHItPmdldFR5cGUoKSktPmdl dFBvaW50ZXJFbGVtZW50VHlwZSgpLCBwdHIsCi1AQCAtNjE4Myw3ICs2MTgzLDcgQEAgYm9vbCBS ZXBsYWNlTExWTUludHJpbnNpY3M6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICZi YikgewotICAgICAgICAgICAgICAgICBBcmdzLnB1c2hfYmFjayhsbHZtOjpDb25zdGFudFZlY3Rv cjo6Z2V0U3BsYXQoCi0gI2lmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzExXzAKLSAg ICAgICAgICAgICAgICAgICAgIGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yV2lkdGgoKSwKLS0j ZWxpZiBJU1BDX0xMVk1fVkVSU0lPTiA9PSBJU1BDX0xMVk1fMTFfMAotKyNlbGlmIElTUENfTExW TV9WRVJTSU9OIDwgSVNQQ19MTFZNXzEyXzAKLSAgICAgICAgICAgICAgICAgICAgIHtzdGF0aWNf Y2FzdDx1bnNpZ25lZCBpbnQ+KGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yV2lkdGgoKSksIGZh bHNlfSwKLSAjZWxzZSAvLyBMTFZNIDEyLjArCi0gICAgICAgICAgICAgICAgICAgICBsbHZtOjpF bGVtZW50Q291bnQ6OmdldChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGctPnRhcmdldC0+Z2V0 TmF0aXZlVmVjdG9yV2lkdGgoKSksIGZhbHNlKSwKLUBAIC02MTk1LDcgKzYxOTUsNyBAQCBib29s IFJlcGxhY2VMTFZNSW50cmluc2ljczo6cnVuT25CYXNpY0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sg JmJiKSB7Ci0gICAgICAgICAgICAgICAgIGxsdm06OlZhbHVlICp6ZXJvTWFzayA9IGxsdm06OkNv bnN0YW50VmVjdG9yOjpnZXRTcGxhdCgKLSAjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xM Vk1fMTFfMAotICAgICAgICAgICAgICAgICAgICAgZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JX aWR0aCgpLAotLSNlbGlmIElTUENfTExWTV9WRVJTSU9OID09IElTUENfTExWTV8xMV8wCi0rI2Vs aWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1fMTJfMAotICAgICAgICAgICAgICAgICAg ICAge3N0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JX aWR0aCgpKSwgZmFsc2V9LAotICNlbHNlIC8vIExMVk0gMTIuMCsKLSAgICAgICAgICAgICAgICAg ICAgIGxsdm06OkVsZW1lbnRDb3VudDo6Z2V0KHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oZy0+ dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JXaWR0aCgpKSwgZmFsc2UpLAotQEAgLTY1NjcsNyArNjU2 Nyw3IEBAIGxsdm06OlZhbHVlICpGaXhBZGRyZXNzU3BhY2U6OmNhbGN1bGF0ZUdhdGhlclNjYXR0 ZXJBZGRyZXNzKGxsdm06OlZhbHVlICpQdHIsIGxsCi0gICAgICAgICBsbHZtOjpDb25zdGFudCAq emVyb1ZlYyA9IGxsdm06OkNvbnN0YW50VmVjdG9yOjpnZXRTcGxhdCgKLSAjaWYgSVNQQ19MTFZN X1ZFUlNJT04gPCBJU1BDX0xMVk1fMTFfMAotICAgICAgICAgICAgIGFkZHJlc3NUeXBlLT5nZXRW ZWN0b3JOdW1FbGVtZW50cygpLAotLSNlbGlmIElTUENfTExWTV9WRVJTSU9OID09IElTUENfTExW TV8xMV8wCi0rI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1fMTJfMAotICAgICAg ICAgICAgIHtsbHZtOjpkeW5fY2FzdDxsbHZtOjpWZWN0b3JUeXBlPihhZGRyZXNzVHlwZSktPmdl dE51bUVsZW1lbnRzKCksIGZhbHNlfSwKLSAjZWxzZQotICAgICAgICAgbGx2bTo6RWxlbWVudENv dW50OjpnZXQoCmRpZmYgLS1naXQgYS9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA3LnBh dGNoIGIvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwNy5wYXRjaApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMWI5NzVmODk2YzdlLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtn cy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwNy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2MCAr MCwwIEBACi1Gcm9tIDYyZjVhNmMzN2JmMjZmYzI1YTdjZjgxODY4MDUyZDM0NzI4NzQ2MTAgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBcmluYSBOZXNobHlhZXZhIDxhcmluYS5uZXNo bHlhZXZhQGludGVsLmNvbT4KLURhdGU6IFR1ZSwgMjMgTWFyIDIwMjEgMjM6MDc6MzAgLTA3MDAK LVN1YmplY3Q6IFtQQVRDSF0gRG8gbm90IGdlbmVyYXRlIGZ1bmN0aW9uIG1hc2sgd2hlbiBpdCBp cyBub3QgcmVxdWlyZWQKLQotLS0tCi0gc3JjL2N0eC5jcHAgICAgICAgICAgICAgICAgICAgIHwg MzkgKysrKysrKysrKysrKystLS0tLS0tCi0gdGVzdHMvbGl0LXRlc3RzL2Z1bGxfbWFzay5pc3Bj IHwgNjMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdl ZCwgOTAgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0 IHRlc3RzL2xpdC10ZXN0cy9mdWxsX21hc2suaXNwYwotCi1kaWZmIC0tZ2l0IGEvc3JjL2N0eC5j cHAgYi9zcmMvY3R4LmNwcAotaW5kZXggNTI3YTAyZjMwLi45ZTc3NWZjNWMgMTAwNjQ0Ci0tLS0g YS9zcmMvY3R4LmNwcAotKysrIGIvc3JjL2N0eC5jcHAKLUBAIC0yMzEsMTAgKzIzMSwxOCBAQCBG dW5jdGlvbkVtaXRDb250ZXh0OjpGdW5jdGlvbkVtaXRDb250ZXh0KEZ1bmN0aW9uICpmdW5jLCBT eW1ib2wgKmZ1blN5bSwgbGx2bTo6RgotICAgICBpbnRlcm5hbE1hc2tQb2ludGVyID0gQWxsb2Nh SW5zdChMTFZNVHlwZXM6Ok1hc2tUeXBlLCAiaW50ZXJuYWxfbWFza19tZW1vcnkiKTsKLSAgICAg U3RvcmVJbnN0KExMVk1NYXNrQWxsT24sIGludGVybmFsTWFza1BvaW50ZXIpOwotIAotLSAgICBm dW5jdGlvbk1hc2tWYWx1ZSA9IExMVk1NYXNrQWxsT247Ci0tCi0tICAgIGZ1bGxNYXNrUG9pbnRl ciA9IEFsbG9jYUluc3QoTExWTVR5cGVzOjpNYXNrVHlwZSwgImZ1bGxfbWFza19tZW1vcnkiKTsK LS0gICAgU3RvcmVJbnN0KExMVk1NYXNrQWxsT24sIGZ1bGxNYXNrUG9pbnRlcik7Ci0rICAgIC8v IElmIHRoZSBmdW5jdGlvbiBkb2Vzbid0IGhhdmUgX19tYXNrIGluIHBhcmFtZXRlcnMsIHRoZXJl IGlzIG5vIG5lZWQgdG8KLSsgICAgLy8gaGF2ZSBmdW5jdGlvbiBtYXNrCi0rICAgIGlmICgoZnVu Yy0+R2V0VHlwZSgpLT5pc0V4cG9ydGVkICYmCi0rICAgICAgICAgKGxmLT5nZXRGdW5jdGlvblR5 cGUoKS0+Z2V0TnVtUGFyYW1zKCkgPT0gZnVuYy0+R2V0VHlwZSgpLT5HZXROdW1QYXJhbWV0ZXJz KCkpKSB8fAotKyAgICAgICAgKGZ1bmMtPkdldFR5cGUoKS0+aXNVbm1hc2tlZCkgfHwgKGZ1bmMt PkdldFR5cGUoKS0+aXNUYXNrKSkgewotKyAgICAgICAgZnVuY3Rpb25NYXNrVmFsdWUgPSBOVUxM OwotKyAgICAgICAgZnVsbE1hc2tQb2ludGVyID0gTlVMTDsKLSsgICAgfSBlbHNlIHsKLSsgICAg ICAgIGZ1bmN0aW9uTWFza1ZhbHVlID0gTExWTU1hc2tBbGxPbjsKLSsgICAgICAgIGZ1bGxNYXNr UG9pbnRlciA9IEFsbG9jYUluc3QoTExWTVR5cGVzOjpNYXNrVHlwZSwgImZ1bGxfbWFza19tZW1v cnkiKTsKLSsgICAgICAgIFN0b3JlSW5zdChMTFZNTWFza0FsbE9uLCBmdWxsTWFza1BvaW50ZXIp OwotKyAgICB9Ci0gCi0gICAgIGJsb2NrRW50cnlNYXNrID0gTlVMTDsKLSAgICAgYnJlYWtMYW5l c1B0ciA9IGNvbnRpbnVlTGFuZXNQdHIgPSBOVUxMOwotQEAgLTM4OSwyMCArMzk3LDI2IEBAIGxs dm06OkJhc2ljQmxvY2sgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkdldEN1cnJlbnRCYXNpY0Jsb2Nr KCkgeyByZXR1cm4gYmJsb2NrOyB9Ci0gCi0gdm9pZCBGdW5jdGlvbkVtaXRDb250ZXh0OjpTZXRD dXJyZW50QmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICpiYikgeyBiYmxvY2sgPSBiYjsgfQot IAotLWxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpHZXRGdW5jdGlvbk1hc2soKSB7 IHJldHVybiBmdW5jdGlvbk1hc2tWYWx1ZTsgfQotK2xsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRD b250ZXh0OjpHZXRGdW5jdGlvbk1hc2soKSB7IHJldHVybiBmdWxsTWFza1BvaW50ZXIgPyBmdW5j dGlvbk1hc2tWYWx1ZSA6IExMVk1NYXNrQWxsT247IH0KLSAKLSBsbHZtOjpWYWx1ZSAqRnVuY3Rp b25FbWl0Q29udGV4dDo6R2V0SW50ZXJuYWxNYXNrKCkgeyByZXR1cm4gTG9hZEluc3QoaW50ZXJu YWxNYXNrUG9pbnRlciwgTlVMTCwgImxvYWRfbWFzayIpOyB9Ci0gCi0gbGx2bTo6VmFsdWUgKkZ1 bmN0aW9uRW1pdENvbnRleHQ6OkdldEZ1bGxNYXNrKCkgewotLSAgICByZXR1cm4gQmluYXJ5T3Bl cmF0b3IobGx2bTo6SW5zdHJ1Y3Rpb246OkFuZCwgR2V0SW50ZXJuYWxNYXNrKCksIGZ1bmN0aW9u TWFza1ZhbHVlLCAiaW50ZXJuYWxfbWFzayZmdW5jdGlvbl9tYXNrIik7Ci0rICAgIHJldHVybiBm dWxsTWFza1BvaW50ZXIgPyBCaW5hcnlPcGVyYXRvcihsbHZtOjpJbnN0cnVjdGlvbjo6QW5kLCBH ZXRJbnRlcm5hbE1hc2soKSwgZnVuY3Rpb25NYXNrVmFsdWUsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50ZXJuYWxfbWFzayZmdW5jdGlvbl9tYXNrIikK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEdldEludGVybmFsTWFzaygpOwotIH0KLSAK LS1sbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6R2V0RnVsbE1hc2tQb2ludGVyKCkg eyByZXR1cm4gZnVsbE1hc2tQb2ludGVyOyB9Ci0rbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENv bnRleHQ6OkdldEZ1bGxNYXNrUG9pbnRlcigpIHsKLSsgICAgcmV0dXJuIGZ1bGxNYXNrUG9pbnRl ciA/IGZ1bGxNYXNrUG9pbnRlciA6IGludGVybmFsTWFza1BvaW50ZXI7Ci0rfQotIAotIHZvaWQg RnVuY3Rpb25FbWl0Q29udGV4dDo6U2V0RnVuY3Rpb25NYXNrKGxsdm06OlZhbHVlICp2YWx1ZSkg ewotLSAgICBmdW5jdGlvbk1hc2tWYWx1ZSA9IHZhbHVlOwotLSAgICBpZiAoYmJsb2NrICE9IE5V TEwpCi0tICAgICAgICBTdG9yZUluc3QoR2V0RnVsbE1hc2soKSwgZnVsbE1hc2tQb2ludGVyKTsK LSsgICAgaWYgKGZ1bGxNYXNrUG9pbnRlciAhPSBOVUxMKSB7Ci0rICAgICAgICBmdW5jdGlvbk1h c2tWYWx1ZSA9IHZhbHVlOwotKyAgICAgICAgaWYgKGJibG9jayAhPSBOVUxMKQotKyAgICAgICAg ICAgIFN0b3JlSW5zdChHZXRGdWxsTWFzaygpLCBmdWxsTWFza1BvaW50ZXIpOwotKyAgICB9Ci0g fQotIAotIHZvaWQgRnVuY3Rpb25FbWl0Q29udGV4dDo6U2V0QmxvY2tFbnRyeU1hc2sobGx2bTo6 VmFsdWUgKnZhbHVlKSB7IGJsb2NrRW50cnlNYXNrID0gdmFsdWU7IH0KLUBAIC00MTAsNyArNDI0 LDggQEAgdm9pZCBGdW5jdGlvbkVtaXRDb250ZXh0OjpTZXRCbG9ja0VudHJ5TWFzayhsbHZtOjpW YWx1ZSAqdmFsdWUpIHsgYmxvY2tFbnRyeU1hc2sKLSB2b2lkIEZ1bmN0aW9uRW1pdENvbnRleHQ6 OlNldEludGVybmFsTWFzayhsbHZtOjpWYWx1ZSAqdmFsdWUpIHsKLSAgICAgU3RvcmVJbnN0KHZh bHVlLCBpbnRlcm5hbE1hc2tQb2ludGVyKTsKLSAgICAgLy8ga2x1ZGdlIHNvIHRoYXQgX19tYXNr IHJldHVybnMgdGhlIHJpZ2h0IHZhbHVlIGluIGlzcGMgY29kZS4KLS0gICAgU3RvcmVJbnN0KEdl dEZ1bGxNYXNrKCksIGZ1bGxNYXNrUG9pbnRlcik7Ci0rICAgIGlmIChmdWxsTWFza1BvaW50ZXIp Ci0rICAgICAgICBTdG9yZUluc3QoR2V0RnVsbE1hc2soKSwgZnVsbE1hc2tQb2ludGVyKTsKLSB9 Ci0gCi0gdm9pZCBGdW5jdGlvbkVtaXRDb250ZXh0OjpTZXRJbnRlcm5hbE1hc2tBbmQobGx2bTo6 VmFsdWUgKm9sZE1hc2ssIGxsdm06OlZhbHVlICp0ZXN0KSB7Ci1AQCAtMTI2NSw3ICsxMjgwLDcg QEAgdm9pZCBGdW5jdGlvbkVtaXRDb250ZXh0OjpDdXJyZW50TGFuZXNSZXR1cm5lZChFeHByICpl eHByLCBib29sIGRvQ29oZXJlbmNlQ2hlY2sKLSAgICAgICAgIC8vIGxhbmVzIGhhdmUgcmV0dXJu ZWQKLSAgICAgICAgIGlmIChkb0NvaGVyZW5jZUNoZWNrKSB7Ci0gICAgICAgICAgICAgLy8gaWYg bmV3UmV0dXJuZWRMYW5lcyA9PSBmdW5jdGlvbk1hc2tWYWx1ZSwgZ2V0IG91dCBvZiBoZXJlIQot LSAgICAgICAgICAgIGxsdm06OlZhbHVlICpjbXAgPSBNYXNrc0FsbEVxdWFsKGZ1bmN0aW9uTWFz a1ZhbHVlLCBuZXdSZXR1cm5lZExhbmVzKTsKLSsgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqY21w ID0gTWFza3NBbGxFcXVhbChHZXRGdW5jdGlvbk1hc2soKSwgbmV3UmV0dXJuZWRMYW5lcyk7Ci0g ICAgICAgICAgICAgbGx2bTo6QmFzaWNCbG9jayAqYkRvUmV0dXJuID0gQ3JlYXRlQmFzaWNCbG9j aygiZG9fcmV0dXJuIik7Ci0gICAgICAgICAgICAgbGx2bTo6QmFzaWNCbG9jayAqYk5vUmV0dXJu ID0gQ3JlYXRlQmFzaWNCbG9jaygibm9fcmV0dXJuIik7Ci0gICAgICAgICAgICAgQnJhbmNoSW5z dChiRG9SZXR1cm4sIGJOb1JldHVybiwgY21wKTsKLWRpZmYgLS1naXQgYS90ZXN0cy9saXQtdGVz dHMvZnVsbF9tYXNrLmlzcGMgYi90ZXN0cy9saXQtdGVzdHMvZnVsbF9tYXNrLmlzcGMKLW5ldyBm aWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAuLmFjMGIwYmNhMwotLS0tIC9kZXYvbnVs bAotKysrIGIvdGVzdHMvbGl0LXRlc3RzL2Z1bGxfbWFzay5pc3BjCi1AQCAtMCwwICsxLDYzIEBA Ci0rLy8gUlVOOiAle2lzcGN9ICVzIC1ESVNQQ19FWFBPUlQgLS1lbWl0LWxsdm0tdGV4dCAtTzAg LS1ub3dyYXAgLW8gJXQubGwKLSsvLyBSVU46IEZpbGVDaGVjayAtLWlucHV0LWZpbGU9JXQubGwg LWNoZWNrLXByZWZpeD1DSEVDS19JU1BDX0VYUE9SVCAlcwotKwotKy8vIFJVTjogJXtpc3BjfSAl cyAtRElTUENfVU5NQVNLRUQgLS1lbWl0LWxsdm0tdGV4dCAtTzAgLS1ub3dyYXAgLW8gJXQubGwK LSsvLyBSVU46IEZpbGVDaGVjayAtLWlucHV0LWZpbGU9JXQubGwgLWNoZWNrLXByZWZpeD1DSEVD S19JU1BDX1VOTUFTS0VEICVzCi0rCi0rLy8gUlVOOiAle2lzcGN9ICVzIC1ESVNQQ19OT1FVQUxJ RiAtLWVtaXQtbGx2bS10ZXh0IC1PMCAtLW5vd3JhcCAtbyAldC5sbAotKy8vIFJVTjogRmlsZUNo ZWNrIC0taW5wdXQtZmlsZT0ldC5sbCAtY2hlY2stcHJlZml4PUNIRUNLX0lTUENfTk9RVUFMSUYg JXMKLSsKLSsvLyBSVU46ICV7aXNwY30gJXMgLURJU1BDX1RBU0sgLS1lbWl0LWxsdm0tdGV4dCAt TzAgLS1ub3dyYXAgLW8gJXQubGwKLSsvLyBSVU46IEZpbGVDaGVjayAtLWlucHV0LWZpbGU9JXQu bGwgLWNoZWNrLXByZWZpeD1DSEVDS19JU1BDX1RBU0sgJXMKLSsKLStzdHJ1Y3QgUGFyYW1ldGVy cyB7Ci0rICAgIGZsb2F0ICp2b3V0OwotKyAgICBpbnQgcGFyYW07Ci0rfTsKLSsKLSsjaWZkZWYg SVNQQ19FWFBPUlQKLSsvLyBDSEVDS19JU1BDX0VYUE9SVDogZGVmaW5lIHZvaWQgQHNpbXBsZV9l eHBvcnRfX18KLSsvLyBDSEVDS19JU1BDX0VYUE9SVDogJWZ1bGxfbWFza19tZW1vcnkgPSBhbGxv Y2EKLSsvLyBDSEVDS19JU1BDX0VYUE9SVDogZGVmaW5lIHZvaWQgQHNpbXBsZV9leHBvcnQoCi0r Ly8gQ0hFQ0tfSVNQQ19FWFBPUlQtTk9UOiAlZnVsbF9tYXNrX21lbW9yeSA9IGFsbG9jYQotK2V4 cG9ydCB2b2lkIHNpbXBsZV9leHBvcnQodm9pZCAqdW5pZm9ybSBfcCkgewotKyAgICBQYXJhbWV0 ZXJzICp1bmlmb3JtIHAgPSAoUGFyYW1ldGVycyAqIHVuaWZvcm0pIF9wOwotKyAgICBpZiAocHJv Z3JhbUluZGV4ID4gcC0+cGFyYW0pCi0rICAgICAgICBwLT52b3V0W3Byb2dyYW1JbmRleF0gPSBw cm9ncmFtQ291bnQgKiBwcm9ncmFtSW5kZXg7Ci0rfQotKyNlbmRpZgotKyNpZmRlZiBJU1BDX1VO TUFTS0VECi0rLy8gQ0hFQ0tfSVNQQ19VTk1BU0tFRDogZGVmaW5lIHZvaWQgQHNpbXBsZV91bm1h c2tlZAotKy8vIENIRUNLX0lTUENfVU5NQVNLRUQtTk9UOiAlZnVsbF9tYXNrX21lbW9yeSA9IGFs bG9jYQotK3VubWFza2VkIHZvaWQgc2ltcGxlX3VubWFza2VkKHZvaWQgKnVuaWZvcm0gX3ApIHsK LSsgICAgUGFyYW1ldGVycyAqdW5pZm9ybSBwID0gKFBhcmFtZXRlcnMgKiB1bmlmb3JtKSBfcDsK LSsgICAgaWYgKHByb2dyYW1JbmRleCA+IHAtPnBhcmFtKQotKyAgICAgICAgcC0+dm91dFtwcm9n cmFtSW5kZXhdID0gcHJvZ3JhbUNvdW50ICogcHJvZ3JhbUluZGV4OwotK30KLSsjZW5kaWYKLSsj aWZkZWYgSVNQQ19OT1FVQUxJRgotKy8vIENIRUNLX0lTUENfTk9RVUFMSUY6IGRlZmluZSB2b2lk IEBzaW1wbGUKLSsvLyBDSEVDS19JU1BDX05PUVVBTElGOiAlZnVsbF9tYXNrX21lbW9yeSA9IGFs bG9jYQotK3ZvaWQgc2ltcGxlKHZvaWQgKnVuaWZvcm0gX3ApIHsKLSsgICAgUGFyYW1ldGVycyAq dW5pZm9ybSBwID0gKFBhcmFtZXRlcnMgKiB1bmlmb3JtKSBfcDsKLSsgICAgaWYgKHByb2dyYW1J bmRleCA+IHAtPnBhcmFtKQotKyAgICAgICAgcC0+dm91dFtwcm9ncmFtSW5kZXhdID0gcHJvZ3Jh bUNvdW50ICogcHJvZ3JhbUluZGV4OwotK30KLSsjZW5kaWYKLSsjaWZkZWYgSVNQQ19UQVNLCi0r Ci0rLy8gQ0hFQ0tfSVNQQ19UQVNLOiBkZWZpbmUgdm9pZCBAc2ltcGxlX3Rhc2sKLSsvLyBDSEVD S19JU1BDX1RBU0stTk9UOiAlZnVsbF9tYXNrX21lbW9yeSA9IGFsbG9jYQotKy8vIENIRUNLX0lT UENfVEFTSzogZGVmaW5lIHZvaWQgQHNpbXBsZV9lbnRyeV9wb2ludF9fCi0rLy8gQ0hFQ0tfSVNQ Q19UQVNLOiAlZnVsbF9tYXNrX21lbW9yeSA9IGFsbG9jYQotKy8vIENIRUNLX0lTUENfVEFTSzog ZGVmaW5lIHZvaWQgQHNpbXBsZV9lbnRyeV9wb2ludCgKLSsvLyBDSEVDS19JU1BDX1RBU0stTk9U OiAlZnVsbF9tYXNrX21lbW9yeSA9IGFsbG9jYQotK3Rhc2sgdm9pZCBzaW1wbGVfdGFzayh2b2lk ICp1bmlmb3JtIF9wKSB7Ci0rICAgIFBhcmFtZXRlcnMgKnVuaWZvcm0gcCA9IChQYXJhbWV0ZXJz ICogdW5pZm9ybSkgX3A7Ci0rICAgIGlmIChwcm9ncmFtSW5kZXggPiBwLT5wYXJhbSkKLSsgICAg ICAgIHAtPnZvdXRbcHJvZ3JhbUluZGV4XSA9IHByb2dyYW1Db3VudCAqIHByb2dyYW1JbmRleDsK LSt9Ci0rZXhwb3J0IHZvaWQgc2ltcGxlX2VudHJ5X3BvaW50KHZvaWQgKnVuaWZvcm0gcGFyYW1l dGVycywgdW5pZm9ybSBpbnQgZGltMCwgdW5pZm9ybSBpbnQgZGltMSwgdW5pZm9ybSBpbnQgZGlt MikgewotKyAgICBsYXVuY2hbZGltMCwgZGltMSwgZGltMl0gc2ltcGxlX3Rhc2socGFyYW1ldGVy cyk7Ci0rfQotKyNlbmRpZgotXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg YS9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA4LnBhdGNoIGIvc3JjcGtncy9pc3BjL3Bh dGNoZXMvbGx2bTEyLTAwOC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg0 MTNkOGI3ODg3Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEy LTAwOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0OSArMCwwIEBACi1Gcm9tIGFmYWQxNDIy N2Q5MjA0YTNjOGE2MjZjYTYwOGY1YjQzYzMyMThmZTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx Ci1Gcm9tOiBBcmluYSBOZXNobHlhZXZhIDxhcmluYS5uZXNobHlhZXZhQGludGVsLmNvbT4KLURh dGU6IFR1ZSwgNCBNYXkgMjAyMSAxMTo0Mzo1MiAtMDcwMAotU3ViamVjdDogW1BBVENIXSBGaXhl ZCBJU1BDIGdlbiBidWlsZCBmb3IgTExWTTEyCi0KLS0tLQotIHNyYy9jdHguY3BwIHwgIDQgKysr KwotIHNyYy9vcHQuY3BwIHwgNDMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25z KC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvY3R4LmNwcCBiL3NyYy9jdHguY3BwCi1pbmRleCAwYzcw NTA1OTEuLmY3ZGMwNjkzOSAxMDA2NDQKLS0tLSBhL3NyYy9jdHguY3BwCi0rKysgYi9zcmMvY3R4 LmNwcAotQEAgLTM3MzgsNyArMzczOCwxMSBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29u dGV4dDo6R2VuWFNpbWRDRkFueShsbHZtOjpWYWx1ZSAqdmFsdWUpIHsKLSAKLSBsbHZtOjpWYWx1 ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6R2VuWFNpbWRDRlByZWRpY2F0ZShsbHZtOjpWYWx1ZSAq dmFsdWUsIGxsdm06OlZhbHVlICpkZWZhdWx0cykgewotICAgICBBc3NlcnRQb3MoY3VycmVudFBv cywgbGx2bTo6aXNhPGxsdm06OlZlY3RvclR5cGU+KHZhbHVlLT5nZXRUeXBlKCkpKTsKLSsjaWYg SVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzExXzAKLSsgICAgbGx2bTo6Rml4ZWRWZWN0 b3JUeXBlICp2dCA9IGxsdm06OmR5bl9jYXN0PGxsdm06OkZpeGVkVmVjdG9yVHlwZT4odmFsdWUt PmdldFR5cGUoKSk7Ci0rI2Vsc2UKLSAgICAgbGx2bTo6VmVjdG9yVHlwZSAqdnQgPSBsbHZtOjpk eW5fY2FzdDxsbHZtOjpWZWN0b3JUeXBlPih2YWx1ZS0+Z2V0VHlwZSgpKTsKLSsjZW5kaWYKLSAg ICAgaWYgKGRlZmF1bHRzID09IE5VTEwpIHsKLSAjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BD X0xMVk1fMTFfMAotICAgICAgICAgZGVmYXVsdHMgPSBsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0 U3BsYXQodnQtPmdldFZlY3Rvck51bUVsZW1lbnRzKCksCi1kaWZmIC0tZ2l0IGEvc3JjL29wdC5j cHAgYi9zcmMvb3B0LmNwcAotaW5kZXggY2VhNGFmYTIzLi40ZTMzZDZiMWEgMTAwNjQ0Ci0tLS0g YS9zcmMvb3B0LmNwcAotKysrIGIvc3JjL29wdC5jcHAKLUBAIC0yOTE2LDkgKzI5MTYsMTMgQEAg c3RhdGljIGxsdm06OkZ1bmN0aW9uICpsR2VuWE1hc2tlZEludDhJbnN0KGxsdm06Okluc3RydWN0 aW9uICppbnN0LCBib29sIGlzU3RvcmUKLSAKLSBzdGF0aWMgbGx2bTo6Q2FsbEluc3QgKmxHZW5Y U3RvcmVJbnN0KGxsdm06OlZhbHVlICp2YWwsIGxsdm06OlZhbHVlICpwdHIsIGxsdm06Okluc3Ry dWN0aW9uICppbnN0KSB7Ci0gICAgIEFzc2VydChnLT50YXJnZXQtPmlzR2VuWFRhcmdldCgpKTsK LSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzExXzAKLSsgICAgQXNzZXJ0KGxs dm06OmlzYTxsbHZtOjpGaXhlZFZlY3RvclR5cGU+KHZhbC0+Z2V0VHlwZSgpKSk7Ci0rICAgIGxs dm06OkZpeGVkVmVjdG9yVHlwZSAqdmFsVmVjVHlwZSA9IGxsdm06OmR5bl9jYXN0PGxsdm06OkZp eGVkVmVjdG9yVHlwZT4odmFsLT5nZXRUeXBlKCkpOwotKyNlbHNlCi0gICAgIEFzc2VydChsbHZt Ojppc2E8bGx2bTo6VmVjdG9yVHlwZT4odmFsLT5nZXRUeXBlKCkpKTsKLS0KLSAgICAgbGx2bTo6 VmVjdG9yVHlwZSAqdmFsVmVjVHlwZSA9IGxsdm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+ KHZhbC0+Z2V0VHlwZSgpKTsKLSsjZW5kaWYKLSAgICAgQXNzZXJ0KGxsdm06OmlzUG93ZXJPZjJf MzIodmFsVmVjVHlwZS0+Z2V0TnVtRWxlbWVudHMoKSkpOwotICAgICBBc3NlcnQodmFsVmVjVHlw ZS0+Z2V0UHJpbWl0aXZlU2l6ZUluQml0cygpIC8gOCA8PSA4ICogT1dPUkQpOwotIAotQEAgLTI5 NDIsOSArMjk0NiwxMyBAQCBzdGF0aWMgbGx2bTo6Q2FsbEluc3QgKmxHZW5YU3RvcmVJbnN0KGxs dm06OlZhbHVlICp2YWwsIGxsdm06OlZhbHVlICpwdHIsIGxsdm06OgotIH0KLSAKLSBzdGF0aWMg bGx2bTo6Q2FsbEluc3QgKmxHZW5YTG9hZEluc3QobGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6VHlw ZSAqcmV0VHlwZSwgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QpIHsKLSsjaWYgSVNQQ19MTFZNX1ZF UlNJT04gPj0gSVNQQ19MTFZNXzExXzAKLSsgICAgQXNzZXJ0KGxsdm06OmlzYTxsbHZtOjpGaXhl ZFZlY3RvclR5cGU+KHJldFR5cGUpKTsKLSsgICAgbGx2bTo6Rml4ZWRWZWN0b3JUeXBlICpyZXRW ZWNUeXBlID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6Rml4ZWRWZWN0b3JUeXBlPihyZXRUeXBlKTsK LSsjZWxzZQotICAgICBBc3NlcnQobGx2bTo6aXNhPGxsdm06OlZlY3RvclR5cGU+KHJldFR5cGUp KTsKLS0KLSAgICAgbGx2bTo6VmVjdG9yVHlwZSAqcmV0VmVjVHlwZSA9IGxsdm06OmR5bl9jYXN0 PGxsdm06OlZlY3RvclR5cGU+KHJldFR5cGUpOwotKyNlbmRpZgotICAgICBBc3NlcnQobGx2bTo6 aXNQb3dlck9mMl8zMihyZXRWZWNUeXBlLT5nZXROdW1FbGVtZW50cygpKSk7Ci0gICAgIEFzc2Vy dChyZXRWZWNUeXBlLT5nZXRQcmltaXRpdmVTaXplSW5CaXRzKCkpOwotICAgICBBc3NlcnQocmV0 VmVjVHlwZS0+Z2V0UHJpbWl0aXZlU2l6ZUluQml0cygpIC8gOCA8PSA4ICogT1dPUkQpOwotQEAg LTU0ODUsOCArNTQ5MywxMyBAQCBzdGF0aWMgdm9pZCBsQ3JlYXRlQmxvY2tMRFVzZShsbHZtOjpJ bnN0cnVjdGlvbiAqY3Vyckluc3QsIHN0ZDo6dmVjdG9yPGxsdm06OkV4dAotICAgICAgICAgfSBl bHNlIGlmIChhdXRvIGdhdGhlciA9IGxHZXRQc2V1ZG9HYXRoZXIobGx2bTo6ZHluX2Nhc3Q8bGx2 bTo6SW5zdHJ1Y3Rpb24+KHVpLT5nZXRVc2VyKCkpKSkgewotICAgICAgICAgICAgIC8vIENvbGxl Y3QgaWR4cyBmcm9tIGdhdGhlciBhbmQgZml4IHVzZXJzCi0gICAgICAgICAgICAgbGx2bTo6VmFs dWUgKnJlcyA9IGxsdm06OlVuZGVmVmFsdWU6OmdldChnYXRoZXItPmdldFR5cGUoKSk7Ci0tICAg ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgZW5kID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6 VmVjdG9yVHlwZT4ocmVzLT5nZXRUeXBlKCkpLT5nZXROdW1FbGVtZW50cygpOyBpIDwgZW5kOwot LSAgICAgICAgICAgICAgICAgKytpKSB7Ci0rI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENf TExWTV8xMV8wCi0rICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgZW5kID0gbGx2bTo6 ZHluX2Nhc3Q8bGx2bTo6Rml4ZWRWZWN0b3JUeXBlPihyZXMtPmdldFR5cGUoKSktPmdldE51bUVs ZW1lbnRzKCk7IGkgPCBlbmQ7Ci0rICAgICAgICAgICAgICAgICArK2kpCi0rI2Vsc2UKLSsgICAg ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBlbmQgPSBsbHZtOjpkeW5fY2FzdDxsbHZtOjpW ZWN0b3JUeXBlPihyZXMtPmdldFR5cGUoKSktPmdldE51bUVsZW1lbnRzKCk7IGkgPCBlbmQ7ICsr aSkKLSsjZW5kaWYKLSsgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8vIEdldCBlbGVt ZW50IHZpYSBJRUkKLSAgICAgICAgICAgICAgICAgcmVzID0gbGx2bTo6SW5zZXJ0RWxlbWVudElu c3Q6OkNyZWF0ZShyZXMsIEVFSXNbcHRyVXNlLmlkeHNbY3Vycl9pZHgrK11dLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OkNvbnN0 YW50SW50OjpnZXQoTExWTVR5cGVzOjpJbnQzMlR5cGUsIGkpLAotQEAgLTU1MjIsMTAgKzU1MzUs MTEgQEAgc3RhdGljIGJvb2wgbFZlY3Rvcml6ZUdFUHMobGx2bTo6VmFsdWUgKnB0ciwgc3RkOjp2 ZWN0b3I8UHRyVXNlPiAmcHRyVXNlcywgc3RkOjoKLSAKLSAgICAgLy8gQWRqdXN0IHZhbHVlcyBm b3IgdmVjdG9yIGxvYWQKLSAjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzExXzAK LS0gICAgaWYgKGF1dG8gdmVjVHkgPSBsbHZtOjpkeW5fY2FzdDxsbHZtOjpGaXhlZFZlY3RvclR5 cGU+KHR5cGUpKSB7Ci0rICAgIGlmIChhdXRvIHZlY1R5ID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6 Rml4ZWRWZWN0b3JUeXBlPih0eXBlKSkKLSAjZWxzZQotLSAgICBpZiAoYXV0byB2ZWNUeSA9IGxs dm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KHR5cGUpKSB7Ci0rICAgIGlmIChhdXRvIHZl Y1R5ID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4odHlwZSkpCi0gI2VuZGlmCi0r ICAgIHsKLSAgICAgICAgIC8vIEdldCBzaW5nbGUgZWxlbWVudCBzaXplCi0gICAgICAgICB0X3Np emUgLz0gdmVjVHktPmdldE51bUVsZW1lbnRzKCk7Ci0gICAgICAgICAvLyBHZXQgc2luZ2xlIGVs ZW1lbnQgdHlwZQotQEAgLTY0NzcsNyArNjQ5MSw3IEBAIGxsdm06OlZhbHVlICpGaXhBZGRyZXNz U3BhY2U6OmNhbGN1bGF0ZUdhdGhlclNjYXR0ZXJBZGRyZXNzKGxsdm06OlZhbHVlICpQdHIsIGxs Ci0gI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMV8wCi0gICAgICAgICBPZmZz ZXRzLAotICAgICAgICAgbGx2bTo6Rml4ZWRWZWN0b3JUeXBlOjpnZXQoTExWTVR5cGVzOjpJbnQ2 NFR5cGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpkeW5fY2Fz dDxsbHZtOjpWZWN0b3JUeXBlPihPZmZzZXRzLT5nZXRUeXBlKCkpLT5nZXROdW1FbGVtZW50cygp KSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OmR5bl9jYXN0PGxs dm06OkZpeGVkVmVjdG9yVHlwZT4oT2Zmc2V0cy0+Z2V0VHlwZSgpKS0+Z2V0TnVtRWxlbWVudHMo KSksCi0gICAgICAgICAic3ZtX29mZnNldF96ZXh0IiwgSW5zZXJ0QmVmb3JlKTsKLSAjZWxzZQot ICAgICAgICAgT2Zmc2V0cywgbGx2bTo6VmVjdG9yVHlwZTo6Z2V0KExMVk1UeXBlczo6SW50NjRU eXBlLCBPZmZzZXRzLT5nZXRUeXBlKCktPmdldFZlY3Rvck51bUVsZW1lbnRzKCkpLAotQEAgLTY0 OTIsNyArNjUwNiw3IEBAIGxsdm06OlZhbHVlICpGaXhBZGRyZXNzU3BhY2U6OmNhbGN1bGF0ZUdh dGhlclNjYXR0ZXJBZGRyZXNzKGxsdm06OlZhbHVlICpQdHIsIGxsCi0gICAgICAgICBsbHZtOjpW YWx1ZSAqdW5kZWZJbnNlcnRWYWx1ZSA9Ci0gI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENf TExWTV8xMV8wCi0gICAgICAgICAgICAgbGx2bTo6VW5kZWZWYWx1ZTo6Z2V0KGxsdm06OkZpeGVk VmVjdG9yVHlwZTo6Z2V0KAotLSAgICAgICAgICAgICAgICBMTFZNVHlwZXM6OkludDY0VHlwZSwg bGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4oYWRkcmVzc1R5cGUpLT5nZXROdW1FbGVt ZW50cygpKSk7Ci0rICAgICAgICAgICAgICAgIExMVk1UeXBlczo6SW50NjRUeXBlLCBsbHZtOjpk eW5fY2FzdDxsbHZtOjpGaXhlZFZlY3RvclR5cGU+KGFkZHJlc3NUeXBlKS0+Z2V0TnVtRWxlbWVu dHMoKSkpOwotICNlbHNlCi0gICAgICAgICAgICAgbGx2bTo6VW5kZWZWYWx1ZTo6Z2V0KGxsdm06 OlZlY3RvclR5cGU6OmdldChMTFZNVHlwZXM6OkludDY0VHlwZSwgYWRkcmVzc1R5cGUtPmdldFZl Y3Rvck51bUVsZW1lbnRzKCkpKTsKLSAjZW5kaWYKLUBAIC02NTAxLDE3ICs2NTE1LDE2IEBAIGxs dm06OlZhbHVlICpGaXhBZGRyZXNzU3BhY2U6OmNhbGN1bGF0ZUdhdGhlclNjYXR0ZXJBZGRyZXNz KGxsdm06OlZhbHVlICpQdHIsIGxsCi0gI2lmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZN XzExXzAKLSAgICAgICAgICAgICBhZGRyZXNzVHlwZS0+Z2V0VmVjdG9yTnVtRWxlbWVudHMoKSwK LSAjZWxpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMl8wCi0tICAgICAgICAgICAg e2xsdm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KGFkZHJlc3NUeXBlKS0+Z2V0TnVtRWxl bWVudHMoKSwgZmFsc2V9LAotKyAgICAgICAgICAgIHtsbHZtOjpkeW5fY2FzdDxsbHZtOjpGaXhl ZFZlY3RvclR5cGU+KGFkZHJlc3NUeXBlKS0+Z2V0TnVtRWxlbWVudHMoKSwgZmFsc2V9LAotICNl bHNlCi0tICAgICAgICBsbHZtOjpFbGVtZW50Q291bnQ6OmdldCgKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGxsdm06OmR5bl9jYXN0PGxsdm06OkZpeGVkVmVjdG9yVHlwZT4oYWRk cmVzc1R5cGUtPmdldE51bUVsZW1lbnRzKCksIGZhbHNlKSwKLSsgICAgICAgICAgICBsbHZtOjpF bGVtZW50Q291bnQ6OmdldChsbHZtOjpkeW5fY2FzdDxsbHZtOjpGaXhlZFZlY3RvclR5cGU+KGFk ZHJlc3NUeXBlKS0+Z2V0TnVtRWxlbWVudHMoKSwgZmFsc2UpLAotICNlbmRpZgotICAgICAgICAg ICAgIGxsdm06OkNvbnN0YW50OjpnZXROdWxsVmFsdWUobGx2bTo6VHlwZTo6Z2V0SW50MzJUeShJ bnNlcnRCZWZvcmUtPmdldENvbnRleHQoKSkpKTsKLSAKLSAgICAgICAgIGxsdm06OlZhbHVlICp1 bmRlZlNodWZmbGVWYWx1ZSA9Ci0gI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8x MV8wCi0gICAgICAgICAgICAgbGx2bTo6VW5kZWZWYWx1ZTo6Z2V0KGxsdm06OkZpeGVkVmVjdG9y VHlwZTo6Z2V0KAotLSAgICAgICAgICAgICAgICBMTFZNVHlwZXM6OkludDY0VHlwZSwgbGx2bTo6 ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4oYWRkcmVzc1R5cGUpLT5nZXROdW1FbGVtZW50cygp KSk7Ci0rICAgICAgICAgICAgICAgIExMVk1UeXBlczo6SW50NjRUeXBlLCBsbHZtOjpkeW5fY2Fz dDxsbHZtOjpGaXhlZFZlY3RvclR5cGU+KGFkZHJlc3NUeXBlKS0+Z2V0TnVtRWxlbWVudHMoKSkp OwotICNlbHNlCi0gICAgICAgICAgICAgbGx2bTo6VW5kZWZWYWx1ZTo6Z2V0KGxsdm06OlZlY3Rv clR5cGU6OmdldChMTFZNVHlwZXM6OkludDY0VHlwZSwgYWRkcmVzc1R5cGUtPmdldFZlY3Rvck51 bUVsZW1lbnRzKCkpKTsKLSAjZW5kaWYKLUBAIC02NTQyLDcgKzY1NTUsOCBAQCBsbHZtOjpJbnN0 cnVjdGlvbiAqRml4QWRkcmVzc1NwYWNlOjpwcm9jZXNzVmVjdG9yTG9hZChsbHZtOjpMb2FkSW5z dCAqTEkpIHsKLSAgICAgICAgIGlzUHRyTG9hZCA9IHRydWU7Ci0gICAgICAgICBhdXRvIHNjYWxh clR5cGUgPSBnLT50YXJnZXQtPmlzMzJCaXQoKSA/IExMVk1UeXBlczo6SW50MzJUeXBlIDogTExW TVR5cGVzOjpJbnQ2NFR5cGU7Ci0gI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8x MV8wCi0tICAgICAgICByZXRUeXBlID0gbGx2bTo6Rml4ZWRWZWN0b3JUeXBlOjpnZXQoc2NhbGFy VHlwZSwgbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4ocmV0VHlwZSktPmdldE51bUVs ZW1lbnRzKCkpOwotKyAgICAgICAgcmV0VHlwZSA9Ci0rICAgICAgICAgICAgbGx2bTo6Rml4ZWRW ZWN0b3JUeXBlOjpnZXQoc2NhbGFyVHlwZSwgbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6Rml4ZWRWZWN0 b3JUeXBlPihyZXRUeXBlKS0+Z2V0TnVtRWxlbWVudHMoKSk7Ci0gI2Vsc2UKLSAgICAgICAgIHJl dFR5cGUgPSBsbHZtOjpWZWN0b3JUeXBlOjpnZXQoc2NhbGFyVHlwZSwgcmV0VHlwZS0+Z2V0VmVj dG9yTnVtRWxlbWVudHMoKSk7Ci0gI2VuZGlmCi1AQCAtNjYwNCw3ICs2NjE4LDggQEAgbGx2bTo6 SW5zdHJ1Y3Rpb24gKkZpeEFkZHJlc3NTcGFjZTo6cHJvY2Vzc1ZlY3RvclN0b3JlKGxsdm06OlN0 b3JlSW5zdCAqU0kpIHsKLSAgICAgaWYgKHZhbFR5cGUtPmdldFNjYWxhclR5cGUoKS0+aXNQb2lu dGVyVHkoKSkgewotICAgICAgICAgYXV0byBzY2FsYXJUeXBlID0gZy0+dGFyZ2V0LT5pczMyQml0 KCkgPyBMTFZNVHlwZXM6OkludDMyVHlwZSA6IExMVk1UeXBlczo6SW50NjRUeXBlOwotICNpZiBJ U1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFfMAotLSAgICAgICAgdmFsVHlwZSA9IGxs dm06OkZpeGVkVmVjdG9yVHlwZTo6Z2V0KHNjYWxhclR5cGUsIGxsdm06OmR5bl9jYXN0PGxsdm06 OlZlY3RvclR5cGU+KHZhbFR5cGUpLT5nZXROdW1FbGVtZW50cygpKTsKLSsgICAgICAgIHZhbFR5 cGUgPQotKyAgICAgICAgICAgIGxsdm06OkZpeGVkVmVjdG9yVHlwZTo6Z2V0KHNjYWxhclR5cGUs IGxsdm06OmR5bl9jYXN0PGxsdm06OkZpeGVkVmVjdG9yVHlwZT4odmFsVHlwZSktPmdldE51bUVs ZW1lbnRzKCkpOwotICNlbHNlCi0gICAgICAgICB2YWxUeXBlID0gbGx2bTo6VmVjdG9yVHlwZTo6 Z2V0KHNjYWxhclR5cGUsIHZhbFR5cGUtPmdldFZlY3Rvck51bUVsZW1lbnRzKCkpOwotICNlbmRp ZgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwOS5wYXRjaCBiL3Ny Y3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IGQzZWE2NzgyODU4Mi4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvaXNwYy9w YXRjaGVzL2xsdm0xMi0wMDkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMTA5ICswLDAgQEAK LUZyb20gOTdiMTNjMzIxMzJlMjcwNGE1ZTNlN2IyZWFlNDlkODU0ZDA4N2UzZSBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKLUZyb206IEFyaW5hIE5lc2hseWFldmEgPGFyaW5hLm5lc2hseWFldmFA aW50ZWwuY29tPgotRGF0ZTogVHVlLCA0IE1heSAyMDIxIDExOjMxOjU1IC0wNzAwCi1TdWJqZWN0 OiBbUEFUQ0hdIFVwZGF0ZWQgYnVpbHRpbnMtY20qIGZvciBzd2l0Y2ggdG8gTExWTTEyCi0KLS0t LQotIGJ1aWx0aW5zL2J1aWx0aW5zLWNtLTMyLmxsIHwgMjM0ICsrKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tLS0tLS0KLSBidWlsdGlucy9idWlsdGlucy1jbS02NC5sbCB8IDIzMiArKysr KysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDIzMyBp bnNlcnRpb25zKCspLCAyMzMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9idWlsdGlucy9i dWlsdGlucy1jbS0zMi5sbCBiL2J1aWx0aW5zL2J1aWx0aW5zLWNtLTMyLmxsCi1pbmRleCAzMmRl YmYzMmUuLjQ4MWJiZGM0OCAxMDA2NDQKLS0tLSBhL2J1aWx0aW5zL2J1aWx0aW5zLWNtLTMyLmxs Ci0rKysgYi9idWlsdGlucy9idWlsdGlucy1jbS0zMi5sbAotQEAgLTU1Nyw3ICs1NTcsNyBAQCAk X1pOMTNWYXJ5aW5nV3JpdGVyMTJXcml0ZVZlY0VsZW1JUHZFRXZ2ID0gY29tZGF0IGFueQotIEAu c3RyLjEwID0gcHJpdmF0ZSB1bm5hbWVkX2FkZHIgY29uc3RhbnQgWzUgeCBpOF0gYyIlMDhYXDAw IiwgYWxpZ24gMQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVm aW5lIGRzb19sb2NhbCBzaWduZXh0IGk4IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2Y2Mo aTggc2lnbmV4dCwgaTggc2lnbmV4dCkgIzAgewotK2RlZmluZSBpbnRlcm5hbCBzaWduZXh0IGk4 IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2Y2MoaTggc2lnbmV4dCwgaTggc2lnbmV4dCkg IzAgewotICAgJTMgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU0ID0gYWxsb2NhIGk4LCBhbGln biAxCi0gICAlNSA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotQEAgLTYxOCw3ICs2MTgsNyBA QCBkZWZpbmUgaW50ZXJuYWwgPDEgeCBpOD4gQF9aTjdkZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxp MUVFRXUyQ012YlRfX2NTMV9TMV91MkNNdgotIGRlY2xhcmUgPDEgeCBpOD4gQGxsdm0uZ2VueC5y ZHJlZ2lvbmkudjFpOC52MWk4LmkxNig8MSB4IGk4PiwgaTMyLCBpMzIsIGkzMiwgaTE2LCBpMzIp ICMyCi0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNv X2xvY2FsIDwxIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMV9jU18o PDEgeCBpOD4sIDwxIHggaTg+KSAjMCB7Ci0rZGVmaW5lIGludGVybmFsIDwxIHggaTg+IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMV9jU18oPDEgeCBpOD4sIDwxIHggaTg+KSAj MCB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotICAgJTQgPSBhbGxvY2EgPDEg eCBpOD4sIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi1AQCAtNjM0 LDcgKzYzNCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNp Y19pbXBsX3NkaXZ1MkNNdmIxX2NTXyg8MSB4IGk4PiwgPDEKLSB9Ci0gCi0gOyBGdW5jdGlvbiBB dHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHggaTg+IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMl9jU18oPDIgeCBpOD4sIDwyIHggaTg+KSAj MyB7Ci0rZGVmaW5lIGludGVybmFsIDwyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9z ZGl2dTJDTXZiMl9jU18oPDIgeCBpOD4sIDwyIHggaTg+KSAjMyB7Ci0gICAlMyA9IGFsbG9jYSA8 MiB4IGk4PiwgYWxpZ24gMgotICAgJTQgPSBhbGxvY2EgPDIgeCBpOD4sIGFsaWduIDIKLSAgICU1 ID0gYWxsb2NhIDwyIHggaTg+LCBhbGlnbiAyCi1AQCAtNjgwLDcgKzY4MCw3IEBAIGRlZmluZSBp bnRlcm5hbCA8MiB4IGk4PiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1JTGkyRUVFdTJDTXZi VF9fY1MxX1MxX3UyQ012Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53 aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8NCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf c2RpdnUyQ012YjRfY1NfKDw0IHggaTg+LCA8NCB4IGk4PikgIzUgewotK2RlZmluZSBpbnRlcm5h bCA8NCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjRfY1NfKDw0IHgg aTg+LCA8NCB4IGk4PikgIzUgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpOD4sIGFsaWduIDQKLSAg ICU0ID0gYWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8NCB4IGk4Piwg YWxpZ24gNAotQEAgLTgxOCw3ICs4MTgsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTg+IEBf Wk43ZGV0YWlsczEzX19pbXBsX2RpdnJlbUlMaTE2RUVFdTJDTXZiVF9fY1MxX1MxX3UyQwotIH0K LSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9j YWwgPDMyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMzJfY1NfKDwz MiB4IGk4PiwgPDMyIHggaTg+KSAjMTEgewotK2RlZmluZSBpbnRlcm5hbCA8MzIgeCBpOD4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIzMl9jU18oPDMyIHggaTg+LCA8MzIgeCBp OD4pICMxMSB7Ci0gICAlMyA9IGFsbG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi0gICAlNCA9IGFs bG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi0gICAlNSA9IGFsbG9jYSA8MzIgeCBpOD4sIGFsaWdu IDMyCi1AQCAtODY0LDcgKzg2NCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MzIgeCBpOD4gQF9aTjdk ZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMzJFRUV1MkNNdmJUX19jUzFfUzFfdTJDCi0gfQotIAot IDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCBz aWduZXh0IGk4IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtY2MoaTggc2lnbmV4dCwgaTgg c2lnbmV4dCkgIzAgewotK2RlZmluZSBpbnRlcm5hbCBzaWduZXh0IGk4IEBfWjI0X19jbV9pbnRy aW5zaWNfaW1wbF9zcmVtY2MoaTggc2lnbmV4dCwgaTggc2lnbmV4dCkgIzAgewotICAgJTMgPSBh bGxvY2EgaTgsIGFsaWduIDEKLSAgICU0ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICAlNSA9IGFs bG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotQEAgLTg5MCw3ICs4OTAsNyBAQCBkZWZpbmUgZHNvX2xv Y2FsIHNpZ25leHQgaTggQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW1jYyhpOCBzaWduZXh0 LCBpOCBzaWduZQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAot LWRlZmluZSBkc29fbG9jYWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11 MkNNdmIxX2NTXyg8MSB4IGk4PiwgPDEgeCBpOD4pICMwIHsKLStkZWZpbmUgaW50ZXJuYWwgPDEg eCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxX2NTXyg8MSB4IGk4Piwg PDEgeCBpOD4pICMwIHsKLSAgICUzID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi0gICAlNCA9 IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgPDEgeCBpOD4sIGFsaWdu IDEKLUBAIC05MDQsNyArOTA0LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGk4PiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjFfY1NfKDwxIHggaTg+LCA8MQotIH0KLSAKLSA7 IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDIg eCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIyX2NTXyg8MiB4IGk4Piwg PDIgeCBpOD4pICMzIHsKLStkZWZpbmUgaW50ZXJuYWwgPDIgeCBpOD4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3NyZW11MkNNdmIyX2NTXyg8MiB4IGk4PiwgPDIgeCBpOD4pICMzIHsKLSAgICUz ID0gYWxsb2NhIDwyIHggaTg+LCBhbGlnbiAyCi0gICAlNCA9IGFsbG9jYSA8MiB4IGk4PiwgYWxp Z24gMgotICAgJTUgPSBhbGxvY2EgPDIgeCBpOD4sIGFsaWduIDIKLUBAIC05MTgsNyArOTE4LDcg QEAgZGVmaW5lIGRzb19sb2NhbCA8MiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3Jl bXUyQ012YjJfY1NfKDwyIHggaTg+LCA8MgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lu bGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBpOD4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3NyZW11MkNNdmI0X2NTXyg8NCB4IGk4PiwgPDQgeCBpOD4pICM1IHsKLStkZWZp bmUgaW50ZXJuYWwgPDQgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI0 X2NTXyg8NCB4IGk4PiwgPDQgeCBpOD4pICM1IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTg+LCBh bGlnbiA0Ci0gICAlNCA9IGFsbG9jYSA8NCB4IGk4PiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2Eg PDQgeCBpOD4sIGFsaWduIDQKLUBAIC05MzIsNyArOTMyLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8 NCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjRfY1NfKDw0IHggaTg+ LCA8NAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmlu ZSBkc29fbG9jYWwgPDggeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI4 X2NTXyg8OCB4IGk4PiwgPDggeCBpOD4pICM3IHsKLStkZWZpbmUgaW50ZXJuYWwgPDggeCBpOD4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI4X2NTXyg8OCB4IGk4PiwgPDggeCBp OD4pICM3IHsKLSAgICUzID0gYWxsb2NhIDw4IHggaTg+LCBhbGlnbiA4Ci0gICAlNCA9IGFsbG9j YSA8OCB4IGk4PiwgYWxpZ24gOAotICAgJTUgPSBhbGxvY2EgPDggeCBpOD4sIGFsaWduIDgKLUBA IC05NDYsNyArOTQ2LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8OCB4IGk4PiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfc3JlbXUyQ012YjhfY1NfKDw4IHggaTg+LCA8OAotIH0KLSAKLSA7IEZ1bmN0 aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDE2IHggaTg+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMTZfY1NfKDwxNiB4IGk4PiwgPDE2 IHggaTg+KSAjOSB7Ci0rZGVmaW5lIGludGVybmFsIDwxNiB4IGk4PiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfc3JlbXUyQ012YjE2X2NTXyg8MTYgeCBpOD4sIDwxNiB4IGk4PikgIzkgewotICAg JTMgPSBhbGxvY2EgPDE2IHggaTg+LCBhbGlnbiAxNgotICAgJTQgPSBhbGxvY2EgPDE2IHggaTg+ LCBhbGlnbiAxNgotICAgJTUgPSBhbGxvY2EgPDE2IHggaTg+LCBhbGlnbiAxNgotQEAgLTk2MCw3 ICs5NjAsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxNiB4IGk4PiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfc3JlbXUyQ012YjE2X2NTXyg8MTYgeCBpOD4sCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0 cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpOD4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIzMl9jU18oPDMyIHggaTg+LCA8MzIgeCBpOD4p ICMxMSB7Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfc3JlbXUyQ012YjMyX2NTXyg8MzIgeCBpOD4sIDwzMiB4IGk4PikgIzExIHsKLSAgICUzID0g YWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxp Z24gMzIKLSAgICU1ID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLUBAIC05NzQsNyArOTc0 LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3NyZW11MkNNdmIzMl9jU18oPDMyIHggaTg+LAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBu b2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgc2lnbmV4dCBpMTYgQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3NkaXZzcyhpMTYgc2lnbmV4dCwgaTE2IHNpZ25leHQpICMzIHsKLStk ZWZpbmUgaW50ZXJuYWwgc2lnbmV4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZz cyhpMTYgc2lnbmV4dCwgaTE2IHNpZ25leHQpICMzIHsKLSAgICUzID0gYWxsb2NhIGkxNiwgYWxp Z24gMgotICAgJTQgPSBhbGxvY2EgaTE2LCBhbGlnbiAyCi0gICAlNSA9IGFsbG9jYSA8MSB4IGkx Nj4sIGFsaWduIDIKLUBAIC0xMDU4LDcgKzEwNTgsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDEgeCBp MTY+IEBfWk43ZGV0YWlsczEzX19pbXBsX2RpdnJlbUlMaTFFRUV1MkNNdmJUX19zUzFfUzFfdTJD TQotIGRlY2xhcmUgPDEgeCBpMTY+IEBsbHZtLmdlbngucmRyZWdpb25pLnYxaTE2LnYxaTE2Lmkx Nig8MSB4IGkxNj4sIGkzMiwgaTMyLCBpMzIsIGkxNiwgaTMyKSAjMgotIAotIDsgRnVuY3Rpb24g QXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkxNj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIxX3NTXyg8MSB4IGkxNj4sIDwxIHggaTE2 PikgIzMgewotK2RlZmluZSBpbnRlcm5hbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3NkaXZ1MkNNdmIxX3NTXyg8MSB4IGkxNj4sIDwxIHggaTE2PikgIzMgewotICAgJTMgPSBh bGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi0gICAlNCA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWdu IDIKLSAgICU1ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotQEAgLTEwNzQsNyArMTA3NCw3 IEBAIGRlZmluZSBkc29fbG9jYWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9z ZGl2dTJDTXZiMV9zU18oPDEgeCBpMTY+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5v aW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MiB4IGkxNj4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIyX3NTXyg8MiB4IGkxNj4sIDwyIHggaTE2PikgIzUgewot K2RlZmluZSBpbnRlcm5hbCA8MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1 MkNNdmIyX3NTXyg8MiB4IGkxNj4sIDwyIHggaTE2PikgIzUgewotICAgJTMgPSBhbGxvY2EgPDIg eCBpMTY+LCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSA8MiB4IGkxNj4sIGFsaWduIDQKLSAgICU1 ID0gYWxsb2NhIDwyIHggaTE2PiwgYWxpZ24gNAotQEAgLTExNDMsNyArMTE0Myw3IEBAIGRlZmlu ZSBpbnRlcm5hbCA8MiB4IGkxNj4gQF9aTjdkZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMkVFRXUy Q012YlRfX3NTMV9TMV91MkNNCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5v dW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8NCB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3NkaXZ1MkNNdmI0X3NTXyg8NCB4IGkxNj4sIDw0IHggaTE2PikgIzcgewotK2RlZmluZSBp bnRlcm5hbCA8NCB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmI0X3NT Xyg8NCB4IGkxNj4sIDw0IHggaTE2PikgIzcgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpMTY+LCBh bGlnbiA4Ci0gICAlNCA9IGFsbG9jYSA8NCB4IGkxNj4sIGFsaWduIDgKLSAgICU1ID0gYWxsb2Nh IDw0IHggaTE2PiwgYWxpZ24gOAotQEAgLTEzNTAsNyArMTM1MCw3IEBAIGRlZmluZSBpbnRlcm5h bCA8MTYgeCBpMTY+IEBfWk43ZGV0YWlsczEzX19pbXBsX2RpdnJlbUlMaTE2RUVFdTJDTXZiVF9f c1MxX1MxX3UyCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0t ZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2 dTJDTXZiMzJfc1NfKDwzMiB4IGkxNj4sIDwzMiB4IGkxNj4pICMxMyB7Ci0rZGVmaW5lIGludGVy bmFsIDwzMiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIzMl9zU18o PDMyIHggaTE2PiwgPDMyIHggaTE2PikgIzEzIHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGkxNj4s IGFsaWduIDY0Ci0gICAlNCA9IGFsbG9jYSA8MzIgeCBpMTY+LCBhbGlnbiA2NAotICAgJTUgPSBh bGxvY2EgPDMyIHggaTE2PiwgYWxpZ24gNjQKLUBAIC0xNDE5LDcgKzE0MTksNyBAQCBkZWZpbmUg aW50ZXJuYWwgPDMyIHggaTE2PiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1JTGkzMkVFRXUy Q012YlRfX3NTMV9TMV91MgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vu d2luZAotLWRlZmluZSBkc29fbG9jYWwgc2lnbmV4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3NyZW1zcyhpMTYgc2lnbmV4dCwgaTE2IHNpZ25leHQpICMzIHsKLStkZWZpbmUgaW50ZXJu YWwgc2lnbmV4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW1zcyhpMTYgc2lnbmV4 dCwgaTE2IHNpZ25leHQpICMzIHsKLSAgICUzID0gYWxsb2NhIGkxNiwgYWxpZ24gMgotICAgJTQg PSBhbGxvY2EgaTE2LCBhbGlnbiAyCi0gICAlNSA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIK LUBAIC0xNDQ1LDcgKzE0NDUsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIHNpZ25leHQgaTE2IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtc3MoaTE2IHNpZ25leHQsIGkxNiBzaQotIH0KLSAKLSA7 IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEg eCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMV9zU18oPDEgeCBpMTY+ LCA8MSB4IGkxNj4pICMzIHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMTY+IEBfWjI0X19jbV9p bnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMV9zU18oPDEgeCBpMTY+LCA8MSB4IGkxNj4pICMzIHsK LSAgICUzID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotICAgJTQgPSBhbGxvY2EgPDEgeCBp MTY+LCBhbGlnbiAyCi0gICAlNSA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLUBAIC0xNDU5 LDcgKzE0NTksNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxIHggaTE2PiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfc3JlbXUyQ012YjFfc1NfKDwxIHggaTE2PiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9u IEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDIgeCBpMTY+IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMl9zU18oPDIgeCBpMTY+LCA8MiB4IGkx Nj4pICM1IHsKLStkZWZpbmUgaW50ZXJuYWwgPDIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF9zcmVtdTJDTXZiMl9zU18oPDIgeCBpMTY+LCA8MiB4IGkxNj4pICM1IHsKLSAgICUzID0g YWxsb2NhIDwyIHggaTE2PiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2EgPDIgeCBpMTY+LCBhbGln biA0Ci0gICAlNSA9IGFsbG9jYSA8MiB4IGkxNj4sIGFsaWduIDQKLUBAIC0xNDczLDcgKzE0NzMs NyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf c3JlbXUyQ012YjJfc1NfKDwyIHggaTE2PiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBu b2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBpMTY+IEBfWjI0X19jbV9p bnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiNF9zU18oPDQgeCBpMTY+LCA8NCB4IGkxNj4pICM3IHsK LStkZWZpbmUgaW50ZXJuYWwgPDQgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVt dTJDTXZiNF9zU18oPDQgeCBpMTY+LCA8NCB4IGkxNj4pICM3IHsKLSAgICUzID0gYWxsb2NhIDw0 IHggaTE2PiwgYWxpZ24gOAotICAgJTQgPSBhbGxvY2EgPDQgeCBpMTY+LCBhbGlnbiA4Ci0gICAl NSA9IGFsbG9jYSA8NCB4IGkxNj4sIGFsaWduIDgKLUBAIC0xNDg3LDcgKzE0ODcsNyBAQCBkZWZp bmUgZHNvX2xvY2FsIDw0IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012 YjRfc1NfKDw0IHggaTE2PiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBu b3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDggeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF9zcmVtdTJDTXZiOF9zU18oPDggeCBpMTY+LCA8OCB4IGkxNj4pICM5IHsKLStkZWZpbmUg aW50ZXJuYWwgPDggeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiOF9z U18oPDggeCBpMTY+LCA8OCB4IGkxNj4pICM5IHsKLSAgICUzID0gYWxsb2NhIDw4IHggaTE2Piwg YWxpZ24gMTYKLSAgICU0ID0gYWxsb2NhIDw4IHggaTE2PiwgYWxpZ24gMTYKLSAgICU1ID0gYWxs b2NhIDw4IHggaTE2PiwgYWxpZ24gMTYKLUBAIC0xNTAxLDcgKzE1MDEsNyBAQCBkZWZpbmUgZHNv X2xvY2FsIDw4IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012Yjhfc1Nf KDw4IHggaTE2PiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2lu ZAotLWRlZmluZSBkc29fbG9jYWwgPDE2IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf c3JlbXUyQ012YjE2X3NTXyg8MTYgeCBpMTY+LCA8MTYgeCBpMTY+KSAjMTEgewotK2RlZmluZSBp bnRlcm5hbCA8MTYgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMTZf c1NfKDwxNiB4IGkxNj4sIDwxNiB4IGkxNj4pICMxMSB7Ci0gICAlMyA9IGFsbG9jYSA8MTYgeCBp MTY+LCBhbGlnbiAzMgotICAgJTQgPSBhbGxvY2EgPDE2IHggaTE2PiwgYWxpZ24gMzIKLSAgICU1 ID0gYWxsb2NhIDwxNiB4IGkxNj4sIGFsaWduIDMyCi1AQCAtMTUxNSw3ICsxNTE1LDcgQEAgZGVm aW5lIGRzb19sb2NhbCA8MTYgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJD TXZiMTZfc1NfKDwxNiB4IGkxNj4KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUg bm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNp Y19pbXBsX3NyZW11MkNNdmIzMl9zU18oPDMyIHggaTE2PiwgPDMyIHggaTE2PikgIzEzIHsKLStk ZWZpbmUgaW50ZXJuYWwgPDMyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUy Q012YjMyX3NTXyg8MzIgeCBpMTY+LCA8MzIgeCBpMTY+KSAjMTMgewotICAgJTMgPSBhbGxvY2Eg PDMyIHggaTE2PiwgYWxpZ24gNjQKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGkxNj4sIGFsaWduIDY0 Ci0gICAlNSA9IGFsbG9jYSA8MzIgeCBpMTY+LCBhbGlnbiA2NAotQEAgLTE1MjksNyArMTUyOSw3 IEBAIGRlZmluZSBkc29fbG9jYWwgPDMyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf c3JlbXUyQ012YjMyX3NTXyg8MzIgeCBpMTY+Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5v aW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCBpMzIgQF9aMjRfX2NtX2ludHJpbnNp Y19pbXBsX3NkaXZpaShpMzIsIGkzMikgIzE0IHsKLStkZWZpbmUgaW50ZXJuYWwgaTMyIEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2aWkoaTMyLCBpMzIpICMxNCB7Ci0gICAlMyA9IGFsbG9j YSBpMzIsIGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIGkzMiwgYWxpZ24gNAotICAgJTUgPSBhbGxv Y2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci1AQCAtMTczMCw3ICsxNzMwLDcgQEAgZGVmaW5lIGludGVy bmFsIDwxIHggaTMyPiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1JTGkxRUVFdTJDTXZiVF9f aVMxX1MxX3UyQ00KLSBkZWNsYXJlIDwxIHggaTMyPiBAbGx2bS5nZW54LnJkcmVnaW9uaS52MWkz Mi52MWkzMi5pMTYoPDEgeCBpMzI+LCBpMzIsIGkzMiwgaTMyLCBpMTYsIGkzMikgIzIKLSAKLSA7 IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEg eCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMV9pU18oPDEgeCBpMzI+ LCA8MSB4IGkzMj4pICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIDwxIHggaTMyPiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjFfaVNfKDwxIHggaTMyPiwgPDEgeCBpMzI+KSAjMTQg ewotICAgJTMgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSA8MSB4 IGkzMj4sIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotQEAgLTE3 NDYsNyArMTc0Niw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDEgeCBpMzI+IEBfWjI0X19jbV9pbnRy aW5zaWNfaW1wbF9zZGl2dTJDTXZiMV9pU18oPDEgeCBpMzI+LCA8Ci0gfQotIAotIDsgRnVuY3Rp b24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MiB4IGkzMj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIyX2lTXyg8MiB4IGkzMj4sIDwyIHgg aTMyPikgIzE1IHsKLStkZWZpbmUgaW50ZXJuYWwgPDIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF9zZGl2dTJDTXZiMl9pU18oPDIgeCBpMzI+LCA8MiB4IGkzMj4pICMxNSB7Ci0gICAl MyA9IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWduIDgKLSAgICU0ID0gYWxsb2NhIDwyIHggaTMyPiwg YWxpZ24gOAotICAgJTUgPSBhbGxvY2EgPDIgeCBpMzI+LCBhbGlnbiA4Ci1AQCAtMTkzMiw3ICsx OTMyLDcgQEAgZGVmaW5lIGludGVybmFsIDwyIHggaTMyPiBAX1pON2RldGFpbHMxM19faW1wbF9k aXZyZW1JTGkyRUVFdTJDTXZiVF9faVMxX1MxX3UyQ00KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRy czogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDw0IHggaTMyPiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjRfaVNfKDw0IHggaTMyPiwgPDQgeCBpMzI+KSAj MTYgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3NkaXZ1MkNNdmI0X2lTXyg8NCB4IGkzMj4sIDw0IHggaTMyPikgIzE2IHsKLSAgICUzID0gYWxs b2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLSAgICU0ID0gYWxsb2NhIDw0IHggaTMyPiwgYWxpZ24g MTYKLSAgICU1ID0gYWxsb2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLUBAIC0yNDkwLDcgKzI0OTAs NyBAQCBkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTMyPiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZy ZW1JTGkxNkVFRXUyQ012YlRfX2lTMV9TMV91MgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBu b2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDMyIHggaTMyPiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjMyX2lTXyg8MzIgeCBpMzI+LCA8MzIgeCBpMzI+KSAj MTkgewotK2RlZmluZSBpbnRlcm5hbCA8MzIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF9zZGl2dTJDTXZiMzJfaVNfKDwzMiB4IGkzMj4sIDwzMiB4IGkzMj4pICMxOSB7Ci0gICAlMyA9 IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAxMjgKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGkzMj4s IGFsaWduIDEyOAotICAgJTUgPSBhbGxvY2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4Ci1AQCAtMjY3 Niw3ICsyNjc2LDcgQEAgZGVmaW5lIGludGVybmFsIDwzMiB4IGkzMj4gQF9aTjdkZXRhaWxzMTNf X2ltcGxfZGl2cmVtSUxpMzJFRUV1MkNNdmJUX19pUzFfUzFfdTIKLSB9Ci0gCi0gOyBGdW5jdGlv biBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIGkzMiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfc3JlbWlpKGkzMiwgaTMyKSAjMTQgewotK2RlZmluZSBpbnRlcm5h bCBpMzIgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW1paShpMzIsIGkzMikgIzE0IHsKLSAg ICUzID0gYWxsb2NhIGkzMiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2EgaTMyLCBhbGlnbiA0Ci0g ICAlNSA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLUBAIC0yNzAyLDcgKzI3MDIsNyBAQCBk ZWZpbmUgZHNvX2xvY2FsIGkzMiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbWlpKGkzMiwg aTMyKSAjMTQgewotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAot LWRlZmluZSBkc29fbG9jYWwgPDEgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVt dTJDTXZiMV9pU18oPDEgeCBpMzI+LCA8MSB4IGkzMj4pICMxNCB7Ci0rZGVmaW5lIGludGVybmFs IDwxIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjFfaVNfKDwxIHgg aTMyPiwgPDEgeCBpMzI+KSAjMTQgewotICAgJTMgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0 Ci0gICAlNCA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwxIHgg aTMyPiwgYWxpZ24gNAotQEAgLTI3MTYsNyArMjcxNiw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDEg eCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMV9pU18oPDEgeCBpMzI+ LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5l IGRzb19sb2NhbCA8MiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIy X2lTXyg8MiB4IGkzMj4sIDwyIHggaTMyPikgIzE1IHsKLStkZWZpbmUgaW50ZXJuYWwgPDIgeCBp MzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMl9pU18oPDIgeCBpMzI+LCA8 MiB4IGkzMj4pICMxNSB7Ci0gICAlMyA9IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWduIDgKLSAgICU0 ID0gYWxsb2NhIDwyIHggaTMyPiwgYWxpZ24gOAotICAgJTUgPSBhbGxvY2EgPDIgeCBpMzI+LCBh bGlnbiA4Ci1AQCAtMjczMCw3ICsyNzMwLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MiB4IGkzMj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIyX2lTXyg8MiB4IGkzMj4sIDwKLSB9 Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xv Y2FsIDw0IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjRfaVNfKDw0 IHggaTMyPiwgPDQgeCBpMzI+KSAjMTYgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4IGkzMj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI0X2lTXyg8NCB4IGkzMj4sIDw0IHggaTMy PikgIzE2IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLSAgICU0ID0gYWxs b2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLSAgICU1ID0gYWxsb2NhIDw0IHggaTMyPiwgYWxpZ24g MTYKLUBAIC0yNzQ0LDcgKzI3NDQsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw0IHggaTMyPiBAX1oy NF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjRfaVNfKDw0IHggaTMyPiwgPAotIH0KLSAK LSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwg PDggeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiOF9pU18oPDggeCBp MzI+LCA8OCB4IGkzMj4pICMxNyB7Ci0rZGVmaW5lIGludGVybmFsIDw4IHggaTMyPiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjhfaVNfKDw4IHggaTMyPiwgPDggeCBpMzI+KSAj MTcgewotICAgJTMgPSBhbGxvY2EgPDggeCBpMzI+LCBhbGlnbiAzMgotICAgJTQgPSBhbGxvY2Eg PDggeCBpMzI+LCBhbGlnbiAzMgotICAgJTUgPSBhbGxvY2EgPDggeCBpMzI+LCBhbGlnbiAzMgot QEAgLTI3NTgsNyArMjc1OCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDggeCBpMzI+IEBfWjI0X19j bV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiOF9pU18oPDggeCBpMzI+LCA8Ci0gfQotIAotIDsg RnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MTYg eCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMTZfaVNfKDwxNiB4IGkz Mj4sIDwxNiB4IGkzMj4pICMxOCB7Ci0rZGVmaW5lIGludGVybmFsIDwxNiB4IGkzMj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxNl9pU18oPDE2IHggaTMyPiwgPDE2IHggaTMy PikgIzE4IHsKLSAgICUzID0gYWxsb2NhIDwxNiB4IGkzMj4sIGFsaWduIDY0Ci0gICAlNCA9IGFs bG9jYSA8MTYgeCBpMzI+LCBhbGlnbiA2NAotICAgJTUgPSBhbGxvY2EgPDE2IHggaTMyPiwgYWxp Z24gNjQKLUBAIC0yNzcyLDcgKzI3NzIsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxNiB4IGkzMj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxNl9pU18oPDE2IHggaTMyPgotIH0K LSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9j YWwgPDMyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjMyX2lTXyg8 MzIgeCBpMzI+LCA8MzIgeCBpMzI+KSAjMTkgewotK2RlZmluZSBpbnRlcm5hbCA8MzIgeCBpMzI+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMzJfaVNfKDwzMiB4IGkzMj4sIDwz MiB4IGkzMj4pICMxOSB7Ci0gICAlMyA9IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAxMjgKLSAg ICU0ID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFsaWduIDEyOAotICAgJTUgPSBhbGxvY2EgPDMyIHgg aTMyPiwgYWxpZ24gMTI4Ci1AQCAtMjc4Niw3ICsyNzg2LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8 MzIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMzJfaVNfKDwzMiB4 IGkzMj4KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZp bmUgZHNvX2xvY2FsIHplcm9leHQgaTggQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZoaChp OCB6ZXJvZXh0LCBpOCB6ZXJvZXh0KSAjMjEgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGk4 IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2aGgoaTggemVyb2V4dCwgaTggemVyb2V4dCkg IzIxIHsKLSAgICUzID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICAlNCA9IGFsbG9jYSBpOCwgYWxp Z24gMQotICAgJTUgPSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLUBAIC0yODQ0LDcgKzI4NDQs NyBAQCBkZWZpbmUgaW50ZXJuYWwgPDEgeCBpOD4gQF9aTjdkZXRhaWxzMTRfX2ltcGxfdWRpdnJl bUlMaTFFRUV1MkNNdmJUX19oUzFfUzFfdTJDTQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBu b2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEgeCBpOD4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIxX2hTXyg8MSB4IGk4PiwgPDEgeCBpOD4pICMyMSB7Ci0r ZGVmaW5lIGludGVybmFsIDwxIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJD TXZiMV9oU18oPDEgeCBpOD4sIDwxIHggaTg+KSAjMjEgewotICAgJTMgPSBhbGxvY2EgPDEgeCBp OD4sIGFsaWduIDEKLSAgICU0ID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi0gICAlNSA9IGFs bG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotQEAgLTI4NjAsNyArMjg2MCw3IEBAIGRlZmluZSBkc29f bG9jYWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIxX2hTXyg8 MSB4IGk4PiwgPDEKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQK LS1kZWZpbmUgZHNvX2xvY2FsIDwyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2 dTJDTXZiMl9oU18oPDIgeCBpOD4sIDwyIHggaTg+KSAjMjIgewotK2RlZmluZSBpbnRlcm5hbCA8 MiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjJfaFNfKDwyIHggaTg+ LCA8MiB4IGk4PikgIzIyIHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTg+LCBhbGlnbiAyCi0gICAl NCA9IGFsbG9jYSA8MiB4IGk4PiwgYWxpZ24gMgotICAgJTUgPSBhbGxvY2EgPDIgeCBpOD4sIGFs aWduIDIKLUBAIC0yOTA2LDcgKzI5MDYsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDIgeCBpOD4gQF9a TjdkZXRhaWxzMTRfX2ltcGxfdWRpdnJlbUlMaTJFRUV1MkNNdmJUX19oUzFfUzFfdTJDTQotIH0K LSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9j YWwgPDQgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmI0X2hTXyg8NCB4 IGk4PiwgPDQgeCBpOD4pICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIDw0IHggaTg+IEBfWjI0X19j bV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiNF9oU18oPDQgeCBpOD4sIDw0IHggaTg+KSAjMTQg ewotICAgJTMgPSBhbGxvY2EgPDQgeCBpOD4sIGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIDw0IHgg aTg+LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8NCB4IGk4PiwgYWxpZ24gNAotQEAgLTMwNDQs NyArMzA0NCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MTYgeCBpOD4gQF9aTjdkZXRhaWxzMTRfX2lt cGxfdWRpdnJlbUlMaTE2RUVFdTJDTXZiVF9faFMxX1MxX3UyCi0gfQotIAotIDsgRnVuY3Rpb24g QXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpOD4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIzMl9oU18oPDMyIHggaTg+LCA8MzIgeCBp OD4pICMxNyB7Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGk4PiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfdWRpdnUyQ012YjMyX2hTXyg8MzIgeCBpOD4sIDwzMiB4IGk4PikgIzE3IHsKLSAgICUz ID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGk4Piwg YWxpZ24gMzIKLSAgICU1ID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLUBAIC0zMDkwLDcg KzMwOTAsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTg+IEBfWk43ZGV0YWlsczE0X19pbXBs X3VkaXZyZW1JTGkzMkVFRXUyQ012YlRfX2hTMV9TMV91MgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0 dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgemVyb2V4dCBpOCBAX1oy NF9fY21faW50cmluc2ljX2ltcGxfdXJlbWhoKGk4IHplcm9leHQsIGk4IHplcm9leHQpICMyMSB7 Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTggQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Vy ZW1oaChpOCB6ZXJvZXh0LCBpOCB6ZXJvZXh0KSAjMjEgewotICAgJTMgPSBhbGxvY2EgaTgsIGFs aWduIDEKLSAgICU0ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSA8MSB4IGk4 PiwgYWxpZ24gMQotQEAgLTMxMTYsNyArMzExNiw3IEBAIGRlZmluZSBkc29fbG9jYWwgemVyb2V4 dCBpOCBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbWhoKGk4IHplcm9leHQsIGk4IHplcm9l Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRz b19sb2NhbCA8MSB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjFfaFNf KDwxIHggaTg+LCA8MSB4IGk4PikgIzIxIHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpOD4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxX2hTXyg8MSB4IGk4PiwgPDEgeCBpOD4p ICMyMSB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotICAgJTQgPSBhbGxvY2Eg PDEgeCBpOD4sIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi1AQCAt MzEzMCw3ICszMTMwLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGk4PiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfdXJlbXUyQ012YjFfaFNfKDwxIHggaTg+LCA8MQotIH0KLSAKLSA7IEZ1bmN0 aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDIgeCBpOD4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIyX2hTXyg8MiB4IGk4PiwgPDIgeCBp OD4pICMyMiB7Ci0rZGVmaW5lIGludGVybmFsIDwyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF91cmVtdTJDTXZiMl9oU18oPDIgeCBpOD4sIDwyIHggaTg+KSAjMjIgewotICAgJTMgPSBh bGxvY2EgPDIgeCBpOD4sIGFsaWduIDIKLSAgICU0ID0gYWxsb2NhIDwyIHggaTg+LCBhbGlnbiAy Ci0gICAlNSA9IGFsbG9jYSA8MiB4IGk4PiwgYWxpZ24gMgotQEAgLTMxNDQsNyArMzE0NCw3IEBA IGRlZmluZSBkc29fbG9jYWwgPDIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11 MkNNdmIyX2hTXyg8MiB4IGk4PiwgPDIKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxp bmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDw0IHggaTg+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF91cmVtdTJDTXZiNF9oU18oPDQgeCBpOD4sIDw0IHggaTg+KSAjMTQgewotK2RlZmlu ZSBpbnRlcm5hbCA8NCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjRf aFNfKDw0IHggaTg+LCA8NCB4IGk4PikgIzE0IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTg+LCBh bGlnbiA0Ci0gICAlNCA9IGFsbG9jYSA8NCB4IGk4PiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2Eg PDQgeCBpOD4sIGFsaWduIDQKLUBAIC0zMTU4LDcgKzMxNTgsNyBAQCBkZWZpbmUgZHNvX2xvY2Fs IDw0IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiNF9oU18oPDQgeCBp OD4sIDw0Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVm aW5lIGRzb19sb2NhbCA8OCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012 YjhfaFNfKDw4IHggaTg+LCA8OCB4IGk4PikgIzE1IHsKLStkZWZpbmUgaW50ZXJuYWwgPDggeCBp OD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI4X2hTXyg8OCB4IGk4PiwgPDgg eCBpOD4pICMxNSB7Ci0gICAlMyA9IGFsbG9jYSA8OCB4IGk4PiwgYWxpZ24gOAotICAgJTQgPSBh bGxvY2EgPDggeCBpOD4sIGFsaWduIDgKLSAgICU1ID0gYWxsb2NhIDw4IHggaTg+LCBhbGlnbiA4 Ci1AQCAtMzE3Miw3ICszMTcyLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8OCB4IGk4PiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjhfaFNfKDw4IHggaTg+LCA8OAotIH0KLSAKLSA7 IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDE2 IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMTZfaFNfKDwxNiB4IGk4 PiwgPDE2IHggaTg+KSAjMTYgewotK2RlZmluZSBpbnRlcm5hbCA8MTYgeCBpOD4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxNl9oU18oPDE2IHggaTg+LCA8MTYgeCBpOD4pICMx NiB7Ci0gICAlMyA9IGFsbG9jYSA8MTYgeCBpOD4sIGFsaWduIDE2Ci0gICAlNCA9IGFsbG9jYSA8 MTYgeCBpOD4sIGFsaWduIDE2Ci0gICAlNSA9IGFsbG9jYSA8MTYgeCBpOD4sIGFsaWduIDE2Ci1A QCAtMzE4Niw3ICszMTg2LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MTYgeCBpOD4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxNl9oU18oPDE2IHggaTg+LAotIH0KLSAKLSA7IEZ1 bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDMyIHgg aTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMzJfaFNfKDwzMiB4IGk4Piwg PDMyIHggaTg+KSAjMTcgewotK2RlZmluZSBpbnRlcm5hbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3VyZW11MkNNdmIzMl9oU18oPDMyIHggaTg+LCA8MzIgeCBpOD4pICMxNyB7 Ci0gICAlMyA9IGFsbG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi0gICAlNCA9IGFsbG9jYSA8MzIg eCBpOD4sIGFsaWduIDMyCi0gICAlNSA9IGFsbG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi1AQCAt MzIwMCw3ICszMjAwLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3VyZW11MkNNdmIzMl9oU18oPDMyIHggaTg+LAotIH0KLSAKLSA7IEZ1bmN0 aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgemVyb2V4dCBp MTYgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ0dChpMTYgemVyb2V4dCwgaTE2IHplcm9l eHQpICMyMiB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTE2IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF91ZGl2dHQoaTE2IHplcm9leHQsIGkxNiB6ZXJvZXh0KSAjMjIgewotICAgJTMgPSBh bGxvY2EgaTE2LCBhbGlnbiAyCi0gICAlNCA9IGFsbG9jYSBpMTYsIGFsaWduIDIKLSAgICU1ID0g YWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotQEAgLTMyNzgsNyArMzI3OCw3IEBAIGRlZmluZSBp bnRlcm5hbCA8MSB4IGkxNj4gQF9aTjdkZXRhaWxzMTRfX2ltcGxfdWRpdnJlbUlMaTFFRUV1MkNN dmJUX190UzFfUzFfdTJDCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53 aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3VkaXZ1MkNNdmIxX3RTXyg8MSB4IGkxNj4sIDwxIHggaTE2PikgIzIyIHsKLStkZWZpbmUgaW50 ZXJuYWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMV90U18o PDEgeCBpMTY+LCA8MSB4IGkxNj4pICMyMiB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGkxNj4sIGFs aWduIDIKLSAgICU0ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotICAgJTUgPSBhbGxvY2Eg PDEgeCBpMTY+LCBhbGlnbiAyCi1AQCAtMzI5NCw3ICszMjk0LDcgQEAgZGVmaW5lIGRzb19sb2Nh bCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIxX3RTXyg8MSB4 IGkxNj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1k ZWZpbmUgZHNvX2xvY2FsIDwyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUy Q012YjJfdFNfKDwyIHggaTE2PiwgPDIgeCBpMTY+KSAjMTQgewotK2RlZmluZSBpbnRlcm5hbCA8 MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIyX3RTXyg8MiB4IGkx Nj4sIDwyIHggaTE2PikgIzE0IHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTE2PiwgYWxpZ24gNAot ICAgJTQgPSBhbGxvY2EgPDIgeCBpMTY+LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8MiB4IGkx Nj4sIGFsaWduIDQKLUBAIC0zMzYwLDcgKzMzNjAsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDIgeCBp MTY+IEBfWk43ZGV0YWlsczE0X19pbXBsX3VkaXZyZW1JTGkyRUVFdTJDTXZiVF9fdFMxX1MxX3Uy QwotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBk c29fbG9jYWwgPDQgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiNF90 U18oPDQgeCBpMTY+LCA8NCB4IGkxNj4pICMxNSB7Ci0rZGVmaW5lIGludGVybmFsIDw0IHggaTE2 PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjRfdFNfKDw0IHggaTE2PiwgPDQg eCBpMTY+KSAjMTUgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpMTY+LCBhbGlnbiA4Ci0gICAlNCA9 IGFsbG9jYSA8NCB4IGkxNj4sIGFsaWduIDgKLSAgICU1ID0gYWxsb2NhIDw0IHggaTE2PiwgYWxp Z24gOAotQEAgLTM1NTgsNyArMzU1OCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MTYgeCBpMTY+IEBf Wk43ZGV0YWlsczE0X19pbXBsX3VkaXZyZW1JTGkxNkVFRXUyQ012YlRfX3RTMV9TMV91Ci0gfQot IAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2Nh bCA8MzIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMzJfdFNfKDwz MiB4IGkxNj4sIDwzMiB4IGkxNj4pICMxOCB7Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGkxNj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIzMl90U18oPDMyIHggaTE2PiwgPDMy IHggaTE2PikgIzE4IHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGkxNj4sIGFsaWduIDY0Ci0gICAl NCA9IGFsbG9jYSA8MzIgeCBpMTY+LCBhbGlnbiA2NAotICAgJTUgPSBhbGxvY2EgPDMyIHggaTE2 PiwgYWxpZ24gNjQKLUBAIC0zNjI0LDcgKzM2MjQsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDMyIHgg aTE2PiBAX1pON2RldGFpbHMxNF9faW1wbF91ZGl2cmVtSUxpMzJFRUV1MkNNdmJUX190UzFfUzFf dQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBk c29fbG9jYWwgemVyb2V4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW10dChpMTYg emVyb2V4dCwgaTE2IHplcm9leHQpICMyMiB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTE2 IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdHQoaTE2IHplcm9leHQsIGkxNiB6ZXJvZXh0 KSAjMjIgewotICAgJTMgPSBhbGxvY2EgaTE2LCBhbGlnbiAyCi0gICAlNCA9IGFsbG9jYSBpMTYs IGFsaWduIDIKLSAgICU1ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotQEAgLTM2NTAsNyAr MzY1MCw3IEBAIGRlZmluZSBkc29fbG9jYWwgemVyb2V4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNp Y19pbXBsX3VyZW10dChpMTYgemVyb2V4dCwgaTE2IHplCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0 cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkxNj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxX3RTXyg8MSB4IGkxNj4sIDwxIHggaTE2Pikg IzIyIHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF91cmVtdTJDTXZiMV90U18oPDEgeCBpMTY+LCA8MSB4IGkxNj4pICMyMiB7Ci0gICAlMyA9IGFs bG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLSAgICU0ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24g MgotICAgJTUgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi1AQCAtMzY2NCw3ICszNjY0LDcg QEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Vy ZW11MkNNdmIxX3RTXyg8MSB4IGkxNj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9p bmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHggaTE2PiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfdXJlbXUyQ012YjJfdFNfKDwyIHggaTE2PiwgPDIgeCBpMTY+KSAjMTQgewot K2RlZmluZSBpbnRlcm5hbCA8MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11 MkNNdmIyX3RTXyg8MiB4IGkxNj4sIDwyIHggaTE2PikgIzE0IHsKLSAgICUzID0gYWxsb2NhIDwy IHggaTE2PiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2EgPDIgeCBpMTY+LCBhbGlnbiA0Ci0gICAl NSA9IGFsbG9jYSA8MiB4IGkxNj4sIGFsaWduIDQKLUBAIC0zNjc4LDcgKzM2NzgsNyBAQCBkZWZp bmUgZHNvX2xvY2FsIDwyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012 YjJfdFNfKDwyIHggaTE2PiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBu b3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF91cmVtdTJDTXZiNF90U18oPDQgeCBpMTY+LCA8NCB4IGkxNj4pICMxNSB7Ci0rZGVmaW5l IGludGVybmFsIDw0IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjRf dFNfKDw0IHggaTE2PiwgPDQgeCBpMTY+KSAjMTUgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpMTY+ LCBhbGlnbiA4Ci0gICAlNCA9IGFsbG9jYSA8NCB4IGkxNj4sIGFsaWduIDgKLSAgICU1ID0gYWxs b2NhIDw0IHggaTE2PiwgYWxpZ24gOAotQEAgLTM2OTIsNyArMzY5Miw3IEBAIGRlZmluZSBkc29f bG9jYWwgPDQgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiNF90U18o PDQgeCBpMTY+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5k Ci0tZGVmaW5lIGRzb19sb2NhbCA8OCB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Vy ZW11MkNNdmI4X3RTXyg8OCB4IGkxNj4sIDw4IHggaTE2PikgIzE2IHsKLStkZWZpbmUgaW50ZXJu YWwgPDggeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiOF90U18oPDgg eCBpMTY+LCA8OCB4IGkxNj4pICMxNiB7Ci0gICAlMyA9IGFsbG9jYSA8OCB4IGkxNj4sIGFsaWdu IDE2Ci0gICAlNCA9IGFsbG9jYSA8OCB4IGkxNj4sIGFsaWduIDE2Ci0gICAlNSA9IGFsbG9jYSA8 OCB4IGkxNj4sIGFsaWduIDE2Ci1AQCAtMzcwNiw3ICszNzA2LDcgQEAgZGVmaW5lIGRzb19sb2Nh bCA8OCB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI4X3RTXyg8OCB4 IGkxNj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1k ZWZpbmUgZHNvX2xvY2FsIDwxNiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11 MkNNdmIxNl90U18oPDE2IHggaTE2PiwgPDE2IHggaTE2PikgIzE3IHsKLStkZWZpbmUgaW50ZXJu YWwgPDE2IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjE2X3RTXyg8 MTYgeCBpMTY+LCA8MTYgeCBpMTY+KSAjMTcgewotICAgJTMgPSBhbGxvY2EgPDE2IHggaTE2Piwg YWxpZ24gMzIKLSAgICU0ID0gYWxsb2NhIDwxNiB4IGkxNj4sIGFsaWduIDMyCi0gICAlNSA9IGFs bG9jYSA8MTYgeCBpMTY+LCBhbGlnbiAzMgotQEAgLTM3MjAsNyArMzcyMCw3IEBAIGRlZmluZSBk c29fbG9jYWwgPDE2IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjE2 X3RTXyg8MTYgeCBpMTY+Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53 aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF91cmVtdTJDTXZiMzJfdFNfKDwzMiB4IGkxNj4sIDwzMiB4IGkxNj4pICMxOCB7Ci0rZGVmaW5l IGludGVybmFsIDwzMiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIz Ml90U18oPDMyIHggaTE2PiwgPDMyIHggaTE2PikgIzE4IHsKLSAgICUzID0gYWxsb2NhIDwzMiB4 IGkxNj4sIGFsaWduIDY0Ci0gICAlNCA9IGFsbG9jYSA8MzIgeCBpMTY+LCBhbGlnbiA2NAotICAg JTUgPSBhbGxvY2EgPDMyIHggaTE2PiwgYWxpZ24gNjQKLUBAIC0zNzM0LDcgKzM3MzQsNyBAQCBk ZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11 MkNNdmIzMl90U18oPDMyIHggaTE2PgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGlu ZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgaTMyIEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF91ZGl2amooaTMyLCBpMzIpICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIGkzMiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfdWRpdmpqKGkzMiwgaTMyKSAjMTQgewotICAgJTMgPSBhbGxvY2EgaTMy LCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSBpMzIsIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwx IHggaTMyPiwgYWxpZ24gNAotQEAgLTM4OTIsNyArMzg5Miw3IEBAIGRlZmluZSBpbnRlcm5hbCA8 MSB4IGkzMj4gQF9aTjdkZXRhaWxzMTRfX2ltcGxfdWRpdnJlbUlMaTFFRUV1MkNNdmJUX19qUzFf UzFfdTJDCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVm aW5lIGRzb19sb2NhbCA8MSB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNN dmIxX2pTXyg8MSB4IGkzMj4sIDwxIHggaTMyPikgIzE0IHsKLStkZWZpbmUgaW50ZXJuYWwgPDEg eCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMV9qU18oPDEgeCBpMzI+ LCA8MSB4IGkzMj4pICMxNCB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLSAg ICU0ID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDEgeCBpMzI+ LCBhbGlnbiA0Ci1AQCAtMzkwOCw3ICszOTA4LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkz Mj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIxX2pTXyg8MSB4IGkzMj4sIDwK LSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNv X2xvY2FsIDwyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjJfalNf KDwyIHggaTMyPiwgPDIgeCBpMzI+KSAjMTUgewotK2RlZmluZSBpbnRlcm5hbCA8MiB4IGkzMj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIyX2pTXyg8MiB4IGkzMj4sIDwyIHgg aTMyPikgIzE1IHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTMyPiwgYWxpZ24gOAotICAgJTQgPSBh bGxvY2EgPDIgeCBpMzI+LCBhbGlnbiA4Ci0gICAlNSA9IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWdu IDgKLUBAIC00MDU0LDcgKzQwNTQsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDIgeCBpMzI+IEBfWk43 ZGV0YWlsczE0X19pbXBsX3VkaXZyZW1JTGkyRUVFdTJDTXZiVF9falMxX1MxX3UyQwotIH0KLSAK LSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwg PDQgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiNF9qU18oPDQgeCBp MzI+LCA8NCB4IGkzMj4pICMxNiB7Ci0rZGVmaW5lIGludGVybmFsIDw0IHggaTMyPiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjRfalNfKDw0IHggaTMyPiwgPDQgeCBpMzI+KSAj MTYgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotICAgJTQgPSBhbGxvY2Eg PDQgeCBpMzI+LCBhbGlnbiAxNgotICAgJTUgPSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgot QEAgLTQ0OTIsNyArNDQ5Miw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MTYgeCBpMzI+IEBfWk43ZGV0 YWlsczE0X19pbXBsX3VkaXZyZW1JTGkxNkVFRXUyQ012YlRfX2pTMV9TMV91Ci0gfQotIAotIDsg RnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIg eCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMzJfalNfKDwzMiB4IGkz Mj4sIDwzMiB4IGkzMj4pICMxOSB7Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGkzMj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIzMl9qU18oPDMyIHggaTMyPiwgPDMyIHggaTMy PikgIzE5IHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFsaWduIDEyOAotICAgJTQgPSBh bGxvY2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4Ci0gICAlNSA9IGFsbG9jYSA8MzIgeCBpMzI+LCBh bGlnbiAxMjgKLUBAIC00NjM4LDcgKzQ2MzgsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTMy PiBAX1pON2RldGFpbHMxNF9faW1wbF91ZGl2cmVtSUxpMzJFRUV1MkNNdmJUX19qUzFfUzFfdQot IH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29f bG9jYWwgaTMyIEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtamooaTMyLCBpMzIpICMxNCB7 Ci0rZGVmaW5lIGludGVybmFsIGkzMiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbWpqKGkz MiwgaTMyKSAjMTQgewotICAgJTMgPSBhbGxvY2EgaTMyLCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9j YSBpMzIsIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotQEAgLTQ2 NjQsNyArNDY2NCw3IEBAIGRlZmluZSBkc29fbG9jYWwgaTMyIEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF91cmVtamooaTMyLCBpMzIpICMxNCB7Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5v aW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkzMj4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3VyZW11MkNNdmIxX2pTXyg8MSB4IGkzMj4sIDwxIHggaTMyPikgIzE0IHsK LStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVt dTJDTXZiMV9qU18oPDEgeCBpMzI+LCA8MSB4IGkzMj4pICMxNCB7Ci0gICAlMyA9IGFsbG9jYSA8 MSB4IGkzMj4sIGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotICAg JTUgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci1AQCAtNDY3OCw3ICs0Njc4LDcgQEAgZGVm aW5lIGRzb19sb2NhbCA8MSB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNN dmIxX2pTXyg8MSB4IGkzMj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUg bm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfdXJlbXUyQ012YjJfalNfKDwyIHggaTMyPiwgPDIgeCBpMzI+KSAjMTUgewotK2RlZmlu ZSBpbnRlcm5hbCA8MiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIy X2pTXyg8MiB4IGkzMj4sIDwyIHggaTMyPikgIzE1IHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTMy PiwgYWxpZ24gOAotICAgJTQgPSBhbGxvY2EgPDIgeCBpMzI+LCBhbGlnbiA4Ci0gICAlNSA9IGFs bG9jYSA8MiB4IGkzMj4sIGFsaWduIDgKLUBAIC00NjkyLDcgKzQ2OTIsNyBAQCBkZWZpbmUgZHNv X2xvY2FsIDwyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjJfalNf KDwyIHggaTMyPiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2lu ZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91 cmVtdTJDTXZiNF9qU18oPDQgeCBpMzI+LCA8NCB4IGkzMj4pICMxNiB7Ci0rZGVmaW5lIGludGVy bmFsIDw0IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjRfalNfKDw0 IHggaTMyPiwgPDQgeCBpMzI+KSAjMTYgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpMzI+LCBhbGln biAxNgotICAgJTQgPSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotICAgJTUgPSBhbGxvY2Eg PDQgeCBpMzI+LCBhbGlnbiAxNgotQEAgLTQ3MDYsNyArNDcwNiw3IEBAIGRlZmluZSBkc29fbG9j YWwgPDQgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiNF9qU18oPDQg eCBpMzI+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0t ZGVmaW5lIGRzb19sb2NhbCA8OCB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11 MkNNdmI4X2pTXyg8OCB4IGkzMj4sIDw4IHggaTMyPikgIzE3IHsKLStkZWZpbmUgaW50ZXJuYWwg PDggeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiOF9qU18oPDggeCBp MzI+LCA8OCB4IGkzMj4pICMxNyB7Ci0gICAlMyA9IGFsbG9jYSA8OCB4IGkzMj4sIGFsaWduIDMy Ci0gICAlNCA9IGFsbG9jYSA8OCB4IGkzMj4sIGFsaWduIDMyCi0gICAlNSA9IGFsbG9jYSA8OCB4 IGkzMj4sIGFsaWduIDMyCi1AQCAtNDcyMCw3ICs0NzIwLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8 OCB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI4X2pTXyg8OCB4IGkz Mj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZp bmUgZHNvX2xvY2FsIDwxNiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNN dmIxNl9qU18oPDE2IHggaTMyPiwgPDE2IHggaTMyPikgIzE4IHsKLStkZWZpbmUgaW50ZXJuYWwg PDE2IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjE2X2pTXyg8MTYg eCBpMzI+LCA8MTYgeCBpMzI+KSAjMTggewotICAgJTMgPSBhbGxvY2EgPDE2IHggaTMyPiwgYWxp Z24gNjQKLSAgICU0ID0gYWxsb2NhIDwxNiB4IGkzMj4sIGFsaWduIDY0Ci0gICAlNSA9IGFsbG9j YSA8MTYgeCBpMzI+LCBhbGlnbiA2NAotQEAgLTQ3MzQsNyArNDczNCw3IEBAIGRlZmluZSBkc29f bG9jYWwgPDE2IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjE2X2pT Xyg8MTYgeCBpMzI+Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5k Ci0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91 cmVtdTJDTXZiMzJfalNfKDwzMiB4IGkzMj4sIDwzMiB4IGkzMj4pICMxOSB7Ci0rZGVmaW5lIGlu dGVybmFsIDwzMiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIzMl9q U18oPDMyIHggaTMyPiwgPDMyIHggaTMyPikgIzE5IHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGkz Mj4sIGFsaWduIDEyOAotICAgJTQgPSBhbGxvY2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4Ci0gICAl NSA9IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAxMjgKLUBAIC00NzQ4LDcgKzQ3NDgsNyBAQCBk ZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11 MkNNdmIzMl9qU18oPDMyIHggaTMyPgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGlu ZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgdm9pZCBAX19kb19wcmludF9jbShpOCosIGk4 KiwgaTMyLCBpNjQsIGkzMiosIGkzMiwgaTMyKSAjMjMgIWRiZyAhMTUgewotK2RlZmluZSBpbnRl cm5hbCB2b2lkIEBfX2RvX3ByaW50X2NtKGk4KiwgaTgqLCBpMzIsIGk2NCwgaTMyKiwgaTMyLCBp MzIpICMyMyAhZGJnICExNSB7Ci0gICAlOCA9IGFsbG9jYSBpOCosIGFsaWduIDQKLSAgICU5ID0g YWxsb2NhIGk4KiwgYWxpZ24gNAotICAgJTEwID0gYWxsb2NhIGkzMiwgYWxpZ24gNAotQEAgLTQ5 ODgsNyArNDk4OCw3IEBAIGRlZmluZSBpbnRlcm5hbCB2b2lkIEBfWk43ZGV0YWlsczE2X2NtX3By aW50X2Zvcm1hdElMaTEyOEVFRXYxNWNtX3N1cmZhY2VpbmRleGp1Ci0gfQotIAotIDsgRnVuY3Rp b24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCB2b2lkIEBfX2Rv X3ByaW50X2x6KGkzMiwgaTgqLCBpMzIsIGk2NCwgaTMyKiwgaTMyLCBpMzIsIGkzMiwgaTMyKSAj MjYgIWRiZyAhMTE3IHsKLStkZWZpbmUgaW50ZXJuYWwgdm9pZCBAX19kb19wcmludF9seihpMzIs IGk4KiwgaTMyLCBpNjQsIGkzMiosIGkzMiwgaTMyLCBpMzIsIGkzMikgIzI2ICFkYmcgITExNyB7 Ci0gICAlMTAgPSBhbGxvY2EgaTMyLCBhbGlnbiA0Ci0gICAlMTEgPSBhbGxvY2EgaTgqLCBhbGln biA0Ci0gICAlMTIgPSBhbGxvY2EgaTMyLCBhbGlnbiA0Ci1AQCAtNTA2OSw3ICs1MDY5LDcgQEAg ZGVmaW5lIGRzb19sb2NhbCB2b2lkIEBfX2RvX3ByaW50X2x6KGkzMiwgaTgqLCBpMzIsIGk2NCwg aTMyKiwgaTMyLCBpMzIsIGkzMiwgaTMKLSAgICU2NyA9IGxvYWQgaTY0LCBpNjQqICUxMywgYWxp Z24gOCwgIWRiZyAhMTU5LCAhdGJhYSAhMTkKLSAgICU2OCA9IGxvYWQgPDUgeCBpMzI+LCA8NSB4 IGkzMj4qICUyMSwgYWxpZ24gMzIsICFkYmcgITE2MCwgIXRiYWEgITcKLSAgIGNhbGwgdm9pZCBA X1pOMTNWYXJ5aW5nV3JpdGVyQzJFUmpSUEtqaXl1MkNNdmI1X2koJWNsYXNzLlZhcnlpbmdXcml0 ZXIqICUyMywgaTMyKiBkZXJlZmVyZW5jZWFibGUoNCkgJTE5LCBpMzIqKiBkZXJlZmVyZW5jZWFi bGUoNCkgJTE0LCBpMzIgJTY2LCBpNjQgJTY3LCA8NSB4IGkzMj4gJTY4KSwgIWRiZyAhMTYxCi0t ICAlNjkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8xNHN3aXRjaEVuY29kaW5nSTEz VW5pZm9ybVdyaXRlcjEzVmFyeWluZ1dyaXRlckVFYk5TXzhFbmNvZGluZ0VUX1QwXyhpOCBzaWdu ZXh0ICU2MiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyICUyMiwgJWNsYXNz LlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICUyMyksICFkYmcgITE2MgotKyAgJTY5ID0g Y2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1X cml0ZXIxM1ZhcnlpbmdXcml0ZXJFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4dCAlNjIs ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24g MzIgJTIyLCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIp IGFsaWduIDMyICUyMyksICFkYmcgITE2MgotICAgYnIgbGFiZWwgJTcwLCAhZGJnICExNjMKLSAK LSA7IDxsYWJlbD46NzA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJl ZHMgPSAlNjAKLUBAIC01MTg3LDcgKzUxODcsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDUgeCBpMzI+ IEBfWjE3Z2V0X2F1eGlsaWFyeV9zdHJ2KCkgIzI4IGNvbWRhdCAhZGJnICExNzggewotIH0KLSAK LSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBub3Vud2luZAotLWRl ZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMTRzd2l0Y2hFbmNvZGluZ0kx M1VuaWZvcm1Xcml0ZXIxM1ZhcnlpbmdXcml0ZXJFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2ln bmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlY2xhc3MuVmFyeWlu Z1dyaXRlciogYnl2YWwgYWxpZ24gMzIpICMyNSBjb21kYXQgIWRiZyAhMTkxIHsKLStkZWZpbmUg aW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzE0c3dpdGNoRW5jb2RpbmdJMTNVbmlm b3JtV3JpdGVyMTNWYXJ5aW5nV3JpdGVyRUViTlNfOEVuY29kaW5nRVRfVDBfKGk4IHNpZ25leHQs ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24g MzIsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxp Z24gMzIpICMyNSBjb21kYXQgIWRiZyAhMTkxIHsKLSAgICU0ID0gYWxsb2NhIGk4LCBhbGlnbiAx Ci0gICAlNSA9IGFsbG9jYSAlY2xhc3MuVW5pZm9ybVdyaXRlciwgYWxpZ24gMzIKLSAgICU2ID0g YWxsb2NhICVjbGFzcy5WYXJ5aW5nV3JpdGVyLCBhbGlnbiAzMgotQEAgLTUxOTYsNyArNTE5Niw3 IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMTRzd2l0Y2hFbmNv ZGluZ0kxM1VuaWZvcm1Xcml0ZXIxM1ZhcnlpCi0gICAlOCA9IGJpdGNhc3QgJWNsYXNzLlVuaWZv cm1Xcml0ZXIqICU1IHRvIGk4KiwgIWRiZyAhMTk2Ci0gICAlOSA9IGJpdGNhc3QgJWNsYXNzLlVu aWZvcm1Xcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMTk2Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVt Y3B5LnAwaTgucDBpOC5pMzIoaTgqIGFsaWduIDMyICU4LCBpOCogYWxpZ24gMzIgJTksIGkzMiA2 NCwgaTEgZmFsc2UpLCAhZGJnICExOTYsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlMTAgPSBjYWxs IHplcm9leHQgaTEgQF9aTjlQcmludEluZm8yMnN3aXRjaEVuY29kaW5nNFVuaWZvcm1JMTNVbmlm b3JtV3JpdGVyRUViTlNfOEVuY29kaW5nRVRfKGk4IHNpZ25leHQgJTcsICVjbGFzcy5Vbmlmb3Jt V3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlNSksICFkYmcgITE5OAotKyAgJTEwID0gY2FsbCB6ZXJv ZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRVbmlmb3JtSTEzVW5pZm9ybVdy aXRlckVFYk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0ICU3LCAlY2xhc3MuVW5pZm9ybVdyaXRl ciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyICU1KSwgIWRiZyAhMTk4Ci0g ICBiciBpMSAlMTAsIGxhYmVsICUxNiwgbGFiZWwgJTExLCAhZGJnICExOTkKLSAKLSA7IDxsYWJl bD46MTE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlMwot QEAgLTUyMDQsNyArNTIwNCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJp bnRJbmZvMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXIxM1ZhcnlpCi0gICAlMTMgPSBi aXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlNiB0byBpOCosICFkYmcgITIwMQotICAgJTE0 ID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTIgdG8gaTgqLCAhZGJnICEyMDEKLSAg IGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4LmkzMihpOCogYWxpZ24gMzIgJTEzLCBp OCogYWxpZ24gMzIgJTE0LCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMjAxLCAhdGJhYS5zdHJ1 Y3QgITE5NwotLSAgJTE1ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hF bmNvZGluZzRWYXJ5aW5nSTEzVmFyeWluZ1dyaXRlckVFYk5TXzhFbmNvZGluZ0VUXyhpOCBzaWdu ZXh0ICUxMiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU2KSwgIWRiZyAh MjAyCi0rICAlMTUgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8yMnN3aXRjaEVuY29k aW5nNFZhcnlpbmdJMTNWYXJ5aW5nV3JpdGVyRUViTlNfOEVuY29kaW5nRVRfKGk4IHNpZ25leHQg JTEyLCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFs aWduIDMyICU2KSwgIWRiZyAhMjAyCi0gICBiciBsYWJlbCAlMTYsICFkYmcgITE5OQotIAotIDsg PGxhYmVsPjoxNjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9 ICUxMSwgJTMKLUBAIC01Mjc5LDcgKzUyNzksNyBAQCBkZWZpbmUgaW50ZXJuYWwgdm9pZCBAX1pO MTNWYXJ5aW5nV3JpdGVyQzJFUmpSUEtqaXl1MkNNdmI1X2koJWNsYXNzLlZhcnlpbmdXcml0ZQot IH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29f bG9jYWwgaTMyIEBfX251bV9jb3JlcygpICMyOSAhZGJnICEyMzYgewotK2RlZmluZSBpbnRlcm5h bCBpMzIgQF9fbnVtX2NvcmVzKCkgIzI5ICFkYmcgITIzNiB7Ci0gICByZXQgaTMyIC0xLCAhZGJn ICEyMzcKLSB9Ci0gCi1AQCAtODg2MCw3ICs4ODYwLDcgQEAgZGVjbGFyZSBkc29fbG9jYWwgdm9p ZCBAX1pON2RldGFpbHMzN19fY21faW50cmluc2ljX2ltcGxfc3ZtX3NjYXR0ZXJfd3JpdGVJaUxp MUUKLSBkZWNsYXJlIHZvaWQgQGxsdm0uZ2VueC5zdm0uc2NhdHRlci52MWkxLnYxaTY0LnYxaTMy KDwxIHggaTE+LCBpMzIsIDwxIHggaTY0PiwgPDEgeCBpMzI+KSAjMjcKLSAKLSA7IEZ1bmN0aW9u IEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5h bCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRVbmlmb3JtSTEzVW5p Zm9ybVdyaXRlckVFYk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdy aXRlciogYnl2YWwgYWxpZ24gMzIpICMyNSBjb21kYXQgIWRiZyAhMTY0NSB7Ci0rZGVmaW5lIGlu dGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8yMnN3aXRjaEVuY29kaW5nNFVuaWZvcm1J MTNVbmlmb3JtV3JpdGVyRUViTlNfOEVuY29kaW5nRVRfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlm b3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIpICMyNSBjb21k YXQgIWRiZyAhMTY0NSB7Ci0gICAlMyA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTQgPSBhbGxv Y2EgJWNsYXNzLlVuaWZvcm1Xcml0ZXIsIGFsaWduIDMyCi0gICAlNSA9IGFsbG9jYSAlInN0cnVj dC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iLCBhbGlnbiAxCi1AQCAtODg2OSw3ICs4ODY5 LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8yMnN3aXRjaEVu Y29kaW5nNFVuaWZvcm1JMTNVbmlmb3JtV3JpdGUKLSAgICU3ID0gYml0Y2FzdCAlY2xhc3MuVW5p Zm9ybVdyaXRlciogJTQgdG8gaTgqLCAhZGJnICExNjQ3Ci0gICAlOCA9IGJpdGNhc3QgJWNsYXNz LlVuaWZvcm1Xcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMTY0NwotICAgY2FsbCB2b2lkIEBsbHZt Lm1lbWNweS5wMGk4LnAwaTguaTMyKGk4KiBhbGlnbiAzMiAlNywgaTgqIGFsaWduIDMyICU4LCBp MzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY0NywgIXRiYWEuc3RydWN0ICExOTcKLS0gICU5ID0g Y2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNV bmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUX1QwXyhp OCBzaWduZXh0ICU2LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIgJTQsICUi c3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEgJTUpLCAh ZGJnICExNjQ4Ci0rICAlOSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwx NHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJO U184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4dCAlNiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5 dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlNCwgJSJzdHJ1Y3QuUHJpbnRJbmZv OjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRV bmlmb3JtIikgYWxpZ24gMSAlNSksICFkYmcgITE2NDgKLSAgIHJldCBpMSAlOSwgIWRiZyAhMTY0 OQotIH0KLSAKLUBAIC04ODc3LDcgKzg4NzcsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBp MSBAX1pOOVByaW50SW5mbzIyc3dpdGNoRW5jb2Rpbmc0VW5pZm9ybUkxM1VuaWZvcm1Xcml0ZQot IGRlY2xhcmUgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4LmkzMihpOCogbm9jYXB0dXJlIHdy aXRlb25seSwgaTgqIG5vY2FwdHVyZSByZWFkb25seSwgaTMyLCBpMSkgIzMyCi0gCi0gOyBGdW5j dGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50 ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzIyc3dpdGNoRW5jb2Rpbmc0VmFyeWluZ0kx M1ZhcnlpbmdXcml0ZXJFRWJOU184RW5jb2RpbmdFVF8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlp bmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyKSAjMjUgY29tZGF0ICFkYmcgITE2NTAgewotK2RlZmlu ZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRWYXJ5 aW5nSTEzVmFyeWluZ1dyaXRlckVFYk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0LCAlY2xhc3Mu VmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyKSAjMjUg Y29tZGF0ICFkYmcgITE2NTAgewotICAgJTMgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU0ID0g YWxsb2NhICVjbGFzcy5WYXJ5aW5nV3JpdGVyLCBhbGlnbiAzMgotICAgJTUgPSBhbGxvY2EgJSJz dHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiwgYWxpZ24gMQotQEAgLTg4ODYsMTIg Kzg4ODYsMTIgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8yMnN3 aXRjaEVuY29kaW5nNFZhcnlpbmdJMTNWYXJ5aW5nV3JpdGUKLSAgICU3ID0gYml0Y2FzdCAlY2xh c3MuVmFyeWluZ1dyaXRlciogJTQgdG8gaTgqLCAhZGJnICExNjUyCi0gICAlOCA9IGJpdGNhc3Qg JWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMTY1MgotICAgY2FsbCB2b2lk IEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTMyKGk4KiBhbGlnbiAzMiAlNywgaTgqIGFsaWduIDMy ICU4LCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY1MiwgIXRiYWEuc3RydWN0ICExOTcKLS0g ICU5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2Rp bmdJMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VU X1QwXyhpOCBzaWduZXh0ICU2LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIg JTQsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEg JTUpLCAhZGJnICExNjUzCi0rICAlOSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZk ZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWlu Z0VFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4dCAlNiwgJWNsYXNzLlZhcnlpbmdXcml0 ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAlNCwgJSJzdHJ1Y3QuUHJp bnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNv ZGluZzRWYXJ5aW5nIikgYWxpZ24gMSAlNSksICFkYmcgITE2NTMKLSAgIHJldCBpMSAlOSwgIWRi ZyAhMTY1NAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGlu dCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRl dGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3Jt RUVFYk5TXzhFbmNvZGluZ0VUX1QwXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciog Ynl2YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5 dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMTY1NSB7Ci0rZGVmaW5lIGludGVybmFsIHpl cm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1X cml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVRfVDBfKGk4IHNpZ25l eHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxp Z24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3Ry dWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEpICMyNSBjb21kYXQgIWRi ZyAhMTY1NSB7Ci0gICAlNCA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgJWNs YXNzLlVuaWZvcm1Xcml0ZXIsIGFsaWduIDMyCi0gICAlNiA9IGFsbG9jYSAlInN0cnVjdC5Qcmlu dEluZm86OkVuY29kaW5nNFVuaWZvcm0iLCBhbGlnbiAxCi1AQCAtODkxNCw3ICs4OTE0LDcgQEAg ZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hF bmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXIKLSAgICUyMiA9IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1X cml0ZXIqICU1IHRvIGk4KiwgIWRiZyAhMTY1NwotICAgJTIzID0gYml0Y2FzdCAlY2xhc3MuVW5p Zm9ybVdyaXRlciogJTEgdG8gaTgqLCAhZGJnICExNjU3Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVt Y3B5LnAwaTgucDBpOC5pMzIoaTgqIGFsaWduIDMyICUyMiwgaTgqIGFsaWduIDMyICUyMywgaTMy IDY0LCBpMSBmYWxzZSksICFkYmcgITE2NTcsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlMjQgPSBj YWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2Rp bmdJYjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdF VDBfVDFfKGk4IHNpZ25leHQgJTIxLCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24g MzIgJTUsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWdu IDEgJTYpLCAhZGJnICExNjU4Ci0rICAlMjQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludElu Zm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJYjEzVW5pZm9ybVdyaXRlck5TXzE2RW5j b2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTIxLCAlY2xh c3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyICU1 LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5Q cmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxICU2KSwgIWRiZyAhMTY1OAotICAg YnIgaTEgJTI0LCBsYWJlbCAlNjAsIGxhYmVsICUyNSwgIWRiZyAhMTY1OQotIAotIDsgPGxhYmVs PjoyNTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICUzCi1A QCAtODkyMiw3ICs4OTIyLDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmlu dEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXIKLSAgICUyNyA9IGJp dGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqICU3IHRvIGk4KiwgIWRiZyAhMTY2MQotICAgJTI4 ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTEgdG8gaTgqLCAhZGJnICExNjYxCi0g ICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pMzIoaTgqIGFsaWduIDMyICUyNywg aTgqIGFsaWduIDMyICUyOCwgaTMyIDY0LCBpMSBmYWxzZSksICFkYmcgITE2NjEsICF0YmFhLnN0 cnVjdCAhMTk3Ci0tICAlMjkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWls MjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJaTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5p Zm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTI2LCAlY2xhc3MuVW5pZm9y bVdyaXRlciogYnl2YWwgYWxpZ24gMzIgJTcsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0 VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEgJTgpLCAhZGJnICExNjYyCi0rICAlMjkgPSBjYWxsIHpl cm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJaTEz VW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFf KGk4IHNpZ25leHQgJTI2LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZv cm1Xcml0ZXIpIGFsaWduIDMyICU3LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZv cm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAx ICU4KSwgIWRiZyAhMTY2MgotICAgYnIgaTEgJTI5LCBsYWJlbCAlNjAsIGxhYmVsICUzMCwgIWRi ZyAhMTY2MwotIAotIDsgPGxhYmVsPjozMDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOyBwcmVkcyA9ICUyNQotQEAgLTg5MzAsNyArODkzMCw3IEBAIGRlZmluZSBpbnRlcm5h bCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlm b3JtV3JpdGVyCi0gICAlMzIgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlOSB0byBp OCosICFkYmcgITE2NjUKLSAgICUzMyA9IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqICUx IHRvIGk4KiwgIWRiZyAhMTY2NQotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTgu aTMyKGk4KiBhbGlnbiAzMiAlMzIsIGk4KiBhbGlnbiAzMiAlMzMsIGkzMiA2NCwgaTEgZmFsc2Up LCAhZGJnICExNjY1LCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTM0ID0gY2FsbCB6ZXJvZXh0IGkx IEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWoxM1VuaWZvcm1X cml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWdu ZXh0ICUzMSwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU5LCAlInN0cnVj dC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxICUxMCksICFkYmcg ITE2NjYKLSsgICUzNCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFw cGx5SWZQcm9wZXJFbmNvZGluZ0lqMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3Jt RUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMzEsICVjbGFzcy5Vbmlmb3JtV3Jp dGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIgJTksICUic3RydWN0LlBy aW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5j b2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEgJTEwKSwgIWRiZyAhMTY2NgotICAgYnIgaTEgJTM0LCBs YWJlbCAlNjAsIGxhYmVsICUzNSwgIWRiZyAhMTY2NwotIAotIDsgPGxhYmVsPjozNTogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICUzMAotQEAgLTg5MzgsNyAr ODkzOCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFp bDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0gICAlMzcgPSBiaXRjYXN0ICVjbGFz cy5Vbmlmb3JtV3JpdGVyKiAlMTEgdG8gaTgqLCAhZGJnICExNjY5Ci0gICAlMzggPSBiaXRjYXN0 ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITE2NjkKLSAgIGNhbGwgdm9p ZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4LmkzMihpOCogYWxpZ24gMzIgJTM3LCBpOCogYWxpZ24g MzIgJTM4LCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY2OSwgIXRiYWEuc3RydWN0ICExOTcK LS0gICUzOSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQ cm9wZXJFbmNvZGluZ0lmMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5T XzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMzYsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBi eXZhbCBhbGlnbiAzMiAlMTEsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIq IGJ5dmFsIGFsaWduIDEgJTEyKSwgIWRiZyAhMTY3MAotKyAgJTM5ID0gY2FsbCB6ZXJvZXh0IGkx IEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWYxM1VuaWZvcm1X cml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWdu ZXh0ICUzNiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVy KSBhbGlnbiAzMiAlMTEsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5 dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEgJTEyKSwg IWRiZyAhMTY3MAotICAgYnIgaTEgJTM5LCBsYWJlbCAlNjAsIGxhYmVsICU0MCwgIWRiZyAhMTY3 MQotIAotIDsgPGxhYmVsPjo0MDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg OyBwcmVkcyA9ICUzNQotQEAgLTg5NDYsNyArODk0Niw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJv ZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3Jp dGVyCi0gICAlNDIgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMTMgdG8gaTgqLCAh ZGJnICExNjczCi0gICAlNDMgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBp OCosICFkYmcgITE2NzMKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4LmkzMihp OCogYWxpZ24gMzIgJTQyLCBpOCogYWxpZ24gMzIgJTQzLCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRi ZyAhMTY3MywgIXRiYWEuc3RydWN0ICExOTcKLS0gICU0NCA9IGNhbGwgemVyb2V4dCBpMSBAX1pO OVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l4MTNVbmlmb3JtV3JpdGVy TlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAl NDEsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlMTMsICUic3RydWN0LlBy aW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEgJTE0KSwgIWRiZyAhMTY3 NAotKyAgJTQ0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJ ZlByb3BlckVuY29kaW5nSXgxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUVi TlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU0MSwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIq IGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlMTMsICUic3RydWN0LlByaW50 SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rp bmc0VW5pZm9ybSIpIGFsaWduIDEgJTE0KSwgIWRiZyAhMTY3NAotICAgYnIgaTEgJTQ0LCBsYWJl bCAlNjAsIGxhYmVsICU0NSwgIWRiZyAhMTY3NQotIAotIDsgPGxhYmVsPjo0NTogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICU0MAotQEAgLTg5NTQsNyArODk1 NCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0 c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0gICAlNDcgPSBiaXRjYXN0ICVjbGFzcy5V bmlmb3JtV3JpdGVyKiAlMTUgdG8gaTgqLCAhZGJnICExNjc3Ci0gICAlNDggPSBiaXRjYXN0ICVj bGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITE2NzcKLSAgIGNhbGwgdm9pZCBA bGx2bS5tZW1jcHkucDBpOC5wMGk4LmkzMihpOCogYWxpZ24gMzIgJTQ3LCBpOCogYWxpZ24gMzIg JTQ4LCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY3NywgIXRiYWEuc3RydWN0ICExOTcKLS0g ICU0OSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9w ZXJFbmNvZGluZ0l5MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhF bmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNDYsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZh bCBhbGlnbiAzMiAlMTUsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5 dmFsIGFsaWduIDEgJTE2KSwgIWRiZyAhMTY3OAotKyAgJTQ5ID0gY2FsbCB6ZXJvZXh0IGkxIEBf Wk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXkxM1VuaWZvcm1Xcml0 ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0 ICU0NiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBh bGlnbiAzMiAlMTUsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFs KCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEgJTE2KSwgIWRi ZyAhMTY3OAotICAgYnIgaTEgJTQ5LCBsYWJlbCAlNjAsIGxhYmVsICU1MCwgIWRiZyAhMTY3OQot IAotIDsgPGxhYmVsPjo1MDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBw cmVkcyA9ICU0NQotQEAgLTg5NjIsNyArODk2Miw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0 IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVy Ci0gICAlNTIgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMTcgdG8gaTgqLCAhZGJn ICExNjgxCi0gICAlNTMgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBpOCos ICFkYmcgITE2ODEKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4LmkzMihpOCog YWxpZ24gMzIgJTUyLCBpOCogYWxpZ24gMzIgJTUzLCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAh MTY4MSwgIXRiYWEuc3RydWN0ICExOTcKLS0gICU1NCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVBy aW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lkMTNVbmlmb3JtV3JpdGVyTlNf MTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNTEs ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlMTcsICUic3RydWN0LlByaW50 SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEgJTE4KSwgIWRiZyAhMTY4Mgot KyAgJTU0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlBy b3BlckVuY29kaW5nSWQxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNf OEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU1MSwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5 dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlMTcsICUic3RydWN0LlByaW50SW5m bzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0 VW5pZm9ybSIpIGFsaWduIDEgJTE4KSwgIWRiZyAhMTY4MgotICAgYnIgaTEgJTU0LCBsYWJlbCAl NjAsIGxhYmVsICU1NSwgIWRiZyAhMTY4MwotIAotIDsgPGxhYmVsPjo1NTogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICU1MAotQEAgLTg5NzAsNyArODk3MCw3 IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dp dGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0gICAlNTcgPSBiaXRjYXN0ICVjbGFzcy5Vbmlm b3JtV3JpdGVyKiAlMTkgdG8gaTgqLCAhZGJnICExNjg1Ci0gICAlNTggPSBiaXRjYXN0ICVjbGFz cy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITE2ODUKLSAgIGNhbGwgdm9pZCBAbGx2 bS5tZW1jcHkucDBpOC5wMGk4LmkzMihpOCogYWxpZ24gMzIgJTU3LCBpOCogYWxpZ24gMzIgJTU4 LCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY4NSwgIXRiYWEuc3RydWN0ICExOTcKLS0gICU1 OSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJF bmNvZGluZ0lQdjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5j b2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTU2LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwg YWxpZ24gMzIgJTE5LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZh bCBhbGlnbiAxICUyMCksICFkYmcgITE2ODYKLSsgICU1OSA9IGNhbGwgemVyb2V4dCBpMSBAX1pO OVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lQdjEzVW5pZm9ybVdyaXRl ck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQg JTU2LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFs aWduIDMyICUxOSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwo JSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSAlMjApLCAhZGJn ICExNjg2Ci0gICBiciBsYWJlbCAlNjAsICFkYmcgITE2ODMKLSAKLSA7IDxsYWJlbD46NjA6ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlNTUsICU1MCwgJTQ1 LCAlNDAsICUzNSwgJTMwLCAlMjUsICUzCi1AQCAtODk3OSw3ICs4OTc5LDcgQEAgZGVmaW5lIGlu dGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kx M1VuaWZvcm1Xcml0ZXIKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlu bGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50 SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0liMTNVbmlmb3JtV3JpdGVyTlNfMTZF bmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNz LlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29k aW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE2ODggewotK2Rl ZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlBy b3BlckVuY29kaW5nSWIxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNf OEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwo JWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29k aW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0i KSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE2ODggewotICAgJTQgPSBhbGxvY2EgaTEsIGFs aWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1 LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtOTAwNSw3ICs5MDA1LDcgQEAgZGVmaW5lIGludGVy bmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2Rp bmdJYjEzVW5pZm8KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGlu ZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5m bzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lpMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNv ZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVu aWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5n NFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE2OTcgewotK2RlZmlu ZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3Bl ckVuY29kaW5nSWkxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVu Y29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNs YXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5n NFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBh bGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE2OTcgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWdu IDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBh bGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtOTAzMSw3ICs5MDMxLDcgQEAgZGVmaW5lIGludGVybmFs IHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJ aTEzVW5pZm8KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhp bnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZk ZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lqMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGlu ZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZv cm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVu aWZvcm0iKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3MDYgewotK2RlZmluZSBp bnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVu Y29kaW5nSWoxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29k aW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNz LlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVu aWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGln biAxKSAjMjUgY29tZGF0ICFkYmcgITE3MDYgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEK LSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGln biAxLCAhdGJhYSAhMTkzCi1AQCAtOTA1Nyw3ICs5MDU3LDcgQEAgZGVmaW5lIGludGVybmFsIHpl cm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJajEz VW5pZm8KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQg bm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRh aWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lmMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRV bmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1X cml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZv cm0iKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3MTUgewotK2RlZmluZSBpbnRl cm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29k aW5nSWYxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5n RVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVu aWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZv cm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAx KSAjMjUgY29tZGF0ICFkYmcgITE3MTUgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAg ICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAx LCAhdGJhYSAhMTkzCi1AQCAtOTA4Myw3ICs5MDgzLDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9l eHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZjEzVW5p Zm8KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91 bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwy MWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l4MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlm b3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0 ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0i KiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3MjQgewotK2RlZmluZSBpbnRlcm5h bCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5n SXgxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQw X1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZv cm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0i KiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAj MjUgY29tZGF0ICFkYmcgITE3MjQgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1 ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAh dGJhYSAhMTkzCi1AQCAtOTEwOSw3ICs5MTA5LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQg aTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeDEzVW5pZm8K LSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndp bmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFw cGx5SWZQcm9wZXJFbmNvZGluZ0l5MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3Jt RUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIq IGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBi eXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3MzMgewotK2RlZmluZSBpbnRlcm5hbCB6 ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXkx M1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1Qx XyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1X cml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBi eXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUg Y29tZGF0ICFkYmcgITE3MzMgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0g YWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJh YSAhMTkzCi1AQCAtOTEzNSw3ICs5MTM1LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEg QF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeTEzVW5pZm8KLSB9 Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQK LS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5 SWZQcm9wZXJFbmNvZGluZ0lkMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVF Yk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5 dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZh bCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3NDIgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJv ZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWQxM1Vu aWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhp OCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0 ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZh bCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUgY29t ZGF0ICFkYmcgITE3NDIgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxs b2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAh MTkzCi1AQCAtOTE2MSw3ICs5MTYxLDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9a TjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZDEzVW5pZm8KLSB9Ci0g Ci0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1k ZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQ cm9wZXJFbmNvZGluZ0lQdjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJO U184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZh bCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwg YWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNzUxIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4 dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lQdjEzVW5p Zm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4 IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRl cikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFs KCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEpICMyNSBjb21k YXQgIWRiZyAhMTc1MSB7Ci0gICAlNCA9IGFsbG9jYSBpMSwgYWxpZ24gMQotICAgJTUgPSBhbGxv Y2EgaTgsIGFsaWduIDEKLSAgIHN0b3JlIGk4ICUwLCBpOCogJTUsIGFsaWduIDEsICF0YmFhICEx OTMKLUBAIC05OTg0LDcgKzk5ODQsNyBAQCBkZWZpbmUgaW50ZXJuYWwgaTMyIEBfWk43ZGV0YWls czE4X2NtX3ByaW50X3R5cGVfb2NsSVB2RUVOU18xOFNIQURFUl9QUklOVEZfVFlQRQotIH0KLSAK LSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBub3Vud2luZAotLWRl ZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5j b2RpbmdJMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGlu Z0VUX1QwXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIs ICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEpICMy NSBjb21kYXQgIWRiZyAhMjA1NSB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQ cmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29k aW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVRfVDBfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5 aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIsICUic3RydWN0 LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6 RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjA1NSB7Ci0gICAl NCA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgJWNsYXNzLlZhcnlpbmdXcml0 ZXIsIGFsaWduIDMyCi0gICAlNiA9IGFsbG9jYSAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5n NFZhcnlpbmciLCBhbGlnbiAxCi1AQCAtMTAwMDcsNyArMTAwMDcsNyBAQCBkZWZpbmUgaW50ZXJu YWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFy eWluZ1dyaXRlcgotICAgJTIyID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTUgdG8g aTgqLCAhZGJnICEyMDU3Ci0gICAlMjMgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAl MSB0byBpOCosICFkYmcgITIwNTcKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4 LmkzMihpOCogYWxpZ24gMzIgJTIyLCBpOCogYWxpZ24gMzIgJTIzLCBpMzIgNjQsIGkxIGZhbHNl KSwgIWRiZyAhMjA1NywgIXRiYWEuc3RydWN0ICExOTcKLS0gICUyNCA9IGNhbGwgemVyb2V4dCBp MSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0liMTNWYXJ5aW5n V3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2ln bmV4dCAlMjEsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlNSwgJSJzdHJ1 Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSAlNiksICFkYmcg ITIwNTgKLSsgICUyNCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFw cGx5SWZQcm9wZXJFbmNvZGluZ0liMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5n RUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMjEsICVjbGFzcy5WYXJ5aW5nV3Jp dGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIgJTUsICUic3RydWN0LlBy aW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5j b2Rpbmc0VmFyeWluZyIpIGFsaWduIDEgJTYpLCAhZGJnICEyMDU4Ci0gICBiciBpMSAlMjQsIGxh YmVsICU2MCwgbGFiZWwgJTI1LCAhZGJnICEyMDU5Ci0gCi0gOyA8bGFiZWw+OjI1OiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTMKLUBAIC0xMDAxNSw3ICsx MDAxNSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFp bDE0c3dpdGNoRW5jb2RpbmdJMTNWYXJ5aW5nV3JpdGVyCi0gICAlMjcgPSBiaXRjYXN0ICVjbGFz cy5WYXJ5aW5nV3JpdGVyKiAlNyB0byBpOCosICFkYmcgITIwNjEKLSAgICUyOCA9IGJpdGNhc3Qg JWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMjA2MQotICAgY2FsbCB2b2lk IEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTMyKGk4KiBhbGlnbiAzMiAlMjcsIGk4KiBhbGlnbiAz MiAlMjgsIGkzMiA2NCwgaTEgZmFsc2UpLCAhZGJnICEyMDYxLCAhdGJhYS5zdHJ1Y3QgITE5Nwot LSAgJTI5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlBy b3BlckVuY29kaW5nSWkxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNf OEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUyNiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5 dmFsIGFsaWduIDMyICU3LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBi eXZhbCBhbGlnbiAxICU4KSwgIWRiZyAhMjA2MgotKyAgJTI5ID0gY2FsbCB6ZXJvZXh0IGkxIEBf Wk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWkxM1ZhcnlpbmdXcml0 ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0 ICUyNiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBh bGlnbiAzMiAlNywgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwo JSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSAlOCksICFkYmcg ITIwNjIKLSAgIGJyIGkxICUyOSwgbGFiZWwgJTYwLCBsYWJlbCAlMzAsICFkYmcgITIwNjMKLSAK LSA7IDxsYWJlbD46MzA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJl ZHMgPSAlMjUKLUBAIC0xMDAyMyw3ICsxMDAyMyw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0 IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNWYXJ5aW5nV3JpdGVy Ci0gICAlMzIgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlOSB0byBpOCosICFkYmcg ITIwNjUKLSAgICUzMyA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxIHRvIGk4Kiwg IWRiZyAhMjA2NQotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTMyKGk4KiBh bGlnbiAzMiAlMzIsIGk4KiBhbGlnbiAzMiAlMzMsIGkzMiA2NCwgaTEgZmFsc2UpLCAhZGJnICEy MDY1LCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTM0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJp bnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWoxM1ZhcnlpbmdXcml0ZXJOU18x NkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUzMSwg JWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU5LCAlInN0cnVjdC5QcmludElu Zm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxICUxMCksICFkYmcgITIwNjYKLSsg ICUzNCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9w ZXJFbmNvZGluZ0lqMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhF bmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMzEsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZh bCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIgJTksICUic3RydWN0LlByaW50SW5mbzo6 RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFy eWluZyIpIGFsaWduIDEgJTEwKSwgIWRiZyAhMjA2NgotICAgYnIgaTEgJTM0LCBsYWJlbCAlNjAs IGxhYmVsICUzNSwgIWRiZyAhMjA2NwotIAotIDsgPGxhYmVsPjozNTogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICUzMAotQEAgLTEwMDMxLDcgKzEwMDMxLDcg QEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0 Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXIKLSAgICUzNyA9IGJpdGNhc3QgJWNsYXNzLlZhcnlp bmdXcml0ZXIqICUxMSB0byBpOCosICFkYmcgITIwNjkKLSAgICUzOCA9IGJpdGNhc3QgJWNsYXNz LlZhcnlpbmdXcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMjA2OQotICAgY2FsbCB2b2lkIEBsbHZt Lm1lbWNweS5wMGk4LnAwaTguaTMyKGk4KiBhbGlnbiAzMiAlMzcsIGk4KiBhbGlnbiAzMiAlMzgs IGkzMiA2NCwgaTEgZmFsc2UpLCAhZGJnICEyMDY5LCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTM5 ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVu Y29kaW5nSWYxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29k aW5nRVQwX1QxXyhpOCBzaWduZXh0ICUzNiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFs aWduIDMyICUxMSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwg YWxpZ24gMSAlMTIpLCAhZGJnICEyMDcwCi0rICAlMzkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQ cmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZjEzVmFyeWluZ1dyaXRlck5T XzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTM2 LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWdu IDMyICUxMSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJz dHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSAlMTIpLCAhZGJnICEy MDcwCi0gICBiciBpMSAlMzksIGxhYmVsICU2MCwgbGFiZWwgJTQwLCAhZGJnICEyMDcxCi0gCi0g OyA8bGFiZWw+OjQwOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRz ID0gJTM1Ci1AQCAtMTAwMzksNyArMTAwMzksNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBp MSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dyaXRlcgot ICAgJTQyID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTEzIHRvIGk4KiwgIWRiZyAh MjA3MwotICAgJTQzID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTEgdG8gaTgqLCAh ZGJnICEyMDczCi0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pMzIoaTgqIGFs aWduIDMyICU0MiwgaTgqIGFsaWduIDMyICU0MywgaTMyIDY0LCBpMSBmYWxzZSksICFkYmcgITIw NzMsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlNDQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmlu dEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeDEzVmFyeWluZ1dyaXRlck5TXzE2 RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTQxLCAl Y2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIgJTEzLCAlInN0cnVjdC5QcmludElu Zm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxICUxNCksICFkYmcgITIwNzQKLSsg ICU0NCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9w ZXJFbmNvZGluZ0l4MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhF bmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNDEsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZh bCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIgJTEzLCAlInN0cnVjdC5QcmludEluZm86 OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZh cnlpbmciKSBhbGlnbiAxICUxNCksICFkYmcgITIwNzQKLSAgIGJyIGkxICU0NCwgbGFiZWwgJTYw LCBsYWJlbCAlNDUsICFkYmcgITIwNzUKLSAKLSA7IDxsYWJlbD46NDU6ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlNDAKLUBAIC0xMDA0Nyw3ICsxMDA0Nyw3 IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dp dGNoRW5jb2RpbmdJMTNWYXJ5aW5nV3JpdGVyCi0gICAlNDcgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5 aW5nV3JpdGVyKiAlMTUgdG8gaTgqLCAhZGJnICEyMDc3Ci0gICAlNDggPSBiaXRjYXN0ICVjbGFz cy5WYXJ5aW5nV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITIwNzcKLSAgIGNhbGwgdm9pZCBAbGx2 bS5tZW1jcHkucDBpOC5wMGk4LmkzMihpOCogYWxpZ24gMzIgJTQ3LCBpOCogYWxpZ24gMzIgJTQ4 LCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMjA3NywgIXRiYWEuc3RydWN0ICExOTcKLS0gICU0 OSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJF bmNvZGluZ0l5MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNv ZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNDYsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBh bGlnbiAzMiAlMTUsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFs IGFsaWduIDEgJTE2KSwgIWRiZyAhMjA3OAotKyAgJTQ5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45 UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXkxM1ZhcnlpbmdXcml0ZXJO U18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU0 NiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGln biAzMiAlMTUsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUi c3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEgJTE2KSwgIWRiZyAh MjA3OAotICAgYnIgaTEgJTQ5LCBsYWJlbCAlNjAsIGxhYmVsICU1MCwgIWRiZyAhMjA3OQotIAot IDsgPGxhYmVsPjo1MDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVk cyA9ICU0NQotQEAgLTEwMDU1LDcgKzEwMDU1LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQg aTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXIK LSAgICU1MiA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxNyB0byBpOCosICFkYmcg ITIwODEKLSAgICU1MyA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxIHRvIGk4Kiwg IWRiZyAhMjA4MQotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTMyKGk4KiBh bGlnbiAzMiAlNTIsIGk4KiBhbGlnbiAzMiAlNTMsIGkzMiA2NCwgaTEgZmFsc2UpLCAhZGJnICEy MDgxLCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTU0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJp bnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWQxM1ZhcnlpbmdXcml0ZXJOU18x NkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU1MSwg JWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICUxNywgJSJzdHJ1Y3QuUHJpbnRJ bmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSAlMTgpLCAhZGJnICEyMDgyCi0r ICAlNTQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJv cGVyRW5jb2RpbmdJZDEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184 RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTUxLCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2 YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyICUxNywgJSJzdHJ1Y3QuUHJpbnRJbmZv OjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRW YXJ5aW5nIikgYWxpZ24gMSAlMTgpLCAhZGJnICEyMDgyCi0gICBiciBpMSAlNTQsIGxhYmVsICU2 MCwgbGFiZWwgJTU1LCAhZGJnICEyMDgzCi0gCi0gOyA8bGFiZWw+OjU1OiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTUwCi1AQCAtMTAwNjMsNyArMTAwNjMs NyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3 aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dyaXRlcgotICAgJTU3ID0gYml0Y2FzdCAlY2xhc3MuVmFy eWluZ1dyaXRlciogJTE5IHRvIGk4KiwgIWRiZyAhMjA4NQotICAgJTU4ID0gYml0Y2FzdCAlY2xh c3MuVmFyeWluZ1dyaXRlciogJTEgdG8gaTgqLCAhZGJnICEyMDg1Ci0gICBjYWxsIHZvaWQgQGxs dm0ubWVtY3B5LnAwaTgucDBpOC5pMzIoaTgqIGFsaWduIDMyICU1NywgaTgqIGFsaWduIDMyICU1 OCwgaTMyIDY0LCBpMSBmYWxzZSksICFkYmcgITIwODUsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAl NTkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVy RW5jb2RpbmdJUHYxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVu Y29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU1NiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFs IGFsaWduIDMyICUxOSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2 YWwgYWxpZ24gMSAlMjApLCAhZGJnICEyMDg2Ci0rICAlNTkgPSBjYWxsIHplcm9leHQgaTEgQF9a TjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJUHYxM1ZhcnlpbmdXcml0 ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0 ICU1NiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBh bGlnbiAzMiAlMTksICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFs KCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEgJTIwKSwgIWRi ZyAhMjA4NgotICAgYnIgbGFiZWwgJTYwLCAhZGJnICEyMDgzCi0gCi0gOyA8bGFiZWw+OjYwOiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTU1LCAlNTAsICU0 NSwgJTQwLCAlMzUsICUzMCwgJTI1LCAlMwotQEAgLTEwMDcyLDcgKzEwMDcyLDcgQEAgZGVmaW5l IGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGlu Z0kxM1ZhcnlpbmdXcml0ZXIKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5l IGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVBy aW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0liMTNWYXJ5aW5nV3JpdGVyTlNf MTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNs YXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVu Y29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIwODggewot K2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJ ZlByb3BlckVuY29kaW5nSWIxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUVi TlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2 YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVu Y29kaW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlp bmciKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIwODggewotICAgJTQgPSBhbGxvY2EgaTEs IGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgq ICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtMTAwOTgsNyArMTAwOTgsNyBAQCBkZWZpbmUg aW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJF bmNvZGluZ0liMTNWYXJ5aQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUg aW5saW5laGludCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJp bnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWkxM1ZhcnlpbmdXcml0ZXJOU18x NkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xh c3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5j b2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjA5NyB7Ci0r ZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlm UHJvcGVyRW5jb2RpbmdJaTEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJO U184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZh bCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5j b2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWlu ZyIpIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjA5NyB7Ci0gICAlNCA9IGFsbG9jYSBpMSwg YWxpZ24gMQotICAgJTUgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgIHN0b3JlIGk4ICUwLCBpOCog JTUsIGFsaWduIDEsICF0YmFhICExOTMKLUBAIC0xMDEyNCw3ICsxMDEyNCw3IEBAIGRlZmluZSBp bnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVu Y29kaW5nSWkxM1ZhcnlpCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBp bmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmlu dEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJajEzVmFyeWluZ1dyaXRlck5TXzE2 RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFz cy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNv ZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTA2IHsKLStk ZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQ cm9wZXJFbmNvZGluZ0lqMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5T XzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFs KCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNv ZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5n IikgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTA2IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBh bGlnbiAxCi0gICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAl NSwgYWxpZ24gMSwgIXRiYWEgITE5MwotQEAgLTEwMTUwLDcgKzEwMTUwLDcgQEAgZGVmaW5lIGlu dGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5j b2RpbmdJajEzVmFyeWkKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlu bGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50 SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lmMTNWYXJ5aW5nV3JpdGVyTlNfMTZF bmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNz LlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29k aW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxMTUgewotK2Rl ZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlBy b3BlckVuY29kaW5nSWYxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNf OEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwo JWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29k aW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmci KSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxMTUgewotICAgJTQgPSBhbGxvY2EgaTEsIGFs aWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1 LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtMTAxNzYsNyArMTAxNzYsNyBAQCBkZWZpbmUgaW50 ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNv ZGluZ0lmMTNWYXJ5aQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5s aW5laGludCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJ bmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXgxM1ZhcnlpbmdXcml0ZXJOU18xNkVu Y29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3Mu VmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rp bmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjEyNCB7Ci0rZGVm aW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJv cGVyRW5jb2RpbmdJeDEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184 RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCgl Y2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rp bmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIp IGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjEyNCB7Ci0gICAlNCA9IGFsbG9jYSBpMSwgYWxp Z24gMQotICAgJTUgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgIHN0b3JlIGk4ICUwLCBpOCogJTUs IGFsaWduIDEsICF0YmFhICExOTMKLUBAIC0xMDIwMiw3ICsxMDIwMiw3IEBAIGRlZmluZSBpbnRl cm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29k aW5nSXgxM1ZhcnlpCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxp bmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludElu Zm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeTEzVmFyeWluZ1dyaXRlck5TXzE2RW5j b2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5W YXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGlu ZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTMzIHsKLStkZWZp bmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9w ZXJFbmNvZGluZ0l5MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhF bmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVj bGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGlu ZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikg YWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTMzIHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGln biAxCi0gICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwg YWxpZ24gMSwgIXRiYWEgITE5MwotQEAgLTEwMjI4LDcgKzEwMjI4LDcgQEAgZGVmaW5lIGludGVy bmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2Rp bmdJeTEzVmFyeWkKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGlu ZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5m bzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lkMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNv ZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZh cnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5n NFZhcnlpbmciKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxNDIgewotK2RlZmlu ZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3Bl ckVuY29kaW5nSWQxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVu Y29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNs YXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5n NFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBh bGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxNDIgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWdu IDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBh bGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtMTAyNTQsNyArMTAyNTQsNyBAQCBkZWZpbmUgaW50ZXJu YWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGlu Z0lkMTNWYXJ5aQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5l aGludCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZv NmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSVB2MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNv ZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZh cnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5n NFZhcnlpbmciKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxNTEgewotK2RlZmlu ZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3Bl ckVuY29kaW5nSVB2MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhF bmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVj bGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGlu ZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikg YWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTUxIHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGln biAxCi0gICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwg YWxpZ24gMSwgIXRiYWEgITE5MwotZGlmZiAtLWdpdCBhL2J1aWx0aW5zL2J1aWx0aW5zLWNtLTY0 LmxsIGIvYnVpbHRpbnMvYnVpbHRpbnMtY20tNjQubGwKLWluZGV4IDM5YTJkZDhiZS4uMzc1ZDAx YmVkIDEwMDY0NAotLS0tIGEvYnVpbHRpbnMvYnVpbHRpbnMtY20tNjQubGwKLSsrKyBiL2J1aWx0 aW5zL2J1aWx0aW5zLWNtLTY0LmxsCi1AQCAtNTU3LDcgKzU1Nyw3IEBAICRfWk4xM1ZhcnlpbmdX cml0ZXIxMldyaXRlVmVjRWxlbUlQdkVFdnYgPSBjb21kYXQgYW55Ci0gQC5zdHIuMTAgPSBwcml2 YXRlIHVubmFtZWRfYWRkciBjb25zdGFudCBbOCB4IGk4XSBjIiUwMTZsbFhcMDAiLCBhbGlnbiAx Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xv Y2FsIHNpZ25leHQgaTggQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZjYyhpOCBzaWduZXh0 LCBpOCBzaWduZXh0KSAjMCB7Ci0rZGVmaW5lIGludGVybmFsIHNpZ25leHQgaTggQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3NkaXZjYyhpOCBzaWduZXh0LCBpOCBzaWduZXh0KSAjMCB7Ci0gICAl MyA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTQgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU1 ID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi1AQCAtNjE4LDcgKzYxOCw3IEBAIGRlZmluZSBp bnRlcm5hbCA8MSB4IGk4PiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1JTGkxRUVFdTJDTXZi VF9fY1MxX1MxX3UyQ012Ci0gZGVjbGFyZSA8MSB4IGk4PiBAbGx2bS5nZW54LnJkcmVnaW9uaS52 MWk4LnYxaTguaTE2KDwxIHggaTg+LCBpMzIsIGkzMiwgaTMyLCBpMTYsIGkzMikgIzIKLSAKLSA7 IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEg eCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIxX2NTXyg8MSB4IGk4Piwg PDEgeCBpOD4pICMwIHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3NkaXZ1MkNNdmIxX2NTXyg8MSB4IGk4PiwgPDEgeCBpOD4pICMwIHsKLSAgICUz ID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi0gICAlNCA9IGFsbG9jYSA8MSB4IGk4PiwgYWxp Z24gMQotICAgJTUgPSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLUBAIC02MzQsNyArNjM0LDcg QEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2Rp dnUyQ012YjFfY1NfKDwxIHggaTg+LCA8MQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lu bGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDIgeCBpOD4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3NkaXZ1MkNNdmIyX2NTXyg8MiB4IGk4PiwgPDIgeCBpOD4pICMzIHsKLStkZWZp bmUgaW50ZXJuYWwgPDIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIy X2NTXyg8MiB4IGk4PiwgPDIgeCBpOD4pICMzIHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTg+LCBh bGlnbiAyCi0gICAlNCA9IGFsbG9jYSA8MiB4IGk4PiwgYWxpZ24gMgotICAgJTUgPSBhbGxvY2Eg PDIgeCBpOD4sIGFsaWduIDIKLUBAIC02ODAsNyArNjgwLDcgQEAgZGVmaW5lIGludGVybmFsIDwy IHggaTg+IEBfWk43ZGV0YWlsczEzX19pbXBsX2RpdnJlbUlMaTJFRUV1MkNNdmJUX19jUzFfUzFf dTJDTXYKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZp bmUgZHNvX2xvY2FsIDw0IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZi NF9jU18oPDQgeCBpOD4sIDw0IHggaTg+KSAjNSB7Ci0rZGVmaW5lIGludGVybmFsIDw0IHggaTg+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiNF9jU18oPDQgeCBpOD4sIDw0IHgg aTg+KSAjNSB7Ci0gICAlMyA9IGFsbG9jYSA8NCB4IGk4PiwgYWxpZ24gNAotICAgJTQgPSBhbGxv Y2EgPDQgeCBpOD4sIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0Ci1A QCAtODE4LDcgKzgxOCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MTYgeCBpOD4gQF9aTjdkZXRhaWxz MTNfX2ltcGxfZGl2cmVtSUxpMTZFRUV1MkNNdmJUX19jUzFfUzFfdTJDCi0gfQotIAotIDsgRnVu Y3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBp OD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIzMl9jU18oPDMyIHggaTg+LCA8 MzIgeCBpOD4pICMxMSB7Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGk4PiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfc2RpdnUyQ012YjMyX2NTXyg8MzIgeCBpOD4sIDwzMiB4IGk4PikgIzExIHsK LSAgICUzID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLSAgICU0ID0gYWxsb2NhIDwzMiB4 IGk4PiwgYWxpZ24gMzIKLSAgICU1ID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLUBAIC04 NjQsNyArODY0LDcgQEAgZGVmaW5lIGludGVybmFsIDwzMiB4IGk4PiBAX1pON2RldGFpbHMxM19f aW1wbF9kaXZyZW1JTGkzMkVFRXUyQ012YlRfX2NTMV9TMV91MkMKLSB9Ci0gCi0gOyBGdW5jdGlv biBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIHNpZ25leHQgaTgg QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW1jYyhpOCBzaWduZXh0LCBpOCBzaWduZXh0KSAj MCB7Ci0rZGVmaW5lIGludGVybmFsIHNpZ25leHQgaTggQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3NyZW1jYyhpOCBzaWduZXh0LCBpOCBzaWduZXh0KSAjMCB7Ci0gICAlMyA9IGFsbG9jYSBpOCwg YWxpZ24gMQotICAgJTQgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIDwxIHgg aTg+LCBhbGlnbiAxCi1AQCAtODkwLDcgKzg5MCw3IEBAIGRlZmluZSBkc29fbG9jYWwgc2lnbmV4 dCBpOCBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbWNjKGk4IHNpZ25leHQsIGk4IHNpZ25l Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRz b19sb2NhbCA8MSB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjFfY1Nf KDwxIHggaTg+LCA8MSB4IGk4PikgIzAgewotK2RlZmluZSBpbnRlcm5hbCA8MSB4IGk4PiBAX1oy NF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjFfY1NfKDwxIHggaTg+LCA8MSB4IGk4Pikg IzAgewotICAgJTMgPSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLSAgICU0ID0gYWxsb2NhIDwx IHggaTg+LCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotQEAgLTkw NCw3ICs5MDQsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxIHggaTg+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF9zcmVtdTJDTXZiMV9jU18oPDEgeCBpOD4sIDwxCi0gfQotIAotIDsgRnVuY3Rpb24g QXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MiB4IGk4PiBAX1oy NF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjJfY1NfKDwyIHggaTg+LCA8MiB4IGk4Pikg IzMgewotK2RlZmluZSBpbnRlcm5hbCA8MiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf c3JlbXUyQ012YjJfY1NfKDwyIHggaTg+LCA8MiB4IGk4PikgIzMgewotICAgJTMgPSBhbGxvY2Eg PDIgeCBpOD4sIGFsaWduIDIKLSAgICU0ID0gYWxsb2NhIDwyIHggaTg+LCBhbGlnbiAyCi0gICAl NSA9IGFsbG9jYSA8MiB4IGk4PiwgYWxpZ24gMgotQEAgLTkxOCw3ICs5MTgsNyBAQCBkZWZpbmUg ZHNvX2xvY2FsIDwyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMl9j U18oPDIgeCBpOD4sIDwyCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53 aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8NCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf c3JlbXUyQ012YjRfY1NfKDw0IHggaTg+LCA8NCB4IGk4PikgIzUgewotK2RlZmluZSBpbnRlcm5h bCA8NCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjRfY1NfKDw0IHgg aTg+LCA8NCB4IGk4PikgIzUgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpOD4sIGFsaWduIDQKLSAg ICU0ID0gYWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8NCB4IGk4Piwg YWxpZ24gNAotQEAgLTkzMiw3ICs5MzIsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw0IHggaTg+IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiNF9jU18oPDQgeCBpOD4sIDw0Ci0gfQot IAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2Nh bCA8OCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjhfY1NfKDw4IHgg aTg+LCA8OCB4IGk4PikgIzcgewotK2RlZmluZSBpbnRlcm5hbCA8OCB4IGk4PiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjhfY1NfKDw4IHggaTg+LCA8OCB4IGk4PikgIzcgewot ICAgJTMgPSBhbGxvY2EgPDggeCBpOD4sIGFsaWduIDgKLSAgICU0ID0gYWxsb2NhIDw4IHggaTg+ LCBhbGlnbiA4Ci0gICAlNSA9IGFsbG9jYSA8OCB4IGk4PiwgYWxpZ24gOAotQEAgLTk0Niw3ICs5 NDYsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw4IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF9zcmVtdTJDTXZiOF9jU18oPDggeCBpOD4sIDw4Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6 IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MTYgeCBpOD4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxNl9jU18oPDE2IHggaTg+LCA8MTYgeCBpOD4pICM5 IHsKLStkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9z cmVtdTJDTXZiMTZfY1NfKDwxNiB4IGk4PiwgPDE2IHggaTg+KSAjOSB7Ci0gICAlMyA9IGFsbG9j YSA8MTYgeCBpOD4sIGFsaWduIDE2Ci0gICAlNCA9IGFsbG9jYSA8MTYgeCBpOD4sIGFsaWduIDE2 Ci0gICAlNSA9IGFsbG9jYSA8MTYgeCBpOD4sIGFsaWduIDE2Ci1AQCAtOTYwLDcgKzk2MCw3IEBA IGRlZmluZSBkc29fbG9jYWwgPDE2IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVt dTJDTXZiMTZfY1NfKDwxNiB4IGk4PiwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxp bmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGk4PiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfc3JlbXUyQ012YjMyX2NTXyg8MzIgeCBpOD4sIDwzMiB4IGk4PikgIzExIHsKLStk ZWZpbmUgaW50ZXJuYWwgPDMyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJD TXZiMzJfY1NfKDwzMiB4IGk4PiwgPDMyIHggaTg+KSAjMTEgewotICAgJTMgPSBhbGxvY2EgPDMy IHggaTg+LCBhbGlnbiAzMgotICAgJTQgPSBhbGxvY2EgPDMyIHggaTg+LCBhbGlnbiAzMgotICAg JTUgPSBhbGxvY2EgPDMyIHggaTg+LCBhbGlnbiAzMgotQEAgLTk3NCw3ICs5NzQsNyBAQCBkZWZp bmUgZHNvX2xvY2FsIDwzMiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012 YjMyX2NTXyg8MzIgeCBpOD4sCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5v dW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCBzaWduZXh0IGkxNiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfc2RpdnNzKGkxNiBzaWduZXh0LCBpMTYgc2lnbmV4dCkgIzMgewotK2RlZmluZSBpbnRl cm5hbCBzaWduZXh0IGkxNiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnNzKGkxNiBzaWdu ZXh0LCBpMTYgc2lnbmV4dCkgIzMgewotICAgJTMgPSBhbGxvY2EgaTE2LCBhbGlnbiAyCi0gICAl NCA9IGFsbG9jYSBpMTYsIGFsaWduIDIKLSAgICU1ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24g MgotQEAgLTEwNTgsNyArMTA1OCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MSB4IGkxNj4gQF9aTjdk ZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMUVFRXUyQ012YlRfX3NTMV9TMV91MkNNCi0gZGVjbGFy ZSA8MSB4IGkxNj4gQGxsdm0uZ2VueC5yZHJlZ2lvbmkudjFpMTYudjFpMTYuaTE2KDwxIHggaTE2 PiwgaTMyLCBpMzIsIGkzMiwgaTE2LCBpMzIpICMyCi0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9p bmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxIHggaTE2PiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfc2RpdnUyQ012YjFfc1NfKDwxIHggaTE2PiwgPDEgeCBpMTY+KSAjMyB7Ci0r ZGVmaW5lIGludGVybmFsIDwxIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUy Q012YjFfc1NfKDwxIHggaTE2PiwgPDEgeCBpMTY+KSAjMyB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4 IGkxNj4sIGFsaWduIDIKLSAgICU0ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotICAgJTUg PSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi1AQCAtMTA3NCw3ICsxMDc0LDcgQEAgZGVmaW5l IGRzb19sb2NhbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIx X3NTXyg8MSB4IGkxNj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91 bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfc2RpdnUyQ012YjJfc1NfKDwyIHggaTE2PiwgPDIgeCBpMTY+KSAjNSB7Ci0rZGVmaW5lIGlu dGVybmFsIDwyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjJfc1Nf KDwyIHggaTE2PiwgPDIgeCBpMTY+KSAjNSB7Ci0gICAlMyA9IGFsbG9jYSA8MiB4IGkxNj4sIGFs aWduIDQKLSAgICU0ID0gYWxsb2NhIDwyIHggaTE2PiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2Eg PDIgeCBpMTY+LCBhbGlnbiA0Ci1AQCAtMTE0Myw3ICsxMTQzLDcgQEAgZGVmaW5lIGludGVybmFs IDwyIHggaTE2PiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1JTGkyRUVFdTJDTXZiVF9fc1Mx X1MxX3UyQ00KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1k ZWZpbmUgZHNvX2xvY2FsIDw0IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUy Q012YjRfc1NfKDw0IHggaTE2PiwgPDQgeCBpMTY+KSAjNyB7Ci0rZGVmaW5lIGludGVybmFsIDw0 IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjRfc1NfKDw0IHggaTE2 PiwgPDQgeCBpMTY+KSAjNyB7Ci0gICAlMyA9IGFsbG9jYSA8NCB4IGkxNj4sIGFsaWduIDgKLSAg ICU0ID0gYWxsb2NhIDw0IHggaTE2PiwgYWxpZ24gOAotICAgJTUgPSBhbGxvY2EgPDQgeCBpMTY+ LCBhbGlnbiA4Ci1AQCAtMTM1MCw3ICsxMzUwLDcgQEAgZGVmaW5lIGludGVybmFsIDwxNiB4IGkx Nj4gQF9aTjdkZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMTZFRUV1MkNNdmJUX19zUzFfUzFfdTIK LSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNv X2xvY2FsIDwzMiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIzMl9z U18oPDMyIHggaTE2PiwgPDMyIHggaTE2PikgIzEzIHsKLStkZWZpbmUgaW50ZXJuYWwgPDMyIHgg aTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjMyX3NTXyg8MzIgeCBpMTY+ LCA8MzIgeCBpMTY+KSAjMTMgewotICAgJTMgPSBhbGxvY2EgPDMyIHggaTE2PiwgYWxpZ24gNjQK LSAgICU0ID0gYWxsb2NhIDwzMiB4IGkxNj4sIGFsaWduIDY0Ci0gICAlNSA9IGFsbG9jYSA8MzIg eCBpMTY+LCBhbGlnbiA2NAotQEAgLTE0MTksNyArMTQxOSw3IEBAIGRlZmluZSBpbnRlcm5hbCA8 MzIgeCBpMTY+IEBfWk43ZGV0YWlsczEzX19pbXBsX2RpdnJlbUlMaTMyRUVFdTJDTXZiVF9fc1Mx X1MxX3UyCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVm aW5lIGRzb19sb2NhbCBzaWduZXh0IGkxNiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXNz KGkxNiBzaWduZXh0LCBpMTYgc2lnbmV4dCkgIzMgewotK2RlZmluZSBpbnRlcm5hbCBzaWduZXh0 IGkxNiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXNzKGkxNiBzaWduZXh0LCBpMTYgc2ln bmV4dCkgIzMgewotICAgJTMgPSBhbGxvY2EgaTE2LCBhbGlnbiAyCi0gICAlNCA9IGFsbG9jYSBp MTYsIGFsaWduIDIKLSAgICU1ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotQEAgLTE0NDUs NyArMTQ0NSw3IEBAIGRlZmluZSBkc29fbG9jYWwgc2lnbmV4dCBpMTYgQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3NyZW1zcyhpMTYgc2lnbmV4dCwgaTE2IHNpCi0gfQotIAotIDsgRnVuY3Rpb24g QXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkxNj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxX3NTXyg8MSB4IGkxNj4sIDwxIHggaTE2 PikgIzMgewotK2RlZmluZSBpbnRlcm5hbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3NyZW11MkNNdmIxX3NTXyg8MSB4IGkxNj4sIDwxIHggaTE2PikgIzMgewotICAgJTMgPSBh bGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi0gICAlNCA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWdu IDIKLSAgICU1ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotQEAgLTE0NTksNyArMTQ1OSw3 IEBAIGRlZmluZSBkc29fbG9jYWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9z cmVtdTJDTXZiMV9zU18oPDEgeCBpMTY+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5v aW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MiB4IGkxNj4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3NyZW11MkNNdmIyX3NTXyg8MiB4IGkxNj4sIDwyIHggaTE2PikgIzUgewot K2RlZmluZSBpbnRlcm5hbCA8MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11 MkNNdmIyX3NTXyg8MiB4IGkxNj4sIDwyIHggaTE2PikgIzUgewotICAgJTMgPSBhbGxvY2EgPDIg eCBpMTY+LCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSA8MiB4IGkxNj4sIGFsaWduIDQKLSAgICU1 ID0gYWxsb2NhIDwyIHggaTE2PiwgYWxpZ24gNAotQEAgLTE0NzMsNyArMTQ3Myw3IEBAIGRlZmlu ZSBkc29fbG9jYWwgPDIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZi Ml9zU18oPDIgeCBpMTY+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5v dW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8NCB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3NyZW11MkNNdmI0X3NTXyg8NCB4IGkxNj4sIDw0IHggaTE2PikgIzcgewotK2RlZmluZSBp bnRlcm5hbCA8NCB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI0X3NT Xyg8NCB4IGkxNj4sIDw0IHggaTE2PikgIzcgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpMTY+LCBh bGlnbiA4Ci0gICAlNCA9IGFsbG9jYSA8NCB4IGkxNj4sIGFsaWduIDgKLSAgICU1ID0gYWxsb2Nh IDw0IHggaTE2PiwgYWxpZ24gOAotQEAgLTE0ODcsNyArMTQ4Nyw3IEBAIGRlZmluZSBkc29fbG9j YWwgPDQgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiNF9zU18oPDQg eCBpMTY+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0t ZGVmaW5lIGRzb19sb2NhbCA8OCB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11 MkNNdmI4X3NTXyg8OCB4IGkxNj4sIDw4IHggaTE2PikgIzkgewotK2RlZmluZSBpbnRlcm5hbCA8 OCB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI4X3NTXyg8OCB4IGkx Nj4sIDw4IHggaTE2PikgIzkgewotICAgJTMgPSBhbGxvY2EgPDggeCBpMTY+LCBhbGlnbiAxNgot ICAgJTQgPSBhbGxvY2EgPDggeCBpMTY+LCBhbGlnbiAxNgotICAgJTUgPSBhbGxvY2EgPDggeCBp MTY+LCBhbGlnbiAxNgotQEAgLTE1MDEsNyArMTUwMSw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDgg eCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiOF9zU18oPDggeCBpMTY+ LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5l IGRzb19sb2NhbCA8MTYgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZi MTZfc1NfKDwxNiB4IGkxNj4sIDwxNiB4IGkxNj4pICMxMSB7Ci0rZGVmaW5lIGludGVybmFsIDwx NiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxNl9zU18oPDE2IHgg aTE2PiwgPDE2IHggaTE2PikgIzExIHsKLSAgICUzID0gYWxsb2NhIDwxNiB4IGkxNj4sIGFsaWdu IDMyCi0gICAlNCA9IGFsbG9jYSA8MTYgeCBpMTY+LCBhbGlnbiAzMgotICAgJTUgPSBhbGxvY2Eg PDE2IHggaTE2PiwgYWxpZ24gMzIKLUBAIC0xNTE1LDcgKzE1MTUsNyBAQCBkZWZpbmUgZHNvX2xv Y2FsIDwxNiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxNl9zU18o PDE2IHggaTE2PgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAot LWRlZmluZSBkc29fbG9jYWwgPDMyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3Jl bXUyQ012YjMyX3NTXyg8MzIgeCBpMTY+LCA8MzIgeCBpMTY+KSAjMTMgewotK2RlZmluZSBpbnRl cm5hbCA8MzIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMzJfc1Nf KDwzMiB4IGkxNj4sIDwzMiB4IGkxNj4pICMxMyB7Ci0gICAlMyA9IGFsbG9jYSA8MzIgeCBpMTY+ LCBhbGlnbiA2NAotICAgJTQgPSBhbGxvY2EgPDMyIHggaTE2PiwgYWxpZ24gNjQKLSAgICU1ID0g YWxsb2NhIDwzMiB4IGkxNj4sIGFsaWduIDY0Ci1AQCAtMTUyOSw3ICsxNTI5LDcgQEAgZGVmaW5l IGRzb19sb2NhbCA8MzIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZi MzJfc1NfKDwzMiB4IGkxNj4KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91 bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIGkzMiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2Rp dmlpKGkzMiwgaTMyKSAjMTQgewotK2RlZmluZSBpbnRlcm5hbCBpMzIgQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3NkaXZpaShpMzIsIGkzMikgIzE0IHsKLSAgICUzID0gYWxsb2NhIGkzMiwgYWxp Z24gNAotICAgJTQgPSBhbGxvY2EgaTMyLCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8MSB4IGkz Mj4sIGFsaWduIDQKLUBAIC0xNzMwLDcgKzE3MzAsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDEgeCBp MzI+IEBfWk43ZGV0YWlsczEzX19pbXBsX2RpdnJlbUlMaTFFRUV1MkNNdmJUX19pUzFfUzFfdTJD TQotIGRlY2xhcmUgPDEgeCBpMzI+IEBsbHZtLmdlbngucmRyZWdpb25pLnYxaTMyLnYxaTMyLmkx Nig8MSB4IGkzMj4sIGkzMiwgaTMyLCBpMzIsIGkxNiwgaTMyKSAjMgotIAotIDsgRnVuY3Rpb24g QXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkzMj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIxX2lTXyg8MSB4IGkzMj4sIDwxIHggaTMy PikgIzE0IHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF9zZGl2dTJDTXZiMV9pU18oPDEgeCBpMzI+LCA8MSB4IGkzMj4pICMxNCB7Ci0gICAlMyA9 IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIDwxIHggaTMyPiwgYWxp Z24gNAotICAgJTUgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci1AQCAtMTc0Niw3ICsxNzQ2 LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3NkaXZ1MkNNdmIxX2lTXyg8MSB4IGkzMj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczog bm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHggaTMyPiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjJfaVNfKDwyIHggaTMyPiwgPDIgeCBpMzI+KSAjMTUg ewotK2RlZmluZSBpbnRlcm5hbCA8MiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Nk aXZ1MkNNdmIyX2lTXyg8MiB4IGkzMj4sIDwyIHggaTMyPikgIzE1IHsKLSAgICUzID0gYWxsb2Nh IDwyIHggaTMyPiwgYWxpZ24gOAotICAgJTQgPSBhbGxvY2EgPDIgeCBpMzI+LCBhbGlnbiA4Ci0g ICAlNSA9IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWduIDgKLUBAIC0xOTMyLDcgKzE5MzIsNyBAQCBk ZWZpbmUgaW50ZXJuYWwgPDIgeCBpMzI+IEBfWk43ZGV0YWlsczEzX19pbXBsX2RpdnJlbUlMaTJF RUV1MkNNdmJUX19pUzFfUzFfdTJDTQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGlu ZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF9zZGl2dTJDTXZiNF9pU18oPDQgeCBpMzI+LCA8NCB4IGkzMj4pICMxNiB7Ci0rZGVm aW5lIGludGVybmFsIDw0IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012 YjRfaVNfKDw0IHggaTMyPiwgPDQgeCBpMzI+KSAjMTYgewotICAgJTMgPSBhbGxvY2EgPDQgeCBp MzI+LCBhbGlnbiAxNgotICAgJTQgPSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotICAgJTUg PSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotQEAgLTI0OTAsNyArMjQ5MCw3IEBAIGRlZmlu ZSBpbnRlcm5hbCA8MTYgeCBpMzI+IEBfWk43ZGV0YWlsczEzX19pbXBsX2RpdnJlbUlMaTE2RUVF dTJDTXZiVF9faVMxX1MxX3UyCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5v dW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF9zZGl2dTJDTXZiMzJfaVNfKDwzMiB4IGkzMj4sIDwzMiB4IGkzMj4pICMxOSB7Ci0rZGVm aW5lIGludGVybmFsIDwzMiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNN dmIzMl9pU18oPDMyIHggaTMyPiwgPDMyIHggaTMyPikgIzE5IHsKLSAgICUzID0gYWxsb2NhIDwz MiB4IGkzMj4sIGFsaWduIDEyOAotICAgJTQgPSBhbGxvY2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4 Ci0gICAlNSA9IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAxMjgKLUBAIC0yNjc2LDcgKzI2NzYs NyBAQCBkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTMyPiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZy ZW1JTGkzMkVFRXUyQ012YlRfX2lTMV9TMV91MgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBu b2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgaTMyIEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF9zcmVtaWkoaTMyLCBpMzIpICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIGkzMiBAX1oy NF9fY21faW50cmluc2ljX2ltcGxfc3JlbWlpKGkzMiwgaTMyKSAjMTQgewotICAgJTMgPSBhbGxv Y2EgaTMyLCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSBpMzIsIGFsaWduIDQKLSAgICU1ID0gYWxs b2NhIDwxIHggaTMyPiwgYWxpZ24gNAotQEAgLTI3MDIsNyArMjcwMiw3IEBAIGRlZmluZSBkc29f bG9jYWwgaTMyIEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtaWkoaTMyLCBpMzIpICMxNCB7 Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRz b19sb2NhbCA8MSB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxX2lT Xyg8MSB4IGkzMj4sIDwxIHggaTMyPikgIzE0IHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMzI+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMV9pU18oPDEgeCBpMzI+LCA8MSB4 IGkzMj4pICMxNCB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLSAgICU0ID0g YWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGln biA0Ci1AQCAtMjcxNiw3ICsyNzE2LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkzMj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxX2lTXyg8MSB4IGkzMj4sIDwKLSB9Ci0g Ci0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2Fs IDwyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjJfaVNfKDwyIHgg aTMyPiwgPDIgeCBpMzI+KSAjMTUgewotK2RlZmluZSBpbnRlcm5hbCA8MiB4IGkzMj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIyX2lTXyg8MiB4IGkzMj4sIDwyIHggaTMyPikg IzE1IHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTMyPiwgYWxpZ24gOAotICAgJTQgPSBhbGxvY2Eg PDIgeCBpMzI+LCBhbGlnbiA4Ci0gICAlNSA9IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWduIDgKLUBA IC0yNzMwLDcgKzI3MzAsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwyIHggaTMyPiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjJfaVNfKDwyIHggaTMyPiwgPAotIH0KLSAKLSA7IEZ1 bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBp MzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiNF9pU18oPDQgeCBpMzI+LCA8 NCB4IGkzMj4pICMxNiB7Ci0rZGVmaW5lIGludGVybmFsIDw0IHggaTMyPiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfc3JlbXUyQ012YjRfaVNfKDw0IHggaTMyPiwgPDQgeCBpMzI+KSAjMTYgewot ICAgJTMgPSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotICAgJTQgPSBhbGxvY2EgPDQgeCBp MzI+LCBhbGlnbiAxNgotICAgJTUgPSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotQEAgLTI3 NDQsNyArMjc0NCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDQgeCBpMzI+IEBfWjI0X19jbV9pbnRy aW5zaWNfaW1wbF9zcmVtdTJDTXZiNF9pU18oPDQgeCBpMzI+LCA8Ci0gfQotIAotIDsgRnVuY3Rp b24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8OCB4IGkzMj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI4X2lTXyg8OCB4IGkzMj4sIDw4IHgg aTMyPikgIzE3IHsKLStkZWZpbmUgaW50ZXJuYWwgPDggeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF9zcmVtdTJDTXZiOF9pU18oPDggeCBpMzI+LCA8OCB4IGkzMj4pICMxNyB7Ci0gICAl MyA9IGFsbG9jYSA8OCB4IGkzMj4sIGFsaWduIDMyCi0gICAlNCA9IGFsbG9jYSA8OCB4IGkzMj4s IGFsaWduIDMyCi0gICAlNSA9IGFsbG9jYSA8OCB4IGkzMj4sIGFsaWduIDMyCi1AQCAtMjc1OCw3 ICsyNzU4LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8OCB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNp Y19pbXBsX3NyZW11MkNNdmI4X2lTXyg8OCB4IGkzMj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBB dHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxNiB4IGkzMj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxNl9pU18oPDE2IHggaTMyPiwgPDE2IHgg aTMyPikgIzE4IHsKLStkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTMyPiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfc3JlbXUyQ012YjE2X2lTXyg8MTYgeCBpMzI+LCA8MTYgeCBpMzI+KSAjMTggewot ICAgJTMgPSBhbGxvY2EgPDE2IHggaTMyPiwgYWxpZ24gNjQKLSAgICU0ID0gYWxsb2NhIDwxNiB4 IGkzMj4sIGFsaWduIDY0Ci0gICAlNSA9IGFsbG9jYSA8MTYgeCBpMzI+LCBhbGlnbiA2NAotQEAg LTI3NzIsNyArMjc3Miw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDE2IHggaTMyPiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjE2X2lTXyg8MTYgeCBpMzI+Ci0gfQotIAotIDsgRnVu Y3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBp MzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMzJfaVNfKDwzMiB4IGkzMj4s IDwzMiB4IGkzMj4pICMxOSB7Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGkzMj4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIzMl9pU18oPDMyIHggaTMyPiwgPDMyIHggaTMyPikg IzE5IHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFsaWduIDEyOAotICAgJTQgPSBhbGxv Y2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4Ci0gICAlNSA9IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGln biAxMjgKLUBAIC0yNzg2LDcgKzI3ODYsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGkzMj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIzMl9pU18oPDMyIHggaTMyPgotIH0K LSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9j YWwgemVyb2V4dCBpOCBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdmhoKGk4IHplcm9leHQs IGk4IHplcm9leHQpICMyMSB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTggQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3VkaXZoaChpOCB6ZXJvZXh0LCBpOCB6ZXJvZXh0KSAjMjEgewotICAg JTMgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU0ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICAl NSA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotQEAgLTI4NDQsNyArMjg0NCw3IEBAIGRlZmlu ZSBpbnRlcm5hbCA8MSB4IGk4PiBAX1pON2RldGFpbHMxNF9faW1wbF91ZGl2cmVtSUxpMUVFRXUy Q012YlRfX2hTMV9TMV91MkNNCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5v dW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfdWRpdnUyQ012YjFfaFNfKDwxIHggaTg+LCA8MSB4IGk4PikgIzIxIHsKLStkZWZpbmUgaW50 ZXJuYWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIxX2hTXyg8 MSB4IGk4PiwgPDEgeCBpOD4pICMyMSB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24g MQotICAgJTQgPSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIDwxIHgg aTg+LCBhbGlnbiAxCi1AQCAtMjg2MCw3ICsyODYwLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4 IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjFfaFNfKDwxIHggaTg+LCA8 MQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBk c29fbG9jYWwgPDIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIyX2hT Xyg8MiB4IGk4PiwgPDIgeCBpOD4pICMyMiB7Ci0rZGVmaW5lIGludGVybmFsIDwyIHggaTg+IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMl9oU18oPDIgeCBpOD4sIDwyIHggaTg+ KSAjMjIgewotICAgJTMgPSBhbGxvY2EgPDIgeCBpOD4sIGFsaWduIDIKLSAgICU0ID0gYWxsb2Nh IDwyIHggaTg+LCBhbGlnbiAyCi0gICAlNSA9IGFsbG9jYSA8MiB4IGk4PiwgYWxpZ24gMgotQEAg LTI5MDYsNyArMjkwNiw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MiB4IGk4PiBAX1pON2RldGFpbHMx NF9faW1wbF91ZGl2cmVtSUxpMkVFRXUyQ012YlRfX2hTMV9TMV91MkNNCi0gfQotIAotIDsgRnVu Y3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8NCB4IGk4 PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjRfaFNfKDw0IHggaTg+LCA8NCB4 IGk4PikgIzE0IHsKLStkZWZpbmUgaW50ZXJuYWwgPDQgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNp Y19pbXBsX3VkaXZ1MkNNdmI0X2hTXyg8NCB4IGk4PiwgPDQgeCBpOD4pICMxNCB7Ci0gICAlMyA9 IGFsbG9jYSA8NCB4IGk4PiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2EgPDQgeCBpOD4sIGFsaWdu IDQKLSAgICU1ID0gYWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0Ci1AQCAtMzA0NCw3ICszMDQ0LDcg QEAgZGVmaW5lIGludGVybmFsIDwxNiB4IGk4PiBAX1pON2RldGFpbHMxNF9faW1wbF91ZGl2cmVt SUxpMTZFRUV1MkNNdmJUX19oUzFfUzFfdTIKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9p bmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGk4PiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfdWRpdnUyQ012YjMyX2hTXyg8MzIgeCBpOD4sIDwzMiB4IGk4PikgIzE3IHsK LStkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2 dTJDTXZiMzJfaFNfKDwzMiB4IGk4PiwgPDMyIHggaTg+KSAjMTcgewotICAgJTMgPSBhbGxvY2Eg PDMyIHggaTg+LCBhbGlnbiAzMgotICAgJTQgPSBhbGxvY2EgPDMyIHggaTg+LCBhbGlnbiAzMgot ICAgJTUgPSBhbGxvY2EgPDMyIHggaTg+LCBhbGlnbiAzMgotQEAgLTMwOTAsNyArMzA5MCw3IEBA IGRlZmluZSBpbnRlcm5hbCA8MzIgeCBpOD4gQF9aTjdkZXRhaWxzMTRfX2ltcGxfdWRpdnJlbUlM aTMyRUVFdTJDTXZiVF9faFMxX1MxX3UyCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5s aW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCB6ZXJvZXh0IGk4IEBfWjI0X19jbV9pbnRy aW5zaWNfaW1wbF91cmVtaGgoaTggemVyb2V4dCwgaTggemVyb2V4dCkgIzIxIHsKLStkZWZpbmUg aW50ZXJuYWwgemVyb2V4dCBpOCBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbWhoKGk4IHpl cm9leHQsIGk4IHplcm9leHQpICMyMSB7Ci0gICAlMyA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAg JTQgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAx Ci1AQCAtMzExNiw3ICszMTE2LDcgQEAgZGVmaW5lIGRzb19sb2NhbCB6ZXJvZXh0IGk4IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtaGgoaTggemVyb2V4dCwgaTggemVyb2UKLSB9Ci0gCi0g OyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwx IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMV9oU18oPDEgeCBpOD4s IDwxIHggaTg+KSAjMjEgewotK2RlZmluZSBpbnRlcm5hbCA8MSB4IGk4PiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfdXJlbXUyQ012YjFfaFNfKDwxIHggaTg+LCA8MSB4IGk4PikgIzIxIHsKLSAg ICUzID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi0gICAlNCA9IGFsbG9jYSA8MSB4IGk4Piwg YWxpZ24gMQotICAgJTUgPSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLUBAIC0zMTMwLDcgKzMx MzAsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF91cmVtdTJDTXZiMV9oU18oPDEgeCBpOD4sIDwxCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6 IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MiB4IGk4PiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjJfaFNfKDwyIHggaTg+LCA8MiB4IGk4PikgIzIyIHsK LStkZWZpbmUgaW50ZXJuYWwgPDIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11 MkNNdmIyX2hTXyg8MiB4IGk4PiwgPDIgeCBpOD4pICMyMiB7Ci0gICAlMyA9IGFsbG9jYSA8MiB4 IGk4PiwgYWxpZ24gMgotICAgJTQgPSBhbGxvY2EgPDIgeCBpOD4sIGFsaWduIDIKLSAgICU1ID0g YWxsb2NhIDwyIHggaTg+LCBhbGlnbiAyCi1AQCAtMzE0NCw3ICszMTQ0LDcgQEAgZGVmaW5lIGRz b19sb2NhbCA8MiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjJfaFNf KDwyIHggaTg+LCA8MgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2lu ZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Vy ZW11MkNNdmI0X2hTXyg8NCB4IGk4PiwgPDQgeCBpOD4pICMxNCB7Ci0rZGVmaW5lIGludGVybmFs IDw0IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiNF9oU18oPDQgeCBp OD4sIDw0IHggaTg+KSAjMTQgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpOD4sIGFsaWduIDQKLSAg ICU0ID0gYWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8NCB4IGk4Piwg YWxpZ24gNAotQEAgLTMxNTgsNyArMzE1OCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDQgeCBpOD4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI0X2hTXyg8NCB4IGk4PiwgPDQKLSB9 Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xv Y2FsIDw4IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiOF9oU18oPDgg eCBpOD4sIDw4IHggaTg+KSAjMTUgewotK2RlZmluZSBpbnRlcm5hbCA8OCB4IGk4PiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjhfaFNfKDw4IHggaTg+LCA8OCB4IGk4PikgIzE1 IHsKLSAgICUzID0gYWxsb2NhIDw4IHggaTg+LCBhbGlnbiA4Ci0gICAlNCA9IGFsbG9jYSA8OCB4 IGk4PiwgYWxpZ24gOAotICAgJTUgPSBhbGxvY2EgPDggeCBpOD4sIGFsaWduIDgKLUBAIC0zMTcy LDcgKzMxNzIsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw4IHggaTg+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF91cmVtdTJDTXZiOF9oU18oPDggeCBpOD4sIDw4Ci0gfQotIAotIDsgRnVuY3Rpb24g QXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MTYgeCBpOD4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxNl9oU18oPDE2IHggaTg+LCA8MTYgeCBp OD4pICMxNiB7Ci0rZGVmaW5lIGludGVybmFsIDwxNiB4IGk4PiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfdXJlbXUyQ012YjE2X2hTXyg8MTYgeCBpOD4sIDwxNiB4IGk4PikgIzE2IHsKLSAgICUz ID0gYWxsb2NhIDwxNiB4IGk4PiwgYWxpZ24gMTYKLSAgICU0ID0gYWxsb2NhIDwxNiB4IGk4Piwg YWxpZ24gMTYKLSAgICU1ID0gYWxsb2NhIDwxNiB4IGk4PiwgYWxpZ24gMTYKLUBAIC0zMTg2LDcg KzMxODYsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxNiB4IGk4PiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfdXJlbXUyQ012YjE2X2hTXyg8MTYgeCBpOD4sCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0 cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpOD4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIzMl9oU18oPDMyIHggaTg+LCA8MzIgeCBpOD4p ICMxNyB7Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfdXJlbXUyQ012YjMyX2hTXyg8MzIgeCBpOD4sIDwzMiB4IGk4PikgIzE3IHsKLSAgICUzID0g YWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxp Z24gMzIKLSAgICU1ID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLUBAIC0zMjAwLDcgKzMy MDAsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfdXJlbXUyQ012YjMyX2hTXyg8MzIgeCBpOD4sCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6 IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCB6ZXJvZXh0IGkxNiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfdWRpdnR0KGkxNiB6ZXJvZXh0LCBpMTYgemVyb2V4dCkgIzIyIHsK LStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Vk aXZ0dChpMTYgemVyb2V4dCwgaTE2IHplcm9leHQpICMyMiB7Ci0gICAlMyA9IGFsbG9jYSBpMTYs IGFsaWduIDIKLSAgICU0ID0gYWxsb2NhIGkxNiwgYWxpZ24gMgotICAgJTUgPSBhbGxvY2EgPDEg eCBpMTY+LCBhbGlnbiAyCi1AQCAtMzI3OCw3ICszMjc4LDcgQEAgZGVmaW5lIGludGVybmFsIDwx IHggaTE2PiBAX1pON2RldGFpbHMxNF9faW1wbF91ZGl2cmVtSUxpMUVFRXUyQ012YlRfX3RTMV9T MV91MkMKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZp bmUgZHNvX2xvY2FsIDwxIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012 YjFfdFNfKDwxIHggaTE2PiwgPDEgeCBpMTY+KSAjMjIgewotK2RlZmluZSBpbnRlcm5hbCA8MSB4 IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIxX3RTXyg8MSB4IGkxNj4s IDwxIHggaTE2PikgIzIyIHsKLSAgICUzID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotICAg JTQgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi0gICAlNSA9IGFsbG9jYSA8MSB4IGkxNj4s IGFsaWduIDIKLUBAIC0zMjk0LDcgKzMyOTQsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxIHggaTE2 PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjFfdFNfKDwxIHggaTE2PiwgPAot IH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29f bG9jYWwgPDIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMl90U18o PDIgeCBpMTY+LCA8MiB4IGkxNj4pICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIDwyIHggaTE2PiBA X1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjJfdFNfKDwyIHggaTE2PiwgPDIgeCBp MTY+KSAjMTQgewotICAgJTMgPSBhbGxvY2EgPDIgeCBpMTY+LCBhbGlnbiA0Ci0gICAlNCA9IGFs bG9jYSA8MiB4IGkxNj4sIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwyIHggaTE2PiwgYWxpZ24g NAotQEAgLTMzNjAsNyArMzM2MCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MiB4IGkxNj4gQF9aTjdk ZXRhaWxzMTRfX2ltcGxfdWRpdnJlbUlMaTJFRUV1MkNNdmJUX190UzFfUzFfdTJDCi0gfQotIAot IDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8 NCB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmI0X3RTXyg8NCB4IGkx Nj4sIDw0IHggaTE2PikgIzE1IHsKLStkZWZpbmUgaW50ZXJuYWwgPDQgeCBpMTY+IEBfWjI0X19j bV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiNF90U18oPDQgeCBpMTY+LCA8NCB4IGkxNj4pICMx NSB7Ci0gICAlMyA9IGFsbG9jYSA8NCB4IGkxNj4sIGFsaWduIDgKLSAgICU0ID0gYWxsb2NhIDw0 IHggaTE2PiwgYWxpZ24gOAotICAgJTUgPSBhbGxvY2EgPDQgeCBpMTY+LCBhbGlnbiA4Ci1AQCAt MzU1OCw3ICszNTU4LDcgQEAgZGVmaW5lIGludGVybmFsIDwxNiB4IGkxNj4gQF9aTjdkZXRhaWxz MTRfX2ltcGxfdWRpdnJlbUlMaTE2RUVFdTJDTXZiVF9fdFMxX1MxX3UKLSB9Ci0gCi0gOyBGdW5j dGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGkx Nj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIzMl90U18oPDMyIHggaTE2Piwg PDMyIHggaTE2PikgIzE4IHsKLStkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTE2PiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjMyX3RTXyg8MzIgeCBpMTY+LCA8MzIgeCBpMTY+KSAj MTggewotICAgJTMgPSBhbGxvY2EgPDMyIHggaTE2PiwgYWxpZ24gNjQKLSAgICU0ID0gYWxsb2Nh IDwzMiB4IGkxNj4sIGFsaWduIDY0Ci0gICAlNSA9IGFsbG9jYSA8MzIgeCBpMTY+LCBhbGlnbiA2 NAotQEAgLTM2MjQsNyArMzYyNCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MzIgeCBpMTY+IEBfWk43 ZGV0YWlsczE0X19pbXBsX3VkaXZyZW1JTGkzMkVFRXUyQ012YlRfX3RTMV9TMV91Ci0gfQotIAot IDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCB6 ZXJvZXh0IGkxNiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXR0KGkxNiB6ZXJvZXh0LCBp MTYgemVyb2V4dCkgIzIyIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMTYgQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3VyZW10dChpMTYgemVyb2V4dCwgaTE2IHplcm9leHQpICMyMiB7Ci0g ICAlMyA9IGFsbG9jYSBpMTYsIGFsaWduIDIKLSAgICU0ID0gYWxsb2NhIGkxNiwgYWxpZ24gMgot ICAgJTUgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi1AQCAtMzY1MCw3ICszNjUwLDcgQEAg ZGVmaW5lIGRzb19sb2NhbCB6ZXJvZXh0IGkxNiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJl bXR0KGkxNiB6ZXJvZXh0LCBpMTYgemUKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxp bmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxIHggaTE2PiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfdXJlbXUyQ012YjFfdFNfKDwxIHggaTE2PiwgPDEgeCBpMTY+KSAjMjIgewotK2Rl ZmluZSBpbnRlcm5hbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNN dmIxX3RTXyg8MSB4IGkxNj4sIDwxIHggaTE2PikgIzIyIHsKLSAgICUzID0gYWxsb2NhIDwxIHgg aTE2PiwgYWxpZ24gMgotICAgJTQgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi0gICAlNSA9 IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLUBAIC0zNjY0LDcgKzM2NjQsNyBAQCBkZWZpbmUg ZHNvX2xvY2FsIDwxIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjFf dFNfKDwxIHggaTE2PiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vu d2luZAotLWRlZmluZSBkc29fbG9jYWwgPDIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF91cmVtdTJDTXZiMl90U18oPDIgeCBpMTY+LCA8MiB4IGkxNj4pICMxNCB7Ci0rZGVmaW5lIGlu dGVybmFsIDwyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjJfdFNf KDwyIHggaTE2PiwgPDIgeCBpMTY+KSAjMTQgewotICAgJTMgPSBhbGxvY2EgPDIgeCBpMTY+LCBh bGlnbiA0Ci0gICAlNCA9IGFsbG9jYSA8MiB4IGkxNj4sIGFsaWduIDQKLSAgICU1ID0gYWxsb2Nh IDwyIHggaTE2PiwgYWxpZ24gNAotQEAgLTM2NzgsNyArMzY3OCw3IEBAIGRlZmluZSBkc29fbG9j YWwgPDIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMl90U18oPDIg eCBpMTY+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0t ZGVmaW5lIGRzb19sb2NhbCA8NCB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11 MkNNdmI0X3RTXyg8NCB4IGkxNj4sIDw0IHggaTE2PikgIzE1IHsKLStkZWZpbmUgaW50ZXJuYWwg PDQgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiNF90U18oPDQgeCBp MTY+LCA8NCB4IGkxNj4pICMxNSB7Ci0gICAlMyA9IGFsbG9jYSA8NCB4IGkxNj4sIGFsaWduIDgK LSAgICU0ID0gYWxsb2NhIDw0IHggaTE2PiwgYWxpZ24gOAotICAgJTUgPSBhbGxvY2EgPDQgeCBp MTY+LCBhbGlnbiA4Ci1AQCAtMzY5Miw3ICszNjkyLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8NCB4 IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI0X3RTXyg8NCB4IGkxNj4s IDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUg ZHNvX2xvY2FsIDw4IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012Yjhf dFNfKDw4IHggaTE2PiwgPDggeCBpMTY+KSAjMTYgewotK2RlZmluZSBpbnRlcm5hbCA8OCB4IGkx Nj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI4X3RTXyg8OCB4IGkxNj4sIDw4 IHggaTE2PikgIzE2IHsKLSAgICUzID0gYWxsb2NhIDw4IHggaTE2PiwgYWxpZ24gMTYKLSAgICU0 ID0gYWxsb2NhIDw4IHggaTE2PiwgYWxpZ24gMTYKLSAgICU1ID0gYWxsb2NhIDw4IHggaTE2Piwg YWxpZ24gMTYKLUBAIC0zNzA2LDcgKzM3MDYsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw4IHggaTE2 PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjhfdFNfKDw4IHggaTE2PiwgPAot IH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29f bG9jYWwgPDE2IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjE2X3RT Xyg8MTYgeCBpMTY+LCA8MTYgeCBpMTY+KSAjMTcgewotK2RlZmluZSBpbnRlcm5hbCA8MTYgeCBp MTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMTZfdFNfKDwxNiB4IGkxNj4s IDwxNiB4IGkxNj4pICMxNyB7Ci0gICAlMyA9IGFsbG9jYSA8MTYgeCBpMTY+LCBhbGlnbiAzMgot ICAgJTQgPSBhbGxvY2EgPDE2IHggaTE2PiwgYWxpZ24gMzIKLSAgICU1ID0gYWxsb2NhIDwxNiB4 IGkxNj4sIGFsaWduIDMyCi1AQCAtMzcyMCw3ICszNzIwLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8 MTYgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMTZfdFNfKDwxNiB4 IGkxNj4KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZp bmUgZHNvX2xvY2FsIDwzMiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNN dmIzMl90U18oPDMyIHggaTE2PiwgPDMyIHggaTE2PikgIzE4IHsKLStkZWZpbmUgaW50ZXJuYWwg PDMyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjMyX3RTXyg8MzIg eCBpMTY+LCA8MzIgeCBpMTY+KSAjMTggewotICAgJTMgPSBhbGxvY2EgPDMyIHggaTE2PiwgYWxp Z24gNjQKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGkxNj4sIGFsaWduIDY0Ci0gICAlNSA9IGFsbG9j YSA8MzIgeCBpMTY+LCBhbGlnbiA2NAotQEAgLTM3MzQsNyArMzczNCw3IEBAIGRlZmluZSBkc29f bG9jYWwgPDMyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjMyX3RT Xyg8MzIgeCBpMTY+Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5k Ci0tZGVmaW5lIGRzb19sb2NhbCBpMzIgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZqaihp MzIsIGkzMikgIzE0IHsKLStkZWZpbmUgaW50ZXJuYWwgaTMyIEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF91ZGl2amooaTMyLCBpMzIpICMxNCB7Ci0gICAlMyA9IGFsbG9jYSBpMzIsIGFsaWduIDQK LSAgICU0ID0gYWxsb2NhIGkzMiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDEgeCBpMzI+LCBh bGlnbiA0Ci1AQCAtMzg5Miw3ICszODkyLDcgQEAgZGVmaW5lIGludGVybmFsIDwxIHggaTMyPiBA X1pON2RldGFpbHMxNF9faW1wbF91ZGl2cmVtSUxpMUVFRXUyQ012YlRfX2pTMV9TMV91MkMKLSB9 Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xv Y2FsIDwxIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjFfalNfKDwx IHggaTMyPiwgPDEgeCBpMzI+KSAjMTQgewotK2RlZmluZSBpbnRlcm5hbCA8MSB4IGkzMj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIxX2pTXyg8MSB4IGkzMj4sIDwxIHggaTMy PikgIzE0IHsKLSAgICUzID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotICAgJTQgPSBhbGxv Y2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQK LUBAIC0zOTA4LDcgKzM5MDgsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxIHggaTMyPiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjFfalNfKDwxIHggaTMyPiwgPAotIH0KLSAKLSA7 IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDIg eCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMl9qU18oPDIgeCBpMzI+ LCA8MiB4IGkzMj4pICMxNSB7Ci0rZGVmaW5lIGludGVybmFsIDwyIHggaTMyPiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjJfalNfKDwyIHggaTMyPiwgPDIgeCBpMzI+KSAjMTUg ewotICAgJTMgPSBhbGxvY2EgPDIgeCBpMzI+LCBhbGlnbiA4Ci0gICAlNCA9IGFsbG9jYSA8MiB4 IGkzMj4sIGFsaWduIDgKLSAgICU1ID0gYWxsb2NhIDwyIHggaTMyPiwgYWxpZ24gOAotQEAgLTQw NTQsNyArNDA1NCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MiB4IGkzMj4gQF9aTjdkZXRhaWxzMTRf X2ltcGxfdWRpdnJlbUlMaTJFRUV1MkNNdmJUX19qUzFfUzFfdTJDCi0gfQotIAotIDsgRnVuY3Rp b24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8NCB4IGkzMj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmI0X2pTXyg8NCB4IGkzMj4sIDw0IHgg aTMyPikgIzE2IHsKLStkZWZpbmUgaW50ZXJuYWwgPDQgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF91ZGl2dTJDTXZiNF9qU18oPDQgeCBpMzI+LCA8NCB4IGkzMj4pICMxNiB7Ci0gICAl MyA9IGFsbG9jYSA8NCB4IGkzMj4sIGFsaWduIDE2Ci0gICAlNCA9IGFsbG9jYSA8NCB4IGkzMj4s IGFsaWduIDE2Ci0gICAlNSA9IGFsbG9jYSA8NCB4IGkzMj4sIGFsaWduIDE2Ci1AQCAtNDQ5Miw3 ICs0NDkyLDcgQEAgZGVmaW5lIGludGVybmFsIDwxNiB4IGkzMj4gQF9aTjdkZXRhaWxzMTRfX2lt cGxfdWRpdnJlbUlMaTE2RUVFdTJDTXZiVF9falMxX1MxX3UKLSB9Ci0gCi0gOyBGdW5jdGlvbiBB dHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGkzMj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIzMl9qU18oPDMyIHggaTMyPiwgPDMyIHgg aTMyPikgIzE5IHsKLStkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTMyPiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfdWRpdnUyQ012YjMyX2pTXyg8MzIgeCBpMzI+LCA8MzIgeCBpMzI+KSAjMTkgewot ICAgJTMgPSBhbGxvY2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4Ci0gICAlNCA9IGFsbG9jYSA8MzIg eCBpMzI+LCBhbGlnbiAxMjgKLSAgICU1ID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFsaWduIDEyOAot QEAgLTQ2MzgsNyArNDYzOCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MzIgeCBpMzI+IEBfWk43ZGV0 YWlsczE0X19pbXBsX3VkaXZyZW1JTGkzMkVFRXUyQ012YlRfX2pTMV9TMV91Ci0gfQotIAotIDsg RnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCBpMzIg QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW1qaihpMzIsIGkzMikgIzE0IHsKLStkZWZpbmUg aW50ZXJuYWwgaTMyIEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtamooaTMyLCBpMzIpICMx NCB7Ci0gICAlMyA9IGFsbG9jYSBpMzIsIGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIGkzMiwgYWxp Z24gNAotICAgJTUgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci1AQCAtNDY2NCw3ICs0NjY0 LDcgQEAgZGVmaW5lIGRzb19sb2NhbCBpMzIgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW1q aihpMzIsIGkzMikgIzE0IHsKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91 bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfdXJlbXUyQ012YjFfalNfKDwxIHggaTMyPiwgPDEgeCBpMzI+KSAjMTQgewotK2RlZmluZSBp bnRlcm5hbCA8MSB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxX2pT Xyg8MSB4IGkzMj4sIDwxIHggaTMyPikgIzE0IHsKLSAgICUzID0gYWxsb2NhIDwxIHggaTMyPiwg YWxpZ24gNAotICAgJTQgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9j YSA8MSB4IGkzMj4sIGFsaWduIDQKLUBAIC00Njc4LDcgKzQ2NzgsNyBAQCBkZWZpbmUgZHNvX2xv Y2FsIDwxIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjFfalNfKDwx IHggaTMyPiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAot LWRlZmluZSBkc29fbG9jYWwgPDIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVt dTJDTXZiMl9qU18oPDIgeCBpMzI+LCA8MiB4IGkzMj4pICMxNSB7Ci0rZGVmaW5lIGludGVybmFs IDwyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjJfalNfKDwyIHgg aTMyPiwgPDIgeCBpMzI+KSAjMTUgewotICAgJTMgPSBhbGxvY2EgPDIgeCBpMzI+LCBhbGlnbiA4 Ci0gICAlNCA9IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWduIDgKLSAgICU1ID0gYWxsb2NhIDwyIHgg aTMyPiwgYWxpZ24gOAotQEAgLTQ2OTIsNyArNDY5Miw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDIg eCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMl9qU18oPDIgeCBpMzI+ LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5l IGRzb19sb2NhbCA8NCB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI0 X2pTXyg8NCB4IGkzMj4sIDw0IHggaTMyPikgIzE2IHsKLStkZWZpbmUgaW50ZXJuYWwgPDQgeCBp MzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiNF9qU18oPDQgeCBpMzI+LCA8 NCB4IGkzMj4pICMxNiB7Ci0gICAlMyA9IGFsbG9jYSA8NCB4IGkzMj4sIGFsaWduIDE2Ci0gICAl NCA9IGFsbG9jYSA8NCB4IGkzMj4sIGFsaWduIDE2Ci0gICAlNSA9IGFsbG9jYSA8NCB4IGkzMj4s IGFsaWduIDE2Ci1AQCAtNDcwNiw3ICs0NzA2LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8NCB4IGkz Mj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI0X2pTXyg8NCB4IGkzMj4sIDwK LSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNv X2xvY2FsIDw4IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjhfalNf KDw4IHggaTMyPiwgPDggeCBpMzI+KSAjMTcgewotK2RlZmluZSBpbnRlcm5hbCA8OCB4IGkzMj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI4X2pTXyg8OCB4IGkzMj4sIDw4IHgg aTMyPikgIzE3IHsKLSAgICUzID0gYWxsb2NhIDw4IHggaTMyPiwgYWxpZ24gMzIKLSAgICU0ID0g YWxsb2NhIDw4IHggaTMyPiwgYWxpZ24gMzIKLSAgICU1ID0gYWxsb2NhIDw4IHggaTMyPiwgYWxp Z24gMzIKLUBAIC00NzIwLDcgKzQ3MjAsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw4IHggaTMyPiBA X1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjhfalNfKDw4IHggaTMyPiwgPAotIH0K LSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9j YWwgPDE2IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjE2X2pTXyg8 MTYgeCBpMzI+LCA8MTYgeCBpMzI+KSAjMTggewotK2RlZmluZSBpbnRlcm5hbCA8MTYgeCBpMzI+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMTZfalNfKDwxNiB4IGkzMj4sIDwx NiB4IGkzMj4pICMxOCB7Ci0gICAlMyA9IGFsbG9jYSA8MTYgeCBpMzI+LCBhbGlnbiA2NAotICAg JTQgPSBhbGxvY2EgPDE2IHggaTMyPiwgYWxpZ24gNjQKLSAgICU1ID0gYWxsb2NhIDwxNiB4IGkz Mj4sIGFsaWduIDY0Ci1AQCAtNDczNCw3ICs0NzM0LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MTYg eCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMTZfalNfKDwxNiB4IGkz Mj4KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUg ZHNvX2xvY2FsIDwzMiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIz Ml9qU18oPDMyIHggaTMyPiwgPDMyIHggaTMyPikgIzE5IHsKLStkZWZpbmUgaW50ZXJuYWwgPDMy IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjMyX2pTXyg8MzIgeCBp MzI+LCA8MzIgeCBpMzI+KSAjMTkgewotICAgJTMgPSBhbGxvY2EgPDMyIHggaTMyPiwgYWxpZ24g MTI4Ci0gICAlNCA9IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAxMjgKLSAgICU1ID0gYWxsb2Nh IDwzMiB4IGkzMj4sIGFsaWduIDEyOAotQEAgLTQ3NDgsNyArNDc0OCw3IEBAIGRlZmluZSBkc29f bG9jYWwgPDMyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjMyX2pT Xyg8MzIgeCBpMzI+Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5k Ci0tZGVmaW5lIGRzb19sb2NhbCB2b2lkIEBfX2RvX3ByaW50X2NtKGk4KiwgaTgqLCBpMzIsIGk2 NCwgaTMyKiwgaTMyLCBpMzIpICMyMyAhZGJnICExNSB7Ci0rZGVmaW5lIGludGVybmFsIHZvaWQg QF9fZG9fcHJpbnRfY20oaTgqLCBpOCosIGkzMiwgaTY0LCBpMzIqLCBpMzIsIGkzMikgIzIzICFk YmcgITE1IHsKLSAgICU4ID0gYWxsb2NhIGk4KiwgYWxpZ24gOAotICAgJTkgPSBhbGxvY2EgaTgq LCBhbGlnbiA4Ci0gICAlMTAgPSBhbGxvY2EgaTMyLCBhbGlnbiA0Ci1AQCAtNTA3MCw3ICs1MDcw LDcgQEAgZGVmaW5lIGRzb19sb2NhbCB2b2lkIEBfX2RvX3ByaW50X2x6KGkzMiwgaTgqLCBpMzIs IGk2NCwgaTMyKiwgaTMyLCBpMzIsIGkzMiwgaTMKLSAgICU2NyA9IGxvYWQgaTY0LCBpNjQqICUx MywgYWxpZ24gOCwgIWRiZyAhMTU5LCAhdGJhYSAhMTkKLSAgICU2OCA9IGxvYWQgPDUgeCBpMzI+ LCA8NSB4IGkzMj4qICUyMSwgYWxpZ24gMzIsICFkYmcgITE2MCwgIXRiYWEgITcKLSAgIGNhbGwg dm9pZCBAX1pOMTNWYXJ5aW5nV3JpdGVyQzJFUnlSUEtqaXl1MkNNdmI1X2koJWNsYXNzLlZhcnlp bmdXcml0ZXIqICUyMywgaTY0KiBkZXJlZmVyZW5jZWFibGUoOCkgJTE5LCBpMzIqKiBkZXJlZmVy ZW5jZWFibGUoOCkgJTE0LCBpMzIgJTY2LCBpNjQgJTY3LCA8NSB4IGkzMj4gJTY4KSwgIWRiZyAh MTYxCi0tICAlNjkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8xNHN3aXRjaEVuY29k aW5nSTEzVW5pZm9ybVdyaXRlcjEzVmFyeWluZ1dyaXRlckVFYk5TXzhFbmNvZGluZ0VUX1QwXyhp OCBzaWduZXh0ICU2MiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyICUyMiwg JWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICUyMyksICFkYmcgITE2MgotKyAg JTY5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMTRzd2l0Y2hFbmNvZGluZ0kxM1Vu aWZvcm1Xcml0ZXIxM1ZhcnlpbmdXcml0ZXJFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4 dCAlNjIsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikg YWxpZ24gMzIgJTIyLCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdX cml0ZXIpIGFsaWduIDMyICUyMyksICFkYmcgITE2MgotICAgYnIgbGFiZWwgJTcwLCAhZGJnICEx NjMKLSAKLSA7IDxsYWJlbD46NzA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDsgcHJlZHMgPSAlNjAKLUBAIC01MTg4LDcgKzUxODgsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDUg eCBpMzI+IEBfWjE3Z2V0X2F1eGlsaWFyeV9zdHJ2KCkgIzI4IGNvbWRhdCAhZGJnICExNzggewot IH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBub3Vud2lu ZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMTRzd2l0Y2hFbmNv ZGluZ0kxM1VuaWZvcm1Xcml0ZXIxM1ZhcnlpbmdXcml0ZXJFRWJOU184RW5jb2RpbmdFVF9UMF8o aTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlY2xhc3Mu VmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIpICMyNSBjb21kYXQgIWRiZyAhMTkxIHsKLStk ZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzE0c3dpdGNoRW5jb2RpbmdJ MTNVbmlmb3JtV3JpdGVyMTNWYXJ5aW5nV3JpdGVyRUViTlNfOEVuY29kaW5nRVRfVDBfKGk4IHNp Z25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikg YWxpZ24gMzIsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRl cikgYWxpZ24gMzIpICMyNSBjb21kYXQgIWRiZyAhMTkxIHsKLSAgICU0ID0gYWxsb2NhIGk4LCBh bGlnbiAxCi0gICAlNSA9IGFsbG9jYSAlY2xhc3MuVW5pZm9ybVdyaXRlciwgYWxpZ24gMzIKLSAg ICU2ID0gYWxsb2NhICVjbGFzcy5WYXJ5aW5nV3JpdGVyLCBhbGlnbiAzMgotQEAgLTUxOTcsNyAr NTE5Nyw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMTRzd2l0 Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXIxM1ZhcnlpCi0gICAlOCA9IGJpdGNhc3QgJWNsYXNz LlVuaWZvcm1Xcml0ZXIqICU1IHRvIGk4KiwgIWRiZyAhMTk2Ci0gICAlOSA9IGJpdGNhc3QgJWNs YXNzLlVuaWZvcm1Xcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMTk2Ci0gICBjYWxsIHZvaWQgQGxs dm0ubWVtY3B5LnAwaTgucDBpOC5pNjQoaTgqIGFsaWduIDMyICU4LCBpOCogYWxpZ24gMzIgJTks IGk2NCA2NCwgaTEgZmFsc2UpLCAhZGJnICExOTYsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlMTAg PSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8yMnN3aXRjaEVuY29kaW5nNFVuaWZvcm1J MTNVbmlmb3JtV3JpdGVyRUViTlNfOEVuY29kaW5nRVRfKGk4IHNpZ25leHQgJTcsICVjbGFzcy5V bmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlNSksICFkYmcgITE5OAotKyAgJTEwID0gY2Fs bCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRVbmlmb3JtSTEzVW5p Zm9ybVdyaXRlckVFYk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0ICU3LCAlY2xhc3MuVW5pZm9y bVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyICU1KSwgIWRiZyAh MTk4Ci0gICBiciBpMSAlMTAsIGxhYmVsICUxNiwgbGFiZWwgJTExLCAhZGJnICExOTkKLSAKLSA7 IDxsYWJlbD46MTE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMg PSAlMwotQEAgLTUyMDUsNyArNTIwNSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBf Wk45UHJpbnRJbmZvMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXIxM1ZhcnlpCi0gICAl MTMgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlNiB0byBpOCosICFkYmcgITIwMQot ICAgJTE0ID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTIgdG8gaTgqLCAhZGJnICEy MDEKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2NChpOCogYWxpZ24gMzIg JTEzLCBpOCogYWxpZ24gMzIgJTE0LCBpNjQgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMjAxLCAhdGJh YS5zdHJ1Y3QgITE5NwotLSAgJTE1ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJz d2l0Y2hFbmNvZGluZzRWYXJ5aW5nSTEzVmFyeWluZ1dyaXRlckVFYk5TXzhFbmNvZGluZ0VUXyhp OCBzaWduZXh0ICUxMiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU2KSwg IWRiZyAhMjAyCi0rICAlMTUgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8yMnN3aXRj aEVuY29kaW5nNFZhcnlpbmdJMTNWYXJ5aW5nV3JpdGVyRUViTlNfOEVuY29kaW5nRVRfKGk4IHNp Z25leHQgJTEyLCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0 ZXIpIGFsaWduIDMyICU2KSwgIWRiZyAhMjAyCi0gICBiciBsYWJlbCAlMTYsICFkYmcgITE5OQot IAotIDsgPGxhYmVsPjoxNjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBw cmVkcyA9ICUxMSwgJTMKLUBAIC01MjgwLDcgKzUyODAsNyBAQCBkZWZpbmUgaW50ZXJuYWwgdm9p ZCBAX1pOMTNWYXJ5aW5nV3JpdGVyQzJFUnlSUEtqaXl1MkNNdmI1X2koJWNsYXNzLlZhcnlpbmdX cml0ZQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmlu ZSBkc29fbG9jYWwgaTMyIEBfX251bV9jb3JlcygpICMyOSAhZGJnICEyMzYgewotK2RlZmluZSBp bnRlcm5hbCBpMzIgQF9fbnVtX2NvcmVzKCkgIzI5ICFkYmcgITIzNiB7Ci0gICByZXQgaTMyIC0x LCAhZGJnICEyMzcKLSB9Ci0gCi1AQCAtODg3MCw3ICs4ODcwLDcgQEAgZGVjbGFyZSBkc29fbG9j YWwgdm9pZCBAX1pON2RldGFpbHMzN19fY21faW50cmluc2ljX2ltcGxfc3ZtX3NjYXR0ZXJfd3Jp dGVJaUxpMUUKLSBkZWNsYXJlIHZvaWQgQGxsdm0uZ2VueC5zdm0uc2NhdHRlci52MWkxLnYxaTY0 LnYxaTMyKDwxIHggaTE+LCBpMzIsIDwxIHggaTY0PiwgPDEgeCBpMzI+KSAjMjcKLSAKLSA7IEZ1 bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBub3Vud2luZAotLWRlZmluZSBp bnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRVbmlmb3Jt STEzVW5pZm9ybVdyaXRlckVFYk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5p Zm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIpICMyNSBjb21kYXQgIWRiZyAhMTY0NSB7Ci0rZGVm aW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8yMnN3aXRjaEVuY29kaW5nNFVu aWZvcm1JMTNVbmlmb3JtV3JpdGVyRUViTlNfOEVuY29kaW5nRVRfKGk4IHNpZ25leHQsICVjbGFz cy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIpICMy NSBjb21kYXQgIWRiZyAhMTY0NSB7Ci0gICAlMyA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTQg PSBhbGxvY2EgJWNsYXNzLlVuaWZvcm1Xcml0ZXIsIGFsaWduIDMyCi0gICAlNSA9IGFsbG9jYSAl InN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iLCBhbGlnbiAxCi1AQCAtODg3OSw3 ICs4ODc5LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8yMnN3 aXRjaEVuY29kaW5nNFVuaWZvcm1JMTNVbmlmb3JtV3JpdGUKLSAgICU3ID0gYml0Y2FzdCAlY2xh c3MuVW5pZm9ybVdyaXRlciogJTQgdG8gaTgqLCAhZGJnICExNjQ3Ci0gICAlOCA9IGJpdGNhc3Qg JWNsYXNzLlVuaWZvcm1Xcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMTY0NwotICAgY2FsbCB2b2lk IEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTY0KGk4KiBhbGlnbiAzMiAlNywgaTgqIGFsaWduIDMy ICU4LCBpNjQgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY0NywgIXRiYWEuc3RydWN0ICExOTcKLS0g ICU5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2Rp bmdJMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VU X1QwXyhpOCBzaWduZXh0ICU2LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIg JTQsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEg JTUpLCAhZGJnICExNjQ4Ci0rICAlOSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZk ZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9y bUVFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4dCAlNiwgJWNsYXNzLlVuaWZvcm1Xcml0 ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlNCwgJSJzdHJ1Y3QuUHJp bnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNv ZGluZzRVbmlmb3JtIikgYWxpZ24gMSAlNSksICFkYmcgITE2NDgKLSAgIHJldCBpMSAlOSwgIWRi ZyAhMTY0OQotIH0KLSAKLUBAIC04ODg3LDcgKzg4ODcsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVy b2V4dCBpMSBAX1pOOVByaW50SW5mbzIyc3dpdGNoRW5jb2Rpbmc0VW5pZm9ybUkxM1VuaWZvcm1X cml0ZQotIGRlY2xhcmUgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2NChpOCogbm9jYXB0 dXJlIHdyaXRlb25seSwgaTgqIG5vY2FwdHVyZSByZWFkb25seSwgaTY0LCBpMSkgIzMyCi0gCi0g OyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZp bmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzIyc3dpdGNoRW5jb2Rpbmc0VmFy eWluZ0kxM1ZhcnlpbmdXcml0ZXJFRWJOU184RW5jb2RpbmdFVF8oaTggc2lnbmV4dCwgJWNsYXNz LlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyKSAjMjUgY29tZGF0ICFkYmcgITE2NTAgewot K2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGlu ZzRWYXJ5aW5nSTEzVmFyeWluZ1dyaXRlckVFYk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0LCAl Y2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMy KSAjMjUgY29tZGF0ICFkYmcgITE2NTAgewotICAgJTMgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAg ICU0ID0gYWxsb2NhICVjbGFzcy5WYXJ5aW5nV3JpdGVyLCBhbGlnbiAzMgotICAgJTUgPSBhbGxv Y2EgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiwgYWxpZ24gMQotQEAgLTg4 OTYsMTIgKzg4OTYsMTIgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludElu Zm8yMnN3aXRjaEVuY29kaW5nNFZhcnlpbmdJMTNWYXJ5aW5nV3JpdGUKLSAgICU3ID0gYml0Y2Fz dCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTQgdG8gaTgqLCAhZGJnICExNjUyCi0gICAlOCA9IGJp dGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMTY1MgotICAgY2Fs bCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTY0KGk4KiBhbGlnbiAzMiAlNywgaTgqIGFs aWduIDMyICU4LCBpNjQgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY1MiwgIXRiYWEuc3RydWN0ICEx OTcKLS0gICU5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNo RW5jb2RpbmdJMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNv ZGluZ0VUX1QwXyhpOCBzaWduZXh0ICU2LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxp Z24gMzIgJTQsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFs aWduIDEgJTUpLCAhZGJnICExNjUzCi0rICAlOSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50 SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0 VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4dCAlNiwgJWNsYXNzLlZhcnlp bmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAlNCwgJSJzdHJ1 Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZv OjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSAlNSksICFkYmcgITE2NTMKLSAgIHJldCBpMSAl OSwgIWRiZyAhMTY1NAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5s aW5laGludCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJ bmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRV bmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUX1QwXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdy aXRlciogYnl2YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9y bSIqIGJ5dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMTY1NSB7Ci0rZGVmaW5lIGludGVy bmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1Vu aWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVRfVDBfKGk4 IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRl cikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFs KCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEpICMyNSBjb21k YXQgIWRiZyAhMTY1NSB7Ci0gICAlNCA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTUgPSBhbGxv Y2EgJWNsYXNzLlVuaWZvcm1Xcml0ZXIsIGFsaWduIDMyCi0gICAlNiA9IGFsbG9jYSAlInN0cnVj dC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iLCBhbGlnbiAxCi1AQCAtODkyNCw3ICs4OTI0 LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRz d2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXIKLSAgICUyMiA9IGJpdGNhc3QgJWNsYXNzLlVu aWZvcm1Xcml0ZXIqICU1IHRvIGk4KiwgIWRiZyAhMTY1NwotICAgJTIzID0gYml0Y2FzdCAlY2xh c3MuVW5pZm9ybVdyaXRlciogJTEgdG8gaTgqLCAhZGJnICExNjU3Ci0gICBjYWxsIHZvaWQgQGxs dm0ubWVtY3B5LnAwaTgucDBpOC5pNjQoaTgqIGFsaWduIDMyICUyMiwgaTgqIGFsaWduIDMyICUy MywgaTY0IDY0LCBpMSBmYWxzZSksICFkYmcgITE2NTcsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAl MjQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVy RW5jb2RpbmdJYjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5j b2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTIxLCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwg YWxpZ24gMzIgJTUsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFs IGFsaWduIDEgJTYpLCAhZGJnICExNjU4Ci0rICAlMjQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQ cmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJYjEzVW5pZm9ybVdyaXRlck5T XzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTIx LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWdu IDMyICU1LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0 cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxICU2KSwgIWRiZyAhMTY1 OAotICAgYnIgaTEgJTI0LCBsYWJlbCAlNjAsIGxhYmVsICUyNSwgIWRiZyAhMTY1OQotIAotIDsg PGxhYmVsPjoyNTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9 ICUzCi1AQCAtODkzMiw3ICs4OTMyLDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9a TjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXIKLSAgICUy NyA9IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqICU3IHRvIGk4KiwgIWRiZyAhMTY2MQot ICAgJTI4ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTEgdG8gaTgqLCAhZGJnICEx NjYxCi0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pNjQoaTgqIGFsaWduIDMy ICUyNywgaTgqIGFsaWduIDMyICUyOCwgaTY0IDY0LCBpMSBmYWxzZSksICFkYmcgITE2NjEsICF0 YmFhLnN0cnVjdCAhMTk3Ci0tICAlMjkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82 ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJaTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rp bmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTI2LCAlY2xhc3Mu VW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIgJTcsICUic3RydWN0LlByaW50SW5mbzo6RW5j b2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEgJTgpLCAhZGJnICExNjYyCi0rICAlMjkgPSBj YWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2Rp bmdJaTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdF VDBfVDFfKGk4IHNpZ25leHQgJTI2LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNz LlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyICU3LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5n NFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBh bGlnbiAxICU4KSwgIWRiZyAhMTY2MgotICAgYnIgaTEgJTI5LCBsYWJlbCAlNjAsIGxhYmVsICUz MCwgIWRiZyAhMTY2MwotIAotIDsgPGxhYmVsPjozMDogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOyBwcmVkcyA9ICUyNQotQEAgLTg5NDAsNyArODk0MCw3IEBAIGRlZmluZSBp bnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJ MTNVbmlmb3JtV3JpdGVyCi0gICAlMzIgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAl OSB0byBpOCosICFkYmcgITE2NjUKLSAgICUzMyA9IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0 ZXIqICUxIHRvIGk4KiwgIWRiZyAhMTY2NQotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4 LnAwaTguaTY0KGk4KiBhbGlnbiAzMiAlMzIsIGk4KiBhbGlnbiAzMiAlMzMsIGk2NCA2NCwgaTEg ZmFsc2UpLCAhZGJnICExNjY1LCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTM0ID0gY2FsbCB6ZXJv ZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWoxM1Vu aWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhp OCBzaWduZXh0ICUzMSwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU5LCAl InN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxICUxMCks ICFkYmcgITE2NjYKLSsgICUzNCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRh aWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lqMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRV bmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMzEsICVjbGFzcy5Vbmlm b3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIgJTksICUic3Ry dWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5m bzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEgJTEwKSwgIWRiZyAhMTY2NgotICAgYnIgaTEg JTM0LCBsYWJlbCAlNjAsIGxhYmVsICUzNSwgIWRiZyAhMTY2NwotIAotIDsgPGxhYmVsPjozNTog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICUzMAotQEAgLTg5 NDgsNyArODk0OCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZv NmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0gICAlMzcgPSBiaXRjYXN0 ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMTEgdG8gaTgqLCAhZGJnICExNjY5Ci0gICAlMzggPSBi aXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITE2NjkKLSAgIGNh bGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2NChpOCogYWxpZ24gMzIgJTM3LCBpOCog YWxpZ24gMzIgJTM4LCBpNjQgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY2OSwgIXRiYWEuc3RydWN0 ICExOTcKLS0gICUzOSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFw cGx5SWZQcm9wZXJFbmNvZGluZ0lmMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3Jt RUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMzYsICVjbGFzcy5Vbmlmb3JtV3Jp dGVyKiBieXZhbCBhbGlnbiAzMiAlMTEsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5p Zm9ybSIqIGJ5dmFsIGFsaWduIDEgJTEyKSwgIWRiZyAhMTY3MAotKyAgJTM5ID0gY2FsbCB6ZXJv ZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWYxM1Vu aWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhp OCBzaWduZXh0ICUzNiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3Jt V3JpdGVyKSBhbGlnbiAzMiAlMTEsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9y bSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEg JTEyKSwgIWRiZyAhMTY3MAotICAgYnIgaTEgJTM5LCBsYWJlbCAlNjAsIGxhYmVsICU0MCwgIWRi ZyAhMTY3MQotIAotIDsgPGxhYmVsPjo0MDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOyBwcmVkcyA9ICUzNQotQEAgLTg5NTYsNyArODk1Niw3IEBAIGRlZmluZSBpbnRlcm5h bCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlm b3JtV3JpdGVyCi0gICAlNDIgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMTMgdG8g aTgqLCAhZGJnICExNjczCi0gICAlNDMgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAl MSB0byBpOCosICFkYmcgITE2NzMKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4 Lmk2NChpOCogYWxpZ24gMzIgJTQyLCBpOCogYWxpZ24gMzIgJTQzLCBpNjQgNjQsIGkxIGZhbHNl KSwgIWRiZyAhMTY3MywgIXRiYWEuc3RydWN0ICExOTcKLS0gICU0NCA9IGNhbGwgemVyb2V4dCBp MSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l4MTNVbmlmb3Jt V3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2ln bmV4dCAlNDEsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlMTMsICUic3Ry dWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEgJTE0KSwgIWRi ZyAhMTY3NAotKyAgJTQ0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIx YXBwbHlJZlByb3BlckVuY29kaW5nSXgxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZv cm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU0MSwgJWNsYXNzLlVuaWZvcm1X cml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlMTMsICUic3RydWN0 LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6 RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEgJTE0KSwgIWRiZyAhMTY3NAotICAgYnIgaTEgJTQ0 LCBsYWJlbCAlNjAsIGxhYmVsICU0NSwgIWRiZyAhMTY3NQotIAotIDsgPGxhYmVsPjo0NTogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICU0MAotQEAgLTg5NjQs NyArODk2NCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRl dGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0gICAlNDcgPSBiaXRjYXN0ICVj bGFzcy5Vbmlmb3JtV3JpdGVyKiAlMTUgdG8gaTgqLCAhZGJnICExNjc3Ci0gICAlNDggPSBiaXRj YXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITE2NzcKLSAgIGNhbGwg dm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2NChpOCogYWxpZ24gMzIgJTQ3LCBpOCogYWxp Z24gMzIgJTQ4LCBpNjQgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY3NywgIXRiYWEuc3RydWN0ICEx OTcKLS0gICU0OSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5 SWZQcm9wZXJFbmNvZGluZ0l5MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVF Yk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNDYsICVjbGFzcy5Vbmlmb3JtV3JpdGVy KiBieXZhbCBhbGlnbiAzMiAlMTUsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9y bSIqIGJ5dmFsIGFsaWduIDEgJTE2KSwgIWRiZyAhMTY3OAotKyAgJTQ5ID0gY2FsbCB6ZXJvZXh0 IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXkxM1VuaWZv cm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBz aWduZXh0ICU0NiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3Jp dGVyKSBhbGlnbiAzMiAlMTUsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIq IGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEgJTE2 KSwgIWRiZyAhMTY3OAotICAgYnIgaTEgJTQ5LCBsYWJlbCAlNjAsIGxhYmVsICU1MCwgIWRiZyAh MTY3OQotIAotIDsgPGxhYmVsPjo1MDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOyBwcmVkcyA9ICU0NQotQEAgLTg5NzIsNyArODk3Miw3IEBAIGRlZmluZSBpbnRlcm5hbCB6 ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3Jt V3JpdGVyCi0gICAlNTIgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMTcgdG8gaTgq LCAhZGJnICExNjgxCi0gICAlNTMgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0 byBpOCosICFkYmcgITE2ODEKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2 NChpOCogYWxpZ24gMzIgJTUyLCBpOCogYWxpZ24gMzIgJTUzLCBpNjQgNjQsIGkxIGZhbHNlKSwg IWRiZyAhMTY4MSwgIXRiYWEuc3RydWN0ICExOTcKLS0gICU1NCA9IGNhbGwgemVyb2V4dCBpMSBA X1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lkMTNVbmlmb3JtV3Jp dGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4 dCAlNTEsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlMTcsICUic3RydWN0 LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEgJTE4KSwgIWRiZyAh MTY4MgotKyAgJTU0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBw bHlJZlByb3BlckVuY29kaW5nSWQxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1F RUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU1MSwgJWNsYXNzLlVuaWZvcm1Xcml0 ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlMTcsICUic3RydWN0LlBy aW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5j b2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEgJTE4KSwgIWRiZyAhMTY4MgotICAgYnIgaTEgJTU0LCBs YWJlbCAlNjAsIGxhYmVsICU1NSwgIWRiZyAhMTY4MwotIAotIDsgPGxhYmVsPjo1NTogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICU1MAotQEAgLTg5ODAsNyAr ODk4MCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFp bDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0gICAlNTcgPSBiaXRjYXN0ICVjbGFz cy5Vbmlmb3JtV3JpdGVyKiAlMTkgdG8gaTgqLCAhZGJnICExNjg1Ci0gICAlNTggPSBiaXRjYXN0 ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITE2ODUKLSAgIGNhbGwgdm9p ZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2NChpOCogYWxpZ24gMzIgJTU3LCBpOCogYWxpZ24g MzIgJTU4LCBpNjQgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY4NSwgIXRiYWEuc3RydWN0ICExOTcK LS0gICU1OSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQ cm9wZXJFbmNvZGluZ0lQdjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJO U184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTU2LCAlY2xhc3MuVW5pZm9ybVdyaXRlciog Ynl2YWwgYWxpZ24gMzIgJTE5LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0i KiBieXZhbCBhbGlnbiAxICUyMCksICFkYmcgITE2ODYKLSsgICU1OSA9IGNhbGwgemVyb2V4dCBp MSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lQdjEzVW5pZm9y bVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNp Z25leHQgJTU2LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0 ZXIpIGFsaWduIDMyICUxOSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiog Ynl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSAlMjAp LCAhZGJnICExNjg2Ci0gICBiciBsYWJlbCAlNjAsICFkYmcgITE2ODMKLSAKLSA7IDxsYWJlbD46 NjA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlNTUsICU1 MCwgJTQ1LCAlNDAsICUzNSwgJTMwLCAlMjUsICUzCi1AQCAtODk4OSw3ICs4OTg5LDcgQEAgZGVm aW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNv ZGluZ0kxM1VuaWZvcm1Xcml0ZXIKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5s aW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pO OVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0liMTNVbmlmb3JtV3JpdGVy TlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwg JWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86 OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE2ODgg ewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBw bHlJZlByb3BlckVuY29kaW5nSWIxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1F RUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciog Ynl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86 OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVu aWZvcm0iKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE2ODggewotICAgJTQgPSBhbGxvY2Eg aTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwg aTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtOTAxNSw3ICs5MDE1LDcgQEAgZGVmaW5l IGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVy RW5jb2RpbmdJYjEzVW5pZm8KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5l IGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVBy aW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lpMTNVbmlmb3JtV3JpdGVyTlNf MTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNs YXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVu Y29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE2OTcgewot K2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJ ZlByb3BlckVuY29kaW5nSWkxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUVi TlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2 YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVu Y29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZv cm0iKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE2OTcgewotICAgJTQgPSBhbGxvY2EgaTEs IGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgq ICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtOTA0MSw3ICs5MDQxLDcgQEAgZGVmaW5lIGlu dGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5j b2RpbmdJaTEzVW5pZm8KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlu bGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50 SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lqMTNVbmlmb3JtV3JpdGVyTlNfMTZF bmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNz LlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29k aW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3MDYgewotK2Rl ZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlBy b3BlckVuY29kaW5nSWoxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNf OEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwo JWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29k aW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0i KSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3MDYgewotICAgJTQgPSBhbGxvY2EgaTEsIGFs aWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1 LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtOTA2Nyw3ICs5MDY3LDcgQEAgZGVmaW5lIGludGVy bmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2Rp bmdJajEzVW5pZm8KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGlu ZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5m bzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lmMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNv ZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVu aWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5n NFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3MTUgewotK2RlZmlu ZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3Bl ckVuY29kaW5nSWYxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVu Y29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNs YXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5n NFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBh bGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3MTUgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWdu IDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBh bGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtOTA5Myw3ICs5MDkzLDcgQEAgZGVmaW5lIGludGVybmFs IHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJ ZjEzVW5pZm8KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhp bnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZk ZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l4MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGlu ZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZv cm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVu aWZvcm0iKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3MjQgewotK2RlZmluZSBp bnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVu Y29kaW5nSXgxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29k aW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNz LlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVu aWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGln biAxKSAjMjUgY29tZGF0ICFkYmcgITE3MjQgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEK LSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGln biAxLCAhdGJhYSAhMTkzCi1AQCAtOTExOSw3ICs5MTE5LDcgQEAgZGVmaW5lIGludGVybmFsIHpl cm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeDEz VW5pZm8KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQg bm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRh aWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l5MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRV bmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1X cml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZv cm0iKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3MzMgewotK2RlZmluZSBpbnRl cm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29k aW5nSXkxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5n RVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVu aWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZv cm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAx KSAjMjUgY29tZGF0ICFkYmcgITE3MzMgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAg ICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAx LCAhdGJhYSAhMTkzCi1AQCAtOTE0NSw3ICs5MTQ1LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9l eHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeTEzVW5p Zm8KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91 bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwy MWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lkMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlm b3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0 ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0i KiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3NDIgewotK2RlZmluZSBpbnRlcm5h bCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5n SWQxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQw X1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZv cm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0i KiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAj MjUgY29tZGF0ICFkYmcgITE3NDIgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1 ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAh dGJhYSAhMTkzCi1AQCAtOTE3MSw3ICs5MTcxLDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQg aTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZDEzVW5pZm8K LSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndp bmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFw cGx5SWZQcm9wZXJFbmNvZGluZ0lQdjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9y bUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVy KiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiog Ynl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNzUxIHsKLStkZWZpbmUgaW50ZXJuYWwg emVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lQ djEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBf VDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9y bVdyaXRlcikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIq IGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEpICMy NSBjb21kYXQgIWRiZyAhMTc1MSB7Ci0gICAlNCA9IGFsbG9jYSBpMSwgYWxpZ24gMQotICAgJTUg PSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgIHN0b3JlIGk4ICUwLCBpOCogJTUsIGFsaWduIDEsICF0 YmFhICExOTMKLUBAIC0xMDAxMyw3ICsxMDAxMyw3IEBAIGRlZmluZSBpbnRlcm5hbCBpMzIgQF9a TjdkZXRhaWxzMThfY21fcHJpbnRfdHlwZV9vY2xJUHZFRU5TXzE4U0hBREVSX1BSSU5URl9UWVBF Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53 aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRz d2l0Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNf OEVuY29kaW5nRVRfVDBfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBh bGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxp Z24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMDYxIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBp MSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dyaXRlck5T XzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4dCwgJWNs YXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiwg JSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJp bnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMDYx IHsKLSAgICU0ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSAlY2xhc3MuVmFy eWluZ1dyaXRlciwgYWxpZ24gMzIKLSAgICU2ID0gYWxsb2NhICUic3RydWN0LlByaW50SW5mbzo6 RW5jb2Rpbmc0VmFyeWluZyIsIGFsaWduIDEKLUBAIC0xMDAzNiw3ICsxMDAzNiw3IEBAIGRlZmlu ZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2Rp bmdJMTNWYXJ5aW5nV3JpdGVyCi0gICAlMjIgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVy KiAlNSB0byBpOCosICFkYmcgITIwNjMKLSAgICUyMyA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdX cml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMjA2MwotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5w MGk4LnAwaTguaTY0KGk4KiBhbGlnbiAzMiAlMjIsIGk4KiBhbGlnbiAzMiAlMjMsIGk2NCA2NCwg aTEgZmFsc2UpLCAhZGJnICEyMDYzLCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTI0ID0gY2FsbCB6 ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWIx M1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1Qx XyhpOCBzaWduZXh0ICUyMSwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU1 LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxICU2 KSwgIWRiZyAhMjA2NAotKyAgJTI0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRl dGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWIxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5n NFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUyMSwgJWNsYXNzLlZh cnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAlNSwgJSJz dHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJ bmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSAlNiksICFkYmcgITIwNjQKLSAgIGJyIGkx ICUyNCwgbGFiZWwgJTYwLCBsYWJlbCAlMjUsICFkYmcgITIwNjUKLSAKLSA7IDxsYWJlbD46MjU6 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlMwotQEAgLTEw MDQ0LDcgKzEwMDQ0LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludElu Zm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXIKLSAgICUyNyA9IGJpdGNh c3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICU3IHRvIGk4KiwgIWRiZyAhMjA2NwotICAgJTI4ID0g Yml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTEgdG8gaTgqLCAhZGJnICEyMDY3Ci0gICBj YWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pNjQoaTgqIGFsaWduIDMyICUyNywgaTgq IGFsaWduIDMyICUyOCwgaTY0IDY0LCBpMSBmYWxzZSksICFkYmcgITIwNjcsICF0YmFhLnN0cnVj dCAhMTk3Ci0tICAlMjkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFh cHBseUlmUHJvcGVyRW5jb2RpbmdJaTEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWlu Z0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTI2LCAlY2xhc3MuVmFyeWluZ1dy aXRlciogYnl2YWwgYWxpZ24gMzIgJTcsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFy eWluZyIqIGJ5dmFsIGFsaWduIDEgJTgpLCAhZGJnICEyMDY4Ci0rICAlMjkgPSBjYWxsIHplcm9l eHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJaTEzVmFy eWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4 IHNpZ25leHQgJTI2LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdX cml0ZXIpIGFsaWduIDMyICU3LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmci KiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGlnbiAxICU4 KSwgIWRiZyAhMjA2OAotICAgYnIgaTEgJTI5LCBsYWJlbCAlNjAsIGxhYmVsICUzMCwgIWRiZyAh MjA2OQotIAotIDsgPGxhYmVsPjozMDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOyBwcmVkcyA9ICUyNQotQEAgLTEwMDUyLDcgKzEwMDUyLDcgQEAgZGVmaW5lIGludGVybmFs IHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1Zhcnlp bmdXcml0ZXIKLSAgICUzMiA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICU5IHRvIGk4 KiwgIWRiZyAhMjA3MQotICAgJTMzID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTEg dG8gaTgqLCAhZGJnICEyMDcxCi0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5p NjQoaTgqIGFsaWduIDMyICUzMiwgaTgqIGFsaWduIDMyICUzMywgaTY0IDY0LCBpMSBmYWxzZSks ICFkYmcgITIwNzEsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlMzQgPSBjYWxsIHplcm9leHQgaTEg QF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJajEzVmFyeWluZ1dy aXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25l eHQgJTMxLCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIgJTksICUic3RydWN0 LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEgJTEwKSwgIWRiZyAh MjA3MgotKyAgJTM0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBw bHlJZlByb3BlckVuY29kaW5nSWoxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdF RUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUzMSwgJWNsYXNzLlZhcnlpbmdXcml0 ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAlOSwgJSJzdHJ1Y3QuUHJp bnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNv ZGluZzRWYXJ5aW5nIikgYWxpZ24gMSAlMTApLCAhZGJnICEyMDcyCi0gICBiciBpMSAlMzQsIGxh YmVsICU2MCwgbGFiZWwgJTM1LCAhZGJnICEyMDczCi0gCi0gOyA8bGFiZWw+OjM1OiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTMwCi1AQCAtMTAwNjAsNyAr MTAwNjAsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRh aWwxNHN3aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dyaXRlcgotICAgJTM3ID0gYml0Y2FzdCAlY2xh c3MuVmFyeWluZ1dyaXRlciogJTExIHRvIGk4KiwgIWRiZyAhMjA3NQotICAgJTM4ID0gYml0Y2Fz dCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTEgdG8gaTgqLCAhZGJnICEyMDc1Ci0gICBjYWxsIHZv aWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pNjQoaTgqIGFsaWduIDMyICUzNywgaTgqIGFsaWdu IDMyICUzOCwgaTY0IDY0LCBpMSBmYWxzZSksICFkYmcgITIwNzUsICF0YmFhLnN0cnVjdCAhMTk3 Ci0tICAlMzkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlm UHJvcGVyRW5jb2RpbmdJZjEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJO U184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTM2LCAlY2xhc3MuVmFyeWluZ1dyaXRlciog Ynl2YWwgYWxpZ24gMzIgJTExLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmci KiBieXZhbCBhbGlnbiAxICUxMiksICFkYmcgITIwNzYKLSsgICUzOSA9IGNhbGwgemVyb2V4dCBp MSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lmMTNWYXJ5aW5n V3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2ln bmV4dCAlMzYsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRl cikgYWxpZ24gMzIgJTExLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBi eXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGlnbiAxICUxMiks ICFkYmcgITIwNzYKLSAgIGJyIGkxICUzOSwgbGFiZWwgJTYwLCBsYWJlbCAlNDAsICFkYmcgITIw NzcKLSAKLSA7IDxsYWJlbD46NDA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDsgcHJlZHMgPSAlMzUKLUBAIC0xMDA2OCw3ICsxMDA2OCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6 ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNWYXJ5aW5n V3JpdGVyCi0gICAlNDIgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMTMgdG8gaTgq LCAhZGJnICEyMDc5Ci0gICAlNDMgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMSB0 byBpOCosICFkYmcgITIwNzkKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2 NChpOCogYWxpZ24gMzIgJTQyLCBpOCogYWxpZ24gMzIgJTQzLCBpNjQgNjQsIGkxIGZhbHNlKSwg IWRiZyAhMjA3OSwgIXRiYWEuc3RydWN0ICExOTcKLS0gICU0NCA9IGNhbGwgemVyb2V4dCBpMSBA X1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l4MTNWYXJ5aW5nV3Jp dGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4 dCAlNDEsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlMTMsICUic3RydWN0 LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEgJTE0KSwgIWRiZyAh MjA4MAotKyAgJTQ0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBw bHlJZlByb3BlckVuY29kaW5nSXgxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdF RUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU0MSwgJWNsYXNzLlZhcnlpbmdXcml0 ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAlMTMsICUic3RydWN0LlBy aW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5j b2Rpbmc0VmFyeWluZyIpIGFsaWduIDEgJTE0KSwgIWRiZyAhMjA4MAotICAgYnIgaTEgJTQ0LCBs YWJlbCAlNjAsIGxhYmVsICU0NSwgIWRiZyAhMjA4MQotIAotIDsgPGxhYmVsPjo0NTogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICU0MAotQEAgLTEwMDc2LDcg KzEwMDc2LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0 YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXIKLSAgICU0NyA9IGJpdGNhc3QgJWNs YXNzLlZhcnlpbmdXcml0ZXIqICUxNSB0byBpOCosICFkYmcgITIwODMKLSAgICU0OCA9IGJpdGNh c3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMjA4MwotICAgY2FsbCB2 b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTY0KGk4KiBhbGlnbiAzMiAlNDcsIGk4KiBhbGln biAzMiAlNDgsIGk2NCA2NCwgaTEgZmFsc2UpLCAhZGJnICEyMDgzLCAhdGJhYS5zdHJ1Y3QgITE5 NwotLSAgJTQ5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJ ZlByb3BlckVuY29kaW5nSXkxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUVi TlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU0NiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIq IGJ5dmFsIGFsaWduIDMyICUxNSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5n IiogYnl2YWwgYWxpZ24gMSAlMTYpLCAhZGJnICEyMDg0Ci0rICAlNDkgPSBjYWxsIHplcm9leHQg aTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeTEzVmFyeWlu Z1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNp Z25leHQgJTQ2LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0 ZXIpIGFsaWduIDMyICUxNSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiog Ynl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSAlMTYp LCAhZGJnICEyMDg0Ci0gICBiciBpMSAlNDksIGxhYmVsICU2MCwgbGFiZWwgJTUwLCAhZGJnICEy MDg1Ci0gCi0gOyA8bGFiZWw+OjUwOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA7IHByZWRzID0gJTQ1Ci1AQCAtMTAwODQsNyArMTAwODQsNyBAQCBkZWZpbmUgaW50ZXJuYWwg emVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFyeWlu Z1dyaXRlcgotICAgJTUyID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTE3IHRvIGk4 KiwgIWRiZyAhMjA4NwotICAgJTUzID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTEg dG8gaTgqLCAhZGJnICEyMDg3Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5p NjQoaTgqIGFsaWduIDMyICU1MiwgaTgqIGFsaWduIDMyICU1MywgaTY0IDY0LCBpMSBmYWxzZSks ICFkYmcgITIwODcsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlNTQgPSBjYWxsIHplcm9leHQgaTEg QF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZDEzVmFyeWluZ1dy aXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25l eHQgJTUxLCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIgJTE3LCAlInN0cnVj dC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxICUxOCksICFkYmcg ITIwODgKLSsgICU1NCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFw cGx5SWZQcm9wZXJFbmNvZGluZ0lkMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5n RUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNTEsICVjbGFzcy5WYXJ5aW5nV3Jp dGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIgJTE3LCAlInN0cnVjdC5Q cmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVu Y29kaW5nNFZhcnlpbmciKSBhbGlnbiAxICUxOCksICFkYmcgITIwODgKLSAgIGJyIGkxICU1NCwg bGFiZWwgJTYwLCBsYWJlbCAlNTUsICFkYmcgITIwODkKLSAKLSA7IDxsYWJlbD46NTU6ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlNTAKLUBAIC0xMDA5Miw3 ICsxMDA5Miw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRl dGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNWYXJ5aW5nV3JpdGVyCi0gICAlNTcgPSBiaXRjYXN0ICVj bGFzcy5WYXJ5aW5nV3JpdGVyKiAlMTkgdG8gaTgqLCAhZGJnICEyMDkxCi0gICAlNTggPSBiaXRj YXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITIwOTEKLSAgIGNhbGwg dm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2NChpOCogYWxpZ24gMzIgJTU3LCBpOCogYWxp Z24gMzIgJTU4LCBpNjQgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMjA5MSwgIXRiYWEuc3RydWN0ICEx OTcKLS0gICU1OSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5 SWZQcm9wZXJFbmNvZGluZ0lQdjEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VF RWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTU2LCAlY2xhc3MuVmFyeWluZ1dyaXRl ciogYnl2YWwgYWxpZ24gMzIgJTE5LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlp bmciKiBieXZhbCBhbGlnbiAxICUyMCksICFkYmcgITIwOTIKLSsgICU1OSA9IGNhbGwgemVyb2V4 dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lQdjEzVmFy eWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4 IHNpZ25leHQgJTU2LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdX cml0ZXIpIGFsaWduIDMyICUxOSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5n IiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSAl MjApLCAhZGJnICEyMDkyCi0gICBiciBsYWJlbCAlNjAsICFkYmcgITIwODkKLSAKLSA7IDxsYWJl bD46NjA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlNTUs ICU1MCwgJTQ1LCAlNDAsICUzNSwgJTMwLCAlMjUsICUzCi1AQCAtMTAxMDEsNyArMTAxMDEsNyBA QCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRj aEVuY29kaW5nSTEzVmFyeWluZ1dyaXRlcgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdh eXNpbmxpbmUgaW5saW5laGludCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkx IEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWIxM1ZhcnlpbmdX cml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWdu ZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50 SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAh MjA5NCB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWls MjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJYjEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFy eWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3Jp dGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIsICUic3RydWN0LlByaW50 SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rp bmc0VmFyeWluZyIpIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjA5NCB7Ci0gICAlNCA9IGFs bG9jYSBpMSwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgIHN0b3JlIGk4 ICUwLCBpOCogJTUsIGFsaWduIDEsICF0YmFhICExOTMKLUBAIC0xMDEyNyw3ICsxMDEyNyw3IEBA IGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJ ZlByb3BlckVuY29kaW5nSWIxM1ZhcnlpCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5 c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEg QF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJaTEzVmFyeWluZ1dy aXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25l eHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJ bmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEy MTAzIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwy MWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lpMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5 aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0 ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJ bmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGlu ZzRWYXJ5aW5nIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTAzIHsKLSAgICU0ID0gYWxs b2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTgg JTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5MwotQEAgLTEwMTUzLDcgKzEwMTUzLDcgQEAg ZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlm UHJvcGVyRW5jb2RpbmdJaTEzVmFyeWkKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlz aW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBA X1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lqMTNWYXJ5aW5nV3Jp dGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4 dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludElu Zm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIx MTIgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIx YXBwbHlJZlByb3BlckVuY29kaW5nSWoxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlp bmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRl ciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludElu Zm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5n NFZhcnlpbmciKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxMTIgewotICAgJTQgPSBhbGxv Y2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAl MCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtMTAxNzksNyArMTAxNzksNyBAQCBk ZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQ cm9wZXJFbmNvZGluZ0lqMTNWYXJ5aQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNp bmxpbmUgaW5saW5laGludCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBf Wk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWYxM1ZhcnlpbmdXcml0 ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0 LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5m bzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjEy MSB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFh cHBseUlmUHJvcGVyRW5jb2RpbmdJZjEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWlu Z0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVy KiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5m bzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0 VmFyeWluZyIpIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjEyMSB7Ci0gICAlNCA9IGFsbG9j YSBpMSwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgIHN0b3JlIGk4ICUw LCBpOCogJTUsIGFsaWduIDEsICF0YmFhICExOTMKLUBAIC0xMDIwNSw3ICsxMDIwNSw3IEBAIGRl ZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlBy b3BlckVuY29kaW5nSWYxM1ZhcnlpCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lu bGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9a TjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeDEzVmFyeWluZ1dyaXRl ck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQs ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZv OjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTMw IHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFw cGx5SWZQcm9wZXJFbmNvZGluZ0l4MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5n RUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIq IGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZv OjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRW YXJ5aW5nIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTMwIHsKLSAgICU0ID0gYWxsb2Nh IGkxLCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAs IGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5MwotQEAgLTEwMjMxLDcgKzEwMjMxLDcgQEAgZGVm aW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJv cGVyRW5jb2RpbmdJeDEzVmFyeWkKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5s aW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pO OVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l5MTNWYXJ5aW5nV3JpdGVy TlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwg JWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86 OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxMzkg ewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBw bHlJZlByb3BlckVuY29kaW5nSXkxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdF RUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciog Ynl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86 OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZh cnlpbmciKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxMzkgewotICAgJTQgPSBhbGxvY2Eg aTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwg aTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtMTAyNTcsNyArMTAyNTcsNyBAQCBkZWZp bmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9w ZXJFbmNvZGluZ0l5MTNWYXJ5aQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxp bmUgaW5saW5laGludCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45 UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWQxM1ZhcnlpbmdXcml0ZXJO U18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAl Y2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6 RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjE0OCB7 Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBs eUlmUHJvcGVyRW5jb2RpbmdJZDEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VF RWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBi eXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6 RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFy eWluZyIpIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjE0OCB7Ci0gICAlNCA9IGFsbG9jYSBp MSwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgIHN0b3JlIGk4ICUwLCBp OCogJTUsIGFsaWduIDEsICF0YmFhICExOTMKLUBAIC0xMDI4Myw3ICsxMDI4Myw3IEBAIGRlZmlu ZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3Bl ckVuY29kaW5nSWQxM1ZhcnlpCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGlu ZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQ cmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJUHYxM1ZhcnlpbmdXcml0ZXJO U18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAl Y2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6 RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjE1NyB7 Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBs eUlmUHJvcGVyRW5jb2RpbmdJUHYxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdF RUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciog Ynl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86 OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZh cnlpbmciKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxNTcgewotICAgJTQgPSBhbGxvY2Eg aTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwg aTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCmRpZmYgLS1naXQgYS9zcmNwa2dzL2lzcGMvdGVt cGxhdGUgYi9zcmNwa2dzL2lzcGMvdGVtcGxhdGUKaW5kZXggOWMzYWNiNDJhOWNmLi4zYTg1ZmYy NjA1YWYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvaXNwYy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2lz cGMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdpc3BjJwog cGtnbmFtZT1pc3BjCi12ZXJzaW9uPTEuMTUuMAotcmV2aXNpb249MgordmVyc2lvbj0xLjE3LjAK K3JldmlzaW9uPTEKIGFyY2hzPSJ4ODZfNjQqIgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3Vy ZV9hcmdzPSItRElTUENfTk9fRFVNUFM9T04gLURBUk1fRU5BQkxFRD1PRkYiCkBAIC0xMiw3ICsx Miw3IEBAIG1haW50YWluZXI9IkFuZHJlYSBCcmFuY2FsZW9uaSA8YWJjQHBvbXBlbC5tZT4iCiBs aWNlbnNlPSJCU0QtMy1DbGF1c2UiCiBob21lcGFnZT0iaHR0cHM6Ly9pc3BjLmdpdGh1Yi5pbyIK IGRpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL2lzcGMvaXNwYy9hcmNoaXZlL3Yke3ZlcnNp b259LnRhci5neiIKLWNoZWNrc3VtPTI2NThmZjAwZGMwNDVhYzlmY2VmYmY2YmQyNmRmZmFmNzIz YjA1OWE5NDJhMjdkZjkxYmJiNjFiYzUwM2EyODUKK2NoZWNrc3VtPTM3ZmIxMDU1ZDZjNmIyMzJl MTEyZDhkNTAxNDVkNzI2ODI0ZWQ0ZDhkYTkzYTczOTYzMTVkY2ViYTZjNzZlNjIKIG5vY3Jvc3M9 eWVzCiBub3BpZT15ZXMKIAoKRnJvbSA5ZjBlNDIzZWJhMWRkNTg3YjFjZWZlZjE1NzYyY2UyMjY1 ZDA5ZmZlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBwcmV6IDxwcmV6QG5hdGlvbmFs LnNoaXRwb3N0aW5nLmFnZW5jeT4KRGF0ZTogVHVlLCAzIE1heSAyMDIyIDAxOjIwOjAzICswMjAw ClN1YmplY3Q6IFtQQVRDSCAyNy8yOV0gbGx2bTE0OiBzd2l0Y2ggdG8gcnVudGltZXMgYnVpbGQu CgpodHRwczovL3Jldmlld3MubGx2bS5vcmcvckdhYzcwMzFiMmIyZmEKaHR0cHM6Ly9yZXZpZXdz Lmxsdm0ub3JnL0QxMTAzMzgjMzAyMjk1MgotLS0KIHNyY3BrZ3MvbGx2bTE0L3RlbXBsYXRlIHwg MTAgKysrKysrLS0tLQogMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xNC90ZW1wbGF0ZSBiL3NyY3BrZ3MvbGx2 bTE0L3RlbXBsYXRlCmluZGV4IDNlN2U2YWIyYzAwYi4uZTczMWFhNzYxMzBhIDEwMDY0NAotLS0g YS9zcmNwa2dzL2xsdm0xNC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2xsdm0xNC90ZW1wbGF0ZQpA QCAtNTEsNyArNTEsOCBAQCBjYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KIAlwcGMqKSBj b25maWd1cmVfYXJncys9IiAtRENMQU5HX0VOQUJMRV9DTEFOR0Q9T0ZGIiA7OwogZXNhYwogCi1f ZW5hYmxlZF9wcm9qZWN0cz0iY2xhbmc7Y2xhbmctdG9vbHMtZXh0cmE7Y29tcGlsZXItcnQ7bGli Y3h4O2xpYmN4eGFiaTtsaWJ1bndpbmQ7bGxkIgorX2VuYWJsZWRfcHJvamVjdHM9ImNsYW5nO2Ns YW5nLXRvb2xzLWV4dHJhO2xsZCIKK19lbmFibGVkX3J1bnRpbWVzPSJjb21waWxlci1ydDtsaWJj eHg7bGliY3h4YWJpO2xpYnVud2luZCIKIAogX2xsZGJfZW5hYmxlPXllcwogX2xpYm9tcF9lbmFi bGU9bm8KQEAgLTY3LDkgKzY4LDggQEAgZXNhYwogCiBzdWJwYWNrYWdlcz0iY2xhbmctdG9vbHMt ZXh0cmEiCiAKLSMgbXVzdCBnbyBiZWZvcmUgY2xhbmcKIGlmIFsgIiRfbGlib21wX2VuYWJsZSIg PSAieWVzIiBdOyB0aGVuCi0JX2VuYWJsZWRfcHJvamVjdHMrPSI7b3Blbm1wIgorCV9lbmFibGVk X3J1bnRpbWVzKz0iO29wZW5tcCIKIAlzdWJwYWNrYWdlcys9IiBsaWJvbXAgbGlib21wLWRldmVs IgogCSMgYmVjYXVzZSBvZiBjbWFrZSBub25zZW5zZSByZWZlcmVuY2luZyBsaWJvbXB0YXJnZXQu c28uKgogCWRlcGVuZHMrPSIgbGlib21wPj0ke3ZlcnNpb259XyR7cmV2aXNpb259IgpAQCAtODgs NiArODgsNyBAQCBmaQogc3VicGFja2FnZXMrPSIgbGxkIGxsZC1kZXZlbCIKIAogY29uZmlndXJl X2FyZ3MrPSIgLURMTFZNX0VOQUJMRV9QUk9KRUNUUz0ke19lbmFibGVkX3Byb2plY3RzfSIKK2Nv bmZpZ3VyZV9hcmdzKz0iIC1ETExWTV9FTkFCTEVfUlVOVElNRVM9JHtfZW5hYmxlZF9ydW50aW1l c30iCiAKIHBvc3RfcGF0Y2goKSB7CiAJaWYgWyAiJF9sbGRiX2VuYWJsZSIgPSAieWVzIiBdOyB0 aGVuCkBAIC0xNTYsNyArMTU3LDggQEAgcHJlX2NvbmZpZ3VyZSgpIHsKIAkJQ0M9IiRCVUlMRF9D QyIgQ1hYPSIkQlVJTERfQ1hYIiBDRkxBR1M9IiRCVUlMRF9DRkxBR1MiIFwKIAkJCUNYWEZMQUdT PSIkQlVJTERfQ1hYRkxBR1MiIExERkxBR1M9IiRCVUlMRF9MREZMQUdTIiBcCiAJCQljbWFrZSAu Li8uLiAtRENNQUtFX0JVSUxEX1RZUEU9UmVsZWFzZSBcCi0JCQktRExMVk1fRU5BQkxFX1BST0pF Q1RTPSR7X2VuYWJsZWRfcHJvamVjdHN9CisJCQktRExMVk1fRU5BQkxFX1BST0pFQ1RTPSR7X2Vu YWJsZWRfcHJvamVjdHN9IFwKKwkJCS1ETExWTV9FTkFCTEVfUlVOVElNRVM9JHtfZW5hYmxlZF9y dW50aW1lc30KIAkJbWFrZSAke21ha2Vqb2JzfSAtQyB1dGlscy9UYWJsZUdlbgogCQltYWtlICR7 bWFrZWpvYnN9IC1DIHRvb2xzL2NsYW5nL3V0aWxzL1RhYmxlR2VuCiAJCVsgIiRfbGxkYl9lbmFi bGUiID0gInllcyIgXSAmJiBtYWtlICR7bWFrZWpvYnN9IC1DIHRvb2xzL2xsZGIvdXRpbHMvVGFi bGVHZW4KCkZyb20gNjkyODRkYTRkYmZjYjYwYTQ0ODFiMmMyYjMyYThkMzQyYzdlYjYwZiBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogcHJleiA8cHJlekBuYXRpb25hbC5zaGl0cG9zdGlu Zy5hZ2VuY3k+CkRhdGU6IFdlZCwgNCBNYXkgMjAyMiAwMzozOTo1OCArMDIwMApTdWJqZWN0OiBb UEFUQ0ggMjgvMjldIGxsdm0xNDogZml4IGJ1aWxkLgoKLS0tCiBzcmNwa2dzL2xsdm0xNC9maWxl cy9sbHZtLUNvbmZpZy1sbHZtLWNvbmZpZy5oIHwgOSArKysrKysrKysKIHNyY3BrZ3MvbGx2bTE0 L3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgICAgfCAzICsrKwogMiBmaWxlcyBjaGFuZ2Vk LCAxMiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTQvZmls ZXMvbGx2bS1Db25maWctbGx2bS1jb25maWcuaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTE0 L2ZpbGVzL2xsdm0tQ29uZmlnLWxsdm0tY29uZmlnLmggYi9zcmNwa2dzL2xsdm0xNC9maWxlcy9s bHZtLUNvbmZpZy1sbHZtLWNvbmZpZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uMmZhMDhjOWJlNjk2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9sbHZtMTQv ZmlsZXMvbGx2bS1Db25maWctbGx2bS1jb25maWcuaApAQCAtMCwwICsxLDkgQEAKKyNpbmNsdWRl IDxiaXRzL3dvcmRzaXplLmg+CisKKyNpZiBfX1dPUkRTSVpFID09IDMyCisjaW5jbHVkZSAibGx2 bS1jb25maWctMzIuaCIKKyNlbGlmIF9fV09SRFNJWkUgPT0gNjQKKyNpbmNsdWRlICJsbHZtLWNv bmZpZy02NC5oIgorI2Vsc2UKKyNlcnJvciAiVW5rbm93biB3b3JkIHNpemUiCisjZW5kaWYKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTE0L3RlbXBsYXRlIGIvc3JjcGtncy9sbHZtMTQvdGVtcGxh dGUKaW5kZXggZTczMWFhNzYxMzBhLi5iMjFjZmY5OWU0ZDQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv bGx2bTE0L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbGx2bTE0L3RlbXBsYXRlCkBAIC0xNjgsNiAr MTY4LDkgQEAgcHJlX2NvbmZpZ3VyZSgpIHsKIAkJY2QgLi4vLi4KIAlmaQogCisJbWtkaXIgLXAg Z251CisJdG91Y2ggZ251L3N0dWJzLTMyLmgKKwogCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5F IiBpbgogCQlpNjg2KikgX2FyY2g9Ilg4NiI7OwogCQl4ODZfNjQqKSBfYXJjaD0iWDg2Ijs7CgpG cm9tIDc0YjQxODcyMmEwN2I1YTgxYzQ5OGE4NGZmMWI1ZjM1MjU3Yjk4MDggTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHByZXogPHByZXpAbmF0aW9uYWwuc2hpdHBvc3RpbmcuYWdlbmN5 PgpEYXRlOiBXZWQsIDQgTWF5IDIwMjIgMTQ6MDc6MTQgKzAyMDAKU3ViamVjdDogW1BBVENIIDI5 LzI5XSB6aWc6IGZpeCBidWlsZC4KCi0tLQogc3JjcGtncy96aWcvdGVtcGxhdGUgfCAyICstCiAx IGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQg YS9zcmNwa2dzL3ppZy90ZW1wbGF0ZSBiL3NyY3BrZ3MvemlnL3RlbXBsYXRlCmluZGV4IDcyOGM1 YTY0ZTlkZi4uYzE3NWRlNjJjNWY3IDEwMDY0NAotLS0gYS9zcmNwa2dzL3ppZy90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL3ppZy90ZW1wbGF0ZQpAQCAtNSw3ICs1LDcgQEAgcmV2aXNpb249MgogYXJj aHM9Ing4Nl82NCogYWFyY2g2NCoiCiBidWlsZF9zdHlsZT1jbWFrZQogbWFrZV9jbWQ9bWFrZQot bWFrZWRlcGVuZHM9ImNsYW5nIGxsdm0xMiBsbGQtZGV2ZWwiCittYWtlZGVwZW5kcz0iY2xhbmcx MiBsbHZtMTIgbGxkMTItZGV2ZWwiCiBzaG9ydF9kZXNjPSJQcm9ncmFtbWluZyBsYW5ndWFnZSBk ZXNpZ25lZCBmb3Igcm9idXN0bmVzcywgb3B0aW1hbGl0eSwgYW5kIGNsYXJpdHkiCiBtYWludGFp bmVyPSJJc2FhYyBGcmV1bmQgPG1haWxAaXNhYWNmcmV1bmQuY29tPiIKIGxpY2Vuc2U9Ik1JVCIK --===============1329399588106103136==--