From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from inbox.vuxu.org (localhost [IPv6:::1]) by inbox.vuxu.org (OpenSMTPD) with ESMTP id a4dff8e1 for ; Fri, 3 Jan 2020 10:46:52 +0000 (UTC) Content-Type: multipart/mixed; boundary="===============8807625011524219588==" MIME-Version: 1.0 Subject: Re: [PR PATCH] [Updated] [WIP] qt5 update to 5.14.0 To: ml@inbox.vuxu.org From: voidlinux-github@inbox.vuxu.org Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Fri, 03 Jan 2020 11:46:52 +0100 Message-ID: <20200103104652.eZ5c1AgOLuGhlmoPe42pik215yPjsRDKcZQ4DyM701Q@z> GitHub notification mails are now in MIME to allow UTF8. --===============8807625011524219588== MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgSm9obm55bmF0b3IgYWdhaW5zdCBt YXN0ZXIgb24gdGhlIHZvaWQtcGFja2FnZXMgcmVwb3NpdG9yeQoKaHR0cHM6Ly9naXRodWIuY29t L0pvaG5ueW5hdG9yL3ZvaWQtcGFja2FnZXMgcXQ1LjE0Cmh0dHBzOi8vZ2l0aHViLmNvbS92b2lk LWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC8xNTMxMAoKW1dJUF0gcXQ1IHVwZGF0ZSB0byA1LjE0 LjAKIyBUZXN0ZWQgb24NCi0gWyBdIHg4Nl82NCAoY29tcGlsZWQgYW5kIHJ1bnRpbWUpDQotIFsg XSB4ODZfNjQtbXVzbCAoY29tcGlsZWQsIHdlYmVuZ2luZSBzZWVtcyB0byB3b3JrIGh0dHBzOi8v aS5pbWd1ci5jb20vMGpwT0JldC5wbmcgKHNlZ2ZhdWx0cyB3aXRoIHNuZGlvICg/KSBhbHNvIGN1 cnJlbnRseSB0cmllcyB0byBmZXRjaCByZXNvdXJjZXMgZnJvbSBgL3NoYXJlYCBpbnN0ZWFkIG9m IGAvdXNyL3NoYXJlYCwgbmVlZHMgdG8gYmUgZml4ZWQuKQ0KLSBbIF0gaTY4NiAoKQ0KLSBbIF0g YXJtdjdsLW11c2wNCi0gWyBdIGFybXY3bCANCi0gWyBdIGFybXY2bC1tdXNsDQotIFsgXSBhcm12 NmwgKGNvbXBpbGVkIHdpdGhvdXQgd2ViZW5naW5lKQ0KLSBbIF0gYWFyY2g2NC1tdXNsIChjb21w aWxlZCkNCi0gWyBdIGFhcmNoNjQNCi0gWyBdIHBwYzY0bGUNCi0gWyBdIHBwYzY0bGUtbXVzbA0K LSBbIF0gcHBjNjQNCi0gWyBdIHBwYzY0LW11c2wNCi0gWyBdIHBwYw0KLSBbIF0gcHBjLW11c2wN CiMgVE9ETzoNCg0KLSBmaXggY3Jvc3MgKGZvciBzb21lIHFtYWtlIHBhY2thZ2VzKQ0KLSByZWJh c2Ugd2ViZW5naW5lIHBwYyBwYXRjaGVzIEBxNjYgDQotIGAtbm8tZmVhdHVyZS1xZG9jYCBpbnN0 ZWFkIG9mIGN1c3RvbSBgcXR0b29scy9zcmMvc3JjLnByb2AgPw0KLSBmaXggd2ViZW5naW5lIGxv YWRpbmcgcmVzb3VyY2VzIGZyb20gYC9zaGFyZWAgaW5zdGVhZCBvZiBgL3Vzci9zaGFyZWANCg0K IyBCdWdzDQoNCi0gd2ViZW5naW5lIGN1cnJlbnRseSB0cmllcyB0byBmZXRjaCByZXNvdXJjZXMg ZnJvbSBgL3NoYXJlYCBpbnN0ZWFkIG9mIGAvdXNyL3NoYXJlDQotIFBsYXNtYXNoZWxsIHdheWxh bmQgb24gbXVzbCBjcmFzaGVzIHJlZ3VsYXJ5IAoKQSBwYXRjaCBmaWxlIGZyb20gaHR0cHM6Ly9n aXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzE1MzEwLnBhdGNoIGlzIGF0 dGFjaGVk --===============8807625011524219588== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-qt5.14-15310.patch" RnJvbSA3ZDc3MDA5ODZkYmUxYzk4MWRhN2VmOWYwNTNjZjkyNDc4Y2ZlMTA2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2huIDxqb2huekBwb3N0ZW8ubmV0PgpEYXRlOiBGcmksIDEx IE9jdCAyMDE5IDAwOjU5OjE4ICswMjAwClN1YmplY3Q6IFtQQVRDSCAxLzldIHF0NTogdXBkYXRl IHRvIDUuMTQuMAoKLS0tCiBjb21tb24vc2hsaWJzICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgIDMzICstCiBzcmNwa2dzL3txdDUtd2ViZW5naW5lID0+IHF0NS1iYXNlLWRvY3N9 ICAgICAgfCAgICAwCiBzcmNwa2dzL3F0NS1jb25jdXJyZW50ICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAxICsKIHNyY3BrZ3MvcXQ1LWNvcmUgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDEgKwogc3JjcGtncy9xdDUtZGJ1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAgMSArCiBzcmNwa2dzL3F0NS1ndWkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgICAxICsKIHNyY3BrZ3MvcXQ1LW5ldHdvcmsgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgIDEgKwogc3JjcGtncy9xdDUtb3BlbmdsICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgMSArCiBzcmNwa2dzL3F0NS1wcmludHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgfCAg ICAxICsKIHNyY3BrZ3MvcXQ1LXNxbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg IDEgKwogc3JjcGtncy9xdDUtdGVzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg MSArCiBzcmNwa2dzL3F0NS13aWRnZXRzICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAx ICsKIHNyY3BrZ3MvcXQ1LXhtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEg KwogLi4uLzAwOTAtaGFyZC1kaXNhYmxlLXFtbGNoYWNoZWdlbi5wYXRjaCAgICAgIHwgICAxMCAt CiBzcmNwa2dzL3F0NS9maWxlcy9xbWxjYWNoZWdlbi5wcm8gICAgICAgICAgICAgfCAgIDM4ICsK IHNyY3BrZ3MvcXQ1L2ZpbGVzL3FtbGltcG9ydHNjYW5uZXIucHJvICAgICAgICB8ICAgIDIgKwog c3JjcGtncy9xdDUvZmlsZXMvcW1sbGludC5wcm8gICAgICAgICAgICAgICAgIHwgICAxNyArLQog c3JjcGtncy9xdDUvZmlsZXMvcXR0b29sc19zcmMucHJvICAgICAgICAgICAgIHwgICAxOCArLQog c3JjcGtncy9xdDUvZmlsZXMvcmVzb2x2X2NvbXBhdC5oICAgICAgICAgICAgIHwgICAyOSAtCiBz cmNwa2dzL3F0NS9maWxlcy91aWMucHJvICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIHNy Y3BrZ3MvcXQ1L2ZpbGVzL3VpdG9vbHMucHJvICAgICAgICAgICAgICAgICB8ICAgMTUgKwogLi4u dGUtaW5zdGVhZC1vZi1fbGliY19mcHN0YXRlLW9uLWxpbnV4LnBhdGNoIHwgICA0MiAtCiAuLi5y ZWcuaC10by1nZXQtX19XT1JEU0laRS1vbi1tdXNsLWxpYmMucGF0Y2ggfCAgIDI2IC0KIC4uLi9w YXRjaGVzLzAwMDQtbXVzbC1kaXNwYXRjaC10by1tdXNsLnBhdGNoICB8ICAxMDMgLQogLi4uL3F0 NS9wYXRjaGVzLzAwMDgtbXVzbC1uby1tYWxsaW5mby5wYXRjaCAgIHwgICA0MCAtCiBzcmNwa2dz L3F0NS9wYXRjaGVzLzAwMDktbXVzbC1vZmZfdC5wYXRjaCAgICAgfCAgIDEwIC0KIC4uLi9xdDUv cGF0Y2hlcy8wMDEwLW11c2wtcHJlYWQtcHdyaXRlLnBhdGNoICB8ICAgMTggLQogLi4uL3BhdGNo ZXMvMDAxMS1tdXNsLXJlcGxhY2UtcHZhbGxvYy5wYXRjaCAgIHwgICAxNCAtCiBzcmNwa2dzL3F0 NS9wYXRjaGVzLzAwMTItbXVzbC1yZXNvbHZlLnBhdGNoICAgfCAgIDI2IC0KIHNyY3BrZ3MvcXQ1 L3BhdGNoZXMvMDAxNS1tdXNsLXNpZ2luZm9fdC5wYXRjaCB8ICAgMTggLQogLi4uL3F0NS9wYXRj aGVzLzAwMTctbXVzbC1zdGFja3N0YXJ0LnBhdGNoICAgIHwgICAyMCAtCiBzcmNwa2dzL3F0NS9w YXRjaGVzLzAwMjAtbXVzbC1zYW5kYm94LnBhdGNoICAgfCAgIDcxIC0KIC4uLi9xdDUvcGF0Y2hl cy8wMDIzLWVuYWJsZV90b29scy1jcm9zcy5wYXRjaCB8ICAgNDYgLQogLi4uMDAyNS1tdXNsLWNo cm9taXVtLWRlZmF1bHQtc3RhY2tzaXplLnBhdGNoIHwgICAxNSAtCiBzcmNwa2dzL3F0NS9wYXRj aGVzLzAwMjYtZGF0YV9wYWNrLWJlLnBhdGNoICAgfCAgIDE1IC0KIC4uLi9xdDUvcGF0Y2hlcy8w MDI3LXJlbW92ZS1nbGliYy1jaGVjay5wYXRjaCB8ICAgMTMgLQogLi4uLzAwMzItbXVzbC1jcm9z cy1uby1hc21fcHRyYWNlX2gucGF0Y2ggICAgIHwgICAzMCAtCiBzcmNwa2dzL3F0NS9wYXRjaGVz LzAwNDAteWFzbS1ubHMucGF0Y2ggICAgICAgfCAgIDEzIC0KIC4uLi8wMDQyLWFybS12b2lkLWlz LW5vdC1hbmRyb2lkLnBhdGNoICAgICAgICB8ICAgMjEgLQogLi4uL3F0NS9wYXRjaGVzLzAwNDQt cXQtbXVzbC1leGVjaW5mby5wYXRjaCAgIHwgIDEwNyAtCiAuLi4vMDA0NS1xdC1tdXNsLXRocmVh ZC1zdGFja3NpemUucGF0Y2ggICAgICAgfCAgIDI2IC0KIC4uLi9xdDUvcGF0Y2hlcy8wMDQ2LXNh bmRib3gtbWVtYmFycmllci5wYXRjaCB8ICAgNjAgLQogLi4uL3F0NS9wYXRjaGVzLzAwNDctZ24t Y3Jvc3Mtc3lzcm9vdC5wYXRjaCAgIHwgICAyNCAtCiBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwNTAt cW1ha2UtbWtzcGVjcy5wYXRjaCAgfCAgIDMzICsKIC4uLi9xdDUvcGF0Y2hlcy8wMDg5LXdlYmVu Z2luZS1wcGM2NC5wYXRjaCAgICB8ICAgMjAgLQogLi4uL3F0NS9wYXRjaGVzLzAwOTAtY2hyb21p dW0tcHBjNjRsZS5wYXRjaCAgIHwgNDI2NyAtLS0tLS0tLS0tLS0tLS0tLQogLi4uL3BhdGNoZXMv MDA5MS1jaHJvbWl1bS1wcGM2NC1tdXNsLnBhdGNoICAgIHwgIDE0MSAtCiAuLi4vcXQ1L3BhdGNo ZXMvMDA5Mi1jaHJvbWl1bS1wcGM2NC1iZS5wYXRjaCAgfCAyOTcwIC0tLS0tLS0tLS0tLQogLi4u L3F0NS9wYXRjaGVzLzAwOTMtY2hyb21pdW0tdjgtZWxmdjIucGF0Y2ggIHwgICA0MyAtCiAuLi4v MDA5NC1iaWctZW5kaWFuLXNraWEtcG9ydGFibGUucGF0Y2ggICAgICAgfCAgIDE3IC0KIC4uLi9w YXRjaGVzLzAxMDAtc2FuZGJveC1zY2hlZF9nZXRwYXJhbS5wYXRjaCB8ICAgMjQgLQogLi4uLzAx MDAtd2F5bGFuZC1jdXJzb3ItZmxpY2tlcmluZy5wYXRjaCAgICAgIHwgIDEyMiArCiBzcmNwa2dz L3F0NS90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMzQwICstCiA1MyBmaWxl cyBjaGFuZ2VkLCA0MTAgaW5zZXJ0aW9ucygrKSwgODQ5OSBkZWxldGlvbnMoLSkKIHJlbmFtZSBz cmNwa2dzL3txdDUtd2ViZW5naW5lID0+IHF0NS1iYXNlLWRvY3N9ICgxMDAlKQogY3JlYXRlIG1v ZGUgMTIwMDAwIHNyY3BrZ3MvcXQ1LWNvbmN1cnJlbnQKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNw a2dzL3F0NS1jb3JlCiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9xdDUtZGJ1cwogY3JlYXRl IG1vZGUgMTIwMDAwIHNyY3BrZ3MvcXQ1LWd1aQogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3Mv cXQ1LW5ldHdvcmsKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL3F0NS1vcGVuZ2wKIGNyZWF0 ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL3F0NS1wcmludHN1cHBvcnQKIGNyZWF0ZSBtb2RlIDEyMDAw MCBzcmNwa2dzL3F0NS1zcWwKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL3F0NS10ZXN0CiBj cmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9xdDUtd2lkZ2V0cwogY3JlYXRlIG1vZGUgMTIwMDAw IHNyY3BrZ3MvcXQ1LXhtbAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L2ZpbGVzLzAw OTAtaGFyZC1kaXNhYmxlLXFtbGNoYWNoZWdlbi5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Y3BrZ3MvcXQ1L2ZpbGVzL3FtbGNhY2hlZ2VuLnBybwogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvcXQ1L2ZpbGVzL3Jlc29sdl9jb21wYXQuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv cXQ1L2ZpbGVzL3VpdG9vbHMucHJvCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvcGF0 Y2hlcy8wMDAyLVVzZS1fZnBzdGF0ZS1pbnN0ZWFkLW9mLV9saWJjX2Zwc3RhdGUtb24tbGludXgu cGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwMDMtaW5jbHVk ZS1zeXMtcmVnLmgtdG8tZ2V0LV9fV09SRFNJWkUtb24tbXVzbC1saWJjLnBhdGNoCiBkZWxldGUg bW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDA0LW11c2wtZGlzcGF0Y2gtdG8tbXVz bC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAwOC1tdXNs LW5vLW1hbGxpbmZvLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hl cy8wMDA5LW11c2wtb2ZmX3QucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9w YXRjaGVzLzAwMTAtbXVzbC1wcmVhZC1wd3JpdGUucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL3F0NS9wYXRjaGVzLzAwMTEtbXVzbC1yZXBsYWNlLXB2YWxsb2MucGF0Y2gKIGRlbGV0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwMTItbXVzbC1yZXNvbHZlLnBhdGNo CiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDE1LW11c2wtc2lnaW5m b190LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDE3LW11 c2wtc3RhY2tzdGFydC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNo ZXMvMDAyMC1tdXNsLXNhbmRib3gucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0 NS9wYXRjaGVzLzAwMjMtZW5hYmxlX3Rvb2xzLWNyb3NzLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2 NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDI1LW11c2wtY2hyb21pdW0tZGVmYXVsdC1zdGFja3Np emUucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwMjYtZGF0 YV9wYWNrLWJlLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy8w MDI3LXJlbW92ZS1nbGliYy1jaGVjay5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv cXQ1L3BhdGNoZXMvMDAzMi1tdXNsLWNyb3NzLW5vLWFzbV9wdHJhY2VfaC5wYXRjaAogZGVsZXRl IG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0MC15YXNtLW5scy5wYXRjaAogZGVs ZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0Mi1hcm0tdm9pZC1pcy1ub3Qt YW5kcm9pZC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0 NC1xdC1tdXNsLWV4ZWNpbmZvLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUv cGF0Y2hlcy8wMDQ1LXF0LW11c2wtdGhyZWFkLXN0YWNrc2l6ZS5wYXRjaAogZGVsZXRlIG1vZGUg MTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0Ni1zYW5kYm94LW1lbWJhcnJpZXIucGF0Y2gK IGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDctZ24tY3Jvc3Mtc3lz cm9vdC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA1MC1x bWFrZS1ta3NwZWNzLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hl cy8wMDg5LXdlYmVuZ2luZS1wcGM2NC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv cXQ1L3BhdGNoZXMvMDA5MC1jaHJvbWl1bS1wcGM2NGxlLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2 NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDkxLWNocm9taXVtLXBwYzY0LW11c2wucGF0Y2gKIGRl bGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwOTItY2hyb21pdW0tcHBjNjQt YmUucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwOTMtY2hy b21pdW0tdjgtZWxmdjIucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRj aGVzLzAwOTQtYmlnLWVuZGlhbi1za2lhLXBvcnRhYmxlLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2 NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy8wMTAwLXNhbmRib3gtc2NoZWRfZ2V0cGFyYW0ucGF0Y2gK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAxMDAtd2F5bGFuZC1jdXJz b3ItZmxpY2tlcmluZy5wYXRjaAoKZGlmZiAtLWdpdCBhL2NvbW1vbi9zaGxpYnMgYi9jb21tb24v c2hsaWJzCmluZGV4IDYxMWFiYzg4YjEyLi5hNTExYjJlMjNmZSAxMDA2NDQKLS0tIGEvY29tbW9u L3NobGlicworKysgYi9jb21tb24vc2hsaWJzCkBAIC0xODg0LDYgKzE4ODQsNyBAQCBsaWJRdDUz RFF1aWNrU2NlbmUyRC5zby41IHF0NS0zZC01LjEwLjFfMQogbGliUXQ1M0RFeHRyYXMuc28uNSBx dDUtM2QtNS42LjBfMQogbGliUXQ1M0RRdWlja0V4dHJhcy5zby41IHF0NS0zZC01LjYuMF8xCiBs aWJRdDUzRFF1aWNrQW5pbWF0aW9uLnNvLjUgcXQ1LTNkLTUuMTAuMV8xCitsaWJRdDUzRFF1aWNr SW5wdXQuc28uNSBxdDUtM2QtNS4xMy4wXzEKIGxpYlF0NUNoYXJ0cy5zby41IHF0NS1jaGFydHMt NS43LjFfMQogbGliUXQ1RGF0YVZpc3VhbGl6YXRpb24uc28uNSBxdDUtZGF0YXZpczNkLTUuNy4x XzEKIGxpYlF0NUdhbWVwYWQuc28uNSBxdDUtZ2FtZXBhZC01LjcuMV8xCkBAIC0xODk2LDYgKzE4 OTcsOCBAQCBsaWJRdDVRdWlja1Rlc3Quc28uNSBxdDUtZGVjbGFyYXRpdmUtNS42LjBfMQogbGli UXQ1UXVpY2tXaWRnZXRzLnNvLjUgcXQ1LWRlY2xhcmF0aXZlLTUuNi4wXzEKIGxpYlF0NVF1aWNr UGFydGljbGVzLnNvLjUgcXQ1LWRlY2xhcmF0aXZlLTUuNi4wXzEKIGxpYlF0NVF1aWNrU2hhcGVz LnNvLjUgcXQ1LWRlY2xhcmF0aXZlLTUuMTIuMV8xCitsaWJRdDVRbWxNb2RlbHMuc28uNSBxdDUt ZGVjbGFyYXRpdmUtNS4xNC4wXzEKK2xpYlF0NVFtbFdvcmtlclNjcmlwdC5zby41IHF0NS1kZWNs YXJhdGl2ZS01LjE0LjBfMQogbGliUXQ1UXVpY2tDb250cm9sczIuc28uNSBxdDUtcXVpY2tjb250 cm9sczItNS43LjFfMQogbGliUXQ1UXVpY2tUZW1wbGF0ZXMyLnNvLjUgcXQ1LXF1aWNrY29udHJv bHMyLTUuNy4xXzEKIGxpYlF0NVBvc2l0aW9uaW5nLnNvLjUgcXQ1LWxvY2F0aW9uLTUuNi4wXzEK QEAgLTE5MzIsMjEgKzE5MzUsMjEgQEAgbGliUXQ1V2ViRW5naW5lV2lkZ2V0cy5zby41IHF0NS13 ZWJlbmdpbmUtNS42LjBfMQogbGliUXQ1V2ViU29ja2V0cy5zby41IHF0NS13ZWJzb2NrZXRzLTUu Ni4wXzEKIGxpYlF0NVgxMUV4dHJhcy5zby41IHF0NS14MTFleHRyYXMtNS42LjBfMQogbGliUXQ1 WG1sUGF0dGVybnMuc28uNSBxdDUteG1scGF0dGVybnMtNS42LjBfMQotbGliUXQ1Q29yZS5zby41 IHF0NS01LjYuMF8xCi1saWJRdDVFZ2xGU0RldmljZUludGVncmF0aW9uLnNvLjUgcXQ1LTUuOC4w XzEKLWxpYlF0NU5ldHdvcmsuc28uNSBxdDUtNS42LjBfMQotbGliUXQ1U3FsLnNvLjUgcXQ1LTUu Ni4wXzEKLWxpYlF0NVhtbC5zby41IHF0NS01LjYuMF8xCi1saWJRdDVHdWkuc28uNSBxdDUtNS42 LjBfMQotbGliUXQ1V2lkZ2V0cy5zby41IHF0NS01LjYuMF8xCi1saWJRdDVUZXN0LnNvLjUgcXQ1 LTUuNi4wXzEKLWxpYlF0NURCdXMuc28uNSBxdDUtNS42LjBfMQotbGliUXQ1Q29uY3VycmVudC5z by41IHF0NS01LjYuMF8xCi1saWJRdDVPcGVuR0wuc28uNSBxdDUtNS42LjBfMQotbGliUXQ1UHJp bnRTdXBwb3J0LnNvLjUgcXQ1LTUuNi4wXzEKLWxpYlF0NVhjYlFwYS5zby41IHF0NS01LjYuMF8x Ci1saWJRdDVFZ2xEZXZpY2VJbnRlZ3JhdGlvbi5zby41IHF0NS01LjYuMF8xCi1saWJRdDVFZ2xG c0ttc1N1cHBvcnQuc28uNSBxdDUtNS43LjFfMQorbGliUXQ1Q29yZS5zby41IHF0NS1jb3JlLTUu MTQuMF8xCitsaWJRdDVFZ2xGU0RldmljZUludGVncmF0aW9uLnNvLjUgcXQ1LWd1aS01LjE0LjBf MQorbGliUXQ1TmV0d29yay5zby41IHF0NS1uZXR3b3JrLTUuMTQuMF8xCitsaWJRdDVTcWwuc28u NSBxdDUtc3FsLTUuMTQuMF8xCitsaWJRdDVYbWwuc28uNSBxdDUteG1sLTUuMTQuMF8xCitsaWJR dDVHdWkuc28uNSBxdDUtZ3VpLTUuMTQuMF8xCitsaWJRdDVXaWRnZXRzLnNvLjUgcXQ1LXdpZGdl dHMtNS4xNC4wXzEKK2xpYlF0NVRlc3Quc28uNSBxdDUtdGVzdC01LjE0LjBfMQorbGliUXQ1REJ1 cy5zby41IHF0NS1kYnVzLTUuMTQuMF8xCitsaWJRdDVDb25jdXJyZW50LnNvLjUgcXQ1LWNvbmN1 cnJlbnQtNS4xNC4wXzEKK2xpYlF0NU9wZW5HTC5zby41IHF0NS1vcGVuZ2wtNS4xNC4wXzEKK2xp YlF0NVByaW50U3VwcG9ydC5zby41IHF0NS1wcmludHN1cHBvcnQtNS4xNC4wXzEKK2xpYlF0NVhj YlFwYS5zby41IHF0NS1ndWktNS4xNC4wXzEKK2xpYlF0NUVnbERldmljZUludGVncmF0aW9uLnNv LjUgcXQ1LWd1aS01LjE0LjBfMQorbGliUXQ1RWdsRnNLbXNTdXBwb3J0LnNvLjUgcXQ1LWd1aS01 LjE0LjBfMQogbGliUXQ1V2ViS2l0LnNvLjUgcXQ1LXdlYmtpdC01LjYuMF8xCiBsaWJRdDVXZWJL aXRXaWRnZXRzLnNvLjUgcXQ1LXdlYmtpdC01LjYuMF8xCiBsaWJRdDVUZXh0VG9TcGVlY2guc28u NSBxdDUtc3BlZWNoLTUuOC4wXzEKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZSBi L3NyY3BrZ3MvcXQ1LWJhc2UtZG9jcwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20g c3JjcGtncy9xdDUtd2ViZW5naW5lCnJlbmFtZSB0byBzcmNwa2dzL3F0NS1iYXNlLWRvY3MKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LWNvbmN1cnJlbnQgYi9zcmNwa2dzL3F0NS1jb25jdXJyZW50 Cm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwLi43NTc5M2ViNjY2NAotLS0g L2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1LWNvbmN1cnJlbnQKQEAgLTAsMCArMSBAQAorcXQ1 ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtY29y ZSBiL3NyY3BrZ3MvcXQ1LWNvcmUKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAw MDAuLjc1NzkzZWI2NjY0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtY29yZQpAQCAt MCwwICsxIEBACitxdDUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9z cmNwa2dzL3F0NS1kYnVzIGIvc3JjcGtncy9xdDUtZGJ1cwpuZXcgZmlsZSBtb2RlIDEyMDAwMApp bmRleCAwMDAwMDAwMDAwMC4uNzU3OTNlYjY2NjQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dz L3F0NS1kYnVzCkBAIC0wLDAgKzEgQEAKK3F0NQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LWd1aSBiL3NyY3BrZ3MvcXQ1LWd1aQpuZXcgZmlsZSBt b2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMC4uNzU3OTNlYjY2NjQKLS0tIC9kZXYvbnVsbAor KysgYi9zcmNwa2dzL3F0NS1ndWkKQEAgLTAsMCArMSBAQAorcXQ1ClwgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtbmV0d29yayBiL3NyY3BrZ3MvcXQ1 LW5ldHdvcmsKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAuLjc1NzkzZWI2 NjY0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtbmV0d29yawpAQCAtMCwwICsxIEBA CitxdDUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0 NS1vcGVuZ2wgYi9zcmNwa2dzL3F0NS1vcGVuZ2wKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXgg MDAwMDAwMDAwMDAuLjc1NzkzZWI2NjY0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUt b3BlbmdsCkBAIC0wLDAgKzEgQEAKK3F0NQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXByaW50c3VwcG9ydCBiL3NyY3BrZ3MvcXQ1LXByaW50c3Vw cG9ydApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMC4uNzU3OTNlYjY2NjQK LS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS1wcmludHN1cHBvcnQKQEAgLTAsMCArMSBA QAorcXQ1ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9x dDUtc3FsIGIvc3JjcGtncy9xdDUtc3FsCm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAw MDAwMDAwLi43NTc5M2ViNjY2NAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1LXNxbApA QCAtMCwwICsxIEBACitxdDUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg YS9zcmNwa2dzL3F0NS10ZXN0IGIvc3JjcGtncy9xdDUtdGVzdApuZXcgZmlsZSBtb2RlIDEyMDAw MAppbmRleCAwMDAwMDAwMDAwMC4uNzU3OTNlYjY2NjQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNw a2dzL3F0NS10ZXN0CkBAIC0wLDAgKzEgQEAKK3F0NQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp bGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdpZGdldHMgYi9zcmNwa2dzL3F0NS13aWRnZXRz Cm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwLi43NTc5M2ViNjY2NAotLS0g L2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1LXdpZGdldHMKQEAgLTAsMCArMSBAQAorcXQ1Clwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUteG1sIGIv c3JjcGtncy9xdDUteG1sCm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwLi43 NTc5M2ViNjY2NAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1LXhtbApAQCAtMCwwICsx IEBACitxdDUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dz L3F0NS9maWxlcy8wMDkwLWhhcmQtZGlzYWJsZS1xbWxjaGFjaGVnZW4ucGF0Y2ggYi9zcmNwa2dz L3F0NS9maWxlcy8wMDkwLWhhcmQtZGlzYWJsZS1xbWxjaGFjaGVnZW4ucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlY2RmYjMwZjViLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNw a2dzL3F0NS9maWxlcy8wMDkwLWhhcmQtZGlzYWJsZS1xbWxjaGFjaGVnZW4ucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi0tLS0gcXRkZWNsYXJhdGl2ZS90b29scy90b29scy5w cm8JMjAxOS0wNC0wOSAwMTowMTowNy4wMDAwMDAwMDAgKzAyMDAKLSsrKyAtCTIwMTktMDQtMjEg MDA6MjQ6MTYuMTkyOTY2MzQ1ICswMjAwCi1AQCAtNyw3ICs3LDYgQEAKLSAgICAgICAgIHFtbG1p biBcCi0gICAgICAgICBxbWxpbXBvcnRzY2FubmVyCi0gCi0tICAgIHF0Q29uZmlnKGNvbW1hbmRs aW5lcGFyc2VyKTpxdENvbmZpZyh4bWxzdHJlYW13cml0ZXIpOiBTVUJESVJTICs9IHFtbGNhY2hl Z2VuCi0gfQotIAotIHF0Q29uZmlnKHRocmVhZCk6IWFuZHJvaWR8YW5kcm9pZF9hcHA6IXdhc20g ewpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvZmlsZXMvcW1sY2FjaGVnZW4ucHJvIGIvc3JjcGtn cy9xdDUvZmlsZXMvcW1sY2FjaGVnZW4ucHJvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi5iNTk2M2JlY2Q2YwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1L2Zp bGVzL3FtbGNhY2hlZ2VuLnBybwpAQCAtMCwwICsxLDM4IEBACitRVCA9IGNvcmUgcW1sIHFtbGRl dnRvb2xzLXByaXZhdGUKK0RFRklORVMgKz0gUVRfTk9fQ0FTVF9UT19BU0NJSSBRVF9OT19DQVNU X0ZST01fQVNDSUkKKworU09VUkNFUyA9IHFtbGNhY2hlZ2VuLmNwcCBcCisgICAgcmVzb3VyY2Vm aWx0ZXIuY3BwIFwKKyAgICBnZW5lcmF0ZWxvYWRlci5jcHAKK1RBUkdFVCA9IHFtbGNhY2hlZ2Vu CisKK2luY2x1ZGUoLi4vc2hhcmVkL3NoYXJlZC5wcmkpCisKK2J1aWxkX2ludGVncmF0aW9uLmZp bGVzID0gcW1sY2FjaGUucHJmIHF0cXVpY2tjb21waWxlci5wcmYKK2J1aWxkX2ludGVncmF0aW9u LnBhdGggPSAkJFtRVF9IT1NUX0RBVEFdL21rc3BlY3MvZmVhdHVyZXMKK3ByZWZpeF9idWlsZDog SU5TVEFMTFMgKz0gYnVpbGRfaW50ZWdyYXRpb24KK2Vsc2U6IENPUElFUyArPSBidWlsZF9pbnRl Z3JhdGlvbgorCitsb2FkKGNtYWtlX2Z1bmN0aW9ucykKKworQ01BS0VfQklOX0RJUiA9ICQkY21h a2VSZWxhdGl2ZVBhdGgoJCRbUVRfSE9TVF9CSU5TXSwgJCRbUVRfSU5TVEFMTF9QUkVGSVhdKQor Y29udGFpbnMoQ01BS0VfQklOX0RJUiwgIl5cXC5cXC4vLioiKSB7CisgICAgQ01BS0VfQklOX0RJ UiA9ICQkW1FUX0hPU1RfQklOU10vCisgICAgQ01BS0VfQklOX0RJUl9JU19BQlNPTFVURSA9IFRy dWUKK30KKworbG9hZChxdF9idWlsZF9wYXRocykKKworZXF1YWxzKFFNQUtFX0hPU1Qub3MsIFdp bmRvd3MpOiBDTUFLRV9CSU5fU1VGRklYID0gIi5leGUiCitjbWFrZV9jb25maWdfZmlsZS5pbnB1 dCA9ICQkUFdEL1F0NVF1aWNrQ29tcGlsZXJDb25maWcuY21ha2UuaW4KK2NtYWtlX2NvbmZpZ19m aWxlLm91dHB1dCA9ICQkTU9EVUxFX0JBU0VfT1VURElSL2xpYi9jbWFrZS9RdDVRdWlja0NvbXBp bGVyL1F0NVF1aWNrQ29tcGlsZXJDb25maWcuY21ha2UKK1FNQUtFX1NVQlNUSVRVVEVTICs9IGNt YWtlX2NvbmZpZ19maWxlCisKK2NtYWtlX2J1aWxkX2ludGVncmF0aW9uLmZpbGVzID0gJCRjbWFr ZV9jb25maWdfZmlsZS5vdXRwdXQKK2NtYWtlX2J1aWxkX2ludGVncmF0aW9uLnBhdGggPSAkJFtR VF9JTlNUQUxMX0xJQlNdL2NtYWtlL1F0NVF1aWNrQ29tcGlsZXIKK3ByZWZpeF9idWlsZDogSU5T VEFMTFMgKz0gY21ha2VfYnVpbGRfaW50ZWdyYXRpb24KK2Vsc2U6IENPUElFUyArPSBjbWFrZV9i dWlsZF9pbnRlZ3JhdGlvbgorCitRTUFLRV9UQVJHRVRfREVTQ1JJUFRJT04gPSBRTUwgQ2FjaGUg R2VuZXJhdG9yCisKK2xvYWQocXRfdG9vbCkKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L2ZpbGVz L3FtbGltcG9ydHNjYW5uZXIucHJvIGIvc3JjcGtncy9xdDUvZmlsZXMvcW1saW1wb3J0c2Nhbm5l ci5wcm8KaW5kZXggNTdjMjI4Yjg1NDAuLmFiMWU4NTEyOTNhIDEwMDY0NAotLS0gYS9zcmNwa2dz L3F0NS9maWxlcy9xbWxpbXBvcnRzY2FubmVyLnBybworKysgYi9zcmNwa2dzL3F0NS9maWxlcy9x bWxpbXBvcnRzY2FubmVyLnBybwpAQCAtMyw2ICszLDggQEAgREVGSU5FUyArPSBRVF9OT19DQVNU X1RPX0FTQ0lJIFFUX05PX0NBU1RfRlJPTV9BU0NJSQogCiBTT1VSQ0VTICs9IG1haW4uY3BwIC4u Ly4uL3NyYy9xbWwvcXFtbGpzZ3JhbW1hci5jcHAKIAoraW5jbHVkZSguLi9zaGFyZWQvc2hhcmVk LnByaSkKKwogUU1BS0VfVEFSR0VUX0RFU0NSSVBUSU9OID0gUU1MIEltcG9ydCBTY2FubmVyCiAK IGxvYWQocXRfdG9vbCkKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L2ZpbGVzL3FtbGxpbnQucHJv IGIvc3JjcGtncy9xdDUvZmlsZXMvcW1sbGludC5wcm8KaW5kZXggNDA5YTM3OGJmY2IuLjhjYTYw MGMyMGVjIDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS9maWxlcy9xbWxsaW50LnBybworKysgYi9z cmNwa2dzL3F0NS9maWxlcy9xbWxsaW50LnBybwpAQCAtMSw3ICsxLDIyIEBACiBRVCA9IGNvcmUg cW1sIHFtbGRldnRvb2xzLXByaXZhdGUKIAotU09VUkNFUyArPSBtYWluLmNwcCAuLi8uLi9zcmMv cW1sL3FxbWxqc2dyYW1tYXIuY3BwCitTT1VSQ0VTICs9IG1haW4uY3BwIFwKKyAgICBjb21wb25l bnR2ZXJzaW9uLmNwcCBcCisgICAgZmFrZW1ldGFvYmplY3QuY3BwIFwKKyAgICBmaW5kdW5xdWFs aWZpZWQuY3BwIFwKKyAgICBxbWxqc3R5cGVkZXNjcmlwdGlvbnJlYWRlci5jcHAgXAorICAgIHFj b2xvcm91dHB1dC5jcHAgXAorICAgIHNjb3BldHJlZS5jcHAgXAorICAgIC4uLy4uL3NyYy9xbWwv cXFtbGpzZ3JhbW1hci5jcHAKIAogUU1BS0VfVEFSR0VUX0RFU0NSSVBUSU9OID0gUU1MIFN5bnRh eCBWZXJpZmllcgogCiBsb2FkKHF0X3Rvb2wpCisKK0hFQURFUlMgKz0gXAorICAgIGNvbXBvbmVu dHZlcnNpb24uaCBcCisgICAgZmFrZW1ldGFvYmplY3QuaCBcCisgICAgZmluZHVucXVhbGlmaWVk LmggXAorICAgIHFtbGpzdHlwZWRlc2NyaXB0aW9ucmVhZGVyLmggXAorICAgIHFjb2xvcm91dHB1 dF9wLmggXAorICAgIHNjb3BldHJlZS5oCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9maWxlcy9x dHRvb2xzX3NyYy5wcm8gYi9zcmNwa2dzL3F0NS9maWxlcy9xdHRvb2xzX3NyYy5wcm8KaW5kZXgg YzczNDQ0MDRjMDUuLmEzODdhOTkwMTY3IDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS9maWxlcy9x dHRvb2xzX3NyYy5wcm8KKysrIGIvc3JjcGtncy9xdDUvZmlsZXMvcXR0b29sc19zcmMucHJvCkBA IC0xLDUgKzEsNiBAQAogVEVNUExBVEUgPSBzdWJkaXJzCiAKK1FUX0ZPUl9DT05GSUcgKz0gd2lk Z2V0cwogU1VCRElSUyA9IGFzc2lzdGFudCBcCiAJcGl4ZWx0b29sIFwKIAlkZXNpZ25lciBcCkBA IC04LDM0ICs5LDMxIEBAIFNVQkRJUlMgPSBhc3Npc3RhbnQgXAogCXF0YXR0cmlidXRpb25zc2Nh bm5lcgogCiBsaW5ndWlzdC5kZXBlbmRzID0gZGVzaWduZXIKK3F0SGF2ZU1vZHVsZShxdWljayk6 cXRDb25maWcodGhyZWFkKTpxdENvbmZpZyh0b29sYnV0dG9uKTogU1VCRElSUyArPSBkaXN0YW5j ZWZpZWxkZ2VuZXJhdG9yCisKIAogcXRDb25maWcobGlicmFyeSkgewogICAgICFhbmRyb2lkfGFu ZHJvaWRfYXBwOiBTVUJESVJTICs9IHF0cGx1Z2luaW5mbwogfQogCi1pZighYW5kcm9pZHxhbmRy b2lkX2FwcCk6IXVpa2l0OiBTVUJESVJTICs9IHF0cGF0aHMKKyFhbmRyb2lkfGFuZHJvaWRfYXBw OiBTVUJESVJTICs9IHF0cGF0aHMKIAotbWFjIHsKK21hY29zIHsKICAgICBTVUJESVJTICs9IG1h Y2RlcGxveXF0CiB9CiAKLWFuZHJvaWQgewotICAgIFNVQkRJUlMgKz0gYW5kcm9pZGRlcGxveXF0 Ci19Ci0KIHdpbjMyfHdpbnJ0OlNVQkRJUlMgKz0gd2luZGVwbG95cXQKIHdpbnJ0OlNVQkRJUlMg Kz0gd2lucnRydW5uZXIKLXF0SGF2ZU1vZHVsZShndWkpOiFhbmRyb2lkOiF1aWtpdDohcW54OiF3 aW5ydDogU1VCRElSUyArPSBxdGRpYWcKK3F0SGF2ZU1vZHVsZShndWkpOiF3YXNtOiFhbmRyb2lk OiF1aWtpdDohcW54OiF3aW5ydDogU1VCRElSUyArPSBxdGRpYWcKIAogcXROb21ha2VUb29scygg XAotICAgIG1hY2RlcGxveXF0IFwKKyAgICBkaXN0YW5jZWZpZWxkZ2VuZXJhdG9yIFwKKyAgICBw aXhlbHRvb2wgXAogKQogCiAjIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGF2b2lkIGEgcmFjZSBjb25k aXRpb24gYmV0d2VlbiB0b29sY2hhaW4ucHJmCiAjIGludm9jYXRpb25zIGluIGEgbW9kdWxlLWJ5 LW1vZHVsZSBjcm9zcy1idWlsZC4KIGNyb3NzX2NvbXBpbGU6aXNFbXB0eShRTUFLRV9IT1NUX0NY WC5JTkNESVJTKSB7Ci0gICAgYW5kcm9pZGRlcGxveXF0LmRlcGVuZHMgKz0gcXRhdHRyaWJ1dGlv bnNzY2FubmVyCi0gICAgcWRvYy5kZXBlbmRzICs9IHF0YXR0cmlidXRpb25zc2Nhbm5lcgogICAg IHdpbmRlcGxveXF0LmRlcGVuZHMgKz0gcXRhdHRyaWJ1dGlvbnNzY2FubmVyCiAgICAgd2lucnRy dW5uZXIuZGVwZW5kcyArPSBxdGF0dHJpYnV0aW9uc3NjYW5uZXIKICAgICBsaW5ndWlzdC5kZXBl bmRzICs9IHF0YXR0cmlidXRpb25zc2Nhbm5lcgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvZmls ZXMvcmVzb2x2X2NvbXBhdC5oIGIvc3JjcGtncy9xdDUvZmlsZXMvcmVzb2x2X2NvbXBhdC5oCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjBlODUyYTE5ZC4uMDAwMDAwMDAwMDAKLS0t IGEvc3JjcGtncy9xdDUvZmlsZXMvcmVzb2x2X2NvbXBhdC5oCisrKyAvZGV2L251bGwKQEAgLTEs MjkgKzAsMCBAQAotI2lmICFkZWZpbmVkKF9fR0xJQkNfXykKLS8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK LSAqIHJlc29sdl9jb21wYXQuaAotICoKLSAqIE1pbWljayBHTElCQydzIHJlc19uaW5pdCgpIGFu ZCByZXNfbmNsb3NlKCkgZm9yIG11c2wgbGliYwotICogTm90ZTogcmVzX2luaXQoKSBpcyBhY3R1 YWxseSBkZXByZWNhdGVkIGFjY29yZGluZyB0bwotICogaHR0cDovL2RvY3Mub3JhY2xlLmNvbS9j ZC9FMzY3ODRfMDEvaHRtbC9FMzY4NzUvcmVzLW5jbG9zZS0zcmVzb2x2Lmh0bWwKLSAqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotc3RhdGljIGlubGluZSBpbnQgcmVz X25pbml0KHJlc19zdGF0ZSBzdGF0cCkKLXsKLQlpbnQgcmMgPSByZXNfaW5pdCgpOwotCWlmIChz dGF0cCAhPSAmX3JlcykgewotCQltZW1jcHkoc3RhdHAsICZfcmVzLCBzaXplb2YoKnN0YXRwKSk7 Ci0JfQotCXJldHVybiByYzsKLX0KLQotc3RhdGljIGlubGluZSBpbnQgcmVzX25jbG9zZShyZXNf c3RhdGUgc3RhdHApCi17Ci0JaWYgKCFzdGF0cCkKLQkJcmV0dXJuIC0xOwotCWlmIChzdGF0cCAh PSAmX3JlcykgewotCQltZW1zZXQoc3RhdHAsIDAsIHNpemVvZigqc3RhdHApKTsKLQl9Ci0JcmV0 dXJuIDA7Ci19Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L2ZpbGVzL3VpYy5wcm8g Yi9zcmNwa2dzL3F0NS9maWxlcy91aWMucHJvCmluZGV4IDc0ZDdkYmQ4NzhmLi5kYzA4ZWZjZmYx OSAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDUvZmlsZXMvdWljLnBybworKysgYi9zcmNwa2dzL3F0 NS9maWxlcy91aWMucHJvCkBAIC00LDYgKzQsNyBAQCBERUZJTkVTICs9IFFUX1VJQyBRVF9OT19D QVNUX0ZST01fQVNDSUkgUVRfTk9fRk9SRUFDSAogaW5jbHVkZSh1aWMucHJpKQogaW5jbHVkZShz aGFyZWQvc2hhcmVkLnByaSkKIGluY2x1ZGUoY3BwL2NwcC5wcmkpCitpbmNsdWRlKHB5dGhvbi9w eXRob24ucHJpKQogCiBIRUFERVJTICs9IHVpYy5oCiAKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1 L2ZpbGVzL3VpdG9vbHMucHJvIGIvc3JjcGtncy9xdDUvZmlsZXMvdWl0b29scy5wcm8KbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjUxZTIyYjE0NTA2Ci0tLSAvZGV2L251 bGwKKysrIGIvc3JjcGtncy9xdDUvZmlsZXMvdWl0b29scy5wcm8KQEAgLTAsMCArMSwxNSBAQAor VEFSR0VUID0gUXRVaVRvb2xzCitDT05GSUcgKz0gc3RhdGljCisKK2luY2x1ZGUoLi4vbGliL3Vp bGliL3VpbGliLnByaSkKKworUU1BS0VfRE9DUyA9ICQkUFdEL2RvYy9xdHVpdG9vbHMucWRvY2Nv bmYKKworSEVBREVSUyArPSBxdWlsb2FkZXIuaAorU09VUkNFUyArPSBxdWlsb2FkZXIuY3BwCisK K0RFRklORVMgKz0gXAorICAgIFFGT1JNSU5URVJOQUxfTkFNRVNQQUNFIFwKKyAgICBRVF9ERVNJ R05FUl9TVEFUSUMKKworbG9hZChxdF9tb2R1bGUpCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9w YXRjaGVzLzAwMDItVXNlLV9mcHN0YXRlLWluc3RlYWQtb2YtX2xpYmNfZnBzdGF0ZS1vbi1saW51 eC5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAwMi1Vc2UtX2Zwc3RhdGUtaW5zdGVhZC1v Zi1fbGliY19mcHN0YXRlLW9uLWxpbnV4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAzZTc4N2QxMzc0ZS4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8w MDAyLVVzZS1fZnBzdGF0ZS1pbnN0ZWFkLW9mLV9saWJjX2Zwc3RhdGUtb24tbGludXgucGF0Y2gK KysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGlu dXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5oCTIwMTgtMDYtMTUgMDk6NDc6 MjAuMDAwMDAwMDAwICswMjAwCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0 ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5oCTIwMTgtMDktMDcgMjI6MjE6MjguNTIxNzYzNzE2 ICswMjAwCi1AQCAtNTAsNyArNTAsNyBAQAotICAgLy8gICBpbmZvOiB0aGUgY29sbGVjdGlvbiBv ZiByZWdpc3RlciBzdHJ1Y3R1cmVzLgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVk KF9feDg2XzY0KQotICAgc3RhdGljIHZvaWQgRmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAq b3V0LCBjb25zdCB1Y29udGV4dF90ICp1YywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IHN0cnVjdCBfbGliY19mcHN0YXRlKiBmcCk7Ci0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBzdHJ1Y3QgX2Zwc3RhdGUqIGZwKTsKLSAjZWxpZiBkZWZpbmVkKF9fYWFy Y2g2NF9fKQotICAgc3RhdGljIHZvaWQgRmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0 LCBjb25zdCB1Y29udGV4dF90ICp1YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHN0cnVjdCBmcHNpbWRfY29udGV4dCogZnByZWdzKTsKLS0tLSBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVu dC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmNjCTIwMTgtMDYtMTUg MDk6NDc6MjAuMDAwMDAwMDAwICswMjAwCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVt cF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5jYwkyMDE4LTA5LTA3IDIyOjIxOjQ1Ljc2 Njc2MjY4OCArMDIwMAotQEAgLTQ5LDcgKzQ5LDcgQEAKLSB9Ci0gCi0gdm9pZCBVQ29udGV4dFJl YWRlcjo6RmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dF90 ICp1YywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qg X2xpYmNfZnBzdGF0ZSogZnApIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBzdHJ1Y3QgX2Zwc3RhdGUqIGZwKSB7Ci0gICBjb25zdCBncmVnX3QqIHJlZ3MgPSB1 Yy0+dWNfbWNvbnRleHQuZ3JlZ3M7Ci0gCi0gICBvdXQtPmNvbnRleHRfZmxhZ3MgPSBNRF9DT05U RVhUX1g4Nl9GVUxMIHwKLUBAIC05Nyw3ICs5Nyw3IEBACi0gfQotIAotIHZvaWQgVUNvbnRleHRS ZWFkZXI6OkZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUgKm91dCwgY29uc3QgdWNvbnRleHRf dCAqdWMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0 IF9saWJjX2Zwc3RhdGUqIGZwcmVncykgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHN0cnVjdCBfZnBzdGF0ZSogZnByZWdzKSB7Ci0gICBjb25zdCBncmVnX3Qq IHJlZ3MgPSB1Yy0+dWNfbWNvbnRleHQuZ3JlZ3M7Ci0gCi0gICBvdXQtPmNvbnRleHRfZmxhZ3Mg PSBNRF9DT05URVhUX0FNRDY0X0ZVTEw7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWlu aWR1bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlci5oCTIwMTgtMDYtMTUgMDk6NDc6MjAuMDAwMDAw MDAwICswMjAwCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL21p bmlkdW1wX3dyaXRlci5oCTIwMTgtMDktMDcgMjM6MzY6MzIuMDQ5NDk1Mjg1ICswMjAwCi1AQCAt NDgsNyArNDgsNyBAQAotICNpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQotIHR5cGVkZWYgc3RydWN0 IGZwc2ltZF9jb250ZXh0IGZwc3RhdGVfdDsKLSAjZWxpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18p ICYmICFkZWZpbmVkKF9fbWlwc19fKQotLXR5cGVkZWYgc3RydWN0IF9saWJjX2Zwc3RhdGUgZnBz dGF0ZV90OwotK3R5cGVkZWYgc3RydWN0IF9mcHN0YXRlIGZwc3RhdGVfdDsKLSAjZW5kaWYKLSAK LSAvLyBUaGVzZSBlbnRyaWVzIHN0b3JlIGEgbGlzdCBvZiBtZW1vcnkgcmVnaW9ucyB0aGF0IHRo ZSBjbGllbnQgd2FudHMgaW5jbHVkZWQKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMv MDAwMy1pbmNsdWRlLXN5cy1yZWcuaC10by1nZXQtX19XT1JEU0laRS1vbi1tdXNsLWxpYmMucGF0 Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMDMtaW5jbHVkZS1zeXMtcmVnLmgtdG8tZ2V0LV9f V09SRFNJWkUtb24tbXVzbC1saWJjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCBkYTQxNjBiMjFiZC4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDAz LWluY2x1ZGUtc3lzLXJlZy5oLXRvLWdldC1fX1dPUkRTSVpFLW9uLW11c2wtbGliYy5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLUZyb20gOTAwMWM1NGQ2Yjk3NDQ0OTE3NGE4 Y2VlOGYzZjVkNzhhOWJkNmM5ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEZlbGl4 IEphbmRhIDxmZWxpeC5qYW5kYUBwb3N0ZW8uZGU+Ci1EYXRlOiBTdW4sIDEgRmViIDIwMTUgMTQ6 MjY6NTIgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCAzLzZdIGluY2x1ZGUgPHN5cy9yZWcuaD4gdG8g Z2V0IF9fV09SRFNJWkUgb24gbXVzbCBsaWJjCi0KLS0tLQotIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL2xp bnV4L2VsZl9jb3JlX2R1bXAuaCB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi9saW51eC9lbGZfY29yZV9kdW1wLmggYi9zcmMv Y29tbW9uL2xpbnV4L2VsZl9jb3JlX2R1bXAuaAotaW5kZXggZDAzYzdhOC4uMDJlYjM5MSAxMDA2 NDQKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJl YWtwYWQvYnJlYWtwYWQvc3JjL2NvbW1vbi9saW51eC9lbGZfY29yZV9kdW1wLmgKLSsrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtw YWQvc3JjL2NvbW1vbi9saW51eC9lbGZfY29yZV9kdW1wLmgKLUBAIC0zNiw2ICszNiw5IEBACi0g I2luY2x1ZGUgPGVsZi5oPgotICNpbmNsdWRlIDxsaW5rLmg+Ci0gI2luY2x1ZGUgPHN0ZGRlZi5o PgotKyNpZm5kZWYgX19HTElCQ19fCi0rI2luY2x1ZGUgPHN5cy9yZWcuaD4KLSsjZW5kaWYKLSAK LSAjaW5jbHVkZSAiY29tbW9uL21lbW9yeV9yYW5nZS5oIgotIAotLS0gCi0yLjAuNQotCmRpZmYg LS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMDQtbXVzbC1kaXNwYXRjaC10by1tdXNsLnBh dGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDA0LW11c2wtZGlzcGF0Y2gtdG8tbXVzbC5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGUzMmEzZGFiOTUuLjAwMDAwMDAwMDAw Ci0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAwNC1tdXNsLWRpc3BhdGNoLXRvLW11c2wucGF0 Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9iYXNlL2FsbG9jYXRvci9hbGxvY2F0b3Jfc2hpbV9kZWZhdWx0X2Rp c3BhdGNoX3RvX2dsaWJjLmNjCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L2Jhc2UvYWxsb2NhdG9yL2FsbG9jYXRvcl9zaGltX2RlZmF1bHRfZGlzcGF0Y2hfdG9fZ2xpYmMu Y2MKLUBAIC02LDYgKzYsNyBAQAotIAotICNpbmNsdWRlIDxtYWxsb2MuaD4KLSAKLSsjaWYgZGVm aW5lZChfX0dMSUJDX18pCi0gLy8gVGhpcyB0cmFuc2xhdGlvbiB1bml0IGRlZmluZXMgYSBkZWZh dWx0IGRpc3BhdGNoIGZvciB0aGUgYWxsb2NhdG9yIHNoaW0gd2hpY2gKLSAvLyByb3V0ZXMgYWxs b2NhdGlvbnMgdG8gbGliYyBmdW5jdGlvbnMuCi0gLy8gVGhlIGNvZGUgaGVyZSBpcyBzdHJvbmds eSBpbnNwaXJlZCBmcm9tIHRjbWFsbG9jJ3MgbGliY19vdmVycmlkZV9nbGliYy5oLgotQEAgLTcz LDMgKzc0LDkyIEBAIGNvbnN0IEFsbG9jYXRvckRpc3BhdGNoIEFsbG9jYXRvckRpc3BhdGNoOjpk ZWZhdWx0X2Rpc3BhdGNoID0gewotICAgICBudWxscHRyLCAgICAgICAgICAgICAgIC8qIGZyZWVf ZGVmaW5pdGVfc2l6ZV9mdW5jdGlvbiAqLwotICAgICBudWxscHRyLCAgICAgICAgICAgICAgIC8q IG5leHQgKi8KLSB9OwotKwotKyNlbHNlIC8vIGRlZmluZWQoX19HTElCQ19fKQotKwotKyNpbmNs dWRlIDxkbGZjbi5oPgotKwotK2V4dGVybiAiQyIgewotKy8vIERlY2xhcmUgZnVuY3Rpb24gcG9p bnRlcnMgdG8gdGhlIG1lbW9yeSBmdW5jdGlvbnMKLSt0eXBlZGVmIHZvaWQqICgqdF9saWJjX21h bGxvYykoc2l6ZV90IHNpemUpOwotK3R5cGVkZWYgdm9pZCogKCp0X2xpYmNfY2FsbG9jKShzaXpl X3Qgbiwgc2l6ZV90IHNpemUpOwotK3R5cGVkZWYgdm9pZCogKCp0X2xpYmNfcmVhbGxvYykodm9p ZCogYWRkcmVzcywgc2l6ZV90IHNpemUpOwotK3R5cGVkZWYgdm9pZCogKCp0X2xpYmNfbWVtYWxp Z24pKHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKTsKLSt0eXBlZGVmIHZvaWQgKCp0X2xp YmNfZnJlZSkodm9pZCogcHRyKTsKLSt0eXBlZGVmIHNpemVfdCAoKnRfbGliY19tYWxsb2NfdXNh YmxlX3NpemUpKHZvaWQqIHB0cik7Ci0rCi0rLy8gU3RhdGljIGluc3RhbmNlcyBvZiBwb2ludGVy cyB0byBsaWJjLnNvIGRsIHN5bWJvbHMKLStzdGF0aWMgdF9saWJjX21hbGxvYyBsaWJjX21hbGxv YyA9IE5VTEw7Ci0rc3RhdGljIHRfbGliY19jYWxsb2MgbGliY19jYWxsb2MgPSBOVUxMOwotK3N0 YXRpYyB0X2xpYmNfcmVhbGxvYyBsaWJjX3JlYWxsb2MgPSBOVUxMOwotK3N0YXRpYyB0X2xpYmNf bWVtYWxpZ24gbGliY19tZW1hbGlnbiA9IE5VTEw7Ci0rc3RhdGljIHRfbGliY19mcmVlIGxpYmNf ZnJlZSA9IE5VTEw7Ci0rc3RhdGljIHRfbGliY19tYWxsb2NfdXNhYmxlX3NpemUgbGliY19tYWxs b2NfdXNhYmxlX3NpemUgPSBOVUxMOwotKwotKy8vIHJlc29sdmUgdGhlIHN5bWJvbHMgaW4gbGli Yy5zbwotK3ZvaWQgbXVzbF9saWJjX21lbW9yeV9pbml0KHZvaWQpCi0rewotKyAgbGliY19tYWxs b2MgPSAodF9saWJjX21hbGxvYykgZGxzeW0oUlRMRF9ORVhULCAibWFsbG9jIik7Ci0rICBsaWJj X2NhbGxvYyA9ICh0X2xpYmNfY2FsbG9jKSBkbHN5bShSVExEX05FWFQsICJjYWxsb2MiKTsKLSsg IGxpYmNfcmVhbGxvYyA9ICh0X2xpYmNfcmVhbGxvYykgZGxzeW0oUlRMRF9ORVhULCAicmVhbGxv YyIpOwotKyAgbGliY19tZW1hbGlnbiA9ICh0X2xpYmNfbWVtYWxpZ24pIGRsc3ltKFJUTERfTkVY VCwgIm1lbWFsaWduIik7Ci0rICBsaWJjX2ZyZWUgPSAodF9saWJjX2ZyZWUpIGRsc3ltKFJUTERf TkVYVCwgImZyZWUiKTsKLSsgIGxpYmNfbWFsbG9jX3VzYWJsZV9zaXplID0gKHRfbGliY19tYWxs b2NfdXNhYmxlX3NpemUpIGRsc3ltKFJUTERfTkVYVCwgIm1hbGxvY191c2FibGVfc2l6ZSIpOwot K30KLSt9ICAvLyBleHRlcm4gIkMiCi0rCi0rbmFtZXNwYWNlIHsKLSsKLSt1c2luZyBiYXNlOjph bGxvY2F0b3I6OkFsbG9jYXRvckRpc3BhdGNoOwotKwotK3ZvaWQqIE11c2xNYWxsb2MoY29uc3Qg QWxsb2NhdG9yRGlzcGF0Y2gqLCBzaXplX3Qgc2l6ZSwgdm9pZCogY29udGV4dCkgewotKyAgaWYg KCFsaWJjX21hbGxvYykKLSsgICAgbXVzbF9saWJjX21lbW9yeV9pbml0KCk7Ci0rICByZXR1cm4g KCpsaWJjX21hbGxvYykoc2l6ZSk7Ci0rfQotKwotK3ZvaWQqIE11c2xDYWxsb2MoY29uc3QgQWxs b2NhdG9yRGlzcGF0Y2gqLCBzaXplX3Qgbiwgc2l6ZV90IHNpemUsIHZvaWQqIGNvbnRleHQpIHsK LSsgIGlmICghbGliY19jYWxsb2MpCi0rICAgIG11c2xfbGliY19tZW1vcnlfaW5pdCgpOwotKyAg cmV0dXJuICgqbGliY19jYWxsb2MpKG4sIHNpemUpOwotK30KLSsKLSt2b2lkKiBNdXNsUmVhbGxv Yyhjb25zdCBBbGxvY2F0b3JEaXNwYXRjaCosIHZvaWQqIGFkZHJlc3MsIHNpemVfdCBzaXplLCB2 b2lkKiBjb250ZXh0KSB7Ci0rICBpZiAoIWxpYmNfcmVhbGxvYykKLSsgICAgbXVzbF9saWJjX21l bW9yeV9pbml0KCk7Ci0rICByZXR1cm4gKCpsaWJjX3JlYWxsb2MpKGFkZHJlc3MsIHNpemUpOwot K30KLSsKLSt2b2lkKiBNdXNsTWVtYWxpZ24oY29uc3QgQWxsb2NhdG9yRGlzcGF0Y2gqLCBzaXpl X3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSwgdm9pZCogY29udGV4dCkgewotKyAgaWYgKCFsaWJj X21lbWFsaWduKQotKyAgICBtdXNsX2xpYmNfbWVtb3J5X2luaXQoKTsKLSsgIHJldHVybiAoKmxp YmNfbWVtYWxpZ24pKGFsaWdubWVudCwgc2l6ZSk7Ci0rfQotKwotK3ZvaWQgTXVzbEZyZWUoY29u c3QgQWxsb2NhdG9yRGlzcGF0Y2gqLCB2b2lkKiBhZGRyZXNzLCB2b2lkKiBjb250ZXh0KSB7Ci0r ICBpZiAoIWxpYmNfZnJlZSkKLSsgICAgbXVzbF9saWJjX21lbW9yeV9pbml0KCk7Ci0rICAoKmxp YmNfZnJlZSkoYWRkcmVzcyk7Ci0rfQotKwotK3NpemVfdCBNdXNsR2V0U2l6ZUVzdGltYXRlKGNv bnN0IEFsbG9jYXRvckRpc3BhdGNoKiwgdm9pZCogYWRkcmVzcywgdm9pZCogY29udGV4dCkgewot KyAgLy8gVE9ETyhzaWdnaSwgcHJpbWlhbm8pOiBtYWxsb2NfdXNhYmxlX3NpemUgbWF5IG5lZWQg cmVkaXJlY3Rpb24gaW4gdGhlCi0rICAvLyAgICAgcHJlc2VuY2Ugb2YgaW50ZXJwb3Npbmcgc2hp bXMgdGhhdCBkaXZlcnQgYWxsb2NhdGlvbnMuCi0rICBpZiAoIWxpYmNfbWFsbG9jX3VzYWJsZV9z aXplKQotKyAgICBtdXNsX2xpYmNfbWVtb3J5X2luaXQoKTsKLSsgIHJldHVybiAoKmxpYmNfbWFs bG9jX3VzYWJsZV9zaXplKShhZGRyZXNzKTsKLSt9Ci0rCi0rfSAgLy8gbmFtZXNwYWNlCi0rCi0r Y29uc3QgQWxsb2NhdG9yRGlzcGF0Y2ggQWxsb2NhdG9yRGlzcGF0Y2g6OmRlZmF1bHRfZGlzcGF0 Y2ggPSB7Ci0rICAgICZNdXNsTWFsbG9jLCAgICAgICAgICAgLyogYWxsb2NfZnVuY3Rpb24gKi8K LSsgICAgJk11c2xDYWxsb2MsICAgICAgICAgICAvKiBhbGxvY196ZXJvX2luaXRpYWxpemVkX2Z1 bmN0aW9uICovCi0rICAgICZNdXNsTWVtYWxpZ24sICAgICAgICAgLyogYWxsb2NfYWxpZ25lZF9m dW5jdGlvbiAqLwotKyAgICAmTXVzbFJlYWxsb2MsICAgICAgICAgIC8qIHJlYWxsb2NfZnVuY3Rp b24gKi8KLSsgICAgJk11c2xGcmVlLCAgICAgICAgICAgICAvKiBmcmVlX2Z1bmN0aW9uICovCi0r ICAgICZNdXNsR2V0U2l6ZUVzdGltYXRlLCAgLyogZ2V0X3NpemVfZXN0aW1hdGVfZnVuY3Rpb24g Ki8KLSsgICAgbnVsbHB0ciwgICAgICAgICAgICAgICAvKiBuZXh0ICovCi0rfTsKLSsKLSsjZW5k aWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAwOC1tdXNsLW5vLW1hbGxpbmZv LnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDA4LW11c2wtbm8tbWFsbGluZm8ucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzMzJiOTJiNjlkLi4wMDAwMDAwMDAwMAot LS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMDgtbXVzbC1uby1tYWxsaW5mby5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vYmFzZS90cmFjZV9ldmVudC9tYWxsb2NfZHVtcF9wcm92aWRlci5jYwkyMDE3LTEx LTI4IDE0OjA2OjUzLjAwMDAwMDAwMCArMDEwMAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9iYXNlL3RyYWNlX2V2ZW50L21hbGxvY19kdW1wX3Byb3ZpZGVyLmNjCTIwMTgt MDEtMjcgMjA6MTM6MjYuOTYwOTMyODA1ICswMTAwCi1AQCAtMjQzLDcgKzI0Myw3IEBACi0gICBh bGxvY2F0ZWRfb2JqZWN0c19jb3VudCA9IG1haW5faGVhcF9pbmZvLmJsb2NrX2NvdW50OwotICNl bGlmIGRlZmluZWQoT1NfRlVDSFNJQSkKLSAvLyBUT0RPKGZ1Y2hzaWEpOiBQb3J0LCBzZWUgaHR0 cHM6Ly9jcmJ1Zy5jb20vNzA2NTkyLgotLSNlbHNlCi0rI2VsaWYgZGVmaW5lZChfX0dMSUJDX18p Ci0gICBzdHJ1Y3QgbWFsbGluZm8gaW5mbyA9IG1hbGxpbmZvKCk7Ci0gICBEQ0hFQ0tfR0UoaW5m by5hcmVuYSArIGluZm8uaGJsa2hkLCBpbmZvLnVvcmRibGtzKTsKLSAKLUBAIC0yNTUsNiArMjU1 LDggQEAKLSAKLSAgIC8vIFRvdGFsIGFsbG9jYXRlZCBzcGFjZSBpcyBnaXZlbiBieSB8dW9yZGJs a3N8LgotICAgYWxsb2NhdGVkX29iamVjdHNfc2l6ZSA9IGluZm8udW9yZGJsa3M7Ci0rI2Vsc2UK LSsvLyBtdXNsIGxpYmMgZG9lcyBub3Qgc3VwcG9ydCBtYWxsaW5mbygpCi0gI2VuZGlmCi0gCi0g ICBNZW1vcnlBbGxvY2F0b3JEdW1wKiBvdXRlcl9kdW1wID0gcG1kLT5DcmVhdGVBbGxvY2F0b3JE dW1wKCJtYWxsb2MiKTsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFz ZS9wcm9jZXNzL3Byb2Nlc3NfbWV0cmljc19wb3NpeC5jYwkyMDE3LTExLTI4IDE0OjA2OjUzLjAw MDAwMDAwMCArMDEwMAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNl L3Byb2Nlc3MvcHJvY2Vzc19tZXRyaWNzX3Bvc2l4LmNjCTIwMTgtMDEtMjcgMjA6NDg6MTEuNTcx MDQwMzQ4ICswMTAwCi1AQCAtMTAwLDE0ICsxMDAsMTQgQEAKLSAgIG1hbGxvY19zdGF0aXN0aWNz X3Qgc3RhdHMgPSB7MH07Ci0gICBtYWxsb2Nfem9uZV9zdGF0aXN0aWNzKG51bGxwdHIsICZzdGF0 cyk7Ci0gICByZXR1cm4gc3RhdHMuc2l6ZV9pbl91c2U7Ci0tI2VsaWYgZGVmaW5lZChPU19MSU5V WCkgfHwgZGVmaW5lZChPU19BTkRST0lEKQotKyNlbGlmIChkZWZpbmVkKE9TX0xJTlVYKSAmJiBk ZWZpbmVkKF9fR0xJQkNfXykpIHx8IGRlZmluZWQoT1NfQU5EUk9JRCkKLSAgIHN0cnVjdCBtYWxs aW5mbyBtaW5mbyA9IG1hbGxpbmZvKCk7Ci0gI2lmIGRlZmluZWQoVVNFX1RDTUFMTE9DKQotICAg cmV0dXJuIG1pbmZvLnVvcmRibGtzOwotICNlbHNlCi0gICByZXR1cm4gbWluZm8uaGJsa2hkICsg bWluZm8uYXJlbmE7Ci0gI2VuZGlmCi0tI2VsaWYgZGVmaW5lZChPU19GVUNIU0lBKQotKyNlbHNl IC8vaWYgZGVmaW5lZChPU19GVUNIU0lBKSAvLyBhbHNvIG11c2wgZG9lc24ndCBkbyB0aGlzLgot ICAgLy8gVE9ETyhmdWNoc2lhKTogTm90IGN1cnJlbnRseSBleHBvc2VkLiBodHRwczovL2NyYnVn LmNvbS83MzUwODcuCi0gICByZXR1cm4gMDsKLSAjZW5kaWYKLQpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9xdDUvcGF0Y2hlcy8wMDA5LW11c2wtb2ZmX3QucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVz LzAwMDktbXVzbC1vZmZfdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTJk YjNiOWViZjQuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAwOS1tdXNs LW9mZl90LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9vdHMvaW5jbHVkZS9vcGVudHlw ZS1zYW5pdGlzZXIuaAkyMDE2LTA1LTI2IDE0OjU4OjU0LjAwMDAwMDAwMCArMDIwMAotKysrIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9vdHMvaW5jbHVkZS9v cGVudHlwZS1zYW5pdGlzZXIuaAkyMDE2LTEwLTAxIDE0OjMxOjMwLjg4NTAwMDAwMCArMDIwMAot QEAgLTIxLDYgKzIxLDcgQEAKLSAjZGVmaW5lIGh0b25zKHgpIF9ieXRlc3dhcF91c2hvcnQgKHgp Ci0gI2Vsc2UKLSAjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+Ci0rI2luY2x1ZGUgPHN5cy90eXBlcy5o PgotICNpbmNsdWRlIDxzdGRpbnQuaD4KLSAjZW5kaWYKLSAKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv cXQ1L3BhdGNoZXMvMDAxMC1tdXNsLXByZWFkLXB3cml0ZS5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3Bh dGNoZXMvMDAxMC1tdXNsLXByZWFkLXB3cml0ZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMTdiYmEwMTcuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNo ZXMvMDAxMC1tdXNsLXByZWFkLXB3cml0ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICsw LDAgQEAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv bHNzL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oCTIwMTgtMDktMDcgMjE6MjU6MjYuNjM5OTY0MTAw ICswMjAwCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2xzcy9saW51eF9zeXNjYWxsX3N1cHBvcnQuaAkyMDE4LTA5LTA3IDIxOjI1OjExLjYxMTk2NDk5 NSArMDIwMAotQEAgLTE3OTQsNiArMTc5NCwxNSBAQAotIC8qIEVuZCBvZiBzMzkwL3MzOTB4IGRl ZmluaXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8K LSAjZW5kaWYKLSAKLSsjaWZuZGVmIF9fR0xJQkNfXwotKyAgLyogRm9yIE11c2wgbGliYyBwcmVh ZC9wcmVhZCBpcyB0aGUgc2FtZSBhcyBwcmVhZDY0L3B3cml0ZTY0ICovCi0rI2lmbmRlZiBfX05S X3ByZWFkCi0rI2RlZmluZSBfX05SX3ByZWFkICAgICAgICAgICAgICBfX05SX3ByZWFkNjQKLSsj ZW5kaWYKLSsjaWZuZGVmIF9fTlJfcHdyaXRlCi0rI2RlZmluZSBfX05SX3B3cml0ZSAgICAgICAg ICAgICBfX05SX3B3cml0ZTY0Ci0rI2VuZGlmCi0rI2VuZGlmIC8qIGlmbmRlZiBfX0dMSUJDX18g Ki8KLSAKLSAvKiBBZnRlciBmb3JraW5nLCB3ZSBtdXN0IG1ha2Ugc3VyZSB0byBvbmx5IGNhbGwg c3lzdGVtIGNhbGxzLiAgICAgICAgICAgICAgICovCi0gI2lmIGRlZmluZWQoX19CT1VOREVEX1BP SU5URVJTX18pCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMTEtbXVzbC1yZXBs YWNlLXB2YWxsb2MucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMTEtbXVzbC1yZXBsYWNl LXB2YWxsb2MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1Y2FmMzgzNmQ3 Li4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMTEtbXVzbC1yZXBsYWNl LXB2YWxsb2MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi0tLS0gcXR3ZWJl bmdpbmUvc3JjL2NvcmUvYXBpL3F0YnVnLTYxNTIxLmNwcAkyMDE3LTExLTI5IDA5OjQyOjI5LjAw MDAwMDAwMCArMDEwMAotKysrIHF0d2ViZW5naW5lL3NyYy9jb3JlL2FwaS9xdGJ1Zy02MTUyMS5j cHAJMjAxOC0wMS0yOCAwNjo0OToyOS40NTQxNzU3MjUgKzAxMDAKLUBAIC0xMTEsNyArMTExLDEx IEBACi0gfQotIAotIFNISU1fSElEREVOIHZvaWQqIFNoaW1QdmFsbG9jKHNpemVfdCBzaXplKSB7 Ci0rI2lmIGRlZmluZWQoX19HTElCQ19fKQotICAgICByZXR1cm4gcHZhbGxvYyhzaXplKTsKLSsj ZWxzZQotKyAgICByZXR1cm4gdmFsbG9jKChzaXplKzQwOTUpJn40MDk1KTsKLSsjZW5kaWYKLSB9 Ci0gCi0gU0hJTV9ISURERU4gaW50IFNoaW1Qb3NpeE1lbWFsaWduKHZvaWQqKiByLCBzaXplX3Qg YSwgc2l6ZV90IHMpIHsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAxMi1tdXNs LXJlc29sdmUucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMTItbXVzbC1yZXNvbHZlLnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZGZjZWI3OWYzMC4uMDAwMDAwMDAw MDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDEyLW11c2wtcmVzb2x2ZS5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vbmV0L2Rucy9kbnNfcmVsb2FkZXIuY2MJMjAxNi0xMS0wNyAxNTo0NjoxOC4wMDAw MDAwMDAgKzAxMDAKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbmV0L2Ru cy9kbnNfcmVsb2FkZXIuY2MJMjAxNi0xMi0yMCAwMzozMzoxMS43NDkwNTk2NTYgKzAxMDAKLUBA IC05LDYgKzksMTAgQEAKLSAKLSAjaW5jbHVkZSA8cmVzb2x2Lmg+Ci0gCi0rI2lmICFkZWZpbmVk KF9fR0xJQkNfXykKLSsjaW5jbHVkZSAicmVzb2x2X2NvbXBhdC5oIgotKyNlbmRpZgotKwotICNp bmNsdWRlICJiYXNlL2xhenlfaW5zdGFuY2UuaCIKLSAjaW5jbHVkZSAiYmFzZS9sb2dnaW5nLmgi Ci0gI2luY2x1ZGUgImJhc2UvbWFjcm9zLmgiCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL25ldC9kbnMvZG5zX2NvbmZpZ19zZXJ2aWNlX3Bvc2l4LmNjCTIwMTYtMTEtMDcg MTU6NDY6MTguMDAwMDAwMDAwICswMTAwCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL25ldC9kbnMvZG5zX2NvbmZpZ19zZXJ2aWNlX3Bvc2l4LmNjCTIwMTYtMTItMjAgMDM6 NDA6MDcuNjcxOTUzMDk4ICswMTAwCi1AQCAtNiw2ICs2LDEwIEBACi0gCi0gI2luY2x1ZGUgPHN0 cmluZz4KLSAKLSsjaWYgIWRlZmluZWQoX19HTElCQ19fKQotKyNpbmNsdWRlICJyZXNvbHZfY29t cGF0LmgiCi0rI2VuZGlmCi0rCi0gI2luY2x1ZGUgImJhc2UvYmluZC5oIgotICNpbmNsdWRlICJi YXNlL2ZpbGVzL2ZpbGUuaCIKLSAjaW5jbHVkZSAiYmFzZS9maWxlcy9maWxlX3BhdGguaCIKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAxNS1tdXNsLXNpZ2luZm9fdC5wYXRjaCBi L3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAxNS1tdXNsLXNpZ2luZm9fdC5wYXRjaApkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggZmU3NjBiZTE2NjYuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3Br Z3MvcXQ1L3BhdGNoZXMvMDAxNS1tdXNsLXNpZ2luZm9fdC5wYXRjaAorKysgL2Rldi9udWxsCkBA IC0xLDE4ICswLDAgQEAKLVRoZXJlJ3MgYSBzdWJ0bGUgZGlmZmVyZW5jZSBpbiB0aGUgaW50ZXJu YWwgbmFtZSBvZiBzaWdpbmZvX3QgZmllbGRzCi1iZXR3ZWVuIGdsaWJjIGFuZCBtdXNsLiBUaGUg c3RydWN0dXJlIGl0c2VsZiBpcyBlcXVpdmFsZW50LCBzbyBpdAotc2hvdWxkIHN1ZmZpY2UgdG8g YWRkIGEgbWFjcm8gdG8gcmVuYW1lIHRoZSBmaWVsZC4KLQotLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmL3RyYXAuY2MJMjAxNS0w Mi0xNyAwNTo1Nzo0My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi90cmFwLmNjCTIwMTUtMDYtMDMg MDg6MjA6MjUuMDMyNzE2NDI3ICswMjAwCi1AQCAtMjIsNiArMjIsMTEgQEAKLSAjaW5jbHVkZSAi c2FuZGJveC9saW51eC9zZXJ2aWNlcy9hbmRyb2lkX3Vjb250ZXh0LmgiCi0gI2VuZGlmCi0KLSsv LyBtdXNsIGxpYmMgZGVmaW5lcyBzaWdpbmZvX3QgX19zaV9maWVsZHMgaW5zdGVhZCBvZiBfc2lm aWVsZHMKLSsjaWYgIWRlZmluZWQoX19HTElCQ19fKQotKyNkZWZpbmUgX3NpZmllbGRzIF9fc2lf ZmllbGRzCi0rI2VuZGlmCi0rCi0gbmFtZXNwYWNlIHsKLQotIGNvbnN0IGludCBrQ2FwYWNpdHlJ bmNyZW1lbnQgPSAyMDsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAxNy1tdXNs LXN0YWNrc3RhcnQucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMTctbXVzbC1zdGFja3N0 YXJ0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzEzNmJjMmJjZC4uMDAw MDAwMDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDE3LW11c2wtc3RhY2tzdGFydC5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLS0tLSBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vd3Rm L3N0YWNrX3V0aWwuY2MJMjAxOC0wMS0yNyAyMzowODo0My41ODY0NzUzNDkgKzAxMDAKLSsrKyBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVy ZXIvcGxhdGZvcm0vd3RmL3N0YWNrX3V0aWwuY2MJMjAxOC0wMS0yNyAyMzoxODoyMi4yNzQ1MDUy MDMgKzAxMDAKLUBAIC0yOCw3ICsyOCw3IEBACi0gLy8gRklYTUU6IE9uIE1hYyBPU1ggYW5kIExp bnV4LCB0aGlzIG1ldGhvZCBjYW5ub3QgZXN0aW1hdGUgc3RhY2sgc2l6ZQotIC8vIGNvcnJlY3Rs eSBmb3IgdGhlIG1haW4gdGhyZWFkLgotIAotLSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgfHwgZGVm aW5lZChPU19BTkRST0lEKSB8fCBkZWZpbmVkKE9TX0ZSRUVCU0QpIHx8IFwKLSsjaWYgZGVmaW5l ZChPU19MSU5VWCkgfHwgZGVmaW5lZChPU19BTkRST0lEKSB8fCBkZWZpbmVkKE9TX0ZSRUVCU0Qp IHx8IFwKLSAgICAgZGVmaW5lZChPU19GVUNIU0lBKQotICAgLy8gcHRocmVhZF9nZXRhdHRyX25w KCkgY2FuIGZhaWwgaWYgdGhlIHRocmVhZCBpcyBub3QgaW52b2tlZCBieQotICAgLy8gcHRocmVh ZF9jcmVhdGUoKSAoZS5nLiwgdGhlIG1haW4gdGhyZWFkIG9mIHdlYmtpdF91bml0X3Rlc3RzKS4K LUBAIC05Niw3ICs5Niw3IEBACi0gfQotIAotIHZvaWQqIEdldFN0YWNrU3RhcnQoKSB7Ci0tI2lm IGRlZmluZWQoX19HTElCQ19fKSB8fCBkZWZpbmVkKE9TX0FORFJPSUQpIHx8IGRlZmluZWQoT1Nf RlJFRUJTRCkgfHwgXAotKyNpZiBkZWZpbmVkKE9TX0xJTlVYKSB8fCBkZWZpbmVkKE9TX0FORFJP SUQpIHx8IGRlZmluZWQoT1NfRlJFRUJTRCkgfHwgXAotICAgICBkZWZpbmVkKE9TX0ZVQ0hTSUEp Ci0gICBwdGhyZWFkX2F0dHJfdCBhdHRyOwotICAgaW50IGVycm9yOwpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9xdDUvcGF0Y2hlcy8wMDIwLW11c2wtc2FuZGJveC5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3Bh dGNoZXMvMDAyMC1tdXNsLXNhbmRib3gucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IGQzZGUxZTQxMTgzLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAw MjAtbXVzbC1zYW5kYm94LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLS0t IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAt YnBmLWhlbHBlcnMvc3lzY2FsbF9wYXJhbWV0ZXJzX3Jlc3RyaWN0aW9ucy5jYwkyMDE4LTA2LTE1 IDA5OjQ3OjIwLjAwMDAwMDAwMCArMDIwMAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9wYXJhbWV0 ZXJzX3Jlc3RyaWN0aW9ucy5jYwkyMDE4LTA5LTEzIDE5OjUzOjUzLjQ1Mzc4MDI1MyArMDIwMAot QEAgLTEyOSw3ICsxMjksNyBAQAotIC8vIENMT05FX1ZNLCBub3IgQ0xPTkVfVEhSRUFELCB3aGlj aCBpbmNsdWRlcyBhbGwgZm9yaygpIGltcGxlbWVudGF0aW9ucy4KLSBSZXN1bHRFeHByIFJlc3Ry aWN0Q2xvbmVUb1RocmVhZHNBbmRFUEVSTUZvcmsoKSB7Ci0gICBjb25zdCBBcmc8dW5zaWduZWQg bG9uZz4gZmxhZ3MoMCk7Ci0tCi0rI2lmIGRlZmluZWQoX19HTElCQ19fKQotICAgLy8gVE9ETyht ZGVtcHNreSk6IEV4dGVuZCBEU0wgdG8gc3VwcG9ydCAoZmxhZ3MgJiB+bWFzazEpID09IG1hc2sy LgotICAgY29uc3QgdWludDY0X3Qga0FuZHJvaWRDbG9uZU1hc2sgPSBDTE9ORV9WTSB8IENMT05F X0ZTIHwgQ0xPTkVfRklMRVMgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBDTE9ORV9TSUdIQU5EIHwgQ0xPTkVfVEhSRUFEIHwKLUBAIC0xNDgsNiArMTQ4LDE3IEBACi0g ICByZXR1cm4gSWYoSXNBbmRyb2lkKCkgPyBhbmRyb2lkX3Rlc3QgOiBnbGliY190ZXN0LCBBbGxv dygpKQotICAgICAgIC5FbHNlSWYoKGZsYWdzICYgKENMT05FX1ZNIHwgQ0xPTkVfVEhSRUFEKSkg PT0gMCwgRXJyb3IoRVBFUk0pKQotICAgICAgIC5FbHNlKENyYXNoU0lHU1lTQ2xvbmUoKSk7Ci0r I2Vsc2UKLSsgIGNvbnN0IGludCByZXF1aXJlZCA9IENMT05FX1ZNIHwgQ0xPTkVfRlMgfCBDTE9O RV9GSUxFUyB8IENMT05FX1NJR0hBTkQgfAotKyAgICAgICAgICAgICAgICAgICAgICAgQ0xPTkVf VEhSRUFEIHwgQ0xPTkVfU1lTVlNFTTsKLSsgIGNvbnN0IGludCBzYWZlID0gQ0xPTkVfU0VUVExT IHwgQ0xPTkVfUEFSRU5UX1NFVFRJRCB8IENMT05FX0NISUxEX0NMRUFSVElEIHwKLSsgICAgICAg ICAgICAgICAgICAgQ0xPTkVfREVUQUNIRUQ7Ci0rICBjb25zdCBCb29sRXhwciB0aHJlYWRfY2xv bmVfb2sgPSAoZmxhZ3MmfnNhZmUpPT1yZXF1aXJlZDsKLSsKLSsgIHJldHVybiBJZih0aHJlYWRf Y2xvbmVfb2ssIEFsbG93KCkpCi0rICAgICAgLkVsc2VJZigoZmxhZ3MgJiAoQ0xPTkVfVk0gfCBD TE9ORV9USFJFQUQpKSA9PSAwLCBFcnJvcihFUEVSTSkpCi0rICAgICAgLkVsc2UoQ3Jhc2hTSUdT WVNDbG9uZSgpKTsKLSsjZW5kaWYKLSB9Ci0gCi0gUmVzdWx0RXhwciBSZXN0cmljdFByY3RsKCkg ewotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3Nl Y2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmNjCTIwMTgtMDYtMTUgMDk6NDc6MjAuMDAw MDAwMDAwICswMjAwCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRi b3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3NldHMuY2MJMjAxOC0wOS0xMyAx OTo1NjozMS43Nzk3NzM5NDAgKzAyMDAKLUBAIC0zNzUsNiArMzc1LDkgQEAKLSAjaWYgZGVmaW5l ZChfX2kzODZfXykKLSAgICAgY2FzZSBfX05SX3dhaXRwaWQ6Ci0gI2VuZGlmCi0rI2lmICFkZWZp bmVkKF9fR0xJQkNfXykKLSsgICAgY2FzZSBfX05SX3NldF90aWRfYWRkcmVzczoKLSsjZW5kaWYK LSAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgY2FzZSBfX05SX2Nsb25lOiAgLy8gU2hvdWxkIGJl IHBhcmFtZXRlci1yZXN0cmljdGVkLgotICAgICBjYXNlIF9fTlJfc2V0bnM6ICAvLyBQcml2aWxl Z2VkLgotQEAgLTM4Nyw3ICszOTAsOSBAQAotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZp bmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pCi0gICAgIGNhc2UgX19OUl9zZXRf dGhyZWFkX2FyZWE6Ci0gI2VuZGlmCi0rI2lmIGRlZmluZWQoX19HTElCQ19fKQotICAgICBjYXNl IF9fTlJfc2V0X3RpZF9hZGRyZXNzOgotKyNlbmRpZgotICAgICBjYXNlIF9fTlJfdW5zaGFyZToK LSAjaWYgIWRlZmluZWQoX19taXBzX18pICYmICFkZWZpbmVkKF9fYWFyY2g2NF9fKQotICAgICBj YXNlIF9fTlJfdmZvcms6Ci1AQCAtNDk2LDYgKzUwMSw5IEBACi0gICAgIGNhc2UgX19OUl9tbG9j azoKLSAgICAgY2FzZSBfX05SX211bmxvY2s6Ci0gICAgIGNhc2UgX19OUl9tdW5tYXA6Ci0rI2lm ICFkZWZpbmVkKF9fR0xJQkNfXykKLSsgICAgY2FzZSBfX05SX21yZW1hcDoKLSsjZW5kaWYKLSAg ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgY2FzZSBfX05SX21hZHZpc2U6Ci0gICAgIGNhc2UgX19O Ul9taW5jb3JlOgotQEAgLTUxMSw3ICs1MTksOSBAQAotICAgICBjYXNlIF9fTlJfbW9kaWZ5X2xk dDoKLSAjZW5kaWYKLSAgICAgY2FzZSBfX05SX21wcm90ZWN0OgotKyNpZiBkZWZpbmVkKF9fR0xJ QkNfXykKLSAgICAgY2FzZSBfX05SX21yZW1hcDoKLSsjZW5kaWYKLSAgICAgY2FzZSBfX05SX21z eW5jOgotICAgICBjYXNlIF9fTlJfbXVubG9ja2FsbDoKLSAgICAgY2FzZSBfX05SX3JlYWRhaGVh ZDoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAyMy1lbmFibGVfdG9vbHMtY3Jv c3MucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMjMtZW5hYmxlX3Rvb2xzLWNyb3NzLnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZWFjNGU3MGVmYS4uMDAwMDAwMDAw MDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDIzLWVuYWJsZV90b29scy1jcm9zcy5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS0tLSBxdHRvb2xzL3NyYy9zcmMucHJv CTIwMTgtMDYtMDkgMTM6MTA6MzguMDAwMDAwMDAwICswMjAwCi0rKysgcXR0b29scy9zcmMvc3Jj LnBybwkyMDE4LTA4LTE5IDA5OjM0OjI5LjgwMzY3MDIwNSArMDIwMAotQEAgLTEsMjAgKzEsMTQg QEAKLSBURU1QTEFURSA9IHN1YmRpcnMKLSAKLS1xdEhhdmVNb2R1bGUod2lkZ2V0cykgewotLSAg ICBuby1wbmcgewotLSAgICAgICAgbWVzc2FnZSgiU29tZSBncmFwaGljcy1yZWxhdGVkIHRvb2xz IGFyZSB1bmF2YWlsYWJsZSB3aXRob3V0IFBORyBzdXBwb3J0IikKLS0gICAgfSBlbHNlIHsKLS0g ICAgICAgIFFUX0ZPUl9DT05GSUcgKz0gd2lkZ2V0cwotLSAgICAgICAgcXRDb25maWcocHVzaGJ1 dHRvbik6cXRDb25maWcodG9vbGJ1dHRvbikgewotLSAgICAgICAgICAgIFNVQkRJUlMgPSBhc3Np c3RhbnQgXAotLSAgICAgICAgICAgICAgICAgICAgICBkZXNpZ25lciBcCi0tICAgICAgICAgICAg ICAgICAgICAgIHBpeGVsdG9vbAotLQotLSAgICAgICAgICAgIGxpbmd1aXN0LmRlcGVuZHMgPSBk ZXNpZ25lcgotLSAgICAgICAgfQotLSAgICAgICAgcXRIYXZlTW9kdWxlKHF1aWNrKTpxdENvbmZp Zyh0aHJlYWQpOnF0Q29uZmlnKHRvb2xidXR0b24pOiBTVUJESVJTICs9IGRpc3RhbmNlZmllbGRn ZW5lcmF0b3IKLS0gICAgfQotLX0KLStRVF9GT1JfQ09ORklHICs9IHdpZGdldHMKLSsKLStTVUJE SVJTID0gYXNzaXN0YW50IFwKLSsgICAgICAgICAgZGVzaWduZXIgXAotKyAgICAgICAgICBwaXhl bHRvb2wKLSsKLStsaW5ndWlzdC5kZXBlbmRzID0gZGVzaWduZXIKLSsKLStTVUJESVJTICs9IGRp c3RhbmNlZmllbGRnZW5lcmF0b3IKLSAKLSBTVUJESVJTICs9IGxpbmd1aXN0IFwKLSAgICAgcXRh dHRyaWJ1dGlvbnNzY2FubmVyCi1AQCAtMzEsMTEgKzI1LDExIEBAIG1hY29zIHsKLSAgICAgU1VC RElSUyArPSBtYWNkZXBsb3lxdAotIH0KLSAKLS1xdEhhdmVNb2R1bGUoZGJ1cyk6IFNVQkRJUlMg Kz0gcWRidXMKLStTVUJESVJTICs9IHFkYnVzCi0gCi0gd2luMzJ8d2lucnQ6U1VCRElSUyArPSB3 aW5kZXBsb3lxdAotIHdpbnJ0OlNVQkRJUlMgKz0gd2lucnRydW5uZXIKLS1xdEhhdmVNb2R1bGUo Z3VpKTohd2FzbTohYW5kcm9pZDohdWlraXQ6IXFueDohd2lucnQ6IFNVQkRJUlMgKz0gcXRkaWFn Ci0rU1VCRElSUyArPSBxdGRpYWcKLSAKLSBxdE5vbWFrZVRvb2xzKCBcCi0gICAgIGRpc3RhbmNl ZmllbGRnZW5lcmF0b3IgXApkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDI1LW11 c2wtY2hyb21pdW0tZGVmYXVsdC1zdGFja3NpemUucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVz LzAwMjUtbXVzbC1jaHJvbWl1bS1kZWZhdWx0LXN0YWNrc2l6ZS5wYXRjaApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggN2JmNWEyMmZiYTcuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3Mv cXQ1L3BhdGNoZXMvMDAyNS1tdXNsLWNocm9taXVtLWRlZmF1bHQtc3RhY2tzaXplLnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9iYXNlL3RocmVhZGluZy9wbGF0Zm9ybV90aHJlYWRfbGludXguY2Mub3JpZwky MDE4LTA5LTE5IDE4OjA1OjE1LjUyMzkyMzcwMyArMDIwMAotKysrIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9iYXNlL3RocmVhZGluZy9wbGF0Zm9ybV90aHJlYWRfbGludXguY2MJ MjAxOC0wOS0xOSAxODowODowNS4xNTA5MzI0NTQgKzAyMDAKLUBAIC0xNzMsNyArMTczLDEyIEBA Ci0gCi0gc2l6ZV90IEdldERlZmF1bHRUaHJlYWRTdGFja1NpemUoY29uc3QgcHRocmVhZF9hdHRy X3QmIGF0dHJpYnV0ZXMpIHsKLSAjaWYgIWRlZmluZWQoVEhSRUFEX1NBTklUSVpFUikKLSsjaWYg ZGVmaW5lZChfX0dMSUJDX18pCi0gICByZXR1cm4gMDsKLSsjZWxzZSAvLyBkZWZpbmVkKF9fR0xJ QkNfXykKLSsgIC8vIEZvciBNdXNsIGxpYmMgdHJ5IHdpdGggYSBkZWZhdWx0IHN0YWNrIHNpemUg b2YgMiBNaUIKLSsgIHJldHVybiAyICogMTAyNCAqIDEwMjQ7Ci0rI2VuZGlmIC8vICFkZWZpbmVk KF9fR0xJQkNfXykKLSAjZWxzZQotICAgLy8gVGhyZWFkU2FuaXRpemVyIGJsb2F0cyB0aGUgc3Rh Y2sgaGVhdmlseS4gRXZpZGVuY2UgaGFzIGJlZW4gdGhhdCB0aGUKLSAgIC8vIGRlZmF1bHQgc3Rh Y2sgc2l6ZSBpc24ndCBlbm91Z2ggZm9yIHNvbWUgYnJvd3NlciB0ZXN0cy4KZGlmZiAtLWdpdCBh L3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAyNi1kYXRhX3BhY2stYmUucGF0Y2ggYi9zcmNwa2dzL3F0 NS9wYXRjaGVzLzAwMjYtZGF0YV9wYWNrLWJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCBjMTEzZGRiNjU2Ni4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hl cy8wMDI2LWRhdGFfcGFjay1iZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAK LS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdWkvYmFzZS9yZXNvdXJjZS9k YXRhX3BhY2suY2Mub3JpZwkyMDE4LTA5LTExIDE0OjE2OjUzLjEwNDg5NzM3OSArMDIwMAotKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91aS9iYXNlL3Jlc291cmNlL2RhdGFf cGFjay5jYwkyMDE4LTA5LTExIDE0OjE3OjEyLjAwOTg5NjI1MyArMDIwMAotQEAgLTM4MywxMiAr MzgzLDYgQEAKLSAKLSBib29sIERhdGFQYWNrOjpHZXRTdHJpbmdQaWVjZSh1aW50MTZfdCByZXNv dXJjZV9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlOjpTdHJpbmdQaWVj ZSogZGF0YSkgY29uc3QgewotLSAgLy8gSXQgd29uJ3QgYmUgaGFyZCB0byBtYWtlIHRoaXMgZW5k aWFuLWFnbm9zdGljLCBidXQgaXQncyBub3Qgd29ydGgKLS0gIC8vIGJvdGhlcmluZyB0byBkbyBy aWdodCBub3cuCi0tI2lmICFkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4pCi0tI2Vycm9y ICJkYXRhcGFjayBhc3N1bWVzIGxpdHRsZSBlbmRpYW4iCi0tI2VuZGlmCi0tCi0gICBjb25zdCBF bnRyeSogdGFyZ2V0ID0gTG9va3VwRW50cnlCeUlkKHJlc291cmNlX2lkKTsKLSAgIGlmICghdGFy Z2V0KQotICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVz LzAwMjctcmVtb3ZlLWdsaWJjLWNoZWNrLnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDI3 LXJlbW92ZS1nbGliYy1jaGVjay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg ZmQwYWI4NDljMDEuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAyNy1y ZW1vdmUtZ2xpYmMtY2hlY2sucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi0t LS0gcXR3ZWJlbmdpbmUvY29uZmlnLnRlc3RzL2dsaWJjL2dsaWJjLmNwcAotKysrIHF0d2ViZW5n aW5lL2NvbmZpZy50ZXN0cy9nbGliYy9nbGliYy5jcHAKLUBAIC0yOCwxMCArMjgsNiBAQAotIAot ICNpbmNsdWRlIDxmZWF0dXJlcy5oPgotIAotLSNpZiBfX0dMSUJDX18gPCAyIHx8IF9fR0xJQkNf TUlOT1JfXyA8IDE3Ci0tI2Vycm9yIGdsaWJjIHZlcnNpb25zIGJlbG93IDIuMTcgYXJlIG5vdCBz dXBwb3J0ZWQKLS0jZW5kaWYKLS0KLSBpbnQgbWFpbihpbnQgLCBjaGFyICoqKSB7Ci0gICByZXR1 cm4gMDsKLSB9CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMzItbXVzbC1jcm9z cy1uby1hc21fcHRyYWNlX2gucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMzItbXVzbC1j cm9zcy1uby1hc21fcHRyYWNlX2gucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDE0MDc0MmY3MmMyLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMzIt bXVzbC1jcm9zcy1uby1hc21fcHRyYWNlX2gucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCAr MCwwIEBACi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4 X3B0cmFjZV9kdW1wZXIuY2MJMjAxOC0wOC0yNyAxMDoyMTozMS4wMDAwMDAwMDAgKzAyMDAKLSsr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQv YnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfcHRyYWNlX2R1 bXBlci5jYwkyMDE4LTExLTIyIDAwOjQxOjU4LjUyMjQ3NzU1OSArMDEwMAotQEAgLTM4LDcgKzM4 LDEyIEBACi0gCi0gI2luY2x1ZGUgImNsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhf cHRyYWNlX2R1bXBlci5oIgotIAotKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKLSAjaW5jbHVkZSA8 YXNtL3B0cmFjZS5oPgotKyNlbHNlCi0rLyogRm9yIGFybSotbXVzbCB0aGlzIGRlZmluaXRpb24g aXMgbWlzc2luZyAqLwotKyNkZWZpbmUgQVJNX3NwIHVyZWdzWzEzXQotKyNlbmRpZgotICNpbmNs dWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4K LS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtw YWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfY29yZV9k dW1wZXIuY2MJMjAxOC0wOC0yNyAxMDoyMTozMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQv c3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfY29yZV9kdW1wZXIuY2MJMjAx OC0xMS0yMiAwMDo0OTozOS41MzM0OTIyNDUgKzAxMDAKLUBAIC0zMiw3ICszMiwxMiBAQAotIAot ICNpbmNsdWRlICJjbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2NvcmVfZHVtcGVy LmgiCi0gCi0rI2lmIGRlZmluZWQoX19HTElCQ19fKQotICNpbmNsdWRlIDxhc20vcHRyYWNlLmg+ Ci0rI2Vsc2UKLSsvKiBGb3IgYXJtKi1tdXNsIHRoaXMgZGVmaW5pdGlvbiBpcyBtaXNzaW5nICov Ci0rI2RlZmluZSBBUk1fc3AgdXJlZ3NbMTNdCi0rI2VuZGlmCi0gI2luY2x1ZGUgPGFzc2VydC5o PgotICNpbmNsdWRlIDxlbGYuaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvcXQ1L3BhdGNoZXMvMDA0MC15YXNtLW5scy5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNo ZXMvMDA0MC15YXNtLW5scy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjJh YzA0MjA3NjQuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0MC15YXNt LW5scy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLWRpZmYgLS1naXQgc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3lhc20vc291cmNlL2NvbmZpZy9saW51eC9j b25maWcuaCBzcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkveWFzbS9zb3VyY2UvY29u ZmlnL2xpbnV4L2NvbmZpZy5oCi1pbmRleCA5ZTM2NTM5Li5mNTg4MDgzIDEwMDY0NAotLS0tIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vdGhpcmRfcGFydHkveWFzbS9zb3VyY2Uv Y29uZmlnL2xpbnV4L2NvbmZpZy5oCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtLy90aGlyZF9wYXJ0eS95YXNtL3NvdXJjZS9jb25maWcvbGludXgvY29uZmlnLmgKLUBAIC01 LDcgKzUsNyBAQAotICNkZWZpbmUgQ1BQX1BST0cgImdjYyAtRSIKLSAKLSAvKiAqLwotLSNkZWZp bmUgRU5BQkxFX05MUyAxCi0rLyogI3VuZGVmIEVOQUJMRV9OTFMgMSAqLwotIAotIC8qIERlZmlu ZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgYWJvcnQnIGZ1bmN0aW9uLiAqLwotICNkZWZpbmUgSEFW RV9BQk9SVCAxCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDItYXJtLXZvaWQt aXMtbm90LWFuZHJvaWQucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDItYXJtLXZvaWQt aXMtbm90LWFuZHJvaWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxMzI5 MGQzY2NkLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDItYXJtLXZv aWQtaXMtbm90LWFuZHJvaWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0t LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy90aGlyZF9wYXJ0eS9vcGVubWF4 X2RsL2RsL0JVSUxELmduCTIwMTktMDQtMDkgMDk6MzE6MTYuMDAwMDAwMDAwICswMjAwCi0rKysg LQkyMDE5LTA1LTA2IDIzOjA4OjA5LjUzNzM0NjU0NiArMDIwMAotQEAgLTIwNiwxOCArMjA2LDYg QEAKLSAgICAgICAic3Avc3JjL2FybS9hcm12Ny9vbXhTUF9GRlRGd2RfUlRvQ0NTX0YzMl9TZnNf cy5TIiwKLSAgICAgICAic3Avc3JjL2FybS9hcm12Ny9vbXhTUF9GRlRJbnZfQ0NTVG9SX0YzMl9T ZnNfcy5TIiwKLSAgICAgXQotLSAgICBpZiAoYXJtX29wdGlvbmFsbHlfdXNlX25lb24pIHsKLS0g ICAgICAjIFJ1bi10aW1lIE5FT04gZGV0ZWN0aW9uLgotLSAgICAgIGRlcHMgPSBbCi0tICAgICAg ICAiLy90aGlyZF9wYXJ0eS9hbmRyb2lkX3Rvb2xzOmNwdV9mZWF0dXJlcyIsCi0tICAgICAgXQot LQotLSAgICAgICMgVG8gZ2V0IHRoZSBfX2FuZHJvaWRfbG9nX3ByaW50IHJvdXRpbmUKLS0gICAg ICBsaWJzID0gWyAibG9nIiBdCi0tCi0tICAgICAgIyBEZXRlY3Rpb24gcm91dGluZQotLSAgICAg IHNvdXJjZXMgKz0gWyAic3Avc3JjL2FybS9kZXRlY3QuYyIgXQotLSAgICB9Ci0gICB9Ci0gCi0g ICAjIE5FT04gaW1wbGVtZW50YXRpb24gb2YgRkZULiBUaGlzIGxpYnJhcnkgaXMgTk9UCmRpZmYg LS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDQtcXQtbXVzbC1leGVjaW5mby5wYXRjaCBi L3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0NC1xdC1tdXNsLWV4ZWNpbmZvLnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGYzYTM4NzQ1YS4uMDAwMDAwMDAwMDAKLS0tIGEvc3Jj cGtncy9xdDUvcGF0Y2hlcy8wMDQ0LXF0LW11c2wtZXhlY2luZm8ucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSwxMDcgKzAsMCBAQAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS8vYmFzZS9kZWJ1Zy9zdGFja190cmFjZV9wb3NpeC5jYy5vcmlnCTIwMTktMDQtMDkgMDk6MzE6 MTYuMDAwMDAwMDAwICswMjAwCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt Ly9iYXNlL2RlYnVnL3N0YWNrX3RyYWNlX3Bvc2l4LmNjCTIwMTktMDUtMDYgMjM6MTY6MTMuMjQ1 NTAyNDY3ICswMjAwCi1AQCAtMjcsNyArMjcsNyBAQAotICNpZiAhZGVmaW5lZChVU0VfU1lNQk9M SVpFKQotICNpbmNsdWRlIDxjeHhhYmkuaD4KLSAjZW5kaWYKLS0jaWYgIWRlZmluZWQoX19VQ0xJ QkNfXykgJiYgIWRlZmluZWQoX0FJWCkKLSsjaWYgZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZp bmVkKF9BSVgpCi0gI2luY2x1ZGUgPGV4ZWNpbmZvLmg+Ci0gI2VuZGlmCi0gCi1AQCAtODYsNyAr ODYsNyBAQAotICAgLy8gTm90ZTogY29kZSBpbiB0aGlzIGZ1bmN0aW9uIGlzIE5PVCBhc3luYy1z aWduYWwgc2FmZSAoc3RkOjpzdHJpbmcgdXNlcwotICAgLy8gbWFsbG9jIGludGVybmFsbHkpLgot IAotLSNpZiAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQotKyNpZiBkZWZp bmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKLSAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5 cGUgc2VhcmNoX2Zyb20gPSAwOwotICAgd2hpbGUgKHNlYXJjaF9mcm9tIDwgdGV4dC0+c2l6ZSgp KSB7Ci0gICAgIC8vIExvb2sgZm9yIHRoZSBzdGFydCBvZiBhIG1hbmdsZWQgc3ltYm9sLCBmcm9t IHNlYXJjaF9mcm9tLgotQEAgLTEyMSw3ICsxMjEsNyBAQAotICAgICAgIHNlYXJjaF9mcm9tID0g bWFuZ2xlZF9zdGFydCArIDI7Ci0gICAgIH0KLSAgIH0KLS0jZW5kaWYgIC8vICFkZWZpbmVkKF9f VUNMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCi0rI2VuZGlmICAvLyAhZGVmaW5lZChfX0dMSUJD X18pICYmICFkZWZpbmVkKF9BSVgpCi0gfQotICNlbmRpZiAgLy8gIWRlZmluZWQoVVNFX1NZTUJP TElaRSkKLSAKLUBAIC0xMzMsNyArMTMzLDcgQEAKLSAgIHZpcnR1YWwgfkJhY2t0cmFjZU91dHB1 dEhhbmRsZXIoKSA9IGRlZmF1bHQ7Ci0gfTsKLSAKLS0jaWYgIWRlZmluZWQoX19VQ0xJQkNfXykg JiYgIWRlZmluZWQoX0FJWCkKLSsjaWYgZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9B SVgpCi0gdm9pZCBPdXRwdXRQb2ludGVyKHZvaWQqIHBvaW50ZXIsIEJhY2t0cmFjZU91dHB1dEhh bmRsZXIqIGhhbmRsZXIpIHsKLSAgIC8vIFRoaXMgc2hvdWxkIGJlIG1vcmUgdGhhbiBlbm91Z2gg dG8gc3RvcmUgYSA2NC1iaXQgbnVtYmVyIGluIGhleDoKLSAgIC8vIDE2IGhleCBkaWdpdHMgKyAx IGZvciBudWxsLXRlcm1pbmF0b3IuCi1AQCAtMjE2LDcgKzIxNiw3IEBACi0gICB9Ci0gI2VuZGlm ICAvLyBkZWZpbmVkKFVTRV9TWU1CT0xJWkUpCi0gfQotLSNlbmRpZiAgLy8gIWRlZmluZWQoX19V Q0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKLSsjZW5kaWYgIC8vICFkZWZpbmVkKF9fR0xJQkNf XykgJiYgIWRlZmluZWQoX0FJWCkKLSAKLSB2b2lkIFByaW50VG9TdGRlcnIoY29uc3QgY2hhciog b3V0cHV0KSB7Ci0gICAvLyBOT1RFOiBUaGlzIGNvZGUgTVVTVCBiZSBhc3luYy1zaWduYWwgc2Fm ZSAoaXQncyB1c2VkIGJ5IGluLXByb2Nlc3MKLUBAIC04MTIsNyArODEyLDcgQEAKLSAgIC8vIE5P VEU6IFRoaXMgY29kZSBNVVNUIGJlIGFzeW5jLXNpZ25hbCBzYWZlIChpdCdzIHVzZWQgYnkgaW4t cHJvY2VzcwotICAgLy8gc3RhY2sgZHVtcGluZyBzaWduYWwgaGFuZGxlcikuIE5PIG1hbGxvYyBv ciBzdGRpbyBpcyBhbGxvd2VkIGhlcmUuCi0gCi0tI2lmICFkZWZpbmVkKF9fVUNMSUJDX18pICYm ICFkZWZpbmVkKF9BSVgpCi0rI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfQUlY KQotICAgLy8gVGhvdWdoIHRoZSBiYWNrdHJhY2UgQVBJIG1hbiBwYWdlIGRvZXMgbm90IGxpc3Qg YW55IHBvc3NpYmxlIG5lZ2F0aXZlCi0gICAvLyByZXR1cm4gdmFsdWVzLCB3ZSB0YWtlIG5vIGNo YW5jZS4KLSAgIHJldHVybiBiYXNlOjpzYXR1cmF0ZWRfY2FzdDxzaXplX3Q+KGJhY2t0cmFjZSh0 cmFjZSwgY291bnQpKTsKLUBAIC04MjUsMTMgKzgyNSwxMyBAQAotIC8vIE5PVEU6IFRoaXMgY29k ZSBNVVNUIGJlIGFzeW5jLXNpZ25hbCBzYWZlIChpdCdzIHVzZWQgYnkgaW4tcHJvY2VzcwotIC8v IHN0YWNrIGR1bXBpbmcgc2lnbmFsIGhhbmRsZXIpLiBOTyBtYWxsb2Mgb3Igc3RkaW8gaXMgYWxs b3dlZCBoZXJlLgotIAotLSNpZiAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChfQUlY KQotKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKLSAgIFByaW50QmFj a3RyYWNlT3V0cHV0SGFuZGxlciBoYW5kbGVyOwotICAgUHJvY2Vzc0JhY2t0cmFjZSh0cmFjZV8s IGNvdW50XywgcHJlZml4X3N0cmluZywgJmhhbmRsZXIpOwotICNlbmRpZgotIH0KLSAKLS0jaWYg IWRlZmluZWQoX19VQ0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKLSsjaWYgZGVmaW5lZChfX0dM SUJDX18pICYmICFkZWZpbmVkKF9BSVgpCi0gdm9pZCBTdGFja1RyYWNlOjpPdXRwdXRUb1N0cmVh bVdpdGhQcmVmaXgoc3RkOjpvc3RyZWFtKiBvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBwcmVmaXhfc3RyaW5nKSBjb25zdCB7Ci0gICBT dHJlYW1CYWNrdHJhY2VPdXRwdXRIYW5kbGVyIGhhbmRsZXIob3MpOwotLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL2RlYnVnL3N0YWNrX3RyYWNlLmNjCTIwMTktMDQt MDkgMDk6MzE6MTYuMDAwMDAwMDAwICswMjAwCi0rKysgLQkyMDE5LTA1LTA2IDIzOjE4OjE0Ljky MzU2Njk5MiArMDIwMAotQEAgLTIzMyw3ICsyMzMsNyBAQAotIH0KLSBzdGQ6OnN0cmluZyBTdGFj a1RyYWNlOjpUb1N0cmluZ1dpdGhQcmVmaXgoY29uc3QgY2hhciogcHJlZml4X3N0cmluZykgY29u c3QgewotICAgc3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOwotLSNpZiAhZGVmaW5lZChfX1VDTElC Q19fKSAmJiAhZGVmaW5lZChfQUlYKQotKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmlu ZWQoX0FJWCkKLSAgIE91dHB1dFRvU3RyZWFtV2l0aFByZWZpeCgmc3RyZWFtLCBwcmVmaXhfc3Ry aW5nKTsKLSAjZW5kaWYKLSAgIHJldHVybiBzdHJlYW0uc3RyKCk7Ci0tLS0gcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtLy9iYXNlL2xvZ2dpbmcuY2MJMjAxNy0xMS0yOCAxNDowNjo1 My4wMDAwMDAwMDAgKzAxMDAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v L2Jhc2UvbG9nZ2luZy5jYwkyMDE4LTAxLTI3IDIyOjQ2OjM0Ljk3MDQwNjgwNyArMDEwMAotQEAg LTU0Niw3ICs1NDYsNyBAQAotIAotIExvZ01lc3NhZ2U6On5Mb2dNZXNzYWdlKCkgewotICAgc2l6 ZV90IHN0YWNrX3N0YXJ0ID0gc3RyZWFtXy50ZWxscCgpOwotLSNpZiAhZGVmaW5lZChPRkZJQ0lB TF9CVUlMRCkgJiYgIWRlZmluZWQoT1NfTkFDTCkgJiYgIWRlZmluZWQoX19VQ0xJQkNfXykgJiYg XAotKyNpZiAhZGVmaW5lZChPRkZJQ0lBTF9CVUlMRCkgJiYgIWRlZmluZWQoT1NfTkFDTCkgJiYg ZGVmaW5lZChfX0dMSUJDX18pICYmIFwKLSAgICAgIWRlZmluZWQoT1NfQUlYKQotICAgaWYgKHNl dmVyaXR5XyA9PSBMT0dfRkFUQUwgJiYgIWJhc2U6OmRlYnVnOjpCZWluZ0RlYnVnZ2VkKCkpIHsK LSAgICAgLy8gSW5jbHVkZSBhIHN0YWNrIHRyYWNlIG9uIGEgZmF0YWwsIHVubGVzcyBhIGRlYnVn Z2VyIGlzIGF0dGFjaGVkLgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS93dGYvYXNzZXJ0aW9ucy5jYwkyMDE5 LTA0LTA5IDA5OjMxOjE2LjAwMDAwMDAwMCArMDIwMAotKysrIC0JMjAxOS0wNS0wNiAyMzoxMjow Ny4wNDA5NzcyNTggKzAyMDAKLUBAIC01MSw4ICs1MSwxMCBAQAotICNpZiBkZWZpbmVkKE9TX01B Q09TWCkgfHwgKGRlZmluZWQoT1NfTElOVVgpICYmICFkZWZpbmVkKF9fVUNMSUJDX18pKQotICNp bmNsdWRlIDxjeHhhYmkuaD4KLSAjaW5jbHVkZSA8ZGxmY24uaD4KLSsjaWYgZGVmaW5lZChfX0dM SUJDX18pCi0gI2luY2x1ZGUgPGV4ZWNpbmZvLmg+Ci0gI2VuZGlmCi0rI2VuZGlmCi0gCi0gI2lm IGRlZmluZWQoT1NfQU5EUk9JRCkKLSAjaW5jbHVkZSA8YW5kcm9pZC9sb2cuaD4KZGlmZiAtLWdp dCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0NS1xdC1tdXNsLXRocmVhZC1zdGFja3NpemUucGF0 Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDUtcXQtbXVzbC10aHJlYWQtc3RhY2tzaXplLnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTY3NTNiZWYzMC4uMDAwMDAwMDAw MDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQ1LXF0LW11c2wtdGhyZWFkLXN0YWNrc2l6 ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLWRpZmYgLS1naXQgYS9zcmMv M3JkcGFydHkvY2hyb21pdW0vcHBhcGkvdXRpbGl0eS90aHJlYWRpbmcvc2ltcGxlX3RocmVhZC5j YyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9wcGFwaS91dGlsaXR5L3RocmVhZGluZy9zaW1wbGVf dGhyZWFkLmNjCi1pbmRleCAwMmJmNDliLi4wNWVlMTgyIDEwMDY0NAotLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9wcGFwaS91dGlsaXR5L3RocmVhZGluZy9zaW1wbGVfdGhy ZWFkLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3BwYXBpL3V0aWxp dHkvdGhyZWFkaW5nL3NpbXBsZV90aHJlYWQuY2MKLUBAIC0xMyw3ICsxMyw3IEBAIG5hbWVzcGFj ZSBwcCB7Ci0gbmFtZXNwYWNlIHsKLSAKLSAvLyBVc2UgMk1CIGRlZmF1bHQgc3RhY2sgc2l6ZSBm b3IgTmF0aXZlIENsaWVudCwgb3RoZXJ3aXNlIHVzZSBzeXN0ZW0gZGVmYXVsdC4KLS0jaWYgZGVm aW5lZChfX25hdGl2ZV9jbGllbnRfXykKLSsjaWYgZGVmaW5lZChfX25hdGl2ZV9jbGllbnRfXykg fHwgIWRlZmluZWQoX19HTElCQ19fKQotIGNvbnN0IHNpemVfdCBrRGVmYXVsdFN0YWNrU2l6ZSA9 IDIgKiAxMDI0ICogMTAyNDsKLSAjZWxzZQotIGNvbnN0IHNpemVfdCBrRGVmYXVsdFN0YWNrU2l6 ZSA9IDA7Ci1kaWZmIC0tZ2l0IGEvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Y4L3NyYy9iYXNlL3Bs YXRmb3JtL3BsYXRmb3JtLXBvc2l4LmNjIGIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Y4L3NyYy9i YXNlL3BsYXRmb3JtL3BsYXRmb3JtLXBvc2l4LmNjCi1pbmRleCBjZjdmM2VjLi5lMDZhNWNlIDEw MDY0NAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92OC9zcmMvYmFzZS9w bGF0Zm9ybS9wbGF0Zm9ybS1wb3NpeC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS92OC9zcmMvYmFzZS9wbGF0Zm9ybS9wbGF0Zm9ybS1wb3NpeC5jYwotQEAgLTc2MSw3 ICs3NjEsNyBAQCB2b2lkIFRocmVhZDo6U3RhcnQoKSB7Ci0gI2lmIFY4X09TX01BQ09TWAotICAg ICAvLyBEZWZhdWx0IG9uIE1hYyBPUyBYIGlzIDUxMmtCIC0tIGJ1bXAgdXAgdG8gMU1CCi0gICAg IHN0YWNrX3NpemUgPSAxICogMTAyNCAqIDEwMjQ7Ci0tI2VsaWYgVjhfT1NfQUlYCi0rI2VsaWYg VjhfT1NfQUlYIHx8ICFkZWZpbmVkKF9fR0xJQkNfXykKLSAgICAgLy8gRGVmYXVsdCBvbiBBSVgg aXMgOTZrQiAtLSBidW1wIHVwIHRvIDJNQgotICAgICBzdGFja19zaXplID0gMiAqIDEwMjQgKiAx MDI0OwotICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQ2LXNhbmRi b3gtbWVtYmFycmllci5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0Ni1zYW5kYm94LW1l bWJhcnJpZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3Mzk3MWYyNDMy Li4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDYtc2FuZGJveC1tZW1i YXJyaWVyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9h cm02NF9saW51eF9zeXNjYWxscy5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtLy9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2FybTY0X2xpbnV4X3N5c2NhbGxzLmgK LUBAIC0xMDYzLDQgKzEwNjMsOCBAQAotICNkZWZpbmUgX19OUl9tZW1mZF9jcmVhdGUgMjc5Ci0g I2VuZGlmCi0gCi0rI2lmICFkZWZpbmVkKF9fTlJfbWVtYmFycmllcikKLSsjZGVmaW5lIF9fTlJf bWVtYmFycmllciAyODMKLSsjZW5kaWYKLSsKLSAjZW5kaWYgIC8vIFNBTkRCT1hfTElOVVhfU1lT VEVNX0hFQURFUlNfQVJNNjRfTElOVVhfU1lTQ0FMTFNfSF8KLQotLS0tIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS8vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9hcm1fbGlu dXhfc3lzY2FsbHMuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vc2Fu ZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9hcm1fbGludXhfc3lzY2FsbHMuaAotQEAgLTEzODUs NiArMTM4NSwxMCBAQAotICNkZWZpbmUgX19OUl9tZW1mZF9jcmVhdGUgKF9fTlJfU1lTQ0FMTF9C QVNFKzM4NSkKLSAjZW5kaWYKLSAKLSsjaWYgIWRlZmluZWQoX19OUl9tZW1iYXJyaWVyKQotKyNk ZWZpbmUgX19OUl9tZW1iYXJyaWVyIChfX05SX1NZU0NBTExfQkFTRSszODkpCi0rI2VuZGlmCi0r Ci0gLy8gQVJNIHByaXZhdGUgc3lzY2FsbHMuCi0gI2lmICFkZWZpbmVkKF9fQVJNX05SX0JBU0Up Ci0gI2RlZmluZSBfX0FSTV9OUl9CQVNFIChfX05SX1NZU0NBTExfQkFTRSArIDB4RjAwMDApCi0K LS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL3NhbmRib3gvbGludXgvc3lz dGVtX2hlYWRlcnMveDg2XzMyX2xpbnV4X3N5c2NhbGxzLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMveDg2XzMyX2xp bnV4X3N5c2NhbGxzLmgKLUBAIC0xNDIyLDUgKzE0MjIsOSBAQAotICNkZWZpbmUgX19OUl9tZW1m ZF9jcmVhdGUgMzU2Ci0gI2VuZGlmCi0gCi0rI2lmICFkZWZpbmVkKF9fTlJfbWVtYmFycmllcikK LSsjZGVmaW5lIF9fTlJfbWVtYmFycmllciAzNzUKLSsjZW5kaWYKLSsKLSAjZW5kaWYgIC8vIFNB TkRCT1hfTElOVVhfU1lTVEVNX0hFQURFUlNfWDg2XzMyX0xJTlVYX1NZU0NBTExTX0hfCi0gCi0t LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy9zYW5kYm94L2xpbnV4L3N5c3Rl bV9oZWFkZXJzL3g4Nl82NF9saW51eF9zeXNjYWxscy5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtLy9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL3g4Nl82NF9saW51 eF9zeXNjYWxscy5oCi1AQCAtMTI5MCw1ICsxMjkwLDkgQEAKLSAjZGVmaW5lIF9fTlJfbWVtZmRf Y3JlYXRlIDMxOQotICNlbmRpZgotIAotKyNpZiAhZGVmaW5lZChfX05SX21lbWJhcnJpZXIpCi0r I2RlZmluZSBfX05SX21lbWJhcnJpZXIgMzI0Ci0rI2VuZGlmCi0rCi0gI2VuZGlmICAvLyBTQU5E Qk9YX0xJTlVYX1NZU1RFTV9IRUFERVJTX1g4Nl82NF9MSU5VWF9TWVNDQUxMU19IXwotIAotLS0t IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vc2FuZGJveC9saW51eC9zZWNjb21w LWJwZi1oZWxwZXJzL3N5c2NhbGxfc2V0cy5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS8vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfc2V0 cy5jYwotQEAgLTM3MCw2ICszNzAsNyBAQAotICAgc3dpdGNoIChzeXNubykgewotICAgICBjYXNl IF9fTlJfZXhpdDoKLSAgICAgY2FzZSBfX05SX2V4aXRfZ3JvdXA6Ci0rICAgIGNhc2UgX19OUl9t ZW1iYXJyaWVyOgotICAgICBjYXNlIF9fTlJfd2FpdDQ6Ci0gICAgIGNhc2UgX19OUl93YWl0aWQ6 Ci0gI2lmIGRlZmluZWQoX19pMzg2X18pCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVz LzAwNDctZ24tY3Jvc3Mtc3lzcm9vdC5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0Ny1n bi1jcm9zcy1zeXNyb290LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTY2 ODlhNDE4My4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQ3LWduLWNy b3NzLXN5c3Jvb3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1UaGVyZSBp cyBubyByZWFzb24gdG8gcnVuIHRoaXMgc2NyaXB0IGFuZCBydW5uaW5nIGl0IGZhaWxzIG9uIGFy Y2hpdGVjdHVyZXMKLWNocm9taXVtIGRvZXMgbm90IG9mZmljaWFsbHkgc3VwcG9ydCAoc3VjaCBh cyBwcGM2NCkuCi0KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYnVpbGQv Y29uZmlnL3Bvc2l4L0JVSUxELmduCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL2J1aWxkL2NvbmZpZy9wb3NpeC9CVUlMRC5nbgotQEAgLTEwMiwxMiArMTAyLDEyIEBAIGNv bmZpZygicnVudGltZV9saWJyYXJ5IikgewotICAgICAgICMgd2hlbiB0dXJuaW5nIHRoZSBzeXNy b290IG9uIG9yIG9mZi4gKGRlZmluZXMgYXJlIHBhc3NlZCB2aWEgdGhlIGNvbW1hbmQKLSAgICAg ICAjIGxpbmUsIGFuZCBidWlsZCBzeXN0ZW0gcmVidWlsZHMgdGhpbmdzIHdoZW4gdGhlaXIgY29t bWFuZGxpbmUKLSAgICAgICAjIGNoYW5nZXMpLiBOb3RoaW5nIHNob3VsZCBldmVyIHJlYWQgdGhp cyBkZWZpbmUuCi0tICAgICAgc3lzcm9vdF9oYXNoID0KLS0gICAgICAgICAgZXhlY19zY3JpcHQo Ii8vYnVpbGQvbGludXgvc3lzcm9vdF9zY3JpcHRzL2luc3RhbGwtc3lzcm9vdC5weSIsCi0tICAg ICAgICAgICAgICAgICAgICAgIFsgIi0tcHJpbnQtaGFzaD0kY3VycmVudF9jcHUiIF0sCi0tICAg ICAgICAgICAgICAgICAgICAgICJ0cmltIHN0cmluZyIsCi0tICAgICAgICAgICAgICAgICAgICAg IFsgIi8vYnVpbGQvbGludXgvc3lzcm9vdF9zY3JpcHRzL3N5c3Jvb3RzLmpzb24iIF0pCi0tICAg ICAgZGVmaW5lcyArPSBbICJDUl9TWVNST09UX0hBU0g9JHN5c3Jvb3RfaGFzaCIgXQotKyAgICAg ICNzeXNyb290X2hhc2ggPQotKyAgICAgICMgICAgZXhlY19zY3JpcHQoIi8vYnVpbGQvbGludXgv c3lzcm9vdF9zY3JpcHRzL2luc3RhbGwtc3lzcm9vdC5weSIsCi0rICAgICAgIyAgICAgICAgICAg ICAgICBbICItLXByaW50LWhhc2g9JGN1cnJlbnRfY3B1IiBdLAotKyAgICAgICMgICAgICAgICAg ICAgICAgInRyaW0gc3RyaW5nIiwKLSsgICAgICAjICAgICAgICAgICAgICAgIFsgIi8vYnVpbGQv bGludXgvc3lzcm9vdF9zY3JpcHRzL3N5c3Jvb3RzLmpzb24iIF0pCi0rICAgICAgI2RlZmluZXMg Kz0gWyAiQ1JfU1lTUk9PVF9IQVNIPSRzeXNyb290X2hhc2giIF0KLSAgICAgfQotICAgICBhc21m bGFncyArPSBzeXNyb290X2ZsYWdzCi0gCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVz LzAwNTAtcW1ha2UtbWtzcGVjcy5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA1MC1xbWFr ZS1ta3NwZWNzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4y ZWVhZTYzMmNmZQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA1MC1x bWFrZS1ta3NwZWNzLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK1N1Ym1vZHVsZSBxdGJhc2UgY29u dGFpbnMgdW50cmFja2VkIGNvbnRlbnQKK1N1Ym1vZHVsZSBxdGJhc2UgY29udGFpbnMgbW9kaWZp ZWQgY29udGVudAorZGlmZiAtLWdpdCBxdGJhc2UvbWtzcGVjcy9mZWF0dXJlcy9xdF9idWlsZF9j b25maWcucHJmIHF0YmFzZS9ta3NwZWNzL2ZlYXR1cmVzL3F0X2J1aWxkX2NvbmZpZy5wcmYKK2lu ZGV4IDgyNzNiYTNmZTEuLmI2NzRmNDIxMDkgMTAwNjQ0CistLS0gcXRiYXNlL21rc3BlY3MvZmVh dHVyZXMvcXRfYnVpbGRfY29uZmlnLnByZgorKysrIHF0YmFzZS9ta3NwZWNzL2ZlYXR1cmVzL3F0 X2J1aWxkX2NvbmZpZy5wcmYKK0BAIC0xMSw2ICsxMSwxMCBAQAorIAorICFjb250YWlucyhRTUFL RV9JTlRFUk5BTF9JTkNMVURFRF9GSUxFUywgLipxbW9kdWxlXFwucHJpKSB7CisgICAgIFFNQUtF X1FUX01PRFVMRSA9ICQkW1FUX0hPU1RfREFUQS9nZXRdL21rc3BlY3MvcW1vZHVsZS5wcmkKKysg ICAgZGVmaW5lZChRTUFLRV9UQVJHRVRfTU9EVUxFLHZhcik6ZXhpc3RzKCQkUU1BS0VfVEFSR0VU X01PRFVMRSkgeworKyAgICAgICAgUU1BS0VfUVRfTU9EVUxFID0gJCRRTUFLRV9UQVJHRVRfTU9E VUxFCisrICAgICAgICBtZXNzYWdlKCJUcnlpbmcgLnFtb2R1bGUucHJpIGZyb20gKCQkUU1BS0Vf UVRfQ09ORklHKSIpCisrICAgIH0KKyAgICAgIWV4aXN0cygkJFFNQUtFX1FUX01PRFVMRSl8IWlu Y2x1ZGUoJCRRTUFLRV9RVF9NT0RVTEUsICIiLCB0cnVlKSB7CisgICAgICAgICBkZWJ1ZygxLCAi Q2Fubm90IGxvYWQgcW1vZHVsZS5wcmkhIikKKyAgICAgfSBlbHNlIHsKK2RpZmYgLS1naXQgcXRi YXNlL21rc3BlY3MvZmVhdHVyZXMvcXRfY29uZmlnLnByZiBxdGJhc2UvbWtzcGVjcy9mZWF0dXJl cy9xdF9jb25maWcucHJmCitpbmRleCA5M2M1NGUzMDEwLi5hYWZmMjZiNTJhIDEwMDY0NAorLS0t IHF0YmFzZS9ta3NwZWNzL2ZlYXR1cmVzL3F0X2NvbmZpZy5wcmYKKysrKyBxdGJhc2UvbWtzcGVj cy9mZWF0dXJlcy9xdF9jb25maWcucHJmCitAQCAtMSw2ICsxLDEwIEBACisgIyBUaGlzIGZpbGUg aXMgbG9hZGVkIGFzIG9uZSBvZiB0aGUgbGFzdCB0aGluZ3MgYnkgYWxsIHFtYWtlc3BlY3MuCisg CisgUU1BS0VfUVRfQ09ORklHID0gJCRbUVRfSE9TVF9EQVRBL2dldF0vbWtzcGVjcy9xY29uZmln LnByaQorK2RlZmluZWQoUU1BS0VfVEFSR0VUX0NPTkZJRyx2YXIpOmV4aXN0cygkJFFNQUtFX1RB UkdFVF9DT05GSUcpIHsKKysgICBRTUFLRV9RVF9DT05GSUcgPSAkJFFNQUtFX1RBUkdFVF9DT05G SUcKKysgICBtZXNzYWdlKCJUcnlpbmcgLnFjb25maWcucHJpIGZyb20gKCQkUU1BS0VfUVRfQ09O RklHKSIpCisrfQorICFleGlzdHMoJCRRTUFLRV9RVF9DT05GSUcpfCFpbmNsdWRlKCQkUU1BS0Vf UVRfQ09ORklHLCAiIiwgdHJ1ZSkgeworICAgIGRlYnVnKDEsICJDYW5ub3QgbG9hZCBxY29uZmln LnByaSEiKQorIH0gZWxzZSB7CitTdWJtb2R1bGUgcXR3ZWJlbmdpbmUgY29udGFpbnMgdW50cmFj a2VkIGNvbnRlbnQKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA4OS13ZWJlbmdp bmUtcHBjNjQucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwODktd2ViZW5naW5lLXBwYzY0 LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MDJkN2UyZDYyMi4uMDAwMDAw MDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDg5LXdlYmVuZ2luZS1wcGM2NC5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLS0tLSBxdHdlYmVuZ2luZS9ta3NwZWNz L2ZlYXR1cmVzL2Z1bmN0aW9ucy5wcmYKLSsrKyBxdHdlYmVuZ2luZS9ta3NwZWNzL2ZlYXR1cmVz L2Z1bmN0aW9ucy5wcmYKLUBAIC05NSw2ICs5NSw3IEBACi0gICAgIGNvbnRhaW5zKHF0QXJjaCwg ImFybTY0Iik6IHJldHVybihhcm02NCkKLSAgICAgY29udGFpbnMocXRBcmNoLCAibWlwcyIpOiBy ZXR1cm4obWlwc2VsKQotICAgICBjb250YWlucyhxdEFyY2gsICJtaXBzNjQiKTogcmV0dXJuKG1p cHM2NGVsKQotKyAgICBjb250YWlucyhxdEFyY2gsICJwb3dlcjY0Iik6IHJldHVybihwcGM2NCkK LSAgICAgcmV0dXJuKHVua25vd24pCi0gfQotIAotLS0tIHF0d2ViZW5naW5lL21rc3BlY3MvZmVh dHVyZXMvcGxhdGZvcm0ucHJmCi0rKysgcXR3ZWJlbmdpbmUvbWtzcGVjcy9mZWF0dXJlcy9wbGF0 Zm9ybS5wcmYKLUBAIC04Miw2ICs4Miw3IEBACi0gICAgIGNvbnRhaW5zKFFUX0FSQ0gsICJhcm0i KXxjb250YWlucyhRVF9BUkNILCAiYXJtNjQiKTogcmV0dXJuKHRydWUpCi0gICAgIGNvbnRhaW5z KFFUX0FSQ0gsICJtaXBzIik6IHJldHVybih0cnVlKQotICMgICAgIGNvbnRhaW5zKFFUX0FSQ0gs ICJtaXBzNjQiKTogcmV0dXJuKHRydWUpCi0rICAgIGNvbnRhaW5zKFFUX0FSQ0gsICJwb3dlcjY0 Iik6IHJldHVybih0cnVlKQotIAotICAgICBza2lwQnVpbGQoIlF0V2ViRW5naW5lIGNhbiBvbmx5 IGJlIGJ1aWx0IGZvciB4ODYsIHg4Ni02NCwgQVJNLCBBYXJjaDY0LCBhbmQgTUlQU2VsIGFyY2hp dGVjdHVyZXMuIikKLSAgICAgcmV0dXJuKGZhbHNlKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUv cGF0Y2hlcy8wMDkwLWNocm9taXVtLXBwYzY0bGUucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVz LzAwOTAtY2hyb21pdW0tcHBjNjRsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDRkOGQzZWZhYWMuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA5 MC1jaHJvbWl1bS1wcGM2NGxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDI2NyArMCwwIEBA Ci1UaGlzIGlzIGEgYmFzZSBwYXRjaCB0aGF0IGFkZHMgc3VwcG9ydCBmb3IgcHBjNjRsZSBnbGli Yy4gQmlnIGVuZGlhbiBhbmQgbXVzbAotc3VwcG9ydCBpcyBhZGRlZCBpbiBleHRyYSBwYXRjaGVz IGFmdGVyd2FyZHMuCi0KLVBpbmcgcTY2IGlmIHlvdSdyZSB1cGRhdGluZyBxdDUgYW5kIHRoZSBw YXRjaCBkb2VzIG5vdCBhcHBseSBhbnltb3JlLgotCi1Tb3VyY2U6IGh0dHBzOi8vd2lraS5yYXB0 b3Jjcy5jb20vdy9pbmRleC5waHA/dGl0bGU9UG9ydGluZy9DaHJvbWl1bQotVXBzdHJlYW06IEN1 cnJlbnRseSBiZWluZyBzdWJtaXR0ZWQKLQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3BhZ2VfYWxsb2NhdG9y X2NvbnN0YW50cy5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2Uv YWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3IvcGFnZV9hbGxvY2F0b3JfY29uc3RhbnRzLmgK LUBAIC0xMCw3ICsxMCw3IEBACi0gI2luY2x1ZGUgImJ1aWxkL2J1aWxkX2NvbmZpZy5oIgotIAot IG5hbWVzcGFjZSBiYXNlIHsKLS0jaWYgZGVmaW5lZChPU19XSU4pCi0rI2lmIGRlZmluZWQoT1Nf V0lOKSB8fCBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQotIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90 IGtQYWdlQWxsb2NhdGlvbkdyYW51bGFyaXR5U2hpZnQgPSAxNjsgIC8vIDY0S0IKLSAjZWxpZiBk ZWZpbmVkKF9NSVBTX0FSQ0hfTE9PTkdTT04pCi0gc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1Bh Z2VBbGxvY2F0aW9uR3JhbnVsYXJpdHlTaGlmdCA9IDE0OyAgLy8gMTZLQgotQEAgLTI2LDYgKzI2 LDEwIEBAIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtQYWdlQWxsb2NhdGlvbkdyYW51bGFyaXR5 QmFzZU1hc2sgPQotIAotICNpZiBkZWZpbmVkKF9NSVBTX0FSQ0hfTE9PTkdTT04pCi0gc3RhdGlj IGNvbnN0ZXhwciBzaXplX3Qga1N5c3RlbVBhZ2VTaXplID0gMTYzODQ7Ci0rI2VsaWYgZGVmaW5l ZChBUkNIX0NQVV9QUEM2NCkKLSsvLyBUT0RPOiBtb2Rlcm4gcHBjNjQgY2FuIGRvIDRrIGFuZCA2 NGsgcGFnZSBzaXplcwotKy8vIGZvciBub3csIDY0ayBpcyBhc3N1bWVkCi0rc3RhdGljIGNvbnN0 ZXhwciBzaXplX3Qga1N5c3RlbVBhZ2VTaXplID0gNjU1MzY7Ci0gI2Vsc2UKLSBzdGF0aWMgY29u c3RleHByIHNpemVfdCBrU3lzdGVtUGFnZVNpemUgPSA0MDk2OwotICNlbmRpZgotLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxs b2NhdG9yL3BhcnRpdGlvbl9hbGxvY19jb25zdGFudHMuaAotKysrIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3BhcnRp dGlvbl9hbGxvY19jb25zdGFudHMuaAotQEAgLTM1LDYgKzM1LDggQEAgc3RhdGljIGNvbnN0IHNp emVfdCBrQnVja2V0U2hpZnQgPSAoa0FsbG9jYXRpb25HcmFudWxhcml0eSA9PSA4KSA/IDMgOiAy OwotIAotICNpZiBkZWZpbmVkKF9NSVBTX0FSQ0hfTE9PTkdTT04pCi0gc3RhdGljIGNvbnN0IHNp emVfdCBrUGFydGl0aW9uUGFnZVNoaWZ0ID0gMTY7ICAvLyA2NCBLaUIKLSsjZWxpZiBkZWZpbmVk KEFSQ0hfQ1BVX1BQQzY0KQotK3N0YXRpYyBjb25zdCBzaXplX3Qga1BhcnRpdGlvblBhZ2VTaGlm dCA9IDE4OyAgLy8gMjU2IEtpQgotICNlbHNlCi0gc3RhdGljIGNvbnN0IHNpemVfdCBrUGFydGl0 aW9uUGFnZVNoaWZ0ID0gMTQ7ICAvLyAxNiBLaUIKLSAjZW5kaWYKLS0tLSBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vYnVpbGQvZG93bmxvYWRfbmFjbF90b29sY2hhaW5zLnB5Ci0r KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2J1aWxkL2Rvd25sb2FkX25hY2xf dG9vbGNoYWlucy5weQotQEAgLTExLDYgKzExLDEwIEBAIGltcG9ydCBzeXMKLSAKLSAKLSBkZWYg TWFpbihhcmdzKToKLSsgICMgSWYgYGRpc2FibGVfbmFjbD0xYCBpcyBpbiBHWVBfREVGSU5FUywg ZXhpdAotKyAgaWYgJ2Rpc2FibGVfbmFjbD0xJyBpbiBvcy5lbnZpcm9uLmdldCgnR1lQX0RFRklO RVMnLCAnJyk6Ci0rICAgIHJldHVybiAwCi0rCi0gICBzY3JpcHRfZGlyID0gb3MucGF0aC5kaXJu YW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpCi0gICBzcmNfZGlyID0gb3MucGF0aC5kaXJu YW1lKHNjcmlwdF9kaXIpCi0gICBuYWNsX2RpciA9IG9zLnBhdGguam9pbihzcmNfZGlyLCAnbmF0 aXZlX2NsaWVudCcpCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2J1aWxk L3Rvb2xjaGFpbi9saW51eC9CVUlMRC5nbgotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9idWlsZC90b29sY2hhaW4vbGludXgvQlVJTEQuZ24KLUBAIC01LDYgKzUsMTQgQEAK LSBpbXBvcnQoIi8vYnVpbGQvY29uZmlnL3N5c3Jvb3QuZ25pIikKLSBpbXBvcnQoIi8vYnVpbGQv dG9vbGNoYWluL2djY190b29sY2hhaW4uZ25pIikKLSAKLStjbGFuZ190b29sY2hhaW4oImNsYW5n X3BwYzY0IikgewotKyAgZW5hYmxlX2xpbmtlcl9tYXAgPSB0cnVlCi0rICB0b29sY2hhaW5fYXJn cyA9IHsKLSsgICAgY3VycmVudF9jcHUgPSAicHBjNjQiCi0rICAgIGN1cnJlbnRfb3MgPSAibGlu dXgiCi0rICB9Ci0rfQotKwotIGNsYW5nX3Rvb2xjaGFpbigiY2xhbmdfYXJtIikgewotICAgdG9v bHByZWZpeCA9ICJhcm0tbGludXgtZ251ZWFiaWhmLSIKLSAgIHRvb2xjaGFpbl9hcmdzID0gewot LS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9jb21wb25lbnRzL3VwZGF0ZV9j bGllbnQvdXBkYXRlX3F1ZXJ5X3BhcmFtcy5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9jb21wb25lbnRzL3VwZGF0ZV9jbGllbnQvdXBkYXRlX3F1ZXJ5X3BhcmFtcy5j YwotQEAgLTU1LDYgKzU1LDggQEAgY29uc3QgY2hhciBrQXJjaFtdID0KLSAgICAgIm1pcHM2NGVs IjsKLSAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQotICAgICAibWlwc2VsIjsKLSsjZWxpZiBkZWZp bmVkKF9fcG93ZXJwYzY0X18pCi0rICAgICJwcGM2NCI7Ci0gI2Vsc2UKLSAjZXJyb3IgInVua25v d24gYXJjaCIKLSAjZW5kaWYKLUBAIC0xMjcsNiArMTI5LDggQEAgY29uc3QgY2hhciogVXBkYXRl UXVlcnlQYXJhbXM6OkdldE5hY2xBcmNoKCkgewotICAgcmV0dXJuICJtaXBzMzIiOwotICNlbGlm IGRlZmluZWQoQVJDSF9DUFVfTUlQUzY0RUwpCi0gICByZXR1cm4gIm1pcHM2NCI7Ci0rI2VsaWYg ZGVmaW5lZChBUkNIX0NQVV9QUEM2NCkKLSsgIHJldHVybiAicHBjNjQiOwotICNlbHNlCi0gLy8g Tk9URTogd2hlbiBhZGRpbmcgbmV3IHZhbHVlcyBoZXJlLCBwbGVhc2UgcmVtZW1iZXIgdG8gdXBk YXRlIHRoZQotIC8vIGNvbW1lbnQgaW4gdGhlIC5oIGZpbGUgYWJvdXQgcG9zc2libGUgcmV0dXJu IHZhbHVlcyBmcm9tIHRoaXMgZnVuY3Rpb24uCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL2NvbXBvbmVudHMvdXBkYXRlX2NsaWVudC91cGRhdGVfcXVlcnlfcGFyYW1zLmgK LSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vY29tcG9uZW50cy91cGRhdGVf Y2xpZW50L3VwZGF0ZV9xdWVyeV9wYXJhbXMuaAotQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgVXBk YXRlUXVlcnlQYXJhbXMgewotICAgLy8gUmV0dXJucyB0aGUgdmFsdWUgd2UgdXNlIGZvciB0aGUg Im5hY2xfYXJjaCIgcGFyYW1ldGVyLiBOb3RlIHRoYXQgdGhpcyBtYXkKLSAgIC8vIGJlIGRpZmZl cmVudCBmcm9tIHRoZSAiYXJjaCIgcGFyYW1ldGVyIGFib3ZlIChlLmcuIG9uZSBtYXkgYmUgMzIt Yml0IGFuZAotICAgLy8gdGhlIG90aGVyIDY0LWJpdCkuIFBvc3NpYmxlIHJldHVybiB2YWx1ZXMg aW5jbHVkZTogIng4Ni0zMiIsICJ4ODYtNjQiLAotLSAgLy8gImFybSIsIGFuZCAibWlwczMyIi4K LSsgIC8vICJhcm0iLCAibWlwczMyIiwgYW5kICJwcGM2NCIuCi0gICBzdGF0aWMgY29uc3QgY2hh ciogR2V0TmFjbEFyY2goKTsKLSAKLSAgIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgdmVyc2lvbiBv ZiBDaHJvbWUvQ2hyb21pdW0uCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3NhbmRib3gvZmVhdHVyZXMuZ25pCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3NhbmRib3gvZmVhdHVyZXMuZ25pCi1AQCAtMTIsNiArMTIsNiBAQCB1c2Vfc2VjY29tcF9i cGYgPQotICAgICAoaXNfbGludXggfHwgaXNfYW5kcm9pZCkgJiYKLSAgICAgKGN1cnJlbnRfY3B1 ID09ICJ4ODYiIHx8IGN1cnJlbnRfY3B1ID09ICJ4NjQiIHx8IGN1cnJlbnRfY3B1ID09ICJhcm0i IHx8Ci0gICAgICBjdXJyZW50X2NwdSA9PSAiYXJtNjQiIHx8IGN1cnJlbnRfY3B1ID09ICJtaXBz ZWwiIHx8Ci0tICAgICBjdXJyZW50X2NwdSA9PSAibWlwczY0ZWwiKQotKyAgICAgY3VycmVudF9j cHUgPT0gIm1pcHM2NGVsIiB8fCBjdXJyZW50X2NwdSA9PSAicHBjNjQiKQotIAotIHVzZV9zZWNj b21wX2JwZiA9IHVzZV9zZWNjb21wX2JwZiB8fCBpc19uYWNsX25vbnNmaQotLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L0JVSUxELmduCi0rKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvQlVJTEQuZ24KLUBA IC00MTYsNiArNDE2LDggQEAgY29tcG9uZW50KCJzYW5kYm94X3NlcnZpY2VzIikgewotIAotIHNv dXJjZV9zZXQoInNhbmRib3hfc2VydmljZXNfaGVhZGVycyIpIHsKLSAgIHNvdXJjZXMgPSBbCi0r ICAgICJzeXN0ZW1faGVhZGVycy9wcGM2NF9saW51eF9zeXNjYWxscy5oIiwKLSsgICAgInN5c3Rl bV9oZWFkZXJzL3BwYzY0X2xpbnV4X3Vjb250ZXh0LmgiLAotICAgICAic3lzdGVtX2hlYWRlcnMv YXJtNjRfbGludXhfc3lzY2FsbHMuaCIsCi0gICAgICJzeXN0ZW1faGVhZGVycy9hcm1fbGludXhf c3lzY2FsbHMuaCIsCi0gICAgICJzeXN0ZW1faGVhZGVycy9hcm1fbGludXhfdWNvbnRleHQuaCIs Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvYnBm X2RzbC9saW51eF9zeXNjYWxsX3Jhbmdlcy5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3NhbmRib3gvbGludXgvYnBmX2RzbC9saW51eF9zeXNjYWxsX3Jhbmdlcy5oCi1A QCAtNTUsNiArNTUsMTMgQEAKLSAjZGVmaW5lIE1BWF9QVUJMSUNfU1lTQ0FMTCAyNzl1Ci0gI2Rl ZmluZSBNQVhfU1lTQ0FMTCBNQVhfUFVCTElDX1NZU0NBTEwKLSAKLSsjZWxpZiBkZWZpbmVkKF9f cG93ZXJwYzY0X18pCi0rCi0rI2luY2x1ZGUgPGFzbS91bmlzdGQuaD4KLSsjZGVmaW5lIE1JTl9T WVNDQUxMIDB1Ci0rI2RlZmluZSBNQVhfUFVCTElDX1NZU0NBTEwgMzg2dQotKyNkZWZpbmUgTUFY X1NZU0NBTEwgTUFYX1BVQkxJQ19TWVNDQUxMCi0rCi0gI2Vsc2UKLSAjZXJyb3IgIlVuc3VwcG9y dGVkIGFyY2hpdGVjdHVyZSIKLSAjZW5kaWYKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vc2FuZGJveC9saW51eC9icGZfZHNsL3NlY2NvbXBfbWFjcm9zLmgKLSsrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9icGZfZHNsL3NlY2Nv bXBfbWFjcm9zLmgKLUBAIC0xNiw2ICsxNiw5IEBACi0gI2lmIGRlZmluZWQoX19taXBzX18pCi0g Ly8gc3lzL3VzZXIuaCBpbiBlZ2xpYmMgbWlzc2VzIHNpemVfdCBkZWZpbml0aW9uCi0gI2luY2x1 ZGUgPHN0ZGRlZi5oPgotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsvLyBNYW51YWxs eSBkZWZpbmUgZ3JlZ190IG9uIHBwYzY0Ci0rdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgZ3Jl Z190OwotICNlbmRpZgotICNlbmRpZgotIAotQEAgLTM0Niw2ICszNDksNTEgQEAgc3RydWN0IHJl Z3Nfc3RydWN0IHsKLSAjZGVmaW5lIFNFQ0NPTVBfUFRfUEFSTTQoX3JlZ3MpIChfcmVncykucmVn c1szXQotICNkZWZpbmUgU0VDQ09NUF9QVF9QQVJNNShfcmVncykgKF9yZWdzKS5yZWdzWzRdCi0g I2RlZmluZSBTRUNDT01QX1BUX1BBUk02KF9yZWdzKSAoX3JlZ3MpLnJlZ3NbNV0KLSsKLSsjZWxp ZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KLSsKLSt0 eXBlZGVmIHN0cnVjdCBwdF9yZWdzIHJlZ3Nfc3RydWN0OwotKwotKyNpZmRlZiBBUkNIX0NQVV9M SVRUTEVfRU5ESUFOCi0rI2RlZmluZSBTRUNDT01QX0FSQ0ggQVVESVRfQVJDSF9QUEM2NExFCi0r I2Vsc2UKLSsjZGVmaW5lIFNFQ0NPTVBfQVJDSCBBVURJVF9BUkNIX1BQQzY0Ci0rI2VuZGlmCi0r Ci0rI2RlZmluZSBTRUNDT01QX1JFRyhfY3R4LCBfcmVnKSAoKF9jdHgpLT51Y19tY29udGV4dC5y ZWdzLT5ncHJbX3JlZ10pCi0rCi0rI2RlZmluZSBTRUNDT01QX1JFU1VMVChfY3R4KSBTRUNDT01Q X1JFRyhfY3R4LCAzKQotKyNkZWZpbmUgU0VDQ09NUF9TWVNDQUxMKF9jdHgpIFNFQ0NPTVBfUkVH KF9jdHgsIDApCi0rI2RlZmluZSBTRUNDT01QX0lQKF9jdHgpIChfY3R4KS0+dWNfbWNvbnRleHQu cmVncy0+bmlwCi0rI2RlZmluZSBTRUNDT01QX1BBUk0xKF9jdHgpIFNFQ0NPTVBfUkVHKF9jdHgs IDMpCi0rI2RlZmluZSBTRUNDT01QX1BBUk0yKF9jdHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDQpCi0r I2RlZmluZSBTRUNDT01QX1BBUk0zKF9jdHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDUpCi0rI2RlZmlu ZSBTRUNDT01QX1BBUk00KF9jdHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDYpCi0rI2RlZmluZSBTRUND T01QX1BBUk01KF9jdHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDcpCi0rI2RlZmluZSBTRUNDT01QX1BB Uk02KF9jdHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDgpCi0rCi0rI2RlZmluZSBTRUNDT01QX05SX0lE WCAob2Zmc2V0b2Yoc3RydWN0IGFyY2hfc2VjY29tcF9kYXRhLCBucikpCi0rI2RlZmluZSBTRUND T01QX0FSQ0hfSURYIChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIGFyY2gpKQot KyNkZWZpbmUgU0VDQ09NUF9JUF9NU0JfSURYIFwKLSsgIChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9z ZWNjb21wX2RhdGEsIGluc3RydWN0aW9uX3BvaW50ZXIpICsgNCkKLSsjZGVmaW5lIFNFQ0NPTVBf SVBfTFNCX0lEWCBcCi0rICAob2Zmc2V0b2Yoc3RydWN0IGFyY2hfc2VjY29tcF9kYXRhLCBpbnN0 cnVjdGlvbl9wb2ludGVyKSArIDApCi0rI2RlZmluZSBTRUNDT01QX0FSR19NU0JfSURYKG5yKSBc Ci0rICAob2Zmc2V0b2Yoc3RydWN0IGFyY2hfc2VjY29tcF9kYXRhLCBhcmdzKSArIDggKiAobnIp ICsgNCkKLSsjZGVmaW5lIFNFQ0NPTVBfQVJHX0xTQl9JRFgobnIpIFwKLSsgIChvZmZzZXRvZihz dHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIGFyZ3MpICsgOCAqIChucikgKyAwKQotKwotKyNkZWZp bmUgU0VDQ09NUF9QVF9SRVNVTFQoX3JlZ3MpIChfcmVncykuZ3ByWzNdCi0rI2RlZmluZSBTRUND T01QX1BUX1NZU0NBTEwoX3JlZ3MpIChfcmVncykuZ3ByWzBdCi0rI2RlZmluZSBTRUNDT01QX1BU X0lQKF9yZWdzKSAoX3JlZ3MpLm5pcAotKyNkZWZpbmUgU0VDQ09NUF9QVF9QQVJNMShfcmVncykg KF9yZWdzKS5ncHJbM10KLSsjZGVmaW5lIFNFQ0NPTVBfUFRfUEFSTTIoX3JlZ3MpIChfcmVncyku Z3ByWzRdCi0rI2RlZmluZSBTRUNDT01QX1BUX1BBUk0zKF9yZWdzKSAoX3JlZ3MpLmdwcls1XQot KyNkZWZpbmUgU0VDQ09NUF9QVF9QQVJNNChfcmVncykgKF9yZWdzKS5ncHJbNl0KLSsjZGVmaW5l IFNFQ0NPTVBfUFRfUEFSTTUoX3JlZ3MpIChfcmVncykuZ3ByWzddCi0rI2RlZmluZSBTRUNDT01Q X1BUX1BBUk02KF9yZWdzKSAoX3JlZ3MpLmdwcls4XQotKwotICNlbHNlCi0gI2Vycm9yIFVuc3Vw cG9ydGVkIHRhcmdldCBwbGF0Zm9ybQotIAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvYmFzZWxpbmVfcG9saWN5 LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgv c2VjY29tcC1icGYtaGVscGVycy9iYXNlbGluZV9wb2xpY3kuY2MKLUBAIC04Nyw3ICs4Nyw4IEBA IGJvb2wgSXNCYXNlbGluZVBvbGljeVdhdGNoZWQoaW50IHN5c25vKSB7Ci0gICAgICAgICAgU3lz Y2FsbFNldHM6OklzUHJjdGwoc3lzbm8pIHx8Ci0gICAgICAgICAgU3lzY2FsbFNldHM6OklzUHJv Y2Vzc0dyb3VwT3JTZXNzaW9uKHN5c25vKSB8fAotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBc Ci0tICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BV XzMyX0JJVFMpKQotKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5l ZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0g ICAgICAgICAgU3lzY2FsbFNldHM6OklzU29ja2V0Q2FsbChzeXNubykgfHwKLSAjZW5kaWYKLSAj aWYgZGVmaW5lZChfX2FybV9fKQotQEAgLTE5MCw3ICsxOTEsNyBAQCBSZXN1bHRFeHByIEV2YWx1 YXRlU3lzY2FsbEltcGwoaW50IGZzX2RlbmllZF9lcnJubywKLSAgIH0KLSAKLSAjaWYgZGVmaW5l ZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8 fCBcCi0tICAgIGRlZmluZWQoX19hYXJjaDY0X18pCi0rICAgIGRlZmluZWQoX19hYXJjaDY0X18p IHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgIGlmIChzeXNubyA9PSBfX05SX21tYXApCi0g ICAgIHJldHVybiBSZXN0cmljdE1tYXBGbGFncygpOwotICNlbmRpZgotQEAgLTIwOCw3ICsyMDks NyBAQCBSZXN1bHRFeHByIEV2YWx1YXRlU3lzY2FsbEltcGwoaW50IGZzX2RlbmllZF9lcnJubywK LSAgICAgcmV0dXJuIFJlc3RyaWN0UHJjdGwoKTsKLSAKLSAjaWYgZGVmaW5lZChfX3g4Nl82NF9f KSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLS0gICAgZGVm aW5lZChfX2FhcmNoNjRfXykKLSsgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChf X3Bvd2VycGM2NF9fKQotICAgaWYgKHN5c25vID09IF9fTlJfc29ja2V0cGFpcikgewotICAgICAv LyBPbmx5IGFsbG93IEFGX1VOSVgsIFBGX1VOSVguIENyYXNoIGlmIGFueXRoaW5nIGVsc2UgaXMg c2Vlbi4KLSAgICAgc3RhdGljX2Fzc2VydChBRl9VTklYID09IFBGX1VOSVgsCi1AQCAtMjQ4LDcg KzI0OSw4IEBAIFJlc3VsdEV4cHIgRXZhbHVhdGVTeXNjYWxsSW1wbChpbnQgZnNfZGVuaWVkX2Vy cm5vLAotICAgfQotIAotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCi0tICAgIChkZWZpbmVk KEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQotKyAg ICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9C SVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICBpZiAoU3lzY2FsbFNl dHM6OklzU29ja2V0Q2FsbChzeXNubykpCi0gICAgIHJldHVybiBSZXN0cmljdFNvY2tldGNhbGxD b21tYW5kKCk7Ci0gI2VuZGlmCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9iYXNlbGluZV9wb2xpY3lfdW5pdHRl c3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51 eC9zZWNjb21wLWJwZi1oZWxwZXJzL2Jhc2VsaW5lX3BvbGljeV91bml0dGVzdC5jYwotQEAgLTI1 Nyw3ICsyNTcsNyBAQCBURVNUX0JBU0VMSU5FX1NJR1NZUyhfX05SX3N5c2luZm8pOwotIFRFU1Rf QkFTRUxJTkVfU0lHU1lTKF9fTlJfc3lzbG9nKTsKLSBURVNUX0JBU0VMSU5FX1NJR1NZUyhfX05S X3RpbWVyX2NyZWF0ZSk7Ci0gCi0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyNpZiAhZGVm aW5lZChfX2FhcmNoNjRfXykgJiYgIWRlZmluZWQoX19wb3dlcnBjNjRfXykKLSBURVNUX0JBU0VM SU5FX1NJR1NZUyhfX05SX2V2ZW50ZmQpOwotIFRFU1RfQkFTRUxJTkVfU0lHU1lTKF9fTlJfaW5v dGlmeV9pbml0KTsKLSBURVNUX0JBU0VMSU5FX1NJR1NZUyhfX05SX3ZzZXJ2ZXIpOwotLS0tIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBm LWhlbHBlcnMvc3lzY2FsbF9wYXJhbWV0ZXJzX3Jlc3RyaWN0aW9ucy5jYwotKysrIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBl cnMvc3lzY2FsbF9wYXJhbWV0ZXJzX3Jlc3RyaWN0aW9ucy5jYwotQEAgLTM1LDcgKzM1LDggQEAK LSAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0gI2luY2x1ZGUgPHN5cy9wdHJhY2UuaD4KLSAjaWYg ZGVmaW5lZChPU19MSU5VWCkgJiYgIWRlZmluZWQoT1NfQ0hST01FT1MpICYmICFkZWZpbmVkKF9f YXJtX18pICYmIFwKLS0gICAgIWRlZmluZWQoX19hYXJjaDY0X18pICYmICFkZWZpbmVkKFBUUkFD RV9HRVRfVEhSRUFEX0FSRUEpCi0rICAgICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiAhZGVmaW5l ZChfX3Bvd2VycGM2NF9fKSAmJiBcCi0rICAgICFkZWZpbmVkKFBUUkFDRV9HRVRfVEhSRUFEX0FS RUEpCi0gLy8gQWxzbyBpbmNsdWRlIGFzbS9wdHJhY2UtYWJpLmggc2luY2UgcHRyYWNlLmggaW4g b2xkZXIgbGliYyAoZm9yIGluc3RhbmNlCi0gLy8gdGhlIG9uZSBpbiBVYnVudHUgMTYuMDQgTFRT KSBpcyBtaXNzaW5nIFBUUkFDRV9HRVRfVEhSRUFEX0FSRUEuCi0gLy8gYXNtL3B0cmFjZS1hYmku aCBkb2Vzbid0IGV4aXN0IG9uIGFybTMyIGFuZCBQVFJBQ0VfR0VUX1RIUkVBRF9BUkVBIGlzbid0 Ci1AQCAtNDQsNiArNDQsMTEgQEAKLSAjZW5kaWYKLSAjZW5kaWYgIC8vICFPU19OQUNMX05PTlNG SQotIAotKy8vIE9uIFBQQzY0LCBUQ0dFVFMgaXMgZGVmaW5lZCBpbiB0ZXJtcyBvZiBzdHJ1Y3Qg dGVybWlvcywgc28gd2UgbXVzdCBpbmNsdWRlIHRlcm1pb3MuaAotKyNpZmRlZiBfX3Bvd2VycGM2 NF9fCi0rI2luY2x1ZGUgPHRlcm1pb3MuaD4KLSsjZW5kaWYKLSsKLSAjaWYgZGVmaW5lZChPU19B TkRST0lEKQotIAotICNpZiAhZGVmaW5lZChGX0RVUEZEX0NMT0VYRUMpCi1AQCAtMTA2LDYgKzEx MSwxNSBAQCBpbmxpbmUgYm9vbCBJc0FyY2hpdGVjdHVyZU1pcHMoKSB7Ci0gI2VuZGlmCi0gfQot IAotK2lubGluZSBib29sIElzQXJjaGl0ZWN0dXJlUFBDNjQoKSB7Ci0rI2lmIGRlZmluZWQoX19w b3dlcnBjNjRfXykKLSsgIHJldHVybiB0cnVlOwotKyNlbHNlCi0rICByZXR1cm4gZmFsc2U7Ci0r I2VuZGlmCi0rfQotKwotKwotIC8vIFVidW50dSdzIHZlcnNpb24gb2YgZ2xpYmMgaGFzIGEgcmFj ZSBjb25kaXRpb24gaW4gc2VtX3Bvc3QgdGhhdCBjYW4gY2F1c2UKLSAvLyBpdCB0byBjYWxsIGZ1 dGV4KDIpIHdpdGggYm9ndXMgb3AgYXJndW1lbnRzLiBUbyB3b3JrYXJvdW5kIHRoaXMsIHdlIG5l ZWQKLSAvLyB0byBhbGxvdyB0aG9zZSBmdXRleCgyKSBjYWxscyB0byBmYWlsIHdpdGggRUlOVkFM LCBpbnN0ZWFkIG9mIGNyYXNoaW5nIHRoZQotQEAgLTI0Nyw3ICsyNjEsOCBAQCBSZXN1bHRFeHBy IFJlc3RyaWN0RmNudGxDb21tYW5kcygpIHsKLSAgIC8vIG9wZXJhdG9yLgotICAgLy8gR2xpYmMg b3ZlcnJpZGVzIHRoZSBrZXJuZWwncyBPX0xBUkdFRklMRSB2YWx1ZS4gQWNjb3VudCBmb3IgdGhp cy4KLSAgIHVpbnQ2NF90IGtPTGFyZ2VGaWxlRmxhZyA9IE9fTEFSR0VGSUxFOwotLSAgaWYgKElz QXJjaGl0ZWN0dXJlWDg2XzY0KCkgfHwgSXNBcmNoaXRlY3R1cmVJMzg2KCkgfHwgSXNBcmNoaXRl Y3R1cmVNaXBzKCkpCi0rICBpZiAoSXNBcmNoaXRlY3R1cmVYODZfNjQoKSB8fCBJc0FyY2hpdGVj dHVyZUkzODYoKSB8fCBJc0FyY2hpdGVjdHVyZU1pcHMoKSBcCi0rICAgICAgfHwgSXNBcmNoaXRl Y3R1cmVQUEM2NCgpKQotICAgICBrT0xhcmdlRmlsZUZsYWcgPSAwMTAwMDAwOwotIAotICAgY29u c3QgQXJnPGludD4gY21kKDEpOwotQEAgLTI3MCw3ICsyODUsNyBAQCBSZXN1bHRFeHByIFJlc3Ry aWN0RmNudGxDb21tYW5kcygpIHsKLSAgICAgICAuRGVmYXVsdChDcmFzaFNJR1NZUygpKTsKLSB9 Ci0gCi0tI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19taXBzX18pCi0rI2lmIGRl ZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IGRlZmluZWQoX19wb3dlcnBj NjRfXykKLSBSZXN1bHRFeHByIFJlc3RyaWN0U29ja2V0Y2FsbENvbW1hbmQoKSB7Ci0gICAvLyBV bmZvcnR1bmF0ZWx5LCB3ZSBhcmUgdW5hYmxlIHRvIHJlc3RyaWN0IHRoZSBmaXJzdCBwYXJhbWV0 ZXIgdG8KLSAgIC8vIHNvY2tldHBhaXIoMikuIFdoaWxzdCBpbml0aWFsbHkgc291bmRpbmcgYmFk LCBpdCdzIG5vdGV3b3J0aHkgdGhhdCB2ZXJ5Ci1AQCAtNDIxLDcgKzQyMiw3IEBAIFJlc3VsdEV4 cHIgUmVzdHJpY3RQcmxpbWl0KHBpZF90IHRhcmdldF9waWQpIHsKLSBSZXN1bHRFeHByIFJlc3Ry aWN0UHRyYWNlKCkgewotICAgY29uc3QgQXJnPGludD4gcmVxdWVzdCgwKTsKLSAgIHJldHVybiBT d2l0Y2gocmVxdWVzdCkuQ0FTRVMoKAotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykKLSsjaWYg IWRlZmluZWQoX19hYXJjaDY0X18pICYmICFkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgICAg ICBQVFJBQ0VfR0VUUkVHUywKLSAgICAgICAgIFBUUkFDRV9HRVRGUFJFR1MsCi0gICAgICAgICBQ VFJBQ0VfR0VUX1RIUkVBRF9BUkVBLAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9wYXJhbWV0ZXJz X3Jlc3RyaWN0aW9ucy5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Nh bmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3BhcmFtZXRlcnNfcmVzdHJp Y3Rpb25zLmgKLUBAIC00OCw3ICs0OCw3IEBAIFNBTkRCT1hfRVhQT1JUIGJwZl9kc2w6OlJlc3Vs dEV4cHIgUmVzdHJpY3RNcHJvdGVjdEZsYWdzKCk7Ci0gLy8gT19OT05CTE9DSyB8IE9fU1lOQyB8 IE9fTEFSR0VGSUxFIHwgT19DTE9FWEVDIHwgT19OT0FUSU1FLgotIFNBTkRCT1hfRVhQT1JUIGJw Zl9kc2w6OlJlc3VsdEV4cHIgUmVzdHJpY3RGY250bENvbW1hbmRzKCk7Ci0gCi0tI2lmIGRlZmlu ZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19taXBzX18pCi0rI2lmIGRlZmluZWQoX19pMzg2X18p IHx8IGRlZmluZWQoX19taXBzX18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAvLyBSZXN0 cmljdCBzb2NrZXRjYWxsKDIpIHRvIG9ubHkgYWxsb3cgc29ja2V0cGFpcigyKSwgc2VuZCgyKSwg cmVjdigyKSwKLSAvLyBzZW5kdG8oMiksIHJlY3Zmcm9tKDIpLCBzaHV0ZG93bigyKSwgc2VuZG1z ZygyKSBhbmQgcmVjdm1zZygyKS4KLSBTQU5EQk9YX0VYUE9SVCBicGZfZHNsOjpSZXN1bHRFeHBy IFJlc3RyaWN0U29ja2V0Y2FsbENvbW1hbmQoKTsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfc2V0 cy5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4 L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmNjCi1AQCAtMjksNyArMjksOCBAQCBi b29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRHZXR0aW1lKGludCBzeXNubykgewotICAgc3dpdGNo IChzeXNubykgewotICAgICBjYXNlIF9fTlJfZ2V0dGltZW9mZGF5OgotICNpZiBkZWZpbmVkKF9f aTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IFwKLS0gICAgKGRlZmluZWQoQVJDSF9D UFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCi0rICAgIChkZWZp bmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8 fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3RpbWU6Ci0g I2VuZGlmCi0gICAgICAgcmV0dXJuIHRydWU7Ci1AQCAtNDUsNyArNDYsOCBAQCBib29sIFN5c2Nh bGxTZXRzOjpJc0FsbG93ZWRHZXR0aW1lKGludCBzeXNubykgewotICNlbmRpZgotICAgICBjYXNl IF9fTlJfc2V0dGltZW9mZGF5OiAgLy8gUHJpdmlsZWdlZC4KLSAjaWYgZGVmaW5lZChfX2kzODZf XykgfHwgXAotLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChB UkNIX0NQVV8zMl9CSVRTKSkKLSsgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYm IGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2 NF9fKQotICAgICBjYXNlIF9fTlJfc3RpbWU6Ci0gI2VuZGlmCi0gICAgIGRlZmF1bHQ6Ci1AQCAt MTExLDcgKzExMyw3IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzRmlsZVN5c3RlbShpbnQgc3lzbm8p IHsKLSAgICAgY2FzZSBfX05SX2ZhY2Nlc3NhdDogIC8vIEVQRVJNIG5vdCBhIHZhbGlkIGVycm5v LgotICAgICBjYXNlIF9fTlJfZmNobW9kYXQ6Ci0gICAgIGNhc2UgX19OUl9mY2hvd25hdDogIC8v IFNob3VsZCBiZSBjYWxsZWQgY2hvd25hdCA/Ci0tI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwg ZGVmaW5lZChfX2FhcmNoNjRfXykKLSsjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVk KF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9u ZXdmc3RhdGF0OiAgLy8gZnN0YXRhdCgpLiBFUEVSTSBub3QgYSB2YWxpZCBlcnJuby4KLSAjZWxp ZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IFwKLSAgICAgKGRlZmlu ZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCi1A QCAtMTMwLDcgKzEzMiw3IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzRmlsZVN5c3RlbShpbnQgc3lz bm8pIHsKLSAgICAgY2FzZSBfX05SX21lbWZkX2NyZWF0ZToKLSAgICAgY2FzZSBfX05SX21rZGly YXQ6Ci0gICAgIGNhc2UgX19OUl9ta25vZGF0OgotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKQotKyNp ZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2Ug X19OUl9vbGRsc3RhdDoKLSAgICAgY2FzZSBfX05SX29sZHN0YXQ6Ci0gI2VuZGlmCi1AQCAtMTU0 LDcgKzE1Niw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzRmlsZVN5c3RlbShpbnQgc3lzbm8pIHsK LSAgICAgY2FzZSBfX05SX3RydW5jYXRlNjQ6Ci0gI2VuZGlmCi0gICAgIGNhc2UgX19OUl91bmxp bmthdDoKLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBk ZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2 XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2 NF9fKQotICAgICBjYXNlIF9fTlJfdXRpbWU6Ci0gI2VuZGlmCi0gICAgIGNhc2UgX19OUl91dGlt ZW5zYXQ6ICAvLyBOZXcuCi1AQCAtMTczLDcgKzE3Niw4IEBAIGJvb2wgU3lzY2FsbFNldHM6Oklz QWxsb3dlZEZpbGVTeXN0ZW1BY2Nlc3NWaWFGZChpbnQgc3lzbm8pIHsKLSAjZW5kaWYKLSAgICAg ICByZXR1cm4gdHJ1ZTsKLSAvLyBUT0RPKGpsbik6IHRoZXNlIHNob3VsZCBiZSBkZW5pZWQgZ3Jh Y2VmdWxseSBhcyB3ZWxsIChtb3ZlZCBiZWxvdykuCi0tI2lmIGRlZmluZWQoX19pMzg2X18pIHx8 IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykKLSsjaWYgZGVmaW5lZChf X2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBc Ci0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX2ZhZHZpc2U2NDog IC8vIEVQRVJNIG5vdCBhIHZhbGlkIGVycm5vLgotICNlbmRpZgotICNpZiBkZWZpbmVkKF9faTM4 Nl9fKQotQEAgLTE4Niw3ICsxOTAsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRGaWxl U3lzdGVtQWNjZXNzVmlhRmQoaW50IHN5c25vKSB7Ci0gICAgIGNhc2UgX19OUl9mbG9jazogICAg ICAvLyBFUEVSTSBub3QgYSB2YWxpZCBlcnJuby4KLSAgICAgY2FzZSBfX05SX2ZzdGF0ZnM6ICAg IC8vIEdpdmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHdob2xlIGZpbGVzeXN0ZW0uCi0gI2lmIGRl ZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgXAotLSAgICAoZGVmaW5lZChB UkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKLSsgICAg KGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklU UykpIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfZnN0 YXRmczY0OgotICNlbmRpZgotICAgICBjYXNlIF9fTlJfZnN5bmM6ICAvLyBFUEVSTSBub3QgYSB2 YWxpZCBlcnJuby4KLUBAIC0xOTgsNiArMjAzLDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxv d2VkRmlsZVN5c3RlbUFjY2Vzc1ZpYUZkKGludCBzeXNubykgewotICAgICBjYXNlIF9fTlJfc3lu Y19maWxlX3JhbmdlOiAgLy8gRVBFUk0gbm90IGEgdmFsaWQgZXJybm8uCi0gI2VsaWYgZGVmaW5l ZChfX2FybV9fKQotICAgICBjYXNlIF9fTlJfYXJtX3N5bmNfZmlsZV9yYW5nZTogIC8vIEVQRVJN IG5vdCBhIHZhbGlkIGVycm5vLgotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgICAg Y2FzZSBfX05SX3N5bmNfZmlsZV9yYW5nZTI6IC8vIEVQRVJNIG5vdCBhIHZhbGlkIGVycm5vLgot ICNlbmRpZgotICAgICBkZWZhdWx0OgotICAgICAgIHJldHVybiBmYWxzZTsKLUBAIC0yMjMsNyAr MjMwLDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNEZW5pZWRGaWxlU3lzdGVtQWNjZXNzVmlhRmQo aW50IHN5c25vKSB7Ci0gI2VuZGlmCi0gICAgIGNhc2UgX19OUl9nZXRkZW50czY0OiAgLy8gRVBF Uk0gbm90IGEgdmFsaWQgZXJybm8uCi0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwKLS0gICAg KGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklU UykpCi0rICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hf Q1BVXzMyX0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2Fz ZSBfX05SX3JlYWRkaXI6Ci0gI2VuZGlmCi0gICAgICAgcmV0dXJuIHRydWU7Ci1AQCAtMjY0LDcg KzI3Miw3IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzR2V0U2ltcGxlSWQoaW50IHN5c25vKSB7Ci0g Ym9vbCBTeXNjYWxsU2V0czo6SXNQcm9jZXNzUHJpdmlsZWdlQ2hhbmdlKGludCBzeXNubykgewot ICAgc3dpdGNoIChzeXNubykgewotICAgICBjYXNlIF9fTlJfY2Fwc2V0OgotLSNpZiBkZWZpbmVk KF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pCi0rI2lmIGRlZmluZWQoX19pMzg2X18p IHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBj YXNlIF9fTlJfaW9wZXJtOiAgLy8gSW50ZWwgcHJpdmlsZWdlLgotICAgICBjYXNlIF9fTlJfaW9w bDogICAgLy8gSW50ZWwgcHJpdmlsZWdlLgotICNlbmRpZgotQEAgLTMxNCw3ICszMjIsOCBAQCBi b29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRTaWduYWxIYW5kbGluZyhpbnQgc3lzbm8pIHsKLSAg ICAgY2FzZSBfX05SX3J0X3NpZ3Byb2NtYXNrOgotICAgICBjYXNlIF9fTlJfcnRfc2lncmV0dXJu OgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IFwKLS0gICAg KGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklU UykpCi0rICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hf Q1BVXzMyX0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2Fz ZSBfX05SX3NpZ2FjdGlvbjoKLSAgICAgY2FzZSBfX05SX3NpZ3Byb2NtYXNrOgotICAgICBjYXNl IF9fTlJfc2lncmV0dXJuOgotQEAgLTMzMSw3ICszNDAsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJ c0FsbG93ZWRTaWduYWxIYW5kbGluZyhpbnQgc3lzbm8pIHsKLSAjZW5kaWYKLSAgICAgY2FzZSBf X05SX3NpZ25hbGZkNDoKLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2FybV9f KSB8fCBcCi0tICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFS Q0hfQ1BVXzMyX0JJVFMpKQotKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYg ZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0 X18pCi0gICAgIGNhc2UgX19OUl9zaWdwZW5kaW5nOgotICAgICBjYXNlIF9fTlJfc2lnc3VzcGVu ZDoKLSAjZW5kaWYKLUBAIC0zNTUsNyArMzY1LDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxv d2VkT3BlcmF0aW9uT25GZChpbnQgc3lzbm8pIHsKLSAjZW5kaWYKLSAgICAgY2FzZSBfX05SX2R1 cDM6Ci0gI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZp bmVkKF9fbWlwc19fKSB8fCBcCi0tICAgIGRlZmluZWQoX19hYXJjaDY0X18pCi0rICAgIGRlZmlu ZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05S X3NodXRkb3duOgotICNlbmRpZgotICAgICAgIHJldHVybiB0cnVlOwotQEAgLTM4OSw3ICszOTks NyBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRQcm9jZXNzU3RhcnRPckRlYXRoKGludCBz eXNubykgewotICAgICBjYXNlIF9fTlJfbWVtYmFycmllcjoKLSAgICAgY2FzZSBfX05SX3dhaXQ0 OgotICAgICBjYXNlIF9fTlJfd2FpdGlkOgotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKQotKyNpZiBk ZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19O Ul93YWl0cGlkOgotICNlbmRpZgotICNpZiAhZGVmaW5lZChfX0dMSUJDX18pCi1AQCAtNDExLDcg KzQyMSw3IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZFByb2Nlc3NTdGFydE9yRGVhdGgo aW50IHN5c25vKSB7Ci0gICAgIGNhc2UgX19OUl9zZXRfdGlkX2FkZHJlc3M6Ci0gI2VuZGlmCi0g ICAgIGNhc2UgX19OUl91bnNoYXJlOgotLSNpZiAhZGVmaW5lZChfX21pcHNfXykgJiYgIWRlZmlu ZWQoX19hYXJjaDY0X18pCi0rI2lmICFkZWZpbmVkKF9fbWlwc19fKSAmJiAhZGVmaW5lZChfX2Fh cmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfdmZvcms6 Ci0gI2VuZGlmCi0gICAgIGRlZmF1bHQ6Ci1AQCAtNDYwLDcgKzQ3MCw3IEBAIGJvb2wgU3lzY2Fs bFNldHM6OklzQWxsb3dlZEdldE9yTW9kaWZ5U29ja2V0KGludCBzeXNubykgewotICAgICAgIHJl dHVybiB0cnVlOwotICAgICBkZWZhdWx0OgotICNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRl ZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAotLSAgICBkZWZpbmVkKF9f YWFyY2g2NF9fKQotKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJw YzY0X18pCi0gICAgIGNhc2UgX19OUl9zb2NrZXRwYWlyOiAgLy8gV2Ugd2lsbCB3YW50IHRvIGlu c3BlY3QgaXRzIGFyZ3VtZW50LgotICNlbmRpZgotICAgICAgIHJldHVybiBmYWxzZTsKLUBAIC00 NzAsNyArNDgwLDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkR2V0T3JNb2RpZnlTb2Nr ZXQoaW50IHN5c25vKSB7Ci0gYm9vbCBTeXNjYWxsU2V0czo6SXNEZW5pZWRHZXRPck1vZGlmeVNv Y2tldChpbnQgc3lzbm8pIHsKLSAgIHN3aXRjaCAoc3lzbm8pIHsKLSAjaWYgZGVmaW5lZChfX3g4 Nl82NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLS0g ICAgZGVmaW5lZChfX2FhcmNoNjRfXykKLSsgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVm aW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfYWNjZXB0OgotICAgICBjYXNlIF9f TlJfYWNjZXB0NDoKLSAgICAgY2FzZSBfX05SX2JpbmQ6Ci1AQCAtNDg1LDcgKzQ5NSw4IEBAIGJv b2wgU3lzY2FsbFNldHM6OklzRGVuaWVkR2V0T3JNb2RpZnlTb2NrZXQoaW50IHN5c25vKSB7Ci0g fQotIAotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCi0tICAgIChkZWZpbmVkKEFSQ0hfQ1BV X01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQotKyAgICAoZGVmaW5l ZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwg XAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gLy8gQmlnIG11bHRpcGxleGluZyBzeXN0 ZW0gY2FsbCBmb3Igc29ja2V0cy4KLSBib29sIFN5c2NhbGxTZXRzOjpJc1NvY2tldENhbGwoaW50 IHN5c25vKSB7Ci0gICBzd2l0Y2ggKHN5c25vKSB7Ci1AQCAtNDk5LDcgKzUxMCw4IEBAIGJvb2wg U3lzY2FsbFNldHM6OklzU29ja2V0Q2FsbChpbnQgc3lzbm8pIHsKLSB9Ci0gI2VuZGlmCi0gCi0t I2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9f bWlwc19fKQotKyNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwg ZGVmaW5lZChfX21pcHNfXykgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gYm9v bCBTeXNjYWxsU2V0czo6SXNOZXR3b3JrU29ja2V0SW5mb3JtYXRpb24oaW50IHN5c25vKSB7Ci0g ICBzd2l0Y2ggKHN5c25vKSB7Ci0gICAgIGNhc2UgX19OUl9nZXRwZWVybmFtZToKLUBAIC01Mjcs NyArNTM5LDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkQWRkcmVzc1NwYWNlQWNjZXNz KGludCBzeXNubykgewotICAgICBjYXNlIF9fTlJfbWluY29yZToKLSAgICAgY2FzZSBfX05SX21s b2NrYWxsOgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8 IGRlZmluZWQoX19taXBzX18pIHx8IFwKLS0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykKLSsgICAg ZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNl IF9fTlJfbW1hcDoKLSAjZW5kaWYKLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChf X2FybV9fKSB8fCBcCi1AQCAtNTU5LDcgKzU3MSw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxs b3dlZEdlbmVyYWxJbyhpbnQgc3lzbm8pIHsKLSAgIHN3aXRjaCAoc3lzbm8pIHsKLSAgICAgY2Fz ZSBfX05SX2xzZWVrOgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18p IHx8IFwKLS0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJD SF9DUFVfMzJfQklUUykpCi0rICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBk ZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRf XykKLSAgICAgY2FzZSBfX05SX19sbHNlZWs6Ci0gI2VuZGlmCi0gI2lmICFkZWZpbmVkKF9fYWFy Y2g2NF9fKQotQEAgLTU3MSwyNiArNTg0LDI4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dl ZEdlbmVyYWxJbyhpbnQgc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX3JlYWR2OgotICAgICBjYXNl IF9fTlJfcHJlYWQ2NDoKLSAjaWYgZGVmaW5lZChfX2FybV9fKSB8fCBcCi0tICAgIChkZWZpbmVk KEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQotKyAg ICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9C SVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9y ZWN2OgotICNlbmRpZgotICNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hcm1f XykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAotLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKQot KyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAg IGNhc2UgX19OUl9yZWN2ZnJvbTogIC8vIENvdWxkIHNwZWNpZnkgc291cmNlLgotICAgICBjYXNl IF9fTlJfcmVjdm1zZzogICAvLyBDb3VsZCBzcGVjaWZ5IHNvdXJjZS4KLSAjZW5kaWYKLS0jaWYg ZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKQotKyNpZiBkZWZpbmVkKF9f aTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykK LSAgICAgY2FzZSBfX05SX3NlbGVjdDoKLSAjZW5kaWYKLS0jaWYgZGVmaW5lZChfX2kzODZfXykg fHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9f aTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IGRlZmlu ZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX19uZXdzZWxlY3Q6Ci0gI2VuZGlmCi0g I2lmIGRlZmluZWQoX19hcm1fXykgfHwgXAotLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZB TUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKLSsgICAgKGRlZmluZWQoQVJDSF9D UFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKLSsgICAg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfc2VuZDoKLSAjZW5kaWYKLSAj aWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19t aXBzX18pIHx8IFwKLS0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykKLSsgICAgZGVmaW5lZChfX2Fh cmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfc2VuZG1z ZzogIC8vIENvdWxkIHNwZWNpZnkgZGVzdGluYXRpb24uCi0gICAgIGNhc2UgX19OUl9zZW5kdG86 ICAgLy8gQ291bGQgc3BlY2lmeSBkZXN0aW5hdGlvbi4KLSAjZW5kaWYKLUBAIC02NDcsNyArNjYy LDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkQmFzaWNTY2hlZHVsZXIoaW50IHN5c25v KSB7Ci0gICAgICAgcmV0dXJuIHRydWU7Ci0gICAgIGNhc2UgX19OUl9nZXRwcmlvcml0eToKLSAj aWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBcCi0tICAgIChkZWZp bmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQot KyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8z Ml9CSVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19O Ul9uaWNlOgotICNlbmRpZgotICAgICBjYXNlIF9fTlJfc2V0cHJpb3JpdHk6Ci1AQCAtNjU5LDcg KzY3NSw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEJhc2ljU2NoZWR1bGVyKGludCBz eXNubykgewotIGJvb2wgU3lzY2FsbFNldHM6OklzQWRtaW5PcGVyYXRpb24oaW50IHN5c25vKSB7 Ci0gICBzd2l0Y2ggKHN5c25vKSB7Ci0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQo X19hcm1fXykgfHwgXAotLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVm aW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKLSsgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1J TFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bv d2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfYmRmbHVzaDoKLSAjZW5kaWYKLSAgICAgY2FzZSBf X05SX2tleGVjX2xvYWQ6Ci1AQCAtNjc1LDcgKzY5Miw4IEBAIGJvb2wgU3lzY2FsbFNldHM6Oklz QWRtaW5PcGVyYXRpb24oaW50IHN5c25vKSB7Ci0gCi0gYm9vbCBTeXNjYWxsU2V0czo6SXNLZXJu ZWxNb2R1bGUoaW50IHN5c25vKSB7Ci0gICBzd2l0Y2ggKHN5c25vKSB7Ci0tI2lmIGRlZmluZWQo X19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykKLSsj aWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9f bWlwc19fKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05S X2NyZWF0ZV9tb2R1bGU6Ci0gICAgIGNhc2UgX19OUl9nZXRfa2VybmVsX3N5bXM6ICAvLyBTaG91 bGQgRU5PU1lTLgotICAgICBjYXNlIF9fTlJfcXVlcnlfbW9kdWxlOgotQEAgLTcwOCw3ICs3MjYs OCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0ZzQ29udHJvbChpbnQgc3lzbm8pIHsKLSAgICAgY2Fz ZSBfX05SX3N3YXBvZmY6Ci0gICAgIGNhc2UgX19OUl9zd2Fwb246Ci0gI2lmIGRlZmluZWQoX19p Mzg2X18pIHx8IFwKLS0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmlu ZWQoQVJDSF9DUFVfMzJfQklUUykpCi0rICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZ KSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dl cnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3Vtb3VudDoKLSAjZW5kaWYKLSAgICAgY2FzZSBfX05S X3Vtb3VudDI6Ci1AQCAtNzI0LDcgKzc0Myw3IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzTnVtYShp bnQgc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX2dldGNwdToKLSAgICAgY2FzZSBfX05SX21iaW5k OgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmlu ZWQoX19taXBzX18pIHx8IFwKLS0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykKLSsgICAgZGVmaW5l ZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJf bWlncmF0ZV9wYWdlczoKLSAjZW5kaWYKLSAgICAgY2FzZSBfX05SX21vdmVfcGFnZXM6Ci1AQCAt NzUzLDE0ICs3NzIsMTUgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNHbG9iYWxQcm9jZXNzRW52aXJv bm1lbnQoaW50IHN5c25vKSB7Ci0gICBzd2l0Y2ggKHN5c25vKSB7Ci0gICAgIGNhc2UgX19OUl9h Y2N0OiAgLy8gUHJpdmlsZWdlZC4KLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChf X3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCi0tICAgIGRlZmluZWQoX19hYXJj aDY0X18pCi0rICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRf XykKLSAgICAgY2FzZSBfX05SX2dldHJsaW1pdDoKLSAjZW5kaWYKLS0jaWYgZGVmaW5lZChfX2kz ODZfXykgfHwgZGVmaW5lZChfX2FybV9fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZp bmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3Vn ZXRybGltaXQ6Ci0gI2VuZGlmCi0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwKLS0gICAgKGRl ZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykp Ci0rICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BV XzMyX0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBf X05SX3VsaW1pdDoKLSAjZW5kaWYKLSAgICAgY2FzZSBfX05SX2dldHJ1c2FnZToKLUBAIC03OTQs NyArODE0LDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNHbG9iYWxTeXN0ZW1TdGF0dXMoaW50IHN5 c25vKSB7Ci0gI2VuZGlmCi0gICAgIGNhc2UgX19OUl9zeXNpbmZvOgotICAgICBjYXNlIF9fTlJf dW5hbWU6Ci0tI2lmIGRlZmluZWQoX19pMzg2X18pCi0rI2lmIGRlZmluZWQoX19pMzg2X18pIHx8 IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX29sZHVuYW1lOgotICAgICBj YXNlIF9fTlJfb2xkb2xkdW5hbWU6Ci0gI2VuZGlmCi1AQCAtODg4LDcgKzkwOCw4IEBAIGJvb2wg U3lzY2FsbFNldHM6OklzU3lzdGVtVk1lc3NhZ2VRdWV1ZShpbnQgc3lzbm8pIHsKLSAjZW5kaWYK LSAKLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAotLSAgICAoZGVmaW5lZChBUkNIX0NQVV9N SVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKLSsgICAgKGRlZmluZWQo QVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwK LSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotIC8vIEJpZyBzeXN0ZW0gViBtdWx0aXBsZXhp bmcgc3lzdGVtIGNhbGwuCi0gYm9vbCBTeXNjYWxsU2V0czo6SXNTeXN0ZW1WSXBjKGludCBzeXNu bykgewotICAgc3dpdGNoIChzeXNubykgewotQEAgLTkwOCw3ICs5MjksOCBAQCBib29sIFN5c2Nh bGxTZXRzOjpJc0FueVN5c3RlbVYoaW50IHN5c25vKSB7Ci0gICByZXR1cm4gSXNTeXN0ZW1WTWVz c2FnZVF1ZXVlKHN5c25vKSB8fCBJc1N5c3RlbVZTZW1hcGhvcmVzKHN5c25vKSB8fAotICAgICAg ICAgIElzU3lzdGVtVlNoYXJlZE1lbW9yeShzeXNubyk7Ci0gI2VsaWYgZGVmaW5lZChfX2kzODZf XykgfHwgXAotLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChB UkNIX0NQVV8zMl9CSVRTKSkKLSsgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYm IGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2 NF9fKQotICAgcmV0dXJuIElzU3lzdGVtVklwYyhzeXNubyk7Ci0gI2VuZGlmCi0gfQotQEAgLTk2 MSw3ICs5ODMsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0ZhTm90aWZ5KGludCBzeXNubykgewot IGJvb2wgU3lzY2FsbFNldHM6OklzVGltZXIoaW50IHN5c25vKSB7Ci0gICBzd2l0Y2ggKHN5c25v KSB7Ci0gICAgIGNhc2UgX19OUl9nZXRpdGltZXI6Ci0tI2lmIGRlZmluZWQoX19pMzg2X18pIHx8 IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykKLSsjaWYgZGVmaW5lZChf X2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBc Ci0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX2FsYXJtOgotICNl bmRpZgotICAgICBjYXNlIF9fTlJfc2V0aXRpbWVyOgotQEAgLTEwMjAsMTggKzEwNDMsMjIgQEAg Ym9vbCBTeXNjYWxsU2V0czo6SXNNaXNjKGludCBzeXNubykgewotICAgICBjYXNlIF9fTlJfc3lu Y2ZzOgotICAgICBjYXNlIF9fTlJfdmhhbmd1cDoKLSAvLyBUaGUgc3lzdGVtIGNhbGxzIGJlbG93 IGFyZSBub3QgaW1wbGVtZW50ZWQuCi0tI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQo X194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykKLSsjaWYgZGVmaW5lZChfX2kzODZfXykg fHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCi0rICAgIGRl ZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX2Fmc19zeXNjYWxsOgotICNlbmRp ZgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCi0tICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01J UFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQotKyAgICAoZGVmaW5lZChB UkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAot KyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9icmVhazoKLSAjZW5k aWYKLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZp bmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0 X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9f KQotICAgICBjYXNlIF9fTlJfZ2V0cG1zZzoKLSAjZW5kaWYKLSAjaWYgZGVmaW5lZChfX2kzODZf XykgfHwgXAotLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChB UkNIX0NQVV8zMl9CSVRTKSkKLSsgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYm IGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2 NF9fKQotICAgICBjYXNlIF9fTlJfZ3R0eToKLSAgICAgY2FzZSBfX05SX2lkbGU6Ci0gICAgIGNh c2UgX19OUl9sb2NrOgotQEAgLTEwMzksMjAgKzEwNjYsMjIgQEAgYm9vbCBTeXNjYWxsU2V0czo6 SXNNaXNjKGludCBzeXNubykgewotICAgICBjYXNlIF9fTlJfcHJvZjoKLSAgICAgY2FzZSBfX05S X3Byb2ZpbDoKLSAjZW5kaWYKLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4 Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBk ZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLSsgICAgZGVmaW5l ZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfcHV0cG1zZzoKLSAjZW5kaWYKLSAjaWYg ZGVmaW5lZChfX3g4Nl82NF9fKQotICAgICBjYXNlIF9fTlJfc2VjdXJpdHk6Ci0gI2VuZGlmCi0g I2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwKLS0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19G QU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCi0rICAgIChkZWZpbmVkKEFSQ0hf Q1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCi0rICAg IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3N0dHk6Ci0gI2VuZGlmCi0t I2lmIGRlZmluZWQoX194ODZfNjRfXykKLSsjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZp bmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl90dXhjYWxsOgotICNlbmRpZgotLSNp ZiAhZGVmaW5lZChfX2FhcmNoNjRfXykKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmICFk ZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl92c2VydmVyOgotICNlbmRpZgot ICAgICAgIHJldHVybiB0cnVlOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmgKLSsrKyBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJw Zi1oZWxwZXJzL3N5c2NhbGxfc2V0cy5oCi1AQCAtNDMsMTMgKzQzLDE0IEBAIGNsYXNzIFNBTkRC T1hfRVhQT1JUIFN5c2NhbGxTZXRzIHsKLSAgIHN0YXRpYyBib29sIElzRGVuaWVkR2V0T3JNb2Rp ZnlTb2NrZXQoaW50IHN5c25vKTsKLSAKLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAotLSAg ICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9C SVRTKSkKLSsgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJD SF9DUFVfMzJfQklUUykpIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgLy8g QmlnIG11bHRpcGxleGluZyBzeXN0ZW0gY2FsbCBmb3Igc29ja2V0cy4KLSAgIHN0YXRpYyBib29s IElzU29ja2V0Q2FsbChpbnQgc3lzbm8pOwotICNlbmRpZgotIAotICNpZiBkZWZpbmVkKF9feDg2 XzY0X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAotLSAg ICBkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZp bmVkKF9fcG93ZXJwYzY0X18pCi0gICBzdGF0aWMgYm9vbCBJc05ldHdvcmtTb2NrZXRJbmZvcm1h dGlvbihpbnQgc3lzbm8pOwotICNlbmRpZgotIAotQEAgLTg3LDcgKzg4LDggQEAgY2xhc3MgU0FO REJPWF9FWFBPUlQgU3lzY2FsbFNldHMgewotICNlbmRpZgotIAotICNpZiBkZWZpbmVkKF9faTM4 Nl9fKSB8fCBcCi0tICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVk KEFSQ0hfQ1BVXzMyX0JJVFMpKQotKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkg JiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJw YzY0X18pCi0gICAvLyBCaWcgc3lzdGVtIFYgbXVsdGlwbGV4aW5nIHN5c3RlbSBjYWxsLgotICAg c3RhdGljIGJvb2wgSXNTeXN0ZW1WSXBjKGludCBzeXNubyk7Ci0gI2VuZGlmCi0tLS0gcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYvc3lz Y2FsbC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xp bnV4L3NlY2NvbXAtYnBmL3N5c2NhbGwuY2MKLUBAIC0xNiw3ICsxNiw3IEBAIG5hbWVzcGFjZSBz YW5kYm94IHsKLSBuYW1lc3BhY2UgewotIAotICNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1g4Nl9GQU1J TFkpIHx8IGRlZmluZWQoQVJDSF9DUFVfQVJNX0ZBTUlMWSkgfHwgXAotLSAgICBkZWZpbmVkKEFS Q0hfQ1BVX01JUFNfRkFNSUxZKQotKyAgICBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSB8 fCBkZWZpbmVkIChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0gLy8gTnVtYmVyIHRoYXQncyBub3Qg Y3VycmVudGx5IHVzZWQgYnkgYW55IExpbnV4IGtlcm5lbCBBQklzLgotIGNvbnN0IGludCBrSW52 YWxpZFN5c2NhbGxOdW1iZXIgPSAweDM1MWQzOwotICNlbHNlCi1AQCAtMzA4LDEyICszMDgsNTYg QEAgYXNtKC8vIFdlIG5lZWQgdG8gYmUgYWJsZSB0byB0ZWxsIHRoZSBrZXJuZWwgZXhhY3RseSB3 aGVyZSB3ZSBtYWRlIGEKLSAgICAgLy8gRW50ZXIgdGhlIGtlcm5lbAotICAgICAic3ZjIDBcbiIK LSAgICAgIjI6cmV0XG4iCi0rICAgICIuY2ZpX2VuZHByb2NcbiIKLSsgICAgIi5zaXplIFN5c2Nh bGxBc20sIC4tU3lzY2FsbEFzbVxuIgotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsg ICAgIi50ZXh0XG4iCi0rICAgICIuYWxpZ24gNFxuIgotKyAgICAiLnR5cGUgU3lzY2FsbEFzbSBA ZnVuY3Rpb25cbiIKLSsgICAgIlN5c2NhbGxBc206XG4iCi0rICAgICIuY2ZpX3N0YXJ0cHJvY1xu IgotKwotKyAgICAvLyBDaGVjayBpZiByMyBpcyBuZWdhdGl2ZQotKyAgICAiY21wZGkgMywgMFxu IgotKyAgICAiYmd0IDJmXG4iCi0rCi0rICAgIC8vIExvYWQgYWRkcmVzcyBvZiAzZiBpbnRvIHIz IGFuZCByZXR1cm4KLSsgICAgIm1mbHIgMTBcbiIKLSsgICAgImJsIDFmXG4iCi0rICAgICIxOiBt ZmxyIDNcbiIKLSsgICAgIm10bHIgMTBcbiIKLSsgICAgImFkZGkgMywgMywgNCoxM1xuIgotKyAg ICAiYmxyXG4iCi0rCi0rICAgIC8vIExvYWQgYXJndW1lbnRzIGZyb20gYXJyYXkgaW50byByMy04 Ci0rICAgIC8vIHNhdmUgcGFyYW0gMyBpbiByMTAKLSsgICAgIjI6XG4iCi0rICAgICJtciAwLCAz XG4iCi0rICAgICJsZCAzLCAwKDQpXG4iCi0rICAgICJsZCA1LCAxNig0KVxuIgotKyAgICAibGQg NiwgMjQoNClcbiIKLSsgICAgImxkIDcsIDMyKDQpXG4iCi0rICAgICJsZCA4LCA0MCg0KVxuIgot KyAgICAibGQgNCwgOCg0KVxuIgotKyAgICAibGkgOSwgMFxuIgotKwotKyAgICAvLyBFbnRlciBr ZXJuZWwKLSsgICAgInNjXG4iCi0rCi0rICAgIC8vIE1hZ2ljIHJldHVybiBhZGRyZXNzCi0rICAg ICIzOlxuIgotKyAgICAvLyBMaWtlIE1JUFMsIHBwYzY0IHJldHVybiB2YWx1ZXMgYXJlIGFsd2F5 cyBwb3NpdGl2ZS4KLSsgICAgLy8gQ2hlY2sgZm9yIGVycm9yIGluIGNyMC5TTyBhbmQgbmVnYXRl IHVwb24gZXJyb3IKLSsgICAgImJjIDQsIDMsIDRmXG4iCi0rICAgICJuZWcgMywgM1xuIgotKyAg ICAiNDogYmxyXG4iCi0rCi0gICAgICIuY2ZpX2VuZHByb2NcbiIKLSAgICAgIi5zaXplIFN5c2Nh bGxBc20sIC4tU3lzY2FsbEFzbVxuIgotICNlbmRpZgotICAgICApOyAgLy8gYXNtCi0gCi0tI2lm IGRlZmluZWQoX194ODZfNjRfXykKLSsjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCi0gZXh0ZXJuICJDIiB7Ci0gaW50cHRyX3QgU3lzY2FsbEFzbShpbnRw dHJfdCBuciwgY29uc3QgaW50cHRyX3QgYXJnc1s2XSk7Ci0gfQotQEAgLTQyNyw2ICs0NzEsOCBA QCBpbnRwdHJfdCBTeXNjYWxsOjpDYWxsKGludCBuciwKLSAgICAgcmV0ID0gaW5vdXQ7Ci0gICB9 Ci0gCi0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgaW50cHRyX3QgcmV0ID0gU3lz Y2FsbEFzbShuciwgYXJncyk7Ci0gI2Vsc2UKLSAjZXJyb3IgIlVuaW1wbGVtZW50ZWQgYXJjaGl0 ZWN0dXJlIgotICNlbmRpZgotQEAgLTQ0Myw4ICs0ODksMTggQEAgdm9pZCBTeXNjYWxsOjpQdXRW YWx1ZUluVWNvbnRleHQoaW50cHRyX3QgcmV0X3ZhbCwgdWNvbnRleHRfdCogY3R4KSB7Ci0gICAg IC8vIG5lZWRzIHRvIGJlIGNoYW5nZWQgYmFjay4KLSAgICAgcmV0X3ZhbCA9IC1yZXRfdmFsOwot ICAgICBTRUNDT01QX1BBUk00KGN0eCkgPSAxOwotLSAgfSBlbHNlCi0rICB9IGVsc2UgewotICAg ICBTRUNDT01QX1BBUk00KGN0eCkgPSAwOwotKyAgfQotKyNlbmRpZgotKyNpZiBkZWZpbmVkKF9f cG93ZXJwYzY0X18pCi0rICAvLyBTYW1lIGFzIE1JUFMsIG5lZWQgdG8gaW52ZXJ0IHJldCBhbmQg c2V0IGVycm9yIHJlZ2lzdGVyIChjcjAuU08pCi0rICBpZiAocmV0X3ZhbCA8PSAtMSAmJiByZXRf dmFsID49IC00MDk1KSB7Ci0rICAgIHJldF92YWwgPSAtcmV0X3ZhbDsKLSsgICAgY3R4LT51Y19t Y29udGV4dC5yZWdzLT5jY3IgfD0gKDEgPDwgMjgpOwotKyAgfSBlbHNlIHsKLSsgICAgY3R4LT51 Y19tY29udGV4dC5yZWdzLT5jY3IgJj0gfigxIDw8IDI4KTsKLSsgIH0KLSAjZW5kaWYKLSAgIFNF Q0NPTVBfUkVTVUxUKGN0eCkgPSBzdGF0aWNfY2FzdDxncmVnX3Q+KHJldF92YWwpOwotIH0KLS0t LSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21w LWJwZi90cmFwLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRi b3gvbGludXgvc2VjY29tcC1icGYvdHJhcC5jYwotQEAgLTIzMCw2ICsyMzAsMjAgQEAgdm9pZCBU cmFwOjpTaWdTeXMoaW50IG5yLCBMaW51eFNpZ0luZm8qIGluZm8sIHVjb250ZXh0X3QqIGN0eCkg ewotICAgICAgIFNldElzSW5TaWdIYW5kbGVyKCk7Ci0gICAgIH0KLSAKLSsjaWYgZGVmaW5lZChf X3Bvd2VycGM2NF9fKQotKyAgICAvLyBPbiBwcGM2NCtnbGliYywgc29tZSBzeXNjYWxscyBzZWVt IHRvIGFjY2lkZW50YWxseSBuZWdhdGUgdGhlIGZpcnN0Ci0rICAgIC8vIHBhcmFtZXRlciB3aGlj aCBjYXVzZXMgY2hlY2tzIGFnYWluc3QgaXQgdG8gZmFpbC4gRm9yIG5vdywgbWFudWFsbHkKLSsg ICAgLy8gbmVnYXRlIHRoZW0gYmFjay4KLSsgICAgLy8gVE9ETyhzaGF3bkBhbmFzdGFzLmlvKTog aW52ZXN0aWdhdGUgdGhpcyBpc3N1ZSBmdXJ0aGVyCi0rICAgIGF1dG8gbnIgPSBTRUNDT01QX1NZ U0NBTEwoY3R4KTsKLSsgICAgaWYgKG5yID09IF9fTlJfb3BlbmF0IHx8IG5yID09IF9fTlJfbWtk aXJhdCB8fCBuciA9PSBfX05SX2ZhY2Nlc3NhdCB8fCBuciA9PSBfX05SX3JlYWRsaW5rYXQgfHwK LSsgICAgICAgIG5yID09IF9fTlJfcmVuYW1lYXQgfHwgbnIgPT0gX19OUl9yZW5hbWVhdDIgfHwg bnIgPT0gX19OUl9uZXdmc3RhdGF0IHx8IG5yID09IF9fTlJfdW5saW5rYXQpIHsKLSsgICAgICAg IGlmIChzdGF0aWNfY2FzdDxpbnQ+KFNFQ0NPTVBfUEFSTTEoY3R4KSkgPiAwKSB7Ci0rICAgICAg ICAgICAgU0VDQ09NUF9QQVJNMShjdHgpID0gLVNFQ0NPTVBfUEFSTTEoY3R4KTsKLSsgICAgICAg IH0KLSsgICAgfQotKyNlbmRpZgotKwotICAgICAvLyBDb3B5IHRoZSBzZWNjb21wLXNwZWNpZmlj IGRhdGEgaW50byBhIGFyY2hfc2VjY29tcF9kYXRhIHN0cnVjdHVyZS4gVGhpcwotICAgICAvLyBp cyB3aGF0IHdlIGFyZSBzaG93aW5nIHRvIFRyYXBGbmMgY2FsbGJhY2tzIHRoYXQgdGhlIHN5c3Rl bSBjYWxsCi0gICAgIC8vIGV2YWx1YXRvciByZWdpc3RlcmVkIHdpdGggdGhlIHNhbmRib3guCi0t LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2Vydmlj ZXMvY3JlZGVudGlhbHMuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v c2FuZGJveC9saW51eC9zZXJ2aWNlcy9jcmVkZW50aWFscy5jYwotQEAgLTc5LDcgKzc5LDcgQEAg Ym9vbCBDaHJvb3RUb1NhZmVFbXB0eURpcigpIHsKLSAgIHBpZF90IHBpZCA9IC0xOwotICAgYWxp Z25hcygxNikgY2hhciBzdGFja19idWZbUFRIUkVBRF9TVEFDS19NSU5dOwotICNpZiBkZWZpbmVk KEFSQ0hfQ1BVX1g4Nl9GQU1JTFkpIHx8IGRlZmluZWQoQVJDSF9DUFVfQVJNX0ZBTUlMWSkgfHwg XAotLSAgICBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQotKyAgICBkZWZpbmVkKEFSQ0hf Q1BVX01JUFNfRkFNSUxZKSB8fCBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSAgIC8v IFRoZSBzdGFjayBncm93cyBkb3dud2FyZC4KLSAgIHZvaWQqIHN0YWNrID0gc3RhY2tfYnVmICsg c2l6ZW9mKHN0YWNrX2J1Zik7Ci0gI2Vsc2UKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vc2FuZGJveC9saW51eC9zeXNjYWxsX2Jyb2tlci9icm9rZXJfcHJvY2Vzcy5jYwot KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3N5c2Nh bGxfYnJva2VyL2Jyb2tlcl9wcm9jZXNzLmNjCi1AQCAtMTUxLDcgKzE1MSw3IEBAIGJvb2wgQnJv a2VyUHJvY2Vzczo6SXNTeXNjYWxsQWxsb3dlZChpbnQgc3lzbm8pIGNvbnN0IHsKLSAjaWYgZGVm aW5lZChfX05SX2ZzdGF0YXQpCi0gICAgIGNhc2UgX19OUl9mc3RhdGF0OgotICNlbmRpZgotLSNp ZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18pCi0rI2lmIGRlZmlu ZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKQotICAgICBjYXNlIF9fTlJfbmV3ZnN0YXRhdDoKLSAjZW5kaWYKLSAgICAgICByZXR1 cm4gIWZhc3RfY2hlY2tfaW5fY2xpZW50XyB8fCBhbGxvd2VkX2NvbW1hbmRfc2V0Xy50ZXN0KENP TU1BTkRfU1RBVCk7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRi b3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGludXhfc2VjY29tcC5oCi0rKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGludXhf c2VjY29tcC5oCi1AQCAtMjksNiArMjksOSBAQAotICNpZm5kZWYgRU1fQUFSQ0g2NAotICNkZWZp bmUgRU1fQUFSQ0g2NCAxODMKLSAjZW5kaWYKLSsjaWZuZGVmIEVNX1BQQzY0Ci0rI2RlZmluZSBF TV9QUEM2NCAyMQotKyNlbmRpZgotIAotICNpZm5kZWYgX19BVURJVF9BUkNIXzY0QklUCi0gI2Rl ZmluZSBfX0FVRElUX0FSQ0hfNjRCSVQgMHg4MDAwMDAwMAotQEAgLTU0LDYgKzU3LDEyIEBACi0g I2lmbmRlZiBBVURJVF9BUkNIX0FBUkNINjQKLSAjZGVmaW5lIEFVRElUX0FSQ0hfQUFSQ0g2NCAo RU1fQUFSQ0g2NCB8IF9fQVVESVRfQVJDSF82NEJJVCB8IF9fQVVESVRfQVJDSF9MRSkKLSAjZW5k aWYKLSsjaWZuZGVmIEFVRElUX0FSQ0hfUFBDNjQKLSsjZGVmaW5lIEFVRElUX0FSQ0hfUFBDNjQg KEVNX1BQQzY0IHwgX19BVURJVF9BUkNIXzY0QklUKQotKyNlbmRpZgotKyNpZm5kZWYgQVVESVRf QVJDSF9QUEM2NExFCi0rI2RlZmluZSBBVURJVF9BUkNIX1BQQzY0TEUgKEVNX1BQQzY0IHwgX19B VURJVF9BUkNIXzY0QklUIHwgX19BVURJVF9BUkNIX0xFKQotKyNlbmRpZgotIAotIC8vIEZvciBw cmN0bC5oCi0gI2lmbmRlZiBQUl9TRVRfU0VDQ09NUAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3NpZ25hbC5o Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc3lz dGVtX2hlYWRlcnMvbGludXhfc2lnbmFsLmgKLUBAIC0xMyw3ICsxMyw3IEBACi0gLy8gKG5vdCB1 bmRlZmluZWQsIGJ1dCBkZWZpbmVkIGRpZmZlcmVudCB2YWx1ZXMgYW5kIGluIGRpZmZlcmVudCBt ZW1vcnkKLSAvLyBsYXlvdXRzKS4gU28sIGZpbGwgdGhlIGdhcCBoZXJlLgotICNpZiBkZWZpbmVk KF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwg XAotLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8 fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gCi0gI2RlZmluZSBMSU5VWF9TSUdIVVAgMQotICNk ZWZpbmUgTElOVVhfU0lHSU5UIDIKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51eF9zeXNjYWxscy5oCi0rKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRl cnMvbGludXhfc3lzY2FsbHMuaAotQEAgLTM1LDUgKzM1LDkgQEAKLSAjaW5jbHVkZSAic2FuZGJv eC9saW51eC9zeXN0ZW1faGVhZGVycy9hcm02NF9saW51eF9zeXNjYWxscy5oIgotICNlbmRpZgot IAotKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rI2luY2x1ZGUgInNhbmRib3gvbGludXgv c3lzdGVtX2hlYWRlcnMvcHBjNjRfbGludXhfc3lzY2FsbHMuaCIKLSsjZW5kaWYKLSsKLSAjZW5k aWYgIC8vIFNBTkRCT1hfTElOVVhfU1lTVEVNX0hFQURFUlNfTElOVVhfU1lTQ0FMTFNfSF8KLSAK LS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zeXN0 ZW1faGVhZGVycy9saW51eF91Y29udGV4dC5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGludXhfdWNvbnRleHQuaAot QEAgLTExLDYgKzExLDggQEAKLSAjaW5jbHVkZSAic2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVy cy9hcm1fbGludXhfdWNvbnRleHQuaCIKLSAjZWxpZiBkZWZpbmVkKF9faTM4Nl9fKQotICNpbmNs dWRlICJzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2kzODZfbGludXhfdWNvbnRleHQuaCIK LSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rI2luY2x1ZGUgInNhbmRib3gvbGludXgv c3lzdGVtX2hlYWRlcnMvcHBjNjRfbGludXhfdWNvbnRleHQuaCIKLSAjZWxzZQotICNlcnJvciAi Tm8gc3VwcG9ydCBmb3IgeW91ciBhcmNoaXRlY3R1cmUgaW4gUE5hQ2wgaGVhZGVyIgotICNlbmRp ZgotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9wcGM2NF9s aW51eF9zeXNjYWxscy5oCi1AQCAtMCwwICsxLDEyIEBACi0rLy8gQ29weXJpZ2h0IDIwMTQgVGhl IENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rLy8gVXNlIG9mIHRoaXMg c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi ZQotKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0rCi0rI2lmbmRlZiBTQU5EQk9YX0xJ TlVYX1NZU1RFTV9IRUFERVJTX1BQQzY0X0xJTlVYX1NZU0NBTExTX0hfCi0rI2RlZmluZSBTQU5E Qk9YX0xJTlVYX1NZU1RFTV9IRUFERVJTX1BQQzY0X0xJTlVYX1NZU0NBTExTX0hfCi0rCi0rI2lu Y2x1ZGUgPGFzbS91bmlzdGQuaD4KLSsKLSsvL1RPRE86IGlzIGl0IG5lY2Vzc2FyeSB0byByZWRl ZmluZSBzeXNjYWxsIG51bWJlcnMgZm9yIFBQQzY0PwotKwotKyNlbmRpZiAgLy8gU0FOREJPWF9M SU5VWF9TWVNURU1fSEVBREVSU19QUEM2NF9MSU5VWF9TWVNDQUxMU19IXwotbmV3IGZpbGUgbW9k ZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9wcGM2NF9saW51eF91Y29udGV4dC5o Ci1AQCAtMCwwICsxLDEyIEBACi0rLy8gQ29weXJpZ2h0IDIwMTQgVGhlIENocm9taXVtIEF1dGhv cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotKy8vIGZvdW5kIGlu IHRoZSBMSUNFTlNFIGZpbGUuCi0rCi0rI2lmbmRlZiBTQU5EQk9YX0xJTlVYX1NZU1RFTV9IRUFE RVJTX1BQQzY0X0xJTlVYX1VDT05URVhUX0hfCi0rI2RlZmluZSBTQU5EQk9YX0xJTlVYX1NZU1RF TV9IRUFERVJTX1BQQzY0X0xJTlVYX1VDT05URVhUX0hfCi0rCi0rI2luY2x1ZGUgPHN5cy91Y29u dGV4dC5oPgotKwotKy8vVE9ETzogaXMgaXQgbmVjZXNzYXJ5IHRvIHJlZGVmaW5lIHVjb250ZXh0 IG9uIFBQQzY0PwotKwotKyNlbmRpZiAgLy8gU0FOREJPWF9MSU5VWF9TWVNURU1fSEVBREVSU19Q UEM2NF9MSU5VWF9VQ09OVEVYVF9IXwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS9zZXJ2aWNlcy9zZXJ2aWNlX21hbmFnZXIvc2FuZGJveC9saW51eC9icGZfcmVuZGVyZXJf cG9saWN5X2xpbnV4LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Nl cnZpY2VzL3NlcnZpY2VfbWFuYWdlci9zYW5kYm94L2xpbnV4L2JwZl9yZW5kZXJlcl9wb2xpY3lf bGludXguY2MKLUBAIC0xNSw2ICsxNSwxMSBAQAotICNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3N5 c3RlbV9oZWFkZXJzL2xpbnV4X3N5c2NhbGxzLmgiCi0gI2luY2x1ZGUgInNlcnZpY2VzL3NlcnZp Y2VfbWFuYWdlci9zYW5kYm94L2xpbnV4L3NhbmRib3hfbGludXguaCIKLSAKLSsvLyBPbiBQUEM2 NCwgVENHRVRTIGlzIGRlZmluZWQgaW4gdGVybXMgb2Ygc3RydWN0IHRlcm1pb3MsIHNvIHdlIG11 c3QgaW5jbHVkZSB0ZXJtaW9zLmgKLSsjaWZkZWYgX19wb3dlcnBjNjRfXwotKyNpbmNsdWRlIDx0 ZXJtaW9zLmg+Ci0rI2VuZGlmCi0rCi0gLy8gVE9ETyh2aWduYXR0aSk6IHJlcGxhY2UgdGhlIGxv Y2FsIGRlZmluaXRpb25zIGJlbG93IHdpdGggI2luY2x1ZGUKLSAvLyA8bGludXgvZG1hLWJ1Zi5o PiBvbmNlIGtlcm5lbCB2ZXJzaW9uIDQuNiBiZWNvbWVzIHdpZGVseSB1c2VkLgotICNpbmNsdWRl IDxsaW51eC90eXBlcy5oPgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9hbmdsZS9zcmMvbGliQU5HTEUvQ29uc3RhbnRzLmgKLSsrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYW5nbGUvc3JjL2xpYkFOR0xFL0Nv bnN0YW50cy5oCi1AQCAtOSw2ICs5LDcgQEAKLSAjaWZuZGVmIExJQkFOR0xFX0NPTlNUQU5UU19I XwotICNkZWZpbmUgTElCQU5HTEVfQ09OU1RBTlRTX0hfCi0gCi0rI2luY2x1ZGUgPGNzdGRkZWY+ Ci0gI2luY2x1ZGUgImNvbW1vbi9wbGF0Zm9ybS5oIgotIAotIG5hbWVzcGFjZSBnbAotLS0tIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJl ci9wbGF0Zm9ybS9oZWFwL2FzbS9CVUlMRC5nbgotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9oZWFwL2FzbS9C VUlMRC5nbgotQEAgLTQ2LDYgKzQ2LDEwIEBAIGlmIChjdXJyZW50X2NwdSA9PSAieDg2IiB8fCBj dXJyZW50X2NwdSA9PSAieDY0IikgewotICAgICAgIHNvdXJjZXMgPSBbCi0gICAgICAgICAiU2F2 ZVJlZ2lzdGVyc19taXBzNjQuUyIsCi0gICAgICAgXQotKyAgICB9IGVsc2UgaWYgKGN1cnJlbnRf Y3B1ID09ICJwcGM2NCIpIHsKLSsgICAgICBzb3VyY2VzID0gWwotKyAgICAgICAgIlNhdmVSZWdp c3RlcnNfcHBjNjQuUyIsCi0rICAgICAgXQotICAgICB9Ci0gCi0gICAgIGlmIChjdXJyZW50X2Nw dSA9PSAiYXJtIikgewotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVy ZXIvcGxhdGZvcm0vaGVhcC9hc20vU2F2ZVJlZ2lzdGVyc19wcGM2NC5TCi1AQCAtMCwwICsxLDYw IEBACi0rLyoKLSsgKiB0eXBlZGVmIHZvaWQgKCpQdXNoQWxsUmVnaXN0ZXJzQ2FsbGJhY2spKFNh ZmVQb2ludEJhcnJpZXIqLCBUaHJlYWRTdGF0ZSosIGludHB0cl90Kik7Ci0rICogZXh0ZXJuICJD IiB2b2lkIFB1c2hBbGxSZWdpc3RlcnMoU2FmZVBvaW50QmFycmllciosIFRocmVhZFN0YXRlKiwg UHVzaEFsbFJlZ2lzdGVyc0NhbGxiYWNrKQotKyAqLwotKwotKy50eXBlIFB1c2hBbGxSZWdpc3Rl cnMsICVmdW5jdGlvbgotKy5nbG9iYWwgUHVzaEFsbFJlZ2lzdGVycwotKy5oaWRkZW4gUHVzaEFs bFJlZ2lzdGVycwotK1B1c2hBbGxSZWdpc3RlcnM6Ci0rICAgICAgICAvLyBQdXNoIGFsbCBjYWxs ZWUtc2F2ZXMgcmVnaXN0ZXJzIHRvIGdldCB0aGVtCi0rICAgICAgICAvLyBvbiB0aGUgc3RhY2sg Zm9yIGNvbnNlcnZhdGl2ZSBzdGFjayBzY2FubmluZy4KLSsgICAgICAgIC8vIFJlc2VydmUgc3Bh Y2UgZm9yIGNhbGxlZS1zYXZlZCByZWdpc3RlcnMgYW5kIG1pbmltYWwgc3RhY2sgZnJhbWUuCi0r ICAgICAgICBtZmxyIDAgICAgICAgICAjIHIwID0gTFIKLSsgICAgICAgIHN0ZCAwLDE2KDEpICAg ICMgc3RvcmUgTFIgYXQgYWRkciBzcCsxNgotKyAgICAgICAgc3RkdSAxLC0xNzYoMSkgIyBncm93 IHN0YWNrIGJ5IDE3NiBieXRlcyBhbmQgc3RvcmUgbmV3IHN0YWNrIHRvcCBwdHIgdG8gcjEKLSsg ICAgICAgICAgICAjIDMyMTgqOCA9IG1pbiBzdGFjayAgbm9uLXZvbGF0aWxlIHJlZ2lzdGVycwot KwotKyAgICAgICAgLy8gU2F2ZSB0aGUgY2FsbGVlLXNhdmVkIHJlZ2lzdGVycwotKyAgICAgICAg c3RkIDMxLDE2OCgxKSAgIyBzdG9yZSByMzEgdG8gYWRkciBzcCsxNjggCi0rICAgICAgICBzdGQg MzAsMTYwKDEpICAjIGV0Yy4uLgotKyAgICAgICAgc3RkIDI5LDE1MigxKQotKyAgICAgICAgc3Rk IDI4LDE0NCgxKQotKyAgICAgICAgc3RkIDI3LDEzNigxKQotKyAgICAgICAgc3RkIDI2LDEyOCgx KQotKyAgICAgICAgc3RkIDI1LDEyMCgxKQotKyAgICAgICAgc3RkIDI0LDExMigxKQotKyAgICAg ICAgc3RkIDIzLDEwNCgxKQotKyAgICAgICAgc3RkIDIyLDk2KDEpCi0rICAgICAgICBzdGQgMjEs ODgoMSkKLSsgICAgICAgIHN0ZCAyMCw4MCgxKQotKyAgICAgICAgc3RkIDE5LDcyKDEpCi0rICAg ICAgICBzdGQgMTgsNjQoMSkKLSsgICAgICAgIHN0ZCAxNyw1NigxKQotKyAgICAgICAgc3RkIDE2 LDQ4KDEpCi0rICAgICAgICBzdGQgMTUsNDAoMSkKLSsgICAgICAgIHN0ZCAxNCwzMigxKQotKyAg ICAgICAgCi0rICAgICAgICAvLyBOb3RlOiB0aGUgY2FsbGVlLXNhdmVkIGZsb2F0aW5nIHBvaW50 IHJlZ2lzdGVycyBkbyBub3QgbmVlZCB0byBiZQotKyAgICAgICAgLy8gY29waWVkIHRvIHRoZSBz dGFjaywgYmVjYXVzZSBmcCByZWdpc3RlcnMgbmV2ZXIgaG9sZCBoZWFwIHBvaW50ZXJzCi0rICAg ICAgICAvLyBhbmQgc28gZG8gbm90IG5lZWQgdG8gYmUga2VwdCB2aXNpYmxlIHRvIHRoZSBnYXJi YWdlIGNvbGxlY3Rvci4KLSsgICAgICAgIAotKyAgICAgICAgLy8gUGFzcyB0aGUgdHdvIGZpcnN0 IGFyZ3VtZW50cyB1bnRvdWNoZWQgaW4gcjMgYW5kIHI0IGFuZCB0aGUKLSsgICAgICAgIC8vIHN0 YWNrIHBvaW50ZXIgdG8gdGhlIGNhbGxiYWNrLgotKwotKyAgICAgICAgc3RkIDIsIDI0KDEpICAg IyBzYXZlIHIyIHRvIHNwKzI0IGFkZHIKLSsgICAgICAgIG10Y3RyIDUgICAgICAgICMgY29weSAz cmQgZnVuY3Rpb24gYXJnIChjYWxsYmFjayBmbiBwb2ludGVyKSB0byBDVFIKLSsgICAgICAgIG1y IDEyLCA1ICAgICAgICMgcjEyIG11c3QgaG9sZCBhZGRyZXNzIG9mIGNhbGxiYWNrIHdlIGFyZSBn b2luZyB0byBjYWxsIAotKyAgICAgICAgICAgICAgICAgICAgICAgIyAgZm9yIHBvc2l0aW9uLWlk ZXBlbmRlbnQgZnVuY3Rpb25zIGluc2lkZSB0aGUgY2FsbGJhY2sgdG8gd29yawotKyAgICAgICAg bXIgNSwgMSAgICAgICAgIyBzZXQgY3VycmVudCBzcCAoc3RhY2sgdG9wKSBhcyAzcmQgYXJndW1l bnQgZm9yIHRoZSBjYWxsYmFjawotKyAgICAgICAgYmN0cmwgICAgICAgICAgIyBzZXQgTFIgdG8g UEMrNCBhbmQgY2FsbCB0aGUgY2FsbGJhY2sKLSsgICAgICAgIGxkIDIsIDI0KDEpICAgICMgcmVz dG9yZSByMiBmcm9tIHNwKzI0IGFkZHIKLSsKLSsgICAgICAgIC8vIEFkanVzdCBzdGFjaywgcmVz dG9yZSByZXR1cm4gYWRkcmVzcyBhbmQgcmV0dXJuLgotKyAgICAgICAgLy8gTm90ZTogdGhlIGNv cGllZCByZWdpc3RlcnMgZG8gbm90IG5lZWQgdG8gYmUgcmVsb2FkZWQgaGVyZSwKLSsgICAgICAg IC8vIGJlY2F1c2UgdGhleSB3ZXJlIHByZXNlcnZlZCBieSB0aGUgY2FsbGVkIHJvdXRpbmUuCi0r ICAgICAgICBhZGRpIDEsMSwxNzYgICAjIHJlc3RvcmUgb3JpZ2luYWwgU1AgYnkgZG9pbmcgc3Ag Kz0gMTc2Ci0rICAgICAgICBsZCAwLDE2KDEpICAgICAjIHJlc3RvcmUgb3JpZ2luYWwgTFIgZnJv bSBhZGRyIHNwKzE2Ci0rICAgICAgICBtdGxyIDAgICAgICAgICAjIC4uLiBjb3B5IGl0IHRvIHRo ZSBhY3R1YWwgTFIKLSsgICAgICAgIGJsciAgICAgICAgICAgICMgcmV0dXJuIHRvIExSIGFkZHIK LSsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxp bmsvcmVuZGVyZXIvcGxhdGZvcm0vaGVhcC9oZWFwX3BhZ2UuaAotKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9o ZWFwL2hlYXBfcGFnZS5oCi1AQCAtNjcsMTEgKzY3LDEyIEBAIGNvbnN0ZXhwciBzaXplX3Qga0Js aW5rUGFnZUJhc2VNYXNrID0gfmtCbGlua1BhZ2VPZmZzZXRNYXNrOwotIGNvbnN0ZXhwciBzaXpl X3Qga0JsaW5rUGFnZXNQZXJSZWdpb24gPSAxMDsKLSAKLSAvLyBUT0RPKG55YSk6IFJlcGxhY2Ug dGhpcyB3aXRoIHNvbWV0aGluZyBsaWtlICNpZiBFTkFCTEVfTkFDTC4KLS0jaWYgMAotKyNpZiBk ZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQotIC8vIE5hQ2wncyBzeXN0ZW0gcGFnZSBzaXplIGlzIDY0 IEtpQi4gVGhpcyBjYXVzZXMgYSBwcm9ibGVtIGluIE9pbHBhbidzIGhlYXAKLSAvLyBsYXlvdXQg YmVjYXVzZSBPaWxwYW4gYWxsb2NhdGVzIHR3byBndWFyZCBwYWdlcyBmb3IgZWFjaCBCbGluayBw YWdlICh3aG9zZQotIC8vIHNpemUgaXMga0JsaW5rUGFnZVNpemUgPSAyXjE3ID0gMTI4IEtpQiku IFNvIHdlIGRvbid0IHVzZSBndWFyZCBwYWdlcyBpbgotIC8vIE5hQ2wuCi0rLy8gVGhlIHNhbWUg aXNzdWUgaG9sZHMgZm9yIHBwYzY0IHN5c3RlbXMsIHdoaWNoIHVzZSBhIDY0ayBwYWdlIHNpemUu Ci0gY29uc3RleHByIHNpemVfdCBrQmxpbmtHdWFyZFBhZ2VTaXplID0gMDsKLSAjZWxzZQotIGNv bnN0ZXhwciBzaXplX3Qga0JsaW5rR3VhcmRQYWdlU2l6ZSA9IGJhc2U6OmtTeXN0ZW1QYWdlU2l6 ZTsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxp bmsvcmVuZGVyZXIvcGxhdGZvcm0vd3RmL2R0b2EvdXRpbHMuaAotKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS93 dGYvZHRvYS91dGlscy5oCi1AQCAtNDUsNyArNDUsNyBAQAotIC8vIGRpc2FibGVkLikKLSAvLyBP biBMaW51eCx4ODYgODkyNTVlLTIyICE9IERpdl9kb3VibGUoODkyNTUuMC8xZTIyKQotICNpZiBk ZWZpbmVkKF9NX1g2NCkgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fQVJNRUxf XykgfHwgXAotLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fTUlQU0VMX18p Ci0rICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19NSVBTRUxfXykgfHwgZGVm aW5lZChfX3Bvd2VycGM2NF9fKQotICNkZWZpbmUgRE9VQkxFX0NPTlZFUlNJT05fQ09SUkVDVF9E T1VCTEVfT1BFUkFUSU9OUyAxCi0gI2VsaWYgZGVmaW5lZChfTV9JWDg2KSB8fCBkZWZpbmVkKF9f aTM4Nl9fKQotICNpZiBkZWZpbmVkKF9XSU4zMikKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL0JVSUxELmduCi0rKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9CVUlMRC5nbgot QEAgLTEwMCw2ICsxMDAsMTMgQEAgaWYgKGlzX3dpbiAmJiAhaXNfbXNhbiAmJiBjdXJyZW50X2Nw dSAhPSAiYXJtNjQiKSB7Ci0gICAgICAgfSBlbHNlIHsKLSAgICAgICAgIHB1YmxpY19jb25maWdz ID0gWyAiOm5vX2FzbV9jb25maWciIF0KLSAgICAgICB9Ci0rICAgIH0gZWxzZSBpZiAoY3VycmVu dF9jcHUgPT0gInBwYzY0IikgewotKyAgICAgIGlmIChpc19saW51eCkgewotKyAgICAgICAgIyBU T0RPOiBwcGM2NCAoYmUpIGNoZWNrCi0rICAgICAgICBzb3VyY2VzICs9IGNyeXB0b19zb3VyY2Vz X2xpbnV4X3BwYzY0bGUKLSsgICAgICB9IGVsc2UgewotKyAgICAgICAgcHVibGljX2NvbmZpZ3Mg PSBbICI6bm9fYXNtX2NvbmZpZyIgXQotKyAgICAgIH0KLSAgICAgfSBlbHNlIHsKLSAgICAgICBw dWJsaWNfY29uZmlncyA9IFsgIjpub19hc21fY29uZmlnIiBdCi0gICAgIH0KLS0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQv c3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vcmF3X2NvbnRleHRfY3B1LmgKLSsr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQv YnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vcmF3X2NvbnRleHRf Y3B1LmgKLUBAIC00NCw2ICs0NCw4IEBAIHR5cGVkZWYgTURSYXdDb250ZXh0QVJNIFJhd0NvbnRl eHRDUFU7Ci0gdHlwZWRlZiBNRFJhd0NvbnRleHRBUk02NF9PbGQgUmF3Q29udGV4dENQVTsKLSAj ZWxpZiBkZWZpbmVkKF9fbWlwc19fKQotIHR5cGVkZWYgTURSYXdDb250ZXh0TUlQUyBSYXdDb250 ZXh0Q1BVOwotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSt0eXBlZGVmIE1EUmF3Q29u dGV4dFBQQzY0IFJhd0NvbnRleHRDUFU7Ci0gI2Vsc2UKLSAjZXJyb3IgIlRoaXMgY29kZSBoYXMg bm90IGJlZW4gcG9ydGVkIHRvIHlvdXIgcGxhdGZvcm0geWV0LiIKLSAjZW5kaWYKLS0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtw YWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdGhyZWFkX2luZm8uY2MKLSsr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQv YnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdGhyZWFkX2luZm8u Y2MKLUBAIC0yNzAsNyArMjcwLDQyIEBAIHZvaWQgVGhyZWFkSW5mbzo6RmlsbENQVUNvbnRleHQo UmF3Q29udGV4dENQVSogb3V0KSBjb25zdCB7Ci0gICBvdXQtPmZsb2F0X3NhdmUuZmlyID0gbWNv bnRleHQuZnBjX2VpcjsKLSAjZW5kaWYKLSB9Ci0tI2VuZGlmICAvLyBfX21pcHNfXwotKwotKyNl bGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsKLSt1aW50cHRyX3QgVGhyZWFkSW5mbzo6R2V0 SW5zdHJ1Y3Rpb25Qb2ludGVyKCkgY29uc3QgewotKyAgICByZXR1cm4gbWNvbnRleHQuZ3BfcmVn c1tQVF9OSVBdOwotK30KLSsKLSt2b2lkIFRocmVhZEluZm86OkZpbGxDUFVDb250ZXh0KFJhd0Nv bnRleHRDUFUqIG91dCkgY29uc3QgewotKyAgICBvdXQtPmNvbnRleHRfZmxhZ3MgPSBNRF9DT05U RVhUX1BQQzY0X0ZVTEw7Ci0rICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTURfQ09OVEVYVF9QUEM2 NF9HUFJfQ09VTlQ7IGkrKykKLSsgICAgICAgIG91dC0+Z3ByW2ldID0gbWNvbnRleHQuZ3BfcmVn c1tpXTsKLSsKLSsgICAgb3V0LT5sciA9IG1jb250ZXh0LmdwX3JlZ3NbUFRfTE5LXTsKLSsgICAg b3V0LT5zcnIwID0gbWNvbnRleHQuZ3BfcmVnc1tQVF9OSVBdOwotKyAgICBvdXQtPnNycjEgPSBt Y29udGV4dC5ncF9yZWdzW1BUX01TUl07Ci0rICAgIG91dC0+Y3IgPSBtY29udGV4dC5ncF9yZWdz W1BUX0NDUl07Ci0rICAgIG91dC0+eGVyID0gbWNvbnRleHQuZ3BfcmVnc1tQVF9YRVJdOwotKyAg ICBvdXQtPmN0ciA9IG1jb250ZXh0LmdwX3JlZ3NbUFRfQ1RSXTsKLSsgICAgCi0rICAgIGZvciAo aW50IGkgPSAwOyBpIDwgTURfRkxPQVRJTkdTQVZFQVJFQV9QUENfRlBSX0NPVU5UOyBpKyspCi0r ICAgICAgICBvdXQtPmZsb2F0X3NhdmUuZnByZWdzW2ldID0gbWNvbnRleHQuZnBfcmVnc1tpXTsK LSsKLSsgICAgb3V0LT5mbG9hdF9zYXZlLmZwc2NyID0gbWNvbnRleHQuZnBfcmVnc1tORlBSRUct MV07Ci0rCi0rICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTURfVkVDVE9SU0FWRUFSRUFfUFBDX1ZS X0NPVU5UOyBpKyspCi0rICAgICAgICBvdXQtPnZlY3Rvcl9zYXZlLnNhdmVfdnJbaV0gPSBcCi0r ICAgICAgICAgICAgeygoKHVpbnQ2NF90KXZyZWdzLnZycmVnc1tpXVswXSkgPDwgMzIpIAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgfCB2cmVncy52cnJlZ3NbaV1bMV0sIAotKyAgICAgICAg ICAgICgoKHVpbnQ2NF90KXZyZWdzLnZycmVnc1tpXVsyXSkgPDwgMzIpCi0rICAgICAgICAgICAg ICAgICAgICAgICAgIHwgdnJlZ3MudnJyZWdzW2ldWzNdfTsKLSsKLSsgICAgb3V0LT52cnNhdmUg PSB2cmVncy52cnNhdmU7Ci0rICAgIG91dC0+dmVjdG9yX3NhdmUuc2F2ZV92c2NyID0gezAsIHZy ZWdzLnZzY3IudnNjcl93b3JkfTsKLSsgICAgb3V0LT52ZWN0b3Jfc2F2ZS5zYXZlX3ZydmFsaWQg PSAweEZGRkZGRkZGOyAKLSt9Ci0rI2VuZGlmICAvLyBfX3Bvd2VycGM2NF9fCi0gCi0gdm9pZCBU aHJlYWRJbmZvOjpHZXRHZW5lcmFsUHVycG9zZVJlZ2lzdGVycyh2b2lkKiogZ3BfcmVncywgc2l6 ZV90KiBzaXplKSB7Ci0gICBhc3NlcnQoZ3BfcmVncyB8fCBzaXplKTsKLUBAIC0yNzksNiArMzE0 LDExIEBAIHZvaWQgVGhyZWFkSW5mbzo6R2V0R2VuZXJhbFB1cnBvc2VSZWdpc3RlcnModm9pZCoq IGdwX3JlZ3MsIHNpemVfdCogc2l6ZSkgewotICAgICAqZ3BfcmVncyA9IG1jb250ZXh0LmdyZWdz OwotICAgaWYgKHNpemUpCi0gICAgICpzaXplID0gc2l6ZW9mKG1jb250ZXh0LmdyZWdzKTsKLSsj ZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICBpZiAoZ3BfcmVncykKLSsgICAgKmdwX3Jl Z3MgPSBtY29udGV4dC5ncF9yZWdzOwotKyAgaWYgKHNpemUpCi0rICAgICpzaXplID0gc2l6ZW9m KG1jb250ZXh0LmdwX3JlZ3MpOwotICNlbHNlCi0gICBpZiAoZ3BfcmVncykKLSAgICAgKmdwX3Jl Z3MgPSAmcmVnczsKLUBAIC0yOTQsNiArMzM0LDExIEBAIHZvaWQgVGhyZWFkSW5mbzo6R2V0Rmxv YXRpbmdQb2ludFJlZ2lzdGVycyh2b2lkKiogZnBfcmVncywgc2l6ZV90KiBzaXplKSB7Ci0gICAg ICpmcF9yZWdzID0gJm1jb250ZXh0LmZwcmVnczsKLSAgIGlmIChzaXplKQotICAgICAqc2l6ZSA9 IHNpemVvZihtY29udGV4dC5mcHJlZ3MpOwotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykK LSsgIGlmIChmcF9yZWdzKQotKyAgICAqZnBfcmVncyA9ICZtY29udGV4dC5mcF9yZWdzOwotKyAg aWYgKHNpemUpCi0rICAgICpzaXplID0gc2l6ZW9mKG1jb250ZXh0LmZwX3JlZ3MpOwotICNlbHNl Ci0gICBpZiAoZnBfcmVncykKLSAgICAgKmZwX3JlZ3MgPSAmZnByZWdzOwotQEAgLTMwMiw0ICsz NDcsMTMgQEAgdm9pZCBUaHJlYWRJbmZvOjpHZXRGbG9hdGluZ1BvaW50UmVnaXN0ZXJzKHZvaWQq KiBmcF9yZWdzLCBzaXplX3QqIHNpemUpIHsKLSAjZW5kaWYKLSB9Ci0gCi0rI2lmIGRlZmluZWQo X19wb3dlcnBjNjRfXykKLSt2b2lkIFRocmVhZEluZm86OkdldFZlY3RvclJlZ2lzdGVycyh2b2lk Kiogdl9yZWdzLCBzaXplX3QqIHNpemUpIHsKLSsgICAgaWYgKHZfcmVncykKLSsgICAgICAgICp2 X3JlZ3MgPSAmdnJlZ3M7Ci0rICAgIGlmIChzaXplKQotKyAgICAgICAgKnNpemUgPSBzaXplb2Yo dnJlZ3MpOwotK30KLSsjZW5kaWYKLSsKLSB9ICAvLyBuYW1lc3BhY2UgZ29vZ2xlX2JyZWFrcGFk Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFr cGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3RocmVhZF9p bmZvLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv YnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdGhy ZWFkX2luZm8uaAotQEAgLTY4LDYgKzY4LDEwIEBAIHN0cnVjdCBUaHJlYWRJbmZvIHsKLSAgIC8v IFVzZSB0aGUgc3RydWN0dXJlcyBkZWZpbmVkIGluIDxzeXMvdXNlci5oPgotICAgc3RydWN0IHVz ZXJfcmVnc19zdHJ1Y3QgcmVnczsKLSAgIHN0cnVjdCB1c2VyX2Zwc2ltZF9zdHJ1Y3QgZnByZWdz OwotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgIC8vIFVzZSB0aGUgc3RydWN0dXJl cyBkZWZpbmVkIGluIDxzeXMvdWNvbnRleHQuaD4uCi0rICBtY29udGV4dF90IG1jb250ZXh0Owot KyAgdnJyZWdzZXRfdCB2cmVnczsKLSAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQotICAgLy8gVXNl IHRoZSBzdHJ1Y3R1cmUgZGVmaW5lZCBpbiA8c3lzL3Vjb250ZXh0Lmg+LgotICAgbWNvbnRleHRf dCBtY29udGV4dDsKLUBAIC04NCw2ICs4OCwxMSBAQCBzdHJ1Y3QgVGhyZWFkSW5mbyB7Ci0gCi0g ICAvLyBSZXR1cm5zIHRoZSBwb2ludGVyIGFuZCBzaXplIG9mIGZsb2F0IHBvaW50IHJlZ2lzdGVy IGFyZWEuCi0gICB2b2lkIEdldEZsb2F0aW5nUG9pbnRSZWdpc3RlcnModm9pZCoqIGZwX3JlZ3Ms IHNpemVfdCogc2l6ZSk7Ci0rCi0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgIC8vIFJl dHVybnMgdGhlIHBvaW50ZXIgYW5kIHNpemUgb2YgdGhlIHZlY3RvciByZWdpc3RlciBhcmVhLiAo UFBDNjQgb25seSkKLSsgIHZvaWQgR2V0VmVjdG9yUmVnaXN0ZXJzKHZvaWQqKiB2X3JlZ3MsIHNp emVfdCogc2l6ZSk7Ci0rI2VuZGlmCi0gfTsKLSAKLSB9ICAvLyBuYW1lc3BhY2UgZ29vZ2xlX2Jy ZWFrcGFkCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vj b250ZXh0X3JlYWRlci5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVy X2NvbW1vbi91Y29udGV4dF9yZWFkZXIuY2MKLUBAIC0yNTQsNiArMjU0LDQ4IEBAIHZvaWQgVUNv bnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUgKm91dCwgY29uc3QgdWNv bnRleHRfdCAqdWMpIHsKLSAgIG91dC0+ZmxvYXRfc2F2ZS5maXIgPSB1Yy0+dWNfbWNvbnRleHQu ZnBjX2VpcjsgIC8vIFVudXNlZC4KLSAjZW5kaWYKLSB9Ci0rCi0rI2VsaWYgZGVmaW5lZChfX3Bv d2VycGM2NF9fKQotKwotK3VpbnRwdHJfdCBVQ29udGV4dFJlYWRlcjo6R2V0U3RhY2tQb2ludGVy KGNvbnN0IHVjb250ZXh0X3QqIHVjKSB7Ci0rICAgIHJldHVybiB1Yy0+dWNfbWNvbnRleHQuZ3Bf cmVnc1tNRF9DT05URVhUX1BQQzY0X1JFR19TUF07Ci0rfQotKwotK3VpbnRwdHJfdCBVQ29udGV4 dFJlYWRlcjo6R2V0SW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0IHVjb250ZXh0X3QqIHVjKSB7Ci0r ICAgIHJldHVybiB1Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9OSVBdOwotK30KLSsKLSt2b2lk IFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVKiBvdXQsIGNvbnN0 IHVjb250ZXh0X3QqIHVjLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHZycmVnc2V0X3QqIHZyZWdzKSB7Ci0rICAgIG91dC0+Y29udGV4dF9mbGFncyA9IE1EX0NP TlRFWFRfUFBDNjRfRlVMTDsKLSsKLSsgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9DT05URVhU X1BQQzY0X0dQUl9DT1VOVDsgaSsrKQotKyAgICAgICAgb3V0LT5ncHJbaV0gPSB1Yy0+dWNfbWNv bnRleHQuZ3BfcmVnc1tpXTsKLSsKLSsgICAgb3V0LT5sciA9IHVjLT51Y19tY29udGV4dC5ncF9y ZWdzW1BUX0xOS107ICAgIAotKyAgICBvdXQtPnNycjAgPSB1Yy0+dWNfbWNvbnRleHQuZ3BfcmVn c1tQVF9OSVBdOwotKyAgICBvdXQtPnNycjEgPSB1Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9N U1JdOwotKyAgICBvdXQtPmNyID0gdWMtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfQ0NSXTsKLSsg ICAgb3V0LT54ZXIgPSB1Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9YRVJdOwotKyAgICBvdXQt PmN0ciA9IHVjLT51Y19tY29udGV4dC5ncF9yZWdzW1BUX0NUUl07Ci0rICAgIAotKyAgICBmb3Ig KGludCBpID0gMDsgaSA8IE1EX0ZMT0FUSU5HU0FWRUFSRUFfUFBDX0ZQUl9DT1VOVDsgaSsrKQot KyAgICAgICAgb3V0LT5mbG9hdF9zYXZlLmZwcmVnc1tpXSA9IHVjLT51Y19tY29udGV4dC5mcF9y ZWdzW2ldOwotKwotKyAgICBvdXQtPmZsb2F0X3NhdmUuZnBzY3IgPSB1Yy0+dWNfbWNvbnRleHQu ZnBfcmVnc1tORlBSRUctMV07Ci0rCi0rICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTURfVkVDVE9S U0FWRUFSRUFfUFBDX1ZSX0NPVU5UOyBpKyspCi0rICAgICAgICBvdXQtPnZlY3Rvcl9zYXZlLnNh dmVfdnJbaV0gPQotKyAgICAgICAgICAgIHsoKCh1aW50NjRfdCl2cmVncy0+dnJyZWdzW2ldWzBd KSA8PCAzMikgCi0rICAgICAgICAgICAgICAgICAgICAgICAgIHwgdnJlZ3MtPnZycmVnc1tpXVsx XSwgCi0rICAgICAgICAgICAgICgoKHVpbnQ2NF90KXZyZWdzLT52cnJlZ3NbaV1bMl0pIDw8IDMy KQotKyAgICAgICAgICAgICAgICAgICAgICAgICB8IHZyZWdzLT52cnJlZ3NbaV1bM119OwotKwot KyAgICBvdXQtPnZyc2F2ZSA9IHZyZWdzLT52cnNhdmU7Ci0rICAgIG91dC0+dmVjdG9yX3NhdmUu c2F2ZV92c2NyID0gezAsIHZyZWdzLT52c2NyLnZzY3Jfd29yZH07Ci0rICAgIG91dC0+dmVjdG9y X3NhdmUuc2F2ZV92cnZhbGlkID0gMHhGRkZGRkZGRjsgCi0rfQotKwotICNlbmRpZgotIAotIH0g IC8vIG5hbWVzcGFjZSBnb29nbGVfYnJlYWtwYWQKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51 eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmgKLSsrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2Ns aWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmgKLUBAIC01NCw2 ICs1NCw5IEBAIHN0cnVjdCBVQ29udGV4dFJlYWRlciB7Ci0gI2VsaWYgZGVmaW5lZChfX2FhcmNo NjRfXykKLSAgIHN0YXRpYyB2b2lkIEZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUgKm91dCwg Y29uc3QgdWNvbnRleHRfdCAqdWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBzdHJ1Y3QgZnBzaW1kX2NvbnRleHQqIGZwcmVncyk7Ci0rI2VsaWYgZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKQotKyAgc3RhdGljIHZvaWQgRmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0 LCBjb25zdCB1Y29udGV4dF90ICp1YywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHZycmVnc2V0X3QqIHZyZWdzKTsKLSAjZWxzZQotICAgc3RhdGljIHZvaWQgRmlsbENQVUNv bnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dF90ICp1Yyk7Ci0gI2VuZGlm Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFr cGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5j YwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVh a3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIu Y2MKLUBAIC00NjcsOSArNDY3LDE2IEBAIGJvb2wgRXhjZXB0aW9uSGFuZGxlcjo6SGFuZGxlU2ln bmFsKGludCAvKnNpZyovLCBzaWdpbmZvX3QqIGluZm8sIHZvaWQqIHVjKSB7Ci0gICAgIG1lbWNw eSgmZ19jcmFzaF9jb250ZXh0Xy5mbG9hdF9zdGF0ZSwgZnBfcHRyLAotICAgICAgICAgICAgc2l6 ZW9mKGdfY3Jhc2hfY29udGV4dF8uZmxvYXRfc3RhdGUpKTsKLSAgIH0KLSsjZWxpZiBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCi0rICAvLyBPbiBQUEM2NCwgd2UgbXVzdCBjb3B5IFZSIHN0YXRlCi0r ICB1Y29udGV4dF90KiB1Y19wdHIgPSAodWNvbnRleHRfdCopdWM7Ci0rICBpZiAodWNfcHRyLT51 Y19tY29udGV4dC52X3JlZ3MpIHsKLSsgICAgbWVtY3B5KCZnX2NyYXNoX2NvbnRleHRfLnZlY3Rv cl9zdGF0ZSwgdWNfcHRyLT51Y19tY29udGV4dC52X3JlZ3MsCi0rICAgICAgICAgICBzaXplb2Yo Z19jcmFzaF9jb250ZXh0Xy52ZWN0b3Jfc3RhdGUpKTsKLSsgIH0KLSAjZWxpZiAhZGVmaW5lZChf X0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQotICAgLy8gRlAgc3RhdGUgaXMgbm90 IHBhcnQgb2YgdXNlciBBQkkgb24gQVJNIExpbnV4LgotLSAgLy8gSW4gY2FzZSBvZiBNSVBTIExp bnV4IEZQIHN0YXRlIGlzIGFscmVhZHkgcGFydCBvZiB1Y29udGV4dF90Ci0rICAvLyBJbiBjYXNl IG9mIE1JUFMsIExpbnV4IEZQIHN0YXRlIGlzIGFscmVhZHkgcGFydCBvZiB1Y29udGV4dF90Ci0g ICAvLyBhbmQgJ2Zsb2F0X3N0YXRlJyBpcyBub3QgYSBtZW1iZXIgb2YgQ3Jhc2hDb250ZXh0Lgot ICAgdWNvbnRleHRfdCogdWNfcHRyID0gKHVjb250ZXh0X3QqKXVjOwotICAgaWYgKHVjX3B0ci0+ dWNfbWNvbnRleHQuZnByZWdzKSB7Ci1AQCAtNzA3LDExICs3MTQsMTkgQEAgYm9vbCBFeGNlcHRp b25IYW5kbGVyOjpXcml0ZU1pbmlkdW1wKCkgewotICAgfQotICNlbmRpZgotIAotLSNpZiAhZGVm aW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiAhZGVmaW5lZChf X21pcHNfXykKLSsjaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX2FhcmNo NjRfXykgJiYgIWRlZmluZWQoX19taXBzX18pIFwKLSsgICAgJiYgIWRlZmluZWQoX19wb3dlcnBj NjRfXykKLSAgIC8vIEZQVSBzdGF0ZSBpcyBub3QgcGFydCBvZiBBUk0gRUFCSSB1Y29udGV4dF90 LgotICAgbWVtY3B5KCZjb250ZXh0LmZsb2F0X3N0YXRlLCBjb250ZXh0LmNvbnRleHQudWNfbWNv bnRleHQuZnByZWdzLAotICAgICAgICAgIHNpemVvZihjb250ZXh0LmZsb2F0X3N0YXRlKSk7Ci0g I2VuZGlmCi0rCi0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgIC8vIFZlY3RvciByZWdp c3RlcnMgbXVzdCBiZSBjb3BpZWQgb24gUFBDNjQKLSsgIG1lbWNweSgmY29udGV4dC52ZWN0b3Jf c3RhdGUsIGNvbnRleHQuY29udGV4dC51Y19tY29udGV4dC52X3JlZ3MsCi0rICAgICAgICAgc2l6 ZW9mKGNvbnRleHQudmVjdG9yX3N0YXRlKSk7Ci0rI2VuZGlmCi0rCi0gICBjb250ZXh0LnRpZCA9 IHN5c19nZXR0aWQoKTsKLSAKLSAgIC8vIEFkZCBhbiBleGNlcHRpb24gc3RyZWFtIHRvIHRoZSBt aW5pZHVtcCBmb3IgYmV0dGVyIHJlcG9ydGluZy4KLUBAIC03MzIsNiArNzQ3LDkgQEAgYm9vbCBF eGNlcHRpb25IYW5kbGVyOjpXcml0ZU1pbmlkdW1wKCkgewotICNlbGlmIGRlZmluZWQoX19taXBz X18pCi0gICBjb250ZXh0LnNpZ2luZm8uc2lfYWRkciA9Ci0gICAgICAgcmVpbnRlcnByZXRfY2Fz dDx2b2lkKj4oY29udGV4dC5jb250ZXh0LnVjX21jb250ZXh0LnBjKTsKLSsjZWxpZiBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCi0rICBjb250ZXh0LnNpZ2luZm8uc2lfYWRkciA9Ci0rICAgICAgcmVp bnRlcnByZXRfY2FzdDx2b2lkKj4oY29udGV4dC5jb250ZXh0LnVjX21jb250ZXh0LmdwX3JlZ3Nb UFRfTklQXSk7Ci0gI2Vsc2UKLSAjZXJyb3IgIlRoaXMgY29kZSBoYXMgbm90IGJlZW4gcG9ydGVk IHRvIHlvdXIgcGxhdGZvcm0geWV0LiIKLSAjZW5kaWYKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9s aW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9s aW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmgKLUBAIC0xOTIsNyArMTkyLDExIEBAIGNs YXNzIEV4Y2VwdGlvbkhhbmRsZXIgewotICAgICBzaWdpbmZvX3Qgc2lnaW5mbzsKLSAgICAgcGlk X3QgdGlkOyAgLy8gdGhlIGNyYXNoaW5nIHRocmVhZC4KLSAgICAgdWNvbnRleHRfdCBjb250ZXh0 OwotLSNpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQotKyNp ZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAgIC8vIFBQQzY0J3MgRlAgc3RhdGUgaXMgYSBw YXJ0IG9mIHVjb250ZXh0X3QgbGlrZSBNSVBTIGJ1dCB0aGUgdmVjdG9yCi0rICAgIC8vIHN0YXRl IGlzIG5vdCwgc28gYSBzdHJ1Y3QgaXMgbmVlZGVkLgotKyAgICB2c3RhdGVfdCB2ZWN0b3Jfc3Rh dGU7Ci0rI2VsaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykK LSAgICAgLy8gI2lmZGVmIHRoaXMgb3V0IGJlY2F1c2UgRlAgc3RhdGUgaXMgbm90IHBhcnQgb2Yg dXNlciBBQkkgZm9yIExpbnV4IEFSTS4KLSAgICAgLy8gSW4gY2FzZSBvZiBNSVBTIExpbnV4IEZQ IHN0YXRlIGlzIGFscmVhZHkgcGFydCBvZiB1Y29udGV4dF90IHNvCi0gICAgIC8vICdmbG9hdF9z dGF0ZScgaXMgbm90IHJlcXVpcmVkLgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRs ZXIvZXhjZXB0aW9uX2hhbmRsZXJfdW5pdHRlc3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9s aW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyX3VuaXR0ZXN0LmNjCi1AQCAtMzA3LDcgKzMw Nyw3IEBAIFRFU1QoRXhjZXB0aW9uSGFuZGxlclRlc3QsIFBhcmFsbGVsQ2hpbGRDcmFzaGVzRG9u dEhhbmcpIHsKLSAgIH0KLSAKLSAgIC8vIFdhaXQgYSB3aGlsZSB1bnRpbCB0aGUgY2hpbGQgc2hv dWxkIGhhdmUgY3Jhc2hlZC4KLS0gIHVzbGVlcCgxMDAwMDAwKTsKLSsgIHVzbGVlcCgyMDAwMDAw KTsKLSAgIC8vIEtpbGwgdGhlIGNoaWxkIGlmIGl0IGlzIHN0aWxsIHJ1bm5pbmcuCi0gICBraWxs KGNoaWxkLCBTSUdLSUxMKTsKLSAKLUBAIC01NzYsNiArNTc2LDggQEAgY29uc3QgdW5zaWduZWQg Y2hhciBrSWxsZWdhbEluc3RydWN0aW9uW10gPSB7Ci0gI2lmIGRlZmluZWQoX19taXBzX18pCi0g ICAvLyBtZmMyIHplcm8sSW1wbCAtIHVzdWFsbHkgaWxsZWdhbCBpbiB1c2Vyc3BhY2UuCi0gICAw eDQ4LCAweDAwLCAweDAwLCAweDQ4Ci0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAg MHgwMSwgMHgwMSwgMHgwMSwgMHgwMSAvLyBDcmFzaGVzIG9uIGEgdGVzdGVkIFBPV0VSOSBjcHUK LSAjZWxzZQotICAgLy8gVGhpcyBjcmFzaGVzIHdpdGggU0lHSUxMIG9uIHg4Ni94ODYtNjQvYXJt LgotICAgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZgotQEAgLTc3MSwxMCArNzczLDEwIEBAIFRFU1Qo RXhjZXB0aW9uSGFuZGxlclRlc3QsIEluc3RydWN0aW9uUG9pbnRlck1lbW9yeU1heEJvdW5kKSB7 Ci0gCi0gICAvLyBUaGVzZSBhcmUgZGVmaW5lZCBoZXJlIHNvIHRoZSBwYXJlbnQgY2FuIHVzZSB0 aGVtIHRvIGNoZWNrIHRoZQotICAgLy8gZGF0YSBmcm9tIHRoZSBtaW5pZHVtcCBhZnRlcndhcmRz LgotLSAgLy8gVXNlIDRrIGhlcmUgYmVjYXVzZSB0aGUgT1Mgd2lsbCBoYW5kIG91dCBhIHNpbmds ZSBwYWdlIGV2ZW4KLSsgIC8vIFVzZSB0aGUgcGFnZSBzaXplIGhlcmUgYmVjYXVzZSB0aGUgT1Mg d2lsbCBoYW5kIG91dCBhIHNpbmdsZSBwYWdlIGV2ZW4KLSAgIC8vIGlmIGEgc21hbGxlciBzaXpl IGlzIHJlcXVlc3RlZCwgYW5kIHRoaXMgdGVzdCB3YW50cyB0bwotICAgLy8gdGVzdCB0aGUgdXBw ZXIgYm91bmQgb2YgdGhlIG1lbW9yeSByYW5nZS4KLS0gIGNvbnN0IHVpbnQzMl90IGtNZW1vcnlT aXplID0gNDA5NjsgIC8vIGJ5dGVzCi0rICBjb25zdCB1aW50MzJfdCBrTWVtb3J5U2l6ZSA9IGdl dHBhZ2VzaXplKCk7ICAvLyBieXRlcwotICAgY29uc3QgaW50IGtPZmZzZXQgPSBrTWVtb3J5U2l6 ZSAtIHNpemVvZihrSWxsZWdhbEluc3RydWN0aW9uKTsKLSAKLSAgIGNvbnN0IHBpZF90IGNoaWxk ID0gZm9yaygpOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pY3JvZHVtcF93cml0ZXIv bWljcm9kdW1wX3dyaXRlci5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pY3JvZHVt cF93cml0ZXIvbWljcm9kdW1wX3dyaXRlci5jYwotQEAgLTEzOCw3ICsxMzgsOSBAQCBjbGFzcyBN aWNyb2R1bXBXcml0ZXIgewotICAgICAgICAgICAgICAgICAgIGNvbnN0IE1pY3JvZHVtcEV4dHJh SW5mbyYgbWljcm9kdW1wX2V4dHJhX2luZm8sCi0gICAgICAgICAgICAgICAgICAgTGludXhEdW1w ZXIqIGR1bXBlcikKLSAgICAgICA6IHVjb250ZXh0Xyhjb250ZXh0ID8gJmNvbnRleHQtPmNvbnRl eHQgOiBOVUxMKSwKLS0jaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21p cHNfXykKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgICAgICAgdmVjdG9yX3N0YXRl Xyhjb250ZXh0ID8gJmNvbnRleHQtPnZlY3Rvcl9zdGF0ZSA6IE5VTEwpLAotKyNlbGlmICFkZWZp bmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCi0gICAgICAgICBmbG9hdF9z dGF0ZV8oY29udGV4dCA/ICZjb250ZXh0LT5mbG9hdF9zdGF0ZSA6IE5VTEwpLAotICNlbmRpZgot ICAgICAgICAgZHVtcGVyXyhkdW1wZXIpLAotQEAgLTMzNyw2ICszMzksOCBAQCBjbGFzcyBNaWNy b2R1bXBXcml0ZXIgewotICMgZWxzZQotICMgIGVycm9yICJUaGlzIG1pcHMgQUJJIGlzIGN1cnJl bnRseSBub3Qgc3VwcG9ydGVkIChuMzIpIgotICNlbmRpZgotKyNlbGlmIGRlZmluZWQoX19wb3dl cnBjNjRfXykKLSsgICAgY29uc3QgY2hhciBrQXJjaFtdID0gInBwYzY0IjsKLSAjZWxzZQotICNl cnJvciAiVGhpcyBjb2RlIGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8geW91ciBwbGF0Zm9ybSB5ZXQi Ci0gI2VuZGlmCi1AQCAtNDA5LDcgKzQxMyw5IEBAIGNsYXNzIE1pY3JvZHVtcFdyaXRlciB7Ci0g ICB2b2lkIER1bXBDUFVTdGF0ZSgpIHsKLSAgICAgUmF3Q29udGV4dENQVSBjcHU7Ci0gICAgIG15 X21lbXNldCgmY3B1LCAwLCBzaXplb2YoUmF3Q29udGV4dENQVSkpOwotLSNpZiAhZGVmaW5lZChf X0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9fcG93ZXJw YzY0X18pCi0rICAgIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dCgmY3B1LCB1Y29udGV4 dF8sIHZlY3Rvcl9zdGF0ZV8pOwotKyNlbGlmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRl ZmluZWQoX19taXBzX18pCi0gICAgIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dCgmY3B1 LCB1Y29udGV4dF8sIGZsb2F0X3N0YXRlXyk7Ci0gI2Vsc2UKLSAgICAgVUNvbnRleHRSZWFkZXI6 OkZpbGxDUFVDb250ZXh0KCZjcHUsIHVjb250ZXh0Xyk7Ci1AQCAtNjA1LDcgKzYxMSw5IEBAIGNs YXNzIE1pY3JvZHVtcFdyaXRlciB7Ci0gICB2b2lkKiBBbGxvYyh1bnNpZ25lZCBieXRlcykgeyBy ZXR1cm4gZHVtcGVyXy0+YWxsb2NhdG9yKCktPkFsbG9jKGJ5dGVzKTsgfQotIAotICAgY29uc3Qg dWNvbnRleHRfdCogY29uc3QgdWNvbnRleHRfOwotLSNpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18p ICYmICFkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICBj b25zdCBnb29nbGVfYnJlYWtwYWQ6OnZzdGF0ZV90KiBjb25zdCB2ZWN0b3Jfc3RhdGVfOwotKyNl bGlmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCi0gICBjb25z dCBnb29nbGVfYnJlYWtwYWQ6OmZwc3RhdGVfdCogY29uc3QgZmxvYXRfc3RhdGVfOwotICNlbmRp ZgotICAgTGludXhEdW1wZXIqIGR1bXBlcl87Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgv bWljcm9kdW1wX3dyaXRlci9taWNyb2R1bXBfd3JpdGVyX3VuaXR0ZXN0LmNjCi0rKysgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFk L3NyYy9jbGllbnQvbGludXgvbWljcm9kdW1wX3dyaXRlci9taWNyb2R1bXBfd3JpdGVyX3VuaXR0 ZXN0LmNjCi1AQCAtMjc4LDEwICsyNzgsMTkgQEAgVEVTVChNaWNyb2R1bXBXcml0ZXJUZXN0LCBC YXNpY1dpdGhNYXBwaW5ncykgewotICAgQ3Jhc2hBbmRHZXRNaWNyb2R1bXAobWFwcGluZ3MsIE1p Y3JvZHVtcEV4dHJhSW5mbygpLCAmYnVmKTsKLSAgIEFTU0VSVF9UUlVFKENvbnRhaW5zTWljcm9k dW1wKGJ1ZikpOwotIAotKyAgaW50IHBhZ2Vfc2l6ZSA9IGdldHBhZ2VzaXplKCk7Ci0gI2lmZGVm IF9fTFA2NF9fCi0tICBBU1NFUlRfTkUoc3RkOjpzdHJpbmc6Om5wb3MsCi0tICAgICAgICAgICAg YnVmLmZpbmQoIk0gMDAwMDAwMDAwMDAwMTAwMCAwMDAwMDAwMDAwMDAwMDJBIDAwMDAwMDAwMDAw MDEwMDAgIgotLSAgICAgICAgICAgICAgICAgICAgICIzMzIyMTEwMDU1NDQ3NzY2ODg5OUFBQkJD Q0RERUVGRjAgbGliZm9vLnNvIikpOwotKyAgLy8gVGhpcyB0ZXN0IGlzIG9ubHkgYXZhaWxhYmxl IGZvciB0aGUgZm9sbG93aW5nIHBhZ2Ugc2l6ZXMKLSsgIEFTU0VSVF9UUlVFKChwYWdlX3NpemUg PT0gNDA5NikgfHwgKHBhZ2Vfc2l6ZSA9PSA2NTUzNikpOwotKyAgaWYgKHBhZ2Vfc2l6ZSA9PSA0 MDk2KSB7IAotKyAgICBBU1NFUlRfTkUoc3RkOjpzdHJpbmc6Om5wb3MsCi0rICAgICAgICAgICAg ICBidWYuZmluZCgiTSAwMDAwMDAwMDAwMDAxMDAwIDAwMDAwMDAwMDAwMDAwMkEgMDAwMDAwMDAw MDAwMTAwMCAiCi0rICAgICAgICAgICAgICAgICAgICAgICAiMzMyMjExMDA1NTQ0Nzc2Njg4OTlB QUJCQ0NEREVFRkYwIGxpYmZvby5zbyIpKTsKLSsgIH0gZWxzZSB7Ci0rICAgIEFTU0VSVF9ORShz dGQ6OnN0cmluZzo6bnBvcywKLSsgICAgICAgICAgICAgIGJ1Zi5maW5kKCJNIDAwMDAwMDAwMDAw MTAwMDAgMDAwMDAwMDAwMDAwMDAyQSAwMDAwMDAwMDAwMDEwMDAwICIKLSsgICAgICAgICAgICAg ICAgICAgICAgICIzMzIyMTEwMDU1NDQ3NzY2ODg5OUFBQkJDQ0RERUVGRjAgbGliZm9vLnNvIikp OwotKyAgfQotICNlbHNlCi0gICBBU1NFUlRfTkUoc3RkOjpzdHJpbmc6Om5wb3MsCi0gICAgICAg ICAgICAgYnVmLmZpbmQoIk0gMDAwMDEwMDAgMDAwMDAwMkEgMDAwMDEwMDAgIgotLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3Bh ZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9jb3JlX2R1bXBlci5jYwot KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3Bh ZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9jb3JlX2R1 bXBlci5jYwotQEAgLTExNiw2ICsxMTYsOSBAQCBib29sIExpbnV4Q29yZUR1bXBlcjo6R2V0VGhy ZWFkSW5mb0J5SW5kZXgoc2l6ZV90IGluZGV4LCBUaHJlYWRJbmZvKiBpbmZvKSB7Ci0gI2VsaWYg ZGVmaW5lZChfX21pcHNfXykKLSAgIHN0YWNrX3BvaW50ZXIgPQotICAgICAgIHJlaW50ZXJwcmV0 X2Nhc3Q8dWludDhfdCo+KGluZm8tPm1jb250ZXh0LmdyZWdzW01EX0NPTlRFWFRfTUlQU19SRUdf U1BdKTsKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICBzdGFja19wb2ludGVyID0K LSsgICAgICByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbmZvLT5tY29udGV4dC5ncF9yZWdz W01EX0NPTlRFWFRfUFBDNjRfUkVHX1NQXSk7Ci0gI2Vsc2UKLSAjZXJyb3IgIlRoaXMgY29kZSBo YXNuJ3QgYmVlbiBwb3J0ZWQgdG8geW91ciBwbGF0Zm9ybSB5ZXQuIgotICNlbmRpZgotQEAgLTIw MCw3ICsyMDMsMTAgQEAgYm9vbCBMaW51eENvcmVEdW1wZXI6OkVudW1lcmF0ZVRocmVhZHMoKSB7 Ci0gICAgICAgICBtZW1zZXQoJmluZm8sIDAsIHNpemVvZihUaHJlYWRJbmZvKSk7Ci0gICAgICAg ICBpbmZvLnRnaWQgPSBzdGF0dXMtPnByX3BncnA7Ci0gICAgICAgICBpbmZvLnBwaWQgPSBzdGF0 dXMtPnByX3BwaWQ7Ci0tI2lmIGRlZmluZWQoX19taXBzX18pCi0rI2lmIGRlZmluZWQoX19wb3dl cnBjNjRfXykKLSsgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzE7IGkrKykKLSsgICAgICAg ICAgICBpbmZvLm1jb250ZXh0LmdwX3JlZ3NbaV0gPSBzdGF0dXMtPnByX3JlZ1tpXTsKLSsjZWxp ZiBkZWZpbmVkKF9fbWlwc19fKQotICNpZiBkZWZpbmVkKF9fQU5EUk9JRF9fKQotICAgICAgICAg Zm9yIChpbnQgaSA9IEVGX1IwOyBpIDw9IEVGX1IzMTsgaSsrKQotICAgICAgICAgICBpbmZvLm1j b250ZXh0LmdyZWdzW2kgLSBFRl9SMF0gPSBzdGF0dXMtPnByX3JlZ1tpXTsKLS0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQv c3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfZHVtcGVyLmNjCi0rKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFr cGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2R1bXBlci5jYwotQEAg LTc5OCw3ICs3OTgsOSBAQCBib29sIExpbnV4RHVtcGVyOjpHZXRTdGFja0luZm8oY29uc3Qgdm9p ZCoqIHN0YWNrLCBzaXplX3QqIHN0YWNrX2xlbiwKLSAgICAgICByZWludGVycHJldF9jYXN0PHVp bnQ4X3QqPihpbnRfc3RhY2tfcG9pbnRlciAmIH4ocGFnZV9zaXplIC0gMSkpOwotIAotICAgLy8g VGhlIG51bWJlciBvZiBieXRlcyBvZiBzdGFjayB3aGljaCB3ZSB0cnkgdG8gY2FwdHVyZS4KLS0g IHN0YXRpYyBjb25zdCBwdHJkaWZmX3Qga1N0YWNrVG9DYXB0dXJlID0gMzIgKiAxMDI0OwotKyAg Ly8gVGhpcyBub3cgZGVwZW5kcyBvbiBwYWdlX3NpemUgdG8gYXZvaWQgbWlzc2luZyBkYXRhCi0r ICAvLyBvbiBzeXN0ZW1zIHdpdGggbGFyZ2VyIHBhZ2Ugc2l6ZXMuCi0rICBzdGF0aWMgY29uc3Qg cHRyZGlmZl90IGtTdGFja1RvQ2FwdHVyZSA9IDggKiBwYWdlX3NpemU7Ci0gCi0gICBjb25zdCBN YXBwaW5nSW5mbyogbWFwcGluZyA9IEZpbmRNYXBwaW5nKHN0YWNrX3BvaW50ZXIpOwotICAgaWYg KCFtYXBwaW5nKQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9s aW51eF9kdW1wZXIuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRl ci9saW51eF9kdW1wZXIuaAotQEAgLTYwLDcgKzYwLDggQEAgbmFtZXNwYWNlIGdvb2dsZV9icmVh a3BhZCB7Ci0gIChkZWZpbmVkKF9fbWlwc19fKSAmJiBfTUlQU19TSU0gPT0gX0FCSU8zMikKLSB0 eXBlZGVmIEVsZjMyX2F1eHZfdCBlbGZfYXV4X2VudHJ5OwotICNlbGlmIGRlZmluZWQoX194ODZf NjQpIHx8IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IFwKLS0gICAgIChkZWZpbmVkKF9fbWlwc19f KSAmJiBfTUlQU19TSU0gIT0gX0FCSU8zMikKLSsgICAgIChkZWZpbmVkKF9fbWlwc19fKSAmJiBf TUlQU19TSU0gIT0gX0FCSU8zMikgfHwgXAotKyAgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQot IHR5cGVkZWYgRWxmNjRfYXV4dl90IGVsZl9hdXhfZW50cnk7Ci0gI2VuZGlmCi0gCi0tLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFr cGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2R1bXBlcl91bml0dGVz dF9oZWxwZXIuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRf cGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIv bGludXhfZHVtcGVyX3VuaXR0ZXN0X2hlbHBlci5jYwotQEAgLTUxLDYgKzUxLDggQEAKLSAjZGVm aW5lIFRJRF9QVFJfUkVHSVNURVIgInJjeCIKLSAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQotICNk ZWZpbmUgVElEX1BUUl9SRUdJU1RFUiAiJDEiCi0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9f KQotKyNkZWZpbmUgVElEX1BUUl9SRUdJU1RFUiAicjgiCi0gI2Vsc2UKLSAjZXJyb3IgVGhpcyB0 ZXN0IGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8gdGhpcyBwbGF0Zm9ybS4KLSAjZW5kaWYKLS0tLSBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJl YWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfcHRyYWNlX2R1bXBl ci5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9i cmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9w dHJhY2VfZHVtcGVyLmNjCi1AQCAtMTU0LDE5ICsxNTQsMjcgQEAgYm9vbCBMaW51eFB0cmFjZUR1 bXBlcjo6Q29weUZyb21Qcm9jZXNzKHZvaWQqIGRlc3QsIHBpZF90IGNoaWxkLAotICAgcmV0dXJu IHRydWU7Ci0gfQotIAotLWJvb2wgTGludXhQdHJhY2VEdW1wZXI6OlJlYWRSZWdpc3RlclNldChU aHJlYWRJbmZvKiBpbmZvLCBwaWRfdCB0aWQpCi0tewotK2Jvb2wgTGludXhQdHJhY2VEdW1wZXI6 OlJlYWRSZWdpc3RlclNldChUaHJlYWRJbmZvKiBpbmZvLCBwaWRfdCB0aWQpIHsKLSAjaWZkZWYg UFRSQUNFX0dFVFJFR1NFVAotICAgc3RydWN0IGlvdmVjIGlvOwotICAgaW5mby0+R2V0R2VuZXJh bFB1cnBvc2VSZWdpc3RlcnMoJmlvLmlvdl9iYXNlLCAmaW8uaW92X2xlbik7Ci0tICBpZiAoc3lz X3B0cmFjZShQVFJBQ0VfR0VUUkVHU0VULCB0aWQsICh2b2lkKilOVF9QUlNUQVRVUywgKHZvaWQq KSZpbykgPT0gLTEpIHsKLSsgIGlmIChwdHJhY2UoUFRSQUNFX0dFVFJFR1NFVCwgdGlkLCAodm9p ZCopTlRfUFJTVEFUVVMsICh2b2lkKikmaW8pID09IC0xKSB7Ci0gICAgIHJldHVybiBmYWxzZTsK LSAgIH0KLSAKLSAgIGluZm8tPkdldEZsb2F0aW5nUG9pbnRSZWdpc3RlcnMoJmlvLmlvdl9iYXNl LCAmaW8uaW92X2xlbik7Ci0tICBpZiAoc3lzX3B0cmFjZShQVFJBQ0VfR0VUUkVHU0VULCB0aWQs ICh2b2lkKilOVF9GUFJFR1NFVCwgKHZvaWQqKSZpbykgPT0gLTEpIHsKLSsgIGlmIChwdHJhY2Uo UFRSQUNFX0dFVFJFR1NFVCwgdGlkLCAodm9pZCopTlRfRlBSRUdTRVQsICh2b2lkKikmaW8pID09 IC0xKSB7Ci0gICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSsKLSsjaWYgZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKQotKyAgLy8gR3JhYiB0aGUgdmVjdG9yIHJlZ2lzdGVycyBvbiBQUEM2NCB0b28KLSsg IGluZm8tPkdldFZlY3RvclJlZ2lzdGVycygmaW8uaW92X2Jhc2UsICZpby5pb3ZfbGVuKTsKLSsg IGlmIChwdHJhY2UoUFRSQUNFX0dFVFJFR1NFVCwgdGlkLCAodm9pZCopTlRfUFBDX1ZNWCwgKHZv aWQqKSZpbykgPT0gLTEpIHsKLSsgICAgcmV0dXJuIGZhbHNlOwotKyAgfQotKyNlbmRpZiAvLyBk ZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rCi0gICByZXR1cm4gdHJ1ZTsKLSAjZWxzZQotICAgcmV0 dXJuIGZhbHNlOwotQEAgLTMwMyw2ICszMTEsOSBAQCBib29sIExpbnV4UHRyYWNlRHVtcGVyOjpH ZXRUaHJlYWRJbmZvQnlJbmRleChzaXplX3QgaW5kZXgsIFRocmVhZEluZm8qIGluZm8pIHsKLSAj ZWxpZiBkZWZpbmVkKF9fbWlwc19fKQotICAgc3RhY2tfcG9pbnRlciA9Ci0gICAgICAgcmVpbnRl cnByZXRfY2FzdDx1aW50OF90Kj4oaW5mby0+bWNvbnRleHQuZ3JlZ3NbTURfQ09OVEVYVF9NSVBT X1JFR19TUF0pOwotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgIHN0YWNrX3BvaW50 ZXIgPQotKyAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGluZm8tPm1jb250ZXh0Lmdw X3JlZ3NbTURfQ09OVEVYVF9QUEM2NF9SRUdfU1BdKTsKLSAjZWxzZQotICNlcnJvciAiVGhpcyBj b2RlIGhhc24ndCBiZWVuIHBvcnRlZCB0byB5b3VyIHBsYXRmb3JtIHlldC4iCi0gI2VuZGlmCi0t LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFk L2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X3B0cmFjZV9k dW1wZXJfdW5pdHRlc3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93 cml0ZXIvbGludXhfcHRyYWNlX2R1bXBlcl91bml0dGVzdC5jYwotQEAgLTQ1Nyw2ICs0NTcsOSBA QCBURVNUKExpbnV4UHRyYWNlRHVtcGVyVGVzdCwgVmVyaWZ5U3RhY2tSZWFkV2l0aE11bHRpcGxl VGhyZWFkcykgewotICNlbGlmIGRlZmluZWQoX19taXBzX18pCi0gICAgIHBpZF90KiBwcm9jZXNz X3RpZF9sb2NhdGlvbiA9Ci0gICAgICAgICByZWludGVycHJldF9jYXN0PHBpZF90Kj4ob25lX3Ro cmVhZC5tY29udGV4dC5ncmVnc1sxXSk7Ci0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQot KyAgICBwaWRfdCogcHJvY2Vzc190aWRfbG9jYXRpb24gPQotKyAgICAgICAgcmVpbnRlcnByZXRf Y2FzdDxwaWRfdCo+KG9uZV90aHJlYWQubWNvbnRleHQuZ3BfcmVnc1s4XSk7Ci0gI2Vsc2UKLSAj ZXJyb3IgVGhpcyB0ZXN0IGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8gdGhpcyBwbGF0Zm9ybS4KLSAj ZW5kaWYKLUBAIC01NTMsNiArNTU2LDggQEAgVEVTVF9GKExpbnV4UHRyYWNlRHVtcGVyVGVzdCwg U2FuaXRpemVTdGFja0NvcHkpIHsKLSAgIHVpbnRwdHJfdCBoZWFwX2FkZHIgPSB0aHJlYWRfaW5m by5yZWdzLnJjeDsKLSAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQotICAgdWludHB0cl90IGhlYXBf YWRkciA9IHRocmVhZF9pbmZvLm1jb250ZXh0LmdyZWdzWzFdOwotKyNlbGlmIGRlZmluZWQoX19w b3dlcnBjNjRfXykKLSsgIHVpbnRwdHJfdCBoZWFwX2FkZHIgPSB0aHJlYWRfaW5mby5tY29udGV4 dC5ncF9yZWdzWzhdOwotICNlbHNlCi0gI2Vycm9yIFRoaXMgdGVzdCBoYXMgbm90IGJlZW4gcG9y dGVkIHRvIHRoaXMgcGxhdGZvcm0uCi0gI2VuZGlmCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGlu dXgvbWluaWR1bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlci5jYwotKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xp ZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93cml0ZXIuY2MKLUBAIC0xMzYsNyAr MTM2LDkgQEAgY2xhc3MgTWluaWR1bXBXcml0ZXIgewotICAgICAgIDogZmRfKG1pbmlkdW1wX2Zk KSwKLSAgICAgICAgIHBhdGhfKG1pbmlkdW1wX3BhdGgpLAotICAgICAgICAgdWNvbnRleHRfKGNv bnRleHQgPyAmY29udGV4dC0+Y29udGV4dCA6IE5VTEwpLAotLSNpZiAhZGVmaW5lZChfX0FSTV9F QUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18p Ci0rICAgICAgICB2ZWN0b3Jfc3RhdGVfKGNvbnRleHQgPyAmY29udGV4dC0+dmVjdG9yX3N0YXRl IDogTlVMTCksCi0rI2VsaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21p cHNfXykKLSAgICAgICAgIGZsb2F0X3N0YXRlXyhjb250ZXh0ID8gJmNvbnRleHQtPmZsb2F0X3N0 YXRlIDogTlVMTCksCi0gI2VuZGlmCi0gICAgICAgICBkdW1wZXJfKGR1bXBlciksCi1AQCAtNDY4 LDcgKzQ3MCw5IEBAIGNsYXNzIE1pbmlkdW1wV3JpdGVyIHsKLSAgICAgICAgIGlmICghY3B1LkFs bG9jYXRlKCkpCi0gICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIG15X21lbXNldChj cHUuZ2V0KCksIDAsIHNpemVvZihSYXdDb250ZXh0Q1BVKSk7Ci0tI2lmICFkZWZpbmVkKF9fQVJN X0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCi0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRf XykKLSsgICAgICAgIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChjcHUuZ2V0KCksIHVj b250ZXh0XywgdmVjdG9yX3N0YXRlXyk7Ci0rI2VsaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAm JiAhZGVmaW5lZChfX21pcHNfXykKLSAgICAgICAgIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29u dGV4dChjcHUuZ2V0KCksIHVjb250ZXh0XywgZmxvYXRfc3RhdGVfKTsKLSAjZWxzZQotICAgICAg ICAgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KGNwdS5nZXQoKSwgdWNvbnRleHRfKTsK LUBAIC04OTEsNyArODk1LDcgQEAgY2xhc3MgTWluaWR1bXBXcml0ZXIgewotICAgICBkaXJlbnQt PmxvY2F0aW9uLnJ2YSA9IDA7Ci0gICB9Ci0gCi0tI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRl ZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykKLSsjaWYgZGVmaW5lZChfX2kz ODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBkZWZp bmVkKF9fcG93ZXJwYzY0X18pCi0gICBib29sIFdyaXRlQ1BVSW5mb3JtYXRpb24oTURSYXdTeXN0 ZW1JbmZvKiBzeXNfaW5mbykgewotICAgICBjaGFyIHZlbmRvcl9pZFtzaXplb2Yoc3lzX2luZm8t PmNwdS54ODZfY3B1X2luZm8udmVuZG9yX2lkKSArIDFdID0gezB9OwotICAgICBzdGF0aWMgY29u c3QgY2hhciB2ZW5kb3JfaWRfbmFtZVtdID0gInZlbmRvcl9pZCI7Ci1AQCAtOTExLDcgKzkxNSw5 IEBAIGNsYXNzIE1pbmlkdW1wV3JpdGVyIHsKLSAKLSAgICAgLy8gcHJvY2Vzc29yX2FyY2hpdGVj dHVyZSBzaG91bGQgYWx3YXlzIGJlIHNldCwgZG8gdGhpcyBmaXJzdAotICAgICBzeXNfaW5mby0+ cHJvY2Vzc29yX2FyY2hpdGVjdHVyZSA9Ci0tI2lmIGRlZmluZWQoX19taXBzX18pCi0rI2lmIGRl ZmluZWQoX19wb3dlcnBjNjRfXykKLSsgICAgICAgIE1EX0NQVV9BUkNISVRFQ1RVUkVfUFBDNjQ7 Ci0rI2VsaWYgZGVmaW5lZChfX21pcHNfXykKLSAjIGlmIF9NSVBTX1NJTSA9PSBfQUJJTzMyCi0g ICAgICAgICBNRF9DUFVfQVJDSElURUNUVVJFX01JUFM7Ci0gIyBlbGlmIF9NSVBTX1NJTSA9PSBf QUJJNjQKLUBAIC0xMzI3LDcgKzEzMzMsOSBAQCBjbGFzcyBNaW5pZHVtcFdyaXRlciB7Ci0gICBj b25zdCBjaGFyKiBwYXRoXzsgIC8vIFBhdGggdG8gdGhlIGZpbGUgd2hlcmUgdGhlIG1pbmlkdW0g c2hvdWxkIGJlIHdyaXR0ZW4uCi0gCi0gICBjb25zdCB1Y29udGV4dF90KiBjb25zdCB1Y29udGV4 dF87ICAvLyBhbHNvIGZyb20gdGhlIHNpZ25hbCBoYW5kbGVyCi0tI2lmICFkZWZpbmVkKF9fQVJN X0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCi0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRf XykKLSsgIGNvbnN0IGdvb2dsZV9icmVha3BhZDo6dnN0YXRlX3QqIGNvbnN0IHZlY3Rvcl9zdGF0 ZV87Ci0rI2VsaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykK LSAgIGNvbnN0IGdvb2dsZV9icmVha3BhZDo6ZnBzdGF0ZV90KiBjb25zdCBmbG9hdF9zdGF0ZV87 ICAvLyBkaXR0bwotICNlbmRpZgotICAgTGludXhEdW1wZXIqIGR1bXBlcl87Ci0tLS0gcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFk L3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlci5oCi0rKysg cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2Jy ZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlci5o Ci1AQCAtNDcsNiArNDcsOCBAQCBjbGFzcyBFeGNlcHRpb25IYW5kbGVyOwotIAotICNpZiBkZWZp bmVkKF9fYWFyY2g2NF9fKQotIHR5cGVkZWYgc3RydWN0IGZwc2ltZF9jb250ZXh0IGZwc3RhdGVf dDsKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rdHlwZWRlZiB2cnJlZ3NldF90IHZz dGF0ZV90OwotICNlbGlmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBz X18pCi0gdHlwZWRlZiBzdHJ1Y3QgX2Zwc3RhdGUgZnBzdGF0ZV90OwotICNlbmRpZgotLS0tIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVh a3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93cml0ZXJfdW5p dHRlc3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbWlu aWR1bXBfd3JpdGVyX3VuaXR0ZXN0LmNjCi1AQCAtNzEwLDYgKzcxMCw5IEBAIFRFU1QoTWluaWR1 bXBXcml0ZXJUZXN0LCBJbnZhbGlkU3RhY2tQb2ludGVyKSB7Ci0gI2VsaWYgZGVmaW5lZChfX21p cHNfXykKLSAgIGNvbnRleHQuY29udGV4dC51Y19tY29udGV4dC5ncmVnc1tNRF9DT05URVhUX01J UFNfUkVHX1NQXSA9Ci0gICAgICAgaW52YWxpZF9zdGFja19wb2ludGVyOwotKyNlbGlmIGRlZmlu ZWQoX19wb3dlcnBjNjRfXykKLSsgIGNvbnRleHQuY29udGV4dC51Y19tY29udGV4dC5ncF9yZWdz W01EX0NPTlRFWFRfUFBDNjRfUkVHX1NQXSA9Ci0rICAgICAgaW52YWxpZF9zdGFja19wb2ludGVy OwotICNlbHNlCi0gIyBlcnJvciAiVGhpcyBjb2RlIGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8geW91 ciBwbGF0Zm9ybSB5ZXQuIgotICNlbmRpZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL2xpbnV4L21l bW9yeV9tYXBwZWRfZmlsZS5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL2xpbnV4L21lbW9yeV9t YXBwZWRfZmlsZS5jYwotQEAgLTY1LDggKzY1LDcgQEAgYm9vbCBNZW1vcnlNYXBwZWRGaWxlOjpN YXAoY29uc3QgY2hhciogcGF0aCwgc2l6ZV90IG9mZnNldCkgewotICAgfQotIAotICNpZiBkZWZp bmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IFwKLS0gICAoZGVmaW5l ZChfX21pcHNfXykgJiYgX01JUFNfU0lNID09IF9BQkk2NCkKLS0KLSsgICAoZGVmaW5lZChfX21p cHNfXykgJiYgX01JUFNfU0lNID09IF9BQkk2NCkgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQot ICAgc3RydWN0IGtlcm5lbF9zdGF0IHN0OwotICAgaWYgKHN5c19mc3RhdChmZCwgJnN0KSA9PSAt MSB8fCBzdC5zdF9zaXplIDwgMCkgewotICNlbHNlCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbGlu dXgvbWVtb3J5X21hcHBlZF9maWxlX3VuaXR0ZXN0LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24v bGludXgvbWVtb3J5X21hcHBlZF9maWxlX3VuaXR0ZXN0LmNjCi1AQCAtMTc2LDkgKzE3NiwxMCBA QCBURVNUX0YoTWVtb3J5TWFwcGVkRmlsZVRlc3QsIFJlbWFwQWZ0ZXJNYXApIHsKLSBURVNUX0Yo TWVtb3J5TWFwcGVkRmlsZVRlc3QsIE1hcFdpdGhPZmZzZXQpIHsKLSAgIC8vIFB1dCBtb3JlIGRh dGEgaW4gdGhlIHRlc3QgZmlsZSB0aGlzIHRpbWUuIE9mZnNldHMgY2FuIG9ubHkgYmUKLSAgIC8v IGRvbmUgb24gcGFnZSBib3VuZGFyaWVzLCBzbyB3ZSBuZWVkIGEgdHdvIHBhZ2UgZmlsZSB0byB0 ZXN0IHRoaXMuCi0tICBjb25zdCBpbnQgcGFnZV9zaXplID0gNDA5NjsKLS0gIGNoYXIgZGF0YTFb MiAqIHBhZ2Vfc2l6ZV07Ci0tICBzaXplX3QgZGF0YTFfc2l6ZSA9IHNpemVvZihkYXRhMSk7Ci0r ICBjb25zdCBpbnQgcGFnZV9zaXplID0gZ2V0cGFnZXNpemUoKTsKLSsgIGNoYXIgKmRhdGExID0g c3RhdGljX2Nhc3Q8Y2hhcio+KG1hbGxvYygyICogcGFnZV9zaXplKSk7Ci0rICBFWFBFQ1RfVFJV RShkYXRhMSAhPSBOVUxMKTsKLSsgIHNpemVfdCBkYXRhMV9zaXplID0gKDIgKiBwYWdlX3NpemUp OwotICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkYXRhMV9zaXplOyArK2kpIHsKLSAgICAgZGF0 YTFbaV0gPSBpICYgMHg3ZjsKLSAgIH0KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NvbW1vbi9tZW1vcnlfYWxs b2NhdG9yX3VuaXR0ZXN0LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbWVtb3J5X2FsbG9jYXRv cl91bml0dGVzdC5jYwotQEAgLTU3LDggKzU3LDkgQEAgVEVTVChQYWdlQWxsb2NhdG9yVGVzdCwg TGFyZ2VPYmplY3QpIHsKLSAKLSAgIEVYUEVDVF9FUSgwVSwgYWxsb2NhdG9yLnBhZ2VzX2FsbG9j YXRlZCgpKTsKLSAgIHVpbnQ4X3QgKnAgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihhbGxv Y2F0b3IuQWxsb2MoMTAwMDApKTsKLSsgIHVpbnQ2NF90IGV4cGVjdGVkX3BhZ2VzID0gMSArICgo MTAwMDAgLSAxKSAvIGdldHBhZ2VzaXplKCkpOwotICAgQVNTRVJUX0ZBTFNFKHAgPT0gTlVMTCk7 Ci0tICBFWFBFQ1RfRVEoM1UsIGFsbG9jYXRvci5wYWdlc19hbGxvY2F0ZWQoKSk7Ci0rICBFWFBF Q1RfRVEoZXhwZWN0ZWRfcGFnZXMsIGFsbG9jYXRvci5wYWdlc19hbGxvY2F0ZWQoKSk7Ci0gICBm b3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgMTA7ICsraSkgewotICAgICB1aW50OF90ICpwID0gcmVp bnRlcnByZXRfY2FzdDx1aW50OF90Kj4oYWxsb2NhdG9yLkFsbG9jKGkpKTsKLSAgICAgQVNTRVJU X0ZBTFNFKHAgPT0gTlVMTCk7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9wcm9jZXNzb3IvZXhwbG9pdGFiaWxp dHlfbGludXguY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRf cGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL3Byb2Nlc3Nvci9leHBsb2l0YWJpbGl0eV9saW51 eC5jYwotQEAgLTIwMiwxMiArMjAyLDE0IEBAIGJvb2wgRXhwbG9pdGFiaWxpdHlMaW51eDo6RW5k ZWRPbklsbGVnYWxXcml0ZSh1aW50NjRfdCBpbnN0cnVjdGlvbl9wdHIpIHsKLSAgIC8vIENoZWNr IGFyY2hpdGVjdHVyZSBhbmQgc2V0IGFyY2hpdGVjdHVyZSB2YXJpYWJsZSB0byBjb3JyZXNwb25k aW5nIGZsYWcKLSAgIC8vIGluIG9iamR1bXAuCi0gICBzd2l0Y2ggKGNvbnRleHQtPkdldENvbnRl eHRDUFUoKSkgewotKyNpZiBkZWZpbmVkKF9faTM4NikgfHwgZGVmaW5lZChfX3g4Nl82NCkKLSAg ICAgY2FzZSBNRF9DT05URVhUX1g4NjoKLSAgICAgICBhcmNoaXRlY3R1cmUgPSAiaTM4NiI7Ci0g ICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgTURfQ09OVEVYVF9BTUQ2NDoKLSAgICAgICBhcmNoaXRl Y3R1cmUgPSAiaTM4Njp4ODYtNjQiOwotICAgICAgIGJyZWFrOwotKyNlbmRpZgotICAgICBkZWZh dWx0OgotICAgICAgIC8vIFVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZS4gTm90ZSB0aGF0IEFSTSBh cmNoaXRlY3R1cmVzIGFyZSBub3QKLSAgICAgICAvLyBzdXBwb3J0ZWQgYmVjYXVzZSBvYmpkdW1w IGRvZXMgbm90IHN1cHBvcnQgQVJNLgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvcHJvY2Vzc29yL2V4cGxvaXRh YmlsaXR5X3VuaXR0ZXN0LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9wcm9jZXNzb3IvZXhwbG9pdGFiaWxp dHlfdW5pdHRlc3QuY2MKLUBAIC0xMDQsNiArMTA0LDggQEAgRXhwbG9pdGFiaWxpdHlGb3IoY29u c3Qgc3RyaW5nJiBmaWxlbmFtZSkgewotIH0KLSAKLSBURVNUKEV4cGxvaXRhYmlsaXR5VGVzdCwg VGVzdFdpbmRvd3NFbmdpbmUpIHsKLSsvLyBUaGUgZm9sbG93aW5nIHRlc3RzIGFyZSBvbmx5IGV4 ZWN1dGFibGUgb24gYW4geDg2LWNsYXNzIGxpbnV4IG1hY2hpbmUuCi0rI2lmICFkZWZpbmVkKF9X SU4zMikgJiYgKGRlZmluZWQoX19pMzg2KSB8fCBkZWZpbmVkKF9feDg2XzY0KSkKLSAgIEFTU0VS VF9FUShnb29nbGVfYnJlYWtwYWQ6OkVYUExPSVRBQklMSVRZX0hJR0gsCi0gICAgICAgICAgICAg RXhwbG9pdGFiaWxpdHlGb3IoImFzY2lpX3JlYWRfYXYuZG1wIikpOwotICAgQVNTRVJUX0VRKGdv b2dsZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJVFlfSElHSCwKLUBAIC0xMzYsOSArMTM4LDEyIEBA IFRFU1QoRXhwbG9pdGFiaWxpdHlUZXN0LCBUZXN0V2luZG93c0VuZ2luZSkgewotICAgICAgICAg ICAgIEV4cGxvaXRhYmlsaXR5Rm9yKCJyZWFkX2F2X2Nsb2JiZXJfd3JpdGUuZG1wIikpOwotICAg QVNTRVJUX0VRKGdvb2dsZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJVFlfTE9XLAotICAgICAgICAg ICAgIEV4cGxvaXRhYmlsaXR5Rm9yKCJyZWFkX2F2X2NvbmRpdGlvbmFsLmRtcCIpKTsKLSsjZW5k aWYKLSB9Ci0gCi0gVEVTVChFeHBsb2l0YWJpbGl0eVRlc3QsIFRlc3RMaW51eEVuZ2luZSkgewot Ky8vIFRoZSBmb2xsb3dpbmcgdGVzdHMgYXJlIG9ubHkgZXhlY3V0YWJsZSBvbiBhbiB4ODYtY2xh c3MgbGludXggbWFjaGluZS4KLSsjaWYgZGVmaW5lZChfX2kzODYpIHx8IGRlZmluZWQoX194ODZf NjQpCi0gICBBU1NFUlRfRVEoZ29vZ2xlX2JyZWFrcGFkOjpFWFBMT0lUQUJJTElUWV9JTlRFUkVT VElORywKLSAgICAgICAgICAgICBFeHBsb2l0YWJpbGl0eUZvcigibGludXhfbnVsbF9yZWFkX2F2 LmRtcCIpKTsKLSAgIEFTU0VSVF9FUShnb29nbGVfYnJlYWtwYWQ6OkVYUExPSVRBQklMSVRZX0hJ R0gsCi1AQCAtMTcxLDcgKzE3Niw4IEBAIFRFU1QoRXhwbG9pdGFiaWxpdHlUZXN0LCBUZXN0TGlu dXhFbmdpbmUpIHsKLSAgICAgICAgICAgICBFeHBsb2l0YWJpbGl0eUZvcigibGludXhfZXhlY3V0 YWJsZV9oZWFwLmRtcCIpKTsKLSAgIEFTU0VSVF9FUShnb29nbGVfYnJlYWtwYWQ6OkVYUExPSVRB QklMSVRZX0hJR0gsCi0gICAgICAgICAgICAgRXhwbG9pdGFiaWxpdHlGb3IoImxpbnV4X2ptcF90 b19tb2R1bGVfbm90X2V4ZV9yZWdpb24uZG1wIikpOwotLSNpZm5kZWYgX1dJTjMyCi0rI2VuZGlm Ci0rI2lmICFkZWZpbmVkKF9XSU4zMikgJiYgKGRlZmluZWQoX19pMzg2KSB8fCBkZWZpbmVkKF9f eDg2XzY0KSkKLSAgIEFTU0VSVF9FUShnb29nbGVfYnJlYWtwYWQ6OkVYUExPSVRBQklMSVRZX0hJ R0gsCi0gICAgICAgICAgICAgRXhwbG9pdGFiaWxpdHlGb3IoImxpbnV4X3dyaXRlX3RvX25vbndy aXRhYmxlX21vZHVsZS5kbXAiKSk7Ci0gICBBU1NFUlRfRVEoZ29vZ2xlX2JyZWFrcGFkOjpFWFBM T0lUQUJJTElUWV9ISUdILAotQEAgLTE4MiwxMCArMTg4LDEwIEBAIFRFU1QoRXhwbG9pdGFiaWxp dHlUZXN0LCBUZXN0TGludXhFbmdpbmUpIHsKLSAgICAgICAgICAgICBFeHBsb2l0YWJpbGl0eUZv cigibGludXhfd3JpdGVfdG9fb3V0c2lkZV9tb2R1bGVfdmlhX21hdGguZG1wIikpOwotICAgQVNT RVJUX0VRKGdvb2dsZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJVFlfSU5URVJFU1RJTkcsCi0gICAg ICAgICAgICAgRXhwbG9pdGFiaWxpdHlGb3IoImxpbnV4X3dyaXRlX3RvX3VuZGVyXzRrLmRtcCIp KTsKLS0jZW5kaWYgIC8vIF9XSU4zMgotKyNlbmRpZiAgLy8gIWRlZmluZWQoX1dJTjMyKSAmJiAo IWRlZmluZWQoX19pMzg2KSAmJiAhZGVmaW5lZChfX3g4Nl82NCkpCi0gfQotIAotLSNpZm5kZWYg X1dJTjMyCi0rI2lmICFkZWZpbmVkKF9XSU4zMikgJiYgKGRlZmluZWQoX19pMzg2KSB8fCBkZWZp bmVkKF9feDg2XzY0KSkKLSBURVNUKEV4cGxvaXRhYmlsaXR5TGludXhVdGlsc1Rlc3QsIERpc2Fz c2VtYmxlQnl0ZXNUZXN0KSB7Ci0gICBBU1NFUlRfRkFMU0UoRXhwbG9pdGFiaWxpdHlMaW51eFRl c3Q6OkRpc2Fzc2VtYmxlQnl0ZXMoIiIsIE5VTEwsIDUsIE5VTEwpKTsKLSAgIHVpbnQ4X3QgYnl0 ZXNbNl0gPSB7MHhjNywgMHgwLCAweDUsIDB4MCwgMHgwLCAweDB9OwotQEAgLTMwMSw2ICszMDcs NyBAQCBURVNUKEV4cGxvaXRhYmlsaXR5TGludXhVdGlsc1Rlc3QsIENhbGN1bGF0ZUFkZHJlc3NU ZXN0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmd3JpdGVfYWRkcmVzcykpOwotIH0KLS0jZW5kaWYgIC8vIF9X SU4zMgotKyNlbmRpZiAgLy8gIWRlZmluZWQoX1dJTjMyKSAmJiAoZGVmaW5lZChfX2kzODYpIHx8 IGRlZmluZWQoX194ODZfNjQpKQotKwotIAotIH0gIC8vIG5hbWVzcGFjZQotLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9z cmMvdG9vbHMvbGludXgvbWQyY29yZS9taW5pZHVtcC0yLWNvcmUuY2MKLSsrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3Jj L3Rvb2xzL2xpbnV4L21kMmNvcmUvbWluaWR1bXAtMi1jb3JlLmNjCi1AQCAtNzYsNiArNzYsOCBA QAotICAgI2RlZmluZSBFTEZfQVJDSCAgRU1fTUlQUwotICNlbGlmIGRlZmluZWQoX19hYXJjaDY0 X18pCi0gICAjZGVmaW5lIEVMRl9BUkNIICBFTV9BQVJDSDY0Ci0rI2VsaWYgZGVmaW5lZChfX3Bv d2VycGM2NF9fKQotKyAgI2RlZmluZSBFTEZfQVJDSCAgRU1fUFBDNjQKLSAjZW5kaWYKLSAKLSAj aWYgZGVmaW5lZChfX2FybV9fKQotQEAgLTg2LDYgKzg4LDggQEAgdHlwZWRlZiB1c2VyX3JlZ3Mg dXNlcl9yZWdzX3N0cnVjdDsKLSAjZWxpZiBkZWZpbmVkIChfX21pcHNfXykKLSAvLyBUaGlzIGZp bGUtbG9jYWwgdHlwZWRlZiBzaW1wbGlmaWVzIHRoZSBzb3VyY2UgY29kZS4KLSB0eXBlZGVmIGdy ZWdzZXRfdCB1c2VyX3JlZ3Nfc3RydWN0OwotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykK LSt0eXBlZGVmIHN0cnVjdCBwdF9yZWdzIHVzZXJfcmVnc19zdHJ1Y3Q7Ci0gI2VuZGlmCi0gCi0g dXNpbmcgZ29vZ2xlX2JyZWFrcGFkOjpNRFR5cGVIZWxwZXI7Ci1AQCAtMzIwLDYgKzMyNCw5IEBA IHN0cnVjdCBDcmFzaGVkUHJvY2VzcyB7Ci0gI2VuZGlmCi0gI2lmIGRlZmluZWQoX19hYXJjaDY0 X18pCi0gICAgIHVzZXJfZnBzaW1kX3N0cnVjdCBmcHJlZ3M7Ci0rI2VuZGlmCi0rI2lmIGRlZmlu ZWQoX19wb3dlcnBjNjRfXykKLSsgICAgbWNvbnRleHRfdCBtY29udGV4dDsKLSAjZW5kaWYKLSAg ICAgdWludHB0cl90IHN0YWNrX2FkZHI7Ci0gICAgIGNvbnN0IHVpbnQ4X3QqIHN0YWNrOwotQEAg LTUzNCw2ICs1NDEsMzggQEAgUGFyc2VUaHJlYWRSZWdpc3RlcnMoQ3Jhc2hlZFByb2Nlc3M6OlRo cmVhZCogdGhyZWFkLAotICAgdGhyZWFkLT5tY29udGV4dC5mcGNfZWlyID0gcmF3cmVncy0+Zmxv YXRfc2F2ZS5maXI7Ci0gI2VuZGlmCi0gfQotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykK LStzdGF0aWMgdm9pZAotK1BhcnNlVGhyZWFkUmVnaXN0ZXJzKENyYXNoZWRQcm9jZXNzOjpUaHJl YWQqIHRocmVhZCwKLSsgICAgICAgICAgICAgICAgICAgICBjb25zdCBNaW5pZHVtcE1lbW9yeVJh bmdlJiByYW5nZSkgewotKyAgY29uc3QgTURSYXdDb250ZXh0UFBDNjQqIHJhd3JlZ3MgPSByYW5n ZS5HZXREYXRhPE1EUmF3Q29udGV4dFBQQzY0PigwKTsKLSsKLSsgIGZvciAoaW50IGkgPSAwOyBp IDwgTURfQ09OVEVYVF9QUEM2NF9HUFJfQ09VTlQ7IGkrKykKLSsgICAgdGhyZWFkLT5tY29udGV4 dC5ncF9yZWdzW2ldID0gcmF3cmVncy0+Z3ByW2ldOwotKwotKyAgdGhyZWFkLT5tY29udGV4dC5n cF9yZWdzW1BUX0xOS10gPSByYXdyZWdzLT5scjsKLSsgIHRocmVhZC0+bWNvbnRleHQuZ3BfcmVn c1tQVF9OSVBdID0gcmF3cmVncy0+c3JyMDsKLSsgIHRocmVhZC0+bWNvbnRleHQuZ3BfcmVnc1tQ VF9NU1JdID0gcmF3cmVncy0+c3JyMTsKLSsgIHRocmVhZC0+bWNvbnRleHQuZ3BfcmVnc1tQVF9D Q1JdID0gcmF3cmVncy0+Y3I7Ci0rICB0aHJlYWQtPm1jb250ZXh0LmdwX3JlZ3NbUFRfWEVSXSA9 IHJhd3JlZ3MtPnhlcjsKLSsgIHRocmVhZC0+bWNvbnRleHQuZ3BfcmVnc1tQVF9DVFJdID0gcmF3 cmVncy0+Y3RyOwotKyAgdGhyZWFkLT5tY29udGV4dC52X3JlZ3MtPnZyc2F2ZSA9IHJhd3JlZ3Mt PnZyc2F2ZTsKLSsKLSsgIGZvciAoaW50IGkgPSAwOyBpIDwgTURfRkxPQVRJTkdTQVZFQVJFQV9Q UENfRlBSX0NPVU5UOyBpKyspCi0rICAgICAgdGhyZWFkLT5tY29udGV4dC5mcF9yZWdzW2ldID0g cmF3cmVncy0+ZmxvYXRfc2F2ZS5mcHJlZ3NbaV07Ci0rCi0rICB0aHJlYWQtPm1jb250ZXh0LmZw X3JlZ3NbTkZQUkVHLTFdID0gcmF3cmVncy0+ZmxvYXRfc2F2ZS5mcHNjcjsKLSsKLSsgIGZvciAo aW50IGkgPSAwOyBpIDwgTURfVkVDVE9SU0FWRUFSRUFfUFBDX1ZSX0NPVU5UOyBpKyspIHsKLSsg ICAgICB0aHJlYWQtPm1jb250ZXh0LnZfcmVncy0+dnJyZWdzW2ldWzBdID0gcmF3cmVncy0+dmVj dG9yX3NhdmUuc2F2ZV92cltpXS5oaWdoID4+IDMyOwotKyAgICAgIHRocmVhZC0+bWNvbnRleHQu dl9yZWdzLT52cnJlZ3NbaV1bMV0gPSByYXdyZWdzLT52ZWN0b3Jfc2F2ZS5zYXZlX3ZyW2ldLmhp Z2g7Ci0rICAgICAgdGhyZWFkLT5tY29udGV4dC52X3JlZ3MtPnZycmVnc1tpXVsyXSA9IHJhd3Jl Z3MtPnZlY3Rvcl9zYXZlLnNhdmVfdnJbaV0ubG93ID4+IDMyOwotKyAgICAgIHRocmVhZC0+bWNv bnRleHQudl9yZWdzLT52cnJlZ3NbaV1bM10gPSByYXdyZWdzLT52ZWN0b3Jfc2F2ZS5zYXZlX3Zy W2ldLmxvdzsKLSsgIH0KLSsKLSsgIHRocmVhZC0+bWNvbnRleHQudl9yZWdzLT52c2NyLnZzY3Jf d29yZCA9IHJhd3JlZ3MtPnZlY3Rvcl9zYXZlLnNhdmVfdnNjci5sb3cgJiAweEZGRkZGRkZGOwot K30KLSsKLSAjZWxzZQotICNlcnJvciAiVGhpcyBjb2RlIGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8g eW91ciBwbGF0Zm9ybSB5ZXQiCi0gI2VuZGlmCi1AQCAtNjIyLDYgKzY2MSwxMiBAQCBQYXJzZVN5 c3RlbUluZm8oY29uc3QgT3B0aW9ucyYgb3B0aW9ucywgQ3Jhc2hlZFByb2Nlc3MqIGNyYXNoaW5m bywKLSAjIGVsc2UKLSAjICBlcnJvciAiVGhpcyBtaXBzIEFCSSBpcyBjdXJyZW50bHkgbm90IHN1 cHBvcnRlZCAobjMyKSIKLSAjIGVuZGlmCi0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQot KyAgaWYgKHN5c2luZm8tPnByb2Nlc3Nvcl9hcmNoaXRlY3R1cmUgIT0gTURfQ1BVX0FSQ0hJVEVD VFVSRV9QUEM2NCkgewotKyAgICBmcHJpbnRmKHN0ZGVyciwKLSsgICAgICAgICAgICAiVGhpcyB2 ZXJzaW9uIG9mIG1pbmlkdW1wLTItY29yZSBvbmx5IHN1cHBvcnRzIFBQQzY0LlxuIik7Ci0rICAg IGV4aXQoMSk7Ci0rICB9Ci0gI2Vsc2UKLSAjZXJyb3IgIlRoaXMgY29kZSBoYXMgbm90IGJlZW4g cG9ydGVkIHRvIHlvdXIgcGxhdGZvcm0geWV0IgotICNlbmRpZgotLS0tIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9DT05UUklC VVRPUlMKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv Y3Jhc2hwYWQvY3Jhc2hwYWQvQ09OVFJJQlVUT1JTCi1AQCAtMTMsMyArMTMsNCBAQCBNYXJrIE1l bnRvdmFpIDxtYXJrQGNocm9taXVtLm9yZz4KLSBSb2JlcnQgU2VzZWsgPHJzZXNla0BjaHJvbWl1 bS5vcmc+Ci0gU2NvdHQgR3JhaGFtIDxzY290dG1nQGNocm9taXVtLm9yZz4KLSBKb3NodWEgUGVy YXphIDxqcGVyYXphQGNocm9taXVtLm9yZz4KLStTaGF3biBBbmFzdGFzaW8gPHNoYXduQGFuYXN0 YXMuaW8+Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2NyYXNocGFkL2NyYXNocGFkL2NvbXBhdC9saW51eC9zeXMvdXNlci5oCi0rKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL2Nv bXBhdC9saW51eC9zeXMvdXNlci5oCi1AQCAtMTUsNiArMTUsNyBAQAotICNpZm5kZWYgQ1JBU0hQ QURfQ09NUEFUX0xJTlVYX1NZU19VU0VSX0hfCi0gI2RlZmluZSBDUkFTSFBBRF9DT01QQVRfTElO VVhfU1lTX1VTRVJfSF8KLSAKLSsjaW5jbHVkZSA8Y3N0ZGRlZj4KLSAjaW5jbHVkZV9uZXh0IDxz eXMvdXNlci5oPgotIAotICNpbmNsdWRlIDxmZWF0dXJlcy5oPgotLS0tIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVt cC9taW5pZHVtcF9jb250ZXh0LmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4 dC5oCi1AQCAtNTkyLDYgKzU5Miw3MCBAQCBzdHJ1Y3QgTWluaWR1bXBDb250ZXh0TUlQUzY0IHsK LSAgIHVpbnQ2NF90IGZpcjsKLSB9OwotIAotKy8vISBcYnJpZWYgcHBjNjQtc3BlY2lmaWMgZmxh Z3MgZm9yIE1pbmlkdW1wUFBDNjQ6OmNvbnRleHRfZmxhZ3MKLSsvLyEgQmFzZWQgb24gbWluaWR1 bXBfY3B1X3BwYzY0LmggZnJvbSBicmVha3BhZAotK2VudW0gTWluaWR1bXBDb250ZXh0UFBDNjRG bGFncyA6IHVpbnQzMl90IHsKLSsgIC8vISBcYnJpZWYgSWRlbnRpZmllcyB0aGUgY29udGV4dCBh cyBQUEM2NC4KLSsgIGtNaW5pZHVtcENvbnRleHRQUEM2NCA9IDB4MDEwMDAwMDAsCi0rCi0rICAv LyEgXGJyaWVmIEluZGljYXRlcyB0aGUgdmFsaWRpdHkgb2YgZ2VuZXJhbCBwdXJwb3NlIHJlZ2lz dGVycy4KLSsgIC8vIQotKyAgLy8hIFJlZ2lzdGVycyBgcjBgLWByMzFgLCBgbmlwYCwgYG1zcmAs IGBscmAsIGV0Yy4gYXJlIHZhbGlkLgotKyAga01pbmlkdW1wQ29udGV4dFBQQzY0QmFzZSA9IGtN aW5pZHVtcENvbnRleHRQUEM2NCB8IDB4MDAwMDAwMDEsCi0rCi0rICAvLyEgXGJyaWVmIEluZGlj YXRlcyB0aGUgdmFsaWRpdHkgb2YgZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzLgotKyAgLy8hCi0r ICAvLyEgUmVnaXN0ZXJzIGBmcDBgLWBmcDMxYCwgYGZwc2NyYCBhcmUgdmFsaWQuCi0rICBrTWlu aWR1bXBDb250ZXh0UFBDNjRGbG9hdGluZyA9IGtNaW5pZHVtcENvbnRleHRQUEM2NCB8IDB4MDAw MDAwMDgsCi0rCi0rICAvLyEgXGJyaWVmIEluZGljYXRlcyB0aGUgdmFsaWRpdHkgb2YgQWx0aXZl Yy9WTVggcmVnaXN0ZXJzLgotKyAgLy8hCi0rICAvLyEgUmVnaXN0ZXJzIGB2MGAtYHYzMWAsIGB2 c2NyYCwgYHZyc2F2ZWAuCi0rICBrTWluaWR1bXBDb250ZXh0UFBDNjRWZWN0b3IgPSBrTWluaWR1 bXBDb250ZXh0UFBDNjQgfCAweDAwMDAwMDIwLAotKwotKyAgLy8hIFxicmllZiBJbmRpY2F0ZXMg dGhlIHZhbGlkaXR5IG9mIGFsbCByZWdpc3RlcnMKLSsgIGtNaW5pZHVtcENvbnRleHRQUEM2NEFs bCA9IGtNaW5pZHVtcENvbnRleHRQUEM2NEJhc2UgICAgIHwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGtNaW5pZHVtcENvbnRleHRQUEM2NEZsb2F0aW5nIHwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGtNaW5pZHVtcENvbnRleHRQUEM2NFZlY3RvcgotK307Ci0rCi0rLy8h IFxicmllZiBBIFBQQzY0IENQVSBjb250ZXh0IGNhcnJpZWQgaW4gYSBtaW5pZHVtcCBmaWxlLgot Ky8vISBCYXNlZCBvbiBtaW5pZHVtcF9jcHVfcHBjNjQuaCBmcm9tIGJyZWFrcGFkLgotK3N0cnVj dCBNaW5pZHVtcENvbnRleHRQUEM2NCB7Ci0rICB1aW50NjRfdCBjb250ZXh0X2ZsYWdzOwotKwot KyAgLy8hIFxicmllZiBHZW5lcmFsIHB1cnBvc2UgcmVnaXN0ZXJzLgotKyAgdWludDY0X3Qgbmlw OwotKyAgdWludDY0X3QgbXNyOwotKyAgdWludDY0X3QgcmVnc1szMl07Ci0rICB1aW50NjRfdCBj Y3I7Ci0rICB1aW50NjRfdCB4ZXI7Ci0rICB1aW50NjRfdCBsbms7Ci0rICB1aW50NjRfdCBjdHI7 Ci0rCi0rICAvLyEgXGJyaWVmIEZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycy4KLSsgIGRvdWJsZSBm cHJlZ3NbMzJdOwotKwotKyAgLy8hIFxicmllZiBGUFUgc3RhdHVzIHJlZ2lzdGVyLgotKyAgZG91 YmxlIGZwc2NyOwotKwotKyAgLy8hIFxicmllZiBBbHRpdmVjL1ZNWCB2ZWN0b3IgcmVnaXN0ZXJz LgotKyAgc3RydWN0IHsKLSsgICAgICAvLyEgXGJyaWVmIFZlY3RvciByZWdpc3RlcnMgYXJlIDEy OGJpdHMuCi0rICAgICAgdWludDEyOF9zdHJ1Y3Qgc2F2ZV92clszMl07Ci0rICAgICAgdWludDEy OF9zdHJ1Y3Qgc2F2ZV92c2NyOwotKwotKyAgICAgIC8vISBcYnJpZWYgUGFkZGluZyBpbmNsdWRl ZCBmb3IgYnJlYWtwYWQgY29tcGF0aWJpbHRpeS4KLSsgICAgICB1aW50MzJfdCBzYXZlX3BhZDVb NF07Ci0rCi0rICAgICAgLy8hIFxicmllZiBWUlNBVkUgcmVnaXN0ZXIuCi0rICAgICAgdWludDMy X3Qgc2F2ZV92cnNhdmU7Ci0rCi0rICAgICAgLy8hIFxicmllZiBQYWRkaW5nIGluY2x1ZGVkIGZv ciBicmVha3BhZCBjb21wYXRpYmlsdGl5LgotKyAgICAgIHVpbnQzMl90IHNhdmVfcGFkNls3XTsK LSsgIH0gdnJlZ3M7Ci0rfTsKLSsKLSB9ICAvLyBuYW1lc3BhY2UgY3Jhc2hwYWQKLSAKLSAjZW5k aWYgIC8vIENSQVNIUEFEX01JTklEVU1QX01JTklEVU1QX0NPTlRFWFRfSF8KLS0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQv bWluaWR1bXAvbWluaWR1bXBfY29udGV4dF93cml0ZXIuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAv bWluaWR1bXBfY29udGV4dF93cml0ZXIuY2MKLUBAIC0xMDEsNiArMTAxLDEzIEBAIE1pbmlkdW1w Q29udGV4dFdyaXRlcjo6Q3JlYXRlRnJvbVNuYXBzaG90KGNvbnN0IENQVUNvbnRleHQqIGNvbnRl eHRfc25hcHNob3QpIHsKLSAgICAgICBicmVhazsKLSAgICAgfQotIAotKyAgICBjYXNlIGtDUFVB cmNoaXRlY3R1cmVQUEM2NDogewotKyAgICAgIGNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPE1p bmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyPigpOwotKyAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8TWlu aWR1bXBDb250ZXh0UFBDNjRXcml0ZXIqPihjb250ZXh0LmdldCgpKQotKyAgICAgICAgICAtPklu aXRhbGl6ZUZyb21TbmFwc2hvdChjb250ZXh0X3NuYXBzaG90LT5wcGM2NCk7Ci0rICAgICAgYnJl YWs7Ci0rICAgIH0KLSsKLSAgICAgZGVmYXVsdDogewotICAgICAgIExPRyhFUlJPUikgPDwgInVu a25vd24gY29udGV4dCBhcmNoaXRlY3R1cmUgIgotICAgICAgICAgICAgICAgICAgPDwgY29udGV4 dF9zbmFwc2hvdC0+YXJjaGl0ZWN0dXJlOwotQEAgLTQ1Myw0ICs0NjAsNDcgQEAgc2l6ZV90IE1p bmlkdW1wQ29udGV4dE1JUFM2NFdyaXRlcjo6Q29udGV4dFNpemUoKSBjb25zdCB7Ci0gICByZXR1 cm4gc2l6ZW9mKGNvbnRleHRfKTsKLSB9Ci0gCi0rTWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXI6 Ok1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyKCkKLSsgIDogTWluaWR1bXBDb250ZXh0V3JpdGVy KCksIGNvbnRleHRfKCkgewotKyAgICBjb250ZXh0Xy5jb250ZXh0X2ZsYWdzID0ga01pbmlkdW1w Q29udGV4dFBQQzY0OwotK30KLSsKLStNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlcjo6fk1pbmlk dW1wQ29udGV4dFBQQzY0V3JpdGVyKCkgPSBkZWZhdWx0OwotKwotK3ZvaWQgTWluaWR1bXBDb250 ZXh0UFBDNjRXcml0ZXI6OkluaXRhbGl6ZUZyb21TbmFwc2hvdCgKLSsgICAgY29uc3QgQ1BVQ29u dGV4dFBQQzY0KiBjb250ZXh0X3NuYXBzaG90KSB7Ci0rICBEQ0hFQ0tfRVEoc3RhdGUoKSwga1N0 YXRlTXV0YWJsZSk7Ci0rICBEQ0hFQ0tfRVEoY29udGV4dF8uY29udGV4dF9mbGFncywga01pbmlk dW1wQ29udGV4dFBQQzY0KTsKLSsKLSsgIGNvbnRleHRfLmNvbnRleHRfZmxhZ3MgPSBrTWluaWR1 bXBDb250ZXh0UFBDNjRBbGw7Ci0rCi0rICBtZW1jcHkoY29udGV4dF8ucmVncywgY29udGV4dF9z bmFwc2hvdC0+cmVncywgc2l6ZW9mKGNvbnRleHRfLnJlZ3MpKTsKLSsgIGNvbnRleHRfLm5pcCA9 IGNvbnRleHRfc25hcHNob3QtPm5pcDsKLSsgIGNvbnRleHRfLm1zciA9IGNvbnRleHRfc25hcHNo b3QtPm1zcjsKLSsgIGNvbnRleHRfLmNjciA9IGNvbnRleHRfc25hcHNob3QtPmNjcjsKLSsgIGNv bnRleHRfLnhlciA9IGNvbnRleHRfc25hcHNob3QtPnhlcjsKLSsgIGNvbnRleHRfLmxuayA9IGNv bnRleHRfc25hcHNob3QtPmxuazsKLSsgIGNvbnRleHRfLmN0ciA9IGNvbnRleHRfc25hcHNob3Qt PmN0cjsKLSsKLSsgIG1lbWNweShjb250ZXh0Xy5mcHJlZ3MsIGNvbnRleHRfc25hcHNob3QtPmZw cmVncywgc2l6ZW9mKGNvbnRleHRfLmZwcmVncykpOwotKyAgY29udGV4dF8uZnBzY3IgPSBjb250 ZXh0X3NuYXBzaG90LT5mcHNjcjsKLSsKLSsgIG1lbWNweShjb250ZXh0Xy52cmVncy5zYXZlX3Zy LCBjb250ZXh0X3NuYXBzaG90LT52cmVncy5zYXZlX3ZyLAotKyAgICAgICAgIHNpemVvZihjb250 ZXh0Xy52cmVncy5zYXZlX3ZyKSk7Ci0rICBtZW1jcHkoJmNvbnRleHRfLnZyZWdzLnNhdmVfdnNj ciwgJmNvbnRleHRfc25hcHNob3QtPnZyZWdzLnNhdmVfdnNjciwKLSsgICAgICAgICBzaXplb2Yo Y29udGV4dF8udnJlZ3Muc2F2ZV92c2NyKSk7Ci0rICBjb250ZXh0Xy52cmVncy5zYXZlX3Zyc2F2 ZSA9IGNvbnRleHRfc25hcHNob3QtPnZyZWdzLnNhdmVfdnJzYXZlOwotK30KLSsKLStib29sIE1p bmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyOjpXcml0ZU9iamVjdCgKLSsgICAgRmlsZVdyaXRlcklu dGVyZmFjZSogZmlsZV93cml0ZXIpIHsKLSsgIERDSEVDS19FUShzdGF0ZSgpLCBrU3RhdGVXcml0 YWJsZSk7Ci0rICByZXR1cm4gZmlsZV93cml0ZXItPldyaXRlKCZjb250ZXh0Xywgc2l6ZW9mKGNv bnRleHRfKSk7Ci0rfQotKwotK3NpemVfdCBNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlcjo6Q29u dGV4dFNpemUoKSBjb25zdCB7Ci0rICBEQ0hFQ0tfR0Uoc3RhdGUoKSwga1N0YXRlRnJvemVuKTsK LSsgIHJldHVybiBzaXplb2YoY29udGV4dF8pOwotK30KLSsKLSB9ICAvLyBuYW1lc3BhY2UgY3Jh c2hwYWQKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv Y3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4dF93cml0ZXIuaAotKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9j cmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9jb250ZXh0X3dyaXRlci5oCi1AQCAtMzE1LDYgKzMx NSw0NSBAQCBjbGFzcyBNaW5pZHVtcENvbnRleHRNSVBTNjRXcml0ZXIgZmluYWwgOiBwdWJsaWMg TWluaWR1bXBDb250ZXh0V3JpdGVyIHsKLSAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihNaW5p ZHVtcENvbnRleHRNSVBTNjRXcml0ZXIpOwotIH07Ci0gCi0rY2xhc3MgTWluaWR1bXBDb250ZXh0 UFBDNjRXcml0ZXIgZmluYWwgOiBwdWJsaWMgTWluaWR1bXBDb250ZXh0V3JpdGVyIHsKLSsgcHVi bGljOgotKyAgTWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXIoKTsKLSsgIH5NaW5pZHVtcENvbnRl eHRQUEM2NFdyaXRlcigpIG92ZXJyaWRlOwotKwotKyAgLy8hIFxicmllZiBJbml0YWxpemVzIHRo ZSBNaW5pZHVtcENvbnRleHRQUEM2NCBiYXNlZCBvbiBcYSBjb250ZXh0X3NuYXBzaG90LgotKyAg Ly8hCi0rICAvLyEgXHBhcmFtW2luXSBjb250ZXh0X3NuYXBzaG90IFRoZSBjb250ZXh0IHNuYXBz aG90IHRvIHVzZSBhcyBzb3VyY2UgZGF0YS4KLSsgIC8vIQotKyAgLy8hIFxub3RlIFZhbGlkIGlu ICNrU3RhdGVNdXRhYmxlLiBObyBtdXRhdGlvbiBvZiBjb250ZXh0KCkgbWF5IGJlIGRvbmUgYmVm b3JlCi0rICAvLyEgICAgIGNhbGxpbmcgdGhpcyBtZXRob2QsIGFuZCBpdCBpcyBub3Qgbm9ybWFs bHkgbmVjZXNzYXJ5IHRvIGFsdGVyCi0rICAvLyEgICAgIGNvbnRleHQoKSBhZnRlciBjYWxsaW5n IHRoaXMgbWV0aG9kLgotKyAgdm9pZCBJbml0YWxpemVGcm9tU25hcHNob3QoY29uc3QgQ1BVQ29u dGV4dFBQQzY0KiBjb250ZXh0X3NuYXBzaG90KTsKLSsKLSsgIC8vISBcYnJpZWYgUmV0dXJucyBh IHBvaW50ZXIgdG8gdGhlIGNvbnRleHQgc3RydWN0dXJlIHRoYXQgdGhpcyBvYmplY3Qgd2lsbAot KyAgLy8hICAgICB3cml0ZS4KLSsgIC8vIQotKyAgLy8hIFxhdHRlbnRpb24gVGhpcyByZXR1cm5z IGEgbm9uLWBjb25zdGAgcG9pbnRlciB0byB0aGlzIG9iamVjdOKAmXMgcHJpdmF0ZQotKyAgLy8h ICAgICBkYXRhIHNvIHRoYXQgYSBjYWxsZXIgY2FuIHBvcHVsYXRlIHRoZSBjb250ZXh0IHN0cnVj dHVyZSBkaXJlY3RseS4KLSsgIC8vISAgICAgVGhpcyBpcyBkb25lIGJlY2F1c2UgcHJvdmlkaW5n IHNldHRlciBpbnRlcmZhY2VzIHRvIGVhY2ggZmllbGQgaW4gdGhlCi0rICAvLyEgICAgIGNvbnRl eHQgc3RydWN0dXJlIHdvdWxkIGJlIHVud2llbGR5IGFuZCBjdW1iZXJzb21lLiBDYXJlIG11c3Qg YmUgdGFrZW4KLSsgIC8vISAgICAgdG8gcG9wdWxhdGUgdGhlIGNvbnRleHQgc3RydWN0dXJlIGNv cnJlY3RseS4gVGhlIGNvbnRleHQgc3RydWN0dXJlCi0rICAvLyEgICAgIG11c3Qgb25seSBiZSBt b2RpZmllZCB3aGlsZSB0aGlzIG9iamVjdCBpcyBpbiB0aGUgI2tTdGF0ZU11dGFibGUKLSsgIC8v ISAgICAgc3RhdGUuCi0rICBNaW5pZHVtcENvbnRleHRQUEM2NCogY29udGV4dCgpIHsgcmV0dXJu ICZjb250ZXh0XzsgfQotKwotKyBwcm90ZWN0ZWQ6Ci0rICAvLyBNaW5pZHVtcFdyaXRhYmxlOgot KyAgYm9vbCBXcml0ZU9iamVjdChGaWxlV3JpdGVySW50ZXJmYWNlKiBmaWxlX3dyaXRlcikgb3Zl cnJpZGU7Ci0rCi0rICAvLyBNaW5pZHVtcENvbnRleHRXcml0ZXI6Ci0rICBzaXplX3QgQ29udGV4 dFNpemUoKSBjb25zdCBvdmVycmlkZTsKLSsKLSsgcHJpdmF0ZToKLSsgIE1pbmlkdW1wQ29udGV4 dFBQQzY0IGNvbnRleHRfOwotKwotKyAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKE1pbmlkdW1w Q29udGV4dFBQQzY0V3JpdGVyKTsKLSt9OwotKwotIH0gIC8vIG5hbWVzcGFjZSBjcmFzaHBhZAot IAotICNlbmRpZiAgLy8gQ1JBU0hQQURfTUlOSURVTVBfTUlOSURVTVBfQ09OVEVYVF9XUklURVJf SF8KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jh c2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4dF93cml0ZXJfdGVzdC5jYwot KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBh ZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9jb250ZXh0X3dyaXRlcl90ZXN0LmNjCi1AQCAt MjEzLDYgKzIxMywyMSBAQCBURVNUKE1pbmlkdW1wQ29udGV4dFdyaXRlciwgTUlQUzY0X0Zyb21T bmFwc2hvdCkgewotICAgICAgIGNvbnRleHQsIEV4cGVjdE1pbmlkdW1wQ29udGV4dE1JUFM2NCwg a1NlZWQpOwotIH0KLSAKLStURVNUKE1pbmlkdW1wQ29udGV4dFdyaXRlciwgUFBDNjRfWmVyb3Mp IHsKLSsgIEVtcHR5Q29udGV4dFRlc3Q8TWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXIsIE1pbmlk dW1wQ29udGV4dFBQQzY0PigKLSsgICAgRXhwZWN0TWluaWR1bXBDb250ZXh0UFBDNjQpOwotK30K LSsKLStURVNUKE1pbmlkdW1wQ29udGV4dFdyaXRlciwgUFBDNjRfRnJvbVNuYXBzaG90KSB7Ci0r ICBjb25zdGV4cHIgdWludDMyX3Qga1NlZWQgPSA2NDsKLSsgIENQVUNvbnRleHRQUEM2NCBjb250 ZXh0X3BwYzY0OwotKyAgQ1BVQ29udGV4dCBjb250ZXh0OwotKyAgY29udGV4dC5wcGM2NCA9ICZj b250ZXh0X3BwYzY0OwotKyAgSW5pdGlhbGl6ZUNQVUNvbnRleHRQUEM2NCgmY29udGV4dCwga1Nl ZWQpOwotKyAgRnJvbVNuYXBzaG90VGVzdDxNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlciwgTWlu aWR1bXBDb250ZXh0UFBDNjQ+KAotKyAgICAgIGNvbnRleHQsIEV4cGVjdE1pbmlkdW1wQ29udGV4 dFBQQzY0LCBrU2VlZCk7Ci0rfQotKwotIH0gIC8vIG5hbWVzcGFjZQotIH0gIC8vIG5hbWVzcGFj ZSB0ZXN0Ci0gfSAgLy8gbmFtZXNwYWNlIGNyYXNocGFkCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlkdW1wL21p bmlkdW1wX21pc2NfaW5mb193cml0ZXIuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBf bWlzY19pbmZvX3dyaXRlci5jYwotQEAgLTEyNiw2ICsxMjYsOCBAQCBzdGQ6OnN0cmluZyBNaW5p ZHVtcE1pc2NJbmZvRGVidWdCdWlsZFN0cmluZygpIHsKLSAgIHN0YXRpYyBjb25zdGV4cHIgY2hh ciBrQ1BVW10gPSAibWlwcyI7Ci0gI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTNjRFTCkKLSAg IHN0YXRpYyBjb25zdGV4cHIgY2hhciBrQ1BVW10gPSAibWlwczY0IjsKLSsjZWxpZiBkZWZpbmVk KEFSQ0hfQ1BVX1BQQzY0KQotKyAgc3RhdGljIGNvbnN0ZXhwciBjaGFyIGtDUFVbXSA9ICJwcGM2 NCI7Ci0gI2Vsc2UKLSAjZXJyb3IgZGVmaW5lIGtDUFUgZm9yIHRoaXMgQ1BVCi0gI2VuZGlmCi0t LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFk L2NyYXNocGFkL3NuYXBzaG90L2NhcHR1cmVfbWVtb3J5LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90 L2NhcHR1cmVfbWVtb3J5LmNjCi1AQCAtMTExLDYgKzExMSwxMSBAQCB2b2lkIENhcHR1cmVNZW1v cnk6OlBvaW50ZWRUb0J5Q29udGV4dChjb25zdCBDUFVDb250ZXh0JiBjb250ZXh0LAotICAgZm9y IChzaXplX3QgaSA9IDA7IGkgPCBiYXNlOjpzaXplKGNvbnRleHQubWlwc2VsLT5yZWdzKTsgKytp KSB7Ci0gICAgIE1heWJlQ2FwdHVyZU1lbW9yeUFyb3VuZChkZWxlZ2F0ZSwgY29udGV4dC5taXBz ZWwtPnJlZ3NbaV0pOwotICAgfQotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZ KQotKyAgTWF5YmVDYXB0dXJlTWVtb3J5QXJvdW5kKGRlbGVnYXRlLCBjb250ZXh0LnBwYzY0LT5u aXApOwotKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBiYXNlOjpzaXplKGNvbnRleHQucHBjNjQt PnJlZ3MpOyArK2kpIHsKLSsgICAgTWF5YmVDYXB0dXJlTWVtb3J5QXJvdW5kKGRlbGVnYXRlLCBj b250ZXh0LnBwYzY0LT5yZWdzW2ldKTsKLSsgIH0KLSAjZWxzZQotICNlcnJvciBQb3J0LgotICNl bmRpZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9j cmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9jcHVfYXJjaGl0ZWN0dXJlLmgKLSsrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQv c25hcHNob3QvY3B1X2FyY2hpdGVjdHVyZS5oCi1AQCAtNDMsNyArNDMsMTAgQEAgZW51bSBDUFVB cmNoaXRlY3R1cmUgewotICAga0NQVUFyY2hpdGVjdHVyZU1JUFNFTCwKLSAKLSAgIC8vISBcYnJp ZWYgNjQtYml0IE1JUFNFTC4KLS0gIGtDUFVBcmNoaXRlY3R1cmVNSVBTNjRFTAotKyAga0NQVUFy Y2hpdGVjdHVyZU1JUFM2NEVMLAotKwotKyAgLy8hIFxicmllZiA2NC1iaXQgUFBDNjQuCi0rICBr Q1BVQXJjaGl0ZWN0dXJlUFBDNjQKLSB9OwotIAotIH0gIC8vIG5hbWVzcGFjZSBjcmFzaHBhZAot LS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBh ZC9jcmFzaHBhZC9zbmFwc2hvdC9jcHVfY29udGV4dC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9j cHVfY29udGV4dC5jYwotQEAgLTE2OSw2ICsxNjksOCBAQCB1aW50NjRfdCBDUFVDb250ZXh0OjpJ bnN0cnVjdGlvblBvaW50ZXIoKSBjb25zdCB7Ci0gICAgICAgcmV0dXJuIGFybS0+cGM7Ci0gICAg IGNhc2Uga0NQVUFyY2hpdGVjdHVyZUFSTTY0OgotICAgICAgIHJldHVybiBhcm02NC0+cGM7Ci0r ICAgIGNhc2Uga0NQVUFyY2hpdGVjdHVyZVBQQzY0OgotKyAgICAgIHJldHVybiBwcGM2NC0+bmlw OwotICAgICBkZWZhdWx0OgotICAgICAgIE5PVFJFQUNIRUQoKTsKLSAgICAgICByZXR1cm4gfjB1 bGw7Ci1AQCAtMTg1LDYgKzE4Nyw4IEBAIHVpbnQ2NF90IENQVUNvbnRleHQ6OlN0YWNrUG9pbnRl cigpIGNvbnN0IHsKLSAgICAgICByZXR1cm4gYXJtLT5zcDsKLSAgICAgY2FzZSBrQ1BVQXJjaGl0 ZWN0dXJlQVJNNjQ6Ci0gICAgICAgcmV0dXJuIGFybTY0LT5zcDsKLSsgICAgY2FzZSBrQ1BVQXJj aGl0ZWN0dXJlUFBDNjQ6Ci0rICAgICAgcmV0dXJuIHBwYzY0LT5yZWdzWzFdOwotICAgICBkZWZh dWx0OgotICAgICAgIE5PVFJFQUNIRUQoKTsKLSAgICAgICByZXR1cm4gfjB1bGw7Ci1AQCAtMTk2 LDYgKzIwMCw3IEBAIGJvb2wgQ1BVQ29udGV4dDo6SXM2NEJpdCgpIGNvbnN0IHsKLSAgICAgY2Fz ZSBrQ1BVQXJjaGl0ZWN0dXJlWDg2XzY0OgotICAgICBjYXNlIGtDUFVBcmNoaXRlY3R1cmVBUk02 NDoKLSAgICAgY2FzZSBrQ1BVQXJjaGl0ZWN0dXJlTUlQUzY0RUw6Ci0rICAgIGNhc2Uga0NQVUFy Y2hpdGVjdHVyZVBQQzY0OgotICAgICAgIHJldHVybiB0cnVlOwotICAgICBjYXNlIGtDUFVBcmNo aXRlY3R1cmVYODY6Ci0gICAgIGNhc2Uga0NQVUFyY2hpdGVjdHVyZUFSTToKLS0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQv c25hcHNob3QvY3B1X2NvbnRleHQuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9jcHVfY29udGV4dC5o Ci1AQCAtMzUyLDYgKzM1MiwyNCBAQCBzdHJ1Y3QgQ1BVQ29udGV4dE1JUFM2NCB7Ci0gICB1aW50 NjRfdCBmaXI7Ci0gfTsKLSAKLSsvLyEgXGJyaWVmIEEgY29udGV4dCBzdHJ1Y3R1cmUgY2Fycnlp bmcgUFBDNjQgQ1BVIHN0YXRlLgotK3N0cnVjdCBDUFVDb250ZXh0UFBDNjQgewotKyAgdWludDY0 X3QgbmlwOwotKyAgdWludDY0X3QgbXNyOwotKyAgdWludDY0X3QgcmVnc1szMl07Ci0rICB1aW50 NjRfdCBjY3I7Ci0rICB1aW50NjRfdCB4ZXI7Ci0rICB1aW50NjRfdCBsbms7Ci0rICB1aW50NjRf dCBjdHI7Ci0rICBkb3VibGUgZnByZWdzWzMyXTsKLSsgIGRvdWJsZSBmcHNjcjsKLSsgIHN0cnVj dCB7Ci0rICAgIHVpbnQxMjhfc3RydWN0IHNhdmVfdnJbMzJdOwotKyAgICB1aW50MTI4X3N0cnVj dCBzYXZlX3ZzY3I7Ci0rICAgIHVpbnQzMl90IHNhdmVfdnJzYXZlOwotKyAgfSB2cmVnczsKLSt9 OwotKwotIC8vISBcYnJpZWYgQSBjb250ZXh0IHN0cnVjdHVyZSBjYXBhYmxlIG9mIGNhcnJ5aW5n IHRoZSBjb250ZXh0IG9mIGFueSBzdXBwb3J0ZWQKLSAvLyEgICAgIENQVSBhcmNoaXRlY3R1cmUu Ci0gc3RydWN0IENQVUNvbnRleHQgewotQEAgLTM4Miw2ICs0MDAsNyBAQCBzdHJ1Y3QgQ1BVQ29u dGV4dCB7Ci0gICAgIENQVUNvbnRleHRBUk02NCogYXJtNjQ7Ci0gICAgIENQVUNvbnRleHRNSVBT KiBtaXBzZWw7Ci0gICAgIENQVUNvbnRleHRNSVBTNjQqIG1pcHM2NDsKLSsgICAgQ1BVQ29udGV4 dFBQQzY0KiBwcGM2NDsKLSAgIH07Ci0gfTsKLSAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgv Y3B1X2NvbnRleHRfbGludXguaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9jcHVfY29udGV4 dF9saW51eC5oCi1AQCAtMTUsNiArMTUsNyBAQAotICNpZm5kZWYgQ1JBU0hQQURfU05BUFNIT1Rf TElOVVhfQ1BVX0NPTlRFWFRfTElOVVhfSF8KLSAjZGVmaW5lIENSQVNIUEFEX1NOQVBTSE9UX0xJ TlVYX0NQVV9DT05URVhUX0xJTlVYX0hfCi0gCi0rI2luY2x1ZGUgPGNzdHJpbmc+Ci0gI2luY2x1 ZGUgImJ1aWxkL2J1aWxkX2NvbmZpZy5oIgotICNpbmNsdWRlICJzbmFwc2hvdC9jcHVfY29udGV4 dC5oIgotICNpbmNsdWRlICJzbmFwc2hvdC9saW51eC9zaWduYWxfY29udGV4dC5oIgotQEAgLTE3 NCw2ICsxNzUsNzggQEAgdm9pZCBJbml0aWFsaXplQ1BVQ29udGV4dE1JUFMoCi0gCi0gI2VuZGlm ICAvLyBBUkNIX0NQVV9NSVBTX0ZBTUlMWSB8fCBET1hZR0VOCi0gCi0rI2lmIGRlZmluZWQoQVJD SF9DUFVfUFBDNjRfRkFNSUxZKSB8fCBET1hZR0VOCi0rCi0rLy8hIFxicmllZiBJbml0YWxpemVz IGEgQ1BVQ29udGV4dFBQQzY0IHN0cnVjdHVyZSBmcm9tIG5hdGl2ZSBjb250ZXh0Ci0rLy8hICAg ICBzdHJ1Y3R1cmVzIG9uIExpbnV4LgotKy8vIQotKy8vISBccGFyYW1baW5dIHRocmVhZF9jb250 ZXh0IFRoZSBuYXRpdmUgdGhyZWFkIGNvbnRleHQuCi0rLy8hIFxwYXJhbVtpbl0gZmxvYXRfY29u dGV4dCBUaGUgbmF0aXZlIGZsb2F0IGNvbnRleHQuCi0rLy8hIFxwYXJhbVtpbl0gdmVjdG9yX2Nv bnRleHQgVGhlIG5hdGl2ZSB2ZWN0b3IgY29udGV4dC4KLSsvLyEgXHBhcmFtW291dF0gY29udGV4 dCBUaGUgQ1BVQ29udGV4dFBQQzY0IHN0cnVjdHVyZSB0byBpbml0YWxpemUuCi0rdGVtcGxhdGUg PHR5cGVuYW1lIFRyYWl0cz4KLSt2b2lkIEluaXRpYWxpemVDUFVDb250ZXh0UFBDNjQoCi0rICAg IGNvbnN0IFRocmVhZENvbnRleHQ6OnQ2NF90JiB0aHJlYWRfY29udGV4dCwKLSsgICAgY29uc3Qg RmxvYXRDb250ZXh0OjpmNjRfdCYgZmxvYXRfY29udGV4dCwKLSsgICAgY29uc3QgVmVjdG9yQ29u dGV4dDo6djY0X3QmIHZlY3Rvcl9jb250ZXh0LAotKyAgICB0eXBlbmFtZSBUcmFpdHM6OkNQVUNv bnRleHQqIGNvbnRleHQpIHsKLSsKLSsgIG1lbWNweShjb250ZXh0LT5yZWdzLCB0aHJlYWRfY29u dGV4dC5ncHIsIHNpemVvZihjb250ZXh0LT5yZWdzKSk7Ci0rICBjb250ZXh0LT5uaXAgPSB0aHJl YWRfY29udGV4dC5uaXA7Ci0rICBjb250ZXh0LT5tc3IgPSB0aHJlYWRfY29udGV4dC5tc3I7Ci0r ICBjb250ZXh0LT5jY3IgPSB0aHJlYWRfY29udGV4dC5jY3I7Ci0rICBjb250ZXh0LT54ZXIgPSB0 aHJlYWRfY29udGV4dC54ZXI7Ci0rICBjb250ZXh0LT5sbmsgPSB0aHJlYWRfY29udGV4dC5sbms7 Ci0rICBjb250ZXh0LT5jdHIgPSB0aHJlYWRfY29udGV4dC5jdHI7Ci0rCi0rICBtZW1jcHkoY29u dGV4dC0+ZnByZWdzLCBmbG9hdF9jb250ZXh0LmZwcmVncywgc2l6ZW9mKGNvbnRleHQtPmZwcmVn cykpOwotKyAgY29udGV4dC0+ZnBzY3IgPSBmbG9hdF9jb250ZXh0LmZwc2NyOwotKwotKyAgZm9y ICh1aW50OF90IGkgPSAwOyBpIDwgMzI7IGkrKykgewotKyAgICBjb250ZXh0LT52cmVncy5zYXZl X3ZyW2ldID0gewotKyAgICAgICgoKHVpbnQ2NF90KXZlY3Rvcl9jb250ZXh0LnZycmVnc1tpXVsw XSkgPDwgMzIpIHwKLSsgICAgICAgIHZlY3Rvcl9jb250ZXh0LnZycmVnc1tpXVsxXSwKLSsgICAg ICAoKCh1aW50NjRfdCl2ZWN0b3JfY29udGV4dC52cnJlZ3NbaV1bMl0pIDw8IDMyKSB8Ci0rICAg ICAgICB2ZWN0b3JfY29udGV4dC52cnJlZ3NbaV1bM10KLSsgICAgfTsKLSsgIH0KLSsgIGNvbnRl eHQtPnZyZWdzLnNhdmVfdnJzYXZlID0gdmVjdG9yX2NvbnRleHQudnJzYXZlOwotKyAgY29udGV4 dC0+dnJlZ3Muc2F2ZV92c2NyID0gezAsICh1aW50NjRfdCl2ZWN0b3JfY29udGV4dC52c2NyLnZz Y3Jfd29yZH07Ci0rfQotKwotK3RlbXBsYXRlIDx0eXBlbmFtZSBUcmFpdHM+Ci0rdm9pZCBJbml0 aWFsaXplQ1BVQ29udGV4dFBQQzY0KAotKyAgICBjb25zdCBTaWduYWxUaHJlYWRDb250ZXh0NjQg JnRocmVhZF9jb250ZXh0LAotKyAgICBjb25zdCBTaWduYWxGbG9hdENvbnRleHQ2NCAmZmxvYXRf Y29udGV4dCwKLSsgICAgY29uc3QgU2lnbmFsVmVjdG9yQ29udGV4dDY0ICZ2ZWN0b3JfY29udGV4 dCwKLSsgICAgdHlwZW5hbWUgVHJhaXRzOjpDUFVDb250ZXh0KiBjb250ZXh0KSB7Ci0rCi0rICBt ZW1jcHkoY29udGV4dC0+cmVncywgdGhyZWFkX2NvbnRleHQucmVncywgc2l6ZW9mKGNvbnRleHQt PnJlZ3MpKTsKLSsgIGNvbnRleHQtPm5pcCA9IHRocmVhZF9jb250ZXh0Lm5pcDsKLSsgIGNvbnRl eHQtPm1zciA9IHRocmVhZF9jb250ZXh0Lm1zcjsKLSsgIGNvbnRleHQtPmNjciA9IHRocmVhZF9j b250ZXh0LmNjcjsKLSsgIGNvbnRleHQtPnhlciA9IHRocmVhZF9jb250ZXh0LnhlcjsKLSsgIGNv bnRleHQtPmxuayA9IHRocmVhZF9jb250ZXh0LmxuazsKLSsgIGNvbnRleHQtPmN0ciA9IHRocmVh ZF9jb250ZXh0LmN0cjsKLSsKLSsgIG1lbWNweShjb250ZXh0LT5mcHJlZ3MsIGZsb2F0X2NvbnRl eHQucmVncywgc2l6ZW9mKGNvbnRleHQtPmZwcmVncykpOwotKyAgY29udGV4dC0+ZnBzY3IgPSBm bG9hdF9jb250ZXh0LmZwc2NyOwotKwotKyAgZm9yICh1aW50OF90IGkgPSAwOyBpIDwgMzI7IGkr KykgewotKyAgICBjb250ZXh0LT52cmVncy5zYXZlX3ZyW2ldID0gewotKyAgICAgICgoKHVpbnQ2 NF90KXZlY3Rvcl9jb250ZXh0LnZycmVnc1tpXVswXSkgPDwgMzIpIHwKLSsgICAgICAgIHZlY3Rv cl9jb250ZXh0LnZycmVnc1tpXVsxXSwKLSsgICAgICAoKCh1aW50NjRfdCl2ZWN0b3JfY29udGV4 dC52cnJlZ3NbaV1bMl0pIDw8IDMyKSB8Ci0rICAgICAgICB2ZWN0b3JfY29udGV4dC52cnJlZ3Nb aV1bM10KLSsgICAgfTsKLSsgIH0KLSsgIGNvbnRleHQtPnZyZWdzLnNhdmVfdnJzYXZlID0gdmVj dG9yX2NvbnRleHQudnJzYXZlOwotKyAgY29udGV4dC0+dnJlZ3Muc2F2ZV92c2NyID0gezAsICh1 aW50NjRfdCl2ZWN0b3JfY29udGV4dC52c2NyLnZzY3Jfd29yZH07Ci0rfQotKwotKwotKyNlbmRp ZgotKwotIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotIH0gIC8vIG5hbWVzcGFjZSBjcmFzaHBh ZAotIAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9j cmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9kZWJ1Z19yZW5kZXp2b3VzX3Rlc3QuY2MK LSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hw YWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvZGVidWdfcmVuZGV6dm91c190ZXN0LmNjCi1AQCAt MTU5LDkgKzE1OSwxMSBAQCB2b2lkIFRlc3RBZ2FpbnN0VGFyZ2V0KFB0cmFjZUNvbm5lY3Rpb24q IGNvbm5lY3Rpb24pIHsKLSAgICAgICAgICAgY29uc3QgYm9vbCBpc192ZHNvX21hcHBpbmcgPQot ICAgICAgICAgICAgICAgZGV2aWNlID09IDAgJiYgaW5vZGUgPT0gMCAmJiBtYXBwaW5nX25hbWUg PT0gIlt2ZHNvXSI7Ci0gICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgY2hhciBrUHJlZml4W10g PSAibGludXgtdmRzby5zby4iOwotKyAgICAgICAgICBzdGF0aWMgY29uc3RleHByIGNoYXIga1By ZWZpeDY0W10gPSAibGludXgtdmRzbzY0LnNvLiI7Ci0gICAgICAgICAgIHJldHVybiBpc192ZHNv X21hcHBpbmcgPT0KLSAgICAgICAgICAgICAgICAgIChtb2R1bGVfbmFtZS5lbXB0eSgpIHx8Ci0t ICAgICAgICAgICAgICAgICAgbW9kdWxlX25hbWUuY29tcGFyZSgwLCBzdHJsZW4oa1ByZWZpeCks IGtQcmVmaXgpID09IDApOwotKyAgICAgICAgICAgICAgICAgIG1vZHVsZV9uYW1lLmNvbXBhcmUo MCwgc3RybGVuKGtQcmVmaXgpLCBrUHJlZml4KSA9PSAwIHx8Ci0rICAgICAgICAgICAgICAgICAg bW9kdWxlX25hbWUuY29tcGFyZSgwLCBzdHJsZW4oa1ByZWZpeDY0KSwga1ByZWZpeDY0KSA9PSAw KTsKLSAgICAgICAgIH0sCi0gICAgICAgICBtb2R1bGVfbWFwcGluZy0+bmFtZSwKLSAgICAgICAg IG1vZHVsZV9tYXBwaW5nLT5kZXZpY2UsCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2V4Y2Vw dGlvbl9zbmFwc2hvdF9saW51eC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9leGNlcHRp b25fc25hcHNob3RfbGludXguY2MKLUBAIC0zMjMsNiArMzIzLDY5IEBAIGJvb2wgRXhjZXB0aW9u U25hcHNob3RMaW51eDo6UmVhZENvbnRleHQ8Q29udGV4dFRyYWl0czY0PigKLSAgICAgICByZWFk ZXIsIGNvbnRleHRfYWRkcmVzcywgY29udGV4dF8ubWlwczY0KTsKLSB9Ci0gCi0rI2VsaWYgZGVm aW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0rCi0rdGVtcGxhdGUgPHR5cGVuYW1lIFRyYWl0 cz4KLStzdGF0aWMgYm9vbCBSZWFkQ29udGV4dChQcm9jZXNzUmVhZGVyTGludXgqIHJlYWRlciwK LSsgICAgICAgICAgICAgICAgICAgICAgICBMaW51eFZNQWRkcmVzcyBjb250ZXh0X2FkZHJlc3Ms Ci0rICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHJhaXRzOjpDUFVDb250ZXh0KiBk ZXN0X2NvbnRleHQpIHsKLSsgIGNvbnN0IFByb2Nlc3NNZW1vcnkqIG1lbW9yeSA9IHJlYWRlci0+ TWVtb3J5KCk7Ci0rCi0rICBMaW51eFZNQWRkcmVzcyBncF9yZWdzX2FkZHJlc3MgPSBjb250ZXh0 X2FkZHJlc3MgKwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0b2Yo VUNvbnRleHQsIG1jb250ZXh0KSArCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBvZmZzZXRvZih0eXBlbmFtZSBUcmFpdHM6Ok1Db250ZXh0LCBncF9yZWdzKTsKLSsKLSsgIHR5 cGVuYW1lIFRyYWl0czo6U2lnbmFsVGhyZWFkQ29udGV4dCB0aHJlYWRfY29udGV4dDsKLSsgIGlm ICghbWVtb3J5LT5SZWFkKGdwX3JlZ3NfYWRkcmVzcywgc2l6ZW9mKHRocmVhZF9jb250ZXh0KSwg JnRocmVhZF9jb250ZXh0KSkgewotKyAgICBMT0coRVJST1IpIDw8ICJDb3VsZG4ndCByZWFkIGdw X3JlZ3MhIjsKLSsgICAgcmV0dXJuIGZhbHNlOwotKyAgfQotKwotKyAgTGludXhWTUFkZHJlc3Mg ZnBfcmVnc19hZGRyZXNzID0gY29udGV4dF9hZGRyZXNzICsKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG9mZnNldG9mKFVDb250ZXh0LCBtY29udGV4dCkgKwotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0b2YodHlwZW5hbWUgVHJhaXRzOjpNQ29u dGV4dCwgZnBfcmVncyk7Ci0rCi0rICB0eXBlbmFtZSBUcmFpdHM6OlNpZ25hbEZsb2F0Q29udGV4 dCBmcF9jb250ZXh0OwotKyAgaWYgKCFtZW1vcnktPlJlYWQoZnBfcmVnc19hZGRyZXNzLCBzaXpl b2YoZnBfY29udGV4dCksICZmcF9jb250ZXh0KSkgewotKyAgICBMT0coRVJST1IpIDw8ICJDb3Vs ZG4ndCByZWFkIGZwX3JlZ3MhIjsKLSsgICAgcmV0dXJuIGZhbHNlOwotKyAgfQotKwotKyAgTGlu dXhWTUFkZHJlc3Mgdl9yZWdzX3B0cl9hZGRyZXNzID0gY29udGV4dF9hZGRyZXNzICsKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0b2YoVUNvbnRleHQsIG1jb250ZXh0 KSArCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldG9mKHR5cGVuYW1l IFRyYWl0czo6TUNvbnRleHQsIHZteF9yZXNlcnZlKSArIDg7Ci0rCi0rICB0eXBlbmFtZSBUcmFp dHM6OlNpZ25hbFZlY3RvckNvbnRleHQgdl9jb250ZXh0OwotKyAgaWYgKCFtZW1vcnktPlJlYWQo dl9yZWdzX3B0cl9hZGRyZXNzLCBzaXplb2Yodl9jb250ZXh0KSwgJnZfY29udGV4dCkpIHsKLSsg ICAgTE9HKEVSUk9SKSA8PCAiQ291bGRuJ3QgcmVhZCB2X3JlZ3MhIjsKLSsgICAgcmV0dXJuIGZh bHNlOwotKyAgfQotKwotKyAgSW5pdGlhbGl6ZUNQVUNvbnRleHRQUEM2NDxDb250ZXh0VHJhaXRz NjQ+KHRocmVhZF9jb250ZXh0LCBmcF9jb250ZXh0LAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICB2X2NvbnRleHQsIGRlc3RfY29udGV4dCk7Ci0rCi0rICByZXR1cm4gdHJ1ZTsKLSt9Ci0r Ci0rdGVtcGxhdGU8PgotK2Jvb2wgRXhjZXB0aW9uU25hcHNob3RMaW51eDo6UmVhZENvbnRleHQ8 Q29udGV4dFRyYWl0czY0PigKLSsgICAgUHJvY2Vzc1JlYWRlckxpbnV4KiByZWFkZXIsCi0rICAg IExpbnV4Vk1BZGRyZXNzIGNvbnRleHRfYWRkcmVzcykgewotKyAgY29udGV4dF8uYXJjaGl0ZWN0 dXJlID0ga0NQVUFyY2hpdGVjdHVyZVBQQzY0OwotKyAgY29udGV4dF8ucHBjNjQgPSAmY29udGV4 dF91bmlvbl8ucHBjNjQ7Ci0rCi0rICByZXR1cm4gaW50ZXJuYWw6OlJlYWRDb250ZXh0PENvbnRl eHRUcmFpdHM2ND4oCi0rICAgICAgcmVhZGVyLCBjb250ZXh0X2FkZHJlc3MsIGNvbnRleHRfLnBw YzY0KTsKLSt9Ci0rCi0rdGVtcGxhdGU8PgotK2Jvb2wgRXhjZXB0aW9uU25hcHNob3RMaW51eDo6 UmVhZENvbnRleHQ8Q29udGV4dFRyYWl0czMyPigKLSsgICAgUHJvY2Vzc1JlYWRlckxpbnV4KiBy ZWFkZXIsCi0rICAgIExpbnV4Vk1BZGRyZXNzIGNvbnRleHRfYWRkcmVzcykgewotKyAgLy8gUFBD NjQgaXMgNjQtYml0Ci0rICByZXR1cm4gZmFsc2U7Ci0rfQotKwotICNlbmRpZiAgLy8gQVJDSF9D UFVfWDg2X0ZBTUlMWQotIAotIGJvb2wgRXhjZXB0aW9uU25hcHNob3RMaW51eDo6SW5pdGlhbGl6 ZShQcm9jZXNzUmVhZGVyTGludXgqIHByb2Nlc3NfcmVhZGVyLAotLS0tIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hv dC9saW51eC9leGNlcHRpb25fc25hcHNob3RfbGludXguaAotKysrIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9s aW51eC9leGNlcHRpb25fc25hcHNob3RfbGludXguaAotQEAgLTg0LDYgKzg0LDggQEAgY2xhc3Mg RXhjZXB0aW9uU25hcHNob3RMaW51eCBmaW5hbCA6IHB1YmxpYyBFeGNlcHRpb25TbmFwc2hvdCB7 Ci0gI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkKLSAgICAgQ1BVQ29udGV4dE1J UFMgbWlwc2VsOwotICAgICBDUFVDb250ZXh0TUlQUzY0IG1pcHM2NDsKLSsjZWxpZiBkZWZpbmVk KEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsgICAgQ1BVQ29udGV4dFBQQzY0IHBwYzY0OwotICNl bmRpZgotICAgfSBjb250ZXh0X3VuaW9uXzsKLSAgIENQVUNvbnRleHQgY29udGV4dF87Ci0tLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2Ny YXNocGFkL3NuYXBzaG90L2xpbnV4L2V4Y2VwdGlvbl9zbmFwc2hvdF9saW51eF90ZXN0LmNjCi0r KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFk L2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2V4Y2VwdGlvbl9zbmFwc2hvdF9saW51eF90ZXN0LmNj Ci1AQCAtMjk2LDcgKzI5NiwyOCBAQCB2b2lkIEV4cGVjdENvbnRleHQoY29uc3QgQ1BVQ29udGV4 dCYgYWN0dWFsLCBjb25zdCBOYXRpdmVDUFVDb250ZXh0JiBleHBlY3RlZCkgewotICAgICAgICAg ICAgIDApOwotICN1bmRlZiBDUFVfQVJDSF9OQU1FCi0gfQotKyNlbGlmIGRlZmluZWQoQVJDSF9D UFVfUFBDNjRfRkFNSUxZKQotK3VzaW5nIE5hdGl2ZUNQVUNvbnRleHQgPSB1Y29udGV4dF90Owot KwotK3ZvaWQgSW5pdGlhbGl6ZUNvbnRleHQoTmF0aXZlQ1BVQ29udGV4dCogY29udGV4dCkgewot KyAgZm9yIChzaXplX3QgcmVnID0gMDsgcmVnIDwgMzI7ICsrcmVnKSB7Ci0rICAgIGNvbnRleHQt PnVjX21jb250ZXh0LmdwX3JlZ3NbcmVnXSA9IHJlZzsKLSsgIH0KLSsKLSsgIG1lbXNldCgmY29u dGV4dC0+dWNfbWNvbnRleHQuZnBfcmVncywgNDQsCi0rICAgICAgc2l6ZW9mKGNvbnRleHQtPnVj X21jb250ZXh0LmZwX3JlZ3MpKTsKLSt9Ci0gCi0rdm9pZCBFeHBlY3RDb250ZXh0KGNvbnN0IENQ VUNvbnRleHQmIGFjdHVhbCwgY29uc3QgTmF0aXZlQ1BVQ29udGV4dCYgZXhwZWN0ZWQpIHsKLSsg IEVYUEVDVF9FUShhY3R1YWwuYXJjaGl0ZWN0dXJlLCBrQ1BVQXJjaGl0ZWN0dXJlUFBDNjQpOwot KwotKyAgZm9yIChzaXplX3QgcmVnID0gMDsgcmVnIDwgMzI7ICsrcmVnKSB7Ci0rICAgIEVYUEVD VF9FUShhY3R1YWwucHBjNjQtPnJlZ3NbcmVnXSwgZXhwZWN0ZWQudWNfbWNvbnRleHQuZ3BfcmVn c1tyZWddKTsKLSsgIH0KLSsKLSsgIEVYUEVDVF9FUShtZW1jbXAoYWN0dWFsLnBwYzY0LT5mcHJl Z3MsIGV4cGVjdGVkLnVjX21jb250ZXh0LmZwX3JlZ3MsCi0rICAgICAgICAgICAgc2l6ZW9mKGFj dHVhbC5wcGM2NC0+ZnByZWdzKSksIDApOwotK30KLSAjZWxzZQotICNlcnJvciBQb3J0LgotICNl bmRpZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9j cmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9wcm9jZXNzX3JlYWRlcl9saW51eC5jYwot KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBh ZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9wcm9jZXNzX3JlYWRlcl9saW51eC5jYwotQEAgLTEw OCw2ICsxMDgsOCBAQCB2b2lkIFByb2Nlc3NSZWFkZXJMaW51eDo6VGhyZWFkOjpJbml0aWFsaXpl U3RhY2soUHJvY2Vzc1JlYWRlckxpbnV4KiByZWFkZXIpIHsKLSAjZWxpZiBkZWZpbmVkKEFSQ0hf Q1BVX01JUFNfRkFNSUxZKQotICAgc3RhY2tfcG9pbnRlciA9IHJlYWRlci0+SXM2NEJpdCgpID8g dGhyZWFkX2luZm8udGhyZWFkX2NvbnRleHQudDY0LnJlZ3NbMjldCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgOiB0aHJlYWRfaW5mby50aHJlYWRfY29udGV4dC50MzIucmVn c1syOV07Ci0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0rICBzdGFja19w b2ludGVyID0gdGhyZWFkX2luZm8udGhyZWFkX2NvbnRleHQudDY0LmdwclsxXTsKLSAjZWxzZQot ICNlcnJvciBQb3J0LgotICNlbmRpZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9wcm9jZXNz X3JlYWRlcl9saW51eF90ZXN0LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3Byb2Nlc3Nf cmVhZGVyX2xpbnV4X3Rlc3QuY2MKLUBAIC01OTEsNiArNTkxLDggQEAgYm9vbCBXcml0ZVRlc3RN b2R1bGUoY29uc3QgYmFzZTo6RmlsZVBhdGgmIG1vZHVsZV9wYXRoKSB7Ci0gICBtb2R1bGUuZWhk ci5lX21hY2hpbmUgPSBFTV9BQVJDSDY0OwotICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU0VM KSB8fCBkZWZpbmVkKEFSQ0hfQ1BVX01JUFM2NEVMKQotICAgbW9kdWxlLmVoZHIuZV9tYWNoaW5l ID0gRU1fTUlQUzsKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQotKyAgbW9kdWxlLmVo ZHIuZV9tYWNoaW5lID0gRU1fUFBDNjQ7Ci0gI2VuZGlmCi0gCi0gICBtb2R1bGUuZWhkci5lX3Zl cnNpb24gPSBFVl9DVVJSRU5UOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9zaWduYWxfY29u dGV4dC5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3NpZ25hbF9jb250ZXh0LmgKLUBAIC00 MjIsNiArNDIyLDg5IEBAIHN0YXRpY19hc3NlcnQob2Zmc2V0b2YoVUNvbnRleHQ8Q29udGV4dFRy YWl0czY0PiwgbWNvbnRleHQuZnByZWdzKSA9PQotICAgICAgICAgICAgICAgImNvbnRleHQgb2Zm c2V0IG1pc21hdGNoIik7Ci0gI2VuZGlmCi0gCi0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2 NF9GQU1JTFkpCi0rCi0rc3RydWN0IFNpZ25hbFRocmVhZENvbnRleHQ2NCB7Ci0rICB1aW50NjRf dCByZWdzWzMyXTsKLSsgIHVpbnQ2NF90IG5pcDsKLSsgIHVpbnQ2NF90IG1zcjsKLSsgIHVpbnQ2 NF90IG9yaWdfcjM7Ci0rICB1aW50NjRfdCBjdHI7Ci0rICB1aW50NjRfdCBsbms7Ci0rICB1aW50 NjRfdCB4ZXI7Ci0rICB1aW50NjRfdCBjY3I7Ci0rICB1aW50NjRfdCBzb2Z0ZTsKLSsgIHVpbnQ2 NF90IHRyYXA7Ci0rICB1aW50NjRfdCBkYXI7Ci0rICB1aW50NjRfdCBkc2lzcjsKLSsgIHVpbnQ2 NF90IHJlc3VsdDsKLSsgIHVpbnQ2NF90IGRzY3I7Ci0rICB1aW50NjRfdCBmcHIwWzNdOwotK307 Ci0rCi0rc3RydWN0IFNpZ25hbEZsb2F0Q29udGV4dDY0IHsKLSsgIGRvdWJsZSByZWdzWzMyXTsK LSsgIGRvdWJsZSBmcHNjcjsKLSt9OwotKwotK3N0cnVjdCBTaWduYWxWZWN0b3JDb250ZXh0NjQg ewotKyAgaW50MzJfdCB2cnJlZ3NbMzJdWzRdOwotKyAgc3RydWN0IHsKLSsgICAgaW50MzJfdCBf X3BhZFszXTsKLSsgICAgaW50MzJfdCB2c2NyX3dvcmQ7Ci0rICB9IHZzY3I7Ci0rICBpbnQzMl90 IHZyc2F2ZTsKLSsgIGludDMyX3QgX19wYWRbM107Ci0rfSBfX2F0dHJpYnV0ZV9fKChfX2FsaWdu ZWRfXygxNikpKTsKLSsKLSsKLSsjcHJhZ21hIHBhY2socG9wKQotK3N0cnVjdCBNQ29udGV4dDY0 IHsKLSsgIHVpbnQ2NF90IHJlc2VydmVkWzRdOwotKyAgaW50MzJfdCBzaWduYWw7Ci0rICBpbnQz Ml90IF9fcGFkMDsKLSsgIHVpbnQ2NF90IGhhbmRsZXI7Ci0rICB1aW50NjRfdCBvbGRtYXNrOwot KyAgdWludDY0X3QgcHRfcmVnc19wdHI7Ci0rICBTaWduYWxUaHJlYWRDb250ZXh0NjQgZ3BfcmVn czsKLSsgIFNpZ25hbEZsb2F0Q29udGV4dDY0ICBmcF9yZWdzOwotKyAgU2lnbmFsVmVjdG9yQ29u dGV4dDY0ICp2X3JlZ3M7Ci0rICBpbnQ2NF90IHZteF9yZXNlcnZlWzY5XTsKLSt9OwotKwotK3N0 cnVjdCBDb250ZXh0VHJhaXRzNjQgOiBwdWJsaWMgVHJhaXRzNjQgewotKyAgdXNpbmcgTUNvbnRl eHQgPSBNQ29udGV4dDY0OwotKyAgdXNpbmcgU2lnbmFsVGhyZWFkQ29udGV4dCA9IFNpZ25hbFRo cmVhZENvbnRleHQ2NDsKLSsgIHVzaW5nIFNpZ25hbEZsb2F0Q29udGV4dCA9IFNpZ25hbEZsb2F0 Q29udGV4dDY0OwotKyAgdXNpbmcgU2lnbmFsVmVjdG9yQ29udGV4dCA9IFNpZ25hbFZlY3RvckNv bnRleHQ2NDsKLSsgIHVzaW5nIENQVUNvbnRleHQgPSBDUFVDb250ZXh0UFBDNjQ7Ci0rfTsKLSsK LStzdHJ1Y3QgQ29udGV4dFRyYWl0czMyIDogcHVibGljIFRyYWl0czMyIHt9OwotKwotK3N0cnVj dCBVQ29udGV4dCB7Ci0rICB1aW50NjRfdCBmbGFnczsKLSsgIHVpbnQ2NF90IGxpbms7Ci0rICBT aWduYWxTdGFjazxDb250ZXh0VHJhaXRzNjQ+IHN0YWNrOwotKyAgU2lnc2V0PENvbnRleHRUcmFp dHM2ND4gc2lnbWFzazsKLSsgIE1Db250ZXh0NjQgbWNvbnRleHQ7Ci0rfTsKLSsjcHJhZ21hIHBh Y2socHVzaCwgMSkKLSsKLStzdGF0aWNfYXNzZXJ0KHNpemVvZihVQ29udGV4dCkgPT0gc2l6ZW9m KHVjb250ZXh0X3QpLAotKyAgICAgICAgICAgICAgInVjb250ZXh0X3Qgc2l6ZSBtaXNtYXRjaCIp OwotK3N0YXRpY19hc3NlcnQoc2l6ZW9mKE1Db250ZXh0NjQpID09IHNpemVvZihtY29udGV4dF90 KSwKLSsgICAgICAgICAgICAgICJtY29udGV4dF90IHNpemUgbWlzbWF0Y2giKTsKLStzdGF0aWNf YXNzZXJ0KHNpemVvZihTaWduYWxUaHJlYWRDb250ZXh0NjQpID09IHNpemVvZihncmVnc2V0X3Qp LAotKyAgICAgICAgICAgICAgImdyZWdzZXRfdCBzaXplIG1pc21hdGNoIik7Ci0rc3RhdGljX2Fz c2VydChzaXplb2YoU2lnbmFsRmxvYXRDb250ZXh0NjQpID09IHNpemVvZihmcHJlZ3NldF90KSwK LSsgICAgICAgICAgICAgICJmcHJlZ3NldF90IHNpemUgbWlzbWF0Y2giKTsKLStzdGF0aWNfYXNz ZXJ0KHNpemVvZihTaWduYWxWZWN0b3JDb250ZXh0NjQpID09IHNpemVvZihfbGliY192cnN0YXRl KSwKLSsgICAgICAgICAgICAgICJ2cnN0YXRlIHNpemUgbWlzbWF0Y2giKTsKLStzdGF0aWNfYXNz ZXJ0KG9mZnNldG9mKFVDb250ZXh0LCBtY29udGV4dCkgPT0KLSsgICAgICAgICAgICAgIG9mZnNl dG9mKHVjb250ZXh0X3QsIHVjX21jb250ZXh0KSwgIm1jb250ZXh0IG9mZnNldCBtaXNtYXRjaCIp OwotK3N0YXRpY19hc3NlcnQob2Zmc2V0b2YoTUNvbnRleHQ2NCwgZ3BfcmVncykgPT0KLSsgICAg ICAgICAgICAgIG9mZnNldG9mKG1jb250ZXh0X3QsIGdwX3JlZ3MpLCAiZ3BfcmVncyBvZmZzZXQg bWlzbWF0Y2giKTsKLSAjZWxzZQotICNlcnJvciBQb3J0LgotICNlbmRpZiAgLy8gQVJDSF9DUFVf WDg2X0ZBTUlMWQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9zeXN0ZW1fc25hcHNob3RfbGlu dXguY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv Y3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvc3lzdGVtX3NuYXBzaG90X2xpbnV4LmNj Ci1AQCAtMjAzLDYgKzIwMyw4IEBAIENQVUFyY2hpdGVjdHVyZSBTeXN0ZW1TbmFwc2hvdExpbnV4 OjpHZXRDUFVBcmNoaXRlY3R1cmUoKSBjb25zdCB7Ci0gI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9N SVBTX0ZBTUlMWSkKLSAgIHJldHVybiBwcm9jZXNzX3JlYWRlcl8tPklzNjRCaXQoKSA/IGtDUFVB cmNoaXRlY3R1cmVNSVBTNjRFTAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDoga0NQVUFyY2hpdGVjdHVyZU1JUFNFTDsKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0 X0ZBTUlMWSkKLSsgIHJldHVybiBrQ1BVQXJjaGl0ZWN0dXJlUFBDNjQ7Ci0gI2Vsc2UKLSAjZXJy b3IgcG9ydCB0byB5b3VyIGFyY2hpdGVjdHVyZQotICNlbmRpZgotQEAgLTIxOCw2ICsyMjAsOSBA QCB1aW50MzJfdCBTeXN0ZW1TbmFwc2hvdExpbnV4OjpDUFVSZXZpc2lvbigpIGNvbnN0IHsKLSAj ZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQotICAgLy8gTm90IGltcGxlbWVudGFi bGUgb24gTUlQUwotICAgcmV0dXJuIDA7Ci0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9G QU1JTFkpCi0rICAvLyBOb3QgeWV0IGltcGxlbWVudGVkIG9uIFBQQzY0Ci0rICByZXR1cm4gMDsK LSAjZWxzZQotICNlcnJvciBwb3J0IHRvIHlvdXIgYXJjaGl0ZWN0dXJlCi0gI2VuZGlmCi1AQCAt MjM4LDYgKzI0Myw5IEBAIHN0ZDo6c3RyaW5nIFN5c3RlbVNuYXBzaG90TGludXg6OkNQVVZlbmRv cigpIGNvbnN0IHsKLSAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQotICAgLy8g Tm90IGltcGxlbWVudGFibGUgb24gTUlQUwotICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCk7Ci0rI2Vs aWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0rICAvLyBOb3QgeWV0IGltcGxlbWVu dGVkIG9uIFBQQzY0Ci0rICByZXR1cm4gc3RkOjpzdHJpbmcoKTsKLSAjZWxzZQotICNlcnJvciBw b3J0IHRvIHlvdXIgYXJjaGl0ZWN0dXJlCi0gI2VuZGlmCi1AQCAtMzcxLDYgKzM3OSw5IEBAIGJv b2wgU3lzdGVtU25hcHNob3RMaW51eDo6TlhFbmFibGVkKCkgY29uc3QgewotICNlbGlmIGRlZmlu ZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCi0gICAvLyBOb3QgaW1wbGVtZW50YWJsZSBvbiBNSVBT Ci0gICByZXR1cm4gZmFsc2U7Ci0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkp Ci0rICAvLyBOb3QgeWV0IGltcGxlbWVudGVkIG9uIFBQQzY0Ci0rICByZXR1cm4gZmFsc2U7Ci0g I2Vsc2UKLSAjZXJyb3IgUG9ydC4KLSAjZW5kaWYgIC8vIEFSQ0hfQ1BVX1g4Nl9GQU1JTFkKLS0t LSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQv Y3Jhc2hwYWQvc25hcHNob3QvbGludXgvdGhyZWFkX3NuYXBzaG90X2xpbnV4LmNjCi0rKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNo cGFkL3NuYXBzaG90L2xpbnV4L3RocmVhZF9zbmFwc2hvdF9saW51eC5jYwotQEAgLTE4Niw2ICsx ODYsMTQgQEAgYm9vbCBUaHJlYWRTbmFwc2hvdExpbnV4OjpJbml0aWFsaXplKFByb2Nlc3NSZWFk ZXJMaW51eCogcHJvY2Vzc19yZWFkZXIsCi0gICAgICAgICB0aHJlYWQudGhyZWFkX2luZm8uZmxv YXRfY29udGV4dC5mMzIsCi0gICAgICAgICBjb250ZXh0Xy5taXBzZWwpOwotICAgfQotKyNlbGlm IGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKyAgY29udGV4dF8uYXJjaGl0ZWN0dXJl ID0ga0NQVUFyY2hpdGVjdHVyZVBQQzY0OwotKyAgY29udGV4dF8ucHBjNjQgPSAmY29udGV4dF91 bmlvbl8ucHBjNjQ7Ci0rICBJbml0aWFsaXplQ1BVQ29udGV4dFBQQzY0PENvbnRleHRUcmFpdHM2 ND4oCi0rICAgICAgdGhyZWFkLnRocmVhZF9pbmZvLnRocmVhZF9jb250ZXh0LnQ2NCwKLSsgICAg ICB0aHJlYWQudGhyZWFkX2luZm8uZmxvYXRfY29udGV4dC5mNjQsCi0rICAgICAgdGhyZWFkLnRo cmVhZF9pbmZvLnZlY3Rvcl9jb250ZXh0LnY2NCwKLSsgICAgICBjb250ZXh0Xy5wcGM2NCk7Ci0g I2Vsc2UKLSAjZXJyb3IgUG9ydC4KLSAjZW5kaWYKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgv dGhyZWFkX3NuYXBzaG90X2xpbnV4LmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvdGhyZWFk X3NuYXBzaG90X2xpbnV4LmgKLUBAIC02OCw2ICs2OCw4IEBAIGNsYXNzIFRocmVhZFNuYXBzaG90 TGludXggZmluYWwgOiBwdWJsaWMgVGhyZWFkU25hcHNob3QgewotICNlbGlmIGRlZmluZWQoQVJD SF9DUFVfTUlQU19GQU1JTFkpCi0gICAgIENQVUNvbnRleHRNSVBTIG1pcHNlbDsKLSAgICAgQ1BV Q29udGV4dE1JUFM2NCBtaXBzNjQ7Ci0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1J TFkpCi0rICAgIENQVUNvbnRleHRQUEM2NCBwcGM2NDsKLSAjZWxzZQotICNlcnJvciBQb3J0Lgot ICNlbmRpZiAgLy8gQVJDSF9DUFVfWDg2X0ZBTUlMWQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL2xpbnV4L2F1 eGlsaWFyeV92ZWN0b3IuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9saW51eC9hdXhpbGlhcnlfdmVjdG9y LmNjCi1AQCAtNTYsNiArNTYsMTEgQEAgYm9vbCBBdXhpbGlhcnlWZWN0b3I6OlJlYWQoUHRyYWNl Q29ubmVjdGlvbiogY29ubmVjdGlvbikgewotICAgICBpZiAodHlwZSA9PSBBVF9JR05PUkUpIHsK LSAgICAgICBjb250aW51ZTsKLSAgICAgfQotKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZB TUlMWSkKLSsgICAgaWYgKHR5cGUgPT0gQVRfSUdOT1JFUFBDKSB7Ci0rICAgICAgY29udGludWU7 Ci0rICAgIH0KLSsjZW5kaWYKLSAgICAgaWYgKCFNYXBJbnNlcnRPclJlcGxhY2UoJnZhbHVlc18s IHR5cGUsIHZhbHVlLCBudWxscHRyKSkgewotICAgICAgIExPRyhFUlJPUikgPDwgImR1cGxpY2F0 ZSBhdXh2IGVudHJ5IjsKLSAgICAgICByZXR1cm4gZmFsc2U7Ci0tLS0gcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGlu dXgvcHRyYWNlX2Jyb2tlci5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL2xpbnV4L3B0cmFjZV9icm9rZXIu Y2MKLUBAIC05Myw4ICs5Myw4IEBAIGludCBQdHJhY2VCcm9rZXI6OlJ1bigpIHsKLSB9Ci0gCi0g Ym9vbCBQdHJhY2VCcm9rZXI6OkFsbG9jYXRlQXR0YWNobWVudHMoKSB7Ci0tICBjb25zdGV4cHIg c2l6ZV90IHBhZ2Vfc2l6ZSA9IDQwOTY7Ci0tICBjb25zdGV4cHIgc2l6ZV90IGFsbG9jX3NpemUg PQotKyAgc3RhdGljIHNpemVfdCBwYWdlX3NpemUgPSBnZXRwYWdlc2l6ZSgpOwotKyAgc2l6ZV90 IGFsbG9jX3NpemUgPQotICAgICAgIChzaXplb2YoU2NvcGVkUHRyYWNlQXR0YWNoKSArIHBhZ2Vf c2l6ZSAtIDEpICYgfihwYWdlX3NpemUgLSAxKTsKLSAgIHZvaWQqIGFsbG9jID0gc2JyayhhbGxv Y19zaXplKTsKLSAgIGlmIChyZWludGVycHJldF9jYXN0PGludHB0cl90PihhbGxvYykgPT0gLTEp IHsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jh c2hwYWQvY3Jhc2hwYWQvdXRpbC9saW51eC9wdHJhY2VyLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGlu dXgvcHRyYWNlci5jYwotQEAgLTM5NCw2ICszOTQsNjQgQEAgYm9vbCBHZXRUaHJlYWRBcmVhNjQo cGlkX3QgdGlkLAotICAgcmV0dXJuIHRydWU7Ci0gfQotIAotKyNlbGlmIGRlZmluZWQoQVJDSF9D UFVfUFBDNjRfRkFNSUxZKQotKy8vIFBQQzY0IGhhcyBoYWQgSEFWRV9BUkNIX1RSQUNFSE9PSyBz ZXQgc2luY2UgMi42LjI3IChldmVuIGJlZm9yZSB4ODYgaGFkIGl0KS4KLSsvLyBUaGF0IG1lYW5z IHdlIGNhbiBzaW1wbHkgdXNlIFBUUkFDRV9HRVRSRUdFU0VULgotKwotK3RlbXBsYXRlIDx0eXBl bmFtZSBEZXN0aW5hdGlvbj4KLStib29sIEdldFJlZ2lzdGVyU2V0KHBpZF90IHRpZCwgaW50IHNl dCwgRGVzdGluYXRpb24qIGRlc3QsIGJvb2wgY2FuX2xvZykgewotKyAgaW92ZWMgaW92OwotKyAg aW92Lmlvdl9iYXNlID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZGVzdCk7Ci0rICBpb3YuaW92 X2xlbiA9IHNpemVvZigqZGVzdCk7Ci0rICBpZiAocHRyYWNlKFBUUkFDRV9HRVRSRUdTRVQsIHRp ZCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc2V0KSwgJmlvdikgIT0gMCkgewotKyAgICBQTE9H X0lGKEVSUk9SLCBjYW5fbG9nKSA8PCAicHRyYWNlIjsKLSsgICAgcmV0dXJuIGZhbHNlOwotKyAg fQotKyAgaWYgKGlvdi5pb3ZfbGVuICE9IHNpemVvZigqZGVzdCkpIHsKLSsgICAgTE9HX0lGKEVS Uk9SLCBjYW5fbG9nKSA8PCAiVW5leHBlY3RlZCByZWdpc3RlcnMgc2l6ZSI7Ci0rICAgIHJldHVy biBmYWxzZTsKLSsgIH0KLSsgIHJldHVybiB0cnVlOwotK30KLSsKLStib29sIEdldFZlY3RvclJl Z2lzdGVyczY0KHBpZF90IHRpZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3RvckNv bnRleHQqIGNvbnRleHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNhbl9sb2cp IHsKLSsgIHJldHVybiBHZXRSZWdpc3RlclNldCh0aWQsIE5UX1BQQ19WTVgsICZjb250ZXh0LT52 NjQsIGNhbl9sb2cpOwotK30KLSsKLStib29sIEdldEZsb2F0aW5nUG9pbnRSZWdpc3RlcnM2NChw aWRfdCB0aWQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRDb250ZXh0 KiBjb250ZXh0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuX2xv ZykgewotKyAgcmV0dXJuIEdldFJlZ2lzdGVyU2V0KHRpZCwgTlRfUFJGUFJFRywgJmNvbnRleHQt PmY2NCwgY2FuX2xvZyk7Ci0rfQotKwotK2Jvb2wgR2V0VGhyZWFkQXJlYTY0KHBpZF90IHRpZCwK LSsgICAgICAgICAgICAgICAgICAgICBjb25zdCBUaHJlYWRDb250ZXh0JiBjb250ZXh0LAotKyAg ICAgICAgICAgICAgICAgICAgIExpbnV4Vk1BZGRyZXNzKiBhZGRyZXNzLAotKyAgICAgICAgICAg ICAgICAgICAgIGJvb2wgY2FuX2xvZykgewotKyAgLy8gUFBDNjQgZG9lc24ndCBoYXZlIFBUUkFD RV9HRVRfVEhSRUFEX0FSRUEgc2luY2UgdGhlIHRocmVhZCBwb2ludGVyCi0rICAvLyBpcyBzdG9y ZWQgaW4gR1BSIDEzLgotKyAgVGhyZWFkQ29udGV4dDo6dDY0X3QgdGM7Ci0rICBpZiAoIUdldFJl Z2lzdGVyU2V0KHRpZCwgTlRfUFJTVEFUVVMsICZ0YywgY2FuX2xvZykpIHsKLSsgICAgTE9HX0lG KEVSUk9SLCBjYW5fbG9nKSA8PCAiVW5hYmxlIHRvIGdldCB0aHJlYWQgcG9pbnRlciEiOwotKyAg ICByZXR1cm4gZmFsc2U7Ci0rICB9Ci0rCi0rICAqYWRkcmVzcyA9IHRjLmdwclsxM107Ci0rCi0r ICByZXR1cm4gdHJ1ZTsKLSt9Ci0rCi0rLy8gU3R1YnMgZm9yIDMyLWJpdCBmdW5jdGlvbnMgbm90 IGFwcGxpY2FibGUgb24gUFBDNjQKLStib29sIEdldEZsb2F0aW5nUG9pbnRSZWdpc3RlcnMzMihw aWRfdCB0aWQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRDb250ZXh0 KiBjb250ZXh0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuX2xv ZykgeyByZXR1cm4gZmFsc2U7IH0KLStib29sIEdldFRocmVhZEFyZWEzMihwaWRfdCB0aWQsCi0r ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGhyZWFkQ29udGV4dCAmY29udGV4dCwKLSsgICAg ICAgICAgICAgICAgICAgICBMaW51eFZNQWRkcmVzcyAqYWRkcmVzcywKLSsgICAgICAgICAgICAg ICAgICAgICBib29sIGNhbl9sb2cpIHsgcmV0dXJuIGZhbHNlOyB9Ci0rCi0gI2Vsc2UKLSAjZXJy b3IgUG9ydC4KLSAjZW5kaWYgIC8vIEFSQ0hfQ1BVX1g4Nl9GQU1JTFkKLUBAIC00ODYsNiArNTQ0 LDkgQEAgYm9vbCBQdHJhY2VyOjpHZXRUaHJlYWRJbmZvKHBpZF90IHRpZCwgVGhyZWFkSW5mbyog aW5mbykgewotICAgaWYgKGlzXzY0X2JpdF8pIHsKLSAgICAgcmV0dXJuIEdldEdlbmVyYWxQdXJw b3NlUmVnaXN0ZXJzNjQodGlkLCAmaW5mby0+dGhyZWFkX2NvbnRleHQsIGNhbl9sb2dfKSAmJgot ICAgICAgICAgICAgR2V0RmxvYXRpbmdQb2ludFJlZ2lzdGVyczY0KHRpZCwgJmluZm8tPmZsb2F0 X2NvbnRleHQsIGNhbl9sb2dfKSAmJgotKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlM WSkKLSsgICAgICAgICAgIEdldFZlY3RvclJlZ2lzdGVyczY0KHRpZCwgJmluZm8tPnZlY3Rvcl9j b250ZXh0LCBjYW5fbG9nXykgJiYKLSsjZW5kaWYKLSAgICAgICAgICAgIEdldFRocmVhZEFyZWE2 NCh0aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby0+dGhyZWFkX2NvbnRleHQs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJmluZm8tPnRocmVhZF9zcGVjaWZpY19kYXRh X2FkZHJlc3MsCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGludXgvdGhyZWFkX2luZm8uaAotKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBh ZC91dGlsL2xpbnV4L3RocmVhZF9pbmZvLmgKLUBAIC0yOCw2ICsyOCwxMCBAQAotICNpbmNsdWRl IDxhbmRyb2lkL2FwaS1sZXZlbC5oPgotICNlbmRpZgotIAotKyNpZiBkZWZpbmVkKEFSQ0hfQ1BV X1BQQzY0X0ZBTUlMWSkKLSsjaW5jbHVkZSA8c3lzL3Vjb250ZXh0Lmg+Ci0rI2VuZGlmCi0rCi0g bmFtZXNwYWNlIGNyYXNocGFkIHsKLSAKLSAvLyEgXGJyaWVmIFRoZSBzZXQgb2YgZ2VuZXJhbCBw dXJwb3NlIHJlZ2lzdGVycyBmb3IgYW4gYXJjaGl0ZWN0dXJlIGZhbWlseS4KLUBAIC03OSw2ICs4 Myw4IEBAIHVuaW9uIFRocmVhZENvbnRleHQgewotICAgICB1aW50MzJfdCBjcDBfc3RhdHVzOwot ICAgICB1aW50MzJfdCBjcDBfY2F1c2U7Ci0gICAgIHVpbnQzMl90IHBhZGRpbmcxXzsKLSsjZWxp ZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsgICAgLy8gUFBDNjQgaXMgNjQtYml0 Ci0gI2Vsc2UKLSAjZXJyb3IgUG9ydC4KLSAjZW5kaWYgIC8vIEFSQ0hfQ1BVX1g4Nl9GQU1JTFkK LUBAIC0xMzIsNiArMTM4LDIxIEBAIHVuaW9uIFRocmVhZENvbnRleHQgewotICAgICB1aW50NjRf dCBjcDBfYmFkdmFkZHI7Ci0gICAgIHVpbnQ2NF90IGNwMF9zdGF0dXM7Ci0gICAgIHVpbnQ2NF90 IGNwMF9jYXVzZTsKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsgICAg Ly8gUmVmbGVjdHMgc3RydWN0IHB0X3JlZ3MgaW4gYXNtL3B0cmFjZS5oLgotKyAgICB1aW50NjRf dCBncHJbMzJdOwotKyAgICB1aW50NjRfdCBuaXA7Ci0rICAgIHVpbnQ2NF90IG1zcjsKLSsgICAg dWludDY0X3Qgb3JpZ19ncHIzOwotKyAgICB1aW50NjRfdCBjdHI7Ci0rICAgIHVpbnQ2NF90IGxu azsKLSsgICAgdWludDY0X3QgeGVyOwotKyAgICB1aW50NjRfdCBjY3I7Ci0rICAgIHVpbnQ2NF90 IHNvZnRlOwotKyAgICB1aW50NjRfdCB0cmFwOwotKyAgICB1aW50NjRfdCBkYXI7Ci0rICAgIHVp bnQ2NF90IGRzaXNyOwotKyAgICB1aW50NjRfdCByZXN1bHQ7Ci0gI2Vsc2UKLSAjZXJyb3IgUG9y dC4KLSAjZW5kaWYgIC8vIEFSQ0hfQ1BVX1g4Nl9GQU1JTFkKLUBAIC0xNDMsNiArMTY0LDggQEAg dW5pb24gVGhyZWFkQ29udGV4dCB7Ci0gICB1c2luZyBOYXRpdmVUaHJlYWRDb250ZXh0ID0gdXNl cl9yZWdzOwotICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCi0gLy8gTm8gYXBw cm9wcmlhdGUgTmF0aXZlVGhyZWFkc0NvbnRleHQgdHlwZSBhdmFpbGFibGUgZm9yIE1JUFMKLSsj ZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsgIHVzaW5nIE5hdGl2ZVRocmVh ZENvbnRleHQgPSBzdHJ1Y3QgcHRfcmVnczsKLSAjZWxzZQotICNlcnJvciBQb3J0LgotICNlbmRp ZiAgLy8gQVJDSF9DUFVfWDg2X0ZBTUlMWSB8fCBBUkNIX0NQVV9BUk02NAotQEAgLTIxOCw2ICsy NDEsOSBAQCB1bmlvbiBGbG9hdENvbnRleHQgewotICAgICB9IGZwcmVnc1szMl07Ci0gICAgIHVp bnQzMl90IGZwY3NyOwotICAgICB1aW50MzJfdCBmcHVfaWQ7Ci0rI2VsaWYgZGVmaW5lZChBUkNI X0NQVV9QUEM2NF9GQU1JTFkpCi0rICAgIC8vIENyYXNocGFkJ3MgUFBDIHN1cHBvcnQgaXMgNjQt Yml0IG9ubHksIHNvIHRoaXMKLSsgICAgLy8gMzJiaXQtb25seSBzdHJ1Y3QgaXMgZGVjbGFyZWQg YXMgZW1wdHkuCi0gI2Vsc2UKLSAjZXJyb3IgUG9ydC4KLSAjZW5kaWYgIC8vIEFSQ0hfQ1BVX1g4 Nl9GQU1JTFkKLUBAIC0yNTIsNiArMjc4LDEwIEBAIHVuaW9uIEZsb2F0Q29udGV4dCB7Ci0gICAg IGRvdWJsZSBmcHJlZ3NbMzJdOwotICAgICB1aW50MzJfdCBmcGNzcjsKLSAgICAgdWludDMyX3Qg ZnB1X2lkOwotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKyAgICAvLyBS ZWZsZWN0cyBmcHJlZ3NldF90IGluIHN5cy91Y29udGV4dC5oCi0rICAgIGRvdWJsZSBmcHJlZ3Nb MzJdOwotKyAgICBkb3VibGUgZnBzY3I7Ci0gI2Vsc2UKLSAjZXJyb3IgUG9ydC4KLSAjZW5kaWYg IC8vIEFSQ0hfQ1BVX1g4Nl9GQU1JTFkKLUBAIC0yODAsNiArMzEwLDggQEAgdW5pb24gRmxvYXRD b250ZXh0IHsKLSAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGY2NCkgPT0gc2l6ZW9mKHVzZXJfZnBz aW1kX3N0cnVjdCksICJTaXplIG1pc21hdGNoIik7Ci0gI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9N SVBTX0ZBTUlMWSkKLSAvLyBObyBhcHByb3ByaWF0ZSBmbG9hdGluZyBwb2ludCBjb250ZXh0IG5h dGl2ZSB0eXBlIGZvciBhdmFpbGFibGUgTUlQUy4KLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQ QzY0X0ZBTUlMWSkKLSsgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGY2NCkgPT0gc2l6ZW9mKGZwcmVn c2V0X3QpLCAiU2l6ZSBtaXNtYXRjaCIpOwotICNlbHNlCi0gI2Vycm9yIFBvcnQuCi0gI2VuZGlm ICAvLyBBUkNIX0NQVV9YODYKLUBAIC0yODcsNiArMzE5LDI2IEBAIHVuaW9uIEZsb2F0Q29udGV4 dCB7Ci0gc3RhdGljX2Fzc2VydChzdGQ6OmlzX3N0YW5kYXJkX2xheW91dDxGbG9hdENvbnRleHQ+ Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICJOb3Qgc3RhbmRhcmQgbGF5b3V0Iik7Ci0gCi0rLy8h IFxicmllZiBUaGUgdmVjdG9yIHJlZ2lzdGVycyB1c2VkIGZvciBhbiBhcmNoaXRlY3R1cmUgZmFt aWx5Ci0rdW5pb24gVmVjdG9yQ29udGV4dCB7Ci0rICBzdHJ1Y3QgdjMyX3Qge30gdjMyOwotKyNp ZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsgIF9fYXR0cmlidXRlX18oKF9fYWxp Z25lZF9fKDE2KSkpIC8vIFZlY3RvciBjb250ZXh0IG11c3QgYmUgZG91Ymxld29yZCBhbGlnbmVk LgotKyNlbmRpZgotKyAgc3RydWN0IHY2NF90IHsKLSsjaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2 NF9GQU1JTFkpCi0rICAgIC8vIFJlZmxlY3RzIHZycmVnc2V0X3QgaW4gc3lzL3Vjb250ZXh0LmgK LSsgICAgdWludDMyX3QgdnJyZWdzWzMyXVs0XTsKLSsgICAgc3RydWN0IHsKLSsgICAgICB1aW50 MzJfdCBfX3BhZFszXTsKLSsgICAgICB1aW50MzJfdCB2c2NyX3dvcmQ7Ci0rICAgIH0gdnNjcjsK LSsgICAgdWludDMyX3QgdnJzYXZlOwotKyAgICB1aW50MzJfdCBfX3BhZFszXTsKLSsjZW5kaWYK LSsgIH0gdjY0OwotK307Ci0rCi0gLy8hIFxicmllZiBBIGNvbGxlY3Rpb24gb2YgYHB0cmFjZWAt YWJsZSBpbmZvcm1hdGlvbiBhYm91dCBhIHRocmVhZC4KLSBzdHJ1Y3QgVGhyZWFkSW5mbyB7Ci0g ICBUaHJlYWRJbmZvKCk7Ci1AQCAtMjk4LDYgKzM1MCw5IEBAIHN0cnVjdCBUaHJlYWRJbmZvIHsK LSAgIC8vISBcYnJpZWYgVGhlIGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycyBmb3IgdGhlIHRocmVh ZC4KLSAgIEZsb2F0Q29udGV4dCBmbG9hdF9jb250ZXh0OwotIAotKyAgLy8hIFxicmllZiAoT3B0 aW9uYWwpIFRoZSB2ZWN0b3IgcmVnaXN0ZXJzIHVzZWQgZm9yIHRoZSB0aHJlYWQuCi0rICBWZWN0 b3JDb250ZXh0IHZlY3Rvcl9jb250ZXh0OwotKwotICAgLy8hIFxicmllZiBUaGUgdGhyZWFkLWxv Y2FsIHN0b3JhZ2UgYWRkcmVzcyBmb3IgdGhlIHRocmVhZC4KLSAgIExpbnV4Vk1BZGRyZXNzIHRo cmVhZF9zcGVjaWZpY19kYXRhX2FkZHJlc3M7Ci0gfTsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9taXNjL2Nh cHR1cmVfY29udGV4dC5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHQuaAot QEAgLTY2LDYgKzY2LDcgQEAgdXNpbmcgTmF0aXZlQ1BVQ29udGV4dCA9IHVjb250ZXh0X3Q7Ci0g Ly8hICAgICBtYWNPUy9MaW51eC9GdWNoc2lhIHwgeDg2XzY0ICAgICAgIHwgYCUlcmRpYAotIC8v ISAgICAgTGludXggICAgICAgICAgICAgICB8IEFSTS9BUk02NCAgICB8IGByMGAvYHgwYAotIC8v ISAgICAgTGludXggICAgICAgICAgICAgICB8IE1JUFMvTUlQUzY0ICB8IGAkYTBgCi0rLy8hICAg ICBMaW51eCAgICAgICAgICAgICAgIHwgUFBDNjQgICAgICAgIHwgYHIzYAotIC8vIQotIC8vISAg ICAgQWRkaXRpb25hbGx5LCB0aGUgdmFsdWUgYExSYCBvbiBBUk0vQVJNNjQgd2lsbCBiZSB0aGUg cmV0dXJuIGFkZHJlc3Mgb2YKLSAvLyEgICAgIHRoaXMgZnVuY3Rpb24uCi0tLS0gcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0 aWwvbWlzYy9jYXB0dXJlX2NvbnRleHRfbGludXguUwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL21pc2MvY2Fw dHVyZV9jb250ZXh0X2xpbnV4LlMKLUBAIC0yOCw3ICsyOCw3IEBACi0gICAuZ2xvYmwgQ0FQVFVS RUNPTlRFWFRfU1lNQk9MMgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2 XzY0X18pCi0gICAuYmFsaWduIDE2LCAweDkwCi0tI2VsaWYgZGVmaW5lZChfX2FybV9fKSB8fCBk ZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQotKyNlbGlmIGRlZmluZWQo X19hcm1fXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgLmJhbGlnbiA0LCAweDAKLSAjZW5kaWYKLSAKLUBA IC00MTksNCArNDE5LDIxNCBAQCBDQVBUVVJFQ09OVEVYVF9TWU1CT0wyOgotICAganIgJHJhCi0g Ci0gICAuc2V0IGF0Ci0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgLy8gU3RvcmUg cjAtcjMxCi0rICBzdGQgMCwgMHhlOCgzKSAgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3Jl Z3NbMF0KLSsgIHN0ZCAxLCAweGYwKDMpICAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVn c1sxXQotKyAgc3RkIDIsIDB4ZjgoMykgICAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdz WzJdCi0rICAvLyBub3RlIHRoYXQgcjMncyBvcmlnaW5hbCB2YWx1ZSB3YXMgbG9zdAotKyAgc3Rk IDMsIDB4MTAwKDMpICAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzNdCi0rICBzdGQg NCwgMHgxMDgoMykgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbNF0KLSsgIHN0ZCA1 LCAweDExMCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1s1XQotKyAgc3RkIDYs IDB4MTE4KDMpICAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzZdCi0rICBzdGQgNywg MHgxMjAoMykgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbN10KLSsgIHN0ZCA4LCAw eDEyOCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1s4XQotKyAgc3RkIDksIDB4 MTMwKDMpICAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzldCi0rICBzdGQgMTAsIDB4 MTM4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMTBdCi0rICBzdGQgMTEsIDB4 MTQwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMTFdCi0rICBzdGQgMTIsIDB4 MTQ4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMTJdCi0rICBzdGQgMTMsIDB4 MTUwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMTNdCi0rICBzdGQgMTQsIDB4 MTU4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMTRdCi0rICBzdGQgMTUsIDB4 MTYwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMTVdCi0rICBzdGQgMTYsIDB4 MTY4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMTZdCi0rICBzdGQgMTcsIDB4 MTcwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMTddCi0rICBzdGQgMTgsIDB4 MTc4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMThdCi0rICBzdGQgMTksIDB4 MTgwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMTldCi0rICBzdGQgMjAsIDB4 MTg4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMjBdCi0rICBzdGQgMjEsIDB4 MTkwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMjFdCi0rICBzdGQgMjIsIDB4 MTk4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMjJdCi0rICBzdGQgMjMsIDB4 MWEwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMjNdCi0rICBzdGQgMjQsIDB4 MWE4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMjRdCi0rICBzdGQgMjUsIDB4 MWIwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMjVdCi0rICBzdGQgMjYsIDB4 MWI4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMjZdCi0rICBzdGQgMjcsIDB4 MWMwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMjddCi0rICBzdGQgMjgsIDB4 MWM4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMjhdCi0rICBzdGQgMjksIDB4 MWQwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMjldCi0rICBzdGQgMzAsIDB4 MWQ4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMzBdCi0rICBzdGQgMzEsIDB4 MWUwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMzFdCi0rCi0rICAvLyBGb3Ig TklQLCB3ZSBjYW4gdXNlIHRoZSB2YWx1ZSBpbiB0aGUgbGluayByZWdpc3RlcgotKyAgbWZsciAw Ci0rICBzdGQgMCwgMHgxZTgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9O SVBdCi0rCi0rICAvLyBDVFIKLSsgIG1mY3RyIDAKLSsgIHN0ZCAwLCAweDIwMCgzKSAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX0NUUl0KLSsKLSsgIC8vIEZvciBMTkssIHdlJ2xs IHVzZSB0aGUgY2FsbGVyJ3MgTFIgc2F2ZSBhcmVhICgyIHN0YWNrIGZyYW1lcyB1cCkuCi0rICAv LyByNCBjYW4gYmUgdXNlZCBhcyBhIHNjcmF0Y2ggcmVnaXN0ZXIgc2luY2UgaXQgaGFzIGFscmVh ZHkgYmVlbiBzYXZlZC4KLSsgIGxkIDQsIDAoMSkKLSsgIGxkIDQsIDE2KDQpCi0rICBzdGQgNCwg MHgyMDgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9MTktdCi0rCi0rICAv LyBYRVIKLSsgIG1meGVyIDAKLSsgIHN0ZCAwLCAweDIxMCgzKSAvLyBjb250ZXh0LT51Y19tY29u dGV4dC5ncF9yZWdzW1BUX1hFUl0KLSsKLSsgIC8vIENDUgotKyAgbWZjciAwCi0rICBzdGQgMCwg MHgyMTgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9DQ1JdCi0rCi0rICAv LyBNU1IsIG9yaWdfcjMsIE1RLCBUUkFQLCBEQVIsIERTSVNSLCBSRVNVTFQsIERTQ1IsCi0rICAv LyBub3QgdXNlZCBvciBub3QgcmVsZXZhbnQsICB6ZXJvIHRoZW0gb3V0LgotKyAgbGkgNCwgMAot KyAgc3RkIDQsIDB4MWYwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfTVNS XQotKyAgc3RkIDQsIDB4MWY4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRf T1JJR19SM10KLSsgIHN0ZCA0LCAweDIyMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9y ZWdzW1BUX01RXQotKyAgc3RkIDQsIDB4MjI4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0Lmdw X3JlZ3NbUFRfVFJBUF0KLSsgIHN0ZCA0LCAweDIzMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4 dC5ncF9yZWdzW1BUX0RBUl0KLSsgIHN0ZCA0LCAweDIzOCgzKSAvLyBjb250ZXh0LT51Y19tY29u dGV4dC5ncF9yZWdzW1BUX0RTSVNSXQotKyAgc3RkIDQsIDB4MjQwKDMpIC8vIGNvbnRleHQtPnVj X21jb250ZXh0LmdwX3JlZ3NbUFRfUkVTVUxUXQotKyAgc3RkIDQsIDB4MjQ4KDMpIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfRFNDUl0KLSsKLSsgIC8vIFVwZGF0ZSBjb250ZXh0 LT51Y19tY29udGV4dC5yZWdzIHRvIHBvaW50IHRvIGdwX3JlZ3MKLSsgIGFkZGkgMCwgMywgMHhl OAotKyAgc3RkIDAsIDB4ZTAoMykKLSsKLSsgIC8vIFNhdmUgZmxvYXRpbmcgcG9pbnQgcmVnaXN0 ZXJzIDAtMzEKLSsgIHN0ZmQgMCwgMHgyNjgoMykgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZw X3JlZ3NbMF0KLSsgIHN0ZmQgMSwgMHgyNzAoMykgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZw X3JlZ3NbMV0KLSsgIHN0ZmQgMiwgMHgyNzgoMykgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZw X3JlZ3NbMl0KLSsgIHN0ZmQgMywgMHgyODAoMykgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZw X3JlZ3NbM10KLSsgIHN0ZmQgNCwgMHgyODgoMykgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZw X3JlZ3NbNF0KLSsgIHN0ZmQgNSwgMHgyOTAoMykgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZw X3JlZ3NbNV0KLSsgIHN0ZmQgNiwgMHgyOTgoMykgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZw X3JlZ3NbNl0KLSsgIHN0ZmQgNywgMHgyYTAoMykgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZw X3JlZ3NbN10KLSsgIHN0ZmQgOCwgMHgyYTgoMykgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZw X3JlZ3NbOF0KLSsgIHN0ZmQgOSwgMHgyYjAoMykgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZw X3JlZ3NbOV0KLSsgIHN0ZmQgMTAsIDB4MmI4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZw X3JlZ3NbMTBdCi0rICBzdGZkIDExLCAweDJjMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5m cF9yZWdzWzExXQotKyAgc3RmZCAxMiwgMHgyYzgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQu ZnBfcmVnc1sxMl0KLSsgIHN0ZmQgMTMsIDB4MmQwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0 LmZwX3JlZ3NbMTNdCi0rICBzdGZkIDE0LCAweDJkOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4 dC5mcF9yZWdzWzE0XQotKyAgc3RmZCAxNSwgMHgyZTAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZnBfcmVnc1sxNV0KLSsgIHN0ZmQgMTYsIDB4MmU4KDMpIC8vIGNvbnRleHQtPnVjX21jb250 ZXh0LmZwX3JlZ3NbMTZdCi0rICBzdGZkIDE3LCAweDJmMCgzKSAvLyBjb250ZXh0LT51Y19tY29u dGV4dC5mcF9yZWdzWzE3XQotKyAgc3RmZCAxOCwgMHgyZjgoMykgLy8gY29udGV4dC0+dWNfbWNv bnRleHQuZnBfcmVnc1sxOF0KLSsgIHN0ZmQgMTksIDB4MzAwKDMpIC8vIGNvbnRleHQtPnVjX21j b250ZXh0LmZwX3JlZ3NbMTldCi0rICBzdGZkIDIwLCAweDMwOCgzKSAvLyBjb250ZXh0LT51Y19t Y29udGV4dC5mcF9yZWdzWzIwXQotKyAgc3RmZCAyMSwgMHgzMTAoMykgLy8gY29udGV4dC0+dWNf bWNvbnRleHQuZnBfcmVnc1syMV0KLSsgIHN0ZmQgMjIsIDB4MzE4KDMpIC8vIGNvbnRleHQtPnVj X21jb250ZXh0LmZwX3JlZ3NbMjJdCi0rICBzdGZkIDIzLCAweDMyMCgzKSAvLyBjb250ZXh0LT51 Y19tY29udGV4dC5mcF9yZWdzWzIzXQotKyAgc3RmZCAyNCwgMHgzMjgoMykgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZnBfcmVnc1syNF0KLSsgIHN0ZmQgMjUsIDB4MzMwKDMpIC8vIGNvbnRleHQt PnVjX21jb250ZXh0LmZwX3JlZ3NbMjVdCi0rICBzdGZkIDI2LCAweDMzOCgzKSAvLyBjb250ZXh0 LT51Y19tY29udGV4dC5mcF9yZWdzWzI2XQotKyAgc3RmZCAyNywgMHgzNDAoMykgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQuZnBfcmVnc1syN10KLSsgIHN0ZmQgMjgsIDB4MzQ4KDMpIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMjhdCi0rICBzdGZkIDI5LCAweDM1MCgzKSAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzI5XQotKyAgc3RmZCAzMCwgMHgzNTgoMykgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1szMF0KLSsgIHN0ZmQgMzEsIDB4MzYwKDMpIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMzFdCi0rCi0rICAvLyBGUFNDUgotKyAgbWZmcyAw Ci0rICBzdGZkIDAsIDB4MzY4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMzJd Ci0rCi0rICAvLyBTYXZlIFZNWCBWZWN0b3IgcmVnaXN0ZXJzCi0rICAvLyBVcGRhdGUgcjQgdG8g Y29udGFpbiB0aGUgYmFzZSBhZGRyZXNzIG9mIHZteF9yZXNlcnZlCi0rICBhZGRpIDQsIDMsIDB4 Mzc4Ci0rICAvLyBFbnN1cmUgdGhhdCBpdCBpcyBxdWFkd29yZCBhbGlnbmVkCi0rICBhbmRpLiA1 LCA0LCAweEYKLSsgIGJlcSAxZiAvLyBObyBhbGlnbm1lbnQgaXMgbmVjZXNzYXJ5Ci0rICAvLyBB ZGRyZXNzIGlzIGRvdWJsZXdvcmQgYWxpZ25lZCBhbmQgbm90IHF1YWR3b3JkIGFsaWduZWQsIGFk ZCA4Ci0rICBhZGRpIDQsIDQsIDgKLSsKLSsxOgotKyAgLy8gU3RvcmUgVk1YIHJlZ2lzdGVycyAw LTMxCi0rICAvLyByNCB3aWxsIGNvbnRhaW4gdGhlIGJhc2UgYWRkcmVzcwotKyAgLy8gcjUgd2ls bCBjb250YWluIHRoZSBpbmRleAotKyAgbGkgNSwgMAotKyAgc3R2eCAwLCA0LCA1ICAgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDBdCi0rICBhZGRpIDUsIDUs IDE2Ci0rICBzdHZ4IDEsIDQsIDUgICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2 ZVsoYWxpZ24pICsgMV0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMiwgNCwgNSAgIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyXQotKyAgYWRkaSA1LCA1 LCAxNgotKyAgc3R2eCAzLCA0LCA1ICAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2Vy dmVbKGFsaWduKSArIDNdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDQsIDQsIDUgICAvLyBj b250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgNF0KLSsgIGFkZGkgNSwg NSwgMTYKLSsgIHN0dnggNSwgNCwgNSAgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNl cnZlWyhhbGlnbikgKyA1XQotKyAgYWRkaSA1LCA1LCAxNgotKyAgc3R2eCA2LCA0LCA1ICAgLy8g Y29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDZdCi0rICBhZGRpIDUs IDUsIDE2Ci0rICBzdHZ4IDcsIDQsIDUgICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVz ZXJ2ZVsoYWxpZ24pICsgN10KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggOCwgNCwgNSAgIC8v IGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyA4XQotKyAgYWRkaSA1 LCA1LCAxNgotKyAgc3R2eCA5LCA0LCA1ICAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jl c2VydmVbKGFsaWduKSArIDldCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDEwLCA0LCA1ICAv LyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMTBdCi0rICBhZGRp IDUsIDUsIDE2Ci0rICBzdHZ4IDExLCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhf cmVzZXJ2ZVsoYWxpZ24pICsgMTFdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDEyLCA0LCA1 ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMTJdCi0rICBh ZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDEzLCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52 bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMTNdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDE0LCA0 LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMTRdCi0r ICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDE1LCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4 dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMTVdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDE2 LCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMTZd Ci0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDE3LCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29u dGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMTddCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4 IDE4LCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsg MThdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDE5LCA0LCA1ICAvLyBjb250ZXh0LT51Y19t Y29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMTldCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBz dHZ4IDIwLCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24p ICsgMjBdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDIxLCA0LCA1ICAvLyBjb250ZXh0LT51 Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMjFdCi0rICBhZGRpIDUsIDUsIDE2Ci0r ICBzdHZ4IDIyLCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxp Z24pICsgMjJdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDIzLCA0LCA1ICAvLyBjb250ZXh0 LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMjNdCi0rICBhZGRpIDUsIDUsIDE2 Ci0rICBzdHZ4IDI0LCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVso YWxpZ24pICsgMjRdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDI1LCA0LCA1ICAvLyBjb250 ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMjVdCi0rICBhZGRpIDUsIDUs IDE2Ci0rICBzdHZ4IDI2LCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2 ZVsoYWxpZ24pICsgMjZdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDI3LCA0LCA1ICAvLyBj b250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMjddCi0rICBhZGRpIDUs IDUsIDE2Ci0rICBzdHZ4IDI4LCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVz ZXJ2ZVsoYWxpZ24pICsgMjhdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDI5LCA0LCA1ICAv LyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMjldCi0rICBhZGRp IDUsIDUsIDE2Ci0rICBzdHZ4IDMwLCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhf cmVzZXJ2ZVsoYWxpZ24pICsgMzBdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDMxLCA0LCA1 ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMzFdCi0rICBh ZGRpIDUsIDUsIDE2Ci0rCi0rICAvLyBWU0NSCi0rICBtZnZzY3IgMAotKyAgc3R2eCAwLCA0LCA1 Ci0rICBhZGRpIDUsIDUsIDE2Ci0rCi0rICAvLyBWUlNBVkUKLSsgIG1mdnJzYXZlIDAKLSsgIHN0 d3ggMCwgNCwgNQotKwotKyAgLy8gVXBkYXRlIGNvbnRleHQtPnVjX21jb250ZXh0LnZfcmVncyB0 byBwb2ludCB0byB2bXhfcmVzZXJ2ZSArIGFsaWdubWVudC4KLSsgIHN0ZCA0LCAweDM3MCgzKQot KwotKyAgLy8gWmVybyBvdXQgYWxsIHVudXNlZCBmaWVsZHMKLSsgIGxpIDQsIDAKLSsgIHN0ZCA0 LCAweGM4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnNpZ25hbAotKyAgc3RkIDQsIDB4ZDAo MykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuaGFuZGxlcgotKyAgc3RkIDQsIDB4ZDgoMykgLy8g Y29udGV4dC0+dWNfbWNvbnRleHQub2xkbWFzawotKwotKyAgYmxyCi0gI2VuZGlmICAvLyBfX2kz ODZfXwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9j cmFzaHBhZC9jcmFzaHBhZC91dGlsL21pc2MvY2FwdHVyZV9jb250ZXh0X3Rlc3QuY2MKLSsrKyBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jh c2hwYWQvdXRpbC9taXNjL2NhcHR1cmVfY29udGV4dF90ZXN0LmNjCi1AQCAtNDksNyArNDksOCBA QCB2b2lkIFRlc3RDYXB0dXJlQ29udGV4dCgpIHsKLSAgIC8vIHJlZmVyZW5jZSBwcm9ncmFtIGNv dW50ZXIuCi0gICB1aW50cHRyX3QgcGMgPSBQcm9ncmFtQ291bnRlckZyb21Db250ZXh0KGNvbnRl eHRfMSk7Ci0gCi0tI2lmICFkZWZpbmVkKEFERFJFU1NfU0FOSVRJWkVSKSAmJiAhZGVmaW5lZChB UkNIX0NQVV9NSVBTX0ZBTUlMWSkKLSsjaWYgIWRlZmluZWQoQUREUkVTU19TQU5JVElaRVIpICYm ICFkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBcCi0rICAgICFkZWZpbmVkKEFSQ0hf Q1BVX1BQQzY0X0ZBTUlMWSkKLSAgIC8vIEFkZHJlc3NTYW5pdGl6ZXIgY2FuIGNhdXNlIGVub3Vn aCBjb2RlIGJsb2F0IHRoYXQgdGhlIOKAnG5lYXJieeKAnSBjaGVjayB3b3VsZAotICAgLy8gbGlr ZWx5IGZhaWwuCi0gICBjb25zdCB1aW50cHRyX3Qga1JlZmVyZW5jZVBDID0KLS0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQv dXRpbC9taXNjL2NhcHR1cmVfY29udGV4dF90ZXN0X3V0aWxfbGludXguY2MKLSsrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQv dXRpbC9taXNjL2NhcHR1cmVfY29udGV4dF90ZXN0X3V0aWxfbGludXguY2MKLUBAIC0zNiw2ICsz Niw4IEBAIHZvaWQgU2FuaXR5Q2hlY2tDb250ZXh0KGNvbnN0IE5hdGl2ZUNQVUNvbnRleHQmIGNv bnRleHQpIHsKLSAgIEVYUEVDVF9FUShjb250ZXh0LnVjX21jb250ZXh0LnJlZ3NbMF0sIEZyb21Q b2ludGVyQ2FzdDx1aW50cHRyX3Q+KCZjb250ZXh0KSk7Ci0gI2VsaWYgZGVmaW5lZChBUkNIX0NQ VV9NSVBTX0ZBTUlMWSkKLSAgIEVYUEVDVF9FUShjb250ZXh0LnVjX21jb250ZXh0LmdyZWdzWzRd LCBGcm9tUG9pbnRlckNhc3Q8dWludHB0cl90PigmY29udGV4dCkpOwotKyNlbGlmIGRlZmluZWQo QVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKyAgRVhQRUNUX0VRKGNvbnRleHQudWNfbWNvbnRleHQu Z3BfcmVnc1szXSwgRnJvbVBvaW50ZXJDYXN0PHVpbnRwdHJfdD4oJmNvbnRleHQpKTsKLSAjZW5k aWYKLSB9Ci0gCi1AQCAtNTAsNiArNTIsOCBAQCB1aW50cHRyX3QgUHJvZ3JhbUNvdW50ZXJGcm9t Q29udGV4dChjb25zdCBOYXRpdmVDUFVDb250ZXh0JiBjb250ZXh0KSB7Ci0gICByZXR1cm4gY29u dGV4dC51Y19tY29udGV4dC5wYzsKLSAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZ KQotICAgcmV0dXJuIGNvbnRleHQudWNfbWNvbnRleHQucGM7Ci0rI2VsaWYgZGVmaW5lZChBUkNI X0NQVV9QUEM2NF9GQU1JTFkpCi0rICByZXR1cm4gY29udGV4dC51Y19tY29udGV4dC5ncF9yZWdz W1BUX05JUF07Ci0gI2VuZGlmCi0gfQotIAotQEAgLTY0LDYgKzY4LDggQEAgdWludHB0cl90IFN0 YWNrUG9pbnRlckZyb21Db250ZXh0KGNvbnN0IE5hdGl2ZUNQVUNvbnRleHQmIGNvbnRleHQpIHsK LSAgIHJldHVybiBjb250ZXh0LnVjX21jb250ZXh0LnNwOwotICNlbGlmIGRlZmluZWQoQVJDSF9D UFVfTUlQU19GQU1JTFkpCi0gICByZXR1cm4gY29udGV4dC51Y19tY29udGV4dC5ncmVnc1syOV07 Ci0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0rICByZXR1cm4gY29udGV4 dC51Y19tY29udGV4dC5ncF9yZWdzWzFdOwotICNlbmRpZgotIH0KLSAKLS0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRp bC9wb3NpeC9zaWduYWxzX3Rlc3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9wb3NpeC9zaWduYWxzX3Rl c3QuY2MKLUBAIC00NiwxMiArNDYsMTIgQEAgYm9vbCBDYW5DYXVzZVNpZ25hbChpbnQgc2lnKSB7 Ci0gICByZXR1cm4gc2lnID09IFNJR0FCUlQgfHwKLSAgICAgICAgICBzaWcgPT0gU0lHQUxSTSB8 fAotICAgICAgICAgIHNpZyA9PSBTSUdCVVMgfHwKLS0jaWYgIWRlZmluZWQoQVJDSF9DUFVfQVJN NjQpCi0rI2lmICFkZWZpbmVkKEFSQ0hfQ1BVX0FSTTY0KSAmJiAhZGVmaW5lZChBUkNIX0NQVV9Q UEM2NCkKLSAgICAgICAgICBzaWcgPT0gU0lHRlBFIHx8Ci0tI2VuZGlmICAvLyAhZGVmaW5lZChB UkNIX0NQVV9BUk02NCkKLSsjZW5kaWYgIC8vICFkZWZpbmVkKEFSQ0hfQ1BVX0FSTTY0KSAmJiAh ZGVmaW5lZChBUkNIX0NQVV9QUEM2NCkKLSAjaWYgZGVmaW5lZChBUkNIX0NQVV9YODZfRkFNSUxZ KSB8fCBkZWZpbmVkKEFSQ0hfQ1BVX0FSTUVMKQotICAgICAgICAgIHNpZyA9PSBTSUdJTEwgfHwK LS0jZW5kaWYgIC8vIGRlZmluZWQoQVJDSF9DUFVfWDg2X0ZBTUlMWSkgfHwgZGVmaW5lZChBUkNI X0NQVV9BUk1FTAotKyNlbmRpZiAgLy8gZGVmaW5lZChBUkNIX0NQVV9YODZfRkFNSUxZKSB8fCBk ZWZpbmVkKEFSQ0hfQ1BVX0FSTUVMKQotICAgICAgICAgIHNpZyA9PSBTSUdQSVBFIHx8Ci0gICAg ICAgICAgc2lnID09IFNJR1NFR1YgfHwKLSAjaWYgZGVmaW5lZChPU19NQUNPU1gpCi1AQCAtMTE3 LDkgKzExNywxMSBAQCB2b2lkIENhdXNlU2lnbmFsKGludCBzaWcpIHsKLSAgICAgICBicmVhazsK LSAgICAgfQotIAotLSNpZiAhZGVmaW5lZChBUkNIX0NQVV9BUk02NCkKLSsjaWYgIWRlZmluZWQo QVJDSF9DUFVfQVJNNjQpICYmICFkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQotICAgICAvLyBBUk02 NCBoYXMgaGFyZHdhcmUgaW50ZWdlciBkaXZpc2lvbiBpbnN0cnVjdGlvbnMgdGhhdCBkb27igJl0 IGdlbmVyYXRlIGEKLSAgICAgLy8gdHJhcCBmb3IgZGl2aWRlLWJ5LXplcm8sIHNvIHRoaXMgZG9l c27igJl0IHByb2R1Y2UgU0lHRlBFLgotKyAgICAvLwotKyAgICAvLyBQUEM2NCBmaXhlZC1wb2lu dCBkaXZpc2lvbiBieSB6ZXJvIGFsc28gZG9lc24ndCBwcm9kdWNlIGEgU0lHRlBFLgotICAgICBj YXNlIFNJR0ZQRTogewotICAgICAgIC8vIE9wdGltaXphdGlvbiBtYWtlcyB0aGlzIHRyaWNreSwg c28gZ2V0IHplcm8gZnJvbSBhIHN5c3RlbSBjYWxsIGxpa2VseQotICAgICAgIC8vIHRvIHN1Y2Nl ZWQsIGFuZCB0cnkgdG8gZG8gc29tZXRoaW5nIHdpdGggdGhlIHJlc3VsdC4KLUBAIC0xMzcsNyAr MTM5LDcgQEAgdm9pZCBDYXVzZVNpZ25hbChpbnQgc2lnKSB7Ci0gICAgICAgZnN0YXQocXVvdGll bnQsICZzdGF0X2J1Zik7Ci0gICAgICAgYnJlYWs7Ci0gICAgIH0KLS0jZW5kaWYgIC8vIEFSQ0hf Q1BVX0FSTTY0Ci0rI2VuZGlmICAvLyAhZGVmaW5lZChBUkNIX0NQVV9BUk02NCkgJiYgIWRlZmlu ZWQoQVJDSF9DUFVfUFBDNjQpCi0gCi0gI2lmIGRlZmluZWQoQVJDSF9DUFVfWDg2X0ZBTUlMWSkg fHwgZGVmaW5lZChBUkNIX0NQVV9BUk1FTCkKLSAgICAgY2FzZSBTSUdJTEw6IHsKLS0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvbGlicG5nL0JVSUxELmdu Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2xpYnBu Zy9CVUlMRC5nbgotQEAgLTkzLDYgKzkzLDExIEBAIHNvdXJjZV9zZXQoImxpYnBuZ19zb3VyY2Vz IikgewotICAgICAgICJtaXBzL2ZpbHRlcl9tc2FfaW50cmluc2ljcy5jIiwKLSAgICAgICAibWlw cy9taXBzX2luaXQuYyIsCi0gICAgIF0KLSsgIH0gZWxzZSBpZiAoY3VycmVudF9jcHUgPT0gInBw YzY0IikgewotKyAgICBzb3VyY2VzICs9IFsKLSsgICAgICAicG93ZXJwYy9maWx0ZXJfdnN4X2lu dHJpbnNpY3MuYyIsCi0rICAgICAgInBvd2VycGMvcG93ZXJwY19pbml0LmMiLAotKyAgICBdCi0g ICB9Ci0gCi0gICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVt X2NvZGUiIF0KLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2xpYnBuZy9wb3dlcnBjL2Zp bHRlcl92c3hfaW50cmluc2ljcy5jCi1AQCAtMCwwICsxLDc2NyBAQAotKy8qIGZpbHRlcl92c3hf aW50cmluc2ljcy5jIC0gUG93ZXJQQyBvcHRpbWlzZWQgZmlsdGVyIGZ1bmN0aW9ucwotKyAqCi0r ICogQ29weXJpZ2h0IChjKSAyMDE3IEdsZW5uIFJhbmRlcnMtUGVocnNvbgotKyAqIFdyaXR0ZW4g YnkgVmFkaW0gQmFya292LCAyMDE3LgotKyAqIExhc3QgY2hhbmdlZCBpbiBsaWJwbmcgMS42LjI5 IFtNYXJjaCAxNiwgMjAxN10KLSsgKgotKyAqIFRoaXMgY29kZSBpcyByZWxlYXNlZCB1bmRlciB0 aGUgbGlicG5nIGxpY2Vuc2UuCi0rICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFu ZCB1c2UsIHNlZSB0aGUgZGlzY2xhaW1lcgotKyAqIGFuZCBsaWNlbnNlIGluIHBuZy5oCi0rICov Ci0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPHN0ZGludC5oPgotKyNpbmNsdWRlICIu Li9wbmdwcml2LmgiCi0rCi0rI2lmZGVmIFBOR19SRUFEX1NVUFBPUlRFRAotKwotKy8qIFRoaXMg Y29kZSByZXF1aXJlcyAtbWFsdGl2ZWMgYW5kIC1tdnN4IG9uIHRoZSBjb21tYW5kIGxpbmU6ICov Ci0rI2lmIFBOR19QT1dFUlBDX1ZTWF9JTVBMRU1FTlRBVElPTiA9PSAxIC8qIGludHJpbnNpY3Mg Y29kZSBmcm9tIHBuZ3ByaXYuaCAqLwotKwotKyNpbmNsdWRlIDxhbHRpdmVjLmg+Ci0rCi0rI2lm IFBOR19QT1dFUlBDX1ZTWF9PUFQgPiAwCi0rCi0rI2lmbmRlZiBfX1ZTWF9fCi0rIyAgZXJyb3Ig IlRoaXMgY29kZSByZXF1aXJlcyBWU1ggc3VwcG9ydCAoUE9XRVI3IGFuZCBsYXRlcikuIFBsZWFz ZSBwcm92aWRlIC1tdnN4IGNvbXBpbGVyIGZsYWcuIgotKyNlbmRpZgotKwotKyNkZWZpbmUgdmVj X2xkX3VuYWxpZ25lZCh2ZWMsZGF0YSkgdmVjID0gdmVjX3ZzeF9sZCgwLGRhdGEpCi0rI2RlZmlu ZSB2ZWNfc3RfdW5hbGlnbmVkKHZlYyxkYXRhKSB2ZWNfdnN4X3N0KHZlYywwLGRhdGEpCi0rCi0r Ci0rLyogRnVuY3Rpb25zIGluIHRoaXMgZmlsZSBsb29rIGF0IG1vc3QgMyBwaXhlbHMgKGEsYixj KSB0byBwcmVkaWN0IHRoZSA0dGggKGQpLgotKyAqIFRoZXkncmUgcG9zaXRpb25lZCBsaWtlIHRo aXM6Ci0rICogICAgcHJldjogIGMgYgotKyAqICAgIHJvdzogICBhIGQKLSsgKiBUaGUgU3ViIGZp bHRlciBwcmVkaWN0cyBkPWEsIEF2ZyBkPShhK2IpLzIsIGFuZCBQYWV0aCBwcmVkaWN0cyBkIHRv IGJlCi0rICogd2hpY2hldmVyIG9mIGEsIGIsIG9yIGMgaXMgY2xvc2VzdCB0byBwPWErYi1jLgot KyAqICggdGhpcyBpcyB0YWtlbiBmcm9tIC4uL2ludGVsL2ZpbHRlcl9zc2UyX2ludHJpbnNpY3Mu YyApCi0rICovCi0rCi0rI2RlZmluZSB2c3hfZGVjbGFyZV9jb21tb25fdmFycyhyb3dfaW5mbyxy b3cscHJldl9yb3csb2Zmc2V0KSBcCi0rICAgcG5nX2J5dGUgaTtcCi0rICAgcG5nX2J5dGVwIHJw ID0gcm93ICsgb2Zmc2V0O1wKLSsgICBwbmdfY29uc3RfYnl0ZXAgcHAgPSBwcmV2X3JvdztcCi0r ICAgcG5nX3NpemVfdCB1bmFsaWduZWRfdG9wID0gMTYgLSAoKChwbmdfc2l6ZV90KXJwICUgMTYp KTtcCi0rICAgcG5nX3NpemVfdCBpc3RvcDtcCi0rICAgaWYodW5hbGlnbmVkX3RvcCA9PSAxNilc Ci0rICAgICAgdW5hbGlnbmVkX3RvcCA9IDA7XAotKyAgIGlzdG9wID0gcm93X2luZm8tPnJvd2J5 dGVzO1wKLSsgICBpZigodW5hbGlnbmVkX3RvcCA8IGlzdG9wKSlcCi0rICAgICAgaXN0b3AgLT0g dW5hbGlnbmVkX3RvcDtcCi0rICAgZWxzZXtcCi0rICAgICAgdW5hbGlnbmVkX3RvcCA9IGlzdG9w O1wKLSsgICAgICBpc3RvcCA9IDA7XAotKyAgIH0KLSsKLSt2b2lkIHBuZ19yZWFkX2ZpbHRlcl9y b3dfdXBfdnN4KHBuZ19yb3dfaW5mb3Agcm93X2luZm8sIHBuZ19ieXRlcCByb3csCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwbmdfY29uc3RfYnl0ZXAgcHJldl9yb3cpCi0rewot KyAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIHJwX3ZlYzsKLSsgICB2ZWN0b3IgdW5zaWduZWQgY2hh ciBwcF92ZWM7Ci0rICAgdnN4X2RlY2xhcmVfY29tbW9uX3ZhcnMocm93X2luZm8scm93LHByZXZf cm93LDApCi0rCi0rICAgLyogQWx0aXZlYyBvcGVyYXRpb25zIHJlcXVpcmUgMTYtYnl0ZSBhbGln bmVkIGRhdGEKLSsgICAgKiBidXQgaW5wdXQgY2FuIGJlIHVuYWxpZ25lZC4gU28gd2UgY2FsY3Vs YXRlCi0rICAgICogdW5hbGlnbmVkIHBhcnQgYXMgdXN1YWwuCi0rICAgICovCi0rICAgZm9yIChp ID0gMDsgaSA8IHVuYWxpZ25lZF90b3A7IGkrKykKLSsgICB7Ci0rICAgICAgKnJwID0gKHBuZ19i eXRlKSgoKGludCkoKnJwKSArIChpbnQpKCpwcCsrKSkgJiAweGZmKTsKLSsgICAgICBycCsrOwot KyAgIH0KLSsKLSsgICAvKiBVc2luZyBTSU1EIHdoaWxlIHdlIGNhbiAqLwotKyAgIHdoaWxlKCBp c3RvcCA+PSAxNiApCi0rICAgewotKyAgICAgIHJwX3ZlYyA9IHZlY19sZCgwLHJwKTsKLSsgICAg ICB2ZWNfbGRfdW5hbGlnbmVkKHBwX3ZlYyxwcCk7Ci0rCi0rICAgICAgcnBfdmVjID0gdmVjX2Fk ZChycF92ZWMscHBfdmVjKTsKLSsKLSsgICAgICB2ZWNfc3QocnBfdmVjLDAscnApOwotKwotKyAg ICAgIHBwICs9IDE2OwotKyAgICAgIHJwICs9IDE2OwotKyAgICAgIGlzdG9wIC09IDE2OwotKyAg IH0KLSsKLSsgICBpZihpc3RvcCA+IDApCi0rICAgewotKyAgICAgIC8qIElmIGJ5dGUgY291bnQg b2Ygcm93IGlzIG5vdCBkaXZpc2libGUgYnkgMTYKLSsgICAgICAgKiB3ZSB3aWxsIHByb2Nlc3Mg cmVtYWluaW5nIHBhcnQgYXMgdXN1YWwKLSsgICAgICAgKi8KLSsgICAgICBmb3IgKGkgPSAwOyBp IDwgaXN0b3A7IGkrKykKLSsgICAgICB7Ci0rICAgICAgICAgKnJwID0gKHBuZ19ieXRlKSgoKGlu dCkoKnJwKSArIChpbnQpKCpwcCsrKSkgJiAweGZmKTsKLSsgICAgICAgICBycCsrOwotKyAgICAg IH0KLSt9Ci0rCi0rfQotKwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hf TEVGVFNISUZURUQxXzQgPSB7MTYsMTYsMTYsMTYsIDAsIDEsIDIsIDMsMTYsMTYsMTYsMTYsMTYs MTYsMTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfTEVGVFNI SUZURUQyXzQgPSB7MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsIDQsIDUsIDYsIDcsMTYsMTYsMTYs MTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfTEVGVFNISUZURUQz XzQgPSB7MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsIDgsIDksMTAsMTF9Owot KwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfTEVGVFNISUZURUQxXzMg PSB7MTYsMTYsMTYsIDAsIDEsIDIsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OwotK3N0 YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfTEVGVFNISUZURUQyXzMgPSB7MTYs MTYsMTYsMTYsMTYsMTYsIDMsIDQsIDUsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBj b25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfTEVGVFNISUZURUQzXzMgPSB7MTYsMTYsMTYs MTYsMTYsMTYsMTYsMTYsMTYsIDYsIDcsIDgsMTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2 ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfTEVGVFNISUZURUQ0XzMgPSB7MTYsMTYsMTYsMTYsMTYs MTYsMTYsMTYsMTYsMTYsMTYsMTYsIDksMTAsMTEsMTZ9OwotKwotK3N0YXRpYyBjb25zdCB2ZWN0 b3IgdW5zaWduZWQgY2hhciBWU1hfTk9UX1NISUZURUQxXzQgPSB7MTYsMTYsMTYsMTYsIDQsIDUs IDYsIDcsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5z aWduZWQgY2hhciBWU1hfTk9UX1NISUZURUQyXzQgPSB7MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYs IDgsIDksMTAsMTEsMTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQg Y2hhciBWU1hfTk9UX1NISUZURUQzXzQgPSB7MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYs MTYsMTYsMTIsMTMsMTQsMTV9OwotKwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hh ciBWU1hfTk9UX1NISUZURUQxXzMgPSB7MTYsMTYsMTYsIDMsIDQsIDUsMTYsMTYsMTYsMTYsMTYs MTYsMTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hf Tk9UX1NISUZURUQyXzMgPSB7MTYsMTYsMTYsMTYsMTYsMTYsIDYsIDcsIDgsMTYsMTYsMTYsMTYs MTYsMTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfTk9UX1NI SUZURUQzXzMgPSB7MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsIDksMTAsMTEsMTYsMTYsMTYs MTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfTk9UX1NISUZURUQ0 XzMgPSB7MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTIsMTMsMTQsMTZ9Owot KwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfQ0hBUl9aRVJPID0gezAs MCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9OwotKyNpZmRlZiBfX0xJVFRMRV9FTkRJQU5f XwotKwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfQ0hBUl9UT19TSE9S VDFfNCA9IHsgNCwxNiwgNSwxNiwgNiwxNiwgNywxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07 Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9DSEFSX1RPX1NIT1JUMl80 ID0geyA4LDE2LCA5LDE2LDEwLDE2LDExLDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKLStz dGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX0NIQVJfVE9fU0hPUlQzXzQgPSB7 MTIsMTYsMTMsMTYsMTQsMTYsMTUsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OwotKwotK3N0 YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfU0hPUlRfVE9fQ0hBUjFfNCA9IHsx NiwxNiwxNiwxNiwgMCwgMiwgNCwgNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0rc3RhdGlj IGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9TSE9SVF9UT19DSEFSMl80ID0gezE2LDE2 LDE2LDE2LDE2LDE2LDE2LDE2LCAwLCAyLCA0LCA2LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMgY29u c3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX1NIT1JUX1RPX0NIQVIzXzQgPSB7MTYsMTYsMTYs MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsIDAsIDIsIDQsIDZ9OwotKwotK3N0YXRpYyBjb25z dCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfQ0hBUl9UT19TSE9SVDFfMyA9IHsgMywxNiwgNCwx NiwgNSwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0rc3RhdGljIGNvbnN0IHZl Y3RvciB1bnNpZ25lZCBjaGFyIFZTWF9DSEFSX1RPX1NIT1JUMl8zID0geyA2LDE2LCA3LDE2LCA4 LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVjdG9y IHVuc2lnbmVkIGNoYXIgVlNYX0NIQVJfVE9fU0hPUlQzXzMgPSB7IDksMTYsMTAsMTYsMTEsMTYs MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5z aWduZWQgY2hhciBWU1hfQ0hBUl9UT19TSE9SVDRfMyA9IHsxMiwxNiwxMywxNiwxNCwxNiwxNiwx NiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0rCi0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNp Z25lZCBjaGFyIFZTWF9TSE9SVF9UT19DSEFSMV8zID0gezE2LDE2LDE2LCAwLCAyLCA0LDE2LDE2 LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVk IGNoYXIgVlNYX1NIT1JUX1RPX0NIQVIyXzMgPSB7MTYsMTYsMTYsMTYsMTYsMTYsIDAsIDIsIDQs MTYsMTYsMTYsMTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hh ciBWU1hfU0hPUlRfVE9fQ0hBUjNfMyA9IHsxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwgMCwg MiwgNCwxNiwxNiwxNiwxNn07Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZT WF9TSE9SVF9UT19DSEFSNF8zID0gezE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2 LCAwLCAyLCA0LDE2fTsKLSsKLSsjZWxpZiBkZWZpbmVkKF9fQklHX0VORElBTl9fKQotKwotK3N0 YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfQ0hBUl9UT19TSE9SVDFfNCA9IHsx NiwgNCwxNiwgNSwxNiwgNiwxNiwgNywxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0rc3RhdGlj IGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9DSEFSX1RPX1NIT1JUMl80ID0gezE2LCA4 LDE2LCA5LDE2LDEwLDE2LDExLDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMgY29u c3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX0NIQVJfVE9fU0hPUlQzXzQgPSB7MTYsMTIsMTYs MTMsMTYsMTQsMTYsMTUsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OwotKwotK3N0YXRpYyBjb25z dCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfU0hPUlRfVE9fQ0hBUjFfNCA9IHsxNiwxNiwxNiwx NiwgMSwgMywgNSwgNywxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0rc3RhdGljIGNvbnN0IHZl Y3RvciB1bnNpZ25lZCBjaGFyIFZTWF9TSE9SVF9UT19DSEFSMl80ID0gezE2LDE2LDE2LDE2LDE2 LDE2LDE2LDE2LCAxLCAzLCA1LCA3LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVjdG9y IHVuc2lnbmVkIGNoYXIgVlNYX1NIT1JUX1RPX0NIQVIzXzQgPSB7MTYsMTYsMTYsMTYsMTYsMTYs MTYsMTYsMTYsMTYsMTYsMTYsIDEsIDMsIDUsIDd9OwotKwotK3N0YXRpYyBjb25zdCB2ZWN0b3Ig dW5zaWduZWQgY2hhciBWU1hfQ0hBUl9UT19TSE9SVDFfMyA9IHsxNiwgMywxNiwgNCwxNiwgNSwx NiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNp Z25lZCBjaGFyIFZTWF9DSEFSX1RPX1NIT1JUMl8zID0gezE2LCA2LDE2LCA3LDE2LCA4LDE2LDE2 LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVk IGNoYXIgVlNYX0NIQVJfVE9fU0hPUlQzXzMgPSB7MTYsIDksMTYsMTAsMTYsMTEsMTYsMTYsMTYs MTYsMTYsMTYsMTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hh ciBWU1hfQ0hBUl9UT19TSE9SVDRfMyA9IHsxNiwxMiwxNiwxMywxNiwxNCwxNiwxNiwxNiwxNiwx NiwxNiwxNiwxNiwxNiwxNn07Ci0rCi0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFy IFZTWF9TSE9SVF9UT19DSEFSMV8zID0gezE2LDE2LDE2LCAxLCAzLCA1LDE2LDE2LDE2LDE2LDE2 LDE2LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNY X1NIT1JUX1RPX0NIQVIyXzMgPSB7MTYsMTYsMTYsMTYsMTYsMTYsIDEsIDMsIDUsMTYsMTYsMTYs MTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfU0hP UlRfVE9fQ0hBUjNfMyA9IHsxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwgMSwgMywgNSwxNiwx NiwxNiwxNn07Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9TSE9SVF9U T19DSEFSNF8zID0gezE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LCAxLCAzLCA1 LDE2fTsKLSsKLSsjZW5kaWYKLSsKLSsjZGVmaW5lIHZzeF9jaGFyX3RvX3Nob3J0KHZlYyxvZmZz ZXQsYnBwKSAodmVjdG9yIHVuc2lnbmVkIHNob3J0KXZlY19wZXJtKCh2ZWMpLFZTWF9DSEFSX1pF Uk8sVlNYX0NIQVJfVE9fU0hPUlQjI29mZnNldCMjXyMjYnBwKQotKyNkZWZpbmUgdnN4X3Nob3J0 X3RvX2NoYXIodmVjLG9mZnNldCxicHApIHZlY19wZXJtKCgodmVjdG9yIHVuc2lnbmVkIGNoYXIp KHZlYykpLFZTWF9DSEFSX1pFUk8sVlNYX1NIT1JUX1RPX0NIQVIjI29mZnNldCMjXyMjYnBwKQot KwotKyNpZmRlZiBQTkdfVVNFX0FCUwotKyMgIGRlZmluZSB2c3hfYWJzKG51bWJlcikgYWJzKG51 bWJlcikKLSsjZWxzZQotKyMgIGRlZmluZSB2c3hfYWJzKG51bWJlcikgKG51bWJlciA+IDApID8g KG51bWJlcikgOiAtKG51bWJlcikKLSsjZW5kaWYKLSsKLSt2b2lkIHBuZ19yZWFkX2ZpbHRlcl9y b3dfc3ViNF92c3gocG5nX3Jvd19pbmZvcCByb3dfaW5mbywgcG5nX2J5dGVwIHJvdywKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG5nX2NvbnN0X2J5dGVwIHByZXZfcm93KQot K3sKLSsgICBjb25zdCBwbmdfYnl0ZSBicHAgPSA0OwotKwotKyAgIHZlY3RvciB1bnNpZ25lZCBj aGFyIHJwX3ZlYzsKLSsgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBwYXJ0X3ZlYzsKLSsKLSsgICB2 c3hfZGVjbGFyZV9jb21tb25fdmFycyhyb3dfaW5mbyxyb3cscHJldl9yb3csYnBwKQotKwotKyAg IFBOR19VTlVTRUQocHApCi0rCi0rICAgLyogQWx0aXZlYyBvcGVyYXRpb25zIHJlcXVpcmUgMTYt Ynl0ZSBhbGlnbmVkIGRhdGEKLSsgICAgKiBidXQgaW5wdXQgY2FuIGJlIHVuYWxpZ25lZC4gU28g d2UgY2FsY3VsYXRlCi0rICAgICogdW5hbGlnbmVkIHBhcnQgYXMgdXN1YWwuCi0rICAgICovCi0r ICAgZm9yIChpID0gMDsgaSA8IHVuYWxpZ25lZF90b3A7IGkrKykKLSsgICB7Ci0rICAgICAgKnJw ID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArIChpbnQpKCoocnAtYnBwKSkpICYgMHhmZik7Ci0r ICAgICAgcnArKzsKLSsgICB9Ci0rCi0rICAgLyogVXNpbmcgU0lNRCB3aGlsZSB3ZSBjYW4gKi8K LSsgICB3aGlsZSggaXN0b3AgPj0gMTYgKQotKyAgIHsKLSsgICAgICBmb3IoaT0wO2kgPCBicHAg OyBpKyspCi0rICAgICAgewotKyAgICAgICAgICpycCA9IChwbmdfYnl0ZSkoKChpbnQpKCpycCkg KyAoaW50KSgqKHJwLWJwcCkpKSAmIDB4ZmYpOwotKyAgICAgICAgIHJwKys7Ci0rICAgICAgfQot KyAgICAgIHJwIC09IGJwcDsKLSsKLSsgICAgICBycF92ZWMgPSB2ZWNfbGQoMCxycCk7Ci0rICAg ICAgcGFydF92ZWMgPSB2ZWNfcGVybShycF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTEVGVFNISUZU RUQxXzQpOwotKyAgICAgIHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLHBhcnRfdmVjKTsKLSsKLSsg ICAgICBwYXJ0X3ZlYyA9IHZlY19wZXJtKHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZUU0hJ RlRFRDJfNCk7Ci0rICAgICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMscGFydF92ZWMpOwotKwot KyAgICAgIHBhcnRfdmVjID0gdmVjX3Blcm0ocnBfdmVjLFZTWF9DSEFSX1pFUk8sVlNYX0xFRlRT SElGVEVEM180KTsKLSsgICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYyxwYXJ0X3ZlYyk7Ci0r Ci0rICAgICAgdmVjX3N0KHJwX3ZlYywwLHJwKTsKLSsKLSsgICAgICBycCArPSAxNjsKLSsgICAg ICBpc3RvcCAtPSAxNjsKLSsgICB9Ci0rCi0rICAgaWYoaXN0b3AgPiAwKQotKyAgICAgIGZvciAo aSA9IDA7IGkgPCBpc3RvcCAlIDE2OyBpKyspCi0rICAgICAgewotKyAgICAgICAgICpycCA9IChw bmdfYnl0ZSkoKChpbnQpKCpycCkgKyAoaW50KSgqKHJwIC0gYnBwKSkpICYgMHhmZik7Ci0rICAg ICAgICAgcnArKzsKLSsgICAgICB9Ci0rCi0rfQotKwotK3ZvaWQgcG5nX3JlYWRfZmlsdGVyX3Jv d19zdWIzX3ZzeChwbmdfcm93X2luZm9wIHJvd19pbmZvLCBwbmdfYnl0ZXAgcm93LAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbmdfY29uc3RfYnl0ZXAgcHJldl9yb3cpCi0r ewotKyAgIGNvbnN0IHBuZ19ieXRlIGJwcCA9IDM7Ci0rCi0rICAgdmVjdG9yIHVuc2lnbmVkIGNo YXIgcnBfdmVjOwotKyAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIHBhcnRfdmVjOwotKwotKyAgIHZz eF9kZWNsYXJlX2NvbW1vbl92YXJzKHJvd19pbmZvLHJvdyxwcmV2X3JvdyxicHApCi0rCi0rICAg UE5HX1VOVVNFRChwcCkKLSsKLSsgICAvKiBBbHRpdmVjIG9wZXJhdGlvbnMgcmVxdWlyZSAxNi1i eXRlIGFsaWduZWQgZGF0YQotKyAgICAqIGJ1dCBpbnB1dCBjYW4gYmUgdW5hbGlnbmVkLiBTbyB3 ZSBjYWxjdWxhdGUKLSsgICAgKiB1bmFsaWduZWQgcGFydCBhcyB1c3VhbC4KLSsgICAgKi8KLSsg ICBmb3IgKGkgPSAwOyBpIDwgdW5hbGlnbmVkX3RvcDsgaSsrKQotKyAgIHsKLSsgICAgICAqcnAg PSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsgKGludCkoKihycC1icHApKSkgJiAweGZmKTsKLSsg ICAgICBycCsrOwotKyAgIH0KLSsKLSsgICAvKiBVc2luZyBTSU1EIHdoaWxlIHdlIGNhbiAqLwot KyAgIHdoaWxlKCBpc3RvcCA+PSAxNiApCi0rICAgewotKyAgICAgIGZvcihpPTA7aSA8IGJwcCA7 IGkrKykKLSsgICAgICB7Ci0rICAgICAgICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSAr IChpbnQpKCoocnAtYnBwKSkpICYgMHhmZik7Ci0rICAgICAgICAgcnArKzsKLSsgICAgICB9Ci0r ICAgICAgcnAgLT0gYnBwOwotKwotKyAgICAgIHJwX3ZlYyA9IHZlY19sZCgwLHJwKTsKLSsgICAg ICBwYXJ0X3ZlYyA9IHZlY19wZXJtKHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZUU0hJRlRF RDFfMyk7Ci0rICAgICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMscGFydF92ZWMpOwotKwotKyAg ICAgIHBhcnRfdmVjID0gdmVjX3Blcm0ocnBfdmVjLFZTWF9DSEFSX1pFUk8sVlNYX0xFRlRTSElG VEVEMl8zKTsKLSsgICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYyxwYXJ0X3ZlYyk7Ci0rCi0r ICAgICAgcGFydF92ZWMgPSB2ZWNfcGVybShycF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTEVGVFNI SUZURUQzXzMpOwotKyAgICAgIHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLHBhcnRfdmVjKTsKLSsK LSsgICAgICBwYXJ0X3ZlYyA9IHZlY19wZXJtKHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZU U0hJRlRFRDRfMyk7Ci0rICAgICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMscGFydF92ZWMpOwot KwotKyAgICAgIHZlY19zdChycF92ZWMsMCxycCk7Ci0rICAgICAgcnAgKz0gMTU7Ci0rICAgICAg aXN0b3AgLT0gMTY7Ci0rCi0rICAgICAgLyogU2luY2UgMTYgJSBicHAgPSAxNiAlIDMgPSAxLCBs YXN0IGVsZW1lbnQgb2YgYXJyYXkgbXVzdAotKyAgICAgICAqIGJlIHByb2NlZWRlZCBtYW51YWxs eQotKyAgICAgICAqLwotKyAgICAgICpycCA9IChwbmdfYnl0ZSkoKChpbnQpKCpycCkgKyAoaW50 KSgqKHJwLWJwcCkpKSAmIDB4ZmYpOwotKyAgICAgIHJwKys7Ci0rICAgfQotKwotKyAgIGlmKGlz dG9wID4gMCkKLSsgICAgICBmb3IgKGkgPSAwOyBpIDwgaXN0b3AgJSAxNjsgaSsrKQotKyAgICAg IHsKLSsgICAgICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsgKGludCkoKihycC1i cHApKSkgJiAweGZmKTsKLSsgICAgICAgICBycCsrOwotKyAgICAgIH0KLSt9Ci0rCi0rdm9pZCBw bmdfcmVhZF9maWx0ZXJfcm93X2F2ZzRfdnN4KHBuZ19yb3dfaW5mb3Agcm93X2luZm8sIHBuZ19i eXRlcCByb3csCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBuZ19jb25zdF9i eXRlcCBwcmV2X3JvdykKLSt7Ci0rICAgY29uc3QgcG5nX2J5dGUgYnBwID0gNDsKLSsKLSsgICB2 ZWN0b3IgdW5zaWduZWQgY2hhciBycF92ZWM7Ci0rICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcHBf dmVjOwotKyAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIHBwX3BhcnRfdmVjOwotKyAgIHZlY3RvciB1 bnNpZ25lZCBjaGFyIHJwX3BhcnRfdmVjOwotKyAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIGF2Z192 ZWM7Ci0rCi0rICAgdnN4X2RlY2xhcmVfY29tbW9uX3ZhcnMocm93X2luZm8scm93LHByZXZfcm93 LGJwcCkKLSsgICBycCAtPSBicHA7Ci0rICAgaWYoaXN0b3AgPj0gYnBwKQotKyAgICAgIGlzdG9w IC09IGJwcDsKLSsKLSsgICBmb3IgKGkgPSAwOyBpIDwgYnBwOyBpKyspCi0rICAgewotKyAgICAg ICpycCA9IChwbmdfYnl0ZSkoKChpbnQpKCpycCkgKwotKyAgICAgICAgICgoaW50KSgqcHArKykg LyAyICkpICYgMHhmZik7Ci0rCi0rICAgICAgcnArKzsKLSsgICB9Ci0rCi0rICAgLyogQWx0aXZl YyBvcGVyYXRpb25zIHJlcXVpcmUgMTYtYnl0ZSBhbGlnbmVkIGRhdGEKLSsgICAgKiBidXQgaW5w dXQgY2FuIGJlIHVuYWxpZ25lZC4gU28gd2UgY2FsY3VsYXRlCi0rICAgICogdW5hbGlnbmVkIHBh cnQgYXMgdXN1YWwuCi0rICAgICovCi0rICAgZm9yIChpID0gMDsgaSA8IHVuYWxpZ25lZF90b3A7 IGkrKykKLSsgICB7Ci0rICAgICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArCi0rICAg ICAgICAgKGludCkoKnBwKysgKyAqKHJwLWJwcCkpIC8gMiApICYgMHhmZik7Ci0rCi0rICAgICAg cnArKzsKLSsgICB9Ci0rCi0rICAgLyogVXNpbmcgU0lNRCB3aGlsZSB3ZSBjYW4gKi8KLSsgICB3 aGlsZSggaXN0b3AgPj0gMTYgKQotKyAgIHsKLSsgICAgICBmb3IoaT0wO2kgPCBicHAgOyBpKysp Ci0rICAgICAgewotKyAgICAgICAgICpycCA9IChwbmdfYnl0ZSkoKChpbnQpKCpycCkgKwotKyAg ICAgICAgICAgIChpbnQpKCpwcCsrICsgKihycC1icHApKSAvIDIgKSAmIDB4ZmYpOwotKwotKyAg ICAgICAgIHJwKys7Ci0rICAgICAgfQotKyAgICAgIHJwIC09IGJwcDsKLSsgICAgICBwcCAtPSBi cHA7Ci0rCi0rICAgICAgdmVjX2xkX3VuYWxpZ25lZChwcF92ZWMscHApOwotKyAgICAgIHJwX3Zl YyA9IHZlY19sZCgwLHJwKTsKLSsKLSsgICAgICBycF9wYXJ0X3ZlYyA9IHZlY19wZXJtKHJwX3Zl YyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZUU0hJRlRFRDFfNCk7Ci0rICAgICAgcHBfcGFydF92ZWMg PSB2ZWNfcGVybShwcF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTk9UX1NISUZURUQxXzQpOwotKyAg ICAgIGF2Z192ZWMgPSB2ZWNfYXZnKHJwX3BhcnRfdmVjLHBwX3BhcnRfdmVjKTsKLSsgICAgICBh dmdfdmVjID0gdmVjX3N1YihhdmdfdmVjLCB2ZWNfYW5kKHZlY194b3IocnBfcGFydF92ZWMscHBf cGFydF92ZWMpLHZlY19zcGxhdF91OCgxKSkpOwotKyAgICAgIHJwX3ZlYyA9IHZlY19hZGQocnBf dmVjLGF2Z192ZWMpOwotKwotKyAgICAgIHJwX3BhcnRfdmVjID0gdmVjX3Blcm0ocnBfdmVjLFZT WF9DSEFSX1pFUk8sVlNYX0xFRlRTSElGVEVEMl80KTsKLSsgICAgICBwcF9wYXJ0X3ZlYyA9IHZl Y19wZXJtKHBwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9OT1RfU0hJRlRFRDJfNCk7Ci0rICAgICAg YXZnX3ZlYyA9IHZlY19hdmcocnBfcGFydF92ZWMscHBfcGFydF92ZWMpOwotKyAgICAgIGF2Z192 ZWMgPSB2ZWNfc3ViKGF2Z192ZWMsIHZlY19hbmQodmVjX3hvcihycF9wYXJ0X3ZlYyxwcF9wYXJ0 X3ZlYyksdmVjX3NwbGF0X3U4KDEpKSk7Ci0rICAgICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMs YXZnX3ZlYyk7Ci0rCi0rICAgICAgcnBfcGFydF92ZWMgPSB2ZWNfcGVybShycF92ZWMsVlNYX0NI QVJfWkVSTyxWU1hfTEVGVFNISUZURUQzXzQpOwotKyAgICAgIHBwX3BhcnRfdmVjID0gdmVjX3Bl cm0ocHBfdmVjLFZTWF9DSEFSX1pFUk8sVlNYX05PVF9TSElGVEVEM180KTsKLSsgICAgICBhdmdf dmVjID0gdmVjX2F2ZyhycF9wYXJ0X3ZlYyxwcF9wYXJ0X3ZlYyk7Ci0rICAgICAgYXZnX3ZlYyA9 IHZlY19zdWIoYXZnX3ZlYywgdmVjX2FuZCh2ZWNfeG9yKHJwX3BhcnRfdmVjLHBwX3BhcnRfdmVj KSx2ZWNfc3BsYXRfdTgoMSkpKTsKLSsgICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYyxhdmdf dmVjKTsKLSsKLSsgICAgICB2ZWNfc3QocnBfdmVjLDAscnApOwotKwotKyAgICAgIHJwICs9IDE2 OwotKyAgICAgIHBwICs9IDE2OwotKyAgICAgIGlzdG9wIC09IDE2OwotKyAgIH0KLSsKLSsgICBp Zihpc3RvcCAgPiAwKQotKyAgICAgIGZvciAoaSA9IDA7IGkgPCBpc3RvcCAlIDE2OyBpKyspCi0r ICAgICAgewotKyAgICAgICAgICpycCA9IChwbmdfYnl0ZSkoKChpbnQpKCpycCkgKwotKyAgICAg ICAgICAgIChpbnQpKCpwcCsrICsgKihycC1icHApKSAvIDIgKSAmIDB4ZmYpOwotKwotKyAgICAg ICAgIHJwKys7Ci0rICAgICAgfQotK30KLSsKLSt2b2lkIHBuZ19yZWFkX2ZpbHRlcl9yb3dfYXZn M192c3gocG5nX3Jvd19pbmZvcCByb3dfaW5mbywgcG5nX2J5dGVwIHJvdywKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcG5nX2NvbnN0X2J5dGVwIHByZXZfcm93KQotK3sKLSsg IGNvbnN0IHBuZ19ieXRlIGJwcCA9IDM7Ci0rCi0rICB2ZWN0b3IgdW5zaWduZWQgY2hhciBycF92 ZWM7Ci0rICB2ZWN0b3IgdW5zaWduZWQgY2hhciBwcF92ZWM7Ci0rICB2ZWN0b3IgdW5zaWduZWQg Y2hhciBwcF9wYXJ0X3ZlYzsKLSsgIHZlY3RvciB1bnNpZ25lZCBjaGFyIHJwX3BhcnRfdmVjOwot KyAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgYXZnX3ZlYzsKLSsKLSsgIHZzeF9kZWNsYXJlX2NvbW1v bl92YXJzKHJvd19pbmZvLHJvdyxwcmV2X3JvdyxicHApCi0rICBycCAtPSBicHA7Ci0rICBpZihp c3RvcCA+PSBicHApCi0rICAgICBpc3RvcCAtPSBicHA7Ci0rCi0rICBmb3IgKGkgPSAwOyBpIDwg YnBwOyBpKyspCi0rICB7Ci0rICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsKLSsg ICAgICAgICgoaW50KSgqcHArKykgLyAyICkpICYgMHhmZik7Ci0rCi0rICAgICBycCsrOwotKyAg fQotKwotKyAgLyogQWx0aXZlYyBvcGVyYXRpb25zIHJlcXVpcmUgMTYtYnl0ZSBhbGlnbmVkIGRh dGEKLSsgICAqIGJ1dCBpbnB1dCBjYW4gYmUgdW5hbGlnbmVkLiBTbyB3ZSBjYWxjdWxhdGUKLSsg ICAqIHVuYWxpZ25lZCBwYXJ0IGFzIHVzdWFsLgotKyAgICovCi0rICBmb3IgKGkgPSAwOyBpIDwg dW5hbGlnbmVkX3RvcDsgaSsrKQotKyAgewotKyAgICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCko KnJwKSArCi0rICAgICAgICAoaW50KSgqcHArKyArICoocnAtYnBwKSkgLyAyICkgJiAweGZmKTsK LSsKLSsgICAgIHJwKys7Ci0rICB9Ci0rCi0rICAvKiBVc2luZyBTSU1EIHdoaWxlIHdlIGNhbiAq LwotKyAgd2hpbGUoIGlzdG9wID49IDE2ICkKLSsgIHsKLSsgICAgIGZvcihpPTA7aSA8IGJwcCA7 IGkrKykKLSsgICAgIHsKLSsgICAgICAgICpycCA9IChwbmdfYnl0ZSkoKChpbnQpKCpycCkgKwot KyAgICAgICAgICAgKGludCkoKnBwKysgKyAqKHJwLWJwcCkpIC8gMiApICYgMHhmZik7Ci0rCi0r ICAgICAgICBycCsrOwotKyAgICAgfQotKyAgICAgcnAgLT0gYnBwOwotKyAgICAgcHAgLT0gYnBw OwotKwotKyAgICAgdmVjX2xkX3VuYWxpZ25lZChwcF92ZWMscHApOwotKyAgICAgcnBfdmVjID0g dmVjX2xkKDAscnApOwotKwotKyAgICAgcnBfcGFydF92ZWMgPSB2ZWNfcGVybShycF92ZWMsVlNY X0NIQVJfWkVSTyxWU1hfTEVGVFNISUZURUQxXzMpOwotKyAgICAgcHBfcGFydF92ZWMgPSB2ZWNf cGVybShwcF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTk9UX1NISUZURUQxXzMpOwotKyAgICAgYXZn X3ZlYyA9IHZlY19hdmcocnBfcGFydF92ZWMscHBfcGFydF92ZWMpOwotKyAgICAgYXZnX3ZlYyA9 IHZlY19zdWIoYXZnX3ZlYywgdmVjX2FuZCh2ZWNfeG9yKHJwX3BhcnRfdmVjLHBwX3BhcnRfdmVj KSx2ZWNfc3BsYXRfdTgoMSkpKTsKLSsgICAgIHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLGF2Z192 ZWMpOwotKwotKyAgICAgcnBfcGFydF92ZWMgPSB2ZWNfcGVybShycF92ZWMsVlNYX0NIQVJfWkVS TyxWU1hfTEVGVFNISUZURUQyXzMpOwotKyAgICAgcHBfcGFydF92ZWMgPSB2ZWNfcGVybShwcF92 ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTk9UX1NISUZURUQyXzMpOwotKyAgICAgYXZnX3ZlYyA9IHZl Y19hdmcocnBfcGFydF92ZWMscHBfcGFydF92ZWMpOwotKyAgICAgYXZnX3ZlYyA9IHZlY19zdWIo YXZnX3ZlYywgdmVjX2FuZCh2ZWNfeG9yKHJwX3BhcnRfdmVjLHBwX3BhcnRfdmVjKSx2ZWNfc3Bs YXRfdTgoMSkpKTsKLSsgICAgIHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLGF2Z192ZWMpOwotKwot KyAgICAgcnBfcGFydF92ZWMgPSB2ZWNfcGVybShycF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTEVG VFNISUZURUQzXzMpOwotKyAgICAgcHBfcGFydF92ZWMgPSB2ZWNfcGVybShwcF92ZWMsVlNYX0NI QVJfWkVSTyxWU1hfTk9UX1NISUZURUQzXzMpOwotKyAgICAgYXZnX3ZlYyA9IHZlY19hdmcocnBf cGFydF92ZWMscHBfcGFydF92ZWMpOwotKyAgICAgYXZnX3ZlYyA9IHZlY19zdWIoYXZnX3ZlYywg dmVjX2FuZCh2ZWNfeG9yKHJwX3BhcnRfdmVjLHBwX3BhcnRfdmVjKSx2ZWNfc3BsYXRfdTgoMSkp KTsKLSsgICAgIHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLGF2Z192ZWMpOwotKwotKyAgICAgcnBf cGFydF92ZWMgPSB2ZWNfcGVybShycF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTEVGVFNISUZURUQ0 XzMpOwotKyAgICAgcHBfcGFydF92ZWMgPSB2ZWNfcGVybShwcF92ZWMsVlNYX0NIQVJfWkVSTyxW U1hfTk9UX1NISUZURUQ0XzMpOwotKyAgICAgYXZnX3ZlYyA9IHZlY19hdmcocnBfcGFydF92ZWMs cHBfcGFydF92ZWMpOwotKyAgICAgYXZnX3ZlYyA9IHZlY19zdWIoYXZnX3ZlYywgdmVjX2FuZCh2 ZWNfeG9yKHJwX3BhcnRfdmVjLHBwX3BhcnRfdmVjKSx2ZWNfc3BsYXRfdTgoMSkpKTsKLSsgICAg IHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLGF2Z192ZWMpOwotKwotKyAgICAgdmVjX3N0KHJwX3Zl YywwLHJwKTsKLSsKLSsgICAgIHJwICs9IDE1OwotKyAgICAgcHAgKz0gMTU7Ci0rICAgICBpc3Rv cCAtPSAxNjsKLSsKLSsgICAgIC8qIFNpbmNlIDE2ICUgYnBwID0gMTYgJSAzID0gMSwgbGFzdCBl bGVtZW50IG9mIGFycmF5IG11c3QKLSsgICAgICAqIGJlIHByb2NlZWRlZCBtYW51YWxseQotKyAg ICAgICovCi0rICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsKLSsgICAgICAgIChp bnQpKCpwcCsrICsgKihycC1icHApKSAvIDIgKSAmIDB4ZmYpOwotKyAgICAgcnArKzsKLSsgIH0K LSsKLSsgIGlmKGlzdG9wICA+IDApCi0rICAgICBmb3IgKGkgPSAwOyBpIDwgaXN0b3AgJSAxNjsg aSsrKQotKyAgICAgewotKyAgICAgICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArCi0r ICAgICAgICAgICAoaW50KSgqcHArKyArICoocnAtYnBwKSkgLyAyICkgJiAweGZmKTsKLSsKLSsg ICAgICAgIHJwKys7Ci0rICAgICB9Ci0rfQotKwotKy8qIEJ5dGV3aXNlIGMgPyB0IDogZS4gKi8K LSsjZGVmaW5lIGlmX3RoZW5fZWxzZShjLHQsZSkgdmVjX3NlbChlLHQsYykKLSsKLSsjZGVmaW5l IHZzeF9wYWV0aF9wcm9jZXNzKHJwLHBwLGEsYixjLHBhLHBiLHBjLGJwcCkge1wKLSsgICAgICBj ID0gKihwcCAtIGJwcCk7XAotKyAgICAgIGEgPSAqKHJwIC0gYnBwKTtcCi0rICAgICAgYiA9ICpw cCsrO1wKLSsgICAgICBwID0gYiAtIGM7XAotKyAgICAgIHBjID0gYSAtIGM7XAotKyAgICAgIHBh ID0gdnN4X2FicyhwKTtcCi0rICAgICAgcGIgPSB2c3hfYWJzKHBjKTtcCi0rICAgICAgcGMgPSB2 c3hfYWJzKHAgKyBwYyk7XAotKyAgICAgIGlmIChwYiA8IHBhKSBwYSA9IHBiLCBhID0gYjtcCi0r ICAgICAgaWYgKHBjIDwgcGEpIGEgPSBjO1wKLSsgICAgICBhICs9ICpycDtcCi0rICAgICAgKnJw KysgPSAocG5nX2J5dGUpYTtcCi0rICAgICAgfQotKwotK3ZvaWQgcG5nX3JlYWRfZmlsdGVyX3Jv d19wYWV0aDRfdnN4KHBuZ19yb3dfaW5mb3Agcm93X2luZm8sIHBuZ19ieXRlcCByb3csCi0rICAg cG5nX2NvbnN0X2J5dGVwIHByZXZfcm93KQotK3sKLSsgICBjb25zdCBwbmdfYnl0ZSBicHAgPSA0 OwotKwotKyAgIGludCBhLCBiLCBjLCBwYSwgcGIsIHBjLCBwOwotKyAgIHZlY3RvciB1bnNpZ25l ZCBjaGFyIHJwX3ZlYzsKLSsgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBwcF92ZWM7Ci0rICAgdmVj dG9yIHVuc2lnbmVkIHNob3J0IGFfdmVjLGJfdmVjLGNfdmVjLG5lYXJlc3RfdmVjOwotKyAgIHZl Y3RvciBzaWduZWQgc2hvcnQgcGFfdmVjLHBiX3ZlYyxwY192ZWMsc21hbGxlc3RfdmVjOwotKwot KyAgIHZzeF9kZWNsYXJlX2NvbW1vbl92YXJzKHJvd19pbmZvLHJvdyxwcmV2X3JvdyxicHApCi0r ICAgcnAgLT0gYnBwOwotKyAgIGlmKGlzdG9wID49IGJwcCkKLSsgICAgICBpc3RvcCAtPSBicHA7 Ci0rCi0rICAgLyogUHJvY2VzcyB0aGUgZmlyc3QgcGl4ZWwgaW4gdGhlIHJvdyBjb21wbGV0ZWx5 ICh0aGlzIGlzIHRoZSBzYW1lIGFzICd1cCcKLSsgICAgKiBiZWNhdXNlIHRoZXJlIGlzIG9ubHkg b25lIGNhbmRpZGF0ZSBwcmVkaWN0b3IgZm9yIHRoZSBmaXJzdCByb3cpLgotKyAgICAqLwotKyAg IGZvcihpID0gMDsgaSA8IGJwcCA7IGkrKykKLSsgICB7Ci0rICAgICAgKnJwID0gKHBuZ19ieXRl KSggKnJwICsgKnBwKTsKLSsgICAgICBycCsrOwotKyAgICAgIHBwKys7Ci0rICAgfQotKwotKyAg IGZvcihpID0gMDsgaSA8IHVuYWxpZ25lZF90b3AgOyBpKyspCi0rICAgewotKyAgICAgIHZzeF9w YWV0aF9wcm9jZXNzKHJwLHBwLGEsYixjLHBhLHBiLHBjLGJwcCkKLSsgICB9Ci0rCi0rICAgd2hp bGUoIGlzdG9wID49IDE2KQotKyAgIHsKLSsgICAgICBmb3IoaSA9IDA7IGkgPCBicHAgOyBpKysp Ci0rICAgICAgewotKyAgICAgICAgIHZzeF9wYWV0aF9wcm9jZXNzKHJwLHBwLGEsYixjLHBhLHBi LHBjLGJwcCkKLSsgICAgICB9Ci0rCi0rICAgICAgcnAgLT0gYnBwOwotKyAgICAgIHBwIC09IGJw cDsKLSsgICAgICBycF92ZWMgPSB2ZWNfbGQoMCxycCk7Ci0rICAgICAgdmVjX2xkX3VuYWxpZ25l ZChwcF92ZWMscHApOwotKwotKyAgICAgIGFfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Bl cm0ocnBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9MRUZUU0hJRlRFRDFfNCksMSw0KTsKLSsg ICAgICBiX3ZlYyA9IHZzeF9jaGFyX3RvX3Nob3J0KHZlY19wZXJtKHBwX3ZlYyAsIFZTWF9DSEFS X1pFUk8gLCBWU1hfTk9UX1NISUZURUQxXzQpLDEsNCk7Ci0rICAgICAgY192ZWMgPSB2c3hfY2hh cl90b19zaG9ydCh2ZWNfcGVybShwcF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX0xFRlRTSElG VEVEMV80KSwxLDQpOwotKyAgICAgIHBhX3ZlYyA9ICh2ZWN0b3Igc2lnbmVkIHNob3J0KSB2ZWNf c3ViKGJfdmVjLGNfdmVjKTsKLSsgICAgICBwYl92ZWMgPSAodmVjdG9yIHNpZ25lZCBzaG9ydCkg dmVjX3N1YihhX3ZlYyAsIGNfdmVjKTsKLSsgICAgICBwY192ZWMgPSB2ZWNfYWRkKHBhX3ZlYyxw Yl92ZWMpOwotKyAgICAgIHBhX3ZlYyA9IHZlY19hYnMocGFfdmVjKTsKLSsgICAgICBwYl92ZWMg PSB2ZWNfYWJzKHBiX3ZlYyk7Ci0rICAgICAgcGNfdmVjID0gdmVjX2FicyhwY192ZWMpOwotKyAg ICAgIHNtYWxsZXN0X3ZlYyA9IHZlY19taW4ocGNfdmVjLCB2ZWNfbWluKHBhX3ZlYyxwYl92ZWMp KTsKLSsgICAgICBuZWFyZXN0X3ZlYyA9ICBpZl90aGVuX2Vsc2UoCi0rICAgICAgICAgICAgdmVj X2NtcGVxKHBhX3ZlYyxzbWFsbGVzdF92ZWMpLAotKyAgICAgICAgICAgIGFfdmVjLAotKyAgICAg ICAgICAgIGlmX3RoZW5fZWxzZSgKLSsgICAgICAgICAgICAgIHZlY19jbXBlcShwYl92ZWMsc21h bGxlc3RfdmVjKSwKLSsgICAgICAgICAgICAgIGJfdmVjLAotKyAgICAgICAgICAgICAgY192ZWMK LSsgICAgICAgICAgICAgICkKLSsgICAgICAgICAgICApOwotKyAgICAgIHJwX3ZlYyA9IHZlY19h ZGQocnBfdmVjLCh2c3hfc2hvcnRfdG9fY2hhcihuZWFyZXN0X3ZlYywxLDQpKSk7Ci0rCi0rICAg ICAgYV92ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShycF92ZWMgLCBWU1hfQ0hBUl9a RVJPICwgVlNYX0xFRlRTSElGVEVEMl80KSwyLDQpOwotKyAgICAgIGJfdmVjID0gdnN4X2NoYXJf dG9fc2hvcnQodmVjX3Blcm0ocHBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9OT1RfU0hJRlRF RDJfNCksMiw0KTsKLSsgICAgICBjX3ZlYyA9IHZzeF9jaGFyX3RvX3Nob3J0KHZlY19wZXJtKHBw X3ZlYyAsIFZTWF9DSEFSX1pFUk8gLCBWU1hfTEVGVFNISUZURUQyXzQpLDIsNCk7Ci0rICAgICAg cGFfdmVjID0gKHZlY3RvciBzaWduZWQgc2hvcnQpIHZlY19zdWIoYl92ZWMsY192ZWMpOwotKyAg ICAgIHBiX3ZlYyA9ICh2ZWN0b3Igc2lnbmVkIHNob3J0KSB2ZWNfc3ViKGFfdmVjICwgY192ZWMp OwotKyAgICAgIHBjX3ZlYyA9IHZlY19hZGQocGFfdmVjLHBiX3ZlYyk7Ci0rICAgICAgcGFfdmVj ID0gdmVjX2FicyhwYV92ZWMpOwotKyAgICAgIHBiX3ZlYyA9IHZlY19hYnMocGJfdmVjKTsKLSsg ICAgICBwY192ZWMgPSB2ZWNfYWJzKHBjX3ZlYyk7Ci0rICAgICAgc21hbGxlc3RfdmVjID0gdmVj X21pbihwY192ZWMsIHZlY19taW4ocGFfdmVjLHBiX3ZlYykpOwotKyAgICAgIG5lYXJlc3RfdmVj ID0gIGlmX3RoZW5fZWxzZSgKLSsgICAgICAgICAgICB2ZWNfY21wZXEocGFfdmVjLHNtYWxsZXN0 X3ZlYyksCi0rICAgICAgICAgICAgYV92ZWMsCi0rICAgICAgICAgICAgaWZfdGhlbl9lbHNlKAot KyAgICAgICAgICAgICAgdmVjX2NtcGVxKHBiX3ZlYyxzbWFsbGVzdF92ZWMpLAotKyAgICAgICAg ICAgICAgYl92ZWMsCi0rICAgICAgICAgICAgICBjX3ZlYwotKyAgICAgICAgICAgICAgKQotKyAg ICAgICAgICAgICk7Ci0rICAgICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMsKHZzeF9zaG9ydF90 b19jaGFyKG5lYXJlc3RfdmVjLDIsNCkpKTsKLSsKLSsgICAgICBhX3ZlYyA9IHZzeF9jaGFyX3Rv X3Nob3J0KHZlY19wZXJtKHJwX3ZlYyAsIFZTWF9DSEFSX1pFUk8gLCBWU1hfTEVGVFNISUZURUQz XzQpLDMsNCk7Ci0rICAgICAgYl92ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShwcF92 ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX05PVF9TSElGVEVEM180KSwzLDQpOwotKyAgICAgIGNf dmVjID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocHBfdmVjICwgVlNYX0NIQVJfWkVSTyAs IFZTWF9MRUZUU0hJRlRFRDNfNCksMyw0KTsKLSsgICAgICBwYV92ZWMgPSAodmVjdG9yIHNpZ25l ZCBzaG9ydCkgdmVjX3N1YihiX3ZlYyxjX3ZlYyk7Ci0rICAgICAgcGJfdmVjID0gKHZlY3RvciBz aWduZWQgc2hvcnQpIHZlY19zdWIoYV92ZWMgLCBjX3ZlYyk7Ci0rICAgICAgcGNfdmVjID0gdmVj X2FkZChwYV92ZWMscGJfdmVjKTsKLSsgICAgICBwYV92ZWMgPSB2ZWNfYWJzKHBhX3ZlYyk7Ci0r ICAgICAgcGJfdmVjID0gdmVjX2FicyhwYl92ZWMpOwotKyAgICAgIHBjX3ZlYyA9IHZlY19hYnMo cGNfdmVjKTsKLSsgICAgICBzbWFsbGVzdF92ZWMgPSB2ZWNfbWluKHBjX3ZlYywgdmVjX21pbihw YV92ZWMscGJfdmVjKSk7Ci0rICAgICAgbmVhcmVzdF92ZWMgPSAgaWZfdGhlbl9lbHNlKAotKyAg ICAgICAgICAgIHZlY19jbXBlcShwYV92ZWMsc21hbGxlc3RfdmVjKSwKLSsgICAgICAgICAgICBh X3ZlYywKLSsgICAgICAgICAgICBpZl90aGVuX2Vsc2UoCi0rICAgICAgICAgICAgICB2ZWNfY21w ZXEocGJfdmVjLHNtYWxsZXN0X3ZlYyksCi0rICAgICAgICAgICAgICBiX3ZlYywKLSsgICAgICAg ICAgICAgIGNfdmVjCi0rICAgICAgICAgICAgICApCi0rICAgICAgICAgICAgKTsKLSsgICAgICBy cF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYywodnN4X3Nob3J0X3RvX2NoYXIobmVhcmVzdF92ZWMsMyw0 KSkpOwotKwotKyAgICAgIHZlY19zdChycF92ZWMsMCxycCk7Ci0rCi0rICAgICAgcnAgKz0gMTY7 Ci0rICAgICAgcHAgKz0gMTY7Ci0rICAgICAgaXN0b3AgLT0gMTY7Ci0rICAgfQotKwotKyAgIGlm KGlzdG9wID4gMCkKLSsgICAgICBmb3IgKGkgPSAwOyBpIDwgaXN0b3AgJSAxNjsgaSsrKQotKyAg ICAgIHsKLSsgICAgICAgICB2c3hfcGFldGhfcHJvY2VzcyhycCxwcCxhLGIsYyxwYSxwYixwYyxi cHApCi0rICAgICAgfQotK30KLSsKLSt2b2lkIHBuZ19yZWFkX2ZpbHRlcl9yb3dfcGFldGgzX3Zz eChwbmdfcm93X2luZm9wIHJvd19pbmZvLCBwbmdfYnl0ZXAgcm93LAotKyAgIHBuZ19jb25zdF9i eXRlcCBwcmV2X3JvdykKLSt7Ci0rICBjb25zdCBwbmdfYnl0ZSBicHAgPSAzOwotKwotKyAgaW50 IGEsIGIsIGMsIHBhLCBwYiwgcGMsIHA7Ci0rICB2ZWN0b3IgdW5zaWduZWQgY2hhciBycF92ZWM7 Ci0rICB2ZWN0b3IgdW5zaWduZWQgY2hhciBwcF92ZWM7Ci0rICB2ZWN0b3IgdW5zaWduZWQgc2hv cnQgYV92ZWMsYl92ZWMsY192ZWMsbmVhcmVzdF92ZWM7Ci0rICB2ZWN0b3Igc2lnbmVkIHNob3J0 IHBhX3ZlYyxwYl92ZWMscGNfdmVjLHNtYWxsZXN0X3ZlYzsKLSsKLSsgIHZzeF9kZWNsYXJlX2Nv bW1vbl92YXJzKHJvd19pbmZvLHJvdyxwcmV2X3JvdyxicHApCi0rICBycCAtPSBicHA7Ci0rICBp Zihpc3RvcCA+PSBicHApCi0rICAgICBpc3RvcCAtPSBicHA7Ci0rCi0rICAvKiBQcm9jZXNzIHRo ZSBmaXJzdCBwaXhlbCBpbiB0aGUgcm93IGNvbXBsZXRlbHkgKHRoaXMgaXMgdGhlIHNhbWUgYXMg J3VwJwotKyAgICogYmVjYXVzZSB0aGVyZSBpcyBvbmx5IG9uZSBjYW5kaWRhdGUgcHJlZGljdG9y IGZvciB0aGUgZmlyc3Qgcm93KS4KLSsgICAqLwotKyAgZm9yKGkgPSAwOyBpIDwgYnBwIDsgaSsr KQotKyAgewotKyAgICAgKnJwID0gKHBuZ19ieXRlKSggKnJwICsgKnBwKTsKLSsgICAgIHJwKys7 Ci0rICAgICBwcCsrOwotKyAgfQotKwotKyAgZm9yKGkgPSAwOyBpIDwgdW5hbGlnbmVkX3RvcCA7 IGkrKykKLSsgIHsKLSsgICAgIHZzeF9wYWV0aF9wcm9jZXNzKHJwLHBwLGEsYixjLHBhLHBiLHBj LGJwcCkKLSsgIH0KLSsKLSsgIHdoaWxlKCBpc3RvcCA+PSAxNikKLSsgIHsKLSsgICAgIGZvcihp ID0gMDsgaSA8IGJwcCA7IGkrKykKLSsgICAgIHsKLSsgICAgICAgIHZzeF9wYWV0aF9wcm9jZXNz KHJwLHBwLGEsYixjLHBhLHBiLHBjLGJwcCkKLSsgICAgIH0KLSsKLSsgICAgIHJwIC09IGJwcDsK LSsgICAgIHBwIC09IGJwcDsKLSsgICAgIHJwX3ZlYyA9IHZlY19sZCgwLHJwKTsKLSsgICAgIHZl Y19sZF91bmFsaWduZWQocHBfdmVjLHBwKTsKLSsKLSsgICAgIGFfdmVjID0gdnN4X2NoYXJfdG9f c2hvcnQodmVjX3Blcm0ocnBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9MRUZUU0hJRlRFRDFf MyksMSwzKTsKLSsgICAgIGJfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocHBfdmVj ICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9OT1RfU0hJRlRFRDFfMyksMSwzKTsKLSsgICAgIGNfdmVj ID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocHBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZT WF9MRUZUU0hJRlRFRDFfMyksMSwzKTsKLSsgICAgIHBhX3ZlYyA9ICh2ZWN0b3Igc2lnbmVkIHNo b3J0KSB2ZWNfc3ViKGJfdmVjLGNfdmVjKTsKLSsgICAgIHBiX3ZlYyA9ICh2ZWN0b3Igc2lnbmVk IHNob3J0KSB2ZWNfc3ViKGFfdmVjICwgY192ZWMpOwotKyAgICAgcGNfdmVjID0gdmVjX2FkZChw YV92ZWMscGJfdmVjKTsKLSsgICAgIHBhX3ZlYyA9IHZlY19hYnMocGFfdmVjKTsKLSsgICAgIHBi X3ZlYyA9IHZlY19hYnMocGJfdmVjKTsKLSsgICAgIHBjX3ZlYyA9IHZlY19hYnMocGNfdmVjKTsK LSsgICAgIHNtYWxsZXN0X3ZlYyA9IHZlY19taW4ocGNfdmVjLCB2ZWNfbWluKHBhX3ZlYyxwYl92 ZWMpKTsKLSsgICAgIG5lYXJlc3RfdmVjID0gIGlmX3RoZW5fZWxzZSgKLSsgICAgICAgICAgIHZl Y19jbXBlcShwYV92ZWMsc21hbGxlc3RfdmVjKSwKLSsgICAgICAgICAgIGFfdmVjLAotKyAgICAg ICAgICAgaWZfdGhlbl9lbHNlKAotKyAgICAgICAgICAgICB2ZWNfY21wZXEocGJfdmVjLHNtYWxs ZXN0X3ZlYyksCi0rICAgICAgICAgICAgIGJfdmVjLAotKyAgICAgICAgICAgICBjX3ZlYwotKyAg ICAgICAgICAgICApCi0rICAgICAgICAgICApOwotKyAgICAgcnBfdmVjID0gdmVjX2FkZChycF92 ZWMsKHZzeF9zaG9ydF90b19jaGFyKG5lYXJlc3RfdmVjLDEsMykpKTsKLSsKLSsgICAgIGFfdmVj ID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocnBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZT WF9MRUZUU0hJRlRFRDJfMyksMiwzKTsKLSsgICAgIGJfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQo dmVjX3Blcm0ocHBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9OT1RfU0hJRlRFRDJfMyksMiwz KTsKLSsgICAgIGNfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocHBfdmVjICwgVlNY X0NIQVJfWkVSTyAsIFZTWF9MRUZUU0hJRlRFRDJfMyksMiwzKTsKLSsgICAgIHBhX3ZlYyA9ICh2 ZWN0b3Igc2lnbmVkIHNob3J0KSB2ZWNfc3ViKGJfdmVjLGNfdmVjKTsKLSsgICAgIHBiX3ZlYyA9 ICh2ZWN0b3Igc2lnbmVkIHNob3J0KSB2ZWNfc3ViKGFfdmVjICwgY192ZWMpOwotKyAgICAgcGNf dmVjID0gdmVjX2FkZChwYV92ZWMscGJfdmVjKTsKLSsgICAgIHBhX3ZlYyA9IHZlY19hYnMocGFf dmVjKTsKLSsgICAgIHBiX3ZlYyA9IHZlY19hYnMocGJfdmVjKTsKLSsgICAgIHBjX3ZlYyA9IHZl Y19hYnMocGNfdmVjKTsKLSsgICAgIHNtYWxsZXN0X3ZlYyA9IHZlY19taW4ocGNfdmVjLCB2ZWNf bWluKHBhX3ZlYyxwYl92ZWMpKTsKLSsgICAgIG5lYXJlc3RfdmVjID0gIGlmX3RoZW5fZWxzZSgK LSsgICAgICAgICAgIHZlY19jbXBlcShwYV92ZWMsc21hbGxlc3RfdmVjKSwKLSsgICAgICAgICAg IGFfdmVjLAotKyAgICAgICAgICAgaWZfdGhlbl9lbHNlKAotKyAgICAgICAgICAgICB2ZWNfY21w ZXEocGJfdmVjLHNtYWxsZXN0X3ZlYyksCi0rICAgICAgICAgICAgIGJfdmVjLAotKyAgICAgICAg ICAgICBjX3ZlYwotKyAgICAgICAgICAgICApCi0rICAgICAgICAgICApOwotKyAgICAgcnBfdmVj ID0gdmVjX2FkZChycF92ZWMsKHZzeF9zaG9ydF90b19jaGFyKG5lYXJlc3RfdmVjLDIsMykpKTsK LSsKLSsgICAgIGFfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocnBfdmVjICwgVlNY X0NIQVJfWkVSTyAsIFZTWF9MRUZUU0hJRlRFRDNfMyksMywzKTsKLSsgICAgIGJfdmVjID0gdnN4 X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocHBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9OT1Rf U0hJRlRFRDNfMyksMywzKTsKLSsgICAgIGNfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Bl cm0ocHBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9MRUZUU0hJRlRFRDNfMyksMywzKTsKLSsg ICAgIHBhX3ZlYyA9ICh2ZWN0b3Igc2lnbmVkIHNob3J0KSB2ZWNfc3ViKGJfdmVjLGNfdmVjKTsK LSsgICAgIHBiX3ZlYyA9ICh2ZWN0b3Igc2lnbmVkIHNob3J0KSB2ZWNfc3ViKGFfdmVjICwgY192 ZWMpOwotKyAgICAgcGNfdmVjID0gdmVjX2FkZChwYV92ZWMscGJfdmVjKTsKLSsgICAgIHBhX3Zl YyA9IHZlY19hYnMocGFfdmVjKTsKLSsgICAgIHBiX3ZlYyA9IHZlY19hYnMocGJfdmVjKTsKLSsg ICAgIHBjX3ZlYyA9IHZlY19hYnMocGNfdmVjKTsKLSsgICAgIHNtYWxsZXN0X3ZlYyA9IHZlY19t aW4ocGNfdmVjLCB2ZWNfbWluKHBhX3ZlYyxwYl92ZWMpKTsKLSsgICAgIG5lYXJlc3RfdmVjID0g IGlmX3RoZW5fZWxzZSgKLSsgICAgICAgICAgIHZlY19jbXBlcShwYV92ZWMsc21hbGxlc3RfdmVj KSwKLSsgICAgICAgICAgIGFfdmVjLAotKyAgICAgICAgICAgaWZfdGhlbl9lbHNlKAotKyAgICAg ICAgICAgICB2ZWNfY21wZXEocGJfdmVjLHNtYWxsZXN0X3ZlYyksCi0rICAgICAgICAgICAgIGJf dmVjLAotKyAgICAgICAgICAgICBjX3ZlYwotKyAgICAgICAgICAgICApCi0rICAgICAgICAgICAp OwotKyAgICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMsKHZzeF9zaG9ydF90b19jaGFyKG5lYXJl c3RfdmVjLDMsMykpKTsKLSsKLSsgICAgIGFfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Bl cm0ocnBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9MRUZUU0hJRlRFRDRfMyksNCwzKTsKLSsg ICAgIGJfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocHBfdmVjICwgVlNYX0NIQVJf WkVSTyAsIFZTWF9OT1RfU0hJRlRFRDRfMyksNCwzKTsKLSsgICAgIGNfdmVjID0gdnN4X2NoYXJf dG9fc2hvcnQodmVjX3Blcm0ocHBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9MRUZUU0hJRlRF RDRfMyksNCwzKTsKLSsgICAgIHBhX3ZlYyA9ICh2ZWN0b3Igc2lnbmVkIHNob3J0KSB2ZWNfc3Vi KGJfdmVjLGNfdmVjKTsKLSsgICAgIHBiX3ZlYyA9ICh2ZWN0b3Igc2lnbmVkIHNob3J0KSB2ZWNf c3ViKGFfdmVjICwgY192ZWMpOwotKyAgICAgcGNfdmVjID0gdmVjX2FkZChwYV92ZWMscGJfdmVj KTsKLSsgICAgIHBhX3ZlYyA9IHZlY19hYnMocGFfdmVjKTsKLSsgICAgIHBiX3ZlYyA9IHZlY19h YnMocGJfdmVjKTsKLSsgICAgIHBjX3ZlYyA9IHZlY19hYnMocGNfdmVjKTsKLSsgICAgIHNtYWxs ZXN0X3ZlYyA9IHZlY19taW4ocGNfdmVjLCB2ZWNfbWluKHBhX3ZlYyxwYl92ZWMpKTsKLSsgICAg IG5lYXJlc3RfdmVjID0gIGlmX3RoZW5fZWxzZSgKLSsgICAgICAgICAgIHZlY19jbXBlcShwYV92 ZWMsc21hbGxlc3RfdmVjKSwKLSsgICAgICAgICAgIGFfdmVjLAotKyAgICAgICAgICAgaWZfdGhl bl9lbHNlKAotKyAgICAgICAgICAgICB2ZWNfY21wZXEocGJfdmVjLHNtYWxsZXN0X3ZlYyksCi0r ICAgICAgICAgICAgIGJfdmVjLAotKyAgICAgICAgICAgICBjX3ZlYwotKyAgICAgICAgICAgICAp Ci0rICAgICAgICAgICApOwotKyAgICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMsKHZzeF9zaG9y dF90b19jaGFyKG5lYXJlc3RfdmVjLDQsMykpKTsKLSsKLSsgICAgIHZlY19zdChycF92ZWMsMCxy cCk7Ci0rCi0rICAgICBycCArPSAxNTsKLSsgICAgIHBwICs9IDE1OwotKyAgICAgaXN0b3AgLT0g MTY7Ci0rCi0rICAgICAvKiBTaW5jZSAxNiAlIGJwcCA9IDE2ICUgMyA9IDEsIGxhc3QgZWxlbWVu dCBvZiBhcnJheSBtdXN0Ci0rICAgICAgKiBiZSBwcm9jZWVkZWQgbWFudWFsbHkKLSsgICAgICAq LwotKyAgICAgdnN4X3BhZXRoX3Byb2Nlc3MocnAscHAsYSxiLGMscGEscGIscGMsYnBwKQotKyAg fQotKwotKyAgaWYoaXN0b3AgPiAwKQotKyAgICAgZm9yIChpID0gMDsgaSA8IGlzdG9wICUgMTY7 IGkrKykKLSsgICAgIHsKLSsgICAgICAgIHZzeF9wYWV0aF9wcm9jZXNzKHJwLHBwLGEsYixjLHBh LHBiLHBjLGJwcCkKLSsgICAgIH0KLSt9Ci0rCi0rI2VuZGlmIC8qIFBOR19QT1dFUlBDX1ZTWF9P UFQgPiAwICovCi0rI2VuZGlmIC8qIFBOR19QT1dFUlBDX1ZTWF9JTVBMRU1FTlRBVElPTiA9PSAx IChpbnRyaW5zaWNzKSAqLwotKyNlbmRpZiAvKiBSRUFEICovCi1uZXcgZmlsZSBtb2RlIDEwMDY0 NAotLS0tIC9kZXYvbnVsbAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9saWJwbmcvcG93ZXJwYy9wb3dlcnBjX2luaXQuYwotQEAgLTAsMCArMSwxMjUg QEAKLSsKLSsvKiBwb3dlcnBjX2luaXQuYyAtIFBPV0VSUEMgb3B0aW1pc2VkIGZpbHRlciBmdW5j dGlvbnMKLSsgKgotKyAqIENvcHlyaWdodCAoYykgMjAxNyBHbGVubiBSYW5kZXJzLVBlaHJzb24K LSsgKiBXcml0dGVuIGJ5IFZhZGltIEJhcmtvdiwgMjAxNy4KLSsgKiBMYXN0IGNoYW5nZWQgaW4g bGlicG5nIDEuNi4yOSBbTWFyY2ggMTYsIDIwMTddCi0rICoKLSsgKiBUaGlzIGNvZGUgaXMgcmVs ZWFzZWQgdW5kZXIgdGhlIGxpYnBuZyBsaWNlbnNlLgotKyAqIEZvciBjb25kaXRpb25zIG9mIGRp c3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgdGhlIGRpc2NsYWltZXIKLSsgKiBhbmQgbGljZW5zZSBp biBwbmcuaAotKyAqLwotKy8qIEJlbG93LCBhZnRlciBjaGVja2luZyBfX2xpbnV4X18sIHZhcmlv dXMgbm9uLUM5MCBQT1NJWCAxMDAzLjEgZnVuY3Rpb25zIGFyZQotKyAqIGNhbGxlZC4KLSsgKi8K LSsjZGVmaW5lIF9QT1NJWF9TT1VSQ0UgMQotKwotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNs dWRlICIuLi9wbmdwcml2LmgiCi0rCi0rI2lmZGVmIFBOR19SRUFEX1NVUFBPUlRFRAotKwotKyNp ZiBQTkdfUE9XRVJQQ19WU1hfT1BUID4gMAotKyNpZmRlZiBQTkdfUE9XRVJQQ19WU1hfQ0hFQ0tf U1VQUE9SVEVEIC8qIERvIHJ1bi10aW1lIGNoZWNrcyAqLwotKy8qIFdBUk5JTkc6IGl0IGlzIHN0 cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgeW91IGRvIG5vdCBidWlsZCBsaWJwbmcgd2l0aAotKyAq IHJ1bi10aW1lIGNoZWNrcyBmb3IgQ1BVIGZlYXR1cmVzIGlmIGF0IGFsbCBwb3NzaWJsZS4gIElu IHRoZSBjYXNlIG9mIHRoZSBQb3dlclBDCi0rICogVlNYIGluc3RydWN0aW9ucyB0aGVyZSBpcyBu byBwcm9jZXNzb3Itc3BlY2lmaWMgd2F5IG9mIGRldGVjdGluZyB0aGUKLSsgKiBwcmVzZW5jZSBv ZiB0aGUgcmVxdWlyZWQgc3VwcG9ydCwgdGhlcmVmb3JlIHJ1bi10aW1lIGRldGVjdGlvbiBpcyBl eHRyZW1lbHkKLSsgKiBPUyBzcGVjaWZpYy4KLSsgKgotKyAqIFlvdSBtYXkgc2V0IHRoZSBtYWNy byBQTkdfUE9XRVJQQ19WU1hfRklMRSB0byB0aGUgZmlsZSBuYW1lIG9mIGZpbGUgY29udGFpbmlu ZwotKyAqIGEgZnJhZ21lbnQgb2YgQyBzb3VyY2UgY29kZSB3aGljaCBkZWZpbmVzIHRoZSBwbmdf aGF2ZV92c3ggZnVuY3Rpb24uICBUaGVyZQotKyAqIGFyZSBhIG51bWJlciBvZiBpbXBsZW1lbnRh dGlvbnMgaW4gY29udHJpYi9wb3dlcnBjLXZzeCwgYnV0IHRoZSBvbmx5IG9uZSB0aGF0Ci0rICog aGFzIHBhcnRpYWwgc3VwcG9ydCBpcyBjb250cmliL3Bvd2VycGMtdnN4L2xpbnV4LmMgLSBhIGdl bmVyaWMgTGludXgKLSsgKiBpbXBsZW1lbnRhdGlvbiB3aGljaCByZWFkcyAvcHJvYy9jcHVmaW5v LgotKyAqLwotKyNpZm5kZWYgUE5HX1BPV0VSUENfVlNYX0ZJTEUKLSsjICBpZmRlZiBfX2xpbnV4 X18KLSsjICAgICBkZWZpbmUgIFBOR19QT1dFUlBDX1ZTWF9GSUxFICJjb250cmliL3Bvd2VycGMt dnN4L2xpbnV4X2F1eC5jIgotKyMgIGVuZGlmCi0rI2VuZGlmCi0rCi0rI2lmZGVmIFBOR19QT1dF UlBDX1ZTWF9GSUxFCi0rCi0rI2luY2x1ZGUgPHNpZ25hbC5oPiAvKiBmb3Igc2lnX2F0b21pY190 ICovCi0rc3RhdGljIGludCBwbmdfaGF2ZV92c3gocG5nX3N0cnVjdHAgcG5nX3B0cik7Ci0rI2lu Y2x1ZGUgUE5HX1BPV0VSUENfVlNYX0ZJTEUKLSsKLSsjZWxzZSAgLyogUE5HX1BPV0VSUENfVlNY X0ZJTEUgKi8KLSsjICBlcnJvciAiUE5HX1BPV0VSUENfVlNYX0ZJTEUgdW5kZWZpbmVkOiBubyBz dXBwb3J0IGZvciBydW4tdGltZSBQT1dFUlBDIFZTWCBjaGVja3MiCi0rI2VuZGlmIC8qIFBOR19Q T1dFUlBDX1ZTWF9GSUxFICovCi0rI2VuZGlmIC8qIFBOR19QT1dFUlBDX1ZTWF9DSEVDS19TVVBQ T1JURUQgKi8KLSsKLSt2b2lkCi0rcG5nX2luaXRfZmlsdGVyX2Z1bmN0aW9uc192c3gocG5nX3N0 cnVjdHAgcHAsIHVuc2lnbmVkIGludCBicHApCi0rewotKyAgIC8qIFRoZSBzd2l0Y2ggc3RhdGVt ZW50IGlzIGNvbXBpbGVkIGluIGZvciBQT1dFUlBDX1ZTWF9BUEksIHRoZSBjYWxsIHRvCi0rICAg ICogcG5nX2hhdmVfdnN4IGlzIGNvbXBpbGVkIGluIGZvciBQT1dFUlBDX1ZTWF9DSEVDSy4gSWYg Ym90aCBhcmUgZGVmaW5lZAotKyAgICAqIHRoZSBjaGVjayBpcyBvbmx5IHBlcmZvcm1lZCBpZiB0 aGUgQVBJIGhhcyBub3Qgc2V0IHRoZSBQb3dlclBDIG9wdGlvbiBvbgotKyAgICAqIG9yIG9mZiBl eHBsaWNpdGx5LiBJbiB0aGlzIGNhc2UgdGhlIGNoZWNrIGNvbnRyb2xzIHdoYXQgaGFwcGVucy4K LSsgICAgKi8KLSsKLSsjaWZkZWYgUE5HX1BPV0VSUENfVlNYX0FQSV9TVVBQT1JURUQKLSsgICBz d2l0Y2ggKChwcC0+b3B0aW9ucyA+PiBQTkdfUE9XRVJQQ19WU1gpICYgMykKLSsgICB7Ci0rICAg ICAgY2FzZSBQTkdfT1BUSU9OX1VOU0VUOgotKyAgICAgICAgIC8qIEFsbG93IHRoZSBydW4tdGlt ZSBjaGVjayB0byBleGVjdXRlIGlmIGl0IGhhcyBiZWVuIGVuYWJsZWQgLQotKyAgICAgICAgICAq IHRodXMgYm90aCBBUEkgYW5kIENIRUNLIGNhbiBiZSB0dXJuZWQgb24uICBJZiBpdCBpc24ndCBz dXBwb3J0ZWQKLSsgICAgICAgICAgKiB0aGlzIGNhc2Ugd2lsbCBmYWxsIHRocm91Z2ggdG8gdGhl ICdkZWZhdWx0JyBiZWxvdywgd2hpY2gganVzdAotKyAgICAgICAgICAqIHJldHVybnMuCi0rICAg ICAgICAgICovCi0rI2VuZGlmIC8qIFBOR19QT1dFUlBDX1ZTWF9BUElfU1VQUE9SVEVEICovCi0r I2lmZGVmIFBOR19QT1dFUlBDX1ZTWF9DSEVDS19TVVBQT1JURUQKLSsgICAgICAgICB7Ci0rICAg ICAgICAgICAgc3RhdGljIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBub192c3ggPSAtMTsgLyogbm90 IGNoZWNrZWQgKi8KLSsKLSsgICAgICAgICAgICBpZiAobm9fdnN4IDwgMCkKLSsgICAgICAgICAg ICAgICBub192c3ggPSAhcG5nX2hhdmVfdnN4KHBwKTsKLSsKLSsgICAgICAgICAgICBpZiAobm9f dnN4KQotKyAgICAgICAgICAgICAgIHJldHVybjsKLSsgICAgICAgICB9Ci0rI2lmZGVmIFBOR19Q T1dFUlBDX1ZTWF9BUElfU1VQUE9SVEVECi0rICAgICAgICAgYnJlYWs7Ci0rI2VuZGlmCi0rI2Vu ZGlmIC8qIFBOR19QT1dFUlBDX1ZTWF9DSEVDS19TVVBQT1JURUQgKi8KLSsKLSsjaWZkZWYgUE5H X1BPV0VSUENfVlNYX0FQSV9TVVBQT1JURUQKLSsgICAgICBkZWZhdWx0OiAvKiBPRkYgb3IgSU5W QUxJRCAqLwotKyAgICAgICAgIHJldHVybjsKLSsKLSsgICAgICBjYXNlIFBOR19PUFRJT05fT046 Ci0rICAgICAgICAgLyogT3B0aW9uIHR1cm5lZCBvbiAqLwotKyAgICAgICAgIGJyZWFrOwotKyAg IH0KLSsjZW5kaWYKLSsKLSsgICAvKiBJTVBPUlRBTlQ6IGFueSBuZXcgaW50ZXJuYWwgZnVuY3Rp b25zIHVzZWQgaGVyZSBtdXN0IGJlIGRlY2xhcmVkIHVzaW5nCi0rICAgICogUE5HX0lOVEVSTkFM X0ZVTkNUSU9OIGluIC4uL3BuZ3ByaXYuaC4gIFRoaXMgaXMgcmVxdWlyZWQgc28gdGhhdCB0aGUK LSsgICAgKiAncHJlZml4JyBvcHRpb24gdG8gY29uZmlndXJlIHdvcmtzOgotKyAgICAqCi0rICAg ICogICAgLi9jb25maWd1cmUgLS13aXRoLWxpYnBuZy1wcmVmaXg9Zm9vYmFyXwotKyAgICAqCi0r ICAgICogVmVyaWZ5IHlvdSBoYXZlIGdvdCB0aGlzIHJpZ2h0IGJ5IHJ1bm5pbmcgdGhlIGFib3Zl IGNvbW1hbmQsIGRvaW5nIGEgYnVpbGQKLSsgICAgKiBhbmQgZXhhbWluaW5nIHBuZ3ByZWZpeC5o OyBpdCBtdXN0IGNvbnRhaW4gYSAjZGVmaW5lIGZvciBldmVyeSBleHRlcm5hbAotKyAgICAqIGZ1 bmN0aW9uIHlvdSBhZGQuICAoTm90aWNlIHRoYXQgdGhpcyBoYXBwZW5zIGF1dG9tYXRpY2FsbHkg Zm9yIHRoZQotKyAgICAqIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLikKLSsgICAgKi8KLSsgICBw cC0+cmVhZF9maWx0ZXJbUE5HX0ZJTFRFUl9WQUxVRV9VUC0xXSA9IHBuZ19yZWFkX2ZpbHRlcl9y b3dfdXBfdnN4OwotKwotKyAgIGlmIChicHAgPT0gMykKLSsgICB7Ci0rICAgICAgcHAtPnJlYWRf ZmlsdGVyW1BOR19GSUxURVJfVkFMVUVfU1VCLTFdID0gcG5nX3JlYWRfZmlsdGVyX3Jvd19zdWIz X3ZzeDsKLSsgICAgICBwcC0+cmVhZF9maWx0ZXJbUE5HX0ZJTFRFUl9WQUxVRV9BVkctMV0gPSBw bmdfcmVhZF9maWx0ZXJfcm93X2F2ZzNfdnN4OwotKyAgICAgIHBwLT5yZWFkX2ZpbHRlcltQTkdf RklMVEVSX1ZBTFVFX1BBRVRILTFdID0gcG5nX3JlYWRfZmlsdGVyX3Jvd19wYWV0aDNfdnN4Owot KyAgIH0KLSsKLSsgICBlbHNlIGlmIChicHAgPT0gNCkKLSsgICB7Ci0rICAgICAgcHAtPnJlYWRf ZmlsdGVyW1BOR19GSUxURVJfVkFMVUVfU1VCLTFdID0gcG5nX3JlYWRfZmlsdGVyX3Jvd19zdWI0 X3ZzeDsKLSsgICAgICBwcC0+cmVhZF9maWx0ZXJbUE5HX0ZJTFRFUl9WQUxVRV9BVkctMV0gPSBw bmdfcmVhZF9maWx0ZXJfcm93X2F2ZzRfdnN4OwotKyAgICAgIHBwLT5yZWFkX2ZpbHRlcltQTkdf RklMVEVSX1ZBTFVFX1BBRVRILTFdID0gcG5nX3JlYWRfZmlsdGVyX3Jvd19wYWV0aDRfdnN4Owot KyAgIH0KLSt9Ci0rI2VuZGlmIC8qIFBOR19QT1dFUlBDX1ZTWF9PUFQgPiAwICovCi0rI2VuZGlm IC8qIFJFQUQgKi8KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRf cGFydHkvbHNzL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2xzcy9saW51eF9zeXNjYWxsX3N1cHBvcnQuaAot QEAgLTM5MTQsNyArMzkxNCw3IEBAIHN0cnVjdCBrZXJuZWxfc3RhdGZzIHsKLSAgICAgICBMU1Nf UkVHKDIsIGJ1Zik7Ci0gICAgICAgTFNTX0JPRFkodm9pZCosIG1tYXAyLCAiMCIoX19yMikpOwot ICAgICB9Ci0tI2Vsc2UKLSsjZWxpZiAhZGVmaW5lZChfX3Bvd2VycGM2NF9fKSAvKiBwcGM2NCBk b2Vzbid0IGhhdmUgbW1hcDIgKi8KLSAgICAgI2RlZmluZSBfX05SX19tbWFwMiBfX05SX21tYXAy Ci0gICAgIExTU19JTkxJTkUgX3N5c2NhbGw2KHZvaWQqLCBfbW1hcDIsICAgICAgICAgICAgdm9p ZCosIHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCwgICAgICAgICAgICAgICAg ICAgbCwgaW50LCAgICAgICAgICAgICAgIHAsCi1AQCAtNDA0NSw3ICs0MDQ1LDcgQEAgc3RydWN0 IGtlcm5lbF9zdGF0ZnMgewotICAgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICBkZWZpbmVk KF9fQVJNX0FSQ0hfM19fKSB8fCBkZWZpbmVkKF9fQVJNX0VBQklfXykgfHwgICAgICAgICAgICAg ICAgICAgICBcCi0gICAgICAoZGVmaW5lZChfX21pcHNfXykgJiYgX01JUFNfU0lNID09IF9NSVBT X1NJTV9BQkkzMikgfHwgICAgICAgICAgICAgICAgICAgXAotLSAgICAgIGRlZmluZWQoX19QUENf XykgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLSsgICAgIChkZWZpbmVkKF9fUFBDX18pICYmICFkZWZpbmVkKF9fcG93ZXJwYzY0X18pKSB8 fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot ICAgICAgKGRlZmluZWQoX19zMzkwX18pICYmICFkZWZpbmVkKF9fczM5MHhfXykpCi0gICAgIC8q IE9uIHRoZXNlIGFyY2hpdGVjdHVyZXMsIGltcGxlbWVudCBtbWFwKCkgd2l0aCBtbWFwMigpLiAq LwotICAgICBMU1NfSU5MSU5FIHZvaWQqIExTU19OQU1FKG1tYXApKHZvaWQgKnMsIHNpemVfdCBs LCBpbnQgcCwgaW50IGYsIGludCBkLAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9ub2RlL25vZGUucHkKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvbm9kZS9ub2RlLnB5Ci1AQCAtMTAsMTEgKzEwLDEyIEBA IGltcG9ydCBzeXMKLSAKLSAKLSBkZWYgR2V0QmluYXJ5UGF0aCgpOgotLSAgcmV0dXJuIG9zX3Bh dGguam9pbihvc19wYXRoLmRpcm5hbWUoX19maWxlX18pLCAqewotLSAgICAnRGFyd2luJzogKCdt YWMnLCAnbm9kZS1kYXJ3aW4teDY0JywgJ2JpbicsICdub2RlJyksCi0tICAgICdMaW51eCc6ICgn bGludXgnLCAnbm9kZS1saW51eC14NjQnLCAnYmluJywgJ25vZGUnKSwKLS0gICAgJ1dpbmRvd3Mn OiAoJ3dpbicsICdub2RlLmV4ZScpLAotLSAgfVtwbGF0Zm9ybS5zeXN0ZW0oKV0pCi0rICByZXR1 cm4gIi91c3IvYmluL25vZGUiCi0rICAjcmV0dXJuIG9zX3BhdGguam9pbihvc19wYXRoLmRpcm5h bWUoX19maWxlX18pLCAqewotKyAgIyAgJ0Rhcndpbic6ICgnbWFjJywgJ25vZGUtZGFyd2luLXg2 NCcsICdiaW4nLCAnbm9kZScpLAotKyAgIyAgJ0xpbnV4JzogKCdsaW51eCcsICdub2RlLWxpbnV4 LXg2NCcsICdiaW4nLCAnbm9kZScpLAotKyAgIyAgJ1dpbmRvd3MnOiAoJ3dpbicsICdub2RlLmV4 ZScpLAotKyAgI31bcGxhdGZvcm0uc3lzdGVtKCldKQotIAotIAotIGRlZiBSdW5Ob2RlKGNtZF9w YXJ0cywgc3Rkb3V0PU5vbmUpOgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9wZGZpdW0vdGhpcmRfcGFydHkvYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9u X2FsbG9jYXRvci9wYWdlX2FsbG9jYXRvcl9jb25zdGFudHMuaAotKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9wZGZpdW0vdGhpcmRfcGFydHkvYmFzZS9h bGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9wYWdlX2FsbG9jYXRvcl9jb25zdGFudHMuaAot QEAgLTExLDcgKzExLDcgQEAKLSAKLSBuYW1lc3BhY2UgcGRmaXVtIHsKLSBuYW1lc3BhY2UgYmFz ZSB7Ci0tI2lmIGRlZmluZWQoT1NfV0lOKQotKyNpZiBkZWZpbmVkKE9TX1dJTikgfHwgZGVmaW5l ZChBUkNIX0NQVV9QUEM2NCkKLSBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrUGFnZUFsbG9jYXRp b25HcmFudWxhcml0eVNoaWZ0ID0gMTY7ICAvLyA2NEtCCi0gI2VsaWYgZGVmaW5lZChfTUlQU19B UkNIX0xPT05HU09OKQotIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtQYWdlQWxsb2NhdGlvbkdy YW51bGFyaXR5U2hpZnQgPSAxNDsgIC8vIDE2S0IKLUBAIC0yNyw2ICsyNywxMCBAQCBzdGF0aWMg Y29uc3RleHByIHNpemVfdCBrUGFnZUFsbG9jYXRpb25HcmFudWxhcml0eUJhc2VNYXNrID0KLSAK LSAjaWYgZGVmaW5lZChfTUlQU19BUkNIX0xPT05HU09OKQotIHN0YXRpYyBjb25zdGV4cHIgc2l6 ZV90IGtTeXN0ZW1QYWdlU2l6ZSA9IDE2Mzg0OwotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBD NjQpCi0rLy8gVE9ETzogbW9kZXJuIHBwYzY0IGNhbiBkbyA0ayBhbmQgNjRrIHBhZ2Ugc2l6ZXMK LSsvLyBmb3Igbm93LCA2NGsgaXMgYXNzdW1lZAotK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtT eXN0ZW1QYWdlU2l6ZSA9IDY1NTM2OwotICNlbHNlCi0gc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qg a1N5c3RlbVBhZ2VTaXplID0gNDA5NjsKLSAjZW5kaWYKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvcGRmaXVtL3RoaXJkX3BhcnR5L2Jhc2UvYWxsb2Nh dG9yL3BhcnRpdGlvbl9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jX2NvbnN0YW50cy5oCi0rKysg cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3BkZml1bS90aGly ZF9wYXJ0eS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxv Y19jb25zdGFudHMuaAotQEAgLTMzLDYgKzMzLDggQEAgc3RhdGljIGNvbnN0IHNpemVfdCBrQnVj a2V0U2hpZnQgPSAoa0FsbG9jYXRpb25HcmFudWxhcml0eSA9PSA4KSA/IDMgOiAyOwotIC8vIHVw IGFnYWluc3QgdGhlIGVuZCBvZiBhIHN5c3RlbSBwYWdlLgotICNpZiBkZWZpbmVkKF9NSVBTX0FS Q0hfTE9PTkdTT04pCi0gc3RhdGljIGNvbnN0IHNpemVfdCBrUGFydGl0aW9uUGFnZVNoaWZ0ID0g MTY7ICAvLyA2NEtCCi0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NCkKLStzdGF0aWMgY29u c3Qgc2l6ZV90IGtQYXJ0aXRpb25QYWdlU2hpZnQgPSAxODsgIC8vIDI1NktCCi0gI2Vsc2UKLSBz dGF0aWMgY29uc3Qgc2l6ZV90IGtQYXJ0aXRpb25QYWdlU2hpZnQgPSAxNDsgIC8vIDE2S0IKLSAj ZW5kaWYKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv c3FsaXRlL2FtYWxnYW1hdGlvbi9zcWxpdGUzLmMKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc3FsaXRlL2FtYWxnYW1hdGlvbi9zcWxpdGUzLmMKLUBA IC0xMzkzNyw3ICsxMzkzNyw4IEBAIHR5cGVkZWYgSU5UMTZfVFlQRSBMb2dFc3Q7Ci0gIyBpZiBk ZWZpbmVkKGkzODYpICAgICB8fCBkZWZpbmVkKF9faTM4Nl9fKSAgIHx8IGRlZmluZWQoX01fSVg4 NikgfHwgICAgXAotICAgICAgZGVmaW5lZChfX3g4Nl82NCkgfHwgZGVmaW5lZChfX3g4Nl82NF9f KSB8fCBkZWZpbmVkKF9NX1g2NCkgIHx8ICAgIFwKLSAgICAgIGRlZmluZWQoX01fQU1ENjQpIHx8 IGRlZmluZWQoX01fQVJNKSAgICAgfHwgZGVmaW5lZChfX3g4NikgICB8fCAgICBcCi0tICAgICBk ZWZpbmVkKF9fYXJtX18pICB8fCBkZWZpbmVkKF9NX0FSTTY0KQotKyAgICAgZGVmaW5lZChfX2Fy bV9fKSAgfHwgZGVmaW5lZChfTV9BUk02NCkgICB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pICYm IFwKLSsgICAgIChfX0JZVEVfT1JERVJfXyA9PSBfX09SREVSX0xJVFRMRV9FTkRJQU5fXykKLSAj ICAgZGVmaW5lIFNRTElURV9CWVRFT1JERVIgICAgMTIzNAotICMgZWxpZiBkZWZpbmVkKHNwYXJj KSAgICB8fCBkZWZpbmVkKF9fcHBjX18pCi0gIyAgIGRlZmluZSBTUUxJVEVfQllURU9SREVSICAg IDQzMjEKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv c3FsaXRlL3NyYy9zcmMvc3FsaXRlSW50LmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvc3FsaXRlL3NyYy9zcmMvc3FsaXRlSW50LmgKLUBAIC04MzMs NyArODMzLDggQEAgdHlwZWRlZiBJTlQxNl9UWVBFIExvZ0VzdDsKLSAjIGlmIGRlZmluZWQoaTM4 NikgICAgIHx8IGRlZmluZWQoX19pMzg2X18pICAgfHwgZGVmaW5lZChfTV9JWDg2KSB8fCAgICBc Ci0gICAgICBkZWZpbmVkKF9feDg2XzY0KSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmlu ZWQoX01fWDY0KSAgfHwgICAgXAotICAgICAgZGVmaW5lZChfTV9BTUQ2NCkgfHwgZGVmaW5lZChf TV9BUk0pICAgICB8fCBkZWZpbmVkKF9feDg2KSAgIHx8ICAgIFwKLS0gICAgIGRlZmluZWQoX19h cm1fXykgIHx8IGRlZmluZWQoX01fQVJNNjQpCi0rICAgICBkZWZpbmVkKF9fYXJtX18pICB8fCBk ZWZpbmVkKF9NX0FSTTY0KSAgIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykgJiYgXAotKyAgICAg KF9fQllURV9PUkRFUl9fID09IF9fT1JERVJfTElUVExFX0VORElBTl9fKQotICMgICBkZWZpbmUg U1FMSVRFX0JZVEVPUkRFUiAgICAxMjM0Ci0gIyBlbGlmIGRlZmluZWQoc3BhcmMpICAgIHx8IGRl ZmluZWQoX19wcGNfXykKLSAjICAgZGVmaW5lIFNRTElURV9CWVRFT1JERVIgICAgNDMyMQotLS0t IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvbW9k dWxlcy9kZXNrdG9wX2NhcHR1cmUvZGlmZmVyX2Jsb2NrLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2Fw dHVyZS9kaWZmZXJfYmxvY2suY2MKLUBAIC0zMCwxMSArMzAsNyBAQCBib29sIFZlY3RvckRpZmZl cmVuY2UoY29uc3QgdWludDhfdCogaW1hZ2UxLCBjb25zdCB1aW50OF90KiBpbWFnZTIpIHsKLSAg IHN0YXRpYyBib29sICgqZGlmZl9wcm9jKShjb25zdCB1aW50OF90KiwgY29uc3QgdWludDhfdCop ID0gbnVsbHB0cjsKLSAKLSAgIGlmICghZGlmZl9wcm9jKSB7Ci0tI2lmIGRlZmluZWQoV0VCUlRD X0FSQ0hfQVJNX0ZBTUlMWSkgfHwgZGVmaW5lZChXRUJSVENfQVJDSF9NSVBTX0ZBTUlMWSkKLS0g ICAgLy8gRm9yIEFSTSBhbmQgTUlQUyBwcm9jZXNzb3JzLCBhbHdheXMgdXNlIEMgdmVyc2lvbi4K LS0gICAgLy8gVE9ETyhoY2xhbSk6IEltcGxlbWVudCBhIE5FT04gdmVyc2lvbi4KLS0gICAgZGlm Zl9wcm9jID0gJlZlY3RvckRpZmZlcmVuY2VfQzsKLS0jZWxzZQotKyNpZiBkZWZpbmVkKFdFQlJU Q19BUkNIX1g4Nl9GQU1JTFkpCi0gICAgIGJvb2wgaGF2ZV9zc2UyID0gV2ViUnRjX0dldENQVUlu Zm8oa1NTRTIpICE9IDA7Ci0gICAgIC8vIEZvciB4ODYgcHJvY2Vzc29ycywgY2hlY2sgaWYgU1NF MiBpcyBzdXBwb3J0ZWQuCi0gICAgIGlmIChoYXZlX3NzZTIgJiYga0Jsb2NrU2l6ZSA9PSAzMikg ewotQEAgLTQ0LDYgKzQwLDEwIEBAIGJvb2wgVmVjdG9yRGlmZmVyZW5jZShjb25zdCB1aW50OF90 KiBpbWFnZTEsIGNvbnN0IHVpbnQ4X3QqIGltYWdlMikgewotICAgICB9IGVsc2UgewotICAgICAg IGRpZmZfcHJvYyA9ICZWZWN0b3JEaWZmZXJlbmNlX0M7Ci0gICAgIH0KLSsjZWxzZQotKyAgICAv LyBGb3Igb3RoZXIgcHJvY2Vzc29ycywgYWx3YXlzIHVzZSBDIHZlcnNpb24uCi0rICAgIC8vIFRP RE8oaGNsYW0pOiBJbXBsZW1lbnQgYSBORU9OIHZlcnNpb24uCi0rICAgIGRpZmZfcHJvYyA9ICZW ZWN0b3JEaWZmZXJlbmNlX0M7Ci0gI2VuZGlmCi0gICB9Ci0gCi0tLS0gcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9ydGNfYmFzZS9zeXN0ZW0vYXJj aC5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dl YnJ0Yy9ydGNfYmFzZS9zeXN0ZW0vYXJjaC5oCi1AQCAtNDcsNiArNDcsMTggQEAKLSAjZWxpZiBk ZWZpbmVkKF9fcG5hY2xfXykKLSAjZGVmaW5lIFdFQlJUQ19BUkNIXzMyX0JJVFMKLSAjZGVmaW5l IFdFQlJUQ19BUkNIX0xJVFRMRV9FTkRJQU4KLSsjZWxpZiBkZWZpbmVkKF9fUFBDX18pCi0rI2Rl ZmluZSBXRUJSVENfQVJDSF9QUENfRkFNSUxZCi0rI2lmIF9fQllURV9PUkRFUl9fID09IF9fT1JE RVJfTElUVExFX0VORElBTl9fCi0rI2RlZmluZSBXRUJSVENfQVJDSF9MSVRUTEVfRU5ESUFOCi0r I2Vsc2UKLSsjZGVmaW5lIFdFQlJUQ19BUkNIX0JJR19FTkRJQU4KLSsjZW5kaWYKLSsjaWYgZGVm aW5lZChfX0xQNjRfXykKLSsjZGVmaW5lIFdFQlJUQ19BUkNIXzY0X0JJVFMKLSsjZWxzZQotKyNk ZWZpbmUgV0VCUlRDX0FSQ0hfMzJfQklUUwotKyNlbmRpZgotICNlbHNlCi0gI2Vycm9yIFBsZWFz ZSBhZGQgc3VwcG9ydCBmb3IgeW91ciBhcmNoaXRlY3R1cmUgaW4gdHlwZWRlZnMuaAotICNlbmRp ZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92OC9CVUlMRC5nbgotKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92OC9CVUlMRC5nbgotQEAgLTU0NCw2 ICs1NDQsMTIgQEAgY29uZmlnKCJ0b29sY2hhaW4iKSB7Ci0gICAgIH0KLSAgICAgaWYgKGhvc3Rf Ynl0ZW9yZGVyID09ICJsaXR0bGUiKSB7Ci0gICAgICAgZGVmaW5lcyArPSBbICJWOF9UQVJHRVRf QVJDSF9QUENfTEUiIF0KLSsgICAgICAgIGNmbGFncyArPSBbCi0rICAgICAgICAjIEVuYWJsZSB1 c2FnZSBvZiBBbHRpVmVjLCBWU1gsIGFuZCBvdGhlciBQT1dFUjggYW5kIGhpZ2hlciBmZWF0dXJl cwotKyAgICAgICAgIi1tY3B1PXBvd2VyOCIsCi0rICAgICAgICAiLW1hbHRpdmVjIiwKLSsgICAg ICAgICItbXZzeCIsCi0rICAgICAgXQotICAgICB9IGVsc2UgaWYgKGhvc3RfYnl0ZW9yZGVyID09 ICJiaWciKSB7Ci0gICAgICAgZGVmaW5lcyArPSBbICJWOF9UQVJHRVRfQVJDSF9QUENfQkUiIF0K LSAgICAgICBpZiAoY3VycmVudF9vcyA9PSAiYWl4IikgewotLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS92OC90ZXN0L0JVSUxELmduCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3Y4L3Rlc3QvQlVJTEQuZ24KLUBAIC0zMSw3ICszMSw3IEBAIGdyb3Vw KCJnbl9hbGwiKSB7Ci0gICAgIGRlcHMgKz0gWwotICAgICAgICJjY3Rlc3Q6Y2N0ZXN0IiwKLSAg ICAgICAiY2N0ZXN0OmdlbmVyYXRlLWJ5dGVjb2RlLWV4cGVjdGF0aW9ucyIsCi0tICAgICAgInVu aXR0ZXN0czp1bml0dGVzdHMiLAotKyAgICAgICMidW5pdHRlc3RzOnVuaXR0ZXN0cyIsCi0gICAg IF0KLSAgIH0KLSB9Ci1AQCAtODAsOSArODAsOSBAQCBncm91cCgidjhfYm90X2RlZmF1bHQiKSB7 Ci0gICAgICJtanN1bml0OnY4X21qc3VuaXQiLAotICAgICAibWtncm9rZHVtcDpta2dyb2tkdW1w IiwKLSAgICAgInByZXBhcnNlcjp2OF9wcmVwYXJzZXIiLAotLSAgICAidW5pdHRlc3RzOnVuaXR0 ZXN0cyIsCi0rICAgICMidW5pdHRlc3RzOnVuaXR0ZXN0cyIsCi0gICAgICJ3YXNtLWpzOnY4X3dh c21fanMiLAotLSAgICAid2FzbS1zcGVjLXRlc3RzOnY4X3dhc21fc3BlY190ZXN0cyIsCi0rICAg ICMid2FzbS1zcGVjLXRlc3RzOnY4X3dhc21fc3BlY190ZXN0cyIsCi0gICAgICJ3ZWJraXQ6djhf d2Via2l0IiwKLSAgIF0KLSB9Ci1AQCAtMTAwLDkgKzEwMCw5IEBAIGdyb3VwKCJ2OF9kZWZhdWx0 IikgewotICAgICAibWpzdW5pdDp2OF9tanN1bml0IiwKLSAgICAgIm1rZ3Jva2R1bXA6bWtncm9r ZHVtcCIsCi0gICAgICJwcmVwYXJzZXI6djhfcHJlcGFyc2VyIiwKLS0gICAgInVuaXR0ZXN0czp1 bml0dGVzdHMiLAotLSAgICAid2FzbS1qczp2OF93YXNtX2pzIiwKLS0gICAgIndhc20tc3BlYy10 ZXN0czp2OF93YXNtX3NwZWNfdGVzdHMiLAotKyAgICAjInVuaXR0ZXN0czp1bml0dGVzdHMiLAot KyAgICAjIndhc20tanM6djhfd2FzbV9qcyIsCi0rICAgICMid2FzbS1zcGVjLXRlc3RzOnY4X3dh c21fc3BlY190ZXN0cyIsCi0gICBdCi0gfQotIApkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0 Y2hlcy8wMDkxLWNocm9taXVtLXBwYzY0LW11c2wucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVz LzAwOTEtY2hyb21pdW0tcHBjNjQtbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggZGYwMTRkOGI1OTguLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMv MDA5MS1jaHJvbWl1bS1wcGM2NC1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICsw LDAgQEAKLVRoaXMgaW5jbHVkZXMgYWRkaXRpb25hbCBidWlsZCBmaXhlcyBmb3IgdGhlIG11c2wg bGliYy4KLQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xp bnV4L2JwZl9kc2wvc2VjY29tcF9tYWNyb3MuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L2JwZl9kc2wvc2VjY29tcF9tYWNyb3MuaAotQEAgLTEx LDEyICsxMSwxNCBAQAotIC8vIEFsbCB4ODZfNjQgYnVpbGRzIHVzZSBhIG5ldyBlbm91Z2ggYmlv bmljIHRvIGhhdmUgc3lzL3VzZXIuaC4KLSAjaWYgIWRlZmluZWQoX19CSU9OSUNfXykgfHwgZGVm aW5lZChfX3g4Nl82NF9fKQotICNpZiAhZGVmaW5lZChfX25hdGl2ZV9jbGllbnRfbm9uc2ZpX18p Ci0rI2lmICFkZWZpbmVkKF9fcG93ZXJwYzY0X18pIHx8IGRlZmluZWQoX19HTElCQ19fKQotICNp bmNsdWRlIDxzeXMvdXNlci5oPgotICNlbmRpZgotKyNlbmRpZgotICNpZiBkZWZpbmVkKF9fbWlw c19fKQotIC8vIHN5cy91c2VyLmggaW4gZWdsaWJjIG1pc3NlcyBzaXplX3QgZGVmaW5pdGlvbgot ICNpbmNsdWRlIDxzdGRkZWYuaD4KLS0jZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rI2Vs aWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykKLSAvLyBNYW51 YWxseSBkZWZpbmUgZ3JlZ190IG9uIHBwYzY0Ci0gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcg Z3JlZ190OwotICNlbmRpZgotQEAgLTM2MSwxMSArMzYzLDExIEBAIHR5cGVkZWYgc3RydWN0IHB0 X3JlZ3MgcmVnc19zdHJ1Y3Q7Ci0gI2RlZmluZSBTRUNDT01QX0FSQ0ggQVVESVRfQVJDSF9QUEM2 NAotICNlbmRpZgotIAotLSNkZWZpbmUgU0VDQ09NUF9SRUcoX2N0eCwgX3JlZykgKChfY3R4KS0+ dWNfbWNvbnRleHQucmVncy0+Z3ByW19yZWddKQotKyNkZWZpbmUgU0VDQ09NUF9SRUcoX2N0eCwg X3JlZykgKCgoc3RydWN0IHB0X3JlZ3MgKikoX2N0eCktPnVjX21jb250ZXh0LnJlZ3MpLT5ncHJb X3JlZ10pCi0gCi0gI2RlZmluZSBTRUNDT01QX1JFU1VMVChfY3R4KSBTRUNDT01QX1JFRyhfY3R4 LCAzKQotICNkZWZpbmUgU0VDQ09NUF9TWVNDQUxMKF9jdHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDAp Ci0tI2RlZmluZSBTRUNDT01QX0lQKF9jdHgpIChfY3R4KS0+dWNfbWNvbnRleHQucmVncy0+bmlw Ci0rI2RlZmluZSBTRUNDT01QX0lQKF9jdHgpICgoc3RydWN0IHB0X3JlZ3MgKikoX2N0eCktPnVj X21jb250ZXh0LnJlZ3MpLT5uaXAKLSAjZGVmaW5lIFNFQ0NPTVBfUEFSTTEoX2N0eCkgU0VDQ09N UF9SRUcoX2N0eCwgMykKLSAjZGVmaW5lIFNFQ0NPTVBfUEFSTTIoX2N0eCkgU0VDQ09NUF9SRUco X2N0eCwgNCkKLSAjZGVmaW5lIFNFQ0NPTVBfUEFSTTMoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwg NSkKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9z ZWNjb21wLWJwZi9zeXNjYWxsLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYvc3lzY2FsbC5jYwotQEAgLTQ5Nyw5ICs0OTcs OSBAQCB2b2lkIFN5c2NhbGw6OlB1dFZhbHVlSW5VY29udGV4dChpbnRwdHJfdCByZXRfdmFsLCB1 Y29udGV4dF90KiBjdHgpIHsKLSAgIC8vIFNhbWUgYXMgTUlQUywgbmVlZCB0byBpbnZlcnQgcmV0 IGFuZCBzZXQgZXJyb3IgcmVnaXN0ZXIgKGNyMC5TTykKLSAgIGlmIChyZXRfdmFsIDw9IC0xICYm IHJldF92YWwgPj0gLTQwOTUpIHsKLSAgICAgcmV0X3ZhbCA9IC1yZXRfdmFsOwotLSAgICBjdHgt PnVjX21jb250ZXh0LnJlZ3MtPmNjciB8PSAoMSA8PCAyOCk7Ci0rICAgICgoc3RydWN0IHB0X3Jl Z3MgKiljdHgtPnVjX21jb250ZXh0LnJlZ3MpLT5jY3IgfD0gKDEgPDwgMjgpOwotICAgfSBlbHNl IHsKLS0gICAgY3R4LT51Y19tY29udGV4dC5yZWdzLT5jY3IgJj0gfigxIDw8IDI4KTsKLSsgICAg KChzdHJ1Y3QgcHRfcmVncyAqKWN0eC0+dWNfbWNvbnRleHQucmVncyktPmNjciAmPSB+KDEgPDwg MjgpOwotICAgfQotICNlbmRpZgotICAgU0VDQ09NUF9SRVNVTFQoY3R4KSA9IHN0YXRpY19jYXN0 PGdyZWdfdD4ocmV0X3ZhbCk7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Vuc2NhbGVkY3ljbGVj bG9jay5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0 eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC91bnNjYWxlZGN5Y2xlY2xvY2suY2MKLUBA IC0yMCw3ICsyMCw3IEBACi0gI2luY2x1ZGUgPGludHJpbi5oPgotICNlbmRpZgotIAotLSNpZiBk ZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBkZWZpbmVkKF9fcHBjX18pCi0rI2lmIChkZWZpbmVkKF9f cG93ZXJwY19fKSB8fCBkZWZpbmVkKF9fcHBjX18pKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykKLSAj aW5jbHVkZSA8c3lzL3BsYXRmb3JtL3BwYy5oPgotICNlbmRpZgotIAotQEAgLTUzLDcgKzUzLDcg QEAgZG91YmxlIFVuc2NhbGVkQ3ljbGVDbG9jazo6RnJlcXVlbmN5KCkgewotICAgcmV0dXJuIGJh c2VfaW50ZXJuYWw6Ok5vbWluYWxDUFVGcmVxdWVuY3koKTsKLSB9Ci0gCi0tI2VsaWYgZGVmaW5l ZChfX3Bvd2VycGNfXykgfHwgZGVmaW5lZChfX3BwY19fKQotKyNlbGlmIChkZWZpbmVkKF9fcG93 ZXJwY19fKSB8fCBkZWZpbmVkKF9fcHBjX18pKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykKLSAKLSBp bnQ2NF90IFVuc2NhbGVkQ3ljbGVDbG9jazo6Tm93KCkgewotICAgcmV0dXJuIF9fcHBjX2dldF90 aW1lYmFzZSgpOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC91bnNjYWxlZGN5Y2xlY2xvY2suaAot KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9hYnNlaWwt Y3BwL2Fic2wvYmFzZS9pbnRlcm5hbC91bnNjYWxlZGN5Y2xlY2xvY2suaAotQEAgLTQ2LDcgKzQ2 LDcgQEAKLSAKLSAvLyBUaGUgZm9sbG93aW5nIHBsYXRmb3JtcyBoYXZlIGFuIGltcGxlbWVudGF0 aW9uIG9mIGEgaGFyZHdhcmUgY291bnRlci4KLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVm aW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBcCi0tICBkZWZpbmVk KF9fcG93ZXJwY19fKSB8fCBkZWZpbmVkKF9fcHBjX18pIHx8IFwKLSsgICgoZGVmaW5lZChfX3Bv d2VycGNfXykgfHwgZGVmaW5lZChfX3BwY19fKSkgJiYgZGVmaW5lZChfX0dMSUJDX18pKSB8fCBc Ci0gICBkZWZpbmVkKF9NX0lYODYpIHx8IGRlZmluZWQoX01fWDY0KQotICNkZWZpbmUgQUJTTF9I QVZFX1VOU0NBTEVEX0NZQ0xFQ0xPQ0tfSU1QTEVNRU5UQVRJT04gMQotICNlbHNlCi0tLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFr cGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3RocmVhZF9pbmZvLmNjCi0r KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFk L2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3RocmVhZF9pbmZv LmNjCi1AQCAtMjczLDYgKzI3Myw5IEBAIHZvaWQgVGhyZWFkSW5mbzo6RmlsbENQVUNvbnRleHQo UmF3Q29udGV4dENQVSogb3V0KSBjb25zdCB7Ci0gCi0gI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2 NF9fKQotIAotKyNpbmNsdWRlIDxhc20vZWxmLmg+Ci0rI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4K LSsKLSB1aW50cHRyX3QgVGhyZWFkSW5mbzo6R2V0SW5zdHJ1Y3Rpb25Qb2ludGVyKCkgY29uc3Qg ewotICAgICByZXR1cm4gbWNvbnRleHQuZ3BfcmVnc1tQVF9OSVBdOwotIH0KLUBAIC0yOTAsOSAr MjkzLDkgQEAgdm9pZCBUaHJlYWRJbmZvOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVKiBv dXQpIGNvbnN0IHsKLSAgICAgb3V0LT5jdHIgPSBtY29udGV4dC5ncF9yZWdzW1BUX0NUUl07Ci0g ICAgIAotICAgICBmb3IgKGludCBpID0gMDsgaSA8IE1EX0ZMT0FUSU5HU0FWRUFSRUFfUFBDX0ZQ Ul9DT1VOVDsgaSsrKQotLSAgICAgICAgb3V0LT5mbG9hdF9zYXZlLmZwcmVnc1tpXSA9IG1jb250 ZXh0LmZwX3JlZ3NbaV07Ci0rICAgICAgICBvdXQtPmZsb2F0X3NhdmUuZnByZWdzW2ldID0gKCh1 aW50NjRfdCAqKSZtY29udGV4dC5mcF9yZWdzKVtpXTsKLSAKLS0gICAgb3V0LT5mbG9hdF9zYXZl LmZwc2NyID0gbWNvbnRleHQuZnBfcmVnc1tORlBSRUctMV07Ci0rICAgIG91dC0+ZmxvYXRfc2F2 ZS5mcHNjciA9ICgodWludDY0X3QgKikmbWNvbnRleHQuZnBfcmVncylbRUxGX05GUFJFRy0xXTsK LSAKLSAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9WRUNUT1JTQVZFQVJFQV9QUENfVlJfQ09V TlQ7IGkrKykKLSAgICAgICAgIG91dC0+dmVjdG9yX3NhdmUuc2F2ZV92cltpXSA9IFwKLS0tLSBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJl YWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVy LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Jy ZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250 ZXh0X3JlYWRlci5jYwotQEAgLTI1Nyw2ICsyNTcsOSBAQCB2b2lkIFVDb250ZXh0UmVhZGVyOjpG aWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0X3QgKnVjKSB7 Ci0gCi0gI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotIAotKyNpbmNsdWRlIDxhc20vZWxm Lmg+Ci0rI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KLSsKLSB1aW50cHRyX3QgVUNvbnRleHRSZWFk ZXI6OkdldFN0YWNrUG9pbnRlcihjb25zdCB1Y29udGV4dF90KiB1YykgewotICAgICByZXR1cm4g dWMtPnVjX21jb250ZXh0LmdwX3JlZ3NbTURfQ09OVEVYVF9QUEM2NF9SRUdfU1BdOwotIH0KLUBA IC0yODAsOSArMjgzLDkgQEAgdm9pZCBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNvbnRleHQoUmF3 Q29udGV4dENQVSogb3V0LCBjb25zdCB1Y29udGV4dF90KiB1YywKLSAgICAgb3V0LT5jdHIgPSB1 Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9DVFJdOwotICAgICAKLSAgICAgZm9yIChpbnQgaSA9 IDA7IGkgPCBNRF9GTE9BVElOR1NBVkVBUkVBX1BQQ19GUFJfQ09VTlQ7IGkrKykKLS0gICAgICAg IG91dC0+ZmxvYXRfc2F2ZS5mcHJlZ3NbaV0gPSB1Yy0+dWNfbWNvbnRleHQuZnBfcmVnc1tpXTsK LSsgICAgICAgIG91dC0+ZmxvYXRfc2F2ZS5mcHJlZ3NbaV0gPSAoKHVpbnQ2NF90ICopJnVjLT51 Y19tY29udGV4dC5mcF9yZWdzKVtpXTsKLSAKLS0gICAgb3V0LT5mbG9hdF9zYXZlLmZwc2NyID0g dWMtPnVjX21jb250ZXh0LmZwX3JlZ3NbTkZQUkVHLTFdOwotKyAgICBvdXQtPmZsb2F0X3NhdmUu ZnBzY3IgPSAoKHVpbnQ2NF90ICopJnVjLT51Y19tY29udGV4dC5mcF9yZWdzKVtFTEZfTkZQUkVH LTFdOwotIAotICAgICBmb3IgKGludCBpID0gMDsgaSA8IE1EX1ZFQ1RPUlNBVkVBUkVBX1BQQ19W Ul9DT1VOVDsgaSsrKQotICAgICAgICAgb3V0LT52ZWN0b3Jfc2F2ZS5zYXZlX3ZyW2ldID0KLS0t LSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQv YnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNjCi0r KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFk L2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5jYwot QEAgLTEwNSw2ICsxMDUsMTEgQEAKLSAjZGVmaW5lIFBSX1NFVF9QVFJBQ0VSIDB4NTk2MTZkNjEK LSAjZW5kaWYKLSAKLSsvKiBtdXNsIGhhY2ssIGNhbid0IGluY2x1ZGUgYXNtL3B0cmFjZS5oIGFz IHRoYXQgY2F1c2VzIGNvbmZsaWN0cyAqLwotKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pICYm ICFkZWZpbmVkKFBUX05JUCkKLSsjZGVmaW5lIFBUX05JUCAzMgotKyNlbmRpZgotKwotIG5hbWVz cGFjZSBnb29nbGVfYnJlYWtwYWQgewotIAotIG5hbWVzcGFjZSB7CmRpZmYgLS1naXQgYS9zcmNw a2dzL3F0NS9wYXRjaGVzLzAwOTItY2hyb21pdW0tcHBjNjQtYmUucGF0Y2ggYi9zcmNwa2dzL3F0 NS9wYXRjaGVzLzAwOTItY2hyb21pdW0tcHBjNjQtYmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IGNlODMxMWM5YmEyLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9w YXRjaGVzLzAwOTItY2hyb21pdW0tcHBjNjQtYmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwy OTcwICswLDAgQEAKLVRoaXMgYWRkcyBiaWcgZW5kaWFuIHN1cHBvcnQvZml4ZXMgaW4gYWRkaXRp b24gdG8gdGhlIGJhc2UgcHBjNjRsZSBwYXRjaC4KLQotUGluZyBxNjYgaWYgeW91J3JlIHVwZGF0 aW5nIHF0NSBhbmQgdGhlIHBhdGNoIGRvZXMgbm90IGFwcGx5IGFueW1vcmUuCi0KLVNvdXJjZTog aHR0cHM6Ly93aWtpLnJhcHRvcmNzLmNvbS93L2luZGV4LnBocD90aXRsZT1Qb3J0aW5nL0Nocm9t aXVtL0JFCi0KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9hbGxv Y2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2MuY2MKLSsrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9j YXRvci9wYXJ0aXRpb25fYWxsb2MuY2MKLUBAIC00NDAsNyArNDQwLDcgQEAgc3RhdGljIHNpemVf dCBQYXJ0aXRpb25QdXJnZVBhZ2UoaW50ZXJuYWw6OlBhcnRpdGlvblBhZ2UqIHBhZ2UsIGJvb2wg ZGlzY2FyZCkgewotICNlbmRpZgotICAgICAgIH0KLSAgICAgICAvLyBUZXJtaW5hdGUgdGhlIGZy ZWVsaXN0IGNoYWluLgotLSAgICAgICplbnRyeV9wdHIgPSBudWxscHRyOwotKyAgICAgICplbnRy eV9wdHIgPSBpbnRlcm5hbDo6UGFydGl0aW9uRnJlZWxpc3RFbnRyeTo6VHJhbnNmb3JtKG51bGxw dHIpOwotICAgICAgIC8vIFRoZSBmcmVlbGlzdCBoZWFkIGlzIHN0b3JlZCB1bm1hc2tlZC4KLSAg ICAgICBwYWdlLT5mcmVlbGlzdF9oZWFkID0KLSAgICAgICAgICAgaW50ZXJuYWw6OlBhcnRpdGlv bkZyZWVsaXN0RW50cnk6OlRyYW5zZm9ybShwYWdlLT5mcmVlbGlzdF9oZWFkKTsKLS0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9pMThuL2ljdV91dGlsLmNjCi0rKysg cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvaTE4bi9pY3VfdXRpbC5jYwot QEAgLTc1LDcgKzc1LDExIEBAIHdjaGFyX3QgZ19kZWJ1Z19pY3VfcGZfZmlsZW5hbWVbX01BWF9Q QVRIXTsKLSAvLyBObyBuZWVkIHRvIGNoYW5nZSB0aGUgZmlsZW5hbWUgaW4gbXVsdGlwbGUgcGxh Y2VzIChneXAgZmlsZXMsIHdpbmRvd3MKLSAvLyBidWlsZCBwa2cgY29uZmlndXJhdGlvbnMsIGV0 YykuICdsJyBzdGFuZHMgZm9yIExpdHRsZSBFbmRpYW4uCi0gLy8gVGhpcyB2YXJpYWJsZSBpcyBl eHBvcnRlZCB0aHJvdWdoIHRoZSBoZWFkZXIgZmlsZS4KLSsjaWYgZGVmaW5lZChBUkNIX0NQVV9M SVRUTEVfRU5ESUFOKQotIGNvbnN0IGNoYXIga0ljdURhdGFGaWxlTmFtZVtdID0gImljdWR0bC5k YXQiOwotKyNlbHNlCi0rY29uc3QgY2hhciBrSWN1RGF0YUZpbGVOYW1lW10gPSAiaWN1ZHRiLmRh dCI7Ci0rI2VuZGlmCi0gI2lmIGRlZmluZWQoT1NfQU5EUk9JRCkKLSBjb25zdCBjaGFyIGtBbmRy b2lkQXNzZXRzSWN1RGF0YUZpbGVOYW1lW10gPSAiYXNzZXRzL2ljdWR0bC5kYXQiOwotICNlbmRp ZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL21lbW9yeS9zaGFy ZWRfbWVtb3J5X21hcHBpbmdfdW5pdHRlc3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vYmFzZS9tZW1vcnkvc2hhcmVkX21lbW9yeV9tYXBwaW5nX3VuaXR0ZXN0LmNj Ci1AQCAtMTIsNiArMTIsNyBAQAotICNpbmNsdWRlICJiYXNlL2NvbnRhaW5lcnMvc3Bhbi5oIgot ICNpbmNsdWRlICJiYXNlL21lbW9yeS9yZWFkX29ubHlfc2hhcmVkX21lbW9yeV9yZWdpb24uaCIK LSAjaW5jbHVkZSAidGVzdGluZy9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgiCi0rI2luY2x1 ZGUgImJhc2Uvc3lzX2J5dGVvcmRlci5oIgotIAotIG5hbWVzcGFjZSBiYXNlIHsKLSAKLUBAIC02 OSw4ICs3MCw4IEBAIFRFU1RfRihTaGFyZWRNZW1vcnlNYXBwaW5nVGVzdCwgU3BhbldpdGhBdXRv RGVkdWNlZEVsZW1lbnRDb3VudCkgewotIAotICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3cml0 ZV9zcGFuLnNpemUoKTsgKytpKQotICAgICB3cml0ZV9zcGFuW2ldID0gaSArIDE7Ci0tICBFWFBF Q1RfRVEoMHgwNDAzMDIwMXUsIHJlYWRfc3BhblswXSk7Ci0tICBFWFBFQ1RfRVEoMHgwODA3MDYw NXUsIHJlYWRfc3BhblsxXSk7Ci0rICBFWFBFQ1RfRVEoSG9zdFRvTmV0MzIoMHgwMTAyMDMwNHUp LCByZWFkX3NwYW5bMF0pOwotKyAgRVhQRUNUX0VRKEhvc3RUb05ldDMyKDB4MDUwNjA3MDh1KSwg cmVhZF9zcGFuWzFdKTsKLSB9Ci0gCi0gVEVTVF9GKFNoYXJlZE1lbW9yeU1hcHBpbmdUZXN0LCBT cGFuV2l0aEV4cGxpY2l0RWxlbWVudENvdW50KSB7Ci1AQCAtOTUsMTMgKzk2LDEzIEBAIFRFU1Rf RihTaGFyZWRNZW1vcnlNYXBwaW5nVGVzdCwgU3BhbldpdGhFeHBsaWNpdEVsZW1lbnRDb3VudCkg ewotIAotICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3cml0ZV9zcGFuLnNpemUoKTsgKytpKQot ICAgICB3cml0ZV9zcGFuW2ldID0gaSArIDE7Ci0tICBFWFBFQ1RfRVEoMHgwNDAzMDIwMXUsIHJl YWRfc3BhblswXSk7Ci0tICBFWFBFQ1RfRVEoMHgwODA3MDYwNXUsIHJlYWRfc3BhblsxXSk7Ci0t ICBFWFBFQ1RfRVEoMHgwNDAzMDIwMXUsIHJlYWRfc3Bhbl8yWzBdKTsKLSsgIEVYUEVDVF9FUShI b3N0VG9OZXQzMigweDAxMDIwMzA0dSksIHJlYWRfc3BhblswXSk7Ci0rICBFWFBFQ1RfRVEoSG9z dFRvTmV0MzIoMHgwNTA2MDcwOHUpLCByZWFkX3NwYW5bMV0pOwotKyAgRVhQRUNUX0VRKEhvc3RU b05ldDMyKDB4MDEwMjAzMDR1KSwgcmVhZF9zcGFuXzJbMF0pOwotIAotICAgc3RkOjpmaWxsKHdy aXRlX3NwYW5fMi5iZWdpbigpLCB3cml0ZV9zcGFuXzIuZW5kKCksIDApOwotICAgRVhQRUNUX0VR KDB1LCByZWFkX3NwYW5bMF0pOwotLSAgRVhQRUNUX0VRKDB4MDgwNzA2MDV1LCByZWFkX3NwYW5b MV0pOwotKyAgRVhQRUNUX0VRKEhvc3RUb05ldDMyKDB4MDUwNjA3MDh1KSwgcmVhZF9zcGFuWzFd KTsKLSAgIEVYUEVDVF9FUSgwdSwgcmVhZF9zcGFuXzJbMF0pOwotIH0KLSAKLS0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9tZXRyaWNzL2J1Y2tldF9yYW5nZXNfdW5p dHRlc3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9tZXRy aWNzL2J1Y2tldF9yYW5nZXNfdW5pdHRlc3QuY2MKLUBAIC03LDYgKzcsNyBAQAotICNpbmNsdWRl IDxzdGRpbnQuaD4KLSAKLSAjaW5jbHVkZSAidGVzdGluZy9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0 ZXN0LmgiCi0rI2luY2x1ZGUgImJhc2Uvc3lzX2J5dGVvcmRlci5oIgotIAotIG5hbWVzcGFjZSBi YXNlIHsKLSBuYW1lc3BhY2UgewotQEAgLTY0LDEzICs2NSwyMSBAQCBURVNUKEJ1Y2tldFJhbmdl c1Rlc3QsIENoZWNrc3VtKSB7Ci0gICByYW5nZXMuc2V0X3JhbmdlKDIsIDIpOwotIAotICAgcmFu Z2VzLlJlc2V0Q2hlY2tzdW0oKTsKLSsjaWYgZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFO KQotICAgRVhQRUNUX0VRKDI4OTIxNzI1M3UsIHJhbmdlcy5jaGVja3N1bSgpKTsKLSsjZWxzZQot KyAgRVhQRUNUX0VRKDI3NjcyMzE1OTZ1LCByYW5nZXMuY2hlY2tzdW0oKSk7Ci0rI2VuZGlmCi0g Ci0gICByYW5nZXMuc2V0X3JhbmdlKDIsIDMpOwotICAgRVhQRUNUX0ZBTFNFKHJhbmdlcy5IYXNW YWxpZENoZWNrc3VtKCkpOwotIAotICAgcmFuZ2VzLlJlc2V0Q2hlY2tzdW0oKTsKLSsjaWYgZGVm aW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOKQotICAgRVhQRUNUX0VRKDI4NDM4MzU3NzZ1LCBy YW5nZXMuY2hlY2tzdW0oKSk7Ci0rI2Vsc2UKLSsgIEVYUEVDVF9FUSgzNTU2MjIzNzM4dSwgcmFu Z2VzLmNoZWNrc3VtKCkpOwotKyNlbmRpZgotICAgRVhQRUNUX1RSVUUocmFuZ2VzLkhhc1ZhbGlk Q2hlY2tzdW0oKSk7Ci0gfQotIAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS9iYXNlL3BpY2tsZS5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9i YXNlL3BpY2tsZS5jYwotQEAgLTgyLDcgKzgyLDEyIEBAIGlubGluZSBjb25zdCBjaGFyKiBQaWNr bGVJdGVyYXRvcjo6R2V0UmVhZFBvaW50ZXJBbmRBZHZhbmNlKAotIH0KLSAKLSBib29sIFBpY2ts ZUl0ZXJhdG9yOjpSZWFkQm9vbChib29sKiByZXN1bHQpIHsKLS0gIHJldHVybiBSZWFkQnVpbHRp blR5cGUocmVzdWx0KTsKLSsgIGludCBpbnRfcmVzdWx0OwotKyAgaWYgKFJlYWRCdWlsdGluVHlw ZSgmaW50X3Jlc3VsdCkpIHsKLSsgICAgKnJlc3VsdCA9IHN0YXRpY19jYXN0PGJvb2w+KGludF9y ZXN1bHQpOwotKyAgICByZXR1cm4gdHJ1ZTsKLSsgIH0gZWxzZQotKyAgICByZXR1cm4gZmFsc2U7 Ci0gfQotIAotIGJvb2wgUGlja2xlSXRlcmF0b3I6OlJlYWRJbnQoaW50KiByZXN1bHQpIHsKLS0t LSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9zaGExLmNjCi0rKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2Uvc2hhMS5jYwotQEAgLTExMCw4ICsx MTAsMTAgQEAgdm9pZCBTZWN1cmVIYXNoQWxnb3JpdGhtOjpGaW5hbCgpIHsKLSAgIFBhZCgpOwot ICAgUHJvY2VzcygpOwotIAotKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4pCi0g ICBmb3IgKGF1dG8mIHQgOiBIKQotICAgICB0ID0gQnl0ZVN3YXAodCk7Ci0rI2VuZGlmCi0gfQot IAotIHZvaWQgU2VjdXJlSGFzaEFsZ29yaXRobTo6VXBkYXRlKGNvbnN0IHZvaWQqIGRhdGEsIHNp emVfdCBuYnl0ZXMpIHsKLUBAIC0xNTcsOCArMTU5LDEwIEBAIHZvaWQgU2VjdXJlSGFzaEFsZ29y aXRobTo6UHJvY2VzcygpIHsKLSAgIC8vCi0gICAvLyBXIGFuZCBNIGFyZSBpbiBhIHVuaW9uLCBz byBubyBuZWVkIHRvIG1lbWNweS4KLSAgIC8vIG1lbWNweShXLCBNLCBzaXplb2YoTSkpOwotKyNp ZiBkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4pCi0gICBmb3IgKHQgPSAwOyB0IDwgMTY7 ICsrdCkKLSAgICAgV1t0XSA9IEJ5dGVTd2FwKFdbdF0pOwotKyNlbmRpZgotIAotICAgLy8gYi4K LSAgIGZvciAodCA9IDE2OyB0IDwgODA7ICsrdCkKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vYmFzZS9zdHJpbmdzL3N0cmluZ19udW1iZXJfY29udmVyc2lvbnNfdW5pdHRl c3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9zdHJpbmdz L3N0cmluZ19udW1iZXJfY29udmVyc2lvbnNfdW5pdHRlc3QuY2MKLUBAIC04MjksMTIgKzgyOSwy MSBAQCBURVNUKFN0cmluZ051bWJlckNvbnZlcnNpb25zVGVzdCwgRG91YmxlVG9TdHJpbmcpIHsK LSAgIH0KLSAKLSAgIC8vIFRoZSBmb2xsb3dpbmcgdHdvIHZhbHVlcyB3ZXJlIHNlZW4gaW4gY3Jh c2hlcyBpbiB0aGUgd2lsZC4KLSsjaWYgZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOKQot ICAgY29uc3QgY2hhciBpbnB1dF9ieXRlc1s4XSA9IHswLCAwLCAwLCAwLCAnXHhlZScsICdceDZk JywgJ1x4NzMnLCAnXHg0Mid9OwotKyNlbHNlCi0rICBjb25zdCBjaGFyIGlucHV0X2J5dGVzWzhd ID0geydceDQyJywgJ1x4NzMnLCAnXHg2ZCcsICdceGVlJywgMCwgMCwgMCwgMH07Ci0rI2VuZGlm Ci0gICBkb3VibGUgaW5wdXQgPSAwOwotICAgbWVtY3B5KCZpbnB1dCwgaW5wdXRfYnl0ZXMsIGJh c2U6OnNpemUoaW5wdXRfYnl0ZXMpKTsKLSAgIEVYUEVDVF9FUSgiMTMzNTE3OTA4Mzc3NiIsIE51 bWJlclRvU3RyaW5nKGlucHV0KSk7Ci0rI2lmIGRlZmluZWQoQVJDSF9DUFVfTElUVExFX0VORElB TikKLSAgIGNvbnN0IGNoYXIgaW5wdXRfYnl0ZXMyWzhdID0KLSAgICAgICB7MCwgMCwgMCwgJ1x4 YTAnLCAnXHhkYScsICdceDZjJywgJ1x4NzMnLCAnXHg0Mid9OwotKyNlbHNlCi0rICBjb25zdCBj aGFyIGlucHV0X2J5dGVzMls4XSA9Ci0rICAgICAgeydceDQyJywgJ1x4NzMnLCAnXHg2YycsICdc eGRhJywgJ1x4YTAnLCAwLCAwLCAwfTsKLSsjZW5kaWYKLSAgIGlucHV0ID0gMDsKLSAgIG1lbWNw eSgmaW5wdXQsIGlucHV0X2J5dGVzMiwgYmFzZTo6c2l6ZShpbnB1dF9ieXRlczIpKTsKLSAgIEVY UEVDVF9FUSgiMTMzNDg5MDMzMjE2MCIsIE51bWJlclRvU3RyaW5nKGlucHV0KSk7Ci0tLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvdGhpcmRfcGFydHkvZG1nX2ZwL2R0 b2EuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS90aGlyZF9w YXJ0eS9kbWdfZnAvZHRvYS5jYwotQEAgLTE4Niw3ICsxODYsMTEgQEAKLSAgKgl1c2VkIGZvciBp bnB1dCBtb3JlIHRoYW4gU1RSVE9EX0RJR0xJTSBkaWdpdHMgbG9uZyAoZGVmYXVsdCA0MCkuCi0g ICovCi0gCi0rI2lmZGVmIF9fQklHX0VORElBTl9fCi0rI2RlZmluZSBJRUVFX01DNjhrCi0rI2Vs c2UKLSAjZGVmaW5lIElFRUVfODA4NwotKyNlbmRpZgotICNkZWZpbmUgTk9fSEVYX0ZQCi0gCi0g I2lmbmRlZiBMb25nCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2NvbXBv bmVudHMvc2FmZV9icm93c2luZy9kYi91dGlsX3VuaXR0ZXN0LmNjCi0rKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL2NvbXBvbmVudHMvc2FmZV9icm93c2luZy9kYi91dGlsX3Vu aXR0ZXN0LmNjCi1AQCAtMTIsNiArMTIsMTIgQEAKLSAjaW5jbHVkZSAidGVzdGluZy9ndGVzdC9p bmNsdWRlL2d0ZXN0L2d0ZXN0LmgiCi0gI2luY2x1ZGUgInVybC9ndXJsLmgiCi0gCi0rI2lmIGRl ZmluZWQoT1NfV0lOKQotKyNpbmNsdWRlIDx3aW5zb2NrMi5oPgotKyNlbGlmIGRlZmluZWQoT1Nf UE9TSVgpCi0rI2luY2x1ZGUgPGFycGEvaW5ldC5oPgotKyNlbmRpZgotKwotIG5hbWVzcGFjZSBz YWZlX2Jyb3dzaW5nIHsKLSAKLSBURVNUKFNhZmVCcm93c2luZ0RiVXRpbFRlc3QsIFVybFRvRnVs bEhhc2hlcykgewotQEAgLTgzLDcgKzg5LDcgQEAgVEVTVChTYWZlQnJvd3NpbmdEYlV0aWxUZXN0 LCBTdHJpbmdUb1NCRnVsbEhhc2hBbmRTQkZ1bGxIYXNoVG9TdHJpbmcpIHsKLSAgIC8vIDMxIGNo YXJzIHBsdXMgdGhlIGxhc3QgXDAgYXMgZnVsbF9oYXNoLgotICAgY29uc3Qgc3RkOjpzdHJpbmcg aGFzaF9pbiA9ICIxMjM0NTY3ODkwMjIzNDU2Nzg5MDMyMzQ1Njc4OTAxMiI7Ci0gICBTQkZ1bGxI YXNoIGhhc2hfb3V0ID0gU3RyaW5nVG9TQkZ1bGxIYXNoKGhhc2hfaW4pOwotLSAgRVhQRUNUX0VR KDB4MzQzMzMyMzFVLCBoYXNoX291dC5wcmVmaXgpOwotKyAgRVhQRUNUX0VRKGh0b25sKDB4MzEz MjMzMzRVKSwgaGFzaF9vdXQucHJlZml4KTsKLSAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoaGFzaF9p bi5kYXRhKCksIGhhc2hfb3V0LmZ1bGxfaGFzaCwgc2l6ZW9mKFNCRnVsbEhhc2gpKSk7Ci0gCi0g ICBzdGQ6OnN0cmluZyBoYXNoX2ZpbmFsID0gU0JGdWxsSGFzaFRvU3RyaW5nKGhhc2hfb3V0KTsK LS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vY29tcG9uZW50cy9zYWZlX2Jy b3dzaW5nL2RiL3Y0X3JpY2UuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vY29tcG9uZW50cy9zYWZlX2Jyb3dzaW5nL2RiL3Y0X3JpY2UuY2MKLUBAIC04LDYgKzgsNyBA QAotICNpbmNsdWRlICJiYXNlL2xvZ2dpbmcuaCIKLSAjaW5jbHVkZSAiYmFzZS9udW1lcmljcy9z YWZlX21hdGguaCIKLSAjaW5jbHVkZSAiYmFzZS9zdHJpbmdzL3N0cmluZ3ByaW50Zi5oIgotKyNp bmNsdWRlICJiYXNlL3N5c19ieXRlb3JkZXIuaCIKLSAjaW5jbHVkZSAiYnVpbGQvYnVpbGRfY29u ZmlnLmgiCi0gI2luY2x1ZGUgImNvbXBvbmVudHMvc2FmZV9icm93c2luZy9kYi92NF9yaWNlLmgi Ci0gCi1AQCAtMjEsMTAgKzIyLDYgQEAgdXNpbmcgOjpnb29nbGU6OnByb3RvYnVmOjpSZXBlYXRl ZEZpZWxkOwotIHVzaW5nIDo6Z29vZ2xlOjpwcm90b2J1Zjo6aW50MzI7Ci0gdXNpbmcgOjpnb29n bGU6OnByb3RvYnVmOjppbnQ2NDsKLSAKLS0jaWYgIWRlZmluZWQoQVJDSF9DUFVfTElUVExFX0VO RElBTikgfHwgKEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4gIT0gMSkKLS0jZXJyb3IgVGhlIGNvZGUg YmVsb3cgYXNzdW1lcyBsaXR0bGUtZW5kaWFubmVzcy4KLS0jZW5kaWYKLS0KLSBuYW1lc3BhY2Ug c2FmZV9icm93c2luZyB7Ci0gCi0gbmFtZXNwYWNlIHsKLUBAIC0xMTcsNyArMTE0LDcgQEAgVjRE ZWNvZGVSZXN1bHQgVjRSaWNlRGVjb2Rlcjo6RGVjb2RlUHJlZml4ZXMoY29uc3QgaW50NjQgZmly c3RfdmFsdWUsCi0gICBvdXQtPnJlc2VydmUoKG51bV9lbnRyaWVzICsgMSkpOwotIAotICAgYmFz ZTo6Q2hlY2tlZE51bWVyaWM8dWludDMyX3Q+IGxhc3RfdmFsdWUoZmlyc3RfdmFsdWUpOwotLSAg b3V0LT5wdXNoX2JhY2soaHRvbmwobGFzdF92YWx1ZS5WYWx1ZU9yRGllKCkpKTsKLSsgIG91dC0+ cHVzaF9iYWNrKGJhc2U6OkJ5dGVTd2FwKHN0YXRpY19jYXN0PHVpbnQzMl90PihsYXN0X3ZhbHVl LlZhbHVlT3JEaWUoKSkpKTsKLSAKLSAgIGlmIChudW1fZW50cmllcyA+IDApIHsKLSAgICAgVjRS aWNlRGVjb2RlciBkZWNvZGVyKHJpY2VfcGFyYW1ldGVyLCBudW1fZW50cmllcywgZW5jb2RlZF9k YXRhKTsKLUBAIC0xMzYsNyArMTMzLDcgQEAgVjREZWNvZGVSZXN1bHQgVjRSaWNlRGVjb2Rlcjo6 RGVjb2RlUHJlZml4ZXMoY29uc3QgaW50NjQgZmlyc3RfdmFsdWUsCi0gCi0gICAgICAgLy8gVGhp cyBmbGlwcGluZyBpcyBkb25lIHNvIHRoYXQgdGhlIGRlY29kZWQgdWludDMyIGlzIGludGVycHJl dGVkCi0gICAgICAgLy8gY29ycmVjbHkgYXMgYSBzdHJpbmcgb2YgNCBieXRlcy4KLS0gICAgICBv dXQtPnB1c2hfYmFjayhodG9ubChsYXN0X3ZhbHVlLlZhbHVlT3JEaWUoKSkpOwotKyAgICAgIG91 dC0+cHVzaF9iYWNrKGJhc2U6OkJ5dGVTd2FwKHN0YXRpY19jYXN0PHVpbnQzMl90PihsYXN0X3Zh bHVlLlZhbHVlT3JEaWUoKSkpKTsKLSAgICAgfQotICAgfQotIAotLS0tIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS9jb21wb25lbnRzL3NhZmVfYnJvd3NpbmcvZGIvdjRfcmljZV91 bml0dGVzdC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9jb21wb25l bnRzL3NhZmVfYnJvd3NpbmcvZGIvdjRfcmljZV91bml0dGVzdC5jYwotQEAgLTYsNiArNiwxMiBA QAotICNpbmNsdWRlICJiYXNlL2xvZ2dpbmcuaCIKLSAjaW5jbHVkZSAidGVzdGluZy9wbGF0Zm9y bV90ZXN0LmgiCi0gCi0rI2lmIGRlZmluZWQoT1NfV0lOKQotKyNpbmNsdWRlIDx3aW5zb2NrMi5o PgotKyNlbGlmIGRlZmluZWQoT1NfUE9TSVgpCi0rI2luY2x1ZGUgPGFycGEvaW5ldC5oPgotKyNl bmRpZgotKwotIHVzaW5nIDo6Z29vZ2xlOjpwcm90b2J1Zjo6UmVwZWF0ZWRGaWVsZDsKLSB1c2lu ZyA6Omdvb2dsZTo6cHJvdG9idWY6OmludDMyOwotIAotQEAgLTI0Nyw3ICsyNTMsNyBAQCBURVNU X0YoVjRSaWNlVGVzdCwgVGVzdERlY29kZXJQcmVmaXhlc1dpdGhPbmVWYWx1ZSkgewotICAgRVhQ RUNUX0VRKERFQ09ERV9TVUNDRVNTLAotICAgICAgICAgICAgIFY0UmljZURlY29kZXI6OkRlY29k ZVByZWZpeGVzKDB4NjlGNjdGNTF1LCAyLCAwLCAiIiwgJm91dCkpOwotICAgRVhQRUNUX0VRKDF1 LCBvdXQuc2l6ZSgpKTsKLS0gIEVYUEVDVF9FUSgweDY5RjY3RjUxdSwgb3V0WzBdKTsKLSsgIEVY UEVDVF9FUShodG9ubCgweDUxN0ZGNjY5dSksIG91dFswXSk7Ci0gfQotIAotIFRFU1RfRihWNFJp Y2VUZXN0LCBUZXN0RGVjb2RlclByZWZpeGVzV2l0aE11bHRpcGxlVmFsdWVzKSB7Ci1AQCAtMjU2 LDcgKzI2Miw3IEBAIFRFU1RfRihWNFJpY2VUZXN0LCBUZXN0RGVjb2RlclByZWZpeGVzV2l0aE11 bHRpcGxlVmFsdWVzKSB7Ci0gICAgICAgICAgICAgVjRSaWNlRGVjb2Rlcjo6RGVjb2RlUHJlZml4 ZXMoCi0gICAgICAgICAgICAgICAgIDUsIDI4LCAzLCAiXHhiZlx4YThceDNmXHhmYlx4Zlx4Zlx4 NWVceDI3XHhlNlx4YzNceDFkXHhjNlx4MzgiLAotICAgICAgICAgICAgICAgICAmb3V0KSk7Ci0t ICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gZXhwZWN0ZWQgPSB7NSwgMHhhZDkzNGMwY3UsIDB4NmZm NjdmNTZ1LCAweDgxMzE2ZmNldX07Ci0rICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gZXhwZWN0ZWQg PSB7aHRvbmwoMHgwNTAwMDAwMCksIGh0b25sKDB4MGM0YzkzYWR1KSwgaHRvbmwoMHg1NjdmZjY2 ZnUpLCBodG9ubCgweGNlNmYzMTgxdSl9OwotICAgRVhQRUNUX0VRKGV4cGVjdGVkLnNpemUoKSwg b3V0LnNpemUoKSk7Ci0gICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZXhwZWN0ZWQuc2l6ZSgp OyBpKyspIHsKLSAgICAgRVhQRUNUX0VRKGV4cGVjdGVkW2ldLCBvdXRbaV0pOwotLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9mZm1wZWcvZmZtcGVnX2NvbW1vbi5j YwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9mZm1wZWcvZmZt cGVnX2NvbW1vbi5jYwotQEAgLTY4NiwxMCArNjg2LDYgQEAgQ2hhbm5lbExheW91dCBDaGFubmVs TGF5b3V0VG9DaHJvbWVDaGFubmVsTGF5b3V0KGludDY0X3QgbGF5b3V0LCBpbnQgY2hhbm5lbHMp IHsKLSAgIH0KLSB9Ci0gCi0tI2lmICFkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4pCi0t I2Vycm9yIFRoZSBjb2RlIGJlbG93IGFzc3VtZXMgbGl0dGxlLWVuZGlhbm5lc3MuCi0tI2VuZGlm Ci0tCi0gVmlkZW9QaXhlbEZvcm1hdCBBVlBpeGVsRm9ybWF0VG9WaWRlb1BpeGVsRm9ybWF0KEFW UGl4ZWxGb3JtYXQgcGl4ZWxfZm9ybWF0KSB7Ci0gICAvLyBUaGUgWVVWSiBhbHRlcm5hdGl2ZXMg YXJlIEZGbXBlZydzIChkZXByZWNhdGVkLCBidXQgc3RpbGwgaW4gdXNlKSB3YXkgdG8KLSAgIC8v IHNwZWNpZnkgYSBwaXhlbCBmb3JtYXQgYW5kIGZ1bGwgcmFuZ2UgY29sb3IgY29tYmluYXRpb24u Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2Zvcm1hdHMvbXA0 L2JveF9kZWZpbml0aW9ucy5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS9tZWRpYS9mb3JtYXRzL21wNC9ib3hfZGVmaW5pdGlvbnMuY2MKLUBAIC0xMTA3LDE1ICsxMTA3 LDE0IEBAIGJvb2wgT3B1c1NwZWNpZmljQm94OjpQYXJzZShCb3hSZWFkZXIqIHJlYWRlcikgewot ICAgUkNIRUNLKHJlYWRlci0+UmVhZDQoJnNhbXBsZV9yYXRlKSk7Ci0gICBSQ0hFQ0socmVhZGVy LT5SZWFkMnMoJmdhaW5fZGIpKTsKLSAKLS0jaWYgIWRlZmluZWQoQVJDSF9DUFVfTElUVExFX0VO RElBTikKLS0jZXJyb3IgVGhlIGNvZGUgYmVsb3cgYXNzdW1lcyBsaXR0bGUtZW5kaWFubmVzcy4K LS0jZW5kaWYKLS0KLS0gIG1lbWNweSgmZXh0cmFkYXRhW09QVVNfRVhUUkFEQVRBX1NLSVBfU0FN UExFU19PRkZTRVRdLCAmY29kZWNfZGVsYXlfaW5fZnJhbWVzLAotLSAgICAgICAgIHNpemVvZihj b2RlY19kZWxheV9pbl9mcmFtZXMpKTsKLS0gIG1lbWNweSgmZXh0cmFkYXRhW09QVVNfRVhUUkFE QVRBX1NBTVBMRV9SQVRFX09GRlNFVF0sICZzYW1wbGVfcmF0ZSwKLS0gICAgICAgICBzaXplb2Yo c2FtcGxlX3JhdGUpKTsKLS0gIG1lbWNweSgmZXh0cmFkYXRhW09QVVNfRVhUUkFEQVRBX0dBSU5f T0ZGU0VUXSwgJmdhaW5fZGIsIHNpemVvZihnYWluX2RiKSk7Ci0rICBleHRyYWRhdGFbT1BVU19F WFRSQURBVEFfU0tJUF9TQU1QTEVTX09GRlNFVF0gPSAoY29kZWNfZGVsYXlfaW5fZnJhbWVzID4+ IDApICYgMHhmZjsKLSsgIGV4dHJhZGF0YVtPUFVTX0VYVFJBREFUQV9TS0lQX1NBTVBMRVNfT0ZG U0VUKzFdID0gKGNvZGVjX2RlbGF5X2luX2ZyYW1lcyA+PiA4KSAmIDB4ZmY7Ci0rICBleHRyYWRh dGFbT1BVU19FWFRSQURBVEFfU0FNUExFX1JBVEVfT0ZGU0VUXSA9IChzYW1wbGVfcmF0ZSA+PiAw KSAmIDB4ZmY7Ci0rICBleHRyYWRhdGFbT1BVU19FWFRSQURBVEFfU0FNUExFX1JBVEVfT0ZGU0VU KzFdID0gKHNhbXBsZV9yYXRlID4+IDgpICYgMHhmZjsKLSsgIGV4dHJhZGF0YVtPUFVTX0VYVFJB REFUQV9TQU1QTEVfUkFURV9PRkZTRVQrMl0gPSAoc2FtcGxlX3JhdGUgPj4gMTYpICYgMHhmZjsK LSsgIGV4dHJhZGF0YVtPUFVTX0VYVFJBREFUQV9TQU1QTEVfUkFURV9PRkZTRVQrM10gPSAoc2Ft cGxlX3JhdGUgPj4gMjQpICYgMHhmZjsKLSsgIGV4dHJhZGF0YVtPUFVTX0VYVFJBREFUQV9HQUlO X09GRlNFVF0gPSAoZ2Fpbl9kYiA+PiAwKSAmIDB4ZmY7Ci0rICBleHRyYWRhdGFbT1BVU19FWFRS QURBVEFfR0FJTl9PRkZTRVQrMV0gPSAoZ2Fpbl9kYiA+PiA4KSAmIDB4ZmY7Ci0gCi0gICBjaGFu bmVsX2NvdW50ID0gZXh0cmFkYXRhW09QVVNfRVhUUkFEQVRBX0NIQU5ORUxTX09GRlNFVF07Ci0g Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL3JlbmRlcmVycy9w YWludF9jYW52YXNfdmlkZW9fcmVuZGVyZXIuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vbWVkaWEvcmVuZGVyZXJzL3BhaW50X2NhbnZhc192aWRlb19yZW5kZXJlci5j YwotQEAgLTMxLDggKzMxLDcgQEAKLSAKLSAvLyBTa2lhIGludGVybmFsIGZvcm1hdCBkZXBlbmRz IG9uIGEgcGxhdGZvcm0uIE9uIEFuZHJvaWQgaXQgaXMgQUJHUiwgb24gb3RoZXJzCi0gLy8gaXQg aXMgQVJHQi4KLS0jaWYgU0tfQjMyX1NISUZUID09IDAgJiYgU0tfRzMyX1NISUZUID09IDggJiYg U0tfUjMyX1NISUZUID09IDE2ICYmIFwKLS0gICAgU0tfQTMyX1NISUZUID09IDI0Ci0rI2lmIFNL X1BNQ09MT1JfQllURV9PUkRFUihCLEcsUixBKQotICNkZWZpbmUgTElCWVVWX0k0MjBfVE9fQVJH QiBsaWJ5dXY6Okk0MjBUb0FSR0IKLSAjZGVmaW5lIExJQllVVl9JNDIyX1RPX0FSR0IgbGlieXV2 OjpJNDIyVG9BUkdCCi0gI2RlZmluZSBMSUJZVVZfSTQ0NF9UT19BUkdCIGxpYnl1djo6STQ0NFRv QVJHQgotQEAgLTQyLDggKzQxLDcgQEAKLSAjZGVmaW5lIExJQllVVl9JMDEwX1RPX0FSR0IgbGli eXV2OjpJMDEwVG9BUkdCCi0gI2RlZmluZSBMSUJZVVZfSDAxMF9UT19BUkdCIGxpYnl1djo6SDAx MFRvQVJHQgotICNkZWZpbmUgTElCWVVWX05WMTJfVE9fQVJHQiBsaWJ5dXY6Ok5WMTJUb0FSR0IK LS0jZWxpZiBTS19SMzJfU0hJRlQgPT0gMCAmJiBTS19HMzJfU0hJRlQgPT0gOCAmJiBTS19CMzJf U0hJRlQgPT0gMTYgJiYgXAotLSAgICBTS19BMzJfU0hJRlQgPT0gMjQKLSsjZWxpZiBTS19QTUNP TE9SX0JZVEVfT1JERVIoUixHLEIsQSkKLSAjZGVmaW5lIExJQllVVl9JNDIwX1RPX0FSR0IgbGli eXV2OjpJNDIwVG9BQkdSCi0gI2RlZmluZSBMSUJZVVZfSTQyMl9UT19BUkdCIGxpYnl1djo6STQy MlRvQUJHUgotICNkZWZpbmUgTElCWVVWX0k0NDRfVE9fQVJHQiBsaWJ5dXY6Okk0NDRUb0FCR1IK LS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbmV0L2NlcnQvY3JsX3NldC5j YwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9uZXQvY2VydC9jcmxfc2V0 LmNjCi1AQCAtNiw2ICs2LDcgQEAKLSAKLSAjaW5jbHVkZSAiYmFzZS9iYXNlNjQuaCIKLSAjaW5j bHVkZSAiYmFzZS9qc29uL2pzb25fcmVhZGVyLmgiCi0rI2luY2x1ZGUgImJhc2Uvc3lzX2J5dGVv cmRlci5oIgotICNpbmNsdWRlICJiYXNlL3RpbWUvdGltZS5oIgotICNpbmNsdWRlICJiYXNlL3Ry YWNlX2V2ZW50L3RyYWNlX2V2ZW50LmgiCi0gI2luY2x1ZGUgImJhc2UvdmFsdWVzLmgiCi1AQCAt NDQsOSArNDUsOSBAQCBiYXNlOjpEaWN0aW9uYXJ5VmFsdWUqIFJlYWRIZWFkZXIoYmFzZTo6U3Ry aW5nUGllY2UqIGRhdGEpIHsKLSAgIHVpbnQxNl90IGhlYWRlcl9sZW47Ci0gICBpZiAoZGF0YS0+ c2l6ZSgpIDwgc2l6ZW9mKGhlYWRlcl9sZW4pKQotICAgICByZXR1cm4gbnVsbHB0cjsKLS0gIC8v IEFzc3VtZXMgbGl0dGxlLWVuZGlhbi4KLSAgIG1lbWNweSgmaGVhZGVyX2xlbiwgZGF0YS0+ZGF0 YSgpLCBzaXplb2YoaGVhZGVyX2xlbikpOwotICAgZGF0YS0+cmVtb3ZlX3ByZWZpeChzaXplb2Yo aGVhZGVyX2xlbikpOwotKyAgaGVhZGVyX2xlbiA9IGJhc2U6OkJ5dGVTd2FwVG9MRTE2KGhlYWRl cl9sZW4pOwotIAotICAgaWYgKGRhdGEtPnNpemUoKSA8IGhlYWRlcl9sZW4pCi0gICAgIHJldHVy biBudWxscHRyOwotQEAgLTc5LDkgKzgwLDkgQEAgYm9vbCBSZWFkQ1JMKGJhc2U6OlN0cmluZ1Bp ZWNlKiBkYXRhLAotICAgdWludDMyX3QgbnVtX3NlcmlhbHM7Ci0gICBpZiAoZGF0YS0+c2l6ZSgp IDwgc2l6ZW9mKG51bV9zZXJpYWxzKSkKLSAgICAgcmV0dXJuIGZhbHNlOwotLSAgLy8gQXNzdW1l cyBsaXR0bGUgZW5kaWFuLgotICAgbWVtY3B5KCZudW1fc2VyaWFscywgZGF0YS0+ZGF0YSgpLCBz aXplb2YobnVtX3NlcmlhbHMpKTsKLSAgIGRhdGEtPnJlbW92ZV9wcmVmaXgoc2l6ZW9mKG51bV9z ZXJpYWxzKSk7Ci0rICBudW1fc2VyaWFscyA9IGJhc2U6OkJ5dGVTd2FwVG9MRTMyKG51bV9zZXJp YWxzKTsKLSAKLSAgIGlmIChudW1fc2VyaWFscyA+IDMyICogMTAyNCAqIDEwMjQpICAvLyBTYW5p dHkgY2hlY2suCi0gICAgIHJldHVybiBmYWxzZTsKLUBAIC0xOTIsMTUgKzE5Myw2IEBAIENSTFNl dDo6fkNSTFNldCgpID0gZGVmYXVsdDsKLSAvLyBzdGF0aWMKLSBib29sIENSTFNldDo6UGFyc2Uo YmFzZTo6U3RyaW5nUGllY2UgZGF0YSwgc2NvcGVkX3JlZnB0cjxDUkxTZXQ+KiBvdXRfY3JsX3Nl dCkgewotICAgVFJBQ0VfRVZFTlQwKE5ldFRyYWNpbmdDYXRlZ29yeSgpLCAiQ1JMU2V0OjpQYXJz ZSIpOwotLS8vIE90aGVyIHBhcnRzIG9mIENocm9tZSBhc3N1bWUgdGhhdCB3ZSdyZSBsaXR0bGUg ZW5kaWFuLCBzbyB3ZSBkb24ndCBsb3NlCi0tLy8gYW55dGhpbmcgYnkgZG9pbmcgdGhpcy4KLS0j aWYgZGVmaW5lZChfX0JZVEVfT1JERVIpCi0tICAvLyBMaW51eCBjaGVjawotLSAgc3RhdGljX2Fz c2VydChfX0JZVEVfT1JERVIgPT0gX19MSVRUTEVfRU5ESUFOLCAiYXNzdW1lcyBsaXR0bGUgZW5k aWFuIik7Ci0tI2VsaWYgZGVmaW5lZChfX0JJR19FTkRJQU5fXykKLS0vLyBNYWMgY2hlY2sKLS0j ZXJyb3IgYXNzdW1lcyBsaXR0bGUgZW5kaWFuCi0tI2VuZGlmCi0gCi0gICBzdGQ6OnVuaXF1ZV9w dHI8YmFzZTo6RGljdGlvbmFyeVZhbHVlPiBoZWFkZXJfZGljdChSZWFkSGVhZGVyKCZkYXRhKSk7 Ci0gICBpZiAoIWhlYWRlcl9kaWN0LmdldCgpKQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L2JwZl9kc2wvc2VjY29tcF9tYWNyb3MuaAotKysrIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L2JwZl9kc2wvc2Vj Y29tcF9tYWNyb3MuaAotQEAgLTM3Nyw2ICszNzcsNyBAQCB0eXBlZGVmIHN0cnVjdCBwdF9yZWdz IHJlZ3Nfc3RydWN0OwotIAotICNkZWZpbmUgU0VDQ09NUF9OUl9JRFggKG9mZnNldG9mKHN0cnVj dCBhcmNoX3NlY2NvbXBfZGF0YSwgbnIpKQotICNkZWZpbmUgU0VDQ09NUF9BUkNIX0lEWCAob2Zm c2V0b2Yoc3RydWN0IGFyY2hfc2VjY29tcF9kYXRhLCBhcmNoKSkKLSsjaWYgX19CWVRFX09SREVS X18gPT0gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18KLSAjZGVmaW5lIFNFQ0NPTVBfSVBfTVNCX0lE WCBcCi0gICAob2Zmc2V0b2Yoc3RydWN0IGFyY2hfc2VjY29tcF9kYXRhLCBpbnN0cnVjdGlvbl9w b2ludGVyKSArIDQpCi0gI2RlZmluZSBTRUNDT01QX0lQX0xTQl9JRFggXAotQEAgLTM4NSw2ICsz ODYsMTYgQEAgdHlwZWRlZiBzdHJ1Y3QgcHRfcmVncyByZWdzX3N0cnVjdDsKLSAgIChvZmZzZXRv ZihzdHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIGFyZ3MpICsgOCAqIChucikgKyA0KQotICNkZWZp bmUgU0VDQ09NUF9BUkdfTFNCX0lEWChucikgXAotICAgKG9mZnNldG9mKHN0cnVjdCBhcmNoX3Nl Y2NvbXBfZGF0YSwgYXJncykgKyA4ICogKG5yKSArIDApCi0rI2Vsc2UKLSsjZGVmaW5lIFNFQ0NP TVBfSVBfTVNCX0lEWCBcCi0rICAob2Zmc2V0b2Yoc3RydWN0IGFyY2hfc2VjY29tcF9kYXRhLCBp bnN0cnVjdGlvbl9wb2ludGVyKSArIDApCi0rI2RlZmluZSBTRUNDT01QX0lQX0xTQl9JRFggXAot KyAgKG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSwgaW5zdHJ1Y3Rpb25fcG9pbnRl cikgKyA0KQotKyNkZWZpbmUgU0VDQ09NUF9BUkdfTVNCX0lEWChucikgXAotKyAgKG9mZnNldG9m KHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSwgYXJncykgKyA4ICogKG5yKSArIDApCi0rI2RlZmlu ZSBTRUNDT01QX0FSR19MU0JfSURYKG5yKSBcCi0rICAob2Zmc2V0b2Yoc3RydWN0IGFyY2hfc2Vj Y29tcF9kYXRhLCBhcmdzKSArIDggKiAobnIpICsgNCkKLSsjZW5kaWYKLSAKLSAjZGVmaW5lIFNF Q0NPTVBfUFRfUkVTVUxUKF9yZWdzKSAoX3JlZ3MpLmdwclszXQotICNkZWZpbmUgU0VDQ09NUF9Q VF9TWVNDQUxMKF9yZWdzKSAoX3JlZ3MpLmdwclswXQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS9za2lhL2NvbmZpZy9Ta1VzZXJDb25maWcuaAotKysrIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9za2lhL2NvbmZpZy9Ta1VzZXJDb25maWcuaAotQEAgLTkw LDExICs5MCwxOCBAQCBTS19BUEkgdm9pZCBTa0RlYnVnZl9GaWxlTGluZShjb25zdCBjaGFyKiBm aWxlLCBpbnQgbGluZSwgYm9vbCBmYXRhbCwKLSAgICAgX19GSUxFX18sIF9fTElORV9fLCAjY29u ZCk7IH0gfSB3aGlsZSAoZmFsc2UpCi0gCi0gI2lmICFkZWZpbmVkKEFORFJPSUQpICAgLy8gT24g QW5kcm9pZCwgd2UgdXNlIHRoZSBza2lhIGRlZmF1bHQgc2V0dGluZ3MuCi0rI2lmIGRlZmluZWQo U0tfQ1BVX0JFTkRJQU4pCi0rI2RlZmluZSBTS19BMzJfU0hJRlQgICAgMAotKyNkZWZpbmUgU0tf UjMyX1NISUZUICAgIDgKLSsjZGVmaW5lIFNLX0czMl9TSElGVCAgICAxNgotKyNkZWZpbmUgU0tf QjMyX1NISUZUICAgIDI0Ci0rI2Vsc2UKLSAjZGVmaW5lIFNLX0EzMl9TSElGVCAgICAyNAotICNk ZWZpbmUgU0tfUjMyX1NISUZUICAgIDE2Ci0gI2RlZmluZSBTS19HMzJfU0hJRlQgICAgOAotICNk ZWZpbmUgU0tfQjMyX1NISUZUICAgIDAKLSAjZW5kaWYKLSsjZW5kaWYKLSAKLSAjaWYgZGVmaW5l ZChTS19CVUlMRF9GT1JfTUFDKQotIAotQEAgLTEwOCwxNyArMTE1LDYgQEAgU0tfQVBJIHZvaWQg U2tEZWJ1Z2ZfRmlsZUxpbmUoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGJvb2wgZmF0YWws Ci0gLy8gd2Ugc2hvdWxkIHJldmlzaXQgdGhpcyBjaG9pY2UuLi4KLSAjZGVmaW5lIFNLX1VTRV9G UkVFVFlQRV9FTUJPTERFTgotIAotLSNpZiBkZWZpbmVkKFNLX0JVSUxEX0ZPUl9VTklYKSAmJiBk ZWZpbmVkKFNLX0NQVV9CRU5ESUFOKQotLS8vIEFib3ZlIHdlIHNldCB0aGUgb3JkZXIgZm9yIEFS R0IgY2hhbm5lbHMgaW4gcmVnaXN0ZXJzLiBJIHN1c3BlY3QgdGhhdCwgb24KLS0vLyBiaWcgZW5k aWFuIG1hY2hpbmVzLCB5b3UgY2FuIGtlZXAgdGhpcyB0aGUgc2FtZSBhbmQgZXZlcnl0aGluZyB3 aWxsIHdvcmsuCi0tLy8gVGhlIGluLW1lbW9yeSBvcmRlciB3aWxsIGJlIGRpZmZlcmVudCwgb2Yg Y291cnNlLCBidXQgYXMgbG9uZyBhcyBldmVyeXRoaW5nCi0tLy8gaXMgcmVhZGluZyBtZW1vcnkg YXMgd29yZHMgcmF0aGVyIHRoYW4gYnl0ZXMsIGl0IHdpbGwgYWxsIHdvcmsuIEhvd2V2ZXIsIGlm Ci0tLy8geW91IGZpbmQgdGhhdCBjb2xvdXJzIGFyZSBtZXNzZWQgdXAgSSB0aG91Z2h0IHRoYXQg SSB3b3VsZCBsZWF2ZSBhIGhlbHBmdWwKLS0vLyBsb2NhdG9yIGZvciB5b3UuIEFsc28gc2VlIHRo ZSBjb21tZW50cyBpbgotLS8vIGJhc2UvZ2Z4L2JpdG1hcF9wbGF0Zm9ybV9kZXZpY2VfbGludXgu aAotLSNlcnJvciBSZWFkIHRoZSBjb21tZW50IGF0IHRoaXMgbG9jYXRpb24KLS0jZW5kaWYKLS0K LSAjZW5kaWYKLSAKLSAvLyBUaGUgZGVmYXVsdCBjcmFzaCBtYWNybyB3cml0ZXMgdG8gYmFkYmVl ZiB3aGljaCBjYW4gY2F1c2Ugc29tZSBzdHJhbmdlCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3NraWEvZXh0L2ltYWdlX29wZXJhdGlvbnNfdW5pdHRlc3QuY2MKLSsrKyBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2tpYS9leHQvaW1hZ2Vfb3BlcmF0aW9u c191bml0dGVzdC5jYwotQEAgLTE4LDkgKzE4LDExIEBACi0gI2luY2x1ZGUgInNraWEvZXh0L2lt YWdlX29wZXJhdGlvbnMuaCIKLSAjaW5jbHVkZSAidGVzdGluZy9ndGVzdC9pbmNsdWRlL2d0ZXN0 L2d0ZXN0LmgiCi0gI2luY2x1ZGUgInRoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrQml0 bWFwLmgiCi0rI2luY2x1ZGUgInRoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrQ29sb3JQ cml2LmgiCi0gI2luY2x1ZGUgInRoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrQ29sb3JT cGFjZS5oIgotICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta0ltYWdl SW5mby5oIgotICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta1JlY3Qu aCIKLSsjaW5jbHVkZSAidGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tVblByZU11bHRp cGx5LmgiCi0gI2luY2x1ZGUgInVpL2dmeC9jb2RlYy9wbmdfY29kZWMuaCIKLSAjaW5jbHVkZSAi dWkvZ2Z4L2dlb21ldHJ5L3NpemUuaCIKLSAKLUBAIC0xNTEsNyArMTUzLDcgQEAgdm9pZCBEcmF3 Q2hlY2tlclRvQml0bWFwKGludCB3LCBpbnQgaCwKLSAKLSAgICAgICBib29sIHVzZV9jb2xvcjIg PSAoeF9iaXQgIT0geV9iaXQpOyAgLy8geG9yCi0gCi0tICAgICAgKmJtcC0+Z2V0QWRkcjMyKHgs IHkpID0gKHVzZV9jb2xvcjIgPyBjb2xvcjIgOiBjb2xvcjEpOwotKyAgICAgICpibXAtPmdldEFk ZHIzMih4LCB5KSA9IFNrUHJlTXVsdGlwbHlDb2xvcih1c2VfY29sb3IyID8gY29sb3IyIDogY29s b3IxKTsKLSAgICAgfQotICAgfQotIH0KLUBAIC0yNzMsNyArMjc1LDcgQEAgdm9pZCBDaGVja1Jl c2l6ZU1ldGhvZFNob3VsZEF2ZXJhZ2VHcmlkKAotICAgICAgICAgc3RkOjptYXgodGVzdGVkX3Bp eGVsLm1heF9jb2xvcl9kaXN0YW5jZSwKLSAgICAgICAgICAgICAgICAgIHRlc3RlZF9tZXRob2Qu bWF4X2NvbG9yX2Rpc3RhbmNlX292ZXJyaWRlKTsKLSAKLS0gICAgY29uc3QgU2tDb2xvciBhY3R1 YWxfY29sb3IgPSAqZGVzdC5nZXRBZGRyMzIoeCwgeSk7Ci0rICAgIGNvbnN0IFNrQ29sb3IgYWN0 dWFsX2NvbG9yID0gU2tVblByZU11bHRpcGx5OjpQTUNvbG9yVG9Db2xvcigqZGVzdC5nZXRBZGRy MzIoeCwgeSkpOwotIAotICAgICAvLyBDaGVjayB0aGF0IHRoZSBwaXhlbHMgYXdheSBmcm9tIHRo ZSBib3JkZXIgcmVnaW9uIGFyZSB2ZXJ5IGNsb3NlCi0gICAgIC8vIHRvIHRoZSBleHBlY3RlZCBh dmVyYWdlIGNvbG9yCi1AQCAtNTI4LDcgKzUzMCw3IEBAIFRFU1QoSW1hZ2VPcGVyYXRpb25zLCBT Y2FsZVVwKSB7Ci0gICBmb3IgKGludCBzcmNfeSA9IDA7IHNyY195IDwgc3JjX2g7ICsrc3JjX3kp IHsKLSAgICAgZm9yIChpbnQgc3JjX3ggPSAwOyBzcmNfeCA8IHNyY193OyArK3NyY194KSB7Ci0g ICAgICAgKnNyYy5nZXRBZGRyMzIoc3JjX3gsIHNyY195KSA9Ci0tICAgICAgICAgIFNrQ29sb3JT ZXRBUkdCKDI1NSwgMTAgKyBzcmNfeCAqIDEwMCwgMTAgKyBzcmNfeSAqIDEwMCwgMCk7Ci0rICAg ICAgICAgIFNrUGFja0FSR0IzMigyNTUsIDEwICsgc3JjX3ggKiAxMDAsIDEwICsgc3JjX3kgKiAx MDAsIDApOwotICAgICB9Ci0gICB9Ci0gCi1AQCAtNTUyLDcgKzU1NCw3IEBAIFRFU1QoSW1hZ2VP cGVyYXRpb25zLCBTY2FsZVVwKSB7Ci0gICAgICAgICAgICAgICBsYW5jem9zMyhzcmNfeCArIDAu NSAtIGRzdF94X2luX3NyYykgKgotICAgICAgICAgICAgICAgbGFuY3pvczMoc3JjX3kgKyAwLjUg LSBkc3RfeV9pbl9zcmMpOwotICAgICAgICAgICBzdW0gKz0gY29lZmY7Ci0tICAgICAgICAgIFNr Q29sb3IgdG1wID0gKnNyYy5nZXRBZGRyMzIoc3JjX3gsIHNyY195KTsKLSsgICAgICAgICAgU2tD b2xvciB0bXAgPSBTa1VuUHJlTXVsdGlwbHk6OlBNQ29sb3JUb0NvbG9yKCpzcmMuZ2V0QWRkcjMy KHNyY194LCBzcmNfeSkpOwotICAgICAgICAgICBhICs9IGNvZWZmICogU2tDb2xvckdldEEodG1w KTsKLSAgICAgICAgICAgciArPSBjb2VmZiAqIFNrQ29sb3JHZXRSKHRtcCk7Ci0gICAgICAgICAg IGcgKz0gY29lZmYgKiBTa0NvbG9yR2V0Ryh0bXApOwotQEAgLTU3MSw3ICs1NzMsNyBAQCBURVNU KEltYWdlT3BlcmF0aW9ucywgU2NhbGVVcCkgewotICAgICAgIGlmIChyID4gMjU1LjBmKSByID0g MjU1LjBmOwotICAgICAgIGlmIChnID4gMjU1LjBmKSBnID0gMjU1LjBmOwotICAgICAgIGlmIChi ID4gMjU1LjBmKSBiID0gMjU1LjBmOwotLSAgICAgIFNrQ29sb3IgZHN0X2NvbG9yID0gKmRzdC5n ZXRBZGRyMzIoZHN0X3gsIGRzdF95KTsKLSsgICAgICBTa0NvbG9yIGRzdF9jb2xvciA9IFNrVW5Q cmVNdWx0aXBseTo6UE1Db2xvclRvQ29sb3IoKmRzdC5nZXRBZGRyMzIoZHN0X3gsIGRzdF95KSk7 Ci0gICAgICAgRVhQRUNUX0xFKGZhYnMoU2tDb2xvckdldEEoZHN0X2NvbG9yKSAtIGEpLCAxLjVm KTsKLSAgICAgICBFWFBFQ1RfTEUoZmFicyhTa0NvbG9yR2V0Uihkc3RfY29sb3IpIC0gciksIDEu NWYpOwotICAgICAgIEVYUEVDVF9MRShmYWJzKFNrQ29sb3JHZXRHKGRzdF9jb2xvcikgLSBnKSwg MS41Zik7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS93ZWJnbF9pbWFnZV9jb252ZXJz aW9uLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS93ZWJnbF9pbWFnZV9jb252ZXJz aW9uLmNjCi1AQCAtNDU2LDggKzQ1Niw4IEBAIHZvaWQgVW5wYWNrPFdlYkdMSW1hZ2VDb252ZXJz aW9uOjprRGF0YUZvcm1hdEJHUkE4LCB1aW50OF90LCB1aW50OF90PigKLSAgIGZvciAodW5zaWdu ZWQgaSA9IDA7IGkgPCBwaXhlbHNfcGVyX3JvdzsgKytpKSB7Ci0gICAgIHVpbnQzMl90IGJncmEg PSBzb3VyY2UzMltpXTsKLSAjaWYgZGVmaW5lZChBUkNIX0NQVV9CSUdfRU5ESUFOKQotLSAgICB1 aW50MzJfdCBick1hc2sgPSAweGZmMDBmZjAwOwotLSAgICB1aW50MzJfdCBnYU1hc2sgPSAweDAw ZmYwMGZmOwotKyAgICB1aW50MzJfdCBicl9tYXNrID0gMHhmZjAwZmYwMDsKLSsgICAgdWludDMy X3QgZ2FfbWFzayA9IDB4MDBmZjAwZmY7Ci0gI2Vsc2UKLSAgICAgdWludDMyX3QgYnJfbWFzayA9 IDB4MDBmZjAwZmY7Ci0gICAgIHVpbnQzMl90IGdhX21hc2sgPSAweGZmMDBmZjAwOwotLS0tIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJl ci9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvd2ViZ2xfaW1hZ2VfY29udmVyc2lvbl90ZXN0LmNjCi0r KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JsaW5rL3Jl bmRlcmVyL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS93ZWJnbF9pbWFnZV9jb252ZXJzaW9uX3Rlc3Qu Y2MKLUBAIC03Niw5ICs3Niw5IEBAIFRFU1RfRihXZWJHTEltYWdlQ29udmVyc2lvblRlc3QsIGNv bnZlcnRCR1JBOHRvUkdCQTgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzQ1 Njc4ODgsIDB4MTIzNDU2NzgsIDB4MzQ1Njc4ODgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAweDEyMzQ1Njc4LCAweDM0NTY3ODg4LCAweDEyMzQ1Njc4fTsKLSAjaWYgZGVmaW5lZChB UkNIX0NQVV9CSUdfRU5ESUFOKQotLSAgdWludDMyX3QgZXhwZWN0ZWREYXRhWzldID0gezB4NTYz NDEyNzgsIDB4Nzg1NjM0ODgsIDB4NTYzNDEyNzgsCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMHg3ODU2MzQ4OCwgMHg1NjM0MTI3OCwgMHg3ODU2MzQ4OCwKLS0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAweDU2MzQxMjc4LCAweDc4NTYzNDg4LCAweDU2MzQxMjc4fTsKLSsg IHVpbnQzMl90IGV4cGVjdGVkX2RhdGFbOV0gPSB7MHg1NjM0MTI3OCwgMHg3ODU2MzQ4OCwgMHg1 NjM0MTI3OCwKLSsJCQkgICAgICAgMHg3ODU2MzQ4OCwgMHg1NjM0MTI3OCwgMHg3ODU2MzQ4OCwK LSsJCQkgICAgICAgMHg1NjM0MTI3OCwgMHg3ODU2MzQ4OCwgMHg1NjM0MTI3OH07Ci0gI2Vsc2UK LSAgIHVpbnQzMl90IGV4cGVjdGVkX2RhdGFbOV0gPSB7MHgxMjc4NTYzNCwgMHgzNDg4Nzg1Niwg MHgxMjc4NTYzNCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNDg4Nzg1Niwg MHgxMjc4NTYzNCwgMHgzNDg4Nzg1NiwKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vZ3JhcGhpY3MvZ3JhcGhp Y3NfY29udGV4dF90ZXN0LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2dyYXBoaWNzL2dyYXBoaWNzX2Nv bnRleHRfdGVzdC5jYwotQEAgLTUyLDcgKzUyLDcgQEAgbmFtZXNwYWNlIGJsaW5rIHsKLSAgIHsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSAgICAgZm9yIChpbnQgeSA9IG9wYXF1ZVJlY3QuWSgpOyB5IDwgb3BhcXVlUmVjdC5N YXhZKCk7ICsreSkgICAgIFwKLSAgICAgICBmb3IgKGludCB4ID0gb3BhcXVlUmVjdC5YKCk7IHgg PCBvcGFxdWVSZWN0Lk1heFgoKTsgKyt4KSB7IFwKLS0gICAgICAgIGludCBhbHBoYSA9ICpiaXRt YXAuZ2V0QWRkcjMyKHgsIHkpID4+IDI0OyAgICAgICAgICAgICAgIFwKLSsgICAgICAgIGludCBh bHBoYSA9IFNrR2V0UGFja2VkQTMyKCpiaXRtYXAuZ2V0QWRkcjMyKHgsIHkpKTsJIFwKLSAgICAg ICAgIEVYUEVDVF9FUSgyNTUsIGFscGhhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKLSAgIH0KLUBAIC02MSwxMiArNjEsMTYgQEAgbmFtZXNwYWNlIGJs aW5rIHsKLSAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBiaXRtYXAuaGVpZ2h0KCk7 ICsreSkgICAgICAgICAgICAgICAgIFwKLSAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IGJpdG1h cC53aWR0aCgpOyArK3gpIHsgICAgICAgICAgICAgIFwKLS0gICAgICAgIGludCBhbHBoYSA9ICpi aXRtYXAuZ2V0QWRkcjMyKHgsIHkpID4+IDI0OyAgICAgICAgICAgIFwKLSsgICAgICAgIGludCBh bHBoYSA9IFNrR2V0UGFja2VkQTMyKCpiaXRtYXAuZ2V0QWRkcjMyKHgsIHkpKTsgIFwKLSAgICAg ICAgIGJvb2wgb3BhcXVlID0gb3BhcXVlUmVjdC5Db250YWlucyh4LCB5KTsgICAgICAgICAgICAg IFwKLSAgICAgICAgIEVYUEVDVF9FUShvcGFxdWUsIGFscGhhID09IDI1NSk7ICAgICAgICAgICAg ICAgICAgICAgIFwKLSAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSAgIH0KLSAKLStzdGF0aWMgaW5saW5lIHVpbnQzMl90IFBh Y2tBUkdCMzIodWludDMyX3QgYXJnYikgewotKyAgcmV0dXJuIFNrUGFja0FSR0IzMk5vQ2hlY2so YXJnYj4+MjQsIChhcmdiPDw4KT4+MjQsIChhcmdiPDwxNik+PjI0LCAoYXJnYjw8MjQpPj4yNCk7 Ci0rfQotKwotIFRFU1QoR3JhcGhpY3NDb250ZXh0VGVzdCwgUmVjb3JkaW5nKSB7Ci0gICBTa0Jp dG1hcCBiaXRtYXA7Ci0gICBiaXRtYXAuYWxsb2NOMzJQaXhlbHMoMTAwLCAxMDApOwotQEAgLTE4 NCwxMCArMTg4LDEwIEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dEhpZ2hDb25zdHJhc3RUZXN0IDog cHVibGljIHRlc3Rpbmc6OlRlc3QgewotIFRFU1RfRihHcmFwaGljc0NvbnRleHRIaWdoQ29uc3Ry YXN0VGVzdCwgTUFZQkVfTm9IaWdoQ29udHJhc3QpIHsKLSAgIERyYXdDb2xvcnNUb0NvbnRleHQo KTsKLSAKLS0gIEVYUEVDVF9FUSgweGZmMDAwMDAwLCAqYml0bWFwXy5nZXRBZGRyMzIoMCwgMCkp OwotLSAgRVhQRUNUX0VRKDB4ZmZmZmZmZmYsICpiaXRtYXBfLmdldEFkZHIzMigxLCAwKSk7Ci0t ICBFWFBFQ1RfRVEoMHhmZmZmMDAwMCwgKmJpdG1hcF8uZ2V0QWRkcjMyKDIsIDApKTsKLS0gIEVY UEVDVF9FUSgweGZmODA4MDgwLCAqYml0bWFwXy5nZXRBZGRyMzIoMywgMCkpOwotKyAgRVhQRUNU X0VRKFBhY2tBUkdCMzIoMHhmZjAwMDAwMCksICpiaXRtYXBfLmdldEFkZHIzMigwLCAwKSk7Ci0r ICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmZmZmZmZmKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDEs IDApKTsKLSsgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmZmZjAwMDApLCAqYml0bWFwXy5nZXRB ZGRyMzIoMiwgMCkpOwotKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZjgwODA4MCksICpiaXRt YXBfLmdldEFkZHIzMigzLCAwKSk7Ci0gfQotIAotIC8vIFRPRE8oY3JidWcuY29tLzg1MDc4Mik6 IFJlZW5hYmxlIHRoaXMuCi1AQCAtMjA1LDEwICsyMDksMTAgQEAgVEVTVF9GKEdyYXBoaWNzQ29u dGV4dEhpZ2hDb25zdHJhc3RUZXN0LCBNQVlCRV9IaWdoQ29udHJhc3RPZmYpIHsKLSAKLSAgIERy YXdDb2xvcnNUb0NvbnRleHQoKTsKLSAKLS0gIEVYUEVDVF9FUSgweGZmMDAwMDAwLCAqYml0bWFw Xy5nZXRBZGRyMzIoMCwgMCkpOwotLSAgRVhQRUNUX0VRKDB4ZmZmZmZmZmYsICpiaXRtYXBfLmdl dEFkZHIzMigxLCAwKSk7Ci0tICBFWFBFQ1RfRVEoMHhmZmZmMDAwMCwgKmJpdG1hcF8uZ2V0QWRk cjMyKDIsIDApKTsKLS0gIEVYUEVDVF9FUSgweGZmODA4MDgwLCAqYml0bWFwXy5nZXRBZGRyMzIo MywgMCkpOwotKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZjAwMDAwMCksICpiaXRtYXBfLmdl dEFkZHIzMigwLCAwKSk7Ci0rICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmZmZmZmZmKSwgKmJp dG1hcF8uZ2V0QWRkcjMyKDEsIDApKTsKLSsgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmZmZjAw MDApLCAqYml0bWFwXy5nZXRBZGRyMzIoMiwgMCkpOwotKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIo MHhmZjgwODA4MCksICpiaXRtYXBfLmdldEFkZHIzMigzLCAwKSk7Ci0gfQotIAotIC8vIFNpbXBs ZSBpbnZlcnQgZm9yIHRlc3RpbmcuIEVhY2ggY29sb3IgY29tcG9uZW50IHxjfAotQEAgLTIyOCwx MCArMjMyLDEwIEBAIFRFU1RfRihHcmFwaGljc0NvbnRleHRIaWdoQ29uc3RyYXN0VGVzdCwgTUFZ QkVfU2ltcGxlSW52ZXJ0Rm9yVGVzdGluZykgewotIAotICAgRHJhd0NvbG9yc1RvQ29udGV4dCgp OwotIAotLSAgRVhQRUNUX0VRKDB4ZmZmZmZmZmYsICpiaXRtYXBfLmdldEFkZHIzMigwLCAwKSk7 Ci0tICBFWFBFQ1RfRVEoMHhmZjAwMDAwMCwgKmJpdG1hcF8uZ2V0QWRkcjMyKDEsIDApKTsKLS0g IEVYUEVDVF9FUSgweGZmMDBmZmZmLCAqYml0bWFwXy5nZXRBZGRyMzIoMiwgMCkpOwotLSAgRVhQ RUNUX0VRKDB4ZmY3ZjdmN2YsICpiaXRtYXBfLmdldEFkZHIzMigzLCAwKSk7Ci0rICBFWFBFQ1Rf RVEoUGFja0FSR0IzMigweGZmZmZmZmZmKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDAsIDApKTsKLSsg IEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmYwMDAwMDApLCAqYml0bWFwXy5nZXRBZGRyMzIoMSwg MCkpOwotKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZjAwZmZmZiksICpiaXRtYXBfLmdldEFk ZHIzMigyLCAwKSk7Ci0rICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmN2Y3ZjdmKSwgKmJpdG1h cF8uZ2V0QWRkcjMyKDMsIDApKTsKLSB9Ci0gCi0gLy8gSW52ZXJ0IGJyaWdodG5lc3MgKHdpdGgg Z2FtbWEgY29ycmVjdGlvbikuCi1AQCAtMjUwLDEwICsyNTQsMTAgQEAgVEVTVF9GKEdyYXBoaWNz Q29udGV4dEhpZ2hDb25zdHJhc3RUZXN0LCBNQVlCRV9JbnZlcnRCcmlnaHRuZXNzKSB7Ci0gCi0g ICBEcmF3Q29sb3JzVG9Db250ZXh0KCk7Ci0gCi0tICBFWFBFQ1RfRVEoMHhmZmZmZmZmZiwgKmJp dG1hcF8uZ2V0QWRkcjMyKDAsIDApKTsKLS0gIEVYUEVDVF9FUSgweGZmMDAwMDAwLCAqYml0bWFw Xy5nZXRBZGRyMzIoMSwgMCkpOwotLSAgRVhQRUNUX0VRKDB4ZmYwMGZmZmYsICpiaXRtYXBfLmdl dEFkZHIzMigyLCAwKSk7Ci0tICBFWFBFQ1RfRVEoMHhmZmRkZGRkZCwgKmJpdG1hcF8uZ2V0QWRk cjMyKDMsIDApKTsKLSsgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmZmZmZmZmYpLCAqYml0bWFw Xy5nZXRBZGRyMzIoMCwgMCkpOwotKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZjAwMDAwMCks ICpiaXRtYXBfLmdldEFkZHIzMigxLCAwKSk7Ci0rICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZm MDBmZmZmKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDIsIDApKTsKLSsgIEVYUEVDVF9FUShQYWNrQVJH QjMyKDB4ZmZkZGRkZGQpLCAqYml0bWFwXy5nZXRBZGRyMzIoMywgMCkpOwotIH0KLSAKLSAvLyBJ bnZlcnQgbGlnaHRuZXNzIChpbiBIU0wgc3BhY2UpLgotQEAgLTI3MiwxMCArMjc2LDEwIEBAIFRF U1RfRihHcmFwaGljc0NvbnRleHRIaWdoQ29uc3RyYXN0VGVzdCwgTUFZQkVfSW52ZXJ0TGlnaHRu ZXNzKSB7Ci0gCi0gICBEcmF3Q29sb3JzVG9Db250ZXh0KCk7Ci0gCi0tICBFWFBFQ1RfRVEoMHhm ZmZmZmZmZiwgKmJpdG1hcF8uZ2V0QWRkcjMyKDAsIDApKTsKLS0gIEVYUEVDVF9FUSgweGZmMDAw MDAwLCAqYml0bWFwXy5nZXRBZGRyMzIoMSwgMCkpOwotLSAgRVhQRUNUX0VRKDB4ZmZmZjAwMDAs ICpiaXRtYXBfLmdldEFkZHIzMigyLCAwKSk7Ci0tICBFWFBFQ1RfRVEoMHhmZmRkZGRkZCwgKmJp dG1hcF8uZ2V0QWRkcjMyKDMsIDApKTsKLSsgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmZmZmZm ZmYpLCAqYml0bWFwXy5nZXRBZGRyMzIoMCwgMCkpOwotKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIo MHhmZjAwMDAwMCksICpiaXRtYXBfLmdldEFkZHIzMigxLCAwKSk7Ci0rICBFWFBFQ1RfRVEoUGFj a0FSR0IzMigweGZmZmYwMDAwKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDIsIDApKTsKLSsgIEVYUEVD VF9FUShQYWNrQVJHQjMyKDB4ZmZkZGRkZGQpLCAqYml0bWFwXy5nZXRBZGRyMzIoMywgMCkpOwot IH0KLSAKLSAvLyBJbnZlcnQgbGlnaHRuZXNzIHBsdXMgZ3JheXNjYWxlLgotQEAgLTI4OCwxMCAr MjkyLDEwIEBAIFRFU1RfRihHcmFwaGljc0NvbnRleHRIaWdoQ29uc3RyYXN0VGVzdCwgSW52ZXJ0 TGlnaHRuZXNzUGx1c0dyYXlzY2FsZSkgewotIAotICAgRHJhd0NvbG9yc1RvQ29udGV4dCgpOwot IAotLSAgRVhQRUNUX0VRKDB4ZmZmZmZmZmYsICpiaXRtYXBfLmdldEFkZHIzMigwLCAwKSk7Ci0t ICBFWFBFQ1RfRVEoMHhmZjAwMDAwMCwgKmJpdG1hcF8uZ2V0QWRkcjMyKDEsIDApKTsKLS0gIEVY UEVDVF9FUSgweGZmZTJlMmUyLCAqYml0bWFwXy5nZXRBZGRyMzIoMiwgMCkpOwotLSAgRVhQRUNU X0VRKDB4ZmZkZGRkZGQsICpiaXRtYXBfLmdldEFkZHIzMigzLCAwKSk7Ci0rICBFWFBFQ1RfRVEo UGFja0FSR0IzMigweGZmZmZmZmZmKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDAsIDApKTsKLSsgIEVY UEVDVF9FUShQYWNrQVJHQjMyKDB4ZmYwMDAwMDApLCAqYml0bWFwXy5nZXRBZGRyMzIoMSwgMCkp OwotKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZmUyZTJlMiksICpiaXRtYXBfLmdldEFkZHIz MigyLCAwKSk7Ci0rICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmZGRkZGRkKSwgKmJpdG1hcF8u Z2V0QWRkcjMyKDMsIDApKTsKLSB9Ci0gCi0gLy8gVE9ETyhjcmJ1Zy5jb20vODUwNzgyKTogUmVl bmFibGUgdGhpcy4KLUBAIC0zMDksMTAgKzMxMywxMCBAQCBURVNUX0YoR3JhcGhpY3NDb250ZXh0 SGlnaENvbnN0cmFzdFRlc3QsIE1BWUJFX0ludmVydExpZ2h0bmVzc1BsdXNDb250cmFzdCkgewot IAotICAgRHJhd0NvbG9yc1RvQ29udGV4dCgpOwotIAotLSAgRVhQRUNUX0VRKDB4ZmZmZmZmZmYs ICpiaXRtYXBfLmdldEFkZHIzMigwLCAwKSk7Ci0tICBFWFBFQ1RfRVEoMHhmZjAwMDAwMCwgKmJp dG1hcF8uZ2V0QWRkcjMyKDEsIDApKTsKLS0gIEVYUEVDVF9FUSgweGZmZmYwMDAwLCAqYml0bWFw Xy5nZXRBZGRyMzIoMiwgMCkpOwotLSAgRVhQRUNUX0VRKDB4ZmZlZWVlZWUsICpiaXRtYXBfLmdl dEFkZHIzMigzLCAwKSk7Ci0rICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmZmZmZmZmKSwgKmJp dG1hcF8uZ2V0QWRkcjMyKDAsIDApKTsKLSsgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmYwMDAw MDApLCAqYml0bWFwXy5nZXRBZGRyMzIoMSwgMCkpOwotKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIo MHhmZmZmMDAwMCksICpiaXRtYXBfLmdldEFkZHIzMigyLCAwKSk7Ci0rICBFWFBFQ1RfRVEoUGFj a0FSR0IzMigweGZmZWVlZWVlKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDMsIDApKTsKLSB9Ci0gCi0g fSAgLy8gbmFtZXNwYWNlIGJsaW5rCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2dyYXBoaWNzL2hpZ2hjb250 cmFzdC9oaWdoY29udHJhc3RfY2xhc3NpZmllci5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9ncmFwaGlj cy9oaWdoY29udHJhc3QvaGlnaGNvbnRyYXN0X2NsYXNzaWZpZXIuY2MKLUBAIC0xMDYwLDU1ICsx MDYwLDQ3IEBAIHZvaWQgRGVxdWFudGl6ZU1pbkZpcnN0KGNvbnN0IGludDMyX3QgcmFuaywKLSAK LSAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIC8vIENPTlNUQU5UUwotLS8vIE5vdGUgdGhhdCBm b3Igbm93LCBlbmRpYW5uZXNzIG9mIHRoZSB0YXJnZXQgbWFjaGluZSBuZWVkcyB0byBtYXRjaCB0 aGF0IG9mCi0tLy8gdGhlIG9uZSB0cmFpbmluZyB3YXMgcGVyZm9ybWVkIG9uLgotIC8vIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCi0gY29uc3QgaW50MzJfdCBkbm5faGlkZGVubGF5ZXJfMF93ZWlnaHRz X3BhcnRfMF9zaGFwZVsyXSA9IHs0LCAxMH07Ci0gY29uc3QgdW5pb24gewotLSAgdWludDhfdCBi eXRlc1sxNjBdOwotICAgZmxvYXQgdmFsdWVzWzQwXTsKLSB9IGRubl9oaWRkZW5sYXllcl8wX3dl aWdodHNfcGFydF8wID0ge3sKLS0gICAgMHhiYywgMHgyMiwgMHgwYSwgMHhiZiwgMHhiNCwgMHg0 NiwgMHg4YywgMHgzZiwgMHhiYSwgMHgzMSwgMHgzNCwgMHhiZSwKLS0gICAgMHg0YywgMHg2NSwg MHhkYiwgMHhiZSwgMHhmMCwgMHg1NCwgMHg1ZSwgMHhiZSwgMHhjMSwgMHg1ZCwgMHhiMywgMHgz ZiwKLS0gICAgMHhmNCwgMHhlNiwgMHgxNSwgMHhiZiwgMHgwNSwgMHhjNiwgMHgzNCwgMHhiZiwg MHhjMCwgMHgzNywgMHg3ZSwgMHhiZCwKLS0gICAgMHg2YywgMHgzNSwgMHgwYiwgMHhiZiwgMHhj YSwgMHg1MywgMHgyNiwgMHhiZiwgMHg1OCwgMHhiNCwgMHg4NywgMHgzZiwKLS0gICAgMHgzNywg MHhlZSwgMHgzOSwgMHhiZiwgMHhkYSwgMHhmYSwgMHhmOSwgMHhiZSwgMHg5NywgMHhjMSwgMHgw NiwgMHhiZiwKLS0gICAgMHhmOSwgMHg0ZSwgMHg4MSwgMHgzZiwgMHhiMiwgMHg0NCwgMHg4NSwg MHhiZiwgMHg3ZiwgMHg5OCwgMHg3YywgMHgzZCwKLS0gICAgMHgxNSwgMHgyNiwgMHhiYywgMHhi ZSwgMHg1YywgMHg0OCwgMHgwNSwgMHgzZiwgMHhjOCwgMHhhYSwgMHhhMSwgMHhiZCwKLS0gICAg MHgzNSwgMHhiMywgMHg0MywgMHhiZSwgMHhlYiwgMHg0NiwgMHg5MSwgMHgzZiwgMHg4MCwgMHg3 MSwgMHhlMywgMHgzYywKLS0gICAgMHhkMSwgMHg5OCwgMHg3OSwgMHgzZiwgMHgzYywgMHhkMCwg MHgwZCwgMHhiZiwgMHgxZSwgMHgwMiwgMHhkMywgMHgzZSwKLS0gICAgMHg1ZCwgMHg0YiwgMHhh MiwgMHhiZiwgMHg2OCwgMHhhYywgMHhhYSwgMHhiZCwgMHhmOCwgMHhlMSwgMHg3NSwgMHgzZSwK LS0gICAgMHg0YSwgMHg5YywgMHgyNywgMHhiZSwgMHhmOCwgMHhhZSwgMHhiMiwgMHhiZSwgMHg3 ZiwgMHg5ZCwgMHg5MSwgMHgzZiwKLS0gICAgMHgxZSwgMHg4YiwgMHhhOCwgMHhiZSwgMHgzNSwg MHg3ZSwgMHhiMiwgMHgzZiwgMHhiZSwgMHg4YywgMHhkMywgMHhiZSwKLS0gICAgMHhmOSwgMHhj ZCwgMHhiNSwgMHgzZiwgMHhhMSwgMHg1MCwgMHhhYSwgMHgzZiwgMHhlNCwgMHg2ZCwgMHhkZCwg MHhiZSwKLS0gICAgMHgwZCwgMHhjZSwgMHhkMywgMHhiZSwKLSsgICAgIC0wLjUzOTU5MjUwNDUw MTM0MywgICAxLjA5NTkwNzY4ODE0MDg3LCAtMC4xNzU5NzA5NDE3ODE5OTgsIC0wLjQyODUwNzIw ODgyNDE1OCwKLSsgICAgIC0wLjIxNzEyMDg4NTg0ODk5OSwgICAxLjQwMTI5ODY0MjE1ODUxLCAg IC0wLjU4NTU1NTMxNTAxNzcsIC0wLjcwNjE0NjUzODI1NzU5OSwKLSsgICAgLTAuMDYyMDY0ODg2 MDkzMTM5NiwgLTAuNTQzNzgzOTAzMTIxOTQ4LCAtMC42NDk3MTYwMTk2MzA0MzIsICAgMS4wNjAx OTExNTQ0Nzk5OCwKLSsgICAgIC0wLjcyNjI5MTEyMDA1MjMzOCwgLTAuNDg4MjQxOTcwNTM5MDkz LCAtMC41MjYzOTE0NDY1OTA0MjQsICAgMS4wMTAyMjI1NTQyMDY4NSwKLSsgICAgICAtMS4wNDEx NTg5MTQ1NjYwNCwgMC4wNjE2Njg4NjkxMDc5NjE3LCAtMC4zNjc0NzgwNDI4NDA5NTgsICAwLjUy MDYzNTM2NjQzOTgxOSwKLSsgICAgLTAuMDc4OTM5MDIwNjMzNjk3NSwgIC0wLjE5MTExMzMwODA3 MjA5LCAgIDEuMTM0OTc2NzQ0NjUxNzksIDAuMDI3NzY0MDgxOTU0OTU2MSwKLSsgICAgICAwLjk3 NDk4ODA0MzMwODI1OCwgLTAuNTUzOTU4NjU0NDAzNjg3LCAgMC40MTIxMjU1Mjc4NTg3MzQsICAg LTEuMjY3OTI0OTA0ODIzMywKLSsgICAgLTAuMDgzMzM2NjUxMzI1MjI1OCwgIDAuMjQwMTE5ODE0 ODcyNzQyLCAtMC4xNjM2ODIxMzI5NTkzNjYsICAtMC4zNDg5OTExNTU2MjQzOSwKLSsgICAgICAg IDEuMTM3NjE4ODk5MzQ1NCwgLTAuMzI5MTg2Mzc5OTA5NTE1LCAgICAxLjM5NDQ3NjUzMjkzNjEs IC0wLjQxMzE4MzE1MjY3NTYyOSwKLSsgICAgICAgMS40MjAzNDgyODY2Mjg3MiwgICAxLjMzMDU4 NTU5ODk0NTYyLCAtMC40MzI0NzkwMjM5MzM0MTEsIC0wLjQxMzY4MTQxNzcwMzYyOQotIH19Owot IGNvbnN0IGludDMyX3QgZG5uX2hpZGRlbmxheWVyXzBfYmlhc2VzX3BhcnRfMF9zaGFwZVsxXSA9 IHsxMH07Ci0gY29uc3QgdW5pb24gewotLSAgdWludDhfdCBieXRlc1s0MF07Ci0gICBmbG9hdCB2 YWx1ZXNbMTBdOwotIH0gZG5uX2hpZGRlbmxheWVyXzBfYmlhc2VzX3BhcnRfMCA9IHt7Ci0tICAg IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YmYsIDB4NmEsIDB4NTMsIDB4M2UsIDB4ZDMsIDB4 YzEsCi0tICAgIDB4ZDAsIDB4M2UsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjYsIDB4ZDgs IDB4YzAsIDB4M2UsCi0tICAgIDB4Y2EsIDB4ZTcsIDB4MzUsIDB4M2UsIDB4MjMsIDB4YTUsIDB4 NDQsIDB4M2YsIDB4NjEsIDB4ZmQsCi0tICAgIDB4ZDIsIDB4M2UsIDB4MDAsIDB4MDAsIDB4MDAs IDB4MDAsIDB4YjYsIDB4ZTAsIDB4NDMsIDB4M2MsCi0rICAgICAgICAgICAgICAgICAgICAwLjAs ICAwLjIwNjQ2MTg5MTUzMTk0NCwKLSsgICAgICAwLjQwNzcyODc2MTQzNDU1NSwgICAgICAgICAg ICAgICAgMC4wLAotKyAgICAgIDAuMzc2NjUzMzczMjQxNDI1LCAgMC4xNzc2NDIwMTc2MDI5MjEs Ci0rICAgICAgIDAuNzY4MTQ0Nzg2MzU3ODgsICAwLjQxMjA4OTM3NzY0MTY3OCwKLSsgICAgICAg ICAgICAgICAgICAgIDAuMCwgMC4wMTE5NTU0MzA3MzExNzczCi0gfX07Ci0gY29uc3QgaW50MzJf dCBkbm5fbG9naXRzX2JpYXNlc19wYXJ0XzBfc2hhcGVbMV0gPSB7MX07Ci0gY29uc3QgdW5pb24g ewotLSAgdWludDhfdCBieXRlc1s0XTsKLSAgIGZsb2F0IHZhbHVlc1sxXTsKLSB9IGRubl9sb2dp dHNfYmlhc2VzX3BhcnRfMCA9IHt7Ci0tICAgIDB4NzUsIDB4Y2EsIDB4ZDcsIDB4YmUsCi0rICAg IC0wLjQyMTQ2NjQ5OTU2NzAzMgotIH19OwotIGNvbnN0IGludDMyX3QgZG5uX2xvZ2l0c193ZWln aHRzX3BhcnRfMF9zaGFwZVsyXSA9IHsxMCwgMX07Ci0gY29uc3QgdW5pb24gewotLSAgdWludDhf dCBieXRlc1s0MF07Ci0gICBmbG9hdCB2YWx1ZXNbMTBdOwotIH0gZG5uX2xvZ2l0c193ZWlnaHRz X3BhcnRfMCA9IHt7Ci0tICAgIDB4MTMsIDB4MTIsIDB4MzksIDB4M2YsIDB4ZjMsIDB4YTUsIDB4 YzIsIDB4YmYsIDB4ODEsIDB4N2YsCi0tICAgIDB4YmUsIDB4M2YsIDB4ZjgsIDB4MTcsIDB4MjYs IDB4M2UsIDB4YTQsIDB4MTksIDB4YTYsIDB4M2YsCi0tICAgIDB4ZjAsIDB4YzksIDB4YjcsIDB4 YmYsIDB4NmEsIDB4OTksIDB4ZDIsIDB4M2YsIDB4OGEsIDB4N2QsCi0tICAgIDB4ZTksIDB4M2Ys IDB4ODMsIDB4OWEsIDB4M2EsIDB4YmYsIDB4ZjEsIDB4NmMsIDB4MDgsIDB4M2UsCi0rICAgICAg MC43MjI5MzIwNDA2OTEzNzYsICAtMS41MjA2ODkzNjgyNDc5OSwKLSsgICAgICAgMS40ODgyNjYx MTA0MjAyMywgIDAuMTYyMjAwODA4NTI1MDg1LAotKyAgICAgICAxLjI5NzY1NzQ4OTc3NjYxLCAg LTEuNDM1ODUwMTQzNDMyNjIsCi0rICAgICAgIDEuNjQ1MzA2ODI1NjM3ODIsICAgMS44MjQxNDM2 NDgxNDc1OCwKLSsgICAgIC0wLjcyODkyMDE2MTcyNDA5MSwgIDAuMTMzMjI4MDc4NDg0NTM1Ci0g fX07Ci0gCi0gfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQotLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9pbWFn ZS1kZWNvZGVycy9ibXAvYm1wX2ltYWdlX3JlYWRlci5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2ltYWdl LWRlY29kZXJzL2JtcC9ibXBfaW1hZ2VfcmVhZGVyLmgKLUBAIC0zNyw2ICszNyw3IEBACi0gI2lu Y2x1ZGUgInRoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL3d0Zi9hbGxvY2F0b3Iu aCIKLSAjaW5jbHVkZSAidGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vd3RmL2Nw dS5oIgotICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS93dGYv bm9uY29weWFibGUuaCIKLSsjaW5jbHVkZSAiYmFzZS9zeXNfYnl0ZW9yZGVyLmgiCi0gCi0gbmFt ZXNwYWNlIGJsaW5rIHsKLSAKLUBAIC01MCwxMSArNTEsMTEgQEAgY2xhc3MgUExBVEZPUk1fRVhQ T1JUIEJNUEltYWdlUmVhZGVyIGZpbmFsIHsKLSAgIC8vIFJlYWQgYSB2YWx1ZSBmcm9tIHxidWZm ZXJ8LCBjb252ZXJ0aW5nIHRvIGFuIGludCBhc3N1bWluZyBsaXR0bGUKLSAgIC8vIGVuZGlhbm5l c3MKLSAgIHN0YXRpYyBpbmxpbmUgdWludDE2X3QgUmVhZFVpbnQxNihjb25zdCBjaGFyKiBidWZm ZXIpIHsKLS0gICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90Kj4oYnVm ZmVyKTsKLSsgICAgcmV0dXJuIGJhc2U6OkJ5dGVTd2FwVG9MRTE2KCpyZWludGVycHJldF9jYXN0 PGNvbnN0IHVpbnQxNl90Kj4oYnVmZmVyKSk7Ci0gICB9Ci0gCi0gICBzdGF0aWMgaW5saW5lIHVp bnQzMl90IFJlYWRVaW50MzIoY29uc3QgY2hhciogYnVmZmVyKSB7Ci0tICAgIHJldHVybiAqcmVp bnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGJ1ZmZlcik7Ci0rICAgIHJldHVybiBiYXNl OjpCeXRlU3dhcFRvTEUzMigqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGJ1ZmZl cikpOwotICAgfQotIAotICAgLy8gfHBhcmVudHwgaXMgdGhlIGRlY29kZXIgdGhhdCBvd25zIHVz LgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGlu ay9yZW5kZXJlci9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL2pwZWdfaW1hZ2VfZGVjb2Rl ci5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9i bGluay9yZW5kZXJlci9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL2pwZWdfaW1hZ2VfZGVj b2Rlci5jYwotQEAgLTQ5LDIzICs0OSwzMCBAQCBleHRlcm4gIkMiIHsKLSAjaW5jbHVkZSA8c2V0 am1wLmg+Ci0gfQotIAotLSNpZiBkZWZpbmVkKEFSQ0hfQ1BVX0JJR19FTkRJQU4pCi0tI2Vycm9y IEJsaW5rIGFzc3VtZXMgYSBsaXR0bGUtZW5kaWFuIHRhcmdldC4KLS0jZW5kaWYKLS0KLSAjaWYg ZGVmaW5lZChKQ1NfQUxQSEFfRVhURU5TSU9OUykKLSAjZGVmaW5lIFRVUkJPX0pQRUdfUkdCX1NX SVpaTEUKLS0jaWYgU0tfQjMyX1NISUZUICAvLyBPdXRwdXQgbGl0dGxlLWVuZGlhbiBSR0JBIHBp eGVscyAoQW5kcm9pZCkuCi0rI2lmIFNLX1BNQ09MT1JfQllURV9PUkRFUihSLCBHLCBCLCBBKQot IGlubGluZSBKX0NPTE9SX1NQQUNFIHJnYk91dHB1dENvbG9yU3BhY2UoKSB7Ci0gICByZXR1cm4g SkNTX0VYVF9SR0JBOwotIH0KLS0jZWxzZSAgLy8gT3V0cHV0IGxpdHRsZS1lbmRpYW4gQkdSQSBw aXhlbHMuCi0rI2VsaWYgU0tfUE1DT0xPUl9CWVRFX09SREVSKEIsIEcsIFIsIEEpCi0gaW5saW5l IEpfQ09MT1JfU1BBQ0UgcmdiT3V0cHV0Q29sb3JTcGFjZSgpIHsKLSAgIHJldHVybiBKQ1NfRVhU X0JHUkE7Ci0gfQotKyNlbGlmIFNLX1BNQ09MT1JfQllURV9PUkRFUihBLCBSLCBHLCBCKQotK2lu bGluZSBKX0NPTE9SX1NQQUNFIHJnYk91dHB1dENvbG9yU3BhY2UoKSB7Ci0rICByZXR1cm4gSkNT X0VYVF9BUkdCOwotK30KLSsjZWxpZiBTS19QTUNPTE9SX0JZVEVfT1JERVIoQSwgQiwgRywgUikK LStpbmxpbmUgSl9DT0xPUl9TUEFDRSByZ2JPdXRwdXRDb2xvclNwYWNlKCkgewotKyAgcmV0dXJu IEpDU19FWFRfQUJHUjsKLSt9Ci0rI2Vsc2UKLSsjZXJyb3IgQ29tcG9uZW50IG9yZGVyIG5vdCBz dXBwb3J0ZWQgYnkgbGlianBlZ190dXJibwotICNlbmRpZgotIGlubGluZSBib29sIHR1cmJvU3dp enpsZWQoSl9DT0xPUl9TUEFDRSBjb2xvclNwYWNlKSB7Ci0tICByZXR1cm4gY29sb3JTcGFjZSA9 PSBKQ1NfRVhUX1JHQkEgfHwgY29sb3JTcGFjZSA9PSBKQ1NfRVhUX0JHUkE7Ci0rICByZXR1cm4g Y29sb3JTcGFjZSA9PSBKQ1NfRVhUX1JHQkEgfHwgY29sb3JTcGFjZSA9PSBKQ1NfRVhUX0JHUkEg fHwKLSsgICAgY29sb3JTcGFjZSA9PSBKQ1NfRVhUX0FCR1IgfHwgY29sb3JTcGFjZSA9PSBKQ1Nf RVhUX0FSR0I7Ci0gfQotICNlbHNlCi0gaW5saW5lIEpfQ09MT1JfU1BBQ0UgcmdiT3V0cHV0Q29s b3JTcGFjZSgpIHsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRf cGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC93ZWJwX2lt YWdlX2RlY29kZXIuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC93ZWJw X2ltYWdlX2RlY29kZXIuY2MKLUBAIC0zMiwxOCArMzIsMjAgQEAKLSAjaW5jbHVkZSAidGhpcmRf cGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vaGlzdG9ncmFtLmgiCi0gI2luY2x1ZGUgInRo aXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrRGF0YS5oIgotIAotLSNpZiBkZWZpbmVkKEFS Q0hfQ1BVX0JJR19FTkRJQU4pCi0tI2Vycm9yIEJsaW5rIGFzc3VtZXMgYSBsaXR0bGUtZW5kaWFu IHRhcmdldC4KLS0jZW5kaWYKLS0KLS0jaWYgU0tfQjMyX1NISUZUICAvLyBPdXRwdXQgbGl0dGxl LWVuZGlhbiBSR0JBIHBpeGVscyAoQW5kcm9pZCkuCi0rI2lmIFNLX1BNQ09MT1JfQllURV9PUkRF UihSLCBHLCBCLCBBKQotIGlubGluZSBXRUJQX0NTUF9NT0RFIG91dHB1dE1vZGUoYm9vbCBoYXNB bHBoYSkgewotICAgcmV0dXJuIGhhc0FscGhhID8gTU9ERV9yZ2JBIDogTU9ERV9SR0JBOwotIH0K LS0jZWxzZSAgLy8gT3V0cHV0IGxpdHRsZS1lbmRpYW4gQkdSQSBwaXhlbHMuCi0rI2VsaWYgU0tf UE1DT0xPUl9CWVRFX09SREVSKEIsIEcsIFIsIEEpCi0gaW5saW5lIFdFQlBfQ1NQX01PREUgb3V0 cHV0TW9kZShib29sIGhhc0FscGhhKSB7Ci0gICByZXR1cm4gaGFzQWxwaGEgPyBNT0RFX2JnckEg OiBNT0RFX0JHUkE7Ci0gfQotKyNlbGlmIFNLX1BNQ09MT1JfQllURV9PUkRFUihBLCBSLCBHLCBC KQotK2lubGluZSBXRUJQX0NTUF9NT0RFIG91dHB1dE1vZGUoYm9vbCBoYXNBbHBoYSkgewotKyAg cmV0dXJuIGhhc0FscGhhID8gTU9ERV9BcmdiIDogTU9ERV9BUkdCOwotK30KLSsjZWxzZQotKyNl cnJvciBDb21wb25lbnQgb3JkZXIgbm90IHN1cHBvcnRlZCBieSBsaWJ3ZWJwCi0gI2VuZGlmCi0g Ci0gbmFtZXNwYWNlIHsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vYXNuMS9hX2ludC5jCi0rKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRv L2FzbjEvYV9pbnQuYwotQEAgLTM2OSw3ICszNjksOSBAQCBpbnQgQVNOMV9JTlRFR0VSX3NldF91 aW50NjQoQVNOMV9JTlRFR0VSICpvdXQsIHVpbnQ2NF90IHYpCi0gCi0gICAgIE9QRU5TU0xfZnJl ZShvdXQtPmRhdGEpOwotICAgICBvdXQtPmRhdGEgPSBuZXdkYXRhOwotKyNpZm5kZWYgT1BFTlNT TF9CSUdFTkRJQU4KLSAgICAgdiA9IENSWVBUT19ic3dhcDgodik7Ci0rI2VuZGlmCi0gICAgIG1l bWNweShvdXQtPmRhdGEsICZ2LCBzaXplb2YodikpOwotIAotICAgICBvdXQtPnR5cGUgPSBWX0FT TjFfSU5URUdFUjsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRf cGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vY2hhY2hhL2NoYWNoYS5jCi0rKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRv L2NoYWNoYS9jaGFjaGEuYwotQEAgLTI5LDYgKzI5LDE0IEBACi0gICAoKCh1aW50MzJfdCkoKHAp WzBdKSkgfCAoKHVpbnQzMl90KSgocClbMV0pIDw8IDgpIHwgXAotICAgICgodWludDMyX3QpKChw KVsyXSkgPDwgMTYpIHwgKCh1aW50MzJfdCkoKHApWzNdKSA8PCAyNCkpCi0gCi0rI2RlZmluZSBV MzJUTzhfTElUVExFKHAsIHYpICAgIFwKLSsgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAotKyAgICAocClbMF0gPSAodiA+PiAwKSAmIDB4ZmY7ICBcCi0rICAgIChwKVsxXSA9ICh2ID4+ IDgpICYgMHhmZjsgIFwKLSsgICAgKHApWzJdID0gKHYgPj4gMTYpICYgMHhmZjsgXAotKyAgICAo cClbM10gPSAodiA+PiAyNCkgJiAweGZmOyBcCi0rICB9Ci0rCi0gLy8gc2lnbWEgY29udGFpbnMg dGhlIENoYUNoYSBjb25zdGFudHMsIHdoaWNoIGhhcHBlbiB0byBiZSBhbiBBU0NJSSBzdHJpbmcu Ci0gc3RhdGljIGNvbnN0IHVpbnQ4X3Qgc2lnbWFbMTZdID0geyAnZScsICd4JywgJ3AnLCAnYScs ICduJywgJ2QnLCAnICcsICczJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICcyJywgJy0nLCAnYicsICd5JywgJ3QnLCAnZScsICcgJywgJ2snIH07Ci1AQCAtNDUsOSArNTMs MjcgQEAgc3RhdGljIGNvbnN0IHVpbnQ4X3Qgc2lnbWFbMTZdID0geyAnZScsICd4JywgJ3AnLCAn YScsICduJywgJ2QnLCAnICcsICczJywKLSB2b2lkIENSWVBUT19oY2hhY2hhMjAodWludDhfdCBv dXRbMzJdLCBjb25zdCB1aW50OF90IGtleVszMl0sCi0gICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHVpbnQ4X3Qgbm9uY2VbMTZdKSB7Ci0gICB1aW50MzJfdCB4WzE2XTsKLS0gIE9QRU5TU0xf bWVtY3B5KHgsIHNpZ21hLCBzaXplb2Yoc2lnbWEpKTsKLS0gIE9QRU5TU0xfbWVtY3B5KCZ4WzRd LCBrZXksIDMyKTsKLS0gIE9QRU5TU0xfbWVtY3B5KCZ4WzEyXSwgbm9uY2UsIDE2KTsKLSsgIGlu dCBpOwotKwotKyAgeFswXSA9IFU4VE8zMl9MSVRUTEUoc2lnbWEgKyAwKTsKLSsgIHhbMV0gPSBV OFRPMzJfTElUVExFKHNpZ21hICsgNCk7Ci0rICB4WzJdID0gVThUTzMyX0xJVFRMRShzaWdtYSAr IDgpOwotKyAgeFszXSA9IFU4VE8zMl9MSVRUTEUoc2lnbWEgKyAxMik7Ci0rCi0rICB4WzRdID0g VThUTzMyX0xJVFRMRShrZXkgKyAwKTsKLSsgIHhbNV0gPSBVOFRPMzJfTElUVExFKGtleSArIDQp OwotKyAgeFs2XSA9IFU4VE8zMl9MSVRUTEUoa2V5ICsgOCk7Ci0rICB4WzddID0gVThUTzMyX0xJ VFRMRShrZXkgKyAxMik7Ci0rCi0rICB4WzhdID0gVThUTzMyX0xJVFRMRShrZXkgKyAxNik7Ci0r ICB4WzldID0gVThUTzMyX0xJVFRMRShrZXkgKyAyMCk7Ci0rICB4WzEwXSA9IFU4VE8zMl9MSVRU TEUoa2V5ICsgMjQpOwotKyAgeFsxMV0gPSBVOFRPMzJfTElUVExFKGtleSArIDI4KTsKLSsKLSsg IHhbMTJdID0gVThUTzMyX0xJVFRMRShub25jZSArIDApOwotKyAgeFsxM10gPSBVOFRPMzJfTElU VExFKG5vbmNlICsgNCk7Ci0rICB4WzE0XSA9IFU4VE8zMl9MSVRUTEUobm9uY2UgKyA4KTsKLSsg IHhbMTVdID0gVThUTzMyX0xJVFRMRShub25jZSArIDEyKTsKLSAKLSAgIGZvciAoc2l6ZV90IGkg PSAwOyBpIDwgMjA7IGkgKz0gMikgewotICAgICBRVUFSVEVSUk9VTkQoMCwgNCwgOCwgMTIpCi1A QCAtNjAsOCArODYsMTAgQEAgdm9pZCBDUllQVE9faGNoYWNoYTIwKHVpbnQ4X3Qgb3V0WzMyXSwg Y29uc3QgdWludDhfdCBrZXlbMzJdLAotICAgICBRVUFSVEVSUk9VTkQoMywgNCwgOSwgMTQpCi0g ICB9Ci0gCi0tICBPUEVOU1NMX21lbWNweShvdXQsICZ4WzBdLCBzaXplb2YodWludDMyX3QpICog NCk7Ci0tICBPUEVOU1NMX21lbWNweSgmb3V0WzE2XSwgJnhbMTJdLCBzaXplb2YodWludDMyX3Qp ICogNCk7Ci0rICBmb3IgKGkgPSAwOyBpIDwgNDsgKytpKSB7Ci0rICAgIFUzMlRPOF9MSVRUTEUo b3V0ICsgNCAqIGksIHhbaV0pOwotKyAgICBVMzJUTzhfTElUVExFKCZvdXRbMTZdICsgNCAqIGks IHhbMTIraV0pOwotKyAgfQotIH0KLSAKLSAjaWYgIWRlZmluZWQoT1BFTlNTTF9OT19BU00pICYm ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLUBAIC0xMDUsMTQgKzEzMyw2IEBAIHZvaWQgQ1JZ UFRPX2NoYWNoYV8yMCh1aW50OF90ICpvdXQsIGNvbnN0IHVpbnQ4X3QgKmluLCBzaXplX3QgaW5f bGVuLAotIAotICNlbHNlCi0gCi0tI2RlZmluZSBVMzJUTzhfTElUVExFKHAsIHYpICAgIFwKLS0g IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAocClbMF0gPSAodiA+PiAwKSAm IDB4ZmY7ICBcCi0tICAgIChwKVsxXSA9ICh2ID4+IDgpICYgMHhmZjsgIFwKLS0gICAgKHApWzJd ID0gKHYgPj4gMTYpICYgMHhmZjsgXAotLSAgICAocClbM10gPSAodiA+PiAyNCkgJiAweGZmOyBc Ci0tICB9Ci0tCi0gLy8gY2hhY2hhX2NvcmUgcGVyZm9ybXMgMjAgcm91bmRzIG9mIENoYUNoYSBv biB0aGUgaW5wdXQgd29yZHMgaW4KLSAvLyB8aW5wdXR8IGFuZCB3cml0ZXMgdGhlIDY0IG91dHB1 dCBieXRlcyB0byB8b3V0cHV0fC4KLSBzdGF0aWMgdm9pZCBjaGFjaGFfY29yZSh1aW50OF90IG91 dHB1dFs2NF0sIGNvbnN0IHVpbnQzMl90IGlucHV0WzE2XSkgewotLS0tIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0by9jaXBo ZXJfZXh0cmEvZV9hZXNnY21zaXYuYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0by9jaXBoZXJfZXh0cmEvZV9hZXNn Y21zaXYuYwotQEAgLTYyNSw3ICs2MjUsMTEgQEAgc3RhdGljIHZvaWQgZ2NtX3Npdl9jcnlwdCh1 aW50OF90ICpvdXQsIGNvbnN0IHVpbnQ4X3QgKmluLCBzaXplX3QgaW5fbGVuLAotICAgZm9yIChz aXplX3QgZG9uZSA9IDA7IGRvbmUgPCBpbl9sZW47KSB7Ci0gICAgIHVpbnQ4X3Qga2V5c3RyZWFt W0FFU19CTE9DS19TSVpFXTsKLSAgICAgZW5jX2Jsb2NrKGNvdW50ZXIuYywga2V5c3RyZWFtLCBr ZXkpOwotKyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgotKyAgICBjb3VudGVyLndbMF0gPSBDUllQ VE9fYnN3YXA0KENSWVBUT19ic3dhcDQoY291bnRlci53WzBdKSArIDEpOwotKyNlbHNlCi0gICAg IGNvdW50ZXIud1swXSsrOwotKyNlbmRpZgotIAotICAgICBzaXplX3QgdG9kbyA9IEFFU19CTE9D S19TSVpFOwotICAgICBpZiAoaW5fbGVuIC0gZG9uZSA8IHRvZG8pIHsKLUBAIC02NzMsOCArNjc3 LDEzIEBAIHN0YXRpYyB2b2lkIGdjbV9zaXZfcG9seXZhbCgKLSAgICAgfSBiaXRsZW5zOwotICAg fSBsZW5ndGhfYmxvY2s7Ci0gCi0rI2lmZGVmIE9QRU5TU0xfQklHRU5ESUFOCi0rICBsZW5ndGhf YmxvY2suYml0bGVucy5hZCA9IENSWVBUT19ic3dhcDgoYWRfbGVuICogOCk7Ci0rICBsZW5ndGhf YmxvY2suYml0bGVucy5pbiA9IENSWVBUT19ic3dhcDgoaW5fbGVuICogOCk7Ci0rI2Vsc2UKLSAg IGxlbmd0aF9ibG9jay5iaXRsZW5zLmFkID0gYWRfbGVuICogODsKLSAgIGxlbmd0aF9ibG9jay5i aXRsZW5zLmluID0gaW5fbGVuICogODsKLSsjZW5kaWYKLSAgIENSWVBUT19QT0xZVkFMX3VwZGF0 ZV9ibG9ja3MoJnBvbHl2YWxfY3R4LCBsZW5ndGhfYmxvY2suYywKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2l6ZW9mKGxlbmd0aF9ibG9jaykpOwotIAotLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0by9j b21waWxlcl90ZXN0LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2NvbXBpbGVyX3Rlc3QuY2MKLUBAIC00MCw5 ICs0MCwxMyBAQCBzdGF0aWMgdm9pZCBDaGVja1JlcHJlc2VudGF0aW9uKFQgdmFsdWUpIHsKLSAg IFVuc2lnbmVkVCB2YWx1ZV91ID0gc3RhdGljX2Nhc3Q8VW5zaWduZWRUPih2YWx1ZSk7Ci0gICBF WFBFQ1RfRVEoc2l6ZW9mKFVuc2lnbmVkVCksIHNpemVvZihUKSk7Ci0gCi0tICAvLyBJbnRlZ2Vy cyBtdXN0IGJlIGxpdHRsZS1lbmRpYW4uCi0rICAvLyBJbnRlZ2VycyBtdXN0IGJlIGVpdGhlciBi aWctZW5kaWFuIG9yIGxpdHRsZS1lbmRpYW4uCi0gICB1aW50OF90IGV4cGVjdGVkW3NpemVvZihV bnNpZ25lZFQpXTsKLSsjaWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KLSsgIGZvciAoc2l6ZV90IGkg PSBzaXplb2YoVW5zaWduZWRUKTsgaS0tID4gMDsgKSB7Ci0rI2Vsc2UKLSAgIGZvciAoc2l6ZV90 IGkgPSAwOyBpIDwgc2l6ZW9mKFVuc2lnbmVkVCk7IGkrKykgewotKyNlbmRpZgotICAgICBleHBl Y3RlZFtpXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHZhbHVlX3UpOwotICAgICAvLyBEaXZpZGUg aW5zdGVhZCBvZiByaWdodC1zaGlmdCB0byBhcHBlYXNlIGNvbXBpbGVycyB0aGF0IHdhcm4gaWYg fFR8IGlzIGEKLSAgICAgLy8gY2hhci4gVGhlIGV4cGxpY2l0IGNhc3QgaXMgYWxzbyBuZWVkZWQg dG8gYXBwZWFzZSBNU1ZDIGlmIGludGVnZXIKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vY3VydmUyNTUxOS9zcGFr ZTI1NTE5LmMKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vY3VydmUyNTUxOS9zcGFrZTI1NTE5LmMKLUBAIC0zMzks OCArMzM5LDE3IEBAIHN0YXRpYyB2b2lkIHNjYWxhcl9kb3VibGUoc2NhbGFyICpzKSB7Ci0gICB1 aW50MzJfdCBjYXJyeSA9IDA7Ci0gCi0gICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDg7IGkrKykg ewotLSAgICBjb25zdCB1aW50MzJfdCBjYXJyeV9vdXQgPSBzLT53b3Jkc1tpXSA+PiAzMTsKLS0g ICAgcy0+d29yZHNbaV0gPSAocy0+d29yZHNbaV0gPDwgMSkgfCBjYXJyeTsKLSsjaWZkZWYgT1BF TlNTTF9CSUdFTkRJQU4KLSsgICAgY29uc3QgdWludDMyX3Qgc2kgPSBDUllQVE9fYnN3YXA0KHMt PndvcmRzW2ldKTsKLSsjZWxzZQotKyAgICBjb25zdCB1aW50MzJfdCBzaSA9IHMtPndvcmRzW2ld OwotKyNlbmRpZgotKyAgICBjb25zdCB1aW50MzJfdCBjYXJyeV9vdXQgPSBzaSA+PiAzMTsKLSsj aWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KLSsgICAgcy0+d29yZHNbaV0gPSBDUllQVE9fYnN3YXA0 KChzaSA8PCAxKSB8IGNhcnJ5KTsKLSsjZWxzZQotKyAgICBzLT53b3Jkc1tpXSA9IChzaSA8PCAx KSB8IGNhcnJ5OwotKyNlbmRpZgotICAgICBjYXJyeSA9IGNhcnJ5X291dDsKLSAgIH0KLSB9Ci1A QCAtMzUwLDggKzM1OSwxMyBAQCBzdGF0aWMgdm9pZCBzY2FsYXJfYWRkKHNjYWxhciAqZGVzdCwg Y29uc3Qgc2NhbGFyICpzcmMpIHsKLSAgIHVpbnQzMl90IGNhcnJ5ID0gMDsKLSAKLSAgIGZvciAo c2l6ZV90IGkgPSAwOyBpIDwgODsgaSsrKSB7Ci0rI2lmZGVmIE9QRU5TU0xfQklHRU5ESUFOCi0r ICAgIHVpbnQ2NF90IHRtcCA9ICgodWludDY0X3QpQ1JZUFRPX2Jzd2FwNChkZXN0LT53b3Jkc1tp XSkgKyBDUllQVE9fYnN3YXA0KHNyYy0+d29yZHNbaV0pKSArIGNhcnJ5OwotKyAgICBkZXN0LT53 b3Jkc1tpXSA9IENSWVBUT19ic3dhcDQoKHVpbnQzMl90KXRtcCk7Ci0rI2Vsc2UKLSAgICAgdWlu dDY0X3QgdG1wID0gKCh1aW50NjRfdClkZXN0LT53b3Jkc1tpXSArIHNyYy0+d29yZHNbaV0pICsg Y2Fycnk7Ci0gICAgIGRlc3QtPndvcmRzW2ldID0gKHVpbnQzMl90KXRtcDsKLSsjZW5kaWYKLSAg ICAgY2FycnkgPSAodWludDMyX3QpKHRtcCA+PiAzMik7Ci0gICB9Ci0gfQotLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0 by9ldnAvc2NyeXB0LmMKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vZXZwL3NjcnlwdC5jCi1AQCAtMTk2LDEwICsx OTYsMjggQEAgaW50IEVWUF9QQkVfc2NyeXB0KGNvbnN0IGNoYXIgKnBhc3N3b3JkLCBzaXplX3Qg cGFzc3dvcmRfbGVuLAotICAgICBnb3RvIGVycjsKLSAgIH0KLSAKLSsjaWZkZWYgT1BFTlNTTF9C SUdFTkRJQU4KLSsgIHVpbnQzMl90ICpCMzIgPSBCLT53b3JkczsKLSsgIHNpemVfdCBCX3dvcmRz ID0gQl9ieXRlcyA+PiAyOwotKyAgZG8gewotKyAgICAqQjMyID0gQ1JZUFRPX2Jzd2FwNCgqQjMy KTsKLSsgICAgQjMyKys7Ci0rICB9IHdoaWxlKC0tQl93b3Jkcyk7Ci0rI2VuZGlmCi0rCi0gICBm b3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgcDsgaSsrKSB7Ci0gICAgIHNjcnlwdFJPTWl4KEIgKyAy ICogciAqIGksIHIsIE4sIFQsIFYpOwotICAgfQotIAotKyNpZmRlZiBPUEVOU1NMX0JJR0VORElB TgotKyAgQjMyID0gQi0+d29yZHM7Ci0rICBCX3dvcmRzID0gQl9ieXRlcyA+PiAyOwotKyAgZG8g ewotKyAgICAqQjMyID0gQ1JZUFRPX2Jzd2FwNCgqQjMyKTsKLSsgICAgQjMyKys7Ci0rICB9IHdo aWxlKC0tQl93b3Jkcyk7Ci0rI2VuZGlmCi0rCi0gICBpZiAoIVBLQ1M1X1BCS0RGMl9ITUFDKHBh c3N3b3JkLCBwYXNzd29yZF9sZW4sIChjb25zdCB1aW50OF90ICopQiwgQl9ieXRlcywgMSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgRVZQX3NoYTI1NigpLCBrZXlfbGVuLCBvdXRfa2V5KSkg ewotICAgICBnb3RvIGVycjsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vZmlwc21vZHVsZS9ibi9ieXRlcy5jCi0r KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3Nz bC9zcmMvY3J5cHRvL2ZpcHNtb2R1bGUvYm4vYnl0ZXMuYwotQEAgLTEzNiw5ICsxMzYsMTMgQEAg QklHTlVNICpCTl9sZTJibihjb25zdCB1aW50OF90ICppbiwgc2l6ZV90IGxlbiwgQklHTlVNICpy ZXQpIHsKLSAgIC8vIE1ha2Ugc3VyZSB0aGUgdG9wIGJ5dGVzIHdpbGwgYmUgemVyb2VkLgotICAg cmV0LT5kW251bV93b3JkcyAtIDFdID0gMDsKLSAKLS0gIC8vIFdlIG9ubHkgc3VwcG9ydCBsaXR0 bGUtZW5kaWFuIHBsYXRmb3Jtcywgc28gd2UgY2FuIHNpbXBseSBtZW1jcHkgdGhlCi0tICAvLyBp bnRlcm5hbCByZXByZXNlbnRhdGlvbi4KLSsjaWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KLSsgIHVp bnQ4X3QgKm91dCA9ICh1aW50OF90ICopcmV0LT5kOwotKyAgZm9yIChzaXplX3QgaSA9IDA7IGkg PCBsZW47IGkrKykKLSsgICAgb3V0W2kgXiAoQk5fQllURVMtMSldID0gaW5baV07Ci0rI2Vsc2UK LSAgIE9QRU5TU0xfbWVtY3B5KHJldC0+ZCwgaW4sIGxlbik7Ci0rI2VuZGlmCi0gICByZXR1cm4g cmV0OwotIH0KLSAKLUBAIC0xNTcsNyArMTYxLDExIEBAIHNpemVfdCBCTl9ibjJiaW4oY29uc3Qg QklHTlVNICppbiwgdWludDhfdCAqb3V0KSB7Ci0gc3RhdGljIGludCBmaXRzX2luX2J5dGVzKGNv bnN0IHVpbnQ4X3QgKmJ5dGVzLCBzaXplX3QgbnVtX2J5dGVzLCBzaXplX3QgbGVuKSB7Ci0gICB1 aW50OF90IG1hc2sgPSAwOwotICAgZm9yIChzaXplX3QgaSA9IGxlbjsgaSA8IG51bV9ieXRlczsg aSsrKSB7Ci0rI2lmZGVmIE9QRU5TU0xfQklHRU5ESUFOCi0rICAgIG1hc2sgfD0gYnl0ZXNbaSBe IChCTl9CWVRFUy0xKV07Ci0rI2Vsc2UKLSAgICAgbWFzayB8PSBieXRlc1tpXTsKLSsjZW5kaWYK LSAgIH0KLSAgIHJldHVybiBtYXNrID09IDA7Ci0gfQotQEAgLTE3Miw5ICsxODAsMTMgQEAgaW50 IEJOX2JuMmxlX3BhZGRlZCh1aW50OF90ICpvdXQsIHNpemVfdCBsZW4sIGNvbnN0IEJJR05VTSAq aW4pIHsKLSAgICAgbnVtX2J5dGVzID0gbGVuOwotICAgfQotIAotLSAgLy8gV2Ugb25seSBzdXBw b3J0IGxpdHRsZS1lbmRpYW4gcGxhdGZvcm1zLCBzbyB3ZSBjYW4gc2ltcGx5IG1lbWNweSBpbnRv IHRoZQotLSAgLy8gaW50ZXJuYWwgcmVwcmVzZW50YXRpb24uCi0rI2lmZGVmIE9QRU5TU0xfQklH RU5ESUFOCi0rICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bV9ieXRlczsgaSsrKSB7Ci0rICAg IG91dFtpXSA9IGJ5dGVzW2kgXiAoQk5fQllURVMtMSldOwotKyAgfQotKyNlbHNlCi0gICBPUEVO U1NMX21lbWNweShvdXQsIGJ5dGVzLCBudW1fYnl0ZXMpOwotKyNlbmRpZgotICAgLy8gUGFkIG91 dCB0aGUgcmVzdCBvZiB0aGUgYnVmZmVyIHdpdGggemVyb2VzLgotICAgT1BFTlNTTF9tZW1zZXQo b3V0ICsgbnVtX2J5dGVzLCAwLCBsZW4gLSBudW1fYnl0ZXMpOwotICAgcmV0dXJuIDE7Ci1AQCAt MTkwLDExICsyMDIsMTUgQEAgaW50IEJOX2JuMmJpbl9wYWRkZWQodWludDhfdCAqb3V0LCBzaXpl X3QgbGVuLCBjb25zdCBCSUdOVU0gKmluKSB7Ci0gICAgIG51bV9ieXRlcyA9IGxlbjsKLSAgIH0K LSAKLS0gIC8vIFdlIG9ubHkgc3VwcG9ydCBsaXR0bGUtZW5kaWFuIHBsYXRmb3Jtcywgc28gd2Ug Y2FuIHNpbXBseSB3cml0ZSB0aGUgYnVmZmVyCi0tICAvLyBpbiByZXZlcnNlLgotKyNpZmRlZiBP UEVOU1NMX0JJR0VORElBTgotKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1fYnl0ZXM7IGkr KykgewotKyAgICBvdXRbbGVuIC0gaSAtIDFdID0gYnl0ZXNbaSBeIChCTl9CWVRFUy0xKV07Ci0r ICB9Ci0rI2Vsc2UKLSAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtX2J5dGVzOyBpKyspIHsK LSAgICAgb3V0W2xlbiAtIGkgLSAxXSA9IGJ5dGVzW2ldOwotICAgfQotKyNlbmRpZgotICAgLy8g UGFkIG91dCB0aGUgcmVzdCBvZiB0aGUgYnVmZmVyIHdpdGggemVyb2VzLgotICAgT1BFTlNTTF9t ZW1zZXQob3V0LCAwLCBsZW4gLSBudW1fYnl0ZXMpOwotICAgcmV0dXJuIDE7Ci0tLS0gcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5 cHRvL2ZpcHNtb2R1bGUvZWNkc2EvZWNkc2EuYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0by9maXBzbW9kdWxlL2Vj ZHNhL2VjZHNhLmMKLUBAIC04MCw3ICs4MCwxMSBAQCBzdGF0aWMgdm9pZCBkaWdlc3RfdG9fc2Nh bGFyKGNvbnN0IEVDX0dST1VQICpncm91cCwgRUNfU0NBTEFSICpvdXQsCi0gICB9Ci0gICBPUEVO U1NMX21lbXNldChvdXQsIDAsIHNpemVvZihFQ19TQ0FMQVIpKTsKLSAgIGZvciAoc2l6ZV90IGkg PSAwOyBpIDwgZGlnZXN0X2xlbjsgaSsrKSB7Ci0rI2lmZGVmIE9QRU5TU0xfQklHRU5ESUFOCi0r ICAgIG91dC0+Ynl0ZXNbaSBeIChCTl9CWVRFUy0xKV0gPSBkaWdlc3RbZGlnZXN0X2xlbiAtIDEg LSBpXTsKLSsjZWxzZQotICAgICBvdXQtPmJ5dGVzW2ldID0gZGlnZXN0W2RpZ2VzdF9sZW4gLSAx IC0gaV07Ci0rI2VuZGlmCi0gICB9Ci0gCi0gICAvLyBJZiBpdCBpcyBzdGlsbCB0b28gbG9uZywg dHJ1bmNhdGUgcmVtYWluaW5nIGJpdHMgd2l0aCBhIHNoaWZ0LgotLS0tIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0by9maXBz bW9kdWxlL21vZGVzL2djbS5jCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2ZpcHNtb2R1bGUvbW9kZXMvZ2NtLmMK LUBAIC03OCw2ICs3OCwxNCBAQAotICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICB9IHdoaWxlICgwKQotIAot KyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgotKyNkZWZpbmUgR0NNX2Jzd2FwNCh4KSAoeCkKLSsj ZGVmaW5lIEdDTV9ic3dhcDgoeCkgKHgpCi0rI2Vsc2UKLSsjZGVmaW5lIEdDTV9ic3dhcDQgQ1JZ UFRPX2Jzd2FwNAotKyNkZWZpbmUgR0NNX2Jzd2FwOCBDUllQVE9fYnN3YXA4Ci0rI2VuZGlmCi0r Ci0gLy8ga1NpemVUV2l0aG91dExvd2VyNEJpdHMgaXMgYSBtYXNrIHRoYXQgY2FuIGJlIHVzZWQg dG8gemVybyB0aGUgbG93ZXIgZm91cgotIC8vIGJpdHMgb2YgYSB8c2l6ZV90fC4KLSBzdGF0aWMg Y29uc3Qgc2l6ZV90IGtTaXplVFdpdGhvdXRMb3dlcjRCaXRzID0gKHNpemVfdCkgLTE2OwotQEAg LTE3Myw4ICsxODEsOCBAQCBzdGF0aWMgdm9pZCBnY21fZ211bHRfNGJpdCh1aW50NjRfdCBYaVsy XSwgY29uc3QgdTEyOCBIdGFibGVbMTZdKSB7Ci0gICAgIFoubG8gXj0gSHRhYmxlW25sb10ubG87 Ci0gICB9Ci0gCi0tICBYaVswXSA9IENSWVBUT19ic3dhcDgoWi5oaSk7Ci0tICBYaVsxXSA9IENS WVBUT19ic3dhcDgoWi5sbyk7Ci0rICBYaVswXSA9IEdDTV9ic3dhcDgoWi5oaSk7Ci0rICBYaVsx XSA9IEdDTV9ic3dhcDgoWi5sbyk7Ci0gfQotIAotIC8vIFN0cmVhbWVkIGdjbV9tdWx0XzRiaXQs IHNlZSBDUllQVE9fZ2NtMTI4X1tlbnxkZV1jcnlwdCBmb3IKLUBAIC0yMzMsOCArMjQxLDggQEAg c3RhdGljIHZvaWQgZ2NtX2doYXNoXzRiaXQodWludDY0X3QgWGlbMl0sIGNvbnN0IHUxMjggSHRh YmxlWzE2XSwKLSAgICAgICBaLmxvIF49IEh0YWJsZVtubG9dLmxvOwotICAgICB9Ci0gCi0tICAg IFhpWzBdID0gQ1JZUFRPX2Jzd2FwOChaLmhpKTsKLS0gICAgWGlbMV0gPSBDUllQVE9fYnN3YXA4 KFoubG8pOwotKyAgICBYaVswXSA9IEdDTV9ic3dhcDgoWi5oaSk7Ci0rICAgIFhpWzFdID0gR0NN X2Jzd2FwOChaLmxvKTsKLSAgIH0gd2hpbGUgKGlucCArPSAxNiwgbGVuIC09IDE2KTsKLSB9Ci0g I2Vsc2UgIC8vIEdIQVNIX0FTTQotQEAgLTM2MCw4ICszNjgsOCBAQCB2b2lkIENSWVBUT19naGFz aF9pbml0KGdtdWx0X2Z1bmMgKm91dF9tdWx0LCBnaGFzaF9mdW5jICpvdXRfaGFzaCwKLSAgIE9Q RU5TU0xfbWVtY3B5KEguYywgZ2NtX2tleSwgMTYpOwotIAotICAgLy8gSCBpcyBzdG9yZWQgaW4g aG9zdCBieXRlIG9yZGVyCi0tICBILnVbMF0gPSBDUllQVE9fYnN3YXA4KEgudVswXSk7Ci0tICBI LnVbMV0gPSBDUllQVE9fYnN3YXA4KEgudVsxXSk7Ci0rICBILnVbMF0gPSBHQ01fYnN3YXA4KEgu dVswXSk7Ci0rICBILnVbMV0gPSBHQ01fYnN3YXA4KEgudVsxXSk7Ci0gCi0gICBPUEVOU1NMX21l bWNweShvdXRfa2V5LCBILmMsIDE2KTsKLSAKLUBAIC00NzQsMTUgKzQ4MiwxNSBAQCB2b2lkIENS WVBUT19nY20xMjhfc2V0aXYoR0NNMTI4X0NPTlRFWFQgKmN0eCwgY29uc3QgQUVTX0tFWSAqa2V5 LAotICAgICAgIEdDTV9NVUwoY3R4LCBZaSk7Ci0gICAgIH0KLSAgICAgbGVuMCA8PD0gMzsKLS0g ICAgY3R4LT5ZaS51WzFdIF49IENSWVBUT19ic3dhcDgobGVuMCk7Ci0rICAgIGN0eC0+WWkudVsx XSBePSBHQ01fYnN3YXA4KGxlbjApOwotIAotICAgICBHQ01fTVVMKGN0eCwgWWkpOwotLSAgICBj dHIgPSBDUllQVE9fYnN3YXA0KGN0eC0+WWkuZFszXSk7Ci0rICAgIGN0ciA9IEdDTV9ic3dhcDQo Y3R4LT5ZaS5kWzNdKTsKLSAgIH0KLSAKLSAgICgqY3R4LT5nY21fa2V5LmJsb2NrKShjdHgtPllp LmMsIGN0eC0+RUswLmMsIGtleSk7Ci0gICArK2N0cjsKLS0gIGN0eC0+WWkuZFszXSA9IENSWVBU T19ic3dhcDQoY3RyKTsKLSsgIGN0eC0+WWkuZFszXSA9IEdDTV9ic3dhcDQoY3RyKTsKLSB9Ci0g Ci0gaW50IENSWVBUT19nY20xMjhfYWFkKEdDTTEyOF9DT05URVhUICpjdHgsIGNvbnN0IHVpbnQ4 X3QgKmFhZCwgc2l6ZV90IGxlbikgewotQEAgLTU4MCw3ICs1ODgsNyBAQCBpbnQgQ1JZUFRPX2dj bTEyOF9lbmNyeXB0KEdDTTEyOF9DT05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkgKmtleSwKLSAg ICAgY3R4LT5hcmVzID0gMDsKLSAgIH0KLSAKLS0gIGN0ciA9IENSWVBUT19ic3dhcDQoY3R4LT5Z aS5kWzNdKTsKLSsgIGN0ciA9IEdDTV9ic3dhcDQoY3R4LT5ZaS5kWzNdKTsKLSAKLSAgIG4gPSBj dHgtPm1yZXM7Ci0gICBpZiAobikgewotQEAgLTYwMiw3ICs2MTAsNyBAQCBpbnQgQ1JZUFRPX2dj bTEyOF9lbmNyeXB0KEdDTTEyOF9DT05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkgKmtleSwKLSAg ICAgICBpZiAobiA9PSAwKSB7Ci0gICAgICAgICAoKmJsb2NrKShjdHgtPllpLmMsIGN0eC0+RUtp LmMsIGtleSk7Ci0gICAgICAgICArK2N0cjsKLS0gICAgICAgIGN0eC0+WWkuZFszXSA9IENSWVBU T19ic3dhcDQoY3RyKTsKLSsgICAgICAgIGN0eC0+WWkuZFszXSA9IEdDTV9ic3dhcDQoY3RyKTsK LSAgICAgICB9Ci0gICAgICAgY3R4LT5YaS5jW25dIF49IG91dFtpXSA9IGluW2ldIF4gY3R4LT5F S2kuY1tuXTsKLSAgICAgICBuID0gKG4gKyAxKSAlIDE2OwotQEAgLTYyMSw3ICs2MjksNyBAQCBp bnQgQ1JZUFRPX2djbTEyOF9lbmNyeXB0KEdDTTEyOF9DT05URVhUICpjdHgsIGNvbnN0IEFFU19L RVkgKmtleSwKLSAgICAgd2hpbGUgKGopIHsKLSAgICAgICAoKmJsb2NrKShjdHgtPllpLmMsIGN0 eC0+RUtpLmMsIGtleSk7Ci0gICAgICAgKytjdHI7Ci0tICAgICAgY3R4LT5ZaS5kWzNdID0gQ1JZ UFRPX2Jzd2FwNChjdHIpOwotKyAgICAgIGN0eC0+WWkuZFszXSA9IEdDTV9ic3dhcDQoY3RyKTsK LSAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDE2OyBpICs9IHNpemVvZihzaXplX3QpKSB7 Ci0gICAgICAgICBzdG9yZV93b3JkX2xlKG91dCArIGksCi0gICAgICAgICAgICAgICAgICAgICAg IGxvYWRfd29yZF9sZShpbiArIGkpIF4gY3R4LT5FS2kudFtpIC8gc2l6ZW9mKHNpemVfdCldKTsK LUBAIC02MzgsNyArNjQ2LDcgQEAgaW50IENSWVBUT19nY20xMjhfZW5jcnlwdChHQ00xMjhfQ09O VEVYVCAqY3R4LCBjb25zdCBBRVNfS0VZICprZXksCi0gICAgIHdoaWxlIChsZW4gPj0gMTYpIHsK LSAgICAgICAoKmJsb2NrKShjdHgtPllpLmMsIGN0eC0+RUtpLmMsIGtleSk7Ci0gICAgICAgKytj dHI7Ci0tICAgICAgY3R4LT5ZaS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChjdHIpOwotKyAgICAgIGN0 eC0+WWkuZFszXSA9IEdDTV9ic3dhcDQoY3RyKTsKLSAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg aSA8IDE2OyBpICs9IHNpemVvZihzaXplX3QpKSB7Ci0gICAgICAgICBzdG9yZV93b3JkX2xlKG91 dCArIGksCi0gICAgICAgICAgICAgICAgICAgICAgIGxvYWRfd29yZF9sZShpbiArIGkpIF4gY3R4 LT5FS2kudFtpIC8gc2l6ZW9mKHNpemVfdCldKTsKLUBAIC02NTMsNyArNjYxLDcgQEAgaW50IENS WVBUT19nY20xMjhfZW5jcnlwdChHQ00xMjhfQ09OVEVYVCAqY3R4LCBjb25zdCBBRVNfS0VZICpr ZXksCi0gICB3aGlsZSAobGVuID49IDE2KSB7Ci0gICAgICgqYmxvY2spKGN0eC0+WWkuYywgY3R4 LT5FS2kuYywga2V5KTsKLSAgICAgKytjdHI7Ci0tICAgIGN0eC0+WWkuZFszXSA9IENSWVBUT19i c3dhcDQoY3RyKTsKLSsgICAgY3R4LT5ZaS5kWzNdID0gR0NNX2Jzd2FwNChjdHIpOwotICAgICBm b3IgKHNpemVfdCBpID0gMDsgaSA8IDE2OyBpICs9IHNpemVvZihzaXplX3QpKSB7Ci0gICAgICAg c2l6ZV90IHRtcCA9IGxvYWRfd29yZF9sZShpbiArIGkpIF4gY3R4LT5FS2kudFtpIC8gc2l6ZW9m KHNpemVfdCldOwotICAgICAgIHN0b3JlX3dvcmRfbGUob3V0ICsgaSwgdG1wKTsKLUBAIC02Njgs NyArNjc2LDcgQEAgaW50IENSWVBUT19nY20xMjhfZW5jcnlwdChHQ00xMjhfQ09OVEVYVCAqY3R4 LCBjb25zdCBBRVNfS0VZICprZXksCi0gICBpZiAobGVuKSB7Ci0gICAgICgqYmxvY2spKGN0eC0+ WWkuYywgY3R4LT5FS2kuYywga2V5KTsKLSAgICAgKytjdHI7Ci0tICAgIGN0eC0+WWkuZFszXSA9 IENSWVBUT19ic3dhcDQoY3RyKTsKLSsgICAgY3R4LT5ZaS5kWzNdID0gR0NNX2Jzd2FwNChjdHIp OwotICAgICB3aGlsZSAobGVuLS0pIHsKLSAgICAgICBjdHgtPlhpLmNbbl0gXj0gb3V0W25dID0g aW5bbl0gXiBjdHgtPkVLaS5jW25dOwotICAgICAgICsrbjsKLUBAIC03MDcsNyArNzE1LDcgQEAg aW50IENSWVBUT19nY20xMjhfZGVjcnlwdChHQ00xMjhfQ09OVEVYVCAqY3R4LCBjb25zdCBBRVNf S0VZICprZXksCi0gICAgIGN0eC0+YXJlcyA9IDA7Ci0gICB9Ci0gCi0tICBjdHIgPSBDUllQVE9f YnN3YXA0KGN0eC0+WWkuZFszXSk7Ci0rICBjdHIgPSBHQ01fYnN3YXA0KGN0eC0+WWkuZFszXSk7 Ci0gCi0gICBuID0gY3R4LT5tcmVzOwotICAgaWYgKG4pIHsKLUBAIC03MzIsNyArNzQwLDcgQEAg aW50IENSWVBUT19nY20xMjhfZGVjcnlwdChHQ00xMjhfQ09OVEVYVCAqY3R4LCBjb25zdCBBRVNf S0VZICprZXksCi0gICAgICAgaWYgKG4gPT0gMCkgewotICAgICAgICAgKCpibG9jaykoY3R4LT5Z aS5jLCBjdHgtPkVLaS5jLCBrZXkpOwotICAgICAgICAgKytjdHI7Ci0tICAgICAgICBjdHgtPllp LmRbM10gPSBDUllQVE9fYnN3YXA0KGN0cik7Ci0rICAgICAgICBjdHgtPllpLmRbM10gPSBHQ01f YnN3YXA0KGN0cik7Ci0gICAgICAgfQotICAgICAgIGMgPSBpbltpXTsKLSAgICAgICBvdXRbaV0g PSBjIF4gY3R4LT5FS2kuY1tuXTsKLUBAIC03NTQsNyArNzYyLDcgQEAgaW50IENSWVBUT19nY20x MjhfZGVjcnlwdChHQ00xMjhfQ09OVEVYVCAqY3R4LCBjb25zdCBBRVNfS0VZICprZXksCi0gICAg IHdoaWxlIChqKSB7Ci0gICAgICAgKCpibG9jaykoY3R4LT5ZaS5jLCBjdHgtPkVLaS5jLCBrZXkp OwotICAgICAgICsrY3RyOwotLSAgICAgIGN0eC0+WWkuZFszXSA9IENSWVBUT19ic3dhcDQoY3Ry KTsKLSsgICAgICBjdHgtPllpLmRbM10gPSBHQ01fYnN3YXA0KGN0cik7Ci0gICAgICAgZm9yIChz aXplX3QgaSA9IDA7IGkgPCAxNjsgaSArPSBzaXplb2Yoc2l6ZV90KSkgewotICAgICAgICAgc3Rv cmVfd29yZF9sZShvdXQgKyBpLAotICAgICAgICAgICAgICAgICAgICAgICBsb2FkX3dvcmRfbGUo aW4gKyBpKSBeIGN0eC0+RUtpLnRbaSAvIHNpemVvZihzaXplX3QpXSk7Ci1AQCAtNzcxLDcgKzc3 OSw3IEBAIGludCBDUllQVE9fZ2NtMTI4X2RlY3J5cHQoR0NNMTI4X0NPTlRFWFQgKmN0eCwgY29u c3QgQUVTX0tFWSAqa2V5LAotICAgICB3aGlsZSAobGVuID49IDE2KSB7Ci0gICAgICAgKCpibG9j aykoY3R4LT5ZaS5jLCBjdHgtPkVLaS5jLCBrZXkpOwotICAgICAgICsrY3RyOwotLSAgICAgIGN0 eC0+WWkuZFszXSA9IENSWVBUT19ic3dhcDQoY3RyKTsKLSsgICAgICBjdHgtPllpLmRbM10gPSBH Q01fYnN3YXA0KGN0cik7Ci0gICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAxNjsgaSArPSBz aXplb2Yoc2l6ZV90KSkgewotICAgICAgICAgc3RvcmVfd29yZF9sZShvdXQgKyBpLAotICAgICAg ICAgICAgICAgICAgICAgICBsb2FkX3dvcmRfbGUoaW4gKyBpKSBeIGN0eC0+RUtpLnRbaSAvIHNp emVvZihzaXplX3QpXSk7Ci1AQCAtNzg1LDcgKzc5Myw3IEBAIGludCBDUllQVE9fZ2NtMTI4X2Rl Y3J5cHQoR0NNMTI4X0NPTlRFWFQgKmN0eCwgY29uc3QgQUVTX0tFWSAqa2V5LAotICAgd2hpbGUg KGxlbiA+PSAxNikgewotICAgICAoKmJsb2NrKShjdHgtPllpLmMsIGN0eC0+RUtpLmMsIGtleSk7 Ci0gICAgICsrY3RyOwotLSAgICBjdHgtPllpLmRbM10gPSBDUllQVE9fYnN3YXA0KGN0cik7Ci0r ICAgIGN0eC0+WWkuZFszXSA9IEdDTV9ic3dhcDQoY3RyKTsKLSAgICAgZm9yIChzaXplX3QgaSA9 IDA7IGkgPCAxNjsgaSArPSBzaXplb2Yoc2l6ZV90KSkgewotICAgICAgIHNpemVfdCBjID0gbG9h ZF93b3JkX2xlKGluICsgaSk7Ci0gICAgICAgc3RvcmVfd29yZF9sZShvdXQgKyBpLCBjIF4gY3R4 LT5FS2kudFtpIC8gc2l6ZW9mKHNpemVfdCldKTsKLUBAIC04MDAsNyArODA4LDcgQEAgaW50IENS WVBUT19nY20xMjhfZGVjcnlwdChHQ00xMjhfQ09OVEVYVCAqY3R4LCBjb25zdCBBRVNfS0VZICpr ZXksCi0gICBpZiAobGVuKSB7Ci0gICAgICgqYmxvY2spKGN0eC0+WWkuYywgY3R4LT5FS2kuYywg a2V5KTsKLSAgICAgKytjdHI7Ci0tICAgIGN0eC0+WWkuZFszXSA9IENSWVBUT19ic3dhcDQoY3Ry KTsKLSsgICAgY3R4LT5ZaS5kWzNdID0gR0NNX2Jzd2FwNChjdHIpOwotICAgICB3aGlsZSAobGVu LS0pIHsKLSAgICAgICB1aW50OF90IGMgPSBpbltuXTsKLSAgICAgICBjdHgtPlhpLmNbbl0gXj0g YzsKLUBAIC04NjYsMTMgKzg3NCwxMyBAQCBpbnQgQ1JZUFRPX2djbTEyOF9lbmNyeXB0X2N0cjMy KEdDTTEyOF9DT05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkgKmtleSwKLSAgIH0KLSAjZW5kaWYK LSAKLS0gIGN0ciA9IENSWVBUT19ic3dhcDQoY3R4LT5ZaS5kWzNdKTsKLSsgIGN0ciA9IEdDTV9i c3dhcDQoY3R4LT5ZaS5kWzNdKTsKLSAKLSAjaWYgZGVmaW5lZChHSEFTSCkKLSAgIHdoaWxlIChs ZW4gPj0gR0hBU0hfQ0hVTkspIHsKLSAgICAgKCpzdHJlYW0pKGluLCBvdXQsIEdIQVNIX0NIVU5L IC8gMTYsIGtleSwgY3R4LT5ZaS5jKTsKLSAgICAgY3RyICs9IEdIQVNIX0NIVU5LIC8gMTY7Ci0t ICAgIGN0eC0+WWkuZFszXSA9IENSWVBUT19ic3dhcDQoY3RyKTsKLSsgICAgY3R4LT5ZaS5kWzNd ID0gR0NNX2Jzd2FwNChjdHIpOwotICAgICBHSEFTSChjdHgsIG91dCwgR0hBU0hfQ0hVTkspOwot ICAgICBvdXQgKz0gR0hBU0hfQ0hVTks7Ci0gICAgIGluICs9IEdIQVNIX0NIVU5LOwotQEAgLTg4 NSw3ICs4OTMsNyBAQCBpbnQgQ1JZUFRPX2djbTEyOF9lbmNyeXB0X2N0cjMyKEdDTTEyOF9DT05U RVhUICpjdHgsIGNvbnN0IEFFU19LRVkgKmtleSwKLSAKLSAgICAgKCpzdHJlYW0pKGluLCBvdXQs IGosIGtleSwgY3R4LT5ZaS5jKTsKLSAgICAgY3RyICs9ICh1bnNpZ25lZCBpbnQpajsKLS0gICAg Y3R4LT5ZaS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChjdHIpOwotKyAgICBjdHgtPllpLmRbM10gPSBH Q01fYnN3YXA0KGN0cik7Ci0gICAgIGluICs9IGk7Ci0gICAgIGxlbiAtPSBpOwotICNpZiBkZWZp bmVkKEdIQVNIKQotQEAgLTkwNCw3ICs5MTIsNyBAQCBpbnQgQ1JZUFRPX2djbTEyOF9lbmNyeXB0 X2N0cjMyKEdDTTEyOF9DT05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkgKmtleSwKLSAgIGlmIChs ZW4pIHsKLSAgICAgKCpjdHgtPmdjbV9rZXkuYmxvY2spKGN0eC0+WWkuYywgY3R4LT5FS2kuYywg a2V5KTsKLSAgICAgKytjdHI7Ci0tICAgIGN0eC0+WWkuZFszXSA9IENSWVBUT19ic3dhcDQoY3Ry KTsKLSsgICAgY3R4LT5ZaS5kWzNdID0gR0NNX2Jzd2FwNChjdHIpOwotICAgICB3aGlsZSAobGVu LS0pIHsKLSAgICAgICBjdHgtPlhpLmNbbl0gXj0gb3V0W25dID0gaW5bbl0gXiBjdHgtPkVLaS5j W25dOwotICAgICAgICsrbjsKLUBAIC05NzAsMTQgKzk3OCwxNCBAQCBpbnQgQ1JZUFRPX2djbTEy OF9kZWNyeXB0X2N0cjMyKEdDTTEyOF9DT05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkgKmtleSwK LSAgIH0KLSAjZW5kaWYKLSAKLS0gIGN0ciA9IENSWVBUT19ic3dhcDQoY3R4LT5ZaS5kWzNdKTsK LSsgIGN0ciA9IEdDTV9ic3dhcDQoY3R4LT5ZaS5kWzNdKTsKLSAKLSAjaWYgZGVmaW5lZChHSEFT SCkKLSAgIHdoaWxlIChsZW4gPj0gR0hBU0hfQ0hVTkspIHsKLSAgICAgR0hBU0goY3R4LCBpbiwg R0hBU0hfQ0hVTkspOwotICAgICAoKnN0cmVhbSkoaW4sIG91dCwgR0hBU0hfQ0hVTksgLyAxNiwg a2V5LCBjdHgtPllpLmMpOwotICAgICBjdHIgKz0gR0hBU0hfQ0hVTksgLyAxNjsKLS0gICAgY3R4 LT5ZaS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChjdHIpOwotKyAgICBjdHgtPllpLmRbM10gPSBHQ01f YnN3YXA0KGN0cik7Ci0gICAgIG91dCArPSBHSEFTSF9DSFVOSzsKLSAgICAgaW4gKz0gR0hBU0hf Q0hVTks7Ci0gICAgIGxlbiAtPSBHSEFTSF9DSFVOSzsKLUBAIC0xMDAzLDcgKzEwMTEsNyBAQCBp bnQgQ1JZUFRPX2djbTEyOF9kZWNyeXB0X2N0cjMyKEdDTTEyOF9DT05URVhUICpjdHgsIGNvbnN0 IEFFU19LRVkgKmtleSwKLSAjZW5kaWYKLSAgICAgKCpzdHJlYW0pKGluLCBvdXQsIGosIGtleSwg Y3R4LT5ZaS5jKTsKLSAgICAgY3RyICs9ICh1bnNpZ25lZCBpbnQpajsKLS0gICAgY3R4LT5ZaS5k WzNdID0gQ1JZUFRPX2Jzd2FwNChjdHIpOwotKyAgICBjdHgtPllpLmRbM10gPSBHQ01fYnN3YXA0 KGN0cik7Ci0gICAgIG91dCArPSBpOwotICAgICBpbiArPSBpOwotICAgICBsZW4gLT0gaTsKLUBA IC0xMDExLDcgKzEwMTksNyBAQCBpbnQgQ1JZUFRPX2djbTEyOF9kZWNyeXB0X2N0cjMyKEdDTTEy OF9DT05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkgKmtleSwKLSAgIGlmIChsZW4pIHsKLSAgICAg KCpjdHgtPmdjbV9rZXkuYmxvY2spKGN0eC0+WWkuYywgY3R4LT5FS2kuYywga2V5KTsKLSAgICAg KytjdHI7Ci0tICAgIGN0eC0+WWkuZFszXSA9IENSWVBUT19ic3dhcDQoY3RyKTsKLSsgICAgY3R4 LT5ZaS5kWzNdID0gR0NNX2Jzd2FwNChjdHIpOwotICAgICB3aGlsZSAobGVuLS0pIHsKLSAgICAg ICB1aW50OF90IGMgPSBpbltuXTsKLSAgICAgICBjdHgtPlhpLmNbbl0gXj0gYzsKLUBAIC0xMDM2 LDggKzEwNDQsOCBAQCBpbnQgQ1JZUFRPX2djbTEyOF9maW5pc2goR0NNMTI4X0NPTlRFWFQgKmN0 eCwgY29uc3QgdWludDhfdCAqdGFnLCBzaXplX3QgbGVuKSB7Ci0gICAgIEdDTV9NVUwoY3R4LCBY aSk7Ci0gICB9Ci0gCi0tICBhbGVuID0gQ1JZUFRPX2Jzd2FwOChhbGVuKTsKLS0gIGNsZW4gPSBD UllQVE9fYnN3YXA4KGNsZW4pOwotKyAgYWxlbiA9IEdDTV9ic3dhcDgoYWxlbik7Ci0rICBjbGVu ID0gR0NNX2Jzd2FwOChjbGVuKTsKLSAKLSAgIGN0eC0+WGkudVswXSBePSBhbGVuOwotICAgY3R4 LT5YaS51WzFdIF49IGNsZW47Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2ZpcHNtb2R1bGUvbW9kZXMvaW50ZXJu YWwuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9i b3Jpbmdzc2wvc3JjL2NyeXB0by9maXBzbW9kdWxlL21vZGVzL2ludGVybmFsLmgKLUBAIC03MCwx MSArNzAsMTcgQEAgZXh0ZXJuICJDIiB7Ci0gc3RhdGljIGlubGluZSB1aW50MzJfdCBHRVRVMzIo Y29uc3Qgdm9pZCAqaW4pIHsKLSAgIHVpbnQzMl90IHY7Ci0gICBPUEVOU1NMX21lbWNweSgmdiwg aW4sIHNpemVvZih2KSk7Ci0rI2lmZGVmIE9QRU5TU0xfQklHRU5ESUFOCi0rICByZXR1cm4gdjsK LSsjZWxzZQotICAgcmV0dXJuIENSWVBUT19ic3dhcDQodik7Ci0rI2VuZGlmCi0gfQotIAotIHN0 YXRpYyBpbmxpbmUgdm9pZCBQVVRVMzIodm9pZCAqb3V0LCB1aW50MzJfdCB2KSB7Ci0rI2lmbmRl ZiBPUEVOU1NMX0JJR0VORElBTgotICAgdiA9IENSWVBUT19ic3dhcDQodik7Ci0rI2VuZGlmCi0g ICBPUEVOU1NMX21lbWNweShvdXQsICZ2LCBzaXplb2YodikpOwotIH0KLSAKLS0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlw dG8vZmlwc21vZHVsZS9tb2Rlcy9wb2x5dmFsLmMKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vZmlwc21vZHVsZS9t b2Rlcy9wb2x5dmFsLmMKLUBAIC0zMiwxNiArMzIsMjYgQEAgc3RhdGljIHZvaWQgYnl0ZV9yZXZl cnNlKHBvbHl2YWxfYmxvY2sgKmIpIHsKLSAvLyB0aGUgR0hBU0ggZmllbGQsIG11bHRpcGxpZXMg dGhhdCBieSAneCcgYW5kIHNlcmlhbGlzZXMgdGhlIHJlc3VsdCBiYWNrIGludG8KLSAvLyB8Ynws IGJ1dCB3aXRoIEdIQVNIJ3MgYmFja3dhcmRzIGJpdCBvcmRlcmluZy4KLSBzdGF0aWMgdm9pZCBy ZXZlcnNlX2FuZF9tdWxYX2doYXNoKHBvbHl2YWxfYmxvY2sgKmIpIHsKLSsjaWZkZWYgT1BFTlNT TF9CSUdFTkRJQU4KLSsgIHVpbnQ2NF90IGhpID0gQ1JZUFRPX2Jzd2FwOChiLT51WzBdKTsKLSsg IHVpbnQ2NF90IGxvID0gQ1JZUFRPX2Jzd2FwOChiLT51WzFdKTsKLSsjZWxzZQotICAgdWludDY0 X3QgaGkgPSBiLT51WzBdOwotICAgdWludDY0X3QgbG8gPSBiLT51WzFdOwotKyNlbmRpZgotICAg Y29uc3QgY3J5cHRvX3dvcmRfdCBjYXJyeSA9IGNvbnN0YW50X3RpbWVfZXFfdyhoaSAmIDEsIDEp OwotICAgaGkgPj49IDE7Ci0gICBoaSB8PSBsbyA8PCA2MzsKLSAgIGxvID4+PSAxOwotICAgbG8g Xj0gKCh1aW50NjRfdCkgY29uc3RhbnRfdGltZV9zZWxlY3RfdyhjYXJyeSwgMHhlMSwgMCkpIDw8 IDU2OwotIAotKyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgotKyAgYi0+dVswXSA9IGxvOwotKyAg Yi0+dVsxXSA9IGhpOwotKyNlbHNlCi0gICBiLT51WzBdID0gQ1JZUFRPX2Jzd2FwOChsbyk7Ci0g ICBiLT51WzFdID0gQ1JZUFRPX2Jzd2FwOChoaSk7Ci0rI2VuZGlmCi0gfQotIAotIC8vIFBPTFlW QUwoSCwgWF8xLCAuLi4sIFhfbikgPQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0by9maXBzbW9kdWxlL3JhbmQvY3Ry ZHJiZy5jCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2ZpcHNtb2R1bGUvcmFuZC9jdHJkcmJnLmMKLUBAIC03MCw4 ICs3MCwxMiBAQCBPUEVOU1NMX1NUQVRJQ19BU1NFUlQoQ1RSX0RSQkdfRU5UUk9QWV9MRU4gJSBB RVNfQkxPQ0tfU0laRSA9PSAwLAotIC8vIGN0cl9pbmMgYWRkcyB8bnwgdG8gdGhlIGxhc3QgZm91 ciBieXRlcyBvZiB8ZHJiZy0+Y291bnRlcnwsIHRyZWF0ZWQgYXMgYQotIC8vIGJpZy1lbmRpYW4g bnVtYmVyLgotIHN0YXRpYyB2b2lkIGN0cjMyX2FkZChDVFJfRFJCR19TVEFURSAqZHJiZywgdWlu dDMyX3QgbikgewotKyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgotKyAgZHJiZy0+Y291bnRlci53 b3Jkc1szXSArPSBuOwotKyNlbHNlCi0gICBkcmJnLT5jb3VudGVyLndvcmRzWzNdID0KLSAgICAg ICBDUllQVE9fYnN3YXA0KENSWVBUT19ic3dhcDQoZHJiZy0+Y291bnRlci53b3Jkc1szXSkgKyBu KTsKLSsjZW5kaWYKLSB9Ci0gCi0gc3RhdGljIGludCBjdHJfZHJiZ191cGRhdGUoQ1RSX0RSQkdf U1RBVEUgKmRyYmcsIGNvbnN0IHVpbnQ4X3QgKmRhdGEsCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL3BvbHkxMzA1 L3BvbHkxMzA1LmMKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRf cGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vcG9seTEzMDUvcG9seTEzMDUuYwotQEAgLTMyLDEw ICszMiwxNiBAQAotIHN0YXRpYyB1aW50MzJfdCBVOFRPMzJfTEUoY29uc3QgdWludDhfdCAqbSkg ewotICAgdWludDMyX3QgcjsKLSAgIE9QRU5TU0xfbWVtY3B5KCZyLCBtLCBzaXplb2YocikpOwot KyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgotKyAgciA9IENSWVBUT19ic3dhcDQocik7Ci0rI2Vu ZGlmCi0gICByZXR1cm4gcjsKLSB9Ci0gCi0gc3RhdGljIHZvaWQgVTMyVE84X0xFKHVpbnQ4X3Qg Km0sIHVpbnQzMl90IHYpIHsKLSsjaWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KLSsgIHYgPSBDUllQ VE9fYnN3YXA0KHYpOwotKyNlbmRpZgotICAgT1BFTlNTTF9tZW1jcHkobSwgJnYsIHNpemVvZih2 KSk7Ci0gfQotIAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9ib3Jpbmdzc2wvc3JjL2luY2x1ZGUvb3BlbnNzbC9iYXNlLmgKLSsrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9pbmNsdWRl L29wZW5zc2wvYmFzZS5oCi1AQCAtOTksNiArOTksMTAgQEAgZXh0ZXJuICJDIiB7Ci0gI2VsaWYg KGRlZmluZWQoX19QUEM2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pKSAmJiBkZWZpbmVk KF9MSVRUTEVfRU5ESUFOKQotICNkZWZpbmUgT1BFTlNTTF82NF9CSVQKLSAjZGVmaW5lIE9QRU5T U0xfUFBDNjRMRQotKyNlbGlmIChkZWZpbmVkKF9fUFBDNjRfXykgfHwgZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKSkKLSsjZGVmaW5lIE9QRU5TU0xfNjRfQklUCi0rI2RlZmluZSBPUEVOU1NMX1BQQzY0 Ci0rI2RlZmluZSBPUEVOU1NMX0JJR0VORElBTgotICNlbGlmIGRlZmluZWQoX19taXBzX18pICYm ICFkZWZpbmVkKF9fTFA2NF9fKQotICNkZWZpbmUgT1BFTlNTTF8zMl9CSVQKLSAjZGVmaW5lIE9Q RU5TU0xfTUlQUwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9ib3Jpbmdzc2wvc3JjL3RoaXJkX3BhcnR5L2ZpYXQvY3VydmUyNTUxOS5jCi0rKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMv dGhpcmRfcGFydHkvZmlhdC9jdXJ2ZTI1NTE5LmMKLUBAIC0zMDMyLDkgKzMwMzIsMTQgQEAgaW50 IEVEMjU1MTlfdmVyaWZ5KGNvbnN0IHVpbnQ4X3QgKm1lc3NhZ2UsIHNpemVfdCBtZXNzYWdlX2xl biwKLSAgICAgVUlOVDY0X0MoMHgxMDAwMDAwMDAwMDAwMDAwKSwKLSAgIH07Ci0gICBmb3IgKHNp emVfdCBpID0gMzs7IGktLSkgewotLSAgICBpZiAoc2NvcHkudTY0W2ldID4ga09yZGVyW2ldKSB7 Ci0rI2lmZGVmIE9QRU5TU0xfQklHRU5ESUFOCi0rICAgIGNvbnN0IHVpbnQ2NF90IG4gPSBDUllQ VE9fYnN3YXA4KHNjb3B5LnU2NFtpXSk7Ci0rI2Vsc2UKLSsgICAgY29uc3QgdWludDY0X3QgbiA9 IHNjb3B5LnU2NFtpXTsKLSsjZW5kaWYKLSsgICAgaWYgKG4gPiBrT3JkZXJbaV0pIHsKLSAgICAg ICByZXR1cm4gMDsKLS0gICAgfSBlbHNlIGlmIChzY29weS51NjRbaV0gPCBrT3JkZXJbaV0pIHsK LSsgICAgfSBlbHNlIGlmIChuIDwga09yZGVyW2ldKSB7Ci0gICAgICAgYnJlYWs7Ci0gICAgIH0g ZWxzZSBpZiAoaSA9PSAwKSB7Ci0gICAgICAgcmV0dXJuIDA7Ci0tLS0gcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvdGhpcmRfcGFydHkv ZmlhdC9wMjU2LmMKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRf cGFydHkvYm9yaW5nc3NsL3NyYy90aGlyZF9wYXJ0eS9maWF0L3AyNTYuYwotQEAgLTg4MiwxMiAr ODgyLDI0IEBAIHN0YXRpYyB2b2lkIGZlX3RvYnl0ZXModWludDhfdCBvdXRbTkJZVEVTXSwgY29u c3QgZmUgaW4pIHsKLSAgIH0KLSB9Ci0gCi0rI2lmZGVmIE9QRU5TU0xfQklHRU5ESUFOCi0rc3Rh dGljIHZvaWQgZmVfdG9ieXRlc19iZSh1aW50OF90IG91dFtOQllURVNdLCBjb25zdCBmZSBpbikg ewotKyAgZm9yIChpbnQgaSA9IDA7IGk8TkJZVEVTOyBpKyspIHsKLSsgICAgb3V0W2kgXiAoQk5f QllURVMtMSldID0gKHVpbnQ4X3QpKGluW2kvc2l6ZW9mKGluWzBdKV0gPj4gKDgqKGklc2l6ZW9m KGluWzBdKSkpKTsKLSsgIH0KLSt9Ci0rI2VuZGlmCi0rCi0gc3RhdGljIHZvaWQgZmVfZnJvbWJ5 dGVzKGZlIG91dCwgY29uc3QgdWludDhfdCBpbltOQllURVNdKSB7Ci0gICBmb3IgKGludCBpID0g MDsgaTxOTElNQlM7IGkrKykgewotICAgICBvdXRbaV0gPSAwOwotICAgfQotICAgZm9yIChpbnQg aSA9IDA7IGk8TkJZVEVTOyBpKyspIHsKLSsjaWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KLSsgICAg b3V0W2kvc2l6ZW9mKG91dFswXSldIHw9ICgobGltYl90KWluW2kgXiAoQk5fQllURVMtMSldKSA8 PCAoOCooaSVzaXplb2Yob3V0WzBdKSkpOwotKyNlbHNlCi0gICAgIG91dFtpL3NpemVvZihvdXRb MF0pXSB8PSAoKGxpbWJfdClpbltpXSkgPDwgKDgqKGklc2l6ZW9mKG91dFswXSkpKTsKLSsjZW5k aWYKLSAgIH0KLSB9Ci0gCi1AQCAtOTA2LDcgKzkxOCwxMSBAQCBzdGF0aWMgdm9pZCBmZV90b19n ZW5lcmljKEVDX0ZFTEVNICpvdXQsIGNvbnN0IGZlIGluKSB7Ci0gICBPUEVOU1NMX1NUQVRJQ19B U1NFUlQoCi0gICAgICAgMjU2IC8gOCA9PSBzaXplb2YoQk5fVUxPTkcpICogKCgyNTYgKyBCTl9C SVRTMiAtIDEpIC8gQk5fQklUUzIpLAotICAgICAgICJmZV90b2J5dGVzIGxlYXZlcyBieXRlcyB1 bmluaXRpYWxpemVkIik7Ci0rI2lmZGVmIE9QRU5TU0xfQklHRU5ESUFOCi0rICBmZV90b2J5dGVz X2JlKG91dC0+Ynl0ZXMsIGluKTsKLSsjZWxzZQotICAgZmVfdG9ieXRlcyhvdXQtPmJ5dGVzLCBp bik7Ci0rI2VuZGlmCi0gfQotIAotIC8vIGZlX2ludiBjYWxjdWxhdGVzIHxvdXR8ID0gfGlufF57 LTF9Ci1AQCAtMTUyNCw3ICsxNTQwLDExIEBAIHN0YXRpYyBjaGFyIGdldF9iaXQoY29uc3QgdWlu dDhfdCAqaW4sIGludCBpKSB7Ci0gICBpZiAoaSA8IDAgfHwgaSA+PSAyNTYpIHsKLSAgICAgcmV0 dXJuIDA7Ci0gICB9Ci0rI2lmZGVmIE9QRU5TU0xfQklHRU5ESUFOCi0rICByZXR1cm4gKGluWyhp ID4+IDMpIF4gKHNpemVvZihCTl9VTE9ORyktMSldID4+IChpICYgNykpICYgMTsKLSsjZWxzZQot ICAgcmV0dXJuIChpbltpID4+IDNdID4+IChpICYgNykpICYgMTsKLSsjZW5kaWYKLSB9Ci0gCi0g Ly8gSW50ZXJsZWF2ZWQgcG9pbnQgbXVsdGlwbGljYXRpb24gdXNpbmcgcHJlY29tcHV0ZWQgcG9p bnQgbXVsdGlwbGVzOiBUaGUKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvY3JjMzJjL0JVSUxELmduCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYzMyYy9CVUlMRC5nbgotQEAgLTE1LDEzICsxNSwxMCBA QCBjb25maWcoImNyYzMyY19jb25maWciKSB7Ci0gICBdCi0gCi0gICBkZWZpbmVzID0gWwotLSAg ICAiQllURV9PUkRFUl9CSUdfRU5ESUFOPTAiLAotKyAgICAiQllURV9PUkRFUl9CSUdfRU5ESUFO PV9fQllURV9PUkRFUl9fPT1fX09SREVSX0JJR19FTkRJQU5fXyIsCi0gICAgICJDUkMzMkNfVEVT VFNfQlVJTFRfV0lUSF9HTE9HPTAiLAotICAgXQotIAotLSAgIyBJZiB3ZSBldmVyIHN1cHBvcnQg YmlnLWVuZGlhbiBidWlsZHMsIGFkZCBsb2dpYyB0byBjb25kaXRpb25hbGx5IGVuYWJsZQotLSAg IyBCWVRFX09SREVSX0JJR19FTkRJQU4uCi0tCi0gICBpZiAodGFyZ2V0X2NwdSA9PSAieDg2IiB8 fCB0YXJnZXRfY3B1ID09ICJ4NjQiKSB7Ci0gICAgIGRlZmluZXMgKz0gWwotICAgICAgICJIQVZF X01NX1BSRUZFVENIPTEiLAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9mbGF0YnVmZmVycy9zcmMvaW5jbHVkZS9mbGF0YnVmZmVycy9iYXNlLmgKLSsr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvZmxhdGJ1ZmZl cnMvc3JjL2luY2x1ZGUvZmxhdGJ1ZmZlcnMvYmFzZS5oCi1AQCAtMjIwLDE4ICsyMjAsMTUgQEAg dGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBFbmRpYW5Td2FwKFQgdCkgewotICAgaWYgKHNpemVvZihU KSA9PSAxKSB7ICAgLy8gQ29tcGlsZS10aW1lIGlmLXRoZW4ncy4KLSAgICAgcmV0dXJuIHQ7Ci0g ICB9IGVsc2UgaWYgKHNpemVvZihUKSA9PSAyKSB7Ci0tICAgIHVuaW9uIHsgVCB0OyB1aW50MTZf dCBpOyB9IHU7Ci0tICAgIHUudCA9IHQ7Ci0rICAgIHVuaW9uIFUgeyBUIHQ7IHVpbnQxNl90IGk7 IFUoY29uc3QgVCYgdF8pIDogdCh0Xykge319IHUodCk7Ci0gICAgIHUuaSA9IEZMQVRCVUZGRVJT X0JZVEVTV0FQMTYodS5pKTsKLSAgICAgcmV0dXJuIHUudDsKLSAgIH0gZWxzZSBpZiAoc2l6ZW9m KFQpID09IDQpIHsKLS0gICAgdW5pb24geyBUIHQ7IHVpbnQzMl90IGk7IH0gdTsKLS0gICAgdS50 ID0gdDsKLSsgICAgdW5pb24gVSB7IFQgdDsgdWludDMyX3QgaTsgVShjb25zdCBUJiB0XykgOiB0 KHRfKSB7fX0gdSh0KTsKLSAgICAgdS5pID0gRkxBVEJVRkZFUlNfQllURVNXQVAzMih1LmkpOwot ICAgICByZXR1cm4gdS50OwotICAgfSBlbHNlIGlmIChzaXplb2YoVCkgPT0gOCkgewotLSAgICB1 bmlvbiB7IFQgdDsgdWludDY0X3QgaTsgfSB1OwotLSAgICB1LnQgPSB0OwotKyAgICB1bmlvbiBV IHsgVCB0OyB1aW50NjRfdCBpOyBVKGNvbnN0IFQmIHRfKSA6IHQodF8pIHt9fSB1KHQpOwotICAg ICB1LmkgPSBGTEFUQlVGRkVSU19CWVRFU1dBUDY0KHUuaSk7Ci0gICAgIHJldHVybiB1LnQ7Ci0g ICB9IGVsc2UgewotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9mbGF0YnVmZmVycy9zcmMvaW5jbHVkZS9mbGF0YnVmZmVycy9taW5pcmVmbGVjdC5oCi0r KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2ZsYXRidWZm ZXJzL3NyYy9pbmNsdWRlL2ZsYXRidWZmZXJzL21pbmlyZWZsZWN0LmgKLUBAIC0xMjIsNTggKzEy Miw1OCBAQCBpbmxpbmUgdm9pZCBJdGVyYXRlVmFsdWUoRWxlbWVudGFyeVR5cGUgdHlwZSwgY29u c3QgdWludDhfdCAqdmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzb2Zmc2V0X3QgdmVj dG9yX2luZGV4LCBJdGVyYXRpb25WaXNpdG9yICp2aXNpdG9yKSB7Ci0gICBzd2l0Y2ggKHR5cGUp IHsKLSAgICAgY2FzZSBFVF9VVFlQRTogewotLSAgICAgIGF1dG8gdHZhbCA9ICpyZWludGVycHJl dF9jYXN0PGNvbnN0IHVpbnQ4X3QgKj4odmFsKTsKLSsgICAgICBhdXRvIHR2YWwgPSBSZWFkU2Nh bGFyPHVpbnQ4X3Q+KHZhbCk7Ci0gICAgICAgdmlzaXRvci0+VVR5cGUodHZhbCwgRW51bU5hbWUo dHZhbCwgdHlwZV90YWJsZSkpOwotICAgICAgIGJyZWFrOwotICAgICB9Ci0gICAgIGNhc2UgRVRf Qk9PTDogewotLSAgICAgIHZpc2l0b3ItPkJvb2woKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu dDhfdCAqPih2YWwpICE9IDApOwotKyAgICAgIHZpc2l0b3ItPkJvb2woUmVhZFNjYWxhcjx1aW50 OF90Pih2YWwpICE9IDApOwotICAgICAgIGJyZWFrOwotICAgICB9Ci0gICAgIGNhc2UgRVRfQ0hB UjogewotLSAgICAgIGF1dG8gdHZhbCA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IGludDhfdCAq Pih2YWwpOwotKyAgICAgIGF1dG8gdHZhbCA9IFJlYWRTY2FsYXI8aW50OF90Pih2YWwpOwotICAg ICAgIHZpc2l0b3ItPkNoYXIodHZhbCwgRW51bU5hbWUodHZhbCwgdHlwZV90YWJsZSkpOwotICAg ICAgIGJyZWFrOwotICAgICB9Ci0gICAgIGNhc2UgRVRfVUNIQVI6IHsKLS0gICAgICBhdXRvIHR2 YWwgPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90ICo+KHZhbCk7Ci0rICAgICAgYXV0 byB0dmFsID0gUmVhZFNjYWxhcjx1aW50OF90Pih2YWwpOwotICAgICAgIHZpc2l0b3ItPlVDaGFy KHR2YWwsIEVudW1OYW1lKHR2YWwsIHR5cGVfdGFibGUpKTsKLSAgICAgICBicmVhazsKLSAgICAg fQotICAgICBjYXNlIEVUX1NIT1JUOiB7Ci0tICAgICAgYXV0byB0dmFsID0gKnJlaW50ZXJwcmV0 X2Nhc3Q8Y29uc3QgaW50MTZfdCAqPih2YWwpOwotKyAgICAgIGF1dG8gdHZhbCA9IFJlYWRTY2Fs YXI8aW50MTZfdD4odmFsKTsKLSAgICAgICB2aXNpdG9yLT5TaG9ydCh0dmFsLCBFbnVtTmFtZSh0 dmFsLCB0eXBlX3RhYmxlKSk7Ci0gICAgICAgYnJlYWs7Ci0gICAgIH0KLSAgICAgY2FzZSBFVF9V U0hPUlQ6IHsKLS0gICAgICBhdXRvIHR2YWwgPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50 MTZfdCAqPih2YWwpOwotKyAgICAgIGF1dG8gdHZhbCA9IFJlYWRTY2FsYXI8dWludDE2X3Q+KHZh bCk7Ci0gICAgICAgdmlzaXRvci0+VVNob3J0KHR2YWwsIEVudW1OYW1lKHR2YWwsIHR5cGVfdGFi bGUpKTsKLSAgICAgICBicmVhazsKLSAgICAgfQotICAgICBjYXNlIEVUX0lOVDogewotLSAgICAg IGF1dG8gdHZhbCA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QgKj4odmFsKTsKLSsg ICAgICBhdXRvIHR2YWwgPSBSZWFkU2NhbGFyPGludDMyX3Q+KHZhbCk7Ci0gICAgICAgdmlzaXRv ci0+SW50KHR2YWwsIEVudW1OYW1lKHR2YWwsIHR5cGVfdGFibGUpKTsKLSAgICAgICBicmVhazsK LSAgICAgfQotICAgICBjYXNlIEVUX1VJTlQ6IHsKLS0gICAgICBhdXRvIHR2YWwgPSAqcmVpbnRl cnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCAqPih2YWwpOwotKyAgICAgIGF1dG8gdHZhbCA9IFJl YWRTY2FsYXI8dWludDMyX3Q+KHZhbCk7Ci0gICAgICAgdmlzaXRvci0+VUludCh0dmFsLCBFbnVt TmFtZSh0dmFsLCB0eXBlX3RhYmxlKSk7Ci0gICAgICAgYnJlYWs7Ci0gICAgIH0KLSAgICAgY2Fz ZSBFVF9MT05HOiB7Ci0tICAgICAgdmlzaXRvci0+TG9uZygqcmVpbnRlcnByZXRfY2FzdDxjb25z dCBpbnQ2NF90ICo+KHZhbCkpOwotKyAgICAgIHZpc2l0b3ItPkxvbmcoUmVhZFNjYWxhcjxpbnQ2 NF90Pih2YWwpKTsKLSAgICAgICBicmVhazsKLSAgICAgfQotICAgICBjYXNlIEVUX1VMT05HOiB7 Ci0tICAgICAgdmlzaXRvci0+VUxvbmcoKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDY0X3Qg Kj4odmFsKSk7Ci0rICAgICAgdmlzaXRvci0+VUxvbmcoUmVhZFNjYWxhcjx1aW50NjRfdD4odmFs KSk7Ci0gICAgICAgYnJlYWs7Ci0gICAgIH0KLSAgICAgY2FzZSBFVF9GTE9BVDogewotLSAgICAg IHZpc2l0b3ItPkZsb2F0KCpyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0ICo+KHZhbCkpOwot KyAgICAgIHZpc2l0b3ItPkZsb2F0KFJlYWRTY2FsYXI8ZmxvYXQ+KHZhbCkpOwotICAgICAgIGJy ZWFrOwotICAgICB9Ci0gICAgIGNhc2UgRVRfRE9VQkxFOiB7Ci0tICAgICAgdmlzaXRvci0+RG91 YmxlKCpyZWludGVycHJldF9jYXN0PGNvbnN0IGRvdWJsZSAqPih2YWwpKTsKLSsgICAgICB2aXNp dG9yLT5Eb3VibGUoUmVhZFNjYWxhcjxkb3VibGU+KHZhbCkpOwotICAgICAgIGJyZWFrOwotICAg ICB9Ci0gICAgIGNhc2UgRVRfU1RSSU5HOiB7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2xldmVsZGF0YWJhc2UvcG9ydC9wb3J0X2Nocm9taXVtLmgK LSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvbGV2ZWxk YXRhYmFzZS9wb3J0L3BvcnRfY2hyb21pdW0uaAotQEAgLTIzLDggKzIzLDExIEBACi0gbmFtZXNw YWNlIGxldmVsZGIgewotIG5hbWVzcGFjZSBwb3J0IHsKLSAKLS0vLyBDaHJvbWl1bSBvbmx5IHN1 cHBvcnRzIGxpdHRsZSBlbmRpYW4uCi0rI2lmIEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4KLSBzdGF0 aWMgY29uc3QgYm9vbCBrTGl0dGxlRW5kaWFuID0gdHJ1ZTsKLSsjZWxzZQotK3N0YXRpYyBjb25z dCBib29sIGtMaXR0bGVFbmRpYW4gPSBmYWxzZTsKLSsjZW5kaWYKLSAKLSBjbGFzcyBMT0NLQUJM RSBNdXRleCB7Ci0gIHB1YmxpYzoKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvbW9kcF9iNjQvQlVJTEQuZ24KLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvbW9kcF9iNjQvQlVJTEQuZ24KLUBAIC0yLDEwICsy LDE2IEBACi0gIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgot IAotK2ltcG9ydCgiLy9idWlsZC9jb25maWcvaG9zdF9ieXRlb3JkZXIuZ25pIikKLSsKLSBzdGF0 aWNfbGlicmFyeSgibW9kcF9iNjQiKSB7Ci0gICBzb3VyY2VzID0gWwotICAgICAibW9kcF9iNjQu Y2MiLAotICAgICAibW9kcF9iNjQuaCIsCi0gICAgICJtb2RwX2I2NF9kYXRhLmgiLAotICAgXQot KwotKyAgaWYgKGhvc3RfYnl0ZW9yZGVyID09ICJiaWciKSB7Ci0rICAgIGRlZmluZXMgPSBbICJX T1JEU19CSUdFTkRJQU49MSIgXQotKyAgfQotIH0KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvbW9kcF9iNjQvbW9kcF9iNjQuY2MKLSsrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvbW9kcF9iNjQvbW9kcF9iNjQu Y2MKLUBAIC0xMTgsNyArMTE4LDcgQEAgc2l6ZV90IG1vZHBfYjY0X2VuY29kZShjaGFyKiBkZXN0 LCBjb25zdCBjaGFyKiBzdHIsIHNpemVfdCBsZW4pCi0gfQotIAotICNpZmRlZiBXT1JEU19CSUdF TkRJQU4gICAvKiBCSUcgRU5ESUFOIC0tIFNVTiAvIElCTSAvIE1PVE9ST0xBICovCi0taW50IG1v ZHBfYjY0X2RlY29kZShjaGFyKiBkZXN0LCBjb25zdCBjaGFyKiBzcmMsIGludCBsZW4pCi0rc2l6 ZV90IG1vZHBfYjY0X2RlY29kZShjaGFyKiBkZXN0LCBjb25zdCBjaGFyKiBzcmMsIHNpemVfdCBs ZW4pCi0gewotICAgICBpZiAobGVuID09IDApIHJldHVybiAwOwotIAotLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9wZXJmZXR0by9pbmNsdWRlL3BlcmZl dHRvL2Jhc2UvdXRpbHMuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9wZXJmZXR0by9pbmNsdWRlL3BlcmZldHRvL2Jhc2UvdXRpbHMuaAotQEAgLTIy LDYgKzIyLDcgQEAKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c3RkZGVmLmg+Ci0g I2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KLSAjaWYgIVBFUkZF VFRPX0JVSUxERkxBRyhQRVJGRVRUT19PU19XSU4pCi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgot ICNlbmRpZgotQEAgLTkxLDcgKzkyLDcgQEAgc3RydWN0IEZyZWVEZWxldGVyIHsKLSAKLSB0ZW1w bGF0ZSA8dHlwZW5hbWUgVD4KLSBjb25zdGV4cHIgVCBBc3N1bWVMaXR0bGVFbmRpYW4oVCB2YWx1 ZSkgewotLSAgc3RhdGljX2Fzc2VydChfX0JZVEVfT1JERVJfXyA9PSBfX09SREVSX0xJVFRMRV9F TkRJQU5fXywKLSsgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPFQsVD46OnZhbHVlICYmIF9f QllURV9PUkRFUl9fID09IF9fT1JERVJfTElUVExFX0VORElBTl9fLAotICAgICAgICAgICAgICAg ICAiVW5pbXBsZW1lbnRlZCBvbiBiaWctZW5kaWFuIGFyY2hzIik7Ci0gICByZXR1cm4gdmFsdWU7 Ci0gfQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9w ZXJmZXR0by9pbmNsdWRlL3BlcmZldHRvL3Byb3RvemVyby9tZXNzYWdlLmgKLSsrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvcGVyZmV0dG8vaW5jbHVkZS9w ZXJmZXR0by9wcm90b3plcm8vbWVzc2FnZS5oCi1AQCAtMTM4LDYgKzEzOCwxMyBAQCBjbGFzcyBQ RVJGRVRUT19FWFBPUlQgTWVzc2FnZSB7Ci0gCi0gICAgIHBvcyA9IHByb3RvX3V0aWxzOjpXcml0 ZVZhckludChwcm90b191dGlsczo6TWFrZVRhZ0ZpeGVkPFQ+KGZpZWxkX2lkKSwgcG9zKTsKLSAg ICAgbWVtY3B5KHBvcywgJnZhbHVlLCBzaXplb2YoVCkpOwotKyNpZiBfX0JZVEVfT1JERVJfXyAh PSBfX09SREVSX0xJVFRMRV9FTkRJQU5fXwotKyAgICBmb3IgKHNpemVfdCBpID0gc2l6ZW9mKFQp LzI7IGktLTsgKSB7Ci0rICAgICAgdWludDhfdCB0bXAgPSBwb3NbaV07Ci0rICAgICAgcG9zW2ld ID0gcG9zW3NpemVvZihUKS0xLWldOwotKyAgICAgIHBvc1tzaXplb2YoVCktMS1pXSA9IHRtcDsK LSsgICAgfQotKyNlbmRpZgotICAgICBwb3MgKz0gc2l6ZW9mKFQpOwotICAgICAvLyBUT0RPOiBP cHRpbWl6ZSBtZW1jcHkgcGVyZm9ybWFuY2UsIHNlZSBodHRwOi8vY3JidWcuY29tLzYyNDMxMSAu Ci0gICAgIFdyaXRlVG9TdHJlYW0oYnVmZmVyLCBwb3MpOwotLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9wZXJmZXR0by9zcmMvcHJvdG96ZXJvL21lc3Nh Z2UuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv cGVyZmV0dG8vc3JjL3Byb3RvemVyby9tZXNzYWdlLmNjCi1AQCAtMjEsMTIgKzIxLDYgQEAKLSAj aW5jbHVkZSAicGVyZmV0dG8vYmFzZS9sb2dnaW5nLmgiCi0gI2luY2x1ZGUgInBlcmZldHRvL3By b3RvemVyby9tZXNzYWdlX2hhbmRsZS5oIgotIAotLSNpZiBfX0JZVEVfT1JERVJfXyAhPSBfX09S REVSX0xJVFRMRV9FTkRJQU5fXwotLS8vIFRoZSBtZW1jcHkoKSBmb3IgZmxvYXQgYW5kIGRvdWJs ZSBiZWxvdyBuZWVkcyB0byBiZSBhZGp1c3RlZCBpZiB3ZSB3YW50IHRvCi0tLy8gc3VwcG9ydCBi aWcgZW5kaWFuIENQVXMuIFRoZXJlIGRvZXNuJ3Qgc2VlbSB0byBiZSBhIGNvbXBlbGxpbmcgbmVl ZCB0b2RheS4KLS0jZXJyb3IgVW5pbXBsZW1lbnRlZCBmb3IgYmlnIGVuZGlhbiBhcmNocy4KLS0j ZW5kaWYKLS0KLSBuYW1lc3BhY2UgcHJvdG96ZXJvIHsKLSAKLSAvLyBzdGF0aWMKLS0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvcGVyZmV0dG8vc3JjL3By b3RvemVyby9wcm90b19kZWNvZGVyLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L3BlcmZldHRvL3NyYy9wcm90b3plcm8vcHJvdG9fZGVjb2Rlci5j YwotQEAgLTI5LDcgKzI5LDggQEAgdXNpbmcgbmFtZXNwYWNlIHByb3RvX3V0aWxzOwotICNkZWZp bmUgQllURV9TV0FQX1RPX0xFMzIoeCkgKHgpCi0gI2RlZmluZSBCWVRFX1NXQVBfVE9fTEU2NCh4 KSAoeCkKLSAjZWxzZQotLSNlcnJvciBVbmltcGxlbWVudGVkIGZvciBiaWcgZW5kaWFuIGFyY2hz LgotKyNkZWZpbmUgQllURV9TV0FQX1RPX0xFMzIoeCkgX19idWlsdGluX2Jzd2FwMzIoeCkKLSsj ZGVmaW5lIEJZVEVfU1dBUF9UT19MRTY0KHgpIF9fYnVpbHRpbl9ic3dhcDY0KHgpCi0gI2VuZGlm Ci0gCi0gUHJvdG9EZWNvZGVyOjpGaWVsZCBQcm90b0RlY29kZXI6OlJlYWRGaWVsZCgpIHsKLS0t LSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9pbmNs dWRlL2NvcmUvU2tQb3N0Q29uZmlnLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tQb3N0Q29uZmlnLmgKLUBAIC00 MCwxMiArNDAsNiBAQAotICMgIGVycm9yICJtdXN0IGRlZmluZSBlaXRoZXIgU0tfQ1BVX0xFTkRJ QU4gb3IgU0tfQ1BVX0JFTkRJQU4iCi0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQoU0tfQ1BVX0JF TkRJQU4pICYmICFkZWZpbmVkKElfQUNLTk9XTEVER0VfU0tJQV9ET0VTX05PVF9TVVBQT1JUX0JJ R19FTkRJQU4pCi0tICAgICNlcnJvciAiVGhlIFNraWEgdGVhbSBpcyBub3QgZW5kaWFuLXNhdnZ5 IGVub3VnaCB0byBzdXBwb3J0IGJpZy1lbmRpYW4gQ1BVcy4iCi0tICAgICNlcnJvciAiSWYgeW91 IHN0aWxsIHdhbnQgdG8gdXNlIFNraWEsIgotLSAgICAjZXJyb3IgInBsZWFzZSBkZWZpbmUgSV9B Q0tOT1dMRURHRV9TS0lBX0RPRVNfTk9UX1NVUFBPUlRfQklHX0VORElBTi4iCi0tI2VuZGlmCi0t Ci0gLyoqCi0gICogRW5zdXJlIHRoZSBwb3J0IGhhcyBkZWZpbmVkIGFsbCBvZiBTS19YMzJfU0hJ RlQsIG9yIG5vbmUgb2YgdGhlbS4KLSAgKi8KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL3ByaXZhdGUvR3JUeXBlc1ByaXYuaAot KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL2lu Y2x1ZGUvcHJpdmF0ZS9HclR5cGVzUHJpdi5oCi1AQCAtNjUsOSArNjUsNiBAQCBlbnVtIEdyUGl4 ZWxDb25maWcgewotIHN0YXRpYyBjb25zdCBpbnQga0dyUGl4ZWxDb25maWdDbnQgPSBrTGFzdF9H clBpeGVsQ29uZmlnICsgMTsKLSAKLSAvLyBBbGlhc2VzIGZvciBwaXhlbCBjb25maWdzIHRoYXQg bWF0Y2ggc2tpYSdzIGJ5dGUgb3JkZXIuCi0tI2lmbmRlZiBTS19DUFVfTEVORElBTgotLSNlcnJv ciAiU2tpYSBncHUgY3VycmVudGx5IGFzc3VtZXMgbGl0dGxlIGVuZGlhbiIKLS0jZW5kaWYKLSAj aWYgU0tfUE1DT0xPUl9CWVRFX09SREVSKEIsRyxSLEEpCi0gc3RhdGljIGNvbnN0IEdyUGl4ZWxD b25maWcga1NraWE4ODg4X0dyUGl4ZWxDb25maWcgPSBrQkdSQV84ODg4X0dyUGl4ZWxDb25maWc7 Ci0gI2VsaWYgU0tfUE1DT0xPUl9CWVRFX09SREVSKFIsRyxCLEEpCi0tLS0gcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEvc3JjL2NvZGVjL1NrQ29kZWNQ cml2LmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv c2tpYS9zcmMvY29kZWMvU2tDb2RlY1ByaXYuaAotQEAgLTE0LDYgKzE0LDcgQEAKLSAjaW5jbHVk ZSAiU2tFbmNvZGVkT3JpZ2luLmgiCi0gI2luY2x1ZGUgIlNrSW1hZ2VJbmZvLmgiCi0gI2luY2x1 ZGUgIlNrVHlwZXMuaCIKLSsjaW5jbHVkZSAiU2tFbmRpYW4uaCIKLSAKLSAjaWZkZWYgU0tfUFJJ TlRfQ09ERUNfTUVTU0FHRVMKLSAgICAgI2RlZmluZSBTa0NvZGVjUHJpbnRmIFNrRGVidWdmCi0t LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEvc3Jj L2NvcmUvU2tDb2xvci5jcHAKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvc2tpYS9zcmMvY29yZS9Ta0NvbG9yLmNwcAotQEAgLTEwOCwxMyArMTA4LDI5 IEBAIFNrQ29sb3IgU2tIU1ZUb0NvbG9yKFU4Q1BVIGEsIGNvbnN0IFNrU2NhbGFyIGhzdlszXSkg ewotIHRlbXBsYXRlIDw+Ci0gU2tDb2xvcjRmIFNrQ29sb3I0Zjo6RnJvbUNvbG9yKFNrQ29sb3Ig YmdyYSkgewotICAgICBTa0NvbG9yNGYgcmdiYTsKLS0gICAgc3dpenpsZV9yYihTazRmX2Zyb21M MzIoYmdyYSkpLnN0b3JlKHJnYmEudmVjKCkpOwotKyAgICBTazRmIGM0ZiA9IFNrNGZfZnJvbUwz MihiZ3JhKTsKLSsjaWZkZWYgU0tfQ1BVX0JFTkRJQU4KLSsgICAgLy8gQVJHQiAtPiBSR0JBCi0r ICAgIGM0ZiA9IFNrTnhfc2h1ZmZsZTwxLCAyLCAzLCAwPihjNGYpOwotKyNlbHNlCi0rICAgIC8v IEJHUkEgLT4gUkdCQQotKyAgICBjNGYgPSBzd2l6emxlX3JiKGM0Zik7Ci0rI2VuZGlmCi0rICAg IGM0Zi5zdG9yZShyZ2JhLnZlYygpKTsKLSAgICAgcmV0dXJuIHJnYmE7Ci0gfQotIAotIHRlbXBs YXRlIDw+Ci0gU2tDb2xvciBTa0NvbG9yNGY6OnRvU2tDb2xvcigpIGNvbnN0IHsKLS0gICAgcmV0 dXJuIFNrNGZfdG9MMzIoc3dpenpsZV9yYihTazRmOjpMb2FkKHRoaXMtPnZlYygpKSkpOwotKyAg ICBTazRmIGM0ZiA9IFNrNGY6OkxvYWQodGhpcy0+dmVjKCkpOwotKyNpZmRlZiBTS19DUFVfQkVO RElBTgotKyAgICAvLyBSR0JBIC0+IEFSR0IKLSsgICAgYzRmID0gU2tOeF9zaHVmZmxlPDMsIDAs IDEsIDI+KGM0Zik7Ci0rI2Vsc2UKLSsgICAgLy8gUkdCQSAtPiBCR1JBCi0rICAgIGM0ZiA9IHN3 aXp6bGVfcmIoYzRmKTsKLSsjZW5kaWYKLSsgICAgcmV0dXJuIFNrNGZfdG9MMzIoYzRmKTsKLSB9 Ci0gCi0gdGVtcGxhdGUgPD4KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvc2tpYS9zcmMvY29yZS9Ta1BpeG1hcC5jcHAKLSsrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9zcmMvY29yZS9Ta1BpeG1hcC5j cHAKLUBAIC0yNDYsNyArMjQ2LDggQEAgU2tDb2xvciBTa1BpeG1hcDo6Z2V0Q29sb3IoaW50IHgs IGludCB5KSBjb25zdCB7Ci0gICAgIGNvbnN0IGJvb2wgbmVlZHNVbnByZW11bCA9IChrUHJlbXVs X1NrQWxwaGFUeXBlID09IGZJbmZvLmFscGhhVHlwZSgpKTsKLSAgICAgYXV0byB0b0NvbG9yID0g W25lZWRzVW5wcmVtdWxdKHVpbnQzMl90IG1heWJlUHJlbXVsQ29sb3IpIHsKLSAgICAgICAgIHJl dHVybiBuZWVkc1VucHJlbXVsID8gU2tVblByZU11bHRpcGx5OjpQTUNvbG9yVG9Db2xvcihtYXli ZVByZW11bENvbG9yKQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBTa1N3aXp6bGVf QkdSQV90b19QTUNvbG9yKG1heWJlUHJlbXVsQ29sb3IpOwotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOiBTa0NvbG9yU2V0QVJHQihTa0dldFBhY2tlZEEzMihtYXliZVByZW11bENvbG9y KSwgU2tHZXRQYWNrZWRSMzIobWF5YmVQcmVtdWxDb2xvciksCi0rCQkJCQkgICAgICBTa0dldFBh Y2tlZEczMihtYXliZVByZW11bENvbG9yKSwgU2tHZXRQYWNrZWRCMzIobWF5YmVQcmVtdWxDb2xv cikpOwotICAgICB9OwotIAotICAgICBzd2l0Y2ggKHRoaXMtPmNvbG9yVHlwZSgpKSB7Ci0tLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEvc3JjL29w dHMvU2s0cHhfbm9uZS5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L3NraWEvc3JjL29wdHMvU2s0cHhfbm9uZS5oCi1AQCAtMzUsNyArMzUsNiBAQCBp bmxpbmUgU2s0cHggU2s0cHg6OldpZGU6OmRpdjI1NSgpIGNvbnN0IHsKLSB9Ci0gCi0gaW5saW5l IFNrNHB4IFNrNHB4OjphbHBoYXMoKSBjb25zdCB7Ci0tICAgIHN0YXRpY19hc3NlcnQoU0tfQTMy X1NISUZUID09IDI0LCAiVGhpcyBtZXRob2QgYXNzdW1lcyBsaXR0bGUtZW5kaWFuLiIpOwotICAg ICByZXR1cm4gU2sxNmIoKCp0aGlzKVsgM10sICgqdGhpcylbIDNdLCAoKnRoaXMpWyAzXSwgKCp0 aGlzKVsgM10sCi0gICAgICAgICAgICAgICAgICAoKnRoaXMpWyA3XSwgKCp0aGlzKVsgN10sICgq dGhpcylbIDddLCAoKnRoaXMpWyA3XSwKLSAgICAgICAgICAgICAgICAgICgqdGhpcylbMTFdLCAo KnRoaXMpWzExXSwgKCp0aGlzKVsxMV0sICgqdGhpcylbMTFdLAotLS0tIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL3NyYy9vcHRzL1NrQmxpdFJvd19v cHRzLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv c2tpYS9zcmMvb3B0cy9Ta0JsaXRSb3dfb3B0cy5oCi1AQCAtMjM3LDggKzIzNyw4IEBAIHZvaWQg YmxpdF9yb3dfczMyYV9vcGFxdWUoU2tQTUNvbG9yKiBkc3QsIGNvbnN0IFNrUE1Db2xvciogc3Jj LCBpbnQgbGVuLCBVOENQVSBhCi0gICAgICAgICAvLyB3aXRoIGNocm9taXVtOjYxMTAwMiB3ZSBu ZWVkIHRvIGtlZXAgaXQgdW50aWwgd2UgZmlndXJlIG91dCB3aGVyZQotICAgICAgICAgLy8gdGhl IG5vbi1wcmVtdWx0aXBsaWVkIHNyYyB2YWx1ZXMgKGxpa2UgMHgwMEZGRkZGRikgYXJlIGNvbWlu ZyBmcm9tLgotICAgICAgICAgLy8gVE9ETyhtdGtsZWluKTogc29ydCB0aGlzIG91dCBhbmQgYXNz ZXJ0ICpzcmMgaXMgcHJlbXVsIGhlcmUuCi0tICAgICAgICBpZiAoKnNyYyAmIDB4RkYwMDAwMDAp IHsKLS0gICAgICAgICAgICAqZHN0ID0gKCpzcmMgPj0gMHhGRjAwMDAwMCkgPyAqc3JjIDogU2tQ TVNyY092ZXIoKnNyYywgKmRzdCk7Ci0rICAgICAgICBpZiAoKnNyYyAmICgweEZGIDw8IFNLX0Ez Ml9TSElGVCkpIHsKLSsgICAgICAgICAgICAqZHN0ID0gKCgqc3JjIDw8ICgyNCAtIFNLX0EzMl9T SElGVCkpID49IDB4RkYwMDAwMDApID8gKnNyYyA6IFNrUE1TcmNPdmVyKCpzcmMsICpkc3QpOwot ICAgICAgICAgfQotICAgICAgICAgc3JjKys7Ci0gICAgICAgICBkc3QrKzsKLS0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9zcmMvb3B0cy9Ta1Jh c3RlclBpcGVsaW5lX29wdHMuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9za2lhL3NyYy9vcHRzL1NrUmFzdGVyUGlwZWxpbmVfb3B0cy5oCi1AQCAt OTQ4LDEwICs5NDgsMTcgQEAgU0kgdm9pZCBmcm9tXzQ0NDQoVTE2IF80NDQ0LCBGKiByLCBGKiBn LCBGKiBiLCBGKiBhKSB7Ci0gICAgICphID0gY2FzdCh3aWRlICYgKDE1PDwgMCkpICogKDEuMGYg LyAoMTU8PCAwKSk7Ci0gfQotIFNJIHZvaWQgZnJvbV84ODg4KFUzMiBfODg4OCwgRiogciwgRiog ZywgRiogYiwgRiogYSkgewotKyNpZmRlZiBTS19DUFVfQkVORElBTgotKyAgICAqciA9IGNhc3Qo KF84ODg4ID4+IDI0KSAgICAgICApICogKDEvMjU1LjBmKTsKLSsgICAgKmcgPSBjYXN0KChfODg4 OCA+PiAxNikgJiAweGZmKSAqICgxLzI1NS4wZik7Ci0rICAgICpiID0gY2FzdCgoXzg4ODggPj4g IDgpICYgMHhmZikgKiAoMS8yNTUuMGYpOwotKyAgICAqYSA9IGNhc3QoKF84ODg4ICAgICAgKSAm IDB4ZmYpICogKDEvMjU1LjBmKTsKLSsjZWxzZQotICAgICAqciA9IGNhc3QoKF84ODg4ICAgICAg KSAmIDB4ZmYpICogKDEvMjU1LjBmKTsKLSAgICAgKmcgPSBjYXN0KChfODg4OCA+PiAgOCkgJiAw eGZmKSAqICgxLzI1NS4wZik7Ci0gICAgICpiID0gY2FzdCgoXzg4ODggPj4gMTYpICYgMHhmZikg KiAoMS8yNTUuMGYpOwotICAgICAqYSA9IGNhc3QoKF84ODg4ID4+IDI0KSAgICAgICApICogKDEv MjU1LjBmKTsKLSsjZW5kaWYKLSB9Ci0gU0kgdm9pZCBmcm9tXzEwMTAxMDIoVTMyIHJnYmEsIEYq IHIsIEYqIGcsIEYqIGIsIEYqIGEpIHsKLSAgICAgKnIgPSBjYXN0KChyZ2JhICAgICAgKSAmIDB4 M2ZmKSAqICgxLzEwMjMuMGYpOwotQEAgLTEyNzgsMTAgKzEyODUsMTcgQEAgU1RBR0Uoc3Jjb3Zl cl9yZ2JhXzg4ODgsIGNvbnN0IFNrUmFzdGVyUGlwZWxpbmVfTWVtb3J5Q3R4KiBjdHgpIHsKLSAg ICAgYXV0byBwdHIgPSBwdHJfYXRfeHk8dWludDMyX3Q+KGN0eCwgZHgsZHkpOwotIAotICAgICBV MzIgZHN0ID0gbG9hZDxVMzI+KHB0ciwgdGFpbCk7Ci0rI2lmZGVmIFNLX0NQVV9CRU5ESUFOCi0r ICAgIGRyID0gY2FzdCgoZHN0ID4+IDI0KSAgICAgICApOwotKyAgICBkZyA9IGNhc3QoKGRzdCA+ PiAxNikgJiAweGZmKTsKLSsgICAgZGIgPSBjYXN0KChkc3QgPj4gIDgpICYgMHhmZik7Ci0rICAg IGRhID0gY2FzdCgoZHN0ICAgICAgKSAmIDB4ZmYpOwotKyNlbHNlCi0gICAgIGRyID0gY2FzdCgo ZHN0ICAgICAgKSAmIDB4ZmYpOwotICAgICBkZyA9IGNhc3QoKGRzdCA+PiAgOCkgJiAweGZmKTsK LSAgICAgZGIgPSBjYXN0KChkc3QgPj4gMTYpICYgMHhmZik7Ci0gICAgIGRhID0gY2FzdCgoZHN0 ID4+IDI0KSAgICAgICApOwotKyNlbmRpZgotICAgICAvLyB7ZHIsZGcsZGIsZGF9IGFyZSBpbiBb MCwyNTVdCi0gICAgIC8vIHsgciwgZywgYiwgYX0gYXJlIGluIFswLCAgMV0gKGJ1dCBtYXkgYmUg b3V0IG9mIGdhbXV0KQotIAotQEAgLTEyOTIsMTAgKzEzMDYsMTcgQEAgU1RBR0Uoc3Jjb3Zlcl9y Z2JhXzg4ODgsIGNvbnN0IFNrUmFzdGVyUGlwZWxpbmVfTWVtb3J5Q3R4KiBjdHgpIHsKLSAgICAg Ly8geyByLCBnLCBiLCBhfSBhcmUgbm93IGluIFswLDI1NV0gIChidXQgbWF5IGJlIG91dCBvZiBn YW11dCkKLSAKLSAgICAgLy8gdG9fdW5vcm0oKSBjbGFtcHMgYmFjayB0byBnYW11dC4gIFNjYWxp bmcgYnkgMSBzaW5jZSB3ZSdyZSBhbHJlYWR5IDI1NS1iaWFzZWQuCi0rI2lmZGVmIFNLX0NQVV9C RU5ESUFOCi0rICAgIGRzdCA9IHRvX3Vub3JtKHIsIDEsIDI1NSkgPDwgMjQKLSsgICAgICAgIHwg dG9fdW5vcm0oZywgMSwgMjU1KSA8PCAxNgotKyAgICAgICAgfCB0b191bm9ybShiLCAxLCAyNTUp IDw8ICA4Ci0rICAgICAgICB8IHRvX3Vub3JtKGEsIDEsIDI1NSk7Ci0rI2Vsc2UKLSAgICAgZHN0 ID0gdG9fdW5vcm0ociwgMSwgMjU1KQotICAgICAgICAgfCB0b191bm9ybShnLCAxLCAyNTUpIDw8 ICA4Ci0gICAgICAgICB8IHRvX3Vub3JtKGIsIDEsIDI1NSkgPDwgMTYKLSAgICAgICAgIHwgdG9f dW5vcm0oYSwgMSwgMjU1KSA8PCAyNDsKLSsjZW5kaWYKLSAgICAgc3RvcmUocHRyLCBkc3QsIHRh aWwpOwotIH0KLSAKLUBAIC0xNjk0LDEwICsxNzE1LDE3IEBAIFNUQUdFKGdhdGhlcl84ODg4LCBj b25zdCBTa1Jhc3RlclBpcGVsaW5lX0dhdGhlckN0eCogY3R4KSB7Ci0gU1RBR0Uoc3RvcmVfODg4 OCwgY29uc3QgU2tSYXN0ZXJQaXBlbGluZV9NZW1vcnlDdHgqIGN0eCkgewotICAgICBhdXRvIHB0 ciA9IHB0cl9hdF94eTx1aW50MzJfdD4oY3R4LCBkeCxkeSk7Ci0gCi0rI2lmZGVmIFNLX0NQVV9C RU5ESUFOCi0rICAgIFUzMiBweCA9IHRvX3Vub3JtKHIsIDI1NSkgPDwgMjQKLSsgICAgICAgICAg IHwgdG9fdW5vcm0oZywgMjU1KSA8PCAxNgotKyAgICAgICAgICAgfCB0b191bm9ybShiLCAyNTUp IDw8ICA4Ci0rICAgICAgICAgICB8IHRvX3Vub3JtKGEsIDI1NSk7Ci0rI2Vsc2UKLSAgICAgVTMy IHB4ID0gdG9fdW5vcm0ociwgMjU1KQotICAgICAgICAgICAgfCB0b191bm9ybShnLCAyNTUpIDw8 ICA4Ci0gICAgICAgICAgICB8IHRvX3Vub3JtKGIsIDI1NSkgPDwgMTYKLSAgICAgICAgICAgIHwg dG9fdW5vcm0oYSwgMjU1KSA8PCAyNDsKLSsjZW5kaWYKLSAgICAgc3RvcmUocHRyLCBweCwgdGFp bCk7Ci0gfQotIAotQEAgLTI4NTIsMTAgKzI4ODAsMTcgQEAgU0kgdm9pZCBmcm9tXzg4ODgoVTMy IHJnYmEsIFUxNiogciwgVTE2KiBnLCBVMTYqIGIsIFUxNiogYSkgewotICAgICAgICAgcmV0dXJu IGNhc3Q8VTE2Pih2KTsKLSAgICAgfTsKLSAjZW5kaWYKLSsjaWZkZWYgU0tfQ1BVX0JFTkRJQU4K LSsgICAgKnIgPSBjYXN0X1UxNihyZ2JhID4+ICAgMTYpID4+ICA4OwotKyAgICAqZyA9IGNhc3Rf VTE2KHJnYmEgPj4gICAxNikgJiAyNTU7Ci0rICAgICpiID0gY2FzdF9VMTYocmdiYSAmIDY1NTM1 KSA+PiAgODsKLSsgICAgKmEgPSBjYXN0X1UxNihyZ2JhICYgNjU1MzUpICYgMjU1OwotKyNlbHNl Ci0gICAgICpyID0gY2FzdF9VMTYocmdiYSAmIDY1NTM1KSAmIDI1NTsKLSAgICAgKmcgPSBjYXN0 X1UxNihyZ2JhICYgNjU1MzUpID4+ICA4OwotICAgICAqYiA9IGNhc3RfVTE2KHJnYmEgPj4gICAx NikgJiAyNTU7Ci0gICAgICphID0gY2FzdF9VMTYocmdiYSA+PiAgIDE2KSA+PiAgODsKLSsjZW5k aWYKLSB9Ci0gCi0gU0kgdm9pZCBsb2FkXzg4ODhfKGNvbnN0IHVpbnQzMl90KiBwdHIsIHNpemVf dCB0YWlsLCBVMTYqIHIsIFUxNiogZywgVTE2KiBiLCBVMTYqIGEpIHsKLUBAIC0yODk3LDEwICsy OTMyLDE1IEBAIFNJIHZvaWQgc3RvcmVfODg4OF8odWludDMyX3QqIHB0ciwgc2l6ZV90IHRhaWws IFUxNiByLCBVMTYgZywgVTE2IGIsIFUxNiBhKSB7Ci0gICAgICAgICBjYXNlIDI6IHZzdDRfbGFu ZV91OCgodWludDhfdCopKHB0cisxKSwgcmdiYSwgMSk7Ci0gICAgICAgICBjYXNlIDE6IHZzdDRf bGFuZV91OCgodWludDhfdCopKHB0ciswKSwgcmdiYSwgMCk7Ci0gICAgIH0KLSsjZWxzZQotKyNp ZmRlZiBTS19DUFVfQkVORElBTgotKyAgICBzdG9yZShwdHIsIHRhaWwsIGNhc3Q8VTMyPigocjw8 OCkgfCBnKSA8PCAxNgotKyAgICAgICAgICAgICAgICAgICB8IGNhc3Q8VTMyPigoYjw8OCkgfCBh KSA8PCAwKTsKLSAjZWxzZQotICAgICBzdG9yZShwdHIsIHRhaWwsIGNhc3Q8VTMyPihyIHwgKGc8 PDgpKSA8PCAgMAotICAgICAgICAgICAgICAgICAgICB8IGNhc3Q8VTMyPihiIHwgKGE8PDgpKSA8 PCAxNik7Ci0gI2VuZGlmCi0rI2VuZGlmCi0gfQotIAotIFNUQUdFX1BQKGxvYWRfODg4OCwgY29u c3QgU2tSYXN0ZXJQaXBlbGluZV9NZW1vcnlDdHgqIGN0eCkgewotLS0tIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL3NyYy91dGlscy9Ta0pTT04uY3Bw Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEv c3JjL3V0aWxzL1NrSlNPTi5jcHAKLUBAIC0zNCw2ICszNCwxMCBAQCB2b2lkIFZhbHVlOjppbml0 X3RhZ2dlZChUYWcgdCkgewotIAotIC8vIFBvaW50ZXIgdmFsdWVzIHN0b3JlIGEgdHlwZSAoaW4g dGhlIHVwcGVyIGtUYWdCaXRzIGJpdHMpIGFuZCBhIHBvaW50ZXIuCi0gdm9pZCBWYWx1ZTo6aW5p dF90YWdnZWRfcG9pbnRlcihUYWcgdCwgdm9pZCogcCkgewotKyNpZiAhZGVmaW5lZChTS19DUFVf TEVORElBTikKLSsgICAgLy8gQ2hlY2sgdGhhdCBrUmVjQWxpZ24gaXMgbGFyZ2UgZW5vdWdoIHRv IGxlYXZlIHJvb20gZm9yIHRoZSB0YWcKLSsgICAgc3RhdGljX2Fzc2VydChzaXplb2YoVmFsdWUp ID4gc2l6ZW9mKHVpbnRwdHJfdCkgfHwgIShrUmVjQWxpZ24gJiBWYWx1ZTo6a1RhZ01hc2spLCAi a1JlY0FsaWduIGlzIG5vdCBhIG11bHRpcGxlIG9mIGtUYWdNYXNrKzEiKTsKLSsjZW5kaWYKLSAg ICAgKnRoaXMtPmNhc3Q8dWludHB0cl90PigpID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+ KHApOwotIAotICAgICBpZiAoc2l6ZW9mKFZhbHVlKSA9PSBzaXplb2YodWludHB0cl90KSkgewot QEAgLTE2OSw3ICsxNzMsNyBAQCBwcml2YXRlOgotICNpZiBkZWZpbmVkKFNLX0NQVV9MRU5ESUFO KQotICAgICAgICAgKnM2NCAmPSAweDAwZmZmZmZmZmZmZmZmZmZVTEwgPj4gKChrTWF4SW5saW5l U3RyaW5nU2l6ZSAtIHNpemUpICogOCk7Ci0gI2Vsc2UKLS0gICAgICAgIHN0YXRpY19hc3NlcnQo ZmFsc2UsICJCaWctZW5kaWFuIGJ1aWxkcyBhcmUgbm90IHN1cHBvcnRlZCBhdCB0aGlzIHRpbWUu Iik7Ci0rICAgICAgICAqczY0ICY9IDB4ZmZmZmZmZmZmZmZmZmYwMFVMTCA8PCAoKGtNYXhJbmxp bmVTdHJpbmdTaXplIC0gc2l6ZSkgKiA4KTsKLSAjZW5kaWYKLSAgICAgfQotIH07Ci0tLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEvc3JjL3V0aWxz L1NrSlNPTi5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L3NraWEvc3JjL3V0aWxzL1NrSlNPTi5oCi1AQCAtMTIwLDYgKzEyMCw3IEBAIHByb3RlY3Rl ZDoKLSAgICAgICAgICAtLSBoaWdoZXN0IDMgYml0cyByZXNlcnZlZCBmb3IgdHlwZSBzdG9yYWdl Ci0gCi0gICAgICAqLwotKyNpZiBkZWZpbmVkKFNLX0NQVV9MRU5ESUFOKQotICAgICBlbnVtIGNs YXNzIFRhZyA6IHVpbnQ4X3QgewotICAgICAgICAgLy8gV2UgcGlja2VkIGtTaG9ydFN0cmluZyA9 PSAwIHNvIHRoYXQgdGFnIDB4MDAgYW5kIHN0b3JlZCBtYXhfc2l6ZS1zaXplICg3LTc9MCkKLSAg ICAgICAgIC8vIGNvbnZlbmllbnRseSBvdmVybGFwIHRoZSAnXDAnIHRlcm1pbmF0b3IsIGFsbG93 aW5nIHVzIHRvIHN0b3JlIGEgNyBjaGFyYWN0ZXIKLUBAIC0xMzQsNiArMTM1LDIyIEBAIHByb3Rl Y3RlZDoKLSAgICAgICAgIGtPYmplY3QgICAgICAgICAgICAgICAgICAgICAgID0gMGIxMTEwMDAw MCwgIC8vIHB0ciB0byBleHRlcm5hbCBzdG9yYWdlCi0gICAgIH07Ci0gICAgIHN0YXRpYyBjb25z dGV4cHIgdWludDhfdCBrVGFnTWFzayA9IDBiMTExMDAwMDA7Ci0rI2Vsc2UKLSsgICAgZW51bSBj bGFzcyBUYWcgOiB1aW50OF90IHsKLSsgICAgICAgIC8vIFdlIHBpY2tlZCBrU2hvcnRTdHJpbmcg PT0gMCBzbyB0aGF0IHRhZyAweDAwIGFuZCBzdG9yZWQgbWF4X3NpemUtc2l6ZSAoNy03PTApCi0r ICAgICAgICAvLyBjb252ZW5pZW50bHkgb3ZlcmxhcCB0aGUgJ1wwJyB0ZXJtaW5hdG9yLCBhbGxv d2luZyB1cyB0byBzdG9yZSBhIDcgY2hhcmFjdGVyCi0rICAgICAgICAvLyBDIHN0cmluZyBpbmxp bmUuCi0rICAgICAgICBrU2hvcnRTdHJpbmcgICAgICAgICAgICAgICAgICA9IDBiMDAwMDAwMDAs ICAvLyBpbmxpbmUgcGF5bG9hZAotKyAgICAgICAga051bGwgICAgICAgICAgICAgICAgICAgICAg ICAgPSAwYjAwMDAwMDAxLCAgLy8gbm8gcGF5bG9hZAotKyAgICAgICAga0Jvb2wgICAgICAgICAg ICAgICAgICAgICAgICAgPSAwYjAwMDAwMDEwLCAgLy8gaW5saW5lIHBheWxvYWQKLSsgICAgICAg IGtJbnQgICAgICAgICAgICAgICAgICAgICAgICAgID0gMGIwMDAwMDAxMSwgIC8vIGlubGluZSBw YXlsb2FkCi0rICAgICAgICBrRmxvYXQgICAgICAgICAgICAgICAgICAgICAgICA9IDBiMDAwMDAx MDAsICAvLyBpbmxpbmUgcGF5bG9hZAotKyAgICAgICAga1N0cmluZyAgICAgICAgICAgICAgICAg ICAgICAgPSAwYjAwMDAwMTAxLCAgLy8gcHRyIHRvIGV4dGVybmFsIHN0b3JhZ2UKLSsgICAgICAg IGtBcnJheSAgICAgICAgICAgICAgICAgICAgICAgID0gMGIwMDAwMDExMCwgIC8vIHB0ciB0byBl eHRlcm5hbCBzdG9yYWdlCi0rICAgICAgICBrT2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICA9 IDBiMDAwMDAxMTEsICAvLyBwdHIgdG8gZXh0ZXJuYWwgc3RvcmFnZQotKyAgICB9OwotKyAgICBz dGF0aWMgY29uc3RleHByIHVpbnQ4X3Qga1RhZ01hc2sgPSAwYjAwMDAwMTExOwotKyNlbmRpZgot IAotICAgICB2b2lkIGluaXRfdGFnZ2VkKFRhZyk7Ci0gICAgIHZvaWQgaW5pdF90YWdnZWRfcG9p bnRlcihUYWcsIHZvaWQqKTsKLUBAIC0xOTIsMTQgKzIwOSwxNCBAQCBwcml2YXRlOgotIAotICAg ICB1aW50OF90IGZEYXRhOFtrVmFsdWVTaXplXTsKLSAKLS0jaWYgZGVmaW5lZChTS19DUFVfTEVO RElBTikKLSAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1RhZ09mZnNldCA9IGtWYWx1ZVNp emUgLSAxOwotIAotKyNpZiBkZWZpbmVkKFNLX0NQVV9MRU5ESUFOKQotICAgICBzdGF0aWMgY29u c3RleHByIHVpbnRwdHJfdCBrVGFnUG9pbnRlck1hc2sgPQotICAgICAgICAgICAgIH4oc3RhdGlj X2Nhc3Q8dWludHB0cl90PihrVGFnTWFzaykgPDwgKChzaXplb2YodWludHB0cl90KSAtIDEpICog OCkpOwotICNlbHNlCi0tICAgIC8vIFRoZSBjdXJyZW50IHZhbHVlIGxheW91dCBhc3N1bWVzIExF IGFuZCB3aWxsIHRha2Ugc29tZSB0d2Vha2luZyBmb3IgQkUuCi0tICAgIHN0YXRpY19hc3NlcnQo ZmFsc2UsICJCaWctZW5kaWFuIGJ1aWxkcyBhcmUgbm90IHN1cHBvcnRlZCBhdCB0aGlzIHRpbWUu Iik7Ci0rICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90IGtUYWdQb2ludGVyTWFzayA9Ci0r ICAgICAgICAgICAgfnN0YXRpY19jYXN0PHVpbnRwdHJfdD4oa1RhZ01hc2spOwotICNlbmRpZgot IH07Ci0gCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L3NraWEvdGhpcmRfcGFydHkvc2tjbXMvc2tjbXMuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS90aGlyZF9wYXJ0eS9za2Ntcy9za2Ntcy5j YwotQEAgLTY2LDEwICs2NiwxNSBAQCBzdGF0aWMgZmxvYXQgZXZhbF9jdXJ2ZShjb25zdCBza2Nt c19DdXJ2ZSogY3VydmUsIGZsb2F0IHgpIHsKLSAgICAgICAgIHVpbnQxNl90IGJlX2wsIGJlX2g7 Ci0gICAgICAgICBtZW1jcHkoJmJlX2wsIGN1cnZlLT50YWJsZV8xNiArIDIqbG8sIDIpOwotICAg ICAgICAgbWVtY3B5KCZiZV9oLCBjdXJ2ZS0+dGFibGVfMTYgKyAyKmhpLCAyKTsKLSsjaWYgX19C SUdfRU5ESUFOX18KLSsgICAgICAgIGwgPSBiZV9sICogKDEvNjU1MzUuMGYpOwotKyAgICAgICAg aCA9IGJlX2ggKiAoMS82NTUzNS4wZik7Ci0rI2Vsc2UKLSAgICAgICAgIHVpbnQxNl90IGxlX2wg PSAoKGJlX2wgPDwgOCkgfCAoYmVfbCA+PiA4KSkgJiAweGZmZmY7Ci0gICAgICAgICB1aW50MTZf dCBsZV9oID0gKChiZV9oIDw8IDgpIHwgKGJlX2ggPj4gOCkpICYgMHhmZmZmOwotICAgICAgICAg bCA9IGxlX2wgKiAoMS82NTUzNS4wZik7Ci0gICAgICAgICBoID0gbGVfaCAqICgxLzY1NTM1LjBm KTsKLSsjZW5kaWYKLSAgICAgfQotICAgICByZXR1cm4gbCArIChoLWwpKnQ7Ci0gfQotQEAgLTEy NCwyMSArMTI5LDI5IEBAIGVudW0gewotIHN0YXRpYyB1aW50MTZfdCByZWFkX2JpZ191MTYoY29u c3QgdWludDhfdCogcHRyKSB7Ci0gICAgIHVpbnQxNl90IGJlOwotICAgICBtZW1jcHkoJmJlLCBw dHIsIHNpemVvZihiZSkpOwotKyNpZiBfX0JJR19FTkRJQU5fXwotKyAgICByZXR1cm4gYmU7Ci0r I2Vsc2UKLSAjaWYgZGVmaW5lZChfTVNDX1ZFUikKLSAgICAgcmV0dXJuIF9ieXRlc3dhcF91c2hv cnQoYmUpOwotICNlbHNlCi0gICAgIHJldHVybiBfX2J1aWx0aW5fYnN3YXAxNihiZSk7Ci0gI2Vu ZGlmCi0rI2VuZGlmCi0gfQotIAotIHN0YXRpYyB1aW50MzJfdCByZWFkX2JpZ191MzIoY29uc3Qg dWludDhfdCogcHRyKSB7Ci0gICAgIHVpbnQzMl90IGJlOwotICAgICBtZW1jcHkoJmJlLCBwdHIs IHNpemVvZihiZSkpOwotKyNpZiBfX0JJR19FTkRJQU5fXwotKyAgICByZXR1cm4gYmU7Ci0rI2Vs c2UKLSAjaWYgZGVmaW5lZChfTVNDX1ZFUikKLSAgICAgcmV0dXJuIF9ieXRlc3dhcF91bG9uZyhi ZSk7Ci0gI2Vsc2UKLSAgICAgcmV0dXJuIF9fYnVpbHRpbl9ic3dhcDMyKGJlKTsKLSAjZW5kaWYK LSsjZW5kaWYKLSB9Ci0gCi0gc3RhdGljIGludDMyX3QgcmVhZF9iaWdfaTMyKGNvbnN0IHVpbnQ4 X3QqIHB0cikgewotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9za2lhL3RoaXJkX3BhcnR5L3NrY21zL3NyYy9UcmFuc2Zvcm1faW5sLmgKLSsrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS90aGlyZF9wYXJ0 eS9za2Ntcy9zcmMvVHJhbnNmb3JtX2lubC5oCi1AQCAtMzkyLDkgKzM5MiwxMSBAQCBTSSBVMzIg Z2F0aGVyXzMyKGNvbnN0IHVpbnQ4X3QqIHAsIEkzMiBpeCkgewotIH0KLSAKLSBTSSBVMzIgZ2F0 aGVyXzI0KGNvbnN0IHVpbnQ4X3QqIHAsIEkzMiBpeCkgewotKyNpZiAhX19CSUdfRU5ESUFOX18K LSAgICAgLy8gRmlyc3QsIGJhY2sgdXAgYSBieXRlLiAgQW55IHBsYWNlIHdlJ3JlIGdhdGhlcmlu ZyBmcm9tIGhhcyBhIHNhZmUganVuayBieXRlIHRvIHJlYWQKLSAgICAgLy8gaW4gZnJvbnQgb2Yg aXQsIGVpdGhlciBhIHByZXZpb3VzIHRhYmxlIHZhbHVlLCBvciBzb21lIHRhZyBtZXRhZGF0YS4K LSAgICAgcCAtPSAxOwotKyNlbmRpZgotIAotICAgICAvLyBMb2FkIHRoZSBpJ3RoIDI0LWJpdCB2 YWx1ZSBmcm9tIHAsIGFuZCAxIGV4dHJhIGJ5dGUuCi0gICAgIGF1dG8gbG9hZF8yNF8zMiA9IFtw XShpbnQgaSkgewotQEAgLTQzNSw4ICs0MzcsMTAgQEAgU0kgVTMyIGdhdGhlcl8yNChjb25zdCB1 aW50OF90KiBwLCBJMzIgaXgpIHsKLSAKLSAjaWYgIWRlZmluZWQoX19hcm1fXykKLSAgICAgU0kg dm9pZCBnYXRoZXJfNDgoY29uc3QgdWludDhfdCogcCwgSTMyIGl4LCBVNjQqIHYpIHsKLSsjaWYg IV9fQklHX0VORElBTl9fCi0gICAgICAgICAvLyBBcyBpbiBnYXRoZXJfMjQoKSwgd2l0aCBldmVy eXRoaW5nIGRvdWJsZWQuCi0gICAgICAgICBwIC09IDI7Ci0rI2VuZGlmCi0gCi0gICAgICAgICAv LyBMb2FkIHRoZSBpJ3RoIDQ4LWJpdCB2YWx1ZSBmcm9tIHAsIGFuZCAyIGV4dHJhIGJ5dGVzLgot ICAgICAgICAgYXV0byBsb2FkXzQ4XzY0ID0gW3BdKGludCBpKSB7Ci1AQCAtNDk5LDcgKzUwMyw5 IEBAIFNJIEYgRl9mcm9tX1U4KFU4IHYpIHsKLSBTSSBGIEZfZnJvbV9VMTZfQkUoVTE2IHYpIHsK LSAgICAgLy8gQWxsIDE2LWJpdCBJQ0MgdmFsdWVzIGFyZSBiaWctZW5kaWFuLCBzbyB3ZSBieXRl IHN3YXAgYmVmb3JlIGNvbnZlcnRpbmcgdG8gZmxvYXQuCi0gICAgIC8vIE1TVkMgY2F0Y2hlcyB0 aGUgImxvc3MiIG9mIGRhdGEgaGVyZSBpbiB0aGUgcG9ydGFibGUgcGF0aCwgc28gd2UgYWxzbyBt YWtlIHN1cmUgdG8gbWFzay4KLSsjaWYgIV9fQklHX0VORElBTl9fCi0gICAgIHYgPSBVMTYoIDAg fCAoKHYgJiAweDAwZmYpIDw8IDgpIHwgKCh2ICYgMHhmZjAwKSA+PiA4KSApOwotKyNlbmRpZgot ICAgICByZXR1cm4gY2FzdDxGPih2KSAqICgxLzY1NTM1LjBmKTsKLSB9Ci0gCi1AQCAtNTM0LDkg KzU0MCwxNSBAQCBTSSBGIHRhYmxlKGNvbnN0IHNrY21zX0N1cnZlKiBjdXJ2ZSwgRiB2KSB7Ci0g U0kgdm9pZCBzYW1wbGVfY2x1dF84KGNvbnN0IHNrY21zX0EyQiogYTJiLCBJMzIgaXgsIEYqIHIs IEYqIGcsIEYqIGIpIHsKLSAgICAgVTMyIHJnYiA9IGdhdGhlcl8yNChhMmItPmdyaWRfOCwgaXgp OwotIAotKyNpZiBfX0JJR19FTkRJQU5fXwotKyAgICAqciA9IGNhc3Q8Rj4oKHJnYiA+PiAxNikg JiAweGZmKSAqICgxLzI1NS4wZik7Ci0rICAgICpnID0gY2FzdDxGPigocmdiID4+ICA4KSAmIDB4 ZmYpICogKDEvMjU1LjBmKTsKLSsgICAgKmIgPSBjYXN0PEY+KChyZ2IgPj4gIDApICYgMHhmZikg KiAoMS8yNTUuMGYpOwotKyNlbHNlCi0gICAgICpyID0gY2FzdDxGPigocmdiID4+ICAwKSAmIDB4 ZmYpICogKDEvMjU1LjBmKTsKLSAgICAgKmcgPSBjYXN0PEY+KChyZ2IgPj4gIDgpICYgMHhmZikg KiAoMS8yNTUuMGYpOwotICAgICAqYiA9IGNhc3Q8Rj4oKHJnYiA+PiAxNikgJiAweGZmKSAqICgx LzI1NS4wZik7Ci0rI2VuZGlmCi0gfQotIAotIFNJIHZvaWQgc2FtcGxlX2NsdXRfMTYoY29uc3Qg c2tjbXNfQTJCKiBhMmIsIEkzMiBpeCwgRiogciwgRiogZywgRiogYikgewotQEAgLTU0OSwxMiAr NTYxLDE4IEBAIFNJIHZvaWQgc2FtcGxlX2NsdXRfMTYoY29uc3Qgc2tjbXNfQTJCKiBhMmIsIEkz MiBpeCwgRiogciwgRiogZywgRiogYikgewotICAgICAvLyBUaGlzIHN0cmF0ZWd5IGlzIG11Y2gg ZmFzdGVyIGZvciA2NC1iaXQgYnVpbGRzLCBhbmQgZmluZSBmb3IgMzItYml0IHg4NiB0b28uCi0g ICAgIFU2NCByZ2I7Ci0gICAgIGdhdGhlcl80OChhMmItPmdyaWRfMTYsIGl4LCAmcmdiKTsKLSsj aWYgX19CSUdfRU5ESUFOX18KLSsgICAgKnIgPSBjYXN0PEY+KChyZ2IgPj4gMzIpICYgMHhmZmZm KSAqICgxLzY1NTM1LjBmKTsKLSsgICAgKmcgPSBjYXN0PEY+KChyZ2IgPj4gMTYpICYgMHhmZmZm KSAqICgxLzY1NTM1LjBmKTsKLSsgICAgKmIgPSBjYXN0PEY+KChyZ2IgPj4gIDApICYgMHhmZmZm KSAqICgxLzY1NTM1LjBmKTsKLSsjZWxzZQotICAgICByZ2IgPSBzd2FwX2VuZGlhbl8xNng0KHJn Yik7Ci0gCi0gICAgICpyID0gY2FzdDxGPigocmdiID4+ICAwKSAmIDB4ZmZmZikgKiAoMS82NTUz NS4wZik7Ci0gICAgICpnID0gY2FzdDxGPigocmdiID4+IDE2KSAmIDB4ZmZmZikgKiAoMS82NTUz NS4wZik7Ci0gICAgICpiID0gY2FzdDxGPigocmdiID4+IDMyKSAmIDB4ZmZmZikgKiAoMS82NTUz NS4wZik7Ci0gI2VuZGlmCi0rI2VuZGlmCi0gfQotIAotIC8vIEdDQyA3LjIuMCBoaXRzIGFuIGlu dGVybmFsIGNvbXBpbGVyIGVycm9yIHdpdGggLWZpbmxpbmUtZnVuY3Rpb25zIChvciAtTzMpCi1A QCAtNjk1LDEwICs3MTMsMTcgQEAgc3RhdGljIHZvaWQgZXhlY19vcHMoY29uc3QgT3AqIG9wcywg Y29uc3Qgdm9pZCoqIGFyZ3MsCi0gICAgICAgICAgICAgY2FzZSBPcF9sb2FkXzg4ODg6ewotICAg ICAgICAgICAgICAgICBVMzIgcmdiYSA9IGxvYWQ8VTMyPihzcmMgKyA0KmkpOwotIAotKyNpZiBf X0JJR19FTkRJQU5fXwotKyAgICAgICAgICAgICAgICByID0gY2FzdDxGPigocmdiYSA+PiAyNCkg JiAweGZmKSAqICgxLzI1NS4wZik7Ci0rICAgICAgICAgICAgICAgIGcgPSBjYXN0PEY+KChyZ2Jh ID4+IDE2KSAmIDB4ZmYpICogKDEvMjU1LjBmKTsKLSsgICAgICAgICAgICAgICAgYiA9IGNhc3Q8 Rj4oKHJnYmEgPj4gIDgpICYgMHhmZikgKiAoMS8yNTUuMGYpOwotKyAgICAgICAgICAgICAgICBh ID0gY2FzdDxGPigocmdiYSA+PiAgMCkgJiAweGZmKSAqICgxLzI1NS4wZik7Ci0rI2Vsc2UKLSAg ICAgICAgICAgICAgICAgciA9IGNhc3Q8Rj4oKHJnYmEgPj4gIDApICYgMHhmZikgKiAoMS8yNTUu MGYpOwotICAgICAgICAgICAgICAgICBnID0gY2FzdDxGPigocmdiYSA+PiAgOCkgJiAweGZmKSAq ICgxLzI1NS4wZik7Ci0gICAgICAgICAgICAgICAgIGIgPSBjYXN0PEY+KChyZ2JhID4+IDE2KSAm IDB4ZmYpICogKDEvMjU1LjBmKTsKLSAgICAgICAgICAgICAgICAgYSA9IGNhc3Q8Rj4oKHJnYmEg Pj4gMjQpICYgMHhmZikgKiAoMS8yNTUuMGYpOwotKyNlbmRpZgotICAgICAgICAgICAgIH0gYnJl YWs7Ci0gCi0gICAgICAgICAgICAgY2FzZSBPcF9sb2FkXzg4ODhfcGFsZXR0ZTg6ewotQEAgLTcy NywxMyArNzUyLDI5IEBAIHN0YXRpYyB2b2lkIGV4ZWNfb3BzKGNvbnN0IE9wKiBvcHMsIGNvbnN0 IHZvaWQqKiBhcmdzLAotICAgICAgICAgICAgICAgICBjb25zdCB1aW50MTZfdCogcmdiID0gKGNv bnN0IHVpbnQxNl90KilwdHI7IC8vIGNhc3QgdG8gY29uc3QgdWludDE2X3QqIHRvIGJlIHNhZmUu Ci0gICAgICAgICAgICAgI2lmIGRlZmluZWQoVVNJTkdfTkVPTikKLSAgICAgICAgICAgICAgICAg dWludDE2eDR4M190IHYgPSB2bGQzX3UxNihyZ2IpOwotKyNpZiBfX0JJR19FTkRJQU5fXwotKyAg ICAgICAgICAgICAgICByID0gY2FzdDxGPihzd2FwX2VuZGlhbl8xNigoVTE2KXYudmFsWzBdKSkg KiAoMS82NTUzNS4wZik7Ci0rICAgICAgICAgICAgICAgIGcgPSBjYXN0PEY+KHN3YXBfZW5kaWFu XzE2KChVMTYpdi52YWxbMV0pKSAqICgxLzY1NTM1LjBmKTsKLSsgICAgICAgICAgICAgICAgYiA9 IGNhc3Q8Rj4oc3dhcF9lbmRpYW5fMTYoKFUxNil2LnZhbFsyXSkpICogKDEvNjU1MzUuMGYpOwot KyNlbHNlCi0gICAgICAgICAgICAgICAgIHIgPSBjYXN0PEY+KChVMTYpdi52YWxbMF0pICogKDEv NjU1MzUuMGYpOwotICAgICAgICAgICAgICAgICBnID0gY2FzdDxGPigoVTE2KXYudmFsWzFdKSAq ICgxLzY1NTM1LjBmKTsKLSAgICAgICAgICAgICAgICAgYiA9IGNhc3Q8Rj4oKFUxNil2LnZhbFsy XSkgKiAoMS82NTUzNS4wZik7Ci0rI2VuZGlmCi0gICAgICAgICAgICAgI2Vsc2UKLSsjaWYgX19C SUdfRU5ESUFOX18KLSsgICAgICAgICAgICAgICAgVTMyIFIgPSBsb2FkXzM8VTMyPihyZ2IrMCks Ci0rICAgICAgICAgICAgICAgICAgICBHID0gbG9hZF8zPFUzMj4ocmdiKzEpLAotKyAgICAgICAg ICAgICAgICAgICAgQiA9IGxvYWRfMzxVMzI+KHJnYisyKTsKLSsgICAgICAgICAgICAgICAgLy8g UixHLEIgYXJlIGxpdHRsZS1lbmRpYW4gMTYtYml0LCBzbyBieXRlIHN3YXAgdGhlbSBiZWZvcmUg Y29udmVydGluZyB0byBmbG9hdC4KLSsgICAgICAgICAgICAgICAgciA9IGNhc3Q8Rj4oKFIgJiAw eDAwZmYpPDw4IHwgKFIgJiAweGZmMDApPj44KSAqICgxLzY1NTM1LjBmKTsKLSsgICAgICAgICAg ICAgICAgZyA9IGNhc3Q8Rj4oKEcgJiAweDAwZmYpPDw4IHwgKEcgJiAweGZmMDApPj44KSAqICgx LzY1NTM1LjBmKTsKLSsgICAgICAgICAgICAgICAgYiA9IGNhc3Q8Rj4oKEIgJiAweDAwZmYpPDw4 IHwgKEIgJiAweGZmMDApPj44KSAqICgxLzY1NTM1LjBmKTsKLSsjZWxzZQotICAgICAgICAgICAg ICAgICByID0gY2FzdDxGPihsb2FkXzM8VTMyPihyZ2IrMCkpICogKDEvNjU1MzUuMGYpOwotICAg ICAgICAgICAgICAgICBnID0gY2FzdDxGPihsb2FkXzM8VTMyPihyZ2IrMSkpICogKDEvNjU1MzUu MGYpOwotICAgICAgICAgICAgICAgICBiID0gY2FzdDxGPihsb2FkXzM8VTMyPihyZ2IrMikpICog KDEvNjU1MzUuMGYpOwotKyNlbmRpZgotICAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAg IH0gYnJlYWs7Ci0gCi1AQCAtNzQzLDE3ICs3ODQsMzMgQEAgc3RhdGljIHZvaWQgZXhlY19vcHMo Y29uc3QgT3AqIG9wcywgY29uc3Qgdm9pZCoqIGFyZ3MsCi0gICAgICAgICAgICAgICAgIGNvbnN0 IHVpbnQxNl90KiByZ2JhID0gKGNvbnN0IHVpbnQxNl90KilwdHI7IC8vIGNhc3QgdG8gY29uc3Qg dWludDE2X3QqIHRvIGJlIHNhZmUuCi0gICAgICAgICAgICAgI2lmIGRlZmluZWQoVVNJTkdfTkVP TikKLSAgICAgICAgICAgICAgICAgdWludDE2eDR4NF90IHYgPSB2bGQ0X3UxNihyZ2JhKTsKLSsj aWYgX19CSUdfRU5ESUFOX18KLSsgICAgICAgICAgICAgICAgciA9IGNhc3Q8Rj4oc3dhcF9lbmRp YW5fMTYoKFUxNil2LnZhbFswXSkpICogKDEvNjU1MzUuMGYpOwotKyAgICAgICAgICAgICAgICBn ID0gY2FzdDxGPihzd2FwX2VuZGlhbl8xNigoVTE2KXYudmFsWzFdKSkgKiAoMS82NTUzNS4wZik7 Ci0rICAgICAgICAgICAgICAgIGIgPSBjYXN0PEY+KHN3YXBfZW5kaWFuXzE2KChVMTYpdi52YWxb Ml0pKSAqICgxLzY1NTM1LjBmKTsKLSsgICAgICAgICAgICAgICAgYSA9IGNhc3Q8Rj4oc3dhcF9l bmRpYW5fMTYoKFUxNil2LnZhbFszXSkpICogKDEvNjU1MzUuMGYpOwotKyNlbHNlCi0gICAgICAg ICAgICAgICAgIHIgPSBjYXN0PEY+KChVMTYpdi52YWxbMF0pICogKDEvNjU1MzUuMGYpOwotICAg ICAgICAgICAgICAgICBnID0gY2FzdDxGPigoVTE2KXYudmFsWzFdKSAqICgxLzY1NTM1LjBmKTsK LSAgICAgICAgICAgICAgICAgYiA9IGNhc3Q8Rj4oKFUxNil2LnZhbFsyXSkgKiAoMS82NTUzNS4w Zik7Ci0gICAgICAgICAgICAgICAgIGEgPSBjYXN0PEY+KChVMTYpdi52YWxbM10pICogKDEvNjU1 MzUuMGYpOwotKyNlbmRpZgotICAgICAgICAgICAgICNlbHNlCi0rI2lmIF9fQklHX0VORElBTl9f Ci0rICAgICAgICAgICAgICAgIFU2NCBweCA9IHN3YXBfZW5kaWFuXzE2eDQobG9hZDxVNjQ+KHJn YmEpKTsKLSsKLSsgICAgICAgICAgICAgICAgciA9IGNhc3Q8Rj4oKHB4ID4+IDQ4KSAmIDB4ZmZm ZikgKiAoMS82NTUzNS4wZik7Ci0rICAgICAgICAgICAgICAgIGcgPSBjYXN0PEY+KChweCA+PiAz MikgJiAweGZmZmYpICogKDEvNjU1MzUuMGYpOwotKyAgICAgICAgICAgICAgICBiID0gY2FzdDxG PigocHggPj4gMTYpICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKLSsgICAgICAgICAgICAgICAg YSA9IGNhc3Q8Rj4oKHB4ID4+ICAwKSAmIDB4ZmZmZikgKiAoMS82NTUzNS4wZik7Ci0rI2Vsc2UK LSAgICAgICAgICAgICAgICAgVTY0IHB4ID0gbG9hZDxVNjQ+KHJnYmEpOwotIAotICAgICAgICAg ICAgICAgICByID0gY2FzdDxGPigocHggPj4gIDApICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsK LSAgICAgICAgICAgICAgICAgZyA9IGNhc3Q8Rj4oKHB4ID4+IDE2KSAmIDB4ZmZmZikgKiAoMS82 NTUzNS4wZik7Ci0gICAgICAgICAgICAgICAgIGIgPSBjYXN0PEY+KChweCA+PiAzMikgJiAweGZm ZmYpICogKDEvNjU1MzUuMGYpOwotICAgICAgICAgICAgICAgICBhID0gY2FzdDxGPigocHggPj4g NDgpICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKLSsjZW5kaWYKLSAgICAgICAgICAgICAjZW5k aWYKLSAgICAgICAgICAgICB9IGJyZWFrOwotIAotQEAgLTc2MywxMCArODIwLDIxIEBAIHN0YXRp YyB2b2lkIGV4ZWNfb3BzKGNvbnN0IE9wKiBvcHMsIGNvbnN0IHZvaWQqKiBhcmdzLAotICAgICAg ICAgICAgICAgICBjb25zdCB1aW50MTZfdCogcmdiID0gKGNvbnN0IHVpbnQxNl90KilwdHI7IC8v IGNhc3QgdG8gY29uc3QgdWludDE2X3QqIHRvIGJlIHNhZmUuCi0gICAgICAgICAgICAgI2lmIGRl ZmluZWQoVVNJTkdfTkVPTikKLSAgICAgICAgICAgICAgICAgdWludDE2eDR4M190IHYgPSB2bGQz X3UxNihyZ2IpOwotKyNpZiBfX0JJR19FTkRJQU5fXwotKyAgICAgICAgICAgICAgICByID0gY2Fz dDxGPigoVTE2KXYudmFsWzBdKSAqICgxLzY1NTM1LjBmKTsKLSsgICAgICAgICAgICAgICAgZyA9 IGNhc3Q8Rj4oKFUxNil2LnZhbFsxXSkgKiAoMS82NTUzNS4wZik7Ci0rICAgICAgICAgICAgICAg IGIgPSBjYXN0PEY+KChVMTYpdi52YWxbMl0pICogKDEvNjU1MzUuMGYpOwotKyNlbHNlCi0gICAg ICAgICAgICAgICAgIHIgPSBjYXN0PEY+KHN3YXBfZW5kaWFuXzE2KChVMTYpdi52YWxbMF0pKSAq ICgxLzY1NTM1LjBmKTsKLSAgICAgICAgICAgICAgICAgZyA9IGNhc3Q8Rj4oc3dhcF9lbmRpYW5f MTYoKFUxNil2LnZhbFsxXSkpICogKDEvNjU1MzUuMGYpOwotICAgICAgICAgICAgICAgICBiID0g Y2FzdDxGPihzd2FwX2VuZGlhbl8xNigoVTE2KXYudmFsWzJdKSkgKiAoMS82NTUzNS4wZik7Ci0r I2VuZGlmCi0gICAgICAgICAgICAgI2Vsc2UKLSsjaWYgX19CSUdfRU5ESUFOX18KLSsgICAgICAg ICAgICAgICAgciA9IGNhc3Q8Rj4obG9hZF8zPFUzMj4ocmdiKzApKSAqICgxLzY1NTM1LjBmKTsK LSsgICAgICAgICAgICAgICAgZyA9IGNhc3Q8Rj4obG9hZF8zPFUzMj4ocmdiKzEpKSAqICgxLzY1 NTM1LjBmKTsKLSsgICAgICAgICAgICAgICAgYiA9IGNhc3Q8Rj4obG9hZF8zPFUzMj4ocmdiKzIp KSAqICgxLzY1NTM1LjBmKTsKLSsjZWxzZQotICAgICAgICAgICAgICAgICBVMzIgUiA9IGxvYWRf MzxVMzI+KHJnYiswKSwKLSAgICAgICAgICAgICAgICAgICAgIEcgPSBsb2FkXzM8VTMyPihyZ2Ir MSksCi0gICAgICAgICAgICAgICAgICAgICBCID0gbG9hZF8zPFUzMj4ocmdiKzIpOwotQEAgLTc3 NCw2ICs4NDIsNyBAQCBzdGF0aWMgdm9pZCBleGVjX29wcyhjb25zdCBPcCogb3BzLCBjb25zdCB2 b2lkKiogYXJncywKLSAgICAgICAgICAgICAgICAgciA9IGNhc3Q8Rj4oKFIgJiAweDAwZmYpPDw4 IHwgKFIgJiAweGZmMDApPj44KSAqICgxLzY1NTM1LjBmKTsKLSAgICAgICAgICAgICAgICAgZyA9 IGNhc3Q8Rj4oKEcgJiAweDAwZmYpPDw4IHwgKEcgJiAweGZmMDApPj44KSAqICgxLzY1NTM1LjBm KTsKLSAgICAgICAgICAgICAgICAgYiA9IGNhc3Q8Rj4oKEIgJiAweDAwZmYpPDw4IHwgKEIgJiAw eGZmMDApPj44KSAqICgxLzY1NTM1LjBmKTsKLSsjZW5kaWYKLSAgICAgICAgICAgICAjZW5kaWYK LSAgICAgICAgICAgICB9IGJyZWFrOwotIAotQEAgLTc4MywxNyArODUyLDMzIEBAIHN0YXRpYyB2 b2lkIGV4ZWNfb3BzKGNvbnN0IE9wKiBvcHMsIGNvbnN0IHZvaWQqKiBhcmdzLAotICAgICAgICAg ICAgICAgICBjb25zdCB1aW50MTZfdCogcmdiYSA9IChjb25zdCB1aW50MTZfdCopcHRyOyAvLyBj YXN0IHRvIGNvbnN0IHVpbnQxNl90KiB0byBiZSBzYWZlLgotICAgICAgICAgICAgICNpZiBkZWZp bmVkKFVTSU5HX05FT04pCi0gICAgICAgICAgICAgICAgIHVpbnQxNng0eDRfdCB2ID0gdmxkNF91 MTYocmdiYSk7Ci0rI2lmIF9fQklHX0VORElBTl9fCi0rICAgICAgICAgICAgICAgIHIgPSBjYXN0 PEY+KChVMTYpdi52YWxbMF0pICogKDEvNjU1MzUuMGYpOwotKyAgICAgICAgICAgICAgICBnID0g Y2FzdDxGPigoVTE2KXYudmFsWzFdKSAqICgxLzY1NTM1LjBmKTsKLSsgICAgICAgICAgICAgICAg YiA9IGNhc3Q8Rj4oKFUxNil2LnZhbFsyXSkgKiAoMS82NTUzNS4wZik7Ci0rICAgICAgICAgICAg ICAgIGEgPSBjYXN0PEY+KChVMTYpdi52YWxbM10pICogKDEvNjU1MzUuMGYpOwotKyNlbHNlCi0g ICAgICAgICAgICAgICAgIHIgPSBjYXN0PEY+KHN3YXBfZW5kaWFuXzE2KChVMTYpdi52YWxbMF0p KSAqICgxLzY1NTM1LjBmKTsKLSAgICAgICAgICAgICAgICAgZyA9IGNhc3Q8Rj4oc3dhcF9lbmRp YW5fMTYoKFUxNil2LnZhbFsxXSkpICogKDEvNjU1MzUuMGYpOwotICAgICAgICAgICAgICAgICBi ID0gY2FzdDxGPihzd2FwX2VuZGlhbl8xNigoVTE2KXYudmFsWzJdKSkgKiAoMS82NTUzNS4wZik7 Ci0gICAgICAgICAgICAgICAgIGEgPSBjYXN0PEY+KHN3YXBfZW5kaWFuXzE2KChVMTYpdi52YWxb M10pKSAqICgxLzY1NTM1LjBmKTsKLSsjZW5kaWYKLSAgICAgICAgICAgICAjZWxzZQotKyNpZiBf X0JJR19FTkRJQU5fXwotKyAgICAgICAgICAgICAgICBVNjQgcHggPSBsb2FkPFU2ND4ocmdiYSk7 Ci0rCi0rICAgICAgICAgICAgICAgIHIgPSBjYXN0PEY+KChweCA+PiA0OCkgJiAweGZmZmYpICog KDEvNjU1MzUuMGYpOwotKyAgICAgICAgICAgICAgICBnID0gY2FzdDxGPigocHggPj4gMzIpICYg MHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKLSsgICAgICAgICAgICAgICAgYiA9IGNhc3Q8Rj4oKHB4 ID4+IDE2KSAmIDB4ZmZmZikgKiAoMS82NTUzNS4wZik7Ci0rICAgICAgICAgICAgICAgIGEgPSBj YXN0PEY+KChweCA+PiAgMCkgJiAweGZmZmYpICogKDEvNjU1MzUuMGYpOwotKyNlbHNlCi0gICAg ICAgICAgICAgICAgIFU2NCBweCA9IHN3YXBfZW5kaWFuXzE2eDQobG9hZDxVNjQ+KHJnYmEpKTsK LSAKLSAgICAgICAgICAgICAgICAgciA9IGNhc3Q8Rj4oKHB4ID4+ICAwKSAmIDB4ZmZmZikgKiAo MS82NTUzNS4wZik7Ci0gICAgICAgICAgICAgICAgIGcgPSBjYXN0PEY+KChweCA+PiAxNikgJiAw eGZmZmYpICogKDEvNjU1MzUuMGYpOwotICAgICAgICAgICAgICAgICBiID0gY2FzdDxGPigocHgg Pj4gMzIpICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKLSAgICAgICAgICAgICAgICAgYSA9IGNh c3Q8Rj4oKHB4ID4+IDQ4KSAmIDB4ZmZmZikgKiAoMS82NTUzNS4wZik7Ci0rI2VuZGlmCi0gICAg ICAgICAgICAgI2VuZGlmCi0gICAgICAgICAgICAgfSBicmVhazsKLSAKLUBAIC04MjgsMTAgKzkx MywxNyBAQCBzdGF0aWMgdm9pZCBleGVjX29wcyhjb25zdCBPcCogb3BzLCBjb25zdCB2b2lkKiog YXJncywKLSAgICAgICAgICAgICAgICAgICAgIEEgPSAoVTE2KXYudmFsWzNdOwotICAgICAgICAg ICAgICNlbHNlCi0gICAgICAgICAgICAgICAgIFU2NCBweCA9IGxvYWQ8VTY0PihyZ2JhKTsKLSsj aWYgX19CSUdfRU5ESUFOX18KLSsgICAgICAgICAgICAgICAgVTE2IFIgPSBjYXN0PFUxNj4oKHB4 ID4+IDQ4KSAmIDB4ZmZmZiksCi0rICAgICAgICAgICAgICAgICAgICBHID0gY2FzdDxVMTY+KChw eCA+PiAzMikgJiAweGZmZmYpLAotKyAgICAgICAgICAgICAgICAgICAgQiA9IGNhc3Q8VTE2Pigo cHggPj4gMTYpICYgMHhmZmZmKSwKLSsgICAgICAgICAgICAgICAgICAgIEEgPSBjYXN0PFUxNj4o KHB4ID4+ICAwKSAmIDB4ZmZmZik7Ci0rI2Vsc2UKLSAgICAgICAgICAgICAgICAgVTE2IFIgPSBj YXN0PFUxNj4oKHB4ID4+ICAwKSAmIDB4ZmZmZiksCi0gICAgICAgICAgICAgICAgICAgICBHID0g Y2FzdDxVMTY+KChweCA+PiAxNikgJiAweGZmZmYpLAotICAgICAgICAgICAgICAgICAgICAgQiA9 IGNhc3Q8VTE2PigocHggPj4gMzIpICYgMHhmZmZmKSwKLSAgICAgICAgICAgICAgICAgICAgIEEg PSBjYXN0PFUxNj4oKHB4ID4+IDQ4KSAmIDB4ZmZmZik7Ci0rI2VuZGlmCi0gICAgICAgICAgICAg I2VuZGlmCi0gICAgICAgICAgICAgICAgIHIgPSBGX2Zyb21fSGFsZihSKTsKLSAgICAgICAgICAg ICAgICAgZyA9IEZfZnJvbV9IYWxmKEcpOwotQEAgLTEwMjQsMTAgKzExMTYsMTcgQEAgc3RhdGlj IHZvaWQgZXhlY19vcHMoY29uc3QgT3AqIG9wcywgY29uc3Qgdm9pZCoqIGFyZ3MsCi0gICAgICAg ICAgICAgfSByZXR1cm47Ci0gCi0gICAgICAgICAgICAgY2FzZSBPcF9zdG9yZV84ODg4OiB7Ci0r I2lmIF9fQklHX0VORElBTl9fCi0rICAgICAgICAgICAgICAgIHN0b3JlKGRzdCArIDQqaSwgY2Fz dDxVMzI+KHRvX2ZpeGVkKHIgKiAyNTUpIDw8IDI0KQotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IGNhc3Q8VTMyPih0b19maXhlZChnICogMjU1KSA8PCAxNikKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCBjYXN0PFUzMj4odG9fZml4ZWQoYiAqIDI1NSkgPDwgIDgp Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FzdDxVMzI+KHRvX2ZpeGVkKGEg KiAyNTUpIDw8ICAwKSk7Ci0rI2Vsc2UKLSAgICAgICAgICAgICAgICAgc3RvcmUoZHN0ICsgNCpp LCBjYXN0PFUzMj4odG9fZml4ZWQociAqIDI1NSkgPDwgIDApCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgY2FzdDxVMzI+KHRvX2ZpeGVkKGcgKiAyNTUpIDw8ICA4KQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhc3Q8VTMyPih0b19maXhlZChiICogMjU1KSA8 PCAxNikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYXN0PFUzMj4odG9fZml4 ZWQoYSAqIDI1NSkgPDwgMjQpKTsKLSsjZW5kaWYKLSAgICAgICAgICAgICB9IHJldHVybjsKLSAK LSAgICAgICAgICAgICBjYXNlIE9wX3N0b3JlXzEwMTAxMDI6IHsKLUBAIC0xMDQzLDE1ICsxMTQy LDMwIEBAIHN0YXRpYyB2b2lkIGV4ZWNfb3BzKGNvbnN0IE9wKiBvcHMsIGNvbnN0IHZvaWQqKiBh cmdzLAotICAgICAgICAgICAgICAgICB1aW50MTZfdCogcmdiID0gKHVpbnQxNl90KilwdHI7ICAg ICAgICAgIC8vIGZvciB0aGlzIGNhc3QgdG8gdWludDE2X3QqIHRvIGJlIHNhZmUuCi0gICAgICAg ICAgICAgI2lmIGRlZmluZWQoVVNJTkdfTkVPTikKLSAgICAgICAgICAgICAgICAgdWludDE2eDR4 M190IHYgPSB7ewotKyNpZiBfX0JJR19FTkRJQU5fXwotKyAgICAgICAgICAgICAgICAgICAgKHVp bnQxNng0X3Qpc3dhcF9lbmRpYW5fMTYoY2FzdDxVMTY+KHRvX2ZpeGVkKHIgKiA2NTUzNSkpKSwK LSsgICAgICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KXN3YXBfZW5kaWFuXzE2KGNhc3Q8VTE2 Pih0b19maXhlZChnICogNjU1MzUpKSksCi0rICAgICAgICAgICAgICAgICAgICAodWludDE2eDRf dClzd2FwX2VuZGlhbl8xNihjYXN0PFUxNj4odG9fZml4ZWQoYiAqIDY1NTM1KSkpLAotKyNlbHNl Ci0gICAgICAgICAgICAgICAgICAgICAodWludDE2eDRfdCljYXN0PFUxNj4odG9fZml4ZWQociAq IDY1NTM1KSksCi0gICAgICAgICAgICAgICAgICAgICAodWludDE2eDRfdCljYXN0PFUxNj4odG9f Zml4ZWQoZyAqIDY1NTM1KSksCi0gICAgICAgICAgICAgICAgICAgICAodWludDE2eDRfdCljYXN0 PFUxNj4odG9fZml4ZWQoYiAqIDY1NTM1KSksCi0rI2VuZGlmCi0gICAgICAgICAgICAgICAgIH19 OwotICAgICAgICAgICAgICAgICB2c3QzX3UxNihyZ2IsIHYpOwotICAgICAgICAgICAgICNlbHNl Ci0rI2lmIF9fQklHX0VORElBTl9fCi0rICAgICAgICAgICAgICAgIEkzMiBSID0gdG9fZml4ZWQo ciAqIDY1NTM1KSwKLSsgICAgICAgICAgICAgICAgICAgIEcgPSB0b19maXhlZChnICogNjU1MzUp LAotKyAgICAgICAgICAgICAgICAgICAgQiA9IHRvX2ZpeGVkKGIgKiA2NTUzNSk7Ci0rICAgICAg ICAgICAgICAgIHN0b3JlXzMocmdiKzAsIGNhc3Q8VTE2PigoUiAmIDB4MDBmZikgPDwgOCB8IChS ICYgMHhmZjAwKSA+PiA4KSApOwotKyAgICAgICAgICAgICAgICBzdG9yZV8zKHJnYisxLCBjYXN0 PFUxNj4oKEcgJiAweDAwZmYpIDw8IDggfCAoRyAmIDB4ZmYwMCkgPj4gOCkgKTsKLSsgICAgICAg ICAgICAgICAgc3RvcmVfMyhyZ2IrMiwgY2FzdDxVMTY+KChCICYgMHgwMGZmKSA8PCA4IHwgKEIg JiAweGZmMDApID4+IDgpICk7Ci0rI2Vsc2UKLSAgICAgICAgICAgICAgICAgc3RvcmVfMyhyZ2Ir MCwgY2FzdDxVMTY+KHRvX2ZpeGVkKHIgKiA2NTUzNSkpKTsKLSAgICAgICAgICAgICAgICAgc3Rv cmVfMyhyZ2IrMSwgY2FzdDxVMTY+KHRvX2ZpeGVkKGcgKiA2NTUzNSkpKTsKLSAgICAgICAgICAg ICAgICAgc3RvcmVfMyhyZ2IrMiwgY2FzdDxVMTY+KHRvX2ZpeGVkKGIgKiA2NTUzNSkpKTsKLSsj ZW5kaWYKLSAgICAgICAgICAgICAjZW5kaWYKLSAKLSAgICAgICAgICAgICB9IHJldHVybjsKLUBA IC0xMDYyLDE4ICsxMTc2LDMzIEBAIHN0YXRpYyB2b2lkIGV4ZWNfb3BzKGNvbnN0IE9wKiBvcHMs IGNvbnN0IHZvaWQqKiBhcmdzLAotICAgICAgICAgICAgICAgICB1aW50MTZfdCogcmdiYSA9ICh1 aW50MTZfdCopcHRyOyAgICAgICAgLy8gZm9yIHRoaXMgY2FzdCB0byB1aW50MTZfdCogdG8gYmUg c2FmZS4KLSAgICAgICAgICAgICAjaWYgZGVmaW5lZChVU0lOR19ORU9OKQotICAgICAgICAgICAg ICAgICB1aW50MTZ4NHg0X3QgdiA9IHt7Ci0rI2lmIF9fQklHX0VORElBTl9fCi0rICAgICAgICAg ICAgICAgICAgICAodWludDE2eDRfdClzd2FwX2VuZGlhbl8xNihjYXN0PFUxNj4odG9fZml4ZWQo ciAqIDY1NTM1KSkpLAotKyAgICAgICAgICAgICAgICAgICAgKHVpbnQxNng0X3Qpc3dhcF9lbmRp YW5fMTYoY2FzdDxVMTY+KHRvX2ZpeGVkKGcgKiA2NTUzNSkpKSwKLSsgICAgICAgICAgICAgICAg ICAgICh1aW50MTZ4NF90KXN3YXBfZW5kaWFuXzE2KGNhc3Q8VTE2Pih0b19maXhlZChiICogNjU1 MzUpKSksCi0rICAgICAgICAgICAgICAgICAgICAodWludDE2eDRfdClzd2FwX2VuZGlhbl8xNihj YXN0PFUxNj4odG9fZml4ZWQoYSAqIDY1NTM1KSkpLAotKyNlbHNlCi0gICAgICAgICAgICAgICAg ICAgICAodWludDE2eDRfdCljYXN0PFUxNj4odG9fZml4ZWQociAqIDY1NTM1KSksCi0gICAgICAg ICAgICAgICAgICAgICAodWludDE2eDRfdCljYXN0PFUxNj4odG9fZml4ZWQoZyAqIDY1NTM1KSks Ci0gICAgICAgICAgICAgICAgICAgICAodWludDE2eDRfdCljYXN0PFUxNj4odG9fZml4ZWQoYiAq IDY1NTM1KSksCi0gICAgICAgICAgICAgICAgICAgICAodWludDE2eDRfdCljYXN0PFUxNj4odG9f Zml4ZWQoYSAqIDY1NTM1KSksCi0rI2VuZGlmCi0gICAgICAgICAgICAgICAgIH19OwotICAgICAg ICAgICAgICAgICB2c3Q0X3UxNihyZ2JhLCB2KTsKLSAgICAgICAgICAgICAjZWxzZQotKyNpZiBf X0JJR19FTkRJQU5fXwotKyAgICAgICAgICAgICAgICBVNjQgcHggPSBjYXN0PFU2ND4odG9fZml4 ZWQociAqIDY1NTM1KSkgPDwgNDgKLSsgICAgICAgICAgICAgICAgICAgICAgIHwgY2FzdDxVNjQ+ KHRvX2ZpeGVkKGcgKiA2NTUzNSkpIDw8IDMyCi0rICAgICAgICAgICAgICAgICAgICAgICB8IGNh c3Q8VTY0Pih0b19maXhlZChiICogNjU1MzUpKSA8PCAxNgotKyAgICAgICAgICAgICAgICAgICAg ICAgfCBjYXN0PFU2ND4odG9fZml4ZWQoYSAqIDY1NTM1KSkgPDwgIDA7Ci0rICAgICAgICAgICAg ICAgIHN0b3JlKHJnYmEsIHN3YXBfZW5kaWFuXzE2eDQocHgpKTsKLSsjZWxzZQotICAgICAgICAg ICAgICAgICBVNjQgcHggPSBjYXN0PFU2ND4odG9fZml4ZWQociAqIDY1NTM1KSkgPDwgIDAKLSAg ICAgICAgICAgICAgICAgICAgICAgIHwgY2FzdDxVNjQ+KHRvX2ZpeGVkKGcgKiA2NTUzNSkpIDw8 IDE2Ci0gICAgICAgICAgICAgICAgICAgICAgICB8IGNhc3Q8VTY0Pih0b19maXhlZChiICogNjU1 MzUpKSA8PCAzMgotICAgICAgICAgICAgICAgICAgICAgICAgfCBjYXN0PFU2ND4odG9fZml4ZWQo YSAqIDY1NTM1KSkgPDwgNDg7Ci0gICAgICAgICAgICAgICAgIHN0b3JlKHJnYmEsIHB4KTsKLSsj ZW5kaWYKLSAgICAgICAgICAgICAjZW5kaWYKLSAgICAgICAgICAgICB9IHJldHVybjsKLSAKLUBA IC0xMDgzLDE4ICsxMjEyLDMwIEBAIHN0YXRpYyB2b2lkIGV4ZWNfb3BzKGNvbnN0IE9wKiBvcHMs IGNvbnN0IHZvaWQqKiBhcmdzLAotICAgICAgICAgICAgICAgICB1aW50MTZfdCogcmdiID0gKHVp bnQxNl90KilwdHI7ICAgICAgICAgIC8vIGZvciB0aGlzIGNhc3QgdG8gdWludDE2X3QqIHRvIGJl IHNhZmUuCi0gICAgICAgICAgICAgI2lmIGRlZmluZWQoVVNJTkdfTkVPTikKLSAgICAgICAgICAg ICAgICAgdWludDE2eDR4M190IHYgPSB7ewotKyNpZiBfX0JJR19FTkRJQU5fXwotKyAgICAgICAg ICAgICAgICAgICAgKHVpbnQxNng0X3QpY2FzdDxVMTY+KHRvX2ZpeGVkKHIgKiA2NTUzNSkpLAot KyAgICAgICAgICAgICAgICAgICAgKHVpbnQxNng0X3QpY2FzdDxVMTY+KHRvX2ZpeGVkKGcgKiA2 NTUzNSkpLAotKyAgICAgICAgICAgICAgICAgICAgKHVpbnQxNng0X3QpY2FzdDxVMTY+KHRvX2Zp eGVkKGIgKiA2NTUzNSkpLAotKyNlbHNlCi0gICAgICAgICAgICAgICAgICAgICAodWludDE2eDRf dClzd2FwX2VuZGlhbl8xNihjYXN0PFUxNj4odG9fZml4ZWQociAqIDY1NTM1KSkpLAotICAgICAg ICAgICAgICAgICAgICAgKHVpbnQxNng0X3Qpc3dhcF9lbmRpYW5fMTYoY2FzdDxVMTY+KHRvX2Zp eGVkKGcgKiA2NTUzNSkpKSwKLSAgICAgICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KXN3YXBf ZW5kaWFuXzE2KGNhc3Q8VTE2Pih0b19maXhlZChiICogNjU1MzUpKSksCi0rI2VuZGlmCi0gICAg ICAgICAgICAgICAgIH19OwotICAgICAgICAgICAgICAgICB2c3QzX3UxNihyZ2IsIHYpOwotICAg ICAgICAgICAgICNlbHNlCi0rI2lmIF9fQklHX0VORElBTl9fCi0rICAgICAgICAgICAgICAgIHN0 b3JlXzMocmdiKzAsIGNhc3Q8VTE2Pih0b19maXhlZChyICogNjU1MzUpKSk7Ci0rICAgICAgICAg ICAgICAgIHN0b3JlXzMocmdiKzEsIGNhc3Q8VTE2Pih0b19maXhlZChnICogNjU1MzUpKSk7Ci0r ICAgICAgICAgICAgICAgIHN0b3JlXzMocmdiKzIsIGNhc3Q8VTE2Pih0b19maXhlZChiICogNjU1 MzUpKSk7Ci0rI2Vsc2UKLSAgICAgICAgICAgICAgICAgSTMyIFIgPSB0b19maXhlZChyICogNjU1 MzUpLAotICAgICAgICAgICAgICAgICAgICAgRyA9IHRvX2ZpeGVkKGcgKiA2NTUzNSksCi0gICAg ICAgICAgICAgICAgICAgICBCID0gdG9fZml4ZWQoYiAqIDY1NTM1KTsKLSAgICAgICAgICAgICAg ICAgc3RvcmVfMyhyZ2IrMCwgY2FzdDxVMTY+KChSICYgMHgwMGZmKSA8PCA4IHwgKFIgJiAweGZm MDApID4+IDgpICk7Ci0gICAgICAgICAgICAgICAgIHN0b3JlXzMocmdiKzEsIGNhc3Q8VTE2Pigo RyAmIDB4MDBmZikgPDwgOCB8IChHICYgMHhmZjAwKSA+PiA4KSApOwotICAgICAgICAgICAgICAg ICBzdG9yZV8zKHJnYisyLCBjYXN0PFUxNj4oKEIgJiAweDAwZmYpIDw8IDggfCAoQiAmIDB4ZmYw MCkgPj4gOCkgKTsKLSsjZW5kaWYKLSAgICAgICAgICAgICAjZW5kaWYKLSAKLSAgICAgICAgICAg ICB9IHJldHVybjsKLUBAIC0xMTA1LDE4ICsxMjQ2LDMzIEBAIHN0YXRpYyB2b2lkIGV4ZWNfb3Bz KGNvbnN0IE9wKiBvcHMsIGNvbnN0IHZvaWQqKiBhcmdzLAotICAgICAgICAgICAgICAgICB1aW50 MTZfdCogcmdiYSA9ICh1aW50MTZfdCopcHRyOyAgICAgICAgLy8gZm9yIHRoaXMgY2FzdCB0byB1 aW50MTZfdCogdG8gYmUgc2FmZS4KLSAgICAgICAgICAgICAjaWYgZGVmaW5lZChVU0lOR19ORU9O KQotICAgICAgICAgICAgICAgICB1aW50MTZ4NHg0X3QgdiA9IHt7Ci0rI2lmIF9fQklHX0VORElB Tl9fCi0rICAgICAgICAgICAgICAgICAgICAodWludDE2eDRfdCljYXN0PFUxNj4odG9fZml4ZWQo ciAqIDY1NTM1KSksCi0rICAgICAgICAgICAgICAgICAgICAodWludDE2eDRfdCljYXN0PFUxNj4o dG9fZml4ZWQoZyAqIDY1NTM1KSksCi0rICAgICAgICAgICAgICAgICAgICAodWludDE2eDRfdClj YXN0PFUxNj4odG9fZml4ZWQoYiAqIDY1NTM1KSksCi0rICAgICAgICAgICAgICAgICAgICAodWlu dDE2eDRfdCljYXN0PFUxNj4odG9fZml4ZWQoYSAqIDY1NTM1KSksCi0rI2Vsc2UKLSAgICAgICAg ICAgICAgICAgICAgICh1aW50MTZ4NF90KXN3YXBfZW5kaWFuXzE2KGNhc3Q8VTE2Pih0b19maXhl ZChyICogNjU1MzUpKSksCi0gICAgICAgICAgICAgICAgICAgICAodWludDE2eDRfdClzd2FwX2Vu ZGlhbl8xNihjYXN0PFUxNj4odG9fZml4ZWQoZyAqIDY1NTM1KSkpLAotICAgICAgICAgICAgICAg ICAgICAgKHVpbnQxNng0X3Qpc3dhcF9lbmRpYW5fMTYoY2FzdDxVMTY+KHRvX2ZpeGVkKGIgKiA2 NTUzNSkpKSwKLSAgICAgICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KXN3YXBfZW5kaWFuXzE2 KGNhc3Q8VTE2Pih0b19maXhlZChhICogNjU1MzUpKSksCi0rI2VuZGlmCi0gICAgICAgICAgICAg ICAgIH19OwotICAgICAgICAgICAgICAgICB2c3Q0X3UxNihyZ2JhLCB2KTsKLSAgICAgICAgICAg ICAjZWxzZQotKyNpZiBfX0JJR19FTkRJQU5fXwotKyAgICAgICAgICAgICAgICBVNjQgcHggPSBj YXN0PFU2ND4odG9fZml4ZWQociAqIDY1NTM1KSkgPDwgNDgKLSsgICAgICAgICAgICAgICAgICAg ICAgIHwgY2FzdDxVNjQ+KHRvX2ZpeGVkKGcgKiA2NTUzNSkpIDw8IDMyCi0rICAgICAgICAgICAg ICAgICAgICAgICB8IGNhc3Q8VTY0Pih0b19maXhlZChiICogNjU1MzUpKSA8PCAxNgotKyAgICAg ICAgICAgICAgICAgICAgICAgfCBjYXN0PFU2ND4odG9fZml4ZWQoYSAqIDY1NTM1KSkgPDwgIDA7 Ci0rICAgICAgICAgICAgICAgIHN0b3JlKHJnYmEsIHB4KTsKLSsjZWxzZQotICAgICAgICAgICAg ICAgICBVNjQgcHggPSBjYXN0PFU2ND4odG9fZml4ZWQociAqIDY1NTM1KSkgPDwgIDAKLSAgICAg ICAgICAgICAgICAgICAgICAgIHwgY2FzdDxVNjQ+KHRvX2ZpeGVkKGcgKiA2NTUzNSkpIDw8IDE2 Ci0gICAgICAgICAgICAgICAgICAgICAgICB8IGNhc3Q8VTY0Pih0b19maXhlZChiICogNjU1MzUp KSA8PCAzMgotICAgICAgICAgICAgICAgICAgICAgICAgfCBjYXN0PFU2ND4odG9fZml4ZWQoYSAq IDY1NTM1KSkgPDwgNDg7Ci0gICAgICAgICAgICAgICAgIHN0b3JlKHJnYmEsIHN3YXBfZW5kaWFu XzE2eDQocHgpKTsKLSsjZW5kaWYKLSAgICAgICAgICAgICAjZW5kaWYKLSAgICAgICAgICAgICB9 IHJldHVybjsKLSAKLUBAIC0xMTYwLDEwICsxMzE2LDE3IEBAIHN0YXRpYyB2b2lkIGV4ZWNfb3Bz KGNvbnN0IE9wKiBvcHMsIGNvbnN0IHZvaWQqKiBhcmdzLAotICAgICAgICAgICAgICAgICB9fTsK LSAgICAgICAgICAgICAgICAgdnN0NF91MTYocmdiYSwgdik7Ci0gICAgICAgICAgICAgI2Vsc2UK LSsjaWYgX19CSUdfRU5ESUFOX18KLSsgICAgICAgICAgICAgICAgc3RvcmUocmdiYSwgY2FzdDxV NjQ+KFIpIDw8IDQ4Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhc3Q8VTY0PihHKSA8 PCAzMgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYXN0PFU2ND4oQikgPDwgMTYKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FzdDxVNjQ+KEEpIDw8ICAwKTsKLSsjZWxzZQot ICAgICAgICAgICAgICAgICBzdG9yZShyZ2JhLCBjYXN0PFU2ND4oUikgPDwgIDAKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgY2FzdDxVNjQ+KEcpIDw8IDE2Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICB8IGNhc3Q8VTY0PihCKSA8PCAzMgotICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCBjYXN0PFU2ND4oQSkgPDwgNDgpOwotKyNlbmRpZgotICAgICAgICAgICAgICNlbmRpZgot IAotICAgICAgICAgICAgIH0gcmV0dXJuOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvY29tbW9uX2F1ZGlvL3dhdl9maWxlLmNjCi0rKysg cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9jb21t b25fYXVkaW8vd2F2X2ZpbGUuY2MKLUBAIC05MywxMyArOTMsMTUgQEAgc2l6ZV90IFdhdlJlYWRl cjo6bnVtX3NhbXBsZXMoKSBjb25zdCB7Ci0gfQotIAotIHNpemVfdCBXYXZSZWFkZXI6OlJlYWRT YW1wbGVzKHNpemVfdCBudW1fc2FtcGxlcywgaW50MTZfdCogc2FtcGxlcykgewotLSNpZm5kZWYg V0VCUlRDX0FSQ0hfTElUVExFX0VORElBTgotLSNlcnJvciAiTmVlZCB0byBjb252ZXJ0IHNhbXBs ZXMgdG8gYmlnLWVuZGlhbiB3aGVuIHJlYWRpbmcgZnJvbSBXQVYgZmlsZSIKLS0jZW5kaWYKLSAg IC8vIFRoZXJlIGNvdWxkIGJlIG1ldGFkYXRhIGFmdGVyIHRoZSBhdWRpbzsgZW5zdXJlIHdlIGRv bid0IHJlYWQgaXQuCi0gICBudW1fc2FtcGxlcyA9IHN0ZDo6bWluKG51bV9zYW1wbGVzLCBudW1f c2FtcGxlc19yZW1haW5pbmdfKTsKLSAgIGNvbnN0IHNpemVfdCByZWFkID0KLSAgICAgICBmcmVh ZChzYW1wbGVzLCBzaXplb2YoKnNhbXBsZXMpLCBudW1fc2FtcGxlcywgZmlsZV9oYW5kbGVfKTsK LSsjaWZuZGVmIFdFQlJUQ19BUkNIX0xJVFRMRV9FTkRJQU4KLSsgIGZvciAoc2l6ZV90IGkgPSAw OyBpIDwgcmVhZDsgaSsrKSB7Ci0rICAgICAgc2FtcGxlc1tpXSA9IF9fYnVpbHRpbl9ic3dhcDE2 KHNhbXBsZXNbaV0pOwotKyAgfQotKyNlbmRpZgotICAgLy8gSWYgd2UgZGlkbid0IHJlYWQgd2hh dCB3YXMgcmVxdWVzdGVkLCBlbnN1cmUgd2UndmUgcmVhY2hlZCB0aGUgRU9GLgotICAgUlRDX0NI RUNLKHJlYWQgPT0gbnVtX3NhbXBsZXMgfHwgZmVvZihmaWxlX2hhbmRsZV8pKTsKLSAgIFJUQ19D SEVDS19MRShyZWFkLCBudW1fc2FtcGxlc19yZW1haW5pbmdfKTsKLUBAIC0xNzgsMTMgKzE4MCwy NiBAQCBzaXplX3QgV2F2V3JpdGVyOjpudW1fc2FtcGxlcygpIGNvbnN0IHsKLSAKLSB2b2lkIFdh dldyaXRlcjo6V3JpdGVTYW1wbGVzKGNvbnN0IGludDE2X3QqIHNhbXBsZXMsIHNpemVfdCBudW1f c2FtcGxlcykgewotICNpZm5kZWYgV0VCUlRDX0FSQ0hfTElUVExFX0VORElBTgotLSNlcnJvciAi TmVlZCB0byBjb252ZXJ0IHNhbXBsZXMgdG8gbGl0dGxlLWVuZGlhbiB3aGVuIHdyaXRpbmcgdG8g V0FWIGZpbGUiCi0tI2VuZGlmCi0rICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtDaHVua3NpemUgPSA0 MDk2IC8gc2l6ZW9mKHVpbnQxNl90KTsKLSsgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtX3Nh bXBsZXM7IGkgKz0ga0NodW5rc2l6ZSkgewotKyAgICBpbnQxNl90IGlzYW1wbGVzW2tDaHVua3Np emVdOwotKyAgICBjb25zdCBzaXplX3QgY2h1bmsgPSBzdGQ6Om1pbihrQ2h1bmtzaXplLCBudW1f c2FtcGxlcyAtIGkpOwotKyAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGNodW5rOyBqKyspIHsK LSsgICAgICBpc2FtcGxlc1tqXSA9IF9fYnVpbHRpbl9ic3dhcDE2KHNhbXBsZXNbaSArIGpdKTsK LSsgICAgfQotKyAgICBjb25zdCBzaXplX3Qgd3JpdHRlbiA9Ci0rICAgICAgICBmd3JpdGUoaXNh bXBsZXMsIHNpemVvZigqaXNhbXBsZXMpLCBjaHVuaywgZmlsZV9oYW5kbGVfKTsKLSsgICAgUlRD X0NIRUNLX0VRKGNodW5rLCB3cml0dGVuKTsKLSsgICAgbnVtX3NhbXBsZXNfICs9IHdyaXR0ZW47 Ci0rICAgIFJUQ19DSEVDSyhudW1fc2FtcGxlc18gPj0gd3JpdHRlbik7ICAvLyBkZXRlY3Qgc2l6 ZV90IG92ZXJmbG93Ci0rICB9Ci0rI2Vsc2UKLSAgIGNvbnN0IHNpemVfdCB3cml0dGVuID0KLSAg ICAgICBmd3JpdGUoc2FtcGxlcywgc2l6ZW9mKCpzYW1wbGVzKSwgbnVtX3NhbXBsZXMsIGZpbGVf aGFuZGxlXyk7Ci0gICBSVENfQ0hFQ0tfRVEobnVtX3NhbXBsZXMsIHdyaXR0ZW4pOwotICAgbnVt X3NhbXBsZXNfICs9IHdyaXR0ZW47Ci0gICBSVENfQ0hFQ0sobnVtX3NhbXBsZXNfID49IHdyaXR0 ZW4pOyAgLy8gZGV0ZWN0IHNpemVfdCBvdmVyZmxvdwotKyNlbmRpZgotIH0KLSAKLSB2b2lkIFdh dldyaXRlcjo6V3JpdGVTYW1wbGVzKGNvbnN0IGZsb2F0KiBzYW1wbGVzLCBzaXplX3QgbnVtX3Nh bXBsZXMpIHsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvd2VicnRjL2NvbW1vbl9hdWRpby93YXZfaGVhZGVyLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2hl YWRlci5jYwotQEAgLTg2LDcgKzg2LDI2IEBAIHN0YXRpYyBpbmxpbmUgc3RkOjpzdHJpbmcgUmVh ZEZvdXJDQyh1aW50MzJfdCB4KSB7Ci0gICByZXR1cm4gc3RkOjpzdHJpbmcocmVpbnRlcnByZXRf Y2FzdDxjaGFyKj4oJngpLCA0KTsKLSB9Ci0gI2Vsc2UKLS0jZXJyb3IgIldyaXRlIGJlLXRvLWxl IGNvbnZlcnNpb24gZnVuY3Rpb25zIgotK3N0YXRpYyBpbmxpbmUgdm9pZCBXcml0ZUxFMTYodWlu dDE2X3QqIGYsIHVpbnQxNl90IHgpIHsKLSsgICpmID0gX19idWlsdGluX2Jzd2FwMTYoeCk7Ci0r fQotK3N0YXRpYyBpbmxpbmUgdm9pZCBXcml0ZUxFMzIodWludDMyX3QqIGYsIHVpbnQzMl90IHgp IHsKLSsgICpmID0gX19idWlsdGluX2Jzd2FwMzIoeCk7Ci0rfQotK3N0YXRpYyBpbmxpbmUgdm9p ZCBXcml0ZUZvdXJDQyh1aW50MzJfdCogZiwgY2hhciBhLCBjaGFyIGIsIGNoYXIgYywgY2hhciBk KSB7Ci0rICAqZiA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihkKSB8IHN0YXRpY19jYXN0PHVpbnQz Ml90PihjKSA8PCA4IHwKLSsgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGIpIDw8IDE2IHwg c3RhdGljX2Nhc3Q8dWludDMyX3Q+KGEpIDw8IDI0OwotK30KLSsKLStzdGF0aWMgaW5saW5lIHVp bnQxNl90IFJlYWRMRTE2KHVpbnQxNl90IHgpIHsKLSsgIHJldHVybiBfX2J1aWx0aW5fYnN3YXAx Nih4KTsKLSt9Ci0rc3RhdGljIGlubGluZSB1aW50MzJfdCBSZWFkTEUzMih1aW50MzJfdCB4KSB7 Ci0rICByZXR1cm4gX19idWlsdGluX2Jzd2FwMzIoeCk7Ci0rfQotK3N0YXRpYyBpbmxpbmUgc3Rk OjpzdHJpbmcgUmVhZEZvdXJDQyh1aW50MzJfdCB4KSB7Ci0rICByZXR1cm4gc3RkOjpzdHJpbmco cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oJngpLCA0KTsKLSt9Ci0gI2VuZGlmCi0gCi0gc3RhdGlj IGlubGluZSB1aW50MzJfdCBSaWZmQ2h1bmtTaXplKHNpemVfdCBieXRlc19pbl9wYXlsb2FkKSB7 Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VpL2F1cmEvbXVzL29zX2V4 Y2hhbmdlX2RhdGFfcHJvdmlkZXJfbXVzLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3VpL2F1cmEvbXVzL29zX2V4Y2hhbmdlX2RhdGFfcHJvdmlkZXJfbXVzLmNjCi1A QCAtMTQsNiArMTQsNyBAQAotICNpbmNsdWRlICJiYXNlL3N0cmluZ3Mvc3RyaW5nX3NwbGl0Lmgi Ci0gI2luY2x1ZGUgImJhc2Uvc3RyaW5ncy9zdHJpbmdfdXRpbC5oIgotICNpbmNsdWRlICJiYXNl L3N0cmluZ3MvdXRmX3N0cmluZ19jb252ZXJzaW9ucy5oIgotKyNpbmNsdWRlICJiYXNlL3N5c19i eXRlb3JkZXIuaCIKLSAjaW5jbHVkZSAibmV0L2Jhc2UvZmlsZW5hbWVfdXRpbC5oIgotICNpbmNs dWRlICJ1aS9iYXNlL2NsaXBib2FyZC9jbGlwYm9hcmRfY29uc3RhbnRzLmgiCi0gI2luY2x1ZGUg InVpL2Jhc2UvY2xpcGJvYXJkL2NsaXBib2FyZF9mb3JtYXRfdHlwZS5oIgotQEAgLTI3OSw4ICsy ODAsMTMgQEAgdm9pZCBPU0V4Y2hhbmdlRGF0YVByb3ZpZGVyTXVzOjpTZXRIdG1sKGNvbnN0IGJh c2U6OnN0cmluZzE2JiBodG1sLAotICAgc3RkOjp2ZWN0b3I8dW5zaWduZWQgY2hhcj4gYnl0ZXM7 Ci0gICAvLyBNYW51YWxseSBqYW0gYSBVVEYxNiBCT00gaW50byBieXRlcyBiZWNhdXNlIG90aGVy d2lzZSwgb3RoZXIgcHJvZ3JhbXMgd2lsbAotICAgLy8gYXNzdW1lIFVURi04LgotKyNpZiBkZWZp bmVkKEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4pCi0gICBieXRlcy5wdXNoX2JhY2soMHhGRik7Ci0g ICBieXRlcy5wdXNoX2JhY2soMHhGRSk7Ci0rI2Vsc2UKLSsgIGJ5dGVzLnB1c2hfYmFjaygweEZF KTsKLSsgIGJ5dGVzLnB1c2hfYmFjaygweEZGKTsKLSsjZW5kaWYKLSAgIEFkZFN0cmluZzE2VG9W ZWN0b3IoaHRtbCwgJmJ5dGVzKTsKLSAgIG1pbWVfZGF0YV9bdWk6OmtNaW1lVHlwZUhUTUxdID0g Ynl0ZXM7Ci0gfQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91aS9iYXNl L3Jlc291cmNlL2RhdGFfcGFjay5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS91aS9iYXNlL3Jlc291cmNlL2RhdGFfcGFjay5jYwotQEAgLTE1NCwxNiArMTU0LDQyIEBA IGNsYXNzIFNjb3BlZEZpbGVXcml0ZXIgewotICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFNj b3BlZEZpbGVXcml0ZXIpOwotIH07Ci0gCi0rc3RhdGljIGlubGluZSB1aW50MTZfdCBieXRlc3dh cCh1aW50MTZfdCB2KSB7IHJldHVybiBfX2J1aWx0aW5fYnN3YXAxNih2KTsgfQotK3N0YXRpYyBp bmxpbmUgdWludDMyX3QgYnl0ZXN3YXAodWludDMyX3QgdikgeyByZXR1cm4gX19idWlsdGluX2Jz d2FwMzIodik7IH0KLSsKLSt0ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyBieXRlc3dhcHBlZF90IHsK LStwcml2YXRlOgotKyAgVCB2YWx1ZTsKLStwdWJsaWM6Ci0rICBpbmxpbmUgYnl0ZXN3YXBwZWRf dChUIHYpIDogdmFsdWUoYnl0ZXN3YXAodikpIHsgfQotKyAgaW5saW5lIFQgb3BlcmF0b3I9KFQg dikgeyB2YWx1ZSA9IGJ5dGVzd2FwKHYpOyByZXR1cm4gdjsgfQotKyAgaW5saW5lIFQgb3BlcmF0 b3IrPShUIHYpIHsgdiArPSBieXRlc3dhcCh2YWx1ZSk7IHZhbHVlID0gYnl0ZXN3YXAodik7IHJl dHVybiB2OyB9Ci0rICBpbmxpbmUgb3BlcmF0b3IgVCgpIGNvbnN0IHsgcmV0dXJuIGJ5dGVzd2Fw KHZhbHVlKTsgfQotK307Ci0rCi0rI2lmICFkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4p Ci0rCi0rdHlwZWRlZiBieXRlc3dhcHBlZF90PHVpbnQxNl90PiB1aW50MTZsZV90OwotK3R5cGVk ZWYgYnl0ZXN3YXBwZWRfdDx1aW50MzJfdD4gdWludDMybGVfdDsKLSsKLSsjZWxzZQotKwotK3R5 cGVkZWYgdWludDE2X3QgdWludDE2bGVfdDsKLSt0eXBlZGVmIHVpbnQzMl90IHVpbnQzMmxlX3Q7 Ci0rCi0rI2VuZGlmCi0rCi0gfSAgLy8gbmFtZXNwYWNlCi0gCi0gbmFtZXNwYWNlIHVpIHsKLSAK LSAjcHJhZ21hIHBhY2socHVzaCwgMikKLSBzdHJ1Y3QgRGF0YVBhY2s6OkVudHJ5IHsKLS0gIHVp bnQxNl90IHJlc291cmNlX2lkOwotLSAgdWludDMyX3QgZmlsZV9vZmZzZXQ7Ci0rICB1aW50MTZs ZV90IHJlc291cmNlX2lkOwotKyAgdWludDMybGVfdCBmaWxlX29mZnNldDsKLSAKLSAgIHN0YXRp YyBpbnQgQ29tcGFyZUJ5SWQoY29uc3Qgdm9pZCogdm9pZF9rZXksIGNvbnN0IHZvaWQqIHZvaWRf ZW50cnkpIHsKLSsgICAgLy8gS2V5IGlzIGhvc3QgZW5kaWFuCi0gICAgIHVpbnQxNl90IGtleSA9 ICpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90Kj4odm9pZF9rZXkpOwotICAgICBjb25z dCBFbnRyeSogZW50cnkgPSByZWludGVycHJldF9jYXN0PGNvbnN0IEVudHJ5Kj4odm9pZF9lbnRy eSk7Ci0gICAgIHJldHVybiBrZXkgLSBlbnRyeS0+cmVzb3VyY2VfaWQ7Ci1AQCAtMTcxLDEwICsx OTcsMTEgQEAgc3RydWN0IERhdGFQYWNrOjpFbnRyeSB7Ci0gfTsKLSAKLSBzdHJ1Y3QgRGF0YVBh Y2s6OkFsaWFzIHsKLS0gIHVpbnQxNl90IHJlc291cmNlX2lkOwotLSAgdWludDE2X3QgZW50cnlf aW5kZXg7Ci0rICB1aW50MTZsZV90IHJlc291cmNlX2lkOwotKyAgdWludDE2bGVfdCBlbnRyeV9p bmRleDsKLSAKLSAgIHN0YXRpYyBpbnQgQ29tcGFyZUJ5SWQoY29uc3Qgdm9pZCogdm9pZF9rZXks IGNvbnN0IHZvaWQqIHZvaWRfZW50cnkpIHsKLSsgICAgLy8gS2V5IGlzIGhvc3QgZW5kaWFuCi0g ICAgIHVpbnQxNl90IGtleSA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90Kj4odm9p ZF9rZXkpOwotICAgICBjb25zdCBBbGlhcyogZW50cnkgPSByZWludGVycHJldF9jYXN0PGNvbnN0 IEFsaWFzKj4odm9pZF9lbnRyeSk7Ci0gICAgIHJldHVybiBrZXkgLSBlbnRyeS0+cmVzb3VyY2Vf aWQ7Ci1AQCAtMjg0LDcgKzMxMSw3IEBAIGJvb2wgRGF0YVBhY2s6OkxvYWRJbXBsKHN0ZDo6dW5p cXVlX3B0cjxEYXRhUGFjazo6RGF0YVNvdXJjZT4gZGF0YV9zb3VyY2UpIHsKLSAgIC8vIFBhcnNl IHRoZSB2ZXJzaW9uIGFuZCBjaGVjayBmb3IgdHJ1bmNhdGVkIGhlYWRlci4KLSAgIHVpbnQzMl90 IHZlcnNpb24gPSAwOwotICAgaWYgKGRhdGFfbGVuZ3RoID4gc2l6ZW9mKHZlcnNpb24pKQotLSAg ICB2ZXJzaW9uID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGRhdGEpWzBdOwot KyAgICB2ZXJzaW9uID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJsZV90Kj4oZGF0YSlb MF07Ci0gICBzaXplX3QgaGVhZGVyX2xlbmd0aCA9Ci0gICAgICAgdmVyc2lvbiA9PSBrRmlsZUZv cm1hdFY0ID8ga0hlYWRlckxlbmd0aFY0IDoga0hlYWRlckxlbmd0aFY1OwotICAgaWYgKHZlcnNp b24gPT0gMCB8fCBkYXRhX2xlbmd0aCA8IGhlYWRlcl9sZW5ndGgpIHsKLUBAIC0yOTUsMTQgKzMy MiwxNCBAQCBib29sIERhdGFQYWNrOjpMb2FkSW1wbChzdGQ6OnVuaXF1ZV9wdHI8RGF0YVBhY2s6 OkRhdGFTb3VyY2U+IGRhdGFfc291cmNlKSB7Ci0gCi0gICAvLyBQYXJzZSB0aGUgaGVhZGVyIG9m IHRoZSBmaWxlLgotICAgaWYgKHZlcnNpb24gPT0ga0ZpbGVGb3JtYXRWNCkgewotLSAgICByZXNv dXJjZV9jb3VudF8gPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YSlbMV07 Ci0rICAgIHJlc291cmNlX2NvdW50XyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMybGVf dCo+KGRhdGEpWzFdOwotICAgICBhbGlhc19jb3VudF8gPSAwOwotICAgICB0ZXh0X2VuY29kaW5n X3R5cGVfID0gc3RhdGljX2Nhc3Q8VGV4dEVuY29kaW5nVHlwZT4oZGF0YVs4XSk7Ci0gICB9IGVs c2UgaWYgKHZlcnNpb24gPT0ga0ZpbGVGb3JtYXRWNSkgewotICAgICAvLyBWZXJzaW9uIDUgYWRk ZWQgdGhlIGFsaWFzIHRhYmxlIGFuZCBjaGFuZ2VkIHRoZSBoZWFkZXIgZm9ybWF0LgotICAgICB0 ZXh0X2VuY29kaW5nX3R5cGVfID0gc3RhdGljX2Nhc3Q8VGV4dEVuY29kaW5nVHlwZT4oZGF0YVs0 XSk7Ci0tICAgIHJlc291cmNlX2NvdW50XyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDE2 X3QqPihkYXRhKVs0XTsKLS0gICAgYWxpYXNfY291bnRfID0gcmVpbnRlcnByZXRfY2FzdDxjb25z dCB1aW50MTZfdCo+KGRhdGEpWzVdOwotKyAgICByZXNvdXJjZV9jb3VudF8gPSByZWludGVycHJl dF9jYXN0PGNvbnN0IHVpbnQxNmxlX3QqPihkYXRhKVs0XTsKLSsgICAgYWxpYXNfY291bnRfID0g cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MTZsZV90Kj4oZGF0YSlbNV07Ci0gICB9IGVsc2Ug ewotICAgICBMT0coRVJST1IpIDw8ICJCYWQgZGF0YSBwYWNrIHZlcnNpb246IGdvdCAiIDw8IHZl cnNpb24gPDwgIiwgZXhwZWN0ZWQgIgotICAgICAgICAgICAgICAgIDw8IGtGaWxlRm9ybWF0VjQg PDwgIiBvciAiIDw8IGtGaWxlRm9ybWF0VjU7Ci1AQCAtNDQ3LDkgKzQ3NCw2IEBAIHZvaWQgRGF0 YVBhY2s6OkNoZWNrRm9yRHVwbGljYXRlUmVzb3VyY2VzKAotIGJvb2wgRGF0YVBhY2s6OldyaXRl UGFjayhjb25zdCBiYXNlOjpGaWxlUGF0aCYgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3Qgc3RkOjptYXA8dWludDE2X3QsIGJhc2U6OlN0cmluZ1BpZWNlPiYgcmVzb3VyY2Vz LAotICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0RW5jb2RpbmdUeXBlIHRleHRfZW5jb2Rp bmdfdHlwZSkgewotLSNpZiAhZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOKQotLSNlcnJv ciAiZGF0YXBhY2sgYXNzdW1lcyBsaXR0bGUgZW5kaWFuIgotLSNlbmRpZgotICAgaWYgKHRleHRf ZW5jb2RpbmdfdHlwZSAhPSBVVEY4ICYmIHRleHRfZW5jb2RpbmdfdHlwZSAhPSBVVEYxNiAmJgot ICAgICAgIHRleHRfZW5jb2RpbmdfdHlwZSAhPSBCSU5BUlkpIHsKLSAgICAgTE9HKEVSUk9SKSA8 PCAiSW52YWxpZCB0ZXh0IGVuY29kaW5nIHR5cGUsIGdvdCAiIDw8IHRleHRfZW5jb2RpbmdfdHlw ZQotQEAgLTQ2Nyw3ICs0OTEsNyBAQCBib29sIERhdGFQYWNrOjpXcml0ZVBhY2soY29uc3QgYmFz ZTo6RmlsZVBhdGgmIHBhdGgsCi0gICBpZiAoIWZpbGUudmFsaWQoKSkKLSAgICAgcmV0dXJuIGZh bHNlOwotIAotLSAgdWludDMyX3QgZW5jb2RpbmcgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4odGV4 dF9lbmNvZGluZ190eXBlKTsKLSsgIHVpbnQzMmxlX3QgZW5jb2RpbmcgPSBzdGF0aWNfY2FzdDx1 aW50MzJsZV90Pih0ZXh0X2VuY29kaW5nX3R5cGUpOwotIAotICAgLy8gQnVpbGQgYSBsaXN0IG9m IGZpbmFsIHJlc291cmNlIGFsaWFzZXMsIGFuZCBhbiBhbGlhcyBtYXAgYXQgdGhlIHNhbWUgdGlt ZS4KLSAgIHN0ZDo6dmVjdG9yPHVpbnQxNl90PiByZXNvdXJjZV9pZHM7Ci1AQCAtNDk0LDEzICs1 MTgsMTQgQEAgYm9vbCBEYXRhUGFjazo6V3JpdGVQYWNrKGNvbnN0IGJhc2U6OkZpbGVQYXRoJiBw YXRoLAotIAotICAgLy8gVGhlc2UgdmFsdWVzIGFyZSBndWFyYW50ZWVkIHRvIGZpdCBpbiBhIHVp bnQxNl90IGR1ZSB0byB0aGUgZWFybGllcgotICAgLy8gY2hlY2sgb2YgfHJlc291cmNlc19jb3Vu dHwuCi0tICBjb25zdCB1aW50MTZfdCBhbGlhc19jb3VudCA9IHN0YXRpY19jYXN0PHVpbnQxNl90 PihhbGlhc2VzLnNpemUoKSk7Ci0tICBjb25zdCB1aW50MTZfdCBlbnRyeV9jb3VudCA9IHN0YXRp Y19jYXN0PHVpbnQxNl90PihyZXNvdXJjZV9pZHMuc2l6ZSgpKTsKLSsgIGNvbnN0IHVpbnQxNmxl X3QgYWxpYXNfY291bnQgPSBzdGF0aWNfY2FzdDx1aW50MTZsZV90PihhbGlhc2VzLnNpemUoKSk7 Ci0rICBjb25zdCB1aW50MTZsZV90IGVudHJ5X2NvdW50ID0gc3RhdGljX2Nhc3Q8dWludDE2bGVf dD4ocmVzb3VyY2VfaWRzLnNpemUoKSk7Ci0gICBEQ0hFQ0tfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90 PihlbnRyeV9jb3VudCkgKyBzdGF0aWNfY2FzdDxzaXplX3Q+KGFsaWFzX2NvdW50KSwKLSAgICAg ICAgICAgICByZXNvdXJjZXNfY291bnQpOwotIAotLSAgZmlsZS5Xcml0ZSgma0ZpbGVGb3JtYXRW NSwgc2l6ZW9mKGtGaWxlRm9ybWF0VjUpKTsKLS0gIGZpbGUuV3JpdGUoJmVuY29kaW5nLCBzaXpl b2YodWludDMyX3QpKTsKLSsgIHVpbnQzMmxlX3QgdmVyc2lvbiA9IGtGaWxlRm9ybWF0VjU7Ci0r ICBmaWxlLldyaXRlKCZ2ZXJzaW9uLCBzaXplb2YodmVyc2lvbikpOwotKyAgZmlsZS5Xcml0ZSgm ZW5jb2RpbmcsIHNpemVvZih1aW50MzJsZV90KSk7Ci0gICBmaWxlLldyaXRlKCZlbnRyeV9jb3Vu dCwgc2l6ZW9mKGVudHJ5X2NvdW50KSk7Ci0gICBmaWxlLldyaXRlKCZhbGlhc19jb3VudCwgc2l6 ZW9mKGFsaWFzX2NvdW50KSk7Ci0gCi1AQCAtNTA4LDggKzUzMyw4IEBAIGJvb2wgRGF0YVBhY2s6 OldyaXRlUGFjayhjb25zdCBiYXNlOjpGaWxlUGF0aCYgcGF0aCwKLSAgIC8vIGxhc3QgaXRlbSBz byB3ZSBjYW4gY29tcHV0ZSB0aGUgc2l6ZSBvZiB0aGUgbGlzdCBpdGVtLgotICAgY29uc3QgdWlu dDMyX3QgaW5kZXhfbGVuZ3RoID0gKGVudHJ5X2NvdW50ICsgMSkgKiBzaXplb2YoRW50cnkpOwot ICAgY29uc3QgdWludDMyX3QgYWxpYXNfdGFibGVfbGVuZ3RoID0gYWxpYXNfY291bnQgKiBzaXpl b2YoQWxpYXMpOwotLSAgdWludDMyX3QgZGF0YV9vZmZzZXQgPSBrSGVhZGVyTGVuZ3RoVjUgKyBp bmRleF9sZW5ndGggKyBhbGlhc190YWJsZV9sZW5ndGg7Ci0tICBmb3IgKGNvbnN0IHVpbnQxNl90 IHJlc291cmNlX2lkIDogcmVzb3VyY2VfaWRzKSB7Ci0rICB1aW50MzJsZV90IGRhdGFfb2Zmc2V0 ID0ga0hlYWRlckxlbmd0aFY1ICsgaW5kZXhfbGVuZ3RoICsgYWxpYXNfdGFibGVfbGVuZ3RoOwot KyAgZm9yIChjb25zdCB1aW50MTZsZV90IHJlc291cmNlX2lkIDogcmVzb3VyY2VfaWRzKSB7Ci0g ICAgIGZpbGUuV3JpdGUoJnJlc291cmNlX2lkLCBzaXplb2YocmVzb3VyY2VfaWQpKTsKLSAgICAg ZmlsZS5Xcml0ZSgmZGF0YV9vZmZzZXQsIHNpemVvZihkYXRhX29mZnNldCkpOwotICAgICBkYXRh X29mZnNldCArPSByZXNvdXJjZXMuZmluZChyZXNvdXJjZV9pZCktPnNlY29uZC5sZW5ndGgoKTsK LUBAIC01MTcsMTMgKzU0MiwxMyBAQCBib29sIERhdGFQYWNrOjpXcml0ZVBhY2soY29uc3QgYmFz ZTo6RmlsZVBhdGgmIHBhdGgsCi0gCi0gICAvLyBXZSBwbGFjZSBhbiBleHRyYSBlbnRyeSBhZnRl ciB0aGUgbGFzdCBpdGVtIHRoYXQgYWxsb3dzIHVzIHRvIHJlYWQgdGhlCi0gICAvLyBzaXplIG9m IHRoZSBsYXN0IGl0ZW0uCi0tICBjb25zdCB1aW50MTZfdCByZXNvdXJjZV9pZCA9IDA7Ci0rICBj b25zdCB1aW50MTZsZV90IHJlc291cmNlX2lkID0gMDsKLSAgIGZpbGUuV3JpdGUoJnJlc291cmNl X2lkLCBzaXplb2YocmVzb3VyY2VfaWQpKTsKLSAgIGZpbGUuV3JpdGUoJmRhdGFfb2Zmc2V0LCBz aXplb2YoZGF0YV9vZmZzZXQpKTsKLSAKLSAgIC8vIFdyaXRlIHRoZSBhbGlhc2VzIHRhYmxlLCBp ZiBhbnkuIE5vdGU6IHxhbGlhc2VzfCBpcyBhbiBzdGQ6Om1hcCwKLSAgIC8vIGVuc3VyaW5nIHZh bHVlcyBhcmUgd3JpdHRlbiBpbiBpbmNyZWFzaW5nIG9yZGVyLgotLSAgZm9yIChjb25zdCBzdGQ6 OnBhaXI8dWludDE2X3QsIHVpbnQxNl90PiYgYWxpYXMgOiBhbGlhc2VzKSB7Ci0rICBmb3IgKGNv bnN0IHN0ZDo6cGFpcjx1aW50MTZsZV90LCB1aW50MTZsZV90PiBhbGlhcyA6IGFsaWFzZXMpIHsK LSAgICAgZmlsZS5Xcml0ZSgmYWxpYXMsIHNpemVvZihhbGlhcykpOwotICAgfQotIAotLS0tIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91aS9iYXNlL3Jlc291cmNlL2RhdGFfcGFj ay5jYy5vcmlnCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VpL2Jhc2Uv cmVzb3VyY2UvZGF0YV9wYWNrLmNjLm9yaWcKLUBAIC0zODIsMTIgKzM4Miw2IEBAIGJvb2wgRGF0 YVBhY2s6Okhhc1Jlc291cmNlKHVpbnQxNl90IHJlc291cmNlX2lkKSBjb25zdCB7Ci0gCi0gYm9v bCBEYXRhUGFjazo6R2V0U3RyaW5nUGllY2UodWludDE2X3QgcmVzb3VyY2VfaWQsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTo6U3RyaW5nUGllY2UqIGRhdGEpIGNvbnN0IHsK LS0gIC8vIEl0IHdvbid0IGJlIGhhcmQgdG8gbWFrZSB0aGlzIGVuZGlhbi1hZ25vc3RpYywgYnV0 IGl0J3Mgbm90IHdvcnRoCi0tICAvLyBib3RoZXJpbmcgdG8gZG8gcmlnaHQgbm93LgotLSNpZiAh ZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOKQotLSNlcnJvciAiZGF0YXBhY2sgYXNzdW1l cyBsaXR0bGUgZW5kaWFuIgotLSNlbmRpZgotLQotICAgY29uc3QgRW50cnkqIHRhcmdldCA9IExv b2t1cEVudHJ5QnlJZChyZXNvdXJjZV9pZCk7Ci0gICBpZiAoIXRhcmdldCkKLSAgICAgcmV0dXJu IGZhbHNlOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91aS9nZngvY29k ZWMvanBlZ19jb2RlYy5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91 aS9nZngvY29kZWMvanBlZ19jb2RlYy5jYwotQEAgLTIxMiwxMSArMjEyLDExIEBAIGJvb2wgSlBF R0NvZGVjOjpEZWNvZGUoY29uc3QgdW5zaWduZWQgY2hhciogaW5wdXQsIHNpemVfdCBpbnB1dF9z aXplLAotICAgICAgIC8vIHVzZWQgYnkgQ2hyb21pdW0gKGkuZS4gUkdCQSBhbmQgQkdSQSkgYW5k IHdlIGp1c3QgbWFwIHRoZSBpbnB1dAotICAgICAgIC8vIHBhcmFtZXRlcnMgdG8gYSBjb2xvcnNw YWNlLgotICAgICAgIGlmIChmb3JtYXQgPT0gRk9STUFUX1JHQkEgfHwKLS0gICAgICAgICAgKGZv cm1hdCA9PSBGT1JNQVRfU2tCaXRtYXAgJiYgU0tfUjMyX1NISUZUID09IDApKSB7Ci0rICAgICAg ICAgIChmb3JtYXQgPT0gRk9STUFUX1NrQml0bWFwICYmIFNLX1BNQ09MT1JfQllURV9PUkRFUihS LCBHLCBCLCBBKSkpIHsKLSAgICAgICAgIGNpbmZvLT5vdXRfY29sb3Jfc3BhY2UgPSBKQ1NfRVhU X1JHQlg7Ci0gICAgICAgICBjaW5mby0+b3V0cHV0X2NvbXBvbmVudHMgPSA0OwotICAgICAgIH0g ZWxzZSBpZiAoZm9ybWF0ID09IEZPUk1BVF9CR1JBIHx8Ci0tICAgICAgICAgICAgICAgICAoZm9y bWF0ID09IEZPUk1BVF9Ta0JpdG1hcCAmJiBTS19CMzJfU0hJRlQgPT0gMCkpIHsKLSsgICAgICAg ICAgICAgICAgIChmb3JtYXQgPT0gRk9STUFUX1NrQml0bWFwICYmIFNLX1BNQ09MT1JfQllURV9P UkRFUihCLCBHLCBSLCBBKSkpIHsKLSAgICAgICAgIGNpbmZvLT5vdXRfY29sb3Jfc3BhY2UgPSBK Q1NfRVhUX0JHUlg7Ci0gICAgICAgICBjaW5mby0+b3V0cHV0X2NvbXBvbmVudHMgPSA0OwotICAg ICAgIH0gZWxzZSB7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VpL2dm eC9jb2RlYy9wbmdfY29kZWMuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdWkvZ2Z4L2NvZGVjL3BuZ19jb2RlYy5jYwotQEAgLTE2OSw2ICsxNjksMTAgQEAgdm9pZCBE ZWNvZGVJbmZvQ2FsbGJhY2socG5nX3N0cnVjdCogcG5nX3B0ciwgcG5nX2luZm8qIGluZm9fcHRy KSB7Ci0gICAgICAgICBwbmdfc2V0X2JncihwbmdfcHRyKTsKLSAgICAgICAgIHBuZ19zZXRfYWRk X2FscGhhKHBuZ19wdHIsIDB4RkYsIFBOR19GSUxMRVJfQUZURVIpOwotICAgICAgICAgYnJlYWs7 Ci0rICAgICAgY2FzZSBQTkdDb2RlYzo6Rk9STUFUX0FSR0I6Ci0rICAgICAgICBzdGF0ZS0+b3V0 cHV0X2NoYW5uZWxzID0gNDsKLSsgICAgICAgIHBuZ19zZXRfYWRkX2FscGhhKHBuZ19wdHIsIDB4 RkYsIFBOR19GSUxMRVJfQkVGT1JFKTsKLSsgICAgICAgIGJyZWFrOwotICAgICAgIGNhc2UgUE5H Q29kZWM6OkZPUk1BVF9Ta0JpdG1hcDoKLSAgICAgICAgIHN0YXRlLT5vdXRwdXRfY2hhbm5lbHMg PSA0OwotICAgICAgICAgcG5nX3NldF9hZGRfYWxwaGEocG5nX3B0ciwgMHhGRiwgUE5HX0ZJTExF Ul9BRlRFUik7Ci1AQCAtMTgzLDYgKzE4NywxMCBAQCB2b2lkIERlY29kZUluZm9DYWxsYmFjayhw bmdfc3RydWN0KiBwbmdfcHRyLCBwbmdfaW5mbyogaW5mb19wdHIpIHsKLSAgICAgICAgIHN0YXRl LT5vdXRwdXRfY2hhbm5lbHMgPSA0OwotICAgICAgICAgcG5nX3NldF9iZ3IocG5nX3B0cik7Ci0g ICAgICAgICBicmVhazsKLSsgICAgICBjYXNlIFBOR0NvZGVjOjpGT1JNQVRfQVJHQjoKLSsgICAg ICAgIHN0YXRlLT5vdXRwdXRfY2hhbm5lbHMgPSA0OwotKwlwbmdfc2V0X3N3YXBfYWxwaGEocG5n X3B0cik7Ci0rICAgICAgICBicmVhazsKLSAgICAgICBjYXNlIFBOR0NvZGVjOjpGT1JNQVRfU2tC aXRtYXA6Ci0gICAgICAgICBzdGF0ZS0+b3V0cHV0X2NoYW5uZWxzID0gNDsKLSAgICAgICAgIGJy ZWFrOwotQEAgLTQ3NSw2ICs0ODMsOCBAQCBib29sIFBOR0NvZGVjOjpFbmNvZGUoY29uc3QgdW5z aWduZWQgY2hhciogaW5wdXQsCi0gICAgIGNhc2UgRk9STUFUX0JHUkE6Ci0gICAgICAgY29sb3JU eXBlID0ga0JHUkFfODg4OF9Ta0NvbG9yVHlwZTsKLSAgICAgICBicmVhazsKLSsgICAgY2FzZSBG T1JNQVRfQVJHQjoKLSsgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgIGNhc2UgRk9STUFUX1NrQml0 bWFwOgotICAgICAgIGNvbG9yVHlwZSA9IGtOMzJfU2tDb2xvclR5cGU7Ci0gICAgICAgYnJlYWs7 Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VpL2dmeC9jb2RlYy9wbmdf Y29kZWMuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91aS9nZngvY29k ZWMvcG5nX2NvZGVjLmgKLUBAIC0zNyw2ICszNywxMCBAQCBjbGFzcyBDT0RFQ19FWFBPUlQgUE5H Q29kZWMgewotICAgICAvLyBUaGlzIGlzIHRoZSBkZWZhdWx0IFdpbmRvd3MgRElCIG9yZGVyLgot ICAgICBGT1JNQVRfQkdSQSwKLSAKLSsgICAgLy8gNCBieXRlcyBwZXIgcGl4ZWwsIGluIEFSR0Ig b3JkZXIgaW4gbWVtb3J5IHJlZ2FyZGxlc3Mgb2YgZW5kaWFubmVzcy4KLSsgICAgLy8gT25seSBz dXBwb3J0ZWQgZm9yIGRlY29kaW5nCi0rICAgIEZPUk1BVF9BUkdCLAotKwotICAgICAvLyBTa0Jp dG1hcCBmb3JtYXQuIEZvciBFbmNvZGUoKSBrTjMyX1NrQ29sb3JUeXBlICg0IGJ5dGVzIHBlciBw aXhlbCkgYW5kCi0gICAgIC8vIGtBbHBoYV84X1NrQ29sb3JUeXBlICgxIGJ5dGUgcGVyIHBpeGVs KSBmb3JtYXRzIGFyZSBzdXBwb3J0ZWQuCi0gICAgIC8vIGtBbHBoYV84X1NrQ29sb3JUeXBlIGdl dHMgZW5jb2RlZCBpbnRvIGEgZ3JheXNjYWxlIFBORyB0cmVhdGluZyBhbHBoYSBhcwotLS0tIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91aS9nZngvY29kZWMvcG5nX2NvZGVjX3Vu aXR0ZXN0LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VpL2dmeC9j b2RlYy9wbmdfY29kZWNfdW5pdHRlc3QuY2MKLUBAIC04NTMsNyArODUzLDcgQEAgVEVTVChQTkdD b2RlYywgRW5jb2RlQThTa0JpdG1hcCkgewotICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGg7IHkr KykgewotICAgICAgIHVpbnQ4X3Qgb3JpZ2luYWxfcGl4ZWwgPSAqb3JpZ2luYWxfYml0bWFwLmdl dEFkZHI4KHgsIHkpOwotICAgICAgIHVpbnQzMl90IGRlY29kZWRfcGl4ZWwgPSAqZGVjb2RlZF9i aXRtYXAuZ2V0QWRkcjMyKHgsIHkpOwotLSAgICAgIEVYUEVDVF9UUlVFKEJHUkFHcmF5RXF1YWxz QThHcmF5KGRlY29kZWRfcGl4ZWwsIG9yaWdpbmFsX3BpeGVsKSk7Ci0rICAgICAgRVhQRUNUX1RS VUUoQkdSQUdyYXlFcXVhbHNBOEdyYXkoU2tVblByZU11bHRpcGx5OjpQTUNvbG9yVG9Db2xvcihk ZWNvZGVkX3BpeGVsKSwgb3JpZ2luYWxfcGl4ZWwpKTsKLSAgICAgfQotICAgfQotIH0KLS0tLSBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdWkvZ2Z4L2NvbG9yX2FuYWx5c2lzLmNj Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VpL2dmeC9jb2xvcl9hbmFs eXNpcy5jYwotQEAgLTE2LDYgKzE2LDcgQEAKLSAjaW5jbHVkZSA8dmVjdG9yPgotIAotICNpbmNs dWRlICJiYXNlL2xvZ2dpbmcuaCIKLSsjaW5jbHVkZSAiYmFzZS9zeXNfYnl0ZW9yZGVyLmgiCi0g I2luY2x1ZGUgInRoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrQml0bWFwLmgiCi0gI2lu Y2x1ZGUgInRoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrVW5QcmVNdWx0aXBseS5oIgot ICNpbmNsdWRlICJ1aS9nZngvY29kZWMvcG5nX2NvZGVjLmgiCi1AQCAtNTA2LDEwICs1MDcsMTcg QEAgU2tDb2xvciBGaW5kQ2xvc2VzdENvbG9yKGNvbnN0IHVpbnQ4X3QqIGltYWdlLAotICAgU2tD b2xvciBiZXN0X2NvbG9yID0gY29sb3I7Ci0gICBjb25zdCB1aW50OF90KiBieXRlID0gaW1hZ2U7 Ci0gICBmb3IgKGludCBpID0gMDsgaSA8IHdpZHRoICogaGVpZ2h0OyArK2kpIHsKLSsjaWYgZGVm aW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOKQotICAgICB1aW50OF90IGIgPSAqKGJ5dGUrKyk7 Ci0gICAgIHVpbnQ4X3QgZyA9ICooYnl0ZSsrKTsKLSAgICAgdWludDhfdCByID0gKihieXRlKysp OwotICAgICB1aW50OF90IGEgPSAqKGJ5dGUrKyk7Ci0rI2Vsc2UKLSsgICAgdWludDhfdCBhID0g KihieXRlKyspOwotKyAgICB1aW50OF90IHIgPSAqKGJ5dGUrKyk7Ci0rICAgIHVpbnQ4X3QgZyA9 ICooYnl0ZSsrKTsKLSsgICAgdWludDhfdCBiID0gKihieXRlKyspOwotKyNlbmRpZgotICAgICAv LyBJZ25vcmUgZnVsbHkgdHJhbnNwYXJlbnQgcGl4ZWxzLgotICAgICBpZiAoYSA9PSAwKQotICAg ICAgIGNvbnRpbnVlOwotQEAgLTUyNyw3ICs1MzUsNiBAQCBTa0NvbG9yIEZpbmRDbG9zZXN0Q29s b3IoY29uc3QgdWludDhfdCogaW1hZ2UsCi0gCi0gLy8gRm9yIGEgMTZ4MTYgaWNvbiBvbiBhbiBJ bnRlbCBDb3JlIGk1IHRoaXMgZnVuY3Rpb24gdGFrZXMgYXBwcm94aW1hdGVseQotIC8vIDAuNSBt cyB0byBydW4uCi0tLy8gVE9ETyhwb3J0KTogVGhpcyBjb2RlIGFzc3VtZXMgdGhlIENQVSBhcmNo aXRlY3R1cmUgaXMgbGl0dGxlLWVuZGlhbi4KLSBTa0NvbG9yIENhbGN1bGF0ZUtNZWFuQ29sb3JP ZkJ1ZmZlcih1aW50OF90KiBkZWNvZGVkX2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50IGltZ193aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnQgaW1nX2hlaWdodCwKLUBAIC01NTAsMTAgKzU1NywxNyBAQCBTa0NvbG9yIENh bGN1bGF0ZUtNZWFuQ29sb3JPZkJ1ZmZlcih1aW50OF90KiBkZWNvZGVkX2RhdGEsCi0gICAgICAg ICBpbnQgcGl4ZWxfcG9zID0gc2FtcGxlci0+R2V0U2FtcGxlKGltZ193aWR0aCwgaW1nX2hlaWdo dCkgJQotICAgICAgICAgICAgIChpbWdfd2lkdGggKiBpbWdfaGVpZ2h0KTsKLSAKLSsjaWYgZGVm aW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOKQotICAgICAgICAgdWludDhfdCBiID0gZGVjb2Rl ZF9kYXRhW3BpeGVsX3BvcyAqIDRdOwotICAgICAgICAgdWludDhfdCBnID0gZGVjb2RlZF9kYXRh W3BpeGVsX3BvcyAqIDQgKyAxXTsKLSAgICAgICAgIHVpbnQ4X3QgciA9IGRlY29kZWRfZGF0YVtw aXhlbF9wb3MgKiA0ICsgMl07Ci0gICAgICAgICB1aW50OF90IGEgPSBkZWNvZGVkX2RhdGFbcGl4 ZWxfcG9zICogNCArIDNdOwotKyNlbHNlCi0rICAgICAgICB1aW50OF90IGEgPSBkZWNvZGVkX2Rh dGFbcGl4ZWxfcG9zICogNF07Ci0rICAgICAgICB1aW50OF90IHIgPSBkZWNvZGVkX2RhdGFbcGl4 ZWxfcG9zICogNCArIDFdOwotKyAgICAgICAgdWludDhfdCBnID0gZGVjb2RlZF9kYXRhW3BpeGVs X3BvcyAqIDQgKyAyXTsKLSsgICAgICAgIHVpbnQ4X3QgYiA9IGRlY29kZWRfZGF0YVtwaXhlbF9w b3MgKiA0ICsgM107Ci0rI2VuZGlmCi0gICAgICAgICAvLyBTa2lwIGZ1bGx5IHRyYW5zcGFyZW50 IHBpeGVscyBhcyB0aGV5IHVzdWFsbHkgY29udGFpbiBibGFjayBpbiB0aGVpcgotICAgICAgICAg Ly8gUkdCIGNoYW5uZWxzIGJ1dCBkbyBub3QgY29udHJpYnV0ZSB0byB0aGUgdmlzdWFsIGltYWdl LgotICAgICAgICAgaWYgKGEgPT0gMCkKLUBAIC02MDIsMTAgKzYxNiwxNyBAQCBTa0NvbG9yIENh bGN1bGF0ZUtNZWFuQ29sb3JPZkJ1ZmZlcih1aW50OF90KiBkZWNvZGVkX2RhdGEsCi0gICAgICAg dWludDhfdCogcGl4ZWwgPSBkZWNvZGVkX2RhdGE7Ci0gICAgICAgdWludDhfdCogZGVjb2RlZF9k YXRhX2VuZCA9IGRlY29kZWRfZGF0YSArIChpbWdfd2lkdGggKiBpbWdfaGVpZ2h0ICogNCk7Ci0g ICAgICAgd2hpbGUgKHBpeGVsIDwgZGVjb2RlZF9kYXRhX2VuZCkgewotKyNpZiBkZWZpbmVkKEFS Q0hfQ1BVX0xJVFRMRV9FTkRJQU4pCi0gICAgICAgICB1aW50OF90IGIgPSAqKHBpeGVsKyspOwot ICAgICAgICAgdWludDhfdCBnID0gKihwaXhlbCsrKTsKLSAgICAgICAgIHVpbnQ4X3QgciA9ICoo cGl4ZWwrKyk7Ci0gICAgICAgICB1aW50OF90IGEgPSAqKHBpeGVsKyspOwotKyNlbHNlCi0rICAg ICAgICB1aW50OF90IGEgPSAqKHBpeGVsKyspOwotKyAgICAgICAgdWludDhfdCByID0gKihwaXhl bCsrKTsKLSsgICAgICAgIHVpbnQ4X3QgZyA9ICoocGl4ZWwrKyk7Ci0rICAgICAgICB1aW50OF90 IGIgPSAqKHBpeGVsKyspOwotKyNlbmRpZgotICAgICAgICAgLy8gU2tpcCB0cmFuc3BhcmVudCBw aXhlbHMsIHNlZSBhYm92ZS4KLSAgICAgICAgIGlmIChhID09IDApCi0gICAgICAgICAgIGNvbnRp bnVlOwotQEAgLTY4Myw4ICs3MDQsMTIgQEAgU2tDb2xvciBDYWxjdWxhdGVLTWVhbkNvbG9yT2ZQ Tkcoc2NvcGVkX3JlZnB0cjxiYXNlOjpSZWZDb3VudGVkTWVtb3J5PiBwbmcsCi0gCi0gICBpZiAo cG5nLmdldCgpICYmIHBuZy0+c2l6ZSgpICYmCi0gICAgICAgZ2Z4OjpQTkdDb2RlYzo6RGVjb2Rl KHBuZy0+ZnJvbnQoKSwgcG5nLT5zaXplKCksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg IGdmeDo6UE5HQ29kZWM6OkZPUk1BVF9CR1JBLCAmZGVjb2RlZF9kYXRhLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmaW1nX3dpZHRoLCAmaW1nX2hlaWdodCkpIHsKLSsjaWYgZGVmaW5l ZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBn Zng6OlBOR0NvZGVjOjpGT1JNQVRfQkdSQSwKLSsjZWxzZQotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBnZng6OlBOR0NvZGVjOjpGT1JNQVRfQVJHQiwKLSsjZW5kaWYKLSsJCQkgICAgJmRl Y29kZWRfZGF0YSwgJmltZ193aWR0aCwgJmltZ19oZWlnaHQpKSB7Ci0gICAgIHJldHVybiBDYWxj dWxhdGVLTWVhbkNvbG9yT2ZCdWZmZXIoJmRlY29kZWRfZGF0YVswXSwgaW1nX3dpZHRoLCBpbWdf aGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvd2VyX2Jv dW5kLCB1cHBlcl9ib3VuZCwgc2FtcGxlciwgdHJ1ZSk7Ci0gICB9Ci0tLS0gcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3VpL2dmeC9za2JpdG1hcF9vcGVyYXRpb25zX3VuaXR0ZXN0 LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VpL2dmeC9za2JpdG1h cF9vcGVyYXRpb25zX3VuaXR0ZXN0LmNjCi1AQCAtMjM4LDcgKzIzOCw3IEBAIFRFU1QoU2tCaXRt YXBPcGVyYXRpb25zVGVzdCwgQ3JlYXRlSFNMU2hpZnRlZEJpdG1hcEh1ZU9ubHkpIHsKLSAKLSAg IGZvciAoaW50IHkgPSAwLCBpID0gMDsgeSA8IHNyY19oOyB5KyspIHsKLSAgICAgZm9yIChpbnQg eCA9IDA7IHggPCBzcmNfdzsgeCsrKSB7Ci0tICAgICAgKnNyYy5nZXRBZGRyMzIoeCwgeSkgPSBT a0NvbG9yU2V0QVJHQigyNTUsIDAsIDAsIGkgJSAyNTUpOwotKyAgICAgICpzcmMuZ2V0QWRkcjMy KHgsIHkpID0gU2tQYWNrQVJHQjMyKDI1NSwgMCwgMCwgaSAlIDI1NSk7Ci0gICAgICAgaSsrOwot ICAgICB9Ci0gICB9Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VybC91 cmxfY2Fub25faG9zdC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91 cmwvdXJsX2Nhbm9uX2hvc3QuY2MKLUBAIC0xMzUsOCArMTM1LDcgQEAgYm9vbCBEb1NpbXBsZUhv c3QoY29uc3QgSU5DSEFSKiBob3N0LAotICAgICBpZiAoc291cmNlID09ICclJykgewotICAgICAg IC8vIFVuZXNjYXBlIGZpcnN0LCBpZiBwb3NzaWJsZS4KLSAgICAgICAvLyBTb3VyY2Ugd2lsbCBi ZSB1c2VkIG9ubHkgaWYgZGVjb2RlIG9wZXJhdGlvbiB3YXMgc3VjY2Vzc2Z1bC4KLS0gICAgICBp ZiAoIURlY29kZUVzY2FwZWQoaG9zdCwgJmksIGhvc3RfbGVuLAotLSAgICAgICAgICAgICAgICAg ICAgICAgICByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPigmc291cmNlKSkpIHsKLSsg ICAgICBpZiAoIURlY29kZUVzY2FwZWQoaG9zdCwgJmksIGhvc3RfbGVuLCAmc291cmNlKSkgewot ICAgICAgICAgLy8gSW52YWxpZCBlc2NhcGVkIGNoYXJhY3Rlci4gVGhlcmUgaXMgbm90aGluZyB0 aGF0IGNhbiBtYWtlIHRoaXMKLSAgICAgICAgIC8vIGhvc3QgdmFsaWQuIFdlIGFwcGVuZCBhbiBl c2NhcGVkIHBlcmNlbnQgc28gdGhlIFVSTCBsb29rcyByZWFzb25hYmxlCi0gICAgICAgICAvLyBh bmQgbWFyayBhcyBmYWlsZWQuCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3VybC91cmxfY2Fub25faW50ZXJuYWwuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS91cmwvdXJsX2Nhbm9uX2ludGVybmFsLmgKLUBAIC0zMDUsOSArMzA1LDkgQEAgaW5s aW5lIGJvb2wgSXM4Qml0Q2hhcihiYXNlOjpjaGFyMTYgYykgewotICAgcmV0dXJuIGMgPD0gMjU1 OwotIH0KLSAKLS10ZW1wbGF0ZTx0eXBlbmFtZSBDSEFSPgotK3RlbXBsYXRlPHR5cGVuYW1lIENI QVIsIHR5cGVuYW1lIERTVD4KLSBpbmxpbmUgYm9vbCBEZWNvZGVFc2NhcGVkKGNvbnN0IENIQVIq IHNwZWMsIGludCogYmVnaW4sIGludCBlbmQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBjaGFyKiB1bmVzY2FwZWRfdmFsdWUpIHsKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgIERTVCogdW5lc2NhcGVkX3ZhbHVlKSB7Ci0gICBpZiAoKmJlZ2luICsgMyA+IGVuZCB8fAot ICAgICAgICFJczhCaXRDaGFyKHNwZWNbKmJlZ2luICsgMV0pIHx8ICFJczhCaXRDaGFyKHNwZWNb KmJlZ2luICsgMl0pKSB7Ci0gICAgIC8vIEludmFsaWQgZXNjYXBlIHNlcXVlbmNlIGJlY2F1c2Ug dGhlcmUncyBub3QgZW5vdWdoIHJvb20sIG9yIHRoZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUv cGF0Y2hlcy8wMDkzLWNocm9taXVtLXY4LWVsZnYyLnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hl cy8wMDkzLWNocm9taXVtLXY4LWVsZnYyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCBmNTgwYzgxNDY5Ny4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8w MDkzLWNocm9taXVtLXY4LWVsZnYyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBA QAotVGhpcyBmaXhlcyB2OCBvbiBiaWcgZW5kaWFuIHBwYzY0IEVMRnYyLgotLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92OC9zcmMvcHBjL2NvbnN0YW50cy1wcGMuaAotKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92OC9zcmMvcHBjL2NvbnN0YW50cy1w cGMuaAotQEAgLTIxLDcgKzIxLDggQEAKLSAjZW5kaWYKLSAKLSAjaWYgVjhfSE9TVF9BUkNIX1BQ QyAmJiBcCi0tICAgIChWOF9PU19BSVggfHwgKFY4X1RBUkdFVF9BUkNIX1BQQzY0ICYmIFY4X1RB UkdFVF9CSUdfRU5ESUFOKSkKLSsgICAgKFY4X09TX0FJWCB8fCAoVjhfVEFSR0VUX0FSQ0hfUFBD NjQgJiYgXAotKyAgICAgIChWOF9UQVJHRVRfQklHX0VORElBTiAmJiAoIWRlZmluZWQoX0NBTExf RUxGKSB8fCBfQ0FMTF9FTEYgPT0gMSkpKSkKLSAjZGVmaW5lIEFCSV9VU0VTX0ZVTkNUSU9OX0RF U0NSSVBUT1JTIDEKLSAjZWxzZQotICNkZWZpbmUgQUJJX1VTRVNfRlVOQ1RJT05fREVTQ1JJUFRP UlMgMAotQEAgLTMzLDEzICszNCwxNSBAQAotICNkZWZpbmUgQUJJX1BBU1NFU19IQU5ETEVTX0lO X1JFR1MgMAotICNlbmRpZgotIAotLSNpZiAhVjhfSE9TVF9BUkNIX1BQQyB8fCAhVjhfVEFSR0VU X0FSQ0hfUFBDNjQgfHwgVjhfVEFSR0VUX0xJVFRMRV9FTkRJQU4KLSsjaWYgIVY4X0hPU1RfQVJD SF9QUEMgfHwgIVY4X1RBUkdFVF9BUkNIX1BQQzY0IHx8IFwKLSsgICAgKFY4X1RBUkdFVF9MSVRU TEVfRU5ESUFOIHx8IChkZWZpbmVkKF9DQUxMX0VMRikgJiYgX0NBTExfRUxGID09IDIpKQotICNk ZWZpbmUgQUJJX1JFVFVSTlNfT0JKRUNUX1BBSVJTX0lOX1JFR1MgMQotICNlbHNlCi0gI2RlZmlu ZSBBQklfUkVUVVJOU19PQkpFQ1RfUEFJUlNfSU5fUkVHUyAwCi0gI2VuZGlmCi0gCi0tI2lmICFW OF9IT1NUX0FSQ0hfUFBDIHx8IChWOF9UQVJHRVRfQVJDSF9QUEM2NCAmJiBWOF9UQVJHRVRfTElU VExFX0VORElBTikKLSsjaWYgIVY4X0hPU1RfQVJDSF9QUEMgfHwgKFY4X1RBUkdFVF9BUkNIX1BQ QzY0ICYmIFwKLSsgICAgKFY4X1RBUkdFVF9MSVRUTEVfRU5ESUFOIHx8IChkZWZpbmVkKF9DQUxM X0VMRikgJiYgX0NBTExfRUxGID09IDIpKSkKLSAjZGVmaW5lIEFCSV9DQUxMX1ZJQV9JUCAxCi0g I2Vsc2UKLSAjZGVmaW5lIEFCSV9DQUxMX1ZJQV9JUCAwCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3Y4L3NyYy9wcGMvcmVnaXN0ZXItcHBjLmgKLSsrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdjgvc3JjL3BwYy9yZWdpc3Rlci1wcGMuaAotQEAgLTE0 NSw3ICsxNDUsOCBAQCBjb25zdCBpbnQga051bVNhZmVwb2ludFJlZ2lzdGVycyA9IDMyOwotIC8v IFRoZSBmb2xsb3dpbmcgY29uc3RhbnRzIGRlc2NyaWJlIHRoZSBzdGFjayBmcmFtZSBsaW5rYWdl IGFyZWEgYXMKLSAvLyBkZWZpbmVkIGJ5IHRoZSBBQkkuICBOb3RlIHRoYXQga051bVJlcXVpcmVk U3RhY2tGcmFtZVNsb3RzIG11c3QKLSAvLyBzYXRpc2Z5IGFsaWdubWVudCByZXF1aXJlbWVudHMg KHJvdW5kaW5nIHVwIGlmIHJlcXVpcmVkKS4KLS0jaWYgVjhfVEFSR0VUX0FSQ0hfUFBDNjQgJiYg VjhfVEFSR0VUX0xJVFRMRV9FTkRJQU4gIC8vIHBwYzY0bGUgbGludXgKLSsjaWYgVjhfVEFSR0VU X0FSQ0hfUFBDNjQgJiYgKFY4X1RBUkdFVF9MSVRUTEVfRU5ESUFOIHx8IFwKLSsgICAgZGVmaW5l ZChfQ0FMTF9FTEYpICYmIF9DQUxMX0VMRiA9PSAyKQotIC8vIFswXSBiYWNrIGNoYWluCi0gLy8g WzFdIGNvbmRpdGlvbiByZWdpc3RlciBzYXZlIGFyZWEKLSAvLyBbMl0gbGluayByZWdpc3RlciBz YXZlIGFyZWEKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA5NC1iaWctZW5kaWFu LXNraWEtcG9ydGFibGUucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwOTQtYmlnLWVuZGlh bi1za2lhLXBvcnRhYmxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYTI2 OWQzODNkMS4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDk0LWJpZy1l bmRpYW4tc2tpYS1wb3J0YWJsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAK LS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS90 aGlyZF9wYXJ0eS9za2Ntcy9za2Ntcy5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL3RoaXJkX3BhcnR5L3NrY21zL3NrY21zLmNjCi1AQCAt MTgyOCw2ICsxODI4LDE0IEBAIHR5cGVkZWYgZW51bSB7Ci0gICAgICNlbmRpZgotICNlbmRpZgot IAotKy8vIHdpdGggY3VycmVudCBnY2MgOC4zLjAgd2UgZ2V0IGFuIGludGVybmFsIGNvbXBpbGVy IGVycm9yIHdoZW4gY29tcGlsaW5nCi0rLy8gZm9yIHBwYzY0IGJpZyBlbmRpYW4gLSBzbyBzd2l0 Y2ggdG8gcG9ydGFibGUgdW50aWwgdGhpcyBpcyByZXNvbHZlZAotKyNpZiBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pCi0rIyAgaWYgZGVmaW5lZChfX0JJR19FTkRJQU5fXykgJiYgIWRlZmluZWQoU0tD TVNfUE9SVEFCTEUpCi0rIyAgICBkZWZpbmUgU0tDTVNfUE9SVEFCTEUKLSsjICBlbmRpZgotKyNl bmRpZgotKwotICNpZiBkZWZpbmVkKF9fY2xhbmdfXykKLSAgICAgdGVtcGxhdGUgPGludCBOLCB0 eXBlbmFtZSBUPiB1c2luZyBWZWMgPSBUIF9fYXR0cmlidXRlX18oKGV4dF92ZWN0b3JfdHlwZShO KSkpOwotICNlbGlmIGRlZmluZWQoX19HTlVDX18pCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9w YXRjaGVzLzAxMDAtc2FuZGJveC1zY2hlZF9nZXRwYXJhbS5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3Bh dGNoZXMvMDEwMC1zYW5kYm94LXNjaGVkX2dldHBhcmFtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAxNWMzM2E1N2YwMy4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9xdDUv cGF0Y2hlcy8wMTAwLXNhbmRib3gtc2NoZWRfZ2V0cGFyYW0ucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSwyNCArMCwwIEBACi1BbGxvdyBTWVNfc2NoZWRfZ2V0cGFyYW0gYW5kIFNZU19zY2hlZF9n ZXRzY2hlZHVsZXIKLW11c2wgdXNlcyB0aGVtIGZvciBwdGhyZWFkX2dldHNjaGVkcGFyYW0oKQot Ci1zb3VyY2U6IGh0dHBzOi8vZ2l0LmFscGluZWxpbnV4Lm9yZy9hcG9ydHMvY29tbWl0L2NvbW11 bml0eS9jaHJvbWl1bT9pZD01NGFmOWY4YWMyNGY1MmQzODJjNTc1OGUyNDQ1YmYwMjA2ZWZmNDBl Ci0KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2VydmljZXMvc2Vydmlj ZV9tYW5hZ2VyL3NhbmRib3gvbGludXgvYnBmX3JlbmRlcmVyX3BvbGljeV9saW51eC5jYwkyMDE5 LTExLTEyIDIwOjQ4OjIwLjAxMzcyNDY2MSArMDEwMAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS9zZXJ2aWNlcy9zZXJ2aWNlX21hbmFnZXIvc2FuZGJveC9saW51eC9icGZf cmVuZGVyZXJfcG9saWN5X2xpbnV4LmNjLnBhdGNoZWQJMjAxOS0xMS0xMiAyMDo1ODo1Ny4zMzA2 OTU2NzYgKzAxMDAKLUBAIC05MywxMCArOTMsMTYgQEAKLSAgICAgY2FzZSBfX05SX3N5c2luZm86 Ci0gICAgIGNhc2UgX19OUl90aW1lczoKLSAgICAgY2FzZSBfX05SX3VuYW1lOgotKyNpZiAhZGVm aW5lZChfX0dMSUJDX18pCi0rICAgIGNhc2UgX19OUl9zY2hlZF9nZXRwYXJhbToKLSsgICAgY2Fz ZSBfX05SX3NjaGVkX2dldHNjaGVkdWxlcjoKLSsjZW5kaWYKLSAgICAgICByZXR1cm4gQWxsb3co KTsKLSAgICAgY2FzZSBfX05SX3NjaGVkX2dldGFmZmluaXR5OgotKyNpZiBkZWZpbmVkKF9fR0xJ QkNfXykKLSAgICAgY2FzZSBfX05SX3NjaGVkX2dldHBhcmFtOgotICAgICBjYXNlIF9fTlJfc2No ZWRfZ2V0c2NoZWR1bGVyOgotKyNlbmRpZgotICAgICBjYXNlIF9fTlJfc2NoZWRfc2V0c2NoZWR1 bGVyOgotICAgICAgIHJldHVybiBzYW5kYm94OjpSZXN0cmljdFNjaGVkVGFyZ2V0KEdldFBvbGlj eVBpZCgpLCBzeXNubyk7Ci0gICAgIGNhc2UgX19OUl9wcmxpbWl0NjQ6CmRpZmYgLS1naXQgYS9z cmNwa2dzL3F0NS9wYXRjaGVzLzAxMDAtd2F5bGFuZC1jdXJzb3ItZmxpY2tlcmluZy5wYXRjaCBi L3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDEwMC13YXlsYW5kLWN1cnNvci1mbGlja2VyaW5nLnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kYTA5ZTBkNjNhNgotLS0g L2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDEwMC13YXlsYW5kLWN1cnNvci1m bGlja2VyaW5nLnBhdGNoCkBAIC0wLDAgKzEsMTIyIEBACitGcm9tIDM2OTc0OTU1ZDEzNTc4MDcx Mzg3Njk1YWRiMTNhNDdiZTMzZTRkMzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBE YXZpZCBFZG11bmRzb24gPGRhdmlkZWRtdW5kc29uQGtkZS5vcmc+CitEYXRlOiBUaHUsIDI4IE5v diAyMDE5IDAyOjMxOjE3ICswMTAwCitTdWJqZWN0OiBBdm9pZCBhbmltYXRpbmcgc2luZ2xlIGZy YW1lIGN1cnNvcnMKKworQ3VycmVudGx5IHRvIGRldGVybWluZSBpZiBhIGN1cnNvciBpcyBhbmlt YXRlZCBvciBub3Qgd2UgY2hlY2sgdGhlCitjdXJzb3IgdGhlbWUgZGVsYXkuCisKK1RoaXMgZG9l c24ndCB3b3JrIGluIHByYWN0aWNlIGFzIGJ5IGRlZmF1bHQgbWFueSBjdXJzb3IgdGhlbWVzIGhh dmUgYQorZGVsYXkgb2YgNTAgc2V0IGV2ZW4gaWYgdGhleSBkb24ndCBhbmltYXRlLgorCitUaGlz IGNvbWVzIGZyb20geGN1cnNvcmdlbiB3aGljaCBzcGVjaWZpZXMgYSBkZWxheSBvZiA1MG1zIGlm IHRoZXJlCitpc24ndCBhbnl0aGluZyBzZXQgaW4gdGhlIGNvbmZpZy4KKyhodHRwczovL2dpdGh1 Yi5jb20vZnJlZWRlc2t0b3AveGN1cnNvcmdlbi9ibG9iL21hc3Rlci94Y3Vyc29yZ2VuLmMjTDky KQorCitHaXZlbiBtYW55IHRoZW1lcyB3aWxsIGhhdmUgYSBkZWxheSB3ZSBzaG91bGQgYWxzbyBj aGVjayB0aGUgbnVtYmVyIG9mCitpbWFnZXMgaW4gYSBnaXZlbiBjdXJzb3IuCisKK0luIG9yZGVy IHRvIGRvIHRoYXQgd2l0aG91dCBhIGRvdWJsZSBsb29rdXAgUVdheWxhbmRDdXJzb3IgbmVlZGVk IHRvCityZXR1cm4gdGhlIG5hdGl2ZSB3bF9jdXJzb3IsIG5vdCB3bF9jdXJzb3JfaW1hZ2UgYW5k IG1vdmUgdGhlIHJlbGV2YW50Citsb2dpYy4KKworQ2hhbmdlLUlkOiBJZTc4MmFjZTgwNTQ5MTBh ZTc2ZTYxY2FiMzNjZWNhMDM3NzE5NDkyOQorUmV2aWV3ZWQtYnk6IEpvaGFuIEhlbHNpbmcgPGpv aGFuLmhlbHNpbmdAcXQuaW8+CistLS0KKyBzcmMvY2xpZW50L3F3YXlsYW5kY3Vyc29yLmNwcCAg ICAgIHwgMTIgKystLS0tLS0tLS0tCisgc3JjL2NsaWVudC9xd2F5bGFuZGN1cnNvcl9wLmggICAg ICB8ICAzICstLQorIHNyYy9jbGllbnQvcXdheWxhbmRpbnB1dGRldmljZS5jcHAgfCAxNiArKysr KysrKysrKystLS0tCisgMyBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAxNiBkZWxl dGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jbGllbnQvcXdheWxhbmRjdXJzb3IuY3BwIGIv c3JjL2NsaWVudC9xd2F5bGFuZGN1cnNvci5jcHAKK2luZGV4IDQzNTZiMjNhLi4xZDNkODhiZSAx MDA2NDQKKy0tLSBxdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGN1cnNvci5jcHAKKysrKyBx dHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGN1cnNvci5jcHAKK0BAIC0yMTksNyArMjE5LDcg QEAgd2xfY3Vyc29yICpRV2F5bGFuZEN1cnNvclRoZW1lOjpyZXF1ZXN0Q3Vyc29yKFdheWxhbmRD dXJzb3Igc2hhcGUpCisgICAgIHJldHVybiBudWxscHRyOworIH0KKyAKKy06OndsX2N1cnNvcl9p bWFnZSAqUVdheWxhbmRDdXJzb3JUaGVtZTo6Y3Vyc29ySW1hZ2UoUXQ6OkN1cnNvclNoYXBlIHNo YXBlLCB1aW50IG1pbGxpc2Vjb25kc0ludG9BbmltYXRpb24pCisrOjp3bF9jdXJzb3IgKlFXYXls YW5kQ3Vyc29yVGhlbWU6OmN1cnNvcihRdDo6Q3Vyc29yU2hhcGUgc2hhcGUpCisgeworICAgICBz dHJ1Y3Qgd2xfY3Vyc29yICp3YXlsYW5kQ3Vyc29yID0gbnVsbHB0cjsKKyAKK0BAIC0yMzcsMTUg KzIzNyw3IEBAIHdsX2N1cnNvciAqUVdheWxhbmRDdXJzb3JUaGVtZTo6cmVxdWVzdEN1cnNvcihX YXlsYW5kQ3Vyc29yIHNoYXBlKQorICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgIH0KKyAK Ky0gICAgaW50IGZyYW1lID0gd2xfY3Vyc29yX2ZyYW1lKHdheWxhbmRDdXJzb3IsIG1pbGxpc2Vj b25kc0ludG9BbmltYXRpb24pOworLSAgICA6OndsX2N1cnNvcl9pbWFnZSAqaW1hZ2UgPSB3YXls YW5kQ3Vyc29yLT5pbWFnZXNbZnJhbWVdOworLSAgICA6OndsX2J1ZmZlciAqYnVmZmVyID0gd2xf Y3Vyc29yX2ltYWdlX2dldF9idWZmZXIoaW1hZ2UpOworLSAgICBpZiAoIWJ1ZmZlcikgeworLSAg ICAgICAgcUNXYXJuaW5nKGxjUXBhV2F5bGFuZCkgPDwgIkNvdWxkIG5vdCBmaW5kIGJ1ZmZlciBm b3IgY3Vyc29yIjsKKy0gICAgICAgIHJldHVybiBudWxscHRyOworLSAgICB9CistCistICAgIHJl dHVybiBpbWFnZTsKKysgICAgcmV0dXJuIHdheWxhbmRDdXJzb3I7CisgfQorIAorIFFXYXlsYW5k Q3Vyc29yOjpRV2F5bGFuZEN1cnNvcihRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXkpCitkaWZmIC0t Z2l0IGEvc3JjL2NsaWVudC9xd2F5bGFuZGN1cnNvcl9wLmggYi9zcmMvY2xpZW50L3F3YXlsYW5k Y3Vyc29yX3AuaAoraW5kZXggYTQ2MDVmM2QuLjc1MWZmYTY4IDEwMDY0NAorLS0tIHF0d2F5bGFu ZC9zcmMvY2xpZW50L3F3YXlsYW5kY3Vyc29yX3AuaAorKysrIHF0d2F5bGFuZC9zcmMvY2xpZW50 L3F3YXlsYW5kY3Vyc29yX3AuaAorQEAgLTc1LDcgKzc1LDcgQEAgY2xhc3MgUV9XQVlMQU5EX0NM SUVOVF9FWFBPUlQgUVdheWxhbmRDdXJzb3JUaGVtZQorIHB1YmxpYzoKKyAgICAgc3RhdGljIFFX YXlsYW5kQ3Vyc29yVGhlbWUgKmNyZWF0ZShRV2F5bGFuZFNobSAqc2htLCBpbnQgc2l6ZSwgY29u c3QgUVN0cmluZyAmdGhlbWVOYW1lKTsKKyAgICAgflFXYXlsYW5kQ3Vyc29yVGhlbWUoKTsKKy0g ICAgOjp3bF9jdXJzb3JfaW1hZ2UgKmN1cnNvckltYWdlKFF0OjpDdXJzb3JTaGFwZSBzaGFwZSwg dWludCBtaWxsaXNlY29uZHNJbnRvQW5pbWF0aW9uID0gMCk7CisrICAgIDo6d2xfY3Vyc29yICpj dXJzb3IoUXQ6OkN1cnNvclNoYXBlIHNoYXBlKTsKKyAKKyBwcml2YXRlOgorICAgICBlbnVtIFdh eWxhbmRDdXJzb3IgeworQEAgLTEyOSw3ICsxMjksNiBAQCBwdWJsaWM6CisgICAgIHZvaWQgc2V0 UG9zKGNvbnN0IFFQb2ludCAmcG9zKSBvdmVycmlkZTsKKyAKKyAgICAgc3RhdGljIFFTaGFyZWRQ b2ludGVyPFFXYXlsYW5kQnVmZmVyPiBjdXJzb3JCaXRtYXBCdWZmZXIoUVdheWxhbmREaXNwbGF5 ICpkaXNwbGF5LCBjb25zdCBRQ3Vyc29yICpjdXJzb3IpOworLSAgICBzdHJ1Y3Qgd2xfY3Vyc29y X2ltYWdlICpjdXJzb3JJbWFnZShRdDo6Q3Vyc29yU2hhcGUgc2hhcGUpOworIAorIHByaXZhdGU6 CisgICAgIFFXYXlsYW5kRGlzcGxheSAqbURpc3BsYXkgPSBudWxscHRyOworZGlmZiAtLWdpdCBh L3NyYy9jbGllbnQvcXdheWxhbmRpbnB1dGRldmljZS5jcHAgYi9zcmMvY2xpZW50L3F3YXlsYW5k aW5wdXRkZXZpY2UuY3BwCitpbmRleCBhNDA5OGVkZC4uZDgxMjkxOGUgMTAwNjQ0CistLS0gcXR3 YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnB1dGRldmljZS5jcHAKKysrKyBxdHdheWxhbmQv c3JjL2NsaWVudC9xd2F5bGFuZGlucHV0ZGV2aWNlLmNwcAorQEAgLTI4Myw4ICsyODMsOCBAQCB2 b2lkIFFXYXlsYW5kSW5wdXREZXZpY2U6OlBvaW50ZXI6OnVwZGF0ZUN1cnNvclRoZW1lKCkKKyAg ICAgaWYgKCFtQ3Vyc29yLnRoZW1lKQorICAgICAgICAgcmV0dXJuOyAvLyBBIHdhcm5pbmcgaGFz IGFscmVhZHkgYmVlbiBwcmludGVkIGluIGxvYWRDdXJzb3JUaGVtZQorIAorLSAgICBpZiAoYXV0 byAqYXJyb3cgPSBtQ3Vyc29yLnRoZW1lLT5jdXJzb3JJbWFnZShRdDo6QXJyb3dDdXJzb3IpKSB7 CistICAgICAgICBpbnQgYXJyb3dQaXhlbFNpemUgPSBxTWF4KGFycm93LT53aWR0aCwgYXJyb3ct PmhlaWdodCk7IC8vIE5vdCBhbGwgY3Vyc29yIHRoZW1lcyBhcmUgc3F1YXJlCisrICAgIGlmIChh dXRvICphcnJvdyA9IG1DdXJzb3IudGhlbWUtPmN1cnNvcihRdDo6QXJyb3dDdXJzb3IpKSB7Cisr ICAgICAgICBpbnQgYXJyb3dQaXhlbFNpemUgPSBxTWF4KGFycm93LT5pbWFnZXNbMF0tPndpZHRo LCBhcnJvdy0+aW1hZ2VzWzBdLT5oZWlnaHQpOyAvLyBOb3QgYWxsIGN1cnNvciB0aGVtZXMgYXJl IHNxdWFyZQorICAgICAgICAgd2hpbGUgKHNjYWxlID4gMSAmJiBhcnJvd1BpeGVsU2l6ZSAvIHNj YWxlIDwgY3Vyc29yU2l6ZSgpKQorICAgICAgICAgICAgIC0tc2NhbGU7CisgICAgIH0gZWxzZSB7 CitAQCAtMzI2LDEyICszMjYsMjAgQEAgdm9pZCBRV2F5bGFuZElucHV0RGV2aWNlOjpQb2ludGVy Ojp1cGRhdGVDdXJzb3IoKQorIAorICAgICAvLyBTZXQgZnJvbSBzaGFwZSB1c2luZyB0aGVtZQor ICAgICB1aW50IHRpbWUgPSBzZWF0KCktPm1DdXJzb3IuYW5pbWF0aW9uVGltZXIuZWxhcHNlZCgp OworLSAgICBpZiAoc3RydWN0IDo6d2xfY3Vyc29yX2ltYWdlICppbWFnZSA9IG1DdXJzb3IudGhl bWUtPmN1cnNvckltYWdlKHNoYXBlLCB0aW1lKSkgeworKworKyAgICBpZiAoc3RydWN0IDo6d2xf Y3Vyc29yICp3YXlsYW5kQ3Vyc29yID0gbUN1cnNvci50aGVtZS0+Y3Vyc29yKHNoYXBlKSkgewor KyAgICAgICAgaW50IGZyYW1lID0gd2xfY3Vyc29yX2ZyYW1lKHdheWxhbmRDdXJzb3IsIHRpbWUp OworKyAgICAgICAgOjp3bF9jdXJzb3JfaW1hZ2UgKmltYWdlID0gd2F5bGFuZEN1cnNvci0+aW1h Z2VzW2ZyYW1lXTsKKysKKyAgICAgICAgIHN0cnVjdCB3bF9idWZmZXIgKmJ1ZmZlciA9IHdsX2N1 cnNvcl9pbWFnZV9nZXRfYnVmZmVyKGltYWdlKTsKKysgICAgICAgIGlmICghYnVmZmVyKSB7Cisr ICAgICAgICAgICAgcUNXYXJuaW5nKGxjUXBhV2F5bGFuZCkgPDwgIkNvdWxkIG5vdCBmaW5kIGJ1 ZmZlciBmb3IgY3Vyc29yIiA8PCBzaGFwZTsKKysgICAgICAgICAgICByZXR1cm47CisrICAgICAg ICB9CisgICAgICAgICBpbnQgYnVmZmVyU2NhbGUgPSBtQ3Vyc29yLnRoZW1lQnVmZmVyU2NhbGU7 CisgICAgICAgICBRUG9pbnQgaG90c3BvdCA9IFFQb2ludChpbWFnZS0+aG90c3BvdF94LCBpbWFn ZS0+aG90c3BvdF95KSAvIGJ1ZmZlclNjYWxlOworICAgICAgICAgUVNpemUgc2l6ZSA9IFFTaXpl KGltYWdlLT53aWR0aCwgaW1hZ2UtPmhlaWdodCkgLyBidWZmZXJTY2FsZTsKKy0gICAgICAgIGJv b2wgYW5pbWF0ZWQgPSBpbWFnZS0+ZGVsYXkgPiAwOworKyAgICAgICAgYm9vbCBhbmltYXRlZCA9 IHdheWxhbmRDdXJzb3ItPmltYWdlX2NvdW50ID4gMSAmJiBpbWFnZS0+ZGVsYXkgPiAwOworICAg ICAgICAgZ2V0T3JDcmVhdGVDdXJzb3JTdXJmYWNlKCktPnVwZGF0ZShidWZmZXIsIGhvdHNwb3Qs IHNpemUsIGJ1ZmZlclNjYWxlLCBhbmltYXRlZCk7CisgICAgICAgICByZXR1cm47CisgICAgIH0K Ky0tIAorY2dpdCB2MS4yLjEKKwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvdGVtcGxhdGUgYi9z cmNwa2dzL3F0NS90ZW1wbGF0ZQppbmRleCAwMjc3OWEwMjc1MS4uNjgzOTlkMDFiOTQgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvcXQ1L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXQ1L3RlbXBsYXRlCkBA IC0xLDg0ICsxLDMxIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdxdDUnCiBwa2duYW1lPXF0NQot dmVyc2lvbj01LjEzLjIKLXJldmlzaW9uPTIKK3ZlcnNpb249NS4xNC4wCityZXZpc2lvbj0xCiB3 cmtzcmM9InF0LWV2ZXJ5d2hlcmUtc3JjLSR7dmVyc2lvbn0iCi1idWlsZF9zdHlsZT1nbnUtY29u ZmlndXJlCi1ob3N0bWFrZWRlcGVuZHM9ImNtYWtlIGNsYW5nIGZsZXggZ2l0IGdsaWItZGV2ZWwg Z3BlcmYgbmluamEgcGtnLWNvbmZpZwotIHByb3RvYnVmIHB5dGhvbiByZTJjIHJ1YnkiCitidWls ZF9zdHlsZT1tZXRhCitob3N0bWFrZWRlcGVuZHM9ImNtYWtlIGNsYW5nIGZsZXggZ2l0IGdsaWIt ZGV2ZWwgcGtnLWNvbmZpZworIHB5dGhvbiByZTJjIHJ1YnkiCiBtYWtlZGVwZW5kcz0iU0RMMi1k ZXZlbCBWdWxrYW4tSGVhZGVycyBhbHNhLWxpYi1kZXZlbCBkb3VibGUtY29udmVyc2lvbi1kZXZl bAogIGV1ZGV2LWxpYnVkZXYtZGV2ZWwgZmZtcGVnLWRldmVsIGZyZWV0ZHMtZGV2ZWwgZ2xpYi1k ZXZlbCBnc3QtcGx1Z2lucy1iYXNlMS1kZXZlbAotIGd0ayszLWRldmVsIGljdS1kZXZlbCBqc29u Y3BwLWRldmVsIGxpYlh2LWRldmVsIGxpYmJsdWV0b290aC1kZXZlbCBsaWJjYXAtZGV2ZWwKLSBs aWJldmVudC1kZXZlbCBsaWJpbnB1dC1kZXZlbCBsaWJtbmctZGV2ZWwgbGlibXlzcWxjbGllbnQt ZGV2ZWwgbGlicHJveHktZGV2ZWwKLSBsaWJ2cHgtZGV2ZWwgbGlid2VicC1kZXZlbCBsaWJ4c2x0 LWRldmVsIG1pbml6aXAtZGV2ZWwgbnNzLWRldmVsIGN1cHMtZGV2ZWwKKyBndGsrMy1kZXZlbCBp Y3UtZGV2ZWwgbGliWHYtZGV2ZWwgbGliYmx1ZXRvb3RoLWRldmVsIGxpYmNhcC1kZXZlbAorIGxp YmlucHV0LWRldmVsIGxpYm1uZy1kZXZlbCBsaWJteXNxbGNsaWVudC1kZXZlbCBsaWJwcm94eS1k ZXZlbAorIGxpYnZweC1kZXZlbCBsaWJ3ZWJwLWRldmVsIGxpYnhzbHQtZGV2ZWwgY3Vwcy1kZXZl bAogIG9wdXMtZGV2ZWwgcGNpdXRpbHMtZGV2ZWwgcGNyZTItZGV2ZWwgcG9zdGdyZXNxbC1saWJz LWRldmVsCi0gcHJvdG9idWYtZGV2ZWwgcHVsc2VhdWRpby1kZXZlbCBzbmFwcHktZGV2ZWwgdHNs aWItZGV2ZWwKKyBwcm90b2J1Zi1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsIHRzbGliLWRldmVsIGxp YnJlc3NsLWRldmVsCiAgdW5peG9kYmMtZGV2ZWwgeGNiLXV0aWwtaW1hZ2UtZGV2ZWwgeGNiLXV0 aWwta2V5c3ltcy1kZXZlbAogIHhjYi11dGlsLXJlbmRlcnV0aWwtZGV2ZWwgeGNiLXV0aWwtd20t ZGV2ZWwgbGlienN0ZC1kZXZlbCBoYXJmYnV6ei1kZXZlbCIKLWRlcGVuZHM9InF0Y2hvb3NlciIK K2RlcGVuZHM9InF0NS1kYnVzIHF0NS1ndWkgcXQ1LWNvcmUgcXQ1LXdpZGdldHMgcXQ1LW5ldHdv cmsgcXQ1LXhtbAorIHF0NS10ZXN0IHF0NS1zcWwgcXQ1LWNvbmN1cnJlbnQgcXQ1LXByaW50c3Vw cG9ydCBxdDUtb3BlbmdsIgogc2hvcnRfZGVzYz0iQ3Jvc3MtcGxhdGZvcm0gYXBwbGljYXRpb24g YW5kIFVJIGZyYW1ld29yayAoUVQ1KSIKIG1haW50YWluZXI9IkrDvHJnZW4gQnVjaG3DvGxsZXIg PHB1bGxtb2xsQHQtb25saW5lLmRlPiIKIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIsIExHUEwt My4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vcXQuaW8vIgogZGlzdGZpbGVzPSJodHRw Oi8vZG93bmxvYWQucXQuaW8vb2ZmaWNpYWxfcmVsZWFzZXMvcXQvJHt2ZXJzaW9uJS4qfS8ke3Zl cnNpb259L3NpbmdsZS9xdC1ldmVyeXdoZXJlLXNyYy0ke3ZlcnNpb259LnRhci54eiIKLWNoZWNr c3VtPTU1ZTgyNzM1MzZiZTQxZjRmNjMwNjRhNzllNTUyYTIyMTMzODQ4YmI0MTk0MDBiNmZhOGU5 ZmMwZGMwNWRlMDgKK2NoZWNrc3VtPWJlOWE3N2NkNGUxZjlkNzBiNTg2MjFkMDc1M2JlMTllYTQ5 OGU2YjBkYTAzOTg3NTNlNTAzODQyNmY3NmE4YmEKIHJlcGxhY2VzPSJxdDUtZG9jPDUuNi4wIHF0 NS1xdWljazE8NS42LjAgcXQ1LXF1aWNrMS1kZXZlbDw1LjYuMCBxdDUtd2Via2l0PDUuNi4wIHF0 NS13ZWJraXQtZGV2ZWw8NS42LjAKICBxdDUtZW5naW5pbzw1LjcuMSBxdDUtZW5naW5pby1kZXZl bDw1LjcuMSBxdDUtcGx1Z2luLWd0azw1LjcuMSBxdDUtY2FudmFzM2Q8NS4xMy4wIgogCi1idWls ZF9vcHRpb25zPSJ3ZWJlbmdpbmUiCi1kZXNjX29wdGlvbl93ZWJlbmdpbmU9IkJ1aWxkIENocm9t aXVtLWJhc2VkIFdlYkVuZ2luZSBjb21wb25lbnQiCi0KLW1ha2VkZXBlbmRzKz0iIGhhcmZidXp6 LWRldmVsIgotCi1jYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KLQlhcm12NXRlbCopIDs7 ICMgcXR3ZWJlbmdpbmUgdXNlcyBWU00gYXNzZW1ibGVyIGNvbW1hbmRzCi0JcHBjfHBwYy1tdXNs KSA7OyAjIHF0d2ViZW5naW5lIGRvZXMgbm90IHN1cHBvcnQgcHBjIDMyIGJpdAotCSopIGlmIFsg IiRYQlBTX1dPUkRTSVpFIiA9ICIkWEJQU19UQVJHRVRfV09SRFNJWkUiIF07IHRoZW4KLQkJIyB3 ZWJlbmdpbmUgY2FuIGJlIGJ1aWx0IG9ubHkgaWYgd29yZCBzaXplIG1hdGNoZXMKLQkJYnVpbGRf b3B0aW9uc19kZWZhdWx0PSJ3ZWJlbmdpbmUiCi0JZmk7OwotZXNhYwotCi1pZiBbICIkYnVpbGRf b3B0aW9uX3dlYmVuZ2luZSIgXTsgdGhlbgotCSMgdjggcmVxdWlyZXMgbGliYXRvbWljIG9uIHBw YyovczM5MHgvbWlwcyoKLQljYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KLQkJbWlwcyp8 cHBjKikgbWFrZWRlcGVuZHMrPSIgbGliYXRvbWljLWRldmVsIiA7OwotCQkqKSA7OwotCWVzYWMK LQkjIGFsc28gbmVlZCBpdCBvbiBob3N0IHdoZW4gaXQncyBvbmUgb2YgdGhvc2UgYXJjaHMKLQlj YXNlICIkWEJQU19NQUNISU5FIiBpbgotCQltaXBzKnxwcGMqKSBob3N0bWFrZWRlcGVuZHMrPSIg bGliYXRvbWljLWRldmVsIiA7OwotCQkqKSA7OwotCWVzYWMKLWZpCi0KLXN1YnBhY2thZ2VzPSJx dDUtM2QgcXQ1LTNkLWRldmVsIHF0NS1jaGFydHMgcXQ1LWNoYXJ0cy1kZXZlbAotIHF0NS1jb25u ZWN0aXZpdHkgcXQ1LWNvbm5lY3Rpdml0eS1kZXZlbCBxdDUtZGF0YXZpczNkIHF0NS1kYXRhdmlz M2QtZGV2ZWwKLSBxdDUtZGVjbGFyYXRpdmUgcXQ1LWRlY2xhcmF0aXZlLWRldmVsIHF0NS1kZXZl bCBxdDUtZXhhbXBsZXMgcXQ1LWdhbWVwYWQKLSBxdDUtZ2FtZXBhZC1kZXZlbCBxdDUtZ3JhcGhp Y2FsZWZmZWN0cyBxdDUtaG9zdC10b29scyBxdDUtaW1hZ2Vmb3JtYXRzCi0gcXQ1LWxvY2F0aW9u IHF0NS1sb2NhdGlvbi1kZXZlbCBxdDUtbXVsdGltZWRpYSBxdDUtbXVsdGltZWRpYS1kZXZlbAot IHF0NS1uZXR3b3JrYXV0aCBxdDUtbmV0d29ya2F1dGgtZGV2ZWwgcXQ1LXBsdWdpbi1teXNxbCBx dDUtcGx1Z2luLW9kYmMKLSBxdDUtcGx1Z2luLXBnc3FsIHF0NS1wbHVnaW4tc3FsaXRlIHF0NS1w bHVnaW4tdGRzIHF0NS1wdXJjaGFzaW5nCi0gcXQ1LXB1cmNoYXNpbmctZGV2ZWwgcXQ1LXFtYWtl IHF0NS1xdWlja2NvbnRyb2xzIHF0NS1xdWlja2NvbnRyb2xzMgotIHF0NS1xdWlja2NvbnRyb2xz Mi1kZXZlbCBxdDUtcmVtb3Rlb2JqZWN0cyBxdDUtcmVtb3Rlb2JqZWN0cy1kZXZlbAotIHF0NS1z Y3JpcHQgcXQ1LXNjcmlwdC1kZXZlbCBxdDUtc2N4bWwgcXQ1LXNjeG1sLWRldmVsIHF0NS1zZW5z b3JzCi0gcXQ1LXNlbnNvcnMtZGV2ZWwgcXQ1LXNlcmlhbGJ1cyBxdDUtc2VyaWFsYnVzLWRldmVs IHF0NS1zZXJpYWxwb3J0Ci0gcXQ1LXNlcmlhbHBvcnQtZGV2ZWwgcXQ1LXNwZWVjaCBxdDUtc3Bl ZWNoLWRldmVsIHF0NS1zdmcgcXQ1LXN2Zy1kZXZlbAotIHF0NS10b29scyBxdDUtdG9vbHMtZGV2 ZWwgcXQ1LXRyYW5zbGF0aW9ucyBxdDUtdmlydHVhbGtleWJvYXJkCi0gcXQ1LXZpcnR1YWxrZXli b2FyZC1kZXZlbCBxdDUtd2F5bGFuZCBxdDUtd2F5bGFuZC1kZXZlbCBxdDUtd2ViY2hhbm5lbAot IHF0NS13ZWJjaGFubmVsLWRldmVsIHF0NS13ZWJnbHBsdWdpbiBxdDUtd2ViZ2xwbHVnaW4tZGV2 ZWwgcXQ1LXdlYnNvY2tldHMKLSBxdDUtd2Vic29ja2V0cy1kZXZlbCBxdDUtd2VidmlldyBxdDUt d2Vidmlldy1kZXZlbCBxdDUteDExZXh0cmFzCi0gcXQ1LXgxMWV4dHJhcy1kZXZlbCBxdDUteG1s cGF0dGVybnMgcXQ1LXhtbHBhdHRlcm5zLWRldmVsCi0gcXQ1LWxvdHRpZSBxdDUtbG90dGllLWRl dmVsIgotCi1pZiBbICIkYnVpbGRfb3B0aW9uX3dlYmVuZ2luZSIgXTsgdGhlbgotCXN1YnBhY2th Z2VzKz0iIHF0NS13ZWJlbmdpbmUgcXQ1LXdlYmVuZ2luZS1kZXZlbCIKLWZpCi0KLWlmIFsgIiRY QlBTX1dPUkRTSVpFIiAtZXEgMzIgXTsgdGhlbgotCW5vZGVidWc9eWVzICAjIHByZXZlbnQgT09N Ci1maQotCiAjIFdvcmsgYXJvdW5kIFNTTHYzX3tjbGllbnQsc2VydmVyfV9tZXRob2QgbWlzc2lu ZyBpbiBsaWJyZXNzbC0yLjMuMwogQ0ZMQUdTPSItRE9QRU5TU0xfTk9fUFNLIC1ET1BFTlNTTF9O T19ORVhUUFJPVE9ORUciCiBDWFhGTEFHUz0iJHtDRkxBR1N9IC1Xbm8tZGVwcmVjYXRlZC1kZWNs YXJhdGlvbnMgLVduby1jbGFzcy1tZW1hY2Nlc3MgLVduby1wYWNrZWQtbm90LWFsaWduZWQiCkBA IC05MCwyNiArMzcsOCBAQCBpZiBbICIkQ1JPU1NfQlVJTEQiIF07IHRoZW4KIAkjIHdheWxhbmQt ZGV2ZWwgY29udGFpbnMgL3Vzci9iaW4vd2F5bGFuZC1zY2FubmVyCiAJaG9zdG1ha2VkZXBlbmRz Kz0iIGljdS1kZXZlbCB3YXlsYW5kLWRldmVsIHpsaWItZGV2ZWwiCiAJaG9zdG1ha2VkZXBlbmRz Kz0iIHBvc3RncmVzcWwtbGlicy1kZXZlbCIKLQkjIENyb3NzIGJ1aWxkaW5nIHF0d2ViZW5naW5l IHJlcXVpcmVzIHNvbWUgbW9yZSBob3N0IHBhY2thZ2VzCi0JaWYgWyAiJGJ1aWxkX29wdGlvbl93 ZWJlbmdpbmUiIF07IHRoZW4KLQkJaG9zdG1ha2VkZXBlbmRzKz0iIG5zcy1kZXZlbCBsaWJldmVu dC1kZXZlbCIKLQlmaQogZmkKIAotX2Jvb3RzdHJhcF9nbigpIHsKLQkjIEJvb3RzdHJhcCBnbiAo Z2VuZXJhdGUgbmluamEpCi0JZWNobyAiQm9vdHN0cmFwcGluZyAnZ24nIgotCWNkICR7d3Jrc3Jj fS9xdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvZ24KLQlDRkxBR1M9IiRDRkxBR1NfaG9zdCIgQ1hY RkxBR1M9IiRDWFhGTEFHU19ob3N0IiBMREZMQUdTPSIkTERGTEFHU19ob3N0IiBcCi0JUEtHQ09O RklHPS91c3IvYmluL3BrZ2NvbmZpZyBQS0dfQ09ORklHX1BBVEg9Ii91c3IvbGliL3BrZ2NvbmZp ZzovdXNyL3NoYXJlL3BrZ2NvbmZpZyIgXAotCQlweXRob24yIGJ1aWxkL2dlbi5weSAtLW5vLWxh c3QtY29tbWl0LXBvc2l0aW9uIC0tb3V0LXBhdGggXAotCQkJJHt3cmtzcmN9L3F0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9nbi9vdXQvUmVsZWFzZSAtLWNjICIkQ0NfaG9zdCIgXAotCQkJLS1jeHgg IiRDWFhfaG9zdCIgLS1sZCAiJENYWF9ob3N0IiAtLWFyICIkQVJfaG9zdCIKLQluaW5qYSAtQyBv dXQvUmVsZWFzZSBnbgotCWNkICR7d3Jrc3JjfQotfQotCi0KIF9jbGVhbnVwX3dya3NyY19sZWFr KCkgewogCWlmIFsgLWQgIiR7UEtHREVTVERJUn0vdXNyL2xpYi9jbWFrZSIgXTsgdGhlbgogCQkj IFJlcGxhY2UgcmVmZXJlbmNlcyB0byAke3dya3NyY30gaW4gY21ha2UgZmlsZXMKQEAgLTE2NCw2 ICs5MywxMSBAQCBfaW5zdGFsbF9kZXZlbCgpIHsKIAlsb2NhbCBtb2R1bGU9JDEKIAljZCAke3dy a3NyY30vJHttb2R1bGV9CiAJbWFrZSBJTlNUQUxMX1JPT1Q9JHtQS0dERVNURElSfSBpbnN0YWxs CisJdm1rZGlyIHVzci9saWIvcXQ1L21rc3BlY3MvbW9kdWxlcworCWlmIFsgLWQgIiR7UEtHREVT VERJUn0ke3dya3NyY30vaG9zdC9ta3NwZWNzL21vZHVsZXMiIF07IHRoZW4KKwkJbXYgLW52ICR7 UEtHREVTVERJUn0ke3dya3NyY30vaG9zdC9ta3NwZWNzL21vZHVsZXMvKiBcCisJCQkke1BLR0RF U1RESVJ9L3Vzci9saWIvcXQ1L21rc3BlY3MvbW9kdWxlcy8KKwlmaQogCXJtIC1yZiAke1BLR0RF U1RESVJ9L2J1aWxkZGlyCiAJcm0gLXJmICR7UEtHREVTVERJUn0vdXNyL3NoYXJlCiAJcm0gLXJm ICR7UEtHREVTVERJUn0vdXNyL2xpYi9xdDUvYmluCkBAIC0yMzQsMzIgKzE2OCw2IEBAIF9tc2df Y3Jvc3MoKSB7CiBkb19jb25maWd1cmUoKSB7CiAJbG9jYWwgb3B0cyBzcGVjCiAKLQkjIENvbXBh dGliaWxpdHkgZnVuY3Rpb25zIHJlc19uaW5pdCgpIGFuZCByZXNfbmNsb3NlKCkgZm9yIG11c2wg bGliYwotCWNwICR7RklMRVNESVJ9L3Jlc29sdl9jb21wYXQuaCAke3dya3NyY30vcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL25ldC9kbnMKLQotCWNhc2UgIiRYQlBTX1RBUkdFVF9N QUNISU5FIiBpbgotCWFybXY1Knxhcm12NiopCSMgRGlzYWJsZSAieWllbGQiIGFzc2VtYmxlciBp bnN0cnVjdGlvbgotCQlzZWQgLWkgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jh c2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3Ivc3Bpbl9sb2NrLmNjIFwKLQkJCXF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9wZGZpdW0vdGhpcmRfcGFy dHkvYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9zcGluX2xvY2suY2MgXAotCQkJ LWUgJ3M7InlpZWxkIjsibm9wIjsnCi0JCTs7Ci0JZXNhYwotCi0JY2FzZSAiJFhCUFNfVEFSR0VU X01BQ0hJTkUiIGluCi0JKi1tdXNsKQotCQkjIFBhdGNoIC4uLi9saW51eC8qL2NvbmZpZy57aCxh c219IHRvIGRlZmluZSBIQVZFX1NZU0NUTCAwCi0JCWxvY2FsIGNvbmZpZyBjaHJvbWl1bT0ke3dy a3NyY30vcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtCi0JCWZvciBjb25maWcgaW4g JChmaW5kICR7Y2hyb21pdW19L3RoaXJkX3BhcnR5L2ZmbXBlZy9jaHJvbWl1bS9jb25maWcgLW5h bWUgImNvbmZpZ1wuKiIgfCBncmVwIGxpbnV4KTsgZG8KLQkJCXNlZCAtaSAke2NvbmZpZ30gLWUg InM7SEFWRV9TWVNDVEwgMTtIQVZFX1NZU0NUTCAwOyIKLQkJZG9uZQotCQkjIERvIG5vdCB1c2Ug YWxsb2NhdG9yIHNoaW0gKGluY29tcGF0aWJsZSB3aXRoIG11c2wgbGliYykKLQkJc2VkIC1pIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9idWlsZC9jb25maWcvYWxsb2NhdG9yLmdu aSBcCi0JCQktZSAicztcKHVzZV9hbGxvY2F0b3Jfc2hpbVwpID0gLio7XDEgPSBmYWxzZTsiCi0J CSMgRGVmaW5lIHRvIHNldCAyIE1pQiBzdGFjayBzaXplIGZvciBxdGhyZWFkCi0JCWV4cG9ydCBD WFhGTEFHUys9IiAtRF9QT1NJWF9USFJFQURfQVRUUl9TVEFDS1NJWkU9MjA5NzE1MiIKLQkJOzsK LQllc2FjCi0KIAkjIENyb3NzIGJ1aWxkIHBhdGNoZXMKIAlpZiBbICIkQ1JPU1NfQlVJTEQiIF07 IHRoZW4KIAkJIyBUaGlzIGFsc28gc2V0cyBkZWZhdWx0IHtDLENYWCxMRH1GTEFHUyBmb3IgcHJv amVjdHMgYnVpbHQgdXNpbmcgcW1ha2UKQEAgLTI3MiwyOCArMTgwLDYgQEAgZG9fY29uZmlndXJl KCkgewogCQlmb3IgZCBpbiAkKGxzICR7d3Jrc3JjfS9xdGJhc2UvaW5jbHVkZSk7IGRvCiAJCQls biAtc2Z2ICR7dmVyc2lvbn0vJHtkfS9wcml2YXRlIHF0YmFzZS9pbmNsdWRlLyR7ZH0vcHJpdmF0 ZQogCQlkb25lCi0JCWlmIFsgIiRidWlsZF9vcHRpb25fd2ViZW5naW5lIiBdOyB0aGVuCi0JCQlf Ym9vdHN0cmFwX2duCi0JCWZpCi0KLQkJY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCi0J CW1pcHMqKQkjIHNnaWRlZnMuaCBpcyBpbiAvdXNyL2luY2x1ZGUvYXNtCi0JCQlmb3IgZiBpbiBc Ci0JCQkJcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2xzcy9s aW51eF9zeXNjYWxsX3N1cHBvcnQuaCBcCi0JCQkJcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vYW5kcm9pZC9p bmNsdWRlL2FzbS1taXBzL2ZwcmVnZGVmLmggXAotCQkJCXF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL2FuZHJv aWQvaW5jbHVkZS9hc20tbWlwcy9yZWdkZWYuaCBcCi0JCQkJcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vYW5k cm9pZC9pbmNsdWRlL2FzbS1taXBzL2FzbS5oIFwKLQkJCQlxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvdGNtYWxsb2MvdmVuZG9yL3NyYy9iYXNlL2xpbnV4X3N5 c2NhbGxfc3VwcG9ydC5oIFwKLQkJCQlxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvdGNtYWxsb2MvY2hyb21pdW0vc3JjL2Jhc2UvbGludXhfc3lzY2FsbF9zdXBw b3J0LmggXAotCQkJCXF0c2NyaXB0L3NyYy8zcmRwYXJ0eS9qYXZhc2NyaXB0Y29yZS9KYXZhU2Ny aXB0Q29yZS93dGYvUGxhdGZvcm0uaDsgZG8KLQkJCQlzZWQgLWkgJGYgLWUgInM7PHNnaWRlZnMu aD47PGFzbS9zZ2lkZWZzLmg+OyIKLQkJCWRvbmUKLQkJCSMgQXNzdW1lIHRoYXQgUkdCQSBvcmRl ciBpcyBjb3JyZWN0IGZvciBiaWcgZW5kaWFuIENQVXMKLQkJCXNlZCAtaSBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vc2tpYS9jb25maWcvU2tVc2VyQ29uZmlnLmggXAotCQkJCS1l ICcvI2Vycm9yIFJlYWQgdGhlIGNvbW1lbnQgYXQgdGhpcyBsb2NhdGlvbi9kJwotCQkJOzsKLQkJ ZXNhYwotCQlwYXRjaCAtTnAwIDwgJHtGSUxFU0RJUn0vMDA5MC1oYXJkLWRpc2FibGUtcW1sY2hh Y2hlZ2VuLnBhdGNoCiAJZWxzZQogCQkjIHFtYWtlIHtDWFgsTH1GTEFHUyBwYXRjaGVzCiAJCXNl ZCAtaSAtZSAic3xeXChDWFhGTEFHUyA9LipcKXxcMSAke0NYWEZMQUdTfXwiIFwKQEAgLTM0MSwy OSArMjI3LDEwIEBAIGRvX2NvbmZpZ3VyZSgpIHsKIAlvcHRzKz0iIC1zeXN0ZW0temxpYiIKIAlv cHRzKz0iIC1zeXN0ZW0tc3FsaXRlIgogCW9wdHMrPSIgLXN5c3RlbS1oYXJmYnV6eiIKLQkjIFJl bHkgb24gYXV0byBkZXRlY3Rpb24gKGZhaWxzIGlmIGZvcmNlZCBmb3IgY3Jvc3MgYnVpbGRzKQot CWlmIFsgIiRidWlsZF9vcHRpb25fd2ViZW5naW5lIiBdOyB0aGVuCi0JCSMgb3B0cys9IiAtd2Vi ZW5naW5lLWFsc2EiCi0JCW9wdHMrPSIgLW5vLXdlYmVuZ2luZS1lbWJlZGRlZC1idWlsZCIKLQkJ b3B0cys9IiAtd2ViZW5naW5lLWljdSIKLQkJb3B0cys9IiAtd2ViZW5naW5lLWZmbXBlZyIKLQkJ b3B0cys9IiAtd2ViZW5naW5lLW9wdXMiCi0JCW9wdHMrPSIgLXdlYmVuZ2luZS13ZWJwIgotCQlv cHRzKz0iIC13ZWJlbmdpbmUtcGVwcGVyLXBsdWdpbnMiCi0JCW9wdHMrPSIgLXdlYmVuZ2luZS1w cmludGluZy1hbmQtcGRmIgotCQlvcHRzKz0iIC13ZWJlbmdpbmUtcHJvcHJpZXRhcnktY29kZWNz IgotCQlvcHRzKz0iIC13ZWJlbmdpbmUtcHVsc2VhdWRpbyIKLQkJb3B0cys9IiAtd2ViZW5naW5l LXNwZWxsY2hlY2tlciIKLQkJb3B0cys9IiAtd2ViZW5naW5lLXdlYnJ0YyIKLQkJb3B0cys9IiAt d2ViZW5naW5lLWdlb2xvY2F0aW9uIgotCQlvcHRzKz0iIC13ZWJlbmdpbmUtdjgtc25hcHNob3Qi Ci0JZmkKKwlvcHRzKz0iIC1uby1mZWF0dXJlLWVnbGZzX2JyY20iICMgbWlzc2luZyBpbmNsdWRl IHBhdGgKIAlvcHRzKz0iIC1zaWxlbnQiCiAJIyBvcHRzKz0iIC12IgotCSMgbWFrZSBzdXJlIHRv IGRpc2FibGUgd2ViZW5naW5lIG9uIHBsYXRmb3JtcyB0aGF0IHdlIGRvbid0IGJ1aWxkIGl0IGZv cgotCWlmIFsgLXogIiRidWlsZF9vcHRpb25fd2ViZW5naW5lIiBdOyB0aGVuCi0JCW9wdHMrPSIg LXNraXAgcXR3ZWJlbmdpbmUiCi0JZmkKKwlvcHRzKz0iIC1za2lwIHF0d2ViZW5naW5lIgogCUxE RkxBR1MrPSIgLVdsLC0tbm8ta2VlcC1tZW1vcnkiICAjIG5lZWRzIG1vcmUgdGhhbiA4R0IgUkFN IGVsc2UKIAlpZiBbICIkQ1JPU1NfQlVJTEQiIF07IHRoZW4KIAkJc3BlYz12b2lkLSR7WEJQU19D Uk9TU19UUklQTEVUfS1nKysKQEAgLTM3MywzMyArMjQwLDEzIEBAIGRvX2NvbmZpZ3VyZSgpIHsK IAkJb3B0cys9IiAtc3lzcm9vdCAke1hCUFNfQ1JPU1NfQkFTRX0iCiAJCW9wdHMrPSIgLWhvc3Rw cmVmaXggaG9zdCIKIAkJb3B0cys9IiAtZXh0cHJlZml4IC91c3IiCi0JCWNhc2UgIiRYQlBTX1RB UkdFVF9NQUNISU5FIiBpbgotCQlhcm0qfG1pcHMqKQotCQkJaWYgWyAiJGJ1aWxkX29wdGlvbl93 ZWJlbmdpbmUiIF07IHRoZW4KLQkJCQkjIFY4IHNuYXBzaG90IGNhbid0IGJlIGJ1aWx0IHdpdGgg YSA2NCBiaXQgaG9zdCBjb21waWxlcgotCQkJCW9wdHMrPSIgLW5vLXdlYmVuZ2luZS12OC1zbmFw c2hvdCIKLQkJCWZpCi0JCQk7OwotCQllc2FjCi0JCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5F IiBpbgotCQlhYXJjaDY0Knxhcm12NyopCi0JCQlzZWQgLWkgJHt3cmtzcmN9L3F0d2ViZW5naW5l L3NyYy9jb3JlL2NvbmZpZy9saW51eC5wcmkgXAotCQkJCS1lICIvYXJtX3VzZV9uZW9uPS9zO2Zh bHNlO3RydWU7IgotCQkJOzsKLQkJYXJtKikKLQkJCXNlZCAtaSAke3dya3NyY30vcXR3ZWJlbmdp bmUvc3JjL2NvcmUvY29uZmlnL2xpbnV4LnByaSBcCi0JCQkJLWUgIi9hcm1fdXNlX25lb249L3M7 dHJ1ZTtmYWxzZTsiCi0KLQkJCTs7Ci0JCWVzYWMKLQkJc2VkIC1pICR7d3Jrc3JjfS9xdHdlYmVu Z2luZS9zcmMvY29yZS9jb25maWcvbGludXgucHJpIFwKLQkJCS1lICIvZXF1YWxzKE1BUk1WL3M7 dHJ1ZTtmYWxzZTsiCiAKIAkJIyBNYWtlIHN1cmUgbGliUXQ1RGVzaWduZXIgaXMgYnVpbHQKIAkJ Y3AgLXYgJHtGSUxFU0RJUn0vcXR0b29sc19zcmMucHJvIHF0dG9vbHMvc3JjL3NyYy5wcm8KIAkJ Y3AgLXYgJHtGSUxFU0RJUn0vZGVzaWduZXJfc3JjLnBybyBxdHRvb2xzL3NyYy9kZXNpZ25lci9z cmMvc3JjLnBybwogCQljcCAtdiAke0ZJTEVTRElSfS9hc3Npc3RhbnQucHJvIHF0dG9vbHMvc3Jj L2Fzc2lzdGFudC9hc3Npc3RhbnQucHJvCiAJCWNwIC12ICR7RklMRVNESVJ9L2xpbmd1aXN0LnBy byBxdHRvb2xzL3NyYy9saW5ndWlzdC9saW5ndWlzdC5wcm8KKwkJY3AgLXYgJHtGSUxFU0RJUn0v dWl0b29scy5wcm8gcXR0b29scy9zcmMvZGVzaWduZXIvc3JjL3VpdG9vbHMvdWl0b29scy5wcm8K IAlmaQogCiAJQ0M9ImNjIiBDWFg9ImMrKyIgQ1BQPSJjcHAiIExEPSJjKysiIEFSPSJhciIgQVM9 ImFzIiBOTT0ibm0iIFwKQEAgLTQxMiwxMCArMjU5LDEwIEBAIGRvX2NvbmZpZ3VyZSgpIHsKIH0K IAogZG9fYnVpbGQoKSB7Ci0JZXhwb3J0IE5JTkpBSk9CUz0ke21ha2Vqb2JzfQogCSMgUnVuIG1h a2UgdHdpY2UgYmVjYXVzZSBzb21ldGltZXMgYSBmaWxlICJjaHJvbWUvZ3JpdC9nZW5lcmF0ZWRf cmVzb3VyY2VzLmgiCiAJIyBpcyBub3QgeWV0IHJlYWR5IHdoZW4gaXQgaXMgdG8gYmUgaW5jbHVk ZWQuIFJlcGVhdGluZyBtYWtlIHdvcmtzIGFyb3VuZCB0aGF0CiAJIyBwcm9ibGVtIHdpdGhvdXQg aGF2aW5nIHRvIHJlc29ydCB0byBkaXNhYmxlX3BhcmFsbGVsX2J1aWxkPXllcworCSMgb3Igc29t ZSBvdGhlciBmaWxlcwogCW1ha2UgJHttYWtlam9ic30gfHwgbWFrZSAke21ha2Vqb2JzfQogfQog CkBAIC00ODcsMTIgKzMzNCwxNSBAQCBkb19pbnN0YWxsKCkgewogCQkjCiAJCWRpcnMrPSIgcXRk ZWNsYXJhdGl2ZS90b29scy9xbWxtaW4iCiAJCWRpcnMrPSIgcXRkZWNsYXJhdGl2ZS90b29scy9x bWxsaW50IgorCQlkaXJzKz0iIHF0ZGVjbGFyYXRpdmUvdG9vbHMvcW1sY2FjaGVnZW4iCiAJCWRp cnMrPSIgcXRkZWNsYXJhdGl2ZS90b29scy9xbWxpbXBvcnRzY2FubmVyIgogCQlkaXJzKz0iIHF0 YmFzZS9zcmMvdG9vbHMvbW9jIgogCQlkaXJzKz0iIHF0YmFzZS9zcmMvdG9vbHMvcmNjIgogCQlk aXJzKz0iIHF0YmFzZS9zcmMvdG9vbHMvdWljIgogCQlkaXJzKz0iIHF0YmFzZS9zcmMvdG9vbHMv cWRidXNjcHAyeG1sIgogCQlkaXJzKz0iIHF0YmFzZS9zcmMvdG9vbHMvcWRidXN4bWwyY3BwIgor CQlkaXJzKz0iIHF0YmFzZS9zcmMvdG9vbHMvcXZrZ2VuIgorCQlkaXJzKz0iIHF0YmFzZS9zcmMv dG9vbHMvdHJhY2VnZW4iCiAJCWRpcnMrPSIgcXRiYXNlL3NyYy90b29scy9xbGFsciIKIAkJZGly cys9IiBxdDNkL3Rvb2xzL3FnbHRmIgogCQlkaXJzKz0iIHF0cmVtb3Rlb2JqZWN0cy90b29scy9y ZXBjIgpAQCAtNTY0LDYgKzQxNCwxMDIgQEAgZG9faW5zdGFsbCgpIHsKIAlybSAtcmYgJHtERVNU RElSfS9idWlsZGRpcgogfQogCitxdDUtZ3VpX3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYys9IiAt IEd1aSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGliUXQ1R3VpLnNvKiIK KwkJdm1vdmUgInVzci9saWIvbGliUXQ1WGNiUXBhLnNvKiIKKwkJdm1vdmUgInVzci9saWIvbGli UXQ1RWdsRlNEZXZpY2VJbnRlZ3JhdGlvbi5zbyoiCisJCXZtb3ZlICJ1c3IvbGliL2xpYlF0NUVn bEZzS21zU3VwcG9ydC5zbyoiCisJCXZtb3ZlIHVzci9saWIvcXQ1L3BsdWdpbnMvZ2VuZXJpYwor CQl2bW92ZSB1c3IvbGliL3F0NS9wbHVnaW5zL3BsYXRmb3JtcworCQl2bW92ZSB1c3IvbGliL3F0 NS9wbHVnaW5zL3hjYmdsaW50ZWdyYXRpb25zCisJCXZtb3ZlIHVzci9saWIvcXQ1L3BsdWdpbnMv aW1hZ2Vmb3JtYXRzCisJCXZtb3ZlIHVzci9saWIvcXQ1L3BsdWdpbnMvZWdsZGV2aWNlaW50ZWdy YXRpb25zCisJCXZtb3ZlIHVzci9saWIvcXQ1L3BsdWdpbnMvcGxhdGZvcm1pbnB1dGNvbnRleHRz CisJCXZtb3ZlIHVzci9saWIvcXQ1L3BsdWdpbnMvcGxhdGZvcm10aGVtZXMKKwl9Cit9CisKK3F0 NS1kYnVzX3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYys9IiAtIERCdXMiCisJcGtnX2luc3RhbGwo KSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYlF0NURCdXMuc28qIgorCX0KK30KKworcXQ1LWNvcmVf cGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjKz0iIC0gQ29yZSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJ dm1vdmUgInVzci9saWIvbGliUXQ1Q29yZS5zbyoiCisJfQorfQorCitxdDUtb3BlbmdsX3BhY2th Z2UoKSB7CisJc2hvcnRfZGVzYys9IiAtIE9wZW5HTCIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1v dmUgInVzci9saWIvbGliUXQ1T3BlbkdMLnNvKiIKKwl9Cit9CisKK3F0NS1wcmludHN1cHBvcnRf cGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjKz0iIC0gUHJpbnQgU3VwcG9ydCIKKwlwa2dfaW5zdGFs bCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGliUXQ1UHJpbnRTdXBwb3J0LnNvKiIKKwkJdm1vdmUg dXNyL2xpYi9xdDUvcGx1Z2lucy9wcmludHN1cHBvcnQKKwl9Cit9CisKK3F0NS1jb25jdXJyZW50 X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYys9IiAtIENvbmN1cnJlbmN5IgorCXBrZ19pbnN0YWxs KCkgeworCQl2bW92ZSAidXNyL2xpYi9saWJRdDVDb25jdXJyZW50LnNvKiIKKwl9Cit9CisKK3F0 NS13aWRnZXRzX3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYys9IiAtIFdpZGdldHMiCisJcGtnX2lu c3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYlF0NVdpZGdldHMuc28qIgorCX0KK30KKwor cXQ1LW5ldHdvcmtfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjKz0iIC0gTmV0d29yayIKKwlwa2df aW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGliUXQ1TmV0d29yay5zbyoiCisJCXZtb3Zl IHVzci9saWIvcXQ1L3BsdWdpbnMvYmVhcmVyCisJfQorfQorCitxdDUtc3FsX3BhY2thZ2UoKSB7 CisJc2hvcnRfZGVzYys9IiAtIFNxbCIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9s aWIvbGliUXQ1U3FsLnNvKiIKKwl9Cit9CisKK3F0NS10ZXN0X3BhY2thZ2UoKSB7CisJc2hvcnRf ZGVzYys9IiAtIFRlc3QiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYlF0 NVRlc3Quc28qIgorCX0KK30KKworcXQ1LXhtbF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2MrPSIg LSBYbWwiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYlF0NVhtbC5zbyoi CisJfQorfQorCitxdDUtYmFzZS1kb2NzX3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYys9IiAtIERv Y3VtZW50YXRpb24iCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlIHVzci9zaGFyZS9kb2MvcXQ1 CisJfQorfQorCiBxdDUtM2QtZGV2ZWxfcGFja2FnZSgpIHsKIAlzaG9ydF9kZXNjKz0iIC0gQysr IGFuZCBRTUwgQVBJcyBmb3IgM0QgZ3JhcGhpY3MgKGRldmVsb3BtZW50KSIKIAlkZXBlbmRzPSJx dDUtM2QtJHt2ZXJzaW9ufV8ke3JldmlzaW9ufSBxdDUtZGV2ZWwtJHt2ZXJzaW9ufV8ke3Jldmlz aW9ufSIKQEAgLTYzNyw3ICs1ODMsNyBAQCBxdDUtZGVjbGFyYXRpdmVfcGFja2FnZSgpIHsKIAlz aG9ydF9kZXNjKz0iIC0gRGVjbGFyYXRpdmUgY29tcG9uZW50IgogCXBrZ19pbnN0YWxsKCkgewog CQlfaW5zdGFsbF9zdWJwa2cgcXRkZWNsYXJhdGl2ZQotCQlfbW92ZV90YXJnZXRfYmluYXJpZXMg cW1sbWluIHFtbGxpbnQgcW1saW1wb3J0c2Nhbm5lcgorCQlfbW92ZV90YXJnZXRfYmluYXJpZXMg cW1sbWluIHFtbGxpbnQgcW1saW1wb3J0c2Nhbm5lciBxbWxjYWNoZWdlbgogCX0KIH0KIApAQCAt Nzg0LDYgKzczMCwxMyBAQCBxdDUtcXVpY2tjb250cm9sczJfcGFja2FnZSgpIHsKIAl9CiB9CiAK K3F0NS1xdWlja3RpbWVsaW5lX3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYys9IiAtIEtleWZyYW1l LWJhc2VkIGFuaW1hdGlvbnMiCisJcGtnX2luc3RhbGwoKSB7CisJCV9pbnN0YWxsX3N1YnBrZyBx dHF1aWNrdGltZWxpbmUKKwl9Cit9CisKIHF0NS1yZW1vdGVvYmplY3RzLWRldmVsX3BhY2thZ2Uo KSB7CiAJc2hvcnRfZGVzYys9IiAtIFJlbW90ZSBPYmplY3RzIChkZXZlbG9wbWVudCkiCiAJZGVw ZW5kcz0icXQ1LXJlbW90ZW9iamVjdHMtJHt2ZXJzaW9ufV8ke3JldmlzaW9ufSBxdDUtZGV2ZWwt JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKQEAgLTk1MiwyMSArOTA1LDYgQEAgcXQ1LXdlYmNoYW5u ZWxfcGFja2FnZSgpIHsKIAl9CiB9CiAKLXF0NS13ZWJlbmdpbmUtZGV2ZWxfcGFja2FnZSgpIHsK LQlzaG9ydF9kZXNjKz0iIC0gV2ViRW5naW5lIGNvbXBvbmVudCAoZGV2ZWxvcG1lbnQpIgotCWRl cGVuZHM9InF0NS13ZWJlbmdpbmUtJHt2ZXJzaW9ufV8ke3JldmlzaW9ufSBxdDUtZGV2ZWwtJHt2 ZXJzaW9ufV8ke3JldmlzaW9ufSIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJX2luc3RhbGxfZGV2ZWwg cXR3ZWJlbmdpbmUKLQl9Ci19Ci0KLXF0NS13ZWJlbmdpbmVfcGFja2FnZSgpIHsKLQlzaG9ydF9k ZXNjKz0iIC0gV2ViRW5naW5lIGNvbXBvbmVudCIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJX2luc3Rh bGxfc3VicGtnIHF0d2ViZW5naW5lCi0JfQotfQotCiBxdDUtd2ViZ2xwbHVnaW4tZGV2ZWxfcGFj a2FnZSgpIHsKIAlzaG9ydF9kZXNjKz0iIC0gV2ViR0wgcGx1Z2luIChkZXZlbG9wbWVudCkiCiAJ ZGVwZW5kcz0icXQ1LXdlYmdscGx1Z2luLSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0gcXQ1LWRldmVs LSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCkBAIC0xMDM3LDYgKzk3NSw3IEBAIHF0NS14bWxwYXR0 ZXJucy1kZXZlbF9wYWNrYWdlKCkgewogCiBxdDUteG1scGF0dGVybnNfcGFja2FnZSgpIHsKIAlz aG9ydF9kZXNjKz0iIC0gWE1MIGNvbXBvbmVudHMiCisJZGVwZW5kcz0icXRjaG9vc2VyIgogCXBr Z19pbnN0YWxsKCkgewogCQlfaW5zdGFsbF9zdWJwa2cgcXR4bWxwYXR0ZXJucwogCX0KQEAgLTEw NTEsMTIgKzk5MCwxMyBAQCBxdDUtdHJhbnNsYXRpb25zX3BhY2thZ2UoKSB7CiAKIHF0NS1ob3N0 LXRvb2xzX3BhY2thZ2UoKSB7CiAJc2hvcnRfZGVzYys9IiAtIFRvb2xzIHJlcXVpcmVkIHdoZW4g Y3Jvc3MgY29tcGlsaW5nIgorCWRlcGVuZHM9InF0Y2hvb3NlciIKIAlwa2dfaW5zdGFsbCgpIHsK IAkJbG9jYWwgZGVzdD0ke1hCUFNfREVTVERJUn0vJHtYQlBTX0NST1NTX1RSSVBMRVR9L3F0NS10 b29scy0ke3ZlcnNpb259CiAJCXZta2RpciB1c3IvbGliL3F0NS9iaW4KIAkJdm1rZGlyIHVzci9i aW4KLQkJZm9yIGYgaW4gbW9jIHJjYyB1aWMgcWxhbHIgcWRidXNjcHAyeG1sIHFkYnVzeG1sMmNw cCBcCi0JCQlsY29udmVydCBsdXBkYXRlIGx1cGRhdGUtcHJvIGxwcm9kdW1wIGxyZWxlYXNlIGxy ZWxlYXNlLXBybzsgZG8KKwkJZm9yIGYgaW4gbW9jIHJjYyB1aWMgcWxhbHIgcWRidXNjcHAyeG1s IHFkYnVzeG1sMmNwcCBxdmtnZW4gZml4cXQ0aGVhZGVycy5wbCB0cmFjZWdlbiBcCisJCQlzeW5j cXQucGwgbGNvbnZlcnQgbHVwZGF0ZSBsdXBkYXRlLXBybyBscHJvZHVtcCBscmVsZWFzZSBscmVs ZWFzZS1wcm87IGRvCiAJCQlpZiBbIC1yICR7ZGVzdH0vdXNyL2xpYi9xdDUvYmluLyR7Zn0gXTsg dGhlbgogCQkJCW12IC12ICR7ZGVzdH0vdXNyL2xpYi9xdDUvYmluLyR7Zn0gJHtQS0dERVNURElS fS91c3IvbGliL3F0NS9iaW4vCiAJCQlmaQpAQCAtMTA4NSw3ICsxMDI1LDcgQEAgcXQ1LXRvb2xz LWRldmVsX3BhY2thZ2UoKSB7CiAKIHF0NS10b29sc19wYWNrYWdlKCkgewogCXNob3J0X2Rlc2Mr PSIgLSBEZXZlbG9wbWVudCB0b29scyIKLQlkZXBlbmRzPSJxdDUtdHJhbnNsYXRpb25zIGRlc2t0 b3AtZmlsZS11dGlscyBoaWNvbG9yLWljb24tdGhlbWUiCisJZGVwZW5kcz0icXRjaG9vc2VyIHF0 NS10cmFuc2xhdGlvbnMgZGVza3RvcC1maWxlLXV0aWxzIGhpY29sb3ItaWNvbi10aGVtZSIKIAlw a2dfaW5zdGFsbCgpIHsKIAkJbG9jYWwgZiBkZXN0PSR7WEJQU19ERVNURElSfS8ke1hCUFNfQ1JP U1NfVFJJUExFVH0vcXQ1LWhvc3QtdG9vbHMtJHt2ZXJzaW9ufQogCQlfaW5zdGFsbF9zdWJwa2cg cXR0b29scwpAQCAtMTEyNiw4ICsxMDY2LDE5IEBAIHF0NS10b29sc19wYWNrYWdlKCkgewogcXQ1 LWRldmVsX3BhY2thZ2UoKSB7CiAJZGVwZW5kcz0iemxpYi1kZXZlbCBsaWJyZXNzbC1kZXZlbD49 Mi4xLjQgbGliWGV4dC1kZXZlbCBsaWJYcmVuZGVyLWRldmVsCiAJCWZvbnRjb25maWctZGV2ZWwg bGliZ2xpYi1kZXZlbCBNZXNhTGliLWRldmVsIG10ZGV2LWRldmVsCi0JCWRidXMtZGV2ZWwgaWN1 LWRldmVsIGN1cHMtZGV2ZWwgcXQ1LSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KKwkJZGJ1cy1kZXZl bCBpY3UtZGV2ZWwgY3Vwcy1kZXZlbAorCQlxdDUtZ3VpLSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0K KwkJcXQ1LWRidXMtJHt2ZXJzaW9ufV8ke3JldmlzaW9ufQorCQlxdDUtY29yZS0ke3ZlcnNpb259 XyR7cmV2aXNpb259CisJCXF0NS13aWRnZXRzLSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KIAkJcXQ1 LXFtYWtlLSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KKwkJcXQ1LW9wZW5nbC0ke3ZlcnNpb259XyR7 cmV2aXNpb259CisJCXF0NS1wcmludHN1cHBvcnQtJHt2ZXJzaW9ufV8ke3JldmlzaW9ufQorCQlx dDUtY29uY3VycmVudC0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJCXF0NS1zcWwtJHt2ZXJzaW9u fV8ke3JldmlzaW9ufQorCQlxdDUtdGVzdC0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJCXF0NS1u ZXR3b3JrLSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KKwkJcXQ1LXhtbC0ke3ZlcnNpb259XyR7cmV2 aXNpb259CiAJCXF0NS1ob3N0LXRvb2xzLSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCiAJc2hvcnRf ZGVzYys9IiAtIERldmVsb3BtZW50IGZpbGVzIgogCSMgcXQ1LWVuZ2luaW8tZGV2ZWwgaXMgZ29u ZQpAQCAtMTE3OCw2ICsxMTI5LDcgQEAgcXQ1LXBsdWdpbi10ZHNfcGFja2FnZSgpIHsKIAogcXQ1 LXFtYWtlX3BhY2thZ2UoKSB7CiAJc2hvcnRfZGVzYys9IiAtIFFtYWtlIE1ha2VmaWxlIGdlbmVy YXRvciB0b29sIgorCWRlcGVuZHM9InF0Y2hvb3NlciIKIAlwa2dfaW5zdGFsbCgpIHsKIAkJdm1v dmUgdXNyL2xpYi9xdDUvYmluL3FtYWtlCiAJCXZtb3ZlIHVzci9saWIvcXQ1L21rc3BlY3MKCkZy b20gNWEzNGI5YWMzNDM5ODQwM2ExOThlNjUzNTNmNzBkYzJhZjk3Yzg4NCBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogSm9obiA8am9obnpAcG9zdGVvLm5ldD4KRGF0ZTogVHVlLCAxNSBP Y3QgMjAxOSAxMzoxOTo0MyArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMi85XSBOZXcgcGFja2FnZTog cXQ1LXdlYmVuZ2luZS01LjE0LjAKCi0tLQogc3JjcGtncy9xdDUtd2ViZW5naW5lLWRldmVsICAg ICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvZmlsZXMvcmVz b2x2X2NvbXBhdC5oICAgfCAgMjkgKysrKwogLi4udGUtaW5zdGVhZC1vZi1fbGliY19mcHN0YXRl LW9uLWxpbnV4LnBhdGNoIHwgIDQyICsrKysrCiAuLi5yZWcuaC10by1nZXQtX19XT1JEU0laRS1v bi1tdXNsLWxpYmMucGF0Y2ggfCAgMjYgKysrCiAuLi4vcGF0Y2hlcy8wMDAzLW11c2wtZGlzcGF0 Y2gtdG8tbXVzbC5wYXRjaCAgfCAxMDMgKysrKysrKysrKysrCiAuLi4vcGF0Y2hlcy8wMDA0LW11 c2wtbm8tbWFsbGluZm8ucGF0Y2ggICAgICAgfCAgNDAgKysrKysKIC4uLi9wYXRjaGVzLzAwMDUt bXVzbC1vZmZfdC5wYXRjaCAgICAgICAgICAgICB8ICAxMCArKwogLi4uL3BhdGNoZXMvMDAwNi1t dXNsLXByZWFkLXB3cml0ZS5wYXRjaCAgICAgIHwgIDE4ICsrKwogLi4uL3BhdGNoZXMvMDAwNy1t dXNsLXJlcGxhY2UtcHZhbGxvYy5wYXRjaCAgIHwgIDE0ICsrCiAuLi4vcGF0Y2hlcy8wMDA4LW11 c2wtcmVzb2x2ZS5wYXRjaCAgICAgICAgICAgfCAgMjYgKysrCiAuLi4vcGF0Y2hlcy8wMDA5LW11 c2wtc2lnaW5mb190LnBhdGNoICAgICAgICAgfCAgMTggKysrCiAuLi4vcGF0Y2hlcy8wMDEwLW11 c2wtc3RhY2tzdGFydC5wYXRjaCAgICAgICAgfCAgMjAgKysrCiAuLi4vcGF0Y2hlcy8wMDExLW11 c2wtc2FuZGJveC5wYXRjaCAgICAgICAgICAgfCAgNzEgKysrKysrKysKIC4uLjAwMTItbXVzbC1j aHJvbWl1bS1kZWZhdWx0LXN0YWNrc2l6ZS5wYXRjaCB8ICAxNSArKwogLi4uL3BhdGNoZXMvMDAx My1kYXRhX3BhY2stYmUucGF0Y2ggICAgICAgICAgIHwgIDE1ICsrCiAuLi4vMDAxNC1tdXNsLWNy b3NzLW5vLWFzbV9wdHJhY2VfaC5wYXRjaCAgICAgfCAgMzAgKysrKwogLi4uL3F0NS13ZWJlbmdp bmUvcGF0Y2hlcy8wMDE1LXlhc20tbmxzLnBhdGNoIHwgIDEzICsrCiAuLi4vcGF0Y2hlcy8wMDE2 LXF0LW11c2wtZXhlY2luZm8ucGF0Y2ggICAgICAgfCAgOTQgKysrKysrKysrKysKIC4uLi8wMDE3 LXF0LW11c2wtdGhyZWFkLXN0YWNrc2l6ZS5wYXRjaCAgICAgICB8ICAyNiArKysKIC4uLi9wYXRj aGVzLzAwMTgtc2FuZGJveC1tZW1iYXJyaWVyLnBhdGNoICAgICB8ICA2MCArKysrKysrCiAuLi4v cGF0Y2hlcy8wMDE5LWduLWNyb3NzLXN5c3Jvb3QucGF0Y2ggICAgICAgfCAgMjQgKysrCiAuLi4v cGF0Y2hlcy8wMDIwLW1zZ3ZlYy1wdXNoX2JhY2sucGF0Y2ggICAgICAgfCAgMTQgKysKIC4uLi9w YXRjaGVzLzAwMjEtc2FuZGJveC1zY2hlZF9nZXRwYXJhbS5wYXRjaCB8ICAyNCArKysKIC4uLi8w MDIyLWNhbm9uaWNhbGl6ZS1maWxlLW5hbWUtbXVzbC5wYXRjaCAgICB8ICAxMSArKwogc3JjcGtn cy9xdDUtd2ViZW5naW5lL3RlbXBsYXRlICAgICAgICAgICAgICAgIHwgMTUxICsrKysrKysrKysr KysrKysrKwogMjUgZmlsZXMgY2hhbmdlZCwgODk1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24o LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvZmlsZXMvcmVzb2x2 X2NvbXBhdC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNo ZXMvMDAwMS1Vc2UtX2Zwc3RhdGUtaW5zdGVhZC1vZi1fbGliY19mcHN0YXRlLW9uLWxpbnV4LnBh dGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAw Mi1pbmNsdWRlLXN5cy1yZWcuaC10by1nZXQtX19XT1JEU0laRS1vbi1tdXNsLWxpYmMucGF0Y2gK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDAzLW11 c2wtZGlzcGF0Y2gtdG8tbXVzbC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1 LXdlYmVuZ2luZS9wYXRjaGVzLzAwMDQtbXVzbC1uby1tYWxsaW5mby5wYXRjaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMDUtbXVzbC1vZmZfdC5w YXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAw MDYtbXVzbC1wcmVhZC1wd3JpdGUucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0 NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDA3LW11c2wtcmVwbGFjZS1wdmFsbG9jLnBhdGNoCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwOC1tdXNsLXJl c29sdmUucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0 Y2hlcy8wMDA5LW11c2wtc2lnaW5mb190LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtn cy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAxMC1tdXNsLXN0YWNrc3RhcnQucGF0Y2gKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDExLW11c2wtc2Fu ZGJveC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRj aGVzLzAwMTItbXVzbC1jaHJvbWl1bS1kZWZhdWx0LXN0YWNrc2l6ZS5wYXRjaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMTMtZGF0YV9wYWNrLWJl LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMv MDAxNC1tdXNsLWNyb3NzLW5vLWFzbV9wdHJhY2VfaC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMTUteWFzbS1ubHMucGF0Y2gKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDE2LXF0LW11c2wt ZXhlY2luZm8ucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUv cGF0Y2hlcy8wMDE3LXF0LW11c2wtdGhyZWFkLXN0YWNrc2l6ZS5wYXRjaAogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMTgtc2FuZGJveC1tZW1iYXJy aWVyLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNo ZXMvMDAxOS1nbi1jcm9zcy1zeXNyb290LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtn cy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAyMC1tc2d2ZWMtcHVzaF9iYWNrLnBhdGNoCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAyMS1zYW5kYm94 LXNjaGVkX2dldHBhcmFtLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUtd2Vi ZW5naW5lL3BhdGNoZXMvMDAyMi1jYW5vbmljYWxpemUtZmlsZS1uYW1lLW11c2wucGF0Y2gKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvdGVtcGxhdGUKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUtZGV2ZWwgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUt ZGV2ZWwKaW5kZXggNzU3OTNlYjY2NjQuLjFiZmRlZjExMDhiIDEyMDAwMAotLS0gYS9zcmNwa2dz L3F0NS13ZWJlbmdpbmUtZGV2ZWwKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lLWRldmVsCkBA IC0xICsxIEBACi1xdDUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitxdDUtd2ViZW5naW5l ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2Vi ZW5naW5lL2ZpbGVzL3Jlc29sdl9jb21wYXQuaCBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9maWxl cy9yZXNvbHZfY29tcGF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LjRmMGU4NTJhMTlkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL2Zp bGVzL3Jlc29sdl9jb21wYXQuaApAQCAtMCwwICsxLDI5IEBACisjaWYgIWRlZmluZWQoX19HTElC Q19fKQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgorICogcmVzb2x2X2NvbXBhdC5oCisgKgorICogTWlt aWNrIEdMSUJDJ3MgcmVzX25pbml0KCkgYW5kIHJlc19uY2xvc2UoKSBmb3IgbXVzbCBsaWJjCisg KiBOb3RlOiByZXNfaW5pdCgpIGlzIGFjdHVhbGx5IGRlcHJlY2F0ZWQgYWNjb3JkaW5nIHRvCisg KiBodHRwOi8vZG9jcy5vcmFjbGUuY29tL2NkL0UzNjc4NF8wMS9odG1sL0UzNjg3NS9yZXMtbmNs b3NlLTNyZXNvbHYuaHRtbAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworI2luY2x1ZGUgPHN0cmluZy5o PgorCitzdGF0aWMgaW5saW5lIGludCByZXNfbmluaXQocmVzX3N0YXRlIHN0YXRwKQoreworCWlu dCByYyA9IHJlc19pbml0KCk7CisJaWYgKHN0YXRwICE9ICZfcmVzKSB7CisJCW1lbWNweShzdGF0 cCwgJl9yZXMsIHNpemVvZigqc3RhdHApKTsKKwl9CisJcmV0dXJuIHJjOworfQorCitzdGF0aWMg aW5saW5lIGludCByZXNfbmNsb3NlKHJlc19zdGF0ZSBzdGF0cCkKK3sKKwlpZiAoIXN0YXRwKQor CQlyZXR1cm4gLTE7CisJaWYgKHN0YXRwICE9ICZfcmVzKSB7CisJCW1lbXNldChzdGF0cCwgMCwg c2l6ZW9mKCpzdGF0cCkpOworCX0KKwlyZXR1cm4gMDsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwMS1Vc2UtX2Zwc3RhdGUtaW5zdGVhZC1v Zi1fbGliY19mcHN0YXRlLW9uLWxpbnV4LnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3Bh dGNoZXMvMDAwMS1Vc2UtX2Zwc3RhdGUtaW5zdGVhZC1vZi1fbGliY19mcHN0YXRlLW9uLWxpbnV4 LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zZTc4N2QxMzc0 ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMDEt VXNlLV9mcHN0YXRlLWluc3RlYWQtb2YtX2xpYmNfZnBzdGF0ZS1vbi1saW51eC5wYXRjaApAQCAt MCwwICsxLDQyIEBACistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29t bW9uL3Vjb250ZXh0X3JlYWRlci5oCTIwMTgtMDYtMTUgMDk6NDc6MjAuMDAwMDAwMDAwICswMjAw CisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFr cGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0 X3JlYWRlci5oCTIwMTgtMDktMDcgMjI6MjE6MjguNTIxNzYzNzE2ICswMjAwCitAQCAtNTAsNyAr NTAsNyBAQAorICAgLy8gICBpbmZvOiB0aGUgY29sbGVjdGlvbiBvZiByZWdpc3RlciBzdHJ1Y3R1 cmVzLgorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0KQorICAgc3Rh dGljIHZvaWQgRmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4 dF90ICp1YywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBfbGli Y19mcHN0YXRlKiBmcCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1 Y3QgX2Zwc3RhdGUqIGZwKTsKKyAjZWxpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQorICAgc3RhdGlj IHZvaWQgRmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dF90 ICp1YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBmcHNpbWRf Y29udGV4dCogZnByZWdzKTsKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRl cl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmNjCTIwMTgtMDYtMTUgMDk6NDc6MjAuMDAwMDAwMDAw ICswMjAwCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vj b250ZXh0X3JlYWRlci5jYwkyMDE4LTA5LTA3IDIyOjIxOjQ1Ljc2Njc2MjY4OCArMDIwMAorQEAg LTQ5LDcgKzQ5LDcgQEAKKyB9CisgCisgdm9pZCBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNvbnRl eHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dF90ICp1YywKKy0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgX2xpYmNfZnBzdGF0ZSogZnAp IHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgX2Zw c3RhdGUqIGZwKSB7CisgICBjb25zdCBncmVnX3QqIHJlZ3MgPSB1Yy0+dWNfbWNvbnRleHQuZ3Jl Z3M7CisgCisgICBvdXQtPmNvbnRleHRfZmxhZ3MgPSBNRF9DT05URVhUX1g4Nl9GVUxMIHwKK0BA IC05Nyw3ICs5Nyw3IEBACisgfQorIAorIHZvaWQgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250 ZXh0KFJhd0NvbnRleHRDUFUgKm91dCwgY29uc3QgdWNvbnRleHRfdCAqdWMsCistICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IF9saWJjX2Zwc3RhdGUqIGZw cmVncykgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVj dCBfZnBzdGF0ZSogZnByZWdzKSB7CisgICBjb25zdCBncmVnX3QqIHJlZ3MgPSB1Yy0+dWNfbWNv bnRleHQuZ3JlZ3M7CisgCisgICBvdXQtPmNvbnRleHRfZmxhZ3MgPSBNRF9DT05URVhUX0FNRDY0 X0ZVTEw7CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL21pbmlk dW1wX3dyaXRlci5oCTIwMTgtMDYtMTUgMDk6NDc6MjAuMDAwMDAwMDAwICswMjAwCisrKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFr cGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlci5oCTIw MTgtMDktMDcgMjM6MzY6MzIuMDQ5NDk1Mjg1ICswMjAwCitAQCAtNDgsNyArNDgsNyBAQAorICNp ZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQorIHR5cGVkZWYgc3RydWN0IGZwc2ltZF9jb250ZXh0IGZw c3RhdGVfdDsKKyAjZWxpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlw c19fKQorLXR5cGVkZWYgc3RydWN0IF9saWJjX2Zwc3RhdGUgZnBzdGF0ZV90OworK3R5cGVkZWYg c3RydWN0IF9mcHN0YXRlIGZwc3RhdGVfdDsKKyAjZW5kaWYKKyAKKyAvLyBUaGVzZSBlbnRyaWVz IHN0b3JlIGEgbGlzdCBvZiBtZW1vcnkgcmVnaW9ucyB0aGF0IHRoZSBjbGllbnQgd2FudHMgaW5j bHVkZWQKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMDItaW5j bHVkZS1zeXMtcmVnLmgtdG8tZ2V0LV9fV09SRFNJWkUtb24tbXVzbC1saWJjLnBhdGNoIGIvc3Jj cGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwMi1pbmNsdWRlLXN5cy1yZWcuaC10by1nZXQt X19XT1JEU0laRS1vbi1tdXNsLWxpYmMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLmRhNDE2MGIyMWJkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUt d2ViZW5naW5lL3BhdGNoZXMvMDAwMi1pbmNsdWRlLXN5cy1yZWcuaC10by1nZXQtX19XT1JEU0la RS1vbi1tdXNsLWxpYmMucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorRnJvbSA5MDAxYzU0ZDZiOTc0 NDQ5MTc0YThjZWU4ZjNmNWQ3OGE5YmQ2YzllIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJv bTogRmVsaXggSmFuZGEgPGZlbGl4LmphbmRhQHBvc3Rlby5kZT4KK0RhdGU6IFN1biwgMSBGZWIg MjAxNSAxNDoyNjo1MiArMDEwMAorU3ViamVjdDogW1BBVENIIDMvNl0gaW5jbHVkZSA8c3lzL3Jl Zy5oPiB0byBnZXQgX19XT1JEU0laRSBvbiBtdXNsIGxpYmMKKworLS0tCisgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9j b21tb24vbGludXgvZWxmX2NvcmVfZHVtcC5oIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9zcmMvY29tbW9uL2xpbnV4L2VsZl9jb3JlX2R1bXAu aCBiL3NyYy9jb21tb24vbGludXgvZWxmX2NvcmVfZHVtcC5oCitpbmRleCBkMDNjN2E4Li4wMmVi MzkxIDEwMDY0NAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL2xpbnV4L2VsZl9jb3JlX2R1bXAuaAor KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3Bh ZC9icmVha3BhZC9zcmMvY29tbW9uL2xpbnV4L2VsZl9jb3JlX2R1bXAuaAorQEAgLTM2LDYgKzM2 LDkgQEAKKyAjaW5jbHVkZSA8ZWxmLmg+CisgI2luY2x1ZGUgPGxpbmsuaD4KKyAjaW5jbHVkZSA8 c3RkZGVmLmg+CisrI2lmbmRlZiBfX0dMSUJDX18KKysjaW5jbHVkZSA8c3lzL3JlZy5oPgorKyNl bmRpZgorIAorICNpbmNsdWRlICJjb21tb24vbWVtb3J5X3JhbmdlLmgiCisgCistLSAKKzIuMC41 CisKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMDMtbXVzbC1k aXNwYXRjaC10by1tdXNsLnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAw My1tdXNsLWRpc3BhdGNoLXRvLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLmRlMzJhM2RhYjk1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUt d2ViZW5naW5lL3BhdGNoZXMvMDAwMy1tdXNsLWRpc3BhdGNoLXRvLW11c2wucGF0Y2gKQEAgLTAs MCArMSwxMDMgQEAKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9h bGxvY2F0b3IvYWxsb2NhdG9yX3NoaW1fZGVmYXVsdF9kaXNwYXRjaF90b19nbGliYy5jYworLS0t IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL2FsbG9jYXRvci9hbGxvY2F0 b3Jfc2hpbV9kZWZhdWx0X2Rpc3BhdGNoX3RvX2dsaWJjLmNjCitAQCAtNiw2ICs2LDcgQEAKKyAK KyAjaW5jbHVkZSA8bWFsbG9jLmg+CisgCisrI2lmIGRlZmluZWQoX19HTElCQ19fKQorIC8vIFRo aXMgdHJhbnNsYXRpb24gdW5pdCBkZWZpbmVzIGEgZGVmYXVsdCBkaXNwYXRjaCBmb3IgdGhlIGFs bG9jYXRvciBzaGltIHdoaWNoCisgLy8gcm91dGVzIGFsbG9jYXRpb25zIHRvIGxpYmMgZnVuY3Rp b25zLgorIC8vIFRoZSBjb2RlIGhlcmUgaXMgc3Ryb25nbHkgaW5zcGlyZWQgZnJvbSB0Y21hbGxv YydzIGxpYmNfb3ZlcnJpZGVfZ2xpYmMuaC4KK0BAIC03MywzICs3NCw5MiBAQCBjb25zdCBBbGxv Y2F0b3JEaXNwYXRjaCBBbGxvY2F0b3JEaXNwYXRjaDo6ZGVmYXVsdF9kaXNwYXRjaCA9IHsKKyAg ICAgbnVsbHB0ciwgICAgICAgICAgICAgICAvKiBmcmVlX2RlZmluaXRlX3NpemVfZnVuY3Rpb24g Ki8KKyAgICAgbnVsbHB0ciwgICAgICAgICAgICAgICAvKiBuZXh0ICovCisgfTsKKysKKysjZWxz ZSAvLyBkZWZpbmVkKF9fR0xJQkNfXykKKysKKysjaW5jbHVkZSA8ZGxmY24uaD4KKysKKytleHRl cm4gIkMiIHsKKysvLyBEZWNsYXJlIGZ1bmN0aW9uIHBvaW50ZXJzIHRvIHRoZSBtZW1vcnkgZnVu Y3Rpb25zCisrdHlwZWRlZiB2b2lkKiAoKnRfbGliY19tYWxsb2MpKHNpemVfdCBzaXplKTsKKyt0 eXBlZGVmIHZvaWQqICgqdF9saWJjX2NhbGxvYykoc2l6ZV90IG4sIHNpemVfdCBzaXplKTsKKyt0 eXBlZGVmIHZvaWQqICgqdF9saWJjX3JlYWxsb2MpKHZvaWQqIGFkZHJlc3MsIHNpemVfdCBzaXpl KTsKKyt0eXBlZGVmIHZvaWQqICgqdF9saWJjX21lbWFsaWduKShzaXplX3QgYWxpZ25tZW50LCBz aXplX3Qgc2l6ZSk7CisrdHlwZWRlZiB2b2lkICgqdF9saWJjX2ZyZWUpKHZvaWQqIHB0cik7Cisr dHlwZWRlZiBzaXplX3QgKCp0X2xpYmNfbWFsbG9jX3VzYWJsZV9zaXplKSh2b2lkKiBwdHIpOwor KworKy8vIFN0YXRpYyBpbnN0YW5jZXMgb2YgcG9pbnRlcnMgdG8gbGliYy5zbyBkbCBzeW1ib2xz Cisrc3RhdGljIHRfbGliY19tYWxsb2MgbGliY19tYWxsb2MgPSBOVUxMOworK3N0YXRpYyB0X2xp YmNfY2FsbG9jIGxpYmNfY2FsbG9jID0gTlVMTDsKKytzdGF0aWMgdF9saWJjX3JlYWxsb2MgbGli Y19yZWFsbG9jID0gTlVMTDsKKytzdGF0aWMgdF9saWJjX21lbWFsaWduIGxpYmNfbWVtYWxpZ24g PSBOVUxMOworK3N0YXRpYyB0X2xpYmNfZnJlZSBsaWJjX2ZyZWUgPSBOVUxMOworK3N0YXRpYyB0 X2xpYmNfbWFsbG9jX3VzYWJsZV9zaXplIGxpYmNfbWFsbG9jX3VzYWJsZV9zaXplID0gTlVMTDsK KysKKysvLyByZXNvbHZlIHRoZSBzeW1ib2xzIGluIGxpYmMuc28KKyt2b2lkIG11c2xfbGliY19t ZW1vcnlfaW5pdCh2b2lkKQorK3sKKysgIGxpYmNfbWFsbG9jID0gKHRfbGliY19tYWxsb2MpIGRs c3ltKFJUTERfTkVYVCwgIm1hbGxvYyIpOworKyAgbGliY19jYWxsb2MgPSAodF9saWJjX2NhbGxv YykgZGxzeW0oUlRMRF9ORVhULCAiY2FsbG9jIik7CisrICBsaWJjX3JlYWxsb2MgPSAodF9saWJj X3JlYWxsb2MpIGRsc3ltKFJUTERfTkVYVCwgInJlYWxsb2MiKTsKKysgIGxpYmNfbWVtYWxpZ24g PSAodF9saWJjX21lbWFsaWduKSBkbHN5bShSVExEX05FWFQsICJtZW1hbGlnbiIpOworKyAgbGli Y19mcmVlID0gKHRfbGliY19mcmVlKSBkbHN5bShSVExEX05FWFQsICJmcmVlIik7CisrICBsaWJj X21hbGxvY191c2FibGVfc2l6ZSA9ICh0X2xpYmNfbWFsbG9jX3VzYWJsZV9zaXplKSBkbHN5bShS VExEX05FWFQsICJtYWxsb2NfdXNhYmxlX3NpemUiKTsKKyt9CisrfSAgLy8gZXh0ZXJuICJDIgor KworK25hbWVzcGFjZSB7CisrCisrdXNpbmcgYmFzZTo6YWxsb2NhdG9yOjpBbGxvY2F0b3JEaXNw YXRjaDsKKysKKyt2b2lkKiBNdXNsTWFsbG9jKGNvbnN0IEFsbG9jYXRvckRpc3BhdGNoKiwgc2l6 ZV90IHNpemUsIHZvaWQqIGNvbnRleHQpIHsKKysgIGlmICghbGliY19tYWxsb2MpCisrICAgIG11 c2xfbGliY19tZW1vcnlfaW5pdCgpOworKyAgcmV0dXJuICgqbGliY19tYWxsb2MpKHNpemUpOwor K30KKysKKyt2b2lkKiBNdXNsQ2FsbG9jKGNvbnN0IEFsbG9jYXRvckRpc3BhdGNoKiwgc2l6ZV90 IG4sIHNpemVfdCBzaXplLCB2b2lkKiBjb250ZXh0KSB7CisrICBpZiAoIWxpYmNfY2FsbG9jKQor KyAgICBtdXNsX2xpYmNfbWVtb3J5X2luaXQoKTsKKysgIHJldHVybiAoKmxpYmNfY2FsbG9jKShu LCBzaXplKTsKKyt9CisrCisrdm9pZCogTXVzbFJlYWxsb2MoY29uc3QgQWxsb2NhdG9yRGlzcGF0 Y2gqLCB2b2lkKiBhZGRyZXNzLCBzaXplX3Qgc2l6ZSwgdm9pZCogY29udGV4dCkgeworKyAgaWYg KCFsaWJjX3JlYWxsb2MpCisrICAgIG11c2xfbGliY19tZW1vcnlfaW5pdCgpOworKyAgcmV0dXJu ICgqbGliY19yZWFsbG9jKShhZGRyZXNzLCBzaXplKTsKKyt9CisrCisrdm9pZCogTXVzbE1lbWFs aWduKGNvbnN0IEFsbG9jYXRvckRpc3BhdGNoKiwgc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNp emUsIHZvaWQqIGNvbnRleHQpIHsKKysgIGlmICghbGliY19tZW1hbGlnbikKKysgICAgbXVzbF9s aWJjX21lbW9yeV9pbml0KCk7CisrICByZXR1cm4gKCpsaWJjX21lbWFsaWduKShhbGlnbm1lbnQs IHNpemUpOworK30KKysKKyt2b2lkIE11c2xGcmVlKGNvbnN0IEFsbG9jYXRvckRpc3BhdGNoKiwg dm9pZCogYWRkcmVzcywgdm9pZCogY29udGV4dCkgeworKyAgaWYgKCFsaWJjX2ZyZWUpCisrICAg IG11c2xfbGliY19tZW1vcnlfaW5pdCgpOworKyAgKCpsaWJjX2ZyZWUpKGFkZHJlc3MpOworK30K KysKKytzaXplX3QgTXVzbEdldFNpemVFc3RpbWF0ZShjb25zdCBBbGxvY2F0b3JEaXNwYXRjaCos IHZvaWQqIGFkZHJlc3MsIHZvaWQqIGNvbnRleHQpIHsKKysgIC8vIFRPRE8oc2lnZ2ksIHByaW1p YW5vKTogbWFsbG9jX3VzYWJsZV9zaXplIG1heSBuZWVkIHJlZGlyZWN0aW9uIGluIHRoZQorKyAg Ly8gICAgIHByZXNlbmNlIG9mIGludGVycG9zaW5nIHNoaW1zIHRoYXQgZGl2ZXJ0IGFsbG9jYXRp b25zLgorKyAgaWYgKCFsaWJjX21hbGxvY191c2FibGVfc2l6ZSkKKysgICAgbXVzbF9saWJjX21l bW9yeV9pbml0KCk7CisrICByZXR1cm4gKCpsaWJjX21hbGxvY191c2FibGVfc2l6ZSkoYWRkcmVz cyk7CisrfQorKworK30gIC8vIG5hbWVzcGFjZQorKworK2NvbnN0IEFsbG9jYXRvckRpc3BhdGNo IEFsbG9jYXRvckRpc3BhdGNoOjpkZWZhdWx0X2Rpc3BhdGNoID0geworKyAgICAmTXVzbE1hbGxv YywgICAgICAgICAgIC8qIGFsbG9jX2Z1bmN0aW9uICovCisrICAgICZNdXNsQ2FsbG9jLCAgICAg ICAgICAgLyogYWxsb2NfemVyb19pbml0aWFsaXplZF9mdW5jdGlvbiAqLworKyAgICAmTXVzbE1l bWFsaWduLCAgICAgICAgIC8qIGFsbG9jX2FsaWduZWRfZnVuY3Rpb24gKi8KKysgICAgJk11c2xS ZWFsbG9jLCAgICAgICAgICAvKiByZWFsbG9jX2Z1bmN0aW9uICovCisrICAgICZNdXNsRnJlZSwg ICAgICAgICAgICAgLyogZnJlZV9mdW5jdGlvbiAqLworKyAgICAmTXVzbEdldFNpemVFc3RpbWF0 ZSwgIC8qIGdldF9zaXplX2VzdGltYXRlX2Z1bmN0aW9uICovCisrICAgIG51bGxwdHIsICAgICAg ICAgICAgICAgLyogbmV4dCAqLworK307CisrCisrI2VuZGlmCmRpZmYgLS1naXQgYS9zcmNwa2dz L3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDA0LW11c2wtbm8tbWFsbGluZm8ucGF0Y2ggYi9zcmNw a2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDA0LW11c2wtbm8tbWFsbGluZm8ucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmMzMzJiOTJiNjlkCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwNC1tdXNsLW5vLW1h bGxpbmZvLnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vYmFzZS90cmFjZV9ldmVudC9tYWxsb2NfZHVtcF9wcm92aWRlci5jYwkyMDE3 LTExLTI4IDE0OjA2OjUzLjAwMDAwMDAwMCArMDEwMAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS9iYXNlL3RyYWNlX2V2ZW50L21hbGxvY19kdW1wX3Byb3ZpZGVyLmNjCTIw MTgtMDEtMjcgMjA6MTM6MjYuOTYwOTMyODA1ICswMTAwCitAQCAtMjQzLDcgKzI0Myw3IEBACisg ICBhbGxvY2F0ZWRfb2JqZWN0c19jb3VudCA9IG1haW5faGVhcF9pbmZvLmJsb2NrX2NvdW50Owor ICNlbGlmIGRlZmluZWQoT1NfRlVDSFNJQSkKKyAvLyBUT0RPKGZ1Y2hzaWEpOiBQb3J0LCBzZWUg aHR0cHM6Ly9jcmJ1Zy5jb20vNzA2NTkyLgorLSNlbHNlCisrI2VsaWYgZGVmaW5lZChfX0dMSUJD X18pCisgICBzdHJ1Y3QgbWFsbGluZm8gaW5mbyA9IG1hbGxpbmZvKCk7CisgICBEQ0hFQ0tfR0Uo aW5mby5hcmVuYSArIGluZm8uaGJsa2hkLCBpbmZvLnVvcmRibGtzKTsKKyAKK0BAIC0yNTUsNiAr MjU1LDggQEAKKyAKKyAgIC8vIFRvdGFsIGFsbG9jYXRlZCBzcGFjZSBpcyBnaXZlbiBieSB8dW9y ZGJsa3N8LgorICAgYWxsb2NhdGVkX29iamVjdHNfc2l6ZSA9IGluZm8udW9yZGJsa3M7CisrI2Vs c2UKKysvLyBtdXNsIGxpYmMgZG9lcyBub3Qgc3VwcG9ydCBtYWxsaW5mbygpCisgI2VuZGlmCisg CisgICBNZW1vcnlBbGxvY2F0b3JEdW1wKiBvdXRlcl9kdW1wID0gcG1kLT5DcmVhdGVBbGxvY2F0 b3JEdW1wKCJtYWxsb2MiKTsKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v YmFzZS9wcm9jZXNzL3Byb2Nlc3NfbWV0cmljc19wb3NpeC5jYwkyMDE3LTExLTI4IDE0OjA2OjUz LjAwMDAwMDAwMCArMDEwMAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9i YXNlL3Byb2Nlc3MvcHJvY2Vzc19tZXRyaWNzX3Bvc2l4LmNjCTIwMTgtMDEtMjcgMjA6NDg6MTEu NTcxMDQwMzQ4ICswMTAwCitAQCAtMTAwLDE0ICsxMDAsMTQgQEAKKyAgIG1hbGxvY19zdGF0aXN0 aWNzX3Qgc3RhdHMgPSB7MH07CisgICBtYWxsb2Nfem9uZV9zdGF0aXN0aWNzKG51bGxwdHIsICZz dGF0cyk7CisgICByZXR1cm4gc3RhdHMuc2l6ZV9pbl91c2U7CistI2VsaWYgZGVmaW5lZChPU19M SU5VWCkgfHwgZGVmaW5lZChPU19BTkRST0lEKQorKyNlbGlmIChkZWZpbmVkKE9TX0xJTlVYKSAm JiBkZWZpbmVkKF9fR0xJQkNfXykpIHx8IGRlZmluZWQoT1NfQU5EUk9JRCkKKyAgIHN0cnVjdCBt YWxsaW5mbyBtaW5mbyA9IG1hbGxpbmZvKCk7CisgI2lmIGRlZmluZWQoVVNFX1RDTUFMTE9DKQor ICAgcmV0dXJuIG1pbmZvLnVvcmRibGtzOworICNlbHNlCisgICByZXR1cm4gbWluZm8uaGJsa2hk ICsgbWluZm8uYXJlbmE7CisgI2VuZGlmCistI2VsaWYgZGVmaW5lZChPU19GVUNIU0lBKQorKyNl bHNlIC8vaWYgZGVmaW5lZChPU19GVUNIU0lBKSAvLyBhbHNvIG11c2wgZG9lc24ndCBkbyB0aGlz LgorICAgLy8gVE9ETyhmdWNoc2lhKTogTm90IGN1cnJlbnRseSBleHBvc2VkLiBodHRwczovL2Ny YnVnLmNvbS83MzUwODcuCisgICByZXR1cm4gMDsKKyAjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwNS1tdXNsLW9mZl90LnBhdGNoIGIvc3JjcGtn cy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwNS1tdXNsLW9mZl90LnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41MmRiM2I5ZWJmNAotLS0gL2Rldi9udWxsCisr KyBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMDUtbXVzbC1vZmZfdC5wYXRjaApA QCAtMCwwICsxLDEwIEBACistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L290cy9pbmNsdWRlL29wZW50eXBlLXNhbml0aXNlci5oCTIwMTYtMDUtMjYgMTQ6 NTg6NTQuMDAwMDAwMDAwICswMjAwCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L290cy9pbmNsdWRlL29wZW50eXBlLXNhbml0aXNlci5oCTIwMTYtMTAt MDEgMTQ6MzE6MzAuODg1MDAwMDAwICswMjAwCitAQCAtMjEsNiArMjEsNyBAQAorICNkZWZpbmUg aHRvbnMoeCkgX2J5dGVzd2FwX3VzaG9ydCAoeCkKKyAjZWxzZQorICNpbmNsdWRlIDxhcnBhL2lu ZXQuaD4KKysjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2luY2x1ZGUgPHN0ZGludC5oPgorICNl bmRpZgorIApkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwNi1t dXNsLXByZWFkLXB3cml0ZS5wYXRjaCBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAw MDYtbXVzbC1wcmVhZC1wd3JpdGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLjAwMDE3YmJhMDE3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2Vi ZW5naW5lL3BhdGNoZXMvMDAwNi1tdXNsLXByZWFkLXB3cml0ZS5wYXRjaApAQCAtMCwwICsxLDE4 IEBACistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2xz cy9saW51eF9zeXNjYWxsX3N1cHBvcnQuaAkyMDE4LTA5LTA3IDIxOjI1OjI2LjYzOTk2NDEwMCAr MDIwMAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9s c3MvbGludXhfc3lzY2FsbF9zdXBwb3J0LmgJMjAxOC0wOS0wNyAyMToyNToxMS42MTE5NjQ5OTUg KzAyMDAKK0BAIC0xNzk0LDYgKzE3OTQsMTUgQEAKKyAvKiBFbmQgb2YgczM5MC9zMzkweCBkZWZp bml0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisg I2VuZGlmCisgCisrI2lmbmRlZiBfX0dMSUJDX18KKysgIC8qIEZvciBNdXNsIGxpYmMgcHJlYWQv cHJlYWQgaXMgdGhlIHNhbWUgYXMgcHJlYWQ2NC9wd3JpdGU2NCAqLworKyNpZm5kZWYgX19OUl9w cmVhZAorKyNkZWZpbmUgX19OUl9wcmVhZCAgICAgICAgICAgICAgX19OUl9wcmVhZDY0CisrI2Vu ZGlmCisrI2lmbmRlZiBfX05SX3B3cml0ZQorKyNkZWZpbmUgX19OUl9wd3JpdGUgICAgICAgICAg ICAgX19OUl9wd3JpdGU2NAorKyNlbmRpZgorKyNlbmRpZiAvKiBpZm5kZWYgX19HTElCQ19fICov CisgCisgLyogQWZ0ZXIgZm9ya2luZywgd2UgbXVzdCBtYWtlIHN1cmUgdG8gb25seSBjYWxsIHN5 c3RlbSBjYWxscy4gICAgICAgICAgICAgICAqLworICNpZiBkZWZpbmVkKF9fQk9VTkRFRF9QT0lO VEVSU19fKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwNy1t dXNsLXJlcGxhY2UtcHZhbGxvYy5wYXRjaCBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVz LzAwMDctbXVzbC1yZXBsYWNlLXB2YWxsb2MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLmQ1Y2FmMzgzNmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9x dDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwNy1tdXNsLXJlcGxhY2UtcHZhbGxvYy5wYXRjaApAQCAt MCwwICsxLDE0IEBACistLS0gcXR3ZWJlbmdpbmUvc3JjL2NvcmUvYXBpL3F0YnVnLTYxNTIxLmNw cAkyMDE3LTExLTI5IDA5OjQyOjI5LjAwMDAwMDAwMCArMDEwMAorKysrIHF0d2ViZW5naW5lL3Ny Yy9jb3JlL2FwaS9xdGJ1Zy02MTUyMS5jcHAJMjAxOC0wMS0yOCAwNjo0OToyOS40NTQxNzU3MjUg KzAxMDAKK0BAIC0xMTEsNyArMTExLDExIEBACisgfQorIAorIFNISU1fSElEREVOIHZvaWQqIFNo aW1QdmFsbG9jKHNpemVfdCBzaXplKSB7CisrI2lmIGRlZmluZWQoX19HTElCQ19fKQorICAgICBy ZXR1cm4gcHZhbGxvYyhzaXplKTsKKysjZWxzZQorKyAgICByZXR1cm4gdmFsbG9jKChzaXplKzQw OTUpJn40MDk1KTsKKysjZW5kaWYKKyB9CisgCisgU0hJTV9ISURERU4gaW50IFNoaW1Qb3NpeE1l bWFsaWduKHZvaWQqKiByLCBzaXplX3QgYSwgc2l6ZV90IHMpIHsKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMDgtbXVzbC1yZXNvbHZlLnBhdGNoIGIvc3JjcGtn cy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwOC1tdXNsLXJlc29sdmUucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmVkZmNlYjc5ZjMwCi0tLSAvZGV2L251bGwK KysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwOC1tdXNsLXJlc29sdmUucGF0 Y2gKQEAgLTAsMCArMSwyNiBAQAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS9uZXQvZG5zL2Ruc19yZWxvYWRlci5jYwkyMDE2LTExLTA3IDE1OjQ2OjE4LjAwMDAwMDAwMCAr MDEwMAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9uZXQvZG5zL2Ruc19y ZWxvYWRlci5jYwkyMDE2LTEyLTIwIDAzOjMzOjExLjc0OTA1OTY1NiArMDEwMAorQEAgLTksNiAr OSwxMCBAQAorIAorICNpbmNsdWRlIDxyZXNvbHYuaD4KKyAKKysjaWYgIWRlZmluZWQoX19HTElC Q19fKQorKyNpbmNsdWRlICJyZXNvbHZfY29tcGF0LmgiCisrI2VuZGlmCisrCisgI2luY2x1ZGUg ImJhc2UvbGF6eV9pbnN0YW5jZS5oIgorICNpbmNsdWRlICJiYXNlL2xvZ2dpbmcuaCIKKyAjaW5j bHVkZSAiYmFzZS9tYWNyb3MuaCIKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vbmV0L2Rucy9kbnNfY29uZmlnX3NlcnZpY2VfcG9zaXguY2MJMjAxNi0xMS0wNyAxNTo0Njox OC4wMDAwMDAwMDAgKzAxMDAKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v bmV0L2Rucy9kbnNfY29uZmlnX3NlcnZpY2VfcG9zaXguY2MJMjAxNi0xMi0yMCAwMzo0MDowNy42 NzE5NTMwOTggKzAxMDAKK0BAIC02LDYgKzYsMTAgQEAKKyAKKyAjaW5jbHVkZSA8c3RyaW5nPgor IAorKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCisrI2luY2x1ZGUgInJlc29sdl9jb21wYXQuaCIK KysjZW5kaWYKKysKKyAjaW5jbHVkZSAiYmFzZS9iaW5kLmgiCisgI2luY2x1ZGUgImJhc2UvZmls ZXMvZmlsZS5oIgorICNpbmNsdWRlICJiYXNlL2ZpbGVzL2ZpbGVfcGF0aC5oIgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwOS1tdXNsLXNpZ2luZm9fdC5wYXRj aCBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMDktbXVzbC1zaWdpbmZvX3QucGF0 Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmZlNzYwYmUxNjY2Ci0t LSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwOS1tdXNs LXNpZ2luZm9fdC5wYXRjaApAQCAtMCwwICsxLDE4IEBACitUaGVyZSdzIGEgc3VidGxlIGRpZmZl cmVuY2UgaW4gdGhlIGludGVybmFsIG5hbWUgb2Ygc2lnaW5mb190IGZpZWxkcworYmV0d2VlbiBn bGliYyBhbmQgbXVzbC4gVGhlIHN0cnVjdHVyZSBpdHNlbGYgaXMgZXF1aXZhbGVudCwgc28gaXQK K3Nob3VsZCBzdWZmaWNlIHRvIGFkZCBhIG1hY3JvIHRvIHJlbmFtZSB0aGUgZmllbGQuCisKKy0t LSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21w LWJwZi90cmFwLmNjCTIwMTUtMDItMTcgMDU6NTc6NDMuMDAwMDAwMDAwICswMTAwCisrKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYv dHJhcC5jYwkyMDE1LTA2LTAzIDA4OjIwOjI1LjAzMjcxNjQyNyArMDIwMAorQEAgLTIyLDYgKzIy LDExIEBACisgI2luY2x1ZGUgInNhbmRib3gvbGludXgvc2VydmljZXMvYW5kcm9pZF91Y29udGV4 dC5oIgorICNlbmRpZgorCisrLy8gbXVzbCBsaWJjIGRlZmluZXMgc2lnaW5mb190IF9fc2lfZmll bGRzIGluc3RlYWQgb2YgX3NpZmllbGRzCisrI2lmICFkZWZpbmVkKF9fR0xJQkNfXykKKysjZGVm aW5lIF9zaWZpZWxkcyBfX3NpX2ZpZWxkcworKyNlbmRpZgorKworIG5hbWVzcGFjZSB7CisKKyBj b25zdCBpbnQga0NhcGFjaXR5SW5jcmVtZW50ID0gMjA7CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0 NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDEwLW11c2wtc3RhY2tzdGFydC5wYXRjaCBiL3NyY3BrZ3Mv cXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMTAtbXVzbC1zdGFja3N0YXJ0LnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41NzEzNmJjMmJjZAotLS0gL2Rldi9udWxs CisrKyBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMTAtbXVzbC1zdGFja3N0YXJ0 LnBhdGNoCkBAIC0wLDAgKzEsMjAgQEAKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vd3RmL3N0YWNrX3V0aWwu Y2MJMjAxOC0wMS0yNyAyMzowODo0My41ODY0NzUzNDkgKzAxMDAKKysrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0v d3RmL3N0YWNrX3V0aWwuY2MJMjAxOC0wMS0yNyAyMzoxODoyMi4yNzQ1MDUyMDMgKzAxMDAKK0BA IC0yOCw3ICsyOCw3IEBACisgLy8gRklYTUU6IE9uIE1hYyBPU1ggYW5kIExpbnV4LCB0aGlzIG1l dGhvZCBjYW5ub3QgZXN0aW1hdGUgc3RhY2sgc2l6ZQorIC8vIGNvcnJlY3RseSBmb3IgdGhlIG1h aW4gdGhyZWFkLgorIAorLSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgfHwgZGVmaW5lZChPU19BTkRS T0lEKSB8fCBkZWZpbmVkKE9TX0ZSRUVCU0QpIHx8IFwKKysjaWYgZGVmaW5lZChPU19MSU5VWCkg fHwgZGVmaW5lZChPU19BTkRST0lEKSB8fCBkZWZpbmVkKE9TX0ZSRUVCU0QpIHx8IFwKKyAgICAg ZGVmaW5lZChPU19GVUNIU0lBKQorICAgLy8gcHRocmVhZF9nZXRhdHRyX25wKCkgY2FuIGZhaWwg aWYgdGhlIHRocmVhZCBpcyBub3QgaW52b2tlZCBieQorICAgLy8gcHRocmVhZF9jcmVhdGUoKSAo ZS5nLiwgdGhlIG1haW4gdGhyZWFkIG9mIHdlYmtpdF91bml0X3Rlc3RzKS4KK0BAIC05Niw3ICs5 Niw3IEBACisgfQorIAorIHZvaWQqIEdldFN0YWNrU3RhcnQoKSB7CistI2lmIGRlZmluZWQoX19H TElCQ19fKSB8fCBkZWZpbmVkKE9TX0FORFJPSUQpIHx8IGRlZmluZWQoT1NfRlJFRUJTRCkgfHwg XAorKyNpZiBkZWZpbmVkKE9TX0xJTlVYKSB8fCBkZWZpbmVkKE9TX0FORFJPSUQpIHx8IGRlZmlu ZWQoT1NfRlJFRUJTRCkgfHwgXAorICAgICBkZWZpbmVkKE9TX0ZVQ0hTSUEpCisgICBwdGhyZWFk X2F0dHJfdCBhdHRyOworICAgaW50IGVycm9yOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2Vi ZW5naW5lL3BhdGNoZXMvMDAxMS1tdXNsLXNhbmRib3gucGF0Y2ggYi9zcmNwa2dzL3F0NS13ZWJl bmdpbmUvcGF0Y2hlcy8wMDExLW11c2wtc2FuZGJveC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uZDNkZTFlNDExODMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNw a2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDExLW11c2wtc2FuZGJveC5wYXRjaApAQCAtMCww ICsxLDcxIEBACistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gv bGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3BhcmFtZXRlcnNfcmVzdHJpY3Rpb25z LmNjCTIwMTgtMDYtMTUgMDk6NDc6MjAuMDAwMDAwMDAwICswMjAwCisrKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9z eXNjYWxsX3BhcmFtZXRlcnNfcmVzdHJpY3Rpb25zLmNjCTIwMTgtMDktMTMgMTk6NTM6NTMuNDUz NzgwMjUzICswMjAwCitAQCAtMTI5LDcgKzEyOSw3IEBACisgLy8gQ0xPTkVfVk0sIG5vciBDTE9O RV9USFJFQUQsIHdoaWNoIGluY2x1ZGVzIGFsbCBmb3JrKCkgaW1wbGVtZW50YXRpb25zLgorIFJl c3VsdEV4cHIgUmVzdHJpY3RDbG9uZVRvVGhyZWFkc0FuZEVQRVJNRm9yaygpIHsKKyAgIGNvbnN0 IEFyZzx1bnNpZ25lZCBsb25nPiBmbGFncygwKTsKKy0KKysjaWYgZGVmaW5lZChfX0dMSUJDX18p CisgICAvLyBUT0RPKG1kZW1wc2t5KTogRXh0ZW5kIERTTCB0byBzdXBwb3J0IChmbGFncyAmIH5t YXNrMSkgPT0gbWFzazIuCisgICBjb25zdCB1aW50NjRfdCBrQW5kcm9pZENsb25lTWFzayA9IENM T05FX1ZNIHwgQ0xPTkVfRlMgfCBDTE9ORV9GSUxFUyB8CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIENMT05FX1NJR0hBTkQgfCBDTE9ORV9USFJFQUQgfAorQEAgLTE0OCw2 ICsxNDgsMTcgQEAKKyAgIHJldHVybiBJZihJc0FuZHJvaWQoKSA/IGFuZHJvaWRfdGVzdCA6IGds aWJjX3Rlc3QsIEFsbG93KCkpCisgICAgICAgLkVsc2VJZigoZmxhZ3MgJiAoQ0xPTkVfVk0gfCBD TE9ORV9USFJFQUQpKSA9PSAwLCBFcnJvcihFUEVSTSkpCisgICAgICAgLkVsc2UoQ3Jhc2hTSUdT WVNDbG9uZSgpKTsKKysjZWxzZQorKyAgY29uc3QgaW50IHJlcXVpcmVkID0gQ0xPTkVfVk0gfCBD TE9ORV9GUyB8IENMT05FX0ZJTEVTIHwgQ0xPTkVfU0lHSEFORCB8CisrICAgICAgICAgICAgICAg ICAgICAgICBDTE9ORV9USFJFQUQgfCBDTE9ORV9TWVNWU0VNOworKyAgY29uc3QgaW50IHNhZmUg PSBDTE9ORV9TRVRUTFMgfCBDTE9ORV9QQVJFTlRfU0VUVElEIHwgQ0xPTkVfQ0hJTERfQ0xFQVJU SUQgfAorKyAgICAgICAgICAgICAgICAgICBDTE9ORV9ERVRBQ0hFRDsKKysgIGNvbnN0IEJvb2xF eHByIHRocmVhZF9jbG9uZV9vayA9IChmbGFncyZ+c2FmZSk9PXJlcXVpcmVkOworKworKyAgcmV0 dXJuIElmKHRocmVhZF9jbG9uZV9vaywgQWxsb3coKSkKKysgICAgICAuRWxzZUlmKChmbGFncyAm IChDTE9ORV9WTSB8IENMT05FX1RIUkVBRCkpID09IDAsIEVycm9yKEVQRVJNKSkKKysgICAgICAu RWxzZShDcmFzaFNJR1NZU0Nsb25lKCkpOworKyNlbmRpZgorIH0KKyAKKyBSZXN1bHRFeHByIFJl c3RyaWN0UHJjdGwoKSB7CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Nh bmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3NldHMuY2MJMjAxOC0wNi0x NSAwOTo0NzoyMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfc2V0cy5j YwkyMDE4LTA5LTEzIDE5OjU2OjMxLjc3OTc3Mzk0MCArMDIwMAorQEAgLTM3NSw2ICszNzUsOSBA QAorICNpZiBkZWZpbmVkKF9faTM4Nl9fKQorICAgICBjYXNlIF9fTlJfd2FpdHBpZDoKKyAjZW5k aWYKKysjaWYgIWRlZmluZWQoX19HTElCQ19fKQorKyAgICBjYXNlIF9fTlJfc2V0X3RpZF9hZGRy ZXNzOgorKyNlbmRpZgorICAgICAgIHJldHVybiB0cnVlOworICAgICBjYXNlIF9fTlJfY2xvbmU6 ICAvLyBTaG91bGQgYmUgcGFyYW1ldGVyLXJlc3RyaWN0ZWQuCisgICAgIGNhc2UgX19OUl9zZXRu czogIC8vIFByaXZpbGVnZWQuCitAQCAtMzg3LDcgKzM5MCw5IEBACisgI2lmIGRlZmluZWQoX19p Mzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykKKyAgICAg Y2FzZSBfX05SX3NldF90aHJlYWRfYXJlYToKKyAjZW5kaWYKKysjaWYgZGVmaW5lZChfX0dMSUJD X18pCisgICAgIGNhc2UgX19OUl9zZXRfdGlkX2FkZHJlc3M6CisrI2VuZGlmCisgICAgIGNhc2Ug X19OUl91bnNoYXJlOgorICNpZiAhZGVmaW5lZChfX21pcHNfXykgJiYgIWRlZmluZWQoX19hYXJj aDY0X18pCisgICAgIGNhc2UgX19OUl92Zm9yazoKK0BAIC00OTYsNiArNTAxLDkgQEAKKyAgICAg Y2FzZSBfX05SX21sb2NrOgorICAgICBjYXNlIF9fTlJfbXVubG9jazoKKyAgICAgY2FzZSBfX05S X211bm1hcDoKKysjaWYgIWRlZmluZWQoX19HTElCQ19fKQorKyAgICBjYXNlIF9fTlJfbXJlbWFw OgorKyNlbmRpZgorICAgICAgIHJldHVybiB0cnVlOworICAgICBjYXNlIF9fTlJfbWFkdmlzZToK KyAgICAgY2FzZSBfX05SX21pbmNvcmU6CitAQCAtNTExLDcgKzUxOSw5IEBACisgICAgIGNhc2Ug X19OUl9tb2RpZnlfbGR0OgorICNlbmRpZgorICAgICBjYXNlIF9fTlJfbXByb3RlY3Q6CisrI2lm IGRlZmluZWQoX19HTElCQ19fKQorICAgICBjYXNlIF9fTlJfbXJlbWFwOgorKyNlbmRpZgorICAg ICBjYXNlIF9fTlJfbXN5bmM6CisgICAgIGNhc2UgX19OUl9tdW5sb2NrYWxsOgorICAgICBjYXNl IF9fTlJfcmVhZGFoZWFkOgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNo ZXMvMDAxMi1tdXNsLWNocm9taXVtLWRlZmF1bHQtc3RhY2tzaXplLnBhdGNoIGIvc3JjcGtncy9x dDUtd2ViZW5naW5lL3BhdGNoZXMvMDAxMi1tdXNsLWNocm9taXVtLWRlZmF1bHQtc3RhY2tzaXpl LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43YmY1YTIyZmJh NwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMTIt bXVzbC1jaHJvbWl1bS1kZWZhdWx0LXN0YWNrc2l6ZS5wYXRjaApAQCAtMCwwICsxLDE1IEBACist LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvdGhyZWFkaW5nL3BsYXRm b3JtX3RocmVhZF9saW51eC5jYy5vcmlnCTIwMTgtMDktMTkgMTg6MDU6MTUuNTIzOTIzNzAzICsw MjAwCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvdGhyZWFkaW5n L3BsYXRmb3JtX3RocmVhZF9saW51eC5jYwkyMDE4LTA5LTE5IDE4OjA4OjA1LjE1MDkzMjQ1NCAr MDIwMAorQEAgLTE3Myw3ICsxNzMsMTIgQEAKKyAKKyBzaXplX3QgR2V0RGVmYXVsdFRocmVhZFN0 YWNrU2l6ZShjb25zdCBwdGhyZWFkX2F0dHJfdCYgYXR0cmlidXRlcykgeworICNpZiAhZGVmaW5l ZChUSFJFQURfU0FOSVRJWkVSKQorKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKKyAgIHJldHVybiAw OworKyNlbHNlIC8vIGRlZmluZWQoX19HTElCQ19fKQorKyAgLy8gRm9yIE11c2wgbGliYyB0cnkg d2l0aCBhIGRlZmF1bHQgc3RhY2sgc2l6ZSBvZiAyIE1pQgorKyAgcmV0dXJuIDIgKiAxMDI0ICog MTAyNDsKKysjZW5kaWYgLy8gIWRlZmluZWQoX19HTElCQ19fKQorICNlbHNlCisgICAvLyBUaHJl YWRTYW5pdGl6ZXIgYmxvYXRzIHRoZSBzdGFjayBoZWF2aWx5LiBFdmlkZW5jZSBoYXMgYmVlbiB0 aGF0IHRoZQorICAgLy8gZGVmYXVsdCBzdGFjayBzaXplIGlzbid0IGVub3VnaCBmb3Igc29tZSBi cm93c2VyIHRlc3RzLgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMv MDAxMy1kYXRhX3BhY2stYmUucGF0Y2ggYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8w MDEzLWRhdGFfcGFjay1iZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uYzExM2RkYjY1NjYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdp bmUvcGF0Y2hlcy8wMDEzLWRhdGFfcGFjay1iZS5wYXRjaApAQCAtMCwwICsxLDE1IEBACistLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VpL2Jhc2UvcmVzb3VyY2UvZGF0YV9w YWNrLmNjLm9yaWcJMjAxOC0wOS0xMSAxNDoxNjo1My4xMDQ4OTczNzkgKzAyMDAKKysrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdWkvYmFzZS9yZXNvdXJjZS9kYXRhX3BhY2su Y2MJMjAxOC0wOS0xMSAxNDoxNzoxMi4wMDk4OTYyNTMgKzAyMDAKK0BAIC0zODMsMTIgKzM4Myw2 IEBACisgCisgYm9vbCBEYXRhUGFjazo6R2V0U3RyaW5nUGllY2UodWludDE2X3QgcmVzb3VyY2Vf aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTo6U3RyaW5nUGllY2UqIGRh dGEpIGNvbnN0IHsKKy0gIC8vIEl0IHdvbid0IGJlIGhhcmQgdG8gbWFrZSB0aGlzIGVuZGlhbi1h Z25vc3RpYywgYnV0IGl0J3Mgbm90IHdvcnRoCistICAvLyBib3RoZXJpbmcgdG8gZG8gcmlnaHQg bm93LgorLSNpZiAhZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOKQorLSNlcnJvciAiZGF0 YXBhY2sgYXNzdW1lcyBsaXR0bGUgZW5kaWFuIgorLSNlbmRpZgorLQorICAgY29uc3QgRW50cnkq IHRhcmdldCA9IExvb2t1cEVudHJ5QnlJZChyZXNvdXJjZV9pZCk7CisgICBpZiAoIXRhcmdldCkK KyAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3Bh dGNoZXMvMDAxNC1tdXNsLWNyb3NzLW5vLWFzbV9wdHJhY2VfaC5wYXRjaCBiL3NyY3BrZ3MvcXQ1 LXdlYmVuZ2luZS9wYXRjaGVzLzAwMTQtbXVzbC1jcm9zcy1uby1hc21fcHRyYWNlX2gucGF0Y2gK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjE0MDc0MmY3MmMyCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAxNC1tdXNsLWNy b3NzLW5vLWFzbV9wdHJhY2VfaC5wYXRjaApAQCAtMCwwICsxLDMwIEBACistLS0gcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3Ny Yy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X3B0cmFjZV9kdW1wZXIuY2MJMjAx OC0wOC0yNyAxMDoyMTozMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9s aW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfcHRyYWNlX2R1bXBlci5jYwkyMDE4LTExLTIyIDAw OjQxOjU4LjUyMjQ3NzU1OSArMDEwMAorQEAgLTM4LDcgKzM4LDEyIEBACisgCisgI2luY2x1ZGUg ImNsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfcHRyYWNlX2R1bXBlci5oIgorIAor KyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKKyAjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgorKyNlbHNl CisrLyogRm9yIGFybSotbXVzbCB0aGlzIGRlZmluaXRpb24gaXMgbWlzc2luZyAqLworKyNkZWZp bmUgQVJNX3NwIHVyZWdzWzEzXQorKyNlbmRpZgorICNpbmNsdWRlIDxhc3NlcnQuaD4KKyAjaW5j bHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKy0tLSBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVu dC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfY29yZV9kdW1wZXIuY2MJMjAxOC0wOC0yNyAx MDoyMTozMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5p ZHVtcF93cml0ZXIvbGludXhfY29yZV9kdW1wZXIuY2MJMjAxOC0xMS0yMiAwMDo0OTozOS41MzM0 OTIyNDUgKzAxMDAKK0BAIC0zMiw3ICszMiwxMiBAQAorIAorICNpbmNsdWRlICJjbGllbnQvbGlu dXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2NvcmVfZHVtcGVyLmgiCisgCisrI2lmIGRlZmluZWQo X19HTElCQ19fKQorICNpbmNsdWRlIDxhc20vcHRyYWNlLmg+CisrI2Vsc2UKKysvKiBGb3IgYXJt Ki1tdXNsIHRoaXMgZGVmaW5pdGlvbiBpcyBtaXNzaW5nICovCisrI2RlZmluZSBBUk1fc3AgdXJl Z3NbMTNdCisrI2VuZGlmCisgI2luY2x1ZGUgPGFzc2VydC5oPgorICNpbmNsdWRlIDxlbGYuaD4K KyAjaW5jbHVkZSA8c3RkaW8uaD4KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9w YXRjaGVzLzAwMTUteWFzbS1ubHMucGF0Y2ggYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hl cy8wMDE1LXlhc20tbmxzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi4yMmFjMDQyMDc2NAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2lu ZS9wYXRjaGVzLzAwMTUteWFzbS1ubHMucGF0Y2gKQEAgLTAsMCArMSwxMyBAQAorZGlmZiAtLWdp dCBzcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkveWFzbS9zb3VyY2UvY29uZmlnL2xp bnV4L2NvbmZpZy5oIHNyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS95YXNtL3NvdXJj ZS9jb25maWcvbGludXgvY29uZmlnLmgKK2luZGV4IDllMzY1MzkuLmY1ODgwODMgMTAwNjQ0Cist LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy90aGlyZF9wYXJ0eS95YXNtL3Nv dXJjZS9jb25maWcvbGludXgvY29uZmlnLmgKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vL3RoaXJkX3BhcnR5L3lhc20vc291cmNlL2NvbmZpZy9saW51eC9jb25maWcuaAor QEAgLTUsNyArNSw3IEBACisgI2RlZmluZSBDUFBfUFJPRyAiZ2NjIC1FIgorIAorIC8qICovCist I2RlZmluZSBFTkFCTEVfTkxTIDEKKysvKiAjdW5kZWYgRU5BQkxFX05MUyAxICovCisgCisgLyog RGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBhYm9ydCcgZnVuY3Rpb24uICovCisgI2RlZmlu ZSBIQVZFX0FCT1JUIDEKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVz LzAwMTYtcXQtbXVzbC1leGVjaW5mby5wYXRjaCBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRj aGVzLzAwMTYtcXQtbXVzbC1leGVjaW5mby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uYzFjZGI1MzcyMTIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0 NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDE2LXF0LW11c2wtZXhlY2luZm8ucGF0Y2gKQEAgLTAsMCAr MSw5NCBAQAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vYmFzZS9kZWJ1 Zy9zdGFja190cmFjZV9wb3NpeC5jYy5vcmlnCTIwMTktMDQtMDkgMDk6MzE6MTYuMDAwMDAwMDAw ICswMjAwCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy9iYXNlL2RlYnVn L3N0YWNrX3RyYWNlX3Bvc2l4LmNjCTIwMTktMDUtMDYgMjM6MTY6MTMuMjQ1NTAyNDY3ICswMjAw CitAQCAtMjcsNyArMjcsNyBAQAorICNpZiAhZGVmaW5lZChVU0VfU1lNQk9MSVpFKQorICNpbmNs dWRlIDxjeHhhYmkuaD4KKyAjZW5kaWYKKy0jaWYgIWRlZmluZWQoX19VQ0xJQkNfXykgJiYgIWRl ZmluZWQoX0FJWCkKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCisg I2luY2x1ZGUgPGV4ZWNpbmZvLmg+CisgI2VuZGlmCisgCitAQCAtODYsNyArODYsNyBAQAorICAg Ly8gTm90ZTogY29kZSBpbiB0aGlzIGZ1bmN0aW9uIGlzIE5PVCBhc3luYy1zaWduYWwgc2FmZSAo c3RkOjpzdHJpbmcgdXNlcworICAgLy8gbWFsbG9jIGludGVybmFsbHkpLgorIAorLSNpZiAhZGVm aW5lZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQorKyNpZiBkZWZpbmVkKF9fR0xJQkNf XykgJiYgIWRlZmluZWQoX0FJWCkKKyAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgc2VhcmNoX2Zy b20gPSAwOworICAgd2hpbGUgKHNlYXJjaF9mcm9tIDwgdGV4dC0+c2l6ZSgpKSB7CisgICAgIC8v IExvb2sgZm9yIHRoZSBzdGFydCBvZiBhIG1hbmdsZWQgc3ltYm9sLCBmcm9tIHNlYXJjaF9mcm9t LgorQEAgLTEyMSw3ICsxMjEsNyBAQAorICAgICAgIHNlYXJjaF9mcm9tID0gbWFuZ2xlZF9zdGFy dCArIDI7CisgICAgIH0KKyAgIH0KKy0jZW5kaWYgIC8vICFkZWZpbmVkKF9fVUNMSUJDX18pICYm ICFkZWZpbmVkKF9BSVgpCisrI2VuZGlmICAvLyAhZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZp bmVkKF9BSVgpCisgfQorICNlbmRpZiAgLy8gIWRlZmluZWQoVVNFX1NZTUJPTElaRSkKKyAKK0BA IC0xMzMsNyArMTMzLDcgQEAKKyAgIHZpcnR1YWwgfkJhY2t0cmFjZU91dHB1dEhhbmRsZXIoKSA9 IGRlZmF1bHQ7CisgfTsKKyAKKy0jaWYgIWRlZmluZWQoX19VQ0xJQkNfXykgJiYgIWRlZmluZWQo X0FJWCkKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCisgdm9pZCBP dXRwdXRQb2ludGVyKHZvaWQqIHBvaW50ZXIsIEJhY2t0cmFjZU91dHB1dEhhbmRsZXIqIGhhbmRs ZXIpIHsKKyAgIC8vIFRoaXMgc2hvdWxkIGJlIG1vcmUgdGhhbiBlbm91Z2ggdG8gc3RvcmUgYSA2 NC1iaXQgbnVtYmVyIGluIGhleDoKKyAgIC8vIDE2IGhleCBkaWdpdHMgKyAxIGZvciBudWxsLXRl cm1pbmF0b3IuCitAQCAtMjE2LDcgKzIxNiw3IEBACisgICB9CisgI2VuZGlmICAvLyBkZWZpbmVk KFVTRV9TWU1CT0xJWkUpCisgfQorLSNlbmRpZiAgLy8gIWRlZmluZWQoX19VQ0xJQkNfXykgJiYg IWRlZmluZWQoX0FJWCkKKysjZW5kaWYgIC8vICFkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmlu ZWQoX0FJWCkKKyAKKyB2b2lkIFByaW50VG9TdGRlcnIoY29uc3QgY2hhciogb3V0cHV0KSB7Cisg ICAvLyBOT1RFOiBUaGlzIGNvZGUgTVVTVCBiZSBhc3luYy1zaWduYWwgc2FmZSAoaXQncyB1c2Vk IGJ5IGluLXByb2Nlc3MKK0BAIC04MTIsNyArODEyLDcgQEAKKyAgIC8vIE5PVEU6IFRoaXMgY29k ZSBNVVNUIGJlIGFzeW5jLXNpZ25hbCBzYWZlIChpdCdzIHVzZWQgYnkgaW4tcHJvY2VzcworICAg Ly8gc3RhY2sgZHVtcGluZyBzaWduYWwgaGFuZGxlcikuIE5PIG1hbGxvYyBvciBzdGRpbyBpcyBh bGxvd2VkIGhlcmUuCisgCistI2lmICFkZWZpbmVkKF9fVUNMSUJDX18pICYmICFkZWZpbmVkKF9B SVgpCisrI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQorICAgLy8gVGhv dWdoIHRoZSBiYWNrdHJhY2UgQVBJIG1hbiBwYWdlIGRvZXMgbm90IGxpc3QgYW55IHBvc3NpYmxl IG5lZ2F0aXZlCisgICAvLyByZXR1cm4gdmFsdWVzLCB3ZSB0YWtlIG5vIGNoYW5jZS4KKyAgIHJl dHVybiBiYXNlOjpzYXR1cmF0ZWRfY2FzdDxzaXplX3Q+KGJhY2t0cmFjZSh0cmFjZSwgY291bnQp KTsKK0BAIC04MjUsMTMgKzgyNSwxMyBAQAorIC8vIE5PVEU6IFRoaXMgY29kZSBNVVNUIGJlIGFz eW5jLXNpZ25hbCBzYWZlIChpdCdzIHVzZWQgYnkgaW4tcHJvY2VzcworIC8vIHN0YWNrIGR1bXBp bmcgc2lnbmFsIGhhbmRsZXIpLiBOTyBtYWxsb2Mgb3Igc3RkaW8gaXMgYWxsb3dlZCBoZXJlLgor IAorLSNpZiAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQorKyNpZiBkZWZp bmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKKyAgIFByaW50QmFja3RyYWNlT3V0cHV0 SGFuZGxlciBoYW5kbGVyOworICAgUHJvY2Vzc0JhY2t0cmFjZSh0cmFjZV8sIGNvdW50XywgcHJl Zml4X3N0cmluZywgJmhhbmRsZXIpOworICNlbmRpZgorIH0KKyAKKy0jaWYgIWRlZmluZWQoX19V Q0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pICYmICFk ZWZpbmVkKF9BSVgpCisgdm9pZCBTdGFja1RyYWNlOjpPdXRwdXRUb1N0cmVhbVdpdGhQcmVmaXgo c3RkOjpvc3RyZWFtKiBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBjaGFyKiBwcmVmaXhfc3RyaW5nKSBjb25zdCB7CisgICBTdHJlYW1CYWNrdHJh Y2VPdXRwdXRIYW5kbGVyIGhhbmRsZXIob3MpOworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9iYXNlL2RlYnVnL3N0YWNrX3RyYWNlLmNjCTIwMTktMDQtMDkgMDk6MzE6MTYu MDAwMDAwMDAwICswMjAwCisrKysgLQkyMDE5LTA1LTA2IDIzOjE4OjE0LjkyMzU2Njk5MiArMDIw MAorQEAgLTIzMyw3ICsyMzMsNyBAQAorIH0KKyBzdGQ6OnN0cmluZyBTdGFja1RyYWNlOjpUb1N0 cmluZ1dpdGhQcmVmaXgoY29uc3QgY2hhciogcHJlZml4X3N0cmluZykgY29uc3QgeworICAgc3Rk OjpzdHJpbmdzdHJlYW0gc3RyZWFtOworLSNpZiAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVm aW5lZChfQUlYKQorKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKKyAg IE91dHB1dFRvU3RyZWFtV2l0aFByZWZpeCgmc3RyZWFtLCBwcmVmaXhfc3RyaW5nKTsKKyAjZW5k aWYKKyAgIHJldHVybiBzdHJlYW0uc3RyKCk7CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtLy9iYXNlL2xvZ2dpbmcuY2MJMjAxNy0xMS0yOCAxNDowNjo1My4wMDAwMDAwMDAg KzAxMDAKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL2Jhc2UvbG9nZ2lu Zy5jYwkyMDE4LTAxLTI3IDIyOjQ2OjM0Ljk3MDQwNjgwNyArMDEwMAorQEAgLTU0Niw3ICs1NDYs NyBAQAorIAorIExvZ01lc3NhZ2U6On5Mb2dNZXNzYWdlKCkgeworICAgc2l6ZV90IHN0YWNrX3N0 YXJ0ID0gc3RyZWFtXy50ZWxscCgpOworLSNpZiAhZGVmaW5lZChPRkZJQ0lBTF9CVUlMRCkgJiYg IWRlZmluZWQoT1NfTkFDTCkgJiYgIWRlZmluZWQoX19VQ0xJQkNfXykgJiYgXAorKyNpZiAhZGVm aW5lZChPRkZJQ0lBTF9CVUlMRCkgJiYgIWRlZmluZWQoT1NfTkFDTCkgJiYgZGVmaW5lZChfX0dM SUJDX18pICYmIFwKKyAgICAgIWRlZmluZWQoT1NfQUlYKQorICAgaWYgKHNldmVyaXR5XyA9PSBM T0dfRkFUQUwgJiYgIWJhc2U6OmRlYnVnOjpCZWluZ0RlYnVnZ2VkKCkpIHsKKyAgICAgLy8gSW5j bHVkZSBhIHN0YWNrIHRyYWNlIG9uIGEgZmF0YWwsIHVubGVzcyBhIGRlYnVnZ2VyIGlzIGF0dGFj aGVkLgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAxNy1xdC1t dXNsLXRocmVhZC1zdGFja3NpemUucGF0Y2ggYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hl cy8wMDE3LXF0LW11c2wtdGhyZWFkLXN0YWNrc2l6ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uNDk2NzUzYmVmMzAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNw a2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDE3LXF0LW11c2wtdGhyZWFkLXN0YWNrc2l6ZS5w YXRjaApAQCAtMCwwICsxLDI2IEBACitkaWZmIC0tZ2l0IGEvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3BwYXBpL3V0aWxpdHkvdGhyZWFkaW5nL3NpbXBsZV90aHJlYWQuY2MgYi9zcmMvM3JkcGFydHkv Y2hyb21pdW0vcHBhcGkvdXRpbGl0eS90aHJlYWRpbmcvc2ltcGxlX3RocmVhZC5jYworaW5kZXgg MDJiZjQ5Yi4uMDVlZTE4MiAxMDA2NDQKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vcHBhcGkvdXRpbGl0eS90aHJlYWRpbmcvc2ltcGxlX3RocmVhZC5jYworKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9wcGFwaS91dGlsaXR5L3RocmVhZGluZy9zaW1w bGVfdGhyZWFkLmNjCitAQCAtMTMsNyArMTMsNyBAQCBuYW1lc3BhY2UgcHAgeworIG5hbWVzcGFj ZSB7CisgCisgLy8gVXNlIDJNQiBkZWZhdWx0IHN0YWNrIHNpemUgZm9yIE5hdGl2ZSBDbGllbnQs IG90aGVyd2lzZSB1c2Ugc3lzdGVtIGRlZmF1bHQuCistI2lmIGRlZmluZWQoX19uYXRpdmVfY2xp ZW50X18pCisrI2lmIGRlZmluZWQoX19uYXRpdmVfY2xpZW50X18pIHx8ICFkZWZpbmVkKF9fR0xJ QkNfXykKKyBjb25zdCBzaXplX3Qga0RlZmF1bHRTdGFja1NpemUgPSAyICogMTAyNCAqIDEwMjQ7 CisgI2Vsc2UKKyBjb25zdCBzaXplX3Qga0RlZmF1bHRTdGFja1NpemUgPSAwOworZGlmZiAtLWdp dCBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92OC9zcmMvYmFzZS9wbGF0Zm9ybS9wbGF0Zm9ybS1w b3NpeC5jYyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92OC9zcmMvYmFzZS9wbGF0Zm9ybS9wbGF0 Zm9ybS1wb3NpeC5jYworaW5kZXggY2Y3ZjNlYy4uZTA2YTVjZSAxMDA2NDQKKy0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdjgvc3JjL2Jhc2UvcGxhdGZvcm0vcGxhdGZvcm0t cG9zaXguY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdjgvc3JjL2Jh c2UvcGxhdGZvcm0vcGxhdGZvcm0tcG9zaXguY2MKK0BAIC03NjEsNyArNzYxLDcgQEAgdm9pZCBU aHJlYWQ6OlN0YXJ0KCkgeworICNpZiBWOF9PU19NQUNPU1gKKyAgICAgLy8gRGVmYXVsdCBvbiBN YWMgT1MgWCBpcyA1MTJrQiAtLSBidW1wIHVwIHRvIDFNQgorICAgICBzdGFja19zaXplID0gMSAq IDEwMjQgKiAxMDI0OworLSNlbGlmIFY4X09TX0FJWAorKyNlbGlmIFY4X09TX0FJWCB8fCAhZGVm aW5lZChfX0dMSUJDX18pCisgICAgIC8vIERlZmF1bHQgb24gQUlYIGlzIDk2a0IgLS0gYnVtcCB1 cCB0byAyTUIKKyAgICAgc3RhY2tfc2l6ZSA9IDIgKiAxMDI0ICogMTAyNDsKKyAjZW5kaWYKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMTgtc2FuZGJveC1tZW1i YXJyaWVyLnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAxOC1zYW5kYm94 LW1lbWJhcnJpZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LmI3Mzk3MWYyNDMyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3Bh dGNoZXMvMDAxOC1zYW5kYm94LW1lbWJhcnJpZXIucGF0Y2gKQEAgLTAsMCArMSw2MCBAQAorLS0t IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vc2FuZGJveC9saW51eC9zeXN0ZW1f aGVhZGVycy9hcm02NF9saW51eF9zeXNjYWxscy5oCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtLy9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2FybTY0X2xpbnV4X3N5 c2NhbGxzLmgKK0BAIC0xMDYzLDQgKzEwNjMsOCBAQAorICNkZWZpbmUgX19OUl9tZW1mZF9jcmVh dGUgMjc5CisgI2VuZGlmCisgCisrI2lmICFkZWZpbmVkKF9fTlJfbWVtYmFycmllcikKKysjZGVm aW5lIF9fTlJfbWVtYmFycmllciAyODMKKysjZW5kaWYKKysKKyAjZW5kaWYgIC8vIFNBTkRCT1hf TElOVVhfU1lTVEVNX0hFQURFUlNfQVJNNjRfTElOVVhfU1lTQ0FMTFNfSF8KKworLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVy cy9hcm1fbGludXhfc3lzY2FsbHMuaAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS8vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9hcm1fbGludXhfc3lzY2FsbHMuaAor QEAgLTEzODUsNiArMTM4NSwxMCBAQAorICNkZWZpbmUgX19OUl9tZW1mZF9jcmVhdGUgKF9fTlJf U1lTQ0FMTF9CQVNFKzM4NSkKKyAjZW5kaWYKKyAKKysjaWYgIWRlZmluZWQoX19OUl9tZW1iYXJy aWVyKQorKyNkZWZpbmUgX19OUl9tZW1iYXJyaWVyIChfX05SX1NZU0NBTExfQkFTRSszODkpCisr I2VuZGlmCisrCisgLy8gQVJNIHByaXZhdGUgc3lzY2FsbHMuCisgI2lmICFkZWZpbmVkKF9fQVJN X05SX0JBU0UpCisgI2RlZmluZSBfX0FSTV9OUl9CQVNFIChfX05SX1NZU0NBTExfQkFTRSArIDB4 RjAwMDApCisKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL3NhbmRib3gv bGludXgvc3lzdGVtX2hlYWRlcnMveDg2XzMyX2xpbnV4X3N5c2NhbGxzLmgKKysrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMv eDg2XzMyX2xpbnV4X3N5c2NhbGxzLmgKK0BAIC0xNDIyLDUgKzE0MjIsOSBAQAorICNkZWZpbmUg X19OUl9tZW1mZF9jcmVhdGUgMzU2CisgI2VuZGlmCisgCisrI2lmICFkZWZpbmVkKF9fTlJfbWVt YmFycmllcikKKysjZGVmaW5lIF9fTlJfbWVtYmFycmllciAzNzUKKysjZW5kaWYKKysKKyAjZW5k aWYgIC8vIFNBTkRCT1hfTElOVVhfU1lTVEVNX0hFQURFUlNfWDg2XzMyX0xJTlVYX1NZU0NBTExT X0hfCisgCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy9zYW5kYm94L2xp bnV4L3N5c3RlbV9oZWFkZXJzL3g4Nl82NF9saW51eF9zeXNjYWxscy5oCisrKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL3g4 Nl82NF9saW51eF9zeXNjYWxscy5oCitAQCAtMTI5MCw1ICsxMjkwLDkgQEAKKyAjZGVmaW5lIF9f TlJfbWVtZmRfY3JlYXRlIDMxOQorICNlbmRpZgorIAorKyNpZiAhZGVmaW5lZChfX05SX21lbWJh cnJpZXIpCisrI2RlZmluZSBfX05SX21lbWJhcnJpZXIgMzI0CisrI2VuZGlmCisrCisgI2VuZGlm ICAvLyBTQU5EQk9YX0xJTlVYX1NZU1RFTV9IRUFERVJTX1g4Nl82NF9MSU5VWF9TWVNDQUxMU19I XworIAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vc2FuZGJveC9saW51 eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfc2V0cy5jYworKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS8vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5 c2NhbGxfc2V0cy5jYworQEAgLTM3MCw2ICszNzAsNyBAQAorICAgc3dpdGNoIChzeXNubykgewor ICAgICBjYXNlIF9fTlJfZXhpdDoKKyAgICAgY2FzZSBfX05SX2V4aXRfZ3JvdXA6CisrICAgIGNh c2UgX19OUl9tZW1iYXJyaWVyOgorICAgICBjYXNlIF9fTlJfd2FpdDQ6CisgICAgIGNhc2UgX19O Ul93YWl0aWQ6CisgI2lmIGRlZmluZWQoX19pMzg2X18pCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0 NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDE5LWduLWNyb3NzLXN5c3Jvb3QucGF0Y2ggYi9zcmNwa2dz L3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDE5LWduLWNyb3NzLXN5c3Jvb3QucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmVlNjY4OWE0MTgzCi0tLSAvZGV2L251 bGwKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAxOS1nbi1jcm9zcy1zeXNy b290LnBhdGNoCkBAIC0wLDAgKzEsMjQgQEAKK1RoZXJlIGlzIG5vIHJlYXNvbiB0byBydW4gdGhp cyBzY3JpcHQgYW5kIHJ1bm5pbmcgaXQgZmFpbHMgb24gYXJjaGl0ZWN0dXJlcworY2hyb21pdW0g ZG9lcyBub3Qgb2ZmaWNpYWxseSBzdXBwb3J0IChzdWNoIGFzIHBwYzY0KS4KKworLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9idWlsZC9jb25maWcvcG9zaXgvQlVJTEQuZ24K KysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYnVpbGQvY29uZmlnL3Bvc2l4 L0JVSUxELmduCitAQCAtMTAyLDEyICsxMDIsMTIgQEAgY29uZmlnKCJydW50aW1lX2xpYnJhcnki KSB7CisgICAgICAgIyB3aGVuIHR1cm5pbmcgdGhlIHN5c3Jvb3Qgb24gb3Igb2ZmLiAoZGVmaW5l cyBhcmUgcGFzc2VkIHZpYSB0aGUgY29tbWFuZAorICAgICAgICMgbGluZSwgYW5kIGJ1aWxkIHN5 c3RlbSByZWJ1aWxkcyB0aGluZ3Mgd2hlbiB0aGVpciBjb21tYW5kbGluZQorICAgICAgICMgY2hh bmdlcykuIE5vdGhpbmcgc2hvdWxkIGV2ZXIgcmVhZCB0aGlzIGRlZmluZS4KKy0gICAgICBzeXNy b290X2hhc2ggPQorLSAgICAgICAgICBleGVjX3NjcmlwdCgiLy9idWlsZC9saW51eC9zeXNyb290 X3NjcmlwdHMvaW5zdGFsbC1zeXNyb290LnB5IiwKKy0gICAgICAgICAgICAgICAgICAgICAgWyAi LS1wcmludC1oYXNoPSRjdXJyZW50X2NwdSIgXSwKKy0gICAgICAgICAgICAgICAgICAgICAgInRy aW0gc3RyaW5nIiwKKy0gICAgICAgICAgICAgICAgICAgICAgWyAiLy9idWlsZC9saW51eC9zeXNy b290X3NjcmlwdHMvc3lzcm9vdHMuanNvbiIgXSkKKy0gICAgICBkZWZpbmVzICs9IFsgIkNSX1NZ U1JPT1RfSEFTSD0kc3lzcm9vdF9oYXNoIiBdCisrICAgICAgI3N5c3Jvb3RfaGFzaCA9CisrICAg ICAgIyAgICBleGVjX3NjcmlwdCgiLy9idWlsZC9saW51eC9zeXNyb290X3NjcmlwdHMvaW5zdGFs bC1zeXNyb290LnB5IiwKKysgICAgICAjICAgICAgICAgICAgICAgIFsgIi0tcHJpbnQtaGFzaD0k Y3VycmVudF9jcHUiIF0sCisrICAgICAgIyAgICAgICAgICAgICAgICAidHJpbSBzdHJpbmciLAor KyAgICAgICMgICAgICAgICAgICAgICAgWyAiLy9idWlsZC9saW51eC9zeXNyb290X3NjcmlwdHMv c3lzcm9vdHMuanNvbiIgXSkKKysgICAgICAjZGVmaW5lcyArPSBbICJDUl9TWVNST09UX0hBU0g9 JHN5c3Jvb3RfaGFzaCIgXQorICAgICB9CisgICAgIGFzbWZsYWdzICs9IHN5c3Jvb3RfZmxhZ3MK KyAKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMjAtbXNndmVj LXB1c2hfYmFjay5wYXRjaCBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMjAtbXNn dmVjLXB1c2hfYmFjay5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uNzU0ODFhMjg4OWYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUv cGF0Y2hlcy8wMDIwLW1zZ3ZlYy1wdXNoX2JhY2sucGF0Y2gKQEAgLTAsMCArMSwxNCBAQAorLS0t IHF0d2ViZW5naW5lLWV2ZXJ5d2hlcmUtc3JjLTUuMTQuMC1iZXRhMi9zcmMvM3JkcGFydHkvY2hy b21pdW0vbmV0L3NvY2tldC91ZHBfc29ja2V0X3Bvc2l4LmNjCTIwMTktMTAtMDggMDg6Mjc6NDMu MDAwMDAwMDAwICswMjAwCisrKysgLQkyMDE5LTExLTExIDIyOjQxOjQ2LjY5OTA2ODg4OSArMDEw MAorQEAgLTExOTEsNyArMTE5MSwxMSBAQAorICAgICBtc2dfaW92LT5wdXNoX2JhY2soe2NvbnN0 X2Nhc3Q8Y2hhcio+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5sZW5ndGgoKX0pOworICAgbXNn dmVjLT5yZXNlcnZlKGJ1ZmZlcnMuc2l6ZSgpKTsKKyAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwg YnVmZmVycy5zaXplKCk7IGorKykKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pCisgICAgIG1zZ3Zl Yy0+cHVzaF9iYWNrKHt7bnVsbHB0ciwgMCwgJm1zZ19pb3Zbal0sIDEsIG51bGxwdHIsIDAsIDB9 LCAwfSk7CisrI2Vsc2UKKysgICAgbXNndmVjLT5wdXNoX2JhY2soe3tudWxscHRyLCAwLCAmbXNn X2lvdltqXSwgMSwgMCwgMCwgMH0sIDB9KTsKKysjZW5kaWYKKyAgIGludCByZXN1bHQgPSBIQU5E TEVfRUlOVFIoU2VuZG1tc2coZmQsICZtc2d2ZWNbMF0sIGJ1ZmZlcnMuc2l6ZSgpLCAwKSk7Cisg ICBTZW5kUmVzdWx0IHNlbmRfcmVzdWx0KDAsIDAsIHN0ZDo6bW92ZShidWZmZXJzKSk7CisgICBp ZiAocmVzdWx0IDwgMCkgewpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNo ZXMvMDAyMS1zYW5kYm94LXNjaGVkX2dldHBhcmFtLnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5n aW5lL3BhdGNoZXMvMDAyMS1zYW5kYm94LXNjaGVkX2dldHBhcmFtLnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hOTFlODVlY2EzYwotLS0gL2Rldi9udWxsCisr KyBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMjEtc2FuZGJveC1zY2hlZF9nZXRw YXJhbS5wYXRjaApAQCAtMCwwICsxLDI0IEBACitBbGxvdyBTWVNfc2NoZWRfZ2V0cGFyYW0gYW5k IFNZU19zY2hlZF9nZXRzY2hlZHVsZXIKK211c2wgdXNlcyB0aGVtIGZvciBwdGhyZWFkX2dldHNj aGVkcGFyYW0oKQorCitzb3VyY2U6IGh0dHBzOi8vZ2l0LmFscGluZWxpbnV4Lm9yZy9hcG9ydHMv Y29tbWl0L2NvbW11bml0eS9jaHJvbWl1bT9pZD01NGFmOWY4YWMyNGY1MmQzODJjNTc1OGUyNDQ1 YmYwMjA2ZWZmNDBlCisKKy0tLSBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zZXJ2aWNlcy9zZXJ2 aWNlX21hbmFnZXIvc2FuZGJveC9saW51eC9icGZfcmVuZGVyZXJfcG9saWN5X2xpbnV4LmNjCTIw MTktMTAtMDggMDg6Mjc6NDMuMDAwMDAwMDAwICswMjAwCisrKysgLQkyMDE5LTExLTExIDIyOjMz OjUxLjg2NTE1MzY4NCArMDEwMAorQEAgLTg4LDEwICs4OCwxNiBAQAorICAgICBjYXNlIF9fTlJf c3lzaW5mbzoKKyAgICAgY2FzZSBfX05SX3RpbWVzOgorICAgICBjYXNlIF9fTlJfdW5hbWU6Cisr I2lmICFkZWZpbmVkKF9fR0xJQkNfXykKKysgICAgY2FzZSBfX05SX3NjaGVkX2dldHBhcmFtOgor KyAgICBjYXNlIF9fTlJfc2NoZWRfZ2V0c2NoZWR1bGVyOgorKyNlbmRpZgorICAgICAgIHJldHVy biBBbGxvdygpOworICAgICBjYXNlIF9fTlJfc2NoZWRfZ2V0YWZmaW5pdHk6CisrI2lmIGRlZmlu ZWQoX19HTElCQ19fKQorICAgICBjYXNlIF9fTlJfc2NoZWRfZ2V0cGFyYW06CisgICAgIGNhc2Ug X19OUl9zY2hlZF9nZXRzY2hlZHVsZXI6CisrI2VuZGlmCisgICAgIGNhc2UgX19OUl9zY2hlZF9z ZXRzY2hlZHVsZXI6CisgICAgICAgcmV0dXJuIHNhbmRib3g6OlJlc3RyaWN0U2NoZWRUYXJnZXQo R2V0UG9saWN5UGlkKCksIHN5c25vKTsKKyAgICAgY2FzZSBfX05SX3BybGltaXQ2NDoKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMjItY2Fub25pY2FsaXplLWZp bGUtbmFtZS1tdXNsLnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAyMi1j YW5vbmljYWxpemUtZmlsZS1uYW1lLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjg5M2VkMmQ0MWJiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9x dDUtd2ViZW5naW5lL3BhdGNoZXMvMDAyMi1jYW5vbmljYWxpemUtZmlsZS1uYW1lLW11c2wucGF0 Y2gKQEAgLTAsMCArMSwxMSBAQAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9uYXNtL25hc21saWIvcmVhbHBhdGguYwkyMDE5LTA5LTIzIDE0OjI0OjIw LjAwMDAwMDAwMCArMDIwMAorKysrIC0JMjAxOS0xMC0xMSAwNjoyNzoyOC40NTAzMjk5ODYgKzAy MDAKK0BAIC01Nyw3ICs1Nyw3IEBACisgICovCisgY2hhciAqbmFzbV9yZWFscGF0aChjb25zdCBj aGFyICpyZWxfcGF0aCkKKyB7CistICAgIGNoYXIgKnJwID0gY2Fub25pY2FsaXplX2ZpbGVfbmFt ZShyZWxfcGF0aCk7CisrICAgIGNoYXIgKnJwID0gcmVhbHBhdGgocmVsX3BhdGgsIE5VTEwpOwor ICAgICByZXR1cm4gcnAgPyBycCA6IG5hc21fc3RyZHVwKHJlbF9wYXRoKTsKKyB9CisgCmRpZmYg LS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvdGVtcGxhdGUgYi9zcmNwa2dzL3F0NS13ZWJl bmdpbmUvdGVtcGxhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmU4 YjY3MjU2OWI1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3RlbXBs YXRlCkBAIC0wLDAgKzEsMTUxIEBACisjIFRlbXBsYXRlIGZpbGUgZm9yICdxdDUtd2ViZW5naW5l JworcGtnbmFtZT1xdDUtd2ViZW5naW5lCit2ZXJzaW9uPTUuMTQuMAorcmV2aXNpb249MQord3Jr c3JjPSJxdHdlYmVuZ2luZS1ldmVyeXdoZXJlLXNyYy0ke3ZlcnNpb259IgorYXJjaHM9Ing4Nl82 NCogaTY4NiogYXJtdls2N10qIHBwYzY0KiBhYXJjaDY0KiIKK2J1aWxkX3N0eWxlPXFtYWtlCitj b25maWd1cmVfYXJncz0iLS0KKyAtd2ViZW5naW5lLWljdSAtd2ViZW5naW5lLWZmbXBlZyAtd2Vi ZW5naW5lLW9wdXMgLXdlYmVuZ2luZS13ZWJwCisgLXdlYmVuZ2luZS1wZXBwZXItcGx1Z2lucyAt d2ViZW5naW5lLXByaW50aW5nLWFuZC1wZGYgLXdlYmVuZ2luZS1wcm9wcmlldGFyeS1jb2RlY3MK KyAtd2ViZW5naW5lLXB1bHNlYXVkaW8gLXdlYmVuZ2luZS1zcGVsbGNoZWNrZXIgLXdlYmVuZ2lu ZS13ZWJydGMgLXdlYmVuZ2luZS1nZW9sb2NhdGlvbgorICQodm9wdF9pZiBzbmFwc2hvdCAnJyAn LW5vJyktd2ViZW5naW5lLXY4LXNuYXBzaG90IgorIyBSZWx5IG9uIGF1dG8gZGV0ZWN0aW9uIChm YWlscyBpZiBmb3JjZWQgZm9yIGNyb3NzIGJ1aWxkcykgLXdlYmVuZ2luZS1hbHNhCitob3N0bWFr ZWRlcGVuZHM9InF0NS1xbWFrZSBncGVyZiBuaW5qYSBxdDUtaG9zdC10b29scyBmbGV4IHBrZy1j b25maWcKKyBwZXJsIHB5dGhvbiBwcm90b2J1ZiIKK21ha2VkZXBlbmRzPSJxdDUtd2ViY2hhbm5l bC1kZXZlbCBxdDUtbG9jYXRpb24tZGV2ZWwgcXQ1LXRvb2xzLWRldmVsCisgcXQ1LWRlY2xhcmF0 aXZlLWRldmVsIGxpYmV2ZW50LWRldmVsIHNuYXBweS1kZXZlbCBpY3UtZGV2ZWwgZmZtcGVnLWRl dmVsCisgbGlid2VicC1kZXZlbCBvcHVzLWRldmVsIGN1cHMtZGV2ZWwgbnNzLWRldmVsIG1pbml6 aXAtZGV2ZWwgbGlieHNsdC1kZXZlbAorIGxpYnZweC1kZXZlbCByZTItZGV2ZWwgbGliWHRzdC1k ZXZlbCBsaWJYY3Vyc29yLWRldmVsIGxpYlhjb21wb3NpdGUtZGV2ZWwKKyBqc29uY3BwLWRldmVs IGhhcmZidXp6LWRldmVsIGxjbXMyLWRldmVsIHByb3RvYnVmLWRldmVsIHB1bHNlYXVkaW8tZGV2 ZWwKKyBsaWJYcmFuZHItZGV2ZWwgTWVzYUxpYi1kZXZlbCIKK3Nob3J0X2Rlc2M9IkNyb3NzLXBs YXRmb3JtIGFwcGxpY2F0aW9uIGFuZCBVSSBmcmFtZXdvcmsgKFFUNSkgLSBXZWJFbmdpbmUgY29t cG9uZW50IgorbWFpbnRhaW5lcj0iSm9obiA8am9obnpAcG9zdGVvLm5ldD4iCitsaWNlbnNlPSJH UEwtMy4wLW9yLWxhdGVyLCBMR1BMLTMuMC1vci1sYXRlciIKK2hvbWVwYWdlPSJodHRwczovL3F0 LmlvLyIKK2Rpc3RmaWxlcz0iaHR0cDovL2Rvd25sb2FkLnF0LmlvL29mZmljaWFsX3JlbGVhc2Vz L3F0LyR7dmVyc2lvbiUuKn0vJHt2ZXJzaW9ufS9zdWJtb2R1bGVzL3F0d2ViZW5naW5lLWV2ZXJ5 d2hlcmUtc3JjLSR7dmVyc2lvbn0udGFyLnh6IgorY2hlY2tzdW09NzRmOGMxMWNjMzE4NjEyYzhk OWRjODdjZjc5MWJhZGIxZWZlNzA4MGMxMGQ4YjNlZDU4NDNiMjQ5YTk0MmQzMgorcGF0Y2hfYXJn cz0iLU5wMSIKKworYnVpbGRfb3B0aW9ucz0ic25hcHNob3QiCisKK2lmIFsgIiRDUk9TU19CVUlM RCIgXTsgdGhlbgorCWhvc3RtYWtlZGVwZW5kcys9IiBuc3MtZGV2ZWwgbGliZXZlbnQtZGV2ZWwg cXQ1LWxvY2F0aW9uLWRldmVsCisJIHF0NS1kZWNsYXJhdGl2ZS1kZXZlbCIKK2ZpCisKK2lmIFsg IiRYQlBTX1dPUkRTSVpFIiAtZXEgMzIgXTsgdGhlbgorCW5vZGVidWc9eWVzICAjIHByZXZlbnQg T09NCitmaQorCitpZiBbICEgIiRYQlBTX1dPUkRTSVpFIiA9ICIkWEJQU19UQVJHRVRfV09SRFNJ WkUiIF07IHRoZW4KKwlicm9rZW49IndlYmVuZ2luZSBjYW4gYmUgYnVpbHQgb25seSBpZiB3b3Jk IHNpemUgbWF0Y2hlcyIKKwkjVE9ETzogbG9vayBpbnRvIHdvcmtpbmcgYXJvdW5kIHRoaXMgd2l0 aCAtMzJiaXQgcGFja2FnZXMKK2ZpCisKK2Nhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgor CW1pcHMqfHBwYyopIG1ha2VkZXBlbmRzKz0iIGxpYmF0b21pYy1kZXZlbCIgOzsKKwkqKSA7Owor ZXNhYworCisjIFRPRE86IGxpa2VseSByZWxhdGVkIHRvIG5vdCBtYXRjaGluZyB3b3Jkc2l6ZQor Y2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCisJYXJtKnxtaXBzKik7OworCSopIGJ1aWxk X29wdGlvbnNfZGVmYXVsdD0ic25hcHNob3QiOzsKK2VzYWMKKworX2Jvb3RzdHJhcF9nbigpIHsK KwkjIEJvb3RzdHJhcCBnbiAoZ2VuZXJhdGUgbmluamEpCisJZWNobyAiQm9vdHN0cmFwcGluZyAn Z24nIgorCWNkICR7d3Jrc3JjfS9zcmMvM3JkcGFydHkvZ24KKwlDRkxBR1M9IiRDRkxBR1NfaG9z dCIgQ1hYRkxBR1M9IiRDWFhGTEFHU19ob3N0IiBMREZMQUdTPSIkTERGTEFHU19ob3N0IiBcCisJ UEtHQ09ORklHPS91c3IvYmluL3BrZ2NvbmZpZyBQS0dfQ09ORklHX1BBVEg9Ii91c3IvbGliL3Br Z2NvbmZpZzovdXNyL3NoYXJlL3BrZ2NvbmZpZyIgXAorCQlweXRob24yIGJ1aWxkL2dlbi5weSAt LW5vLWxhc3QtY29tbWl0LXBvc2l0aW9uIC0tb3V0LXBhdGggXAorCQkJJHt3cmtzcmN9L3NyYy8z cmRwYXJ0eS9nbi9vdXQvUmVsZWFzZSAtLWNjICIkQ0NfaG9zdCIgXAorICAgICAgICAgICAgICAg ICAgICAgICAgLS1jeHggIiRDWFhfaG9zdCIgLS1sZCAiJENYWF9ob3N0IiAtLWFyICIkQVJfaG9z dCIKKwluaW5qYSAtQyBvdXQvUmVsZWFzZSBnbgorCWNkICR7d3Jrc3JjfQorfQorCitfY2xlYW51 cF93cmtzcmNfbGVhaygpIHsKKwlpZiBbIC1kICIke1BLR0RFU1RESVJ9L3Vzci9saWIvY21ha2Ui IF07IHRoZW4KKwkJIyBSZXBsYWNlIHJlZmVyZW5jZXMgdG8gJHt3cmtzcmN9IGluIGNtYWtlIGZp bGVzCisJCXNlZCAtaSAke1BLR0RFU1RESVJ9L3Vzci9saWIvY21ha2UvKi8qLmNtYWtlIFwKKwkJ CS1lICJzOyR7d3Jrc3JjfS9ob3N0Oy91c3IvbGliL3F0NTtnIiBcCisJCQktZSAicztkZXZpY2Vz L3ZvaWQtJHtYQlBTX0NST1NTX1RSSVBMRVR9LWcrKztsaW51eC1nKys7ZyIKKwlmaQorCWlmIFsg LWQgIiR7UEtHREVTVERJUn0vdXNyL2xpYi9wa2djb25maWciIF07IHRoZW4KKwkJIyBSZXBsYWNl IHJlZmVyZW5jZXMgdG8gJHt3cmtzcmN9IGluIHBrZ2NvbmZpZyBmaWxlcworCQlzZWQgLWkgJHtQ S0dERVNURElSfS91c3IvbGliL3BrZ2NvbmZpZy8qLnBjIFwKKwkJCS1lICJzOyR7d3Jrc3JjfS9o b3N0Oy91c3IvbGliL3F0NTtnIiBcCisJCQktZSAicztkZXZpY2VzL3ZvaWQtJHtYQlBTX0NST1NT X1RSSVBMRVR9LWcrKztsaW51eC1nKys7ZyIKKwlmaQorCSMgUmVtb3ZlIFFNQUtFX1BSTF9CVUlM RF9ESVIgZnJvbSBoaW50IGZpbGVzIGZvciBzdGF0aWMgbGlicmFyaWVzCisJIyBhbmQgcmVwbGFj ZSByZWZlcmVuY2VzIHRvICR7d3Jrc3JjfQorCWZpbmQgJHtQS0dERVNURElSfSAtaW5hbWUgIiou cHJsIiAtZXhlYyBzZWQgLWkgInt9IiBcCisJCS1lICIvXlFNQUtFX1BSTF9CVUlMRF9ESVIvZCIg XAorCQktZSAiczstTCR7d3Jrc3JjfS9xdGJhc2UvbGliOy1ML3Vzci9saWI7ZyIgXDsKKwkjIFJl cGxhY2UgJHt3cmtzcmN9IGluIHByb2plY3QgaW5jbHVkZSBmaWxlcworCWZpbmQgJHtQS0dERVNU RElSfSAtaW5hbWUgIioucHJpIiAtZXhlYyBzZWQgLWkgInt9IiBcCisJCS1lICJzOyR7d3Jrc3Jj fS9xdGJhc2U7L3Vzci9saWIvcXQ1O2ciIFw7Cit9CisKK3ByZV9jb25maWd1cmUoKSB7CisJZXhw b3J0IFBBVEg9JHtQQVRIL1wvYnVpbGRkaXJcLy54YnBzLXF0NS13ZWJlbmdpbmVcL3dyYXBwZXJz Oi99CisJY3AgJHtGSUxFU0RJUn0vcmVzb2x2X2NvbXBhdC5oICR7d3Jrc3JjfS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vbmV0L2RucworCQorCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgor CQlhcm12NSp8YXJtdjYqKSAgIyBEaXNhYmxlICJ5aWVsZCIgYXNzZW1ibGVyIGluc3RydWN0aW9u CisJCQlzZWQgLWkgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvYWxsb2Nh dG9yL3BhcnRpdGlvbl9hbGxvY2F0b3Ivc3Bpbl9sb2NrLmNjIFwKKwkJCQlxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvcGRmaXVtL3RoaXJkX3BhcnR5L2Jhc2Uv YWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3Ivc3Bpbl9sb2NrLmNjIFwKKwkJCQktZSAnczsi eWllbGQiOyJub3AiOycKKwkJCTs7CisJZXNhYworCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5F IiBpbgorCQkqLW11c2wpIGV4cG9ydCBDWFhGTEFHUys9IiAtRF9QT1NJWF9USFJFQURfQVRUUl9T VEFDS1NJWkU9MjA5NzE1MiI7OworCWVzYWMKKwljYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIg aW4KKwkJbWlwcyopICAjIHNnaWRlZnMuaCBpcyBpbiAvdXNyL2luY2x1ZGUvYXNtCisJCQlmb3Ig ZiBpbiBcCisJCQkJcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2xzcy9saW51eF9zeXNjYWxsX3N1cHBvcnQuaCBcCisJCQkJcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vYW5k cm9pZC9pbmNsdWRlL2FzbS1taXBzL2ZwcmVnZGVmLmggXAorCQkJCXF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9u L2FuZHJvaWQvaW5jbHVkZS9hc20tbWlwcy9yZWdkZWYuaCBcCisJCQkJcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21t b24vYW5kcm9pZC9pbmNsdWRlL2FzbS1taXBzL2FzbS5oIFwKKwkJCQlxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvdGNtYWxsb2MvdmVuZG9yL3NyYy9iYXNlL2xp bnV4X3N5c2NhbGxfc3VwcG9ydC5oIFwKKwkJCQlxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvdGNtYWxsb2MvY2hyb21pdW0vc3JjL2Jhc2UvbGludXhfc3lzY2Fs bF9zdXBwb3J0LmggXAorCQkJCXF0c2NyaXB0L3NyYy8zcmRwYXJ0eS9qYXZhc2NyaXB0Y29yZS9K YXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaDsgZG8KKwkJCQkJc2VkIC1pICRmIC1lICJzOzxz Z2lkZWZzLmg+Ozxhc20vc2dpZGVmcy5oPjsiCisJCQlkb25lCisJCQkjIEFzc3VtZSB0aGF0IFJH QkEgb3JkZXIgaXMgY29ycmVjdCBmb3IgYmlnIGVuZGlhbiBDUFVzCisJCQlzZWQgLWkgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NraWEvY29uZmlnL1NrVXNlckNvbmZpZy5oIFwK KwkJCQktZSAnLyNlcnJvciBSZWFkIHRoZSBjb21tZW50IGF0IHRoaXMgbG9jYXRpb24vZCcKKwkJ CTs7CisJZXNhYworCisJaWYgWyAiJENST1NTX0JVSUxEIiBdOyB0aGVuCisJCV9ib290c3RyYXBf Z24KKwlmaQorfQorCitwcmVfYnVpbGQoKSB7CisJZXhwb3J0IE5JTkpBSk9CUz0ke21ha2Vqb2Jz fQorfQorCitxdDUtd2ViZW5naW5lLWRldmVsX3BhY2thZ2UoKSB7CisJZGVwZW5kcz0iJHtzb3Vy Y2Vwa2d9Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259IgorCXNob3J0X2Rlc2MrPSIgLSBkZXZlbG9w bWVudCBmaWxlcyIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgdXNyL2luY2x1ZGUKKwkJdm1v dmUgdXNyL2xpYi9jbWFrZQorCQl2bW92ZSB1c3IvbGliL3BrZ2NvbmZpZworCQl2bW92ZSB1c3Iv bGliL3F0NS9ta3NwZWNzCisJCSNUT0RPOiBGSVghISEKKwkJaWYgWyAteiAiJENST1NTX0JVSUxE IiBdOyB0aGVuCisJCQl2bW92ZSB1c3IvbGliL3F0NS9wbHVnaW5zL2Rlc2lnbmVyCisJCWZpCisJ CXZtb3ZlICJ1c3IvbGliLyouc28iCisJCXZtb3ZlICJ1c3IvbGliLyoucHJsIgorCQl2bW92ZSAi dXNyL2xpYi8qLmxhIgorCQlfY2xlYW51cF93cmtzcmNfbGVhaworCX0KK30KCkZyb20gZGMyMzE4 OGYxZjBkNTRjOTJmNDIzZDAzY2VmOTA2ZjhiOGI3Mzc1MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogSm9obiA8am9obnpAcG9zdGVvLm5ldD4KRGF0ZTogTW9uLCAxMSBOb3YgMjAxOSAy MDoyMjo0MyArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMy85XSBjb21tb24vcW1ha2Uuc2g6IHJlb3Jk ZXIgYXJncwoKW2NpIHNraXBdCi0tLQogY29tbW9uL2J1aWxkLXN0eWxlL3FtYWtlLnNoIHwgOTkg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQogMSBmaWxlIGNoYW5nZWQsIDg4 IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbW1vbi9idWls ZC1zdHlsZS9xbWFrZS5zaCBiL2NvbW1vbi9idWlsZC1zdHlsZS9xbWFrZS5zaAppbmRleCA2M2Jl NWEzYTU2OC4uZDAyNGE4YTY3NzAgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9idWlsZC1zdHlsZS9xbWFr ZS5zaAorKysgYi9jb21tb24vYnVpbGQtc3R5bGUvcW1ha2Uuc2gKQEAgLTE2LDEwICsxNiw3NiBA QCBkb19jb25maWd1cmUoKSB7CiAJCW1zZ19lcnJvciAiJHtwa2d2ZXJ9OiBDb3VsZCBub3QgZmlu ZCBxbWFrZSAtIG1pc3NpbmcgaW4gaG9zdGRlcGVuZHM/XG4iCiAJZmkKIAlpZiBbICIkQ1JPU1Nf QlVJTEQiIF0gJiYgWyAiJHFtYWtlIiA9PSAiL3Vzci9saWIvcXQ1L2Jpbi9xbWFrZSIgXTsgdGhl bgorCQljYXNlICRYQlBTX1RBUkdFVF9NQUNISU5FIGluCisJCQlpNjg2KikgX3F0X2FyY2g9aTM4 Njs7CisJCQl4ODZfNjQqKSBfcXRfYXJjaD14ODZfNjQ7OworCQkJYWFyY2g2NCopIF9xdF9hcmNo PWFybTY0OzsKKwkJCWFybSopIF9xdF9hcmNoPWFybTs7CisJCQltaXBzKikgX3F0X2FyY2g9bWlw czs7CisJCWVzYWMKKwkJbWtkaXIgLXAgIiR7d3Jrc3JjfS8udGFyZ2V0LXNwZWMvbGludXgtZysr IgorCQljYXQgPiAiJHt3cmtzcmN9Ly50YXJnZXQtc3BlYy9saW51eC1nKysvcW1ha2UuY29uZiIg PDxfRU9GCitNQUtFRklMRV9HRU5FUkFUT1IgICAgICA9IFVOSVgKK0NPTkZJRyAgICAgICAgICAg ICAgICAgKz0gaW5jcmVtZW50YWwKK1FNQUtFX0lOQ1JFTUVOVEFMX1NUWUxFID0gc3VibGliCisK K2luY2x1ZGUoL3Vzci9saWIvcXQ1L21rc3BlY3MvY29tbW9uL2xpbnV4LmNvbmYpCitpbmNsdWRl KC91c3IvbGliL3F0NS9ta3NwZWNzL2NvbW1vbi9nY2MtYmFzZS11bml4LmNvbmYpCitpbmNsdWRl KC91c3IvbGliL3F0NS9ta3NwZWNzL2NvbW1vbi9nKystdW5peC5jb25mKQorCitRTUFLRV9UQVJH RVRfQ09ORklHICAgICA9ICR7WEJQU19DUk9TU19CQVNFfS91c3IvbGliL3F0NS9ta3NwZWNzL3Fj b25maWcucHJpCitRTUFLRV9UQVJHRVRfTU9EVUxFICAgICA9ICR7WEJQU19DUk9TU19CQVNFfS91 c3IvbGliL3F0NS9ta3NwZWNzL3Ftb2R1bGUucHJpCitRTUFLRV9DQyAgICAgICAgICAgICAgICA9 ICR7Q0N9CitRTUFLRV9DWFggICAgICAgICAgICAgICA9ICR7Q1hYfQorUU1BS0VfTElOSyAgICAg ICAgICAgICAgPSAke0NYWH0KK1FNQUtFX0xJTktfQyAgICAgICAgICAgID0gJHtDQ30KK1FNQUtF X0xJTktfU0hMSUIgICAgICAgID0gJHtDWFh9CisKK1FNQUtFX0FSICAgICAgICAgICAgICAgID0g JHtYQlBTX0NST1NTX1RSSVBMRVR9LWdjYy1hciBjcXMKK1FNQUtFX09CSkNPUFkgICAgICAgICAg ID0gJHtPQkpDT1BZfQorUU1BS0VfTk0gICAgICAgICAgICAgICAgPSAke05NfSAtUAorUU1BS0Vf U1RSSVAgICAgICAgICAgICAgPSAke1NUUklQfQorCitRTUFLRV9DRkxBR1MgICAgICAgICAgICA9 ICR7Q0ZMQUdTfQorUU1BS0VfQ1hYRkxBR1MgICAgICAgICAgPSAke0NYWEZMQUdTfQorUU1BS0Vf TEZMQUdTICAgICAgICAgICAgPSAke0xERkxBR1N9Citsb2FkKHF0X2NvbmZpZykKK19FT0YKKwkJ ZWNobyAiI2luY2x1ZGUgXCIke1hCUFNfQ1JPU1NfQkFTRX0vdXNyL2xpYi9xdDUvbWtzcGVjcy9s aW51eC1nKysvcXBsYXRmb3JtZGVmcy5oXCIiID4gIiR7d3Jrc3JjfS8udGFyZ2V0LXNwZWMvbGlu dXgtZysrL3FwbGF0Zm9ybWRlZnMuaCIKKworCQlta2RpciAtcCAiJHt3cmtzcmN9Ly5ob3N0LXNw ZWMvbGludXgtZysrIgorCQljYXQgPiAiJHt3cmtzcmN9Ly5ob3N0LXNwZWMvbGludXgtZysrL3Ft YWtlLmNvbmYiIDw8X0VPRgorTUFLRUZJTEVfR0VORVJBVE9SICAgICAgPSBVTklYCitDT05GSUcg ICAgICAgICAgICAgICAgICs9IGluY3JlbWVudGFsCitRTUFLRV9JTkNSRU1FTlRBTF9TVFlMRSA9 IHN1YmxpYgorCitpbmNsdWRlKC91c3IvbGliL3F0NS9ta3NwZWNzL2NvbW1vbi9saW51eC5jb25m KQoraW5jbHVkZSgvdXNyL2xpYi9xdDUvbWtzcGVjcy9jb21tb24vZ2NjLWJhc2UtdW5peC5jb25m KQoraW5jbHVkZSgvdXNyL2xpYi9xdDUvbWtzcGVjcy9jb21tb24vZysrLXVuaXguY29uZikKKwor UU1BS0VfVEFSR0VUX0NPTkZJRyAgICAgPSAke1hCUFNfQ1JPU1NfQkFTRX0vdXNyL2xpYi9xdDUv bWtzcGVjcy9xY29uZmlnLnByaQorUU1BS0VfVEFSR0VUX01PRFVMRSAgICAgPSAke1hCUFNfQ1JP U1NfQkFTRX0vdXNyL2xpYi9xdDUvbWtzcGVjcy9xbW9kdWxlLnByaQorUU1BS0VfQ0MgICAgICAg ICAgICAgICAgPSAke0NDX2hvc3R9CitRTUFLRV9DWFggICAgICAgICAgICAgICA9ICR7Q1hYX2hv c3R9CitRTUFLRV9MSU5LICAgICAgICAgICAgICA9ICR7Q1hYX2hvc3R9CitRTUFLRV9MSU5LX0Mg ICAgICAgICAgICA9ICR7Q0NfaG9zdH0KK1FNQUtFX0xJTktfU0hMSUIgICAgICAgID0gJHtDWFhf aG9zdH0KKworUU1BS0VfQVIgICAgICAgICAgICAgICAgPSBnY2MtYXIgY3FzCitRTUFLRV9PQkpD T1BZICAgICAgICAgICA9ICR7T0JKQ09QWV9ob3N0fQorUU1BS0VfTk0gICAgICAgICAgICAgICAg PSAke05NX2hvc3R9IC1QCitRTUFLRV9TVFJJUCAgICAgICAgICAgICA9ICR7U1RSSVBfaG9zdH0K KworUU1BS0VfQ0ZMQUdTICAgICAgICAgICAgPSAke0NGTEFHU19ob3N0fQorUU1BS0VfQ1hYRkxB R1MgICAgICAgICAgPSAke0NYWEZMQUdTX2hvc3R9CitRTUFLRV9MRkxBR1MgICAgICAgICAgICA9 ICR7TERGTEFHU19ob3N0fQorbG9hZChxdF9jb25maWcpCitfRU9GCitlY2hvICcjaW5jbHVkZSAi L3Vzci9saWIvcXQ1L21rc3BlY3MvbGludXgtZysrL3FwbGF0Zm9ybWRlZnMuaCInID4gIiR7d3Jr c3JjfS8uaG9zdC1zcGVjL2xpbnV4LWcrKy9xcGxhdGZvcm1kZWZzLmgiCiAJCWNhdCA+ICIke3dy a3NyY30vcXQuY29uZiIgPDxfRU9GCiBbUGF0aHNdCiBTeXNyb290PSR7WEJQU19DUk9TU19CQVNF fQotUHJlZml4PSR7WEJQU19DUk9TU19CQVNFfS91c3IKK1ByZWZpeD0vdXNyCiBBcmNoRGF0YT0k e1hCUFNfQ1JPU1NfQkFTRX0vdXNyL2xpYi9xdDUKIERhdGE9JHtYQlBTX0NST1NTX0JBU0V9L3Vz ci9zaGFyZS9xdDUKIERvY3VtZW50YXRpb249JHtYQlBTX0NST1NTX0JBU0V9L3Vzci9zaGFyZS9k b2MvcXQ1CkBAIC0zOCwxOCArMTA0LDI5IEBAIEhvc3RQcmVmaXg9L3VzcgogSG9zdERhdGE9L3Vz ci9saWIvcXQ1CiBIb3N0QmluYXJpZXM9L3Vzci9saWIvcXQ1L2JpbgogSG9zdExpYnJhcmllcz0v dXNyL2xpYgotU3BlYz1saW51eC1nKysKLVRhcmdldFNwZWM9bGludXgtZysrCitTcGVjPSR7d3Jr c3JjfS8uaG9zdC1zcGVjL2xpbnV4LWcrKworVGFyZ2V0U3BlYz0ke3dya3NyY30vLnRhcmdldC1z cGVjL2xpbnV4LWcrKwogX0VPRgotCQlxbWFrZV9hcmdzPSItcXRjb25mICR7d3Jrc3JjfS9xdC5j b25mIgorCQlxbWFrZV9hcmdzPSItcXRjb25mICR7d3Jrc3JjfS9xdC5jb25mIFBLR19DT05GSUdf RVhFQ1VUQUJMRT0ke1hCUFNfV1JBUFBFUkRJUn0vcGtnLWNvbmZpZyIKKwkJJHtxbWFrZX0gJHtx bWFrZV9hcmdzfSBcCisJCQlQUkVGSVg9L3VzciBcCisJCQlRVF9JTlNUQUxMX1BSRUZJWD0vdXNy IFwKKwkJCUxJQj0vdXNyL2xpYiBcCisJCQlRVF9UQVJHRVRfQVJDSD0kX3F0X2FyY2ggXAorCQkJ JHtjb25maWd1cmVfYXJnc30KKwllbHNlCisJCSR7cW1ha2V9ICR7cW1ha2VfYXJnc30gXAorCQkJ UFJFRklYPS91c3IgXAorCQkJUVRfSU5TVEFMTF9QUkVGSVg9L3VzciBcCisJCQlMSUI9L3Vzci9s aWIgXAorCQkJUVRfVEFSR0VUX0FSQ0g9JF9xdF9hcmNoIFwKKwkJCVFNQUtFX0NDPSRDQyBRTUFL RV9DWFg9JENYWCBcCisJCQlRTUFLRV9MSU5LPSRDWFggUU1BS0VfTElOS19DPSRDQyBcCisJCQlR TUFLRV9DRkxBR1M9IiR7Q0ZMQUdTfSIgXAorCQkJUU1BS0VfQ1hYRkxBR1M9IiR7Q1hYRkxBR1N9 IiBcCisJCQlRTUFLRV9MRkxBR1M9IiR7TERGTEFHU30iIFwKKwkJCSR7Y29uZmlndXJlX2FyZ3N9 CiAJZmkKLQkke3FtYWtlfSAke3FtYWtlX2FyZ3N9ICR7Y29uZmlndXJlX2FyZ3N9IFwKLQkJUFJF RklYPS91c3IgXAotCQlMSUI9L3Vzci9saWIgXAotCQlRTUFLRV9DQz0kQ0MgUU1BS0VfQ1hYPSRD WFggUU1BS0VfTElOSz0kQ1hYIFFNQUtFX0xJTktfQz0kQ0MgXAotCQlRTUFLRV9DRkxBR1M9IiR7 Q0ZMQUdTfSIgXAotCQlRTUFLRV9DWFhGTEFHUz0iJHtDWFhGTEFHU30iIFwKLQkJUU1BS0VfTEZM QUdTPSIke0xERkxBR1N9IgogfQogCiBkb19idWlsZCgpIHsKCkZyb20gZTE5MDA0NzA5NDA4MTg1 YTdkOGYwNDBiNjgwZTlkZWJkMmQ0NTIwZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog Sm9obiA8am9obnpAcG9zdGVvLm5ldD4KRGF0ZTogRnJpLCAxMSBPY3QgMjAxOSAwMToxNTo0OCAr MDIwMApTdWJqZWN0OiBbUEFUQ0ggNC85XSB0ZWxlZ3JhbS1kZXNrdG9wOiByZWJ1aWxkIGZvciBx dDUuMTQuMAoKW2NpIHNraXBdCi0tLQogc3JjcGtncy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBsYXRl IHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdGVsZWdyYW0tZGVza3RvcC90ZW1wbGF0ZSBiL3NyY3Br Z3MvdGVsZWdyYW0tZGVza3RvcC90ZW1wbGF0ZQppbmRleCAyNTE5NTYwZDIzNi4uNTA5YzIzMTkx MzMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdGVsZWdyYW0tZGVza3RvcC90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL3RlbGVncmFtLWRlc2t0b3AvdGVtcGxhdGUKQEAgLTEyLDcgKzEyLDcgQEAgbWFrZWRl cGVuZHM9ImFsc2EtbGliLWRldmVsIGZmbXBlZy1kZXZlbCBndGsrMy1kZXZlbCBsaWJhcHBpbmRp Y2F0b3ItZGV2ZWwKICBsaWJkYnVzbWVudS1nbGliLWRldmVsIGxpYm9wZW5hbC1kZXZlbCBtaW5p emlwLWRldmVsIG9wdXMtZGV2ZWwgeHhIYXNoLWRldmVsCiAgcHVsc2VhdWRpby1kZXZlbCBxdDUt ZGV2ZWwgcmFuZ2UtdjMgbGlidmEtZGV2ZWwgZW5jaGFudDItZGV2ZWwKICByYXBpZGpzb24gbGli bHo0LWRldmVsIHJsb3R0aWUtZGV2ZWwgTWVzYUxpYi1kZXZlbCIKLWRlcGVuZHM9InF0NS1pbWFn ZWZvcm1hdHMgcXQ1Pj01LjEzLjI8NS4xMy4zIgorZGVwZW5kcz0icXQ1LWltYWdlZm9ybWF0cyBx dDUtY29yZT49NS4xNC4wPDUuMTQuMSIKIHNob3J0X2Rlc2M9IlRlbGVncmFtIERlc2t0b3AgbWVz c2FnaW5nIGFwcCIKIG1haW50YWluZXI9IkpvaG4gPGpvaG56QHBvc3Rlby5uZXQ+IgogbGljZW5z ZT0iR1BMLTMuMC1vci1sYXRlciBXSVRIIE9wZW5TU0wiCkBAIC00NCw3ICs0NCw3IEBAIGZpCiBw b3N0X2V4dHJhY3QoKSB7CiAJX3F0NV9kZXBfdmVyPSIke2RlcGVuZHMjKj49fSIKIAlfcXQ1X2Rl cF92ZXI9IiR7X3F0NV9kZXBfdmVyJTwqfSIKLQlfcXQ1X3ZlcnNpb249IiQoeGJwcy11aGVscGVy IHZlcnNpb24gcXQ1KSIKKwlfcXQ1X3ZlcnNpb249IiQoeGJwcy11aGVscGVyIHZlcnNpb24gcXQ1 LWNvcmUpIgogCiAJaWYgW1sgIiR7X3F0NV92ZXJzaW9uJV8qfSIgIT0gIiR7X3F0NV9kZXBfdmVy fSIgXV07IHRoZW4KIAkJZWNobwoKRnJvbSBjNzc2YmQzNWYyNzg2YTEwYjQxYjVmNDEzZWYyN2I3 Y2U2NDhmYmJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKb2huIDxqb2huekBwb3N0 ZW8ubmV0PgpEYXRlOiBNb24sIDE4IE5vdiAyMDE5IDAzOjA1OjI4ICswMTAwClN1YmplY3Q6IFtQ QVRDSCA1LzldIHF0NS1zdHlsZXBsdWdpbnM6IHJlYnVpbGQgYWdhaW5zdCBxdDUuMTQKCi0tLQog c3JjcGtncy9xdDUtc3R5bGVwbHVnaW5zL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdl ZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv cXQ1LXN0eWxlcGx1Z2lucy90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXQ1LXN0eWxlcGx1Z2lucy90ZW1w bGF0ZQppbmRleCBmNmM1MTFjYWQ0Yy4uYTZiMDU4Yzg2NDAgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv cXQ1LXN0eWxlcGx1Z2lucy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0NS1zdHlsZXBsdWdpbnMv dGVtcGxhdGUKQEAgLTEsMTMgKzEsMTMgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3F0NS1zdHls ZXBsdWdpbnMnCiBwa2duYW1lPXF0NS1zdHlsZXBsdWdpbnMKIHZlcnNpb249NS4wLjAKLXJldmlz aW9uPTExCityZXZpc2lvbj0xMgogX2dpdHJldj0zMzVkYmVjZTEwM2UyY2JmNmM3Y2Y4MTlhYjY2 NzJjMjk1NmIxN2IzCiB3cmtzcmM9InF0c3R5bGVwbHVnaW5zLSR7X2dpdHJldn0iCiBidWlsZF9z dHlsZT1xbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHF0NS1ob3N0LXRvb2xzIHF0 NS1kZXZlbCIKIG1ha2VkZXBlbmRzPSJsaWJ4Y2ItZGV2ZWwgbGlieGtiY29tbW9uLWRldmVsIGxp YmlucHV0LWRldmVsIHRzbGliLWRldmVsIGd0aystZGV2ZWwgcXQ1LWRldmVsIgotZGVwZW5kcz0i cXQ1Pj01LjEzLjI8NS4xMy4zIgorZGVwZW5kcz0icXQ1Pj01LjE0LjBiZXRhMzw1LjE0LjEiCiBz aG9ydF9kZXNjPSJBZGRpdGlvbmFsIHN0eWxlIHBsdWdpbnMgZm9yIFF0NSIKIG1haW50YWluZXI9 IkrDvHJnZW4gQnVjaG3DvGxsZXIgPHB1bGxtb2xsQHQtb25saW5lLmRlPiIKIGxpY2Vuc2U9IkxH UEwtMi4xLW9ubHksIExHUEwtMy4wLW9ubHkiCgpGcm9tIDExMzUxYzg4MzJhZGE2NDkyNzI4NDZl MTQ3ZWQ2ZjdkYmU3Mjg2NmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEpvaG4gPGpv aG56QHBvc3Rlby5uZXQ+CkRhdGU6IE1vbiwgMTggTm92IDIwMTkgMDM6Mjc6MzEgKzAxMDAKU3Vi amVjdDogW1BBVENIIDYvOV0gcXQ1ZHhjYi1wbHVnaW46IHJlYnVpbGQgYWdhaW5zdCBxdDUuMTQK CltjaSBza2lwXQotLS0KIHNyY3BrZ3MvcXQ1ZHhjYi1wbHVnaW4vdGVtcGxhdGUgfCA4ICsrKysr LS0tCiAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1ZHhjYi1wbHVnaW4vdGVtcGxhdGUgYi9zcmNwa2dzL3F0NWR4 Y2ItcGx1Z2luL3RlbXBsYXRlCmluZGV4IGI1NDA4ZWQ4OWZiLi5hMTBiNWY3MGUwMiAxMDA2NDQK LS0tIGEvc3JjcGtncy9xdDVkeGNiLXBsdWdpbi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0NWR4 Y2ItcGx1Z2luL3RlbXBsYXRlCkBAIC0xLDE0ICsxLDE0IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdxdDVkeGNiLXBsdWdpbicKIHBrZ25hbWU9cXQ1ZHhjYi1wbHVnaW4KIHZlcnNpb249NS4wLjEK LXJldmlzaW9uPTMKK3JldmlzaW9uPTQKIGJ1aWxkX3N0eWxlPXFtYWtlCiBtYWtlX2J1aWxkX2Fy Z3M9IlZFUlNJT049JHt2ZXJzaW9ufSIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBxdDUt cW1ha2UiCiBtYWtlZGVwZW5kcz0iY2Fpcm8tZGV2ZWwgbGliU00tZGV2ZWwgbGliWGktZGV2ZWwg bGlieGtiY29tbW9uLWRldmVsCiAgcXQ1LXgxMWV4dHJhcy1kZXZlbCB4Y2ItdXRpbC1pbWFnZS1k ZXZlbCB4Y2ItdXRpbC1rZXlzeW1zLWRldmVsCiAgeGNiLXV0aWwtcmVuZGVydXRpbC1kZXZlbCB4 Y2ItdXRpbC13bS1kZXZlbCIKLWRlcGVuZHM9InF0NT49NS4xMy4yPDUuMTMuMyIKK2RlcGVuZHM9 InF0NT49NS4xNC4wYmV0YTM8NS4xNC4xIgogc2hvcnRfZGVzYz0iUXQgcGxhdGZvcm0gcGx1Z2lu cyBmb3IgRERFIgogbWFpbnRhaW5lcj0iSm9obiA8am9obnpAcG9zdGVvLm5ldD4iCiBsaWNlbnNl PSJHUEwtMy4wLW9yLWxhdGVyIgpAQCAtMTgsNiArMTgsOCBAQCBkaXN0ZmlsZXM9Imh0dHBzOi8v Z2l0aHViLmNvbS9saW51eGRlZXBpbi9xdDVkeGNiLXBsdWdpbi9hcmNoaXZlLyR7dmVyc2lvbn0u dGFyLgogY2hlY2tzdW09YjE5MjUzZjlmNTc3YjJhOWQ4Njc3NGJhOTVkMjUyMzE4ZjNkNjkyYWI5 MmQyZTYyZmJmMDU3OGQ1NmRiNDUzZAogcGF0Y2hfYXJncz0iLU5wMSIKIAorYnJva2VuPSJUT0RP OiBVU0UgVEhFIENPUlJFQ1QgSEVBREVSUyIKKwogcHJlX2NvbmZpZ3VyZSgpIHsKIAlfcXQ1X2Rl cF92ZXI9IiR7ZGVwZW5kcyMqPj19IgogCV9xdDVfZGVwX3Zlcj0iJHtfcXQ1X2RlcF92ZXIlPCp9 IgpAQCAtMzMsNyArMzUsNyBAQCBwcmVfY29uZmlndXJlKCkgewogCSMgbm8gaGVhZGVycyBmb3Ig NS4xMy4xIHlldDsgNS4xMy4wIGhlYWRlcnMgYXJlIHRoZSBzYW1lIGZvciB0aGlzCiAJIyByZW1v dmUgb24gbmV4dCB2ZXJzaW9uIHVwZ3JhZGUgKGFmdGVyIHVwc3RyZWFtIGhhcyBhZGRlZCB0aGVt KQogCWxuIC1zICR7d3Jrc3JjfS9wbGF0Zm9ybXBsdWdpbi9saWJxdDV4Y2JxcGEtZGV2LzUuMTMu MCBcCi0JCSR7d3Jrc3JjfS9wbGF0Zm9ybXBsdWdpbi9saWJxdDV4Y2JxcGEtZGV2LzUuMTMuMgor CQkke3dya3NyY30vcGxhdGZvcm1wbHVnaW4vbGlicXQ1eGNicXBhLWRldi81LjE0LjAKIH0KIAog aWYgWyAiJENST1NTX0JVSUxEIiBdOyB0aGVuCgpGcm9tIDljZjUwOTEwMjlmNjUxMTk2OTEzMWMw NGQ2NTczNGZlY2E5ODUzZmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEpvaG4gPGpv aG56QHBvc3Rlby5uZXQ+CkRhdGU6IFRodSwgNSBEZWMgMjAxOSAwODo0Mjo0MSArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggNy85XSBrd2luOiByZWJ1aWxkIGFnYWluc3QgcXQ1LjE0LjAKCltjaSBza2lw XQotLS0KIHNyY3BrZ3Mva3dpbi90ZW1wbGF0ZSB8IDYgKysrLS0tCiAxIGZpbGUgY2hhbmdlZCwg MyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mva3dp bi90ZW1wbGF0ZSBiL3NyY3BrZ3Mva3dpbi90ZW1wbGF0ZQppbmRleCBmYzZiMTc0NWU3ZC4uZTdm NjVjNDcyNGMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mva3dpbi90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L2t3aW4vdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdrd2lu JwogcGtnbmFtZT1rd2luCiB2ZXJzaW9uPTUuMTcuNAotcmV2aXNpb249MQorcmV2aXNpb249Mgog YnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItREJVSUxEX1RFU1RJTkc9T0ZGIgog aG9zdG1ha2VkZXBlbmRzPSJleHRyYS1jbWFrZS1tb2R1bGVzIGJyZWV6ZSBwa2ctY29uZmlnIgpA QCAtOSw3ICs5LDcgQEAgbWFrZWRlcGVuZHM9InBsYXNtYS1mcmFtZXdvcmstZGV2ZWwga2NtdXRp bHMtZGV2ZWwga25ld3N0dWZmLWRldmVsCiAga3NjcmVlbmxvY2tlci1kZXZlbCBraW5pdC1kZXZl bCB4Y2ItdXRpbC1jdXJzb3ItZGV2ZWwgcXQ1LW11bHRpbWVkaWEtZGV2ZWwKICBrZGVjb3JhdGlv bi1kZXZlbCBsaWJ4a2Jjb21tb24tZGV2ZWwgbGliaW5wdXQtZGV2ZWwgbGliU00tZGV2ZWwKICBs aWJJQ0UtZGV2ZWwgeGNiLXV0aWwtd20tZGV2ZWwgcXQ1LXNlbnNvcnMtZGV2ZWwgbGliY2FwLWRl dmVsIgotZGVwZW5kcz0iYnJlZXplIGhpY29sb3ItaWNvbi10aGVtZSBraW5pdCBxdDU+PTUuMTMu Mjw1LjEzLjMiCitkZXBlbmRzPSJicmVlemUgaGljb2xvci1pY29uLXRoZW1lIGtpbml0IHF0NS1j b3JlPj01LjE0LjA8NS4xNC4xIgogc2hvcnRfZGVzYz0iS0RFIFdpbmRvdyBtYW5hZ2VyIgogbWFp bnRhaW5lcj0iSm9obiA8am9obnpAcG9zdGVvLm5ldD4iCiBsaWNlbnNlPSJHUEwtMi4wLW9yLWxh dGVyIgpAQCAtMjksNyArMjksNyBAQCBlc2FjCiBwb3N0X2V4dHJhY3QoKSB7CiAJX3F0NV9kZXBf dmVyPSIke2RlcGVuZHMjKj49fSIKIAlfcXQ1X2RlcF92ZXI9IiR7X3F0NV9kZXBfdmVyJTwqfSIK LQlfcXQ1X3ZlcnNpb249IiQoeGJwcy11aGVscGVyIHZlcnNpb24gcXQ1KSIKKwlfcXQ1X3ZlcnNp b249IiQoeGJwcy11aGVscGVyIHZlcnNpb24gcXQ1LWNvcmUpIgogCiAJaWYgW1sgIiR7X3F0NV92 ZXJzaW9uJV8qfSIgIT0gIiR7X3F0NV9kZXBfdmVyfSIgXV07IHRoZW4KIAkJZWNobwoKRnJvbSA5 NzZkZGEyMjRhMTAwNmQ2MzRhMzc2MmU0OTI3Zjc1YzMyYzU1YThlIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiBKb2huIDxqb2huekBwb3N0ZW8ubmV0PgpEYXRlOiBTYXQsIDE0IERlYyAy MDE5IDEzOjMxOjE0ICswMTAwClN1YmplY3Q6IFtQQVRDSCA4LzldIHBsYXNtYS1mcmFtZXdvcms6 IGFkZCBwYXRjaCBmb3IgcXQ1LjE0CgotLS0KIHNyY3BrZ3MvcGxhc21hLWZyYW1ld29yay9wYXRj aGVzL3F0NS4xNC5wYXRjaCB8IDE4ICsrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQs IDE4IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3BsYXNtYS1mcmFt ZXdvcmsvcGF0Y2hlcy9xdDUuMTQucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3BsYXNtYS1m cmFtZXdvcmsvcGF0Y2hlcy9xdDUuMTQucGF0Y2ggYi9zcmNwa2dzL3BsYXNtYS1mcmFtZXdvcmsv cGF0Y2hlcy9xdDUuMTQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLmM4YjA4YmEwNGJhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9wbGFzbWEtZnJhbWV3 b3JrL3BhdGNoZXMvcXQ1LjE0LnBhdGNoCkBAIC0wLDAgKzEsMTggQEAKK1NvdXJjZTogQEpvaG5u eW5hdG9yCitVcHN0cmVhbTogbm8gKE5lZWQgdG8gdmVyaWZ5IGlmIHRoaXMgaXNuJ3QgYSBxdDUg YnVnKQorUmVhc29uOiBRTG9jYWxlKCkudWlMYW5ndWFnZXMoKSBpbiBRdDUuMTQgY2FuIHJldHVy biBhbiBlbXB0eSBsaXN0LAorCWluIHByZXZpb3VzIFF0IHZlcnNpb25zIGl0IGhhZCBhIG1pbmlt dW0gc2l6ZSBvZiBvbmUgd2l0aAorCWxvY2FsZSJDIiBhcyBjb250ZW50LgorCistLS0gc3JjL2Rl Y2xhcmF0aXZlaW1wb3J0cy9jYWxlbmRhci9jYWxlbmRhci5jcHAJMjAxOS0xMS0wMiAxNDowMjoy My4wMDAwMDAwMDAgKzAxMDAKKysrKyAtCTIwMTktMTItMTMgMTk6MjI6MDkuMTc4MjM0NzMxICsw MTAwCitAQCAtMTk5LDcgKzE5OSw4IEBACisgICAgIC8vIGxvY2FsZSBhbmQgdGFrZSB0aGUgbW9u dGggbmFtZSBmcm9tIHRoYXQuCisgICAgIC8vCisgICAgIC8vIFNlZSBodHRwczovL2J1Z3Mua2Rl Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzUzNzE1CistICAgIGNvbnN0IFFTdHJpbmcgbGFuZyA9IFFM b2NhbGUoKS51aUxhbmd1YWdlcygpLmF0KDApOworKyAgICBjb25zdCBRU3RyaW5nTGlzdCBsYW5n dWFnZXMgPSBRTG9jYWxlKCkudWlMYW5ndWFnZXMoKTsKKysgICAgY29uc3QgUVN0cmluZyBsYW5n ID0gbGFuZ3VhZ2VzLnNpemUoKSA+IDAgPyBsYW5ndWFnZXMuYXQoMCkgOiBRU3RyaW5nKCk7Cisg ICAgIC8vIElmIGxhbmcgaXMgZW1wdHksIGl0IHdpbGwgY3JlYXRlIGp1c3QgYSBzeXN0ZW0gbG9j YWxlCisgICAgIFFMb2NhbGUgbGFuZ0xvY2FsZShsYW5nKTsKKyAgICAgcmV0dXJuIGxhbmdMb2Nh bGUuc3RhbmRhbG9uZU1vbnRoTmFtZShtX2Rpc3BsYXllZERhdGUubW9udGgoKSk7CgpGcm9tIGU1 OWU0YmJkZmIwMzU5NTBjMDE3NTdjODFhZjVjOWI3MTdmNTc2MTggTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IEpvaG4gPGpvaG56QHBvc3Rlby5uZXQ+CkRhdGU6IFNhdCwgMTQgRGVjIDIw MTkgMTU6MTM6MzUgKzAxMDAKU3ViamVjdDogW1BBVENIIDkvOV0gcXQ1LXdlYmtpdDogcmVidWls ZCBhZ2FpbnN0IHF0NS4xNAoKW2NpIHNraXBdCi0tLQogc3JjcGtncy9xdDUtd2Via2l0L3BhdGNo ZXMvcXQ1LjE0LnBhdGNoICAgICAgfCA5MyArKysrKysrKysrKysrKysrKysrKwogc3JjcGtncy9x dDUtd2Via2l0L3BhdGNoZXMvcXQ1LjE0LnBhdGNoLmFyZ3MgfCAgMSArCiBzcmNwa2dzL3F0NS13 ZWJraXQvdGVtcGxhdGUgICAgICAgICAgICAgICAgICB8ICAyICstCiAzIGZpbGVzIGNoYW5nZWQs IDk1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNw a2dzL3F0NS13ZWJraXQvcGF0Y2hlcy9xdDUuMTQucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL3F0NS13ZWJraXQvcGF0Y2hlcy9xdDUuMTQucGF0Y2guYXJncwoKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvcXQ1LXdlYmtpdC9wYXRjaGVzL3F0NS4xNC5wYXRjaCBiL3NyY3BrZ3MvcXQ1LXdl YmtpdC9wYXRjaGVzL3F0NS4xNC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMC4uNzk5ZDUzZjFmNTUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS13ZWJr aXQvcGF0Y2hlcy9xdDUuMTQucGF0Y2gKQEAgLTAsMCArMSw5MyBAQAorRnJvbSBjMzQ0MTg3YTA5 OWY4ZmQ3NDlkYzg0ZmZjYzEyNWMwOTI1MTAzODE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQor RnJvbTogS29uc3RhbnRpbiBUb2thcmV2IDxhbm51bGVuQHlhbmRleC5ydT4KK0RhdGU6IFR1ZSwg MTAgU2VwIDIwMTkgMDM6NTE6NDIgKzAzMDAKK1N1YmplY3Q6IEZpeCBjb21waWxhdGlvbiBvZiBI VFRQMiBzZXR0aW5ncyB3aXRoIFF0ID49IDUuMTQKKworUHVibGljIEFQSSBRSHR0cDJDb25maWd1 cmF0aW9uIHdhcyBhZGRlZCwgc28gd2UgdXNlIGl0IG5vdyBpbnN0ZWFkIG9mCit1Z2x5IGhhY2sg cmVxdWlyZWQgZm9yIHByZXZpb3VzIHZlcnNpb25zLiBXb3JrYXJvdW5kIGZvciBRVEJVRy03NzMw OCBpcworbm8gbG9nZXIgbmVlZGVkIGluIDUuMTQsIHNvIHdlIG9ubHkgZW5hYmxlIHNlcnZlciBw dXNoLgorCitDaGFuZ2UtSWQ6IEkzZTY4MTdkOGZhMjc0YzNhODQ5ZjA5YjIzY2E1OGY5MzMxOGJl NmM0CistLS0KKyAuLi4vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAgICAgICAg fCAgNiArKystLS0KKyAuLi4vcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZVJlcXVlc3RRdC5j cHAgfCAyMCArKysrKysrKysrKysrKysrKystCisgMiBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRp b25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh dGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y ZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcAoraW5kZXggMGRh NDVmYmM3OWE1Li43OTI0NTk1NTgyYWMgMTAwNjQ0CistLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0 Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcAorKysrIGIvU291cmNlL1dl YkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAKK0BAIC00 MSw3ICs0MSw3IEBACisgCisgI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+CisgCistI2lmIFVT RShIVFRQMikKKysjaWYgVVNFKEhUVFAyKSAmJiBRVF9WRVJTSU9OIDwgUVRfVkVSU0lPTl9DSEVD Syg1LCAxNCwgMCkKKyAKKyAjaW5jbHVkZSA8cHJpdmF0ZS9odHRwMnByb3RvY29sX3AuaD4KKyAj aW5jbHVkZSA8Y3N0ZGxpYj4KK0BAIC02Miw3ICs2Miw3IEBAIFByb3RvY29sUGFyYW1ldGVyczo6 UHJvdG9jb2xQYXJhbWV0ZXJzKCkKKyAKKyBRVF9FTkRfTkFNRVNQQUNFCisgCistI2VuZGlmIC8v IFVTRShIVFRQMikKKysjZW5kaWYgLy8gVVNFKEhUVFAyKSAmJiBRVF9WRVJTSU9OIDwgUVRfVkVS U0lPTl9DSEVDSyg1LCAxNCwgMCkKKyAKKyBzdGF0aWMgY29uc3QgaW50IGdNYXhSZWRpcmVjdGlv bnMgPSAxMDsKKyAKK0BAIC03OTcsNyArNzk3LDcgQEAgUU5ldHdvcmtSZXBseSogUU5ldHdvcmtS ZXBseUhhbmRsZXI6OnNlbmROZXR3b3JrUmVxdWVzdChRTmV0d29ya0FjY2Vzc01hbmFnZXIqIG0K KyAgICAgaWYgKCFtYW5hZ2VyKQorICAgICAgICAgcmV0dXJuIDA7CisgCistI2lmIFVTRShIVFRQ MikKKysjaWYgVVNFKEhUVFAyKSAmJiBRVF9WRVJTSU9OIDwgUVRfVkVSU0lPTl9DSEVDSyg1LCAx NCwgMCkKKyAgICAgc3RhdGljIGNvbnN0IGJvb2wgYWxwbklzU3VwcG9ydGVkID0gUmVzb3VyY2VS ZXF1ZXN0OjphbHBuSXNTdXBwb3J0ZWQoKTsKKyAgICAgaWYgKGFscG5Jc1N1cHBvcnRlZCAmJiAh bWFuYWdlci0+cHJvcGVydHkoSHR0cDI6Omh0dHAyUGFyYW1ldGVyc1Byb3BlcnR5TmFtZSkuaXNW YWxpZCgpKSB7CisgICAgICAgICBIdHRwMjo6UHJvdG9jb2xQYXJhbWV0ZXJzIHBhcmFtczsKK2Rp ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVx dWVzdFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VS ZXF1ZXN0UXQuY3BwCitpbmRleCAyY2YyZTc3NTBkZGUuLjMxMDczODQ0OWI3NSAxMDA2NDQKKy0t LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1ZXN0UXQu Y3BwCisrKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVx dWVzdFF0LmNwcAorQEAgLTI5LDcgKzI5LDEwIEBACisgCisgI2lmIFVTRShIVFRQMikKKyAjaW5j bHVkZSA8UVNzbFNvY2tldD4KKysjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDUs IDE0LCAwKQorKyNpbmNsdWRlIDxRSHR0cDJDb25maWd1cmF0aW9uPgorICNlbmRpZgorKyNlbmRp ZiAvLyBVU0UoSFRUUDIpCisgCisgbmFtZXNwYWNlIFdlYkNvcmUgeworIAorQEAgLTY1LDYgKzY4 LDE2IEBAIGJvb2wgUmVzb3VyY2VSZXF1ZXN0OjphbHBuSXNTdXBwb3J0ZWQoKQorICAgICByZXR1 cm4gUVNzbFNvY2tldDo6c3NsTGlicmFyeVZlcnNpb25OdW1iZXIoKSA+IDB4MTAwMDIwMDBMICYm CisgICAgICAgICBRU3NsU29ja2V0Ojpzc2xMaWJyYXJ5VmVyc2lvblN0cmluZygpLnN0YXJ0c1dp dGgoUUxhdGluMVN0cmluZygiT3BlblNTTCIpKTsKKyB9CisrCisrI2lmIFFUX1ZFUlNJT04gPj0g UVRfVkVSU0lPTl9DSEVDSyg1LCAxNCwgMCkKKytzdGF0aWMgUUh0dHAyQ29uZmlndXJhdGlvbiBj cmVhdGVIdHRwMkNvbmZpZ3VyYXRpb24oKQorK3sKKysgICAgUUh0dHAyQ29uZmlndXJhdGlvbiBw YXJhbXM7CisrICAgIHBhcmFtcy5zZXRTZXJ2ZXJQdXNoRW5hYmxlZCh0cnVlKTsKKysgICAgcmV0 dXJuIHBhcmFtczsKKyt9CisrI2VuZGlmCisrCisgI2VuZGlmCisgCisgUU5ldHdvcmtSZXF1ZXN0 IFJlc291cmNlUmVxdWVzdDo6dG9OZXR3b3JrUmVxdWVzdChOZXR3b3JraW5nQ29udGV4dCAqY29u dGV4dCkgY29uc3QKK0BAIC03Niw4ICs4OSwxMyBAQCBRTmV0d29ya1JlcXVlc3QgUmVzb3VyY2VS ZXF1ZXN0Ojp0b05ldHdvcmtSZXF1ZXN0KE5ldHdvcmtpbmdDb250ZXh0ICpjb250ZXh0KSBjbwor IAorICNpZiBVU0UoSFRUUDIpCisgICAgIHN0YXRpYyBjb25zdCBib29sIE5lZ290aWF0ZUh0dHAy Rm9ySHR0cHMgPSBhbHBuSXNTdXBwb3J0ZWQoKTsKKy0gICAgaWYgKG9yaWdpbmFsVXJsLnByb3Rv Y29sSXMoImh0dHBzIikgJiYgTmVnb3RpYXRlSHR0cDJGb3JIdHRwcykKKysgICAgaWYgKG9yaWdp bmFsVXJsLnByb3RvY29sSXMoImh0dHBzIikgJiYgTmVnb3RpYXRlSHR0cDJGb3JIdHRwcykgewor KyNpZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNSwgMTQsIDApCisrICAgICAgICBz dGF0aWMgY29uc3QgYXV0byBwYXJhbXMgPSBjcmVhdGVIdHRwMkNvbmZpZ3VyYXRpb24oKTsKKysg ICAgICAgIHJlcXVlc3Quc2V0SHR0cDJDb25maWd1cmF0aW9uKHBhcmFtcyk7CisrI2VuZGlmCisg ICAgICAgICByZXF1ZXN0LnNldEF0dHJpYnV0ZShRTmV0d29ya1JlcXVlc3Q6OkhUVFAyQWxsb3dl ZEF0dHJpYnV0ZSwgdHJ1ZSk7CisrICAgIH0KKyAjZW5kaWYgLy8gVVNFKEhUVFAyKQorIAorICAg ICBjb25zdCBIVFRQSGVhZGVyTWFwICZoZWFkZXJzID0gaHR0cEhlYWRlckZpZWxkcygpOwpkaWZm IC0tZ2l0IGEvc3JjcGtncy9xdDUtd2Via2l0L3BhdGNoZXMvcXQ1LjE0LnBhdGNoLmFyZ3MgYi9z cmNwa2dzL3F0NS13ZWJraXQvcGF0Y2hlcy9xdDUuMTQucGF0Y2guYXJncwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMmViYTFjYjNjNWMKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmNwa2dzL3F0NS13ZWJraXQvcGF0Y2hlcy9xdDUuMTQucGF0Y2guYXJncwpAQCAtMCwwICsx IEBACistTnAxCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJraXQvdGVtcGxhdGUgYi9zcmNw a2dzL3F0NS13ZWJraXQvdGVtcGxhdGUKaW5kZXggYzdjMDljMTM3NmUuLjRjOGIzZjY0MTRmIDEw MDY0NAotLS0gYS9zcmNwa2dzL3F0NS13ZWJraXQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xdDUt d2Via2l0L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncXQ1 LXdlYmtpdCcKIHBrZ25hbWU9cXQ1LXdlYmtpdAogdmVyc2lvbj01LjIxMi4wCi1yZXZpc2lvbj02 CityZXZpc2lvbj03CiBfc25hcD0xNTY1ODk1NDY5CiBfdj0ke3ZlcnNpb24lLip9CiB3cmtzcmM9 InF0d2Via2l0LWV2ZXJ5d2hlcmUtc3JjLSR7X3Z9Igo= --===============8807625011524219588==--