From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 22717 invoked from network); 25 Aug 2022 11:56:59 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 25 Aug 2022 11:56:59 -0000 Content-Type: multipart/mixed; boundary="===============7173458539286940108==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_=5Bci_skip=5D_freecad=3A_update_to_0=2E20=2E1=2C_update_pyside_to_5=2E15=2E5_and_others_related?= To: ml@inbox.vuxu.org From: yopito Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Thu, 25 Aug 2022 13:56:59 +0200 List-Id: Message-ID: <20220825115659.RWHdk1gbYTdjNCZr_YBlEWDbegvb-PuDAWCDaMvG3Zw@z> GitHub notification mails are now in MIME to allow UTF8. --===============7173458539286940108== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgeW9waXRvIGFnYWluc3QgbWFzdGVy IG9uIHRoZSB2b2lkLXBhY2thZ2VzIHJlcG9zaXRvcnkKCmh0dHBzOi8vZ2l0aHViLmNvbS95b3Bp dG8vdm9pZC1wYWNrYWdlcyBweXNpZGU1LjE1LjVfYW5kX2ZyZWVjYWQwLjIwCmh0dHBzOi8vZ2l0 aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC8zODg1NgoKW2NpIHNraXBdIGZy ZWVjYWQ6IHVwZGF0ZSB0byAwLjIwLjEsIHVwZGF0ZSBweXNpZGUgdG8gNS4xNS41IGFuZCBvdGhl cnMgcmVsYXRlZAo8IS0tIFVuY29tbWVudCByZWxldmFudCBzZWN0aW9ucyBhbmQgZGVsZXRlIG9w dGlvbnMgd2hpY2ggYXJlIG5vdCBhcHBsaWNhYmxlIC0tPg0KDQojIyMjIFRlc3RpbmcgdGhlIGNo YW5nZXMNCi0gSSB0ZXN0ZWQgdGhlIGNoYW5nZXMgaW4gdGhpcyBQUjogKipZRVMqKg0KDQo8IS0t DQojIyMjIE5ldyBwYWNrYWdlDQotIFRoaXMgbmV3IHBhY2thZ2UgY29uZm9ybXMgdG8gdGhlIFtw YWNrYWdlIHJlcXVpcmVtZW50c10oaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1w YWNrYWdlcy9ibG9iL21hc3Rlci9DT05UUklCVVRJTkcubWQjcGFja2FnZS1yZXF1aXJlbWVudHMp OiAqKllFUyoqfCoqTk8qKg0KLS0+DQoNCjwhLS0gTm90ZTogSWYgdGhlIGJ1aWxkIGlzIGxpa2Vs eSB0byB0YWtlIG1vcmUgdGhhbiAyIGhvdXJzLCBwbGVhc2UgYWRkIGNpIHNraXAgdGFnIGFzIGRl c2NyaWJlZCBpbg0KaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9i bG9iL21hc3Rlci9DT05UUklCVVRJTkcubWQjY29udGludW91cy1pbnRlZ3JhdGlvbg0KYW5kIHRl c3QgYXQgbGVhc3Qgb25lIG5hdGl2ZSBidWlsZCBhbmQsIGlmIHN1cHBvcnRlZCwgYXQgbGVhc3Qg b25lIGNyb3NzIGJ1aWxkLg0KSWdub3JlIHRoaXMgc2VjdGlvbiBpZiB0aGlzIFBSIGlzIG5vdCBz a2lwcGluZyBDSS4NCi0tPg0KDQojIyMjIExvY2FsIGJ1aWxkIHRlc3RpbmcNCi0gSSBidWlsdCB0 aGlzIFBSIGxvY2FsbHkgZm9yIG15IG5hdGl2ZSBhcmNoaXRlY3R1cmUgKHg4Nl82NC1tdXNsKSA6 ICoqWUVTKioNCi0gSSBidWlsdCB0aGlzIFBSIGxvY2FsbHkgZm9yIHRoZXNlIGFyY2hpdGVjdHVy ZXMgKGlmIHN1cHBvcnRlZC4gbWFyayBjcm9zc2J1aWxkcyk6DQogIC0gYWFyY2g2NCAoZ2xpYmMp OiBwYXJ0aWFsLCBzaW5jZSBzb21lIHBhY2thZ2VzIGNhbid0IGJlIGNyb3NzYnVpbGRlZA0KDQoj IyMjIEFkZGl0aW9uYWwgY29tbWVudHMNCg0KKiBydW50aW1lIHRlc3QgYXJlIE9LLCBhcGFydCB0 aGVzZSByZWxhdGVkIHRvIHBpdnksIHNlZSBiZWxvdw0KKiBzdXBlcnNlZWRzIFBSICMzNjM1NiBy ZWdhcmRpbmcgRnJlZUNBRCB1cGRhdGUNCiogYWJvdXQgcGl2eTogfn5zb21lICBTSUdTRUdWIG9u IHJ1bm5pbmcgRnJlZUNBRCB3aGVuIGl0J3MgdXNpbmcgQ29pbi9waXZ5LiAgDQogIFNlZSBodHRw czovL2dpdGh1Yi5jb20vY29pbjNkL3BpdnkvaXNzdWVzLzk4ICANCiAgSG93ZXZlciwgdGhpcyBp cyBhZmZlY3RpbmcgY3VycmVudCBGcmVlQ0FEIGJpbmFyeSBwYWNrYWdpbmcgdG9vLn5+ICANCiAg VXBkYXRlOiBhZGRlZCBwYXRjaCBvbiBjb2luL3BpdnkgdGhhdCBmaXhlZCBpdA0KDQpwaW5nIEBs dXpwYXogQGthcmwtbmlsc3NvbiBAUGlyYXR5DQoKCkEgcGF0Y2ggZmlsZSBmcm9tIGh0dHBzOi8v Z2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC8zODg1Ni5wYXRjaCBpcyBh dHRhY2hlZA== --===============7173458539286940108== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-pyside5.15.5_and_freecad0.20-38856.patch" RnJvbSAxMzU2YTI3NDhkMGQxNTIwNWJkNDJmNzEwNjA1OWExNjczM2E0M2I0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB5b3BpdG8gPHBpZXJyZS5ib3VyZ2luQGZyZWUuZnI+CkRhdGU6 IE1vbiwgMjIgQXVnIDIwMjIgMTM6NDI6MzIgKzAyMDAKU3ViamVjdDogW1BBVENIIDEvN10gc2hp Ym9rZW4yOiB1cGRhdGUgdG8gNS4xNS41CgotLS0KIC4uLi9wYXRjaGVzL2ZpeC1mb3ItbnVtcHkt MS4yMy4wLnBhdGNoICAgICAgICB8ICAxOCArKysKIC4uLi9wYXRjaGVzL25vLXB5dGhvbi1hcmNo LXN1ZmZpeC5wYXRjaCAgICAgICB8ICAgMiArLQogc3JjcGtncy9zaGlib2tlbjIvcGF0Y2hlcy9w eXRob24zMTAucGF0Y2ggICAgIHwgMTE0IC0tLS0tLS0tLS0tLS0tLS0tLQogLi4uL3BhdGNoZXMv dGVzdHMtcHl0aG9uLXN5bnRheC5wYXRjaCAgICAgICAgIHwgIDkxIC0tLS0tLS0tLS0tLS0tCiBz cmNwa2dzL3NoaWJva2VuMi90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KIDUg ZmlsZXMgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKSwgMjA5IGRlbGV0aW9ucygtKQogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyY3BrZ3Mvc2hpYm9rZW4yL3BhdGNoZXMvZml4LWZvci1udW1weS0xLjIz LjAucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3NoaWJva2VuMi9wYXRjaGVzL3B5 dGhvbjMxMC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mvc2hpYm9rZW4yL3BhdGNo ZXMvdGVzdHMtcHl0aG9uLXN5bnRheC5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc2hpYm9r ZW4yL3BhdGNoZXMvZml4LWZvci1udW1weS0xLjIzLjAucGF0Y2ggYi9zcmNwa2dzL3NoaWJva2Vu Mi9wYXRjaGVzL2ZpeC1mb3ItbnVtcHktMS4yMy4wLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uNzA4Y2ViZTNmOWZjCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj cGtncy9zaGlib2tlbjIvcGF0Y2hlcy9maXgtZm9yLW51bXB5LTEuMjMuMC5wYXRjaApAQCAtMCww ICsxLDE4IEBACityZXdvcmsgb2YgY29tbWl0IDE0MjJjZjRhN2YyNzdmYjEzZmQyMDlmMjRhOTBk NmMwMjY0MTQ5N2QgKHNoaWJva2VuNikKKworLS0tIGEvc291cmNlcy9zaGlib2tlbjIvbGlic2hp Ym9rZW4vc2JrbnVtcHlhcnJheWNvbnZlcnRlci5jcHAKKysrKyBiL3NvdXJjZXMvc2hpYm9rZW4y L2xpYnNoaWJva2VuL3Nia251bXB5YXJyYXljb252ZXJ0ZXIuY3BwCitAQCAtMTE2LDggKzExNiwx MyBAQAorICAgICAgICAgICAgIHN0ciA8PCAiIE5QWV9BUlJBWV9OT1RTV0FQUEVEIjsKKyAgICAg ICAgIGlmICgoZmxhZ3MgJiBOUFlfQVJSQVlfV1JJVEVBQkxFKSAhPSAwKQorICAgICAgICAgICAg IHN0ciA8PCAiIE5QWV9BUlJBWV9XUklURUFCTEUiOworKyNpZiBOUFlfVkVSU0lPTiA+PSAweDAw MDAwMDEwIC8vIE5QWV8xXzIzX0FQSV9WRVJTSU9OCisrICAgICAgICBpZiAoKGZsYWdzICYgTlBZ X0FSUkFZX1dSSVRFQkFDS0lGQ09QWSkgIT0gMCkKKysgICAgICAgICAgICBzdHIgPDwgIiBOUFlf QVJSQVlfV1JJVEVCQUNLSUZDT1BZIjsKKysjZWxzZQorICAgICAgICAgaWYgKChmbGFncyAmIE5Q WV9BUlJBWV9VUERBVEVJRkNPUFkpICE9IDApCisgICAgICAgICAgICAgc3RyIDw8ICIgTlBZX0FS UkFZX1VQREFURUlGQ09QWSI7CisrI2VuZGlmCisgICAgIH0gZWxzZSB7CisgICAgICAgICBzdHIg PDwgJzAnOworICAgICB9CmRpZmYgLS1naXQgYS9zcmNwa2dzL3NoaWJva2VuMi9wYXRjaGVzL25v LXB5dGhvbi1hcmNoLXN1ZmZpeC5wYXRjaCBiL3NyY3BrZ3Mvc2hpYm9rZW4yL3BhdGNoZXMvbm8t cHl0aG9uLWFyY2gtc3VmZml4LnBhdGNoCmluZGV4IDAyYmFhNjg5NmY3Yi4uMzFlOWM1NWRiNmYy IDEwMDY0NAotLS0gYS9zcmNwa2dzL3NoaWJva2VuMi9wYXRjaGVzL25vLXB5dGhvbi1hcmNoLXN1 ZmZpeC5wYXRjaAorKysgYi9zcmNwa2dzL3NoaWJva2VuMi9wYXRjaGVzL25vLXB5dGhvbi1hcmNo LXN1ZmZpeC5wYXRjaApAQCAtMSw1ICsxLDUgQEAKIENvbnNpc3RlbnQgZmlsZSBuYW1pbmcgYWNy b3NzIGFyY2hpdGVjdHVyZXMgZm9yIHNvIGxpYnMgYW5kIGNtYWtlIGZpbGVzOgotcmVtb3ZlIGlu dGVybWVkaWF0ZSBzdWZmaXggbGlrZSAiLmNweXRob24tMzZtLXg4Nl82NC1saW51eC1nbnUiLgor cmVtb3ZlIHB5dGhvbiBzdWZmaXggbGlrZSAiLmNweXRob24tMzZtLXg4Nl82NC1saW51eC1nbnUi LgogQXZvaWQgb3ZlcndyaXRpbmcgdGhlICJyZWFsIiBjbWFrZSBmaWxlIHdpdGggdGhlIGdlbmVy aWMgd3JhcHBlcidzIG9uZSAoc2FtZQogbmFtZSBpbiBzdWNoIGEgY2FzZSkKIApkaWZmIC0tZ2l0 IGEvc3JjcGtncy9zaGlib2tlbjIvcGF0Y2hlcy9weXRob24zMTAucGF0Y2ggYi9zcmNwa2dzL3No aWJva2VuMi9wYXRjaGVzL3B5dGhvbjMxMC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMTYwMGRlZGE0NmYyLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9zaGlib2tlbjIv cGF0Y2hlcy9weXRob24zMTAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAot VGhlIGZpcnN0IHBhdGNoIGlzIHRha2VuIGZyb20gdGhlIGlzc3VlIGFuZCByZXNvbHV0aW9uIGRv Y3VtZW50ZWQgYXQKLQotICAgIGh0dHBzOi8vYnVncmVwb3J0cy5xdC5pby9icm93c2UvUFlTSURF LTE0MzYKLQotTm90ZSB0aGF0IHN0cmluZ3MgY3JlYXRlZCBhcyBwYXJ0IG9mIHRoZSBgc3RhdGlj U3RyaW5ncygpYCBzZXQgdXNlZCBpbiB0aGUKLWBmaW5hbGl6ZVN0YXRpY1N0cmluZ3MoKWAgZnVu Y3Rpb24gYXJlIGNyZWF0ZWQgYnkgYGNyZWF0ZVN0YXRpY1N0cmluZygpYCwgd2hpY2gKLXVzZXMg YFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nYCB0byBjcmVhdGUgYW4gb3duZWQgcmVmZXJlbmNl IHRvIGFuIGludGVybmVkCi1QeXRob24gc3RyaW5nICoqYW5kKiogY2FsbHMgUHlfSU5DUkVGIHRv IGZ1cnRoZXIgZ3VhcmQgYWdhaW5zdCB0aGUgc3RyaW5ncwotZGlzYXBwZWFyaW5nLiBUaHVzLCBp biBgZmluYWxpemVTdGF0aWNTdHJpbmdzKClgLCB3ZSBuZWVkICp0d28qIGNhbGxzIHRvCi1QeV9E RUNSRUY6IG9uZSB0byBjbGVhciB0aGUgImd1YXJkIiBpbmNyZW1lbnQgYWZ0ZXIgY3JlYXRpb24g YW5kIG9uZSB0byByZWxlYXNlCi1vd25lcnNoaXAgZnJvbSB0aGUgY3JlYXRpb24gaXRzZWxmLgot Ci1UaGUgc2Vjb25kIGFuZCB0aGlyZCBwYXRjaGVzIGFyZSBhZGFwdGVkIGZyb20KLQotICAgIGh0 dHBzOi8vY29kZXJldmlldy5xdC1wcm9qZWN0Lm9yZy9jL3B5c2lkZS9weXNpZGUtc2V0dXAvKy8z NDgzOTAKLQotVGhlIHNlY29uZCBhZGRyZXNzZXMgdGhlIGRpc2FwcGVhcmFuY2Ugb2YgX1B5X01h bmdsZSBmcm9tIFB5dGhvbiAzLjEwIGJ5Ci1wcm92aWRpbmcgYW4gYWx0ZXJuYXRpdmUgaW1wbGVt ZW50YXRpb24gdGhhdCB3YXMgcHJldmlvdXNseSByZXNlcnZlZCBmb3IKLVB5X0xJTUlURURfQVBJ LgotCi1UaGUgZm91cnRoIHBhdGNoIHdhcyBhZGFwdGVkIGZyb20KLQotICAgIGh0dHBzOi8vY29k ZXJldmlldy5xdC1wcm9qZWN0Lm9yZy9jL3B5c2lkZS9weXNpZGUtc2V0dXAvKy8zNjU0MDMvNAot Ci1Ub2dldGhlciB3aXRoIHRoZSB0aGlyZCBwYXRjaCx0IGhpcyBhZGRyZXNzZXMgY2hhbmdlcyB0 byB0aGUgdHlwaW5nIG1vZHVsZSB0aGF0Ci1jYXVzZWQgdGhlIHB5aSBiaW5kaW5nIGdlbmVyYXRv ciB0byBmYWlsIGluIHNvbWUgY2FzZXMuCi0KLWRpZmYgLXVyIGEvc291cmNlcy9zaGlib2tlbjIv bGlic2hpYm9rZW4vcGVwMzg0aW1wbC5jcHAgYi9zb3VyY2VzL3NoaWJva2VuMi9saWJzaGlib2tl bi9wZXAzODRpbXBsLmNwcAotLS0tIGEvc291cmNlcy9zaGlib2tlbjIvbGlic2hpYm9rZW4vcGVw Mzg0aW1wbC5jcHAJMjAyMC0xMS0xMSAwNzo1MTozMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBiL3Nv dXJjZXMvc2hpYm9rZW4yL2xpYnNoaWJva2VuL3BlcDM4NGltcGwuY3BwCTIwMjEtMDktMjYgMDg6 NDc6MDAuNjE0MTg0OTI2IC0wNDAwCi1AQCAtNzUxLDE0ICs3NTEsMTQgQEAKLSAjZW5kaWYgLy8g SVNfUFkyCi0gICAgIFNoaWJva2VuOjpBdXRvRGVjUmVmIHByaXZhdGVvYmooUHlPYmplY3RfR2V0 QXR0cigKLSAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UHlPYmplY3QgKj4oUHlfVFlQRShzZWxm KSksIFNoaWJva2VuOjpQeU1hZ2ljTmFtZTo6bmFtZSgpKSk7Ci0tI2lmbmRlZiBQeV9MSU1JVEVE X0FQSQotLSAgICByZXR1cm4gX1B5X01hbmdsZShwcml2YXRlb2JqLCBuYW1lKTsKLS0jZWxzZQot LSAgICAvLyBGb3Igc29tZSByZWFzb24sIF9QeV9NYW5nbGUgaXMgbm90IGluIHRoZSBMaW1pdGVk IEFQSS4gV2h5PwotLSAgICBzaXplX3QgcGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHByaXZh dGVvYmopOwotKwotKyAgICAvLyBQWVNJREUtMTQzNjogX1B5X01hbmdsZSBpcyBubyBsb25nZXIg ZXhwb3NlZDsgaW1wbGVtZW50IGl0IGFsd2F5cy4KLSsgICAgLy8gVGhlIHJlc3Qgb2YgdGhpcyBm dW5jdGlvbiBpcyBvdXIgb3duIGltcGxlbWVudGF0aW9uIG9mIF9QeV9NYW5nbGUuCi0rICAgIC8v IFBsZWFzZSBjb21wYXJlIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBpbiBjb21waWxlLmMgLgotKyAg ICBzaXplX3QgcGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHByaXZhdGVvYmoub2JqZWN0KCkp OwotICAgICAvKiBTdHJpcCBsZWFkaW5nIHVuZGVyc2NvcmVzIGZyb20gY2xhc3MgbmFtZSAqLwot ICAgICBzaXplX3QgaXByaXYgPSAwOwotLSAgICB3aGlsZSAoUHlVbmljb2RlX1JFQURfQ0hBUihw cml2YXRlb2JqLCBpcHJpdikgPT0gJ18nKQotKyAgICB3aGlsZSAoUHlVbmljb2RlX1JFQURfQ0hB Uihwcml2YXRlb2JqLm9iamVjdCgpLCBpcHJpdikgPT0gJ18nKQotICAgICAgICAgaXByaXYrKzsK LSAgICAgaWYgKGlwcml2ID09IHBsZW4pIHsKLSAgICAgICAgIFB5X0lOQ1JFRihuYW1lKTsKLUBA IC03ODcsNyArNzg3LDYgQEAKLSAgICAgaWYgKGFtb3VudCA+IGJpZ19zdGFjaykKLSAgICAgICAg IGZyZWUocmVzYnVmKTsKLSAgICAgcmV0dXJuIHJlc3VsdDsKLS0jZW5kaWYgLy8gZWxzZSBQeV9M SU1JVEVEX0FQSQotIH0KLSAKLSAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLWRpZmYgLXVyIGEvc291 cmNlcy9zaGlib2tlbjIvbGlic2hpYm9rZW4vc2Jrc3RyaW5nLmNwcCBiL3NvdXJjZXMvc2hpYm9r ZW4yL2xpYnNoaWJva2VuL3Nia3N0cmluZy5jcHAKLS0tLSBhL3NvdXJjZXMvc2hpYm9rZW4yL2xp YnNoaWJva2VuL3Nia3N0cmluZy5jcHAJMjAyMC0xMS0xMSAwNzo1MTozMC4wMDAwMDAwMDAgLTA1 MDAKLSsrKyBiL3NvdXJjZXMvc2hpYm9rZW4yL2xpYnNoaWJva2VuL3Nia3N0cmluZy5jcHAJMjAy MS0wOS0yNiAwODo0NzowMC42MTQxODQ5MjYgLTA0MDAKLUBAIC0yNDcsOCArMjQ3LDE1IEBACi0g ewotICAgICBhdXRvICZzZXQgPSBzdGF0aWNTdHJpbmdzKCk7Ci0gICAgIGZvciAoUHlPYmplY3Qg Km9iIDogc2V0KSB7Ci0rICAgICAgICAvLyBTaW5jZSBQeXRob24gMy4xMCwgaW50ZXJuZWQgc3Ry aW5ncyBhdCBkZWxldGVkIGF0IFB5dGhvbiBleGl0LgotKyNpZiBQWV9WRVJTSU9OX0hFWCA+PSAw eDAzMGEwMDAwCi0rICAgICAgICBQeV9ERUNSRUYob2IpOwotKyAgICAgICAgLy8gY3JlYXRlU3Rh dGljU3RyaW5nKCkgY2FsbHMgUHlfSU5DUkVGKCkKLSsgICAgICAgIFB5X0RFQ1JFRihvYik7Ci0r I2Vsc2UKLSAgICAgICAgIFB5X1JFRkNOVChvYikgPSAxOwotICAgICAgICAgUHlfREVDUkVGKG9i KTsKLSsjZW5kaWYKLSAgICAgfQotICAgICBzZXQuY2xlYXIoKTsKLSB9Ci1kaWZmIC11ciBhL3Nv dXJjZXMvc2hpYm9rZW4yL3NoaWJva2VubW9kdWxlL2ZpbGVzLmRpci9zaGlib2tlbnN1cHBvcnQv c2lnbmF0dXJlL21hcHBpbmcucHkgYi9zb3VyY2VzL3NoaWJva2VuMi9zaGlib2tlbm1vZHVsZS9m aWxlcy5kaXIvc2hpYm9rZW5zdXBwb3J0L3NpZ25hdHVyZS9tYXBwaW5nLnB5Ci0tLS0gYS9zb3Vy Y2VzL3NoaWJva2VuMi9zaGlib2tlbm1vZHVsZS9maWxlcy5kaXIvc2hpYm9rZW5zdXBwb3J0L3Np Z25hdHVyZS9tYXBwaW5nLnB5CTIwMjAtMTEtMTEgMDc6NTE6MzAuMDAwMDAwMDAwIC0wNTAwCi0r KysgYi9zb3VyY2VzL3NoaWJva2VuMi9zaGlib2tlbm1vZHVsZS9maWxlcy5kaXIvc2hpYm9rZW5z dXBwb3J0L3NpZ25hdHVyZS9tYXBwaW5nLnB5CTIwMjEtMDktMjYgMDg6NDc6MDAuNjE0MTg0OTI2 IC0wNDAwCi1AQCAtMzAwLDYgKzMwMCw3IEBACi0gICAgICJ6ZXJvKG9iamVjdCkiOiBOb25lLAot ICAgICAiemVybyhzdHIpIjogIiIsCi0gICAgICJ6ZXJvKHR5cGluZy5BbnkpIjogTm9uZSwKLSsg ICAgInplcm8oQW55KSI6IE5vbmUsCi0gICAgIH0pCi0gCi0gdHlwZV9tYXAudXBkYXRlKHsKLWRp ZmYgLXVyIGEvc291cmNlcy9zaGlib2tlbjIvc2hpYm9rZW5tb2R1bGUvZmlsZXMuZGlyL3NoaWJv a2Vuc3VwcG9ydC9zaWduYXR1cmUvcGFyc2VyLnB5IGIvc291cmNlcy9zaGlib2tlbjIvc2hpYm9r ZW5tb2R1bGUvZmlsZXMuZGlyL3NoaWJva2Vuc3VwcG9ydC9zaWduYXR1cmUvcGFyc2VyLnB5Ci0t LS0gYS9zb3VyY2VzL3NoaWJva2VuMi9zaGlib2tlbm1vZHVsZS9maWxlcy5kaXIvc2hpYm9rZW5z dXBwb3J0L3NpZ25hdHVyZS9wYXJzZXIucHkJMjAyMC0xMS0xMSAwNzo1MTozMC4wMDAwMDAwMDAg LTA1MDAKLSsrKyBiL3NvdXJjZXMvc2hpYm9rZW4yL3NoaWJva2VubW9kdWxlL2ZpbGVzLmRpci9z aGlib2tlbnN1cHBvcnQvc2lnbmF0dXJlL3BhcnNlci5weQkyMDIxLTA5LTI2IDA4OjQ4OjI3Ljc0 MzE3MTU4NyAtMDQwMAotQEAgLTQzLDEwICs0MywxMSBAQAotIGltcG9ydCByZQotIGltcG9ydCB3 YXJuaW5ncwotIGltcG9ydCB0eXBlcwotK2ltcG9ydCB0eXBpbmcKLSBpbXBvcnQga2V5d29yZAot IGltcG9ydCBmdW5jdG9vbHMKLSBmcm9tIHNoaWJva2Vuc3VwcG9ydC5zaWduYXR1cmUubWFwcGlu ZyBpbXBvcnQgKHR5cGVfbWFwLCB1cGRhdGVfbWFwcGluZywKLS0gICAgbmFtZXNwYWNlLCB0eXBp bmcsIF9Ob3RDYWxsZWQsIFJlc3VsdFZhcmlhYmxlLCBBcnJheUxpa2VWYXJpYWJsZSkKLSsgICAg bmFtZXNwYWNlLCBfTm90Q2FsbGVkLCBSZXN1bHRWYXJpYWJsZSwgQXJyYXlMaWtlVmFyaWFibGUp Ci0gZnJvbSBzaGlib2tlbnN1cHBvcnQuc2lnbmF0dXJlLmxpYi50b29sIGltcG9ydCAoU2ltcGxl TmFtZXNwYWNlLAotICAgICBidWlsZF9icmFjZV9wYXR0ZXJuKQotIAotQEAgLTIyMiw3ICsyMjMs NyBAQAotIGRlZiB0b19zdHJpbmcodGhpbmcpOgotICAgICBpZiBpc2luc3RhbmNlKHRoaW5nLCBz dHIpOgotICAgICAgICAgcmV0dXJuIHRoaW5nCi0tICAgIGlmIGhhc2F0dHIodGhpbmcsICJfX25h bWVfXyIpOgotKyAgICBpZiBoYXNhdHRyKHRoaW5nLCAiX19uYW1lX18iKSBhbmQgdGhpbmcuX19t b2R1bGVfXyAhPSAidHlwaW5nIjoKLSAgICAgICAgIGRvdCA9ICIuIiBpbiBzdHIodGhpbmcpCi0g ICAgICAgICBuYW1lID0gZ2V0X25hbWUodGhpbmcpCi0gICAgICAgICByZXR1cm4gdGhpbmcuX19t b2R1bGVfXyArICIuIiArIG5hbWUgaWYgZG90IGVsc2UgbmFtZQpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9zaGlib2tlbjIvcGF0Y2hlcy90ZXN0cy1weXRob24tc3ludGF4LnBhdGNoIGIvc3JjcGtncy9z aGlib2tlbjIvcGF0Y2hlcy90ZXN0cy1weXRob24tc3ludGF4LnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAzMjc0M2E2Mjk1Y2UuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dz L3NoaWJva2VuMi9wYXRjaGVzL3Rlc3RzLXB5dGhvbi1zeW50YXgucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSw5MSArMCwwIEBACi1UaGlzIGNoYW5nZXNldCBpcyBhYm91dCBib3RoIHNoaWJva2Vu MiBhbmQgcHl0aG9uMy1weXNpZGUyCi0odGhhdCBhcmUgc2VwYXJhdGVkIHBhY2thZ2VzKQotdXBz dHJlYW06IHllcwotCi1Gcm9tIGM2MTg0ZTAxZTk5M2RjY2E5Nzk4ZjMwNmZiOGU5Y2IzMjJmZGQw ZGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaHJpc3RpYW4gVGlzbWVyIDx0aXNt ZXJAc3RhY2tsZXNzLmNvbT4KLURhdGU6IFRodSwgMyBEZWMgMjAyMCAxMzozODo1OCArMDEwMAot U3ViamVjdDogW1BBVENIXSBmaXggYm90aCBxZmxhZ3NfdGVzdCBhbmQgdGhlIHFmbGFncyBjcHBn ZW5lcmF0b3IgY29kZQotCi1UaGVyZSB3YXMgYSB5ZWFycy1vbGQgcWZsYWdzIHRlc3QgZmFpbGlu ZyBvbiBQeXRob24gMy4KLUl0IHdhcyBibGFja2xpc3RlZCB3aXRoIHRoZSBjb21tZW50Ci0KLSAg ICAiIyAgTmVzdGVkIGV4Y2VwdGlvbiBpbiBQeXRob24gMyIKLQotVGhpcyB3YXMgbm9uc2Vuc2U6 IFRoZSB0ZXN0IHdhcyB3cm9uZyBhbHNvIGZvciBQeXRob24gMi4KLUl0IGp1c3QgaGFwcGVuZWQg dG8gd29yaywgYmVjYXVzZSBQeXRob24gMiBoYWQgc29tZSB3ZWlyZAotZXJyb3JzIGxlYWtpbmcu IFRoZSByZWFsIGJ1ZyB3YXMgaW4gbWlzc2luZyBlcnJvciBoYW5kbGluZwotaW4gY3BwZ2VuZXJh dG9yLmNwcCAuCi0KLVNlZSB0aGUgbWFpbiBkZXNjcmlwdGlvbiBpbiB0aGUgaXNzdWUuCi0KLUNo YW5nZS1JZDogSWEwZjk0NjY2NDBlMGViMzNmMWI4YjI2MTc4ZDMzZjJiZTBiY2IzMmYKLVRhc2st bnVtYmVyOiBQWVNJREUtMTQ0MgotUmV2aWV3ZWQtYnk6IEZyaWVkZW1hbm4gS2xlaW50IDxGcmll ZGVtYW5uLktsZWludEBxdC5pbz4KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDI4OGZhZGI3 OTZlYzRlMTFlOTllMzc1MmQ1MzFhZGE3ZWRmMTVkNzUpCi0tLS0KLSBidWlsZF9oaXN0b3J5L2Js YWNrbGlzdC50eHQgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMgLS0tCi0gc291cmNlcy9w eXNpZGUyL3Rlc3RzL1F0Q29yZS9xZmxhZ3NfdGVzdC5weSAgICAgICAgICB8IDEyICsrKysrKyst LS0tLQotIC4uLi9zaGlib2tlbjIvZ2VuZXJhdG9yL3NoaWJva2VuMi9jcHBnZW5lcmF0b3IuY3Bw ICAgfCAgMiArKwotIDMgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9u cygtKQotCi1kaWZmIC0tZ2l0IGJ1aWxkX2hpc3RvcnkvYmxhY2tsaXN0LnR4dCBidWlsZF9oaXN0 b3J5L2JsYWNrbGlzdC50eHQKLWluZGV4IDliNjNmOTc4NC4uMmEyYTVkNGM0IDEwMDY0NAotLS0t IGEvYnVpbGRfaGlzdG9yeS9ibGFja2xpc3QudHh0Ci0rKysgYi9idWlsZF9oaXN0b3J5L2JsYWNr bGlzdC50eHQKLUBAIC0xOCw5ICsxOCw2IEBACi0gICAgIGRhcndpbiBweTMKLSBbUXRDb3JlOjpx ZmlsZXJlYWRfdGVzdF0KLSAgICAgZGFyd2luCi0tIyAgTmVzdGVkIGV4Y2VwdGlvbiBpbiBQeXRo b24gMwotLVtRdENvcmU6OnFmbGFnc190ZXN0XQotLSAgICBweTMKLSBbUXRDb3JlOjpxb2JqZWN0 X2Nvbm5lY3Rfbm90aWZ5X3Rlc3RdCi0gICAgIGxpbnV4Ci0gICAgIGRhcndpbgotZGlmZiAtLWdp dCBzb3VyY2VzL3B5c2lkZTIvdGVzdHMvUXRDb3JlL3FmbGFnc190ZXN0LnB5IHNvdXJjZXMvcHlz aWRlMi90ZXN0cy9RdENvcmUvcWZsYWdzX3Rlc3QucHkKLWluZGV4IDA4YTdjNTViMS4uZTFlOTg5 YzFlIDEwMDY0NAotLS0tIGEvc291cmNlcy9weXNpZGUyL3Rlc3RzL1F0Q29yZS9xZmxhZ3NfdGVz dC5weQotKysrIGIvc291cmNlcy9weXNpZGUyL3Rlc3RzL1F0Q29yZS9xZmxhZ3NfdGVzdC5weQot QEAgLTMwLDYgKzMwLDcgQEAKLSAKLSAnJydUZXN0IGNhc2VzIGZvciBRRmxhZ3MnJycKLSAKLStp bXBvcnQgb3BlcmF0b3IKLSBpbXBvcnQgb3MKLSBpbXBvcnQgc3lzCi0gaW1wb3J0IHVuaXR0ZXN0 Ci1AQCAtMTE3LDEyICsxMTgsMTMgQEAgY2xhc3MgUUZsYWdzT25RVmFyaWFudCh1bml0dGVzdC5U ZXN0Q2FzZSk6Ci0gY2xhc3MgUUZsYWdzV3JvbmdUeXBlKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAg ICAgZGVmIHRlc3RXcm9uZ1R5cGUoc2VsZik6Ci0gICAgICAgICAnJydXcm9uZyB0eXBlIHBhc3Nl ZCB0byBRRmxhZ3MgYmluYXJ5IG9wZXJhdG9ycycnJwotKyAgICAgICAgZm9yIG9wIGluIG9wZXJh dG9yLm9yXywgb3BlcmF0b3IuYW5kXywgb3BlcmF0b3IueG9yOgotKyAgICAgICAgICAgIGZvciB4 IGluICc0MycsICdqYWJiYScsIFFPYmplY3QsIG9iamVjdDoKLSsgICAgICAgICAgICAgICAgc2Vs Zi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcCwgUXQuTm9JdGVtRmxhZ3MsIHgpCi0rICAgICAg ICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3AsIHgsIFF0Lk5vSXRlbUZs YWdzKQotKyAgICAgICAgIyBtYWtpbmcgc3VyZSB0aGlzIGFjdHVhbGx5IGRvZXMgbm90IGZhaWwg YWxsIHRoZSB0aW1lCi0rICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLm9yXyhRdC5O b0l0ZW1GbGFncywgNDMpLCA0MykKLSAKLS0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVF cnJvciwgUXQuTm9JdGVtRmxhZ3MgfCAnNDMnKQotLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo VHlwZUVycm9yLCBRdC5Ob0l0ZW1GbGFncyAmICc0MycpCi0tICAgICAgICBzZWxmLmFzc2VydFJh aXNlcyhUeXBlRXJyb3IsICdqYWJiYScgJiBRdC5Ob0l0ZW1GbGFncykKLS0gICAgICAgIHNlbGYu YXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgJ2h1dCcgJiBRdC5Ob0l0ZW1GbGFncykKLS0gICAgICAg IHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgUXQuTm9JdGVtRmxhZ3MgJiBRT2JqZWN0KCkp Ci0gCi0gaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICAgdW5pdHRlc3QubWFpbigpCi1k aWZmIC0tZ2l0IHNvdXJjZXMvc2hpYm9rZW4yL2dlbmVyYXRvci9zaGlib2tlbjIvY3BwZ2VuZXJh dG9yLmNwcCBzb3VyY2VzL3NoaWJva2VuMi9nZW5lcmF0b3Ivc2hpYm9rZW4yL2NwcGdlbmVyYXRv ci5jcHAKLWluZGV4IGZmNDRkYjk1NS4uODdkZGQ3M2E1IDEwMDY0NAotLS0tIGEvc291cmNlcy9z aGlib2tlbjIvZ2VuZXJhdG9yL3NoaWJva2VuMi9jcHBnZW5lcmF0b3IuY3BwCi0rKysgYi9zb3Vy Y2VzL3NoaWJva2VuMi9nZW5lcmF0b3Ivc2hpYm9rZW4yL2NwcGdlbmVyYXRvci5jcHAKLUBAIC01 MjMwLDYgKzUyMzAsOCBAQCB2b2lkIENwcEdlbmVyYXRvcjo6d3JpdGVGbGFnc0JpbmFyeU9wZXJh dG9yKFFUZXh0U3RyZWFtICZzLCBjb25zdCBBYnN0cmFjdE1ldGFFbgotICAgICBzIDw8IElOREVO VCA8PCAiY3BwQXJnID0gc3RhdGljX2Nhc3Q8IiA8PCBmbGFnc0VudHJ5LT5vcmlnaW5hbE5hbWUo KQotICAgICAgICAgPDwgIj4oaW50KFB5SW50X0FzTG9uZygiIDw8IFBZVEhPTl9BUkcgPDwgIikp KTtcbiI7Ci0gICAgIHMgPDwgIiNlbmRpZlxuXG4iOwotKyAgICBzIDw8IElOREVOVCA8PCAiaWYg KFB5RXJyX09jY3VycmVkKCkpXG4iIDw8IGluZGVudChJTkRFTlQpCi0rICAgICAgICA8PCBJTkRF TlQgPDwgInJldHVybiBudWxscHRyO1xuIiA8PCBvdXRkZW50KElOREVOVCk7Ci0gICAgIHMgPDwg SU5ERU5UIDw8ICJjcHBSZXN1bHQgPSAiIDw8IENQUF9TRUxGX1ZBUiA8PCAiICIgPDwgY3BwT3BO YW1lIDw8ICIgY3BwQXJnO1xuIjsKLSAgICAgcyA8PCBJTkRFTlQgPDwgInJldHVybiAiOwotICAg ICB3cml0ZVRvUHl0aG9uQ29udmVyc2lvbihzLCBmbGFnc1R5cGUsIG51bGxwdHIsIFFMYXRpbjFT dHJpbmcoImNwcFJlc3VsdCIpKTsKLS0tIAotMi4yOS4yCmRpZmYgLS1naXQgYS9zcmNwa2dzL3No aWJva2VuMi90ZW1wbGF0ZSBiL3NyY3BrZ3Mvc2hpYm9rZW4yL3RlbXBsYXRlCmluZGV4IGI1NjYx MzIyOWMxMy4uZDAzMzViMjJiZjUxIDEwMDY0NAotLS0gYS9zcmNwa2dzL3NoaWJva2VuMi90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL3NoaWJva2VuMi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMg VGVtcGxhdGUgZmlsZSBmb3IgJ3NoaWJva2VuMicKIHBrZ25hbWU9c2hpYm9rZW4yCi12ZXJzaW9u PTUuMTUuMgotcmV2aXNpb249NAordmVyc2lvbj01LjE1LjUKK3JldmlzaW9uPTEKIF9wa2duYW1l PSJweXNpZGUtc2V0dXAtb3BlbnNvdXJjZS1zcmMtJHt2ZXJzaW9ufSIKIHdya3NyYz0iJHtfcGtn bmFtZS8lNS4xNC4yLjEvNS4xNC4yfSIKIGJ1aWxkX3dya3NyYz0ic291cmNlcy9zaGlib2tlbjIi CkBAIC0xNSw3ICsxNSw3IEBAIG1haW50YWluZXI9InlvcGl0byA8cGllcnJlLmJvdXJnaW5AZnJl ZS5mcj4iCiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vd2lr aS5xdC5pby9RdF9mb3JfUHl0aG9uL1NoaWJva2VuIgogZGlzdGZpbGVzPSJodHRwczovL2Rvd25s b2FkLnF0LmlvL29mZmljaWFsX3JlbGVhc2VzL1F0Rm9yUHl0aG9uL3B5c2lkZTIvUHlTaWRlMi0k e3ZlcnNpb259LXNyYy8ke19wa2duYW1lfS50YXIueHoiCi1jaGVja3N1bT1iMzA2NTA0YjBiODAz NzA3OWE4ZWFiNzcyZWU3NzRiOWU4NzdhMmQ4NGJhYjJkYmVmYmU0ZmE2ZjgzOTQxNDE4CitjaGVj a3N1bT0zOTIwYTRmYjM1MzMwMDI2MGM5YmM0NmZmNzBmMWZiOTc1YzVlN2VmYTIyZTlkNTEyMjI1 ODg5MjhjZTE5YjMzCiAKIHB5dGhvbl92ZXJzaW9uPTMKIGV4cG9ydCBDTEFOR19JTlNUQUxMX0RJ Uj0ke1hCUFNfQ1JPU1NfQkFTRX0vdXNyCgpGcm9tIGI4NDk5ZWI2NjUzYmUzOGQ2MzYyMzE2ZjRl YjU1Yzg4ZjE4NGFjOTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHlvcGl0byA8cGll cnJlLmJvdXJnaW5AZnJlZS5mcj4KRGF0ZTogTW9uLCAyMiBBdWcgMjAyMiAxMzo0MjozNSArMDIw MApTdWJqZWN0OiBbUEFUQ0ggMi83XSBweXRob24zLXB5c2lkZTI6IHVwZGF0ZSB0byA1LjE1LjUK Ci0tLQogLi4uL3BhdGNoZXMvdGVzdHMtcHl0aG9uLXN5bnRheC5wYXRjaCAgICAgICAgIHwgMTA2 IC0tLS0tLS0tLS0tLS0tLS0tLQogc3JjcGtncy9weXRob24zLXB5c2lkZTIvdGVtcGxhdGUgICAg ICAgICAgICAgIHwgICA2ICstCiAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMTA5 IGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcHl0aG9uMy1weXNpZGUy L3BhdGNoZXMvdGVzdHMtcHl0aG9uLXN5bnRheC5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv cHl0aG9uMy1weXNpZGUyL3BhdGNoZXMvdGVzdHMtcHl0aG9uLXN5bnRheC5wYXRjaCBiL3NyY3Br Z3MvcHl0aG9uMy1weXNpZGUyL3BhdGNoZXMvdGVzdHMtcHl0aG9uLXN5bnRheC5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2YzYWIxMTcyZjlmLi4wMDAwMDAwMDAwMDAKLS0t IGEvc3JjcGtncy9weXRob24zLXB5c2lkZTIvcGF0Y2hlcy90ZXN0cy1weXRob24tc3ludGF4LnBh dGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLVRoaXMgY2hhbmdlc2V0IGlzIGFi b3V0IGJvdGggc2hpYm9rZW4yIGFuZCBweXRob24zLXB5c2lkZTIKLSh0aGF0IGFyZSBzZXBhcmF0 ZWQgcGFja2FnZXMpCi11cHN0cmVhbTogeWVzCi0KLUZyb20gYzYxODRlMDFlOTkzZGNjYTk3OThm MzA2ZmI4ZTljYjMyMmZkZDBkYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENocmlz dGlhbiBUaXNtZXIgPHRpc21lckBzdGFja2xlc3MuY29tPgotRGF0ZTogVGh1LCAzIERlYyAyMDIw IDEzOjM4OjU4ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGZpeCBib3RoIHFmbGFnc190ZXN0IGFu ZCB0aGUgcWZsYWdzIGNwcGdlbmVyYXRvciBjb2RlCi0KLVRoZXJlIHdhcyBhIHllYXJzLW9sZCBx ZmxhZ3MgdGVzdCBmYWlsaW5nIG9uIFB5dGhvbiAzLgotSXQgd2FzIGJsYWNrbGlzdGVkIHdpdGgg dGhlIGNvbW1lbnQKLQotICAgICIjICBOZXN0ZWQgZXhjZXB0aW9uIGluIFB5dGhvbiAzIgotCi1U aGlzIHdhcyBub25zZW5zZTogVGhlIHRlc3Qgd2FzIHdyb25nIGFsc28gZm9yIFB5dGhvbiAyLgot SXQganVzdCBoYXBwZW5lZCB0byB3b3JrLCBiZWNhdXNlIFB5dGhvbiAyIGhhZCBzb21lIHdlaXJk Ci1lcnJvcnMgbGVha2luZy4gVGhlIHJlYWwgYnVnIHdhcyBpbiBtaXNzaW5nIGVycm9yIGhhbmRs aW5nCi1pbiBjcHBnZW5lcmF0b3IuY3BwIC4KLQotU2VlIHRoZSBtYWluIGRlc2NyaXB0aW9uIGlu IHRoZSBpc3N1ZS4KLQotQ2hhbmdlLUlkOiBJYTBmOTQ2NjY0MGUwZWIzM2YxYjhiMjYxNzhkMzNm MmJlMGJjYjMyZgotVGFzay1udW1iZXI6IFBZU0lERS0xNDQyCi1SZXZpZXdlZC1ieTogRnJpZWRl bWFubiBLbGVpbnQgPEZyaWVkZW1hbm4uS2xlaW50QHF0LmlvPgotKGNoZXJyeSBwaWNrZWQgZnJv bSBjb21taXQgMjg4ZmFkYjc5NmVjNGUxMWU5OWUzNzUyZDUzMWFkYTdlZGYxNWQ3NSkKLS0tLQot IGJ1aWxkX2hpc3RvcnkvYmxhY2tsaXN0LnR4dCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg MyAtLS0KLSBzb3VyY2VzL3B5c2lkZTIvdGVzdHMvUXRDb3JlL3FmbGFnc190ZXN0LnB5ICAgICAg ICAgIHwgMTIgKysrKysrKy0tLS0tCi0gLi4uL3NoaWJva2VuMi9nZW5lcmF0b3Ivc2hpYm9rZW4y L2NwcGdlbmVyYXRvci5jcHAgICB8ICAyICsrCi0gMyBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlv bnMoKyksIDggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYnVpbGRfaGlzdG9yeS9ibGFja2xp c3QudHh0IGJ1aWxkX2hpc3RvcnkvYmxhY2tsaXN0LnR4dAotaW5kZXggOWI2M2Y5Nzg0Li4yYTJh NWQ0YzQgMTAwNjQ0Ci0tLS0gYS9idWlsZF9oaXN0b3J5L2JsYWNrbGlzdC50eHQKLSsrKyBiL2J1 aWxkX2hpc3RvcnkvYmxhY2tsaXN0LnR4dAotQEAgLTE4LDkgKzE4LDYgQEAKLSAgICAgZGFyd2lu IHB5MwotIFtRdENvcmU6OnFmaWxlcmVhZF90ZXN0XQotICAgICBkYXJ3aW4KLS0jICBOZXN0ZWQg ZXhjZXB0aW9uIGluIFB5dGhvbiAzCi0tW1F0Q29yZTo6cWZsYWdzX3Rlc3RdCi0tICAgIHB5Mwot IFtRdENvcmU6OnFvYmplY3RfY29ubmVjdF9ub3RpZnlfdGVzdF0KLSAgICAgbGludXgKLSAgICAg ZGFyd2luCi1kaWZmIC0tZ2l0IHNvdXJjZXMvcHlzaWRlMi90ZXN0cy9RdENvcmUvcWZsYWdzX3Rl c3QucHkgc291cmNlcy9weXNpZGUyL3Rlc3RzL1F0Q29yZS9xZmxhZ3NfdGVzdC5weQotaW5kZXgg MDhhN2M1NWIxLi5lMWU5ODljMWUgMTAwNjQ0Ci0tLS0gYS9zb3VyY2VzL3B5c2lkZTIvdGVzdHMv UXRDb3JlL3FmbGFnc190ZXN0LnB5Ci0rKysgYi9zb3VyY2VzL3B5c2lkZTIvdGVzdHMvUXRDb3Jl L3FmbGFnc190ZXN0LnB5Ci1AQCAtMzAsNiArMzAsNyBAQAotIAotICcnJ1Rlc3QgY2FzZXMgZm9y IFFGbGFncycnJwotIAotK2ltcG9ydCBvcGVyYXRvcgotIGltcG9ydCBvcwotIGltcG9ydCBzeXMK LSBpbXBvcnQgdW5pdHRlc3QKLUBAIC0xMTcsMTIgKzExOCwxMyBAQCBjbGFzcyBRRmxhZ3NPblFW YXJpYW50KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSBjbGFzcyBRRmxhZ3NXcm9uZ1R5cGUodW5pdHRl c3QuVGVzdENhc2UpOgotICAgICBkZWYgdGVzdFdyb25nVHlwZShzZWxmKToKLSAgICAgICAgICcn J1dyb25nIHR5cGUgcGFzc2VkIHRvIFFGbGFncyBiaW5hcnkgb3BlcmF0b3JzJycnCi0rICAgICAg ICBmb3Igb3AgaW4gb3BlcmF0b3Iub3JfLCBvcGVyYXRvci5hbmRfLCBvcGVyYXRvci54b3I6Ci0r ICAgICAgICAgICAgZm9yIHggaW4gJzQzJywgJ2phYmJhJywgUU9iamVjdCwgb2JqZWN0OgotKyAg ICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wLCBRdC5Ob0l0ZW1G bGFncywgeCkKLSsgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBv cCwgeCwgUXQuTm9JdGVtRmxhZ3MpCi0rICAgICAgICAjIG1ha2luZyBzdXJlIHRoaXMgYWN0dWFs bHkgZG9lcyBub3QgZmFpbCBhbGwgdGhlIHRpbWUKLSsgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo b3BlcmF0b3Iub3JfKFF0Lk5vSXRlbUZsYWdzLCA0MyksIDQzKQotIAotLSAgICAgICAgc2VsZi5h c3NlcnRSYWlzZXMoVHlwZUVycm9yLCBRdC5Ob0l0ZW1GbGFncyB8ICc0MycpCi0tICAgICAgICBz ZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIFF0Lk5vSXRlbUZsYWdzICYgJzQzJykKLS0gICAg ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgJ2phYmJhJyAmIFF0Lk5vSXRlbUZsYWdz KQotLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCAnaHV0JyAmIFF0Lk5vSXRl bUZsYWdzKQotLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBRdC5Ob0l0ZW1G bGFncyAmIFFPYmplY3QoKSkKLSAKLSBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgICB1 bml0dGVzdC5tYWluKCkKLWRpZmYgLS1naXQgc291cmNlcy9zaGlib2tlbjIvZ2VuZXJhdG9yL3No aWJva2VuMi9jcHBnZW5lcmF0b3IuY3BwIHNvdXJjZXMvc2hpYm9rZW4yL2dlbmVyYXRvci9zaGli b2tlbjIvY3BwZ2VuZXJhdG9yLmNwcAotaW5kZXggZmY0NGRiOTU1Li44N2RkZDczYTUgMTAwNjQ0 Ci0tLS0gYS9zb3VyY2VzL3NoaWJva2VuMi9nZW5lcmF0b3Ivc2hpYm9rZW4yL2NwcGdlbmVyYXRv ci5jcHAKLSsrKyBiL3NvdXJjZXMvc2hpYm9rZW4yL2dlbmVyYXRvci9zaGlib2tlbjIvY3BwZ2Vu ZXJhdG9yLmNwcAotQEAgLTUyMzAsNiArNTIzMCw4IEBAIHZvaWQgQ3BwR2VuZXJhdG9yOjp3cml0 ZUZsYWdzQmluYXJ5T3BlcmF0b3IoUVRleHRTdHJlYW0gJnMsIGNvbnN0IEFic3RyYWN0TWV0YUVu Ci0gICAgIHMgPDwgSU5ERU5UIDw8ICJjcHBBcmcgPSBzdGF0aWNfY2FzdDwiIDw8IGZsYWdzRW50 cnktPm9yaWdpbmFsTmFtZSgpCi0gICAgICAgICA8PCAiPihpbnQoUHlJbnRfQXNMb25nKCIgPDwg UFlUSE9OX0FSRyA8PCAiKSkpO1xuIjsKLSAgICAgcyA8PCAiI2VuZGlmXG5cbiI7Ci0rICAgIHMg PDwgSU5ERU5UIDw8ICJpZiAoUHlFcnJfT2NjdXJyZWQoKSlcbiIgPDwgaW5kZW50KElOREVOVCkK LSsgICAgICAgIDw8IElOREVOVCA8PCAicmV0dXJuIG51bGxwdHI7XG4iIDw8IG91dGRlbnQoSU5E RU5UKTsKLSAgICAgcyA8PCBJTkRFTlQgPDwgImNwcFJlc3VsdCA9ICIgPDwgQ1BQX1NFTEZfVkFS IDw8ICIgIiA8PCBjcHBPcE5hbWUgPDwgIiBjcHBBcmc7XG4iOwotICAgICBzIDw8IElOREVOVCA8 PCAicmV0dXJuICI7Ci0gICAgIHdyaXRlVG9QeXRob25Db252ZXJzaW9uKHMsIGZsYWdzVHlwZSwg bnVsbHB0ciwgUUxhdGluMVN0cmluZygiY3BwUmVzdWx0IikpOwotLS0gCi0yLjI5LjIKLQotRml4 IHB5dGhvbiB3YXJuaW5nIGFib3V0ICdpcyBub3QnIHVzYWdlLgotVGhpcyBkaWZmIGlzIERJU1RJ TkNUIGZyb20gdGhlIHByZXZpb3VzIHBhdGNoCi0KLS0tLSBhL3NvdXJjZXMvcHlzaWRlMi90ZXN0 cy9RdFdpZGdldHMvcXdpZGdldF90ZXN0LnB5CTIwMjAtMTEtMTEgMTM6NTE6MzAuMDAwMDAwMDAw ICswMTAwCi0rKysgYi9zb3VyY2VzL3B5c2lkZTIvdGVzdHMvUXRXaWRnZXRzL3F3aWRnZXRfdGVz dC5weQkyMDIwLTExLTI0IDE0OjI4OjA2LjEwMzA5MzY0OSArMDEwMAotQEAgLTczLDcgKzczLDcg QEAKLSAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3Qgd2lkZ2V0LmlzVmlzaWJsZSgpKQotICAg ICAgICAgd2lkZ2V0LnNldFZpc2libGUoVHJ1ZSkKLSAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh3 aWRnZXQuaXNWaXNpYmxlKCkpCi0tICAgICAgICBzZWxmLmFzc2VydFRydWUod2lkZ2V0Lndpbklk KCkgaXMgbm90IDApCi0rICAgICAgICBzZWxmLmFzc2VydFRydWUod2lkZ2V0LndpbklkKCkgIT0g MCkKLSAgICAgICAgICMgc2tpcCB0aGlzIHRlc3Qgb24gbWFjT1Mgc2luY2Ugbm8gbmF0aXZlIGV2 ZW50cyBhcmUgcmVjZWl2ZWQKLSAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoK LSAgICAgICAgICAgICByZXR1cm4KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcHl0aG9uMy1weXNpZGUy L3RlbXBsYXRlIGIvc3JjcGtncy9weXRob24zLXB5c2lkZTIvdGVtcGxhdGUKaW5kZXggZWRhZDg1 YTUxMTJmLi45NzFiNzdmZTFlZjggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcHl0aG9uMy1weXNpZGUy L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcHl0aG9uMy1weXNpZGUyL3RlbXBsYXRlCkBAIC0xLDcg KzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncHl0aG9uMy1weXNpZGUyJwogcGtnbmFtZT1w eXRob24zLXB5c2lkZTIKLXZlcnNpb249NS4xNS4yCi1yZXZpc2lvbj0yCit2ZXJzaW9uPTUuMTUu NQorcmV2aXNpb249MQogX3BrZ25hbWU9InB5c2lkZS1zZXR1cC1vcGVuc291cmNlLXNyYy0ke3Zl cnNpb259Igogd3Jrc3JjPSIke19wa2duYW1lLyU1LjE0LjIuMS81LjE0LjJ9IgogYnVpbGRfd3Jr c3JjPSJzb3VyY2VzL3B5c2lkZTIiCkBAIC0yNCw3ICsyNCw3IEBAIG1haW50YWluZXI9InlvcGl0 byA8cGllcnJlLmJvdXJnaW5AZnJlZS5mcj4iCiBsaWNlbnNlPSJMR1BMLTMuMC1vci1sYXRlciIK IGhvbWVwYWdlPSJodHRwczovL3dpa2kucXQuaW8vUXRfZm9yX1B5dGhvbiIKIGRpc3RmaWxlcz0i aHR0cHM6Ly9kb3dubG9hZC5xdC5pby9vZmZpY2lhbF9yZWxlYXNlcy9RdEZvclB5dGhvbi9weXNp ZGUyL1B5U2lkZTItJHt2ZXJzaW9ufS1zcmMvJHtfcGtnbmFtZX0udGFyLnh6IgotY2hlY2tzdW09 YjMwNjUwNGIwYjgwMzcwNzlhOGVhYjc3MmVlNzc0YjllODc3YTJkODRiYWIyZGJlZmJlNGZhNmY4 Mzk0MTQxOAorY2hlY2tzdW09MzkyMGE0ZmIzNTMzMDAyNjBjOWJjNDZmZjcwZjFmYjk3NWM1ZTdl ZmEyMmU5ZDUxMjIyNTg4OTI4Y2UxOWIzMwogCiBidWlsZF9vcHRpb25zPSJ3ZWJlbmdpbmUiCiBk ZXNjX29wdGlvbl93ZWJlbmdpbmU9IkJ1aWxkIFF0NSBXZWJFbmdpbmUgYmluZGluZ3MiCgpGcm9t IGM2YTYyZDM5NjQ3OTgyNWViMTg1YzM4NDRjZjc0NzVkNDIwNzQyNzggTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHlvcGl0byA8cGllcnJlLmJvdXJnaW5AZnJlZS5mcj4KRGF0ZTogTW9u LCAyMiBBdWcgMjAyMiAxMzo0MjozNiArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMy83XSBweXNpZGUy LXRvb2xzOiB1cGRhdGUgdG8gNS4xNS41CgotLS0KIHNyY3BrZ3MvcHlzaWRlMi10b29scy90ZW1w bGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3B5c2lkZTItdG9vbHMvdGVtcGxhdGUgYi9zcmNw a2dzL3B5c2lkZTItdG9vbHMvdGVtcGxhdGUKaW5kZXggMzVkMzUzYWJhOTVkLi4wYWEyZDhlYTll ODMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcHlzaWRlMi10b29scy90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL3B5c2lkZTItdG9vbHMvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdweXNpZGUyLXRvb2xzJwogcGtnbmFtZT1weXNpZGUyLXRvb2xzCi12ZXJzaW9uPTUu MTUuMgordmVyc2lvbj01LjE1LjUKIHJldmlzaW9uPTEKIF9wa2duYW1lPSJweXNpZGUtc2V0dXAt b3BlbnNvdXJjZS1zcmMtJHt2ZXJzaW9ufSIKIHdya3NyYz0iJHtfcGtnbmFtZS8lNS4xNC4yLjEv NS4xNC4yfSIKQEAgLTE1LDcgKzE1LDcgQEAgbWFpbnRhaW5lcj0ieW9waXRvIDxwaWVycmUuYm91 cmdpbkBmcmVlLmZyPiIKIGxpY2Vuc2U9IkxHUEwtMy4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0 dHBzOi8vd2lraS5xdC5pby9RdF9mb3JfUHl0aG9uL1NoaWJva2VuIgogZGlzdGZpbGVzPSJodHRw czovL2Rvd25sb2FkLnF0LmlvL29mZmljaWFsX3JlbGVhc2VzL1F0Rm9yUHl0aG9uL3B5c2lkZTIv UHlTaWRlMi0ke3ZlcnNpb259LXNyYy8ke19wa2duYW1lfS50YXIueHoiCi1jaGVja3N1bT1iMzA2 NTA0YjBiODAzNzA3OWE4ZWFiNzcyZWU3NzRiOWU4NzdhMmQ4NGJhYjJkYmVmYmU0ZmE2ZjgzOTQx NDE4CitjaGVja3N1bT0zOTIwYTRmYjM1MzMwMDI2MGM5YmM0NmZmNzBmMWZiOTc1YzVlN2VmYTIy ZTlkNTEyMjI1ODg5MjhjZTE5YjMzCiBweXRob25fdmVyc2lvbj0zCiAKIGlmIFsgJHtDUk9TU19C VUlMRH0gXTsgdGhlbgoKRnJvbSAzM2Q1ZWZkY2FiZjg2ZTBlMDI4YTY5Y2UzYjJjNmRjOGU1YzIx ZGZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB5b3BpdG8gPHBpZXJyZS5ib3VyZ2lu QGZyZWUuZnI+CkRhdGU6IE1vbiwgMjIgQXVnIDIwMjIgMTM6NDI6MzcgKzAyMDAKU3ViamVjdDog W1BBVENIIDQvN10gcHl0aG9uMy1RdFB5OiByZWJ1aWxkIHdpdGggcHl0aG9uMy1weXNpZGUyIDUu MTUuNQoKLS0tCiBzcmNwa2dzL3B5dGhvbjMtUXRQeS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvcHl0aG9uMy1RdFB5L3RlbXBsYXRlIGIvc3JjcGtncy9weXRob24zLVF0UHkvdGVtcGxhdGUK aW5kZXggYjlkZGVmMWFmMTkyLi45MmMwYjUwOWRlYzYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcHl0 aG9uMy1RdFB5L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcHl0aG9uMy1RdFB5L3RlbXBsYXRlCkBA IC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncHl0aG9uMy1RdFB5JwogcGtnbmFt ZT1weXRob24zLVF0UHkKIHZlcnNpb249MS45LjAKLXJldmlzaW9uPTMKK3JldmlzaW9uPTQKIHdy a3NyYz1RdFB5LSR7dmVyc2lvbn0KIGJ1aWxkX3N0eWxlPXB5dGhvbjMtbW9kdWxlCiBob3N0bWFr ZWRlcGVuZHM9InB5dGhvbjMtc2V0dXB0b29scyIKCkZyb20gZGRmMTQ3NjVkZTgyODk4OGFlMzAw NmRmZTVkMWE1NmZkNGQ4OTA3NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogeW9waXRv IDxwaWVycmUuYm91cmdpbkBmcmVlLmZyPgpEYXRlOiBNb24sIDIyIEF1ZyAyMDIyIDEzOjQyOjM4 ICswMjAwClN1YmplY3Q6IFtQQVRDSCA1LzddIGxpYnNwbmF2OiB1cGRhdGUgdG8gMS4wLCBmaXgg bGljZW5zaW5nCgotLS0KIC4uLi9wYXRjaGVzL09PLk1ha2VmaWxlLmZpeC1saWJsaW5rcy5wYXRj aCAgICAgICB8IDE2IC0tLS0tLS0tLS0tLS0tLS0KIHNyY3BrZ3MvbGlic3BuYXYvdGVtcGxhdGUg ICAgICAgICAgICAgICAgICAgICAgICB8IDEzICsrKysrKysrKystLS0KIDIgZmlsZXMgY2hhbmdl ZCwgMTAgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQg c3JjcGtncy9saWJzcG5hdi9wYXRjaGVzL09PLk1ha2VmaWxlLmZpeC1saWJsaW5rcy5wYXRjaAoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGlic3BuYXYvcGF0Y2hlcy9PTy5NYWtlZmlsZS5maXgtbGli bGlua3MucGF0Y2ggYi9zcmNwa2dzL2xpYnNwbmF2L3BhdGNoZXMvT08uTWFrZWZpbGUuZml4LWxp YmxpbmtzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTBhYWU1MWZlMDIu LjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2xpYnNwbmF2L3BhdGNoZXMvT08uTWFrZWZpbGUu Zml4LWxpYmxpbmtzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotRml4IGxp bmsgZ2VuZXJhdGlvbiBvZiAuc28gZmlsZXMKLVNvdXJjZTogaHR0cHM6Ly9naXQuYXJjaGxpbnV4 Lm9yZy9zdm50b2dpdC9wYWNrYWdlcy5naXQvcGxhaW4vdHJ1bmsvTWFrZWZpbGUucGF0Y2g/aD1w YWNrYWdlcy9saWJzcG5hdgotCi0tLS0gYS9NYWtlZmlsZS5pbn4JMjAxNS0wMS0xMCAwOTowODoz NS4wNDM0MTc5NTUgKzAwMDAKLSsrKyBiL01ha2VmaWxlLmluCTIwMTUtMDEtMTAgMDk6MDk6MDAu ODMzMzE1MjY5ICswMDAwCi1AQCAtNTQsOCArNTQsOCBAQAotIAljcCAkKGxpYl9zbykgJChERVNU RElSKSQoUFJFRklYKS8kKGxpYmRpcikvJChsaWJfc28pCi0gCVsgLW4gIiQoc29uYW1lKSIgXSAm JiBcCi0gCQlybSAtZiAkKERFU1RESVIpJChQUkVGSVgpLyQobGliZGlyKS8kKHNvbmFtZSkgJChE RVNURElSKSQoUFJFRklYKS8kKGxpYmRpcikvJChkZXZsaW5rKSAmJiBcCi0tCQlsbiAtcyAkKERF U1RESVIpJChQUkVGSVgpLyQobGliZGlyKS8kKGxpYl9zbykgJChERVNURElSKSQoUFJFRklYKS8k KGxpYmRpcikvJChzb25hbWUpICYmIFwKLS0JCWxuIC1zICQoREVTVERJUikkKFBSRUZJWCkvJChs aWJkaXIpLyQoc29uYW1lKSAkKERFU1RESVIpJChQUkVGSVgpLyQobGliZGlyKS8kKGRldmxpbmsp IHx8IFwKLSsJCWxuIC1zICQobGliX3NvKSAkKERFU1RESVIpJChQUkVGSVgpLyQobGliZGlyKS8k KHNvbmFtZSkgJiYgXAotKwkJbG4gLXMgJChzb25hbWUpICQoREVTVERJUikkKFBSRUZJWCkvJChs aWJkaXIpLyQoZGV2bGluaykgfHwgXAotIAkJdHJ1ZQotIAlmb3IgaCBpbiAkKGhkcik7IGRvIGNw IC1wICQoc3JjZGlyKS8kJGggJChERVNURElSKSQoUFJFRklYKS9pbmNsdWRlLzsgZG9uZQotIApk aWZmIC0tZ2l0IGEvc3JjcGtncy9saWJzcG5hdi90ZW1wbGF0ZSBiL3NyY3BrZ3MvbGlic3BuYXYv dGVtcGxhdGUKaW5kZXggZGYzNTA3MmIyNDA0Li4yZTFiY2NkZjI4NWIgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvbGlic3BuYXYvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9saWJzcG5hdi90ZW1wbGF0ZQpA QCAtMSwyMSArMSwyNCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbGlic3BuYXYnCiBwa2duYW1l PWxpYnNwbmF2Ci12ZXJzaW9uPTAuMi4zCit2ZXJzaW9uPTEuMAogcmV2aXNpb249MQogYnVpbGRf c3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0tZGlzYWJsZS1vcHQiCiBtYWtl ZGVwZW5kcz0ibGliWDExLWRldmVsIgogc2hvcnRfZGVzYz0iT3BlbiBzb3VyY2UgYWx0ZXJuYXRp dmUgdG8gM0RDb25uZXh0aW9uIGRyaXZlcnMiCiBtYWludGFpbmVyPSJ5b3BpdG8gPHBpZXJyZS5i b3VyZ2luQGZyZWUuZnI+IgotbGljZW5zZT0iR1BMLTMiCitsaWNlbnNlPSJCU0QtMy1DbGF1c2Ui CiBob21lcGFnZT0iaHR0cDovL3NwYWNlbmF2LnNvdXJjZWZvcmdlLm5ldC8iCiBkaXN0ZmlsZXM9 IiR7U09VUkNFRk9SR0VfU0lURX0vc3BhY2VuYXYvJHtwa2duYW1lfS0ke3ZlcnNpb259LnRhci5n eiIKLWNoZWNrc3VtPTdhZTRkN2JiN2Y2YTVkZGEyOGI0ODc4OTFlMDFhY2NjODU2MzExNDQwZjU4 MjI5OTc2MGRhY2U2ZWU1ZjFmOTMKK2NoZWNrc3VtPTg4NDliN2Y3ODI2ZDc1MGY2OTU2Y2Y4ZjRm NTM5MzdmMjM1OWFiNmRhOTdkNmM4MzRjNzFkNWY3NzEyMTJlN2MKIAogZG9fYnVpbGQoKSB7CiAJ bWFrZSBDQz0iJHtDQ30iIEFSPSIke0FSfSIKIH0KIAorcG9zdF9pbnN0YWxsKCkgeworCXZsaWNl bnNlIExJQ0VOU0UKK30KIGxpYnNwbmF2LWRldmVsX3BhY2thZ2UoKSB7CiAJc2hvcnRfZGVzYys9 IiAtIGRldmVsb3BtZW50IGZpbGVzIgogCWRlcGVuZHM9IiR7bWFrZWRlcGVuZHN9ICR7c291cmNl cGtnfT49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKQEAgLTIzLDUgKzI2LDkgQEAgbGlic3BuYXYt ZGV2ZWxfcGFja2FnZSgpIHsKIAkJdm1vdmUgdXNyL2luY2x1ZGUKIAkJdm1vdmUgInVzci9saWIv Ki5hIgogCQl2bW92ZSAidXNyL2xpYi8qLnNvIgorcG9zdF9pbnN0YWxsKCkgeworCXZsaWNlbnNl IExJQ0VOU0UKK30KKwkJdm1vdmUgdXNyL3NoYXJlL3BrZ2NvbmZpZwogCX0KIH0KCkZyb20gYzFk MjE2NWQ1Y2Q2MWQ4ZTVmZDQ4ZGUyMWYxYjU0YWNhNjFhMGQwNiBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogeW9waXRvIDxwaWVycmUuYm91cmdpbkBmcmVlLmZyPgpEYXRlOiBUaHUsIDI1 IEF1ZyAyMDIyIDEzOjU2OjM3ICswMjAwClN1YmplY3Q6IFtQQVRDSCA2LzddIHB5dGhvbjMtcGl2 eTogdXBkYXRlIHRvIDAuNi44CgotLS0KIHNyY3BrZ3MvcHl0aG9uMy1waXZ5L3RlbXBsYXRlIHwg NCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcHl0aG9uMy1waXZ5L3RlbXBsYXRlIGIvc3JjcGtncy9weXRo b24zLXBpdnkvdGVtcGxhdGUKaW5kZXggYTQ0MmI2YTk0Yzg3Li5iMDk4NjVhMDNlYzEgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvcHl0aG9uMy1waXZ5L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcHl0aG9u My1waXZ5L3RlbXBsYXRlCkBAIC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncHl0 aG9uMy1waXZ5JwogcGtnbmFtZT1weXRob24zLXBpdnkKLXZlcnNpb249MC42LjcKK3ZlcnNpb249 MC42LjgKIHJldmlzaW9uPTEKIHdya3NyYz0icGl2eS0ke3ZlcnNpb259IgogYnVpbGRfc3R5bGU9 Y21ha2UKQEAgLTEyLDcgKzEyLDcgQEAgbWFpbnRhaW5lcj0ieW9waXRvIDxwaWVycmUuYm91cmdp bkBmcmVlLmZyPiIKIGxpY2Vuc2U9IklTQyIKIGhvbWVwYWdlPSJodHRwczovL2dpdGh1Yi5jb20v Y29pbjNkL3BpdnkiCiBkaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9L2FyY2hpdmUvJHt2ZXJzaW9ufS50 YXIuZ3oiCi1jaGVja3N1bT0zN2UzM2Q4NTExN2FhYzI3NjQwZTAxMWRmNzRkZGNkNzdmMjcwNDI4 MzAwZGY5MTZiNDZlZTVjNTA2NDVkNTgyCitjaGVja3N1bT1jNDQzZGQ3ZGQ3MjRiMGJmYTA2NDI3 NDc4YjlkMjRkMzFlMGMzYjUxMzhhYzU3NDFhMjkxN2E0NDNiMjhmMzQ2CiAKICMgc3RpbGwgcmVs ZXZhbnQgd2l0aCBwaXZ5IDAuNi42ID8KIGNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgoK RnJvbSBjYjNiYzJjOTQzZjAyMWM0OWRhMTJkNTVjODc1ODQxMDEyOTA3NWI2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB5b3BpdG8gPHBpZXJyZS5ib3VyZ2luQGZyZWUuZnI+CkRhdGU6 IE1vbiwgMjIgQXVnIDIwMjIgMTM6NDI6MzkgKzAyMDAKU3ViamVjdDogW1BBVENIIDcvN10gZnJl ZWNhZDogdXBkYXRlIHRvIDAuMjAuMQoKLS0tCiBzcmNwa2dzL2ZyZWVjYWQvcGF0Y2hlcy8wMDIt ZXhlY2luZm8ucGF0Y2ggICAgfCAgMzAgLQogLi4uL3BhdGNoZXMvMDEwLXNhbG9tZXNtZXNoLWV4 ZWNpbmZvLnBhdGNoICAgIHwgIDMwIC0KIHNyY3BrZ3MvZnJlZWNhZC9wYXRjaGVzLzE1MC12dGs5 LnBhdGNoICAgICAgICB8IDc5NiAtLS0tLS0tLS0tLS0tLS0tLS0KIHNyY3BrZ3MvZnJlZWNhZC9w YXRjaGVzLzE1Mi1jbWFrZS12dGs5LnBhdGNoICB8ICA1MyAtLQogLi4uL3BhdGNoZXMvMTUzLWxp bWl0cy5oLWZvci1tdXNsLnBhdGNoICAgICAgIHwgIDEzICsKIC4uLi8xNTQtcmV2ZXJ0LWd1aS10 bXAtcmVkaXJlY3Qtc3RkZXJyLnBhdGNoICB8ICA3MyArKwogc3JjcGtncy9mcmVlY2FkL3RlbXBs YXRlICAgICAgICAgICAgICAgICAgICAgIHwgICA5ICstCiA3IGZpbGVzIGNoYW5nZWQsIDkwIGlu c2VydGlvbnMoKyksIDkxNCBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dz L2ZyZWVjYWQvcGF0Y2hlcy8wMDItZXhlY2luZm8ucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL2ZyZWVjYWQvcGF0Y2hlcy8wMTAtc2Fsb21lc21lc2gtZXhlY2luZm8ucGF0Y2gKIGRl bGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZyZWVjYWQvcGF0Y2hlcy8xNTAtdnRrOS5wYXRjaAog ZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZnJlZWNhZC9wYXRjaGVzLzE1Mi1jbWFrZS12dGs5 LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mcmVlY2FkL3BhdGNoZXMvMTUzLWxp bWl0cy5oLWZvci1tdXNsLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mcmVlY2Fk L3BhdGNoZXMvMTU0LXJldmVydC1ndWktdG1wLXJlZGlyZWN0LXN0ZGVyci5wYXRjaAoKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvZnJlZWNhZC9wYXRjaGVzLzAwMi1leGVjaW5mby5wYXRjaCBiL3NyY3Br Z3MvZnJlZWNhZC9wYXRjaGVzLzAwMi1leGVjaW5mby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggYmNkY2E3N2E3MmE0Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9mcmVl Y2FkL3BhdGNoZXMvMDAyLWV4ZWNpbmZvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAs MCBAQAotLS0tIGEvc3JjL0FwcC9BcHBsaWNhdGlvbi5jcHAJMjAyMC0wMS0yMiAyMzoyNzo0Mi43 MDkyNzMwODcgKzAxMDAKLSsrKyBiL3NyYy9BcHAvQXBwbGljYXRpb24uY3BwCTIwMjAtMDEtMjIg MjM6NTA6NTMuOTE1MDc1OTU1ICswMTAwCi1AQCAtMTQ4NSw3ICsxNDg1LDkgQEAKLSAjZW5kaWYN Ci0gDQotICNpZiBkZWZpbmVkKEZDX09TX0xJTlVYKQ0KLSsjaWZkZWYgX19HTElCQ19fDQotICNp bmNsdWRlIDxleGVjaW5mby5oPg0KLSsjZW5kaWYNCi0gI2luY2x1ZGUgPGRsZmNuLmg+DQotICNp bmNsdWRlIDxjeHhhYmkuaD4NCi0gDQotQEAgLTE0OTcsNiArMTQ5OSw3IEBACi0gLy8gVGhpcyBm dW5jdGlvbiBwcm9kdWNlcyBhIHN0YWNrIGJhY2t0cmFjZSB3aXRoIGRlbWFuZ2xlZCBmdW5jdGlv biAmIG1ldGhvZCBuYW1lcy4NCi0gdm9pZCBwcmludEJhY2t0cmFjZShzaXplX3Qgc2tpcD0wKQ0K LSB7DQotKyNpZmRlZiBfX0dMSUJDX18NCi0gICAgIHZvaWQgKmNhbGxzdGFja1sxMjhdOw0KLSAg ICAgc2l6ZV90IG5NYXhGcmFtZXMgPSBzaXplb2YoY2FsbHN0YWNrKSAvIHNpemVvZihjYWxsc3Rh Y2tbMF0pOw0KLSAgICAgc2l6ZV90IG5GcmFtZXMgPSBiYWNrdHJhY2UoY2FsbHN0YWNrLCBuTWF4 RnJhbWVzKTsNCi1AQCAtMTUyNyw2ICsxNTMwLDkgQEAKLSAgICAgfQ0KLSANCi0gICAgIGZyZWUo c3ltYm9scyk7DQotKyNlbHNlDQotKyAgICBzdGQ6OmNlcnIgPDwgInNvcnJ5LCBubyBiYWNrdHJh Y2Ugb24gbXVzbCBsaWJjIjsNCi0rI2VuZGlmDQotIH0NCi0gI2VuZGlmDQotIA0KZGlmZiAtLWdp dCBhL3NyY3BrZ3MvZnJlZWNhZC9wYXRjaGVzLzAxMC1zYWxvbWVzbWVzaC1leGVjaW5mby5wYXRj aCBiL3NyY3BrZ3MvZnJlZWNhZC9wYXRjaGVzLzAxMC1zYWxvbWVzbWVzaC1leGVjaW5mby5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2M2YmRjOWZmNDg1Li4wMDAwMDAwMDAw MDAKLS0tIGEvc3JjcGtncy9mcmVlY2FkL3BhdGNoZXMvMDEwLXNhbG9tZXNtZXNoLWV4ZWNpbmZv LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotLS0tIGEvc3JjLzNyZFBhcnR5 L3NhbG9tZXNtZXNoL3NyYy9Ecml2ZXJTVEwvQmFzaWNzX1V0aWxzLmNwcAotKysrIGIvc3JjLzNy ZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9Ecml2ZXJTVEwvQmFzaWNzX1V0aWxzLmNwcAotQEAgLTI5 LDcgKzI5LDkgQEAKLSAjaWZuZGVmIFdJTjMyCi0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNs dWRlIDxzeXMvc3RhdC5oPgotKyNpZmRlZiBfX0dMSUJDX18KLSAjaW5jbHVkZSA8ZXhlY2luZm8u aD4KLSsjZW5kaWYKLSAjZW5kaWYKLSAKLSAKLUBAIC0xMDksNiArMTExLDcgQEAKLSAjaWZuZGVm IFdJTjMyCi0gICB2b2lkIHByaW50X3RyYWNlYmFjaygpCi0gICB7Ci0rI2lmZGVmIF9fR0xJQkNf XwotICAgICB2b2lkICphcnJheVs1MF07Ci0gICAgIHNpemVfdCBzaXplOwotICAgICBjaGFyICoq c3RyaW5nczsKLUBAIC0xMjMsNiArMTI2LDkgQEAKLSAgICAgICB9Ci0gCi0gICAgIGZyZWUgKHN0 cmluZ3MpOwotKyNlbHNlICAgICAKLSsgICBzdGQ6OmNlcnIgPDwgInNvcnJ5LCBubyBiYWNrdHJh Y2Ugb24gbXVzbCBsaWJjIjsKLSsjZW5kaWYKLSAgIH0KLSAjZWxzZQotICAgI2lmIChfTVNDX1ZF UiA+PSAxNDAwKSAvLyBWaXN1YWwgU3R1ZGlvIDIwMDUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZnJl ZWNhZC9wYXRjaGVzLzE1MC12dGs5LnBhdGNoIGIvc3JjcGtncy9mcmVlY2FkL3BhdGNoZXMvMTUw LXZ0azkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyNjczZTdjOWI5Zi4u MDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvZnJlZWNhZC9wYXRjaGVzLzE1MC12dGs5LnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsNzk2ICswLDAgQEAKLVRha2VuIGZyb20gaHR0cHM6Ly9naXRo dWIuY29tL3d3bWF5ZXIvRnJlZUNBRC9jb21taXQvYmI5YmNiZDUxZGY3YzNjYjc2YzU4MjMwMzhl NGVhMGY3ZTI1YTlmZgotYnV0IHJlbW92ZWQgcGF0Y2ggb24gZmlsZSBzcmMvTW9kL0ZlbS9HdWkv Vmlld1Byb3ZpZGVyRmVtUG9zdE9iamVjdC5jcHAgOiBhbHJlYWR5IGFwcGxpZWQgKDIwMjEtMDEt MjApCi0KLWRpZmYgLS1naXQgc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL2luYy9TTURTX01lc2hF bGVtZW50Lmh4eCBiL3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9pbmMvU01EU19NZXNoRWxlbWVu dC5oeHgKLWluZGV4IDE0YTZkOWE3NjNmLi4wZTliOWU2YzkwNSAxMDA2NDQKLS0tLSBhL3NyYy8z cmRQYXJ0eS9zYWxvbWVzbWVzaC9pbmMvU01EU19NZXNoRWxlbWVudC5oeHgKLSsrKyBiL3NyYy8z cmRQYXJ0eS9zYWxvbWVzbWVzaC9pbmMvU01EU19NZXNoRWxlbWVudC5oeHgKLUBAIC00MCwxMSAr NDAsMTYgQEAKLSAKLSAjaW5jbHVkZSA8dnRrVHlwZS5oPgotICNpbmNsdWRlIDx2dGtDZWxsVHlw ZS5oPgotKyNpbmNsdWRlIDx2dGtDZWxsQXJyYXkuaD4KLSAKLSAvL3R5cGVkZWYgdW5zaWduZWQg c2hvcnQgVVNob3J0VHlwZTsKLSB0eXBlZGVmIHNob3J0IFNob3J0VHlwZTsKLSB0eXBlZGVmIGlu dCAgIExvbmdUeXBlOwotLQotKyNpZmRlZiBWVEtfQ0VMTF9BUlJBWV9WMgotK3R5cGVkZWYgY29u c3QgdnRrSWRUeXBlKiB2dGtJZFR5cGVQdHI7Ci0rI2Vsc2UKLSt0eXBlZGVmIHZ0a0lkVHlwZSog dnRrSWRUeXBlUHRyOwotKyNlbmRpZgotIGNsYXNzIFNNRFNfTWVzaE5vZGU7Ci0gY2xhc3MgU01E U19NZXNoRWRnZTsKLSBjbGFzcyBTTURTX01lc2hGYWNlOwotQEAgLTE5Miw3ICsxOTcsNyBAQCBw cm90ZWN0ZWQ6Ci0gICAvLyEgRWxlbWVudCBpbmRleCBpbiB2ZWN0b3IgU01EU19NZXNoOjpteU5v ZGVzIG9yIFNNRFNfTWVzaDo6bXlDZWxscwotICAgaW50IG15SUQ7Ci0gICAvLyEgaW5kZXggaW4g dnRrVW5zdHJ1Y3R1cmVkR3JpZAotLSAgaW50IG15VnRrSUQ7Ci0rICB2dGtJZFR5cGUgbXlWdGtJ RDsKLSAgIC8vISBTTURTX01lc2ggaWRlbnRpZmljYXRpb24gaW4gU01FU0gKLSAgIFNob3J0VHlw ZSBteU1lc2hJZDsKLSAgIC8vISBTdWJTaGFwZSBhbmQgU3ViTWVzaCBpZGVudGlmaWNhdGlvbiBp biBTTUVTSERTCi1kaWZmIC0tZ2l0IHNyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9pbmMvU01EU19V bnN0cnVjdHVyZWRHcmlkLmh4eCBiL3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9pbmMvU01EU19V bnN0cnVjdHVyZWRHcmlkLmh4eAotaW5kZXggOWU0YTIzZWRkZmIuLjc3NDY1ODE0NTQxIDEwMDY0 NAotLS0tIGEvc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL2luYy9TTURTX1Vuc3RydWN0dXJlZEdy aWQuaHh4Ci0rKysgYi9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvaW5jL1NNRFNfVW5zdHJ1Y3R1 cmVkR3JpZC5oeHgKLUBAIC05NSw3ICs5NSwxMSBAQCBwdWJsaWM6Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8aW50LCBzdGQ6Om1hcDxsb25nLGludD4g PiYgbm9kZVF1YWREb21haW5zKTsKLSAgIHZ0a0NlbGxMaW5rcyogR2V0TGlua3MoKQotICAgewot KyNpZmRlZiBWVEtfQ0VMTF9BUlJBWV9WMgotKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dnRrQ2Vs bExpbmtzKj4oR2V0Q2VsbExpbmtzKCkpOwotKyNlbHNlCi0gICAgIHJldHVybiBMaW5rczsKLSsj ZW5kaWYKLSAgIH0KLSAgIFNNRFNfRG93bndhcmQqIGdldERvd25BcnJheSh1bnNpZ25lZCBjaGFy IHZ0a1R5cGUpCi0gICB7Ci1kaWZmIC0tZ2l0IHNyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMv U01EUy9TTURTX0JhbGxFbGVtZW50LmNwcCBiL3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMv U01EUy9TTURTX0JhbGxFbGVtZW50LmNwcAotaW5kZXggMjk5MDkzYzk0ZjYuLjI2ODBjMjE3MzA1 IDEwMDY0NAotLS0tIGEvc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfQmFs bEVsZW1lbnQuY3BwCi0rKysgYi9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01E U19CYWxsRWxlbWVudC5jcHAKLUBAIC02NywxMCArNjcsMTYgQEAgdm9pZCBTTURTX0JhbGxFbGVt ZW50OjpTZXREaWFtZXRlcihkb3VibGUgZGlhbWV0ZXIpCi0gYm9vbCBTTURTX0JhbGxFbGVtZW50 OjpDaGFuZ2VOb2RlIChjb25zdCBTTURTX01lc2hOb2RlICogbm9kZSkKLSB7Ci0gICB2dGtVbnN0 cnVjdHVyZWRHcmlkKiBncmlkID0gU01EU19NZXNoOjpfbWVzaExpc3RbbXlNZXNoSWRdLT5nZXRH cmlkKCk7Ci0rI2lmZGVmIFZUS19DRUxMX0FSUkFZX1YyCi0rICB2dGtOZXc8dnRrSWRMaXN0PiBj ZWxsUG9pbnRzOwotKyAgZ3JpZC0+R2V0Q2VsbFBvaW50cyhteVZ0a0lELCBjZWxsUG9pbnRzLkdl dFBvaW50ZXIoKSk7Ci0rICBjZWxsUG9pbnRzLT5TZXRJZCgwLCBub2RlLT5nZXRWdGtJZCgpKTsK LSsjZWxzZQotICAgdnRrSWRUeXBlIG5wdHMgPSAwOwotICAgdnRrSWRUeXBlKiBwdHMgPSAwOwot ICAgZ3JpZC0+R2V0Q2VsbFBvaW50cyhteVZ0a0lELCBucHRzLCBwdHMpOwotICAgcHRzWzBdID0g bm9kZS0+Z2V0VnRrSWQoKTsKLSsjZW5kaWYKLSAgIFNNRFNfTWVzaDo6X21lc2hMaXN0W215TWVz aElkXS0+c2V0TXlNb2RpZmllZCgpOwotICAgcmV0dXJuIHRydWU7Ci0gfQotQEAgLTgzLDcgKzg5 LDggQEAgdm9pZCBTTURTX0JhbGxFbGVtZW50OjpQcmludCAoc3RkOjpvc3RyZWFtICYgT1MpIGNv bnN0Ci0gY29uc3QgU01EU19NZXNoTm9kZSogU01EU19CYWxsRWxlbWVudDo6R2V0Tm9kZSAoY29u c3QgaW50IGluZCkgY29uc3QKLSB7Ci0gICB2dGtVbnN0cnVjdHVyZWRHcmlkKiBncmlkID0gU01E U19NZXNoOjpfbWVzaExpc3RbbXlNZXNoSWRdLT5nZXRHcmlkKCk7Ci0tICB2dGtJZFR5cGUgbnB0 cywgKnB0czsKLSsgIHZ0a0lkVHlwZSBucHRzOwotKyAgdnRrSWRUeXBlUHRyIHB0czsKLSAgIGdy aWQtPkdldENlbGxQb2ludHMoIG15VnRrSUQsIG5wdHMsIHB0cyApOwotICAgcmV0dXJuIFNNRFNf TWVzaDo6X21lc2hMaXN0W215TWVzaElkXS0+RmluZE5vZGVWdGsoIHB0c1sgMCBdKTsKLSB9Ci1k aWZmIC0tZ2l0IHNyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX0Rvd253YXJk LmNwcCBiL3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX0Rvd253YXJkLmNw cAotaW5kZXggZDYwNDljMGJkMTkuLmE0MWY1YzE4ZTc4IDEwMDY0NAotLS0tIGEvc3JjLzNyZFBh cnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfRG93bndhcmQuY3BwCi0rKysgYi9zcmMvM3Jk UGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19Eb3dud2FyZC5jcHAKLUBAIC0zMDMsNyAr MzAzLDcgQEAgaW50IFNNRFNfRG93bjFEOjpnZXROb2RlU2V0KGludCBjZWxsSWQsIGludCogbm9k ZVNldCkKLSB2b2lkIFNNRFNfRG93bjFEOjpzZXROb2RlcyhpbnQgY2VsbElkLCBpbnQgdnRrSWQp Ci0gewotICAgdnRrSWRUeXBlIG5wdHMgPSAwOwotLSAgdnRrSWRUeXBlICpwdHM7IC8vIHdpbGwg cmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIGZhY2UKLSsgIHZ0a0lkVHlwZVB0ciBwdHM7 IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIGZhY2UKLSAgIF9ncmlkLT5H ZXRDZWxsUG9pbnRzKHZ0a0lkLCBucHRzLCBwdHMpOwotICAgLy8gTUVTU0FHRSh2dGtJZCA8PCAi ICIgPDwgbnB0cyA8PCAiICAiIDw8IF9uYkRvd25DZWxscyk7Ci0gICAvL0FTU0VSVChucHRzID09 IF9uYkRvd25DZWxscyk7Ci1AQCAtMzU3LDcgKzM1Nyw3IEBAIGludCBTTURTX0Rvd24xRDo6Y29t cHV0ZVZ0a0NlbGxzKGludCAqcHRzLCBzdGQ6OnZlY3RvcjxpbnQ+JiB2dGtJZHMpCi0gICAgIHsK LSAgICAgICB2dGtJZFR5cGUgcG9pbnQgPSBwdHNbaV07Ci0gICAgICAgaW50IG51bUNlbGxzID0g X2dyaWQtPkdldExpbmtzKCktPkdldE5jZWxscyhwb2ludCk7Ci0tICAgICAgdnRrSWRUeXBlICpj ZWxscyA9IF9ncmlkLT5HZXRMaW5rcygpLT5HZXRDZWxscyhwb2ludCk7Ci0rICAgICAgdnRrSWRU eXBlUHRyIGNlbGxzID0gX2dyaWQtPkdldExpbmtzKCktPkdldENlbGxzKHBvaW50KTsKLSAgICAg ICBmb3IgKGludCBqID0gMDsgaiA8IG51bUNlbGxzOyBqKyspCi0gICAgICAgICB7Ci0gICAgICAg ICAgIGludCB2dGtDZWxsSWQgPSBjZWxsc1tqXTsKLUBAIC01MzIsNyArNTMyLDcgQEAgaW50IFNN RFNfRG93bjJEOjpjb21wdXRlVm9sdW1lSWRzKGludCBjZWxsSWQsIGludCogaWRzKQotICAgLy8g LS0tIGZpbmQgcG9pbnQgaWQncyBvZiB0aGUgZmFjZQotIAotICAgdnRrSWRUeXBlIG5wdHMgPSAw OwotLSAgdnRrSWRUeXBlICpwdHM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2Yg dGhlIGZhY2UKLSsgIHZ0a0lkVHlwZVB0ciBwdHM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50 IGlkJ3Mgb2YgdGhlIGZhY2UKLSAgIF9ncmlkLT5HZXRDZWxsUG9pbnRzKGNlbGxJZCwgbnB0cywg cHRzKTsKLSAgIHZlY3RvcjxpbnQ+IG5vZGVzOwotICAgZm9yIChpbnQgaSA9IDA7IGkgPCBucHRz OyBpKyspCi1AQCAtNTc3LDcgKzU3Nyw3IEBAIGludCBTTURTX0Rvd24yRDo6Y29tcHV0ZVZvbHVt ZUlkc0Zyb21Ob2Rlc0ZhY2UoaW50KiBwdHMsIGludCBucHRzLCBpbnQqIGlkcykKLSAgICAgICB2 dGtJZFR5cGUgcG9pbnQgPSBwdHNbaV07Ci0gICAgICAgaW50IG51bUNlbGxzID0gX2dyaWQtPkdl dExpbmtzKCktPkdldE5jZWxscyhwb2ludCk7Ci0gICAgICAgLy9NRVNTQUdFKCJjZWxscyBwb3Vy ICIgPDwgaSA8PCAiICIgPDwgbnVtQ2VsbHMpOwotLSAgICAgIHZ0a0lkVHlwZSAqY2VsbHMgPSBf Z3JpZC0+R2V0TGlua3MoKS0+R2V0Q2VsbHMocG9pbnQpOwotKyAgICAgIHZ0a0lkVHlwZVB0ciBj ZWxscyA9IF9ncmlkLT5HZXRMaW5rcygpLT5HZXRDZWxscyhwb2ludCk7Ci0gICAgICAgZm9yIChp bnQgaiA9IDA7IGogPCBudW1DZWxsczsgaisrKQotICAgICAgICAgewotICAgICAgICAgICBpbnQg dnRrQ2VsbElkID0gY2VsbHNbal07Ci1AQCAtNjI3LDcgKzYyNyw3IEBAIGludCBTTURTX0Rvd24y RDo6Y29tcHV0ZVZvbHVtZUlkc0Zyb21Ob2Rlc0ZhY2UoaW50KiBwdHMsIGludCBucHRzLCBpbnQq IGlkcykKLSB2b2lkIFNNRFNfRG93bjJEOjpzZXRUZW1wTm9kZXMoaW50IGNlbGxJZCwgaW50IHZ0 a0lkKQotIHsKLSAgIHZ0a0lkVHlwZSBucHRzID0gMDsKLS0gIHZ0a0lkVHlwZSAqcHRzOyAvLyB3 aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9mIHRoZSBmYWNlCi0rICB2dGtJZFR5cGVQdHIg cHRzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9mIHRoZSBmYWNlCi0gICBfZ3Jp ZC0+R2V0Q2VsbFBvaW50cyh2dGtJZCwgbnB0cywgcHRzKTsKLSAgIC8vIE1FU1NBR0UodnRrSWQg PDwgIiAiIDw8IG5wdHMgPDwgIiAgIiA8PCBfbmJOb2Rlcyk7Ci0gICAvL0FTU0VSVChucHRzID09 IF9uYk5vZGVzKTsKLUBAIC03OTUsNyArNzk1LDcgQEAgdm9pZCBTTURTX0Rvd24zRDo6Z2V0Tm9k ZUlkcyhpbnQgY2VsbElkLCBzdGQ6OnNldDxpbnQ+JiBub2RlU2V0KQotIHsKLSAgIGludCB2dGtJ ZCA9IHRoaXMtPl92dGtDZWxsSWRzW2NlbGxJZF07Ci0gICB2dGtJZFR5cGUgbnB0cyA9IDA7Ci0t ICB2dGtJZFR5cGUgKm5vZGVzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9mIHRo ZSB2b2x1bWUKLSsgIHZ0a0lkVHlwZVB0ciBub2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9p bnQgaWQncyBvZiB0aGUgdm9sdW1lCi0gICBfZ3JpZC0+R2V0Q2VsbFBvaW50cyh2dGtJZCwgbnB0 cywgbm9kZXMpOwotICAgZm9yIChpbnQgaSA9IDA7IGkgPCBucHRzOyBpKyspCi0gICAgIG5vZGVT ZXQuaW5zZXJ0KG5vZGVzW2ldKTsKLUBAIC0xMTI2LDcgKzExMjYsNyBAQCB2b2lkIFNNRFNfRG93 blRldHJhOjpnZXRPcmRlcmVkTm9kZXNPZkZhY2UoaW50IGNlbGxJZCwgc3RkOjp2ZWN0b3I8dnRr SWRUeXBlPiYgbwotICAgLy9NRVNTQUdFKCJjZWxsSWQgPSAiIDw8IGNlbGxJZCk7Ci0gCi0gICB2 dGtJZFR5cGUgbnB0cyA9IDA7Ci0tICB2dGtJZFR5cGUgKm5vZGVzOyAvLyB3aWxsIHJlZmVyIHRv IHRoZSBwb2ludCBpZCdzIG9mIHRoZSB2b2x1bWUKLSsgIHZ0a0lkVHlwZVB0ciBub2RlczsgLy8g d2lsbCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCi0gICBfZ3JpZC0+R2V0 Q2VsbFBvaW50cyh0aGlzLT5fdnRrQ2VsbElkc1tjZWxsSWRdLCBucHRzLCBub2Rlcyk7Ci0gCi0g ICBzZXQ8aW50PiB0b2ZpbmQ7Ci1AQCAtMTE3OCw3ICsxMTc4LDcgQEAgdm9pZCBTTURTX0Rvd25U ZXRyYTo6Y29tcHV0ZUZhY2VzV2l0aE5vZGVzKGludCBjZWxsSWQsIExpc3RFbGVtQnlOb2Rlc1R5 cGUmIGZhY2UKLSAgIC8vIC0tLSBmaW5kIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotIAotICAg dnRrSWRUeXBlIG5wdHMgPSAwOwotLSAgdnRrSWRUeXBlICpub2RlczsgLy8gd2lsbCByZWZlciB0 byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCi0rICB2dGtJZFR5cGVQdHIgbm9kZXM7IC8v IHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotICAgX2dyaWQtPkdl dENlbGxQb2ludHMoY2VsbElkLCBucHRzLCBub2Rlcyk7Ci0gCi0gICAvLyAtLS0gY3JlYXRlIGFs bCB0aGUgb3JkZXJlZCBsaXN0IG9mIG5vZGUgaWQncyBmb3IgZWFjaCBmYWNlCi1AQCAtMTIzNCw3 ICsxMjM0LDcgQEAgdm9pZCBTTURTX0Rvd25RdWFkVGV0cmE6OmdldE9yZGVyZWROb2Rlc09mRmFj ZShpbnQgY2VsbElkLCBzdGQ6OnZlY3Rvcjx2dGtJZFR5cGUKLSAgIC8vTUVTU0FHRSgiY2VsbElk ID0gIiA8PCBjZWxsSWQpOwotIAotICAgdnRrSWRUeXBlIG5wdHMgPSAwOwotLSAgdnRrSWRUeXBl ICpub2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCi0r ICB2dGtJZFR5cGVQdHIgbm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2Yg dGhlIHZvbHVtZQotICAgX2dyaWQtPkdldENlbGxQb2ludHModGhpcy0+X3Z0a0NlbGxJZHNbY2Vs bElkXSwgbnB0cywgbm9kZXMpOwotIAotICAgc2V0PGludD4gdG9maW5kOwotQEAgLTEyODgsNyAr MTI4OCw3IEBAIHZvaWQgU01EU19Eb3duUXVhZFRldHJhOjpjb21wdXRlRmFjZXNXaXRoTm9kZXMo aW50IGNlbGxJZCwgTGlzdEVsZW1CeU5vZGVzVHlwZSYKLSAgIC8vIC0tLSBmaW5kIHBvaW50IGlk J3Mgb2YgdGhlIHZvbHVtZQotIAotICAgdnRrSWRUeXBlIG5wdHMgPSAwOwotLSAgdnRrSWRUeXBl ICpub2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCi0r ICB2dGtJZFR5cGVQdHIgbm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2Yg dGhlIHZvbHVtZQotICAgX2dyaWQtPkdldENlbGxQb2ludHMoY2VsbElkLCBucHRzLCBub2Rlcyk7 Ci0gCi0gICAvLyAtLS0gY3JlYXRlIGFsbCB0aGUgb3JkZXJlZCBsaXN0IG9mIG5vZGUgaWQncyBm b3IgZWFjaCBmYWNlCi1AQCAtMTM1Nyw3ICsxMzU3LDcgQEAgdm9pZCBTTURTX0Rvd25QeXJhbWlk OjpnZXRPcmRlcmVkTm9kZXNPZkZhY2UoaW50IGNlbGxJZCwgc3RkOjp2ZWN0b3I8dnRrSWRUeXBl PiYKLSAgIC8vTUVTU0FHRSgiY2VsbElkID0gIiA8PCBjZWxsSWQpOwotIAotICAgdnRrSWRUeXBl IG5wdHMgPSAwOwotLSAgdnRrSWRUeXBlICpub2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9p bnQgaWQncyBvZiB0aGUgdm9sdW1lCi0rICB2dGtJZFR5cGVQdHIgbm9kZXM7IC8vIHdpbGwgcmVm ZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotICAgX2dyaWQtPkdldENlbGxQb2lu dHModGhpcy0+X3Z0a0NlbGxJZHNbY2VsbElkXSwgbnB0cywgbm9kZXMpOwotIAotICAgc2V0PGlu dD4gdG9maW5kOwotQEAgLTE0MzUsNyArMTQzNSw3IEBAIHZvaWQgU01EU19Eb3duUHlyYW1pZDo6 Y29tcHV0ZUZhY2VzV2l0aE5vZGVzKGludCBjZWxsSWQsIExpc3RFbGVtQnlOb2Rlc1R5cGUmIGZh Ci0gICAvLyAtLS0gZmluZCBwb2ludCBpZCdzIG9mIHRoZSB2b2x1bWUKLSAKLSAgIHZ0a0lkVHlw ZSBucHRzID0gMDsKLS0gIHZ0a0lkVHlwZSAqbm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBv aW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotKyAgdnRrSWRUeXBlUHRyIG5vZGVzOyAvLyB3aWxsIHJl ZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9mIHRoZSB2b2x1bWUKLSAgIF9ncmlkLT5HZXRDZWxsUG9p bnRzKGNlbGxJZCwgbnB0cywgbm9kZXMpOwotIAotICAgLy8gLS0tIGNyZWF0ZSBhbGwgdGhlIG9y ZGVyZWQgbGlzdCBvZiBub2RlIGlkJ3MgZm9yIGVhY2ggZmFjZQotQEAgLTE1MDAsNyArMTUwMCw3 IEBAIHZvaWQgU01EU19Eb3duUXVhZFB5cmFtaWQ6OmdldE9yZGVyZWROb2Rlc09mRmFjZShpbnQg Y2VsbElkLCBzdGQ6OnZlY3Rvcjx2dGtJZFR5Ci0gICAvL01FU1NBR0UoImNlbGxJZCA9ICIgPDwg Y2VsbElkKTsKLSAKLSAgIHZ0a0lkVHlwZSBucHRzID0gMDsKLS0gIHZ0a0lkVHlwZSAqbm9kZXM7 IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotKyAgdnRrSWRU eXBlUHRyIG5vZGVzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9mIHRoZSB2b2x1 bWUKLSAgIF9ncmlkLT5HZXRDZWxsUG9pbnRzKHRoaXMtPl92dGtDZWxsSWRzW2NlbGxJZF0sIG5w dHMsIG5vZGVzKTsKLSAKLSAgIHNldDxpbnQ+IHRvZmluZDsKLUBAIC0xNTgwLDcgKzE1ODAsNyBA QCB2b2lkIFNNRFNfRG93blF1YWRQeXJhbWlkOjpjb21wdXRlRmFjZXNXaXRoTm9kZXMoaW50IGNl bGxJZCwgTGlzdEVsZW1CeU5vZGVzVHlwZQotICAgLy8gLS0tIGZpbmQgcG9pbnQgaWQncyBvZiB0 aGUgdm9sdW1lCi0gCi0gICB2dGtJZFR5cGUgbnB0cyA9IDA7Ci0tICB2dGtJZFR5cGUgKm5vZGVz OyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9mIHRoZSB2b2x1bWUKLSsgIHZ0a0lk VHlwZVB0ciBub2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9s dW1lCi0gICBfZ3JpZC0+R2V0Q2VsbFBvaW50cyhjZWxsSWQsIG5wdHMsIG5vZGVzKTsKLSAKLSAg IC8vIC0tLSBjcmVhdGUgYWxsIHRoZSBvcmRlcmVkIGxpc3Qgb2Ygbm9kZSBpZCdzIGZvciBlYWNo IGZhY2UKLUBAIC0xNjYwLDcgKzE2NjAsNyBAQCB2b2lkIFNNRFNfRG93blBlbnRhOjpnZXRPcmRl cmVkTm9kZXNPZkZhY2UoaW50IGNlbGxJZCwgc3RkOjp2ZWN0b3I8dnRrSWRUeXBlPiYgbwotICAg Ly9NRVNTQUdFKCJjZWxsSWQgPSAiIDw8IGNlbGxJZCk7Ci0gCi0gICB2dGtJZFR5cGUgbnB0cyA9 IDA7Ci0tICB2dGtJZFR5cGUgKm5vZGVzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdz IG9mIHRoZSB2b2x1bWUKLSsgIHZ0a0lkVHlwZVB0ciBub2RlczsgLy8gd2lsbCByZWZlciB0byB0 aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCi0gICBfZ3JpZC0+R2V0Q2VsbFBvaW50cyh0aGlz LT5fdnRrQ2VsbElkc1tjZWxsSWRdLCBucHRzLCBub2Rlcyk7Ci0gCi0gICBzZXQ8aW50PiB0b2Zp bmQ7Ci1AQCAtMTc0NCw3ICsxNzQ0LDcgQEAgdm9pZCBTTURTX0Rvd25QZW50YTo6Y29tcHV0ZUZh Y2VzV2l0aE5vZGVzKGludCBjZWxsSWQsIExpc3RFbGVtQnlOb2Rlc1R5cGUmIGZhY2UKLSAgIC8v IC0tLSBmaW5kIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotIAotICAgdnRrSWRUeXBlIG5wdHMg PSAwOwotLSAgdnRrSWRUeXBlICpub2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9pbnQgaWQn cyBvZiB0aGUgdm9sdW1lCi0rICB2dGtJZFR5cGVQdHIgbm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8g dGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotICAgX2dyaWQtPkdldENlbGxQb2ludHMoY2Vs bElkLCBucHRzLCBub2Rlcyk7Ci0gCi0gICAvLyAtLS0gY3JlYXRlIGFsbCB0aGUgb3JkZXJlZCBs aXN0IG9mIG5vZGUgaWQncyBmb3IgZWFjaCBmYWNlCi1AQCAtMTgxMCw3ICsxODEwLDcgQEAgdm9p ZCBTTURTX0Rvd25RdWFkUGVudGE6OmdldE9yZGVyZWROb2Rlc09mRmFjZShpbnQgY2VsbElkLCBz dGQ6OnZlY3Rvcjx2dGtJZFR5cGUKLSAgIC8vTUVTU0FHRSgiY2VsbElkID0gIiA8PCBjZWxsSWQp OwotIAotICAgdnRrSWRUeXBlIG5wdHMgPSAwOwotLSAgdnRrSWRUeXBlICpub2RlczsgLy8gd2ls bCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCi0rICB2dGtJZFR5cGVQdHIg bm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotICAg X2dyaWQtPkdldENlbGxQb2ludHModGhpcy0+X3Z0a0NlbGxJZHNbY2VsbElkXSwgbnB0cywgbm9k ZXMpOwotIAotICAgc2V0PGludD4gdG9maW5kOwotQEAgLTE4OTYsNyArMTg5Niw3IEBAIHZvaWQg U01EU19Eb3duUXVhZFBlbnRhOjpjb21wdXRlRmFjZXNXaXRoTm9kZXMoaW50IGNlbGxJZCwgTGlz dEVsZW1CeU5vZGVzVHlwZSYKLSAgIC8vIC0tLSBmaW5kIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVt ZQotIAotICAgdnRrSWRUeXBlIG5wdHMgPSAwOwotLSAgdnRrSWRUeXBlICpub2RlczsgLy8gd2ls bCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCi0rICB2dGtJZFR5cGVQdHIg bm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotICAg X2dyaWQtPkdldENlbGxQb2ludHMoY2VsbElkLCBucHRzLCBub2Rlcyk7Ci0gCi0gICAvLyAtLS0g Y3JlYXRlIGFsbCB0aGUgb3JkZXJlZCBsaXN0IG9mIG5vZGUgaWQncyBmb3IgZWFjaCBmYWNlCi1A QCAtMTk4MSw3ICsxOTgxLDcgQEAgdm9pZCBTTURTX0Rvd25IZXhhOjpnZXRPcmRlcmVkTm9kZXNP ZkZhY2UoaW50IGNlbGxJZCwgc3RkOjp2ZWN0b3I8dnRrSWRUeXBlPiYgb3IKLSAgIC8vTUVTU0FH RSgiY2VsbElkID0gIiA8PCBjZWxsSWQpOwotIAotICAgdnRrSWRUeXBlIG5wdHMgPSAwOwotLSAg dnRrSWRUeXBlICpub2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUg dm9sdW1lCi0rICB2dGtJZFR5cGVQdHIgbm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50 IGlkJ3Mgb2YgdGhlIHZvbHVtZQotICAgX2dyaWQtPkdldENlbGxQb2ludHModGhpcy0+X3Z0a0Nl bGxJZHNbY2VsbElkXSwgbnB0cywgbm9kZXMpOwotIAotICAgc2V0PGludD4gdG9maW5kOwotQEAg LTIwMzYsNyArMjAzNiw3IEBAIHZvaWQgU01EU19Eb3duSGV4YTo6Y29tcHV0ZUZhY2VzV2l0aE5v ZGVzKGludCBjZWxsSWQsIExpc3RFbGVtQnlOb2Rlc1R5cGUmIGZhY2VzCi0gICAvLyAtLS0gZmlu ZCBwb2ludCBpZCdzIG9mIHRoZSB2b2x1bWUKLSAKLSAgIHZ0a0lkVHlwZSBucHRzID0gMDsKLS0g IHZ0a0lkVHlwZSAqbm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhl IHZvbHVtZQotKyAgdnRrSWRUeXBlUHRyIG5vZGVzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBwb2lu dCBpZCdzIG9mIHRoZSB2b2x1bWUKLSAgIF9ncmlkLT5HZXRDZWxsUG9pbnRzKGNlbGxJZCwgbnB0 cywgbm9kZXMpOwotIAotICAgLy8gLS0tIGNyZWF0ZSBhbGwgdGhlIG9yZGVyZWQgbGlzdCBvZiBu b2RlIGlkJ3MgZm9yIGVhY2ggZmFjZQotQEAgLTIxMTIsNyArMjExMiw3IEBAIHZvaWQgU01EU19E b3duUXVhZEhleGE6OmdldE9yZGVyZWROb2Rlc09mRmFjZShpbnQgY2VsbElkLCBzdGQ6OnZlY3Rv cjx2dGtJZFR5cGU+Ci0gICAvL01FU1NBR0UoImNlbGxJZCA9ICIgPDwgY2VsbElkKTsKLSAKLSAg IHZ0a0lkVHlwZSBucHRzID0gMDsKLS0gIHZ0a0lkVHlwZSAqbm9kZXM7IC8vIHdpbGwgcmVmZXIg dG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotKyAgdnRrSWRUeXBlUHRyIG5vZGVzOyAv LyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9mIHRoZSB2b2x1bWUKLSAgIF9ncmlkLT5H ZXRDZWxsUG9pbnRzKHRoaXMtPl92dGtDZWxsSWRzW2NlbGxJZF0sIG5wdHMsIG5vZGVzKTsKLSAK LSAgIHNldDxpbnQ+IHRvZmluZDsKLUBAIC0yMTY3LDcgKzIxNjcsNyBAQCB2b2lkIFNNRFNfRG93 blF1YWRIZXhhOjpjb21wdXRlRmFjZXNXaXRoTm9kZXMoaW50IGNlbGxJZCwgTGlzdEVsZW1CeU5v ZGVzVHlwZSYgZgotICAgLy8gLS0tIGZpbmQgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCi0gCi0g ICB2dGtJZFR5cGUgbnB0cyA9IDA7Ci0tICB2dGtJZFR5cGUgKm5vZGVzOyAvLyB3aWxsIHJlZmVy IHRvIHRoZSBwb2ludCBpZCdzIG9mIHRoZSB2b2x1bWUKLSsgIHZ0a0lkVHlwZVB0ciBub2Rlczsg Ly8gd2lsbCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCi0gICBfZ3JpZC0+ R2V0Q2VsbFBvaW50cyhjZWxsSWQsIG5wdHMsIG5vZGVzKTsKLSAKLSAgIC8vIC0tLSBjcmVhdGUg YWxsIHRoZSBvcmRlcmVkIGxpc3Qgb2Ygbm9kZSBpZCdzIGZvciBlYWNoIGZhY2UKLWRpZmYgLS1n aXQgc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfTWVzaC5jcHAgYi9zcmMv M3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19NZXNoLmNwcAotaW5kZXggNjFjOGU3 NTFkOTQuLjFlYWMyOTA3ZDNkIDEwMDY0NAotLS0tIGEvc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNo L3NyYy9TTURTL1NNRFNfTWVzaC5jcHAKLSsrKyBiL3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9z cmMvU01EUy9TTURTX01lc2guY3BwCi1AQCAtNDc2OCw3ICs0NzY4LDExIEBAIHZvaWQgU01EU19N ZXNoOjpkdW1wR3JpZChzdHJpbmcgZmljZHVtcCkKLSAgICAgICAgIGZpY2NvbiA8PCBlbmRsOwot ICAgfQotICAgZmljY29uIDw8ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBjb25u ZWN0aXZpdHkgIiA8PCAgbmJQb2ludHMgPDwgZW5kbDsKLS0gICAgICAgIHZ0a0NlbGxMaW5rcyAq bGlua3MgPSBteUdyaWQtPkdldENlbGxMaW5rcygpOwotKyNpZmRlZiBWVEtfQ0VMTF9BUlJBWV9W MgotKyAgdnRrQ2VsbExpbmtzICpsaW5rcyA9IHN0YXRpY19jYXN0PHZ0a0NlbGxMaW5rcyo+KG15 R3JpZC0+R2V0Q2VsbExpbmtzKCkpOwotKyNlbHNlCi0rICB2dGtDZWxsTGlua3MgKmxpbmtzID0g bXlHcmlkLT5HZXRDZWxsTGlua3MoKTsKLSsjZW5kaWYKLSAgIGZvciAoaW50IGk9MDsgaTxuYlBv aW50czsgaSsrKQotICAgewotICAgICAgICAgaW50IG5jZWxscyA9IGxpbmtzLT5HZXROY2VsbHMo aSk7Ci1kaWZmIC0tZ2l0IHNyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX01l c2gwREVsZW1lbnQuY3BwIGIvc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNf TWVzaDBERWxlbWVudC5jcHAKLWluZGV4IDk1NDM4ZWFiMDY0Li4wZGYzMmUzYjk3YyAxMDA2NDQK LS0tLSBhL3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX01lc2gwREVsZW1l bnQuY3BwCi0rKysgYi9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19NZXNo MERFbGVtZW50LmNwcAotQEAgLTE0Niw2ICsxNDYsMTcgQEAgYm9vbCBTTURTX01lc2gwREVsZW1l bnQ6OkNoYW5nZU5vZGVzKGNvbnN0IFNNRFNfTWVzaE5vZGUqIG5vZGVzW10sIGNvbnN0IGludCBu Yk4KLSAgIGlmICggbmJOb2RlcyA9PSAxICkKLSAgIHsKLSAgICAgdnRrVW5zdHJ1Y3R1cmVkR3Jp ZCogZ3JpZCA9IFNNRFNfTWVzaDo6X21lc2hMaXN0W215TWVzaElkXS0+Z2V0R3JpZCgpOwotKyNp ZmRlZiBWVEtfQ0VMTF9BUlJBWV9WMgotKyAgICB2dGtOZXc8dnRrSWRMaXN0PiBjZWxsUG9pbnRz OwotKyAgICBncmlkLT5HZXRDZWxsUG9pbnRzKG15VnRrSUQsIGNlbGxQb2ludHMuR2V0UG9pbnRl cigpKTsKLSsgICAgaWYgKG5iTm9kZXMgIT0gY2VsbFBvaW50cy0+R2V0TnVtYmVyT2ZJZHMoKSkK LSsgICAgewotKyAgICAgIE1FU1NBR0UoIkNoYW5nZU5vZGVzIHByb2JsZW06IG5vdCB0aGUgc2Ft ZSBudW1iZXIgb2Ygbm9kZXMgIiA8PCBjZWxsUG9pbnRzLT5HZXROdW1iZXJPZklkcygpIDw8ICIg LT4gIiA8PCBuYk5vZGVzKTsKLSsgICAgICByZXR1cm4gZmFsc2U7Ci0rICAgIH0KLSsgICAgbXlO b2RlID0gbm9kZXNbMF07Ci0rICAgIGNlbGxQb2ludHMtPlNldElkKDAsIG15Tm9kZS0+Z2V0VnRr SWQoKSk7Ci0rI2Vsc2UKLSAgICAgdnRrSWRUeXBlIG5wdHMgPSAwOwotICAgICB2dGtJZFR5cGUq IHB0cyA9IDA7Ci0gICAgIGdyaWQtPkdldENlbGxQb2ludHMobXlWdGtJRCwgbnB0cywgcHRzKTsK LUBAIC0xNTYsNiArMTY3LDcgQEAgYm9vbCBTTURTX01lc2gwREVsZW1lbnQ6OkNoYW5nZU5vZGVz KGNvbnN0IFNNRFNfTWVzaE5vZGUqIG5vZGVzW10sIGNvbnN0IGludCBuYk4KLSAgICAgfQotICAg ICBteU5vZGUgPSBub2Rlc1swXTsKLSAgICAgcHRzWzBdID0gbXlOb2RlLT5nZXRWdGtJZCgpOwot KyNlbmRpZgotIAotICAgICBTTURTX01lc2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0tPnNldE15TW9k aWZpZWQoKTsKLSAgICAgcmV0dXJuIHRydWU7Ci1kaWZmIC0tZ2l0IHNyYy8zcmRQYXJ0eS9zYWxv bWVzbWVzaC9zcmMvU01EUy9TTURTX01lc2hOb2RlLmNwcCBiL3NyYy8zcmRQYXJ0eS9zYWxvbWVz bWVzaC9zcmMvU01EUy9TTURTX01lc2hOb2RlLmNwcAotaW5kZXggZjY0N2E1ZjFiOGYuLjViOTAz YzhmYjU1IDEwMDY0NAotLS0tIGEvc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NN RFNfTWVzaE5vZGUuY3BwCi0rKysgYi9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMv U01EU19NZXNoTm9kZS5jcHAKLUBAIC0xOTEsNyArMTkxLDcgQEAgY2xhc3MgU01EU19NZXNoTm9k ZV9NeUludkl0ZXJhdG9yOiBwdWJsaWMgU01EU19FbGVtSXRlcmF0b3IKLSBTTURTX0VsZW1JdGVy YXRvclB0ciBTTURTX01lc2hOb2RlOjoKLSBHZXRJbnZlcnNlRWxlbWVudEl0ZXJhdG9yKFNNRFNB YnNfRWxlbWVudFR5cGUgdHlwZSkgY29uc3QKLSB7Ci0tICB2dGtDZWxsTGlua3M6OkxpbmsgbCA9 IFNNRFNfTWVzaDo6X21lc2hMaXN0W215TWVzaElkXS0+Z2V0R3JpZCgpLT5HZXRDZWxsTGlua3Mo KS0+R2V0TGluayhteVZ0a0lEKTsKLSsgIHZ0a0NlbGxMaW5rczo6TGluayBsID0gc3RhdGljX2Nh c3Q8dnRrQ2VsbExpbmtzKj4oU01EU19NZXNoOjpfbWVzaExpc3RbbXlNZXNoSWRdLT5nZXRHcmlk KCktPkdldENlbGxMaW5rcygpKS0+R2V0TGluayhteVZ0a0lEKTsKLSAgIC8vTUVTU0FHRSgibXlJ RCAiIDw8IG15SUQgPDwgIiBuY2VsbHMgIiA8PCBsLm5jZWxscyk7Ci0gICByZXR1cm4gU01EU19F bGVtSXRlcmF0b3JQdHIobmV3IFNNRFNfTWVzaE5vZGVfTXlJbnZJdGVyYXRvcihTTURTX01lc2g6 Ol9tZXNoTGlzdFtteU1lc2hJZF0sIGwuY2VsbHMsIGwubmNlbGxzLCB0eXBlKSk7Ci0gfQotQEAg LTI1MSw3ICsyNTEsNyBAQCBlbGVtZW50c0l0ZXJhdG9yKFNNRFNBYnNfRWxlbWVudFR5cGUgdHlw ZSkgY29uc3QKLSAgICAgcmV0dXJuIFNNRFNfTWVzaEVsZW1lbnQ6OmVsZW1lbnRzSXRlcmF0b3Io U01EU0Fic19Ob2RlKTsKLSAgIGVsc2UKLSAgIHsKLS0gICAgdnRrQ2VsbExpbmtzOjpMaW5rIGwg PSBTTURTX01lc2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0tPmdldEdyaWQoKS0+R2V0Q2VsbExpbmtz KCktPkdldExpbmsobXlWdGtJRCk7Ci0rICAgIHZ0a0NlbGxMaW5rczo6TGluayBsID0gc3RhdGlj X2Nhc3Q8dnRrQ2VsbExpbmtzKj4oU01EU19NZXNoOjpfbWVzaExpc3RbbXlNZXNoSWRdLT5nZXRH cmlkKCktPkdldENlbGxMaW5rcygpKS0+R2V0TGluayhteVZ0a0lEKTsKLSAgICAgcmV0dXJuIFNN RFNfRWxlbUl0ZXJhdG9yUHRyKG5ldyBTTURTX01lc2hOb2RlX015SXRlcmF0b3IoU01EU19NZXNo OjpfbWVzaExpc3RbbXlNZXNoSWRdLCBsLmNlbGxzLCBsLm5jZWxscywgdHlwZSkpOwotICAgfQot IH0KLUBAIC0zNTAsNyArMzUwLDcgQEAgdm9pZCBTTURTX01lc2hOb2RlOjpBZGRJbnZlcnNlRWxl bWVudChjb25zdCBTTURTX01lc2hFbGVtZW50KiBNRSkKLSAgIGNvbnN0IFNNRFNfTWVzaENlbGwg KmNlbGwgPSBkeW5hbWljX2Nhc3Q8Y29uc3QgU01EU19NZXNoQ2VsbCo+IChNRSk7Ci0gICBhc3Nl cnQoY2VsbCk7Ci0gICBTTURTX1Vuc3RydWN0dXJlZEdyaWQqIGdyaWQgPSBTTURTX01lc2g6Ol9t ZXNoTGlzdFtteU1lc2hJZF0tPmdldEdyaWQoKTsKLS0gIHZ0a0NlbGxMaW5rcyAqTGlua3MgPSBn cmlkLT5HZXRDZWxsTGlua3MoKTsKLSsgIHZ0a0NlbGxMaW5rcyAqTGlua3MgPSBzdGF0aWNfY2Fz dDx2dGtDZWxsTGlua3MqPihncmlkLT5HZXRDZWxsTGlua3MoKSk7Ci0gICBMaW5rcy0+UmVzaXpl Q2VsbExpc3QobXlWdGtJRCwgMSk7Ci0gICBMaW5rcy0+QWRkQ2VsbFJlZmVyZW5jZShjZWxsLT5n ZXRWdGtJZCgpLCBteVZ0a0lEKTsKLSB9Ci1AQCAtMzY2LDcgKzM2Niw3IEBAIHZvaWQgU01EU19N ZXNoTm9kZTo6Q2xlYXJJbnZlcnNlRWxlbWVudHMoKQotIAotIGJvb2wgU01EU19NZXNoTm9kZTo6 ZW1wdHlJbnZlcnNlRWxlbWVudHMoKQotIHsKLS0gIHZ0a0NlbGxMaW5rczo6TGluayBsID0gU01E U19NZXNoOjpfbWVzaExpc3RbbXlNZXNoSWRdLT5nZXRHcmlkKCktPkdldENlbGxMaW5rcygpLT5H ZXRMaW5rKG15VnRrSUQpOwotKyAgdnRrQ2VsbExpbmtzOjpMaW5rIGwgPSBzdGF0aWNfY2FzdDx2 dGtDZWxsTGlua3MqPihTTURTX01lc2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0tPmdldEdyaWQoKS0+ R2V0Q2VsbExpbmtzKCkpLT5HZXRMaW5rKG15VnRrSUQpOwotICAgcmV0dXJuIChsLm5jZWxscyA9 PSAwKTsKLSB9Ci0gCi1AQCAtMzc4LDcgKzM3OCw3IEBAIGJvb2wgU01EU19NZXNoTm9kZTo6ZW1w dHlJbnZlcnNlRWxlbWVudHMoKQotIAotIGludCBTTURTX01lc2hOb2RlOjpOYkludmVyc2VFbGVt ZW50cyhTTURTQWJzX0VsZW1lbnRUeXBlIHR5cGUpIGNvbnN0Ci0gewotLSAgdnRrQ2VsbExpbmtz OjpMaW5rIGwgPSBTTURTX01lc2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0tPmdldEdyaWQoKS0+R2V0 Q2VsbExpbmtzKCktPkdldExpbmsobXlWdGtJRCk7Ci0rICB2dGtDZWxsTGlua3M6OkxpbmsgbCA9 IHN0YXRpY19jYXN0PHZ0a0NlbGxMaW5rcyo+KFNNRFNfTWVzaDo6X21lc2hMaXN0W215TWVzaElk XS0+Z2V0R3JpZCgpLT5HZXRDZWxsTGlua3MoKSktPkdldExpbmsobXlWdGtJRCk7Ci0gCi0gICBp ZiAoIHR5cGUgPT0gU01EU0Fic19BbGwgKQotICAgICByZXR1cm4gbC5uY2VsbHM7Ci1kaWZmIC0t Z2l0IHNyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX1Vuc3RydWN0dXJlZEdy aWQuY3BwIGIvc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfVW5zdHJ1Y3R1 cmVkR3JpZC5jcHAKLWluZGV4IGZiZDkwM2IxZTc0Li5mZjJiODFlOTY5NCAxMDA2NDQKLS0tLSBh L3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX1Vuc3RydWN0dXJlZEdyaWQu Y3BwCi0rKysgYi9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19VbnN0cnVj dHVyZWRHcmlkLmNwcAotQEAgLTEzOSw4ICsxMzksOCBAQCBpbnQgU01EU19VbnN0cnVjdHVyZWRH cmlkOjpJbnNlcnROZXh0TGlua2VkQ2VsbChpbnQgdHlwZSwgaW50IG5wdHMsIHZ0a0lkVHlwZSAq cAotICAgZm9yICg7IGl0ICE9IHNldE9mTm9kZXMuZW5kKCk7ICsraXQpCi0gICAgIHsKLSAgICAg ICAvL01FU1NBR0UoInJldmVyc2UgbGluayBmb3Igbm9kZSAiIDw8ICppdCA8PCAiIGNlbGwgIiA8 PCBjZWxsaWQpOwotLSAgICAgIHRoaXMtPkxpbmtzLT5SZXNpemVDZWxsTGlzdCgqaXQsIDEpOwot LSAgICAgIHRoaXMtPkxpbmtzLT5BZGRDZWxsUmVmZXJlbmNlKGNlbGxpZCwgKml0KTsKLSsgICAg ICB0aGlzLT5HZXRMaW5rcygpLT5SZXNpemVDZWxsTGlzdCgqaXQsIDEpOwotKyAgICAgIHRoaXMt PkdldExpbmtzKCktPkFkZENlbGxSZWZlcmVuY2UoY2VsbGlkLCAqaXQpOwotICAgICB9Ci0gCi0g ICByZXR1cm4gY2VsbGlkOwotQEAgLTMzMiw5ICszMzIsMTMgQEAgdm9pZCBTTURTX1Vuc3RydWN0 dXJlZEdyaWQ6OmNvcHlCbG9jKHZ0a1Vuc2lnbmVkQ2hhckFycmF5ICpuZXdUeXBlcywKLSAgICAg ewotICAgICAgIG5ld1R5cGVzLT5TZXRWYWx1ZShhbHJlYWR5Q29waWVkLCB0aGlzLT5UeXBlcy0+ R2V0VmFsdWUoaikpOwotICAgICAgIGlkQ2VsbHNPbGRUb05ld1tqXSA9IGFscmVhZHlDb3BpZWQ7 IC8vIG9sZCB2dGtJZCAtLT4gbmV3IHZ0a0lkCi0rI2lmZGVmIFZUS19DRUxMX0FSUkFZX1YyCi0r ICAgICAgdnRrSWRUeXBlIG9sZExvYyA9IHRoaXMtPkdldENlbGxMb2NhdGlvbnNBcnJheSgpLT5H ZXRWYWx1ZShqKTsKLSsjZWxzZQotICAgICAgIHZ0a0lkVHlwZSBvbGRMb2MgPSB0aGlzLT5Mb2Nh dGlvbnMtPkdldFZhbHVlKGopOwotKyNlbmRpZgotICAgICAgIHZ0a0lkVHlwZSBuYnB0czsKLS0g ICAgICB2dGtJZFR5cGUgKm9sZFB0c0NlbGwgPSAwOwotKyAgICAgIHZ0a0lkVHlwZVB0ciBvbGRQ dHNDZWxsID0gMDsKLSAgICAgICB0aGlzLT5Db25uZWN0aXZpdHktPkdldENlbGwob2xkTG9jLCBu YnB0cywgb2xkUHRzQ2VsbCk7Ci0gICAgICAgYXNzZXJ0KG5icHRzIDwgTkJNQVhOT0RFU0lOQ0VM TCk7Ci0gICAgICAgLy9NRVNTQUdFKGogPDwgIiAiIDw8IGFscmVhZHlDb3BpZWQgPDwgIiAiIDw8 IChpbnQpdGhpcy0+VHlwZXMtPkdldFZhbHVlKGopIDw8ICIgIiA8PCBvbGRMb2MgPDwgIiAiIDw8 IG5icHRzICk7Ci1AQCAtOTUyLDYgKzk1NiwyMSBAQCB2b2lkIFNNRFNfVW5zdHJ1Y3R1cmVkR3Jp ZDo6R2V0Tm9kZUlkcyhzdGQ6OnNldDxpbnQ+JiBub2RlU2V0LCBpbnQgZG93bklkLCB1bnNpZwot ICAqLwotIHZvaWQgU01EU19VbnN0cnVjdHVyZWRHcmlkOjpNb2RpZnlDZWxsTm9kZXMoaW50IHZ0 a1ZvbElkLCBzdGQ6Om1hcDxpbnQsIGludD4gbG9jYWxDbG9uZWROb2RlSWRzKQotIHsKLSsjaWZk ZWYgVlRLX0NFTExfQVJSQVlfVjIKLSsgIHZ0a05ldzx2dGtJZExpc3Q+IGNlbGxQb2ludHM7Ci0r ICB0aGlzLT5HZXRDZWxsUG9pbnRzKHZ0a1ZvbElkLCBjZWxsUG9pbnRzLkdldFBvaW50ZXIoKSk7 Ci0rICBmb3IgKHZ0a0lkVHlwZSBpID0gMDsgaSA8IGNlbGxQb2ludHMtPkdldE51bWJlck9mSWRz KCk7IGkrKykKLSsgICAgewotKyAgICAgIGlmIChsb2NhbENsb25lZE5vZGVJZHMuY291bnQoY2Vs bFBvaW50cy0+R2V0SWQoaSkpKQotKyAgICAgICAgewotKyAgICAgICAgICB2dGtJZFR5cGUgb2xk cHQgPSBjZWxsUG9pbnRzLT5HZXRJZChpKTsKLSsgICAgICAgICAgY2VsbFBvaW50cy0+U2V0SWQo aSwgbG9jYWxDbG9uZWROb2RlSWRzW29sZHB0XSk7Ci0rICAgICAgICAgIC8vTUVTU0FHRShvbGRw dCA8PCAiIC0tPiAiIDw8IHB0c1tpXSk7Ci0rICAgICAgICAgIC8vdGhpcy0+UmVtb3ZlUmVmZXJl bmNlVG9DZWxsKG9sZHB0LCB2dGtWb2xJZCk7Ci0rICAgICAgICAgIC8vdGhpcy0+QWRkUmVmZXJl bmNlVG9DZWxsKHB0c1tpXSwgdnRrVm9sSWQpOwotKyAgICAgICAgfQotKyAgICB9Ci0rI2Vsc2UK LSAgIHZ0a0lkVHlwZSBucHRzID0gMDsKLSAgIHZ0a0lkVHlwZSAqcHRzOyAvLyB3aWxsIHJlZmVy IHRvIHRoZSBwb2ludCBpZCdzIG9mIHRoZSBmYWNlCi0gICB0aGlzLT5HZXRDZWxsUG9pbnRzKHZ0 a1ZvbElkLCBucHRzLCBwdHMpOwotQEAgLTk2Niw2ICs5ODUsNyBAQCB2b2lkIFNNRFNfVW5zdHJ1 Y3R1cmVkR3JpZDo6TW9kaWZ5Q2VsbE5vZGVzKGludCB2dGtWb2xJZCwgc3RkOjptYXA8aW50LCBp bnQ+IGxvYwotICAgICAgICAgICAvL3RoaXMtPkFkZFJlZmVyZW5jZVRvQ2VsbChwdHNbaV0sIHZ0 a1ZvbElkKTsKLSAgICAgICAgIH0KLSAgICAgfQotKyNlbmRpZgotIH0KLSAKLSAvKiEgcmVvcmRl ciB0aGUgbm9kZXMgb2YgYSBmYWNlCi1AQCAtOTk1LDExICsxMDE1LDIwIEBAIHZvaWQgU01EU19V bnN0cnVjdHVyZWRHcmlkOjpCdWlsZExpbmtzKCkKLSAgICAgdGhpcy0+TGlua3MtPlVuUmVnaXN0 ZXIodGhpcyk7Ci0gICAgIH0KLSAKLSsjaWZkZWYgVlRLX0NFTExfQVJSQVlfVjIKLSsgIHRoaXMt PkxpbmtzID0gU01EU19DZWxsTGlua3M6Ok5ldygpOwotKyAgR2V0TGlua3MoKS0+QWxsb2NhdGUo dGhpcy0+R2V0TnVtYmVyT2ZQb2ludHMoKSk7Ci0rICBHZXRMaW5rcygpLT5SZWdpc3Rlcih0aGlz KTsKLSsvL0ZJWE1FOiB2dGs5Ci0rICBHZXRMaW5rcygpLT5CdWlsZExpbmtzKHRoaXMpOwotKyAg R2V0TGlua3MoKS0+RGVsZXRlKCk7Ci0rI2Vsc2UKLSAgIHRoaXMtPkxpbmtzID0gU01EU19DZWxs TGlua3M6Ok5ldygpOwotICAgdGhpcy0+TGlua3MtPkFsbG9jYXRlKHRoaXMtPkdldE51bWJlck9m UG9pbnRzKCkpOwotICAgdGhpcy0+TGlua3MtPlJlZ2lzdGVyKHRoaXMpOwotICAgdGhpcy0+TGlu a3MtPkJ1aWxkTGlua3ModGhpcywgdGhpcy0+Q29ubmVjdGl2aXR5KTsKLSAgIHRoaXMtPkxpbmtz LT5EZWxldGUoKTsKLSsjZW5kaWYKLSB9Ci0gCi0gLyohIENyZWF0ZSBhIHZvbHVtZSAocHJpc20g b3IgaGV4YWhlZHJvbikgYnkgZHVwbGljYXRpb24gb2YgYSBmYWNlLgotZGlmZiAtLWdpdCBzcmMv M3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19WdGtDZWxsSXRlcmF0b3IuY3BwIGIv c3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfVnRrQ2VsbEl0ZXJhdG9yLmNw cAotaW5kZXggZGViMDU5ODVmMDAuLjYzYjZlYWJiNzA0IDEwMDY0NAotLS0tIGEvc3JjLzNyZFBh cnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfVnRrQ2VsbEl0ZXJhdG9yLmNwcAotKysrIGIv c3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfVnRrQ2VsbEl0ZXJhdG9yLmNw cAotQEAgLTMzLDcgKzMzLDggQEAgU01EU19WdGtDZWxsSXRlcmF0b3I6OlNNRFNfVnRrQ2VsbEl0 ZXJhdG9yKFNNRFNfTWVzaCogbWVzaCwgaW50IHZ0a0NlbGxJZCwgU01EU0EKLSAgIH0KLSAgIGVs c2UKLSAgIHsKLS0gICAgdnRrSWRUeXBlIG5wdHMsICpwdHM7Ci0rICAgIHZ0a0lkVHlwZSBucHRz OwotKyAgICB2dGtJZFR5cGVQdHIgcHRzOwotICAgICBncmlkLT5HZXRDZWxsUG9pbnRzKCBfY2Vs bElkLCBucHRzLCBwdHMgKTsKLSAgICAgX3Z0a0lkTGlzdC0+U2V0TnVtYmVyT2ZJZHMoIF9uYk5v ZGVzID0gbnB0cyApOwotICAgICBmb3IgKGludCBpID0gMDsgaSA8IF9uYk5vZGVzOyBpKyspCi1A QCAtNjcsNyArNjgsNyBAQCBTTURTX1Z0a0NlbGxJdGVyYXRvclRvVU5WOjpTTURTX1Z0a0NlbGxJ dGVyYXRvclRvVU5WKFNNRFNfTWVzaCogbWVzaCwgaW50IHZ0a0NlbAotICAgLy9NRVNTQUdFKCJT TURTX1Z0a0NlbGxJbnRlcmxhY2VkSXRlcmF0b3IgKFVOVikiIDw8IF90eXBlKTsKLSAKLSAgIF92 dGtJZExpc3QgPSB2dGtJZExpc3Q6Ok5ldygpOwotLSAgdnRrSWRUeXBlKiBwdHM7Ci0rICB2dGtJ ZFR5cGVQdHIgcHRzOwotICAgdnRrSWRUeXBlIG5wdHM7Ci0gICB2dGtVbnN0cnVjdHVyZWRHcmlk KiBncmlkID0gX21lc2gtPmdldEdyaWQoKTsKLSAgIGdyaWQtPkdldENlbGxQb2ludHMoKHZ0a0lk VHlwZSlfY2VsbElkLCBucHRzLCBwdHMpOwotQEAgLTE4Miw3ICsxODMsNyBAQCBTTURTX1Z0a0Nl bGxJdGVyYXRvclBvbHlIOjpTTURTX1Z0a0NlbGxJdGVyYXRvclBvbHlIKFNNRFNfTWVzaCogbWVz aCwgaW50IHZ0a0NlbAotICAgewotICAgICAvL01FU1NBR0UoIlNNRFNfVnRrQ2VsbEl0ZXJhdG9y IFBvbHloZWRyYSIpOwotICAgICB2dGtJZFR5cGUgbkZhY2VzID0gMDsKLS0gICAgdnRrSWRUeXBl KiBwdElkcyA9IDA7Ci0rICAgIHZ0a0lkVHlwZVB0ciBwdElkcyA9IDA7Ci0gICAgIGdyaWQtPkdl dEZhY2VTdHJlYW0oX2NlbGxJZCwgbkZhY2VzLCBwdElkcyk7Ci0gICAgIGludCBpZCA9IDA7Ci0g ICAgIF9uYk5vZGVzSW5GYWNlcyA9IDA7Ci1kaWZmIC0tZ2l0IHNyYy8zcmRQYXJ0eS9zYWxvbWVz bWVzaC9zcmMvU01EUy9TTURTX1Z0a0VkZ2UuY3BwIGIvc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNo L3NyYy9TTURTL1NNRFNfVnRrRWRnZS5jcHAKLWluZGV4IDk3ODZhYmY5YWFlLi42ZDc3MmEzY2Q0 YSAxMDA2NDQKLS0tLSBhL3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX1Z0 a0VkZ2UuY3BwCi0rKysgYi9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19W dGtFZGdlLmNwcAotQEAgLTY3LDYgKzY3LDE5IEBAIGJvb2wgU01EU19WdGtFZGdlOjpDaGFuZ2VO b2Rlcyhjb25zdCBTTURTX01lc2hOb2RlICogbm9kZTEsIGNvbnN0IFNNRFNfTWVzaE5vZGUKLSBi b29sIFNNRFNfVnRrRWRnZTo6Q2hhbmdlTm9kZXMoY29uc3QgU01EU19NZXNoTm9kZSogbm9kZXNb XSwgY29uc3QgaW50IG5iTm9kZXMpCi0gewotICAgdnRrVW5zdHJ1Y3R1cmVkR3JpZCogZ3JpZCA9 IFNNRFNfTWVzaDo6X21lc2hMaXN0W215TWVzaElkXS0+Z2V0R3JpZCgpOwotKyNpZmRlZiBWVEtf Q0VMTF9BUlJBWV9WMgotKyAgdnRrTmV3PHZ0a0lkTGlzdD4gY2VsbFBvaW50czsKLSsgIGdyaWQt PkdldENlbGxQb2ludHMobXlWdGtJRCwgY2VsbFBvaW50cy5HZXRQb2ludGVyKCkpOwotKyAgaWYg KG5iTm9kZXMgIT0gY2VsbFBvaW50cy0+R2V0TnVtYmVyT2ZJZHMoKSkKLSsgICAgewotKyAgICAg IE1FU1NBR0UoIkNoYW5nZU5vZGVzIHByb2JsZW06IG5vdCB0aGUgc2FtZSBudW1iZXIgb2Ygbm9k ZXMgIiA8PCBjZWxsUG9pbnRzLT5HZXROdW1iZXJPZklkcygpIDw8ICIgLT4gIiA8PCBuYk5vZGVz KTsKLSsgICAgICByZXR1cm4gZmFsc2U7Ci0rICAgIH0KLSsgIGZvciAoaW50IGkgPSAwOyBpIDwg bmJOb2RlczsgaSsrKQotKyAgICB7Ci0rICAgICAgY2VsbFBvaW50cy0+U2V0SWQoaSwgbm9kZXNb aV0tPmdldFZ0a0lkKCkpOwotKyAgICB9Ci0rI2Vsc2UKLSAgIHZ0a0lkVHlwZSBucHRzID0gMDsK LSAgIHZ0a0lkVHlwZSogcHRzID0gMDsKLSAgIGdyaWQtPkdldENlbGxQb2ludHMobXlWdGtJRCwg bnB0cywgcHRzKTsKLUBAIC03OSw2ICs5Miw3IEBAIGJvb2wgU01EU19WdGtFZGdlOjpDaGFuZ2VO b2Rlcyhjb25zdCBTTURTX01lc2hOb2RlKiBub2Rlc1tdLCBjb25zdCBpbnQgbmJOb2RlcykKLSAg ICAgewotICAgICAgIHB0c1tpXSA9IG5vZGVzW2ldLT5nZXRWdGtJZCgpOwotICAgICB9Ci0rI2Vu ZGlmCi0gICBTTURTX01lc2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0tPnNldE15TW9kaWZpZWQoKTsK LSAgIHJldHVybiB0cnVlOwotIH0KLUBAIC04Nyw3ICsxMDEsNyBAQCBib29sIFNNRFNfVnRrRWRn ZTo6SXNNZWRpdW1Ob2RlKGNvbnN0IFNNRFNfTWVzaE5vZGUqIG5vZGUpIGNvbnN0Ci0gewotICAg dnRrVW5zdHJ1Y3R1cmVkR3JpZCogZ3JpZCA9IFNNRFNfTWVzaDo6X21lc2hMaXN0W215TWVzaElk XS0+Z2V0R3JpZCgpOwotICAgdnRrSWRUeXBlIG5wdHMgPSAwOwotLSAgdnRrSWRUeXBlKiBwdHMg PSAwOwotKyAgdnRrSWRUeXBlUHRyIHB0cyA9IDA7Ci0gICBncmlkLT5HZXRDZWxsUG9pbnRzKG15 VnRrSUQsIG5wdHMsIHB0cyk7Ci0gICAvL01FU1NBR0UoIklzTWVkaXVtTm9kZSAiIDw8IG5wdHMg IDw8ICIgIiA8PCAobm9kZS0+Z2V0VnRrSWQoKSA9PSBwdHNbbnB0cy0xXSkpOwotICAgcmV0dXJu ICgobnB0cyA9PSAzKSAmJiAobm9kZS0+Z2V0VnRrSWQoKSA9PSBwdHNbMl0pKTsKLUBAIC0xMzcs NyArMTUxLDggQEAgY29uc3QgU01EU19NZXNoTm9kZSoKLSBTTURTX1Z0a0VkZ2U6OkdldE5vZGUo Y29uc3QgaW50IGluZCkgY29uc3QKLSB7Ci0gICB2dGtVbnN0cnVjdHVyZWRHcmlkKiBncmlkID0g U01EU19NZXNoOjpfbWVzaExpc3RbbXlNZXNoSWRdLT5nZXRHcmlkKCk7Ci0tICB2dGtJZFR5cGUg bnB0cywgKnB0czsKLSsgIHZ0a0lkVHlwZSBucHRzOwotKyAgdnRrSWRUeXBlUHRyIHB0czsKLSAg IGdyaWQtPkdldENlbGxQb2ludHMoIHRoaXMtPm15VnRrSUQsIG5wdHMsIHB0cyApOwotICAgcmV0 dXJuIFNNRFNfTWVzaDo6X21lc2hMaXN0W215TWVzaElkXS0+RmluZE5vZGVWdGsoIHB0c1sgaW5k IF0pOwotIH0KLWRpZmYgLS1naXQgc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NN RFNfVnRrRmFjZS5jcHAgYi9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19W dGtGYWNlLmNwcAotaW5kZXggMTM4OWUwZDM1ODUuLmNiOTgxYmZiMThlIDEwMDY0NAotLS0tIGEv c3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfVnRrRmFjZS5jcHAKLSsrKyBi L3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX1Z0a0ZhY2UuY3BwCi1AQCAt MTAxLDYgKzEwMSwxOSBAQCB2b2lkIFNNRFNfVnRrRmFjZTo6aW5pdFF1YWRQb2x5KGNvbnN0IHN0 ZDo6dmVjdG9yPHZ0a0lkVHlwZT4mIG5vZGVJZHMsIFNNRFNfTWVzaAotIGJvb2wgU01EU19WdGtG YWNlOjpDaGFuZ2VOb2Rlcyhjb25zdCBTTURTX01lc2hOb2RlKiBub2Rlc1tdLCBjb25zdCBpbnQg bmJOb2RlcykKLSB7Ci0gICB2dGtVbnN0cnVjdHVyZWRHcmlkKiBncmlkID0gU01EU19NZXNoOjpf bWVzaExpc3RbbXlNZXNoSWRdLT5nZXRHcmlkKCk7Ci0rI2lmZGVmIFZUS19DRUxMX0FSUkFZX1Yy Ci0rICB2dGtOZXc8dnRrSWRMaXN0PiBjZWxsUG9pbnRzOwotKyAgZ3JpZC0+R2V0Q2VsbFBvaW50 cyhteVZ0a0lELCBjZWxsUG9pbnRzLkdldFBvaW50ZXIoKSk7Ci0rICBpZiAobmJOb2RlcyAhPSBj ZWxsUG9pbnRzLT5HZXROdW1iZXJPZklkcygpKQotKyAgICB7Ci0rICAgICAgTUVTU0FHRSgiQ2hh bmdlTm9kZXMgcHJvYmxlbTogbm90IHRoZSBzYW1lIG51bWJlciBvZiBub2RlcyAiIDw8IGNlbGxQ b2ludHMtPkdldE51bWJlck9mSWRzKCkgPDwgIiAtPiAiIDw8IG5iTm9kZXMpOwotKyAgICAgIHJl dHVybiBmYWxzZTsKLSsgICAgfQotKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBuYk5vZGVzOyBpKysp Ci0rICAgIHsKLSsgICAgICBjZWxsUG9pbnRzLT5TZXRJZChpLCBub2Rlc1tpXS0+Z2V0VnRrSWQo KSk7Ci0rICAgIH0KLSsjZWxzZQotICAgdnRrSWRUeXBlIG5wdHMgPSAwOwotICAgdnRrSWRUeXBl KiBwdHMgPSAwOwotICAgZ3JpZC0+R2V0Q2VsbFBvaW50cyhteVZ0a0lELCBucHRzLCBwdHMpOwot QEAgLTExMyw2ICsxMjYsNyBAQCBib29sIFNNRFNfVnRrRmFjZTo6Q2hhbmdlTm9kZXMoY29uc3Qg U01EU19NZXNoTm9kZSogbm9kZXNbXSwgY29uc3QgaW50IG5iTm9kZXMpCi0gICAgIHsKLSAgICAg ICBwdHNbaV0gPSBub2Rlc1tpXS0+Z2V0VnRrSWQoKTsKLSAgICAgfQotKyNlbmRpZgotICAgU01E U19NZXNoOjpfbWVzaExpc3RbbXlNZXNoSWRdLT5zZXRNeU1vZGlmaWVkKCk7Ci0gICByZXR1cm4g dHJ1ZTsKLSB9Ci1AQCAtMTczLDcgKzE4Nyw4IEBAIGNvbnN0IFNNRFNfTWVzaE5vZGUqCi0gU01E U19WdGtGYWNlOjpHZXROb2RlKGNvbnN0IGludCBpbmQpIGNvbnN0Ci0gewotICAgdnRrVW5zdHJ1 Y3R1cmVkR3JpZCogZ3JpZCA9IFNNRFNfTWVzaDo6X21lc2hMaXN0W215TWVzaElkXS0+Z2V0R3Jp ZCgpOwotLSAgdnRrSWRUeXBlIG5wdHMsICpwdHM7Ci0rICB2dGtJZFR5cGUgbnB0czsKLSsgIHZ0 a0lkVHlwZVB0ciBwdHM7Ci0gICBncmlkLT5HZXRDZWxsUG9pbnRzKCB0aGlzLT5teVZ0a0lELCBu cHRzLCBwdHMgKTsKLSAgIHJldHVybiBTTURTX01lc2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0tPkZp bmROb2RlVnRrKCBwdHNbIGluZCBdKTsKLSB9Ci1AQCAtMTg2LDcgKzIwMSw4IEBAIFNNRFNfVnRr RmFjZTo6R2V0Tm9kZShjb25zdCBpbnQgaW5kKSBjb25zdAotIGludCBTTURTX1Z0a0ZhY2U6Okdl dE5vZGVJbmRleCggY29uc3QgU01EU19NZXNoTm9kZSogbm9kZSApIGNvbnN0Ci0gewotICAgdnRr VW5zdHJ1Y3R1cmVkR3JpZCogZ3JpZCA9IFNNRFNfTWVzaDo6X21lc2hMaXN0W215TWVzaElkXS0+ Z2V0R3JpZCgpOwotLSAgdnRrSWRUeXBlIG5wdHMsICpwdHM7Ci0rICB2dGtJZFR5cGUgbnB0czsK LSsgIHZ0a0lkVHlwZVB0ciBwdHM7Ci0gICBncmlkLT5HZXRDZWxsUG9pbnRzKCB0aGlzLT5teVZ0 a0lELCBucHRzLCBwdHMgKTsKLSAgIGZvciAoIHZ0a0lkVHlwZSBpID0gMDsgaSA8IG5wdHM7ICsr aSApCi0gICAgIGlmICggcHRzW2ldID09IG5vZGUtPmdldFZ0a0lkKCkgKQotQEAgLTI1MSw3ICsy NjcsNyBAQCBib29sIFNNRFNfVnRrRmFjZTo6SXNNZWRpdW1Ob2RlKGNvbnN0IFNNRFNfTWVzaE5v ZGUqIG5vZGUpIGNvbnN0Ci0gICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgIHZ0a0lkVHlwZSBu cHRzID0gMDsKLS0gIHZ0a0lkVHlwZSogcHRzID0gMDsKLSsgIHZ0a0lkVHlwZVB0ciBwdHMgPSAw OwotICAgZ3JpZC0+R2V0Q2VsbFBvaW50cyhteVZ0a0lELCBucHRzLCBwdHMpOwotICAgdnRrSWRU eXBlIG5vZGVJZCA9IG5vZGUtPmdldFZ0a0lkKCk7Ci0gICBmb3IgKGludCByYW5rID0gMDsgcmFu ayA8IG5wdHM7IHJhbmsrKykKLUBAIC0zNTYsMTEgKzM3MiwxOCBAQCBTTURTX05vZGVJdGVyYXRv clB0ciBTTURTX1Z0a0ZhY2U6OmludGVybGFjZWROb2Rlc0l0ZXJhdG9yKCkgY29uc3QKLSB2b2lk IFNNRFNfVnRrRmFjZTo6Q2hhbmdlQXBleChTTURTX01lc2hOb2RlKiBub2RlKQotIHsKLSAgIHZ0 a1Vuc3RydWN0dXJlZEdyaWQqIGdyaWQgPSBTTURTX01lc2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0t PmdldEdyaWQoKTsKLSsjaWZkZWYgVlRLX0NFTExfQVJSQVlfVjIKLSsgIHZ0a05ldzx2dGtJZExp c3Q+IGNlbGxQb2ludHM7Ci0rICBncmlkLT5HZXRDZWxsUG9pbnRzKG15VnRrSUQsIGNlbGxQb2lu dHMuR2V0UG9pbnRlcigpKTsKLSsgIGdyaWQtPlJlbW92ZVJlZmVyZW5jZVRvQ2VsbChjZWxsUG9p bnRzLT5HZXRJZCgwKSwgbXlWdGtJRCk7Ci0rICBjZWxsUG9pbnRzLT5TZXRJZCgwLCBub2RlLT5n ZXRWdGtJZCgpKTsKLSsjZWxzZQotICAgdnRrSWRUeXBlIG5wdHMgPSAwOwotICAgdnRrSWRUeXBl KiBwdHMgPSAwOwotICAgZ3JpZC0+R2V0Q2VsbFBvaW50cyhteVZ0a0lELCBucHRzLCBwdHMpOwot ICAgZ3JpZC0+UmVtb3ZlUmVmZXJlbmNlVG9DZWxsKHB0c1swXSwgbXlWdGtJRCk7Ci0gICBwdHNb MF0gPSBub2RlLT5nZXRWdGtJZCgpOwotKyNlbmRpZgotICAgbm9kZS0+QWRkSW52ZXJzZUVsZW1l bnQodGhpcyksCi0gICBTTURTX01lc2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0tPnNldE15TW9kaWZp ZWQoKTsKLSB9Ci1kaWZmIC0tZ2l0IHNyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9T TURTX1Z0a1ZvbHVtZS5jcHAgYi9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01E U19WdGtWb2x1bWUuY3BwCi1pbmRleCAwMTVlZGY3NWZkMi4uMTllYmQwNzQ2YzggMTAwNjQ0Ci0t LS0gYS9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19WdGtWb2x1bWUuY3Bw Ci0rKysgYi9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19WdGtWb2x1bWUu Y3BwCi1AQCAtMTMzLDYgKzEzMywxOSBAQCB2b2lkIFNNRFNfVnRrVm9sdW1lOjppbml0UG9seShj b25zdCBzdGQ6OnZlY3Rvcjx2dGtJZFR5cGU+JiBub2RlSWRzLAotIGJvb2wgU01EU19WdGtWb2x1 bWU6OkNoYW5nZU5vZGVzKGNvbnN0IFNNRFNfTWVzaE5vZGUqIG5vZGVzW10sIGNvbnN0IGludCBu Yk5vZGVzKQotIHsKLSAgIHZ0a1Vuc3RydWN0dXJlZEdyaWQqIGdyaWQgPSBTTURTX01lc2g6Ol9t ZXNoTGlzdFtteU1lc2hJZF0tPmdldEdyaWQoKTsKLSsjaWZkZWYgVlRLX0NFTExfQVJSQVlfVjIK LSsgIHZ0a05ldzx2dGtJZExpc3Q+IGNlbGxQb2ludHM7Ci0rICBncmlkLT5HZXRDZWxsUG9pbnRz KG15VnRrSUQsIGNlbGxQb2ludHMuR2V0UG9pbnRlcigpKTsKLSsgIGlmIChuYk5vZGVzICE9IGNl bGxQb2ludHMtPkdldE51bWJlck9mSWRzKCkpCi0rICAgIHsKLSsgICAgICBNRVNTQUdFKCJDaGFu Z2VOb2RlcyBwcm9ibGVtOiBub3QgdGhlIHNhbWUgbnVtYmVyIG9mIG5vZGVzICIgPDwgY2VsbFBv aW50cy0+R2V0TnVtYmVyT2ZJZHMoKSA8PCAiIC0+ICIgPDwgbmJOb2Rlcyk7Ci0rICAgICAgcmV0 dXJuIGZhbHNlOwotKyAgICB9Ci0rICBmb3IgKGludCBpID0gMDsgaSA8IG5iTm9kZXM7IGkrKykK LSsgICAgewotKyAgICAgIGNlbGxQb2ludHMtPlNldElkKGksIG5vZGVzW2ldLT5nZXRWdGtJZCgp KTsKLSsgICAgfQotKyNlbHNlCi0gICB2dGtJZFR5cGUgbnB0cyA9IDA7Ci0gICB2dGtJZFR5cGUq IHB0cyA9IDA7Ci0gICBncmlkLT5HZXRDZWxsUG9pbnRzKG15VnRrSUQsIG5wdHMsIHB0cyk7Ci1A QCAtMTQ1LDYgKzE1OCw3IEBAIGJvb2wgU01EU19WdGtWb2x1bWU6OkNoYW5nZU5vZGVzKGNvbnN0 IFNNRFNfTWVzaE5vZGUqIG5vZGVzW10sIGNvbnN0IGludCBuYk5vZGVzCi0gICAgIHsKLSAgICAg ICBwdHNbaV0gPSBub2Rlc1tpXS0+Z2V0VnRrSWQoKTsKLSAgICAgfQotKyNlbmRpZgotICAgU01E U19NZXNoOjpfbWVzaExpc3RbbXlNZXNoSWRdLT5zZXRNeU1vZGlmaWVkKCk7Ci0gICByZXR1cm4g dHJ1ZTsKLSB9Ci1AQCAtMjA3LDcgKzIyMSw3IEBAIGludCBTTURTX1Z0a1ZvbHVtZTo6TmJGYWNl cygpIGNvbnN0Ci0gICAgIGNhc2UgVlRLX1BPTFlIRURST046Ci0gICAgICAgewotICAgICAgICAg dnRrSWRUeXBlIG5GYWNlcyA9IDA7Ci0tICAgICAgICB2dGtJZFR5cGUqIHB0SWRzID0gMDsKLSsg ICAgICAgIHZ0a0lkVHlwZVB0ciBwdElkcyA9IDA7Ci0gICAgICAgICBncmlkLT5HZXRGYWNlU3Ry ZWFtKHRoaXMtPm15VnRrSUQsIG5GYWNlcywgcHRJZHMpOwotICAgICAgICAgbmJGYWNlcyA9IG5G YWNlczsKLSAgICAgICAgIGJyZWFrOwotQEAgLTIzNiw3ICsyNTAsNyBAQCBpbnQgU01EU19WdGtW b2x1bWU6Ok5iTm9kZXMoKSBjb25zdAotICAgZWxzZQotICAgICB7Ci0gICAgICAgdnRrSWRUeXBl IG5GYWNlcyA9IDA7Ci0tICAgICAgdnRrSWRUeXBlKiBwdElkcyA9IDA7Ci0rICAgICAgdnRrSWRU eXBlUHRyIHB0SWRzID0gMDsKLSAgICAgICBncmlkLT5HZXRGYWNlU3RyZWFtKHRoaXMtPm15VnRr SUQsIG5GYWNlcywgcHRJZHMpOwotICAgICAgIGludCBpZCA9IDA7Ci0gICAgICAgZm9yIChpbnQg aSA9IDA7IGkgPCBuRmFjZXM7IGkrKykKLUBAIC0yNzYsNyArMjkwLDcgQEAgaW50IFNNRFNfVnRr Vm9sdW1lOjpOYkVkZ2VzKCkgY29uc3QKLSAgICAgY2FzZSBWVEtfUE9MWUhFRFJPTjoKLSAgICAg ICB7Ci0gICAgICAgICB2dGtJZFR5cGUgbkZhY2VzID0gMDsKLS0gICAgICAgIHZ0a0lkVHlwZSog cHRJZHMgPSAwOwotKyAgICAgICAgdnRrSWRUeXBlUHRyIHB0SWRzID0gMDsKLSAgICAgICAgIGdy aWQtPkdldEZhY2VTdHJlYW0odGhpcy0+bXlWdGtJRCwgbkZhY2VzLCBwdElkcyk7Ci0gICAgICAg ICBuYkVkZ2VzID0gMDsKLSAgICAgICAgIGludCBpZCA9IDA7Ci1AQCAtMzEyLDcgKzMyNiw3IEBA IGludCBTTURTX1Z0a1ZvbHVtZTo6TmJGYWNlTm9kZXMoY29uc3QgaW50IGZhY2VfaW5kKSBjb25z dAotICAgaWYgKGFWdGtUeXBlID09IFZUS19QT0xZSEVEUk9OKQotICAgICB7Ci0gICAgICAgdnRr SWRUeXBlIG5GYWNlcyA9IDA7Ci0tICAgICAgdnRrSWRUeXBlKiBwdElkcyA9IDA7Ci0rICAgICAg dnRrSWRUeXBlUHRyIHB0SWRzID0gMDsKLSAgICAgICBncmlkLT5HZXRGYWNlU3RyZWFtKHRoaXMt Pm15VnRrSUQsIG5GYWNlcywgcHRJZHMpOwotICAgICAgIGludCBpZCA9IDA7Ci0gICAgICAgZm9y IChpbnQgaSA9IDA7IGkgPCBuRmFjZXM7IGkrKykKLUBAIC0zNDIsNyArMzU2LDcgQEAgY29uc3Qg U01EU19NZXNoTm9kZSogU01EU19WdGtWb2x1bWU6OkdldEZhY2VOb2RlKGNvbnN0IGludCBmYWNl X2luZCwgY29uc3QgaW50IG4KLSAgIGlmIChhVnRrVHlwZSA9PSBWVEtfUE9MWUhFRFJPTikKLSAg ICAgewotICAgICAgIHZ0a0lkVHlwZSBuRmFjZXMgPSAwOwotLSAgICAgIHZ0a0lkVHlwZSogcHRJ ZHMgPSAwOwotKyAgICAgIHZ0a0lkVHlwZVB0ciBwdElkcyA9IDA7Ci0gICAgICAgZ3JpZC0+R2V0 RmFjZVN0cmVhbSh0aGlzLT5teVZ0a0lELCBuRmFjZXMsIHB0SWRzKTsKLSAgICAgICBpbnQgaWQg PSAwOwotICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbkZhY2VzOyBpKyspCi1AQCAtMzcyLDcg KzM4Niw3IEBAIHN0ZDo6dmVjdG9yPGludD4gU01EU19WdGtWb2x1bWU6OkdldFF1YW50aXRpZXMo KSBjb25zdAotICAgaWYgKGFWdGtUeXBlID09IFZUS19QT0xZSEVEUk9OKQotICAgICB7Ci0gICAg ICAgdnRrSWRUeXBlIG5GYWNlcyA9IDA7Ci0tICAgICAgdnRrSWRUeXBlKiBwdElkcyA9IDA7Ci0r ICAgICAgdnRrSWRUeXBlUHRyIHB0SWRzID0gMDsKLSAgICAgICBncmlkLT5HZXRGYWNlU3RyZWFt KHRoaXMtPm15VnRrSUQsIG5GYWNlcywgcHRJZHMpOwotICAgICAgIGludCBpZCA9IDA7Ci0gICAg ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuRmFjZXM7IGkrKykKLUBAIC00MzAsNyArNDQ0LDcgQEAg Y29uc3QgU01EU19NZXNoTm9kZSogU01EU19WdGtWb2x1bWU6OkdldE5vZGUoY29uc3QgaW50IGlu ZCkgY29uc3QKLSAgIGlmICggYVZ0a1R5cGUgPT0gVlRLX1BPTFlIRURST04pCi0gICB7Ci0gICAg IHZ0a0lkVHlwZSBuRmFjZXMgPSAwOwotLSAgICB2dGtJZFR5cGUqIHB0SWRzID0gMDsKLSsgICAg dnRrSWRUeXBlUHRyIHB0SWRzID0gMDsKLSAgICAgZ3JpZC0+R2V0RmFjZVN0cmVhbSh0aGlzLT5t eVZ0a0lELCBuRmFjZXMsIHB0SWRzKTsKLSAgICAgaW50IGlkID0gMCwgbmJQb2ludHMgPSAwOwot ICAgICBmb3IgKGludCBpID0gMDsgaSA8IG5GYWNlczsgaSsrKQotQEAgLTQ0Myw3ICs0NTcsOCBA QCBjb25zdCBTTURTX01lc2hOb2RlKiBTTURTX1Z0a1ZvbHVtZTo6R2V0Tm9kZShjb25zdCBpbnQg aW5kKSBjb25zdAotICAgICB9Ci0gICAgIHJldHVybiAwOwotICAgfQotLSAgdnRrSWRUeXBlIG5w dHMsICpwdHM7Ci0rICB2dGtJZFR5cGUgbnB0czsKLSsgIHZ0a0lkVHlwZVB0ciBwdHM7Ci0gICBn cmlkLT5HZXRDZWxsUG9pbnRzKCB0aGlzLT5teVZ0a0lELCBucHRzLCBwdHMgKTsKLSAgIGNvbnN0 IHN0ZDo6dmVjdG9yPGludD4mIGludGVybGFjZSA9IFNNRFNfTWVzaENlbGw6OmZyb21WdGtPcmRl ciggVlRLQ2VsbFR5cGUoIGFWdGtUeXBlICkpOwotICAgcmV0dXJuIFNNRFNfTWVzaDo6X21lc2hM aXN0W215TWVzaElkXS0+RmluZE5vZGVWdGsoIHB0c1sgaW50ZXJsYWNlLmVtcHR5KCkgPyBpbmQg OiBpbnRlcmxhY2VbaW5kXV0gKTsKLUBAIC00NjAsNyArNDc1LDcgQEAgaW50IFNNRFNfVnRrVm9s dW1lOjpHZXROb2RlSW5kZXgoIGNvbnN0IFNNRFNfTWVzaE5vZGUqIG5vZGUgKSBjb25zdAotICAg aWYgKCBhVnRrVHlwZSA9PSBWVEtfUE9MWUhFRFJPTikKLSAgIHsKLSAgICAgdnRrSWRUeXBlIG5G YWNlcyA9IDA7Ci0tICAgIHZ0a0lkVHlwZSogcHRJZHMgPSAwOwotKyAgICB2dGtJZFR5cGVQdHIg cHRJZHMgPSAwOwotICAgICBncmlkLT5HZXRGYWNlU3RyZWFtKHRoaXMtPm15VnRrSUQsIG5GYWNl cywgcHRJZHMpOwotICAgICBpbnQgaWQgPSAwOwotICAgICBmb3IgKGludCBpRiA9IDA7IGlGIDwg bkZhY2VzOyBpRisrKQotQEAgLTQ3Myw3ICs0ODgsOCBAQCBpbnQgU01EU19WdGtWb2x1bWU6Okdl dE5vZGVJbmRleCggY29uc3QgU01EU19NZXNoTm9kZSogbm9kZSApIGNvbnN0Ci0gICAgIH0KLSAg ICAgcmV0dXJuIC0xOwotICAgfQotLSAgdnRrSWRUeXBlIG5wdHMsICpwdHM7Ci0rICB2dGtJZFR5 cGUgbnB0czsKLSsgIHZ0a0lkVHlwZVB0ciBwdHM7Ci0gICBncmlkLT5HZXRDZWxsUG9pbnRzKCB0 aGlzLT5teVZ0a0lELCBucHRzLCBwdHMgKTsKLSAgIGZvciAoIHZ0a0lkVHlwZSBpID0gMDsgaSA8 IG5wdHM7ICsraSApCi0gICAgIGlmICggcHRzW2ldID09IG5vZGUtPmdldFZ0a0lkKCkgKQotQEAg LTUzNCw3ICs1NTAsNyBAQCBib29sIFNNRFNfVnRrVm9sdW1lOjpJc01lZGl1bU5vZGUoY29uc3Qg U01EU19NZXNoTm9kZSogbm9kZSkgY29uc3QKLSAgICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0g ICB2dGtJZFR5cGUgbnB0cyA9IDA7Ci0tICB2dGtJZFR5cGUqIHB0cyA9IDA7Ci0rICB2dGtJZFR5 cGVQdHIgcHRzID0gMDsKLSAgIGdyaWQtPkdldENlbGxQb2ludHMobXlWdGtJRCwgbnB0cywgcHRz KTsKLSAgIHZ0a0lkVHlwZSBub2RlSWQgPSBub2RlLT5nZXRWdGtJZCgpOwotICAgZm9yIChpbnQg cmFuayA9IDA7IHJhbmsgPCBucHRzOyByYW5rKyspCi1kaWZmIC0tZ2l0IHNyYy8zcmRQYXJ0eS9z YWxvbWVzbWVzaC9zcmMvU01FU0gvU01FU0hfTWVzaEVkaXRvci5jcHAgYi9zcmMvM3JkUGFydHkv c2Fsb21lc21lc2gvc3JjL1NNRVNIL1NNRVNIX01lc2hFZGl0b3IuY3BwCi1pbmRleCBmY2QwNDRi MDBmMi4uZjU0YzI0Zjg2MTggMTAwNjQ0Ci0tLS0gYS9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gv c3JjL1NNRVNIL1NNRVNIX01lc2hFZGl0b3IuY3BwCi0rKysgYi9zcmMvM3JkUGFydHkvc2Fsb21l c21lc2gvc3JjL1NNRVNIL1NNRVNIX01lc2hFZGl0b3IuY3BwCi1AQCAtMTEzNDgsNyArMTEzNDgs NyBAQCBib29sIFNNRVNIX01lc2hFZGl0b3I6OkRvdWJsZU5vZGVzT25Hcm91cEJvdW5kYXJpZXMo IGNvbnN0IHN0ZDo6dmVjdG9yPFRJRFNvcnRlZAotICAgICAgICAgICAgIHsKLSAgICAgICAgICAg ICAgIGludCBvbGRJZCA9ICppdG47Ci0gICAgICAgICAgICAgICAvL01FU1NBR0UoIiAgICAgbm9k ZSAiIDw8IG9sZElkKTsKLS0gICAgICAgICAgICAgIHZ0a0NlbGxMaW5rczo6TGluayBsID0gZ3Jp ZC0+R2V0Q2VsbExpbmtzKCktPkdldExpbmsob2xkSWQpOwotKyAgICAgICAgICAgICAgdnRrQ2Vs bExpbmtzOjpMaW5rIGwgPSBzdGF0aWNfY2FzdDx2dGtDZWxsTGlua3MqPihncmlkLT5HZXRDZWxs TGlua3MoKSktPkdldExpbmsob2xkSWQpOwotICAgICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBp PGwubmNlbGxzOyBpKyspCi0gICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICBp bnQgdnRrSWQgPSBsLmNlbGxzW2ldOwotQEAgLTExNTI3LDcgKzExNTI3LDcgQEAgYm9vbCBTTUVT SF9NZXNoRWRpdG9yOjpEb3VibGVOb2Rlc09uR3JvdXBCb3VuZGFyaWVzKCBjb25zdCBzdGQ6OnZl Y3RvcjxUSURTb3J0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAvL01FU1NBR0UoIiAgZG9tYWluICIgPDwgaWRvbSA8PCAiIHZvbHVtZSAiIDw8IGVsZW0tPkdl dElEKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJs ZSB2YWx1ZXNbM107Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dnRrSWRUeXBlIG5wdHMgPSAwOwotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHZ0a0lkVHlwZSogcHRzID0gMDsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB2dGtJZFR5cGVQdHIgcHRzID0gMDsKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBncmlkLT5HZXRDZWxsUG9pbnRzKHZ0a1ZvbElkc1tpdm9s XSwgbnB0cywgcHRzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBTTURTX1Z0a1ZvbHVtZTo6Z3Jhdml0eUNlbnRlcihncmlkLCBwdHMsIG5wdHMsIHZhbHVlcyk7 Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkID09MCkK LUBAIC0xMTcwOCw3ICsxMTcwOCw3IEBAIGJvb2wgU01FU0hfTWVzaEVkaXRvcjo6RG91YmxlTm9k ZXNPbkdyb3VwQm91bmRhcmllcyggY29uc3Qgc3RkOjp2ZWN0b3I8VElEU29ydGVkCi0gICAgICAg ICB7Ci0gICAgICAgICAgIGludCBvbGRJZCA9IGl0bm9kLT5maXJzdDsKLSAgICAgICAgICAgLy9N RVNTQUdFKCIgICAgIG5vZGUgIiA8PCBvbGRJZCk7Ci0tICAgICAgICAgIHZ0a0NlbGxMaW5rczo6 TGluayBsID0gZ3JpZC0+R2V0Q2VsbExpbmtzKCktPkdldExpbmsob2xkSWQpOwotKyAgICAgICAg ICB2dGtDZWxsTGlua3M6OkxpbmsgbCA9IHN0YXRpY19jYXN0PHZ0a0NlbGxMaW5rcyo+KGdyaWQt PkdldENlbGxMaW5rcygpKS0+R2V0TGluayhvbGRJZCk7Ci0gICAgICAgICAgIGZvciAoaW50IGkg PSAwOyBpIDwgbC5uY2VsbHM7IGkrKykKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBp bnQgdnRrSWQgPSBsLmNlbGxzW2ldOwotQEAgLTEyMTY1LDcgKzEyMTY1LDcgQEAgdm9pZCBTTUVT SF9NZXNoRWRpdG9yOjpDcmVhdGVIb2xlU2tpbihkb3VibGUgcmFkaXVzLAotICAgICAgICAgICBN RVNTQUdFKCJ2b2x1bWUgdG8gY2hlY2ssICB2dGtJZCAiIDw8IHZ0a0lkIDw8ICIgc21kc0lkICIg PDwgbWVzaERTLT5mcm9tVnRrVG9TbWRzKHZ0a0lkKSk7Ci0gICAgICAgICAgIGJvb2wgdm9sSW5z aWRlID0gZmFsc2U7Ci0gICAgICAgICAgIHZ0a0lkVHlwZSBucHRzID0gMDsKLS0gICAgICAgICAg dnRrSWRUeXBlKiBwdHMgPSAwOwotKyAgICAgICAgICB2dGtJZFR5cGVQdHIgcHRzID0gMDsKLSAg ICAgICAgICAgZ3JpZC0+R2V0Q2VsbFBvaW50cyh2dGtJZCwgbnB0cywgcHRzKTsKLSAgICAgICAg ICAgZm9yIChpbnQgaT0wOyBpPG5wdHM7IGkrKykKLSAgICAgICAgICAgICB7CmRpZmYgLS1naXQg YS9zcmNwa2dzL2ZyZWVjYWQvcGF0Y2hlcy8xNTItY21ha2UtdnRrOS5wYXRjaCBiL3NyY3BrZ3Mv ZnJlZWNhZC9wYXRjaGVzLzE1Mi1jbWFrZS12dGs5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCA3YWJmZmNmNTdlODQuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2ZyZWVj YWQvcGF0Y2hlcy8xNTItY21ha2UtdnRrOS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICsw LDAgQEAKLS0tLSBhL2NNYWtlL0ZyZWVDQURfSGVscGVycy9TZXR1cFNhbG9tZVNNRVNILmNtYWtl CTIwMjAtMTEtMjYgMTU6NTk6MjcuMDAwMDAwMDAwICswMTAwCi0rKysgYi9jTWFrZS9GcmVlQ0FE X0hlbHBlcnMvU2V0dXBTYWxvbWVTTUVTSC5jbWFrZQkyMDIwLTExLTI2IDIzOjA5OjEyLjc3ODI2 MjYzNiArMDEwMAotQEAgLTExLDYgKzExLDggQEAKLSAgICAgICAgIHNldChTTUVTSF9WRVJTSU9O X1RXRUFLIDApCi0gCi0gICAgICAgICAjaWYgd2UgdXNlIHNtZXNoIHdlIGRlZmluaXRlbHkgYWxz byBuZWVkIHZ0aywgbm8gbWF0dGVyIG9mIGV4dGVybmFsIG9yIGludGVybmFsIHNtZXNoCi0rICAg ICAgICBmaW5kX3BhY2thZ2UoVlRLIFJFUVVJUkVEIE5PX01PRFVMRSkKLSsgICAgICAgIGlmKCR7 VlRLX01BSk9SX1ZFUlNJT059IExFU1MgOSkKLSAgICAgICAgIHNldCAoVlRLX0NPTVBPTkVOVFMK LSAgICAgICAgICAgICB2dGtDb21tb25Db3JlCi0gICAgICAgICAgICAgdnRrQ29tbW9uRGF0YU1v ZGVsCi1AQCAtMjMsMTggKzI1LDM3IEBACi0gICAgICAgICAgICAgdnRrRmlsdGVyc1NvdXJjZXMK LSAgICAgICAgICAgICB2dGtGaWx0ZXJzR2VvbWV0cnkKLSAgICAgICAgICkKLS0KLS0gICAgICAg ICMgY2hlY2sgd2hpY2ggbW9kdWxlcyBhcmUgYXZhaWxhYmxlCi0tICAgICAgICBpZihVTklYIE9S IFdJTjMyKQotICAgICAgICAgICAgIGZpbmRfcGFja2FnZShWVEsgQ09NUE9ORU5UUyB2dGtDb21t b25Db3JlIFJFUVVJUkVEIE5PX01PRFVMRSkKLSAgICAgICAgICAgICBsaXN0KEFQUEVORCBWVEtf Q09NUE9ORU5UUyB2dGtJT01QSVBhcmFsbGVsIHZ0a1BhcmFsbGVsTVBJIHZ0a2hkZjUgdnRrRmls dGVyc1BhcmFsbGVsRElZMiB2dGtSZW5kZXJpbmdDb3JlIHZ0a0ludGVyYWN0aW9uU3R5bGUgdnRr UmVuZGVyaW5nRnJlZVR5cGUgdnRrUmVuZGVyaW5nT3BlbkdMMikKLSsgICAgICAgIGVsc2UoKQot KyAgICAgICAgICAgICMgVlRLIDkgY2hhbmdlZCBpdHMgY29tcG9uZW50IG5hbWVzCi0rICAgICAg ICAgICAgc2V0IChWVEtfQ09NUE9ORU5UUwotKyAgICAgICAgICAgICAgICBDb21tb25Db3JlCi0r ICAgICAgICAgICAgICAgIENvbW1vbkRhdGFNb2RlbAotKyAgICAgICAgICAgICAgICBGaWx0ZXJz VmVyZGljdAotKyAgICAgICAgICAgICAgICBJT1hNTAotKyAgICAgICAgICAgICAgICBGaWx0ZXJz Q29yZQotKyAgICAgICAgICAgICAgICBGaWx0ZXJzR2VuZXJhbAotKyAgICAgICAgICAgICAgICBJ T0xlZ2FjeQotKyAgICAgICAgICAgICAgICBGaWx0ZXJzRXh0cmFjdGlvbgotKyAgICAgICAgICAg ICAgICBGaWx0ZXJzU291cmNlcwotKyAgICAgICAgICAgICAgICBGaWx0ZXJzR2VvbWV0cnkKLSsg ICAgICAgICAgICApCi0rICAgICAgICAgICAgZmluZF9wYWNrYWdlKFZUSyBDT01QT05FTlRTIENv bW1vbkNvcmUgUkVRVUlSRUQgTk9fTU9EVUxFKQotKyAgICAgICAgICAgIGxpc3QoQVBQRU5EIFZU S19DT01QT05FTlRTIElPTVBJUGFyYWxsZWwgUGFyYWxsZWxNUEkgaGRmNSBGaWx0ZXJzUGFyYWxs ZWxESVkyIFJlbmRlcmluZ0NvcmUgSW50ZXJhY3Rpb25TdHlsZSBSZW5kZXJpbmdGcmVlVHlwZSBS ZW5kZXJpbmdPcGVuR0wyKQotKyAgICAgICAgZW5kaWYoKQotKwotKyAgICAgICAgIyBjaGVjayB3 aGljaCBtb2R1bGVzIGFyZSBhdmFpbGFibGUKLSAgICAgICAgICAgICBmb3JlYWNoKF9tb2R1bGUg JHtWVEtfQ09NUE9ORU5UU30pCi0rICAgICAgICAgICAgaWYoJHtWVEtfTUFKT1JfVkVSU0lPTn0g TEVTUyA5KQotICAgICAgICAgICAgICAgICBsaXN0IChGSU5EIFZUS19NT0RVTEVTX0VOQUJMRUQg JHtfbW9kdWxlfSBfaW5kZXgpCi0rICAgICAgICAgICAgZWxzZSgpCi0rICAgICAgICAgICAgICAg IGxpc3QgKEZJTkQgVlRLX0FWQUlMQUJMRV9DT01QT05FTlRTICR7X21vZHVsZX0gX2luZGV4KQot KyAgICAgICAgICAgIGVuZGlmKCkKLSAgICAgICAgICAgICAgICAgaWYgKCR7X2luZGV4fSBHUkVB VEVSIC0xKQotICAgICAgICAgICAgICAgICAgICAgbGlzdChBUFBFTkQgQVZBSUxBQkxFX1ZUS19D T01QT05FTlRTICR7X21vZHVsZX0pCi0gICAgICAgICAgICAgICAgIGVuZGlmKCkKLSAgICAgICAg ICAgICBlbmRmb3JlYWNoKCkKLS0gICAgICAgIGVuZGlmKCkKLSAKLSAgICAgICAgICMgZG9uJ3Qg Y2hlY2sgVkVSU0lPTiA2IGFzIHRoaXMgd291bGQgZXhjbHVkZSBWRVJTSU9OIDcKLSAgICAgICAg IGlmKEFWQUlMQUJMRV9WVEtfQ09NUE9ORU5UUykKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZnJlZWNh ZC9wYXRjaGVzLzE1My1saW1pdHMuaC1mb3ItbXVzbC5wYXRjaCBiL3NyY3BrZ3MvZnJlZWNhZC9w YXRjaGVzLzE1My1saW1pdHMuaC1mb3ItbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLjU5YjBmZjE3OGVmOAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3Br Z3MvZnJlZWNhZC9wYXRjaGVzLzE1My1saW1pdHMuaC1mb3ItbXVzbC5wYXRjaApAQCAtMCwwICsx LDEzIEBACistLS0gYS9zcmMvRkNDb25maWcuaC5PUklHCisrKysgYi9zcmMvRkNDb25maWcuaAor QEAgLTMyMSw0ICszMjEsMTAgQEAKKyAvLyMJZGVmaW5lIF9QcmVDb21wXyAgICAgICAgICAgICAg ICAgIC8vIHVzZSBwcmVjb21waWxlZCBoZWFkZXINCisgI2VuZGlmDQorIA0KKysjaWYgZGVmaW5l ZChGQ19PU19MSU5VWCkgfHwgZGVmaW5lZChGQ19PU19NQUNPU1gpIHx8IGRlZmluZWQoRkNfT1Nf QlNEKQ0KKysjaWYgKCFkZWZpbmVkKFBBVEhfTUFYKSkNCisrI2luY2x1ZGUgPGxpbWl0cy5oPg0K KysjZW5kaWYNCisrI2VuZGlmDQorKw0KKyAjZW5kaWYgLy9GQ19DT05GSUdfSA0KZGlmZiAtLWdp dCBhL3NyY3BrZ3MvZnJlZWNhZC9wYXRjaGVzLzE1NC1yZXZlcnQtZ3VpLXRtcC1yZWRpcmVjdC1z dGRlcnIucGF0Y2ggYi9zcmNwa2dzL2ZyZWVjYWQvcGF0Y2hlcy8xNTQtcmV2ZXJ0LWd1aS10bXAt cmVkaXJlY3Qtc3RkZXJyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMC4uMjg3MTc5YTIzYzNjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9mcmVlY2FkL3Bh dGNoZXMvMTU0LXJldmVydC1ndWktdG1wLXJlZGlyZWN0LXN0ZGVyci5wYXRjaApAQCAtMCwwICsx LDczIEBACitzZWUgaHR0cHM6Ly9naXRodWIuY29tL0ZyZWVDQUQvRnJlZUNBRC9jb21taXQvY2Zl OTRiMDBkMzQzNGYzZTJjOGI1MTE0ZDI5MDlmNjI4YzMzMGZhOCNjb21taXRjb21tZW50LTcxNDEz NDA3CisKK3Vwc3RyZWFtOiB5ZXMKKworRnJvbSA3YjM3N2EyMTZiOTE4NTk2MGU0Y2VlOTgwYTY1 MDRkYzFhNzU1ZjUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogd21heWVyIDx3bWF5 ZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogV2VkLCAyOSBKdW4gMjAyMiAxNToxOTox OCArMDIwMAorU3ViamVjdDogW1BBVENIXSBHdWk6IHJlbW92ZSB3b3JrYXJvdW5kIGZvciBzcG5h diAwLjIzIGR1ZSB0byBidWlsZCBmYWlsdXJlCisgd2l0aCBtdXNsIGxpYmMKKworLS0tCisgc3Jj L0d1aS8zRGNvbm5leGlvbi9HdWlOYXRpdmVFdmVudExpbnV4LmNwcCB8IDI3IC0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdp dCBhL3NyYy9HdWkvM0Rjb25uZXhpb24vR3VpTmF0aXZlRXZlbnRMaW51eC5jcHAgYi9zcmMvR3Vp LzNEY29ubmV4aW9uL0d1aU5hdGl2ZUV2ZW50TGludXguY3BwCitpbmRleCA3ZjBkZGQ3NWQuLjQ1 NWVjZTBiMyAxMDA2NDQKKy0tLSBhL3NyYy9HdWkvM0Rjb25uZXhpb24vR3VpTmF0aXZlRXZlbnRM aW51eC5jcHAKKysrKyBiL3NyYy9HdWkvM0Rjb25uZXhpb24vR3VpTmF0aXZlRXZlbnRMaW51eC5j cHAKK0BAIC0yMSw0MiArMjEsMTcgQEAKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworIAorICNpbmNs dWRlIDxGQ0NvbmZpZy5oPgorLSNpbmNsdWRlIDxjc3RkaW8+CisgCisgI2luY2x1ZGUgIkd1aU5h dGl2ZUV2ZW50TGludXguaCIKKyAKKyAjaW5jbHVkZSAiR3VpQXBwbGljYXRpb25OYXRpdmVFdmVu dEF3YXJlLmgiCisgI2luY2x1ZGUgPEJhc2UvQ29uc29sZS5oPgorLSNpbmNsdWRlIDxCYXNlL0Zp bGVJbmZvLmg+CisgI2luY2x1ZGUgPFFNYWluV2luZG93PgorIAorICNpbmNsdWRlIDxRU29ja2V0 Tm90aWZpZXI+CisgCisgI2luY2x1ZGUgPHNwbmF2Lmg+CisgCistbmFtZXNwYWNlIHsKKy1jbGFz cyBSZWRpcmVjdFN0ZEVycgorLXsKKy1wdWJsaWM6CistICAgIFJlZGlyZWN0U3RkRXJyKCkKKy0g ICAgICAgIDogZmkoQmFzZTo6RmlsZUluZm86OmdldFRlbXBGaWxlTmFtZSgpKQorLSAgICAgICAg LCBmaWxlKHN0ZGVycikKKy0gICAgeworLSAgICAgICAgc3RkZXJyID0gZm9wZW4oZmkuZmlsZVBh dGgoKS5jX3N0cigpLCAidyIpOworLSAgICB9CistICAgIH5SZWRpcmVjdFN0ZEVycigpCistICAg IHsKKy0gICAgICAgIGZjbG9zZShzdGRlcnIpOworLSAgICAgICAgZmkuZGVsZXRlRmlsZSgpOwor LSAgICAgICAgc3RkZXJyID0gZmlsZTsKKy0gICAgfQorLQorLXByaXZhdGU6CistICAgIEJhc2U6 OkZpbGVJbmZvIGZpOworLSAgICBGSUxFKiBmaWxlOworLX07CistfQorLQorIEd1aTo6R3VpTmF0 aXZlRXZlbnQ6Okd1aU5hdGl2ZUV2ZW50KEd1aTo6R1VJQXBwbGljYXRpb25OYXRpdmVFdmVudEF3 YXJlICphcHApCisgOiBHdWlBYnN0cmFjdE5hdGl2ZUV2ZW50KGFwcCkKKyB7CitAQCAtNzIsOCAr NDcsNiBAQCBHdWk6Okd1aU5hdGl2ZUV2ZW50Ojp+R3VpTmF0aXZlRXZlbnQoKQorIAorIHZvaWQg R3VpOjpHdWlOYXRpdmVFdmVudDo6aW5pdFNwYWNlYmFsbChRTWFpbldpbmRvdyAqd2luZG93KQor IHsKKy0gICAgLy8gdG1wLiByZWRpcmVjdCBzdGRlcnIgdG8gYSBmaWxlIHRvIHN1cHByZXNzIGFu IGVycm9yIG1lc3NhZ2UgZnJvbSBzcG5hdl9vcGVuKCkKKy0gICAgUmVkaXJlY3RTdGRFcnIgZXJy OworICAgICBRX1VOVVNFRCh3aW5kb3cpCisgICAgIGlmIChzcG5hdl9vcGVuKCkgPT0gLTEpIHsK KyAgICAgICAgIEJhc2U6OkNvbnNvbGUoKS5Mb2coIkNvdWxkbid0IGNvbm5lY3QgdG8gc3BhY2Vu YXYgZGFlbW9uLiBQbGVhc2UgaWdub3JlIGlmIHlvdSBkb24ndCBoYXZlIGEgc3BhY2Vtb3VzZS5c biIpOworLS0gCisyLjM3LjEKKwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mcmVlY2FkL3RlbXBsYXRl IGIvc3JjcGtncy9mcmVlY2FkL3RlbXBsYXRlCmluZGV4IDFlMmFlYzAyNGZkNy4uZTljNjk3YWRi ZTFhIDEwMDY0NAotLS0gYS9zcmNwa2dzL2ZyZWVjYWQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9m cmVlY2FkL3RlbXBsYXRlCkBAIC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZnJl ZWNhZCcKIHBrZ25hbWU9ZnJlZWNhZAotdmVyc2lvbj0wLjE5LjQKK3ZlcnNpb249MC4yMC4xCiBy ZXZpc2lvbj0xCiB3cmtzcmM9IkZyZWVDQUQtJHt2ZXJzaW9ufSIKIGJ1aWxkX3N0eWxlPWNtYWtl CkBAIC0yMywxMCArMjMsOSBAQCBtYWtlZGVwZW5kcz0icHl0aG9uMy1kZXZlbCBib29zdC1kZXZl bCBsaWJ4ZXJjZXMtYy1kZXZlbCB6bGliLWRldmVsIG9jY3QtZGV2ZWwKICBjb2luMy1kZXZlbCBs aWJzaGlib2tlbjItZGV2ZWwgbGlic3BuYXYtZGV2ZWwgcHlzaWRlMi10b29scwogIGxpYmx6NC1k ZXZlbCBsaWJweXNpZGUyLXB5dGhvbjMtZGV2ZWwgcHl0aG9uMy1tYXRwbG90bGliIG5ldGNkZi1k ZXZlbAogIGpzb25jcHAtZGV2ZWwgcXQ1LWRldmVsIHF0NS1zdmctZGV2ZWwgcXQ1LXRvb2xzLWRl dmVsIHF0NS13ZWJraXQtZGV2ZWwKLSBxdDUteG1scGF0dGVybnMtZGV2ZWwgY29pbjMtZG9jIGds ZXctZGV2ZWwiCisgcXQ1LXhtbHBhdHRlcm5zLWRldmVsIGNvaW4zLWRvYyBnbGV3LWRldmVsIHB5 dGhvbjMtcGl2eSIKIAotIyBGcmVlQ0FEIGhlbHA6IHF0NS9hc3Npc3RhbnQgd2l0aCBTUUxpdGUg c3RvcmFnZQotZGVwZW5kcz0icHl0aG9uMy1tYXRwbG90bGliIHB5dGhvbjMtcHlzaWRlMiBxdDUt cGx1Z2luLXNxbGl0ZSBweXRob24zLXBpdnkiCitkZXBlbmRzPSJweXRob24zLW1hdHBsb3RsaWIg cHl0aG9uMy1weXNpZGUyLXdlYmVuZ2luZSBweXRob24zLXBpdnkiCiAKIHB5dGhvbl92ZXJzaW9u PTMKIHB5Y29tcGlsZV9kaXJzPSJ1c3IvbGliLyR7cGtnbmFtZX0vTW9kIgpAQCAtMzYsNyArMzUs NyBAQCBtYWludGFpbmVyPSJ5b3BpdG8gPHBpZXJyZS5ib3VyZ2luQGZyZWUuZnI+IgogbGljZW5z ZT0iTEdQTC0yLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly9mcmVlY2Fkd2ViLm9yZy8i CiBkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9GcmVlQ0FEL0ZyZWVDQUQvYXJjaGl2ZS8k e3ZlcnNpb259LnRhci5neiIKLWNoZWNrc3VtPWU0MGExYzM0Mzk1NmUxM2M1NmNjODU3OGQwMjVh ZTgzZDY4ZDlkMjBhY2RhMTczMjk1M2JjOGEzODgzZTk3MjIKK2NoZWNrc3VtPTcwYzE1ZjdjMWM2 NzZlMzM3NmNkYzJhNjZjMTM2MDMwYzU1MDJmOTgwMjkzNWU1YjYyNmNhOGNlM2Y4ODEyZWQKIAog aWYgWyAiJFhCUFNfVEFSR0VUX0xJQkMiID0gbXVzbCBdOyB0aGVuCiAJbWFrZWRlcGVuZHMrPSIg bGliZXhlY2luZm8tZGV2ZWwiCg== --===============7173458539286940108==--