From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (qmail 29469 invoked from network); 4 Mar 2022 18:19:53 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 4 Mar 2022 18:19:53 -0000 Content-Type: multipart/mixed; boundary="===============5885205374648988450==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_Llvm13?= To: ml@inbox.vuxu.org From: motorto Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Fri, 04 Mar 2022 19:19:53 +0100 List-Id: Message-ID: <20220304181953.ve2YamSlbphC0DA6CC8nh3C4MdyKWf3x9ty4qLKHIS4@z> GitHub notification mails are now in MIME to allow UTF8. --===============5885205374648988450== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgbW90b3J0byBhZ2FpbnN0IG1hc3Rl ciBvbiB0aGUgdm9pZC1wYWNrYWdlcyByZXBvc2l0b3J5CgpodHRwczovL2dpdGh1Yi5jb20vbW90 b3J0by92b2lkLXBhY2thZ2VzIGxsdm0xMwpodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92 b2lkLXBhY2thZ2VzL3B1bGwvMzU4OTUKCkxsdm0xMwpUaGlzIGFkZHMgTExWTSAxMyBhbmQgdXBk YXRlcyBmcm9tIExMVk0gMTIuDQoNCldvcmstaW4tcHJvZ3Jlc3MNCg0KVGhlIGZvbGxvd2luZyBw YWNrYWdlcyB3ZXJlIHJlbW92ZWQ6DQogKiBiZWlnbmV0IC0tIHVwc3RyZWFtIGlzIGRlYWQNCiAq IHJ1bmRpcmQgLS0gIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYnkgdXBzdHJlYW0gd2hpY2ggcmVjb21t ZW5kcyB1c2luZyBkdW1iX3J1bnRpbWVfZGlyDQoNClRoZSBmb2xsb3dpbmcgcGFja2FnZXMgd2Vy ZSB1cGRhdGVkIG9yIHBhdGNoZWQ6DQogKiBpc3BjDQogKiBxdGNyZWF0b3INCiAqIHJpdmVyDQog KiB6aWcNCg0KUmVidWlsdCBwYWNrYWdlczoNCg0KKHJlYnVpbHQgYmFzZWQgb24gb3V0cHV0IG9m OiAgYHhyZXZzaGxpYiBsaWJsbHZtezEyLDEzfWAgKQ0KDQoNCiogU1BJUlYtTExWTS1UcmFuc2xh dG9yDQoqIGJjYw0KKiBicGZ0cmFjZSANCiogY2NscyANCiogY2xhenkgDQoqIGNvZGVsaXRlIA0K KiBnaGRsDQoqIGdub21lLWJ1aWxkZXINCiogaW5jbHVkZS13aGF0LXlvdS11c2UgDQoqIGp1Q2kr KyANCioga2RldmVsb3AgDQoqIGxkYw0KKiBtZXNhIA0KKiBxdDUgDQoqIHJ0YWdzIA0KKiBydXN0 DQoqIHNoaWJva2VuMiANCiogdGlsaXgNCg0KVXBkYXRlZCBUZW1wbGF0ZXM6DQoNCiogQ2hyb21p dW0NCg0KKEkgYW0gcHJvYmFibHkgbWlzc2luZyBzb21lIHBhY2thZ2VzKQ0KDQoNClRoYW5rcyBA REJMb3VpcyBmb3IgeW91ciBoYXJkIHdvcmshIA0KDQogW2NpIHNraXBdCgpBIHBhdGNoIGZpbGUg ZnJvbSBodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvMzU4 OTUucGF0Y2ggaXMgYXR0YWNoZWQ= --===============5885205374648988450== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-llvm13-35895.patch" RnJvbSAyMWQ2ZTFiZGIzYTI3NTA1MDE4Y2ViNWQ0YjkwYTI4N2E2M2MwZjI3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/TG91aXM9MjBEdXByPUMzPUE5PTIwQmVydG9u aT89CiA8bG91aXNkYkBsZXNwZXRpdHNwZWRlc3RyZXMub3JnPgpEYXRlOiBGcmksIDMxIERlYyAy MDIxIDE2OjIxOjMwICswMjAwClN1YmplY3Q6IFtQQVRDSCAwMS8zMF0gTmV3IHBhY2thZ2U6IGxs dm0xMy0xMy4wLjAKCi0tLQogY29tbW9uL3NobGlicyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgIDE2ICstCiBzcmNwa2dzL2NsYW5nICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgIDIgKy0KIHNyY3BrZ3MvY2xhbmctYW5hbHl6ZXIgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgMiArLQogc3JjcGtncy9jbGFuZy10b29scy1leHRyYSAgICAgICAgICAgICAgICAg ICAgIHwgICAyICstCiBzcmNwa2dzL2xpYmNsYW5nICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDIgKy0KIHNyY3BrZ3MvbGliY2xhbmctY3BwICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgMiArLQogc3JjcGtncy9saWJjeHggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAyICstCiBzcmNwa2dzL2xpYmN4eC1kZXZlbCAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDIgKy0KIHNyY3BrZ3MvbGliY3h4YWJpICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgMiArLQogc3JjcGtncy9saWJjeHhhYmktZGV2ZWwgICAgICAgICAgICAgICAgICAgICAgIHwg ICAyICstCiBzcmNwa2dzL2xpYmxsdm0xMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDEgKwogc3JjcGtncy9saWJvbXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAy ICstCiBzcmNwa2dzL2xpYm9tcC1kZXZlbCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIg Ky0KIHNyY3BrZ3MvbGxkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiAr LQogc3JjcGtncy9sbGQtZGV2ZWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICst CiBzcmNwa2dzL2xsZGIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0K IHNyY3BrZ3MvbGxkYi1kZXZlbCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQog c3JjcGtncy9sbHZtLWxpYnVud2luZCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBz cmNwa2dzL2xsdm0tbGlidW53aW5kLWRldmVsICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIC4u Li9sbHZtMTMvZmlsZXMvbGx2bS1Db25maWctbGx2bS1jb25maWcuaCAgICB8ICAgOSArCiAuLi5j bGFuZy0wMDEtZml4LXVud2luZC1jaGFpbi1pbmNsdXNpb24ucGF0Y2ggfCAgNDQgKysKIC4uLi9w YXRjaGVzL2NsYW5nLTAwMi1hZGQtbXVzbC10cmlwbGVzLnBhdGNoICB8IDExMCArKysrKwogLi4u L2NsYW5nLTAwMy1wcGM2NC1keW5hbWljLWxpbmtlci1wYXRoLnBhdGNoIHwgIDEzICsKIC4uLi9w YXRjaGVzL2NsYW5nLTAwNC1wcGM2NC1tdXNsLWVsZnYyLnBhdGNoICB8ICA0OCArKwogLi4uL2Nv bXBpbGVyLXJ0LWFhcmNoNjQtdWNvbnRleHQucGF0Y2ggICAgICAgIHwgIDExICsKIC4uLi9jb21w aWxlci1ydC1zYW5pdGl6ZXItcHBjNjQtbXVzbC5wYXRjaCAgICB8ICAzNSArKwogLi4uL3BhdGNo ZXMvY29tcGlsZXItcnQteHJheS1wcGM2NC1tdXNsLnBhdGNoIHwgIDYyICsrKwogc3JjcGtncy9s bHZtMTMvcGF0Y2hlcy9saWJjeHgtbXVzbC5wYXRjaCAgICAgIHwgIDI2ICsrCiBzcmNwa2dzL2xs dm0xMy9wYXRjaGVzL2xpYmN4eC1wcGMucGF0Y2ggICAgICAgfCAgMjIgKwogLi4uL2xsdm0xMy9w YXRjaGVzL2xpYmN4eC1zc3Atbm9uc2hhcmVkLnBhdGNoIHwgIDExICsKIHNyY3BrZ3MvbGx2bTEz L3BhdGNoZXMvbGliY3h4YWJpLWRsLnBhdGNoICAgICB8ICAyNSArKwogc3JjcGtncy9sbHZtMTMv cGF0Y2hlcy9saWJ1bndpbmQtcHBjMzIucGF0Y2ggIHwgIDYzICsrKwogc3JjcGtncy9sbHZtMTMv cGF0Y2hlcy9sbGRiLW11c2wucGF0Y2ggICAgICAgIHwgIDMxICsrCiBzcmNwa2dzL2xsdm0xMy9w YXRjaGVzL2xsdm0tMDAxLW11c2wucGF0Y2ggICAgfCAgNTcgKysrCiAuLi4vcGF0Y2hlcy9sbHZt LTAwMi1tdXNsLXBwYzY0LWVsZnYyLnBhdGNoICAgfCAgMzAgKysKIC4uLi9wYXRjaGVzL2xsdm0t MDAzLXBwYy1zZWN1cmVwbHQucGF0Y2ggICAgICB8ICAxMSArCiAuLi4vcGF0Y2hlcy9sbHZtLTAw NC1vdmVycmlkZS1vcHQucGF0Y2ggICAgICAgfCAgMTggKwogLi4uL2xsdm0xMy9wYXRjaGVzL2xs dm0tMDA1LXBwYy1iaWdwaWMucGF0Y2ggIHwgIDM2ICsrCiAuLi4vcGF0Y2hlcy9sbHZtLTAwNi1h YXJjaDY0LW1mX2V4ZWMucGF0Y2ggICAgfCAgMjUgKysKIC4uLi9sbHZtMTMvcGF0Y2hlcy9wcGMz Mi1jb21waWxlci1ydC5wYXRjaCAgICB8ICAyMSArCiBzcmNwa2dzL2xsdm0xMy90ZW1wbGF0ZSAg ICAgICAgICAgICAgICAgICAgICAgfCA0MjMgKysrKysrKysrKysrKysrKysrCiBzcmNwa2dzL2xs dm0xMy91cGRhdGUgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKwogNDIgZmlsZXMgY2hh bmdlZCwgMTE2NSBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEy MDAwMCBzcmNwa2dzL2xpYmxsdm0xMwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEz L2ZpbGVzL2xsdm0tQ29uZmlnLWxsdm0tY29uZmlnLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNw a2dzL2xsdm0xMy9wYXRjaGVzL2NsYW5nLTAwMS1maXgtdW53aW5kLWNoYWluLWluY2x1c2lvbi5w YXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvY2xhbmctMDAy LWFkZC1tdXNsLXRyaXBsZXMucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0x My9wYXRjaGVzL2NsYW5nLTAwMy1wcGM2NC1keW5hbWljLWxpbmtlci1wYXRoLnBhdGNoCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9jbGFuZy0wMDQtcHBjNjQtbXVz bC1lbGZ2Mi5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEzL3BhdGNoZXMv Y29tcGlsZXItcnQtYWFyY2g2NC11Y29udGV4dC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Y3BrZ3MvbGx2bTEzL3BhdGNoZXMvY29tcGlsZXItcnQtc2FuaXRpemVyLXBwYzY0LW11c2wucGF0 Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2NvbXBpbGVyLXJ0 LXhyYXktcHBjNjQtbXVzbC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEz L3BhdGNoZXMvbGliY3h4LW11c2wucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xs dm0xMy9wYXRjaGVzL2xpYmN4eC1wcGMucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dz L2xsdm0xMy9wYXRjaGVzL2xpYmN4eC1zc3Atbm9uc2hhcmVkLnBhdGNoCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9saWJjeHhhYmktZGwucGF0Y2gKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xpYnVud2luZC1wcGMzMi5wYXRjaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGxkYi1tdXNsLnBhdGNo CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9sbHZtLTAwMS1tdXNs LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9sbHZtLTAw Mi1tdXNsLXBwYzY0LWVsZnYyLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZt MTMvcGF0Y2hlcy9sbHZtLTAwMy1wcGMtc2VjdXJlcGx0LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9sbHZtLTAwNC1vdmVycmlkZS1vcHQucGF0Y2gKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xsdm0tMDA1LXBwYy1iaWdw aWMucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xsdm0t MDA2LWFhcmNoNjQtbWZfZXhlYy5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2 bTEzL3BhdGNoZXMvcHBjMzItY29tcGlsZXItcnQucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL2xsdm0xMy90ZW1wbGF0ZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEz L3VwZGF0ZQoKZGlmZiAtLWdpdCBhL2NvbW1vbi9zaGxpYnMgYi9jb21tb24vc2hsaWJzCmluZGV4 IDdjOTUwODhmZjc1Zi4uMTcwOTQ4YWJiYTI3IDEwMDY0NAotLS0gYS9jb21tb24vc2hsaWJzCisr KyBiL2NvbW1vbi9zaGxpYnMKQEAgLTk3MywxMSArOTczLDEyIEBAIGxpYnVjaGFyZGV0LnNvLjAg dWNoYXJkZXQtMC4wLjZfMQogbGliZ3Rrc291cmNldmlld21tLTMuMC5zby4wIGd0a3NvdXJjZXZp ZXdtbS0zLjIuMF8xCiBsaWJ5YWpsLnNvLjIgeWFqbC0yLjAuMV8xCiBsaWJjb25mdXNlLnNvLjIg Y29uZnVzZS0zLjIuMV8xCi1saWJsbGRiLnNvLjEyIGxsZGItMTIuMC4wXzEKLWxpYmNsYW5nLnNv LjEyIGxpYmNsYW5nLTEyLjAuMF8xCi1saWJjbGFuZy1jcHAuc28uMTIgbGliY2xhbmctY3BwLTEy LjAuMF8xCitsaWJsbGRiLnNvLjEzIGxsZGItMTMuMC4wXzEKK2xpYmNsYW5nLnNvLjEzIGxpYmNs YW5nLTEzLjAuMF8xCitsaWJjbGFuZy1jcHAuc28uMTMgbGliY2xhbmctY3BwLTEzLjAuMF8xCiBs aWJMTFZNLTExLnNvIGxpYmxsdm0xMS0xMS4wLjBfMQogbGliTExWTS0xMi5zbyBsaWJsbHZtMTIt MTIuMC4wXzEKK2xpYkxMVk0tMTMuc28gbGlibGx2bTEzLTEzLjAuMF8xCiBsaWJpc29mcy5zby42 IGxpYmlzb2ZzLTAuNi4yNF8xCiBsaWJtcGFjay5zby4wIGxpYm1wYWNrLTEuMC41XzEKIGxpYkdl b0lQLnNvLjEgbGliZ2VvaXAtMS40LjhfMQpAQCAtNDExOCwzICs0MTE5LDEyIEBAIGxpYnNwYXRp YWxpdGUuc28uNyBsaWJzcGF0aWFsaXRlLTUuMC4xXzEKIG1vZF9zcGF0aWFsaXRlLnNvLjcgbGli c3BhdGlhbGl0ZS01LjAuMV8xCiBsaWJTdnRBdjFFbmMuc28uMCBsaWJzdnQtYXYxLTAuOS4wXzEK IGxpYlN2dEF2MURlYy5zby4wIGxpYnN2dC1hdjEtMC45LjBfMQorbGlib21wLnNvIGxpYm9tcC0x My4wLjBfMQorbGlib21wdGFyZ2V0LnJ0bC5hbWRncHUuc28gbGlib21wLTEzLjAuMF8xCitsaWJv bXB0YXJnZXQucnRsLmN1ZGEuc28gbGlib21wLTEzLjAuMF8xCitsaWJvbXB0YXJnZXQucnRsLng4 Nl82NC5zbyBsaWJvbXAtMTMuMC4wXzEKK2xpYmFyY2hlci5zbyBsaWJvbXAtMTMuMC4wXzEKK2xp Ym9tcHRhcmdldC5zbyBsaWJvbXAtMTMuMC4wXzEKK2xpYmxsZGJJbnRlbEZlYXR1cmVzLnNvLjEz IGxsZGItMTMuMC4wXzEKK2xpYkxUTy5zby4xMyBsbHZtMTMtMTMuMC4wXzEKK2xpYlJlbWFya3Mu c28uMTMgbGx2bTEzLTEzLjAuMF8xCmRpZmYgLS1naXQgYS9zcmNwa2dzL2NsYW5nIGIvc3JjcGtn cy9jbGFuZwppbmRleCBjZDYwZmQ3YTk4MWIuLmQ2MzY2ZDdkM2I5NSAxMjAwMDAKLS0tIGEvc3Jj cGtncy9jbGFuZworKysgYi9zcmNwa2dzL2NsYW5nCkBAIC0xICsxIEBACi1sbHZtMTIKXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitsbHZtMTMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl CmRpZmYgLS1naXQgYS9zcmNwa2dzL2NsYW5nLWFuYWx5emVyIGIvc3JjcGtncy9jbGFuZy1hbmFs eXplcgppbmRleCBjZDYwZmQ3YTk4MWIuLmQ2MzY2ZDdkM2I5NSAxMjAwMDAKLS0tIGEvc3JjcGtn cy9jbGFuZy1hbmFseXplcgorKysgYi9zcmNwa2dzL2NsYW5nLWFuYWx5emVyCkBAIC0xICsxIEBA Ci1sbHZtMTIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitsbHZtMTMKXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2NsYW5nLXRvb2xzLWV4dHJhIGIv c3JjcGtncy9jbGFuZy10b29scy1leHRyYQppbmRleCBjZDYwZmQ3YTk4MWIuLmQ2MzY2ZDdkM2I5 NSAxMjAwMDAKLS0tIGEvc3JjcGtncy9jbGFuZy10b29scy1leHRyYQorKysgYi9zcmNwa2dzL2Ns YW5nLXRvb2xzLWV4dHJhCkBAIC0xICsxIEBACi1sbHZtMTIKXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCitsbHZtMTMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9z cmNwa2dzL2xpYmNsYW5nIGIvc3JjcGtncy9saWJjbGFuZwppbmRleCBjZDYwZmQ3YTk4MWIuLmQ2 MzY2ZDdkM2I5NSAxMjAwMDAKLS0tIGEvc3JjcGtncy9saWJjbGFuZworKysgYi9zcmNwa2dzL2xp YmNsYW5nCkBAIC0xICsxIEBACi1sbHZtMTIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCits bHZtMTMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xp YmNsYW5nLWNwcCBiL3NyY3BrZ3MvbGliY2xhbmctY3BwCmluZGV4IGNkNjBmZDdhOTgxYi4uZDYz NjZkN2QzYjk1IDEyMDAwMAotLS0gYS9zcmNwa2dzL2xpYmNsYW5nLWNwcAorKysgYi9zcmNwa2dz L2xpYmNsYW5nLWNwcApAQCAtMSArMSBAQAotbGx2bTEyClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQorbGx2bTEzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9saWJjeHggYi9zcmNwa2dzL2xpYmN4eAppbmRleCBjZDYwZmQ3YTk4MWIuLmQ2MzY2ZDdk M2I5NSAxMjAwMDAKLS0tIGEvc3JjcGtncy9saWJjeHgKKysrIGIvc3JjcGtncy9saWJjeHgKQEAg LTEgKzEgQEAKLWxsdm0xMgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2xsdm0xMwpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGliY3h4LWRldmVs IGIvc3JjcGtncy9saWJjeHgtZGV2ZWwKaW5kZXggY2Q2MGZkN2E5ODFiLi5kNjM2NmQ3ZDNiOTUg MTIwMDAwCi0tLSBhL3NyY3BrZ3MvbGliY3h4LWRldmVsCisrKyBiL3NyY3BrZ3MvbGliY3h4LWRl dmVsCkBAIC0xICsxIEBACi1sbHZtMTIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitsbHZt MTMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYmN4 eGFiaSBiL3NyY3BrZ3MvbGliY3h4YWJpCmluZGV4IGNkNjBmZDdhOTgxYi4uZDYzNjZkN2QzYjk1 IDEyMDAwMAotLS0gYS9zcmNwa2dzL2xpYmN4eGFiaQorKysgYi9zcmNwa2dzL2xpYmN4eGFiaQpA QCAtMSArMSBAQAotbGx2bTEyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorbGx2bTEzClwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJjeHhhYmkt ZGV2ZWwgYi9zcmNwa2dzL2xpYmN4eGFiaS1kZXZlbAppbmRleCBjZDYwZmQ3YTk4MWIuLmQ2MzY2 ZDdkM2I5NSAxMjAwMDAKLS0tIGEvc3JjcGtncy9saWJjeHhhYmktZGV2ZWwKKysrIGIvc3JjcGtn cy9saWJjeHhhYmktZGV2ZWwKQEAgLTEgKzEgQEAKLWxsdm0xMgpcIE5vIG5ld2xpbmUgYXQgZW5k IG9mIGZpbGUKK2xsdm0xMwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvbGlibGx2bTEzIGIvc3JjcGtncy9saWJsbHZtMTMKbmV3IGZpbGUgbW9kZSAxMjAw MDAKaW5kZXggMDAwMDAwMDAwMDAwLi5kNjM2NmQ3ZDNiOTUKLS0tIC9kZXYvbnVsbAorKysgYi9z cmNwa2dzL2xpYmxsdm0xMwpAQCAtMCwwICsxIEBACitsbHZtMTMKXCBObyBuZXdsaW5lIGF0IGVu ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYm9tcCBiL3NyY3BrZ3MvbGlib21wCmlu ZGV4IGNkNjBmZDdhOTgxYi4uZDYzNjZkN2QzYjk1IDEyMDAwMAotLS0gYS9zcmNwa2dzL2xpYm9t cAorKysgYi9zcmNwa2dzL2xpYm9tcApAQCAtMSArMSBAQAotbGx2bTEyClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQorbGx2bTEzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t Z2l0IGEvc3JjcGtncy9saWJvbXAtZGV2ZWwgYi9zcmNwa2dzL2xpYm9tcC1kZXZlbAppbmRleCBj ZDYwZmQ3YTk4MWIuLmQ2MzY2ZDdkM2I5NSAxMjAwMDAKLS0tIGEvc3JjcGtncy9saWJvbXAtZGV2 ZWwKKysrIGIvc3JjcGtncy9saWJvbXAtZGV2ZWwKQEAgLTEgKzEgQEAKLWxsdm0xMgpcIE5vIG5l d2xpbmUgYXQgZW5kIG9mIGZpbGUKK2xsdm0xMwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGxkIGIvc3JjcGtncy9sbGQKaW5kZXggY2Q2MGZkN2E5ODFi Li5kNjM2NmQ3ZDNiOTUgMTIwMDAwCi0tLSBhL3NyY3BrZ3MvbGxkCisrKyBiL3NyY3BrZ3MvbGxk CkBAIC0xICsxIEBACi1sbHZtMTIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitsbHZtMTMK XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsZC1kZXZl bCBiL3NyY3BrZ3MvbGxkLWRldmVsCmluZGV4IGNkNjBmZDdhOTgxYi4uZDYzNjZkN2QzYjk1IDEy MDAwMAotLS0gYS9zcmNwa2dzL2xsZC1kZXZlbAorKysgYi9zcmNwa2dzL2xsZC1kZXZlbApAQCAt MSArMSBAQAotbGx2bTEyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorbGx2bTEzClwgTm8g bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbGRiIGIvc3JjcGtn cy9sbGRiCmluZGV4IGNkNjBmZDdhOTgxYi4uZDYzNjZkN2QzYjk1IDEyMDAwMAotLS0gYS9zcmNw a2dzL2xsZGIKKysrIGIvc3JjcGtncy9sbGRiCkBAIC0xICsxIEBACi1sbHZtMTIKXCBObyBuZXds aW5lIGF0IGVuZCBvZiBmaWxlCitsbHZtMTMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp ZmYgLS1naXQgYS9zcmNwa2dzL2xsZGItZGV2ZWwgYi9zcmNwa2dzL2xsZGItZGV2ZWwKaW5kZXgg Y2Q2MGZkN2E5ODFiLi5kNjM2NmQ3ZDNiOTUgMTIwMDAwCi0tLSBhL3NyY3BrZ3MvbGxkYi1kZXZl bAorKysgYi9zcmNwa2dzL2xsZGItZGV2ZWwKQEAgLTEgKzEgQEAKLWxsdm0xMgpcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUKK2xsdm0xMwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bS1saWJ1bndpbmQgYi9zcmNwa2dzL2xsdm0tbGlidW53aW5k CmluZGV4IGNkNjBmZDdhOTgxYi4uZDYzNjZkN2QzYjk1IDEyMDAwMAotLS0gYS9zcmNwa2dzL2xs dm0tbGlidW53aW5kCisrKyBiL3NyY3BrZ3MvbGx2bS1saWJ1bndpbmQKQEAgLTEgKzEgQEAKLWxs dm0xMgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2xsdm0xMwpcIE5vIG5ld2xpbmUgYXQg ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bS1saWJ1bndpbmQtZGV2ZWwgYi9z cmNwa2dzL2xsdm0tbGlidW53aW5kLWRldmVsCmluZGV4IGNkNjBmZDdhOTgxYi4uZDYzNjZkN2Qz Yjk1IDEyMDAwMAotLS0gYS9zcmNwa2dzL2xsdm0tbGlidW53aW5kLWRldmVsCisrKyBiL3NyY3Br Z3MvbGx2bS1saWJ1bndpbmQtZGV2ZWwKQEAgLTEgKzEgQEAKLWxsdm0xMgpcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUKK2xsdm0xMwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvbGx2bTEzL2ZpbGVzL2xsdm0tQ29uZmlnLWxsdm0tY29uZmlnLmggYi9z cmNwa2dzL2xsdm0xMy9maWxlcy9sbHZtLUNvbmZpZy1sbHZtLWNvbmZpZy5oCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMmZhMDhjOWJlNjk2Ci0tLSAvZGV2L251bGwK KysrIGIvc3JjcGtncy9sbHZtMTMvZmlsZXMvbGx2bS1Db25maWctbGx2bS1jb25maWcuaApAQCAt MCwwICsxLDkgQEAKKyNpbmNsdWRlIDxiaXRzL3dvcmRzaXplLmg+CisKKyNpZiBfX1dPUkRTSVpF ID09IDMyCisjaW5jbHVkZSAibGx2bS1jb25maWctMzIuaCIKKyNlbGlmIF9fV09SRFNJWkUgPT0g NjQKKyNpbmNsdWRlICJsbHZtLWNvbmZpZy02NC5oIgorI2Vsc2UKKyNlcnJvciAiVW5rbm93biB3 b3JkIHNpemUiCisjZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvY2xh bmctMDAxLWZpeC11bndpbmQtY2hhaW4taW5jbHVzaW9uLnBhdGNoIGIvc3JjcGtncy9sbHZtMTMv cGF0Y2hlcy9jbGFuZy0wMDEtZml4LXVud2luZC1jaGFpbi1pbmNsdXNpb24ucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lNGVhYTc3ODNlN2EKLS0tIC9kZXYv bnVsbAorKysgYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2NsYW5nLTAwMS1maXgtdW53aW5kLWNo YWluLWluY2x1c2lvbi5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitGcm9tIDM1Mjk3NDE2OWYwZDJi NWRhM2Q1MzIxZjU4OGY1ZTNiNTk0MTMzMGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9t OiBBbmRyZWEgQnJhbmNhbGVvbmkgPG1pd2F4ZUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDggU2Vw IDIwMTUgMjI6MTQ6NTcgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzddIGZpeCB1bndpbmQgY2hh aW4gaW5jbHVzaW9uCisKKy0tLQorIGxpYi9IZWFkZXJzL3Vud2luZC5oIHwgOSArKysrKy0tLS0K KyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZm IC0tZ2l0IGEvbGliL0hlYWRlcnMvdW53aW5kLmggYi9saWIvSGVhZGVycy91bndpbmQuaAoraW5k ZXggMzAzZDc5Mi4uNDRlMTBjYyAxMDA2NDQKKy0tLSBhL2NsYW5nL2xpYi9IZWFkZXJzL3Vud2lu ZC5oCisrKysgYi9jbGFuZy9saWIvSGVhZGVycy91bndpbmQuaAorQEAgLTksOSArOSw2IEBACisg CisgLyogU2VlICJEYXRhIERlZmluaXRpb25zIGZvciBsaWJnY2NfcyIgaW4gdGhlIExpbnV4IFN0 YW5kYXJkIEJhc2UuKi8KKyAKKy0jaWZuZGVmIF9fQ0xBTkdfVU5XSU5EX0gKKy0jZGVmaW5lIF9f Q0xBTkdfVU5XSU5EX0gKKy0KKyAjaWYgZGVmaW5lZChfX0FQUExFX18pICYmIF9faGFzX2luY2x1 ZGVfbmV4dCg8dW53aW5kLmg+KQorIC8qIERhcndpbiAoZnJvbSAxMS54IG9uKSBwcm92aWRlIGFu IHVud2luZC5oLiBJZiB0aGF0J3MgYXZhaWxhYmxlLAorICAqIHVzZSBpdC4gbGlidW53aW5kIHdy YXBzIHNvbWUgb2YgaXRzIGRlZmluaXRpb25zIGluICNpZmRlZiBfR05VX1NPVVJDRSwKK0BAIC0z OSw2ICszNiw5IEBACisgIyBlbmRpZgorICNlbHNlCisgCisrI2lmbmRlZiBfX0NMQU5HX1VOV0lO RF9ICisrI2RlZmluZSBfX0NMQU5HX1VOV0lORF9ICisrCisgI2luY2x1ZGUgPHN0ZGludC5oPgor IAorICNpZmRlZiBfX2NwbHVzcGx1cworQEAgLTMyMiw2ICszMjIsNyBAQCBfVW53aW5kX1B0ciBf VW53aW5kX0dldFRleHRSZWxCYXNlKHN0cnVjdCBfVW53aW5kX0NvbnRleHQgKik7CisgfQorICNl bmRpZgorIAorKyNlbmRpZiAvKiBfX0NMQU5HX1VOV0lORF9IICovCisrCisgI2VuZGlmCisgCist I2VuZGlmIC8qIF9fQ0xBTkdfVU5XSU5EX0ggKi8KKy0tIAorMi41LjEKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvbGx2bTEzL3BhdGNoZXMvY2xhbmctMDAyLWFkZC1tdXNsLXRyaXBsZXMucGF0Y2ggYi9z cmNwa2dzL2xsdm0xMy9wYXRjaGVzL2NsYW5nLTAwMi1hZGQtbXVzbC10cmlwbGVzLnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMjU2ODhkNDBkYmMyCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9jbGFuZy0wMDItYWRkLW11c2wt dHJpcGxlcy5wYXRjaApAQCAtMCwwICsxLDExMCBAQAorLS0tIGEvY2xhbmcvbGliL0RyaXZlci9U b29sQ2hhaW5zL0dudS5jcHAKKysrKyBiL2NsYW5nL2xpYi9Ecml2ZXIvVG9vbENoYWlucy9HbnUu Y3BwCitAQCAtMjA4Niw3ICsyMDg2LDggQEAgdm9pZCBHZW5lcmljX0dDQzo6R0NDSW5zdGFsbGF0 aW9uRGV0ZWN0b3I6OkFkZERlZmF1bHRHQ0NQcmVmaXhlcygKKyAgIHN0YXRpYyBjb25zdCBjaGFy ICpjb25zdCBBUk1IRlRyaXBsZXNbXSA9IHsiYXJtLWxpbnV4LWdudWVhYmloZiIsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFybXY3aGwtcmVkaGF0LWxp bnV4LWdudWVhYmkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJhcm12NmhsLXN1c2UtbGludXgtZ251ZWFiaSIsCistICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgImFybXY3aGwtc3VzZS1saW51eC1nbnVlYWJpIn07Cisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFybXY3aGwtc3Vz ZS1saW51eC1nbnVlYWJpIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiYXJtdjdsLWxpbnV4LWdudWVhYmloZiJ9OworICAgc3RhdGljIGNvbnN0IGNoYXIg KmNvbnN0IEFSTWViTGliRGlyc1tdID0geyIvbGliIn07CisgICBzdGF0aWMgY29uc3QgY2hhciAq Y29uc3QgQVJNZWJUcmlwbGVzW10gPSB7ImFybWViLWxpbnV4LWdudWVhYmkiLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcm1lYi1saW51eC1hbmRyb2lk ZWFiaSJ9OworQEAgLTIxNTMsOCArMjE1NCw3IEBAIHZvaWQgR2VuZXJpY19HQ0M6OkdDQ0luc3Rh bGxhdGlvbkRldGVjdG9yOjpBZGREZWZhdWx0R0NDUHJlZml4ZXMoCisgICAgICAgInBvd2VycGM2 NC1zdXNlLWxpbnV4IiwgInBvd2VycGMtbW9udGF2aXN0YS1saW51eHNwZSJ9OworICAgc3RhdGlj IGNvbnN0IGNoYXIgKmNvbnN0IFBQQ0xFTGliRGlyc1tdID0geyIvbGliMzIiLCAiL2xpYiJ9Owor ICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IFBQQ0xFVHJpcGxlc1tdID0geyJwb3dlcnBjbGUt bGludXgtZ251IiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAicG93ZXJwY2xlLXVua25vd24tbGludXgtZ251IiwKKy0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAicG93ZXJwY2xlLWxpbnV4LW11c2wifTsKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicG93ZXJwY2xlLXVua25vd24t bGludXgtZ251In07CisgCisgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgUFBDNjRMaWJEaXJz W10gPSB7Ii9saWI2NCIsICIvbGliIn07CisgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgUFBD NjRUcmlwbGVzW10gPSB7CitAQCAtMjIzNSw2ICsyMjM1LDg3IEBAIHZvaWQgR2VuZXJpY19HQ0M6 OkdDQ0luc3RhbGxhdGlvbkRldGVjdG9yOjpBZGREZWZhdWx0R0NDUHJlZml4ZXMoCisgICAgIHJl dHVybjsKKyAgIH0KKyAKKysgIGlmIChUYXJnZXRUcmlwbGUuaXNNdXNsKCkpIHsKKysgICAgc3Rh dGljIGNvbnN0IGNoYXIgKmNvbnN0IEFBcmNoNjRNdXNsVHJpcGxlc1tdID0geyJhYXJjaDY0LWxp bnV4LW11c2wifTsKKysgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IEFSTUhGTXVzbFRyaXBs ZXNbXSA9IHsKKysgICAgICAgICJhcm0tbGludXgtbXVzbGVhYmloZiIsICJhcm12N2wtbGludXgt bXVzbGVhYmloZiIKKysgICAgfTsKKysgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IEFSTU11 c2xUcmlwbGVzW10gPSB7ImFybS1saW51eC1tdXNsZWFiaSJ9OworKyAgICBzdGF0aWMgY29uc3Qg Y2hhciAqY29uc3QgWDg2XzY0TXVzbFRyaXBsZXNbXSA9IHsieDg2XzY0LWxpbnV4LW11c2wifTsK KysgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IFg4Nk11c2xUcmlwbGVzW10gPSB7Imk2ODYt bGludXgtbXVzbCJ9OworKyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgTUlQU011c2xUcmlw bGVzW10gPSB7CisrICAgICAgICAibWlwcy1saW51eC1tdXNsIiwgIm1pcHNlbC1saW51eC1tdXNs IiwKKysgICAgICAgICJtaXBzZWwtbGludXgtbXVzbGhmIiwgIm1pcHMtbGludXgtbXVzbGhmIgor KyAgICB9OworKyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgUFBDTXVzbFRyaXBsZXNbXSA9 IHsicG93ZXJwYy1saW51eC1tdXNsIn07CisrICAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBQ UENMRU11c2xUcmlwbGVzW10gPSB7InBvd2VycGNsZS1saW51eC1tdXNsIn07CisrICAgIHN0YXRp YyBjb25zdCBjaGFyICpjb25zdCBQUEM2NE11c2xUcmlwbGVzW10gPSB7InBvd2VycGM2NC1saW51 eC1tdXNsIn07CisrICAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBQUEM2NExFTXVzbFRyaXBs ZXNbXSA9IHsicG93ZXJwYzY0bGUtbGludXgtbXVzbCJ9OworKworKyAgICBzd2l0Y2ggKFRhcmdl dFRyaXBsZS5nZXRBcmNoKCkpIHsKKysgICAgY2FzZSBsbHZtOjpUcmlwbGU6OmFhcmNoNjQ6Cisr ICAgICAgTGliRGlycy5hcHBlbmQoYmVnaW4oQUFyY2g2NExpYkRpcnMpLCBlbmQoQUFyY2g2NExp YkRpcnMpKTsKKysgICAgICBUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihBQXJjaDY0TXVzbFRy aXBsZXMpLCBlbmQoQUFyY2g2NE11c2xUcmlwbGVzKSk7CisrICAgICAgQmlhcmNoTGliRGlycy5h cHBlbmQoYmVnaW4oQUFyY2g2NExpYkRpcnMpLCBlbmQoQUFyY2g2NExpYkRpcnMpKTsKKysgICAg ICBCaWFyY2hUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihBQXJjaDY0TXVzbFRyaXBsZXMpLCBl bmQoQUFyY2g2NE11c2xUcmlwbGVzKSk7CisrICAgICAgYnJlYWs7CisrICAgIGNhc2UgbGx2bTo6 VHJpcGxlOjphcm06CisrICAgICAgTGliRGlycy5hcHBlbmQoYmVnaW4oQVJNTGliRGlycyksIGVu ZChBUk1MaWJEaXJzKSk7CisrICAgICAgaWYgKFRhcmdldFRyaXBsZS5nZXRFbnZpcm9ubWVudCgp ID09IGxsdm06OlRyaXBsZTo6TXVzbEVBQklIRikgeworKyAgICAgICAgVHJpcGxlQWxpYXNlcy5h cHBlbmQoYmVnaW4oQVJNSEZNdXNsVHJpcGxlcyksIGVuZChBUk1IRk11c2xUcmlwbGVzKSk7Cisr ICAgICAgfSBlbHNlIHsKKysgICAgICAgIFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKEFSTU11 c2xUcmlwbGVzKSwgZW5kKEFSTU11c2xUcmlwbGVzKSk7CisrICAgICAgfQorKyAgICAgIGJyZWFr OworKyAgICBjYXNlIGxsdm06OlRyaXBsZTo6eDg2XzY0OgorKyAgICAgIExpYkRpcnMuYXBwZW5k KGJlZ2luKFg4Nl82NExpYkRpcnMpLCBlbmQoWDg2XzY0TGliRGlycykpOworKyAgICAgIFRyaXBs ZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFg4Nl82NE11c2xUcmlwbGVzKSwgZW5kKFg4Nl82NE11c2xU cmlwbGVzKSk7CisrICAgICAgQmlhcmNoTGliRGlycy5hcHBlbmQoYmVnaW4oWDg2TGliRGlycyks IGVuZChYODZMaWJEaXJzKSk7CisrICAgICAgQmlhcmNoVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVn aW4oWDg2TXVzbFRyaXBsZXMpLCBlbmQoWDg2TXVzbFRyaXBsZXMpKTsKKysgICAgICBicmVhazsK KysgICAgY2FzZSBsbHZtOjpUcmlwbGU6Ong4NjoKKysgICAgICBMaWJEaXJzLmFwcGVuZChiZWdp bihYODZMaWJEaXJzKSwgZW5kKFg4NkxpYkRpcnMpKTsKKysgICAgICBUcmlwbGVBbGlhc2VzLmFw cGVuZChiZWdpbihYODZNdXNsVHJpcGxlcyksIGVuZChYODZNdXNsVHJpcGxlcykpOworKyAgICAg IEJpYXJjaExpYkRpcnMuYXBwZW5kKGJlZ2luKFg4Nl82NExpYkRpcnMpLCBlbmQoWDg2XzY0TGli RGlycykpOworKyAgICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFg4Nl82NE11 c2xUcmlwbGVzKSwgZW5kKFg4Nl82NE11c2xUcmlwbGVzKSk7CisrICAgICAgYnJlYWs7CisrICAg IGNhc2UgbGx2bTo6VHJpcGxlOjptaXBzOgorKyAgICAgIExpYkRpcnMuYXBwZW5kKGJlZ2luKE1J UFNMaWJEaXJzKSwgZW5kKE1JUFNMaWJEaXJzKSk7CisrICAgICAgVHJpcGxlQWxpYXNlcy5hcHBl bmQoYmVnaW4oTUlQU011c2xUcmlwbGVzKSwgZW5kKE1JUFNNdXNsVHJpcGxlcykpOworKyAgICAg IGJyZWFrOworKyAgICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjOgorKyAgICAgIExpYkRpcnMuYXBw ZW5kKGJlZ2luKFBQQ0xpYkRpcnMpLCBlbmQoUFBDTGliRGlycykpOworKyAgICAgIFRyaXBsZUFs aWFzZXMuYXBwZW5kKGJlZ2luKFBQQ011c2xUcmlwbGVzKSwgZW5kKFBQQ011c2xUcmlwbGVzKSk7 CisrICAgICAgQmlhcmNoTGliRGlycy5hcHBlbmQoYmVnaW4oUFBDNjRMaWJEaXJzKSwgZW5kKFBQ QzY0TGliRGlycykpOworKyAgICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFBQ QzY0TXVzbFRyaXBsZXMpLCBlbmQoUFBDNjRNdXNsVHJpcGxlcykpOworKyAgICAgIGJyZWFrOwor KyAgICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjbGU6CisrICAgICAgTGliRGlycy5hcHBlbmQoYmVn aW4oUFBDTEVMaWJEaXJzKSwgZW5kKFBQQ0xFTGliRGlycykpOworKyAgICAgIFRyaXBsZUFsaWFz ZXMuYXBwZW5kKGJlZ2luKFBQQ0xFTXVzbFRyaXBsZXMpLCBlbmQoUFBDTEVNdXNsVHJpcGxlcykp OworKyAgICAgIEJpYXJjaExpYkRpcnMuYXBwZW5kKGJlZ2luKFBQQzY0TEVMaWJEaXJzKSwgZW5k KFBQQzY0TEVMaWJEaXJzKSk7CisrICAgICAgQmlhcmNoVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVn aW4oUFBDNjRMRU11c2xUcmlwbGVzKSwgZW5kKFBQQzY0TEVNdXNsVHJpcGxlcykpOworKyAgICAg IGJyZWFrOworKyAgICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjNjQ6CisrICAgICAgTGliRGlycy5h cHBlbmQoYmVnaW4oUFBDNjRMaWJEaXJzKSwgZW5kKFBQQzY0TGliRGlycykpOworKyAgICAgIFRy aXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFBQQzY0TXVzbFRyaXBsZXMpLCBlbmQoUFBDNjRNdXNs VHJpcGxlcykpOworKyAgICAgIEJpYXJjaExpYkRpcnMuYXBwZW5kKGJlZ2luKFBQQ0xpYkRpcnMp LCBlbmQoUFBDTGliRGlycykpOworKyAgICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJl Z2luKFBQQ011c2xUcmlwbGVzKSwgZW5kKFBQQ011c2xUcmlwbGVzKSk7CisrICAgICAgYnJlYWs7 CisrICAgIGNhc2UgbGx2bTo6VHJpcGxlOjpwcGM2NGxlOgorKyAgICAgIExpYkRpcnMuYXBwZW5k KGJlZ2luKFBQQzY0TEVMaWJEaXJzKSwgZW5kKFBQQzY0TEVMaWJEaXJzKSk7CisrICAgICAgVHJp cGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oUFBDNjRMRU11c2xUcmlwbGVzKSwgZW5kKFBQQzY0TEVN dXNsVHJpcGxlcykpOworKyAgICAgIEJpYXJjaExpYkRpcnMuYXBwZW5kKGJlZ2luKFBQQ0xFTGli RGlycyksIGVuZChQUENMRUxpYkRpcnMpKTsKKysgICAgICBCaWFyY2hUcmlwbGVBbGlhc2VzLmFw cGVuZChiZWdpbihQUENMRU11c2xUcmlwbGVzKSwgZW5kKFBQQ0xFTXVzbFRyaXBsZXMpKTsKKysg ICAgICBicmVhazsKKysgICAgZGVmYXVsdDoKKysgICAgICBicmVhazsKKysgICAgfQorKyAgICBU cmlwbGVBbGlhc2VzLnB1c2hfYmFjayhUYXJnZXRUcmlwbGUuc3RyKCkpOworKyAgICBpZiAoVGFy Z2V0VHJpcGxlLnN0cigpICE9IEJpYXJjaFRyaXBsZS5zdHIoKSkKKysgICAgICBCaWFyY2hUcmlw bGVBbGlhc2VzLnB1c2hfYmFjayhCaWFyY2hUcmlwbGUuc3RyKCkpOworKyAgICByZXR1cm47Cisr ICB9CisrCisgICAvLyBBbmRyb2lkIHRhcmdldHMgc2hvdWxkIG5vdCB1c2UgR05VL0xpbnV4IHRv b2xzIG9yIGxpYnJhcmllcy4KKyAgIGlmIChUYXJnZXRUcmlwbGUuaXNBbmRyb2lkKCkpIHsKKyAg ICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IEFBcmNoNjRBbmRyb2lkVHJpcGxlc1tdID0gewpk aWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9jbGFuZy0wMDMtcHBjNjQtZHluYW1p Yy1saW5rZXItcGF0aC5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvY2xhbmctMDAzLXBw YzY0LWR5bmFtaWMtbGlua2VyLXBhdGgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi40YWQ2NDEyZDFlNmMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xs dm0xMy9wYXRjaGVzL2NsYW5nLTAwMy1wcGM2NC1keW5hbWljLWxpbmtlci1wYXRoLnBhdGNoCkBA IC0wLDAgKzEsMTMgQEAKKy0tLSBhL2NsYW5nL2xpYi9Ecml2ZXIvVG9vbENoYWlucy9MaW51eC5j cHAKKysrKyBiL2NsYW5nL2xpYi9Ecml2ZXIvVG9vbENoYWlucy9MaW51eC5jcHAKK0BAIC01MDQs MTAgKzUwNCw2IEBAIHN0ZDo6c3RyaW5nIExpbnV4OjpnZXREeW5hbWljTGlua2VyKGNvbnN0IEFy Z0xpc3QgJkFyZ3MpIGNvbnN0IHsKKyAgICAgTG9hZGVyID0gImxkLnNvLjEiOworICAgICBicmVh azsKKyAgIGNhc2UgbGx2bTo6VHJpcGxlOjpwcGM2NDoKKy0gICAgTGliRGlyID0gImxpYjY0IjsK Ky0gICAgTG9hZGVyID0KKy0gICAgICAgICh0b29sczo6cHBjOjpoYXNQUENBYmlBcmcoQXJncywg ImVsZnYyIikpID8gImxkNjQuc28uMiIgOiAibGQ2NC5zby4xIjsKKy0gICAgYnJlYWs7CisgICBj YXNlIGxsdm06OlRyaXBsZTo6cHBjNjRsZToKKyAgICAgTGliRGlyID0gImxpYjY0IjsKKyAgICAg TG9hZGVyID0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvY2xhbmctMDA0LXBw YzY0LW11c2wtZWxmdjIucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2NsYW5nLTAwNC1w cGM2NC1tdXNsLWVsZnYyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMC4uMjFmYzgwMDNjNWYxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9sbHZtMTMvcGF0 Y2hlcy9jbGFuZy0wMDQtcHBjNjQtbXVzbC1lbGZ2Mi5wYXRjaApAQCAtMCwwICsxLDQ4IEBACist LS0gYS9jbGFuZy9saWIvQmFzaWMvVGFyZ2V0cy9QUEMuaAorKysrIGIvY2xhbmcvbGliL0Jhc2lj L1RhcmdldHMvUFBDLmgKK0BAIC00MTUsMTEgKzQxNSwxMCBAQCBwdWJsaWM6CisgICAgICAgTG9u Z0RvdWJsZUZvcm1hdCA9ICZsbHZtOjpBUEZsb2F0OjpJRUVFZG91YmxlKCk7CisgICAgIH0gZWxz ZSBpZiAoKFRyaXBsZS5nZXRBcmNoKCkgPT0gbGx2bTo6VHJpcGxlOjpwcGM2NGxlKSkgeworICAg ICAgIERhdGFMYXlvdXQgPSAiZS1tOmUtaTY0OjY0LW4zMjo2NCI7CistICAgICAgQUJJID0gImVs ZnYyIjsKKyAgICAgfSBlbHNlIHsKKyAgICAgICBEYXRhTGF5b3V0ID0gIkUtbTplLWk2NDo2NC1u MzI6NjQiOworLSAgICAgIEFCSSA9ICJlbGZ2MSI7CisgICAgIH0KKysgICAgQUJJID0gImVsZnYy IjsKKyAKKyAgICAgaWYgKFRyaXBsZS5pc09TRnJlZUJTRCgpIHx8IFRyaXBsZS5pc09TT3BlbkJT RCgpIHx8IFRyaXBsZS5pc011c2woKSkgeworICAgICAgIExvbmdEb3VibGVXaWR0aCA9IExvbmdE b3VibGVBbGlnbiA9IDY0OworLS0tIGEvY2xhbmcvbGliL0NvZGVHZW4vVGFyZ2V0SW5mby5jcHAK KysrKyBiL2NsYW5nL2xpYi9Db2RlR2VuL1RhcmdldEluZm8uY3BwCitAQCAtMTA5MjcsOSArMTA5 MjcsOSBAQCBjb25zdCBUYXJnZXRDb2RlR2VuSW5mbyAmQ29kZUdlbk1vZHVsZTo6Z2V0VGFyZ2V0 Q29kZUdlbkluZm8oKSB7CisgICAgICAgcmV0dXJuIFNldENHSW5mbyhuZXcgQUlYVGFyZ2V0Q29k ZUdlbkluZm8oVHlwZXMsIC8qSXM2NEJpdCovIHRydWUpKTsKKyAKKyAgICAgaWYgKFRyaXBsZS5p c09TQmluRm9ybWF0RUxGKCkpIHsKKy0gICAgICBQUEM2NF9TVlI0X0FCSUluZm86OkFCSUtpbmQg S2luZCA9IFBQQzY0X1NWUjRfQUJJSW5mbzo6RUxGdjE7CistICAgICAgaWYgKGdldFRhcmdldCgp LmdldEFCSSgpID09ICJlbGZ2MiIpCistICAgICAgICBLaW5kID0gUFBDNjRfU1ZSNF9BQklJbmZv OjpFTEZ2MjsKKysgICAgICBQUEM2NF9TVlI0X0FCSUluZm86OkFCSUtpbmQgS2luZCA9IFBQQzY0 X1NWUjRfQUJJSW5mbzo6RUxGdjI7CisrICAgICAgaWYgKGdldFRhcmdldCgpLmdldEFCSSgpID09 ICJlbGZ2MSIpCisrICAgICAgICBLaW5kID0gUFBDNjRfU1ZSNF9BQklJbmZvOjpFTEZ2MTsKKyAg ICAgICBib29sIElzU29mdEZsb2F0ID0gQ29kZUdlbk9wdHMuRmxvYXRBQkkgPT0gInNvZnQiOwor IAorICAgICAgIHJldHVybiBTZXRDR0luZm8oCistLS0gYS9jbGFuZy9saWIvRHJpdmVyL1Rvb2xD aGFpbnMvQ2xhbmcuY3BwCisrKysgYi9jbGFuZy9saWIvRHJpdmVyL1Rvb2xDaGFpbnMvQ2xhbmcu Y3BwCitAQCAtMTkyMCwxNCArMTkyMCw3IEBAIHZvaWQgQ2xhbmc6OkFkZFBQQ1RhcmdldEFyZ3Mo Y29uc3QgQXJnTGlzdCAmQXJncywKKyAgIGNvbnN0IGxsdm06OlRyaXBsZSAmVCA9IGdldFRvb2xD aGFpbigpLmdldFRyaXBsZSgpOworICAgaWYgKFQuaXNPU0JpbkZvcm1hdEVMRigpKSB7CisgICAg IHN3aXRjaCAoZ2V0VG9vbENoYWluKCkuZ2V0QXJjaCgpKSB7CistICAgIGNhc2UgbGx2bTo6VHJp cGxlOjpwcGM2NDogeworLSAgICAgIGlmICgoVC5pc09TRnJlZUJTRCgpICYmIFQuZ2V0T1NNYWpv clZlcnNpb24oKSA+PSAxMykgfHwKKy0gICAgICAgICAgVC5pc09TT3BlbkJTRCgpIHx8IFQuaXNN dXNsKCkpCistICAgICAgICBBQklOYW1lID0gImVsZnYyIjsKKy0gICAgICBlbHNlCistICAgICAg ICBBQklOYW1lID0gImVsZnYxIjsKKy0gICAgICBicmVhazsKKy0gICAgfQorKyAgICBjYXNlIGxs dm06OlRyaXBsZTo6cHBjNjQ6CisgICAgIGNhc2UgbGx2bTo6VHJpcGxlOjpwcGM2NGxlOgorICAg ICAgIEFCSU5hbWUgPSAiZWxmdjIiOworICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9sbHZtMTMvcGF0Y2hlcy9jb21waWxlci1ydC1hYXJjaDY0LXVjb250ZXh0LnBhdGNoIGIvc3Jj cGtncy9sbHZtMTMvcGF0Y2hlcy9jb21waWxlci1ydC1hYXJjaDY0LXVjb250ZXh0LnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODkzYzA1OWQ3YjhkCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9jb21waWxlci1ydC1hYXJjaDY0 LXVjb250ZXh0LnBhdGNoCkBAIC0wLDAgKzEsMTEgQEAKKy0tLSBhL2NvbXBpbGVyLXJ0L2xpYi9z YW5pdGl6ZXJfY29tbW9uL3Nhbml0aXplcl9saW51eC5jcHAub3JpZworKysrIGIvY29tcGlsZXIt cnQvbGliL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVyX2xpbnV4LmNwcAorQEAgLTE3OTksNyAr MTc5OSw3IEBACisgCisgc3RhdGljIGJvb2wgQWFyY2g2NEdldEVTUih1Y29udGV4dF90ICp1Y29u dGV4dCwgdTY0ICplc3IpIHsKKyAgIHN0YXRpYyBjb25zdCB1MzIga0Vzck1hZ2ljID0gMHg0NTUz NTIwMTsKKy0gIHU4ICphdXggPSB1Y29udGV4dC0+dWNfbWNvbnRleHQuX19yZXNlcnZlZDsKKysg IHU4ICphdXggPSByZWludGVycHJldF9jYXN0PHU4ICo+KHVjb250ZXh0LT51Y19tY29udGV4dC5f X3Jlc2VydmVkKTsKKyAgIHdoaWxlICh0cnVlKSB7CisgICAgIF9hYXJjaDY0X2N0eCAqY3R4ID0g KF9hYXJjaDY0X2N0eCAqKWF1eDsKKyAgICAgaWYgKGN0eC0+c2l6ZSA9PSAwKSBicmVhazsKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvY29tcGlsZXItcnQtc2FuaXRpemVyLXBw YzY0LW11c2wucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2NvbXBpbGVyLXJ0LXNhbml0 aXplci1wcGM2NC1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMC4uMzVmMTZkMjRmMzQwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9sbHZtMTMvcGF0 Y2hlcy9jb21waWxlci1ydC1zYW5pdGl6ZXItcHBjNjQtbXVzbC5wYXRjaApAQCAtMCwwICsxLDM1 IEBACistLS0gYS9jb21waWxlci1ydC9saWIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfbGlu dXguY3BwCisrKysgYi9jb21waWxlci1ydC9saWIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJf bGludXguY3BwCitAQCAtNzQsNiArNzQsMTAgQEAKKyAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4K KyAjZW5kaWYKKyAKKysjaWYgU0FOSVRJWkVSX0xJTlVYICYmIGRlZmluZWQoX19wb3dlcnBjX18p CisrI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KKysjZW5kaWYKKysKKyAjaWYgU0FOSVRJWkVSX0xJ TlVYICYmICFTQU5JVElaRVJfQU5EUk9JRAorICNpbmNsdWRlIDxzeXMvcGVyc29uYWxpdHkuaD4K KyAjZW5kaWYKKy0tLSBhL2NvbXBpbGVyLXJ0L2xpYi9zYW5pdGl6ZXJfY29tbW9uL3Nhbml0aXpl cl9wbGF0Zm9ybV9saW1pdHNfcG9zaXguY3BwCisrKysgYi9jb21waWxlci1ydC9saWIvc2FuaXRp emVyX2NvbW1vbi9zYW5pdGl6ZXJfcGxhdGZvcm1fbGltaXRzX3Bvc2l4LmNwcAorQEAgLTkyLDcg KzkyLDcgQEAKKyAjIGluY2x1ZGUgPHV0aW1lLmg+CisgIyBpbmNsdWRlIDxzeXMvcHRyYWNlLmg+ CisgI2lmIGRlZmluZWQoX19taXBzNjQpIHx8IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmlu ZWQoX19hcm1fXykgfHwgXAorLSAgICBTQU5JVElaRVJfUklTQ1Y2NAorKyAgICBkZWZpbmVkKF9f cG93ZXJwY19fKSB8fCBTQU5JVElaRVJfUklTQ1Y2NAorICMgIGluY2x1ZGUgPGFzbS9wdHJhY2Uu aD4KKyAjICBpZmRlZiBfX2FybV9fCisgdHlwZWRlZiBzdHJ1Y3QgdXNlcl9mcHJlZ3MgZWxmX2Zw cmVnc2V0X3Q7CistLS0gYS9jb21waWxlci1ydC9saWIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6 ZXJfc3RvcHRoZXdvcmxkX2xpbnV4X2xpYmNkZXAuY3BwCisrKysgYi9jb21waWxlci1ydC9saWIv c2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfc3RvcHRoZXdvcmxkX2xpbnV4X2xpYmNkZXAuY3Bw CitAQCAtMzEsNyArMzEsNyBAQAorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4gLy8gZm9yIHBpZF90 CisgI2luY2x1ZGUgPHN5cy91aW8uaD4gLy8gZm9yIGlvdmVjCisgI2luY2x1ZGUgPGVsZi5oPiAv LyBmb3IgTlRfUFJTVEFUVVMKKy0jaWYgKGRlZmluZWQoX19hYXJjaDY0X18pIHx8IFNBTklUSVpF Ul9SSVNDVjY0KSAmJiAhU0FOSVRJWkVSX0FORFJPSUQKKysjaWYgKGRlZmluZWQoX19hYXJjaDY0 X18pIHx8IGRlZmluZWQoX19wb3dlcnBjX18pIHx8IFNBTklUSVpFUl9SSVNDVjY0KSAmJiAhU0FO SVRJWkVSX0FORFJPSUQKKyAvLyBHTElCQyAyLjIwKyBzeXMvdXNlciBkb2VzIG5vdCBpbmNsdWRl IGFzbS9wdHJhY2UuaAorICMgaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgorICNlbmRpZgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9jb21waWxlci1ydC14cmF5LXBwYzY0LW11c2wu cGF0Y2ggYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2NvbXBpbGVyLXJ0LXhyYXktcHBjNjQtbXVz bC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQwYjYxYzgw Yzg5NwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvY29tcGlsZXIt cnQteHJheS1wcGM2NC1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsNjIgQEAKKy0tLSBhL2NvbXBpbGVy LXJ0L2xpYi94cmF5L3hyYXlfcG93ZXJwYzY0LmluYworKysrIGIvY29tcGlsZXItcnQvbGliL3hy YXkveHJheV9wb3dlcnBjNjQuaW5jCitAQCAtMTIsNyArMTIsMTMgQEAKKyAKKyAjaW5jbHVkZSA8 Y3N0ZGludD4KKyAjaW5jbHVkZSA8bXV0ZXg+CisrI2lmZGVmIF9fR0xJQkNfXworICNpbmNsdWRl IDxzeXMvcGxhdGZvcm0vcHBjLmg+CisrI2Vsc2UKKysjaW5jbHVkZSA8Y2N0eXBlPgorKyNpbmNs dWRlIDxjc3RyaW5nPgorKyNpbmNsdWRlIDxjc3RkbGliPgorKyNlbmRpZgorIAorICNpbmNsdWRl ICJ4cmF5X2RlZnMuaCIKKyAKK0BAIC0yMCwxMyArMjYsNDUgQEAgbmFtZXNwYWNlIF9feHJheSB7 CisgCisgQUxXQVlTX0lOTElORSB1aW50NjRfdCByZWFkVFNDKHVpbnQ4X3QgJkNQVSkgWFJBWV9O RVZFUl9JTlNUUlVNRU5UIHsKKyAgIENQVSA9IDA7CisrI2lmZGVmIF9fR0xJQkNfXworICAgcmV0 dXJuIF9fcHBjX2dldF90aW1lYmFzZSgpOworKyNlbHNlCisrICByZXR1cm4gX19idWlsdGluX3Bw Y19nZXRfdGltZWJhc2UoKTsKKysjZW5kaWYKKyB9CisgCisgaW5saW5lIHVpbnQ2NF90IGdldFRT Q0ZyZXF1ZW5jeSgpIFhSQVlfTkVWRVJfSU5TVFJVTUVOVCB7CisgICBzdGF0aWMgc3RkOjptdXRl eCBNOworICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IEd1YXJkKE0pOworKyNpZmRlZiBf X0dMSUJDX18KKyAgIHJldHVybiBfX3BwY19nZXRfdGltZWJhc2VfZnJlcSgpOworKyNlbHNlCisr ICAvKiBGSVhNRTogYSBsZXNzIGRpcnR5IGltcGxlbWVudGF0aW9uPyAqLworKyAgc3RhdGljIHVp bnQ2NF90IGJhc2U7CisrICBpZiAoIWJhc2UpIHsKKysgICAgRklMRSAqZiA9IGZvcGVuKCIvcHJv Yy9jcHVpbmZvIiwgInJiIik7CisrICAgIGlmIChmKSB7CisrICAgICAgc3NpemVfdCBucjsKKysg ICAgICAvKiB2aXJ0dWFsbHkgYWx3YXlzIGJpZyBlbm91Z2ggdG8gaG9sZCB0aGUgbGluZSAqLwor KyAgICAgIGNoYXIgYnVmWzUxMl07CisrICAgICAgd2hpbGUgKGZnZXRzKGJ1Ziwgc2l6ZW9mKGJ1 ZiksIGYpKSB7CisrICAgICAgICBjaGFyICpyZXQgPSBzdHJzdHIoYnVmLCAidGltZWJhc2UiKTsK KysgICAgICAgIGlmICghcmV0KSB7CisrICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgfQor KyAgICAgICAgcmV0ICs9IHNpemVvZigidGltZWJhc2UiKSAtIDE7CisrICAgICAgICByZXQgPSBz dHJjaHIocmV0LCAnOicpOworKyAgICAgICAgaWYgKCFyZXQpIHsKKysgICAgICAgICAgY29udGlu dWU7CisrICAgICAgICB9CisrICAgICAgICBiYXNlID0gc3RydG91bChyZXQgKyAxLCBudWxscHRy LCAxMCk7CisrICAgICAgICBicmVhazsKKysgICAgICB9CisrICAgICAgZmNsb3NlKGYpOworKyAg ICB9CisrICB9CisrICByZXR1cm4gYmFzZTsKKysjZW5kaWYKKyB9CisgCisgaW5saW5lIGJvb2wg cHJvYmVSZXF1aXJlZENQVUZlYXR1cmVzKCkgWFJBWV9ORVZFUl9JTlNUUlVNRU5UIHsKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGliY3h4LW11c2wucGF0Y2ggYi9zcmNwa2dz L2xsdm0xMy9wYXRjaGVzL2xpYmN4eC1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMC4uYmJkMzFmZmMyY2IxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtn cy9sbHZtMTMvcGF0Y2hlcy9saWJjeHgtbXVzbC5wYXRjaApAQCAtMCwwICsxLDI2IEBACistLS0g YS9saWJjeHgvaW5jbHVkZS9sb2NhbGUKKysrKyBiL2xpYmN4eC9pbmNsdWRlL2xvY2FsZQorQEAg LTc0Miw3ICs3NDIsMTEgQEAgX19udW1fZ2V0X3NpZ25lZF9pbnRlZ3JhbChjb25zdCBjaGFyKiBf X2EsIGNvbnN0IGNoYXIqIF9fYV9lbmQsCisgICAgICAgICB0eXBlbmFtZSByZW1vdmVfcmVmZXJl bmNlPGRlY2x0eXBlKGVycm5vKT46OnR5cGUgX19zYXZlX2Vycm5vID0gZXJybm87CisgICAgICAg ICBlcnJubyA9IDA7CisgICAgICAgICBjaGFyICpfX3AyOworKyNpZiBkZWZpbmVkKF9fbGludXhf XykgJiYgIWRlZmluZWQoX19HTElCQ19fKQorKyAgICAgICAgbG9uZyBsb25nIF9fbGwgPSBzdHJ0 b2xsKF9fYSwgJl9fcDIsIF9fYmFzZSk7CisrI2Vsc2UKKyAgICAgICAgIGxvbmcgbG9uZyBfX2xs ID0gc3RydG9sbF9sKF9fYSwgJl9fcDIsIF9fYmFzZSwgX0xJQkNQUF9HRVRfQ19MT0NBTEUpOwor KyNlbmRpZgorICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxkZWNsdHlwZShlcnJu byk+Ojp0eXBlIF9fY3VycmVudF9lcnJubyA9IGVycm5vOworICAgICAgICAgaWYgKF9fY3VycmVu dF9lcnJubyA9PSAwKQorICAgICAgICAgICAgIGVycm5vID0gX19zYXZlX2Vycm5vOworQEAgLTc4 Miw3ICs3ODYsMTEgQEAgX19udW1fZ2V0X3Vuc2lnbmVkX2ludGVncmFsKGNvbnN0IGNoYXIqIF9f YSwgY29uc3QgY2hhciogX19hX2VuZCwKKyAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVu Y2U8ZGVjbHR5cGUoZXJybm8pPjo6dHlwZSBfX3NhdmVfZXJybm8gPSBlcnJubzsKKyAgICAgICAg IGVycm5vID0gMDsKKyAgICAgICAgIGNoYXIgKl9fcDI7CisrI2lmIGRlZmluZWQoX19saW51eF9f KSAmJiAhZGVmaW5lZChfX0dMSUJDX18pCisrICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgX19s bCA9IHN0cnRvdWxsKF9fYSwgJl9fcDIsIF9fYmFzZSk7CisrI2Vsc2UKKyAgICAgICAgIHVuc2ln bmVkIGxvbmcgbG9uZyBfX2xsID0gc3RydG91bGxfbChfX2EsICZfX3AyLCBfX2Jhc2UsIF9MSUJD UFBfR0VUX0NfTE9DQUxFKTsKKysjZW5kaWYKKyAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9yZWZl cmVuY2U8ZGVjbHR5cGUoZXJybm8pPjo6dHlwZSBfX2N1cnJlbnRfZXJybm8gPSBlcnJubzsKKyAg ICAgICAgIGlmIChfX2N1cnJlbnRfZXJybm8gPT0gMCkKKyAgICAgICAgICAgICBlcnJubyA9IF9f c2F2ZV9lcnJubzsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGliY3h4LXBw Yy5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGliY3h4LXBwYy5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjdhOTJmODAwNGUxYwotLS0gL2Rldi9u dWxsCisrKyBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGliY3h4LXBwYy5wYXRjaApAQCAtMCww ICsxLDIyIEBACitUaGlzIGVuc3VyZXMgYGlzX2llYzU1OWAgaXMgZGVmaW5lZCBjb3JyZWN0bHkg dW5kZXIgYWxsIGxvbmcgZG91YmxlIEFCSXMsCitpbmNsdWRpbmcgbXVzbCBhbmQgaXRzIDY0LWJp dCBsb25nIGRvdWJsZS4gQWxzbywgYF9fcHBjX19gIG9yIGBfX3BwYzY0X19gCitpcyBub3QgZGVm aW5lZCBvbiBnY2MuCisKKy0tLSBhL2xpYmN4eC9pbmNsdWRlL2xpbWl0cworKysrIGIvbGliY3h4 L2luY2x1ZGUvbGltaXRzCitAQCAtNDI2LDggKzQyNiwxNCBAQCBwcm90ZWN0ZWQ6CisgICAgIF9M SUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgc3RhdGljIF9MSUJDUFBfQ09OU1RFWFBSIHR5cGUgc2ln bmFsaW5nX05hTigpIF9OT0VYQ0VQVCB7cmV0dXJuIF9fYnVpbHRpbl9uYW5zbCgiIik7fQorICAg ICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIHN0YXRpYyBfTElCQ1BQX0NPTlNURVhQUiB0eXBl IGRlbm9ybV9taW4oKSBfTk9FWENFUFQge3JldHVybiBfX0xEQkxfREVOT1JNX01JTl9fO30KKyAK Ky0jaWYgKGRlZmluZWQoX19wcGNfXykgfHwgZGVmaW5lZChfX3BwYzY0X18pKQorKyNpZiBkZWZp bmVkKF9fcG93ZXJwY19fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrI2lmIChfX0xEQkxf TUFYX0VYUF9fID4gX19EQkxfTUFYX0VYUF9fKSB8fCAoX19MREJMX01BTlRfRElHX18gPT0gX19E QkxfTUFOVF9ESUdfXykKKysgICAgLyogSUVFRSA3NTQgcXVhZHJ1cGxlIG9yIGRvdWJsZSBwcmVj aXNpb24gKi8KKysgICAgc3RhdGljIF9MSUJDUFBfQ09OU1RFWFBSIGNvbnN0IGJvb2wgaXNfaWVj NTU5ID0gdHJ1ZTsKKysjZWxzZQorKyAgICAvKiAxMjgtYml0IElCTSBkb3VibGUtZG91YmxlICov CisgICAgIHN0YXRpYyBfTElCQ1BQX0NPTlNURVhQUiBjb25zdCBib29sIGlzX2llYzU1OSA9IGZh bHNlOworKyNlbmRpZgorICNlbHNlCisgICAgIHN0YXRpYyBfTElCQ1BQX0NPTlNURVhQUiBjb25z dCBib29sIGlzX2llYzU1OSA9IHRydWU7CisgI2VuZGlmCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xs dm0xMy9wYXRjaGVzL2xpYmN4eC1zc3Atbm9uc2hhcmVkLnBhdGNoIGIvc3JjcGtncy9sbHZtMTMv cGF0Y2hlcy9saWJjeHgtc3NwLW5vbnNoYXJlZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLjcwMjkyYmViMmZjZAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3Br Z3MvbGx2bTEzL3BhdGNoZXMvbGliY3h4LXNzcC1ub25zaGFyZWQucGF0Y2gKQEAgLTAsMCArMSwx MSBAQAorLS0tIGEvbGliY3h4L0NNYWtlTGlzdHMudHh0CisrKysgYi9saWJjeHgvQ01ha2VMaXN0 cy50eHQKK0BAIC03NjksNiArNzY5LDggQEAgZnVuY3Rpb24oY3h4X2xpbmtfc3lzdGVtX2xpYnJh cmllcyB0YXJnZXQpCisgICAgIHRhcmdldF9saW5rX2xpYnJhcmllcygke3RhcmdldH0gUFJJVkFU RSBhdG9taWMpCisgICBlbmRpZigpCisgCisrI3NzcCAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7 dGFyZ2V0fSBQUklWQVRFIHNzcF9ub25zaGFyZWQpCisrCisgICBpZiAoTUlOR1cpCisgICAgIHRh cmdldF9saW5rX2xpYnJhcmllcygke3RhcmdldH0gUFJJVkFURSAiJHtNSU5HV19MSUJSQVJJRVN9 IikKKyAgIGVuZGlmKCkKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGliY3h4 YWJpLWRsLnBhdGNoIGIvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9saWJjeHhhYmktZGwucGF0Y2gK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zYTE1ZjlkYjhjOTgKLS0t IC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xpYmN4eGFiaS1kbC5wYXRj aApAQCAtMCwwICsxLDI1IEBACitBbHNvIGxpbmsgdG8gLWxkbCB0byBwcmV2ZW50IHVuZGVmaW5l ZCByZWZlcmVuY2VzLgorCistLS0gYS9saWJjeHhhYmkvc3JjL0NNYWtlTGlzdHMudHh0CisrKysg Yi9saWJjeHhhYmkvc3JjL0NNYWtlTGlzdHMudHh0CitAQCAtNzMsNiArNzMsNyBAQAorICAgZW5k aWYoKQorIAorICAgYWRkX2xpYnJhcnlfZmxhZ3NfaWYoTElCQ1hYQUJJX0hBU19DX0xJQiBjKQor KyAgYWRkX2xpYnJhcnlfZmxhZ3NfaWYoTElCQ1hYQUJJX0hBU19DX0xJQiBkbCkKKyBlbmRpZigp CisgCisgaWYgKExJQkNYWEFCSV9VU0VfTExWTV9VTldJTkRFUikKKy0tLSBhL2xpYmN4eC9DTWFr ZUxpc3RzLnR4dAorKysrIGIvbGliY3h4L0NNYWtlTGlzdHMudHh0CitAQCAtNzQ1LDYgKzc0NSwx MCBAQAorICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHt0YXJnZXR9IFBSSVZBVEUgbSkKKyAg IGVuZGlmKCkKKyAKKysgIGlmIChMSUJDWFhfSEFTX0NfTElCKQorKyAgICB0YXJnZXRfbGlua19s aWJyYXJpZXMoJHt0YXJnZXR9IFBSSVZBVEUgZGwpCisrICBlbmRpZigpCisrCisgICBpZiAoTElC Q1hYX0hBU19SVF9MSUIpCisgICAgIHRhcmdldF9saW5rX2xpYnJhcmllcygke3RhcmdldH0gUFJJ VkFURSBydCkKKyAgIGVuZGlmKCkKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMv bGlidW53aW5kLXBwYzMyLnBhdGNoIGIvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9saWJ1bndpbmQt cHBjMzIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43NGFh NzU3NmVjZjkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xpYnVu d2luZC1wcGMzMi5wYXRjaApAQCAtMCwwICsxLDYzIEBACitUaGlzIGZpeGVzIGJ1aWxkIGF0IGxl YXN0IHdpdGggZ2NjOSB3aGljaCBkb2VzIG5vdCBkZWZpbmUgYF9fcHBjX19gLgorCistLS0gYS9s aWJ1bndpbmQvaW5jbHVkZS9fX2xpYnVud2luZF9jb25maWcuaAorKysrIGIvbGlidW53aW5kL2lu Y2x1ZGUvX19saWJ1bndpbmRfY29uZmlnLmgKK0BAIC00OSw3ICs0OSw3IEBACisgIyAgZGVmaW5l IF9MSUJVTldJTkRfQ09OVEVYVF9TSVpFIDE2NworICMgIGRlZmluZSBfTElCVU5XSU5EX0NVUlNP Ul9TSVpFIDE3OQorICMgIGRlZmluZSBfTElCVU5XSU5EX0hJR0hFU1RfRFdBUkZfUkVHSVNURVIg X0xJQlVOV0lORF9ISUdIRVNUX0RXQVJGX1JFR0lTVEVSX1BQQzY0CistIyBlbGlmIGRlZmluZWQo X19wcGNfXykKKysjIGVsaWYgZGVmaW5lZChfX3Bvd2VycGNfXykKKyAjICBkZWZpbmUgX0xJQlVO V0lORF9UQVJHRVRfUFBDIDEKKyAjICBkZWZpbmUgX0xJQlVOV0lORF9DT05URVhUX1NJWkUgMTE3 CisgIyAgZGVmaW5lIF9MSUJVTldJTkRfQ1VSU09SX1NJWkUgMTI0CistLS0gYS9saWJ1bndpbmQv c3JjL1Vud2luZFJlZ2lzdGVyc1Jlc3RvcmUuUworKysrIGIvbGlidW53aW5kL3NyYy9VbndpbmRS ZWdpc3RlcnNSZXN0b3JlLlMKK0BAIC0zOTIsNyArMzkyLDcgQEAgTG5vdmVjOgorICAgUFBDNjRf TFIoMykKKyAgIGJjdHIKKyAKKy0jZWxpZiBkZWZpbmVkKF9fcHBjX18pCisrI2VsaWYgZGVmaW5l ZChfX3Bvd2VycGNfXykKKyAKKyBERUZJTkVfTElCVU5XSU5EX0ZVTkNUSU9OKF9aTjlsaWJ1bndp bmQxM1JlZ2lzdGVyc19wcGM2anVtcHRvRXYpCisgLy8KKy0tLSBhL2xpYnVud2luZC9zcmMvVW53 aW5kUmVnaXN0ZXJzU2F2ZS5TCisrKysgYi9saWJ1bndpbmQvc3JjL1Vud2luZFJlZ2lzdGVyc1Nh dmUuUworQEAgLTU1NCw3ICs1NTQsNyBAQCBERUZJTkVfTElCVU5XSU5EX0ZVTkNUSU9OKF9fdW53 X2dldGNvbnRleHQpCisgICBibHIKKyAKKyAKKy0jZWxpZiBkZWZpbmVkKF9fcHBjX18pCisrI2Vs aWYgZGVmaW5lZChfX3Bvd2VycGNfXykKKyAKKyAvLworIC8vIGV4dGVybiBpbnQgdW53X2dldGNv bnRleHQodW53X2NvbnRleHRfdCogdGhyZWFkX3N0YXRlKQorLS0tIGEvbGlidW53aW5kL3NyYy9j b25maWcuaAorKysrIGIvbGlidW53aW5kL3NyYy9jb25maWcuaAorQEAgLTk1LDEyICs5NSwxMiBA QAorICNkZWZpbmUgX0xJQlVOV0lORF9CVUlMRF9TSkxKX0FQSVMKKyAjZW5kaWYKKyAKKy0jaWYg ZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fcHBj X18pIHx8IGRlZmluZWQoX19wcGM2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrI2lm IGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX3Bv d2VycGNfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICNkZWZpbmUgX0xJQlVOV0lORF9T VVBQT1JUX0ZSQU1FX0FQSVMKKyAjZW5kaWYKKyAKKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwg ZGVmaW5lZChfX3g4Nl82NF9fKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor LSAgICBkZWZpbmVkKF9fcHBjX18pIHx8IGRlZmluZWQoX19wcGM2NF9fKSB8fCBkZWZpbmVkKF9f cG93ZXJwYzY0X18pIHx8ICAgICAgICBcCisrICAgIGRlZmluZWQoX19wb3dlcnBjX18pIHx8IGRl ZmluZWQoX19wb3dlcnBjNjRfXykgfHwgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg KCFkZWZpbmVkKF9fQVBQTEVfXykgJiYgZGVmaW5lZChfX2FybV9fKSkgfHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorICAgICAoZGVmaW5lZChfX2FybTY0X18pIHx8IGRlZmluZWQo X19hYXJjaDY0X18pKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIGRlZmlu ZWQoX19taXBzX18pCistLS0gYS9saWJ1bndpbmQvc3JjL2xpYnVud2luZC5jcHAKKysrKyBiL2xp YnVud2luZC9zcmMvbGlidW53aW5kLmNwcAorQEAgLTQyLDcgKzQyLDcgQEAgX0xJQlVOV0lORF9I SURERU4gaW50IF9fdW53X2luaXRfbG9jYWwodW53X2N1cnNvcl90ICpjdXJzb3IsCisgIyBkZWZp bmUgUkVHSVNURVJfS0lORCBSZWdpc3RlcnNfeDg2XzY0CisgI2VsaWYgZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKQorICMgZGVmaW5lIFJFR0lTVEVSX0tJTkQgUmVnaXN0ZXJzX3BwYzY0CistI2VsaWYg ZGVmaW5lZChfX3BwY19fKQorKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjX18pCisgIyBkZWZpbmUg UkVHSVNURVJfS0lORCBSZWdpc3RlcnNfcHBjCisgI2VsaWYgZGVmaW5lZChfX2FhcmNoNjRfXykK KyAjIGRlZmluZSBSRUdJU1RFUl9LSU5EIFJlZ2lzdGVyc19hcm02NApkaWZmIC0tZ2l0IGEvc3Jj cGtncy9sbHZtMTMvcGF0Y2hlcy9sbGRiLW11c2wucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMy9wYXRj aGVzL2xsZGItbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAuLjYwMWMwZDEzODUyMwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNo ZXMvbGxkYi1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKKy0tLSBhL2xsZGIvc291cmNlL1Bs dWdpbnMvUHJvY2Vzcy9MaW51eC9Qcm9jZnMuaAorKysrIGIvbGxkYi9zb3VyY2UvUGx1Z2lucy9Q cm9jZXNzL0xpbnV4L1Byb2Nmcy5oCitAQCAtMTAsMjEgKzEwLDEyIEBACisgLy8gc3lzL3Byb2Nm cy5oIG9uIEFuZHJvaWQvTGludXggZm9yIGFsbCBzdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlcy4KKyAK KyAjaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgorKyNpbmNsdWRlIDxhc20vcHRyYWNlLmg+CisgCist I2lmZGVmIF9fQU5EUk9JRF9fCistI2lmIGRlZmluZWQoX19hcm02NF9fKSB8fCBkZWZpbmVkKF9f YWFyY2g2NF9fKQorLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBlbGZfZ3JlZ190OworLXR5cGVkZWYg ZWxmX2dyZWdfdAorLSAgICBlbGZfZ3JlZ3NldF90WyhzaXplb2Yoc3RydWN0IHVzZXJfcHRfcmVn cykgLyBzaXplb2YoZWxmX2dyZWdfdCkpXTsKKy10eXBlZGVmIHN0cnVjdCB1c2VyX2Zwc2ltZF9z dGF0ZSBlbGZfZnByZWdzZXRfdDsKKy0jaWZuZGVmIE5UX0ZQUkVHU0VUCistI2RlZmluZSBOVF9G UFJFR1NFVCBOVF9QUkZQUkVHCistI2VuZGlmIC8vIE5UX0ZQUkVHU0VUCistI2VsaWYgZGVmaW5l ZChfX21pcHNfXykKKy0jaWZuZGVmIE5UX0ZQUkVHU0VUCistI2RlZmluZSBOVF9GUFJFR1NFVCBO VF9QUkZQUkVHCistI2VuZGlmIC8vIE5UX0ZQUkVHU0VUCistI2VuZGlmCistI2Vsc2UgLy8gX19B TkRST0lEX18KKysjaWYgIWRlZmluZWQoX19HTElCQ19fKSAmJiBkZWZpbmVkKF9fcG93ZXJwY19f KQorKyNkZWZpbmUgcHRfcmVncyBtdXNsX3B0X3JlZ3MKKysjaW5jbHVkZSA8c3lzL3Byb2Nmcy5o PgorKyN1bmRlZiBwdF9yZWdzCisrI2Vsc2UKKyAjaW5jbHVkZSA8c3lzL3Byb2Nmcy5oPgorLSNl bmRpZiAvLyBfX0FORFJPSURfXworKyNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTMv cGF0Y2hlcy9sbHZtLTAwMS1tdXNsLnBhdGNoIGIvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9sbHZt LTAwMS1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u ZjJhM2Y4ZDYyODEzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9s bHZtLTAwMS1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsNTcgQEAKK0Zyb20gZmFjYTNmYmQxNWQwYzMx MDg0OTNjM2M1NGNkOTMxMzhlMDQ5YWM0MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206 IEFuZHJlYSBCcmFuY2FsZW9uaSA8bWl3YXhlQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgOCBTZXAg MjAxNSAyMjowMzowMiArMDIwMAorU3ViamVjdDogW1BBVENIIDMvM10gbXVzbAorCistLS0KKyBp bmNsdWRlL2xsdm0vQW5hbHlzaXMvVGFyZ2V0TGlicmFyeUluZm8uaCB8IDkgKysrKysrKysrCisg bGliL1N1cHBvcnQvRHluYW1pY0xpYnJhcnkuY3BwICAgICAgICAgICAgfCAyICstCisgbGliL1N1 cHBvcnQvVW5peC9TaWduYWxzLmluYyAgICAgICAgICAgICAgfCA2ICsrKy0tLQorIHV0aWxzL3Vu aXR0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LmNjICAgIHwgMSArCisgNSBmaWxlcyBjaGFuZ2Vk LCAxNyBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9sbHZtL0FuYWx5c2lzL1RhcmdldExpYnJhcnlJbmZvLmggYi9pbmNsdWRlL2xsdm0vQW5hbHlz aXMvVGFyZ2V0TGlicmFyeUluZm8uaAoraW5kZXggMzRhOGExZTMuLjEyMTRlY2U1IDEwMDY0NAor LS0tIGEvbGx2bS9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVGFyZ2V0TGlicmFyeUluZm8uaAorKysr IGIvbGx2bS9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVGFyZ2V0TGlicmFyeUluZm8uaAorQEAgLTE4 LDYgKzE4LDE1IEBACisgI2luY2x1ZGUgImxsdm0vSVIvUGFzc01hbmFnZXIuaCIKKyAjaW5jbHVk ZSAibGx2bS9QYXNzLmgiCisgCisrI3VuZGVmIGZvcGVuNjQKKysjdW5kZWYgZnNlZWtvNjQKKysj dW5kZWYgZnN0YXQ2NAorKyN1bmRlZiBmc3RhdHZmczY0CisrI3VuZGVmIGZ0ZWxsbzY0CisrI3Vu ZGVmIGxzdGF0NjQKKysjdW5kZWYgc3RhdDY0CisrI3VuZGVmIHRtcGZpbGU2NAorKworIG5hbWVz cGFjZSBsbHZtIHsKKyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgQXJyYXlSZWY7CisgY2xh c3MgVHJpcGxlOworZGlmZiAtLWdpdCBhL2xpYi9TdXBwb3J0L1VuaXgvRHluYW1pY0xpYnJhcnku aW5jIGIvbGliL1N1cHBvcnQvVW5peC9EeW5hbWljTGlicmFyeS5pbmMKK2luZGV4IGEyYTM3OTk2 Li4yZjg2YzQ3MCAxMDA2NDQKKy0tLSBhL2xsdm0vbGliL1N1cHBvcnQvVW5peC9EeW5hbWljTGli cmFyeS5pbmMKKysrKyBiL2xsdm0vbGliL1N1cHBvcnQvVW5peC9EeW5hbWljTGlicmFyeS5pbmMK K0BAIC0xMDIsNyArMTAyLDcgQEAgc3RhdGljIHZvaWQgKkRvU2VhcmNoKGNvbnN0IGNoYXIqIFN5 bWJvbE5hbWUpIHsKKyAKKyAvLyBUaGlzIG1hY3JvIHJldHVybnMgdGhlIGFkZHJlc3Mgb2YgYSB3 ZWxsLWtub3duLCBleHBsaWNpdCBzeW1ib2wKKyAjZGVmaW5lIEVYUExJQ0lUX1NZTUJPTChTWU0p IFwKKy0gICBpZiAoIXN0cmNtcChTeW1ib2xOYW1lLCAjU1lNKSkgcmV0dXJuICZTWU0KKysgICBp ZiAoIXN0cmNtcChTeW1ib2xOYW1lLCAjU1lNKSkgcmV0dXJuICh2b2lkICopJlNZTQorIAorIC8v IFVuZGVyIGdsaWJjIHdlIGhhdmUgYSB3ZWlyZCBzaXR1YXRpb24uIFRoZSBzdGRlcnIvb3V0L2lu IHN5bWJvbHMgYXJlIGJvdGgKKyAvLyBtYWNyb3MgYW5kIGdsb2JhbCB2YXJpYWJsZXMgYmVjYXVz ZSBvZiBzdGFuZGFyZHMgcmVxdWlyZW1lbnRzLiBTbywgd2UKK2RpZmYgLS1naXQgYS91dGlscy91 bml0dGVzdC9nb29nbGV0ZXN0L3NyYy9ndGVzdC5jYyBiL3V0aWxzL3VuaXR0ZXN0L2dvb2dsZXRl c3Qvc3JjL2d0ZXN0LmNjCitpbmRleCBkODgyYWIyZS4uZjFmYjEyZDAgMTAwNjQ0CistLS0gYS9s bHZtL3V0aWxzL3VuaXR0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LmNjCisrKysgYi9sbHZtL3V0 aWxzL3VuaXR0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LmNjCitAQCAtMTI4LDYgKzEyOCw3IEBA CisgCisgI2lmIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KKyAjIGluY2x1ZGUgPGFycGEvaW5l dC5oPiAgLy8gTk9MSU5UCisrIyBpbmNsdWRlIDxzeXMvc29ja2V0Lmg+ICAvLyBOT0xJTlQKKyAj IGluY2x1ZGUgPG5ldGRiLmg+ICAvLyBOT0xJTlQKKyAjIGluY2x1ZGUgPHN5cy9zb2NrZXQuaD4g IC8vIE5PTElOVAorICMgaW5jbHVkZSA8c3lzL3R5cGVzLmg+ICAvLyBOT0xJTlQKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGx2bS0wMDItbXVzbC1wcGM2NC1lbGZ2Mi5wYXRj aCBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGx2bS0wMDItbXVzbC1wcGM2NC1lbGZ2Mi5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjAwNzFkOTY0YmQzNwot LS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGx2bS0wMDItbXVzbC1w cGM2NC1lbGZ2Mi5wYXRjaApAQCAtMCwwICsxLDMwIEBACitUaGlzIHBhdGNoZXMgTExWTSB0byB1 c2UgRUxGdjIgb24gcHBjNjQgdW5jb25kaXRpb25hbGx5IHVubGVzcyBvdmVycmlkZGVuLiBXZQor bmVlZCB0aGlzIGJlY2F1c2UgdW5saWtlIG1vc3QgZGlzdHJvcyB3ZSB1c2UgRUxGdjIgZm9yIGJv dGggZ2xpYmMgYW5kIG11c2wKK29uIGJpZyBlbmRpYW4gcHBjNjQuCisKK2RpZmYgLS1naXQgYS9s aWIvVGFyZ2V0L1Bvd2VyUEMvUFBDVGFyZ2V0TWFjaGluZS5jcHAgYi9saWIvVGFyZ2V0L1Bvd2Vy UEMvUFBDVGFyZ2V0TWFjaGluZS5jcHAKK2luZGV4IDA2MzQ4MzNlLi5iN2NiYzJlNyAxMDA2NDQK Ky0tLSBhL2xsdm0vbGliL1RhcmdldC9Qb3dlclBDL1BQQ1RhcmdldE1hY2hpbmUuY3BwCisrKysg Yi9sbHZtL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENUYXJnZXRNYWNoaW5lLmNwcAorQEAgLTIyMiw5 ICsyMjIsOCBAQCBzdGF0aWMgUFBDVGFyZ2V0TWFjaGluZTo6UFBDQUJJIGNvbXB1dGVUYXJnZXRB QkkoY29uc3QgVHJpcGxlICZUVCwKKyAKKyAgIHN3aXRjaCAoVFQuZ2V0QXJjaCgpKSB7CisgICBj YXNlIFRyaXBsZTo6cHBjNjRsZToKKy0gICAgcmV0dXJuIFBQQ1RhcmdldE1hY2hpbmU6OlBQQ19B QklfRUxGdjI7CisgICBjYXNlIFRyaXBsZTo6cHBjNjQ6CistICAgIHJldHVybiBQUENUYXJnZXRN YWNoaW5lOjpQUENfQUJJX0VMRnYxOworKyAgICByZXR1cm4gUFBDVGFyZ2V0TWFjaGluZTo6UFBD X0FCSV9FTEZ2MjsKKyAgIGRlZmF1bHQ6CisgICAgIHJldHVybiBQUENUYXJnZXRNYWNoaW5lOjpQ UENfQUJJX1VOS05PV047CisgICB9CitkaWZmIC0tZ2l0IGEvdGVzdC9Db2RlR2VuL1Bvd2VyUEMv cHBjNjQtZWxmLWFiaS5sbCBiL3Rlc3QvQ29kZUdlbi9Qb3dlclBDL3BwYzY0LWVsZi1hYmkubGwK K2luZGV4IDhiMWNmNmI1Li4yOTZhMmFmYSAxMDA2NDQKKy0tLSBhL2xsdm0vdGVzdC9Db2RlR2Vu L1Bvd2VyUEMvcHBjNjQtZWxmLWFiaS5sbAorKysrIGIvbGx2bS90ZXN0L0NvZGVHZW4vUG93ZXJQ Qy9wcGM2NC1lbGYtYWJpLmxsCitAQCAtMSw0ICsxLDUgQEAKKy07IFJVTjogbGxjIC12ZXJpZnkt bWFjaGluZWluc3RycyAtbXRyaXBsZT1wb3dlcnBjNjQtdW5rbm93bi1saW51eC1nbnUgPCAlcyB8 IEZpbGVDaGVjayAlcyAtY2hlY2stcHJlZml4PUNIRUNLLUVMRnYxCisrOyBSVU46IGxsYyAtdmVy aWZ5LW1hY2hpbmVpbnN0cnMgLW10cmlwbGU9cG93ZXJwYzY0LXVua25vd24tbGludXgtZ251IDwg JXMgfCBGaWxlQ2hlY2sgJXMgLWNoZWNrLXByZWZpeD1DSEVDSy1FTEZ2MgorKzsgUlVOOiBsbGMg LXZlcmlmeS1tYWNoaW5laW5zdHJzIC1tdHJpcGxlPXBvd2VycGM2NC11bmtub3duLWxpbnV4LW11 c2wgPCAlcyB8IEZpbGVDaGVjayAlcyAtY2hlY2stcHJlZml4PUNIRUNLLUVMRnYyCisgOyBSVU46 IGxsYyAtdmVyaWZ5LW1hY2hpbmVpbnN0cnMgLW10cmlwbGU9cG93ZXJwYzY0LXVua25vd24tbGlu dXgtZ251IC10YXJnZXQtYWJpIGVsZnYxIDwgJXMgfCBGaWxlQ2hlY2sgJXMgLWNoZWNrLXByZWZp eD1DSEVDSy1FTEZ2MQorIDsgUlVOOiBsbGMgLXZlcmlmeS1tYWNoaW5laW5zdHJzIC1tdHJpcGxl PXBvd2VycGM2NC11bmtub3duLWxpbnV4LWdudSAtdGFyZ2V0LWFiaSBlbGZ2MiA8ICVzIHwgRmls ZUNoZWNrICVzIC1jaGVjay1wcmVmaXg9Q0hFQ0stRUxGdjIKKyA7IFJVTjogbGxjIC12ZXJpZnkt bWFjaGluZWluc3RycyAtbXRyaXBsZT1wb3dlcnBjNjRsZS11bmtub3duLWxpbnV4LWdudSA8ICVz IHwgRmlsZUNoZWNrICVzIC1jaGVjay1wcmVmaXg9Q0hFQ0stRUxGdjIKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGx2bS0wMDMtcHBjLXNlY3VyZXBsdC5wYXRjaCBiL3NyY3Br Z3MvbGx2bTEzL3BhdGNoZXMvbGx2bS0wMDMtcHBjLXNlY3VyZXBsdC5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmI1ZDE1OTc0Mzc1ZAotLS0gL2Rldi9udWxs CisrKyBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGx2bS0wMDMtcHBjLXNlY3VyZXBsdC5wYXRj aApAQCAtMCwwICsxLDExIEBACistLS0gYS9sbHZtL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENTdWJ0 YXJnZXQuY3BwCisrKysgYi9sbHZtL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENTdWJ0YXJnZXQuY3Bw CitAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgUFBDU3VidGFyZ2V0Ojppbml0U3VidGFyZ2V0RmVh dHVyZXMoU3RyaW5nUmVmIENQVSwgU3RyaW5nUmVmIEZTKSB7CisgCisgICBpZiAoKFRhcmdldFRy aXBsZS5pc09TRnJlZUJTRCgpICYmIFRhcmdldFRyaXBsZS5nZXRPU01ham9yVmVyc2lvbigpID49 IDEzKSB8fAorICAgICAgIFRhcmdldFRyaXBsZS5pc09TTmV0QlNEKCkgfHwgVGFyZ2V0VHJpcGxl LmlzT1NPcGVuQlNEKCkgfHwKKy0gICAgICBUYXJnZXRUcmlwbGUuaXNNdXNsKCkpCisrICAgICAg aXNUYXJnZXRMaW51eCgpKQorICAgICBTZWN1cmVQbHQgPSB0cnVlOworIAorICAgaWYgKEhhc1NQ RSAmJiBJc1BQQzY0KQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9sbHZtLTAw NC1vdmVycmlkZS1vcHQucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xsdm0tMDA0LW92 ZXJyaWRlLW9wdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu LjUxZDBlNGIzMWIzMgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMv bGx2bS0wMDQtb3ZlcnJpZGUtb3B0LnBhdGNoCkBAIC0wLDAgKzEsMTggQEAKK1RoaXMgYWxsb3dz IHVzIHRvIG92ZXJyaWRlIHRoZSBvcHRpbWl6YXRpb24gbGV2ZWwgYXMgbm90IGFsbCBwbGF0Zm9y bXMgY2FuCitkZWFsIHdpdGggLU8zLgorCistLS0gYS9sbHZtL0NNYWtlTGlzdHMudHh0CisrKysg Yi9sbHZtL0NNYWtlTGlzdHMudHh0CitAQCAtOTE4LDYgKzkxOCwxMiBAQCBpZiggTUlOR1cgQU5E IE5PVCAiJHtDTUFLRV9DWFhfQ09NUElMRVJfSUR9IiBNQVRDSEVTICJDbGFuZyIgKQorICAgbGx2 bV9yZXBsYWNlX2NvbXBpbGVyX29wdGlvbihDTUFLRV9DWFhfRkxBR1NfUkVMRUFTRSAiLU8zIiAi LU8yIikKKyBlbmRpZigpCisgCisrc2V0KFZPSURfQ1hYX09QVF9GTEFHUyAiIiBDQUNIRSBTVFJJ TkcgIk9wdGltaXphdGlvbiBsZXZlbCB0byB1c2UiKQorKworK2lmIChOT1QgVk9JRF9DWFhfT1BU X0ZMQUdTIFNUUkVRVUFMICIiKQorKyAgICBsbHZtX3JlcGxhY2VfY29tcGlsZXJfb3B0aW9uKENN QUtFX0NYWF9GTEFHU19SRUxFQVNFICItTzMiICIke1ZPSURfQ1hYX09QVF9GTEFHU30iKQorK2Vu ZGlmKCkKKysKKyAjIFB1dCB0aGlzIGJlZm9yZSB0YmxnZW4uIEVsc2Ugd2UgaGF2ZSBhIGNpcmN1 bGFyIGRlcGVuZGVuY2UuCisgYWRkX3N1YmRpcmVjdG9yeShsaWIvRGVtYW5nbGUpCisgYWRkX3N1 YmRpcmVjdG9yeShsaWIvU3VwcG9ydCkKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEzL3BhdGNo ZXMvbGx2bS0wMDUtcHBjLWJpZ3BpYy5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGx2 bS0wMDUtcHBjLWJpZ3BpYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLmQzMzI2ODdiOWQ5MgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2bTEzL3Bh dGNoZXMvbGx2bS0wMDUtcHBjLWJpZ3BpYy5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIGYz ZGJkZDQ5YzA2YmZhZmMxZDYxMzgwOTRjZjQyODg5YzE0ZDM4YjYgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCitGcm9tOiBTYW11ZWwgSG9sbGFuZCA8c2FtdWVsQHNob2xsYW5kLm9yZz4KK0RhdGU6 IFN1biwgMyBOb3YgMjAxOSAxMDo1NzoyNyAtMDYwMAorU3ViamVjdDogW1BBVENIXSBbTExWTV1b UG93ZXJQQ10gQXNzdW1lIEJpZ1BJQyBpZiBubyBQSUMgbGV2ZWwgaXMgc3BlY2lmaWVkCisKKy0t LQorIGxsdm0vbGliL1RhcmdldC9Qb3dlclBDL1BQQ0FzbVByaW50ZXIuY3BwICB8IDIgKy0KKyBs bHZtL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENNQ0luc3RMb3dlci5jcHAgfCAyICstCisgMiBmaWxl cyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQg YS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDQXNtUHJpbnRlci5jcHAgYi9saWIvVGFyZ2V0L1Bvd2Vy UEMvUFBDQXNtUHJpbnRlci5jcHAKK2luZGV4IGNjZTIxZjMyLi44N2NhNWY5YiAxMDA2NDQKKy0t LSBhL2xsdm0vbGliL1RhcmdldC9Qb3dlclBDL1BQQ0FzbVByaW50ZXIuY3BwCisrKysgYi9sbHZt L2xpYi9UYXJnZXQvUG93ZXJQQy9QUENBc21QcmludGVyLmNwcAorQEAgLTUyMCw3ICs1MjAsNyBA QCB2b2lkIFBQQ0FzbVByaW50ZXI6OkVtaXRUbHNDYWxsKGNvbnN0IE1hY2hpbmVJbnN0ciAqTUks CisgCisgICAvLyBBZGQgMzI3Njggb2Zmc2V0IHRvIHRoZSBzeW1ib2wgc28gd2UgZm9sbG93IHVw IHRoZSBsYXRlc3QgR09UL1BMVCBBQkkuCisgICBpZiAoS2luZCA9PSBNQ1N5bWJvbFJlZkV4cHI6 OlZLX1BMVCAmJiBTdWJ0YXJnZXQtPmlzU2VjdXJlUGx0KCkgJiYKKy0gICAgICBNLT5nZXRQSUNM ZXZlbCgpID09IFBJQ0xldmVsOjpCaWdQSUMpCisrICAgICAgTS0+Z2V0UElDTGV2ZWwoKSAhPSBQ SUNMZXZlbDo6U21hbGxQSUMpCisgICAgIFRsc1JlZiA9IE1DQmluYXJ5RXhwcjo6Y3JlYXRlQWRk KAorICAgICAgICAgVGxzUmVmLCBNQ0NvbnN0YW50RXhwcjo6Y3JlYXRlKDMyNzY4LCBPdXRDb250 ZXh0KSwgT3V0Q29udGV4dCk7CisgICBjb25zdCBNYWNoaW5lT3BlcmFuZCAmTU8gPSBNSS0+Z2V0 T3BlcmFuZCgyKTsKK2RpZmYgLS1naXQgYS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDTUNJbnN0TG93 ZXIuY3BwIGIvbGliL1RhcmdldC9Qb3dlclBDL1BQQ01DSW5zdExvd2VyLmNwcAoraW5kZXggNWNj MTgwZDcuLmE1YjAyNTY1IDEwMDY0NAorLS0tIGEvbGx2bS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBD TUNJbnN0TG93ZXIuY3BwCisrKysgYi9sbHZtL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENNQ0luc3RM b3dlci5jcHAKK0BAIC0xMTcsNyArMTE3LDcgQEAgc3RhdGljIE1DT3BlcmFuZCBHZXRTeW1ib2xS ZWYoY29uc3QgTWFjaGluZU9wZXJhbmQgJk1PLCBjb25zdCBNQ1N5bWJvbCAqU3ltYm9sLAorICAg Y29uc3QgTUNFeHByICpFeHByID0gTUNTeW1ib2xSZWZFeHByOjpjcmVhdGUoU3ltYm9sLCBSZWZL aW5kLCBDdHgpOworICAgLy8gSWYgLW1zZWN1cmUtcGx0IC1mUElDLCBhZGQgMzI3NjggdG8gc3lt Ym9sLgorICAgaWYgKFN1YnRhcmdldC0+aXNTZWN1cmVQbHQoKSAmJiBUTS5pc1Bvc2l0aW9uSW5k ZXBlbmRlbnQoKSAmJgorLSAgICAgIE0tPmdldFBJQ0xldmVsKCkgPT0gUElDTGV2ZWw6OkJpZ1BJ QyAmJgorKyAgICAgIE0tPmdldFBJQ0xldmVsKCkgIT0gUElDTGV2ZWw6OlNtYWxsUElDICYmCisg ICAgICAgTU8uZ2V0VGFyZ2V0RmxhZ3MoKSA9PSBQUENJSTo6TU9fUExUKQorICAgICBFeHByID0K KyAgICAgICAgIE1DQmluYXJ5RXhwcjo6Y3JlYXRlQWRkKEV4cHIsIE1DQ29uc3RhbnRFeHByOjpj cmVhdGUoMzI3NjgsIEN0eCksIEN0eCk7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMy9wYXRj aGVzL2xsdm0tMDA2LWFhcmNoNjQtbWZfZXhlYy5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNo ZXMvbGx2bS0wMDYtYWFyY2g2NC1tZl9leGVjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMC4uYTAwYWJkMjE2NjY1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtn cy9sbHZtMTMvcGF0Y2hlcy9sbHZtLTAwNi1hYXJjaDY0LW1mX2V4ZWMucGF0Y2gKQEAgLTAsMCAr MSwyNSBAQAorRml4IGZhaWx1cmVzIGluIEFsbG9jYXRpb25UZXN0cy9NYXBwZWRNZW1vcnlUZXN0 Liogb24gYWFyY2g2NDoKKworICAgIEZhaWxpbmcgVGVzdHMgKDgpOgorICAgICAgICBMTFZNLVVu aXQgOjogU3VwcG9ydC8uL1N1cHBvcnRUZXN0cy9BbGxvY2F0aW9uVGVzdHMvTWFwcGVkTWVtb3J5 VGVzdC5BbGxvY0FuZFJlbGVhc2UvMworICAgICAgICBMTFZNLVVuaXQgOjogU3VwcG9ydC8uL1N1 cHBvcnRUZXN0cy9BbGxvY2F0aW9uVGVzdHMvTWFwcGVkTWVtb3J5VGVzdC5EdXBsaWNhdGVOZWFy LzMKKyAgICAgICAgTExWTS1Vbml0IDo6IFN1cHBvcnQvLi9TdXBwb3J0VGVzdHMvQWxsb2NhdGlv blRlc3RzL01hcHBlZE1lbW9yeVRlc3QuRW5hYmxlZFdyaXRlLzMKKyAgICAgICAgTExWTS1Vbml0 IDo6IFN1cHBvcnQvLi9TdXBwb3J0VGVzdHMvQWxsb2NhdGlvblRlc3RzL01hcHBlZE1lbW9yeVRl c3QuTXVsdGlwbGVBbGxvY0FuZFJlbGVhc2UvMworICAgICAgICBMTFZNLVVuaXQgOjogU3VwcG9y dC8uL1N1cHBvcnRUZXN0cy9BbGxvY2F0aW9uVGVzdHMvTWFwcGVkTWVtb3J5VGVzdC5TdWNjZXNz aXZlTmVhci8zCisgICAgICAgIExMVk0tVW5pdCA6OiBTdXBwb3J0Ly4vU3VwcG9ydFRlc3RzL0Fs bG9jYXRpb25UZXN0cy9NYXBwZWRNZW1vcnlUZXN0LlVuYWxpZ25lZE5lYXIvMworICAgICAgICBM TFZNLVVuaXQgOjogU3VwcG9ydC8uL1N1cHBvcnRUZXN0cy9BbGxvY2F0aW9uVGVzdHMvTWFwcGVk TWVtb3J5VGVzdC5aZXJvTmVhci8zCisgICAgICAgIExMVk0tVW5pdCA6OiBTdXBwb3J0Ly4vU3Vw cG9ydFRlc3RzL0FsbG9jYXRpb25UZXN0cy9NYXBwZWRNZW1vcnlUZXN0Llplcm9TaXplTmVhci8z CisKK1Vwc3RyZWFtLUlzc3VlOiBodHRwczovL2J1Z3MubGx2bS5vcmcvc2hvd19idWcuY2dpP2lk PTE0Mjc4I2MxMAorCistLS0gYS9sbHZtL2xpYi9TdXBwb3J0L1VuaXgvTWVtb3J5LmluYworKysr IGIvbGx2bS9saWIvU3VwcG9ydC9Vbml4L01lbW9yeS5pbmMKK0BAIC01OCw3ICs1OCw3IEBAIHN0 YXRpYyBpbnQgZ2V0UG9zaXhQcm90ZWN0aW9uRmxhZ3ModW5zaWduZWQgRmxhZ3MpIHsKKyAgICAg cmV0dXJuIFBST1RfUkVBRCB8IFBST1RfV1JJVEUgfCBQUk9UX0VYRUM7CisgICBjYXNlIGxsdm06 OnN5czo6TWVtb3J5OjpNRl9FWEVDOgorICNpZiAoZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVm aW5lZChfX1BPV0VSUENfXykgfHwgZGVmaW5lZCAoX19wcGNfXykgfHwgXAorLSAgICAgZGVmaW5l ZChfUE9XRVIpIHx8IGRlZmluZWQoX0FSQ0hfUFBDKSkKKysgICAgIGRlZmluZWQoX1BPV0VSKSB8 fCBkZWZpbmVkKF9BUkNIX1BQQykgfHwgKGRlZmluZWQoX19saW51eF9fKSAmJiBkZWZpbmVkKF9f YWFyY2g2NF9fKSkpCisgICAgIC8vIE9uIFBvd2VyUEMsIGhhdmluZyBhbiBleGVjdXRhYmxlIHBh Z2UgdGhhdCBoYXMgbm8gcmVhZCBwZXJtaXNzaW9uCisgICAgIC8vIGNhbiBoYXZlIHVuaW50ZW5k ZWQgY29uc2VxdWVuY2VzLiAgVGhlIGZ1bmN0aW9uIEludmFsaWRhdGVJbnN0cnVjdGlvbi0KKyAg ICAgLy8gQ2FjaGUgdXNlcyBpbnN0cnVjdGlvbnMgZGNiZiBhbmQgaWNiaSwgYm90aCBvZiB3aGlj aCBhcmUgdHJlYXRlZCBieQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9wcGMz Mi1jb21waWxlci1ydC5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvcHBjMzItY29tcGls ZXItcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44ZTBh OWE3NzlkMWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL3BwYzMy LWNvbXBpbGVyLXJ0LnBhdGNoCkBAIC0wLDAgKzEsMjEgQEAKK2NvbW1pdCBiYTRlZGU1OTVmZjk1 OTkyMzJmNWRkMmI0Mzg0YzI0MzEzN2I1M2ZjCitBdXRob3I6IERhbmllbCBLb2xlc2EgPGRhbmll bEBvY3RhZm9yZ2Uub3JnPgorRGF0ZTogICBUdWUgSnVuIDIyIDIzOjQwOjU0IDIwMjEgKzAyMDAK KworICAgIGVuYWJsZSBjb21waWxlci1ydCBzdXBwb3J0IGZvciBwcGMzMgorCitkaWZmIC0tZ2l0 IGEvY29tcGlsZXItcnQvY21ha2UvYmFzZS1jb25maWctaXguY21ha2UgYi9jb21waWxlci1ydC9j bWFrZS9iYXNlLWNvbmZpZy1peC5jbWFrZQoraW5kZXggMWVkYWI0My4uNWMwYzhhMiAxMDA2NDQK Ky0tLSBhL2NvbXBpbGVyLXJ0L2NtYWtlL2Jhc2UtY29uZmlnLWl4LmNtYWtlCisrKysgYi9jb21w aWxlci1ydC9jbWFrZS9iYXNlLWNvbmZpZy1peC5jbWFrZQorQEAgLTE4Miw5ICsxODIsNyBAQCBt YWNybyh0ZXN0X3RhcmdldHMpCisgICAgIGVsc2VpZigiJHtDT01QSUxFUl9SVF9ERUZBVUxUX1RB UkdFVF9BUkNIfSIgTUFUQ0hFUyAicG93ZXJwYzY0bGUiKQorICAgICAgIHRlc3RfdGFyZ2V0X2Fy Y2gocG93ZXJwYzY0bGUgIiIgIi1tNjQiKQorICAgICBlbHNlaWYoIiR7Q09NUElMRVJfUlRfREVG QVVMVF9UQVJHRVRfQVJDSH0iIE1BVENIRVMgInBvd2VycGMiKQorLSAgICAgIGlmKENNQUtFX1NZ U1RFTV9OQU1FIE1BVENIRVMgIkFJWCIpCistICAgICAgICB0ZXN0X3RhcmdldF9hcmNoKHBvd2Vy cGMgIiIgIi1tMzIiKQorLSAgICAgIGVuZGlmKCkKKysgICAgICB0ZXN0X3RhcmdldF9hcmNoKHBv d2VycGMgIiIgIi1tMzIiKQorICAgICAgIHRlc3RfdGFyZ2V0X2FyY2gocG93ZXJwYzY0ICIiICIt bTY0IikKKyAgICAgZWxzZWlmKCIke0NPTVBJTEVSX1JUX0RFRkFVTFRfVEFSR0VUX0FSQ0h9IiBN QVRDSEVTICJzMzkweCIpCisgICAgICAgdGVzdF90YXJnZXRfYXJjaChzMzkweCAiIiAiIikKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEzL3RlbXBsYXRlIGIvc3JjcGtncy9sbHZtMTMvdGVtcGxh dGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wOGQ4NDc0NzI1MjUK LS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xsdm0xMy90ZW1wbGF0ZQpAQCAtMCwwICsxLDQy MyBAQAorIyBUZW1wbGF0ZSBmaWxlIGZvciAnbGx2bTEzJworcGtnbmFtZT1sbHZtMTMKK3ZlcnNp b249MTMuMC4wCityZXZpc2lvbj0xCit3cmtzcmM9Imxsdm0tcHJvamVjdC0ke3ZlcnNpb259LnNy YyIKK2J1aWxkX3dya3NyYz1sbHZtCitidWlsZF9zdHlsZT1jbWFrZQorY29uZmlndXJlX2FyZ3M9 IgorIC1EQ01BS0VfQlVJTERfVFlQRT1SZWxlYXNlIC1Xbm8tZGV2CisgLURFTkFCTEVfTElOS0VS X0JVSUxEX0lEPVlFUworIC1ETExEQl9VU0VfU1lTVEVNX1NJWD1ZRVMKKyAtRExJQkNYWF9DWFhf QUJJPWxpYmN4eGFiaQorIC1ETElCQ1hYX0VOQUJMRV9TVEFUSUNfQUJJX0xJQlJBUlk9WUVTCisg LURMSUJDWFhBQklfVVNFX0xMVk1fVU5XSU5ERVI9WUVTCisgLURMSUJDWFhBQklfRU5BQkxFX1NU QVRJQ19VTldJTkRFUj1ZRVMKKyAtRExJQk9NUF9FTkFCTEVfU0hBUkVEPVlFUworIC1ETElCT01Q X0lOU1RBTExfQUxJQVNFUz1OTworIC1ETExWTV9JTkNMVURFX0RPQ1M9WUVTCisgLURMTFZNX0JV SUxEX0RPQ1M9WUVTCisgLURMTFZNX0VOQUJMRV9TUEhJTlg9WUVTCisgLURTUEhJTlhfV0FSTklO R1NfQVNfRVJST1JTPU5PCisgLURMTFZNX0lOU1RBTExfVVRJTFM9WUVTCisgLURMTFZNX0JVSUxE X0xMVk1fRFlMSUI9WUVTCisgLURMTFZNX0xJTktfTExWTV9EWUxJQj1ZRVMKKyAtRExMVk1fRU5B QkxFX1JUVEk9WUVTCisgLURMTFZNX0VOQUJMRV9GRkk9WUVTCisgLURMTFZNX0JJTlVUSUxTX0lO Q0RJUj0vdXNyL2luY2x1ZGUiCitob3N0bWFrZWRlcGVuZHM9InBlcmwgcHl0aG9uMyB6bGliLWRl dmVsIGxpYmZmaS1kZXZlbCBzd2lnIHB5dGhvbjMtU3BoaW54CisgcHl0aG9uMy1yZWNvbW1vbm1h cmsgcHl0aG9uMy1zcGhpbngtYXV0b21vZGFwaSIKK21ha2VkZXBlbmRzPSJweXRob24zLWRldmVs IHpsaWItZGV2ZWwgZWxmdXRpbHMtZGV2ZWwgbGliZmZpLWRldmVsIGxpYmVkaXQtZGV2ZWwKKyBs aWJ4bWwyLWRldmVsIGJpbnV0aWxzLWRldmVsIGxpYmF0b21pYy1kZXZlbCIKK2RlcGVuZHM9Imxp Ymxsdm0xMz49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKK3Nob3J0X2Rlc2M9IkxvdyBMZXZlbCBW aXJ0dWFsIE1hY2hpbmUiCittYWludGFpbmVyPSJxNjYgPGRhbmllbEBvY3RhZm9yZ2Uub3JnPiIK K2xpY2Vuc2U9IkFwYWNoZS0yLjAiCitob21lcGFnZT0iaHR0cHM6Ly93d3cubGx2bS5vcmciCitk aXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9sbHZtL2xsdm0tcHJvamVjdC9yZWxlYXNlcy9k b3dubG9hZC9sbHZtb3JnLSR7dmVyc2lvbn0vbGx2bS1wcm9qZWN0LSR7dmVyc2lvbn0uc3JjLnRh ci54eiIKK2NoZWNrc3VtPTYwNzVhZDMwZjFhYzBlMTVmMDdjMWJmMDYyYzFlMTI2OGMyNDFkNjc0 ZjExYmQzMmNkZjBlMDQwYzcxZjJiZjMKK2xpYjMyZGlzYWJsZWQ9eWVzCitweXRob25fdmVyc2lv bj0zCisKK2lmIFsgIiRYQlBTX1RBUkdFVF9MSUJDIiA9ICJtdXNsIiBdOyB0aGVuCisJY29uZmln dXJlX2FyZ3MrPSIgLURMSUJDWFhfSEFTX01VU0xfTElCQz1ZRVMiCisJbWFrZWRlcGVuZHMrPSIg bGliZXhlY2luZm8tZGV2ZWwiCisJZGVwZW5kcys9IiBsaWJleGVjaW5mby1kZXZlbCIKK2ZpCisK KyMgIm9wZXJhbmQgb3V0IG9mIHJhbmdlIiBhc3NlbWJsZXIgZmFpbHVyZXMKK2Nhc2UgIiRYQlBT X1RBUkdFVF9NQUNISU5FIiBpbgorCXBwYzY0KikgOzsKKwlwcGMqKSBjb25maWd1cmVfYXJncys9 IiAtRENMQU5HX0VOQUJMRV9DTEFOR0Q9T0ZGIiA7OworZXNhYworCitfZW5hYmxlZF9wcm9qZWN0 cz0iY2xhbmc7Y2xhbmctdG9vbHMtZXh0cmE7Y29tcGlsZXItcnQ7bGliY3h4O2xpYmN4eGFiaTts aWJ1bndpbmQ7bGxkIgorCitfbGxkYl9lbmFibGU9eWVzCitfbGlib21wX2VuYWJsZT1ubworCitj YXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KKwlwcGM2NGxlKikgOzsKKwlwcGMqfGk2ODYq KSBfbGxkYl9lbmFibGU9bm8gOzsKK2VzYWMKKworY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUi IGluCisJeDg2XzY0KnxhYXJjaDY0KnxwcGM2NCopIF9saWJvbXBfZW5hYmxlPXllczs7Citlc2Fj CisKK3N1YnBhY2thZ2VzPSJjbGFuZy10b29scy1leHRyYSIKKworIyBtdXN0IGdvIGJlZm9yZSBj bGFuZworaWYgWyAiJF9saWJvbXBfZW5hYmxlIiA9ICJ5ZXMiIF07IHRoZW4KKwlfZW5hYmxlZF9w cm9qZWN0cys9IjtvcGVubXAiCisJc3VicGFja2FnZXMrPSIgbGlib21wIGxpYm9tcC1kZXZlbCIK KwkjIGJlY2F1c2Ugb2YgY21ha2Ugbm9uc2Vuc2UgcmVmZXJlbmNpbmcgbGlib21wdGFyZ2V0LnNv LioKKwlkZXBlbmRzKz0iIGxpYm9tcD49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKK2ZpCisKK3N1 YnBhY2thZ2VzKz0iIGNsYW5nIGNsYW5nLWFuYWx5emVyIGxpYmNsYW5nIGxpYmNsYW5nLWNwcAor IGxsdm0tbGlidW53aW5kIGxsdm0tbGlidW53aW5kLWRldmVsIGxpYmN4eCBsaWJjeHgtZGV2ZWwK KyBsaWJjeHhhYmkgbGliY3h4YWJpLWRldmVsIGxpYmxsdm0xMyIKKworaWYgWyAiJF9sbGRiX2Vu YWJsZSIgPSAieWVzIiBdOyB0aGVuCisJIyBYWFggZmFpbHMgdG8gY3Jvc3MgY29tcGlsZSBkdWUg dG8gcHl0aG9uCisJX2VuYWJsZWRfcHJvamVjdHMrPSI7bGxkYiIKKwlzdWJwYWNrYWdlcys9IiBs bGRiIGxsZGItZGV2ZWwiCitmaQorCitzdWJwYWNrYWdlcys9IiBsbGQgbGxkLWRldmVsIgorCitj b25maWd1cmVfYXJncys9IiAtRExMVk1fRU5BQkxFX1BST0pFQ1RTPSR7X2VuYWJsZWRfcHJvamVj dHN9IgorCitwb3N0X3BhdGNoKCkgeworCWlmIFsgIiRfbGxkYl9lbmFibGUiID0gInllcyIgXTsg dGhlbgorCQlpZiBbICIkWEJQU19UQVJHRVRfTElCQyIgPSAibXVzbCIgXTsgdGhlbgorCQkJdnNl ZCAtaSAnc3xfX3B0cmFjZV9yZXF1ZXN0fGludHxnJyBcCisJCQkJJHt3cmtzcmN9L2xsZGIvc291 cmNlL1BsdWdpbnMvUHJvY2Vzcy9MaW51eC9OYXRpdmVQcm9jZXNzTGludXguY3BwCisJCWZpCisJ CSMgZGlzYWJsZSBkb2NzIGZvciBsbGRiIGFzIHRoZXkgZmFpbCB0byBnZW5lcmF0ZQorCQl2c2Vk IC1pICcvYWRkX3N1YmRpcmVjdG9yeShkb2NzKS9kJyBcCisJCQkke3dya3NyY30vbGxkYi9DTWFr ZUxpc3RzLnR4dAorCWZpCisKKwkjIHVwZGF0ZSBjb25maWcuZ3Vlc3MgZm9yIGJldHRlciBwbGF0 Zm9ybSBkZXRlY3Rpb24KKwljcCAkWEJQU19DT01NT05ESVIvZW52aXJvbm1lbnQvY29uZmlndXJl L2F1dG9tYWtlL2NvbmZpZy5ndWVzcyBcCisJCSR7d3Jrc3JjfS9sbHZtL2NtYWtlCisKKwkjIGZp eCBsaW5rZXIgZmFpbHVyZXMgb24gc29tZSBhcmNocworCXZzZWQgLWkgJ3MsY2hlY2tfbGlicmFy eV9leGlzdHMoZ2NjX3MgLiosc2V0KExJQkNYWEFCSV9IQVNfR0NDX1NfTElCIE9OKSwnIFwKKwkJ JHt3cmtzcmN9L2xpYmN4eGFiaS9jbWFrZS9jb25maWctaXguY21ha2UKKwl2c2VkIC1pICdzLGNo ZWNrX2xpYnJhcnlfZXhpc3RzKGdjYyAuKixzZXQoTElCQ1hYQUJJX0hBU19HQ0NfTElCIE9OKSwn IFwKKwkJJHt3cmtzcmN9L2xpYmN4eGFiaS9jbWFrZS9jb25maWctaXguY21ha2UKKworCSMgbmVl ZCBsaWJzc3Bfbm9uc2hhcmVkIG9uIHNvbWUgbXVzbCBwbGF0Zm9ybXMgKGJlY2F1c2Ugb2Ygbm9k ZWZhdWx0bGlicykKKwljYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KKwkJcHBjNjQqKSA7 OworCQlwcGMqLW11c2x8aTY4Ni1tdXNsfG1pcHMqLW11c2wpCisJCQl2c2VkIC1pICdzLF4jIFNl dHVwIGZsYWdzLiQsYWRkX2xpYnJhcnlfZmxhZ3Moc3NwX25vbnNoYXJlZCksJyBcCisJCQkJJHt3 cmtzcmN9L2xpYnVud2luZC9zcmMvQ01ha2VMaXN0cy50eHQKKwkJCXZzZWQgLWkgJ3MsXiMgU2V0 dXAgZmxhZ3MuJCxhZGRfbGlicmFyeV9mbGFncyhzc3Bfbm9uc2hhcmVkKSwnIFwKKwkJCQkke3dy a3NyY30vbGliY3h4YWJpL3NyYy9DTWFrZUxpc3RzLnR4dAorCQkJdnNlZCAtaSAncywjc3NwLCwn ICR7d3Jrc3JjfS9saWJjeHgvQ01ha2VMaXN0cy50eHQKKwkJCTs7CisJZXNhYworCisJY2FzZSAi JFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCisJCXg4Nl82NC1tdXNsKSAjIHNvbWUgc2FuaXRpemVy IGN1cnJlbnRseSBvbmx5IG9uIHg4Nl82NCBzdHVmZiBuZWVkcyBiYWNrdHJhY2UKKwkJCXZzZWQg LWkgJ3MsIyBTZXQgY29tbW9uIGxpbmsgZmxhZ3MuLGxpc3QoQVBQRU5EIFNBTklUSVpFUl9DT01N T05fTElOS19MSUJTIGV4ZWNpbmZvKSwnIFwKKwkJCQkke3dya3NyY30vY29tcGlsZXItcnQvQ01h a2VMaXN0cy50eHQKKwkJCTs7CisJCWFybSotbXVzbHxpNjg2LW11c2wpICMgc2FuaXRpemVyIGNv ZGUgaXMgYnJva2VuIHNpbmNlIGl0IGR1cGxpY2F0ZXMgc29tZSBsaWJjIGJpdHMKKwkJCXZzZWQg LWkgJ3Mvc2V0KENPTVBJTEVSX1JUX0hBU19TQU5JVElaRVJfQ09NTU9OIFRSVUUpL3NldChDT01Q SUxFUl9SVF9IQVNfU0FOSVRJWkVSX0NPTU1PTiBGQUxTRSkvJyBcCisJCQkJJHt3cmtzcmN9L2Nv bXBpbGVyLXJ0L2NtYWtlL2NvbmZpZy1peC5jbWFrZQorCQkJOzsKKwllc2FjCit9CisKK3ByZV9j b25maWd1cmUoKSB7CisJbG9jYWwgdHJpcGxldAorCisJIyBWYXN0bHkgcmVkdWNlIHNpemUgb2Yg ZGVidWdnaW5nIHN5bWJvbHM6CisJQ0ZMQUdTPSR7Q0ZMQUdTLyAtZy8gLWcxfQorCUNYWEZMQUdT PSR7Q1hYRkxBR1MvIC1nLyAtZzF9CisKKwkjIHNpbmNlIGdjYzksIHRoZSBidWlsZCBsaWtlcyB0 byBibG93IHVwIGZvciBwcGMzMiBhcHBhcmVudGx5IGJlY2F1c2UKKwkjIG9mIGNsYW5nIGJlaW5n IHRvbyBsYXJnZSBmb3IgYSAyNC1iaXQgcmVsYXRpdmUgY2FsbCB0byB0aGUgUExULCBzbworCSMg b3B0aW1pemUgZm9yIHNpemUgaW5zdGVhZAorCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBp bgorCQlwcGM2NCopIDs7CisJCW1pcHMqLW11c2x8cHBjKikgY29uZmlndXJlX2FyZ3MrPSIgLURW T0lEX0NYWF9PUFRfRkxBR1M9LU9zIiA7OworCWVzYWMKKworCWlmIFsgIiRDUk9TU19CVUlMRCIg XTsgdGhlbgorCQltc2dfbm9ybWFsICJCdWlsZGluZyBob3N0IHRibGdlblxuIgorCQlta2RpciAt cCBidWlsZC9IT1NUCisJCWNkIGJ1aWxkL0hPU1QKKwkJQ0M9IiRCVUlMRF9DQyIgQ1hYPSIkQlVJ TERfQ1hYIiBDRkxBR1M9IiRCVUlMRF9DRkxBR1MiIFwKKwkJCUNYWEZMQUdTPSIkQlVJTERfQ1hY RkxBR1MiIExERkxBR1M9IiRCVUlMRF9MREZMQUdTIiBcCisJCQljbWFrZSAuLi8uLiAtRENNQUtF X0JVSUxEX1RZUEU9UmVsZWFzZSBcCisJCQktRExMVk1fRU5BQkxFX1BST0pFQ1RTPSR7X2VuYWJs ZWRfcHJvamVjdHN9CisJCW1ha2UgJHttYWtlam9ic30gLUMgdXRpbHMvVGFibGVHZW4KKwkJbWFr ZSAke21ha2Vqb2JzfSAtQyB0b29scy9jbGFuZy91dGlscy9UYWJsZUdlbgorCQlbICIkX2xsZGJf ZW5hYmxlIiA9ICJ5ZXMiIF0gJiYgbWFrZSAke21ha2Vqb2JzfSAtQyB0b29scy9sbGRiL3V0aWxz L1RhYmxlR2VuCisJCWNvbmZpZ3VyZV9hcmdzKz0iIC1ETExWTV9UQUJMRUdFTj0ke3dya3NyY30v bGx2bS9idWlsZC9IT1NUL2Jpbi9sbHZtLXRibGdlbiIKKwkJY29uZmlndXJlX2FyZ3MrPSIgLURD TEFOR19UQUJMRUdFTj0ke3dya3NyY30vbGx2bS9idWlsZC9IT1NUL2Jpbi9jbGFuZy10YmxnZW4i CisJCVsgIiRfbGxkYl9lbmFibGUiID0gInllcyIgXSAmJiBjb25maWd1cmVfYXJncys9IiAtRExM REJfVEFCTEVHRU49JHt3cmtzcmN9L2xsdm0vYnVpbGQvSE9TVC9iaW4vbGxkYi10YmxnZW4iCisJ CWNkIC4uLy4uCisJZmkKKworCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgorCQlpNjg2 KikgX2FyY2g9Ilg4NiI7OworCQl4ODZfNjQqKSBfYXJjaD0iWDg2Ijs7CisJCWFybXY1KikgX2Fy Y2g9IkFybXY1dGUiOzsKKwkJYXJtdjYqKSBfYXJjaD0iQXJtdjYiOzsKKwkJYXJtdjcqKSBfYXJj aD0iQXJtdjciOzsKKwkJYWFyY2g2NCopIF9hcmNoPSJBQXJjaDY0Ijs7CisJCW1pcHMqKSBfYXJj aD0iTWlwcyI7OworCQlwcGMqKSBfYXJjaD0iUG93ZXJQQyI7OworCQlyaXNjdjY0KikgX2FyY2g9 IlJJU0NWNjQiOzsKKwllc2FjCisKKwl0cmlwbGV0PSR7WEJQU19DUk9TU19UUklQTEVUOi0kWEJQ U19UUklQTEVUfQorCisJY29uZmlndXJlX2FyZ3MrPSIgLURMTFZNX1RBUkdFVF9BUkNIPSR7X2Fy Y2h9IgorCWNvbmZpZ3VyZV9hcmdzKz0iIC1ETExWTV9IT1NUX1RSSVBMRT0ke3RyaXBsZXR9Igor CWNvbmZpZ3VyZV9hcmdzKz0iIC1ETExWTV9ERUZBVUxUX1RBUkdFVF9UUklQTEU9JHt0cmlwbGV0 fSIKK30KKworZG9faW5zdGFsbCgpIHsKKwljZCBidWlsZAorCWNtYWtlIC1EQ01BS0VfSU5TVEFM TF9QUkVGSVg9JHtERVNURElSfS91c3IgLVAgY21ha2VfaW5zdGFsbC5jbWFrZQorCisJIyBSZXF1 aXJlZCBmb3IgbXVsdGlsaWIuCisJaWYgWyAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiID0gIng4Nl82 NCIgXTsgdGhlbgorCQlmb3IgX2hlYWRlciBpbiBsbHZtLWNvbmZpZzsgZG8KKwkJCW12ICR7REVT VERJUn0vdXNyL2luY2x1ZGUvbGx2bS9Db25maWcvJHtfaGVhZGVyfXssLTY0fS5oCisJCQl2aW5z dGFsbCAke0ZJTEVTRElSfS9sbHZtLUNvbmZpZy0ke19oZWFkZXJ9LmggNjQ0IFwKKwkJCQl1c3Iv aW5jbHVkZS9sbHZtL0NvbmZpZyAke19oZWFkZXJ9LmgKKwkJZG9uZQorCWZpCisKKwkjIFJlbW92 ZSBsbHZtLWNvbmZpZy1ob3N0IGluIGNyb3NzIGJ1aWxkcy4KKwlpZiBbICIkQ1JPU1NfQlVJTEQi IF07IHRoZW4KKwkJcm0gLWYgJHtERVNURElSfS91c3IvYmluL2xsdm0tY29uZmlnLWhvc3QKKwlm aQorCisJIyBJbnN0YWxsIGxpYmN4eGFiaSBoZWFkZXJzCisJdmluc3RhbGwgJHt3cmtzcmN9L2xp YmN4eGFiaS9pbmNsdWRlL19fY3h4YWJpX2NvbmZpZy5oIDY0NCB1c3IvaW5jbHVkZQorCXZpbnN0 YWxsICR7d3Jrc3JjfS9saWJjeHhhYmkvaW5jbHVkZS9jeHhhYmkuaCA2NDQgdXNyL2luY2x1ZGUK KworCSMgSW5zdGFsbCBsaWJ1bndpbmQgaGVhZGVycworCXZpbnN0YWxsICR7d3Jrc3JjfS9saWJ1 bndpbmQvaW5jbHVkZS9fX2xpYnVud2luZF9jb25maWcuaCA2NDQgdXNyL2luY2x1ZGUKKwl2aW5z dGFsbCAke3dya3NyY30vbGlidW53aW5kL2luY2x1ZGUvbGlidW53aW5kLmggNjQ0IHVzci9pbmNs dWRlCisJdmluc3RhbGwgJHt3cmtzcmN9L2xpYnVud2luZC9pbmNsdWRlL3Vud2luZC5oIDY0NCB1 c3IvaW5jbHVkZQorCXZpbnN0YWxsICR7d3Jrc3JjfS9saWJ1bndpbmQvaW5jbHVkZS9tYWNoLW8v Y29tcGFjdF91bndpbmRfZW5jb2RpbmcuaCBcCisJCTY0NCB1c3IvaW5jbHVkZS9tYWNoLW8KK30K KworY2xhbmctYW5hbHl6ZXJfcGFja2FnZSgpIHsKKwlweWNvbXBpbGVfZGlycz0idXNyL3NoYXJl L3NjYW4tdmlldyIKKwlkZXBlbmRzPSJjbGFuZy0ke3ZlcnNpb259XyR7cmV2aXNpb259IHB5dGhv bjMgcGVybCIKKwlzaG9ydF9kZXNjKz0iIC0gQSBzb3VyY2UgY29kZSBhbmFseXNpcyBmcmFtZXdv cmsiCisJaG9tZXBhZ2U9Imh0dHBzOi8vY2xhbmctYW5hbHl6ZXIubGx2bS5vcmcvIgorCXBrZ19p bnN0YWxsKCkgeworCQl2bW92ZSB1c3Ivc2hhcmUvbWFuL21hbjEvc2Nhbi1idWlsZC4xCisJCXZt b3ZlICIvdXNyL2Jpbi9zY2FuLSoiCisJCXZtb3ZlICIvdXNyL3NoYXJlL3NjYW4tKiIKKwkJdm1v dmUgIi91c3IvbGliZXhlYy8qYW5hbHl6ZXIiCisJfQorfQorCitjbGFuZy10b29scy1leHRyYV9w YWNrYWdlKCkgeworCWxpYjMyZGlzYWJsZWQ9eWVzCisJZGVwZW5kcz0iY2xhbmctJHt2ZXJzaW9u fV8ke3JldmlzaW9ufSBweXRob24zIgorCXNob3J0X2Rlc2MrPSIgLSBFeHRyYSBDbGFuZyB0b29s cyIKKwlob21lcGFnZT0iaHR0cHM6Ly9jbGFuZy5sbHZtLm9yZy9leHRyYS8iCisJcGtnX2luc3Rh bGwoKSB7CisJCXZtb3ZlIHVzci9pbmNsdWRlL2NsYW5nLXRpZHkKKwkJdm1vdmUgdXNyL2Jpbi9j bGFuZy1hcHBseS1yZXBsYWNlbWVudHMKKwkJdm1vdmUgdXNyL2Jpbi9jbGFuZy1xdWVyeQorCQl2 bW92ZSB1c3IvYmluL2NsYW5nLXJlbmFtZQorCQl2bW92ZSB1c3IvYmluL2NsYW5nLXRpZHkKKwkJ dm1vdmUgdXNyL2Jpbi9kaWFndG9vbAorCQl2bW92ZSB1c3IvYmluL2ZpbmQtYWxsLXN5bWJvbHMK KwkJdm1vdmUgdXNyL2Jpbi9obWFwdG9vbAorCQl2bW92ZSB1c3IvYmluL21vZHVsYXJpemUKKwkJ dm1vdmUgdXNyL2Jpbi9wcC10cmFjZQorCQl2bW92ZSB1c3IvYmluL3NhbmNvdgorCQl2bW92ZSAi dXNyL2xpYi9saWJjbGFuZ0FwcGx5UmVwbGFjZW1lbnRzKiIKKwkJdm1vdmUgInVzci9saWIvbGli Y2xhbmdRdWVyeSoiCisJCXZtb3ZlICJ1c3IvbGliL2xpYmNsYW5nVGlkeSoiCisJCXZtb3ZlICJ1 c3Ivc2hhcmUvY2xhbmcvKnRpZHkqIgorCQl2bW92ZSB1c3Ivc2hhcmUvZG9jL2NsYW5nLXRvb2xz CisJCXZtb3ZlIHVzci9zaGFyZS9tYW4vbWFuMS9leHRyYWNsYW5ndG9vbHMuMQorCQl2bW92ZSB1 c3Ivc2hhcmUvbWFuL21hbjEvZGlhZ3Rvb2wuMQorCX0KK30KKworY2xhbmdfcGFja2FnZSgpIHsK KwlsaWIzMmRpc2FibGVkPXllcworCWRlcGVuZHM9ImxpYnN0ZGMrKy1kZXZlbCBsaWJnY2MtZGV2 ZWwgIGJpbnV0aWxzICR7WEJQU19UQVJHRVRfTElCQ30tZGV2ZWwKKwkgbGliY2xhbmctJHt2ZXJz aW9ufV8ke3JldmlzaW9ufSIKKwlzaG9ydF9kZXNjKz0iIC0gQyBsYW5ndWFnZSBmYW1pbHkgZnJv bnRlbmQiCisJaG9tZXBhZ2U9Imh0dHBzOi8vY2xhbmcubGx2bS5vcmcvIgorCXBrZ19pbnN0YWxs KCkgeworCQl2bW92ZSB1c3IvaW5jbHVkZS9jbGFuZworCQl2bW92ZSB1c3IvaW5jbHVkZS9jbGFu Zy1jCisJCXZtb3ZlICJ1c3IvYmluLypjbGFuZyoiCisJCXZtb3ZlIHVzci9iaW4vYy1pbmRleC10 ZXN0CisJCXZtb3ZlIHVzci9saWIvY2xhbmcKKwkJdm1vdmUgdXNyL2xpYi9jbWFrZS9jbGFuZwor CQl2bW92ZSAidXNyL2xpYi9saWJjbGFuZyouYSIKKwkJdm1vdmUgInVzci9saWIvbGliY2xhbmcq LnNvIgorCQl2bW92ZSB1c3Ivc2hhcmUvY2xhbmcKKwkJdm1vdmUgdXNyL3NoYXJlL2RvYy9jbGFu ZworCQl2bW92ZSB1c3Ivc2hhcmUvbWFuL21hbjEvY2xhbmcuMQorCX0KK30KKworbGliY2xhbmdf cGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjKz0iIC0gQyBmcm9udGVuZCBydW50aW1lIGxpYnJhcnki CisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYmNsYW5nLnNvLioiCisJfQor fQorCitsaWJjbGFuZy1jcHBfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjKz0iIC0gQyBmcm9udGVu ZCBydW50aW1lIGxpYnJhcnkgKEMrKyBpbnRlcmZhY2UpIgorCXBrZ19pbnN0YWxsKCkgeworCQl2 bW92ZSAidXNyL2xpYi9saWJjbGFuZy1jcHAuc28uKiIKKwl9Cit9CisKK2xsZF9wYWNrYWdlKCkg eworCWxpYjMyZGlzYWJsZWQ9eWVzCisJc2hvcnRfZGVzYys9IiAtIGxpbmtlciIKKwlob21lcGFn ZT0iaHR0cHM6Ly9sbGQubGx2bS5vcmciCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlIHVzci9i aW4vbGxkKgorCQl2bW92ZSB1c3IvYmluL3dhc20tbGQKKwkJdm1vdmUgdXNyL2Jpbi9sZC5sbGQq CisJCXZtb3ZlIHVzci9iaW4vbGQ2NC5sbGQqCisJCXZtb3ZlIHVzci9zaGFyZS9kb2MvbGxkCisJ fQorfQorCitsbGQtZGV2ZWxfcGFja2FnZSgpIHsKKwlsaWIzMmRpc2FibGVkPXllcworCXNob3J0 X2Rlc2MrPSIgLSBsaW5rZXIgLSBkZXZlbG9wbWVudCBmaWxlcyIKKwlob21lcGFnZT0iaHR0cHM6 Ly9sbGQubGx2bS5vcmciCisJZGVwZW5kcz0ibGxkPj0ke3ZlcnNpb259XyR7cmV2aXNpb259Igor CXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSB1c3IvaW5jbHVkZS9sbGQKKwkJdm1vdmUgdXNyL2xp Yi9jbWFrZS9sbGQKKwkJdm1vdmUgInVzci9saWIvbGlibGxkKmEiCisJfQorfQorCitsbGRiX3Bh Y2thZ2UoKSB7CisJbGliMzJkaXNhYmxlZD15ZXMKKwlkZXBlbmRzKz0iIHB5dGhvbjMtc2l4Igor CXNob3J0X2Rlc2MrPSIgLSBMTERCIGRlYnVnZ2VyIgorCWhvbWVwYWdlPSJodHRwczovL2xsZGIu bGx2bS5vcmcvIgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSB1c3IvYmluLypsbGRiKgorCQl2 bW92ZSB1c3IvbGliL2xpYmxsZGIqc28uKgorCQl2bW92ZSAvdXNyL2xpYi9weXRob24qCisJfQor fQorCitsbGRiLWRldmVsX3BhY2thZ2UoKSB7CisJbGliMzJkaXNhYmxlZD15ZXMKKwlkZXBlbmRz PSJsbGRiPj0ke3ZlcnNpb259XyR7cmV2aXNpb259IgorCXNob3J0X2Rlc2MrPSIgLSBMTERCIGRl YnVnZ2VyIC0gZGV2ZWxvcG1lbnQgZmlsZXMiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlIHVz ci9pbmNsdWRlL2xsZGIKKwkJdm1vdmUgInVzci9saWIvbGlibGxkYiouc28iCisJfQorfQorCits bHZtLWxpYnVud2luZF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2MrPSIgLSBsaWJ1bndpbmQiCisJ cGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYnVud2luZC5zby4qIgorCX0KK30K KworbGx2bS1saWJ1bndpbmQtZGV2ZWxfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjKz0iIC0gbGli dW53aW5kIC0gZGV2ZWxvcG1lbnQgZmlsZXMiCisJZGVwZW5kcz0ibGx2bS1saWJ1bndpbmQ+PSR7 dmVyc2lvbn1fJHtyZXZpc2lvbn0iCisJY29uZmxpY3RzPSJsaWJ1bndpbmQtZGV2ZWw+PTAiCisJ cGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlIHVzci9saWIvbGlidW53aW5kLnNvCisJCXZtb3ZlIHVz ci9saWIvbGlidW53aW5kLmEKKwkJdm1vdmUgInVzci9pbmNsdWRlLyp1bndpbmQqIgorCQl2bW92 ZSB1c3IvaW5jbHVkZS9tYWNoLW8KKwkJdm1vdmUgdXNyL3NoYXJlL2RvYy9saWJ1bndpbmQKKwl9 Cit9CisKK2xpYmN4eGFiaV9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2MrPSIgLSBsb3cgbGV2ZWwg c3VwcG9ydCBmb3IgbGliYysrIgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSAidXNyL2xpYi9s aWJjKythYmkuc28uKiIKKwl9Cit9CisKK2xpYmN4eGFiaS1kZXZlbF9wYWNrYWdlKCkgeworCXNo b3J0X2Rlc2MrPSIgLSBsb3cgbGV2ZWwgc3VwcG9ydCBmb3IgbGliYysrIC0gZGV2ZWxvcG1lbnQg ZmlsZXMiCisJZGVwZW5kcz0ibGliY3h4YWJpPj0ke3ZlcnNpb259XyR7cmV2aXNpb259IgorCXBr Z19pbnN0YWxsKCkgeworCQl2bW92ZSB1c3IvbGliL2xpYmMrK2FiaS5zbworCQl2bW92ZSB1c3Iv bGliL2xpYmMrK2FiaS5hCisJCXZtb3ZlICJ1c3IvaW5jbHVkZS8qY3h4YWJpKiIKKwl9Cit9CisK K2xpYmN4eF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2MrPSIgLSBDKysgc3RhbmRhcmQgbGlicmFy eSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGliYysrLnNvLioiCisJfQor fQorCitsaWJjeHgtZGV2ZWxfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjKz0iIC0gQysrIHN0YW5k YXJkIGxpYnJhcnkgLSBkZXZlbG9wbWVudCBmaWxlcyIKKwlkZXBlbmRzPSJsaWJjeHg+PSR7dmVy c2lvbn1fJHtyZXZpc2lvbn0iCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlIHVzci9saWIvbGli YysrLnNvCisJCXZtb3ZlIHVzci9saWIvbGliYysrLmEKKwkJdm1vdmUgdXNyL2xpYi9saWJjKytl eHBlcmltZW50YWwuYQorCQl2bW92ZSB1c3IvaW5jbHVkZS9jKysKKwkJdm1vdmUgdXNyL3NoYXJl L2RvYy9saWJjeHgKKwl9Cit9CisKK2xpYm9tcF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2MrPSIg LSBDbGFuZyBPcGVuTVAgc3VwcG9ydCBsaWJyYXJ5IgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92 ZSB1c3IvbGliL2xpYm9tcC5zbworCQl2bW92ZSAidXNyL2xpYi9saWJvbXB0YXJnZXQucnRsLiou c28iCisJCXZtb3ZlIHVzci9saWIvbGliYXJjaGVyLnNvCisJfQorfQorCitsaWJvbXAtZGV2ZWxf cGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjKz0iIC0gQ2xhbmcgT3Blbk1QIHN1cHBvcnQgbGlicmFy eSAtIGRldmVsb3BtZW50IGZpbGVzIgorCWRlcGVuZHM9ImxpYm9tcD49JHt2ZXJzaW9ufV8ke3Jl dmlzaW9ufSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGlib21wKi5zbyIK KwkJdm1vdmUgInVzci9saWIvbGliYXJjaGVyKiIKKwkJdm1vdmUgInVzci9pbmNsdWRlL29tcCou aCIKKwkJdm1vdmUgInVzci9saWIvY2xhbmcvJHt2ZXJzaW9ufS9pbmNsdWRlL29tcCouaCIKKwkJ dm1vdmUgdXNyL3NoYXJlL21hbi9tYW4xL2xsdm1vcGVubXAuMQorCQl2bW92ZSB1c3Ivc2hhcmUv ZG9jL29wZW5tcAorCX0KK30KKworbGlibGx2bTEzX3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYys9 IiAtIHJ1bnRpbWUgbGlicmFyeSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIv bGliTExWTS0qLnNvKiIKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMy91cGRhdGUg Yi9zcmNwa2dzL2xsdm0xMy91cGRhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi5lOTVjZjI2YjM1ODYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xsdm0xMy91 cGRhdGUKQEAgLTAsMCArMSwzIEBACitzaXRlPSJodHRwczovL2dpdGh1Yi5jb20vbGx2bS9sbHZt LXByb2plY3QvcmVsZWFzZXMiCitwYXR0ZXJuPSJsbHZtb3JnLVxLKFxkKy4pezJ9XGQrKC1yY1xk Kyk/IgoraWdub3JlPSIqLXJjKiIKCkZyb20gZGI4ZmJhOTNlZmFkOGNmMDRlYmI5YTdmZWI2NWRj NmY3OTZjOGQwYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9xP0xvdWlz PTIwRHVwcj1DMz1BOT0yMEJlcnRvbmk/PQogPGxvdWlzZGJAbGVzcGV0aXRzcGVkZXN0cmVzLm9y Zz4KRGF0ZTogRnJpLCAzMSBEZWMgMjAyMSAxNjoyMzoxNyArMDIwMApTdWJqZWN0OiBbUEFUQ0gg MDIvMzBdIGxsdm06IHVwZGF0ZSB0byAxMy4wLjAKCi0tLQogc3JjcGtncy9sbHZtL3RlbXBsYXRl IHwgNiArKystLS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtL3RlbXBsYXRlIGIvc3JjcGtncy9sbHZtL3Rl bXBsYXRlCmluZGV4IGE5MmRiNmY5NGY5Zi4uYmNmZWU4MjA5OGZmIDEwMDY0NAotLS0gYS9zcmNw a2dzL2xsdm0vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9sbHZtL3RlbXBsYXRlCkBAIC0xLDEwICsx LDEwIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdsbHZtJwogcGtnbmFtZT1sbHZtCi12ZXJzaW9u PTEyLjAuMAordmVyc2lvbj0xMy4wLjAKIHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPW1ldGEKLWRl cGVuZHM9Imxsdm0xMiIKLXJlcGxhY2VzPSJsbHZtMTE+PTAgbGx2bTEwPj0wIGxsdm05Pj0wIGxs dm04Pj0wIGxsdm03Pj0wIGxsdm02LjA+PTAgbGx2bTMuOT49MCIKK2RlcGVuZHM9Imxsdm0xMyIK K3JlcGxhY2VzPSJsbHZtMTI+PTAgbGx2bTExPj0wIGxsdm0xMD49MCBsbHZtOT49MCBsbHZtOD49 MCBsbHZtNz49MCBsbHZtNi4wPj0wIGxsdm0zLjk+PTAiCiBzaG9ydF9kZXNjPSJMTFZNIG1ldGEg cGFja2FnZSIKIG1haW50YWluZXI9IkVubm8gQm9sYW5kIDxnb3R0b3hAdm9pZGxpbnV4Lm9yZz4i CiBsaWNlbnNlPSJQdWJsaWMgRG9tYWluIgoKRnJvbSBkMDRlNjg0MzNmZTI1OWUxMWIzNjRiZjEx ZjI0ZGEyNzY1NDMyYWIwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/ TG91aXM9MjBEdXByPUMzPUE5PTIwQmVydG9uaT89CiA8bG91aXNkYkBsZXNwZXRpdHNwZWRlc3Ry ZXMub3JnPgpEYXRlOiBGcmksIDMxIERlYyAyMDIxIDE2OjQzOjU2ICswMjAwClN1YmplY3Q6IFtQ QVRDSCAwMy8zMF0gbGx2bTEyOiByZW1vdmUgY2xhbmcgcGFydHMKCi0tLQogLi4uY2xhbmctMDAx LWZpeC11bndpbmQtY2hhaW4taW5jbHVzaW9uLnBhdGNoIHwgIDQ0IC0tLQogLi4uL3BhdGNoZXMv Y2xhbmctMDAyLWFkZC1tdXNsLXRyaXBsZXMucGF0Y2ggIHwgMTEwIC0tLS0tLS0KIC4uLi9jbGFu Zy0wMDMtcHBjNjQtZHluYW1pYy1saW5rZXItcGF0aC5wYXRjaCB8ICAxMyAtCiAuLi4vcGF0Y2hl cy9jbGFuZy0wMDQtcHBjNjQtbXVzbC1lbGZ2Mi5wYXRjaCAgfCAgNDggLS0tCiAuLi4vY29tcGls ZXItcnQtYWFyY2g2NC11Y29udGV4dC5wYXRjaCAgICAgICAgfCAgMTEgLQogLi4uL2NvbXBpbGVy LXJ0LXNhbml0aXplci1wcGM2NC1tdXNsLnBhdGNoICAgIHwgIDM1IC0tCiAuLi4vbGx2bTEyL3Bh dGNoZXMvY29tcGlsZXItcnQtc2l6ZV90LnBhdGNoICAgfCAgMTAgLQogLi4uL3BhdGNoZXMvY29t cGlsZXItcnQteHJheS1wcGM2NC1tdXNsLnBhdGNoIHwgIDYyIC0tLS0KIHNyY3BrZ3MvbGx2bTEy L3BhdGNoZXMvbGliY3h4LW11c2wucGF0Y2ggICAgICB8ICAyNiAtLQogc3JjcGtncy9sbHZtMTIv cGF0Y2hlcy9saWJjeHgtcHBjLnBhdGNoICAgICAgIHwgIDIyIC0tCiAuLi4vbGx2bTEyL3BhdGNo ZXMvbGliY3h4LXNzcC1ub25zaGFyZWQucGF0Y2ggfCAgMTEgLQogc3JjcGtncy9sbHZtMTIvcGF0 Y2hlcy9saWJjeHhhYmktZGwucGF0Y2ggICAgIHwgIDI1IC0tCiBzcmNwa2dzL2xsdm0xMi9wYXRj aGVzL2xpYnVud2luZC1wcGMzMi5wYXRjaCAgfCAgNjMgLS0tLQogc3JjcGtncy9sbHZtMTIvcGF0 Y2hlcy9sbGRiLW11c2wucGF0Y2ggICAgICAgIHwgIDMxIC0tCiAuLi4vbGx2bTEyL3BhdGNoZXMv cHBjMzItY29tcGlsZXItcnQucGF0Y2ggICAgfCAgMjEgLS0KIHNyY3BrZ3MvbGx2bTEyL3RlbXBs YXRlICAgICAgICAgICAgICAgICAgICAgICB8IDMwMSArLS0tLS0tLS0tLS0tLS0tLS0KIDE2IGZp bGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCA4MzIgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9k ZSAxMDA2NDQgc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jbGFuZy0wMDEtZml4LXVud2luZC1jaGFp bi1pbmNsdXNpb24ucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRj aGVzL2NsYW5nLTAwMi1hZGQtbXVzbC10cmlwbGVzLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQg c3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jbGFuZy0wMDMtcHBjNjQtZHluYW1pYy1saW5rZXItcGF0 aC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY2xhbmct MDA0LXBwYzY0LW11c2wtZWxmdjIucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xs dm0xMi9wYXRjaGVzL2NvbXBpbGVyLXJ0LWFhcmNoNjQtdWNvbnRleHQucGF0Y2gKIGRlbGV0ZSBt b2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2NvbXBpbGVyLXJ0LXNhbml0aXplci1w cGM2NC1tdXNsLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTIvcGF0Y2hl cy9jb21waWxlci1ydC1zaXplX3QucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xs dm0xMi9wYXRjaGVzL2NvbXBpbGVyLXJ0LXhyYXktcHBjNjQtbXVzbC5wYXRjaAogZGVsZXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGliY3h4LW11c2wucGF0Y2gKIGRlbGV0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xpYmN4eC1wcGMucGF0Y2gKIGRl bGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xpYmN4eC1zc3Atbm9uc2hh cmVkLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJj eHhhYmktZGwucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRjaGVz L2xpYnVud2luZC1wcGMzMi5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEy L3BhdGNoZXMvbGxkYi1tdXNsLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZt MTIvcGF0Y2hlcy9wcGMzMi1jb21waWxlci1ydC5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv bGx2bTEyL3BhdGNoZXMvY2xhbmctMDAxLWZpeC11bndpbmQtY2hhaW4taW5jbHVzaW9uLnBhdGNo IGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jbGFuZy0wMDEtZml4LXVud2luZC1jaGFpbi1pbmNs dXNpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0ZWFhNzc4M2U3YS4u MDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY2xhbmctMDAxLWZpeC11 bndpbmQtY2hhaW4taW5jbHVzaW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBA QAotRnJvbSAzNTI5NzQxNjlmMGQyYjVkYTNkNTMyMWY1ODhmNWUzYjU5NDEzMzBlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmVhIEJyYW5jYWxlb25pIDxtaXdheGVAZ21haWwu Y29tPgotRGF0ZTogVHVlLCA4IFNlcCAyMDE1IDIyOjE0OjU3ICswMjAwCi1TdWJqZWN0OiBbUEFU Q0ggMi83XSBmaXggdW53aW5kIGNoYWluIGluY2x1c2lvbgotCi0tLS0KLSBsaWIvSGVhZGVycy91 bndpbmQuaCB8IDkgKysrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwg NCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYi9IZWFkZXJzL3Vud2luZC5oIGIvbGli L0hlYWRlcnMvdW53aW5kLmgKLWluZGV4IDMwM2Q3OTIuLjQ0ZTEwY2MgMTAwNjQ0Ci0tLS0gYS9j bGFuZy9saWIvSGVhZGVycy91bndpbmQuaAotKysrIGIvY2xhbmcvbGliL0hlYWRlcnMvdW53aW5k LmgKLUBAIC05LDkgKzksNiBAQAotIAotIC8qIFNlZSAiRGF0YSBEZWZpbml0aW9ucyBmb3IgbGli Z2NjX3MiIGluIHRoZSBMaW51eCBTdGFuZGFyZCBCYXNlLiovCi0gCi0tI2lmbmRlZiBfX0NMQU5H X1VOV0lORF9ICi0tI2RlZmluZSBfX0NMQU5HX1VOV0lORF9ICi0tCi0gI2lmIGRlZmluZWQoX19B UFBMRV9fKSAmJiBfX2hhc19pbmNsdWRlX25leHQoPHVud2luZC5oPikKLSAvKiBEYXJ3aW4gKGZy b20gMTEueCBvbikgcHJvdmlkZSBhbiB1bndpbmQuaC4gSWYgdGhhdCdzIGF2YWlsYWJsZSwKLSAg KiB1c2UgaXQuIGxpYnVud2luZCB3cmFwcyBzb21lIG9mIGl0cyBkZWZpbml0aW9ucyBpbiAjaWZk ZWYgX0dOVV9TT1VSQ0UsCi1AQCAtMzksNiArMzYsOSBAQAotICMgZW5kaWYKLSAjZWxzZQotIAot KyNpZm5kZWYgX19DTEFOR19VTldJTkRfSAotKyNkZWZpbmUgX19DTEFOR19VTldJTkRfSAotKwot ICNpbmNsdWRlIDxzdGRpbnQuaD4KLSAKLSAjaWZkZWYgX19jcGx1c3BsdXMKLUBAIC0zMjIsNiAr MzIyLDcgQEAgX1Vud2luZF9QdHIgX1Vud2luZF9HZXRUZXh0UmVsQmFzZShzdHJ1Y3QgX1Vud2lu ZF9Db250ZXh0ICopOwotIH0KLSAjZW5kaWYKLSAKLSsjZW5kaWYgLyogX19DTEFOR19VTldJTkRf SCAqLwotKwotICNlbmRpZgotIAotLSNlbmRpZiAvKiBfX0NMQU5HX1VOV0lORF9IICovCi0tLSAK LTIuNS4xCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2NsYW5nLTAwMi1hZGQt bXVzbC10cmlwbGVzLnBhdGNoIGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jbGFuZy0wMDItYWRk LW11c2wtdHJpcGxlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjU2ODhk NDBkYmMyLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jbGFuZy0w MDItYWRkLW11c2wtdHJpcGxlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBA Ci0tLS0gYS9jbGFuZy9saWIvRHJpdmVyL1Rvb2xDaGFpbnMvR251LmNwcAotKysrIGIvY2xhbmcv bGliL0RyaXZlci9Ub29sQ2hhaW5zL0dudS5jcHAKLUBAIC0yMDg2LDcgKzIwODYsOCBAQCB2b2lk IEdlbmVyaWNfR0NDOjpHQ0NJbnN0YWxsYXRpb25EZXRlY3Rvcjo6QWRkRGVmYXVsdEdDQ1ByZWZp eGVzKAotICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IEFSTUhGVHJpcGxlc1tdID0geyJhcm0t bGludXgtZ251ZWFiaWhmIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiYXJtdjdobC1yZWRoYXQtbGludXgtZ251ZWFiaSIsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFybXY2aGwtc3VzZS1saW51eC1nbnVlYWJp IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJtdjdo bC1zdXNlLWxpbnV4LWdudWVhYmkifTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiYXJtdjdobC1zdXNlLWxpbnV4LWdudWVhYmkiLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcm12N2wtbGludXgtZ251ZWFiaWhm In07Ci0gICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgQVJNZWJMaWJEaXJzW10gPSB7Ii9saWIi fTsKLSAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBBUk1lYlRyaXBsZXNbXSA9IHsiYXJtZWIt bGludXgtZ251ZWFiaSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgImFybWViLWxpbnV4LWFuZHJvaWRlYWJpIn07Ci1AQCAtMjE1Myw4ICsyMTU0LDcgQEAg dm9pZCBHZW5lcmljX0dDQzo6R0NDSW5zdGFsbGF0aW9uRGV0ZWN0b3I6OkFkZERlZmF1bHRHQ0NQ cmVmaXhlcygKLSAgICAgICAicG93ZXJwYzY0LXN1c2UtbGludXgiLCAicG93ZXJwYy1tb250YXZp c3RhLWxpbnV4c3BlIn07Ci0gICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgUFBDTEVMaWJEaXJz W10gPSB7Ii9saWIzMiIsICIvbGliIn07Ci0gICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgUFBD TEVUcmlwbGVzW10gPSB7InBvd2VycGNsZS1saW51eC1nbnUiLAotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBjbGUtdW5rbm93bi1saW51eC1nbnUi LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBj bGUtbGludXgtbXVzbCJ9OwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJwb3dlcnBjbGUtdW5rbm93bi1saW51eC1nbnUifTsKLSAKLSAgIHN0YXRpYyBjb25z dCBjaGFyICpjb25zdCBQUEM2NExpYkRpcnNbXSA9IHsiL2xpYjY0IiwgIi9saWIifTsKLSAgIHN0 YXRpYyBjb25zdCBjaGFyICpjb25zdCBQUEM2NFRyaXBsZXNbXSA9IHsKLUBAIC0yMjM1LDYgKzIy MzUsODcgQEAgdm9pZCBHZW5lcmljX0dDQzo6R0NDSW5zdGFsbGF0aW9uRGV0ZWN0b3I6OkFkZERl ZmF1bHRHQ0NQcmVmaXhlcygKLSAgICAgcmV0dXJuOwotICAgfQotIAotKyAgaWYgKFRhcmdldFRy aXBsZS5pc011c2woKSkgewotKyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgQUFyY2g2NE11 c2xUcmlwbGVzW10gPSB7ImFhcmNoNjQtbGludXgtbXVzbCJ9OwotKyAgICBzdGF0aWMgY29uc3Qg Y2hhciAqY29uc3QgQVJNSEZNdXNsVHJpcGxlc1tdID0gewotKyAgICAgICAgImFybS1saW51eC1t dXNsZWFiaWhmIiwgImFybXY3bC1saW51eC1tdXNsZWFiaWhmIgotKyAgICB9OwotKyAgICBzdGF0 aWMgY29uc3QgY2hhciAqY29uc3QgQVJNTXVzbFRyaXBsZXNbXSA9IHsiYXJtLWxpbnV4LW11c2xl YWJpIn07Ci0rICAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBYODZfNjRNdXNsVHJpcGxlc1td ID0geyJ4ODZfNjQtbGludXgtbXVzbCJ9OwotKyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3Qg WDg2TXVzbFRyaXBsZXNbXSA9IHsiaTY4Ni1saW51eC1tdXNsIn07Ci0rICAgIHN0YXRpYyBjb25z dCBjaGFyICpjb25zdCBNSVBTTXVzbFRyaXBsZXNbXSA9IHsKLSsgICAgICAgICJtaXBzLWxpbnV4 LW11c2wiLCAibWlwc2VsLWxpbnV4LW11c2wiLAotKyAgICAgICAgIm1pcHNlbC1saW51eC1tdXNs aGYiLCAibWlwcy1saW51eC1tdXNsaGYiCi0rICAgIH07Ci0rICAgIHN0YXRpYyBjb25zdCBjaGFy ICpjb25zdCBQUENNdXNsVHJpcGxlc1tdID0geyJwb3dlcnBjLWxpbnV4LW11c2wifTsKLSsgICAg c3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IFBQQ0xFTXVzbFRyaXBsZXNbXSA9IHsicG93ZXJwY2xl LWxpbnV4LW11c2wifTsKLSsgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IFBQQzY0TXVzbFRy aXBsZXNbXSA9IHsicG93ZXJwYzY0LWxpbnV4LW11c2wifTsKLSsgICAgc3RhdGljIGNvbnN0IGNo YXIgKmNvbnN0IFBQQzY0TEVNdXNsVHJpcGxlc1tdID0geyJwb3dlcnBjNjRsZS1saW51eC1tdXNs In07Ci0rCi0rICAgIHN3aXRjaCAoVGFyZ2V0VHJpcGxlLmdldEFyY2goKSkgewotKyAgICBjYXNl IGxsdm06OlRyaXBsZTo6YWFyY2g2NDoKLSsgICAgICBMaWJEaXJzLmFwcGVuZChiZWdpbihBQXJj aDY0TGliRGlycyksIGVuZChBQXJjaDY0TGliRGlycykpOwotKyAgICAgIFRyaXBsZUFsaWFzZXMu YXBwZW5kKGJlZ2luKEFBcmNoNjRNdXNsVHJpcGxlcyksIGVuZChBQXJjaDY0TXVzbFRyaXBsZXMp KTsKLSsgICAgICBCaWFyY2hMaWJEaXJzLmFwcGVuZChiZWdpbihBQXJjaDY0TGliRGlycyksIGVu ZChBQXJjaDY0TGliRGlycykpOwotKyAgICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJl Z2luKEFBcmNoNjRNdXNsVHJpcGxlcyksIGVuZChBQXJjaDY0TXVzbFRyaXBsZXMpKTsKLSsgICAg ICBicmVhazsKLSsgICAgY2FzZSBsbHZtOjpUcmlwbGU6OmFybToKLSsgICAgICBMaWJEaXJzLmFw cGVuZChiZWdpbihBUk1MaWJEaXJzKSwgZW5kKEFSTUxpYkRpcnMpKTsKLSsgICAgICBpZiAoVGFy Z2V0VHJpcGxlLmdldEVudmlyb25tZW50KCkgPT0gbGx2bTo6VHJpcGxlOjpNdXNsRUFCSUhGKSB7 Ci0rICAgICAgICBUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihBUk1IRk11c2xUcmlwbGVzKSwg ZW5kKEFSTUhGTXVzbFRyaXBsZXMpKTsKLSsgICAgICB9IGVsc2UgewotKyAgICAgICAgVHJpcGxl QWxpYXNlcy5hcHBlbmQoYmVnaW4oQVJNTXVzbFRyaXBsZXMpLCBlbmQoQVJNTXVzbFRyaXBsZXMp KTsKLSsgICAgICB9Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgbGx2bTo6VHJpcGxlOjp4ODZf NjQ6Ci0rICAgICAgTGliRGlycy5hcHBlbmQoYmVnaW4oWDg2XzY0TGliRGlycyksIGVuZChYODZf NjRMaWJEaXJzKSk7Ci0rICAgICAgVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oWDg2XzY0TXVz bFRyaXBsZXMpLCBlbmQoWDg2XzY0TXVzbFRyaXBsZXMpKTsKLSsgICAgICBCaWFyY2hMaWJEaXJz LmFwcGVuZChiZWdpbihYODZMaWJEaXJzKSwgZW5kKFg4NkxpYkRpcnMpKTsKLSsgICAgICBCaWFy Y2hUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihYODZNdXNsVHJpcGxlcyksIGVuZChYODZNdXNs VHJpcGxlcykpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIGxsdm06OlRyaXBsZTo6eDg2Ogot KyAgICAgIExpYkRpcnMuYXBwZW5kKGJlZ2luKFg4NkxpYkRpcnMpLCBlbmQoWDg2TGliRGlycykp OwotKyAgICAgIFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFg4Nk11c2xUcmlwbGVzKSwgZW5k KFg4Nk11c2xUcmlwbGVzKSk7Ci0rICAgICAgQmlhcmNoTGliRGlycy5hcHBlbmQoYmVnaW4oWDg2 XzY0TGliRGlycyksIGVuZChYODZfNjRMaWJEaXJzKSk7Ci0rICAgICAgQmlhcmNoVHJpcGxlQWxp YXNlcy5hcHBlbmQoYmVnaW4oWDg2XzY0TXVzbFRyaXBsZXMpLCBlbmQoWDg2XzY0TXVzbFRyaXBs ZXMpKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBsbHZtOjpUcmlwbGU6Om1pcHM6Ci0rICAg ICAgTGliRGlycy5hcHBlbmQoYmVnaW4oTUlQU0xpYkRpcnMpLCBlbmQoTUlQU0xpYkRpcnMpKTsK LSsgICAgICBUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihNSVBTTXVzbFRyaXBsZXMpLCBlbmQo TUlQU011c2xUcmlwbGVzKSk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgbGx2bTo6VHJpcGxl OjpwcGM6Ci0rICAgICAgTGliRGlycy5hcHBlbmQoYmVnaW4oUFBDTGliRGlycyksIGVuZChQUENM aWJEaXJzKSk7Ci0rICAgICAgVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oUFBDTXVzbFRyaXBs ZXMpLCBlbmQoUFBDTXVzbFRyaXBsZXMpKTsKLSsgICAgICBCaWFyY2hMaWJEaXJzLmFwcGVuZChi ZWdpbihQUEM2NExpYkRpcnMpLCBlbmQoUFBDNjRMaWJEaXJzKSk7Ci0rICAgICAgQmlhcmNoVHJp cGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oUFBDNjRNdXNsVHJpcGxlcyksIGVuZChQUEM2NE11c2xU cmlwbGVzKSk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgbGx2bTo6VHJpcGxlOjpwcGNsZToK LSsgICAgICBMaWJEaXJzLmFwcGVuZChiZWdpbihQUENMRUxpYkRpcnMpLCBlbmQoUFBDTEVMaWJE aXJzKSk7Ci0rICAgICAgVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oUFBDTEVNdXNsVHJpcGxl cyksIGVuZChQUENMRU11c2xUcmlwbGVzKSk7Ci0rICAgICAgQmlhcmNoTGliRGlycy5hcHBlbmQo YmVnaW4oUFBDNjRMRUxpYkRpcnMpLCBlbmQoUFBDNjRMRUxpYkRpcnMpKTsKLSsgICAgICBCaWFy Y2hUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihQUEM2NExFTXVzbFRyaXBsZXMpLCBlbmQoUFBD NjRMRU11c2xUcmlwbGVzKSk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgbGx2bTo6VHJpcGxl OjpwcGM2NDoKLSsgICAgICBMaWJEaXJzLmFwcGVuZChiZWdpbihQUEM2NExpYkRpcnMpLCBlbmQo UFBDNjRMaWJEaXJzKSk7Ci0rICAgICAgVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oUFBDNjRN dXNsVHJpcGxlcyksIGVuZChQUEM2NE11c2xUcmlwbGVzKSk7Ci0rICAgICAgQmlhcmNoTGliRGly cy5hcHBlbmQoYmVnaW4oUFBDTGliRGlycyksIGVuZChQUENMaWJEaXJzKSk7Ci0rICAgICAgQmlh cmNoVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oUFBDTXVzbFRyaXBsZXMpLCBlbmQoUFBDTXVz bFRyaXBsZXMpKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBsbHZtOjpUcmlwbGU6OnBwYzY0 bGU6Ci0rICAgICAgTGliRGlycy5hcHBlbmQoYmVnaW4oUFBDNjRMRUxpYkRpcnMpLCBlbmQoUFBD NjRMRUxpYkRpcnMpKTsKLSsgICAgICBUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihQUEM2NExF TXVzbFRyaXBsZXMpLCBlbmQoUFBDNjRMRU11c2xUcmlwbGVzKSk7Ci0rICAgICAgQmlhcmNoTGli RGlycy5hcHBlbmQoYmVnaW4oUFBDTEVMaWJEaXJzKSwgZW5kKFBQQ0xFTGliRGlycykpOwotKyAg ICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFBQQ0xFTXVzbFRyaXBsZXMpLCBl bmQoUFBDTEVNdXNsVHJpcGxlcykpOwotKyAgICAgIGJyZWFrOwotKyAgICBkZWZhdWx0OgotKyAg ICAgIGJyZWFrOwotKyAgICB9Ci0rICAgIFRyaXBsZUFsaWFzZXMucHVzaF9iYWNrKFRhcmdldFRy aXBsZS5zdHIoKSk7Ci0rICAgIGlmIChUYXJnZXRUcmlwbGUuc3RyKCkgIT0gQmlhcmNoVHJpcGxl LnN0cigpKQotKyAgICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMucHVzaF9iYWNrKEJpYXJjaFRyaXBs ZS5zdHIoKSk7Ci0rICAgIHJldHVybjsKLSsgIH0KLSsKLSAgIC8vIEFuZHJvaWQgdGFyZ2V0cyBz aG91bGQgbm90IHVzZSBHTlUvTGludXggdG9vbHMgb3IgbGlicmFyaWVzLgotICAgaWYgKFRhcmdl dFRyaXBsZS5pc0FuZHJvaWQoKSkgewotICAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgQUFy Y2g2NEFuZHJvaWRUcmlwbGVzW10gPSB7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMi9wYXRj aGVzL2NsYW5nLTAwMy1wcGM2NC1keW5hbWljLWxpbmtlci1wYXRoLnBhdGNoIGIvc3JjcGtncy9s bHZtMTIvcGF0Y2hlcy9jbGFuZy0wMDMtcHBjNjQtZHluYW1pYy1saW5rZXItcGF0aC5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGFkNjQxMmQxZTZjLi4wMDAwMDAwMDAwMDAK LS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jbGFuZy0wMDMtcHBjNjQtZHluYW1pYy1saW5r ZXItcGF0aC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLS0tLSBhL2NsYW5n L2xpYi9Ecml2ZXIvVG9vbENoYWlucy9MaW51eC5jcHAKLSsrKyBiL2NsYW5nL2xpYi9Ecml2ZXIv VG9vbENoYWlucy9MaW51eC5jcHAKLUBAIC01MDQsMTAgKzUwNCw2IEBAIHN0ZDo6c3RyaW5nIExp bnV4OjpnZXREeW5hbWljTGlua2VyKGNvbnN0IEFyZ0xpc3QgJkFyZ3MpIGNvbnN0IHsKLSAgICAg TG9hZGVyID0gImxkLnNvLjEiOwotICAgICBicmVhazsKLSAgIGNhc2UgbGx2bTo6VHJpcGxlOjpw cGM2NDoKLS0gICAgTGliRGlyID0gImxpYjY0IjsKLS0gICAgTG9hZGVyID0KLS0gICAgICAgICh0 b29sczo6cHBjOjpoYXNQUENBYmlBcmcoQXJncywgImVsZnYyIikpID8gImxkNjQuc28uMiIgOiAi bGQ2NC5zby4xIjsKLS0gICAgYnJlYWs7Ci0gICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjNjRsZToK LSAgICAgTGliRGlyID0gImxpYjY0IjsKLSAgICAgTG9hZGVyID0KZGlmZiAtLWdpdCBhL3NyY3Br Z3MvbGx2bTEyL3BhdGNoZXMvY2xhbmctMDA0LXBwYzY0LW11c2wtZWxmdjIucGF0Y2ggYi9zcmNw a2dzL2xsdm0xMi9wYXRjaGVzL2NsYW5nLTAwNC1wcGM2NC1tdXNsLWVsZnYyLnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMWZjODAwM2M1ZjEuLjAwMDAwMDAwMDAwMAotLS0g YS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2NsYW5nLTAwNC1wcGM2NC1tdXNsLWVsZnYyLnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLS0tIGEvY2xhbmcvbGliL0Jhc2ljL1Rh cmdldHMvUFBDLmgKLSsrKyBiL2NsYW5nL2xpYi9CYXNpYy9UYXJnZXRzL1BQQy5oCi1AQCAtNDE1 LDExICs0MTUsMTAgQEAgcHVibGljOgotICAgICAgIExvbmdEb3VibGVGb3JtYXQgPSAmbGx2bTo6 QVBGbG9hdDo6SUVFRWRvdWJsZSgpOwotICAgICB9IGVsc2UgaWYgKChUcmlwbGUuZ2V0QXJjaCgp ID09IGxsdm06OlRyaXBsZTo6cHBjNjRsZSkpIHsKLSAgICAgICBEYXRhTGF5b3V0ID0gImUtbTpl LWk2NDo2NC1uMzI6NjQiOwotLSAgICAgIEFCSSA9ICJlbGZ2MiI7Ci0gICAgIH0gZWxzZSB7Ci0g ICAgICAgRGF0YUxheW91dCA9ICJFLW06ZS1pNjQ6NjQtbjMyOjY0IjsKLS0gICAgICBBQkkgPSAi ZWxmdjEiOwotICAgICB9Ci0rICAgIEFCSSA9ICJlbGZ2MiI7Ci0gCi0gICAgIGlmIChUcmlwbGUu aXNPU0ZyZWVCU0QoKSB8fCBUcmlwbGUuaXNPU09wZW5CU0QoKSB8fCBUcmlwbGUuaXNNdXNsKCkp IHsKLSAgICAgICBMb25nRG91YmxlV2lkdGggPSBMb25nRG91YmxlQWxpZ24gPSA2NDsKLS0tLSBh L2NsYW5nL2xpYi9Db2RlR2VuL1RhcmdldEluZm8uY3BwCi0rKysgYi9jbGFuZy9saWIvQ29kZUdl bi9UYXJnZXRJbmZvLmNwcAotQEAgLTEwOTI3LDkgKzEwOTI3LDkgQEAgY29uc3QgVGFyZ2V0Q29k ZUdlbkluZm8gJkNvZGVHZW5Nb2R1bGU6OmdldFRhcmdldENvZGVHZW5JbmZvKCkgewotICAgICAg IHJldHVybiBTZXRDR0luZm8obmV3IEFJWFRhcmdldENvZGVHZW5JbmZvKFR5cGVzLCAvKklzNjRC aXQqLyB0cnVlKSk7Ci0gCi0gICAgIGlmIChUcmlwbGUuaXNPU0JpbkZvcm1hdEVMRigpKSB7Ci0t ICAgICAgUFBDNjRfU1ZSNF9BQklJbmZvOjpBQklLaW5kIEtpbmQgPSBQUEM2NF9TVlI0X0FCSUlu Zm86OkVMRnYxOwotLSAgICAgIGlmIChnZXRUYXJnZXQoKS5nZXRBQkkoKSA9PSAiZWxmdjIiKQot LSAgICAgICAgS2luZCA9IFBQQzY0X1NWUjRfQUJJSW5mbzo6RUxGdjI7Ci0rICAgICAgUFBDNjRf U1ZSNF9BQklJbmZvOjpBQklLaW5kIEtpbmQgPSBQUEM2NF9TVlI0X0FCSUluZm86OkVMRnYyOwot KyAgICAgIGlmIChnZXRUYXJnZXQoKS5nZXRBQkkoKSA9PSAiZWxmdjEiKQotKyAgICAgICAgS2lu ZCA9IFBQQzY0X1NWUjRfQUJJSW5mbzo6RUxGdjE7Ci0gICAgICAgYm9vbCBJc1NvZnRGbG9hdCA9 IENvZGVHZW5PcHRzLkZsb2F0QUJJID09ICJzb2Z0IjsKLSAKLSAgICAgICByZXR1cm4gU2V0Q0dJ bmZvKAotLS0tIGEvY2xhbmcvbGliL0RyaXZlci9Ub29sQ2hhaW5zL0NsYW5nLmNwcAotKysrIGIv Y2xhbmcvbGliL0RyaXZlci9Ub29sQ2hhaW5zL0NsYW5nLmNwcAotQEAgLTE5MjAsMTQgKzE5MjAs NyBAQCB2b2lkIENsYW5nOjpBZGRQUENUYXJnZXRBcmdzKGNvbnN0IEFyZ0xpc3QgJkFyZ3MsCi0g ICBjb25zdCBsbHZtOjpUcmlwbGUgJlQgPSBnZXRUb29sQ2hhaW4oKS5nZXRUcmlwbGUoKTsKLSAg IGlmIChULmlzT1NCaW5Gb3JtYXRFTEYoKSkgewotICAgICBzd2l0Y2ggKGdldFRvb2xDaGFpbigp LmdldEFyY2goKSkgewotLSAgICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjNjQ6IHsKLS0gICAgICBp ZiAoKFQuaXNPU0ZyZWVCU0QoKSAmJiBULmdldE9TTWFqb3JWZXJzaW9uKCkgPj0gMTMpIHx8Ci0t ICAgICAgICAgIFQuaXNPU09wZW5CU0QoKSB8fCBULmlzTXVzbCgpKQotLSAgICAgICAgQUJJTmFt ZSA9ICJlbGZ2MiI7Ci0tICAgICAgZWxzZQotLSAgICAgICAgQUJJTmFtZSA9ICJlbGZ2MSI7Ci0t ICAgICAgYnJlYWs7Ci0tICAgIH0KLSsgICAgY2FzZSBsbHZtOjpUcmlwbGU6OnBwYzY0OgotICAg ICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjNjRsZToKLSAgICAgICBBQklOYW1lID0gImVsZnYyIjsK LSAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY29tcGls ZXItcnQtYWFyY2g2NC11Y29udGV4dC5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY29t cGlsZXItcnQtYWFyY2g2NC11Y29udGV4dC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggODkzYzA1OWQ3YjhkLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0 Y2hlcy9jb21waWxlci1ydC1hYXJjaDY0LXVjb250ZXh0LnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsMTEgKzAsMCBAQAotLS0tIGEvY29tcGlsZXItcnQvbGliL3Nhbml0aXplcl9jb21tb24vc2Fu aXRpemVyX2xpbnV4LmNwcC5vcmlnCi0rKysgYi9jb21waWxlci1ydC9saWIvc2FuaXRpemVyX2Nv bW1vbi9zYW5pdGl6ZXJfbGludXguY3BwCi1AQCAtMTc5OSw3ICsxNzk5LDcgQEAKLSAKLSBzdGF0 aWMgYm9vbCBBYXJjaDY0R2V0RVNSKHVjb250ZXh0X3QgKnVjb250ZXh0LCB1NjQgKmVzcikgewot ICAgc3RhdGljIGNvbnN0IHUzMiBrRXNyTWFnaWMgPSAweDQ1NTM1MjAxOwotLSAgdTggKmF1eCA9 IHVjb250ZXh0LT51Y19tY29udGV4dC5fX3Jlc2VydmVkOwotKyAgdTggKmF1eCA9IHJlaW50ZXJw cmV0X2Nhc3Q8dTggKj4odWNvbnRleHQtPnVjX21jb250ZXh0Ll9fcmVzZXJ2ZWQpOwotICAgd2hp bGUgKHRydWUpIHsKLSAgICAgX2FhcmNoNjRfY3R4ICpjdHggPSAoX2FhcmNoNjRfY3R4ICopYXV4 OwotICAgICBpZiAoY3R4LT5zaXplID09IDApIGJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9s bHZtMTIvcGF0Y2hlcy9jb21waWxlci1ydC1zYW5pdGl6ZXItcHBjNjQtbXVzbC5wYXRjaCBiL3Ny Y3BrZ3MvbGx2bTEyL3BhdGNoZXMvY29tcGlsZXItcnQtc2FuaXRpemVyLXBwYzY0LW11c2wucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1ZjE2ZDI0ZjM0MC4uMDAwMDAwMDAw MDAwCi0tLSBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY29tcGlsZXItcnQtc2FuaXRpemVyLXBw YzY0LW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0tLS0gYS9jb21w aWxlci1ydC9saWIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfbGludXguY3BwCi0rKysgYi9j b21waWxlci1ydC9saWIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfbGludXguY3BwCi1AQCAt NzQsNiArNzQsMTAgQEAKLSAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KLSAjZW5kaWYKLSAKLSsj aWYgU0FOSVRJWkVSX0xJTlVYICYmIGRlZmluZWQoX19wb3dlcnBjX18pCi0rI2luY2x1ZGUgPGFz bS9wdHJhY2UuaD4KLSsjZW5kaWYKLSsKLSAjaWYgU0FOSVRJWkVSX0xJTlVYICYmICFTQU5JVEla RVJfQU5EUk9JRAotICNpbmNsdWRlIDxzeXMvcGVyc29uYWxpdHkuaD4KLSAjZW5kaWYKLS0tLSBh L2NvbXBpbGVyLXJ0L2xpYi9zYW5pdGl6ZXJfY29tbW9uL3Nhbml0aXplcl9wbGF0Zm9ybV9saW1p dHNfcG9zaXguY3BwCi0rKysgYi9jb21waWxlci1ydC9saWIvc2FuaXRpemVyX2NvbW1vbi9zYW5p dGl6ZXJfcGxhdGZvcm1fbGltaXRzX3Bvc2l4LmNwcAotQEAgLTkyLDcgKzkyLDcgQEAKLSAjIGlu Y2x1ZGUgPHV0aW1lLmg+Ci0gIyBpbmNsdWRlIDxzeXMvcHRyYWNlLmg+Ci0gI2lmIGRlZmluZWQo X19taXBzNjQpIHx8IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwg XAotLSAgICBTQU5JVElaRVJfUklTQ1Y2NAotKyAgICBkZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBT QU5JVElaRVJfUklTQ1Y2NAotICMgIGluY2x1ZGUgPGFzbS9wdHJhY2UuaD4KLSAjICBpZmRlZiBf X2FybV9fCi0gdHlwZWRlZiBzdHJ1Y3QgdXNlcl9mcHJlZ3MgZWxmX2ZwcmVnc2V0X3Q7Ci0tLS0g YS9jb21waWxlci1ydC9saWIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfc3RvcHRoZXdvcmxk X2xpbnV4X2xpYmNkZXAuY3BwCi0rKysgYi9jb21waWxlci1ydC9saWIvc2FuaXRpemVyX2NvbW1v bi9zYW5pdGl6ZXJfc3RvcHRoZXdvcmxkX2xpbnV4X2xpYmNkZXAuY3BwCi1AQCAtMzEsNyArMzEs NyBAQAotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4gLy8gZm9yIHBpZF90Ci0gI2luY2x1ZGUgPHN5 cy91aW8uaD4gLy8gZm9yIGlvdmVjCi0gI2luY2x1ZGUgPGVsZi5oPiAvLyBmb3IgTlRfUFJTVEFU VVMKLS0jaWYgKGRlZmluZWQoX19hYXJjaDY0X18pIHx8IFNBTklUSVpFUl9SSVNDVjY0KSAmJiAh U0FOSVRJWkVSX0FORFJPSUQKLSsjaWYgKGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQo X19wb3dlcnBjX18pIHx8IFNBTklUSVpFUl9SSVNDVjY0KSAmJiAhU0FOSVRJWkVSX0FORFJPSUQK LSAvLyBHTElCQyAyLjIwKyBzeXMvdXNlciBkb2VzIG5vdCBpbmNsdWRlIGFzbS9wdHJhY2UuaAot ICMgaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgotICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9s bHZtMTIvcGF0Y2hlcy9jb21waWxlci1ydC1zaXplX3QucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMi9w YXRjaGVzL2NvbXBpbGVyLXJ0LXNpemVfdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMmM2MzA2M2E1ZTllLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0 Y2hlcy9jb21waWxlci1ydC1zaXplX3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCww IEBACi0tLS0gYS9jb21waWxlci1ydC9saWIvZnV6emVyL0Z1enplckludGVyY2VwdG9ycy5jcHAu b3JpZwotKysrIGIvY29tcGlsZXItcnQvbGliL2Z1enplci9GdXp6ZXJJbnRlcmNlcHRvcnMuY3Bw Ci1AQCAtMjUsNiArMjUsNyBAQAotICAgfQotIAotICNpbmNsdWRlIDxjYXNzZXJ0PgotKyNpbmNs dWRlIDxjc3RkZGVmPgotICNpbmNsdWRlIDxjc3RkaW50PgotICNpbmNsdWRlIDxkbGZjbi5oPiAv LyBmb3IgZGxzeW0oKQotIApkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jb21w aWxlci1ydC14cmF5LXBwYzY0LW11c2wucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2Nv bXBpbGVyLXJ0LXhyYXktcHBjNjQtbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggZDBiNjFjODBjODk3Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0 Y2hlcy9jb21waWxlci1ydC14cmF5LXBwYzY0LW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAt MSw2MiArMCwwIEBACi0tLS0gYS9jb21waWxlci1ydC9saWIveHJheS94cmF5X3Bvd2VycGM2NC5p bmMKLSsrKyBiL2NvbXBpbGVyLXJ0L2xpYi94cmF5L3hyYXlfcG93ZXJwYzY0LmluYwotQEAgLTEy LDcgKzEyLDEzIEBACi0gCi0gI2luY2x1ZGUgPGNzdGRpbnQ+Ci0gI2luY2x1ZGUgPG11dGV4Pgot KyNpZmRlZiBfX0dMSUJDX18KLSAjaW5jbHVkZSA8c3lzL3BsYXRmb3JtL3BwYy5oPgotKyNlbHNl Ci0rI2luY2x1ZGUgPGNjdHlwZT4KLSsjaW5jbHVkZSA8Y3N0cmluZz4KLSsjaW5jbHVkZSA8Y3N0 ZGxpYj4KLSsjZW5kaWYKLSAKLSAjaW5jbHVkZSAieHJheV9kZWZzLmgiCi0gCi1AQCAtMjAsMTMg KzI2LDQ1IEBAIG5hbWVzcGFjZSBfX3hyYXkgewotIAotIEFMV0FZU19JTkxJTkUgdWludDY0X3Qg cmVhZFRTQyh1aW50OF90ICZDUFUpIFhSQVlfTkVWRVJfSU5TVFJVTUVOVCB7Ci0gICBDUFUgPSAw OwotKyNpZmRlZiBfX0dMSUJDX18KLSAgIHJldHVybiBfX3BwY19nZXRfdGltZWJhc2UoKTsKLSsj ZWxzZQotKyAgcmV0dXJuIF9fYnVpbHRpbl9wcGNfZ2V0X3RpbWViYXNlKCk7Ci0rI2VuZGlmCi0g fQotIAotIGlubGluZSB1aW50NjRfdCBnZXRUU0NGcmVxdWVuY3koKSBYUkFZX05FVkVSX0lOU1RS VU1FTlQgewotICAgc3RhdGljIHN0ZDo6bXV0ZXggTTsKLSAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6 Om11dGV4PiBHdWFyZChNKTsKLSsjaWZkZWYgX19HTElCQ19fCi0gICByZXR1cm4gX19wcGNfZ2V0 X3RpbWViYXNlX2ZyZXEoKTsKLSsjZWxzZQotKyAgLyogRklYTUU6IGEgbGVzcyBkaXJ0eSBpbXBs ZW1lbnRhdGlvbj8gKi8KLSsgIHN0YXRpYyB1aW50NjRfdCBiYXNlOwotKyAgaWYgKCFiYXNlKSB7 Ci0rICAgIEZJTEUgKmYgPSBmb3BlbigiL3Byb2MvY3B1aW5mbyIsICJyYiIpOwotKyAgICBpZiAo ZikgewotKyAgICAgIHNzaXplX3QgbnI7Ci0rICAgICAgLyogdmlydHVhbGx5IGFsd2F5cyBiaWcg ZW5vdWdoIHRvIGhvbGQgdGhlIGxpbmUgKi8KLSsgICAgICBjaGFyIGJ1Zls1MTJdOwotKyAgICAg IHdoaWxlIChmZ2V0cyhidWYsIHNpemVvZihidWYpLCBmKSkgewotKyAgICAgICAgY2hhciAqcmV0 ID0gc3Ryc3RyKGJ1ZiwgInRpbWViYXNlIik7Ci0rICAgICAgICBpZiAoIXJldCkgewotKyAgICAg ICAgICBjb250aW51ZTsKLSsgICAgICAgIH0KLSsgICAgICAgIHJldCArPSBzaXplb2YoInRpbWVi YXNlIikgLSAxOwotKyAgICAgICAgcmV0ID0gc3RyY2hyKHJldCwgJzonKTsKLSsgICAgICAgIGlm ICghcmV0KSB7Ci0rICAgICAgICAgIGNvbnRpbnVlOwotKyAgICAgICAgfQotKyAgICAgICAgYmFz ZSA9IHN0cnRvdWwocmV0ICsgMSwgbnVsbHB0ciwgMTApOwotKyAgICAgICAgYnJlYWs7Ci0rICAg ICAgfQotKyAgICAgIGZjbG9zZShmKTsKLSsgICAgfQotKyAgfQotKyAgcmV0dXJuIGJhc2U7Ci0r I2VuZGlmCi0gfQotIAotIGlubGluZSBib29sIHByb2JlUmVxdWlyZWRDUFVGZWF0dXJlcygpIFhS QVlfTkVWRVJfSU5TVFJVTUVOVCB7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVz L2xpYmN4eC1tdXNsLnBhdGNoIGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJjeHgtbXVzbC5w YXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmJkMzFmZmMyY2IxLi4wMDAwMDAw MDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJjeHgtbXVzbC5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS0tLSBhL2xpYmN4eC9pbmNsdWRlL2xvY2FsZQot KysrIGIvbGliY3h4L2luY2x1ZGUvbG9jYWxlCi1AQCAtNzQyLDcgKzc0MiwxMSBAQCBfX251bV9n ZXRfc2lnbmVkX2ludGVncmFsKGNvbnN0IGNoYXIqIF9fYSwgY29uc3QgY2hhciogX19hX2VuZCwK LSAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2U8ZGVjbHR5cGUoZXJybm8pPjo6dHlw ZSBfX3NhdmVfZXJybm8gPSBlcnJubzsKLSAgICAgICAgIGVycm5vID0gMDsKLSAgICAgICAgIGNo YXIgKl9fcDI7Ci0rI2lmIGRlZmluZWQoX19saW51eF9fKSAmJiAhZGVmaW5lZChfX0dMSUJDX18p Ci0rICAgICAgICBsb25nIGxvbmcgX19sbCA9IHN0cnRvbGwoX19hLCAmX19wMiwgX19iYXNlKTsK LSsjZWxzZQotICAgICAgICAgbG9uZyBsb25nIF9fbGwgPSBzdHJ0b2xsX2woX19hLCAmX19wMiwg X19iYXNlLCBfTElCQ1BQX0dFVF9DX0xPQ0FMRSk7Ci0rI2VuZGlmCi0gICAgICAgICB0eXBlbmFt ZSByZW1vdmVfcmVmZXJlbmNlPGRlY2x0eXBlKGVycm5vKT46OnR5cGUgX19jdXJyZW50X2Vycm5v ID0gZXJybm87Ci0gICAgICAgICBpZiAoX19jdXJyZW50X2Vycm5vID09IDApCi0gICAgICAgICAg ICAgZXJybm8gPSBfX3NhdmVfZXJybm87Ci1AQCAtNzgyLDcgKzc4NiwxMSBAQCBfX251bV9nZXRf dW5zaWduZWRfaW50ZWdyYWwoY29uc3QgY2hhciogX19hLCBjb25zdCBjaGFyKiBfX2FfZW5kLAot ICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxkZWNsdHlwZShlcnJubyk+Ojp0eXBl IF9fc2F2ZV9lcnJubyA9IGVycm5vOwotICAgICAgICAgZXJybm8gPSAwOwotICAgICAgICAgY2hh ciAqX19wMjsKLSsjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmICFkZWZpbmVkKF9fR0xJQkNfXykK LSsgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2xsID0gc3RydG91bGwoX19hLCAmX19wMiwg X19iYXNlKTsKLSsjZWxzZQotICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIF9fbGwgPSBzdHJ0 b3VsbF9sKF9fYSwgJl9fcDIsIF9fYmFzZSwgX0xJQkNQUF9HRVRfQ19MT0NBTEUpOwotKyNlbmRp ZgotICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxkZWNsdHlwZShlcnJubyk+Ojp0 eXBlIF9fY3VycmVudF9lcnJubyA9IGVycm5vOwotICAgICAgICAgaWYgKF9fY3VycmVudF9lcnJu byA9PSAwKQotICAgICAgICAgICAgIGVycm5vID0gX19zYXZlX2Vycm5vOwpkaWZmIC0tZ2l0IGEv c3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJjeHgtcHBjLnBhdGNoIGIvc3JjcGtncy9sbHZtMTIv cGF0Y2hlcy9saWJjeHgtcHBjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3 YTkyZjgwMDRlMWMuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xp YmN4eC1wcGMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1UaGlzIGVuc3Vy ZXMgYGlzX2llYzU1OWAgaXMgZGVmaW5lZCBjb3JyZWN0bHkgdW5kZXIgYWxsIGxvbmcgZG91Ymxl IEFCSXMsCi1pbmNsdWRpbmcgbXVzbCBhbmQgaXRzIDY0LWJpdCBsb25nIGRvdWJsZS4gQWxzbywg YF9fcHBjX19gIG9yIGBfX3BwYzY0X19gCi1pcyBub3QgZGVmaW5lZCBvbiBnY2MuCi0KLS0tLSBh L2xpYmN4eC9pbmNsdWRlL2xpbWl0cwotKysrIGIvbGliY3h4L2luY2x1ZGUvbGltaXRzCi1AQCAt NDI2LDggKzQyNiwxNCBAQCBwcm90ZWN0ZWQ6Ci0gICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJ VFkgc3RhdGljIF9MSUJDUFBfQ09OU1RFWFBSIHR5cGUgc2lnbmFsaW5nX05hTigpIF9OT0VYQ0VQ VCB7cmV0dXJuIF9fYnVpbHRpbl9uYW5zbCgiIik7fQotICAgICBfTElCQ1BQX0lOTElORV9WSVNJ QklMSVRZIHN0YXRpYyBfTElCQ1BQX0NPTlNURVhQUiB0eXBlIGRlbm9ybV9taW4oKSBfTk9FWENF UFQge3JldHVybiBfX0xEQkxfREVOT1JNX01JTl9fO30KLSAKLS0jaWYgKGRlZmluZWQoX19wcGNf XykgfHwgZGVmaW5lZChfX3BwYzY0X18pKQotKyNpZiBkZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBk ZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rI2lmIChfX0xEQkxfTUFYX0VYUF9fID4gX19EQkxfTUFY X0VYUF9fKSB8fCAoX19MREJMX01BTlRfRElHX18gPT0gX19EQkxfTUFOVF9ESUdfXykKLSsgICAg LyogSUVFRSA3NTQgcXVhZHJ1cGxlIG9yIGRvdWJsZSBwcmVjaXNpb24gKi8KLSsgICAgc3RhdGlj IF9MSUJDUFBfQ09OU1RFWFBSIGNvbnN0IGJvb2wgaXNfaWVjNTU5ID0gdHJ1ZTsKLSsjZWxzZQot KyAgICAvKiAxMjgtYml0IElCTSBkb3VibGUtZG91YmxlICovCi0gICAgIHN0YXRpYyBfTElCQ1BQ X0NPTlNURVhQUiBjb25zdCBib29sIGlzX2llYzU1OSA9IGZhbHNlOwotKyNlbmRpZgotICNlbHNl Ci0gICAgIHN0YXRpYyBfTElCQ1BQX0NPTlNURVhQUiBjb25zdCBib29sIGlzX2llYzU1OSA9IHRy dWU7Ci0gI2VuZGlmCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xpYmN4eC1z c3Atbm9uc2hhcmVkLnBhdGNoIGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJjeHgtc3NwLW5v bnNoYXJlZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzAyOTJiZWIyZmNk Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJjeHgtc3NwLW5v bnNoYXJlZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLS0tLSBhL2xpYmN4 eC9DTWFrZUxpc3RzLnR4dAotKysrIGIvbGliY3h4L0NNYWtlTGlzdHMudHh0Ci1AQCAtNzY5LDYg Kzc2OSw4IEBAIGZ1bmN0aW9uKGN4eF9saW5rX3N5c3RlbV9saWJyYXJpZXMgdGFyZ2V0KQotICAg ICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHt0YXJnZXR9IFBSSVZBVEUgYXRvbWljKQotICAgZW5k aWYoKQotIAotKyNzc3AgIHRhcmdldF9saW5rX2xpYnJhcmllcygke3RhcmdldH0gUFJJVkFURSBz c3Bfbm9uc2hhcmVkKQotKwotICAgaWYgKE1JTkdXKQotICAgICB0YXJnZXRfbGlua19saWJyYXJp ZXMoJHt0YXJnZXR9IFBSSVZBVEUgIiR7TUlOR1dfTElCUkFSSUVTfSIpCi0gICBlbmRpZigpCmRp ZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xpYmN4eGFiaS1kbC5wYXRjaCBiL3Ny Y3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGliY3h4YWJpLWRsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAzYTE1ZjlkYjhjOTguLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2xs dm0xMi9wYXRjaGVzL2xpYmN4eGFiaS1kbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICsw LDAgQEAKLUFsc28gbGluayB0byAtbGRsIHRvIHByZXZlbnQgdW5kZWZpbmVkIHJlZmVyZW5jZXMu Ci0KLS0tLSBhL2xpYmN4eGFiaS9zcmMvQ01ha2VMaXN0cy50eHQKLSsrKyBiL2xpYmN4eGFiaS9z cmMvQ01ha2VMaXN0cy50eHQKLUBAIC03Myw2ICs3Myw3IEBACi0gICBlbmRpZigpCi0gCi0gICBh ZGRfbGlicmFyeV9mbGFnc19pZihMSUJDWFhBQklfSEFTX0NfTElCIGMpCi0rICBhZGRfbGlicmFy eV9mbGFnc19pZihMSUJDWFhBQklfSEFTX0NfTElCIGRsKQotIGVuZGlmKCkKLSAKLSBpZiAoTElC Q1hYQUJJX1VTRV9MTFZNX1VOV0lOREVSKQotLS0tIGEvbGliY3h4L0NNYWtlTGlzdHMudHh0Ci0r KysgYi9saWJjeHgvQ01ha2VMaXN0cy50eHQKLUBAIC03NDUsNiArNzQ1LDEwIEBACi0gICAgIHRh cmdldF9saW5rX2xpYnJhcmllcygke3RhcmdldH0gUFJJVkFURSBtKQotICAgZW5kaWYoKQotIAot KyAgaWYgKExJQkNYWF9IQVNfQ19MSUIpCi0rICAgIHRhcmdldF9saW5rX2xpYnJhcmllcygke3Rh cmdldH0gUFJJVkFURSBkbCkKLSsgIGVuZGlmKCkKLSsKLSAgIGlmIChMSUJDWFhfSEFTX1JUX0xJ QikKLSAgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7dGFyZ2V0fSBQUklWQVRFIHJ0KQotICAg ZW5kaWYoKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJ1bndpbmQtcHBj MzIucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xpYnVud2luZC1wcGMzMi5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzRhYTc1NzZlY2Y5Li4wMDAwMDAwMDAwMDAK LS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJ1bndpbmQtcHBjMzIucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi1UaGlzIGZpeGVzIGJ1aWxkIGF0IGxlYXN0IHdpdGgg Z2NjOSB3aGljaCBkb2VzIG5vdCBkZWZpbmUgYF9fcHBjX19gLgotCi0tLS0gYS9saWJ1bndpbmQv aW5jbHVkZS9fX2xpYnVud2luZF9jb25maWcuaAotKysrIGIvbGlidW53aW5kL2luY2x1ZGUvX19s aWJ1bndpbmRfY29uZmlnLmgKLUBAIC00OSw3ICs0OSw3IEBACi0gIyAgZGVmaW5lIF9MSUJVTldJ TkRfQ09OVEVYVF9TSVpFIDE2NwotICMgIGRlZmluZSBfTElCVU5XSU5EX0NVUlNPUl9TSVpFIDE3 OQotICMgIGRlZmluZSBfTElCVU5XSU5EX0hJR0hFU1RfRFdBUkZfUkVHSVNURVIgX0xJQlVOV0lO RF9ISUdIRVNUX0RXQVJGX1JFR0lTVEVSX1BQQzY0Ci0tIyBlbGlmIGRlZmluZWQoX19wcGNfXykK LSsjIGVsaWYgZGVmaW5lZChfX3Bvd2VycGNfXykKLSAjICBkZWZpbmUgX0xJQlVOV0lORF9UQVJH RVRfUFBDIDEKLSAjICBkZWZpbmUgX0xJQlVOV0lORF9DT05URVhUX1NJWkUgMTE3Ci0gIyAgZGVm aW5lIF9MSUJVTldJTkRfQ1VSU09SX1NJWkUgMTI0Ci0tLS0gYS9saWJ1bndpbmQvc3JjL1Vud2lu ZFJlZ2lzdGVyc1Jlc3RvcmUuUwotKysrIGIvbGlidW53aW5kL3NyYy9VbndpbmRSZWdpc3RlcnNS ZXN0b3JlLlMKLUBAIC0zOTIsNyArMzkyLDcgQEAgTG5vdmVjOgotICAgUFBDNjRfTFIoMykKLSAg IGJjdHIKLSAKLS0jZWxpZiBkZWZpbmVkKF9fcHBjX18pCi0rI2VsaWYgZGVmaW5lZChfX3Bvd2Vy cGNfXykKLSAKLSBERUZJTkVfTElCVU5XSU5EX0ZVTkNUSU9OKF9aTjlsaWJ1bndpbmQxM1JlZ2lz dGVyc19wcGM2anVtcHRvRXYpCi0gLy8KLS0tLSBhL2xpYnVud2luZC9zcmMvVW53aW5kUmVnaXN0 ZXJzU2F2ZS5TCi0rKysgYi9saWJ1bndpbmQvc3JjL1Vud2luZFJlZ2lzdGVyc1NhdmUuUwotQEAg LTU1NCw3ICs1NTQsNyBAQCBERUZJTkVfTElCVU5XSU5EX0ZVTkNUSU9OKF9fdW53X2dldGNvbnRl eHQpCi0gICBibHIKLSAKLSAKLS0jZWxpZiBkZWZpbmVkKF9fcHBjX18pCi0rI2VsaWYgZGVmaW5l ZChfX3Bvd2VycGNfXykKLSAKLSAvLwotIC8vIGV4dGVybiBpbnQgdW53X2dldGNvbnRleHQodW53 X2NvbnRleHRfdCogdGhyZWFkX3N0YXRlKQotLS0tIGEvbGlidW53aW5kL3NyYy9jb25maWcuaAot KysrIGIvbGlidW53aW5kL3NyYy9jb25maWcuaAotQEAgLTk1LDEyICs5NSwxMiBAQAotICNkZWZp bmUgX0xJQlVOV0lORF9CVUlMRF9TSkxKX0FQSVMKLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZChf X2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fcHBjX18pIHx8IGRl ZmluZWQoX19wcGM2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rI2lmIGRlZmluZWQo X19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGNfXykg fHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICNkZWZpbmUgX0xJQlVOV0lORF9TVVBQT1JUX0ZS QU1FX0FQSVMKLSAjZW5kaWYKLSAKLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChf X3g4Nl82NF9fKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICBkZWZp bmVkKF9fcHBjX18pIHx8IGRlZmluZWQoX19wcGM2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0 X18pIHx8ICAgICAgICBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjX18pIHx8IGRlZmluZWQoX19w b3dlcnBjNjRfXykgfHwgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgKCFkZWZpbmVk KF9fQVBQTEVfXykgJiYgZGVmaW5lZChfX2FybV9fKSkgfHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotICAgICAoZGVmaW5lZChfX2FybTY0X18pIHx8IGRlZmluZWQoX19hYXJjaDY0 X18pKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIGRlZmluZWQoX19taXBz X18pCi0tLS0gYS9saWJ1bndpbmQvc3JjL2xpYnVud2luZC5jcHAKLSsrKyBiL2xpYnVud2luZC9z cmMvbGlidW53aW5kLmNwcAotQEAgLTQyLDcgKzQyLDcgQEAgX0xJQlVOV0lORF9ISURERU4gaW50 IF9fdW53X2luaXRfbG9jYWwodW53X2N1cnNvcl90ICpjdXJzb3IsCi0gIyBkZWZpbmUgUkVHSVNU RVJfS0lORCBSZWdpc3RlcnNfeDg2XzY0Ci0gI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQot ICMgZGVmaW5lIFJFR0lTVEVSX0tJTkQgUmVnaXN0ZXJzX3BwYzY0Ci0tI2VsaWYgZGVmaW5lZChf X3BwY19fKQotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjX18pCi0gIyBkZWZpbmUgUkVHSVNURVJf S0lORCBSZWdpc3RlcnNfcHBjCi0gI2VsaWYgZGVmaW5lZChfX2FhcmNoNjRfXykKLSAjIGRlZmlu ZSBSRUdJU1RFUl9LSU5EIFJlZ2lzdGVyc19hcm02NApkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZt MTIvcGF0Y2hlcy9sbGRiLW11c2wucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xsZGIt bXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjAxYzBkMTM4NTIzLi4w MDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9sbGRiLW11c2wucGF0Y2gK KysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0tLS0gYS9sbGRiL3NvdXJjZS9QbHVnaW5z L1Byb2Nlc3MvTGludXgvUHJvY2ZzLmgKLSsrKyBiL2xsZGIvc291cmNlL1BsdWdpbnMvUHJvY2Vz cy9MaW51eC9Qcm9jZnMuaAotQEAgLTEwLDIxICsxMCwxMiBAQAotIC8vIHN5cy9wcm9jZnMuaCBv biBBbmRyb2lkL0xpbnV4IGZvciBhbGwgc3VwcG9ydGVkIGFyY2hpdGVjdHVyZXMuCi0gCi0gI2lu Y2x1ZGUgPHN5cy9wdHJhY2UuaD4KLSsjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgotIAotLSNpZmRl ZiBfX0FORFJPSURfXwotLSNpZiBkZWZpbmVkKF9fYXJtNjRfXykgfHwgZGVmaW5lZChfX2FhcmNo NjRfXykKLS10eXBlZGVmIHVuc2lnbmVkIGxvbmcgZWxmX2dyZWdfdDsKLS10eXBlZGVmIGVsZl9n cmVnX3QKLS0gICAgZWxmX2dyZWdzZXRfdFsoc2l6ZW9mKHN0cnVjdCB1c2VyX3B0X3JlZ3MpIC8g c2l6ZW9mKGVsZl9ncmVnX3QpKV07Ci0tdHlwZWRlZiBzdHJ1Y3QgdXNlcl9mcHNpbWRfc3RhdGUg ZWxmX2ZwcmVnc2V0X3Q7Ci0tI2lmbmRlZiBOVF9GUFJFR1NFVAotLSNkZWZpbmUgTlRfRlBSRUdT RVQgTlRfUFJGUFJFRwotLSNlbmRpZiAvLyBOVF9GUFJFR1NFVAotLSNlbGlmIGRlZmluZWQoX19t aXBzX18pCi0tI2lmbmRlZiBOVF9GUFJFR1NFVAotLSNkZWZpbmUgTlRfRlBSRUdTRVQgTlRfUFJG UFJFRwotLSNlbmRpZiAvLyBOVF9GUFJFR1NFVAotLSNlbmRpZgotLSNlbHNlIC8vIF9fQU5EUk9J RF9fCi0rI2lmICFkZWZpbmVkKF9fR0xJQkNfXykgJiYgZGVmaW5lZChfX3Bvd2VycGNfXykKLSsj ZGVmaW5lIHB0X3JlZ3MgbXVzbF9wdF9yZWdzCi0rI2luY2x1ZGUgPHN5cy9wcm9jZnMuaD4KLSsj dW5kZWYgcHRfcmVncwotKyNlbHNlCi0gI2luY2x1ZGUgPHN5cy9wcm9jZnMuaD4KLS0jZW5kaWYg Ly8gX19BTkRST0lEX18KLSsjZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNo ZXMvcHBjMzItY29tcGlsZXItcnQucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL3BwYzMy LWNvbXBpbGVyLXJ0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTBhOWE3 NzlkMWIuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL3BwYzMyLWNv bXBpbGVyLXJ0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotY29tbWl0IGJh NGVkZTU5NWZmOTU5OTIzMmY1ZGQyYjQzODRjMjQzMTM3YjUzZmMKLUF1dGhvcjogRGFuaWVsIEtv bGVzYSA8ZGFuaWVsQG9jdGFmb3JnZS5vcmc+Ci1EYXRlOiAgIFR1ZSBKdW4gMjIgMjM6NDA6NTQg MjAyMSArMDIwMAotCi0gICAgZW5hYmxlIGNvbXBpbGVyLXJ0IHN1cHBvcnQgZm9yIHBwYzMyCi0K LWRpZmYgLS1naXQgYS9jb21waWxlci1ydC9jbWFrZS9iYXNlLWNvbmZpZy1peC5jbWFrZSBiL2Nv bXBpbGVyLXJ0L2NtYWtlL2Jhc2UtY29uZmlnLWl4LmNtYWtlCi1pbmRleCAxZWRhYjQzLi41YzBj OGEyIDEwMDY0NAotLS0tIGEvY29tcGlsZXItcnQvY21ha2UvYmFzZS1jb25maWctaXguY21ha2UK LSsrKyBiL2NvbXBpbGVyLXJ0L2NtYWtlL2Jhc2UtY29uZmlnLWl4LmNtYWtlCi1AQCAtMTgyLDkg KzE4Miw3IEBAIG1hY3JvKHRlc3RfdGFyZ2V0cykKLSAgICAgZWxzZWlmKCIke0NPTVBJTEVSX1JU X0RFRkFVTFRfVEFSR0VUX0FSQ0h9IiBNQVRDSEVTICJwb3dlcnBjNjRsZSIpCi0gICAgICAgdGVz dF90YXJnZXRfYXJjaChwb3dlcnBjNjRsZSAiIiAiLW02NCIpCi0gICAgIGVsc2VpZigiJHtDT01Q SUxFUl9SVF9ERUZBVUxUX1RBUkdFVF9BUkNIfSIgTUFUQ0hFUyAicG93ZXJwYyIpCi0tICAgICAg aWYoQ01BS0VfU1lTVEVNX05BTUUgTUFUQ0hFUyAiQUlYIikKLS0gICAgICAgIHRlc3RfdGFyZ2V0 X2FyY2gocG93ZXJwYyAiIiAiLW0zMiIpCi0tICAgICAgZW5kaWYoKQotKyAgICAgIHRlc3RfdGFy Z2V0X2FyY2gocG93ZXJwYyAiIiAiLW0zMiIpCi0gICAgICAgdGVzdF90YXJnZXRfYXJjaChwb3dl cnBjNjQgIiIgIi1tNjQiKQotICAgICBlbHNlaWYoIiR7Q09NUElMRVJfUlRfREVGQVVMVF9UQVJH RVRfQVJDSH0iIE1BVENIRVMgInMzOTB4IikKLSAgICAgICB0ZXN0X3RhcmdldF9hcmNoKHMzOTB4 ICIiICIiKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTIvdGVtcGxhdGUgYi9zcmNwa2dzL2xs dm0xMi90ZW1wbGF0ZQppbmRleCA3Y2UxODAyOGU0YTMuLjdiMzYxYmJiZjViYyAxMDA2NDQKLS0t IGEvc3JjcGtncy9sbHZtMTIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9sbHZtMTIvdGVtcGxhdGUK QEAgLTEsMjUgKzEsMTcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2xsdm0xMicKIHBrZ25hbWU9 bGx2bTEyCiB2ZXJzaW9uPTEyLjAuMQotcmV2aXNpb249MgorcmV2aXNpb249Mwogd3Jrc3JjPSJs bHZtLXByb2plY3QtJHt2ZXJzaW9ufS5zcmMiCiBidWlsZF93cmtzcmM9bGx2bQogYnVpbGRfc3R5 bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSIKICAtRENNQUtFX0JVSUxEX1RZUEU9UmVsZWFzZSAt V25vLWRldgogIC1ERU5BQkxFX0xJTktFUl9CVUlMRF9JRD1ZRVMKLSAtRExMREJfVVNFX1NZU1RF TV9TSVg9WUVTCi0gLURMSUJDWFhfQ1hYX0FCST1saWJjeHhhYmkKLSAtRExJQkNYWF9FTkFCTEVf U1RBVElDX0FCSV9MSUJSQVJZPVlFUwotIC1ETElCQ1hYQUJJX1VTRV9MTFZNX1VOV0lOREVSPVlF UwotIC1ETElCQ1hYQUJJX0VOQUJMRV9TVEFUSUNfVU5XSU5ERVI9WUVTCi0gLURMSUJPTVBfRU5B QkxFX1NIQVJFRD1ZRVMKLSAtRExJQk9NUF9JTlNUQUxMX0FMSUFTRVM9Tk8KICAtRExMVk1fSU5D TFVERV9ET0NTPVlFUwogIC1ETExWTV9CVUlMRF9ET0NTPVlFUwogIC1ETExWTV9FTkFCTEVfU1BI SU5YPVlFUwogIC1EU1BISU5YX1dBUk5JTkdTX0FTX0VSUk9SUz1OTwotIC1ETExWTV9JTlNUQUxM X1VUSUxTPVlFUwogIC1ETExWTV9CVUlMRF9MTFZNX0RZTElCPVlFUwogIC1ETExWTV9MSU5LX0xM Vk1fRFlMSUI9WUVTCiAgLURMTFZNX0VOQUJMRV9SVFRJPVlFUwpAQCAtNTEsODcgKzQzLDEwIEBA IGNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgogCXBwYyopIGNvbmZpZ3VyZV9hcmdzKz0i IC1EQ0xBTkdfRU5BQkxFX0NMQU5HRD1PRkYiIDs7CiBlc2FjCiAKLV9lbmFibGVkX3Byb2plY3Rz PSJjbGFuZztjbGFuZy10b29scy1leHRyYTtjb21waWxlci1ydDtsaWJjeHg7bGliY3h4YWJpO2xp YnVud2luZDtsbGQiCi0KLV9sbGRiX2VuYWJsZT15ZXMKLV9saWJvbXBfZW5hYmxlPW5vCi0KLWNh c2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgotCXBwYzY0bGUqKSA7OwotCXBwYyp8aTY4Niop IF9sbGRiX2VuYWJsZT1ubyA7OwotZXNhYwotCi1jYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIg aW4KLQl4ODZfNjQqfGFhcmNoNjQqfHBwYzY0KikgX2xpYm9tcF9lbmFibGU9eWVzOzsKLWVzYWMK LQotc3VicGFja2FnZXM9ImNsYW5nLXRvb2xzLWV4dHJhIgotCi0jIG11c3QgZ28gYmVmb3JlIGNs YW5nCi1pZiBbICIkX2xpYm9tcF9lbmFibGUiID0gInllcyIgXTsgdGhlbgotCV9lbmFibGVkX3By b2plY3RzKz0iO29wZW5tcCIKLQlzdWJwYWNrYWdlcys9IiBsaWJvbXAgbGlib21wLWRldmVsIgot CSMgYmVjYXVzZSBvZiBjbWFrZSBub25zZW5zZSByZWZlcmVuY2luZyBsaWJvbXB0YXJnZXQuc28u KgotCWRlcGVuZHMrPSIgbGlib21wPj0ke3ZlcnNpb259XyR7cmV2aXNpb259IgotZmkKLQotc3Vi cGFja2FnZXMrPSIgY2xhbmcgY2xhbmctYW5hbHl6ZXIgbGliY2xhbmcgbGliY2xhbmctY3BwCi0g bGx2bS1saWJ1bndpbmQgbGx2bS1saWJ1bndpbmQtZGV2ZWwgbGliY3h4IGxpYmN4eC1kZXZlbAot IGxpYmN4eGFiaSBsaWJjeHhhYmktZGV2ZWwgbGlibGx2bTEyIgotCi1pZiBbICIkX2xsZGJfZW5h YmxlIiA9ICJ5ZXMiIF07IHRoZW4KLQkjIFhYWCBmYWlscyB0byBjcm9zcyBjb21waWxlIGR1ZSB0 byBweXRob24KLQlfZW5hYmxlZF9wcm9qZWN0cys9IjtsbGRiIgotCXN1YnBhY2thZ2VzKz0iIGxs ZGIgbGxkYi1kZXZlbCIKLWZpCi0KLXN1YnBhY2thZ2VzKz0iIGxsZCBsbGQtZGV2ZWwiCi0KLWNv bmZpZ3VyZV9hcmdzKz0iIC1ETExWTV9FTkFCTEVfUFJPSkVDVFM9JHtfZW5hYmxlZF9wcm9qZWN0 c30iCi0KIHBvc3RfcGF0Y2goKSB7Ci0JaWYgWyAiJF9sbGRiX2VuYWJsZSIgPSAieWVzIiBdOyB0 aGVuCi0JCWlmIFsgIiRYQlBTX1RBUkdFVF9MSUJDIiA9ICJtdXNsIiBdOyB0aGVuCi0JCQl2c2Vk IC1pICdzfF9fcHRyYWNlX3JlcXVlc3R8aW50fGcnIFwKLQkJCQkke3dya3NyY30vbGxkYi9zb3Vy Y2UvUGx1Z2lucy9Qcm9jZXNzL0xpbnV4L05hdGl2ZVByb2Nlc3NMaW51eC5jcHAKLQkJZmkKLQkJ IyBkaXNhYmxlIGRvY3MgZm9yIGxsZGIgYXMgdGhleSBmYWlsIHRvIGdlbmVyYXRlCi0JCXZzZWQg LWkgJy9hZGRfc3ViZGlyZWN0b3J5KGRvY3MpL2QnIFwKLQkJCSR7d3Jrc3JjfS9sbGRiL0NNYWtl TGlzdHMudHh0Ci0JZmkKLQogCSMgdXBkYXRlIGNvbmZpZy5ndWVzcyBmb3IgYmV0dGVyIHBsYXRm b3JtIGRldGVjdGlvbgogCWNwICRYQlBTX0NPTU1PTkRJUi9lbnZpcm9ubWVudC9jb25maWd1cmUv YXV0b21ha2UvY29uZmlnLmd1ZXNzIFwKIAkJJHt3cmtzcmN9L2xsdm0vY21ha2UKLQotCSMgZml4 IGxpbmtlciBmYWlsdXJlcyBvbiBzb21lIGFyY2hzCi0JdnNlZCAtaSAncyxjaGVja19saWJyYXJ5 X2V4aXN0cyhnY2NfcyAuKixzZXQoTElCQ1hYQUJJX0hBU19HQ0NfU19MSUIgT04pLCcgXAotCQkk e3dya3NyY30vbGliY3h4YWJpL2NtYWtlL2NvbmZpZy1peC5jbWFrZQotCXZzZWQgLWkgJ3MsY2hl Y2tfbGlicmFyeV9leGlzdHMoZ2NjIC4qLHNldChMSUJDWFhBQklfSEFTX0dDQ19MSUIgT04pLCcg XAotCQkke3dya3NyY30vbGliY3h4YWJpL2NtYWtlL2NvbmZpZy1peC5jbWFrZQotCi0JIyBuZWVk IGxpYnNzcF9ub25zaGFyZWQgb24gc29tZSBtdXNsIHBsYXRmb3JtcyAoYmVjYXVzZSBvZiBub2Rl ZmF1bHRsaWJzKQotCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgotCQlwcGM2NCopIDs7 Ci0JCXBwYyotbXVzbHxpNjg2LW11c2x8bWlwcyotbXVzbCkKLQkJCXZzZWQgLWkgJ3MsXiMgU2V0 dXAgZmxhZ3MuJCxhZGRfbGlicmFyeV9mbGFncyhzc3Bfbm9uc2hhcmVkKSwnIFwKLQkJCQkke3dy a3NyY30vbGlidW53aW5kL3NyYy9DTWFrZUxpc3RzLnR4dAotCQkJdnNlZCAtaSAncyxeIyBTZXR1 cCBmbGFncy4kLGFkZF9saWJyYXJ5X2ZsYWdzKHNzcF9ub25zaGFyZWQpLCcgXAotCQkJCSR7d3Jr c3JjfS9saWJjeHhhYmkvc3JjL0NNYWtlTGlzdHMudHh0Ci0JCQl2c2VkIC1pICdzLCNzc3AsLCcg JHt3cmtzcmN9L2xpYmN4eC9DTWFrZUxpc3RzLnR4dAotCQkJOzsKLQllc2FjCi0KLQljYXNlICIk WEJQU19UQVJHRVRfTUFDSElORSIgaW4KLQkJeDg2XzY0LW11c2wpICMgc29tZSBzYW5pdGl6ZXIg Y3VycmVudGx5IG9ubHkgb24geDg2XzY0IHN0dWZmIG5lZWRzIGJhY2t0cmFjZQotCQkJdnNlZCAt aSAncywjIFNldCBjb21tb24gbGluayBmbGFncy4sbGlzdChBUFBFTkQgU0FOSVRJWkVSX0NPTU1P Tl9MSU5LX0xJQlMgZXhlY2luZm8pLCcgXAotCQkJCSR7d3Jrc3JjfS9jb21waWxlci1ydC9DTWFr ZUxpc3RzLnR4dAotCQkJOzsKLQkJYXJtKi1tdXNsfGk2ODYtbXVzbCkgIyBzYW5pdGl6ZXIgY29k ZSBpcyBicm9rZW4gc2luY2UgaXQgZHVwbGljYXRlcyBzb21lIGxpYmMgYml0cwotCQkJdnNlZCAt aSAncy9zZXQoQ09NUElMRVJfUlRfSEFTX1NBTklUSVpFUl9DT01NT04gVFJVRSkvc2V0KENPTVBJ TEVSX1JUX0hBU19TQU5JVElaRVJfQ09NTU9OIEZBTFNFKS8nIFwKLQkJCQkke3dya3NyY30vY29t cGlsZXItcnQvY21ha2UvY29uZmlnLWl4LmNtYWtlCi0JCQk7OwotCWVzYWMKIH0KIAogcHJlX2Nv bmZpZ3VyZSgpIHsKQEAgLTE1OCwxMCArNzMsOCBAQCBwcmVfY29uZmlndXJlKCkgewogCQkJY21h a2UgLi4vLi4gLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UgXAogCQkJLURMTFZNX0VOQUJMRV9Q Uk9KRUNUUz0ke19lbmFibGVkX3Byb2plY3RzfQogCQltYWtlICR7bWFrZWpvYnN9IC1DIHV0aWxz L1RhYmxlR2VuCi0JCW1ha2UgJHttYWtlam9ic30gLUMgdG9vbHMvY2xhbmcvdXRpbHMvVGFibGVH ZW4KIAkJWyAiJF9sbGRiX2VuYWJsZSIgPSAieWVzIiBdICYmIG1ha2UgJHttYWtlam9ic30gLUMg dG9vbHMvbGxkYi91dGlscy9UYWJsZUdlbgogCQljb25maWd1cmVfYXJncys9IiAtRExMVk1fVEFC TEVHRU49JHt3cmtzcmN9L2xsdm0vYnVpbGQvSE9TVC9iaW4vbGx2bS10YmxnZW4iCi0JCWNvbmZp Z3VyZV9hcmdzKz0iIC1EQ0xBTkdfVEFCTEVHRU49JHt3cmtzcmN9L2xsdm0vYnVpbGQvSE9TVC9i aW4vY2xhbmctdGJsZ2VuIgogCQlbICIkX2xsZGJfZW5hYmxlIiA9ICJ5ZXMiIF0gJiYgY29uZmln dXJlX2FyZ3MrPSIgLURMTERCX1RBQkxFR0VOPSR7d3Jrc3JjfS9sbHZtL2J1aWxkL0hPU1QvYmlu L2xsZGItdGJsZ2VuIgogCQljZCAuLi8uLgogCWZpCkBAIC0yMDIsMjE4ICsxMTUsNiBAQCBkb19p bnN0YWxsKCkgewogCWlmIFsgIiRDUk9TU19CVUlMRCIgXTsgdGhlbgogCQlybSAtZiAke0RFU1RE SVJ9L3Vzci9iaW4vbGx2bS1jb25maWctaG9zdAogCWZpCi0KLQkjIEluc3RhbGwgbGliY3h4YWJp IGhlYWRlcnMKLQl2aW5zdGFsbCAke3dya3NyY30vbGliY3h4YWJpL2luY2x1ZGUvX19jeHhhYmlf Y29uZmlnLmggNjQ0IHVzci9pbmNsdWRlCi0Jdmluc3RhbGwgJHt3cmtzcmN9L2xpYmN4eGFiaS9p bmNsdWRlL2N4eGFiaS5oIDY0NCB1c3IvaW5jbHVkZQotCi0JIyBJbnN0YWxsIGxpYnVud2luZCBo ZWFkZXJzCi0Jdmluc3RhbGwgJHt3cmtzcmN9L2xpYnVud2luZC9pbmNsdWRlL19fbGlidW53aW5k X2NvbmZpZy5oIDY0NCB1c3IvaW5jbHVkZQotCXZpbnN0YWxsICR7d3Jrc3JjfS9saWJ1bndpbmQv aW5jbHVkZS9saWJ1bndpbmQuaCA2NDQgdXNyL2luY2x1ZGUKLQl2aW5zdGFsbCAke3dya3NyY30v bGlidW53aW5kL2luY2x1ZGUvdW53aW5kLmggNjQ0IHVzci9pbmNsdWRlCi0Jdmluc3RhbGwgJHt3 cmtzcmN9L2xpYnVud2luZC9pbmNsdWRlL21hY2gtby9jb21wYWN0X3Vud2luZF9lbmNvZGluZy5o IFwKLQkJNjQ0IHVzci9pbmNsdWRlL21hY2gtbwotfQotCi1jbGFuZy1hbmFseXplcl9wYWNrYWdl KCkgewotCXB5Y29tcGlsZV9kaXJzPSJ1c3Ivc2hhcmUvc2Nhbi12aWV3IgotCWRlcGVuZHM9ImNs YW5nLSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0gcHl0aG9uMyBwZXJsIgotCXNob3J0X2Rlc2MrPSIg LSBBIHNvdXJjZSBjb2RlIGFuYWx5c2lzIGZyYW1ld29yayIKLQlob21lcGFnZT0iaHR0cHM6Ly9j bGFuZy1hbmFseXplci5sbHZtLm9yZy8iCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlIHVzci9z aGFyZS9tYW4vbWFuMS9zY2FuLWJ1aWxkLjEKLQkJdm1vdmUgIi91c3IvYmluL3NjYW4tKiIKLQkJ dm1vdmUgIi91c3Ivc2hhcmUvc2Nhbi0qIgotCQl2bW92ZSAiL3Vzci9saWJleGVjLyphbmFseXpl ciIKLQl9Ci19Ci0KLWNsYW5nLXRvb2xzLWV4dHJhX3BhY2thZ2UoKSB7Ci0JbGliMzJkaXNhYmxl ZD15ZXMKLQlkZXBlbmRzPSJjbGFuZy0ke3ZlcnNpb259XyR7cmV2aXNpb259IHB5dGhvbjMiCi0J c2hvcnRfZGVzYys9IiAtIEV4dHJhIENsYW5nIHRvb2xzIgotCWhvbWVwYWdlPSJodHRwczovL2Ns YW5nLmxsdm0ub3JnL2V4dHJhLyIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJdm1vdmUgdXNyL2luY2x1 ZGUvY2xhbmctdGlkeQotCQl2bW92ZSB1c3IvYmluL2NsYW5nLWFwcGx5LXJlcGxhY2VtZW50cwot CQl2bW92ZSB1c3IvYmluL2NsYW5nLXF1ZXJ5Ci0JCXZtb3ZlIHVzci9iaW4vY2xhbmctcmVuYW1l Ci0JCXZtb3ZlIHVzci9iaW4vY2xhbmctdGlkeQotCQl2bW92ZSB1c3IvYmluL2RpYWd0b29sCi0J CXZtb3ZlIHVzci9iaW4vZmluZC1hbGwtc3ltYm9scwotCQl2bW92ZSB1c3IvYmluL2htYXB0b29s Ci0JCXZtb3ZlIHVzci9iaW4vbW9kdWxhcml6ZQotCQl2bW92ZSB1c3IvYmluL3BwLXRyYWNlCi0J CXZtb3ZlIHVzci9iaW4vc2FuY292Ci0JCXZtb3ZlICJ1c3IvbGliL2xpYmNsYW5nQXBwbHlSZXBs YWNlbWVudHMqIgotCQl2bW92ZSAidXNyL2xpYi9saWJjbGFuZ1F1ZXJ5KiIKLQkJdm1vdmUgInVz ci9saWIvbGliY2xhbmdUaWR5KiIKLQkJdm1vdmUgInVzci9zaGFyZS9jbGFuZy8qdGlkeSoiCi0J CXZtb3ZlIHVzci9zaGFyZS9kb2MvY2xhbmctdG9vbHMKLQkJdm1vdmUgdXNyL3NoYXJlL21hbi9t YW4xL2V4dHJhY2xhbmd0b29scy4xCi0JCXZtb3ZlIHVzci9zaGFyZS9tYW4vbWFuMS9kaWFndG9v bC4xCi0JfQotfQotCi1jbGFuZ19wYWNrYWdlKCkgewotCWxpYjMyZGlzYWJsZWQ9eWVzCi0JZGVw ZW5kcz0ibGlic3RkYysrLWRldmVsIGxpYmdjYy1kZXZlbCAgYmludXRpbHMgJHtYQlBTX1RBUkdF VF9MSUJDfS1kZXZlbAotCSBsaWJjbGFuZy0ke3ZlcnNpb259XyR7cmV2aXNpb259IgotCXNob3J0 X2Rlc2MrPSIgLSBDIGxhbmd1YWdlIGZhbWlseSBmcm9udGVuZCIKLQlob21lcGFnZT0iaHR0cHM6 Ly9jbGFuZy5sbHZtLm9yZy8iCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlIHVzci9pbmNsdWRl L2NsYW5nCi0JCXZtb3ZlIHVzci9pbmNsdWRlL2NsYW5nLWMKLQkJdm1vdmUgInVzci9iaW4vKmNs YW5nKiIKLQkJdm1vdmUgdXNyL2Jpbi9jLWluZGV4LXRlc3QKLQkJdm1vdmUgdXNyL2xpYi9jbGFu ZwotCQl2bW92ZSB1c3IvbGliL2NtYWtlL2NsYW5nCi0JCXZtb3ZlICJ1c3IvbGliL2xpYmNsYW5n Ki5hIgotCQl2bW92ZSAidXNyL2xpYi9saWJjbGFuZyouc28iCi0JCXZtb3ZlIHVzci9zaGFyZS9j bGFuZwotCQl2bW92ZSB1c3Ivc2hhcmUvZG9jL2NsYW5nCi0JCXZtb3ZlIHVzci9zaGFyZS9tYW4v bWFuMS9jbGFuZy4xCi0JfQotfQotCi1saWJjbGFuZ19wYWNrYWdlKCkgewotCXNob3J0X2Rlc2Mr PSIgLSBDIGZyb250ZW5kIHJ1bnRpbWUgbGlicmFyeSIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJdm1v dmUgInVzci9saWIvbGliY2xhbmcuc28uKiIKLQl9Ci19Ci0KLWxpYmNsYW5nLWNwcF9wYWNrYWdl KCkgewotCXNob3J0X2Rlc2MrPSIgLSBDIGZyb250ZW5kIHJ1bnRpbWUgbGlicmFyeSAoQysrIGlu dGVyZmFjZSkiCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlICJ1c3IvbGliL2xpYmNsYW5nLWNw cC5zby4qIgotCX0KLX0KLQotbGxkX3BhY2thZ2UoKSB7Ci0JbGliMzJkaXNhYmxlZD15ZXMKLQlz aG9ydF9kZXNjKz0iIC0gbGlua2VyIgotCWhvbWVwYWdlPSJodHRwczovL2xsZC5sbHZtLm9yZyIK LQlwa2dfaW5zdGFsbCgpIHsKLQkJdm1vdmUgdXNyL2Jpbi9sbGQqCi0JCXZtb3ZlIHVzci9iaW4v d2FzbS1sZAotCQl2bW92ZSB1c3IvYmluL2xkLmxsZCoKLQkJdm1vdmUgdXNyL2Jpbi9sZDY0Lmxs ZCoKLQkJdm1vdmUgdXNyL3NoYXJlL2RvYy9sbGQKLQl9Ci19Ci0KLWxsZC1kZXZlbF9wYWNrYWdl KCkgewotCWxpYjMyZGlzYWJsZWQ9eWVzCi0Jc2hvcnRfZGVzYys9IiAtIGxpbmtlciAtIGRldmVs b3BtZW50IGZpbGVzIgotCWhvbWVwYWdlPSJodHRwczovL2xsZC5sbHZtLm9yZyIKLQlkZXBlbmRz PSJsbGQ+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3Zl IHVzci9pbmNsdWRlL2xsZAotCQl2bW92ZSB1c3IvbGliL2NtYWtlL2xsZAotCQl2bW92ZSAidXNy L2xpYi9saWJsbGQqYSIKLQl9Ci19Ci0KLWxsZGJfcGFja2FnZSgpIHsKLQlsaWIzMmRpc2FibGVk PXllcwotCWRlcGVuZHMrPSIgcHl0aG9uMy1zaXgiCi0Jc2hvcnRfZGVzYys9IiAtIExMREIgZGVi dWdnZXIiCi0JaG9tZXBhZ2U9Imh0dHBzOi8vbGxkYi5sbHZtLm9yZy8iCi0JcGtnX2luc3RhbGwo KSB7Ci0JCXZtb3ZlIHVzci9iaW4vKmxsZGIqCi0JCXZtb3ZlIHVzci9saWIvbGlibGxkYipzby4q Ci0JCXZtb3ZlIC91c3IvbGliL3B5dGhvbioKLQl9Ci19Ci0KLWxsZGItZGV2ZWxfcGFja2FnZSgp IHsKLQlsaWIzMmRpc2FibGVkPXllcwotCWRlcGVuZHM9ImxsZGI+PSR7dmVyc2lvbn1fJHtyZXZp c2lvbn0iCi0Jc2hvcnRfZGVzYys9IiAtIExMREIgZGVidWdnZXIgLSBkZXZlbG9wbWVudCBmaWxl cyIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJdm1vdmUgdXNyL2luY2x1ZGUvbGxkYgotCQl2bW92ZSAi dXNyL2xpYi9saWJsbGRiKi5zbyIKLQl9Ci19Ci0KLWxsdm0tbGlidW53aW5kX3BhY2thZ2UoKSB7 Ci0Jc2hvcnRfZGVzYys9IiAtIGxpYnVud2luZCIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJdm1vdmUg InVzci9saWIvbGlidW53aW5kLnNvLioiCi0JfQotfQotCi1sbHZtLWxpYnVud2luZC1kZXZlbF9w YWNrYWdlKCkgewotCXNob3J0X2Rlc2MrPSIgLSBsaWJ1bndpbmQgLSBkZXZlbG9wbWVudCBmaWxl cyIKLQlkZXBlbmRzPSJsbHZtLWxpYnVud2luZD49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKLQlj b25mbGljdHM9ImxpYnVud2luZC1kZXZlbD49MCIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJdm1vdmUg dXNyL2xpYi9saWJ1bndpbmQuc28KLQkJdm1vdmUgdXNyL2xpYi9saWJ1bndpbmQuYQotCQl2bW92 ZSAidXNyL2luY2x1ZGUvKnVud2luZCoiCi0JCXZtb3ZlIHVzci9pbmNsdWRlL21hY2gtbwotCQl2 bW92ZSB1c3Ivc2hhcmUvZG9jL2xpYnVud2luZAotCX0KLX0KLQotbGliY3h4YWJpX3BhY2thZ2Uo KSB7Ci0Jc2hvcnRfZGVzYys9IiAtIGxvdyBsZXZlbCBzdXBwb3J0IGZvciBsaWJjKysiCi0JcGtn X2luc3RhbGwoKSB7Ci0JCXZtb3ZlICJ1c3IvbGliL2xpYmMrK2FiaS5zby4qIgotCX0KLX0KLQot bGliY3h4YWJpLWRldmVsX3BhY2thZ2UoKSB7Ci0Jc2hvcnRfZGVzYys9IiAtIGxvdyBsZXZlbCBz dXBwb3J0IGZvciBsaWJjKysgLSBkZXZlbG9wbWVudCBmaWxlcyIKLQlkZXBlbmRzPSJsaWJjeHhh Ymk+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlIHVz ci9saWIvbGliYysrYWJpLnNvCi0JCXZtb3ZlIHVzci9saWIvbGliYysrYWJpLmEKLQkJdm1vdmUg InVzci9pbmNsdWRlLypjeHhhYmkqIgotCX0KLX0KLQotbGliY3h4X3BhY2thZ2UoKSB7Ci0Jc2hv cnRfZGVzYys9IiAtIEMrKyBzdGFuZGFyZCBsaWJyYXJ5IgotCXBrZ19pbnN0YWxsKCkgewotCQl2 bW92ZSAidXNyL2xpYi9saWJjKysuc28uKiIKLQl9Ci19Ci0KLWxpYmN4eC1kZXZlbF9wYWNrYWdl KCkgewotCXNob3J0X2Rlc2MrPSIgLSBDKysgc3RhbmRhcmQgbGlicmFyeSAtIGRldmVsb3BtZW50 IGZpbGVzIgotCWRlcGVuZHM9ImxpYmN4eD49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKLQlwa2df aW5zdGFsbCgpIHsKLQkJdm1vdmUgdXNyL2xpYi9saWJjKysuc28KLQkJdm1vdmUgdXNyL2xpYi9s aWJjKysuYQotCQl2bW92ZSB1c3IvbGliL2xpYmMrK2V4cGVyaW1lbnRhbC5hCi0JCXZtb3ZlIHVz ci9pbmNsdWRlL2MrKwotCQl2bW92ZSB1c3Ivc2hhcmUvZG9jL2xpYmN4eAotCX0KLX0KLQotbGli b21wX3BhY2thZ2UoKSB7Ci0Jc2hvcnRfZGVzYys9IiAtIENsYW5nIE9wZW5NUCBzdXBwb3J0IGxp YnJhcnkiCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlIHVzci9saWIvbGlib21wLnNvCi0JCXZt b3ZlICJ1c3IvbGliL2xpYm9tcHRhcmdldC5ydGwuKi5zbyIKLQkJdm1vdmUgdXNyL2xpYi9saWJh cmNoZXIuc28KLQkJdm1vdmUgInVzci9saWIvbGlib21wKi5zby4qIgotCX0KLX0KLQotbGlib21w LWRldmVsX3BhY2thZ2UoKSB7Ci0Jc2hvcnRfZGVzYys9IiAtIENsYW5nIE9wZW5NUCBzdXBwb3J0 IGxpYnJhcnkgLSBkZXZlbG9wbWVudCBmaWxlcyIKLQlkZXBlbmRzPSJsaWJvbXA+PSR7dmVyc2lv bn1fJHtyZXZpc2lvbn0iCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlICJ1c3IvbGliL2xpYm9t cCouc28iCi0JCXZtb3ZlICJ1c3IvbGliL2xpYmFyY2hlcioiCi0JCXZtb3ZlICJ1c3IvaW5jbHVk ZS9vbXAqLmgiCi0JCXZtb3ZlICJ1c3IvbGliL2NsYW5nLyR7dmVyc2lvbn0vaW5jbHVkZS9vbXAq LmgiCi0JCXZtb3ZlIHVzci9zaGFyZS9tYW4vbWFuMS9sbHZtb3Blbm1wLjEKLQkJdm1vdmUgdXNy L3NoYXJlL2RvYy9vcGVubXAKLQl9CiB9CiAKIGxpYmxsdm0xMl9wYWNrYWdlKCkgewoKRnJvbSA4 YTAwMzNmYzcwODE5NzJlNDEwZDk4YzlmMzAzZGNjMjlmZDBjOTdkIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/TG91aXM9MjBEdXByPUMzPUE5PTIwQmVydG9uaT89CiA8 bG91aXNkYkBsZXNwZXRpdHNwZWRlc3RyZXMub3JnPgpEYXRlOiBTYXQsIDEgSmFuIDIwMjIgMTU6 NTc6NTkgKzAyMDAKU3ViamVjdDogW1BBVENIIDA0LzMwXSBydGFnczogcmVidWlsZCBmb3IgbGx2 bTEzCgotLS0KIHNyY3BrZ3MvcnRhZ3MvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwg MSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3J0YWdz L3RlbXBsYXRlIGIvc3JjcGtncy9ydGFncy90ZW1wbGF0ZQppbmRleCBiNDk2YTFiMGU3MjEuLjli MTYxZTY5MGQ3NiAxMDA2NDQKLS0tIGEvc3JjcGtncy9ydGFncy90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL3J0YWdzL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAn cnRhZ3MnCiBwa2duYW1lPXJ0YWdzCiB2ZXJzaW9uPTIuMzgKLXJldmlzaW9uPTUKK3JldmlzaW9u PTYKIGJ1aWxkX3N0eWxlPWNtYWtlCiAjIERvbid0IHJ1biB0ZXN0cyBpbiBkb19pbnN0YWxsLCBw bGVhc2UuCiBjb25maWd1cmVfYXJncz0iLURTS0lQX0NURVNUPVRSVUUiCgpGcm9tIDhhOThhMThh ODJmMjYzZWU2MmNiNDI3MWY5ZTk3MWU2YTc3ZGNkNTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206ID0/VVRGLTg/cT9Mb3Vpcz0yMER1cHI9QzM9QTk9MjBCZXJ0b25pPz0KIDxsb3Vpc2Ri QGxlc3BldGl0c3BlZGVzdHJlcy5vcmc+CkRhdGU6IFNhdCwgMSBKYW4gMjAyMiAxNTo1ODoyNyAr MDIwMApTdWJqZWN0OiBbUEFUQ0ggMDUvMzBdIGJwZnRyYWNlOiByZWJ1aWxkIGZvciBsbHZtMTMK Ci0tLQogc3JjcGtncy9icGZ0cmFjZS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAx IGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYnBmdHJh Y2UvdGVtcGxhdGUgYi9zcmNwa2dzL2JwZnRyYWNlL3RlbXBsYXRlCmluZGV4IDI4YWIzYzYyNjM5 OS4uZWIyNDgwZDIyMzBlIDEwMDY0NAotLS0gYS9zcmNwa2dzL2JwZnRyYWNlL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvYnBmdHJhY2UvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdicGZ0cmFjZScKIHBrZ25hbWU9YnBmdHJhY2UKIHZlcnNpb249MC4xNC4xCi1y ZXZpc2lvbj0xCityZXZpc2lvbj0yCiBhcmNocz0ieDg2XzY0KiBhYXJjaDY0KiBwcGM2NCoiCiBi dWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EQlVJTERfVEVTVElORz1PRkYiICAj IG5lZWRzIHJvb3QgdG8gcnVuCgpGcm9tIDAxMjU0MjlmMTEwYzc4M2Y3MWE1ZTI0ZTAzOTZmNTI0 NmM2YWVjMjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/cT9Mb3Vpcz0y MER1cHI9QzM9QTk9MjBCZXJ0b25pPz0KIDxsb3Vpc2RiQGxlc3BldGl0c3BlZGVzdHJlcy5vcmc+ CkRhdGU6IFNhdCwgMSBKYW4gMjAyMiAxNTo1ODozOCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDYv MzBdIGNsYXp5OiByZWJ1aWxkIGZvciBsbHZtMTMKCi0tLQogc3JjcGtncy9jbGF6eS90ZW1wbGF0 ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY2xhenkvdGVtcGxhdGUgYi9zcmNwa2dzL2NsYXp5L3RlbXBs YXRlCmluZGV4IDExZjNiYWI1NWFlZi4uZjgxZGUwOGFiODM2IDEwMDY0NAotLS0gYS9zcmNwa2dz L2NsYXp5L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvY2xhenkvdGVtcGxhdGUKQEAgLTEsNyArMSw3 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdjbGF6eScKIHBrZ25hbWU9Y2xhenkKIHZlcnNpb249 MS4xMQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGJ1aWxkX2hl bHBlcj1xZW11CiBob3N0bWFrZWRlcGVuZHM9Imxsdm0iCgpGcm9tIDc1Yjc5MWE4Y2JjOGUzM2M1 ZTYzMzYyMmFiZmFkN2IyMzAxMDI3ZTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206ID0/ VVRGLTg/cT9Mb3Vpcz0yMER1cHI9QzM9QTk9MjBCZXJ0b25pPz0KIDxsb3Vpc2RiQGxlc3BldGl0 c3BlZGVzdHJlcy5vcmc+CkRhdGU6IFNhdCwgMSBKYW4gMjAyMiAxNTo1ODo0OSArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMDcvMzBdIGNjbHM6IHJlYnVpbGQgZm9yIGxsdm0xMwoKLS0tCiBzcmNwa2dz L2NjbHMvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEg ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2NjbHMvdGVtcGxhdGUgYi9zcmNwa2dz L2NjbHMvdGVtcGxhdGUKaW5kZXggZmJiN2M2ODQ3YmMxLi40MGFiYTNiNTViZmUgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvY2Nscy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2NjbHMvdGVtcGxhdGUKQEAg LTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdjY2xzJwogcGtnbmFtZT1jY2xzCiB2 ZXJzaW9uPTAuMjAyMTAzMzAKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWNt YWtlCiBob3N0bWFrZWRlcGVuZHM9ImNsYW5nLXRvb2xzLWV4dHJhIgogbWFrZWRlcGVuZHM9Imxs dm0gbmN1cnNlcy1kZXZlbCByYXBpZGpzb24gemxpYi1kZXZlbCBjbGFuZy10b29scy1leHRyYSIK CkZyb20gN2U2ZWVlNTBkZDI4Njg0ZTYzZGUxM2Y0ZjNjYmUxOTMxZjA5YzI4ZSBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9xP0xvdWlzPTIwRHVwcj1DMz1BOT0yMEJlcnRv bmk/PQogPGxvdWlzZGJAbGVzcGV0aXRzcGVkZXN0cmVzLm9yZz4KRGF0ZTogU2F0LCAxIEphbiAy MDIyIDE1OjU5OjM1ICswMjAwClN1YmplY3Q6IFtQQVRDSCAwOC8zMF0gaW5jbHVkZS13aGF0LXlv dS11c2U6IHJlYnVpbGQgZm9yIGxsdm0xMwoKLS0tCiBzcmNwa2dzL2luY2x1ZGUtd2hhdC15b3Ut dXNlL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAy IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaW5jbHVkZS13aGF0LXlvdS11c2Uv dGVtcGxhdGUgYi9zcmNwa2dzL2luY2x1ZGUtd2hhdC15b3UtdXNlL3RlbXBsYXRlCmluZGV4IGIx M2JiN2VlNTZhZi4uYjRiMTY3NDAxZWJlIDEwMDY0NAotLS0gYS9zcmNwa2dzL2luY2x1ZGUtd2hh dC15b3UtdXNlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvaW5jbHVkZS13aGF0LXlvdS11c2UvdGVt cGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdpbmNsdWRlLXdoYXQt eW91LXVzZScKIHBrZ25hbWU9aW5jbHVkZS13aGF0LXlvdS11c2UKLXZlcnNpb249MC4xNgordmVy c2lvbj0wLjE3CiByZXZpc2lvbj0xCiB3cmtzcmM9IiR7cGtnbmFtZX0iCiBidWlsZF9zdHlsZT1j bWFrZQpAQCAtMTIsNyArMTIsNyBAQCBtYWludGFpbmVyPSJMZWFoIE5ldWtpcmNoZW4gPGxlYWhA dnV4dS5vcmc+IgogbGljZW5zZT0iTkNTQSIKIGhvbWVwYWdlPSJodHRwczovL2luY2x1ZGUtd2hh dC15b3UtdXNlLm9yZy8iCiBkaXN0ZmlsZXM9Imh0dHBzOi8vaW5jbHVkZS13aGF0LXlvdS11c2Uu b3JnL2Rvd25sb2Fkcy8ke3BrZ25hbWV9LSR7dmVyc2lvbn0uc3JjLnRhci5neiIKLWNoZWNrc3Vt PThkNmZjOWIyNTUzNDNiYzFlNWVjNDU5ZTM5NTEyZGYxZDUxYzYwZTAzNTYyOTg1ZTAwNzYwMzYx MTlmZjVhMWMKK2NoZWNrc3VtPWVjYTdjMDRmOGI0MTZiNjM4NWVkMDBlMzM2NjlhN2ZhNDY5M2Nk MjZjYjcyYjUyMmNkZTU1ODgyOGViMGM2NjUKIHB5dGhvbl92ZXJzaW9uPTMKIAogcG9zdF9pbnN0 YWxsKCkgewoKRnJvbSBiNWM1Yjc2MTM1NmNjODg0YTk1NzMyMmQ0ZTFjMzhmMzQ0NDI2Y2NlIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/TG91aXM9MjBEdXByPUMzPUE5 PTIwQmVydG9uaT89CiA8bG91aXNkYkBsZXNwZXRpdHNwZWRlc3RyZXMub3JnPgpEYXRlOiBTYXQs IDEgSmFuIDIwMjIgMTY6MDE6MjEgKzAyMDAKU3ViamVjdDogW1BBVENIIDA5LzMwXSBjb2RlbGl0 ZTogcmVidWlsZCBmb3IgbGx2bTEzCgotLS0KIHNyY3BrZ3MvY29kZWxpdGUvdGVtcGxhdGUgfCAy ICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL2NvZGVsaXRlL3RlbXBsYXRlIGIvc3JjcGtncy9jb2RlbGl0ZS90ZW1w bGF0ZQppbmRleCAzYTk5M2EyYzBjZmIuLjI0ZTJjODc5ZGQ0NSAxMDA2NDQKLS0tIGEvc3JjcGtn cy9jb2RlbGl0ZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2NvZGVsaXRlL3RlbXBsYXRlCkBAIC0x LDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnY29kZWxpdGUnCiBwa2duYW1lPWNvZGVs aXRlCiB2ZXJzaW9uPTE1LjAuNgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9 Y21ha2UKIGJ1aWxkX2hlbHBlcj1jbWFrZS13eFdpZGdldHMtZ3RrMwogY29uZmlndXJlX2FyZ3M9 Ii1EV0lUSF9QQ0g9MCAtRFdJVEhfV1hfQ09ORklHPXd4LWNvbmZpZy1ndGszCgpGcm9tIGZiODIz Njc0MGZkZmFkNDMzYWI3YjZhY2IxNjIwNzU0ODRmMzViNTQgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206ID0/VVRGLTg/cT9Mb3Vpcz0yMER1cHI9QzM9QTk9MjBCZXJ0b25pPz0KIDxsb3Vp c2RiQGxlc3BldGl0c3BlZGVzdHJlcy5vcmc+CkRhdGU6IFNhdCwgMSBKYW4gMjAyMiAxNjoyMjo0 OCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMTAvMzBdIGtkZXZlbG9wOiByZWJ1aWxkIGZvciBsbHZt MTMKCi0tLQogc3JjcGtncy9rZGV2ZWxvcC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2Vk LCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mva2Rl dmVsb3AvdGVtcGxhdGUgYi9zcmNwa2dzL2tkZXZlbG9wL3RlbXBsYXRlCmluZGV4IDc2YWZlMmUz NGNhMC4uZGMxZWVlNjhiOGQzIDEwMDY0NAotLS0gYS9zcmNwa2dzL2tkZXZlbG9wL3RlbXBsYXRl CisrKyBiL3NyY3BrZ3Mva2RldmVsb3AvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdrZGV2ZWxvcCcKIHBrZ25hbWU9a2RldmVsb3AKIHZlcnNpb249MjEuMTIu MgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9h cmdzPSItREJVSUxEX1RFU1RJTkc9T0ZGIgogaG9zdG1ha2VkZXBlbmRzPSJleHRyYS1jbWFrZS1t b2R1bGVzIHF0NS1xbWFrZSBxdDUtaG9zdC10b29scyBxdDUtdG9vbHMKCkZyb20gZDRkY2RiYzU2 M2Y1M2ZmYjJkNTQ4OGY3ZmI1NWYzZGFhZmI2YmFkYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogPT9VVEYtOD9xP0xvdWlzPTIwRHVwcj1DMz1BOT0yMEJlcnRvbmk/PQogPGxvdWlzZGJA bGVzcGV0aXRzcGVkZXN0cmVzLm9yZz4KRGF0ZTogU2F0LCAxIEphbiAyMDIyIDE2OjIzOjA3ICsw MjAwClN1YmplY3Q6IFtQQVRDSCAxMS8zMF0ganVDaSsrOiByZWJ1aWxkIGZvciBsbHZtMTMKCi0t LQogc3JjcGtncy9qdUNpKysvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNl cnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2p1Q2krKy90ZW1w bGF0ZSBiL3NyY3BrZ3MvanVDaSsrL3RlbXBsYXRlCmluZGV4IDFhNzYwNGI0NGEwMC4uNTEwMzMy NGRlYzIwIDEwMDY0NAotLS0gYS9zcmNwa2dzL2p1Q2krKy90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L2p1Q2krKy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2p1 Q2krKycKIHBrZ25hbWU9anVDaSsrCiB2ZXJzaW9uPTEuNi4yCi1yZXZpc2lvbj0yCityZXZpc2lv bj0zCiBfbGliY2xhbmdtbV9jb21taXQ9ImIzNDJmNGRkNmRlNGZlNTA5YTY5MmE0YjRmY2ZjN2Uy NGFhZTk1OTAiCiBfdGlueV9jb21taXQ9ImM5YzhiZjgxMGRkYWQ4Y2QxNzg4MmI5YTllZTYyOGE2 OTBlNzc5ZjUiCiB3cmtzcmM9Imp1Y2lwcC12JHt2ZXJzaW9ufSIKCkZyb20gMjQyYTJhNzljOGVm ZTg4NDZkODYwNTZmNGYxNDkwYmJmZTU3MWE3YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogPT9VVEYtOD9xP0xvdWlzPTIwRHVwcj1DMz1BOT0yMEJlcnRvbmk/PQogPGxvdWlzZGJAbGVz cGV0aXRzcGVkZXN0cmVzLm9yZz4KRGF0ZTogU2F0LCAxIEphbiAyMDIyIDE4OjMwOjAxICswMjAw ClN1YmplY3Q6IFtQQVRDSCAxMi8zMF0gbGx2bTEzOiBmaXggbGlib21wKiBwYWNrYWdlcwoKLS0t CiBzcmNwa2dzL2xsdm0xMy90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5z ZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMy90 ZW1wbGF0ZSBiL3NyY3BrZ3MvbGx2bTEzL3RlbXBsYXRlCmluZGV4IDA4ZDg0NzQ3MjUyNS4uYmZj OTEwNTZkMjc3IDEwMDY0NAotLS0gYS9zcmNwa2dzL2xsdm0xMy90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL2xsdm0xMy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J2xsdm0xMycKIHBrZ25hbWU9bGx2bTEzCiB2ZXJzaW9uPTEzLjAuMAotcmV2aXNpb249MQorcmV2 aXNpb249Mgogd3Jrc3JjPSJsbHZtLXByb2plY3QtJHt2ZXJzaW9ufS5zcmMiCiBidWlsZF93cmtz cmM9bGx2bQogYnVpbGRfc3R5bGU9Y21ha2UKQEAgLTM5Nyw2ICszOTcsNyBAQCBsaWJvbXBfcGFj a2FnZSgpIHsKIAlzaG9ydF9kZXNjKz0iIC0gQ2xhbmcgT3Blbk1QIHN1cHBvcnQgbGlicmFyeSIK IAlwa2dfaW5zdGFsbCgpIHsKIAkJdm1vdmUgdXNyL2xpYi9saWJvbXAuc28KKwkJdm1vdmUgdXNy L2xpYi9saWJvbXB0YXJnZXQuc28KIAkJdm1vdmUgInVzci9saWIvbGlib21wdGFyZ2V0LnJ0bC4q LnNvIgogCQl2bW92ZSB1c3IvbGliL2xpYmFyY2hlci5zbwogCX0KQEAgLTQwNiw3ICs0MDcsNiBA QCBsaWJvbXAtZGV2ZWxfcGFja2FnZSgpIHsKIAlzaG9ydF9kZXNjKz0iIC0gQ2xhbmcgT3Blbk1Q IHN1cHBvcnQgbGlicmFyeSAtIGRldmVsb3BtZW50IGZpbGVzIgogCWRlcGVuZHM9ImxpYm9tcD49 JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKIAlwa2dfaW5zdGFsbCgpIHsKLQkJdm1vdmUgInVzci9s aWIvbGlib21wKi5zbyIKIAkJdm1vdmUgInVzci9saWIvbGliYXJjaGVyKiIKIAkJdm1vdmUgInVz ci9pbmNsdWRlL29tcCouaCIKIAkJdm1vdmUgInVzci9saWIvY2xhbmcvJHt2ZXJzaW9ufS9pbmNs dWRlL29tcCouaCIKCkZyb20gZWQ5YThkOTk2ZDQ3NWRiMzUxYWJjYTgyOTE0Mzk1Y2Y0Zjg1MTk3 MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9xP0xvdWlzPTIwRHVwcj1D Mz1BOT0yMEJlcnRvbmk/PQogPGxvdWlzZGJAbGVzcGV0aXRzcGVkZXN0cmVzLm9yZz4KRGF0ZTog U3VuLCAxNiBKYW4gMjAyMiAxNDozMzo1NiArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMTMvMzBdIGNo cm9taXVtOiByZWJ1aWxkIGZvciBsbHZtMTMKCi0tLQogc3JjcGtncy9jaHJvbWl1bS90ZW1wbGF0 ZSB8IDggKy0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgNyBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Nocm9taXVtL3RlbXBsYXRlIGIvc3JjcGtncy9j aHJvbWl1bS90ZW1wbGF0ZQppbmRleCA5MmM0OGU1NTA1OTkuLjI0MzkyNTExZmY5YSAxMDA2NDQK LS0tIGEvc3JjcGtncy9jaHJvbWl1bS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2Nocm9taXVtL3Rl bXBsYXRlCkBAIC0yMCw3ICsyMCw3IEBAIGRlc2Nfb3B0aW9uX2RlYnVnPSJCdWlsZCB3aXRoIGRl YnVnIHN5bWJvbHMiCiBkZXNjX29wdGlvbl9qc19vcHRpbWl6ZT0iT3B0aW1pemUgdGhlIEpTIHVz ZWQgZm9yIENocm9taXVtJ3MgVUkiCiBkZXNjX29wdGlvbl9waXBld2lyZT0iRW5hYmxlIHN1cHBv cnQgZm9yIHNjcmVlbiBzaGFyaW5nIGZvciBXZWJSVEMgdmlhIFBpcGVXaXJlIgogCi1ob3N0bWFr ZWRlcGVuZHM9IiQodm9wdF9pZiBjbGFuZyAiY2xhbmcgbGxkIGxsdm0xMiIpIHB5dGhvbiBweXRo b24zIHBrZ2NvbmYgcGVybCBncGVyZiBiaXNvbiBuaW5qYSBub2RlanMgaHdpZHMKK2hvc3RtYWtl ZGVwZW5kcz0iJCh2b3B0X2lmIGNsYW5nICJjbGFuZyBsbGQgbGx2bTEzIikgcHl0aG9uIHB5dGhv bjMgcGtnY29uZiBwZXJsIGdwZXJmIGJpc29uIG5pbmphIG5vZGVqcyBod2lkcwogIGxpYmF0b21p Yy1kZXZlbCBsaWJldmVudC1kZXZlbCBsaWJnbGliLWRldmVsICQodm9wdF9pZiBqc19vcHRpbWl6 ZSBvcGVuamRrKSB3YXlsYW5kLWRldmVsIGxpYmVwb3h5LWRldmVsIgogbWFrZWRlcGVuZHM9Imxp YnBuZy1kZXZlbCBndGsrLWRldmVsIGd0ayszLWRldmVsIG5zcy1kZXZlbCBwY2l1dGlscy1kZXZl bAogIGxpYlhpLWRldmVsIGxpYmdjcnlwdC1kZXZlbCBsaWJnbm9tZS1rZXlyaW5nLWRldmVsIGN1 cHMtZGV2ZWwgZWxmdXRpbHMtZGV2ZWwKQEAgLTI2NywxMiArMjY3LDYgQEAgZG9fY29uZmlndXJl KCkgewogCQknZGlzYWJsZV9maWVsZHRyaWFsX3Rlc3RpbmdfY29uZmlnPXRydWUnCiAKIAkJJ2lz X29mZmljaWFsX2J1aWxkPXRydWUnCi0KLQkJIyBzZWdmYXVsdHMgd2l0aCBsbHZtLTEyLjAuMQot CQknaXNfY2ZpPWZhbHNlJwotCQkndXNlX3RoaW5fbHRvPWZhbHNlJwotCQkndXNlX2NmaV9pY2Fs bD1mYWxzZScKLQkJJ2Nocm9tZV9wZ29fcGhhc2U9MCcKIAkpCiAKIAlpZiBbICIkQ1JPU1NfQlVJ TEQiIF07IHRoZW4KCkZyb20gYTVlMWI1MmFiMWE5NjVmYzEzODVjZDMyMmRkYjJlZTYzZjMyOTJm YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9xP0xvdWlzPTIwRHVwcj1D Mz1BOT0yMEJlcnRvbmk/PQogPGxvdWlzZGJAbGVzcGV0aXRzcGVkZXN0cmVzLm9yZz4KRGF0ZTog U3VuLCAxNiBKYW4gMjAyMiAxNDozOTowNCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMTQvMzBdIGxs dm0xMjogcmVtb3ZlCgotLS0KIHNyY3BrZ3MvbGx2bTEyL0lOU1RBTEwubXNnICAgICAgICAgICAg ICAgICAgICB8ICAgMSArCiAuLi4vbGx2bTEyL2ZpbGVzL2xsdm0tQ29uZmlnLWxsdm0tY29uZmln LmggICAgfCAgIDkgLS0KIHNyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGx2bS0wMDEtbXVzbC5wYXRj aCAgICB8ICA1NyAtLS0tLS0tLS0KIC4uLi9wYXRjaGVzL2xsdm0tMDAyLW11c2wtcHBjNjQtZWxm djIucGF0Y2ggICB8ICAzMCAtLS0tLQogLi4uL3BhdGNoZXMvbGx2bS0wMDMtcHBjLXNlY3VyZXBs dC5wYXRjaCAgICAgIHwgIDExIC0tCiAuLi4vcGF0Y2hlcy9sbHZtLTAwNC1vdmVycmlkZS1vcHQu cGF0Y2ggICAgICAgfCAgMTggLS0tCiAuLi4vbGx2bTEyL3BhdGNoZXMvbGx2bS0wMDUtcHBjLWJp Z3BpYy5wYXRjaCAgfCAgMzYgLS0tLS0tCiAuLi4vcGF0Y2hlcy9sbHZtLTAwNi1hYXJjaDY0LW1m X2V4ZWMucGF0Y2ggICAgfCAgMjUgLS0tLQogc3JjcGtncy9sbHZtMTIvdGVtcGxhdGUgICAgICAg ICAgICAgICAgICAgICAgIHwgMTIwICstLS0tLS0tLS0tLS0tLS0tLQogc3JjcGtncy9sbHZtMTIv dXBkYXRlICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzIC0KIDEwIGZpbGVzIGNoYW5nZWQs IDUgaW5zZXJ0aW9ucygrKSwgMzA1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Y3BrZ3MvbGx2bTEyL0lOU1RBTEwubXNnCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZt MTIvZmlsZXMvbGx2bS1Db25maWctbGx2bS1jb25maWcuaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNy Y3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGx2bS0wMDEtbXVzbC5wYXRjaAogZGVsZXRlIG1vZGUgMTAw NjQ0IHNyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGx2bS0wMDItbXVzbC1wcGM2NC1lbGZ2Mi5wYXRj aAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGx2bS0wMDMtcHBj LXNlY3VyZXBsdC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEyL3BhdGNo ZXMvbGx2bS0wMDQtb3ZlcnJpZGUtb3B0LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtn cy9sbHZtMTIvcGF0Y2hlcy9sbHZtLTAwNS1wcGMtYmlncGljLnBhdGNoCiBkZWxldGUgbW9kZSAx MDA2NDQgc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9sbHZtLTAwNi1hYXJjaDY0LW1mX2V4ZWMucGF0 Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi91cGRhdGUKCmRpZmYgLS1naXQg YS9zcmNwa2dzL2xsdm0xMi9JTlNUQUxMLm1zZyBiL3NyY3BrZ3MvbGx2bTEyL0lOU1RBTEwubXNn Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDA0YWNmN2I1MzBjCi0t LSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9sbHZtMTIvSU5TVEFMTC5tc2cKQEAgLTAsMCArMSBA QAorbGx2bTEyIGlzIG5vIGxvbmdlciBwcm92aWRlZCBieSBWb2lkIExpbnV4CmRpZmYgLS1naXQg YS9zcmNwa2dzL2xsdm0xMi9maWxlcy9sbHZtLUNvbmZpZy1sbHZtLWNvbmZpZy5oIGIvc3JjcGtn cy9sbHZtMTIvZmlsZXMvbGx2bS1Db25maWctbGx2bS1jb25maWcuaApkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMmZhMDhjOWJlNjk2Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9s bHZtMTIvZmlsZXMvbGx2bS1Db25maWctbGx2bS1jb25maWcuaAorKysgL2Rldi9udWxsCkBAIC0x LDkgKzAsMCBAQAotI2luY2x1ZGUgPGJpdHMvd29yZHNpemUuaD4KLQotI2lmIF9fV09SRFNJWkUg PT0gMzIKLSNpbmNsdWRlICJsbHZtLWNvbmZpZy0zMi5oIgotI2VsaWYgX19XT1JEU0laRSA9PSA2 NAotI2luY2x1ZGUgImxsdm0tY29uZmlnLTY0LmgiCi0jZWxzZQotI2Vycm9yICJVbmtub3duIHdv cmQgc2l6ZSIKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9sbHZt LTAwMS1tdXNsLnBhdGNoIGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9sbHZtLTAwMS1tdXNsLnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMmEzZjhkNjI4MTMuLjAwMDAwMDAw MDAwMAotLS0gYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xsdm0tMDAxLW11c2wucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1Gcm9tIGZhY2EzZmJkMTVkMGMzMTA4NDkzYzNj NTRjZDkzMTM4ZTA0OWFjNDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmRyZWEg QnJhbmNhbGVvbmkgPG1pd2F4ZUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDggU2VwIDIwMTUgMjI6 MDM6MDIgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAzLzNdIG11c2wKLQotLS0tCi0gaW5jbHVkZS9s bHZtL0FuYWx5c2lzL1RhcmdldExpYnJhcnlJbmZvLmggfCA5ICsrKysrKysrKwotIGxpYi9TdXBw b3J0L0R5bmFtaWNMaWJyYXJ5LmNwcCAgICAgICAgICAgIHwgMiArLQotIGxpYi9TdXBwb3J0L1Vu aXgvU2lnbmFscy5pbmMgICAgICAgICAgICAgIHwgNiArKystLS0KLSB1dGlscy91bml0dGVzdC9n b29nbGV0ZXN0L3NyYy9ndGVzdC5jYyAgICB8IDEgKwotIDUgZmlsZXMgY2hhbmdlZCwgMTcgaW5z ZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGx2bS9B bmFseXNpcy9UYXJnZXRMaWJyYXJ5SW5mby5oIGIvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1Rhcmdl dExpYnJhcnlJbmZvLmgKLWluZGV4IDM0YThhMWUzLi4xMjE0ZWNlNSAxMDA2NDQKLS0tLSBhL2xs dm0vaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1RhcmdldExpYnJhcnlJbmZvLmgKLSsrKyBiL2xsdm0v aW5jbHVkZS9sbHZtL0FuYWx5c2lzL1RhcmdldExpYnJhcnlJbmZvLmgKLUBAIC0xOCw2ICsxOCwx NSBAQAotICNpbmNsdWRlICJsbHZtL0lSL1Bhc3NNYW5hZ2VyLmgiCi0gI2luY2x1ZGUgImxsdm0v UGFzcy5oIgotIAotKyN1bmRlZiBmb3BlbjY0Ci0rI3VuZGVmIGZzZWVrbzY0Ci0rI3VuZGVmIGZz dGF0NjQKLSsjdW5kZWYgZnN0YXR2ZnM2NAotKyN1bmRlZiBmdGVsbG82NAotKyN1bmRlZiBsc3Rh dDY0Ci0rI3VuZGVmIHN0YXQ2NAotKyN1bmRlZiB0bXBmaWxlNjQKLSsKLSBuYW1lc3BhY2UgbGx2 bSB7Ci0gdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEFycmF5UmVmOwotIGNsYXNzIFRyaXBs ZTsKLWRpZmYgLS1naXQgYS9saWIvU3VwcG9ydC9Vbml4L0R5bmFtaWNMaWJyYXJ5LmluYyBiL2xp Yi9TdXBwb3J0L1VuaXgvRHluYW1pY0xpYnJhcnkuaW5jCi1pbmRleCBhMmEzNzk5Ni4uMmY4NmM0 NzAgMTAwNjQ0Ci0tLS0gYS9sbHZtL2xpYi9TdXBwb3J0L1VuaXgvRHluYW1pY0xpYnJhcnkuaW5j Ci0rKysgYi9sbHZtL2xpYi9TdXBwb3J0L1VuaXgvRHluYW1pY0xpYnJhcnkuaW5jCi1AQCAtMTAy LDcgKzEwMiw3IEBAIHN0YXRpYyB2b2lkICpEb1NlYXJjaChjb25zdCBjaGFyKiBTeW1ib2xOYW1l KSB7Ci0gCi0gLy8gVGhpcyBtYWNybyByZXR1cm5zIHRoZSBhZGRyZXNzIG9mIGEgd2VsbC1rbm93 biwgZXhwbGljaXQgc3ltYm9sCi0gI2RlZmluZSBFWFBMSUNJVF9TWU1CT0woU1lNKSBcCi0tICAg aWYgKCFzdHJjbXAoU3ltYm9sTmFtZSwgI1NZTSkpIHJldHVybiAmU1lNCi0rICAgaWYgKCFzdHJj bXAoU3ltYm9sTmFtZSwgI1NZTSkpIHJldHVybiAodm9pZCAqKSZTWU0KLSAKLSAvLyBVbmRlciBn bGliYyB3ZSBoYXZlIGEgd2VpcmQgc2l0dWF0aW9uLiBUaGUgc3RkZXJyL291dC9pbiBzeW1ib2xz IGFyZSBib3RoCi0gLy8gbWFjcm9zIGFuZCBnbG9iYWwgdmFyaWFibGVzIGJlY2F1c2Ugb2Ygc3Rh bmRhcmRzIHJlcXVpcmVtZW50cy4gU28sIHdlCi1kaWZmIC0tZ2l0IGEvdXRpbHMvdW5pdHRlc3Qv Z29vZ2xldGVzdC9zcmMvZ3Rlc3QuY2MgYi91dGlscy91bml0dGVzdC9nb29nbGV0ZXN0L3NyYy9n dGVzdC5jYwotaW5kZXggZDg4MmFiMmUuLmYxZmIxMmQwIDEwMDY0NAotLS0tIGEvbGx2bS91dGls cy91bml0dGVzdC9nb29nbGV0ZXN0L3NyYy9ndGVzdC5jYwotKysrIGIvbGx2bS91dGlscy91bml0 dGVzdC9nb29nbGV0ZXN0L3NyYy9ndGVzdC5jYwotQEAgLTEyOCw2ICsxMjgsNyBAQAotIAotICNp ZiBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCi0gIyBpbmNsdWRlIDxhcnBhL2luZXQuaD4gIC8v IE5PTElOVAotKyMgaW5jbHVkZSA8c3lzL3NvY2tldC5oPiAgLy8gTk9MSU5UCi0gIyBpbmNsdWRl IDxuZXRkYi5oPiAgLy8gTk9MSU5UCi0gIyBpbmNsdWRlIDxzeXMvc29ja2V0Lmg+ICAvLyBOT0xJ TlQKLSAjIGluY2x1ZGUgPHN5cy90eXBlcy5oPiAgLy8gTk9MSU5UCmRpZmYgLS1naXQgYS9zcmNw a2dzL2xsdm0xMi9wYXRjaGVzL2xsdm0tMDAyLW11c2wtcHBjNjQtZWxmdjIucGF0Y2ggYi9zcmNw a2dzL2xsdm0xMi9wYXRjaGVzL2xsdm0tMDAyLW11c2wtcHBjNjQtZWxmdjIucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwNzFkOTY0YmQzNy4uMDAwMDAwMDAwMDAwCi0tLSBh L3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGx2bS0wMDItbXVzbC1wcGM2NC1lbGZ2Mi5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVRoaXMgcGF0Y2hlcyBMTFZNIHRvIHVzZSBF TEZ2MiBvbiBwcGM2NCB1bmNvbmRpdGlvbmFsbHkgdW5sZXNzIG92ZXJyaWRkZW4uIFdlCi1uZWVk IHRoaXMgYmVjYXVzZSB1bmxpa2UgbW9zdCBkaXN0cm9zIHdlIHVzZSBFTEZ2MiBmb3IgYm90aCBn bGliYyBhbmQgbXVzbAotb24gYmlnIGVuZGlhbiBwcGM2NC4KLQotZGlmZiAtLWdpdCBhL2xpYi9U YXJnZXQvUG93ZXJQQy9QUENUYXJnZXRNYWNoaW5lLmNwcCBiL2xpYi9UYXJnZXQvUG93ZXJQQy9Q UENUYXJnZXRNYWNoaW5lLmNwcAotaW5kZXggMDYzNDgzM2UuLmI3Y2JjMmU3IDEwMDY0NAotLS0t IGEvbGx2bS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDVGFyZ2V0TWFjaGluZS5jcHAKLSsrKyBiL2xs dm0vbGliL1RhcmdldC9Qb3dlclBDL1BQQ1RhcmdldE1hY2hpbmUuY3BwCi1AQCAtMjIyLDkgKzIy Miw4IEBAIHN0YXRpYyBQUENUYXJnZXRNYWNoaW5lOjpQUENBQkkgY29tcHV0ZVRhcmdldEFCSShj b25zdCBUcmlwbGUgJlRULAotIAotICAgc3dpdGNoIChUVC5nZXRBcmNoKCkpIHsKLSAgIGNhc2Ug VHJpcGxlOjpwcGM2NGxlOgotLSAgICByZXR1cm4gUFBDVGFyZ2V0TWFjaGluZTo6UFBDX0FCSV9F TEZ2MjsKLSAgIGNhc2UgVHJpcGxlOjpwcGM2NDoKLS0gICAgcmV0dXJuIFBQQ1RhcmdldE1hY2hp bmU6OlBQQ19BQklfRUxGdjE7Ci0rICAgIHJldHVybiBQUENUYXJnZXRNYWNoaW5lOjpQUENfQUJJ X0VMRnYyOwotICAgZGVmYXVsdDoKLSAgICAgcmV0dXJuIFBQQ1RhcmdldE1hY2hpbmU6OlBQQ19B QklfVU5LTk9XTjsKLSAgIH0KLWRpZmYgLS1naXQgYS90ZXN0L0NvZGVHZW4vUG93ZXJQQy9wcGM2 NC1lbGYtYWJpLmxsIGIvdGVzdC9Db2RlR2VuL1Bvd2VyUEMvcHBjNjQtZWxmLWFiaS5sbAotaW5k ZXggOGIxY2Y2YjUuLjI5NmEyYWZhIDEwMDY0NAotLS0tIGEvbGx2bS90ZXN0L0NvZGVHZW4vUG93 ZXJQQy9wcGM2NC1lbGYtYWJpLmxsCi0rKysgYi9sbHZtL3Rlc3QvQ29kZUdlbi9Qb3dlclBDL3Bw YzY0LWVsZi1hYmkubGwKLUBAIC0xLDQgKzEsNSBAQAotLTsgUlVOOiBsbGMgLXZlcmlmeS1tYWNo aW5laW5zdHJzIC1tdHJpcGxlPXBvd2VycGM2NC11bmtub3duLWxpbnV4LWdudSA8ICVzIHwgRmls ZUNoZWNrICVzIC1jaGVjay1wcmVmaXg9Q0hFQ0stRUxGdjEKLSs7IFJVTjogbGxjIC12ZXJpZnkt bWFjaGluZWluc3RycyAtbXRyaXBsZT1wb3dlcnBjNjQtdW5rbm93bi1saW51eC1nbnUgPCAlcyB8 IEZpbGVDaGVjayAlcyAtY2hlY2stcHJlZml4PUNIRUNLLUVMRnYyCi0rOyBSVU46IGxsYyAtdmVy aWZ5LW1hY2hpbmVpbnN0cnMgLW10cmlwbGU9cG93ZXJwYzY0LXVua25vd24tbGludXgtbXVzbCA8 ICVzIHwgRmlsZUNoZWNrICVzIC1jaGVjay1wcmVmaXg9Q0hFQ0stRUxGdjIKLSA7IFJVTjogbGxj IC12ZXJpZnktbWFjaGluZWluc3RycyAtbXRyaXBsZT1wb3dlcnBjNjQtdW5rbm93bi1saW51eC1n bnUgLXRhcmdldC1hYmkgZWxmdjEgPCAlcyB8IEZpbGVDaGVjayAlcyAtY2hlY2stcHJlZml4PUNI RUNLLUVMRnYxCi0gOyBSVU46IGxsYyAtdmVyaWZ5LW1hY2hpbmVpbnN0cnMgLW10cmlwbGU9cG93 ZXJwYzY0LXVua25vd24tbGludXgtZ251IC10YXJnZXQtYWJpIGVsZnYyIDwgJXMgfCBGaWxlQ2hl Y2sgJXMgLWNoZWNrLXByZWZpeD1DSEVDSy1FTEZ2MgotIDsgUlVOOiBsbGMgLXZlcmlmeS1tYWNo aW5laW5zdHJzIC1tdHJpcGxlPXBvd2VycGM2NGxlLXVua25vd24tbGludXgtZ251IDwgJXMgfCBG aWxlQ2hlY2sgJXMgLWNoZWNrLXByZWZpeD1DSEVDSy1FTEZ2MgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9sbHZtMTIvcGF0Y2hlcy9sbHZtLTAwMy1wcGMtc2VjdXJlcGx0LnBhdGNoIGIvc3JjcGtncy9s bHZtMTIvcGF0Y2hlcy9sbHZtLTAwMy1wcGMtc2VjdXJlcGx0LnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCBiNWQxNTk3NDM3NWQuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dz L2xsdm0xMi9wYXRjaGVzL2xsdm0tMDAzLXBwYy1zZWN1cmVwbHQucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSwxMSArMCwwIEBACi0tLS0gYS9sbHZtL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENTdWJ0 YXJnZXQuY3BwCi0rKysgYi9sbHZtL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENTdWJ0YXJnZXQuY3Bw Ci1AQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgUFBDU3VidGFyZ2V0Ojppbml0U3VidGFyZ2V0RmVh dHVyZXMoU3RyaW5nUmVmIENQVSwgU3RyaW5nUmVmIEZTKSB7Ci0gCi0gICBpZiAoKFRhcmdldFRy aXBsZS5pc09TRnJlZUJTRCgpICYmIFRhcmdldFRyaXBsZS5nZXRPU01ham9yVmVyc2lvbigpID49 IDEzKSB8fAotICAgICAgIFRhcmdldFRyaXBsZS5pc09TTmV0QlNEKCkgfHwgVGFyZ2V0VHJpcGxl LmlzT1NPcGVuQlNEKCkgfHwKLS0gICAgICBUYXJnZXRUcmlwbGUuaXNNdXNsKCkpCi0rICAgICAg aXNUYXJnZXRMaW51eCgpKQotICAgICBTZWN1cmVQbHQgPSB0cnVlOwotIAotICAgaWYgKEhhc1NQ RSAmJiBJc1BQQzY0KQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9sbHZtLTAw NC1vdmVycmlkZS1vcHQucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xsdm0tMDA0LW92 ZXJyaWRlLW9wdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTFkMGU0YjMx YjMyLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9sbHZtLTAwNC1v dmVycmlkZS1vcHQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1UaGlzIGFs bG93cyB1cyB0byBvdmVycmlkZSB0aGUgb3B0aW1pemF0aW9uIGxldmVsIGFzIG5vdCBhbGwgcGxh dGZvcm1zIGNhbgotZGVhbCB3aXRoIC1PMy4KLQotLS0tIGEvbGx2bS9DTWFrZUxpc3RzLnR4dAot KysrIGIvbGx2bS9DTWFrZUxpc3RzLnR4dAotQEAgLTkxOCw2ICs5MTgsMTIgQEAgaWYoIE1JTkdX IEFORCBOT1QgIiR7Q01BS0VfQ1hYX0NPTVBJTEVSX0lEfSIgTUFUQ0hFUyAiQ2xhbmciICkKLSAg IGxsdm1fcmVwbGFjZV9jb21waWxlcl9vcHRpb24oQ01BS0VfQ1hYX0ZMQUdTX1JFTEVBU0UgIi1P MyIgIi1PMiIpCi0gZW5kaWYoKQotIAotK3NldChWT0lEX0NYWF9PUFRfRkxBR1MgIiIgQ0FDSEUg U1RSSU5HICJPcHRpbWl6YXRpb24gbGV2ZWwgdG8gdXNlIikKLSsKLStpZiAoTk9UIFZPSURfQ1hY X09QVF9GTEFHUyBTVFJFUVVBTCAiIikKLSsgICAgbGx2bV9yZXBsYWNlX2NvbXBpbGVyX29wdGlv bihDTUFLRV9DWFhfRkxBR1NfUkVMRUFTRSAiLU8zIiAiJHtWT0lEX0NYWF9PUFRfRkxBR1N9IikK LStlbmRpZigpCi0rCi0gIyBQdXQgdGhpcyBiZWZvcmUgdGJsZ2VuLiBFbHNlIHdlIGhhdmUgYSBj aXJjdWxhciBkZXBlbmRlbmNlLgotIGFkZF9zdWJkaXJlY3RvcnkobGliL0RlbWFuZ2xlKQotIGFk ZF9zdWJkaXJlY3RvcnkobGliL1N1cHBvcnQpCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMi9w YXRjaGVzL2xsdm0tMDA1LXBwYy1iaWdwaWMucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMi9wYXRjaGVz L2xsdm0tMDA1LXBwYy1iaWdwaWMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IGQzMzI2ODdiOWQ5Mi4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMv bGx2bS0wMDUtcHBjLWJpZ3BpYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAK LUZyb20gZjNkYmRkNDljMDZiZmFmYzFkNjEzODA5NGNmNDI4ODljMTRkMzhiNiBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKLUZyb206IFNhbXVlbCBIb2xsYW5kIDxzYW11ZWxAc2hvbGxhbmQub3Jn PgotRGF0ZTogU3VuLCAzIE5vdiAyMDE5IDEwOjU3OjI3IC0wNjAwCi1TdWJqZWN0OiBbUEFUQ0hd IFtMTFZNXVtQb3dlclBDXSBBc3N1bWUgQmlnUElDIGlmIG5vIFBJQyBsZXZlbCBpcyBzcGVjaWZp ZWQKLQotLS0tCi0gbGx2bS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDQXNtUHJpbnRlci5jcHAgIHwg MiArLQotIGxsdm0vbGliL1RhcmdldC9Qb3dlclBDL1BQQ01DSW5zdExvd2VyLmNwcCB8IDIgKy0K LSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlm ZiAtLWdpdCBhL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENBc21QcmludGVyLmNwcCBiL2xpYi9UYXJn ZXQvUG93ZXJQQy9QUENBc21QcmludGVyLmNwcAotaW5kZXggY2NlMjFmMzIuLjg3Y2E1ZjliIDEw MDY0NAotLS0tIGEvbGx2bS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDQXNtUHJpbnRlci5jcHAKLSsr KyBiL2xsdm0vbGliL1RhcmdldC9Qb3dlclBDL1BQQ0FzbVByaW50ZXIuY3BwCi1AQCAtNTIwLDcg KzUyMCw3IEBAIHZvaWQgUFBDQXNtUHJpbnRlcjo6RW1pdFRsc0NhbGwoY29uc3QgTWFjaGluZUlu c3RyICpNSSwKLSAKLSAgIC8vIEFkZCAzMjc2OCBvZmZzZXQgdG8gdGhlIHN5bWJvbCBzbyB3ZSBm b2xsb3cgdXAgdGhlIGxhdGVzdCBHT1QvUExUIEFCSS4KLSAgIGlmIChLaW5kID09IE1DU3ltYm9s UmVmRXhwcjo6VktfUExUICYmIFN1YnRhcmdldC0+aXNTZWN1cmVQbHQoKSAmJgotLSAgICAgIE0t PmdldFBJQ0xldmVsKCkgPT0gUElDTGV2ZWw6OkJpZ1BJQykKLSsgICAgICBNLT5nZXRQSUNMZXZl bCgpICE9IFBJQ0xldmVsOjpTbWFsbFBJQykKLSAgICAgVGxzUmVmID0gTUNCaW5hcnlFeHByOjpj cmVhdGVBZGQoCi0gICAgICAgICBUbHNSZWYsIE1DQ29uc3RhbnRFeHByOjpjcmVhdGUoMzI3Njgs IE91dENvbnRleHQpLCBPdXRDb250ZXh0KTsKLSAgIGNvbnN0IE1hY2hpbmVPcGVyYW5kICZNTyA9 IE1JLT5nZXRPcGVyYW5kKDIpOwotZGlmZiAtLWdpdCBhL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENN Q0luc3RMb3dlci5jcHAgYi9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDTUNJbnN0TG93ZXIuY3BwCi1p bmRleCA1Y2MxODBkNy4uYTViMDI1NjUgMTAwNjQ0Ci0tLS0gYS9sbHZtL2xpYi9UYXJnZXQvUG93 ZXJQQy9QUENNQ0luc3RMb3dlci5jcHAKLSsrKyBiL2xsdm0vbGliL1RhcmdldC9Qb3dlclBDL1BQ Q01DSW5zdExvd2VyLmNwcAotQEAgLTExNyw3ICsxMTcsNyBAQCBzdGF0aWMgTUNPcGVyYW5kIEdl dFN5bWJvbFJlZihjb25zdCBNYWNoaW5lT3BlcmFuZCAmTU8sIGNvbnN0IE1DU3ltYm9sICpTeW1i b2wsCi0gICBjb25zdCBNQ0V4cHIgKkV4cHIgPSBNQ1N5bWJvbFJlZkV4cHI6OmNyZWF0ZShTeW1i b2wsIFJlZktpbmQsIEN0eCk7Ci0gICAvLyBJZiAtbXNlY3VyZS1wbHQgLWZQSUMsIGFkZCAzMjc2 OCB0byBzeW1ib2wuCi0gICBpZiAoU3VidGFyZ2V0LT5pc1NlY3VyZVBsdCgpICYmIFRNLmlzUG9z aXRpb25JbmRlcGVuZGVudCgpICYmCi0tICAgICAgTS0+Z2V0UElDTGV2ZWwoKSA9PSBQSUNMZXZl bDo6QmlnUElDICYmCi0rICAgICAgTS0+Z2V0UElDTGV2ZWwoKSAhPSBQSUNMZXZlbDo6U21hbGxQ SUMgJiYKLSAgICAgICBNTy5nZXRUYXJnZXRGbGFncygpID09IFBQQ0lJOjpNT19QTFQpCi0gICAg IEV4cHIgPQotICAgICAgICAgTUNCaW5hcnlFeHByOjpjcmVhdGVBZGQoRXhwciwgTUNDb25zdGFu dEV4cHI6OmNyZWF0ZSgzMjc2OCwgQ3R4KSwgQ3R4KTsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2 bTEyL3BhdGNoZXMvbGx2bS0wMDYtYWFyY2g2NC1tZl9leGVjLnBhdGNoIGIvc3JjcGtncy9sbHZt MTIvcGF0Y2hlcy9sbHZtLTAwNi1hYXJjaDY0LW1mX2V4ZWMucGF0Y2gKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IGEwMGFiZDIxNjY2NS4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3Mv bGx2bTEyL3BhdGNoZXMvbGx2bS0wMDYtYWFyY2g2NC1tZl9leGVjLnBhdGNoCisrKyAvZGV2L251 bGwKQEAgLTEsMjUgKzAsMCBAQAotRml4IGZhaWx1cmVzIGluIEFsbG9jYXRpb25UZXN0cy9NYXBw ZWRNZW1vcnlUZXN0Liogb24gYWFyY2g2NDoKLQotICAgIEZhaWxpbmcgVGVzdHMgKDgpOgotICAg ICAgICBMTFZNLVVuaXQgOjogU3VwcG9ydC8uL1N1cHBvcnRUZXN0cy9BbGxvY2F0aW9uVGVzdHMv TWFwcGVkTWVtb3J5VGVzdC5BbGxvY0FuZFJlbGVhc2UvMwotICAgICAgICBMTFZNLVVuaXQgOjog U3VwcG9ydC8uL1N1cHBvcnRUZXN0cy9BbGxvY2F0aW9uVGVzdHMvTWFwcGVkTWVtb3J5VGVzdC5E dXBsaWNhdGVOZWFyLzMKLSAgICAgICAgTExWTS1Vbml0IDo6IFN1cHBvcnQvLi9TdXBwb3J0VGVz dHMvQWxsb2NhdGlvblRlc3RzL01hcHBlZE1lbW9yeVRlc3QuRW5hYmxlZFdyaXRlLzMKLSAgICAg ICAgTExWTS1Vbml0IDo6IFN1cHBvcnQvLi9TdXBwb3J0VGVzdHMvQWxsb2NhdGlvblRlc3RzL01h cHBlZE1lbW9yeVRlc3QuTXVsdGlwbGVBbGxvY0FuZFJlbGVhc2UvMwotICAgICAgICBMTFZNLVVu aXQgOjogU3VwcG9ydC8uL1N1cHBvcnRUZXN0cy9BbGxvY2F0aW9uVGVzdHMvTWFwcGVkTWVtb3J5 VGVzdC5TdWNjZXNzaXZlTmVhci8zCi0gICAgICAgIExMVk0tVW5pdCA6OiBTdXBwb3J0Ly4vU3Vw cG9ydFRlc3RzL0FsbG9jYXRpb25UZXN0cy9NYXBwZWRNZW1vcnlUZXN0LlVuYWxpZ25lZE5lYXIv MwotICAgICAgICBMTFZNLVVuaXQgOjogU3VwcG9ydC8uL1N1cHBvcnRUZXN0cy9BbGxvY2F0aW9u VGVzdHMvTWFwcGVkTWVtb3J5VGVzdC5aZXJvTmVhci8zCi0gICAgICAgIExMVk0tVW5pdCA6OiBT dXBwb3J0Ly4vU3VwcG9ydFRlc3RzL0FsbG9jYXRpb25UZXN0cy9NYXBwZWRNZW1vcnlUZXN0Llpl cm9TaXplTmVhci8zCi0KLVVwc3RyZWFtLUlzc3VlOiBodHRwczovL2J1Z3MubGx2bS5vcmcvc2hv d19idWcuY2dpP2lkPTE0Mjc4I2MxMAotCi0tLS0gYS9sbHZtL2xpYi9TdXBwb3J0L1VuaXgvTWVt b3J5LmluYwotKysrIGIvbGx2bS9saWIvU3VwcG9ydC9Vbml4L01lbW9yeS5pbmMKLUBAIC01OCw3 ICs1OCw3IEBAIHN0YXRpYyBpbnQgZ2V0UG9zaXhQcm90ZWN0aW9uRmxhZ3ModW5zaWduZWQgRmxh Z3MpIHsKLSAgICAgcmV0dXJuIFBST1RfUkVBRCB8IFBST1RfV1JJVEUgfCBQUk9UX0VYRUM7Ci0g ICBjYXNlIGxsdm06OnN5czo6TWVtb3J5OjpNRl9FWEVDOgotICNpZiAoZGVmaW5lZChfX0ZyZWVC U0RfXykgfHwgZGVmaW5lZChfX1BPV0VSUENfXykgfHwgZGVmaW5lZCAoX19wcGNfXykgfHwgXAot LSAgICAgZGVmaW5lZChfUE9XRVIpIHx8IGRlZmluZWQoX0FSQ0hfUFBDKSkKLSsgICAgIGRlZmlu ZWQoX1BPV0VSKSB8fCBkZWZpbmVkKF9BUkNIX1BQQykgfHwgKGRlZmluZWQoX19saW51eF9fKSAm JiBkZWZpbmVkKF9fYWFyY2g2NF9fKSkpCi0gICAgIC8vIE9uIFBvd2VyUEMsIGhhdmluZyBhbiBl eGVjdXRhYmxlIHBhZ2UgdGhhdCBoYXMgbm8gcmVhZCBwZXJtaXNzaW9uCi0gICAgIC8vIGNhbiBo YXZlIHVuaW50ZW5kZWQgY29uc2VxdWVuY2VzLiAgVGhlIGZ1bmN0aW9uIEludmFsaWRhdGVJbnN0 cnVjdGlvbi0KLSAgICAgLy8gQ2FjaGUgdXNlcyBpbnN0cnVjdGlvbnMgZGNiZiBhbmQgaWNiaSwg Ym90aCBvZiB3aGljaCBhcmUgdHJlYXRlZCBieQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTIv dGVtcGxhdGUgYi9zcmNwa2dzL2xsdm0xMi90ZW1wbGF0ZQppbmRleCA3YjM2MWJiYmY1YmMuLmU3 ZTQwY2FlNDEzZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9sbHZtMTIvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9sbHZtMTIvdGVtcGxhdGUKQEAgLTEsMTI1ICsxLDEzIEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICdsbHZtMTInCiBwa2duYW1lPWxsdm0xMgogdmVyc2lvbj0xMi4wLjEKLXJldmlzaW9uPTMK LXdya3NyYz0ibGx2bS1wcm9qZWN0LSR7dmVyc2lvbn0uc3JjIgotYnVpbGRfd3Jrc3JjPWxsdm0K LWJ1aWxkX3N0eWxlPWNtYWtlCi1jb25maWd1cmVfYXJncz0iCi0gLURDTUFLRV9CVUlMRF9UWVBF PVJlbGVhc2UgLVduby1kZXYKLSAtREVOQUJMRV9MSU5LRVJfQlVJTERfSUQ9WUVTCi0gLURMTFZN X0lOQ0xVREVfRE9DUz1ZRVMKLSAtRExMVk1fQlVJTERfRE9DUz1ZRVMKLSAtRExMVk1fRU5BQkxF X1NQSElOWD1ZRVMKLSAtRFNQSElOWF9XQVJOSU5HU19BU19FUlJPUlM9Tk8KLSAtRExMVk1fQlVJ TERfTExWTV9EWUxJQj1ZRVMKLSAtRExMVk1fTElOS19MTFZNX0RZTElCPVlFUwotIC1ETExWTV9F TkFCTEVfUlRUST1ZRVMKLSAtRExMVk1fRU5BQkxFX0ZGST1ZRVMKLSAtRExMVk1fQklOVVRJTFNf SU5DRElSPS91c3IvaW5jbHVkZSIKLWhvc3RtYWtlZGVwZW5kcz0icGVybCBweXRob24zIHpsaWIt ZGV2ZWwgbGliZmZpLWRldmVsIHN3aWcgcHl0aG9uMy1TcGhpbngKLSBweXRob24zLXJlY29tbW9u bWFyayBweXRob24zLXNwaGlueC1hdXRvbW9kYXBpIgotbWFrZWRlcGVuZHM9InB5dGhvbjMtZGV2 ZWwgemxpYi1kZXZlbCBlbGZ1dGlscy1kZXZlbCBsaWJmZmktZGV2ZWwgbGliZWRpdC1kZXZlbAot IGxpYnhtbDItZGV2ZWwgYmludXRpbHMtZGV2ZWwgbGliYXRvbWljLWRldmVsIgotZGVwZW5kcz0i bGlibGx2bTEyPj0ke3ZlcnNpb259XyR7cmV2aXNpb259Igotc2hvcnRfZGVzYz0iTG93IExldmVs IFZpcnR1YWwgTWFjaGluZSIKK3JldmlzaW9uPTQKK2J1aWxkX3N0eWxlPW1ldGEKK3Nob3J0X2Rl c2M9IkxvdyBMZXZlbCBWaXJ0dWFsIE1hY2hpbmUgKHJlbW92ZWQgcGFja2FnZSkiCiBtYWludGFp bmVyPSJxNjYgPGRhbmllbEBvY3RhZm9yZ2Uub3JnPiIKLWxpY2Vuc2U9IkFwYWNoZS0yLjAiCits aWNlbnNlPSJtZXRhcGFja2FnZSIKIGhvbWVwYWdlPSJodHRwczovL3d3dy5sbHZtLm9yZyIKLWRp c3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL2xsdm0vbGx2bS1wcm9qZWN0L3JlbGVhc2VzL2Rv d25sb2FkL2xsdm1vcmctJHt2ZXJzaW9ufS9sbHZtLXByb2plY3QtJHt2ZXJzaW9ufS5zcmMudGFy Lnh6IgotY2hlY2tzdW09MTI5Y2IyNWNkMTM2NzdhYWQ5NTFjZTVjMmRlYjBmZTRhZmMxZTlkOTg5 NTBmNTNiNTFiZGNmYjVhNzNhZmEwZQotbGliMzJkaXNhYmxlZD15ZXMKLXB5dGhvbl92ZXJzaW9u PTMKLQotaWYgWyAiJFhCUFNfVEFSR0VUX0xJQkMiID0gIm11c2wiIF07IHRoZW4KLQljb25maWd1 cmVfYXJncys9IiAtRExJQkNYWF9IQVNfTVVTTF9MSUJDPVlFUyIKLQltYWtlZGVwZW5kcys9IiBs aWJleGVjaW5mby1kZXZlbCIKLQlkZXBlbmRzKz0iIGxpYmV4ZWNpbmZvLWRldmVsIgotZmkKLQot IyAib3BlcmFuZCBvdXQgb2YgcmFuZ2UiIGFzc2VtYmxlciBmYWlsdXJlcwotY2FzZSAiJFhCUFNf VEFSR0VUX01BQ0hJTkUiIGluCi0JcHBjNjQqKSA7OwotCXBwYyopIGNvbmZpZ3VyZV9hcmdzKz0i IC1EQ0xBTkdfRU5BQkxFX0NMQU5HRD1PRkYiIDs7Ci1lc2FjCi0KLXBvc3RfcGF0Y2goKSB7Ci0J IyB1cGRhdGUgY29uZmlnLmd1ZXNzIGZvciBiZXR0ZXIgcGxhdGZvcm0gZGV0ZWN0aW9uCi0JY3Ag JFhCUFNfQ09NTU9ORElSL2Vudmlyb25tZW50L2NvbmZpZ3VyZS9hdXRvbWFrZS9jb25maWcuZ3Vl c3MgXAotCQkke3dya3NyY30vbGx2bS9jbWFrZQotfQotCi1wcmVfY29uZmlndXJlKCkgewotCWxv Y2FsIHRyaXBsZXQKLQotCSMgVmFzdGx5IHJlZHVjZSBzaXplIG9mIGRlYnVnZ2luZyBzeW1ib2xz OgotCUNGTEFHUz0ke0NGTEFHUy8gLWcvIC1nMX0KLQlDWFhGTEFHUz0ke0NYWEZMQUdTLyAtZy8g LWcxfQotCi0JIyBzaW5jZSBnY2M5LCB0aGUgYnVpbGQgbGlrZXMgdG8gYmxvdyB1cCBmb3IgcHBj MzIgYXBwYXJlbnRseSBiZWNhdXNlCi0JIyBvZiBjbGFuZyBiZWluZyB0b28gbGFyZ2UgZm9yIGEg MjQtYml0IHJlbGF0aXZlIGNhbGwgdG8gdGhlIFBMVCwgc28KLQkjIG9wdGltaXplIGZvciBzaXpl IGluc3RlYWQKLQljYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KLQkJcHBjNjQqKSA7Owot CQltaXBzKi1tdXNsfHBwYyopIGNvbmZpZ3VyZV9hcmdzKz0iIC1EVk9JRF9DWFhfT1BUX0ZMQUdT PS1PcyIgOzsKLQllc2FjCi0KLQlpZiBbICIkQ1JPU1NfQlVJTEQiIF07IHRoZW4KLQkJbXNnX25v cm1hbCAiQnVpbGRpbmcgaG9zdCB0YmxnZW5cbiIKLQkJbWtkaXIgLXAgYnVpbGQvSE9TVAotCQlj ZCBidWlsZC9IT1NUCi0JCUNDPSIkQlVJTERfQ0MiIENYWD0iJEJVSUxEX0NYWCIgQ0ZMQUdTPSIk QlVJTERfQ0ZMQUdTIiBcCi0JCQlDWFhGTEFHUz0iJEJVSUxEX0NYWEZMQUdTIiBMREZMQUdTPSIk QlVJTERfTERGTEFHUyIgXAotCQkJY21ha2UgLi4vLi4gLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVh c2UgXAotCQkJLURMTFZNX0VOQUJMRV9QUk9KRUNUUz0ke19lbmFibGVkX3Byb2plY3RzfQotCQlt YWtlICR7bWFrZWpvYnN9IC1DIHV0aWxzL1RhYmxlR2VuCi0JCVsgIiRfbGxkYl9lbmFibGUiID0g InllcyIgXSAmJiBtYWtlICR7bWFrZWpvYnN9IC1DIHRvb2xzL2xsZGIvdXRpbHMvVGFibGVHZW4K LQkJY29uZmlndXJlX2FyZ3MrPSIgLURMTFZNX1RBQkxFR0VOPSR7d3Jrc3JjfS9sbHZtL2J1aWxk L0hPU1QvYmluL2xsdm0tdGJsZ2VuIgotCQlbICIkX2xsZGJfZW5hYmxlIiA9ICJ5ZXMiIF0gJiYg Y29uZmlndXJlX2FyZ3MrPSIgLURMTERCX1RBQkxFR0VOPSR7d3Jrc3JjfS9sbHZtL2J1aWxkL0hP U1QvYmluL2xsZGItdGJsZ2VuIgotCQljZCAuLi8uLgotCWZpCi0KLQljYXNlICIkWEJQU19UQVJH RVRfTUFDSElORSIgaW4KLQkJaTY4NiopIF9hcmNoPSJYODYiOzsKLQkJeDg2XzY0KikgX2FyY2g9 Ilg4NiI7OwotCQlhcm12NSopIF9hcmNoPSJBcm12NXRlIjs7Ci0JCWFybXY2KikgX2FyY2g9IkFy bXY2Ijs7Ci0JCWFybXY3KikgX2FyY2g9IkFybXY3Ijs7Ci0JCWFhcmNoNjQqKSBfYXJjaD0iQUFy Y2g2NCI7OwotCQltaXBzKikgX2FyY2g9Ik1pcHMiOzsKLQkJcHBjKikgX2FyY2g9IlBvd2VyUEMi OzsKLQkJcmlzY3Y2NCopIF9hcmNoPSJSSVNDVjY0Ijs7Ci0JZXNhYwotCi0JdHJpcGxldD0ke1hC UFNfQ1JPU1NfVFJJUExFVDotJFhCUFNfVFJJUExFVH0KLQotCWNvbmZpZ3VyZV9hcmdzKz0iIC1E TExWTV9UQVJHRVRfQVJDSD0ke19hcmNofSIKLQljb25maWd1cmVfYXJncys9IiAtRExMVk1fSE9T VF9UUklQTEU9JHt0cmlwbGV0fSIKLQljb25maWd1cmVfYXJncys9IiAtRExMVk1fREVGQVVMVF9U QVJHRVRfVFJJUExFPSR7dHJpcGxldH0iCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JY2QgYnVpbGQK LQljbWFrZSAtRENNQUtFX0lOU1RBTExfUFJFRklYPSR7REVTVERJUn0vdXNyIC1QIGNtYWtlX2lu c3RhbGwuY21ha2UKLQotCSMgUmVxdWlyZWQgZm9yIG11bHRpbGliLgotCWlmIFsgIiRYQlBTX1RB UkdFVF9NQUNISU5FIiA9ICJ4ODZfNjQiIF07IHRoZW4KLQkJZm9yIF9oZWFkZXIgaW4gbGx2bS1j b25maWc7IGRvCi0JCQltdiAke0RFU1RESVJ9L3Vzci9pbmNsdWRlL2xsdm0vQ29uZmlnLyR7X2hl YWRlcn17LC02NH0uaAotCQkJdmluc3RhbGwgJHtGSUxFU0RJUn0vbGx2bS1Db25maWctJHtfaGVh ZGVyfS5oIDY0NCBcCi0JCQkJdXNyL2luY2x1ZGUvbGx2bS9Db25maWcgJHtfaGVhZGVyfS5oCi0J CWRvbmUKLQlmaQotCi0JIyBSZW1vdmUgbGx2bS1jb25maWctaG9zdCBpbiBjcm9zcyBidWlsZHMu Ci0JaWYgWyAiJENST1NTX0JVSUxEIiBdOyB0aGVuCi0JCXJtIC1mICR7REVTVERJUn0vdXNyL2Jp bi9sbHZtLWNvbmZpZy1ob3N0Ci0JZmkKLX0KIAogbGlibGx2bTEyX3BhY2thZ2UoKSB7CiAJc2hv cnRfZGVzYys9IiAtIHJ1bnRpbWUgbGlicmFyeSIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJdm1vdmUg InVzci9saWIvbGliTExWTS0qLnNvKiIKLQl9CiB9CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0x Mi91cGRhdGUgYi9zcmNwa2dzL2xsdm0xMi91cGRhdGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IGU5NWNmMjZiMzU4Ni4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvbGx2bTEyL3Vw ZGF0ZQorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotc2l0ZT0iaHR0cHM6Ly9naXRodWIu Y29tL2xsdm0vbGx2bS1wcm9qZWN0L3JlbGVhc2VzIgotcGF0dGVybj0ibGx2bW9yZy1cSyhcZCsu KXsyfVxkKygtcmNcZCspPyIKLWlnbm9yZT0iKi1yYyoiCgpGcm9tIGViNTBkZTA1M2Q0YTZlNmNk YjA1YzhlOTZmNzRkOGZiMGM4ZGJlY2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206ID0/ VVRGLTg/cT9BbmRyPUMzPUE5PTIwQ2VycXVlaXJhPz0gPGFjZXJxdWVpcmEwMjFAZ21haWwuY29t PgpEYXRlOiBNb24sIDI4IEZlYiAyMDIyIDIxOjQyOjU1ICswMDAwClN1YmplY3Q6IFtQQVRDSCAx NS8zMF0gbWVzYTogcmVidWlsZCBmb3IgbGx2bTEzCgotLS0KIHNyY3BrZ3MvbWVzYS90ZW1wbGF0 ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbWVzYS90ZW1wbGF0ZSBiL3NyY3BrZ3MvbWVzYS90ZW1wbGF0 ZQppbmRleCBlYjgxY2JiMzQ1YTUuLmQwNDk5YmE5ZmJjYSAxMDA2NDQKLS0tIGEvc3JjcGtncy9t ZXNhL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbWVzYS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21lc2EnCiBwa2duYW1lPW1lc2EKIHZlcnNpb249MjEuMy41 Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgogY29uZmlndXJlX2Fy Z3M9Ii1EZ2x2bmQ9dHJ1ZSAtRHNoYXJlZC1nbGFwaT1lbmFibGVkIC1EZ2JtPWVuYWJsZWQgLURl Z2w9ZW5hYmxlZAogIC1Eb3NtZXNhPXRydWUgLURnbGVzMT1lbmFibGVkIC1EZ2xlczI9ZW5hYmxl ZCAtRGdseD1kcmkgLURkcmkzPWVuYWJsZWQKCkZyb20gOTUwMDgzNDUwMTZhYjgwMWM1ODkxZTZl YTk0YjBkNTM2NTBiNjVkMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9x P0FuZHI9QzM9QTk9MjBDZXJxdWVpcmE/PSA8YWNlcnF1ZWlyYTAyMUBnbWFpbC5jb20+CkRhdGU6 IE1vbiwgMjggRmViIDIwMjIgMjE6NDM6NTYgKzAwMDAKU3ViamVjdDogW1BBVENIIDE2LzMwXSBx dGNyZWF0b3I6IHVwZGF0ZSB0byA2LjAuMi4KCi0tLQogc3JjcGtncy9xdGNyZWF0b3IvdGVtcGxh dGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkK CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0Y3JlYXRvci90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXRjcmVh dG9yL3RlbXBsYXRlCmluZGV4IDk4ODQ5MWVjNjQ5Ni4uYjE2NmNjMDVhOTk5IDEwMDY0NAotLS0g YS9zcmNwa2dzL3F0Y3JlYXRvci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0Y3JlYXRvci90ZW1w bGF0ZQpAQCAtNSw3ICs1LDcgQEAgcmV2aXNpb249MQogd3Jrc3JjPSJxdC1jcmVhdG9yLW9wZW5z b3VyY2Utc3JjLSR7dmVyc2lvbn0iCiBidWlsZF9zdHlsZT1xbWFrZQogbWFrZV9pbnN0YWxsX2Fy Z3M9IklOU1RBTExfUk9PVD1cJHtERVNURElSfS91c3IiCi1ob3N0bWFrZWRlcGVuZHM9ImNsYW5n IGxsdm0gcGVybCBwa2ctY29uZmlnIHB5dGhvbjMgd2hpY2ggcXQ1LXFtYWtlCitob3N0bWFrZWRl cGVuZHM9Imxsdm0xMyBwZXJsIHBrZy1jb25maWcgcHl0aG9uMyB3aGljaCBxdDUtcW1ha2UKICBx dDUtaG9zdC10b29scyIKIG1ha2VkZXBlbmRzPSJxdDUtZGVjbGFyYXRpdmUtZGV2ZWwgcXQ1LXNj cmlwdC1kZXZlbCBxdDUtdG9vbHMtZGV2ZWwKICBxdDUtcXVpY2tjb250cm9scyBxdDUtc3ZnLWRl dmVsIGNsYW5nIGxsdm0iCgpGcm9tIGFjODY2NjI0MTVkNTQ5ODc5MDE5MGY5MmYwZmZmYWJlODUz NjExODEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/cT9BbmRyPUMzPUE5 PTIwQ2VycXVlaXJhPz0gPGFjZXJxdWVpcmEwMjFAZ21haWwuY29tPgpEYXRlOiBNb24sIDI4IEZl YiAyMDIyIDIxOjQ2OjQ4ICswMDAwClN1YmplY3Q6IFtQQVRDSCAxNy8zMF0gaXNwYzogdXBkYXRl IHRvIDEuMTcuMC4KCi0tLQogLi4uL2lzcGMvcGF0Y2hlcy9jbWFrZS1idWlsZC10eXBlLW5vbmUu cGF0Y2ggIHwgICAxOCAtCiBzcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDAxLnBhdGNoICAg ICAgICAgfCAgIDU3IC0KIHNyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDIucGF0Y2ggICAg ICAgICB8ICA5MjMgLS0tLS0tLS0KIHNyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDMucGF0 Y2ggICAgICAgICB8IDE1MDQgLS0tLS0tLS0tLS0tCiBzcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZt MTItMDA0LnBhdGNoICAgICAgICAgfCAgIDM0IC0KIHNyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0x Mi0wMDUucGF0Y2ggICAgICAgICB8ICAzNzIgLS0tCiBzcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZt MTItMDA2LnBhdGNoICAgICAgICAgfCAgMTI2IC0KIHNyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0x Mi0wMDcucGF0Y2ggICAgICAgICB8ICAxNjAgLS0KIHNyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0x Mi0wMDgucGF0Y2ggICAgICAgICB8ICAxNDkgLS0KIHNyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0x Mi0wMDkucGF0Y2ggICAgICAgICB8IDIxMDkgLS0tLS0tLS0tLS0tLS0tLS0KIHNyY3BrZ3MvaXNw Yy90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDggKy0KIDExIGZpbGVzIGNo YW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNTQ1NiBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEw MDY0NCBzcmNwa2dzL2lzcGMvcGF0Y2hlcy9jbWFrZS1idWlsZC10eXBlLW5vbmUucGF0Y2gKIGRl bGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDAxLnBhdGNoCiBk ZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwMi5wYXRjaAog ZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDMucGF0Y2gK IGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA0LnBhdGNo CiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwNS5wYXRj aAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDYucGF0 Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA3LnBh dGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwOC5w YXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDku cGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9jbWFrZS1idWlsZC10eXBl LW5vbmUucGF0Y2ggYi9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9jbWFrZS1idWlsZC10eXBlLW5vbmUu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxMWUzNTNjNzMxNC4uMDAwMDAw MDAwMDAwCi0tLSBhL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2NtYWtlLWJ1aWxkLXR5cGUtbm9uZS5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLUluZGV4OiBpc3BjLTEuMTUuMC9D TWFrZUxpc3RzLnR4dAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGlzcGMtMS4xNS4wLm9yaWcvQ01ha2VMaXN0 cy50eHQKLSsrKyBpc3BjLTEuMTUuMC9DTWFrZUxpc3RzLnR4dAotQEAgLTE1NywxMyArMTU3LDYg QEAgc2V0KE9VVFBVVF9SRUxFQVNFIFJlbGVhc2UvYmluKQotIHNldChDTUFLRV9SVU5USU1FX09V VFBVVF9ESVJFQ1RPUlkgJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L2JpbiApCi0gCi0gaWYo Q01BS0VfQlVJTERfVFlQRSkKLS0gICAgIyBWYWxpZGF0ZSBidWlsZCB0eXBlCi0tICAgIHNldChD T05GSUdVUkFUSU9OX1RZUEVTICJEZWJ1ZztSZWxlYXNlO1JlbFdpdGhEZWJJbmZvIikKLS0KLS0g ICAgc3RyaW5nKEZJTkQgIiR7Q09ORklHVVJBVElPTl9UWVBFU30iICIke0NNQUtFX0JVSUxEX1RZ UEV9IiBNQVRDSEVEX0NPTkZJRykKLS0gICAgaWYgKCR7TUFUQ0hFRF9DT05GSUd9IEVRVUFMIC0x KQotLSAgICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIkNNQUtFX0JVSUxEX1RZUEUgKCR7Q01B S0VfQlVJTERfVFlQRX0pIGFsbG93cyBvbmx5IHRoZSBmb2xsb3dpbmcgdmFsdWVzOiAke0NPTkZJ R1VSQVRJT05fVFlQRVN9IikKLS0gICAgZW5kaWYoKQotIGVsc2UoTk9UIENNQUtFX0JVSUxEX1RZ UEUpCi0gICAgIHNldChDTUFLRV9CVUlMRF9UWVBFICJSZWxlYXNlIikKLSAgICAgbWVzc2FnZShT VEFUVVMgIkJ1aWxkIHR5cGUgbm90IHNwZWNpZmllZDogVXNlIFJlbGVhc2UgYnkgZGVmYXVsdC4i KQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwMS5wYXRjaCBiL3Ny Y3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDVmMmQzZjVhNDA5ZS4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvaXNwYy9w YXRjaGVzL2xsdm0xMi0wMDEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1G cm9tIDFjMGY4OWRjY2I3NzRmMjE2YzdmNmU3NmE5OWVlOTA3YTFlNjQxY2IgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCi1Gcm9tOiBEbWl0cnkgQmFib2tpbiA8ZG1pdHJ5LnkuYmFib2tpbkBpbnRl bC5jb20+Ci1EYXRlOiBUdWUsIDIyIERlYyAyMDIwIDE3OjAzOjU5IC0wODAwCi1TdWJqZWN0OiBb UEFUQ0hdIEZpeCB0byB3b3JrIHdpdGggTExWTSB0cnVuayBhZnRlciBsbHZtL2xsdm0tcHJvamVj dEA0MWMzYjI3MTMKLQotLS0tCi0gc3JjL2N0eC5jcHAgfCAxOCArKysrKysrKysrKystLS0tLS0K LSAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlm ZiAtLWdpdCBhL3NyYy9jdHguY3BwIGIvc3JjL2N0eC5jcHAKLWluZGV4IDZmYmI4YjljZi4uOTc3 ZTlkMjIyIDEwMDY0NAotLS0tIGEvc3JjL2N0eC5jcHAKLSsrKyBiL3NyYy9jdHguY3BwCi1AQCAt MTQ3MywxMSArMTQ3MywxNSBAQCB2b2lkIEZ1bmN0aW9uRW1pdENvbnRleHQ6OkFkZERlYnVnUG9z KGxsdm06OlZhbHVlICp2YWx1ZSwgY29uc3QgU291cmNlUG9zICpwb3MsCi0gICAgIGxsdm06Oklu c3RydWN0aW9uICppbnN0ID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6SW5zdHJ1Y3Rpb24+KHZhbHVl KTsKLSAgICAgaWYgKGluc3QgIT0gTlVMTCAmJiBtLT5kaUJ1aWxkZXIpIHsKLSAgICAgICAgIFNv dXJjZVBvcyBwID0gcG9zID8gKnBvcyA6IGN1cnJlbnRQb3M7Ci0tICAgICAgICBpZiAocC5maXJz dF9saW5lICE9IDApCi0rICAgICAgICBpZiAocC5maXJzdF9saW5lICE9IDApIHsKLSAgICAgICAg ICAgICAvLyBJZiBmaXJzdF9saW5lID09IDAsIHRoZW4gd2UncmUgaW4gdGhlIG1pZGRsZSBvZiBz ZXR0aW5nIHVwCi0gICAgICAgICAgICAgLy8gdGhlIHN0YW5kYXJkIGxpYnJhcnkgb3IgdGhlIGxp a2U7IGRvbid0IGFkZCBkZWJ1ZyBwb3NpdGlvbnMKLSAgICAgICAgICAgICAvLyBmb3IgdGhvc2Ug ZnVuY3Rpb25zCi0tICAgICAgICAgICAgaW5zdC0+c2V0RGVidWdMb2MobGx2bTo6RGVidWdMb2M6 OmdldChwLmZpcnN0X2xpbmUsIHAuZmlyc3RfY29sdW1uLCBzY29wZSA/IHNjb3BlIDogR2V0RElT Y29wZSgpKSk7Ci0rICAgICAgICAgICAgc2NvcGUgPSBzY29wZSA/IHNjb3BlIDogR2V0RElTY29w ZSgpOwotKyAgICAgICAgICAgIGxsdm06OkRlYnVnTG9jIGRpTG9jID0KLSsgICAgICAgICAgICAg ICAgbGx2bTo6RElMb2NhdGlvbjo6Z2V0KHNjb3BlLT5nZXRDb250ZXh0KCksIHAuZmlyc3RfbGlu ZSwgcC5maXJzdF9jb2x1bW4sIHNjb3BlLCBudWxscHRyLCBmYWxzZSk7Ci0rICAgICAgICAgICAg aW5zdC0+c2V0RGVidWdMb2MoZGlMb2MpOwotKyAgICAgICAgfQotICAgICB9Ci0gfQotIAotQEAg LTE1MTgsOSArMTUyMiwxMCBAQCB2b2lkIEZ1bmN0aW9uRW1pdENvbnRleHQ6OkVtaXRWYXJpYWJs ZURlYnVnSW5mbyhTeW1ib2wgKnN5bSkgewotICAgICBsbHZtOjpESUxvY2FsVmFyaWFibGUgKnZh ciA9IG0tPmRpQnVpbGRlci0+Y3JlYXRlQXV0b1ZhcmlhYmxlKAotICAgICAgICAgc2NvcGUsIHN5 bS0+bmFtZSwgc3ltLT5wb3MuR2V0RElGaWxlKCksIHN5bS0+cG9zLmZpcnN0X2xpbmUsIGRpVHlw ZSwgdHJ1ZSAvKiBwcmVzZXJ2ZSB0aHJvdWdoIG9wdHMgKi8pOwotIAotKyAgICBsbHZtOjpEZWJ1 Z0xvYyBkaUxvYyA9Ci0rICAgICAgICBsbHZtOjpESUxvY2F0aW9uOjpnZXQoc2NvcGUtPmdldENv bnRleHQoKSwgc3ltLT5wb3MuZmlyc3RfbGluZSwgc3ltLT5wb3MuZmlyc3RfY29sdW1uLCBzY29w ZSwgbnVsbHB0ciwgZmFsc2UpOwotICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqZGVjbGFyZUluc3Qg PQotLSAgICAgICAgbS0+ZGlCdWlsZGVyLT5pbnNlcnREZWNsYXJlKHN5bS0+c3RvcmFnZVB0ciwg dmFyLCBtLT5kaUJ1aWxkZXItPmNyZWF0ZUV4cHJlc3Npb24oKSwKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsbHZtOjpEZWJ1Z0xvYzo6Z2V0KHN5bS0+cG9zLmZpcnN0X2xp bmUsIHN5bS0+cG9zLmZpcnN0X2NvbHVtbiwgc2NvcGUpLCBiYmxvY2spOwotKyAgICAgICAgbS0+ ZGlCdWlsZGVyLT5pbnNlcnREZWNsYXJlKHN5bS0+c3RvcmFnZVB0ciwgdmFyLCBtLT5kaUJ1aWxk ZXItPmNyZWF0ZUV4cHJlc3Npb24oKSwgZGlMb2MsIGJibG9jayk7Ci0gICAgIEFkZERlYnVnUG9z KGRlY2xhcmVJbnN0LCAmc3ltLT5wb3MsIHNjb3BlKTsKLSB9Ci0gCi1AQCAtMTUzNSw5ICsxNTQw LDEwIEBAIHZvaWQgRnVuY3Rpb25FbWl0Q29udGV4dDo6RW1pdEZ1bmN0aW9uUGFyYW1ldGVyRGVi dWdJbmZvKFN5bWJvbCAqc3ltLCBpbnQgYXJnTnVtCi0gICAgICAgICBtLT5kaUJ1aWxkZXItPmNy ZWF0ZVBhcmFtZXRlclZhcmlhYmxlKHNjb3BlLCBzeW0tPm5hbWUsIGFyZ051bSArIDEsIHN5bS0+ cG9zLkdldERJRmlsZSgpLCBzeW0tPnBvcy5maXJzdF9saW5lLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaVR5cGUsIHRydWUgLyogcHJlc2VydmUgdGhy b3VnaCBvcHRzICovLCBmbGFncyk7Ci0gCi0rICAgIGxsdm06OkRlYnVnTG9jIGRpTG9jID0KLSsg ICAgICAgIGxsdm06OkRJTG9jYXRpb246OmdldChzY29wZS0+Z2V0Q29udGV4dCgpLCBzeW0tPnBv cy5maXJzdF9saW5lLCBzeW0tPnBvcy5maXJzdF9jb2x1bW4sIHNjb3BlLCBudWxscHRyLCBmYWxz ZSk7Ci0gICAgIGxsdm06Okluc3RydWN0aW9uICpkZWNsYXJlSW5zdCA9Ci0tICAgICAgICBtLT5k aUJ1aWxkZXItPmluc2VydERlY2xhcmUoc3ltLT5zdG9yYWdlUHRyLCB2YXIsIG0tPmRpQnVpbGRl ci0+Y3JlYXRlRXhwcmVzc2lvbigpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxsdm06OkRlYnVnTG9jOjpnZXQoc3ltLT5wb3MuZmlyc3RfbGluZSwgc3ltLT5wb3MuZmly c3RfY29sdW1uLCBzY29wZSksIGJibG9jayk7Ci0rICAgICAgICBtLT5kaUJ1aWxkZXItPmluc2Vy dERlY2xhcmUoc3ltLT5zdG9yYWdlUHRyLCB2YXIsIG0tPmRpQnVpbGRlci0+Y3JlYXRlRXhwcmVz c2lvbigpLCBkaUxvYywgYmJsb2NrKTsKLSAgICAgQWRkRGVidWdQb3MoZGVjbGFyZUluc3QsICZz eW0tPnBvcywgc2NvcGUpOwotIH0KLSAKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaXNwYy9wYXRjaGVz L2xsdm0xMi0wMDIucGF0Y2ggYi9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDAyLnBhdGNo CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTAzZjMwZGExMGQuLjAwMDAwMDAwMDAw MAotLS0gYS9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDAyLnBhdGNoCisrKyAvZGV2L251 bGwKQEAgLTEsOTIzICswLDAgQEAKLUZyb20gMDU5N2E3OWQwODRjMDE0NzgwMTM2ZGE5MDZhZmUy MWQxNWU5ODJjYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlZXBha1JhamVuZHJh a3VtYXJhbiA8ZGVlcGFrLnJhamVuZHJha3VtYXJhbkBpbnRlbC5jb20+Ci1EYXRlOiBUdWUsIDUg SmFuIDIwMjEgMTM6NTM6MzAgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gUmVtb3ZlIExMVk0gOC4w IGFuZCBMTFZNIDkuMC4gKCMxOTY2KQotCi0tLS0KLSAuYXBwdmV5b3IueW1sICAgICAgICAgICAg ICAgICAgICAgICAgfCAgMyAtLQotIC50cmF2aXMueW1sICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICA3IC0tLQotIENNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgICAgICB8IDEyICsr LS0tLQotIHNyYy9hc3QuY3BwICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0IC0tCi0gc3Jj L2N0eC5jcHAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzAgLS0tLS0tLS0tLS0tLQotIHNy Yy9nZW4vR2xvYmFsc0xvY2FsaXphdGlvbi5jcHAgICAgICB8ICA0IC0tCi0gc3JjL2lzcGMuY3Bw ICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAgLS0tLS0tLS0tCi0gc3JjL2lzcGMuaCAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDMgKy0KLSBzcmMvaXNwY192ZXJzaW9uLmggICAgICAg ICAgICAgICAgICAgfCAgNCArLQotIHNyYy9tYWluLmNwcCAgICAgICAgICAgICAgICAgICAgICAg ICB8IDEzIC0tLS0tLQotIHNyYy9tb2R1bGUuY3BwICAgICAgICAgICAgICAgICAgICAgICB8IDI3 IC0tLS0tLS0tLS0tLQotIHNyYy9tb2R1bGUuaCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAy IC0KLSBzcmMvb3B0LmNwcCAgICAgICAgICAgICAgICAgICAgICAgICAgfCA2NCArKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCi0gc3JjL3R5cGUuY3BwICAgICAgICAgICAgICAgICAgICAgICAg IHwgMTAgKystLS0KLSB0ZXN0cy9saXQtdGVzdHMvMTc3MS5pc3BjICAgICAgICAgICAgfCAgMSAt Ci0gdGVzdHMvbGl0LXRlc3RzLzE4NDQuaXNwYyAgICAgICAgICAgIHwgIDMgLS0KLSB0ZXN0cy9s aXQtdGVzdHMvMTkyNi5pc3BjICAgICAgICAgICAgfCAgMiAtCi0gdGVzdHMvbGl0LXRlc3RzL2Nw dXNfeDg2LmlzcGMgICAgICAgIHwgIDIgKwotIHRlc3RzL2xpdC10ZXN0cy9jcHVzX3g4Nl9sbHZt MTAuaXNwYyB8IDExIC0tLS0tCi0gdGVzdHMvbGl0LXRlc3RzL2xpdC5jZmcgICAgICAgICAgICAg IHwgIDUgLS0tCi0gMjAgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMjEzIGRlbGV0 aW9ucygtKQotIGRlbGV0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9saXQtdGVzdHMvY3B1c194ODZfbGx2 bTEwLmlzcGMKLQotZGlmZiAtLWdpdCBhLy5hcHB2ZXlvci55bWwgYi8uYXBwdmV5b3IueW1sCi1p bmRleCA0NTFhN2IzZTAuLjc5NDVjY2EyYSAxMDA2NDQKLS0tLSBhLy5hcHB2ZXlvci55bWwKLSsr KyBiLy5hcHB2ZXlvci55bWwKLUBAIC00MSw4ICs0MSw2IEBAIGVudmlyb25tZW50OgotICAgICAg IExMVk1fVkVSU0lPTjogbGF0ZXN0Ci0gICAgIC0gQVBQVkVZT1JfQlVJTERfV09SS0VSX0lNQUdF OiBWaXN1YWwgU3R1ZGlvIDIwMTkKLSAgICAgICBMTFZNX1ZFUlNJT046IDEwLjAKLS0gICAgLSBB UFBWRVlPUl9CVUlMRF9XT1JLRVJfSU1BR0U6IFZpc3VhbCBTdHVkaW8gMjAxOQotLSAgICAgIExM Vk1fVkVSU0lPTjogOS4wCi0gCi0gZm9yOgotIC0KLUBAIC02Miw3ICs2MCw2IEBAIGZvcjoKLSAg ICAgICAgIGlmICIlQVBQVkVZT1JfQlVJTERfV09SS0VSX0lNQUdFJSI9PSJWaXN1YWwgU3R1ZGlv IDIwMTkiICggKHNldCBnZW5lcmF0b3I9IlZpc3VhbCBTdHVkaW8gMTYiKSAmIChzZXQgdnN2ZXJz aW9uPTIwMTkpKQotICAgICAgICAgc2V0IExMVk1fVEFSPWxsdm0tMTEuMC4wLXdpbi52czIwMTkt UmVsZWFzZStBc3NlcnRzLXg4Ni5hcm0ud2FzbS43egotICAgICAgICAgaWYgIiVMTFZNX1ZFUlNJ T04lIj09IjEwLjAiIChzZXQgTExWTV9UQVI9bGx2bS0xMC4wLjEtd2luLnZzMjAxOS1SZWxlYXNl K0Fzc2VydHMteDg2LmFybS53YXNtLnppcCkKLS0gICAgICAgIGlmICIlTExWTV9WRVJTSU9OJSI9 PSI5LjAiIChzZXQgTExWTV9UQVI9bGx2bS05LjAuMS13aW4udnMyMDE3LVJlbGVhc2UrQXNzZXJ0 cy14ODYuYXJtLndhc20uemlwKQotICAgaW5zdGFsbDoKLSAgICAgLSBwczogY2hvY28gaW5zdGFs bCAtLW5vLXByb2dyZXNzIHdpbmZsZXhiaXNvbjMgd2dldCA3emlwCi0gICAgIC0gY21kOiB8LQot ZGlmZiAtLWdpdCBhLy50cmF2aXMueW1sIGIvLnRyYXZpcy55bWwKLWluZGV4IDJlOTYwMTdhNi4u M2E2Yjg1MjY0IDEwMDY0NAotLS0tIGEvLnRyYXZpcy55bWwKLSsrKyBiLy50cmF2aXMueW1sCi1A QCAtMTA4LDEzICsxMDgsNiBAQCBqb2JzOgotICAgICAgICAgLSBMTFZNX1RBUj1sbHZtLTEwLjAu MS11YnVudHUxNi4wNC1SZWxlYXNlK0Fzc2VydHMteDg2LmFybS53YXNtLnRhci54egotICAgICAg ICAgLSBMTFZNX1JFUE89aHR0cHM6Ly9naXRodWIuY29tL2RiYWJva2luL2xsdm0tcHJvamVjdAot ICAgICAgICAgLSBJU1BDX0hPTUU9JFRSQVZJU19CVUlMRF9ESVIKLS0gICAgIyBMTFZNIDkuMCAr IFVidW50dSAxNi4wNDogYnVpbGQsIGxpdCB0ZXN0cywgZXhhbXBsZXMgKGJ1aWxkICsgcnVuKSwg YmVuY2htYXJrcyAoYnVpbGQgKyB0cmlhbCBydW4pCi0tICAgIC0gPDw6ICpteV90YWcKLS0gICAg ICBlbnY6Ci0tICAgICAgICAtIExMVk1fVkVSU0lPTj05LjAgT1M9VWJ1bnR1MTYuMDQKLS0gICAg ICAgIC0gTExWTV9UQVI9bGx2bS05LjAuMS11YnVudHUxNi4wNC1SZWxlYXNlK0Fzc2VydHMteDg2 LmFybS53YXNtLnRhci54egotLSAgICAgICAgLSBMTFZNX1JFUE89aHR0cHM6Ly9naXRodWIuY29t L2RiYWJva2luL2xsdm0tcHJvamVjdAotLSAgICAgICAgLSBJU1BDX0hPTUU9JFRSQVZJU19CVUlM RF9ESVIKLSAgICAgIyBXQVNNIGVuYWJsZWQgYnVpbGQKLSAgICAgIyBMTFZNIDExLjAgKyBVYnVu dHUgMTYuMDQ6IGJ1aWxkLCBsaXQgdGVzdHMsIGV4YW1wbGVzIChidWlsZCksIGJlbmNobWFya3Mg KGJ1aWxkICsgdHJpYWwgcnVuKQotICAgICAtIDw8OiAqbXlfdGFnCi1kaWZmIC0tZ2l0IGEvQ01h a2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAotaW5kZXggNWZhODYzZmNmLi5hNmIzZWQyNTEg MTAwNjQ0Ci0tLS0gYS9DTWFrZUxpc3RzLnR4dAotKysrIGIvQ01ha2VMaXN0cy50eHQKLUBAIC0y NDEsMTAgKzI0MSw4IEBAIGlmIChYODZfRU5BQkxFRCkKLSAgICAgICAgIGF2eDItaTh4MzIgYXZ4 Mi1pMTZ4MTYKLSAgICAgICAgIGF2eDItaTMyeDQgYXZ4Mi1pMzJ4OCBhdngyLWkzMngxNiBhdngy LWk2NHg0Ci0gICAgICAgICBhdng1MTJrbmwtaTMyeDE2Ci0tICAgICAgICBhdng1MTJza3gtaTMy eDE2IGF2eDUxMnNreC1pMzJ4OCkKLS0gICAgaWYgKCR7TExWTV9WRVJTSU9OX05VTUJFUn0gVkVS U0lPTl9HUkVBVEVSX0VRVUFMICIxMC4wLjAiKQotLSAgICAgICAgbGlzdChBUFBFTkQgSVNQQ19U QVJHRVRTIGF2eDUxMnNreC1pOHg2NCBhdng1MTJza3gtaTE2eDMyKQotLSAgICBlbmRpZigpCi0r ICAgICAgICBhdng1MTJza3gtaTMyeDE2IGF2eDUxMnNreC1pMzJ4OAotKyAgICAgICAgYXZ4NTEy c2t4LWk4eDY0IGF2eDUxMnNreC1pMTZ4MzIpCi0gZW5kaWYoKQotIGlmIChBUk1fRU5BQkxFRCkK LSAgICAgbGlzdChBUFBFTkQgSVNQQ19UQVJHRVRTIG5lb24taTh4MTYgbmVvbi1pMTZ4OCBuZW9u LWkzMng0IG5lb24taTMyeDgpCi1AQCAtMjU5LDExICsyNTcsNyBAQCBpZiAoV0FTTV9FTkFCTEVE KQotIGVuZGlmKCkKLSAKLSBzZXQoQ0xBTkdfTElCUkFSWV9MSVNUIGNsYW5nRnJvbnRlbmQgY2xh bmdEcml2ZXIgY2xhbmdTZXJpYWxpemF0aW9uIGNsYW5nUGFyc2UgY2xhbmdTZW1hIGNsYW5nQW5h bHlzaXMgY2xhbmdBU1QgY2xhbmdCYXNpYyBjbGFuZ0VkaXQgY2xhbmdMZXgpCi0tc2V0KExMVk1f Q09NUE9ORU5UUyBlbmdpbmUgaXBvIGJpdHJlYWRlciBiaXR3cml0ZXIgaW5zdHJ1bWVudGF0aW9u IGxpbmtlciBvcHRpb24pCi0tCi0taWYgKCR7TExWTV9WRVJTSU9OX05VTUJFUn0gVkVSU0lPTl9H UkVBVEVSX0VRVUFMICIxMC4wLjAiKQotLSAgICBsaXN0KEFQUEVORCBMTFZNX0NPTVBPTkVOVFMg ZnJvbnRlbmRvcGVubXApCi0tZW5kaWYoKQotK3NldChMTFZNX0NPTVBPTkVOVFMgZW5naW5lIGlw byBiaXRyZWFkZXIgYml0d3JpdGVyIGluc3RydW1lbnRhdGlvbiBsaW5rZXIgb3B0aW9uIGZyb250 ZW5kb3Blbm1wKQotIAotIGlmIChYODZfRU5BQkxFRCkKLSAgICAgbGlzdChBUFBFTkQgTExWTV9D T01QT05FTlRTIHg4NikKLWRpZmYgLS1naXQgYS9zcmMvYXN0LmNwcCBiL3NyYy9hc3QuY3BwCi1p bmRleCAyMGY3NWEyOWMuLjVhNDNjNDg1NCAxMDA2NDQKLS0tLSBhL3NyYy9hc3QuY3BwCi0rKysg Yi9zcmMvYXN0LmNwcAotQEAgLTQ0LDkgKzQ0LDcgQEAKLSAjaW5jbHVkZSAic3ltLmgiCi0gI2lu Y2x1ZGUgInV0aWwuaCIKLSAKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEw XzAKLSAjaW5jbHVkZSA8bGx2bS9TdXBwb3J0L1RpbWVQcm9maWxlci5oPgotLSNlbmRpZgotIC8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLwotIC8vIEFTVE5vZGUKLSAKLUBAIC02Miw5ICs2MCw3IEBAIHZvaWQg QVNUOjpBZGRGdW5jdGlvbihTeW1ib2wgKnN5bSwgU3RtdCAqY29kZSkgewotIH0KLSAKLSB2b2lk IEFTVDo6R2VuZXJhdGVJUigpIHsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZN XzEwXzAKLSAgICAgbGx2bTo6VGltZVRyYWNlU2NvcGUgVGltZVNjb3BlKCJHZW5lcmF0ZUlSIik7 Ci0tI2VuZGlmCi0gICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZnVuY3Rpb25zLnNp emUoKTsgKytpKQotICAgICAgICAgZnVuY3Rpb25zW2ldLT5HZW5lcmF0ZUlSKCk7Ci0gfQotZGlm ZiAtLWdpdCBhL3NyYy9jdHguY3BwIGIvc3JjL2N0eC5jcHAKLWluZGV4IDk3N2U5ZDIyMi4uNDJj NGVhMDlkIDEwMDY0NAotLS0tIGEvc3JjL2N0eC5jcHAKLSsrKyBiL3NyYy9jdHguY3BwCi1AQCAt MzA5LDIxICszMDksMTMgQEAgRnVuY3Rpb25FbWl0Q29udGV4dDo6RnVuY3Rpb25FbWl0Q29udGV4 dChGdW5jdGlvbiAqZnVuYywgU3ltYm9sICpmdW5TeW0sIGxsdm06OkYKLSAgICAgICAgICAgICBj aGFyIGJ1ZlsyNTZdOwotICAgICAgICAgICAgIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJf X29mZl9hbGxfb25fbWFza18lcyIsIGctPnRhcmdldC0+R2V0SVNBU3RyaW5nKCkpOwotIAotLSNp ZiBJU1BDX0xMVk1fVkVSU0lPTiA8PSBJU1BDX0xMVk1fOF8wCi0tICAgICAgICAgICAgbGx2bTo6 Q29uc3RhbnQgKm9mZkZ1bmMgPSBtLT5tb2R1bGUtPmdldE9ySW5zZXJ0RnVuY3Rpb24oYnVmLCBM TFZNVHlwZXM6OlZvaWRUeXBlKTsKLS0jZWxzZSAvLyBMTFZNIDkuMCsKLSAgICAgICAgICAgICBs bHZtOjpGdW5jdGlvbkNhbGxlZSBvZmZGdW5jQ2FsbGVlID0gbS0+bW9kdWxlLT5nZXRPckluc2Vy dEZ1bmN0aW9uKGJ1ZiwgTExWTVR5cGVzOjpWb2lkVHlwZSk7Ci0gICAgICAgICAgICAgbGx2bTo6 Q29uc3RhbnQgKm9mZkZ1bmMgPSBsbHZtOjpjYXN0PGxsdm06OkNvbnN0YW50PihvZmZGdW5jQ2Fs bGVlLmdldENhbGxlZSgpKTsKLS0jZW5kaWYKLSAgICAgICAgICAgICBBc3NlcnRQb3MoY3VycmVu dFBvcywgbGx2bTo6aXNhPGxsdm06OkZ1bmN0aW9uPihvZmZGdW5jKSk7Ci0gICAgICAgICAgICAg bGx2bTo6QmFzaWNCbG9jayAqb2ZmQkIgPSBsbHZtOjpCYXNpY0Jsb2NrOjpDcmVhdGUoKmctPmN0 eCwgImVudHJ5IiwgKGxsdm06OkZ1bmN0aW9uICopb2ZmRnVuYywgMCk7Ci0gICAgICAgICAgICAg bGx2bTo6U3RvcmVJbnN0ICppbnN0ID0gbmV3IGxsdm06OlN0b3JlSW5zdChMTFZNTWFza0FsbE9m ZiwgZ2xvYmFsQWxsT25NYXNrUHRyLCBvZmZCQik7Ci0gICAgICAgICAgICAgaWYgKGctPm9wdC5m b3JjZUFsaWduZWRNZW1vcnkpIHsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPD0gSVNQQ19MTFZN XzlfMAotLSAgICAgICAgICAgICAgICBpbnN0LT5zZXRBbGlnbm1lbnQoZy0+dGFyZ2V0LT5nZXRO YXRpdmVWZWN0b3JBbGlnbm1lbnQoKSk7Ci0tI2Vsc2UgLy8gTExWTSAxMC4wKwotICAgICAgICAg ICAgICAgICBpbnN0LT5zZXRBbGlnbm1lbnQobGx2bTo6TWF5YmVBbGlnbihnLT50YXJnZXQtPmdl dE5hdGl2ZVZlY3RvckFsaWdubWVudCgpKS52YWx1ZU9yT25lKCkpOwotLSNlbmRpZgotICAgICAg ICAgICAgIH0KLSAgICAgICAgICAgICBsbHZtOjpSZXR1cm5JbnN0OjpDcmVhdGUoKmctPmN0eCwg b2ZmQkIpOwotICAgICAgICAgfQotQEAgLTIyODgsMTEgKzIyODAsNyBAQCBsbHZtOjpWYWx1ZSAq RnVuY3Rpb25FbWl0Q29udGV4dDo6TG9hZEluc3QobGx2bTo6VmFsdWUgKnB0ciwgY29uc3QgVHlw ZSAqdHlwZSwgYwotICNlbmRpZgotIAotICAgICBpZiAoZy0+b3B0LmZvcmNlQWxpZ25lZE1lbW9y eSAmJiBsbHZtOjpkeW5fY2FzdDxsbHZtOjpWZWN0b3JUeXBlPihwdC0+Z2V0RWxlbWVudFR5cGUo KSkpIHsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPD0gSVNQQ19MTFZNXzlfMAotLSAgICAgICAg aW5zdC0+c2V0QWxpZ25tZW50KGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yQWxpZ25tZW50KCkp OwotLSNlbHNlIC8vIExMVk0gMTAuMCsKLSAgICAgICAgIGluc3QtPnNldEFsaWdubWVudChsbHZt OjpNYXliZUFsaWduKGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yQWxpZ25tZW50KCkpLnZhbHVl T3JPbmUoKSk7Ci0tI2VuZGlmCi0gICAgIH0KLSAKLSAgICAgQWRkRGVidWdQb3MoaW5zdCk7Ci1A QCAtMjQzMSwxMSArMjQxOSw3IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpM b2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjpWYWx1ZSAqbWFzaywKLSAgICAgICAgICAg ICAgICAgLy8gdnMgdGhlIHByb3BlciBhbGlnbm1lbnQgaW4gcHJhY3RpY2UuKQotICAgICAgICAg ICAgICAgICBpbnQgYWxpZ24gPSAxOwotIAotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8PSBJU1BD X0xMVk1fOV8wCi0tICAgICAgICAgICAgICAgIGluc3QtPnNldEFsaWdubWVudChhbGlnbik7Ci0t I2Vsc2UgLy8gTExWTSAxMC4wKwotICAgICAgICAgICAgICAgICBpbnN0LT5zZXRBbGlnbm1lbnQo bGx2bTo6TWF5YmVBbGlnbihhbGlnbikudmFsdWVPck9uZSgpKTsKLS0jZW5kaWYKLSAgICAgICAg ICAgICB9Ci0gCi0gICAgICAgICAgICAgQWRkRGVidWdQb3MoaW5zdCk7Ci1AQCAtMjY0OSwxMSAr MjYzMyw3IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpBbGxvY2FJbnN0KGxs dm06OlR5cGUgKmxsdm1UeXBlLCBjb25zdCBjaGFyICpuCi0gICAgICAgICBhbGlnbiA9IGctPnRh cmdldC0+Z2V0TmF0aXZlVmVjdG9yQWxpZ25tZW50KCk7Ci0gCi0gICAgIGlmIChhbGlnbiAhPSAw KSB7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OIDw9IElTUENfTExWTV85XzAKLS0gICAgICAgIGlu c3QtPnNldEFsaWdubWVudChhbGlnbik7Ci0tI2Vsc2UgLy8gTExWTSAxMC4wKwotICAgICAgICAg aW5zdC0+c2V0QWxpZ25tZW50KGxsdm06Ok1heWJlQWxpZ24oYWxpZ24pLnZhbHVlT3JPbmUoKSk7 Ci0tI2VuZGlmCi0gICAgIH0KLSAgICAgLy8gRG9uJ3QgYWRkIGRlYnVnZ2luZyBpbmZvIHRvIGFs bG9jYSBpbnN0cnVjdGlvbnMKLSAgICAgcmV0dXJuIGluc3Q7Ci1AQCAtMjkyNiwxMSArMjkwNiw3 IEBAIHZvaWQgRnVuY3Rpb25FbWl0Q29udGV4dDo6U3RvcmVJbnN0KGxsdm06OlZhbHVlICp2YWx1 ZSwgbGx2bTo6VmFsdWUgKnB0ciwgY29uc3QKLSAgICAgbGx2bTo6U3RvcmVJbnN0ICppbnN0ID0g bmV3IGxsdm06OlN0b3JlSW5zdCh2YWx1ZSwgcHRyLCBiYmxvY2spOwotIAotICAgICBpZiAoZy0+ b3B0LmZvcmNlQWxpZ25lZE1lbW9yeSAmJiBsbHZtOjpkeW5fY2FzdDxsbHZtOjpWZWN0b3JUeXBl PihwdC0+Z2V0RWxlbWVudFR5cGUoKSkpIHsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPD0gSVNQ Q19MTFZNXzlfMAotLSAgICAgICAgaW5zdC0+c2V0QWxpZ25tZW50KGctPnRhcmdldC0+Z2V0TmF0 aXZlVmVjdG9yQWxpZ25tZW50KCkpOwotLSNlbHNlIC8vIExMVk0gMTAuMCsKLSAgICAgICAgIGlu c3QtPnNldEFsaWdubWVudChsbHZtOjpNYXliZUFsaWduKGctPnRhcmdldC0+Z2V0TmF0aXZlVmVj dG9yQWxpZ25tZW50KCkpLnZhbHVlT3JPbmUoKSk7Ci0tI2VuZGlmCi0gICAgIH0KLSAKLSAjaWZk ZWYgSVNQQ19HRU5YX0VOQUJMRUQKLUBAIC0zMDI1LDE2ICszMDAxLDEwIEBAIHZvaWQgRnVuY3Rp b25FbWl0Q29udGV4dDo6TWVtY3B5SW5zdChsbHZtOjpWYWx1ZSAqZGVzdCwgbGx2bTo6VmFsdWUg KnNyYywgbGx2bTo6Ci0gICAgIH0KLSAgICAgaWYgKGFsaWduID09IE5VTEwpCi0gICAgICAgICBh bGlnbiA9IExMVk1JbnQzMigxKTsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPD0gSVNQQ19MTFZN XzhfMAotLSAgICBsbHZtOjpDb25zdGFudCAqbWNGdW5jID0KLS0gICAgICAgIG0tPm1vZHVsZS0+ Z2V0T3JJbnNlcnRGdW5jdGlvbigibGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2NCIsIExMVk1UeXBl czo6Vm9pZFR5cGUsIExMVk1UeXBlczo6Vm9pZFBvaW50ZXJUeXBlLAotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1UeXBlczo6Vm9pZFBvaW50ZXJUeXBlLCBMTFZN VHlwZXM6OkludDY0VHlwZSwgTExWTVR5cGVzOjpCb29sVHlwZSk7Ci0tI2Vsc2UgLy8gTExWTSA5 LjArCi0gICAgIGxsdm06OkZ1bmN0aW9uQ2FsbGVlIG1jRnVuY0NhbGxlZSA9Ci0gICAgICAgICBt LT5tb2R1bGUtPmdldE9ySW5zZXJ0RnVuY3Rpb24oImxsdm0ubWVtY3B5LnAwaTgucDBpOC5pNjQi LCBMTFZNVHlwZXM6OlZvaWRUeXBlLCBMTFZNVHlwZXM6OlZvaWRQb2ludGVyVHlwZSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZNVHlwZXM6OlZvaWRQb2ludGVy VHlwZSwgTExWTVR5cGVzOjpJbnQ2NFR5cGUsIExMVk1UeXBlczo6Qm9vbFR5cGUpOwotICAgICBs bHZtOjpDb25zdGFudCAqbWNGdW5jID0gbGx2bTo6Y2FzdDxsbHZtOjpDb25zdGFudD4obWNGdW5j Q2FsbGVlLmdldENhbGxlZSgpKTsKLS0jZW5kaWYKLSAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3Ms IG1jRnVuYyAhPSBOVUxMKTsKLSAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIGxsdm06OmlzYTxs bHZtOjpGdW5jdGlvbj4obWNGdW5jKSk7Ci0gCi1kaWZmIC0tZ2l0IGEvc3JjL2dlbi9HbG9iYWxz TG9jYWxpemF0aW9uLmNwcCBiL3NyYy9nZW4vR2xvYmFsc0xvY2FsaXphdGlvbi5jcHAKLWluZGV4 IDE5M2E2NjI4OS4uYTE3NmU5NDYyIDEwMDY0NAotLS0tIGEvc3JjL2dlbi9HbG9iYWxzTG9jYWxp emF0aW9uLmNwcAotKysrIGIvc3JjL2dlbi9HbG9iYWxzTG9jYWxpemF0aW9uLmNwcAotQEAgLTQ3 MCwxMSArNDcwLDcgQEAgdm9pZCBHbG9iYWxzTG9jYWxpemF0aW9uOjpMb2NhbGl6ZUdsb2JhbHMo TG9jYWxpemF0aW9uSW5mbyAmTEkpIHsKLSAgICAgICAgIEluc3RydWN0aW9uICZGaXJzdEkgPSAq Rm4tPmdldEVudHJ5QmxvY2soKS5iZWdpbigpOwotICAgICAgICAgVHlwZSAqRWxlbVR5ID0gR1Yt PmdldFR5cGUoKS0+Z2V0RWxlbWVudFR5cGUoKTsKLSAgICAgICAgIEFsbG9jYUluc3QgKkFsbG9j YSA9IG5ldyBBbGxvY2FJbnN0KEVsZW1UeSwgMCwgR1YtPmdldE5hbWUoKSArICIubG9jYWwiLCAm Rmlyc3RJKTsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPD0gSVNQQ19MTFZNXzlfMAotLSAgICAg ICAgQWxsb2NhLT5zZXRBbGlnbm1lbnQoR1YtPmdldEFsaWdubWVudCgpKTsKLS0jZWxzZSAvLyBM TFZNIDEwLjArCi0gICAgICAgICBBbGxvY2EtPnNldEFsaWdubWVudChsbHZtOjpNYXliZUFsaWdu KEdWLT5nZXRBbGlnbm1lbnQoKSkpOwotLSNlbmRpZgotICAgICAgICAgaWYgKCFpc2E8VW5kZWZW YWx1ZT4oR1YtPmdldEluaXRpYWxpemVyKCkpKQotICAgICAgICAgICAgIG5ldyBTdG9yZUluc3Qo R1YtPmdldEluaXRpYWxpemVyKCksIEFsbG9jYSwgJkZpcnN0SSk7Ci0gCi1kaWZmIC0tZ2l0IGEv c3JjL2lzcGMuY3BwIGIvc3JjL2lzcGMuY3BwCi1pbmRleCBlMmQwZjIwNmUuLmZhYzUyMzNmNyAx MDA2NDQKLS0tLSBhL3NyYy9pc3BjLmNwcAotKysrIGIvc3JjL2lzcGMuY3BwCi1AQCAtMjcyLDkg KzI3Miw3IEBAIHR5cGVkZWYgZW51bSB7Ci0gICAgIENQVV9TaWx2ZXJtb250LAotIAotICAgICBD UFVfSUNYLAotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICBD UFVfVEdMLAotLSNlbmRpZgotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTJf MAotICAgICBDUFVfQURMLAotICAgICBDUFVfU1BSLAotQEAgLTM2NSwxMCArMzYzLDggQEAgY2xh c3MgQWxsQ1BVcyB7Ci0gCi0gICAgICAgICBuYW1lc1tDUFVfSUNYXS5wdXNoX2JhY2soImljZWxh a2Utc2VydmVyIik7Ci0gICAgICAgICBuYW1lc1tDUFVfSUNYXS5wdXNoX2JhY2soImljeCIpOwot LSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICAgICAgbmFtZXNb Q1BVX1RHTF0ucHVzaF9iYWNrKCJ0aWdlcmxha2UiKTsKLSAgICAgICAgIG5hbWVzW0NQVV9UR0xd LnB1c2hfYmFjaygidGdsIik7Ci0tI2VuZGlmCi0gI2lmIElTUENfTExWTV9WRVJTSU9OID49IElT UENfTExWTV8xMl8wCi0gICAgICAgICBuYW1lc1tDUFVfQURMXS5wdXNoX2JhY2soImFsZGVybGFr ZSIpOwotICAgICAgICAgbmFtZXNbQ1BVX0FETF0ucHVzaF9iYWNrKCJhZGwiKTsKLUBAIC00MTEs MTEgKzQwNyw5IEBAIGNsYXNzIEFsbENQVXMgewotICAgICAgICAgY29tcGF0W0NQVV9BRExdID0g U2V0KENQVV9BREwsIENQVV94ODZfNjQsIENQVV9Cb25uZWxsLCBDUFVfUGVucnluLCBDUFVfQ29y ZTIsIENQVV9OZWhhbGVtLCBDUFVfU2lsdmVybW9udCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBDUFVfU2FuZHlCcmlkZ2UsIENQVV9JdnlCcmlkZ2UsIENQVV9IYXN3ZWxsLCBDUFVf QnJvYWR3ZWxsLCBDUFVfTm9uZSk7Ci0gI2VuZGlmCi0tI2lmIElTUENfTExWTV9WRVJTSU9OID49 IElTUENfTExWTV8xMF8wCi0gICAgICAgICBjb21wYXRbQ1BVX1RHTF0gPQotICAgICAgICAgICAg IFNldChDUFVfVEdMLCBDUFVfeDg2XzY0LCBDUFVfQm9ubmVsbCwgQ1BVX1BlbnJ5biwgQ1BVX0Nv cmUyLCBDUFVfTmVoYWxlbSwgQ1BVX1NpbHZlcm1vbnQsIENQVV9TYW5keUJyaWRnZSwKLSAgICAg ICAgICAgICAgICAgQ1BVX0l2eUJyaWRnZSwgQ1BVX0hhc3dlbGwsIENQVV9Ccm9hZHdlbGwsIENQ VV9TS1gsIENQVV9JQ0wsIENQVV9JQ1gsIENQVV9Ob25lKTsKLS0jZW5kaWYKLSAgICAgICAgIGNv bXBhdFtDUFVfSUNYXSA9IFNldChDUFVfSUNYLCBDUFVfeDg2XzY0LCBDUFVfQm9ubmVsbCwgQ1BV X1BlbnJ5biwgQ1BVX0NvcmUyLCBDUFVfTmVoYWxlbSwgQ1BVX1NpbHZlcm1vbnQsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgQ1BVX1NhbmR5QnJpZGdlLCBDUFVfSXZ5QnJpZGdlLCBD UFVfSGFzd2VsbCwgQ1BVX0Jyb2Fkd2VsbCwgQ1BVX1NLWCwgQ1BVX0lDTCwgQ1BVX05vbmUpOwot IAotQEAgLTU1Niw5ICs1NTAsNyBAQCBUYXJnZXQ6OlRhcmdldChBcmNoIGFyY2gsIGNvbnN0IGNo YXIgKmNwdSwgSVNQQ1RhcmdldCBpc3BjX3RhcmdldCwgYm9vbCBwaWMsIGJvbwotICNpZiBJU1BD X0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTJfMAotICAgICAgICAgY2FzZSBDUFVfU1BSOgot ICNlbmRpZgotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICAg ICAgY2FzZSBDUFVfVEdMOgotLSNlbmRpZgotICAgICAgICAgY2FzZSBDUFVfSUNYOgotICAgICAg ICAgY2FzZSBDUFVfSUNMOgotICAgICAgICAgY2FzZSBDUFVfU0tYOgotQEAgLTkxNiw3ICs5MDgs NiBAQCBUYXJnZXQ6OlRhcmdldChBcmNoIGFyY2gsIGNvbnN0IGNoYXIgKmNwdSwgSVNQQ1Rhcmdl dCBpc3BjX3RhcmdldCwgYm9vbCBwaWMsIGJvbwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7 Ci0gICAgIGNhc2UgSVNQQ1RhcmdldDo6YXZ4NTEyc2t4X2k4eDY0OgotLSNpZiBJU1BDX0xMVk1f VkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMCAvLyBMTFZNIDEwLjArCi0gICAgICAgICAvLyBUaGlz IHRhcmdldCBpcyBlbmFibGVkIG9ubHkgZm9yIExMVk0gMTAuMCBhbmQgbGF0ZXIKLSAgICAgICAg IC8vIGJlY2F1c2UgTExWTSByZXF1aXJlcyBhIG51bWJlciBvZiBmaXhlcywgd2hpY2ggYXJlCi0g ICAgICAgICAvLyBjb21taXR0ZWQgdG8gTExWTSAxMS4wIGFuZCBjYW4gYmUgYXBwbGllZCB0byAx MC4wLCBidXQgbm90Ci1AQCAtOTM3LDEyICs5MjgsNyBAQCBUYXJnZXQ6OlRhcmdldChBcmNoIGFy Y2gsIGNvbnN0IGNoYXIgKmNwdSwgSVNQQ1RhcmdldCBpc3BjX3RhcmdldCwgYm9vbCBwaWMsIGJv bwotICAgICAgICAgdGhpcy0+bV9oYXNWZWNQcmVmZXRjaCA9IGZhbHNlOwotICAgICAgICAgQ1BV ZnJvbUlTQSA9IENQVV9TS1g7Ci0gICAgICAgICBicmVhazsKLS0jZWxzZQotLSAgICAgICAgdW5z dXBwb3J0ZWRfdGFyZ2V0ID0gdHJ1ZTsKLS0gICAgICAgIGJyZWFrOwotLSNlbmRpZgotICAgICBj YXNlIElTUENUYXJnZXQ6OmF2eDUxMnNreF9pMTZ4MzI6Ci0tI2lmIElTUENfTExWTV9WRVJTSU9O ID49IElTUENfTExWTV8xMF8wIC8vIExMVk0gMTAuMCsKLSAgICAgICAgIC8vIFRoaXMgdGFyZ2V0 IGlzIGVuYWJsZWQgb25seSBmb3IgTExWTSAxMC4wIGFuZCBsYXRlcgotICAgICAgICAgLy8gYmVj YXVzZSBMTFZNIHJlcXVpcmVzIGEgbnVtYmVyIG9mIGZpeGVzLCB3aGljaCBhcmUKLSAgICAgICAg IC8vIGNvbW1pdHRlZCB0byBMTFZNIDExLjAgYW5kIGNhbiBiZSBhcHBsaWVkIHRvIDEwLjAsIGJ1 dCBub3QKLUBAIC05NjMsMTAgKzk0OSw2IEBAIFRhcmdldDo6VGFyZ2V0KEFyY2ggYXJjaCwgY29u c3QgY2hhciAqY3B1LCBJU1BDVGFyZ2V0IGlzcGNfdGFyZ2V0LCBib29sIHBpYywgYm9vCi0gICAg ICAgICB0aGlzLT5tX2hhc1ZlY1ByZWZldGNoID0gZmFsc2U7Ci0gICAgICAgICBDUFVmcm9tSVNB ID0gQ1BVX1NLWDsKLSAgICAgICAgIGJyZWFrOwotLSNlbHNlCi0tICAgICAgICB1bnN1cHBvcnRl ZF90YXJnZXQgPSB0cnVlOwotLSAgICAgICAgYnJlYWs7Ci0tI2VuZGlmCi0gI2lmZGVmIElTUENf QVJNX0VOQUJMRUQKLSAgICAgY2FzZSBJU1BDVGFyZ2V0OjpuZW9uX2k4eDE2OgotICAgICAgICAg dGhpcy0+bV9pc2EgPSBUYXJnZXQ6Ok5FT047Ci1AQCAtMTY2MiwxMSArMTY0NCw5IEBAIEdsb2Jh bHM6Okdsb2JhbHMoKSB7Ci0gICAgIGlzTXVsdGlUYXJnZXRDb21waWxhdGlvbiA9IGZhbHNlOwot ICAgICBlcnJvckxpbWl0ID0gLTE7Ci0gCi0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENf TExWTV8xMF8wCi0gICAgIGVuYWJsZVRpbWVUcmFjZSA9IGZhbHNlOwotICAgICAvLyBzZXQgZGVm YXVsdCBncmFudWxhcml0eSB0byA1MDAuCi0gICAgIHRpbWVUcmFjZUdyYW51bGFyaXR5ID0gNTAw OwotLSNlbmRpZgotICAgICB0YXJnZXQgPSBOVUxMOwotICAgICBjdHggPSBuZXcgbGx2bTo6TExW TUNvbnRleHQ7Ci0gCi1kaWZmIC0tZ2l0IGEvc3JjL2lzcGMuaCBiL3NyYy9pc3BjLmgKLWluZGV4 IGUyNWQ4ODMwZS4uZGUzNTdhMjFjIDEwMDY0NAotLS0tIGEvc3JjL2lzcGMuaAotKysrIGIvc3Jj L2lzcGMuaAotQEAgLTY5NSwxMyArNjk1LDEyIEBAIHN0cnVjdCBHbG9iYWxzIHsKLSAKLSAgICAg LyogTnVtYmVyIG9mIGVycm9ycyB0byBzaG93IGluIElTUEMuICovCi0gICAgIGludCBlcnJvckxp bWl0OwotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotKwotICAgICAv KiBXaGVuIHRydWUsIGVuYWJsZSBjb21waWxlIHRpbWUgdHJhY2luZy4gKi8KLSAgICAgYm9vbCBl bmFibGVUaW1lVHJhY2U7Ci0gCi0gICAgIC8qIFdoZW4gY29tcGlsZSB0aW1lIHRyYWNpbmcgaXMg ZW5hYmxlZCwgc2V0IHRpbWUgZ3JhbnVsYXJpdHkuICovCi0gICAgIGludCB0aW1lVHJhY2VHcmFu dWxhcml0eTsKLS0jZW5kaWYKLSB9OwotIAotIGVudW0gewotZGlmZiAtLWdpdCBhL3NyYy9pc3Bj X3ZlcnNpb24uaCBiL3NyYy9pc3BjX3ZlcnNpb24uaAotaW5kZXggZDc4MTM0N2ZkLi40MzRiMmQ2 NzggMTAwNjQ0Ci0tLS0gYS9zcmMvaXNwY192ZXJzaW9uLmgKLSsrKyBiL3NyYy9pc3BjX3ZlcnNp b24uaAotQEAgLTQ0LDEzICs0NCwxMSBAQAotIAotICNkZWZpbmUgSVNQQ19MTFZNX1ZFUlNJT04g KExMVk1fVkVSU0lPTl9NQUpPUiAqIDEwMDAwICsgTExWTV9WRVJTSU9OX01JTk9SICogMTAwKQot IAotLSNkZWZpbmUgSVNQQ19MTFZNXzhfMCA4MDAwMAotLSNkZWZpbmUgSVNQQ19MTFZNXzlfMCA5 MDAwMAotICNkZWZpbmUgSVNQQ19MTFZNXzEwXzAgMTAwMDAwCi0gI2RlZmluZSBJU1BDX0xMVk1f MTFfMCAxMTAwMDAKLSAjZGVmaW5lIElTUENfTExWTV8xMl8wIDEyMDAwMAotIAotLSNkZWZpbmUg T0xERVNUX1NVUFBPUlRFRF9MTFZNIElTUENfTExWTV84XzAKLSsjZGVmaW5lIE9MREVTVF9TVVBQ T1JURURfTExWTSBJU1BDX0xMVk1fMTBfMAotICNkZWZpbmUgTEFURVNUX1NVUFBPUlRFRF9MTFZN IElTUENfTExWTV8xMl8wCi0gCi0gI2lmZGVmIF9faXNwY19feHN0cgotZGlmZiAtLWdpdCBhL3Ny Yy9tYWluLmNwcCBiL3NyYy9tYWluLmNwcAotaW5kZXggOGY2NDMzMGNjLi41YzkyMGVhYmMgMTAw NjQ0Ci0tLS0gYS9zcmMvbWFpbi5jcHAKLSsrKyBiL3NyYy9tYWluLmNwcAotQEAgLTU1LDkgKzU1 LDcgQEAKLSAjaW5jbHVkZSA8bGx2bS9TdXBwb3J0L1NpZ25hbHMuaD4KLSAjaW5jbHVkZSA8bGx2 bS9TdXBwb3J0L1RhcmdldFJlZ2lzdHJ5Lmg+Ci0gI2luY2x1ZGUgPGxsdm0vU3VwcG9ydC9UYXJn ZXRTZWxlY3QuaD4KLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAj aW5jbHVkZSA8bGx2bS9TdXBwb3J0L1Rvb2xPdXRwdXRGaWxlLmg+Ci0tI2VuZGlmCi0gCi0gI2lm ZGVmIElTUENfSE9TVF9JU19XSU5ET1dTCi0gI2RlZmluZSBzdHJjYXNlY21wIHN0cmljbXAKLUBA IC0xODEsMTEgKzE3OSw5IEBAIHN0YXRpYyB2b2lkIGxQcmludFZlcnNpb24oKSB7Ci0gICAgIHNu cHJpbnRmKHRhcmdldEhlbHAsIHNpemVvZih0YXJnZXRIZWxwKSwgIlstLXRhcmdldC1vcz08b3M+ XVx0XHRcdFNlbGVjdCB0YXJnZXQgT1MuICA8b3M+PXslc30iLAotICAgICAgICAgICAgICBnLT50 YXJnZXRfcmVnaXN0cnktPmdldFN1cHBvcnRlZE9TZXMoKS5jX3N0cigpKTsKLSAgICAgUHJpbnRX aXRoV29yZEJyZWFrcyh0YXJnZXRIZWxwLCAyNCwgVGVybWluYWxXaWR0aCgpLCBzdGRvdXQpOwot LSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICBwcmludGYoIiAg ICBbLS10aW1lLXRyYWNlXVx0XHRcdFR1cm4gb24gdGltZSBwcm9maWxlci4gR2VuZXJhdGVzIEpT T04gZmlsZSBiYXNlZCBvbiBvdXRwdXQgZmlsZW5hbWUuXG4iKTsKLSAgICAgcHJpbnRmKCIgICAg Wy0tdGltZS10cmFjZS1ncmFudWxhcml0eT08dmFsdWU+XHRNaW5pbXVtIHRpbWUgZ3JhbnVsYXJp dHkgKGluIG1pY3Jvc2Vjb25kcykgdHJhY2VkIGJ5IHRpbWUgIgotICAgICAgICAgICAgInByb2Zp bGVyLlxuIik7Ci0tI2VuZGlmCi0gICAgIHByaW50ZigiICAgIFstLXZlcnNpb25dXHRcdFx0XHRQ cmludCBpc3BjIHZlcnNpb25cbiIpOwotICNpZmRlZiBJU1BDX0dFTlhfRU5BQkxFRAotICAgICBw cmludGYoIiAgICBbLS12Yy1vcHRpb25zPTxcIi1vcHRpb24xIC1vcHRpb24yLi4uXCI+XVx0XHRc dFx0UGFzcyBhZGRpdGlvbmFsIG9wdGlvbnMgdG8gVmVjdG9yIENvbXBpbGVyIGJhY2tlbmRcbiIp OwotQEAgLTQ2Miw3ICs0NTgsNiBAQCBzdGF0aWMgdm9pZCBzZXRDYWxsaW5nQ29udihWZWN0b3JD YWxsU3RhdHVzIHZlY3RvckNhbGwsIEFyY2ggYXJjaCkgewotICAgICB9Ci0gfQotIAotLSNpZiBJ U1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotIHN0YXRpYyB2b2lkIHdyaXRlQ29t cGlsZVRpbWVGaWxlKGNvbnN0IGNoYXIgKm91dEZpbGVOYW1lKSB7Ci0gICAgIGxsdm06OlNtYWxs U3RyaW5nPDEyOD4ganNvbkZpbGVOYW1lKG91dEZpbGVOYW1lKTsKLSAgICAganNvbkZpbGVOYW1l LmFwcGVuZCgiLmpzb24iKTsKLUBAIC00NzksNyArNDc0LDYgQEAgc3RhdGljIHZvaWQgd3JpdGVD b21waWxlVGltZUZpbGUoY29uc3QgY2hhciAqb3V0RmlsZU5hbWUpIHsKLSAgICAgb2YtPmtlZXAo KTsKLSAgICAgcmV0dXJuOwotIH0KLS0jZW5kaWYKLSAKLSBzdGF0aWMgc3RkOjpzZXQ8aW50PiBQ YXJzaW5nUGhhc2VzKGNoYXIgKnN0YWdlcywgQXJnRXJyb3JzICZlcnJvckhhbmRsZXIpIHsKLSAg ICAgY29uc3RleHByIGludCBwYXJzaW5nX2xpbWl0ID0gMTAwOwotQEAgLTc5MSwxMiArNzg1LDEw IEBAIGludCBtYWluKGludCBBcmdjLCBjaGFyICpBcmd2W10pIHsKLSAgICAgICAgICAgICB9Ci0g ICAgICAgICB9IGVsc2UgaWYgKCFzdHJuY21wKGFyZ3ZbaV0sICItLWZvcmNlLWFsaWdubWVudD0i LCAxOCkpIHsKLSAgICAgICAgICAgICBnLT5mb3JjZUFsaWdubWVudCA9IGF0b2koYXJndltpXSAr IDE4KTsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgICAg IH0gZWxzZSBpZiAoIXN0cmNtcChhcmd2W2ldLCAiLS10aW1lLXRyYWNlIikpIHsKLSAgICAgICAg ICAgICBnLT5lbmFibGVUaW1lVHJhY2UgPSB0cnVlOwotICAgICAgICAgfSBlbHNlIGlmICghc3Ry bmNtcChhcmd2W2ldLCAiLS10aW1lLXRyYWNlLWdyYW51bGFyaXR5PSIsIDI1KSkgewotICAgICAg ICAgICAgIGctPnRpbWVUcmFjZUdyYW51bGFyaXR5ID0gYXRvaShhcmd2W2ldICsgMjUpOwotLSNl bmRpZgotICAgICAgICAgfSBlbHNlIGlmICghc3RyY21wKGFyZ3ZbaV0sICItLXdvZmYiKSB8fCAh c3RyY21wKGFyZ3ZbaV0sICItd29mZiIpKSB7Ci0gICAgICAgICAgICAgZy0+ZGlzYWJsZVdhcm5p bmdzID0gdHJ1ZTsKLSAgICAgICAgICAgICBnLT5lbWl0UGVyZldhcm5pbmdzID0gZmFsc2U7Ci1A QCAtMTA1OSw3ICsxMDUxLDYgQEAgaW50IG1haW4oaW50IEFyZ2MsIGNoYXIgKkFyZ3ZbXSkgewot IAotICAgICAvLyBUaGlzIG5lZWRzIHRvIGhhcHBlbiBhZnRlciB0aGUgVGFyZ2V0T1MgaXMgZGVj aWRlZC4KLSAgICAgc2V0Q2FsbGluZ0NvbnYodmVjdG9yQ2FsbCwgYXJjaCk7Ci0tI2lmIElTUENf TExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgIGlmIChnLT5lbmFibGVUaW1lVHJh Y2UpIHsKLSAgICAgICAgIGxsdm06OnRpbWVUcmFjZVByb2ZpbGVySW5pdGlhbGl6ZShnLT50aW1l VHJhY2VHcmFudWxhcml0eSwgImlzcGMiKTsKLSAgICAgfQotQEAgLTEwNzcsOSArMTA2OCw1IEBA IGludCBtYWluKGludCBBcmdjLCBjaGFyICpBcmd2W10pIHsKLSAgICAgICAgIH0KLSAgICAgICAg IGxsdm06OnRpbWVUcmFjZVByb2ZpbGVyQ2xlYW51cCgpOwotICAgICB9Ci0tI2Vsc2UKLS0gICAg aW50IHJldCA9IE1vZHVsZTo6Q29tcGlsZUFuZE91dHB1dChmaWxlLCBhcmNoLCBjcHUsIHRhcmdl dHMsIGZsYWdzLCBvdCwgb3V0RmlsZU5hbWUsIGhlYWRlckZpbGVOYW1lLCBkZXBzRmlsZU5hbWUs Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwc1RhcmdldE5hbWUs IGhvc3RTdHViRmlsZU5hbWUsIGRldlN0dWJGaWxlTmFtZSk7Ci0tI2VuZGlmCi0gICAgIHJldHVy biByZXQ7Ci0gfQotZGlmZiAtLWdpdCBhL3NyYy9tb2R1bGUuY3BwIGIvc3JjL21vZHVsZS5jcHAK LWluZGV4IGZlNzQ1MmRmMS4uYTg1ZmVjNzdhIDEwMDY0NAotLS0tIGEvc3JjL21vZHVsZS5jcHAK LSsrKyBiL3NyYy9tb2R1bGUuY3BwCi1AQCAtMTcwLDkgKzE3MCw3IEBAIE1vZHVsZTo6TW9kdWxl KGNvbnN0IGNoYXIgKmZuKSB7Ci0gICAgIG1vZHVsZS0+c2V0RGF0YUxheW91dChnLT50YXJnZXQt PmdldERhdGFMYXlvdXQoKS0+Z2V0U3RyaW5nUmVwcmVzZW50YXRpb24oKSk7Ci0gCi0gICAgIGlm IChnLT5nZW5lcmF0ZURlYnVnZ2luZ1N5bWJvbHMpIHsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04g Pj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIFRpbWVTY29w ZSgiQ3JlYXRlIERlYnVnIERhdGEiKTsKLS0jZW5kaWYKLSAgICAgICAgIC8vIFRvIGVuYWJsZSBk ZWJ1ZyBpbmZvcm1hdGlvbiBvbiBXaW5kb3dzLCB3ZSBoYXZlIHRvIGxldCBsbHZtIGtub3csIHRo YXQKLSAgICAgICAgIC8vIGRlYnVnIGluZm9ybWF0aW9uIHNob3VsZCBiZSBlbWl0dGVkIGluIENv ZGVWaWV3IGZvcm1hdC4KLSAgICAgICAgIGlmIChnLT50YXJnZXRfb3MgPT0gVGFyZ2V0T1M6Ondp bmRvd3MpIHsKLUBAIC0yMjYsMTAgKzIyNCw4IEBAIGV4dGVybiBZWV9CVUZGRVJfU1RBVEUgeXlf Y3JlYXRlX2J1ZmZlcihGSUxFICosIGludCk7Ci0gZXh0ZXJuIHZvaWQgeXlfZGVsZXRlX2J1ZmZl cihZWV9CVUZGRVJfU1RBVEUpOwotIAotIGludCBNb2R1bGU6OkNvbXBpbGVGaWxlKCkgewotLSNp ZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICBsbHZtOjpUaW1lVHJh Y2VTY29wZSBDb21waWxlRmlsZVRpbWVTY29wZSgKLSAgICAgICAgICJDb21waWxlRmlsZSIsIGxs dm06OlN0cmluZ1JlZihmaWxlbmFtZSArICgiXyIgKyBzdGQ6OnN0cmluZyhnLT50YXJnZXQtPkdl dElTQVN0cmluZygpKSkpKTsKLS0jZW5kaWYKLSAgICAgZXh0ZXJuIHZvaWQgUGFyc2VySW5pdCgp OwotICAgICBQYXJzZXJJbml0KCk7Ci0gCi1AQCAtMjM4LDE4ICsyMzQsMTQgQEAgaW50IE1vZHVs ZTo6Q29tcGlsZUZpbGUoKSB7Ci0gICAgIC8vIHZhcmlhYmxlICdtJyB0byBiZSBpbml0aWFsaXpl ZCBhbmQgYXZhaWxhYmxlICh3aGljaCBpdCBpc24ndCB1bnRpbAotICAgICAvLyB0aGUgTW9kdWxl IGNvbnN0cnVjdG9yIHJldHVybnMuLi4pCi0gICAgIHsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04g Pj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIFRpbWVTY29w ZSgiRGVmaW5lU3RkbGliIik7Ci0tI2VuZGlmCi0gICAgICAgICBEZWZpbmVTdGRsaWIoc3ltYm9s VGFibGUsIGctPmN0eCwgbW9kdWxlLCBnLT5pbmNsdWRlU3RkbGliKTsKLSAgICAgfQotIAotICAg ICBib29sIHJ1blByZXByb2Nlc3NvciA9IGctPnJ1bkNQUDsKLSAKLSAgICAgaWYgKHJ1blByZXBy b2Nlc3NvcikgewotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAg ICAgICAgbGx2bTo6VGltZVRyYWNlU2NvcGUgVGltZVNjb3BlKCJGcm9udGVuZCBwYXJzZXIiKTsK LS0jZW5kaWYKLSAgICAgICAgIGlmICghSXNTdGRpbihmaWxlbmFtZSkpIHsKLSAgICAgICAgICAg ICAvLyBUcnkgdG8gb3BlbiB0aGUgZmlsZSBmaXJzdCwgc2luY2Ugb3RoZXJ3aXNlIHdlIGNyYXNo IGluIHRoZQotICAgICAgICAgICAgIC8vIHByZXByb2Nlc3NvciBpZiB0aGUgZmlsZSBkb2Vzbid0 IGV4aXN0LgotQEAgLTI2OCw5ICsyNjAsNyBAQCBpbnQgTW9kdWxlOjpDb21waWxlRmlsZSgpIHsK LSAgICAgICAgIHl5cGFyc2UoKTsKLSAgICAgICAgIHl5X2RlbGV0ZV9idWZmZXIoc3RyYnVmKTsK LSAgICAgfSBlbHNlIHsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAK LSAgICAgICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIFRpbWVTY29wZSgiRnJvbnRlbmQgcGFyc2Vy Iik7Ci0tI2VuZGlmCi0gICAgICAgICAvLyBObyBwcmVwcm9jZXNzb3IsIGp1c3Qgb3BlbiB1cCB0 aGUgZmlsZSBpZiBpdCdzIG5vdCBzdGRpbi4uCi0gICAgICAgICBGSUxFICpmID0gTlVMTDsKLSAg ICAgICAgIGlmIChJc1N0ZGluKGZpbGVuYW1lKSkgewotQEAgLTI5Nyw5ICsyODcsNyBAQCBpbnQg TW9kdWxlOjpDb21waWxlRmlsZSgpIHsKLSAKLSAgICAgaWYgKGRpQnVpbGRlcikKLSAgICAgICAg IGRpQnVpbGRlci0+ZmluYWxpemUoKTsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19M TFZNXzEwXzAKLSAgICAgbGx2bTo6VGltZVRyYWNlU2NvcGUgVGltZVNjb3BlKCJPcHRpbWl6ZSIp OwotLSNlbmRpZgotICAgICBpZiAoZXJyb3JDb3VudCA9PSAwKQotICAgICAgICAgT3B0aW1pemUo bW9kdWxlLCBnLT5vcHQubGV2ZWwpOwotIAotQEAgLTEyNDMsMTUgKzEyMzEsOCBAQCBib29sIE1v ZHVsZTo6d3JpdGVPYmplY3RGaWxlT3JBc3NlbWJseShsbHZtOjpUYXJnZXRNYWNoaW5lICp0YXJn ZXRNYWNoaW5lLCBsbHZtOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGNoYXIgKm91dEZpbGVOYW1lKSB7Ci0gICAgIC8vIEZpZ3VyZSBvdXQgaWYgd2UncmUg Z2VuZXJhdGluZyBvYmplY3QgZmlsZSBvciBhc3NlbWJseSBvdXRwdXQsIGFuZAotICAgICAvLyBz ZXQgYmluYXJ5IG91dHB1dCBmb3Igb2JqZWN0IGZpbGVzCi0tI2lmIElTUENfTExWTV9WRVJTSU9O IDw9IElTUENfTExWTV85XzAKLS0gICAgQXNzZXJ0KCFnLT50YXJnZXQtPmlzR2VuWFRhcmdldCgp KTsKLS0gICAgbGx2bTo6VGFyZ2V0TWFjaGluZTo6Q29kZUdlbkZpbGVUeXBlIGZpbGVUeXBlID0K LS0gICAgICAgIChvdXRwdXRUeXBlID09IE9iamVjdCkgPyBsbHZtOjpUYXJnZXRNYWNoaW5lOjpD R0ZUX09iamVjdEZpbGUgOiBsbHZtOjpUYXJnZXRNYWNoaW5lOjpDR0ZUX0Fzc2VtYmx5RmlsZTsK LS0gICAgYm9vbCBiaW5hcnkgPSAoZmlsZVR5cGUgPT0gbGx2bTo6VGFyZ2V0TWFjaGluZTo6Q0dG VF9PYmplY3RGaWxlKTsKLS0jZWxzZSAvLyBMTFZNIDEwLjArCi0gICAgIGxsdm06OkNvZGVHZW5G aWxlVHlwZSBmaWxlVHlwZSA9IChvdXRwdXRUeXBlID09IE9iamVjdCkgPyBsbHZtOjpDR0ZUX09i amVjdEZpbGUgOiBsbHZtOjpDR0ZUX0Fzc2VtYmx5RmlsZTsKLSAgICAgYm9vbCBiaW5hcnkgPSAo ZmlsZVR5cGUgPT0gbGx2bTo6Q0dGVF9PYmplY3RGaWxlKTsKLS0jZW5kaWYKLSAKLSAgICAgbGx2 bTo6c3lzOjpmczo6T3BlbkZsYWdzIGZsYWdzID0gYmluYXJ5ID8gbGx2bTo6c3lzOjpmczo6Rl9O b25lIDogbGx2bTo6c3lzOjpmczo6Rl9UZXh0OwotIAotQEAgLTIyMTksMTEgKzIyMDAsNyBAQCB2 b2lkIE1vZHVsZTo6ZXhlY1ByZXByb2Nlc3Nvcihjb25zdCBjaGFyICppbmZpbGVuYW1lLCBsbHZt OjpyYXdfc3RyaW5nX29zdHJlYW0gKgotICAgICBpbnN0LnNldFRhcmdldCh0YXJnZXQpOwotICAg ICBpbnN0LmNyZWF0ZVNvdXJjZU1hbmFnZXIoaW5zdC5nZXRGaWxlTWFuYWdlcigpKTsKLSAKLS0j aWYgSVNQQ19MTFZNX1ZFUlNJT04gPD0gSVNQQ19MTFZNXzlfMAotLSAgICBjbGFuZzo6RnJvbnRl bmRJbnB1dEZpbGUgaW5wdXRGaWxlKGluZmlsZW5hbWUsIGNsYW5nOjpJbnB1dEtpbmQ6OlVua25v d24pOwotLSNlbHNlIC8vIExMVk0gMTAuMCsKLSAgICAgY2xhbmc6OkZyb250ZW5kSW5wdXRGaWxl IGlucHV0RmlsZShpbmZpbGVuYW1lLCBjbGFuZzo6SW5wdXRLaW5kKCkpOwotLSNlbmRpZgotIAot ICAgICBpbnN0LkluaXRpYWxpemVTb3VyY2VNYW5hZ2VyKGlucHV0RmlsZSk7Ci0gCi1AQCAtMjcy Miw5ICsyNjk5LDcgQEAgaW50IE1vZHVsZTo6Q29tcGlsZUFuZE91dHB1dChjb25zdCBjaGFyICpz cmNGaWxlLCBBcmNoIGFyY2gsIGNvbnN0IGNoYXIgKmNwdSwgc3QKLSAKLSAgICAgICAgIG0gPSBu ZXcgTW9kdWxlKHNyY0ZpbGUpOwotICAgICAgICAgaWYgKG0tPkNvbXBpbGVGaWxlKCkgPT0gMCkg ewotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICAgICAgICAg IGxsdm06OlRpbWVUcmFjZVNjb3BlIFRpbWVTY29wZSgiQmFja2VuZCIpOwotLSNlbmRpZgotICNp ZmRlZiBJU1BDX0dFTlhfRU5BQkxFRAotICAgICAgICAgICAgIGlmIChvdXRwdXRUeXBlID09IEFz bSB8fCBvdXRwdXRUeXBlID09IE9iamVjdCkgewotICAgICAgICAgICAgICAgICBpZiAoZy0+dGFy Z2V0LT5pc0dlblhUYXJnZXQoKSkgewotQEAgLTI4NTUsOSArMjgzMCw3IEBAIGludCBNb2R1bGU6 OkNvbXBpbGVBbmRPdXRwdXQoY29uc3QgY2hhciAqc3JjRmlsZSwgQXJjaCBhcmNoLCBjb25zdCBj aGFyICpjcHUsIHN0Ci0gCi0gICAgICAgICAgICAgbSA9IG5ldyBNb2R1bGUoc3JjRmlsZSk7Ci0g ICAgICAgICAgICAgaW50IGNvbXBpbGVGaWxlRXJyb3IgPSBtLT5Db21waWxlRmlsZSgpOwotLSNp ZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICAgICAgICAgIGxsdm06 OlRpbWVUcmFjZVNjb3BlIFRpbWVTY29wZSgiQmFja2VuZCIpOwotLSNlbmRpZgotICAgICAgICAg ICAgIGlmIChjb21waWxlRmlsZUVycm9yID09IDApIHsKLSAgICAgICAgICAgICAgICAgLy8gQ3Jl YXRlIHRoZSBkaXNwYXRjaCBtb2R1bGUsIHVubGVzcyBhbHJlYWR5IGNyZWF0ZWQ7Ci0gICAgICAg ICAgICAgICAgIC8vIGluIHRoZSBsYXR0ZXIgY2FzZSwganVzdCBkbyB0aGUgY2hlY2tpbmcKLWRp ZmYgLS1naXQgYS9zcmMvbW9kdWxlLmggYi9zcmMvbW9kdWxlLmgKLWluZGV4IDYxZDNjZmVhMC4u NjAzMTI0ZDUwIDEwMDY0NAotLS0tIGEvc3JjL21vZHVsZS5oCi0rKysgYi9zcmMvbW9kdWxlLmgK LUBAIC00Myw5ICs0Myw3IEBACi0gCi0gI2luY2x1ZGUgPGxsdm0vSVIvRGVidWdJbmZvLmg+Ci0g Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gI2luY2x1ZGUgPGxs dm0vU3VwcG9ydC9UaW1lUHJvZmlsZXIuaD4KLS0jZW5kaWYKLSAKLSAjaWZkZWYgSVNQQ19HRU5Y X0VOQUJMRUQKLSAjaW5jbHVkZSAib2NsX2lnY19pbnRlcmZhY2UvaWdjX29jbF9kZXZpY2VfY3R4 LmgiCi1kaWZmIC0tZ2l0IGEvc3JjL29wdC5jcHAgYi9zcmMvb3B0LmNwcAotaW5kZXggYTY1NWE4 MzQ0Li41YjFhYzdiNjMgMTAwNjQ0Ci0tLS0gYS9zcmMvb3B0LmNwcAotKysrIGIvc3JjL29wdC5j cHAKLUBAIC02Niw2ICs2Niw3IEBACi0gI2luY2x1ZGUgPGxsdm0vSVIvSW5zdHJ1Y3Rpb25zLmg+ Ci0gI2luY2x1ZGUgPGxsdm0vSVIvSW50cmluc2ljSW5zdC5oPgotICNpbmNsdWRlIDxsbHZtL0lS L0ludHJpbnNpY3MuaD4KLSsjaW5jbHVkZSA8bGx2bS9JUi9JbnRyaW5zaWNzWDg2Lmg+Ci0gI2lu Y2x1ZGUgPGxsdm0vSVIvTGVnYWN5UGFzc01hbmFnZXIuaD4KLSAjaW5jbHVkZSA8bGx2bS9JUi9N b2R1bGUuaD4KLSAjaW5jbHVkZSA8bGx2bS9JUi9QYXR0ZXJuTWF0Y2guaD4KLUBAIC04NSw5ICs4 Niw2IEBACi0gI2luY2x1ZGUgPGxsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvSW5zdFNpbXBsaWZ5UGFz cy5oPgotICNpbmNsdWRlIDxsbHZtL1RyYW5zZm9ybXMvVXRpbHMuaD4KLSAjaW5jbHVkZSA8bGx2 bS9UcmFuc2Zvcm1zL1V0aWxzL0Jhc2ljQmxvY2tVdGlscy5oPgotLSNpZiBJU1BDX0xMVk1fVkVS U0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotLSNpbmNsdWRlIDxsbHZtL0lSL0ludHJpbnNpY3NYODYu aD4KLS0jZW5kaWYKLSAKLSAjaWZkZWYgSVNQQ19IT1NUX0lTX0xJTlVYCi0gI2luY2x1ZGUgPGFs bG9jYS5oPgotQEAgLTEwMDMsMTAgKzEwMDEsNyBAQCBib29sIEludHJpbnNpY3NPcHQ6OnJ1bk9u QmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICZiYikgewotICAgICAgICAgICAgICAgICBlbHNl Ci0gICAgICAgICAgICAgICAgICAgICBhbGlnbiA9IGNhbGxJbnN0LT5nZXRDYWxsZWRGdW5jdGlv bigpID09IGF2eE1hc2tlZExvYWQzMiA/IDQgOiA4OwotICAgICAgICAgICAgICAgICBuYW1lID0g TExWTUdldE5hbWUoY2FsbEluc3QtPmdldEFyZ09wZXJhbmQoMCksICJfbG9hZCIpOwotLSNpZiBJ U1BDX0xMVk1fVkVSU0lPTiA8PSBJU1BDX0xMVk1fOV8wCi0tICAgICAgICAgICAgICAgIGxsdm06 Okluc3RydWN0aW9uICpsb2FkSW5zdCA9Ci0tICAgICAgICAgICAgICAgICAgICBuZXcgbGx2bTo6 TG9hZEluc3QoY2FzdFB0ciwgbmFtZSwgZmFsc2UgLyogbm90IHZvbGF0aWxlICovLCBhbGlnbiwg KGxsdm06Okluc3RydWN0aW9uICopTlVMTCk7Ci0tI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04gPT0g SVNQQ19MTFZNXzEwXzAKLSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPT0gSVNQQ19MTFZNXzEwXzAK LSAgICAgICAgICAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmxvYWRJbnN0ID0gbmV3IGxsdm06 OkxvYWRJbnN0KGNhc3RQdHIsIG5hbWUsIGZhbHNlIC8qIG5vdCB2b2xhdGlsZSAqLywKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxsdm06Ok1heWJlQWxpZ24oYWxpZ24pLCAobGx2bTo6SW5zdHJ1Y3Rpb24gKilOVUxMKTsK LSAjZWxzZQotQEAgLTEwNDMsMTMgKzEwMzgsOCBAQCBib29sIEludHJpbnNpY3NPcHQ6OnJ1bk9u QmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICZiYikgewotICAgICAgICAgICAgICAgICAgICAg YWxpZ24gPSBnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvckFsaWdubWVudCgpOwotICAgICAgICAg ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICBhbGlnbiA9IGNhbGxJbnN0LT5nZXRD YWxsZWRGdW5jdGlvbigpID09IGF2eE1hc2tlZFN0b3JlMzIgPyA0IDogODsKLS0jaWYgSVNQQ19M TFZNX1ZFUlNJT04gPD0gSVNQQ19MTFZNXzlfMAotLSAgICAgICAgICAgICAgICBsbHZtOjpTdG9y ZUluc3QgKnN0b3JlSW5zdCA9IG5ldyBsbHZtOjpTdG9yZUluc3QocnZhbHVlLCBjYXN0UHRyLCAo bGx2bTo6SW5zdHJ1Y3Rpb24gKilOVUxMKTsKLS0gICAgICAgICAgICAgICAgc3RvcmVJbnN0LT5z ZXRBbGlnbm1lbnQoYWxpZ24pOwotLSNlbHNlCi0gICAgICAgICAgICAgICAgIGxsdm06OlN0b3Jl SW5zdCAqc3RvcmVJbnN0ID0gbmV3IGxsdm06OlN0b3JlSW5zdChydmFsdWUsIGNhc3RQdHIsIChs bHZtOjpJbnN0cnVjdGlvbiAqKU5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpNYXliZUFsaWduKGFsaWdu KS52YWx1ZU9yT25lKCkpOwotLSNlbmRpZgotICAgICAgICAgICAgICAgICBsQ29weU1ldGFkYXRh KHN0b3JlSW5zdCwgY2FsbEluc3QpOwotICAgICAgICAgICAgICAgICBsbHZtOjpSZXBsYWNlSW5z dFdpdGhJbnN0KGNhbGxJbnN0LCBzdG9yZUluc3QpOwotIAotQEAgLTEwNjYsOSArMTA1Niw3IEBA IGJvb2wgSW50cmluc2ljc09wdDo6cnVuT25CYXNpY0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sgJmJi KSB7Ci0gCi0gYm9vbCBJbnRyaW5zaWNzT3B0OjpydW5PbkZ1bmN0aW9uKGxsdm06OkZ1bmN0aW9u ICZGKSB7Ci0gCi0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAg IGxsdm06OlRpbWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiSW50cmluc2ljc09wdDo6cnVuT25GdW5j dGlvbiIsIEYuZ2V0TmFtZSgpKTsKLS0jZW5kaWYKLSAgICAgYm9vbCBtb2RpZmllZEFueSA9IGZh bHNlOwotICAgICBmb3IgKGxsdm06OkJhc2ljQmxvY2sgJkJCIDogRikgewotICAgICAgICAgbW9k aWZpZWRBbnkgfD0gcnVuT25CYXNpY0Jsb2NrKEJCKTsKLUBAIC0xMjM5LDkgKzEyMjcsNyBAQCBi b29sIEluc3RydWN0aW9uU2ltcGxpZnlQYXNzOjpydW5PbkJhc2ljQmxvY2sobGx2bTo6QmFzaWNC bG9jayAmYmIpIHsKLSAKLSBib29sIEluc3RydWN0aW9uU2ltcGxpZnlQYXNzOjpydW5PbkZ1bmN0 aW9uKGxsdm06OkZ1bmN0aW9uICZGKSB7Ci0gCi0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElT UENfTExWTV8xMF8wCi0gICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiSW5zdHJ1 Y3Rpb25TaW1wbGlmeVBhc3M6OnJ1bk9uRnVuY3Rpb24iLCBGLmdldE5hbWUoKSk7Ci0tI2VuZGlm Ci0gICAgIGJvb2wgbW9kaWZpZWRBbnkgPSBmYWxzZTsKLSAgICAgZm9yIChsbHZtOjpCYXNpY0Js b2NrICZCQiA6IEYpIHsKLSAgICAgICAgIG1vZGlmaWVkQW55IHw9IHJ1bk9uQmFzaWNCbG9jayhC Qik7Ci1AQCAtMjk3NCwxNiArMjk2MCwxMCBAQCBzdGF0aWMgYm9vbCBsSW1wcm92ZU1hc2tlZFN0 b3JlKGxsdm06OkNhbGxJbnN0ICpjYWxsSW5zdCkgewotIAotICAgICAgICAgICAgIGx2YWx1ZSA9 IG5ldyBsbHZtOjpCaXRDYXN0SW5zdChsdmFsdWUsIHB0clR5cGUsICJsdmFsdWVfdG9fcHRyX3R5 cGUiLCBjYWxsSW5zdCk7Ci0gICAgICAgICAgICAgbENvcHlNZXRhZGF0YShsdmFsdWUsIGNhbGxJ bnN0KTsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPD0gSVNQQ19MTFZNXzlfMAotLSAgICAgICAg ICAgIHN0b3JlID0KLS0gICAgICAgICAgICAgICAgbmV3IGxsdm06OlN0b3JlSW5zdChydmFsdWUs IGx2YWx1ZSwgZmFsc2UgLyogbm90IHZvbGF0aWxlICovLAotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGctPm9wdC5mb3JjZUFsaWduZWRNZW1vcnkgPyBnLT50YXJnZXQtPmdl dE5hdGl2ZVZlY3RvckFsaWdubWVudCgpIDogaW5mby0+YWxpZ24pOwotLSNlbHNlCi0gICAgICAg ICAgICAgc3RvcmUgPSBuZXcgbGx2bTo6U3RvcmVJbnN0KAotICAgICAgICAgICAgICAgICBydmFs dWUsIGx2YWx1ZSwgZmFsc2UgLyogbm90IHZvbGF0aWxlICovLAotICAgICAgICAgICAgICAgICBs bHZtOjpNYXliZUFsaWduKGctPm9wdC5mb3JjZUFsaWduZWRNZW1vcnkgPyBnLT50YXJnZXQtPmdl dE5hdGl2ZVZlY3RvckFsaWdubWVudCgpIDogaW5mby0+YWxpZ24pCi0gICAgICAgICAgICAgICAg ICAgICAudmFsdWVPck9uZSgpKTsKLS0jZW5kaWYKLSAgICAgICAgIH0KLSAgICAgICAgIGlmIChz dG9yZSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgbENvcHlNZXRhZGF0YShzdG9yZSwgY2FsbElu c3QpOwotQEAgLTMwNTksMTEgKzMwMzksNyBAQCBzdGF0aWMgYm9vbCBsSW1wcm92ZU1hc2tlZExv YWQobGx2bTo6Q2FsbEluc3QgKmNhbGxJbnN0LCBsbHZtOjpCYXNpY0Jsb2NrOjppdGVyYQotICAg ICAgICAgewotICAgICAgICAgICAgIGxsdm06OlR5cGUgKnB0clR5cGUgPSBsbHZtOjpQb2ludGVy VHlwZTo6Z2V0KGNhbGxJbnN0LT5nZXRUeXBlKCksIDApOwotICAgICAgICAgICAgIHB0ciA9IG5l dyBsbHZtOjpCaXRDYXN0SW5zdChwdHIsIHB0clR5cGUsICJwdHJfY2FzdF9mb3JfbG9hZCIsIGNh bGxJbnN0KTsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPD0gSVNQQ19MTFZNXzlfMAotLSAgICAg ICAgICAgIGxvYWQgPSBuZXcgbGx2bTo6TG9hZEluc3QocHRyLCBjYWxsSW5zdC0+Z2V0TmFtZSgp LCBmYWxzZSAvKiBub3Qgdm9sYXRpbGUgKi8sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBnLT5vcHQuZm9yY2VBbGlnbmVkTWVtb3J5ID8gZy0+dGFyZ2V0LT5nZXROYXRp dmVWZWN0b3JBbGlnbm1lbnQoKSA6IGluZm8tPmFsaWduLAotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGxsdm06Okluc3RydWN0aW9uICopTlVMTCk7Ci0tI2VsaWYgSVNQ Q19MTFZNX1ZFUlNJT04gPT0gSVNQQ19MTFZNXzEwXzAKLSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04g PT0gSVNQQ19MTFZNXzEwXzAKLSAgICAgICAgICAgICBsb2FkID0gbmV3IGxsdm06OkxvYWRJbnN0 KAotICAgICAgICAgICAgICAgICBwdHIsIGNhbGxJbnN0LT5nZXROYW1lKCksIGZhbHNlIC8qIG5v dCB2b2xhdGlsZSAqLywKLSAgICAgICAgICAgICAgICAgbGx2bTo6TWF5YmVBbGlnbihnLT5vcHQu Zm9yY2VBbGlnbmVkTWVtb3J5ID8gZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JBbGlnbm1lbnQo KSA6IGluZm8tPmFsaWduKQotQEAgLTMxMjksOSArMzEwNSw3IEBAIGJvb2wgSW1wcm92ZU1lbW9y eU9wc1Bhc3M6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICZiYikgewotIAotIGJv b2wgSW1wcm92ZU1lbW9yeU9wc1Bhc3M6OnJ1bk9uRnVuY3Rpb24obGx2bTo6RnVuY3Rpb24gJkYp IHsKLSAKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgbGx2 bTo6VGltZVRyYWNlU2NvcGUgRnVuY1Njb3BlKCJJbXByb3ZlTWVtb3J5T3BzUGFzczo6cnVuT25G dW5jdGlvbiIsIEYuZ2V0TmFtZSgpKTsKLS0jZW5kaWYKLSAgICAgYm9vbCBtb2RpZmllZEFueSA9 IGZhbHNlOwotICAgICBmb3IgKGxsdm06OkJhc2ljQmxvY2sgJkJCIDogRikgewotICAgICAgICAg bW9kaWZpZWRBbnkgfD0gcnVuT25CYXNpY0Jsb2NrKEJCKTsKLUBAIC0zNDI0LDkgKzMzOTgsNyBA QCBsbHZtOjpWYWx1ZSAqbEdFUEFuZExvYWQobGx2bTo6VmFsdWUgKmJhc2VQdHIsIGludDY0X3Qg b2Zmc2V0LCBpbnQgYWxpZ24sIGxsdm06OgotICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZt OjpUeXBlICp0eXBlKSB7Ci0gICAgIGxsdm06OlZhbHVlICpwdHIgPSBsR0VQSW5zdChiYXNlUHRy LCBMTFZNSW50NjQob2Zmc2V0KSwgIm5ld19iYXNlIiwgaW5zZXJ0QmVmb3JlKTsKLSAgICAgcHRy ID0gbmV3IGxsdm06OkJpdENhc3RJbnN0KHB0ciwgbGx2bTo6UG9pbnRlclR5cGU6OmdldCh0eXBl LCAwKSwgInB0cl9jYXN0IiwgaW5zZXJ0QmVmb3JlKTsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04g PD0gSVNQQ19MTFZNXzlfMAotLSAgICByZXR1cm4gbmV3IGxsdm06OkxvYWRJbnN0KHB0ciwgImdh dGhlcl9sb2FkIiwgZmFsc2UgLyogbm90IHZvbGF0aWxlICovLCBhbGlnbiwgaW5zZXJ0QmVmb3Jl KTsKLS0jZWxpZiBJU1BDX0xMVk1fVkVSU0lPTiA9PSBJU1BDX0xMVk1fMTBfMAotKyNpZiBJU1BD X0xMVk1fVkVSU0lPTiA9PSBJU1BDX0xMVk1fMTBfMAotICAgICByZXR1cm4gbmV3IGxsdm06Okxv YWRJbnN0KHB0ciwgImdhdGhlcl9sb2FkIiwgZmFsc2UgLyogbm90IHZvbGF0aWxlICovLCBsbHZt OjpNYXliZUFsaWduKGFsaWduKSwgaW5zZXJ0QmVmb3JlKTsKLSAjZWxzZSAvLyBMTFZNIDExLjAr Ci0gICAgIHJldHVybiBuZXcgbGx2bTo6TG9hZEluc3QobGx2bTo6ZHluX2Nhc3Q8bGx2bTo6UG9p bnRlclR5cGU+KHB0ci0+Z2V0VHlwZSgpKS0+Z2V0UG9pbnRlckVsZW1lbnRUeXBlKCksIHB0ciwK LUBAIC00MTM1LDkgKzQxMDcsNyBAQCBib29sIEdhdGhlckNvYWxlc2NlUGFzczo6cnVuT25CYXNp Y0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gCi0gYm9vbCBHYXRoZXJDb2FsZXNjZVBh c3M6OnJ1bk9uRnVuY3Rpb24obGx2bTo6RnVuY3Rpb24gJkYpIHsKLSAKLS0jaWYgSVNQQ19MTFZN X1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgbGx2bTo6VGltZVRyYWNlU2NvcGUgRnVu Y1Njb3BlKCJHYXRoZXJDb2FsZXNjZVBhc3M6OnJ1bk9uRnVuY3Rpb24iLCBGLmdldE5hbWUoKSk7 Ci0tI2VuZGlmCi0gICAgIGJvb2wgbW9kaWZpZWRBbnkgPSBmYWxzZTsKLSAgICAgZm9yIChsbHZt OjpCYXNpY0Jsb2NrICZCQiA6IEYpIHsKLSAgICAgICAgIG1vZGlmaWVkQW55IHw9IHJ1bk9uQmFz aWNCbG9jayhCQik7Ci1AQCAtNDQ2Nyw5ICs0NDM3LDcgQEAgYm9vbCBSZXBsYWNlUHNldWRvTWVt b3J5T3BzUGFzczo6cnVuT25CYXNpY0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gCi0g Ym9vbCBSZXBsYWNlUHNldWRvTWVtb3J5T3BzUGFzczo6cnVuT25GdW5jdGlvbihsbHZtOjpGdW5j dGlvbiAmRikgewotIAotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAot ICAgICBsbHZtOjpUaW1lVHJhY2VTY29wZSBGdW5jU2NvcGUoIlJlcGxhY2VQc2V1ZG9NZW1vcnlP cHNQYXNzOjpydW5PbkZ1bmN0aW9uIiwgRi5nZXROYW1lKCkpOwotLSNlbmRpZgotICAgICBib29s IG1vZGlmaWVkQW55ID0gZmFsc2U7Ci0gICAgIGZvciAobGx2bTo6QmFzaWNCbG9jayAmQkIgOiBG KSB7Ci0gICAgICAgICBtb2RpZmllZEFueSB8PSBydW5PbkJhc2ljQmxvY2soQkIpOwotQEAgLTQ1 NzMsOSArNDU0MSw3IEBAIGJvb2wgSXNDb21waWxlVGltZUNvbnN0YW50UGFzczo6cnVuT25CYXNp Y0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gCi0gYm9vbCBJc0NvbXBpbGVUaW1lQ29u c3RhbnRQYXNzOjpydW5PbkZ1bmN0aW9uKGxsdm06OkZ1bmN0aW9uICZGKSB7Ci0gCi0tI2lmIElT UENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06OlRpbWVUcmFjZVNj b3BlIEZ1bmNTY29wZSgiSXNDb21waWxlVGltZUNvbnN0YW50UGFzczo6cnVuT25GdW5jdGlvbiIs IEYuZ2V0TmFtZSgpKTsKLS0jZW5kaWYKLSAgICAgYm9vbCBtb2RpZmllZEFueSA9IGZhbHNlOwot ICAgICBmb3IgKGxsdm06OkJhc2ljQmxvY2sgJkJCIDogRikgewotICAgICAgICAgbW9kaWZpZWRB bnkgfD0gcnVuT25CYXNpY0Jsb2NrKEJCKTsKLUBAIC01MjAxLDkgKzUxNjcsNyBAQCBib29sIFBl ZXBob2xlUGFzczo6cnVuT25CYXNpY0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gCi0g Ym9vbCBQZWVwaG9sZVBhc3M6OnJ1bk9uRnVuY3Rpb24obGx2bTo6RnVuY3Rpb24gJkYpIHsKLSAK LS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgbGx2bTo6VGlt ZVRyYWNlU2NvcGUgRnVuY1Njb3BlKCJQZWVwaG9sZVBhc3M6OnJ1bk9uRnVuY3Rpb24iLCBGLmdl dE5hbWUoKSk7Ci0tI2VuZGlmCi0gICAgIGJvb2wgbW9kaWZpZWRBbnkgPSBmYWxzZTsKLSAgICAg Zm9yIChsbHZtOjpCYXNpY0Jsb2NrICZCQiA6IEYpIHsKLSAgICAgICAgIG1vZGlmaWVkQW55IHw9 IHJ1bk9uQmFzaWNCbG9jayhCQik7Ci1AQCAtNTI5OSw5ICs1MjYzLDcgQEAgYm9vbCBSZXBsYWNl U3RkbGliU2hpZnRQYXNzOjpydW5PbkJhc2ljQmxvY2sobGx2bTo6QmFzaWNCbG9jayAmYmIpIHsK LSAKLSBib29sIFJlcGxhY2VTdGRsaWJTaGlmdFBhc3M6OnJ1bk9uRnVuY3Rpb24obGx2bTo6RnVu Y3Rpb24gJkYpIHsKLSAKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAK LSAgICAgbGx2bTo6VGltZVRyYWNlU2NvcGUgRnVuY1Njb3BlKCJSZXBsYWNlU3RkbGliU2hpZnRQ YXNzOjpydW5PbkZ1bmN0aW9uIiwgRi5nZXROYW1lKCkpOwotLSNlbmRpZgotICAgICBib29sIG1v ZGlmaWVkQW55ID0gZmFsc2U7Ci0gICAgIGZvciAobGx2bTo6QmFzaWNCbG9jayAmQkIgOiBGKSB7 Ci0gICAgICAgICBtb2RpZmllZEFueSB8PSBydW5PbkJhc2ljQmxvY2soQkIpOwotQEAgLTUzOTks OSArNTM2MSw3IEBAIGxsdm06Okluc3RydWN0aW9uICpGaXhCb29sZWFuU2VsZWN0UGFzczo6Zml4 U2VsZWN0KGxsdm06OlNlbGVjdEluc3QgKnNlbCwgbGx2bTo6Ci0gfQotIAotIGJvb2wgRml4Qm9v bGVhblNlbGVjdFBhc3M6OnJ1bk9uRnVuY3Rpb24obGx2bTo6RnVuY3Rpb24gJkYpIHsKLS0jaWYg SVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgbGx2bTo6VGltZVRyYWNl U2NvcGUgRnVuY1Njb3BlKCJGaXhCb29sZWFuU2VsZWN0UGFzczo6cnVuT25GdW5jdGlvbiIsIEYu Z2V0TmFtZSgpKTsKLS0jZW5kaWYKLSAgICAgYm9vbCBtb2RpZmllZEFueSA9IGZhbHNlOwotIAot ICAgICByZXR1cm4gbW9kaWZpZWRBbnk7Ci1AQCAtNTk2NCw5ICs1OTI0LDcgQEAgYm9vbCBHZW5Y R2F0aGVyQ29hbGVzY2luZzo6cnVuT25CYXNpY0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7 Ci0gfQotIAotIGJvb2wgR2VuWEdhdGhlckNvYWxlc2Npbmc6OnJ1bk9uRnVuY3Rpb24obGx2bTo6 RnVuY3Rpb24gJkYpIHsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAK LSAgICAgbGx2bTo6VGltZVRyYWNlU2NvcGUgRnVuY1Njb3BlKCJHZW5YR2F0aGVyQ29hbGVzY2lu Zzo6cnVuT25GdW5jdGlvbiIsIEYuZ2V0TmFtZSgpKTsKLS0jZW5kaWYKLSAgICAgYm9vbCBtb2Rp ZmllZEFueSA9IGZhbHNlOwotICAgICBmb3IgKGxsdm06OkJhc2ljQmxvY2sgJkJCIDogRikgewot ICAgICAgICAgbW9kaWZpZWRBbnkgfD0gcnVuT25CYXNpY0Jsb2NrKEJCKTsKLUBAIC02MTEzLDkg KzYwNzEsNyBAQCBib29sIFByb21vdGVUb1ByaXZhdGVNZW1vcnlQYXNzOjpydW5PbkJhc2ljQmxv Y2sobGx2bTo6QmFzaWNCbG9jayAmYmIpIHsKLSAKLSBib29sIFByb21vdGVUb1ByaXZhdGVNZW1v cnlQYXNzOjpydW5PbkZ1bmN0aW9uKGxsdm06OkZ1bmN0aW9uICZGKSB7Ci0gCi0tI2lmIElTUENf TExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06OlRpbWVUcmFjZVNjb3Bl IEZ1bmNTY29wZSgiUHJvbW90ZVRvUHJpdmF0ZU1lbW9yeVBhc3M6OnJ1bk9uRnVuY3Rpb24iLCBG LmdldE5hbWUoKSk7Ci0tI2VuZGlmCi0gICAgIGJvb2wgbW9kaWZpZWRBbnkgPSBmYWxzZTsKLSAg ICAgZm9yIChsbHZtOjpCYXNpY0Jsb2NrICZCQiA6IEYpIHsKLSAgICAgICAgIG1vZGlmaWVkQW55 IHw9IHJ1bk9uQmFzaWNCbG9jayhCQik7Ci1AQCAtNjE4MSw5ICs2MTM3LDcgQEAgYm9vbCBSZXBs YWNlTExWTUludHJpbnNpY3M6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICZiYikg ewotIAotIGJvb2wgUmVwbGFjZUxMVk1JbnRyaW5zaWNzOjpydW5PbkZ1bmN0aW9uKGxsdm06OkZ1 bmN0aW9uICZGKSB7Ci0gCi0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8w Ci0gICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiUmVwbGFjZUxMVk1JbnRyaW5z aWNzOjpydW5PbkZ1bmN0aW9uIiwgRi5nZXROYW1lKCkpOwotLSNlbmRpZgotICAgICBib29sIG1v ZGlmaWVkQW55ID0gZmFsc2U7Ci0gICAgIGZvciAobGx2bTo6QmFzaWNCbG9jayAmQkIgOiBGKSB7 Ci0gICAgICAgICBtb2RpZmllZEFueSB8PSBydW5PbkJhc2ljQmxvY2soQkIpOwotQEAgLTYyNzgs OSArNjIzMiw3IEBAIGJvb2wgUmVwbGFjZVVuc3VwcG9ydGVkSW5zdHM6OnJ1bk9uQmFzaWNCbG9j ayhsbHZtOjpCYXNpY0Jsb2NrICZiYikgewotIAotIGJvb2wgUmVwbGFjZVVuc3VwcG9ydGVkSW5z dHM6OnJ1bk9uRnVuY3Rpb24obGx2bTo6RnVuY3Rpb24gJkYpIHsKLSAKLS0jaWYgSVNQQ19MTFZN X1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgbGx2bTo6VGltZVRyYWNlU2NvcGUgRnVu Y1Njb3BlKCJSZXBsYWNlVW5zdXBwb3J0ZWRJbnN0czo6cnVuT25GdW5jdGlvbiIsIEYuZ2V0TmFt ZSgpKTsKLS0jZW5kaWYKLSAgICAgYm9vbCBtb2RpZmllZEFueSA9IGZhbHNlOwotICAgICBmb3Ig KGxsdm06OkJhc2ljQmxvY2sgJkJCIDogRikgewotICAgICAgICAgbW9kaWZpZWRBbnkgfD0gcnVu T25CYXNpY0Jsb2NrKEJCKTsKLUBAIC02MzY5LDkgKzYzMjEsNyBAQCBib29sIENoZWNrVW5zdXBw b3J0ZWRJbnN0czo6cnVuT25CYXNpY0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gfQot IAotIGJvb2wgQ2hlY2tVbnN1cHBvcnRlZEluc3RzOjpydW5PbkZ1bmN0aW9uKGxsdm06OkZ1bmN0 aW9uICZGKSB7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAg IGxsdm06OlRpbWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiQ2hlY2tVbnN1cHBvcnRlZEluc3RzOjpy dW5PbkZ1bmN0aW9uIiwgRi5nZXROYW1lKCkpOwotLSNlbmRpZgotICAgICBib29sIG1vZGlmaWVk QW55ID0gZmFsc2U7Ci0gICAgIGZvciAobGx2bTo6QmFzaWNCbG9jayAmQkIgOiBGKSB7Ci0gICAg ICAgICBtb2RpZmllZEFueSB8PSBydW5PbkJhc2ljQmxvY2soQkIpOwotQEAgLTY0NDAsOSArNjM5 MCw3IEBAIGJvb2wgTWFuZ2xlT3BlbkNMQnVpbHRpbnM6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpC YXNpY0Jsb2NrICZiYikgewotIH0KLSAKLSBib29sIE1hbmdsZU9wZW5DTEJ1aWx0aW5zOjpydW5P bkZ1bmN0aW9uKGxsdm06OkZ1bmN0aW9uICZGKSB7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49 IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiTWFu Z2xlT3BlbkNMQnVpbHRpbnM6OnJ1bk9uRnVuY3Rpb24iLCBGLmdldE5hbWUoKSk7Ci0tI2VuZGlm Ci0gICAgIGJvb2wgbW9kaWZpZWRBbnkgPSBmYWxzZTsKLSAgICAgZm9yIChsbHZtOjpCYXNpY0Js b2NrICZCQiA6IEYpIHsKLSAgICAgICAgIG1vZGlmaWVkQW55IHw9IHJ1bk9uQmFzaWNCbG9jayhC Qik7Ci1AQCAtNjgyOCw5ICs2Nzc2LDcgQEAgYm9vbCBGaXhBZGRyZXNzU3BhY2U6OnJ1bk9uRnVu Y3Rpb24obGx2bTo6RnVuY3Rpb24gJkYpIHsKLSAgICAgLy8gVHJhbnNmb3JtYXRpb25zIGFyZSBj b3JyZWN0IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIG5vdCBpbnRlcm5hbC4KLSAgICAgLy8gVGhpcyBp cyBkdWUgdG8gYWRkcmVzcyBzcGFjZSBjYWxjdWxhdGlvbiBhbGdvcml0aG0uCi0gICAgIC8vIFRP RE86IHByb2JsZW1zIGNhbiBiZSBtZXQgaW4gY2FzZSBvZiBTdGFjayBDYWxscwotLSNpZiBJU1BD X0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICBsbHZtOjpUaW1lVHJhY2VTY29w ZSBGdW5jU2NvcGUoIkZpeEFkZHJlc3NTcGFjZTo6cnVuT25GdW5jdGlvbiIsIEYuZ2V0TmFtZSgp KTsKLS0jZW5kaWYKLSAgICAgaWYgKEYuZ2V0TGlua2FnZSgpID09IGxsdm06Okdsb2JhbFZhbHVl OjpMaW5rYWdlVHlwZXM6OkludGVybmFsTGlua2FnZSkKLSAgICAgICAgIHJldHVybiBmYWxzZTsK LSAKLUBAIC02ODU0LDkgKzY4MDAsNyBAQCBjbGFzcyBEZW1vdGVQSElzIDogcHVibGljIGxsdm06 OkZ1bmN0aW9uUGFzcyB7Ci0gY2hhciBEZW1vdGVQSElzOjpJRCA9IDA7Ci0gCi0gYm9vbCBEZW1v dGVQSElzOjpydW5PbkZ1bmN0aW9uKGxsdm06OkZ1bmN0aW9uICZGKSB7Ci0tI2lmIElTUENfTExW TV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIEZ1 bmNTY29wZSgiRGVtb3RlUEhJczo6cnVuT25GdW5jdGlvbiIsIEYuZ2V0TmFtZSgpKTsKLS0jZW5k aWYKLSAgICAgaWYgKEYuaXNEZWNsYXJhdGlvbigpIHx8IHNraXBGdW5jdGlvbihGKSkKLSAgICAg ICAgIHJldHVybiBmYWxzZTsKLSAgICAgc3RkOjp2ZWN0b3I8bGx2bTo6SW5zdHJ1Y3Rpb24gKj4g V29ya0xpc3Q7Ci1kaWZmIC0tZ2l0IGEvc3JjL3R5cGUuY3BwIGIvc3JjL3R5cGUuY3BwCi1pbmRl eCA2ODhhNGU4NzQuLmZhMGNiMDRkYiAxMDA2NDQKLS0tLSBhL3NyYy90eXBlLmNwcAotKysrIGIv c3JjL3R5cGUuY3BwCi1AQCAtMTgyMiwxNCArMTgyMiwxMCBAQCBsbHZtOjpESVR5cGUgKlN0cnVj dFR5cGU6OkdldERJVHlwZShsbHZtOjpESVNjb3BlICpzY29wZSkgY29uc3QgewotICAgICBsbHZt OjpESUZpbGUgKmRpRmlsZSA9IHBvcy5HZXRESUZpbGUoKTsKLSAgICAgbGx2bTo6RElOYW1lc3Bh Y2UgKmRpU3BhY2UgPSBwb3MuR2V0RElOYW1lc3BhY2UoKTsKLSAgICAgcmV0dXJuIG0tPmRpQnVp bGRlci0+Y3JlYXRlU3RydWN0VHlwZShkaVNwYWNlLCBHZXRTdHJpbmcoKSwgZGlGaWxlLAotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcy5maXJzdF9saW5lLCAg ICAgICAgICAvLyBMaW5lIG51bWJlcgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxheW91dC0+Z2V0U2l6ZUluQml0cygpLCAvLyBTaXplIGluIGJpdHMKLS0jaWYg SVNQQ19MTFZNX1ZFUlNJT04gPD0gSVNQQ19MTFZNXzlfMAotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGxheW91dC0+Z2V0QWxpZ25tZW50KCkgKiA4LCAvLyBBbGln bm1lbnQgaW4gYml0cwotLSNlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBMTFZNIDEwLjArCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zLmZpcnN0X2xpbmUsICAgICAgICAgICAg ICAgICAgICAgLy8gTGluZSBudW1iZXIKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBsYXlvdXQtPmdldFNpemVJbkJpdHMoKSwgICAgICAgICAgICAvLyBTaXplIGlu IGJpdHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQt PmdldEFsaWdubWVudCgpLnZhbHVlKCkgKiA4LCAvLyBBbGlnbm1lbnQgaW4gYml0cwotLSNlbmRp ZgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OkRJTm9k ZTo6RmxhZ1plcm8sIC8vIEZsYWdzCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbGx2bTo6RElOb2RlOjpGbGFnWmVybywgICAgICAgICAgICAgLy8gRmxhZ3MKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBlbGVtZW50cyk7 Ci0gfQotIAotZGlmZiAtLWdpdCBhL3Rlc3RzL2xpdC10ZXN0cy8xNzcxLmlzcGMgYi90ZXN0cy9s aXQtdGVzdHMvMTc3MS5pc3BjCi1pbmRleCA5ODA2NGQ4NGQuLjRmZWI3M2RkNyAxMDA2NDQKLS0t LSBhL3Rlc3RzL2xpdC10ZXN0cy8xNzcxLmlzcGMKLSsrKyBiL3Rlc3RzL2xpdC10ZXN0cy8xNzcx LmlzcGMKLUBAIC01LDcgKzUsNiBAQAotIC8vIFJVTjogJXtpc3BjfSAlcyAtLXRhcmdldD1zc2U0 LWkxNng4IC0tZW1pdC1hc20gLW8gLSB8IEZpbGVDaGVjayAlcyAtY2hlY2stcHJlZml4PUNIRUNL U1NFNF9JMTZYOAotIC8vIFJVTjogJXtpc3BjfSAlcyAtLXRhcmdldD1zc2U0LWk4eDE2IC0tZW1p dC1hc20gLW8gLSB8IEZpbGVDaGVjayAlcyAtY2hlY2stcHJlZml4PUNIRUNLU1NFNF9JOFgxNgot IAotLS8vIFJFUVVJUkVTOiBMTFZNXzEwXzArCi0gLy8gUkVRVUlSRVM6IFg4Nl9FTkFCTEVECi0g Ci0gLy8gQ0hFQ0tBVlgyX0kzMlg4OiB7e1thLXpdKnhvclthLXpdKn19ICAleG1tMCwgJXhtbTAs ICV4bW0wCi1kaWZmIC0tZ2l0IGEvdGVzdHMvbGl0LXRlc3RzLzE4NDQuaXNwYyBiL3Rlc3RzL2xp dC10ZXN0cy8xODQ0LmlzcGMKLWluZGV4IDc5M2E4ODY2Yy4uMTg5ZWRmNGMzIDEwMDY0NAotLS0t IGEvdGVzdHMvbGl0LXRlc3RzLzE4NDQuaXNwYwotKysrIGIvdGVzdHMvbGl0LXRlc3RzLzE4NDQu aXNwYwotQEAgLTYsOSArNiw2IEBACi0gCi0gLy8gUkVRVUlSRVM6IFg4Nl9FTkFCTEVECi0gCi0t Ly8gSXQgZG9lc24ndCB3b3JrIGZvciBhbnl0aGluZyBlYXJsaWVyIHRoYW4gMTAuMCwgYnV0IGl0 IHdpbGwgbm90IGJlIGZpeGVkLCBzbyBkb24ndCBydW4uCi0tLy8gUkVRVUlSRVM6IExMVk1fMTBf MCsKLS0KLSBleHRlcm4gdW5pZm9ybSB1bnNpZ25lZCBpbnQ2NCB2YXJfNjsKLSBleHRlcm4gdW5p Zm9ybSB1bnNpZ25lZCBpbnQxNiB2YXJfMTE7Ci0gZXh0ZXJuIHVuaWZvcm0gYm9vbCBhcnJfMjAx IFsxXSBbMTVdIFsyMF07Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvbGl0LXRlc3RzLzE5MjYuaXNwYyBi L3Rlc3RzL2xpdC10ZXN0cy8xOTI2LmlzcGMKLWluZGV4IDcwZjdjYzNjMi4uNzkyMWM5MWE2IDEw MDY0NAotLS0tIGEvdGVzdHMvbGl0LXRlc3RzLzE5MjYuaXNwYwotKysrIGIvdGVzdHMvbGl0LXRl c3RzLzE5MjYuaXNwYwotQEAgLTIsOCArMiw2IEBACi0gLy8gUlVOOiBjYXQgJVQvMTkyNi5vLmpz b24gXAotIC8vIFJVTjogICB8IEZpbGVDaGVjayAlcwotIAotLS8vIFJFUVVJUkVTOiBMTFZNXzEw XzArCi0tCi0gLy8gQ0hFQ0s6ICJ0cmFjZUV2ZW50cyIKLSAvLyBDSEVDSzogImRldGFpbCIKLSBl eHBvcnQgdW5pZm9ybSBpbnQgZm9vKHVuaWZvcm0gaW50IGFbXSwgdW5pZm9ybSBpbnQgY291bnQp IHsKLWRpZmYgLS1naXQgYS90ZXN0cy9saXQtdGVzdHMvY3B1c194ODYuaXNwYyBiL3Rlc3RzL2xp dC10ZXN0cy9jcHVzX3g4Ni5pc3BjCi1pbmRleCA1MTZlZmRkNGMuLjRkNjAxODZmNiAxMDA2NDQK LS0tLSBhL3Rlc3RzL2xpdC10ZXN0cy9jcHVzX3g4Ni5pc3BjCi0rKysgYi90ZXN0cy9saXQtdGVz dHMvY3B1c194ODYuaXNwYwotQEAgLTI0LDYgKzI0LDggQEAKLSAvLzsgUlVOOiAle2lzcGN9ICVz IC1vICV0Lm8gLS1ub3N0ZGxpYiAtLXRhcmdldD1zc2UyLWkzMng0IC0tY3B1PWljbAotIC8vOyBS VU46ICV7aXNwY30gJXMgLW8gJXQubyAtLW5vc3RkbGliIC0tdGFyZ2V0PXNzZTItaTMyeDQgLS1j cHU9aWNlbGFrZS1zZXJ2ZXIKLSAvLzsgUlVOOiAle2lzcGN9ICVzIC1vICV0Lm8gLS1ub3N0ZGxp YiAtLXRhcmdldD1zc2UyLWkzMng0IC0tY3B1PWljeAotKy8vOyBSVU46ICV7aXNwY30gJXMgLW8g JXQubyAtLW5vc3RkbGliIC0tdGFyZ2V0PXNzZTItaTMyeDQgLS1jcHU9dGlnZXJsYWtlCi0rLy87 IFJVTjogJXtpc3BjfSAlcyAtbyAldC5vIC0tbm9zdGRsaWIgLS10YXJnZXQ9c3NlMi1pMzJ4NCAt LWNwdT10Z2wKLSAKLSAvLyBSRVFVSVJFUzogWDg2X0VOQUJMRUQKLSAKLWRpZmYgLS1naXQgYS90 ZXN0cy9saXQtdGVzdHMvY3B1c194ODZfbGx2bTEwLmlzcGMgYi90ZXN0cy9saXQtdGVzdHMvY3B1 c194ODZfbGx2bTEwLmlzcGMKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggZWYwMDAw MGU1Li4wMDAwMDAwMDAKLS0tLSBhL3Rlc3RzL2xpdC10ZXN0cy9jcHVzX3g4Nl9sbHZtMTAuaXNw YwotKysrIC9kZXYvbnVsbAotQEAgLTEsMTEgKzAsMCBAQAotLS8vIFRoZSB0ZXN0IGNoZWNrcyB0 aGF0IGNwdSBkZWZpbml0aW9ucyAoaW5jbHVkaW5nIGFsbCBzeW5vbnltcykgYXJlIHN1Y2Nlc3Nm dWxseSBjb25zdW1lZCBieSBjb21waWxlci4KLS0KLS0vLzsgUlVOOiAle2lzcGN9ICVzIC1vICV0 Lm8gLS1ub3N0ZGxpYiAtLXRhcmdldD1zc2UyLWkzMng0IC0tY3B1PXRpZ2VybGFrZQotLS8vOyBS VU46ICV7aXNwY30gJXMgLW8gJXQubyAtLW5vc3RkbGliIC0tdGFyZ2V0PXNzZTItaTMyeDQgLS1j cHU9dGdsCi0tCi0tLy8gUkVRVUlSRVM6IFg4Nl9FTkFCTEVECi0tLy8gUkVRVUlSRVM6IExMVk1f MTBfMCsKLS0KLS11bmlmb3JtIGludCBpOwotLQotLXZvaWQgZm9vKCkge30KLWRpZmYgLS1naXQg YS90ZXN0cy9saXQtdGVzdHMvbGl0LmNmZyBiL3Rlc3RzL2xpdC10ZXN0cy9saXQuY2ZnCi1pbmRl eCAxNzAxNjU3OWQuLjA0NWU2OTQzNyAxMDA2NDQKLS0tLSBhL3Rlc3RzL2xpdC10ZXN0cy9saXQu Y2ZnCi0rKysgYi90ZXN0cy9saXQtdGVzdHMvbGl0LmNmZwotQEAgLTMwLDExICszMCw2IEBAIHBy aW50KCJDb25maWc6IikKLSAKLSAjIExMVk0gdmVyc2lvbgotIGxsdm1fdmVyc2lvbiA9IExvb3Nl VmVyc2lvbihpc3BjX2xsdm1fdmVyc2lvbl9udW1iZXIpCi0taWYgbGx2bV92ZXJzaW9uID49IExv b3NlVmVyc2lvbigiMTAuMC4wIik6Ci0tICAgIHByaW50KCJMTFZNXzEwXzArOiBZRVMiKQotLSAg ICBjb25maWcuYXZhaWxhYmxlX2ZlYXR1cmVzLmFkZCgiTExWTV8xMF8wKyIpCi0tZWxzZToKLS0g ICAgcHJpbnQoIkxMVk1fMTBfMCs6IE5PIikKLSAKLSBpZiBsbHZtX3ZlcnNpb24gPj0gTG9vc2VW ZXJzaW9uKCIxMi4wLjAiKToKLSAgICAgcHJpbnQoIkxMVk1fMTJfMCs6IFlFUyIpCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDAzLnBhdGNoIGIvc3JjcGtncy9pc3Bj L3BhdGNoZXMvbGx2bTEyLTAwMy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDQyM2FmYzllM2Y5Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2 bTEyLTAwMy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1MDQgKzAsMCBAQAotRnJvbSAxODUx ZDE4YjIxM2RiYWQxNjk5MzcwNzYxNzZiMmQ1NTA5NzMzYzc2IE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQotRnJvbTogRGVlcGFrIFJhamVuZHJha3VtYXJhbiA8ZGVlcGFrLnJhamVuZHJha3VtYXJh bkBpbnRlbC5jb20+Ci1EYXRlOiBUdWUsIDEyIEphbiAyMDIxIDIyOjE1OjEyIC0wODAwCi1TdWJq ZWN0OiBbUEFUQ0hdIGZpeGVzICMxODIxIC0gUmVtb3ZpbmcgTExWTUdldE5hbWUoKSBhbmQgc3dp dGNoaW5nIHRvCi0gTExWTTo6VHdpbmUuCi0KLS0tLQotIHNyYy9jdHguY3BwICAgICAgfCAzMDQg KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBzcmMvY3R4 LmggICAgICAgIHwgIDcyICsrKysrLS0tLS0tCi0gc3JjL2V4cHIuY3BwICAgICB8ICAzNiArKyst LS0KLSBzcmMvbGx2bXV0aWwuY3BwIHwgIDE3IC0tLQotIHNyYy9sbHZtdXRpbC5oICAgfCAgIDUg LQotIHNyYy9vcHQuY3BwICAgICAgfCAxMDMgKysrKysrKysrLS0tLS0tLQotIDYgZmlsZXMgY2hh bmdlZCwgMjU1IGluc2VydGlvbnMoKyksIDI4MiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBh L3NyYy9jdHguY3BwIGIvc3JjL2N0eC5jcHAKLWluZGV4IDQyYzRlYTA5ZC4uZGVkNTI0YjcxIDEw MDY0NAotLS0tIGEvc3JjL2N0eC5jcHAKLSsrKyBiL3NyYy9jdHguY3BwCi1AQCAtMTAyMCw4ICsx MDIwLDggQEAgdm9pZCBGdW5jdGlvbkVtaXRDb250ZXh0OjpFbWl0Q2FzZUxhYmVsKGludCB2YWx1 ZSwgYm9vbCBjaGVja01hc2ssIFNvdXJjZVBvcyBwb3MKLSAgICAgbGx2bTo6QmFzaWNCbG9jayAq YmJDYXNlSW1wbCA9IE5VTEw7Ci0gICAgIGlmIChlbWl0R2VuWEhhcmR3YXJlTWFzaygpKSB7Ci0g ICAgICAgICAvLyBDcmVhdGUgYmFzaWMgYmxvY2sgd2l0aCBhY3R1YWwgY2FzZSBpbXBsZW1lbnRh dGlvbgotLSAgICAgICAgc3RkOjpzdHJpbmcgYmJOYW1lID0gYmJDYXNlLT5nZXROYW1lKCkuc3Ry KCkgKyAiX2ltcGwiOwotLSAgICAgICAgYmJDYXNlSW1wbCA9IENyZWF0ZUJhc2ljQmxvY2soYmJO YW1lLmNfc3RyKCksIGJiQ2FzZSk7Ci0rICAgICAgICBsbHZtOjpUd2luZSBiYk5hbWUgPSBsbHZt OjpUd2luZShiYkNhc2UtPmdldE5hbWUoKSkgKyAiX2ltcGwiOwotKyAgICAgICAgYmJDYXNlSW1w bCA9IENyZWF0ZUJhc2ljQmxvY2soYmJOYW1lLCBiYkNhc2UpOwotICAgICB9Ci0gI2VuZGlmCi0g Ci1AQCAtMTE4NSw3ICsxMTg1LDcgQEAgYm9vbCBGdW5jdGlvbkVtaXRDb250ZXh0Ojppbml0TGFi ZWxCQmxvY2tzKEFTVE5vZGUgKm5vZGUsIHZvaWQgKmRhdGEpIHsKLSAgICAgaWYgKGN0eC0+bGFi ZWxNYXAuZmluZChscy0+bmFtZSkgIT0gY3R4LT5sYWJlbE1hcC5lbmQoKSkKLSAgICAgICAgIEVy cm9yKGxzLT5wb3MsICJNdWx0aXBsZSBsYWJlbHMgbmFtZWQgXCIlc1wiIGluIGZ1bmN0aW9uLiIs IGxzLT5uYW1lLmNfc3RyKCkpOwotICAgICBlbHNlIHsKLS0gICAgICAgIGxsdm06OkJhc2ljQmxv Y2sgKmJiID0gY3R4LT5DcmVhdGVCYXNpY0Jsb2NrKGxzLT5uYW1lLmNfc3RyKCkpOwotKyAgICAg ICAgbGx2bTo6QmFzaWNCbG9jayAqYmIgPSBjdHgtPkNyZWF0ZUJhc2ljQmxvY2sobHMtPm5hbWUp OwotICAgICAgICAgY3R4LT5sYWJlbE1hcFtscy0+bmFtZV0gPSBiYjsKLSAgICAgfQotICAgICBy ZXR1cm4gdHJ1ZTsKLUBAIC0xMjk5LDcgKzEyOTksNyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25F bWl0Q29udGV4dDo6QW55KGxsdm06OlZhbHVlICptYXNrKSB7Ci0gICAgIC8vIFdlIGNhbiBhY3R1 YWxseSBjYWxsIGVpdGhlciBvbmUsIHNpbmNlIGJvdGggYXJlIGkzMnMgYXMgZmFyIGFzCi0gICAg IC8vIExMVk0ncyB0eXBlIHN5c3RlbSBpcyBjb25jZXJuZWQuLi4KLSAgICAgbGx2bTo6RnVuY3Rp b24gKmZtbSA9IG1tWzBdLT5mdW5jdGlvbjsKLS0gICAgcmV0dXJuIENhbGxJbnN0KGZtbSwgTlVM TCwgbWFzaywgTExWTUdldE5hbWUobWFzaywgIl9hbnkiKSk7Ci0rICAgIHJldHVybiBDYWxsSW5z dChmbW0sIE5VTEwsIG1hc2ssIGxsdm06OlR3aW5lKG1hc2stPmdldE5hbWUoKSkgKyAiX2FueSIp OwotIH0KLSAKLSBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6QWxsKGxsdm06OlZh bHVlICptYXNrKSB7Ci1AQCAtMTMxNSw3ICsxMzE1LDcgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9u RW1pdENvbnRleHQ6OkFsbChsbHZtOjpWYWx1ZSAqbWFzaykgewotICAgICAvLyBXZSBjYW4gYWN0 dWFsbHkgY2FsbCBlaXRoZXIgb25lLCBzaW5jZSBib3RoIGFyZSBpMzJzIGFzIGZhciBhcwotICAg ICAvLyBMTFZNJ3MgdHlwZSBzeXN0ZW0gaXMgY29uY2VybmVkLi4uCi0gICAgIGxsdm06OkZ1bmN0 aW9uICpmbW0gPSBtbVswXS0+ZnVuY3Rpb247Ci0tICAgIHJldHVybiBDYWxsSW5zdChmbW0sIE5V TEwsIG1hc2ssIExMVk1HZXROYW1lKG1hc2ssICJfYWxsIikpOwotKyAgICByZXR1cm4gQ2FsbElu c3QoZm1tLCBOVUxMLCBtYXNrLCBsbHZtOjpUd2luZShtYXNrLT5nZXROYW1lKCkpICsgIl9hbGwi KTsKLSB9Ci0gCi0gbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6Ok5vbmUobGx2bTo6 VmFsdWUgKm1hc2spIHsKLUBAIC0xMzMxLDcgKzEzMzEsNyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rp b25FbWl0Q29udGV4dDo6Tm9uZShsbHZtOjpWYWx1ZSAqbWFzaykgewotICAgICAvLyBXZSBjYW4g YWN0dWFsbHkgY2FsbCBlaXRoZXIgb25lLCBzaW5jZSBib3RoIGFyZSBpMzJzIGFzIGZhciBhcwot ICAgICAvLyBMTFZNJ3MgdHlwZSBzeXN0ZW0gaXMgY29uY2VybmVkLi4uCi0gICAgIGxsdm06OkZ1 bmN0aW9uICpmbW0gPSBtbVswXS0+ZnVuY3Rpb247Ci0tICAgIHJldHVybiBDYWxsSW5zdChmbW0s IE5VTEwsIG1hc2ssIExMVk1HZXROYW1lKG1hc2ssICJfbm9uZSIpKTsKLSsgICAgcmV0dXJuIENh bGxJbnN0KGZtbSwgTlVMTCwgbWFzaywgbGx2bTo6VHdpbmUobWFzay0+Z2V0TmFtZSgpKSArICJf bm9uZSIpOwotIH0KLSAKLSBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6TGFuZU1h c2sobGx2bTo6VmFsdWUgKnYpIHsKLUBAIC0xMzQ5LDcgKzEzNDksNyBAQCBsbHZtOjpWYWx1ZSAq RnVuY3Rpb25FbWl0Q29udGV4dDo6TGFuZU1hc2sobGx2bTo6VmFsdWUgKnYpIHsKLSAgICAgLy8g V2UgY2FuIGFjdHVhbGx5IGNhbGwgZWl0aGVyIG9uZSwgc2luY2UgYm90aCBhcmUgaTMycyBhcyBm YXIgYXMKLSAgICAgLy8gTExWTSdzIHR5cGUgc3lzdGVtIGlzIGNvbmNlcm5lZC4uLgotICAgICBs bHZtOjpGdW5jdGlvbiAqZm1tID0gbW1bMF0tPmZ1bmN0aW9uOwotLSAgICByZXR1cm4gQ2FsbElu c3QoZm1tLCBOVUxMLCB2LCBMTFZNR2V0TmFtZSh2LCAiX21vdm1zayIpKTsKLSsgICAgcmV0dXJu IENhbGxJbnN0KGZtbSwgTlVMTCwgdiwgbGx2bTo6VHdpbmUodi0+Z2V0TmFtZSgpKSArICJfbW92 bXNrIik7Ci0gfQotIAotIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpNYXNrc0Fs bEVxdWFsKGxsdm06OlZhbHVlICp2MSwgbGx2bTo6VmFsdWUgKnYyKSB7Ci1AQCAtMTM2NCwxMSAr MTM2NCwxMiBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6TWFza3NBbGxFcXVh bChsbHZtOjpWYWx1ZSAqdjEsIGxsdm06OlZhbHVlICp2MgotICNlbHNlCi0gICAgIGlmIChnLT50 YXJnZXQtPmdldEFyY2goKSA9PSBBcmNoOjp3YXNtMzIpIHsKLSAgICAgICAgIGxsdm06OkZ1bmN0 aW9uICpmbW0gPSBtLT5tb2R1bGUtPmdldEZ1bmN0aW9uKCJfX3dhc21fY21wX21za19lcSIpOwot LSAgICAgICAgcmV0dXJuIENhbGxJbnN0KGZtbSwgTlVMTCwge3YxLCB2Mn0sIExMVk1HZXROYW1l KCJ3YXNtX2NtcF9tc2tfZXEiLCB2MSwgdjIpKTsKLSsgICAgICAgIHJldHVybiBDYWxsSW5zdChm bW0sIE5VTEwsIHt2MSwgdjJ9LCAoKGxsdm06OlR3aW5lKCJ3YXNtX2NtcF9tc2tfZXFfIikgKyB2 MS0+Z2V0TmFtZSgpKSArICJfIikgKyB2Mi0+Z2V0TmFtZSgpKTsKLSAgICAgfQotICAgICBsbHZt OjpWYWx1ZSAqbW0xID0gTGFuZU1hc2sodjEpOwotICAgICBsbHZtOjpWYWx1ZSAqbW0yID0gTGFu ZU1hc2sodjIpOwotLSAgICByZXR1cm4gQ21wSW5zdChsbHZtOjpJbnN0cnVjdGlvbjo6SUNtcCwg bGx2bTo6Q21wSW5zdDo6SUNNUF9FUSwgbW0xLCBtbTIsIExMVk1HZXROYW1lKCJlcXVhbCIsIHYx LCB2MikpOwotKyAgICByZXR1cm4gQ21wSW5zdChsbHZtOjpJbnN0cnVjdGlvbjo6SUNtcCwgbGx2 bTo6Q21wSW5zdDo6SUNNUF9FUSwgbW0xLCBtbTIsCi0rICAgICAgICAgICAgICAgICAgICgobGx2 bTo6VHdpbmUoImVxdWFsXyIpICsgdjEtPmdldE5hbWUoKSkgKyAiXyIpICsgdjItPmdldE5hbWUo KSk7Ci0gI2VuZGlmCi0gfQotIAotQEAgLTEzOTIsNyArMTM5Myw3IEBAIGxsdm06OlZhbHVlICpG dW5jdGlvbkVtaXRDb250ZXh0OjpHZXRTdHJpbmdQdHIoY29uc3Qgc3RkOjpzdHJpbmcgJnN0cikg ewotICAgICByZXR1cm4gbmV3IGxsdm06OkJpdENhc3RJbnN0KGxzdHJQdHIsIExMVk1UeXBlczo6 Vm9pZFBvaW50ZXJUeXBlLCAic3RyX3ZvaWRfcHRyIiwgYmJsb2NrKTsKLSB9Ci0gCi0tbGx2bTo6 QmFzaWNCbG9jayAqRnVuY3Rpb25FbWl0Q29udGV4dDo6Q3JlYXRlQmFzaWNCbG9jayhjb25zdCBj aGFyICpuYW1lLCBsbHZtOjpCYXNpY0Jsb2NrICppbnNlcnRBZnRlcikgewotK2xsdm06OkJhc2lj QmxvY2sgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkNyZWF0ZUJhc2ljQmxvY2soY29uc3QgbGx2bTo6 VHdpbmUgJm5hbWUsIGxsdm06OkJhc2ljQmxvY2sgKmluc2VydEFmdGVyKSB7Ci0gICAgIGxsdm06 OkJhc2ljQmxvY2sgKm5ld0JCID0gbGx2bTo6QmFzaWNCbG9jazo6Q3JlYXRlKCpnLT5jdHgsIG5h bWUsIGxsdm1GdW5jdGlvbik7Ci0gICAgIGlmIChpbnNlcnRBZnRlcikKLSAgICAgICAgIG5ld0JC LT5tb3ZlQWZ0ZXIoaW5zZXJ0QWZ0ZXIpOwotQEAgLTE0MTYsMTQgKzE0MTcsMTUgQEAgbGx2bTo6 VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkkxVmVjVG9Cb29sVmVjKGxsdm06OlZhbHVlICpi KSB7Ci0gCi0gICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGF0LT5nZXROdW1F bGVtZW50cygpOyArK2kpIHsKLSAgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqZWx0ID0gRXh0cmFj dEluc3QoYiwgaSk7Ci0tICAgICAgICAgICAgbGx2bTo6VmFsdWUgKnNleHQgPSBTd2l0Y2hCb29s U2l6ZShlbHQsIExMVk1UeXBlczo6Qm9vbFZlY3RvclN0b3JhZ2VUeXBlLCBMTFZNR2V0TmFtZShl bHQsICJfdG9fYm9vbHZlYyIpKTsKLSsgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqc2V4dCA9Ci0r ICAgICAgICAgICAgICAgIFN3aXRjaEJvb2xTaXplKGVsdCwgTExWTVR5cGVzOjpCb29sVmVjdG9y U3RvcmFnZVR5cGUsIGxsdm06OlR3aW5lKGVsdC0+Z2V0TmFtZSgpKSArICJfdG9fYm9vbHZlYyIp OwotICAgICAgICAgICAgIHJldCA9IEluc2VydEluc3QocmV0LCBzZXh0LCBpKTsKLSAgICAgICAg IH0KLSAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAgICAvLyBGb3Ig bm9uLWFycmF5IHR5cGVzLCBjb252ZXJ0IHRvICdMTFZNVHlwZXM6OkJvb2xWZWN0b3JUeXBlJyBp ZgotICAgICAgICAgLy8gbmVjZXNzYXJ5LgotLSAgICAgICAgcmV0dXJuIFN3aXRjaEJvb2xTaXpl KGIsIExMVk1UeXBlczo6Qm9vbFZlY3RvclR5cGUsIExMVk1HZXROYW1lKGIsICJfdG9fYm9vbHZl YyIpKTsKLSsgICAgICAgIHJldHVybiBTd2l0Y2hCb29sU2l6ZShiLCBMTFZNVHlwZXM6OkJvb2xW ZWN0b3JUeXBlLCBsbHZtOjpUd2luZShiLT5nZXROYW1lKCkpICsgIl90b19ib29sdmVjIik7Ci0g ICAgIH0KLSB9Ci0gCi1AQCAtMTU2Myw3ICsxNTY1LDcgQEAgc3RhdGljIGludCBsQXJyYXlWZWN0 b3JXaWR0aChsbHZtOjpUeXBlICp0KSB7Ci0gfQotIAotIGxsdm06OlZhbHVlICpGdW5jdGlvbkVt aXRDb250ZXh0OjpCaW5hcnlPcGVyYXRvcihsbHZtOjpJbnN0cnVjdGlvbjo6QmluYXJ5T3BzIGlu c3QsIGxsdm06OlZhbHVlICp2MCwgbGx2bTo6VmFsdWUgKnYxLAotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lKSB7Ci0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxsdm06 OlR3aW5lICZuYW1lKSB7Ci0gICAgIGlmICh2MCA9PSBOVUxMIHx8IHYxID09IE5VTEwpIHsKLSAg ICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAg ICByZXR1cm4gTlVMTDsKLUBAIC0xNTczLDcgKzE1NzUsNyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rp b25FbWl0Q29udGV4dDo6QmluYXJ5T3BlcmF0b3IobGx2bTo6SW5zdHJ1Y3Rpb246OkJpbmFyeU9w cyBpbgotICAgICBsbHZtOjpUeXBlICp0eXBlID0gdjAtPmdldFR5cGUoKTsKLSAgICAgaW50IGFy cmF5U2l6ZSA9IGxBcnJheVZlY3RvcldpZHRoKHR5cGUpOwotICAgICBpZiAoYXJyYXlTaXplID09 IDApIHsKLS0gICAgICAgIGxsdm06Okluc3RydWN0aW9uICpib3AgPSBsbHZtOjpCaW5hcnlPcGVy YXRvcjo6Q3JlYXRlKGluc3QsIHYwLCB2MSwgbmFtZSA/IG5hbWUgOiAiIiwgYmJsb2NrKTsKLSsg ICAgICAgIGxsdm06Okluc3RydWN0aW9uICpib3AgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3Jl YXRlKGluc3QsIHYwLCB2MSwgbmFtZSwgYmJsb2NrKTsKLSAgICAgICAgIEFkZERlYnVnUG9zKGJv cCk7Ci0gICAgICAgICByZXR1cm4gYm9wOwotICAgICB9IGVsc2UgewotQEAgLTE1OTEsNyArMTU5 Myw3IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpCaW5hcnlPcGVyYXRvcihs bHZtOjpJbnN0cnVjdGlvbjo6QmluYXJ5T3BzIGluCi0gICAgIH0KLSB9Ci0gCi0tbGx2bTo6VmFs dWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6Ok5vdE9wZXJhdG9yKGxsdm06OlZhbHVlICp2LCBjb25z dCBjaGFyICpuYW1lKSB7Ci0rbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6Ok5vdE9w ZXJhdG9yKGxsdm06OlZhbHVlICp2LCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBp ZiAodiA9PSBOVUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JD b3VudCA+IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci1AQCAtMTYwMywxNCArMTYwNSwxNCBA QCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6Tm90T3BlcmF0b3IobGx2bTo6VmFs dWUgKnYsIGNvbnN0IGNoYXIgKm5hbWUpCi0gICAgIGxsdm06OlR5cGUgKnR5cGUgPSB2LT5nZXRU eXBlKCk7Ci0gICAgIGludCBhcnJheVNpemUgPSBsQXJyYXlWZWN0b3JXaWR0aCh0eXBlKTsKLSAg ICAgaWYgKGFycmF5U2l6ZSA9PSAwKSB7Ci0tICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqYmlu c3QgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlTm90KHYsIG5hbWUgPyBuYW1lIDogIm5v dCIsIGJibG9jayk7Ci0rICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqYmluc3QgPSBsbHZtOjpC aW5hcnlPcGVyYXRvcjo6Q3JlYXRlTm90KHYsIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gIm5v dCIgOiBuYW1lLCBiYmxvY2spOwotICAgICAgICAgQWRkRGVidWdQb3MoYmluc3QpOwotICAgICAg ICAgcmV0dXJuIGJpbnN0OwotICAgICB9IGVsc2UgewotICAgICAgICAgbGx2bTo6VmFsdWUgKnJl dCA9IGxsdm06OlVuZGVmVmFsdWU6OmdldCh0eXBlKTsKLSAgICAgICAgIGZvciAoaW50IGkgPSAw OyBpIDwgYXJyYXlTaXplOyArK2kpIHsKLSAgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqYSA9IEV4 dHJhY3RJbnN0KHYsIGkpOwotLSAgICAgICAgICAgIGxsdm06OlZhbHVlICpvcCA9IGxsdm06OkJp bmFyeU9wZXJhdG9yOjpDcmVhdGVOb3QoYSwgbmFtZSA/IG5hbWUgOiAibm90IiwgYmJsb2NrKTsK LSsgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqb3AgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3Jl YXRlTm90KGEsIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gIm5vdCIgOiBuYW1lLCBiYmxvY2sp OwotICAgICAgICAgICAgIEFkZERlYnVnUG9zKG9wKTsKLSAgICAgICAgICAgICByZXQgPSBJbnNl cnRJbnN0KHJldCwgb3AsIGkpOwotICAgICAgICAgfQotQEAgLTE2MzgsNyArMTY0MCw3IEBAIHN0 YXRpYyBsbHZtOjpUeXBlICpsR2V0TWF0Y2hpbmdCb29sVmVjdG9yVHlwZShsbHZtOjpUeXBlICp0 eXBlKSB7Ci0gfQotIAotIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpDbXBJbnN0 KGxsdm06Okluc3RydWN0aW9uOjpPdGhlck9wcyBpbnN0LCBsbHZtOjpDbXBJbnN0OjpQcmVkaWNh dGUgcHJlZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZt OjpWYWx1ZSAqdjAsIGxsdm06OlZhbHVlICp2MSwgY29uc3QgY2hhciAqbmFtZSkgewotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OlZhbHVlICp2MCwgbGx2 bTo6VmFsdWUgKnYxLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBpZiAodjAgPT0g TlVMTCB8fCB2MSA9PSBOVUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ ZXJyb3JDb3VudCA+IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci1AQCAtMTY0OCw3ICsxNjUw LDggQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkNtcEluc3QobGx2bTo6SW5z dHJ1Y3Rpb246Ok90aGVyT3BzIGluc3QsIGxsdm0KLSAgICAgbGx2bTo6VHlwZSAqdHlwZSA9IHYw LT5nZXRUeXBlKCk7Ci0gICAgIGludCBhcnJheVNpemUgPSBsQXJyYXlWZWN0b3JXaWR0aCh0eXBl KTsKLSAgICAgaWYgKGFycmF5U2l6ZSA9PSAwKSB7Ci0tICAgICAgICBsbHZtOjpJbnN0cnVjdGlv biAqY2kgPSBsbHZtOjpDbXBJbnN0OjpDcmVhdGUoaW5zdCwgcHJlZCwgdjAsIHYxLCBuYW1lID8g bmFtZSA6ICJjbXAiLCBiYmxvY2spOwotKyAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmNpID0K LSsgICAgICAgICAgICBsbHZtOjpDbXBJbnN0OjpDcmVhdGUoaW5zdCwgcHJlZCwgdjAsIHYxLCBu YW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/ICJjbXAiIDogbmFtZSwgYmJsb2NrKTsKLSAgICAgICAg IEFkZERlYnVnUG9zKGNpKTsKLSAgICAgICAgIHJldHVybiBjaTsKLSAgICAgfSBlbHNlIHsKLUBA IC0xNjU3LDE0ICsxNjYwLDE0IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpD bXBJbnN0KGxsdm06Okluc3RydWN0aW9uOjpPdGhlck9wcyBpbnN0LCBsbHZtCi0gICAgICAgICBm b3IgKGludCBpID0gMDsgaSA8IGFycmF5U2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICAgbGx2bTo6 VmFsdWUgKmEgPSBFeHRyYWN0SW5zdCh2MCwgaSk7Ci0gICAgICAgICAgICAgbGx2bTo6VmFsdWUg KmIgPSBFeHRyYWN0SW5zdCh2MSwgaSk7Ci0tICAgICAgICAgICAgbGx2bTo6VmFsdWUgKm9wID0g Q21wSW5zdChpbnN0LCBwcmVkLCBhLCBiLCBuYW1lKTsKLSsgICAgICAgICAgICBsbHZtOjpWYWx1 ZSAqb3AgPSBDbXBJbnN0KGluc3QsIHByZWQsIGEsIGIsIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgp ID8gImNtcCIgOiBuYW1lKTsKLSAgICAgICAgICAgICByZXQgPSBJbnNlcnRJbnN0KHJldCwgb3As IGkpOwotICAgICAgICAgfQotICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgfQotIH0KLSAKLS1s bHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6U21lYXJVbmlmb3JtKGxsdm06OlZhbHVl ICp2YWx1ZSwgY29uc3QgY2hhciAqbmFtZSkgewotK2xsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRD b250ZXh0OjpTbWVhclVuaWZvcm0obGx2bTo6VmFsdWUgKnZhbHVlLCBjb25zdCBsbHZtOjpUd2lu ZSAmbmFtZSkgewotICAgICBpZiAodmFsdWUgPT0gTlVMTCkgewotICAgICAgICAgQXNzZXJ0UG9z KGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsKLSAgICAgICAgIHJldHVybiBOVUxMOwot QEAgLTE3MDQsMjEgKzE3MDcsMTkgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6 OlNtZWFyVW5pZm9ybShsbHZtOjpWYWx1ZSAqdmFsdWUsIGNvbnN0IGNoYXIgKm4KLSAgICAgcmV0 dXJuIHJldDsKLSB9Ci0gCi0tbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkJpdENh c3RJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwgY29uc3QgY2hhciAq bmFtZSkgewotK2xsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpCaXRDYXN0SW5zdChs bHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5cGUsIGNvbnN0IGxsdm06OlR3aW5lICZu YW1lKSB7Ci0gICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3Vy cmVudFBvcywgbS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAg IH0KLSAKLS0gICAgaWYgKG5hbWUgPT0gTlVMTCkKLS0gICAgICAgIG5hbWUgPSBMTFZNR2V0TmFt ZSh2YWx1ZSwgIl9iaXRjYXN0Iik7Ci0tCi0tICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0g bmV3IGxsdm06OkJpdENhc3RJbnN0KHZhbHVlLCB0eXBlLCBuYW1lLCBiYmxvY2spOwotKyAgICBs bHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9IG5ldyBsbHZtOjpCaXRDYXN0SW5zdCgKLSsgICAgICAg IHZhbHVlLCB0eXBlLCBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/IGxsdm06OlR3aW5lKHZhbHVl LT5nZXROYW1lKCkpICsgIl9iaXRjYXN0IiA6IG5hbWUsIGJibG9jayk7Ci0gICAgIEFkZERlYnVn UG9zKGluc3QpOwotICAgICByZXR1cm4gaW5zdDsKLSB9Ci0gCi0tbGx2bTo6VmFsdWUgKkZ1bmN0 aW9uRW1pdENvbnRleHQ6OlB0clRvSW50SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGNvbnN0IGNo YXIgKm5hbWUpIHsKLStsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6UHRyVG9JbnRJ bnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAg aWYgKHZhbHVlID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBtLT5l cnJvckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLUBAIC0xNzI4LDIzICsxNzI5 LDE5IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpQdHJUb0ludEluc3QobGx2 bTo6VmFsdWUgKnZhbHVlLCBjb25zdCBjaGFyICpuCi0gICAgICAgICAvLyBuby1vcCBmb3IgdmFy eWluZyBwb2ludGVyczsgdGhleSdyZSBhbHJlYWR5IHZlY3RvcnMgb2YgaW50cwotICAgICAgICAg cmV0dXJuIHZhbHVlOwotIAotLSAgICBpZiAobmFtZSA9PSBOVUxMKQotLSAgICAgICAgbmFtZSA9 IExMVk1HZXROYW1lKHZhbHVlLCAiX3B0cjJpbnQiKTsKLSAgICAgbGx2bTo6VHlwZSAqdHlwZSA9 IExMVk1UeXBlczo6UG9pbnRlckludFR5cGU7Ci0tICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0 ID0gbmV3IGxsdm06OlB0clRvSW50SW5zdCh2YWx1ZSwgdHlwZSwgbmFtZSwgYmJsb2NrKTsKLSsg ICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QgPSBuZXcgbGx2bTo6UHRyVG9JbnRJbnN0KAotKyAg ICAgICAgdmFsdWUsIHR5cGUsIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gbGx2bTo6VHdpbmUo dmFsdWUtPmdldE5hbWUoKSkgKyAiX3B0cjJpbnQiIDogbmFtZSwgYmJsb2NrKTsKLSAgICAgQWRk RGVidWdQb3MoaW5zdCk7Ci0gICAgIHJldHVybiBpbnN0OwotIH0KLSAKLS1sbHZtOjpWYWx1ZSAq RnVuY3Rpb25FbWl0Q29udGV4dDo6UHRyVG9JbnRJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2 bTo6VHlwZSAqdG9UeXBlLCBjb25zdCBjaGFyICpuYW1lKSB7Ci0rbGx2bTo6VmFsdWUgKkZ1bmN0 aW9uRW1pdENvbnRleHQ6OlB0clRvSW50SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5 cGUgKnRvVHlwZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAgaWYgKHZhbHVlID09 IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4g MCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgfQotIAotLSAgICBpZiAobmFtZSA9PSBO VUxMKQotLSAgICAgICAgbmFtZSA9IExMVk1HZXROYW1lKHZhbHVlLCAiX3B0cjJpbnQiKTsKLS0K LSAgICAgbGx2bTo6VHlwZSAqZnJvbVR5cGUgPSB2YWx1ZS0+Z2V0VHlwZSgpOwotICAgICBpZiAo bGx2bTo6aXNhPGxsdm06OlZlY3RvclR5cGU+KGZyb21UeXBlKSkgewotICAgICAgICAgLy8gdmFy eWluZyBwb2ludGVyCi1AQCAtMTc1MiwyNyArMTc0OSwyNiBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rp b25FbWl0Q29udGV4dDo6UHRyVG9JbnRJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlw ZSAqdAotICAgICAgICAgICAgIC8vIGFscmVhZHkgdGhlIHJpZ2h0IHR5cGUtLWRvbmUKLSAgICAg ICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgICAgICBlbHNlIGlmIChmcm9tVHlwZS0+Z2V0U2Nh bGFyU2l6ZUluQml0cygpID4gdG9UeXBlLT5nZXRTY2FsYXJTaXplSW5CaXRzKCkpCi0tICAgICAg ICAgICAgcmV0dXJuIFRydW5jSW5zdCh2YWx1ZSwgdG9UeXBlLCBuYW1lKTsKLSsgICAgICAgICAg ICByZXR1cm4gVHJ1bmNJbnN0KHZhbHVlLCB0b1R5cGUsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/IGxsdm06OlR3aW5lKHZhbHVlLT5nZXRO YW1lKCkpICsgIl9wdHIyaW50IiA6IG5hbWUpOwotICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg ICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIGZyb21UeXBlLT5nZXRTY2FsYXJTaXplSW5CaXRzKCkg PCB0b1R5cGUtPmdldFNjYWxhclNpemVJbkJpdHMoKSk7Ci0tICAgICAgICAgICAgcmV0dXJuIFpF eHRJbnN0KHZhbHVlLCB0b1R5cGUsIG5hbWUpOwotKyAgICAgICAgICAgIHJldHVybiBaRXh0SW5z dCh2YWx1ZSwgdG9UeXBlLCBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/IGxsdm06OlR3aW5lKHZh bHVlLT5nZXROYW1lKCkpICsgIl9wdHIyaW50IiA6IG5hbWUpOwotICAgICAgICAgfQotICAgICB9 Ci0gCi0tICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0gbmV3IGxsdm06OlB0clRvSW50SW5z dCh2YWx1ZSwgdG9UeXBlLCBuYW1lLCBiYmxvY2spOwotKyAgICBsbHZtOjpJbnN0cnVjdGlvbiAq aW5zdCA9IG5ldyBsbHZtOjpQdHJUb0ludEluc3QoCi0rICAgICAgICB2YWx1ZSwgdG9UeXBlLCBu YW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/IGxsdm06OlR3aW5lKHZhbHVlLT5nZXROYW1lKCkpICsg Il9wdHIyaW50IiA6IG5hbWUsIGJibG9jayk7Ci0gICAgIEFkZERlYnVnUG9zKGluc3QpOwotICAg ICByZXR1cm4gaW5zdDsKLSB9Ci0gCi0tbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6 OkludFRvUHRySW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnRvVHlwZSwgY29u c3QgY2hhciAqbmFtZSkgewotK2xsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpJbnRU b1B0ckluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0b1R5cGUsIGNvbnN0IGxs dm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgICBB c3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAgICAgcmV0dXJu IE5VTEw7Ci0gICAgIH0KLSAKLS0gICAgaWYgKG5hbWUgPT0gTlVMTCkKLS0gICAgICAgIG5hbWUg PSBMTFZNR2V0TmFtZSh2YWx1ZSwgIl9pbnQycHRyIik7Ci0tCi0gICAgIGxsdm06OlR5cGUgKmZy b21UeXBlID0gdmFsdWUtPmdldFR5cGUoKTsKLSAgICAgaWYgKGxsdm06OmlzYTxsbHZtOjpWZWN0 b3JUeXBlPihmcm9tVHlwZSkpIHsKLSAgICAgICAgIC8vIHZhcnlpbmcgcG9pbnRlcgotQEAgLTE3 ODAsOTUgKzE3NzYsODcgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkludFRv UHRySW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnQKLSAgICAgICAgICAgICAv LyBkb25lCi0gICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgICAgICAgZWxzZSBpZiAoZnJv bVR5cGUtPmdldFNjYWxhclNpemVJbkJpdHMoKSA+IHRvVHlwZS0+Z2V0U2NhbGFyU2l6ZUluQml0 cygpKQotLSAgICAgICAgICAgIHJldHVybiBUcnVuY0luc3QodmFsdWUsIHRvVHlwZSwgbmFtZSk7 Ci0rICAgICAgICAgICAgcmV0dXJuIFRydW5jSW5zdCh2YWx1ZSwgdG9UeXBlLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyBsbHZtOjpUd2lu ZSh2YWx1ZS0+Z2V0TmFtZSgpKSArICJfaW50MnB0ciIgOiBuYW1lKTsKLSAgICAgICAgIGVsc2Ug ewotICAgICAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBmcm9tVHlwZS0+Z2V0U2NhbGFy U2l6ZUluQml0cygpIDwgdG9UeXBlLT5nZXRTY2FsYXJTaXplSW5CaXRzKCkpOwotLSAgICAgICAg ICAgIHJldHVybiBaRXh0SW5zdCh2YWx1ZSwgdG9UeXBlLCBuYW1lKTsKLSsgICAgICAgICAgICBy ZXR1cm4gWkV4dEluc3QodmFsdWUsIHRvVHlwZSwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyBs bHZtOjpUd2luZSh2YWx1ZS0+Z2V0TmFtZSgpKSArICJfaW50MnB0ciIgOiBuYW1lKTsKLSAgICAg ICAgIH0KLSAgICAgfQotIAotLSAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9IG5ldyBsbHZt OjpJbnRUb1B0ckluc3QodmFsdWUsIHRvVHlwZSwgbmFtZSwgYmJsb2NrKTsKLSsgICAgbGx2bTo6 SW5zdHJ1Y3Rpb24gKmluc3QgPSBuZXcgbGx2bTo6SW50VG9QdHJJbnN0KAotKyAgICAgICAgdmFs dWUsIHRvVHlwZSwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyBsbHZtOjpUd2luZSh2YWx1ZS0+ Z2V0TmFtZSgpKSArICJfaW50MnB0ciIgOiBuYW1lLCBiYmxvY2spOwotICAgICBBZGREZWJ1Z1Bv cyhpbnN0KTsKLSAgICAgcmV0dXJuIGluc3Q7Ci0gfQotIAotLWxsdm06Okluc3RydWN0aW9uICpG dW5jdGlvbkVtaXRDb250ZXh0OjpUcnVuY0luc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpU eXBlICp0eXBlLCBjb25zdCBjaGFyICpuYW1lKSB7Ci0rbGx2bTo6SW5zdHJ1Y3Rpb24gKkZ1bmN0 aW9uRW1pdENvbnRleHQ6OlRydW5jSW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUg KnR5cGUsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIGlmICh2YWx1ZSA9PSBOVUxM KSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JDb3VudCA+IDApOwot ICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgIH0KLSAKLS0gICAgaWYgKG5hbWUgPT0gTlVMTCkK LS0gICAgICAgIG5hbWUgPSBMTFZNR2V0TmFtZSh2YWx1ZSwgIl90cnVuYyIpOwotLQotICAgICAv LyBUT0RPOiB3ZSBzaG91bGQgcHJvYmFibHkgaGFuZGxlIHRoZSBhcnJheSBjYXNlIGFzIGluCi0g ICAgIC8vIGUuZy4gQml0Q2FzdEluc3QoKSwgYnV0IHdlIGRvbid0IGN1cnJlbnRseSBuZWVkIHRo YXQgZnVuY3Rpb25hbGl0eQotLSAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9IG5ldyBsbHZt OjpUcnVuY0luc3QodmFsdWUsIHR5cGUsIG5hbWUsIGJibG9jayk7Ci0rICAgIGxsdm06Okluc3Ry dWN0aW9uICppbnN0ID0gbmV3IGxsdm06OlRydW5jSW5zdCgKLSsgICAgICAgIHZhbHVlLCB0eXBl LCBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/IGxsdm06OlR3aW5lKHZhbHVlLT5nZXROYW1lKCkp ICsgIl90cnVuYyIgOiBuYW1lLCBiYmxvY2spOwotICAgICBBZGREZWJ1Z1BvcyhpbnN0KTsKLSAg ICAgcmV0dXJuIGluc3Q7Ci0gfQotIAotIGxsdm06Okluc3RydWN0aW9uICpGdW5jdGlvbkVtaXRD b250ZXh0OjpDYXN0SW5zdChsbHZtOjpJbnN0cnVjdGlvbjo6Q2FzdE9wcyBvcCwgbGx2bTo6VmFs dWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0eXBlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lKSB7Ci0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxsdm06OlR3aW5lICZu YW1lKSB7Ci0gICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3Vy cmVudFBvcywgbS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAg IH0KLSAKLS0gICAgaWYgKG5hbWUgPT0gTlVMTCkKLS0gICAgICAgIG5hbWUgPSBMTFZNR2V0TmFt ZSh2YWx1ZSwgIl9jYXN0Iik7Ci0tCi0gICAgIC8vIFRPRE86IHdlIHNob3VsZCBwcm9iYWJseSBo YW5kbGUgdGhlIGFycmF5IGNhc2UgYXMgaW4KLSAgICAgLy8gZS5nLiBCaXRDYXN0SW5zdCgpLCBi dXQgd2UgZG9uJ3QgY3VycmVudGx5IG5lZWQgdGhhdCBmdW5jdGlvbmFsaXR5Ci0tICAgIGxsdm06 Okluc3RydWN0aW9uICppbnN0ID0gbGx2bTo6Q2FzdEluc3Q6OkNyZWF0ZShvcCwgdmFsdWUsIHR5 cGUsIG5hbWUsIGJibG9jayk7Ci0rICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0gbGx2bTo6 Q2FzdEluc3Q6OkNyZWF0ZSgKLSsgICAgICAgIG9wLCB2YWx1ZSwgdHlwZSwgbmFtZS5pc1RyaXZp YWxseUVtcHR5KCkgPyBsbHZtOjpUd2luZSh2YWx1ZS0+Z2V0TmFtZSgpKSArICJfY2FzdCIgOiBu YW1lLCBiYmxvY2spOwotICAgICBBZGREZWJ1Z1BvcyhpbnN0KTsKLSAgICAgcmV0dXJuIGluc3Q7 Ci0gfQotIAotLWxsdm06Okluc3RydWN0aW9uICpGdW5jdGlvbkVtaXRDb250ZXh0OjpGUENhc3RJ bnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwgY29uc3QgY2hhciAqbmFt ZSkgewotK2xsdm06Okluc3RydWN0aW9uICpGdW5jdGlvbkVtaXRDb250ZXh0OjpGUENhc3RJbnN0 KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwgY29uc3QgbGx2bTo6VHdpbmUg Jm5hbWUpIHsKLSAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBvcyhj dXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLSAg ICAgfQotIAotLSAgICBpZiAobmFtZSA9PSBOVUxMKQotLSAgICAgICAgbmFtZSA9IExMVk1HZXRO YW1lKHZhbHVlLCAiX2Nhc3QiKTsKLS0KLSAgICAgLy8gVE9ETzogd2Ugc2hvdWxkIHByb2JhYmx5 IGhhbmRsZSB0aGUgYXJyYXkgY2FzZSBhcyBpbgotICAgICAvLyBlLmcuIEJpdENhc3RJbnN0KCks IGJ1dCB3ZSBkb24ndCBjdXJyZW50bHkgbmVlZCB0aGF0IGZ1bmN0aW9uYWxpdHkKLS0gICAgbGx2 bTo6SW5zdHJ1Y3Rpb24gKmluc3QgPSBsbHZtOjpDYXN0SW5zdDo6Q3JlYXRlRlBDYXN0KHZhbHVl LCB0eXBlLCBuYW1lLCBiYmxvY2spOwotKyAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9IGxs dm06OkNhc3RJbnN0OjpDcmVhdGVGUENhc3QoCi0rICAgICAgICB2YWx1ZSwgdHlwZSwgbmFtZS5p c1RyaXZpYWxseUVtcHR5KCkgPyBsbHZtOjpUd2luZSh2YWx1ZS0+Z2V0TmFtZSgpKSArICJfY2Fz dCIgOiBuYW1lLCBiYmxvY2spOwotICAgICBBZGREZWJ1Z1BvcyhpbnN0KTsKLSAgICAgcmV0dXJu IGluc3Q7Ci0gfQotIAotLWxsdm06Okluc3RydWN0aW9uICpGdW5jdGlvbkVtaXRDb250ZXh0OjpT RXh0SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5cGUsIGNvbnN0IGNoYXIg Km5hbWUpIHsKLStsbHZtOjpJbnN0cnVjdGlvbiAqRnVuY3Rpb25FbWl0Q29udGV4dDo6U0V4dElu c3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0eXBlLCBjb25zdCBsbHZtOjpUd2lu ZSAmbmFtZSkgewotICAgICBpZiAodmFsdWUgPT0gTlVMTCkgewotICAgICAgICAgQXNzZXJ0UG9z KGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsKLSAgICAgICAgIHJldHVybiBOVUxMOwot ICAgICB9Ci0gCi0tICAgIGlmIChuYW1lID09IE5VTEwpCi0tICAgICAgICBuYW1lID0gTExWTUdl dE5hbWUodmFsdWUsICJfc2V4dCIpOwotLQotICAgICAvLyBUT0RPOiB3ZSBzaG91bGQgcHJvYmFi bHkgaGFuZGxlIHRoZSBhcnJheSBjYXNlIGFzIGluCi0gICAgIC8vIGUuZy4gQml0Q2FzdEluc3Qo KSwgYnV0IHdlIGRvbid0IGN1cnJlbnRseSBuZWVkIHRoYXQgZnVuY3Rpb25hbGl0eQotLSAgICBs bHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9IG5ldyBsbHZtOjpTRXh0SW5zdCh2YWx1ZSwgdHlwZSwg bmFtZSwgYmJsb2NrKTsKLSsgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QgPSBuZXcgbGx2bTo6 U0V4dEluc3QoCi0rICAgICAgICB2YWx1ZSwgdHlwZSwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkg PyBsbHZtOjpUd2luZSh2YWx1ZS0+Z2V0TmFtZSgpKSArICJfc2V4dCIgOiBuYW1lLCBiYmxvY2sp OwotICAgICBBZGREZWJ1Z1BvcyhpbnN0KTsKLSAgICAgcmV0dXJuIGluc3Q7Ci0gfQotIAotLWxs dm06Okluc3RydWN0aW9uICpGdW5jdGlvbkVtaXRDb250ZXh0OjpaRXh0SW5zdChsbHZtOjpWYWx1 ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUpIHsKLStsbHZtOjpJ bnN0cnVjdGlvbiAqRnVuY3Rpb25FbWl0Q29udGV4dDo6WkV4dEluc3QobGx2bTo6VmFsdWUgKnZh bHVlLCBsbHZtOjpUeXBlICp0eXBlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBp ZiAodmFsdWUgPT0gTlVMTCkgewotICAgICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVy cm9yQ291bnQgPiAwKTsKLSAgICAgICAgIHJldHVybiBOVUxMOwotICAgICB9Ci0gCi0tICAgIGlm IChuYW1lID09IE5VTEwpCi0tICAgICAgICBuYW1lID0gTExWTUdldE5hbWUodmFsdWUsICJfemV4 dCIpOwotLQotICAgICAvLyBUT0RPOiB3ZSBzaG91bGQgcHJvYmFibHkgaGFuZGxlIHRoZSBhcnJh eSBjYXNlIGFzIGluCi0gICAgIC8vIGUuZy4gQml0Q2FzdEluc3QoKSwgYnV0IHdlIGRvbid0IGN1 cnJlbnRseSBuZWVkIHRoYXQgZnVuY3Rpb25hbGl0eQotLSAgICBsbHZtOjpJbnN0cnVjdGlvbiAq aW5zdCA9IG5ldyBsbHZtOjpaRXh0SW5zdCh2YWx1ZSwgdHlwZSwgbmFtZSwgYmJsb2NrKTsKLSsg ICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QgPSBuZXcgbGx2bTo6WkV4dEluc3QoCi0rICAgICAg ICB2YWx1ZSwgdHlwZSwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyBsbHZtOjpUd2luZSh2YWx1 ZS0+Z2V0TmFtZSgpKSArICJfemV4dCIgOiBuYW1lLCBiYmxvY2spOwotICAgICBBZGREZWJ1Z1Bv cyhpbnN0KTsKLSAgICAgcmV0dXJuIGluc3Q7Ci0gfQotQEAgLTE5MTMsMTQgKzE5MDEsMTUgQEAg bGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OmFwcGx5VmFyeWluZ0dFUChsbHZtOjpW YWx1ZSAqYmFzZVB0ciwgbGx2bTo6VmEKLSAgICAgICAgIHNjYWxlID0gU21lYXJVbmlmb3JtKHNj YWxlKTsKLSAgICAgICAgIEFzc2VydChpbmRleCAhPSBOVUxMKTsKLSAgICAgICAgIC8vIG9mZnNl dCA9IGluZGV4ICogc2NhbGUKLS0gICAgICAgIG9mZnNldCA9IEJpbmFyeU9wZXJhdG9yKGxsdm06 Okluc3RydWN0aW9uOjpNdWwsIHNjYWxlLCBpbmRleCwgTExWTUdldE5hbWUoIm11bCIsIHNjYWxl LCBpbmRleCkpOwotKyAgICAgICAgb2Zmc2V0ID0gQmluYXJ5T3BlcmF0b3IobGx2bTo6SW5zdHJ1 Y3Rpb246Ok11bCwgc2NhbGUsIGluZGV4LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKChsbHZtOjpUd2luZSgibXVsXyIpICsgc2NhbGUtPmdldE5hbWUoKSkgKyAiXyIpICsgaW5k ZXgtPmdldE5hbWUoKSk7Ci0gICAgIH0KLSAKLSAgICAgLy8gRm9yIDY0LWJpdCB0YXJnZXRzLCBp ZiB3ZSd2ZSBiZWVuIGRvaW5nIG91ciBvZmZzZXQgY2FsY3VsYXRpb25zIGluCi0gICAgIC8vIDMy IGJpdHMsIHdlIHN0aWxsIGhhdmUgdG8gY29udmVydCB0byBhIDY0LWJpdCB2YWx1ZSBiZWZvcmUg d2UKLSAgICAgLy8gYWN0dWFsbHkgYWRkIHRoZSBvZmZzZXQgdG8gdGhlIHBvaW50ZXIuCi0gICAg IGlmIChnLT50YXJnZXQtPmlzMzJCaXQoKSA9PSBmYWxzZSAmJiBnLT5vcHQuZm9yY2UzMkJpdEFk ZHJlc3NpbmcgPT0gdHJ1ZSkKLS0gICAgICAgIG9mZnNldCA9IFNFeHRJbnN0KG9mZnNldCwgTExW TVR5cGVzOjpJbnQ2NFZlY3RvclR5cGUsIExMVk1HZXROYW1lKG9mZnNldCwgIl90b182NCIpKTsK LSsgICAgICAgIG9mZnNldCA9IFNFeHRJbnN0KG9mZnNldCwgTExWTVR5cGVzOjpJbnQ2NFZlY3Rv clR5cGUsIGxsdm06OlR3aW5lKG9mZnNldC0+Z2V0TmFtZSgpKSArICJfdG9fNjQiKTsKLSAKLSAg ICAgLy8gU21lYXIgb3V0IHRoZSBwb2ludGVyIHRvIGJlIHZhcnlpbmc7IGVpdGhlciB0aGUgYmFz ZSBwb2ludGVyIG9yIHRoZQotICAgICAvLyBpbmRleCBtdXN0IGJlIHZhcnlpbmcgZm9yIHRoaXMg bWV0aG9kIHRvIGJlIGNhbGxlZC4KLUBAIC0xOTI5LDcgKzE5MTgsNyBAQCBsbHZtOjpWYWx1ZSAq RnVuY3Rpb25FbWl0Q29udGV4dDo6YXBwbHlWYXJ5aW5nR0VQKGxsdm06OlZhbHVlICpiYXNlUHRy LCBsbHZtOjpWYQotICAgICBsbHZtOjpWYWx1ZSAqdmFyeWluZ1B0ciA9IGJhc2VJc1VuaWZvcm0g PyBTbWVhclVuaWZvcm0oYmFzZVB0cikgOiBiYXNlUHRyOwotIAotICAgICAvLyBuZXdQdHIgPSBw dHIgKyBvZmZzZXQKLS0gICAgcmV0dXJuIEJpbmFyeU9wZXJhdG9yKGxsdm06Okluc3RydWN0aW9u OjpBZGQsIHZhcnlpbmdQdHIsIG9mZnNldCwgTExWTUdldE5hbWUoYmFzZVB0ciwgIl9vZmZzZXQi KSk7Ci0rICAgIHJldHVybiBCaW5hcnlPcGVyYXRvcihsbHZtOjpJbnN0cnVjdGlvbjo6QWRkLCB2 YXJ5aW5nUHRyLCBvZmZzZXQsIGxsdm06OlR3aW5lKGJhc2VQdHItPmdldE5hbWUoKSkgKyAiX29m ZnNldCIpOwotIH0KLSAKLSB2b2lkIEZ1bmN0aW9uRW1pdENvbnRleHQ6Ok1hdGNoSW50ZWdlclR5 cGVzKGxsdm06OlZhbHVlICoqdjAsIGxsdm06OlZhbHVlICoqdjEpIHsKLUBAIC0yMDA2LDEzICsx OTk1LDEzIEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpNYWtlU2xpY2VQb2lu dGVyKGxsdm06OlZhbHVlICpwdHIsIGxsdm06OlZhbHVlCi0gICAgIGxsdm06OlN0cnVjdFR5cGUg KnN0ID0gbGx2bTo6U3RydWN0VHlwZTo6Z2V0KCpnLT5jdHgsIGVsdFR5cGVzKTsKLSAKLSAgICAg bGx2bTo6VmFsdWUgKnJldCA9IGxsdm06OlVuZGVmVmFsdWU6OmdldChzdCk7Ci0tICAgIHJldCA9 IEluc2VydEluc3QocmV0LCBwdHIsIDAsIExMVk1HZXROYW1lKHJldCwgIl9zbGljZV9wdHIiKSk7 Ci0tICAgIHJldCA9IEluc2VydEluc3QocmV0LCBvZmZzZXQsIDEsIExMVk1HZXROYW1lKHJldCwg Il9zbGljZV9vZmZzZXQiKSk7Ci0rICAgIHJldCA9IEluc2VydEluc3QocmV0LCBwdHIsIDAsIGxs dm06OlR3aW5lKHJldC0+Z2V0TmFtZSgpKSArICJfc2xpY2VfcHRyIik7Ci0rICAgIHJldCA9IElu c2VydEluc3QocmV0LCBvZmZzZXQsIDEsIGxsdm06OlR3aW5lKHJldC0+Z2V0TmFtZSgpKSArICJf c2xpY2Vfb2Zmc2V0Iik7Ci0gICAgIHJldHVybiByZXQ7Ci0gfQotIAotIGxsdm06OlZhbHVlICpG dW5jdGlvbkVtaXRDb250ZXh0OjpHZXRFbGVtZW50UHRySW5zdChsbHZtOjpWYWx1ZSAqYmFzZVB0 ciwgbGx2bTo6VmFsdWUgKmluZGV4LCBjb25zdCBUeXBlICpwdHJSZWZUeXBlLAotLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpu YW1lKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIGlmIChiYXNlUHRyID09IE5VTEwg fHwgaW5kZXggPT0gTlVMTCkgewotICAgICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVy cm9yQ291bnQgPiAwKTsKLSAgICAgICAgIHJldHVybiBOVUxMOwotQEAgLTIwNjUsOCArMjA1NCw4 IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpHZXRFbGVtZW50UHRySW5zdChs bHZtOjpWYWx1ZSAqYmFzZVB0ciwgbGx2bTo6Ci0gICAgICAgICAvLyB1bmlmb3JtLCBzbyBqdXN0 IGVtaXQgdGhlIHJlZ3VsYXIgTExWTSBHRVAgaW5zdHJ1Y3Rpb24KLSAgICAgICAgIGxsdm06OlZh bHVlICppbmRbMV0gPSB7aW5kZXh9OwotICAgICAgICAgbGx2bTo6QXJyYXlSZWY8bGx2bTo6VmFs dWUgKj4gYXJyYXlSZWYoJmluZFswXSwgJmluZFsxXSk7Ci0tICAgICAgICBsbHZtOjpJbnN0cnVj dGlvbiAqaW5zdCA9Ci0tICAgICAgICAgICAgbGx2bTo6R2V0RWxlbWVudFB0ckluc3Q6OkNyZWF0 ZShQVFlQRShiYXNlUHRyKSwgYmFzZVB0ciwgYXJyYXlSZWYsIG5hbWUgPyBuYW1lIDogImdlcCIs IGJibG9jayk7Ci0rICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9IGxsdm06OkdldEVs ZW1lbnRQdHJJbnN0OjpDcmVhdGUoUFRZUEUoYmFzZVB0ciksIGJhc2VQdHIsIGFycmF5UmVmLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gImdlcCIgOiBuYW1lLCBiYmxvY2sp OwotICAgICAgICAgQWRkRGVidWdQb3MoaW5zdCk7Ci0gICAgICAgICByZXR1cm4gaW5zdDsKLSAg ICAgfSBlbHNlCi1AQCAtMjA3NCw3ICsyMDYzLDcgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1p dENvbnRleHQ6OkdldEVsZW1lbnRQdHJJbnN0KGxsdm06OlZhbHVlICpiYXNlUHRyLCBsbHZtOjoK LSB9Ci0gCi0gbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkdldEVsZW1lbnRQdHJJ bnN0KGxsdm06OlZhbHVlICpiYXNlUHRyLCBsbHZtOjpWYWx1ZSAqaW5kZXgwLCBsbHZtOjpWYWx1 ZSAqaW5kZXgxLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBUeXBlICpwdHJSZWZUeXBlLCBjb25zdCBjaGFyICpuYW1lKSB7Ci0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFR5 cGUgKnB0clJlZlR5cGUsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIGlmIChiYXNl UHRyID09IE5VTEwgfHwgaW5kZXgwID09IE5VTEwgfHwgaW5kZXgxID09IE5VTEwpIHsKLSAgICAg ICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAgICBy ZXR1cm4gTlVMTDsKLUBAIC0yMTE0LDggKzIxMDMsOCBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25F bWl0Q29udGV4dDo6R2V0RWxlbWVudFB0ckluc3QobGx2bTo6VmFsdWUgKmJhc2VQdHIsIGxsdm06 OgotICAgICAgICAgLy8gdW5pZm9ybSwgc28ganVzdCBlbWl0IHRoZSByZWd1bGFyIExMVk0gR0VQ IGluc3RydWN0aW9uCi0gICAgICAgICBsbHZtOjpWYWx1ZSAqaW5kaWNlc1syXSA9IHtpbmRleDAs IGluZGV4MX07Ci0gICAgICAgICBsbHZtOjpBcnJheVJlZjxsbHZtOjpWYWx1ZSAqPiBhcnJheVJl ZigmaW5kaWNlc1swXSwgJmluZGljZXNbMl0pOwotLSAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24g Kmluc3QgPQotLSAgICAgICAgICAgIGxsdm06OkdldEVsZW1lbnRQdHJJbnN0OjpDcmVhdGUoUFRZ UEUoYmFzZVB0ciksIGJhc2VQdHIsIGFycmF5UmVmLCBuYW1lID8gbmFtZSA6ICJnZXAiLCBiYmxv Y2spOwotKyAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QgPSBsbHZtOjpHZXRFbGVtZW50 UHRySW5zdDo6Q3JlYXRlKFBUWVBFKGJhc2VQdHIpLCBiYXNlUHRyLCBhcnJheVJlZiwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/ICJnZXAiIDogbmFtZSwgYmJsb2NrKTsKLSAg ICAgICAgIEFkZERlYnVnUG9zKGluc3QpOwotICAgICAgICAgcmV0dXJuIGluc3Q7Ci0gICAgIH0g ZWxzZSB7Ci1AQCAtMjEzOCw3ICsyMTI3LDcgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENv bnRleHQ6OkdldEVsZW1lbnRQdHJJbnN0KGxsdm06OlZhbHVlICpiYXNlUHRyLCBsbHZtOjoKLSB9 Ci0gCi0gbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkFkZEVsZW1lbnRPZmZzZXQo bGx2bTo6VmFsdWUgKmZ1bGxCYXNlUHRyLCBpbnQgZWxlbWVudE51bSwgY29uc3QgVHlwZSAqcHRy UmVmVHlwZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBQb2ludGVyVHlwZSAqKnJlc3VsdFB0clR5cGUp IHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBsbHZtOjpUd2luZSAmbmFtZSwgY29uc3QgUG9pbnRlclR5cGUgKipyZXN1bHRQdHJUeXBl KSB7Ci0gICAgIGlmIChyZXN1bHRQdHJUeXBlICE9IE5VTEwpCi0gICAgICAgICBBc3NlcnRQb3Mo Y3VycmVudFBvcywgcHRyUmVmVHlwZSAhPSBOVUxMKTsKLSAKLUBAIC0yMTk1LDggKzIxODQsOCBA QCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6QWRkRWxlbWVudE9mZnNldChsbHZt OjpWYWx1ZSAqZnVsbEJhc2VQdHIsIGludAotICAgICAgICAgLy8gSWYgdGhlIHBvaW50ZXIgaXMg dW5pZm9ybSwgd2UgY2FuIHVzZSB0aGUgcmVndWxhciBMTFZNIEdFUC4KLSAgICAgICAgIGxsdm06 OlZhbHVlICpvZmZzZXRzWzJdID0ge0xMVk1JbnQzMigwKSwgTExWTUludDMyKGVsZW1lbnROdW0p fTsKLSAgICAgICAgIGxsdm06OkFycmF5UmVmPGxsdm06OlZhbHVlICo+IGFycmF5UmVmKCZvZmZz ZXRzWzBdLCAmb2Zmc2V0c1syXSk7Ci0tICAgICAgICByZXN1bHRQdHIgPQotLSAgICAgICAgICAg IGxsdm06OkdldEVsZW1lbnRQdHJJbnN0OjpDcmVhdGUoUFRZUEUoYmFzZVB0ciksIGJhc2VQdHIs IGFycmF5UmVmLCBuYW1lID8gbmFtZSA6ICJzdHJ1Y3Rfb2Zmc2V0IiwgYmJsb2NrKTsKLSsgICAg ICAgIHJlc3VsdFB0ciA9IGxsdm06OkdldEVsZW1lbnRQdHJJbnN0OjpDcmVhdGUoUFRZUEUoYmFz ZVB0ciksIGJhc2VQdHIsIGFycmF5UmVmLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/ICJzdHJ1Y3Rf b2Zmc2V0IiA6IG5hbWUsIGJibG9jayk7Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAgICAvLyBPdGhl cndpc2UgZG8gdGhlIG1hdGggdG8gZmluZCB0aGUgb2Zmc2V0IGFuZCBhZGQgaXQgdG8gdGhlIGdp dmVuCi0gICAgICAgICAvLyB2YXJ5aW5nIHBvaW50ZXJzCi1AQCAtMjIzNyw3ICsyMjI2LDcgQEAg bGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkFkZEVsZW1lbnRPZmZzZXQobGx2bTo6 VmFsdWUgKmZ1bGxCYXNlUHRyLCBpbnQKLSAgICAgICAgIHJldHVybiByZXN1bHRQdHI7Ci0gfQot IAotLWxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpTd2l0Y2hCb29sU2l6ZShsbHZt OjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnRvVHlwZSwgY29uc3QgY2hhciAqbmFtZSkgewot K2xsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpTd2l0Y2hCb29sU2l6ZShsbHZtOjpW YWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnRvVHlwZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUp IHsKLSAgICAgaWYgKCh2YWx1ZSA9PSBOVUxMKSB8fCAodG9UeXBlID09IE5VTEwpKSB7Ci0gICAg ICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAgICAg cmV0dXJuIE5VTEw7Ci1AQCAtMjI0OCwyMCArMjIzNywxOCBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rp b25FbWl0Q29udGV4dDo6U3dpdGNoQm9vbFNpemUobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpU eXBlCi0gICAgIGxsdm06OlZhbHVlICpuZXdCb29sID0gdmFsdWU7Ci0gICAgIGlmIChnLT50YXJn ZXQtPmdldERhdGFMYXlvdXQoKS0+Z2V0VHlwZVNpemVJbkJpdHMoZnJvbVR5cGUpID4KLSAgICAg ICAgIGctPnRhcmdldC0+Z2V0RGF0YUxheW91dCgpLT5nZXRUeXBlU2l6ZUluQml0cyh0b1R5cGUp KSB7Ci0tICAgICAgICBpZiAobmFtZSA9PSBOVUxMKQotLSAgICAgICAgICAgIG5hbWUgPSBMTFZN R2V0TmFtZSh2YWx1ZSwgIl9zd2l0Y2hCb29sIik7Ci0tICAgICAgICBuZXdCb29sID0gVHJ1bmNJ bnN0KHZhbHVlLCB0b1R5cGUsIG5hbWUpOwotKyAgICAgICAgbmV3Qm9vbCA9Ci0rICAgICAgICAg ICAgVHJ1bmNJbnN0KHZhbHVlLCB0b1R5cGUsIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gKGxs dm06OlR3aW5lKHZhbHVlLT5nZXROYW1lKCkpICsgIl9zd2l0Y2hCb29sIikgOiBuYW1lKTsKLSAg ICAgfSBlbHNlIGlmIChnLT50YXJnZXQtPmdldERhdGFMYXlvdXQoKS0+Z2V0VHlwZVNpemVJbkJp dHMoZnJvbVR5cGUpIDwKLSAgICAgICAgICAgICAgICBnLT50YXJnZXQtPmdldERhdGFMYXlvdXQo KS0+Z2V0VHlwZVNpemVJbkJpdHModG9UeXBlKSkgewotLSAgICAgICAgaWYgKG5hbWUgPT0gTlVM TCkKLS0gICAgICAgICAgICBuYW1lID0gTExWTUdldE5hbWUodmFsdWUsICJfc3dpdGNoQm9vbCIp OwotLSAgICAgICAgbmV3Qm9vbCA9IFNFeHRJbnN0KHZhbHVlLCB0b1R5cGUsIG5hbWUpOwotKyAg ICAgICAgbmV3Qm9vbCA9Ci0rICAgICAgICAgICAgU0V4dEluc3QodmFsdWUsIHRvVHlwZSwgbmFt ZS5pc1RyaXZpYWxseUVtcHR5KCkgPyAobGx2bTo6VHdpbmUodmFsdWUtPmdldE5hbWUoKSkgKyAi X3N3aXRjaEJvb2wiKSA6IG5hbWUpOwotICAgICB9Ci0gCi0gICAgIHJldHVybiBuZXdCb29sOwot IH0KLSAKLS1sbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6TG9hZEluc3QobGx2bTo6 VmFsdWUgKnB0ciwgY29uc3QgVHlwZSAqdHlwZSwgY29uc3QgY2hhciAqbmFtZSkgewotK2xsdm06 OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpMb2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBj b25zdCBUeXBlICp0eXBlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBpZiAocHRy ID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50 ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLUBAIC0yMjcwLDEzICsyMjU3LDEzIEBAIGxs dm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpMb2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRy LCBjb25zdCBUeXBlICp0eXBlLCBjCi0gICAgIGxsdm06OlBvaW50ZXJUeXBlICpwdCA9IGxsdm06 OmR5bl9jYXN0PGxsdm06OlBvaW50ZXJUeXBlPihwdHItPmdldFR5cGUoKSk7Ci0gICAgIEFzc2Vy dFBvcyhjdXJyZW50UG9zLCBwdCAhPSBOVUxMKTsKLSAKLS0gICAgaWYgKG5hbWUgPT0gTlVMTCkK LS0gICAgICAgIG5hbWUgPSBMTFZNR2V0TmFtZShwdHIsICJfbG9hZCIpOwotLQotICNpZiBJU1BD X0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFfMAotLSAgICBsbHZtOjpMb2FkSW5zdCAqaW5z dCA9IG5ldyBsbHZtOjpMb2FkSW5zdChwdC0+Z2V0UG9pbnRlckVsZW1lbnRUeXBlKCksIHB0ciwg bmFtZSwgYmJsb2NrKTsKLSsgICAgbGx2bTo6TG9hZEluc3QgKmluc3QgPQotKyAgICAgICAgbmV3 IGxsdm06OkxvYWRJbnN0KHB0LT5nZXRQb2ludGVyRWxlbWVudFR5cGUoKSwgcHRyLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gKGxsdm06OlR3 aW5lKHB0ci0+Z2V0TmFtZSgpKSArICJfbG9hZCIpIDogbmFtZSwgYmJsb2NrKTsKLSAjZWxzZQot LSAgICBsbHZtOjpMb2FkSW5zdCAqaW5zdCA9IG5ldyBsbHZtOjpMb2FkSW5zdChwdHIsIG5hbWUs IGJibG9jayk7Ci0rICAgIGxsdm06OkxvYWRJbnN0ICppbnN0ID0KLSsgICAgICAgIG5ldyBsbHZt OjpMb2FkSW5zdChwdHIsIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gKGxsdm06OlR3aW5lKHB0 ci0+Z2V0TmFtZSgpKSArICJfbG9hZCIpIDogbmFtZSwgYmJsb2NrKTsKLSAjZW5kaWYKLSAKLSAg ICAgaWYgKGctPm9wdC5mb3JjZUFsaWduZWRNZW1vcnkgJiYgbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6 VmVjdG9yVHlwZT4ocHQtPmdldEVsZW1lbnRUeXBlKCkpKSB7Ci1AQCAtMjMwNyw4ICsyMjk0LDgg QEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkxvYWRJbnN0KGxsdm06OlZhbHVl ICpwdHIsIGNvbnN0IFR5cGUgKnR5cGUsIGMKLSBzdGF0aWMgbGx2bTo6VmFsdWUgKmxGaW5hbFNs aWNlT2Zmc2V0KEZ1bmN0aW9uRW1pdENvbnRleHQgKmN0eCwgbGx2bTo6VmFsdWUgKnB0ciwgY29u c3QgUG9pbnRlclR5cGUgKipwdHJUeXBlKSB7Ci0gICAgIEFzc2VydChDYXN0VHlwZTxQb2ludGVy VHlwZT4oKnB0clR5cGUpICE9IE5VTEwpOwotIAotLSAgICBsbHZtOjpWYWx1ZSAqc2xpY2VQdHIg PSBjdHgtPkV4dHJhY3RJbnN0KHB0ciwgMCwgTExWTUdldE5hbWUocHRyLCAiX3B0ciIpKTsKLS0g ICAgbGx2bTo6VmFsdWUgKnNsaWNlT2Zmc2V0ID0gY3R4LT5FeHRyYWN0SW5zdChwdHIsIDEsIExM Vk1HZXROYW1lKHB0ciwgIl9vZmZzZXQiKSk7Ci0rICAgIGxsdm06OlZhbHVlICpzbGljZVB0ciA9 IGN0eC0+RXh0cmFjdEluc3QocHRyLCAwLCBsbHZtOjpUd2luZShwdHItPmdldE5hbWUoKSkgKyAi X3B0ciIpOwotKyAgICBsbHZtOjpWYWx1ZSAqc2xpY2VPZmZzZXQgPSBjdHgtPkV4dHJhY3RJbnN0 KHB0ciwgMSwgbGx2bTo6VHdpbmUocHRyLT5nZXROYW1lKCkpICsgIl9vZmZzZXQiKTsKLSAKLSAg ICAgLy8gc2xpY2VQdHIgc2hvdWxkIGJlIGEgcG9pbnRlciB0byBhbiBzb2Etd2lkdGggd2lkZSBh cnJheSBvZiB0aGUKLSAgICAgLy8gZmluYWwgYXRvbWljL2VudW0vcG9pbnRlciB0eXBlCi1AQCAt MjMyNywxNCArMjMxNCwxNCBAQCBzdGF0aWMgbGx2bTo6VmFsdWUgKmxGaW5hbFNsaWNlT2Zmc2V0 KEZ1bmN0aW9uRW1pdENvbnRleHQgKmN0eCwgbGx2bTo6VmFsdWUgKnB0cgotICAgICAgICAgc2xp Y2VQdHIgPSBjdHgtPkJpdENhc3RJbnN0KHNsaWNlUHRyLCAoKnB0clR5cGUpLT5MTFZNVHlwZShn LT5jdHgpKTsKLSAKLSAgICAgLy8gQW5kIGZpbmFsbHkgaW5kZXggYmFzZWQgb24gdGhlIHNsaWNl IG9mZnNldAotLSAgICByZXR1cm4gY3R4LT5HZXRFbGVtZW50UHRySW5zdChzbGljZVB0ciwgc2xp Y2VPZmZzZXQsICpwdHJUeXBlLCBMTFZNR2V0TmFtZShzbGljZVB0ciwgIl9maW5hbF9nZXAiKSk7 Ci0rICAgIHJldHVybiBjdHgtPkdldEVsZW1lbnRQdHJJbnN0KHNsaWNlUHRyLCBzbGljZU9mZnNl dCwgKnB0clR5cGUsIGxsdm06OlR3aW5lKHNsaWNlUHRyLT5nZXROYW1lKCkpICsgIl9maW5hbF9n ZXAiKTsKLSB9Ci0gCi0gLyoqIFV0aWxpdHkgcm91dGluZSB0aGF0IGxvYWRzIGZyb20gYSB1bmlm b3JtIHBvaW50ZXIgdG8gc29hPD4gZGF0YSwKLSAgICAgcmV0dXJuaW5nIGEgcmVndWxhciB1bmlm b3JtIChub24tU09BIHJlc3VsdCkuCi0gICovCi0gbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENv bnRleHQ6OmxvYWRVbmlmb3JtRnJvbVNPQShsbHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjpWYWx1ZSAq bWFzaywgY29uc3QgUG9pbnRlclR5cGUgKnB0clR5cGUsCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lKSB7Ci0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBs bHZtOjpUd2luZSAmbmFtZSkgewotICAgICBjb25zdCBUeXBlICp1bmlmVHlwZSA9IHB0clR5cGUt PkdldEJhc2VUeXBlKCktPkdldEFzVW5pZm9ybVR5cGUoKTsKLSAKLSAgICAgY29uc3QgQ29sbGVj dGlvblR5cGUgKmN0ID0gQ2FzdFR5cGU8Q29sbGVjdGlvblR5cGU+KHB0clR5cGUtPkdldEJhc2VU eXBlKCkpOwotQEAgLTIzNjMsNyArMjM1MCw3IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRD b250ZXh0Ojpsb2FkVW5pZm9ybUZyb21TT0EobGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6VmFsCi0g fQotIAotIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpMb2FkSW5zdChsbHZtOjpW YWx1ZSAqcHRyLCBsbHZtOjpWYWx1ZSAqbWFzaywgY29uc3QgVHlwZSAqcHRyUmVmVHlwZSwKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFt ZSwgYm9vbCBvbmVfZWxlbSkgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSwgYm9vbCBvbmVfZWxlbSkgewotICAgICBp ZiAocHRyID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBtLT5lcnJv ckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLUBAIC0yMzcxLDkgKzIzNTgsNiBA QCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6TG9hZEluc3QobGx2bTo6VmFsdWUg KnB0ciwgbGx2bTo6VmFsdWUgKm1hc2ssCi0gCi0gICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBw dHJSZWZUeXBlICE9IE5VTEwgJiYgbWFzayAhPSBOVUxMKTsKLSAKLS0gICAgaWYgKG5hbWUgPT0g TlVMTCkKLS0gICAgICAgIG5hbWUgPSBMTFZNR2V0TmFtZShwdHIsICJfbG9hZCIpOwotLQotICAg ICBjb25zdCBQb2ludGVyVHlwZSAqcHRyVHlwZTsKLSAgICAgY29uc3QgVHlwZSAqZWxUeXBlOwot ICAgICBpZiAoQ2FzdFR5cGU8UmVmZXJlbmNlVHlwZT4ocHRyUmVmVHlwZSkgIT0gTlVMTCkgewot QEAgLTIzOTMsNyArMjM3Nyw4IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpM b2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjpWYWx1ZSAqbWFzaywKLSAKLSAgICAgaWYg KHB0clR5cGUtPklzVW5pZm9ybVR5cGUoKSkgewotICAgICAgICAgaWYgKHB0clR5cGUtPklzU2xp Y2UoKSkgewotLSAgICAgICAgICAgIHJldHVybiBsb2FkVW5pZm9ybUZyb21TT0EocHRyLCBtYXNr LCBwdHJUeXBlLCBuYW1lKTsKLSsgICAgICAgICAgICByZXR1cm4gbG9hZFVuaWZvcm1Gcm9tU09B KHB0ciwgbWFzaywgcHRyVHlwZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gKGxsdm06OlR3aW5lKHB0ci0+Z2V0TmFtZSgp KSArICJfbG9hZCIpIDogbmFtZSk7Ci0gICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgIC8v IEZJWE1FOiBzYW1lIGlzc3VlIGFzIGFib3ZlIGxvYWQgaW5zdCByZWdhcmRpbmcgYWxpZ25tZW50 Li4uCi0gICAgICAgICAgICAgLy8KLUBAIC0yNDA1LDExICsyMzkwLDE1IEBAIGxsdm06OlZhbHVl ICpGdW5jdGlvbkVtaXRDb250ZXh0OjpMb2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjpW YWx1ZSAqbWFzaywKLSAgICAgICAgICAgICBjb25zdCBBdG9taWNUeXBlICphdG9taWNUeXBlID0g Q2FzdFR5cGU8QXRvbWljVHlwZT4ocHRyVHlwZS0+R2V0QmFzZVR5cGUoKSk7Ci0gCi0gI2lmIElT UENfTExWTV9WRVJTSU9OIDw9IElTUENfTExWTV8xMF8wCi0tICAgICAgICAgICAgbGx2bTo6TG9h ZEluc3QgKmluc3QgPSBuZXcgbGx2bTo6TG9hZEluc3QocHRyLCBuYW1lLCBmYWxzZSAvKiBub3Qg dm9sYXRpbGUgKi8sIGJibG9jayk7Ci0rICAgICAgICAgICAgbGx2bTo6TG9hZEluc3QgKmluc3Qg PQotKyAgICAgICAgICAgICAgICBuZXcgbGx2bTo6TG9hZEluc3QocHRyLCBuYW1lLmlzVHJpdmlh bGx5RW1wdHkoKSA/IChsbHZtOjpUd2luZShwdHItPmdldE5hbWUoKSkgKyAiX2xvYWQiKSA6IG5h bWUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSAvKiBub3Qgdm9s YXRpbGUgKi8sIGJibG9jayk7Ci0gI2Vsc2UgLy8gTExWTSAxMS4wKwotICAgICAgICAgICAgIGxs dm06OlBvaW50ZXJUeXBlICpwdHJfdHlwZSA9IGxsdm06OmR5bl9jYXN0PGxsdm06OlBvaW50ZXJU eXBlPihwdHItPmdldFR5cGUoKSk7Ci0gICAgICAgICAgICAgbGx2bTo6TG9hZEluc3QgKmluc3Qg PQotLSAgICAgICAgICAgICAgICBuZXcgbGx2bTo6TG9hZEluc3QocHRyX3R5cGUtPmdldFBvaW50 ZXJFbGVtZW50VHlwZSgpLCBwdHIsIG5hbWUsIGZhbHNlIC8qIG5vdCB2b2xhdGlsZSAqLywgYmJs b2NrKTsKLSsgICAgICAgICAgICAgICAgbmV3IGxsdm06OkxvYWRJbnN0KHB0cl90eXBlLT5nZXRQ b2ludGVyRWxlbWVudFR5cGUoKSwgcHRyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyAobGx2bTo6VHdpbmUocHRyLT5nZXROYW1l KCkpICsgIl9sb2FkIikgOiBuYW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZmFsc2UgLyogbm90IHZvbGF0aWxlICovLCBiYmxvY2spOwotICNlbmRpZgotIAotICAgICAg ICAgICAgIGlmIChhdG9taWNUeXBlICE9IE5VTEwgJiYgYXRvbWljVHlwZS0+SXNWYXJ5aW5nVHlw ZSgpKSB7Ci1AQCAtMjQzMyw3ICsyNDIyLDggQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENv bnRleHQ6OkxvYWRJbnN0KGxsdm06OlZhbHVlICpwdHIsIGxsdm06OlZhbHVlICptYXNrLAotICAg ICB9IGVsc2UgewotICAgICAgICAgLy8gT3RoZXJ3aXNlIHdlIHNob3VsZCBoYXZlIGEgdmFyeWlu ZyBwdHIgYW5kIGl0J3MgdGltZSBmb3IgYQotICAgICAgICAgLy8gZ2F0aGVyLgotLSAgICAgICAg bGx2bTo6VmFsdWUgKmdhdGhlcl9yZXN1bHQgPSBnYXRoZXIocHRyLCBwdHJUeXBlLCBHZXRGdWxs TWFzaygpLCBuYW1lKTsKLSsgICAgICAgIGxsdm06OlZhbHVlICpnYXRoZXJfcmVzdWx0ID0gZ2F0 aGVyKHB0ciwgcHRyVHlwZSwgR2V0RnVsbE1hc2soKSwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gKGxsdm06OlR3 aW5lKHB0ci0+Z2V0TmFtZSgpKSArICJfbG9hZCIpIDogbmFtZSk7Ci0gICAgICAgICBpZiAoIW9u ZV9lbGVtKQotICAgICAgICAgICAgIHJldHVybiBnYXRoZXJfcmVzdWx0OwotIAotQEAgLTI0NTMs MTkgKzI0NDMsMTkgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkxvYWRJbnN0 KGxsdm06OlZhbHVlICpwdHIsIGxsdm06OlZhbHVlICptYXNrLAotICAgICAgICAgLy8gV2UgY2Fu IGFjdHVhbGx5IGNhbGwgZWl0aGVyIG9uZSwgc2luY2UgYm90aCBhcmUgaTMycyBhcyBmYXIgYXMK LSAgICAgICAgIC8vIExMVk0ncyB0eXBlIHN5c3RlbSBpcyBjb25jZXJuZWQuLi4KLSAgICAgICAg IGxsdm06OkZ1bmN0aW9uICpmbW0gPSBtbVswXS0+ZnVuY3Rpb247Ci0tICAgICAgICBsbHZtOjpW YWx1ZSAqaW50X21hc2sgPSBDYWxsSW5zdChmbW0sIE5VTEwsIG1hc2ssIExMVk1HZXROYW1lKG1h c2ssICJfbW92bXNrIikpOwotKyAgICAgICAgbGx2bTo6VmFsdWUgKmludF9tYXNrID0gQ2FsbElu c3QoZm1tLCBOVUxMLCBtYXNrLCBsbHZtOjpUd2luZShtYXNrLT5nZXROYW1lKCkpICsgIl9tb3Zt c2siKTsKLSAgICAgICAgIHN0ZDo6dmVjdG9yPFN5bWJvbCAqPiBsejsKLSAgICAgICAgIG0tPnN5 bWJvbFRhYmxlLT5Mb29rdXBGdW5jdGlvbigiX19jb3VudF90cmFpbGluZ196ZXJvc19pNjQiLCAm bHopOwotICAgICAgICAgbGx2bTo6RnVuY3Rpb24gKmZseiA9IGx6WzBdLT5mdW5jdGlvbjsKLS0g ICAgICAgIGxsdm06OlZhbHVlICplbGVtX2lkeCA9IENhbGxJbnN0KGZseiwgTlVMTCwgaW50X21h c2ssIExMVk1HZXROYW1lKG1hc2ssICJfY2x6IikpOwotLSAgICAgICAgbGx2bTo6VmFsdWUgKmVs ZW0gPSBsbHZtOjpFeHRyYWN0RWxlbWVudEluc3Q6OkNyZWF0ZShnYXRoZXJfcmVzdWx0LCBlbGVt X2lkeCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTExWTUdldE5hbWUoZ2F0aGVyX3Jlc3VsdCwgIl91bWFza2VkX2VsZW0iKSwg YmJsb2NrKTsKLSsgICAgICAgIGxsdm06OlZhbHVlICplbGVtX2lkeCA9IENhbGxJbnN0KGZseiwg TlVMTCwgaW50X21hc2ssIGxsdm06OlR3aW5lKG1hc2stPmdldE5hbWUoKSkgKyAiX2NseiIpOwot KyAgICAgICAgbGx2bTo6VmFsdWUgKmVsZW0gPSBsbHZtOjpFeHRyYWN0RWxlbWVudEluc3Q6OkNy ZWF0ZSgKLSsgICAgICAgICAgICBnYXRoZXJfcmVzdWx0LCBlbGVtX2lkeCwgbGx2bTo6VHdpbmUo Z2F0aGVyX3Jlc3VsdC0+Z2V0TmFtZSgpKSArICJfdW1hc2tlZF9lbGVtIiwgYmJsb2NrKTsKLSAg ICAgICAgIHJldHVybiBlbGVtOwotICAgICB9Ci0gfQotIAotIGxsdm06OlZhbHVlICpGdW5jdGlv bkVtaXRDb250ZXh0OjpnYXRoZXIobGx2bTo6VmFsdWUgKnB0ciwgY29uc3QgUG9pbnRlclR5cGUg KnB0clR5cGUsIGxsdm06OlZhbHVlICptYXNrLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSkgewotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAgLy8g V2Ugc2hvdWxkIGhhdmUgYSB2YXJ5aW5nIHBvaW50ZXIgaWYgd2UgZ2V0IGhlcmUuLi4KLSAgICAg QXNzZXJ0UG9zKGN1cnJlbnRQb3MsIHB0clR5cGUtPklzVmFyeWluZ1R5cGUoKSk7Ci0gCi1AQCAt MjYwMiw3ICsyNTkyLDggQEAgdm9pZCBGdW5jdGlvbkVtaXRDb250ZXh0OjphZGRHU01ldGFkYXRh KGxsdm06OlZhbHVlICp2LCBTb3VyY2VQb3MgcG9zKSB7Ci0gICAgIGluc3QtPnNldE1ldGFkYXRh KCJsYXN0X2NvbHVtbiIsIG1kKTsKLSB9Ci0gCi0tbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENv bnRleHQ6OkFsbG9jYUluc3QobGx2bTo6VHlwZSAqbGx2bVR5cGUsIGNvbnN0IGNoYXIgKm5hbWUs IGludCBhbGlnbiwgYm9vbCBhdEVudHJ5QmxvY2spIHsKLStsbHZtOjpWYWx1ZSAqRnVuY3Rpb25F bWl0Q29udGV4dDo6QWxsb2NhSW5zdChsbHZtOjpUeXBlICpsbHZtVHlwZSwgY29uc3QgbGx2bTo6 VHdpbmUgJm5hbWUsIGludCBhbGlnbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBib29sIGF0RW50cnlCbG9jaykgewotICAgICBpZiAobGx2bVR5cGUgPT0g TlVMTCkgewotICAgICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQgPiAw KTsKLSAgICAgICAgIHJldHVybiBOVUxMOwotQEAgLTI2MTUsMTIgKzI2MDYsMTIgQEAgbGx2bTo6 VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkFsbG9jYUluc3QobGx2bTo6VHlwZSAqbGx2bVR5 cGUsIGNvbnN0IGNoYXIgKm4KLSAgICAgICAgIGxsdm06Okluc3RydWN0aW9uICpyZXRJbnN0ID0g YWxsb2NhQmxvY2stPmdldFRlcm1pbmF0b3IoKTsKLSAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50 UG9zLCByZXRJbnN0KTsKLSAgICAgICAgIHVuc2lnbmVkIEFTID0gbGx2bUZ1bmN0aW9uLT5nZXRQ YXJlbnQoKS0+Z2V0RGF0YUxheW91dCgpLmdldEFsbG9jYUFkZHJTcGFjZSgpOwotLSAgICAgICAg aW5zdCA9IG5ldyBsbHZtOjpBbGxvY2FJbnN0KGxsdm1UeXBlLCBBUywgbmFtZSA/IG5hbWUgOiAi IiwgcmV0SW5zdCk7Ci0rICAgICAgICBpbnN0ID0gbmV3IGxsdm06OkFsbG9jYUluc3QobGx2bVR5 cGUsIEFTLCBuYW1lLCByZXRJbnN0KTsKLSAgICAgfSBlbHNlIHsKLSAgICAgICAgIC8vIFVubGVz cyB0aGUgY2FsbGVyIG92ZXJyb2RlIHRoZSBkZWZhdWx0IGFuZCB3YW50cyBpdCBpbiB0aGUKLSAg ICAgICAgIC8vIGN1cnJlbnQgYmFzaWMgYmxvY2sKLSAgICAgICAgIHVuc2lnbmVkIEFTID0gbGx2 bUZ1bmN0aW9uLT5nZXRQYXJlbnQoKS0+Z2V0RGF0YUxheW91dCgpLmdldEFsbG9jYUFkZHJTcGFj ZSgpOwotLSAgICAgICAgaW5zdCA9IG5ldyBsbHZtOjpBbGxvY2FJbnN0KGxsdm1UeXBlLCBBUywg bmFtZSA/IG5hbWUgOiAiIiwgYmJsb2NrKTsKLSsgICAgICAgIGluc3QgPSBuZXcgbGx2bTo6QWxs b2NhSW5zdChsbHZtVHlwZSwgQVMsIG5hbWUsIGJibG9jayk7Ci0gICAgIH0KLSAKLSAgICAgLy8g SWYgbm8gYWxpZ25tZW50IHdhcyBzcGVjaWZpZWQgYnV0IHdlIGhhdmUgYW4gYXJyYXkgb2YgYSB1 bmlmb3JtCi1AQCAtMjYzOSw3ICsyNjMwLDggQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENv bnRleHQ6OkFsbG9jYUluc3QobGx2bTo6VHlwZSAqbGx2bVR5cGUsIGNvbnN0IGNoYXIgKm4KLSAg ICAgcmV0dXJuIGluc3Q7Ci0gfQotIAotLWxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0 OjpBbGxvY2FJbnN0KGNvbnN0IFR5cGUgKnB0clR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBh bGlnbiwgYm9vbCBhdEVudHJ5QmxvY2spIHsKLStsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29u dGV4dDo6QWxsb2NhSW5zdChjb25zdCBUeXBlICpwdHJUeXBlLCBjb25zdCBsbHZtOjpUd2luZSAm bmFtZSwgaW50IGFsaWduLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJvb2wgYXRFbnRyeUJsb2NrKSB7Ci0gICAgIGlmIChwdHJUeXBlID09IE5VTEwpIHsK LSAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAg ICAgICByZXR1cm4gTlVMTDsKLUBAIC0zMDc1LDY2ICszMDY3LDU5IEBAIGxsdm06Okluc3RydWN0 aW9uICpGdW5jdGlvbkVtaXRDb250ZXh0OjpCcmFuY2hJbnN0KGxsdm06OkJhc2ljQmxvY2sgKnRy dWVCbG9jaywKLSAgICAgcmV0dXJuIGI7Ci0gfQotIAotLWxsdm06OlZhbHVlICpGdW5jdGlvbkVt aXRDb250ZXh0OjpFeHRyYWN0SW5zdChsbHZtOjpWYWx1ZSAqdiwgaW50IGVsdCwgY29uc3QgY2hh ciAqbmFtZSkgewotK2xsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpFeHRyYWN0SW5z dChsbHZtOjpWYWx1ZSAqdiwgaW50IGVsdCwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSAg ICAgaWYgKHYgPT0gTlVMTCkgewotICAgICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVy cm9yQ291bnQgPiAwKTsKLSAgICAgICAgIHJldHVybiBOVUxMOwotICAgICB9Ci0gCi0tICAgIGlm IChuYW1lID09IE5VTEwpIHsKLS0gICAgICAgIGNoYXIgYnVmWzMyXTsKLS0gICAgICAgIHNucHJp bnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJfZXh0cmFjdF8lZCIsIGVsdCk7Ci0tICAgICAgICBuYW1l ID0gTExWTUdldE5hbWUodiwgYnVmKTsKLS0gICAgfQotICAgICBsbHZtOjpJbnN0cnVjdGlvbiAq ZWkgPSBOVUxMOwotICAgICBpZiAobGx2bTo6aXNhPGxsdm06OlZlY3RvclR5cGU+KHYtPmdldFR5 cGUoKSkpCi0tICAgICAgICBlaSA9IGxsdm06OkV4dHJhY3RFbGVtZW50SW5zdDo6Q3JlYXRlKHYs IExMVk1JbnQzMihlbHQpLCBuYW1lLCBiYmxvY2spOwotKyAgICAgICAgZWkgPSBsbHZtOjpFeHRy YWN0RWxlbWVudEluc3Q6OkNyZWF0ZSgKLSsgICAgICAgICAgICB2LCBMTFZNSW50MzIoZWx0KSwK LSsgICAgICAgICAgICBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/ICgobGx2bTo6VHdpbmUodi0+ Z2V0TmFtZSgpKSArICJfZXh0cmFjdF8iKSArIGxsdm06OlR3aW5lKGVsdCkpIDogbmFtZSwgYmJs b2NrKTsKLSAgICAgZWxzZQotLSAgICAgICAgZWkgPSBsbHZtOjpFeHRyYWN0VmFsdWVJbnN0OjpD cmVhdGUodiwgZWx0LCBuYW1lLCBiYmxvY2spOwotKyAgICAgICAgZWkgPSBsbHZtOjpFeHRyYWN0 VmFsdWVJbnN0OjpDcmVhdGUoCi0rICAgICAgICAgICAgdiwgZWx0LCBuYW1lLmlzVHJpdmlhbGx5 RW1wdHkoKSA/ICgobGx2bTo6VHdpbmUodi0+Z2V0TmFtZSgpKSArICJfZXh0cmFjdF8iKSArIGxs dm06OlR3aW5lKGVsdCkpIDogbmFtZSwKLSsgICAgICAgICAgICBiYmxvY2spOwotICAgICBBZGRE ZWJ1Z1BvcyhlaSk7Ci0gICAgIHJldHVybiBlaTsKLSB9Ci0gCi0tbGx2bTo6VmFsdWUgKkZ1bmN0 aW9uRW1pdENvbnRleHQ6Okluc2VydEluc3QobGx2bTo6VmFsdWUgKnYsIGxsdm06OlZhbHVlICpl bHRWYWwsIGludCBlbHQsIGNvbnN0IGNoYXIgKm5hbWUpIHsKLStsbHZtOjpWYWx1ZSAqRnVuY3Rp b25FbWl0Q29udGV4dDo6SW5zZXJ0SW5zdChsbHZtOjpWYWx1ZSAqdiwgbGx2bTo6VmFsdWUgKmVs dFZhbCwgaW50IGVsdCwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAgaWYgKHYgPT0g TlVMTCB8fCBlbHRWYWwgPT0gTlVMTCkgewotICAgICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3Ms IG0tPmVycm9yQ291bnQgPiAwKTsKLSAgICAgICAgIHJldHVybiBOVUxMOwotICAgICB9Ci0gCi0t ICAgIGlmIChuYW1lID09IE5VTEwpIHsKLS0gICAgICAgIGNoYXIgYnVmWzMyXTsKLS0gICAgICAg IHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJfaW5zZXJ0XyVkIiwgZWx0KTsKLS0gICAgICAg IG5hbWUgPSBMTFZNR2V0TmFtZSh2LCBidWYpOwotLSAgICB9Ci0tCi0gICAgIGxsdm06Okluc3Ry dWN0aW9uICppaSA9IE5VTEw7Ci0gICAgIGlmIChsbHZtOjppc2E8bGx2bTo6VmVjdG9yVHlwZT4o di0+Z2V0VHlwZSgpKSkKLS0gICAgICAgIGlpID0gbGx2bTo6SW5zZXJ0RWxlbWVudEluc3Q6OkNy ZWF0ZSh2LCBlbHRWYWwsIExMVk1JbnQzMihlbHQpLCBuYW1lLCBiYmxvY2spOwotKyAgICAgICAg aWkgPSBsbHZtOjpJbnNlcnRFbGVtZW50SW5zdDo6Q3JlYXRlKAotKyAgICAgICAgICAgIHYsIGVs dFZhbCwgTExWTUludDMyKGVsdCksCi0rICAgICAgICAgICAgbmFtZS5pc1RyaXZpYWxseUVtcHR5 KCkgPyAoKGxsdm06OlR3aW5lKHYtPmdldE5hbWUoKSkgKyAiX2luc2VydF8iKSArIGxsdm06OlR3 aW5lKGVsdCkpIDogbmFtZSwgYmJsb2NrKTsKLSAgICAgZWxzZQotLSAgICAgICAgaWkgPSBsbHZt OjpJbnNlcnRWYWx1ZUluc3Q6OkNyZWF0ZSh2LCBlbHRWYWwsIGVsdCwgbmFtZSwgYmJsb2NrKTsK LSsgICAgICAgIGlpID0gbGx2bTo6SW5zZXJ0VmFsdWVJbnN0OjpDcmVhdGUoCi0rICAgICAgICAg ICAgdiwgZWx0VmFsLCBlbHQsCi0rICAgICAgICAgICAgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkg PyAoKGxsdm06OlR3aW5lKHYtPmdldE5hbWUoKSkgKyAiX2luc2VydF8iKSArIGxsdm06OlR3aW5l KGVsdCkpIDogbmFtZSwgYmJsb2NrKTsKLSAgICAgQWRkRGVidWdQb3MoaWkpOwotICAgICByZXR1 cm4gaWk7Ci0gfQotIAotLWxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpTaHVmZmxl SW5zdChsbHZtOjpWYWx1ZSAqdjEsIGxsdm06OlZhbHVlICp2MiwgbGx2bTo6VmFsdWUgKm1hc2ss IGNvbnN0IGNoYXIgKm5hbWUpIHsKLStsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6 U2h1ZmZsZUluc3QobGx2bTo6VmFsdWUgKnYxLCBsbHZtOjpWYWx1ZSAqdjIsIGxsdm06OlZhbHVl ICptYXNrLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBpZiAodjEgPT0gTlVMTCB8fCB2MiA9PSBO VUxMIHx8IG1hc2sgPT0gTlVMTCkgewotICAgICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0t PmVycm9yQ291bnQgPiAwKTsKLSAgICAgICAgIHJldHVybiBOVUxMOwotICAgICB9Ci0gCi0tICAg IGlmIChuYW1lID09IE5VTEwpIHsKLS0gICAgICAgIGNoYXIgYnVmWzMyXTsKLS0gICAgICAgIHNu cHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJfc2h1ZmZsZSIpOwotLSAgICAgICAgbmFtZSA9IExM Vk1HZXROYW1lKHYxLCBidWYpOwotLSAgICB9Ci0tCi0tICAgIGxsdm06Okluc3RydWN0aW9uICpp aSA9IG5ldyBsbHZtOjpTaHVmZmxlVmVjdG9ySW5zdCh2MSwgdjIsIG1hc2ssIG5hbWUsIGJibG9j ayk7Ci0rICAgIGxsdm06Okluc3RydWN0aW9uICppaSA9IG5ldyBsbHZtOjpTaHVmZmxlVmVjdG9y SW5zdCgKLSsgICAgICAgIHYxLCB2MiwgbWFzaywgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyAo bGx2bTo6VHdpbmUodjEtPmdldE5hbWUoKSkgKyAiX3NodWZmbGUiKSA6IG5hbWUsIGJibG9jayk7 Ci0gCi0gICAgIEFkZERlYnVnUG9zKGlpKTsKLSAgICAgcmV0dXJuIGlpOwotIH0KLSAKLS1sbHZt OjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6QnJvYWRjYXN0VmFsdWUobGx2bTo6VmFsdWUg KnYsIGxsdm06OlR5cGUgKnZlY1R5cGUsIGNvbnN0IGNoYXIgKm5hbWUpIHsKLStsbHZtOjpWYWx1 ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6QnJvYWRjYXN0VmFsdWUobGx2bTo6VmFsdWUgKnYsIGxs dm06OlR5cGUgKnZlY1R5cGUsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIGlmICh2 ID09IE5VTEwgfHwgdmVjVHlwZSA9PSBOVUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3VycmVu dFBvcywgbS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci1AQCAtMzE0 OCwxMiArMzEzMyw2IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpCcm9hZGNh c3RWYWx1ZShsbHZtOjpWYWx1ZSAqdiwgbGx2bTo6VHlwZSAqdmVjCi0gICAgIEFzc2VydCh0eSAm JiB0eS0+Z2V0VmVjdG9yRWxlbWVudFR5cGUoKSA9PSB2LT5nZXRUeXBlKCkpOwotICNlbmRpZgot IAotLSAgICBpZiAobmFtZSA9PSBOVUxMKSB7Ci0tICAgICAgICBjaGFyIGJ1ZlszMl07Ci0tICAg ICAgICBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiX2Jyb2FkY2FzdCIpOwotLSAgICAgICAg bmFtZSA9IExMVk1HZXROYW1lKHYsIGJ1Zik7Ci0tICAgIH0KLS0KLSAgICAgLy8gR2VuZXJhdGUg dGhlIGZvbGxvd2luZyBzZXF1ZW5jZToKLSAgICAgLy8gICAlbmFtZV9pbml0LmkgPSBpbnNlcnRl bGVtZW50IDw0IHggaTMyPiB1bmRlZiwgaTMyICV2YWwsIGkzMiAwCi0gICAgIC8vICAgJW5hbWUu aSA9IHNodWZmbGV2ZWN0b3IgPDQgeCBpMzI+ICVuYW1lX2luaXQuaSwgPDQgeCBpMzI+IHVuZGVm LAotQEAgLTMxNjMsNyArMzE0Miw3IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0 OjpCcm9hZGNhc3RWYWx1ZShsbHZtOjpWYWx1ZSAqdiwgbGx2bTo6VHlwZSAqdmVjCi0gICAgIGxs dm06OlZhbHVlICp1bmRlZjIgPSBsbHZtOjpVbmRlZlZhbHVlOjpnZXQodmVjVHlwZSk7Ci0gCi0g ICAgIC8vIEluc2VydEVsZW1lbnQKLS0gICAgbGx2bTo6VHdpbmUgdHcgPSBsbHZtOjpUd2luZShu YW1lKSArIGxsdm06OlR3aW5lKCJfaW5pdCIpOwotKyAgICBsbHZtOjpUd2luZSB0dyA9IG5hbWUu aXNUcml2aWFsbHlFbXB0eSgpID8gKGxsdm06OlR3aW5lKHYtPmdldE5hbWUoKSkgKyAiX2Jyb2Fk Y2FzdCIpIDogbmFtZSArIGxsdm06OlR3aW5lKCJfaW5pdCIpOwotICAgICBsbHZtOjpWYWx1ZSAq aW5zZXJ0ID0gSW5zZXJ0SW5zdCh1bmRlZjEsIHYsIDAsIHR3LnN0cigpLmNfc3RyKCkpOwotIAot ICAgICAvLyBTaHVmZmxlVmVjdG9yCi1AQCAtMzE3OSwyOCArMzE1OCwyNyBAQCBsbHZtOjpWYWx1 ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6QnJvYWRjYXN0VmFsdWUobGx2bTo6VmFsdWUgKnYsIGxs dm06OlR5cGUgKnZlYwotICAgICAgICAgbGx2bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0KGxs dm06OkVsZW1lbnRDb3VudDo6Z2V0KHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4odHktPmdldE51 bUVsZW1lbnRzKCkpLCBmYWxzZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbGx2bTo6Q29uc3RhbnQ6OmdldE51bGxWYWx1ZShsbHZtOjpUeXBlOjpnZXRJbnQzMlR5 KCpnLT5jdHgpKSk7Ci0gI2VuZGlmCi0tICAgIGxsdm06OlZhbHVlICpyZXQgPSBTaHVmZmxlSW5z dChpbnNlcnQsIHVuZGVmMiwgemVyb1ZlYywgbmFtZSk7Ci0rICAgIGxsdm06OlZhbHVlICpyZXQg PSBTaHVmZmxlSW5zdChpbnNlcnQsIHVuZGVmMiwgemVyb1ZlYywKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gKGxsdm06OlR3aW5l KHYtPmdldE5hbWUoKSkgKyAiX2Jyb2FkY2FzdCIpIDogbmFtZSk7Ci0gCi0gICAgIHJldHVybiBy ZXQ7Ci0gfQotIAotLWxsdm06OlBISU5vZGUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OlBoaU5vZGUo bGx2bTo6VHlwZSAqdHlwZSwgaW50IGNvdW50LCBjb25zdCBjaGFyICpuYW1lKSB7Ci0tICAgIGxs dm06OlBISU5vZGUgKnBuID0gbGx2bTo6UEhJTm9kZTo6Q3JlYXRlKHR5cGUsIGNvdW50LCBuYW1l ID8gbmFtZSA6ICJwaGkiLCBiYmxvY2spOwotK2xsdm06OlBISU5vZGUgKkZ1bmN0aW9uRW1pdENv bnRleHQ6OlBoaU5vZGUobGx2bTo6VHlwZSAqdHlwZSwgaW50IGNvdW50LCBjb25zdCBsbHZtOjpU d2luZSAmbmFtZSkgewotKyAgICBsbHZtOjpQSElOb2RlICpwbiA9IGxsdm06OlBISU5vZGU6OkNy ZWF0ZSh0eXBlLCBjb3VudCwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyAicGhpIiA6IG5hbWUs IGJibG9jayk7Ci0gICAgIEFkZERlYnVnUG9zKHBuKTsKLSAgICAgcmV0dXJuIHBuOwotIH0KLSAK LSBsbHZtOjpJbnN0cnVjdGlvbiAqRnVuY3Rpb25FbWl0Q29udGV4dDo6U2VsZWN0SW5zdChsbHZt OjpWYWx1ZSAqdGVzdCwgbGx2bTo6VmFsdWUgKnZhbDAsIGxsdm06OlZhbHVlICp2YWwxLAotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo YXIgKm5hbWUpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBpZiAodGVzdCA9PSBOVUxM IHx8IHZhbDAgPT0gTlVMTCB8fCB2YWwxID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBvcyhj dXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLSAg ICAgfQotIAotLSAgICBpZiAobmFtZSA9PSBOVUxMKQotLSAgICAgICAgbmFtZSA9IExMVk1HZXRO YW1lKHRlc3QsICJfc2VsZWN0Iik7Ci0tCi0tICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0g bGx2bTo6U2VsZWN0SW5zdDo6Q3JlYXRlKHRlc3QsIHZhbDAsIHZhbDEsIG5hbWUsIGJibG9jayk7 Ci0rICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0gbGx2bTo6U2VsZWN0SW5zdDo6Q3JlYXRl KAotKyAgICAgICAgdGVzdCwgdmFsMCwgdmFsMSwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyAo bGx2bTo6VHdpbmUodGVzdC0+Z2V0TmFtZSgpKSArICJfc2VsZWN0IikgOiBuYW1lLCBiYmxvY2sp OwotICAgICBBZGREZWJ1Z1BvcyhpbnN0KTsKLSAgICAgcmV0dXJuIGluc3Q7Ci0gfQotQEAgLTMy MjYsNyArMzIwNCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgbENhbGxlZUFyZ0NvdW50KGxsdm06 OlZhbHVlICpjYWxsZWUsIGNvbnN0IEZ1bmN0aW9uVHlwZSAqZnVuCi0gfQotIAotIGxsdm06OlZh bHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpDYWxsSW5zdChsbHZtOjpWYWx1ZSAqZnVuYywgY29u c3QgRnVuY3Rpb25UeXBlICpmdW5jVHlwZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8bGx2bTo6VmFsdWUgKj4gJmFyZ3MsIGNv bnN0IGNoYXIgKm5hbWUpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8bGx2bTo6VmFsdWUgKj4gJmFyZ3MsIGNvbnN0IGxsdm06 OlR3aW5lICZuYW1lKSB7Ci0gICAgIGlmIChmdW5jID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2Vy dFBvcyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVM TDsKLUBAIC0zMjU4LDkgKzMyMzYsOSBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4 dDo6Q2FsbEluc3QobGx2bTo6VmFsdWUgKmZ1bmMsIGNvbnN0IEZ1bmN0aW9uVHlwZQotICNpZiBJ U1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFfMAotICAgICAgICAgbGx2bTo6UG9pbnRl clR5cGUgKmZ1bmNfcHRyX3R5cGUgPSBsbHZtOjpkeW5fY2FzdDxsbHZtOjpQb2ludGVyVHlwZT4o ZnVuYy0+Z2V0VHlwZSgpKTsKLSAgICAgICAgIGxsdm06OkZ1bmN0aW9uVHlwZSAqZnVuY190eXBl ID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6RnVuY3Rpb25UeXBlPihmdW5jX3B0cl90eXBlLT5nZXRQ b2ludGVyRWxlbWVudFR5cGUoKSk7Ci0tICAgICAgICBsbHZtOjpDYWxsSW5zdCAqY2FsbGluc3Qg PSBsbHZtOjpDYWxsSW5zdDo6Q3JlYXRlKGZ1bmNfdHlwZSwgZnVuYywgYXJnVmFscywgbmFtZSA/ IG5hbWUgOiAiIiwgYmJsb2NrKTsKLSsgICAgICAgIGxsdm06OkNhbGxJbnN0ICpjYWxsaW5zdCA9 IGxsdm06OkNhbGxJbnN0OjpDcmVhdGUoZnVuY190eXBlLCBmdW5jLCBhcmdWYWxzLCBuYW1lLCBi YmxvY2spOwotICNlbHNlCi0tICAgICAgICBsbHZtOjpDYWxsSW5zdCAqY2FsbGluc3QgPSBsbHZt OjpDYWxsSW5zdDo6Q3JlYXRlKGZ1bmMsIGFyZ1ZhbHMsIG5hbWUgPyBuYW1lIDogIiIsIGJibG9j ayk7Ci0rICAgICAgICBsbHZtOjpDYWxsSW5zdCAqY2FsbGluc3QgPSBsbHZtOjpDYWxsSW5zdDo6 Q3JlYXRlKGZ1bmMsIGFyZ1ZhbHMsIG5hbWUsIGJibG9jayk7Ci0gI2VuZGlmCi0gCi0gICAgICAg ICAvLyBXZSBjb3VsZCBiZSBkZWFsaW5nIHdpdGggYSBmdW5jdGlvbiBwb2ludGVyIGluIHdoaWNo IGNhc2UgdGhpcyB3aWxsIG5vdCBiZSBhICdsbHZtOjpGdW5jdGlvbicuCi1AQCAtMzQ2NCwxNCAr MzQ0MiwxNCBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6Q2FsbEluc3QobGx2 bTo6VmFsdWUgKmZ1bmMsIGNvbnN0IEZ1bmN0aW9uVHlwZQotIH0KLSAKLSBsbHZtOjpWYWx1ZSAq RnVuY3Rpb25FbWl0Q29udGV4dDo6Q2FsbEluc3QobGx2bTo6VmFsdWUgKmZ1bmMsIGNvbnN0IEZ1 bmN0aW9uVHlwZSAqZnVuY1R5cGUsIGxsdm06OlZhbHVlICphcmcsCi0tICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpIHsKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGx2bTo6VHdpbmUgJm5h bWUpIHsKLSAgICAgc3RkOjp2ZWN0b3I8bGx2bTo6VmFsdWUgKj4gYXJnczsKLSAgICAgYXJncy5w dXNoX2JhY2soYXJnKTsKLSAgICAgcmV0dXJuIENhbGxJbnN0KGZ1bmMsIGZ1bmNUeXBlLCBhcmdz LCBuYW1lKTsKLSB9Ci0gCi0gbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkNhbGxJ bnN0KGxsdm06OlZhbHVlICpmdW5jLCBjb25zdCBGdW5jdGlvblR5cGUgKmZ1bmNUeXBlLCBsbHZt OjpWYWx1ZSAqYXJnMCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbGx2bTo6VmFsdWUgKmFyZzEsIGNvbnN0IGNoYXIgKm5hbWUpIHsKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6VmFsdWUgKmFyZzEsIGNvbnN0IGxs dm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIHN0ZDo6dmVjdG9yPGxsdm06OlZhbHVlICo+IGFyZ3M7 Ci0gICAgIGFyZ3MucHVzaF9iYWNrKGFyZzApOwotICAgICBhcmdzLnB1c2hfYmFjayhhcmcxKTsK LWRpZmYgLS1naXQgYS9zcmMvY3R4LmggYi9zcmMvY3R4LmgKLWluZGV4IDZlNWFkNzRiYS4uNDhi M2JiODI2IDEwMDY0NAotLS0tIGEvc3JjL2N0eC5oCi0rKysgYi9zcmMvY3R4LmgKLUBAIC0zMDIs NyArMzAyLDcgQEAgY2xhc3MgRnVuY3Rpb25FbWl0Q29udGV4dCB7Ci0gICAgIGxsdm06OlZhbHVl ICpHZXRTdHJpbmdQdHIoY29uc3Qgc3RkOjpzdHJpbmcgJnN0cik7Ci0gCi0gICAgIC8qKiBDcmVh dGUgYSBuZXcgYmFzaWMgYmxvY2sgd2l0aCBnaXZlbiBuYW1lICovCi0tICAgIGxsdm06OkJhc2lj QmxvY2sgKkNyZWF0ZUJhc2ljQmxvY2soY29uc3QgY2hhciAqbmFtZSwgbGx2bTo6QmFzaWNCbG9j ayAqaW5zZXJ0QWZ0ZXIgPSBOVUxMKTsKLSsgICAgbGx2bTo6QmFzaWNCbG9jayAqQ3JlYXRlQmFz aWNCbG9jayhjb25zdCBsbHZtOjpUd2luZSAmbmFtZSwgbGx2bTo6QmFzaWNCbG9jayAqaW5zZXJ0 QWZ0ZXIgPSBOVUxMKTsKLSAKLSAgICAgLyoqIEdpdmVuIGEgdmVjdG9yIHdpdGggZWxlbWVudCB0 eXBlIGkxLCByZXR1cm4gYSB2ZWN0b3Igb2YgdHlwZQotICAgICAgICAgTExWTVR5cGVzOjpCb29s VmVjdG9yVHlwZS4gIFRoaXMgbWV0aG9kIGhhbmRsZXMgdGhlIGNvbnZlcnNpb24gZm9yCi1AQCAt MzgwLDMzICszODAsMzMgQEAgY2xhc3MgRnVuY3Rpb25FbWl0Q29udGV4dCB7Ci0gICAgICAgICB0 aGlzIGFsc28gaGFuZGxlcyBhcHBseWluZyB0aGUgZ2l2ZW4gb3BlcmF0aW9uIHRvIHRoZSB2ZWN0 b3IKLSAgICAgICAgIGVsZW1lbnRzLiAqLwotICAgICBsbHZtOjpWYWx1ZSAqQmluYXJ5T3BlcmF0 b3IobGx2bTo6SW5zdHJ1Y3Rpb246OkJpbmFyeU9wcyBpbnN0LCBsbHZtOjpWYWx1ZSAqdjAsIGxs dm06OlZhbHVlICp2MSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo YXIgKm5hbWUgPSBOVUxMKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotIAotICAgICAvKiogRW1pdCB0aGUgIm5vdCIgb3Bl cmF0b3IuICBMaWtlIEJpbmFyeU9wZXJhdG9yKCksIHRoaXMgYWxzbyBoYW5kbGVzCi0gICAgICAg ICBhIFZlY3RvclR5cGUtYmFzZWQgb3BlcmFuZC4gKi8KLS0gICAgbGx2bTo6VmFsdWUgKk5vdE9w ZXJhdG9yKGxsdm06OlZhbHVlICp2LCBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0rICAgIGxs dm06OlZhbHVlICpOb3RPcGVyYXRvcihsbHZtOjpWYWx1ZSAqdiwgY29uc3QgbGx2bTo6VHdpbmUg Jm5hbWUgPSAiIik7Ci0gCi0gICAgIC8qKiBFbWl0IGEgY29tcGFyaXNvbiBpbnN0cnVjdGlvbi4g IElmIHRoZSBvcGVyYW5kcyBhcmUgVmVjdG9yVHlwZXMsCi0gICAgICAgICB0aGVuIGEgdmFsdWUg Zm9yIHRoZSBjb3JyZXNwb25kaW5nIGJvb2xlYW4gVmVjdG9yVHlwZSBpcwotICAgICAgICAgcmV0 dXJuZWQuICovCi0gICAgIGxsdm06OlZhbHVlICpDbXBJbnN0KGxsdm06Okluc3RydWN0aW9uOjpP dGhlck9wcyBpbnN0LCBsbHZtOjpDbXBJbnN0OjpQcmVkaWNhdGUgcHJlZCwgbGx2bTo6VmFsdWUg KnYwLAotLSAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqdjEsIGNvbnN0IGNo YXIgKm5hbWUgPSBOVUxMKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6VmFsdWUg KnYxLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSAKLSAgICAgLyoqIEdpdmVuIGEg c2NhbGFyIHZhbHVlLCByZXR1cm4gYSB2ZWN0b3Igb2YgdGhlIHNhbWUgdHlwZSAob3IgYW4KLSAg ICAgICAgIGFycmF5LCBmb3IgcG9pbnRlciB0eXBlcykuICovCi0tICAgIGxsdm06OlZhbHVlICpT bWVhclVuaWZvcm0obGx2bTo6VmFsdWUgKnZhbHVlLCBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7 Ci0rICAgIGxsdm06OlZhbHVlICpTbWVhclVuaWZvcm0obGx2bTo6VmFsdWUgKnZhbHVlLCBjb25z dCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSAKLS0gICAgbGx2bTo6VmFsdWUgKkJpdENhc3RJ bnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwgY29uc3QgY2hhciAqbmFt ZSA9IE5VTEwpOwotLSAgICBsbHZtOjpWYWx1ZSAqUHRyVG9JbnRJbnN0KGxsdm06OlZhbHVlICp2 YWx1ZSwgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwpOwotLSAgICBsbHZtOjpWYWx1ZSAqUHRyVG9J bnRJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwgY29uc3QgY2hhciAq bmFtZSA9IE5VTEwpOwotLSAgICBsbHZtOjpWYWx1ZSAqSW50VG9QdHJJbnN0KGxsdm06OlZhbHVl ICp2YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwpOwotKyAg ICBsbHZtOjpWYWx1ZSAqQml0Q2FzdEluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBl ICp0eXBlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSsgICAgbGx2bTo6VmFsdWUg KlB0clRvSW50SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1l ID0gIiIpOwotKyAgICBsbHZtOjpWYWx1ZSAqUHRyVG9JbnRJbnN0KGxsdm06OlZhbHVlICp2YWx1 ZSwgbGx2bTo6VHlwZSAqdHlwZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0rICAg IGxsdm06OlZhbHVlICpJbnRUb1B0ckluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBl ICp0eXBlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSAKLS0gICAgbGx2bTo6SW5z dHJ1Y3Rpb24gKlRydW5jSW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5cGUs IGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLSsgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKlRydW5j SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5cGUsIGNvbnN0IGxsdm06OlR3 aW5lICZuYW1lID0gIiIpOwotICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqQ2FzdEluc3QobGx2bTo6 SW5zdHJ1Y3Rpb246OkNhc3RPcHMgb3AsIGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAq dHlwZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUg PSBOVUxMKTsKLS0gICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKkZQQ2FzdEluc3QobGx2bTo6VmFsdWUg KnZhbHVlLCBsbHZtOjpUeXBlICp0eXBlLCBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0tICAg IGxsdm06Okluc3RydWN0aW9uICpTRXh0SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5 cGUgKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLS0gICAgbGx2bTo6SW5zdHJ1Y3Rp b24gKlpFeHRJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwgY29uc3Qg Y2hhciAqbmFtZSA9IE5VTEwpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0rICAgIGxsdm06Okluc3RydWN0aW9uICpGUENh c3RJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwgY29uc3QgbGx2bTo6 VHdpbmUgJm5hbWUgPSAiIik7Ci0rICAgIGxsdm06Okluc3RydWN0aW9uICpTRXh0SW5zdChsbHZt OjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5cGUsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1l ID0gIiIpOwotKyAgICBsbHZtOjpJbnN0cnVjdGlvbiAqWkV4dEluc3QobGx2bTo6VmFsdWUgKnZh bHVlLCBsbHZtOjpUeXBlICp0eXBlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSAK LSAgICAgLyoqIEdpdmVuIHR3byBpbnRlZ2VyLXR5cGVkIHZhbHVlcyAoYnV0IHBvc3NpYmx5IG9u ZSB2ZWN0b3IgYW5kIHRoZQotICAgICAgICAgb3RoZXIgbm90LCBhbmQgb3Igb2YgcG9zc2libHkt ZGlmZmVyZW50IGJpdC13aWR0aHMpLCB1cGRhdGUgdGhlaXIKLUBAIC00MjYsOSArNDI2LDkgQEAg Y2xhc3MgRnVuY3Rpb25FbWl0Q29udGV4dCB7Ci0gICAgICAgICBwb2ludGVycy4gIFRoZSB1bmRl cmx5aW5nIHR5cGUgb2YgdGhlIGJhc2UgcG9pbnRlciBtdXN0IGJlIHByb3ZpZGVkCi0gICAgICAg ICB2aWEgdGhlIHB0clR5cGUgcGFyYW1ldGVyICovCi0gICAgIGxsdm06OlZhbHVlICpHZXRFbGVt ZW50UHRySW5zdChsbHZtOjpWYWx1ZSAqYmFzZVB0ciwgbGx2bTo6VmFsdWUgKmluZGV4LCBjb25z dCBUeXBlICpwdHJUeXBlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgY2hhciAqbmFtZSA9IE5VTEwpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0gICAgIGxsdm06OlZhbHVlICpHZXRF bGVtZW50UHRySW5zdChsbHZtOjpWYWx1ZSAqYmFzZVB0ciwgbGx2bTo6VmFsdWUgKmluZGV4MCwg bGx2bTo6VmFsdWUgKmluZGV4MSwgY29uc3QgVHlwZSAqcHRyVHlwZSwKLS0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIp OwotIAotICAgICAvKiogVGhpcyBtZXRob2QgcmV0dXJucyBhIG5ldyBwb2ludGVyIHRoYXQgcmVw cmVzZW50cyBvZmZzZXR0aW5nIHRoZQotICAgICAgICAgZ2l2ZW4gYmFzZSBwb2ludGVyIHRvIHBv aW50IGF0IHRoZSBnaXZlbiBlbGVtZW50IG51bWJlciBvZiB0aGUKLUBAIC00MzYsMjYgKzQzNiwy NiBAQCBjbGFzcyBGdW5jdGlvbkVtaXRDb250ZXh0IHsKLSAgICAgICAgIHBvaW50ZXIgbXVzdCBi ZSBhIHBvaW50ZXIgdG8gYSBzdHJ1Y3R1cmUgdHlwZS4gIFRoZSBwdHJUeXBlIGdpdmVzCi0gICAg ICAgICB0aGUgdHlwZSBvZiB0aGUgcG9pbnRlciwgdGhvdWdoIGl0IG1heSBiZSBOVUxMIGlmIHRo ZSBiYXNlIHBvaW50ZXIKLSAgICAgICAgIGlzIHVuaWZvcm0uICovCi0tICAgIGxsdm06OlZhbHVl ICpBZGRFbGVtZW50T2Zmc2V0KGxsdm06OlZhbHVlICpiYXNlUHRyLCBpbnQgZWxlbWVudE51bSwg Y29uc3QgVHlwZSAqcHRyVHlwZSwgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwsCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBvaW50ZXJUeXBlICoqcmVzdWx0UHRyVHlw ZSA9IE5VTEwpOwotKyAgICBsbHZtOjpWYWx1ZSAqQWRkRWxlbWVudE9mZnNldChsbHZtOjpWYWx1 ZSAqYmFzZVB0ciwgaW50IGVsZW1lbnROdW0sIGNvbnN0IFR5cGUgKnB0clR5cGUsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIs IGNvbnN0IFBvaW50ZXJUeXBlICoqcmVzdWx0UHRyVHlwZSA9IE5VTEwpOwotIAotICAgICAvKiog Qm9vbCBpcyBzdG9yZWQgYXMgaTggYW5kIDxXSURUSCB4IGk4PiBidXQgcmVwcmVzZW50ZWQgaW4g SVIgYXMgaTEgYW5kCi0gICAgICAqIDxXSURUSCB4IE1BU0s+LiBUaGlzIGlzIGEgaGVscGVyIGZ1 bmN0aW9uIHRvIG1hdGNoIGJvb2wgc2l6ZSBhdCBzdG9yYWdlCi0gICAgICAqIGludGVyZmFjZS4g Ki8KLS0gICAgbGx2bTo6VmFsdWUgKlN3aXRjaEJvb2xTaXplKGxsdm06OlZhbHVlICp2YWx1ZSwg bGx2bTo6VHlwZSAqdG9UeXBlLCBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0rICAgIGxsdm06 OlZhbHVlICpTd2l0Y2hCb29sU2l6ZShsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnRv VHlwZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0gICAgIC8qKiBMb2FkIGZyb20g dGhlIG1lbW9yeSBsb2NhdGlvbihzKSBnaXZlbiBieSBsdmFsdWUsIHVzaW5nIHRoZSBnaXZlbgot ICAgICAgICAgbWFzay4gIFRoZSBsdmFsdWUgbWF5IGJlIHZhcnlpbmcsIGluIHdoaWNoIGNhc2Ug dGhpcyBjb3JyZXNwb25kcyB0bwotICAgICAgICAgYSBnYXRoZXIgZnJvbSB0aGUgbXVsdGlwbGUg bWVtb3J5IGxvY2F0aW9ucyBnaXZlbiBieSB0aGUgYXJyYXkgb2YKLSAgICAgICAgIHBvaW50ZXIg dmFsdWVzIGdpdmVuIGJ5IHRoZSBsdmFsdWUuICBJZiB0aGUgbHZhbHVlIGlzIG5vdCB2YXJ5aW5n LAotICAgICAgICAgdGhlbiBib3RoIHRoZSBtYXNrIHBvaW50ZXIgYW5kIHRoZSB0eXBlIHBvaW50 ZXIgbWF5IGJlIE5VTEwuICovCi0tICAgIGxsdm06OlZhbHVlICpMb2FkSW5zdChsbHZtOjpWYWx1 ZSAqcHRyLCBsbHZtOjpWYWx1ZSAqbWFzaywgY29uc3QgVHlwZSAqcHRyVHlwZSwgY29uc3QgY2hh ciAqbmFtZSA9IE5VTEwsCi0rICAgIGxsdm06OlZhbHVlICpMb2FkSW5zdChsbHZtOjpWYWx1ZSAq cHRyLCBsbHZtOjpWYWx1ZSAqbWFzaywgY29uc3QgVHlwZSAqcHRyVHlwZSwgY29uc3QgbGx2bTo6 VHdpbmUgJm5hbWUgPSAiIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgb25lX2Vs ZW0gPSBmYWxzZSk7Ci0gCi0gICAgIC8qIExvYWQgZnJvbSBtZW1vcnkgbG9jYXRpb24ocykgZ2l2 ZW4uCi0gICAgICAqICd0eXBlJyBuZWVkcyB0byBiZSBwcm92aWRlZCB3aGVuIHN0b3JhZ2UgdHlw ZSBpcyBkaWZmZXJlbnQgZnJvbSBJUiB0eXBlLiBGb3IgZXhhbXBsZSwKLSAgICAgICogJ3VuZm9y bSBib29sJyBpcyAnaTEnIGluIElSIGJ1dCBzdG9yZWQgYXMgJ2k4Jy4KLSAgICAgICogT3RoZXJ3 aXNlIGxlYXZlIHRoaXMgYXMgTlVMTC4gKi8KLS0gICAgbGx2bTo6VmFsdWUgKkxvYWRJbnN0KGxs dm06OlZhbHVlICpwdHIsIGNvbnN0IFR5cGUgKnR5cGUgPSBOVUxMLCBjb25zdCBjaGFyICpuYW1l ID0gTlVMTCk7Ci0rICAgIGxsdm06OlZhbHVlICpMb2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBj b25zdCBUeXBlICp0eXBlID0gTlVMTCwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0g Ci0gICAgIC8qKiBFbWl0cyBhbiBhbGxvY2EgaW5zdHJ1Y3Rpb24gdG8gYWxsb2NhdGUgc3RhY2sg c3RvcmFnZSBmb3IgdGhlIGdpdmVuCi0gICAgICAgICB0eXBlLiAgSWYgYSBub24temVybyBhbGln bm1lbnQgaXMgc3BlY2lmaWVkLCB0aGUgb2JqZWN0IGlzIGFsc28KLUBAIC00NjMsNyArNDYzLDgg QEAgY2xhc3MgRnVuY3Rpb25FbWl0Q29udGV4dCB7Ci0gICAgICAgICBpbnN0cnVjdGlvbiBpcyBh ZGRlZCBhdCB0aGUgc3RhcnQgb2YgdGhlIGZ1bmN0aW9uIGluIHRoZSBlbnRyeQotICAgICAgICAg YmFzaWMgYmxvY2s7IGlmIGl0IHNob3VsZCBiZSBhZGRlZCB0byB0aGUgY3VycmVudCBiYXNpYyBi bG9jaywgdGhlbgotICAgICAgICAgdGhlIGF0RW50cnlCbG9jayBwYXJhbWV0ZXIgc2hvdWxkIGJl IGZhbHNlLiAqLwotLSAgICBsbHZtOjpWYWx1ZSAqQWxsb2NhSW5zdChsbHZtOjpUeXBlICpsbHZt VHlwZSwgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwsIGludCBhbGlnbiA9IDAsIGJvb2wgYXRFbnRy eUJsb2NrID0gdHJ1ZSk7Ci0rICAgIGxsdm06OlZhbHVlICpBbGxvY2FJbnN0KGxsdm06OlR5cGUg Kmxsdm1UeXBlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiLCBpbnQgYWxpZ24gPSAwLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGF0RW50cnlCbG9jayA9IHRydWUpOwot IAotICAgICAvKiogRW1pdHMgYW4gYWxsb2NhIGluc3RydWN0aW9uIHRvIGFsbG9jYXRlIHN0YWNr IHN0b3JhZ2UgZm9yIHRoZSBnaXZlbgotICAgICAgICAgdHlwZS4gIElmIGEgbm9uLXplcm8gYWxp Z25tZW50IGlzIHNwZWNpZmllZCwgdGhlIG9iamVjdCBpcyBhbHNvCi1AQCAtNDc0LDcgKzQ3NSw3 IEBAIGNsYXNzIEZ1bmN0aW9uRW1pdENvbnRleHQgewotICAgICAgICAgVGhpcyBpbXBsZW1lbnRh dGlvbiBpcyBwcmVmZXJyZWQgd2hlbiBwb3NzaWJsZS4gSXQgaXMgbmVlZGVkIHdoZW4KLSAgICAg ICAgIHN0b3JhZ2UgdHlwZSBpcyBkaWZmZXJlbnQgZnJvbSBJUiB0eXBlLiBGb3IgZXhhbXBsZSwK LSAgICAgICAgICd1bmZvcm0gYm9vbCcgaXMgJ2kxJyBpbiBJUiBidXQgc3RvcmVkIGFzICdpOCcu ICovCi0tICAgIGxsdm06OlZhbHVlICpBbGxvY2FJbnN0KGNvbnN0IFR5cGUgKnB0clR5cGUsIGNv bnN0IGNoYXIgKm5hbWUgPSBOVUxMLCBpbnQgYWxpZ24gPSAwLCBib29sIGF0RW50cnlCbG9jayA9 IHRydWUpOwotKyAgICBsbHZtOjpWYWx1ZSAqQWxsb2NhSW5zdChjb25zdCBUeXBlICpwdHJUeXBl LCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiLCBpbnQgYWxpZ24gPSAwLCBib29sIGF0RW50 cnlCbG9jayA9IHRydWUpOwotIAotICAgICAvKiogU3RhbmRhcmQgc3RvcmUgaW5zdHJ1Y3Rpb247 IGZvciB0aGlzIHZhcmlhbnQsIHRoZSBsdmFsdWUgbXVzdCBiZSBhCi0gICAgICAgICBzaW5nbGUg cG9pbnRlciwgbm90IGEgdmFyeWluZyBsdmFsdWUuCi1AQCAtNTAyLDM5ICs1MDMsNDEgQEAgY2xh c3MgRnVuY3Rpb25FbWl0Q29udGV4dCB7Ci0gICAgIC8qKiBUaGlzIGNvbnZlbmllbmNlIG1ldGhv ZCBtYXBzIHRvIGFuIGxsdm06OkV4dHJhY3RFbGVtZW50SW5zdCBpZiB0aGUKLSAgICAgICAgIGdp dmVuIHZhbHVlIGlzIGEgbGx2bTo6VmVjdG9yVHlwZSwgYW5kIHRvIGFuIGxsdm06OkV4dHJhY3RW YWx1ZUluc3QKLSAgICAgICAgIG90aGVyd2lzZS4gKi8KLS0gICAgbGx2bTo6VmFsdWUgKkV4dHJh Y3RJbnN0KGxsdm06OlZhbHVlICp2LCBpbnQgZWx0LCBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7 Ci0rICAgIGxsdm06OlZhbHVlICpFeHRyYWN0SW5zdChsbHZtOjpWYWx1ZSAqdiwgaW50IGVsdCwg Y29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0gCi0gICAgIC8qKiBUaGlzIGNvbnZlbmll bmNlIG1ldGhvZCBtYXBzIHRvIGFuIGxsdm06Okluc2VydEVsZW1lbnRJbnN0IGlmIHRoZQotICAg ICAgICAgZ2l2ZW4gdmFsdWUgaXMgYSBsbHZtOjpWZWN0b3JUeXBlLCBhbmQgdG8gYW4gbGx2bTo6 SW5zZXJ0VmFsdWVJbnN0Ci0gICAgICAgICBvdGhlcndpc2UuICovCi0tICAgIGxsdm06OlZhbHVl ICpJbnNlcnRJbnN0KGxsdm06OlZhbHVlICp2LCBsbHZtOjpWYWx1ZSAqZWx0VmFsLCBpbnQgZWx0 LCBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0rICAgIGxsdm06OlZhbHVlICpJbnNlcnRJbnN0 KGxsdm06OlZhbHVlICp2LCBsbHZtOjpWYWx1ZSAqZWx0VmFsLCBpbnQgZWx0LCBjb25zdCBsbHZt OjpUd2luZSAmbmFtZSA9ICIiKTsKLSAKLSAgICAgLyoqIFRoaXMgY29udmVuaWVuY2UgbWV0aG9k IG1hcHMgdG8gYW4gbGx2bTo6U2h1ZmZsZVZlY3Rvckluc3QuICovCi0tICAgIGxsdm06OlZhbHVl ICpTaHVmZmxlSW5zdChsbHZtOjpWYWx1ZSAqdjEsIGxsdm06OlZhbHVlICp2MiwgbGx2bTo6VmFs dWUgKm1hc2ssIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLSsgICAgbGx2bTo6VmFsdWUgKlNo dWZmbGVJbnN0KGxsdm06OlZhbHVlICp2MSwgbGx2bTo6VmFsdWUgKnYyLCBsbHZtOjpWYWx1ZSAq bWFzaywgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0gCi0gICAgIC8qKiBUaGlzIGNv bnZlbmllbmNlIG1ldGhvZCB0byBnZW5lcmF0ZSBicm9hZGNhc3QgcGF0dGVybi4gSXQgdGFrZXMg YSB2YWx1ZQotICAgICAgICAgYW5kIGEgdmVjdG9yIHR5cGUuIFR5cGUgb2YgdGhlIHZhbHVlIG11 c3QgbWF0Y2ggZWxlbWVudCB0eXBlIG9mIHRoZQotICAgICAgICAgdmVjdG9yLiAqLwotLSAgICBs bHZtOjpWYWx1ZSAqQnJvYWRjYXN0VmFsdWUobGx2bTo6VmFsdWUgKnYsIGxsdm06OlR5cGUgKnZl Y1R5cGUsIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLSsgICAgbGx2bTo6VmFsdWUgKkJyb2Fk Y2FzdFZhbHVlKGxsdm06OlZhbHVlICp2LCBsbHZtOjpUeXBlICp2ZWNUeXBlLCBjb25zdCBsbHZt OjpUd2luZSAmbmFtZSA9ICIiKTsKLSAKLS0gICAgbGx2bTo6UEhJTm9kZSAqUGhpTm9kZShsbHZt OjpUeXBlICp0eXBlLCBpbnQgY291bnQsIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLS0gICAg bGx2bTo6SW5zdHJ1Y3Rpb24gKlNlbGVjdEluc3QobGx2bTo6VmFsdWUgKnRlc3QsIGxsdm06OlZh bHVlICp2YWwwLCBsbHZtOjpWYWx1ZSAqdmFsMSwgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwpOwot KyAgICBsbHZtOjpQSElOb2RlICpQaGlOb2RlKGxsdm06OlR5cGUgKnR5cGUsIGludCBjb3VudCwg Y29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0rICAgIGxsdm06Okluc3RydWN0aW9uICpT ZWxlY3RJbnN0KGxsdm06OlZhbHVlICp0ZXN0LCBsbHZtOjpWYWx1ZSAqdmFsMCwgbGx2bTo6VmFs dWUgKnZhbDEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxsdm06 OlR3aW5lICZuYW1lID0gIiIpOwotIAotICAgICAvKiogRW1pdHMgSVIgdG8gZG8gYSBmdW5jdGlv biBjYWxsIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cy4gIElmIHRoZQotICAgICAgICAgZnVuY3Rp b24gdHlwZSBpcyBhIHZhcnlpbmcgZnVuY3Rpb24gcG9pbnRlciB0eXBlLCBpdHMgZnVsbCB0eXBl Ci0gICAgICAgICBtdXN0IGJlIHByb3ZpZGVkIGluIGZ1bmNUeXBlLiAgZnVuY1R5cGUgY2FuIGJl IE5VTEwgaWYgZnVuYyBpcyBhCi0gICAgICAgICB1bmlmb3JtIGZ1bmN0aW9uIHBvaW50ZXIuICov Ci0gICAgIGxsdm06OlZhbHVlICpDYWxsSW5zdChsbHZtOjpWYWx1ZSAqZnVuYywgY29uc3QgRnVu Y3Rpb25UeXBlICpmdW5jVHlwZSwgY29uc3Qgc3RkOjp2ZWN0b3I8bGx2bTo6VmFsdWUgKj4gJmFy Z3MsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7 Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIi KTsKLSAKLSAgICAgLyoqIFRoaXMgaXMgYSBjb252ZW5pZW5jZSBtZXRob2QgdGhhdCBpc3N1ZXMg YSBjYWxsIGluc3RydWN0aW9uIHRvIGEKLSAgICAgICAgIGZ1bmN0aW9uIHRoYXQgdGFrZXMganVz dCBhIHNpbmdsZSBhcmd1bWVudC4gKi8KLS0gICAgbGx2bTo6VmFsdWUgKkNhbGxJbnN0KGxsdm06 OlZhbHVlICpmdW5jLCBjb25zdCBGdW5jdGlvblR5cGUgKmZ1bmNUeXBlLCBsbHZtOjpWYWx1ZSAq YXJnLCBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0rICAgIGxsdm06OlZhbHVlICpDYWxsSW5z dChsbHZtOjpWYWx1ZSAqZnVuYywgY29uc3QgRnVuY3Rpb25UeXBlICpmdW5jVHlwZSwgbGx2bTo6 VmFsdWUgKmFyZywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxsdm06OlR3aW5l ICZuYW1lID0gIiIpOwotIAotICAgICAvKiogVGhpcyBpcyBhIGNvbnZlbmllbmNlIG1ldGhvZCB0 aGF0IGlzc3VlcyBhIGNhbGwgaW5zdHJ1Y3Rpb24gdG8gYQotICAgICAgICAgZnVuY3Rpb24gdGhh dCB0YWtlcyB0d28gYXJndW1lbnRzLiAqLwotICAgICBsbHZtOjpWYWx1ZSAqQ2FsbEluc3QobGx2 bTo6VmFsdWUgKmZ1bmMsIGNvbnN0IEZ1bmN0aW9uVHlwZSAqZnVuY1R5cGUsIGxsdm06OlZhbHVl ICphcmcwLCBsbHZtOjpWYWx1ZSAqYXJnMSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotIAotICAgICAvKiogTGF1bmNoIGFuIGFzeW5jaHJv bm91cyB0YXNrIHRvIHJ1biB0aGUgZ2l2ZW4gZnVuY3Rpb24sIHBhc3NpbmcgaXQKLSAgICAgICAg IGhlIGdpdmVuIGFyZ3VtZW50IHZhbHVlcy4gKi8KLUBAIC03NTYsOSArNzU5LDEwIEBAIGNsYXNz IEZ1bmN0aW9uRW1pdENvbnRleHQgewotICAgICB2b2lkIG1hc2tlZFN0b3JlKGxsdm06OlZhbHVl ICp2YWx1ZSwgbGx2bTo6VmFsdWUgKnB0ciwgY29uc3QgVHlwZSAqcHRyVHlwZSwgbGx2bTo6VmFs dWUgKm1hc2spOwotICAgICB2b2lkIHN0b3JlVW5pZm9ybVRvU09BKGxsdm06OlZhbHVlICp2YWx1 ZSwgbGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6VmFsdWUgKm1hc2ssIGNvbnN0IFR5cGUgKnZhbHVl VHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQb2ludGVyVHlwZSAqcHRy VHlwZSk7Ci0tICAgIGxsdm06OlZhbHVlICpsb2FkVW5pZm9ybUZyb21TT0EobGx2bTo6VmFsdWUg KnB0ciwgbGx2bTo6VmFsdWUgKm1hc2ssIGNvbnN0IFBvaW50ZXJUeXBlICpwdHJUeXBlLCBjb25z dCBjaGFyICpuYW1lKTsKLSsgICAgbGx2bTo6VmFsdWUgKmxvYWRVbmlmb3JtRnJvbVNPQShsbHZt OjpWYWx1ZSAqcHRyLCBsbHZtOjpWYWx1ZSAqbWFzaywgY29uc3QgUG9pbnRlclR5cGUgKnB0clR5 cGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGx2bTo6VHdp bmUgJm5hbWUgPSAiIik7Ci0gCi0tICAgIGxsdm06OlZhbHVlICpnYXRoZXIobGx2bTo6VmFsdWUg KnB0ciwgY29uc3QgUG9pbnRlclR5cGUgKnB0clR5cGUsIGxsdm06OlZhbHVlICptYXNrLCBjb25z dCBjaGFyICpuYW1lKTsKLSsgICAgbGx2bTo6VmFsdWUgKmdhdGhlcihsbHZtOjpWYWx1ZSAqcHRy LCBjb25zdCBQb2ludGVyVHlwZSAqcHRyVHlwZSwgbGx2bTo6VmFsdWUgKm1hc2ssIGNvbnN0IGxs dm06OlR3aW5lICZuYW1lID0gIiIpOwotIAotICAgICBsbHZtOjpWYWx1ZSAqYWRkVmFyeWluZ09m ZnNldHNJZk5lZWRlZChsbHZtOjpWYWx1ZSAqcHRyLCBjb25zdCBUeXBlICpwdHJUeXBlKTsKLSB9 OwotZGlmZiAtLWdpdCBhL3NyYy9leHByLmNwcCBiL3NyYy9leHByLmNwcAotaW5kZXggODBjYzMw MjBhLi42ZDM4ZDE4ODkgMTAwNjQ0Ci0tLS0gYS9zcmMvZXhwci5jcHAKLSsrKyBiL3NyYy9leHBy LmNwcAotQEAgLTEwMjEsMTEgKzEwMjEsMTEgQEAgc3RhdGljIGxsdm06OlZhbHVlICpsRW1pdE5l Z2F0ZShFeHByICphcmcsIFNvdXJjZVBvcyBwb3MsIEZ1bmN0aW9uRW1pdENvbnRleHQgKmMKLSAg ICAgY3R4LT5TZXREZWJ1Z1Bvcyhwb3MpOwotICAgICBpZiAodHlwZS0+SXNGbG9hdFR5cGUoKSkg ewotICAgICAgICAgbGx2bTo6VmFsdWUgKnplcm8gPSBsbHZtOjpDb25zdGFudEZQOjpnZXRaZXJv VmFsdWVGb3JOZWdhdGlvbih0eXBlLT5MTFZNVHlwZShnLT5jdHgpKTsKLS0gICAgICAgIHJldHVy biBjdHgtPkJpbmFyeU9wZXJhdG9yKGxsdm06Okluc3RydWN0aW9uOjpGU3ViLCB6ZXJvLCBhcmdW YWwsIExMVk1HZXROYW1lKGFyZ1ZhbCwgIl9uZWdhdGUiKSk7Ci0rICAgICAgICByZXR1cm4gY3R4 LT5CaW5hcnlPcGVyYXRvcihsbHZtOjpJbnN0cnVjdGlvbjo6RlN1YiwgemVybywgYXJnVmFsLCBs bHZtOjpUd2luZShhcmdWYWwtPmdldE5hbWUoKSkgKyAiX25lZ2F0ZSIpOwotICAgICB9IGVsc2Ug ewotICAgICAgICAgbGx2bTo6VmFsdWUgKnplcm8gPSBsTExWTUNvbnN0YW50VmFsdWUodHlwZSwg Zy0+Y3R4LCAwLik7Ci0gICAgICAgICBBc3NlcnRQb3MocG9zLCB0eXBlLT5Jc0ludFR5cGUoKSk7 Ci0tICAgICAgICByZXR1cm4gY3R4LT5CaW5hcnlPcGVyYXRvcihsbHZtOjpJbnN0cnVjdGlvbjo6 U3ViLCB6ZXJvLCBhcmdWYWwsIExMVk1HZXROYW1lKGFyZ1ZhbCwgIl9uZWdhdGUiKSk7Ci0rICAg ICAgICByZXR1cm4gY3R4LT5CaW5hcnlPcGVyYXRvcihsbHZtOjpJbnN0cnVjdGlvbjo6U3ViLCB6 ZXJvLCBhcmdWYWwsIGxsdm06OlR3aW5lKGFyZ1ZhbC0+Z2V0TmFtZSgpKSArICJfbmVnYXRlIik7 Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMTA0NywxMSArMTA0NywxMSBAQCBsbHZtOjpWYWx1ZSAqVW5h cnlFeHByOjpHZXRWYWx1ZShGdW5jdGlvbkVtaXRDb250ZXh0ICpjdHgpIGNvbnN0IHsKLSAgICAg ICAgIHJldHVybiBsRW1pdE5lZ2F0ZShleHByLCBwb3MsIGN0eCk7Ci0gICAgIGNhc2UgTG9naWNh bE5vdDogewotICAgICAgICAgbGx2bTo6VmFsdWUgKmFyZ1ZhbCA9IGV4cHItPkdldFZhbHVlKGN0 eCk7Ci0tICAgICAgICByZXR1cm4gY3R4LT5Ob3RPcGVyYXRvcihhcmdWYWwsIExMVk1HZXROYW1l KGFyZ1ZhbCwgIl9sb2dpY2Fsbm90IikpOwotKyAgICAgICAgcmV0dXJuIGN0eC0+Tm90T3BlcmF0 b3IoYXJnVmFsLCBsbHZtOjpUd2luZShhcmdWYWwtPmdldE5hbWUoKSkgKyAiX2xvZ2ljYWxub3Qi KTsKLSAgICAgfQotICAgICBjYXNlIEJpdE5vdDogewotICAgICAgICAgbGx2bTo6VmFsdWUgKmFy Z1ZhbCA9IGV4cHItPkdldFZhbHVlKGN0eCk7Ci0tICAgICAgICByZXR1cm4gY3R4LT5Ob3RPcGVy YXRvcihhcmdWYWwsIExMVk1HZXROYW1lKGFyZ1ZhbCwgIl9iaXRub3QiKSk7Ci0rICAgICAgICBy ZXR1cm4gY3R4LT5Ob3RPcGVyYXRvcihhcmdWYWwsIGxsdm06OlR3aW5lKGFyZ1ZhbC0+Z2V0TmFt ZSgpKSArICJfYml0bm90Iik7Ci0gICAgIH0KLSAgICAgZGVmYXVsdDoKLSAgICAgICAgIEZBVEFM KCJsb2dpYyBlcnJvciIpOwotQEAgLTE1MTgsNyArMTUxOCw4IEBAIHN0YXRpYyBsbHZtOjpWYWx1 ZSAqbEVtaXRCaW5hcnlBcml0aChCaW5hcnlFeHByOjpPcCBvcCwgbGx2bTo6VmFsdWUgKnZhbHVl MCwgbGx2Ci0gICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICB9Ci0gCi0tICAgICAg ICByZXR1cm4gY3R4LT5CaW5hcnlPcGVyYXRvcihpbnN0LCB2YWx1ZTAsIHZhbHVlMSwgTExWTUdl dE5hbWUob3BOYW1lLCB2YWx1ZTAsIHZhbHVlMSkpOwotKyAgICAgICAgcmV0dXJuIGN0eC0+Qmlu YXJ5T3BlcmF0b3IoaW5zdCwgdmFsdWUwLCB2YWx1ZTEsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoKChsbHZtOjpUd2luZShvcE5hbWUpICsgIl8iKSArIHZhbHVlMC0+Z2V0 TmFtZSgpKSArICJfIikgKyB2YWx1ZTEtPmdldE5hbWUoKSk7Ci0gICAgIH0KLSB9Ci0gCi1AQCAt MTU2Myw3ICsxNTY0LDcgQEAgc3RhdGljIGxsdm06OlZhbHVlICpsRW1pdEJpbmFyeUNtcChCaW5h cnlFeHByOjpPcCBvcCwgbGx2bTo6VmFsdWUgKmUwVmFsLCBsbHZtOjoKLSAgICAgfQotIAotICAg ICBsbHZtOjpWYWx1ZSAqY21wID0gY3R4LT5DbXBJbnN0KGlzRmxvYXRPcCA/IGxsdm06Okluc3Ry dWN0aW9uOjpGQ21wIDogbGx2bTo6SW5zdHJ1Y3Rpb246OklDbXAsIHByZWQsIGUwVmFsLCBlMVZh bCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZNR2V0TmFtZShvcE5h bWUsIGUwVmFsLCBlMVZhbCkpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICgoKGxsdm06OlR3aW5lKG9wTmFtZSkgKyAiXyIpICsgZTBWYWwtPmdldE5hbWUoKSkgKyAiXyIp ICsgZTFWYWwtPmdldE5hbWUoKSk7Ci0gICAgIC8vIFRoaXMgaXMgYSBsaXR0bGUgdWdseTogQ21w SW5zdCByZXR1cm5zIGkxIHZhbHVlcywgYnV0IHdlIHVzZSB2ZWN0b3JzCi0gICAgIC8vIG9mIGkz MnMgZm9yIHZhcnlpbmcgYm9vbCB2YWx1ZXM7IHR5cGUgY29udmVydCB0aGUgcmVzdWx0IGhlcmUg aWYKLSAgICAgLy8gbmVlZGVkLgotQEAgLTQxNzcsNyArNDE3OCw3IEBAIHN0YXRpYyBsbHZtOjpW YWx1ZSAqbENvbnZlcnRUb1NsaWNlUG9pbnRlcihGdW5jdGlvbkVtaXRDb250ZXh0ICpjdHgsIGxs dm06OlZhbHVlCi0gICAgIC8vIG9mZnNldHMKLSAgICAgbGx2bTo6VmFsdWUgKnJlc3VsdCA9IGxs dm06OkNvbnN0YW50OjpnZXROdWxsVmFsdWUoc2xpY2VTdHJ1Y3RUeXBlKTsKLSAgICAgLy8gQW5k IHJlcGxhY2UgdGhlIHBvaW50ZXIgaW4gdGhlIHN0cnVjdCB3aXRoIHRoZSBnaXZlbiBwb2ludGVy Ci0tICAgIHJldHVybiBjdHgtPkluc2VydEluc3QocmVzdWx0LCBwdHIsIDAsIExMVk1HZXROYW1l KHB0ciwgIl9zbGljZSIpKTsKLSsgICAgcmV0dXJuIGN0eC0+SW5zZXJ0SW5zdChyZXN1bHQsIHB0 ciwgMCwgbGx2bTo6VHdpbmUocHRyLT5nZXROYW1lKCkpICsgIl9zbGljZSIpOwotIH0KLSAKLSAv KiogSWYgdGhlIGdpdmVuIGFycmF5IGluZGV4IGlzIGEgY29tcGlsZSB0aW1lIGNvbnN0YW50LCBj aGVjayB0byBzZWUgaWYgaXQKLUBAIC00MjU4LDggKzQyNTksOCBAQCBsbHZtOjpWYWx1ZSAqSW5k ZXhFeHByOjpHZXRMVmFsdWUoRnVuY3Rpb25FbWl0Q29udGV4dCAqY3R4KSBjb25zdCB7Ci0gICAg ICAgICAvLyBDb252ZXJ0IHRvIGEgc2xpY2UgcG9pbnRlciBpZiB3ZSdyZSBpbmRleGluZyBpbnRv IFNPQSBkYXRhCi0gICAgICAgICBiYXNlUHRyVmFsdWUgPSBsQ29udmVydFB0clRvU2xpY2VJZk5l ZWRlZChjdHgsIGJhc2VQdHJWYWx1ZSwgJmJhc2VFeHByVHlwZSk7Ci0gCi0tICAgICAgICBsbHZt OjpWYWx1ZSAqcHRyID0KLS0gICAgICAgICAgICBjdHgtPkdldEVsZW1lbnRQdHJJbnN0KGJhc2VQ dHJWYWx1ZSwgaW5kZXhWYWx1ZSwgYmFzZUV4cHJUeXBlLCBMTFZNR2V0TmFtZShiYXNlUHRyVmFs dWUsICJfb2Zmc2V0IikpOwotKyAgICAgICAgbGx2bTo6VmFsdWUgKnB0ciA9IGN0eC0+R2V0RWxl bWVudFB0ckluc3QoYmFzZVB0clZhbHVlLCBpbmRleFZhbHVlLCBiYXNlRXhwclR5cGUsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpUd2lu ZShiYXNlUHRyVmFsdWUtPmdldE5hbWUoKSkgKyAiX29mZnNldCIpOwotICAgICAgICAgcmV0dXJu IGxBZGRWYXJ5aW5nT2Zmc2V0c0lmTmVlZGVkKGN0eCwgcHRyLCBHZXRMVmFsdWVUeXBlKCkpOwot ICAgICB9Ci0gCi1AQCAtNDI5MCw4ICs0MjkxLDggQEAgbGx2bTo6VmFsdWUgKkluZGV4RXhwcjo6 R2V0TFZhbHVlKEZ1bmN0aW9uRW1pdENvbnRleHQgKmN0eCkgY29uc3QgewotICAgICBjdHgtPlNl dERlYnVnUG9zKHBvcyk7Ci0gCi0gICAgIC8vIEFuZCBkbyB0aGUgYWN0dWFsIGluZGV4aW5nIGNh bGN1bGF0aW9uLi4KLS0gICAgbGx2bTo6VmFsdWUgKnB0ciA9Ci0tICAgICAgICBjdHgtPkdldEVs ZW1lbnRQdHJJbnN0KGJhc2VQdHIsIExMVk1JbnQzMigwKSwgaW5kZXhWYWx1ZSwgYmFzZVB0clR5 cGUsIExMVk1HZXROYW1lKGJhc2VQdHIsICJfb2Zmc2V0IikpOwotKyAgICBsbHZtOjpWYWx1ZSAq cHRyID0gY3R4LT5HZXRFbGVtZW50UHRySW5zdChiYXNlUHRyLCBMTFZNSW50MzIoMCksIGluZGV4 VmFsdWUsIGJhc2VQdHJUeXBlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBsbHZtOjpUd2luZShiYXNlUHRyLT5nZXROYW1lKCkpICsgIl9vZmZzZXQiKTsK LSAgICAgcmV0dXJuIGxBZGRWYXJ5aW5nT2Zmc2V0c0lmTmVlZGVkKGN0eCwgcHRyLCBHZXRMVmFs dWVUeXBlKCkpOwotIH0KLSAKLUBAIC00Nzg4LDE1ICs0Nzg5LDE0IEBAIGxsdm06OlZhbHVlICpW ZWN0b3JNZW1iZXJFeHByOjpHZXRWYWx1ZShGdW5jdGlvbkVtaXRDb250ZXh0ICpjdHgpIGNvbnN0 IHsKLSAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaWRlbnRpZmllci5zaXplKCk7ICsr aSkgewotICAgICAgICAgICAgIGNoYXIgaWRTdHJbMl0gPSB7aWRlbnRpZmllcltpXSwgJ1wwJ307 Ci0gICAgICAgICAgICAgbGx2bTo6VmFsdWUgKmVsZW1lbnRQdHIgPQotLSAgICAgICAgICAgICAg ICBjdHgtPkFkZEVsZW1lbnRPZmZzZXQoYmFzZVB0ciwgaW5kaWNlc1tpXSwgYmFzZVB0clR5cGUs IExMVk1HZXROYW1lKGJhc2VQdHIsIGlkU3RyKSk7Ci0rICAgICAgICAgICAgICAgIGN0eC0+QWRk RWxlbWVudE9mZnNldChiYXNlUHRyLCBpbmRpY2VzW2ldLCBiYXNlUHRyVHlwZSwgbGx2bTo6VHdp bmUoYmFzZVB0ci0+Z2V0TmFtZSgpKSArIGlkU3RyKTsKLSAgICAgICAgICAgICBsbHZtOjpWYWx1 ZSAqZWxlbWVudFZhbHVlID0gY3R4LT5Mb2FkSW5zdChlbGVtZW50UHRyLCBlbGVtZW50TWFzaywg ZWxlbWVudFB0clR5cGUpOwotIAotLSAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlc3VsdE5hbWUg PSBMTFZNR2V0TmFtZShyZXN1bHRQdHIsIGlkU3RyKTsKLS0gICAgICAgICAgICBsbHZtOjpWYWx1 ZSAqcHRtcCA9IGN0eC0+QWRkRWxlbWVudE9mZnNldChyZXN1bHRQdHIsIGksIE5VTEwsIHJlc3Vs dE5hbWUpOwotKyAgICAgICAgICAgIGxsdm06OlZhbHVlICpwdG1wID0gY3R4LT5BZGRFbGVtZW50 T2Zmc2V0KHJlc3VsdFB0ciwgaSwgTlVMTCwgbGx2bTo6VHdpbmUocmVzdWx0UHRyLT5nZXROYW1l KCkpICsgaWRTdHIpOwotICAgICAgICAgICAgIGN0eC0+U3RvcmVJbnN0KGVsZW1lbnRWYWx1ZSwg cHRtcCwgZWxlbWVudFB0clR5cGUsIGV4cHItPkdldFR5cGUoKS0+SXNVbmlmb3JtVHlwZSgpKTsK LSAgICAgICAgIH0KLSAKLS0gICAgICAgIHJldHVybiBjdHgtPkxvYWRJbnN0KHJlc3VsdFB0ciwg bWVtYmVyVHlwZSwgTExWTUdldE5hbWUoYmFzZVB0ciwgIl9zd2l6emxlIikpOwotKyAgICAgICAg cmV0dXJuIGN0eC0+TG9hZEluc3QocmVzdWx0UHRyLCBtZW1iZXJUeXBlLCBsbHZtOjpUd2luZShi YXNlUHRyLT5nZXROYW1lKCkpICsgIl9zd2l6emxlIik7Ci0gICAgIH0KLSB9Ci0gCi1AQCAtNDkz Miw3ICs0OTMyLDcgQEAgbGx2bTo6VmFsdWUgKk1lbWJlckV4cHI6OkdldFZhbHVlKEZ1bmN0aW9u RW1pdENvbnRleHQgKmN0eCkgY29uc3QgewotIAotICAgICBjdHgtPlNldERlYnVnUG9zKHBvcyk7 Ci0gICAgIHN0ZDo6c3RyaW5nIHN1ZmZpeCA9IHN0ZDo6c3RyaW5nKCJfIikgKyBpZGVudGlmaWVy OwotLSAgICByZXR1cm4gY3R4LT5Mb2FkSW5zdChsdmFsdWUsIG1hc2ssIGx2YWx1ZVR5cGUsIExM Vk1HZXROYW1lKGx2YWx1ZSwgc3VmZml4LmNfc3RyKCkpKTsKLSsgICAgcmV0dXJuIGN0eC0+TG9h ZEluc3QobHZhbHVlLCBtYXNrLCBsdmFsdWVUeXBlLCBsbHZtOjpUd2luZShsdmFsdWUtPmdldE5h bWUoKSkgKyBzdWZmaXgpOwotIH0KLSAKLSBjb25zdCBUeXBlICpNZW1iZXJFeHByOjpHZXRUeXBl KCkgY29uc3QgeyByZXR1cm4gTlVMTDsgfQotQEAgLTY1MDIsNyArNjUwMiw3IEBAIHN0YXRpYyBs bHZtOjpWYWx1ZSAqbFR5cGVDb252QXRvbWljKEZ1bmN0aW9uRW1pdENvbnRleHQgKmN0eCwgbGx2 bTo6VmFsdWUgKmV4cHJWCi0gICAgICAgICAgICAgICAgIC8vIGRvZXMgZm9yIGV2ZXJ5b25lIGVs c2UuLi4KLSAgICAgICAgICAgICAgICAgQXNzZXJ0KGNhc3QpOwotICAgICAgICAgICAgICAgICBj YXN0ID0gY3R4LT5Td2l0Y2hCb29sU2l6ZShjYXN0LCBMTFZNVHlwZXM6OkJvb2xWZWN0b3JUeXBl LT5nZXRFbGVtZW50VHlwZSgpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMTFZNR2V0TmFtZShjYXN0LCAidG9faV9ib29sIikpOwotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpUd2luZShjYXN0LT5nZXROYW1lKCkp ICsgInRvX2lfYm9vbCIpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgIH0gZWxzZSB7Ci0gICAg ICAgICAgICAgLy8gZnJvbVR5cGUtPklzVmFyeWluZ1R5cGUoKSkKLUBAIC04MjQ2LDcgKzgyNDYs NyBAQCBsbHZtOjpWYWx1ZSAqTmV3RXhwcjo6R2V0VmFsdWUoRnVuY3Rpb25FbWl0Q29udGV4dCAq Y3R4KSBjb25zdCB7Ci0gICAgICAgICAvLyBwb2ludGVyIG9mIHRoZSByZXR1cm4gdHlwZSBhbmQg dG8gcnVuIHRoZSBjb2RlIGZvciBpbml0aWFsaXplcnMsCi0gICAgICAgICAvLyBpZiBwcmVzZW50 LgotICAgICAgICAgbGx2bTo6VHlwZSAqcHRyVHlwZSA9IHJldFR5cGUtPkxMVk1UeXBlKGctPmN0 eCk7Ci0tICAgICAgICBwdHJWYWx1ZSA9IGN0eC0+Qml0Q2FzdEluc3QocHRyVmFsdWUsIHB0clR5 cGUsIExMVk1HZXROYW1lKHB0clZhbHVlLCAiX2Nhc3RfcHRyIikpOwotKyAgICAgICAgcHRyVmFs dWUgPSBjdHgtPkJpdENhc3RJbnN0KHB0clZhbHVlLCBwdHJUeXBlLCBsbHZtOjpUd2luZShwdHJW YWx1ZS0+Z2V0TmFtZSgpKSArICJfY2FzdF9wdHIiKTsKLSAKLSAgICAgICAgIGlmIChpbml0RXhw ciAhPSBOVUxMKQotICAgICAgICAgICAgIEluaXRTeW1ib2wocHRyVmFsdWUsIGFsbG9jVHlwZSwg aW5pdEV4cHIsIGN0eCwgcG9zKTsKLWRpZmYgLS1naXQgYS9zcmMvbGx2bXV0aWwuY3BwIGIvc3Jj L2xsdm11dGlsLmNwcAotaW5kZXggOTcwMTc1ZGJmLi5kMGJlY2I5ZjUgMTAwNjQ0Ci0tLS0gYS9z cmMvbGx2bXV0aWwuY3BwCi0rKysgYi9zcmMvbGx2bXV0aWwuY3BwCi1AQCAtMTYwNSwyMyArMTYw NSw2IEBAIGxsdm06OlZhbHVlICpMTFZNU2h1ZmZsZVZlY3RvcnMobGx2bTo6VmFsdWUgKnYxLCBs bHZtOjpWYWx1ZSAqdjIsIGludDMyX3Qgc2h1ZltdCi0gICAgIHJldHVybiBuZXcgbGx2bTo6U2h1 ZmZsZVZlY3Rvckluc3QodjEsIHYyLCB2ZWMsICJzaHVmZmxlIiwgaW5zZXJ0QmVmb3JlKTsKLSB9 Ci0gCi0tY29uc3QgY2hhciAqTExWTUdldE5hbWUobGx2bTo6VmFsdWUgKnYsIGNvbnN0IGNoYXIg KnMpIHsKLS0gICAgaWYgKHYgPT0gTlVMTCkKLS0gICAgICAgIHJldHVybiBzOwotLSAgICBzdGQ6 OnN0cmluZyByZXQgPSBzdGQ6OnN0cmluZyh2LT5nZXROYW1lKCkpOwotLSAgICByZXQgKz0gczsK LS0gICAgcmV0dXJuIHN0cmR1cChyZXQuY19zdHIoKSk7Ci0tfQotLQotLWNvbnN0IGNoYXIgKkxM Vk1HZXROYW1lKGNvbnN0IGNoYXIgKm9wLCBsbHZtOjpWYWx1ZSAqdjEsIGxsdm06OlZhbHVlICp2 MikgewotLSAgICBzdGQ6OnN0cmluZyByID0gb3A7Ci0tICAgIHIgKz0gIl8iOwotLSAgICByICs9 IHYxLT5nZXROYW1lKCkuc3RyKCk7Ci0tICAgIHIgKz0gIl8iOwotLSAgICByICs9IHYyLT5nZXRO YW1lKCkuc3RyKCk7Ci0tICAgIHJldHVybiBzdHJkdXAoci5jX3N0cigpKTsKLS19Ci0tCi0gI2lm ZGVmIElTUENfR0VOWF9FTkFCTEVECi0gYm9vbCBsSXNTVk1Mb2FkKGxsdm06Okluc3RydWN0aW9u ICppbnN0KSB7Ci0gICAgIEFzc2VydChpbnN0KTsKLWRpZmYgLS1naXQgYS9zcmMvbGx2bXV0aWwu aCBiL3NyYy9sbHZtdXRpbC5oCi1pbmRleCA0MmNjZTRkODMuLjA3ZDA4OWJiNCAxMDA2NDQKLS0t LSBhL3NyYy9sbHZtdXRpbC5oCi0rKysgYi9zcmMvbGx2bXV0aWwuaAotQEAgLTMyOCwxMSArMzI4 LDYgQEAgZXh0ZXJuIGxsdm06OlZhbHVlICpMTFZNQ29uY2F0VmVjdG9ycyhsbHZtOjpWYWx1ZSAq djEsIGxsdm06OlZhbHVlICp2MiwgbGx2bTo6SW4KLSBleHRlcm4gbGx2bTo6VmFsdWUgKkxMVk1T aHVmZmxlVmVjdG9ycyhsbHZtOjpWYWx1ZSAqdjEsIGxsdm06OlZhbHVlICp2MiwgaW50MzJfdCBz aHVmW10sIGludCBzaHVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zZXJ0QmVmb3JlKTsKLSAKLS0vKiogVXRpbGl0eSBy b3V0aW5lcyB0byBjb25jYXQgc3RyaW5ncyB3aXRoIHRoZSBuYW1lcyBvZiBleGlzdGluZyB2YWx1 ZXMgdG8KLS0gICAgY3JlYXRlIG1lYW5pbmdmdWwgbmV3IG5hbWVzIGZvciBpbnN0cnVjdGlvbiB2 YWx1ZXMuCi0tKi8KLS1leHRlcm4gY29uc3QgY2hhciAqTExWTUdldE5hbWUobGx2bTo6VmFsdWUg KnYsIGNvbnN0IGNoYXIgKik7Ci0tZXh0ZXJuIGNvbnN0IGNoYXIgKkxMVk1HZXROYW1lKGNvbnN0 IGNoYXIgKm9wLCBsbHZtOjpWYWx1ZSAqdjEsIGxsdm06OlZhbHVlICp2Mik7Ci0gI2lmZGVmIElT UENfR0VOWF9FTkFCTEVECi0gZW51bSBBZGRyZXNzU3BhY2UgeyBMb2NhbCwgR2xvYmFsLCBFeHRl cm5hbCB9OwotIAotZGlmZiAtLWdpdCBhL3NyYy9vcHQuY3BwIGIvc3JjL29wdC5jcHAKLWluZGV4 IDViMWFjN2I2My4uOWQ2Y2FlMDU4IDEwMDY0NAotLS0tIGEvc3JjL29wdC5jcHAKLSsrKyBiL3Ny Yy9vcHQuY3BwCi1AQCAtMjU3LDcgKzI1Nyw3IEBAIHN0YXRpYyBib29sIGxHZXRTb3VyY2VQb3NG cm9tTWV0YWRhdGEoY29uc3QgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QsIFNvdXJjZVBvcyAqCi0g ICAgIHJldHVybiB0cnVlOwotIH0KLSAKLS1zdGF0aWMgbGx2bTo6SW5zdHJ1Y3Rpb24gKmxDYWxs SW5zdChsbHZtOjpGdW5jdGlvbiAqZnVuYywgbGx2bTo6VmFsdWUgKmFyZzAsIGxsdm06OlZhbHVl ICphcmcxLCBjb25zdCBjaGFyICpuYW1lLAotK3N0YXRpYyBsbHZtOjpJbnN0cnVjdGlvbiAqbENh bGxJbnN0KGxsdm06OkZ1bmN0aW9uICpmdW5jLCBsbHZtOjpWYWx1ZSAqYXJnMCwgbGx2bTo6VmFs dWUgKmFyZzEsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGxsdm06Okluc3RydWN0aW9uICppbnNlcnRCZWZvcmUgPSBOVUxMKSB7 Ci0gICAgIGxsdm06OlZhbHVlICphcmdzWzJdID0ge2FyZzAsIGFyZzF9OwotICAgICBsbHZtOjpB cnJheVJlZjxsbHZtOjpWYWx1ZSAqPiBuZXdBcmdBcnJheSgmYXJnc1swXSwgJmFyZ3NbMl0pOwot QEAgLTI2NSwyMSArMjY1LDIyIEBAIHN0YXRpYyBsbHZtOjpJbnN0cnVjdGlvbiAqbENhbGxJbnN0 KGxsdm06OkZ1bmN0aW9uICpmdW5jLCBsbHZtOjpWYWx1ZSAqYXJnMCwgbGx2Ci0gfQotIAotIHN0 YXRpYyBsbHZtOjpJbnN0cnVjdGlvbiAqbENhbGxJbnN0KGxsdm06OkZ1bmN0aW9uICpmdW5jLCBs bHZtOjpWYWx1ZSAqYXJnMCwgbGx2bTo6VmFsdWUgKmFyZzEsIGxsdm06OlZhbHVlICphcmcyLAot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGxs dm06Okluc3RydWN0aW9uICppbnNlcnRCZWZvcmUgPSBOVUxMKSB7Ci0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUsIGxsdm06Okluc3Ry dWN0aW9uICppbnNlcnRCZWZvcmUgPSBOVUxMKSB7Ci0gICAgIGxsdm06OlZhbHVlICphcmdzWzNd ID0ge2FyZzAsIGFyZzEsIGFyZzJ9OwotICAgICBsbHZtOjpBcnJheVJlZjxsbHZtOjpWYWx1ZSAq PiBuZXdBcmdBcnJheSgmYXJnc1swXSwgJmFyZ3NbM10pOwotICAgICByZXR1cm4gbGx2bTo6Q2Fs bEluc3Q6OkNyZWF0ZShmdW5jLCBuZXdBcmdBcnJheSwgbmFtZSwgaW5zZXJ0QmVmb3JlKTsKLSB9 Ci0gCi0gc3RhdGljIGxsdm06Okluc3RydWN0aW9uICpsQ2FsbEluc3QobGx2bTo6RnVuY3Rpb24g KmZ1bmMsIGxsdm06OlZhbHVlICphcmcwLCBsbHZtOjpWYWx1ZSAqYXJnMSwgbGx2bTo6VmFsdWUg KmFyZzIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6VmFsdWUg KmFyZzMsIGNvbnN0IGNoYXIgKm5hbWUsIGxsdm06Okluc3RydWN0aW9uICppbnNlcnRCZWZvcmUg PSBOVUxMKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6VmFs dWUgKmFyZzMsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGxsdm06Okluc3RydWN0aW9uICppbnNlcnRCZWZvcmUgPSBOVUxMKSB7 Ci0gICAgIGxsdm06OlZhbHVlICphcmdzWzRdID0ge2FyZzAsIGFyZzEsIGFyZzIsIGFyZzN9Owot ICAgICBsbHZtOjpBcnJheVJlZjxsbHZtOjpWYWx1ZSAqPiBuZXdBcmdBcnJheSgmYXJnc1swXSwg JmFyZ3NbNF0pOwotICAgICByZXR1cm4gbGx2bTo6Q2FsbEluc3Q6OkNyZWF0ZShmdW5jLCBuZXdB cmdBcnJheSwgbmFtZSwgaW5zZXJ0QmVmb3JlKTsKLSB9Ci0gCi0gc3RhdGljIGxsdm06Okluc3Ry dWN0aW9uICpsQ2FsbEluc3QobGx2bTo6RnVuY3Rpb24gKmZ1bmMsIGxsdm06OlZhbHVlICphcmcw LCBsbHZtOjpWYWx1ZSAqYXJnMSwgbGx2bTo6VmFsdWUgKmFyZzIsCi0tICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbGx2bTo6VmFsdWUgKmFyZzMsIGxsdm06OlZhbHVlICphcmc0 LCBjb25zdCBjaGFyICpuYW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGxsdm06OlZhbHVlICphcmczLCBsbHZtOjpWYWx1ZSAqYXJnNCwgY29uc3QgbGx2bTo6VHdpbmUg Jm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6SW5zdHJ1 Y3Rpb24gKmluc2VydEJlZm9yZSA9IE5VTEwpIHsKLSAgICAgbGx2bTo6VmFsdWUgKmFyZ3NbNV0g PSB7YXJnMCwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNH07Ci0gICAgIGxsdm06OkFycmF5UmVmPGxs dm06OlZhbHVlICo+IG5ld0FyZ0FycmF5KCZhcmdzWzBdLCAmYXJnc1s1XSk7Ci1AQCAtMjg3LDcg KzI4OCw3IEBAIHN0YXRpYyBsbHZtOjpJbnN0cnVjdGlvbiAqbENhbGxJbnN0KGxsdm06OkZ1bmN0 aW9uICpmdW5jLCBsbHZtOjpWYWx1ZSAqYXJnMCwgbGx2Ci0gfQotIAotIHN0YXRpYyBsbHZtOjpJ bnN0cnVjdGlvbiAqbENhbGxJbnN0KGxsdm06OkZ1bmN0aW9uICpmdW5jLCBsbHZtOjpWYWx1ZSAq YXJnMCwgbGx2bTo6VmFsdWUgKmFyZzEsIGxsdm06OlZhbHVlICphcmcyLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OlZhbHVlICphcmczLCBsbHZtOjpWYWx1ZSAq YXJnNCwgbGx2bTo6VmFsdWUgKmFyZzUsIGNvbnN0IGNoYXIgKm5hbWUsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6VmFsdWUgKmFyZzMsIGxsdm06OlZhbHVlICph cmc0LCBsbHZtOjpWYWx1ZSAqYXJnNSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc2VydEJl Zm9yZSA9IE5VTEwpIHsKLSAgICAgbGx2bTo6VmFsdWUgKmFyZ3NbNl0gPSB7YXJnMCwgYXJnMSwg YXJnMiwgYXJnMywgYXJnNCwgYXJnNX07Ci0gICAgIGxsdm06OkFycmF5UmVmPGxsdm06OlZhbHVl ICo+IG5ld0FyZ0FycmF5KCZhcmdzWzBdLCAmYXJnc1s2XSk7Ci1AQCAtOTkxLDIzICs5OTIsMjQg QEAgYm9vbCBJbnRyaW5zaWNzT3B0OjpydW5PbkJhc2ljQmxvY2sobGx2bTo6QmFzaWNCbG9jayAm YmIpIHsKLSAgICAgICAgICAgICAgICAgbGx2bTo6VHlwZSAqcmV0dXJuVHlwZSA9IGNhbGxJbnN0 LT5nZXRUeXBlKCk7Ci0gICAgICAgICAgICAgICAgIEFzc2VydChsbHZtOjppc2E8bGx2bTo6VmVj dG9yVHlwZT4ocmV0dXJuVHlwZSkpOwotICAgICAgICAgICAgICAgICAvLyBjYXN0IHRoZSBpOCAq IHRvIHRoZSBhcHByb3ByaWF0ZSB0eXBlCi0tICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5h bWUgPSBMTFZNR2V0TmFtZShjYWxsSW5zdC0+Z2V0QXJnT3BlcmFuZCgwKSwgIl9jYXN0Iik7Ci0t ICAgICAgICAgICAgICAgIGxsdm06OlZhbHVlICpjYXN0UHRyID0gbmV3IGxsdm06OkJpdENhc3RJ bnN0KGNhbGxJbnN0LT5nZXRBcmdPcGVyYW5kKDApLAotLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpQb2ludGVyVHlwZTo6 Z2V0KHJldHVyblR5cGUsIDApLCBuYW1lLCBjYWxsSW5zdCk7Ci0rICAgICAgICAgICAgICAgIGxs dm06OlZhbHVlICpjYXN0UHRyID0KLSsgICAgICAgICAgICAgICAgICAgIG5ldyBsbHZtOjpCaXRD YXN0SW5zdChjYWxsSW5zdC0+Z2V0QXJnT3BlcmFuZCgwKSwgbGx2bTo6UG9pbnRlclR5cGU6Omdl dChyZXR1cm5UeXBlLCAwKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsbHZtOjpUd2luZShjYWxsSW5zdC0+Z2V0QXJnT3BlcmFuZCgwKS0+Z2V0TmFtZSgpKSAr ICJfY2FzdCIsIGNhbGxJbnN0KTsKLSAgICAgICAgICAgICAgICAgbENvcHlNZXRhZGF0YShjYXN0 UHRyLCBjYWxsSW5zdCk7Ci0gICAgICAgICAgICAgICAgIGludCBhbGlnbjsKLSAgICAgICAgICAg ICAgICAgaWYgKGctPm9wdC5mb3JjZUFsaWduZWRNZW1vcnkpCi0gICAgICAgICAgICAgICAgICAg ICBhbGlnbiA9IGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yQWxpZ25tZW50KCk7Ci0gICAgICAg ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgIGFsaWduID0gY2FsbEluc3QtPmdl dENhbGxlZEZ1bmN0aW9uKCkgPT0gYXZ4TWFza2VkTG9hZDMyID8gNCA6IDg7Ci0tICAgICAgICAg ICAgICAgIG5hbWUgPSBMTFZNR2V0TmFtZShjYWxsSW5zdC0+Z2V0QXJnT3BlcmFuZCgwKSwgIl9s b2FkIik7Ci0gI2lmIElTUENfTExWTV9WRVJTSU9OID09IElTUENfTExWTV8xMF8wCi0tICAgICAg ICAgICAgICAgIGxsdm06Okluc3RydWN0aW9uICpsb2FkSW5zdCA9IG5ldyBsbHZtOjpMb2FkSW5z dChjYXN0UHRyLCBuYW1lLCBmYWxzZSAvKiBub3Qgdm9sYXRpbGUgKi8sCi0tICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZt OjpNYXliZUFsaWduKGFsaWduKSwgKGxsdm06Okluc3RydWN0aW9uICopTlVMTCk7Ci0rICAgICAg ICAgICAgICAgIGxsdm06Okluc3RydWN0aW9uICpsb2FkSW5zdCA9Ci0rICAgICAgICAgICAgICAg ICAgICBuZXcgbGx2bTo6TG9hZEluc3QoY2FzdFB0ciwgbGx2bTo6VHdpbmUoY2FsbEluc3QtPmdl dEFyZ09wZXJhbmQoMCktPmdldE5hbWUoKSkgKyAiX2xvYWQiLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGZhbHNlIC8qIG5vdCB2b2xhdGlsZSAqLywgbGx2bTo6TWF5 YmVBbGlnbihhbGlnbiksIChsbHZtOjpJbnN0cnVjdGlvbiAqKU5VTEwpOwotICNlbHNlCi0gICAg ICAgICAgICAgICAgIGxsdm06Okluc3RydWN0aW9uICpsb2FkSW5zdCA9IG5ldyBsbHZtOjpMb2Fk SW5zdCgKLS0gICAgICAgICAgICAgICAgICAgIGxsdm06OmR5bl9jYXN0PGxsdm06OlBvaW50ZXJU eXBlPihjYXN0UHRyLT5nZXRUeXBlKCkpLT5nZXRQb2ludGVyRWxlbWVudFR5cGUoKSwgY2FzdFB0 ciwgbmFtZSwKLS0gICAgICAgICAgICAgICAgICAgIGZhbHNlIC8qIG5vdCB2b2xhdGlsZSAqLywg bGx2bTo6TWF5YmVBbGlnbihhbGlnbikudmFsdWVPck9uZSgpLCAobGx2bTo6SW5zdHJ1Y3Rpb24g KilOVUxMKTsKLSsgICAgICAgICAgICAgICAgICAgIGxsdm06OmR5bl9jYXN0PGxsdm06OlBvaW50 ZXJUeXBlPihjYXN0UHRyLT5nZXRUeXBlKCkpLT5nZXRQb2ludGVyRWxlbWVudFR5cGUoKSwgY2Fz dFB0ciwKLSsgICAgICAgICAgICAgICAgICAgIGxsdm06OlR3aW5lKGNhbGxJbnN0LT5nZXRBcmdP cGVyYW5kKDApLT5nZXROYW1lKCkpICsgIl9sb2FkIiwgZmFsc2UgLyogbm90IHZvbGF0aWxlICov LAotKyAgICAgICAgICAgICAgICAgICAgbGx2bTo6TWF5YmVBbGlnbihhbGlnbikudmFsdWVPck9u ZSgpLCAobGx2bTo6SW5zdHJ1Y3Rpb24gKilOVUxMKTsKLSAjZW5kaWYKLSAgICAgICAgICAgICAg ICAgbENvcHlNZXRhZGF0YShsb2FkSW5zdCwgY2FsbEluc3QpOwotICAgICAgICAgICAgICAgICBs bHZtOjpSZXBsYWNlSW5zdFdpdGhJbnN0KGNhbGxJbnN0LCBsb2FkSW5zdCk7Ci1AQCAtMTAyOCw5 ICsxMDMwLDkgQEAgYm9vbCBJbnRyaW5zaWNzT3B0OjpydW5PbkJhc2ljQmxvY2sobGx2bTo6QmFz aWNCbG9jayAmYmIpIHsKLSAgICAgICAgICAgICAgICAgLy8gYWxsIGxhbmVzIHN0b3JpbmcsIHNv IHJlcGxhY2Ugd2l0aCBhIHJlZ3VsYXIgc3RvcmUKLSAgICAgICAgICAgICAgICAgbGx2bTo6VmFs dWUgKnJ2YWx1ZSA9IGNhbGxJbnN0LT5nZXRBcmdPcGVyYW5kKDIpOwotICAgICAgICAgICAgICAg ICBsbHZtOjpUeXBlICpzdG9yZVR5cGUgPSBydmFsdWUtPmdldFR5cGUoKTsKLS0gICAgICAgICAg ICAgICAgY29uc3QgY2hhciAqbmFtZSA9IExMVk1HZXROYW1lKGNhbGxJbnN0LT5nZXRBcmdPcGVy YW5kKDApLCAiX3B0cmNhc3QiKTsKLS0gICAgICAgICAgICAgICAgbGx2bTo6VmFsdWUgKmNhc3RQ dHIgPSBuZXcgbGx2bTo6Qml0Q2FzdEluc3QoY2FsbEluc3QtPmdldEFyZ09wZXJhbmQoMCksCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxsdm06OlBvaW50ZXJUeXBlOjpnZXQoc3RvcmVUeXBlLCAwKSwgbmFtZSwgY2FsbEluc3Qp OwotKyAgICAgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqY2FzdFB0ciA9Ci0rICAgICAgICAgICAg ICAgICAgICBuZXcgbGx2bTo6Qml0Q2FzdEluc3QoY2FsbEluc3QtPmdldEFyZ09wZXJhbmQoMCks IGxsdm06OlBvaW50ZXJUeXBlOjpnZXQoc3RvcmVUeXBlLCAwKSwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpUd2luZShjYWxsSW5zdC0+Z2V0QXJnT3Bl cmFuZCgwKS0+Z2V0TmFtZSgpKSArICJfcHRyY2FzdCIsIGNhbGxJbnN0KTsKLSAgICAgICAgICAg ICAgICAgbENvcHlNZXRhZGF0YShjYXN0UHRyLCBjYWxsSW5zdCk7Ci0gCi0gICAgICAgICAgICAg ICAgIGludCBhbGlnbjsKLUBAIC0xMzM5LDggKzEzNDEsOCBAQCBzdGF0aWMgbGx2bTo6VmFsdWUg KmxHZXRCYXNlUG9pbnRlcihsbHZtOjpWYWx1ZSAqdiwgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc2Vy dEJlZgotICAgICAgICAgaWYgKHQgPT0gTlVMTCkgewotICAgICAgICAgICAgIHJldHVybiBOVUxM OwotICAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICByZXR1cm4gbGx2bTo6Q2FzdEluc3Q6 OkNyZWF0ZShjaS0+Z2V0T3Bjb2RlKCksIHQsIGNpLT5nZXRUeXBlKCktPmdldFNjYWxhclR5cGUo KSwgTExWTUdldE5hbWUodCwgIl9jYXN0IiksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW5zZXJ0QmVmb3JlKTsKLSsgICAgICAgICAgICByZXR1cm4gbGx2bTo6 Q2FzdEluc3Q6OkNyZWF0ZShjaS0+Z2V0T3Bjb2RlKCksIHQsIGNpLT5nZXRUeXBlKCktPmdldFNj YWxhclR5cGUoKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs bHZtOjpUd2luZSh0LT5nZXROYW1lKCkpICsgIl9jYXN0IiwgaW5zZXJ0QmVmb3JlKTsKLSAgICAg ICAgIH0KLSAgICAgfQotIAotQEAgLTE1ODMsMTMgKzE1ODUsMTMgQEAgc3RhdGljIHZvaWQgbEV4 dHJhY3RDb25zdGFudE9mZnNldChsbHZtOjpWYWx1ZSAqdmVjLCBsbHZtOjpWYWx1ZSAqKmNvbnN0 T2Zmc2V0LAotICAgICAgICAgaWYgKGNvID09IE5VTEwpCi0gICAgICAgICAgICAgKmNvbnN0T2Zm c2V0ID0gTlVMTDsKLSAgICAgICAgIGVsc2UKLS0gICAgICAgICAgICAqY29uc3RPZmZzZXQgPQot LSAgICAgICAgICAgICAgICBsbHZtOjpDYXN0SW5zdDo6Q3JlYXRlKGNhc3QtPmdldE9wY29kZSgp LCBjbywgY2FzdC0+Z2V0VHlwZSgpLCBMTFZNR2V0TmFtZShjbywgIl9jYXN0IiksIGluc2VydEJl Zm9yZSk7Ci0rICAgICAgICAgICAgKmNvbnN0T2Zmc2V0ID0gbGx2bTo6Q2FzdEluc3Q6OkNyZWF0 ZShjYXN0LT5nZXRPcGNvZGUoKSwgY28sIGNhc3QtPmdldFR5cGUoKSwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OlR3aW5lKGNvLT5nZXRO YW1lKCkpICsgIl9jYXN0IiwgaW5zZXJ0QmVmb3JlKTsKLSAgICAgICAgIGlmICh2byA9PSBOVUxM KQotICAgICAgICAgICAgICp2YXJpYWJsZU9mZnNldCA9IE5VTEw7Ci0gICAgICAgICBlbHNlCi0t ICAgICAgICAgICAgKnZhcmlhYmxlT2Zmc2V0ID0KLS0gICAgICAgICAgICAgICAgbGx2bTo6Q2Fz dEluc3Q6OkNyZWF0ZShjYXN0LT5nZXRPcGNvZGUoKSwgdm8sIGNhc3QtPmdldFR5cGUoKSwgTExW TUdldE5hbWUodm8sICJfY2FzdCIpLCBpbnNlcnRCZWZvcmUpOwotKyAgICAgICAgICAgICp2YXJp YWJsZU9mZnNldCA9IGxsdm06OkNhc3RJbnN0OjpDcmVhdGUoY2FzdC0+Z2V0T3Bjb2RlKCksIHZv LCBjYXN0LT5nZXRUeXBlKCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsbHZtOjpUd2luZSh2by0+Z2V0TmFtZSgpKSArICJfY2FzdCIsIGlu c2VydEJlZm9yZSk7Ci0gICAgICAgICByZXR1cm47Ci0gICAgIH0KLSAKLUBAIC0xNjA4LDE2ICsx NjEwLDE4IEBAIHN0YXRpYyB2b2lkIGxFeHRyYWN0Q29uc3RhbnRPZmZzZXQobGx2bTo6VmFsdWUg KnZlYywgbGx2bTo6VmFsdWUgKipjb25zdE9mZnNldCwKLSAgICAgICAgICAgICBlbHNlIGlmIChj MSA9PSBOVUxMIHx8IGxsdm06OmlzYTxsbHZtOjpDb25zdGFudEFnZ3JlZ2F0ZVplcm8+KGMxKSkK LSAgICAgICAgICAgICAgICAgKmNvbnN0T2Zmc2V0ID0gYzA7Ci0gICAgICAgICAgICAgZWxzZQot LSAgICAgICAgICAgICAgICAqY29uc3RPZmZzZXQgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3Jl YXRlKGxsdm06Okluc3RydWN0aW9uOjpBZGQsIGMwLCBjMSwgTExWTUdldE5hbWUoImFkZCIsIGMw LCBjMSksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW5zZXJ0QmVmb3JlKTsKLSsgICAgICAgICAgICAgICAgKmNvbnN0T2Zmc2V0 ID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZSgKLSsgICAgICAgICAgICAgICAgICAgIGxs dm06Okluc3RydWN0aW9uOjpBZGQsIGMwLCBjMSwgKChsbHZtOjpUd2luZSgiYWRkXyIpICsgYzAt PmdldE5hbWUoKSkgKyAiXyIpICsgYzEtPmdldE5hbWUoKSwKLSsgICAgICAgICAgICAgICAgICAg IGluc2VydEJlZm9yZSk7Ci0gCi0gICAgICAgICAgICAgaWYgKHYwID09IE5VTEwgfHwgbGx2bTo6 aXNhPGxsdm06OkNvbnN0YW50QWdncmVnYXRlWmVybz4odjApKQotICAgICAgICAgICAgICAgICAq dmFyaWFibGVPZmZzZXQgPSB2MTsKLSAgICAgICAgICAgICBlbHNlIGlmICh2MSA9PSBOVUxMIHx8 IGxsdm06OmlzYTxsbHZtOjpDb25zdGFudEFnZ3JlZ2F0ZVplcm8+KHYxKSkKLSAgICAgICAgICAg ICAgICAgKnZhcmlhYmxlT2Zmc2V0ID0gdjA7Ci0gICAgICAgICAgICAgZWxzZQotLSAgICAgICAg ICAgICAgICAqdmFyaWFibGVPZmZzZXQgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlKGxs dm06Okluc3RydWN0aW9uOjpBZGQsIHYwLCB2MSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZNR2V0TmFtZSgiYWRkIiwg djAsIHYxKSwgaW5zZXJ0QmVmb3JlKTsKLSsgICAgICAgICAgICAgICAgKnZhcmlhYmxlT2Zmc2V0 ID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZSgKLSsgICAgICAgICAgICAgICAgICAgIGxs dm06Okluc3RydWN0aW9uOjpBZGQsIHYwLCB2MSwgKChsbHZtOjpUd2luZSgiYWRkXyIpICsgdjAt PmdldE5hbWUoKSkgKyAiXyIpICsgdjEtPmdldE5hbWUoKSwKLSsgICAgICAgICAgICAgICAgICAg IGluc2VydEJlZm9yZSk7Ci0gICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgfSBlbHNlIGlm IChib3AtPmdldE9wY29kZSgpID09IGxsdm06Okluc3RydWN0aW9uOjpTaGwpIHsKLSAgICAgICAg ICAgICBsRXh0cmFjdENvbnN0YW50T2Zmc2V0KG9wMCwgJmMwLCAmdjAsIGluc2VydEJlZm9yZSk7 Ci1AQCAtMTYzMywxMCArMTYzNywxMiBAQCBzdGF0aWMgdm9pZCBsRXh0cmFjdENvbnN0YW50T2Zm c2V0KGxsdm06OlZhbHVlICp2ZWMsIGxsdm06OlZhbHVlICoqY29uc3RPZmZzZXQsCi0gICAgICAg ICAgICAgICAgICpjb25zdE9mZnNldCA9IHZlYzsKLSAgICAgICAgICAgICAgICAgKnZhcmlhYmxl T2Zmc2V0ID0gTlVMTDsKLSAgICAgICAgICAgICB9IGVsc2UgewotLSAgICAgICAgICAgICAgICAq Y29uc3RPZmZzZXQgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlKGxsdm06Okluc3RydWN0 aW9uOjpTaGwsIGMwLCBjMSwgTExWTUdldE5hbWUoInNobCIsIGMwLCBjMSksCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0 QmVmb3JlKTsKLS0gICAgICAgICAgICAgICAgKnZhcmlhYmxlT2Zmc2V0ID0gbGx2bTo6QmluYXJ5 T3BlcmF0b3I6OkNyZWF0ZShsbHZtOjpJbnN0cnVjdGlvbjo6U2hsLCB2MCwgYzEsCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TExWTUdldE5hbWUoInNobCIsIHYwLCBjMSksIGluc2VydEJlZm9yZSk7Ci0rICAgICAgICAgICAg ICAgICpjb25zdE9mZnNldCA9IGxsdm06OkJpbmFyeU9wZXJhdG9yOjpDcmVhdGUoCi0rICAgICAg ICAgICAgICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbjo6U2hsLCBjMCwgYzEsICgobGx2bTo6VHdp bmUoInNobF8iKSArIGMwLT5nZXROYW1lKCkpICsgIl8iKSArIGMxLT5nZXROYW1lKCksCi0rICAg ICAgICAgICAgICAgICAgICBpbnNlcnRCZWZvcmUpOwotKyAgICAgICAgICAgICAgICAqdmFyaWFi bGVPZmZzZXQgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlKAotKyAgICAgICAgICAgICAg ICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb246OlNobCwgdjAsIGMxLCAoKGxsdm06OlR3aW5lKCJzaGxf IikgKyB2MC0+Z2V0TmFtZSgpKSArICJfIikgKyBjMS0+Z2V0TmFtZSgpLAotKyAgICAgICAgICAg ICAgICAgICAgaW5zZXJ0QmVmb3JlKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgcmV0 dXJuOwotICAgICAgICAgfSBlbHNlIGlmIChib3AtPmdldE9wY29kZSgpID09IGxsdm06Okluc3Ry dWN0aW9uOjpNdWwpIHsKLUBAIC0xNjQ4LDI1ICsxNjU0LDMwIEBAIHN0YXRpYyB2b2lkIGxFeHRy YWN0Q29uc3RhbnRPZmZzZXQobGx2bTo6VmFsdWUgKnZlYywgbGx2bTo6VmFsdWUgKipjb25zdE9m ZnNldCwKLSAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGhlIGZpcnN0IHRlcm0gaXMgYSBjb25z dGFudCBhbmQgdGhlIGxhc3QgdGhyZWUgYXJlCi0gICAgICAgICAgICAgLy8gdmFyaWFibGUuCi0g ICAgICAgICAgICAgaWYgKGMwICE9IE5VTEwgJiYgYzEgIT0gTlVMTCkKLS0gICAgICAgICAgICAg ICAgKmNvbnN0T2Zmc2V0ID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZShsbHZtOjpJbnN0 cnVjdGlvbjo6TXVsLCBjMCwgYzEsIExMVk1HZXROYW1lKCJtdWwiLCBjMCwgYzEpLAotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu c2VydEJlZm9yZSk7Ci0rICAgICAgICAgICAgICAgICpjb25zdE9mZnNldCA9IGxsdm06OkJpbmFy eU9wZXJhdG9yOjpDcmVhdGUoCi0rICAgICAgICAgICAgICAgICAgICBsbHZtOjpJbnN0cnVjdGlv bjo6TXVsLCBjMCwgYzEsICgobGx2bTo6VHdpbmUoIm11bF8iKSArIGMwLT5nZXROYW1lKCkpICsg Il8iKSArIGMxLT5nZXROYW1lKCksCi0rICAgICAgICAgICAgICAgICAgICBpbnNlcnRCZWZvcmUp OwotICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgKmNvbnN0T2Zmc2V0ID0gTlVM TDsKLSAKLSAgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqdmEgPSBOVUxMLCAqdmIgPSBOVUxMLCAq dmMgPSBOVUxMOwotICAgICAgICAgICAgIGlmICh2MCAhPSBOVUxMICYmIGMxICE9IE5VTEwpCi0t ICAgICAgICAgICAgICAgIHZhID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZShsbHZtOjpJ bnN0cnVjdGlvbjo6TXVsLCB2MCwgYzEsIExMVk1HZXROYW1lKCJtdWwiLCB2MCwgYzEpLAotKyAg ICAgICAgICAgICAgICB2YSA9IGxsdm06OkJpbmFyeU9wZXJhdG9yOjpDcmVhdGUobGx2bTo6SW5z dHJ1Y3Rpb246Ok11bCwgdjAsIGMxLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKChsbHZtOjpUd2luZSgibXVsXyIpICsgdjAtPmdldE5hbWUoKSkg KyAiXyIpICsgYzEtPmdldE5hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGluc2VydEJlZm9yZSk7Ci0gICAgICAgICAgICAgaWYgKGMwICE9 IE5VTEwgJiYgdjEgIT0gTlVMTCkKLS0gICAgICAgICAgICAgICAgdmIgPSBsbHZtOjpCaW5hcnlP cGVyYXRvcjo6Q3JlYXRlKGxsdm06Okluc3RydWN0aW9uOjpNdWwsIGMwLCB2MSwgTExWTUdldE5h bWUoIm11bCIsIGMwLCB2MSksCi0rICAgICAgICAgICAgICAgIHZiID0gbGx2bTo6QmluYXJ5T3Bl cmF0b3I6OkNyZWF0ZShsbHZtOjpJbnN0cnVjdGlvbjo6TXVsLCBjMCwgdjEsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxsdm06OlR3aW5lKCJt dWxfIikgKyBjMC0+Z2V0TmFtZSgpKSArICJfIikgKyB2MS0+Z2V0TmFtZSgpLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0QmVmb3JlKTsK LSAgICAgICAgICAgICBpZiAodjAgIT0gTlVMTCAmJiB2MSAhPSBOVUxMKQotLSAgICAgICAgICAg ICAgICB2YyA9IGxsdm06OkJpbmFyeU9wZXJhdG9yOjpDcmVhdGUobGx2bTo6SW5zdHJ1Y3Rpb246 Ok11bCwgdjAsIHYxLCBMTFZNR2V0TmFtZSgibXVsIiwgdjAsIHYxKSwKLSsgICAgICAgICAgICAg ICAgdmMgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlKGxsdm06Okluc3RydWN0aW9uOjpN dWwsIHYwLCB2MSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICgobGx2bTo6VHdpbmUoIm11bF8iKSArIHYwLT5nZXROYW1lKCkpICsgIl8iKSArIHYx LT5nZXROYW1lKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnNlcnRCZWZvcmUpOwotIAotICAgICAgICAgICAgIGxsdm06OlZhbHVlICp2YWIg PSBOVUxMOwotICAgICAgICAgICAgIGlmICh2YSAhPSBOVUxMICYmIHZiICE9IE5VTEwpCi0tICAg ICAgICAgICAgICAgIHZhYiA9IGxsdm06OkJpbmFyeU9wZXJhdG9yOjpDcmVhdGUobGx2bTo6SW5z dHJ1Y3Rpb246OkFkZCwgdmEsIHZiLCBMTFZNR2V0TmFtZSgiYWRkIiwgdmEsIHZiKSwKLSsgICAg ICAgICAgICAgICAgdmFiID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZShsbHZtOjpJbnN0 cnVjdGlvbjo6QWRkLCB2YSwgdmIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKChsbHZtOjpUd2luZSgiYWRkXyIpICsgdmEtPmdldE5hbWUoKSkg KyAiXyIpICsgdmItPmdldE5hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnNlcnRCZWZvcmUpOwotICAgICAgICAgICAgIGVsc2UgaWYg KHZhICE9IE5VTEwpCi0gICAgICAgICAgICAgICAgIHZhYiA9IHZhOwotQEAgLTE2NzQsOCArMTY4 NSw5IEBAIHN0YXRpYyB2b2lkIGxFeHRyYWN0Q29uc3RhbnRPZmZzZXQobGx2bTo6VmFsdWUgKnZl YywgbGx2bTo6VmFsdWUgKipjb25zdE9mZnNldCwKLSAgICAgICAgICAgICAgICAgdmFiID0gdmI7 Ci0gCi0gICAgICAgICAgICAgaWYgKHZhYiAhPSBOVUxMICYmIHZjICE9IE5VTEwpCi0tICAgICAg ICAgICAgICAgICp2YXJpYWJsZU9mZnNldCA9IGxsdm06OkJpbmFyeU9wZXJhdG9yOjpDcmVhdGUo bGx2bTo6SW5zdHJ1Y3Rpb246OkFkZCwgdmFiLCB2YywKLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZNR2V0TmFtZSgiYWRk IiwgdmFiLCB2YyksIGluc2VydEJlZm9yZSk7Ci0rICAgICAgICAgICAgICAgICp2YXJpYWJsZU9m ZnNldCA9IGxsdm06OkJpbmFyeU9wZXJhdG9yOjpDcmVhdGUoCi0rICAgICAgICAgICAgICAgICAg ICBsbHZtOjpJbnN0cnVjdGlvbjo6QWRkLCB2YWIsIHZjLCAoKGxsdm06OlR3aW5lKCJhZGRfIikg KyB2YWItPmdldE5hbWUoKSkgKyAiXyIpICsgdmMtPmdldE5hbWUoKSwKLSsgICAgICAgICAgICAg ICAgICAgIGluc2VydEJlZm9yZSk7Ci0gICAgICAgICAgICAgZWxzZSBpZiAodmFiICE9IE5VTEwp Ci0gICAgICAgICAgICAgICAgICp2YXJpYWJsZU9mZnNldCA9IHZhYjsKLSAgICAgICAgICAgICBl bHNlCi1AQCAtMTk0Myw3ICsxOTU1LDcgQEAgc3RhdGljIGJvb2wgbE9mZnNldHMzMkJpdFNhZmUo bGx2bTo6VmFsdWUgKip2YXJpYWJsZU9mZnNldFB0ciwgbGx2bTo6VmFsdWUgKipjb24KLSAgICAg ICAgICAgICAvLyBhbGwgemVyb3MgKGkuZS4gYSBDb25zdGFudEFnZ3JlZ2F0ZVplcm8sIGJ1dCBq dXN0IGluIGNhc2UsCi0gICAgICAgICAgICAgLy8gZG8gdGhlIG1vcmUgZ2VuZXJhbCBjaGVjayB3 aXRoIGxWZWN0b3JJczMyQml0SW50cygpLgotICAgICAgICAgICAgIHZhcmlhYmxlT2Zmc2V0ID0g bmV3IGxsdm06OlRydW5jSW5zdCh2YXJpYWJsZU9mZnNldCwgTExWTVR5cGVzOjpJbnQzMlZlY3Rv clR5cGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExMVk1HZXROYW1lKHZhcmlhYmxlT2Zmc2V0LCAiX3RydW5jIiksIGluc2VydEJlZm9yZSk7Ci0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OlR3 aW5lKHZhcmlhYmxlT2Zmc2V0LT5nZXROYW1lKCkpICsgIl90cnVuYyIsIGluc2VydEJlZm9yZSk7 Ci0gICAgICAgICBlbHNlCi0gICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICB9Ci1AQCAt MTk1Miw3ICsxOTY0LDcgQEAgc3RhdGljIGJvb2wgbE9mZnNldHMzMkJpdFNhZmUobGx2bTo6VmFs dWUgKip2YXJpYWJsZU9mZnNldFB0ciwgbGx2bTo6VmFsdWUgKipjb24KLSAgICAgICAgIGlmIChs VmVjdG9ySXMzMkJpdEludHMoY29uc3RPZmZzZXQpKSB7Ci0gICAgICAgICAgICAgLy8gVHJ1bmNh dGUgdGhlbSBzbyB3ZSBoYXZlIGEgMzItYml0IHZlY3RvciB0eXBlIGZvciB0aGVtLgotICAgICAg ICAgICAgIGNvbnN0T2Zmc2V0ID0gbmV3IGxsdm06OlRydW5jSW5zdChjb25zdE9mZnNldCwgTExW TVR5cGVzOjpJbnQzMlZlY3RvclR5cGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExMVk1HZXROYW1lKGNvbnN0T2Zmc2V0LCAiX3RydW5jIiksIGluc2Vy dEJlZm9yZSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGxsdm06OlR3aW5lKGNvbnN0T2Zmc2V0LT5nZXROYW1lKCkpICsgIl90cnVuYyIsIGluc2VydEJl Zm9yZSk7Ci0gICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgIC8vIEZJWE1FOiBvdGhlcndp c2Ugd2UganVzdCBhc3N1bWUgdGhhdCBhbGwgY29uc3RhbnQgb2Zmc2V0cwotICAgICAgICAgICAg IC8vIGNhbiBhY3R1YWxseSBhbHdheXMgZml0IGludG8gMzItYml0cy4uLiAgKFRoaXMgY291bGQg YmUKLUBAIC0xOTYzLDcgKzE5NzUsNyBAQCBzdGF0aWMgYm9vbCBsT2Zmc2V0czMyQml0U2FmZShs bHZtOjpWYWx1ZSAqKnZhcmlhYmxlT2Zmc2V0UHRyLCBsbHZtOjpWYWx1ZSAqKmNvbgotICAgICAg ICAgICAgIC8vIGxsdm06OkNvbnN0YW50Rm9sZEluc3RydWN0aW9uKCkgZG9lc24ndCBzZWVtIHRv IGJlIGRvaW5nCi0gICAgICAgICAgICAgLy8gZW5vdWdoIGZvciB1cyBpbiBzb21lIGNhc2VzIGlm IHdlIGNhbGwgaXQgZnJvbSBoZXJlLgotICAgICAgICAgICAgIGNvbnN0T2Zmc2V0ID0gbmV3IGxs dm06OlRydW5jSW5zdChjb25zdE9mZnNldCwgTExWTVR5cGVzOjpJbnQzMlZlY3RvclR5cGUsCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1HZXROYW1l KGNvbnN0T2Zmc2V0LCAiX3RydW5jIiksIGluc2VydEJlZm9yZSk7Ci0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OlR3aW5lKGNvbnN0T2Zmc2V0LT5n ZXROYW1lKCkpICsgIl90cnVuYyIsIGluc2VydEJlZm9yZSk7Ci0gICAgICAgICB9Ci0gICAgIH0K LSAKLUBAIC0yMDEyLDggKzIwMjQsOCBAQCBzdGF0aWMgYm9vbCBsT2Zmc2V0czMyQml0U2FmZShs bHZtOjpWYWx1ZSAqKm9mZnNldFB0ciwgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc2VydAotIAotICAg ICAgICAgLy8gQWx0ZXJuYXRpdmVseSwgb2Zmc2V0IGNvdWxkIGJlIGEgc2VxdWVuY2Ugb2YgYWRk cyB0ZXJtaW5hdGluZwotICAgICAgICAgLy8gaW4gc2FmZSBjb25zdGFudCB2ZWN0b3JzIG9yIGEg U0V4dC4KLS0gICAgICAgICpvZmZzZXRQdHIgPQotLSAgICAgICAgICAgIG5ldyBsbHZtOjpUcnVu Y0luc3Qob2Zmc2V0LCBMTFZNVHlwZXM6OkludDMyVmVjdG9yVHlwZSwgTExWTUdldE5hbWUob2Zm c2V0LCAiX3RydW5jIiksIGluc2VydEJlZm9yZSk7Ci0rICAgICAgICAqb2Zmc2V0UHRyID0gbmV3 IGxsdm06OlRydW5jSW5zdChvZmZzZXQsIExMVk1UeXBlczo6SW50MzJWZWN0b3JUeXBlLCBsbHZt OjpUd2luZShvZmZzZXQtPmdldE5hbWUoKSkgKyAiX3RydW5jIiwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydEJlZm9yZSk7Ci0gICAgICAgICByZXR1cm4g dHJ1ZTsKLSAgICAgfSBlbHNlCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci1AQCAtMjIyOSw3ICsy MjQxLDggQEAgc3RhdGljIGJvb2wgbEdTVG9HU0Jhc2VPZmZzZXRzKGxsdm06OkNhbGxJbnN0ICpj YWxsSW5zdCkgewotICAgICB9Ci0gICAgIC8vIENhc3QgdGhlIGJhc2UgcG9pbnRlciB0byBhIHZv aWQgKiwgc2luY2UgdGhhdCdzIHdoYXQgdGhlCi0gICAgIC8vIF9fcHNldWRvXypfYmFzZV9vZmZz ZXRzXyogZnVuY3Rpb25zIHdhbnQuCi0tICAgIGJhc2VQdHIgPSBuZXcgbGx2bTo6SW50VG9QdHJJ bnN0KGJhc2VQdHIsIExMVk1UeXBlczo6Vm9pZFBvaW50ZXJUeXBlLCBMTFZNR2V0TmFtZShiYXNl UHRyLCAiXzJ2b2lkIiksIGNhbGxJbnN0KTsKLSsgICAgYmFzZVB0ciA9IG5ldyBsbHZtOjpJbnRU b1B0ckluc3QoYmFzZVB0ciwgTExWTVR5cGVzOjpWb2lkUG9pbnRlclR5cGUsIGxsdm06OlR3aW5l KGJhc2VQdHItPmdldE5hbWUoKSkgKyAiXzJ2b2lkIiwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY2FsbEluc3QpOwotICAgICBsQ29weU1ldGFkYXRhKGJhc2VQdHIsIGNh bGxJbnN0KTsKLSAgICAgbGx2bTo6RnVuY3Rpb24gKmdhdGhlclNjYXR0ZXJGdW5jID0gaW5mby0+ YmFzZU9mZnNldHNGdW5jOwotIAotQEAgLTI4MDMsNyArMjgxNiw3IEBAIHN0YXRpYyBib29sIGxH U1RvTG9hZFN0b3JlKGxsdm06OkNhbGxJbnN0ICpjYWxsSW5zdCkgewotICAgICAgICAgICAgICAg ICBsQ29weU1ldGFkYXRhKHB0ciwgY2FsbEluc3QpOwotICAgICAgICAgICAgICAgICBEZWJ1Zyhw b3MsICJUcmFuc2Zvcm1lZCBnYXRoZXIgdG8gdW5hbGlnbmVkIHZlY3RvciBsb2FkISIpOwotICAg ICAgICAgICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqbmV3Q2FsbCA9Ci0tICAgICAgICAgICAg ICAgICAgICBsQ2FsbEluc3QoZ2F0aGVySW5mby0+bG9hZE1hc2tlZEZ1bmMsIHB0ciwgbWFzaywg TExWTUdldE5hbWUocHRyLCAiX21hc2tlZF9sb2FkIikpOwotKyAgICAgICAgICAgICAgICAgICAg bENhbGxJbnN0KGdhdGhlckluZm8tPmxvYWRNYXNrZWRGdW5jLCBwdHIsIG1hc2ssIGxsdm06OlR3 aW5lKHB0ci0+Z2V0TmFtZSgpKSArICJfbWFza2VkX2xvYWQiKTsKLSAgICAgICAgICAgICAgICAg bENvcHlNZXRhZGF0YShuZXdDYWxsLCBjYWxsSW5zdCk7Ci0gICAgICAgICAgICAgICAgIGxsdm06 OlJlcGxhY2VJbnN0V2l0aEluc3QoY2FsbEluc3QsIG5ld0NhbGwpOwotICAgICAgICAgICAgICAg ICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0w MDQucGF0Y2ggYi9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA0LnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTk0ZDg0NDNhNWUuLjAwMDAwMDAwMDAwMAotLS0gYS9z cmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs MzQgKzAsMCBAQAotRnJvbSBjMDNhNTE0MjQ0NDQ3NmExY2FhNWMyYmE3ZmEyZDkyZDc3OTNkNmYx IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGVlcGFrIFJhamVuZHJha3VtYXJhbiA8 ZGVlcGFrLnJhamVuZHJha3VtYXJhbkBpbnRlbC5jb20+Ci1EYXRlOiBNb24sIDI1IEphbiAyMDIx IDA5OjIyOjQ5IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeGluZyBidWlsZCBvbiBsbHZtIHRy dW5rLgotCi0tLS0KLSBzcmMvY3R4LmNwcCB8IDcgKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAz IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvY3R4LmNw cCBiL3NyYy9jdHguY3BwCi1pbmRleCBkZWQ1MjRiNzEuLmI2MGU2ZmU4NCAxMDA2NDQKLS0tLSBh L3NyYy9jdHguY3BwCi0rKysgYi9zcmMvY3R4LmNwcAotQEAgLTEwMjAsOCArMTAyMCw3IEBAIHZv aWQgRnVuY3Rpb25FbWl0Q29udGV4dDo6RW1pdENhc2VMYWJlbChpbnQgdmFsdWUsIGJvb2wgY2hl Y2tNYXNrLCBTb3VyY2VQb3MgcG9zCi0gICAgIGxsdm06OkJhc2ljQmxvY2sgKmJiQ2FzZUltcGwg PSBOVUxMOwotICAgICBpZiAoZW1pdEdlblhIYXJkd2FyZU1hc2soKSkgewotICAgICAgICAgLy8g Q3JlYXRlIGJhc2ljIGJsb2NrIHdpdGggYWN0dWFsIGNhc2UgaW1wbGVtZW50YXRpb24KLS0gICAg ICAgIGxsdm06OlR3aW5lIGJiTmFtZSA9IGxsdm06OlR3aW5lKGJiQ2FzZS0+Z2V0TmFtZSgpKSAr ICJfaW1wbCI7Ci0tICAgICAgICBiYkNhc2VJbXBsID0gQ3JlYXRlQmFzaWNCbG9jayhiYk5hbWUs IGJiQ2FzZSk7Ci0rICAgICAgICBiYkNhc2VJbXBsID0gQ3JlYXRlQmFzaWNCbG9jayhsbHZtOjpU d2luZShiYkNhc2UtPmdldE5hbWUoKSkgKyAiX2ltcGwiLCBiYkNhc2UpOwotICAgICB9Ci0gI2Vu ZGlmCi0gCi1AQCAtMzE0Miw4ICszMTQxLDggQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENv bnRleHQ6OkJyb2FkY2FzdFZhbHVlKGxsdm06OlZhbHVlICp2LCBsbHZtOjpUeXBlICp2ZWMKLSAg ICAgbGx2bTo6VmFsdWUgKnVuZGVmMiA9IGxsdm06OlVuZGVmVmFsdWU6OmdldCh2ZWNUeXBlKTsK LSAKLSAgICAgLy8gSW5zZXJ0RWxlbWVudAotLSAgICBsbHZtOjpUd2luZSB0dyA9IG5hbWUuaXNU cml2aWFsbHlFbXB0eSgpID8gKGxsdm06OlR3aW5lKHYtPmdldE5hbWUoKSkgKyAiX2Jyb2FkY2Fz dCIpIDogbmFtZSArIGxsdm06OlR3aW5lKCJfaW5pdCIpOwotLSAgICBsbHZtOjpWYWx1ZSAqaW5z ZXJ0ID0gSW5zZXJ0SW5zdCh1bmRlZjEsIHYsIDAsIHR3LnN0cigpLmNfc3RyKCkpOwotKyAgICBs bHZtOjpWYWx1ZSAqaW5zZXJ0ID0KLSsgICAgICAgIEluc2VydEluc3QodW5kZWYxLCB2LCAwLCBu YW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/IChsbHZtOjpUd2luZSh2LT5nZXROYW1lKCkpICsgIl9i cm9hZGNhc3QiKSA6IG5hbWUgKyAiX2luaXQiKTsKLSAKLSAgICAgLy8gU2h1ZmZsZVZlY3Rvcgot ICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMV8wCmRpZmYgLS1naXQgYS9zcmNw a2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA1LnBhdGNoIGIvc3JjcGtncy9pc3BjL3BhdGNoZXMv bGx2bTEyLTAwNS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTNlOTZiMDBh YmZhLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwNS5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3MiArMCwwIEBACi1Gcm9tIGMxZDBhNTFiZjg0MTZk NDIxNDRkZTllMmJkZDU5ODI1ZWFlZmYxYWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9t OiBBcmluYSBOZXNobHlhZXZhIDxhcmluYS5uZXNobHlhZXZhQGludGVsLmNvbT4KLURhdGU6IEZy aSwgOCBKYW4gMjAyMSAxNDoxMzo0OSAtMDgwMAotU3ViamVjdDogW1BBVENIXSBMTFZNIDExIHN1 cHBvcnQgZm9yIGdlbiBjb2RlCi0KLS0tLQotIHNyYy9jdHguY3BwICAgICAgICAgICAgICAgICAg ICAgfCAgMTMgKystCi0gc3JjL2dlbi9HbG9iYWxzTG9jYWxpemF0aW9uLmNwcCB8ICAgOSArLQot IHNyYy9vcHQuY3BwICAgICAgICAgICAgICAgICAgICAgfCAxNDMgKysrKysrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDEyNCBpbnNlcnRpb25zKCspLCA0MSBk ZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jdHguY3BwIGIvc3JjL2N0eC5jcHAKLWlu ZGV4IGI2MGU2ZmU4NC4uMmE3MmU2ODM3IDEwMDY0NAotLS0tIGEvc3JjL2N0eC5jcHAKLSsrKyBi L3NyYy9jdHguY3BwCi1AQCAtMSw1ICsxLDUgQEAKLSAvKgotLSAgQ29weXJpZ2h0IChjKSAyMDEw LTIwMjAsIEludGVsIENvcnBvcmF0aW9uCi0rICBDb3B5cmlnaHQgKGMpIDIwMTAtMjAyMSwgSW50 ZWwgQ29ycG9yYXRpb24KLSAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gCi0gICBSZWRpc3RyaWJ1 dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK LUBAIC0zNjg1LDggKzM2ODUsMTcgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6 OkdlblhTaW1kQ0ZQcmVkaWNhdGUobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjoKLSAgICAgQXNz ZXJ0UG9zKGN1cnJlbnRQb3MsIGxsdm06OmlzYTxsbHZtOjpWZWN0b3JUeXBlPih2YWx1ZS0+Z2V0 VHlwZSgpKSk7Ci0gICAgIGxsdm06OlZlY3RvclR5cGUgKnZ0ID0gbGx2bTo6ZHluX2Nhc3Q8bGx2 bTo6VmVjdG9yVHlwZT4odmFsdWUtPmdldFR5cGUoKSk7Ci0gICAgIGlmIChkZWZhdWx0cyA9PSBO VUxMKSB7Ci0tICAgICAgICBkZWZhdWx0cyA9IGxsdm06OkNvbnN0YW50VmVjdG9yOjpnZXRTcGxh dCh2YWx1ZS0+Z2V0VHlwZSgpLT5nZXRWZWN0b3JOdW1FbGVtZW50cygpLAotKyNpZiBJU1BDX0xM Vk1fVkVSU0lPTiA8IElTUENfTExWTV8xMV8wCi0rICAgICAgICBkZWZhdWx0cyA9IGxsdm06OkNv bnN0YW50VmVjdG9yOjpnZXRTcGxhdCh2dC0+Z2V0VmVjdG9yTnVtRWxlbWVudHMoKSwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OkNvbnN0 YW50OjpnZXROdWxsVmFsdWUodnQtPmdldEVsZW1lbnRUeXBlKCkpKTsKLSsjZWxpZiBJU1BDX0xM Vk1fVkVSU0lPTiA9PSBJU1BDX0xMVk1fMTFfMAotKyAgICAgICAgZGVmYXVsdHMgPSBsbHZtOjpD b25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQoe3N0YXRpY19jYXN0PHVuc2lnbmVkIGludD4odnQtPmdl dE51bUVsZW1lbnRzKCkpLCBmYWxzZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsbHZtOjpDb25zdGFudDo6Z2V0TnVsbFZhbHVlKHZ0LT5nZXRF bGVtZW50VHlwZSgpKSk7Ci0rI2Vsc2UKLSsgICAgICAgIGRlZmF1bHRzID0gbGx2bTo6Q29uc3Rh bnRWZWN0b3I6OmdldFNwbGF0KAotKyAgICAgICAgICAgIGxsdm06OkVsZW1lbnRDb3VudDo6Z2V0 KHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4odnQtPmdldE51bUVsZW1lbnRzKCkpLCBmYWxzZSks Ci0rICAgICAgICAgICAgbGx2bTo6Q29uc3RhbnQ6OmdldE51bGxWYWx1ZSh2dC0+Z2V0RWxlbWVu dFR5cGUoKSkpOwotKyNlbmRpZgotICAgICB9Ci0gCi0gICAgIGF1dG8gRm4gPSBsbHZtOjpHZW5Y SW50cmluc2ljOjpnZXRHZW5YRGVjbGFyYXRpb24obS0+bW9kdWxlLCBsbHZtOjpHZW5YSW50cmlu c2ljOjpnZW54X3NpbWRjZl9wcmVkaWNhdGUsCi1kaWZmIC0tZ2l0IGEvc3JjL2dlbi9HbG9iYWxz TG9jYWxpemF0aW9uLmNwcCBiL3NyYy9nZW4vR2xvYmFsc0xvY2FsaXphdGlvbi5jcHAKLWluZGV4 IGExNzZlOTQ2Mi4uNDFmM2IwMGUyIDEwMDY0NAotLS0tIGEvc3JjL2dlbi9HbG9iYWxzTG9jYWxp emF0aW9uLmNwcAotKysrIGIvc3JjL2dlbi9HbG9iYWxzTG9jYWxpemF0aW9uLmNwcAotQEAgLTEs NSArMSw1IEBACi0gLyoKLS0gIENvcHlyaWdodCAoYykgMjAxNCwgMjAxNi0yMDIwLCBJbnRlbCBD b3Jwb3JhdGlvbgotKyAgQ29weXJpZ2h0IChjKSAyMDE0LCAyMDE2LTIwMjEsIEludGVsIENvcnBv cmF0aW9uCi0gICBBbGwgcmlnaHRzIHJlc2VydmVkLgotIAotICAgUmVkaXN0cmlidXRpb24gYW5k IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1AQCAtNTMs OCArNTMsMTAgQEAKLSAjaW5jbHVkZSA8bGx2bS9HZW5YSW50cmluc2ljcy9HZW5YSW50ck9wdHMu aD4KLSAjaW5jbHVkZSA8bGx2bS9HZW5YSW50cmluc2ljcy9HZW5YSW50cmluc2ljcy5oPgotICNp bmNsdWRlIDxsbHZtL0dlblhJbnRyaW5zaWNzL0dlblhNZXRhZGF0YS5oPgotLSNpbmNsdWRlIDxs bHZtL0lSL0NGRy5oPgotKyNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMV8wCi0g I2luY2x1ZGUgPGxsdm0vSVIvQ2FsbFNpdGUuaD4KLSsjZW5kaWYKLSsjaW5jbHVkZSA8bGx2bS9J Ui9DRkcuaD4KLSAjaW5jbHVkZSA8bGx2bS9JUi9EZWJ1Z0luZm8uaD4KLSAjaW5jbHVkZSA8bGx2 bS9JUi9Eb21pbmF0b3JzLmg+Ci0gI2luY2x1ZGUgPGxsdm0vSVIvRnVuY3Rpb24uaD4KLUBAIC00 NzAsNyArNDcyLDggQEAgdm9pZCBHbG9iYWxzTG9jYWxpemF0aW9uOjpMb2NhbGl6ZUdsb2JhbHMo TG9jYWxpemF0aW9uSW5mbyAmTEkpIHsKLSAgICAgICAgIEluc3RydWN0aW9uICZGaXJzdEkgPSAq Rm4tPmdldEVudHJ5QmxvY2soKS5iZWdpbigpOwotICAgICAgICAgVHlwZSAqRWxlbVR5ID0gR1Yt PmdldFR5cGUoKS0+Z2V0RWxlbWVudFR5cGUoKTsKLSAgICAgICAgIEFsbG9jYUluc3QgKkFsbG9j YSA9IG5ldyBBbGxvY2FJbnN0KEVsZW1UeSwgMCwgR1YtPmdldE5hbWUoKSArICIubG9jYWwiLCAm Rmlyc3RJKTsKLS0gICAgICAgIEFsbG9jYS0+c2V0QWxpZ25tZW50KGxsdm06Ok1heWJlQWxpZ24o R1YtPmdldEFsaWdubWVudCgpKSk7Ci0rICAgICAgICBBbGxvY2EtPnNldEFsaWdubWVudChsbHZt OjpNYXliZUFsaWduKEdWLT5nZXRBbGlnbm1lbnQoKSkudmFsdWVPck9uZSgpKTsKLSsKLSAgICAg ICAgIGlmICghaXNhPFVuZGVmVmFsdWU+KEdWLT5nZXRJbml0aWFsaXplcigpKSkKLSAgICAgICAg ICAgICBuZXcgU3RvcmVJbnN0KEdWLT5nZXRJbml0aWFsaXplcigpLCBBbGxvY2EsICZGaXJzdEkp OwotIAotZGlmZiAtLWdpdCBhL3NyYy9vcHQuY3BwIGIvc3JjL29wdC5jcHAKLWluZGV4IGQ1OGQ3 N2Y3My4uMTc4OWI4NDc2IDEwMDY0NAotLS0tIGEvc3JjL29wdC5jcHAKLSsrKyBiL3NyYy9vcHQu Y3BwCi1AQCAtMjg5OSwxNSArMjg5OSwxNyBAQCBzdGF0aWMgbGx2bTo6RnVuY3Rpb24gKmxHZW5Y TWFza2VkSW50OEluc3QobGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QsIGJvb2wgaXNTdG9yZQotIHN0 YXRpYyBsbHZtOjpDYWxsSW5zdCAqbEdlblhTdG9yZUluc3QobGx2bTo6VmFsdWUgKnZhbCwgbGx2 bTo6VmFsdWUgKnB0ciwgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QpIHsKLSAgICAgQXNzZXJ0KGct PnRhcmdldC0+aXNHZW5YVGFyZ2V0KCkpOwotICAgICBBc3NlcnQobGx2bTo6aXNhPGxsdm06OlZl Y3RvclR5cGU+KHZhbC0+Z2V0VHlwZSgpKSk7Ci0tICAgIEFzc2VydChsbHZtOjppc1Bvd2VyT2Yy XzMyKHZhbC0+Z2V0VHlwZSgpLT5nZXRWZWN0b3JOdW1FbGVtZW50cygpKSk7Ci0tICAgIEFzc2Vy dCh2YWwtPmdldFR5cGUoKS0+Z2V0UHJpbWl0aXZlU2l6ZUluQml0cygpIC8gOCA8PSA4ICogT1dP UkQpOwotKwotKyAgICBsbHZtOjpWZWN0b3JUeXBlICp2YWxWZWNUeXBlID0gbGx2bTo6ZHluX2Nh c3Q8bGx2bTo6VmVjdG9yVHlwZT4odmFsLT5nZXRUeXBlKCkpOwotKyAgICBBc3NlcnQobGx2bTo6 aXNQb3dlck9mMl8zMih2YWxWZWNUeXBlLT5nZXROdW1FbGVtZW50cygpKSk7Ci0rICAgIEFzc2Vy dCh2YWxWZWNUeXBlLT5nZXRQcmltaXRpdmVTaXplSW5CaXRzKCkgLyA4IDw9IDggKiBPV09SRCk7 Ci0gCi0gICAgIC8vIFRoZSBkYXRhIHdyaXRlIG9mIHN2bSBzdG9yZSBtdXN0IGhhdmUgYSBzaXpl IHRoYXQgaXMgYSBwb3dlciBvZiB0d28gZnJvbSAxNiB0byAxMjgKLSAgICAgLy8gYnl0ZXMuIEhv d2V2ZXIgZm9yIGludDggdHlwZSBhbmQgc2ltZCB3aWR0aCA9IDgsIHRoZSBkYXRhIHdyaXRlIHNp emUgaXMgOC4KLSAgICAgLy8gU28gd2UgdXNlIG1hc2tlZCBzdG9yZSBmdW5jdGlvbiBoZXJlIGlu c3RlYWQgb2Ygc3ZtIHN0b3JlIHdoaWNoIHByb2Nlc3MgaW50OCB0eXBlCi0gICAgIC8vIGNvcnJl Y3RseS4KLS0gICAgaWYgKHZhbC0+Z2V0VHlwZSgpLT5nZXRQcmltaXRpdmVTaXplSW5CaXRzKCkg LyA4IDwgMTYpIHsKLS0gICAgICAgIEFzc2VydCh2YWwtPmdldFR5cGUoKS0+Z2V0U2NhbGFyVHlw ZSgpID09IExMVk1UeXBlczo6SW50OFR5cGUpOwotKyAgICBpZiAodmFsVmVjVHlwZS0+Z2V0UHJp bWl0aXZlU2l6ZUluQml0cygpIC8gOCA8IDE2KSB7Ci0rICAgICAgICBBc3NlcnQodmFsVmVjVHlw ZS0+Z2V0U2NhbGFyVHlwZSgpID09IExMVk1UeXBlczo6SW50OFR5cGUpOwotICAgICAgICAgaWYg KGxsdm06OkZ1bmN0aW9uICptYXNrZWRGdW5jID0gbEdlblhNYXNrZWRJbnQ4SW5zdChpbnN0LCB0 cnVlKSkKLSAgICAgICAgICAgICByZXR1cm4gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6Q2FsbEluc3Q+ KGxDYWxsSW5zdChtYXNrZWRGdW5jLCBwdHIsIHZhbCwgTExWTU1hc2tBbGxPbiwgIiIpKTsKLSAg ICAgICAgIGVsc2UgewotQEAgLTI5MjMsMTUgKzI5MjUsMTcgQEAgc3RhdGljIGxsdm06OkNhbGxJ bnN0ICpsR2VuWFN0b3JlSW5zdChsbHZtOjpWYWx1ZSAqdmFsLCBsbHZtOjpWYWx1ZSAqcHRyLCBs bHZtOjoKLSAKLSBzdGF0aWMgbGx2bTo6Q2FsbEluc3QgKmxHZW5YTG9hZEluc3QobGx2bTo6VmFs dWUgKnB0ciwgbGx2bTo6VHlwZSAqcmV0VHlwZSwgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QpIHsK LSAgICAgQXNzZXJ0KGxsdm06OmlzYTxsbHZtOjpWZWN0b3JUeXBlPihyZXRUeXBlKSk7Ci0tICAg IEFzc2VydChsbHZtOjppc1Bvd2VyT2YyXzMyKHJldFR5cGUtPmdldFZlY3Rvck51bUVsZW1lbnRz KCkpKTsKLS0gICAgQXNzZXJ0KHJldFR5cGUtPmdldFByaW1pdGl2ZVNpemVJbkJpdHMoKSk7Ci0t ICAgIEFzc2VydChyZXRUeXBlLT5nZXRQcmltaXRpdmVTaXplSW5CaXRzKCkgLyA4IDw9IDggKiBP V09SRCk7Ci0rCi0rICAgIGxsdm06OlZlY3RvclR5cGUgKnJldFZlY1R5cGUgPSBsbHZtOjpkeW5f Y2FzdDxsbHZtOjpWZWN0b3JUeXBlPihyZXRUeXBlKTsKLSsgICAgQXNzZXJ0KGxsdm06OmlzUG93 ZXJPZjJfMzIocmV0VmVjVHlwZS0+Z2V0TnVtRWxlbWVudHMoKSkpOwotKyAgICBBc3NlcnQocmV0 VmVjVHlwZS0+Z2V0UHJpbWl0aXZlU2l6ZUluQml0cygpKTsKLSsgICAgQXNzZXJ0KHJldFZlY1R5 cGUtPmdldFByaW1pdGl2ZVNpemVJbkJpdHMoKSAvIDggPD0gOCAqIE9XT1JEKTsKLSAgICAgLy8g VGhlIGRhdGEgcmVhZCBvZiBzdm0gbG9hZCBtdXN0IGhhdmUgYSBzaXplIHRoYXQgaXMgYSBwb3dl ciBvZiB0d28gZnJvbSAxNiB0byAxMjgKLSAgICAgLy8gYnl0ZXMuIEhvd2V2ZXIgZm9yIGludDgg dHlwZSBhbmQgc2ltZCB3aWR0aCA9IDgsIHRoZSBkYXRhIHJlYWQgc2l6ZSBpcyA4LgotICAgICAv LyBTbyB3ZSB1c2UgbWFza2VkIGxvYWQgZnVuY3Rpb24gaGVyZSBpbnN0ZWFkIG9mIHN2bSBsb2Fk IHdoaWNoIHByb2Nlc3MgaW50OCB0eXBlCi0gICAgIC8vIGNvcnJlY3RseS4KLS0gICAgaWYgKHJl dFR5cGUtPmdldFByaW1pdGl2ZVNpemVJbkJpdHMoKSAvIDggPCAxNikgewotLSAgICAgICAgQXNz ZXJ0KHJldFR5cGUtPmdldFNjYWxhclR5cGUoKSA9PSBMTFZNVHlwZXM6OkludDhUeXBlKTsKLSsg ICAgaWYgKHJldFZlY1R5cGUtPmdldFByaW1pdGl2ZVNpemVJbkJpdHMoKSAvIDggPCAxNikgewot KyAgICAgICAgQXNzZXJ0KHJldFZlY1R5cGUtPmdldFNjYWxhclR5cGUoKSA9PSBMTFZNVHlwZXM6 OkludDhUeXBlKTsKLSAgICAgICAgIGlmIChsbHZtOjpGdW5jdGlvbiAqbWFza2VkRnVuYyA9IGxH ZW5YTWFza2VkSW50OEluc3QoaW5zdCwgZmFsc2UpKQotICAgICAgICAgICAgIHJldHVybiBsbHZt OjpkeW5fY2FzdDxsbHZtOjpDYWxsSW5zdD4obENhbGxJbnN0KG1hc2tlZEZ1bmMsIHB0ciwgTExW TU1hc2tBbGxPbiwgIiIpKTsKLSAgICAgICAgIGVsc2UgewotQEAgLTU2MjIsMTUgKzU2MjYsMjQg QEAgc3RhdGljIGJvb2wgbFZlY3Rvcml6ZUdFUHMobGx2bTo6VmFsdWUgKnB0ciwgc3RkOjp2ZWN0 b3I8UHRyVXNlPiAmcHRyVXNlcywgc3RkOjoKLSAgICAgICAgIGxsdm06OlB0clRvSW50SW5zdCAq cHRyVG9JbnQgPQotICAgICAgICAgICAgIG5ldyBsbHZtOjpQdHJUb0ludEluc3QocHRyLCBMTFZN VHlwZXM6OkludDY0VHlwZSwgInZlY3Rvcml6ZWRfcHRydG9pbnQiLCBpbnNlcnRCZWZvcmUpOwot ICAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmFkZHIgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6 Q3JlYXRlQWRkKHB0clRvSW50LCBvZmZzZXQsICJ2ZWN0b3JpemVkX2FkZHJlc3MiLCBpbnNlcnRC ZWZvcmUpOwotKyNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFfMAotKyAgICAg ICAgbGx2bTo6VHlwZSAqcmV0VHlwZSA9IGxsdm06OkZpeGVkVmVjdG9yVHlwZTo6Z2V0KHNjYWxh cl90eXBlLCByZXFTaXplIC8gdF9zaXplKTsKLSsjZWxzZQotICAgICAgICAgbGx2bTo6VHlwZSAq cmV0VHlwZSA9IGxsdm06OlZlY3RvclR5cGU6OmdldChzY2FsYXJfdHlwZSwgcmVxU2l6ZSAvIHRf c2l6ZSk7Ci0rI2VuZGlmCi0gICAgICAgICBsbHZtOjpGdW5jdGlvbiAqZm4gPSBsbHZtOjpHZW5Y SW50cmluc2ljOjpnZXRHZW5YRGVjbGFyYXRpb24oCi0gICAgICAgICAgICAgbS0+bW9kdWxlLCBs bHZtOjpHZW5YSW50cmluc2ljOjpnZW54X3N2bV9ibG9ja19sZF91bmFsaWduZWQsIHtyZXRUeXBl LCBhZGRyLT5nZXRUeXBlKCl9KTsKLSAgICAgICAgIGxsdm06Okluc3RydWN0aW9uICpsZCA9IGxs dm06OkNhbGxJbnN0OjpDcmVhdGUoZm4sIHthZGRyfSwgInZlY3Rvcml6ZWRfbGQiLCBpbnNlcnRC ZWZvcmUpOwotIAotICAgICAgICAgaWYgKGxvYWRpbmdQdHIpIHsKLSAgICAgICAgICAgICAvLyBD YXN0IGludCB0byBwdHIgdmlhIGludHRvcHRyCi0rI2lmIElTUENfTExWTV9WRVJTSU9OID49IElT UENfTExWTV8xMV8wCi0rICAgICAgICAgICAgbGQgPSBuZXcgbGx2bTo6SW50VG9QdHJJbnN0KGxk LCBsbHZtOjpGaXhlZFZlY3RvclR5cGU6OmdldChvcmlnaW5hbFR5cGUsIHJlcVNpemUgLyB0X3Np emUpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmVjdG9yaXpl ZF9pbnR0b3B0ciIsIGluc2VydEJlZm9yZSk7Ci0rI2Vsc2UKLSAgICAgICAgICAgICBsZCA9IG5l dyBsbHZtOjpJbnRUb1B0ckluc3QobGQsIGxsdm06OlZlY3RvclR5cGU6OmdldChvcmlnaW5hbFR5 cGUsIHJlcVNpemUgLyB0X3NpemUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAidmVjdG9yaXplZF9pbnR0b3B0ciIsIGluc2VydEJlZm9yZSk7Ci0rI2VuZGlmCi0g ICAgICAgICB9Ci0gCi0gICAgICAgICAvLyBTY2FsYXIgZXh0cmFjdHMgZm9yIGFsbCBsb2FkZWQg ZWxlbWVudHMKLUBAIC02MTYwLDE5ICs2MTczLDM0IEBAIGJvb2wgUmVwbGFjZUxMVk1JbnRyaW5z aWNzOjpydW5PbkJhc2ljQmxvY2sobGx2bTo6QmFzaWNCbG9jayAmYmIpIHsKLSAgICAgICAgIGxs dm06Okluc3RydWN0aW9uICppbnN0ID0gJipJOwotICAgICAgICAgaWYgKGxsdm06OkNhbGxJbnN0 ICpjaSA9IGxsdm06OmR5bl9jYXN0PGxsdm06OkNhbGxJbnN0PihpbnN0KSkgewotICAgICAgICAg ICAgIGxsdm06OkZ1bmN0aW9uICpmdW5jID0gY2ktPmdldENhbGxlZEZ1bmN0aW9uKCk7Ci0tICAg ICAgICAgICAgaWYgKGZ1bmMgJiYgZnVuYy0+Z2V0TmFtZSgpID09ICJsbHZtLnRyYXAiKSB7Ci0r ICAgICAgICAgICAgaWYgKGZ1bmMgJiYgZnVuYy0+Z2V0TmFtZSgpLmVxdWFscygibGx2bS50cmFw IikpIHsKLSAgICAgICAgICAgICAgICAgbGx2bTo6VHlwZSAqYXJnVHlwZXNbXSA9IHtMTFZNVHlw ZXM6OkludDFWZWN0b3JUeXBlLCBMTFZNVHlwZXM6OkludDE2VmVjdG9yVHlwZX07Ci0gICAgICAg ICAgICAgICAgIC8vIERlc2NyaXB0aW9uIG9mIHBhcmFtZXRlcnMgZm9yIGdlbnhfcmF3X3NlbmRf bm9yZXN1bHQgY2FuIGJlIGZvdW5kIGluIHRhcmdldC1nZW54LmxsCi0gICAgICAgICAgICAgICAg IGF1dG8gRm4gPSArbGx2bTo6R2VuWEludHJpbnNpYzo6Z2V0R2VuWERlY2xhcmF0aW9uKAotICAg ICAgICAgICAgICAgICAgICAgbS0+bW9kdWxlLCBsbHZtOjpHZW5YSW50cmluc2ljOjpnZW54X3Jh d19zZW5kX25vcmVzdWx0LCBhcmdUeXBlcyk7Ci0gICAgICAgICAgICAgICAgIGxsdm06OlNtYWxs VmVjdG9yPGxsdm06OlZhbHVlICosIDg+IEFyZ3M7Ci0gICAgICAgICAgICAgICAgIEFyZ3MucHVz aF9iYWNrKGxsdm06OkNvbnN0YW50SW50OjpnZXQoTExWTVR5cGVzOjpJbnQzMlR5cGUsIDApKTsK LS0gICAgICAgICAgICAgICAgQXJncy5wdXNoX2JhY2sobGx2bTo6Q29uc3RhbnRWZWN0b3I6Omdl dFNwbGF0KGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yV2lkdGgoKSwKLS0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OkNv bnN0YW50SW50OjpnZXRUcnVlKCpnLT5jdHgpKSk7Ci0rICAgICAgICAgICAgICAgIEFyZ3MucHVz aF9iYWNrKGxsdm06OkNvbnN0YW50VmVjdG9yOjpnZXRTcGxhdCgKLSsjaWYgSVNQQ19MTFZNX1ZF UlNJT04gPCBJU1BDX0xMVk1fMTFfMAotKyAgICAgICAgICAgICAgICAgICAgZy0+dGFyZ2V0LT5n ZXROYXRpdmVWZWN0b3JXaWR0aCgpLAotKyNlbGlmIElTUENfTExWTV9WRVJTSU9OID09IElTUENf TExWTV8xMV8wCi0rICAgICAgICAgICAgICAgICAgICB7c3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50 PihnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvcldpZHRoKCkpLCBmYWxzZX0sCi0rI2Vsc2UgLy8g TExWTSAxMi4wKwotKyAgICAgICAgICAgICAgICAgICAgbGx2bTo6RWxlbWVudENvdW50OjpnZXQo c3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvcldpZHRo KCkpLCBmYWxzZSksCi0rI2VuZGlmCi0rICAgICAgICAgICAgICAgICAgICBsbHZtOjpDb25zdGFu dEludDo6Z2V0VHJ1ZSgqZy0+Y3R4KSkpOwotKwotICAgICAgICAgICAgICAgICBBcmdzLnB1c2hf YmFjayhsbHZtOjpDb25zdGFudEludDo6Z2V0KExMVk1UeXBlczo6SW50MzJUeXBlLCAzOSkpOwot ICAgICAgICAgICAgICAgICBBcmdzLnB1c2hfYmFjayhsbHZtOjpDb25zdGFudEludDo6Z2V0KExM Vk1UeXBlczo6SW50MzJUeXBlLCAzMzU1NDQ0OCkpOwotICAgICAgICAgICAgICAgICBsbHZtOjpW YWx1ZSAqemVyb01hc2sgPSBsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQoCi0tICAgICAg ICAgICAgICAgICAgICBnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvcldpZHRoKCksIGxsdm06OkNv bnN0YW50OjpnZXROdWxsVmFsdWUobGx2bTo6VHlwZTo6Z2V0SW50MTZUeSgqZy0+Y3R4KSkpOwot KyNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMV8wCi0rICAgICAgICAgICAgICAg ICAgICBnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvcldpZHRoKCksCi0rI2VsaWYgSVNQQ19MTFZN X1ZFUlNJT04gPT0gSVNQQ19MTFZNXzExXzAKLSsgICAgICAgICAgICAgICAgICAgIHtzdGF0aWNf Y2FzdDx1bnNpZ25lZCBpbnQ+KGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yV2lkdGgoKSksIGZh bHNlfSwKLSsjZWxzZSAvLyBMTFZNIDEyLjArCi0rICAgICAgICAgICAgICAgICAgICBsbHZtOjpF bGVtZW50Q291bnQ6OmdldChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGctPnRhcmdldC0+Z2V0 TmF0aXZlVmVjdG9yV2lkdGgoKSksIGZhbHNlKSwKLSsjZW5kaWYKLSsgICAgICAgICAgICAgICAg ICAgIGxsdm06OkNvbnN0YW50OjpnZXROdWxsVmFsdWUobGx2bTo6VHlwZTo6Z2V0SW50MTZUeSgq Zy0+Y3R4KSkpOwotICAgICAgICAgICAgICAgICBBcmdzLnB1c2hfYmFjayh6ZXJvTWFzayk7Ci0g Ci0gICAgICAgICAgICAgICAgIGxsdm06Okluc3RydWN0aW9uICpuZXdJbnN0ID0gbGx2bTo6Q2Fs bEluc3Q6OkNyZWF0ZShGbiwgQXJncywgY2ktPmdldE5hbWUoKSk7Ci1AQCAtNjE4MSw3ICs2MjA5 LDcgQEAgYm9vbCBSZXBsYWNlTExWTUludHJpbnNpY3M6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpC YXNpY0Jsb2NrICZiYikgewotICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWRBbnkgPSB0cnVl OwotICAgICAgICAgICAgICAgICAgICAgZ290byByZXN0YXJ0OwotICAgICAgICAgICAgICAgICB9 Ci0tICAgICAgICAgICAgfSBlbHNlIGlmIChmdW5jICYmIGZ1bmMtPmdldE5hbWUoKSA9PSAibGx2 bS5hc3N1bWUiKSB7Ci0rICAgICAgICAgICAgfSBlbHNlIGlmIChmdW5jICYmIGZ1bmMtPmdldE5h bWUoKS5lcXVhbHMoImxsdm0uYXNzdW1lIikpIHsKLSAgICAgICAgICAgICAgICAgY2ktPmVyYXNl RnJvbVBhcmVudCgpOwotICAgICAgICAgICAgICAgICBtb2RpZmllZEFueSA9IHRydWU7Ci0gICAg ICAgICAgICAgICAgIGdvdG8gcmVzdGFydDsKLUBAIC02MzM1LDcgKzYzNjMsNyBAQCBib29sIENo ZWNrVW5zdXBwb3J0ZWRJbnN0czo6cnVuT25CYXNpY0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sgJmJi KSB7Ci0gICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgIGZvciAoaW50IGkg PSAwOyBpIDwgdW5zdXBwb3J0ZWRGdW5jcy5zaXplKCk7IGkrKykgewotICAgICAgICAgICAgICAg ICBzdGQ6OnNtYXRjaCBtYXRjaDsKLS0gICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgZnVuY05h bWUgPSBmdW5jLT5nZXROYW1lKCk7Ci0rICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGZ1bmNO YW1lID0gZnVuYy0+Z2V0TmFtZSgpLnN0cigpOwotICAgICAgICAgICAgICAgICBpZiAoc3RkOjpy ZWdleF9tYXRjaChmdW5jTmFtZSwgbWF0Y2gsIHVuc3VwcG9ydGVkRnVuY3NbaV0pKSB7Ci0gICAg ICAgICAgICAgICAgICAgICAvLyBXZSBmb3VuZCB1bnN1cHBvcnRlZCBmdW5jdGlvbi4gR2VuZXJh dGUgZXJyb3IgYW5kIHN0b3AgY29tcGlsYXRpb24uCi0gICAgICAgICAgICAgICAgICAgICBTb3Vy Y2VQb3MgcG9zOwotQEAgLTY0MTgsMTIgKzY0NDYsMTQgQEAgYm9vbCBNYW5nbGVPcGVuQ0xCdWls dGluczo6cnVuT25CYXNpY0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gICAgICAgICAg ICAgaWYgKGZ1bmMtPmdldE5hbWUoKS5zdGFydHN3aXRoKCJfX3NwaXJ2X29jbCIpKSB7Ci0gICAg ICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIG1hbmdsZWROYW1lOwotICAgICAgICAgICAgICAgICBs bHZtOjpUeXBlICpyZXRUeXBlID0gZnVuYy0+Z2V0UmV0dXJuVHlwZSgpOwotLSAgICAgICAgICAg ICAgICBzdGQ6OnN0cmluZyBmdW5jTmFtZSA9IGZ1bmMtPmdldE5hbWUoKTsKLSsgICAgICAgICAg ICAgICAgc3RkOjpzdHJpbmcgZnVuY05hbWUgPSBmdW5jLT5nZXROYW1lKCkuc3RyKCk7Ci0gICAg ICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPGxsdm06OlR5cGUgKj4gQXJnVHk7Ci0gICAgICAgICAg ICAgICAgIC8vIHNwaXJ2IE9wZW5DTCBidWlsdGlucyBhcmUgdXNlZCBmb3IgZG91YmxlIHR5cGVz IG9ubHkKLS0gICAgICAgICAgICAgICAgQXNzZXJ0KHJldFR5cGUtPmlzVmVjdG9yVHkoKSAmJiBy ZXRUeXBlLT5nZXRWZWN0b3JFbGVtZW50VHlwZSgpLT5pc0RvdWJsZVR5KCkgfHwKLSsgICAgICAg ICAgICAgICAgQXNzZXJ0KHJldFR5cGUtPmlzVmVjdG9yVHkoKSAmJgotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIGxsdm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KHJldFR5cGUpLT5n ZXRFbGVtZW50VHlwZSgpLT5pc0RvdWJsZVR5KCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAg IHJldFR5cGUtPmlzU2luZ2xlVmFsdWVUeXBlKCkgJiYgcmV0VHlwZS0+aXNEb3VibGVUeSgpKTsK LS0gICAgICAgICAgICAgICAgaWYgKHJldFR5cGUtPmlzVmVjdG9yVHkoKSAmJiByZXRUeXBlLT5n ZXRWZWN0b3JFbGVtZW50VHlwZSgpLT5pc0RvdWJsZVR5KCkpIHsKLSsgICAgICAgICAgICAgICAg aWYgKHJldFR5cGUtPmlzVmVjdG9yVHkoKSAmJgotKyAgICAgICAgICAgICAgICAgICAgbGx2bTo6 ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4ocmV0VHlwZSktPmdldEVsZW1lbnRUeXBlKCktPmlz RG91YmxlVHkoKSkgewotICAgICAgICAgICAgICAgICAgICAgQXJnVHkucHVzaF9iYWNrKExMVk1U eXBlczo6RG91YmxlVmVjdG9yVHlwZSk7Ci0gICAgICAgICAgICAgICAgICAgICAvLyBfRHZXSURU SCBzdWZmaXggaXMgdXNlZCBpbiB0YXJnZXQgZmlsZSB0byBkaWZmZXJlbnRpYXRlIHNjYWxhcgot ICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHZlY3RvciB2ZXJzaW9ucyBvZiBpbnRyaW5zaWNz LiBIZXJlIHdlIHJlbW92ZSB0aGlzCi1AQCAtNjUxMSw4ICs2NTQxLDE1IEBAIGxsdm06OlZhbHVl ICpGaXhBZGRyZXNzU3BhY2U6OmNhbGN1bGF0ZUdhdGhlclNjYXR0ZXJBZGRyZXNzKGxsdm06OlZh bHVlICpQdHIsIGxsCi0gCi0gICAgIC8vIENhc3Qgb2Zmc2V0cyB0byBpbnQ2NAotICAgICBPZmZz ZXRzID0gbmV3IGxsdm06OlpFeHRJbnN0KAotKyNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BD X0xMVk1fMTFfMAotKyAgICAgICAgT2Zmc2V0cywKLSsgICAgICAgIGxsdm06OkZpeGVkVmVjdG9y VHlwZTo6Z2V0KExMVk1UeXBlczo6SW50NjRUeXBlLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4oT2Zmc2V0cy0+Z2V0 VHlwZSgpKS0+Z2V0TnVtRWxlbWVudHMoKSksCi0rICAgICAgICAic3ZtX29mZnNldF96ZXh0Iiwg SW5zZXJ0QmVmb3JlKTsKLSsjZWxzZQotICAgICAgICAgT2Zmc2V0cywgbGx2bTo6VmVjdG9yVHlw ZTo6Z2V0KExMVk1UeXBlczo6SW50NjRUeXBlLCBPZmZzZXRzLT5nZXRUeXBlKCktPmdldFZlY3Rv ck51bUVsZW1lbnRzKCkpLAotICAgICAgICAgInN2bV9vZmZzZXRfemV4dCIsIEluc2VydEJlZm9y ZSk7Ci0rI2VuZGlmCi0gCi0gICAgIGlmICghbGx2bTo6aXNhPGxsdm06OkNvbnN0YW50UG9pbnRl ck51bGw+KFB0cikpIHsKLSAgICAgICAgIC8vIENhc3QgcHRyIHRvIGludDY0Ci1AQCAtNjUyMCwx MyArNjU1NywzMSBAQCBsbHZtOjpWYWx1ZSAqRml4QWRkcmVzc1NwYWNlOjpjYWxjdWxhdGVHYXRo ZXJTY2F0dGVyQWRkcmVzcyhsbHZtOjpWYWx1ZSAqUHRyLCBsbAotIAotICAgICAgICAgLy8gVmVj dG9yaXplIHB0cgotICAgICAgICAgbGx2bTo6VmFsdWUgKnVuZGVmSW5zZXJ0VmFsdWUgPQotKyNp ZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFfMAotKyAgICAgICAgICAgIGxsdm06 OlVuZGVmVmFsdWU6OmdldChsbHZtOjpGaXhlZFZlY3RvclR5cGU6OmdldCgKLSsgICAgICAgICAg ICAgICAgTExWTVR5cGVzOjpJbnQ2NFR5cGUsIGxsdm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5 cGU+KGFkZHJlc3NUeXBlKS0+Z2V0TnVtRWxlbWVudHMoKSkpOwotKyNlbHNlCi0gICAgICAgICAg ICAgbGx2bTo6VW5kZWZWYWx1ZTo6Z2V0KGxsdm06OlZlY3RvclR5cGU6OmdldChMTFZNVHlwZXM6 OkludDY0VHlwZSwgYWRkcmVzc1R5cGUtPmdldFZlY3Rvck51bUVsZW1lbnRzKCkpKTsKLSsjZW5k aWYKLSAgICAgICAgIGFkZHJlc3MgPSBsbHZtOjpJbnNlcnRFbGVtZW50SW5zdDo6Q3JlYXRlKHVu ZGVmSW5zZXJ0VmFsdWUsIGFkZHJlc3MsIExMVk1JbnQzMigwKSwgInN2bV9wdHJfaWVpIiwgSW5z ZXJ0QmVmb3JlKTsKLSAgICAgICAgIGxsdm06OkNvbnN0YW50ICp6ZXJvVmVjID0gbGx2bTo6Q29u c3RhbnRWZWN0b3I6OmdldFNwbGF0KAotKyNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExW TV8xMV8wCi0gICAgICAgICAgICAgYWRkcmVzc1R5cGUtPmdldFZlY3Rvck51bUVsZW1lbnRzKCks Ci0rI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04gPT0gSVNQQ19MTFZNXzExXzAKLSsgICAgICAgICAg ICB7bGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4oYWRkcmVzc1R5cGUpLT5nZXROdW1F bGVtZW50cygpLCBmYWxzZX0sCi0rI2Vsc2UKLSsgICAgICAgIGxsdm06OkVsZW1lbnRDb3VudDo6 Z2V0KAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6ZHluX2Nhc3Q8bGx2 bTo6Rml4ZWRWZWN0b3JUeXBlPihhZGRyZXNzVHlwZS0+Z2V0TnVtRWxlbWVudHMoKSwgZmFsc2Up LAotKyNlbmRpZgotICAgICAgICAgICAgIGxsdm06OkNvbnN0YW50OjpnZXROdWxsVmFsdWUobGx2 bTo6VHlwZTo6Z2V0SW50MzJUeShJbnNlcnRCZWZvcmUtPmdldENvbnRleHQoKSkpKTsKLSsKLSAg ICAgICAgIGxsdm06OlZhbHVlICp1bmRlZlNodWZmbGVWYWx1ZSA9Ci0rI2lmIElTUENfTExWTV9W RVJTSU9OID49IElTUENfTExWTV8xMV8wCi0rICAgICAgICAgICAgbGx2bTo6VW5kZWZWYWx1ZTo6 Z2V0KGxsdm06OkZpeGVkVmVjdG9yVHlwZTo6Z2V0KAotKyAgICAgICAgICAgICAgICBMTFZNVHlw ZXM6OkludDY0VHlwZSwgbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4oYWRkcmVzc1R5 cGUpLT5nZXROdW1FbGVtZW50cygpKSk7Ci0rI2Vsc2UKLSAgICAgICAgICAgICBsbHZtOjpVbmRl ZlZhbHVlOjpnZXQobGx2bTo6VmVjdG9yVHlwZTo6Z2V0KExMVk1UeXBlczo6SW50NjRUeXBlLCBh ZGRyZXNzVHlwZS0+Z2V0VmVjdG9yTnVtRWxlbWVudHMoKSkpOwotKyNlbmRpZgotICAgICAgICAg YWRkcmVzcyA9IG5ldyBsbHZtOjpTaHVmZmxlVmVjdG9ySW5zdChhZGRyZXNzLCB1bmRlZlNodWZm bGVWYWx1ZSwgemVyb1ZlYywgInN2bV9wdHJfc3ZpIiwgSW5zZXJ0QmVmb3JlKTsKLSAKLSAgICAg ICAgIC8vIENhbGN1bGF0ZSBhZGRyZXNzCi1AQCAtNjU1Myw5ICs2NjA4LDEyIEBAIGxsdm06Oklu c3RydWN0aW9uICpGaXhBZGRyZXNzU3BhY2U6OnByb2Nlc3NWZWN0b3JMb2FkKGxsdm06OkxvYWRJ bnN0ICpMSSkgewotICAgICBpZiAocmV0VHlwZS0+Z2V0U2NhbGFyVHlwZSgpLT5pc1BvaW50ZXJU eSgpKSB7Ci0gICAgICAgICBpc1B0ckxvYWQgPSB0cnVlOwotICAgICAgICAgYXV0byBzY2FsYXJU eXBlID0gZy0+dGFyZ2V0LT5pczMyQml0KCkgPyBMTFZNVHlwZXM6OkludDMyVHlwZSA6IExMVk1U eXBlczo6SW50NjRUeXBlOwotKyNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFf MAotKyAgICAgICAgcmV0VHlwZSA9IGxsdm06OkZpeGVkVmVjdG9yVHlwZTo6Z2V0KHNjYWxhclR5 cGUsIGxsdm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KHJldFR5cGUpLT5nZXROdW1FbGVt ZW50cygpKTsKLSsjZWxzZQotICAgICAgICAgcmV0VHlwZSA9IGxsdm06OlZlY3RvclR5cGU6Omdl dChzY2FsYXJUeXBlLCByZXRUeXBlLT5nZXRWZWN0b3JOdW1FbGVtZW50cygpKTsKLSsjZW5kaWYK LSAgICAgfQotLQotICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqcmVzID0gbEdlblhMb2FkSW5zdChw dHIsIHJldFR5cGUsIGxsdm06OmR5bl9jYXN0PGxsdm06Okluc3RydWN0aW9uPihMSSkpOwotICAg ICBBc3NlcnQocmVzKTsKLSAKLUBAIC02NTgwLDExICs2NjM4LDE2IEBAIGxsdm06Okluc3RydWN0 aW9uICpGaXhBZGRyZXNzU3BhY2U6OnByb2Nlc3NTVk1WZWN0b3JMb2FkKGxsdm06Okluc3RydWN0 aW9uICpDSSkKLSAgICAgcHRyID0gbmV3IGxsdm06OkludFRvUHRySW5zdChwdHIsIGxsdm06OlBv aW50ZXJUeXBlOjpnZXQocmV0VHlwZSwgMCksIENJLT5nZXROYW1lKCkgKyAiX2ludHRvcHRyIiwg Q0kpOwotICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqbG9hZEluc3QgPSBOVUxMOwotICNpZiBJU1BD X0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFfMAotLSAgICBsb2FkSW5zdCA9IG5ldyBsbHZt OjpMb2FkSW5zdChsbHZtOjpkeW5fY2FzdDxsbHZtOjpQb2ludGVyVHlwZT4ocHRyLT5nZXRUeXBl KCkpLT5nZXRQb2ludGVyRWxlbWVudFR5cGUoKSwgbG9hZEluc3QsCi0tICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIENJLT5nZXROYW1lKCksIChsbHZtOjpJbnN0cnVjdGlvbiAqKU5V TEwpOwotKyAgICBsb2FkSW5zdCA9IG5ldyBsbHZtOjpMb2FkSW5zdChsbHZtOjpkeW5fY2FzdDxs bHZtOjpQb2ludGVyVHlwZT4ocHRyLT5nZXRUeXBlKCkpLT5nZXRQb2ludGVyRWxlbWVudFR5cGUo KSwgcHRyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDSS0+Z2V0TmFtZSgp LCBmYWxzZSAvKiBub3Qgdm9sYXRpbGUgKi8sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxsdm06Ok1heWJlQWxpZ24oZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JBbGlnbm1l bnQoKSkudmFsdWVPck9uZSgpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo bGx2bTo6SW5zdHJ1Y3Rpb24gKilOVUxMKTsKLSAjZWxzZQotLSAgICBsb2FkSW5zdCA9IG5ldyBs bHZtOjpMb2FkSW5zdChwdHIsIENJLT5nZXROYW1lKCksIChsbHZtOjpJbnN0cnVjdGlvbiAqKU5V TEwpOwotKyAgICBsb2FkSW5zdCA9IG5ldyBsbHZtOjpMb2FkSW5zdChwdHIsIENJLT5nZXROYW1l KCksIGZhbHNlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpNYXli ZUFsaWduKGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yQWxpZ25tZW50KCkpLnZhbHVlT3JPbmUo KSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxsdm06Okluc3RydWN0aW9u ICopTlVMTCk7Ci0gI2VuZGlmCi0rCi0gICAgIEFzc2VydChsb2FkSW5zdCk7Ci0gICAgIHJldHVy biBsb2FkSW5zdDsKLSB9Ci1AQCAtNjYwNiw3ICs2NjY5LDExIEBAIGxsdm06Okluc3RydWN0aW9u ICpGaXhBZGRyZXNzU3BhY2U6OnByb2Nlc3NWZWN0b3JTdG9yZShsbHZtOjpTdG9yZUluc3QgKlNJ KSB7Ci0gICAgIC8vIE5vdGU6IGl0IGRvZXNuJ3QgbG9vayBsaWtlIGEgbm9ybWFsIGNhc2UgZm9y IEdlblggdGFyZ2V0Ci0gICAgIGlmICh2YWxUeXBlLT5nZXRTY2FsYXJUeXBlKCktPmlzUG9pbnRl clR5KCkpIHsKLSAgICAgICAgIGF1dG8gc2NhbGFyVHlwZSA9IGctPnRhcmdldC0+aXMzMkJpdCgp ID8gTExWTVR5cGVzOjpJbnQzMlR5cGUgOiBMTFZNVHlwZXM6OkludDY0VHlwZTsKLSsjaWYgSVNQ Q19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzExXzAKLSsgICAgICAgIHZhbFR5cGUgPSBsbHZt OjpGaXhlZFZlY3RvclR5cGU6OmdldChzY2FsYXJUeXBlLCBsbHZtOjpkeW5fY2FzdDxsbHZtOjpW ZWN0b3JUeXBlPih2YWxUeXBlKS0+Z2V0TnVtRWxlbWVudHMoKSk7Ci0rI2Vsc2UKLSAgICAgICAg IHZhbFR5cGUgPSBsbHZtOjpWZWN0b3JUeXBlOjpnZXQoc2NhbGFyVHlwZSwgdmFsVHlwZS0+Z2V0 VmVjdG9yTnVtRWxlbWVudHMoKSk7Ci0rI2VuZGlmCi0gICAgICAgICB2YWwgPSBuZXcgbGx2bTo6 UHRyVG9JbnRJbnN0KHZhbCwgdmFsVHlwZSwgInN2bV9zdF92YWxfcHRydG9pbnQiLCBTSSk7Ci0g ICAgIH0KLSAKLUBAIC02NjMxLDEyICs2Njk4LDggQEAgbGx2bTo6SW5zdHJ1Y3Rpb24gKkZpeEFk ZHJlc3NTcGFjZTo6cHJvY2Vzc1NWTVZlY3RvclN0b3JlKGxsdm06Okluc3RydWN0aW9uICpDSSkK LSAgICAgcHRyID0gbmV3IGxsdm06OkludFRvUHRySW5zdChwdHIsIGxsdm06OlBvaW50ZXJUeXBl OjpnZXQodmFsVHlwZSwgMCksIENJLT5nZXROYW1lKCkgKyAiX2ludHRvcHRyIiwgQ0kpOwotIAot ICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqc3RvcmVJbnN0ID0gTlVMTDsKLS0jaWYgSVNQQ19MTFZN X1ZFUlNJT04gPj0gSVNQQ19MTFZNXzExXzAKLS0gICAgbG9hZEluc3QgPSBuZXcgbGx2bTo6U3Rv cmVJbnN0KHZhbCwgbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6UG9pbnRlclR5cGU+KHB0ci0+Z2V0VHlw ZSgpKS0+Z2V0UG9pbnRlckVsZW1lbnRUeXBlKCksCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdG9yZUluc3QsIENJLT5nZXROYW1lKCksIChsbHZtOjpJbnN0cnVjdGlvbiAq KU5VTEwpOwotLSNlbHNlCi0tICAgIHN0b3JlSW5zdCA9IG5ldyBsbHZtOjpTdG9yZUluc3QodmFs LCBwdHIsIChsbHZtOjpJbnN0cnVjdGlvbiAqKU5VTEwpOwotLSNlbmRpZgotKyAgICBzdG9yZUlu c3QgPSBuZXcgbGx2bTo6U3RvcmVJbnN0KHZhbCwgcHRyLCAobGx2bTo6SW5zdHJ1Y3Rpb24gKilO VUxMLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06Ok1heWJlQWxp Z24oZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JBbGlnbm1lbnQoKSkudmFsdWVPck9uZSgpKTsK LSAgICAgQXNzZXJ0KHN0b3JlSW5zdCk7Ci0gICAgIHJldHVybiBzdG9yZUluc3Q7Ci0gfQotQEAg LTY2NDUsMTUgKzY3MDgsMTggQEAgbGx2bTo6SW5zdHJ1Y3Rpb24gKkZpeEFkZHJlc3NTcGFjZTo6 Y3JlYXRlSW50OFdyUmVnaW9uKGxsdm06OlZhbHVlICpWYWwsIGxsdm06OlYKLSAgICAgaW50IHdp ZHRoID0gZy0+dGFyZ2V0LT5nZXRWZWN0b3JXaWR0aCgpOwotIAotICAgICBsbHZtOjpWYWx1ZSAq QXJnc1s4XTsKLS0KLSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzExXzAKLSsg ICAgQXJnc1swXSA9IGxsdm06OlVuZGVmVmFsdWU6OmdldChsbHZtOjpGaXhlZFZlY3RvclR5cGU6 OmdldChMTFZNVHlwZXM6OkludDhUeXBlLCB3aWR0aCAqIDQpKTsgLy8gb2xkIHZhbHVlCi0rI2Vs c2UKLSAgICAgQXJnc1swXSA9IGxsdm06OlVuZGVmVmFsdWU6OmdldChsbHZtOjpWZWN0b3JUeXBl OjpnZXQoTExWTVR5cGVzOjpJbnQ4VHlwZSwgd2lkdGggKiA0KSk7IC8vIG9sZCB2YWx1ZQotLSAg ICBBcmdzWzFdID0gVmFsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFsdWUgdG8gc3RvcmUKLS0gICAg QXJnc1syXSA9IGxsdm06OkNvbnN0YW50SW50OjpnZXQoTExWTVR5cGVzOjpJbnQzMlR5cGUsIDAp OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZzdHJpZGUKLS0gICAgQXJnc1szXSA9 IGxsdm06OkNvbnN0YW50SW50OjpnZXQoTExWTVR5cGVzOjpJbnQzMlR5cGUsIHdpZHRoKTsgICAg ICAgICAgICAgICAgICAgICAgICAgIC8vIHdpZHRoCi0tICAgIEFyZ3NbNF0gPSBsbHZtOjpDb25z dGFudEludDo6Z2V0KExMVk1UeXBlczo6SW50MzJUeXBlLCA0KTsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAvLyBzdHJpZGUKLS0gICAgQXJnc1s1XSA9IGxsdm06OkNvbnN0YW50SW50Ojpn ZXQoTExWTVR5cGVzOjpJbnQxNlR5cGUsIDApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC8vIG9mZnNldHMKLS0gICAgQXJnc1s2XSA9IGxsdm06OkNvbnN0YW50SW50OjpnZXQoTExWTVR5 cGVzOjpJbnQzMlR5cGUsIDApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBhcmVu dCB3aWR0aCAoaWdub3JlZCkKLS0gICAgQXJnc1s3XSA9IE1hc2s7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v IG1hc2sKLSsjZW5kaWYKLSsgICAgQXJnc1sxXSA9IFZhbDsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFsdWUgdG8gc3RvcmUKLSsgICAgQXJnc1sy XSA9IGxsdm06OkNvbnN0YW50SW50OjpnZXQoTExWTVR5cGVzOjpJbnQzMlR5cGUsIDApOyAgICAg Ly8gdnN0cmlkZQotKyAgICBBcmdzWzNdID0gbGx2bTo6Q29uc3RhbnRJbnQ6OmdldChMTFZNVHlw ZXM6OkludDMyVHlwZSwgd2lkdGgpOyAvLyB3aWR0aAotKyAgICBBcmdzWzRdID0gbGx2bTo6Q29u c3RhbnRJbnQ6OmdldChMTFZNVHlwZXM6OkludDMyVHlwZSwgNCk7ICAgICAvLyBzdHJpZGUKLSsg ICAgQXJnc1s1XSA9IGxsdm06OkNvbnN0YW50SW50OjpnZXQoTExWTVR5cGVzOjpJbnQxNlR5cGUs IDApOyAgICAgLy8gb2Zmc2V0cwotKyAgICBBcmdzWzZdID0gbGx2bTo6Q29uc3RhbnRJbnQ6Omdl dChMTFZNVHlwZXM6OkludDMyVHlwZSwgMCk7ICAgICAvLyBwYXJlbnQgd2lkdGggKGlnbm9yZWQp Ci0rICAgIEFyZ3NbN10gPSBNYXNrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8vIG1hc2sKLSAKLSAgICAgbGx2bTo6VHlwZSAqVHlzWzRdOwotIAotQEAg LTY3MDgsNyArNjc3NCwxMiBAQCBsbHZtOjpJbnN0cnVjdGlvbiAqRml4QWRkcmVzc1NwYWNlOjpw cm9jZXNzR2F0aGVyU2NhdHRlclByaXZhdGUobGx2bTo6Q2FsbEluc3QgKgotICAgICAgICAgcmV0 dXJuIE5VTEw7Ci0gCi0gICAgIGxsdm06OlZhbHVlICphZGRyZXNzID0gY2FsY3VsYXRlR2F0aGVy U2NhdHRlckFkZHJlc3MocHRyLCBvZmZzZXRzLCBDSSk7Ci0rI2lmIElTUENfTExWTV9WRVJTSU9O ID49IElTUENfTExWTV8xMV8wCi0rICAgIGxsdm06OlR5cGUgKmk4VmVjVHlwZSA9IGxsdm06OkZp eGVkVmVjdG9yVHlwZTo6Z2V0KExMVk1UeXBlczo6SW50OFR5cGUsIHdpZHRoICogNCk7Ci0rI2Vs c2UKLSAgICAgbGx2bTo6VHlwZSAqaThWZWNUeXBlID0gbGx2bTo6VmVjdG9yVHlwZTo6Z2V0KExM Vk1UeXBlczo6SW50OFR5cGUsIHdpZHRoICogNCk7Ci0rI2VuZGlmCi0rCi0gICAgIGJvb2wgaXNJ bnQ4ID0gKHZhbHVlLT5nZXRUeXBlKCktPmdldFNjYWxhclR5cGUoKSA9PSBMTFZNVHlwZXM6Oklu dDhUeXBlKTsKLSAKLSAgICAgQXNzZXJ0KGFkZHJlc3MgJiYgIkJhZCBnYXRoZXIvc2NhdHRlciBh ZGRyZXNzISIpOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwNi5w YXRjaCBiL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDYucGF0Y2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IGE4MjllYTQ4MzkxZS4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3Br Z3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjYg KzAsMCBAQAotRnJvbSBiYjNmNDkzZDFmYmQ0NWM3OWUxZDlkZWU2N2EwNDMwYmEzMTNlYWFkIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQXJpbmEgTmVzaGx5YWV2YSA8YXJpbmEubmVz aGx5YWV2YUBpbnRlbC5jb20+Ci1EYXRlOiBUdWUsIDE5IEphbiAyMDIxIDExOjA3OjMzIC0wODAw Ci1TdWJqZWN0OiBbUEFUQ0hdIEZpeGVkIGlmZGVmcyBmb3IgTExWTV8xMQotCi0tLS0KLSBzcmMv Y3R4LmNwcCB8ICA2ICsrKy0tLQotIHNyYy9vcHQuY3BwIHwgMTggKysrKysrKysrLS0tLS0tLS0t Ci0gMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKLQot ZGlmZiAtLWdpdCBhL3NyYy9jdHguY3BwIGIvc3JjL2N0eC5jcHAKLWluZGV4IDJhNzJlNjgzNy4u NTI3YTAyZjMwIDEwMDY0NAotLS0tIGEvc3JjL2N0eC5jcHAKLSsrKyBiL3NyYy9jdHguY3BwCi1A QCAtMTY5MSw3ICsxNjkxLDcgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OlNt ZWFyVW5pZm9ybShsbHZtOjpWYWx1ZSAqdmFsdWUsIGNvbnN0IGxsdm06OlQKLSAgICAgaWYgKGxs dm06OkNvbnN0YW50ICpjb25zdF92YWwgPSBsbHZtOjpkeW5fY2FzdDxsbHZtOjpDb25zdGFudD4o dmFsdWUpKSB7Ci0gI2lmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzExXzAKLSAgICAg ICAgIHJldCA9IGxsdm06OkNvbnN0YW50VmVjdG9yOjpnZXRTcGxhdChnLT50YXJnZXQtPmdldFZl Y3RvcldpZHRoKCksIGNvbnN0X3ZhbCk7Ci0tI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04gPT0gSVNQ Q19MTFZNXzExXzAKLSsjZWxpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMl8wCi0g ICAgICAgICByZXQgPQotICAgICAgICAgICAgIGxsdm06OkNvbnN0YW50VmVjdG9yOjpnZXRTcGxh dCh7c3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihnLT50YXJnZXQtPmdldFZlY3RvcldpZHRoKCkp LCBmYWxzZX0sIGNvbnN0X3ZhbCk7Ci0gI2Vsc2UgLy8gTExWTSAxMi4wKwotQEAgLTMxNDgsNyAr MzE0OCw3IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpCcm9hZGNhc3RWYWx1 ZShsbHZtOjpWYWx1ZSAqdiwgbGx2bTo6VHlwZSAqdmVjCi0gI2lmIElTUENfTExWTV9WRVJTSU9O IDwgSVNQQ19MTFZNXzExXzAKLSAgICAgbGx2bTo6Q29uc3RhbnQgKnplcm9WZWMgPSBsbHZtOjpD b25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQoCi0gICAgICAgICB2ZWNUeXBlLT5nZXRWZWN0b3JOdW1F bGVtZW50cygpLCBsbHZtOjpDb25zdGFudDo6Z2V0TnVsbFZhbHVlKGxsdm06OlR5cGU6OmdldElu dDMyVHkoKmctPmN0eCkpKTsKLS0jZWxpZiBJU1BDX0xMVk1fVkVSU0lPTiA9PSBJU1BDX0xMVk1f MTFfMAotKyNlbGlmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzEyXzAKLSAgICAgbGx2 bTo6Q29uc3RhbnQgKnplcm9WZWMgPQotICAgICAgICAgbGx2bTo6Q29uc3RhbnRWZWN0b3I6Omdl dFNwbGF0KHtzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHR5LT5nZXROdW1FbGVtZW50cygpKSwg ZmFsc2V9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OkNv bnN0YW50OjpnZXROdWxsVmFsdWUobGx2bTo6VHlwZTo6Z2V0SW50MzJUeSgqZy0+Y3R4KSkpOwot QEAgLTM2ODgsNyArMzY4OCw3IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpH ZW5YU2ltZENGUHJlZGljYXRlKGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6Ci0gI2lmIElTUENf TExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzExXzAKLSAgICAgICAgIGRlZmF1bHRzID0gbGx2bTo6 Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0KHZ0LT5nZXRWZWN0b3JOdW1FbGVtZW50cygpLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6Q29u c3RhbnQ6OmdldE51bGxWYWx1ZSh2dC0+Z2V0RWxlbWVudFR5cGUoKSkpOwotLSNlbGlmIElTUENf TExWTV9WRVJTSU9OID09IElTUENfTExWTV8xMV8wCi0rI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04g PCBJU1BDX0xMVk1fMTJfMAotICAgICAgICAgZGVmYXVsdHMgPSBsbHZtOjpDb25zdGFudFZlY3Rv cjo6Z2V0U3BsYXQoe3N0YXRpY19jYXN0PHVuc2lnbmVkIGludD4odnQtPmdldE51bUVsZW1lbnRz KCkpLCBmYWxzZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBsbHZtOjpDb25zdGFudDo6Z2V0TnVsbFZhbHVlKHZ0LT5nZXRFbGVtZW50VHlwZSgp KSk7Ci0gI2Vsc2UKLWRpZmYgLS1naXQgYS9zcmMvb3B0LmNwcCBiL3NyYy9vcHQuY3BwCi1pbmRl eCAxNzg5Yjg0NzYuLjNmZjE5MWEwYSAxMDA2NDQKLS0tLSBhL3NyYy9vcHQuY3BwCi0rKysgYi9z cmMvb3B0LmNwcAotQEAgLTEwNDUsNyArMTA0NSw3IEBAIGJvb2wgSW50cmluc2ljc09wdDo6cnVu T25CYXNpY0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gICAgICAgICAgICAgICAgICAg ICBhbGlnbiA9IGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yQWxpZ25tZW50KCk7Ci0gICAgICAg ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgIGFsaWduID0gY2FsbEluc3QtPmdl dENhbGxlZEZ1bmN0aW9uKCkgPT0gYXZ4TWFza2VkTG9hZDMyID8gNCA6IDg7Ci0tI2lmIElTUENf TExWTV9WRVJTSU9OID09IElTUENfTExWTV8xMF8wCi0rI2lmIElTUENfTExWTV9WRVJTSU9OIDwg SVNQQ19MTFZNXzExXzAKLSAgICAgICAgICAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmxvYWRJ bnN0ID0KLSAgICAgICAgICAgICAgICAgICAgIG5ldyBsbHZtOjpMb2FkSW5zdChjYXN0UHRyLCBs bHZtOjpUd2luZShjYWxsSW5zdC0+Z2V0QXJnT3BlcmFuZCgwKS0+Z2V0TmFtZSgpKSArICJfbG9h ZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgLyogbm90 IHZvbGF0aWxlICovLCBsbHZtOjpNYXliZUFsaWduKGFsaWduKSwgKGxsdm06Okluc3RydWN0aW9u ICopTlVMTCk7Ci1AQCAtMTQ3Miw3ICsxNDcyLDcgQEAgc3RhdGljIGxsdm06OlZhbHVlICpsR2V0 QmFzZVB0ckFuZE9mZnNldHMobGx2bTo6VmFsdWUgKnB0cnMsIGxsdm06OlZhbHVlICoqb2Zmc2UK LSAgICAgICAgICAgICAgICAgICAgIGxsdm06OlZhbHVlICp6ZXJvTWFzayA9Ci0gI2lmIElTUENf TExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzExXzAKLSAgICAgICAgICAgICAgICAgICAgICAgICBs bHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQoY3YtPmdldFR5cGUoKS0+Z2V0VmVjdG9yTnVt RWxlbWVudHMoKSwKLS0jZWxpZiBJU1BDX0xMVk1fVkVSU0lPTiA9PSBJU1BDX0xMVk1fMTFfMAot KyNlbGlmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzEyXzAKLSAgICAgICAgICAgICAg ICAgICAgICAgICBsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQoCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHtsbHZtOjpkeW5fY2FzdDxsbHZtOjpWZWN0b3JUeXBlPihjdi0+Z2V0 VHlwZSgpKS0+Z2V0TnVtRWxlbWVudHMoKSwgZmFsc2V9LAotICNlbHNlIC8vIExMVk0gMTIuMCsK LUBAIC0xNDk1LDcgKzE0OTUsNyBAQCBzdGF0aWMgbGx2bTo6VmFsdWUgKmxHZXRCYXNlUHRyQW5k T2Zmc2V0cyhsbHZtOjpWYWx1ZSAqcHRycywgbGx2bTo6VmFsdWUgKipvZmZzZQotICAgICAgICAg ICAgICAgICAgICAgICAgIGxsdm06OlZhbHVlICp6ZXJvTWFzayA9IGxsdm06OkNvbnN0YW50VmVj dG9yOjpnZXRTcGxhdCgKLSAjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1fMTFfMAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3BfdmFyX3R5cGUtPmdldFZlY3Rvck51bUVs ZW1lbnRzKCksCi0tI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04gPT0gSVNQQ19MTFZNXzExXzAKLSsj ZWxpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMl8wCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHtsbHZtOjpkeW5fY2FzdDxsbHZtOjpWZWN0b3JUeXBlPihib3BfdmFyX3R5 cGUpLT5nZXROdW1FbGVtZW50cygpLCBmYWxzZX0sCi0gI2Vsc2UgLy8gTExWTSAxMi4wKwotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpFbGVtZW50Q291bnQ6OmdldCgKLUBAIC0y ODAzLDcgKzI4MDMsNyBAQCBzdGF0aWMgYm9vbCBsR1NUb0xvYWRTdG9yZShsbHZtOjpDYWxsSW5z dCAqY2FsbEluc3QpIHsKLSAgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqemVyb01hc2sgPQotICNp ZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMV8wCi0gICAgICAgICAgICAgICAgIGxs dm06OkNvbnN0YW50VmVjdG9yOjpnZXRTcGxhdChjYWxsSW5zdC0+Z2V0VHlwZSgpLT5nZXRWZWN0 b3JOdW1FbGVtZW50cygpLAotLSNlbGlmIElTUENfTExWTV9WRVJTSU9OID09IElTUENfTExWTV8x MV8wCi0rI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1fMTJfMAotICAgICAgICAg ICAgICAgICBsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQoCi0gICAgICAgICAgICAgICAg ICAgICB7bGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4oY2FsbEluc3QtPmdldFR5cGUo KSktPmdldE51bUVsZW1lbnRzKCksIGZhbHNlfSwKLSAKLUBAIC0zMTAwLDcgKzMxMDAsNyBAQCBz dGF0aWMgYm9vbCBsSW1wcm92ZU1hc2tlZExvYWQobGx2bTo6Q2FsbEluc3QgKmNhbGxJbnN0LCBs bHZtOjpCYXNpY0Jsb2NrOjppdGVyYQotICAgICAgICAgewotICAgICAgICAgICAgIGxsdm06OlR5 cGUgKnB0clR5cGUgPSBsbHZtOjpQb2ludGVyVHlwZTo6Z2V0KGNhbGxJbnN0LT5nZXRUeXBlKCks IDApOwotICAgICAgICAgICAgIHB0ciA9IG5ldyBsbHZtOjpCaXRDYXN0SW5zdChwdHIsIHB0clR5 cGUsICJwdHJfY2FzdF9mb3JfbG9hZCIsIGNhbGxJbnN0KTsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJ T04gPT0gSVNQQ19MTFZNXzEwXzAKLSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1f MTFfMAotICAgICAgICAgICAgIGxvYWQgPSBuZXcgbGx2bTo6TG9hZEluc3QoCi0gICAgICAgICAg ICAgICAgIHB0ciwgY2FsbEluc3QtPmdldE5hbWUoKSwgZmFsc2UgLyogbm90IHZvbGF0aWxlICov LAotICAgICAgICAgICAgICAgICBsbHZtOjpNYXliZUFsaWduKGctPm9wdC5mb3JjZUFsaWduZWRN ZW1vcnkgPyBnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvckFsaWdubWVudCgpIDogaW5mby0+YWxp Z24pCi1AQCAtMzQ1OSw3ICszNDU5LDcgQEAgbGx2bTo6VmFsdWUgKmxHRVBBbmRMb2FkKGxsdm06 OlZhbHVlICpiYXNlUHRyLCBpbnQ2NF90IG9mZnNldCwgaW50IGFsaWduLCBsbHZtOjoKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgbGx2bTo6VHlwZSAqdHlwZSkgewotICAgICBsbHZtOjpWYWx1 ZSAqcHRyID0gbEdFUEluc3QoYmFzZVB0ciwgTExWTUludDY0KG9mZnNldCksICJuZXdfYmFzZSIs IGluc2VydEJlZm9yZSk7Ci0gICAgIHB0ciA9IG5ldyBsbHZtOjpCaXRDYXN0SW5zdChwdHIsIGxs dm06OlBvaW50ZXJUeXBlOjpnZXQodHlwZSwgMCksICJwdHJfY2FzdCIsIGluc2VydEJlZm9yZSk7 Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID09IElTUENfTExWTV8xMF8wCi0rI2lmIElTUENfTExW TV9WRVJTSU9OIDwgSVNQQ19MTFZNXzExXzAKLSAgICAgcmV0dXJuIG5ldyBsbHZtOjpMb2FkSW5z dChwdHIsICJnYXRoZXJfbG9hZCIsIGZhbHNlIC8qIG5vdCB2b2xhdGlsZSAqLywgbGx2bTo6TWF5 YmVBbGlnbihhbGlnbiksIGluc2VydEJlZm9yZSk7Ci0gI2Vsc2UgLy8gTExWTSAxMS4wKwotICAg ICByZXR1cm4gbmV3IGxsdm06OkxvYWRJbnN0KGxsdm06OmR5bl9jYXN0PGxsdm06OlBvaW50ZXJU eXBlPihwdHItPmdldFR5cGUoKSktPmdldFBvaW50ZXJFbGVtZW50VHlwZSgpLCBwdHIsCi1AQCAt NjE4Myw3ICs2MTgzLDcgQEAgYm9vbCBSZXBsYWNlTExWTUludHJpbnNpY3M6OnJ1bk9uQmFzaWNC bG9jayhsbHZtOjpCYXNpY0Jsb2NrICZiYikgewotICAgICAgICAgICAgICAgICBBcmdzLnB1c2hf YmFjayhsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQoCi0gI2lmIElTUENfTExWTV9WRVJT SU9OIDwgSVNQQ19MTFZNXzExXzAKLSAgICAgICAgICAgICAgICAgICAgIGctPnRhcmdldC0+Z2V0 TmF0aXZlVmVjdG9yV2lkdGgoKSwKLS0jZWxpZiBJU1BDX0xMVk1fVkVSU0lPTiA9PSBJU1BDX0xM Vk1fMTFfMAotKyNlbGlmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzEyXzAKLSAgICAg ICAgICAgICAgICAgICAgIHtzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGctPnRhcmdldC0+Z2V0 TmF0aXZlVmVjdG9yV2lkdGgoKSksIGZhbHNlfSwKLSAjZWxzZSAvLyBMTFZNIDEyLjArCi0gICAg ICAgICAgICAgICAgICAgICBsbHZtOjpFbGVtZW50Q291bnQ6OmdldChzdGF0aWNfY2FzdDx1bnNp Z25lZCBpbnQ+KGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yV2lkdGgoKSksIGZhbHNlKSwKLUBA IC02MTk1LDcgKzYxOTUsNyBAQCBib29sIFJlcGxhY2VMTFZNSW50cmluc2ljczo6cnVuT25CYXNp Y0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gICAgICAgICAgICAgICAgIGxsdm06OlZh bHVlICp6ZXJvTWFzayA9IGxsdm06OkNvbnN0YW50VmVjdG9yOjpnZXRTcGxhdCgKLSAjaWYgSVNQ Q19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1fMTFfMAotICAgICAgICAgICAgICAgICAgICAgZy0+ dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JXaWR0aCgpLAotLSNlbGlmIElTUENfTExWTV9WRVJTSU9O ID09IElTUENfTExWTV8xMV8wCi0rI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1f MTJfMAotICAgICAgICAgICAgICAgICAgICAge3N0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oZy0+ dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JXaWR0aCgpKSwgZmFsc2V9LAotICNlbHNlIC8vIExMVk0g MTIuMCsKLSAgICAgICAgICAgICAgICAgICAgIGxsdm06OkVsZW1lbnRDb3VudDo6Z2V0KHN0YXRp Y19jYXN0PHVuc2lnbmVkIGludD4oZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JXaWR0aCgpKSwg ZmFsc2UpLAotQEAgLTY1NjcsNyArNjU2Nyw3IEBAIGxsdm06OlZhbHVlICpGaXhBZGRyZXNzU3Bh Y2U6OmNhbGN1bGF0ZUdhdGhlclNjYXR0ZXJBZGRyZXNzKGxsdm06OlZhbHVlICpQdHIsIGxsCi0g ICAgICAgICBsbHZtOjpDb25zdGFudCAqemVyb1ZlYyA9IGxsdm06OkNvbnN0YW50VmVjdG9yOjpn ZXRTcGxhdCgKLSAjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1fMTFfMAotICAgICAg ICAgICAgIGFkZHJlc3NUeXBlLT5nZXRWZWN0b3JOdW1FbGVtZW50cygpLAotLSNlbGlmIElTUENf TExWTV9WRVJTSU9OID09IElTUENfTExWTV8xMV8wCi0rI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04g PCBJU1BDX0xMVk1fMTJfMAotICAgICAgICAgICAgIHtsbHZtOjpkeW5fY2FzdDxsbHZtOjpWZWN0 b3JUeXBlPihhZGRyZXNzVHlwZSktPmdldE51bUVsZW1lbnRzKCksIGZhbHNlfSwKLSAjZWxzZQot ICAgICAgICAgbGx2bTo6RWxlbWVudENvdW50OjpnZXQoCmRpZmYgLS1naXQgYS9zcmNwa2dzL2lz cGMvcGF0Y2hlcy9sbHZtMTItMDA3LnBhdGNoIGIvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEy LTAwNy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWI5NzVmODk2YzdlLi4w MDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwNy5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDE2MCArMCwwIEBACi1Gcm9tIDYyZjVhNmMzN2JmMjZmYzI1YTdj ZjgxODY4MDUyZDM0NzI4NzQ2MTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBcmlu YSBOZXNobHlhZXZhIDxhcmluYS5uZXNobHlhZXZhQGludGVsLmNvbT4KLURhdGU6IFR1ZSwgMjMg TWFyIDIwMjEgMjM6MDc6MzAgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gRG8gbm90IGdlbmVyYXRl IGZ1bmN0aW9uIG1hc2sgd2hlbiBpdCBpcyBub3QgcmVxdWlyZWQKLQotLS0tCi0gc3JjL2N0eC5j cHAgICAgICAgICAgICAgICAgICAgIHwgMzkgKysrKysrKysrKysrKystLS0tLS0tCi0gdGVzdHMv bGl0LXRlc3RzL2Z1bGxfbWFzay5pc3BjIHwgNjMgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgOTAgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25z KC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2xpdC10ZXN0cy9mdWxsX21hc2suaXNwYwot Ci1kaWZmIC0tZ2l0IGEvc3JjL2N0eC5jcHAgYi9zcmMvY3R4LmNwcAotaW5kZXggNTI3YTAyZjMw Li45ZTc3NWZjNWMgMTAwNjQ0Ci0tLS0gYS9zcmMvY3R4LmNwcAotKysrIGIvc3JjL2N0eC5jcHAK LUBAIC0yMzEsMTAgKzIzMSwxOCBAQCBGdW5jdGlvbkVtaXRDb250ZXh0OjpGdW5jdGlvbkVtaXRD b250ZXh0KEZ1bmN0aW9uICpmdW5jLCBTeW1ib2wgKmZ1blN5bSwgbGx2bTo6RgotICAgICBpbnRl cm5hbE1hc2tQb2ludGVyID0gQWxsb2NhSW5zdChMTFZNVHlwZXM6Ok1hc2tUeXBlLCAiaW50ZXJu YWxfbWFza19tZW1vcnkiKTsKLSAgICAgU3RvcmVJbnN0KExMVk1NYXNrQWxsT24sIGludGVybmFs TWFza1BvaW50ZXIpOwotIAotLSAgICBmdW5jdGlvbk1hc2tWYWx1ZSA9IExMVk1NYXNrQWxsT247 Ci0tCi0tICAgIGZ1bGxNYXNrUG9pbnRlciA9IEFsbG9jYUluc3QoTExWTVR5cGVzOjpNYXNrVHlw ZSwgImZ1bGxfbWFza19tZW1vcnkiKTsKLS0gICAgU3RvcmVJbnN0KExMVk1NYXNrQWxsT24sIGZ1 bGxNYXNrUG9pbnRlcik7Ci0rICAgIC8vIElmIHRoZSBmdW5jdGlvbiBkb2Vzbid0IGhhdmUgX19t YXNrIGluIHBhcmFtZXRlcnMsIHRoZXJlIGlzIG5vIG5lZWQgdG8KLSsgICAgLy8gaGF2ZSBmdW5j dGlvbiBtYXNrCi0rICAgIGlmICgoZnVuYy0+R2V0VHlwZSgpLT5pc0V4cG9ydGVkICYmCi0rICAg ICAgICAgKGxmLT5nZXRGdW5jdGlvblR5cGUoKS0+Z2V0TnVtUGFyYW1zKCkgPT0gZnVuYy0+R2V0 VHlwZSgpLT5HZXROdW1QYXJhbWV0ZXJzKCkpKSB8fAotKyAgICAgICAgKGZ1bmMtPkdldFR5cGUo KS0+aXNVbm1hc2tlZCkgfHwgKGZ1bmMtPkdldFR5cGUoKS0+aXNUYXNrKSkgewotKyAgICAgICAg ZnVuY3Rpb25NYXNrVmFsdWUgPSBOVUxMOwotKyAgICAgICAgZnVsbE1hc2tQb2ludGVyID0gTlVM TDsKLSsgICAgfSBlbHNlIHsKLSsgICAgICAgIGZ1bmN0aW9uTWFza1ZhbHVlID0gTExWTU1hc2tB bGxPbjsKLSsgICAgICAgIGZ1bGxNYXNrUG9pbnRlciA9IEFsbG9jYUluc3QoTExWTVR5cGVzOjpN YXNrVHlwZSwgImZ1bGxfbWFza19tZW1vcnkiKTsKLSsgICAgICAgIFN0b3JlSW5zdChMTFZNTWFz a0FsbE9uLCBmdWxsTWFza1BvaW50ZXIpOwotKyAgICB9Ci0gCi0gICAgIGJsb2NrRW50cnlNYXNr ID0gTlVMTDsKLSAgICAgYnJlYWtMYW5lc1B0ciA9IGNvbnRpbnVlTGFuZXNQdHIgPSBOVUxMOwot QEAgLTM4OSwyMCArMzk3LDI2IEBAIGxsdm06OkJhc2ljQmxvY2sgKkZ1bmN0aW9uRW1pdENvbnRl eHQ6OkdldEN1cnJlbnRCYXNpY0Jsb2NrKCkgeyByZXR1cm4gYmJsb2NrOyB9Ci0gCi0gdm9pZCBG dW5jdGlvbkVtaXRDb250ZXh0OjpTZXRDdXJyZW50QmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2Nr ICpiYikgeyBiYmxvY2sgPSBiYjsgfQotIAotLWxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250 ZXh0OjpHZXRGdW5jdGlvbk1hc2soKSB7IHJldHVybiBmdW5jdGlvbk1hc2tWYWx1ZTsgfQotK2xs dm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpHZXRGdW5jdGlvbk1hc2soKSB7IHJldHVy biBmdWxsTWFza1BvaW50ZXIgPyBmdW5jdGlvbk1hc2tWYWx1ZSA6IExMVk1NYXNrQWxsT247IH0K LSAKLSBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6R2V0SW50ZXJuYWxNYXNrKCkg eyByZXR1cm4gTG9hZEluc3QoaW50ZXJuYWxNYXNrUG9pbnRlciwgTlVMTCwgImxvYWRfbWFzayIp OyB9Ci0gCi0gbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkdldEZ1bGxNYXNrKCkg ewotLSAgICByZXR1cm4gQmluYXJ5T3BlcmF0b3IobGx2bTo6SW5zdHJ1Y3Rpb246OkFuZCwgR2V0 SW50ZXJuYWxNYXNrKCksIGZ1bmN0aW9uTWFza1ZhbHVlLCAiaW50ZXJuYWxfbWFzayZmdW5jdGlv bl9tYXNrIik7Ci0rICAgIHJldHVybiBmdWxsTWFza1BvaW50ZXIgPyBCaW5hcnlPcGVyYXRvcihs bHZtOjpJbnN0cnVjdGlvbjo6QW5kLCBHZXRJbnRlcm5hbE1hc2soKSwgZnVuY3Rpb25NYXNrVmFs dWUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50ZXJu YWxfbWFzayZmdW5jdGlvbl9tYXNrIikKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEdl dEludGVybmFsTWFzaygpOwotIH0KLSAKLS1sbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4 dDo6R2V0RnVsbE1hc2tQb2ludGVyKCkgeyByZXR1cm4gZnVsbE1hc2tQb2ludGVyOyB9Ci0rbGx2 bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkdldEZ1bGxNYXNrUG9pbnRlcigpIHsKLSsg ICAgcmV0dXJuIGZ1bGxNYXNrUG9pbnRlciA/IGZ1bGxNYXNrUG9pbnRlciA6IGludGVybmFsTWFz a1BvaW50ZXI7Ci0rfQotIAotIHZvaWQgRnVuY3Rpb25FbWl0Q29udGV4dDo6U2V0RnVuY3Rpb25N YXNrKGxsdm06OlZhbHVlICp2YWx1ZSkgewotLSAgICBmdW5jdGlvbk1hc2tWYWx1ZSA9IHZhbHVl OwotLSAgICBpZiAoYmJsb2NrICE9IE5VTEwpCi0tICAgICAgICBTdG9yZUluc3QoR2V0RnVsbE1h c2soKSwgZnVsbE1hc2tQb2ludGVyKTsKLSsgICAgaWYgKGZ1bGxNYXNrUG9pbnRlciAhPSBOVUxM KSB7Ci0rICAgICAgICBmdW5jdGlvbk1hc2tWYWx1ZSA9IHZhbHVlOwotKyAgICAgICAgaWYgKGJi bG9jayAhPSBOVUxMKQotKyAgICAgICAgICAgIFN0b3JlSW5zdChHZXRGdWxsTWFzaygpLCBmdWxs TWFza1BvaW50ZXIpOwotKyAgICB9Ci0gfQotIAotIHZvaWQgRnVuY3Rpb25FbWl0Q29udGV4dDo6 U2V0QmxvY2tFbnRyeU1hc2sobGx2bTo6VmFsdWUgKnZhbHVlKSB7IGJsb2NrRW50cnlNYXNrID0g dmFsdWU7IH0KLUBAIC00MTAsNyArNDI0LDggQEAgdm9pZCBGdW5jdGlvbkVtaXRDb250ZXh0OjpT ZXRCbG9ja0VudHJ5TWFzayhsbHZtOjpWYWx1ZSAqdmFsdWUpIHsgYmxvY2tFbnRyeU1hc2sKLSB2 b2lkIEZ1bmN0aW9uRW1pdENvbnRleHQ6OlNldEludGVybmFsTWFzayhsbHZtOjpWYWx1ZSAqdmFs dWUpIHsKLSAgICAgU3RvcmVJbnN0KHZhbHVlLCBpbnRlcm5hbE1hc2tQb2ludGVyKTsKLSAgICAg Ly8ga2x1ZGdlIHNvIHRoYXQgX19tYXNrIHJldHVybnMgdGhlIHJpZ2h0IHZhbHVlIGluIGlzcGMg Y29kZS4KLS0gICAgU3RvcmVJbnN0KEdldEZ1bGxNYXNrKCksIGZ1bGxNYXNrUG9pbnRlcik7Ci0r ICAgIGlmIChmdWxsTWFza1BvaW50ZXIpCi0rICAgICAgICBTdG9yZUluc3QoR2V0RnVsbE1hc2so KSwgZnVsbE1hc2tQb2ludGVyKTsKLSB9Ci0gCi0gdm9pZCBGdW5jdGlvbkVtaXRDb250ZXh0OjpT ZXRJbnRlcm5hbE1hc2tBbmQobGx2bTo6VmFsdWUgKm9sZE1hc2ssIGxsdm06OlZhbHVlICp0ZXN0 KSB7Ci1AQCAtMTI2NSw3ICsxMjgwLDcgQEAgdm9pZCBGdW5jdGlvbkVtaXRDb250ZXh0OjpDdXJy ZW50TGFuZXNSZXR1cm5lZChFeHByICpleHByLCBib29sIGRvQ29oZXJlbmNlQ2hlY2sKLSAgICAg ICAgIC8vIGxhbmVzIGhhdmUgcmV0dXJuZWQKLSAgICAgICAgIGlmIChkb0NvaGVyZW5jZUNoZWNr KSB7Ci0gICAgICAgICAgICAgLy8gaWYgbmV3UmV0dXJuZWRMYW5lcyA9PSBmdW5jdGlvbk1hc2tW YWx1ZSwgZ2V0IG91dCBvZiBoZXJlIQotLSAgICAgICAgICAgIGxsdm06OlZhbHVlICpjbXAgPSBN YXNrc0FsbEVxdWFsKGZ1bmN0aW9uTWFza1ZhbHVlLCBuZXdSZXR1cm5lZExhbmVzKTsKLSsgICAg ICAgICAgICBsbHZtOjpWYWx1ZSAqY21wID0gTWFza3NBbGxFcXVhbChHZXRGdW5jdGlvbk1hc2so KSwgbmV3UmV0dXJuZWRMYW5lcyk7Ci0gICAgICAgICAgICAgbGx2bTo6QmFzaWNCbG9jayAqYkRv UmV0dXJuID0gQ3JlYXRlQmFzaWNCbG9jaygiZG9fcmV0dXJuIik7Ci0gICAgICAgICAgICAgbGx2 bTo6QmFzaWNCbG9jayAqYk5vUmV0dXJuID0gQ3JlYXRlQmFzaWNCbG9jaygibm9fcmV0dXJuIik7 Ci0gICAgICAgICAgICAgQnJhbmNoSW5zdChiRG9SZXR1cm4sIGJOb1JldHVybiwgY21wKTsKLWRp ZmYgLS1naXQgYS90ZXN0cy9saXQtdGVzdHMvZnVsbF9tYXNrLmlzcGMgYi90ZXN0cy9saXQtdGVz dHMvZnVsbF9tYXNrLmlzcGMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAu LmFjMGIwYmNhMwotLS0tIC9kZXYvbnVsbAotKysrIGIvdGVzdHMvbGl0LXRlc3RzL2Z1bGxfbWFz ay5pc3BjCi1AQCAtMCwwICsxLDYzIEBACi0rLy8gUlVOOiAle2lzcGN9ICVzIC1ESVNQQ19FWFBP UlQgLS1lbWl0LWxsdm0tdGV4dCAtTzAgLS1ub3dyYXAgLW8gJXQubGwKLSsvLyBSVU46IEZpbGVD aGVjayAtLWlucHV0LWZpbGU9JXQubGwgLWNoZWNrLXByZWZpeD1DSEVDS19JU1BDX0VYUE9SVCAl cwotKwotKy8vIFJVTjogJXtpc3BjfSAlcyAtRElTUENfVU5NQVNLRUQgLS1lbWl0LWxsdm0tdGV4 dCAtTzAgLS1ub3dyYXAgLW8gJXQubGwKLSsvLyBSVU46IEZpbGVDaGVjayAtLWlucHV0LWZpbGU9 JXQubGwgLWNoZWNrLXByZWZpeD1DSEVDS19JU1BDX1VOTUFTS0VEICVzCi0rCi0rLy8gUlVOOiAl e2lzcGN9ICVzIC1ESVNQQ19OT1FVQUxJRiAtLWVtaXQtbGx2bS10ZXh0IC1PMCAtLW5vd3JhcCAt byAldC5sbAotKy8vIFJVTjogRmlsZUNoZWNrIC0taW5wdXQtZmlsZT0ldC5sbCAtY2hlY2stcHJl Zml4PUNIRUNLX0lTUENfTk9RVUFMSUYgJXMKLSsKLSsvLyBSVU46ICV7aXNwY30gJXMgLURJU1BD X1RBU0sgLS1lbWl0LWxsdm0tdGV4dCAtTzAgLS1ub3dyYXAgLW8gJXQubGwKLSsvLyBSVU46IEZp bGVDaGVjayAtLWlucHV0LWZpbGU9JXQubGwgLWNoZWNrLXByZWZpeD1DSEVDS19JU1BDX1RBU0sg JXMKLSsKLStzdHJ1Y3QgUGFyYW1ldGVycyB7Ci0rICAgIGZsb2F0ICp2b3V0OwotKyAgICBpbnQg cGFyYW07Ci0rfTsKLSsKLSsjaWZkZWYgSVNQQ19FWFBPUlQKLSsvLyBDSEVDS19JU1BDX0VYUE9S VDogZGVmaW5lIHZvaWQgQHNpbXBsZV9leHBvcnRfX18KLSsvLyBDSEVDS19JU1BDX0VYUE9SVDog JWZ1bGxfbWFza19tZW1vcnkgPSBhbGxvY2EKLSsvLyBDSEVDS19JU1BDX0VYUE9SVDogZGVmaW5l IHZvaWQgQHNpbXBsZV9leHBvcnQoCi0rLy8gQ0hFQ0tfSVNQQ19FWFBPUlQtTk9UOiAlZnVsbF9t YXNrX21lbW9yeSA9IGFsbG9jYQotK2V4cG9ydCB2b2lkIHNpbXBsZV9leHBvcnQodm9pZCAqdW5p Zm9ybSBfcCkgewotKyAgICBQYXJhbWV0ZXJzICp1bmlmb3JtIHAgPSAoUGFyYW1ldGVycyAqIHVu aWZvcm0pIF9wOwotKyAgICBpZiAocHJvZ3JhbUluZGV4ID4gcC0+cGFyYW0pCi0rICAgICAgICBw LT52b3V0W3Byb2dyYW1JbmRleF0gPSBwcm9ncmFtQ291bnQgKiBwcm9ncmFtSW5kZXg7Ci0rfQot KyNlbmRpZgotKyNpZmRlZiBJU1BDX1VOTUFTS0VECi0rLy8gQ0hFQ0tfSVNQQ19VTk1BU0tFRDog ZGVmaW5lIHZvaWQgQHNpbXBsZV91bm1hc2tlZAotKy8vIENIRUNLX0lTUENfVU5NQVNLRUQtTk9U OiAlZnVsbF9tYXNrX21lbW9yeSA9IGFsbG9jYQotK3VubWFza2VkIHZvaWQgc2ltcGxlX3VubWFz a2VkKHZvaWQgKnVuaWZvcm0gX3ApIHsKLSsgICAgUGFyYW1ldGVycyAqdW5pZm9ybSBwID0gKFBh cmFtZXRlcnMgKiB1bmlmb3JtKSBfcDsKLSsgICAgaWYgKHByb2dyYW1JbmRleCA+IHAtPnBhcmFt KQotKyAgICAgICAgcC0+dm91dFtwcm9ncmFtSW5kZXhdID0gcHJvZ3JhbUNvdW50ICogcHJvZ3Jh bUluZGV4OwotK30KLSsjZW5kaWYKLSsjaWZkZWYgSVNQQ19OT1FVQUxJRgotKy8vIENIRUNLX0lT UENfTk9RVUFMSUY6IGRlZmluZSB2b2lkIEBzaW1wbGUKLSsvLyBDSEVDS19JU1BDX05PUVVBTElG OiAlZnVsbF9tYXNrX21lbW9yeSA9IGFsbG9jYQotK3ZvaWQgc2ltcGxlKHZvaWQgKnVuaWZvcm0g X3ApIHsKLSsgICAgUGFyYW1ldGVycyAqdW5pZm9ybSBwID0gKFBhcmFtZXRlcnMgKiB1bmlmb3Jt KSBfcDsKLSsgICAgaWYgKHByb2dyYW1JbmRleCA+IHAtPnBhcmFtKQotKyAgICAgICAgcC0+dm91 dFtwcm9ncmFtSW5kZXhdID0gcHJvZ3JhbUNvdW50ICogcHJvZ3JhbUluZGV4OwotK30KLSsjZW5k aWYKLSsjaWZkZWYgSVNQQ19UQVNLCi0rCi0rLy8gQ0hFQ0tfSVNQQ19UQVNLOiBkZWZpbmUgdm9p ZCBAc2ltcGxlX3Rhc2sKLSsvLyBDSEVDS19JU1BDX1RBU0stTk9UOiAlZnVsbF9tYXNrX21lbW9y eSA9IGFsbG9jYQotKy8vIENIRUNLX0lTUENfVEFTSzogZGVmaW5lIHZvaWQgQHNpbXBsZV9lbnRy eV9wb2ludF9fCi0rLy8gQ0hFQ0tfSVNQQ19UQVNLOiAlZnVsbF9tYXNrX21lbW9yeSA9IGFsbG9j YQotKy8vIENIRUNLX0lTUENfVEFTSzogZGVmaW5lIHZvaWQgQHNpbXBsZV9lbnRyeV9wb2ludCgK LSsvLyBDSEVDS19JU1BDX1RBU0stTk9UOiAlZnVsbF9tYXNrX21lbW9yeSA9IGFsbG9jYQotK3Rh c2sgdm9pZCBzaW1wbGVfdGFzayh2b2lkICp1bmlmb3JtIF9wKSB7Ci0rICAgIFBhcmFtZXRlcnMg KnVuaWZvcm0gcCA9IChQYXJhbWV0ZXJzICogdW5pZm9ybSkgX3A7Ci0rICAgIGlmIChwcm9ncmFt SW5kZXggPiBwLT5wYXJhbSkKLSsgICAgICAgIHAtPnZvdXRbcHJvZ3JhbUluZGV4XSA9IHByb2dy YW1Db3VudCAqIHByb2dyYW1JbmRleDsKLSt9Ci0rZXhwb3J0IHZvaWQgc2ltcGxlX2VudHJ5X3Bv aW50KHZvaWQgKnVuaWZvcm0gcGFyYW1ldGVycywgdW5pZm9ybSBpbnQgZGltMCwgdW5pZm9ybSBp bnQgZGltMSwgdW5pZm9ybSBpbnQgZGltMikgewotKyAgICBsYXVuY2hbZGltMCwgZGltMSwgZGlt Ml0gc2ltcGxlX3Rhc2socGFyYW1ldGVycyk7Ci0rfQotKyNlbmRpZgotXCBObyBuZXdsaW5lIGF0 IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA4 LnBhdGNoIGIvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwOC5wYXRjaApkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggYzg0MTNkOGI3ODg3Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3Jj cGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0 OSArMCwwIEBACi1Gcm9tIGFmYWQxNDIyN2Q5MjA0YTNjOGE2MjZjYTYwOGY1YjQzYzMyMThmZTkg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBcmluYSBOZXNobHlhZXZhIDxhcmluYS5u ZXNobHlhZXZhQGludGVsLmNvbT4KLURhdGU6IFR1ZSwgNCBNYXkgMjAyMSAxMTo0Mzo1MiAtMDcw MAotU3ViamVjdDogW1BBVENIXSBGaXhlZCBJU1BDIGdlbiBidWlsZCBmb3IgTExWTTEyCi0KLS0t LQotIHNyYy9jdHguY3BwIHwgIDQgKysrKwotIHNyYy9vcHQuY3BwIHwgNDMgKysrKysrKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMzMgaW5z ZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvY3R4LmNwcCBi L3NyYy9jdHguY3BwCi1pbmRleCAwYzcwNTA1OTEuLmY3ZGMwNjkzOSAxMDA2NDQKLS0tLSBhL3Ny Yy9jdHguY3BwCi0rKysgYi9zcmMvY3R4LmNwcAotQEAgLTM3MzgsNyArMzczOCwxMSBAQCBsbHZt OjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6R2VuWFNpbWRDRkFueShsbHZtOjpWYWx1ZSAq dmFsdWUpIHsKLSAKLSBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6R2VuWFNpbWRD RlByZWRpY2F0ZShsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlZhbHVlICpkZWZhdWx0cykgewot ICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbGx2bTo6aXNhPGxsdm06OlZlY3RvclR5cGU+KHZh bHVlLT5nZXRUeXBlKCkpKTsKLSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEx XzAKLSsgICAgbGx2bTo6Rml4ZWRWZWN0b3JUeXBlICp2dCA9IGxsdm06OmR5bl9jYXN0PGxsdm06 OkZpeGVkVmVjdG9yVHlwZT4odmFsdWUtPmdldFR5cGUoKSk7Ci0rI2Vsc2UKLSAgICAgbGx2bTo6 VmVjdG9yVHlwZSAqdnQgPSBsbHZtOjpkeW5fY2FzdDxsbHZtOjpWZWN0b3JUeXBlPih2YWx1ZS0+ Z2V0VHlwZSgpKTsKLSsjZW5kaWYKLSAgICAgaWYgKGRlZmF1bHRzID09IE5VTEwpIHsKLSAjaWYg SVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1fMTFfMAotICAgICAgICAgZGVmYXVsdHMgPSBs bHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQodnQtPmdldFZlY3Rvck51bUVsZW1lbnRzKCks Ci1kaWZmIC0tZ2l0IGEvc3JjL29wdC5jcHAgYi9zcmMvb3B0LmNwcAotaW5kZXggY2VhNGFmYTIz Li40ZTMzZDZiMWEgMTAwNjQ0Ci0tLS0gYS9zcmMvb3B0LmNwcAotKysrIGIvc3JjL29wdC5jcHAK LUBAIC0yOTE2LDkgKzI5MTYsMTMgQEAgc3RhdGljIGxsdm06OkZ1bmN0aW9uICpsR2VuWE1hc2tl ZEludDhJbnN0KGxsdm06Okluc3RydWN0aW9uICppbnN0LCBib29sIGlzU3RvcmUKLSAKLSBzdGF0 aWMgbGx2bTo6Q2FsbEluc3QgKmxHZW5YU3RvcmVJbnN0KGxsdm06OlZhbHVlICp2YWwsIGxsdm06 OlZhbHVlICpwdHIsIGxsdm06Okluc3RydWN0aW9uICppbnN0KSB7Ci0gICAgIEFzc2VydChnLT50 YXJnZXQtPmlzR2VuWFRhcmdldCgpKTsKLSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19M TFZNXzExXzAKLSsgICAgQXNzZXJ0KGxsdm06OmlzYTxsbHZtOjpGaXhlZFZlY3RvclR5cGU+KHZh bC0+Z2V0VHlwZSgpKSk7Ci0rICAgIGxsdm06OkZpeGVkVmVjdG9yVHlwZSAqdmFsVmVjVHlwZSA9 IGxsdm06OmR5bl9jYXN0PGxsdm06OkZpeGVkVmVjdG9yVHlwZT4odmFsLT5nZXRUeXBlKCkpOwot KyNlbHNlCi0gICAgIEFzc2VydChsbHZtOjppc2E8bGx2bTo6VmVjdG9yVHlwZT4odmFsLT5nZXRU eXBlKCkpKTsKLS0KLSAgICAgbGx2bTo6VmVjdG9yVHlwZSAqdmFsVmVjVHlwZSA9IGxsdm06OmR5 bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KHZhbC0+Z2V0VHlwZSgpKTsKLSsjZW5kaWYKLSAgICAg QXNzZXJ0KGxsdm06OmlzUG93ZXJPZjJfMzIodmFsVmVjVHlwZS0+Z2V0TnVtRWxlbWVudHMoKSkp OwotICAgICBBc3NlcnQodmFsVmVjVHlwZS0+Z2V0UHJpbWl0aXZlU2l6ZUluQml0cygpIC8gOCA8 PSA4ICogT1dPUkQpOwotIAotQEAgLTI5NDIsOSArMjk0NiwxMyBAQCBzdGF0aWMgbGx2bTo6Q2Fs bEluc3QgKmxHZW5YU3RvcmVJbnN0KGxsdm06OlZhbHVlICp2YWwsIGxsdm06OlZhbHVlICpwdHIs IGxsdm06OgotIH0KLSAKLSBzdGF0aWMgbGx2bTo6Q2FsbEluc3QgKmxHZW5YTG9hZEluc3QobGx2 bTo6VmFsdWUgKnB0ciwgbGx2bTo6VHlwZSAqcmV0VHlwZSwgbGx2bTo6SW5zdHJ1Y3Rpb24gKmlu c3QpIHsKLSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzExXzAKLSsgICAgQXNz ZXJ0KGxsdm06OmlzYTxsbHZtOjpGaXhlZFZlY3RvclR5cGU+KHJldFR5cGUpKTsKLSsgICAgbGx2 bTo6Rml4ZWRWZWN0b3JUeXBlICpyZXRWZWNUeXBlID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6Rml4 ZWRWZWN0b3JUeXBlPihyZXRUeXBlKTsKLSsjZWxzZQotICAgICBBc3NlcnQobGx2bTo6aXNhPGxs dm06OlZlY3RvclR5cGU+KHJldFR5cGUpKTsKLS0KLSAgICAgbGx2bTo6VmVjdG9yVHlwZSAqcmV0 VmVjVHlwZSA9IGxsdm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KHJldFR5cGUpOwotKyNl bmRpZgotICAgICBBc3NlcnQobGx2bTo6aXNQb3dlck9mMl8zMihyZXRWZWNUeXBlLT5nZXROdW1F bGVtZW50cygpKSk7Ci0gICAgIEFzc2VydChyZXRWZWNUeXBlLT5nZXRQcmltaXRpdmVTaXplSW5C aXRzKCkpOwotICAgICBBc3NlcnQocmV0VmVjVHlwZS0+Z2V0UHJpbWl0aXZlU2l6ZUluQml0cygp IC8gOCA8PSA4ICogT1dPUkQpOwotQEAgLTU0ODUsOCArNTQ5MywxMyBAQCBzdGF0aWMgdm9pZCBs Q3JlYXRlQmxvY2tMRFVzZShsbHZtOjpJbnN0cnVjdGlvbiAqY3Vyckluc3QsIHN0ZDo6dmVjdG9y PGxsdm06OkV4dAotICAgICAgICAgfSBlbHNlIGlmIChhdXRvIGdhdGhlciA9IGxHZXRQc2V1ZG9H YXRoZXIobGx2bTo6ZHluX2Nhc3Q8bGx2bTo6SW5zdHJ1Y3Rpb24+KHVpLT5nZXRVc2VyKCkpKSkg ewotICAgICAgICAgICAgIC8vIENvbGxlY3QgaWR4cyBmcm9tIGdhdGhlciBhbmQgZml4IHVzZXJz Ci0gICAgICAgICAgICAgbGx2bTo6VmFsdWUgKnJlcyA9IGxsdm06OlVuZGVmVmFsdWU6OmdldChn YXRoZXItPmdldFR5cGUoKSk7Ci0tICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgZW5k ID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4ocmVzLT5nZXRUeXBlKCkpLT5nZXRO dW1FbGVtZW50cygpOyBpIDwgZW5kOwotLSAgICAgICAgICAgICAgICAgKytpKSB7Ci0rI2lmIElT UENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMV8wCi0rICAgICAgICAgICAgZm9yICh1bnNp Z25lZCBpID0gMCwgZW5kID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6Rml4ZWRWZWN0b3JUeXBlPihy ZXMtPmdldFR5cGUoKSktPmdldE51bUVsZW1lbnRzKCk7IGkgPCBlbmQ7Ci0rICAgICAgICAgICAg ICAgICArK2kpCi0rI2Vsc2UKLSsgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBlbmQg PSBsbHZtOjpkeW5fY2FzdDxsbHZtOjpWZWN0b3JUeXBlPihyZXMtPmdldFR5cGUoKSktPmdldE51 bUVsZW1lbnRzKCk7IGkgPCBlbmQ7ICsraSkKLSsjZW5kaWYKLSsgICAgICAgICAgICB7Ci0gICAg ICAgICAgICAgICAgIC8vIEdldCBlbGVtZW50IHZpYSBJRUkKLSAgICAgICAgICAgICAgICAgcmVz ID0gbGx2bTo6SW5zZXJ0RWxlbWVudEluc3Q6OkNyZWF0ZShyZXMsIEVFSXNbcHRyVXNlLmlkeHNb Y3Vycl9pZHgrK11dLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGxsdm06OkNvbnN0YW50SW50OjpnZXQoTExWTVR5cGVzOjpJbnQzMlR5cGUs IGkpLAotQEAgLTU1MjIsMTAgKzU1MzUsMTEgQEAgc3RhdGljIGJvb2wgbFZlY3Rvcml6ZUdFUHMo bGx2bTo6VmFsdWUgKnB0ciwgc3RkOjp2ZWN0b3I8UHRyVXNlPiAmcHRyVXNlcywgc3RkOjoKLSAK LSAgICAgLy8gQWRqdXN0IHZhbHVlcyBmb3IgdmVjdG9yIGxvYWQKLSAjaWYgSVNQQ19MTFZNX1ZF UlNJT04gPj0gSVNQQ19MTFZNXzExXzAKLS0gICAgaWYgKGF1dG8gdmVjVHkgPSBsbHZtOjpkeW5f Y2FzdDxsbHZtOjpGaXhlZFZlY3RvclR5cGU+KHR5cGUpKSB7Ci0rICAgIGlmIChhdXRvIHZlY1R5 ID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6Rml4ZWRWZWN0b3JUeXBlPih0eXBlKSkKLSAjZWxzZQot LSAgICBpZiAoYXV0byB2ZWNUeSA9IGxsdm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KHR5 cGUpKSB7Ci0rICAgIGlmIChhdXRvIHZlY1R5ID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9y VHlwZT4odHlwZSkpCi0gI2VuZGlmCi0rICAgIHsKLSAgICAgICAgIC8vIEdldCBzaW5nbGUgZWxl bWVudCBzaXplCi0gICAgICAgICB0X3NpemUgLz0gdmVjVHktPmdldE51bUVsZW1lbnRzKCk7Ci0g ICAgICAgICAvLyBHZXQgc2luZ2xlIGVsZW1lbnQgdHlwZQotQEAgLTY0NzcsNyArNjQ5MSw3IEBA IGxsdm06OlZhbHVlICpGaXhBZGRyZXNzU3BhY2U6OmNhbGN1bGF0ZUdhdGhlclNjYXR0ZXJBZGRy ZXNzKGxsdm06OlZhbHVlICpQdHIsIGxsCi0gI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENf TExWTV8xMV8wCi0gICAgICAgICBPZmZzZXRzLAotICAgICAgICAgbGx2bTo6Rml4ZWRWZWN0b3JU eXBlOjpnZXQoTExWTVR5cGVzOjpJbnQ2NFR5cGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBsbHZtOjpkeW5fY2FzdDxsbHZtOjpWZWN0b3JUeXBlPihPZmZzZXRzLT5nZXRU eXBlKCkpLT5nZXROdW1FbGVtZW50cygpKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxsdm06OmR5bl9jYXN0PGxsdm06OkZpeGVkVmVjdG9yVHlwZT4oT2Zmc2V0cy0+Z2V0 VHlwZSgpKS0+Z2V0TnVtRWxlbWVudHMoKSksCi0gICAgICAgICAic3ZtX29mZnNldF96ZXh0Iiwg SW5zZXJ0QmVmb3JlKTsKLSAjZWxzZQotICAgICAgICAgT2Zmc2V0cywgbGx2bTo6VmVjdG9yVHlw ZTo6Z2V0KExMVk1UeXBlczo6SW50NjRUeXBlLCBPZmZzZXRzLT5nZXRUeXBlKCktPmdldFZlY3Rv ck51bUVsZW1lbnRzKCkpLAotQEAgLTY0OTIsNyArNjUwNiw3IEBAIGxsdm06OlZhbHVlICpGaXhB ZGRyZXNzU3BhY2U6OmNhbGN1bGF0ZUdhdGhlclNjYXR0ZXJBZGRyZXNzKGxsdm06OlZhbHVlICpQ dHIsIGxsCi0gICAgICAgICBsbHZtOjpWYWx1ZSAqdW5kZWZJbnNlcnRWYWx1ZSA9Ci0gI2lmIElT UENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMV8wCi0gICAgICAgICAgICAgbGx2bTo6VW5k ZWZWYWx1ZTo6Z2V0KGxsdm06OkZpeGVkVmVjdG9yVHlwZTo6Z2V0KAotLSAgICAgICAgICAgICAg ICBMTFZNVHlwZXM6OkludDY0VHlwZSwgbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4o YWRkcmVzc1R5cGUpLT5nZXROdW1FbGVtZW50cygpKSk7Ci0rICAgICAgICAgICAgICAgIExMVk1U eXBlczo6SW50NjRUeXBlLCBsbHZtOjpkeW5fY2FzdDxsbHZtOjpGaXhlZFZlY3RvclR5cGU+KGFk ZHJlc3NUeXBlKS0+Z2V0TnVtRWxlbWVudHMoKSkpOwotICNlbHNlCi0gICAgICAgICAgICAgbGx2 bTo6VW5kZWZWYWx1ZTo6Z2V0KGxsdm06OlZlY3RvclR5cGU6OmdldChMTFZNVHlwZXM6OkludDY0 VHlwZSwgYWRkcmVzc1R5cGUtPmdldFZlY3Rvck51bUVsZW1lbnRzKCkpKTsKLSAjZW5kaWYKLUBA IC02NTAxLDE3ICs2NTE1LDE2IEBAIGxsdm06OlZhbHVlICpGaXhBZGRyZXNzU3BhY2U6OmNhbGN1 bGF0ZUdhdGhlclNjYXR0ZXJBZGRyZXNzKGxsdm06OlZhbHVlICpQdHIsIGxsCi0gI2lmIElTUENf TExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzExXzAKLSAgICAgICAgICAgICBhZGRyZXNzVHlwZS0+ Z2V0VmVjdG9yTnVtRWxlbWVudHMoKSwKLSAjZWxpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENf TExWTV8xMl8wCi0tICAgICAgICAgICAge2xsdm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+ KGFkZHJlc3NUeXBlKS0+Z2V0TnVtRWxlbWVudHMoKSwgZmFsc2V9LAotKyAgICAgICAgICAgIHts bHZtOjpkeW5fY2FzdDxsbHZtOjpGaXhlZFZlY3RvclR5cGU+KGFkZHJlc3NUeXBlKS0+Z2V0TnVt RWxlbWVudHMoKSwgZmFsc2V9LAotICNlbHNlCi0tICAgICAgICBsbHZtOjpFbGVtZW50Q291bnQ6 OmdldCgKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OmR5bl9jYXN0PGxs dm06OkZpeGVkVmVjdG9yVHlwZT4oYWRkcmVzc1R5cGUtPmdldE51bUVsZW1lbnRzKCksIGZhbHNl KSwKLSsgICAgICAgICAgICBsbHZtOjpFbGVtZW50Q291bnQ6OmdldChsbHZtOjpkeW5fY2FzdDxs bHZtOjpGaXhlZFZlY3RvclR5cGU+KGFkZHJlc3NUeXBlKS0+Z2V0TnVtRWxlbWVudHMoKSwgZmFs c2UpLAotICNlbmRpZgotICAgICAgICAgICAgIGxsdm06OkNvbnN0YW50OjpnZXROdWxsVmFsdWUo bGx2bTo6VHlwZTo6Z2V0SW50MzJUeShJbnNlcnRCZWZvcmUtPmdldENvbnRleHQoKSkpKTsKLSAK LSAgICAgICAgIGxsdm06OlZhbHVlICp1bmRlZlNodWZmbGVWYWx1ZSA9Ci0gI2lmIElTUENfTExW TV9WRVJTSU9OID49IElTUENfTExWTV8xMV8wCi0gICAgICAgICAgICAgbGx2bTo6VW5kZWZWYWx1 ZTo6Z2V0KGxsdm06OkZpeGVkVmVjdG9yVHlwZTo6Z2V0KAotLSAgICAgICAgICAgICAgICBMTFZN VHlwZXM6OkludDY0VHlwZSwgbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4oYWRkcmVz c1R5cGUpLT5nZXROdW1FbGVtZW50cygpKSk7Ci0rICAgICAgICAgICAgICAgIExMVk1UeXBlczo6 SW50NjRUeXBlLCBsbHZtOjpkeW5fY2FzdDxsbHZtOjpGaXhlZFZlY3RvclR5cGU+KGFkZHJlc3NU eXBlKS0+Z2V0TnVtRWxlbWVudHMoKSkpOwotICNlbHNlCi0gICAgICAgICAgICAgbGx2bTo6VW5k ZWZWYWx1ZTo6Z2V0KGxsdm06OlZlY3RvclR5cGU6OmdldChMTFZNVHlwZXM6OkludDY0VHlwZSwg YWRkcmVzc1R5cGUtPmdldFZlY3Rvck51bUVsZW1lbnRzKCkpKTsKLSAjZW5kaWYKLUBAIC02NTQy LDcgKzY1NTUsOCBAQCBsbHZtOjpJbnN0cnVjdGlvbiAqRml4QWRkcmVzc1NwYWNlOjpwcm9jZXNz VmVjdG9yTG9hZChsbHZtOjpMb2FkSW5zdCAqTEkpIHsKLSAgICAgICAgIGlzUHRyTG9hZCA9IHRy dWU7Ci0gICAgICAgICBhdXRvIHNjYWxhclR5cGUgPSBnLT50YXJnZXQtPmlzMzJCaXQoKSA/IExM Vk1UeXBlczo6SW50MzJUeXBlIDogTExWTVR5cGVzOjpJbnQ2NFR5cGU7Ci0gI2lmIElTUENfTExW TV9WRVJTSU9OID49IElTUENfTExWTV8xMV8wCi0tICAgICAgICByZXRUeXBlID0gbGx2bTo6Rml4 ZWRWZWN0b3JUeXBlOjpnZXQoc2NhbGFyVHlwZSwgbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9y VHlwZT4ocmV0VHlwZSktPmdldE51bUVsZW1lbnRzKCkpOwotKyAgICAgICAgcmV0VHlwZSA9Ci0r ICAgICAgICAgICAgbGx2bTo6Rml4ZWRWZWN0b3JUeXBlOjpnZXQoc2NhbGFyVHlwZSwgbGx2bTo6 ZHluX2Nhc3Q8bGx2bTo6Rml4ZWRWZWN0b3JUeXBlPihyZXRUeXBlKS0+Z2V0TnVtRWxlbWVudHMo KSk7Ci0gI2Vsc2UKLSAgICAgICAgIHJldFR5cGUgPSBsbHZtOjpWZWN0b3JUeXBlOjpnZXQoc2Nh bGFyVHlwZSwgcmV0VHlwZS0+Z2V0VmVjdG9yTnVtRWxlbWVudHMoKSk7Ci0gI2VuZGlmCi1AQCAt NjYwNCw3ICs2NjE4LDggQEAgbGx2bTo6SW5zdHJ1Y3Rpb24gKkZpeEFkZHJlc3NTcGFjZTo6cHJv Y2Vzc1ZlY3RvclN0b3JlKGxsdm06OlN0b3JlSW5zdCAqU0kpIHsKLSAgICAgaWYgKHZhbFR5cGUt PmdldFNjYWxhclR5cGUoKS0+aXNQb2ludGVyVHkoKSkgewotICAgICAgICAgYXV0byBzY2FsYXJU eXBlID0gZy0+dGFyZ2V0LT5pczMyQml0KCkgPyBMTFZNVHlwZXM6OkludDMyVHlwZSA6IExMVk1U eXBlczo6SW50NjRUeXBlOwotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFf MAotLSAgICAgICAgdmFsVHlwZSA9IGxsdm06OkZpeGVkVmVjdG9yVHlwZTo6Z2V0KHNjYWxhclR5 cGUsIGxsdm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KHZhbFR5cGUpLT5nZXROdW1FbGVt ZW50cygpKTsKLSsgICAgICAgIHZhbFR5cGUgPQotKyAgICAgICAgICAgIGxsdm06OkZpeGVkVmVj dG9yVHlwZTo6Z2V0KHNjYWxhclR5cGUsIGxsdm06OmR5bl9jYXN0PGxsdm06OkZpeGVkVmVjdG9y VHlwZT4odmFsVHlwZSktPmdldE51bUVsZW1lbnRzKCkpOwotICNlbHNlCi0gICAgICAgICB2YWxU eXBlID0gbGx2bTo6VmVjdG9yVHlwZTo6Z2V0KHNjYWxhclR5cGUsIHZhbFR5cGUtPmdldFZlY3Rv ck51bUVsZW1lbnRzKCkpOwotICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pc3BjL3BhdGNo ZXMvbGx2bTEyLTAwOS5wYXRjaCBiL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDkucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzZWE2NzgyODU4Mi4uMDAwMDAwMDAw MDAwCi0tLSBhL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDkucGF0Y2gKKysrIC9kZXYv bnVsbApAQCAtMSwyMTA5ICswLDAgQEAKLUZyb20gOTdiMTNjMzIxMzJlMjcwNGE1ZTNlN2IyZWFl NDlkODU0ZDA4N2UzZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFyaW5hIE5lc2hs eWFldmEgPGFyaW5hLm5lc2hseWFldmFAaW50ZWwuY29tPgotRGF0ZTogVHVlLCA0IE1heSAyMDIx IDExOjMxOjU1IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVwZGF0ZWQgYnVpbHRpbnMtY20qIGZv ciBzd2l0Y2ggdG8gTExWTTEyCi0KLS0tLQotIGJ1aWx0aW5zL2J1aWx0aW5zLWNtLTMyLmxsIHwg MjM0ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KLSBidWlsdGlucy9idWls dGlucy1jbS02NC5sbCB8IDIzMiArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0K LSAyIGZpbGVzIGNoYW5nZWQsIDIzMyBpbnNlcnRpb25zKCspLCAyMzMgZGVsZXRpb25zKC0pCi0K LWRpZmYgLS1naXQgYS9idWlsdGlucy9idWlsdGlucy1jbS0zMi5sbCBiL2J1aWx0aW5zL2J1aWx0 aW5zLWNtLTMyLmxsCi1pbmRleCAzMmRlYmYzMmUuLjQ4MWJiZGM0OCAxMDA2NDQKLS0tLSBhL2J1 aWx0aW5zL2J1aWx0aW5zLWNtLTMyLmxsCi0rKysgYi9idWlsdGlucy9idWlsdGlucy1jbS0zMi5s bAotQEAgLTU1Nyw3ICs1NTcsNyBAQCAkX1pOMTNWYXJ5aW5nV3JpdGVyMTJXcml0ZVZlY0VsZW1J UHZFRXZ2ID0gY29tZGF0IGFueQotIEAuc3RyLjEwID0gcHJpdmF0ZSB1bm5hbWVkX2FkZHIgY29u c3RhbnQgWzUgeCBpOF0gYyIlMDhYXDAwIiwgYWxpZ24gMQotIAotIDsgRnVuY3Rpb24gQXR0cnM6 IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCBzaWduZXh0IGk4IEBfWjI0X19j bV9pbnRyaW5zaWNfaW1wbF9zZGl2Y2MoaTggc2lnbmV4dCwgaTggc2lnbmV4dCkgIzAgewotK2Rl ZmluZSBpbnRlcm5hbCBzaWduZXh0IGk4IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2Y2Mo aTggc2lnbmV4dCwgaTggc2lnbmV4dCkgIzAgewotICAgJTMgPSBhbGxvY2EgaTgsIGFsaWduIDEK LSAgICU0ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSA8MSB4IGk4PiwgYWxp Z24gMQotQEAgLTYxOCw3ICs2MTgsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDEgeCBpOD4gQF9aTjdk ZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMUVFRXUyQ012YlRfX2NTMV9TMV91MkNNdgotIGRlY2xh cmUgPDEgeCBpOD4gQGxsdm0uZ2VueC5yZHJlZ2lvbmkudjFpOC52MWk4LmkxNig8MSB4IGk4Piwg aTMyLCBpMzIsIGkzMiwgaTE2LCBpMzIpICMyCi0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxp bmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxIHggaTg+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF9zZGl2dTJDTXZiMV9jU18oPDEgeCBpOD4sIDwxIHggaTg+KSAjMCB7Ci0rZGVmaW5l IGludGVybmFsIDwxIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMV9j U18oPDEgeCBpOD4sIDwxIHggaTg+KSAjMCB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGk4PiwgYWxp Z24gMQotICAgJTQgPSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIDwx IHggaTg+LCBhbGlnbiAxCi1AQCAtNjM0LDcgKzYzNCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDEg eCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIxX2NTXyg8MSB4IGk4Piwg PDEKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUg ZHNvX2xvY2FsIDwyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMl9j U18oPDIgeCBpOD4sIDwyIHggaTg+KSAjMyB7Ci0rZGVmaW5lIGludGVybmFsIDwyIHggaTg+IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMl9jU18oPDIgeCBpOD4sIDwyIHggaTg+ KSAjMyB7Ci0gICAlMyA9IGFsbG9jYSA8MiB4IGk4PiwgYWxpZ24gMgotICAgJTQgPSBhbGxvY2Eg PDIgeCBpOD4sIGFsaWduIDIKLSAgICU1ID0gYWxsb2NhIDwyIHggaTg+LCBhbGlnbiAyCi1AQCAt NjgwLDcgKzY4MCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MiB4IGk4PiBAX1pON2RldGFpbHMxM19f aW1wbF9kaXZyZW1JTGkyRUVFdTJDTXZiVF9fY1MxX1MxX3UyQ012Ci0gfQotIAotIDsgRnVuY3Rp b24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8NCB4IGk4PiBA X1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjRfY1NfKDw0IHggaTg+LCA8NCB4IGk4 PikgIzUgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfc2RpdnUyQ012YjRfY1NfKDw0IHggaTg+LCA8NCB4IGk4PikgIzUgewotICAgJTMgPSBhbGxv Y2EgPDQgeCBpOD4sIGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0Ci0g ICAlNSA9IGFsbG9jYSA8NCB4IGk4PiwgYWxpZ24gNAotQEAgLTgxOCw3ICs4MTgsNyBAQCBkZWZp bmUgaW50ZXJuYWwgPDE2IHggaTg+IEBfWk43ZGV0YWlsczEzX19pbXBsX2RpdnJlbUlMaTE2RUVF dTJDTXZiVF9fY1MxX1MxX3UyQwotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBu b3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDMyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF9zZGl2dTJDTXZiMzJfY1NfKDwzMiB4IGk4PiwgPDMyIHggaTg+KSAjMTEgewotK2RlZmlu ZSBpbnRlcm5hbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIz Ml9jU18oPDMyIHggaTg+LCA8MzIgeCBpOD4pICMxMSB7Ci0gICAlMyA9IGFsbG9jYSA8MzIgeCBp OD4sIGFsaWduIDMyCi0gICAlNCA9IGFsbG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi0gICAlNSA9 IGFsbG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi1AQCAtODY0LDcgKzg2NCw3IEBAIGRlZmluZSBp bnRlcm5hbCA8MzIgeCBpOD4gQF9aTjdkZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMzJFRUV1MkNN dmJUX19jUzFfUzFfdTJDCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53 aW5kCi0tZGVmaW5lIGRzb19sb2NhbCBzaWduZXh0IGk4IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF9zcmVtY2MoaTggc2lnbmV4dCwgaTggc2lnbmV4dCkgIzAgewotK2RlZmluZSBpbnRlcm5hbCBz aWduZXh0IGk4IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtY2MoaTggc2lnbmV4dCwgaTgg c2lnbmV4dCkgIzAgewotICAgJTMgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU0ID0gYWxsb2Nh IGk4LCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotQEAgLTg5MCw3 ICs4OTAsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIHNpZ25leHQgaTggQF9aMjRfX2NtX2ludHJpbnNp Y19pbXBsX3NyZW1jYyhpOCBzaWduZXh0LCBpOCBzaWduZQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0 dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEgeCBpOD4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxX2NTXyg8MSB4IGk4PiwgPDEgeCBpOD4pICMw IHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Ny ZW11MkNNdmIxX2NTXyg8MSB4IGk4PiwgPDEgeCBpOD4pICMwIHsKLSAgICUzID0gYWxsb2NhIDwx IHggaTg+LCBhbGlnbiAxCi0gICAlNCA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotICAgJTUg PSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLUBAIC05MDQsNyArOTA0LDcgQEAgZGVmaW5lIGRz b19sb2NhbCA8MSB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjFfY1Nf KDwxIHggaTg+LCA8MQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2lu ZAotLWRlZmluZSBkc29fbG9jYWwgPDIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Ny ZW11MkNNdmIyX2NTXyg8MiB4IGk4PiwgPDIgeCBpOD4pICMzIHsKLStkZWZpbmUgaW50ZXJuYWwg PDIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIyX2NTXyg8MiB4IGk4 PiwgPDIgeCBpOD4pICMzIHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTg+LCBhbGlnbiAyCi0gICAl NCA9IGFsbG9jYSA8MiB4IGk4PiwgYWxpZ24gMgotICAgJTUgPSBhbGxvY2EgPDIgeCBpOD4sIGFs aWduIDIKLUBAIC05MTgsNyArOTE4LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MiB4IGk4PiBAX1oy NF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjJfY1NfKDwyIHggaTg+LCA8MgotIH0KLSAK LSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwg PDQgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI0X2NTXyg8NCB4IGk4 PiwgPDQgeCBpOD4pICM1IHsKLStkZWZpbmUgaW50ZXJuYWwgPDQgeCBpOD4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3NyZW11MkNNdmI0X2NTXyg8NCB4IGk4PiwgPDQgeCBpOD4pICM1IHsKLSAg ICUzID0gYWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSA8NCB4IGk4Piwg YWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDQgeCBpOD4sIGFsaWduIDQKLUBAIC05MzIsNyArOTMy LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8NCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf c3JlbXUyQ012YjRfY1NfKDw0IHggaTg+LCA8NAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBu b2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDggeCBpOD4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3NyZW11MkNNdmI4X2NTXyg8OCB4IGk4PiwgPDggeCBpOD4pICM3IHsKLStk ZWZpbmUgaW50ZXJuYWwgPDggeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNN dmI4X2NTXyg8OCB4IGk4PiwgPDggeCBpOD4pICM3IHsKLSAgICUzID0gYWxsb2NhIDw4IHggaTg+ LCBhbGlnbiA4Ci0gICAlNCA9IGFsbG9jYSA8OCB4IGk4PiwgYWxpZ24gOAotICAgJTUgPSBhbGxv Y2EgPDggeCBpOD4sIGFsaWduIDgKLUBAIC05NDYsNyArOTQ2LDcgQEAgZGVmaW5lIGRzb19sb2Nh bCA8OCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjhfY1NfKDw4IHgg aTg+LCA8OAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRl ZmluZSBkc29fbG9jYWwgPDE2IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJD TXZiMTZfY1NfKDwxNiB4IGk4PiwgPDE2IHggaTg+KSAjOSB7Ci0rZGVmaW5lIGludGVybmFsIDwx NiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjE2X2NTXyg8MTYgeCBp OD4sIDwxNiB4IGk4PikgIzkgewotICAgJTMgPSBhbGxvY2EgPDE2IHggaTg+LCBhbGlnbiAxNgot ICAgJTQgPSBhbGxvY2EgPDE2IHggaTg+LCBhbGlnbiAxNgotICAgJTUgPSBhbGxvY2EgPDE2IHgg aTg+LCBhbGlnbiAxNgotQEAgLTk2MCw3ICs5NjAsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxNiB4 IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjE2X2NTXyg8MTYgeCBpOD4s Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRz b19sb2NhbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIzMl9j U18oPDMyIHggaTg+LCA8MzIgeCBpOD4pICMxMSB7Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGk4 PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjMyX2NTXyg8MzIgeCBpOD4sIDwz MiB4IGk4PikgIzExIHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLSAgICU0 ID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLSAgICU1ID0gYWxsb2NhIDwzMiB4IGk4Piwg YWxpZ24gMzIKLUBAIC05NzQsNyArOTc0LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpOD4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIzMl9jU18oPDMyIHggaTg+LAotIH0K LSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9j YWwgc2lnbmV4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZzcyhpMTYgc2lnbmV4 dCwgaTE2IHNpZ25leHQpICMzIHsKLStkZWZpbmUgaW50ZXJuYWwgc2lnbmV4dCBpMTYgQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3NkaXZzcyhpMTYgc2lnbmV4dCwgaTE2IHNpZ25leHQpICMzIHsK LSAgICUzID0gYWxsb2NhIGkxNiwgYWxpZ24gMgotICAgJTQgPSBhbGxvY2EgaTE2LCBhbGlnbiAy Ci0gICAlNSA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLUBAIC0xMDU4LDcgKzEwNTgsNyBA QCBkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMTY+IEBfWk43ZGV0YWlsczEzX19pbXBsX2RpdnJlbUlM aTFFRUV1MkNNdmJUX19zUzFfUzFfdTJDTQotIGRlY2xhcmUgPDEgeCBpMTY+IEBsbHZtLmdlbngu cmRyZWdpb25pLnYxaTE2LnYxaTE2LmkxNig8MSB4IGkxNj4sIGkzMiwgaTMyLCBpMzIsIGkxNiwg aTMyKSAjMgotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5l IGRzb19sb2NhbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIx X3NTXyg8MSB4IGkxNj4sIDwxIHggaTE2PikgIzMgewotK2RlZmluZSBpbnRlcm5hbCA8MSB4IGkx Nj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIxX3NTXyg8MSB4IGkxNj4sIDwx IHggaTE2PikgIzMgewotICAgJTMgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi0gICAlNCA9 IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLSAgICU1ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxp Z24gMgotQEAgLTEwNzQsNyArMTA3NCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDEgeCBpMTY+IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMV9zU18oPDEgeCBpMTY+LCA8Ci0gfQot IAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2Nh bCA8MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIyX3NTXyg8MiB4 IGkxNj4sIDwyIHggaTE2PikgIzUgewotK2RlZmluZSBpbnRlcm5hbCA8MiB4IGkxNj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIyX3NTXyg8MiB4IGkxNj4sIDwyIHggaTE2Pikg IzUgewotICAgJTMgPSBhbGxvY2EgPDIgeCBpMTY+LCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSA8 MiB4IGkxNj4sIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwyIHggaTE2PiwgYWxpZ24gNAotQEAg LTExNDMsNyArMTE0Myw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MiB4IGkxNj4gQF9aTjdkZXRhaWxz MTNfX2ltcGxfZGl2cmVtSUxpMkVFRXUyQ012YlRfX3NTMV9TMV91MkNNCi0gfQotIAotIDsgRnVu Y3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8NCB4IGkx Nj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmI0X3NTXyg8NCB4IGkxNj4sIDw0 IHggaTE2PikgIzcgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4IGkxNj4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3NkaXZ1MkNNdmI0X3NTXyg8NCB4IGkxNj4sIDw0IHggaTE2PikgIzcgewotICAg JTMgPSBhbGxvY2EgPDQgeCBpMTY+LCBhbGlnbiA4Ci0gICAlNCA9IGFsbG9jYSA8NCB4IGkxNj4s IGFsaWduIDgKLSAgICU1ID0gYWxsb2NhIDw0IHggaTE2PiwgYWxpZ24gOAotQEAgLTEzNTAsNyAr MTM1MCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MTYgeCBpMTY+IEBfWk43ZGV0YWlsczEzX19pbXBs X2RpdnJlbUlMaTE2RUVFdTJDTXZiVF9fc1MxX1MxX3UyCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0 cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpMTY+IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMzJfc1NfKDwzMiB4IGkxNj4sIDwzMiB4IGkx Nj4pICMxMyB7Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNp Y19pbXBsX3NkaXZ1MkNNdmIzMl9zU18oPDMyIHggaTE2PiwgPDMyIHggaTE2PikgIzEzIHsKLSAg ICUzID0gYWxsb2NhIDwzMiB4IGkxNj4sIGFsaWduIDY0Ci0gICAlNCA9IGFsbG9jYSA8MzIgeCBp MTY+LCBhbGlnbiA2NAotICAgJTUgPSBhbGxvY2EgPDMyIHggaTE2PiwgYWxpZ24gNjQKLUBAIC0x NDE5LDcgKzE0MTksNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTE2PiBAX1pON2RldGFpbHMx M19faW1wbF9kaXZyZW1JTGkzMkVFRXUyQ012YlRfX3NTMV9TMV91MgotIH0KLSAKLSA7IEZ1bmN0 aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgc2lnbmV4dCBp MTYgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW1zcyhpMTYgc2lnbmV4dCwgaTE2IHNpZ25l eHQpICMzIHsKLStkZWZpbmUgaW50ZXJuYWwgc2lnbmV4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNp Y19pbXBsX3NyZW1zcyhpMTYgc2lnbmV4dCwgaTE2IHNpZ25leHQpICMzIHsKLSAgICUzID0gYWxs b2NhIGkxNiwgYWxpZ24gMgotICAgJTQgPSBhbGxvY2EgaTE2LCBhbGlnbiAyCi0gICAlNSA9IGFs bG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLUBAIC0xNDQ1LDcgKzE0NDUsNyBAQCBkZWZpbmUgZHNv X2xvY2FsIHNpZ25leHQgaTE2IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtc3MoaTE2IHNp Z25leHQsIGkxNiBzaQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2lu ZAotLWRlZmluZSBkc29fbG9jYWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9z cmVtdTJDTXZiMV9zU18oPDEgeCBpMTY+LCA8MSB4IGkxNj4pICMzIHsKLStkZWZpbmUgaW50ZXJu YWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMV9zU18oPDEg eCBpMTY+LCA8MSB4IGkxNj4pICMzIHsKLSAgICUzID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24g MgotICAgJTQgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi0gICAlNSA9IGFsbG9jYSA8MSB4 IGkxNj4sIGFsaWduIDIKLUBAIC0xNDU5LDcgKzE0NTksNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwx IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjFfc1NfKDwxIHggaTE2 PiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmlu ZSBkc29fbG9jYWwgPDIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZi Ml9zU18oPDIgeCBpMTY+LCA8MiB4IGkxNj4pICM1IHsKLStkZWZpbmUgaW50ZXJuYWwgPDIgeCBp MTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMl9zU18oPDIgeCBpMTY+LCA8 MiB4IGkxNj4pICM1IHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTE2PiwgYWxpZ24gNAotICAgJTQg PSBhbGxvY2EgPDIgeCBpMTY+LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8MiB4IGkxNj4sIGFs aWduIDQKLUBAIC0xNDczLDcgKzE0NzMsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwyIHggaTE2PiBA X1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjJfc1NfKDwyIHggaTE2PiwgPAotIH0K LSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9j YWwgPDQgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiNF9zU18oPDQg eCBpMTY+LCA8NCB4IGkxNj4pICM3IHsKLStkZWZpbmUgaW50ZXJuYWwgPDQgeCBpMTY+IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiNF9zU18oPDQgeCBpMTY+LCA8NCB4IGkxNj4p ICM3IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTE2PiwgYWxpZ24gOAotICAgJTQgPSBhbGxvY2Eg PDQgeCBpMTY+LCBhbGlnbiA4Ci0gICAlNSA9IGFsbG9jYSA8NCB4IGkxNj4sIGFsaWduIDgKLUBA IC0xNDg3LDcgKzE0ODcsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw0IHggaTE2PiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjRfc1NfKDw0IHggaTE2PiwgPAotIH0KLSAKLSA7IEZ1 bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDggeCBp MTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiOF9zU18oPDggeCBpMTY+LCA8 OCB4IGkxNj4pICM5IHsKLStkZWZpbmUgaW50ZXJuYWwgPDggeCBpMTY+IEBfWjI0X19jbV9pbnRy aW5zaWNfaW1wbF9zcmVtdTJDTXZiOF9zU18oPDggeCBpMTY+LCA8OCB4IGkxNj4pICM5IHsKLSAg ICUzID0gYWxsb2NhIDw4IHggaTE2PiwgYWxpZ24gMTYKLSAgICU0ID0gYWxsb2NhIDw4IHggaTE2 PiwgYWxpZ24gMTYKLSAgICU1ID0gYWxsb2NhIDw4IHggaTE2PiwgYWxpZ24gMTYKLUBAIC0xNTAx LDcgKzE1MDEsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw4IHggaTE2PiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfc3JlbXUyQ012Yjhfc1NfKDw4IHggaTE2PiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9u IEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDE2IHggaTE2PiBA X1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjE2X3NTXyg8MTYgeCBpMTY+LCA8MTYg eCBpMTY+KSAjMTEgewotK2RlZmluZSBpbnRlcm5hbCA8MTYgeCBpMTY+IEBfWjI0X19jbV9pbnRy aW5zaWNfaW1wbF9zcmVtdTJDTXZiMTZfc1NfKDwxNiB4IGkxNj4sIDwxNiB4IGkxNj4pICMxMSB7 Ci0gICAlMyA9IGFsbG9jYSA8MTYgeCBpMTY+LCBhbGlnbiAzMgotICAgJTQgPSBhbGxvY2EgPDE2 IHggaTE2PiwgYWxpZ24gMzIKLSAgICU1ID0gYWxsb2NhIDwxNiB4IGkxNj4sIGFsaWduIDMyCi1A QCAtMTUxNSw3ICsxNTE1LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MTYgeCBpMTY+IEBfWjI0X19j bV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMTZfc1NfKDwxNiB4IGkxNj4KLSB9Ci0gCi0gOyBG dW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwzMiB4 IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIzMl9zU18oPDMyIHggaTE2 PiwgPDMyIHggaTE2PikgIzEzIHsKLStkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTE2PiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjMyX3NTXyg8MzIgeCBpMTY+LCA8MzIgeCBpMTY+ KSAjMTMgewotICAgJTMgPSBhbGxvY2EgPDMyIHggaTE2PiwgYWxpZ24gNjQKLSAgICU0ID0gYWxs b2NhIDwzMiB4IGkxNj4sIGFsaWduIDY0Ci0gICAlNSA9IGFsbG9jYSA8MzIgeCBpMTY+LCBhbGln biA2NAotQEAgLTE1MjksNyArMTUyOSw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDMyIHggaTE2PiBA X1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjMyX3NTXyg8MzIgeCBpMTY+Ci0gfQot IAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2Nh bCBpMzIgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZpaShpMzIsIGkzMikgIzE0IHsKLStk ZWZpbmUgaW50ZXJuYWwgaTMyIEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2aWkoaTMyLCBp MzIpICMxNCB7Ci0gICAlMyA9IGFsbG9jYSBpMzIsIGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIGkz MiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci1AQCAtMTczMCw3 ICsxNzMwLDcgQEAgZGVmaW5lIGludGVybmFsIDwxIHggaTMyPiBAX1pON2RldGFpbHMxM19faW1w bF9kaXZyZW1JTGkxRUVFdTJDTXZiVF9faVMxX1MxX3UyQ00KLSBkZWNsYXJlIDwxIHggaTMyPiBA bGx2bS5nZW54LnJkcmVnaW9uaS52MWkzMi52MWkzMi5pMTYoPDEgeCBpMzI+LCBpMzIsIGkzMiwg aTMyLCBpMTYsIGkzMikgIzIKLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2lu ZAotLWRlZmluZSBkc29fbG9jYWwgPDEgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9z ZGl2dTJDTXZiMV9pU18oPDEgeCBpMzI+LCA8MSB4IGkzMj4pICMxNCB7Ci0rZGVmaW5lIGludGVy bmFsIDwxIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjFfaVNfKDwx IHggaTMyPiwgPDEgeCBpMzI+KSAjMTQgewotICAgJTMgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGln biA0Ci0gICAlNCA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwx IHggaTMyPiwgYWxpZ24gNAotQEAgLTE3NDYsNyArMTc0Niw3IEBAIGRlZmluZSBkc29fbG9jYWwg PDEgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMV9pU18oPDEgeCBp MzI+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVm aW5lIGRzb19sb2NhbCA8MiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNN dmIyX2lTXyg8MiB4IGkzMj4sIDwyIHggaTMyPikgIzE1IHsKLStkZWZpbmUgaW50ZXJuYWwgPDIg eCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMl9pU18oPDIgeCBpMzI+ LCA8MiB4IGkzMj4pICMxNSB7Ci0gICAlMyA9IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWduIDgKLSAg ICU0ID0gYWxsb2NhIDwyIHggaTMyPiwgYWxpZ24gOAotICAgJTUgPSBhbGxvY2EgPDIgeCBpMzI+ LCBhbGlnbiA4Ci1AQCAtMTkzMiw3ICsxOTMyLDcgQEAgZGVmaW5lIGludGVybmFsIDwyIHggaTMy PiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1JTGkyRUVFdTJDTXZiVF9faVMxX1MxX3UyQ00K LSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNv X2xvY2FsIDw0IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjRfaVNf KDw0IHggaTMyPiwgPDQgeCBpMzI+KSAjMTYgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4IGkzMj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmI0X2lTXyg8NCB4IGkzMj4sIDw0IHgg aTMyPikgIzE2IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLSAgICU0ID0g YWxsb2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLSAgICU1ID0gYWxsb2NhIDw0IHggaTMyPiwgYWxp Z24gMTYKLUBAIC0yNDkwLDcgKzI0OTAsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTMyPiBA X1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1JTGkxNkVFRXUyQ012YlRfX2lTMV9TMV91MgotIH0K LSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9j YWwgPDMyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjMyX2lTXyg8 MzIgeCBpMzI+LCA8MzIgeCBpMzI+KSAjMTkgewotK2RlZmluZSBpbnRlcm5hbCA8MzIgeCBpMzI+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMzJfaVNfKDwzMiB4IGkzMj4sIDwz MiB4IGkzMj4pICMxOSB7Ci0gICAlMyA9IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAxMjgKLSAg ICU0ID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFsaWduIDEyOAotICAgJTUgPSBhbGxvY2EgPDMyIHgg aTMyPiwgYWxpZ24gMTI4Ci1AQCAtMjY3Niw3ICsyNjc2LDcgQEAgZGVmaW5lIGludGVybmFsIDwz MiB4IGkzMj4gQF9aTjdkZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMzJFRUV1MkNNdmJUX19pUzFf UzFfdTIKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZp bmUgZHNvX2xvY2FsIGkzMiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbWlpKGkzMiwgaTMy KSAjMTQgewotK2RlZmluZSBpbnRlcm5hbCBpMzIgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Ny ZW1paShpMzIsIGkzMikgIzE0IHsKLSAgICUzID0gYWxsb2NhIGkzMiwgYWxpZ24gNAotICAgJTQg PSBhbGxvY2EgaTMyLCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQK LUBAIC0yNzAyLDcgKzI3MDIsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIGkzMiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfc3JlbWlpKGkzMiwgaTMyKSAjMTQgewotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0 dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEgeCBpMzI+IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMV9pU18oPDEgeCBpMzI+LCA8MSB4IGkzMj4p ICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIDwxIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfc3JlbXUyQ012YjFfaVNfKDwxIHggaTMyPiwgPDEgeCBpMzI+KSAjMTQgewotICAgJTMgPSBh bGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWdu IDQKLSAgICU1ID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotQEAgLTI3MTYsNyArMjcxNiw3 IEBAIGRlZmluZSBkc29fbG9jYWwgPDEgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9z cmVtdTJDTXZiMV9pU18oPDEgeCBpMzI+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5v aW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MiB4IGkzMj4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3NyZW11MkNNdmIyX2lTXyg8MiB4IGkzMj4sIDwyIHggaTMyPikgIzE1IHsK LStkZWZpbmUgaW50ZXJuYWwgPDIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVt dTJDTXZiMl9pU18oPDIgeCBpMzI+LCA8MiB4IGkzMj4pICMxNSB7Ci0gICAlMyA9IGFsbG9jYSA8 MiB4IGkzMj4sIGFsaWduIDgKLSAgICU0ID0gYWxsb2NhIDwyIHggaTMyPiwgYWxpZ24gOAotICAg JTUgPSBhbGxvY2EgPDIgeCBpMzI+LCBhbGlnbiA4Ci1AQCAtMjczMCw3ICsyNzMwLDcgQEAgZGVm aW5lIGRzb19sb2NhbCA8MiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNN dmIyX2lTXyg8MiB4IGkzMj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUg bm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDw0IHggaTMyPiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfc3JlbXUyQ012YjRfaVNfKDw0IHggaTMyPiwgPDQgeCBpMzI+KSAjMTYgewotK2RlZmlu ZSBpbnRlcm5hbCA8NCB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI0 X2lTXyg8NCB4IGkzMj4sIDw0IHggaTMyPikgIzE2IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTMy PiwgYWxpZ24gMTYKLSAgICU0ID0gYWxsb2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLSAgICU1ID0g YWxsb2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLUBAIC0yNzQ0LDcgKzI3NDQsNyBAQCBkZWZpbmUg ZHNvX2xvY2FsIDw0IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjRf aVNfKDw0IHggaTMyPiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vu d2luZAotLWRlZmluZSBkc29fbG9jYWwgPDggeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF9zcmVtdTJDTXZiOF9pU18oPDggeCBpMzI+LCA8OCB4IGkzMj4pICMxNyB7Ci0rZGVmaW5lIGlu dGVybmFsIDw4IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjhfaVNf KDw4IHggaTMyPiwgPDggeCBpMzI+KSAjMTcgewotICAgJTMgPSBhbGxvY2EgPDggeCBpMzI+LCBh bGlnbiAzMgotICAgJTQgPSBhbGxvY2EgPDggeCBpMzI+LCBhbGlnbiAzMgotICAgJTUgPSBhbGxv Y2EgPDggeCBpMzI+LCBhbGlnbiAzMgotQEAgLTI3NTgsNyArMjc1OCw3IEBAIGRlZmluZSBkc29f bG9jYWwgPDggeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiOF9pU18o PDggeCBpMzI+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5k Ci0tZGVmaW5lIGRzb19sb2NhbCA8MTYgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9z cmVtdTJDTXZiMTZfaVNfKDwxNiB4IGkzMj4sIDwxNiB4IGkzMj4pICMxOCB7Ci0rZGVmaW5lIGlu dGVybmFsIDwxNiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxNl9p U18oPDE2IHggaTMyPiwgPDE2IHggaTMyPikgIzE4IHsKLSAgICUzID0gYWxsb2NhIDwxNiB4IGkz Mj4sIGFsaWduIDY0Ci0gICAlNCA9IGFsbG9jYSA8MTYgeCBpMzI+LCBhbGlnbiA2NAotICAgJTUg PSBhbGxvY2EgPDE2IHggaTMyPiwgYWxpZ24gNjQKLUBAIC0yNzcyLDcgKzI3NzIsNyBAQCBkZWZp bmUgZHNvX2xvY2FsIDwxNiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNN dmIxNl9pU18oPDE2IHggaTMyPgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBu b3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDMyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfc3JlbXUyQ012YjMyX2lTXyg8MzIgeCBpMzI+LCA8MzIgeCBpMzI+KSAjMTkgewotK2Rl ZmluZSBpbnRlcm5hbCA8MzIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJD TXZiMzJfaVNfKDwzMiB4IGkzMj4sIDwzMiB4IGkzMj4pICMxOSB7Ci0gICAlMyA9IGFsbG9jYSA8 MzIgeCBpMzI+LCBhbGlnbiAxMjgKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFsaWduIDEy OAotICAgJTUgPSBhbGxvY2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4Ci1AQCAtMjc4Niw3ICsyNzg2 LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF9zcmVtdTJDTXZiMzJfaVNfKDwzMiB4IGkzMj4KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczog bm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIHplcm9leHQgaTggQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3VkaXZoaChpOCB6ZXJvZXh0LCBpOCB6ZXJvZXh0KSAjMjEgewotK2Rl ZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGk4IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2aGgo aTggemVyb2V4dCwgaTggemVyb2V4dCkgIzIxIHsKLSAgICUzID0gYWxsb2NhIGk4LCBhbGlnbiAx Ci0gICAlNCA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgPDEgeCBpOD4sIGFs aWduIDEKLUBAIC0yODQ0LDcgKzI4NDQsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDEgeCBpOD4gQF9a TjdkZXRhaWxzMTRfX2ltcGxfdWRpdnJlbUlMaTFFRUV1MkNNdmJUX19oUzFfUzFfdTJDTQotIH0K LSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9j YWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIxX2hTXyg8MSB4 IGk4PiwgPDEgeCBpOD4pICMyMSB7Ci0rZGVmaW5lIGludGVybmFsIDwxIHggaTg+IEBfWjI0X19j bV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMV9oU18oPDEgeCBpOD4sIDwxIHggaTg+KSAjMjEg ewotICAgJTMgPSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLSAgICU0ID0gYWxsb2NhIDwxIHgg aTg+LCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotQEAgLTI4NjAs NyArMjg2MCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNp Y19pbXBsX3VkaXZ1MkNNdmIxX2hTXyg8MSB4IGk4PiwgPDEKLSB9Ci0gCi0gOyBGdW5jdGlvbiBB dHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHggaTg+IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMl9oU18oPDIgeCBpOD4sIDwyIHggaTg+KSAj MjIgewotK2RlZmluZSBpbnRlcm5hbCA8MiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf dWRpdnUyQ012YjJfaFNfKDwyIHggaTg+LCA8MiB4IGk4PikgIzIyIHsKLSAgICUzID0gYWxsb2Nh IDwyIHggaTg+LCBhbGlnbiAyCi0gICAlNCA9IGFsbG9jYSA8MiB4IGk4PiwgYWxpZ24gMgotICAg JTUgPSBhbGxvY2EgPDIgeCBpOD4sIGFsaWduIDIKLUBAIC0yOTA2LDcgKzI5MDYsNyBAQCBkZWZp bmUgaW50ZXJuYWwgPDIgeCBpOD4gQF9aTjdkZXRhaWxzMTRfX2ltcGxfdWRpdnJlbUlMaTJFRUV1 MkNNdmJUX19oUzFfUzFfdTJDTQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBu b3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3VkaXZ1MkNNdmI0X2hTXyg8NCB4IGk4PiwgPDQgeCBpOD4pICMxNCB7Ci0rZGVmaW5lIGlu dGVybmFsIDw0IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiNF9oU18o PDQgeCBpOD4sIDw0IHggaTg+KSAjMTQgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpOD4sIGFsaWdu IDQKLSAgICU0ID0gYWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8NCB4 IGk4PiwgYWxpZ24gNAotQEAgLTMwNDQsNyArMzA0NCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MTYg eCBpOD4gQF9aTjdkZXRhaWxzMTRfX2ltcGxfdWRpdnJlbUlMaTE2RUVFdTJDTXZiVF9faFMxX1Mx X3UyCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5l IGRzb19sb2NhbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIz Ml9oU18oPDMyIHggaTg+LCA8MzIgeCBpOD4pICMxNyB7Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4 IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjMyX2hTXyg8MzIgeCBpOD4s IDwzMiB4IGk4PikgIzE3IHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLSAg ICU0ID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLSAgICU1ID0gYWxsb2NhIDwzMiB4IGk4 PiwgYWxpZ24gMzIKLUBAIC0zMDkwLDcgKzMwOTAsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDMyIHgg aTg+IEBfWk43ZGV0YWlsczE0X19pbXBsX3VkaXZyZW1JTGkzMkVFRXUyQ012YlRfX2hTMV9TMV91 MgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBk c29fbG9jYWwgemVyb2V4dCBpOCBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbWhoKGk4IHpl cm9leHQsIGk4IHplcm9leHQpICMyMSB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTggQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW1oaChpOCB6ZXJvZXh0LCBpOCB6ZXJvZXh0KSAjMjEg ewotICAgJTMgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU0ID0gYWxsb2NhIGk4LCBhbGlnbiAx Ci0gICAlNSA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotQEAgLTMxMTYsNyArMzExNiw3IEBA IGRlZmluZSBkc29fbG9jYWwgemVyb2V4dCBpOCBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJl bWhoKGk4IHplcm9leHQsIGk4IHplcm9lCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5s aW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4IGk4PiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfdXJlbXUyQ012YjFfaFNfKDwxIHggaTg+LCA8MSB4IGk4PikgIzIxIHsKLStkZWZp bmUgaW50ZXJuYWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIx X2hTXyg8MSB4IGk4PiwgPDEgeCBpOD4pICMyMSB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGk4Piwg YWxpZ24gMQotICAgJTQgPSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLSAgICU1ID0gYWxsb2Nh IDwxIHggaTg+LCBhbGlnbiAxCi1AQCAtMzEzMCw3ICszMTMwLDcgQEAgZGVmaW5lIGRzb19sb2Nh bCA8MSB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjFfaFNfKDwxIHgg aTg+LCA8MQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRl ZmluZSBkc29fbG9jYWwgPDIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNN dmIyX2hTXyg8MiB4IGk4PiwgPDIgeCBpOD4pICMyMiB7Ci0rZGVmaW5lIGludGVybmFsIDwyIHgg aTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMl9oU18oPDIgeCBpOD4sIDwy IHggaTg+KSAjMjIgewotICAgJTMgPSBhbGxvY2EgPDIgeCBpOD4sIGFsaWduIDIKLSAgICU0ID0g YWxsb2NhIDwyIHggaTg+LCBhbGlnbiAyCi0gICAlNSA9IGFsbG9jYSA8MiB4IGk4PiwgYWxpZ24g MgotQEAgLTMxNDQsNyArMzE0NCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDIgeCBpOD4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIyX2hTXyg8MiB4IGk4PiwgPDIKLSB9Ci0gCi0g OyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDw0 IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiNF9oU18oPDQgeCBpOD4s IDw0IHggaTg+KSAjMTQgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4IGk4PiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfdXJlbXUyQ012YjRfaFNfKDw0IHggaTg+LCA8NCB4IGk4PikgIzE0IHsKLSAg ICUzID0gYWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSA8NCB4IGk4Piwg YWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDQgeCBpOD4sIGFsaWduIDQKLUBAIC0zMTU4LDcgKzMx NTgsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw0IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF91cmVtdTJDTXZiNF9oU18oPDQgeCBpOD4sIDw0Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6 IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8OCB4IGk4PiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjhfaFNfKDw4IHggaTg+LCA8OCB4IGk4PikgIzE1IHsK LStkZWZpbmUgaW50ZXJuYWwgPDggeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11 MkNNdmI4X2hTXyg8OCB4IGk4PiwgPDggeCBpOD4pICMxNSB7Ci0gICAlMyA9IGFsbG9jYSA8OCB4 IGk4PiwgYWxpZ24gOAotICAgJTQgPSBhbGxvY2EgPDggeCBpOD4sIGFsaWduIDgKLSAgICU1ID0g YWxsb2NhIDw4IHggaTg+LCBhbGlnbiA4Ci1AQCAtMzE3Miw3ICszMTcyLDcgQEAgZGVmaW5lIGRz b19sb2NhbCA8OCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjhfaFNf KDw4IHggaTg+LCA8OAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2lu ZAotLWRlZmluZSBkc29fbG9jYWwgPDE2IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91 cmVtdTJDTXZiMTZfaFNfKDwxNiB4IGk4PiwgPDE2IHggaTg+KSAjMTYgewotK2RlZmluZSBpbnRl cm5hbCA8MTYgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxNl9oU18o PDE2IHggaTg+LCA8MTYgeCBpOD4pICMxNiB7Ci0gICAlMyA9IGFsbG9jYSA8MTYgeCBpOD4sIGFs aWduIDE2Ci0gICAlNCA9IGFsbG9jYSA8MTYgeCBpOD4sIGFsaWduIDE2Ci0gICAlNSA9IGFsbG9j YSA8MTYgeCBpOD4sIGFsaWduIDE2Ci1AQCAtMzE4Niw3ICszMTg2LDcgQEAgZGVmaW5lIGRzb19s b2NhbCA8MTYgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxNl9oU18o PDE2IHggaTg+LAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAot LWRlZmluZSBkc29fbG9jYWwgPDMyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVt dTJDTXZiMzJfaFNfKDwzMiB4IGk4PiwgPDMyIHggaTg+KSAjMTcgewotK2RlZmluZSBpbnRlcm5h bCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIzMl9oU18oPDMy IHggaTg+LCA8MzIgeCBpOD4pICMxNyB7Ci0gICAlMyA9IGFsbG9jYSA8MzIgeCBpOD4sIGFsaWdu IDMyCi0gICAlNCA9IGFsbG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi0gICAlNSA9IGFsbG9jYSA8 MzIgeCBpOD4sIGFsaWduIDMyCi1AQCAtMzIwMCw3ICszMjAwLDcgQEAgZGVmaW5lIGRzb19sb2Nh bCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIzMl9oU18oPDMy IHggaTg+LAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRl ZmluZSBkc29fbG9jYWwgemVyb2V4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ0 dChpMTYgemVyb2V4dCwgaTE2IHplcm9leHQpICMyMiB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9l eHQgaTE2IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dHQoaTE2IHplcm9leHQsIGkxNiB6 ZXJvZXh0KSAjMjIgewotICAgJTMgPSBhbGxvY2EgaTE2LCBhbGlnbiAyCi0gICAlNCA9IGFsbG9j YSBpMTYsIGFsaWduIDIKLSAgICU1ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotQEAgLTMy NzgsNyArMzI3OCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MSB4IGkxNj4gQF9aTjdkZXRhaWxzMTRf X2ltcGxfdWRpdnJlbUlMaTFFRUV1MkNNdmJUX190UzFfUzFfdTJDCi0gfQotIAotIDsgRnVuY3Rp b24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkxNj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIxX3RTXyg8MSB4IGkxNj4sIDwxIHgg aTE2PikgIzIyIHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF91ZGl2dTJDTXZiMV90U18oPDEgeCBpMTY+LCA8MSB4IGkxNj4pICMyMiB7Ci0gICAl MyA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLSAgICU0ID0gYWxsb2NhIDwxIHggaTE2Piwg YWxpZ24gMgotICAgJTUgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi1AQCAtMzI5NCw3ICsz Mjk0LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3VkaXZ1MkNNdmIxX3RTXyg8MSB4IGkxNj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRy czogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHggaTE2PiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjJfdFNfKDwyIHggaTE2PiwgPDIgeCBpMTY+KSAj MTQgewotK2RlZmluZSBpbnRlcm5hbCA8MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3VkaXZ1MkNNdmIyX3RTXyg8MiB4IGkxNj4sIDwyIHggaTE2PikgIzE0IHsKLSAgICUzID0gYWxs b2NhIDwyIHggaTE2PiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2EgPDIgeCBpMTY+LCBhbGlnbiA0 Ci0gICAlNSA9IGFsbG9jYSA8MiB4IGkxNj4sIGFsaWduIDQKLUBAIC0zMzYwLDcgKzMzNjAsNyBA QCBkZWZpbmUgaW50ZXJuYWwgPDIgeCBpMTY+IEBfWk43ZGV0YWlsczE0X19pbXBsX3VkaXZyZW1J TGkyRUVFdTJDTXZiVF9fdFMxX1MxX3UyQwotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lu bGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBpMTY+IEBfWjI0X19jbV9pbnRy aW5zaWNfaW1wbF91ZGl2dTJDTXZiNF90U18oPDQgeCBpMTY+LCA8NCB4IGkxNj4pICMxNSB7Ci0r ZGVmaW5lIGludGVybmFsIDw0IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUy Q012YjRfdFNfKDw0IHggaTE2PiwgPDQgeCBpMTY+KSAjMTUgewotICAgJTMgPSBhbGxvY2EgPDQg eCBpMTY+LCBhbGlnbiA4Ci0gICAlNCA9IGFsbG9jYSA8NCB4IGkxNj4sIGFsaWduIDgKLSAgICU1 ID0gYWxsb2NhIDw0IHggaTE2PiwgYWxpZ24gOAotQEAgLTM1NTgsNyArMzU1OCw3IEBAIGRlZmlu ZSBpbnRlcm5hbCA8MTYgeCBpMTY+IEBfWk43ZGV0YWlsczE0X19pbXBsX3VkaXZyZW1JTGkxNkVF RXUyQ012YlRfX3RTMV9TMV91Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5v dW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF91ZGl2dTJDTXZiMzJfdFNfKDwzMiB4IGkxNj4sIDwzMiB4IGkxNj4pICMxOCB7Ci0rZGVm aW5lIGludGVybmFsIDwzMiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNN dmIzMl90U18oPDMyIHggaTE2PiwgPDMyIHggaTE2PikgIzE4IHsKLSAgICUzID0gYWxsb2NhIDwz MiB4IGkxNj4sIGFsaWduIDY0Ci0gICAlNCA9IGFsbG9jYSA8MzIgeCBpMTY+LCBhbGlnbiA2NAot ICAgJTUgPSBhbGxvY2EgPDMyIHggaTE2PiwgYWxpZ24gNjQKLUBAIC0zNjI0LDcgKzM2MjQsNyBA QCBkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTE2PiBAX1pON2RldGFpbHMxNF9faW1wbF91ZGl2cmVt SUxpMzJFRUV1MkNNdmJUX190UzFfUzFfdQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lu bGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgemVyb2V4dCBpMTYgQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3VyZW10dChpMTYgemVyb2V4dCwgaTE2IHplcm9leHQpICMyMiB7Ci0rZGVm aW5lIGludGVybmFsIHplcm9leHQgaTE2IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdHQo aTE2IHplcm9leHQsIGkxNiB6ZXJvZXh0KSAjMjIgewotICAgJTMgPSBhbGxvY2EgaTE2LCBhbGln biAyCi0gICAlNCA9IGFsbG9jYSBpMTYsIGFsaWduIDIKLSAgICU1ID0gYWxsb2NhIDwxIHggaTE2 PiwgYWxpZ24gMgotQEAgLTM2NTAsNyArMzY1MCw3IEBAIGRlZmluZSBkc29fbG9jYWwgemVyb2V4 dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW10dChpMTYgemVyb2V4dCwgaTE2IHpl Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRz b19sb2NhbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxX3RT Xyg8MSB4IGkxNj4sIDwxIHggaTE2PikgIzIyIHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMTY+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMV90U18oPDEgeCBpMTY+LCA8MSB4 IGkxNj4pICMyMiB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLSAgICU0ID0g YWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotICAgJTUgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGln biAyCi1AQCAtMzY2NCw3ICszNjY0LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkxNj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxX3RTXyg8MSB4IGkxNj4sIDwKLSB9Ci0g Ci0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2Fs IDwyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjJfdFNfKDwyIHgg aTE2PiwgPDIgeCBpMTY+KSAjMTQgewotK2RlZmluZSBpbnRlcm5hbCA8MiB4IGkxNj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIyX3RTXyg8MiB4IGkxNj4sIDwyIHggaTE2Pikg IzE0IHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTE2PiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2Eg PDIgeCBpMTY+LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8MiB4IGkxNj4sIGFsaWduIDQKLUBA IC0zNjc4LDcgKzM2NzgsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwyIHggaTE2PiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjJfdFNfKDwyIHggaTE2PiwgPAotIH0KLSAKLSA7IEZ1 bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBp MTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiNF90U18oPDQgeCBpMTY+LCA8 NCB4IGkxNj4pICMxNSB7Ci0rZGVmaW5lIGludGVybmFsIDw0IHggaTE2PiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfdXJlbXUyQ012YjRfdFNfKDw0IHggaTE2PiwgPDQgeCBpMTY+KSAjMTUgewot ICAgJTMgPSBhbGxvY2EgPDQgeCBpMTY+LCBhbGlnbiA4Ci0gICAlNCA9IGFsbG9jYSA8NCB4IGkx Nj4sIGFsaWduIDgKLSAgICU1ID0gYWxsb2NhIDw0IHggaTE2PiwgYWxpZ24gOAotQEAgLTM2OTIs NyArMzY5Miw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDQgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF91cmVtdTJDTXZiNF90U18oPDQgeCBpMTY+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24g QXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8OCB4IGkxNj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI4X3RTXyg8OCB4IGkxNj4sIDw4IHggaTE2 PikgIzE2IHsKLStkZWZpbmUgaW50ZXJuYWwgPDggeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF91cmVtdTJDTXZiOF90U18oPDggeCBpMTY+LCA8OCB4IGkxNj4pICMxNiB7Ci0gICAlMyA9 IGFsbG9jYSA8OCB4IGkxNj4sIGFsaWduIDE2Ci0gICAlNCA9IGFsbG9jYSA8OCB4IGkxNj4sIGFs aWduIDE2Ci0gICAlNSA9IGFsbG9jYSA8OCB4IGkxNj4sIGFsaWduIDE2Ci1AQCAtMzcwNiw3ICsz NzA2LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8OCB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3VyZW11MkNNdmI4X3RTXyg8OCB4IGkxNj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRy czogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxNiB4IGkxNj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxNl90U18oPDE2IHggaTE2PiwgPDE2IHggaTE2 PikgIzE3IHsKLStkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTE2PiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfdXJlbXUyQ012YjE2X3RTXyg8MTYgeCBpMTY+LCA8MTYgeCBpMTY+KSAjMTcgewotICAg JTMgPSBhbGxvY2EgPDE2IHggaTE2PiwgYWxpZ24gMzIKLSAgICU0ID0gYWxsb2NhIDwxNiB4IGkx Nj4sIGFsaWduIDMyCi0gICAlNSA9IGFsbG9jYSA8MTYgeCBpMTY+LCBhbGlnbiAzMgotQEAgLTM3 MjAsNyArMzcyMCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDE2IHggaTE2PiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfdXJlbXUyQ012YjE2X3RTXyg8MTYgeCBpMTY+Ci0gfQotIAotIDsgRnVuY3Rp b24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpMTY+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMzJfdFNfKDwzMiB4IGkxNj4sIDwz MiB4IGkxNj4pICMxOCB7Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGkxNj4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3VyZW11MkNNdmIzMl90U18oPDMyIHggaTE2PiwgPDMyIHggaTE2PikgIzE4 IHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGkxNj4sIGFsaWduIDY0Ci0gICAlNCA9IGFsbG9jYSA8 MzIgeCBpMTY+LCBhbGlnbiA2NAotICAgJTUgPSBhbGxvY2EgPDMyIHggaTE2PiwgYWxpZ24gNjQK LUBAIC0zNzM0LDcgKzM3MzQsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGkxNj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIzMl90U18oPDMyIHggaTE2PgotIH0KLSAKLSA7 IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgaTMy IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2amooaTMyLCBpMzIpICMxNCB7Ci0rZGVmaW5l IGludGVybmFsIGkzMiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdmpqKGkzMiwgaTMyKSAj MTQgewotICAgJTMgPSBhbGxvY2EgaTMyLCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSBpMzIsIGFs aWduIDQKLSAgICU1ID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotQEAgLTM4OTIsNyArMzg5 Miw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MSB4IGkzMj4gQF9aTjdkZXRhaWxzMTRfX2ltcGxfdWRp dnJlbUlMaTFFRUV1MkNNdmJUX19qUzFfUzFfdTJDCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6 IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkzMj4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIxX2pTXyg8MSB4IGkzMj4sIDwxIHggaTMyPikgIzE0 IHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91 ZGl2dTJDTXZiMV9qU18oPDEgeCBpMzI+LCA8MSB4IGkzMj4pICMxNCB7Ci0gICAlMyA9IGFsbG9j YSA8MSB4IGkzMj4sIGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAot ICAgJTUgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci1AQCAtMzkwOCw3ICszOTA4LDcgQEAg ZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1 MkNNdmIxX2pTXyg8MSB4IGkzMj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxp bmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHggaTMyPiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfdWRpdnUyQ012YjJfalNfKDwyIHggaTMyPiwgPDIgeCBpMzI+KSAjMTUgewotK2Rl ZmluZSBpbnRlcm5hbCA8MiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNN dmIyX2pTXyg8MiB4IGkzMj4sIDwyIHggaTMyPikgIzE1IHsKLSAgICUzID0gYWxsb2NhIDwyIHgg aTMyPiwgYWxpZ24gOAotICAgJTQgPSBhbGxvY2EgPDIgeCBpMzI+LCBhbGlnbiA4Ci0gICAlNSA9 IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWduIDgKLUBAIC00MDU0LDcgKzQwNTQsNyBAQCBkZWZpbmUg aW50ZXJuYWwgPDIgeCBpMzI+IEBfWk43ZGV0YWlsczE0X19pbXBsX3VkaXZyZW1JTGkyRUVFdTJD TXZiVF9falMxX1MxX3UyQwotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vu d2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF91ZGl2dTJDTXZiNF9qU18oPDQgeCBpMzI+LCA8NCB4IGkzMj4pICMxNiB7Ci0rZGVmaW5lIGlu dGVybmFsIDw0IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjRfalNf KDw0IHggaTMyPiwgPDQgeCBpMzI+KSAjMTYgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpMzI+LCBh bGlnbiAxNgotICAgJTQgPSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotICAgJTUgPSBhbGxv Y2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotQEAgLTQ0OTIsNyArNDQ5Miw3IEBAIGRlZmluZSBpbnRl cm5hbCA8MTYgeCBpMzI+IEBfWk43ZGV0YWlsczE0X19pbXBsX3VkaXZyZW1JTGkxNkVFRXUyQ012 YlRfX2pTMV9TMV91Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5k Ci0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91 ZGl2dTJDTXZiMzJfalNfKDwzMiB4IGkzMj4sIDwzMiB4IGkzMj4pICMxOSB7Ci0rZGVmaW5lIGlu dGVybmFsIDwzMiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIzMl9q U18oPDMyIHggaTMyPiwgPDMyIHggaTMyPikgIzE5IHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGkz Mj4sIGFsaWduIDEyOAotICAgJTQgPSBhbGxvY2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4Ci0gICAl NSA9IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAxMjgKLUBAIC00NjM4LDcgKzQ2MzgsNyBAQCBk ZWZpbmUgaW50ZXJuYWwgPDMyIHggaTMyPiBAX1pON2RldGFpbHMxNF9faW1wbF91ZGl2cmVtSUxp MzJFRUV1MkNNdmJUX19qUzFfUzFfdQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGlu ZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgaTMyIEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF91cmVtamooaTMyLCBpMzIpICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIGkzMiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfdXJlbWpqKGkzMiwgaTMyKSAjMTQgewotICAgJTMgPSBhbGxvY2EgaTMy LCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSBpMzIsIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwx IHggaTMyPiwgYWxpZ24gNAotQEAgLTQ2NjQsNyArNDY2NCw3IEBAIGRlZmluZSBkc29fbG9jYWwg aTMyIEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtamooaTMyLCBpMzIpICMxNCB7Ci0gfQot IAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2Nh bCA8MSB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxX2pTXyg8MSB4 IGkzMj4sIDwxIHggaTMyPikgIzE0IHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMzI+IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMV9qU18oPDEgeCBpMzI+LCA8MSB4IGkzMj4p ICMxNCB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLSAgICU0ID0gYWxsb2Nh IDwxIHggaTMyPiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci1A QCAtNDY3OCw3ICs0Njc4LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkzMj4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxX2pTXyg8MSB4IGkzMj4sIDwKLSB9Ci0gCi0gOyBG dW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHgg aTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjJfalNfKDwyIHggaTMyPiwg PDIgeCBpMzI+KSAjMTUgewotK2RlZmluZSBpbnRlcm5hbCA8MiB4IGkzMj4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3VyZW11MkNNdmIyX2pTXyg8MiB4IGkzMj4sIDwyIHggaTMyPikgIzE1IHsK LSAgICUzID0gYWxsb2NhIDwyIHggaTMyPiwgYWxpZ24gOAotICAgJTQgPSBhbGxvY2EgPDIgeCBp MzI+LCBhbGlnbiA4Ci0gICAlNSA9IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWduIDgKLUBAIC00Njky LDcgKzQ2OTIsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwyIHggaTMyPiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfdXJlbXUyQ012YjJfalNfKDwyIHggaTMyPiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9u IEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBpMzI+IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiNF9qU18oPDQgeCBpMzI+LCA8NCB4IGkz Mj4pICMxNiB7Ci0rZGVmaW5lIGludGVybmFsIDw0IHggaTMyPiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfdXJlbXUyQ012YjRfalNfKDw0IHggaTMyPiwgPDQgeCBpMzI+KSAjMTYgewotICAgJTMg PSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotICAgJTQgPSBhbGxvY2EgPDQgeCBpMzI+LCBh bGlnbiAxNgotICAgJTUgPSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotQEAgLTQ3MDYsNyAr NDcwNiw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDQgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF91cmVtdTJDTXZiNF9qU18oPDQgeCBpMzI+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0 cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8OCB4IGkzMj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI4X2pTXyg8OCB4IGkzMj4sIDw4IHggaTMyPikg IzE3IHsKLStkZWZpbmUgaW50ZXJuYWwgPDggeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF91cmVtdTJDTXZiOF9qU18oPDggeCBpMzI+LCA8OCB4IGkzMj4pICMxNyB7Ci0gICAlMyA9IGFs bG9jYSA8OCB4IGkzMj4sIGFsaWduIDMyCi0gICAlNCA9IGFsbG9jYSA8OCB4IGkzMj4sIGFsaWdu IDMyCi0gICAlNSA9IGFsbG9jYSA8OCB4IGkzMj4sIGFsaWduIDMyCi1AQCAtNDcyMCw3ICs0NzIw LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8OCB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3VyZW11MkNNdmI4X2pTXyg8OCB4IGkzMj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczog bm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxNiB4IGkzMj4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxNl9qU18oPDE2IHggaTMyPiwgPDE2IHggaTMyPikg IzE4IHsKLStkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfdXJlbXUyQ012YjE2X2pTXyg8MTYgeCBpMzI+LCA8MTYgeCBpMzI+KSAjMTggewotICAgJTMg PSBhbGxvY2EgPDE2IHggaTMyPiwgYWxpZ24gNjQKLSAgICU0ID0gYWxsb2NhIDwxNiB4IGkzMj4s IGFsaWduIDY0Ci0gICAlNSA9IGFsbG9jYSA8MTYgeCBpMzI+LCBhbGlnbiA2NAotQEAgLTQ3MzQs NyArNDczNCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDE2IHggaTMyPiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfdXJlbXUyQ012YjE2X2pTXyg8MTYgeCBpMzI+Ci0gfQotIAotIDsgRnVuY3Rpb24g QXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpMzI+IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMzJfalNfKDwzMiB4IGkzMj4sIDwzMiB4 IGkzMj4pICMxOSB7Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGkzMj4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3VyZW11MkNNdmIzMl9qU18oPDMyIHggaTMyPiwgPDMyIHggaTMyPikgIzE5IHsK LSAgICUzID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFsaWduIDEyOAotICAgJTQgPSBhbGxvY2EgPDMy IHggaTMyPiwgYWxpZ24gMTI4Ci0gICAlNSA9IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAxMjgK LUBAIC00NzQ4LDcgKzQ3NDgsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGkzMj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIzMl9qU18oPDMyIHggaTMyPgotIH0KLSAKLSA7 IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgdm9p ZCBAX19kb19wcmludF9jbShpOCosIGk4KiwgaTMyLCBpNjQsIGkzMiosIGkzMiwgaTMyKSAjMjMg IWRiZyAhMTUgewotK2RlZmluZSBpbnRlcm5hbCB2b2lkIEBfX2RvX3ByaW50X2NtKGk4KiwgaTgq LCBpMzIsIGk2NCwgaTMyKiwgaTMyLCBpMzIpICMyMyAhZGJnICExNSB7Ci0gICAlOCA9IGFsbG9j YSBpOCosIGFsaWduIDQKLSAgICU5ID0gYWxsb2NhIGk4KiwgYWxpZ24gNAotICAgJTEwID0gYWxs b2NhIGkzMiwgYWxpZ24gNAotQEAgLTQ5ODgsNyArNDk4OCw3IEBAIGRlZmluZSBpbnRlcm5hbCB2 b2lkIEBfWk43ZGV0YWlsczE2X2NtX3ByaW50X2Zvcm1hdElMaTEyOEVFRXYxNWNtX3N1cmZhY2Vp bmRleGp1Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVm aW5lIGRzb19sb2NhbCB2b2lkIEBfX2RvX3ByaW50X2x6KGkzMiwgaTgqLCBpMzIsIGk2NCwgaTMy KiwgaTMyLCBpMzIsIGkzMiwgaTMyKSAjMjYgIWRiZyAhMTE3IHsKLStkZWZpbmUgaW50ZXJuYWwg dm9pZCBAX19kb19wcmludF9seihpMzIsIGk4KiwgaTMyLCBpNjQsIGkzMiosIGkzMiwgaTMyLCBp MzIsIGkzMikgIzI2ICFkYmcgITExNyB7Ci0gICAlMTAgPSBhbGxvY2EgaTMyLCBhbGlnbiA0Ci0g ICAlMTEgPSBhbGxvY2EgaTgqLCBhbGlnbiA0Ci0gICAlMTIgPSBhbGxvY2EgaTMyLCBhbGlnbiA0 Ci1AQCAtNTA2OSw3ICs1MDY5LDcgQEAgZGVmaW5lIGRzb19sb2NhbCB2b2lkIEBfX2RvX3ByaW50 X2x6KGkzMiwgaTgqLCBpMzIsIGk2NCwgaTMyKiwgaTMyLCBpMzIsIGkzMiwgaTMKLSAgICU2NyA9 IGxvYWQgaTY0LCBpNjQqICUxMywgYWxpZ24gOCwgIWRiZyAhMTU5LCAhdGJhYSAhMTkKLSAgICU2 OCA9IGxvYWQgPDUgeCBpMzI+LCA8NSB4IGkzMj4qICUyMSwgYWxpZ24gMzIsICFkYmcgITE2MCwg IXRiYWEgITcKLSAgIGNhbGwgdm9pZCBAX1pOMTNWYXJ5aW5nV3JpdGVyQzJFUmpSUEtqaXl1MkNN dmI1X2koJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUyMywgaTMyKiBkZXJlZmVyZW5jZWFibGUoNCkg JTE5LCBpMzIqKiBkZXJlZmVyZW5jZWFibGUoNCkgJTE0LCBpMzIgJTY2LCBpNjQgJTY3LCA8NSB4 IGkzMj4gJTY4KSwgIWRiZyAhMTYxCi0tICAlNjkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmlu dEluZm8xNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdyaXRlcjEzVmFyeWluZ1dyaXRlckVFYk5T XzhFbmNvZGluZ0VUX1QwXyhpOCBzaWduZXh0ICU2MiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5 dmFsIGFsaWduIDMyICUyMiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICUy MyksICFkYmcgITE2MgotKyAgJTY5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMTRz d2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXIxM1ZhcnlpbmdXcml0ZXJFRWJOU184RW5jb2Rp bmdFVF9UMF8oaTggc2lnbmV4dCAlNjIsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xh c3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIgJTIyLCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2 YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyICUyMyksICFkYmcgITE2MgotICAgYnIg bGFiZWwgJTcwLCAhZGJnICExNjMKLSAKLSA7IDxsYWJlbD46NzA6ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlNjAKLUBAIC01MTg3LDcgKzUxODcsNyBAQCBk ZWZpbmUgaW50ZXJuYWwgPDUgeCBpMzI+IEBfWjE3Z2V0X2F1eGlsaWFyeV9zdHJ2KCkgIzI4IGNv bWRhdCAhZGJnICExNzggewotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUg aW5saW5laGludCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJp bnRJbmZvMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXIxM1ZhcnlpbmdXcml0ZXJFRWJO U184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFs IGFsaWduIDMyLCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIpICMyNSBjb21k YXQgIWRiZyAhMTkxIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5m bzE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyMTNWYXJ5aW5nV3JpdGVyRUViTlNfOEVu Y29kaW5nRVRfVDBfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xh c3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCgl Y2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIpICMyNSBjb21kYXQgIWRiZyAhMTkxIHsKLSAg ICU0ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSAlY2xhc3MuVW5pZm9ybVdy aXRlciwgYWxpZ24gMzIKLSAgICU2ID0gYWxsb2NhICVjbGFzcy5WYXJ5aW5nV3JpdGVyLCBhbGln biAzMgotQEAgLTUxOTYsNyArNTE5Niw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBf Wk45UHJpbnRJbmZvMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXIxM1ZhcnlpCi0gICAl OCA9IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqICU1IHRvIGk4KiwgIWRiZyAhMTk2Ci0g ICAlOSA9IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMTk2 Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pMzIoaTgqIGFsaWduIDMyICU4 LCBpOCogYWxpZ24gMzIgJTksIGkzMiA2NCwgaTEgZmFsc2UpLCAhZGJnICExOTYsICF0YmFhLnN0 cnVjdCAhMTk3Ci0tICAlMTAgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8yMnN3aXRj aEVuY29kaW5nNFVuaWZvcm1JMTNVbmlmb3JtV3JpdGVyRUViTlNfOEVuY29kaW5nRVRfKGk4IHNp Z25leHQgJTcsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlNSksICFkYmcg ITE5OAotKyAgJTEwID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNv ZGluZzRVbmlmb3JtSTEzVW5pZm9ybVdyaXRlckVFYk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0 ICU3LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFs aWduIDMyICU1KSwgIWRiZyAhMTk4Ci0gICBiciBpMSAlMTAsIGxhYmVsICUxNiwgbGFiZWwgJTEx LCAhZGJnICExOTkKLSAKLSA7IDxsYWJlbD46MTE6ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDsgcHJlZHMgPSAlMwotQEAgLTUyMDQsNyArNTIwNCw3IEBAIGRlZmluZSBpbnRl cm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1X cml0ZXIxM1ZhcnlpCi0gICAlMTMgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlNiB0 byBpOCosICFkYmcgITIwMQotICAgJTE0ID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciog JTIgdG8gaTgqLCAhZGJnICEyMDEKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4 LmkzMihpOCogYWxpZ24gMzIgJTEzLCBpOCogYWxpZ24gMzIgJTE0LCBpMzIgNjQsIGkxIGZhbHNl KSwgIWRiZyAhMjAxLCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTE1ID0gY2FsbCB6ZXJvZXh0IGkx IEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRWYXJ5aW5nSTEzVmFyeWluZ1dyaXRlckVF Yk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0ICUxMiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5 dmFsIGFsaWduIDMyICU2KSwgIWRiZyAhMjAyCi0rICAlMTUgPSBjYWxsIHplcm9leHQgaTEgQF9a TjlQcmludEluZm8yMnN3aXRjaEVuY29kaW5nNFZhcnlpbmdJMTNWYXJ5aW5nV3JpdGVyRUViTlNf OEVuY29kaW5nRVRfKGk4IHNpZ25leHQgJTEyLCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwo JWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyICU2KSwgIWRiZyAhMjAyCi0gICBiciBsYWJl bCAlMTYsICFkYmcgITE5OQotIAotIDsgPGxhYmVsPjoxNjogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOyBwcmVkcyA9ICUxMSwgJTMKLUBAIC01Mjc5LDcgKzUyNzksNyBAQCBk ZWZpbmUgaW50ZXJuYWwgdm9pZCBAX1pOMTNWYXJ5aW5nV3JpdGVyQzJFUmpSUEtqaXl1MkNNdmI1 X2koJWNsYXNzLlZhcnlpbmdXcml0ZQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGlu ZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgaTMyIEBfX251bV9jb3JlcygpICMyOSAhZGJn ICEyMzYgewotK2RlZmluZSBpbnRlcm5hbCBpMzIgQF9fbnVtX2NvcmVzKCkgIzI5ICFkYmcgITIz NiB7Ci0gICByZXQgaTMyIC0xLCAhZGJnICEyMzcKLSB9Ci0gCi1AQCAtODg2MCw3ICs4ODYwLDcg QEAgZGVjbGFyZSBkc29fbG9jYWwgdm9pZCBAX1pON2RldGFpbHMzN19fY21faW50cmluc2ljX2lt cGxfc3ZtX3NjYXR0ZXJfd3JpdGVJaUxpMUUKLSBkZWNsYXJlIHZvaWQgQGxsdm0uZ2VueC5zdm0u c2NhdHRlci52MWkxLnYxaTY0LnYxaTMyKDwxIHggaTE+LCBpMzIsIDwxIHggaTY0PiwgPDEgeCBp MzI+KSAjMjcKLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBu b3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0 Y2hFbmNvZGluZzRVbmlmb3JtSTEzVW5pZm9ybVdyaXRlckVFYk5TXzhFbmNvZGluZ0VUXyhpOCBz aWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIpICMyNSBjb21kYXQg IWRiZyAhMTY0NSB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8y MnN3aXRjaEVuY29kaW5nNFVuaWZvcm1JMTNVbmlmb3JtV3JpdGVyRUViTlNfOEVuY29kaW5nRVRf KGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdy aXRlcikgYWxpZ24gMzIpICMyNSBjb21kYXQgIWRiZyAhMTY0NSB7Ci0gICAlMyA9IGFsbG9jYSBp OCwgYWxpZ24gMQotICAgJTQgPSBhbGxvY2EgJWNsYXNzLlVuaWZvcm1Xcml0ZXIsIGFsaWduIDMy Ci0gICAlNSA9IGFsbG9jYSAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iLCBh bGlnbiAxCi1AQCAtODg2OSw3ICs4ODY5LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEg QF9aTjlQcmludEluZm8yMnN3aXRjaEVuY29kaW5nNFVuaWZvcm1JMTNVbmlmb3JtV3JpdGUKLSAg ICU3ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTQgdG8gaTgqLCAhZGJnICExNjQ3 Ci0gICAlOCA9IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAh MTY0NwotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTMyKGk4KiBhbGlnbiAz MiAlNywgaTgqIGFsaWduIDMyICU4LCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY0NywgIXRi YWEuc3RydWN0ICExOTcKLS0gICU5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRl dGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3Jt RUVFYk5TXzhFbmNvZGluZ0VUX1QwXyhpOCBzaWduZXh0ICU2LCAlY2xhc3MuVW5pZm9ybVdyaXRl ciogYnl2YWwgYWxpZ24gMzIgJTQsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9y bSIqIGJ5dmFsIGFsaWduIDEgJTUpLCAhZGJnICExNjQ4Ci0rICAlOSA9IGNhbGwgemVyb2V4dCBp MSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdyaXRlck5T XzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4dCAlNiwg JWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAz MiAlNCwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1 Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSAlNSksICFkYmcgITE2NDgK LSAgIHJldCBpMSAlOSwgIWRiZyAhMTY0OQotIH0KLSAKLUBAIC04ODc3LDcgKzg4NzcsNyBAQCBk ZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzIyc3dpdGNoRW5jb2Rpbmc0 VW5pZm9ybUkxM1VuaWZvcm1Xcml0ZQotIGRlY2xhcmUgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5w MGk4LmkzMihpOCogbm9jYXB0dXJlIHdyaXRlb25seSwgaTgqIG5vY2FwdHVyZSByZWFkb25seSwg aTMyLCBpMSkgIzMyCi0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhp bnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzIy c3dpdGNoRW5jb2Rpbmc0VmFyeWluZ0kxM1ZhcnlpbmdXcml0ZXJFRWJOU184RW5jb2RpbmdFVF8o aTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyKSAjMjUgY29t ZGF0ICFkYmcgITE2NTAgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJ bmZvMjJzd2l0Y2hFbmNvZGluZzRWYXJ5aW5nSTEzVmFyeWluZ1dyaXRlckVFYk5TXzhFbmNvZGlu Z0VUXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlp bmdXcml0ZXIpIGFsaWduIDMyKSAjMjUgY29tZGF0ICFkYmcgITE2NTAgewotICAgJTMgPSBhbGxv Y2EgaTgsIGFsaWduIDEKLSAgICU0ID0gYWxsb2NhICVjbGFzcy5WYXJ5aW5nV3JpdGVyLCBhbGln biAzMgotICAgJTUgPSBhbGxvY2EgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5n IiwgYWxpZ24gMQotQEAgLTg4ODYsMTIgKzg4ODYsMTIgQEAgZGVmaW5lIGludGVybmFsIHplcm9l eHQgaTEgQF9aTjlQcmludEluZm8yMnN3aXRjaEVuY29kaW5nNFZhcnlpbmdJMTNWYXJ5aW5nV3Jp dGUKLSAgICU3ID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTQgdG8gaTgqLCAhZGJn ICExNjUyCi0gICAlOCA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxIHRvIGk4Kiwg IWRiZyAhMTY1MgotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTMyKGk4KiBh bGlnbiAzMiAlNywgaTgqIGFsaWduIDMyICU4LCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY1 MiwgIXRiYWEuc3RydWN0ICExOTcKLS0gICU5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJ bmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRW YXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUX1QwXyhpOCBzaWduZXh0ICU2LCAlY2xhc3MuVmFyeWlu Z1dyaXRlciogYnl2YWwgYWxpZ24gMzIgJTQsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0 VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEgJTUpLCAhZGJnICExNjUzCi0rICAlOSA9IGNhbGwgemVy b2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dy aXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4 dCAlNiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBh bGlnbiAzMiAlNCwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwo JSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSAlNSksICFkYmcg ITE2NTMKLSAgIHJldCBpMSAlOSwgIWRiZyAhMTY1NAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJz OiBhbHdheXNpbmxpbmUgaW5saW5laGludCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJv ZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3Jp dGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUX1QwXyhpOCBzaWduZXh0 LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5m bzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMTY1 NSB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRz d2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNf OEVuY29kaW5nRVRfVDBfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCgl Y2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rp bmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIp IGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMTY1NSB7Ci0gICAlNCA9IGFsbG9jYSBpOCwgYWxp Z24gMQotICAgJTUgPSBhbGxvY2EgJWNsYXNzLlVuaWZvcm1Xcml0ZXIsIGFsaWduIDMyCi0gICAl NiA9IGFsbG9jYSAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iLCBhbGlnbiAx Ci1AQCAtODkxNCw3ICs4OTE0LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQ cmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXIKLSAgICUyMiA9 IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqICU1IHRvIGk4KiwgIWRiZyAhMTY1NwotICAg JTIzID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTEgdG8gaTgqLCAhZGJnICExNjU3 Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pMzIoaTgqIGFsaWduIDMyICUy MiwgaTgqIGFsaWduIDMyICUyMywgaTMyIDY0LCBpMSBmYWxzZSksICFkYmcgITE2NTcsICF0YmFh LnN0cnVjdCAhMTk3Ci0tICAlMjQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0 YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJYjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0 VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTIxLCAlY2xhc3MuVW5p Zm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIgJTUsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rp bmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEgJTYpLCAhZGJnICExNjU4Ci0rICAlMjQgPSBjYWxs IHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJ YjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBf VDFfKGk4IHNpZ25leHQgJTIxLCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVu aWZvcm1Xcml0ZXIpIGFsaWduIDMyICU1LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVu aWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGln biAxICU2KSwgIWRiZyAhMTY1OAotICAgYnIgaTEgJTI0LCBsYWJlbCAlNjAsIGxhYmVsICUyNSwg IWRiZyAhMTY1OQotIAotIDsgPGxhYmVsPjoyNTogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOyBwcmVkcyA9ICUzCi1AQCAtODkyMiw3ICs4OTIyLDcgQEAgZGVmaW5lIGludGVy bmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1Vu aWZvcm1Xcml0ZXIKLSAgICUyNyA9IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqICU3IHRv IGk4KiwgIWRiZyAhMTY2MQotICAgJTI4ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciog JTEgdG8gaTgqLCAhZGJnICExNjYxCi0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBp OC5pMzIoaTgqIGFsaWduIDMyICUyNywgaTgqIGFsaWduIDMyICUyOCwgaTMyIDY0LCBpMSBmYWxz ZSksICFkYmcgITE2NjEsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlMjkgPSBjYWxsIHplcm9leHQg aTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJaTEzVW5pZm9y bVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNp Z25leHQgJTI2LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIgJTcsICUic3Ry dWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEgJTgpLCAhZGJn ICExNjYyCi0rICAlMjkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFh cHBseUlmUHJvcGVyRW5jb2RpbmdJaTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9y bUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTI2LCAlY2xhc3MuVW5pZm9ybVdy aXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyICU3LCAlInN0cnVjdC5Q cmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVu Y29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxICU4KSwgIWRiZyAhMTY2MgotICAgYnIgaTEgJTI5LCBs YWJlbCAlNjAsIGxhYmVsICUzMCwgIWRiZyAhMTY2MwotIAotIDsgPGxhYmVsPjozMDogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICUyNQotQEAgLTg5MzAsNyAr ODkzMCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFp bDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0gICAlMzIgPSBiaXRjYXN0ICVjbGFz cy5Vbmlmb3JtV3JpdGVyKiAlOSB0byBpOCosICFkYmcgITE2NjUKLSAgICUzMyA9IGJpdGNhc3Qg JWNsYXNzLlVuaWZvcm1Xcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMTY2NQotICAgY2FsbCB2b2lk IEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTMyKGk4KiBhbGlnbiAzMiAlMzIsIGk4KiBhbGlnbiAz MiAlMzMsIGkzMiA2NCwgaTEgZmFsc2UpLCAhZGJnICExNjY1LCAhdGJhYS5zdHJ1Y3QgITE5Nwot LSAgJTM0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlBy b3BlckVuY29kaW5nSWoxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNf OEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUzMSwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5 dmFsIGFsaWduIDMyICU5LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBi eXZhbCBhbGlnbiAxICUxMCksICFkYmcgITE2NjYKLSsgICUzNCA9IGNhbGwgemVyb2V4dCBpMSBA X1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lqMTNVbmlmb3JtV3Jp dGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4 dCAlMzEsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikg YWxpZ24gMzIgJTksICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFs KCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEgJTEwKSwgIWRi ZyAhMTY2NgotICAgYnIgaTEgJTM0LCBsYWJlbCAlNjAsIGxhYmVsICUzNSwgIWRiZyAhMTY2Nwot IAotIDsgPGxhYmVsPjozNTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBw cmVkcyA9ICUzMAotQEAgLTg5MzgsNyArODkzOCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0 IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVy Ci0gICAlMzcgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMTEgdG8gaTgqLCAhZGJn ICExNjY5Ci0gICAlMzggPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBpOCos ICFkYmcgITE2NjkKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4LmkzMihpOCog YWxpZ24gMzIgJTM3LCBpOCogYWxpZ24gMzIgJTM4LCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAh MTY2OSwgIXRiYWEuc3RydWN0ICExOTcKLS0gICUzOSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVBy aW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lmMTNVbmlmb3JtV3JpdGVyTlNf MTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMzYs ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlMTEsICUic3RydWN0LlByaW50 SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEgJTEyKSwgIWRiZyAhMTY3MAot KyAgJTM5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlBy b3BlckVuY29kaW5nSWYxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNf OEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUzNiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5 dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlMTEsICUic3RydWN0LlByaW50SW5m bzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0 VW5pZm9ybSIpIGFsaWduIDEgJTEyKSwgIWRiZyAhMTY3MAotICAgYnIgaTEgJTM5LCBsYWJlbCAl NjAsIGxhYmVsICU0MCwgIWRiZyAhMTY3MQotIAotIDsgPGxhYmVsPjo0MDogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICUzNQotQEAgLTg5NDYsNyArODk0Niw3 IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dp dGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0gICAlNDIgPSBiaXRjYXN0ICVjbGFzcy5Vbmlm b3JtV3JpdGVyKiAlMTMgdG8gaTgqLCAhZGJnICExNjczCi0gICAlNDMgPSBiaXRjYXN0ICVjbGFz cy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITE2NzMKLSAgIGNhbGwgdm9pZCBAbGx2 bS5tZW1jcHkucDBpOC5wMGk4LmkzMihpOCogYWxpZ24gMzIgJTQyLCBpOCogYWxpZ24gMzIgJTQz LCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY3MywgIXRiYWEuc3RydWN0ICExOTcKLS0gICU0 NCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJF bmNvZGluZ0l4MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNv ZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNDEsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBh bGlnbiAzMiAlMTMsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFs IGFsaWduIDEgJTE0KSwgIWRiZyAhMTY3NAotKyAgJTQ0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45 UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXgxM1VuaWZvcm1Xcml0ZXJO U18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU0 MSwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGln biAzMiAlMTMsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUi c3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEgJTE0KSwgIWRiZyAh MTY3NAotICAgYnIgaTEgJTQ0LCBsYWJlbCAlNjAsIGxhYmVsICU0NSwgIWRiZyAhMTY3NQotIAot IDsgPGxhYmVsPjo0NTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVk cyA9ICU0MAotQEAgLTg5NTQsNyArODk1NCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkx IEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0g ICAlNDcgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMTUgdG8gaTgqLCAhZGJnICEx Njc3Ci0gICAlNDggPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBpOCosICFk YmcgITE2NzcKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4LmkzMihpOCogYWxp Z24gMzIgJTQ3LCBpOCogYWxpZ24gMzIgJTQ4LCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY3 NywgIXRiYWEuc3RydWN0ICExOTcKLS0gICU0OSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50 SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l5MTNVbmlmb3JtV3JpdGVyTlNfMTZF bmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNDYsICVj bGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlMTUsICUic3RydWN0LlByaW50SW5m bzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEgJTE2KSwgIWRiZyAhMTY3OAotKyAg JTQ5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3Bl ckVuY29kaW5nSXkxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVu Y29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU0NiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFs KCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlMTUsICUic3RydWN0LlByaW50SW5mbzo6 RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5p Zm9ybSIpIGFsaWduIDEgJTE2KSwgIWRiZyAhMTY3OAotICAgYnIgaTEgJTQ5LCBsYWJlbCAlNjAs IGxhYmVsICU1MCwgIWRiZyAhMTY3OQotIAotIDsgPGxhYmVsPjo1MDogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICU0NQotQEAgLTg5NjIsNyArODk2Miw3IEBA IGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNo RW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0gICAlNTIgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3Jt V3JpdGVyKiAlMTcgdG8gaTgqLCAhZGJnICExNjgxCi0gICAlNTMgPSBiaXRjYXN0ICVjbGFzcy5V bmlmb3JtV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITE2ODEKLSAgIGNhbGwgdm9pZCBAbGx2bS5t ZW1jcHkucDBpOC5wMGk4LmkzMihpOCogYWxpZ24gMzIgJTUyLCBpOCogYWxpZ24gMzIgJTUzLCBp MzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY4MSwgIXRiYWEuc3RydWN0ICExOTcKLS0gICU1NCA9 IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNv ZGluZ0lkMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGlu Z0VUMF9UMV8oaTggc2lnbmV4dCAlNTEsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGln biAzMiAlMTcsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFs aWduIDEgJTE4KSwgIWRiZyAhMTY4MgotKyAgJTU0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJp bnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWQxM1VuaWZvcm1Xcml0ZXJOU18x NkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU1MSwg JWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAz MiAlMTcsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3Ry dWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEgJTE4KSwgIWRiZyAhMTY4 MgotICAgYnIgaTEgJTU0LCBsYWJlbCAlNjAsIGxhYmVsICU1NSwgIWRiZyAhMTY4MwotIAotIDsg PGxhYmVsPjo1NTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9 ICU1MAotQEAgLTg5NzAsNyArODk3MCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBf Wk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0gICAl NTcgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMTkgdG8gaTgqLCAhZGJnICExNjg1 Ci0gICAlNTggPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBpOCosICFkYmcg ITE2ODUKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4LmkzMihpOCogYWxpZ24g MzIgJTU3LCBpOCogYWxpZ24gMzIgJTU4LCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY4NSwg IXRiYWEuc3RydWN0ICExOTcKLS0gICU1OSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5m bzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lQdjEzVW5pZm9ybVdyaXRlck5TXzE2RW5j b2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTU2LCAlY2xh c3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIgJTE5LCAlInN0cnVjdC5QcmludEluZm86 OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxICUyMCksICFkYmcgITE2ODYKLSsgICU1 OSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJF bmNvZGluZ0lQdjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5j b2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTU2LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwo JWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyICUxOSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpF bmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlm b3JtIikgYWxpZ24gMSAlMjApLCAhZGJnICExNjg2Ci0gICBiciBsYWJlbCAlNjAsICFkYmcgITE2 ODMKLSAKLSA7IDxsYWJlbD46NjA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDsgcHJlZHMgPSAlNTUsICU1MCwgJTQ1LCAlNDAsICUzNSwgJTMwLCAlMjUsICUzCi1AQCAtODk3 OSw3ICs4OTc5LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82 ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXIKLSB9Ci0gCi0gOyBGdW5jdGlv biBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJu YWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGlu Z0liMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VU MF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAl InN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxKSAjMjUg Y29tZGF0ICFkYmcgITE2ODggewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJp bnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWIxM1VuaWZvcm1Xcml0ZXJOU18x NkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xh c3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAl InN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5Qcmlu dEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE2ODgg ewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAx Ci0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtOTAwNSw3 ICs5MDA1LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0 YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJYjEzVW5pZm8KLSB9Ci0gCi0gOyBGdW5jdGlvbiBB dHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwg emVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lp MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9U MV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0 cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxKSAjMjUgY29t ZGF0ICFkYmcgITE2OTcgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJ bmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWkxM1VuaWZvcm1Xcml0ZXJOU18xNkVu Y29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3Mu VW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0 cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludElu Zm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE2OTcgewot ICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0g ICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtOTAzMSw3ICs5 MDMxLDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWls MjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJaTEzVW5pZm8KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRy czogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVy b2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lqMTNV bmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8o aTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVj dC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0 ICFkYmcgITE3MDYgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZv NmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWoxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29k aW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5p Zm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVj dC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86 OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3MDYgewotICAg JTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBz dG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtOTA1Nyw3ICs5MDU3 LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFh cHBseUlmUHJvcGVyRW5jb2RpbmdJajEzVW5pZm8KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczog YWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4 dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lmMTNVbmlm b3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTgg c2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5Q cmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFk YmcgITE3MTUgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRl dGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWYxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5n NFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9y bVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5Q cmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVu Y29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3MTUgewotICAgJTQg PSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9y ZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtOTA4Myw3ICs5MDgzLDcg QEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBs eUlmUHJvcGVyRW5jb2RpbmdJZjEzVW5pZm8KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3 YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBp MSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l4MTNVbmlmb3Jt V3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2ln bmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5Qcmlu dEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcg ITE3MjQgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFp bDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXgxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVu aWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdy aXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5Qcmlu dEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29k aW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3MjQgewotICAgJTQgPSBh bGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBp OCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtOTEwOSw3ICs5MTA5LDcgQEAg ZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlm UHJvcGVyRW5jb2RpbmdJeDEzVW5pZm8KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlz aW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBA X1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l5MTNVbmlmb3JtV3Jp dGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4 dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludElu Zm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3 MzMgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIx YXBwbHlJZlByb3BlckVuY29kaW5nSXkxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZv cm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRl ciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludElu Zm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5n NFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3MzMgewotICAgJTQgPSBhbGxv Y2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAl MCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtOTEzNSw3ICs5MTM1LDcgQEAgZGVm aW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJv cGVyRW5jb2RpbmdJeTEzVW5pZm8KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5s aW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pO OVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lkMTNVbmlmb3JtV3JpdGVy TlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwg JWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86 OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3NDIg ewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBw bHlJZlByb3BlckVuY29kaW5nSWQxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1F RUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciog Ynl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86 OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVu aWZvcm0iKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3NDIgewotICAgJTQgPSBhbGxvY2Eg aTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwg aTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtOTE2MSw3ICs5MTYxLDcgQEAgZGVmaW5l IGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVy RW5jb2RpbmdJZDEzVW5pZm8KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5l IGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVBy aW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lQdjEzVW5pZm9ybVdyaXRlck5T XzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVj bGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpF bmNvZGluZzRVbmlmb3JtIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNzUxIHsK LStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5 SWZQcm9wZXJFbmNvZGluZ0lQdjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVF RWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBi eXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6 RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5p Zm9ybSIpIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMTc1MSB7Ci0gICAlNCA9IGFsbG9jYSBp MSwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgIHN0b3JlIGk4ICUwLCBp OCogJTUsIGFsaWduIDEsICF0YmFhICExOTMKLUBAIC05OTg0LDcgKzk5ODQsNyBAQCBkZWZpbmUg aW50ZXJuYWwgaTMyIEBfWk43ZGV0YWlsczE4X2NtX3ByaW50X3R5cGVfb2NsSVB2RUVOU18xOFNI QURFUl9QUklOVEZfVFlQRQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUg aW5saW5laGludCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJp bnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGlu ZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUX1QwXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWlu Z1dyaXRlciogYnl2YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFy eWluZyIqIGJ5dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjA1NSB7Ci0rZGVmaW5lIGlu dGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kx M1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVRfVDBf KGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dy aXRlcikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5 dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEpICMyNSBj b21kYXQgIWRiZyAhMjA1NSB7Ci0gICAlNCA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTUgPSBh bGxvY2EgJWNsYXNzLlZhcnlpbmdXcml0ZXIsIGFsaWduIDMyCi0gICAlNiA9IGFsbG9jYSAlInN0 cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciLCBhbGlnbiAxCi1AQCAtMTAwMDcsNyAr MTAwMDcsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRh aWwxNHN3aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dyaXRlcgotICAgJTIyID0gYml0Y2FzdCAlY2xh c3MuVmFyeWluZ1dyaXRlciogJTUgdG8gaTgqLCAhZGJnICEyMDU3Ci0gICAlMjMgPSBiaXRjYXN0 ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITIwNTcKLSAgIGNhbGwgdm9p ZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4LmkzMihpOCogYWxpZ24gMzIgJTIyLCBpOCogYWxpZ24g MzIgJTIzLCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMjA1NywgIXRiYWEuc3RydWN0ICExOTcK LS0gICUyNCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQ cm9wZXJFbmNvZGluZ0liMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5T XzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMjEsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBi eXZhbCBhbGlnbiAzMiAlNSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiog Ynl2YWwgYWxpZ24gMSAlNiksICFkYmcgITIwNTgKLSsgICUyNCA9IGNhbGwgemVyb2V4dCBpMSBA X1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0liMTNWYXJ5aW5nV3Jp dGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4 dCAlMjEsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikg YWxpZ24gMzIgJTUsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFs KCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEgJTYpLCAhZGJn ICEyMDU4Ci0gICBiciBpMSAlMjQsIGxhYmVsICU2MCwgbGFiZWwgJTI1LCAhZGJnICEyMDU5Ci0g Ci0gOyA8bGFiZWw+OjI1OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHBy ZWRzID0gJTMKLUBAIC0xMDAxNSw3ICsxMDAxNSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0 IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNWYXJ5aW5nV3JpdGVy Ci0gICAlMjcgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlNyB0byBpOCosICFkYmcg ITIwNjEKLSAgICUyOCA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxIHRvIGk4Kiwg IWRiZyAhMjA2MQotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTMyKGk4KiBh bGlnbiAzMiAlMjcsIGk4KiBhbGlnbiAzMiAlMjgsIGkzMiA2NCwgaTEgZmFsc2UpLCAhZGJnICEy MDYxLCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTI5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJp bnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWkxM1ZhcnlpbmdXcml0ZXJOU18x NkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUyNiwg JWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU3LCAlInN0cnVjdC5QcmludElu Zm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxICU4KSwgIWRiZyAhMjA2MgotKyAg JTI5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3Bl ckVuY29kaW5nSWkxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVu Y29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUyNiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFs KCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAlNywgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpF bmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5 aW5nIikgYWxpZ24gMSAlOCksICFkYmcgITIwNjIKLSAgIGJyIGkxICUyOSwgbGFiZWwgJTYwLCBs YWJlbCAlMzAsICFkYmcgITIwNjMKLSAKLSA7IDxsYWJlbD46MzA6ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlMjUKLUBAIC0xMDAyMyw3ICsxMDAyMyw3IEBA IGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNo RW5jb2RpbmdJMTNWYXJ5aW5nV3JpdGVyCi0gICAlMzIgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5n V3JpdGVyKiAlOSB0byBpOCosICFkYmcgITIwNjUKLSAgICUzMyA9IGJpdGNhc3QgJWNsYXNzLlZh cnlpbmdXcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMjA2NQotICAgY2FsbCB2b2lkIEBsbHZtLm1l bWNweS5wMGk4LnAwaTguaTMyKGk4KiBhbGlnbiAzMiAlMzIsIGk4KiBhbGlnbiAzMiAlMzMsIGkz MiA2NCwgaTEgZmFsc2UpLCAhZGJnICEyMDY1LCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTM0ID0g Y2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29k aW5nSWoxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5n RVQwX1QxXyhpOCBzaWduZXh0ICUzMSwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWdu IDMyICU5LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGln biAxICUxMCksICFkYmcgITIwNjYKLSsgICUzNCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50 SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lqMTNWYXJ5aW5nV3JpdGVyTlNfMTZF bmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMzEsICVj bGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIg JTksICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0 LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEgJTEwKSwgIWRiZyAhMjA2Ngot ICAgYnIgaTEgJTM0LCBsYWJlbCAlNjAsIGxhYmVsICUzNSwgIWRiZyAhMjA2NwotIAotIDsgPGxh YmVsPjozNTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICUz MAotQEAgLTEwMDMxLDcgKzEwMDMxLDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9a TjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXIKLSAgICUz NyA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxMSB0byBpOCosICFkYmcgITIwNjkK LSAgICUzOCA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAh MjA2OQotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTMyKGk4KiBhbGlnbiAz MiAlMzcsIGk4KiBhbGlnbiAzMiAlMzgsIGkzMiA2NCwgaTEgZmFsc2UpLCAhZGJnICEyMDY5LCAh dGJhYS5zdHJ1Y3QgITE5NwotLSAgJTM5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZv NmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWYxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29k aW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUzNiwgJWNsYXNz LlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICUxMSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpF bmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSAlMTIpLCAhZGJnICEyMDcwCi0rICAlMzkg PSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5j b2RpbmdJZjEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2Rp bmdFVDBfVDFfKGk4IHNpZ25leHQgJTM2LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNs YXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyICUxMSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNv ZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5n IikgYWxpZ24gMSAlMTIpLCAhZGJnICEyMDcwCi0gICBiciBpMSAlMzksIGxhYmVsICU2MCwgbGFi ZWwgJTQwLCAhZGJnICEyMDcxCi0gCi0gOyA8bGFiZWw+OjQwOiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTM1Ci1AQCAtMTAwMzksNyArMTAwMzksNyBAQCBk ZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVu Y29kaW5nSTEzVmFyeWluZ1dyaXRlcgotICAgJTQyID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dy aXRlciogJTEzIHRvIGk4KiwgIWRiZyAhMjA3MwotICAgJTQzID0gYml0Y2FzdCAlY2xhc3MuVmFy eWluZ1dyaXRlciogJTEgdG8gaTgqLCAhZGJnICEyMDczCi0gICBjYWxsIHZvaWQgQGxsdm0ubWVt Y3B5LnAwaTgucDBpOC5pMzIoaTgqIGFsaWduIDMyICU0MiwgaTgqIGFsaWduIDMyICU0MywgaTMy IDY0LCBpMSBmYWxzZSksICFkYmcgITIwNzMsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlNDQgPSBj YWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2Rp bmdJeDEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdF VDBfVDFfKGk4IHNpZ25leHQgJTQxLCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24g MzIgJTEzLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGln biAxICUxNCksICFkYmcgITIwNzQKLSsgICU0NCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50 SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l4MTNWYXJ5aW5nV3JpdGVyTlNfMTZF bmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNDEsICVj bGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIg JTEzLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVj dC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGlnbiAxICUxNCksICFkYmcgITIwNzQK LSAgIGJyIGkxICU0NCwgbGFiZWwgJTYwLCBsYWJlbCAlNDUsICFkYmcgITIwNzUKLSAKLSA7IDxs YWJlbD46NDU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAl NDAKLUBAIC0xMDA0Nyw3ICsxMDA0Nyw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBf Wk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNWYXJ5aW5nV3JpdGVyCi0gICAl NDcgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMTUgdG8gaTgqLCAhZGJnICEyMDc3 Ci0gICAlNDggPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMSB0byBpOCosICFkYmcg ITIwNzcKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4LmkzMihpOCogYWxpZ24g MzIgJTQ3LCBpOCogYWxpZ24gMzIgJTQ4LCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMjA3Nywg IXRiYWEuc3RydWN0ICExOTcKLS0gICU0OSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5m bzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l5MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNv ZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNDYsICVjbGFz cy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlMTUsICUic3RydWN0LlByaW50SW5mbzo6 RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEgJTE2KSwgIWRiZyAhMjA3OAotKyAgJTQ5 ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVu Y29kaW5nSXkxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29k aW5nRVQwX1QxXyhpOCBzaWduZXh0ICU0NiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVj bGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAlMTUsICUic3RydWN0LlByaW50SW5mbzo6RW5j b2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWlu ZyIpIGFsaWduIDEgJTE2KSwgIWRiZyAhMjA3OAotICAgYnIgaTEgJTQ5LCBsYWJlbCAlNjAsIGxh YmVsICU1MCwgIWRiZyAhMjA3OQotIAotIDsgPGxhYmVsPjo1MDogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICU0NQotQEAgLTEwMDU1LDcgKzEwMDU1LDcgQEAg ZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hF bmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXIKLSAgICU1MiA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdX cml0ZXIqICUxNyB0byBpOCosICFkYmcgITIwODEKLSAgICU1MyA9IGJpdGNhc3QgJWNsYXNzLlZh cnlpbmdXcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMjA4MQotICAgY2FsbCB2b2lkIEBsbHZtLm1l bWNweS5wMGk4LnAwaTguaTMyKGk4KiBhbGlnbiAzMiAlNTIsIGk4KiBhbGlnbiAzMiAlNTMsIGkz MiA2NCwgaTEgZmFsc2UpLCAhZGJnICEyMDgxLCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTU0ID0g Y2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29k aW5nSWQxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5n RVQwX1QxXyhpOCBzaWduZXh0ICU1MSwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWdu IDMyICUxNywgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxp Z24gMSAlMTgpLCAhZGJnICEyMDgyCi0rICAlNTQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmlu dEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZDEzVmFyeWluZ1dyaXRlck5TXzE2 RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTUxLCAl Y2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMy ICUxNywgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1 Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSAlMTgpLCAhZGJnICEyMDgy Ci0gICBiciBpMSAlNTQsIGxhYmVsICU2MCwgbGFiZWwgJTU1LCAhZGJnICEyMDgzCi0gCi0gOyA8 bGFiZWw+OjU1OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0g JTUwCi1AQCAtMTAwNjMsNyArMTAwNjMsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBA X1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dyaXRlcgotICAg JTU3ID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTE5IHRvIGk4KiwgIWRiZyAhMjA4 NQotICAgJTU4ID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTEgdG8gaTgqLCAhZGJn ICEyMDg1Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pMzIoaTgqIGFsaWdu IDMyICU1NywgaTgqIGFsaWduIDMyICU1OCwgaTMyIDY0LCBpMSBmYWxzZSksICFkYmcgITIwODUs ICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlNTkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludElu Zm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJUHYxM1ZhcnlpbmdXcml0ZXJOU18xNkVu Y29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU1NiwgJWNs YXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICUxOSwgJSJzdHJ1Y3QuUHJpbnRJbmZv OjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSAlMjApLCAhZGJnICEyMDg2Ci0rICAl NTkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVy RW5jb2RpbmdJUHYxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVu Y29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU1NiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFs KCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAlMTksICUic3RydWN0LlByaW50SW5mbzo6 RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFy eWluZyIpIGFsaWduIDEgJTIwKSwgIWRiZyAhMjA4NgotICAgYnIgbGFiZWwgJTYwLCAhZGJnICEy MDgzCi0gCi0gOyA8bGFiZWw+OjYwOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA7IHByZWRzID0gJTU1LCAlNTAsICU0NSwgJTQwLCAlMzUsICUzMCwgJTI1LCAlMwotQEAgLTEw MDcyLDcgKzEwMDcyLDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludElu Zm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXIKLSB9Ci0gCi0gOyBGdW5j dGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50 ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNv ZGluZ0liMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGlu Z0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMy LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxKSAj MjUgY29tZGF0ICFkYmcgITIwODggewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45 UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWIxM1ZhcnlpbmdXcml0ZXJO U18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAl Y2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMy LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5Q cmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIw ODggewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGln biAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtMTAw OTgsNyArMTAwOTgsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5m bzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0liMTNWYXJ5aQotIH0KLSAKLSA7IEZ1bmN0 aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBub3Vud2luZAotLWRlZmluZSBpbnRl cm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29k aW5nSWkxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5n RVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIs ICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEpICMy NSBjb21kYXQgIWRiZyAhMjA5NyB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQ cmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJaTEzVmFyeWluZ1dyaXRlck5T XzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVj bGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIs ICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlBy aW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjA5 NyB7Ci0gICAlNCA9IGFsbG9jYSBpMSwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgaTgsIGFsaWdu IDEKLSAgIHN0b3JlIGk4ICUwLCBpOCogJTUsIGFsaWduIDEsICF0YmFhICExOTMKLUBAIC0xMDEy NCw3ICsxMDEyNCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZv NmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWkxM1ZhcnlpCi0gfQotIAotIDsgRnVuY3Rp b24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVy bmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2Rp bmdJajEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdF VDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwg JSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSkgIzI1 IGNvbWRhdCAhZGJnICEyMTA2IHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVBy aW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lqMTNWYXJ5aW5nV3JpdGVyTlNf MTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNs YXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiwg JSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJp bnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTA2 IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24g MQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5MwotQEAgLTEwMTUw LDcgKzEwMTUwLDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82 ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJajEzVmFyeWkKLSB9Ci0gCi0gOyBGdW5jdGlv biBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJu YWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGlu Z0lmMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VU MF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAl InN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxKSAjMjUg Y29tZGF0ICFkYmcgITIxMTUgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJp bnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWYxM1ZhcnlpbmdXcml0ZXJOU18x NkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xh c3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyLCAl InN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5Qcmlu dEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxMTUg ewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAx Ci0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtMTAxNzYs NyArMTAxNzYsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZk ZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lmMTNWYXJ5aQotIH0KLSAKLSA7IEZ1bmN0aW9u IEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5h bCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5n SXgxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQw X1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIsICUi c3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEpICMyNSBj b21kYXQgIWRiZyAhMjEyNCB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmlu dEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeDEzVmFyeWluZ1dyaXRlck5TXzE2 RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFz cy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIsICUi c3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50 SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjEyNCB7 Ci0gICAlNCA9IGFsbG9jYSBpMSwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgaTgsIGFsaWduIDEK LSAgIHN0b3JlIGk4ICUwLCBpOCogJTUsIGFsaWduIDEsICF0YmFhICExOTMKLUBAIC0xMDIwMiw3 ICsxMDIwMiw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRl dGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXgxM1ZhcnlpCi0gfQotIAotIDsgRnVuY3Rpb24g QXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFs IHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJ eTEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBf VDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJz dHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNv bWRhdCAhZGJnICEyMTMzIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50 SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l5MTNWYXJ5aW5nV3JpdGVyTlNfMTZF bmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNz LlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiwgJSJz dHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJ bmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTMzIHsK LSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24gMQot ICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5MwotQEAgLTEwMjI4LDcg KzEwMjI4LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0 YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeTEzVmFyeWkKLSB9Ci0gCi0gOyBGdW5jdGlvbiBB dHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwg emVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lk MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9U MV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0 cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxKSAjMjUgY29t ZGF0ICFkYmcgITIxNDIgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJ bmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWQxM1ZhcnlpbmdXcml0ZXJOU18xNkVu Y29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3Mu VmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyLCAlInN0 cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludElu Zm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxNDIgewot ICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0g ICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtMTAyNTQsNyAr MTAyNTQsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRh aWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lkMTNWYXJ5aQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0 dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6 ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSVB2 MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9U MV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0 cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxKSAjMjUgY29t ZGF0ICFkYmcgITIxNTEgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJ bmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSVB2MTNWYXJ5aW5nV3JpdGVyTlNfMTZF bmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNz LlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiwgJSJz dHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJ bmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTUxIHsK LSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24gMQot ICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5MwotZGlmZiAtLWdpdCBh L2J1aWx0aW5zL2J1aWx0aW5zLWNtLTY0LmxsIGIvYnVpbHRpbnMvYnVpbHRpbnMtY20tNjQubGwK LWluZGV4IDM5YTJkZDhiZS4uMzc1ZDAxYmVkIDEwMDY0NAotLS0tIGEvYnVpbHRpbnMvYnVpbHRp bnMtY20tNjQubGwKLSsrKyBiL2J1aWx0aW5zL2J1aWx0aW5zLWNtLTY0LmxsCi1AQCAtNTU3LDcg KzU1Nyw3IEBAICRfWk4xM1ZhcnlpbmdXcml0ZXIxMldyaXRlVmVjRWxlbUlQdkVFdnYgPSBjb21k YXQgYW55Ci0gQC5zdHIuMTAgPSBwcml2YXRlIHVubmFtZWRfYWRkciBjb25zdGFudCBbOCB4IGk4 XSBjIiUwMTZsbFhcMDAiLCBhbGlnbiAxCi0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUg bm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIHNpZ25leHQgaTggQF9aMjRfX2NtX2ludHJpbnNp Y19pbXBsX3NkaXZjYyhpOCBzaWduZXh0LCBpOCBzaWduZXh0KSAjMCB7Ci0rZGVmaW5lIGludGVy bmFsIHNpZ25leHQgaTggQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZjYyhpOCBzaWduZXh0 LCBpOCBzaWduZXh0KSAjMCB7Ci0gICAlMyA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTQgPSBh bGxvY2EgaTgsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi1AQCAt NjE4LDcgKzYxOCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MSB4IGk4PiBAX1pON2RldGFpbHMxM19f aW1wbF9kaXZyZW1JTGkxRUVFdTJDTXZiVF9fY1MxX1MxX3UyQ012Ci0gZGVjbGFyZSA8MSB4IGk4 PiBAbGx2bS5nZW54LnJkcmVnaW9uaS52MWk4LnYxaTguaTE2KDwxIHggaTg+LCBpMzIsIGkzMiwg aTMyLCBpMTYsIGkzMikgIzIKLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2lu ZAotLWRlZmluZSBkc29fbG9jYWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Nk aXZ1MkNNdmIxX2NTXyg8MSB4IGk4PiwgPDEgeCBpOD4pICMwIHsKLStkZWZpbmUgaW50ZXJuYWwg PDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIxX2NTXyg8MSB4IGk4 PiwgPDEgeCBpOD4pICMwIHsKLSAgICUzID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi0gICAl NCA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgPDEgeCBpOD4sIGFs aWduIDEKLUBAIC02MzQsNyArNjM0LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGk4PiBAX1oy NF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjFfY1NfKDwxIHggaTg+LCA8MQotIH0KLSAK LSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwg PDIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIyX2NTXyg8MiB4IGk4 PiwgPDIgeCBpOD4pICMzIHsKLStkZWZpbmUgaW50ZXJuYWwgPDIgeCBpOD4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIyX2NTXyg8MiB4IGk4PiwgPDIgeCBpOD4pICMzIHsKLSAg ICUzID0gYWxsb2NhIDwyIHggaTg+LCBhbGlnbiAyCi0gICAlNCA9IGFsbG9jYSA8MiB4IGk4Piwg YWxpZ24gMgotICAgJTUgPSBhbGxvY2EgPDIgeCBpOD4sIGFsaWduIDIKLUBAIC02ODAsNyArNjgw LDcgQEAgZGVmaW5lIGludGVybmFsIDwyIHggaTg+IEBfWk43ZGV0YWlsczEzX19pbXBsX2RpdnJl bUlMaTJFRUV1MkNNdmJUX19jUzFfUzFfdTJDTXYKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczog bm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDw0IHggaTg+IEBfWjI0X19jbV9p bnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiNF9jU18oPDQgeCBpOD4sIDw0IHggaTg+KSAjNSB7Ci0r ZGVmaW5lIGludGVybmFsIDw0IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJD TXZiNF9jU18oPDQgeCBpOD4sIDw0IHggaTg+KSAjNSB7Ci0gICAlMyA9IGFsbG9jYSA8NCB4IGk4 PiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2EgPDQgeCBpOD4sIGFsaWduIDQKLSAgICU1ID0gYWxs b2NhIDw0IHggaTg+LCBhbGlnbiA0Ci1AQCAtODE4LDcgKzgxOCw3IEBAIGRlZmluZSBpbnRlcm5h bCA8MTYgeCBpOD4gQF9aTjdkZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMTZFRUV1MkNNdmJUX19j UzFfUzFfdTJDCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0t ZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1 MkNNdmIzMl9jU18oPDMyIHggaTg+LCA8MzIgeCBpOD4pICMxMSB7Ci0rZGVmaW5lIGludGVybmFs IDwzMiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjMyX2NTXyg8MzIg eCBpOD4sIDwzMiB4IGk4PikgIzExIHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24g MzIKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLSAgICU1ID0gYWxsb2NhIDwz MiB4IGk4PiwgYWxpZ24gMzIKLUBAIC04NjQsNyArODY0LDcgQEAgZGVmaW5lIGludGVybmFsIDwz MiB4IGk4PiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1JTGkzMkVFRXUyQ012YlRfX2NTMV9T MV91MkMKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZp bmUgZHNvX2xvY2FsIHNpZ25leHQgaTggQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW1jYyhp OCBzaWduZXh0LCBpOCBzaWduZXh0KSAjMCB7Ci0rZGVmaW5lIGludGVybmFsIHNpZ25leHQgaTgg QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW1jYyhpOCBzaWduZXh0LCBpOCBzaWduZXh0KSAj MCB7Ci0gICAlMyA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTQgPSBhbGxvY2EgaTgsIGFsaWdu IDEKLSAgICU1ID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi1AQCAtODkwLDcgKzg5MCw3IEBA IGRlZmluZSBkc29fbG9jYWwgc2lnbmV4dCBpOCBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3Jl bWNjKGk4IHNpZ25leHQsIGk4IHNpZ25lCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5s aW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4IGk4PiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfc3JlbXUyQ012YjFfY1NfKDwxIHggaTg+LCA8MSB4IGk4PikgIzAgewotK2RlZmlu ZSBpbnRlcm5hbCA8MSB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjFf Y1NfKDwxIHggaTg+LCA8MSB4IGk4PikgIzAgewotICAgJTMgPSBhbGxvY2EgPDEgeCBpOD4sIGFs aWduIDEKLSAgICU0ID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSA8 MSB4IGk4PiwgYWxpZ24gMQotQEAgLTkwNCw3ICs5MDQsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwx IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMV9jU18oPDEgeCBpOD4s IDwxCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5l IGRzb19sb2NhbCA8MiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjJf Y1NfKDwyIHggaTg+LCA8MiB4IGk4PikgIzMgewotK2RlZmluZSBpbnRlcm5hbCA8MiB4IGk4PiBA X1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjJfY1NfKDwyIHggaTg+LCA8MiB4IGk4 PikgIzMgewotICAgJTMgPSBhbGxvY2EgPDIgeCBpOD4sIGFsaWduIDIKLSAgICU0ID0gYWxsb2Nh IDwyIHggaTg+LCBhbGlnbiAyCi0gICAlNSA9IGFsbG9jYSA8MiB4IGk4PiwgYWxpZ24gMgotQEAg LTkxOCw3ICs5MTgsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwyIHggaTg+IEBfWjI0X19jbV9pbnRy aW5zaWNfaW1wbF9zcmVtdTJDTXZiMl9jU18oPDIgeCBpOD4sIDwyCi0gfQotIAotIDsgRnVuY3Rp b24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8NCB4IGk4PiBA X1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjRfY1NfKDw0IHggaTg+LCA8NCB4IGk4 PikgIzUgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfc3JlbXUyQ012YjRfY1NfKDw0IHggaTg+LCA8NCB4IGk4PikgIzUgewotICAgJTMgPSBhbGxv Y2EgPDQgeCBpOD4sIGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0Ci0g ICAlNSA9IGFsbG9jYSA8NCB4IGk4PiwgYWxpZ24gNAotQEAgLTkzMiw3ICs5MzIsNyBAQCBkZWZp bmUgZHNvX2xvY2FsIDw0IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZi NF9jU18oPDQgeCBpOD4sIDw0Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5v dW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8OCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfc3JlbXUyQ012YjhfY1NfKDw4IHggaTg+LCA8OCB4IGk4PikgIzcgewotK2RlZmluZSBpbnRl cm5hbCA8OCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjhfY1NfKDw4 IHggaTg+LCA8OCB4IGk4PikgIzcgewotICAgJTMgPSBhbGxvY2EgPDggeCBpOD4sIGFsaWduIDgK LSAgICU0ID0gYWxsb2NhIDw4IHggaTg+LCBhbGlnbiA4Ci0gICAlNSA9IGFsbG9jYSA8OCB4IGk4 PiwgYWxpZ24gOAotQEAgLTk0Niw3ICs5NDYsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw4IHggaTg+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiOF9jU18oPDggeCBpOD4sIDw4Ci0g fQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19s b2NhbCA8MTYgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxNl9jU18o PDE2IHggaTg+LCA8MTYgeCBpOD4pICM5IHsKLStkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTg+IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMTZfY1NfKDwxNiB4IGk4PiwgPDE2IHgg aTg+KSAjOSB7Ci0gICAlMyA9IGFsbG9jYSA8MTYgeCBpOD4sIGFsaWduIDE2Ci0gICAlNCA9IGFs bG9jYSA8MTYgeCBpOD4sIGFsaWduIDE2Ci0gICAlNSA9IGFsbG9jYSA8MTYgeCBpOD4sIGFsaWdu IDE2Ci1AQCAtOTYwLDcgKzk2MCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDE2IHggaTg+IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMTZfY1NfKDwxNiB4IGk4PiwKLSB9Ci0gCi0g OyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwz MiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjMyX2NTXyg8MzIgeCBp OD4sIDwzMiB4IGk4PikgIzExIHsKLStkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTg+IEBfWjI0X19j bV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMzJfY1NfKDwzMiB4IGk4PiwgPDMyIHggaTg+KSAj MTEgewotICAgJTMgPSBhbGxvY2EgPDMyIHggaTg+LCBhbGlnbiAzMgotICAgJTQgPSBhbGxvY2Eg PDMyIHggaTg+LCBhbGlnbiAzMgotICAgJTUgPSBhbGxvY2EgPDMyIHggaTg+LCBhbGlnbiAzMgot QEAgLTk3NCw3ICs5NzQsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGk4PiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjMyX2NTXyg8MzIgeCBpOD4sCi0gfQotIAotIDsgRnVu Y3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCBzaWduZXh0 IGkxNiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnNzKGkxNiBzaWduZXh0LCBpMTYgc2ln bmV4dCkgIzMgewotK2RlZmluZSBpbnRlcm5hbCBzaWduZXh0IGkxNiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfc2RpdnNzKGkxNiBzaWduZXh0LCBpMTYgc2lnbmV4dCkgIzMgewotICAgJTMgPSBh bGxvY2EgaTE2LCBhbGlnbiAyCi0gICAlNCA9IGFsbG9jYSBpMTYsIGFsaWduIDIKLSAgICU1ID0g YWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotQEAgLTEwNTgsNyArMTA1OCw3IEBAIGRlZmluZSBp bnRlcm5hbCA8MSB4IGkxNj4gQF9aTjdkZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMUVFRXUyQ012 YlRfX3NTMV9TMV91MkNNCi0gZGVjbGFyZSA8MSB4IGkxNj4gQGxsdm0uZ2VueC5yZHJlZ2lvbmku djFpMTYudjFpMTYuaTE2KDwxIHggaTE2PiwgaTMyLCBpMzIsIGkzMiwgaTE2LCBpMzIpICMyCi0g Ci0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2Fs IDwxIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjFfc1NfKDwxIHgg aTE2PiwgPDEgeCBpMTY+KSAjMyB7Ci0rZGVmaW5lIGludGVybmFsIDwxIHggaTE2PiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjFfc1NfKDwxIHggaTE2PiwgPDEgeCBpMTY+KSAj MyB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLSAgICU0ID0gYWxsb2NhIDwx IHggaTE2PiwgYWxpZ24gMgotICAgJTUgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi1AQCAt MTA3NCw3ICsxMDc0LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIxX3NTXyg8MSB4IGkxNj4sIDwKLSB9Ci0gCi0gOyBGdW5j dGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHggaTE2 PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjJfc1NfKDwyIHggaTE2PiwgPDIg eCBpMTY+KSAjNSB7Ci0rZGVmaW5lIGludGVybmFsIDwyIHggaTE2PiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfc2RpdnUyQ012YjJfc1NfKDwyIHggaTE2PiwgPDIgeCBpMTY+KSAjNSB7Ci0gICAl MyA9IGFsbG9jYSA8MiB4IGkxNj4sIGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIDwyIHggaTE2Piwg YWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDIgeCBpMTY+LCBhbGlnbiA0Ci1AQCAtMTE0Myw3ICsx MTQzLDcgQEAgZGVmaW5lIGludGVybmFsIDwyIHggaTE2PiBAX1pON2RldGFpbHMxM19faW1wbF9k aXZyZW1JTGkyRUVFdTJDTXZiVF9fc1MxX1MxX3UyQ00KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRy czogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDw0IHggaTE2PiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjRfc1NfKDw0IHggaTE2PiwgPDQgeCBpMTY+KSAj NyB7Ci0rZGVmaW5lIGludGVybmFsIDw0IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf c2RpdnUyQ012YjRfc1NfKDw0IHggaTE2PiwgPDQgeCBpMTY+KSAjNyB7Ci0gICAlMyA9IGFsbG9j YSA8NCB4IGkxNj4sIGFsaWduIDgKLSAgICU0ID0gYWxsb2NhIDw0IHggaTE2PiwgYWxpZ24gOAot ICAgJTUgPSBhbGxvY2EgPDQgeCBpMTY+LCBhbGlnbiA4Ci1AQCAtMTM1MCw3ICsxMzUwLDcgQEAg ZGVmaW5lIGludGVybmFsIDwxNiB4IGkxNj4gQF9aTjdkZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxp MTZFRUV1MkNNdmJUX19zUzFfUzFfdTIKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxp bmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGkxNj4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3NkaXZ1MkNNdmIzMl9zU18oPDMyIHggaTE2PiwgPDMyIHggaTE2PikgIzEzIHsK LStkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2Rp dnUyQ012YjMyX3NTXyg8MzIgeCBpMTY+LCA8MzIgeCBpMTY+KSAjMTMgewotICAgJTMgPSBhbGxv Y2EgPDMyIHggaTE2PiwgYWxpZ24gNjQKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGkxNj4sIGFsaWdu IDY0Ci0gICAlNSA9IGFsbG9jYSA8MzIgeCBpMTY+LCBhbGlnbiA2NAotQEAgLTE0MTksNyArMTQx OSw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MzIgeCBpMTY+IEBfWk43ZGV0YWlsczEzX19pbXBsX2Rp dnJlbUlMaTMyRUVFdTJDTXZiVF9fc1MxX1MxX3UyCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6 IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCBzaWduZXh0IGkxNiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfc3JlbXNzKGkxNiBzaWduZXh0LCBpMTYgc2lnbmV4dCkgIzMgewot K2RlZmluZSBpbnRlcm5hbCBzaWduZXh0IGkxNiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3Jl bXNzKGkxNiBzaWduZXh0LCBpMTYgc2lnbmV4dCkgIzMgewotICAgJTMgPSBhbGxvY2EgaTE2LCBh bGlnbiAyCi0gICAlNCA9IGFsbG9jYSBpMTYsIGFsaWduIDIKLSAgICU1ID0gYWxsb2NhIDwxIHgg aTE2PiwgYWxpZ24gMgotQEAgLTE0NDUsNyArMTQ0NSw3IEBAIGRlZmluZSBkc29fbG9jYWwgc2ln bmV4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW1zcyhpMTYgc2lnbmV4dCwgaTE2 IHNpCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5l IGRzb19sb2NhbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIx X3NTXyg8MSB4IGkxNj4sIDwxIHggaTE2PikgIzMgewotK2RlZmluZSBpbnRlcm5hbCA8MSB4IGkx Nj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxX3NTXyg8MSB4IGkxNj4sIDwx IHggaTE2PikgIzMgewotICAgJTMgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi0gICAlNCA9 IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLSAgICU1ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxp Z24gMgotQEAgLTE0NTksNyArMTQ1OSw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDEgeCBpMTY+IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMV9zU18oPDEgeCBpMTY+LCA8Ci0gfQot IAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2Nh bCA8MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIyX3NTXyg8MiB4 IGkxNj4sIDwyIHggaTE2PikgIzUgewotK2RlZmluZSBpbnRlcm5hbCA8MiB4IGkxNj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIyX3NTXyg8MiB4IGkxNj4sIDwyIHggaTE2Pikg IzUgewotICAgJTMgPSBhbGxvY2EgPDIgeCBpMTY+LCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSA8 MiB4IGkxNj4sIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwyIHggaTE2PiwgYWxpZ24gNAotQEAg LTE0NzMsNyArMTQ3Myw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDIgeCBpMTY+IEBfWjI0X19jbV9p bnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMl9zU18oPDIgeCBpMTY+LCA8Ci0gfQotIAotIDsgRnVu Y3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8NCB4IGkx Nj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI0X3NTXyg8NCB4IGkxNj4sIDw0 IHggaTE2PikgIzcgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4IGkxNj4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3NyZW11MkNNdmI0X3NTXyg8NCB4IGkxNj4sIDw0IHggaTE2PikgIzcgewotICAg JTMgPSBhbGxvY2EgPDQgeCBpMTY+LCBhbGlnbiA4Ci0gICAlNCA9IGFsbG9jYSA8NCB4IGkxNj4s IGFsaWduIDgKLSAgICU1ID0gYWxsb2NhIDw0IHggaTE2PiwgYWxpZ24gOAotQEAgLTE0ODcsNyAr MTQ4Nyw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDQgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF9zcmVtdTJDTXZiNF9zU18oPDQgeCBpMTY+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0 cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8OCB4IGkxNj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI4X3NTXyg8OCB4IGkxNj4sIDw4IHggaTE2Pikg IzkgewotK2RlZmluZSBpbnRlcm5hbCA8OCB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3NyZW11MkNNdmI4X3NTXyg8OCB4IGkxNj4sIDw4IHggaTE2PikgIzkgewotICAgJTMgPSBhbGxv Y2EgPDggeCBpMTY+LCBhbGlnbiAxNgotICAgJTQgPSBhbGxvY2EgPDggeCBpMTY+LCBhbGlnbiAx NgotICAgJTUgPSBhbGxvY2EgPDggeCBpMTY+LCBhbGlnbiAxNgotQEAgLTE1MDEsNyArMTUwMSw3 IEBAIGRlZmluZSBkc29fbG9jYWwgPDggeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9z cmVtdTJDTXZiOF9zU18oPDggeCBpMTY+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5v aW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MTYgeCBpMTY+IEBfWjI0X19jbV9p bnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMTZfc1NfKDwxNiB4IGkxNj4sIDwxNiB4IGkxNj4pICMx MSB7Ci0rZGVmaW5lIGludGVybmFsIDwxNiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3NyZW11MkNNdmIxNl9zU18oPDE2IHggaTE2PiwgPDE2IHggaTE2PikgIzExIHsKLSAgICUzID0g YWxsb2NhIDwxNiB4IGkxNj4sIGFsaWduIDMyCi0gICAlNCA9IGFsbG9jYSA8MTYgeCBpMTY+LCBh bGlnbiAzMgotICAgJTUgPSBhbGxvY2EgPDE2IHggaTE2PiwgYWxpZ24gMzIKLUBAIC0xNTE1LDcg KzE1MTUsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxNiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNp Y19pbXBsX3NyZW11MkNNdmIxNl9zU18oPDE2IHggaTE2PgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0 dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDMyIHggaTE2PiBAX1oy NF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjMyX3NTXyg8MzIgeCBpMTY+LCA8MzIgeCBp MTY+KSAjMTMgewotK2RlZmluZSBpbnRlcm5hbCA8MzIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF9zcmVtdTJDTXZiMzJfc1NfKDwzMiB4IGkxNj4sIDwzMiB4IGkxNj4pICMxMyB7Ci0g ICAlMyA9IGFsbG9jYSA8MzIgeCBpMTY+LCBhbGlnbiA2NAotICAgJTQgPSBhbGxvY2EgPDMyIHgg aTE2PiwgYWxpZ24gNjQKLSAgICU1ID0gYWxsb2NhIDwzMiB4IGkxNj4sIGFsaWduIDY0Ci1AQCAt MTUyOSw3ICsxNTI5LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpMTY+IEBfWjI0X19jbV9p bnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMzJfc1NfKDwzMiB4IGkxNj4KLSB9Ci0gCi0gOyBGdW5j dGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIGkzMiBAX1oy NF9fY21faW50cmluc2ljX2ltcGxfc2RpdmlpKGkzMiwgaTMyKSAjMTQgewotK2RlZmluZSBpbnRl cm5hbCBpMzIgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZpaShpMzIsIGkzMikgIzE0IHsK LSAgICUzID0gYWxsb2NhIGkzMiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2EgaTMyLCBhbGlnbiA0 Ci0gICAlNSA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLUBAIC0xNzMwLDcgKzE3MzAsNyBA QCBkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMzI+IEBfWk43ZGV0YWlsczEzX19pbXBsX2RpdnJlbUlM aTFFRUV1MkNNdmJUX19pUzFfUzFfdTJDTQotIGRlY2xhcmUgPDEgeCBpMzI+IEBsbHZtLmdlbngu cmRyZWdpb25pLnYxaTMyLnYxaTMyLmkxNig8MSB4IGkzMj4sIGkzMiwgaTMyLCBpMzIsIGkxNiwg aTMyKSAjMgotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5l IGRzb19sb2NhbCA8MSB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIx X2lTXyg8MSB4IGkzMj4sIDwxIHggaTMyPikgIzE0IHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBp MzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMV9pU18oPDEgeCBpMzI+LCA8 MSB4IGkzMj4pICMxNCB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLSAgICU0 ID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDEgeCBpMzI+LCBh bGlnbiA0Ci1AQCAtMTc0Niw3ICsxNzQ2LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkzMj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIxX2lTXyg8MSB4IGkzMj4sIDwKLSB9 Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xv Y2FsIDwyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjJfaVNfKDwy IHggaTMyPiwgPDIgeCBpMzI+KSAjMTUgewotK2RlZmluZSBpbnRlcm5hbCA8MiB4IGkzMj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIyX2lTXyg8MiB4IGkzMj4sIDwyIHggaTMy PikgIzE1IHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTMyPiwgYWxpZ24gOAotICAgJTQgPSBhbGxv Y2EgPDIgeCBpMzI+LCBhbGlnbiA4Ci0gICAlNSA9IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWduIDgK LUBAIC0xOTMyLDcgKzE5MzIsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDIgeCBpMzI+IEBfWk43ZGV0 YWlsczEzX19pbXBsX2RpdnJlbUlMaTJFRUV1MkNNdmJUX19pUzFfUzFfdTJDTQotIH0KLSAKLSA7 IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQg eCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiNF9pU18oPDQgeCBpMzI+ LCA8NCB4IGkzMj4pICMxNiB7Ci0rZGVmaW5lIGludGVybmFsIDw0IHggaTMyPiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjRfaVNfKDw0IHggaTMyPiwgPDQgeCBpMzI+KSAjMTYg ewotICAgJTMgPSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotICAgJTQgPSBhbGxvY2EgPDQg eCBpMzI+LCBhbGlnbiAxNgotICAgJTUgPSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotQEAg LTI0OTAsNyArMjQ5MCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MTYgeCBpMzI+IEBfWk43ZGV0YWls czEzX19pbXBsX2RpdnJlbUlMaTE2RUVFdTJDTXZiVF9faVMxX1MxX3UyCi0gfQotIAotIDsgRnVu Y3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBp MzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMzJfaVNfKDwzMiB4IGkzMj4s IDwzMiB4IGkzMj4pICMxOSB7Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGkzMj4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIzMl9pU18oPDMyIHggaTMyPiwgPDMyIHggaTMyPikg IzE5IHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFsaWduIDEyOAotICAgJTQgPSBhbGxv Y2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4Ci0gICAlNSA9IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGln biAxMjgKLUBAIC0yNjc2LDcgKzI2NzYsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTMyPiBA X1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1JTGkzMkVFRXUyQ012YlRfX2lTMV9TMV91MgotIH0K LSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9j YWwgaTMyIEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtaWkoaTMyLCBpMzIpICMxNCB7Ci0r ZGVmaW5lIGludGVybmFsIGkzMiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbWlpKGkzMiwg aTMyKSAjMTQgewotICAgJTMgPSBhbGxvY2EgaTMyLCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSBp MzIsIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotQEAgLTI3MDIs NyArMjcwMiw3IEBAIGRlZmluZSBkc29fbG9jYWwgaTMyIEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF9zcmVtaWkoaTMyLCBpMzIpICMxNCB7Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5s aW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkzMj4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3NyZW11MkNNdmIxX2lTXyg8MSB4IGkzMj4sIDwxIHggaTMyPikgIzE0IHsKLStk ZWZpbmUgaW50ZXJuYWwgPDEgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJD TXZiMV9pU18oPDEgeCBpMzI+LCA8MSB4IGkzMj4pICMxNCB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4 IGkzMj4sIGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotICAgJTUg PSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci1AQCAtMjcxNiw3ICsyNzE2LDcgQEAgZGVmaW5l IGRzb19sb2NhbCA8MSB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIx X2lTXyg8MSB4IGkzMj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91 bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfc3JlbXUyQ012YjJfaVNfKDwyIHggaTMyPiwgPDIgeCBpMzI+KSAjMTUgewotK2RlZmluZSBp bnRlcm5hbCA8MiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIyX2lT Xyg8MiB4IGkzMj4sIDwyIHggaTMyPikgIzE1IHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTMyPiwg YWxpZ24gOAotICAgJTQgPSBhbGxvY2EgPDIgeCBpMzI+LCBhbGlnbiA4Ci0gICAlNSA9IGFsbG9j YSA8MiB4IGkzMj4sIGFsaWduIDgKLUBAIC0yNzMwLDcgKzI3MzAsNyBAQCBkZWZpbmUgZHNvX2xv Y2FsIDwyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjJfaVNfKDwy IHggaTMyPiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAot LWRlZmluZSBkc29fbG9jYWwgPDQgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVt dTJDTXZiNF9pU18oPDQgeCBpMzI+LCA8NCB4IGkzMj4pICMxNiB7Ci0rZGVmaW5lIGludGVybmFs IDw0IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjRfaVNfKDw0IHgg aTMyPiwgPDQgeCBpMzI+KSAjMTYgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAx NgotICAgJTQgPSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotICAgJTUgPSBhbGxvY2EgPDQg eCBpMzI+LCBhbGlnbiAxNgotQEAgLTI3NDQsNyArMjc0NCw3IEBAIGRlZmluZSBkc29fbG9jYWwg PDQgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiNF9pU18oPDQgeCBp MzI+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVm aW5lIGRzb19sb2NhbCA8OCB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNN dmI4X2lTXyg8OCB4IGkzMj4sIDw4IHggaTMyPikgIzE3IHsKLStkZWZpbmUgaW50ZXJuYWwgPDgg eCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiOF9pU18oPDggeCBpMzI+ LCA8OCB4IGkzMj4pICMxNyB7Ci0gICAlMyA9IGFsbG9jYSA8OCB4IGkzMj4sIGFsaWduIDMyCi0g ICAlNCA9IGFsbG9jYSA8OCB4IGkzMj4sIGFsaWduIDMyCi0gICAlNSA9IGFsbG9jYSA8OCB4IGkz Mj4sIGFsaWduIDMyCi1AQCAtMjc1OCw3ICsyNzU4LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8OCB4 IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI4X2lTXyg8OCB4IGkzMj4s IDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUg ZHNvX2xvY2FsIDwxNiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIx Nl9pU18oPDE2IHggaTMyPiwgPDE2IHggaTMyPikgIzE4IHsKLStkZWZpbmUgaW50ZXJuYWwgPDE2 IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjE2X2lTXyg8MTYgeCBp MzI+LCA8MTYgeCBpMzI+KSAjMTggewotICAgJTMgPSBhbGxvY2EgPDE2IHggaTMyPiwgYWxpZ24g NjQKLSAgICU0ID0gYWxsb2NhIDwxNiB4IGkzMj4sIGFsaWduIDY0Ci0gICAlNSA9IGFsbG9jYSA8 MTYgeCBpMzI+LCBhbGlnbiA2NAotQEAgLTI3NzIsNyArMjc3Miw3IEBAIGRlZmluZSBkc29fbG9j YWwgPDE2IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjE2X2lTXyg8 MTYgeCBpMzI+Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0t ZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVt dTJDTXZiMzJfaVNfKDwzMiB4IGkzMj4sIDwzMiB4IGkzMj4pICMxOSB7Ci0rZGVmaW5lIGludGVy bmFsIDwzMiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIzMl9pU18o PDMyIHggaTMyPiwgPDMyIHggaTMyPikgIzE5IHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGkzMj4s IGFsaWduIDEyOAotICAgJTQgPSBhbGxvY2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4Ci0gICAlNSA9 IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAxMjgKLUBAIC0yNzg2LDcgKzI3ODYsNyBAQCBkZWZp bmUgZHNvX2xvY2FsIDwzMiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNN dmIzMl9pU18oPDMyIHggaTMyPgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBu b3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgemVyb2V4dCBpOCBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfdWRpdmhoKGk4IHplcm9leHQsIGk4IHplcm9leHQpICMyMSB7Ci0rZGVmaW5lIGludGVy bmFsIHplcm9leHQgaTggQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZoaChpOCB6ZXJvZXh0 LCBpOCB6ZXJvZXh0KSAjMjEgewotICAgJTMgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU0ID0g YWxsb2NhIGk4LCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotQEAg LTI4NDQsNyArMjg0NCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MSB4IGk4PiBAX1pON2RldGFpbHMx NF9faW1wbF91ZGl2cmVtSUxpMUVFRXUyQ012YlRfX2hTMV9TMV91MkNNCi0gfQotIAotIDsgRnVu Y3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4IGk4 PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjFfaFNfKDwxIHggaTg+LCA8MSB4 IGk4PikgIzIxIHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNp Y19pbXBsX3VkaXZ1MkNNdmIxX2hTXyg8MSB4IGk4PiwgPDEgeCBpOD4pICMyMSB7Ci0gICAlMyA9 IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotICAgJTQgPSBhbGxvY2EgPDEgeCBpOD4sIGFsaWdu IDEKLSAgICU1ID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi1AQCAtMjg2MCw3ICsyODYwLDcg QEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRp dnUyQ012YjFfaFNfKDwxIHggaTg+LCA8MQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lu bGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDIgeCBpOD4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3VkaXZ1MkNNdmIyX2hTXyg8MiB4IGk4PiwgPDIgeCBpOD4pICMyMiB7Ci0rZGVm aW5lIGludGVybmFsIDwyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZi Ml9oU18oPDIgeCBpOD4sIDwyIHggaTg+KSAjMjIgewotICAgJTMgPSBhbGxvY2EgPDIgeCBpOD4s IGFsaWduIDIKLSAgICU0ID0gYWxsb2NhIDwyIHggaTg+LCBhbGlnbiAyCi0gICAlNSA9IGFsbG9j YSA8MiB4IGk4PiwgYWxpZ24gMgotQEAgLTI5MDYsNyArMjkwNiw3IEBAIGRlZmluZSBpbnRlcm5h bCA8MiB4IGk4PiBAX1pON2RldGFpbHMxNF9faW1wbF91ZGl2cmVtSUxpMkVFRXUyQ012YlRfX2hT MV9TMV91MkNNCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0t ZGVmaW5lIGRzb19sb2NhbCA8NCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUy Q012YjRfaFNfKDw0IHggaTg+LCA8NCB4IGk4PikgIzE0IHsKLStkZWZpbmUgaW50ZXJuYWwgPDQg eCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmI0X2hTXyg8NCB4IGk4Piwg PDQgeCBpOD4pICMxNCB7Ci0gICAlMyA9IGFsbG9jYSA8NCB4IGk4PiwgYWxpZ24gNAotICAgJTQg PSBhbGxvY2EgPDQgeCBpOD4sIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDw0IHggaTg+LCBhbGln biA0Ci1AQCAtMzA0NCw3ICszMDQ0LDcgQEAgZGVmaW5lIGludGVybmFsIDwxNiB4IGk4PiBAX1pO N2RldGFpbHMxNF9faW1wbF91ZGl2cmVtSUxpMTZFRUV1MkNNdmJUX19oUzFfUzFfdTIKLSB9Ci0g Ci0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2Fs IDwzMiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjMyX2hTXyg8MzIg eCBpOD4sIDwzMiB4IGk4PikgIzE3IHsKLStkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTg+IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMzJfaFNfKDwzMiB4IGk4PiwgPDMyIHggaTg+ KSAjMTcgewotICAgJTMgPSBhbGxvY2EgPDMyIHggaTg+LCBhbGlnbiAzMgotICAgJTQgPSBhbGxv Y2EgPDMyIHggaTg+LCBhbGlnbiAzMgotICAgJTUgPSBhbGxvY2EgPDMyIHggaTg+LCBhbGlnbiAz MgotQEAgLTMwOTAsNyArMzA5MCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MzIgeCBpOD4gQF9aTjdk ZXRhaWxzMTRfX2ltcGxfdWRpdnJlbUlMaTMyRUVFdTJDTXZiVF9faFMxX1MxX3UyCi0gfQotIAot IDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCB6 ZXJvZXh0IGk4IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtaGgoaTggemVyb2V4dCwgaTgg emVyb2V4dCkgIzIxIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpOCBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfdXJlbWhoKGk4IHplcm9leHQsIGk4IHplcm9leHQpICMyMSB7Ci0gICAlMyA9 IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTQgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU1ID0g YWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi1AQCAtMzExNiw3ICszMTE2LDcgQEAgZGVmaW5lIGRz b19sb2NhbCB6ZXJvZXh0IGk4IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtaGgoaTggemVy b2V4dCwgaTggemVyb2UKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndp bmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91 cmVtdTJDTXZiMV9oU18oPDEgeCBpOD4sIDwxIHggaTg+KSAjMjEgewotK2RlZmluZSBpbnRlcm5h bCA8MSB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjFfaFNfKDwxIHgg aTg+LCA8MSB4IGk4PikgIzIxIHsKLSAgICUzID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi0g ICAlNCA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgPDEgeCBpOD4s IGFsaWduIDEKLUBAIC0zMTMwLDcgKzMxMzAsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxIHggaTg+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMV9oU18oPDEgeCBpOD4sIDwxCi0g fQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19s b2NhbCA8MiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjJfaFNfKDwy IHggaTg+LCA8MiB4IGk4PikgIzIyIHsKLStkZWZpbmUgaW50ZXJuYWwgPDIgeCBpOD4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIyX2hTXyg8MiB4IGk4PiwgPDIgeCBpOD4pICMy MiB7Ci0gICAlMyA9IGFsbG9jYSA8MiB4IGk4PiwgYWxpZ24gMgotICAgJTQgPSBhbGxvY2EgPDIg eCBpOD4sIGFsaWduIDIKLSAgICU1ID0gYWxsb2NhIDwyIHggaTg+LCBhbGlnbiAyCi1AQCAtMzE0 NCw3ICszMTQ0LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MiB4IGk4PiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfdXJlbXUyQ012YjJfaFNfKDwyIHggaTg+LCA8MgotIH0KLSAKLSA7IEZ1bmN0aW9u IEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBpOD4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI0X2hTXyg8NCB4IGk4PiwgPDQgeCBpOD4p ICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIDw0IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF91cmVtdTJDTXZiNF9oU18oPDQgeCBpOD4sIDw0IHggaTg+KSAjMTQgewotICAgJTMgPSBhbGxv Y2EgPDQgeCBpOD4sIGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0Ci0g ICAlNSA9IGFsbG9jYSA8NCB4IGk4PiwgYWxpZ24gNAotQEAgLTMxNTgsNyArMzE1OCw3IEBAIGRl ZmluZSBkc29fbG9jYWwgPDQgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNN dmI0X2hTXyg8NCB4IGk4PiwgPDQKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUg bm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDw4IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF91cmVtdTJDTXZiOF9oU18oPDggeCBpOD4sIDw4IHggaTg+KSAjMTUgewotK2RlZmluZSBp bnRlcm5hbCA8OCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjhfaFNf KDw4IHggaTg+LCA8OCB4IGk4PikgIzE1IHsKLSAgICUzID0gYWxsb2NhIDw4IHggaTg+LCBhbGln biA4Ci0gICAlNCA9IGFsbG9jYSA8OCB4IGk4PiwgYWxpZ24gOAotICAgJTUgPSBhbGxvY2EgPDgg eCBpOD4sIGFsaWduIDgKLUBAIC0zMTcyLDcgKzMxNzIsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw4 IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiOF9oU18oPDggeCBpOD4s IDw4Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5l IGRzb19sb2NhbCA8MTYgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIx Nl9oU18oPDE2IHggaTg+LCA8MTYgeCBpOD4pICMxNiB7Ci0rZGVmaW5lIGludGVybmFsIDwxNiB4 IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjE2X2hTXyg8MTYgeCBpOD4s IDwxNiB4IGk4PikgIzE2IHsKLSAgICUzID0gYWxsb2NhIDwxNiB4IGk4PiwgYWxpZ24gMTYKLSAg ICU0ID0gYWxsb2NhIDwxNiB4IGk4PiwgYWxpZ24gMTYKLSAgICU1ID0gYWxsb2NhIDwxNiB4IGk4 PiwgYWxpZ24gMTYKLUBAIC0zMTg2LDcgKzMxODYsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxNiB4 IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjE2X2hTXyg8MTYgeCBpOD4s Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRz b19sb2NhbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIzMl9o U18oPDMyIHggaTg+LCA8MzIgeCBpOD4pICMxNyB7Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGk4 PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjMyX2hTXyg8MzIgeCBpOD4sIDwz MiB4IGk4PikgIzE3IHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLSAgICU0 ID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLSAgICU1ID0gYWxsb2NhIDwzMiB4IGk4Piwg YWxpZ24gMzIKLUBAIC0zMjAwLDcgKzMyMDAsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGk4 PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjMyX2hTXyg8MzIgeCBpOD4sCi0g fQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19s b2NhbCB6ZXJvZXh0IGkxNiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnR0KGkxNiB6ZXJv ZXh0LCBpMTYgemVyb2V4dCkgIzIyIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMTYgQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ0dChpMTYgemVyb2V4dCwgaTE2IHplcm9leHQpICMy MiB7Ci0gICAlMyA9IGFsbG9jYSBpMTYsIGFsaWduIDIKLSAgICU0ID0gYWxsb2NhIGkxNiwgYWxp Z24gMgotICAgJTUgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi1AQCAtMzI3OCw3ICszMjc4 LDcgQEAgZGVmaW5lIGludGVybmFsIDwxIHggaTE2PiBAX1pON2RldGFpbHMxNF9faW1wbF91ZGl2 cmVtSUxpMUVFRXUyQ012YlRfX3RTMV9TMV91MkMKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczog bm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxIHggaTE2PiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjFfdFNfKDwxIHggaTE2PiwgPDEgeCBpMTY+KSAjMjIg ewotK2RlZmluZSBpbnRlcm5hbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Vk aXZ1MkNNdmIxX3RTXyg8MSB4IGkxNj4sIDwxIHggaTE2PikgIzIyIHsKLSAgICUzID0gYWxsb2Nh IDwxIHggaTE2PiwgYWxpZ24gMgotICAgJTQgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi0g ICAlNSA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLUBAIC0zMjk0LDcgKzMyOTQsNyBAQCBk ZWZpbmUgZHNvX2xvY2FsIDwxIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUy Q012YjFfdFNfKDwxIHggaTE2PiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGlu ZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF91ZGl2dTJDTXZiMl90U18oPDIgeCBpMTY+LCA8MiB4IGkxNj4pICMxNCB7Ci0rZGVm aW5lIGludGVybmFsIDwyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012 YjJfdFNfKDwyIHggaTE2PiwgPDIgeCBpMTY+KSAjMTQgewotICAgJTMgPSBhbGxvY2EgPDIgeCBp MTY+LCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSA8MiB4IGkxNj4sIGFsaWduIDQKLSAgICU1ID0g YWxsb2NhIDwyIHggaTE2PiwgYWxpZ24gNAotQEAgLTMzNjAsNyArMzM2MCw3IEBAIGRlZmluZSBp bnRlcm5hbCA8MiB4IGkxNj4gQF9aTjdkZXRhaWxzMTRfX2ltcGxfdWRpdnJlbUlMaTJFRUV1MkNN dmJUX190UzFfUzFfdTJDCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53 aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8NCB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3VkaXZ1MkNNdmI0X3RTXyg8NCB4IGkxNj4sIDw0IHggaTE2PikgIzE1IHsKLStkZWZpbmUgaW50 ZXJuYWwgPDQgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiNF90U18o PDQgeCBpMTY+LCA8NCB4IGkxNj4pICMxNSB7Ci0gICAlMyA9IGFsbG9jYSA8NCB4IGkxNj4sIGFs aWduIDgKLSAgICU0ID0gYWxsb2NhIDw0IHggaTE2PiwgYWxpZ24gOAotICAgJTUgPSBhbGxvY2Eg PDQgeCBpMTY+LCBhbGlnbiA4Ci1AQCAtMzU1OCw3ICszNTU4LDcgQEAgZGVmaW5lIGludGVybmFs IDwxNiB4IGkxNj4gQF9aTjdkZXRhaWxzMTRfX2ltcGxfdWRpdnJlbUlMaTE2RUVFdTJDTXZiVF9f dFMxX1MxX3UKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1k ZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1 MkNNdmIzMl90U18oPDMyIHggaTE2PiwgPDMyIHggaTE2PikgIzE4IHsKLStkZWZpbmUgaW50ZXJu YWwgPDMyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjMyX3RTXyg8 MzIgeCBpMTY+LCA8MzIgeCBpMTY+KSAjMTggewotICAgJTMgPSBhbGxvY2EgPDMyIHggaTE2Piwg YWxpZ24gNjQKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGkxNj4sIGFsaWduIDY0Ci0gICAlNSA9IGFs bG9jYSA8MzIgeCBpMTY+LCBhbGlnbiA2NAotQEAgLTM2MjQsNyArMzYyNCw3IEBAIGRlZmluZSBp bnRlcm5hbCA8MzIgeCBpMTY+IEBfWk43ZGV0YWlsczE0X19pbXBsX3VkaXZyZW1JTGkzMkVFRXUy Q012YlRfX3RTMV9TMV91Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53 aW5kCi0tZGVmaW5lIGRzb19sb2NhbCB6ZXJvZXh0IGkxNiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfdXJlbXR0KGkxNiB6ZXJvZXh0LCBpMTYgemVyb2V4dCkgIzIyIHsKLStkZWZpbmUgaW50ZXJu YWwgemVyb2V4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW10dChpMTYgemVyb2V4 dCwgaTE2IHplcm9leHQpICMyMiB7Ci0gICAlMyA9IGFsbG9jYSBpMTYsIGFsaWduIDIKLSAgICU0 ID0gYWxsb2NhIGkxNiwgYWxpZ24gMgotICAgJTUgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAy Ci1AQCAtMzY1MCw3ICszNjUwLDcgQEAgZGVmaW5lIGRzb19sb2NhbCB6ZXJvZXh0IGkxNiBAX1oy NF9fY21faW50cmluc2ljX2ltcGxfdXJlbXR0KGkxNiB6ZXJvZXh0LCBpMTYgemUKLSB9Ci0gCi0g OyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwx IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjFfdFNfKDwxIHggaTE2 PiwgPDEgeCBpMTY+KSAjMjIgewotK2RlZmluZSBpbnRlcm5hbCA8MSB4IGkxNj4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxX3RTXyg8MSB4IGkxNj4sIDwxIHggaTE2PikgIzIy IHsKLSAgICUzID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotICAgJTQgPSBhbGxvY2EgPDEg eCBpMTY+LCBhbGlnbiAyCi0gICAlNSA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLUBAIC0z NjY0LDcgKzM2NjQsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxIHggaTE2PiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfdXJlbXUyQ012YjFfdFNfKDwxIHggaTE2PiwgPAotIH0KLSAKLSA7IEZ1bmN0 aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDIgeCBpMTY+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMl90U18oPDIgeCBpMTY+LCA8MiB4 IGkxNj4pICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIDwyIHggaTE2PiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfdXJlbXUyQ012YjJfdFNfKDwyIHggaTE2PiwgPDIgeCBpMTY+KSAjMTQgewotICAg JTMgPSBhbGxvY2EgPDIgeCBpMTY+LCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSA8MiB4IGkxNj4s IGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwyIHggaTE2PiwgYWxpZ24gNAotQEAgLTM2NzgsNyAr MzY3OCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF91cmVtdTJDTXZiMl90U18oPDIgeCBpMTY+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0 cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8NCB4IGkxNj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI0X3RTXyg8NCB4IGkxNj4sIDw0IHggaTE2Pikg IzE1IHsKLStkZWZpbmUgaW50ZXJuYWwgPDQgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF91cmVtdTJDTXZiNF90U18oPDQgeCBpMTY+LCA8NCB4IGkxNj4pICMxNSB7Ci0gICAlMyA9IGFs bG9jYSA8NCB4IGkxNj4sIGFsaWduIDgKLSAgICU0ID0gYWxsb2NhIDw0IHggaTE2PiwgYWxpZ24g OAotICAgJTUgPSBhbGxvY2EgPDQgeCBpMTY+LCBhbGlnbiA4Ci1AQCAtMzY5Miw3ICszNjkyLDcg QEAgZGVmaW5lIGRzb19sb2NhbCA8NCB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Vy ZW11MkNNdmI0X3RTXyg8NCB4IGkxNj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9p bmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDw4IHggaTE2PiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfdXJlbXUyQ012YjhfdFNfKDw4IHggaTE2PiwgPDggeCBpMTY+KSAjMTYgewot K2RlZmluZSBpbnRlcm5hbCA8OCB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11 MkNNdmI4X3RTXyg8OCB4IGkxNj4sIDw4IHggaTE2PikgIzE2IHsKLSAgICUzID0gYWxsb2NhIDw4 IHggaTE2PiwgYWxpZ24gMTYKLSAgICU0ID0gYWxsb2NhIDw4IHggaTE2PiwgYWxpZ24gMTYKLSAg ICU1ID0gYWxsb2NhIDw4IHggaTE2PiwgYWxpZ24gMTYKLUBAIC0zNzA2LDcgKzM3MDYsNyBAQCBk ZWZpbmUgZHNvX2xvY2FsIDw4IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUy Q012YjhfdFNfKDw4IHggaTE2PiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGlu ZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDE2IHggaTE2PiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfdXJlbXUyQ012YjE2X3RTXyg8MTYgeCBpMTY+LCA8MTYgeCBpMTY+KSAjMTcgewot K2RlZmluZSBpbnRlcm5hbCA8MTYgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVt dTJDTXZiMTZfdFNfKDwxNiB4IGkxNj4sIDwxNiB4IGkxNj4pICMxNyB7Ci0gICAlMyA9IGFsbG9j YSA8MTYgeCBpMTY+LCBhbGlnbiAzMgotICAgJTQgPSBhbGxvY2EgPDE2IHggaTE2PiwgYWxpZ24g MzIKLSAgICU1ID0gYWxsb2NhIDwxNiB4IGkxNj4sIGFsaWduIDMyCi1AQCAtMzcyMCw3ICszNzIw LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MTYgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF91cmVtdTJDTXZiMTZfdFNfKDwxNiB4IGkxNj4KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczog bm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGkxNj4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIzMl90U18oPDMyIHggaTE2PiwgPDMyIHggaTE2Pikg IzE4IHsKLStkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfdXJlbXUyQ012YjMyX3RTXyg8MzIgeCBpMTY+LCA8MzIgeCBpMTY+KSAjMTggewotICAgJTMg PSBhbGxvY2EgPDMyIHggaTE2PiwgYWxpZ24gNjQKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGkxNj4s IGFsaWduIDY0Ci0gICAlNSA9IGFsbG9jYSA8MzIgeCBpMTY+LCBhbGlnbiA2NAotQEAgLTM3MzQs NyArMzczNCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDMyIHggaTE2PiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfdXJlbXUyQ012YjMyX3RTXyg8MzIgeCBpMTY+Ci0gfQotIAotIDsgRnVuY3Rpb24g QXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCBpMzIgQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3VkaXZqaihpMzIsIGkzMikgIzE0IHsKLStkZWZpbmUgaW50ZXJuYWwg aTMyIEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2amooaTMyLCBpMzIpICMxNCB7Ci0gICAl MyA9IGFsbG9jYSBpMzIsIGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIGkzMiwgYWxpZ24gNAotICAg JTUgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci1AQCAtMzg5Miw3ICszODkyLDcgQEAgZGVm aW5lIGludGVybmFsIDwxIHggaTMyPiBAX1pON2RldGFpbHMxNF9faW1wbF91ZGl2cmVtSUxpMUVF RXUyQ012YlRfX2pTMV9TMV91MkMKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUg bm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxIHggaTMyPiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfdWRpdnUyQ012YjFfalNfKDwxIHggaTMyPiwgPDEgeCBpMzI+KSAjMTQgewotK2RlZmlu ZSBpbnRlcm5hbCA8MSB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIx X2pTXyg8MSB4IGkzMj4sIDwxIHggaTMyPikgIzE0IHsKLSAgICUzID0gYWxsb2NhIDwxIHggaTMy PiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci0gICAlNSA9IGFs bG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLUBAIC0zOTA4LDcgKzM5MDgsNyBAQCBkZWZpbmUgZHNv X2xvY2FsIDwxIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjFfalNf KDwxIHggaTMyPiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2lu ZAotLWRlZmluZSBkc29fbG9jYWwgPDIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91 ZGl2dTJDTXZiMl9qU18oPDIgeCBpMzI+LCA8MiB4IGkzMj4pICMxNSB7Ci0rZGVmaW5lIGludGVy bmFsIDwyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjJfalNfKDwy IHggaTMyPiwgPDIgeCBpMzI+KSAjMTUgewotICAgJTMgPSBhbGxvY2EgPDIgeCBpMzI+LCBhbGln biA4Ci0gICAlNCA9IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWduIDgKLSAgICU1ID0gYWxsb2NhIDwy IHggaTMyPiwgYWxpZ24gOAotQEAgLTQwNTQsNyArNDA1NCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8 MiB4IGkzMj4gQF9aTjdkZXRhaWxzMTRfX2ltcGxfdWRpdnJlbUlMaTJFRUV1MkNNdmJUX19qUzFf UzFfdTJDCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVm aW5lIGRzb19sb2NhbCA8NCB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNN dmI0X2pTXyg8NCB4IGkzMj4sIDw0IHggaTMyPikgIzE2IHsKLStkZWZpbmUgaW50ZXJuYWwgPDQg eCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiNF9qU18oPDQgeCBpMzI+ LCA8NCB4IGkzMj4pICMxNiB7Ci0gICAlMyA9IGFsbG9jYSA8NCB4IGkzMj4sIGFsaWduIDE2Ci0g ICAlNCA9IGFsbG9jYSA8NCB4IGkzMj4sIGFsaWduIDE2Ci0gICAlNSA9IGFsbG9jYSA8NCB4IGkz Mj4sIGFsaWduIDE2Ci1AQCAtNDQ5Miw3ICs0NDkyLDcgQEAgZGVmaW5lIGludGVybmFsIDwxNiB4 IGkzMj4gQF9aTjdkZXRhaWxzMTRfX2ltcGxfdWRpdnJlbUlMaTE2RUVFdTJDTXZiVF9falMxX1Mx X3UKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUg ZHNvX2xvY2FsIDwzMiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIz Ml9qU18oPDMyIHggaTMyPiwgPDMyIHggaTMyPikgIzE5IHsKLStkZWZpbmUgaW50ZXJuYWwgPDMy IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjMyX2pTXyg8MzIgeCBp MzI+LCA8MzIgeCBpMzI+KSAjMTkgewotICAgJTMgPSBhbGxvY2EgPDMyIHggaTMyPiwgYWxpZ24g MTI4Ci0gICAlNCA9IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAxMjgKLSAgICU1ID0gYWxsb2Nh IDwzMiB4IGkzMj4sIGFsaWduIDEyOAotQEAgLTQ2MzgsNyArNDYzOCw3IEBAIGRlZmluZSBpbnRl cm5hbCA8MzIgeCBpMzI+IEBfWk43ZGV0YWlsczE0X19pbXBsX3VkaXZyZW1JTGkzMkVFRXUyQ012 YlRfX2pTMV9TMV91Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5k Ci0tZGVmaW5lIGRzb19sb2NhbCBpMzIgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW1qaihp MzIsIGkzMikgIzE0IHsKLStkZWZpbmUgaW50ZXJuYWwgaTMyIEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF91cmVtamooaTMyLCBpMzIpICMxNCB7Ci0gICAlMyA9IGFsbG9jYSBpMzIsIGFsaWduIDQK LSAgICU0ID0gYWxsb2NhIGkzMiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDEgeCBpMzI+LCBh bGlnbiA0Ci1AQCAtNDY2NCw3ICs0NjY0LDcgQEAgZGVmaW5lIGRzb19sb2NhbCBpMzIgQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3VyZW1qaihpMzIsIGkzMikgIzE0IHsKLSB9Ci0gCi0gOyBGdW5j dGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxIHggaTMy PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjFfalNfKDwxIHggaTMyPiwgPDEg eCBpMzI+KSAjMTQgewotK2RlZmluZSBpbnRlcm5hbCA8MSB4IGkzMj4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3VyZW11MkNNdmIxX2pTXyg8MSB4IGkzMj4sIDwxIHggaTMyPikgIzE0IHsKLSAg ICUzID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2EgPDEgeCBpMzI+ LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLUBAIC00Njc4LDcg KzQ2NzgsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxIHggaTMyPiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfdXJlbXUyQ012YjFfalNfKDwxIHggaTMyPiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0 dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDIgeCBpMzI+IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMl9qU18oPDIgeCBpMzI+LCA8MiB4IGkzMj4p ICMxNSB7Ci0rZGVmaW5lIGludGVybmFsIDwyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfdXJlbXUyQ012YjJfalNfKDwyIHggaTMyPiwgPDIgeCBpMzI+KSAjMTUgewotICAgJTMgPSBh bGxvY2EgPDIgeCBpMzI+LCBhbGlnbiA4Ci0gICAlNCA9IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWdu IDgKLSAgICU1ID0gYWxsb2NhIDwyIHggaTMyPiwgYWxpZ24gOAotQEAgLTQ2OTIsNyArNDY5Miw3 IEBAIGRlZmluZSBkc29fbG9jYWwgPDIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91 cmVtdTJDTXZiMl9qU18oPDIgeCBpMzI+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5v aW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8NCB4IGkzMj4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3VyZW11MkNNdmI0X2pTXyg8NCB4IGkzMj4sIDw0IHggaTMyPikgIzE2IHsK LStkZWZpbmUgaW50ZXJuYWwgPDQgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVt dTJDTXZiNF9qU18oPDQgeCBpMzI+LCA8NCB4IGkzMj4pICMxNiB7Ci0gICAlMyA9IGFsbG9jYSA8 NCB4IGkzMj4sIGFsaWduIDE2Ci0gICAlNCA9IGFsbG9jYSA8NCB4IGkzMj4sIGFsaWduIDE2Ci0g ICAlNSA9IGFsbG9jYSA8NCB4IGkzMj4sIGFsaWduIDE2Ci1AQCAtNDcwNiw3ICs0NzA2LDcgQEAg ZGVmaW5lIGRzb19sb2NhbCA8NCB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11 MkNNdmI0X2pTXyg8NCB4IGkzMj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxp bmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDw4IHggaTMyPiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfdXJlbXUyQ012YjhfalNfKDw4IHggaTMyPiwgPDggeCBpMzI+KSAjMTcgewotK2Rl ZmluZSBpbnRlcm5hbCA8OCB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNN dmI4X2pTXyg8OCB4IGkzMj4sIDw4IHggaTMyPikgIzE3IHsKLSAgICUzID0gYWxsb2NhIDw4IHgg aTMyPiwgYWxpZ24gMzIKLSAgICU0ID0gYWxsb2NhIDw4IHggaTMyPiwgYWxpZ24gMzIKLSAgICU1 ID0gYWxsb2NhIDw4IHggaTMyPiwgYWxpZ24gMzIKLUBAIC00NzIwLDcgKzQ3MjAsNyBAQCBkZWZp bmUgZHNvX2xvY2FsIDw4IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012 YjhfalNfKDw4IHggaTMyPiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBu b3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDE2IHggaTMyPiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfdXJlbXUyQ012YjE2X2pTXyg8MTYgeCBpMzI+LCA8MTYgeCBpMzI+KSAjMTggewotK2Rl ZmluZSBpbnRlcm5hbCA8MTYgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJD TXZiMTZfalNfKDwxNiB4IGkzMj4sIDwxNiB4IGkzMj4pICMxOCB7Ci0gICAlMyA9IGFsbG9jYSA8 MTYgeCBpMzI+LCBhbGlnbiA2NAotICAgJTQgPSBhbGxvY2EgPDE2IHggaTMyPiwgYWxpZ24gNjQK LSAgICU1ID0gYWxsb2NhIDwxNiB4IGkzMj4sIGFsaWduIDY0Ci1AQCAtNDczNCw3ICs0NzM0LDcg QEAgZGVmaW5lIGRzb19sb2NhbCA8MTYgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91 cmVtdTJDTXZiMTZfalNfKDwxNiB4IGkzMj4KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9p bmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGkzMj4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3VyZW11MkNNdmIzMl9qU18oPDMyIHggaTMyPiwgPDMyIHggaTMyPikgIzE5 IHsKLStkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf dXJlbXUyQ012YjMyX2pTXyg8MzIgeCBpMzI+LCA8MzIgeCBpMzI+KSAjMTkgewotICAgJTMgPSBh bGxvY2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4Ci0gICAlNCA9IGFsbG9jYSA8MzIgeCBpMzI+LCBh bGlnbiAxMjgKLSAgICU1ID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFsaWduIDEyOAotQEAgLTQ3NDgs NyArNDc0OCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDMyIHggaTMyPiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfdXJlbXUyQ012YjMyX2pTXyg8MzIgeCBpMzI+Ci0gfQotIAotIDsgRnVuY3Rpb24g QXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCB2b2lkIEBfX2RvX3By aW50X2NtKGk4KiwgaTgqLCBpMzIsIGk2NCwgaTMyKiwgaTMyLCBpMzIpICMyMyAhZGJnICExNSB7 Ci0rZGVmaW5lIGludGVybmFsIHZvaWQgQF9fZG9fcHJpbnRfY20oaTgqLCBpOCosIGkzMiwgaTY0 LCBpMzIqLCBpMzIsIGkzMikgIzIzICFkYmcgITE1IHsKLSAgICU4ID0gYWxsb2NhIGk4KiwgYWxp Z24gOAotICAgJTkgPSBhbGxvY2EgaTgqLCBhbGlnbiA4Ci0gICAlMTAgPSBhbGxvY2EgaTMyLCBh bGlnbiA0Ci1AQCAtNTA3MCw3ICs1MDcwLDcgQEAgZGVmaW5lIGRzb19sb2NhbCB2b2lkIEBfX2Rv X3ByaW50X2x6KGkzMiwgaTgqLCBpMzIsIGk2NCwgaTMyKiwgaTMyLCBpMzIsIGkzMiwgaTMKLSAg ICU2NyA9IGxvYWQgaTY0LCBpNjQqICUxMywgYWxpZ24gOCwgIWRiZyAhMTU5LCAhdGJhYSAhMTkK LSAgICU2OCA9IGxvYWQgPDUgeCBpMzI+LCA8NSB4IGkzMj4qICUyMSwgYWxpZ24gMzIsICFkYmcg ITE2MCwgIXRiYWEgITcKLSAgIGNhbGwgdm9pZCBAX1pOMTNWYXJ5aW5nV3JpdGVyQzJFUnlSUEtq aXl1MkNNdmI1X2koJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUyMywgaTY0KiBkZXJlZmVyZW5jZWFi bGUoOCkgJTE5LCBpMzIqKiBkZXJlZmVyZW5jZWFibGUoOCkgJTE0LCBpMzIgJTY2LCBpNjQgJTY3 LCA8NSB4IGkzMj4gJTY4KSwgIWRiZyAhMTYxCi0tICAlNjkgPSBjYWxsIHplcm9leHQgaTEgQF9a TjlQcmludEluZm8xNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdyaXRlcjEzVmFyeWluZ1dyaXRl ckVFYk5TXzhFbmNvZGluZ0VUX1QwXyhpOCBzaWduZXh0ICU2MiwgJWNsYXNzLlVuaWZvcm1Xcml0 ZXIqIGJ5dmFsIGFsaWduIDMyICUyMiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWdu IDMyICUyMyksICFkYmcgITE2MgotKyAgJTY5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJ bmZvMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXIxM1ZhcnlpbmdXcml0ZXJFRWJOU184 RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4dCAlNjIsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZh bCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIgJTIyLCAlY2xhc3MuVmFyeWluZ1dyaXRl ciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyICUyMyksICFkYmcgITE2Mgot ICAgYnIgbGFiZWwgJTcwLCAhZGJnICExNjMKLSAKLSA7IDxsYWJlbD46NzA6ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlNjAKLUBAIC01MTg4LDcgKzUxODgs NyBAQCBkZWZpbmUgaW50ZXJuYWwgPDUgeCBpMzI+IEBfWjE3Z2V0X2F1eGlsaWFyeV9zdHJ2KCkg IzI4IGNvbWRhdCAhZGJnICExNzggewotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNp bmxpbmUgaW5saW5laGludCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBf Wk45UHJpbnRJbmZvMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXIxM1ZhcnlpbmdXcml0 ZXJFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIq IGJ5dmFsIGFsaWduIDMyLCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIpICMy NSBjb21kYXQgIWRiZyAhMTkxIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVBy aW50SW5mbzE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyMTNWYXJ5aW5nV3JpdGVyRUVi TlNfOEVuY29kaW5nRVRfVDBfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZh bCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBi eXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIpICMyNSBjb21kYXQgIWRiZyAhMTkx IHsKLSAgICU0ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSAlY2xhc3MuVW5p Zm9ybVdyaXRlciwgYWxpZ24gMzIKLSAgICU2ID0gYWxsb2NhICVjbGFzcy5WYXJ5aW5nV3JpdGVy LCBhbGlnbiAzMgotQEAgLTUxOTcsNyArNTE5Nyw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0 IGkxIEBfWk45UHJpbnRJbmZvMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXIxM1Zhcnlp Ci0gICAlOCA9IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqICU1IHRvIGk4KiwgIWRiZyAh MTk2Ci0gICAlOSA9IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqICUxIHRvIGk4KiwgIWRi ZyAhMTk2Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pNjQoaTgqIGFsaWdu IDMyICU4LCBpOCogYWxpZ24gMzIgJTksIGk2NCA2NCwgaTEgZmFsc2UpLCAhZGJnICExOTYsICF0 YmFhLnN0cnVjdCAhMTk3Ci0tICAlMTAgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8y MnN3aXRjaEVuY29kaW5nNFVuaWZvcm1JMTNVbmlmb3JtV3JpdGVyRUViTlNfOEVuY29kaW5nRVRf KGk4IHNpZ25leHQgJTcsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlNSks ICFkYmcgITE5OAotKyAgJTEwID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0 Y2hFbmNvZGluZzRVbmlmb3JtSTEzVW5pZm9ybVdyaXRlckVFYk5TXzhFbmNvZGluZ0VUXyhpOCBz aWduZXh0ICU3LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0 ZXIpIGFsaWduIDMyICU1KSwgIWRiZyAhMTk4Ci0gICBiciBpMSAlMTAsIGxhYmVsICUxNiwgbGFi ZWwgJTExLCAhZGJnICExOTkKLSAKLSA7IDxsYWJlbD46MTE6ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlMwotQEAgLTUyMDUsNyArNTIwNSw3IEBAIGRlZmlu ZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMTRzd2l0Y2hFbmNvZGluZ0kxM1Vu aWZvcm1Xcml0ZXIxM1ZhcnlpCi0gICAlMTMgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVy KiAlNiB0byBpOCosICFkYmcgITIwMQotICAgJTE0ID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dy aXRlciogJTIgdG8gaTgqLCAhZGJnICEyMDEKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBp OC5wMGk4Lmk2NChpOCogYWxpZ24gMzIgJTEzLCBpOCogYWxpZ24gMzIgJTE0LCBpNjQgNjQsIGkx IGZhbHNlKSwgIWRiZyAhMjAxLCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTE1ID0gY2FsbCB6ZXJv ZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRWYXJ5aW5nSTEzVmFyeWluZ1dy aXRlckVFYk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0ICUxMiwgJWNsYXNzLlZhcnlpbmdXcml0 ZXIqIGJ5dmFsIGFsaWduIDMyICU2KSwgIWRiZyAhMjAyCi0rICAlMTUgPSBjYWxsIHplcm9leHQg aTEgQF9aTjlQcmludEluZm8yMnN3aXRjaEVuY29kaW5nNFZhcnlpbmdJMTNWYXJ5aW5nV3JpdGVy RUViTlNfOEVuY29kaW5nRVRfKGk4IHNpZ25leHQgJTEyLCAlY2xhc3MuVmFyeWluZ1dyaXRlciog Ynl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyICU2KSwgIWRiZyAhMjAyCi0gICBi ciBsYWJlbCAlMTYsICFkYmcgITE5OQotIAotIDsgPGxhYmVsPjoxNjogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICUxMSwgJTMKLUBAIC01MjgwLDcgKzUyODAs NyBAQCBkZWZpbmUgaW50ZXJuYWwgdm9pZCBAX1pOMTNWYXJ5aW5nV3JpdGVyQzJFUnlSUEtqaXl1 MkNNdmI1X2koJWNsYXNzLlZhcnlpbmdXcml0ZQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBu b2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgaTMyIEBfX251bV9jb3JlcygpICMy OSAhZGJnICEyMzYgewotK2RlZmluZSBpbnRlcm5hbCBpMzIgQF9fbnVtX2NvcmVzKCkgIzI5ICFk YmcgITIzNiB7Ci0gICByZXQgaTMyIC0xLCAhZGJnICEyMzcKLSB9Ci0gCi1AQCAtODg3MCw3ICs4 ODcwLDcgQEAgZGVjbGFyZSBkc29fbG9jYWwgdm9pZCBAX1pON2RldGFpbHMzN19fY21faW50cmlu c2ljX2ltcGxfc3ZtX3NjYXR0ZXJfd3JpdGVJaUxpMUUKLSBkZWNsYXJlIHZvaWQgQGxsdm0uZ2Vu eC5zdm0uc2NhdHRlci52MWkxLnYxaTY0LnYxaTMyKDwxIHggaTE+LCBpMzIsIDwxIHggaTY0Piwg PDEgeCBpMzI+KSAjMjcKLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5l aGludCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZv MjJzd2l0Y2hFbmNvZGluZzRVbmlmb3JtSTEzVW5pZm9ybVdyaXRlckVFYk5TXzhFbmNvZGluZ0VU XyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIpICMyNSBj b21kYXQgIWRiZyAhMTY0NSB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmlu dEluZm8yMnN3aXRjaEVuY29kaW5nNFVuaWZvcm1JMTNVbmlmb3JtV3JpdGVyRUViTlNfOEVuY29k aW5nRVRfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5p Zm9ybVdyaXRlcikgYWxpZ24gMzIpICMyNSBjb21kYXQgIWRiZyAhMTY0NSB7Ci0gICAlMyA9IGFs bG9jYSBpOCwgYWxpZ24gMQotICAgJTQgPSBhbGxvY2EgJWNsYXNzLlVuaWZvcm1Xcml0ZXIsIGFs aWduIDMyCi0gICAlNSA9IGFsbG9jYSAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZv cm0iLCBhbGlnbiAxCi1AQCAtODg3OSw3ICs4ODc5LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9l eHQgaTEgQF9aTjlQcmludEluZm8yMnN3aXRjaEVuY29kaW5nNFVuaWZvcm1JMTNVbmlmb3JtV3Jp dGUKLSAgICU3ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTQgdG8gaTgqLCAhZGJn ICExNjQ3Ci0gICAlOCA9IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqICUxIHRvIGk4Kiwg IWRiZyAhMTY0NwotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTY0KGk4KiBh bGlnbiAzMiAlNywgaTgqIGFsaWduIDMyICU4LCBpNjQgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY0 NywgIXRiYWEuc3RydWN0ICExOTcKLS0gICU5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJ bmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRV bmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUX1QwXyhpOCBzaWduZXh0ICU2LCAlY2xhc3MuVW5pZm9y bVdyaXRlciogYnl2YWwgYWxpZ24gMzIgJTQsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0 VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEgJTUpLCAhZGJnICExNjQ4Ci0rICAlOSA9IGNhbGwgemVy b2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdy aXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4 dCAlNiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBh bGlnbiAzMiAlNCwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwo JSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSAlNSksICFkYmcg ITE2NDgKLSAgIHJldCBpMSAlOSwgIWRiZyAhMTY0OQotIH0KLSAKLUBAIC04ODg3LDcgKzg4ODcs NyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzIyc3dpdGNoRW5j b2Rpbmc0VW5pZm9ybUkxM1VuaWZvcm1Xcml0ZQotIGRlY2xhcmUgdm9pZCBAbGx2bS5tZW1jcHku cDBpOC5wMGk4Lmk2NChpOCogbm9jYXB0dXJlIHdyaXRlb25seSwgaTgqIG5vY2FwdHVyZSByZWFk b25seSwgaTY0LCBpMSkgIzMyCi0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlu bGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50 SW5mbzIyc3dpdGNoRW5jb2Rpbmc0VmFyeWluZ0kxM1ZhcnlpbmdXcml0ZXJFRWJOU184RW5jb2Rp bmdFVF8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyKSAj MjUgY29tZGF0ICFkYmcgITE2NTAgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45 UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRWYXJ5aW5nSTEzVmFyeWluZ1dyaXRlckVFYk5TXzhF bmNvZGluZ0VUXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNz LlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyKSAjMjUgY29tZGF0ICFkYmcgITE2NTAgewotICAgJTMg PSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU0ID0gYWxsb2NhICVjbGFzcy5WYXJ5aW5nV3JpdGVy LCBhbGlnbiAzMgotICAgJTUgPSBhbGxvY2EgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRW YXJ5aW5nIiwgYWxpZ24gMQotQEAgLTg4OTYsMTIgKzg4OTYsMTIgQEAgZGVmaW5lIGludGVybmFs IHplcm9leHQgaTEgQF9aTjlQcmludEluZm8yMnN3aXRjaEVuY29kaW5nNFZhcnlpbmdJMTNWYXJ5 aW5nV3JpdGUKLSAgICU3ID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTQgdG8gaTgq LCAhZGJnICExNjUyCi0gICAlOCA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxIHRv IGk4KiwgIWRiZyAhMTY1MgotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTY0 KGk4KiBhbGlnbiAzMiAlNywgaTgqIGFsaWduIDMyICU4LCBpNjQgNjQsIGkxIGZhbHNlKSwgIWRi ZyAhMTY1MiwgIXRiYWEuc3RydWN0ICExOTcKLS0gICU5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45 UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNv ZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUX1QwXyhpOCBzaWduZXh0ICU2LCAlY2xhc3Mu VmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIgJTQsICUic3RydWN0LlByaW50SW5mbzo6RW5j b2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEgJTUpLCAhZGJnICExNjUzCi0rICAlOSA9IGNh bGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFy eWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVF9UMF8oaTgg c2lnbmV4dCAlNiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3Jp dGVyKSBhbGlnbiAzMiAlNCwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiog Ynl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSAlNSks ICFkYmcgITE2NTMKLSAgIHJldCBpMSAlOSwgIWRiZyAhMTY1NAotIH0KLSAKLSA7IEZ1bmN0aW9u IEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5h bCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlm b3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUX1QwXyhpOCBz aWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIsICUic3RydWN0LlBy aW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRi ZyAhMTY1NSB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0 YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1F RUViTlNfOEVuY29kaW5nRVRfVDBfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBi eXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6 RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5p Zm9ybSIpIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMTY1NSB7Ci0gICAlNCA9IGFsbG9jYSBp OCwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgJWNsYXNzLlVuaWZvcm1Xcml0ZXIsIGFsaWduIDMy Ci0gICAlNiA9IGFsbG9jYSAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iLCBh bGlnbiAxCi1AQCAtODkyNCw3ICs4OTI0LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEg QF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXIKLSAg ICUyMiA9IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqICU1IHRvIGk4KiwgIWRiZyAhMTY1 NwotICAgJTIzID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTEgdG8gaTgqLCAhZGJn ICExNjU3Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pNjQoaTgqIGFsaWdu IDMyICUyMiwgaTgqIGFsaWduIDMyICUyMywgaTY0IDY0LCBpMSBmYWxzZSksICFkYmcgITE2NTcs ICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlMjQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludElu Zm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJYjEzVW5pZm9ybVdyaXRlck5TXzE2RW5j b2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTIxLCAlY2xh c3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIgJTUsICUic3RydWN0LlByaW50SW5mbzo6 RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEgJTYpLCAhZGJnICExNjU4Ci0rICAlMjQg PSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5j b2RpbmdJYjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2Rp bmdFVDBfVDFfKGk4IHNpZ25leHQgJTIxLCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNs YXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyICU1LCAlInN0cnVjdC5QcmludEluZm86OkVuY29k aW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0i KSBhbGlnbiAxICU2KSwgIWRiZyAhMTY1OAotICAgYnIgaTEgJTI0LCBsYWJlbCAlNjAsIGxhYmVs ICUyNSwgIWRiZyAhMTY1OQotIAotIDsgPGxhYmVsPjoyNTogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOyBwcmVkcyA9ICUzCi1AQCAtODkzMiw3ICs4OTMyLDcgQEAgZGVmaW5l IGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGlu Z0kxM1VuaWZvcm1Xcml0ZXIKLSAgICUyNyA9IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0ZXIq ICU3IHRvIGk4KiwgIWRiZyAhMTY2MQotICAgJTI4ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdy aXRlciogJTEgdG8gaTgqLCAhZGJnICExNjYxCi0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAw aTgucDBpOC5pNjQoaTgqIGFsaWduIDMyICUyNywgaTgqIGFsaWduIDMyICUyOCwgaTY0IDY0LCBp MSBmYWxzZSksICFkYmcgITE2NjEsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlMjkgPSBjYWxsIHpl cm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJaTEz VW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFf KGk4IHNpZ25leHQgJTI2LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIgJTcs ICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEgJTgp LCAhZGJnICExNjYyCi0rICAlMjkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0 YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJaTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0 VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTI2LCAlY2xhc3MuVW5p Zm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyICU3LCAlInN0 cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludElu Zm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxICU4KSwgIWRiZyAhMTY2MgotICAgYnIgaTEg JTI5LCBsYWJlbCAlNjAsIGxhYmVsICUzMCwgIWRiZyAhMTY2MwotIAotIDsgPGxhYmVsPjozMDog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICUyNQotQEAgLTg5 NDAsNyArODk0MCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZv NmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0gICAlMzIgPSBiaXRjYXN0 ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlOSB0byBpOCosICFkYmcgITE2NjUKLSAgICUzMyA9IGJp dGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMTY2NQotICAgY2Fs bCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTY0KGk4KiBhbGlnbiAzMiAlMzIsIGk4KiBh bGlnbiAzMiAlMzMsIGk2NCA2NCwgaTEgZmFsc2UpLCAhZGJnICExNjY1LCAhdGJhYS5zdHJ1Y3Qg ITE5NwotLSAgJTM0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBw bHlJZlByb3BlckVuY29kaW5nSWoxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1F RUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUzMSwgJWNsYXNzLlVuaWZvcm1Xcml0 ZXIqIGJ5dmFsIGFsaWduIDMyICU5LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZv cm0iKiBieXZhbCBhbGlnbiAxICUxMCksICFkYmcgITE2NjYKLSsgICUzNCA9IGNhbGwgemVyb2V4 dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lqMTNVbmlm b3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTgg c2lnbmV4dCAlMzEsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdy aXRlcikgYWxpZ24gMzIgJTksICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIq IGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEgJTEw KSwgIWRiZyAhMTY2NgotICAgYnIgaTEgJTM0LCBsYWJlbCAlNjAsIGxhYmVsICUzNSwgIWRiZyAh MTY2NwotIAotIDsgPGxhYmVsPjozNTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOyBwcmVkcyA9ICUzMAotQEAgLTg5NDgsNyArODk0OCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6 ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3Jt V3JpdGVyCi0gICAlMzcgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMTEgdG8gaTgq LCAhZGJnICExNjY5Ci0gICAlMzggPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0 byBpOCosICFkYmcgITE2NjkKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2 NChpOCogYWxpZ24gMzIgJTM3LCBpOCogYWxpZ24gMzIgJTM4LCBpNjQgNjQsIGkxIGZhbHNlKSwg IWRiZyAhMTY2OSwgIXRiYWEuc3RydWN0ICExOTcKLS0gICUzOSA9IGNhbGwgemVyb2V4dCBpMSBA X1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lmMTNVbmlmb3JtV3Jp dGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4 dCAlMzYsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlMTEsICUic3RydWN0 LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEgJTEyKSwgIWRiZyAh MTY3MAotKyAgJTM5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBw bHlJZlByb3BlckVuY29kaW5nSWYxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1F RUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUzNiwgJWNsYXNzLlVuaWZvcm1Xcml0 ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlMTEsICUic3RydWN0LlBy aW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5j b2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEgJTEyKSwgIWRiZyAhMTY3MAotICAgYnIgaTEgJTM5LCBs YWJlbCAlNjAsIGxhYmVsICU0MCwgIWRiZyAhMTY3MQotIAotIDsgPGxhYmVsPjo0MDogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICUzNQotQEAgLTg5NTYsNyAr ODk1Niw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFp bDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0gICAlNDIgPSBiaXRjYXN0ICVjbGFz cy5Vbmlmb3JtV3JpdGVyKiAlMTMgdG8gaTgqLCAhZGJnICExNjczCi0gICAlNDMgPSBiaXRjYXN0 ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITE2NzMKLSAgIGNhbGwgdm9p ZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2NChpOCogYWxpZ24gMzIgJTQyLCBpOCogYWxpZ24g MzIgJTQzLCBpNjQgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY3MywgIXRiYWEuc3RydWN0ICExOTcK LS0gICU0NCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQ cm9wZXJFbmNvZGluZ0l4MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5T XzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNDEsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBi eXZhbCBhbGlnbiAzMiAlMTMsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIq IGJ5dmFsIGFsaWduIDEgJTE0KSwgIWRiZyAhMTY3NAotKyAgJTQ0ID0gY2FsbCB6ZXJvZXh0IGkx IEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXgxM1VuaWZvcm1X cml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWdu ZXh0ICU0MSwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVy KSBhbGlnbiAzMiAlMTMsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5 dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEgJTE0KSwg IWRiZyAhMTY3NAotICAgYnIgaTEgJTQ0LCBsYWJlbCAlNjAsIGxhYmVsICU0NSwgIWRiZyAhMTY3 NQotIAotIDsgPGxhYmVsPjo0NTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg OyBwcmVkcyA9ICU0MAotQEAgLTg5NjQsNyArODk2NCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJv ZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3Jp dGVyCi0gICAlNDcgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMTUgdG8gaTgqLCAh ZGJnICExNjc3Ci0gICAlNDggPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBp OCosICFkYmcgITE2NzcKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2NChp OCogYWxpZ24gMzIgJTQ3LCBpOCogYWxpZ24gMzIgJTQ4LCBpNjQgNjQsIGkxIGZhbHNlKSwgIWRi ZyAhMTY3NywgIXRiYWEuc3RydWN0ICExOTcKLS0gICU0OSA9IGNhbGwgemVyb2V4dCBpMSBAX1pO OVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l5MTNVbmlmb3JtV3JpdGVy TlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAl NDYsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlMTUsICUic3RydWN0LlBy aW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEgJTE2KSwgIWRiZyAhMTY3 OAotKyAgJTQ5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJ ZlByb3BlckVuY29kaW5nSXkxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUVi TlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU0NiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIq IGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlMTUsICUic3RydWN0LlByaW50 SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rp bmc0VW5pZm9ybSIpIGFsaWduIDEgJTE2KSwgIWRiZyAhMTY3OAotICAgYnIgaTEgJTQ5LCBsYWJl bCAlNjAsIGxhYmVsICU1MCwgIWRiZyAhMTY3OQotIAotIDsgPGxhYmVsPjo1MDogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICU0NQotQEAgLTg5NzIsNyArODk3 Miw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0 c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0gICAlNTIgPSBiaXRjYXN0ICVjbGFzcy5V bmlmb3JtV3JpdGVyKiAlMTcgdG8gaTgqLCAhZGJnICExNjgxCi0gICAlNTMgPSBiaXRjYXN0ICVj bGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITE2ODEKLSAgIGNhbGwgdm9pZCBA bGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2NChpOCogYWxpZ24gMzIgJTUyLCBpOCogYWxpZ24gMzIg JTUzLCBpNjQgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY4MSwgIXRiYWEuc3RydWN0ICExOTcKLS0g ICU1NCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9w ZXJFbmNvZGluZ0lkMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhF bmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNTEsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZh bCBhbGlnbiAzMiAlMTcsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5 dmFsIGFsaWduIDEgJTE4KSwgIWRiZyAhMTY4MgotKyAgJTU0ID0gY2FsbCB6ZXJvZXh0IGkxIEBf Wk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWQxM1VuaWZvcm1Xcml0 ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0 ICU1MSwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBh bGlnbiAzMiAlMTcsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFs KCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEgJTE4KSwgIWRi ZyAhMTY4MgotICAgYnIgaTEgJTU0LCBsYWJlbCAlNjAsIGxhYmVsICU1NSwgIWRiZyAhMTY4Mwot IAotIDsgPGxhYmVsPjo1NTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBw cmVkcyA9ICU1MAotQEAgLTg5ODAsNyArODk4MCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0 IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVy Ci0gICAlNTcgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMTkgdG8gaTgqLCAhZGJn ICExNjg1Ci0gICAlNTggPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBpOCos ICFkYmcgITE2ODUKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2NChpOCog YWxpZ24gMzIgJTU3LCBpOCogYWxpZ24gMzIgJTU4LCBpNjQgNjQsIGkxIGZhbHNlKSwgIWRiZyAh MTY4NSwgIXRiYWEuc3RydWN0ICExOTcKLS0gICU1OSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVBy aW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lQdjEzVW5pZm9ybVdyaXRlck5T XzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTU2 LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIgJTE5LCAlInN0cnVjdC5Qcmlu dEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxICUyMCksICFkYmcgITE2ODYK LSsgICU1OSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQ cm9wZXJFbmNvZGluZ0lQdjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJO U184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTU2LCAlY2xhc3MuVW5pZm9ybVdyaXRlciog Ynl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyICUxOSwgJSJzdHJ1Y3QuUHJpbnRJ bmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGlu ZzRVbmlmb3JtIikgYWxpZ24gMSAlMjApLCAhZGJnICExNjg2Ci0gICBiciBsYWJlbCAlNjAsICFk YmcgITE2ODMKLSAKLSA7IDxsYWJlbD46NjA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDsgcHJlZHMgPSAlNTUsICU1MCwgJTQ1LCAlNDAsICUzNSwgJTMwLCAlMjUsICUzCi1A QCAtODk4OSw3ICs4OTg5LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmlu dEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXIKLSB9Ci0gCi0gOyBG dW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUg aW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJF bmNvZGluZ0liMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNv ZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWdu IDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAx KSAjMjUgY29tZGF0ICFkYmcgITE2ODggewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBf Wk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWIxM1VuaWZvcm1Xcml0 ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0 LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWdu IDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVj dC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcg ITE2ODggewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBh bGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAt OTAxNSw3ICs5MDE1LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludElu Zm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJYjEzVW5pZm8KLSB9Ci0gCi0gOyBGdW5j dGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50 ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNv ZGluZ0lpMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGlu Z0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMy LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxKSAj MjUgY29tZGF0ICFkYmcgITE2OTcgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45 UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWkxM1VuaWZvcm1Xcml0ZXJO U18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAl Y2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMy LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5Q cmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE2 OTcgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGln biAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtOTA0 MSw3ICs5MDQxLDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82 ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJaTEzVW5pZm8KLSB9Ci0gCi0gOyBGdW5jdGlv biBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJu YWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGlu Z0lqMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VU MF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAl InN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxKSAjMjUg Y29tZGF0ICFkYmcgITE3MDYgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJp bnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWoxM1VuaWZvcm1Xcml0ZXJOU18x NkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xh c3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAl InN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5Qcmlu dEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3MDYg ewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAx Ci0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtOTA2Nyw3 ICs5MDY3LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0 YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJajEzVW5pZm8KLSB9Ci0gCi0gOyBGdW5jdGlvbiBB dHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwg emVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lm MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9U MV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0 cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxKSAjMjUgY29t ZGF0ICFkYmcgITE3MTUgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJ bmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWYxM1VuaWZvcm1Xcml0ZXJOU18xNkVu Y29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3Mu VW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0 cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludElu Zm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3MTUgewot ICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0g ICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtOTA5Myw3ICs5 MDkzLDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWls MjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZjEzVW5pZm8KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRy czogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVy b2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l4MTNV bmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8o aTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVj dC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0 ICFkYmcgITE3MjQgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZv NmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXgxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29k aW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5p Zm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVj dC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86 OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3MjQgewotICAg JTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBz dG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtOTExOSw3ICs5MTE5 LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFh cHBseUlmUHJvcGVyRW5jb2RpbmdJeDEzVW5pZm8KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczog YWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4 dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l5MTNVbmlm b3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTgg c2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5Q cmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFk YmcgITE3MzMgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRl dGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXkxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5n NFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9y bVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5Q cmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVu Y29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3MzMgewotICAgJTQg PSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9y ZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtOTE0NSw3ICs5MTQ1LDcg QEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBs eUlmUHJvcGVyRW5jb2RpbmdJeTEzVW5pZm8KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3 YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBp MSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lkMTNVbmlmb3Jt V3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2ln bmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5Qcmlu dEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcg ITE3NDIgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFp bDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWQxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVu aWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdy aXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5Qcmlu dEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29k aW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3NDIgewotICAgJTQgPSBh bGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBp OCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtOTE3MSw3ICs5MTcxLDcgQEAg ZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlm UHJvcGVyRW5jb2RpbmdJZDEzVW5pZm8KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlz aW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBA X1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lQdjEzVW5pZm9ybVdy aXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25l eHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJ bmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEx NzUxIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwy MWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lQdjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5p Zm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3Jp dGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIsICUic3RydWN0LlByaW50 SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rp bmc0VW5pZm9ybSIpIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMTc1MSB7Ci0gICAlNCA9IGFs bG9jYSBpMSwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgIHN0b3JlIGk4 ICUwLCBpOCogJTUsIGFsaWduIDEsICF0YmFhICExOTMKLUBAIC0xMDAxMyw3ICsxMDAxMyw3IEBA IGRlZmluZSBpbnRlcm5hbCBpMzIgQF9aTjdkZXRhaWxzMThfY21fcHJpbnRfdHlwZV9vY2xJUHZF RU5TXzE4U0hBREVSX1BSSU5URl9UWVBFCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5 c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEg QF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXJOU18x NkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVRfVDBfKGk4IHNpZ25leHQsICVjbGFz cy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNv ZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMDYxIHsKLStk ZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVu Y29kaW5nSTEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2Rp bmdFVF9UMF8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5W YXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5 aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24g MSkgIzI1IGNvbWRhdCAhZGJnICEyMDYxIHsKLSAgICU0ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0g ICAlNSA9IGFsbG9jYSAlY2xhc3MuVmFyeWluZ1dyaXRlciwgYWxpZ24gMzIKLSAgICU2ID0gYWxs b2NhICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIsIGFsaWduIDEKLUBAIC0x MDAzNiw3ICsxMDAzNiw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJ bmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNWYXJ5aW5nV3JpdGVyCi0gICAlMjIgPSBiaXRj YXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlNSB0byBpOCosICFkYmcgITIwNjMKLSAgICUyMyA9 IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMjA2MwotICAg Y2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTY0KGk4KiBhbGlnbiAzMiAlMjIsIGk4 KiBhbGlnbiAzMiAlMjMsIGk2NCA2NCwgaTEgZmFsc2UpLCAhZGJnICEyMDYzLCAhdGJhYS5zdHJ1 Y3QgITE5NwotLSAgJTI0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIx YXBwbHlJZlByb3BlckVuY29kaW5nSWIxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlp bmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUyMSwgJWNsYXNzLlZhcnlpbmdX cml0ZXIqIGJ5dmFsIGFsaWduIDMyICU1LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZh cnlpbmciKiBieXZhbCBhbGlnbiAxICU2KSwgIWRiZyAhMjA2NAotKyAgJTI0ID0gY2FsbCB6ZXJv ZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWIxM1Zh cnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhp OCBzaWduZXh0ICUyMSwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5n V3JpdGVyKSBhbGlnbiAzMiAlNSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5n IiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSAl NiksICFkYmcgITIwNjQKLSAgIGJyIGkxICUyNCwgbGFiZWwgJTYwLCBsYWJlbCAlMjUsICFkYmcg ITIwNjUKLSAKLSA7IDxsYWJlbD46MjU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDsgcHJlZHMgPSAlMwotQEAgLTEwMDQ0LDcgKzEwMDQ0LDcgQEAgZGVmaW5lIGludGVybmFs IHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1Zhcnlp bmdXcml0ZXIKLSAgICUyNyA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICU3IHRvIGk4 KiwgIWRiZyAhMjA2NwotICAgJTI4ID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTEg dG8gaTgqLCAhZGJnICEyMDY3Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5p NjQoaTgqIGFsaWduIDMyICUyNywgaTgqIGFsaWduIDMyICUyOCwgaTY0IDY0LCBpMSBmYWxzZSks ICFkYmcgITIwNjcsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlMjkgPSBjYWxsIHplcm9leHQgaTEg QF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJaTEzVmFyeWluZ1dy aXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25l eHQgJTI2LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIgJTcsICUic3RydWN0 LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEgJTgpLCAhZGJnICEy MDY4Ci0rICAlMjkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBs eUlmUHJvcGVyRW5jb2RpbmdJaTEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VF RWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTI2LCAlY2xhc3MuVmFyeWluZ1dyaXRl ciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyICU3LCAlInN0cnVjdC5Qcmlu dEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29k aW5nNFZhcnlpbmciKSBhbGlnbiAxICU4KSwgIWRiZyAhMjA2OAotICAgYnIgaTEgJTI5LCBsYWJl bCAlNjAsIGxhYmVsICUzMCwgIWRiZyAhMjA2OQotIAotIDsgPGxhYmVsPjozMDogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICUyNQotQEAgLTEwMDUyLDcgKzEw MDUyLDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWls MTRzd2l0Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXIKLSAgICUzMiA9IGJpdGNhc3QgJWNsYXNz LlZhcnlpbmdXcml0ZXIqICU5IHRvIGk4KiwgIWRiZyAhMjA3MQotICAgJTMzID0gYml0Y2FzdCAl Y2xhc3MuVmFyeWluZ1dyaXRlciogJTEgdG8gaTgqLCAhZGJnICEyMDcxCi0gICBjYWxsIHZvaWQg QGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pNjQoaTgqIGFsaWduIDMyICUzMiwgaTgqIGFsaWduIDMy ICUzMywgaTY0IDY0LCBpMSBmYWxzZSksICFkYmcgITIwNzEsICF0YmFhLnN0cnVjdCAhMTk3Ci0t ICAlMzQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJv cGVyRW5jb2RpbmdJajEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184 RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTMxLCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2 YWwgYWxpZ24gMzIgJTksICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5 dmFsIGFsaWduIDEgJTEwKSwgIWRiZyAhMjA3MgotKyAgJTM0ID0gY2FsbCB6ZXJvZXh0IGkxIEBf Wk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWoxM1ZhcnlpbmdXcml0 ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0 ICUzMSwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBh bGlnbiAzMiAlOSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwo JSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSAlMTApLCAhZGJn ICEyMDcyCi0gICBiciBpMSAlMzQsIGxhYmVsICU2MCwgbGFiZWwgJTM1LCAhZGJnICEyMDczCi0g Ci0gOyA8bGFiZWw+OjM1OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHBy ZWRzID0gJTMwCi1AQCAtMTAwNjAsNyArMTAwNjAsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4 dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dyaXRl cgotICAgJTM3ID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTExIHRvIGk4KiwgIWRi ZyAhMjA3NQotICAgJTM4ID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTEgdG8gaTgq LCAhZGJnICEyMDc1Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pNjQoaTgq IGFsaWduIDMyICUzNywgaTgqIGFsaWduIDMyICUzOCwgaTY0IDY0LCBpMSBmYWxzZSksICFkYmcg ITIwNzUsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlMzkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQ cmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZjEzVmFyeWluZ1dyaXRlck5T XzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTM2 LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIgJTExLCAlInN0cnVjdC5Qcmlu dEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxICUxMiksICFkYmcgITIwNzYK LSsgICUzOSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQ cm9wZXJFbmNvZGluZ0lmMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5T XzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMzYsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBi eXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIgJTExLCAlInN0cnVjdC5QcmludElu Zm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5n NFZhcnlpbmciKSBhbGlnbiAxICUxMiksICFkYmcgITIwNzYKLSAgIGJyIGkxICUzOSwgbGFiZWwg JTYwLCBsYWJlbCAlNDAsICFkYmcgITIwNzcKLSAKLSA7IDxsYWJlbD46NDA6ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlMzUKLUBAIC0xMDA2OCw3ICsxMDA2 OCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0 c3dpdGNoRW5jb2RpbmdJMTNWYXJ5aW5nV3JpdGVyCi0gICAlNDIgPSBiaXRjYXN0ICVjbGFzcy5W YXJ5aW5nV3JpdGVyKiAlMTMgdG8gaTgqLCAhZGJnICEyMDc5Ci0gICAlNDMgPSBiaXRjYXN0ICVj bGFzcy5WYXJ5aW5nV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITIwNzkKLSAgIGNhbGwgdm9pZCBA bGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2NChpOCogYWxpZ24gMzIgJTQyLCBpOCogYWxpZ24gMzIg JTQzLCBpNjQgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMjA3OSwgIXRiYWEuc3RydWN0ICExOTcKLS0g ICU0NCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9w ZXJFbmNvZGluZ0l4MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhF bmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNDEsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZh bCBhbGlnbiAzMiAlMTMsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5 dmFsIGFsaWduIDEgJTE0KSwgIWRiZyAhMjA4MAotKyAgJTQ0ID0gY2FsbCB6ZXJvZXh0IGkxIEBf Wk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXgxM1ZhcnlpbmdXcml0 ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0 ICU0MSwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBh bGlnbiAzMiAlMTMsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFs KCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEgJTE0KSwgIWRi ZyAhMjA4MAotICAgYnIgaTEgJTQ0LCBsYWJlbCAlNjAsIGxhYmVsICU0NSwgIWRiZyAhMjA4MQot IAotIDsgPGxhYmVsPjo0NTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBw cmVkcyA9ICU0MAotQEAgLTEwMDc2LDcgKzEwMDc2LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9l eHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0 ZXIKLSAgICU0NyA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxNSB0byBpOCosICFk YmcgITIwODMKLSAgICU0OCA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxIHRvIGk4 KiwgIWRiZyAhMjA4MwotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTY0KGk4 KiBhbGlnbiAzMiAlNDcsIGk4KiBhbGlnbiAzMiAlNDgsIGk2NCA2NCwgaTEgZmFsc2UpLCAhZGJn ICEyMDgzLCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTQ5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45 UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXkxM1ZhcnlpbmdXcml0ZXJO U18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU0 NiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICUxNSwgJSJzdHJ1Y3QuUHJp bnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSAlMTYpLCAhZGJnICEyMDg0 Ci0rICAlNDkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlm UHJvcGVyRW5jb2RpbmdJeTEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJO U184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTQ2LCAlY2xhc3MuVmFyeWluZ1dyaXRlciog Ynl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyICUxNSwgJSJzdHJ1Y3QuUHJpbnRJ bmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGlu ZzRWYXJ5aW5nIikgYWxpZ24gMSAlMTYpLCAhZGJnICEyMDg0Ci0gICBiciBpMSAlNDksIGxhYmVs ICU2MCwgbGFiZWwgJTUwLCAhZGJnICEyMDg1Ci0gCi0gOyA8bGFiZWw+OjUwOiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTQ1Ci1AQCAtMTAwODQsNyArMTAw ODQsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwx NHN3aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dyaXRlcgotICAgJTUyID0gYml0Y2FzdCAlY2xhc3Mu VmFyeWluZ1dyaXRlciogJTE3IHRvIGk4KiwgIWRiZyAhMjA4NwotICAgJTUzID0gYml0Y2FzdCAl Y2xhc3MuVmFyeWluZ1dyaXRlciogJTEgdG8gaTgqLCAhZGJnICEyMDg3Ci0gICBjYWxsIHZvaWQg QGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pNjQoaTgqIGFsaWduIDMyICU1MiwgaTgqIGFsaWduIDMy ICU1MywgaTY0IDY0LCBpMSBmYWxzZSksICFkYmcgITIwODcsICF0YmFhLnN0cnVjdCAhMTk3Ci0t ICAlNTQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJv cGVyRW5jb2RpbmdJZDEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184 RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTUxLCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2 YWwgYWxpZ24gMzIgJTE3LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBi eXZhbCBhbGlnbiAxICUxOCksICFkYmcgITIwODgKLSsgICU1NCA9IGNhbGwgemVyb2V4dCBpMSBA X1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lkMTNWYXJ5aW5nV3Jp dGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4 dCAlNTEsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikg YWxpZ24gMzIgJTE3LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZh bCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGlnbiAxICUxOCksICFk YmcgITIwODgKLSAgIGJyIGkxICU1NCwgbGFiZWwgJTYwLCBsYWJlbCAlNTUsICFkYmcgITIwODkK LSAKLSA7IDxsYWJlbD46NTU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsg cHJlZHMgPSAlNTAKLUBAIC0xMDA5Miw3ICsxMDA5Miw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJv ZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNWYXJ5aW5nV3Jp dGVyCi0gICAlNTcgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMTkgdG8gaTgqLCAh ZGJnICEyMDkxCi0gICAlNTggPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMSB0byBp OCosICFkYmcgITIwOTEKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2NChp OCogYWxpZ24gMzIgJTU3LCBpOCogYWxpZ24gMzIgJTU4LCBpNjQgNjQsIGkxIGZhbHNlKSwgIWRi ZyAhMjA5MSwgIXRiYWEuc3RydWN0ICExOTcKLS0gICU1OSA9IGNhbGwgemVyb2V4dCBpMSBAX1pO OVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lQdjEzVmFyeWluZ1dyaXRl ck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQg JTU2LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIgJTE5LCAlInN0cnVjdC5Q cmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxICUyMCksICFkYmcgITIw OTIKLSsgICU1OSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5 SWZQcm9wZXJFbmNvZGluZ0lQdjEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VF RWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTU2LCAlY2xhc3MuVmFyeWluZ1dyaXRl ciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyICUxOSwgJSJzdHJ1Y3QuUHJp bnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNv ZGluZzRWYXJ5aW5nIikgYWxpZ24gMSAlMjApLCAhZGJnICEyMDkyCi0gICBiciBsYWJlbCAlNjAs ICFkYmcgITIwODkKLSAKLSA7IDxsYWJlbD46NjA6ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDsgcHJlZHMgPSAlNTUsICU1MCwgJTQ1LCAlNDAsICUzNSwgJTMwLCAlMjUsICUz Ci1AQCAtMTAxMDEsNyArMTAxMDEsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pO OVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dyaXRlcgotIH0KLSAK LSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBub3Vud2luZAotLWRl ZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlBy b3BlckVuY29kaW5nSWIxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNf OEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwg YWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFs aWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjA5NCB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQg aTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJYjEzVmFyeWlu Z1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNp Z25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikg YWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUi c3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEpICMyNSBjb21kYXQg IWRiZyAhMjA5NCB7Ci0gICAlNCA9IGFsbG9jYSBpMSwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2Eg aTgsIGFsaWduIDEKLSAgIHN0b3JlIGk4ICUwLCBpOCogJTUsIGFsaWduIDEsICF0YmFhICExOTMK LUBAIC0xMDEyNyw3ICsxMDEyNyw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45 UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWIxM1ZhcnlpCi0gfQotIAot IDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVm aW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJv cGVyRW5jb2RpbmdJaTEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184 RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBh bGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxp Z24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTAzIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBp MSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lpMTNWYXJ5aW5n V3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2ln bmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBh bGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJz dHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAh ZGJnICEyMTAzIHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSBp OCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5Mwot QEAgLTEwMTUzLDcgKzEwMTUzLDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQ cmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJaTEzVmFyeWkKLSB9Ci0gCi0g OyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZp bmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9w ZXJFbmNvZGluZ0lqMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhF bmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFs aWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGln biAxKSAjMjUgY29tZGF0ICFkYmcgITIxMTIgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkx IEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWoxM1ZhcnlpbmdX cml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWdu ZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFs aWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCglInN0 cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFk YmcgITIxMTIgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4 LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1A QCAtMTAxNzksNyArMTAxNzksNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVBy aW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lqMTNWYXJ5aQotIH0KLSAKLSA7 IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBub3Vud2luZAotLWRlZmlu ZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3Bl ckVuY29kaW5nSWYxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVu Y29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxp Z24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWdu IDEpICMyNSBjb21kYXQgIWRiZyAhMjEyMSB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEg QF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZjEzVmFyeWluZ1dy aXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25l eHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxp Z24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3Ry dWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEpICMyNSBjb21kYXQgIWRi ZyAhMjEyMSB7Ci0gICAlNCA9IGFsbG9jYSBpMSwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgaTgs IGFsaWduIDEKLSAgIHN0b3JlIGk4ICUwLCBpOCogJTUsIGFsaWduIDEsICF0YmFhICExOTMKLUBA IC0xMDIwNSw3ICsxMDIwNSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJp bnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWYxM1ZhcnlpCi0gfQotIAotIDsg RnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5l IGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVy RW5jb2RpbmdJeDEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5j b2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGln biAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24g MSkgIzI1IGNvbWRhdCAhZGJnICEyMTMwIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBA X1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l4MTNWYXJ5aW5nV3Jp dGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4 dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGln biAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1 Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJn ICEyMTMwIHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSBpOCwg YWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5MwotQEAg LTEwMjMxLDcgKzEwMjMxLDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmlu dEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeDEzVmFyeWkKLSB9Ci0gCi0gOyBG dW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUg aW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJF bmNvZGluZ0l5MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNv ZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWdu IDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAx KSAjMjUgY29tZGF0ICFkYmcgITIxMzkgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBf Wk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXkxM1ZhcnlpbmdXcml0 ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0 LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWdu IDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVj dC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcg ITIxMzkgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBh bGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAt MTAyNTcsNyArMTAyNTcsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50 SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l5MTNWYXJ5aQotIH0KLSAKLSA7IEZ1 bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBub3Vud2luZAotLWRlZmluZSBp bnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVu Y29kaW5nSWQxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29k aW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24g MzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEp ICMyNSBjb21kYXQgIWRiZyAhMjE0OCB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9a TjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZDEzVmFyeWluZ1dyaXRl ck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQs ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24g MzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0 LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAh MjE0OCB7Ci0gICAlNCA9IGFsbG9jYSBpMSwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgaTgsIGFs aWduIDEKLSAgIHN0b3JlIGk4ICUwLCBpOCogJTUsIGFsaWduIDEsICF0YmFhICExOTMKLUBAIC0x MDI4Myw3ICsxMDI4Myw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJ bmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWQxM1ZhcnlpCi0gfQotIAotIDsgRnVu Y3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGlu dGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5j b2RpbmdJUHYxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29k aW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24g MzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEp ICMyNSBjb21kYXQgIWRiZyAhMjE1NyB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9a TjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJUHYxM1ZhcnlpbmdXcml0 ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0 LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWdu IDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVj dC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcg ITIxNTcgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBh bGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCmRpZmYg LS1naXQgYS9zcmNwa2dzL2lzcGMvdGVtcGxhdGUgYi9zcmNwa2dzL2lzcGMvdGVtcGxhdGUKaW5k ZXggOWMzYWNiNDJhOWNmLi42OGZlZDVhNGM2NTkgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvaXNwYy90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2lzcGMvdGVtcGxhdGUKQEAgLTEsMTAgKzEsMTAgQEAKICMg VGVtcGxhdGUgZmlsZSBmb3IgJ2lzcGMnCiBwa2duYW1lPWlzcGMKLXZlcnNpb249MS4xNS4wCi1y ZXZpc2lvbj0yCit2ZXJzaW9uPTEuMTcuMAorcmV2aXNpb249MQogYXJjaHM9Ing4Nl82NCoiCiBi dWlsZF9zdHlsZT1jbWFrZQotY29uZmlndXJlX2FyZ3M9Ii1ESVNQQ19OT19EVU1QUz1PTiAtREFS TV9FTkFCTEVEPU9GRiIKK2NvbmZpZ3VyZV9hcmdzPSItRElTUENfTk9fRFVNUFM9T04gLURBUk1f RU5BQkxFRD1PRkYgLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UiCiBob3N0bWFrZWRlcGVuZHM9 ImNsYW5nIGNsYW5nLXRvb2xzLWV4dHJhIHB5dGhvbjMgbTQgYmlzb24gZmxleCBsbHZtIgogbWFr ZWRlcGVuZHM9Im5jdXJzZXMtZGV2ZWwgbmN1cnNlcy1saWJ0aW5mby1kZXZlbCB6bGliLWRldmVs Igogc2hvcnRfZGVzYz0iQ29tcGlsZXIgZm9yIGhpZ2gtcGVyZm9ybWFuY2UgU0lNRCBwcm9ncmFt bWluZyBvbiB0aGUgQ1BVIgpAQCAtMTIsNyArMTIsNyBAQCBtYWludGFpbmVyPSJBbmRyZWEgQnJh bmNhbGVvbmkgPGFiY0Bwb21wZWwubWU+IgogbGljZW5zZT0iQlNELTMtQ2xhdXNlIgogaG9tZXBh Z2U9Imh0dHBzOi8vaXNwYy5naXRodWIuaW8iCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNv bS9pc3BjL2lzcGMvYXJjaGl2ZS92JHt2ZXJzaW9ufS50YXIuZ3oiCi1jaGVja3N1bT0yNjU4ZmYw MGRjMDQ1YWM5ZmNlZmJmNmJkMjZkZmZhZjcyM2IwNTlhOTQyYTI3ZGY5MWJiYjYxYmM1MDNhMjg1 CitjaGVja3N1bT0zN2ZiMTA1NWQ2YzZiMjMyZTExMmQ4ZDUwMTQ1ZDcyNjgyNGVkNGQ4ZGE5M2E3 Mzk2MzE1ZGNlYmE2Yzc2ZTYyCiBub2Nyb3NzPXllcwogbm9waWU9eWVzCiAKCkZyb20gOWZhNzZl MWEwNGM3MDJhZjI2ZGE1NTY0YjRkMjg5MDA2MzI1NzRlNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogPT9VVEYtOD9xP0FuZHI9QzM9QTk9MjBDZXJxdWVpcmE/PSA8YWNlcnF1ZWlyYTAy MUBnbWFpbC5jb20+CkRhdGU6IE1vbiwgMjggRmViIDIwMjIgMjE6NDc6MjQgKzAwMDAKU3ViamVj dDogW1BBVENIIDE4LzMwXSB6aWc6IHVwZGF0ZSB0byAwLjkuMS4KCi0tLQogLi4uLzAwMDEtc3Rk LmJ1aWxkLWZpeC1oYW5kbGluZy1vZi1EY3B1LnBhdGNoIHwgNDggLS0tLS0tLS0tLS0tLS0tLS0t LQogc3JjcGtncy96aWcvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDggKyst LQogMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDUyIGRlbGV0aW9ucygtKQogZGVs ZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvemlnL3BhdGNoZXMvMDAwMS1zdGQuYnVpbGQtZml4LWhh bmRsaW5nLW9mLURjcHUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3ppZy9wYXRjaGVzLzAw MDEtc3RkLmJ1aWxkLWZpeC1oYW5kbGluZy1vZi1EY3B1LnBhdGNoIGIvc3JjcGtncy96aWcvcGF0 Y2hlcy8wMDAxLXN0ZC5idWlsZC1maXgtaGFuZGxpbmctb2YtRGNwdS5wYXRjaApkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggNDEwMWYyNDQ1OWJiLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3Jj cGtncy96aWcvcGF0Y2hlcy8wMDAxLXN0ZC5idWlsZC1maXgtaGFuZGxpbmctb2YtRGNwdS5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLUZyb20gMWU4Y2RhY2U3YWQzMjRhNDIy MjhhZWI1Y2Q2ZWI4ZGQxNTQyOTQxMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IElz YWFjIEZyZXVuZCA8aWZyZXVuZEBpZnJldW5kLnh5ej4KLURhdGU6IFR1ZSwgMjEgU2VwIDIwMjEg MjE6MDY6MTAgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gc3RkLmJ1aWxkOiBmaXggaGFuZGxpbmcg b2YgLURjcHUKLQotQ3VycmVudGx5IC1EY3B1IGlzIGNvbXBsZXRlbHkgaWdub3JlZCBpZiAtRHRh cmdldCBpc24ndCBwYXNzZWQgYXMgd2VsbC4KLUZ1cnRoZXIsIC1EY3B1PWJhc2VsaW5lIGlzIGln bm9yZWQgZXZlbiBpZiAtRHRhcmdldD1uYXRpdmUgaXMgcGFzc2VkLgotCi1UaGlzIHBhdGNoIGZp eGVzIHRoZXNlIDIgaXNzdWVzLCBhbHdheXMgcmVzcGVjdGluZyB0aGUgLURjcHUgb3B0aW9uIGlm Ci1wcmVzZW50LgotLS0tCi0gbGliL3N0ZC9idWlsZC56aWcgfCAxMyArKysrKysrLS0tLS0tCi0g MSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAt LWdpdCBhL2xpYi9zdGQvYnVpbGQuemlnIGIvbGliL3N0ZC9idWlsZC56aWcKLWluZGV4IDliN2Vi YjFmNC4uZTM5ODUyOWY5IDEwMDY0NAotLS0tIGEvbGliL3N0ZC9idWlsZC56aWcKLSsrKyBiL2xp Yi9zdGQvYnVpbGQuemlnCi1AQCAtNjg1LDcgKzY4NSwxMSBAQCBwdWIgY29uc3QgQnVpbGRlciA9 IHN0cnVjdCB7Ci0gICAgICAgICApOwotICAgICAgICAgY29uc3QgbWNwdSA9IHNlbGYub3B0aW9u KFtdY29uc3QgdTgsICJjcHUiLCAiVGFyZ2V0IENQVSIpOwotIAotLSAgICAgICAgY29uc3QgdHJp cGxlID0gbWF5YmVfdHJpcGxlIG9yZWxzZSByZXR1cm4gYXJncy5kZWZhdWx0X3RhcmdldDsKLSsg ICAgICAgIGlmIChtYXliZV90cmlwbGUgPT0gbnVsbCBhbmQgbWNwdSA9PSBudWxsKSB7Ci0rICAg ICAgICAgICAgcmV0dXJuIGFyZ3MuZGVmYXVsdF90YXJnZXQ7Ci0rICAgICAgICB9Ci0rCi0rICAg ICAgICBjb25zdCB0cmlwbGUgPSBtYXliZV90cmlwbGUgb3JlbHNlICJuYXRpdmUiOwotIAotICAg ICAgICAgdmFyIGRpYWdzOiBDcm9zc1RhcmdldC5QYXJzZU9wdGlvbnMuRGlhZ25vc3RpY3MgPSAu e307Ci0gICAgICAgICBjb25zdCBzZWxlY3RlZF90YXJnZXQgPSBDcm9zc1RhcmdldC5wYXJzZSgu ewotQEAgLTI0NTEsMTEgKzI0NTUsOCBAQCBwdWIgY29uc3QgTGliRXhlT2JqU3RlcCA9IHN0cnVj dCB7Ci0gCi0gICAgICAgICAgICAgaWYgKHBvcHVsYXRlZF9jcHVfZmVhdHVyZXMuZXFsKGNyb3Nz LmNwdS5mZWF0dXJlcykpIHsKLSAgICAgICAgICAgICAgICAgLy8gVGhlIENQVSBuYW1lIGFsb25l IGlzIHN1ZmZpY2llbnQuCi0tICAgICAgICAgICAgICAgIC8vIElmIGl0IGlzIHRoZSBiYXNlbGlu ZSBDUFUsIG5vIGNvbW1hbmQgbGluZSBhcmdzIGFyZSByZXF1aXJlZC4KLS0gICAgICAgICAgICAg ICAgaWYgKGNyb3NzLmNwdS5tb2RlbCAhPSBzdGQuVGFyZ2V0LkNwdS5iYXNlbGluZShjcm9zcy5j cHUuYXJjaCkubW9kZWwpIHsKLS0gICAgICAgICAgICAgICAgICAgIHRyeSB6aWdfYXJncy5hcHBl bmQoIi1tY3B1Iik7Ci0tICAgICAgICAgICAgICAgICAgICB0cnkgemlnX2FyZ3MuYXBwZW5kKGNy b3NzLmNwdS5tb2RlbC5uYW1lKTsKLS0gICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAg ICB0cnkgemlnX2FyZ3MuYXBwZW5kKCItbWNwdSIpOwotKyAgICAgICAgICAgICAgICB0cnkgemln X2FyZ3MuYXBwZW5kKGNyb3NzLmNwdS5tb2RlbC5uYW1lKTsKLSAgICAgICAgICAgICB9IGVsc2Ug ewotICAgICAgICAgICAgICAgICB2YXIgbWNwdV9idWZmZXIgPSBzdGQuQXJyYXlMaXN0KHU4KS5p bml0KGJ1aWxkZXIuYWxsb2NhdG9yKTsKLSAKLS0tIAotMi4zMy4xCi0KZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvemlnL3RlbXBsYXRlIGIvc3JjcGtncy96aWcvdGVtcGxhdGUKaW5kZXggNzI4YzVhNjRl OWRmLi40ODMyYzg5MzgxNjAgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvemlnL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3MvemlnL3RlbXBsYXRlCkBAIC0xLDE3ICsxLDE3IEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICd6aWcnCiBwa2duYW1lPXppZwotdmVyc2lvbj0wLjguMQotcmV2aXNpb249MgordmVyc2lv bj0wLjkuMQorcmV2aXNpb249MQogYXJjaHM9Ing4Nl82NCogYWFyY2g2NCoiCiBidWlsZF9zdHls ZT1jbWFrZQogbWFrZV9jbWQ9bWFrZQotbWFrZWRlcGVuZHM9ImNsYW5nIGxsdm0xMiBsbGQtZGV2 ZWwiCittYWtlZGVwZW5kcz0iY2xhbmcgbGx2bTEzIGxsZC1kZXZlbCIKIHNob3J0X2Rlc2M9IlBy b2dyYW1taW5nIGxhbmd1YWdlIGRlc2lnbmVkIGZvciByb2J1c3RuZXNzLCBvcHRpbWFsaXR5LCBh bmQgY2xhcml0eSIKIG1haW50YWluZXI9IklzYWFjIEZyZXVuZCA8bWFpbEBpc2FhY2ZyZXVuZC5j b20+IgogbGljZW5zZT0iTUlUIgogaG9tZXBhZ2U9Imh0dHBzOi8vemlnbGFuZy5vcmciCiBkaXN0 ZmlsZXM9Imh0dHBzOi8vemlnbGFuZy5vcmcvZG93bmxvYWQvJHt2ZXJzaW9ufS96aWctJHt2ZXJz aW9ufS50YXIueHoiCi1jaGVja3N1bT04YzQyOGUxNGEwYTg5Y2I3YTE1YTY3Njg0MjRhMzc0NDIy OTI4NThjZGI2OTVlMmViNTAzZmEzYzdiZjQ3ZjFhCitjaGVja3N1bT0zOGNmNGU4NDQ4MWY1ZmFj Yzc2NmJhNzI3ODNlNzQ2MmUwOGQ2ZDI5YTVkNDdlM2I3NWM4ZWUzMTQyNDg1MjEwCiBub3BpZT15 ZXMKIG5vY3Jvc3M9eWVzCiAKCkZyb20gNTBkYTg4YjE4ZGE0MmFjYjUzNTlmNTM5NDY0NTdhNzI5 NWFlODAxYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9xP0FuZHI9QzM9 QTk9MjBDZXJxdWVpcmE/PSA8YWNlcnF1ZWlyYTAyMUBnbWFpbC5jb20+CkRhdGU6IE1vbiwgMjgg RmViIDIwMjIgMjE6NTI6MDcgKzAwMDAKU3ViamVjdDogW1BBVENIIDE5LzMwXSBiZWlnbmV0OiBy ZW1vdmUgcGFja2FnZQoKLS0tCiBzcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9jbF91aW50LnBhdGNo ICAgICAgICAgfCAgMjIgLQogLi4uNDE5YTAwMDhlMzhlZjJkOWQyNTVkOWU5Yzc0ZTlmYmEwODRi LnBhdGNoIHwgMTM0IC0tLQogc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvbGx2bTA2LnBhdGNoICAg ICAgICAgIHwgIDMzIC0KIHNyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0wOC5wYXRjaCAgICAg ICAgICB8ICA1NiAtLQogc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvbGx2bTA5LnBhdGNoICAgICAg ICAgIHwgMTExIC0tLQogc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvbGx2bTEwLnBhdGNoICAgICAg ICAgIHwgMzQ3IC0tLS0tLS0KIHNyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0xMS5wYXRjaCAg ICAgICAgICB8IDkzNyAtLS0tLS0tLS0tLS0tLS0tLS0KIHNyY3BrZ3MvYmVpZ25ldC9wYXRjaGVz L2xsdm0xMi5wYXRjaCAgICAgICAgICB8IDExNSAtLS0KIHNyY3BrZ3MvYmVpZ25ldC9wYXRjaGVz L211c2wucGF0Y2ggICAgICAgICAgICB8ICAxMSAtCiBzcmNwa2dzL2JlaWduZXQvdGVtcGxhdGUg ICAgICAgICAgICAgICAgICAgICAgfCAgMjIgLQogc3JjcGtncy9iZWlnbmV0L3VwZGF0ZSAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAxIC0KIHNyY3BrZ3MvcmVtb3ZlZC1wYWNrYWdlcy90ZW1w bGF0ZSAgICAgICAgICAgICB8ICAgMSArCiAxMiBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMTc4OSBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2JlaWduZXQv cGF0Y2hlcy9jbF91aW50LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9iZWlnbmV0 L3BhdGNoZXMvZTFiMjQxOWEwMDA4ZTM4ZWYyZDlkMjU1ZDllOWM3NGU5ZmJhMDg0Yi5wYXRjaAog ZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0wNi5wYXRjaAog ZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0wOC5wYXRjaAog ZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0wOS5wYXRjaAog ZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0xMC5wYXRjaAog ZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0xMS5wYXRjaAog ZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0xMi5wYXRjaAog ZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL211c2wucGF0Y2gKIGRl bGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2JlaWduZXQvdGVtcGxhdGUKIGRlbGV0ZSBtb2RlIDEw MDY0NCBzcmNwa2dzL2JlaWduZXQvdXBkYXRlCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9iZWlnbmV0 L3BhdGNoZXMvY2xfdWludC5wYXRjaCBiL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2NsX3VpbnQu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2YmEwMGYwNGU5NS4uMDAwMDAw MDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2NsX3VpbnQucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0tLS0gYS9zcmMvY2xfYXBpX2tlcm5lbC5jCTIwMTct MDktMjIgMTA6MDU6MjIuMDAwMDAwMDAwICswMjAwCi0rKysgYi9zcmMvY2xfYXBpX2tlcm5lbC5j CTIwMjAtMDMtMjQgMTg6Mjc6NDAuMTg2NDg1ODg3ICswMTAwCi1AQCAtMTUxLDcgKzE1MSw3IEBA Ci0gICAgICAgICBmaXhlZF9sb2NhbF9zelswXSA9IDE2OwotICAgICAgICAgZml4ZWRfbG9jYWxf c3pbMV0gPSAxOwotICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICB1aW50IGosIG1heERpbVNpemUg PSA2NCAvKiBmcm9tIDY0PyAqLywgbWF4R3JvdXBTaXplID0gMjU2OyAvL01BWF9XT1JLX0dST1VQ X1NJWkUgbWF5IHRvbyBsYXJnZQotKyAgICAgICAgY2xfdWludCBqLCBtYXhEaW1TaXplID0gNjQg LyogZnJvbSA2ND8gKi8sIG1heEdyb3VwU2l6ZSA9IDI1NjsgLy9NQVhfV09SS19HUk9VUF9TSVpF IG1heSB0b28gbGFyZ2UKLSAgICAgICAgIHNpemVfdCByZWFsR3JvdXBTaXplID0gMTsKLSAgICAg ICAgIGZvciAoaSA9IDA7IGkgPCB3b3JrX2RpbTsgaSsrKSB7Ci0gICAgICAgICAgIGZvciAoaiA9 IG1heERpbVNpemU7IGogPiAxOyBqLS0pIHsKLS0tLSBhL3NyYy9jbF9lbnF1ZXVlLmMJMjAxNy0w OS0yMiAxMDowNToyMi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBiL3NyYy9jbF9lbnF1ZXVlLmMJMjAy MC0wMy0yNCAxODozMDoxMi4wMzE0Nzk4MzMgKzAxMDAKLUBAIC00OTQsNyArNDk0LDcgQEAKLSBj bF9pbnQgY2xfZW5xdWV1ZV9zdm1fZnJlZShlbnF1ZXVlX2RhdGEgKmRhdGEsIGNsX2ludCBzdGF0 dXMpIHsKLSAgIGludCBpOwotICAgdm9pZCAqKnBvaW50ZXJzID0gZGF0YS0+cG9pbnRlcnM7Ci0t ICB1aW50IG51bV9zdm1fcHRycyA9IGRhdGEtPnNpemU7Ci0rICBjbF91aW50IG51bV9zdm1fcHRy cyA9IGRhdGEtPnNpemU7Ci0gICBjbF9pbnQgZXJyID0gQ0xfU1VDQ0VTUzsKLSAKLSAgIGlmIChz dGF0dXMgIT0gQ0xfQ09NUExFVEUpCmRpZmYgLS1naXQgYS9zcmNwa2dzL2JlaWduZXQvcGF0Y2hl cy9lMWIyNDE5YTAwMDhlMzhlZjJkOWQyNTVkOWU5Yzc0ZTlmYmEwODRiLnBhdGNoIGIvc3JjcGtn cy9iZWlnbmV0L3BhdGNoZXMvZTFiMjQxOWEwMDA4ZTM4ZWYyZDlkMjU1ZDllOWM3NGU5ZmJhMDg0 Yi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGRlOWU2ZTJmMDkzLi4wMDAw MDAwMDAwMDAKLS0tIGEvc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvZTFiMjQxOWEwMDA4ZTM4ZWYy ZDlkMjU1ZDllOWM3NGU5ZmJhMDg0Yi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNCArMCww IEBACi1Gcm9tIGUxYjI0MTlhMDAwOGUzOGVmMmQ5ZDI1NWQ5ZTljNzRlOWZiYTA4NGIgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiUmViZWNjYSBOLiBQYWxtZXIiIDxyZWJlY2NhX3Bh bG1lckB6b2hvLmNvbT4KLURhdGU6IFNhdCwgMjEgSnVsIDIwMTggMjA6MDU6NTQgKzAxMDAKLVN1 YmplY3Q6IEFkZCBwcmVsaW1pbmFyeSBMTFZNIDcgc3VwcG9ydAotCi1UaGlzIGlzIHByZWxpbWlu YXJ5IGJlY2F1c2UgTExWTSA3IGhhcyBub3QgYmVlbiByZWxlYXNlZCB5ZXQ6Ci1pdCB3YXMgdGVz dGVkIHdpdGggdGhlIHNuYXBzaG90IGZyb20gRGViaWFuIGV4cGVyaW1lbnRhbCAoc3ZuMzM2ODk0 KS4KLQotMS5DaGFuZ2UgbGlua2luZyBvcmRlciwgYXMgY2xhbmdDb2RlR2VuIG5vdyBsaW5rcyB0 byBjbGFuZ0Zyb250ZW5kCi0yLlBhc3MgcmVmZXJlbmNlcyBub3QgcG9pbnRlcnMgdG8gV3JpdGVC aXRjb2RlVG9GaWxlIGFuZCBDbG9uZU1vZHVsZQotMy5BZGQgdGhlIGhlYWRlcnMgdGhhdCBMb29w U2ltcGxpZnlJRCwgTENTU0FJRCBhbmQKLXNvbWUgY3JlYXRlKlBhc3MgaGF2ZSBtb3ZlZCB0bwot NC5EZWZpbmUgb3VyIERFQlVHIHdoZXRoZXIgb3Igbm90IHdlIGp1c3QgdW5kZWZpbmVkIExMVk0n cwotKHRoZWlycyBpcyBub3cgTExWTV9ERUJVRywgYnV0IHdlIG5ldmVyIGFjdHVhbGx5IHVzZSBp dCkKLQotU2lnbmVkLW9mZi1ieTogUmViZWNjYSBOLiBQYWxtZXIgPHJlYmVjY2FfcGFsbWVyQHpv aG8uY29tPgotUmV2aWV3ZWQtYnk6IFlhbmcgUm9uZyA8cm9uZy5yLnlhbmdAaW50ZWwuY29tPgot LS0tCi0gQ01ha2UvRmluZExMVk0uY21ha2UgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KLSBi YWNrZW5kL3NyYy9iYWNrZW5kL2dlbl9wcm9ncmFtLmNwcCAgICAgIHwgOCArKysrKysrKwotIGJh Y2tlbmQvc3JjL2JhY2tlbmQvcHJvZ3JhbS5jcHAgICAgICAgICAgfCA0ICsrKysKLSBiYWNrZW5k L3NyYy9sbHZtL0V4cGFuZExhcmdlSW50ZWdlcnMuY3BwIHwgMiArLQotIGJhY2tlbmQvc3JjL2xs dm0vbGx2bV9iaXRjb2RlX2xpbmsuY3BwICAgfCA0ICsrKysKLSBiYWNrZW5kL3NyYy9sbHZtL2xs dm1faW5jbHVkZXMuaHBwICAgICAgIHwgNCArKysrCi0gNiBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNl cnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvQ01ha2UvRmluZExMVk0u Y21ha2UgYi9DTWFrZS9GaW5kTExWTS5jbWFrZQotaW5kZXggNTQ1N2YyNC4uZjg4MjU4OSAxMDA2 NDQKLS0tLSBhL0NNYWtlL0ZpbmRMTFZNLmNtYWtlCi0rKysgYi9DTWFrZS9GaW5kTExWTS5jbWFr ZQotQEAgLTExMywxMCArMTEzLDEwIEBAIG1hY3JvKGFkZF9vbmVfbGliIG5hbWUpCi0gZW5kbWFj cm8oKQotIAotICNBc3N1bWUgY2xhbmcgbGliIHBhdGggc2FtZSBhcyBsbHZtIGxpYiBwYXRoCi0r YWRkX29uZV9saWIoImNsYW5nQ29kZUdlbiIpCi0gYWRkX29uZV9saWIoImNsYW5nRnJvbnRlbmQi KQotIGFkZF9vbmVfbGliKCJjbGFuZ1NlcmlhbGl6YXRpb24iKQotIGFkZF9vbmVfbGliKCJjbGFu Z0RyaXZlciIpCi0tYWRkX29uZV9saWIoImNsYW5nQ29kZUdlbiIpCi0gYWRkX29uZV9saWIoImNs YW5nU2VtYSIpCi0gYWRkX29uZV9saWIoImNsYW5nU3RhdGljQW5hbHl6ZXJGcm9udGVuZCIpCi0g YWRkX29uZV9saWIoImNsYW5nU3RhdGljQW5hbHl6ZXJDaGVja2VycyIpCi1kaWZmIC0tZ2l0IGEv YmFja2VuZC9zcmMvYmFja2VuZC9nZW5fcHJvZ3JhbS5jcHAgYi9iYWNrZW5kL3NyYy9iYWNrZW5k L2dlbl9wcm9ncmFtLmNwcAotaW5kZXggMjc0Yzk5Yy4uNDE1OTIzNCAxMDA2NDQKLS0tLSBhL2Jh Y2tlbmQvc3JjL2JhY2tlbmQvZ2VuX3Byb2dyYW0uY3BwCi0rKysgYi9iYWNrZW5kL3NyYy9iYWNr ZW5kL2dlbl9wcm9ncmFtLmNwcAotQEAgLTQ1NCw3ICs0NTQsMTEgQEAgbmFtZXNwYWNlIGdiZSB7 Ci0gI2lmZGVmIEdCRV9DT01QSUxFUl9BVkFJTEFCTEUKLSAgICAgICBzdGQ6OnN0cmluZyBzdHI7 Ci0gICAgICAgbGx2bTo6cmF3X3N0cmluZ19vc3RyZWFtIE9TKHN0cik7Ci0rI2lmIExMVk1fVkVS U0lPTl9NQUpPUiA+PSA3Ci0rICAgICAgbGx2bTo6V3JpdGVCaXRjb2RlVG9GaWxlKCooKGxsdm06 Ok1vZHVsZSopcHJvZy0+bW9kdWxlKSwgT1MpOwotKyNlbHNlCi0gICAgICAgbGx2bTo6V3JpdGVC aXRjb2RlVG9GaWxlKChsbHZtOjpNb2R1bGUqKXByb2ctPm1vZHVsZSwgT1MpOwotKyNlbmRpZgot ICAgICAgIHN0ZDo6c3RyaW5nJiBiaW5fc3RyID0gT1Muc3RyKCk7Ci0gICAgICAgaW50IGxsc3og PSBiaW5fc3RyLnNpemUoKTsKLSAgICAgICAqYmluYXJ5ID0gKGNoYXIgKiltYWxsb2Moc2l6ZW9m KGNoYXIpICogKGxsc3orMSkgKTsKLUBAIC01NDUsNyArNTQ5LDExIEBAIG5hbWVzcGFjZSBnYmUg ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtb2RSZWYpOwotICAgICAg ICAgc3JjID0gbGx2bTo6dW53cmFwKG1vZFJlZik7Ci0gICAgICAgfQotKyNpZiBMTFZNX1ZFUlNJ T05fTUFKT1IgPj0gNwotKyAgICAgIGxsdm06Ok1vZHVsZSogY2xvbmUgPSBsbHZtOjpDbG9uZU1v ZHVsZSgqc3JjKS5yZWxlYXNlKCk7Ci0rI2Vsc2UKLSAgICAgICBsbHZtOjpNb2R1bGUqIGNsb25l ID0gbGx2bTo6Q2xvbmVNb2R1bGUoc3JjKS5yZWxlYXNlKCk7Ci0rI2VuZGlmCi0gICAgICAgaWYg KExMVk1MaW5rTW9kdWxlczIod3JhcChkc3QpLCB3cmFwKGNsb25lKSkpIHsKLSAjZWxpZiBMTFZN X1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSAzNwotICAgICAgIGlm IChMTFZNTGlua01vZHVsZXMod3JhcChkc3QpLCB3cmFwKHNyYyksIExMVk1MaW5rZXJQcmVzZXJ2 ZVNvdXJjZV9SZW1vdmVkLCAmZXJyTXNnKSkgewotZGlmZiAtLWdpdCBhL2JhY2tlbmQvc3JjL2Jh Y2tlbmQvcHJvZ3JhbS5jcHAgYi9iYWNrZW5kL3NyYy9iYWNrZW5kL3Byb2dyYW0uY3BwCi1pbmRl eCBjMzdjNTk1Li5iMzZmN2I0IDEwMDY0NAotLS0tIGEvYmFja2VuZC9zcmMvYmFja2VuZC9wcm9n cmFtLmNwcAotKysrIGIvYmFja2VuZC9zcmMvYmFja2VuZC9wcm9ncmFtLmNwcAotQEAgLTc5NCw3 ICs3OTQsMTEgQEAgbmFtZXNwYWNlIGdiZSB7Ci0gICAgICAgbGx2bTo6cmF3X2ZkX29zdHJlYW0g b3N0cmVhbSAoZHVtcFNQSVJCaW5hcnlOYW1lLmNfc3RyKCksCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZXJyLCBsbHZtOjpzeXM6OmZzOjpGX05vbmUpOwotICAgICAgIGlm ICghZXJyKQotKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1I8NwotICAgICAgICAgbGx2bTo6V3JpdGVC aXRjb2RlVG9GaWxlKCpvdXRfbW9kdWxlLCBvc3RyZWFtKTsKLSsjZWxzZQotKyAgICAgICAgbGx2 bTo6V3JpdGVCaXRjb2RlVG9GaWxlKCoqb3V0X21vZHVsZSwgb3N0cmVhbSk7Ci0rI2VuZGlmCi0g ICAgIH0KLSAjZW5kaWYKLSAgICAgcmV0dXJuIHRydWU7Ci1kaWZmIC0tZ2l0IGEvYmFja2VuZC9z cmMvbGx2bS9FeHBhbmRMYXJnZUludGVnZXJzLmNwcCBiL2JhY2tlbmQvc3JjL2xsdm0vRXhwYW5k TGFyZ2VJbnRlZ2Vycy5jcHAKLWluZGV4IDg1MTVkYzEuLjRhZWM0NGUgMTAwNjQ0Ci0tLS0gYS9i YWNrZW5kL3NyYy9sbHZtL0V4cGFuZExhcmdlSW50ZWdlcnMuY3BwCi0rKysgYi9iYWNrZW5kL3Ny Yy9sbHZtL0V4cGFuZExhcmdlSW50ZWdlcnMuY3BwCi1AQCAtOTksOCArOTksOCBAQCB1c2luZyBu YW1lc3BhY2UgbGx2bTsKLSAKLSAjaWZkZWYgREVCVUcKLSAgICN1bmRlZiBERUJVRwotLSAgI2Rl ZmluZSBERUJVRyguLi4pCi0gI2VuZGlmCi0rI2RlZmluZSBERUJVRyguLi4pCi0gLy8gQnJlYWsg aW5zdHJ1Y3Rpb25zIHVwIGludG8gbm8gbGFyZ2VyIHRoYW4gNjQtYml0IGNodW5rcy4KLSBzdGF0 aWMgY29uc3QgdW5zaWduZWQga0NodW5rQml0cyA9IDY0OwotIHN0YXRpYyBjb25zdCB1bnNpZ25l ZCBrQ2h1bmtCeXRlcyA9IGtDaHVua0JpdHMgLyBDSEFSX0JJVDsKLWRpZmYgLS1naXQgYS9iYWNr ZW5kL3NyYy9sbHZtL2xsdm1fYml0Y29kZV9saW5rLmNwcCBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2 bV9iaXRjb2RlX2xpbmsuY3BwCi1pbmRleCBlZjU2ZTRjLi40YzNlMjBlIDEwMDY0NAotLS0tIGEv YmFja2VuZC9zcmMvbGx2bS9sbHZtX2JpdGNvZGVfbGluay5jcHAKLSsrKyBiL2JhY2tlbmQvc3Jj L2xsdm0vbGx2bV9iaXRjb2RlX2xpbmsuY3BwCi1AQCAtMzQwLDcgKzM0MCwxMSBAQCBuYW1lc3Bh Y2UgZ2JlCi0gICAgIC8qIFdlIHVzZSBiZWlnbmV0J3MgYml0Y29kZSBhcyBkc3QgYmVjYXVzZSBp dCB3aWxsIGhhdmUgYSBsb3Qgb2YKLSAgICAgICAgbGF6eSBmdW5jdGlvbnMgd2hpY2ggd2lsbCBu b3QgYmUgbG9hZGVkLiAqLwotICNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVS U0lPTl9NSU5PUiA+PSAzOQotKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgPj0gNwotKyAgICBsbHZt OjpNb2R1bGUgKiBsaW5rZWRfbW9kdWxlID0gbGx2bTo6Q2xvbmVNb2R1bGUoKihsbHZtOjpNb2R1 bGUqKW1vZCkucmVsZWFzZSgpOwotKyNlbHNlCi0gICAgIGxsdm06Ok1vZHVsZSAqIGxpbmtlZF9t b2R1bGUgPSBsbHZtOjpDbG9uZU1vZHVsZSgobGx2bTo6TW9kdWxlKiltb2QpLnJlbGVhc2UoKTsK LSsjZW5kaWYKLSAgICAgaWYoTExWTUxpbmtNb2R1bGVzMih3cmFwKGNsb25lZExpYiksIHdyYXAo bGlua2VkX21vZHVsZSkpKSB7Ci0gI2Vsc2UKLSAgICAgY2hhciogZXJyb3JNc2c7Ci1kaWZmIC0t Z2l0IGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2luY2x1ZGVzLmhwcCBiL2JhY2tlbmQvc3JjL2xs dm0vbGx2bV9pbmNsdWRlcy5ocHAKLWluZGV4IDE4NDU1M2EuLmZmY2NmMDIgMTAwNjQ0Ci0tLS0g YS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1faW5jbHVkZXMuaHBwCi0rKysgYi9iYWNrZW5kL3NyYy9s bHZtL2xsdm1faW5jbHVkZXMuaHBwCi1AQCAtODksNiArODksMTAgQEAKLSAjaW5jbHVkZSAibGx2 bS9Db2RlR2VuL0ludHJpbnNpY0xvd2VyaW5nLmgiCi0gCi0gI2luY2x1ZGUgImxsdm0vVHJhbnNm b3Jtcy9TY2FsYXIuaCIKLSsjaWYgTExWTV9WRVJTSU9OX01BSk9SID49IDcKLSsjaW5jbHVkZSAi bGx2bS9UcmFuc2Zvcm1zL1V0aWxzLmgiCi0rI2luY2x1ZGUgImxsdm0vVHJhbnNmb3Jtcy9JbnN0 Q29tYmluZS9JbnN0Q29tYmluZS5oIgotKyNlbmRpZgotICNpbmNsdWRlICJsbHZtL01DL01DQXNt SW5mby5oIgotICNpbmNsdWRlICJsbHZtL01DL01DQ29udGV4dC5oIgotICNpbmNsdWRlICJsbHZt L01DL01DSW5zdHJJbmZvLmgiCi0tLSAKLWNnaXQgdjEuMQotCmRpZmYgLS1naXQgYS9zcmNwa2dz L2JlaWduZXQvcGF0Y2hlcy9sbHZtMDYucGF0Y2ggYi9zcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9s bHZtMDYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzODllNjZjODJkZi4u MDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0wNi5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVNvdXJjZTogQXJjaCBMaW51eAotVXBzdHJl YW06IHVua25vd24KLVJlYXNvbjogZml4ZXMgbGx2bTYgY29tcGlsYXRpb24KLQotLS0tIGEvYmFj a2VuZC9zcmMvbGx2bS9sbHZtX3RvX2dlbi5jcHAJMjAxNy0xMC0yNCAwOTowNDo0OC4wMDAwMDAw MDAgKzAzMDAKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV90b19nZW4uY3BwCTIwMTgtMDMt MTYgMTY6MDg6NTQuNjY5OTYzODI0ICswMjAwCi1AQCAtMzIyLDcgKzMyMiwxMSBAQCBuYW1lc3Bh Y2UgZ2JlCi0gICAgIERhdGFMYXlvdXQgREwoJm1vZCk7Ci0gICAgIAotICAgICBnYmVEaWFnbm9z dGljQ29udGV4dCBkYzsKLSsjaWYgTExWTV9WRVJTSU9OX01BSk9SID49IDYKLSsgICAgbW9kLmdl dENvbnRleHQoKS5zZXREaWFnbm9zdGljSGFuZGxlckNhbGxCYWNrKCZnYmVEaWFnbm9zdGljSGFu ZGxlciwmZGMpOwotKyNlbHNlCi0gICAgIG1vZC5nZXRDb250ZXh0KCkuc2V0RGlhZ25vc3RpY0hh bmRsZXIoJmdiZURpYWdub3N0aWNIYW5kbGVyLCZkYyk7Ci0rI2VuZGlmCi0gCi0gI2lmIExMVk1f VkVSU0lPTl9NQUpPUiAqIDEwICsgTExWTV9WRVJTSU9OX01JTk9SID49IDM3Ci0gICAgIG1vZC5z ZXREYXRhTGF5b3V0KERMKTsKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV91bnJvbGwuY3Bw CTIwMTctMTAtMjQgMDk6MDQ6NDguMDAwMDAwMDAwICswMzAwCi0rKysgYi9iYWNrZW5kL3NyYy9s bHZtL2xsdm1fdW5yb2xsLmNwcAkyMDE4LTAzLTE2IDE2OjA5OjQ3LjczNjQwMzU1NyArMDIwMAot QEAgLTIwNSw3ICsyMDUsOSBAQCBuYW1lc3BhY2UgZ2JlIHsKLSAgICAgICAgICAgaWYgKHBhcmVu dFRyaXBDb3VudCAhPSAwICYmIGN1cnJUcmlwQ291bnQgKiBwYXJlbnRUcmlwQ291bnQgPiAzMikg ewotICAgICAgICAgICAgIC8vRG9uJ3QgY2hhbmdlIHRoZSB1bnJvbGxJRCBpZiBkb2Vzbid0IGZv cmNlIHVucm9sbC4KLSAgICAgICAgICAgICAvL3NldFVucm9sbElEKHBhcmVudEwsIGZhbHNlKTsK LS0jaWYgTExWTV9WRVJTSU9OX01BSk9SICogMTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gMzgK LSsjaWYgTExWTV9WRVJTSU9OX01BSk9SID49IDYKLSsgICAgICAgICAgICBsb29wSW5mby5lcmFz ZShwYXJlbnRMKTsKLSsjZWxpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lP Tl9NSU5PUiA+PSAzOAotICAgICAgICAgICAgIGxvb3BJbmZvLm1hcmtBc1JlbW92ZWQocGFyZW50 TCk7Ci0gI2Vsc2UKLSAgICAgICAgICAgICBMUE0uZGVsZXRlTG9vcEZyb21RdWV1ZShwYXJlbnRM KTsKLU9ubHkgaW4gQmVpZ25ldC0xLjMuMi1Tb3VyY2U6IGJ1aWxkCi0KZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0wOC5wYXRjaCBiL3NyY3BrZ3MvYmVpZ25ldC9wYXRj aGVzL2xsdm0wOC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTBjNWU3YTdj NGY3Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvbGx2bTA4LnBh dGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotRnJvbSA3NWMxNTI1OTlhN2MxNzM5 ZTZkYWRjZGI5YjM3N2FjZjdlNDRkOWNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTog SmFuIEJlaWNoIDxqYmVpY2hARnJlZUJTRC5vcmc+Ci1EYXRlOiBXZWQsIDMwIEphbiAyMDE5IDEy OjQyOjM0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGxhbmcvYmVpZ25ldDogdW5icmVhayB3aXRo IGxsdm04MAotCi1SZWdyZXNzZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL2xsdm0vbGx2bS1wcm9q ZWN0L2NvbW1pdC83MjFkOTU3MTNhOWUKLQotdW5hYmxlIHRvIGxvYWQgL3Vzci9sb2NhbC9saWIv YmVpZ25ldC8vbGliZ2JlaW50ZXJwLnNvIHdoaWNoIGlzIHBhcnQgb2YgdGhlIGRyaXZlciwgcGxl YXNlIGNoZWNrIQotbGQtZWxmLnNvLjE6IC91c3IvbG9jYWwvbGliL2JlaWduZXQvL2xpYmdiZWlu dGVycC5zbzogVW5kZWZpbmVkIHN5bWJvbCAiX1pONGxsdm0yNERpc2FibGVBQklCcmVha2luZ0No ZWNrc0UiCi0KLVJlZ3Jlc3NlZCBieSBodHRwczovL2dpdGh1Yi5jb20vbGx2bS9sbHZtLXByb2pl Y3QvY29tbWl0LzRhMmQ1OGUxNmFjYwotCi1iYWNrZW5kL3NyYy9sbHZtL2xsdm1fZ2VuX2JhY2tl bmQuY3BwOjMwNzY6NTogZXJyb3I6Ci0gICAgICB1bmtub3duIHR5cGUgbmFtZSAnVGVybWluYXRv ckluc3QnCi0gICAgVGVybWluYXRvckluc3QgKnRlcm0gPSBiYi0+Z2V0VGVybWluYXRvcigpOwot ICAgIF4KLWJhY2tlbmQvc3JjL2xsdm0vbGx2bV9nZW5fYmFja2VuZC5jcHA6MzA4Mzo1OiBlcnJv cjoKLSAgICAgIHVua25vd24gdHlwZSBuYW1lICdUZXJtaW5hdG9ySW5zdCcKLSAgICBUZXJtaW5h dG9ySW5zdCAqdGVybSA9IGJiLT5nZXRUZXJtaW5hdG9yKCk7Ci0gICAgXgotCi0tLS0gYS9iYWNr ZW5kL3NyYy9DTWFrZUxpc3RzLnR4dAkyMDE3LTA5LTIyIDA4OjA1OjIyIFVUQwotKysrIGIvYmFj a2VuZC9zcmMvQ01ha2VMaXN0cy50eHQKLUBAIC0xNjgsNiArMTY4LDcgQEAgYWRkX2RlcGVuZGVu Y2llcyhnYmUgYmVpZ25ldF9iaXRjb2RlKQotIGVuZGlmIChOT1QgKFVTRV9TVEFOREFMT05FX0dC RV9DT01QSUxFUiBTVFJFUVVBTCAidHJ1ZSIpKQotIAotIGFkZF9saWJyYXJ5KGdiZWludGVycCBT SEFSRUQgZ2JlX2Jpbl9pbnRlcnByZXRlci5jcHApCi0rdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGdi ZWludGVycCAke0xMVk1fTU9EVUxFX0xJQlN9KQotIAotIGlmIChMTFZNX1ZFUlNJT05fTk9ET1Qg VkVSU0lPTl9FUVVBTCAzNCkKLSAgIGZpbmRfbGlicmFyeShURVJNSU5GTyBOQU1FUyB0aW5mbyBu Y3Vyc2VzKQotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2dlbl9iYWNrZW5kLmNwcAkyMDE3 LTEwLTI0IDA2OjA0OjQ4IFVUQwotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2dlbl9iYWNr ZW5kLmNwcAotQEAgLTMwNzMsMTQgKzMwNzMsMjIgQEAgbmFtZXNwYWNlIGdiZQotIAotIAotICAg c3RhdGljIHVuc2lnbmVkIGdldENoaWxkTm8oQmFzaWNCbG9jayAqYmIpIHsKLSsjaWYgTExWTV9W RVJTSU9OX01BSk9SIDwgOAotICAgICBUZXJtaW5hdG9ySW5zdCAqdGVybSA9IGJiLT5nZXRUZXJt aW5hdG9yKCk7Ci0rI2Vsc2UKLSsgICAgSW5zdHJ1Y3Rpb24gKnRlcm0gPSBiYi0+Z2V0VGVybWlu YXRvcigpOwotKyNlbmRpZgotICAgICByZXR1cm4gdGVybS0+Z2V0TnVtU3VjY2Vzc29ycygpOwot ICAgfQotIAotICAgLy8gcmV0dXJuIE5VTEwgaWYgaW5kZXggb3V0LXJhbmdlIG9mIGNoaWxkcmVu IG51bWJlcgotICAgc3RhdGljIEJhc2ljQmxvY2sgKmdldENoaWxkUG9zc2libGUoQmFzaWNCbG9j ayAqYmIsIHVuc2lnbmVkIGluZGV4KSB7Ci0gCi0rI2lmIExMVk1fVkVSU0lPTl9NQUpPUiA8IDgK LSAgICAgVGVybWluYXRvckluc3QgKnRlcm0gPSBiYi0+Z2V0VGVybWluYXRvcigpOwotKyNlbHNl Ci0rICAgIEluc3RydWN0aW9uICp0ZXJtID0gYmItPmdldFRlcm1pbmF0b3IoKTsKLSsjZW5kaWYK LSAgICAgdW5zaWduZWQgY2hpbGRObyA9IHRlcm0tPmdldE51bVN1Y2Nlc3NvcnMoKTsKLSAgICAg QmFzaWNCbG9jayAqY2hpbGQgPSBOVUxMOwotICAgICBpZihpbmRleCA8IGNoaWxkTm8pIHsKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0wOS5wYXRjaCBiL3NyY3BrZ3Mv YmVpZ25ldC9wYXRjaGVzL2xsdm0wOS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggYWNhZWNlYWJiNmRkLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9iZWlnbmV0L3BhdGNo ZXMvbGx2bTA5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAKLVNvdXJjZTog RnJlZUJTRCArIHE2NgotCi1Nb3N0bHkgRnJlZUJTRCBvdGhlciB0aGFuIEZpbmRMTFZNLmNtYWtl IGNoYW5nZXMuCi1MaW5raW5nIGFnYWluc3QgY2xhbmctY3BwIGRvZXMgbm90IHdvcmsgZm9yIHVz LgotCi0tLS0gYS9DTWFrZS9GaW5kTExWTS5jbWFrZQotKysrIGIvQ01ha2UvRmluZExMVk0uY21h a2UKLUBAIC0xNDAsNiArMTQwLDcgQEAgYWRkX29uZV9saWIoImNsYW5nU3RhdGljQW5hbHl6ZXJD b3JlIikKLSBhZGRfb25lX2xpYigiY2xhbmdBbmFseXNpcyIpCi0gYWRkX29uZV9saWIoImNsYW5n RWRpdCIpCi0gYWRkX29uZV9saWIoImNsYW5nQVNUIikKLSthZGRfb25lX2xpYigiY2xhbmdBU1RN YXRjaGVycyIpCi0gYWRkX29uZV9saWIoImNsYW5nUGFyc2UiKQotIGFkZF9vbmVfbGliKCJjbGFu Z1NlbWEiKQotIGFkZF9vbmVfbGliKCJjbGFuZ0xleCIpCi0tLS0gYS9iYWNrZW5kL3NyYy9sbHZt L2xsdm1faW50cmluc2ljX2xvd2VyaW5nLmNwcAkyMDE3LTEwLTI0IDA2OjA0OjQ4IFVUQwotKysr IGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2ludHJpbnNpY19sb3dlcmluZy5jcHAKLUBAIC03Nyw3 ICs3NywxMSBAQCBuYW1lc3BhY2UgZ2JlIHsKLSAgICAgICAgIHN0ZDo6dmVjdG9yPFR5cGUgKj4g UGFyYW1UeXM7Ci0gICAgICAgICBmb3IgKFZhbHVlKiogSSA9IEFyZ0JlZ2luOyBJICE9IEFyZ0Vu ZDsgKytJKQotICAgICAgICAgICBQYXJhbVR5cy5wdXNoX2JhY2soKCpJKS0+Z2V0VHlwZSgpKTsK LSsjaWYgTExWTV9WRVJTSU9OX01BSk9SICogMTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gOTAK LSsgICAgICAgIEZ1bmN0aW9uQ2FsbGVlIEZDYWNoZSA9IE0tPmdldE9ySW5zZXJ0RnVuY3Rpb24o TmV3Rm4sCi0rI2Vsc2UKLSAgICAgICAgIENvbnN0YW50KiBGQ2FjaGUgPSBNLT5nZXRPckluc2Vy dEZ1bmN0aW9uKE5ld0ZuLAotKyNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBGdW5jdGlvblR5cGU6OmdldChSZXRUeSwgUGFyYW1UeXMsIGZhbHNlKSk7Ci0g Ci0gICAgICAgICBJUkJ1aWxkZXI8PiBCdWlsZGVyKENJLT5nZXRQYXJlbnQoKSwgQmFzaWNCbG9j azo6aXRlcmF0b3IoQ0kpKTsKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9zYW1wbGVyX2Zp eC5jcHAJMjAxNy0xMC0yNCAwNjowNDo0OCBVVEMKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2 bV9zYW1wbGVyX2ZpeC5jcHAKLUBAIC04Miw3ICs4MiwxMSBAQCBuYW1lc3BhY2UgZ2JlIHsKLSAj aWYgTExWTV9WRVJTSU9OX01BSk9SICogMTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gNDAKLSAg ICAgICAgICAgTW9kdWxlICpNID0gSS0+Z2V0UGFyZW50KCktPmdldFBhcmVudCgpLT5nZXRQYXJl bnQoKTsKLSAjaWYgTExWTV9WRVJTSU9OX01BSk9SICogMTAgKyBMTFZNX1ZFUlNJT05fTUlOT1Ig Pj0gNTAKLSsjaWYgTExWTV9WRVJTSU9OX01BSk9SICogMTAgKyBMTFZNX1ZFUlNJT05fTUlOT1Ig Pj0gOTAKLSsgICAgICAgICAgRnVuY3Rpb25DYWxsZWUgc2FtcGxlckN2dCA9IE0tPmdldE9ySW5z ZXJ0RnVuY3Rpb24oIl9fZ2VuX29jbF9zYW1wbGVyX3RvX2ludCIsIGkzMlR5LCBJLT5nZXRPcGVy YW5kKDApLT5nZXRUeXBlKCkpOwotKyNlbHNlCi0gICAgICAgICAgIFZhbHVlKiBzYW1wbGVyQ3Z0 ID0gTS0+Z2V0T3JJbnNlcnRGdW5jdGlvbigiX19nZW5fb2NsX3NhbXBsZXJfdG9faW50IiwgaTMy VHksIEktPmdldE9wZXJhbmQoMCktPmdldFR5cGUoKSk7Ci0rI2VuZGlmCi0gI2Vsc2UKLSAgICAg ICAgICAgVmFsdWUqIHNhbXBsZXJDdnQgPSBNLT5nZXRPckluc2VydEZ1bmN0aW9uKCJfX2dlbl9v Y2xfc2FtcGxlcl90b19pbnQiLCBpMzJUeSwgSS0+Z2V0T3BlcmFuZCgwKS0+Z2V0VHlwZSgpLCBu dWxscHRyKTsKLSAjZW5kaWYKLUBAIC0xMjQsNyArMTI4LDExIEBAIG5hbWVzcGFjZSBnYmUgewot ICNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSA0MAot ICAgICAgICAgICBNb2R1bGUgKk0gPSBJLT5nZXRQYXJlbnQoKS0+Z2V0UGFyZW50KCktPmdldFBh cmVudCgpOwotICNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5P UiA+PSA1MAotKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5P UiA+PSA5MAotKyAgICAgICAgICBGdW5jdGlvbkNhbGxlZSBzYW1wbGVyQ3Z0ID0gTS0+Z2V0T3JJ bnNlcnRGdW5jdGlvbigiX19nZW5fb2NsX3NhbXBsZXJfdG9faW50IiwgaTMyVHksIEktPmdldE9w ZXJhbmQoMCktPmdldFR5cGUoKSk7Ci0rI2Vsc2UKLSAgICAgICAgICAgVmFsdWUqIHNhbXBsZXJD dnQgPSBNLT5nZXRPckluc2VydEZ1bmN0aW9uKCJfX2dlbl9vY2xfc2FtcGxlcl90b19pbnQiLCBp MzJUeSwgSS0+Z2V0T3BlcmFuZCgwKS0+Z2V0VHlwZSgpKTsKLSsjZW5kaWYKLSAjZWxzZQotICAg ICAgICAgICBWYWx1ZSogc2FtcGxlckN2dCA9IE0tPmdldE9ySW5zZXJ0RnVuY3Rpb24oIl9fZ2Vu X29jbF9zYW1wbGVyX3RvX2ludCIsIGkzMlR5LCBJLT5nZXRPcGVyYW5kKDApLT5nZXRUeXBlKCks IG51bGxwdHIpOwotICNlbmRpZgotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX3Byb2ZpbGlu Zy5jcHAJMjAxNy0xMC0yNCAwNjowNDo0OCBVVEMKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2 bV9wcm9maWxpbmcuY3BwCi1AQCAtMTYzLDEwICsxNjMsMTggQEAgbmFtZXNwYWNlIGdiZQotICAg ICAgIC8vIF9fZ2VuX29jbF9zdG9yZV90aW1lc3RhbXAoaW50IG50aCwgaW50IHR5cGUpOwotICAg ICAgIFZhbHVlICpBcmdzWzJdID0ge0NvbnN0YW50SW50OjpnZXQoaW50VHksIHBvaW50TnVtKysp LCBDb25zdGFudEludDo6Z2V0KGludFR5LCBwcm9maWxpbmdUeXBlKX07Ci0gI2lmIExMVk1fVkVS U0lPTl9NQUpPUiAqIDEwICsgTExWTV9WRVJTSU9OX01JTk9SID49IDUwCi0rI2lmIExMVk1fVkVS U0lPTl9NQUpPUiAqIDEwICsgTExWTV9WRVJTSU9OX01JTk9SID49IDkwCi0rICAgICAgYnVpbGRl ci0+Q3JlYXRlQ2FsbChtb2R1bGUtPmdldE9ySW5zZXJ0RnVuY3Rpb24oCi0rI2Vsc2UKLSAgICAg ICBidWlsZGVyLT5DcmVhdGVDYWxsKGNhc3Q8bGx2bTo6RnVuY3Rpb24+KG1vZHVsZS0+Z2V0T3JJ bnNlcnRGdW5jdGlvbigKLSsjZW5kaWYKLSAgICAgICAgICAgICAgICJfX2dlbl9vY2xfY2FsY190 aW1lc3RhbXAiLCBUeXBlOjpnZXRWb2lkVHkobW9kdWxlLT5nZXRDb250ZXh0KCkpLAotICAgICAg ICAgICAgICAgSW50ZWdlclR5cGU6OmdldEludDMyVHkobW9kdWxlLT5nZXRDb250ZXh0KCkpLAot KyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSA5MAot KyAgICAgICAgICAgICAgSW50ZWdlclR5cGU6OmdldEludDMyVHkobW9kdWxlLT5nZXRDb250ZXh0 KCkpKSwKLSsjZWxzZQotICAgICAgICAgICAgICAgSW50ZWdlclR5cGU6OmdldEludDMyVHkobW9k dWxlLT5nZXRDb250ZXh0KCkpKSksCi0rI2VuZGlmCi0gICAgICAgICAgICAgICBBcnJheVJlZjxW YWx1ZSo+KEFyZ3MpKTsKLSAjZWxzZQotICAgICAgIGJ1aWxkZXItPkNyZWF0ZUNhbGwoY2FzdDxs bHZtOjpGdW5jdGlvbj4obW9kdWxlLT5nZXRPckluc2VydEZ1bmN0aW9uKAotQEAgLTE4NSwxMCAr MTkzLDE4IEBAIG5hbWVzcGFjZSBnYmUKLSAgICAgVmFsdWUgKkFyZ3MyWzJdID0ge3Byb2ZpbGlu Z0J1ZiwgQ29uc3RhbnRJbnQ6OmdldChpbnRUeSwgcHJvZmlsaW5nVHlwZSl9OwotIAotICNpZiBM TFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSA1MAotKyNpZiBM TFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSA5MAotKyAgICBi dWlsZGVyLT5DcmVhdGVDYWxsKG1vZHVsZS0+Z2V0T3JJbnNlcnRGdW5jdGlvbigKLSsjZWxzZQot ICAgICBidWlsZGVyLT5DcmVhdGVDYWxsKGNhc3Q8bGx2bTo6RnVuY3Rpb24+KG1vZHVsZS0+Z2V0 T3JJbnNlcnRGdW5jdGlvbigKLSsjZW5kaWYKLSAgICAgICAgICAgICAiX19nZW5fb2NsX3N0b3Jl X3Byb2ZpbGluZyIsIFR5cGU6OmdldFZvaWRUeShtb2R1bGUtPmdldENvbnRleHQoKSksCi0gICAg ICAgICAgICAgcHRyVHksCi0rI2lmIExMVk1fVkVSU0lPTl9NQUpPUiAqIDEwICsgTExWTV9WRVJT SU9OX01JTk9SID49IDkwCi0rICAgICAgICAgICAgSW50ZWdlclR5cGU6OmdldEludDMyVHkobW9k dWxlLT5nZXRDb250ZXh0KCkpKSwKLSsjZWxzZQotICAgICAgICAgICAgIEludGVnZXJUeXBlOjpn ZXRJbnQzMlR5KG1vZHVsZS0+Z2V0Q29udGV4dCgpKSkpLAotKyNlbmRpZgotICAgICAgICAgICAg IEFycmF5UmVmPFZhbHVlKj4oQXJnczIpKTsKLSAjZWxzZQotICAgICBidWlsZGVyLT5DcmVhdGVD YWxsKGNhc3Q8bGx2bTo6RnVuY3Rpb24+KG1vZHVsZS0+Z2V0T3JJbnNlcnRGdW5jdGlvbigKLS0t LSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9kZXZpY2VfZW5xdWV1ZS5jcHAJMjAxNy0xMC0yNCAw NjowNDo0OCBVVEMKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9kZXZpY2VfZW5xdWV1ZS5j cHAKLUBAIC0zOTgsOCArMzk4LDEzIEBAIG5hbWVzcGFjZSBnYmUgewotICAgICAgICAgICAgICAg c3RkOjp2ZWN0b3I8VHlwZSAqPiBQYXJhbVR5czsKLSAgICAgICAgICAgICAgIGZvciAoVmFsdWUq KiBpdGVyID0gYXJncy5iZWdpbigpOyBpdGVyICE9IGFyZ3MuZW5kKCk7ICsraXRlcikKLSAgICAg ICAgICAgICAgICAgUGFyYW1UeXMucHVzaF9iYWNrKCgqaXRlciktPmdldFR5cGUoKSk7Ci0rI2lm IExMVk1fVkVSU0lPTl9NQUpPUiAqIDEwICsgTExWTV9WRVJTSU9OX01JTk9SID49IDkwCi0rICAg ICAgICAgICAgICBDYWxsSW5zdCogbmV3Q0kgPSBidWlsZGVyLkNyZWF0ZUNhbGwobW9kLT5nZXRP ckluc2VydEZ1bmN0aW9uKAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX2dlbl9l bnF1ZXVlX2tlcm5lbF9zbG0iLCBGdW5jdGlvblR5cGU6OmdldChpbnRUeSwgUGFyYW1UeXMsIGZh bHNlKSksIGFyZ3MpOwotKyNlbHNlCi0gICAgICAgICAgICAgICBDYWxsSW5zdCogbmV3Q0kgPSBi dWlsZGVyLkNyZWF0ZUNhbGwoY2FzdDxsbHZtOjpGdW5jdGlvbj4obW9kLT5nZXRPckluc2VydEZ1 bmN0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX2dlbl9lbnF1ZXVlX2tl cm5lbF9zbG0iLCBGdW5jdGlvblR5cGU6OmdldChpbnRUeSwgUGFyYW1UeXMsIGZhbHNlKSkpLCBh cmdzKTsKLSsjZW5kaWYKLSAgICAgICAgICAgICAgIENJLT5yZXBsYWNlQWxsVXNlc1dpdGgobmV3 Q0kpOwotICAgICAgICAgICAgICAgZGVhZEluc25TZXQuaW5zZXJ0KENJKTsKLSAgICAgICAgICAg ICB9CmRpZmYgLS1naXQgYS9zcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMTAucGF0Y2ggYi9z cmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMTAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDhhYWZlNDhhMjQwZC4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmVpZ25l dC9wYXRjaGVzL2xsdm0xMC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0NyArMCwwIEBACi1k aWZmIC0tZ2l0IENNYWtlL0ZpbmRMTFZNLmNtYWtlIENNYWtlL0ZpbmRMTFZNLmNtYWtlCi1pbmRl eCAwYTU5ZTQ3Li42ZTkwOTIzIDEwMDY0NAotLS0tIGEvQ01ha2UvRmluZExMVk0uY21ha2UKLSsr KyBiL0NNYWtlL0ZpbmRMTFZNLmNtYWtlCi1AQCAtMTA0LDI4ICsxMDQsMTYgQEAgc3RyaW5nKFJF R0VYIFJFUExBQ0UgIiAqXG4iICIiIExMVk1fU1lTVEVNX0xJQlMgJHtMTFZNX1NZU1RFTV9MSUJT X09SSUd9KQotIGVuZGlmIChMTFZNX1NZU1RFTV9MSUJTX09SSUcpCi0gZW5kaWYgKExMVk1fVkVS U0lPTl9OT0RPVCBWRVJTSU9OX0dSRUFURVIgMzQpCi0gCi0rI3NvbWV0aGluZyBoYXJtbGVzcyBi ZWNhdXNlIHdoaXRlc3BhY2UgYXQgc3RhcnQgaXMgYW4gZXJyb3IKLStzZXQoQ0xBTkdfTElCUkFS SUVTICItbGRsIikKLSBtYWNybyhhZGRfb25lX2xpYiBuYW1lKQotICAgRklORF9MSUJSQVJZKENM QU5HX0xJQgotICAgICBOQU1FUyAke25hbWV9Ci0gICAgIFBBVEhTICR7TExWTV9MSUJSQVJZX0RJ Un0gTk9fREVGQVVMVF9QQVRIKQotLSAgc2V0KENMQU5HX0xJQlJBUklFUyAke0NMQU5HX0xJQlJB UklFU30gJHtDTEFOR19MSUJ9KQotKyAgc2V0KENMQU5HX0xJQlJBUklFUyAiJHtDTEFOR19MSUJS QVJJRVN9ICR7Q0xBTkdfTElCfSIpCi0rICBtZXNzYWdlKFNUQVRVUyAiY2xhbmdsaWJzIG5hbWUg JHtuYW1lfSB0aGlzICR7Q0xBTkdfTElCfSBhbGwgJHtDTEFOR19MSUJSQVJJRVN9ICIpCi0gCXVu c2V0KENMQU5HX0xJQiBDQUNIRSkKLSBlbmRtYWNybygpCi0gCi0gI0Fzc3VtZSBjbGFuZyBsaWIg cGF0aCBzYW1lIGFzIGxsdm0gbGliIHBhdGgKLS1hZGRfb25lX2xpYigiY2xhbmdDb2RlR2VuIikK LS1hZGRfb25lX2xpYigiY2xhbmdGcm9udGVuZCIpCi0tYWRkX29uZV9saWIoImNsYW5nU2VyaWFs aXphdGlvbiIpCi0tYWRkX29uZV9saWIoImNsYW5nRHJpdmVyIikKLS1hZGRfb25lX2xpYigiY2xh bmdTZW1hIikKLS1hZGRfb25lX2xpYigiY2xhbmdTdGF0aWNBbmFseXplckZyb250ZW5kIikKLS1h ZGRfb25lX2xpYigiY2xhbmdTdGF0aWNBbmFseXplckNoZWNrZXJzIikKLS1hZGRfb25lX2xpYigi Y2xhbmdTdGF0aWNBbmFseXplckNvcmUiKQotLWFkZF9vbmVfbGliKCJjbGFuZ0FuYWx5c2lzIikK LS1hZGRfb25lX2xpYigiY2xhbmdFZGl0IikKLS1hZGRfb25lX2xpYigiY2xhbmdBU1QiKQotLWFk ZF9vbmVfbGliKCJjbGFuZ0FTVE1hdGNoZXJzIikKLS1hZGRfb25lX2xpYigiY2xhbmdQYXJzZSIp Ci0tYWRkX29uZV9saWIoImNsYW5nU2VtYSIpCi0tYWRkX29uZV9saWIoImNsYW5nTGV4IikKLS1h ZGRfb25lX2xpYigiY2xhbmdCYXNpYyIpCi0rYWRkX29uZV9saWIoImNsYW5nLWNwcCIpCi1kaWZm IC0tZ2l0IENNYWtlTGlzdHMudHh0IENNYWtlTGlzdHMudHh0Ci1pbmRleCBjMTFhY2JiLi4wOGY0 MjdkIDEwMDY0NAotLS0tIGEvQ01ha2VMaXN0cy50eHQKLSsrKyBiL0NNYWtlTGlzdHMudHh0Ci1A QCAtNzksNyArNzksNyBAQCBlbHNlaWYgKENPTVBJTEVSIFNUUkVRVUFMICJDTEFORyIpCi0gZWxz ZWlmIChDT01QSUxFUiBTVFJFUVVBTCAiSUNDIikKLSAgIHNldCAoQ01BS0VfQ19DWFhfRkxBR1Mg IiR7Q01BS0VfQ19DWFhfRkxBR1N9ICAtd2QyOTI4IC1XYWxsIC1mUElDIC1mc3RyaWN0LWFsaWFz aW5nIC1mcC1tb2RlbCBmYXN0IC1tc3NlNC4xIC1XbCwtRSIpCi0gZW5kaWYgKCkKLS1zZXQgKENN QUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9ICR7Q01BS0VfQ19DWFhfRkxBR1N9IC1z dGQ9YysrMHggLVduby1pbnZhbGlkLW9mZnNldG9mIikKLStzZXQgKENNQUtFX0NYWF9GTEFHUyAi JHtDTUFLRV9DWFhfRkxBR1N9ICR7Q01BS0VfQ19DWFhfRkxBR1N9IC1Xbm8taW52YWxpZC1vZmZz ZXRvZiIpCi0gc2V0IChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9ICR7Q01BS0VfQ19D WFhfRkxBR1N9IikKLSBzZXQgKENNQUtFX0NYWF9GTEFHU19ERUJVRyAgICAgICAgICAiLU8wIC1n IC1ER0JFX0RFQlVHPTEiKQotIHNldCAoQ01BS0VfQ1hYX0ZMQUdTX1JFTFdJVEhERUJJTkZPICIt TzIgLWcgLURHQkVfREVCVUc9MSIpCi1kaWZmIC0tZ2l0IGJhY2tlbmQvc3JjL2JhY2tlbmQvcHJv Z3JhbS5jcHAgYmFja2VuZC9zcmMvYmFja2VuZC9wcm9ncmFtLmNwcAotaW5kZXggYjM2ZjdiNC4u ZTY2NjAzMSAxMDA2NDQKLS0tLSBhL2JhY2tlbmQvc3JjL2JhY2tlbmQvcHJvZ3JhbS5jcHAKLSsr KyBiL2JhY2tlbmQvc3JjL2JhY2tlbmQvcHJvZ3JhbS5jcHAKLUBAIC02OTQsOSArNjk0LDkgQEAg bmFtZXNwYWNlIGdiZSB7Ci0gI2VuZGlmCi0gICAgICAgICAgICAgICAgICk7Ci0gCi0rICAgIGxs dm06OmNsOjpSZXNldEFsbE9wdGlvbk9jY3VycmVuY2VzKCk7Ci0gICAgIGNsYW5nOjpDb21waWxl ckludm9jYXRpb246OkNyZWF0ZUZyb21BcmdzKCpDSSwKLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJmFyZ3NbMF0sCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZhcmdzWzBdICsgYXJncy5zaXplKCksCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYW5nOjpBcnJheVJlZjxj b25zdCBjaGFyKj4oYXJncyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIERpYWdzKTsKLSAgICAgLy8gQ3JlYXRlIHRoZSBjb21waWxlciBpbnN0YW5jZQot ICAgICBjbGFuZzo6Q29tcGlsZXJJbnN0YW5jZSBDbGFuZzsKLUBAIC0xMjQyLDggKzEyNDIsNyBA QCBFWFRFTkRfUVVPVEU6Ci0gICAgICAgLy8gQ3JlYXRlIHRoZSBjb21waWxlciBpbnZvY2F0aW9u Ci0gICAgICAgc3RkOjp1bmlxdWVfcHRyPGNsYW5nOjpDb21waWxlckludm9jYXRpb24+IENJKG5l dyBjbGFuZzo6Q29tcGlsZXJJbnZvY2F0aW9uKTsKLSAgICAgICByZXR1cm4gY2xhbmc6OkNvbXBp bGVySW52b2NhdGlvbjo6Q3JlYXRlRnJvbUFyZ3MoKkNJLAotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYXJnc1swXSwKLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFyZ3NbMF0gKyBh cmdzLnNpemUoKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY2xhbmc6OkFycmF5UmVmPGNvbnN0IGNoYXIqPihhcmdzKSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlhZ3MpOwot ICAgICB9Ci0gI2VuZGlmCi1kaWZmIC0tZ2l0IGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9nZW5fYmFj a2VuZC5jcHAgYmFja2VuZC9zcmMvbGx2bS9sbHZtX2dlbl9iYWNrZW5kLmNwcAotaW5kZXggYzZm YzMwZC4uODI0NDFkOCAxMDA2NDQKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9nZW5fYmFj a2VuZC5jcHAKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9nZW5fYmFja2VuZC5jcHAKLUBA IC01NzUsMTAgKzU3NSwxMiBAQCBuYW1lc3BhY2UgZ2JlCi0gICAgICAgICBoYXNfZXJyb3JzKGZh bHNlKSwKLSAgICAgICAgIGxlZ2FjeU1vZGUodHJ1ZSkKLSAgICAgewotKyNpZiBMTFZNX1ZFUlNJ T05fTUFKT1IgPCAxMAotICNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lP Tl9NSU5PUiA+PSAzNwotICAgICAgIGluaXRpYWxpemVMb29wSW5mb1dyYXBwZXJQYXNzUGFzcygq UGFzc1JlZ2lzdHJ5OjpnZXRQYXNzUmVnaXN0cnkoKSk7Ci0gI2Vsc2UKLSAgICAgICBpbml0aWFs aXplTG9vcEluZm9QYXNzKCpQYXNzUmVnaXN0cnk6OmdldFBhc3NSZWdpc3RyeSgpKTsKLSsjZW5k aWYKLSAjZW5kaWYKLSAgICAgICBwYXNzID0gUEFTU19FTUlUX1JFR0lTVEVSUzsKLSAgICAgfQot ZGlmZiAtLWdpdCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1fZ2VuX2JhY2tlbmQuaHBwIGJhY2tlbmQv c3JjL2xsdm0vbGx2bV9nZW5fYmFja2VuZC5ocHAKLWluZGV4IGI0NzE1YjEuLjhlNzRmN2EgMTAw NjQ0Ci0tLS0gYS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fZ2VuX2JhY2tlbmQuaHBwCi0rKysgYi9i YWNrZW5kL3NyYy9sbHZtL2xsdm1fZ2VuX2JhY2tlbmQuaHBwCi1AQCAtMTMwLDEwICsxMzAsMTAg QEAgbmFtZXNwYWNlIGdiZQotICAgbGx2bTo6RnVuY3Rpb25QYXNzICpjcmVhdGVHZW5QYXNzKGly OjpVbml0ICZ1bml0KTsKLSAKLSAgIC8qISBSZW1vdmUgdGhlIEdFUCBpbnN0cnVjdGlvbnMgKi8K LS0gIGxsdm06OkJhc2ljQmxvY2tQYXNzICpjcmVhdGVSZW1vdmVHRVBQYXNzKGNvbnN0IGlyOjpV bml0ICZ1bml0KTsKLSsgIGxsdm06OkZ1bmN0aW9uUGFzcyAqY3JlYXRlUmVtb3ZlR0VQUGFzcyhj b25zdCBpcjo6VW5pdCAmdW5pdCk7Ci0gCi0gICAvKiEgTWVyZ2UgbG9hZC9zdG9yZSBpZiBwb3Nz aWJsZSAqLwotLSAgbGx2bTo6QmFzaWNCbG9ja1Bhc3MgKmNyZWF0ZUxvYWRTdG9yZU9wdGltaXph dGlvblBhc3MoKTsKLSsgIGxsdm06OkZ1bmN0aW9uUGFzcyAqY3JlYXRlTG9hZFN0b3JlT3B0aW1p emF0aW9uUGFzcygpOwotIAotICAgLyohIFNjYWxhcml6ZSBhbGwgdmVjdG9yIG9wIGluc3RydWN0 aW9ucyAqLwotICAgbGx2bTo6RnVuY3Rpb25QYXNzKiBjcmVhdGVTY2FsYXJpemVQYXNzKCk7Ci1A QCAtMTQxLDcgKzE0MSw3IEBAIG5hbWVzcGFjZSBnYmUKLSAgIGxsdm06Ok1vZHVsZVBhc3MqIGNy ZWF0ZUJhcnJpZXJOb2R1cFBhc3MoYm9vbCk7Ci0gCi0gICAvKiEgQ29udmVydCB0aGUgSW50cmlu c2ljIGNhbGwgdG8gZ2VuIGZ1bmN0aW9uICovCi0tICBsbHZtOjpCYXNpY0Jsb2NrUGFzcyAqY3Jl YXRlSW50cmluc2ljTG93ZXJpbmdQYXNzKCk7Ci0rICBsbHZtOjpGdW5jdGlvblBhc3MgKmNyZWF0 ZUludHJpbnNpY0xvd2VyaW5nUGFzcygpOwotIAotICAgLyohIFBhc3NlciB0aGUgcHJpbnRmIGZ1 bmN0aW9uIGNhbGwuICovCi0gICBsbHZtOjpGdW5jdGlvblBhc3MqIGNyZWF0ZVByaW50ZlBhcnNl clBhc3MoaXI6OlVuaXQgJnVuaXQpOwotZGlmZiAtLWdpdCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1f aW50cmluc2ljX2xvd2VyaW5nLmNwcCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1faW50cmluc2ljX2xv d2VyaW5nLmNwcAotaW5kZXggOTRmMGNlNi4uYjU1MzllOSAxMDA2NDQKLS0tLSBhL2JhY2tlbmQv c3JjL2xsdm0vbGx2bV9pbnRyaW5zaWNfbG93ZXJpbmcuY3BwCi0rKysgYi9iYWNrZW5kL3NyYy9s bHZtL2xsdm1faW50cmluc2ljX2xvd2VyaW5nLmNwcAotQEAgLTI5LDEyICsyOSwxMiBAQAotIHVz aW5nIG5hbWVzcGFjZSBsbHZtOwotIAotIG5hbWVzcGFjZSBnYmUgewotLSAgICBjbGFzcyBJbnN0 cmluc2ljTG93ZXJpbmcgOiBwdWJsaWMgQmFzaWNCbG9ja1Bhc3MKLSsgICAgY2xhc3MgSW5zdHJp bnNpY0xvd2VyaW5nIDogcHVibGljIEZ1bmN0aW9uUGFzcwotICAgICB7Ci0gICAgIHB1YmxpYzoK LSAgICAgICBzdGF0aWMgY2hhciBJRDsKLSAgICAgICBJbnN0cmluc2ljTG93ZXJpbmcoKSA6Ci0t ICAgICAgICBCYXNpY0Jsb2NrUGFzcyhJRCkge30KLSsgICAgICAgIEZ1bmN0aW9uUGFzcyhJRCkg e30KLSAKLSAgICAgICB2b2lkIGdldEFuYWx5c2lzVXNhZ2UoQW5hbHlzaXNVc2FnZSAmQVUpIGNv bnN0IHsKLSAKLUBAIC05Myw5ICs5Myw5IEBAIG5hbWVzcGFjZSBnYmUgewotICAgICAgICAgQ0kt PmVyYXNlRnJvbVBhcmVudCgpOwotICAgICAgICAgcmV0dXJuIE5ld0NJOwotICAgICAgIH0KLS0g ICAgICB2aXJ0dWFsIGJvb2wgcnVuT25CYXNpY0Jsb2NrKEJhc2ljQmxvY2sgJkJCKQotKyAgICAg IHZpcnR1YWwgYm9vbCBydW5PbkZ1bmN0aW9uKEZ1bmN0aW9uICZGKQotICAgICAgIHsKLS0gICAg ICAgIGJvb2wgY2hhbmdlZEJsb2NrID0gZmFsc2U7Ci0rICAgICAgICBmb3IgKEJhc2ljQmxvY2sg JkJCIDogRikgewotICAgICAgICAgTW9kdWxlICpNID0gQkIuZ2V0UGFyZW50KCktPmdldFBhcmVu dCgpOwotIAotICAgICAgICAgRGF0YUxheW91dCBURChNKTsKLUBAIC0xNTksMTMgKzE1OSwxNCBA QCBuYW1lc3BhY2UgZ2JlIHsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIH0KLSAgICAgICAg IH0KLS0gICAgICAgIHJldHVybiBjaGFuZ2VkQmxvY2s7Ci0rICAgICAgICB9Ci0rICAgICAgICBy ZXR1cm4gdHJ1ZTsKLSAgICAgICB9Ci0gICAgIH07Ci0gCi0gICAgIGNoYXIgSW5zdHJpbnNpY0xv d2VyaW5nOjpJRCA9IDA7Ci0gCi0tICAgIEJhc2ljQmxvY2tQYXNzICpjcmVhdGVJbnRyaW5zaWNM b3dlcmluZ1Bhc3MoKSB7Ci0rICAgIEZ1bmN0aW9uUGFzcyAqY3JlYXRlSW50cmluc2ljTG93ZXJp bmdQYXNzKCkgewotICAgICAgIHJldHVybiBuZXcgSW5zdHJpbnNpY0xvd2VyaW5nKCk7Ci0gICAg IH0KLSB9IC8vIGVuZCBuYW1lc3BhY2UKLWRpZmYgLS1naXQgYmFja2VuZC9zcmMvbGx2bS9sbHZt X2xvYWRzdG9yZV9vcHRpbWl6YXRpb24uY3BwIGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9sb2Fkc3Rv cmVfb3B0aW1pemF0aW9uLmNwcAotaW5kZXggNWFhMzhiZS4uZTMxNDMwMiAxMDA2NDQKLS0tLSBh L2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9sb2Fkc3RvcmVfb3B0aW1pemF0aW9uLmNwcAotKysrIGIv YmFja2VuZC9zcmMvbGx2bS9sbHZtX2xvYWRzdG9yZV9vcHRpbWl6YXRpb24uY3BwCi1AQCAtMjYs MTMgKzI2LDEzIEBACi0gCi0gdXNpbmcgbmFtZXNwYWNlIGxsdm07Ci0gbmFtZXNwYWNlIGdiZSB7 Ci0tICBjbGFzcyBHZW5Mb2FkU3RvcmVPcHRpbWl6YXRpb24gOiBwdWJsaWMgQmFzaWNCbG9ja1Bh c3MgewotKyAgY2xhc3MgR2VuTG9hZFN0b3JlT3B0aW1pemF0aW9uIDogcHVibGljIEZ1bmN0aW9u UGFzcyB7Ci0gCi0gICBwdWJsaWM6Ci0gICAgIHN0YXRpYyBjaGFyIElEOwotICAgICBTY2FsYXJF dm9sdXRpb24gKlNFOwotICAgICBjb25zdCBEYXRhTGF5b3V0ICpURDsKLS0gICAgR2VuTG9hZFN0 b3JlT3B0aW1pemF0aW9uKCkgOiBCYXNpY0Jsb2NrUGFzcyhJRCkge30KLSsgICAgR2VuTG9hZFN0 b3JlT3B0aW1pemF0aW9uKCkgOiBGdW5jdGlvblBhc3MoSUQpIHt9Ci0gCi0gICAgIHZvaWQgZ2V0 QW5hbHlzaXNVc2FnZShBbmFseXNpc1VzYWdlICZBVSkgY29uc3QgewotICNpZiBMTFZNX1ZFUlNJ T05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSAzOAotQEAgLTQ1LDcgKzQ1LDkg QEAgbmFtZXNwYWNlIGdiZSB7Ci0gICAgICAgQVUuc2V0UHJlc2VydmVzQ0ZHKCk7Ci0gICAgIH0K LSAKLS0gICAgdmlydHVhbCBib29sIHJ1bk9uQmFzaWNCbG9jayhCYXNpY0Jsb2NrICZCQikgewot KyAgICB2aXJ0dWFsIGJvb2wgcnVuT25GdW5jdGlvbihGdW5jdGlvbiAmRikgewotKyAgICAgICAg Ym9vbCBjaGFuZ2VkQW55QmxvY2sgPSBmYWxzZTsKLSsgICAgICAgIGZvciAoQmFzaWNCbG9jayAm QkIgOiBGKSB7Ci0gI2lmIExMVk1fVkVSU0lPTl9NQUpPUiAqIDEwICsgTExWTV9WRVJTSU9OX01J Tk9SID49IDM4Ci0gICAgICAgU0UgPSAmZ2V0QW5hbHlzaXM8U2NhbGFyRXZvbHV0aW9uV3JhcHBl clBhc3M+KCkuZ2V0U0UoKTsKLSAjZWxzZQotQEAgLTU5LDcgKzYxLDkgQEAgbmFtZXNwYWNlIGdi ZSB7Ci0gICAgICAgI2Vsc2UKLSAgICAgICAgIFREID0gZ2V0QW5hbHlzaXNJZkF2YWlsYWJsZTxE YXRhTGF5b3V0PigpOwotICAgICAgICNlbmRpZgotLSAgICAgIHJldHVybiBvcHRpbWl6ZUxvYWRT dG9yZShCQik7Ci0rICAgICAgICAgICBjaGFuZ2VkQW55QmxvY2sgPSBvcHRpbWl6ZUxvYWRTdG9y ZShCQikgfCBjaGFuZ2VkQW55QmxvY2s7Ci0rICAgICAgICB9Ci0rICAgICAgICByZXR1cm4gY2hh bmdlZEFueUJsb2NrOwotICAgICB9Ci0gICAgIFR5cGUgICAgKmdldFZhbHVlVHlwZShWYWx1ZSAq aW5zbik7Ci0gICAgIFZhbHVlICAgKmdldFBvaW50ZXJPcGVyYW5kKFZhbHVlICpJKTsKLUBAIC0x NDgsNyArMTUyLDcgQEAgbmFtZXNwYWNlIGdiZSB7Ci0gICAgICAgdmFsdWVzLnB1c2hfYmFjayht ZXJnZWRbaV0pOwotICAgICB9Ci0gICAgIExvYWRJbnN0ICpsZCA9IGNhc3Q8TG9hZEluc3Q+KG1l cmdlZFswXSk7Ci0tICAgIHVuc2lnbmVkIGFsaWduID0gbGQtPmdldEFsaWdubWVudCgpOwotKyAg ICBNYXliZUFsaWduIGFsaWduID0gbGQtPmdldEFsaWduKCk7Ci0gICAgIHVuc2lnbmVkIGFkZHJT cGFjZSA9IGxkLT5nZXRQb2ludGVyQWRkcmVzc1NwYWNlKCk7Ci0gICAgIC8vIGluc2VydCBiZWZv cmUgZmlyc3QgbG9hZAotICAgICBCdWlsZGVyLlNldEluc2VydFBvaW50KGxkKTsKLUBAIC0yMzEs NyArMjM1LDcgQEAgbmFtZXNwYWNlIGdiZSB7Ci0gCi0gICAgIHVuc2lnbmVkIGFkZHJTcGFjZSA9 IHN0LT5nZXRQb2ludGVyQWRkcmVzc1NwYWNlKCk7Ci0gCi0tICAgIHVuc2lnbmVkIGFsaWduID0g c3QtPmdldEFsaWdubWVudCgpOwotKyAgICBNYXliZUFsaWduIGFsaWduID0gc3QtPmdldEFsaWdu KCk7Ci0gICAgIC8vIGluc2VydCBiZWZvcmUgdGhlIGxhc3Qgc3RvcmUKLSAgICAgQnVpbGRlci5T ZXRJbnNlcnRQb2ludChtZXJnZWRbc2l6ZS0xXSk7Ci0gCi1AQCAtMzI1LDcgKzMyOSw3IEBAIG5h bWVzcGFjZSBnYmUgewotICAgICByZXR1cm4gY2hhbmdlZDsKLSAgIH0KLSAKLS0gIEJhc2ljQmxv Y2tQYXNzICpjcmVhdGVMb2FkU3RvcmVPcHRpbWl6YXRpb25QYXNzKCkgewotKyAgRnVuY3Rpb25Q YXNzICpjcmVhdGVMb2FkU3RvcmVPcHRpbWl6YXRpb25QYXNzKCkgewotICAgICByZXR1cm4gbmV3 IEdlbkxvYWRTdG9yZU9wdGltaXphdGlvbigpOwotICAgfQotIH07Ci1kaWZmIC0tZ2l0IGJhY2tl bmQvc3JjL2xsdm0vbGx2bV9wYXNzZXMuY3BwIGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9wYXNzZXMu Y3BwCi1pbmRleCAxMDc1MmEzLi5iOGYyMjgyIDEwMDY0NAotLS0tIGEvYmFja2VuZC9zcmMvbGx2 bS9sbHZtX3Bhc3Nlcy5jcHAKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9wYXNzZXMuY3Bw Ci1AQCAtMzcsNyArMzcsNyBAQAotICNpbmNsdWRlICJzeXMvbWFwLmhwcCIKLSAKLSB1c2luZyBu YW1lc3BhY2UgbGx2bTsKLS0KLSt0ZW1wbGF0ZSBjbGFzcyBjZmc6OlVwZGF0ZTxCYXNpY0Jsb2Nr ICo+OwotIG5hbWVzcGFjZSBnYmUKLSB7Ci0gICBib29sIGlzS2VybmVsRnVuY3Rpb24oY29uc3Qg bGx2bTo6RnVuY3Rpb24gJkYpIHsKLUBAIC0yMTksMTMgKzIxOSwxMyBAQCBuYW1lc3BhY2UgZ2Jl Ci0gICAgIHJldHVybiBvZmZzZXQ7Ci0gICB9Ci0gCi0tICBjbGFzcyBHZW5SZW1vdmVHRVBQYXNz cyA6IHB1YmxpYyBCYXNpY0Jsb2NrUGFzcwotKyAgY2xhc3MgR2VuUmVtb3ZlR0VQUGFzc3MgOiBw dWJsaWMgRnVuY3Rpb25QYXNzCi0gICB7Ci0gCi0gICAgcHVibGljOgotICAgICBzdGF0aWMgY2hh ciBJRDsKLSAgICAgR2VuUmVtb3ZlR0VQUGFzc3MoY29uc3QgaXI6OlVuaXQgJnVuaXQpIDoKLS0g ICAgICBCYXNpY0Jsb2NrUGFzcyhJRCksCi0rICAgICAgRnVuY3Rpb25QYXNzKElEKSwKLSAgICAg ICB1bml0KHVuaXQpIHt9Ci0gICAgIGNvbnN0IGlyOjpVbml0ICZ1bml0OwotICAgICB2b2lkIGdl dEFuYWx5c2lzVXNhZ2UoQW5hbHlzaXNVc2FnZSAmQVUpIGNvbnN0IHsKLUBAIC0yNDIsMTYgKzI0 MiwxOCBAQCBuYW1lc3BhY2UgZ2JlCi0gCi0gICAgIGJvb2wgc2ltcGxpZnlHRVBJbnN0cnVjdGlv bnMoR2V0RWxlbWVudFB0ckluc3QqIEdFUEluc3QpOwotIAotLSAgICB2aXJ0dWFsIGJvb2wgcnVu T25CYXNpY0Jsb2NrKEJhc2ljQmxvY2sgJkJCKQotKyAgICB2aXJ0dWFsIGJvb2wgcnVuT25GdW5j dGlvbihGdW5jdGlvbiAmRikKLSAgICAgewotLSAgICAgIGJvb2wgY2hhbmdlZEJsb2NrID0gZmFs c2U7Ci0rICAgICAgYm9vbCBjaGFuZ2VkQW55QmxvY2sgPSBmYWxzZTsKLSsgICAgICAgIGZvciAo QmFzaWNCbG9jayAmQkIgOiBGKSB7Ci0gICAgICAgaXBsaXN0PEluc3RydWN0aW9uPjo6aXRlcmF0 b3IgSSA9IEJCLmdldEluc3RMaXN0KCkuYmVnaW4oKTsKLSAgICAgICBmb3IgKGF1dG8gbmV4dEkg PSBJLCBFID0gLS1CQi5nZXRJbnN0TGlzdCgpLmVuZCgpOyBJICE9IEU7IEkgPSBuZXh0SSkgewot ICAgICAgICAgaXBsaXN0PEluc3RydWN0aW9uPjo6aXRlcmF0b3IgSSA9IG5leHRJKys7Ci0gICAg ICAgICBpZihHZXRFbGVtZW50UHRySW5zdCogZ2VwID0gZHluX2Nhc3Q8R2V0RWxlbWVudFB0cklu c3Q+KCYqSSkpCi0tICAgICAgICAgIGNoYW5nZWRCbG9jayA9IChzaW1wbGlmeUdFUEluc3RydWN0 aW9ucyhnZXApIHx8IGNoYW5nZWRCbG9jayk7Ci0rICAgICAgICAgIGNoYW5nZWRBbnlCbG9jayA9 IChzaW1wbGlmeUdFUEluc3RydWN0aW9ucyhnZXApIHwgY2hhbmdlZEFueUJsb2NrKTsKLSAgICAg ICB9Ci0tICAgICAgcmV0dXJuIGNoYW5nZWRCbG9jazsKLSsgICAgICAgIH0KLSsgICAgICByZXR1 cm4gY2hhbmdlZEFueUJsb2NrOwotICAgICB9Ci0gICB9OwotIAotQEAgLTM2Nyw3ICszNjksNyBA QCBuYW1lc3BhY2UgZ2JlCi0gICAgIHJldHVybiB0cnVlOwotICAgfQotIAotLSAgQmFzaWNCbG9j a1Bhc3MgKmNyZWF0ZVJlbW92ZUdFUFBhc3MoY29uc3QgaXI6OlVuaXQgJnVuaXQpIHsKLSsgIEZ1 bmN0aW9uUGFzcyAqY3JlYXRlUmVtb3ZlR0VQUGFzcyhjb25zdCBpcjo6VW5pdCAmdW5pdCkgewot ICAgICByZXR1cm4gbmV3IEdlblJlbW92ZUdFUFBhc3NzKHVuaXQpOwotICAgfQotIH0gLyogbmFt ZXNwYWNlIGdiZSAqLwotZGlmZiAtLWdpdCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1fc2FtcGxlcl9m aXguY3BwIGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9zYW1wbGVyX2ZpeC5jcHAKLWluZGV4IDJhMDk3 YzguLjg2M2JlNmQgMTAwNjQ0Ci0tLS0gYS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fc2FtcGxlcl9m aXguY3BwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fc2FtcGxlcl9maXguY3BwCi1AQCAt MzMsMTAgKzMzLDEyIEBAIG5hbWVzcGFjZSBnYmUgewotICAgY2xhc3MgU2FtcGxlckZpeCA6IHB1 YmxpYyBGdW5jdGlvblBhc3MgewotICAgcHVibGljOgotICAgICBTYW1wbGVyRml4KCkgOiBGdW5j dGlvblBhc3MoSUQpIHsKLSsjaWYgTExWTV9WRVJTSU9OX01BSk9SIDwgMTAKLSAjaWYgTExWTV9W RVJTSU9OX01BSk9SICogMTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gMzUKLSAgICAgICBpbml0 aWFsaXplRG9taW5hdG9yVHJlZVdyYXBwZXJQYXNzUGFzcygqUGFzc1JlZ2lzdHJ5OjpnZXRQYXNz UmVnaXN0cnkoKSk7Ci0gI2Vsc2UKLSAgICAgICBpbml0aWFsaXplRG9taW5hdG9yVHJlZVBhc3Mo KlBhc3NSZWdpc3RyeTo6Z2V0UGFzc1JlZ2lzdHJ5KCkpOwotKyNlbmRpZgotICNlbmRpZgotICAg ICB9Ci0gCi1kaWZmIC0tZ2l0IGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9zY2FsYXJpemUuY3BwIGJh Y2tlbmQvc3JjL2xsdm0vbGx2bV9zY2FsYXJpemUuY3BwCi1pbmRleCBlOWEyYTY2Li5lOWQyZWU0 IDEwMDY0NAotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX3NjYWxhcml6ZS5jcHAKLSsrKyBi L2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9zY2FsYXJpemUuY3BwCi1AQCAtOTYsMTAgKzk2LDEyIEBA IG5hbWVzcGFjZSBnYmUgewotIAotICAgICBTY2FsYXJpemUoKSA6IEZ1bmN0aW9uUGFzcyhJRCkK LSAgICAgewotKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgPCAxMAotICNpZiBMTFZNX1ZFUlNJT05f TUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSAzNQotICAgICAgIGluaXRpYWxpemVE b21pbmF0b3JUcmVlV3JhcHBlclBhc3NQYXNzKCpQYXNzUmVnaXN0cnk6OmdldFBhc3NSZWdpc3Ry eSgpKTsKLSAjZWxzZQotICAgICAgIGluaXRpYWxpemVEb21pbmF0b3JUcmVlUGFzcygqUGFzc1Jl Z2lzdHJ5OjpnZXRQYXNzUmVnaXN0cnkoKSk7Ci0rI2VuZGlmCi0gI2VuZGlmCi0gICAgIH0KLSAK LWRpZmYgLS1naXQgdXRlc3RzL0NNYWtlTGlzdHMudHh0IHV0ZXN0cy9DTWFrZUxpc3RzLnR4dAot aW5kZXggMzAwZDg3YS4uNjQxNzljNyAxMDA2NDQKLS0tLSBhL3V0ZXN0cy9DTWFrZUxpc3RzLnR4 dAotKysrIGIvdXRlc3RzL0NNYWtlTGlzdHMudHh0Ci1AQCAtMjYsOCArMjYsOCBAQCBpZiAoTk9U IE5PVF9CVUlMRF9TVEFORF9BTE9ORV9VVEVTVCkKLSAgICMgVGhyZWFkcwotICAgRmluZF9QYWNr YWdlKFRocmVhZHMpCi0gCi0tICBzZXQgKENNQUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxB R1N9ICR7Q01BS0VfQ19DWFhfRkxBR1N9IC1zdGQ9YysrMHggLVduby1pbnZhbGlkLW9mZnNldG9m IikKLS0gIHNldCAoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAke0NNQUtFX0NfQ1hY X0ZMQUdTfSIpCi0rICBzZXQgKENNQUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9ICR7 Q01BS0VfQ19DWFhfRkxBR1N9IC1Xbm8taW52YWxpZC1vZmZzZXRvZiAtZmZsb2F0LXN0b3JlIC1m bm8tc3RyaWN0LWFsaWFzaW5nIikKLSsgIHNldCAoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZM QUdTfSAke0NNQUtFX0NfQ1hYX0ZMQUdTfSAtZmZsb2F0LXN0b3JlIC1mbm8tc3RyaWN0LWFsaWFz aW5nIikgI2NvbXBpbGVyX3tkZWdyZWVzLHJhZGlhbnMsZnVuY3Rpb25fYXJndW1lbnQyfSB1c2Ug ZXF1YWxpdHkgY29tcGFyaXNvbiBvZiBmbG9hdHMsIGNvbXBpbGVyX2xvbmdfYml0Y2FzdCB1c2Vz IGFsaWFzaW5nCi0gICBzZXQgKENNQUtFX0NYWF9GTEFHU19ERUJVRyAgICAgICAgICAiLU8wIC1n IC1ER0JFX0RFQlVHPTEiKQotICAgc2V0IChDTUFLRV9DWFhfRkxBR1NfUkVMV0lUSERFQklORk8g Ii1PMiAtZyAtREdCRV9ERUJVRz0xIikKLSAgIHNldCAoQ01BS0VfQ1hYX0ZMQUdTX01JTlNJWkVS RUwgICAgICItT3MgLUROREVCVUcgLURHQkVfREVCVUc9MCIpCmRpZmYgLS1naXQgYS9zcmNwa2dz L2JlaWduZXQvcGF0Y2hlcy9sbHZtMTEucGF0Y2ggYi9zcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9s bHZtMTEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjM2E0Mjc4OTQzYy4u MDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0xMS5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDkzNyArMCwwIEBACi1Tb3VyY2U6IFNuZWt0cm9uCi0KLVRoZXJl IHdlcmUgYSBmZXcgY2hhbmdlcyByZXF1aXJlZCBmb3IgTExWTSAxMToKLSogbGx2bTo6U3RyaW5n UmVmIHJlcXVpcmVzIC5zdHIoKSwgaW1wbGljaXQgY29udmVyc2lvbiB3YXMgcmVtb3ZlZAotKiBs bHZtOjpDYWxsU2l0ZSB3YXMgcmVtb3ZlZCwgYnV0IHRoZSByZXF1aXJlZCBtZXRob2RzIGFyZSBh dmFpbGFibGUgb24gbGx2bTo6Q2FsbEluc3QKLSogVmVjdG9yVHlJRCB3YXMgc3BsaXQgaW50byBG aXhlZFZlY3RvclR5SUQgYW5kIFNjYWxhYmxlVmVjdG9yVHlJRCwgRml4ZWRWZWN0b3JUeUlEIHdh cyB1c2VkCi0qIENhbGxJbnN0OjpnZXRDYWxsZWRWYWx1ZSgpIHdhcyByZW5hbWVkIHRvIENhbGxJ bnN0OjpnZXRDYWxsZWRPcGVyYW5kKCkKLSogSW1wbGljaXQgY29udmVyc2lvbiBmcm9tIE1heWJl QWxpZ24gdG8gQWxpZ24gd2FzIHJlbW92ZWQsIHNvIE1heWJlQWxpZ246OnZhbHVlT3JPbmUgd2Fz IHVzZWQgaW5zdGVhZC4KLQotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9TdHJpcEF0dHJpYnV0ZXMu Y3BwCTIwMjAtMTEtMDkgMTY6NDg6MjAuODIzODY2MTEyICswMTAwCi0rKysgYi9iYWNrZW5kL3Ny Yy9sbHZtL1N0cmlwQXR0cmlidXRlcy5jcHAJMjAyMC0xMS0wOSAxOTowNDoxOS42NDE4OTcxNDEg KzAxMDAKLUBAIC0xMDcsOSArMTA3LDggQEAKLSAgICAgICAgQkIgIT0gRTsgKytCQikgewotICAg ICBmb3IgKEJhc2ljQmxvY2s6Oml0ZXJhdG9yIEluc3QgPSBCQi0+YmVnaW4oKSwgRSA9IEJCLT5l bmQoKTsKLSAgICAgICAgICBJbnN0ICE9IEU7ICsrSW5zdCkgewotLSAgICAgIENhbGxTaXRlIENh bGwoJipJbnN0KTsKLS0gICAgICBpZiAoQ2FsbCkKLS0gICAgICAgIENhbGwuc2V0Q2FsbGluZ0Nv bnYoQ2FsbGluZ0NvbnY6OkMpOwotKyAgICAgIGlmIChDYWxsSW5zdCogY2FsbEluc3QgPSBkeW5f Y2FzdDxDYWxsSW5zdD4oJipJbnN0KSkKLSsgICAgICAgIGNhbGxJbnN0LT5zZXRDYWxsaW5nQ29u dihDYWxsaW5nQ29udjo6Qyk7Ci0gICAgIH0KLSAgIH0KLQotLS0tIGEvYmFja2VuZC9zcmMvbGx2 bS9sbHZtX2JpdGNvZGVfbGluay5jcHAJMjAyMC0xMS0wOSAxNjo0ODoyMC44MjM4NjYxMTIgKzAx MDAKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9iaXRjb2RlX2xpbmsuY3BwCTIwMjAtMTEt MDkgMTc6MDQ6MDkuNjMzNzUzNDI4ICswMTAwCi1AQCAtOTgsNyArOTgsNyBAQAotICAgICAgICAg aWYgKGNhbGxGdW5jICYmIGNhbGxGdW5jLT5nZXRJbnRyaW5zaWNJRCgpICE9IDApCi0gICAgICAg ICAgIGNvbnRpbnVlOwotCi0tICAgICAgICBzdGQ6OnN0cmluZyBmbk5hbWUgPSBjYWxsLT5nZXRD YWxsZWRWYWx1ZSgpLT5zdHJpcFBvaW50ZXJDYXN0cygpLT5nZXROYW1lKCk7Ci0rICAgICAgICBz dGQ6OnN0cmluZyBmbk5hbWUgPSBjYWxsLT5nZXRDYWxsZWRPcGVyYW5kKCktPnN0cmlwUG9pbnRl ckNhc3RzKCktPmdldE5hbWUoKS5zdHIoKTsKLQotICAgICAgICAgaWYgKCFNRlMuaW5zZXJ0KGZu TmFtZSkuc2Vjb25kKSB7Ci0gICAgICAgICAgIGNvbnRpbnVlOwotLS0tIGEvYmFja2VuZC9zcmMv bGx2bS9sbHZtX2RldmljZV9lbnF1ZXVlLmNwcAkyMDIwLTExLTA5IDE2OjQ4OjIwLjgyMzg2NjEx MiArMDEwMAotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2RldmljZV9lbnF1ZXVlLmNwcAky MDIwLTExLTA5IDE5OjAxOjQ5LjIwMTkxNTAwOCArMDEwMAotQEAgLTQ1LDcgKzQ1LDcgQEAKLSAg ICAgICByZXR1cm4gTlVMTDsKLQotICAgICAvKiBUaGlzIGlzIGEgZmFrZSwgdG8gY2hlY2sgdGhl IGZ1bmN0aW9uIGJpdGNhc3QgaXMgZm9yIGJsb2NrIG9yIG5vdCAqLwotLSAgICBzdGQ6OnN0cmlu ZyBmbk5hbWUgPSBGbi0+Z2V0TmFtZSgpOwotKyAgICBzdGQ6OnN0cmluZyBmbk5hbWUgPSBGbi0+ Z2V0TmFtZSgpLnN0cigpOwotICAgICBpZihmbk5hbWUuZmluZCgiX2ludm9rZSIpID09IHN0ZDo6 c3RyaW5nOjpucG9zKQotICAgICAgIHJldHVybiBOVUxMOwotCi1AQCAtMTE5LDE4ICsxMTksMTgg QEAKLSAgICAgICBQYXJhbVR5cy5wdXNoX2JhY2sodHkpOwotICAgICB9Ci0gICAgIEZ1bmN0aW9u VHlwZSogTmV3RlQgPSBGdW5jdGlvblR5cGU6OmdldChGbi0+Z2V0UmV0dXJuVHlwZSgpLCBQYXJh bVR5cywgZmFsc2UpOwotLSAgICBGdW5jdGlvbiogTmV3Rm4gPSBGdW5jdGlvbjo6Q3JlYXRlKE5l d0ZULCBGdW5jdGlvbjo6RXh0ZXJuYWxMaW5rYWdlLCBGbi0+Z2V0TmFtZSgpKTsKLSsgICAgRnVu Y3Rpb24qIE5ld0ZuID0gRnVuY3Rpb246OkNyZWF0ZShOZXdGVCwgRnVuY3Rpb246OkV4dGVybmFs TGlua2FnZSwgRm4tPmdldE5hbWUoKS5zdHIoKSk7Ci0gICAgIFNtYWxsVmVjdG9yPFJldHVybklu c3QqLCA4PiBSZXR1cm5zOwotCi0gICAgIEZ1bmN0aW9uOjphcmdfaXRlcmF0b3IgTmV3Rm5BcmdJ dCA9IE5ld0ZuLT5hcmdfYmVnaW4oKTsKLSAgICAgZm9yIChGdW5jdGlvbjo6YXJnX2l0ZXJhdG9y IEkgPSBGbi0+YXJnX2JlZ2luKCksIEUgPSBGbi0+YXJnX2VuZCgpOyBJICE9IEU7ICsrSSkgewot LSAgICAgIHN0ZDo6c3RyaW5nIEFyZ05hbWUgPSBJLT5nZXROYW1lKCk7Ci0rICAgICAgc3RkOjpz dHJpbmcgQXJnTmFtZSA9IEktPmdldE5hbWUoKS5zdHIoKTsKLSAgICAgICBOZXdGbkFyZ0l0LT5z ZXROYW1lKEFyZ05hbWUpOwotICAgICAgIFZNYXBbJipJXSA9ICYoKk5ld0ZuQXJnSXQrKyk7Ci0g ICAgIH0KLSAgICAgQ2xvbmVGdW5jdGlvbkludG8oTmV3Rm4sIEZuLCBWTWFwLCAvKk1vZHVsZUxl dmVsQ2hhbmdlcz0qL3RydWUsIFJldHVybnMpOwotCi0tICAgIEZuLT5zZXROYW1lKCJfX2QiICsg Rm4tPmdldE5hbWUoKSk7Ci0rICAgIEZuLT5zZXROYW1lKCJfX2QiICsgRm4tPmdldE5hbWUoKS5z dHIoKSk7Ci0gICAgIG1vZC0+Z2V0RnVuY3Rpb25MaXN0KCkucHVzaF9iYWNrKE5ld0ZuKTsKLSAg ICAgLy9tb2QtPmdldE9ySW5zZXJ0RnVuY3Rpb24oTmV3Rm4tPmdldE5hbWUoKSwgTmV3Rm4tPmdl dEZ1bmN0aW9uVHlwZSgpLAotICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICBOZXdGbi0+ Z2V0QXR0cmlidXRlcygpKTsKLUBAIC0xNDcsNyArMTQ3LDcgQEAKLSAgICAgICBhcmdUeXBlTmFt ZXMucHVzaF9iYWNrKGxsdm06Ok1EU3RyaW5nOjpnZXQoQ29udGV4dCwgImNoYXIqIikpOwotICAg ICAgIGFyZ0Jhc2VUeXBlTmFtZXMucHVzaF9iYWNrKGxsdm06Ok1EU3RyaW5nOjpnZXQoQ29udGV4 dCwgImNoYXIqIikpOwotICAgICAgIGFyZ1R5cGVRdWFscy5wdXNoX2JhY2sobGx2bTo6TURTdHJp bmc6OmdldChDb250ZXh0LCAiIikpOwotLSAgICAgIGFyZ05hbWVzLnB1c2hfYmFjayhsbHZtOjpN RFN0cmluZzo6Z2V0KENvbnRleHQsIEktPmdldE5hbWUoKSkpOwotKyAgICAgIGFyZ05hbWVzLnB1 c2hfYmFjayhsbHZtOjpNRFN0cmluZzo6Z2V0KENvbnRleHQsIEktPmdldE5hbWUoKS5zdHIoKSkp OwotICAgICB9Ci0KLSAgICAgLy9JZiBydW4gdG8gaGVyZSwgbGx2bSB2ZXJzaW9uIGFsd2F5cyA+ IDMuOSwgYWRkIHRoZSB2ZXJzaW9uIGNoZWNrIGp1c3QgZm9yIGJ1aWxkLgotQEAgLTE5OCw3ICsx OTgsNyBAQAotICAgICAgICAgICAgKiBpbnZva2UgcG9pbnRlciB0byBzdG9yZSB0aGUgaW5kZXgg aW4gdGhlIHVuaXQncyBibG9jayBmdW5jdGlvbnMgaW5kZXguKi8KLSAgICAgICAgICAgRnVuY3Rp b24gKkZuID0gZHluX2Nhc3Q8RnVuY3Rpb24+KGJ0LT5nZXRPcGVyYW5kKDApKTsKLQotLSAgICAg ICAgICBzdGQ6OnN0cmluZyBmbk5hbWUgPSBGbi0+Z2V0TmFtZSgpOwotKyAgICAgICAgICBzdGQ6 OnN0cmluZyBmbk5hbWUgPSBGbi0+Z2V0TmFtZSgpLnN0cigpOwotICAgICAgICAgICBpbnQgaW5k ZXggPSAtMTsKLSAgICAgICAgICAgZm9yKHNpemVfdCBpPTA7IGk8dW5pdC5ibG9ja0Z1bmNzLnNp emUoKTsgaSsrKSB7Ci0gICAgICAgICAgICAgaWYodW5pdC5ibG9ja0Z1bmNzW2ldID09IGZuTmFt ZSkgewotQEAgLTI0MSw3ICsyNDEsNyBAQAotICAgICAgICAgICAgIC8vdW5uYW1lZCBjYWxsIGZ1 bmN0aW9uLCBwYXJzZSB0aGUgdXNlIHRvIGZpbmQgdGhlIGRlZmluZSBvZiBjYWxsZWQgZnVuY3Rp b24KLSAgICAgICAgICAgICBTbWFsbFZlY3RvcjxWYWx1ZSosIDE2PiBhcmdzKENJLT5vcF9iZWdp bigpLCBDSS0+b3BfZW5kKCktMSk7Ci0KLS0gICAgICAgICAgICBWYWx1ZSAqdiA9IENJLT5nZXRD YWxsZWRWYWx1ZSgpOwotKyAgICAgICAgICAgIFZhbHVlICp2ID0gQ0ktPmdldENhbGxlZE9wZXJh bmQoKTsKLSAgICAgICAgICAgICBCaXRDYXN0SW5zdCogYnQgPSBkeW5fY2FzdDxCaXRDYXN0SW5z dD4odik7Ci0gICAgICAgICAgICAgaWYoYnQgPT0gTlVMTCkKLSAgICAgICAgICAgICAgIGNvbnRp bnVlOwotQEAgLTMxNiw3ICszMTYsNyBAQAotICAgICAgICAgICAgICAgICAgIENvbnN0YW50RXhw ciAqZXhwciA9IGR5bl9jYXN0PENvbnN0YW50RXhwcj4oYy0+Z2V0T3BlcmFuZCgzKSk7Ci0gICAg ICAgICAgICAgICAgICAgQml0Q2FzdEluc3QgKmJ0ID0gZHluX2Nhc3Q8Qml0Q2FzdEluc3Q+KGV4 cHItPmdldEFzSW5zdHJ1Y3Rpb24oKSk7Ci0gICAgICAgICAgICAgICAgICAgRnVuY3Rpb24qIGYg PSBkeW5fY2FzdDxGdW5jdGlvbj4oYnQtPmdldE9wZXJhbmQoMCkpOwotLSAgICAgICAgICAgICAg ICAgIGJsb2Nrc1t2XSA9IGYtPmdldE5hbWUoKTsKLSsgICAgICAgICAgICAgICAgICBibG9ja3Nb dl0gPSBmLT5nZXROYW1lKCkuc3RyKCk7Ci0gICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg ICAgIH0KLQotQEAgLTMzMiw3ICszMzIsNyBAQAotICAgICAgICAgICB9IGVsc2UgewotICAgICAg ICAgICAgIC8vaGFuZGxlIGVucXVldWVfa2VybmVsIGZ1bmN0aW9uIGNhbGwKLSAgICAgICAgICAg ICBGdW5jdGlvbiAqZm4gPSBDSS0+Z2V0Q2FsbGVkRnVuY3Rpb24oKTsKLS0gICAgICAgICAgICBp ZiAoZm4tPmdldE5hbWUoKS5maW5kKCJlbnF1ZXVlX2tlcm5lbCIpID09IHN0ZDo6c3RyaW5nOjpu cG9zKQotKyAgICAgICAgICAgIGlmIChmbi0+Z2V0TmFtZSgpLnN0cigpLmZpbmQoImVucXVldWVf a2VybmVsIikgPT0gc3RkOjpzdHJpbmc6Om5wb3MpCi0gICAgICAgICAgICAgICBjb250aW51ZTsK LQotICAgICAgICAgICAgIC8vYmxvY2sgcGFyYW1ldGVyJ3MgaW5kZXgsIDMgb3IgNgotQEAgLTM2 MSw3ICszNjEsNyBAQAotICAgICAgICAgICAgICAgICAgIENvbnN0YW50RXhwciAqZXhwciA9IGR5 bl9jYXN0PENvbnN0YW50RXhwcj4oYy0+Z2V0T3BlcmFuZCgzKSk7Ci0gICAgICAgICAgICAgICAg ICAgQml0Q2FzdEluc3QgKmJ0ID0gZHluX2Nhc3Q8Qml0Q2FzdEluc3Q+KGV4cHItPmdldEFzSW5z dHJ1Y3Rpb24oKSk7Ci0gICAgICAgICAgICAgICAgICAgRnVuY3Rpb24qIGYgPSBkeW5fY2FzdDxG dW5jdGlvbj4oYnQtPmdldE9wZXJhbmQoMCkpOwotLSAgICAgICAgICAgICAgICAgIGJsb2Nrc1t2 XSA9IGYtPmdldE5hbWUoKTsKLSsgICAgICAgICAgICAgICAgICBibG9ja3Nbdl0gPSBmLT5nZXRO YW1lKCkuc3RyKCk7Ci0gICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgIH0KLSAgICAg ICAgICAgICB9IGVsc2UgaWYoaXNhPEFsbG9jYUluc3Q+KGJsb2NrKSkgewotLS0tIGEvYmFja2Vu ZC9zcmMvbGx2bS9sbHZtX2dlbl9iYWNrZW5kLmNwcAkyMDIwLTExLTA5IDE2OjQ4OjIwLjgyMzg2 NjExMiArMDEwMAotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2dlbl9iYWNrZW5kLmNwcAky MDIwLTExLTA5IDE4OjMzOjUwLjkxOTExNDMyNyArMDEwMAotQEAgLTM3Niw3ICszNzYsNyBAQAot ICAgICAgICAgICBHQkVfQVNTRVJUKGluZGV4ID09IDApOwotICAgICAgICAgICByZXR1cm4gdGhp cy0+X25ld1NjYWxhcih2YWx1ZSwga2V5LCB0eXBlLCBpbmRleCwgdW5pZm9ybSk7Ci0gICAgICAg ICAgIGJyZWFrOwotLSAgICAgICAgY2FzZSBUeXBlOjpWZWN0b3JUeUlEOgotKyAgICAgICAgY2Fz ZSBUeXBlOjpGaXhlZFZlY3RvclR5SUQ6Ci0gICAgICAgICB7Ci0gICAgICAgICAgIGF1dG8gdmVj dG9yVHlwZSA9IGNhc3Q8VmVjdG9yVHlwZT4odHlwZSk7Ci0gICAgICAgICAgIGF1dG8gZWxlbWVu dFR5cGUgPSB2ZWN0b3JUeXBlLT5nZXRFbGVtZW50VHlwZSgpOwotQEAgLTc0MywyMCArNzQzLDIw IEBACi0gI3VuZGVmIERFQ0xfVklTSVRfRk4KLQotICAgICAvLyBFbWl0IHJvdW5kaW5nIGluc3Ry dWN0aW9ucyBmcm9tIGdlbiBuYXRpdmUgZnVuY3Rpb24KLS0gICAgdm9pZCBlbWl0Um91bmRpbmdD YWxsSW5zdChDYWxsSW5zdCAmSSwgQ2FsbFNpdGUgJkNTLCBpcjo6T3Bjb2RlIG9wY29kZSk7Ci0r ICAgIHZvaWQgZW1pdFJvdW5kaW5nQ2FsbEluc3QoQ2FsbEluc3QgJkksIGlyOjpPcGNvZGUgb3Bj b2RlKTsKLSAgICAgLy8gRW1pdCB1bmFyeSBpbnN0cnVjdGlvbnMgZnJvbSBnZW4gbmF0aXZlIGZ1 bmN0aW9uCi0tICAgIHZvaWQgZW1pdFVuYXJ5Q2FsbEluc3QoQ2FsbEluc3QgJkksIENhbGxTaXRl ICZDUywgaXI6Ok9wY29kZSBvcGNvZGUsIGlyOjpUeXBlID0gaXI6OlRZUEVfRkxPQVQpOwotKyAg ICB2b2lkIGVtaXRVbmFyeUNhbGxJbnN0KENhbGxJbnN0ICZJLCBpcjo6T3Bjb2RlIG9wY29kZSwg aXI6OlR5cGUgPSBpcjo6VFlQRV9GTE9BVCk7Ci0gICAgIC8vIEVtaXQgdW5hcnkgaW5zdHJ1Y3Rp b25zIGZyb20gZ2VuIG5hdGl2ZSBmdW5jdGlvbgotLSAgICB2b2lkIGVtaXRBdG9taWNJbnN0KENh bGxJbnN0ICZJLCBDYWxsU2l0ZSAmQ1MsIGlyOjpBdG9taWNPcHMgb3Bjb2RlKTsKLSsgICAgdm9p ZCBlbWl0QXRvbWljSW5zdChDYWxsSW5zdCAmSSwgaXI6OkF0b21pY09wcyBvcGNvZGUpOwotICAg ICAvLyBFbWl0IHdvcmtncm91cCBpbnN0cnVjdGlvbnMKLS0gICAgdm9pZCBlbWl0V29ya0dyb3Vw SW5zdChDYWxsSW5zdCAmSSwgQ2FsbFNpdGUgJkNTLCBpcjo6V29ya0dyb3VwT3BzIG9wY29kZSk7 Ci0rICAgIHZvaWQgZW1pdFdvcmtHcm91cEluc3QoQ2FsbEluc3QgJkksIGlyOjpXb3JrR3JvdXBP cHMgb3Bjb2RlKTsKLSAgICAgLy8gRW1pdCBzdWJncm91cCBpbnN0cnVjdGlvbnMKLS0gICAgdm9p ZCBlbWl0U3ViR3JvdXBJbnN0KENhbGxJbnN0ICZJLCBDYWxsU2l0ZSAmQ1MsIGlyOjpXb3JrR3Jv dXBPcHMgb3Bjb2RlKTsKLSsgICAgdm9pZCBlbWl0U3ViR3JvdXBJbnN0KENhbGxJbnN0ICZJLCBp cjo6V29ya0dyb3VwT3BzIG9wY29kZSk7Ci0gICAgIC8vIEVtaXQgc3ViZ3JvdXAgaW5zdHJ1Y3Rp b25zCi0tICAgIHZvaWQgZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChDYWxsSW5zdCAmSSwgQ2Fs bFNpdGUgJkNTLCBib29sIGlzV3JpdGUsIHVpbnQ4X3QgdmVjX3NpemUsIGlyOjpUeXBlID0gaXI6 OlRZUEVfVTMyKTsKLS0gICAgdm9pZCBlbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoQ2FsbElu c3QgJkksIENhbGxTaXRlICZDUywgYm9vbCBpc1dyaXRlLCB1aW50OF90IHZlY19zaXplLCBpcjo6 VHlwZSA9IGlyOjpUWVBFX1UzMik7Ci0rICAgIHZvaWQgZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5z dChDYWxsSW5zdCAmSSwgYm9vbCBpc1dyaXRlLCB1aW50OF90IHZlY19zaXplLCBpcjo6VHlwZSA9 IGlyOjpUWVBFX1UzMik7Ci0rICAgIHZvaWQgZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KENh bGxJbnN0ICZJLCBib29sIGlzV3JpdGUsIHVpbnQ4X3QgdmVjX3NpemUsIGlyOjpUeXBlID0gaXI6 OlRZUEVfVTMyKTsKLQotLSAgICB1aW50OF90IGFwcGVuZFNhbXBsZXIoQ2FsbFNpdGU6OmFyZ19p dGVyYXRvciBBSSk7Ci0rICAgIHVpbnQ4X3QgYXBwZW5kU2FtcGxlcihVc2VyOjpvcF9pdGVyYXRv ciBBSSk7Ci0gICAgIHVpbnQ4X3QgZ2V0SW1hZ2VJRChDYWxsSW5zdCAmSSk7Ci0KLSAgICAgLy8g VGhlc2UgaW5zdHJ1Y3Rpb25zIGFyZSBub3Qgc3VwcG9ydGVkIGF0IGFsbAotQEAgLTEzMjAsMTMg KzEzMjAsMTMgQEAKLSAjZW5kaWYKLQotICAgICAgIGlmKHR5cGVOYW1lTm9kZSkgewotLSAgICAg ICAgbGx2bUluZm8udHlwZU5hbWU9IChjYXN0PE1EU3RyaW5nPih0eXBlTmFtZU5vZGUtPmdldE9w ZXJhbmQob3BJRCkpKS0+Z2V0U3RyaW5nKCk7Ci0rICAgICAgICBsbHZtSW5mby50eXBlTmFtZT0g KGNhc3Q8TURTdHJpbmc+KHR5cGVOYW1lTm9kZS0+Z2V0T3BlcmFuZChvcElEKSkpLT5nZXRTdHJp bmcoKS5zdHIoKTsKLSAgICAgICB9Ci0gICAgICAgaWYodHlwZUJhc2VOYW1lTm9kZSkgewotLSAg ICAgICAgbGx2bUluZm8udHlwZUJhc2VOYW1lPSAoY2FzdDxNRFN0cmluZz4odHlwZUJhc2VOYW1l Tm9kZS0+Z2V0T3BlcmFuZChvcElEKSkpLT5nZXRTdHJpbmcoKTsKLSsgICAgICAgIGxsdm1JbmZv LnR5cGVCYXNlTmFtZT0gKGNhc3Q8TURTdHJpbmc+KHR5cGVCYXNlTmFtZU5vZGUtPmdldE9wZXJh bmQob3BJRCkpKS0+Z2V0U3RyaW5nKCkuc3RyKCk7Ci0gICAgICAgfQotLSAgICAgIGxsdm1JbmZv LnR5cGVOYW1lPSAoY2FzdDxNRFN0cmluZz4odHlwZU5hbWVOb2RlLT5nZXRPcGVyYW5kKG9wSUQp KSktPmdldFN0cmluZygpOwotLSAgICAgIGxsdm1JbmZvLnR5cGVRdWFsID0gKGNhc3Q8TURTdHJp bmc+KHR5cGVRdWFsTm9kZS0+Z2V0T3BlcmFuZChvcElEKSkpLT5nZXRTdHJpbmcoKTsKLSsgICAg ICBsbHZtSW5mby50eXBlTmFtZT0gKGNhc3Q8TURTdHJpbmc+KHR5cGVOYW1lTm9kZS0+Z2V0T3Bl cmFuZChvcElEKSkpLT5nZXRTdHJpbmcoKS5zdHIoKTsKLSsgICAgICBsbHZtSW5mby50eXBlUXVh bCA9IChjYXN0PE1EU3RyaW5nPih0eXBlUXVhbE5vZGUtPmdldE9wZXJhbmQob3BJRCkpKS0+Z2V0 U3RyaW5nKCkuc3RyKCk7Ci0gICAgICAgYm9vbCBpc0ltYWdlID0gbGx2bUluZm8uaXNJbWFnZVR5 cGUoKTsKLSAgICAgICBib29sIGlzUGlwZSA9IGxsdm1JbmZvLmlzUGlwZVR5cGUoKTsKLSAgICAg ICBpZiAoSS0+Z2V0VHlwZSgpLT5pc1BvaW50ZXJUeSgpIHx8IGlzSW1hZ2UgfHwgaXNQaXBlKSB7 Ci1AQCAtMTUzMSw3ICsxNTMxLDcgQEAKLSAgICAgICAgICAgICBFbHRUeSA9IGdldEVsdFR5cGUo RWx0VHksIFR5cGVJbmRleCk7Ci0gICAgICAgICB9Ci0KLS0gICAgICAgIGlyOjpDb25zdGFudCBj YyA9IHVuaXQuZ2V0Q29uc3RhbnRTZXQoKS5nZXRDb25zdGFudChwb2ludGVyLT5nZXROYW1lKCkp OwotKyAgICAgICAgaXI6OkNvbnN0YW50IGNjID0gdW5pdC5nZXRDb25zdGFudFNldCgpLmdldENv bnN0YW50KHBvaW50ZXItPmdldE5hbWUoKS5zdHIoKSk7Ci0gICAgICAgICB1bnNpZ25lZCBpbnQg ZGVmT2Zmc2V0ID0gY2MuZ2V0T2Zmc2V0KCk7Ci0gICAgICAgICByZWxvY3MucHVzaF9iYWNrKGly OjpSZWxvY0VudHJ5KG9mZnNldCwgZGVmT2Zmc2V0ICsgY29uc3RhbnRPZmZzZXQpKTsKLQotQEAg LTE1NDYsNyArMTU0Niw3IEBACi0gICAgICAgcmV0dXJuOwotICAgICB9Ci0gICAgIGlmIChpc2E8 R2xvYmFsVmFyaWFibGU+KGMpKSB7Ci0tICAgICAgaXI6OkNvbnN0YW50IGNjID0gdW5pdC5nZXRD b25zdGFudFNldCgpLmdldENvbnN0YW50KGMtPmdldE5hbWUoKSk7Ci0rICAgICAgaXI6OkNvbnN0 YW50IGNjID0gdW5pdC5nZXRDb25zdGFudFNldCgpLmdldENvbnN0YW50KGMtPmdldE5hbWUoKS5z dHIoKSk7Ci0gICAgICAgdW5zaWduZWQgaW50IGRlZk9mZnNldCA9IGNjLmdldE9mZnNldCgpOwot Ci0gICAgICAgcmVsb2NzLnB1c2hfYmFjayhpcjo6UmVsb2NFbnRyeShvZmZzZXQsIGRlZk9mZnNl dCkpOwotQEAgLTE2MDksNyArMTYwOSw3IEBACi0gICAgICAgICAgIH0KLSAgICAgICAgICAgYnJl YWs7Ci0gICAgICAgICB9Ci0tICAgICAgY2FzZSBUeXBlOjpUeXBlSUQ6OlZlY3RvclR5SUQ6Ci0r ICAgICAgY2FzZSBUeXBlOjpUeXBlSUQ6OkZpeGVkVmVjdG9yVHlJRDoKLSAgICAgICAgIHsKLSAg ICAgICAgICAgY29uc3QgQ29uc3RhbnREYXRhU2VxdWVudGlhbCAqY2RzID0gZHluX2Nhc3Q8Q29u c3RhbnREYXRhU2VxdWVudGlhbD4oYyk7Ci0gICAgICAgICAgIGNvbnN0IFZlY3RvclR5cGUgKnZl Y1R5ID0gY2FzdDxWZWN0b3JUeXBlPih0eXBlKTsKLUBAIC0xOTM2LDcgKzE5MzYsNyBAQAotICAg ICAgIGNhc2UgVHlwZTo6UG9pbnRlclR5SUQ6Ci0gICAgICAgICByZWdUcmFuc2xhdG9yLm5ld1Nj YWxhcih2YWx1ZSwga2V5LCAwLCB1bmlmb3JtKTsKLSAgICAgICAgIGJyZWFrOwotLSAgICAgIGNh c2UgVHlwZTo6VmVjdG9yVHlJRDoKLSsgICAgICBjYXNlIFR5cGU6OkZpeGVkVmVjdG9yVHlJRDoK LSAgICAgICB7Ci0gICAgICAgICBhdXRvIHZlY3RvclR5cGUgPSBjYXN0PFZlY3RvclR5cGU+KHR5 cGUpOwotICAgICAgICAgY29uc3QgdWludDMyX3QgZWxlbU51bSA9IHZlY3RvclR5cGUtPmdldE51 bUVsZW1lbnRzKCk7Ci1AQCAtMjM5NSw3ICsyMzk1LDcgQEAKLSAjZW5kaWYKLSAgICAgICAgIH0K LSAgICAgICAgIGlmKHR5cGVOYW1lTm9kZSkgewotLSAgICAgICAgICBsbHZtSW5mby50eXBlTmFt ZSA9IChjYXN0PE1EU3RyaW5nPih0eXBlTmFtZU5vZGUtPmdldE9wZXJhbmQob3BJRCkpKS0+Z2V0 U3RyaW5nKCk7Ci0rICAgICAgICAgIGxsdm1JbmZvLnR5cGVOYW1lID0gKGNhc3Q8TURTdHJpbmc+ KHR5cGVOYW1lTm9kZS0+Z2V0T3BlcmFuZChvcElEKSkpLT5nZXRTdHJpbmcoKS5zdHIoKTsKLSAg ICAgICAgICAgLy9MTFZNIDMuOSBpbWFnZSdzIHR5cGUgbmFtZSBpbmNsdWRlIGFjY2VzcyBxdWFs LCBkb24ndCBtYXRjaCBPcGVuQ0wgc3BlYywgZXJhc2UgdGhlbS4KLSAgICAgICAgICAgc3RkOjp2 ZWN0b3I8c3RkOjpzdHJpbmc+IGZpbHRlcnMgPSB7Il9fcmVhZF9vbmx5ICIsICJfX3dyaXRlX29u bHkgIn07Ci0gICAgICAgICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBmaWx0ZXJzLnNpemUo KTsgaSsrKSB7Ci1AQCAtMjQwNiwxNiArMjQwNiwxNiBAQAotICAgICAgICAgICB9Ci0gICAgICAg ICB9Ci0gICAgICAgICBpZih0eXBlQmFzZU5hbWVOb2RlKXsKLS0gICAgICAgICAgbGx2bUluZm8u dHlwZUJhc2VOYW1lID0gKGNhc3Q8TURTdHJpbmc+KHR5cGVCYXNlTmFtZU5vZGUtPmdldE9wZXJh bmQob3BJRCkpKS0+Z2V0U3RyaW5nKCk7Ci0rICAgICAgICAgIGxsdm1JbmZvLnR5cGVCYXNlTmFt ZSA9IChjYXN0PE1EU3RyaW5nPih0eXBlQmFzZU5hbWVOb2RlLT5nZXRPcGVyYW5kKG9wSUQpKSkt PmdldFN0cmluZygpLnN0cigpOwotICAgICAgICAgfQotICAgICAgICAgaWYoYWNjZXNzUXVhbE5v ZGUpIHsKLS0gICAgICAgICAgbGx2bUluZm8uYWNjZXNzUXVhbCA9IChjYXN0PE1EU3RyaW5nPihh Y2Nlc3NRdWFsTm9kZS0+Z2V0T3BlcmFuZChvcElEKSkpLT5nZXRTdHJpbmcoKTsKLSsgICAgICAg ICAgbGx2bUluZm8uYWNjZXNzUXVhbCA9IChjYXN0PE1EU3RyaW5nPihhY2Nlc3NRdWFsTm9kZS0+ Z2V0T3BlcmFuZChvcElEKSkpLT5nZXRTdHJpbmcoKS5zdHIoKTsKLSAgICAgICAgIH0KLSAgICAg ICAgIGlmKHR5cGVRdWFsTm9kZSkgewotLSAgICAgICAgICBsbHZtSW5mby50eXBlUXVhbCA9IChj YXN0PE1EU3RyaW5nPih0eXBlUXVhbE5vZGUtPmdldE9wZXJhbmQob3BJRCkpKS0+Z2V0U3RyaW5n KCk7Ci0rICAgICAgICAgIGxsdm1JbmZvLnR5cGVRdWFsID0gKGNhc3Q8TURTdHJpbmc+KHR5cGVR dWFsTm9kZS0+Z2V0T3BlcmFuZChvcElEKSkpLT5nZXRTdHJpbmcoKS5zdHIoKTsKLSAgICAgICAg IH0KLSAgICAgICAgIGlmKGFyZ05hbWVOb2RlKXsKLS0gICAgICAgICAgbGx2bUluZm8uYXJnTmFt ZSA9IChjYXN0PE1EU3RyaW5nPihhcmdOYW1lTm9kZS0+Z2V0T3BlcmFuZChvcElEKSkpLT5nZXRT dHJpbmcoKTsKLSsgICAgICAgICAgbGx2bUluZm8uYXJnTmFtZSA9IChjYXN0PE1EU3RyaW5nPihh cmdOYW1lTm9kZS0+Z2V0T3BlcmFuZChvcElEKSkpLT5nZXRTdHJpbmcoKS5zdHIoKTsKLSAgICAg ICAgIH0KLQotICAgICAgICAgLy8gZnVuY3Rpb24gYXJndW1lbnRzIGFyZSB1bmlmb3JtIHZhbHVl cy4KLUBAIC0zMDEwLDcgKzMwMTAsNyBAQAotICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg dGhpcy0+bmV3UmVnaXN0ZXIoY29uc3RfY2FzdDxHbG9iYWxWYXJpYWJsZSo+KCZ2KSk7Ci0gICAg ICAgICAgIGlyOjpSZWdpc3RlciByZWcgPSByZWdUcmFuc2xhdG9yLmdldFNjYWxhcihjb25zdF9j YXN0PEdsb2JhbFZhcmlhYmxlKj4oJnYpLCAwKTsKLS0gICAgICAgICAgaXI6OkNvbnN0YW50ICZj b24gPSB1bml0LmdldENvbnN0YW50U2V0KCkuZ2V0Q29uc3RhbnQodi5nZXROYW1lKCkpOwotKyAg ICAgICAgICBpcjo6Q29uc3RhbnQgJmNvbiA9IHVuaXQuZ2V0Q29uc3RhbnRTZXQoKS5nZXRDb25z dGFudCh2LmdldE5hbWUoKS5zdHIoKSk7Ci0gICAgICAgICAgIGlmICghbGVnYWN5TW9kZSkgewot ICAgICAgICAgICAgIGlyOjpSZWdpc3RlciByZWdsb2FkID0gY3R4LnJlZyhnZXRGYW1pbHkoZ2V0 VHlwZShjdHgsIHYuZ2V0VHlwZSgpKSkpOwotICAgICAgICAgICAgIGN0eC5MT0FESShnZXRUeXBl KGN0eCwgdi5nZXRUeXBlKCkpLCByZWdsb2FkLCBjdHgubmV3SW50ZWdlckltbWVkaWF0ZShjb24u Z2V0T2Zmc2V0KCksIGdldFR5cGUoY3R4LCB2LmdldFR5cGUoKSkpKTsKLUBAIC0zMjEyLDcgKzMy MTIsNyBAQAotICAgICAgICAgR0JFX0FTU0VSVE0oZmFsc2UsICJVbnN1cHBvcnRlZCBjYWxsaW5n IGNvbnZlbnRpb24iKTsKLSAgICAgfQotCi0tICAgIGN0eC5zdGFydEZ1bmN0aW9uKEYuZ2V0TmFt ZSgpKTsKLSsgICAgY3R4LnN0YXJ0RnVuY3Rpb24oRi5nZXROYW1lKCkuc3RyKCkpOwotCi0gICAg IGlyOjpGdW5jdGlvbiAmZm4gPSBjdHguZ2V0RnVuY3Rpb24oKTsKLSAgICAgdGhpcy0+cmVnVHJh bnNsYXRvci5jbGVhcigpOwotQEAgLTM4MTAsOSArMzgxMCw5IEBACi0KLSAgIHZvaWQgR2VuV3Jp dGVyOjpyZWdBbGxvY2F0ZUNhbGxJbnN0KENhbGxJbnN0ICZJKSB7Ci0gICAgIFZhbHVlICpkc3Qg PSAmSTsKLS0gICAgVmFsdWUgKkNhbGxlZSA9IEkuZ2V0Q2FsbGVkVmFsdWUoKTsKLSsgICAgVmFs dWUgKkNhbGxlZSA9IEkuZ2V0Q2FsbGVkT3BlcmFuZCgpOwotICAgICBHQkVfQVNTRVJUKGN0eC5n ZXRGdW5jdGlvbigpLmdldFByb2ZpbGUoKSA9PSBpcjo6UFJPRklMRV9PQ0wpOwotLSAgICBHQkVf QVNTRVJUKGlzYTxJbmxpbmVBc20+KEkuZ2V0Q2FsbGVkVmFsdWUoKSkgPT0gZmFsc2UpOwotKyAg ICBHQkVfQVNTRVJUKGlzYTxJbmxpbmVBc20+KEkuZ2V0Q2FsbGVkT3BlcmFuZCgpKSA9PSBmYWxz ZSk7Ci0gICAgIGlmKEkuZ2V0TnVtQXJnT3BlcmFuZHMoKSkgR0JFX0FTU0VSVChJLmhhc1N0cnVj dFJldEF0dHIoKSA9PSBmYWxzZSk7Ci0KLSAgICAgLy8gV2Ugb25seSBzdXBwb3J0IGEgc21hbGwg bnVtYmVyIG9mIGludHJpbnNpY3MgcmlnaHQgbm93Ci1AQCAtMzg3MCw3ICszODcwLDcgQEAKLSAg ICAgICB9Ci0gICAgIH0KLSAgICAgLy8gR2V0IHRoZSBuYW1lIG9mIHRoZSBjYWxsZWQgZnVuY3Rp b24gYW5kIGhhbmRsZSBpdAotLSAgICBjb25zdCBzdGQ6OnN0cmluZyBmbk5hbWUgPSBDYWxsZWUt PnN0cmlwUG9pbnRlckNhc3RzKCktPmdldE5hbWUoKTsKLSsgICAgY29uc3Qgc3RkOjpzdHJpbmcg Zm5OYW1lID0gQ2FsbGVlLT5zdHJpcFBvaW50ZXJDYXN0cygpLT5nZXROYW1lKCkuc3RyKCk7Ci0g ICAgIGF1dG8gZ2VuSW50cmluc2ljSUQgPSBpbnRyaW5zaWNNYXAuZmluZChmbk5hbWUpOwotICAg ICBzd2l0Y2ggKGdlbkludHJpbnNpY0lEKSB7Ci0gICAgICAgY2FzZSBHRU5fT0NMX0dFVF9HUk9V UF9JRDA6Ci1AQCAtNDE2Niw3ICs0MTY2LDcgQEAKLSAgICAgfTsKLSAgIH0KLQotLSAgdm9pZCBH ZW5Xcml0ZXI6OmVtaXRSb3VuZGluZ0NhbGxJbnN0KENhbGxJbnN0ICZJLCBDYWxsU2l0ZSAmQ1Ms IGlyOjpPcGNvZGUgb3Bjb2RlKSB7Ci0rICB2b2lkIEdlbldyaXRlcjo6ZW1pdFJvdW5kaW5nQ2Fs bEluc3QoQ2FsbEluc3QgJkksIGlyOjpPcGNvZGUgb3Bjb2RlKSB7Ci0gICAgIGlmIChJLmdldFR5 cGUoKS0+aXNIYWxmVHkoKSkgewotICAgICAgIGNvbnN0IGlyOjpSZWdpc3RlciBzcmMgPSB0aGlz LT5nZXRSZWdpc3RlcihJLmdldE9wZXJhbmQoMCkpOwotICAgICAgIGNvbnN0IGlyOjpSZWdpc3Rl ciBzcmNGbG9hdCA9IGN0eC5yZWcoaXI6OkZBTUlMWV9EV09SRCk7Ci1AQCAtNDE3NywxNCArNDE3 NywxNCBAQAotICAgICAgIGN0eC5GMzJUTzE2KGlyOjpUWVBFX1UxNiwgaXI6OlRZUEVfRkxPQVQs IGRzdCwgZHN0RmxvYXQpOwotICAgICB9IGVsc2UgewotICAgICAgIEdCRV9BU1NFUlQoSS5nZXRU eXBlKCktPmlzRmxvYXRUeSgpKTsKLS0gICAgICB0aGlzLT5lbWl0VW5hcnlDYWxsSW5zdChJLENT LG9wY29kZSk7Ci0rICAgICAgdGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3QoSSxvcGNvZGUpOwotICAg ICB9Ci0gICB9Ci0KLS0gIHZvaWQgR2VuV3JpdGVyOjplbWl0VW5hcnlDYWxsSW5zdChDYWxsSW5z dCAmSSwgQ2FsbFNpdGUgJkNTLCBpcjo6T3Bjb2RlIG9wY29kZSwgaXI6OlR5cGUgdHlwZSkgewot LSAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIEFJID0gQ1MuYXJnX2JlZ2luKCk7Ci0rICB2b2lk IEdlbldyaXRlcjo6ZW1pdFVuYXJ5Q2FsbEluc3QoQ2FsbEluc3QgJkksIGlyOjpPcGNvZGUgb3Bj b2RlLCBpcjo6VHlwZSB0eXBlKSB7Ci0rICAgIFVzZXI6Om9wX2l0ZXJhdG9yIEFJID0gSS5hcmdf YmVnaW4oKTsKLSAjaWYgR0JFX0RFQlVHCi0tICAgIENhbGxTaXRlOjphcmdfaXRlcmF0b3IgQUUg PSBDUy5hcmdfZW5kKCk7Ci0rICAgIFVzZXI6Om9wX2l0ZXJhdG9yIEFFID0gSS5hcmdfZW5kKCk7 Ci0gI2VuZGlmIC8qIEdCRV9ERUJVRyAqLwotICAgICBHQkVfQVNTRVJUKEFJICE9IEFFKTsKLSAg ICAgY29uc3QgaXI6OlJlZ2lzdGVyIHNyYyA9IHRoaXMtPmdldFJlZ2lzdGVyKCpBSSk7Ci1AQCAt NDI5Myw5ICs0MjkzLDkgQEAKLSAgICAgdGhpcy0+ZW1pdEF0b21pY0luc3RIZWxwZXIob3Bjb2Rl LCB0eXBlLCBkc3QsIGxsdm1QdHIsIHBheWxvYWRUdXBsZSk7Ci0gICB9Ci0KLS0gIHZvaWQgR2Vu V3JpdGVyOjplbWl0QXRvbWljSW5zdChDYWxsSW5zdCAmSSwgQ2FsbFNpdGUgJkNTLCBpcjo6QXRv bWljT3BzIG9wY29kZSkgewotLSAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIEFJID0gQ1MuYXJn X2JlZ2luKCk7Ci0tICAgIENhbGxTaXRlOjphcmdfaXRlcmF0b3IgQUUgPSBDUy5hcmdfZW5kKCk7 Ci0rICB2b2lkIEdlbldyaXRlcjo6ZW1pdEF0b21pY0luc3QoQ2FsbEluc3QgJkksIGlyOjpBdG9t aWNPcHMgb3Bjb2RlKSB7Ci0rICAgIFVzZXI6Om9wX2l0ZXJhdG9yIEFJID0gSS5hcmdfYmVnaW4o KTsKLSsgICAgVXNlcjo6b3BfaXRlcmF0b3IgQUUgPSBJLmFyZ19lbmQoKTsKLSAgICAgR0JFX0FT U0VSVChBSSAhPSBBRSk7Ci0gICAgIFZhbHVlICpsbHZtUHRyID0gKkFJOwotICAgICBpcjo6QWRk cmVzc1NwYWNlIGFkZHJTcGFjZSA9IGFkZHJlc3NTcGFjZUxMVk1Ub0dlbihsbHZtUHRyLT5nZXRU eXBlKCktPmdldFBvaW50ZXJBZGRyZXNzU3BhY2UoKSk7Ci1AQCAtNDM0OCw3ICs0MzQ4LDcgQEAK LSAgICAgfQotICAgfQotCi0tICB2b2lkIEdlbldyaXRlcjo6ZW1pdFdvcmtHcm91cEluc3QoQ2Fs bEluc3QgJkksIENhbGxTaXRlICZDUywgaXI6OldvcmtHcm91cE9wcyBvcGNvZGUpIHsKLSsgIHZv aWQgR2VuV3JpdGVyOjplbWl0V29ya0dyb3VwSW5zdChDYWxsSW5zdCAmSSwgaXI6OldvcmtHcm91 cE9wcyBvcGNvZGUpIHsKLSAgICAgaXI6OkZ1bmN0aW9uICZmID0gY3R4LmdldEZ1bmN0aW9uKCk7 Ci0KLSAgICAgaWYgKGYuZ2V0d2dCcm9hZGNhc3RTTE0oKSA8IDAgJiYgb3Bjb2RlID09IGlyOjpX T1JLR1JPVVBfT1BfQlJPQURDQVNUKSB7Ci1AQCAtNDM3OCw4ICs0Mzc4LDggQEAKLSAgICAgICBH QkVfQVNTRVJUKGYuZ2V0dGlkTWFwU0xNKCkgPj0gMCk7Ci0gICAgIH0KLQotLSAgICBDYWxsU2l0 ZTo6YXJnX2l0ZXJhdG9yIEFJID0gQ1MuYXJnX2JlZ2luKCk7Ci0tICAgIENhbGxTaXRlOjphcmdf aXRlcmF0b3IgQUUgPSBDUy5hcmdfZW5kKCk7Ci0rICAgIFVzZXI6Om9wX2l0ZXJhdG9yIEFJID0g SS5hcmdfYmVnaW4oKTsKLSsgICAgVXNlcjo6b3BfaXRlcmF0b3IgQUUgPSBJLmFyZ19lbmQoKTsK LSAgICAgR0JFX0FTU0VSVChBSSAhPSBBRSk7Ci0KLSAgICAgaWYgKG9wY29kZSA9PSBpcjo6V09S S0dST1VQX09QX0FMTCB8fCBvcGNvZGUgPT0gaXI6OldPUktHUk9VUF9PUF9BTlkpIHsKLUBAIC00 MzkxLDE0ICs0MzkxLDE0IEBACi0gICAgICAgY29uc3QgaXI6OlR1cGxlIHNyY1R1cGxlID0gY3R4 LmFycmF5VHVwbGUoJnNyY1swXSwgMyk7Ci0gICAgICAgY3R4LldPUktHUk9VUChvcGNvZGUsICh1 aW50MzJfdClmLmdldHRpZE1hcFNMTSgpLCBnZXRSZWdpc3RlcigmSSksIHNyY1R1cGxlLCAzLCBp cjo6VFlQRV9TMzIpOwotICAgICB9IGVsc2UgaWYgKG9wY29kZSA9PSBpcjo6V09SS0dST1VQX09Q X0JST0FEQ0FTVCkgewotLSAgICAgIGludCBhcmdOdW0gPSBDUy5hcmdfc2l6ZSgpOwotKyAgICAg IGludCBhcmdOdW0gPSBJLmFyZ19zaXplKCk7Ci0gICAgICAgc3RkOjp2ZWN0b3I8aXI6OlJlZ2lz dGVyPiBzcmMoYXJnTnVtKTsKLSAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ051bTsgaSsr KSB7Ci0gICAgICAgICBzcmNbaV0gPSB0aGlzLT5nZXRSZWdpc3RlcigqKEFJKyspKTsKLSAgICAg ICB9Ci0gICAgICAgY29uc3QgaXI6OlR1cGxlIHNyY1R1cGxlID0gY3R4LmFycmF5VHVwbGUoJnNy Y1swXSwgYXJnTnVtKTsKLSAgICAgICBjdHguV09SS0dST1VQKGlyOjpXT1JLR1JPVVBfT1BfQlJP QURDQVNULCAodWludDMyX3QpZi5nZXR3Z0Jyb2FkY2FzdFNMTSgpLCBnZXRSZWdpc3RlcigmSSks IHNyY1R1cGxlLCBhcmdOdW0sCi0tICAgICAgICAgIGdldFR5cGUoY3R4LCAoKkNTLmFyZ19iZWdp bigpKS0+Z2V0VHlwZSgpKSk7Ci0rICAgICAgICAgIGdldFR5cGUoY3R4LCAoKkkuYXJnX2JlZ2lu KCkpLT5nZXRUeXBlKCkpKTsKLSAgICAgfSBlbHNlIHsKLSAgICAgICBDb25zdGFudEludCAqc2ln biA9IGR5bl9jYXN0PENvbnN0YW50SW50PihBSSk7Ci0gICAgICAgR0JFX0FTU0VSVChzaWduKTsK LUBAIC00NDIzLDkgKzQ0MjMsOSBAQAotICAgICBHQkVfQVNTRVJUKEFJID09IEFFKTsKLSAgIH0K LQotLSAgdm9pZCBHZW5Xcml0ZXI6OmVtaXRTdWJHcm91cEluc3QoQ2FsbEluc3QgJkksIENhbGxT aXRlICZDUywgaXI6OldvcmtHcm91cE9wcyBvcGNvZGUpIHsKLS0gICAgQ2FsbFNpdGU6OmFyZ19p dGVyYXRvciBBSSA9IENTLmFyZ19iZWdpbigpOwotLSAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9y IEFFID0gQ1MuYXJnX2VuZCgpOwotKyAgdm9pZCBHZW5Xcml0ZXI6OmVtaXRTdWJHcm91cEluc3Qo Q2FsbEluc3QgJkksIGlyOjpXb3JrR3JvdXBPcHMgb3Bjb2RlKSB7Ci0rICAgIFVzZXI6Om9wX2l0 ZXJhdG9yIEFJID0gSS5hcmdfYmVnaW4oKTsKLSsgICAgVXNlcjo6b3BfaXRlcmF0b3IgQUUgPSBJ LmFyZ19lbmQoKTsKLSAgICAgR0JFX0FTU0VSVChBSSAhPSBBRSk7Ci0KLSAgICAgaWYgKG9wY29k ZSA9PSBpcjo6V09SS0dST1VQX09QX0FMTCB8fCBvcGNvZGUgPT0gaXI6OldPUktHUk9VUF9PUF9B TlkpIHsKLUBAIC00NDM1LDcgKzQ0MzUsNyBAQAotICAgICAgIGNvbnN0IGlyOjpUdXBsZSBzcmNU dXBsZSA9IGN0eC5hcnJheVR1cGxlKCZzcmNbMF0sIDEpOwotICAgICAgIGN0eC5TVUJHUk9VUChv cGNvZGUsIGdldFJlZ2lzdGVyKCZJKSwgc3JjVHVwbGUsIDEsIGlyOjpUWVBFX1MzMik7Ci0gICAg IH0gZWxzZSBpZiAob3Bjb2RlID09IGlyOjpXT1JLR1JPVVBfT1BfQlJPQURDQVNUKSB7Ci0tICAg ICAgaW50IGFyZ051bSA9IENTLmFyZ19zaXplKCk7Ci0rICAgICAgaW50IGFyZ051bSA9IEkuYXJn X3NpemUoKTsKLSAgICAgICBHQkVfQVNTRVJUKGFyZ051bSA9PSAyKTsKLSAgICAgICBzdGQ6OnZl Y3Rvcjxpcjo6UmVnaXN0ZXI+IHNyYyhhcmdOdW0pOwotICAgICAgIGZvciAoaW50IGkgPSAwOyBp IDwgYXJnTnVtOyBpKyspIHsKLUBAIC00NDQzLDcgKzQ0NDMsNyBAQAotICAgICAgIH0KLSAgICAg ICBjb25zdCBpcjo6VHVwbGUgc3JjVHVwbGUgPSBjdHguYXJyYXlUdXBsZSgmc3JjWzBdLCBhcmdO dW0pOwotICAgICAgIGN0eC5TVUJHUk9VUChpcjo6V09SS0dST1VQX09QX0JST0FEQ0FTVCwgZ2V0 UmVnaXN0ZXIoJkkpLCBzcmNUdXBsZSwgYXJnTnVtLAotLSAgICAgICAgICBnZXRUeXBlKGN0eCwg KCpDUy5hcmdfYmVnaW4oKSktPmdldFR5cGUoKSkpOwotKyAgICAgICAgICBnZXRUeXBlKGN0eCwg KCpJLmFyZ19iZWdpbigpKS0+Z2V0VHlwZSgpKSk7Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAgQ29u c3RhbnRJbnQgKnNpZ24gPSBkeW5fY2FzdDxDb25zdGFudEludD4oQUkpOwotICAgICAgIEdCRV9B U1NFUlQoc2lnbik7Ci1AQCAtNDQ2Niw5ICs0NDY2LDkgQEAKLSAgICAgR0JFX0FTU0VSVChBSSA9 PSBBRSk7Ci0gICB9Ci0KLS0gIHZvaWQgR2VuV3JpdGVyOjplbWl0QmxvY2tSZWFkV3JpdGVNZW1J bnN0KENhbGxJbnN0ICZJLCBDYWxsU2l0ZSAmQ1MsIGJvb2wgaXNXcml0ZSwgdWludDhfdCB2ZWNf c2l6ZSwgaXI6OlR5cGUgdHlwZSkgewotLSAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIEFJID0g Q1MuYXJnX2JlZ2luKCk7Ci0tICAgIENhbGxTaXRlOjphcmdfaXRlcmF0b3IgQUUgPSBDUy5hcmdf ZW5kKCk7Ci0rICB2b2lkIEdlbldyaXRlcjo6ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChDYWxs SW5zdCAmSSwgYm9vbCBpc1dyaXRlLCB1aW50OF90IHZlY19zaXplLCBpcjo6VHlwZSB0eXBlKSB7 Ci0rICAgIFVzZXI6Om9wX2l0ZXJhdG9yIEFJID0gSS5hcmdfYmVnaW4oKTsKLSsgICAgVXNlcjo6 b3BfaXRlcmF0b3IgQUUgPSBJLmFyZ19lbmQoKTsKLSAgICAgR0JFX0FTU0VSVChBSSAhPSBBRSk7 Ci0KLSAgICAgVmFsdWUgKmxsdm1QdHIgPSAqKEFJKyspOwotQEAgLTQ1MjIsOSArNDUyMiw5IEBA Ci0gICAgIEdCRV9BU1NFUlQoQUkgPT0gQUUpOwotICAgfQotCi0tICB2b2lkIEdlbldyaXRlcjo6 ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KENhbGxJbnN0ICZJLCBDYWxsU2l0ZSAmQ1MsIGJv b2wgaXNXcml0ZSwgdWludDhfdCB2ZWNfc2l6ZSwgaXI6OlR5cGUgdHlwZSkgewotLSAgICBDYWxs U2l0ZTo6YXJnX2l0ZXJhdG9yIEFJID0gQ1MuYXJnX2JlZ2luKCk7Ci0tICAgIENhbGxTaXRlOjph cmdfaXRlcmF0b3IgQUUgPSBDUy5hcmdfZW5kKCk7Ci0rICB2b2lkIEdlbldyaXRlcjo6ZW1pdEJs b2NrUmVhZFdyaXRlSW1hZ2VJbnN0KENhbGxJbnN0ICZJLCBib29sIGlzV3JpdGUsIHVpbnQ4X3Qg dmVjX3NpemUsIGlyOjpUeXBlIHR5cGUpIHsKLSsgICAgVXNlcjo6b3BfaXRlcmF0b3IgQUkgPSBJ LmFyZ19iZWdpbigpOwotKyAgICBVc2VyOjpvcF9pdGVyYXRvciBBRSA9IEkuYXJnX2VuZCgpOwot ICAgICBHQkVfQVNTRVJUKEFJICE9IEFFKTsKLQotICAgICBjb25zdCB1aW50OF90IGltYWdlSUQg PSBnZXRJbWFnZUlEKEkpOwotQEAgLTQ1NTcsNyArNDU1Nyw3IEBACi0KLSAgIC8qIGFwcGVuZCBh IG5ldyBzYW1wbGVyLiBzaG91bGQgYmUgY2FsbGVkIGJlZm9yZSBhbnkgcmVmZXJlbmNlIHRvCi0g ICAgKiBhIHNhbXBsZXJfdCB2YWx1ZS4gKi8KLS0gIHVpbnQ4X3QgR2VuV3JpdGVyOjphcHBlbmRT YW1wbGVyKENhbGxTaXRlOjphcmdfaXRlcmF0b3IgQUkpIHsKLSsgIHVpbnQ4X3QgR2VuV3JpdGVy OjphcHBlbmRTYW1wbGVyKFVzZXI6Om9wX2l0ZXJhdG9yIEFJKSB7Ci0gI2lmIExMVk1fVkVSU0lP Tl9NQUpPUiAqIDEwICsgTExWTV9WRVJTSU9OX01JTk9SID49IDQwCi0gICAgIENhbGxJbnN0ICpU QyA9IGR5bl9jYXN0PENhbGxJbnN0PigqQUkpOwotICAgICBDb25zdGFudCAqQ1BWID0gVEMgPyBk eW5fY2FzdDxDb25zdGFudD4oVEMtPmdldE9wZXJhbmQoMCkpIDogTlVMTDsKLUBAIC00NTk1LDEw ICs0NTk1LDkgQEAKLSAgICAgICAgIGNvbnN0IGlyOjpGdW5jdGlvbiAmZm4gPSBjdHguZ2V0RnVu Y3Rpb24oKTsKLQotICAgICAgICAgLy8gR2V0IHRoZSBmdW5jdGlvbiBhcmd1bWVudHMKLS0gICAg ICAgIENhbGxTaXRlIENTKCZJKTsKLS0gICAgICAgIENhbGxTaXRlOjphcmdfaXRlcmF0b3IgQUkg PSBDUy5hcmdfYmVnaW4oKTsKLSsgICAgICAgIFVzZXI6Om9wX2l0ZXJhdG9yIEFJID0gSS5hcmdf YmVnaW4oKTsKLSAjaWYgR0JFX0RFQlVHCi0tICAgICAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9y IEFFID0gQ1MuYXJnX2VuZCgpOwotKyAgICAgICAgVXNlcjo6b3BfaXRlcmF0b3IgQUUgPSBJLmFy Z19lbmQoKTsKLSAjZW5kaWYgLyogR0JFX0RFQlVHICovCi0gICAgICAgICBzd2l0Y2ggKEYtPmdl dEludHJpbnNpY0lEKCkpIHsKLSAgICAgICAgICAgY2FzZSBJbnRyaW5zaWM6OnN0YWNrc2F2ZToK LUBAIC00NzY0LDE3ICs0NzYzLDE3IEBACi0gICAgICAgICAgICAgY3R4Lk1BRChzcmNUeXBlLCBk c3QsIHNyYzAsIHNyYzEsIHNyYzIpOwotICAgICAgICAgICB9Ci0gICAgICAgICAgIGJyZWFrOwot LSAgICAgICAgICBjYXNlIEludHJpbnNpYzo6c3FydDogdGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3Qo SSxDUyxpcjo6T1BfU1FSKTsgYnJlYWs7Ci0tICAgICAgICAgIGNhc2UgSW50cmluc2ljOjpjZWls OiB0aGlzLT5lbWl0Um91bmRpbmdDYWxsSW5zdChJLENTLGlyOjpPUF9STkRVKTsgYnJlYWs7Ci0t ICAgICAgICAgIGNhc2UgSW50cmluc2ljOjp0cnVuYzogdGhpcy0+ZW1pdFJvdW5kaW5nQ2FsbElu c3QoSSxDUyxpcjo6T1BfUk5EWik7IGJyZWFrOwotLSAgICAgICAgICBjYXNlIEludHJpbnNpYzo6 cmludDogdGhpcy0+ZW1pdFJvdW5kaW5nQ2FsbEluc3QoSSxDUyxpcjo6T1BfUk5ERSk7IGJyZWFr OwotLSAgICAgICAgICBjYXNlIEludHJpbnNpYzo6Zmxvb3I6IHRoaXMtPmVtaXRSb3VuZGluZ0Nh bGxJbnN0KEksQ1MsaXI6Ok9QX1JOREQpOyBicmVhazsKLS0gICAgICAgICAgY2FzZSBJbnRyaW5z aWM6OnNpbjogdGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3QoSSxDUyxpcjo6T1BfU0lOKTsgYnJlYWs7 Ci0tICAgICAgICAgIGNhc2UgSW50cmluc2ljOjpjb3M6IHRoaXMtPmVtaXRVbmFyeUNhbGxJbnN0 KEksQ1MsaXI6Ok9QX0NPUyk7IGJyZWFrOwotLSAgICAgICAgICBjYXNlIEludHJpbnNpYzo6bG9n MjogdGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3QoSSxDUyxpcjo6T1BfTE9HKTsgYnJlYWs7Ci0tICAg ICAgICAgIGNhc2UgSW50cmluc2ljOjpleHAyOiB0aGlzLT5lbWl0VW5hcnlDYWxsSW5zdChJLENT LGlyOjpPUF9FWFApOyBicmVhazsKLSsgICAgICAgICAgY2FzZSBJbnRyaW5zaWM6OnNxcnQ6IHRo aXMtPmVtaXRVbmFyeUNhbGxJbnN0KEksaXI6Ok9QX1NRUik7IGJyZWFrOwotKyAgICAgICAgICBj YXNlIEludHJpbnNpYzo6Y2VpbDogdGhpcy0+ZW1pdFJvdW5kaW5nQ2FsbEluc3QoSSxpcjo6T1Bf Uk5EVSk7IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEludHJpbnNpYzo6dHJ1bmM6IHRoaXMtPmVt aXRSb3VuZGluZ0NhbGxJbnN0KEksaXI6Ok9QX1JORFopOyBicmVhazsKLSsgICAgICAgICAgY2Fz ZSBJbnRyaW5zaWM6OnJpbnQ6IHRoaXMtPmVtaXRSb3VuZGluZ0NhbGxJbnN0KEksaXI6Ok9QX1JO REUpOyBicmVhazsKLSsgICAgICAgICAgY2FzZSBJbnRyaW5zaWM6OmZsb29yOiB0aGlzLT5lbWl0 Um91bmRpbmdDYWxsSW5zdChJLGlyOjpPUF9STkREKTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2Ug SW50cmluc2ljOjpzaW46IHRoaXMtPmVtaXRVbmFyeUNhbGxJbnN0KEksaXI6Ok9QX1NJTik7IGJy ZWFrOwotKyAgICAgICAgICBjYXNlIEludHJpbnNpYzo6Y29zOiB0aGlzLT5lbWl0VW5hcnlDYWxs SW5zdChJLGlyOjpPUF9DT1MpOyBicmVhazsKLSsgICAgICAgICAgY2FzZSBJbnRyaW5zaWM6Omxv ZzI6IHRoaXMtPmVtaXRVbmFyeUNhbGxJbnN0KEksaXI6Ok9QX0xPRyk7IGJyZWFrOwotKyAgICAg ICAgICBjYXNlIEludHJpbnNpYzo6ZXhwMjogdGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3QoSSxpcjo6 T1BfRVhQKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgSW50cmluc2ljOjpic3dhcDoKLS0gICAg ICAgICAgICB0aGlzLT5lbWl0VW5hcnlDYWxsSW5zdChJLENTLGlyOjpPUF9CU1dBUCwgZ2V0VW5z aWduZWRUeXBlKGN0eCwgSS5nZXRUeXBlKCkpKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ ZW1pdFVuYXJ5Q2FsbEluc3QoSSxpcjo6T1BfQlNXQVAsIGdldFVuc2lnbmVkVHlwZShjdHgsIEku Z2V0VHlwZSgpKSk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEludHJpbnNpYzo6cG93OgotICAg ICAgICAgICB7Ci0gICAgICAgICAgICAgY29uc3QgaXI6OlJlZ2lzdGVyIHNyYzAgPSB0aGlzLT5n ZXRSZWdpc3RlcigqQUkpOyArK0FJOwotQEAgLTQ3OTQsMjEgKzQ3OTMsMjAgQEAKLSAgICAgICAg IH0KLSAgICAgICB9IGVsc2UgewotICAgICAgICAgLy8gR2V0IHRoZSBuYW1lIG9mIHRoZSBjYWxs ZWQgZnVuY3Rpb24gYW5kIGhhbmRsZSBpdAotLSAgICAgICAgVmFsdWUgKkNhbGxlZSA9IEkuZ2V0 Q2FsbGVkVmFsdWUoKTsKLS0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZuTmFtZSA9IENhbGxl ZS0+c3RyaXBQb2ludGVyQ2FzdHMoKS0+Z2V0TmFtZSgpOwotKyAgICAgICAgVmFsdWUgKkNhbGxl ZSA9IEkuZ2V0Q2FsbGVkT3BlcmFuZCgpOwotKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZm5O YW1lID0gQ2FsbGVlLT5zdHJpcFBvaW50ZXJDYXN0cygpLT5nZXROYW1lKCkuc3RyKCk7Ci0gICAg ICAgICBhdXRvIGdlbkludHJpbnNpY0lEID0gaW50cmluc2ljTWFwLmZpbmQoZm5OYW1lKTsKLQot ICAgICAgICAgLy8gR2V0IHRoZSBmdW5jdGlvbiBhcmd1bWVudHMKLS0gICAgICAgIENhbGxTaXRl IENTKCZJKTsKLS0gICAgICAgIENhbGxTaXRlOjphcmdfaXRlcmF0b3IgQUkgPSBDUy5hcmdfYmVn aW4oKTsKLSsgICAgICAgIFVzZXI6Om9wX2l0ZXJhdG9yIEFJID0gSS5hcmdfYmVnaW4oKTsKLSAj aWYgR0JFX0RFQlVHCi0tICAgICAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIEFFID0gQ1MuYXJn X2VuZCgpOwotKyAgICAgICAgVXNlcjo6b3BfaXRlcmF0b3IgQUUgPSBJLmFyZ19lbmQoKTsKLSAj ZW5kaWYgLyogR0JFX0RFQlVHICovCi0KLSAgICAgICAgIHN3aXRjaCAoZ2VuSW50cmluc2ljSUQp IHsKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX0ZCSDogdGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3Qo SSxDUyxpcjo6T1BfRkJILCBpcjo6VFlQRV9VMzIpOyBicmVhazsKLS0gICAgICAgICAgY2FzZSBH RU5fT0NMX0ZCTDogdGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3QoSSxDUyxpcjo6T1BfRkJMLCBpcjo6 VFlQRV9VMzIpOyBicmVhazsKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX0NCSVQ6IHRoaXMtPmVt aXRVbmFyeUNhbGxJbnN0KEksQ1MsaXI6Ok9QX0NCSVQsIGdldFVuc2lnbmVkVHlwZShjdHgsICgq QUkpLT5nZXRUeXBlKCkpKTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgR0VOX09DTF9GQkg6IHRo aXMtPmVtaXRVbmFyeUNhbGxJbnN0KEksaXI6Ok9QX0ZCSCwgaXI6OlRZUEVfVTMyKTsgYnJlYWs7 Ci0rICAgICAgICAgIGNhc2UgR0VOX09DTF9GQkw6IHRoaXMtPmVtaXRVbmFyeUNhbGxJbnN0KEks aXI6Ok9QX0ZCTCwgaXI6OlRZUEVfVTMyKTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgR0VOX09D TF9DQklUOiB0aGlzLT5lbWl0VW5hcnlDYWxsSW5zdChJLGlyOjpPUF9DQklULCBnZXRVbnNpZ25l ZFR5cGUoY3R4LCAoKkFJKS0+Z2V0VHlwZSgpKSk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdF Tl9PQ0xfQUJTOgotICAgICAgICAgICB7Ci0gICAgICAgICAgICAgY29uc3QgaXI6OlJlZ2lzdGVy IHNyYyA9IHRoaXMtPmdldFJlZ2lzdGVyKCpBSSk7Ci1AQCAtNDkxNSw4ICs0OTEzLDggQEAKLSAg ICAgICAgICAgICBjdHguUkVHSU9OKGRzdCwgc3JjLCB4LmdldEludGVnZXJWYWx1ZSgpKTsKLSAg ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgfQotLSAgICAgICAgICBjYXNlIEdFTl9PQ0xf UlNROiB0aGlzLT5lbWl0VW5hcnlDYWxsSW5zdChJLENTLGlyOjpPUF9SU1EpOyBicmVhazsKLS0g ICAgICAgICAgY2FzZSBHRU5fT0NMX1JDUDogdGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3QoSSxDUyxp cjo6T1BfUkNQKTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgR0VOX09DTF9SU1E6IHRoaXMtPmVt aXRVbmFyeUNhbGxJbnN0KEksaXI6Ok9QX1JTUSk7IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEdF Tl9PQ0xfUkNQOiB0aGlzLT5lbWl0VW5hcnlDYWxsSW5zdChJLGlyOjpPUF9SQ1ApOyBicmVhazsK LSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0ZPUkNFX1NJTUQ4OiBjdHguc2V0U2ltZFdpZHRoKDgp OyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0ZPUkNFX1NJTUQxNjogY3R4LnNldFNp bWRXaWR0aCgxNik7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfTEJBUlJJRVI6IGN0 eC5TWU5DKGlyOjpzeW5jTG9jYWxCYXJyaWVyKTsgYnJlYWs7Ci1AQCAtNDk0NywzMSArNDk0NSwz MSBAQAotICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICB9Ci0gICAgICAgICAgIGNhc2Ug R0VOX09DTF9BVE9NSUNfQUREMDoKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19BREQx OiB0aGlzLT5lbWl0QXRvbWljSW5zdChJLENTLGlyOjpBVE9NSUNfT1BfQUREKTsgYnJlYWs7Ci0r ICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfQUREMTogdGhpcy0+ZW1pdEF0b21pY0luc3Qo SSxpcjo6QVRPTUlDX09QX0FERCk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfQVRP TUlDX1NVQjA6Ci0tICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfU1VCMTogdGhpcy0+ZW1p dEF0b21pY0luc3QoSSxDUyxpcjo6QVRPTUlDX09QX1NVQik7IGJyZWFrOwotKyAgICAgICAgICBj YXNlIEdFTl9PQ0xfQVRPTUlDX1NVQjE6IHRoaXMtPmVtaXRBdG9taWNJbnN0KEksaXI6OkFUT01J Q19PUF9TVUIpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19BTkQwOgot LSAgICAgICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlDX0FORDE6IHRoaXMtPmVtaXRBdG9taWNJbnN0 KEksQ1MsaXI6OkFUT01JQ19PUF9BTkQpOyBicmVhazsKLSsgICAgICAgICAgY2FzZSBHRU5fT0NM X0FUT01JQ19BTkQxOiB0aGlzLT5lbWl0QXRvbWljSW5zdChJLGlyOjpBVE9NSUNfT1BfQU5EKTsg YnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfT1IwOgotLSAgICAgICAgICBj YXNlIEdFTl9PQ0xfQVRPTUlDX09SMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxDUyxpcjo6QVRP TUlDX09QX09SKTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfT1IxOiB0 aGlzLT5lbWl0QXRvbWljSW5zdChJLGlyOjpBVE9NSUNfT1BfT1IpOyBicmVhazsKLSAgICAgICAg ICAgY2FzZSBHRU5fT0NMX0FUT01JQ19YT1IwOgotLSAgICAgICAgICBjYXNlIEdFTl9PQ0xfQVRP TUlDX1hPUjE6IHRoaXMtPmVtaXRBdG9taWNJbnN0KEksQ1MsaXI6OkFUT01JQ19PUF9YT1IpOyBi cmVhazsKLSsgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19YT1IxOiB0aGlzLT5lbWl0QXRv bWljSW5zdChJLGlyOjpBVE9NSUNfT1BfWE9SKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VO X09DTF9BVE9NSUNfWENIRzA6Ci0tICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfWENIRzE6 IHRoaXMtPmVtaXRBdG9taWNJbnN0KEksQ1MsaXI6OkFUT01JQ19PUF9YQ0hHKTsgYnJlYWs7Ci0r ICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfWENIRzE6IHRoaXMtPmVtaXRBdG9taWNJbnN0 KEksaXI6OkFUT01JQ19PUF9YQ0hHKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9B VE9NSUNfSU5DMDoKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19JTkMxOiB0aGlzLT5l bWl0QXRvbWljSW5zdChJLENTLGlyOjpBVE9NSUNfT1BfSU5DKTsgYnJlYWs7Ci0rICAgICAgICAg IGNhc2UgR0VOX09DTF9BVE9NSUNfSU5DMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxpcjo6QVRP TUlDX09QX0lOQyk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlDX0RFQzA6 Ci0tICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfREVDMTogdGhpcy0+ZW1pdEF0b21pY0lu c3QoSSxDUyxpcjo6QVRPTUlDX09QX0RFQyk7IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEdFTl9P Q0xfQVRPTUlDX0RFQzE6IHRoaXMtPmVtaXRBdG9taWNJbnN0KEksaXI6OkFUT01JQ19PUF9ERUMp OyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19VTUlOMDoKLS0gICAgICAg ICAgY2FzZSBHRU5fT0NMX0FUT01JQ19VTUlOMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxDUyxp cjo6QVRPTUlDX09QX1VNSU4pOyBicmVhazsKLSsgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01J Q19VTUlOMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxpcjo6QVRPTUlDX09QX1VNSU4pOyBicmVh azsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19VTUFYMDoKLS0gICAgICAgICAgY2Fz ZSBHRU5fT0NMX0FUT01JQ19VTUFYMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxDUyxpcjo6QVRP TUlDX09QX1VNQVgpOyBicmVhazsKLSsgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19VTUFY MTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxpcjo6QVRPTUlDX09QX1VNQVgpOyBicmVhazsKLSAg ICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19JTUlOMDoKLS0gICAgICAgICAgY2FzZSBHRU5f T0NMX0FUT01JQ19JTUlOMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxDUyxpcjo6QVRPTUlDX09Q X0lNSU4pOyBicmVhazsKLSsgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19JTUlOMTogdGhp cy0+ZW1pdEF0b21pY0luc3QoSSxpcjo6QVRPTUlDX09QX0lNSU4pOyBicmVhazsKLSAgICAgICAg ICAgY2FzZSBHRU5fT0NMX0FUT01JQ19JTUFYMDoKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX0FU T01JQ19JTUFYMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxDUyxpcjo6QVRPTUlDX09QX0lNQVgp OyBicmVhazsKLSsgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19JTUFYMTogdGhpcy0+ZW1p dEF0b21pY0luc3QoSSxpcjo6QVRPTUlDX09QX0lNQVgpOyBicmVhazsKLSAgICAgICAgICAgY2Fz ZSBHRU5fT0NMX0FUT01JQ19DTVBYQ0hHMDoKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01J Q19DTVBYQ0hHMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxDUyxpcjo6QVRPTUlDX09QX0NNUFhD SEcpOyBicmVhazsKLSsgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19DTVBYQ0hHMTogdGhp cy0+ZW1pdEF0b21pY0luc3QoSSxpcjo6QVRPTUlDX09QX0NNUFhDSEcpOyBicmVhazsKLSAgICAg ICAgICAgY2FzZSBHRU5fT0NMX0dFVF9JTUFHRV9XSURUSDoKLSAgICAgICAgICAgY2FzZSBHRU5f T0NMX0dFVF9JTUFHRV9IRUlHSFQ6Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9HRVRfSU1BR0Vf REVQVEg6Ci1AQCAtNTQyOSw0OCArNTQyNyw0OCBAQAotICAgICAgICAgICAgIGN0eC5XQUlUKCk7 Ci0gICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgIH0KLS0gICAgICAgICAgY2FzZSBHRU5f T0NMX1dPUktfR1JPVVBfQUxMOiB0aGlzLT5lbWl0V29ya0dyb3VwSW5zdChJLCBDUywgaXI6OldP UktHUk9VUF9PUF9BTEwpOyBicmVhazsKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX1dPUktfR1JP VVBfQU5ZOiB0aGlzLT5lbWl0V29ya0dyb3VwSW5zdChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9B TlkpOyBicmVhazsKLSsgICAgICAgICAgY2FzZSBHRU5fT0NMX1dPUktfR1JPVVBfQUxMOiB0aGlz LT5lbWl0V29ya0dyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09QX0FMTCk7IGJyZWFrOwotKyAg ICAgICAgICBjYXNlIEdFTl9PQ0xfV09SS19HUk9VUF9BTlk6IHRoaXMtPmVtaXRXb3JrR3JvdXBJ bnN0KEksIGlyOjpXT1JLR1JPVVBfT1BfQU5ZKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VO X09DTF9XT1JLX0dST1VQX0JST0FEQ0FTVDoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0V29ya0dy b3VwSW5zdChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9CUk9BRENBU1QpOyBicmVhazsKLSsgICAg ICAgICAgICB0aGlzLT5lbWl0V29ya0dyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09QX0JST0FE Q0FTVCk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfV09SS19HUk9VUF9SRURVQ0Vf QUREOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0KEksIENTLCBpcjo6V09S S0dST1VQX09QX1JFRFVDRV9BREQpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0V29y a0dyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09QX1JFRFVDRV9BREQpOyBicmVhazsKLSAgICAg ICAgICAgY2FzZSBHRU5fT0NMX1dPUktfR1JPVVBfUkVEVUNFX01BWDoKLS0gICAgICAgICAgICB0 aGlzLT5lbWl0V29ya0dyb3VwSW5zdChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9SRURVQ0VfTUFY KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdFdvcmtHcm91cEluc3QoSSwgaXI6OldP UktHUk9VUF9PUF9SRURVQ0VfTUFYKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9X T1JLX0dST1VQX1JFRFVDRV9NSU46Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFdvcmtHcm91cElu c3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfUkVEVUNFX01JTik7IGJyZWFrOwotKyAgICAgICAg ICAgIHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0KEksIGlyOjpXT1JLR1JPVVBfT1BfUkVEVUNFX01J Tik7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfV09SS19HUk9VUF9TQ0FOX0VYQ0xV U0lWRV9BREQ6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFdvcmtHcm91cEluc3QoSSwgQ1MsIGly OjpXT1JLR1JPVVBfT1BfRVhDTFVTSVZFX0FERCk7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMt PmVtaXRXb3JrR3JvdXBJbnN0KEksIGlyOjpXT1JLR1JPVVBfT1BfRVhDTFVTSVZFX0FERCk7IGJy ZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfV09SS19HUk9VUF9TQ0FOX0VYQ0xVU0lWRV9N QVg6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFdvcmtHcm91cEluc3QoSSwgQ1MsIGlyOjpXT1JL R1JPVVBfT1BfRVhDTFVTSVZFX01BWCk7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRX b3JrR3JvdXBJbnN0KEksIGlyOjpXT1JLR1JPVVBfT1BfRVhDTFVTSVZFX01BWCk7IGJyZWFrOwot ICAgICAgICAgICBjYXNlIEdFTl9PQ0xfV09SS19HUk9VUF9TQ0FOX0VYQ0xVU0lWRV9NSU46Ci0t ICAgICAgICAgICAgdGhpcy0+ZW1pdFdvcmtHcm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBf T1BfRVhDTFVTSVZFX01JTik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRXb3JrR3Jv dXBJbnN0KEksIGlyOjpXT1JLR1JPVVBfT1BfRVhDTFVTSVZFX01JTik7IGJyZWFrOwotICAgICAg ICAgICBjYXNlIEdFTl9PQ0xfV09SS19HUk9VUF9TQ0FOX0lOQ0xVU0lWRV9BREQ6Ci0tICAgICAg ICAgICAgdGhpcy0+ZW1pdFdvcmtHcm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfSU5D TFVTSVZFX0FERCk7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0 KEksIGlyOjpXT1JLR1JPVVBfT1BfSU5DTFVTSVZFX0FERCk7IGJyZWFrOwotICAgICAgICAgICBj YXNlIEdFTl9PQ0xfV09SS19HUk9VUF9TQ0FOX0lOQ0xVU0lWRV9NQVg6Ci0tICAgICAgICAgICAg dGhpcy0+ZW1pdFdvcmtHcm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfSU5DTFVTSVZF X01BWCk7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0KEksIGly OjpXT1JLR1JPVVBfT1BfSU5DTFVTSVZFX01BWCk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdF Tl9PQ0xfV09SS19HUk9VUF9TQ0FOX0lOQ0xVU0lWRV9NSU46Ci0tICAgICAgICAgICAgdGhpcy0+ ZW1pdFdvcmtHcm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfSU5DTFVTSVZFX01JTik7 IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0KEksIGlyOjpXT1JL R1JPVVBfT1BfSU5DTFVTSVZFX01JTik7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xf U1VCX0dST1VQX0JST0FEQ0FTVDoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0U3ViR3JvdXBJbnN0 KEksIENTLCBpcjo6V09SS0dST1VQX09QX0JST0FEQ0FTVCk7IGJyZWFrOwotKyAgICAgICAgICAg IHRoaXMtPmVtaXRTdWJHcm91cEluc3QoSSwgaXI6OldPUktHUk9VUF9PUF9CUk9BRENBU1QpOyBi cmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9SRURVQ0VfQUREOgotLSAg ICAgICAgICAgIHRoaXMtPmVtaXRTdWJHcm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1Bf UkVEVUNFX0FERCk7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRTdWJHcm91cEluc3Qo SSwgaXI6OldPUktHUk9VUF9PUF9SRURVQ0VfQUREKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2Ug R0VOX09DTF9TVUJfR1JPVVBfUkVEVUNFX01BWDoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0U3Vi R3JvdXBJbnN0KEksIENTLCBpcjo6V09SS0dST1VQX09QX1JFRFVDRV9NQVgpOyBicmVhazsKLSsg ICAgICAgICAgICB0aGlzLT5lbWl0U3ViR3JvdXBJbnN0KEksIGlyOjpXT1JLR1JPVVBfT1BfUkVE VUNFX01BWCk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX1JFRFVD RV9NSU46Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBDUywgaXI6OldP UktHUk9VUF9PUF9SRURVQ0VfTUlOKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdFN1 Ykdyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09QX1JFRFVDRV9NSU4pOyBicmVhazsKLSAgICAg ICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9TQ0FOX0VYQ0xVU0lWRV9BREQ6Ci0tICAgICAg ICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9FWENM VVNJVkVfQUREKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJ LCBpcjo6V09SS0dST1VQX09QX0VYQ0xVU0lWRV9BREQpOyBicmVhazsKLSAgICAgICAgICAgY2Fz ZSBHRU5fT0NMX1NVQl9HUk9VUF9TQ0FOX0VYQ0xVU0lWRV9NQVg6Ci0tICAgICAgICAgICAgdGhp cy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9FWENMVVNJVkVfTUFY KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBpcjo6V09S S0dST1VQX09QX0VYQ0xVU0lWRV9NQVgpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NM X1NVQl9HUk9VUF9TQ0FOX0VYQ0xVU0lWRV9NSU46Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFN1 Ykdyb3VwSW5zdChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9FWENMVVNJVkVfTUlOKTsgYnJlYWs7 Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09Q X0VYQ0xVU0lWRV9NSU4pOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9V UF9TQ0FOX0lOQ0xVU0lWRV9BREQ6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5z dChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9JTkNMVVNJVkVfQUREKTsgYnJlYWs7Ci0rICAgICAg ICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09QX0lOQ0xVU0lW RV9BREQpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9TQ0FOX0lO Q0xVU0lWRV9NQVg6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBDUywg aXI6OldPUktHUk9VUF9PUF9JTkNMVVNJVkVfTUFYKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhp cy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09QX0lOQ0xVU0lWRV9NQVgpOyBi cmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9TQ0FOX0lOQ0xVU0lWRV9N SU46Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBDUywgaXI6OldPUktH Uk9VUF9PUF9JTkNMVVNJVkVfTUlOKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdFN1 Ykdyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09QX0lOQ0xVU0lWRV9NSU4pOyBicmVhazsKLSAg ICAgICAgICAgY2FzZSBHRU5fT0NMX0xSUDoKLSAgICAgICAgICAgewotICAgICAgICAgICAgIGNv bnN0IGlyOjpSZWdpc3RlciBkc3QgID0gdGhpcy0+Z2V0UmVnaXN0ZXIoJkkpOwotQEAgLTU0ODQs NjkgKzU0ODIsNjkgQEAKLSAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgfQotICAgICAg ICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1JFQURfVUlfTUVNOgotLSAgICAgICAg ICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgQ1MsIGZhbHNlLCAxKTsgYnJl YWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCBmYWxz ZSwgMSk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1JF QURfVUlfTUVNMjoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0 KEksIENTLCBmYWxzZSwgMik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1Jl YWRXcml0ZU1lbUluc3QoSSwgZmFsc2UsIDIpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5f T0NMX1NVQl9HUk9VUF9CTE9DS19SRUFEX1VJX01FTTQ6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1p dEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCBDUywgZmFsc2UsIDQpOyBicmVhazsKLSsgICAgICAg ICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIGZhbHNlLCA0KTsgYnJlYWs7 Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfUkVBRF9VSV9NRU04Ogot LSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgQ1MsIGZhbHNl LCA4KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5z dChJLCBmYWxzZSwgOCk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQ X0JMT0NLX1dSSVRFX1VJX01FTToKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3Jp dGVNZW1JbnN0KEksIENTLCB0cnVlLCAxKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1p dEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCB0cnVlLCAxKTsgYnJlYWs7Ci0gICAgICAgICAgIGNh c2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfV1JJVEVfVUlfTUVNMjoKLS0gICAgICAgICAgICB0 aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIENTLCB0cnVlLCAyKTsgYnJlYWs7Ci0r ICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCB0cnVlLCAyKTsg YnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfV1JJVEVfVUlf TUVNNDoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIENT LCB0cnVlLCA0KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRl TWVtSW5zdChJLCB0cnVlLCA0KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJf R1JPVVBfQkxPQ0tfV1JJVEVfVUlfTUVNODoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tS ZWFkV3JpdGVNZW1JbnN0KEksIENTLCB0cnVlLCA4KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhp cy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCB0cnVlLCA4KTsgYnJlYWs7Ci0gICAgICAg ICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfUkVBRF9VSV9JTUFHRToKLS0gICAgICAg ICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoSSwgQ1MsIGZhbHNlLCAxKTsg YnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEks IGZhbHNlLCAxKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxP Q0tfUkVBRF9VSV9JTUFHRTI6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRl SW1hZ2VJbnN0KEksIENTLCBmYWxzZSwgMik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVt aXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCBmYWxzZSwgMik7IGJyZWFrOwotICAgICAgICAg ICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1JFQURfVUlfSU1BR0U0OgotLSAgICAgICAg ICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCBDUywgZmFsc2UsIDQpOyBi cmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoSSwg ZmFsc2UsIDQpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9D S19SRUFEX1VJX0lNQUdFODoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVJ bWFnZUluc3QoSSwgQ1MsIGZhbHNlLCA4KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1p dEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIGZhbHNlLCA4KTsgYnJlYWs7Ci0gICAgICAgICAg IGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfV1JJVEVfVUlfSU1BR0U6Ci0tICAgICAgICAg ICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIENTLCB0cnVlLCAxKTsgYnJl YWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIHRy dWUsIDEpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19X UklURV9VSV9JTUFHRTI6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1h Z2VJbnN0KEksIENTLCB0cnVlLCAyKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJs b2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIHRydWUsIDIpOyBicmVhazsKLSAgICAgICAgICAgY2Fz ZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19XUklURV9VSV9JTUFHRTQ6Ci0tICAgICAgICAgICAg dGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIENTLCB0cnVlLCA0KTsgYnJlYWs7 Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIHRydWUs IDQpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19XUklU RV9VSV9JTUFHRTg6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJ bnN0KEksIENTLCB0cnVlLCA4KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2Nr UmVhZFdyaXRlSW1hZ2VJbnN0KEksIHRydWUsIDgpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBH RU5fT0NMX1NVQl9HUk9VUF9CTE9DS19SRUFEX1VTX01FTToKLS0gICAgICAgICAgICB0aGlzLT5l bWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIENTLCBmYWxzZSwgMSwgaXI6OlRZUEVfVTE2KTsg YnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCBm YWxzZSwgMSwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9T VUJfR1JPVVBfQkxPQ0tfUkVBRF9VU19NRU0yOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9j a1JlYWRXcml0ZU1lbUluc3QoSSwgQ1MsIGZhbHNlLCAyLCBpcjo6VFlQRV9VMTYpOyBicmVhazsK LSsgICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIGZhbHNlLCAy LCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9V UF9CTE9DS19SRUFEX1VTX01FTTQ6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdy aXRlTWVtSW5zdChJLCBDUywgZmFsc2UsIDQsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotKyAgICAg ICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgZmFsc2UsIDQsIGlyOjpU WVBFX1UxNik7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NL X1JFQURfVVNfTUVNODoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1J bnN0KEksIENTLCBmYWxzZSwgOCwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0rICAgICAgICAgICAg dGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCBmYWxzZSwgOCwgaXI6OlRZUEVfVTE2 KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfV1JJVEVf VVNfTUVNOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwg Q1MsIHRydWUsIDEsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVt aXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgdHJ1ZSwgMSwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7 Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfV1JJVEVfVVNfTUVNMjoK LS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIENTLCB0cnVl LCAyLCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tS ZWFkV3JpdGVNZW1JbnN0KEksIHRydWUsIDIsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotICAgICAg ICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1dSSVRFX1VTX01FTTQ6Ci0tICAgICAg ICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCBDUywgdHJ1ZSwgNCwgaXI6 OlRZUEVfVTE2KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRl TWVtSW5zdChJLCB0cnVlLCA0LCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSAgICAgICAgICAgY2Fz ZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19XUklURV9VU19NRU04OgotLSAgICAgICAgICAgIHRo aXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgQ1MsIHRydWUsIDgsIGlyOjpUWVBFX1Ux Nik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3Qo SSwgdHJ1ZSwgOCwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09D TF9TVUJfR1JPVVBfQkxPQ0tfUkVBRF9VU19JTUFHRToKLS0gICAgICAgICAgICB0aGlzLT5lbWl0 QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoSSwgQ1MsIGZhbHNlLCAxLCBpcjo6VFlQRV9VMTYpOyBi cmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoSSwg ZmFsc2UsIDEsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xf U1VCX0dST1VQX0JMT0NLX1JFQURfVVNfSU1BR0UyOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRC bG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCBDUywgZmFsc2UsIDIsIGlyOjpUWVBFX1UxNik7IGJy ZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCBm YWxzZSwgMiwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9T VUJfR1JPVVBfQkxPQ0tfUkVBRF9VU19JTUFHRTQ6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJs b2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIENTLCBmYWxzZSwgNCwgaXI6OlRZUEVfVTE2KTsgYnJl YWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIGZh bHNlLCA0LCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NV Ql9HUk9VUF9CTE9DS19SRUFEX1VTX0lNQUdFODoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0Qmxv Y2tSZWFkV3JpdGVJbWFnZUluc3QoSSwgQ1MsIGZhbHNlLCA4LCBpcjo6VFlQRV9VMTYpOyBicmVh azsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoSSwgZmFs c2UsIDgsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VC X0dST1VQX0JMT0NLX1dSSVRFX1VTX0lNQUdFOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9j a1JlYWRXcml0ZUltYWdlSW5zdChJLCBDUywgdHJ1ZSwgMSwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7 Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIHRydWUs IDEsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dS T1VQX0JMT0NLX1dSSVRFX1VTX0lNQUdFMjoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tS ZWFkV3JpdGVJbWFnZUluc3QoSSwgQ1MsIHRydWUsIDIsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwot KyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCB0cnVlLCAy LCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9V UF9CTE9DS19XUklURV9VU19JTUFHRTQ6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVh ZFdyaXRlSW1hZ2VJbnN0KEksIENTLCB0cnVlLCA0LCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSsg ICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoSSwgdHJ1ZSwgNCwg aXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBf QkxPQ0tfV1JJVEVfVVNfSU1BR0U4OgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRX cml0ZUltYWdlSW5zdChJLCBDUywgdHJ1ZSwgOCwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0rICAg ICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIHRydWUsIDgsIGly OjpUWVBFX1UxNik7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfR0VUX1BJUEU6Ci0g ICAgICAgICAgIGNhc2UgR0VOX09DTF9NQUtFX1JJRDoKLSAgICAgICAgICAgY2FzZSBHRU5fT0NM X0dFVF9SSUQ6Ci0tLS0gYS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1faW5jbHVkZXMuaHBwCTIwMjAt MTEtMDkgMTY6NDg6MjAuODIzODY2MTEyICswMTAwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xs dm1faW5jbHVkZXMuaHBwCTIwMjAtMTEtMDkgMTk6MDA6MDkuOTU1OTI2Nzk1ICswMTAwCi1AQCAt MTAzLDcgKzEwMyw2IEBACi0KLSAjaWYgTExWTV9WRVJTSU9OX01BSk9SICogMTAgKyBMTFZNX1ZF UlNJT05fTUlOT1IgPj0gMzUKLSAjaW5jbHVkZSAibGx2bS9JUi9NYW5nbGVyLmgiCi0tI2luY2x1 ZGUgImxsdm0vSVIvQ2FsbFNpdGUuaCIKLSAjaW5jbHVkZSAibGx2bS9JUi9DRkcuaCIKLSAjaW5j bHVkZSAibGx2bS9JUi9JbnN0VmlzaXRvci5oIgotICNpbmNsdWRlICJsbHZtL0lSL0lSUHJpbnRp bmdQYXNzZXMuaCIKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9sb2Fkc3RvcmVfb3B0aW1p emF0aW9uLmNwcAkyMDIwLTExLTA5IDE2OjQ4OjIwLjgyMzg2NjExMiArMDEwMAotKysrIGIvYmFj a2VuZC9zcmMvbGx2bS9sbHZtX2xvYWRzdG9yZV9vcHRpbWl6YXRpb24uY3BwCTIwMjAtMTEtMDkg MTk6MTA6MzcuMTQxODUyMzA4ICswMTAwCi1AQCAtMTYwLDcgKzE2MCw3IEBACi0gICAgIFZhbHVl ICp2ZWNQdHIgPSBCdWlsZGVyLkNyZWF0ZUJpdENhc3QobGQtPmdldFBvaW50ZXJPcGVyYW5kKCks Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvaW50ZXJUeXBlOjpn ZXQodmVjVHksIGFkZHJTcGFjZSkpOwotICAgICBMb2FkSW5zdCAqdmVjVmFsdWUgPSBCdWlsZGVy LkNyZWF0ZUxvYWQodmVjUHRyKTsKLS0gICAgdmVjVmFsdWUtPnNldEFsaWdubWVudChhbGlnbik7 Ci0rICAgIHZlY1ZhbHVlLT5zZXRBbGlnbm1lbnQoYWxpZ24udmFsdWVPck9uZSgpKTsKLQotICAg ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgVmFsdWUgKlMg PSBCdWlsZGVyLkNyZWF0ZUV4dHJhY3RFbGVtZW50KHZlY1ZhbHVlLCBCdWlsZGVyLmdldEludDMy KGkpKTsKLUBAIC0yNTEsNyArMjUxLDcgQEAKLSAgICAgICByZXR1cm47Ci0gICAgIFZhbHVlICpu ZXdQdHIgPSBCdWlsZGVyLkNyZWF0ZUJpdENhc3Qoc3RQb2ludGVyLCBQb2ludGVyVHlwZTo6Z2V0 KHZlY1R5LCBhZGRyU3BhY2UpKTsKLSAgICAgU3RvcmVJbnN0ICpuZXdTVCA9IEJ1aWxkZXIuQ3Jl YXRlU3RvcmUocGFyZW50LCBuZXdQdHIpOwotLSAgICBuZXdTVC0+c2V0QWxpZ25tZW50KGFsaWdu KTsKLSsgICAgbmV3U1QtPnNldEFsaWdubWVudChhbGlnbi52YWx1ZU9yT25lKCkpOwotICAgfQot Ci0gICAvLyBGaW5kIHRoZSBzYWZlIGl0ZXJhdG9yIHdlIGNhbiBwb2ludCB0by4gSWYgcmVvcmRl ciBoYXBwZW5zLCB3ZSBuZWVkIHRvCi0tLS0gYS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fcGFzc2Vz LmNwcAkyMDIwLTExLTA5IDE2OjQ4OjIwLjgyMzg2NjExMiArMDEwMAotKysrIGIvYmFja2VuZC9z cmMvbGx2bS9sbHZtX3Bhc3Nlcy5jcHAJMjAyMC0xMS0wOSAxODo0ODo1NS45OTcwMDY4MzcgKzAx MDAKLUBAIC05NSw3ICs5NSw3IEBACi0gICB7Ci0gICAgIHN3aXRjaCAoVHktPmdldFR5cGVJRCgp KSB7Ci0gICAgICAgY2FzZSBUeXBlOjpWb2lkVHlJRDogTk9UX1NVUFBPUlRFRDsKLS0gICAgICBj YXNlIFR5cGU6OlZlY3RvclR5SUQ6Ci0rICAgICAgY2FzZSBUeXBlOjpGaXhlZFZlY3RvclR5SUQ6 Ci0gICAgICAgewotICAgICAgICAgY29uc3QgVmVjdG9yVHlwZSogVmVjVHkgPSBjYXN0PFZlY3Rv clR5cGU+KFR5KTsKLSAgICAgICAgIHVpbnQzMl90IGVsZW1OdW0gPSBWZWNUeS0+Z2V0TnVtRWxl bWVudHMoKTsKLUBAIC0xMzgsNyArMTM4LDcgQEAKLSAgICAgICBjYXNlIFR5cGU6OkhhbGZUeUlE OiAgICByZXR1cm4gMTY7Ci0gICAgICAgY2FzZSBUeXBlOjpGbG9hdFR5SUQ6ICAgcmV0dXJuIDMy OwotICAgICAgIGNhc2UgVHlwZTo6RG91YmxlVHlJRDogIHJldHVybiA2NDsKLS0gICAgICBjYXNl IFR5cGU6OlZlY3RvclR5SUQ6Ci0rICAgICAgY2FzZSBUeXBlOjpGaXhlZFZlY3RvclR5SUQ6Ci0g ICAgICAgewotICAgICAgICAgY29uc3QgVmVjdG9yVHlwZSogVmVjVHkgPSBjYXN0PFZlY3RvclR5 cGU+KFR5KTsKLSAgICAgICAgIHVpbnQzMl90IG51bUVsZW0gPSBWZWNUeS0+Z2V0TnVtRWxlbWVu dHMoKTsKLUBAIC0xODQsMTAgKzE4NCwxMiBAQAotICAgICBUeXBlICplbGVtZW50VHlwZSA9IE5V TEw7Ci0gICAgIGlmIChQb2ludGVyVHlwZSogcHRyVHlwZSA9IGR5bl9jYXN0PFBvaW50ZXJUeXBl PihlbHRUeSkpCi0gICAgICAgZWxlbWVudFR5cGUgPSBwdHJUeXBlLT5nZXRFbGVtZW50VHlwZSgp OwotLSAgICBlbHNlIGlmKFNlcXVlbnRpYWxUeXBlICogc2VxVHlwZSA9IGR5bl9jYXN0PFNlcXVl bnRpYWxUeXBlPihlbHRUeSkpCi0tICAgICAgZWxlbWVudFR5cGUgPSBzZXFUeXBlLT5nZXRFbGVt ZW50VHlwZSgpOwotLSAgICBlbHNlIGlmKENvbXBvc2l0ZVR5cGUgKiBjb21wVHk9IGR5bl9jYXN0 PENvbXBvc2l0ZVR5cGU+KGVsdFR5KSkKLS0gICAgICBlbGVtZW50VHlwZSA9IGNvbXBUeS0+Z2V0 VHlwZUF0SW5kZXgoaW5kZXgpOwotKyAgICBlbHNlIGlmIChBcnJheVR5cGUgKiBhcnJUeXBlID0g ZHluX2Nhc3Q8QXJyYXlUeXBlPihlbHRUeSkpCi0rICAgICAgZWxlbWVudFR5cGUgPSBhcnJUeXBl LT5nZXRFbGVtZW50VHlwZSgpOwotKyAgICBlbHNlIGlmKFZlY3RvclR5cGUgKiB2ZWNUeXBlID0g ZHluX2Nhc3Q8VmVjdG9yVHlwZT4oZWx0VHkpKQotKyAgICAgIGVsZW1lbnRUeXBlID0gdmVjVHlw ZS0+Z2V0RWxlbWVudFR5cGUoKTsKLSsgICAgZWxzZSBpZihTdHJ1Y3RUeXBlICogc3RydWN0VHlw ZSA9IGR5bl9jYXN0PFN0cnVjdFR5cGU+KGVsdFR5KSkKLSsgICAgICBlbGVtZW50VHlwZSA9IHN0 cnVjdFR5cGUtPmdldFR5cGVBdEluZGV4KGluZGV4KTsKLSAgICAgR0JFX0FTU0VSVChlbGVtZW50 VHlwZSk7Ci0gICAgIHJldHVybiBlbGVtZW50VHlwZTsKLSAgIH0KLS0tLSBhL2JhY2tlbmQvc3Jj L2xsdm0vbGx2bV9wcmludGZfcGFyc2VyLmNwcAkyMDIwLTExLTA5IDE2OjQ4OjIwLjgyMzg2NjEx MiArMDEwMAotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX3ByaW50Zl9wYXJzZXIuY3BwCTIw MjAtMTEtMDkgMTg6NTc6NTIuNjE4OTQzMTA1ICswMTAwCi1AQCAtMzIzLDggKzMyMyw3IEBACi0K LSAgIGJvb2wgUHJpbnRmUGFyc2VyOjpwYXJzZU9uZVByaW50Zkluc3RydWN0aW9uKENhbGxJbnN0 ICogY2FsbCkKLSAgIHsKLS0gICAgQ2FsbFNpdGUgQ1MoY2FsbCk7Ci0tICAgIENhbGxTaXRlOjph cmdfaXRlcmF0b3IgQ0lfRk1UID0gQ1MuYXJnX2JlZ2luKCk7Ci0rICAgIFVzZXI6Om9wX2l0ZXJh dG9yIENJX0ZNVCA9IGNhbGwtPmFyZ19iZWdpbigpOwotICAgICBpbnQgcGFyYW1fbnVtID0gMDsK LQotICAgICBsbHZtOjpDb25zdGFudCogYXJnMCA9IGR5bl9jYXN0PGxsdm06OkNvbnN0YW50RXhw cj4oKkNJX0ZNVCk7Ci1AQCAtMzQxLDcgKzM0MCw3IEBACi0gICAgICAgcmV0dXJuIGZhbHNlOwot ICAgICB9Ci0KLS0gICAgc3RkOjpzdHJpbmcgZm10ID0gZm10X2FyZy0+Z2V0QXNDU3RyaW5nKCk7 Ci0rICAgIHN0ZDo6c3RyaW5nIGZtdCA9IGZtdF9hcmctPmdldEFzQ1N0cmluZygpLnN0cigpOwot ICAgICBpZiAoZm10LnNpemUoKSA9PSAwKQotICAgICAgIHJldHVybiBmYWxzZTsKLQotQEAgLTQz Nyw4ICs0MzYsOCBAQAotICAgICAgICAgaWYgKCBjYWxsRnVuYy0+Z2V0SW50cmluc2ljSUQoKSAh PSAwKQotICAgICAgICAgICBjb250aW51ZTsKLQotLSAgICAgICAgVmFsdWUgKkNhbGxlZSA9IGNh bGwtPmdldENhbGxlZFZhbHVlKCk7Ci0tICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmbk5hbWUg PSBDYWxsZWUtPmdldE5hbWUoKTsKLSsgICAgICAgIFZhbHVlICpDYWxsZWUgPSBjYWxsLT5nZXRD YWxsZWRPcGVyYW5kKCk7Ci0rICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmbk5hbWUgPSBDYWxs ZWUtPmdldE5hbWUoKS5zdHIoKTsKLQotICAgICAgICAgaWYgKGZuTmFtZSAhPSAiX19nZW5fb2Ns X3ByaW50Zl9zdHViIiAmJiBmbk5hbWUgIT0gIl9fZ2VuX29jbF9wdXRzX3N0dWIiKQotICAgICAg ICAgICBjb250aW51ZTsKLUBAIC01ODIsNyArNTgxLDcgQEAKLSAgICAgICAgICAgICBpZiAoIWZt dF9hcmcgfHwgIWZtdF9hcmctPmlzQ1N0cmluZygpKSB7Ci0gICAgICAgICAgICAgICByZXR1cm4g ZmFsc2U7Ci0gICAgICAgICAgICAgfQotLSAgICAgICAgICAgIHNsb3Quc3RhdGUuc3RyID0gZm10 X2FyZy0+Z2V0QXNDU3RyaW5nKCk7Ci0rICAgICAgICAgICAgc2xvdC5zdGF0ZS5zdHIgPSBmbXRf YXJnLT5nZXRBc0NTdHJpbmcoKS5zdHIoKTsKLSAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg ICAgICAgICAgfQotICAgICAgICAgICBjYXNlIFBSSU5URl9DT05WRVJTSU9OX1A6IHsKLUBAIC01 OTUsMTAgKzU5NCwxMCBAQAotCi0gICAgICAgICBicmVhazsKLQotLSAgICAgIGNhc2UgVHlwZTo6 VmVjdG9yVHlJRDogewotLSAgICAgICAgVHlwZSogdmVjdF90eXBlID0gYXJnLT5nZXRUeXBlKCk7 Ci0tICAgICAgICBUeXBlKiBlbHRfdHlwZSA9IHZlY3RfdHlwZS0+Z2V0VmVjdG9yRWxlbWVudFR5 cGUoKTsKLS0gICAgICAgIGludCB2ZWNfbnVtID0gdmVjdF90eXBlLT5nZXRWZWN0b3JOdW1FbGVt ZW50cygpOwotKyAgICAgIGNhc2UgVHlwZTo6Rml4ZWRWZWN0b3JUeUlEOiB7Ci0rICAgICAgICBW ZWN0b3JUeXBlKiB2ZWN0X3R5cGUgPSBkeW5fY2FzdDxWZWN0b3JUeXBlPihhcmctPmdldFR5cGUo KSk7Ci0rICAgICAgICBUeXBlKiBlbHRfdHlwZSA9IHZlY3RfdHlwZS0+Z2V0RWxlbWVudFR5cGUo KTsKLSsgICAgICAgIGludCB2ZWNfbnVtID0gdmVjdF90eXBlLT5nZXROdW1FbGVtZW50cygpOwot ICAgICAgICAgYm9vbCBzaWduID0gZmFsc2U7Ci0KLSAgICAgICAgIGlmICh2ZWNfbnVtICE9IHNs b3Quc3RhdGUudmVjdG9yX24pIHsKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9wcm9maWxp bmcuY3BwCTIwMjAtMTEtMDkgMTY6NDg6MjAuODIzODY2MTEyICswMTAwCi0rKysgYi9iYWNrZW5k L3NyYy9sbHZtL2xsdm1fcHJvZmlsaW5nLmNwcAkyMDIwLTExLTA5IDE4OjU5OjUwLjEyMDkyOTE1 MCArMDEwMAotQEAgLTM1LDcgKzM1LDYgQEAKLSAjaW5jbHVkZSAibGx2bS9JUi9JUkJ1aWxkZXIu aCIKLQotICNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+ PSAzNQotLSNpbmNsdWRlICJsbHZtL0lSL0NhbGxTaXRlLmgiCi0gI2luY2x1ZGUgImxsdm0vSVIv Q0ZHLmgiCi0gI2Vsc2UKLSAjaW5jbHVkZSAibGx2bS9TdXBwb3J0L0NhbGxTaXRlLmgiCi0tLS0g YS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fc2FtcGxlcl9maXguY3BwCTIwMjAtMTEtMDkgMTY6NDg6 MjAuODIzODY2MTEyICswMTAwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fc2FtcGxlcl9m aXguY3BwCTIwMjAtMTEtMDkgMTc6MDE6MDkuNDA3Nzc0ODMyICswMTAwCi1AQCAtNDUsOCArNDUs OCBAQAotICAgICBib29sIHZpc2l0Q2FsbEluc3QoQ2FsbEluc3QgKkkpIHsKLSAgICAgICBpZigh SSkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLS0gICAgICBWYWx1ZSAqQ2FsbGVlID0gSS0+Z2V0 Q2FsbGVkVmFsdWUoKTsKLS0gICAgICBjb25zdCBzdGQ6OnN0cmluZyBmbk5hbWUgPSBDYWxsZWUt PmdldE5hbWUoKTsKLSsgICAgICBWYWx1ZSAqQ2FsbGVlID0gSS0+Z2V0Q2FsbGVkT3BlcmFuZCgp OwotKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZuTmFtZSA9IENhbGxlZS0+Z2V0TmFtZSgpLnN0 cigpOwotICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwotICAgICAgIFR5cGUgKmJvb2xUeSA9 IEludGVnZXJUeXBlOjpnZXQoSS0+Z2V0Q29udGV4dCgpLCAxKTsKLSAgICAgICBUeXBlICppMzJU eSA9IEludGVnZXJUeXBlOjpnZXQoSS0+Z2V0Q29udGV4dCgpLCAzMik7Ci1AQCAtNTksNyArNTks NyBAQAotICAgICAgICAgVmFsdWUgKm5lZWRGaXhWYWw7Ci0gI2lmIExMVk1fVkVSU0lPTl9NQUpP UiAqIDEwICsgTExWTV9WRVJTSU9OX01JTk9SID49IDQwCi0gICAgICAgICBDYWxsSW5zdCAqaW5p dCA9IGR5bl9jYXN0PENhbGxJbnN0PihJLT5nZXRPcGVyYW5kKDApKTsKLS0gICAgICAgIGlmIChp bml0ICYmIGluaXQtPmdldENhbGxlZFZhbHVlKCktPmdldE5hbWUoKS5jb21wYXJlKCJfX3RyYW5z bGF0ZV9zYW1wbGVyX2luaXRpYWxpemVyIikpCi0rICAgICAgICBpZiAoaW5pdCAmJiBpbml0LT5n ZXRDYWxsZWRPcGVyYW5kKCktPmdldE5hbWUoKS5jb21wYXJlKCJfX3RyYW5zbGF0ZV9zYW1wbGVy X2luaXRpYWxpemVyIikpCi0gICAgICAgICB7Ci0gICAgICAgICAgIGNvbnN0IENvbnN0YW50SW50 ICpjaSA9IGR5bl9jYXN0PENvbnN0YW50SW50Pihpbml0LT5nZXRPcGVyYW5kKDApKTsKLSAgICAg ICAgICAgdWludDMyX3Qgc2FtcGxlckludCA9IGNpLT5nZXRaRXh0VmFsdWUoKTsKLUBAIC0xMTMs NyArMTEzLDcgQEAKLSAgICAgICAgIFZhbHVlICpuZWVkRml4VmFsOwotICAjaWYgTExWTV9WRVJT SU9OX01BSk9SICogMTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gNDAKLSAgICAgICAgIENhbGxJ bnN0ICppbml0ID0gZHluX2Nhc3Q8Q2FsbEluc3Q+KEktPmdldE9wZXJhbmQoMCkpOwotLSAgICAg ICAgaWYgKGluaXQgJiYgaW5pdC0+Z2V0Q2FsbGVkVmFsdWUoKS0+Z2V0TmFtZSgpLmNvbXBhcmUo Il9fdHJhbnNsYXRlX3NhbXBsZXJfaW5pdGlhbGl6ZXIiKSkKLSsgICAgICAgIGlmIChpbml0ICYm IGluaXQtPmdldENhbGxlZE9wZXJhbmQoKS0+Z2V0TmFtZSgpLmNvbXBhcmUoIl9fdHJhbnNsYXRl X3NhbXBsZXJfaW5pdGlhbGl6ZXIiKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgY29uc3QgQ29u c3RhbnRJbnQgKmNpID0gZHluX2Nhc3Q8Q29uc3RhbnRJbnQ+KGluaXQtPmdldE9wZXJhbmQoMCkp OwotICAgICAgICAgICB1aW50MzJfdCBzYW1wbGVySW50ID0gY2ktPmdldFpFeHRWYWx1ZSgpOwot LS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX3NjYWxhcml6ZS5jcHAJMjAyMC0xMS0wOSAxNjo0 ODoyMC44MjM4NjYxMTIgKzAxMDAKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9zY2FsYXJp emUuY3BwCTIwMjAtMTEtMDkgMTg6NTE6MTYuODg4OTkwMTA0ICswMTAwCi1AQCAtMTc4LDcgKzE3 OCw3IEBACi0gICAgICAgaWYoIXR5cGUpCi0gICAgICAgICByZXR1cm4gdHlwZTsKLSAgICAgICBz d2l0Y2godHlwZS0+Z2V0VHlwZUlEKCkpIHsKLS0gICAgICBjYXNlIFR5cGU6OlZlY3RvclR5SUQ6 Ci0rICAgICAgY2FzZSBUeXBlOjpGaXhlZFZlY3RvclR5SUQ6Ci0gICAgICAgY2FzZSBUeXBlOjpB cnJheVR5SUQ6Ci0gICAgICAgICByZXR1cm4gR2V0QmFzaWNUeXBlKHR5cGUtPmdldENvbnRhaW5l ZFR5cGUoMCkpOwotICAgICAgIGRlZmF1bHQ6Ci1AQCAtMTg4LDcgKzE4OCw3IEBACi0gICAgIH0K LQotICAgICBpbnQgR2V0Q29tcG9uZW50Q291bnQoY29uc3QgVHlwZSogdHlwZSkgIHsKLS0gICAg ICBpZiAodHlwZSAmJiB0eXBlLT5nZXRUeXBlSUQoKSA9PSBUeXBlOjpWZWN0b3JUeUlEKQotKyAg ICAgIGlmICh0eXBlICYmIHR5cGUtPmdldFR5cGVJRCgpID09IFR5cGU6OkZpeGVkVmVjdG9yVHlJ RCkKLSAgICAgICAgIHJldHVybiBsbHZtOjpkeW5fY2FzdDxWZWN0b3JUeXBlPih0eXBlKS0+Z2V0 TnVtRWxlbWVudHMoKTsKLSAgICAgICBlbHNlCi0gICAgICAgICByZXR1cm4gMTsKLUBAIC02NTIs MTMgKzY1MiwxMiBAQAotICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0KLSAgICAgICB9IGVs c2UgewotLSAgICAgICAgVmFsdWUgKkNhbGxlZSA9IGNhbGwtPmdldENhbGxlZFZhbHVlKCk7Ci0t ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmbk5hbWUgPSBDYWxsZWUtPmdldE5hbWUoKTsKLSsg ICAgICAgIFZhbHVlICpDYWxsZWUgPSBjYWxsLT5nZXRDYWxsZWRPcGVyYW5kKCk7Ci0rICAgICAg ICBjb25zdCBzdGQ6OnN0cmluZyBmbk5hbWUgPSBDYWxsZWUtPmdldE5hbWUoKS5zdHIoKTsKLSAg ICAgICAgIGF1dG8gZ2VuSW50cmluc2ljSUQgPSBpbnRyaW5zaWNNYXAuZmluZChmbk5hbWUpOwot Ci0gICAgICAgICAvLyBHZXQgdGhlIGZ1bmN0aW9uIGFyZ3VtZW50cwotLSAgICAgICAgQ2FsbFNp dGUgQ1MoY2FsbCk7Ci0tICAgICAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIENJID0gQ1MuYXJn X2JlZ2luKCkgKyAxOwotKyAgICAgICAgVXNlcjo6b3BfaXRlcmF0b3IgQ0kgPSBjYWxsLT5hcmdf YmVnaW4oKSArIDE7Ci0KLSAgICAgICAgIHN3aXRjaCAoZ2VuSW50cmluc2ljSUQpIHsKLSAgICAg ICAgICAgY2FzZSBHRU5fT0NMX05PVF9GT1VORDoKLUBAIC03MjksNyArNzI4LDcgQEAKLSAgICAg ICAgICAgICBleHRyYWN0RnJvbVZlY3RvcihjYWxsKTsKLSAgICAgICAgICAgICBicmVhazsKLSAg ICAgICAgICAgY2FzZSBHRU5fT0NMX1BSSU5URjoKLS0gICAgICAgICAgICBmb3IgKDsgQ0kgIT0g Q1MuYXJnX2VuZCgpOyArK0NJKQotKyAgICAgICAgICAgIGZvciAoOyBDSSAhPSBjYWxsLT5hcmdf ZW5kKCk7ICsrQ0kpCi0gICAgICAgICAgICAgICBpZiAoKCpDSSktPmdldFR5cGUoKS0+aXNWZWN0 b3JUeSgpKQotICAgICAgICAgICAgICAgICAqQ0kgPSBJbnNlcnRUb1ZlY3RvcihjYWxsLCAqQ0kp OwotICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9iZWlnbmV0L3BhdGNo ZXMvbGx2bTEyLnBhdGNoIGIvc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvbGx2bTEyLnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZjhhYjAwNWMxNDguLjAwMDAwMDAwMDAwMAot LS0gYS9zcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMTIucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSwxMTUgKzAsMCBAQAotZGlmZiAtLWdpdCBiYWNrZW5kL3NyYy9sbHZtL0V4cGFuZExhcmdl SW50ZWdlcnMuY3BwIGJhY2tlbmQvc3JjL2xsdm0vRXhwYW5kTGFyZ2VJbnRlZ2Vycy5jcHAKLWlu ZGV4IDg1MTVkYzEzLi4yNzA4MDM4MCAxMDA2NDQKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vRXhw YW5kTGFyZ2VJbnRlZ2Vycy5jcHAKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vRXhwYW5kTGFyZ2VJ bnRlZ2Vycy5jcHAKLUBAIC0zMjgsNyArMzI4LDcgQEAgc3RhdGljIFZhbHVlICpidWlsZFZlY3Rv ck9yU2NhbGFyKENvbnZlcnNpb25TdGF0ZSAmU3RhdGUsIElSQnVpbGRlcjw+ICZJUkIsIFNtYWwK LSAgICAgLy8gc3BsaXRlZCwgdGhhdCdzIHdoeSB0aGVzZSB0ZW1wb3JhcnkgdmFsdWVzIHNob3Vs ZCBiZSBlcmFzZWQuCi0gICAgIGJvb2wgS2VlcEluc2VydCA9IGlzTGVnYWxCaXRTaXplKEVsZW1U eS0+Z2V0UHJpbWl0aXZlU2l6ZUluQml0cygpICogRWxlbU5vKTsKLSAgICAgZm9yICh1bnNpZ25l ZCBpID0gMDsgaSA8IEVsZW1ObzsgKytpKSB7Ci0tICAgICAgVmFsdWUgKnRtcCA9IHZlYyA/IHZl YyA6IFVuZGVmVmFsdWU6OmdldChWZWN0b3JUeXBlOjpnZXQoRWxlbVR5LCBFbGVtTm8pKTsKLSsg ICAgICBWYWx1ZSAqdG1wID0gdmVjID8gdmVjIDogVW5kZWZWYWx1ZTo6Z2V0KFZlY3RvclR5cGU6 OmdldChFbGVtVHksIEVsZW1ObywgZmFsc2UpKTsKLSAgICAgICBWYWx1ZSAqaWR4ID0gQ29uc3Rh bnRJbnQ6OmdldChJbnRUeSwgaSk7Ci0gICAgICAgdmVjID0gSVJCLkNyZWF0ZUluc2VydEVsZW1l bnQodG1wLCBFbGVtZW50c1tpXSwgaWR4KTsKLSAgICAgICBpZiAoIUtlZXBJbnNlcnQgJiYgIWlz YTxDb25zdGFudD4odmVjKSkgewotQEAgLTM3Myw3ICszNzMsNyBAQCBzdGF0aWMgdm9pZCB1bmlm eUVsZW1lbnRUeXBlKElSQnVpbGRlcjw+ICZJUkIsIFNtYWxsVmVjdG9yPFZhbHVlICosIDE2PiAm U3JjLCBTbQotICAgICAgIGFzc2VydCgoU2l6ZSAlIE1pbldpZHRoKSA9PSAwKTsKLSAKLSAgICAg ICBpZiAoU2l6ZSA+IE1pbldpZHRoKSB7Ci0tICAgICAgICBWZWN0b3JUeXBlICpWZWNUeSA9IFZl Y3RvclR5cGU6OmdldChFbGVtVHksIFNpemUvTWluV2lkdGgpOwotKyAgICAgICAgVmVjdG9yVHlw ZSAqVmVjVHkgPSBWZWN0b3JUeXBlOjpnZXQoRWxlbVR5LCBTaXplL01pbldpZHRoLCBmYWxzZSk7 Ci0gICAgICAgICBWYWx1ZSAqQ2FzdGVkID0gSVJCLkNyZWF0ZUJpdENhc3QoU3JjW2ldLCBWZWNU eSk7Ci0gICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgU2l6ZS9NaW5XaWR0aDsgaisr KQotICAgICAgICAgICBEc3QucHVzaF9iYWNrKElSQi5DcmVhdGVFeHRyYWN0RWxlbWVudChDYXN0 ZWQsIENvbnN0YW50SW50OjpnZXQoSW50VHksIGopKSk7Ci1AQCAtNDYyLDcgKzQ2Miw3IEBAIHN0 YXRpYyB2b2lkIGNvbnZlcnRJbnN0cnVjdGlvbihJbnN0cnVjdGlvbiAqSW5zdCwgQ29udmVyc2lv blN0YXRlICZTdGF0ZSwKLSAgICAgICB1bnNpZ25lZCBFbGVtTm8gPSBVbmlmaWVkLnNpemUoKTsK LSAgICAgICBUeXBlICpFbGVtVHkgPSBVbmlmaWVkWzBdLT5nZXRUeXBlKCk7Ci0gICAgICAgZm9y ICh1bnNpZ25lZCBpID0gMDsgaSA8IEVsZW1ObzsgKytpKSB7Ci0tICAgICAgICBWYWx1ZSAqdG1w ID0gdmVjID8gdmVjIDogVW5kZWZWYWx1ZTo6Z2V0KFZlY3RvclR5cGU6OmdldChFbGVtVHksIEVs ZW1ObykpOwotKyAgICAgICAgVmFsdWUgKnRtcCA9IHZlYyA/IHZlYyA6IFVuZGVmVmFsdWU6Omdl dChWZWN0b3JUeXBlOjpnZXQoRWxlbVR5LCBFbGVtTm8sIGZhbHNlKSk7Ci0gICAgICAgICBWYWx1 ZSAqaWR4ID0gQ29uc3RhbnRJbnQ6OmdldChJbnRUeSwgaSk7Ci0gICAgICAgICB2ZWMgPSBJUkIu Q3JlYXRlSW5zZXJ0RWxlbWVudCh0bXAsIFVuaWZpZWRbaV0sIGlkeCk7Ci0gICAgICAgfQotZGlm ZiAtLWdpdCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1fZ2VuX2JhY2tlbmQuY3BwIGJhY2tlbmQvc3Jj L2xsdm0vbGx2bV9nZW5fYmFja2VuZC5jcHAKLWluZGV4IGM5M2Q4OWNjLi42NGQ1YjBlNSAxMDA2 NDQKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9nZW5fYmFja2VuZC5jcHAKLSsrKyBiL2Jh Y2tlbmQvc3JjL2xsdm0vbGx2bV9nZW5fYmFja2VuZC5jcHAKLUBAIC0zMDQsNyArMzA0LDcgQEAg bmFtZXNwYWNlIGdiZQotICAgICAgIFRZUEVTSVpFVkVDKGxvbmcsOCkKLSAgICAgICBUWVBFU0la RVZFQyh1bnNpZ25lZCBsb25nLDgpCi0gICAgICAgZWxzZXsKLS0gICAgICAgIFN0cnVjdFR5cGUg KlN0clR5ID0gTS0+Z2V0VHlwZUJ5TmFtZSgic3RydWN0LiIrbmFtZSk7Ci0rICAgICAgICBTdHJ1 Y3RUeXBlICpTdHJUeSA9IFN0cnVjdFR5cGU6OmdldFR5cGVCeU5hbWUoTS0+Z2V0Q29udGV4dCgp LCAic3RydWN0LiIrbmFtZSk7Ci0gICAgICAgICBpZihTdHJUeSkKLSAgICAgICAgICAgcmV0dXJu IGdldFR5cGVCeXRlU2l6ZSh1bml0LFN0clR5KTsKLSAgICAgICB9Ci1kaWZmIC0tZ2l0IGJhY2tl bmQvc3JjL2xsdm0vbGx2bV9sb2Fkc3RvcmVfb3B0aW1pemF0aW9uLmNwcCBiYWNrZW5kL3NyYy9s bHZtL2xsdm1fbG9hZHN0b3JlX29wdGltaXphdGlvbi5jcHAKLWluZGV4IDVhYTM4YmVmLi42YjVj MWJhZCAxMDA2NDQKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9sb2Fkc3RvcmVfb3B0aW1p emF0aW9uLmNwcAotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2xvYWRzdG9yZV9vcHRpbWl6 YXRpb24uY3BwCi1AQCAtMTUyLDcgKzE1Miw3IEBAIG5hbWVzcGFjZSBnYmUgewotICAgICB1bnNp Z25lZCBhZGRyU3BhY2UgPSBsZC0+Z2V0UG9pbnRlckFkZHJlc3NTcGFjZSgpOwotICAgICAvLyBp bnNlcnQgYmVmb3JlIGZpcnN0IGxvYWQKLSAgICAgQnVpbGRlci5TZXRJbnNlcnRQb2ludChsZCk7 Ci0tICAgIFZlY3RvclR5cGUgKnZlY1R5ID0gVmVjdG9yVHlwZTo6Z2V0KGxkLT5nZXRUeXBlKCks IHNpemUpOwotKyAgICBWZWN0b3JUeXBlICp2ZWNUeSA9IFZlY3RvclR5cGU6OmdldChsZC0+Z2V0 VHlwZSgpLCBzaXplLCBmYWxzZSk7Ci0gICAgIFZhbHVlICp2ZWNQdHIgPSBCdWlsZGVyLkNyZWF0 ZUJpdENhc3QobGQtPmdldFBvaW50ZXJPcGVyYW5kKCksCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFBvaW50ZXJUeXBlOjpnZXQodmVjVHksIGFkZHJTcGFjZSkpOwot ICAgICBMb2FkSW5zdCAqdmVjVmFsdWUgPSBCdWlsZGVyLkNyZWF0ZUxvYWQodmVjUHRyKTsKLUBA IC0yMzYsNyArMjM2LDcgQEAgbmFtZXNwYWNlIGdiZSB7Ci0gICAgIEJ1aWxkZXIuU2V0SW5zZXJ0 UG9pbnQobWVyZ2VkW3NpemUtMV0pOwotIAotICAgICBUeXBlICpkYXRhVHkgPSBzdC0+Z2V0VmFs dWVPcGVyYW5kKCktPmdldFR5cGUoKTsKLS0gICAgVmVjdG9yVHlwZSAqdmVjVHkgPSBWZWN0b3JU eXBlOjpnZXQoZGF0YVR5LCBzaXplKTsKLSsgICAgVmVjdG9yVHlwZSAqdmVjVHkgPSBWZWN0b3JU eXBlOjpnZXQoZGF0YVR5LCBzaXplLCBmYWxzZSk7Ci0gICAgIFZhbHVlICogcGFyZW50ID0gVW5k ZWZWYWx1ZTo6Z2V0KHZlY1R5KTsKLSAgICAgZm9yKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsg aSsrKSB7Ci0gICAgICAgcGFyZW50ID0gQnVpbGRlci5DcmVhdGVJbnNlcnRFbGVtZW50KHBhcmVu dCwgdmFsdWVzW2ldLCBDb25zdGFudEludDo6Z2V0KEludGVnZXJUeXBlOjpnZXQoc3QtPmdldENv bnRleHQoKSwgMzIpLCBpKSk7Ci1kaWZmIC0tZ2l0IGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9wcmlu dGZfcGFyc2VyLmNwcCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1fcHJpbnRmX3BhcnNlci5jcHAKLWlu ZGV4IDZiYjdjNTJhLi5hZjQ1OWNkMiAxMDA2NDQKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2 bV9wcmludGZfcGFyc2VyLmNwcAotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX3ByaW50Zl9w YXJzZXIuY3BwCi1AQCAtNjMwLDcgKzYzMCw3IEBAIGVycm9yOgotICAgICAgICAgICAgIGlmIChl bHRfdHlwZSAhPSBlbHRfZHN0X3R5cGUpIHsKLSAgICAgICAgICAgICAgIFZhbHVlICpJSSA9IE5V TEw7Ci0gICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHZlY19udW07IGkrKykgewot LSAgICAgICAgICAgICAgICBWYWx1ZSAqdmVjID0gSUkgPyBJSSA6IFVuZGVmVmFsdWU6OmdldChW ZWN0b3JUeXBlOjpnZXQoZWx0X2RzdF90eXBlLCB2ZWNfbnVtKSk7Ci0rICAgICAgICAgICAgICAg IFZhbHVlICp2ZWMgPSBJSSA/IElJIDogVW5kZWZWYWx1ZTo6Z2V0KFZlY3RvclR5cGU6OmdldChl bHRfZHN0X3R5cGUsIHZlY19udW0sIGZhbHNlKSk7Ci0gICAgICAgICAgICAgICAgIFZhbHVlICpj diA9IENvbnN0YW50SW50OjpnZXQoVHlwZTo6Z2V0SW50MzJUeShlbHRfdHlwZS0+Z2V0Q29udGV4 dCgpKSwgaSk7Ci0gICAgICAgICAgICAgICAgIFZhbHVlICpvcmcgPSBidWlsZGVyLT5DcmVhdGVF eHRyYWN0RWxlbWVudChhcmcsIGN2KTsKLSAgICAgICAgICAgICAgICAgVmFsdWUgKmN2dCA9IGJ1 aWxkZXItPkNyZWF0ZUludENhc3Qob3JnLCBlbHRfZHN0X3R5cGUsIHNpZ24pOwotQEAgLTY1OCw3 ICs2NTgsNyBAQCBlcnJvcjoKLSAgICAgICAgICAgICBpZiAoZWx0X3R5cGUtPmdldFR5cGVJRCgp ICE9IFR5cGU6OkZsb2F0VHlJRCkgewotICAgICAgICAgICAgICAgVmFsdWUgKklJID0gTlVMTDsK LSAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdmVjX251bTsgaSsrKSB7Ci0tICAg ICAgICAgICAgICAgIFZhbHVlICp2ZWMgPSBJSSA/IElJIDogVW5kZWZWYWx1ZTo6Z2V0KFZlY3Rv clR5cGU6OmdldChUeXBlOjpnZXRGbG9hdFR5KGVsdF90eXBlLT5nZXRDb250ZXh0KCkpLCB2ZWNf bnVtKSk7Ci0rICAgICAgICAgICAgICAgIFZhbHVlICp2ZWMgPSBJSSA/IElJIDogVW5kZWZWYWx1 ZTo6Z2V0KFZlY3RvclR5cGU6OmdldChUeXBlOjpnZXRGbG9hdFR5KGVsdF90eXBlLT5nZXRDb250 ZXh0KCkpLCB2ZWNfbnVtLCBmYWxzZSkpOwotICAgICAgICAgICAgICAgICBWYWx1ZSAqY3YgPSBD b25zdGFudEludDo6Z2V0KFR5cGU6OmdldEludDMyVHkoZWx0X3R5cGUtPmdldENvbnRleHQoKSks IGkpOwotICAgICAgICAgICAgICAgICBWYWx1ZSAqb3JnID0gYnVpbGRlci0+Q3JlYXRlRXh0cmFj dEVsZW1lbnQoYXJnLCBjdik7Ci0gICAgICAgICAgICAgICAgIFZhbHVlKiBjdnQgID0gYnVpbGRl ci0+Q3JlYXRlRlBDYXN0KG9yZywgVHlwZTo6Z2V0RmxvYXRUeShtb2R1bGUtPmdldENvbnRleHQo KSkpOwotZGlmZiAtLWdpdCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1fdG9fZ2VuLmNwcCBiYWNrZW5k L3NyYy9sbHZtL2xsdm1fdG9fZ2VuLmNwcAotaW5kZXggN2Y3ZGVmZmUuLjllOGNjYzY3IDEwMDY0 NAotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX3RvX2dlbi5jcHAKLSsrKyBiL2JhY2tlbmQv c3JjL2xsdm0vbGx2bV90b19nZW4uY3BwCi1AQCAtMzU4LDcgKzM1OCw3IEBAIG5hbWVzcGFjZSBn YmUKLSAgICAgcGFzc2VzLmFkZChjcmVhdGVTY2FsYXJSZXBsQWdncmVnYXRlc1Bhc3MoNjQsIHRy dWUsIC0xLCAtMSwgNjQpKTsKLSAjZW5kaWYKLSAgICAgcGFzc2VzLmFkZChjcmVhdGVMb2FkU3Rv cmVPcHRpbWl6YXRpb25QYXNzKCkpOwotLSAgICBwYXNzZXMuYWRkKGNyZWF0ZUNvbnN0YW50UHJv cGFnYXRpb25QYXNzKCkpOwotKyAgICAvL3Bhc3Nlcy5hZGQoY3JlYXRlQ29uc3RhbnRQcm9wYWdh dGlvblBhc3MoKSk7Ci0gICAgIHBhc3Nlcy5hZGQoY3JlYXRlUHJvbW90ZU1lbW9yeVRvUmVnaXN0 ZXJQYXNzKCkpOwotICAgICBpZihvcHRMZXZlbCA+IDApCi0gICAgICAgcGFzc2VzLmFkZChjcmVh dGVHVk5QYXNzKCkpOyAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHJlZHVuZGFuY2llcwotQEAg LTM2NywxMSArMzY3LDExIEBAIG5hbWVzcGFjZSBnYmUKLSAgICAgcGFzc2VzLmFkZChjcmVhdGVT Y2FsYXJpemVQYXNzKCkpOyAgICAgICAgICAgICAvLyBFeHBhbmQgYWxsIHZlY3RvciBvcHMKLSAg ICAgcGFzc2VzLmFkZChjcmVhdGVFeHBhbmRMYXJnZUludGVnZXJzUGFzcygpKTsgICAvLyBsZWdh bGl6ZSBsYXJnZSBpbnRlZ2VyIG9wZXJhdGlvbgotICAgICBwYXNzZXMuYWRkKGNyZWF0ZUluc3Ry dWN0aW9uQ29tYmluaW5nUGFzcygpKTsgIC8vIGxlZ2FsaXplIHdpbGwgZ2VuZXJhdGUgc29tZSBz aWxseSBpbnN0cnVjdGlvbnMKLS0gICAgcGFzc2VzLmFkZChjcmVhdGVDb25zdGFudFByb3BhZ2F0 aW9uUGFzcygpKTsgICAvLyBwcm9wYWdhdGUgY29uc3RhbnQgYWZ0ZXIgc2NhbGFyaXplL2xlZ2Fs aXplCi0rICAgIC8vcGFzc2VzLmFkZChjcmVhdGVDb25zdGFudFByb3BhZ2F0aW9uUGFzcygpKTsg ICAvLyBwcm9wYWdhdGUgY29uc3RhbnQgYWZ0ZXIgc2NhbGFyaXplL2xlZ2FsaXplCi0gICAgIHBh c3Nlcy5hZGQoY3JlYXRlRXhwYW5kQ29uc3RhbnRFeHByUGFzcygpKTsgICAgLy8gY29uc3RhbnQg cHJvcCBtYXkgZ2VuZXJhdGUgQ29uc3RhbnRFeHByCi0gICAgIHBhc3Nlcy5hZGQoY3JlYXRlUHJv bW90ZUludGVnZXJzUGFzcygpKTsgICAgICAgLy8gYWxpZ24gaW50ZWdlciBzaXplIHRvIHBvd2Vy IG9mIHR3bwotICAgICBwYXNzZXMuYWRkKGNyZWF0ZVJlbW92ZUdFUFBhc3ModW5pdCkpOyAgICAg ICAgIC8vIENvbnN0YW50IHByb3AgbWF5IGdlbmVyYXRlIGdlcAotLSAgICBwYXNzZXMuYWRkKGNy ZWF0ZURlYWRJbnN0RWxpbWluYXRpb25QYXNzKCkpOyAgIC8vIFJlbW92ZSBzaW1wbGlmaWVkIGlu c3RydWN0aW9ucwotKyAgICAvL3Bhc3Nlcy5hZGQoY3JlYXRlRGVhZEluc3RFbGltaW5hdGlvblBh c3MoKSk7ICAgLy8gUmVtb3ZlIHNpbXBsaWZpZWQgaW5zdHJ1Y3Rpb25zCi0gICAgIHBhc3Nlcy5h ZGQoY3JlYXRlQ0ZHU2ltcGxpZmljYXRpb25QYXNzKCkpOyAgICAgLy8gTWVyZ2UgJiByZW1vdmUg QkJzCi0gICAgIHBhc3Nlcy5hZGQoY3JlYXRlTG93ZXJTd2l0Y2hQYXNzKCkpOyAgICAgICAgICAg Ly8gc2ltcGxpZnkgY2ZnIHdpbGwgZ2VuZXJhdGUgc3dpdGNoLWNhc2UgaW5zdHJ1Y3Rpb24KLSAg ICAgaWYgKHByb2ZpbGluZykgewpkaWZmIC0tZ2l0IGEvc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMv bXVzbC5wYXRjaCBiL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL211c2wucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlZmFmYmI2NTU4OC4uMDAwMDAwMDAwMDAwCi0tLSBhL3Ny Y3BrZ3MvYmVpZ25ldC9wYXRjaGVzL211c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMSAr MCwwIEBACi0tLS0gYS9iYWNrZW5kL3NyYy9iYWNrZW5kL2dlbi9nZW5fbWVzYV9kaXNhc20uYwot KysrIGIvYmFja2VuZC9zcmMvYmFja2VuZC9nZW4vZ2VuX21lc2FfZGlzYXNtLmMKLUBAIC0xMTM3 LDcgKzExMzcsNyBAQCBzdGF0aWMgdWludDMyX3QgX19jb252X2hhbGZfdG9fZmxvYXQodWludDE2 X3QgaCkKLSAgICAgICAvLyBBZGp1c3QgbWFudGlzc2Egc28gaXQncyBub3JtYWxpemVkIChhbmQg a2VlcAotICAgICAgIC8vIHRyYWNrIG9mIGV4cG9uZW50IGFkanVzdG1lbnQpCi0gICAgICAgaW50 IGUgPSAtMTsKLS0gICAgICB1aW50IG0gPSBpLm1hbnRpc3NhOwotKyAgICAgIHVuc2lnbmVkIGlu dCBtID0gaS5tYW50aXNzYTsKLSAgICAgICBkbyB7Ci0gICAgICAgICBlKys7Ci0gICAgICAgICBt IDw8PSAxOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9iZWlnbmV0L3RlbXBsYXRlIGIvc3JjcGtncy9i ZWlnbmV0L3RlbXBsYXRlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkY2U2YmJiN2Fl MjQuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2JlaWduZXQvdGVtcGxhdGUKKysrIC9kZXYv bnVsbApAQCAtMSwyMiArMCwwIEBACi0jIFRlbXBsYXRlIGZpbGUgZm9yICdiZWlnbmV0JwotcGtn bmFtZT1iZWlnbmV0Ci12ZXJzaW9uPTEuMy4yCi1yZXZpc2lvbj0xMAotYXJjaHM9Imk2ODYqIHg4 Nl82NCoiCi13cmtzcmM9IkJlaWduZXQtJHt2ZXJzaW9ufS1Tb3VyY2UiCi1idWlsZF9zdHlsZT1j bWFrZQotaG9zdG1ha2VkZXBlbmRzPSJjbGFuZyBsbHZtIHBrZy1jb25maWciCi1tYWtlZGVwZW5k cz0iTWVzYUxpYi1kZXZlbCBsaWJlZGl0LWRldmVsIGxpYmZmaS1kZXZlbCBvY2wtaWNkLWRldmVs IHpsaWItZGV2ZWwKLSBsaWJYZml4ZXMtZGV2ZWwiCi1kZXBlbmRzPSJvY2wtaWNkIgotc2hvcnRf ZGVzYz0iQmVpZ25ldCBHUEdQVSBTeXN0ZW0gZm9yIEludGVsIEdQVXMiCi1tYWludGFpbmVyPSJP cnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgotbGljZW5zZT0iTEdQTC0yLjEtb3ItbGF0 ZXIiCi1ob21lcGFnZT0iaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9C ZWlnbmV0LyIKLWRpc3RmaWxlcz0iaHR0cHM6Ly8wMS5vcmcvc2l0ZXMvZGVmYXVsdC9maWxlcy8k e3BrZ25hbWV9LSR7dmVyc2lvbn0tc291cmNlLnRhci5neiIKLWNoZWNrc3VtPWM1NTVlZGJhMTQ5 ZGUyMzI0Mzk2NWE3MDNmMzlmNzlmYTA2ZjE1YmNmZjVhMzc2MmI1NTQ0YjA5MjUwMTBiNDMKLQot cG9zdF9pbnN0YWxsKCkgewotCSMgcmVtb3ZlIENMIGhlYWRlcnMsIHdlIGRvIHVzZSBvcGVuY2wt aGVhZGVycyBpbnN0ZWFkLgotCXJtIC1yICR7REVTVERJUn0vdXNyL2luY2x1ZGUKLX0KZGlmZiAt LWdpdCBhL3NyY3BrZ3MvYmVpZ25ldC91cGRhdGUgYi9zcmNwa2dzL2JlaWduZXQvdXBkYXRlCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTQxZTBhZmU2MGMuLjAwMDAwMDAwMDAwMAot LS0gYS9zcmNwa2dzL2JlaWduZXQvdXBkYXRlCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAot c2l0ZT0iaHR0cHM6Ly8wMS5vcmcvYmVpZ25ldC9kb3dubG9hZHMiCmRpZmYgLS1naXQgYS9zcmNw a2dzL3JlbW92ZWQtcGFja2FnZXMvdGVtcGxhdGUgYi9zcmNwa2dzL3JlbW92ZWQtcGFja2FnZXMv dGVtcGxhdGUKaW5kZXggYzkxMTRmYzA0NThlLi5iM2E4MTc3ZDFhOWQgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvcmVtb3ZlZC1wYWNrYWdlcy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3JlbW92ZWQtcGFj a2FnZXMvdGVtcGxhdGUKQEAgLTIyLDYgKzIyLDcgQEAgcmVwbGFjZXM9IgogIGF0b208PTEuNDQu MF8xCiAgYXZvZ2Fkcm8tZGV2ZWw8PTEuMi4wXzgKICBhdm9nYWRybzw9MS4yLjBfOAorIGJlaWdu ZXQ8PTEuMy4yCiAgYm9ra2VuPD0xLjhfMwogIGJvbWk8PTAuOS4xMV8xNwogIGJ1cnAtY2xpZW50 PD0xLjQuNDBfMTMKCkZyb20gZTFjNjZhZDMwN2Y4MGU1YzYwZWI2MTBjYmNhZGUzNGJjNjAzZGY3 ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9xP0FuZHI9QzM9QTk9MjBD ZXJxdWVpcmE/PSA8YWNlcnF1ZWlyYTAyMUBnbWFpbC5jb20+CkRhdGU6IE1vbiwgMjggRmViIDIw MjIgMjI6MDA6NTQgKzAwMDAKU3ViamVjdDogW1BBVENIIDIwLzMwXSBsbHZtMTM6IHVwZGF0ZSB0 byAxMy4wLjEuCgotLS0KIHNyY3BrZ3MvbGx2bS90ZW1wbGF0ZSAgIHwgMiArLQogc3JjcGtncy9s bHZtMTMvdGVtcGxhdGUgfCA2ICsrKy0tLQogMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMo KyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtL3RlbXBsYXRlIGIv c3JjcGtncy9sbHZtL3RlbXBsYXRlCmluZGV4IGJjZmVlODIwOThmZi4uOTZkMThmNzMwZmNhIDEw MDY0NAotLS0gYS9zcmNwa2dzL2xsdm0vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9sbHZtL3RlbXBs YXRlCkBAIC00LDggKzQsOCBAQCB2ZXJzaW9uPTEzLjAuMAogcmV2aXNpb249MQogYnVpbGRfc3R5 bGU9bWV0YQogZGVwZW5kcz0ibGx2bTEzIgotcmVwbGFjZXM9Imxsdm0xMj49MCBsbHZtMTE+PTAg bGx2bTEwPj0wIGxsdm05Pj0wIGxsdm04Pj0wIGxsdm03Pj0wIGxsdm02LjA+PTAgbGx2bTMuOT49 MCIKIHNob3J0X2Rlc2M9IkxMVk0gbWV0YSBwYWNrYWdlIgogbWFpbnRhaW5lcj0iRW5ubyBCb2xh bmQgPGdvdHRveEB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IlB1YmxpYyBEb21haW4iCiBob21l cGFnZT0iaHR0cHM6Ly93d3cudm9pZGxpbnV4Lm9yZyIKK3JlcGxhY2VzPSJsbHZtMTI+PTAgbGx2 bTExPj0wIGxsdm0xMD49MCBsbHZtOT49MCBsbHZtOD49MCBsbHZtNz49MCBsbHZtNi4wPj0wIGxs dm0zLjk+PTAiCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMy90ZW1wbGF0ZSBiL3NyY3BrZ3Mv bGx2bTEzL3RlbXBsYXRlCmluZGV4IGJmYzkxMDU2ZDI3Ny4uOGU2NzM3MDFmYjliIDEwMDY0NAot LS0gYS9zcmNwa2dzL2xsdm0xMy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2xsdm0xMy90ZW1wbGF0 ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2xsdm0xMycKIHBrZ25hbWU9 bGx2bTEzCi12ZXJzaW9uPTEzLjAuMAotcmV2aXNpb249MgordmVyc2lvbj0xMy4wLjEKK3Jldmlz aW9uPTEKIHdya3NyYz0ibGx2bS1wcm9qZWN0LSR7dmVyc2lvbn0uc3JjIgogYnVpbGRfd3Jrc3Jj PWxsdm0KIGJ1aWxkX3N0eWxlPWNtYWtlCkBAIC0zNSw3ICszNSw3IEBAIG1haW50YWluZXI9InE2 NiA8ZGFuaWVsQG9jdGFmb3JnZS5vcmc+IgogbGljZW5zZT0iQXBhY2hlLTIuMCIKIGhvbWVwYWdl PSJodHRwczovL3d3dy5sbHZtLm9yZyIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL2xs dm0vbGx2bS1wcm9qZWN0L3JlbGVhc2VzL2Rvd25sb2FkL2xsdm1vcmctJHt2ZXJzaW9ufS9sbHZt LXByb2plY3QtJHt2ZXJzaW9ufS5zcmMudGFyLnh6IgotY2hlY2tzdW09NjA3NWFkMzBmMWFjMGUx NWYwN2MxYmYwNjJjMWUxMjY4YzI0MWQ2NzRmMTFiZDMyY2RmMGUwNDBjNzFmMmJmMworY2hlY2tz dW09MzI2MzM1YTgzMGYyZTMyZDA2ZDBhMzYzOTNiNTQ1NWQxN2RjNzNlMGJkMTIxMTA2NTIyN2Vl MDE0ZjkyY2JmOAogbGliMzJkaXNhYmxlZD15ZXMKIHB5dGhvbl92ZXJzaW9uPTMKIAoKRnJvbSAz YWYzNjljYTE4Y2E0N2EyNTNiMjdjYmEyNTlhOTcwM2ZjODgyOThhIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiBJc2FhYyBGcmV1bmQgPG1haWxAaXNhYWNmcmV1bmQuY29tPgpEYXRlOiBX ZWQsIDIgTWFyIDIwMjIgMjA6NDk6MzcgKzAwMDAKU3ViamVjdDogW1BBVENIIDIxLzMwXSByaXZl cjogdXBkYXRlIHRvIDAuMS4zCgotLS0KIC4uLmFibGUtUElFLWZvci1yaXZlci1yaXZlcmN0bC1y aXZlcnRpbGUucGF0Y2ggfCAxOCArKysrKysrKystLS0tLS0tLS0KIHNyY3BrZ3Mvcml2ZXIvdGVt cGxhdGUgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArKy0tCiAyIGZpbGVzIGNoYW5nZWQs IDExIGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv cml2ZXIvcGF0Y2hlcy8wMDAxLUVuYWJsZS1QSUUtZm9yLXJpdmVyLXJpdmVyY3RsLXJpdmVydGls ZS5wYXRjaCBiL3NyY3BrZ3Mvcml2ZXIvcGF0Y2hlcy8wMDAxLUVuYWJsZS1QSUUtZm9yLXJpdmVy LXJpdmVyY3RsLXJpdmVydGlsZS5wYXRjaAppbmRleCBlY2M2ODMwMmRiMDkuLjlkYTBlNWQ1ZDA0 MyAxMDA2NDQKLS0tIGEvc3JjcGtncy9yaXZlci9wYXRjaGVzLzAwMDEtRW5hYmxlLVBJRS1mb3It cml2ZXItcml2ZXJjdGwtcml2ZXJ0aWxlLnBhdGNoCisrKyBiL3NyY3BrZ3Mvcml2ZXIvcGF0Y2hl cy8wMDAxLUVuYWJsZS1QSUUtZm9yLXJpdmVyLXJpdmVyY3RsLXJpdmVydGlsZS5wYXRjaApAQCAt MTAsMzMgKzEwLDMzIEBAIGJ1aWxkIHN5c3RlbS4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vemln bGFuZy96aWcvaXNzdWVzLzcyMDEKICAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCiAK IGRpZmYgLS1naXQgYS9idWlsZC56aWcgYi9idWlsZC56aWcKLWluZGV4IGQ1NjFmNDkuLjhhYzlh NGUgMTAwNjQ0CitpbmRleCA5ODI5NjMzLi4xODAxNzlmIDEwMDY0NAogLS0tIGEvYnVpbGQuemln CiArKysgYi9idWlsZC56aWcKLUBAIC04NSw2ICs4NSw3IEBAIHB1YiBmbiBidWlsZChiOiAqemJz LkJ1aWxkZXIpICF2b2lkIHsKK0BAIC04OSw2ICs4OSw3IEBAIHB1YiBmbiBidWlsZChiOiAqemJz LkJ1aWxkZXIpICF2b2lkIHsKICAgICAgICAgIGNvbnN0IHJpdmVyID0gYi5hZGRFeGVjdXRhYmxl KCJyaXZlciIsICJyaXZlci9tYWluLnppZyIpOwogICAgICAgICAgcml2ZXIuc2V0VGFyZ2V0KHRh cmdldCk7CiAgICAgICAgICByaXZlci5zZXRCdWlsZE1vZGUobW9kZSk7CiArICAgICAgICByaXZl ci5waWUgPSB0cnVlOwotICAgICAgICAgcml2ZXIuYWRkQnVpbGRPcHRpb24oYm9vbCwgInh3YXls YW5kIiwgeHdheWxhbmQpOwotICAgICAgICAgcml2ZXIuYWRkQnVpbGRPcHRpb24oWzowXWNvbnN0 IHU4LCAidmVyc2lvbiIsIGZ1bGxfdmVyc2lvbik7CisgICAgICAgICByaXZlci5hZGRPcHRpb25z KCJidWlsZF9vcHRpb25zIiwgb3B0aW9ucyk7CiAgCi1AQCAtOTcsNiArOTgsNyBAQCBwdWIgZm4g YnVpbGQoYjogKnpicy5CdWlsZGVyKSAhdm9pZCB7CisgICAgICAgICBhZGRTZXJ2ZXJEZXBzKHJp dmVyLCBzY2FubmVyKTsKK0BAIC0xMDAsNiArMTAxLDcgQEAgcHViIGZuIGJ1aWxkKGI6ICp6YnMu QnVpbGRlcikgIXZvaWQgewogICAgICAgICAgY29uc3Qgcml2ZXJjdGwgPSBiLmFkZEV4ZWN1dGFi bGUoInJpdmVyY3RsIiwgInJpdmVyY3RsL21haW4uemlnIik7CiAgICAgICAgICByaXZlcmN0bC5z ZXRUYXJnZXQodGFyZ2V0KTsKICAgICAgICAgIHJpdmVyY3RsLnNldEJ1aWxkTW9kZShtb2RlKTsK ICsgICAgICAgIHJpdmVyY3RsLnBpZSA9IHRydWU7Ci0gICAgICAgICByaXZlcmN0bC5hZGRCdWls ZE9wdGlvbihbOjBdY29uc3QgdTgsICJ2ZXJzaW9uIiwgZnVsbF92ZXJzaW9uKTsKKyAgICAgICAg IHJpdmVyY3RsLmFkZE9wdGlvbnMoImJ1aWxkX29wdGlvbnMiLCBvcHRpb25zKTsKICAKICAgICAg ICAgIHJpdmVyY3RsLnN0ZXAuZGVwZW5kT24oJnNjYW5uZXIuc3RlcCk7Ci1AQCAtMTE0LDYgKzEx Niw3IEBAIHB1YiBmbiBidWlsZChiOiAqemJzLkJ1aWxkZXIpICF2b2lkIHsKK0BAIC0xMjAsNiAr MTIyLDcgQEAgcHViIGZuIGJ1aWxkKGI6ICp6YnMuQnVpbGRlcikgIXZvaWQgewogICAgICAgICAg Y29uc3Qgcml2ZXJ0aWxlID0gYi5hZGRFeGVjdXRhYmxlKCJyaXZlcnRpbGUiLCAicml2ZXJ0aWxl L21haW4uemlnIik7CiAgICAgICAgICByaXZlcnRpbGUuc2V0VGFyZ2V0KHRhcmdldCk7CiAgICAg ICAgICByaXZlcnRpbGUuc2V0QnVpbGRNb2RlKG1vZGUpOwogKyAgICAgICAgcml2ZXJ0aWxlLnBp ZSA9IHRydWU7Ci0gICAgICAgICByaXZlcnRpbGUuYWRkQnVpbGRPcHRpb24oWzowXWNvbnN0IHU4 LCAidmVyc2lvbiIsIGZ1bGxfdmVyc2lvbik7CisgICAgICAgICByaXZlcnRpbGUuYWRkT3B0aW9u cygiYnVpbGRfb3B0aW9ucyIsIG9wdGlvbnMpOwogIAogICAgICAgICAgcml2ZXJ0aWxlLnN0ZXAu ZGVwZW5kT24oJnNjYW5uZXIuc3RlcCk7CiAtLSAKLTIuMzMuMQorMi4zNS4xCiAKZGlmZiAtLWdp dCBhL3NyY3BrZ3Mvcml2ZXIvdGVtcGxhdGUgYi9zcmNwa2dzL3JpdmVyL3RlbXBsYXRlCmluZGV4 IDljZjNhYmU0Yjg1Yi4uYWUwOWFlNTRiMzRmIDEwMDY0NAotLS0gYS9zcmNwa2dzL3JpdmVyL3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3Mvcml2ZXIvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICdyaXZlcicKIHBrZ25hbWU9cml2ZXIKLXZlcnNpb249MC4xLjEKK3Zl cnNpb249MC4xLjMKIHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPXppZy1idWlsZAogY29uZmlndXJl X2FyZ3M9IiQodm9wdF9pZiB4d2F5bGFuZCAtRHh3YXlsYW5kKSIKQEAgLTEyLDcgKzEyLDcgQEAg bWFpbnRhaW5lcj0iSXNhYWMgRnJldW5kIDxtYWlsQGlzYWFjZnJldW5kLmNvbT4iCiBsaWNlbnNl PSJHUEwtMy4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vZ2l0aHViLmNvbS9yaXZlcndt L3JpdmVyIgogZGlzdGZpbGVzPSIke2hvbWVwYWdlfS9yZWxlYXNlcy9kb3dubG9hZC92JHt2ZXJz aW9ufS9yaXZlci0ke3ZlcnNpb259LnRhci5neiIKLWNoZWNrc3VtPTJhMGJjZDQ2NzBlZDllYmQz OWMyNzlmMmJmMTA4MDNmYzY1YzlmM2VlMjMwN2NlNDA3MjhkZjIzY2U5MTRkMTgKK2NoZWNrc3Vt PWY2MzQ0NGMzMDBhYjU1NGVmM2NhMGQ5MDRhNmIxMjRhODMyYzgzOTdkNDc0ZWYwNjdiZGRlOTEx Yzk4MWM3OWYKIAogYnVpbGRfb3B0aW9ucz0ieHdheWxhbmQiCiBidWlsZF9vcHRpb25zX2RlZmF1 bHQ9Inh3YXlsYW5kIgoKRnJvbSBkYTI0NjUxNjhmNTU5NTViZjNkODcyNTI2YTBiZjBkMjlhYzgw NDIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBJc2FhYyBGcmV1bmQgPG1haWxAaXNh YWNmcmV1bmQuY29tPgpEYXRlOiBXZWQsIDIgTWFyIDIwMjIgMjA6NTA6MTcgKzAwMDAKU3ViamVj dDogW1BBVENIIDIyLzMwXSBydW5kaXJkOiByZW1vdmUgcGFja2FnZQoKICAgIFRoaXMgaGFzIGJl ZW4gZGVwcmVjYXRlZCBieSB1cHN0cmVhbSB3aGljaCByZWNvbW1lbmRzIHVzaW5nCiAgICBkdW1i X3J1bnRpbWVfZGlyIChhbHJlYWR5IHBhY2thZ2VkIGZvciB2b2lkKSBpbnN0ZWFkLgoKICAgIFJl bW92aW5nIG5vdyBzaW5jZSBydW5kaXJkIDAuMi4wIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggemln IDAuOSBhbmQKICAgIHRoZXJlIHdvbid0IGJlIGFueSBuZXcgcnVuZGlyZCByZWxlYXNlcy4KLS0t CiBzcmNwa2dzL3JlbW92ZWQtcGFja2FnZXMvdGVtcGxhdGUgfCAgMSArCiBzcmNwa2dzL3J1bmRp cmQvZmlsZXMvcnVuZGlyZC9ydW4gfCAgMiAtLQogc3JjcGtncy9ydW5kaXJkL3RlbXBsYXRlICAg ICAgICAgIHwgMTcgLS0tLS0tLS0tLS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDE5IGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcnVuZGly ZC9maWxlcy9ydW5kaXJkL3J1bgogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcnVuZGlyZC90 ZW1wbGF0ZQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcmVtb3ZlZC1wYWNrYWdlcy90ZW1wbGF0ZSBi L3NyY3BrZ3MvcmVtb3ZlZC1wYWNrYWdlcy90ZW1wbGF0ZQppbmRleCBiM2E4MTc3ZDFhOWQuLmM5 MDA0NjVlNmFiOCAxMDA2NDQKLS0tIGEvc3JjcGtncy9yZW1vdmVkLXBhY2thZ2VzL3RlbXBsYXRl CisrKyBiL3NyY3BrZ3MvcmVtb3ZlZC1wYWNrYWdlcy90ZW1wbGF0ZQpAQCAtMzM4LDYgKzMzOCw3 IEBAIHJlcGxhY2VzPSIKICBya3Qtc3RhZ2UxLWNvcmVvczw9MS4zMC4wXzMKICBya3Qtc3RhZ2Ux LWZseTw9MS4zMC4wXzMKICBya3Q8PTEuMzAuMF8zCisgcnVuZGlyZDw9MC4yLjBfMQogIHNjYW50 YWlsb3I8PTAuOS4xMi4xXzIKICBzZWFob3JzZS1zaGFyaW5nPD0zLjguMF80CiAgc2VyaWVzcGw8 PTIuMy41XzIKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcnVuZGlyZC9maWxlcy9ydW5kaXJkL3J1biBi L3NyY3BrZ3MvcnVuZGlyZC9maWxlcy9ydW5kaXJkL3J1bgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggZTRhYWU4YzgzYjRiLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9ydW5kaXJk L2ZpbGVzL3J1bmRpcmQvcnVuCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0jIS9iaW4v c2gKLWV4ZWMgcnVuZGlyZApkaWZmIC0tZ2l0IGEvc3JjcGtncy9ydW5kaXJkL3RlbXBsYXRlIGIv c3JjcGtncy9ydW5kaXJkL3RlbXBsYXRlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1 ZmY4OTdhYmQ0NTYuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3J1bmRpcmQvdGVtcGxhdGUK KysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0jIFRlbXBsYXRlIGZpbGUgZm9yICdydW5k aXJkJwotcGtnbmFtZT1ydW5kaXJkCi12ZXJzaW9uPTAuMi4wCi1yZXZpc2lvbj0xCi1idWlsZF9z dHlsZT16aWctYnVpbGQKLW1ha2VkZXBlbmRzPSJwYW0tZGV2ZWwiCi1zaG9ydF9kZXNjPSJTaW1w bGUgZGFlbW9uICsgUEFNIG1vZHVsZSBwcm92aWRpbmcgYW4gWERHX1JVTlRJTUVfRElSIgotbWFp bnRhaW5lcj0iSXNhYWMgRnJldW5kIDxtYWlsQGlzYWFjZnJldW5kLmNvbT4iCi1saWNlbnNlPSJH UEwtMy4wLW9yLWxhdGVyIgotaG9tZXBhZ2U9Imh0dHBzOi8vZ2l0aHViLmNvbS9pZnJldW5kL3J1 bmRpcmQiCi1kaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9L2FyY2hpdmUvdiR7dmVyc2lvbn0udGFyLmd6 IgotY2hlY2tzdW09MWRlYTIwN2YzOTM4OGU4YzJjMjc1YjhhOWFhZGEwMTY2ZDFmNTg3YTgwNmYy ZTVlNDQ4NmQ5ODI1OWUyM2U0YwotCi1wb3N0X2luc3RhbGwoKSB7Ci0JdnN2IHJ1bmRpcmQKLQl2 ZG9jIFJFQURNRS5tZAotfQoKRnJvbSA5ZTdmYjk1NzIwY2U1OGI3N2Y4OWNiYzk3ODA0ZjFmOTk1 ZTY4M2I3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/QW5kcj1DMz1B OT0yMENlcnF1ZWlyYT89IDxhY2VycXVlaXJhMDIxQGdtYWlsLmNvbT4KRGF0ZTogRnJpLCA0IE1h ciAyMDIyIDExOjU1OjQ2ICswMDAwClN1YmplY3Q6IFtQQVRDSCAyMy8zMF0gYmNjOiByZWJ1aWxk IGZvciBsbHZtMTMKCi0tLQogc3JjcGtncy9iY2MvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hh bmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dz L2JjYy90ZW1wbGF0ZSBiL3NyY3BrZ3MvYmNjL3RlbXBsYXRlCmluZGV4IDU0NTA5YjYzZDVhNy4u MmNmYTBhMjk3N2QwIDEwMDY0NAotLS0gYS9zcmNwa2dzL2JjYy90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL2JjYy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2Jj YycKIHBrZ25hbWU9YmNjCiB2ZXJzaW9uPTAuMjQuMAotcmV2aXNpb249MQorcmV2aXNpb249Mgog d3Jrc3JjPSJiY2MiCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EUkVWSVNJ T049JHt2ZXJzaW9ufSAtREVOQUJMRV9MTFZNX1NIQVJFRD0xIgoKRnJvbSA2NTk0Mjc1ZWM1OWE4 MmVjYTZlMThlMjczM2JiNGFiYTYwOGRmNjBhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiA9P1VURi04P3E/QW5kcj1DMz1BOT0yMENlcnF1ZWlyYT89IDxhY2VycXVlaXJhMDIxQGdtYWls LmNvbT4KRGF0ZTogRnJpLCA0IE1hciAyMDIyIDExOjU2OjMyICswMDAwClN1YmplY3Q6IFtQQVRD SCAyNC8zMF0gZ25vbWUtYnVpbGRlcjogcmVidWlsZCBmb3IgbGx2bTEzCgotLS0KIHNyY3BrZ3Mv Z25vbWUtYnVpbGRlci90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlv bigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ25vbWUtYnVpbGRlci90 ZW1wbGF0ZSBiL3NyY3BrZ3MvZ25vbWUtYnVpbGRlci90ZW1wbGF0ZQppbmRleCA5MzU1OWIyMTc3 NGYuLjVhNWE1MTg5M2FlOCAxMDA2NDQKLS0tIGEvc3JjcGtncy9nbm9tZS1idWlsZGVyL3RlbXBs YXRlCisrKyBiL3NyY3BrZ3MvZ25vbWUtYnVpbGRlci90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dub21lLWJ1aWxkZXInCiBwa2duYW1lPWdub21lLWJ1aWxk ZXIKIHZlcnNpb249NDEuMwotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9bWVz b24KIGJ1aWxkX2hlbHBlcj1xZW11CiBjb25maWd1cmVfYXJncz0iLURoZWxwPXRydWUgLURuZXR3 b3JrX3Rlc3RzPWZhbHNlIgoKRnJvbSA5YTgzOWExYzZhOTA3NDIxYzQ3NjFmZTg2MWVkNjAzYzZh MmQ0ZWRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/QW5kcj1DMz1B OT0yMENlcnF1ZWlyYT89IDxhY2VycXVlaXJhMDIxQGdtYWlsLmNvbT4KRGF0ZTogRnJpLCA0IE1h ciAyMDIyIDExOjU2OjU4ICswMDAwClN1YmplY3Q6IFtQQVRDSCAyNS8zMF0gbGRjOiByZWJ1aWxk IGZvciBsbHZtMTMKCi0tLQogc3JjcGtncy9sZGMvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBj aGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9sZGMvdGVtcGxhdGUgYi9zcmNwa2dzL2xkYy90ZW1wbGF0ZQppbmRleCBhMjcyODBkZGUz YjguLjgwNTk3OGE4MWZkOSAxMDA2NDQKLS0tIGEvc3JjcGtncy9sZGMvdGVtcGxhdGUKKysrIGIv c3JjcGtncy9sZGMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdsZGMnCiBwa2duYW1lPWxkYwogdmVyc2lvbj0xLjI4LjAKLXJldmlzaW9uPTEKK3JldmlzaW9u PTIKIHdya3NyYz0ibGRjLSR7dmVyc2lvbn0tc3JjIgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZp Z3VyZV9hcmdzPSIKQEAgLTExLDcgKzExLDcgQEAgY29uZmlndXJlX2FyZ3M9IgogIC1EQkFTSF9D T01QTEVUSU9OX0NPTVBMRVRJT05TRElSPS91c3Ivc2hhcmUvYmFzaC1jb21wbGV0aW9uCiAgLURD X1NZU1RFTV9MSUJTPSd1bndpbmQ7bTtwdGhyZWFkO3J0O2RsJyIKIGNvbmZfZmlsZXM9Ii9ldGMv bGRjMi5jb25mIgotaG9zdG1ha2VkZXBlbmRzPSJkbWQgbGx2bTEyIHBlcmwgcGtnLWNvbmZpZyIK K2hvc3RtYWtlZGVwZW5kcz0iZG1kIGxsdm0gcGVybCBwa2ctY29uZmlnIgogbWFrZWRlcGVuZHM9 ImxpYmN1cmwtZGV2ZWwgbGliZmZpLWRldmVsIG5jdXJzZXMtZGV2ZWwgemxpYi1kZXZlbAogIGxs dm0tbGlidW53aW5kLWRldmVsIgogZGVwZW5kcz0ibGRjLXJ1bnRpbWUgbGx2bS1saWJ1bndpbmQt ZGV2ZWwiCgpGcm9tIDYxMjdhNmQwOTRjYTlhNjlhMTYyYWRlNTk2YTI2OWNhY2RhZjM0MjUgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/cT9BbmRyPUMzPUE5PTIwQ2VycXVl aXJhPz0gPGFjZXJxdWVpcmEwMjFAZ21haWwuY29tPgpEYXRlOiBGcmksIDQgTWFyIDIwMjIgMTE6 NTg6MTcgKzAwMDAKU3ViamVjdDogW1BBVENIIDI2LzMwXSBzaGlib2tlbjI6IHJlYnVpbGQgZm9y IGxsdm0xMwoKLS0tCiBzcmNwa2dzL3NoaWJva2VuMi90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3Mvc2hpYm9rZW4yL3RlbXBsYXRlIGIvc3JjcGtncy9zaGlib2tlbjIvdGVtcGxhdGUKaW5kZXgg YjU2NjEzMjI5YzEzLi5hYjlkMmM0Y2I4ZjkgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvc2hpYm9rZW4y L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvc2hpYm9rZW4yL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBA QAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnc2hpYm9rZW4yJwogcGtnbmFtZT1zaGlib2tlbjIKIHZl cnNpb249NS4xNS4yCi1yZXZpc2lvbj00CityZXZpc2lvbj01CiBfcGtnbmFtZT0icHlzaWRlLXNl dHVwLW9wZW5zb3VyY2Utc3JjLSR7dmVyc2lvbn0iCiB3cmtzcmM9IiR7X3BrZ25hbWUvJTUuMTQu Mi4xLzUuMTQuMn0iCiBidWlsZF93cmtzcmM9InNvdXJjZXMvc2hpYm9rZW4yIgoKRnJvbSBhZTY5 Y2UzYjFiNjk3YWRmY2FlNjlmZmNlZGQ1ZWY5NGNmN2QxNmE4IE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiA9P1VURi04P3E/QW5kcj1DMz1BOT0yMENlcnF1ZWlyYT89IDxhY2VycXVlaXJh MDIxQGdtYWlsLmNvbT4KRGF0ZTogRnJpLCA0IE1hciAyMDIyIDExOjU4OjIzICswMDAwClN1Ympl Y3Q6IFtQQVRDSCAyNy8zMF0gdGlsaXg6IHJlYnVpbGQgZm9yIGxsdm0xMwoKLS0tCiBzcmNwa2dz L3RpbGl4L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAx IGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy90aWxpeC90ZW1wbGF0ZSBiL3NyY3Br Z3MvdGlsaXgvdGVtcGxhdGUKaW5kZXggZDhmMDE0YmM3OGM1Li5hYzFiZjdkZDNiZGQgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvdGlsaXgvdGVtcGxhdGUKKysrIGIvc3JjcGtncy90aWxpeC90ZW1wbGF0 ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3RpbGl4JwogcGtnbmFtZT10 aWxpeAogdmVyc2lvbj0xLjkuNAotcmV2aXNpb249MworcmV2aXNpb249NAogYnVpbGRfc3R5bGU9 bWVzb24KIGNvbmZpZ3VyZV9hcmdzPSItRGJfbHRvPWZhbHNlIgogaG9zdG1ha2VkZXBlbmRzPSJh dXRvbWFrZSBnZXR0ZXh0LWRldmVsIGdkay1waXhidWYgZ2xpYi1kZXZlbCBsZGMgcG80YSBwa2ct Y29uZmlnCgpGcm9tIGI1YzRiNTViZGYxOWFjZGVjMDNhMGU1ZWRlMzBiNjg0NWQ4MTMyYTIgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/cT9BbmRyPUMzPUE5PTIwQ2VycXVl aXJhPz0gPGFjZXJxdWVpcmEwMjFAZ21haWwuY29tPgpEYXRlOiBGcmksIDQgTWFyIDIwMjIgMTI6 MDg6NTUgKzAwMDAKU3ViamVjdDogW1BBVENIIDI4LzMwXSBTUElSVi1MTFZNLVRyYW5zbGF0b3I6 IHJlYnVpbGQgZm9yIGxsdm0xMwoKLS0tCiBzcmNwa2dzL1NQSVJWLUxMVk0tVHJhbnNsYXRvci90 ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvU1BJUlYtTExWTS1UcmFuc2xhdG9yL3RlbXBsYXRl IGIvc3JjcGtncy9TUElSVi1MTFZNLVRyYW5zbGF0b3IvdGVtcGxhdGUKaW5kZXggMjUwNGNhYmVk MzY3Li44NTJhYTVjYjM4NDAgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvU1BJUlYtTExWTS1UcmFuc2xh dG9yL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvU1BJUlYtTExWTS1UcmFuc2xhdG9yL3RlbXBsYXRl CkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnU1BJUlYtTExWTS1UcmFuc2xh dG9yJwogcGtnbmFtZT1TUElSVi1MTFZNLVRyYW5zbGF0b3IKIHZlcnNpb249MTIuMC4wCi1yZXZp c2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogbWFrZV9idWlsZF9hcmdzPSJs bHZtLXNwaXJ2IgogY29uZmlndXJlX2FyZ3M9Ii1Xbm8tZGV2IC1ETExWTV9MSU5LX0xMVk1fRFlM SUI9T04gLURDTUFLRV9TS0lQX1JQQVRIPU9OCgpGcm9tIDgwMWFlMWVmZmU0YmVmODJkNTY4ODdl ZGVlODY3Zjc4OGI2OTJiMjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/ cT9BbmRyPUMzPUE5PTIwQ2VycXVlaXJhPz0gPGFjZXJxdWVpcmEwMjFAZ21haWwuY29tPgpEYXRl OiBGcmksIDQgTWFyIDIwMjIgMTI6MTE6NDkgKzAwMDAKU3ViamVjdDogW1BBVENIIDI5LzMwXSBn aGRsOiByZWJ1aWxkIGZvciBsbHZtMTMKCi0tLQogc3JjcGtncy9naGRsL3RlbXBsYXRlIHwgNCAr Ky0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvZ2hkbC90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ2hkbC90ZW1wbGF0ZQpp bmRleCBlNzU2ZDhjM2NkODcuLmE4M2Q5OWY0YmY1ZCAxMDA2NDQKLS0tIGEvc3JjcGtncy9naGRs L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ2hkbC90ZW1wbGF0ZQpAQCAtNyw3ICs3LDcgQEAKIHBr Z25hbWU9Z2hkbAogcmV2ZXJ0cz0iMjAxODExMjlfMSIKIHZlcnNpb249MS4wLjAKLXJldmlzaW9u PTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0t cHJlZml4PS91c3IgLS1zcmNkaXI9Li4gLS1pbmNkaXI9bGliL2doZGwvaW5jbHVkZSIKIG1ha2Vk ZXBlbmRzPSJ6bGliLWRldmVsIgpAQCAtNTEsNyArNTEsNyBAQCBmaQogCiBpZiBbICIkYnVpbGRf b3B0aW9uX2xsdm0iIF07IHRoZW4KIAlzdWJwYWNrYWdlcys9IiBnaGRsLWxsdm0iCi0JbWFrZWRl cGVuZHMrPSIgbGx2bTEyIgorCW1ha2VkZXBlbmRzKz0iIGxsdm0iCiBmaQogCiBkb19jb25maWd1 cmUoKSB7CgpGcm9tIDFmZmU0MzNmNDI5MDJmYzRkZjBiOTRlMGIxZGY1NGU2OWNhZDU0M2EgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/cT9BbmRyPUMzPUE5PTIwQ2VycXVl aXJhPz0gPGFjZXJxdWVpcmEwMjFAZ21haWwuY29tPgpEYXRlOiBGcmksIDQgTWFyIDIwMjIgMTI6 MTM6MTggKzAwMDAKU3ViamVjdDogW1BBVENIIDMwLzMwXSBydXN0OiByZWJ1aWxkIGZvciBsbHZt MTMKCi0tLQogc3JjcGtncy9ydXN0L3RlbXBsYXRlIHwgNiArKystLS0KIDEgZmlsZSBjaGFuZ2Vk LCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9y dXN0L3RlbXBsYXRlIGIvc3JjcGtncy9ydXN0L3RlbXBsYXRlCmluZGV4IDU2MGE2MjlmM2RhMi4u MjdmNDkxZDNjNjk3IDEwMDY0NAotLS0gYS9zcmNwa2dzL3J1c3QvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9ydXN0L3RlbXBsYXRlCkBAIC05LDEwICs5LDEwIEBACiAjCiBwa2duYW1lPXJ1c3QKIHZl cnNpb249MS41Ny4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiB3cmtzcmM9InJ1c3RjLSR7dmVy c2lvbn0tc3JjIgogaG9zdG1ha2VkZXBlbmRzPSJjbWFrZSBjdXJsIHBrZy1jb25maWcgcHl0aG9u MyB0YXIgY2FyZ28tYm9vdHN0cmFwIgotbWFrZWRlcGVuZHM9ImxpYmZmaS1kZXZlbCBuY3Vyc2Vz LWRldmVsIGxpYnhtbDItZGV2ZWwgemxpYi1kZXZlbCBsbHZtMTIiCittYWtlZGVwZW5kcz0ibGli ZmZpLWRldmVsIG5jdXJzZXMtZGV2ZWwgbGlieG1sMi1kZXZlbCB6bGliLWRldmVsIGxsdm0iCiBk ZXBlbmRzPSJydXN0LXN0ZCIKIHNob3J0X2Rlc2M9IlNhZmUsIGNvbmN1cnJlbnQsIHByYWN0aWNh bCBzeXN0ZW1zIGxhbmd1YWdlIgogbWFpbnRhaW5lcj0iRW5ubyBCb2xhbmQgPGdvdHRveEB2b2lk bGludXgub3JnPiIKQEAgLTM0LDcgKzM0LDcgQEAgaWYgWyAiJFhCUFNfVEFSR0VUX0xJQkMiID0g Im11c2wiIF07IHRoZW4KIGZpCiAKIGlmIFsgIiRDUk9TU19CVUlMRCIgXTsgdGhlbgotCWhvc3Rt YWtlZGVwZW5kcys9IiBydXN0IGxsdm0xMiIKKwlob3N0bWFrZWRlcGVuZHMrPSIgcnVzdCBsbHZt IgogCSMgVGhlc2UgYXJlIHJlcXVpcmVkIGZvciBidWlsZGluZyB0aGUgYnVpbGRob3N0J3Mgc3Rh Z2UwLzEKIAlob3N0bWFrZWRlcGVuZHMrPSIgbGliZmZpLWRldmVsIGxpYnhtbDItZGV2ZWwgbmN1 cnNlcy1kZXZlbCB6bGliLWRldmVsIgogZWxzZQo= --===============5885205374648988450==--