From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (qmail 3109 invoked from network); 3 Apr 2020 15:00:20 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with UTF8ESMTPZ; 3 Apr 2020 15:00:20 -0000 Content-Type: multipart/mixed; boundary="===============5123405164347195964==" MIME-Version: 1.0 Subject: =?utf8?b?UmU6IFtQUiBQQVRDSF0gW1VwZGF0ZWRdIFtXSVBdIHF0NSB1cGRhdGUgdG8gNS4xNC4w?= To: ml@inbox.vuxu.org From: Johnnynator Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Fri, 03 Apr 2020 17:00:17 +0200 List-Id: Message-ID: <20200403150017.LPx9NsUMkP4kui_cVcVPb0al4dIBeCyOC4gvJXG2R5o@z> GitHub notification mails are now in MIME to allow UTF8. --===============5123405164347195964== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgSm9obm55bmF0b3IgYWdhaW5zdCBt YXN0ZXIgb24gdGhlIHZvaWQtcGFja2FnZXMgcmVwb3NpdG9yeQoKaHR0cHM6Ly9naXRodWIuY29t L0pvaG5ueW5hdG9yL3ZvaWQtcGFja2FnZXMgcXQ1LjE0Cmh0dHBzOi8vZ2l0aHViLmNvbS92b2lk LWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC8xNTMxMAoKW1dJUF0gcXQ1IHVwZGF0ZSB0byA1LjE0 LjAKIyBUZXN0ZWQgb24NCi0gW3hdIHg4Nl82NCAoY29tcGlsZWQgYW5kIHJ1bnRpbWUpDQotIFt4 XSB4ODZfNjQtbXVzbCAoY29tcGlsZWQgYW5kIHJ1bnRpbWUpDQotIFsgXSBpNjg2ICgpDQotIFsg XSBhcm12N2wtbXVzbA0KLSBbIF0gYXJtdjdsIA0KLSBbIF0gYXJtdjZsLW11c2wNCi0gWyBdIGFy bXY2bCAoY29tcGlsZWQgd2l0aG91dCB3ZWJlbmdpbmUpDQotIFsgXSBhYXJjaDY0LW11c2wgKGNv bXBpbGVkKQ0KLSBbIF0gYWFyY2g2NA0KLSBbIF0gcHBjNjRsZQ0KLSBbIF0gcHBjNjRsZS1tdXNs DQotIFsgXSBwcGM2NA0KLSBbIF0gcHBjNjQtbXVzbA0KLSBbIF0gcHBjDQotIFsgXSBwcGMtbXVz bA0KIyBUT0RPOg0KDQotIGZpeCBjcm9zcyAoZm9yIHNvbWUgcW1ha2UgcGFja2FnZXMpDQotIHJl YmFzZSB3ZWJlbmdpbmUgcHBjIHBhdGNoZXMgQHE2NiANCi0gYC1uby1mZWF0dXJlLXFkb2NgIGlu c3RlYWQgb2YgY3VzdG9tIGBxdHRvb2xzL3NyYy9zcmMucHJvYCA/DQotIGZpeCB3ZWJlbmdpbmUg bG9hZGluZyByZXNvdXJjZXMgZnJvbSBgL3NoYXJlYCBpbnN0ZWFkIG9mIGAvdXNyL3NoYXJlYA0K DQojIEJ1Z3MNCg0KLSB3ZWJlbmdpbmUgY3VycmVudGx5IHRyaWVzIHRvIGZldGNoIHJlc291cmNl cyBmcm9tIGAvc2hhcmVgIGluc3RlYWQgb2YgYC91c3Ivc2hhcmUNCi0gUGxhc21hc2hlbGwgd2F5 bGFuZCBvbiBtdXNsIGNyYXNoZXMgcmVndWxhcnkgCgpBIHBhdGNoIGZpbGUgZnJvbSBodHRwczov L2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvMTUzMTAucGF0Y2ggaXMg YXR0YWNoZWQ= --===============5123405164347195964== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-qt5.14-15310.patch" RnJvbSAwMjE0NzIzYTAyNjJkYzNiNDAwYWFhODU0ZjFlNDA3Y2Y1NjFkNzU5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2huIDxqb2huekBwb3N0ZW8ubmV0PgpEYXRlOiBGcmksIDEx IE9jdCAyMDE5IDAwOjU5OjE4ICswMjAwClN1YmplY3Q6IFtQQVRDSCAwMS8xN10gcXQ1OiB1cGRh dGUgdG8gNS4xNC4yCgotLS0KIGNvbW1vbi9zaGxpYnMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAxNTkgKy0KIHNyY3BrZ3Mve3F0NS13ZWJlbmdpbmUgPT4gcXQ1LWJhc2UtZG9j c30gICAgICB8ICAgIDAKIHNyY3BrZ3MvcXQ1LWNvbmN1cnJlbnQgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgIDEgKwogc3JjcGtncy9xdDUtY29yZSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgMSArCiBzcmNwa2dzL3F0NS1kYnVzICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAxICsKIHNyY3BrZ3MvcXQ1LWd1aSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDEgKwogc3JjcGtncy9xdDUtbmV0d29yayAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAgMSArCiBzcmNwa2dzL3F0NS1vcGVuZ2wgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgICAxICsKIHNyY3BrZ3MvcXQ1LXByaW50c3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICB8 ICAgIDEgKwogc3JjcGtncy9xdDUtcXVpY2t0aW1lbGluZSAgICAgICAgICAgICAgICAgICAgIHwg ICAgMSArCiBzcmNwa2dzL3F0NS1zcWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAxICsKIHNyY3BrZ3MvcXQ1LXRlc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg IDEgKwogc3JjcGtncy9xdDUtd2lkZ2V0cyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg MSArCiBzcmNwa2dzL3F0NS14Y2ItcHJpdmF0ZS1oZWFkZXJzICAgICAgICAgICAgICAgfCAgICAx ICsKIHNyY3BrZ3MvcXQ1LXhtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEg KwogLi4uLzAwOTAtaGFyZC1kaXNhYmxlLXFtbGNoYWNoZWdlbi5wYXRjaCAgICAgIHwgICAxMCAt CiBzcmNwa2dzL3F0NS9maWxlcy9xbWxjYWNoZWdlbi5wcm8gICAgICAgICAgICAgfCAgIDM4ICsK IHNyY3BrZ3MvcXQ1L2ZpbGVzL3FtbGltcG9ydHNjYW5uZXIucHJvICAgICAgICB8ICAgIDIgKwog c3JjcGtncy9xdDUvZmlsZXMvcW1sbGludC5wcm8gICAgICAgICAgICAgICAgIHwgICAxNyArLQog c3JjcGtncy9xdDUvZmlsZXMvcXR0b29sc19zcmMucHJvICAgICAgICAgICAgIHwgICAxOCArLQog c3JjcGtncy9xdDUvZmlsZXMvcmVzb2x2X2NvbXBhdC5oICAgICAgICAgICAgIHwgICAyOSAtCiBz cmNwa2dzL3F0NS9maWxlcy91aWMucHJvICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIHNy Y3BrZ3MvcXQ1L2ZpbGVzL3VpdG9vbHMucHJvICAgICAgICAgICAgICAgICB8ICAgMTUgKwogc3Jj cGtncy9xdDUvcGF0Y2hlcy8wMDAxLWFkZGxyLnBhdGNoICAgICAgICAgIHwgICAyMyArCiAuLi50 ZS1pbnN0ZWFkLW9mLV9saWJjX2Zwc3RhdGUtb24tbGludXgucGF0Y2ggfCAgIDQyIC0KIC4uLnJl Zy5oLXRvLWdldC1fX1dPUkRTSVpFLW9uLW11c2wtbGliYy5wYXRjaCB8ICAgMjYgLQogLi4uL3Bh dGNoZXMvMDAwNC1tdXNsLWRpc3BhdGNoLXRvLW11c2wucGF0Y2ggIHwgIDEwMyAtCiAuLi4vcXQ1 L3BhdGNoZXMvMDAwOC1tdXNsLW5vLW1hbGxpbmZvLnBhdGNoICAgfCAgIDQwIC0KIHNyY3BrZ3Mv cXQ1L3BhdGNoZXMvMDAwOS1tdXNsLW9mZl90LnBhdGNoICAgICB8ICAgMTAgLQogLi4uL3F0NS9w YXRjaGVzLzAwMTAtbXVzbC1wcmVhZC1wd3JpdGUucGF0Y2ggIHwgICAxOCAtCiAuLi4vcGF0Y2hl cy8wMDExLW11c2wtcmVwbGFjZS1wdmFsbG9jLnBhdGNoICAgfCAgIDE0IC0KIHNyY3BrZ3MvcXQ1 L3BhdGNoZXMvMDAxMi1tdXNsLXJlc29sdmUucGF0Y2ggICB8ICAgMjYgLQogc3JjcGtncy9xdDUv cGF0Y2hlcy8wMDE1LW11c2wtc2lnaW5mb190LnBhdGNoIHwgICAxOCAtCiAuLi4vcXQ1L3BhdGNo ZXMvMDAxNy1tdXNsLXN0YWNrc3RhcnQucGF0Y2ggICAgfCAgIDIwIC0KIHNyY3BrZ3MvcXQ1L3Bh dGNoZXMvMDAyMC1tdXNsLXNhbmRib3gucGF0Y2ggICB8ICAgNzEgLQogLi4uL3F0NS9wYXRjaGVz LzAwMjMtZW5hYmxlX3Rvb2xzLWNyb3NzLnBhdGNoIHwgICA0NiAtCiAuLi4wMDI1LW11c2wtY2hy b21pdW0tZGVmYXVsdC1zdGFja3NpemUucGF0Y2ggfCAgIDE1IC0KIHNyY3BrZ3MvcXQ1L3BhdGNo ZXMvMDAyNi1kYXRhX3BhY2stYmUucGF0Y2ggICB8ICAgMTUgLQogLi4uL3F0NS9wYXRjaGVzLzAw MjctcmVtb3ZlLWdsaWJjLWNoZWNrLnBhdGNoIHwgICAxMyAtCiAuLi4vMDAzMi1tdXNsLWNyb3Nz LW5vLWFzbV9wdHJhY2VfaC5wYXRjaCAgICAgfCAgIDMwIC0KIHNyY3BrZ3MvcXQ1L3BhdGNoZXMv MDA0MC15YXNtLW5scy5wYXRjaCAgICAgICB8ICAgMTMgLQogLi4uLzAwNDItYXJtLXZvaWQtaXMt bm90LWFuZHJvaWQucGF0Y2ggICAgICAgIHwgICAyMSAtCiAuLi4vcXQ1L3BhdGNoZXMvMDA0NC1x dC1tdXNsLWV4ZWNpbmZvLnBhdGNoICAgfCAgMTA3IC0KIC4uLi8wMDQ1LXF0LW11c2wtdGhyZWFk LXN0YWNrc2l6ZS5wYXRjaCAgICAgICB8ICAgMjYgLQogLi4uL3F0NS9wYXRjaGVzLzAwNDYtc2Fu ZGJveC1tZW1iYXJyaWVyLnBhdGNoIHwgICA2MCAtCiAuLi4vcXQ1L3BhdGNoZXMvMDA0Ny1nbi1j cm9zcy1zeXNyb290LnBhdGNoICAgfCAgIDI0IC0KIHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA1MC1x bWFrZS1ta3NwZWNzLnBhdGNoICB8ICAgMzAgKwogLi4uL3F0NS9wYXRjaGVzLzAwODktd2ViZW5n aW5lLXBwYzY0LnBhdGNoICAgIHwgICAyMCAtCiAuLi4vcXQ1L3BhdGNoZXMvMDA5MC1jaHJvbWl1 bS1wcGM2NGxlLnBhdGNoICAgfCA0MjY3IC0tLS0tLS0tLS0tLS0tLS0tCiAuLi4vcGF0Y2hlcy8w MDkxLWNocm9taXVtLXBwYzY0LW11c2wucGF0Y2ggICAgfCAgMTQxIC0KIC4uLi9xdDUvcGF0Y2hl cy8wMDkyLWNocm9taXVtLXBwYzY0LWJlLnBhdGNoICB8IDI5NzAgLS0tLS0tLS0tLS0tCiAuLi4v cXQ1L3BhdGNoZXMvMDA5My1jaHJvbWl1bS12OC1lbGZ2Mi5wYXRjaCAgfCAgIDQzIC0KIC4uLi8w MDk0LWJpZy1lbmRpYW4tc2tpYS1wb3J0YWJsZS5wYXRjaCAgICAgICB8ICAgMTcgLQogLi4uL3Bh dGNoZXMvMDEwMC1zYW5kYm94LXNjaGVkX2dldHBhcmFtLnBhdGNoIHwgICAyNCAtCiBzcmNwa2dz L3F0NS90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMzcwICstCiA1NSBmaWxl cyBjaGFuZ2VkLCAzODUgaW5zZXJ0aW9ucygrKSwgODU4MCBkZWxldGlvbnMoLSkKIHJlbmFtZSBz cmNwa2dzL3txdDUtd2ViZW5naW5lID0+IHF0NS1iYXNlLWRvY3N9ICgxMDAlKQogY3JlYXRlIG1v ZGUgMTIwMDAwIHNyY3BrZ3MvcXQ1LWNvbmN1cnJlbnQKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNw a2dzL3F0NS1jb3JlCiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9xdDUtZGJ1cwogY3JlYXRl IG1vZGUgMTIwMDAwIHNyY3BrZ3MvcXQ1LWd1aQogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3Mv cXQ1LW5ldHdvcmsKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL3F0NS1vcGVuZ2wKIGNyZWF0 ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL3F0NS1wcmludHN1cHBvcnQKIGNyZWF0ZSBtb2RlIDEyMDAw MCBzcmNwa2dzL3F0NS1xdWlja3RpbWVsaW5lCiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9x dDUtc3FsCiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9xdDUtdGVzdAogY3JlYXRlIG1vZGUg MTIwMDAwIHNyY3BrZ3MvcXQ1LXdpZGdldHMKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL3F0 NS14Y2ItcHJpdmF0ZS1oZWFkZXJzCiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9xdDUteG1s CiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvZmlsZXMvMDA5MC1oYXJkLWRpc2FibGUt cW1sY2hhY2hlZ2VuLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvZmlsZXMv cW1sY2FjaGVnZW4ucHJvCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvZmlsZXMvcmVz b2x2X2NvbXBhdC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvZmlsZXMvdWl0b29s cy5wcm8KIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwMDEtYWRkbHIu cGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwMDItVXNlLV9m cHN0YXRlLWluc3RlYWQtb2YtX2xpYmNfZnBzdGF0ZS1vbi1saW51eC5wYXRjaAogZGVsZXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAwMy1pbmNsdWRlLXN5cy1yZWcuaC10by1n ZXQtX19XT1JEU0laRS1vbi1tdXNsLWxpYmMucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNw a2dzL3F0NS9wYXRjaGVzLzAwMDQtbXVzbC1kaXNwYXRjaC10by1tdXNsLnBhdGNoCiBkZWxldGUg bW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDA4LW11c2wtbm8tbWFsbGluZm8ucGF0 Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwMDktbXVzbC1vZmZf dC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAxMC1tdXNs LXByZWFkLXB3cml0ZS5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNo ZXMvMDAxMS1tdXNsLXJlcGxhY2UtcHZhbGxvYy5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNy Y3BrZ3MvcXQ1L3BhdGNoZXMvMDAxMi1tdXNsLXJlc29sdmUucGF0Y2gKIGRlbGV0ZSBtb2RlIDEw MDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwMTUtbXVzbC1zaWdpbmZvX3QucGF0Y2gKIGRlbGV0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwMTctbXVzbC1zdGFja3N0YXJ0LnBh dGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDIwLW11c2wtc2Fu ZGJveC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAyMy1l bmFibGVfdG9vbHMtY3Jvc3MucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9w YXRjaGVzLzAwMjUtbXVzbC1jaHJvbWl1bS1kZWZhdWx0LXN0YWNrc2l6ZS5wYXRjaAogZGVsZXRl IG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAyNi1kYXRhX3BhY2stYmUucGF0Y2gK IGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwMjctcmVtb3ZlLWdsaWJj LWNoZWNrLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDMy LW11c2wtY3Jvc3Mtbm8tYXNtX3B0cmFjZV9oLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3Jj cGtncy9xdDUvcGF0Y2hlcy8wMDQwLXlhc20tbmxzLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQg c3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQyLWFybS12b2lkLWlzLW5vdC1hbmRyb2lkLnBhdGNoCiBk ZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQ0LXF0LW11c2wtZXhlY2lu Zm8ucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDUtcXQt bXVzbC10aHJlYWQtc3RhY2tzaXplLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9x dDUvcGF0Y2hlcy8wMDQ2LXNhbmRib3gtbWVtYmFycmllci5wYXRjaAogZGVsZXRlIG1vZGUgMTAw NjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0Ny1nbi1jcm9zcy1zeXNyb290LnBhdGNoCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDUwLXFtYWtlLW1rc3BlY3MucGF0 Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwODktd2ViZW5naW5l LXBwYzY0LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDkw LWNocm9taXVtLXBwYzY0bGUucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9w YXRjaGVzLzAwOTEtY2hyb21pdW0tcHBjNjQtbXVzbC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0 IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA5Mi1jaHJvbWl1bS1wcGM2NC1iZS5wYXRjaAogZGVsZXRl IG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA5My1jaHJvbWl1bS12OC1lbGZ2Mi5w YXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA5NC1iaWctZW5k aWFuLXNraWEtcG9ydGFibGUucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9w YXRjaGVzLzAxMDAtc2FuZGJveC1zY2hlZF9nZXRwYXJhbS5wYXRjaAoKZGlmZiAtLWdpdCBhL2Nv bW1vbi9zaGxpYnMgYi9jb21tb24vc2hsaWJzCmluZGV4IDRiMDBkYTlhNzJlLi4xNGU2YzgxMmZl MiAxMDA2NDQKLS0tIGEvY29tbW9uL3NobGlicworKysgYi9jb21tb24vc2hsaWJzCkBAIC0xODc2 LDg2ICsxODc2LDg5IEBAIGxpYmdsdGYtMC4xLnNvLjEgbGliZ2x0Zi0wLjEuMF8xCiBsaWJhYnct MC4xLnNvLjEgbGliYWJ3LTAuMS4wXzEKIGxpYmNtaXMtMC41LnNvLjUgbGliY21pcy0wLjUuMF8x CiBsaWJjbWlzLWMtMC41LnNvLjUgbGliY21pcy0wLjUuMF8xCi1saWJRdDVCbHVldG9vdGguc28u NSBxdDUtY29ubmVjdGl2aXR5LTUuNi4wXzEKLWxpYlF0NTNEQW5pbWF0aW9uLnNvLjUgcXQ1LTNk LTUuMTAuMV8xCi1saWJRdDUzRENvcmUuc28uNSBxdDUtM2QtNS42LjBfMQotbGliUXQ1M0RJbnB1 dC5zby41IHF0NS0zZC01LjYuMF8xCi1saWJRdDUzRExvZ2ljLnNvLjUgcXQ1LTNkLTUuNi4wXzEK LWxpYlF0NTNEUmVuZGVyLnNvLjUgcXQ1LTNkLTUuNi4wXzEKLWxpYlF0NTNEUXVpY2suc28uNSBx dDUtM2QtNS42LjBfMQotbGliUXQ1M0RRdWlja0lucHV0LnNvLjUgcXQ1LTNkLTUuNi4wXzEKLWxp YlF0NTNEUXVpY2tSZW5kZXIuc28uNSBxdDUtM2QtNS42LjBfMQotbGliUXQ1M0RRdWlja1NjZW5l MkQuc28uNSBxdDUtM2QtNS4xMC4xXzEKLWxpYlF0NTNERXh0cmFzLnNvLjUgcXQ1LTNkLTUuNi4w XzEKLWxpYlF0NTNEUXVpY2tFeHRyYXMuc28uNSBxdDUtM2QtNS42LjBfMQotbGliUXQ1M0RRdWlj a0FuaW1hdGlvbi5zby41IHF0NS0zZC01LjEwLjFfMQotbGliUXQ1Q2hhcnRzLnNvLjUgcXQ1LWNo YXJ0cy01LjcuMV8xCi1saWJRdDVEYXRhVmlzdWFsaXphdGlvbi5zby41IHF0NS1kYXRhdmlzM2Qt NS43LjFfMQotbGliUXQ1R2FtZXBhZC5zby41IHF0NS1nYW1lcGFkLTUuNy4xXzEKLWxpYlF0NU5m Yy5zby41IHF0NS1jb25uZWN0aXZpdHktNS42LjBfMQotbGliUXQ1V2ViVmlldy5zby41IHF0NS13 ZWJ2aWV3LTUuNi4wXzEKLWxpYlF0NVFtbC5zby41IHF0NS1kZWNsYXJhdGl2ZS01LjYuMF8xCi1s aWJRdDVRbWxEZXZUb29scy5zby41IHF0NS1kZWNsYXJhdGl2ZS01LjEzLjBfMQotbGliUXQ1UXVp Y2suc28uNSBxdDUtZGVjbGFyYXRpdmUtNS42LjBfMQotbGliUXQ1UXVpY2tUZXN0LnNvLjUgcXQ1 LWRlY2xhcmF0aXZlLTUuNi4wXzEKLWxpYlF0NVF1aWNrV2lkZ2V0cy5zby41IHF0NS1kZWNsYXJh dGl2ZS01LjYuMF8xCi1saWJRdDVRdWlja1BhcnRpY2xlcy5zby41IHF0NS1kZWNsYXJhdGl2ZS01 LjYuMF8xCi1saWJRdDVRdWlja1NoYXBlcy5zby41IHF0NS1kZWNsYXJhdGl2ZS01LjEyLjFfMQot bGliUXQ1UXVpY2tDb250cm9sczIuc28uNSBxdDUtcXVpY2tjb250cm9sczItNS43LjFfMQotbGli UXQ1UXVpY2tUZW1wbGF0ZXMyLnNvLjUgcXQ1LXF1aWNrY29udHJvbHMyLTUuNy4xXzEKLWxpYlF0 NVBvc2l0aW9uaW5nLnNvLjUgcXQ1LWxvY2F0aW9uLTUuNi4wXzEKLWxpYlF0NUxvY2F0aW9uLnNv LjUgcXQ1LWxvY2F0aW9uLTUuNi4wXzEKLWxpYlF0NVBvc2l0aW9uaW5nUXVpY2suc28uNSBxdDUt bG9jYXRpb24tNS4xMi4xXzEKLWxpYlF0NVZpcnR1YWxLZXlib2FyZC5zby41IHF0NS12aXJ0dWFs a2V5Ym9hcmQtNS4xMi4xXzEKLWxpYlF0NU11bHRpbWVkaWEuc28uNSBxdDUtbXVsdGltZWRpYS01 LjYuMF8xCi1saWJRdDVNdWx0aW1lZGlhR3N0VG9vbHMuc28uNSBxdDUtbXVsdGltZWRpYS01LjEw LjFfMQotbGliUXQ1TXVsdGltZWRpYVF1aWNrLnNvLjUgcXQ1LW11bHRpbWVkaWEtNS4xMC4xXzEK LWxpYlF0NU11bHRpbWVkaWFRdWlja19wLnNvLjUgcXQ1LW11bHRpbWVkaWEtNS42LjBfMQotbGli UXQ1TXVsdGltZWRpYVdpZGdldHMuc28uNSBxdDUtbXVsdGltZWRpYS01LjYuMF8xCi1saWJRdDVO ZXR3b3JrQXV0aC5zby41IHF0NS1uZXR3b3JrYXV0aC01LjEwLjFfMQotbGliUXQ1UHVyY2hhc2lu Zy5zby41IHF0NS1wdXJjaGFzaW5nLTUuMTAuMV8xCi1saWJRdDVSZW1vdGVPYmplY3RzLnNvLjUg cXQ1LXJlbW90ZW9iamVjdHMtNS4xMC4xXzEKLWxpYnFnc3R0b29sc19wLnNvLjEgcXQ1LW11bHRp bWVkaWEtNS42LjBfMQotbGliUXQ1TGFic1RlbXBsYXRlcy5zby41IHF0NS1xdWlja2NvbnRyb2xz Mi01LjYuMF8xCi1saWJRdDVTY3htbC5zby41IHF0NS1zY3htbC01LjcuMV8xCi1saWJRdDVTY3Jp cHQuc28uNSBxdDUtc2NyaXB0LTUuNi4wXzEKLWxpYlF0NVNjcmlwdFRvb2xzLnNvLjUgcXQ1LXNj cmlwdC01LjYuMF8xCi1saWJRdDVTZW5zb3JzLnNvLjUgcXQ1LXNlbnNvcnMtNS42LjBfMQotbGli UXQ1U2VyaWFsQnVzLnNvLjUgcXQ1LXNlcmlhbGJ1cy01LjYuMF8xCi1saWJRdDVTZXJpYWxQb3J0 LnNvLjUgcXQ1LXNlcmlhbHBvcnQtNS42LjBfMQotbGliUXQ1U3ZnLnNvLjUgcXQ1LXN2Zy01LjYu MF8xCi1saWJRdDVDTHVjZW5lLnNvLjUgcXQ1LXRvb2xzLTUuNi4wXzEKLWxpYlF0NUhlbHAuc28u NSBxdDUtdG9vbHMtNS42LjBfMQotbGliUXQ1RGVzaWduZXIuc28uNSBxdDUtdG9vbHMtNS42LjBf MQotbGliUXQ1RGVzaWduZXJDb21wb25lbnRzLnNvLjUgcXQ1LXRvb2xzLTUuNi4wXzEKLWxpYlF0 NVdheWxhbmRDbGllbnQuc28uNSBxdDUtd2F5bGFuZC01LjYuMF8xCi1saWJRdDVXYXlsYW5kQ29t cG9zaXRvci5zby41IHF0NS13YXlsYW5kLTUuNi4wXzEKLWxpYlF0NVdlYkNoYW5uZWwuc28uNSBx dDUtd2ViY2hhbm5lbC01LjYuMF8xCi1saWJRdDVXZWJFbmdpbmVDb3JlLnNvLjUgcXQ1LXdlYmVu Z2luZS01LjYuMF8xCi1saWJRdDVXZWJFbmdpbmUuc28uNSBxdDUtd2ViZW5naW5lLTUuNi4wXzEK LWxpYlF0NVdlYkVuZ2luZVdpZGdldHMuc28uNSBxdDUtd2ViZW5naW5lLTUuNi4wXzEKLWxpYlF0 NVdlYlNvY2tldHMuc28uNSBxdDUtd2Vic29ja2V0cy01LjYuMF8xCi1saWJRdDVYMTFFeHRyYXMu c28uNSBxdDUteDExZXh0cmFzLTUuNi4wXzEKLWxpYlF0NVhtbFBhdHRlcm5zLnNvLjUgcXQ1LXht bHBhdHRlcm5zLTUuNi4wXzEKLWxpYlF0NUNvcmUuc28uNSBxdDUtNS42LjBfMQotbGliUXQ1RWds RlNEZXZpY2VJbnRlZ3JhdGlvbi5zby41IHF0NS01LjguMF8xCi1saWJRdDVOZXR3b3JrLnNvLjUg cXQ1LTUuNi4wXzEKLWxpYlF0NVNxbC5zby41IHF0NS01LjYuMF8xCi1saWJRdDVYbWwuc28uNSBx dDUtNS42LjBfMQotbGliUXQ1R3VpLnNvLjUgcXQ1LTUuNi4wXzEKLWxpYlF0NVdpZGdldHMuc28u NSBxdDUtNS42LjBfMQotbGliUXQ1VGVzdC5zby41IHF0NS01LjYuMF8xCi1saWJRdDVEQnVzLnNv LjUgcXQ1LTUuNi4wXzEKLWxpYlF0NUNvbmN1cnJlbnQuc28uNSBxdDUtNS42LjBfMQotbGliUXQ1 T3BlbkdMLnNvLjUgcXQ1LTUuNi4wXzEKLWxpYlF0NVByaW50U3VwcG9ydC5zby41IHF0NS01LjYu MF8xCi1saWJRdDVYY2JRcGEuc28uNSBxdDUtNS42LjBfMQotbGliUXQ1RWdsRGV2aWNlSW50ZWdy YXRpb24uc28uNSBxdDUtNS42LjBfMQotbGliUXQ1RWdsRnNLbXNTdXBwb3J0LnNvLjUgcXQ1LTUu Ny4xXzEKK2xpYlF0NUJsdWV0b290aC5zby41IHF0NS1jb25uZWN0aXZpdHktNS4xNC4xXzEKK2xp YlF0NTNEQW5pbWF0aW9uLnNvLjUgcXQ1LTNkLTUuMTQuMV8xCitsaWJRdDUzRENvcmUuc28uNSBx dDUtM2QtNS4xNC4xXzEKK2xpYlF0NTNESW5wdXQuc28uNSBxdDUtM2QtNS4xNC4xXzEKK2xpYlF0 NTNETG9naWMuc28uNSBxdDUtM2QtNS4xNC4xXzEKK2xpYlF0NTNEUmVuZGVyLnNvLjUgcXQ1LTNk LTUuMTQuMV8xCitsaWJRdDUzRFF1aWNrLnNvLjUgcXQ1LTNkLTUuMTQuMV8xCitsaWJRdDUzRFF1 aWNrSW5wdXQuc28uNSBxdDUtM2QtNS4xNC4xXzEKK2xpYlF0NTNEUXVpY2tSZW5kZXIuc28uNSBx dDUtM2QtNS4xNC4xXzEKK2xpYlF0NTNEUXVpY2tTY2VuZTJELnNvLjUgcXQ1LTNkLTUuMTQuMV8x CitsaWJRdDUzREV4dHJhcy5zby41IHF0NS0zZC01LjE0LjFfMQorbGliUXQ1M0RRdWlja0V4dHJh cy5zby41IHF0NS0zZC01LjE0LjFfMQorbGliUXQ1M0RRdWlja0FuaW1hdGlvbi5zby41IHF0NS0z ZC01LjE0LjFfMQorbGliUXQ1M0RRdWlja0lucHV0LnNvLjUgcXQ1LTNkLTUuMTQuMV8xCitsaWJR dDVDaGFydHMuc28uNSBxdDUtY2hhcnRzLTUuMTQuMV8xCitsaWJRdDVEYXRhVmlzdWFsaXphdGlv bi5zby41IHF0NS1kYXRhdmlzM2QtNS4xNC4xXzEKK2xpYlF0NUdhbWVwYWQuc28uNSBxdDUtZ2Ft ZXBhZC01LjE0LjFfMQorbGliUXQ1TmZjLnNvLjUgcXQ1LWNvbm5lY3Rpdml0eS01LjE0LjFfMQor bGliUXQ1V2ViVmlldy5zby41IHF0NS13ZWJ2aWV3LTUuMTQuMV8xCitsaWJRdDVRbWwuc28uNSBx dDUtZGVjbGFyYXRpdmUtNS4xNC4xXzEKK2xpYlF0NVFtbERldlRvb2xzLnNvLjUgcXQ1LWRlY2xh cmF0aXZlLTUuMTQuMV8xCitsaWJRdDVRdWljay5zby41IHF0NS1kZWNsYXJhdGl2ZS01LjE0LjFf MQorbGliUXQ1UXVpY2tUZXN0LnNvLjUgcXQ1LWRlY2xhcmF0aXZlLTUuMTQuMV8xCitsaWJRdDVR dWlja1dpZGdldHMuc28uNSBxdDUtZGVjbGFyYXRpdmUtNS4xNC4xXzEKK2xpYlF0NVF1aWNrUGFy dGljbGVzLnNvLjUgcXQ1LWRlY2xhcmF0aXZlLTUuMTQuMV8xCitsaWJRdDVRdWlja1NoYXBlcy5z by41IHF0NS1kZWNsYXJhdGl2ZS01LjE0LjFfMQorbGliUXQ1UW1sTW9kZWxzLnNvLjUgcXQ1LWRl Y2xhcmF0aXZlLTUuMTQuMV8xCitsaWJRdDVRbWxXb3JrZXJTY3JpcHQuc28uNSBxdDUtZGVjbGFy YXRpdmUtNS4xNC4xXzEKK2xpYlF0NVF1aWNrQ29udHJvbHMyLnNvLjUgcXQ1LXF1aWNrY29udHJv bHMyLTUuMTQuMV8xCitsaWJRdDVRdWlja1RlbXBsYXRlczIuc28uNSBxdDUtcXVpY2tjb250cm9s czItNS4xNC4xXzEKK2xpYlF0NVBvc2l0aW9uaW5nLnNvLjUgcXQ1LWxvY2F0aW9uLTUuMTQuMV8x CitsaWJRdDVMb2NhdGlvbi5zby41IHF0NS1sb2NhdGlvbi01LjE0LjFfMQorbGliUXQ1UG9zaXRp b25pbmdRdWljay5zby41IHF0NS1sb2NhdGlvbi01LjE0LjFfMQorbGliUXQ1VmlydHVhbEtleWJv YXJkLnNvLjUgcXQ1LXZpcnR1YWxrZXlib2FyZC01LjE0LjFfMQorbGliUXQ1TXVsdGltZWRpYS5z by41IHF0NS1tdWx0aW1lZGlhLTUuMTQuMV8xCitsaWJRdDVNdWx0aW1lZGlhR3N0VG9vbHMuc28u NSBxdDUtbXVsdGltZWRpYS01LjE0LjFfMQorbGliUXQ1TXVsdGltZWRpYVF1aWNrLnNvLjUgcXQ1 LW11bHRpbWVkaWEtNS4xNC4xXzEKK2xpYlF0NU11bHRpbWVkaWFRdWlja19wLnNvLjUgcXQ1LW11 bHRpbWVkaWEtNS4xNC4xXzEKK2xpYlF0NU11bHRpbWVkaWFXaWRnZXRzLnNvLjUgcXQ1LW11bHRp bWVkaWEtNS4xNC4xXzEKK2xpYlF0NU5ldHdvcmtBdXRoLnNvLjUgcXQ1LW5ldHdvcmthdXRoLTUu MTQuMV8xCitsaWJRdDVQdXJjaGFzaW5nLnNvLjUgcXQ1LXB1cmNoYXNpbmctNS4xNC4xXzEKK2xp YlF0NVJlbW90ZU9iamVjdHMuc28uNSBxdDUtcmVtb3Rlb2JqZWN0cy01LjE0LjFfMQorbGlicWdz dHRvb2xzX3Auc28uMSBxdDUtbXVsdGltZWRpYS01LjE0LjFfMQorbGliUXQ1TGFic1RlbXBsYXRl cy5zby41IHF0NS1xdWlja2NvbnRyb2xzMi01LjE0LjFfMQorbGliUXQ1U2N4bWwuc28uNSBxdDUt c2N4bWwtNS4xNC4xXzEKK2xpYlF0NVNjcmlwdC5zby41IHF0NS1zY3JpcHQtNS4xNC4xXzEKK2xp YlF0NVNjcmlwdFRvb2xzLnNvLjUgcXQ1LXNjcmlwdC01LjE0LjFfMQorbGliUXQ1U2Vuc29ycy5z by41IHF0NS1zZW5zb3JzLTUuMTQuMV8xCitsaWJRdDVTZXJpYWxCdXMuc28uNSBxdDUtc2VyaWFs YnVzLTUuMTQuMV8xCitsaWJRdDVTZXJpYWxQb3J0LnNvLjUgcXQ1LXNlcmlhbHBvcnQtNS4xNC4x XzEKK2xpYlF0NVN2Zy5zby41IHF0NS1zdmctNS4xNC4xXzEKK2xpYlF0NUNMdWNlbmUuc28uNSBx dDUtdG9vbHMtNS4xNC4xXzEKK2xpYlF0NUhlbHAuc28uNSBxdDUtdG9vbHMtNS4xNC4xXzEKK2xp YlF0NURlc2lnbmVyLnNvLjUgcXQ1LXRvb2xzLTUuMTQuMV8xCitsaWJRdDVEZXNpZ25lckNvbXBv bmVudHMuc28uNSBxdDUtdG9vbHMtNS4xNC4xXzEKK2xpYlF0NVdheWxhbmRDbGllbnQuc28uNSBx dDUtd2F5bGFuZC01LjE0LjFfMQorbGliUXQ1V2F5bGFuZENvbXBvc2l0b3Iuc28uNSBxdDUtd2F5 bGFuZC01LjE0LjFfMQorbGliUXQ1V2ViQ2hhbm5lbC5zby41IHF0NS13ZWJjaGFubmVsLTUuMTQu MV8xCitsaWJRdDVXZWJFbmdpbmVDb3JlLnNvLjUgcXQ1LXdlYmVuZ2luZS01LjE0LjFfMQorbGli UXQ1V2ViRW5naW5lLnNvLjUgcXQ1LXdlYmVuZ2luZS01LjE0LjFfMQorbGliUXQ1V2ViRW5naW5l V2lkZ2V0cy5zby41IHF0NS13ZWJlbmdpbmUtNS4xNC4xXzEKK2xpYlF0NVdlYlNvY2tldHMuc28u NSBxdDUtd2Vic29ja2V0cy01LjE0LjFfMQorbGliUXQ1WDExRXh0cmFzLnNvLjUgcXQ1LXgxMWV4 dHJhcy01LjE0LjFfMQorbGliUXQ1WG1sUGF0dGVybnMuc28uNSBxdDUteG1scGF0dGVybnMtNS4x NC4xXzEKK2xpYlF0NUNvcmUuc28uNSBxdDUtY29yZS01LjE0LjFfMQorbGliUXQ1RWdsRlNEZXZp Y2VJbnRlZ3JhdGlvbi5zby41IHF0NS1ndWktNS4xNC4xXzEKK2xpYlF0NU5ldHdvcmsuc28uNSBx dDUtbmV0d29yay01LjE0LjFfMQorbGliUXQ1U3FsLnNvLjUgcXQ1LXNxbC01LjE0LjFfMQorbGli UXQ1WG1sLnNvLjUgcXQ1LXhtbC01LjE0LjFfMQorbGliUXQ1R3VpLnNvLjUgcXQ1LWd1aS01LjE0 LjFfMQorbGliUXQ1V2lkZ2V0cy5zby41IHF0NS13aWRnZXRzLTUuMTQuMV8xCitsaWJRdDVUZXN0 LnNvLjUgcXQ1LXRlc3QtNS4xNC4xXzEKK2xpYlF0NURCdXMuc28uNSBxdDUtZGJ1cy01LjE0LjFf MQorbGliUXQ1Q29uY3VycmVudC5zby41IHF0NS1jb25jdXJyZW50LTUuMTQuMV8xCitsaWJRdDVP cGVuR0wuc28uNSBxdDUtb3BlbmdsLTUuMTQuMV8xCitsaWJRdDVQcmludFN1cHBvcnQuc28uNSBx dDUtcHJpbnRzdXBwb3J0LTUuMTQuMV8xCitsaWJRdDVYY2JRcGEuc28uNSBxdDUtZ3VpLTUuMTQu MV8xCitsaWJRdDVFZ2xEZXZpY2VJbnRlZ3JhdGlvbi5zby41IHF0NS1ndWktNS4xNC4xXzEKK2xp YlF0NUVnbEZzS21zU3VwcG9ydC5zby41IHF0NS1ndWktNS4xNC4xXzEKK2xpYlF0NVRleHRUb1Nw ZWVjaC5zby41IHF0NS1zcGVlY2gtNS4xNC4xXzEKK2xpYlF0NUJvZHltb3Zpbi5zby41IHF0NS1s b3R0aWUtNS4xNC4xXzEKIGxpYlF0NVdlYktpdC5zby41IHF0NS13ZWJraXQtNS42LjBfMQogbGli UXQ1V2ViS2l0V2lkZ2V0cy5zby41IHF0NS13ZWJraXQtNS42LjBfMQotbGliUXQ1VGV4dFRvU3Bl ZWNoLnNvLjUgcXQ1LXNwZWVjaC01LjguMF8xCi1saWJRdDVCb2R5bW92aW4uc28uNSBxdDUtbG90 dGllLTUuMTMuMF8xCiBsaWJ4MjY1LnNvLjE4OCB4MjY1LTMuM18xCiBsaWJRdDVYZGcuc28uMyBs aWJxdHhkZy0zLjEuMF8xCiBsaWJRdDVYZGdJY29uTG9hZGVyLnNvLjMgbGlicXR4ZGctMy4xLjBf MQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lIGIvc3JjcGtncy9xdDUtYmFzZS1k b2NzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmNwa2dzL3F0NS13ZWJlbmdp bmUKcmVuYW1lIHRvIHNyY3BrZ3MvcXQ1LWJhc2UtZG9jcwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9x dDUtY29uY3VycmVudCBiL3NyY3BrZ3MvcXQ1LWNvbmN1cnJlbnQKbmV3IGZpbGUgbW9kZSAxMjAw MDAKaW5kZXggMDAwMDAwMDAwMDAuLjc1NzkzZWI2NjY0Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj cGtncy9xdDUtY29uY3VycmVudApAQCAtMCwwICsxIEBACitxdDUKXCBObyBuZXdsaW5lIGF0IGVu ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS1jb3JlIGIvc3JjcGtncy9xdDUtY29y ZQpuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMC4uNzU3OTNlYjY2NjQKLS0t IC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS1jb3JlCkBAIC0wLDAgKzEgQEAKK3F0NQpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LWRidXMgYi9z cmNwa2dzL3F0NS1kYnVzCm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwLi43 NTc5M2ViNjY2NAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1LWRidXMKQEAgLTAsMCAr MSBAQAorcXQ1ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9xdDUtZ3VpIGIvc3JjcGtncy9xdDUtZ3VpCm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAw MDAwMDAwMDAwLi43NTc5M2ViNjY2NAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1LWd1 aQpAQCAtMCwwICsxIEBACitxdDUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n aXQgYS9zcmNwa2dzL3F0NS1uZXR3b3JrIGIvc3JjcGtncy9xdDUtbmV0d29yawpuZXcgZmlsZSBt b2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMC4uNzU3OTNlYjY2NjQKLS0tIC9kZXYvbnVsbAor KysgYi9zcmNwa2dzL3F0NS1uZXR3b3JrCkBAIC0wLDAgKzEgQEAKK3F0NQpcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LW9wZW5nbCBiL3NyY3BrZ3Mv cXQ1LW9wZW5nbApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMC4uNzU3OTNl YjY2NjQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS1vcGVuZ2wKQEAgLTAsMCArMSBA QAorcXQ1ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9x dDUtcHJpbnRzdXBwb3J0IGIvc3JjcGtncy9xdDUtcHJpbnRzdXBwb3J0Cm5ldyBmaWxlIG1vZGUg MTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwLi43NTc5M2ViNjY2NAotLS0gL2Rldi9udWxsCisrKyBi L3NyY3BrZ3MvcXQ1LXByaW50c3VwcG9ydApAQCAtMCwwICsxIEBACitxdDUKXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS1xdWlja3RpbWVsaW5lIGIv c3JjcGtncy9xdDUtcXVpY2t0aW1lbGluZQpuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAw MDAwMDAwMC4uNzU3OTNlYjY2NjQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS1xdWlj a3RpbWVsaW5lCkBAIC0wLDAgKzEgQEAKK3F0NQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXNxbCBiL3NyY3BrZ3MvcXQ1LXNxbApuZXcgZmlsZSBt b2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMC4uNzU3OTNlYjY2NjQKLS0tIC9kZXYvbnVsbAor KysgYi9zcmNwa2dzL3F0NS1zcWwKQEAgLTAsMCArMSBAQAorcXQ1ClwgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtdGVzdCBiL3NyY3BrZ3MvcXQ1LXRl c3QKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAuLjc1NzkzZWI2NjY0Ci0t LSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtdGVzdApAQCAtMCwwICsxIEBACitxdDUKXCBO byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13aWRnZXRz IGIvc3JjcGtncy9xdDUtd2lkZ2V0cwpuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAw MDAwMC4uNzU3OTNlYjY2NjQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS13aWRnZXRz CkBAIC0wLDAgKzEgQEAKK3F0NQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvcXQ1LXhjYi1wcml2YXRlLWhlYWRlcnMgYi9zcmNwa2dzL3F0NS14Y2ItcHJp dmF0ZS1oZWFkZXJzCm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwLi43NTc5 M2ViNjY2NAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1LXhjYi1wcml2YXRlLWhlYWRl cnMKQEAgLTAsMCArMSBAQAorcXQ1ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t Z2l0IGEvc3JjcGtncy9xdDUteG1sIGIvc3JjcGtncy9xdDUteG1sCm5ldyBmaWxlIG1vZGUgMTIw MDAwCmluZGV4IDAwMDAwMDAwMDAwLi43NTc5M2ViNjY2NAotLS0gL2Rldi9udWxsCisrKyBiL3Ny Y3BrZ3MvcXQ1LXhtbApAQCAtMCwwICsxIEBACitxdDUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9maWxlcy8wMDkwLWhhcmQtZGlzYWJsZS1xbWxj aGFjaGVnZW4ucGF0Y2ggYi9zcmNwa2dzL3F0NS9maWxlcy8wMDkwLWhhcmQtZGlzYWJsZS1xbWxj aGFjaGVnZW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlY2RmYjMwZjVi Li4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9maWxlcy8wMDkwLWhhcmQtZGlzYWJsZS1x bWxjaGFjaGVnZW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi0tLS0gcXRk ZWNsYXJhdGl2ZS90b29scy90b29scy5wcm8JMjAxOS0wNC0wOSAwMTowMTowNy4wMDAwMDAwMDAg KzAyMDAKLSsrKyAtCTIwMTktMDQtMjEgMDA6MjQ6MTYuMTkyOTY2MzQ1ICswMjAwCi1AQCAtNyw3 ICs3LDYgQEAKLSAgICAgICAgIHFtbG1pbiBcCi0gICAgICAgICBxbWxpbXBvcnRzY2FubmVyCi0g Ci0tICAgIHF0Q29uZmlnKGNvbW1hbmRsaW5lcGFyc2VyKTpxdENvbmZpZyh4bWxzdHJlYW13cml0 ZXIpOiBTVUJESVJTICs9IHFtbGNhY2hlZ2VuCi0gfQotIAotIHF0Q29uZmlnKHRocmVhZCk6IWFu ZHJvaWR8YW5kcm9pZF9hcHA6IXdhc20gewpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvZmlsZXMv cW1sY2FjaGVnZW4ucHJvIGIvc3JjcGtncy9xdDUvZmlsZXMvcW1sY2FjaGVnZW4ucHJvCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iNTk2M2JlY2Q2YwotLS0gL2Rldi9u dWxsCisrKyBiL3NyY3BrZ3MvcXQ1L2ZpbGVzL3FtbGNhY2hlZ2VuLnBybwpAQCAtMCwwICsxLDM4 IEBACitRVCA9IGNvcmUgcW1sIHFtbGRldnRvb2xzLXByaXZhdGUKK0RFRklORVMgKz0gUVRfTk9f Q0FTVF9UT19BU0NJSSBRVF9OT19DQVNUX0ZST01fQVNDSUkKKworU09VUkNFUyA9IHFtbGNhY2hl Z2VuLmNwcCBcCisgICAgcmVzb3VyY2VmaWx0ZXIuY3BwIFwKKyAgICBnZW5lcmF0ZWxvYWRlci5j cHAKK1RBUkdFVCA9IHFtbGNhY2hlZ2VuCisKK2luY2x1ZGUoLi4vc2hhcmVkL3NoYXJlZC5wcmkp CisKK2J1aWxkX2ludGVncmF0aW9uLmZpbGVzID0gcW1sY2FjaGUucHJmIHF0cXVpY2tjb21waWxl ci5wcmYKK2J1aWxkX2ludGVncmF0aW9uLnBhdGggPSAkJFtRVF9IT1NUX0RBVEFdL21rc3BlY3Mv ZmVhdHVyZXMKK3ByZWZpeF9idWlsZDogSU5TVEFMTFMgKz0gYnVpbGRfaW50ZWdyYXRpb24KK2Vs c2U6IENPUElFUyArPSBidWlsZF9pbnRlZ3JhdGlvbgorCitsb2FkKGNtYWtlX2Z1bmN0aW9ucykK KworQ01BS0VfQklOX0RJUiA9ICQkY21ha2VSZWxhdGl2ZVBhdGgoJCRbUVRfSE9TVF9CSU5TXSwg JCRbUVRfSU5TVEFMTF9QUkVGSVhdKQorY29udGFpbnMoQ01BS0VfQklOX0RJUiwgIl5cXC5cXC4v LioiKSB7CisgICAgQ01BS0VfQklOX0RJUiA9ICQkW1FUX0hPU1RfQklOU10vCisgICAgQ01BS0Vf QklOX0RJUl9JU19BQlNPTFVURSA9IFRydWUKK30KKworbG9hZChxdF9idWlsZF9wYXRocykKKwor ZXF1YWxzKFFNQUtFX0hPU1Qub3MsIFdpbmRvd3MpOiBDTUFLRV9CSU5fU1VGRklYID0gIi5leGUi CitjbWFrZV9jb25maWdfZmlsZS5pbnB1dCA9ICQkUFdEL1F0NVF1aWNrQ29tcGlsZXJDb25maWcu Y21ha2UuaW4KK2NtYWtlX2NvbmZpZ19maWxlLm91dHB1dCA9ICQkTU9EVUxFX0JBU0VfT1VURElS L2xpYi9jbWFrZS9RdDVRdWlja0NvbXBpbGVyL1F0NVF1aWNrQ29tcGlsZXJDb25maWcuY21ha2UK K1FNQUtFX1NVQlNUSVRVVEVTICs9IGNtYWtlX2NvbmZpZ19maWxlCisKK2NtYWtlX2J1aWxkX2lu dGVncmF0aW9uLmZpbGVzID0gJCRjbWFrZV9jb25maWdfZmlsZS5vdXRwdXQKK2NtYWtlX2J1aWxk X2ludGVncmF0aW9uLnBhdGggPSAkJFtRVF9JTlNUQUxMX0xJQlNdL2NtYWtlL1F0NVF1aWNrQ29t cGlsZXIKK3ByZWZpeF9idWlsZDogSU5TVEFMTFMgKz0gY21ha2VfYnVpbGRfaW50ZWdyYXRpb24K K2Vsc2U6IENPUElFUyArPSBjbWFrZV9idWlsZF9pbnRlZ3JhdGlvbgorCitRTUFLRV9UQVJHRVRf REVTQ1JJUFRJT04gPSBRTUwgQ2FjaGUgR2VuZXJhdG9yCisKK2xvYWQocXRfdG9vbCkKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvcXQ1L2ZpbGVzL3FtbGltcG9ydHNjYW5uZXIucHJvIGIvc3JjcGtncy9x dDUvZmlsZXMvcW1saW1wb3J0c2Nhbm5lci5wcm8KaW5kZXggNTdjMjI4Yjg1NDAuLmFiMWU4NTEy OTNhIDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS9maWxlcy9xbWxpbXBvcnRzY2FubmVyLnBybwor KysgYi9zcmNwa2dzL3F0NS9maWxlcy9xbWxpbXBvcnRzY2FubmVyLnBybwpAQCAtMyw2ICszLDgg QEAgREVGSU5FUyArPSBRVF9OT19DQVNUX1RPX0FTQ0lJIFFUX05PX0NBU1RfRlJPTV9BU0NJSQog CiBTT1VSQ0VTICs9IG1haW4uY3BwIC4uLy4uL3NyYy9xbWwvcXFtbGpzZ3JhbW1hci5jcHAKIAor aW5jbHVkZSguLi9zaGFyZWQvc2hhcmVkLnByaSkKKwogUU1BS0VfVEFSR0VUX0RFU0NSSVBUSU9O ID0gUU1MIEltcG9ydCBTY2FubmVyCiAKIGxvYWQocXRfdG9vbCkKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvcXQ1L2ZpbGVzL3FtbGxpbnQucHJvIGIvc3JjcGtncy9xdDUvZmlsZXMvcW1sbGludC5wcm8K aW5kZXggNDA5YTM3OGJmY2IuLjhjYTYwMGMyMGVjIDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS9m aWxlcy9xbWxsaW50LnBybworKysgYi9zcmNwa2dzL3F0NS9maWxlcy9xbWxsaW50LnBybwpAQCAt MSw3ICsxLDIyIEBACiBRVCA9IGNvcmUgcW1sIHFtbGRldnRvb2xzLXByaXZhdGUKIAotU09VUkNF UyArPSBtYWluLmNwcCAuLi8uLi9zcmMvcW1sL3FxbWxqc2dyYW1tYXIuY3BwCitTT1VSQ0VTICs9 IG1haW4uY3BwIFwKKyAgICBjb21wb25lbnR2ZXJzaW9uLmNwcCBcCisgICAgZmFrZW1ldGFvYmpl Y3QuY3BwIFwKKyAgICBmaW5kdW5xdWFsaWZpZWQuY3BwIFwKKyAgICBxbWxqc3R5cGVkZXNjcmlw dGlvbnJlYWRlci5jcHAgXAorICAgIHFjb2xvcm91dHB1dC5jcHAgXAorICAgIHNjb3BldHJlZS5j cHAgXAorICAgIC4uLy4uL3NyYy9xbWwvcXFtbGpzZ3JhbW1hci5jcHAKIAogUU1BS0VfVEFSR0VU X0RFU0NSSVBUSU9OID0gUU1MIFN5bnRheCBWZXJpZmllcgogCiBsb2FkKHF0X3Rvb2wpCisKK0hF QURFUlMgKz0gXAorICAgIGNvbXBvbmVudHZlcnNpb24uaCBcCisgICAgZmFrZW1ldGFvYmplY3Qu aCBcCisgICAgZmluZHVucXVhbGlmaWVkLmggXAorICAgIHFtbGpzdHlwZWRlc2NyaXB0aW9ucmVh ZGVyLmggXAorICAgIHFjb2xvcm91dHB1dF9wLmggXAorICAgIHNjb3BldHJlZS5oCmRpZmYgLS1n aXQgYS9zcmNwa2dzL3F0NS9maWxlcy9xdHRvb2xzX3NyYy5wcm8gYi9zcmNwa2dzL3F0NS9maWxl cy9xdHRvb2xzX3NyYy5wcm8KaW5kZXggYzczNDQ0MDRjMDUuLmEzODdhOTkwMTY3IDEwMDY0NAot LS0gYS9zcmNwa2dzL3F0NS9maWxlcy9xdHRvb2xzX3NyYy5wcm8KKysrIGIvc3JjcGtncy9xdDUv ZmlsZXMvcXR0b29sc19zcmMucHJvCkBAIC0xLDUgKzEsNiBAQAogVEVNUExBVEUgPSBzdWJkaXJz CiAKK1FUX0ZPUl9DT05GSUcgKz0gd2lkZ2V0cwogU1VCRElSUyA9IGFzc2lzdGFudCBcCiAJcGl4 ZWx0b29sIFwKIAlkZXNpZ25lciBcCkBAIC04LDM0ICs5LDMxIEBAIFNVQkRJUlMgPSBhc3Npc3Rh bnQgXAogCXF0YXR0cmlidXRpb25zc2Nhbm5lcgogCiBsaW5ndWlzdC5kZXBlbmRzID0gZGVzaWdu ZXIKK3F0SGF2ZU1vZHVsZShxdWljayk6cXRDb25maWcodGhyZWFkKTpxdENvbmZpZyh0b29sYnV0 dG9uKTogU1VCRElSUyArPSBkaXN0YW5jZWZpZWxkZ2VuZXJhdG9yCisKIAogcXRDb25maWcobGli cmFyeSkgewogICAgICFhbmRyb2lkfGFuZHJvaWRfYXBwOiBTVUJESVJTICs9IHF0cGx1Z2luaW5m bwogfQogCi1pZighYW5kcm9pZHxhbmRyb2lkX2FwcCk6IXVpa2l0OiBTVUJESVJTICs9IHF0cGF0 aHMKKyFhbmRyb2lkfGFuZHJvaWRfYXBwOiBTVUJESVJTICs9IHF0cGF0aHMKIAotbWFjIHsKK21h Y29zIHsKICAgICBTVUJESVJTICs9IG1hY2RlcGxveXF0CiB9CiAKLWFuZHJvaWQgewotICAgIFNV QkRJUlMgKz0gYW5kcm9pZGRlcGxveXF0Ci19Ci0KIHdpbjMyfHdpbnJ0OlNVQkRJUlMgKz0gd2lu ZGVwbG95cXQKIHdpbnJ0OlNVQkRJUlMgKz0gd2lucnRydW5uZXIKLXF0SGF2ZU1vZHVsZShndWkp OiFhbmRyb2lkOiF1aWtpdDohcW54OiF3aW5ydDogU1VCRElSUyArPSBxdGRpYWcKK3F0SGF2ZU1v ZHVsZShndWkpOiF3YXNtOiFhbmRyb2lkOiF1aWtpdDohcW54OiF3aW5ydDogU1VCRElSUyArPSBx dGRpYWcKIAogcXROb21ha2VUb29scyggXAotICAgIG1hY2RlcGxveXF0IFwKKyAgICBkaXN0YW5j ZWZpZWxkZ2VuZXJhdG9yIFwKKyAgICBwaXhlbHRvb2wgXAogKQogCiAjIFRoaXMgaXMgbmVjZXNz YXJ5IHRvIGF2b2lkIGEgcmFjZSBjb25kaXRpb24gYmV0d2VlbiB0b29sY2hhaW4ucHJmCiAjIGlu dm9jYXRpb25zIGluIGEgbW9kdWxlLWJ5LW1vZHVsZSBjcm9zcy1idWlsZC4KIGNyb3NzX2NvbXBp bGU6aXNFbXB0eShRTUFLRV9IT1NUX0NYWC5JTkNESVJTKSB7Ci0gICAgYW5kcm9pZGRlcGxveXF0 LmRlcGVuZHMgKz0gcXRhdHRyaWJ1dGlvbnNzY2FubmVyCi0gICAgcWRvYy5kZXBlbmRzICs9IHF0 YXR0cmlidXRpb25zc2Nhbm5lcgogICAgIHdpbmRlcGxveXF0LmRlcGVuZHMgKz0gcXRhdHRyaWJ1 dGlvbnNzY2FubmVyCiAgICAgd2lucnRydW5uZXIuZGVwZW5kcyArPSBxdGF0dHJpYnV0aW9uc3Nj YW5uZXIKICAgICBsaW5ndWlzdC5kZXBlbmRzICs9IHF0YXR0cmlidXRpb25zc2Nhbm5lcgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9xdDUvZmlsZXMvcmVzb2x2X2NvbXBhdC5oIGIvc3JjcGtncy9xdDUv ZmlsZXMvcmVzb2x2X2NvbXBhdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjBl ODUyYTE5ZC4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvZmlsZXMvcmVzb2x2X2NvbXBh dC5oCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotI2lmICFkZWZpbmVkKF9fR0xJQkNf XykKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKLSAqIHJlc29sdl9jb21wYXQuaAotICoKLSAqIE1pbWlj ayBHTElCQydzIHJlc19uaW5pdCgpIGFuZCByZXNfbmNsb3NlKCkgZm9yIG11c2wgbGliYwotICog Tm90ZTogcmVzX2luaXQoKSBpcyBhY3R1YWxseSBkZXByZWNhdGVkIGFjY29yZGluZyB0bwotICog aHR0cDovL2RvY3Mub3JhY2xlLmNvbS9jZC9FMzY3ODRfMDEvaHRtbC9FMzY4NzUvcmVzLW5jbG9z ZS0zcmVzb2x2Lmh0bWwKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSNpbmNsdWRlIDxzdHJpbmcuaD4K LQotc3RhdGljIGlubGluZSBpbnQgcmVzX25pbml0KHJlc19zdGF0ZSBzdGF0cCkKLXsKLQlpbnQg cmMgPSByZXNfaW5pdCgpOwotCWlmIChzdGF0cCAhPSAmX3JlcykgewotCQltZW1jcHkoc3RhdHAs ICZfcmVzLCBzaXplb2YoKnN0YXRwKSk7Ci0JfQotCXJldHVybiByYzsKLX0KLQotc3RhdGljIGlu bGluZSBpbnQgcmVzX25jbG9zZShyZXNfc3RhdGUgc3RhdHApCi17Ci0JaWYgKCFzdGF0cCkKLQkJ cmV0dXJuIC0xOwotCWlmIChzdGF0cCAhPSAmX3JlcykgewotCQltZW1zZXQoc3RhdHAsIDAsIHNp emVvZigqc3RhdHApKTsKLQl9Ci0JcmV0dXJuIDA7Ci19Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvcXQ1L2ZpbGVzL3VpYy5wcm8gYi9zcmNwa2dzL3F0NS9maWxlcy91aWMucHJvCmluZGV4 IDc0ZDdkYmQ4NzhmLi5kYzA4ZWZjZmYxOSAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDUvZmlsZXMv dWljLnBybworKysgYi9zcmNwa2dzL3F0NS9maWxlcy91aWMucHJvCkBAIC00LDYgKzQsNyBAQCBE RUZJTkVTICs9IFFUX1VJQyBRVF9OT19DQVNUX0ZST01fQVNDSUkgUVRfTk9fRk9SRUFDSAogaW5j bHVkZSh1aWMucHJpKQogaW5jbHVkZShzaGFyZWQvc2hhcmVkLnByaSkKIGluY2x1ZGUoY3BwL2Nw cC5wcmkpCitpbmNsdWRlKHB5dGhvbi9weXRob24ucHJpKQogCiBIRUFERVJTICs9IHVpYy5oCiAK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L2ZpbGVzL3VpdG9vbHMucHJvIGIvc3JjcGtncy9xdDUv ZmlsZXMvdWl0b29scy5wcm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LjUxZTIyYjE0NTA2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUvZmlsZXMvdWl0b29s cy5wcm8KQEAgLTAsMCArMSwxNSBAQAorVEFSR0VUID0gUXRVaVRvb2xzCitDT05GSUcgKz0gc3Rh dGljCisKK2luY2x1ZGUoLi4vbGliL3VpbGliL3VpbGliLnByaSkKKworUU1BS0VfRE9DUyA9ICQk UFdEL2RvYy9xdHVpdG9vbHMucWRvY2NvbmYKKworSEVBREVSUyArPSBxdWlsb2FkZXIuaAorU09V UkNFUyArPSBxdWlsb2FkZXIuY3BwCisKK0RFRklORVMgKz0gXAorICAgIFFGT1JNSU5URVJOQUxf TkFNRVNQQUNFIFwKKyAgICBRVF9ERVNJR05FUl9TVEFUSUMKKworbG9hZChxdF9tb2R1bGUpCmRp ZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMDEtYWRkbHIucGF0Y2ggYi9zcmNwa2dz L3F0NS9wYXRjaGVzLzAwMDEtYWRkbHIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLmU0MTUzMzJkZDg5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUv cGF0Y2hlcy8wMDAxLWFkZGxyLnBhdGNoCkBAIC0wLDAgKzEsMjMgQEAKK1NvdXJjZTogQEpvaG5u eW5hdG9yCitVcHN0ZWFtOiBObworU3ViamVjdDogTXVzbCBhbHdheXMgcmV0dXJucyAvbGliL2xp YlF0NUNvcmUuc28uNSBmb3IgRGxfaW5mby5kbGlfZm5hbWUuIAorT24gR0xJQkMgdGhpcyBzZWVt cyB0byBvbmx5IGhhcHBlbiB3aXRoIHByb2dyYW1zIHRoYXQgbG9hZCBxdDUtd2ViZW5naW5lKD8p CisKKy0tLQorZGlmZiAtLWdpdCBxdGJhc2VzcmMvY29yZWxpYi9nbG9iYWwvcWxpYnJhcnlpbmZv LmNwcCBxdGJhc2VzcmMvY29yZWxpYi9nbG9iYWwvcWxpYnJhcnlpbmZvLmNwcAoraW5kZXggOGJj ZjY3ZTczZC4uMjhkNzM1NTMxMCAxMDA2NDQKKy0tLSBxdGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFs L3FsaWJyYXJ5aW5mby5jcHAKKysrKyBxdGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFsL3FsaWJyYXJ5 aW5mby5jcHAKK0BAIC01NTgsNiArNTU4LDEyIEBAIHN0YXRpYyBRU3RyaW5nIGdldFJlbG9jYXRh YmxlUHJlZml4KCkKKyAgICAgaW50IHJlc3VsdCA9IGRsYWRkcihyZWludGVycHJldF9jYXN0PHZv aWQgKj4oJlFMaWJyYXJ5SW5mbzo6aXNEZWJ1Z0J1aWxkKSwgJmluZm8pOworICAgICBpZiAocmVz dWx0ID4gMCAmJiBpbmZvLmRsaV9mbmFtZSkKKyAgICAgICAgIHByZWZpeFBhdGggPSBwcmVmaXhG cm9tUXRDb3JlTGlicmFyeUhlbHBlcihRU3RyaW5nOjpmcm9tTGF0aW4xKGluZm8uZGxpX2ZuYW1l KSk7CisrI2lmIDEKKysgICAgUURpciBwcmVEaXIocHJlZml4UGF0aCk7CisrICAgIGlmIChwcmVE aXIuaXNSb290KCkpIHsKKysgICAgICAgIHByZWZpeFBhdGggPSBRU3RyaW5nTGl0ZXJhbCgiL3Vz ciIpOworKyAgICB9CisrI2VuZGlmCisgI2VsaWYgZGVmaW5lZChRX09TX1dJTikKKyAgICAgSE1P RFVMRSBoTW9kdWxlID0gZ2V0V2luZG93c01vZHVsZUhhbmRsZSgpOworICAgICBjb25zdCBpbnQg a0J1ZmZlclNpemUgPSA0MDk2OwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDAy LVVzZS1fZnBzdGF0ZS1pbnN0ZWFkLW9mLV9saWJjX2Zwc3RhdGUtb24tbGludXgucGF0Y2ggYi9z cmNwa2dzL3F0NS9wYXRjaGVzLzAwMDItVXNlLV9mcHN0YXRlLWluc3RlYWQtb2YtX2xpYmNfZnBz dGF0ZS1vbi1saW51eC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2U3ODdk MTM3NGUuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAwMi1Vc2UtX2Zw c3RhdGUtaW5zdGVhZC1vZi1fbGliY19mcHN0YXRlLW9uLWxpbnV4LnBhdGNoCisrKyAvZGV2L251 bGwKQEAgLTEsNDIgKzAsMCBAQAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3Jp dGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuaAkyMDE4LTA2LTE1IDA5OjQ3OjIwLjAwMDAwMDAw MCArMDIwMAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0 eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91 Y29udGV4dF9yZWFkZXIuaAkyMDE4LTA5LTA3IDIyOjIxOjI4LjUyMTc2MzcxNiArMDIwMAotQEAg LTUwLDcgKzUwLDcgQEAKLSAgIC8vICAgaW5mbzogdGhlIGNvbGxlY3Rpb24gb2YgcmVnaXN0ZXIg c3RydWN0dXJlcy4KLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NCkK LSAgIHN0YXRpYyB2b2lkIEZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUgKm91dCwgY29uc3Qg dWNvbnRleHRfdCAqdWMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1 Y3QgX2xpYmNfZnBzdGF0ZSogZnApOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3Qgc3RydWN0IF9mcHN0YXRlKiBmcCk7Ci0gI2VsaWYgZGVmaW5lZChfX2FhcmNoNjRfXykKLSAg IHN0YXRpYyB2b2lkIEZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUgKm91dCwgY29uc3QgdWNv bnRleHRfdCAqdWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qg ZnBzaW1kX2NvbnRleHQqIGZwcmVncyk7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVt cF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5jYwkyMDE4LTA2LTE1IDA5OjQ3OjIwLjAw MDAwMDAwMCArMDIwMAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2Nv bW1vbi91Y29udGV4dF9yZWFkZXIuY2MJMjAxOC0wOS0wNyAyMjoyMTo0NS43NjY3NjI2ODggKzAy MDAKLUBAIC00OSw3ICs0OSw3IEBACi0gfQotIAotIHZvaWQgVUNvbnRleHRSZWFkZXI6OkZpbGxD UFVDb250ZXh0KFJhd0NvbnRleHRDUFUgKm91dCwgY29uc3QgdWNvbnRleHRfdCAqdWMsCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IF9saWJjX2Zwc3Rh dGUqIGZwKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ry dWN0IF9mcHN0YXRlKiBmcCkgewotICAgY29uc3QgZ3JlZ190KiByZWdzID0gdWMtPnVjX21jb250 ZXh0LmdyZWdzOwotIAotICAgb3V0LT5jb250ZXh0X2ZsYWdzID0gTURfQ09OVEVYVF9YODZfRlVM TCB8Ci1AQCAtOTcsNyArOTcsNyBAQAotIH0KLSAKLSB2b2lkIFVDb250ZXh0UmVhZGVyOjpGaWxs Q1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0X3QgKnVjLAotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBfbGliY19mcHN0 YXRlKiBmcHJlZ3MpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBzdHJ1Y3QgX2Zwc3RhdGUqIGZwcmVncykgewotICAgY29uc3QgZ3JlZ190KiByZWdzID0gdWMt PnVjX21jb250ZXh0LmdyZWdzOwotIAotICAgb3V0LT5jb250ZXh0X2ZsYWdzID0gTURfQ09OVEVY VF9BTUQ2NF9GVUxMOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRl ci9taW5pZHVtcF93cml0ZXIuaAkyMDE4LTA2LTE1IDA5OjQ3OjIwLjAwMDAwMDAwMCArMDIwMAot KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3Bh ZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93cml0 ZXIuaAkyMDE4LTA5LTA3IDIzOjM2OjMyLjA0OTQ5NTI4NSArMDIwMAotQEAgLTQ4LDcgKzQ4LDcg QEAKLSAjaWYgZGVmaW5lZChfX2FhcmNoNjRfXykKLSB0eXBlZGVmIHN0cnVjdCBmcHNpbWRfY29u dGV4dCBmcHN0YXRlX3Q7Ci0gI2VsaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5l ZChfX21pcHNfXykKLS10eXBlZGVmIHN0cnVjdCBfbGliY19mcHN0YXRlIGZwc3RhdGVfdDsKLSt0 eXBlZGVmIHN0cnVjdCBfZnBzdGF0ZSBmcHN0YXRlX3Q7Ci0gI2VuZGlmCi0gCi0gLy8gVGhlc2Ug ZW50cmllcyBzdG9yZSBhIGxpc3Qgb2YgbWVtb3J5IHJlZ2lvbnMgdGhhdCB0aGUgY2xpZW50IHdh bnRzIGluY2x1ZGVkCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMDMtaW5jbHVk ZS1zeXMtcmVnLmgtdG8tZ2V0LV9fV09SRFNJWkUtb24tbXVzbC1saWJjLnBhdGNoIGIvc3JjcGtn cy9xdDUvcGF0Y2hlcy8wMDAzLWluY2x1ZGUtc3lzLXJlZy5oLXRvLWdldC1fX1dPUkRTSVpFLW9u LW11c2wtbGliYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGE0MTYwYjIx YmQuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAwMy1pbmNsdWRlLXN5 cy1yZWcuaC10by1nZXQtX19XT1JEU0laRS1vbi1tdXNsLWxpYmMucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSwyNiArMCwwIEBACi1Gcm9tIDkwMDFjNTRkNmI5NzQ0NDkxNzRhOGNlZThmM2Y1ZDc4 YTliZDZjOWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBGZWxpeCBKYW5kYSA8ZmVs aXguamFuZGFAcG9zdGVvLmRlPgotRGF0ZTogU3VuLCAxIEZlYiAyMDE1IDE0OjI2OjUyICswMTAw Ci1TdWJqZWN0OiBbUEFUQ0ggMy82XSBpbmNsdWRlIDxzeXMvcmVnLmg+IHRvIGdldCBfX1dPUkRT SVpFIG9uIG11c2wgbGliYwotCi0tLS0KLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NvbW1vbi9saW51eC9lbGZfY29y ZV9kdW1wLmggfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAt LWdpdCBhL3NyYy9jb21tb24vbGludXgvZWxmX2NvcmVfZHVtcC5oIGIvc3JjL2NvbW1vbi9saW51 eC9lbGZfY29yZV9kdW1wLmgKLWluZGV4IGQwM2M3YTguLjAyZWIzOTEgMTAwNjQ0Ci0tLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFr cGFkL3NyYy9jb21tb24vbGludXgvZWxmX2NvcmVfZHVtcC5oCi0rKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21t b24vbGludXgvZWxmX2NvcmVfZHVtcC5oCi1AQCAtMzYsNiArMzYsOSBAQAotICNpbmNsdWRlIDxl bGYuaD4KLSAjaW5jbHVkZSA8bGluay5oPgotICNpbmNsdWRlIDxzdGRkZWYuaD4KLSsjaWZuZGVm IF9fR0xJQkNfXwotKyNpbmNsdWRlIDxzeXMvcmVnLmg+Ci0rI2VuZGlmCi0gCi0gI2luY2x1ZGUg ImNvbW1vbi9tZW1vcnlfcmFuZ2UuaCIKLSAKLS0tIAotMi4wLjUKLQpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9xdDUvcGF0Y2hlcy8wMDA0LW11c2wtZGlzcGF0Y2gtdG8tbXVzbC5wYXRjaCBiL3NyY3Br Z3MvcXQ1L3BhdGNoZXMvMDAwNC1tdXNsLWRpc3BhdGNoLXRvLW11c2wucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlMzJhM2RhYjk1Li4wMDAwMDAwMDAwMAotLS0gYS9zcmNw a2dzL3F0NS9wYXRjaGVzLzAwMDQtbXVzbC1kaXNwYXRjaC10by1tdXNsLnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsMTAzICswLDAgQEAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vYmFzZS9hbGxvY2F0b3IvYWxsb2NhdG9yX3NoaW1fZGVmYXVsdF9kaXNwYXRjaF90b19n bGliYy5jYwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL2FsbG9j YXRvci9hbGxvY2F0b3Jfc2hpbV9kZWZhdWx0X2Rpc3BhdGNoX3RvX2dsaWJjLmNjCi1AQCAtNiw2 ICs2LDcgQEAKLSAKLSAjaW5jbHVkZSA8bWFsbG9jLmg+Ci0gCi0rI2lmIGRlZmluZWQoX19HTElC Q19fKQotIC8vIFRoaXMgdHJhbnNsYXRpb24gdW5pdCBkZWZpbmVzIGEgZGVmYXVsdCBkaXNwYXRj aCBmb3IgdGhlIGFsbG9jYXRvciBzaGltIHdoaWNoCi0gLy8gcm91dGVzIGFsbG9jYXRpb25zIHRv IGxpYmMgZnVuY3Rpb25zLgotIC8vIFRoZSBjb2RlIGhlcmUgaXMgc3Ryb25nbHkgaW5zcGlyZWQg ZnJvbSB0Y21hbGxvYydzIGxpYmNfb3ZlcnJpZGVfZ2xpYmMuaC4KLUBAIC03MywzICs3NCw5MiBA QCBjb25zdCBBbGxvY2F0b3JEaXNwYXRjaCBBbGxvY2F0b3JEaXNwYXRjaDo6ZGVmYXVsdF9kaXNw YXRjaCA9IHsKLSAgICAgbnVsbHB0ciwgICAgICAgICAgICAgICAvKiBmcmVlX2RlZmluaXRlX3Np emVfZnVuY3Rpb24gKi8KLSAgICAgbnVsbHB0ciwgICAgICAgICAgICAgICAvKiBuZXh0ICovCi0g fTsKLSsKLSsjZWxzZSAvLyBkZWZpbmVkKF9fR0xJQkNfXykKLSsKLSsjaW5jbHVkZSA8ZGxmY24u aD4KLSsKLStleHRlcm4gIkMiIHsKLSsvLyBEZWNsYXJlIGZ1bmN0aW9uIHBvaW50ZXJzIHRvIHRo ZSBtZW1vcnkgZnVuY3Rpb25zCi0rdHlwZWRlZiB2b2lkKiAoKnRfbGliY19tYWxsb2MpKHNpemVf dCBzaXplKTsKLSt0eXBlZGVmIHZvaWQqICgqdF9saWJjX2NhbGxvYykoc2l6ZV90IG4sIHNpemVf dCBzaXplKTsKLSt0eXBlZGVmIHZvaWQqICgqdF9saWJjX3JlYWxsb2MpKHZvaWQqIGFkZHJlc3Ms IHNpemVfdCBzaXplKTsKLSt0eXBlZGVmIHZvaWQqICgqdF9saWJjX21lbWFsaWduKShzaXplX3Qg YWxpZ25tZW50LCBzaXplX3Qgc2l6ZSk7Ci0rdHlwZWRlZiB2b2lkICgqdF9saWJjX2ZyZWUpKHZv aWQqIHB0cik7Ci0rdHlwZWRlZiBzaXplX3QgKCp0X2xpYmNfbWFsbG9jX3VzYWJsZV9zaXplKSh2 b2lkKiBwdHIpOwotKwotKy8vIFN0YXRpYyBpbnN0YW5jZXMgb2YgcG9pbnRlcnMgdG8gbGliYy5z byBkbCBzeW1ib2xzCi0rc3RhdGljIHRfbGliY19tYWxsb2MgbGliY19tYWxsb2MgPSBOVUxMOwot K3N0YXRpYyB0X2xpYmNfY2FsbG9jIGxpYmNfY2FsbG9jID0gTlVMTDsKLStzdGF0aWMgdF9saWJj X3JlYWxsb2MgbGliY19yZWFsbG9jID0gTlVMTDsKLStzdGF0aWMgdF9saWJjX21lbWFsaWduIGxp YmNfbWVtYWxpZ24gPSBOVUxMOwotK3N0YXRpYyB0X2xpYmNfZnJlZSBsaWJjX2ZyZWUgPSBOVUxM OwotK3N0YXRpYyB0X2xpYmNfbWFsbG9jX3VzYWJsZV9zaXplIGxpYmNfbWFsbG9jX3VzYWJsZV9z aXplID0gTlVMTDsKLSsKLSsvLyByZXNvbHZlIHRoZSBzeW1ib2xzIGluIGxpYmMuc28KLSt2b2lk IG11c2xfbGliY19tZW1vcnlfaW5pdCh2b2lkKQotK3sKLSsgIGxpYmNfbWFsbG9jID0gKHRfbGli Y19tYWxsb2MpIGRsc3ltKFJUTERfTkVYVCwgIm1hbGxvYyIpOwotKyAgbGliY19jYWxsb2MgPSAo dF9saWJjX2NhbGxvYykgZGxzeW0oUlRMRF9ORVhULCAiY2FsbG9jIik7Ci0rICBsaWJjX3JlYWxs b2MgPSAodF9saWJjX3JlYWxsb2MpIGRsc3ltKFJUTERfTkVYVCwgInJlYWxsb2MiKTsKLSsgIGxp YmNfbWVtYWxpZ24gPSAodF9saWJjX21lbWFsaWduKSBkbHN5bShSVExEX05FWFQsICJtZW1hbGln biIpOwotKyAgbGliY19mcmVlID0gKHRfbGliY19mcmVlKSBkbHN5bShSVExEX05FWFQsICJmcmVl Iik7Ci0rICBsaWJjX21hbGxvY191c2FibGVfc2l6ZSA9ICh0X2xpYmNfbWFsbG9jX3VzYWJsZV9z aXplKSBkbHN5bShSVExEX05FWFQsICJtYWxsb2NfdXNhYmxlX3NpemUiKTsKLSt9Ci0rfSAgLy8g ZXh0ZXJuICJDIgotKwotK25hbWVzcGFjZSB7Ci0rCi0rdXNpbmcgYmFzZTo6YWxsb2NhdG9yOjpB bGxvY2F0b3JEaXNwYXRjaDsKLSsKLSt2b2lkKiBNdXNsTWFsbG9jKGNvbnN0IEFsbG9jYXRvckRp c3BhdGNoKiwgc2l6ZV90IHNpemUsIHZvaWQqIGNvbnRleHQpIHsKLSsgIGlmICghbGliY19tYWxs b2MpCi0rICAgIG11c2xfbGliY19tZW1vcnlfaW5pdCgpOwotKyAgcmV0dXJuICgqbGliY19tYWxs b2MpKHNpemUpOwotK30KLSsKLSt2b2lkKiBNdXNsQ2FsbG9jKGNvbnN0IEFsbG9jYXRvckRpc3Bh dGNoKiwgc2l6ZV90IG4sIHNpemVfdCBzaXplLCB2b2lkKiBjb250ZXh0KSB7Ci0rICBpZiAoIWxp YmNfY2FsbG9jKQotKyAgICBtdXNsX2xpYmNfbWVtb3J5X2luaXQoKTsKLSsgIHJldHVybiAoKmxp YmNfY2FsbG9jKShuLCBzaXplKTsKLSt9Ci0rCi0rdm9pZCogTXVzbFJlYWxsb2MoY29uc3QgQWxs b2NhdG9yRGlzcGF0Y2gqLCB2b2lkKiBhZGRyZXNzLCBzaXplX3Qgc2l6ZSwgdm9pZCogY29udGV4 dCkgewotKyAgaWYgKCFsaWJjX3JlYWxsb2MpCi0rICAgIG11c2xfbGliY19tZW1vcnlfaW5pdCgp OwotKyAgcmV0dXJuICgqbGliY19yZWFsbG9jKShhZGRyZXNzLCBzaXplKTsKLSt9Ci0rCi0rdm9p ZCogTXVzbE1lbWFsaWduKGNvbnN0IEFsbG9jYXRvckRpc3BhdGNoKiwgc2l6ZV90IGFsaWdubWVu dCwgc2l6ZV90IHNpemUsIHZvaWQqIGNvbnRleHQpIHsKLSsgIGlmICghbGliY19tZW1hbGlnbikK LSsgICAgbXVzbF9saWJjX21lbW9yeV9pbml0KCk7Ci0rICByZXR1cm4gKCpsaWJjX21lbWFsaWdu KShhbGlnbm1lbnQsIHNpemUpOwotK30KLSsKLSt2b2lkIE11c2xGcmVlKGNvbnN0IEFsbG9jYXRv ckRpc3BhdGNoKiwgdm9pZCogYWRkcmVzcywgdm9pZCogY29udGV4dCkgewotKyAgaWYgKCFsaWJj X2ZyZWUpCi0rICAgIG11c2xfbGliY19tZW1vcnlfaW5pdCgpOwotKyAgKCpsaWJjX2ZyZWUpKGFk ZHJlc3MpOwotK30KLSsKLStzaXplX3QgTXVzbEdldFNpemVFc3RpbWF0ZShjb25zdCBBbGxvY2F0 b3JEaXNwYXRjaCosIHZvaWQqIGFkZHJlc3MsIHZvaWQqIGNvbnRleHQpIHsKLSsgIC8vIFRPRE8o c2lnZ2ksIHByaW1pYW5vKTogbWFsbG9jX3VzYWJsZV9zaXplIG1heSBuZWVkIHJlZGlyZWN0aW9u IGluIHRoZQotKyAgLy8gICAgIHByZXNlbmNlIG9mIGludGVycG9zaW5nIHNoaW1zIHRoYXQgZGl2 ZXJ0IGFsbG9jYXRpb25zLgotKyAgaWYgKCFsaWJjX21hbGxvY191c2FibGVfc2l6ZSkKLSsgICAg bXVzbF9saWJjX21lbW9yeV9pbml0KCk7Ci0rICByZXR1cm4gKCpsaWJjX21hbGxvY191c2FibGVf c2l6ZSkoYWRkcmVzcyk7Ci0rfQotKwotK30gIC8vIG5hbWVzcGFjZQotKwotK2NvbnN0IEFsbG9j YXRvckRpc3BhdGNoIEFsbG9jYXRvckRpc3BhdGNoOjpkZWZhdWx0X2Rpc3BhdGNoID0gewotKyAg ICAmTXVzbE1hbGxvYywgICAgICAgICAgIC8qIGFsbG9jX2Z1bmN0aW9uICovCi0rICAgICZNdXNs Q2FsbG9jLCAgICAgICAgICAgLyogYWxsb2NfemVyb19pbml0aWFsaXplZF9mdW5jdGlvbiAqLwot KyAgICAmTXVzbE1lbWFsaWduLCAgICAgICAgIC8qIGFsbG9jX2FsaWduZWRfZnVuY3Rpb24gKi8K LSsgICAgJk11c2xSZWFsbG9jLCAgICAgICAgICAvKiByZWFsbG9jX2Z1bmN0aW9uICovCi0rICAg ICZNdXNsRnJlZSwgICAgICAgICAgICAgLyogZnJlZV9mdW5jdGlvbiAqLwotKyAgICAmTXVzbEdl dFNpemVFc3RpbWF0ZSwgIC8qIGdldF9zaXplX2VzdGltYXRlX2Z1bmN0aW9uICovCi0rICAgIG51 bGxwdHIsICAgICAgICAgICAgICAgLyogbmV4dCAqLwotK307Ci0rCi0rI2VuZGlmCmRpZmYgLS1n aXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMDgtbXVzbC1uby1tYWxsaW5mby5wYXRjaCBiL3Ny Y3BrZ3MvcXQ1L3BhdGNoZXMvMDAwOC1tdXNsLW5vLW1hbGxpbmZvLnBhdGNoCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCBjMzMyYjkyYjY5ZC4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtn cy9xdDUvcGF0Y2hlcy8wMDA4LW11c2wtbm8tbWFsbGluZm8ucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSw0MCArMCwwIEBACi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jh c2UvdHJhY2VfZXZlbnQvbWFsbG9jX2R1bXBfcHJvdmlkZXIuY2MJMjAxNy0xMS0yOCAxNDowNjo1 My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v YmFzZS90cmFjZV9ldmVudC9tYWxsb2NfZHVtcF9wcm92aWRlci5jYwkyMDE4LTAxLTI3IDIwOjEz OjI2Ljk2MDkzMjgwNSArMDEwMAotQEAgLTI0Myw3ICsyNDMsNyBAQAotICAgYWxsb2NhdGVkX29i amVjdHNfY291bnQgPSBtYWluX2hlYXBfaW5mby5ibG9ja19jb3VudDsKLSAjZWxpZiBkZWZpbmVk KE9TX0ZVQ0hTSUEpCi0gLy8gVE9ETyhmdWNoc2lhKTogUG9ydCwgc2VlIGh0dHBzOi8vY3JidWcu Y29tLzcwNjU5Mi4KLS0jZWxzZQotKyNlbGlmIGRlZmluZWQoX19HTElCQ19fKQotICAgc3RydWN0 IG1hbGxpbmZvIGluZm8gPSBtYWxsaW5mbygpOwotICAgRENIRUNLX0dFKGluZm8uYXJlbmEgKyBp bmZvLmhibGtoZCwgaW5mby51b3JkYmxrcyk7Ci0gCi1AQCAtMjU1LDYgKzI1NSw4IEBACi0gCi0g ICAvLyBUb3RhbCBhbGxvY2F0ZWQgc3BhY2UgaXMgZ2l2ZW4gYnkgfHVvcmRibGtzfC4KLSAgIGFs bG9jYXRlZF9vYmplY3RzX3NpemUgPSBpbmZvLnVvcmRibGtzOwotKyNlbHNlCi0rLy8gbXVzbCBs aWJjIGRvZXMgbm90IHN1cHBvcnQgbWFsbGluZm8oKQotICNlbmRpZgotIAotICAgTWVtb3J5QWxs b2NhdG9yRHVtcCogb3V0ZXJfZHVtcCA9IHBtZC0+Q3JlYXRlQWxsb2NhdG9yRHVtcCgibWFsbG9j Iik7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvcHJvY2Vzcy9w cm9jZXNzX21ldHJpY3NfcG9zaXguY2MJMjAxNy0xMS0yOCAxNDowNjo1My4wMDAwMDAwMDAgKzAx MDAKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9wcm9jZXNzL3By b2Nlc3NfbWV0cmljc19wb3NpeC5jYwkyMDE4LTAxLTI3IDIwOjQ4OjExLjU3MTA0MDM0OCArMDEw MAotQEAgLTEwMCwxNCArMTAwLDE0IEBACi0gICBtYWxsb2Nfc3RhdGlzdGljc190IHN0YXRzID0g ezB9OwotICAgbWFsbG9jX3pvbmVfc3RhdGlzdGljcyhudWxscHRyLCAmc3RhdHMpOwotICAgcmV0 dXJuIHN0YXRzLnNpemVfaW5fdXNlOwotLSNlbGlmIGRlZmluZWQoT1NfTElOVVgpIHx8IGRlZmlu ZWQoT1NfQU5EUk9JRCkKLSsjZWxpZiAoZGVmaW5lZChPU19MSU5VWCkgJiYgZGVmaW5lZChfX0dM SUJDX18pKSB8fCBkZWZpbmVkKE9TX0FORFJPSUQpCi0gICBzdHJ1Y3QgbWFsbGluZm8gbWluZm8g PSBtYWxsaW5mbygpOwotICNpZiBkZWZpbmVkKFVTRV9UQ01BTExPQykKLSAgIHJldHVybiBtaW5m by51b3JkYmxrczsKLSAjZWxzZQotICAgcmV0dXJuIG1pbmZvLmhibGtoZCArIG1pbmZvLmFyZW5h OwotICNlbmRpZgotLSNlbGlmIGRlZmluZWQoT1NfRlVDSFNJQSkKLSsjZWxzZSAvL2lmIGRlZmlu ZWQoT1NfRlVDSFNJQSkgLy8gYWxzbyBtdXNsIGRvZXNuJ3QgZG8gdGhpcy4KLSAgIC8vIFRPRE8o ZnVjaHNpYSk6IE5vdCBjdXJyZW50bHkgZXhwb3NlZC4gaHR0cHM6Ly9jcmJ1Zy5jb20vNzM1MDg3 LgotICAgcmV0dXJuIDA7Ci0gI2VuZGlmCi0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNo ZXMvMDAwOS1tdXNsLW9mZl90LnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDA5LW11c2wt b2ZmX3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyZGIzYjllYmY0Li4w MDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMDktbXVzbC1vZmZfdC5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvb3RzL2luY2x1ZGUvb3BlbnR5cGUtc2FuaXRpc2Vy LmgJMjAxNi0wNS0yNiAxNDo1ODo1NC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvb3RzL2luY2x1ZGUvb3BlbnR5cGUtc2Fu aXRpc2VyLmgJMjAxNi0xMC0wMSAxNDozMTozMC44ODUwMDAwMDAgKzAyMDAKLUBAIC0yMSw2ICsy MSw3IEBACi0gI2RlZmluZSBodG9ucyh4KSBfYnl0ZXN3YXBfdXNob3J0ICh4KQotICNlbHNlCi0g I2luY2x1ZGUgPGFycGEvaW5ldC5oPgotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVk ZSA8c3RkaW50Lmg+Ci0gI2VuZGlmCi0gCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVz LzAwMTAtbXVzbC1wcmVhZC1wd3JpdGUucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMTAt bXVzbC1wcmVhZC1wd3JpdGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDE3YmJhMDE3Li4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMTAtbXVz bC1wcmVhZC1wd3JpdGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0tLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2xzcy9saW51eF9z eXNjYWxsX3N1cHBvcnQuaAkyMDE4LTA5LTA3IDIxOjI1OjI2LjYzOTk2NDEwMCArMDIwMAotKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9sc3MvbGludXhf c3lzY2FsbF9zdXBwb3J0LmgJMjAxOC0wOS0wNyAyMToyNToxMS42MTE5NjQ5OTUgKzAyMDAKLUBA IC0xNzk0LDYgKzE3OTQsMTUgQEAKLSAvKiBFbmQgb2YgczM5MC9zMzkweCBkZWZpbml0aW9ucyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gI2VuZGlmCi0g Ci0rI2lmbmRlZiBfX0dMSUJDX18KLSsgIC8qIEZvciBNdXNsIGxpYmMgcHJlYWQvcHJlYWQgaXMg dGhlIHNhbWUgYXMgcHJlYWQ2NC9wd3JpdGU2NCAqLwotKyNpZm5kZWYgX19OUl9wcmVhZAotKyNk ZWZpbmUgX19OUl9wcmVhZCAgICAgICAgICAgICAgX19OUl9wcmVhZDY0Ci0rI2VuZGlmCi0rI2lm bmRlZiBfX05SX3B3cml0ZQotKyNkZWZpbmUgX19OUl9wd3JpdGUgICAgICAgICAgICAgX19OUl9w d3JpdGU2NAotKyNlbmRpZgotKyNlbmRpZiAvKiBpZm5kZWYgX19HTElCQ19fICovCi0gCi0gLyog QWZ0ZXIgZm9ya2luZywgd2UgbXVzdCBtYWtlIHN1cmUgdG8gb25seSBjYWxsIHN5c3RlbSBjYWxs cy4gICAgICAgICAgICAgICAqLwotICNpZiBkZWZpbmVkKF9fQk9VTkRFRF9QT0lOVEVSU19fKQpk aWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDExLW11c2wtcmVwbGFjZS1wdmFsbG9j LnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDExLW11c2wtcmVwbGFjZS1wdmFsbG9jLnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNWNhZjM4MzZkNy4uMDAwMDAwMDAw MDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDExLW11c2wtcmVwbGFjZS1wdmFsbG9jLnBh dGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotLS0tIHF0d2ViZW5naW5lL3NyYy9j b3JlL2FwaS9xdGJ1Zy02MTUyMS5jcHAJMjAxNy0xMS0yOSAwOTo0MjoyOS4wMDAwMDAwMDAgKzAx MDAKLSsrKyBxdHdlYmVuZ2luZS9zcmMvY29yZS9hcGkvcXRidWctNjE1MjEuY3BwCTIwMTgtMDEt MjggMDY6NDk6MjkuNDU0MTc1NzI1ICswMTAwCi1AQCAtMTExLDcgKzExMSwxMSBAQAotIH0KLSAK LSBTSElNX0hJRERFTiB2b2lkKiBTaGltUHZhbGxvYyhzaXplX3Qgc2l6ZSkgewotKyNpZiBkZWZp bmVkKF9fR0xJQkNfXykKLSAgICAgcmV0dXJuIHB2YWxsb2Moc2l6ZSk7Ci0rI2Vsc2UKLSsgICAg cmV0dXJuIHZhbGxvYygoc2l6ZSs0MDk1KSZ+NDA5NSk7Ci0rI2VuZGlmCi0gfQotIAotIFNISU1f SElEREVOIGludCBTaGltUG9zaXhNZW1hbGlnbih2b2lkKiogciwgc2l6ZV90IGEsIHNpemVfdCBz KSB7CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMTItbXVzbC1yZXNvbHZlLnBh dGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDEyLW11c2wtcmVzb2x2ZS5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWRmY2ViNzlmMzAuLjAwMDAwMDAwMDAwCi0tLSBhL3Ny Y3BrZ3MvcXQ1L3BhdGNoZXMvMDAxMi1tdXNsLXJlc29sdmUucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSwyNiArMCwwIEBACi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL25l dC9kbnMvZG5zX3JlbG9hZGVyLmNjCTIwMTYtMTEtMDcgMTU6NDY6MTguMDAwMDAwMDAwICswMTAw Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL25ldC9kbnMvZG5zX3JlbG9h ZGVyLmNjCTIwMTYtMTItMjAgMDM6MzM6MTEuNzQ5MDU5NjU2ICswMTAwCi1AQCAtOSw2ICs5LDEw IEBACi0gCi0gI2luY2x1ZGUgPHJlc29sdi5oPgotIAotKyNpZiAhZGVmaW5lZChfX0dMSUJDX18p Ci0rI2luY2x1ZGUgInJlc29sdl9jb21wYXQuaCIKLSsjZW5kaWYKLSsKLSAjaW5jbHVkZSAiYmFz ZS9sYXp5X2luc3RhbmNlLmgiCi0gI2luY2x1ZGUgImJhc2UvbG9nZ2luZy5oIgotICNpbmNsdWRl ICJiYXNlL21hY3Jvcy5oIgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9u ZXQvZG5zL2Ruc19jb25maWdfc2VydmljZV9wb3NpeC5jYwkyMDE2LTExLTA3IDE1OjQ2OjE4LjAw MDAwMDAwMCArMDEwMAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9uZXQv ZG5zL2Ruc19jb25maWdfc2VydmljZV9wb3NpeC5jYwkyMDE2LTEyLTIwIDAzOjQwOjA3LjY3MTk1 MzA5OCArMDEwMAotQEAgLTYsNiArNiwxMCBAQAotIAotICNpbmNsdWRlIDxzdHJpbmc+Ci0gCi0r I2lmICFkZWZpbmVkKF9fR0xJQkNfXykKLSsjaW5jbHVkZSAicmVzb2x2X2NvbXBhdC5oIgotKyNl bmRpZgotKwotICNpbmNsdWRlICJiYXNlL2JpbmQuaCIKLSAjaW5jbHVkZSAiYmFzZS9maWxlcy9m aWxlLmgiCi0gI2luY2x1ZGUgImJhc2UvZmlsZXMvZmlsZV9wYXRoLmgiCmRpZmYgLS1naXQgYS9z cmNwa2dzL3F0NS9wYXRjaGVzLzAwMTUtbXVzbC1zaWdpbmZvX3QucGF0Y2ggYi9zcmNwa2dzL3F0 NS9wYXRjaGVzLzAwMTUtbXVzbC1zaWdpbmZvX3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IGZlNzYwYmUxNjY2Li4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRj aGVzLzAwMTUtbXVzbC1zaWdpbmZvX3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCww IEBACi1UaGVyZSdzIGEgc3VidGxlIGRpZmZlcmVuY2UgaW4gdGhlIGludGVybmFsIG5hbWUgb2Yg c2lnaW5mb190IGZpZWxkcwotYmV0d2VlbiBnbGliYyBhbmQgbXVzbC4gVGhlIHN0cnVjdHVyZSBp dHNlbGYgaXMgZXF1aXZhbGVudCwgc28gaXQKLXNob3VsZCBzdWZmaWNlIHRvIGFkZCBhIG1hY3Jv IHRvIHJlbmFtZSB0aGUgZmllbGQuCi0KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi90cmFwLmNjCTIwMTUtMDItMTcgMDU6NTc6 NDMuMDAwMDAwMDAwICswMTAwCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3NhbmRib3gvbGludXgvc2VjY29tcC1icGYvdHJhcC5jYwkyMDE1LTA2LTAzIDA4OjIwOjI1LjAz MjcxNjQyNyArMDIwMAotQEAgLTIyLDYgKzIyLDExIEBACi0gI2luY2x1ZGUgInNhbmRib3gvbGlu dXgvc2VydmljZXMvYW5kcm9pZF91Y29udGV4dC5oIgotICNlbmRpZgotCi0rLy8gbXVzbCBsaWJj IGRlZmluZXMgc2lnaW5mb190IF9fc2lfZmllbGRzIGluc3RlYWQgb2YgX3NpZmllbGRzCi0rI2lm ICFkZWZpbmVkKF9fR0xJQkNfXykKLSsjZGVmaW5lIF9zaWZpZWxkcyBfX3NpX2ZpZWxkcwotKyNl bmRpZgotKwotIG5hbWVzcGFjZSB7Ci0KLSBjb25zdCBpbnQga0NhcGFjaXR5SW5jcmVtZW50ID0g MjA7CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMTctbXVzbC1zdGFja3N0YXJ0 LnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDE3LW11c2wtc3RhY2tzdGFydC5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTcxMzZiYzJiY2QuLjAwMDAwMDAwMDAwCi0t LSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAxNy1tdXNsLXN0YWNrc3RhcnQucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL3d0Zi9zdGFja191dGls LmNjCTIwMTgtMDEtMjcgMjM6MDg6NDMuNTg2NDc1MzQ5ICswMTAwCi0rKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3Jt L3d0Zi9zdGFja191dGlsLmNjCTIwMTgtMDEtMjcgMjM6MTg6MjIuMjc0NTA1MjAzICswMTAwCi1A QCAtMjgsNyArMjgsNyBAQAotIC8vIEZJWE1FOiBPbiBNYWMgT1NYIGFuZCBMaW51eCwgdGhpcyBt ZXRob2QgY2Fubm90IGVzdGltYXRlIHN0YWNrIHNpemUKLSAvLyBjb3JyZWN0bHkgZm9yIHRoZSBt YWluIHRocmVhZC4KLSAKLS0jaWYgZGVmaW5lZChfX0dMSUJDX18pIHx8IGRlZmluZWQoT1NfQU5E Uk9JRCkgfHwgZGVmaW5lZChPU19GUkVFQlNEKSB8fCBcCi0rI2lmIGRlZmluZWQoT1NfTElOVVgp IHx8IGRlZmluZWQoT1NfQU5EUk9JRCkgfHwgZGVmaW5lZChPU19GUkVFQlNEKSB8fCBcCi0gICAg IGRlZmluZWQoT1NfRlVDSFNJQSkKLSAgIC8vIHB0aHJlYWRfZ2V0YXR0cl9ucCgpIGNhbiBmYWls IGlmIHRoZSB0aHJlYWQgaXMgbm90IGludm9rZWQgYnkKLSAgIC8vIHB0aHJlYWRfY3JlYXRlKCkg KGUuZy4sIHRoZSBtYWluIHRocmVhZCBvZiB3ZWJraXRfdW5pdF90ZXN0cykuCi1AQCAtOTYsNyAr OTYsNyBAQAotIH0KLSAKLSB2b2lkKiBHZXRTdGFja1N0YXJ0KCkgewotLSNpZiBkZWZpbmVkKF9f R0xJQkNfXykgfHwgZGVmaW5lZChPU19BTkRST0lEKSB8fCBkZWZpbmVkKE9TX0ZSRUVCU0QpIHx8 IFwKLSsjaWYgZGVmaW5lZChPU19MSU5VWCkgfHwgZGVmaW5lZChPU19BTkRST0lEKSB8fCBkZWZp bmVkKE9TX0ZSRUVCU0QpIHx8IFwKLSAgICAgZGVmaW5lZChPU19GVUNIU0lBKQotICAgcHRocmVh ZF9hdHRyX3QgYXR0cjsKLSAgIGludCBlcnJvcjsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3Bh dGNoZXMvMDAyMC1tdXNsLXNhbmRib3gucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMjAt bXVzbC1zYW5kYm94LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2RlMWU0 MTE4My4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDIwLW11c2wtc2Fu ZGJveC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJz L3N5c2NhbGxfcGFyYW1ldGVyc19yZXN0cmljdGlvbnMuY2MJMjAxOC0wNi0xNSAwOTo0NzoyMC4w MDAwMDAwMDAgKzAyMDAKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2Fu ZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfcGFyYW1ldGVyc19yZXN0cmlj dGlvbnMuY2MJMjAxOC0wOS0xMyAxOTo1Mzo1My40NTM3ODAyNTMgKzAyMDAKLUBAIC0xMjksNyAr MTI5LDcgQEAKLSAvLyBDTE9ORV9WTSwgbm9yIENMT05FX1RIUkVBRCwgd2hpY2ggaW5jbHVkZXMg YWxsIGZvcmsoKSBpbXBsZW1lbnRhdGlvbnMuCi0gUmVzdWx0RXhwciBSZXN0cmljdENsb25lVG9U aHJlYWRzQW5kRVBFUk1Gb3JrKCkgewotICAgY29uc3QgQXJnPHVuc2lnbmVkIGxvbmc+IGZsYWdz KDApOwotLQotKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKLSAgIC8vIFRPRE8obWRlbXBza3kpOiBF eHRlbmQgRFNMIHRvIHN1cHBvcnQgKGZsYWdzICYgfm1hc2sxKSA9PSBtYXNrMi4KLSAgIGNvbnN0 IHVpbnQ2NF90IGtBbmRyb2lkQ2xvbmVNYXNrID0gQ0xPTkVfVk0gfCBDTE9ORV9GUyB8IENMT05F X0ZJTEVTIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0xPTkVfU0lH SEFORCB8IENMT05FX1RIUkVBRCB8Ci1AQCAtMTQ4LDYgKzE0OCwxNyBAQAotICAgcmV0dXJuIElm KElzQW5kcm9pZCgpID8gYW5kcm9pZF90ZXN0IDogZ2xpYmNfdGVzdCwgQWxsb3coKSkKLSAgICAg ICAuRWxzZUlmKChmbGFncyAmIChDTE9ORV9WTSB8IENMT05FX1RIUkVBRCkpID09IDAsIEVycm9y KEVQRVJNKSkKLSAgICAgICAuRWxzZShDcmFzaFNJR1NZU0Nsb25lKCkpOwotKyNlbHNlCi0rICBj b25zdCBpbnQgcmVxdWlyZWQgPSBDTE9ORV9WTSB8IENMT05FX0ZTIHwgQ0xPTkVfRklMRVMgfCBD TE9ORV9TSUdIQU5EIHwKLSsgICAgICAgICAgICAgICAgICAgICAgIENMT05FX1RIUkVBRCB8IENM T05FX1NZU1ZTRU07Ci0rICBjb25zdCBpbnQgc2FmZSA9IENMT05FX1NFVFRMUyB8IENMT05FX1BB UkVOVF9TRVRUSUQgfCBDTE9ORV9DSElMRF9DTEVBUlRJRCB8Ci0rICAgICAgICAgICAgICAgICAg IENMT05FX0RFVEFDSEVEOwotKyAgY29uc3QgQm9vbEV4cHIgdGhyZWFkX2Nsb25lX29rID0gKGZs YWdzJn5zYWZlKT09cmVxdWlyZWQ7Ci0rCi0rICByZXR1cm4gSWYodGhyZWFkX2Nsb25lX29rLCBB bGxvdygpKQotKyAgICAgIC5FbHNlSWYoKGZsYWdzICYgKENMT05FX1ZNIHwgQ0xPTkVfVEhSRUFE KSkgPT0gMCwgRXJyb3IoRVBFUk0pKQotKyAgICAgIC5FbHNlKENyYXNoU0lHU1lTQ2xvbmUoKSk7 Ci0rI2VuZGlmCi0gfQotIAotIFJlc3VsdEV4cHIgUmVzdHJpY3RQcmN0bCgpIHsKLS0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1o ZWxwZXJzL3N5c2NhbGxfc2V0cy5jYwkyMDE4LTA2LTE1IDA5OjQ3OjIwLjAwMDAwMDAwMCArMDIw MAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3Nl Y2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmNjCTIwMTgtMDktMTMgMTk6NTY6MzEuNzc5 NzczOTQwICswMjAwCi1AQCAtMzc1LDYgKzM3NSw5IEBACi0gI2lmIGRlZmluZWQoX19pMzg2X18p Ci0gICAgIGNhc2UgX19OUl93YWl0cGlkOgotICNlbmRpZgotKyNpZiAhZGVmaW5lZChfX0dMSUJD X18pCi0rICAgIGNhc2UgX19OUl9zZXRfdGlkX2FkZHJlc3M6Ci0rI2VuZGlmCi0gICAgICAgcmV0 dXJuIHRydWU7Ci0gICAgIGNhc2UgX19OUl9jbG9uZTogIC8vIFNob3VsZCBiZSBwYXJhbWV0ZXIt cmVzdHJpY3RlZC4KLSAgICAgY2FzZSBfX05SX3NldG5zOiAgLy8gUHJpdmlsZWdlZC4KLUBAIC0z ODcsNyArMzkwLDkgQEAKLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82 NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQotICAgICBjYXNlIF9fTlJfc2V0X3RocmVhZF9hcmVh OgotICNlbmRpZgotKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKLSAgICAgY2FzZSBfX05SX3NldF90 aWRfYWRkcmVzczoKLSsjZW5kaWYKLSAgICAgY2FzZSBfX05SX3Vuc2hhcmU6Ci0gI2lmICFkZWZp bmVkKF9fbWlwc19fKSAmJiAhZGVmaW5lZChfX2FhcmNoNjRfXykKLSAgICAgY2FzZSBfX05SX3Zm b3JrOgotQEAgLTQ5Niw2ICs1MDEsOSBAQAotICAgICBjYXNlIF9fTlJfbWxvY2s6Ci0gICAgIGNh c2UgX19OUl9tdW5sb2NrOgotICAgICBjYXNlIF9fTlJfbXVubWFwOgotKyNpZiAhZGVmaW5lZChf X0dMSUJDX18pCi0rICAgIGNhc2UgX19OUl9tcmVtYXA6Ci0rI2VuZGlmCi0gICAgICAgcmV0dXJu IHRydWU7Ci0gICAgIGNhc2UgX19OUl9tYWR2aXNlOgotICAgICBjYXNlIF9fTlJfbWluY29yZToK LUBAIC01MTEsNyArNTE5LDkgQEAKLSAgICAgY2FzZSBfX05SX21vZGlmeV9sZHQ6Ci0gI2VuZGlm Ci0gICAgIGNhc2UgX19OUl9tcHJvdGVjdDoKLSsjaWYgZGVmaW5lZChfX0dMSUJDX18pCi0gICAg IGNhc2UgX19OUl9tcmVtYXA6Ci0rI2VuZGlmCi0gICAgIGNhc2UgX19OUl9tc3luYzoKLSAgICAg Y2FzZSBfX05SX211bmxvY2thbGw6Ci0gICAgIGNhc2UgX19OUl9yZWFkYWhlYWQ6CmRpZmYgLS1n aXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMjMtZW5hYmxlX3Rvb2xzLWNyb3NzLnBhdGNoIGIv c3JjcGtncy9xdDUvcGF0Y2hlcy8wMDIzLWVuYWJsZV90b29scy1jcm9zcy5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWVhYzRlNzBlZmEuLjAwMDAwMDAwMDAwCi0tLSBhL3Ny Y3BrZ3MvcXQ1L3BhdGNoZXMvMDAyMy1lbmFibGVfdG9vbHMtY3Jvc3MucGF0Y2gKKysrIC9kZXYv bnVsbApAQCAtMSw0NiArMCwwIEBACi0tLS0gcXR0b29scy9zcmMvc3JjLnBybwkyMDE4LTA2LTA5 IDEzOjEwOjM4LjAwMDAwMDAwMCArMDIwMAotKysrIHF0dG9vbHMvc3JjL3NyYy5wcm8JMjAxOC0w OC0xOSAwOTozNDoyOS44MDM2NzAyMDUgKzAyMDAKLUBAIC0xLDIwICsxLDE0IEBACi0gVEVNUExB VEUgPSBzdWJkaXJzCi0gCi0tcXRIYXZlTW9kdWxlKHdpZGdldHMpIHsKLS0gICAgbm8tcG5nIHsK LS0gICAgICAgIG1lc3NhZ2UoIlNvbWUgZ3JhcGhpY3MtcmVsYXRlZCB0b29scyBhcmUgdW5hdmFp bGFibGUgd2l0aG91dCBQTkcgc3VwcG9ydCIpCi0tICAgIH0gZWxzZSB7Ci0tICAgICAgICBRVF9G T1JfQ09ORklHICs9IHdpZGdldHMKLS0gICAgICAgIHF0Q29uZmlnKHB1c2hidXR0b24pOnF0Q29u ZmlnKHRvb2xidXR0b24pIHsKLS0gICAgICAgICAgICBTVUJESVJTID0gYXNzaXN0YW50IFwKLS0g ICAgICAgICAgICAgICAgICAgICAgZGVzaWduZXIgXAotLSAgICAgICAgICAgICAgICAgICAgICBw aXhlbHRvb2wKLS0KLS0gICAgICAgICAgICBsaW5ndWlzdC5kZXBlbmRzID0gZGVzaWduZXIKLS0g ICAgICAgIH0KLS0gICAgICAgIHF0SGF2ZU1vZHVsZShxdWljayk6cXRDb25maWcodGhyZWFkKTpx dENvbmZpZyh0b29sYnV0dG9uKTogU1VCRElSUyArPSBkaXN0YW5jZWZpZWxkZ2VuZXJhdG9yCi0t ICAgIH0KLS19Ci0rUVRfRk9SX0NPTkZJRyArPSB3aWRnZXRzCi0rCi0rU1VCRElSUyA9IGFzc2lz dGFudCBcCi0rICAgICAgICAgIGRlc2lnbmVyIFwKLSsgICAgICAgICAgcGl4ZWx0b29sCi0rCi0r bGluZ3Vpc3QuZGVwZW5kcyA9IGRlc2lnbmVyCi0rCi0rU1VCRElSUyArPSBkaXN0YW5jZWZpZWxk Z2VuZXJhdG9yCi0gCi0gU1VCRElSUyArPSBsaW5ndWlzdCBcCi0gICAgIHF0YXR0cmlidXRpb25z c2Nhbm5lcgotQEAgLTMxLDExICsyNSwxMSBAQCBtYWNvcyB7Ci0gICAgIFNVQkRJUlMgKz0gbWFj ZGVwbG95cXQKLSB9Ci0gCi0tcXRIYXZlTW9kdWxlKGRidXMpOiBTVUJESVJTICs9IHFkYnVzCi0r U1VCRElSUyArPSBxZGJ1cwotIAotIHdpbjMyfHdpbnJ0OlNVQkRJUlMgKz0gd2luZGVwbG95cXQK LSB3aW5ydDpTVUJESVJTICs9IHdpbnJ0cnVubmVyCi0tcXRIYXZlTW9kdWxlKGd1aSk6IXdhc206 IWFuZHJvaWQ6IXVpa2l0OiFxbng6IXdpbnJ0OiBTVUJESVJTICs9IHF0ZGlhZwotK1NVQkRJUlMg Kz0gcXRkaWFnCi0gCi0gcXROb21ha2VUb29scyggXAotICAgICBkaXN0YW5jZWZpZWxkZ2VuZXJh dG9yIFwKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAyNS1tdXNsLWNocm9taXVt LWRlZmF1bHQtc3RhY2tzaXplLnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDI1LW11c2wt Y2hyb21pdW0tZGVmYXVsdC1zdGFja3NpemUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDdiZjVhMjJmYmE3Li4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVz LzAwMjUtbXVzbC1jaHJvbWl1bS1kZWZhdWx0LXN0YWNrc2l6ZS5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDE1ICswLDAgQEAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v YmFzZS90aHJlYWRpbmcvcGxhdGZvcm1fdGhyZWFkX2xpbnV4LmNjLm9yaWcJMjAxOC0wOS0xOSAx ODowNToxNS41MjM5MjM3MDMgKzAyMDAKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vYmFzZS90aHJlYWRpbmcvcGxhdGZvcm1fdGhyZWFkX2xpbnV4LmNjCTIwMTgtMDktMTkg MTg6MDg6MDUuMTUwOTMyNDU0ICswMjAwCi1AQCAtMTczLDcgKzE3MywxMiBAQAotIAotIHNpemVf dCBHZXREZWZhdWx0VGhyZWFkU3RhY2tTaXplKGNvbnN0IHB0aHJlYWRfYXR0cl90JiBhdHRyaWJ1 dGVzKSB7Ci0gI2lmICFkZWZpbmVkKFRIUkVBRF9TQU5JVElaRVIpCi0rI2lmIGRlZmluZWQoX19H TElCQ19fKQotICAgcmV0dXJuIDA7Ci0rI2Vsc2UgLy8gZGVmaW5lZChfX0dMSUJDX18pCi0rICAv LyBGb3IgTXVzbCBsaWJjIHRyeSB3aXRoIGEgZGVmYXVsdCBzdGFjayBzaXplIG9mIDIgTWlCCi0r ICByZXR1cm4gMiAqIDEwMjQgKiAxMDI0OwotKyNlbmRpZiAvLyAhZGVmaW5lZChfX0dMSUJDX18p Ci0gI2Vsc2UKLSAgIC8vIFRocmVhZFNhbml0aXplciBibG9hdHMgdGhlIHN0YWNrIGhlYXZpbHku IEV2aWRlbmNlIGhhcyBiZWVuIHRoYXQgdGhlCi0gICAvLyBkZWZhdWx0IHN0YWNrIHNpemUgaXNu J3QgZW5vdWdoIGZvciBzb21lIGJyb3dzZXIgdGVzdHMuCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0 NS9wYXRjaGVzLzAwMjYtZGF0YV9wYWNrLWJlLnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8w MDI2LWRhdGFfcGFjay1iZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzEx M2RkYjY1NjYuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAyNi1kYXRh X3BhY2stYmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi0tLS0gcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VpL2Jhc2UvcmVzb3VyY2UvZGF0YV9wYWNrLmNj Lm9yaWcJMjAxOC0wOS0xMSAxNDoxNjo1My4xMDQ4OTczNzkgKzAyMDAKLSsrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdWkvYmFzZS9yZXNvdXJjZS9kYXRhX3BhY2suY2MJMjAx OC0wOS0xMSAxNDoxNzoxMi4wMDk4OTYyNTMgKzAyMDAKLUBAIC0zODMsMTIgKzM4Myw2IEBACi0g Ci0gYm9vbCBEYXRhUGFjazo6R2V0U3RyaW5nUGllY2UodWludDE2X3QgcmVzb3VyY2VfaWQsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTo6U3RyaW5nUGllY2UqIGRhdGEpIGNv bnN0IHsKLS0gIC8vIEl0IHdvbid0IGJlIGhhcmQgdG8gbWFrZSB0aGlzIGVuZGlhbi1hZ25vc3Rp YywgYnV0IGl0J3Mgbm90IHdvcnRoCi0tICAvLyBib3RoZXJpbmcgdG8gZG8gcmlnaHQgbm93Lgot LSNpZiAhZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOKQotLSNlcnJvciAiZGF0YXBhY2sg YXNzdW1lcyBsaXR0bGUgZW5kaWFuIgotLSNlbmRpZgotLQotICAgY29uc3QgRW50cnkqIHRhcmdl dCA9IExvb2t1cEVudHJ5QnlJZChyZXNvdXJjZV9pZCk7Ci0gICBpZiAoIXRhcmdldCkKLSAgICAg cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDI3LXJlbW92 ZS1nbGliYy1jaGVjay5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAyNy1yZW1vdmUtZ2xp YmMtY2hlY2sucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkMGFiODQ5YzAx Li4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMjctcmVtb3ZlLWdsaWJj LWNoZWNrLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotLS0tIHF0d2ViZW5n aW5lL2NvbmZpZy50ZXN0cy9nbGliYy9nbGliYy5jcHAKLSsrKyBxdHdlYmVuZ2luZS9jb25maWcu dGVzdHMvZ2xpYmMvZ2xpYmMuY3BwCi1AQCAtMjgsMTAgKzI4LDYgQEAKLSAKLSAjaW5jbHVkZSA8 ZmVhdHVyZXMuaD4KLSAKLS0jaWYgX19HTElCQ19fIDwgMiB8fCBfX0dMSUJDX01JTk9SX18gPCAx NwotLSNlcnJvciBnbGliYyB2ZXJzaW9ucyBiZWxvdyAyLjE3IGFyZSBub3Qgc3VwcG9ydGVkCi0t I2VuZGlmCi0tCi0gaW50IG1haW4oaW50ICwgY2hhciAqKikgewotICAgcmV0dXJuIDA7Ci0gfQpk aWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDMyLW11c2wtY3Jvc3Mtbm8tYXNtX3B0 cmFjZV9oLnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDMyLW11c2wtY3Jvc3Mtbm8tYXNt X3B0cmFjZV9oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNDA3NDJmNzJj Mi4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDMyLW11c2wtY3Jvc3Mt bm8tYXNtX3B0cmFjZV9oLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotLS0t IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9i cmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9wdHJhY2VfZHVt cGVyLmNjCTIwMTgtMDgtMjcgMTA6MjE6MzEuMDAwMDAwMDAwICswMjAwCi0rKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3Ny Yy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X3B0cmFjZV9kdW1wZXIuY2MJMjAx OC0xMS0yMiAwMDo0MTo1OC41MjI0Nzc1NTkgKzAxMDAKLUBAIC0zOCw3ICszOCwxMiBAQAotIAot ICNpbmNsdWRlICJjbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X3B0cmFjZV9kdW1w ZXIuaCIKLSAKLSsjaWYgZGVmaW5lZChfX0dMSUJDX18pCi0gI2luY2x1ZGUgPGFzbS9wdHJhY2Uu aD4KLSsjZWxzZQotKy8qIEZvciBhcm0qLW11c2wgdGhpcyBkZWZpbml0aW9uIGlzIG1pc3Npbmcg Ki8KLSsjZGVmaW5lIEFSTV9zcCB1cmVnc1sxM10KLSsjZW5kaWYKLSAjaW5jbHVkZSA8YXNzZXJ0 Lmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0tLS0gcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFk L3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2NvcmVfZHVtcGVyLmNjCTIw MTgtMDgtMjcgMTA6MjE6MzEuMDAwMDAwMDAwICswMjAwCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQv bGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2NvcmVfZHVtcGVyLmNjCTIwMTgtMTEtMjIgMDA6 NDk6MzkuNTMzNDkyMjQ1ICswMTAwCi1AQCAtMzIsNyArMzIsMTIgQEAKLSAKLSAjaW5jbHVkZSAi Y2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9jb3JlX2R1bXBlci5oIgotIAotKyNp ZiBkZWZpbmVkKF9fR0xJQkNfXykKLSAjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgotKyNlbHNlCi0r LyogRm9yIGFybSotbXVzbCB0aGlzIGRlZmluaXRpb24gaXMgbWlzc2luZyAqLwotKyNkZWZpbmUg QVJNX3NwIHVyZWdzWzEzXQotKyNlbmRpZgotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVk ZSA8ZWxmLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9w YXRjaGVzLzAwNDAteWFzbS1ubHMucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDAteWFz bS1ubHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyYWMwNDIwNzY0Li4w MDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDAteWFzbS1ubHMucGF0Y2gK KysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1kaWZmIC0tZ2l0IHNyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS95YXNtL3NvdXJjZS9jb25maWcvbGludXgvY29uZmlnLmggc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3lhc20vc291cmNlL2NvbmZpZy9saW51eC9j b25maWcuaAotaW5kZXggOWUzNjUzOS4uZjU4ODA4MyAxMDA2NDQKLS0tLSBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vL3RoaXJkX3BhcnR5L3lhc20vc291cmNlL2NvbmZpZy9saW51 eC9jb25maWcuaAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vdGhpcmRf cGFydHkveWFzbS9zb3VyY2UvY29uZmlnL2xpbnV4L2NvbmZpZy5oCi1AQCAtNSw3ICs1LDcgQEAK LSAjZGVmaW5lIENQUF9QUk9HICJnY2MgLUUiCi0gCi0gLyogKi8KLS0jZGVmaW5lIEVOQUJMRV9O TFMgMQotKy8qICN1bmRlZiBFTkFCTEVfTkxTIDEgKi8KLSAKLSAvKiBEZWZpbmUgdG8gMSBpZiB5 b3UgaGF2ZSB0aGUgYGFib3J0JyBmdW5jdGlvbi4gKi8KLSAjZGVmaW5lIEhBVkVfQUJPUlQgMQpk aWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQyLWFybS12b2lkLWlzLW5vdC1hbmRy b2lkLnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQyLWFybS12b2lkLWlzLW5vdC1hbmRy b2lkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTMyOTBkM2NjZC4uMDAw MDAwMDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQyLWFybS12b2lkLWlzLW5vdC1h bmRyb2lkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vdGhpcmRfcGFydHkvb3Blbm1heF9kbC9kbC9CVUlM RC5nbgkyMDE5LTA0LTA5IDA5OjMxOjE2LjAwMDAwMDAwMCArMDIwMAotKysrIC0JMjAxOS0wNS0w NiAyMzowODowOS41MzczNDY1NDYgKzAyMDAKLUBAIC0yMDYsMTggKzIwNiw2IEBACi0gICAgICAg InNwL3NyYy9hcm0vYXJtdjcvb214U1BfRkZURndkX1JUb0NDU19GMzJfU2ZzX3MuUyIsCi0gICAg ICAgInNwL3NyYy9hcm0vYXJtdjcvb214U1BfRkZUSW52X0NDU1RvUl9GMzJfU2ZzX3MuUyIsCi0g ICAgIF0KLS0gICAgaWYgKGFybV9vcHRpb25hbGx5X3VzZV9uZW9uKSB7Ci0tICAgICAgIyBSdW4t dGltZSBORU9OIGRldGVjdGlvbi4KLS0gICAgICBkZXBzID0gWwotLSAgICAgICAgIi8vdGhpcmRf cGFydHkvYW5kcm9pZF90b29sczpjcHVfZmVhdHVyZXMiLAotLSAgICAgIF0KLS0KLS0gICAgICAj IFRvIGdldCB0aGUgX19hbmRyb2lkX2xvZ19wcmludCByb3V0aW5lCi0tICAgICAgbGlicyA9IFsg ImxvZyIgXQotLQotLSAgICAgICMgRGV0ZWN0aW9uIHJvdXRpbmUKLS0gICAgICBzb3VyY2VzICs9 IFsgInNwL3NyYy9hcm0vZGV0ZWN0LmMiIF0KLS0gICAgfQotICAgfQotIAotICAgIyBORU9OIGlt cGxlbWVudGF0aW9uIG9mIEZGVC4gVGhpcyBsaWJyYXJ5IGlzIE5PVApkaWZmIC0tZ2l0IGEvc3Jj cGtncy9xdDUvcGF0Y2hlcy8wMDQ0LXF0LW11c2wtZXhlY2luZm8ucGF0Y2ggYi9zcmNwa2dzL3F0 NS9wYXRjaGVzLzAwNDQtcXQtbXVzbC1leGVjaW5mby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggOThmM2EzODc0NWEuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1L3Bh dGNoZXMvMDA0NC1xdC1tdXNsLWV4ZWNpbmZvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTA3 ICswLDAgQEAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL2Jhc2UvZGVi dWcvc3RhY2tfdHJhY2VfcG9zaXguY2Mub3JpZwkyMDE5LTA0LTA5IDA5OjMxOjE2LjAwMDAwMDAw MCArMDIwMAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vYmFzZS9kZWJ1 Zy9zdGFja190cmFjZV9wb3NpeC5jYwkyMDE5LTA1LTA2IDIzOjE2OjEzLjI0NTUwMjQ2NyArMDIw MAotQEAgLTI3LDcgKzI3LDcgQEAKLSAjaWYgIWRlZmluZWQoVVNFX1NZTUJPTElaRSkKLSAjaW5j bHVkZSA8Y3h4YWJpLmg+Ci0gI2VuZGlmCi0tI2lmICFkZWZpbmVkKF9fVUNMSUJDX18pICYmICFk ZWZpbmVkKF9BSVgpCi0rI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQot ICNpbmNsdWRlIDxleGVjaW5mby5oPgotICNlbmRpZgotIAotQEAgLTg2LDcgKzg2LDcgQEAKLSAg IC8vIE5vdGU6IGNvZGUgaW4gdGhpcyBmdW5jdGlvbiBpcyBOT1QgYXN5bmMtc2lnbmFsIHNhZmUg KHN0ZDo6c3RyaW5nIHVzZXMKLSAgIC8vIG1hbGxvYyBpbnRlcm5hbGx5KS4KLSAKLS0jaWYgIWRl ZmluZWQoX19VQ0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKLSsjaWYgZGVmaW5lZChfX0dMSUJD X18pICYmICFkZWZpbmVkKF9BSVgpCi0gICBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIHNlYXJjaF9m cm9tID0gMDsKLSAgIHdoaWxlIChzZWFyY2hfZnJvbSA8IHRleHQtPnNpemUoKSkgewotICAgICAv LyBMb29rIGZvciB0aGUgc3RhcnQgb2YgYSBtYW5nbGVkIHN5bWJvbCwgZnJvbSBzZWFyY2hfZnJv bS4KLUBAIC0xMjEsNyArMTIxLDcgQEAKLSAgICAgICBzZWFyY2hfZnJvbSA9IG1hbmdsZWRfc3Rh cnQgKyAyOwotICAgICB9Ci0gICB9Ci0tI2VuZGlmICAvLyAhZGVmaW5lZChfX1VDTElCQ19fKSAm JiAhZGVmaW5lZChfQUlYKQotKyNlbmRpZiAgLy8gIWRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVm aW5lZChfQUlYKQotIH0KLSAjZW5kaWYgIC8vICFkZWZpbmVkKFVTRV9TWU1CT0xJWkUpCi0gCi1A QCAtMTMzLDcgKzEzMyw3IEBACi0gICB2aXJ0dWFsIH5CYWNrdHJhY2VPdXRwdXRIYW5kbGVyKCkg PSBkZWZhdWx0OwotIH07Ci0gCi0tI2lmICFkZWZpbmVkKF9fVUNMSUJDX18pICYmICFkZWZpbmVk KF9BSVgpCi0rI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQotIHZvaWQg T3V0cHV0UG9pbnRlcih2b2lkKiBwb2ludGVyLCBCYWNrdHJhY2VPdXRwdXRIYW5kbGVyKiBoYW5k bGVyKSB7Ci0gICAvLyBUaGlzIHNob3VsZCBiZSBtb3JlIHRoYW4gZW5vdWdoIHRvIHN0b3JlIGEg NjQtYml0IG51bWJlciBpbiBoZXg6Ci0gICAvLyAxNiBoZXggZGlnaXRzICsgMSBmb3IgbnVsbC10 ZXJtaW5hdG9yLgotQEAgLTIxNiw3ICsyMTYsNyBAQAotICAgfQotICNlbmRpZiAgLy8gZGVmaW5l ZChVU0VfU1lNQk9MSVpFKQotIH0KLS0jZW5kaWYgIC8vICFkZWZpbmVkKF9fVUNMSUJDX18pICYm ICFkZWZpbmVkKF9BSVgpCi0rI2VuZGlmICAvLyAhZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZp bmVkKF9BSVgpCi0gCi0gdm9pZCBQcmludFRvU3RkZXJyKGNvbnN0IGNoYXIqIG91dHB1dCkgewot ICAgLy8gTk9URTogVGhpcyBjb2RlIE1VU1QgYmUgYXN5bmMtc2lnbmFsIHNhZmUgKGl0J3MgdXNl ZCBieSBpbi1wcm9jZXNzCi1AQCAtODEyLDcgKzgxMiw3IEBACi0gICAvLyBOT1RFOiBUaGlzIGNv ZGUgTVVTVCBiZSBhc3luYy1zaWduYWwgc2FmZSAoaXQncyB1c2VkIGJ5IGluLXByb2Nlc3MKLSAg IC8vIHN0YWNrIGR1bXBpbmcgc2lnbmFsIGhhbmRsZXIpLiBOTyBtYWxsb2Mgb3Igc3RkaW8gaXMg YWxsb3dlZCBoZXJlLgotIAotLSNpZiAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChf QUlYKQotKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKLSAgIC8vIFRo b3VnaCB0aGUgYmFja3RyYWNlIEFQSSBtYW4gcGFnZSBkb2VzIG5vdCBsaXN0IGFueSBwb3NzaWJs ZSBuZWdhdGl2ZQotICAgLy8gcmV0dXJuIHZhbHVlcywgd2UgdGFrZSBubyBjaGFuY2UuCi0gICBy ZXR1cm4gYmFzZTo6c2F0dXJhdGVkX2Nhc3Q8c2l6ZV90PihiYWNrdHJhY2UodHJhY2UsIGNvdW50 KSk7Ci1AQCAtODI1LDEzICs4MjUsMTMgQEAKLSAvLyBOT1RFOiBUaGlzIGNvZGUgTVVTVCBiZSBh c3luYy1zaWduYWwgc2FmZSAoaXQncyB1c2VkIGJ5IGluLXByb2Nlc3MKLSAvLyBzdGFjayBkdW1w aW5nIHNpZ25hbCBoYW5kbGVyKS4gTk8gbWFsbG9jIG9yIHN0ZGlvIGlzIGFsbG93ZWQgaGVyZS4K LSAKLS0jaWYgIWRlZmluZWQoX19VQ0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKLSsjaWYgZGVm aW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCi0gICBQcmludEJhY2t0cmFjZU91dHB1 dEhhbmRsZXIgaGFuZGxlcjsKLSAgIFByb2Nlc3NCYWNrdHJhY2UodHJhY2VfLCBjb3VudF8sIHBy ZWZpeF9zdHJpbmcsICZoYW5kbGVyKTsKLSAjZW5kaWYKLSB9Ci0gCi0tI2lmICFkZWZpbmVkKF9f VUNMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCi0rI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAh ZGVmaW5lZChfQUlYKQotIHZvaWQgU3RhY2tUcmFjZTo6T3V0cHV0VG9TdHJlYW1XaXRoUHJlZml4 KHN0ZDo6b3N0cmVhbSogb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgY2hhciogcHJlZml4X3N0cmluZykgY29uc3QgewotICAgU3RyZWFtQmFja3Ry YWNlT3V0cHV0SGFuZGxlciBoYW5kbGVyKG9zKTsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vYmFzZS9kZWJ1Zy9zdGFja190cmFjZS5jYwkyMDE5LTA0LTA5IDA5OjMxOjE2 LjAwMDAwMDAwMCArMDIwMAotKysrIC0JMjAxOS0wNS0wNiAyMzoxODoxNC45MjM1NjY5OTIgKzAy MDAKLUBAIC0yMzMsNyArMjMzLDcgQEAKLSB9Ci0gc3RkOjpzdHJpbmcgU3RhY2tUcmFjZTo6VG9T dHJpbmdXaXRoUHJlZml4KGNvbnN0IGNoYXIqIHByZWZpeF9zdHJpbmcpIGNvbnN0IHsKLSAgIHN0 ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKLS0jaWYgIWRlZmluZWQoX19VQ0xJQkNfXykgJiYgIWRl ZmluZWQoX0FJWCkKLSsjaWYgZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCi0g ICBPdXRwdXRUb1N0cmVhbVdpdGhQcmVmaXgoJnN0cmVhbSwgcHJlZml4X3N0cmluZyk7Ci0gI2Vu ZGlmCi0gICByZXR1cm4gc3RyZWFtLnN0cigpOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS8vYmFzZS9sb2dnaW5nLmNjCTIwMTctMTEtMjggMTQ6MDY6NTMuMDAwMDAwMDAw ICswMTAwCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy9iYXNlL2xvZ2dp bmcuY2MJMjAxOC0wMS0yNyAyMjo0NjozNC45NzA0MDY4MDcgKzAxMDAKLUBAIC01NDYsNyArNTQ2 LDcgQEAKLSAKLSBMb2dNZXNzYWdlOjp+TG9nTWVzc2FnZSgpIHsKLSAgIHNpemVfdCBzdGFja19z dGFydCA9IHN0cmVhbV8udGVsbHAoKTsKLS0jaWYgIWRlZmluZWQoT0ZGSUNJQUxfQlVJTEQpICYm ICFkZWZpbmVkKE9TX05BQ0wpICYmICFkZWZpbmVkKF9fVUNMSUJDX18pICYmIFwKLSsjaWYgIWRl ZmluZWQoT0ZGSUNJQUxfQlVJTEQpICYmICFkZWZpbmVkKE9TX05BQ0wpICYmIGRlZmluZWQoX19H TElCQ19fKSAmJiBcCi0gICAgICFkZWZpbmVkKE9TX0FJWCkKLSAgIGlmIChzZXZlcml0eV8gPT0g TE9HX0ZBVEFMICYmICFiYXNlOjpkZWJ1Zzo6QmVpbmdEZWJ1Z2dlZCgpKSB7Ci0gICAgIC8vIElu Y2x1ZGUgYSBzdGFjayB0cmFjZSBvbiBhIGZhdGFsLCB1bmxlc3MgYSBkZWJ1Z2dlciBpcyBhdHRh Y2hlZC4KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv YmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vd3RmL2Fzc2VydGlvbnMuY2MJMjAxOS0wNC0wOSAwOToz MToxNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyAtCTIwMTktMDUtMDYgMjM6MTI6MDcuMDQwOTc3MjU4 ICswMjAwCi1AQCAtNTEsOCArNTEsMTAgQEAKLSAjaWYgZGVmaW5lZChPU19NQUNPU1gpIHx8IChk ZWZpbmVkKE9TX0xJTlVYKSAmJiAhZGVmaW5lZChfX1VDTElCQ19fKSkKLSAjaW5jbHVkZSA8Y3h4 YWJpLmg+Ci0gI2luY2x1ZGUgPGRsZmNuLmg+Ci0rI2lmIGRlZmluZWQoX19HTElCQ19fKQotICNp bmNsdWRlIDxleGVjaW5mby5oPgotICNlbmRpZgotKyNlbmRpZgotIAotICNpZiBkZWZpbmVkKE9T X0FORFJPSUQpCi0gI2luY2x1ZGUgPGFuZHJvaWQvbG9nLmg+CmRpZmYgLS1naXQgYS9zcmNwa2dz L3F0NS9wYXRjaGVzLzAwNDUtcXQtbXVzbC10aHJlYWQtc3RhY2tzaXplLnBhdGNoIGIvc3JjcGtn cy9xdDUvcGF0Y2hlcy8wMDQ1LXF0LW11c2wtdGhyZWFkLXN0YWNrc2l6ZS5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk2NzUzYmVmMzAuLjAwMDAwMDAwMDAwCi0tLSBhL3Ny Y3BrZ3MvcXQ1L3BhdGNoZXMvMDA0NS1xdC1tdXNsLXRocmVhZC1zdGFja3NpemUucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1kaWZmIC0tZ2l0IGEvc3JjLzNyZHBhcnR5L2No cm9taXVtL3BwYXBpL3V0aWxpdHkvdGhyZWFkaW5nL3NpbXBsZV90aHJlYWQuY2MgYi9zcmMvM3Jk cGFydHkvY2hyb21pdW0vcHBhcGkvdXRpbGl0eS90aHJlYWRpbmcvc2ltcGxlX3RocmVhZC5jYwot aW5kZXggMDJiZjQ5Yi4uMDVlZTE4MiAxMDA2NDQKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vcHBhcGkvdXRpbGl0eS90aHJlYWRpbmcvc2ltcGxlX3RocmVhZC5jYwotKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9wcGFwaS91dGlsaXR5L3RocmVhZGlu Zy9zaW1wbGVfdGhyZWFkLmNjCi1AQCAtMTMsNyArMTMsNyBAQCBuYW1lc3BhY2UgcHAgewotIG5h bWVzcGFjZSB7Ci0gCi0gLy8gVXNlIDJNQiBkZWZhdWx0IHN0YWNrIHNpemUgZm9yIE5hdGl2ZSBD bGllbnQsIG90aGVyd2lzZSB1c2Ugc3lzdGVtIGRlZmF1bHQuCi0tI2lmIGRlZmluZWQoX19uYXRp dmVfY2xpZW50X18pCi0rI2lmIGRlZmluZWQoX19uYXRpdmVfY2xpZW50X18pIHx8ICFkZWZpbmVk KF9fR0xJQkNfXykKLSBjb25zdCBzaXplX3Qga0RlZmF1bHRTdGFja1NpemUgPSAyICogMTAyNCAq IDEwMjQ7Ci0gI2Vsc2UKLSBjb25zdCBzaXplX3Qga0RlZmF1bHRTdGFja1NpemUgPSAwOwotZGlm ZiAtLWdpdCBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92OC9zcmMvYmFzZS9wbGF0Zm9ybS9wbGF0 Zm9ybS1wb3NpeC5jYyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92OC9zcmMvYmFzZS9wbGF0Zm9y bS9wbGF0Zm9ybS1wb3NpeC5jYwotaW5kZXggY2Y3ZjNlYy4uZTA2YTVjZSAxMDA2NDQKLS0tLSBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdjgvc3JjL2Jhc2UvcGxhdGZvcm0vcGxh dGZvcm0tcG9zaXguY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdjgv c3JjL2Jhc2UvcGxhdGZvcm0vcGxhdGZvcm0tcG9zaXguY2MKLUBAIC03NjEsNyArNzYxLDcgQEAg dm9pZCBUaHJlYWQ6OlN0YXJ0KCkgewotICNpZiBWOF9PU19NQUNPU1gKLSAgICAgLy8gRGVmYXVs dCBvbiBNYWMgT1MgWCBpcyA1MTJrQiAtLSBidW1wIHVwIHRvIDFNQgotICAgICBzdGFja19zaXpl ID0gMSAqIDEwMjQgKiAxMDI0OwotLSNlbGlmIFY4X09TX0FJWAotKyNlbGlmIFY4X09TX0FJWCB8 fCAhZGVmaW5lZChfX0dMSUJDX18pCi0gICAgIC8vIERlZmF1bHQgb24gQUlYIGlzIDk2a0IgLS0g YnVtcCB1cCB0byAyTUIKLSAgICAgc3RhY2tfc2l6ZSA9IDIgKiAxMDI0ICogMTAyNDsKLSAjZW5k aWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0Ni1zYW5kYm94LW1lbWJhcnJp ZXIucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDYtc2FuZGJveC1tZW1iYXJyaWVyLnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzM5NzFmMjQzMi4uMDAwMDAwMDAw MDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQ2LXNhbmRib3gtbWVtYmFycmllci5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvYXJtNjRfbGludXhf c3lzY2FsbHMuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vc2FuZGJv eC9saW51eC9zeXN0ZW1faGVhZGVycy9hcm02NF9saW51eF9zeXNjYWxscy5oCi1AQCAtMTA2Myw0 ICsxMDYzLDggQEAKLSAjZGVmaW5lIF9fTlJfbWVtZmRfY3JlYXRlIDI3OQotICNlbmRpZgotIAot KyNpZiAhZGVmaW5lZChfX05SX21lbWJhcnJpZXIpCi0rI2RlZmluZSBfX05SX21lbWJhcnJpZXIg MjgzCi0rI2VuZGlmCi0rCi0gI2VuZGlmICAvLyBTQU5EQk9YX0xJTlVYX1NZU1RFTV9IRUFERVJT X0FSTTY0X0xJTlVYX1NZU0NBTExTX0hfCi0KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvYXJtX2xpbnV4X3N5c2NhbGxz LmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL3NhbmRib3gvbGludXgv c3lzdGVtX2hlYWRlcnMvYXJtX2xpbnV4X3N5c2NhbGxzLmgKLUBAIC0xMzg1LDYgKzEzODUsMTAg QEAKLSAjZGVmaW5lIF9fTlJfbWVtZmRfY3JlYXRlIChfX05SX1NZU0NBTExfQkFTRSszODUpCi0g I2VuZGlmCi0gCi0rI2lmICFkZWZpbmVkKF9fTlJfbWVtYmFycmllcikKLSsjZGVmaW5lIF9fTlJf bWVtYmFycmllciAoX19OUl9TWVNDQUxMX0JBU0UrMzg5KQotKyNlbmRpZgotKwotIC8vIEFSTSBw cml2YXRlIHN5c2NhbGxzLgotICNpZiAhZGVmaW5lZChfX0FSTV9OUl9CQVNFKQotICNkZWZpbmUg X19BUk1fTlJfQkFTRSAoX19OUl9TWVNDQUxMX0JBU0UgKyAweEYwMDAwKQotCi0tLS0gcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJz L3g4Nl8zMl9saW51eF9zeXNjYWxscy5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtLy9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL3g4Nl8zMl9saW51eF9zeXNjYWxs cy5oCi1AQCAtMTQyMiw1ICsxNDIyLDkgQEAKLSAjZGVmaW5lIF9fTlJfbWVtZmRfY3JlYXRlIDM1 NgotICNlbmRpZgotIAotKyNpZiAhZGVmaW5lZChfX05SX21lbWJhcnJpZXIpCi0rI2RlZmluZSBf X05SX21lbWJhcnJpZXIgMzc1Ci0rI2VuZGlmCi0rCi0gI2VuZGlmICAvLyBTQU5EQk9YX0xJTlVY X1NZU1RFTV9IRUFERVJTX1g4Nl8zMl9MSU5VWF9TWVNDQUxMU19IXwotIAotLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy94 ODZfNjRfbGludXhfc3lzY2FsbHMuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS8vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy94ODZfNjRfbGludXhfc3lzY2FsbHMu aAotQEAgLTEyOTAsNSArMTI5MCw5IEBACi0gI2RlZmluZSBfX05SX21lbWZkX2NyZWF0ZSAzMTkK LSAjZW5kaWYKLSAKLSsjaWYgIWRlZmluZWQoX19OUl9tZW1iYXJyaWVyKQotKyNkZWZpbmUgX19O Ul9tZW1iYXJyaWVyIDMyNAotKyNlbmRpZgotKwotICNlbmRpZiAgLy8gU0FOREJPWF9MSU5VWF9T WVNURU1fSEVBREVSU19YODZfNjRfTElOVVhfU1lTQ0FMTFNfSF8KLSAKLS0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVy cy9zeXNjYWxsX3NldHMuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v L3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3NldHMuY2MKLUBAIC0z NzAsNiArMzcwLDcgQEAKLSAgIHN3aXRjaCAoc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX2V4aXQ6 Ci0gICAgIGNhc2UgX19OUl9leGl0X2dyb3VwOgotKyAgICBjYXNlIF9fTlJfbWVtYmFycmllcjoK LSAgICAgY2FzZSBfX05SX3dhaXQ0OgotICAgICBjYXNlIF9fTlJfd2FpdGlkOgotICNpZiBkZWZp bmVkKF9faTM4Nl9fKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQ3LWduLWNy b3NzLXN5c3Jvb3QucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDctZ24tY3Jvc3Mtc3lz cm9vdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU2Njg5YTQxODMuLjAw MDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0Ny1nbi1jcm9zcy1zeXNyb290 LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotVGhlcmUgaXMgbm8gcmVhc29u IHRvIHJ1biB0aGlzIHNjcmlwdCBhbmQgcnVubmluZyBpdCBmYWlscyBvbiBhcmNoaXRlY3R1cmVz Ci1jaHJvbWl1bSBkb2VzIG5vdCBvZmZpY2lhbGx5IHN1cHBvcnQgKHN1Y2ggYXMgcHBjNjQpLgot Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2J1aWxkL2NvbmZpZy9wb3Np eC9CVUlMRC5nbgotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9idWlsZC9j b25maWcvcG9zaXgvQlVJTEQuZ24KLUBAIC0xMDIsMTIgKzEwMiwxMiBAQCBjb25maWcoInJ1bnRp bWVfbGlicmFyeSIpIHsKLSAgICAgICAjIHdoZW4gdHVybmluZyB0aGUgc3lzcm9vdCBvbiBvciBv ZmYuIChkZWZpbmVzIGFyZSBwYXNzZWQgdmlhIHRoZSBjb21tYW5kCi0gICAgICAgIyBsaW5lLCBh bmQgYnVpbGQgc3lzdGVtIHJlYnVpbGRzIHRoaW5ncyB3aGVuIHRoZWlyIGNvbW1hbmRsaW5lCi0g ICAgICAgIyBjaGFuZ2VzKS4gTm90aGluZyBzaG91bGQgZXZlciByZWFkIHRoaXMgZGVmaW5lLgot LSAgICAgIHN5c3Jvb3RfaGFzaCA9Ci0tICAgICAgICAgIGV4ZWNfc2NyaXB0KCIvL2J1aWxkL2xp bnV4L3N5c3Jvb3Rfc2NyaXB0cy9pbnN0YWxsLXN5c3Jvb3QucHkiLAotLSAgICAgICAgICAgICAg ICAgICAgICBbICItLXByaW50LWhhc2g9JGN1cnJlbnRfY3B1IiBdLAotLSAgICAgICAgICAgICAg ICAgICAgICAidHJpbSBzdHJpbmciLAotLSAgICAgICAgICAgICAgICAgICAgICBbICIvL2J1aWxk L2xpbnV4L3N5c3Jvb3Rfc2NyaXB0cy9zeXNyb290cy5qc29uIiBdKQotLSAgICAgIGRlZmluZXMg Kz0gWyAiQ1JfU1lTUk9PVF9IQVNIPSRzeXNyb290X2hhc2giIF0KLSsgICAgICAjc3lzcm9vdF9o YXNoID0KLSsgICAgICAjICAgIGV4ZWNfc2NyaXB0KCIvL2J1aWxkL2xpbnV4L3N5c3Jvb3Rfc2Ny aXB0cy9pbnN0YWxsLXN5c3Jvb3QucHkiLAotKyAgICAgICMgICAgICAgICAgICAgICAgWyAiLS1w cmludC1oYXNoPSRjdXJyZW50X2NwdSIgXSwKLSsgICAgICAjICAgICAgICAgICAgICAgICJ0cmlt IHN0cmluZyIsCi0rICAgICAgIyAgICAgICAgICAgICAgICBbICIvL2J1aWxkL2xpbnV4L3N5c3Jv b3Rfc2NyaXB0cy9zeXNyb290cy5qc29uIiBdKQotKyAgICAgICNkZWZpbmVzICs9IFsgIkNSX1NZ U1JPT1RfSEFTSD0kc3lzcm9vdF9oYXNoIiBdCi0gICAgIH0KLSAgICAgYXNtZmxhZ3MgKz0gc3lz cm9vdF9mbGFncwotIApkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDUwLXFtYWtl LW1rc3BlY3MucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNTAtcW1ha2UtbWtzcGVjcy5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODZlYmI1NTUwMTMK LS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNTAtcW1ha2UtbWtzcGVj cy5wYXRjaApAQCAtMCwwICsxLDMwIEBACitkaWZmIC0tZ2l0IHF0YmFzZS9ta3NwZWNzL2ZlYXR1 cmVzL3F0X2J1aWxkX2NvbmZpZy5wcmYgcXRiYXNlL21rc3BlY3MvZmVhdHVyZXMvcXRfYnVpbGRf Y29uZmlnLnByZgoraW5kZXggODI3M2JhM2ZlMS4uYjY3NGY0MjEwOSAxMDA2NDQKKy0tLSBxdGJh c2UvbWtzcGVjcy9mZWF0dXJlcy9xdF9idWlsZF9jb25maWcucHJmCisrKysgcXRiYXNlL21rc3Bl Y3MvZmVhdHVyZXMvcXRfYnVpbGRfY29uZmlnLnByZgorQEAgLTExLDYgKzExLDEwIEBACisgCisg IWNvbnRhaW5zKFFNQUtFX0lOVEVSTkFMX0lOQ0xVREVEX0ZJTEVTLCAuKnFtb2R1bGVcXC5wcmkp IHsKKyAgICAgUU1BS0VfUVRfTU9EVUxFID0gJCRbUVRfSE9TVF9EQVRBL2dldF0vbWtzcGVjcy9x bW9kdWxlLnByaQorKyAgICBkZWZpbmVkKFFNQUtFX1RBUkdFVF9NT0RVTEUsdmFyKTpleGlzdHMo JCRRTUFLRV9UQVJHRVRfTU9EVUxFKSB7CisrICAgICAgICBRTUFLRV9RVF9NT0RVTEUgPSAkJFFN QUtFX1RBUkdFVF9NT0RVTEUKKysgICAgICAgIG1lc3NhZ2UoIlRyeWluZyAucW1vZHVsZS5wcmkg ZnJvbSAoJCRRTUFLRV9RVF9DT05GSUcpIikKKysgICAgfQorICAgICAhZXhpc3RzKCQkUU1BS0Vf UVRfTU9EVUxFKXwhaW5jbHVkZSgkJFFNQUtFX1FUX01PRFVMRSwgIiIsIHRydWUpIHsKKyAgICAg ICAgIGRlYnVnKDEsICJDYW5ub3QgbG9hZCBxbW9kdWxlLnByaSEiKQorICAgICB9IGVsc2Ugewor ZGlmZiAtLWdpdCBxdGJhc2UvbWtzcGVjcy9mZWF0dXJlcy9xdF9jb25maWcucHJmIHF0YmFzZS9t a3NwZWNzL2ZlYXR1cmVzL3F0X2NvbmZpZy5wcmYKK2luZGV4IDkzYzU0ZTMwMTAuLmFhZmYyNmI1 MmEgMTAwNjQ0CistLS0gcXRiYXNlL21rc3BlY3MvZmVhdHVyZXMvcXRfY29uZmlnLnByZgorKysr IHF0YmFzZS9ta3NwZWNzL2ZlYXR1cmVzL3F0X2NvbmZpZy5wcmYKK0BAIC0xLDYgKzEsMTAgQEAK KyAjIFRoaXMgZmlsZSBpcyBsb2FkZWQgYXMgb25lIG9mIHRoZSBsYXN0IHRoaW5ncyBieSBhbGwg cW1ha2VzcGVjcy4KKyAKKyBRTUFLRV9RVF9DT05GSUcgPSAkJFtRVF9IT1NUX0RBVEEvZ2V0XS9t a3NwZWNzL3Fjb25maWcucHJpCisrZGVmaW5lZChRTUFLRV9UQVJHRVRfQ09ORklHLHZhcik6ZXhp c3RzKCQkUU1BS0VfVEFSR0VUX0NPTkZJRykgeworKyAgIFFNQUtFX1FUX0NPTkZJRyA9ICQkUU1B S0VfVEFSR0VUX0NPTkZJRworKyAgIG1lc3NhZ2UoIlRyeWluZyAucWNvbmZpZy5wcmkgZnJvbSAo JCRRTUFLRV9RVF9DT05GSUcpIikKKyt9CisgIWV4aXN0cygkJFFNQUtFX1FUX0NPTkZJRyl8IWlu Y2x1ZGUoJCRRTUFLRV9RVF9DT05GSUcsICIiLCB0cnVlKSB7CisgICAgZGVidWcoMSwgIkNhbm5v dCBsb2FkIHFjb25maWcucHJpISIpCisgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1 L3BhdGNoZXMvMDA4OS13ZWJlbmdpbmUtcHBjNjQucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVz LzAwODktd2ViZW5naW5lLXBwYzY0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCA0MDJkN2UyZDYyMi4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDg5 LXdlYmVuZ2luZS1wcGM2NC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLS0t LSBxdHdlYmVuZ2luZS9ta3NwZWNzL2ZlYXR1cmVzL2Z1bmN0aW9ucy5wcmYKLSsrKyBxdHdlYmVu Z2luZS9ta3NwZWNzL2ZlYXR1cmVzL2Z1bmN0aW9ucy5wcmYKLUBAIC05NSw2ICs5NSw3IEBACi0g ICAgIGNvbnRhaW5zKHF0QXJjaCwgImFybTY0Iik6IHJldHVybihhcm02NCkKLSAgICAgY29udGFp bnMocXRBcmNoLCAibWlwcyIpOiByZXR1cm4obWlwc2VsKQotICAgICBjb250YWlucyhxdEFyY2gs ICJtaXBzNjQiKTogcmV0dXJuKG1pcHM2NGVsKQotKyAgICBjb250YWlucyhxdEFyY2gsICJwb3dl cjY0Iik6IHJldHVybihwcGM2NCkKLSAgICAgcmV0dXJuKHVua25vd24pCi0gfQotIAotLS0tIHF0 d2ViZW5naW5lL21rc3BlY3MvZmVhdHVyZXMvcGxhdGZvcm0ucHJmCi0rKysgcXR3ZWJlbmdpbmUv bWtzcGVjcy9mZWF0dXJlcy9wbGF0Zm9ybS5wcmYKLUBAIC04Miw2ICs4Miw3IEBACi0gICAgIGNv bnRhaW5zKFFUX0FSQ0gsICJhcm0iKXxjb250YWlucyhRVF9BUkNILCAiYXJtNjQiKTogcmV0dXJu KHRydWUpCi0gICAgIGNvbnRhaW5zKFFUX0FSQ0gsICJtaXBzIik6IHJldHVybih0cnVlKQotICMg ICAgIGNvbnRhaW5zKFFUX0FSQ0gsICJtaXBzNjQiKTogcmV0dXJuKHRydWUpCi0rICAgIGNvbnRh aW5zKFFUX0FSQ0gsICJwb3dlcjY0Iik6IHJldHVybih0cnVlKQotIAotICAgICBza2lwQnVpbGQo IlF0V2ViRW5naW5lIGNhbiBvbmx5IGJlIGJ1aWx0IGZvciB4ODYsIHg4Ni02NCwgQVJNLCBBYXJj aDY0LCBhbmQgTUlQU2VsIGFyY2hpdGVjdHVyZXMuIikKLSAgICAgcmV0dXJuKGZhbHNlKQpkaWZm IC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDkwLWNocm9taXVtLXBwYzY0bGUucGF0Y2gg Yi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwOTAtY2hyb21pdW0tcHBjNjRsZS5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDRkOGQzZWZhYWMuLjAwMDAwMDAwMDAwCi0tLSBhL3Ny Y3BrZ3MvcXQ1L3BhdGNoZXMvMDA5MC1jaHJvbWl1bS1wcGM2NGxlLnBhdGNoCisrKyAvZGV2L251 bGwKQEAgLTEsNDI2NyArMCwwIEBACi1UaGlzIGlzIGEgYmFzZSBwYXRjaCB0aGF0IGFkZHMgc3Vw cG9ydCBmb3IgcHBjNjRsZSBnbGliYy4gQmlnIGVuZGlhbiBhbmQgbXVzbAotc3VwcG9ydCBpcyBh ZGRlZCBpbiBleHRyYSBwYXRjaGVzIGFmdGVyd2FyZHMuCi0KLVBpbmcgcTY2IGlmIHlvdSdyZSB1 cGRhdGluZyBxdDUgYW5kIHRoZSBwYXRjaCBkb2VzIG5vdCBhcHBseSBhbnltb3JlLgotCi1Tb3Vy Y2U6IGh0dHBzOi8vd2lraS5yYXB0b3Jjcy5jb20vdy9pbmRleC5waHA/dGl0bGU9UG9ydGluZy9D aHJvbWl1bQotVXBzdHJlYW06IEN1cnJlbnRseSBiZWluZyBzdWJtaXR0ZWQKLQotLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxs b2NhdG9yL3BhZ2VfYWxsb2NhdG9yX2NvbnN0YW50cy5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3IvcGFnZV9h bGxvY2F0b3JfY29uc3RhbnRzLmgKLUBAIC0xMCw3ICsxMCw3IEBACi0gI2luY2x1ZGUgImJ1aWxk L2J1aWxkX2NvbmZpZy5oIgotIAotIG5hbWVzcGFjZSBiYXNlIHsKLS0jaWYgZGVmaW5lZChPU19X SU4pCi0rI2lmIGRlZmluZWQoT1NfV0lOKSB8fCBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQotIHN0 YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtQYWdlQWxsb2NhdGlvbkdyYW51bGFyaXR5U2hpZnQgPSAx NjsgIC8vIDY0S0IKLSAjZWxpZiBkZWZpbmVkKF9NSVBTX0FSQ0hfTE9PTkdTT04pCi0gc3RhdGlj IGNvbnN0ZXhwciBzaXplX3Qga1BhZ2VBbGxvY2F0aW9uR3JhbnVsYXJpdHlTaGlmdCA9IDE0OyAg Ly8gMTZLQgotQEAgLTI2LDYgKzI2LDEwIEBAIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtQYWdl QWxsb2NhdGlvbkdyYW51bGFyaXR5QmFzZU1hc2sgPQotIAotICNpZiBkZWZpbmVkKF9NSVBTX0FS Q0hfTE9PTkdTT04pCi0gc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1N5c3RlbVBhZ2VTaXplID0g MTYzODQ7Ci0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NCkKLSsvLyBUT0RPOiBtb2Rlcm4g cHBjNjQgY2FuIGRvIDRrIGFuZCA2NGsgcGFnZSBzaXplcwotKy8vIGZvciBub3csIDY0ayBpcyBh c3N1bWVkCi0rc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1N5c3RlbVBhZ2VTaXplID0gNjU1MzY7 Ci0gI2Vsc2UKLSBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrU3lzdGVtUGFnZVNpemUgPSA0MDk2 OwotICNlbmRpZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL2Fs bG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY19jb25zdGFudHMuaAot KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL2FsbG9jYXRvci9wYXJ0 aXRpb25fYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY19jb25zdGFudHMuaAotQEAgLTM1LDYgKzM1 LDggQEAgc3RhdGljIGNvbnN0IHNpemVfdCBrQnVja2V0U2hpZnQgPSAoa0FsbG9jYXRpb25HcmFu dWxhcml0eSA9PSA4KSA/IDMgOiAyOwotIAotICNpZiBkZWZpbmVkKF9NSVBTX0FSQ0hfTE9PTkdT T04pCi0gc3RhdGljIGNvbnN0IHNpemVfdCBrUGFydGl0aW9uUGFnZVNoaWZ0ID0gMTY7ICAvLyA2 NCBLaUIKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQotK3N0YXRpYyBjb25zdCBzaXpl X3Qga1BhcnRpdGlvblBhZ2VTaGlmdCA9IDE4OyAgLy8gMjU2IEtpQgotICNlbHNlCi0gc3RhdGlj IGNvbnN0IHNpemVfdCBrUGFydGl0aW9uUGFnZVNoaWZ0ID0gMTQ7ICAvLyAxNiBLaUIKLSAjZW5k aWYKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYnVpbGQvZG93bmxvYWRf bmFjbF90b29sY2hhaW5zLnB5Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L2J1aWxkL2Rvd25sb2FkX25hY2xfdG9vbGNoYWlucy5weQotQEAgLTExLDYgKzExLDEwIEBAIGlt cG9ydCBzeXMKLSAKLSAKLSBkZWYgTWFpbihhcmdzKToKLSsgICMgSWYgYGRpc2FibGVfbmFjbD0x YCBpcyBpbiBHWVBfREVGSU5FUywgZXhpdAotKyAgaWYgJ2Rpc2FibGVfbmFjbD0xJyBpbiBvcy5l bnZpcm9uLmdldCgnR1lQX0RFRklORVMnLCAnJyk6Ci0rICAgIHJldHVybiAwCi0rCi0gICBzY3Jp cHRfZGlyID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpCi0gICBz cmNfZGlyID0gb3MucGF0aC5kaXJuYW1lKHNjcmlwdF9kaXIpCi0gICBuYWNsX2RpciA9IG9zLnBh dGguam9pbihzcmNfZGlyLCAnbmF0aXZlX2NsaWVudCcpCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL2J1aWxkL3Rvb2xjaGFpbi9saW51eC9CVUlMRC5nbgotKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9idWlsZC90b29sY2hhaW4vbGludXgvQlVJTEQu Z24KLUBAIC01LDYgKzUsMTQgQEAKLSBpbXBvcnQoIi8vYnVpbGQvY29uZmlnL3N5c3Jvb3QuZ25p IikKLSBpbXBvcnQoIi8vYnVpbGQvdG9vbGNoYWluL2djY190b29sY2hhaW4uZ25pIikKLSAKLStj bGFuZ190b29sY2hhaW4oImNsYW5nX3BwYzY0IikgewotKyAgZW5hYmxlX2xpbmtlcl9tYXAgPSB0 cnVlCi0rICB0b29sY2hhaW5fYXJncyA9IHsKLSsgICAgY3VycmVudF9jcHUgPSAicHBjNjQiCi0r ICAgIGN1cnJlbnRfb3MgPSAibGludXgiCi0rICB9Ci0rfQotKwotIGNsYW5nX3Rvb2xjaGFpbigi Y2xhbmdfYXJtIikgewotICAgdG9vbHByZWZpeCA9ICJhcm0tbGludXgtZ251ZWFiaWhmLSIKLSAg IHRvb2xjaGFpbl9hcmdzID0gewotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS9jb21wb25lbnRzL3VwZGF0ZV9jbGllbnQvdXBkYXRlX3F1ZXJ5X3BhcmFtcy5jYwotKysrIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9jb21wb25lbnRzL3VwZGF0ZV9jbGllbnQv dXBkYXRlX3F1ZXJ5X3BhcmFtcy5jYwotQEAgLTU1LDYgKzU1LDggQEAgY29uc3QgY2hhciBrQXJj aFtdID0KLSAgICAgIm1pcHM2NGVsIjsKLSAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQotICAgICAi bWlwc2VsIjsKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAgICJwcGM2NCI7Ci0g I2Vsc2UKLSAjZXJyb3IgInVua25vd24gYXJjaCIKLSAjZW5kaWYKLUBAIC0xMjcsNiArMTI5LDgg QEAgY29uc3QgY2hhciogVXBkYXRlUXVlcnlQYXJhbXM6OkdldE5hY2xBcmNoKCkgewotICAgcmV0 dXJuICJtaXBzMzIiOwotICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQUzY0RUwpCi0gICByZXR1 cm4gIm1pcHM2NCI7Ci0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NCkKLSsgIHJldHVybiAi cHBjNjQiOwotICNlbHNlCi0gLy8gTk9URTogd2hlbiBhZGRpbmcgbmV3IHZhbHVlcyBoZXJlLCBw bGVhc2UgcmVtZW1iZXIgdG8gdXBkYXRlIHRoZQotIC8vIGNvbW1lbnQgaW4gdGhlIC5oIGZpbGUg YWJvdXQgcG9zc2libGUgcmV0dXJuIHZhbHVlcyBmcm9tIHRoaXMgZnVuY3Rpb24uCi0tLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2NvbXBvbmVudHMvdXBkYXRlX2NsaWVudC91 cGRhdGVfcXVlcnlfcGFyYW1zLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vY29tcG9uZW50cy91cGRhdGVfY2xpZW50L3VwZGF0ZV9xdWVyeV9wYXJhbXMuaAotQEAgLTQ1 LDcgKzQ1LDcgQEAgY2xhc3MgVXBkYXRlUXVlcnlQYXJhbXMgewotICAgLy8gUmV0dXJucyB0aGUg dmFsdWUgd2UgdXNlIGZvciB0aGUgIm5hY2xfYXJjaCIgcGFyYW1ldGVyLiBOb3RlIHRoYXQgdGhp cyBtYXkKLSAgIC8vIGJlIGRpZmZlcmVudCBmcm9tIHRoZSAiYXJjaCIgcGFyYW1ldGVyIGFib3Zl IChlLmcuIG9uZSBtYXkgYmUgMzItYml0IGFuZAotICAgLy8gdGhlIG90aGVyIDY0LWJpdCkuIFBv c3NpYmxlIHJldHVybiB2YWx1ZXMgaW5jbHVkZTogIng4Ni0zMiIsICJ4ODYtNjQiLAotLSAgLy8g ImFybSIsIGFuZCAibWlwczMyIi4KLSsgIC8vICJhcm0iLCAibWlwczMyIiwgYW5kICJwcGM2NCIu Ci0gICBzdGF0aWMgY29uc3QgY2hhciogR2V0TmFjbEFyY2goKTsKLSAKLSAgIC8vIFJldHVybnMg dGhlIGN1cnJlbnQgdmVyc2lvbiBvZiBDaHJvbWUvQ2hyb21pdW0uCi0tLS0gcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvZmVhdHVyZXMuZ25pCi0rKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvZmVhdHVyZXMuZ25pCi1AQCAtMTIsNiAr MTIsNiBAQCB1c2Vfc2VjY29tcF9icGYgPQotICAgICAoaXNfbGludXggfHwgaXNfYW5kcm9pZCkg JiYKLSAgICAgKGN1cnJlbnRfY3B1ID09ICJ4ODYiIHx8IGN1cnJlbnRfY3B1ID09ICJ4NjQiIHx8 IGN1cnJlbnRfY3B1ID09ICJhcm0iIHx8Ci0gICAgICBjdXJyZW50X2NwdSA9PSAiYXJtNjQiIHx8 IGN1cnJlbnRfY3B1ID09ICJtaXBzZWwiIHx8Ci0tICAgICBjdXJyZW50X2NwdSA9PSAibWlwczY0 ZWwiKQotKyAgICAgY3VycmVudF9jcHUgPT0gIm1pcHM2NGVsIiB8fCBjdXJyZW50X2NwdSA9PSAi cHBjNjQiKQotIAotIHVzZV9zZWNjb21wX2JwZiA9IHVzZV9zZWNjb21wX2JwZiB8fCBpc19uYWNs X25vbnNmaQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xp bnV4L0JVSUxELmduCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRi b3gvbGludXgvQlVJTEQuZ24KLUBAIC00MTYsNiArNDE2LDggQEAgY29tcG9uZW50KCJzYW5kYm94 X3NlcnZpY2VzIikgewotIAotIHNvdXJjZV9zZXQoInNhbmRib3hfc2VydmljZXNfaGVhZGVycyIp IHsKLSAgIHNvdXJjZXMgPSBbCi0rICAgICJzeXN0ZW1faGVhZGVycy9wcGM2NF9saW51eF9zeXNj YWxscy5oIiwKLSsgICAgInN5c3RlbV9oZWFkZXJzL3BwYzY0X2xpbnV4X3Vjb250ZXh0LmgiLAot ICAgICAic3lzdGVtX2hlYWRlcnMvYXJtNjRfbGludXhfc3lzY2FsbHMuaCIsCi0gICAgICJzeXN0 ZW1faGVhZGVycy9hcm1fbGludXhfc3lzY2FsbHMuaCIsCi0gICAgICJzeXN0ZW1faGVhZGVycy9h cm1fbGludXhfdWNvbnRleHQuaCIsCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3NhbmRib3gvbGludXgvYnBmX2RzbC9saW51eF9zeXNjYWxsX3Jhbmdlcy5oCi0rKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvYnBmX2RzbC9saW51 eF9zeXNjYWxsX3Jhbmdlcy5oCi1AQCAtNTUsNiArNTUsMTMgQEAKLSAjZGVmaW5lIE1BWF9QVUJM SUNfU1lTQ0FMTCAyNzl1Ci0gI2RlZmluZSBNQVhfU1lTQ0FMTCBNQVhfUFVCTElDX1NZU0NBTEwK LSAKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rCi0rI2luY2x1ZGUgPGFzbS91bmlz dGQuaD4KLSsjZGVmaW5lIE1JTl9TWVNDQUxMIDB1Ci0rI2RlZmluZSBNQVhfUFVCTElDX1NZU0NB TEwgMzg2dQotKyNkZWZpbmUgTUFYX1NZU0NBTEwgTUFYX1BVQkxJQ19TWVNDQUxMCi0rCi0gI2Vs c2UKLSAjZXJyb3IgIlVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZSIKLSAjZW5kaWYKLS0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9icGZfZHNsL3NlY2Nv bXBfbWFjcm9zLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJv eC9saW51eC9icGZfZHNsL3NlY2NvbXBfbWFjcm9zLmgKLUBAIC0xNiw2ICsxNiw5IEBACi0gI2lm IGRlZmluZWQoX19taXBzX18pCi0gLy8gc3lzL3VzZXIuaCBpbiBlZ2xpYmMgbWlzc2VzIHNpemVf dCBkZWZpbml0aW9uCi0gI2luY2x1ZGUgPHN0ZGRlZi5oPgotKyNlbGlmIGRlZmluZWQoX19wb3dl cnBjNjRfXykKLSsvLyBNYW51YWxseSBkZWZpbmUgZ3JlZ190IG9uIHBwYzY0Ci0rdHlwZWRlZiB1 bnNpZ25lZCBsb25nIGxvbmcgZ3JlZ190OwotICNlbmRpZgotICNlbmRpZgotIAotQEAgLTM0Niw2 ICszNDksNTEgQEAgc3RydWN0IHJlZ3Nfc3RydWN0IHsKLSAjZGVmaW5lIFNFQ0NPTVBfUFRfUEFS TTQoX3JlZ3MpIChfcmVncykucmVnc1szXQotICNkZWZpbmUgU0VDQ09NUF9QVF9QQVJNNShfcmVn cykgKF9yZWdzKS5yZWdzWzRdCi0gI2RlZmluZSBTRUNDT01QX1BUX1BBUk02KF9yZWdzKSAoX3Jl Z3MpLnJlZ3NbNV0KLSsKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rI2luY2x1ZGUg PGFzbS9wdHJhY2UuaD4KLSsKLSt0eXBlZGVmIHN0cnVjdCBwdF9yZWdzIHJlZ3Nfc3RydWN0Owot KwotKyNpZmRlZiBBUkNIX0NQVV9MSVRUTEVfRU5ESUFOCi0rI2RlZmluZSBTRUNDT01QX0FSQ0gg QVVESVRfQVJDSF9QUEM2NExFCi0rI2Vsc2UKLSsjZGVmaW5lIFNFQ0NPTVBfQVJDSCBBVURJVF9B UkNIX1BQQzY0Ci0rI2VuZGlmCi0rCi0rI2RlZmluZSBTRUNDT01QX1JFRyhfY3R4LCBfcmVnKSAo KF9jdHgpLT51Y19tY29udGV4dC5yZWdzLT5ncHJbX3JlZ10pCi0rCi0rI2RlZmluZSBTRUNDT01Q X1JFU1VMVChfY3R4KSBTRUNDT01QX1JFRyhfY3R4LCAzKQotKyNkZWZpbmUgU0VDQ09NUF9TWVND QUxMKF9jdHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDApCi0rI2RlZmluZSBTRUNDT01QX0lQKF9jdHgp IChfY3R4KS0+dWNfbWNvbnRleHQucmVncy0+bmlwCi0rI2RlZmluZSBTRUNDT01QX1BBUk0xKF9j dHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDMpCi0rI2RlZmluZSBTRUNDT01QX1BBUk0yKF9jdHgpIFNF Q0NPTVBfUkVHKF9jdHgsIDQpCi0rI2RlZmluZSBTRUNDT01QX1BBUk0zKF9jdHgpIFNFQ0NPTVBf UkVHKF9jdHgsIDUpCi0rI2RlZmluZSBTRUNDT01QX1BBUk00KF9jdHgpIFNFQ0NPTVBfUkVHKF9j dHgsIDYpCi0rI2RlZmluZSBTRUNDT01QX1BBUk01KF9jdHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDcp Ci0rI2RlZmluZSBTRUNDT01QX1BBUk02KF9jdHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDgpCi0rCi0r I2RlZmluZSBTRUNDT01QX05SX0lEWCAob2Zmc2V0b2Yoc3RydWN0IGFyY2hfc2VjY29tcF9kYXRh LCBucikpCi0rI2RlZmluZSBTRUNDT01QX0FSQ0hfSURYIChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9z ZWNjb21wX2RhdGEsIGFyY2gpKQotKyNkZWZpbmUgU0VDQ09NUF9JUF9NU0JfSURYIFwKLSsgIChv ZmZzZXRvZihzdHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIGluc3RydWN0aW9uX3BvaW50ZXIpICsg NCkKLSsjZGVmaW5lIFNFQ0NPTVBfSVBfTFNCX0lEWCBcCi0rICAob2Zmc2V0b2Yoc3RydWN0IGFy Y2hfc2VjY29tcF9kYXRhLCBpbnN0cnVjdGlvbl9wb2ludGVyKSArIDApCi0rI2RlZmluZSBTRUND T01QX0FSR19NU0JfSURYKG5yKSBcCi0rICAob2Zmc2V0b2Yoc3RydWN0IGFyY2hfc2VjY29tcF9k YXRhLCBhcmdzKSArIDggKiAobnIpICsgNCkKLSsjZGVmaW5lIFNFQ0NPTVBfQVJHX0xTQl9JRFgo bnIpIFwKLSsgIChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIGFyZ3MpICsgOCAq IChucikgKyAwKQotKwotKyNkZWZpbmUgU0VDQ09NUF9QVF9SRVNVTFQoX3JlZ3MpIChfcmVncyku Z3ByWzNdCi0rI2RlZmluZSBTRUNDT01QX1BUX1NZU0NBTEwoX3JlZ3MpIChfcmVncykuZ3ByWzBd Ci0rI2RlZmluZSBTRUNDT01QX1BUX0lQKF9yZWdzKSAoX3JlZ3MpLm5pcAotKyNkZWZpbmUgU0VD Q09NUF9QVF9QQVJNMShfcmVncykgKF9yZWdzKS5ncHJbM10KLSsjZGVmaW5lIFNFQ0NPTVBfUFRf UEFSTTIoX3JlZ3MpIChfcmVncykuZ3ByWzRdCi0rI2RlZmluZSBTRUNDT01QX1BUX1BBUk0zKF9y ZWdzKSAoX3JlZ3MpLmdwcls1XQotKyNkZWZpbmUgU0VDQ09NUF9QVF9QQVJNNChfcmVncykgKF9y ZWdzKS5ncHJbNl0KLSsjZGVmaW5lIFNFQ0NPTVBfUFRfUEFSTTUoX3JlZ3MpIChfcmVncykuZ3By WzddCi0rI2RlZmluZSBTRUNDT01QX1BUX1BBUk02KF9yZWdzKSAoX3JlZ3MpLmdwcls4XQotKwot ICNlbHNlCi0gI2Vycm9yIFVuc3VwcG9ydGVkIHRhcmdldCBwbGF0Zm9ybQotIAotLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhl bHBlcnMvYmFzZWxpbmVfcG9saWN5LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9iYXNlbGluZV9wb2xpY3ku Y2MKLUBAIC04Nyw3ICs4Nyw4IEBAIGJvb2wgSXNCYXNlbGluZVBvbGljeVdhdGNoZWQoaW50IHN5 c25vKSB7Ci0gICAgICAgICAgU3lzY2FsbFNldHM6OklzUHJjdGwoc3lzbm8pIHx8Ci0gICAgICAg ICAgU3lzY2FsbFNldHM6OklzUHJvY2Vzc0dyb3VwT3JTZXNzaW9uKHN5c25vKSB8fAotICNpZiBk ZWZpbmVkKF9faTM4Nl9fKSB8fCBcCi0tICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZ KSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQotKyAgICAoZGVmaW5lZChBUkNIX0NQVV9N SVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAotKyAgICBkZWZp bmVkKF9fcG93ZXJwYzY0X18pCi0gICAgICAgICAgU3lzY2FsbFNldHM6OklzU29ja2V0Q2FsbChz eXNubykgfHwKLSAjZW5kaWYKLSAjaWYgZGVmaW5lZChfX2FybV9fKQotQEAgLTE5MCw3ICsxOTEs NyBAQCBSZXN1bHRFeHByIEV2YWx1YXRlU3lzY2FsbEltcGwoaW50IGZzX2RlbmllZF9lcnJubywK LSAgIH0KLSAKLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8 fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCi0tICAgIGRlZmluZWQoX19hYXJjaDY0X18pCi0rICAg IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgIGlmIChz eXNubyA9PSBfX05SX21tYXApCi0gICAgIHJldHVybiBSZXN0cmljdE1tYXBGbGFncygpOwotICNl bmRpZgotQEAgLTIwOCw3ICsyMDksNyBAQCBSZXN1bHRFeHByIEV2YWx1YXRlU3lzY2FsbEltcGwo aW50IGZzX2RlbmllZF9lcnJubywKLSAgICAgcmV0dXJuIFJlc3RyaWN0UHJjdGwoKTsKLSAKLSAj aWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19t aXBzX18pIHx8IFwKLS0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykKLSsgICAgZGVmaW5lZChfX2Fh cmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgaWYgKHN5c25vID09IF9fTlJf c29ja2V0cGFpcikgewotICAgICAvLyBPbmx5IGFsbG93IEFGX1VOSVgsIFBGX1VOSVguIENyYXNo IGlmIGFueXRoaW5nIGVsc2UgaXMgc2Vlbi4KLSAgICAgc3RhdGljX2Fzc2VydChBRl9VTklYID09 IFBGX1VOSVgsCi1AQCAtMjQ4LDcgKzI0OSw4IEBAIFJlc3VsdEV4cHIgRXZhbHVhdGVTeXNjYWxs SW1wbChpbnQgZnNfZGVuaWVkX2Vycm5vLAotICAgfQotIAotICNpZiBkZWZpbmVkKF9faTM4Nl9f KSB8fCBcCi0tICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFS Q0hfQ1BVXzMyX0JJVFMpKQotKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYg ZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0 X18pCi0gICBpZiAoU3lzY2FsbFNldHM6OklzU29ja2V0Q2FsbChzeXNubykpCi0gICAgIHJldHVy biBSZXN0cmljdFNvY2tldGNhbGxDb21tYW5kKCk7Ci0gI2VuZGlmCi0tLS0gcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9i YXNlbGluZV9wb2xpY3lfdW5pdHRlc3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL2Jhc2VsaW5lX3BvbGlj eV91bml0dGVzdC5jYwotQEAgLTI1Nyw3ICsyNTcsNyBAQCBURVNUX0JBU0VMSU5FX1NJR1NZUyhf X05SX3N5c2luZm8pOwotIFRFU1RfQkFTRUxJTkVfU0lHU1lTKF9fTlJfc3lzbG9nKTsKLSBURVNU X0JBU0VMSU5FX1NJR1NZUyhfX05SX3RpbWVyX2NyZWF0ZSk7Ci0gCi0tI2lmICFkZWZpbmVkKF9f YWFyY2g2NF9fKQotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgIWRlZmluZWQoX19wb3dl cnBjNjRfXykKLSBURVNUX0JBU0VMSU5FX1NJR1NZUyhfX05SX2V2ZW50ZmQpOwotIFRFU1RfQkFT RUxJTkVfU0lHU1lTKF9fTlJfaW5vdGlmeV9pbml0KTsKLSBURVNUX0JBU0VMSU5FX1NJR1NZUyhf X05SX3ZzZXJ2ZXIpOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5k Ym94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9wYXJhbWV0ZXJzX3Jlc3RyaWN0 aW9ucy5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xp bnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9wYXJhbWV0ZXJzX3Jlc3RyaWN0aW9ucy5j YwotQEAgLTM1LDcgKzM1LDggQEAKLSAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0gI2luY2x1ZGUg PHN5cy9wdHJhY2UuaD4KLSAjaWYgZGVmaW5lZChPU19MSU5VWCkgJiYgIWRlZmluZWQoT1NfQ0hS T01FT1MpICYmICFkZWZpbmVkKF9fYXJtX18pICYmIFwKLS0gICAgIWRlZmluZWQoX19hYXJjaDY0 X18pICYmICFkZWZpbmVkKFBUUkFDRV9HRVRfVEhSRUFEX0FSRUEpCi0rICAgICFkZWZpbmVkKF9f YWFyY2g2NF9fKSAmJiAhZGVmaW5lZChfX3Bvd2VycGM2NF9fKSAmJiBcCi0rICAgICFkZWZpbmVk KFBUUkFDRV9HRVRfVEhSRUFEX0FSRUEpCi0gLy8gQWxzbyBpbmNsdWRlIGFzbS9wdHJhY2UtYWJp Lmggc2luY2UgcHRyYWNlLmggaW4gb2xkZXIgbGliYyAoZm9yIGluc3RhbmNlCi0gLy8gdGhlIG9u ZSBpbiBVYnVudHUgMTYuMDQgTFRTKSBpcyBtaXNzaW5nIFBUUkFDRV9HRVRfVEhSRUFEX0FSRUEu Ci0gLy8gYXNtL3B0cmFjZS1hYmkuaCBkb2Vzbid0IGV4aXN0IG9uIGFybTMyIGFuZCBQVFJBQ0Vf R0VUX1RIUkVBRF9BUkVBIGlzbid0Ci1AQCAtNDQsNiArNDQsMTEgQEAKLSAjZW5kaWYKLSAjZW5k aWYgIC8vICFPU19OQUNMX05PTlNGSQotIAotKy8vIE9uIFBQQzY0LCBUQ0dFVFMgaXMgZGVmaW5l ZCBpbiB0ZXJtcyBvZiBzdHJ1Y3QgdGVybWlvcywgc28gd2UgbXVzdCBpbmNsdWRlIHRlcm1pb3Mu aAotKyNpZmRlZiBfX3Bvd2VycGM2NF9fCi0rI2luY2x1ZGUgPHRlcm1pb3MuaD4KLSsjZW5kaWYK LSsKLSAjaWYgZGVmaW5lZChPU19BTkRST0lEKQotIAotICNpZiAhZGVmaW5lZChGX0RVUEZEX0NM T0VYRUMpCi1AQCAtMTA2LDYgKzExMSwxNSBAQCBpbmxpbmUgYm9vbCBJc0FyY2hpdGVjdHVyZU1p cHMoKSB7Ci0gI2VuZGlmCi0gfQotIAotK2lubGluZSBib29sIElzQXJjaGl0ZWN0dXJlUFBDNjQo KSB7Ci0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgIHJldHVybiB0cnVlOwotKyNlbHNl Ci0rICByZXR1cm4gZmFsc2U7Ci0rI2VuZGlmCi0rfQotKwotKwotIC8vIFVidW50dSdzIHZlcnNp b24gb2YgZ2xpYmMgaGFzIGEgcmFjZSBjb25kaXRpb24gaW4gc2VtX3Bvc3QgdGhhdCBjYW4gY2F1 c2UKLSAvLyBpdCB0byBjYWxsIGZ1dGV4KDIpIHdpdGggYm9ndXMgb3AgYXJndW1lbnRzLiBUbyB3 b3JrYXJvdW5kIHRoaXMsIHdlIG5lZWQKLSAvLyB0byBhbGxvdyB0aG9zZSBmdXRleCgyKSBjYWxs cyB0byBmYWlsIHdpdGggRUlOVkFMLCBpbnN0ZWFkIG9mIGNyYXNoaW5nIHRoZQotQEAgLTI0Nyw3 ICsyNjEsOCBAQCBSZXN1bHRFeHByIFJlc3RyaWN0RmNudGxDb21tYW5kcygpIHsKLSAgIC8vIG9w ZXJhdG9yLgotICAgLy8gR2xpYmMgb3ZlcnJpZGVzIHRoZSBrZXJuZWwncyBPX0xBUkdFRklMRSB2 YWx1ZS4gQWNjb3VudCBmb3IgdGhpcy4KLSAgIHVpbnQ2NF90IGtPTGFyZ2VGaWxlRmxhZyA9IE9f TEFSR0VGSUxFOwotLSAgaWYgKElzQXJjaGl0ZWN0dXJlWDg2XzY0KCkgfHwgSXNBcmNoaXRlY3R1 cmVJMzg2KCkgfHwgSXNBcmNoaXRlY3R1cmVNaXBzKCkpCi0rICBpZiAoSXNBcmNoaXRlY3R1cmVY ODZfNjQoKSB8fCBJc0FyY2hpdGVjdHVyZUkzODYoKSB8fCBJc0FyY2hpdGVjdHVyZU1pcHMoKSBc Ci0rICAgICAgfHwgSXNBcmNoaXRlY3R1cmVQUEM2NCgpKQotICAgICBrT0xhcmdlRmlsZUZsYWcg PSAwMTAwMDAwOwotIAotICAgY29uc3QgQXJnPGludD4gY21kKDEpOwotQEAgLTI3MCw3ICsyODUs NyBAQCBSZXN1bHRFeHByIFJlc3RyaWN0RmNudGxDb21tYW5kcygpIHsKLSAgICAgICAuRGVmYXVs dChDcmFzaFNJR1NZUygpKTsKLSB9Ci0gCi0tI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmlu ZWQoX19taXBzX18pCi0rI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19taXBzX18p IHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSBSZXN1bHRFeHByIFJlc3RyaWN0U29ja2V0Y2Fs bENvbW1hbmQoKSB7Ci0gICAvLyBVbmZvcnR1bmF0ZWx5LCB3ZSBhcmUgdW5hYmxlIHRvIHJlc3Ry aWN0IHRoZSBmaXJzdCBwYXJhbWV0ZXIgdG8KLSAgIC8vIHNvY2tldHBhaXIoMikuIFdoaWxzdCBp bml0aWFsbHkgc291bmRpbmcgYmFkLCBpdCdzIG5vdGV3b3J0aHkgdGhhdCB2ZXJ5Ci1AQCAtNDIx LDcgKzQyMiw3IEBAIFJlc3VsdEV4cHIgUmVzdHJpY3RQcmxpbWl0KHBpZF90IHRhcmdldF9waWQp IHsKLSBSZXN1bHRFeHByIFJlc3RyaWN0UHRyYWNlKCkgewotICAgY29uc3QgQXJnPGludD4gcmVx dWVzdCgwKTsKLSAgIHJldHVybiBTd2l0Y2gocmVxdWVzdCkuQ0FTRVMoKAotLSNpZiAhZGVmaW5l ZChfX2FhcmNoNjRfXykKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmICFkZWZpbmVkKF9f cG93ZXJwYzY0X18pCi0gICAgICAgICBQVFJBQ0VfR0VUUkVHUywKLSAgICAgICAgIFBUUkFDRV9H RVRGUFJFR1MsCi0gICAgICAgICBQVFJBQ0VfR0VUX1RIUkVBRF9BUkVBLAotLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBl cnMvc3lzY2FsbF9wYXJhbWV0ZXJzX3Jlc3RyaWN0aW9ucy5oCi0rKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNj YWxsX3BhcmFtZXRlcnNfcmVzdHJpY3Rpb25zLmgKLUBAIC00OCw3ICs0OCw3IEBAIFNBTkRCT1hf RVhQT1JUIGJwZl9kc2w6OlJlc3VsdEV4cHIgUmVzdHJpY3RNcHJvdGVjdEZsYWdzKCk7Ci0gLy8g T19OT05CTE9DSyB8IE9fU1lOQyB8IE9fTEFSR0VGSUxFIHwgT19DTE9FWEVDIHwgT19OT0FUSU1F LgotIFNBTkRCT1hfRVhQT1JUIGJwZl9kc2w6OlJlc3VsdEV4cHIgUmVzdHJpY3RGY250bENvbW1h bmRzKCk7Ci0gCi0tI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19taXBzX18pCi0r I2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IGRlZmluZWQoX19w b3dlcnBjNjRfXykKLSAvLyBSZXN0cmljdCBzb2NrZXRjYWxsKDIpIHRvIG9ubHkgYWxsb3cgc29j a2V0cGFpcigyKSwgc2VuZCgyKSwgcmVjdigyKSwKLSAvLyBzZW5kdG8oMiksIHJlY3Zmcm9tKDIp LCBzaHV0ZG93bigyKSwgc2VuZG1zZygyKSBhbmQgcmVjdm1zZygyKS4KLSBTQU5EQk9YX0VYUE9S VCBicGZfZHNsOjpSZXN1bHRFeHByIFJlc3RyaWN0U29ja2V0Y2FsbENvbW1hbmQoKTsKLS0tLSBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJw Zi1oZWxwZXJzL3N5c2NhbGxfc2V0cy5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmNj Ci1AQCAtMjksNyArMjksOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRHZXR0aW1lKGlu dCBzeXNubykgewotICAgc3dpdGNoIChzeXNubykgewotICAgICBjYXNlIF9fTlJfZ2V0dGltZW9m ZGF5OgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IFwK LS0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVf MzJfQklUUykpCi0rICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVk KEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAg ICAgY2FzZSBfX05SX3RpbWU6Ci0gI2VuZGlmCi0gICAgICAgcmV0dXJuIHRydWU7Ci1AQCAtNDUs NyArNDYsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRHZXR0aW1lKGludCBzeXNubykg ewotICNlbmRpZgotICAgICBjYXNlIF9fTlJfc2V0dGltZW9mZGF5OiAgLy8gUHJpdmlsZWdlZC4K LSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAotLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBT X0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKLSsgICAgKGRlZmluZWQoQVJD SF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKLSsg ICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfc3RpbWU6Ci0gI2VuZGlm Ci0gICAgIGRlZmF1bHQ6Ci1AQCAtMTExLDcgKzExMyw3IEBAIGJvb2wgU3lzY2FsbFNldHM6Oklz RmlsZVN5c3RlbShpbnQgc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX2ZhY2Nlc3NhdDogIC8vIEVQ RVJNIG5vdCBhIHZhbGlkIGVycm5vLgotICAgICBjYXNlIF9fTlJfZmNobW9kYXQ6Ci0gICAgIGNh c2UgX19OUl9mY2hvd25hdDogIC8vIFNob3VsZCBiZSBjYWxsZWQgY2hvd25hdCA/Ci0tI2lmIGRl ZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykKLSsjaWYgZGVmaW5lZChf X3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0 X18pCi0gICAgIGNhc2UgX19OUl9uZXdmc3RhdGF0OiAgLy8gZnN0YXRhdCgpLiBFUEVSTSBub3Qg YSB2YWxpZCBlcnJuby4KLSAjZWxpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJt X18pIHx8IFwKLSAgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQo QVJDSF9DUFVfMzJfQklUUykpCi1AQCAtMTMwLDcgKzEzMiw3IEBAIGJvb2wgU3lzY2FsbFNldHM6 OklzRmlsZVN5c3RlbShpbnQgc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX21lbWZkX2NyZWF0ZToK LSAgICAgY2FzZSBfX05SX21rZGlyYXQ6Ci0gICAgIGNhc2UgX19OUl9ta25vZGF0OgotLSNpZiBk ZWZpbmVkKF9faTM4Nl9fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9vbGRsc3RhdDoKLSAgICAgY2FzZSBfX05SX29sZHN0 YXQ6Ci0gI2VuZGlmCi1AQCAtMTU0LDcgKzE1Niw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzRmls ZVN5c3RlbShpbnQgc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX3RydW5jYXRlNjQ6Ci0gI2VuZGlm Ci0gICAgIGNhc2UgX19OUl91bmxpbmthdDoKLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVm aW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9faTM4 Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLSsg ICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfdXRpbWU6Ci0gI2VuZGlm Ci0gICAgIGNhc2UgX19OUl91dGltZW5zYXQ6ICAvLyBOZXcuCi1AQCAtMTczLDcgKzE3Niw4IEBA IGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEZpbGVTeXN0ZW1BY2Nlc3NWaWFGZChpbnQgc3lz bm8pIHsKLSAjZW5kaWYKLSAgICAgICByZXR1cm4gdHJ1ZTsKLSAvLyBUT0RPKGpsbik6IHRoZXNl IHNob3VsZCBiZSBkZW5pZWQgZ3JhY2VmdWxseSBhcyB3ZWxsIChtb3ZlZCBiZWxvdykuCi0tI2lm IGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21p cHNfXykKLSsjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBk ZWZpbmVkKF9fbWlwc19fKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAg Y2FzZSBfX05SX2ZhZHZpc2U2NDogIC8vIEVQRVJNIG5vdCBhIHZhbGlkIGVycm5vLgotICNlbmRp ZgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKQotQEAgLTE4Niw3ICsxOTAsOCBAQCBib29sIFN5c2Nh bGxTZXRzOjpJc0FsbG93ZWRGaWxlU3lzdGVtQWNjZXNzVmlhRmQoaW50IHN5c25vKSB7Ci0gICAg IGNhc2UgX19OUl9mbG9jazogICAgICAvLyBFUEVSTSBub3QgYSB2YWxpZCBlcnJuby4KLSAgICAg Y2FzZSBfX05SX2ZzdGF0ZnM6ICAgIC8vIEdpdmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHdob2xl IGZpbGVzeXN0ZW0uCi0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykg fHwgXAotLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNI X0NQVV8zMl9CSVRTKSkKLSsgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRl ZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9f KQotICAgICBjYXNlIF9fTlJfZnN0YXRmczY0OgotICNlbmRpZgotICAgICBjYXNlIF9fTlJfZnN5 bmM6ICAvLyBFUEVSTSBub3QgYSB2YWxpZCBlcnJuby4KLUBAIC0xOTgsNiArMjAzLDggQEAgYm9v bCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkRmlsZVN5c3RlbUFjY2Vzc1ZpYUZkKGludCBzeXNubykg ewotICAgICBjYXNlIF9fTlJfc3luY19maWxlX3JhbmdlOiAgLy8gRVBFUk0gbm90IGEgdmFsaWQg ZXJybm8uCi0gI2VsaWYgZGVmaW5lZChfX2FybV9fKQotICAgICBjYXNlIF9fTlJfYXJtX3N5bmNf ZmlsZV9yYW5nZTogIC8vIEVQRVJNIG5vdCBhIHZhbGlkIGVycm5vLgotKyNlbGlmIGRlZmluZWQo X19wb3dlcnBjNjRfXykKLSsgICAgY2FzZSBfX05SX3N5bmNfZmlsZV9yYW5nZTI6IC8vIEVQRVJN IG5vdCBhIHZhbGlkIGVycm5vLgotICNlbmRpZgotICAgICBkZWZhdWx0OgotICAgICAgIHJldHVy biBmYWxzZTsKLUBAIC0yMjMsNyArMjMwLDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNEZW5pZWRG aWxlU3lzdGVtQWNjZXNzVmlhRmQoaW50IHN5c25vKSB7Ci0gI2VuZGlmCi0gICAgIGNhc2UgX19O Ul9nZXRkZW50czY0OiAgLy8gRVBFUk0gbm90IGEgdmFsaWQgZXJybm8uCi0gI2lmIGRlZmluZWQo X19pMzg2X18pIHx8IFwKLS0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRl ZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCi0rICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFN SUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQoX19w b3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3JlYWRkaXI6Ci0gI2VuZGlmCi0gICAgICAgcmV0 dXJuIHRydWU7Ci1AQCAtMjY0LDcgKzI3Miw3IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzR2V0U2lt cGxlSWQoaW50IHN5c25vKSB7Ci0gYm9vbCBTeXNjYWxsU2V0czo6SXNQcm9jZXNzUHJpdmlsZWdl Q2hhbmdlKGludCBzeXNubykgewotICAgc3dpdGNoIChzeXNubykgewotICAgICBjYXNlIF9fTlJf Y2Fwc2V0OgotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pCi0r I2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChf X3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfaW9wZXJtOiAgLy8gSW50ZWwgcHJpdmlsZWdl LgotICAgICBjYXNlIF9fTlJfaW9wbDogICAgLy8gSW50ZWwgcHJpdmlsZWdlLgotICNlbmRpZgot QEAgLTMxNCw3ICszMjIsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRTaWduYWxIYW5k bGluZyhpbnQgc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX3J0X3NpZ3Byb2NtYXNrOgotICAgICBj YXNlIF9fTlJfcnRfc2lncmV0dXJuOgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVk KF9fYXJtX18pIHx8IFwKLS0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRl ZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCi0rICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFN SUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQoX19w b3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3NpZ2FjdGlvbjoKLSAgICAgY2FzZSBfX05SX3Np Z3Byb2NtYXNrOgotICAgICBjYXNlIF9fTlJfc2lncmV0dXJuOgotQEAgLTMzMSw3ICszNDAsOCBA QCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRTaWduYWxIYW5kbGluZyhpbnQgc3lzbm8pIHsK LSAjZW5kaWYKLSAgICAgY2FzZSBfX05SX3NpZ25hbGZkNDoKLSAjaWYgZGVmaW5lZChfX2kzODZf XykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBcCi0tICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNf RkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQotKyAgICAoZGVmaW5lZChBUkNI X0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAotKyAg ICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9zaWdwZW5kaW5nOgotICAg ICBjYXNlIF9fTlJfc2lnc3VzcGVuZDoKLSAjZW5kaWYKLUBAIC0zNTUsNyArMzY1LDcgQEAgYm9v bCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkT3BlcmF0aW9uT25GZChpbnQgc3lzbm8pIHsKLSAjZW5k aWYKLSAgICAgY2FzZSBfX05SX2R1cDM6Ci0gI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVm aW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCi0tICAgIGRlZmluZWQoX19h YXJjaDY0X18pCi0rICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBj NjRfXykKLSAgICAgY2FzZSBfX05SX3NodXRkb3duOgotICNlbmRpZgotICAgICAgIHJldHVybiB0 cnVlOwotQEAgLTM4OSw3ICszOTksNyBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRQcm9j ZXNzU3RhcnRPckRlYXRoKGludCBzeXNubykgewotICAgICBjYXNlIF9fTlJfbWVtYmFycmllcjoK LSAgICAgY2FzZSBfX05SX3dhaXQ0OgotICAgICBjYXNlIF9fTlJfd2FpdGlkOgotLSNpZiBkZWZp bmVkKF9faTM4Nl9fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fcG93ZXJw YzY0X18pCi0gICAgIGNhc2UgX19OUl93YWl0cGlkOgotICNlbmRpZgotICNpZiAhZGVmaW5lZChf X0dMSUJDX18pCi1AQCAtNDExLDcgKzQyMSw3IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dl ZFByb2Nlc3NTdGFydE9yRGVhdGgoaW50IHN5c25vKSB7Ci0gICAgIGNhc2UgX19OUl9zZXRfdGlk X2FkZHJlc3M6Ci0gI2VuZGlmCi0gICAgIGNhc2UgX19OUl91bnNoYXJlOgotLSNpZiAhZGVmaW5l ZChfX21pcHNfXykgJiYgIWRlZmluZWQoX19hYXJjaDY0X18pCi0rI2lmICFkZWZpbmVkKF9fbWlw c19fKSAmJiAhZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQot ICAgICBjYXNlIF9fTlJfdmZvcms6Ci0gI2VuZGlmCi0gICAgIGRlZmF1bHQ6Ci1AQCAtNDYwLDcg KzQ3MCw3IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEdldE9yTW9kaWZ5U29ja2V0KGlu dCBzeXNubykgewotICAgICAgIHJldHVybiB0cnVlOwotICAgICBkZWZhdWx0OgotICNpZiBkZWZp bmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHNfXykg fHwgXAotLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9f KSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9zb2NrZXRwYWlyOiAg Ly8gV2Ugd2lsbCB3YW50IHRvIGluc3BlY3QgaXRzIGFyZ3VtZW50LgotICNlbmRpZgotICAgICAg IHJldHVybiBmYWxzZTsKLUBAIC00NzAsNyArNDgwLDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNB bGxvd2VkR2V0T3JNb2RpZnlTb2NrZXQoaW50IHN5c25vKSB7Ci0gYm9vbCBTeXNjYWxsU2V0czo6 SXNEZW5pZWRHZXRPck1vZGlmeVNvY2tldChpbnQgc3lzbm8pIHsKLSAgIHN3aXRjaCAoc3lzbm8p IHsKLSAjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmlu ZWQoX19taXBzX18pIHx8IFwKLS0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykKLSsgICAgZGVmaW5l ZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJf YWNjZXB0OgotICAgICBjYXNlIF9fTlJfYWNjZXB0NDoKLSAgICAgY2FzZSBfX05SX2JpbmQ6Ci1A QCAtNDg1LDcgKzQ5NSw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzRGVuaWVkR2V0T3JNb2RpZnlT b2NrZXQoaW50IHN5c25vKSB7Ci0gfQotIAotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCi0t ICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMy X0JJVFMpKQotKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChB UkNIX0NQVV8zMl9CSVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gLy8g QmlnIG11bHRpcGxleGluZyBzeXN0ZW0gY2FsbCBmb3Igc29ja2V0cy4KLSBib29sIFN5c2NhbGxT ZXRzOjpJc1NvY2tldENhbGwoaW50IHN5c25vKSB7Ci0gICBzd2l0Y2ggKHN5c25vKSB7Ci1AQCAt NDk5LDcgKzUxMCw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzU29ja2V0Q2FsbChpbnQgc3lzbm8p IHsKLSB9Ci0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChf X2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8 IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAotKyAgICBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCi0gYm9vbCBTeXNjYWxsU2V0czo6SXNOZXR3b3JrU29ja2V0SW5mb3Jt YXRpb24oaW50IHN5c25vKSB7Ci0gICBzd2l0Y2ggKHN5c25vKSB7Ci0gICAgIGNhc2UgX19OUl9n ZXRwZWVybmFtZToKLUBAIC01MjcsNyArNTM5LDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxv d2VkQWRkcmVzc1NwYWNlQWNjZXNzKGludCBzeXNubykgewotICAgICBjYXNlIF9fTlJfbWluY29y ZToKLSAgICAgY2FzZSBfX05SX21sb2NrYWxsOgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBk ZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLS0gICAgZGVmaW5l ZChfX2FhcmNoNjRfXykKLSsgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bv d2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfbW1hcDoKLSAjZW5kaWYKLSAjaWYgZGVmaW5lZChf X2kzODZfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBcCi1AQCAtNTU5LDcgKzU3MSw4IEBAIGJv b2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEdlbmVyYWxJbyhpbnQgc3lzbm8pIHsKLSAgIHN3aXRj aCAoc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX2xzZWVrOgotICNpZiBkZWZpbmVkKF9faTM4Nl9f KSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IFwKLS0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19G QU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCi0rICAgIChkZWZpbmVkKEFSQ0hf Q1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCi0rICAg IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX19sbHNlZWs6Ci0gI2VuZGlm Ci0gI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKQotQEAgLTU3MSwyNiArNTg0LDI4IEBAIGJvb2wg U3lzY2FsbFNldHM6OklzQWxsb3dlZEdlbmVyYWxJbyhpbnQgc3lzbm8pIHsKLSAgICAgY2FzZSBf X05SX3JlYWR2OgotICAgICBjYXNlIF9fTlJfcHJlYWQ2NDoKLSAjaWYgZGVmaW5lZChfX2FybV9f KSB8fCBcCi0tICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFS Q0hfQ1BVXzMyX0JJVFMpKQotKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYg ZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0 X18pCi0gICAgIGNhc2UgX19OUl9yZWN2OgotICNlbmRpZgotICNpZiBkZWZpbmVkKF9feDg2XzY0 X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAotLSAgICBk ZWZpbmVkKF9fYWFyY2g2NF9fKQotKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9yZWN2ZnJvbTogIC8vIENvdWxkIHNwZWNp Znkgc291cmNlLgotICAgICBjYXNlIF9fTlJfcmVjdm1zZzogICAvLyBDb3VsZCBzcGVjaWZ5IHNv dXJjZS4KLSAjZW5kaWYKLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82 NF9fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRl ZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3NlbGVjdDoKLSAjZW5kaWYKLS0j aWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlw c19fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmlu ZWQoX19taXBzX18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX19u ZXdzZWxlY3Q6Ci0gI2VuZGlmCi0gI2lmIGRlZmluZWQoX19hcm1fXykgfHwgXAotLSAgICAoZGVm aW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkK LSsgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVf MzJfQklUUykpIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9f TlJfc2VuZDoKLSAjZW5kaWYKLSAjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9f YXJtX18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLS0gICAgZGVmaW5lZChfX2FhcmNoNjRf XykKLSsgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQot ICAgICBjYXNlIF9fTlJfc2VuZG1zZzogIC8vIENvdWxkIHNwZWNpZnkgZGVzdGluYXRpb24uCi0g ICAgIGNhc2UgX19OUl9zZW5kdG86ICAgLy8gQ291bGQgc3BlY2lmeSBkZXN0aW5hdGlvbi4KLSAj ZW5kaWYKLUBAIC02NDcsNyArNjYyLDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkQmFz aWNTY2hlZHVsZXIoaW50IHN5c25vKSB7Ci0gICAgICAgcmV0dXJuIHRydWU7Ci0gICAgIGNhc2Ug X19OUl9nZXRwcmlvcml0eToKLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2Fy bV9fKSB8fCBcCi0tICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVk KEFSQ0hfQ1BVXzMyX0JJVFMpKQotKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkg JiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJw YzY0X18pCi0gICAgIGNhc2UgX19OUl9uaWNlOgotICNlbmRpZgotICAgICBjYXNlIF9fTlJfc2V0 cHJpb3JpdHk6Ci1AQCAtNjU5LDcgKzY3NSw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dl ZEJhc2ljU2NoZWR1bGVyKGludCBzeXNubykgewotIGJvb2wgU3lzY2FsbFNldHM6OklzQWRtaW5P cGVyYXRpb24oaW50IHN5c25vKSB7Ci0gICBzd2l0Y2ggKHN5c25vKSB7Ci0gI2lmIGRlZmluZWQo X19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgXAotLSAgICAoZGVmaW5lZChBUkNIX0NQ VV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKLSsgICAgKGRlZmlu ZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8 IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfYmRmbHVzaDoK LSAjZW5kaWYKLSAgICAgY2FzZSBfX05SX2tleGVjX2xvYWQ6Ci1AQCAtNjc1LDcgKzY5Miw4IEBA IGJvb2wgU3lzY2FsbFNldHM6OklzQWRtaW5PcGVyYXRpb24oaW50IHN5c25vKSB7Ci0gCi0gYm9v bCBTeXNjYWxsU2V0czo6SXNLZXJuZWxNb2R1bGUoaW50IHN5c25vKSB7Ci0gICBzd2l0Y2ggKHN5 c25vKSB7Ci0tI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwg ZGVmaW5lZChfX21pcHNfXykKLSsjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4 Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBj NjRfXykKLSAgICAgY2FzZSBfX05SX2NyZWF0ZV9tb2R1bGU6Ci0gICAgIGNhc2UgX19OUl9nZXRf a2VybmVsX3N5bXM6ICAvLyBTaG91bGQgRU5PU1lTLgotICAgICBjYXNlIF9fTlJfcXVlcnlfbW9k dWxlOgotQEAgLTcwOCw3ICs3MjYsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0ZzQ29udHJvbChp bnQgc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX3N3YXBvZmY6Ci0gICAgIGNhc2UgX19OUl9zd2Fw b246Ci0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwKLS0gICAgKGRlZmluZWQoQVJDSF9DUFVf TUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCi0rICAgIChkZWZpbmVk KEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBc Ci0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3Vtb3VudDoKLSAj ZW5kaWYKLSAgICAgY2FzZSBfX05SX3Vtb3VudDI6Ci1AQCAtNzI0LDcgKzc0Myw3IEBAIGJvb2wg U3lzY2FsbFNldHM6OklzTnVtYShpbnQgc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX2dldGNwdToK LSAgICAgY2FzZSBfX05SX21iaW5kOgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVk KF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLS0gICAgZGVmaW5lZChfX2Fh cmNoNjRfXykKLSsgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2 NF9fKQotICAgICBjYXNlIF9fTlJfbWlncmF0ZV9wYWdlczoKLSAjZW5kaWYKLSAgICAgY2FzZSBf X05SX21vdmVfcGFnZXM6Ci1AQCAtNzUzLDE0ICs3NzIsMTUgQEAgYm9vbCBTeXNjYWxsU2V0czo6 SXNHbG9iYWxQcm9jZXNzRW52aXJvbm1lbnQoaW50IHN5c25vKSB7Ci0gICBzd2l0Y2ggKHN5c25v KSB7Ci0gICAgIGNhc2UgX19OUl9hY2N0OiAgLy8gUHJpdmlsZWdlZC4KLSAjaWYgZGVmaW5lZChf X2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBc Ci0tICAgIGRlZmluZWQoX19hYXJjaDY0X18pCi0rICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8 IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX2dldHJsaW1pdDoKLSAjZW5k aWYKLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2FybV9fKQotKyNpZiBkZWZp bmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRf XykKLSAgICAgY2FzZSBfX05SX3VnZXRybGltaXQ6Ci0gI2VuZGlmCi0gI2lmIGRlZmluZWQoX19p Mzg2X18pIHx8IFwKLS0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmlu ZWQoQVJDSF9DUFVfMzJfQklUUykpCi0rICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZ KSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dl cnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3VsaW1pdDoKLSAjZW5kaWYKLSAgICAgY2FzZSBfX05S X2dldHJ1c2FnZToKLUBAIC03OTQsNyArODE0LDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNHbG9i YWxTeXN0ZW1TdGF0dXMoaW50IHN5c25vKSB7Ci0gI2VuZGlmCi0gICAgIGNhc2UgX19OUl9zeXNp bmZvOgotICAgICBjYXNlIF9fTlJfdW5hbWU6Ci0tI2lmIGRlZmluZWQoX19pMzg2X18pCi0rI2lm IGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBf X05SX29sZHVuYW1lOgotICAgICBjYXNlIF9fTlJfb2xkb2xkdW5hbWU6Ci0gI2VuZGlmCi1AQCAt ODg4LDcgKzkwOCw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzU3lzdGVtVk1lc3NhZ2VRdWV1ZShp bnQgc3lzbm8pIHsKLSAjZW5kaWYKLSAKLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAotLSAg ICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9C SVRTKSkKLSsgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJD SF9DUFVfMzJfQklUUykpIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotIC8vIEJp ZyBzeXN0ZW0gViBtdWx0aXBsZXhpbmcgc3lzdGVtIGNhbGwuCi0gYm9vbCBTeXNjYWxsU2V0czo6 SXNTeXN0ZW1WSXBjKGludCBzeXNubykgewotICAgc3dpdGNoIChzeXNubykgewotQEAgLTkwOCw3 ICs5MjksOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FueVN5c3RlbVYoaW50IHN5c25vKSB7Ci0g ICByZXR1cm4gSXNTeXN0ZW1WTWVzc2FnZVF1ZXVlKHN5c25vKSB8fCBJc1N5c3RlbVZTZW1hcGhv cmVzKHN5c25vKSB8fAotICAgICAgICAgIElzU3lzdGVtVlNoYXJlZE1lbW9yeShzeXNubyk7Ci0g I2VsaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAotLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBT X0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKLSsgICAgKGRlZmluZWQoQVJD SF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKLSsg ICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgcmV0dXJuIElzU3lzdGVtVklwYyhzeXNubyk7 Ci0gI2VuZGlmCi0gfQotQEAgLTk2MSw3ICs5ODMsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0Zh Tm90aWZ5KGludCBzeXNubykgewotIGJvb2wgU3lzY2FsbFNldHM6OklzVGltZXIoaW50IHN5c25v KSB7Ci0gICBzd2l0Y2ggKHN5c25vKSB7Ci0gICAgIGNhc2UgX19OUl9nZXRpdGltZXI6Ci0tI2lm IGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21p cHNfXykKLSsjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBk ZWZpbmVkKF9fbWlwc19fKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAg Y2FzZSBfX05SX2FsYXJtOgotICNlbmRpZgotICAgICBjYXNlIF9fTlJfc2V0aXRpbWVyOgotQEAg LTEwMjAsMTggKzEwNDMsMjIgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNNaXNjKGludCBzeXNubykg ewotICAgICBjYXNlIF9fTlJfc3luY2ZzOgotICAgICBjYXNlIF9fTlJfdmhhbmd1cDoKLSAvLyBU aGUgc3lzdGVtIGNhbGxzIGJlbG93IGFyZSBub3QgaW1wbGVtZW50ZWQuCi0tI2lmIGRlZmluZWQo X19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykKLSsj aWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9f bWlwc19fKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05S X2Fmc19zeXNjYWxsOgotICNlbmRpZgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCi0tICAg IChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJ VFMpKQotKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNI X0NQVV8zMl9CSVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNh c2UgX19OUl9icmVhazoKLSAjZW5kaWYKLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5l ZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9f KSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLSsgICAg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfZ2V0cG1zZzoKLSAjZW5kaWYK LSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAotLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBT X0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKLSsgICAgKGRlZmluZWQoQVJD SF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKLSsg ICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfZ3R0eToKLSAgICAgY2Fz ZSBfX05SX2lkbGU6Ci0gICAgIGNhc2UgX19OUl9sb2NrOgotQEAgLTEwMzksMjAgKzEwNjYsMjIg QEAgYm9vbCBTeXNjYWxsU2V0czo6SXNNaXNjKGludCBzeXNubykgewotICAgICBjYXNlIF9fTlJf cHJvZjoKLSAgICAgY2FzZSBfX05SX3Byb2ZpbDoKLSAjZW5kaWYKLS0jaWYgZGVmaW5lZChfX2kz ODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBk ZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBz X18pIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfcHV0 cG1zZzoKLSAjZW5kaWYKLSAjaWYgZGVmaW5lZChfX3g4Nl82NF9fKQotICAgICBjYXNlIF9fTlJf c2VjdXJpdHk6Ci0gI2VuZGlmCi0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwKLS0gICAgKGRl ZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykp Ci0rICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BV XzMyX0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBf X05SX3N0dHk6Ci0gI2VuZGlmCi0tI2lmIGRlZmluZWQoX194ODZfNjRfXykKLSsjaWYgZGVmaW5l ZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl90 dXhjYWxsOgotICNlbmRpZgotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykKLSsjaWYgIWRlZmlu ZWQoX19hYXJjaDY0X18pICYmICFkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19O Ul92c2VydmVyOgotICNlbmRpZgotICAgICAgIHJldHVybiB0cnVlOwotLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMv c3lzY2FsbF9zZXRzLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2Fu ZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfc2V0cy5oCi1AQCAtNDMsMTMg KzQzLDE0IEBAIGNsYXNzIFNBTkRCT1hfRVhQT1JUIFN5c2NhbGxTZXRzIHsKLSAgIHN0YXRpYyBi b29sIElzRGVuaWVkR2V0T3JNb2RpZnlTb2NrZXQoaW50IHN5c25vKTsKLSAKLSAjaWYgZGVmaW5l ZChfX2kzODZfXykgfHwgXAotLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYg ZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKLSsgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19G QU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKLSsgICAgZGVmaW5lZChf X3Bvd2VycGM2NF9fKQotICAgLy8gQmlnIG11bHRpcGxleGluZyBzeXN0ZW0gY2FsbCBmb3Igc29j a2V0cy4KLSAgIHN0YXRpYyBib29sIElzU29ja2V0Q2FsbChpbnQgc3lzbm8pOwotICNlbmRpZgot IAotICNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5l ZChfX21pcHNfXykgfHwgXAotLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyAgICBkZWZpbmVk KF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICBzdGF0aWMgYm9vbCBJ c05ldHdvcmtTb2NrZXRJbmZvcm1hdGlvbihpbnQgc3lzbm8pOwotICNlbmRpZgotIAotQEAgLTg3 LDcgKzg4LDggQEAgY2xhc3MgU0FOREJPWF9FWFBPUlQgU3lzY2FsbFNldHMgewotICNlbmRpZgot IAotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCi0tICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01J UFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQotKyAgICAoZGVmaW5lZChB UkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAot KyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAvLyBCaWcgc3lzdGVtIFYgbXVsdGlwbGV4 aW5nIHN5c3RlbSBjYWxsLgotICAgc3RhdGljIGJvb2wgSXNTeXN0ZW1WSXBjKGludCBzeXNubyk7 Ci0gI2VuZGlmCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gv bGludXgvc2VjY29tcC1icGYvc3lzY2FsbC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmL3N5c2NhbGwuY2MKLUBAIC0xNiw3 ICsxNiw3IEBAIG5hbWVzcGFjZSBzYW5kYm94IHsKLSBuYW1lc3BhY2UgewotIAotICNpZiBkZWZp bmVkKEFSQ0hfQ1BVX1g4Nl9GQU1JTFkpIHx8IGRlZmluZWQoQVJDSF9DUFVfQVJNX0ZBTUlMWSkg fHwgXAotLSAgICBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQotKyAgICBkZWZpbmVkKEFS Q0hfQ1BVX01JUFNfRkFNSUxZKSB8fCBkZWZpbmVkIChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0g Ly8gTnVtYmVyIHRoYXQncyBub3QgY3VycmVudGx5IHVzZWQgYnkgYW55IExpbnV4IGtlcm5lbCBB QklzLgotIGNvbnN0IGludCBrSW52YWxpZFN5c2NhbGxOdW1iZXIgPSAweDM1MWQzOwotICNlbHNl Ci1AQCAtMzA4LDEyICszMDgsNTYgQEAgYXNtKC8vIFdlIG5lZWQgdG8gYmUgYWJsZSB0byB0ZWxs IHRoZSBrZXJuZWwgZXhhY3RseSB3aGVyZSB3ZSBtYWRlIGEKLSAgICAgLy8gRW50ZXIgdGhlIGtl cm5lbAotICAgICAic3ZjIDBcbiIKLSAgICAgIjI6cmV0XG4iCi0rICAgICIuY2ZpX2VuZHByb2Nc biIKLSsgICAgIi5zaXplIFN5c2NhbGxBc20sIC4tU3lzY2FsbEFzbVxuIgotKyNlbGlmIGRlZmlu ZWQoX19wb3dlcnBjNjRfXykKLSsgICAgIi50ZXh0XG4iCi0rICAgICIuYWxpZ24gNFxuIgotKyAg ICAiLnR5cGUgU3lzY2FsbEFzbSBAZnVuY3Rpb25cbiIKLSsgICAgIlN5c2NhbGxBc206XG4iCi0r ICAgICIuY2ZpX3N0YXJ0cHJvY1xuIgotKwotKyAgICAvLyBDaGVjayBpZiByMyBpcyBuZWdhdGl2 ZQotKyAgICAiY21wZGkgMywgMFxuIgotKyAgICAiYmd0IDJmXG4iCi0rCi0rICAgIC8vIExvYWQg YWRkcmVzcyBvZiAzZiBpbnRvIHIzIGFuZCByZXR1cm4KLSsgICAgIm1mbHIgMTBcbiIKLSsgICAg ImJsIDFmXG4iCi0rICAgICIxOiBtZmxyIDNcbiIKLSsgICAgIm10bHIgMTBcbiIKLSsgICAgImFk ZGkgMywgMywgNCoxM1xuIgotKyAgICAiYmxyXG4iCi0rCi0rICAgIC8vIExvYWQgYXJndW1lbnRz IGZyb20gYXJyYXkgaW50byByMy04Ci0rICAgIC8vIHNhdmUgcGFyYW0gMyBpbiByMTAKLSsgICAg IjI6XG4iCi0rICAgICJtciAwLCAzXG4iCi0rICAgICJsZCAzLCAwKDQpXG4iCi0rICAgICJsZCA1 LCAxNig0KVxuIgotKyAgICAibGQgNiwgMjQoNClcbiIKLSsgICAgImxkIDcsIDMyKDQpXG4iCi0r ICAgICJsZCA4LCA0MCg0KVxuIgotKyAgICAibGQgNCwgOCg0KVxuIgotKyAgICAibGkgOSwgMFxu IgotKwotKyAgICAvLyBFbnRlciBrZXJuZWwKLSsgICAgInNjXG4iCi0rCi0rICAgIC8vIE1hZ2lj IHJldHVybiBhZGRyZXNzCi0rICAgICIzOlxuIgotKyAgICAvLyBMaWtlIE1JUFMsIHBwYzY0IHJl dHVybiB2YWx1ZXMgYXJlIGFsd2F5cyBwb3NpdGl2ZS4KLSsgICAgLy8gQ2hlY2sgZm9yIGVycm9y IGluIGNyMC5TTyBhbmQgbmVnYXRlIHVwb24gZXJyb3IKLSsgICAgImJjIDQsIDMsIDRmXG4iCi0r ICAgICJuZWcgMywgM1xuIgotKyAgICAiNDogYmxyXG4iCi0rCi0gICAgICIuY2ZpX2VuZHByb2Nc biIKLSAgICAgIi5zaXplIFN5c2NhbGxBc20sIC4tU3lzY2FsbEFzbVxuIgotICNlbmRpZgotICAg ICApOyAgLy8gYXNtCi0gCi0tI2lmIGRlZmluZWQoX194ODZfNjRfXykKLSsjaWYgZGVmaW5lZChf X3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gZXh0ZXJuICJDIiB7Ci0gaW50 cHRyX3QgU3lzY2FsbEFzbShpbnRwdHJfdCBuciwgY29uc3QgaW50cHRyX3QgYXJnc1s2XSk7Ci0g fQotQEAgLTQyNyw2ICs0NzEsOCBAQCBpbnRwdHJfdCBTeXNjYWxsOjpDYWxsKGludCBuciwKLSAg ICAgcmV0ID0gaW5vdXQ7Ci0gICB9Ci0gCi0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQot KyAgaW50cHRyX3QgcmV0ID0gU3lzY2FsbEFzbShuciwgYXJncyk7Ci0gI2Vsc2UKLSAjZXJyb3Ig IlVuaW1wbGVtZW50ZWQgYXJjaGl0ZWN0dXJlIgotICNlbmRpZgotQEAgLTQ0Myw4ICs0ODksMTgg QEAgdm9pZCBTeXNjYWxsOjpQdXRWYWx1ZUluVWNvbnRleHQoaW50cHRyX3QgcmV0X3ZhbCwgdWNv bnRleHRfdCogY3R4KSB7Ci0gICAgIC8vIG5lZWRzIHRvIGJlIGNoYW5nZWQgYmFjay4KLSAgICAg cmV0X3ZhbCA9IC1yZXRfdmFsOwotICAgICBTRUNDT01QX1BBUk00KGN0eCkgPSAxOwotLSAgfSBl bHNlCi0rICB9IGVsc2UgewotICAgICBTRUNDT01QX1BBUk00KGN0eCkgPSAwOwotKyAgfQotKyNl bmRpZgotKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAvLyBTYW1lIGFzIE1JUFMsIG5l ZWQgdG8gaW52ZXJ0IHJldCBhbmQgc2V0IGVycm9yIHJlZ2lzdGVyIChjcjAuU08pCi0rICBpZiAo cmV0X3ZhbCA8PSAtMSAmJiByZXRfdmFsID49IC00MDk1KSB7Ci0rICAgIHJldF92YWwgPSAtcmV0 X3ZhbDsKLSsgICAgY3R4LT51Y19tY29udGV4dC5yZWdzLT5jY3IgfD0gKDEgPDwgMjgpOwotKyAg fSBlbHNlIHsKLSsgICAgY3R4LT51Y19tY29udGV4dC5yZWdzLT5jY3IgJj0gfigxIDw8IDI4KTsK LSsgIH0KLSAjZW5kaWYKLSAgIFNFQ0NPTVBfUkVTVUxUKGN0eCkgPSBzdGF0aWNfY2FzdDxncmVn X3Q+KHJldF92YWwpOwotIH0KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v c2FuZGJveC9saW51eC9zZWNjb21wLWJwZi90cmFwLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYvdHJhcC5jYwotQEAgLTIz MCw2ICsyMzAsMjAgQEAgdm9pZCBUcmFwOjpTaWdTeXMoaW50IG5yLCBMaW51eFNpZ0luZm8qIGlu Zm8sIHVjb250ZXh0X3QqIGN0eCkgewotICAgICAgIFNldElzSW5TaWdIYW5kbGVyKCk7Ci0gICAg IH0KLSAKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgICAvLyBPbiBwcGM2NCtnbGli Yywgc29tZSBzeXNjYWxscyBzZWVtIHRvIGFjY2lkZW50YWxseSBuZWdhdGUgdGhlIGZpcnN0Ci0r ICAgIC8vIHBhcmFtZXRlciB3aGljaCBjYXVzZXMgY2hlY2tzIGFnYWluc3QgaXQgdG8gZmFpbC4g Rm9yIG5vdywgbWFudWFsbHkKLSsgICAgLy8gbmVnYXRlIHRoZW0gYmFjay4KLSsgICAgLy8gVE9E TyhzaGF3bkBhbmFzdGFzLmlvKTogaW52ZXN0aWdhdGUgdGhpcyBpc3N1ZSBmdXJ0aGVyCi0rICAg IGF1dG8gbnIgPSBTRUNDT01QX1NZU0NBTEwoY3R4KTsKLSsgICAgaWYgKG5yID09IF9fTlJfb3Bl bmF0IHx8IG5yID09IF9fTlJfbWtkaXJhdCB8fCBuciA9PSBfX05SX2ZhY2Nlc3NhdCB8fCBuciA9 PSBfX05SX3JlYWRsaW5rYXQgfHwKLSsgICAgICAgIG5yID09IF9fTlJfcmVuYW1lYXQgfHwgbnIg PT0gX19OUl9yZW5hbWVhdDIgfHwgbnIgPT0gX19OUl9uZXdmc3RhdGF0IHx8IG5yID09IF9fTlJf dW5saW5rYXQpIHsKLSsgICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KFNFQ0NPTVBfUEFSTTEo Y3R4KSkgPiAwKSB7Ci0rICAgICAgICAgICAgU0VDQ09NUF9QQVJNMShjdHgpID0gLVNFQ0NPTVBf UEFSTTEoY3R4KTsKLSsgICAgICAgIH0KLSsgICAgfQotKyNlbmRpZgotKwotICAgICAvLyBDb3B5 IHRoZSBzZWNjb21wLXNwZWNpZmljIGRhdGEgaW50byBhIGFyY2hfc2VjY29tcF9kYXRhIHN0cnVj dHVyZS4gVGhpcwotICAgICAvLyBpcyB3aGF0IHdlIGFyZSBzaG93aW5nIHRvIFRyYXBGbmMgY2Fs bGJhY2tzIHRoYXQgdGhlIHN5c3RlbSBjYWxsCi0gICAgIC8vIGV2YWx1YXRvciByZWdpc3RlcmVk IHdpdGggdGhlIHNhbmRib3guCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3NhbmRib3gvbGludXgvc2VydmljZXMvY3JlZGVudGlhbHMuY2MKLSsrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZXJ2aWNlcy9jcmVkZW50aWFscy5j YwotQEAgLTc5LDcgKzc5LDcgQEAgYm9vbCBDaHJvb3RUb1NhZmVFbXB0eURpcigpIHsKLSAgIHBp ZF90IHBpZCA9IC0xOwotICAgYWxpZ25hcygxNikgY2hhciBzdGFja19idWZbUFRIUkVBRF9TVEFD S19NSU5dOwotICNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1g4Nl9GQU1JTFkpIHx8IGRlZmluZWQoQVJD SF9DUFVfQVJNX0ZBTUlMWSkgfHwgXAotLSAgICBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZ KQotKyAgICBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSB8fCBkZWZpbmVkKEFSQ0hfQ1BV X1BQQzY0X0ZBTUlMWSkKLSAgIC8vIFRoZSBzdGFjayBncm93cyBkb3dud2FyZC4KLSAgIHZvaWQq IHN0YWNrID0gc3RhY2tfYnVmICsgc2l6ZW9mKHN0YWNrX2J1Zik7Ci0gI2Vsc2UKLS0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zeXNjYWxsX2Jyb2tl ci9icm9rZXJfcHJvY2Vzcy5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS9zYW5kYm94L2xpbnV4L3N5c2NhbGxfYnJva2VyL2Jyb2tlcl9wcm9jZXNzLmNjCi1AQCAtMTUx LDcgKzE1MSw3IEBAIGJvb2wgQnJva2VyUHJvY2Vzczo6SXNTeXNjYWxsQWxsb3dlZChpbnQgc3lz bm8pIGNvbnN0IHsKLSAjaWYgZGVmaW5lZChfX05SX2ZzdGF0YXQpCi0gICAgIGNhc2UgX19OUl9m c3RhdGF0OgotICNlbmRpZgotLSNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19h YXJjaDY0X18pCi0rI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FhcmNoNjRf XykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfbmV3ZnN0YXRhdDoK LSAjZW5kaWYKLSAgICAgICByZXR1cm4gIWZhc3RfY2hlY2tfaW5fY2xpZW50XyB8fCBhbGxvd2Vk X2NvbW1hbmRfc2V0Xy50ZXN0KENPTU1BTkRfU1RBVCk7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGludXhfc2VjY29t cC5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgv c3lzdGVtX2hlYWRlcnMvbGludXhfc2VjY29tcC5oCi1AQCAtMjksNiArMjksOSBAQAotICNpZm5k ZWYgRU1fQUFSQ0g2NAotICNkZWZpbmUgRU1fQUFSQ0g2NCAxODMKLSAjZW5kaWYKLSsjaWZuZGVm IEVNX1BQQzY0Ci0rI2RlZmluZSBFTV9QUEM2NCAyMQotKyNlbmRpZgotIAotICNpZm5kZWYgX19B VURJVF9BUkNIXzY0QklUCi0gI2RlZmluZSBfX0FVRElUX0FSQ0hfNjRCSVQgMHg4MDAwMDAwMAot QEAgLTU0LDYgKzU3LDEyIEBACi0gI2lmbmRlZiBBVURJVF9BUkNIX0FBUkNINjQKLSAjZGVmaW5l IEFVRElUX0FSQ0hfQUFSQ0g2NCAoRU1fQUFSQ0g2NCB8IF9fQVVESVRfQVJDSF82NEJJVCB8IF9f QVVESVRfQVJDSF9MRSkKLSAjZW5kaWYKLSsjaWZuZGVmIEFVRElUX0FSQ0hfUFBDNjQKLSsjZGVm aW5lIEFVRElUX0FSQ0hfUFBDNjQgKEVNX1BQQzY0IHwgX19BVURJVF9BUkNIXzY0QklUKQotKyNl bmRpZgotKyNpZm5kZWYgQVVESVRfQVJDSF9QUEM2NExFCi0rI2RlZmluZSBBVURJVF9BUkNIX1BQ QzY0TEUgKEVNX1BQQzY0IHwgX19BVURJVF9BUkNIXzY0QklUIHwgX19BVURJVF9BUkNIX0xFKQot KyNlbmRpZgotIAotIC8vIEZvciBwcmN0bC5oCi0gI2lmbmRlZiBQUl9TRVRfU0VDQ09NUAotLS0t IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3N5c3RlbV9o ZWFkZXJzL2xpbnV4X3NpZ25hbC5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGludXhfc2lnbmFsLmgKLUBAIC0xMyw3 ICsxMyw3IEBACi0gLy8gKG5vdCB1bmRlZmluZWQsIGJ1dCBkZWZpbmVkIGRpZmZlcmVudCB2YWx1 ZXMgYW5kIGluIGRpZmZlcmVudCBtZW1vcnkKLSAvLyBsYXlvdXRzKS4gU28sIGZpbGwgdGhlIGdh cCBoZXJlLgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8 IGRlZmluZWQoX19hcm1fXykgfHwgXAotLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyAgICBk ZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gCi0gI2RlZmlu ZSBMSU5VWF9TSUdIVVAgMQotICNkZWZpbmUgTElOVVhfU0lHSU5UIDIKLS0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51 eF9zeXNjYWxscy5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRi b3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGludXhfc3lzY2FsbHMuaAotQEAgLTM1LDUgKzM1LDkg QEAKLSAjaW5jbHVkZSAic2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9hcm02NF9saW51eF9z eXNjYWxscy5oIgotICNlbmRpZgotIAotKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rI2lu Y2x1ZGUgInNhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvcHBjNjRfbGludXhfc3lzY2FsbHMu aCIKLSsjZW5kaWYKLSsKLSAjZW5kaWYgIC8vIFNBTkRCT1hfTElOVVhfU1lTVEVNX0hFQURFUlNf TElOVVhfU1lTQ0FMTFNfSF8KLSAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51eF91Y29udGV4dC5oCi0rKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRl cnMvbGludXhfdWNvbnRleHQuaAotQEAgLTExLDYgKzExLDggQEAKLSAjaW5jbHVkZSAic2FuZGJv eC9saW51eC9zeXN0ZW1faGVhZGVycy9hcm1fbGludXhfdWNvbnRleHQuaCIKLSAjZWxpZiBkZWZp bmVkKF9faTM4Nl9fKQotICNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2kz ODZfbGludXhfdWNvbnRleHQuaCIKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rI2lu Y2x1ZGUgInNhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvcHBjNjRfbGludXhfdWNvbnRleHQu aCIKLSAjZWxzZQotICNlcnJvciAiTm8gc3VwcG9ydCBmb3IgeW91ciBhcmNoaXRlY3R1cmUgaW4g UE5hQ2wgaGVhZGVyIgotICNlbmRpZgotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251 bGwKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9z eXN0ZW1faGVhZGVycy9wcGM2NF9saW51eF9zeXNjYWxscy5oCi1AQCAtMCwwICsxLDEyIEBACi0r Ly8gQ29weXJpZ2h0IDIwMTQgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2 ZWQuCi0rLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5 bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0r Ci0rI2lmbmRlZiBTQU5EQk9YX0xJTlVYX1NZU1RFTV9IRUFERVJTX1BQQzY0X0xJTlVYX1NZU0NB TExTX0hfCi0rI2RlZmluZSBTQU5EQk9YX0xJTlVYX1NZU1RFTV9IRUFERVJTX1BQQzY0X0xJTlVY X1NZU0NBTExTX0hfCi0rCi0rI2luY2x1ZGUgPGFzbS91bmlzdGQuaD4KLSsKLSsvL1RPRE86IGlz IGl0IG5lY2Vzc2FyeSB0byByZWRlZmluZSBzeXNjYWxsIG51bWJlcnMgZm9yIFBQQzY0PwotKwot KyNlbmRpZiAgLy8gU0FOREJPWF9MSU5VWF9TWVNURU1fSEVBREVSU19QUEM2NF9MSU5VWF9TWVND QUxMU19IXwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9w cGM2NF9saW51eF91Y29udGV4dC5oCi1AQCAtMCwwICsxLDEyIEBACi0rLy8gQ29weXJpZ2h0IDIw MTQgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rLy8gVXNlIG9m IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0 IGNhbiBiZQotKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0rCi0rI2lmbmRlZiBTQU5E Qk9YX0xJTlVYX1NZU1RFTV9IRUFERVJTX1BQQzY0X0xJTlVYX1VDT05URVhUX0hfCi0rI2RlZmlu ZSBTQU5EQk9YX0xJTlVYX1NZU1RFTV9IRUFERVJTX1BQQzY0X0xJTlVYX1VDT05URVhUX0hfCi0r Ci0rI2luY2x1ZGUgPHN5cy91Y29udGV4dC5oPgotKwotKy8vVE9ETzogaXMgaXQgbmVjZXNzYXJ5 IHRvIHJlZGVmaW5lIHVjb250ZXh0IG9uIFBQQzY0PwotKwotKyNlbmRpZiAgLy8gU0FOREJPWF9M SU5VWF9TWVNURU1fSEVBREVSU19QUEM2NF9MSU5VWF9VQ09OVEVYVF9IXwotLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zZXJ2aWNlcy9zZXJ2aWNlX21hbmFnZXIvc2FuZGJv eC9saW51eC9icGZfcmVuZGVyZXJfcG9saWN5X2xpbnV4LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3NlcnZpY2VzL3NlcnZpY2VfbWFuYWdlci9zYW5kYm94L2xpbnV4 L2JwZl9yZW5kZXJlcl9wb2xpY3lfbGludXguY2MKLUBAIC0xNSw2ICsxNSwxMSBAQAotICNpbmNs dWRlICJzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3N5c2NhbGxzLmgiCi0gI2lu Y2x1ZGUgInNlcnZpY2VzL3NlcnZpY2VfbWFuYWdlci9zYW5kYm94L2xpbnV4L3NhbmRib3hfbGlu dXguaCIKLSAKLSsvLyBPbiBQUEM2NCwgVENHRVRTIGlzIGRlZmluZWQgaW4gdGVybXMgb2Ygc3Ry dWN0IHRlcm1pb3MsIHNvIHdlIG11c3QgaW5jbHVkZSB0ZXJtaW9zLmgKLSsjaWZkZWYgX19wb3dl cnBjNjRfXwotKyNpbmNsdWRlIDx0ZXJtaW9zLmg+Ci0rI2VuZGlmCi0rCi0gLy8gVE9ETyh2aWdu YXR0aSk6IHJlcGxhY2UgdGhlIGxvY2FsIGRlZmluaXRpb25zIGJlbG93IHdpdGggI2luY2x1ZGUK LSAvLyA8bGludXgvZG1hLWJ1Zi5oPiBvbmNlIGtlcm5lbCB2ZXJzaW9uIDQuNiBiZWNvbWVzIHdp ZGVseSB1c2VkLgotICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgotLS0tIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9hbmdsZS9zcmMvbGliQU5HTEUvQ29uc3Rh bnRzLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv YW5nbGUvc3JjL2xpYkFOR0xFL0NvbnN0YW50cy5oCi1AQCAtOSw2ICs5LDcgQEAKLSAjaWZuZGVm IExJQkFOR0xFX0NPTlNUQU5UU19IXwotICNkZWZpbmUgTElCQU5HTEVfQ09OU1RBTlRTX0hfCi0g Ci0rI2luY2x1ZGUgPGNzdGRkZWY+Ci0gI2luY2x1ZGUgImNvbW1vbi9wbGF0Zm9ybS5oIgotIAot IG5hbWVzcGFjZSBnbAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9oZWFwL2FzbS9CVUlMRC5nbgotKysrIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJl ci9wbGF0Zm9ybS9oZWFwL2FzbS9CVUlMRC5nbgotQEAgLTQ2LDYgKzQ2LDEwIEBAIGlmIChjdXJy ZW50X2NwdSA9PSAieDg2IiB8fCBjdXJyZW50X2NwdSA9PSAieDY0IikgewotICAgICAgIHNvdXJj ZXMgPSBbCi0gICAgICAgICAiU2F2ZVJlZ2lzdGVyc19taXBzNjQuUyIsCi0gICAgICAgXQotKyAg ICB9IGVsc2UgaWYgKGN1cnJlbnRfY3B1ID09ICJwcGM2NCIpIHsKLSsgICAgICBzb3VyY2VzID0g WwotKyAgICAgICAgIlNhdmVSZWdpc3RlcnNfcHBjNjQuUyIsCi0rICAgICAgXQotICAgICB9Ci0g Ci0gICAgIGlmIChjdXJyZW50X2NwdSA9PSAiYXJtIikgewotbmV3IGZpbGUgbW9kZSAxMDA2NDQK LS0tLSAvZGV2L251bGwKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vaGVhcC9hc20vU2F2ZVJlZ2lzdGVyc19w cGM2NC5TCi1AQCAtMCwwICsxLDYwIEBACi0rLyoKLSsgKiB0eXBlZGVmIHZvaWQgKCpQdXNoQWxs UmVnaXN0ZXJzQ2FsbGJhY2spKFNhZmVQb2ludEJhcnJpZXIqLCBUaHJlYWRTdGF0ZSosIGludHB0 cl90Kik7Ci0rICogZXh0ZXJuICJDIiB2b2lkIFB1c2hBbGxSZWdpc3RlcnMoU2FmZVBvaW50QmFy cmllciosIFRocmVhZFN0YXRlKiwgUHVzaEFsbFJlZ2lzdGVyc0NhbGxiYWNrKQotKyAqLwotKwot Ky50eXBlIFB1c2hBbGxSZWdpc3RlcnMsICVmdW5jdGlvbgotKy5nbG9iYWwgUHVzaEFsbFJlZ2lz dGVycwotKy5oaWRkZW4gUHVzaEFsbFJlZ2lzdGVycwotK1B1c2hBbGxSZWdpc3RlcnM6Ci0rICAg ICAgICAvLyBQdXNoIGFsbCBjYWxsZWUtc2F2ZXMgcmVnaXN0ZXJzIHRvIGdldCB0aGVtCi0rICAg ICAgICAvLyBvbiB0aGUgc3RhY2sgZm9yIGNvbnNlcnZhdGl2ZSBzdGFjayBzY2FubmluZy4KLSsg ICAgICAgIC8vIFJlc2VydmUgc3BhY2UgZm9yIGNhbGxlZS1zYXZlZCByZWdpc3RlcnMgYW5kIG1p bmltYWwgc3RhY2sgZnJhbWUuCi0rICAgICAgICBtZmxyIDAgICAgICAgICAjIHIwID0gTFIKLSsg ICAgICAgIHN0ZCAwLDE2KDEpICAgICMgc3RvcmUgTFIgYXQgYWRkciBzcCsxNgotKyAgICAgICAg c3RkdSAxLC0xNzYoMSkgIyBncm93IHN0YWNrIGJ5IDE3NiBieXRlcyBhbmQgc3RvcmUgbmV3IHN0 YWNrIHRvcCBwdHIgdG8gcjEKLSsgICAgICAgICAgICAjIDMyMTgqOCA9IG1pbiBzdGFjayAgbm9u LXZvbGF0aWxlIHJlZ2lzdGVycwotKwotKyAgICAgICAgLy8gU2F2ZSB0aGUgY2FsbGVlLXNhdmVk IHJlZ2lzdGVycwotKyAgICAgICAgc3RkIDMxLDE2OCgxKSAgIyBzdG9yZSByMzEgdG8gYWRkciBz cCsxNjggCi0rICAgICAgICBzdGQgMzAsMTYwKDEpICAjIGV0Yy4uLgotKyAgICAgICAgc3RkIDI5 LDE1MigxKQotKyAgICAgICAgc3RkIDI4LDE0NCgxKQotKyAgICAgICAgc3RkIDI3LDEzNigxKQot KyAgICAgICAgc3RkIDI2LDEyOCgxKQotKyAgICAgICAgc3RkIDI1LDEyMCgxKQotKyAgICAgICAg c3RkIDI0LDExMigxKQotKyAgICAgICAgc3RkIDIzLDEwNCgxKQotKyAgICAgICAgc3RkIDIyLDk2 KDEpCi0rICAgICAgICBzdGQgMjEsODgoMSkKLSsgICAgICAgIHN0ZCAyMCw4MCgxKQotKyAgICAg ICAgc3RkIDE5LDcyKDEpCi0rICAgICAgICBzdGQgMTgsNjQoMSkKLSsgICAgICAgIHN0ZCAxNyw1 NigxKQotKyAgICAgICAgc3RkIDE2LDQ4KDEpCi0rICAgICAgICBzdGQgMTUsNDAoMSkKLSsgICAg ICAgIHN0ZCAxNCwzMigxKQotKyAgICAgICAgCi0rICAgICAgICAvLyBOb3RlOiB0aGUgY2FsbGVl LXNhdmVkIGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycyBkbyBub3QgbmVlZCB0byBiZQotKyAgICAg ICAgLy8gY29waWVkIHRvIHRoZSBzdGFjaywgYmVjYXVzZSBmcCByZWdpc3RlcnMgbmV2ZXIgaG9s ZCBoZWFwIHBvaW50ZXJzCi0rICAgICAgICAvLyBhbmQgc28gZG8gbm90IG5lZWQgdG8gYmUga2Vw dCB2aXNpYmxlIHRvIHRoZSBnYXJiYWdlIGNvbGxlY3Rvci4KLSsgICAgICAgIAotKyAgICAgICAg Ly8gUGFzcyB0aGUgdHdvIGZpcnN0IGFyZ3VtZW50cyB1bnRvdWNoZWQgaW4gcjMgYW5kIHI0IGFu ZCB0aGUKLSsgICAgICAgIC8vIHN0YWNrIHBvaW50ZXIgdG8gdGhlIGNhbGxiYWNrLgotKwotKyAg ICAgICAgc3RkIDIsIDI0KDEpICAgIyBzYXZlIHIyIHRvIHNwKzI0IGFkZHIKLSsgICAgICAgIG10 Y3RyIDUgICAgICAgICMgY29weSAzcmQgZnVuY3Rpb24gYXJnIChjYWxsYmFjayBmbiBwb2ludGVy KSB0byBDVFIKLSsgICAgICAgIG1yIDEyLCA1ICAgICAgICMgcjEyIG11c3QgaG9sZCBhZGRyZXNz IG9mIGNhbGxiYWNrIHdlIGFyZSBnb2luZyB0byBjYWxsIAotKyAgICAgICAgICAgICAgICAgICAg ICAgIyAgZm9yIHBvc2l0aW9uLWlkZXBlbmRlbnQgZnVuY3Rpb25zIGluc2lkZSB0aGUgY2FsbGJh Y2sgdG8gd29yawotKyAgICAgICAgbXIgNSwgMSAgICAgICAgIyBzZXQgY3VycmVudCBzcCAoc3Rh Y2sgdG9wKSBhcyAzcmQgYXJndW1lbnQgZm9yIHRoZSBjYWxsYmFjawotKyAgICAgICAgYmN0cmwg ICAgICAgICAgIyBzZXQgTFIgdG8gUEMrNCBhbmQgY2FsbCB0aGUgY2FsbGJhY2sKLSsgICAgICAg IGxkIDIsIDI0KDEpICAgICMgcmVzdG9yZSByMiBmcm9tIHNwKzI0IGFkZHIKLSsKLSsgICAgICAg IC8vIEFkanVzdCBzdGFjaywgcmVzdG9yZSByZXR1cm4gYWRkcmVzcyBhbmQgcmV0dXJuLgotKyAg ICAgICAgLy8gTm90ZTogdGhlIGNvcGllZCByZWdpc3RlcnMgZG8gbm90IG5lZWQgdG8gYmUgcmVs b2FkZWQgaGVyZSwKLSsgICAgICAgIC8vIGJlY2F1c2UgdGhleSB3ZXJlIHByZXNlcnZlZCBieSB0 aGUgY2FsbGVkIHJvdXRpbmUuCi0rICAgICAgICBhZGRpIDEsMSwxNzYgICAjIHJlc3RvcmUgb3Jp Z2luYWwgU1AgYnkgZG9pbmcgc3AgKz0gMTc2Ci0rICAgICAgICBsZCAwLDE2KDEpICAgICAjIHJl c3RvcmUgb3JpZ2luYWwgTFIgZnJvbSBhZGRyIHNwKzE2Ci0rICAgICAgICBtdGxyIDAgICAgICAg ICAjIC4uLiBjb3B5IGl0IHRvIHRoZSBhY3R1YWwgTFIKLSsgICAgICAgIGJsciAgICAgICAgICAg ICMgcmV0dXJuIHRvIExSIGFkZHIKLSsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vaGVhcC9oZWFwX3BhZ2Uu aAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGlu ay9yZW5kZXJlci9wbGF0Zm9ybS9oZWFwL2hlYXBfcGFnZS5oCi1AQCAtNjcsMTEgKzY3LDEyIEBA IGNvbnN0ZXhwciBzaXplX3Qga0JsaW5rUGFnZUJhc2VNYXNrID0gfmtCbGlua1BhZ2VPZmZzZXRN YXNrOwotIGNvbnN0ZXhwciBzaXplX3Qga0JsaW5rUGFnZXNQZXJSZWdpb24gPSAxMDsKLSAKLSAv LyBUT0RPKG55YSk6IFJlcGxhY2UgdGhpcyB3aXRoIHNvbWV0aGluZyBsaWtlICNpZiBFTkFCTEVf TkFDTC4KLS0jaWYgMAotKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQotIC8vIE5hQ2wncyBz eXN0ZW0gcGFnZSBzaXplIGlzIDY0IEtpQi4gVGhpcyBjYXVzZXMgYSBwcm9ibGVtIGluIE9pbHBh bidzIGhlYXAKLSAvLyBsYXlvdXQgYmVjYXVzZSBPaWxwYW4gYWxsb2NhdGVzIHR3byBndWFyZCBw YWdlcyBmb3IgZWFjaCBCbGluayBwYWdlICh3aG9zZQotIC8vIHNpemUgaXMga0JsaW5rUGFnZVNp emUgPSAyXjE3ID0gMTI4IEtpQikuIFNvIHdlIGRvbid0IHVzZSBndWFyZCBwYWdlcyBpbgotIC8v IE5hQ2wuCi0rLy8gVGhlIHNhbWUgaXNzdWUgaG9sZHMgZm9yIHBwYzY0IHN5c3RlbXMsIHdoaWNo IHVzZSBhIDY0ayBwYWdlIHNpemUuCi0gY29uc3RleHByIHNpemVfdCBrQmxpbmtHdWFyZFBhZ2VT aXplID0gMDsKLSAjZWxzZQotIGNvbnN0ZXhwciBzaXplX3Qga0JsaW5rR3VhcmRQYWdlU2l6ZSA9 IGJhc2U6OmtTeXN0ZW1QYWdlU2l6ZTsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vd3RmL2R0b2EvdXRpbHMu aAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGlu ay9yZW5kZXJlci9wbGF0Zm9ybS93dGYvZHRvYS91dGlscy5oCi1AQCAtNDUsNyArNDUsNyBAQAot IC8vIGRpc2FibGVkLikKLSAvLyBPbiBMaW51eCx4ODYgODkyNTVlLTIyICE9IERpdl9kb3VibGUo ODkyNTUuMC8xZTIyKQotICNpZiBkZWZpbmVkKF9NX1g2NCkgfHwgZGVmaW5lZChfX3g4Nl82NF9f KSB8fCBkZWZpbmVkKF9fQVJNRUxfXykgfHwgXAotLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8 fCBkZWZpbmVkKF9fTUlQU0VMX18pCi0rICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmlu ZWQoX19NSVBTRUxfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICNkZWZpbmUgRE9VQkxF X0NPTlZFUlNJT05fQ09SUkVDVF9ET1VCTEVfT1BFUkFUSU9OUyAxCi0gI2VsaWYgZGVmaW5lZChf TV9JWDg2KSB8fCBkZWZpbmVkKF9faTM4Nl9fKQotICNpZiBkZWZpbmVkKF9XSU4zMikKLS0tLSBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL0JV SUxELmduCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2JvcmluZ3NzbC9CVUlMRC5nbgotQEAgLTEwMCw2ICsxMDAsMTMgQEAgaWYgKGlzX3dpbiAmJiAh aXNfbXNhbiAmJiBjdXJyZW50X2NwdSAhPSAiYXJtNjQiKSB7Ci0gICAgICAgfSBlbHNlIHsKLSAg ICAgICAgIHB1YmxpY19jb25maWdzID0gWyAiOm5vX2FzbV9jb25maWciIF0KLSAgICAgICB9Ci0r ICAgIH0gZWxzZSBpZiAoY3VycmVudF9jcHUgPT0gInBwYzY0IikgewotKyAgICAgIGlmIChpc19s aW51eCkgewotKyAgICAgICAgIyBUT0RPOiBwcGM2NCAoYmUpIGNoZWNrCi0rICAgICAgICBzb3Vy Y2VzICs9IGNyeXB0b19zb3VyY2VzX2xpbnV4X3BwYzY0bGUKLSsgICAgICB9IGVsc2UgewotKyAg ICAgICAgcHVibGljX2NvbmZpZ3MgPSBbICI6bm9fYXNtX2NvbmZpZyIgXQotKyAgICAgIH0KLSAg ICAgfSBlbHNlIHsKLSAgICAgICBwdWJsaWNfY29uZmlncyA9IFsgIjpub19hc21fY29uZmlnIiBd Ci0gICAgIH0KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24v cmF3X2NvbnRleHRfY3B1LmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRl cl9jb21tb24vcmF3X2NvbnRleHRfY3B1LmgKLUBAIC00NCw2ICs0NCw4IEBAIHR5cGVkZWYgTURS YXdDb250ZXh0QVJNIFJhd0NvbnRleHRDUFU7Ci0gdHlwZWRlZiBNRFJhd0NvbnRleHRBUk02NF9P bGQgUmF3Q29udGV4dENQVTsKLSAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQotIHR5cGVkZWYgTURS YXdDb250ZXh0TUlQUyBSYXdDb250ZXh0Q1BVOwotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRf XykKLSt0eXBlZGVmIE1EUmF3Q29udGV4dFBQQzY0IFJhd0NvbnRleHRDUFU7Ci0gI2Vsc2UKLSAj ZXJyb3IgIlRoaXMgY29kZSBoYXMgbm90IGJlZW4gcG9ydGVkIHRvIHlvdXIgcGxhdGZvcm0geWV0 LiIKLSAjZW5kaWYKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRf cGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21t b24vdGhyZWFkX2luZm8uY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRl cl9jb21tb24vdGhyZWFkX2luZm8uY2MKLUBAIC0yNzAsNyArMjcwLDQyIEBAIHZvaWQgVGhyZWFk SW5mbzo6RmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSogb3V0KSBjb25zdCB7Ci0gICBvdXQt PmZsb2F0X3NhdmUuZmlyID0gbWNvbnRleHQuZnBjX2VpcjsKLSAjZW5kaWYKLSB9Ci0tI2VuZGlm ICAvLyBfX21pcHNfXwotKwotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsKLSt1aW50 cHRyX3QgVGhyZWFkSW5mbzo6R2V0SW5zdHJ1Y3Rpb25Qb2ludGVyKCkgY29uc3QgewotKyAgICBy ZXR1cm4gbWNvbnRleHQuZ3BfcmVnc1tQVF9OSVBdOwotK30KLSsKLSt2b2lkIFRocmVhZEluZm86 OkZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUqIG91dCkgY29uc3QgewotKyAgICBvdXQtPmNv bnRleHRfZmxhZ3MgPSBNRF9DT05URVhUX1BQQzY0X0ZVTEw7Ci0rICAgIGZvciAoaW50IGkgPSAw OyBpIDwgTURfQ09OVEVYVF9QUEM2NF9HUFJfQ09VTlQ7IGkrKykKLSsgICAgICAgIG91dC0+Z3By W2ldID0gbWNvbnRleHQuZ3BfcmVnc1tpXTsKLSsKLSsgICAgb3V0LT5sciA9IG1jb250ZXh0Lmdw X3JlZ3NbUFRfTE5LXTsKLSsgICAgb3V0LT5zcnIwID0gbWNvbnRleHQuZ3BfcmVnc1tQVF9OSVBd OwotKyAgICBvdXQtPnNycjEgPSBtY29udGV4dC5ncF9yZWdzW1BUX01TUl07Ci0rICAgIG91dC0+ Y3IgPSBtY29udGV4dC5ncF9yZWdzW1BUX0NDUl07Ci0rICAgIG91dC0+eGVyID0gbWNvbnRleHQu Z3BfcmVnc1tQVF9YRVJdOwotKyAgICBvdXQtPmN0ciA9IG1jb250ZXh0LmdwX3JlZ3NbUFRfQ1RS XTsKLSsgICAgCi0rICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTURfRkxPQVRJTkdTQVZFQVJFQV9Q UENfRlBSX0NPVU5UOyBpKyspCi0rICAgICAgICBvdXQtPmZsb2F0X3NhdmUuZnByZWdzW2ldID0g bWNvbnRleHQuZnBfcmVnc1tpXTsKLSsKLSsgICAgb3V0LT5mbG9hdF9zYXZlLmZwc2NyID0gbWNv bnRleHQuZnBfcmVnc1tORlBSRUctMV07Ci0rCi0rICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTURf VkVDVE9SU0FWRUFSRUFfUFBDX1ZSX0NPVU5UOyBpKyspCi0rICAgICAgICBvdXQtPnZlY3Rvcl9z YXZlLnNhdmVfdnJbaV0gPSBcCi0rICAgICAgICAgICAgeygoKHVpbnQ2NF90KXZyZWdzLnZycmVn c1tpXVswXSkgPDwgMzIpIAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgfCB2cmVncy52cnJl Z3NbaV1bMV0sIAotKyAgICAgICAgICAgICgoKHVpbnQ2NF90KXZyZWdzLnZycmVnc1tpXVsyXSkg PDwgMzIpCi0rICAgICAgICAgICAgICAgICAgICAgICAgIHwgdnJlZ3MudnJyZWdzW2ldWzNdfTsK LSsKLSsgICAgb3V0LT52cnNhdmUgPSB2cmVncy52cnNhdmU7Ci0rICAgIG91dC0+dmVjdG9yX3Nh dmUuc2F2ZV92c2NyID0gezAsIHZyZWdzLnZzY3IudnNjcl93b3JkfTsKLSsgICAgb3V0LT52ZWN0 b3Jfc2F2ZS5zYXZlX3ZydmFsaWQgPSAweEZGRkZGRkZGOyAKLSt9Ci0rI2VuZGlmICAvLyBfX3Bv d2VycGM2NF9fCi0gCi0gdm9pZCBUaHJlYWRJbmZvOjpHZXRHZW5lcmFsUHVycG9zZVJlZ2lzdGVy cyh2b2lkKiogZ3BfcmVncywgc2l6ZV90KiBzaXplKSB7Ci0gICBhc3NlcnQoZ3BfcmVncyB8fCBz aXplKTsKLUBAIC0yNzksNiArMzE0LDExIEBAIHZvaWQgVGhyZWFkSW5mbzo6R2V0R2VuZXJhbFB1 cnBvc2VSZWdpc3RlcnModm9pZCoqIGdwX3JlZ3MsIHNpemVfdCogc2l6ZSkgewotICAgICAqZ3Bf cmVncyA9IG1jb250ZXh0LmdyZWdzOwotICAgaWYgKHNpemUpCi0gICAgICpzaXplID0gc2l6ZW9m KG1jb250ZXh0LmdyZWdzKTsKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICBpZiAo Z3BfcmVncykKLSsgICAgKmdwX3JlZ3MgPSBtY29udGV4dC5ncF9yZWdzOwotKyAgaWYgKHNpemUp Ci0rICAgICpzaXplID0gc2l6ZW9mKG1jb250ZXh0LmdwX3JlZ3MpOwotICNlbHNlCi0gICBpZiAo Z3BfcmVncykKLSAgICAgKmdwX3JlZ3MgPSAmcmVnczsKLUBAIC0yOTQsNiArMzM0LDExIEBAIHZv aWQgVGhyZWFkSW5mbzo6R2V0RmxvYXRpbmdQb2ludFJlZ2lzdGVycyh2b2lkKiogZnBfcmVncywg c2l6ZV90KiBzaXplKSB7Ci0gICAgICpmcF9yZWdzID0gJm1jb250ZXh0LmZwcmVnczsKLSAgIGlm IChzaXplKQotICAgICAqc2l6ZSA9IHNpemVvZihtY29udGV4dC5mcHJlZ3MpOwotKyNlbGlmIGRl ZmluZWQoX19wb3dlcnBjNjRfXykKLSsgIGlmIChmcF9yZWdzKQotKyAgICAqZnBfcmVncyA9ICZt Y29udGV4dC5mcF9yZWdzOwotKyAgaWYgKHNpemUpCi0rICAgICpzaXplID0gc2l6ZW9mKG1jb250 ZXh0LmZwX3JlZ3MpOwotICNlbHNlCi0gICBpZiAoZnBfcmVncykKLSAgICAgKmZwX3JlZ3MgPSAm ZnByZWdzOwotQEAgLTMwMiw0ICszNDcsMTMgQEAgdm9pZCBUaHJlYWRJbmZvOjpHZXRGbG9hdGlu Z1BvaW50UmVnaXN0ZXJzKHZvaWQqKiBmcF9yZWdzLCBzaXplX3QqIHNpemUpIHsKLSAjZW5kaWYK LSB9Ci0gCi0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSt2b2lkIFRocmVhZEluZm86Okdl dFZlY3RvclJlZ2lzdGVycyh2b2lkKiogdl9yZWdzLCBzaXplX3QqIHNpemUpIHsKLSsgICAgaWYg KHZfcmVncykKLSsgICAgICAgICp2X3JlZ3MgPSAmdnJlZ3M7Ci0rICAgIGlmIChzaXplKQotKyAg ICAgICAgKnNpemUgPSBzaXplb2YodnJlZ3MpOwotK30KLSsjZW5kaWYKLSsKLSB9ICAvLyBuYW1l c3BhY2UgZ29vZ2xlX2JyZWFrcGFkCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93 cml0ZXJfY29tbW9uL3RocmVhZF9pbmZvLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9k dW1wX3dyaXRlcl9jb21tb24vdGhyZWFkX2luZm8uaAotQEAgLTY4LDYgKzY4LDEwIEBAIHN0cnVj dCBUaHJlYWRJbmZvIHsKLSAgIC8vIFVzZSB0aGUgc3RydWN0dXJlcyBkZWZpbmVkIGluIDxzeXMv dXNlci5oPgotICAgc3RydWN0IHVzZXJfcmVnc19zdHJ1Y3QgcmVnczsKLSAgIHN0cnVjdCB1c2Vy X2Zwc2ltZF9zdHJ1Y3QgZnByZWdzOwotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsg IC8vIFVzZSB0aGUgc3RydWN0dXJlcyBkZWZpbmVkIGluIDxzeXMvdWNvbnRleHQuaD4uCi0rICBt Y29udGV4dF90IG1jb250ZXh0OwotKyAgdnJyZWdzZXRfdCB2cmVnczsKLSAjZWxpZiBkZWZpbmVk KF9fbWlwc19fKQotICAgLy8gVXNlIHRoZSBzdHJ1Y3R1cmUgZGVmaW5lZCBpbiA8c3lzL3Vjb250 ZXh0Lmg+LgotICAgbWNvbnRleHRfdCBtY29udGV4dDsKLUBAIC04NCw2ICs4OCwxMSBAQCBzdHJ1 Y3QgVGhyZWFkSW5mbyB7Ci0gCi0gICAvLyBSZXR1cm5zIHRoZSBwb2ludGVyIGFuZCBzaXplIG9m IGZsb2F0IHBvaW50IHJlZ2lzdGVyIGFyZWEuCi0gICB2b2lkIEdldEZsb2F0aW5nUG9pbnRSZWdp c3RlcnModm9pZCoqIGZwX3JlZ3MsIHNpemVfdCogc2l6ZSk7Ci0rCi0rI2lmIGRlZmluZWQoX19w b3dlcnBjNjRfXykKLSsgIC8vIFJldHVybnMgdGhlIHBvaW50ZXIgYW5kIHNpemUgb2YgdGhlIHZl Y3RvciByZWdpc3RlciBhcmVhLiAoUFBDNjQgb25seSkKLSsgIHZvaWQgR2V0VmVjdG9yUmVnaXN0 ZXJzKHZvaWQqKiB2X3JlZ3MsIHNpemVfdCogc2l6ZSk7Ci0rI2VuZGlmCi0gfTsKLSAKLSB9ICAv LyBuYW1lc3BhY2UgZ29vZ2xlX2JyZWFrcGFkCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgv ZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5jYwotKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xp ZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuY2MKLUBAIC0yNTQs NiArMjU0LDQ4IEBAIHZvaWQgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KFJhd0NvbnRl eHRDUFUgKm91dCwgY29uc3QgdWNvbnRleHRfdCAqdWMpIHsKLSAgIG91dC0+ZmxvYXRfc2F2ZS5m aXIgPSB1Yy0+dWNfbWNvbnRleHQuZnBjX2VpcjsgIC8vIFVudXNlZC4KLSAjZW5kaWYKLSB9Ci0r Ci0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKwotK3VpbnRwdHJfdCBVQ29udGV4dFJl YWRlcjo6R2V0U3RhY2tQb2ludGVyKGNvbnN0IHVjb250ZXh0X3QqIHVjKSB7Ci0rICAgIHJldHVy biB1Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tNRF9DT05URVhUX1BQQzY0X1JFR19TUF07Ci0rfQot KwotK3VpbnRwdHJfdCBVQ29udGV4dFJlYWRlcjo6R2V0SW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0 IHVjb250ZXh0X3QqIHVjKSB7Ci0rICAgIHJldHVybiB1Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQ VF9OSVBdOwotK30KLSsKLSt2b2lkIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChSYXdD b250ZXh0Q1BVKiBvdXQsIGNvbnN0IHVjb250ZXh0X3QqIHVjLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IHZycmVnc2V0X3QqIHZyZWdzKSB7Ci0rICAgIG91dC0+ Y29udGV4dF9mbGFncyA9IE1EX0NPTlRFWFRfUFBDNjRfRlVMTDsKLSsKLSsgICAgZm9yIChpbnQg aSA9IDA7IGkgPCBNRF9DT05URVhUX1BQQzY0X0dQUl9DT1VOVDsgaSsrKQotKyAgICAgICAgb3V0 LT5ncHJbaV0gPSB1Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tpXTsKLSsKLSsgICAgb3V0LT5sciA9 IHVjLT51Y19tY29udGV4dC5ncF9yZWdzW1BUX0xOS107ICAgIAotKyAgICBvdXQtPnNycjAgPSB1 Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9OSVBdOwotKyAgICBvdXQtPnNycjEgPSB1Yy0+dWNf bWNvbnRleHQuZ3BfcmVnc1tQVF9NU1JdOwotKyAgICBvdXQtPmNyID0gdWMtPnVjX21jb250ZXh0 LmdwX3JlZ3NbUFRfQ0NSXTsKLSsgICAgb3V0LT54ZXIgPSB1Yy0+dWNfbWNvbnRleHQuZ3BfcmVn c1tQVF9YRVJdOwotKyAgICBvdXQtPmN0ciA9IHVjLT51Y19tY29udGV4dC5ncF9yZWdzW1BUX0NU Ul07Ci0rICAgIAotKyAgICBmb3IgKGludCBpID0gMDsgaSA8IE1EX0ZMT0FUSU5HU0FWRUFSRUFf UFBDX0ZQUl9DT1VOVDsgaSsrKQotKyAgICAgICAgb3V0LT5mbG9hdF9zYXZlLmZwcmVnc1tpXSA9 IHVjLT51Y19tY29udGV4dC5mcF9yZWdzW2ldOwotKwotKyAgICBvdXQtPmZsb2F0X3NhdmUuZnBz Y3IgPSB1Yy0+dWNfbWNvbnRleHQuZnBfcmVnc1tORlBSRUctMV07Ci0rCi0rICAgIGZvciAoaW50 IGkgPSAwOyBpIDwgTURfVkVDVE9SU0FWRUFSRUFfUFBDX1ZSX0NPVU5UOyBpKyspCi0rICAgICAg ICBvdXQtPnZlY3Rvcl9zYXZlLnNhdmVfdnJbaV0gPQotKyAgICAgICAgICAgIHsoKCh1aW50NjRf dCl2cmVncy0+dnJyZWdzW2ldWzBdKSA8PCAzMikgCi0rICAgICAgICAgICAgICAgICAgICAgICAg IHwgdnJlZ3MtPnZycmVnc1tpXVsxXSwgCi0rICAgICAgICAgICAgICgoKHVpbnQ2NF90KXZyZWdz LT52cnJlZ3NbaV1bMl0pIDw8IDMyKQotKyAgICAgICAgICAgICAgICAgICAgICAgICB8IHZyZWdz LT52cnJlZ3NbaV1bM119OwotKwotKyAgICBvdXQtPnZyc2F2ZSA9IHZyZWdzLT52cnNhdmU7Ci0r ICAgIG91dC0+dmVjdG9yX3NhdmUuc2F2ZV92c2NyID0gezAsIHZyZWdzLT52c2NyLnZzY3Jfd29y ZH07Ci0rICAgIG91dC0+dmVjdG9yX3NhdmUuc2F2ZV92cnZhbGlkID0gMHhGRkZGRkZGRjsgCi0r fQotKwotICNlbmRpZgotIAotIH0gIC8vIG5hbWVzcGFjZSBnb29nbGVfYnJlYWtwYWQKLS0tLSBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJl YWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVy LmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJl YWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRl eHRfcmVhZGVyLmgKLUBAIC01NCw2ICs1NCw5IEBAIHN0cnVjdCBVQ29udGV4dFJlYWRlciB7Ci0g I2VsaWYgZGVmaW5lZChfX2FhcmNoNjRfXykKLSAgIHN0YXRpYyB2b2lkIEZpbGxDUFVDb250ZXh0 KFJhd0NvbnRleHRDUFUgKm91dCwgY29uc3QgdWNvbnRleHRfdCAqdWMsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZnBzaW1kX2NvbnRleHQqIGZwcmVncyk7Ci0r I2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgc3RhdGljIHZvaWQgRmlsbENQVUNvbnRl eHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dF90ICp1YywKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IHZycmVnc2V0X3QqIHZyZWdzKTsKLSAjZWxzZQotICAg c3RhdGljIHZvaWQgRmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29u dGV4dF90ICp1Yyk7Ci0gI2VuZGlmCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxl ci9leGNlcHRpb25faGFuZGxlci5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRs ZXIvZXhjZXB0aW9uX2hhbmRsZXIuY2MKLUBAIC00NjcsOSArNDY3LDE2IEBAIGJvb2wgRXhjZXB0 aW9uSGFuZGxlcjo6SGFuZGxlU2lnbmFsKGludCAvKnNpZyovLCBzaWdpbmZvX3QqIGluZm8sIHZv aWQqIHVjKSB7Ci0gICAgIG1lbWNweSgmZ19jcmFzaF9jb250ZXh0Xy5mbG9hdF9zdGF0ZSwgZnBf cHRyLAotICAgICAgICAgICAgc2l6ZW9mKGdfY3Jhc2hfY29udGV4dF8uZmxvYXRfc3RhdGUpKTsK LSAgIH0KLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAvLyBPbiBQUEM2NCwgd2Ug bXVzdCBjb3B5IFZSIHN0YXRlCi0rICB1Y29udGV4dF90KiB1Y19wdHIgPSAodWNvbnRleHRfdCop dWM7Ci0rICBpZiAodWNfcHRyLT51Y19tY29udGV4dC52X3JlZ3MpIHsKLSsgICAgbWVtY3B5KCZn X2NyYXNoX2NvbnRleHRfLnZlY3Rvcl9zdGF0ZSwgdWNfcHRyLT51Y19tY29udGV4dC52X3JlZ3Ms Ci0rICAgICAgICAgICBzaXplb2YoZ19jcmFzaF9jb250ZXh0Xy52ZWN0b3Jfc3RhdGUpKTsKLSsg IH0KLSAjZWxpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQot ICAgLy8gRlAgc3RhdGUgaXMgbm90IHBhcnQgb2YgdXNlciBBQkkgb24gQVJNIExpbnV4LgotLSAg Ly8gSW4gY2FzZSBvZiBNSVBTIExpbnV4IEZQIHN0YXRlIGlzIGFscmVhZHkgcGFydCBvZiB1Y29u dGV4dF90Ci0rICAvLyBJbiBjYXNlIG9mIE1JUFMsIExpbnV4IEZQIHN0YXRlIGlzIGFscmVhZHkg cGFydCBvZiB1Y29udGV4dF90Ci0gICAvLyBhbmQgJ2Zsb2F0X3N0YXRlJyBpcyBub3QgYSBtZW1i ZXIgb2YgQ3Jhc2hDb250ZXh0LgotICAgdWNvbnRleHRfdCogdWNfcHRyID0gKHVjb250ZXh0X3Qq KXVjOwotICAgaWYgKHVjX3B0ci0+dWNfbWNvbnRleHQuZnByZWdzKSB7Ci1AQCAtNzA3LDExICs3 MTQsMTkgQEAgYm9vbCBFeGNlcHRpb25IYW5kbGVyOjpXcml0ZU1pbmlkdW1wKCkgewotICAgfQot ICNlbmRpZgotIAotLSNpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fYWFy Y2g2NF9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKLSsjaWYgIWRlZmluZWQoX19BUk1fRUFCSV9f KSAmJiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgIWRlZmluZWQoX19taXBzX18pIFwKLSsgICAg JiYgIWRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgIC8vIEZQVSBzdGF0ZSBpcyBub3QgcGFydCBv ZiBBUk0gRUFCSSB1Y29udGV4dF90LgotICAgbWVtY3B5KCZjb250ZXh0LmZsb2F0X3N0YXRlLCBj b250ZXh0LmNvbnRleHQudWNfbWNvbnRleHQuZnByZWdzLAotICAgICAgICAgIHNpemVvZihjb250 ZXh0LmZsb2F0X3N0YXRlKSk7Ci0gI2VuZGlmCi0rCi0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRf XykKLSsgIC8vIFZlY3RvciByZWdpc3RlcnMgbXVzdCBiZSBjb3BpZWQgb24gUFBDNjQKLSsgIG1l bWNweSgmY29udGV4dC52ZWN0b3Jfc3RhdGUsIGNvbnRleHQuY29udGV4dC51Y19tY29udGV4dC52 X3JlZ3MsCi0rICAgICAgICAgc2l6ZW9mKGNvbnRleHQudmVjdG9yX3N0YXRlKSk7Ci0rI2VuZGlm Ci0rCi0gICBjb250ZXh0LnRpZCA9IHN5c19nZXR0aWQoKTsKLSAKLSAgIC8vIEFkZCBhbiBleGNl cHRpb24gc3RyZWFtIHRvIHRoZSBtaW5pZHVtcCBmb3IgYmV0dGVyIHJlcG9ydGluZy4KLUBAIC03 MzIsNiArNzQ3LDkgQEAgYm9vbCBFeGNlcHRpb25IYW5kbGVyOjpXcml0ZU1pbmlkdW1wKCkgewot ICNlbGlmIGRlZmluZWQoX19taXBzX18pCi0gICBjb250ZXh0LnNpZ2luZm8uc2lfYWRkciA9Ci0g ICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY29udGV4dC5jb250ZXh0LnVjX21jb250ZXh0 LnBjKTsKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICBjb250ZXh0LnNpZ2luZm8u c2lfYWRkciA9Ci0rICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY29udGV4dC5jb250ZXh0 LnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfTklQXSk7Ci0gI2Vsc2UKLSAjZXJyb3IgIlRoaXMgY29k ZSBoYXMgbm90IGJlZW4gcG9ydGVkIHRvIHlvdXIgcGxhdGZvcm0geWV0LiIKLSAjZW5kaWYKLS0t LSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQv YnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmgKLSsr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQv YnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmgKLUBA IC0xOTIsNyArMTkyLDExIEBAIGNsYXNzIEV4Y2VwdGlvbkhhbmRsZXIgewotICAgICBzaWdpbmZv X3Qgc2lnaW5mbzsKLSAgICAgcGlkX3QgdGlkOyAgLy8gdGhlIGNyYXNoaW5nIHRocmVhZC4KLSAg ICAgdWNvbnRleHRfdCBjb250ZXh0OwotLSNpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFk ZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAgIC8vIFBQ QzY0J3MgRlAgc3RhdGUgaXMgYSBwYXJ0IG9mIHVjb250ZXh0X3QgbGlrZSBNSVBTIGJ1dCB0aGUg dmVjdG9yCi0rICAgIC8vIHN0YXRlIGlzIG5vdCwgc28gYSBzdHJ1Y3QgaXMgbmVlZGVkLgotKyAg ICB2c3RhdGVfdCB2ZWN0b3Jfc3RhdGU7Ci0rI2VsaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAm JiAhZGVmaW5lZChfX21pcHNfXykKLSAgICAgLy8gI2lmZGVmIHRoaXMgb3V0IGJlY2F1c2UgRlAg c3RhdGUgaXMgbm90IHBhcnQgb2YgdXNlciBBQkkgZm9yIExpbnV4IEFSTS4KLSAgICAgLy8gSW4g Y2FzZSBvZiBNSVBTIExpbnV4IEZQIHN0YXRlIGlzIGFscmVhZHkgcGFydCBvZiB1Y29udGV4dF90 IHNvCi0gICAgIC8vICdmbG9hdF9zdGF0ZScgaXMgbm90IHJlcXVpcmVkLgotLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9z cmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXJfdW5pdHRlc3QuY2MKLSsr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQv YnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyX3VuaXR0 ZXN0LmNjCi1AQCAtMzA3LDcgKzMwNyw3IEBAIFRFU1QoRXhjZXB0aW9uSGFuZGxlclRlc3QsIFBh cmFsbGVsQ2hpbGRDcmFzaGVzRG9udEhhbmcpIHsKLSAgIH0KLSAKLSAgIC8vIFdhaXQgYSB3aGls ZSB1bnRpbCB0aGUgY2hpbGQgc2hvdWxkIGhhdmUgY3Jhc2hlZC4KLS0gIHVzbGVlcCgxMDAwMDAw KTsKLSsgIHVzbGVlcCgyMDAwMDAwKTsKLSAgIC8vIEtpbGwgdGhlIGNoaWxkIGlmIGl0IGlzIHN0 aWxsIHJ1bm5pbmcuCi0gICBraWxsKGNoaWxkLCBTSUdLSUxMKTsKLSAKLUBAIC01NzYsNiArNTc2 LDggQEAgY29uc3QgdW5zaWduZWQgY2hhciBrSWxsZWdhbEluc3RydWN0aW9uW10gPSB7Ci0gI2lm IGRlZmluZWQoX19taXBzX18pCi0gICAvLyBtZmMyIHplcm8sSW1wbCAtIHVzdWFsbHkgaWxsZWdh bCBpbiB1c2Vyc3BhY2UuCi0gICAweDQ4LCAweDAwLCAweDAwLCAweDQ4Ci0rI2VsaWYgZGVmaW5l ZChfX3Bvd2VycGM2NF9fKQotKyAgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSAvLyBDcmFzaGVzIG9u IGEgdGVzdGVkIFBPV0VSOSBjcHUKLSAjZWxzZQotICAgLy8gVGhpcyBjcmFzaGVzIHdpdGggU0lH SUxMIG9uIHg4Ni94ODYtNjQvYXJtLgotICAgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZgotQEAgLTc3 MSwxMCArNzczLDEwIEBAIFRFU1QoRXhjZXB0aW9uSGFuZGxlclRlc3QsIEluc3RydWN0aW9uUG9p bnRlck1lbW9yeU1heEJvdW5kKSB7Ci0gCi0gICAvLyBUaGVzZSBhcmUgZGVmaW5lZCBoZXJlIHNv IHRoZSBwYXJlbnQgY2FuIHVzZSB0aGVtIHRvIGNoZWNrIHRoZQotICAgLy8gZGF0YSBmcm9tIHRo ZSBtaW5pZHVtcCBhZnRlcndhcmRzLgotLSAgLy8gVXNlIDRrIGhlcmUgYmVjYXVzZSB0aGUgT1Mg d2lsbCBoYW5kIG91dCBhIHNpbmdsZSBwYWdlIGV2ZW4KLSsgIC8vIFVzZSB0aGUgcGFnZSBzaXpl IGhlcmUgYmVjYXVzZSB0aGUgT1Mgd2lsbCBoYW5kIG91dCBhIHNpbmdsZSBwYWdlIGV2ZW4KLSAg IC8vIGlmIGEgc21hbGxlciBzaXplIGlzIHJlcXVlc3RlZCwgYW5kIHRoaXMgdGVzdCB3YW50cyB0 bwotICAgLy8gdGVzdCB0aGUgdXBwZXIgYm91bmQgb2YgdGhlIG1lbW9yeSByYW5nZS4KLS0gIGNv bnN0IHVpbnQzMl90IGtNZW1vcnlTaXplID0gNDA5NjsgIC8vIGJ5dGVzCi0rICBjb25zdCB1aW50 MzJfdCBrTWVtb3J5U2l6ZSA9IGdldHBhZ2VzaXplKCk7ICAvLyBieXRlcwotICAgY29uc3QgaW50 IGtPZmZzZXQgPSBrTWVtb3J5U2l6ZSAtIHNpemVvZihrSWxsZWdhbEluc3RydWN0aW9uKTsKLSAK LSAgIGNvbnN0IHBpZF90IGNoaWxkID0gZm9yaygpOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xp bnV4L21pY3JvZHVtcF93cml0ZXIvbWljcm9kdW1wX3dyaXRlci5jYwotKysrIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMv Y2xpZW50L2xpbnV4L21pY3JvZHVtcF93cml0ZXIvbWljcm9kdW1wX3dyaXRlci5jYwotQEAgLTEz OCw3ICsxMzgsOSBAQCBjbGFzcyBNaWNyb2R1bXBXcml0ZXIgewotICAgICAgICAgICAgICAgICAg IGNvbnN0IE1pY3JvZHVtcEV4dHJhSW5mbyYgbWljcm9kdW1wX2V4dHJhX2luZm8sCi0gICAgICAg ICAgICAgICAgICAgTGludXhEdW1wZXIqIGR1bXBlcikKLSAgICAgICA6IHVjb250ZXh0Xyhjb250 ZXh0ID8gJmNvbnRleHQtPmNvbnRleHQgOiBOVUxMKSwKLS0jaWYgIWRlZmluZWQoX19BUk1fRUFC SV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQot KyAgICAgICAgdmVjdG9yX3N0YXRlXyhjb250ZXh0ID8gJmNvbnRleHQtPnZlY3Rvcl9zdGF0ZSA6 IE5VTEwpLAotKyNlbGlmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBz X18pCi0gICAgICAgICBmbG9hdF9zdGF0ZV8oY29udGV4dCA/ICZjb250ZXh0LT5mbG9hdF9zdGF0 ZSA6IE5VTEwpLAotICNlbmRpZgotICAgICAgICAgZHVtcGVyXyhkdW1wZXIpLAotQEAgLTMzNyw2 ICszMzksOCBAQCBjbGFzcyBNaWNyb2R1bXBXcml0ZXIgewotICMgZWxzZQotICMgIGVycm9yICJU aGlzIG1pcHMgQUJJIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkIChuMzIpIgotICNlbmRpZgot KyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgICAgY29uc3QgY2hhciBrQXJjaFtdID0g InBwYzY0IjsKLSAjZWxzZQotICNlcnJvciAiVGhpcyBjb2RlIGhhcyBub3QgYmVlbiBwb3J0ZWQg dG8geW91ciBwbGF0Zm9ybSB5ZXQiCi0gI2VuZGlmCi1AQCAtNDA5LDcgKzQxMyw5IEBAIGNsYXNz IE1pY3JvZHVtcFdyaXRlciB7Ci0gICB2b2lkIER1bXBDUFVTdGF0ZSgpIHsKLSAgICAgUmF3Q29u dGV4dENQVSBjcHU7Ci0gICAgIG15X21lbXNldCgmY3B1LCAwLCBzaXplb2YoUmF3Q29udGV4dENQ VSkpOwotLSNpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQot KyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAgIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BV Q29udGV4dCgmY3B1LCB1Y29udGV4dF8sIHZlY3Rvcl9zdGF0ZV8pOwotKyNlbGlmICFkZWZpbmVk KF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCi0gICAgIFVDb250ZXh0UmVhZGVy OjpGaWxsQ1BVQ29udGV4dCgmY3B1LCB1Y29udGV4dF8sIGZsb2F0X3N0YXRlXyk7Ci0gI2Vsc2UK LSAgICAgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KCZjcHUsIHVjb250ZXh0Xyk7Ci1A QCAtNjA1LDcgKzYxMSw5IEBAIGNsYXNzIE1pY3JvZHVtcFdyaXRlciB7Ci0gICB2b2lkKiBBbGxv Yyh1bnNpZ25lZCBieXRlcykgeyByZXR1cm4gZHVtcGVyXy0+YWxsb2NhdG9yKCktPkFsbG9jKGJ5 dGVzKTsgfQotIAotICAgY29uc3QgdWNvbnRleHRfdCogY29uc3QgdWNvbnRleHRfOwotLSNpZiAh ZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCi0rICBjb25zdCBnb29nbGVfYnJlYWtwYWQ6OnZzdGF0ZV90KiBjb25z dCB2ZWN0b3Jfc3RhdGVfOwotKyNlbGlmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmlu ZWQoX19taXBzX18pCi0gICBjb25zdCBnb29nbGVfYnJlYWtwYWQ6OmZwc3RhdGVfdCogY29uc3Qg ZmxvYXRfc3RhdGVfOwotICNlbmRpZgotICAgTGludXhEdW1wZXIqIGR1bXBlcl87Ci0tLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFr cGFkL3NyYy9jbGllbnQvbGludXgvbWljcm9kdW1wX3dyaXRlci9taWNyb2R1bXBfd3JpdGVyX3Vu aXR0ZXN0LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWljcm9kdW1wX3dyaXRlci9t aWNyb2R1bXBfd3JpdGVyX3VuaXR0ZXN0LmNjCi1AQCAtMjc4LDEwICsyNzgsMTkgQEAgVEVTVChN aWNyb2R1bXBXcml0ZXJUZXN0LCBCYXNpY1dpdGhNYXBwaW5ncykgewotICAgQ3Jhc2hBbmRHZXRN aWNyb2R1bXAobWFwcGluZ3MsIE1pY3JvZHVtcEV4dHJhSW5mbygpLCAmYnVmKTsKLSAgIEFTU0VS VF9UUlVFKENvbnRhaW5zTWljcm9kdW1wKGJ1ZikpOwotIAotKyAgaW50IHBhZ2Vfc2l6ZSA9IGdl dHBhZ2VzaXplKCk7Ci0gI2lmZGVmIF9fTFA2NF9fCi0tICBBU1NFUlRfTkUoc3RkOjpzdHJpbmc6 Om5wb3MsCi0tICAgICAgICAgICAgYnVmLmZpbmQoIk0gMDAwMDAwMDAwMDAwMTAwMCAwMDAwMDAw MDAwMDAwMDJBIDAwMDAwMDAwMDAwMDEwMDAgIgotLSAgICAgICAgICAgICAgICAgICAgICIzMzIy MTEwMDU1NDQ3NzY2ODg5OUFBQkJDQ0RERUVGRjAgbGliZm9vLnNvIikpOwotKyAgLy8gVGhpcyB0 ZXN0IGlzIG9ubHkgYXZhaWxhYmxlIGZvciB0aGUgZm9sbG93aW5nIHBhZ2Ugc2l6ZXMKLSsgIEFT U0VSVF9UUlVFKChwYWdlX3NpemUgPT0gNDA5NikgfHwgKHBhZ2Vfc2l6ZSA9PSA2NTUzNikpOwot KyAgaWYgKHBhZ2Vfc2l6ZSA9PSA0MDk2KSB7IAotKyAgICBBU1NFUlRfTkUoc3RkOjpzdHJpbmc6 Om5wb3MsCi0rICAgICAgICAgICAgICBidWYuZmluZCgiTSAwMDAwMDAwMDAwMDAxMDAwIDAwMDAw MDAwMDAwMDAwMkEgMDAwMDAwMDAwMDAwMTAwMCAiCi0rICAgICAgICAgICAgICAgICAgICAgICAi MzMyMjExMDA1NTQ0Nzc2Njg4OTlBQUJCQ0NEREVFRkYwIGxpYmZvby5zbyIpKTsKLSsgIH0gZWxz ZSB7Ci0rICAgIEFTU0VSVF9ORShzdGQ6OnN0cmluZzo6bnBvcywKLSsgICAgICAgICAgICAgIGJ1 Zi5maW5kKCJNIDAwMDAwMDAwMDAwMTAwMDAgMDAwMDAwMDAwMDAwMDAyQSAwMDAwMDAwMDAwMDEw MDAwICIKLSsgICAgICAgICAgICAgICAgICAgICAgICIzMzIyMTEwMDU1NDQ3NzY2ODg5OUFBQkJD Q0RERUVGRjAgbGliZm9vLnNvIikpOwotKyAgfQotICNlbHNlCi0gICBBU1NFUlRfTkUoc3RkOjpz dHJpbmc6Om5wb3MsCi0gICAgICAgICAgICAgYnVmLmZpbmQoIk0gMDAwMDEwMDAgMDAwMDAwMkEg MDAwMDEwMDAgIgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9s aW51eF9jb3JlX2R1bXBlci5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1w X3dyaXRlci9saW51eF9jb3JlX2R1bXBlci5jYwotQEAgLTExNiw2ICsxMTYsOSBAQCBib29sIExp bnV4Q29yZUR1bXBlcjo6R2V0VGhyZWFkSW5mb0J5SW5kZXgoc2l6ZV90IGluZGV4LCBUaHJlYWRJ bmZvKiBpbmZvKSB7Ci0gI2VsaWYgZGVmaW5lZChfX21pcHNfXykKLSAgIHN0YWNrX3BvaW50ZXIg PQotICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGluZm8tPm1jb250ZXh0LmdyZWdz W01EX0NPTlRFWFRfTUlQU19SRUdfU1BdKTsKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18p Ci0rICBzdGFja19wb2ludGVyID0KLSsgICAgICByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihp bmZvLT5tY29udGV4dC5ncF9yZWdzW01EX0NPTlRFWFRfUFBDNjRfUkVHX1NQXSk7Ci0gI2Vsc2UK LSAjZXJyb3IgIlRoaXMgY29kZSBoYXNuJ3QgYmVlbiBwb3J0ZWQgdG8geW91ciBwbGF0Zm9ybSB5 ZXQuIgotICNlbmRpZgotQEAgLTIwMCw3ICsyMDMsMTAgQEAgYm9vbCBMaW51eENvcmVEdW1wZXI6 OkVudW1lcmF0ZVRocmVhZHMoKSB7Ci0gICAgICAgICBtZW1zZXQoJmluZm8sIDAsIHNpemVvZihU aHJlYWRJbmZvKSk7Ci0gICAgICAgICBpbmZvLnRnaWQgPSBzdGF0dXMtPnByX3BncnA7Ci0gICAg ICAgICBpbmZvLnBwaWQgPSBzdGF0dXMtPnByX3BwaWQ7Ci0tI2lmIGRlZmluZWQoX19taXBzX18p Ci0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgICAgICAgIGZvciAoaW50IGkgPSAwOyBp IDwgMzE7IGkrKykKLSsgICAgICAgICAgICBpbmZvLm1jb250ZXh0LmdwX3JlZ3NbaV0gPSBzdGF0 dXMtPnByX3JlZ1tpXTsKLSsjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQotICNpZiBkZWZpbmVkKF9f QU5EUk9JRF9fKQotICAgICAgICAgZm9yIChpbnQgaSA9IEVGX1IwOyBpIDw9IEVGX1IzMTsgaSsr KQotICAgICAgICAgICBpbmZvLm1jb250ZXh0LmdyZWdzW2kgLSBFRl9SMF0gPSBzdGF0dXMtPnBy X3JlZ1tpXTsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGlu dXhfZHVtcGVyLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVy L2xpbnV4X2R1bXBlci5jYwotQEAgLTc5OCw3ICs3OTgsOSBAQCBib29sIExpbnV4RHVtcGVyOjpH ZXRTdGFja0luZm8oY29uc3Qgdm9pZCoqIHN0YWNrLCBzaXplX3QqIHN0YWNrX2xlbiwKLSAgICAg ICByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbnRfc3RhY2tfcG9pbnRlciAmIH4ocGFnZV9z aXplIC0gMSkpOwotIAotICAgLy8gVGhlIG51bWJlciBvZiBieXRlcyBvZiBzdGFjayB3aGljaCB3 ZSB0cnkgdG8gY2FwdHVyZS4KLS0gIHN0YXRpYyBjb25zdCBwdHJkaWZmX3Qga1N0YWNrVG9DYXB0 dXJlID0gMzIgKiAxMDI0OwotKyAgLy8gVGhpcyBub3cgZGVwZW5kcyBvbiBwYWdlX3NpemUgdG8g YXZvaWQgbWlzc2luZyBkYXRhCi0rICAvLyBvbiBzeXN0ZW1zIHdpdGggbGFyZ2VyIHBhZ2Ugc2l6 ZXMuCi0rICBzdGF0aWMgY29uc3QgcHRyZGlmZl90IGtTdGFja1RvQ2FwdHVyZSA9IDggKiBwYWdl X3NpemU7Ci0gCi0gICBjb25zdCBNYXBwaW5nSW5mbyogbWFwcGluZyA9IEZpbmRNYXBwaW5nKHN0 YWNrX3BvaW50ZXIpOwotICAgaWYgKCFtYXBwaW5nKQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xp bnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9kdW1wZXIuaAotKysrIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50 L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9kdW1wZXIuaAotQEAgLTYwLDcgKzYwLDggQEAg bmFtZXNwYWNlIGdvb2dsZV9icmVha3BhZCB7Ci0gIChkZWZpbmVkKF9fbWlwc19fKSAmJiBfTUlQ U19TSU0gPT0gX0FCSU8zMikKLSB0eXBlZGVmIEVsZjMyX2F1eHZfdCBlbGZfYXV4X2VudHJ5Owot ICNlbGlmIGRlZmluZWQoX194ODZfNjQpIHx8IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IFwKLS0g ICAgIChkZWZpbmVkKF9fbWlwc19fKSAmJiBfTUlQU19TSU0gIT0gX0FCSU8zMikKLSsgICAgIChk ZWZpbmVkKF9fbWlwc19fKSAmJiBfTUlQU19TSU0gIT0gX0FCSU8zMikgfHwgXAotKyAgICAgZGVm aW5lZChfX3Bvd2VycGM2NF9fKQotIHR5cGVkZWYgRWxmNjRfYXV4dl90IGVsZl9hdXhfZW50cnk7 Ci0gI2VuZGlmCi0gCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVy L2xpbnV4X2R1bXBlcl91bml0dGVzdF9oZWxwZXIuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9s aW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfZHVtcGVyX3VuaXR0ZXN0X2hlbHBlci5jYwotQEAg LTUxLDYgKzUxLDggQEAKLSAjZGVmaW5lIFRJRF9QVFJfUkVHSVNURVIgInJjeCIKLSAjZWxpZiBk ZWZpbmVkKF9fbWlwc19fKQotICNkZWZpbmUgVElEX1BUUl9SRUdJU1RFUiAiJDEiCi0rI2VsaWYg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyNkZWZpbmUgVElEX1BUUl9SRUdJU1RFUiAicjgiCi0g I2Vsc2UKLSAjZXJyb3IgVGhpcyB0ZXN0IGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8gdGhpcyBwbGF0 Zm9ybS4KLSAjZW5kaWYKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0 ZXIvbGludXhfcHRyYWNlX2R1bXBlci5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21p bmlkdW1wX3dyaXRlci9saW51eF9wdHJhY2VfZHVtcGVyLmNjCi1AQCAtMTU0LDE5ICsxNTQsMjcg QEAgYm9vbCBMaW51eFB0cmFjZUR1bXBlcjo6Q29weUZyb21Qcm9jZXNzKHZvaWQqIGRlc3QsIHBp ZF90IGNoaWxkLAotICAgcmV0dXJuIHRydWU7Ci0gfQotIAotLWJvb2wgTGludXhQdHJhY2VEdW1w ZXI6OlJlYWRSZWdpc3RlclNldChUaHJlYWRJbmZvKiBpbmZvLCBwaWRfdCB0aWQpCi0tewotK2Jv b2wgTGludXhQdHJhY2VEdW1wZXI6OlJlYWRSZWdpc3RlclNldChUaHJlYWRJbmZvKiBpbmZvLCBw aWRfdCB0aWQpIHsKLSAjaWZkZWYgUFRSQUNFX0dFVFJFR1NFVAotICAgc3RydWN0IGlvdmVjIGlv OwotICAgaW5mby0+R2V0R2VuZXJhbFB1cnBvc2VSZWdpc3RlcnMoJmlvLmlvdl9iYXNlLCAmaW8u aW92X2xlbik7Ci0tICBpZiAoc3lzX3B0cmFjZShQVFJBQ0VfR0VUUkVHU0VULCB0aWQsICh2b2lk KilOVF9QUlNUQVRVUywgKHZvaWQqKSZpbykgPT0gLTEpIHsKLSsgIGlmIChwdHJhY2UoUFRSQUNF X0dFVFJFR1NFVCwgdGlkLCAodm9pZCopTlRfUFJTVEFUVVMsICh2b2lkKikmaW8pID09IC0xKSB7 Ci0gICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAKLSAgIGluZm8tPkdldEZsb2F0aW5nUG9pbnRS ZWdpc3RlcnMoJmlvLmlvdl9iYXNlLCAmaW8uaW92X2xlbik7Ci0tICBpZiAoc3lzX3B0cmFjZShQ VFJBQ0VfR0VUUkVHU0VULCB0aWQsICh2b2lkKilOVF9GUFJFR1NFVCwgKHZvaWQqKSZpbykgPT0g LTEpIHsKLSsgIGlmIChwdHJhY2UoUFRSQUNFX0dFVFJFR1NFVCwgdGlkLCAodm9pZCopTlRfRlBS RUdTRVQsICh2b2lkKikmaW8pID09IC0xKSB7Ci0gICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSsK LSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgLy8gR3JhYiB0aGUgdmVjdG9yIHJlZ2lz dGVycyBvbiBQUEM2NCB0b28KLSsgIGluZm8tPkdldFZlY3RvclJlZ2lzdGVycygmaW8uaW92X2Jh c2UsICZpby5pb3ZfbGVuKTsKLSsgIGlmIChwdHJhY2UoUFRSQUNFX0dFVFJFR1NFVCwgdGlkLCAo dm9pZCopTlRfUFBDX1ZNWCwgKHZvaWQqKSZpbykgPT0gLTEpIHsKLSsgICAgcmV0dXJuIGZhbHNl OwotKyAgfQotKyNlbmRpZiAvLyBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rCi0gICByZXR1cm4g dHJ1ZTsKLSAjZWxzZQotICAgcmV0dXJuIGZhbHNlOwotQEAgLTMwMyw2ICszMTEsOSBAQCBib29s IExpbnV4UHRyYWNlRHVtcGVyOjpHZXRUaHJlYWRJbmZvQnlJbmRleChzaXplX3QgaW5kZXgsIFRo cmVhZEluZm8qIGluZm8pIHsKLSAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQotICAgc3RhY2tfcG9p bnRlciA9Ci0gICAgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5mby0+bWNvbnRleHQu Z3JlZ3NbTURfQ09OVEVYVF9NSVBTX1JFR19TUF0pOwotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBj NjRfXykKLSsgIHN0YWNrX3BvaW50ZXIgPQotKyAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhf dCo+KGluZm8tPm1jb250ZXh0LmdwX3JlZ3NbTURfQ09OVEVYVF9QUEM2NF9SRUdfU1BdKTsKLSAj ZWxzZQotICNlcnJvciAiVGhpcyBjb2RlIGhhc24ndCBiZWVuIHBvcnRlZCB0byB5b3VyIHBsYXRm b3JtIHlldC4iCi0gI2VuZGlmCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBf d3JpdGVyL2xpbnV4X3B0cmFjZV9kdW1wZXJfdW5pdHRlc3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2Ns aWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfcHRyYWNlX2R1bXBlcl91bml0dGVzdC5j YwotQEAgLTQ1Nyw2ICs0NTcsOSBAQCBURVNUKExpbnV4UHRyYWNlRHVtcGVyVGVzdCwgVmVyaWZ5 U3RhY2tSZWFkV2l0aE11bHRpcGxlVGhyZWFkcykgewotICNlbGlmIGRlZmluZWQoX19taXBzX18p Ci0gICAgIHBpZF90KiBwcm9jZXNzX3RpZF9sb2NhdGlvbiA9Ci0gICAgICAgICByZWludGVycHJl dF9jYXN0PHBpZF90Kj4ob25lX3RocmVhZC5tY29udGV4dC5ncmVnc1sxXSk7Ci0rI2VsaWYgZGVm aW5lZChfX3Bvd2VycGM2NF9fKQotKyAgICBwaWRfdCogcHJvY2Vzc190aWRfbG9jYXRpb24gPQot KyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxwaWRfdCo+KG9uZV90aHJlYWQubWNvbnRleHQuZ3Bf cmVnc1s4XSk7Ci0gI2Vsc2UKLSAjZXJyb3IgVGhpcyB0ZXN0IGhhcyBub3QgYmVlbiBwb3J0ZWQg dG8gdGhpcyBwbGF0Zm9ybS4KLSAjZW5kaWYKLUBAIC01NTMsNiArNTU2LDggQEAgVEVTVF9GKExp bnV4UHRyYWNlRHVtcGVyVGVzdCwgU2FuaXRpemVTdGFja0NvcHkpIHsKLSAgIHVpbnRwdHJfdCBo ZWFwX2FkZHIgPSB0aHJlYWRfaW5mby5yZWdzLnJjeDsKLSAjZWxpZiBkZWZpbmVkKF9fbWlwc19f KQotICAgdWludHB0cl90IGhlYXBfYWRkciA9IHRocmVhZF9pbmZvLm1jb250ZXh0LmdyZWdzWzFd OwotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgIHVpbnRwdHJfdCBoZWFwX2FkZHIg PSB0aHJlYWRfaW5mby5tY29udGV4dC5ncF9yZWdzWzhdOwotICNlbHNlCi0gI2Vycm9yIFRoaXMg dGVzdCBoYXMgbm90IGJlZW4gcG9ydGVkIHRvIHRoaXMgcGxhdGZvcm0uCi0gI2VuZGlmCi0tLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2Jy ZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlci5j YwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVh a3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93 cml0ZXIuY2MKLUBAIC0xMzYsNyArMTM2LDkgQEAgY2xhc3MgTWluaWR1bXBXcml0ZXIgewotICAg ICAgIDogZmRfKG1pbmlkdW1wX2ZkKSwKLSAgICAgICAgIHBhdGhfKG1pbmlkdW1wX3BhdGgpLAot ICAgICAgICAgdWNvbnRleHRfKGNvbnRleHQgPyAmY29udGV4dC0+Y29udGV4dCA6IE5VTEwpLAot LSNpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBk ZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAgICAgICB2ZWN0b3Jfc3RhdGVfKGNvbnRleHQgPyAm Y29udGV4dC0+dmVjdG9yX3N0YXRlIDogTlVMTCksCi0rI2VsaWYgIWRlZmluZWQoX19BUk1fRUFC SV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKLSAgICAgICAgIGZsb2F0X3N0YXRlXyhjb250ZXh0 ID8gJmNvbnRleHQtPmZsb2F0X3N0YXRlIDogTlVMTCksCi0gI2VuZGlmCi0gICAgICAgICBkdW1w ZXJfKGR1bXBlciksCi1AQCAtNDY4LDcgKzQ3MCw5IEBAIGNsYXNzIE1pbmlkdW1wV3JpdGVyIHsK LSAgICAgICAgIGlmICghY3B1LkFsbG9jYXRlKCkpCi0gICAgICAgICAgIHJldHVybiBmYWxzZTsK LSAgICAgICAgIG15X21lbXNldChjcHUuZ2V0KCksIDAsIHNpemVvZihSYXdDb250ZXh0Q1BVKSk7 Ci0tI2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCi0rI2lm IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgICAgICAgIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BV Q29udGV4dChjcHUuZ2V0KCksIHVjb250ZXh0XywgdmVjdG9yX3N0YXRlXyk7Ci0rI2VsaWYgIWRl ZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKLSAgICAgICAgIFVDb250 ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChjcHUuZ2V0KCksIHVjb250ZXh0XywgZmxvYXRfc3Rh dGVfKTsKLSAjZWxzZQotICAgICAgICAgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KGNw dS5nZXQoKSwgdWNvbnRleHRfKTsKLUBAIC04OTEsNyArODk1LDcgQEAgY2xhc3MgTWluaWR1bXBX cml0ZXIgewotICAgICBkaXJlbnQtPmxvY2F0aW9uLnJ2YSA9IDA7Ci0gICB9Ci0gCi0tI2lmIGRl ZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNf XykKLSsjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZp bmVkKF9fbWlwc19fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICBib29sIFdyaXRlQ1BV SW5mb3JtYXRpb24oTURSYXdTeXN0ZW1JbmZvKiBzeXNfaW5mbykgewotICAgICBjaGFyIHZlbmRv cl9pZFtzaXplb2Yoc3lzX2luZm8tPmNwdS54ODZfY3B1X2luZm8udmVuZG9yX2lkKSArIDFdID0g ezB9OwotICAgICBzdGF0aWMgY29uc3QgY2hhciB2ZW5kb3JfaWRfbmFtZVtdID0gInZlbmRvcl9p ZCI7Ci1AQCAtOTExLDcgKzkxNSw5IEBAIGNsYXNzIE1pbmlkdW1wV3JpdGVyIHsKLSAKLSAgICAg Ly8gcHJvY2Vzc29yX2FyY2hpdGVjdHVyZSBzaG91bGQgYWx3YXlzIGJlIHNldCwgZG8gdGhpcyBm aXJzdAotICAgICBzeXNfaW5mby0+cHJvY2Vzc29yX2FyY2hpdGVjdHVyZSA9Ci0tI2lmIGRlZmlu ZWQoX19taXBzX18pCi0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgICAgICAgIE1EX0NQ VV9BUkNISVRFQ1RVUkVfUFBDNjQ7Ci0rI2VsaWYgZGVmaW5lZChfX21pcHNfXykKLSAjIGlmIF9N SVBTX1NJTSA9PSBfQUJJTzMyCi0gICAgICAgICBNRF9DUFVfQVJDSElURUNUVVJFX01JUFM7Ci0g IyBlbGlmIF9NSVBTX1NJTSA9PSBfQUJJNjQKLUBAIC0xMzI3LDcgKzEzMzMsOSBAQCBjbGFzcyBN aW5pZHVtcFdyaXRlciB7Ci0gICBjb25zdCBjaGFyKiBwYXRoXzsgIC8vIFBhdGggdG8gdGhlIGZp bGUgd2hlcmUgdGhlIG1pbmlkdW0gc2hvdWxkIGJlIHdyaXR0ZW4uCi0gCi0gICBjb25zdCB1Y29u dGV4dF90KiBjb25zdCB1Y29udGV4dF87ICAvLyBhbHNvIGZyb20gdGhlIHNpZ25hbCBoYW5kbGVy Ci0tI2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCi0rI2lm IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgIGNvbnN0IGdvb2dsZV9icmVha3BhZDo6dnN0YXRl X3QqIGNvbnN0IHZlY3Rvcl9zdGF0ZV87Ci0rI2VsaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAm JiAhZGVmaW5lZChfX21pcHNfXykKLSAgIGNvbnN0IGdvb2dsZV9icmVha3BhZDo6ZnBzdGF0ZV90 KiBjb25zdCBmbG9hdF9zdGF0ZV87ICAvLyBkaXR0bwotICNlbmRpZgotICAgTGludXhEdW1wZXIq IGR1bXBlcl87Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL21p bmlkdW1wX3dyaXRlci5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3Jp dGVyL21pbmlkdW1wX3dyaXRlci5oCi1AQCAtNDcsNiArNDcsOCBAQCBjbGFzcyBFeGNlcHRpb25I YW5kbGVyOwotIAotICNpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQotIHR5cGVkZWYgc3RydWN0IGZw c2ltZF9jb250ZXh0IGZwc3RhdGVfdDsKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0r dHlwZWRlZiB2cnJlZ3NldF90IHZzdGF0ZV90OwotICNlbGlmICFkZWZpbmVkKF9fQVJNX0VBQklf XykgJiYgIWRlZmluZWQoX19taXBzX18pCi0gdHlwZWRlZiBzdHJ1Y3QgX2Zwc3RhdGUgZnBzdGF0 ZV90OwotICNlbmRpZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRl ci9taW5pZHVtcF93cml0ZXJfdW5pdHRlc3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51 eC9taW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVyX3VuaXR0ZXN0LmNjCi1AQCAtNzEwLDYg KzcxMCw5IEBAIFRFU1QoTWluaWR1bXBXcml0ZXJUZXN0LCBJbnZhbGlkU3RhY2tQb2ludGVyKSB7 Ci0gI2VsaWYgZGVmaW5lZChfX21pcHNfXykKLSAgIGNvbnRleHQuY29udGV4dC51Y19tY29udGV4 dC5ncmVnc1tNRF9DT05URVhUX01JUFNfUkVHX1NQXSA9Ci0gICAgICAgaW52YWxpZF9zdGFja19w b2ludGVyOwotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgIGNvbnRleHQuY29udGV4 dC51Y19tY29udGV4dC5ncF9yZWdzW01EX0NPTlRFWFRfUFBDNjRfUkVHX1NQXSA9Ci0rICAgICAg aW52YWxpZF9zdGFja19wb2ludGVyOwotICNlbHNlCi0gIyBlcnJvciAiVGhpcyBjb2RlIGhhcyBu b3QgYmVlbiBwb3J0ZWQgdG8geW91ciBwbGF0Zm9ybSB5ZXQuIgotICNlbmRpZgotLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3Bh ZC9zcmMvY29tbW9uL2xpbnV4L21lbW9yeV9tYXBwZWRfZmlsZS5jYwotKysrIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMv Y29tbW9uL2xpbnV4L21lbW9yeV9tYXBwZWRfZmlsZS5jYwotQEAgLTY1LDggKzY1LDcgQEAgYm9v bCBNZW1vcnlNYXBwZWRGaWxlOjpNYXAoY29uc3QgY2hhciogcGF0aCwgc2l6ZV90IG9mZnNldCkg ewotICAgfQotIAotICNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hYXJjaDY0 X18pIHx8IFwKLS0gICAoZGVmaW5lZChfX21pcHNfXykgJiYgX01JUFNfU0lNID09IF9BQkk2NCkK LS0KLSsgICAoZGVmaW5lZChfX21pcHNfXykgJiYgX01JUFNfU0lNID09IF9BQkk2NCkgfHwgZGVm aW5lZChfX3Bvd2VycGM2NF9fKQotICAgc3RydWN0IGtlcm5lbF9zdGF0IHN0OwotICAgaWYgKHN5 c19mc3RhdChmZCwgJnN0KSA9PSAtMSB8fCBzdC5zdF9zaXplIDwgMCkgewotICNlbHNlCi0tLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2Jy ZWFrcGFkL3NyYy9jb21tb24vbGludXgvbWVtb3J5X21hcHBlZF9maWxlX3VuaXR0ZXN0LmNjCi0r KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFk L2JyZWFrcGFkL3NyYy9jb21tb24vbGludXgvbWVtb3J5X21hcHBlZF9maWxlX3VuaXR0ZXN0LmNj Ci1AQCAtMTc2LDkgKzE3NiwxMCBAQCBURVNUX0YoTWVtb3J5TWFwcGVkRmlsZVRlc3QsIFJlbWFw QWZ0ZXJNYXApIHsKLSBURVNUX0YoTWVtb3J5TWFwcGVkRmlsZVRlc3QsIE1hcFdpdGhPZmZzZXQp IHsKLSAgIC8vIFB1dCBtb3JlIGRhdGEgaW4gdGhlIHRlc3QgZmlsZSB0aGlzIHRpbWUuIE9mZnNl dHMgY2FuIG9ubHkgYmUKLSAgIC8vIGRvbmUgb24gcGFnZSBib3VuZGFyaWVzLCBzbyB3ZSBuZWVk IGEgdHdvIHBhZ2UgZmlsZSB0byB0ZXN0IHRoaXMuCi0tICBjb25zdCBpbnQgcGFnZV9zaXplID0g NDA5NjsKLS0gIGNoYXIgZGF0YTFbMiAqIHBhZ2Vfc2l6ZV07Ci0tICBzaXplX3QgZGF0YTFfc2l6 ZSA9IHNpemVvZihkYXRhMSk7Ci0rICBjb25zdCBpbnQgcGFnZV9zaXplID0gZ2V0cGFnZXNpemUo KTsKLSsgIGNoYXIgKmRhdGExID0gc3RhdGljX2Nhc3Q8Y2hhcio+KG1hbGxvYygyICogcGFnZV9z aXplKSk7Ci0rICBFWFBFQ1RfVFJVRShkYXRhMSAhPSBOVUxMKTsKLSsgIHNpemVfdCBkYXRhMV9z aXplID0gKDIgKiBwYWdlX3NpemUpOwotICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkYXRhMV9z aXplOyArK2kpIHsKLSAgICAgZGF0YTFbaV0gPSBpICYgMHg3ZjsKLSAgIH0KLS0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQv c3JjL2NvbW1vbi9tZW1vcnlfYWxsb2NhdG9yX3VuaXR0ZXN0LmNjCi0rKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9j b21tb24vbWVtb3J5X2FsbG9jYXRvcl91bml0dGVzdC5jYwotQEAgLTU3LDggKzU3LDkgQEAgVEVT VChQYWdlQWxsb2NhdG9yVGVzdCwgTGFyZ2VPYmplY3QpIHsKLSAKLSAgIEVYUEVDVF9FUSgwVSwg YWxsb2NhdG9yLnBhZ2VzX2FsbG9jYXRlZCgpKTsKLSAgIHVpbnQ4X3QgKnAgPSByZWludGVycHJl dF9jYXN0PHVpbnQ4X3QqPihhbGxvY2F0b3IuQWxsb2MoMTAwMDApKTsKLSsgIHVpbnQ2NF90IGV4 cGVjdGVkX3BhZ2VzID0gMSArICgoMTAwMDAgLSAxKSAvIGdldHBhZ2VzaXplKCkpOwotICAgQVNT RVJUX0ZBTFNFKHAgPT0gTlVMTCk7Ci0tICBFWFBFQ1RfRVEoM1UsIGFsbG9jYXRvci5wYWdlc19h bGxvY2F0ZWQoKSk7Ci0rICBFWFBFQ1RfRVEoZXhwZWN0ZWRfcGFnZXMsIGFsbG9jYXRvci5wYWdl c19hbGxvY2F0ZWQoKSk7Ci0gICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgMTA7ICsraSkgewot ICAgICB1aW50OF90ICpwID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oYWxsb2NhdG9yLkFs bG9jKGkpKTsKLSAgICAgQVNTRVJUX0ZBTFNFKHAgPT0gTlVMTCk7Ci0tLS0gcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9w cm9jZXNzb3IvZXhwbG9pdGFiaWxpdHlfbGludXguY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL3Byb2Nlc3Nv ci9leHBsb2l0YWJpbGl0eV9saW51eC5jYwotQEAgLTIwMiwxMiArMjAyLDE0IEBAIGJvb2wgRXhw bG9pdGFiaWxpdHlMaW51eDo6RW5kZWRPbklsbGVnYWxXcml0ZSh1aW50NjRfdCBpbnN0cnVjdGlv bl9wdHIpIHsKLSAgIC8vIENoZWNrIGFyY2hpdGVjdHVyZSBhbmQgc2V0IGFyY2hpdGVjdHVyZSB2 YXJpYWJsZSB0byBjb3JyZXNwb25kaW5nIGZsYWcKLSAgIC8vIGluIG9iamR1bXAuCi0gICBzd2l0 Y2ggKGNvbnRleHQtPkdldENvbnRleHRDUFUoKSkgewotKyNpZiBkZWZpbmVkKF9faTM4NikgfHwg ZGVmaW5lZChfX3g4Nl82NCkKLSAgICAgY2FzZSBNRF9DT05URVhUX1g4NjoKLSAgICAgICBhcmNo aXRlY3R1cmUgPSAiaTM4NiI7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgTURfQ09OVEVYVF9B TUQ2NDoKLSAgICAgICBhcmNoaXRlY3R1cmUgPSAiaTM4Njp4ODYtNjQiOwotICAgICAgIGJyZWFr OwotKyNlbmRpZgotICAgICBkZWZhdWx0OgotICAgICAgIC8vIFVuc3VwcG9ydGVkIGFyY2hpdGVj dHVyZS4gTm90ZSB0aGF0IEFSTSBhcmNoaXRlY3R1cmVzIGFyZSBub3QKLSAgICAgICAvLyBzdXBw b3J0ZWQgYmVjYXVzZSBvYmpkdW1wIGRvZXMgbm90IHN1cHBvcnQgQVJNLgotLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9z cmMvcHJvY2Vzc29yL2V4cGxvaXRhYmlsaXR5X3VuaXR0ZXN0LmNjCi0rKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9w cm9jZXNzb3IvZXhwbG9pdGFiaWxpdHlfdW5pdHRlc3QuY2MKLUBAIC0xMDQsNiArMTA0LDggQEAg RXhwbG9pdGFiaWxpdHlGb3IoY29uc3Qgc3RyaW5nJiBmaWxlbmFtZSkgewotIH0KLSAKLSBURVNU KEV4cGxvaXRhYmlsaXR5VGVzdCwgVGVzdFdpbmRvd3NFbmdpbmUpIHsKLSsvLyBUaGUgZm9sbG93 aW5nIHRlc3RzIGFyZSBvbmx5IGV4ZWN1dGFibGUgb24gYW4geDg2LWNsYXNzIGxpbnV4IG1hY2hp bmUuCi0rI2lmICFkZWZpbmVkKF9XSU4zMikgJiYgKGRlZmluZWQoX19pMzg2KSB8fCBkZWZpbmVk KF9feDg2XzY0KSkKLSAgIEFTU0VSVF9FUShnb29nbGVfYnJlYWtwYWQ6OkVYUExPSVRBQklMSVRZ X0hJR0gsCi0gICAgICAgICAgICAgRXhwbG9pdGFiaWxpdHlGb3IoImFzY2lpX3JlYWRfYXYuZG1w IikpOwotICAgQVNTRVJUX0VRKGdvb2dsZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJVFlfSElHSCwK LUBAIC0xMzYsOSArMTM4LDEyIEBAIFRFU1QoRXhwbG9pdGFiaWxpdHlUZXN0LCBUZXN0V2luZG93 c0VuZ2luZSkgewotICAgICAgICAgICAgIEV4cGxvaXRhYmlsaXR5Rm9yKCJyZWFkX2F2X2Nsb2Ji ZXJfd3JpdGUuZG1wIikpOwotICAgQVNTRVJUX0VRKGdvb2dsZV9icmVha3BhZDo6RVhQTE9JVEFC SUxJVFlfTE9XLAotICAgICAgICAgICAgIEV4cGxvaXRhYmlsaXR5Rm9yKCJyZWFkX2F2X2NvbmRp dGlvbmFsLmRtcCIpKTsKLSsjZW5kaWYKLSB9Ci0gCi0gVEVTVChFeHBsb2l0YWJpbGl0eVRlc3Qs IFRlc3RMaW51eEVuZ2luZSkgewotKy8vIFRoZSBmb2xsb3dpbmcgdGVzdHMgYXJlIG9ubHkgZXhl Y3V0YWJsZSBvbiBhbiB4ODYtY2xhc3MgbGludXggbWFjaGluZS4KLSsjaWYgZGVmaW5lZChfX2kz ODYpIHx8IGRlZmluZWQoX194ODZfNjQpCi0gICBBU1NFUlRfRVEoZ29vZ2xlX2JyZWFrcGFkOjpF WFBMT0lUQUJJTElUWV9JTlRFUkVTVElORywKLSAgICAgICAgICAgICBFeHBsb2l0YWJpbGl0eUZv cigibGludXhfbnVsbF9yZWFkX2F2LmRtcCIpKTsKLSAgIEFTU0VSVF9FUShnb29nbGVfYnJlYWtw YWQ6OkVYUExPSVRBQklMSVRZX0hJR0gsCi1AQCAtMTcxLDcgKzE3Niw4IEBAIFRFU1QoRXhwbG9p dGFiaWxpdHlUZXN0LCBUZXN0TGludXhFbmdpbmUpIHsKLSAgICAgICAgICAgICBFeHBsb2l0YWJp bGl0eUZvcigibGludXhfZXhlY3V0YWJsZV9oZWFwLmRtcCIpKTsKLSAgIEFTU0VSVF9FUShnb29n bGVfYnJlYWtwYWQ6OkVYUExPSVRBQklMSVRZX0hJR0gsCi0gICAgICAgICAgICAgRXhwbG9pdGFi aWxpdHlGb3IoImxpbnV4X2ptcF90b19tb2R1bGVfbm90X2V4ZV9yZWdpb24uZG1wIikpOwotLSNp Zm5kZWYgX1dJTjMyCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkKF9XSU4zMikgJiYgKGRlZmluZWQo X19pMzg2KSB8fCBkZWZpbmVkKF9feDg2XzY0KSkKLSAgIEFTU0VSVF9FUShnb29nbGVfYnJlYWtw YWQ6OkVYUExPSVRBQklMSVRZX0hJR0gsCi0gICAgICAgICAgICAgRXhwbG9pdGFiaWxpdHlGb3Io ImxpbnV4X3dyaXRlX3RvX25vbndyaXRhYmxlX21vZHVsZS5kbXAiKSk7Ci0gICBBU1NFUlRfRVEo Z29vZ2xlX2JyZWFrcGFkOjpFWFBMT0lUQUJJTElUWV9ISUdILAotQEAgLTE4MiwxMCArMTg4LDEw IEBAIFRFU1QoRXhwbG9pdGFiaWxpdHlUZXN0LCBUZXN0TGludXhFbmdpbmUpIHsKLSAgICAgICAg ICAgICBFeHBsb2l0YWJpbGl0eUZvcigibGludXhfd3JpdGVfdG9fb3V0c2lkZV9tb2R1bGVfdmlh X21hdGguZG1wIikpOwotICAgQVNTRVJUX0VRKGdvb2dsZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJ VFlfSU5URVJFU1RJTkcsCi0gICAgICAgICAgICAgRXhwbG9pdGFiaWxpdHlGb3IoImxpbnV4X3dy aXRlX3RvX3VuZGVyXzRrLmRtcCIpKTsKLS0jZW5kaWYgIC8vIF9XSU4zMgotKyNlbmRpZiAgLy8g IWRlZmluZWQoX1dJTjMyKSAmJiAoIWRlZmluZWQoX19pMzg2KSAmJiAhZGVmaW5lZChfX3g4Nl82 NCkpCi0gfQotIAotLSNpZm5kZWYgX1dJTjMyCi0rI2lmICFkZWZpbmVkKF9XSU4zMikgJiYgKGRl ZmluZWQoX19pMzg2KSB8fCBkZWZpbmVkKF9feDg2XzY0KSkKLSBURVNUKEV4cGxvaXRhYmlsaXR5 TGludXhVdGlsc1Rlc3QsIERpc2Fzc2VtYmxlQnl0ZXNUZXN0KSB7Ci0gICBBU1NFUlRfRkFMU0Uo RXhwbG9pdGFiaWxpdHlMaW51eFRlc3Q6OkRpc2Fzc2VtYmxlQnl0ZXMoIiIsIE5VTEwsIDUsIE5V TEwpKTsKLSAgIHVpbnQ4X3QgYnl0ZXNbNl0gPSB7MHhjNywgMHgwLCAweDUsIDB4MCwgMHgwLCAw eDB9OwotQEAgLTMwMSw2ICszMDcsNyBAQCBURVNUKEV4cGxvaXRhYmlsaXR5TGludXhVdGlsc1Rl c3QsIENhbGN1bGF0ZUFkZHJlc3NUZXN0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmd3JpdGVfYWRkcmVzcykp OwotIH0KLS0jZW5kaWYgIC8vIF9XSU4zMgotKyNlbmRpZiAgLy8gIWRlZmluZWQoX1dJTjMyKSAm JiAoZGVmaW5lZChfX2kzODYpIHx8IGRlZmluZWQoX194ODZfNjQpKQotKwotIAotIH0gIC8vIG5h bWVzcGFjZQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0 eS9icmVha3BhZC9icmVha3BhZC9zcmMvdG9vbHMvbGludXgvbWQyY29yZS9taW5pZHVtcC0yLWNv cmUuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv YnJlYWtwYWQvYnJlYWtwYWQvc3JjL3Rvb2xzL2xpbnV4L21kMmNvcmUvbWluaWR1bXAtMi1jb3Jl LmNjCi1AQCAtNzYsNiArNzYsOCBAQAotICAgI2RlZmluZSBFTEZfQVJDSCAgRU1fTUlQUwotICNl bGlmIGRlZmluZWQoX19hYXJjaDY0X18pCi0gICAjZGVmaW5lIEVMRl9BUkNIICBFTV9BQVJDSDY0 Ci0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgI2RlZmluZSBFTEZfQVJDSCAgRU1f UFBDNjQKLSAjZW5kaWYKLSAKLSAjaWYgZGVmaW5lZChfX2FybV9fKQotQEAgLTg2LDYgKzg4LDgg QEAgdHlwZWRlZiB1c2VyX3JlZ3MgdXNlcl9yZWdzX3N0cnVjdDsKLSAjZWxpZiBkZWZpbmVkIChf X21pcHNfXykKLSAvLyBUaGlzIGZpbGUtbG9jYWwgdHlwZWRlZiBzaW1wbGlmaWVzIHRoZSBzb3Vy Y2UgY29kZS4KLSB0eXBlZGVmIGdyZWdzZXRfdCB1c2VyX3JlZ3Nfc3RydWN0OwotKyNlbGlmIGRl ZmluZWQoX19wb3dlcnBjNjRfXykKLSt0eXBlZGVmIHN0cnVjdCBwdF9yZWdzIHVzZXJfcmVnc19z dHJ1Y3Q7Ci0gI2VuZGlmCi0gCi0gdXNpbmcgZ29vZ2xlX2JyZWFrcGFkOjpNRFR5cGVIZWxwZXI7 Ci1AQCAtMzIwLDYgKzMyNCw5IEBAIHN0cnVjdCBDcmFzaGVkUHJvY2VzcyB7Ci0gI2VuZGlmCi0g I2lmIGRlZmluZWQoX19hYXJjaDY0X18pCi0gICAgIHVzZXJfZnBzaW1kX3N0cnVjdCBmcHJlZ3M7 Ci0rI2VuZGlmCi0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgICAgbWNvbnRleHRfdCBt Y29udGV4dDsKLSAjZW5kaWYKLSAgICAgdWludHB0cl90IHN0YWNrX2FkZHI7Ci0gICAgIGNvbnN0 IHVpbnQ4X3QqIHN0YWNrOwotQEAgLTUzNCw2ICs1NDEsMzggQEAgUGFyc2VUaHJlYWRSZWdpc3Rl cnMoQ3Jhc2hlZFByb2Nlc3M6OlRocmVhZCogdGhyZWFkLAotICAgdGhyZWFkLT5tY29udGV4dC5m cGNfZWlyID0gcmF3cmVncy0+ZmxvYXRfc2F2ZS5maXI7Ci0gI2VuZGlmCi0gfQotKyNlbGlmIGRl ZmluZWQoX19wb3dlcnBjNjRfXykKLStzdGF0aWMgdm9pZAotK1BhcnNlVGhyZWFkUmVnaXN0ZXJz KENyYXNoZWRQcm9jZXNzOjpUaHJlYWQqIHRocmVhZCwKLSsgICAgICAgICAgICAgICAgICAgICBj b25zdCBNaW5pZHVtcE1lbW9yeVJhbmdlJiByYW5nZSkgewotKyAgY29uc3QgTURSYXdDb250ZXh0 UFBDNjQqIHJhd3JlZ3MgPSByYW5nZS5HZXREYXRhPE1EUmF3Q29udGV4dFBQQzY0PigwKTsKLSsK LSsgIGZvciAoaW50IGkgPSAwOyBpIDwgTURfQ09OVEVYVF9QUEM2NF9HUFJfQ09VTlQ7IGkrKykK LSsgICAgdGhyZWFkLT5tY29udGV4dC5ncF9yZWdzW2ldID0gcmF3cmVncy0+Z3ByW2ldOwotKwot KyAgdGhyZWFkLT5tY29udGV4dC5ncF9yZWdzW1BUX0xOS10gPSByYXdyZWdzLT5scjsKLSsgIHRo cmVhZC0+bWNvbnRleHQuZ3BfcmVnc1tQVF9OSVBdID0gcmF3cmVncy0+c3JyMDsKLSsgIHRocmVh ZC0+bWNvbnRleHQuZ3BfcmVnc1tQVF9NU1JdID0gcmF3cmVncy0+c3JyMTsKLSsgIHRocmVhZC0+ bWNvbnRleHQuZ3BfcmVnc1tQVF9DQ1JdID0gcmF3cmVncy0+Y3I7Ci0rICB0aHJlYWQtPm1jb250 ZXh0LmdwX3JlZ3NbUFRfWEVSXSA9IHJhd3JlZ3MtPnhlcjsKLSsgIHRocmVhZC0+bWNvbnRleHQu Z3BfcmVnc1tQVF9DVFJdID0gcmF3cmVncy0+Y3RyOwotKyAgdGhyZWFkLT5tY29udGV4dC52X3Jl Z3MtPnZyc2F2ZSA9IHJhd3JlZ3MtPnZyc2F2ZTsKLSsKLSsgIGZvciAoaW50IGkgPSAwOyBpIDwg TURfRkxPQVRJTkdTQVZFQVJFQV9QUENfRlBSX0NPVU5UOyBpKyspCi0rICAgICAgdGhyZWFkLT5t Y29udGV4dC5mcF9yZWdzW2ldID0gcmF3cmVncy0+ZmxvYXRfc2F2ZS5mcHJlZ3NbaV07Ci0rCi0r ICB0aHJlYWQtPm1jb250ZXh0LmZwX3JlZ3NbTkZQUkVHLTFdID0gcmF3cmVncy0+ZmxvYXRfc2F2 ZS5mcHNjcjsKLSsKLSsgIGZvciAoaW50IGkgPSAwOyBpIDwgTURfVkVDVE9SU0FWRUFSRUFfUFBD X1ZSX0NPVU5UOyBpKyspIHsKLSsgICAgICB0aHJlYWQtPm1jb250ZXh0LnZfcmVncy0+dnJyZWdz W2ldWzBdID0gcmF3cmVncy0+dmVjdG9yX3NhdmUuc2F2ZV92cltpXS5oaWdoID4+IDMyOwotKyAg ICAgIHRocmVhZC0+bWNvbnRleHQudl9yZWdzLT52cnJlZ3NbaV1bMV0gPSByYXdyZWdzLT52ZWN0 b3Jfc2F2ZS5zYXZlX3ZyW2ldLmhpZ2g7Ci0rICAgICAgdGhyZWFkLT5tY29udGV4dC52X3JlZ3Mt PnZycmVnc1tpXVsyXSA9IHJhd3JlZ3MtPnZlY3Rvcl9zYXZlLnNhdmVfdnJbaV0ubG93ID4+IDMy OwotKyAgICAgIHRocmVhZC0+bWNvbnRleHQudl9yZWdzLT52cnJlZ3NbaV1bM10gPSByYXdyZWdz LT52ZWN0b3Jfc2F2ZS5zYXZlX3ZyW2ldLmxvdzsKLSsgIH0KLSsKLSsgIHRocmVhZC0+bWNvbnRl eHQudl9yZWdzLT52c2NyLnZzY3Jfd29yZCA9IHJhd3JlZ3MtPnZlY3Rvcl9zYXZlLnNhdmVfdnNj ci5sb3cgJiAweEZGRkZGRkZGOwotK30KLSsKLSAjZWxzZQotICNlcnJvciAiVGhpcyBjb2RlIGhh cyBub3QgYmVlbiBwb3J0ZWQgdG8geW91ciBwbGF0Zm9ybSB5ZXQiCi0gI2VuZGlmCi1AQCAtNjIy LDYgKzY2MSwxMiBAQCBQYXJzZVN5c3RlbUluZm8oY29uc3QgT3B0aW9ucyYgb3B0aW9ucywgQ3Jh c2hlZFByb2Nlc3MqIGNyYXNoaW5mbywKLSAjIGVsc2UKLSAjICBlcnJvciAiVGhpcyBtaXBzIEFC SSBpcyBjdXJyZW50bHkgbm90IHN1cHBvcnRlZCAobjMyKSIKLSAjIGVuZGlmCi0rI2VsaWYgZGVm aW5lZChfX3Bvd2VycGM2NF9fKQotKyAgaWYgKHN5c2luZm8tPnByb2Nlc3Nvcl9hcmNoaXRlY3R1 cmUgIT0gTURfQ1BVX0FSQ0hJVEVDVFVSRV9QUEM2NCkgewotKyAgICBmcHJpbnRmKHN0ZGVyciwK LSsgICAgICAgICAgICAiVGhpcyB2ZXJzaW9uIG9mIG1pbmlkdW1wLTItY29yZSBvbmx5IHN1cHBv cnRzIFBQQzY0LlxuIik7Ci0rICAgIGV4aXQoMSk7Ci0rICB9Ci0gI2Vsc2UKLSAjZXJyb3IgIlRo aXMgY29kZSBoYXMgbm90IGJlZW4gcG9ydGVkIHRvIHlvdXIgcGxhdGZvcm0geWV0IgotICNlbmRp ZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFz aHBhZC9jcmFzaHBhZC9DT05UUklCVVRPUlMKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvQ09OVFJJQlVUT1JTCi1AQCAt MTMsMyArMTMsNCBAQCBNYXJrIE1lbnRvdmFpIDxtYXJrQGNocm9taXVtLm9yZz4KLSBSb2JlcnQg U2VzZWsgPHJzZXNla0BjaHJvbWl1bS5vcmc+Ci0gU2NvdHQgR3JhaGFtIDxzY290dG1nQGNocm9t aXVtLm9yZz4KLSBKb3NodWEgUGVyYXphIDxqcGVyYXphQGNocm9taXVtLm9yZz4KLStTaGF3biBB bmFzdGFzaW8gPHNoYXduQGFuYXN0YXMuaW8+Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL2NvbXBhdC9saW51eC9zeXMv dXNlci5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2NyYXNocGFkL2NyYXNocGFkL2NvbXBhdC9saW51eC9zeXMvdXNlci5oCi1AQCAtMTUsNiArMTUs NyBAQAotICNpZm5kZWYgQ1JBU0hQQURfQ09NUEFUX0xJTlVYX1NZU19VU0VSX0hfCi0gI2RlZmlu ZSBDUkFTSFBBRF9DT01QQVRfTElOVVhfU1lTX1VTRVJfSF8KLSAKLSsjaW5jbHVkZSA8Y3N0ZGRl Zj4KLSAjaW5jbHVkZV9uZXh0IDxzeXMvdXNlci5oPgotIAotICNpbmNsdWRlIDxmZWF0dXJlcy5o PgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFz aHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9jb250ZXh0LmgKLSsrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWlu aWR1bXAvbWluaWR1bXBfY29udGV4dC5oCi1AQCAtNTkyLDYgKzU5Miw3MCBAQCBzdHJ1Y3QgTWlu aWR1bXBDb250ZXh0TUlQUzY0IHsKLSAgIHVpbnQ2NF90IGZpcjsKLSB9OwotIAotKy8vISBcYnJp ZWYgcHBjNjQtc3BlY2lmaWMgZmxhZ3MgZm9yIE1pbmlkdW1wUFBDNjQ6OmNvbnRleHRfZmxhZ3MK LSsvLyEgQmFzZWQgb24gbWluaWR1bXBfY3B1X3BwYzY0LmggZnJvbSBicmVha3BhZAotK2VudW0g TWluaWR1bXBDb250ZXh0UFBDNjRGbGFncyA6IHVpbnQzMl90IHsKLSsgIC8vISBcYnJpZWYgSWRl bnRpZmllcyB0aGUgY29udGV4dCBhcyBQUEM2NC4KLSsgIGtNaW5pZHVtcENvbnRleHRQUEM2NCA9 IDB4MDEwMDAwMDAsCi0rCi0rICAvLyEgXGJyaWVmIEluZGljYXRlcyB0aGUgdmFsaWRpdHkgb2Yg Z2VuZXJhbCBwdXJwb3NlIHJlZ2lzdGVycy4KLSsgIC8vIQotKyAgLy8hIFJlZ2lzdGVycyBgcjBg LWByMzFgLCBgbmlwYCwgYG1zcmAsIGBscmAsIGV0Yy4gYXJlIHZhbGlkLgotKyAga01pbmlkdW1w Q29udGV4dFBQQzY0QmFzZSA9IGtNaW5pZHVtcENvbnRleHRQUEM2NCB8IDB4MDAwMDAwMDEsCi0r Ci0rICAvLyEgXGJyaWVmIEluZGljYXRlcyB0aGUgdmFsaWRpdHkgb2YgZmxvYXRpbmcgcG9pbnQg cmVnaXN0ZXJzLgotKyAgLy8hCi0rICAvLyEgUmVnaXN0ZXJzIGBmcDBgLWBmcDMxYCwgYGZwc2Ny YCBhcmUgdmFsaWQuCi0rICBrTWluaWR1bXBDb250ZXh0UFBDNjRGbG9hdGluZyA9IGtNaW5pZHVt cENvbnRleHRQUEM2NCB8IDB4MDAwMDAwMDgsCi0rCi0rICAvLyEgXGJyaWVmIEluZGljYXRlcyB0 aGUgdmFsaWRpdHkgb2YgQWx0aXZlYy9WTVggcmVnaXN0ZXJzLgotKyAgLy8hCi0rICAvLyEgUmVn aXN0ZXJzIGB2MGAtYHYzMWAsIGB2c2NyYCwgYHZyc2F2ZWAuCi0rICBrTWluaWR1bXBDb250ZXh0 UFBDNjRWZWN0b3IgPSBrTWluaWR1bXBDb250ZXh0UFBDNjQgfCAweDAwMDAwMDIwLAotKwotKyAg Ly8hIFxicmllZiBJbmRpY2F0ZXMgdGhlIHZhbGlkaXR5IG9mIGFsbCByZWdpc3RlcnMKLSsgIGtN aW5pZHVtcENvbnRleHRQUEM2NEFsbCA9IGtNaW5pZHVtcENvbnRleHRQUEM2NEJhc2UgICAgIHwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtNaW5pZHVtcENvbnRleHRQUEM2NEZsb2F0 aW5nIHwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtNaW5pZHVtcENvbnRleHRQUEM2 NFZlY3RvcgotK307Ci0rCi0rLy8hIFxicmllZiBBIFBQQzY0IENQVSBjb250ZXh0IGNhcnJpZWQg aW4gYSBtaW5pZHVtcCBmaWxlLgotKy8vISBCYXNlZCBvbiBtaW5pZHVtcF9jcHVfcHBjNjQuaCBm cm9tIGJyZWFrcGFkLgotK3N0cnVjdCBNaW5pZHVtcENvbnRleHRQUEM2NCB7Ci0rICB1aW50NjRf dCBjb250ZXh0X2ZsYWdzOwotKwotKyAgLy8hIFxicmllZiBHZW5lcmFsIHB1cnBvc2UgcmVnaXN0 ZXJzLgotKyAgdWludDY0X3QgbmlwOwotKyAgdWludDY0X3QgbXNyOwotKyAgdWludDY0X3QgcmVn c1szMl07Ci0rICB1aW50NjRfdCBjY3I7Ci0rICB1aW50NjRfdCB4ZXI7Ci0rICB1aW50NjRfdCBs bms7Ci0rICB1aW50NjRfdCBjdHI7Ci0rCi0rICAvLyEgXGJyaWVmIEZsb2F0aW5nIHBvaW50IHJl Z2lzdGVycy4KLSsgIGRvdWJsZSBmcHJlZ3NbMzJdOwotKwotKyAgLy8hIFxicmllZiBGUFUgc3Rh dHVzIHJlZ2lzdGVyLgotKyAgZG91YmxlIGZwc2NyOwotKwotKyAgLy8hIFxicmllZiBBbHRpdmVj L1ZNWCB2ZWN0b3IgcmVnaXN0ZXJzLgotKyAgc3RydWN0IHsKLSsgICAgICAvLyEgXGJyaWVmIFZl Y3RvciByZWdpc3RlcnMgYXJlIDEyOGJpdHMuCi0rICAgICAgdWludDEyOF9zdHJ1Y3Qgc2F2ZV92 clszMl07Ci0rICAgICAgdWludDEyOF9zdHJ1Y3Qgc2F2ZV92c2NyOwotKwotKyAgICAgIC8vISBc YnJpZWYgUGFkZGluZyBpbmNsdWRlZCBmb3IgYnJlYWtwYWQgY29tcGF0aWJpbHRpeS4KLSsgICAg ICB1aW50MzJfdCBzYXZlX3BhZDVbNF07Ci0rCi0rICAgICAgLy8hIFxicmllZiBWUlNBVkUgcmVn aXN0ZXIuCi0rICAgICAgdWludDMyX3Qgc2F2ZV92cnNhdmU7Ci0rCi0rICAgICAgLy8hIFxicmll ZiBQYWRkaW5nIGluY2x1ZGVkIGZvciBicmVha3BhZCBjb21wYXRpYmlsdGl5LgotKyAgICAgIHVp bnQzMl90IHNhdmVfcGFkNls3XTsKLSsgIH0gdnJlZ3M7Ci0rfTsKLSsKLSB9ICAvLyBuYW1lc3Bh Y2UgY3Jhc2hwYWQKLSAKLSAjZW5kaWYgIC8vIENSQVNIUEFEX01JTklEVU1QX01JTklEVU1QX0NP TlRFWFRfSF8KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4dF93cml0ZXIuY2MK LSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hw YWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4dF93cml0ZXIuY2MKLUBAIC0xMDEs NiArMTAxLDEzIEBAIE1pbmlkdW1wQ29udGV4dFdyaXRlcjo6Q3JlYXRlRnJvbVNuYXBzaG90KGNv bnN0IENQVUNvbnRleHQqIGNvbnRleHRfc25hcHNob3QpIHsKLSAgICAgICBicmVhazsKLSAgICAg fQotIAotKyAgICBjYXNlIGtDUFVBcmNoaXRlY3R1cmVQUEM2NDogewotKyAgICAgIGNvbnRleHQg PSBzdGQ6Om1ha2VfdW5pcXVlPE1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyPigpOwotKyAgICAg IHJlaW50ZXJwcmV0X2Nhc3Q8TWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXIqPihjb250ZXh0Lmdl dCgpKQotKyAgICAgICAgICAtPkluaXRhbGl6ZUZyb21TbmFwc2hvdChjb250ZXh0X3NuYXBzaG90 LT5wcGM2NCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSsKLSAgICAgZGVmYXVsdDogewotICAg ICAgIExPRyhFUlJPUikgPDwgInVua25vd24gY29udGV4dCBhcmNoaXRlY3R1cmUgIgotICAgICAg ICAgICAgICAgICAgPDwgY29udGV4dF9zbmFwc2hvdC0+YXJjaGl0ZWN0dXJlOwotQEAgLTQ1Myw0 ICs0NjAsNDcgQEAgc2l6ZV90IE1pbmlkdW1wQ29udGV4dE1JUFM2NFdyaXRlcjo6Q29udGV4dFNp emUoKSBjb25zdCB7Ci0gICByZXR1cm4gc2l6ZW9mKGNvbnRleHRfKTsKLSB9Ci0gCi0rTWluaWR1 bXBDb250ZXh0UFBDNjRXcml0ZXI6Ok1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyKCkKLSsgIDog TWluaWR1bXBDb250ZXh0V3JpdGVyKCksIGNvbnRleHRfKCkgewotKyAgICBjb250ZXh0Xy5jb250 ZXh0X2ZsYWdzID0ga01pbmlkdW1wQ29udGV4dFBQQzY0OwotK30KLSsKLStNaW5pZHVtcENvbnRl eHRQUEM2NFdyaXRlcjo6fk1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyKCkgPSBkZWZhdWx0Owot KwotK3ZvaWQgTWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXI6OkluaXRhbGl6ZUZyb21TbmFwc2hv dCgKLSsgICAgY29uc3QgQ1BVQ29udGV4dFBQQzY0KiBjb250ZXh0X3NuYXBzaG90KSB7Ci0rICBE Q0hFQ0tfRVEoc3RhdGUoKSwga1N0YXRlTXV0YWJsZSk7Ci0rICBEQ0hFQ0tfRVEoY29udGV4dF8u Y29udGV4dF9mbGFncywga01pbmlkdW1wQ29udGV4dFBQQzY0KTsKLSsKLSsgIGNvbnRleHRfLmNv bnRleHRfZmxhZ3MgPSBrTWluaWR1bXBDb250ZXh0UFBDNjRBbGw7Ci0rCi0rICBtZW1jcHkoY29u dGV4dF8ucmVncywgY29udGV4dF9zbmFwc2hvdC0+cmVncywgc2l6ZW9mKGNvbnRleHRfLnJlZ3Mp KTsKLSsgIGNvbnRleHRfLm5pcCA9IGNvbnRleHRfc25hcHNob3QtPm5pcDsKLSsgIGNvbnRleHRf Lm1zciA9IGNvbnRleHRfc25hcHNob3QtPm1zcjsKLSsgIGNvbnRleHRfLmNjciA9IGNvbnRleHRf c25hcHNob3QtPmNjcjsKLSsgIGNvbnRleHRfLnhlciA9IGNvbnRleHRfc25hcHNob3QtPnhlcjsK LSsgIGNvbnRleHRfLmxuayA9IGNvbnRleHRfc25hcHNob3QtPmxuazsKLSsgIGNvbnRleHRfLmN0 ciA9IGNvbnRleHRfc25hcHNob3QtPmN0cjsKLSsKLSsgIG1lbWNweShjb250ZXh0Xy5mcHJlZ3Ms IGNvbnRleHRfc25hcHNob3QtPmZwcmVncywgc2l6ZW9mKGNvbnRleHRfLmZwcmVncykpOwotKyAg Y29udGV4dF8uZnBzY3IgPSBjb250ZXh0X3NuYXBzaG90LT5mcHNjcjsKLSsKLSsgIG1lbWNweShj b250ZXh0Xy52cmVncy5zYXZlX3ZyLCBjb250ZXh0X3NuYXBzaG90LT52cmVncy5zYXZlX3ZyLAot KyAgICAgICAgIHNpemVvZihjb250ZXh0Xy52cmVncy5zYXZlX3ZyKSk7Ci0rICBtZW1jcHkoJmNv bnRleHRfLnZyZWdzLnNhdmVfdnNjciwgJmNvbnRleHRfc25hcHNob3QtPnZyZWdzLnNhdmVfdnNj ciwKLSsgICAgICAgICBzaXplb2YoY29udGV4dF8udnJlZ3Muc2F2ZV92c2NyKSk7Ci0rICBjb250 ZXh0Xy52cmVncy5zYXZlX3Zyc2F2ZSA9IGNvbnRleHRfc25hcHNob3QtPnZyZWdzLnNhdmVfdnJz YXZlOwotK30KLSsKLStib29sIE1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyOjpXcml0ZU9iamVj dCgKLSsgICAgRmlsZVdyaXRlckludGVyZmFjZSogZmlsZV93cml0ZXIpIHsKLSsgIERDSEVDS19F UShzdGF0ZSgpLCBrU3RhdGVXcml0YWJsZSk7Ci0rICByZXR1cm4gZmlsZV93cml0ZXItPldyaXRl KCZjb250ZXh0Xywgc2l6ZW9mKGNvbnRleHRfKSk7Ci0rfQotKwotK3NpemVfdCBNaW5pZHVtcENv bnRleHRQUEM2NFdyaXRlcjo6Q29udGV4dFNpemUoKSBjb25zdCB7Ci0rICBEQ0hFQ0tfR0Uoc3Rh dGUoKSwga1N0YXRlRnJvemVuKTsKLSsgIHJldHVybiBzaXplb2YoY29udGV4dF8pOwotK30KLSsK LSB9ICAvLyBuYW1lc3BhY2UgY3Jhc2hwYWQKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBf Y29udGV4dF93cml0ZXIuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9jb250ZXh0X3dy aXRlci5oCi1AQCAtMzE1LDYgKzMxNSw0NSBAQCBjbGFzcyBNaW5pZHVtcENvbnRleHRNSVBTNjRX cml0ZXIgZmluYWwgOiBwdWJsaWMgTWluaWR1bXBDb250ZXh0V3JpdGVyIHsKLSAgIERJU0FMTE9X X0NPUFlfQU5EX0FTU0lHTihNaW5pZHVtcENvbnRleHRNSVBTNjRXcml0ZXIpOwotIH07Ci0gCi0r Y2xhc3MgTWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXIgZmluYWwgOiBwdWJsaWMgTWluaWR1bXBD b250ZXh0V3JpdGVyIHsKLSsgcHVibGljOgotKyAgTWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXIo KTsKLSsgIH5NaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlcigpIG92ZXJyaWRlOwotKwotKyAgLy8h IFxicmllZiBJbml0YWxpemVzIHRoZSBNaW5pZHVtcENvbnRleHRQUEM2NCBiYXNlZCBvbiBcYSBj b250ZXh0X3NuYXBzaG90LgotKyAgLy8hCi0rICAvLyEgXHBhcmFtW2luXSBjb250ZXh0X3NuYXBz aG90IFRoZSBjb250ZXh0IHNuYXBzaG90IHRvIHVzZSBhcyBzb3VyY2UgZGF0YS4KLSsgIC8vIQot KyAgLy8hIFxub3RlIFZhbGlkIGluICNrU3RhdGVNdXRhYmxlLiBObyBtdXRhdGlvbiBvZiBjb250 ZXh0KCkgbWF5IGJlIGRvbmUgYmVmb3JlCi0rICAvLyEgICAgIGNhbGxpbmcgdGhpcyBtZXRob2Qs IGFuZCBpdCBpcyBub3Qgbm9ybWFsbHkgbmVjZXNzYXJ5IHRvIGFsdGVyCi0rICAvLyEgICAgIGNv bnRleHQoKSBhZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kLgotKyAgdm9pZCBJbml0YWxpemVGcm9t U25hcHNob3QoY29uc3QgQ1BVQ29udGV4dFBQQzY0KiBjb250ZXh0X3NuYXBzaG90KTsKLSsKLSsg IC8vISBcYnJpZWYgUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGNvbnRleHQgc3RydWN0dXJlIHRo YXQgdGhpcyBvYmplY3Qgd2lsbAotKyAgLy8hICAgICB3cml0ZS4KLSsgIC8vIQotKyAgLy8hIFxh dHRlbnRpb24gVGhpcyByZXR1cm5zIGEgbm9uLWBjb25zdGAgcG9pbnRlciB0byB0aGlzIG9iamVj dOKAmXMgcHJpdmF0ZQotKyAgLy8hICAgICBkYXRhIHNvIHRoYXQgYSBjYWxsZXIgY2FuIHBvcHVs YXRlIHRoZSBjb250ZXh0IHN0cnVjdHVyZSBkaXJlY3RseS4KLSsgIC8vISAgICAgVGhpcyBpcyBk b25lIGJlY2F1c2UgcHJvdmlkaW5nIHNldHRlciBpbnRlcmZhY2VzIHRvIGVhY2ggZmllbGQgaW4g dGhlCi0rICAvLyEgICAgIGNvbnRleHQgc3RydWN0dXJlIHdvdWxkIGJlIHVud2llbGR5IGFuZCBj dW1iZXJzb21lLiBDYXJlIG11c3QgYmUgdGFrZW4KLSsgIC8vISAgICAgdG8gcG9wdWxhdGUgdGhl IGNvbnRleHQgc3RydWN0dXJlIGNvcnJlY3RseS4gVGhlIGNvbnRleHQgc3RydWN0dXJlCi0rICAv LyEgICAgIG11c3Qgb25seSBiZSBtb2RpZmllZCB3aGlsZSB0aGlzIG9iamVjdCBpcyBpbiB0aGUg I2tTdGF0ZU11dGFibGUKLSsgIC8vISAgICAgc3RhdGUuCi0rICBNaW5pZHVtcENvbnRleHRQUEM2 NCogY29udGV4dCgpIHsgcmV0dXJuICZjb250ZXh0XzsgfQotKwotKyBwcm90ZWN0ZWQ6Ci0rICAv LyBNaW5pZHVtcFdyaXRhYmxlOgotKyAgYm9vbCBXcml0ZU9iamVjdChGaWxlV3JpdGVySW50ZXJm YWNlKiBmaWxlX3dyaXRlcikgb3ZlcnJpZGU7Ci0rCi0rICAvLyBNaW5pZHVtcENvbnRleHRXcml0 ZXI6Ci0rICBzaXplX3QgQ29udGV4dFNpemUoKSBjb25zdCBvdmVycmlkZTsKLSsKLSsgcHJpdmF0 ZToKLSsgIE1pbmlkdW1wQ29udGV4dFBQQzY0IGNvbnRleHRfOwotKwotKyAgRElTQUxMT1dfQ09Q WV9BTkRfQVNTSUdOKE1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyKTsKLSt9OwotKwotIH0gIC8v IG5hbWVzcGFjZSBjcmFzaHBhZAotIAotICNlbmRpZiAgLy8gQ1JBU0hQQURfTUlOSURVTVBfTUlO SURVTVBfQ09OVEVYVF9XUklURVJfSF8KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29u dGV4dF93cml0ZXJfdGVzdC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9jb250ZXh0 X3dyaXRlcl90ZXN0LmNjCi1AQCAtMjEzLDYgKzIxMywyMSBAQCBURVNUKE1pbmlkdW1wQ29udGV4 dFdyaXRlciwgTUlQUzY0X0Zyb21TbmFwc2hvdCkgewotICAgICAgIGNvbnRleHQsIEV4cGVjdE1p bmlkdW1wQ29udGV4dE1JUFM2NCwga1NlZWQpOwotIH0KLSAKLStURVNUKE1pbmlkdW1wQ29udGV4 dFdyaXRlciwgUFBDNjRfWmVyb3MpIHsKLSsgIEVtcHR5Q29udGV4dFRlc3Q8TWluaWR1bXBDb250 ZXh0UFBDNjRXcml0ZXIsIE1pbmlkdW1wQ29udGV4dFBQQzY0PigKLSsgICAgRXhwZWN0TWluaWR1 bXBDb250ZXh0UFBDNjQpOwotK30KLSsKLStURVNUKE1pbmlkdW1wQ29udGV4dFdyaXRlciwgUFBD NjRfRnJvbVNuYXBzaG90KSB7Ci0rICBjb25zdGV4cHIgdWludDMyX3Qga1NlZWQgPSA2NDsKLSsg IENQVUNvbnRleHRQUEM2NCBjb250ZXh0X3BwYzY0OwotKyAgQ1BVQ29udGV4dCBjb250ZXh0Owot KyAgY29udGV4dC5wcGM2NCA9ICZjb250ZXh0X3BwYzY0OwotKyAgSW5pdGlhbGl6ZUNQVUNvbnRl eHRQUEM2NCgmY29udGV4dCwga1NlZWQpOwotKyAgRnJvbVNuYXBzaG90VGVzdDxNaW5pZHVtcENv bnRleHRQUEM2NFdyaXRlciwgTWluaWR1bXBDb250ZXh0UFBDNjQ+KAotKyAgICAgIGNvbnRleHQs IEV4cGVjdE1pbmlkdW1wQ29udGV4dFBQQzY0LCBrU2VlZCk7Ci0rfQotKwotIH0gIC8vIG5hbWVz cGFjZQotIH0gIC8vIG5hbWVzcGFjZSB0ZXN0Ci0gfSAgLy8gbmFtZXNwYWNlIGNyYXNocGFkCi0t LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFk L2NyYXNocGFkL21pbmlkdW1wL21pbmlkdW1wX21pc2NfaW5mb193cml0ZXIuY2MKLSsrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hw YWQvbWluaWR1bXAvbWluaWR1bXBfbWlzY19pbmZvX3dyaXRlci5jYwotQEAgLTEyNiw2ICsxMjYs OCBAQCBzdGQ6OnN0cmluZyBNaW5pZHVtcE1pc2NJbmZvRGVidWdCdWlsZFN0cmluZygpIHsKLSAg IHN0YXRpYyBjb25zdGV4cHIgY2hhciBrQ1BVW10gPSAibWlwcyI7Ci0gI2VsaWYgZGVmaW5lZChB UkNIX0NQVV9NSVBTNjRFTCkKLSAgIHN0YXRpYyBjb25zdGV4cHIgY2hhciBrQ1BVW10gPSAibWlw czY0IjsKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQotKyAgc3RhdGljIGNvbnN0ZXhw ciBjaGFyIGtDUFVbXSA9ICJwcGM2NCI7Ci0gI2Vsc2UKLSAjZXJyb3IgZGVmaW5lIGtDUFUgZm9y IHRoaXMgQ1BVCi0gI2VuZGlmCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2NhcHR1cmVfbWVtb3J5LmNj Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNo cGFkL2NyYXNocGFkL3NuYXBzaG90L2NhcHR1cmVfbWVtb3J5LmNjCi1AQCAtMTExLDYgKzExMSwx MSBAQCB2b2lkIENhcHR1cmVNZW1vcnk6OlBvaW50ZWRUb0J5Q29udGV4dChjb25zdCBDUFVDb250 ZXh0JiBjb250ZXh0LAotICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBiYXNlOjpzaXplKGNvbnRl eHQubWlwc2VsLT5yZWdzKTsgKytpKSB7Ci0gICAgIE1heWJlQ2FwdHVyZU1lbW9yeUFyb3VuZChk ZWxlZ2F0ZSwgY29udGV4dC5taXBzZWwtPnJlZ3NbaV0pOwotICAgfQotKyNlbGlmIGRlZmluZWQo QVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKyAgTWF5YmVDYXB0dXJlTWVtb3J5QXJvdW5kKGRlbGVn YXRlLCBjb250ZXh0LnBwYzY0LT5uaXApOwotKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBiYXNl OjpzaXplKGNvbnRleHQucHBjNjQtPnJlZ3MpOyArK2kpIHsKLSsgICAgTWF5YmVDYXB0dXJlTWVt b3J5QXJvdW5kKGRlbGVnYXRlLCBjb250ZXh0LnBwYzY0LT5yZWdzW2ldKTsKLSsgIH0KLSAjZWxz ZQotICNlcnJvciBQb3J0LgotICNlbmRpZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9jcHVfYXJjaGl0 ZWN0dXJlLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvY3B1X2FyY2hpdGVjdHVyZS5oCi1AQCAtNDMs NyArNDMsMTAgQEAgZW51bSBDUFVBcmNoaXRlY3R1cmUgewotICAga0NQVUFyY2hpdGVjdHVyZU1J UFNFTCwKLSAKLSAgIC8vISBcYnJpZWYgNjQtYml0IE1JUFNFTC4KLS0gIGtDUFVBcmNoaXRlY3R1 cmVNSVBTNjRFTAotKyAga0NQVUFyY2hpdGVjdHVyZU1JUFM2NEVMLAotKwotKyAgLy8hIFxicmll ZiA2NC1iaXQgUFBDNjQuCi0rICBrQ1BVQXJjaGl0ZWN0dXJlUFBDNjQKLSB9OwotIAotIH0gIC8v IG5hbWVzcGFjZSBjcmFzaHBhZAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9jcHVfY29udGV4dC5jYwot KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBh ZC9jcmFzaHBhZC9zbmFwc2hvdC9jcHVfY29udGV4dC5jYwotQEAgLTE2OSw2ICsxNjksOCBAQCB1 aW50NjRfdCBDUFVDb250ZXh0OjpJbnN0cnVjdGlvblBvaW50ZXIoKSBjb25zdCB7Ci0gICAgICAg cmV0dXJuIGFybS0+cGM7Ci0gICAgIGNhc2Uga0NQVUFyY2hpdGVjdHVyZUFSTTY0OgotICAgICAg IHJldHVybiBhcm02NC0+cGM7Ci0rICAgIGNhc2Uga0NQVUFyY2hpdGVjdHVyZVBQQzY0OgotKyAg ICAgIHJldHVybiBwcGM2NC0+bmlwOwotICAgICBkZWZhdWx0OgotICAgICAgIE5PVFJFQUNIRUQo KTsKLSAgICAgICByZXR1cm4gfjB1bGw7Ci1AQCAtMTg1LDYgKzE4Nyw4IEBAIHVpbnQ2NF90IENQ VUNvbnRleHQ6OlN0YWNrUG9pbnRlcigpIGNvbnN0IHsKLSAgICAgICByZXR1cm4gYXJtLT5zcDsK LSAgICAgY2FzZSBrQ1BVQXJjaGl0ZWN0dXJlQVJNNjQ6Ci0gICAgICAgcmV0dXJuIGFybTY0LT5z cDsKLSsgICAgY2FzZSBrQ1BVQXJjaGl0ZWN0dXJlUFBDNjQ6Ci0rICAgICAgcmV0dXJuIHBwYzY0 LT5yZWdzWzFdOwotICAgICBkZWZhdWx0OgotICAgICAgIE5PVFJFQUNIRUQoKTsKLSAgICAgICBy ZXR1cm4gfjB1bGw7Ci1AQCAtMTk2LDYgKzIwMCw3IEBAIGJvb2wgQ1BVQ29udGV4dDo6SXM2NEJp dCgpIGNvbnN0IHsKLSAgICAgY2FzZSBrQ1BVQXJjaGl0ZWN0dXJlWDg2XzY0OgotICAgICBjYXNl IGtDUFVBcmNoaXRlY3R1cmVBUk02NDoKLSAgICAgY2FzZSBrQ1BVQXJjaGl0ZWN0dXJlTUlQUzY0 RUw6Ci0rICAgIGNhc2Uga0NQVUFyY2hpdGVjdHVyZVBQQzY0OgotICAgICAgIHJldHVybiB0cnVl OwotICAgICBjYXNlIGtDUFVBcmNoaXRlY3R1cmVYODY6Ci0gICAgIGNhc2Uga0NQVUFyY2hpdGVj dHVyZUFSTToKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvY3B1X2NvbnRleHQuaAotKysrIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9z bmFwc2hvdC9jcHVfY29udGV4dC5oCi1AQCAtMzUyLDYgKzM1MiwyNCBAQCBzdHJ1Y3QgQ1BVQ29u dGV4dE1JUFM2NCB7Ci0gICB1aW50NjRfdCBmaXI7Ci0gfTsKLSAKLSsvLyEgXGJyaWVmIEEgY29u dGV4dCBzdHJ1Y3R1cmUgY2FycnlpbmcgUFBDNjQgQ1BVIHN0YXRlLgotK3N0cnVjdCBDUFVDb250 ZXh0UFBDNjQgewotKyAgdWludDY0X3QgbmlwOwotKyAgdWludDY0X3QgbXNyOwotKyAgdWludDY0 X3QgcmVnc1szMl07Ci0rICB1aW50NjRfdCBjY3I7Ci0rICB1aW50NjRfdCB4ZXI7Ci0rICB1aW50 NjRfdCBsbms7Ci0rICB1aW50NjRfdCBjdHI7Ci0rICBkb3VibGUgZnByZWdzWzMyXTsKLSsgIGRv dWJsZSBmcHNjcjsKLSsgIHN0cnVjdCB7Ci0rICAgIHVpbnQxMjhfc3RydWN0IHNhdmVfdnJbMzJd OwotKyAgICB1aW50MTI4X3N0cnVjdCBzYXZlX3ZzY3I7Ci0rICAgIHVpbnQzMl90IHNhdmVfdnJz YXZlOwotKyAgfSB2cmVnczsKLSt9OwotKwotIC8vISBcYnJpZWYgQSBjb250ZXh0IHN0cnVjdHVy ZSBjYXBhYmxlIG9mIGNhcnJ5aW5nIHRoZSBjb250ZXh0IG9mIGFueSBzdXBwb3J0ZWQKLSAvLyEg ICAgIENQVSBhcmNoaXRlY3R1cmUuCi0gc3RydWN0IENQVUNvbnRleHQgewotQEAgLTM4Miw2ICs0 MDAsNyBAQCBzdHJ1Y3QgQ1BVQ29udGV4dCB7Ci0gICAgIENQVUNvbnRleHRBUk02NCogYXJtNjQ7 Ci0gICAgIENQVUNvbnRleHRNSVBTKiBtaXBzZWw7Ci0gICAgIENQVUNvbnRleHRNSVBTNjQqIG1p cHM2NDsKLSsgICAgQ1BVQ29udGV4dFBQQzY0KiBwcGM2NDsKLSAgIH07Ci0gfTsKLSAKLS0tLSBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jh c2hwYWQvc25hcHNob3QvbGludXgvY3B1X2NvbnRleHRfbGludXguaAotKysrIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFw c2hvdC9saW51eC9jcHVfY29udGV4dF9saW51eC5oCi1AQCAtMTUsNiArMTUsNyBAQAotICNpZm5k ZWYgQ1JBU0hQQURfU05BUFNIT1RfTElOVVhfQ1BVX0NPTlRFWFRfTElOVVhfSF8KLSAjZGVmaW5l IENSQVNIUEFEX1NOQVBTSE9UX0xJTlVYX0NQVV9DT05URVhUX0xJTlVYX0hfCi0gCi0rI2luY2x1 ZGUgPGNzdHJpbmc+Ci0gI2luY2x1ZGUgImJ1aWxkL2J1aWxkX2NvbmZpZy5oIgotICNpbmNsdWRl ICJzbmFwc2hvdC9jcHVfY29udGV4dC5oIgotICNpbmNsdWRlICJzbmFwc2hvdC9saW51eC9zaWdu YWxfY29udGV4dC5oIgotQEAgLTE3NCw2ICsxNzUsNzggQEAgdm9pZCBJbml0aWFsaXplQ1BVQ29u dGV4dE1JUFMoCi0gCi0gI2VuZGlmICAvLyBBUkNIX0NQVV9NSVBTX0ZBTUlMWSB8fCBET1hZR0VO Ci0gCi0rI2lmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKSB8fCBET1hZR0VOCi0rCi0r Ly8hIFxicmllZiBJbml0YWxpemVzIGEgQ1BVQ29udGV4dFBQQzY0IHN0cnVjdHVyZSBmcm9tIG5h dGl2ZSBjb250ZXh0Ci0rLy8hICAgICBzdHJ1Y3R1cmVzIG9uIExpbnV4LgotKy8vIQotKy8vISBc cGFyYW1baW5dIHRocmVhZF9jb250ZXh0IFRoZSBuYXRpdmUgdGhyZWFkIGNvbnRleHQuCi0rLy8h IFxwYXJhbVtpbl0gZmxvYXRfY29udGV4dCBUaGUgbmF0aXZlIGZsb2F0IGNvbnRleHQuCi0rLy8h IFxwYXJhbVtpbl0gdmVjdG9yX2NvbnRleHQgVGhlIG5hdGl2ZSB2ZWN0b3IgY29udGV4dC4KLSsv LyEgXHBhcmFtW291dF0gY29udGV4dCBUaGUgQ1BVQ29udGV4dFBQQzY0IHN0cnVjdHVyZSB0byBp bml0YWxpemUuCi0rdGVtcGxhdGUgPHR5cGVuYW1lIFRyYWl0cz4KLSt2b2lkIEluaXRpYWxpemVD UFVDb250ZXh0UFBDNjQoCi0rICAgIGNvbnN0IFRocmVhZENvbnRleHQ6OnQ2NF90JiB0aHJlYWRf Y29udGV4dCwKLSsgICAgY29uc3QgRmxvYXRDb250ZXh0OjpmNjRfdCYgZmxvYXRfY29udGV4dCwK LSsgICAgY29uc3QgVmVjdG9yQ29udGV4dDo6djY0X3QmIHZlY3Rvcl9jb250ZXh0LAotKyAgICB0 eXBlbmFtZSBUcmFpdHM6OkNQVUNvbnRleHQqIGNvbnRleHQpIHsKLSsKLSsgIG1lbWNweShjb250 ZXh0LT5yZWdzLCB0aHJlYWRfY29udGV4dC5ncHIsIHNpemVvZihjb250ZXh0LT5yZWdzKSk7Ci0r ICBjb250ZXh0LT5uaXAgPSB0aHJlYWRfY29udGV4dC5uaXA7Ci0rICBjb250ZXh0LT5tc3IgPSB0 aHJlYWRfY29udGV4dC5tc3I7Ci0rICBjb250ZXh0LT5jY3IgPSB0aHJlYWRfY29udGV4dC5jY3I7 Ci0rICBjb250ZXh0LT54ZXIgPSB0aHJlYWRfY29udGV4dC54ZXI7Ci0rICBjb250ZXh0LT5sbmsg PSB0aHJlYWRfY29udGV4dC5sbms7Ci0rICBjb250ZXh0LT5jdHIgPSB0aHJlYWRfY29udGV4dC5j dHI7Ci0rCi0rICBtZW1jcHkoY29udGV4dC0+ZnByZWdzLCBmbG9hdF9jb250ZXh0LmZwcmVncywg c2l6ZW9mKGNvbnRleHQtPmZwcmVncykpOwotKyAgY29udGV4dC0+ZnBzY3IgPSBmbG9hdF9jb250 ZXh0LmZwc2NyOwotKwotKyAgZm9yICh1aW50OF90IGkgPSAwOyBpIDwgMzI7IGkrKykgewotKyAg ICBjb250ZXh0LT52cmVncy5zYXZlX3ZyW2ldID0gewotKyAgICAgICgoKHVpbnQ2NF90KXZlY3Rv cl9jb250ZXh0LnZycmVnc1tpXVswXSkgPDwgMzIpIHwKLSsgICAgICAgIHZlY3Rvcl9jb250ZXh0 LnZycmVnc1tpXVsxXSwKLSsgICAgICAoKCh1aW50NjRfdCl2ZWN0b3JfY29udGV4dC52cnJlZ3Nb aV1bMl0pIDw8IDMyKSB8Ci0rICAgICAgICB2ZWN0b3JfY29udGV4dC52cnJlZ3NbaV1bM10KLSsg ICAgfTsKLSsgIH0KLSsgIGNvbnRleHQtPnZyZWdzLnNhdmVfdnJzYXZlID0gdmVjdG9yX2NvbnRl eHQudnJzYXZlOwotKyAgY29udGV4dC0+dnJlZ3Muc2F2ZV92c2NyID0gezAsICh1aW50NjRfdCl2 ZWN0b3JfY29udGV4dC52c2NyLnZzY3Jfd29yZH07Ci0rfQotKwotK3RlbXBsYXRlIDx0eXBlbmFt ZSBUcmFpdHM+Ci0rdm9pZCBJbml0aWFsaXplQ1BVQ29udGV4dFBQQzY0KAotKyAgICBjb25zdCBT aWduYWxUaHJlYWRDb250ZXh0NjQgJnRocmVhZF9jb250ZXh0LAotKyAgICBjb25zdCBTaWduYWxG bG9hdENvbnRleHQ2NCAmZmxvYXRfY29udGV4dCwKLSsgICAgY29uc3QgU2lnbmFsVmVjdG9yQ29u dGV4dDY0ICZ2ZWN0b3JfY29udGV4dCwKLSsgICAgdHlwZW5hbWUgVHJhaXRzOjpDUFVDb250ZXh0 KiBjb250ZXh0KSB7Ci0rCi0rICBtZW1jcHkoY29udGV4dC0+cmVncywgdGhyZWFkX2NvbnRleHQu cmVncywgc2l6ZW9mKGNvbnRleHQtPnJlZ3MpKTsKLSsgIGNvbnRleHQtPm5pcCA9IHRocmVhZF9j b250ZXh0Lm5pcDsKLSsgIGNvbnRleHQtPm1zciA9IHRocmVhZF9jb250ZXh0Lm1zcjsKLSsgIGNv bnRleHQtPmNjciA9IHRocmVhZF9jb250ZXh0LmNjcjsKLSsgIGNvbnRleHQtPnhlciA9IHRocmVh ZF9jb250ZXh0LnhlcjsKLSsgIGNvbnRleHQtPmxuayA9IHRocmVhZF9jb250ZXh0LmxuazsKLSsg IGNvbnRleHQtPmN0ciA9IHRocmVhZF9jb250ZXh0LmN0cjsKLSsKLSsgIG1lbWNweShjb250ZXh0 LT5mcHJlZ3MsIGZsb2F0X2NvbnRleHQucmVncywgc2l6ZW9mKGNvbnRleHQtPmZwcmVncykpOwot KyAgY29udGV4dC0+ZnBzY3IgPSBmbG9hdF9jb250ZXh0LmZwc2NyOwotKwotKyAgZm9yICh1aW50 OF90IGkgPSAwOyBpIDwgMzI7IGkrKykgewotKyAgICBjb250ZXh0LT52cmVncy5zYXZlX3ZyW2ld ID0gewotKyAgICAgICgoKHVpbnQ2NF90KXZlY3Rvcl9jb250ZXh0LnZycmVnc1tpXVswXSkgPDwg MzIpIHwKLSsgICAgICAgIHZlY3Rvcl9jb250ZXh0LnZycmVnc1tpXVsxXSwKLSsgICAgICAoKCh1 aW50NjRfdCl2ZWN0b3JfY29udGV4dC52cnJlZ3NbaV1bMl0pIDw8IDMyKSB8Ci0rICAgICAgICB2 ZWN0b3JfY29udGV4dC52cnJlZ3NbaV1bM10KLSsgICAgfTsKLSsgIH0KLSsgIGNvbnRleHQtPnZy ZWdzLnNhdmVfdnJzYXZlID0gdmVjdG9yX2NvbnRleHQudnJzYXZlOwotKyAgY29udGV4dC0+dnJl Z3Muc2F2ZV92c2NyID0gezAsICh1aW50NjRfdCl2ZWN0b3JfY29udGV4dC52c2NyLnZzY3Jfd29y ZH07Ci0rfQotKwotKwotKyNlbmRpZgotKwotIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotIH0g IC8vIG5hbWVzcGFjZSBjcmFzaHBhZAotIAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9kZWJ1 Z19yZW5kZXp2b3VzX3Rlc3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvZGVidWdfcmVu ZGV6dm91c190ZXN0LmNjCi1AQCAtMTU5LDkgKzE1OSwxMSBAQCB2b2lkIFRlc3RBZ2FpbnN0VGFy Z2V0KFB0cmFjZUNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pIHsKLSAgICAgICAgICAgY29uc3QgYm9v bCBpc192ZHNvX21hcHBpbmcgPQotICAgICAgICAgICAgICAgZGV2aWNlID09IDAgJiYgaW5vZGUg PT0gMCAmJiBtYXBwaW5nX25hbWUgPT0gIlt2ZHNvXSI7Ci0gICAgICAgICAgIHN0YXRpYyBjb25z dGV4cHIgY2hhciBrUHJlZml4W10gPSAibGludXgtdmRzby5zby4iOwotKyAgICAgICAgICBzdGF0 aWMgY29uc3RleHByIGNoYXIga1ByZWZpeDY0W10gPSAibGludXgtdmRzbzY0LnNvLiI7Ci0gICAg ICAgICAgIHJldHVybiBpc192ZHNvX21hcHBpbmcgPT0KLSAgICAgICAgICAgICAgICAgIChtb2R1 bGVfbmFtZS5lbXB0eSgpIHx8Ci0tICAgICAgICAgICAgICAgICAgbW9kdWxlX25hbWUuY29tcGFy ZSgwLCBzdHJsZW4oa1ByZWZpeCksIGtQcmVmaXgpID09IDApOwotKyAgICAgICAgICAgICAgICAg IG1vZHVsZV9uYW1lLmNvbXBhcmUoMCwgc3RybGVuKGtQcmVmaXgpLCBrUHJlZml4KSA9PSAwIHx8 Ci0rICAgICAgICAgICAgICAgICAgbW9kdWxlX25hbWUuY29tcGFyZSgwLCBzdHJsZW4oa1ByZWZp eDY0KSwga1ByZWZpeDY0KSA9PSAwKTsKLSAgICAgICAgIH0sCi0gICAgICAgICBtb2R1bGVfbWFw cGluZy0+bmFtZSwKLSAgICAgICAgIG1vZHVsZV9tYXBwaW5nLT5kZXZpY2UsCi0tLS0gcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFk L3NuYXBzaG90L2xpbnV4L2V4Y2VwdGlvbl9zbmFwc2hvdF9saW51eC5jYwotKysrIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9z bmFwc2hvdC9saW51eC9leGNlcHRpb25fc25hcHNob3RfbGludXguY2MKLUBAIC0zMjMsNiArMzIz LDY5IEBAIGJvb2wgRXhjZXB0aW9uU25hcHNob3RMaW51eDo6UmVhZENvbnRleHQ8Q29udGV4dFRy YWl0czY0PigKLSAgICAgICByZWFkZXIsIGNvbnRleHRfYWRkcmVzcywgY29udGV4dF8ubWlwczY0 KTsKLSB9Ci0gCi0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0rCi0rdGVt cGxhdGUgPHR5cGVuYW1lIFRyYWl0cz4KLStzdGF0aWMgYm9vbCBSZWFkQ29udGV4dChQcm9jZXNz UmVhZGVyTGludXgqIHJlYWRlciwKLSsgICAgICAgICAgICAgICAgICAgICAgICBMaW51eFZNQWRk cmVzcyBjb250ZXh0X2FkZHJlc3MsCi0rICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUg VHJhaXRzOjpDUFVDb250ZXh0KiBkZXN0X2NvbnRleHQpIHsKLSsgIGNvbnN0IFByb2Nlc3NNZW1v cnkqIG1lbW9yeSA9IHJlYWRlci0+TWVtb3J5KCk7Ci0rCi0rICBMaW51eFZNQWRkcmVzcyBncF9y ZWdzX2FkZHJlc3MgPSBjb250ZXh0X2FkZHJlc3MgKwotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgb2Zmc2V0b2YoVUNvbnRleHQsIG1jb250ZXh0KSArCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRvZih0eXBlbmFtZSBUcmFpdHM6Ok1Db250ZXh0 LCBncF9yZWdzKTsKLSsKLSsgIHR5cGVuYW1lIFRyYWl0czo6U2lnbmFsVGhyZWFkQ29udGV4dCB0 aHJlYWRfY29udGV4dDsKLSsgIGlmICghbWVtb3J5LT5SZWFkKGdwX3JlZ3NfYWRkcmVzcywgc2l6 ZW9mKHRocmVhZF9jb250ZXh0KSwgJnRocmVhZF9jb250ZXh0KSkgewotKyAgICBMT0coRVJST1Ip IDw8ICJDb3VsZG4ndCByZWFkIGdwX3JlZ3MhIjsKLSsgICAgcmV0dXJuIGZhbHNlOwotKyAgfQot KwotKyAgTGludXhWTUFkZHJlc3MgZnBfcmVnc19hZGRyZXNzID0gY29udGV4dF9hZGRyZXNzICsK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldG9mKFVDb250ZXh0LCBt Y29udGV4dCkgKwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0b2Yo dHlwZW5hbWUgVHJhaXRzOjpNQ29udGV4dCwgZnBfcmVncyk7Ci0rCi0rICB0eXBlbmFtZSBUcmFp dHM6OlNpZ25hbEZsb2F0Q29udGV4dCBmcF9jb250ZXh0OwotKyAgaWYgKCFtZW1vcnktPlJlYWQo ZnBfcmVnc19hZGRyZXNzLCBzaXplb2YoZnBfY29udGV4dCksICZmcF9jb250ZXh0KSkgewotKyAg ICBMT0coRVJST1IpIDw8ICJDb3VsZG4ndCByZWFkIGZwX3JlZ3MhIjsKLSsgICAgcmV0dXJuIGZh bHNlOwotKyAgfQotKwotKyAgTGludXhWTUFkZHJlc3Mgdl9yZWdzX3B0cl9hZGRyZXNzID0gY29u dGV4dF9hZGRyZXNzICsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0 b2YoVUNvbnRleHQsIG1jb250ZXh0KSArCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG9mZnNldG9mKHR5cGVuYW1lIFRyYWl0czo6TUNvbnRleHQsIHZteF9yZXNlcnZlKSArIDg7 Ci0rCi0rICB0eXBlbmFtZSBUcmFpdHM6OlNpZ25hbFZlY3RvckNvbnRleHQgdl9jb250ZXh0Owot KyAgaWYgKCFtZW1vcnktPlJlYWQodl9yZWdzX3B0cl9hZGRyZXNzLCBzaXplb2Yodl9jb250ZXh0 KSwgJnZfY29udGV4dCkpIHsKLSsgICAgTE9HKEVSUk9SKSA8PCAiQ291bGRuJ3QgcmVhZCB2X3Jl Z3MhIjsKLSsgICAgcmV0dXJuIGZhbHNlOwotKyAgfQotKwotKyAgSW5pdGlhbGl6ZUNQVUNvbnRl eHRQUEM2NDxDb250ZXh0VHJhaXRzNjQ+KHRocmVhZF9jb250ZXh0LCBmcF9jb250ZXh0LAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICB2X2NvbnRleHQsIGRlc3RfY29udGV4dCk7Ci0rCi0r ICByZXR1cm4gdHJ1ZTsKLSt9Ci0rCi0rdGVtcGxhdGU8PgotK2Jvb2wgRXhjZXB0aW9uU25hcHNo b3RMaW51eDo6UmVhZENvbnRleHQ8Q29udGV4dFRyYWl0czY0PigKLSsgICAgUHJvY2Vzc1JlYWRl ckxpbnV4KiByZWFkZXIsCi0rICAgIExpbnV4Vk1BZGRyZXNzIGNvbnRleHRfYWRkcmVzcykgewot KyAgY29udGV4dF8uYXJjaGl0ZWN0dXJlID0ga0NQVUFyY2hpdGVjdHVyZVBQQzY0OwotKyAgY29u dGV4dF8ucHBjNjQgPSAmY29udGV4dF91bmlvbl8ucHBjNjQ7Ci0rCi0rICByZXR1cm4gaW50ZXJu YWw6OlJlYWRDb250ZXh0PENvbnRleHRUcmFpdHM2ND4oCi0rICAgICAgcmVhZGVyLCBjb250ZXh0 X2FkZHJlc3MsIGNvbnRleHRfLnBwYzY0KTsKLSt9Ci0rCi0rdGVtcGxhdGU8PgotK2Jvb2wgRXhj ZXB0aW9uU25hcHNob3RMaW51eDo6UmVhZENvbnRleHQ8Q29udGV4dFRyYWl0czMyPigKLSsgICAg UHJvY2Vzc1JlYWRlckxpbnV4KiByZWFkZXIsCi0rICAgIExpbnV4Vk1BZGRyZXNzIGNvbnRleHRf YWRkcmVzcykgewotKyAgLy8gUFBDNjQgaXMgNjQtYml0Ci0rICByZXR1cm4gZmFsc2U7Ci0rfQot KwotICNlbmRpZiAgLy8gQVJDSF9DUFVfWDg2X0ZBTUlMWQotIAotIGJvb2wgRXhjZXB0aW9uU25h cHNob3RMaW51eDo6SW5pdGlhbGl6ZShQcm9jZXNzUmVhZGVyTGludXgqIHByb2Nlc3NfcmVhZGVy LAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFz aHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9leGNlcHRpb25fc25hcHNob3RfbGludXguaAot KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBh ZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9leGNlcHRpb25fc25hcHNob3RfbGludXguaAotQEAg LTg0LDYgKzg0LDggQEAgY2xhc3MgRXhjZXB0aW9uU25hcHNob3RMaW51eCBmaW5hbCA6IHB1Ymxp YyBFeGNlcHRpb25TbmFwc2hvdCB7Ci0gI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlM WSkKLSAgICAgQ1BVQ29udGV4dE1JUFMgbWlwc2VsOwotICAgICBDUFVDb250ZXh0TUlQUzY0IG1p cHM2NDsKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsgICAgQ1BVQ29u dGV4dFBQQzY0IHBwYzY0OwotICNlbmRpZgotICAgfSBjb250ZXh0X3VuaW9uXzsKLSAgIENQVUNv bnRleHQgY29udGV4dF87Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2V4Y2VwdGlvbl9zbmFw c2hvdF9saW51eF90ZXN0LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2V4Y2VwdGlvbl9z bmFwc2hvdF9saW51eF90ZXN0LmNjCi1AQCAtMjk2LDcgKzI5NiwyOCBAQCB2b2lkIEV4cGVjdENv bnRleHQoY29uc3QgQ1BVQ29udGV4dCYgYWN0dWFsLCBjb25zdCBOYXRpdmVDUFVDb250ZXh0JiBl eHBlY3RlZCkgewotICAgICAgICAgICAgIDApOwotICN1bmRlZiBDUFVfQVJDSF9OQU1FCi0gfQot KyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotK3VzaW5nIE5hdGl2ZUNQVUNv bnRleHQgPSB1Y29udGV4dF90OwotKwotK3ZvaWQgSW5pdGlhbGl6ZUNvbnRleHQoTmF0aXZlQ1BV Q29udGV4dCogY29udGV4dCkgewotKyAgZm9yIChzaXplX3QgcmVnID0gMDsgcmVnIDwgMzI7ICsr cmVnKSB7Ci0rICAgIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbcmVnXSA9IHJlZzsKLSsg IH0KLSsKLSsgIG1lbXNldCgmY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVncywgNDQsCi0rICAg ICAgc2l6ZW9mKGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3MpKTsKLSt9Ci0gCi0rdm9pZCBF eHBlY3RDb250ZXh0KGNvbnN0IENQVUNvbnRleHQmIGFjdHVhbCwgY29uc3QgTmF0aXZlQ1BVQ29u dGV4dCYgZXhwZWN0ZWQpIHsKLSsgIEVYUEVDVF9FUShhY3R1YWwuYXJjaGl0ZWN0dXJlLCBrQ1BV QXJjaGl0ZWN0dXJlUFBDNjQpOwotKwotKyAgZm9yIChzaXplX3QgcmVnID0gMDsgcmVnIDwgMzI7 ICsrcmVnKSB7Ci0rICAgIEVYUEVDVF9FUShhY3R1YWwucHBjNjQtPnJlZ3NbcmVnXSwgZXhwZWN0 ZWQudWNfbWNvbnRleHQuZ3BfcmVnc1tyZWddKTsKLSsgIH0KLSsKLSsgIEVYUEVDVF9FUShtZW1j bXAoYWN0dWFsLnBwYzY0LT5mcHJlZ3MsIGV4cGVjdGVkLnVjX21jb250ZXh0LmZwX3JlZ3MsCi0r ICAgICAgICAgICAgc2l6ZW9mKGFjdHVhbC5wcGM2NC0+ZnByZWdzKSksIDApOwotK30KLSAjZWxz ZQotICNlcnJvciBQb3J0LgotICNlbmRpZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9wcm9j ZXNzX3JlYWRlcl9saW51eC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9wcm9jZXNzX3Jl YWRlcl9saW51eC5jYwotQEAgLTEwOCw2ICsxMDgsOCBAQCB2b2lkIFByb2Nlc3NSZWFkZXJMaW51 eDo6VGhyZWFkOjpJbml0aWFsaXplU3RhY2soUHJvY2Vzc1JlYWRlckxpbnV4KiByZWFkZXIpIHsK LSAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQotICAgc3RhY2tfcG9pbnRlciA9 IHJlYWRlci0+SXM2NEJpdCgpID8gdGhyZWFkX2luZm8udGhyZWFkX2NvbnRleHQudDY0LnJlZ3Nb MjldCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0aHJlYWRfaW5mby50 aHJlYWRfY29udGV4dC50MzIucmVnc1syOV07Ci0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2 NF9GQU1JTFkpCi0rICBzdGFja19wb2ludGVyID0gdGhyZWFkX2luZm8udGhyZWFkX2NvbnRleHQu dDY0LmdwclsxXTsKLSAjZWxzZQotICNlcnJvciBQb3J0LgotICNlbmRpZgotLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9z bmFwc2hvdC9saW51eC9wcm9jZXNzX3JlYWRlcl9saW51eF90ZXN0LmNjCi0rKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3Nu YXBzaG90L2xpbnV4L3Byb2Nlc3NfcmVhZGVyX2xpbnV4X3Rlc3QuY2MKLUBAIC01OTEsNiArNTkx LDggQEAgYm9vbCBXcml0ZVRlc3RNb2R1bGUoY29uc3QgYmFzZTo6RmlsZVBhdGgmIG1vZHVsZV9w YXRoKSB7Ci0gICBtb2R1bGUuZWhkci5lX21hY2hpbmUgPSBFTV9BQVJDSDY0OwotICNlbGlmIGRl ZmluZWQoQVJDSF9DUFVfTUlQU0VMKSB8fCBkZWZpbmVkKEFSQ0hfQ1BVX01JUFM2NEVMKQotICAg bW9kdWxlLmVoZHIuZV9tYWNoaW5lID0gRU1fTUlQUzsKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BV X1BQQzY0KQotKyAgbW9kdWxlLmVoZHIuZV9tYWNoaW5lID0gRU1fUFBDNjQ7Ci0gI2VuZGlmCi0g Ci0gICBtb2R1bGUuZWhkci5lX3ZlcnNpb24gPSBFVl9DVVJSRU5UOwotLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFw c2hvdC9saW51eC9zaWduYWxfY29udGV4dC5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3Np Z25hbF9jb250ZXh0LmgKLUBAIC00MjIsNiArNDIyLDg5IEBAIHN0YXRpY19hc3NlcnQob2Zmc2V0 b2YoVUNvbnRleHQ8Q29udGV4dFRyYWl0czY0PiwgbWNvbnRleHQuZnByZWdzKSA9PQotICAgICAg ICAgICAgICAgImNvbnRleHQgb2Zmc2V0IG1pc21hdGNoIik7Ci0gI2VuZGlmCi0gCi0rI2VsaWYg ZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0rCi0rc3RydWN0IFNpZ25hbFRocmVhZENv bnRleHQ2NCB7Ci0rICB1aW50NjRfdCByZWdzWzMyXTsKLSsgIHVpbnQ2NF90IG5pcDsKLSsgIHVp bnQ2NF90IG1zcjsKLSsgIHVpbnQ2NF90IG9yaWdfcjM7Ci0rICB1aW50NjRfdCBjdHI7Ci0rICB1 aW50NjRfdCBsbms7Ci0rICB1aW50NjRfdCB4ZXI7Ci0rICB1aW50NjRfdCBjY3I7Ci0rICB1aW50 NjRfdCBzb2Z0ZTsKLSsgIHVpbnQ2NF90IHRyYXA7Ci0rICB1aW50NjRfdCBkYXI7Ci0rICB1aW50 NjRfdCBkc2lzcjsKLSsgIHVpbnQ2NF90IHJlc3VsdDsKLSsgIHVpbnQ2NF90IGRzY3I7Ci0rICB1 aW50NjRfdCBmcHIwWzNdOwotK307Ci0rCi0rc3RydWN0IFNpZ25hbEZsb2F0Q29udGV4dDY0IHsK LSsgIGRvdWJsZSByZWdzWzMyXTsKLSsgIGRvdWJsZSBmcHNjcjsKLSt9OwotKwotK3N0cnVjdCBT aWduYWxWZWN0b3JDb250ZXh0NjQgewotKyAgaW50MzJfdCB2cnJlZ3NbMzJdWzRdOwotKyAgc3Ry dWN0IHsKLSsgICAgaW50MzJfdCBfX3BhZFszXTsKLSsgICAgaW50MzJfdCB2c2NyX3dvcmQ7Ci0r ICB9IHZzY3I7Ci0rICBpbnQzMl90IHZyc2F2ZTsKLSsgIGludDMyX3QgX19wYWRbM107Ci0rfSBf X2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygxNikpKTsKLSsKLSsKLSsjcHJhZ21hIHBhY2socG9w KQotK3N0cnVjdCBNQ29udGV4dDY0IHsKLSsgIHVpbnQ2NF90IHJlc2VydmVkWzRdOwotKyAgaW50 MzJfdCBzaWduYWw7Ci0rICBpbnQzMl90IF9fcGFkMDsKLSsgIHVpbnQ2NF90IGhhbmRsZXI7Ci0r ICB1aW50NjRfdCBvbGRtYXNrOwotKyAgdWludDY0X3QgcHRfcmVnc19wdHI7Ci0rICBTaWduYWxU aHJlYWRDb250ZXh0NjQgZ3BfcmVnczsKLSsgIFNpZ25hbEZsb2F0Q29udGV4dDY0ICBmcF9yZWdz OwotKyAgU2lnbmFsVmVjdG9yQ29udGV4dDY0ICp2X3JlZ3M7Ci0rICBpbnQ2NF90IHZteF9yZXNl cnZlWzY5XTsKLSt9OwotKwotK3N0cnVjdCBDb250ZXh0VHJhaXRzNjQgOiBwdWJsaWMgVHJhaXRz NjQgewotKyAgdXNpbmcgTUNvbnRleHQgPSBNQ29udGV4dDY0OwotKyAgdXNpbmcgU2lnbmFsVGhy ZWFkQ29udGV4dCA9IFNpZ25hbFRocmVhZENvbnRleHQ2NDsKLSsgIHVzaW5nIFNpZ25hbEZsb2F0 Q29udGV4dCA9IFNpZ25hbEZsb2F0Q29udGV4dDY0OwotKyAgdXNpbmcgU2lnbmFsVmVjdG9yQ29u dGV4dCA9IFNpZ25hbFZlY3RvckNvbnRleHQ2NDsKLSsgIHVzaW5nIENQVUNvbnRleHQgPSBDUFVD b250ZXh0UFBDNjQ7Ci0rfTsKLSsKLStzdHJ1Y3QgQ29udGV4dFRyYWl0czMyIDogcHVibGljIFRy YWl0czMyIHt9OwotKwotK3N0cnVjdCBVQ29udGV4dCB7Ci0rICB1aW50NjRfdCBmbGFnczsKLSsg IHVpbnQ2NF90IGxpbms7Ci0rICBTaWduYWxTdGFjazxDb250ZXh0VHJhaXRzNjQ+IHN0YWNrOwot KyAgU2lnc2V0PENvbnRleHRUcmFpdHM2ND4gc2lnbWFzazsKLSsgIE1Db250ZXh0NjQgbWNvbnRl eHQ7Ci0rfTsKLSsjcHJhZ21hIHBhY2socHVzaCwgMSkKLSsKLStzdGF0aWNfYXNzZXJ0KHNpemVv ZihVQ29udGV4dCkgPT0gc2l6ZW9mKHVjb250ZXh0X3QpLAotKyAgICAgICAgICAgICAgInVjb250 ZXh0X3Qgc2l6ZSBtaXNtYXRjaCIpOwotK3N0YXRpY19hc3NlcnQoc2l6ZW9mKE1Db250ZXh0NjQp ID09IHNpemVvZihtY29udGV4dF90KSwKLSsgICAgICAgICAgICAgICJtY29udGV4dF90IHNpemUg bWlzbWF0Y2giKTsKLStzdGF0aWNfYXNzZXJ0KHNpemVvZihTaWduYWxUaHJlYWRDb250ZXh0NjQp ID09IHNpemVvZihncmVnc2V0X3QpLAotKyAgICAgICAgICAgICAgImdyZWdzZXRfdCBzaXplIG1p c21hdGNoIik7Ci0rc3RhdGljX2Fzc2VydChzaXplb2YoU2lnbmFsRmxvYXRDb250ZXh0NjQpID09 IHNpemVvZihmcHJlZ3NldF90KSwKLSsgICAgICAgICAgICAgICJmcHJlZ3NldF90IHNpemUgbWlz bWF0Y2giKTsKLStzdGF0aWNfYXNzZXJ0KHNpemVvZihTaWduYWxWZWN0b3JDb250ZXh0NjQpID09 IHNpemVvZihfbGliY192cnN0YXRlKSwKLSsgICAgICAgICAgICAgICJ2cnN0YXRlIHNpemUgbWlz bWF0Y2giKTsKLStzdGF0aWNfYXNzZXJ0KG9mZnNldG9mKFVDb250ZXh0LCBtY29udGV4dCkgPT0K LSsgICAgICAgICAgICAgIG9mZnNldG9mKHVjb250ZXh0X3QsIHVjX21jb250ZXh0KSwgIm1jb250 ZXh0IG9mZnNldCBtaXNtYXRjaCIpOwotK3N0YXRpY19hc3NlcnQob2Zmc2V0b2YoTUNvbnRleHQ2 NCwgZ3BfcmVncykgPT0KLSsgICAgICAgICAgICAgIG9mZnNldG9mKG1jb250ZXh0X3QsIGdwX3Jl Z3MpLCAiZ3BfcmVncyBvZmZzZXQgbWlzbWF0Y2giKTsKLSAjZWxzZQotICNlcnJvciBQb3J0Lgot ICNlbmRpZiAgLy8gQVJDSF9DUFVfWDg2X0ZBTUlMWQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51 eC9zeXN0ZW1fc25hcHNob3RfbGludXguY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvc3lz dGVtX3NuYXBzaG90X2xpbnV4LmNjCi1AQCAtMjAzLDYgKzIwMyw4IEBAIENQVUFyY2hpdGVjdHVy ZSBTeXN0ZW1TbmFwc2hvdExpbnV4OjpHZXRDUFVBcmNoaXRlY3R1cmUoKSBjb25zdCB7Ci0gI2Vs aWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkKLSAgIHJldHVybiBwcm9jZXNzX3JlYWRl cl8tPklzNjRCaXQoKSA/IGtDUFVBcmNoaXRlY3R1cmVNSVBTNjRFTAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDoga0NQVUFyY2hpdGVjdHVyZU1JUFNFTDsKLSsjZWxpZiBk ZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsgIHJldHVybiBrQ1BVQXJjaGl0ZWN0dXJl UFBDNjQ7Ci0gI2Vsc2UKLSAjZXJyb3IgcG9ydCB0byB5b3VyIGFyY2hpdGVjdHVyZQotICNlbmRp ZgotQEAgLTIxOCw2ICsyMjAsOSBAQCB1aW50MzJfdCBTeXN0ZW1TbmFwc2hvdExpbnV4OjpDUFVS ZXZpc2lvbigpIGNvbnN0IHsKLSAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQot ICAgLy8gTm90IGltcGxlbWVudGFibGUgb24gTUlQUwotICAgcmV0dXJuIDA7Ci0rI2VsaWYgZGVm aW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0rICAvLyBOb3QgeWV0IGltcGxlbWVudGVkIG9u IFBQQzY0Ci0rICByZXR1cm4gMDsKLSAjZWxzZQotICNlcnJvciBwb3J0IHRvIHlvdXIgYXJjaGl0 ZWN0dXJlCi0gI2VuZGlmCi1AQCAtMjM4LDYgKzI0Myw5IEBAIHN0ZDo6c3RyaW5nIFN5c3RlbVNu YXBzaG90TGludXg6OkNQVVZlbmRvcigpIGNvbnN0IHsKLSAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BV X01JUFNfRkFNSUxZKQotICAgLy8gTm90IGltcGxlbWVudGFibGUgb24gTUlQUwotICAgcmV0dXJu IHN0ZDo6c3RyaW5nKCk7Ci0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0r ICAvLyBOb3QgeWV0IGltcGxlbWVudGVkIG9uIFBQQzY0Ci0rICByZXR1cm4gc3RkOjpzdHJpbmco KTsKLSAjZWxzZQotICNlcnJvciBwb3J0IHRvIHlvdXIgYXJjaGl0ZWN0dXJlCi0gI2VuZGlmCi1A QCAtMzcxLDYgKzM3OSw5IEBAIGJvb2wgU3lzdGVtU25hcHNob3RMaW51eDo6TlhFbmFibGVkKCkg Y29uc3QgewotICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCi0gICAvLyBOb3Qg aW1wbGVtZW50YWJsZSBvbiBNSVBTCi0gICByZXR1cm4gZmFsc2U7Ci0rI2VsaWYgZGVmaW5lZChB UkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0rICAvLyBOb3QgeWV0IGltcGxlbWVudGVkIG9uIFBQQzY0 Ci0rICByZXR1cm4gZmFsc2U7Ci0gI2Vsc2UKLSAjZXJyb3IgUG9ydC4KLSAjZW5kaWYgIC8vIEFS Q0hfQ1BVX1g4Nl9GQU1JTFkKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvdGhyZWFkX3NuYXBz aG90X2xpbnV4LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3RocmVhZF9zbmFwc2hvdF9s aW51eC5jYwotQEAgLTE4Niw2ICsxODYsMTQgQEAgYm9vbCBUaHJlYWRTbmFwc2hvdExpbnV4OjpJ bml0aWFsaXplKFByb2Nlc3NSZWFkZXJMaW51eCogcHJvY2Vzc19yZWFkZXIsCi0gICAgICAgICB0 aHJlYWQudGhyZWFkX2luZm8uZmxvYXRfY29udGV4dC5mMzIsCi0gICAgICAgICBjb250ZXh0Xy5t aXBzZWwpOwotICAgfQotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKyAg Y29udGV4dF8uYXJjaGl0ZWN0dXJlID0ga0NQVUFyY2hpdGVjdHVyZVBQQzY0OwotKyAgY29udGV4 dF8ucHBjNjQgPSAmY29udGV4dF91bmlvbl8ucHBjNjQ7Ci0rICBJbml0aWFsaXplQ1BVQ29udGV4 dFBQQzY0PENvbnRleHRUcmFpdHM2ND4oCi0rICAgICAgdGhyZWFkLnRocmVhZF9pbmZvLnRocmVh ZF9jb250ZXh0LnQ2NCwKLSsgICAgICB0aHJlYWQudGhyZWFkX2luZm8uZmxvYXRfY29udGV4dC5m NjQsCi0rICAgICAgdGhyZWFkLnRocmVhZF9pbmZvLnZlY3Rvcl9jb250ZXh0LnY2NCwKLSsgICAg ICBjb250ZXh0Xy5wcGM2NCk7Ci0gI2Vsc2UKLSAjZXJyb3IgUG9ydC4KLSAjZW5kaWYKLS0tLSBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jh c2hwYWQvc25hcHNob3QvbGludXgvdGhyZWFkX3NuYXBzaG90X2xpbnV4LmgKLSsrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQv c25hcHNob3QvbGludXgvdGhyZWFkX3NuYXBzaG90X2xpbnV4LmgKLUBAIC02OCw2ICs2OCw4IEBA IGNsYXNzIFRocmVhZFNuYXBzaG90TGludXggZmluYWwgOiBwdWJsaWMgVGhyZWFkU25hcHNob3Qg ewotICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCi0gICAgIENQVUNvbnRleHRN SVBTIG1pcHNlbDsKLSAgICAgQ1BVQ29udGV4dE1JUFM2NCBtaXBzNjQ7Ci0rI2VsaWYgZGVmaW5l ZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0rICAgIENQVUNvbnRleHRQUEM2NCBwcGM2NDsKLSAj ZWxzZQotICNlcnJvciBQb3J0LgotICNlbmRpZiAgLy8gQVJDSF9DUFVfWDg2X0ZBTUlMWQotLS0t IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9j cmFzaHBhZC91dGlsL2xpbnV4L2F1eGlsaWFyeV92ZWN0b3IuY2MKLSsrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9s aW51eC9hdXhpbGlhcnlfdmVjdG9yLmNjCi1AQCAtNTYsNiArNTYsMTEgQEAgYm9vbCBBdXhpbGlh cnlWZWN0b3I6OlJlYWQoUHRyYWNlQ29ubmVjdGlvbiogY29ubmVjdGlvbikgewotICAgICBpZiAo dHlwZSA9PSBBVF9JR05PUkUpIHsKLSAgICAgICBjb250aW51ZTsKLSAgICAgfQotKyNpZiBkZWZp bmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsgICAgaWYgKHR5cGUgPT0gQVRfSUdOT1JFUFBD KSB7Ci0rICAgICAgY29udGludWU7Ci0rICAgIH0KLSsjZW5kaWYKLSAgICAgaWYgKCFNYXBJbnNl cnRPclJlcGxhY2UoJnZhbHVlc18sIHR5cGUsIHZhbHVlLCBudWxscHRyKSkgewotICAgICAgIExP RyhFUlJPUikgPDwgImR1cGxpY2F0ZSBhdXh2IGVudHJ5IjsKLSAgICAgICByZXR1cm4gZmFsc2U7 Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNo cGFkL2NyYXNocGFkL3V0aWwvbGludXgvcHRyYWNlX2Jyb2tlci5jYwotKysrIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGls L2xpbnV4L3B0cmFjZV9icm9rZXIuY2MKLUBAIC05Myw4ICs5Myw4IEBAIGludCBQdHJhY2VCcm9r ZXI6OlJ1bigpIHsKLSB9Ci0gCi0gYm9vbCBQdHJhY2VCcm9rZXI6OkFsbG9jYXRlQXR0YWNobWVu dHMoKSB7Ci0tICBjb25zdGV4cHIgc2l6ZV90IHBhZ2Vfc2l6ZSA9IDQwOTY7Ci0tICBjb25zdGV4 cHIgc2l6ZV90IGFsbG9jX3NpemUgPQotKyAgc3RhdGljIHNpemVfdCBwYWdlX3NpemUgPSBnZXRw YWdlc2l6ZSgpOwotKyAgc2l6ZV90IGFsbG9jX3NpemUgPQotICAgICAgIChzaXplb2YoU2NvcGVk UHRyYWNlQXR0YWNoKSArIHBhZ2Vfc2l6ZSAtIDEpICYgfihwYWdlX3NpemUgLSAxKTsKLSAgIHZv aWQqIGFsbG9jID0gc2JyayhhbGxvY19zaXplKTsKLSAgIGlmIChyZWludGVycHJldF9jYXN0PGlu dHB0cl90PihhbGxvYykgPT0gLTEpIHsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9saW51eC9wdHJhY2VyLmNj Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNo cGFkL2NyYXNocGFkL3V0aWwvbGludXgvcHRyYWNlci5jYwotQEAgLTM5NCw2ICszOTQsNjQgQEAg Ym9vbCBHZXRUaHJlYWRBcmVhNjQocGlkX3QgdGlkLAotICAgcmV0dXJuIHRydWU7Ci0gfQotIAot KyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKy8vIFBQQzY0IGhhcyBoYWQg SEFWRV9BUkNIX1RSQUNFSE9PSyBzZXQgc2luY2UgMi42LjI3IChldmVuIGJlZm9yZSB4ODYgaGFk IGl0KS4KLSsvLyBUaGF0IG1lYW5zIHdlIGNhbiBzaW1wbHkgdXNlIFBUUkFDRV9HRVRSRUdFU0VU LgotKwotK3RlbXBsYXRlIDx0eXBlbmFtZSBEZXN0aW5hdGlvbj4KLStib29sIEdldFJlZ2lzdGVy U2V0KHBpZF90IHRpZCwgaW50IHNldCwgRGVzdGluYXRpb24qIGRlc3QsIGJvb2wgY2FuX2xvZykg ewotKyAgaW92ZWMgaW92OwotKyAgaW92Lmlvdl9iYXNlID0gcmVpbnRlcnByZXRfY2FzdDx2b2lk Kj4oZGVzdCk7Ci0rICBpb3YuaW92X2xlbiA9IHNpemVvZigqZGVzdCk7Ci0rICBpZiAocHRyYWNl KFBUUkFDRV9HRVRSRUdTRVQsIHRpZCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc2V0KSwgJmlv dikgIT0gMCkgewotKyAgICBQTE9HX0lGKEVSUk9SLCBjYW5fbG9nKSA8PCAicHRyYWNlIjsKLSsg ICAgcmV0dXJuIGZhbHNlOwotKyAgfQotKyAgaWYgKGlvdi5pb3ZfbGVuICE9IHNpemVvZigqZGVz dCkpIHsKLSsgICAgTE9HX0lGKEVSUk9SLCBjYW5fbG9nKSA8PCAiVW5leHBlY3RlZCByZWdpc3Rl cnMgc2l6ZSI7Ci0rICAgIHJldHVybiBmYWxzZTsKLSsgIH0KLSsgIHJldHVybiB0cnVlOwotK30K LSsKLStib29sIEdldFZlY3RvclJlZ2lzdGVyczY0KHBpZF90IHRpZCwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgIFZlY3RvckNvbnRleHQqIGNvbnRleHQsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICBib29sIGNhbl9sb2cpIHsKLSsgIHJldHVybiBHZXRSZWdpc3RlclNldCh0aWQsIE5U X1BQQ19WTVgsICZjb250ZXh0LT52NjQsIGNhbl9sb2cpOwotK30KLSsKLStib29sIEdldEZsb2F0 aW5nUG9pbnRSZWdpc3RlcnM2NChwaWRfdCB0aWQsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRmxvYXRDb250ZXh0KiBjb250ZXh0LAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJvb2wgY2FuX2xvZykgewotKyAgcmV0dXJuIEdldFJlZ2lzdGVyU2V0KHRpZCwg TlRfUFJGUFJFRywgJmNvbnRleHQtPmY2NCwgY2FuX2xvZyk7Ci0rfQotKwotK2Jvb2wgR2V0VGhy ZWFkQXJlYTY0KHBpZF90IHRpZCwKLSsgICAgICAgICAgICAgICAgICAgICBjb25zdCBUaHJlYWRD b250ZXh0JiBjb250ZXh0LAotKyAgICAgICAgICAgICAgICAgICAgIExpbnV4Vk1BZGRyZXNzKiBh ZGRyZXNzLAotKyAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuX2xvZykgewotKyAgLy8gUFBD NjQgZG9lc24ndCBoYXZlIFBUUkFDRV9HRVRfVEhSRUFEX0FSRUEgc2luY2UgdGhlIHRocmVhZCBw b2ludGVyCi0rICAvLyBpcyBzdG9yZWQgaW4gR1BSIDEzLgotKyAgVGhyZWFkQ29udGV4dDo6dDY0 X3QgdGM7Ci0rICBpZiAoIUdldFJlZ2lzdGVyU2V0KHRpZCwgTlRfUFJTVEFUVVMsICZ0YywgY2Fu X2xvZykpIHsKLSsgICAgTE9HX0lGKEVSUk9SLCBjYW5fbG9nKSA8PCAiVW5hYmxlIHRvIGdldCB0 aHJlYWQgcG9pbnRlciEiOwotKyAgICByZXR1cm4gZmFsc2U7Ci0rICB9Ci0rCi0rICAqYWRkcmVz cyA9IHRjLmdwclsxM107Ci0rCi0rICByZXR1cm4gdHJ1ZTsKLSt9Ci0rCi0rLy8gU3R1YnMgZm9y IDMyLWJpdCBmdW5jdGlvbnMgbm90IGFwcGxpY2FibGUgb24gUFBDNjQKLStib29sIEdldEZsb2F0 aW5nUG9pbnRSZWdpc3RlcnMzMihwaWRfdCB0aWQsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRmxvYXRDb250ZXh0KiBjb250ZXh0LAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJvb2wgY2FuX2xvZykgeyByZXR1cm4gZmFsc2U7IH0KLStib29sIEdldFRocmVh ZEFyZWEzMihwaWRfdCB0aWQsCi0rICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGhyZWFkQ29u dGV4dCAmY29udGV4dCwKLSsgICAgICAgICAgICAgICAgICAgICBMaW51eFZNQWRkcmVzcyAqYWRk cmVzcywKLSsgICAgICAgICAgICAgICAgICAgICBib29sIGNhbl9sb2cpIHsgcmV0dXJuIGZhbHNl OyB9Ci0rCi0gI2Vsc2UKLSAjZXJyb3IgUG9ydC4KLSAjZW5kaWYgIC8vIEFSQ0hfQ1BVX1g4Nl9G QU1JTFkKLUBAIC00ODYsNiArNTQ0LDkgQEAgYm9vbCBQdHJhY2VyOjpHZXRUaHJlYWRJbmZvKHBp ZF90IHRpZCwgVGhyZWFkSW5mbyogaW5mbykgewotICAgaWYgKGlzXzY0X2JpdF8pIHsKLSAgICAg cmV0dXJuIEdldEdlbmVyYWxQdXJwb3NlUmVnaXN0ZXJzNjQodGlkLCAmaW5mby0+dGhyZWFkX2Nv bnRleHQsIGNhbl9sb2dfKSAmJgotICAgICAgICAgICAgR2V0RmxvYXRpbmdQb2ludFJlZ2lzdGVy czY0KHRpZCwgJmluZm8tPmZsb2F0X2NvbnRleHQsIGNhbl9sb2dfKSAmJgotKyNpZiBkZWZpbmVk KEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsgICAgICAgICAgIEdldFZlY3RvclJlZ2lzdGVyczY0 KHRpZCwgJmluZm8tPnZlY3Rvcl9jb250ZXh0LCBjYW5fbG9nXykgJiYKLSsjZW5kaWYKLSAgICAg ICAgICAgIEdldFRocmVhZEFyZWE2NCh0aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg aW5mby0+dGhyZWFkX2NvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJmluZm8t PnRocmVhZF9zcGVjaWZpY19kYXRhX2FkZHJlc3MsCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGludXgvdGhy ZWFkX2luZm8uaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL2xpbnV4L3RocmVhZF9pbmZvLmgKLUBAIC0yOCw2 ICsyOCwxMCBAQAotICNpbmNsdWRlIDxhbmRyb2lkL2FwaS1sZXZlbC5oPgotICNlbmRpZgotIAot KyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsjaW5jbHVkZSA8c3lzL3Vjb250 ZXh0Lmg+Ci0rI2VuZGlmCi0rCi0gbmFtZXNwYWNlIGNyYXNocGFkIHsKLSAKLSAvLyEgXGJyaWVm IFRoZSBzZXQgb2YgZ2VuZXJhbCBwdXJwb3NlIHJlZ2lzdGVycyBmb3IgYW4gYXJjaGl0ZWN0dXJl IGZhbWlseS4KLUBAIC03OSw2ICs4Myw4IEBAIHVuaW9uIFRocmVhZENvbnRleHQgewotICAgICB1 aW50MzJfdCBjcDBfc3RhdHVzOwotICAgICB1aW50MzJfdCBjcDBfY2F1c2U7Ci0gICAgIHVpbnQz Ml90IHBhZGRpbmcxXzsKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsg ICAgLy8gUFBDNjQgaXMgNjQtYml0Ci0gI2Vsc2UKLSAjZXJyb3IgUG9ydC4KLSAjZW5kaWYgIC8v IEFSQ0hfQ1BVX1g4Nl9GQU1JTFkKLUBAIC0xMzIsNiArMTM4LDIxIEBAIHVuaW9uIFRocmVhZENv bnRleHQgewotICAgICB1aW50NjRfdCBjcDBfYmFkdmFkZHI7Ci0gICAgIHVpbnQ2NF90IGNwMF9z dGF0dXM7Ci0gICAgIHVpbnQ2NF90IGNwMF9jYXVzZTsKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BV X1BQQzY0X0ZBTUlMWSkKLSsgICAgLy8gUmVmbGVjdHMgc3RydWN0IHB0X3JlZ3MgaW4gYXNtL3B0 cmFjZS5oLgotKyAgICB1aW50NjRfdCBncHJbMzJdOwotKyAgICB1aW50NjRfdCBuaXA7Ci0rICAg IHVpbnQ2NF90IG1zcjsKLSsgICAgdWludDY0X3Qgb3JpZ19ncHIzOwotKyAgICB1aW50NjRfdCBj dHI7Ci0rICAgIHVpbnQ2NF90IGxuazsKLSsgICAgdWludDY0X3QgeGVyOwotKyAgICB1aW50NjRf dCBjY3I7Ci0rICAgIHVpbnQ2NF90IHNvZnRlOwotKyAgICB1aW50NjRfdCB0cmFwOwotKyAgICB1 aW50NjRfdCBkYXI7Ci0rICAgIHVpbnQ2NF90IGRzaXNyOwotKyAgICB1aW50NjRfdCByZXN1bHQ7 Ci0gI2Vsc2UKLSAjZXJyb3IgUG9ydC4KLSAjZW5kaWYgIC8vIEFSQ0hfQ1BVX1g4Nl9GQU1JTFkK LUBAIC0xNDMsNiArMTY0LDggQEAgdW5pb24gVGhyZWFkQ29udGV4dCB7Ci0gICB1c2luZyBOYXRp dmVUaHJlYWRDb250ZXh0ID0gdXNlcl9yZWdzOwotICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQ U19GQU1JTFkpCi0gLy8gTm8gYXBwcm9wcmlhdGUgTmF0aXZlVGhyZWFkc0NvbnRleHQgdHlwZSBh dmFpbGFibGUgZm9yIE1JUFMKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkK LSsgIHVzaW5nIE5hdGl2ZVRocmVhZENvbnRleHQgPSBzdHJ1Y3QgcHRfcmVnczsKLSAjZWxzZQot ICNlcnJvciBQb3J0LgotICNlbmRpZiAgLy8gQVJDSF9DUFVfWDg2X0ZBTUlMWSB8fCBBUkNIX0NQ VV9BUk02NAotQEAgLTIxOCw2ICsyNDEsOSBAQCB1bmlvbiBGbG9hdENvbnRleHQgewotICAgICB9 IGZwcmVnc1szMl07Ci0gICAgIHVpbnQzMl90IGZwY3NyOwotICAgICB1aW50MzJfdCBmcHVfaWQ7 Ci0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0rICAgIC8vIENyYXNocGFk J3MgUFBDIHN1cHBvcnQgaXMgNjQtYml0IG9ubHksIHNvIHRoaXMKLSsgICAgLy8gMzJiaXQtb25s eSBzdHJ1Y3QgaXMgZGVjbGFyZWQgYXMgZW1wdHkuCi0gI2Vsc2UKLSAjZXJyb3IgUG9ydC4KLSAj ZW5kaWYgIC8vIEFSQ0hfQ1BVX1g4Nl9GQU1JTFkKLUBAIC0yNTIsNiArMjc4LDEwIEBAIHVuaW9u IEZsb2F0Q29udGV4dCB7Ci0gICAgIGRvdWJsZSBmcHJlZ3NbMzJdOwotICAgICB1aW50MzJfdCBm cGNzcjsKLSAgICAgdWludDMyX3QgZnB1X2lkOwotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBD NjRfRkFNSUxZKQotKyAgICAvLyBSZWZsZWN0cyBmcHJlZ3NldF90IGluIHN5cy91Y29udGV4dC5o Ci0rICAgIGRvdWJsZSBmcHJlZ3NbMzJdOwotKyAgICBkb3VibGUgZnBzY3I7Ci0gI2Vsc2UKLSAj ZXJyb3IgUG9ydC4KLSAjZW5kaWYgIC8vIEFSQ0hfQ1BVX1g4Nl9GQU1JTFkKLUBAIC0yODAsNiAr MzEwLDggQEAgdW5pb24gRmxvYXRDb250ZXh0IHsKLSAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGY2 NCkgPT0gc2l6ZW9mKHVzZXJfZnBzaW1kX3N0cnVjdCksICJTaXplIG1pc21hdGNoIik7Ci0gI2Vs aWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkKLSAvLyBObyBhcHByb3ByaWF0ZSBmbG9h dGluZyBwb2ludCBjb250ZXh0IG5hdGl2ZSB0eXBlIGZvciBhdmFpbGFibGUgTUlQUy4KLSsjZWxp ZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsgIHN0YXRpY19hc3NlcnQoc2l6ZW9m KGY2NCkgPT0gc2l6ZW9mKGZwcmVnc2V0X3QpLCAiU2l6ZSBtaXNtYXRjaCIpOwotICNlbHNlCi0g I2Vycm9yIFBvcnQuCi0gI2VuZGlmICAvLyBBUkNIX0NQVV9YODYKLUBAIC0yODcsNiArMzE5LDI2 IEBAIHVuaW9uIEZsb2F0Q29udGV4dCB7Ci0gc3RhdGljX2Fzc2VydChzdGQ6OmlzX3N0YW5kYXJk X2xheW91dDxGbG9hdENvbnRleHQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICJOb3Qgc3RhbmRh cmQgbGF5b3V0Iik7Ci0gCi0rLy8hIFxicmllZiBUaGUgdmVjdG9yIHJlZ2lzdGVycyB1c2VkIGZv ciBhbiBhcmNoaXRlY3R1cmUgZmFtaWx5Ci0rdW5pb24gVmVjdG9yQ29udGV4dCB7Ci0rICBzdHJ1 Y3QgdjMyX3Qge30gdjMyOwotKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsg IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKDE2KSkpIC8vIFZlY3RvciBjb250ZXh0IG11c3Qg YmUgZG91Ymxld29yZCBhbGlnbmVkLgotKyNlbmRpZgotKyAgc3RydWN0IHY2NF90IHsKLSsjaWYg ZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0rICAgIC8vIFJlZmxlY3RzIHZycmVnc2V0 X3QgaW4gc3lzL3Vjb250ZXh0LmgKLSsgICAgdWludDMyX3QgdnJyZWdzWzMyXVs0XTsKLSsgICAg c3RydWN0IHsKLSsgICAgICB1aW50MzJfdCBfX3BhZFszXTsKLSsgICAgICB1aW50MzJfdCB2c2Ny X3dvcmQ7Ci0rICAgIH0gdnNjcjsKLSsgICAgdWludDMyX3QgdnJzYXZlOwotKyAgICB1aW50MzJf dCBfX3BhZFszXTsKLSsjZW5kaWYKLSsgIH0gdjY0OwotK307Ci0rCi0gLy8hIFxicmllZiBBIGNv bGxlY3Rpb24gb2YgYHB0cmFjZWAtYWJsZSBpbmZvcm1hdGlvbiBhYm91dCBhIHRocmVhZC4KLSBz dHJ1Y3QgVGhyZWFkSW5mbyB7Ci0gICBUaHJlYWRJbmZvKCk7Ci1AQCAtMjk4LDYgKzM1MCw5IEBA IHN0cnVjdCBUaHJlYWRJbmZvIHsKLSAgIC8vISBcYnJpZWYgVGhlIGZsb2F0aW5nIHBvaW50IHJl Z2lzdGVycyBmb3IgdGhlIHRocmVhZC4KLSAgIEZsb2F0Q29udGV4dCBmbG9hdF9jb250ZXh0Owot IAotKyAgLy8hIFxicmllZiAoT3B0aW9uYWwpIFRoZSB2ZWN0b3IgcmVnaXN0ZXJzIHVzZWQgZm9y IHRoZSB0aHJlYWQuCi0rICBWZWN0b3JDb250ZXh0IHZlY3Rvcl9jb250ZXh0OwotKwotICAgLy8h IFxicmllZiBUaGUgdGhyZWFkLWxvY2FsIHN0b3JhZ2UgYWRkcmVzcyBmb3IgdGhlIHRocmVhZC4K LSAgIExpbnV4Vk1BZGRyZXNzIHRocmVhZF9zcGVjaWZpY19kYXRhX2FkZHJlc3M7Ci0gfTsKLS0t LSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQv Y3Jhc2hwYWQvdXRpbC9taXNjL2NhcHR1cmVfY29udGV4dC5oCi0rKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbWlz Yy9jYXB0dXJlX2NvbnRleHQuaAotQEAgLTY2LDYgKzY2LDcgQEAgdXNpbmcgTmF0aXZlQ1BVQ29u dGV4dCA9IHVjb250ZXh0X3Q7Ci0gLy8hICAgICBtYWNPUy9MaW51eC9GdWNoc2lhIHwgeDg2XzY0 ICAgICAgIHwgYCUlcmRpYAotIC8vISAgICAgTGludXggICAgICAgICAgICAgICB8IEFSTS9BUk02 NCAgICB8IGByMGAvYHgwYAotIC8vISAgICAgTGludXggICAgICAgICAgICAgICB8IE1JUFMvTUlQ UzY0ICB8IGAkYTBgCi0rLy8hICAgICBMaW51eCAgICAgICAgICAgICAgIHwgUFBDNjQgICAgICAg IHwgYHIzYAotIC8vIQotIC8vISAgICAgQWRkaXRpb25hbGx5LCB0aGUgdmFsdWUgYExSYCBvbiBB Uk0vQVJNNjQgd2lsbCBiZSB0aGUgcmV0dXJuIGFkZHJlc3Mgb2YKLSAvLyEgICAgIHRoaXMgZnVu Y3Rpb24uCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHRfbGludXguUwotKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9j cmFzaHBhZC91dGlsL21pc2MvY2FwdHVyZV9jb250ZXh0X2xpbnV4LlMKLUBAIC0yOCw3ICsyOCw3 IEBACi0gICAuZ2xvYmwgQ0FQVFVSRUNPTlRFWFRfU1lNQk9MMgotICNpZiBkZWZpbmVkKF9faTM4 Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pCi0gICAuYmFsaWduIDE2LCAweDkwCi0tI2VsaWYg ZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fbWlw c19fKQotKyNlbGlmIGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwg ZGVmaW5lZChfX21pcHNfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgLmJhbGlnbiA0 LCAweDAKLSAjZW5kaWYKLSAKLUBAIC00MTksNCArNDE5LDIxNCBAQCBDQVBUVVJFQ09OVEVYVF9T WU1CT0wyOgotICAganIgJHJhCi0gCi0gICAuc2V0IGF0Ci0rI2VsaWYgZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKQotKyAgLy8gU3RvcmUgcjAtcjMxCi0rICBzdGQgMCwgMHhlOCgzKSAgIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMF0KLSsgIHN0ZCAxLCAweGYwKDMpICAgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1sxXQotKyAgc3RkIDIsIDB4ZjgoMykgICAvLyBjb250ZXh0 LT51Y19tY29udGV4dC5ncF9yZWdzWzJdCi0rICAvLyBub3RlIHRoYXQgcjMncyBvcmlnaW5hbCB2 YWx1ZSB3YXMgbG9zdAotKyAgc3RkIDMsIDB4MTAwKDMpICAvLyBjb250ZXh0LT51Y19tY29udGV4 dC5ncF9yZWdzWzNdCi0rICBzdGQgNCwgMHgxMDgoMykgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0 LmdwX3JlZ3NbNF0KLSsgIHN0ZCA1LCAweDExMCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQu Z3BfcmVnc1s1XQotKyAgc3RkIDYsIDB4MTE4KDMpICAvLyBjb250ZXh0LT51Y19tY29udGV4dC5n cF9yZWdzWzZdCi0rICBzdGQgNywgMHgxMjAoMykgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0Lmdw X3JlZ3NbN10KLSsgIHN0ZCA4LCAweDEyOCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3Bf cmVnc1s4XQotKyAgc3RkIDksIDB4MTMwKDMpICAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9y ZWdzWzldCi0rICBzdGQgMTAsIDB4MTM4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3Jl Z3NbMTBdCi0rICBzdGQgMTEsIDB4MTQwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3Jl Z3NbMTFdCi0rICBzdGQgMTIsIDB4MTQ4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3Jl Z3NbMTJdCi0rICBzdGQgMTMsIDB4MTUwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3Jl Z3NbMTNdCi0rICBzdGQgMTQsIDB4MTU4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3Jl Z3NbMTRdCi0rICBzdGQgMTUsIDB4MTYwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3Jl Z3NbMTVdCi0rICBzdGQgMTYsIDB4MTY4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3Jl Z3NbMTZdCi0rICBzdGQgMTcsIDB4MTcwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3Jl Z3NbMTddCi0rICBzdGQgMTgsIDB4MTc4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3Jl Z3NbMThdCi0rICBzdGQgMTksIDB4MTgwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3Jl Z3NbMTldCi0rICBzdGQgMjAsIDB4MTg4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3Jl Z3NbMjBdCi0rICBzdGQgMjEsIDB4MTkwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3Jl Z3NbMjFdCi0rICBzdGQgMjIsIDB4MTk4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3Jl Z3NbMjJdCi0rICBzdGQgMjMsIDB4MWEwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3Jl Z3NbMjNdCi0rICBzdGQgMjQsIDB4MWE4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3Jl Z3NbMjRdCi0rICBzdGQgMjUsIDB4MWIwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3Jl Z3NbMjVdCi0rICBzdGQgMjYsIDB4MWI4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3Jl Z3NbMjZdCi0rICBzdGQgMjcsIDB4MWMwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3Jl Z3NbMjddCi0rICBzdGQgMjgsIDB4MWM4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3Jl Z3NbMjhdCi0rICBzdGQgMjksIDB4MWQwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3Jl Z3NbMjldCi0rICBzdGQgMzAsIDB4MWQ4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3Jl Z3NbMzBdCi0rICBzdGQgMzEsIDB4MWUwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3Jl Z3NbMzFdCi0rCi0rICAvLyBGb3IgTklQLCB3ZSBjYW4gdXNlIHRoZSB2YWx1ZSBpbiB0aGUgbGlu ayByZWdpc3RlcgotKyAgbWZsciAwCi0rICBzdGQgMCwgMHgxZTgoMykgLy8gY29udGV4dC0+dWNf bWNvbnRleHQuZ3BfcmVnc1tQVF9OSVBdCi0rCi0rICAvLyBDVFIKLSsgIG1mY3RyIDAKLSsgIHN0 ZCAwLCAweDIwMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX0NUUl0KLSsK LSsgIC8vIEZvciBMTkssIHdlJ2xsIHVzZSB0aGUgY2FsbGVyJ3MgTFIgc2F2ZSBhcmVhICgyIHN0 YWNrIGZyYW1lcyB1cCkuCi0rICAvLyByNCBjYW4gYmUgdXNlZCBhcyBhIHNjcmF0Y2ggcmVnaXN0 ZXIgc2luY2UgaXQgaGFzIGFscmVhZHkgYmVlbiBzYXZlZC4KLSsgIGxkIDQsIDAoMSkKLSsgIGxk IDQsIDE2KDQpCi0rICBzdGQgNCwgMHgyMDgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3Bf cmVnc1tQVF9MTktdCi0rCi0rICAvLyBYRVIKLSsgIG1meGVyIDAKLSsgIHN0ZCAwLCAweDIxMCgz KSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX1hFUl0KLSsKLSsgIC8vIENDUgot KyAgbWZjciAwCi0rICBzdGQgMCwgMHgyMTgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3Bf cmVnc1tQVF9DQ1JdCi0rCi0rICAvLyBNU1IsIG9yaWdfcjMsIE1RLCBUUkFQLCBEQVIsIERTSVNS LCBSRVNVTFQsIERTQ1IsCi0rICAvLyBub3QgdXNlZCBvciBub3QgcmVsZXZhbnQsICB6ZXJvIHRo ZW0gb3V0LgotKyAgbGkgNCwgMAotKyAgc3RkIDQsIDB4MWYwKDMpIC8vIGNvbnRleHQtPnVjX21j b250ZXh0LmdwX3JlZ3NbUFRfTVNSXQotKyAgc3RkIDQsIDB4MWY4KDMpIC8vIGNvbnRleHQtPnVj X21jb250ZXh0LmdwX3JlZ3NbUFRfT1JJR19SM10KLSsgIHN0ZCA0LCAweDIyMCgzKSAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX01RXQotKyAgc3RkIDQsIDB4MjI4KDMpIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfVFJBUF0KLSsgIHN0ZCA0LCAweDIzMCgzKSAv LyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX0RBUl0KLSsgIHN0ZCA0LCAweDIzOCgz KSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX0RTSVNSXQotKyAgc3RkIDQsIDB4 MjQwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfUkVTVUxUXQotKyAgc3Rk IDQsIDB4MjQ4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfRFNDUl0KLSsK LSsgIC8vIFVwZGF0ZSBjb250ZXh0LT51Y19tY29udGV4dC5yZWdzIHRvIHBvaW50IHRvIGdwX3Jl Z3MKLSsgIGFkZGkgMCwgMywgMHhlOAotKyAgc3RkIDAsIDB4ZTAoMykKLSsKLSsgIC8vIFNhdmUg ZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzIDAtMzEKLSsgIHN0ZmQgMCwgMHgyNjgoMykgIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMF0KLSsgIHN0ZmQgMSwgMHgyNzAoMykgIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMV0KLSsgIHN0ZmQgMiwgMHgyNzgoMykgIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMl0KLSsgIHN0ZmQgMywgMHgyODAoMykgIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbM10KLSsgIHN0ZmQgNCwgMHgyODgoMykgIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbNF0KLSsgIHN0ZmQgNSwgMHgyOTAoMykgIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbNV0KLSsgIHN0ZmQgNiwgMHgyOTgoMykgIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbNl0KLSsgIHN0ZmQgNywgMHgyYTAoMykgIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbN10KLSsgIHN0ZmQgOCwgMHgyYTgoMykgIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbOF0KLSsgIHN0ZmQgOSwgMHgyYjAoMykgIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbOV0KLSsgIHN0ZmQgMTAsIDB4MmI4KDMpIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMTBdCi0rICBzdGZkIDExLCAweDJjMCgzKSAvLyBj b250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzExXQotKyAgc3RmZCAxMiwgMHgyYzgoMykgLy8g Y29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxMl0KLSsgIHN0ZmQgMTMsIDB4MmQwKDMpIC8v IGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMTNdCi0rICBzdGZkIDE0LCAweDJkOCgzKSAv LyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzE0XQotKyAgc3RmZCAxNSwgMHgyZTAoMykg Ly8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxNV0KLSsgIHN0ZmQgMTYsIDB4MmU4KDMp IC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMTZdCi0rICBzdGZkIDE3LCAweDJmMCgz KSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzE3XQotKyAgc3RmZCAxOCwgMHgyZjgo MykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxOF0KLSsgIHN0ZmQgMTksIDB4MzAw KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMTldCi0rICBzdGZkIDIwLCAweDMw OCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzIwXQotKyAgc3RmZCAyMSwgMHgz MTAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1syMV0KLSsgIHN0ZmQgMjIsIDB4 MzE4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMjJdCi0rICBzdGZkIDIzLCAw eDMyMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzIzXQotKyAgc3RmZCAyNCwg MHgzMjgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1syNF0KLSsgIHN0ZmQgMjUs IDB4MzMwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMjVdCi0rICBzdGZkIDI2 LCAweDMzOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzI2XQotKyAgc3RmZCAy NywgMHgzNDAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1syN10KLSsgIHN0ZmQg MjgsIDB4MzQ4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMjhdCi0rICBzdGZk IDI5LCAweDM1MCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzI5XQotKyAgc3Rm ZCAzMCwgMHgzNTgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1szMF0KLSsgIHN0 ZmQgMzEsIDB4MzYwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMzFdCi0rCi0r ICAvLyBGUFNDUgotKyAgbWZmcyAwCi0rICBzdGZkIDAsIDB4MzY4KDMpIC8vIGNvbnRleHQtPnVj X21jb250ZXh0LmZwX3JlZ3NbMzJdCi0rCi0rICAvLyBTYXZlIFZNWCBWZWN0b3IgcmVnaXN0ZXJz Ci0rICAvLyBVcGRhdGUgcjQgdG8gY29udGFpbiB0aGUgYmFzZSBhZGRyZXNzIG9mIHZteF9yZXNl cnZlCi0rICBhZGRpIDQsIDMsIDB4Mzc4Ci0rICAvLyBFbnN1cmUgdGhhdCBpdCBpcyBxdWFkd29y ZCBhbGlnbmVkCi0rICBhbmRpLiA1LCA0LCAweEYKLSsgIGJlcSAxZiAvLyBObyBhbGlnbm1lbnQg aXMgbmVjZXNzYXJ5Ci0rICAvLyBBZGRyZXNzIGlzIGRvdWJsZXdvcmQgYWxpZ25lZCBhbmQgbm90 IHF1YWR3b3JkIGFsaWduZWQsIGFkZCA4Ci0rICBhZGRpIDQsIDQsIDgKLSsKLSsxOgotKyAgLy8g U3RvcmUgVk1YIHJlZ2lzdGVycyAwLTMxCi0rICAvLyByNCB3aWxsIGNvbnRhaW4gdGhlIGJhc2Ug YWRkcmVzcwotKyAgLy8gcjUgd2lsbCBjb250YWluIHRoZSBpbmRleAotKyAgbGkgNSwgMAotKyAg c3R2eCAwLCA0LCA1ICAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWdu KSArIDBdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDEsIDQsIDUgICAvLyBjb250ZXh0LT51 Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMV0KLSsgIGFkZGkgNSwgNSwgMTYKLSsg IHN0dnggMiwgNCwgNSAgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGln bikgKyAyXQotKyAgYWRkaSA1LCA1LCAxNgotKyAgc3R2eCAzLCA0LCA1ICAgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDNdCi0rICBhZGRpIDUsIDUsIDE2Ci0r ICBzdHZ4IDQsIDQsIDUgICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxp Z24pICsgNF0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggNSwgNCwgNSAgIC8vIGNvbnRleHQt PnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyA1XQotKyAgYWRkaSA1LCA1LCAxNgot KyAgc3R2eCA2LCA0LCA1ICAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFs aWduKSArIDZdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDcsIDQsIDUgICAvLyBjb250ZXh0 LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgN10KLSsgIGFkZGkgNSwgNSwgMTYK LSsgIHN0dnggOCwgNCwgNSAgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhh bGlnbikgKyA4XQotKyAgYWRkaSA1LCA1LCAxNgotKyAgc3R2eCA5LCA0LCA1ICAgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDldCi0rICBhZGRpIDUsIDUsIDE2 Ci0rICBzdHZ4IDEwLCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVso YWxpZ24pICsgMTBdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDExLCA0LCA1ICAvLyBjb250 ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMTFdCi0rICBhZGRpIDUsIDUs IDE2Ci0rICBzdHZ4IDEyLCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2 ZVsoYWxpZ24pICsgMTJdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDEzLCA0LCA1ICAvLyBj b250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMTNdCi0rICBhZGRpIDUs IDUsIDE2Ci0rICBzdHZ4IDE0LCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVz ZXJ2ZVsoYWxpZ24pICsgMTRdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDE1LCA0LCA1ICAv LyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMTVdCi0rICBhZGRp IDUsIDUsIDE2Ci0rICBzdHZ4IDE2LCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhf cmVzZXJ2ZVsoYWxpZ24pICsgMTZdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDE3LCA0LCA1 ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMTddCi0rICBh ZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDE4LCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52 bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMThdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDE5LCA0 LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMTldCi0r ICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDIwLCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4 dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMjBdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDIx LCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMjFd Ci0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDIyLCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29u dGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMjJdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4 IDIzLCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsg MjNdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDI0LCA0LCA1ICAvLyBjb250ZXh0LT51Y19t Y29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMjRdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBz dHZ4IDI1LCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24p ICsgMjVdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDI2LCA0LCA1ICAvLyBjb250ZXh0LT51 Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMjZdCi0rICBhZGRpIDUsIDUsIDE2Ci0r ICBzdHZ4IDI3LCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxp Z24pICsgMjddCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDI4LCA0LCA1ICAvLyBjb250ZXh0 LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMjhdCi0rICBhZGRpIDUsIDUsIDE2 Ci0rICBzdHZ4IDI5LCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVso YWxpZ24pICsgMjldCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDMwLCA0LCA1ICAvLyBjb250 ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMzBdCi0rICBhZGRpIDUsIDUs IDE2Ci0rICBzdHZ4IDMxLCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2 ZVsoYWxpZ24pICsgMzFdCi0rICBhZGRpIDUsIDUsIDE2Ci0rCi0rICAvLyBWU0NSCi0rICBtZnZz Y3IgMAotKyAgc3R2eCAwLCA0LCA1Ci0rICBhZGRpIDUsIDUsIDE2Ci0rCi0rICAvLyBWUlNBVkUK LSsgIG1mdnJzYXZlIDAKLSsgIHN0d3ggMCwgNCwgNQotKwotKyAgLy8gVXBkYXRlIGNvbnRleHQt PnVjX21jb250ZXh0LnZfcmVncyB0byBwb2ludCB0byB2bXhfcmVzZXJ2ZSArIGFsaWdubWVudC4K LSsgIHN0ZCA0LCAweDM3MCgzKQotKwotKyAgLy8gWmVybyBvdXQgYWxsIHVudXNlZCBmaWVsZHMK LSsgIGxpIDQsIDAKLSsgIHN0ZCA0LCAweGM4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnNp Z25hbAotKyAgc3RkIDQsIDB4ZDAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuaGFuZGxlcgot KyAgc3RkIDQsIDB4ZDgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQub2xkbWFzawotKwotKyAg YmxyCi0gI2VuZGlmICAvLyBfX2kzODZfXwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL21pc2MvY2FwdHVyZV9j b250ZXh0X3Rlc3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9taXNjL2NhcHR1cmVfY29udGV4dF90ZXN0 LmNjCi1AQCAtNDksNyArNDksOCBAQCB2b2lkIFRlc3RDYXB0dXJlQ29udGV4dCgpIHsKLSAgIC8v IHJlZmVyZW5jZSBwcm9ncmFtIGNvdW50ZXIuCi0gICB1aW50cHRyX3QgcGMgPSBQcm9ncmFtQ291 bnRlckZyb21Db250ZXh0KGNvbnRleHRfMSk7Ci0gCi0tI2lmICFkZWZpbmVkKEFERFJFU1NfU0FO SVRJWkVSKSAmJiAhZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkKLSsjaWYgIWRlZmluZWQo QUREUkVTU19TQU5JVElaRVIpICYmICFkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBc Ci0rICAgICFkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSAgIC8vIEFkZHJlc3NTYW5p dGl6ZXIgY2FuIGNhdXNlIGVub3VnaCBjb2RlIGJsb2F0IHRoYXQgdGhlIOKAnG5lYXJieeKAnSBj aGVjayB3b3VsZAotICAgLy8gbGlrZWx5IGZhaWwuCi0gICBjb25zdCB1aW50cHRyX3Qga1JlZmVy ZW5jZVBDID0KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9taXNjL2NhcHR1cmVfY29udGV4dF90ZXN0X3V0aWxf bGludXguY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9taXNjL2NhcHR1cmVfY29udGV4dF90ZXN0X3V0aWxf bGludXguY2MKLUBAIC0zNiw2ICszNiw4IEBAIHZvaWQgU2FuaXR5Q2hlY2tDb250ZXh0KGNvbnN0 IE5hdGl2ZUNQVUNvbnRleHQmIGNvbnRleHQpIHsKLSAgIEVYUEVDVF9FUShjb250ZXh0LnVjX21j b250ZXh0LnJlZ3NbMF0sIEZyb21Qb2ludGVyQ2FzdDx1aW50cHRyX3Q+KCZjb250ZXh0KSk7Ci0g I2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkKLSAgIEVYUEVDVF9FUShjb250ZXh0 LnVjX21jb250ZXh0LmdyZWdzWzRdLCBGcm9tUG9pbnRlckNhc3Q8dWludHB0cl90PigmY29udGV4 dCkpOwotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKyAgRVhQRUNUX0VR KGNvbnRleHQudWNfbWNvbnRleHQuZ3BfcmVnc1szXSwgRnJvbVBvaW50ZXJDYXN0PHVpbnRwdHJf dD4oJmNvbnRleHQpKTsKLSAjZW5kaWYKLSB9Ci0gCi1AQCAtNTAsNiArNTIsOCBAQCB1aW50cHRy X3QgUHJvZ3JhbUNvdW50ZXJGcm9tQ29udGV4dChjb25zdCBOYXRpdmVDUFVDb250ZXh0JiBjb250 ZXh0KSB7Ci0gICByZXR1cm4gY29udGV4dC51Y19tY29udGV4dC5wYzsKLSAjZWxpZiBkZWZpbmVk KEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQotICAgcmV0dXJuIGNvbnRleHQudWNfbWNvbnRleHQucGM7 Ci0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0rICByZXR1cm4gY29udGV4 dC51Y19tY29udGV4dC5ncF9yZWdzW1BUX05JUF07Ci0gI2VuZGlmCi0gfQotIAotQEAgLTY0LDYg KzY4LDggQEAgdWludHB0cl90IFN0YWNrUG9pbnRlckZyb21Db250ZXh0KGNvbnN0IE5hdGl2ZUNQ VUNvbnRleHQmIGNvbnRleHQpIHsKLSAgIHJldHVybiBjb250ZXh0LnVjX21jb250ZXh0LnNwOwot ICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCi0gICByZXR1cm4gY29udGV4dC51 Y19tY29udGV4dC5ncmVnc1syOV07Ci0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1J TFkpCi0rICByZXR1cm4gY29udGV4dC51Y19tY29udGV4dC5ncF9yZWdzWzFdOwotICNlbmRpZgot IH0KLSAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv Y3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9wb3NpeC9zaWduYWxzX3Rlc3QuY2MKLSsrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQv dXRpbC9wb3NpeC9zaWduYWxzX3Rlc3QuY2MKLUBAIC00NiwxMiArNDYsMTIgQEAgYm9vbCBDYW5D YXVzZVNpZ25hbChpbnQgc2lnKSB7Ci0gICByZXR1cm4gc2lnID09IFNJR0FCUlQgfHwKLSAgICAg ICAgICBzaWcgPT0gU0lHQUxSTSB8fAotICAgICAgICAgIHNpZyA9PSBTSUdCVVMgfHwKLS0jaWYg IWRlZmluZWQoQVJDSF9DUFVfQVJNNjQpCi0rI2lmICFkZWZpbmVkKEFSQ0hfQ1BVX0FSTTY0KSAm JiAhZGVmaW5lZChBUkNIX0NQVV9QUEM2NCkKLSAgICAgICAgICBzaWcgPT0gU0lHRlBFIHx8Ci0t I2VuZGlmICAvLyAhZGVmaW5lZChBUkNIX0NQVV9BUk02NCkKLSsjZW5kaWYgIC8vICFkZWZpbmVk KEFSQ0hfQ1BVX0FSTTY0KSAmJiAhZGVmaW5lZChBUkNIX0NQVV9QUEM2NCkKLSAjaWYgZGVmaW5l ZChBUkNIX0NQVV9YODZfRkFNSUxZKSB8fCBkZWZpbmVkKEFSQ0hfQ1BVX0FSTUVMKQotICAgICAg ICAgIHNpZyA9PSBTSUdJTEwgfHwKLS0jZW5kaWYgIC8vIGRlZmluZWQoQVJDSF9DUFVfWDg2X0ZB TUlMWSkgfHwgZGVmaW5lZChBUkNIX0NQVV9BUk1FTAotKyNlbmRpZiAgLy8gZGVmaW5lZChBUkNI X0NQVV9YODZfRkFNSUxZKSB8fCBkZWZpbmVkKEFSQ0hfQ1BVX0FSTUVMKQotICAgICAgICAgIHNp ZyA9PSBTSUdQSVBFIHx8Ci0gICAgICAgICAgc2lnID09IFNJR1NFR1YgfHwKLSAjaWYgZGVmaW5l ZChPU19NQUNPU1gpCi1AQCAtMTE3LDkgKzExNywxMSBAQCB2b2lkIENhdXNlU2lnbmFsKGludCBz aWcpIHsKLSAgICAgICBicmVhazsKLSAgICAgfQotIAotLSNpZiAhZGVmaW5lZChBUkNIX0NQVV9B Uk02NCkKLSsjaWYgIWRlZmluZWQoQVJDSF9DUFVfQVJNNjQpICYmICFkZWZpbmVkKEFSQ0hfQ1BV X1BQQzY0KQotICAgICAvLyBBUk02NCBoYXMgaGFyZHdhcmUgaW50ZWdlciBkaXZpc2lvbiBpbnN0 cnVjdGlvbnMgdGhhdCBkb27igJl0IGdlbmVyYXRlIGEKLSAgICAgLy8gdHJhcCBmb3IgZGl2aWRl LWJ5LXplcm8sIHNvIHRoaXMgZG9lc27igJl0IHByb2R1Y2UgU0lHRlBFLgotKyAgICAvLwotKyAg ICAvLyBQUEM2NCBmaXhlZC1wb2ludCBkaXZpc2lvbiBieSB6ZXJvIGFsc28gZG9lc24ndCBwcm9k dWNlIGEgU0lHRlBFLgotICAgICBjYXNlIFNJR0ZQRTogewotICAgICAgIC8vIE9wdGltaXphdGlv biBtYWtlcyB0aGlzIHRyaWNreSwgc28gZ2V0IHplcm8gZnJvbSBhIHN5c3RlbSBjYWxsIGxpa2Vs eQotICAgICAgIC8vIHRvIHN1Y2NlZWQsIGFuZCB0cnkgdG8gZG8gc29tZXRoaW5nIHdpdGggdGhl IHJlc3VsdC4KLUBAIC0xMzcsNyArMTM5LDcgQEAgdm9pZCBDYXVzZVNpZ25hbChpbnQgc2lnKSB7 Ci0gICAgICAgZnN0YXQocXVvdGllbnQsICZzdGF0X2J1Zik7Ci0gICAgICAgYnJlYWs7Ci0gICAg IH0KLS0jZW5kaWYgIC8vIEFSQ0hfQ1BVX0FSTTY0Ci0rI2VuZGlmICAvLyAhZGVmaW5lZChBUkNI X0NQVV9BUk02NCkgJiYgIWRlZmluZWQoQVJDSF9DUFVfUFBDNjQpCi0gCi0gI2lmIGRlZmluZWQo QVJDSF9DUFVfWDg2X0ZBTUlMWSkgfHwgZGVmaW5lZChBUkNIX0NQVV9BUk1FTCkKLSAgICAgY2Fz ZSBTSUdJTEw6IHsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRf cGFydHkvbGlicG5nL0JVSUxELmduCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2xpYnBuZy9CVUlMRC5nbgotQEAgLTkzLDYgKzkzLDExIEBAIHNvdXJj ZV9zZXQoImxpYnBuZ19zb3VyY2VzIikgewotICAgICAgICJtaXBzL2ZpbHRlcl9tc2FfaW50cmlu c2ljcy5jIiwKLSAgICAgICAibWlwcy9taXBzX2luaXQuYyIsCi0gICAgIF0KLSsgIH0gZWxzZSBp ZiAoY3VycmVudF9jcHUgPT0gInBwYzY0IikgewotKyAgICBzb3VyY2VzICs9IFsKLSsgICAgICAi cG93ZXJwYy9maWx0ZXJfdnN4X2ludHJpbnNpY3MuYyIsCi0rICAgICAgInBvd2VycGMvcG93ZXJw Y19pbml0LmMiLAotKyAgICBdCi0gICB9Ci0gCi0gICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29u ZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0g L2Rldi9udWxsCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L2xpYnBuZy9wb3dlcnBjL2ZpbHRlcl92c3hfaW50cmluc2ljcy5jCi1AQCAtMCwwICsxLDc2 NyBAQAotKy8qIGZpbHRlcl92c3hfaW50cmluc2ljcy5jIC0gUG93ZXJQQyBvcHRpbWlzZWQgZmls dGVyIGZ1bmN0aW9ucwotKyAqCi0rICogQ29weXJpZ2h0IChjKSAyMDE3IEdsZW5uIFJhbmRlcnMt UGVocnNvbgotKyAqIFdyaXR0ZW4gYnkgVmFkaW0gQmFya292LCAyMDE3LgotKyAqIExhc3QgY2hh bmdlZCBpbiBsaWJwbmcgMS42LjI5IFtNYXJjaCAxNiwgMjAxN10KLSsgKgotKyAqIFRoaXMgY29k ZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgbGlicG5nIGxpY2Vuc2UuCi0rICogRm9yIGNvbmRpdGlv bnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSB0aGUgZGlzY2xhaW1lcgotKyAqIGFuZCBs aWNlbnNlIGluIHBuZy5oCi0rICovCi0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPHN0 ZGludC5oPgotKyNpbmNsdWRlICIuLi9wbmdwcml2LmgiCi0rCi0rI2lmZGVmIFBOR19SRUFEX1NV UFBPUlRFRAotKwotKy8qIFRoaXMgY29kZSByZXF1aXJlcyAtbWFsdGl2ZWMgYW5kIC1tdnN4IG9u IHRoZSBjb21tYW5kIGxpbmU6ICovCi0rI2lmIFBOR19QT1dFUlBDX1ZTWF9JTVBMRU1FTlRBVElP TiA9PSAxIC8qIGludHJpbnNpY3MgY29kZSBmcm9tIHBuZ3ByaXYuaCAqLwotKwotKyNpbmNsdWRl IDxhbHRpdmVjLmg+Ci0rCi0rI2lmIFBOR19QT1dFUlBDX1ZTWF9PUFQgPiAwCi0rCi0rI2lmbmRl ZiBfX1ZTWF9fCi0rIyAgZXJyb3IgIlRoaXMgY29kZSByZXF1aXJlcyBWU1ggc3VwcG9ydCAoUE9X RVI3IGFuZCBsYXRlcikuIFBsZWFzZSBwcm92aWRlIC1tdnN4IGNvbXBpbGVyIGZsYWcuIgotKyNl bmRpZgotKwotKyNkZWZpbmUgdmVjX2xkX3VuYWxpZ25lZCh2ZWMsZGF0YSkgdmVjID0gdmVjX3Zz eF9sZCgwLGRhdGEpCi0rI2RlZmluZSB2ZWNfc3RfdW5hbGlnbmVkKHZlYyxkYXRhKSB2ZWNfdnN4 X3N0KHZlYywwLGRhdGEpCi0rCi0rCi0rLyogRnVuY3Rpb25zIGluIHRoaXMgZmlsZSBsb29rIGF0 IG1vc3QgMyBwaXhlbHMgKGEsYixjKSB0byBwcmVkaWN0IHRoZSA0dGggKGQpLgotKyAqIFRoZXkn cmUgcG9zaXRpb25lZCBsaWtlIHRoaXM6Ci0rICogICAgcHJldjogIGMgYgotKyAqICAgIHJvdzog ICBhIGQKLSsgKiBUaGUgU3ViIGZpbHRlciBwcmVkaWN0cyBkPWEsIEF2ZyBkPShhK2IpLzIsIGFu ZCBQYWV0aCBwcmVkaWN0cyBkIHRvIGJlCi0rICogd2hpY2hldmVyIG9mIGEsIGIsIG9yIGMgaXMg Y2xvc2VzdCB0byBwPWErYi1jLgotKyAqICggdGhpcyBpcyB0YWtlbiBmcm9tIC4uL2ludGVsL2Zp bHRlcl9zc2UyX2ludHJpbnNpY3MuYyApCi0rICovCi0rCi0rI2RlZmluZSB2c3hfZGVjbGFyZV9j b21tb25fdmFycyhyb3dfaW5mbyxyb3cscHJldl9yb3csb2Zmc2V0KSBcCi0rICAgcG5nX2J5dGUg aTtcCi0rICAgcG5nX2J5dGVwIHJwID0gcm93ICsgb2Zmc2V0O1wKLSsgICBwbmdfY29uc3RfYnl0 ZXAgcHAgPSBwcmV2X3JvdztcCi0rICAgcG5nX3NpemVfdCB1bmFsaWduZWRfdG9wID0gMTYgLSAo KChwbmdfc2l6ZV90KXJwICUgMTYpKTtcCi0rICAgcG5nX3NpemVfdCBpc3RvcDtcCi0rICAgaWYo dW5hbGlnbmVkX3RvcCA9PSAxNilcCi0rICAgICAgdW5hbGlnbmVkX3RvcCA9IDA7XAotKyAgIGlz dG9wID0gcm93X2luZm8tPnJvd2J5dGVzO1wKLSsgICBpZigodW5hbGlnbmVkX3RvcCA8IGlzdG9w KSlcCi0rICAgICAgaXN0b3AgLT0gdW5hbGlnbmVkX3RvcDtcCi0rICAgZWxzZXtcCi0rICAgICAg dW5hbGlnbmVkX3RvcCA9IGlzdG9wO1wKLSsgICAgICBpc3RvcCA9IDA7XAotKyAgIH0KLSsKLSt2 b2lkIHBuZ19yZWFkX2ZpbHRlcl9yb3dfdXBfdnN4KHBuZ19yb3dfaW5mb3Agcm93X2luZm8sIHBu Z19ieXRlcCByb3csCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbmdfY29uc3Rf Ynl0ZXAgcHJldl9yb3cpCi0rewotKyAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIHJwX3ZlYzsKLSsg ICB2ZWN0b3IgdW5zaWduZWQgY2hhciBwcF92ZWM7Ci0rICAgdnN4X2RlY2xhcmVfY29tbW9uX3Zh cnMocm93X2luZm8scm93LHByZXZfcm93LDApCi0rCi0rICAgLyogQWx0aXZlYyBvcGVyYXRpb25z IHJlcXVpcmUgMTYtYnl0ZSBhbGlnbmVkIGRhdGEKLSsgICAgKiBidXQgaW5wdXQgY2FuIGJlIHVu YWxpZ25lZC4gU28gd2UgY2FsY3VsYXRlCi0rICAgICogdW5hbGlnbmVkIHBhcnQgYXMgdXN1YWwu Ci0rICAgICovCi0rICAgZm9yIChpID0gMDsgaSA8IHVuYWxpZ25lZF90b3A7IGkrKykKLSsgICB7 Ci0rICAgICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArIChpbnQpKCpwcCsrKSkgJiAw eGZmKTsKLSsgICAgICBycCsrOwotKyAgIH0KLSsKLSsgICAvKiBVc2luZyBTSU1EIHdoaWxlIHdl IGNhbiAqLwotKyAgIHdoaWxlKCBpc3RvcCA+PSAxNiApCi0rICAgewotKyAgICAgIHJwX3ZlYyA9 IHZlY19sZCgwLHJwKTsKLSsgICAgICB2ZWNfbGRfdW5hbGlnbmVkKHBwX3ZlYyxwcCk7Ci0rCi0r ICAgICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMscHBfdmVjKTsKLSsKLSsgICAgICB2ZWNfc3Qo cnBfdmVjLDAscnApOwotKwotKyAgICAgIHBwICs9IDE2OwotKyAgICAgIHJwICs9IDE2OwotKyAg ICAgIGlzdG9wIC09IDE2OwotKyAgIH0KLSsKLSsgICBpZihpc3RvcCA+IDApCi0rICAgewotKyAg ICAgIC8qIElmIGJ5dGUgY291bnQgb2Ygcm93IGlzIG5vdCBkaXZpc2libGUgYnkgMTYKLSsgICAg ICAgKiB3ZSB3aWxsIHByb2Nlc3MgcmVtYWluaW5nIHBhcnQgYXMgdXN1YWwKLSsgICAgICAgKi8K LSsgICAgICBmb3IgKGkgPSAwOyBpIDwgaXN0b3A7IGkrKykKLSsgICAgICB7Ci0rICAgICAgICAg KnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArIChpbnQpKCpwcCsrKSkgJiAweGZmKTsKLSsg ICAgICAgICBycCsrOwotKyAgICAgIH0KLSt9Ci0rCi0rfQotKwotK3N0YXRpYyBjb25zdCB2ZWN0 b3IgdW5zaWduZWQgY2hhciBWU1hfTEVGVFNISUZURUQxXzQgPSB7MTYsMTYsMTYsMTYsIDAsIDEs IDIsIDMsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5z aWduZWQgY2hhciBWU1hfTEVGVFNISUZURUQyXzQgPSB7MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYs IDQsIDUsIDYsIDcsMTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQg Y2hhciBWU1hfTEVGVFNISUZURUQzXzQgPSB7MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYs MTYsMTYsIDgsIDksMTAsMTF9OwotKwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hh ciBWU1hfTEVGVFNISUZURUQxXzMgPSB7MTYsMTYsMTYsIDAsIDEsIDIsMTYsMTYsMTYsMTYsMTYs MTYsMTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hf TEVGVFNISUZURUQyXzMgPSB7MTYsMTYsMTYsMTYsMTYsMTYsIDMsIDQsIDUsMTYsMTYsMTYsMTYs MTYsMTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfTEVGVFNI SUZURUQzXzMgPSB7MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsIDYsIDcsIDgsMTYsMTYsMTYs MTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfTEVGVFNISUZURUQ0 XzMgPSB7MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsIDksMTAsMTEsMTZ9Owot KwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfTk9UX1NISUZURUQxXzQg PSB7MTYsMTYsMTYsMTYsIDQsIDUsIDYsIDcsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OwotK3N0 YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfTk9UX1NISUZURUQyXzQgPSB7MTYs MTYsMTYsMTYsMTYsMTYsMTYsMTYsIDgsIDksMTAsMTEsMTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBj b25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfTk9UX1NISUZURUQzXzQgPSB7MTYsMTYsMTYs MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTIsMTMsMTQsMTV9OwotKwotK3N0YXRpYyBjb25z dCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfTk9UX1NISUZURUQxXzMgPSB7MTYsMTYsMTYsIDMs IDQsIDUsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0 b3IgdW5zaWduZWQgY2hhciBWU1hfTk9UX1NISUZURUQyXzMgPSB7MTYsMTYsMTYsMTYsMTYsMTYs IDYsIDcsIDgsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5z aWduZWQgY2hhciBWU1hfTk9UX1NISUZURUQzXzMgPSB7MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYs MTYsIDksMTAsMTEsMTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQg Y2hhciBWU1hfTk9UX1NISUZURUQ0XzMgPSB7MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYs MTYsMTYsMTIsMTMsMTQsMTZ9OwotKwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hh ciBWU1hfQ0hBUl9aRVJPID0gezAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDB9OwotKyNp ZmRlZiBfX0xJVFRMRV9FTkRJQU5fXwotKwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQg Y2hhciBWU1hfQ0hBUl9UT19TSE9SVDFfNCA9IHsgNCwxNiwgNSwxNiwgNiwxNiwgNywxNiwxNiwx NiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFy IFZTWF9DSEFSX1RPX1NIT1JUMl80ID0geyA4LDE2LCA5LDE2LDEwLDE2LDExLDE2LDE2LDE2LDE2 LDE2LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNY X0NIQVJfVE9fU0hPUlQzXzQgPSB7MTIsMTYsMTMsMTYsMTQsMTYsMTUsMTYsMTYsMTYsMTYsMTYs MTYsMTYsMTYsMTZ9OwotKwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hf U0hPUlRfVE9fQ0hBUjFfNCA9IHsxNiwxNiwxNiwxNiwgMCwgMiwgNCwgNiwxNiwxNiwxNiwxNiwx NiwxNiwxNiwxNn07Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9TSE9S VF9UT19DSEFSMl80ID0gezE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LCAwLCAyLCA0LCA2LDE2LDE2 LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX1NIT1JUX1RP X0NIQVIzXzQgPSB7MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsIDAsIDIsIDQs IDZ9OwotKwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfQ0hBUl9UT19T SE9SVDFfMyA9IHsgMywxNiwgNCwxNiwgNSwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwx Nn07Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9DSEFSX1RPX1NIT1JU Ml8zID0geyA2LDE2LCA3LDE2LCA4LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsK LStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX0NIQVJfVE9fU0hPUlQzXzMg PSB7IDksMTYsMTAsMTYsMTEsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OwotK3N0 YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfQ0hBUl9UT19TSE9SVDRfMyA9IHsx MiwxNiwxMywxNiwxNCwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0rCi0rc3Rh dGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9TSE9SVF9UT19DSEFSMV8zID0gezE2 LDE2LDE2LCAwLCAyLCA0LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMg Y29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX1NIT1JUX1RPX0NIQVIyXzMgPSB7MTYsMTYs MTYsMTYsMTYsMTYsIDAsIDIsIDQsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBjb25z dCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfU0hPUlRfVE9fQ0hBUjNfMyA9IHsxNiwxNiwxNiwx NiwxNiwxNiwxNiwxNiwxNiwgMCwgMiwgNCwxNiwxNiwxNiwxNn07Ci0rc3RhdGljIGNvbnN0IHZl Y3RvciB1bnNpZ25lZCBjaGFyIFZTWF9TSE9SVF9UT19DSEFSNF8zID0gezE2LDE2LDE2LDE2LDE2 LDE2LDE2LDE2LDE2LDE2LDE2LDE2LCAwLCAyLCA0LDE2fTsKLSsKLSsjZWxpZiBkZWZpbmVkKF9f QklHX0VORElBTl9fKQotKwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hf Q0hBUl9UT19TSE9SVDFfNCA9IHsxNiwgNCwxNiwgNSwxNiwgNiwxNiwgNywxNiwxNiwxNiwxNiwx NiwxNiwxNiwxNn07Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9DSEFS X1RPX1NIT1JUMl80ID0gezE2LCA4LDE2LCA5LDE2LDEwLDE2LDExLDE2LDE2LDE2LDE2LDE2LDE2 LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX0NIQVJfVE9f U0hPUlQzXzQgPSB7MTYsMTIsMTYsMTMsMTYsMTQsMTYsMTUsMTYsMTYsMTYsMTYsMTYsMTYsMTYs MTZ9OwotKwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfU0hPUlRfVE9f Q0hBUjFfNCA9IHsxNiwxNiwxNiwxNiwgMSwgMywgNSwgNywxNiwxNiwxNiwxNiwxNiwxNiwxNiwx Nn07Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9TSE9SVF9UT19DSEFS Ml80ID0gezE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LCAxLCAzLCA1LCA3LDE2LDE2LDE2LDE2fTsK LStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX1NIT1JUX1RPX0NIQVIzXzQg PSB7MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsIDEsIDMsIDUsIDd9OwotKwot K3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfQ0hBUl9UT19TSE9SVDFfMyA9 IHsxNiwgMywxNiwgNCwxNiwgNSwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0rc3Rh dGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9DSEFSX1RPX1NIT1JUMl8zID0gezE2 LCA2LDE2LCA3LDE2LCA4LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMg Y29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX0NIQVJfVE9fU0hPUlQzXzMgPSB7MTYsIDks MTYsMTAsMTYsMTEsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBjb25z dCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfQ0hBUl9UT19TSE9SVDRfMyA9IHsxNiwxMiwxNiwx MywxNiwxNCwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0rCi0rc3RhdGljIGNvbnN0 IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9TSE9SVF9UT19DSEFSMV8zID0gezE2LDE2LDE2LCAx LCAzLCA1LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVj dG9yIHVuc2lnbmVkIGNoYXIgVlNYX1NIT1JUX1RPX0NIQVIyXzMgPSB7MTYsMTYsMTYsMTYsMTYs MTYsIDEsIDMsIDUsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3Ig dW5zaWduZWQgY2hhciBWU1hfU0hPUlRfVE9fQ0hBUjNfMyA9IHsxNiwxNiwxNiwxNiwxNiwxNiwx NiwxNiwxNiwgMSwgMywgNSwxNiwxNiwxNiwxNn07Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNp Z25lZCBjaGFyIFZTWF9TSE9SVF9UT19DSEFSNF8zID0gezE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2 LDE2LDE2LDE2LDE2LCAxLCAzLCA1LDE2fTsKLSsKLSsjZW5kaWYKLSsKLSsjZGVmaW5lIHZzeF9j aGFyX3RvX3Nob3J0KHZlYyxvZmZzZXQsYnBwKSAodmVjdG9yIHVuc2lnbmVkIHNob3J0KXZlY19w ZXJtKCh2ZWMpLFZTWF9DSEFSX1pFUk8sVlNYX0NIQVJfVE9fU0hPUlQjI29mZnNldCMjXyMjYnBw KQotKyNkZWZpbmUgdnN4X3Nob3J0X3RvX2NoYXIodmVjLG9mZnNldCxicHApIHZlY19wZXJtKCgo dmVjdG9yIHVuc2lnbmVkIGNoYXIpKHZlYykpLFZTWF9DSEFSX1pFUk8sVlNYX1NIT1JUX1RPX0NI QVIjI29mZnNldCMjXyMjYnBwKQotKwotKyNpZmRlZiBQTkdfVVNFX0FCUwotKyMgIGRlZmluZSB2 c3hfYWJzKG51bWJlcikgYWJzKG51bWJlcikKLSsjZWxzZQotKyMgIGRlZmluZSB2c3hfYWJzKG51 bWJlcikgKG51bWJlciA+IDApID8gKG51bWJlcikgOiAtKG51bWJlcikKLSsjZW5kaWYKLSsKLSt2 b2lkIHBuZ19yZWFkX2ZpbHRlcl9yb3dfc3ViNF92c3gocG5nX3Jvd19pbmZvcCByb3dfaW5mbywg cG5nX2J5dGVwIHJvdywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG5nX2Nv bnN0X2J5dGVwIHByZXZfcm93KQotK3sKLSsgICBjb25zdCBwbmdfYnl0ZSBicHAgPSA0OwotKwot KyAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIHJwX3ZlYzsKLSsgICB2ZWN0b3IgdW5zaWduZWQgY2hh ciBwYXJ0X3ZlYzsKLSsKLSsgICB2c3hfZGVjbGFyZV9jb21tb25fdmFycyhyb3dfaW5mbyxyb3cs cHJldl9yb3csYnBwKQotKwotKyAgIFBOR19VTlVTRUQocHApCi0rCi0rICAgLyogQWx0aXZlYyBv cGVyYXRpb25zIHJlcXVpcmUgMTYtYnl0ZSBhbGlnbmVkIGRhdGEKLSsgICAgKiBidXQgaW5wdXQg Y2FuIGJlIHVuYWxpZ25lZC4gU28gd2UgY2FsY3VsYXRlCi0rICAgICogdW5hbGlnbmVkIHBhcnQg YXMgdXN1YWwuCi0rICAgICovCi0rICAgZm9yIChpID0gMDsgaSA8IHVuYWxpZ25lZF90b3A7IGkr KykKLSsgICB7Ci0rICAgICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArIChpbnQpKCoo cnAtYnBwKSkpICYgMHhmZik7Ci0rICAgICAgcnArKzsKLSsgICB9Ci0rCi0rICAgLyogVXNpbmcg U0lNRCB3aGlsZSB3ZSBjYW4gKi8KLSsgICB3aGlsZSggaXN0b3AgPj0gMTYgKQotKyAgIHsKLSsg ICAgICBmb3IoaT0wO2kgPCBicHAgOyBpKyspCi0rICAgICAgewotKyAgICAgICAgICpycCA9IChw bmdfYnl0ZSkoKChpbnQpKCpycCkgKyAoaW50KSgqKHJwLWJwcCkpKSAmIDB4ZmYpOwotKyAgICAg ICAgIHJwKys7Ci0rICAgICAgfQotKyAgICAgIHJwIC09IGJwcDsKLSsKLSsgICAgICBycF92ZWMg PSB2ZWNfbGQoMCxycCk7Ci0rICAgICAgcGFydF92ZWMgPSB2ZWNfcGVybShycF92ZWMsVlNYX0NI QVJfWkVSTyxWU1hfTEVGVFNISUZURUQxXzQpOwotKyAgICAgIHJwX3ZlYyA9IHZlY19hZGQocnBf dmVjLHBhcnRfdmVjKTsKLSsKLSsgICAgICBwYXJ0X3ZlYyA9IHZlY19wZXJtKHJwX3ZlYyxWU1hf Q0hBUl9aRVJPLFZTWF9MRUZUU0hJRlRFRDJfNCk7Ci0rICAgICAgcnBfdmVjID0gdmVjX2FkZChy cF92ZWMscGFydF92ZWMpOwotKwotKyAgICAgIHBhcnRfdmVjID0gdmVjX3Blcm0ocnBfdmVjLFZT WF9DSEFSX1pFUk8sVlNYX0xFRlRTSElGVEVEM180KTsKLSsgICAgICBycF92ZWMgPSB2ZWNfYWRk KHJwX3ZlYyxwYXJ0X3ZlYyk7Ci0rCi0rICAgICAgdmVjX3N0KHJwX3ZlYywwLHJwKTsKLSsKLSsg ICAgICBycCArPSAxNjsKLSsgICAgICBpc3RvcCAtPSAxNjsKLSsgICB9Ci0rCi0rICAgaWYoaXN0 b3AgPiAwKQotKyAgICAgIGZvciAoaSA9IDA7IGkgPCBpc3RvcCAlIDE2OyBpKyspCi0rICAgICAg ewotKyAgICAgICAgICpycCA9IChwbmdfYnl0ZSkoKChpbnQpKCpycCkgKyAoaW50KSgqKHJwIC0g YnBwKSkpICYgMHhmZik7Ci0rICAgICAgICAgcnArKzsKLSsgICAgICB9Ci0rCi0rfQotKwotK3Zv aWQgcG5nX3JlYWRfZmlsdGVyX3Jvd19zdWIzX3ZzeChwbmdfcm93X2luZm9wIHJvd19pbmZvLCBw bmdfYnl0ZXAgcm93LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbmdfY29u c3RfYnl0ZXAgcHJldl9yb3cpCi0rewotKyAgIGNvbnN0IHBuZ19ieXRlIGJwcCA9IDM7Ci0rCi0r ICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcnBfdmVjOwotKyAgIHZlY3RvciB1bnNpZ25lZCBjaGFy IHBhcnRfdmVjOwotKwotKyAgIHZzeF9kZWNsYXJlX2NvbW1vbl92YXJzKHJvd19pbmZvLHJvdyxw cmV2X3JvdyxicHApCi0rCi0rICAgUE5HX1VOVVNFRChwcCkKLSsKLSsgICAvKiBBbHRpdmVjIG9w ZXJhdGlvbnMgcmVxdWlyZSAxNi1ieXRlIGFsaWduZWQgZGF0YQotKyAgICAqIGJ1dCBpbnB1dCBj YW4gYmUgdW5hbGlnbmVkLiBTbyB3ZSBjYWxjdWxhdGUKLSsgICAgKiB1bmFsaWduZWQgcGFydCBh cyB1c3VhbC4KLSsgICAgKi8KLSsgICBmb3IgKGkgPSAwOyBpIDwgdW5hbGlnbmVkX3RvcDsgaSsr KQotKyAgIHsKLSsgICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsgKGludCkoKihy cC1icHApKSkgJiAweGZmKTsKLSsgICAgICBycCsrOwotKyAgIH0KLSsKLSsgICAvKiBVc2luZyBT SU1EIHdoaWxlIHdlIGNhbiAqLwotKyAgIHdoaWxlKCBpc3RvcCA+PSAxNiApCi0rICAgewotKyAg ICAgIGZvcihpPTA7aSA8IGJwcCA7IGkrKykKLSsgICAgICB7Ci0rICAgICAgICAgKnJwID0gKHBu Z19ieXRlKSgoKGludCkoKnJwKSArIChpbnQpKCoocnAtYnBwKSkpICYgMHhmZik7Ci0rICAgICAg ICAgcnArKzsKLSsgICAgICB9Ci0rICAgICAgcnAgLT0gYnBwOwotKwotKyAgICAgIHJwX3ZlYyA9 IHZlY19sZCgwLHJwKTsKLSsgICAgICBwYXJ0X3ZlYyA9IHZlY19wZXJtKHJwX3ZlYyxWU1hfQ0hB Ul9aRVJPLFZTWF9MRUZUU0hJRlRFRDFfMyk7Ci0rICAgICAgcnBfdmVjID0gdmVjX2FkZChycF92 ZWMscGFydF92ZWMpOwotKwotKyAgICAgIHBhcnRfdmVjID0gdmVjX3Blcm0ocnBfdmVjLFZTWF9D SEFSX1pFUk8sVlNYX0xFRlRTSElGVEVEMl8zKTsKLSsgICAgICBycF92ZWMgPSB2ZWNfYWRkKHJw X3ZlYyxwYXJ0X3ZlYyk7Ci0rCi0rICAgICAgcGFydF92ZWMgPSB2ZWNfcGVybShycF92ZWMsVlNY X0NIQVJfWkVSTyxWU1hfTEVGVFNISUZURUQzXzMpOwotKyAgICAgIHJwX3ZlYyA9IHZlY19hZGQo cnBfdmVjLHBhcnRfdmVjKTsKLSsKLSsgICAgICBwYXJ0X3ZlYyA9IHZlY19wZXJtKHJwX3ZlYyxW U1hfQ0hBUl9aRVJPLFZTWF9MRUZUU0hJRlRFRDRfMyk7Ci0rICAgICAgcnBfdmVjID0gdmVjX2Fk ZChycF92ZWMscGFydF92ZWMpOwotKwotKyAgICAgIHZlY19zdChycF92ZWMsMCxycCk7Ci0rICAg ICAgcnAgKz0gMTU7Ci0rICAgICAgaXN0b3AgLT0gMTY7Ci0rCi0rICAgICAgLyogU2luY2UgMTYg JSBicHAgPSAxNiAlIDMgPSAxLCBsYXN0IGVsZW1lbnQgb2YgYXJyYXkgbXVzdAotKyAgICAgICAq IGJlIHByb2NlZWRlZCBtYW51YWxseQotKyAgICAgICAqLwotKyAgICAgICpycCA9IChwbmdfYnl0 ZSkoKChpbnQpKCpycCkgKyAoaW50KSgqKHJwLWJwcCkpKSAmIDB4ZmYpOwotKyAgICAgIHJwKys7 Ci0rICAgfQotKwotKyAgIGlmKGlzdG9wID4gMCkKLSsgICAgICBmb3IgKGkgPSAwOyBpIDwgaXN0 b3AgJSAxNjsgaSsrKQotKyAgICAgIHsKLSsgICAgICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50 KSgqcnApICsgKGludCkoKihycC1icHApKSkgJiAweGZmKTsKLSsgICAgICAgICBycCsrOwotKyAg ICAgIH0KLSt9Ci0rCi0rdm9pZCBwbmdfcmVhZF9maWx0ZXJfcm93X2F2ZzRfdnN4KHBuZ19yb3df aW5mb3Agcm93X2luZm8sIHBuZ19ieXRlcCByb3csCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBuZ19jb25zdF9ieXRlcCBwcmV2X3JvdykKLSt7Ci0rICAgY29uc3QgcG5nX2J5 dGUgYnBwID0gNDsKLSsKLSsgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBycF92ZWM7Ci0rICAgdmVj dG9yIHVuc2lnbmVkIGNoYXIgcHBfdmVjOwotKyAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIHBwX3Bh cnRfdmVjOwotKyAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIHJwX3BhcnRfdmVjOwotKyAgIHZlY3Rv ciB1bnNpZ25lZCBjaGFyIGF2Z192ZWM7Ci0rCi0rICAgdnN4X2RlY2xhcmVfY29tbW9uX3ZhcnMo cm93X2luZm8scm93LHByZXZfcm93LGJwcCkKLSsgICBycCAtPSBicHA7Ci0rICAgaWYoaXN0b3Ag Pj0gYnBwKQotKyAgICAgIGlzdG9wIC09IGJwcDsKLSsKLSsgICBmb3IgKGkgPSAwOyBpIDwgYnBw OyBpKyspCi0rICAgewotKyAgICAgICpycCA9IChwbmdfYnl0ZSkoKChpbnQpKCpycCkgKwotKyAg ICAgICAgICgoaW50KSgqcHArKykgLyAyICkpICYgMHhmZik7Ci0rCi0rICAgICAgcnArKzsKLSsg ICB9Ci0rCi0rICAgLyogQWx0aXZlYyBvcGVyYXRpb25zIHJlcXVpcmUgMTYtYnl0ZSBhbGlnbmVk IGRhdGEKLSsgICAgKiBidXQgaW5wdXQgY2FuIGJlIHVuYWxpZ25lZC4gU28gd2UgY2FsY3VsYXRl Ci0rICAgICogdW5hbGlnbmVkIHBhcnQgYXMgdXN1YWwuCi0rICAgICovCi0rICAgZm9yIChpID0g MDsgaSA8IHVuYWxpZ25lZF90b3A7IGkrKykKLSsgICB7Ci0rICAgICAgKnJwID0gKHBuZ19ieXRl KSgoKGludCkoKnJwKSArCi0rICAgICAgICAgKGludCkoKnBwKysgKyAqKHJwLWJwcCkpIC8gMiAp ICYgMHhmZik7Ci0rCi0rICAgICAgcnArKzsKLSsgICB9Ci0rCi0rICAgLyogVXNpbmcgU0lNRCB3 aGlsZSB3ZSBjYW4gKi8KLSsgICB3aGlsZSggaXN0b3AgPj0gMTYgKQotKyAgIHsKLSsgICAgICBm b3IoaT0wO2kgPCBicHAgOyBpKyspCi0rICAgICAgewotKyAgICAgICAgICpycCA9IChwbmdfYnl0 ZSkoKChpbnQpKCpycCkgKwotKyAgICAgICAgICAgIChpbnQpKCpwcCsrICsgKihycC1icHApKSAv IDIgKSAmIDB4ZmYpOwotKwotKyAgICAgICAgIHJwKys7Ci0rICAgICAgfQotKyAgICAgIHJwIC09 IGJwcDsKLSsgICAgICBwcCAtPSBicHA7Ci0rCi0rICAgICAgdmVjX2xkX3VuYWxpZ25lZChwcF92 ZWMscHApOwotKyAgICAgIHJwX3ZlYyA9IHZlY19sZCgwLHJwKTsKLSsKLSsgICAgICBycF9wYXJ0 X3ZlYyA9IHZlY19wZXJtKHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZUU0hJRlRFRDFfNCk7 Ci0rICAgICAgcHBfcGFydF92ZWMgPSB2ZWNfcGVybShwcF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hf Tk9UX1NISUZURUQxXzQpOwotKyAgICAgIGF2Z192ZWMgPSB2ZWNfYXZnKHJwX3BhcnRfdmVjLHBw X3BhcnRfdmVjKTsKLSsgICAgICBhdmdfdmVjID0gdmVjX3N1YihhdmdfdmVjLCB2ZWNfYW5kKHZl Y194b3IocnBfcGFydF92ZWMscHBfcGFydF92ZWMpLHZlY19zcGxhdF91OCgxKSkpOwotKyAgICAg IHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLGF2Z192ZWMpOwotKwotKyAgICAgIHJwX3BhcnRfdmVj ID0gdmVjX3Blcm0ocnBfdmVjLFZTWF9DSEFSX1pFUk8sVlNYX0xFRlRTSElGVEVEMl80KTsKLSsg ICAgICBwcF9wYXJ0X3ZlYyA9IHZlY19wZXJtKHBwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9OT1Rf U0hJRlRFRDJfNCk7Ci0rICAgICAgYXZnX3ZlYyA9IHZlY19hdmcocnBfcGFydF92ZWMscHBfcGFy dF92ZWMpOwotKyAgICAgIGF2Z192ZWMgPSB2ZWNfc3ViKGF2Z192ZWMsIHZlY19hbmQodmVjX3hv cihycF9wYXJ0X3ZlYyxwcF9wYXJ0X3ZlYyksdmVjX3NwbGF0X3U4KDEpKSk7Ci0rICAgICAgcnBf dmVjID0gdmVjX2FkZChycF92ZWMsYXZnX3ZlYyk7Ci0rCi0rICAgICAgcnBfcGFydF92ZWMgPSB2 ZWNfcGVybShycF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTEVGVFNISUZURUQzXzQpOwotKyAgICAg IHBwX3BhcnRfdmVjID0gdmVjX3Blcm0ocHBfdmVjLFZTWF9DSEFSX1pFUk8sVlNYX05PVF9TSElG VEVEM180KTsKLSsgICAgICBhdmdfdmVjID0gdmVjX2F2ZyhycF9wYXJ0X3ZlYyxwcF9wYXJ0X3Zl Yyk7Ci0rICAgICAgYXZnX3ZlYyA9IHZlY19zdWIoYXZnX3ZlYywgdmVjX2FuZCh2ZWNfeG9yKHJw X3BhcnRfdmVjLHBwX3BhcnRfdmVjKSx2ZWNfc3BsYXRfdTgoMSkpKTsKLSsgICAgICBycF92ZWMg PSB2ZWNfYWRkKHJwX3ZlYyxhdmdfdmVjKTsKLSsKLSsgICAgICB2ZWNfc3QocnBfdmVjLDAscnAp OwotKwotKyAgICAgIHJwICs9IDE2OwotKyAgICAgIHBwICs9IDE2OwotKyAgICAgIGlzdG9wIC09 IDE2OwotKyAgIH0KLSsKLSsgICBpZihpc3RvcCAgPiAwKQotKyAgICAgIGZvciAoaSA9IDA7IGkg PCBpc3RvcCAlIDE2OyBpKyspCi0rICAgICAgewotKyAgICAgICAgICpycCA9IChwbmdfYnl0ZSko KChpbnQpKCpycCkgKwotKyAgICAgICAgICAgIChpbnQpKCpwcCsrICsgKihycC1icHApKSAvIDIg KSAmIDB4ZmYpOwotKwotKyAgICAgICAgIHJwKys7Ci0rICAgICAgfQotK30KLSsKLSt2b2lkIHBu Z19yZWFkX2ZpbHRlcl9yb3dfYXZnM192c3gocG5nX3Jvd19pbmZvcCByb3dfaW5mbywgcG5nX2J5 dGVwIHJvdywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG5nX2NvbnN0X2J5 dGVwIHByZXZfcm93KQotK3sKLSsgIGNvbnN0IHBuZ19ieXRlIGJwcCA9IDM7Ci0rCi0rICB2ZWN0 b3IgdW5zaWduZWQgY2hhciBycF92ZWM7Ci0rICB2ZWN0b3IgdW5zaWduZWQgY2hhciBwcF92ZWM7 Ci0rICB2ZWN0b3IgdW5zaWduZWQgY2hhciBwcF9wYXJ0X3ZlYzsKLSsgIHZlY3RvciB1bnNpZ25l ZCBjaGFyIHJwX3BhcnRfdmVjOwotKyAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgYXZnX3ZlYzsKLSsK LSsgIHZzeF9kZWNsYXJlX2NvbW1vbl92YXJzKHJvd19pbmZvLHJvdyxwcmV2X3JvdyxicHApCi0r ICBycCAtPSBicHA7Ci0rICBpZihpc3RvcCA+PSBicHApCi0rICAgICBpc3RvcCAtPSBicHA7Ci0r Ci0rICBmb3IgKGkgPSAwOyBpIDwgYnBwOyBpKyspCi0rICB7Ci0rICAgICAqcnAgPSAocG5nX2J5 dGUpKCgoaW50KSgqcnApICsKLSsgICAgICAgICgoaW50KSgqcHArKykgLyAyICkpICYgMHhmZik7 Ci0rCi0rICAgICBycCsrOwotKyAgfQotKwotKyAgLyogQWx0aXZlYyBvcGVyYXRpb25zIHJlcXVp cmUgMTYtYnl0ZSBhbGlnbmVkIGRhdGEKLSsgICAqIGJ1dCBpbnB1dCBjYW4gYmUgdW5hbGlnbmVk LiBTbyB3ZSBjYWxjdWxhdGUKLSsgICAqIHVuYWxpZ25lZCBwYXJ0IGFzIHVzdWFsLgotKyAgICov Ci0rICBmb3IgKGkgPSAwOyBpIDwgdW5hbGlnbmVkX3RvcDsgaSsrKQotKyAgewotKyAgICAgKnJw ID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArCi0rICAgICAgICAoaW50KSgqcHArKyArICoocnAt YnBwKSkgLyAyICkgJiAweGZmKTsKLSsKLSsgICAgIHJwKys7Ci0rICB9Ci0rCi0rICAvKiBVc2lu ZyBTSU1EIHdoaWxlIHdlIGNhbiAqLwotKyAgd2hpbGUoIGlzdG9wID49IDE2ICkKLSsgIHsKLSsg ICAgIGZvcihpPTA7aSA8IGJwcCA7IGkrKykKLSsgICAgIHsKLSsgICAgICAgICpycCA9IChwbmdf Ynl0ZSkoKChpbnQpKCpycCkgKwotKyAgICAgICAgICAgKGludCkoKnBwKysgKyAqKHJwLWJwcCkp IC8gMiApICYgMHhmZik7Ci0rCi0rICAgICAgICBycCsrOwotKyAgICAgfQotKyAgICAgcnAgLT0g YnBwOwotKyAgICAgcHAgLT0gYnBwOwotKwotKyAgICAgdmVjX2xkX3VuYWxpZ25lZChwcF92ZWMs cHApOwotKyAgICAgcnBfdmVjID0gdmVjX2xkKDAscnApOwotKwotKyAgICAgcnBfcGFydF92ZWMg PSB2ZWNfcGVybShycF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTEVGVFNISUZURUQxXzMpOwotKyAg ICAgcHBfcGFydF92ZWMgPSB2ZWNfcGVybShwcF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTk9UX1NI SUZURUQxXzMpOwotKyAgICAgYXZnX3ZlYyA9IHZlY19hdmcocnBfcGFydF92ZWMscHBfcGFydF92 ZWMpOwotKyAgICAgYXZnX3ZlYyA9IHZlY19zdWIoYXZnX3ZlYywgdmVjX2FuZCh2ZWNfeG9yKHJw X3BhcnRfdmVjLHBwX3BhcnRfdmVjKSx2ZWNfc3BsYXRfdTgoMSkpKTsKLSsgICAgIHJwX3ZlYyA9 IHZlY19hZGQocnBfdmVjLGF2Z192ZWMpOwotKwotKyAgICAgcnBfcGFydF92ZWMgPSB2ZWNfcGVy bShycF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTEVGVFNISUZURUQyXzMpOwotKyAgICAgcHBfcGFy dF92ZWMgPSB2ZWNfcGVybShwcF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTk9UX1NISUZURUQyXzMp OwotKyAgICAgYXZnX3ZlYyA9IHZlY19hdmcocnBfcGFydF92ZWMscHBfcGFydF92ZWMpOwotKyAg ICAgYXZnX3ZlYyA9IHZlY19zdWIoYXZnX3ZlYywgdmVjX2FuZCh2ZWNfeG9yKHJwX3BhcnRfdmVj LHBwX3BhcnRfdmVjKSx2ZWNfc3BsYXRfdTgoMSkpKTsKLSsgICAgIHJwX3ZlYyA9IHZlY19hZGQo cnBfdmVjLGF2Z192ZWMpOwotKwotKyAgICAgcnBfcGFydF92ZWMgPSB2ZWNfcGVybShycF92ZWMs VlNYX0NIQVJfWkVSTyxWU1hfTEVGVFNISUZURUQzXzMpOwotKyAgICAgcHBfcGFydF92ZWMgPSB2 ZWNfcGVybShwcF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTk9UX1NISUZURUQzXzMpOwotKyAgICAg YXZnX3ZlYyA9IHZlY19hdmcocnBfcGFydF92ZWMscHBfcGFydF92ZWMpOwotKyAgICAgYXZnX3Zl YyA9IHZlY19zdWIoYXZnX3ZlYywgdmVjX2FuZCh2ZWNfeG9yKHJwX3BhcnRfdmVjLHBwX3BhcnRf dmVjKSx2ZWNfc3BsYXRfdTgoMSkpKTsKLSsgICAgIHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLGF2 Z192ZWMpOwotKwotKyAgICAgcnBfcGFydF92ZWMgPSB2ZWNfcGVybShycF92ZWMsVlNYX0NIQVJf WkVSTyxWU1hfTEVGVFNISUZURUQ0XzMpOwotKyAgICAgcHBfcGFydF92ZWMgPSB2ZWNfcGVybShw cF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTk9UX1NISUZURUQ0XzMpOwotKyAgICAgYXZnX3ZlYyA9 IHZlY19hdmcocnBfcGFydF92ZWMscHBfcGFydF92ZWMpOwotKyAgICAgYXZnX3ZlYyA9IHZlY19z dWIoYXZnX3ZlYywgdmVjX2FuZCh2ZWNfeG9yKHJwX3BhcnRfdmVjLHBwX3BhcnRfdmVjKSx2ZWNf c3BsYXRfdTgoMSkpKTsKLSsgICAgIHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLGF2Z192ZWMpOwot KwotKyAgICAgdmVjX3N0KHJwX3ZlYywwLHJwKTsKLSsKLSsgICAgIHJwICs9IDE1OwotKyAgICAg cHAgKz0gMTU7Ci0rICAgICBpc3RvcCAtPSAxNjsKLSsKLSsgICAgIC8qIFNpbmNlIDE2ICUgYnBw ID0gMTYgJSAzID0gMSwgbGFzdCBlbGVtZW50IG9mIGFycmF5IG11c3QKLSsgICAgICAqIGJlIHBy b2NlZWRlZCBtYW51YWxseQotKyAgICAgICovCi0rICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50 KSgqcnApICsKLSsgICAgICAgIChpbnQpKCpwcCsrICsgKihycC1icHApKSAvIDIgKSAmIDB4ZmYp OwotKyAgICAgcnArKzsKLSsgIH0KLSsKLSsgIGlmKGlzdG9wICA+IDApCi0rICAgICBmb3IgKGkg PSAwOyBpIDwgaXN0b3AgJSAxNjsgaSsrKQotKyAgICAgewotKyAgICAgICAgKnJwID0gKHBuZ19i eXRlKSgoKGludCkoKnJwKSArCi0rICAgICAgICAgICAoaW50KSgqcHArKyArICoocnAtYnBwKSkg LyAyICkgJiAweGZmKTsKLSsKLSsgICAgICAgIHJwKys7Ci0rICAgICB9Ci0rfQotKwotKy8qIEJ5 dGV3aXNlIGMgPyB0IDogZS4gKi8KLSsjZGVmaW5lIGlmX3RoZW5fZWxzZShjLHQsZSkgdmVjX3Nl bChlLHQsYykKLSsKLSsjZGVmaW5lIHZzeF9wYWV0aF9wcm9jZXNzKHJwLHBwLGEsYixjLHBhLHBi LHBjLGJwcCkge1wKLSsgICAgICBjID0gKihwcCAtIGJwcCk7XAotKyAgICAgIGEgPSAqKHJwIC0g YnBwKTtcCi0rICAgICAgYiA9ICpwcCsrO1wKLSsgICAgICBwID0gYiAtIGM7XAotKyAgICAgIHBj ID0gYSAtIGM7XAotKyAgICAgIHBhID0gdnN4X2FicyhwKTtcCi0rICAgICAgcGIgPSB2c3hfYWJz KHBjKTtcCi0rICAgICAgcGMgPSB2c3hfYWJzKHAgKyBwYyk7XAotKyAgICAgIGlmIChwYiA8IHBh KSBwYSA9IHBiLCBhID0gYjtcCi0rICAgICAgaWYgKHBjIDwgcGEpIGEgPSBjO1wKLSsgICAgICBh ICs9ICpycDtcCi0rICAgICAgKnJwKysgPSAocG5nX2J5dGUpYTtcCi0rICAgICAgfQotKwotK3Zv aWQgcG5nX3JlYWRfZmlsdGVyX3Jvd19wYWV0aDRfdnN4KHBuZ19yb3dfaW5mb3Agcm93X2luZm8s IHBuZ19ieXRlcCByb3csCi0rICAgcG5nX2NvbnN0X2J5dGVwIHByZXZfcm93KQotK3sKLSsgICBj b25zdCBwbmdfYnl0ZSBicHAgPSA0OwotKwotKyAgIGludCBhLCBiLCBjLCBwYSwgcGIsIHBjLCBw OwotKyAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIHJwX3ZlYzsKLSsgICB2ZWN0b3IgdW5zaWduZWQg Y2hhciBwcF92ZWM7Ci0rICAgdmVjdG9yIHVuc2lnbmVkIHNob3J0IGFfdmVjLGJfdmVjLGNfdmVj LG5lYXJlc3RfdmVjOwotKyAgIHZlY3RvciBzaWduZWQgc2hvcnQgcGFfdmVjLHBiX3ZlYyxwY192 ZWMsc21hbGxlc3RfdmVjOwotKwotKyAgIHZzeF9kZWNsYXJlX2NvbW1vbl92YXJzKHJvd19pbmZv LHJvdyxwcmV2X3JvdyxicHApCi0rICAgcnAgLT0gYnBwOwotKyAgIGlmKGlzdG9wID49IGJwcCkK LSsgICAgICBpc3RvcCAtPSBicHA7Ci0rCi0rICAgLyogUHJvY2VzcyB0aGUgZmlyc3QgcGl4ZWwg aW4gdGhlIHJvdyBjb21wbGV0ZWx5ICh0aGlzIGlzIHRoZSBzYW1lIGFzICd1cCcKLSsgICAgKiBi ZWNhdXNlIHRoZXJlIGlzIG9ubHkgb25lIGNhbmRpZGF0ZSBwcmVkaWN0b3IgZm9yIHRoZSBmaXJz dCByb3cpLgotKyAgICAqLwotKyAgIGZvcihpID0gMDsgaSA8IGJwcCA7IGkrKykKLSsgICB7Ci0r ICAgICAgKnJwID0gKHBuZ19ieXRlKSggKnJwICsgKnBwKTsKLSsgICAgICBycCsrOwotKyAgICAg IHBwKys7Ci0rICAgfQotKwotKyAgIGZvcihpID0gMDsgaSA8IHVuYWxpZ25lZF90b3AgOyBpKysp Ci0rICAgewotKyAgICAgIHZzeF9wYWV0aF9wcm9jZXNzKHJwLHBwLGEsYixjLHBhLHBiLHBjLGJw cCkKLSsgICB9Ci0rCi0rICAgd2hpbGUoIGlzdG9wID49IDE2KQotKyAgIHsKLSsgICAgICBmb3Io aSA9IDA7IGkgPCBicHAgOyBpKyspCi0rICAgICAgewotKyAgICAgICAgIHZzeF9wYWV0aF9wcm9j ZXNzKHJwLHBwLGEsYixjLHBhLHBiLHBjLGJwcCkKLSsgICAgICB9Ci0rCi0rICAgICAgcnAgLT0g YnBwOwotKyAgICAgIHBwIC09IGJwcDsKLSsgICAgICBycF92ZWMgPSB2ZWNfbGQoMCxycCk7Ci0r ICAgICAgdmVjX2xkX3VuYWxpZ25lZChwcF92ZWMscHApOwotKwotKyAgICAgIGFfdmVjID0gdnN4 X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocnBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9MRUZU U0hJRlRFRDFfNCksMSw0KTsKLSsgICAgICBiX3ZlYyA9IHZzeF9jaGFyX3RvX3Nob3J0KHZlY19w ZXJtKHBwX3ZlYyAsIFZTWF9DSEFSX1pFUk8gLCBWU1hfTk9UX1NISUZURUQxXzQpLDEsNCk7Ci0r ICAgICAgY192ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShwcF92ZWMgLCBWU1hfQ0hB Ul9aRVJPICwgVlNYX0xFRlRTSElGVEVEMV80KSwxLDQpOwotKyAgICAgIHBhX3ZlYyA9ICh2ZWN0 b3Igc2lnbmVkIHNob3J0KSB2ZWNfc3ViKGJfdmVjLGNfdmVjKTsKLSsgICAgICBwYl92ZWMgPSAo dmVjdG9yIHNpZ25lZCBzaG9ydCkgdmVjX3N1YihhX3ZlYyAsIGNfdmVjKTsKLSsgICAgICBwY192 ZWMgPSB2ZWNfYWRkKHBhX3ZlYyxwYl92ZWMpOwotKyAgICAgIHBhX3ZlYyA9IHZlY19hYnMocGFf dmVjKTsKLSsgICAgICBwYl92ZWMgPSB2ZWNfYWJzKHBiX3ZlYyk7Ci0rICAgICAgcGNfdmVjID0g dmVjX2FicyhwY192ZWMpOwotKyAgICAgIHNtYWxsZXN0X3ZlYyA9IHZlY19taW4ocGNfdmVjLCB2 ZWNfbWluKHBhX3ZlYyxwYl92ZWMpKTsKLSsgICAgICBuZWFyZXN0X3ZlYyA9ICBpZl90aGVuX2Vs c2UoCi0rICAgICAgICAgICAgdmVjX2NtcGVxKHBhX3ZlYyxzbWFsbGVzdF92ZWMpLAotKyAgICAg ICAgICAgIGFfdmVjLAotKyAgICAgICAgICAgIGlmX3RoZW5fZWxzZSgKLSsgICAgICAgICAgICAg IHZlY19jbXBlcShwYl92ZWMsc21hbGxlc3RfdmVjKSwKLSsgICAgICAgICAgICAgIGJfdmVjLAot KyAgICAgICAgICAgICAgY192ZWMKLSsgICAgICAgICAgICAgICkKLSsgICAgICAgICAgICApOwot KyAgICAgIHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLCh2c3hfc2hvcnRfdG9fY2hhcihuZWFyZXN0 X3ZlYywxLDQpKSk7Ci0rCi0rICAgICAgYV92ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVy bShycF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX0xFRlRTSElGVEVEMl80KSwyLDQpOwotKyAg ICAgIGJfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocHBfdmVjICwgVlNYX0NIQVJf WkVSTyAsIFZTWF9OT1RfU0hJRlRFRDJfNCksMiw0KTsKLSsgICAgICBjX3ZlYyA9IHZzeF9jaGFy X3RvX3Nob3J0KHZlY19wZXJtKHBwX3ZlYyAsIFZTWF9DSEFSX1pFUk8gLCBWU1hfTEVGVFNISUZU RUQyXzQpLDIsNCk7Ci0rICAgICAgcGFfdmVjID0gKHZlY3RvciBzaWduZWQgc2hvcnQpIHZlY19z dWIoYl92ZWMsY192ZWMpOwotKyAgICAgIHBiX3ZlYyA9ICh2ZWN0b3Igc2lnbmVkIHNob3J0KSB2 ZWNfc3ViKGFfdmVjICwgY192ZWMpOwotKyAgICAgIHBjX3ZlYyA9IHZlY19hZGQocGFfdmVjLHBi X3ZlYyk7Ci0rICAgICAgcGFfdmVjID0gdmVjX2FicyhwYV92ZWMpOwotKyAgICAgIHBiX3ZlYyA9 IHZlY19hYnMocGJfdmVjKTsKLSsgICAgICBwY192ZWMgPSB2ZWNfYWJzKHBjX3ZlYyk7Ci0rICAg ICAgc21hbGxlc3RfdmVjID0gdmVjX21pbihwY192ZWMsIHZlY19taW4ocGFfdmVjLHBiX3ZlYykp OwotKyAgICAgIG5lYXJlc3RfdmVjID0gIGlmX3RoZW5fZWxzZSgKLSsgICAgICAgICAgICB2ZWNf Y21wZXEocGFfdmVjLHNtYWxsZXN0X3ZlYyksCi0rICAgICAgICAgICAgYV92ZWMsCi0rICAgICAg ICAgICAgaWZfdGhlbl9lbHNlKAotKyAgICAgICAgICAgICAgdmVjX2NtcGVxKHBiX3ZlYyxzbWFs bGVzdF92ZWMpLAotKyAgICAgICAgICAgICAgYl92ZWMsCi0rICAgICAgICAgICAgICBjX3ZlYwot KyAgICAgICAgICAgICAgKQotKyAgICAgICAgICAgICk7Ci0rICAgICAgcnBfdmVjID0gdmVjX2Fk ZChycF92ZWMsKHZzeF9zaG9ydF90b19jaGFyKG5lYXJlc3RfdmVjLDIsNCkpKTsKLSsKLSsgICAg ICBhX3ZlYyA9IHZzeF9jaGFyX3RvX3Nob3J0KHZlY19wZXJtKHJwX3ZlYyAsIFZTWF9DSEFSX1pF Uk8gLCBWU1hfTEVGVFNISUZURUQzXzQpLDMsNCk7Ci0rICAgICAgYl92ZWMgPSB2c3hfY2hhcl90 b19zaG9ydCh2ZWNfcGVybShwcF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX05PVF9TSElGVEVE M180KSwzLDQpOwotKyAgICAgIGNfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocHBf dmVjICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9MRUZUU0hJRlRFRDNfNCksMyw0KTsKLSsgICAgICBw YV92ZWMgPSAodmVjdG9yIHNpZ25lZCBzaG9ydCkgdmVjX3N1YihiX3ZlYyxjX3ZlYyk7Ci0rICAg ICAgcGJfdmVjID0gKHZlY3RvciBzaWduZWQgc2hvcnQpIHZlY19zdWIoYV92ZWMgLCBjX3ZlYyk7 Ci0rICAgICAgcGNfdmVjID0gdmVjX2FkZChwYV92ZWMscGJfdmVjKTsKLSsgICAgICBwYV92ZWMg PSB2ZWNfYWJzKHBhX3ZlYyk7Ci0rICAgICAgcGJfdmVjID0gdmVjX2FicyhwYl92ZWMpOwotKyAg ICAgIHBjX3ZlYyA9IHZlY19hYnMocGNfdmVjKTsKLSsgICAgICBzbWFsbGVzdF92ZWMgPSB2ZWNf bWluKHBjX3ZlYywgdmVjX21pbihwYV92ZWMscGJfdmVjKSk7Ci0rICAgICAgbmVhcmVzdF92ZWMg PSAgaWZfdGhlbl9lbHNlKAotKyAgICAgICAgICAgIHZlY19jbXBlcShwYV92ZWMsc21hbGxlc3Rf dmVjKSwKLSsgICAgICAgICAgICBhX3ZlYywKLSsgICAgICAgICAgICBpZl90aGVuX2Vsc2UoCi0r ICAgICAgICAgICAgICB2ZWNfY21wZXEocGJfdmVjLHNtYWxsZXN0X3ZlYyksCi0rICAgICAgICAg ICAgICBiX3ZlYywKLSsgICAgICAgICAgICAgIGNfdmVjCi0rICAgICAgICAgICAgICApCi0rICAg ICAgICAgICAgKTsKLSsgICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYywodnN4X3Nob3J0X3Rv X2NoYXIobmVhcmVzdF92ZWMsMyw0KSkpOwotKwotKyAgICAgIHZlY19zdChycF92ZWMsMCxycCk7 Ci0rCi0rICAgICAgcnAgKz0gMTY7Ci0rICAgICAgcHAgKz0gMTY7Ci0rICAgICAgaXN0b3AgLT0g MTY7Ci0rICAgfQotKwotKyAgIGlmKGlzdG9wID4gMCkKLSsgICAgICBmb3IgKGkgPSAwOyBpIDwg aXN0b3AgJSAxNjsgaSsrKQotKyAgICAgIHsKLSsgICAgICAgICB2c3hfcGFldGhfcHJvY2Vzcyhy cCxwcCxhLGIsYyxwYSxwYixwYyxicHApCi0rICAgICAgfQotK30KLSsKLSt2b2lkIHBuZ19yZWFk X2ZpbHRlcl9yb3dfcGFldGgzX3ZzeChwbmdfcm93X2luZm9wIHJvd19pbmZvLCBwbmdfYnl0ZXAg cm93LAotKyAgIHBuZ19jb25zdF9ieXRlcCBwcmV2X3JvdykKLSt7Ci0rICBjb25zdCBwbmdfYnl0 ZSBicHAgPSAzOwotKwotKyAgaW50IGEsIGIsIGMsIHBhLCBwYiwgcGMsIHA7Ci0rICB2ZWN0b3Ig dW5zaWduZWQgY2hhciBycF92ZWM7Ci0rICB2ZWN0b3IgdW5zaWduZWQgY2hhciBwcF92ZWM7Ci0r ICB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgYV92ZWMsYl92ZWMsY192ZWMsbmVhcmVzdF92ZWM7Ci0r ICB2ZWN0b3Igc2lnbmVkIHNob3J0IHBhX3ZlYyxwYl92ZWMscGNfdmVjLHNtYWxsZXN0X3ZlYzsK LSsKLSsgIHZzeF9kZWNsYXJlX2NvbW1vbl92YXJzKHJvd19pbmZvLHJvdyxwcmV2X3JvdyxicHAp Ci0rICBycCAtPSBicHA7Ci0rICBpZihpc3RvcCA+PSBicHApCi0rICAgICBpc3RvcCAtPSBicHA7 Ci0rCi0rICAvKiBQcm9jZXNzIHRoZSBmaXJzdCBwaXhlbCBpbiB0aGUgcm93IGNvbXBsZXRlbHkg KHRoaXMgaXMgdGhlIHNhbWUgYXMgJ3VwJwotKyAgICogYmVjYXVzZSB0aGVyZSBpcyBvbmx5IG9u ZSBjYW5kaWRhdGUgcHJlZGljdG9yIGZvciB0aGUgZmlyc3Qgcm93KS4KLSsgICAqLwotKyAgZm9y KGkgPSAwOyBpIDwgYnBwIDsgaSsrKQotKyAgewotKyAgICAgKnJwID0gKHBuZ19ieXRlKSggKnJw ICsgKnBwKTsKLSsgICAgIHJwKys7Ci0rICAgICBwcCsrOwotKyAgfQotKwotKyAgZm9yKGkgPSAw OyBpIDwgdW5hbGlnbmVkX3RvcCA7IGkrKykKLSsgIHsKLSsgICAgIHZzeF9wYWV0aF9wcm9jZXNz KHJwLHBwLGEsYixjLHBhLHBiLHBjLGJwcCkKLSsgIH0KLSsKLSsgIHdoaWxlKCBpc3RvcCA+PSAx NikKLSsgIHsKLSsgICAgIGZvcihpID0gMDsgaSA8IGJwcCA7IGkrKykKLSsgICAgIHsKLSsgICAg ICAgIHZzeF9wYWV0aF9wcm9jZXNzKHJwLHBwLGEsYixjLHBhLHBiLHBjLGJwcCkKLSsgICAgIH0K LSsKLSsgICAgIHJwIC09IGJwcDsKLSsgICAgIHBwIC09IGJwcDsKLSsgICAgIHJwX3ZlYyA9IHZl Y19sZCgwLHJwKTsKLSsgICAgIHZlY19sZF91bmFsaWduZWQocHBfdmVjLHBwKTsKLSsKLSsgICAg IGFfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocnBfdmVjICwgVlNYX0NIQVJfWkVS TyAsIFZTWF9MRUZUU0hJRlRFRDFfMyksMSwzKTsKLSsgICAgIGJfdmVjID0gdnN4X2NoYXJfdG9f c2hvcnQodmVjX3Blcm0ocHBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9OT1RfU0hJRlRFRDFf MyksMSwzKTsKLSsgICAgIGNfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocHBfdmVj ICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9MRUZUU0hJRlRFRDFfMyksMSwzKTsKLSsgICAgIHBhX3Zl YyA9ICh2ZWN0b3Igc2lnbmVkIHNob3J0KSB2ZWNfc3ViKGJfdmVjLGNfdmVjKTsKLSsgICAgIHBi X3ZlYyA9ICh2ZWN0b3Igc2lnbmVkIHNob3J0KSB2ZWNfc3ViKGFfdmVjICwgY192ZWMpOwotKyAg ICAgcGNfdmVjID0gdmVjX2FkZChwYV92ZWMscGJfdmVjKTsKLSsgICAgIHBhX3ZlYyA9IHZlY19h YnMocGFfdmVjKTsKLSsgICAgIHBiX3ZlYyA9IHZlY19hYnMocGJfdmVjKTsKLSsgICAgIHBjX3Zl YyA9IHZlY19hYnMocGNfdmVjKTsKLSsgICAgIHNtYWxsZXN0X3ZlYyA9IHZlY19taW4ocGNfdmVj LCB2ZWNfbWluKHBhX3ZlYyxwYl92ZWMpKTsKLSsgICAgIG5lYXJlc3RfdmVjID0gIGlmX3RoZW5f ZWxzZSgKLSsgICAgICAgICAgIHZlY19jbXBlcShwYV92ZWMsc21hbGxlc3RfdmVjKSwKLSsgICAg ICAgICAgIGFfdmVjLAotKyAgICAgICAgICAgaWZfdGhlbl9lbHNlKAotKyAgICAgICAgICAgICB2 ZWNfY21wZXEocGJfdmVjLHNtYWxsZXN0X3ZlYyksCi0rICAgICAgICAgICAgIGJfdmVjLAotKyAg ICAgICAgICAgICBjX3ZlYwotKyAgICAgICAgICAgICApCi0rICAgICAgICAgICApOwotKyAgICAg cnBfdmVjID0gdmVjX2FkZChycF92ZWMsKHZzeF9zaG9ydF90b19jaGFyKG5lYXJlc3RfdmVjLDEs MykpKTsKLSsKLSsgICAgIGFfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocnBfdmVj ICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9MRUZUU0hJRlRFRDJfMyksMiwzKTsKLSsgICAgIGJfdmVj ID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocHBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZT WF9OT1RfU0hJRlRFRDJfMyksMiwzKTsKLSsgICAgIGNfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQo dmVjX3Blcm0ocHBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9MRUZUU0hJRlRFRDJfMyksMiwz KTsKLSsgICAgIHBhX3ZlYyA9ICh2ZWN0b3Igc2lnbmVkIHNob3J0KSB2ZWNfc3ViKGJfdmVjLGNf dmVjKTsKLSsgICAgIHBiX3ZlYyA9ICh2ZWN0b3Igc2lnbmVkIHNob3J0KSB2ZWNfc3ViKGFfdmVj ICwgY192ZWMpOwotKyAgICAgcGNfdmVjID0gdmVjX2FkZChwYV92ZWMscGJfdmVjKTsKLSsgICAg IHBhX3ZlYyA9IHZlY19hYnMocGFfdmVjKTsKLSsgICAgIHBiX3ZlYyA9IHZlY19hYnMocGJfdmVj KTsKLSsgICAgIHBjX3ZlYyA9IHZlY19hYnMocGNfdmVjKTsKLSsgICAgIHNtYWxsZXN0X3ZlYyA9 IHZlY19taW4ocGNfdmVjLCB2ZWNfbWluKHBhX3ZlYyxwYl92ZWMpKTsKLSsgICAgIG5lYXJlc3Rf dmVjID0gIGlmX3RoZW5fZWxzZSgKLSsgICAgICAgICAgIHZlY19jbXBlcShwYV92ZWMsc21hbGxl c3RfdmVjKSwKLSsgICAgICAgICAgIGFfdmVjLAotKyAgICAgICAgICAgaWZfdGhlbl9lbHNlKAot KyAgICAgICAgICAgICB2ZWNfY21wZXEocGJfdmVjLHNtYWxsZXN0X3ZlYyksCi0rICAgICAgICAg ICAgIGJfdmVjLAotKyAgICAgICAgICAgICBjX3ZlYwotKyAgICAgICAgICAgICApCi0rICAgICAg ICAgICApOwotKyAgICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMsKHZzeF9zaG9ydF90b19jaGFy KG5lYXJlc3RfdmVjLDIsMykpKTsKLSsKLSsgICAgIGFfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQo dmVjX3Blcm0ocnBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9MRUZUU0hJRlRFRDNfMyksMywz KTsKLSsgICAgIGJfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocHBfdmVjICwgVlNY X0NIQVJfWkVSTyAsIFZTWF9OT1RfU0hJRlRFRDNfMyksMywzKTsKLSsgICAgIGNfdmVjID0gdnN4 X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocHBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9MRUZU U0hJRlRFRDNfMyksMywzKTsKLSsgICAgIHBhX3ZlYyA9ICh2ZWN0b3Igc2lnbmVkIHNob3J0KSB2 ZWNfc3ViKGJfdmVjLGNfdmVjKTsKLSsgICAgIHBiX3ZlYyA9ICh2ZWN0b3Igc2lnbmVkIHNob3J0 KSB2ZWNfc3ViKGFfdmVjICwgY192ZWMpOwotKyAgICAgcGNfdmVjID0gdmVjX2FkZChwYV92ZWMs cGJfdmVjKTsKLSsgICAgIHBhX3ZlYyA9IHZlY19hYnMocGFfdmVjKTsKLSsgICAgIHBiX3ZlYyA9 IHZlY19hYnMocGJfdmVjKTsKLSsgICAgIHBjX3ZlYyA9IHZlY19hYnMocGNfdmVjKTsKLSsgICAg IHNtYWxsZXN0X3ZlYyA9IHZlY19taW4ocGNfdmVjLCB2ZWNfbWluKHBhX3ZlYyxwYl92ZWMpKTsK LSsgICAgIG5lYXJlc3RfdmVjID0gIGlmX3RoZW5fZWxzZSgKLSsgICAgICAgICAgIHZlY19jbXBl cShwYV92ZWMsc21hbGxlc3RfdmVjKSwKLSsgICAgICAgICAgIGFfdmVjLAotKyAgICAgICAgICAg aWZfdGhlbl9lbHNlKAotKyAgICAgICAgICAgICB2ZWNfY21wZXEocGJfdmVjLHNtYWxsZXN0X3Zl YyksCi0rICAgICAgICAgICAgIGJfdmVjLAotKyAgICAgICAgICAgICBjX3ZlYwotKyAgICAgICAg ICAgICApCi0rICAgICAgICAgICApOwotKyAgICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMsKHZz eF9zaG9ydF90b19jaGFyKG5lYXJlc3RfdmVjLDMsMykpKTsKLSsKLSsgICAgIGFfdmVjID0gdnN4 X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocnBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9MRUZU U0hJRlRFRDRfMyksNCwzKTsKLSsgICAgIGJfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Bl cm0ocHBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9OT1RfU0hJRlRFRDRfMyksNCwzKTsKLSsg ICAgIGNfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocHBfdmVjICwgVlNYX0NIQVJf WkVSTyAsIFZTWF9MRUZUU0hJRlRFRDRfMyksNCwzKTsKLSsgICAgIHBhX3ZlYyA9ICh2ZWN0b3Ig c2lnbmVkIHNob3J0KSB2ZWNfc3ViKGJfdmVjLGNfdmVjKTsKLSsgICAgIHBiX3ZlYyA9ICh2ZWN0 b3Igc2lnbmVkIHNob3J0KSB2ZWNfc3ViKGFfdmVjICwgY192ZWMpOwotKyAgICAgcGNfdmVjID0g dmVjX2FkZChwYV92ZWMscGJfdmVjKTsKLSsgICAgIHBhX3ZlYyA9IHZlY19hYnMocGFfdmVjKTsK LSsgICAgIHBiX3ZlYyA9IHZlY19hYnMocGJfdmVjKTsKLSsgICAgIHBjX3ZlYyA9IHZlY19hYnMo cGNfdmVjKTsKLSsgICAgIHNtYWxsZXN0X3ZlYyA9IHZlY19taW4ocGNfdmVjLCB2ZWNfbWluKHBh X3ZlYyxwYl92ZWMpKTsKLSsgICAgIG5lYXJlc3RfdmVjID0gIGlmX3RoZW5fZWxzZSgKLSsgICAg ICAgICAgIHZlY19jbXBlcShwYV92ZWMsc21hbGxlc3RfdmVjKSwKLSsgICAgICAgICAgIGFfdmVj LAotKyAgICAgICAgICAgaWZfdGhlbl9lbHNlKAotKyAgICAgICAgICAgICB2ZWNfY21wZXEocGJf dmVjLHNtYWxsZXN0X3ZlYyksCi0rICAgICAgICAgICAgIGJfdmVjLAotKyAgICAgICAgICAgICBj X3ZlYwotKyAgICAgICAgICAgICApCi0rICAgICAgICAgICApOwotKyAgICAgcnBfdmVjID0gdmVj X2FkZChycF92ZWMsKHZzeF9zaG9ydF90b19jaGFyKG5lYXJlc3RfdmVjLDQsMykpKTsKLSsKLSsg ICAgIHZlY19zdChycF92ZWMsMCxycCk7Ci0rCi0rICAgICBycCArPSAxNTsKLSsgICAgIHBwICs9 IDE1OwotKyAgICAgaXN0b3AgLT0gMTY7Ci0rCi0rICAgICAvKiBTaW5jZSAxNiAlIGJwcCA9IDE2 ICUgMyA9IDEsIGxhc3QgZWxlbWVudCBvZiBhcnJheSBtdXN0Ci0rICAgICAgKiBiZSBwcm9jZWVk ZWQgbWFudWFsbHkKLSsgICAgICAqLwotKyAgICAgdnN4X3BhZXRoX3Byb2Nlc3MocnAscHAsYSxi LGMscGEscGIscGMsYnBwKQotKyAgfQotKwotKyAgaWYoaXN0b3AgPiAwKQotKyAgICAgZm9yIChp ID0gMDsgaSA8IGlzdG9wICUgMTY7IGkrKykKLSsgICAgIHsKLSsgICAgICAgIHZzeF9wYWV0aF9w cm9jZXNzKHJwLHBwLGEsYixjLHBhLHBiLHBjLGJwcCkKLSsgICAgIH0KLSt9Ci0rCi0rI2VuZGlm IC8qIFBOR19QT1dFUlBDX1ZTWF9PUFQgPiAwICovCi0rI2VuZGlmIC8qIFBOR19QT1dFUlBDX1ZT WF9JTVBMRU1FTlRBVElPTiA9PSAxIChpbnRyaW5zaWNzKSAqLwotKyNlbmRpZiAvKiBSRUFEICov Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9saWJwbmcvcG93ZXJwYy9wb3dlcnBjX2lu aXQuYwotQEAgLTAsMCArMSwxMjUgQEAKLSsKLSsvKiBwb3dlcnBjX2luaXQuYyAtIFBPV0VSUEMg b3B0aW1pc2VkIGZpbHRlciBmdW5jdGlvbnMKLSsgKgotKyAqIENvcHlyaWdodCAoYykgMjAxNyBH bGVubiBSYW5kZXJzLVBlaHJzb24KLSsgKiBXcml0dGVuIGJ5IFZhZGltIEJhcmtvdiwgMjAxNy4K LSsgKiBMYXN0IGNoYW5nZWQgaW4gbGlicG5nIDEuNi4yOSBbTWFyY2ggMTYsIDIwMTddCi0rICoK LSsgKiBUaGlzIGNvZGUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIGxpYnBuZyBsaWNlbnNlLgotKyAq IEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgdGhlIGRpc2NsYWlt ZXIKLSsgKiBhbmQgbGljZW5zZSBpbiBwbmcuaAotKyAqLwotKy8qIEJlbG93LCBhZnRlciBjaGVj a2luZyBfX2xpbnV4X18sIHZhcmlvdXMgbm9uLUM5MCBQT1NJWCAxMDAzLjEgZnVuY3Rpb25zIGFy ZQotKyAqIGNhbGxlZC4KLSsgKi8KLSsjZGVmaW5lIF9QT1NJWF9TT1VSQ0UgMQotKwotKyNpbmNs dWRlIDxzdGRpby5oPgotKyNpbmNsdWRlICIuLi9wbmdwcml2LmgiCi0rCi0rI2lmZGVmIFBOR19S RUFEX1NVUFBPUlRFRAotKwotKyNpZiBQTkdfUE9XRVJQQ19WU1hfT1BUID4gMAotKyNpZmRlZiBQ TkdfUE9XRVJQQ19WU1hfQ0hFQ0tfU1VQUE9SVEVEIC8qIERvIHJ1bi10aW1lIGNoZWNrcyAqLwot Ky8qIFdBUk5JTkc6IGl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgeW91IGRvIG5vdCBi dWlsZCBsaWJwbmcgd2l0aAotKyAqIHJ1bi10aW1lIGNoZWNrcyBmb3IgQ1BVIGZlYXR1cmVzIGlm IGF0IGFsbCBwb3NzaWJsZS4gIEluIHRoZSBjYXNlIG9mIHRoZSBQb3dlclBDCi0rICogVlNYIGlu c3RydWN0aW9ucyB0aGVyZSBpcyBubyBwcm9jZXNzb3Itc3BlY2lmaWMgd2F5IG9mIGRldGVjdGlu ZyB0aGUKLSsgKiBwcmVzZW5jZSBvZiB0aGUgcmVxdWlyZWQgc3VwcG9ydCwgdGhlcmVmb3JlIHJ1 bi10aW1lIGRldGVjdGlvbiBpcyBleHRyZW1lbHkKLSsgKiBPUyBzcGVjaWZpYy4KLSsgKgotKyAq IFlvdSBtYXkgc2V0IHRoZSBtYWNybyBQTkdfUE9XRVJQQ19WU1hfRklMRSB0byB0aGUgZmlsZSBu YW1lIG9mIGZpbGUgY29udGFpbmluZwotKyAqIGEgZnJhZ21lbnQgb2YgQyBzb3VyY2UgY29kZSB3 aGljaCBkZWZpbmVzIHRoZSBwbmdfaGF2ZV92c3ggZnVuY3Rpb24uICBUaGVyZQotKyAqIGFyZSBh IG51bWJlciBvZiBpbXBsZW1lbnRhdGlvbnMgaW4gY29udHJpYi9wb3dlcnBjLXZzeCwgYnV0IHRo ZSBvbmx5IG9uZSB0aGF0Ci0rICogaGFzIHBhcnRpYWwgc3VwcG9ydCBpcyBjb250cmliL3Bvd2Vy cGMtdnN4L2xpbnV4LmMgLSBhIGdlbmVyaWMgTGludXgKLSsgKiBpbXBsZW1lbnRhdGlvbiB3aGlj aCByZWFkcyAvcHJvYy9jcHVmaW5vLgotKyAqLwotKyNpZm5kZWYgUE5HX1BPV0VSUENfVlNYX0ZJ TEUKLSsjICBpZmRlZiBfX2xpbnV4X18KLSsjICAgICBkZWZpbmUgIFBOR19QT1dFUlBDX1ZTWF9G SUxFICJjb250cmliL3Bvd2VycGMtdnN4L2xpbnV4X2F1eC5jIgotKyMgIGVuZGlmCi0rI2VuZGlm Ci0rCi0rI2lmZGVmIFBOR19QT1dFUlBDX1ZTWF9GSUxFCi0rCi0rI2luY2x1ZGUgPHNpZ25hbC5o PiAvKiBmb3Igc2lnX2F0b21pY190ICovCi0rc3RhdGljIGludCBwbmdfaGF2ZV92c3gocG5nX3N0 cnVjdHAgcG5nX3B0cik7Ci0rI2luY2x1ZGUgUE5HX1BPV0VSUENfVlNYX0ZJTEUKLSsKLSsjZWxz ZSAgLyogUE5HX1BPV0VSUENfVlNYX0ZJTEUgKi8KLSsjICBlcnJvciAiUE5HX1BPV0VSUENfVlNY X0ZJTEUgdW5kZWZpbmVkOiBubyBzdXBwb3J0IGZvciBydW4tdGltZSBQT1dFUlBDIFZTWCBjaGVj a3MiCi0rI2VuZGlmIC8qIFBOR19QT1dFUlBDX1ZTWF9GSUxFICovCi0rI2VuZGlmIC8qIFBOR19Q T1dFUlBDX1ZTWF9DSEVDS19TVVBQT1JURUQgKi8KLSsKLSt2b2lkCi0rcG5nX2luaXRfZmlsdGVy X2Z1bmN0aW9uc192c3gocG5nX3N0cnVjdHAgcHAsIHVuc2lnbmVkIGludCBicHApCi0rewotKyAg IC8qIFRoZSBzd2l0Y2ggc3RhdGVtZW50IGlzIGNvbXBpbGVkIGluIGZvciBQT1dFUlBDX1ZTWF9B UEksIHRoZSBjYWxsIHRvCi0rICAgICogcG5nX2hhdmVfdnN4IGlzIGNvbXBpbGVkIGluIGZvciBQ T1dFUlBDX1ZTWF9DSEVDSy4gSWYgYm90aCBhcmUgZGVmaW5lZAotKyAgICAqIHRoZSBjaGVjayBp cyBvbmx5IHBlcmZvcm1lZCBpZiB0aGUgQVBJIGhhcyBub3Qgc2V0IHRoZSBQb3dlclBDIG9wdGlv biBvbgotKyAgICAqIG9yIG9mZiBleHBsaWNpdGx5LiBJbiB0aGlzIGNhc2UgdGhlIGNoZWNrIGNv bnRyb2xzIHdoYXQgaGFwcGVucy4KLSsgICAgKi8KLSsKLSsjaWZkZWYgUE5HX1BPV0VSUENfVlNY X0FQSV9TVVBQT1JURUQKLSsgICBzd2l0Y2ggKChwcC0+b3B0aW9ucyA+PiBQTkdfUE9XRVJQQ19W U1gpICYgMykKLSsgICB7Ci0rICAgICAgY2FzZSBQTkdfT1BUSU9OX1VOU0VUOgotKyAgICAgICAg IC8qIEFsbG93IHRoZSBydW4tdGltZSBjaGVjayB0byBleGVjdXRlIGlmIGl0IGhhcyBiZWVuIGVu YWJsZWQgLQotKyAgICAgICAgICAqIHRodXMgYm90aCBBUEkgYW5kIENIRUNLIGNhbiBiZSB0dXJu ZWQgb24uICBJZiBpdCBpc24ndCBzdXBwb3J0ZWQKLSsgICAgICAgICAgKiB0aGlzIGNhc2Ugd2ls bCBmYWxsIHRocm91Z2ggdG8gdGhlICdkZWZhdWx0JyBiZWxvdywgd2hpY2gganVzdAotKyAgICAg ICAgICAqIHJldHVybnMuCi0rICAgICAgICAgICovCi0rI2VuZGlmIC8qIFBOR19QT1dFUlBDX1ZT WF9BUElfU1VQUE9SVEVEICovCi0rI2lmZGVmIFBOR19QT1dFUlBDX1ZTWF9DSEVDS19TVVBQT1JU RUQKLSsgICAgICAgICB7Ci0rICAgICAgICAgICAgc3RhdGljIHZvbGF0aWxlIHNpZ19hdG9taWNf dCBub192c3ggPSAtMTsgLyogbm90IGNoZWNrZWQgKi8KLSsKLSsgICAgICAgICAgICBpZiAobm9f dnN4IDwgMCkKLSsgICAgICAgICAgICAgICBub192c3ggPSAhcG5nX2hhdmVfdnN4KHBwKTsKLSsK LSsgICAgICAgICAgICBpZiAobm9fdnN4KQotKyAgICAgICAgICAgICAgIHJldHVybjsKLSsgICAg ICAgICB9Ci0rI2lmZGVmIFBOR19QT1dFUlBDX1ZTWF9BUElfU1VQUE9SVEVECi0rICAgICAgICAg YnJlYWs7Ci0rI2VuZGlmCi0rI2VuZGlmIC8qIFBOR19QT1dFUlBDX1ZTWF9DSEVDS19TVVBQT1JU RUQgKi8KLSsKLSsjaWZkZWYgUE5HX1BPV0VSUENfVlNYX0FQSV9TVVBQT1JURUQKLSsgICAgICBk ZWZhdWx0OiAvKiBPRkYgb3IgSU5WQUxJRCAqLwotKyAgICAgICAgIHJldHVybjsKLSsKLSsgICAg ICBjYXNlIFBOR19PUFRJT05fT046Ci0rICAgICAgICAgLyogT3B0aW9uIHR1cm5lZCBvbiAqLwot KyAgICAgICAgIGJyZWFrOwotKyAgIH0KLSsjZW5kaWYKLSsKLSsgICAvKiBJTVBPUlRBTlQ6IGFu eSBuZXcgaW50ZXJuYWwgZnVuY3Rpb25zIHVzZWQgaGVyZSBtdXN0IGJlIGRlY2xhcmVkIHVzaW5n Ci0rICAgICogUE5HX0lOVEVSTkFMX0ZVTkNUSU9OIGluIC4uL3BuZ3ByaXYuaC4gIFRoaXMgaXMg cmVxdWlyZWQgc28gdGhhdCB0aGUKLSsgICAgKiAncHJlZml4JyBvcHRpb24gdG8gY29uZmlndXJl IHdvcmtzOgotKyAgICAqCi0rICAgICogICAgLi9jb25maWd1cmUgLS13aXRoLWxpYnBuZy1wcmVm aXg9Zm9vYmFyXwotKyAgICAqCi0rICAgICogVmVyaWZ5IHlvdSBoYXZlIGdvdCB0aGlzIHJpZ2h0 IGJ5IHJ1bm5pbmcgdGhlIGFib3ZlIGNvbW1hbmQsIGRvaW5nIGEgYnVpbGQKLSsgICAgKiBhbmQg ZXhhbWluaW5nIHBuZ3ByZWZpeC5oOyBpdCBtdXN0IGNvbnRhaW4gYSAjZGVmaW5lIGZvciBldmVy eSBleHRlcm5hbAotKyAgICAqIGZ1bmN0aW9uIHlvdSBhZGQuICAoTm90aWNlIHRoYXQgdGhpcyBo YXBwZW5zIGF1dG9tYXRpY2FsbHkgZm9yIHRoZQotKyAgICAqIGluaXRpYWxpemF0aW9uIGZ1bmN0 aW9uLikKLSsgICAgKi8KLSsgICBwcC0+cmVhZF9maWx0ZXJbUE5HX0ZJTFRFUl9WQUxVRV9VUC0x XSA9IHBuZ19yZWFkX2ZpbHRlcl9yb3dfdXBfdnN4OwotKwotKyAgIGlmIChicHAgPT0gMykKLSsg ICB7Ci0rICAgICAgcHAtPnJlYWRfZmlsdGVyW1BOR19GSUxURVJfVkFMVUVfU1VCLTFdID0gcG5n X3JlYWRfZmlsdGVyX3Jvd19zdWIzX3ZzeDsKLSsgICAgICBwcC0+cmVhZF9maWx0ZXJbUE5HX0ZJ TFRFUl9WQUxVRV9BVkctMV0gPSBwbmdfcmVhZF9maWx0ZXJfcm93X2F2ZzNfdnN4OwotKyAgICAg IHBwLT5yZWFkX2ZpbHRlcltQTkdfRklMVEVSX1ZBTFVFX1BBRVRILTFdID0gcG5nX3JlYWRfZmls dGVyX3Jvd19wYWV0aDNfdnN4OwotKyAgIH0KLSsKLSsgICBlbHNlIGlmIChicHAgPT0gNCkKLSsg ICB7Ci0rICAgICAgcHAtPnJlYWRfZmlsdGVyW1BOR19GSUxURVJfVkFMVUVfU1VCLTFdID0gcG5n X3JlYWRfZmlsdGVyX3Jvd19zdWI0X3ZzeDsKLSsgICAgICBwcC0+cmVhZF9maWx0ZXJbUE5HX0ZJ TFRFUl9WQUxVRV9BVkctMV0gPSBwbmdfcmVhZF9maWx0ZXJfcm93X2F2ZzRfdnN4OwotKyAgICAg IHBwLT5yZWFkX2ZpbHRlcltQTkdfRklMVEVSX1ZBTFVFX1BBRVRILTFdID0gcG5nX3JlYWRfZmls dGVyX3Jvd19wYWV0aDRfdnN4OwotKyAgIH0KLSt9Ci0rI2VuZGlmIC8qIFBOR19QT1dFUlBDX1ZT WF9PUFQgPiAwICovCi0rI2VuZGlmIC8qIFJFQUQgKi8KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvbHNzL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oCi0r KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2xzcy9saW51 eF9zeXNjYWxsX3N1cHBvcnQuaAotQEAgLTM5MTQsNyArMzkxNCw3IEBAIHN0cnVjdCBrZXJuZWxf c3RhdGZzIHsKLSAgICAgICBMU1NfUkVHKDIsIGJ1Zik7Ci0gICAgICAgTFNTX0JPRFkodm9pZCos IG1tYXAyLCAiMCIoX19yMikpOwotICAgICB9Ci0tI2Vsc2UKLSsjZWxpZiAhZGVmaW5lZChfX3Bv d2VycGM2NF9fKSAvKiBwcGM2NCBkb2Vzbid0IGhhdmUgbW1hcDIgKi8KLSAgICAgI2RlZmluZSBf X05SX19tbWFwMiBfX05SX21tYXAyCi0gICAgIExTU19JTkxJTkUgX3N5c2NhbGw2KHZvaWQqLCBf bW1hcDIsICAgICAgICAgICAgdm9pZCosIHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNp emVfdCwgICAgICAgICAgICAgICAgICAgbCwgaW50LCAgICAgICAgICAgICAgIHAsCi1AQCAtNDA0 NSw3ICs0MDQ1LDcgQEAgc3RydWN0IGtlcm5lbF9zdGF0ZnMgewotICAgI2lmIGRlZmluZWQoX19p Mzg2X18pIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSAgICAgICBkZWZpbmVkKF9fQVJNX0FSQ0hfM19fKSB8fCBkZWZpbmVkKF9fQVJNX0VB QklfXykgfHwgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAoZGVmaW5lZChfX21pcHNfXykg JiYgX01JUFNfU0lNID09IF9NSVBTX1NJTV9BQkkzMikgfHwgICAgICAgICAgICAgICAgICAgXAot LSAgICAgIGRlZmluZWQoX19QUENfXykgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgIChkZWZpbmVkKF9fUFBDX18pICYmICFkZWZp bmVkKF9fcG93ZXJwYzY0X18pKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAotICAgICAgKGRlZmluZWQoX19zMzkwX18pICYmICFkZWZpbmVk KF9fczM5MHhfXykpCi0gICAgIC8qIE9uIHRoZXNlIGFyY2hpdGVjdHVyZXMsIGltcGxlbWVudCBt bWFwKCkgd2l0aCBtbWFwMigpLiAqLwotICAgICBMU1NfSU5MSU5FIHZvaWQqIExTU19OQU1FKG1t YXApKHZvaWQgKnMsIHNpemVfdCBsLCBpbnQgcCwgaW50IGYsIGludCBkLAotLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ub2RlL25vZGUucHkKLSsrKyBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvbm9kZS9ub2RlLnB5 Ci1AQCAtMTAsMTEgKzEwLDEyIEBAIGltcG9ydCBzeXMKLSAKLSAKLSBkZWYgR2V0QmluYXJ5UGF0 aCgpOgotLSAgcmV0dXJuIG9zX3BhdGguam9pbihvc19wYXRoLmRpcm5hbWUoX19maWxlX18pLCAq ewotLSAgICAnRGFyd2luJzogKCdtYWMnLCAnbm9kZS1kYXJ3aW4teDY0JywgJ2JpbicsICdub2Rl JyksCi0tICAgICdMaW51eCc6ICgnbGludXgnLCAnbm9kZS1saW51eC14NjQnLCAnYmluJywgJ25v ZGUnKSwKLS0gICAgJ1dpbmRvd3MnOiAoJ3dpbicsICdub2RlLmV4ZScpLAotLSAgfVtwbGF0Zm9y bS5zeXN0ZW0oKV0pCi0rICByZXR1cm4gIi91c3IvYmluL25vZGUiCi0rICAjcmV0dXJuIG9zX3Bh dGguam9pbihvc19wYXRoLmRpcm5hbWUoX19maWxlX18pLCAqewotKyAgIyAgJ0Rhcndpbic6ICgn bWFjJywgJ25vZGUtZGFyd2luLXg2NCcsICdiaW4nLCAnbm9kZScpLAotKyAgIyAgJ0xpbnV4Jzog KCdsaW51eCcsICdub2RlLWxpbnV4LXg2NCcsICdiaW4nLCAnbm9kZScpLAotKyAgIyAgJ1dpbmRv d3MnOiAoJ3dpbicsICdub2RlLmV4ZScpLAotKyAgI31bcGxhdGZvcm0uc3lzdGVtKCldKQotIAot IAotIGRlZiBSdW5Ob2RlKGNtZF9wYXJ0cywgc3Rkb3V0PU5vbmUpOgotLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9wZGZpdW0vdGhpcmRfcGFydHkvYmFz ZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9wYWdlX2FsbG9jYXRvcl9jb25zdGFudHMu aAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9wZGZp dW0vdGhpcmRfcGFydHkvYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9wYWdlX2Fs bG9jYXRvcl9jb25zdGFudHMuaAotQEAgLTExLDcgKzExLDcgQEAKLSAKLSBuYW1lc3BhY2UgcGRm aXVtIHsKLSBuYW1lc3BhY2UgYmFzZSB7Ci0tI2lmIGRlZmluZWQoT1NfV0lOKQotKyNpZiBkZWZp bmVkKE9TX1dJTikgfHwgZGVmaW5lZChBUkNIX0NQVV9QUEM2NCkKLSBzdGF0aWMgY29uc3RleHBy IHNpemVfdCBrUGFnZUFsbG9jYXRpb25HcmFudWxhcml0eVNoaWZ0ID0gMTY7ICAvLyA2NEtCCi0g I2VsaWYgZGVmaW5lZChfTUlQU19BUkNIX0xPT05HU09OKQotIHN0YXRpYyBjb25zdGV4cHIgc2l6 ZV90IGtQYWdlQWxsb2NhdGlvbkdyYW51bGFyaXR5U2hpZnQgPSAxNDsgIC8vIDE2S0IKLUBAIC0y Nyw2ICsyNywxMCBAQCBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrUGFnZUFsbG9jYXRpb25HcmFu dWxhcml0eUJhc2VNYXNrID0KLSAKLSAjaWYgZGVmaW5lZChfTUlQU19BUkNIX0xPT05HU09OKQot IHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtTeXN0ZW1QYWdlU2l6ZSA9IDE2Mzg0OwotKyNlbGlm IGRlZmluZWQoQVJDSF9DUFVfUFBDNjQpCi0rLy8gVE9ETzogbW9kZXJuIHBwYzY0IGNhbiBkbyA0 ayBhbmQgNjRrIHBhZ2Ugc2l6ZXMKLSsvLyBmb3Igbm93LCA2NGsgaXMgYXNzdW1lZAotK3N0YXRp YyBjb25zdGV4cHIgc2l6ZV90IGtTeXN0ZW1QYWdlU2l6ZSA9IDY1NTM2OwotICNlbHNlCi0gc3Rh dGljIGNvbnN0ZXhwciBzaXplX3Qga1N5c3RlbVBhZ2VTaXplID0gNDA5NjsKLSAjZW5kaWYKLS0t LSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvcGRmaXVtL3Ro aXJkX3BhcnR5L2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3IvcGFydGl0aW9uX2Fs bG9jX2NvbnN0YW50cy5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L3BkZml1bS90aGlyZF9wYXJ0eS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxs b2NhdG9yL3BhcnRpdGlvbl9hbGxvY19jb25zdGFudHMuaAotQEAgLTMzLDYgKzMzLDggQEAgc3Rh dGljIGNvbnN0IHNpemVfdCBrQnVja2V0U2hpZnQgPSAoa0FsbG9jYXRpb25HcmFudWxhcml0eSA9 PSA4KSA/IDMgOiAyOwotIC8vIHVwIGFnYWluc3QgdGhlIGVuZCBvZiBhIHN5c3RlbSBwYWdlLgot ICNpZiBkZWZpbmVkKF9NSVBTX0FSQ0hfTE9PTkdTT04pCi0gc3RhdGljIGNvbnN0IHNpemVfdCBr UGFydGl0aW9uUGFnZVNoaWZ0ID0gMTY7ICAvLyA2NEtCCi0rI2VsaWYgZGVmaW5lZChBUkNIX0NQ VV9QUEM2NCkKLStzdGF0aWMgY29uc3Qgc2l6ZV90IGtQYXJ0aXRpb25QYWdlU2hpZnQgPSAxODsg IC8vIDI1NktCCi0gI2Vsc2UKLSBzdGF0aWMgY29uc3Qgc2l6ZV90IGtQYXJ0aXRpb25QYWdlU2hp ZnQgPSAxNDsgIC8vIDE2S0IKLSAjZW5kaWYKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvc3FsaXRlL2FtYWxnYW1hdGlvbi9zcWxpdGUzLmMKLSsrKyBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc3FsaXRlL2FtYWxn YW1hdGlvbi9zcWxpdGUzLmMKLUBAIC0xMzkzNyw3ICsxMzkzNyw4IEBAIHR5cGVkZWYgSU5UMTZf VFlQRSBMb2dFc3Q7Ci0gIyBpZiBkZWZpbmVkKGkzODYpICAgICB8fCBkZWZpbmVkKF9faTM4Nl9f KSAgIHx8IGRlZmluZWQoX01fSVg4NikgfHwgICAgXAotICAgICAgZGVmaW5lZChfX3g4Nl82NCkg fHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9NX1g2NCkgIHx8ICAgIFwKLSAgICAg IGRlZmluZWQoX01fQU1ENjQpIHx8IGRlZmluZWQoX01fQVJNKSAgICAgfHwgZGVmaW5lZChfX3g4 NikgICB8fCAgICBcCi0tICAgICBkZWZpbmVkKF9fYXJtX18pICB8fCBkZWZpbmVkKF9NX0FSTTY0 KQotKyAgICAgZGVmaW5lZChfX2FybV9fKSAgfHwgZGVmaW5lZChfTV9BUk02NCkgICB8fCBkZWZp bmVkKF9fcG93ZXJwYzY0X18pICYmIFwKLSsgICAgIChfX0JZVEVfT1JERVJfXyA9PSBfX09SREVS X0xJVFRMRV9FTkRJQU5fXykKLSAjICAgZGVmaW5lIFNRTElURV9CWVRFT1JERVIgICAgMTIzNAot ICMgZWxpZiBkZWZpbmVkKHNwYXJjKSAgICB8fCBkZWZpbmVkKF9fcHBjX18pCi0gIyAgIGRlZmlu ZSBTUUxJVEVfQllURU9SREVSICAgIDQzMjEKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvc3FsaXRlL3NyYy9zcmMvc3FsaXRlSW50LmgKLSsrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc3FsaXRlL3NyYy9zcmMv c3FsaXRlSW50LmgKLUBAIC04MzMsNyArODMzLDggQEAgdHlwZWRlZiBJTlQxNl9UWVBFIExvZ0Vz dDsKLSAjIGlmIGRlZmluZWQoaTM4NikgICAgIHx8IGRlZmluZWQoX19pMzg2X18pICAgfHwgZGVm aW5lZChfTV9JWDg2KSB8fCAgICBcCi0gICAgICBkZWZpbmVkKF9feDg2XzY0KSB8fCBkZWZpbmVk KF9feDg2XzY0X18pIHx8IGRlZmluZWQoX01fWDY0KSAgfHwgICAgXAotICAgICAgZGVmaW5lZChf TV9BTUQ2NCkgfHwgZGVmaW5lZChfTV9BUk0pICAgICB8fCBkZWZpbmVkKF9feDg2KSAgIHx8ICAg IFwKLS0gICAgIGRlZmluZWQoX19hcm1fXykgIHx8IGRlZmluZWQoX01fQVJNNjQpCi0rICAgICBk ZWZpbmVkKF9fYXJtX18pICB8fCBkZWZpbmVkKF9NX0FSTTY0KSAgIHx8IGRlZmluZWQoX19wb3dl cnBjNjRfXykgJiYgXAotKyAgICAgKF9fQllURV9PUkRFUl9fID09IF9fT1JERVJfTElUVExFX0VO RElBTl9fKQotICMgICBkZWZpbmUgU1FMSVRFX0JZVEVPUkRFUiAgICAxMjM0Ci0gIyBlbGlmIGRl ZmluZWQoc3BhcmMpICAgIHx8IGRlZmluZWQoX19wcGNfXykKLSAjICAgZGVmaW5lIFNRTElURV9C WVRFT1JERVIgICAgNDMyMQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGlmZmVyX2Jsb2NrLmNj Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0 Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kaWZmZXJfYmxvY2suY2MKLUBAIC0zMCwxMSArMzAs NyBAQCBib29sIFZlY3RvckRpZmZlcmVuY2UoY29uc3QgdWludDhfdCogaW1hZ2UxLCBjb25zdCB1 aW50OF90KiBpbWFnZTIpIHsKLSAgIHN0YXRpYyBib29sICgqZGlmZl9wcm9jKShjb25zdCB1aW50 OF90KiwgY29uc3QgdWludDhfdCopID0gbnVsbHB0cjsKLSAKLSAgIGlmICghZGlmZl9wcm9jKSB7 Ci0tI2lmIGRlZmluZWQoV0VCUlRDX0FSQ0hfQVJNX0ZBTUlMWSkgfHwgZGVmaW5lZChXRUJSVENf QVJDSF9NSVBTX0ZBTUlMWSkKLS0gICAgLy8gRm9yIEFSTSBhbmQgTUlQUyBwcm9jZXNzb3JzLCBh bHdheXMgdXNlIEMgdmVyc2lvbi4KLS0gICAgLy8gVE9ETyhoY2xhbSk6IEltcGxlbWVudCBhIE5F T04gdmVyc2lvbi4KLS0gICAgZGlmZl9wcm9jID0gJlZlY3RvckRpZmZlcmVuY2VfQzsKLS0jZWxz ZQotKyNpZiBkZWZpbmVkKFdFQlJUQ19BUkNIX1g4Nl9GQU1JTFkpCi0gICAgIGJvb2wgaGF2ZV9z c2UyID0gV2ViUnRjX0dldENQVUluZm8oa1NTRTIpICE9IDA7Ci0gICAgIC8vIEZvciB4ODYgcHJv Y2Vzc29ycywgY2hlY2sgaWYgU1NFMiBpcyBzdXBwb3J0ZWQuCi0gICAgIGlmIChoYXZlX3NzZTIg JiYga0Jsb2NrU2l6ZSA9PSAzMikgewotQEAgLTQ0LDYgKzQwLDEwIEBAIGJvb2wgVmVjdG9yRGlm ZmVyZW5jZShjb25zdCB1aW50OF90KiBpbWFnZTEsIGNvbnN0IHVpbnQ4X3QqIGltYWdlMikgewot ICAgICB9IGVsc2UgewotICAgICAgIGRpZmZfcHJvYyA9ICZWZWN0b3JEaWZmZXJlbmNlX0M7Ci0g ICAgIH0KLSsjZWxzZQotKyAgICAvLyBGb3Igb3RoZXIgcHJvY2Vzc29ycywgYWx3YXlzIHVzZSBD IHZlcnNpb24uCi0rICAgIC8vIFRPRE8oaGNsYW0pOiBJbXBsZW1lbnQgYSBORU9OIHZlcnNpb24u Ci0rICAgIGRpZmZfcHJvYyA9ICZWZWN0b3JEaWZmZXJlbmNlX0M7Ci0gI2VuZGlmCi0gICB9Ci0g Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0 Yy9ydGNfYmFzZS9zeXN0ZW0vYXJjaC5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9ydGNfYmFzZS9zeXN0ZW0vYXJjaC5oCi1AQCAtNDcs NiArNDcsMTggQEAKLSAjZWxpZiBkZWZpbmVkKF9fcG5hY2xfXykKLSAjZGVmaW5lIFdFQlJUQ19B UkNIXzMyX0JJVFMKLSAjZGVmaW5lIFdFQlJUQ19BUkNIX0xJVFRMRV9FTkRJQU4KLSsjZWxpZiBk ZWZpbmVkKF9fUFBDX18pCi0rI2RlZmluZSBXRUJSVENfQVJDSF9QUENfRkFNSUxZCi0rI2lmIF9f QllURV9PUkRFUl9fID09IF9fT1JERVJfTElUVExFX0VORElBTl9fCi0rI2RlZmluZSBXRUJSVENf QVJDSF9MSVRUTEVfRU5ESUFOCi0rI2Vsc2UKLSsjZGVmaW5lIFdFQlJUQ19BUkNIX0JJR19FTkRJ QU4KLSsjZW5kaWYKLSsjaWYgZGVmaW5lZChfX0xQNjRfXykKLSsjZGVmaW5lIFdFQlJUQ19BUkNI XzY0X0JJVFMKLSsjZWxzZQotKyNkZWZpbmUgV0VCUlRDX0FSQ0hfMzJfQklUUwotKyNlbmRpZgot ICNlbHNlCi0gI2Vycm9yIFBsZWFzZSBhZGQgc3VwcG9ydCBmb3IgeW91ciBhcmNoaXRlY3R1cmUg aW4gdHlwZWRlZnMuaAotICNlbmRpZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS92OC9CVUlMRC5nbgotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92 OC9CVUlMRC5nbgotQEAgLTU0NCw2ICs1NDQsMTIgQEAgY29uZmlnKCJ0b29sY2hhaW4iKSB7Ci0g ICAgIH0KLSAgICAgaWYgKGhvc3RfYnl0ZW9yZGVyID09ICJsaXR0bGUiKSB7Ci0gICAgICAgZGVm aW5lcyArPSBbICJWOF9UQVJHRVRfQVJDSF9QUENfTEUiIF0KLSsgICAgICAgIGNmbGFncyArPSBb Ci0rICAgICAgICAjIEVuYWJsZSB1c2FnZSBvZiBBbHRpVmVjLCBWU1gsIGFuZCBvdGhlciBQT1dF UjggYW5kIGhpZ2hlciBmZWF0dXJlcwotKyAgICAgICAgIi1tY3B1PXBvd2VyOCIsCi0rICAgICAg ICAiLW1hbHRpdmVjIiwKLSsgICAgICAgICItbXZzeCIsCi0rICAgICAgXQotICAgICB9IGVsc2Ug aWYgKGhvc3RfYnl0ZW9yZGVyID09ICJiaWciKSB7Ci0gICAgICAgZGVmaW5lcyArPSBbICJWOF9U QVJHRVRfQVJDSF9QUENfQkUiIF0KLSAgICAgICBpZiAoY3VycmVudF9vcyA9PSAiYWl4Iikgewot LS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92OC90ZXN0L0JVSUxELmduCi0r KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Y4L3Rlc3QvQlVJTEQuZ24KLUBA IC0zMSw3ICszMSw3IEBAIGdyb3VwKCJnbl9hbGwiKSB7Ci0gICAgIGRlcHMgKz0gWwotICAgICAg ICJjY3Rlc3Q6Y2N0ZXN0IiwKLSAgICAgICAiY2N0ZXN0OmdlbmVyYXRlLWJ5dGVjb2RlLWV4cGVj dGF0aW9ucyIsCi0tICAgICAgInVuaXR0ZXN0czp1bml0dGVzdHMiLAotKyAgICAgICMidW5pdHRl c3RzOnVuaXR0ZXN0cyIsCi0gICAgIF0KLSAgIH0KLSB9Ci1AQCAtODAsOSArODAsOSBAQCBncm91 cCgidjhfYm90X2RlZmF1bHQiKSB7Ci0gICAgICJtanN1bml0OnY4X21qc3VuaXQiLAotICAgICAi bWtncm9rZHVtcDpta2dyb2tkdW1wIiwKLSAgICAgInByZXBhcnNlcjp2OF9wcmVwYXJzZXIiLAot LSAgICAidW5pdHRlc3RzOnVuaXR0ZXN0cyIsCi0rICAgICMidW5pdHRlc3RzOnVuaXR0ZXN0cyIs Ci0gICAgICJ3YXNtLWpzOnY4X3dhc21fanMiLAotLSAgICAid2FzbS1zcGVjLXRlc3RzOnY4X3dh c21fc3BlY190ZXN0cyIsCi0rICAgICMid2FzbS1zcGVjLXRlc3RzOnY4X3dhc21fc3BlY190ZXN0 cyIsCi0gICAgICJ3ZWJraXQ6djhfd2Via2l0IiwKLSAgIF0KLSB9Ci1AQCAtMTAwLDkgKzEwMCw5 IEBAIGdyb3VwKCJ2OF9kZWZhdWx0IikgewotICAgICAibWpzdW5pdDp2OF9tanN1bml0IiwKLSAg ICAgIm1rZ3Jva2R1bXA6bWtncm9rZHVtcCIsCi0gICAgICJwcmVwYXJzZXI6djhfcHJlcGFyc2Vy IiwKLS0gICAgInVuaXR0ZXN0czp1bml0dGVzdHMiLAotLSAgICAid2FzbS1qczp2OF93YXNtX2pz IiwKLS0gICAgIndhc20tc3BlYy10ZXN0czp2OF93YXNtX3NwZWNfdGVzdHMiLAotKyAgICAjInVu aXR0ZXN0czp1bml0dGVzdHMiLAotKyAgICAjIndhc20tanM6djhfd2FzbV9qcyIsCi0rICAgICMi d2FzbS1zcGVjLXRlc3RzOnY4X3dhc21fc3BlY190ZXN0cyIsCi0gICBdCi0gfQotIApkaWZmIC0t Z2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDkxLWNocm9taXVtLXBwYzY0LW11c2wucGF0Y2gg Yi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwOTEtY2hyb21pdW0tcHBjNjQtbXVzbC5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGYwMTRkOGI1OTguLjAwMDAwMDAwMDAwCi0tLSBh L3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA5MS1jaHJvbWl1bS1wcGM2NC1tdXNsLnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLVRoaXMgaW5jbHVkZXMgYWRkaXRpb25hbCBidWls ZCBmaXhlcyBmb3IgdGhlIG11c2wgbGliYy4KLQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L2JwZl9kc2wvc2VjY29tcF9tYWNyb3MuaAotKysrIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L2JwZl9kc2wvc2Vj Y29tcF9tYWNyb3MuaAotQEAgLTExLDEyICsxMSwxNCBAQAotIC8vIEFsbCB4ODZfNjQgYnVpbGRz IHVzZSBhIG5ldyBlbm91Z2ggYmlvbmljIHRvIGhhdmUgc3lzL3VzZXIuaC4KLSAjaWYgIWRlZmlu ZWQoX19CSU9OSUNfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKQotICNpZiAhZGVmaW5lZChfX25h dGl2ZV9jbGllbnRfbm9uc2ZpX18pCi0rI2lmICFkZWZpbmVkKF9fcG93ZXJwYzY0X18pIHx8IGRl ZmluZWQoX19HTElCQ19fKQotICNpbmNsdWRlIDxzeXMvdXNlci5oPgotICNlbmRpZgotKyNlbmRp ZgotICNpZiBkZWZpbmVkKF9fbWlwc19fKQotIC8vIHN5cy91c2VyLmggaW4gZWdsaWJjIG1pc3Nl cyBzaXplX3QgZGVmaW5pdGlvbgotICNpbmNsdWRlIDxzdGRkZWYuaD4KLS0jZWxpZiBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCi0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKSAmJiBkZWZpbmVk KF9fR0xJQkNfXykKLSAvLyBNYW51YWxseSBkZWZpbmUgZ3JlZ190IG9uIHBwYzY0Ci0gdHlwZWRl ZiB1bnNpZ25lZCBsb25nIGxvbmcgZ3JlZ190OwotICNlbmRpZgotQEAgLTM2MSwxMSArMzYzLDEx IEBAIHR5cGVkZWYgc3RydWN0IHB0X3JlZ3MgcmVnc19zdHJ1Y3Q7Ci0gI2RlZmluZSBTRUNDT01Q X0FSQ0ggQVVESVRfQVJDSF9QUEM2NAotICNlbmRpZgotIAotLSNkZWZpbmUgU0VDQ09NUF9SRUco X2N0eCwgX3JlZykgKChfY3R4KS0+dWNfbWNvbnRleHQucmVncy0+Z3ByW19yZWddKQotKyNkZWZp bmUgU0VDQ09NUF9SRUcoX2N0eCwgX3JlZykgKCgoc3RydWN0IHB0X3JlZ3MgKikoX2N0eCktPnVj X21jb250ZXh0LnJlZ3MpLT5ncHJbX3JlZ10pCi0gCi0gI2RlZmluZSBTRUNDT01QX1JFU1VMVChf Y3R4KSBTRUNDT01QX1JFRyhfY3R4LCAzKQotICNkZWZpbmUgU0VDQ09NUF9TWVNDQUxMKF9jdHgp IFNFQ0NPTVBfUkVHKF9jdHgsIDApCi0tI2RlZmluZSBTRUNDT01QX0lQKF9jdHgpIChfY3R4KS0+ dWNfbWNvbnRleHQucmVncy0+bmlwCi0rI2RlZmluZSBTRUNDT01QX0lQKF9jdHgpICgoc3RydWN0 IHB0X3JlZ3MgKikoX2N0eCktPnVjX21jb250ZXh0LnJlZ3MpLT5uaXAKLSAjZGVmaW5lIFNFQ0NP TVBfUEFSTTEoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgMykKLSAjZGVmaW5lIFNFQ0NPTVBfUEFS TTIoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgNCkKLSAjZGVmaW5lIFNFQ0NPTVBfUEFSTTMoX2N0 eCkgU0VDQ09NUF9SRUcoX2N0eCwgNSkKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi9zeXNjYWxsLmNjCi0rKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYvc3lzY2Fs bC5jYwotQEAgLTQ5Nyw5ICs0OTcsOSBAQCB2b2lkIFN5c2NhbGw6OlB1dFZhbHVlSW5VY29udGV4 dChpbnRwdHJfdCByZXRfdmFsLCB1Y29udGV4dF90KiBjdHgpIHsKLSAgIC8vIFNhbWUgYXMgTUlQ UywgbmVlZCB0byBpbnZlcnQgcmV0IGFuZCBzZXQgZXJyb3IgcmVnaXN0ZXIgKGNyMC5TTykKLSAg IGlmIChyZXRfdmFsIDw9IC0xICYmIHJldF92YWwgPj0gLTQwOTUpIHsKLSAgICAgcmV0X3ZhbCA9 IC1yZXRfdmFsOwotLSAgICBjdHgtPnVjX21jb250ZXh0LnJlZ3MtPmNjciB8PSAoMSA8PCAyOCk7 Ci0rICAgICgoc3RydWN0IHB0X3JlZ3MgKiljdHgtPnVjX21jb250ZXh0LnJlZ3MpLT5jY3IgfD0g KDEgPDwgMjgpOwotICAgfSBlbHNlIHsKLS0gICAgY3R4LT51Y19tY29udGV4dC5yZWdzLT5jY3Ig Jj0gfigxIDw8IDI4KTsKLSsgICAgKChzdHJ1Y3QgcHRfcmVncyAqKWN0eC0+dWNfbWNvbnRleHQu cmVncyktPmNjciAmPSB+KDEgPDwgMjgpOwotICAgfQotICNlbmRpZgotICAgU0VDQ09NUF9SRVNV TFQoY3R4KSA9IHN0YXRpY19jYXN0PGdyZWdfdD4ocmV0X3ZhbCk7Ci0tLS0gcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2lu dGVybmFsL3Vuc2NhbGVkY3ljbGVjbG9jay5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC91bnNj YWxlZGN5Y2xlY2xvY2suY2MKLUBAIC0yMCw3ICsyMCw3IEBACi0gI2luY2x1ZGUgPGludHJpbi5o PgotICNlbmRpZgotIAotLSNpZiBkZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBkZWZpbmVkKF9fcHBj X18pCi0rI2lmIChkZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBkZWZpbmVkKF9fcHBjX18pKSAmJiBk ZWZpbmVkKF9fR0xJQkNfXykKLSAjaW5jbHVkZSA8c3lzL3BsYXRmb3JtL3BwYy5oPgotICNlbmRp ZgotIAotQEAgLTUzLDcgKzUzLDcgQEAgZG91YmxlIFVuc2NhbGVkQ3ljbGVDbG9jazo6RnJlcXVl bmN5KCkgewotICAgcmV0dXJuIGJhc2VfaW50ZXJuYWw6Ok5vbWluYWxDUFVGcmVxdWVuY3koKTsK LSB9Ci0gCi0tI2VsaWYgZGVmaW5lZChfX3Bvd2VycGNfXykgfHwgZGVmaW5lZChfX3BwY19fKQot KyNlbGlmIChkZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBkZWZpbmVkKF9fcHBjX18pKSAmJiBkZWZp bmVkKF9fR0xJQkNfXykKLSAKLSBpbnQ2NF90IFVuc2NhbGVkQ3ljbGVDbG9jazo6Tm93KCkgewot ICAgcmV0dXJuIF9fcHBjX2dldF90aW1lYmFzZSgpOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC91 bnNjYWxlZGN5Y2xlY2xvY2suaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC91bnNjYWxlZGN5Y2xl Y2xvY2suaAotQEAgLTQ2LDcgKzQ2LDcgQEAKLSAKLSAvLyBUaGUgZm9sbG93aW5nIHBsYXRmb3Jt cyBoYXZlIGFuIGltcGxlbWVudGF0aW9uIG9mIGEgaGFyZHdhcmUgY291bnRlci4KLSAjaWYgZGVm aW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2 NF9fKSB8fCBcCi0tICBkZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBkZWZpbmVkKF9fcHBjX18pIHx8 IFwKLSsgICgoZGVmaW5lZChfX3Bvd2VycGNfXykgfHwgZGVmaW5lZChfX3BwY19fKSkgJiYgZGVm aW5lZChfX0dMSUJDX18pKSB8fCBcCi0gICBkZWZpbmVkKF9NX0lYODYpIHx8IGRlZmluZWQoX01f WDY0KQotICNkZWZpbmUgQUJTTF9IQVZFX1VOU0NBTEVEX0NZQ0xFQ0xPQ0tfSU1QTEVNRU5UQVRJ T04gMQotICNlbHNlCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29t bW9uL3RocmVhZF9pbmZvLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0 ZXJfY29tbW9uL3RocmVhZF9pbmZvLmNjCi1AQCAtMjczLDYgKzI3Myw5IEBAIHZvaWQgVGhyZWFk SW5mbzo6RmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSogb3V0KSBjb25zdCB7Ci0gCi0gI2Vs aWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotIAotKyNpbmNsdWRlIDxhc20vZWxmLmg+Ci0rI2lu Y2x1ZGUgPGFzbS9wdHJhY2UuaD4KLSsKLSB1aW50cHRyX3QgVGhyZWFkSW5mbzo6R2V0SW5zdHJ1 Y3Rpb25Qb2ludGVyKCkgY29uc3QgewotICAgICByZXR1cm4gbWNvbnRleHQuZ3BfcmVnc1tQVF9O SVBdOwotIH0KLUBAIC0yOTAsOSArMjkzLDkgQEAgdm9pZCBUaHJlYWRJbmZvOjpGaWxsQ1BVQ29u dGV4dChSYXdDb250ZXh0Q1BVKiBvdXQpIGNvbnN0IHsKLSAgICAgb3V0LT5jdHIgPSBtY29udGV4 dC5ncF9yZWdzW1BUX0NUUl07Ci0gICAgIAotICAgICBmb3IgKGludCBpID0gMDsgaSA8IE1EX0ZM T0FUSU5HU0FWRUFSRUFfUFBDX0ZQUl9DT1VOVDsgaSsrKQotLSAgICAgICAgb3V0LT5mbG9hdF9z YXZlLmZwcmVnc1tpXSA9IG1jb250ZXh0LmZwX3JlZ3NbaV07Ci0rICAgICAgICBvdXQtPmZsb2F0 X3NhdmUuZnByZWdzW2ldID0gKCh1aW50NjRfdCAqKSZtY29udGV4dC5mcF9yZWdzKVtpXTsKLSAK LS0gICAgb3V0LT5mbG9hdF9zYXZlLmZwc2NyID0gbWNvbnRleHQuZnBfcmVnc1tORlBSRUctMV07 Ci0rICAgIG91dC0+ZmxvYXRfc2F2ZS5mcHNjciA9ICgodWludDY0X3QgKikmbWNvbnRleHQuZnBf cmVncylbRUxGX05GUFJFRy0xXTsKLSAKLSAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9WRUNU T1JTQVZFQVJFQV9QUENfVlJfQ09VTlQ7IGkrKykKLSAgICAgICAgIG91dC0+dmVjdG9yX3NhdmUu c2F2ZV92cltpXSA9IFwKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9j b21tb24vdWNvbnRleHRfcmVhZGVyLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVt cF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5jYwotQEAgLTI1Nyw2ICsyNTcsOSBAQCB2 b2lkIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNv bnN0IHVjb250ZXh0X3QgKnVjKSB7Ci0gCi0gI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQot IAotKyNpbmNsdWRlIDxhc20vZWxmLmg+Ci0rI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KLSsKLSB1 aW50cHRyX3QgVUNvbnRleHRSZWFkZXI6OkdldFN0YWNrUG9pbnRlcihjb25zdCB1Y29udGV4dF90 KiB1YykgewotICAgICByZXR1cm4gdWMtPnVjX21jb250ZXh0LmdwX3JlZ3NbTURfQ09OVEVYVF9Q UEM2NF9SRUdfU1BdOwotIH0KLUBAIC0yODAsOSArMjgzLDkgQEAgdm9pZCBVQ29udGV4dFJlYWRl cjo6RmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSogb3V0LCBjb25zdCB1Y29udGV4dF90KiB1 YywKLSAgICAgb3V0LT5jdHIgPSB1Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9DVFJdOwotICAg ICAKLSAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9GTE9BVElOR1NBVkVBUkVBX1BQQ19GUFJf Q09VTlQ7IGkrKykKLS0gICAgICAgIG91dC0+ZmxvYXRfc2F2ZS5mcHJlZ3NbaV0gPSB1Yy0+dWNf bWNvbnRleHQuZnBfcmVnc1tpXTsKLSsgICAgICAgIG91dC0+ZmxvYXRfc2F2ZS5mcHJlZ3NbaV0g PSAoKHVpbnQ2NF90ICopJnVjLT51Y19tY29udGV4dC5mcF9yZWdzKVtpXTsKLSAKLS0gICAgb3V0 LT5mbG9hdF9zYXZlLmZwc2NyID0gdWMtPnVjX21jb250ZXh0LmZwX3JlZ3NbTkZQUkVHLTFdOwot KyAgICBvdXQtPmZsb2F0X3NhdmUuZnBzY3IgPSAoKHVpbnQ2NF90ICopJnVjLT51Y19tY29udGV4 dC5mcF9yZWdzKVtFTEZfTkZQUkVHLTFdOwotIAotICAgICBmb3IgKGludCBpID0gMDsgaSA8IE1E X1ZFQ1RPUlNBVkVBUkVBX1BQQ19WUl9DT1VOVDsgaSsrKQotICAgICAgICAgb3V0LT52ZWN0b3Jf c2F2ZS5zYXZlX3ZyW2ldID0KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4 Y2VwdGlvbl9oYW5kbGVyLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9l eGNlcHRpb25faGFuZGxlci5jYwotQEAgLTEwNSw2ICsxMDUsMTEgQEAKLSAjZGVmaW5lIFBSX1NF VF9QVFJBQ0VSIDB4NTk2MTZkNjEKLSAjZW5kaWYKLSAKLSsvKiBtdXNsIGhhY2ssIGNhbid0IGlu Y2x1ZGUgYXNtL3B0cmFjZS5oIGFzIHRoYXQgY2F1c2VzIGNvbmZsaWN0cyAqLwotKyNpZiBkZWZp bmVkKF9fcG93ZXJwYzY0X18pICYmICFkZWZpbmVkKFBUX05JUCkKLSsjZGVmaW5lIFBUX05JUCAz MgotKyNlbmRpZgotKwotIG5hbWVzcGFjZSBnb29nbGVfYnJlYWtwYWQgewotIAotIG5hbWVzcGFj ZSB7CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwOTItY2hyb21pdW0tcHBjNjQt YmUucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwOTItY2hyb21pdW0tcHBjNjQtYmUucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlODMxMWM5YmEyLi4wMDAwMDAwMDAw MAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwOTItY2hyb21pdW0tcHBjNjQtYmUucGF0Y2gK KysrIC9kZXYvbnVsbApAQCAtMSwyOTcwICswLDAgQEAKLVRoaXMgYWRkcyBiaWcgZW5kaWFuIHN1 cHBvcnQvZml4ZXMgaW4gYWRkaXRpb24gdG8gdGhlIGJhc2UgcHBjNjRsZSBwYXRjaC4KLQotUGlu ZyBxNjYgaWYgeW91J3JlIHVwZGF0aW5nIHF0NSBhbmQgdGhlIHBhdGNoIGRvZXMgbm90IGFwcGx5 IGFueW1vcmUuCi0KLVNvdXJjZTogaHR0cHM6Ly93aWtpLnJhcHRvcmNzLmNvbS93L2luZGV4LnBo cD90aXRsZT1Qb3J0aW5nL0Nocm9taXVtL0JFCi0KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9wYXJ0aXRpb25f YWxsb2MuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9hbGxv Y2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2MuY2MKLUBAIC00NDAsNyAr NDQwLDcgQEAgc3RhdGljIHNpemVfdCBQYXJ0aXRpb25QdXJnZVBhZ2UoaW50ZXJuYWw6OlBhcnRp dGlvblBhZ2UqIHBhZ2UsIGJvb2wgZGlzY2FyZCkgewotICNlbmRpZgotICAgICAgIH0KLSAgICAg ICAvLyBUZXJtaW5hdGUgdGhlIGZyZWVsaXN0IGNoYWluLgotLSAgICAgICplbnRyeV9wdHIgPSBu dWxscHRyOwotKyAgICAgICplbnRyeV9wdHIgPSBpbnRlcm5hbDo6UGFydGl0aW9uRnJlZWxpc3RF bnRyeTo6VHJhbnNmb3JtKG51bGxwdHIpOwotICAgICAgIC8vIFRoZSBmcmVlbGlzdCBoZWFkIGlz IHN0b3JlZCB1bm1hc2tlZC4KLSAgICAgICBwYWdlLT5mcmVlbGlzdF9oZWFkID0KLSAgICAgICAg ICAgaW50ZXJuYWw6OlBhcnRpdGlvbkZyZWVsaXN0RW50cnk6OlRyYW5zZm9ybShwYWdlLT5mcmVl bGlzdF9oZWFkKTsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9p MThuL2ljdV91dGlsLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jh c2UvaTE4bi9pY3VfdXRpbC5jYwotQEAgLTc1LDcgKzc1LDExIEBAIHdjaGFyX3QgZ19kZWJ1Z19p Y3VfcGZfZmlsZW5hbWVbX01BWF9QQVRIXTsKLSAvLyBObyBuZWVkIHRvIGNoYW5nZSB0aGUgZmls ZW5hbWUgaW4gbXVsdGlwbGUgcGxhY2VzIChneXAgZmlsZXMsIHdpbmRvd3MKLSAvLyBidWlsZCBw a2cgY29uZmlndXJhdGlvbnMsIGV0YykuICdsJyBzdGFuZHMgZm9yIExpdHRsZSBFbmRpYW4uCi0g Ly8gVGhpcyB2YXJpYWJsZSBpcyBleHBvcnRlZCB0aHJvdWdoIHRoZSBoZWFkZXIgZmlsZS4KLSsj aWYgZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOKQotIGNvbnN0IGNoYXIga0ljdURhdGFG aWxlTmFtZVtdID0gImljdWR0bC5kYXQiOwotKyNlbHNlCi0rY29uc3QgY2hhciBrSWN1RGF0YUZp bGVOYW1lW10gPSAiaWN1ZHRiLmRhdCI7Ci0rI2VuZGlmCi0gI2lmIGRlZmluZWQoT1NfQU5EUk9J RCkKLSBjb25zdCBjaGFyIGtBbmRyb2lkQXNzZXRzSWN1RGF0YUZpbGVOYW1lW10gPSAiYXNzZXRz L2ljdWR0bC5kYXQiOwotICNlbmRpZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS9iYXNlL21lbW9yeS9zaGFyZWRfbWVtb3J5X21hcHBpbmdfdW5pdHRlc3QuY2MKLSsrKyBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9tZW1vcnkvc2hhcmVkX21lbW9y eV9tYXBwaW5nX3VuaXR0ZXN0LmNjCi1AQCAtMTIsNiArMTIsNyBAQAotICNpbmNsdWRlICJiYXNl L2NvbnRhaW5lcnMvc3Bhbi5oIgotICNpbmNsdWRlICJiYXNlL21lbW9yeS9yZWFkX29ubHlfc2hh cmVkX21lbW9yeV9yZWdpb24uaCIKLSAjaW5jbHVkZSAidGVzdGluZy9ndGVzdC9pbmNsdWRlL2d0 ZXN0L2d0ZXN0LmgiCi0rI2luY2x1ZGUgImJhc2Uvc3lzX2J5dGVvcmRlci5oIgotIAotIG5hbWVz cGFjZSBiYXNlIHsKLSAKLUBAIC02OSw4ICs3MCw4IEBAIFRFU1RfRihTaGFyZWRNZW1vcnlNYXBw aW5nVGVzdCwgU3BhbldpdGhBdXRvRGVkdWNlZEVsZW1lbnRDb3VudCkgewotIAotICAgZm9yIChz aXplX3QgaSA9IDA7IGkgPCB3cml0ZV9zcGFuLnNpemUoKTsgKytpKQotICAgICB3cml0ZV9zcGFu W2ldID0gaSArIDE7Ci0tICBFWFBFQ1RfRVEoMHgwNDAzMDIwMXUsIHJlYWRfc3BhblswXSk7Ci0t ICBFWFBFQ1RfRVEoMHgwODA3MDYwNXUsIHJlYWRfc3BhblsxXSk7Ci0rICBFWFBFQ1RfRVEoSG9z dFRvTmV0MzIoMHgwMTAyMDMwNHUpLCByZWFkX3NwYW5bMF0pOwotKyAgRVhQRUNUX0VRKEhvc3RU b05ldDMyKDB4MDUwNjA3MDh1KSwgcmVhZF9zcGFuWzFdKTsKLSB9Ci0gCi0gVEVTVF9GKFNoYXJl ZE1lbW9yeU1hcHBpbmdUZXN0LCBTcGFuV2l0aEV4cGxpY2l0RWxlbWVudENvdW50KSB7Ci1AQCAt OTUsMTMgKzk2LDEzIEBAIFRFU1RfRihTaGFyZWRNZW1vcnlNYXBwaW5nVGVzdCwgU3BhbldpdGhF eHBsaWNpdEVsZW1lbnRDb3VudCkgewotIAotICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3cml0 ZV9zcGFuLnNpemUoKTsgKytpKQotICAgICB3cml0ZV9zcGFuW2ldID0gaSArIDE7Ci0tICBFWFBF Q1RfRVEoMHgwNDAzMDIwMXUsIHJlYWRfc3BhblswXSk7Ci0tICBFWFBFQ1RfRVEoMHgwODA3MDYw NXUsIHJlYWRfc3BhblsxXSk7Ci0tICBFWFBFQ1RfRVEoMHgwNDAzMDIwMXUsIHJlYWRfc3Bhbl8y WzBdKTsKLSsgIEVYUEVDVF9FUShIb3N0VG9OZXQzMigweDAxMDIwMzA0dSksIHJlYWRfc3Bhblsw XSk7Ci0rICBFWFBFQ1RfRVEoSG9zdFRvTmV0MzIoMHgwNTA2MDcwOHUpLCByZWFkX3NwYW5bMV0p OwotKyAgRVhQRUNUX0VRKEhvc3RUb05ldDMyKDB4MDEwMjAzMDR1KSwgcmVhZF9zcGFuXzJbMF0p OwotIAotICAgc3RkOjpmaWxsKHdyaXRlX3NwYW5fMi5iZWdpbigpLCB3cml0ZV9zcGFuXzIuZW5k KCksIDApOwotICAgRVhQRUNUX0VRKDB1LCByZWFkX3NwYW5bMF0pOwotLSAgRVhQRUNUX0VRKDB4 MDgwNzA2MDV1LCByZWFkX3NwYW5bMV0pOwotKyAgRVhQRUNUX0VRKEhvc3RUb05ldDMyKDB4MDUw NjA3MDh1KSwgcmVhZF9zcGFuWzFdKTsKLSAgIEVYUEVDVF9FUSgwdSwgcmVhZF9zcGFuXzJbMF0p OwotIH0KLSAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9tZXRy aWNzL2J1Y2tldF9yYW5nZXNfdW5pdHRlc3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vYmFzZS9tZXRyaWNzL2J1Y2tldF9yYW5nZXNfdW5pdHRlc3QuY2MKLUBAIC03 LDYgKzcsNyBAQAotICNpbmNsdWRlIDxzdGRpbnQuaD4KLSAKLSAjaW5jbHVkZSAidGVzdGluZy9n dGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgiCi0rI2luY2x1ZGUgImJhc2Uvc3lzX2J5dGVvcmRl ci5oIgotIAotIG5hbWVzcGFjZSBiYXNlIHsKLSBuYW1lc3BhY2UgewotQEAgLTY0LDEzICs2NSwy MSBAQCBURVNUKEJ1Y2tldFJhbmdlc1Rlc3QsIENoZWNrc3VtKSB7Ci0gICByYW5nZXMuc2V0X3Jh bmdlKDIsIDIpOwotIAotICAgcmFuZ2VzLlJlc2V0Q2hlY2tzdW0oKTsKLSsjaWYgZGVmaW5lZChB UkNIX0NQVV9MSVRUTEVfRU5ESUFOKQotICAgRVhQRUNUX0VRKDI4OTIxNzI1M3UsIHJhbmdlcy5j aGVja3N1bSgpKTsKLSsjZWxzZQotKyAgRVhQRUNUX0VRKDI3NjcyMzE1OTZ1LCByYW5nZXMuY2hl Y2tzdW0oKSk7Ci0rI2VuZGlmCi0gCi0gICByYW5nZXMuc2V0X3JhbmdlKDIsIDMpOwotICAgRVhQ RUNUX0ZBTFNFKHJhbmdlcy5IYXNWYWxpZENoZWNrc3VtKCkpOwotIAotICAgcmFuZ2VzLlJlc2V0 Q2hlY2tzdW0oKTsKLSsjaWYgZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOKQotICAgRVhQ RUNUX0VRKDI4NDM4MzU3NzZ1LCByYW5nZXMuY2hlY2tzdW0oKSk7Ci0rI2Vsc2UKLSsgIEVYUEVD VF9FUSgzNTU2MjIzNzM4dSwgcmFuZ2VzLmNoZWNrc3VtKCkpOwotKyNlbmRpZgotICAgRVhQRUNU X1RSVUUocmFuZ2VzLkhhc1ZhbGlkQ2hlY2tzdW0oKSk7Ci0gfQotIAotLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL3BpY2tsZS5jYwotKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL3BpY2tsZS5jYwotQEAgLTgyLDcgKzgyLDEyIEBAIGlu bGluZSBjb25zdCBjaGFyKiBQaWNrbGVJdGVyYXRvcjo6R2V0UmVhZFBvaW50ZXJBbmRBZHZhbmNl KAotIH0KLSAKLSBib29sIFBpY2tsZUl0ZXJhdG9yOjpSZWFkQm9vbChib29sKiByZXN1bHQpIHsK LS0gIHJldHVybiBSZWFkQnVpbHRpblR5cGUocmVzdWx0KTsKLSsgIGludCBpbnRfcmVzdWx0Owot KyAgaWYgKFJlYWRCdWlsdGluVHlwZSgmaW50X3Jlc3VsdCkpIHsKLSsgICAgKnJlc3VsdCA9IHN0 YXRpY19jYXN0PGJvb2w+KGludF9yZXN1bHQpOwotKyAgICByZXR1cm4gdHJ1ZTsKLSsgIH0gZWxz ZQotKyAgICByZXR1cm4gZmFsc2U7Ci0gfQotIAotIGJvb2wgUGlja2xlSXRlcmF0b3I6OlJlYWRJ bnQoaW50KiByZXN1bHQpIHsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v YmFzZS9zaGExLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2Uv c2hhMS5jYwotQEAgLTExMCw4ICsxMTAsMTAgQEAgdm9pZCBTZWN1cmVIYXNoQWxnb3JpdGhtOjpG aW5hbCgpIHsKLSAgIFBhZCgpOwotICAgUHJvY2VzcygpOwotIAotKyNpZiBkZWZpbmVkKEFSQ0hf Q1BVX0xJVFRMRV9FTkRJQU4pCi0gICBmb3IgKGF1dG8mIHQgOiBIKQotICAgICB0ID0gQnl0ZVN3 YXAodCk7Ci0rI2VuZGlmCi0gfQotIAotIHZvaWQgU2VjdXJlSGFzaEFsZ29yaXRobTo6VXBkYXRl KGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBuYnl0ZXMpIHsKLUBAIC0xNTcsOCArMTU5LDEwIEBA IHZvaWQgU2VjdXJlSGFzaEFsZ29yaXRobTo6UHJvY2VzcygpIHsKLSAgIC8vCi0gICAvLyBXIGFu ZCBNIGFyZSBpbiBhIHVuaW9uLCBzbyBubyBuZWVkIHRvIG1lbWNweS4KLSAgIC8vIG1lbWNweShX LCBNLCBzaXplb2YoTSkpOwotKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4pCi0g ICBmb3IgKHQgPSAwOyB0IDwgMTY7ICsrdCkKLSAgICAgV1t0XSA9IEJ5dGVTd2FwKFdbdF0pOwot KyNlbmRpZgotIAotICAgLy8gYi4KLSAgIGZvciAodCA9IDE2OyB0IDwgODA7ICsrdCkKLS0tLSBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9zdHJpbmdzL3N0cmluZ19udW1i ZXJfY29udmVyc2lvbnNfdW5pdHRlc3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vYmFzZS9zdHJpbmdzL3N0cmluZ19udW1iZXJfY29udmVyc2lvbnNfdW5pdHRlc3Qu Y2MKLUBAIC04MjksMTIgKzgyOSwyMSBAQCBURVNUKFN0cmluZ051bWJlckNvbnZlcnNpb25zVGVz dCwgRG91YmxlVG9TdHJpbmcpIHsKLSAgIH0KLSAKLSAgIC8vIFRoZSBmb2xsb3dpbmcgdHdvIHZh bHVlcyB3ZXJlIHNlZW4gaW4gY3Jhc2hlcyBpbiB0aGUgd2lsZC4KLSsjaWYgZGVmaW5lZChBUkNI X0NQVV9MSVRUTEVfRU5ESUFOKQotICAgY29uc3QgY2hhciBpbnB1dF9ieXRlc1s4XSA9IHswLCAw LCAwLCAwLCAnXHhlZScsICdceDZkJywgJ1x4NzMnLCAnXHg0Mid9OwotKyNlbHNlCi0rICBjb25z dCBjaGFyIGlucHV0X2J5dGVzWzhdID0geydceDQyJywgJ1x4NzMnLCAnXHg2ZCcsICdceGVlJywg MCwgMCwgMCwgMH07Ci0rI2VuZGlmCi0gICBkb3VibGUgaW5wdXQgPSAwOwotICAgbWVtY3B5KCZp bnB1dCwgaW5wdXRfYnl0ZXMsIGJhc2U6OnNpemUoaW5wdXRfYnl0ZXMpKTsKLSAgIEVYUEVDVF9F USgiMTMzNTE3OTA4Mzc3NiIsIE51bWJlclRvU3RyaW5nKGlucHV0KSk7Ci0rI2lmIGRlZmluZWQo QVJDSF9DUFVfTElUVExFX0VORElBTikKLSAgIGNvbnN0IGNoYXIgaW5wdXRfYnl0ZXMyWzhdID0K LSAgICAgICB7MCwgMCwgMCwgJ1x4YTAnLCAnXHhkYScsICdceDZjJywgJ1x4NzMnLCAnXHg0Mid9 OwotKyNlbHNlCi0rICBjb25zdCBjaGFyIGlucHV0X2J5dGVzMls4XSA9Ci0rICAgICAgeydceDQy JywgJ1x4NzMnLCAnXHg2YycsICdceGRhJywgJ1x4YTAnLCAwLCAwLCAwfTsKLSsjZW5kaWYKLSAg IGlucHV0ID0gMDsKLSAgIG1lbWNweSgmaW5wdXQsIGlucHV0X2J5dGVzMiwgYmFzZTo6c2l6ZShp bnB1dF9ieXRlczIpKTsKLSAgIEVYUEVDVF9FUSgiMTMzNDg5MDMzMjE2MCIsIE51bWJlclRvU3Ry aW5nKGlucHV0KSk7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2Uv dGhpcmRfcGFydHkvZG1nX2ZwL2R0b2EuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vYmFzZS90aGlyZF9wYXJ0eS9kbWdfZnAvZHRvYS5jYwotQEAgLTE4Niw3ICsxODYs MTEgQEAKLSAgKgl1c2VkIGZvciBpbnB1dCBtb3JlIHRoYW4gU1RSVE9EX0RJR0xJTSBkaWdpdHMg bG9uZyAoZGVmYXVsdCA0MCkuCi0gICovCi0gCi0rI2lmZGVmIF9fQklHX0VORElBTl9fCi0rI2Rl ZmluZSBJRUVFX01DNjhrCi0rI2Vsc2UKLSAjZGVmaW5lIElFRUVfODA4NwotKyNlbmRpZgotICNk ZWZpbmUgTk9fSEVYX0ZQCi0gCi0gI2lmbmRlZiBMb25nCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL2NvbXBvbmVudHMvc2FmZV9icm93c2luZy9kYi91dGlsX3VuaXR0ZXN0 LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2NvbXBvbmVudHMvc2Fm ZV9icm93c2luZy9kYi91dGlsX3VuaXR0ZXN0LmNjCi1AQCAtMTIsNiArMTIsMTIgQEAKLSAjaW5j bHVkZSAidGVzdGluZy9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgiCi0gI2luY2x1ZGUgInVy bC9ndXJsLmgiCi0gCi0rI2lmIGRlZmluZWQoT1NfV0lOKQotKyNpbmNsdWRlIDx3aW5zb2NrMi5o PgotKyNlbGlmIGRlZmluZWQoT1NfUE9TSVgpCi0rI2luY2x1ZGUgPGFycGEvaW5ldC5oPgotKyNl bmRpZgotKwotIG5hbWVzcGFjZSBzYWZlX2Jyb3dzaW5nIHsKLSAKLSBURVNUKFNhZmVCcm93c2lu Z0RiVXRpbFRlc3QsIFVybFRvRnVsbEhhc2hlcykgewotQEAgLTgzLDcgKzg5LDcgQEAgVEVTVChT YWZlQnJvd3NpbmdEYlV0aWxUZXN0LCBTdHJpbmdUb1NCRnVsbEhhc2hBbmRTQkZ1bGxIYXNoVG9T dHJpbmcpIHsKLSAgIC8vIDMxIGNoYXJzIHBsdXMgdGhlIGxhc3QgXDAgYXMgZnVsbF9oYXNoLgot ICAgY29uc3Qgc3RkOjpzdHJpbmcgaGFzaF9pbiA9ICIxMjM0NTY3ODkwMjIzNDU2Nzg5MDMyMzQ1 Njc4OTAxMiI7Ci0gICBTQkZ1bGxIYXNoIGhhc2hfb3V0ID0gU3RyaW5nVG9TQkZ1bGxIYXNoKGhh c2hfaW4pOwotLSAgRVhQRUNUX0VRKDB4MzQzMzMyMzFVLCBoYXNoX291dC5wcmVmaXgpOwotKyAg RVhQRUNUX0VRKGh0b25sKDB4MzEzMjMzMzRVKSwgaGFzaF9vdXQucHJlZml4KTsKLSAgIEVYUEVD VF9FUSgwLCBtZW1jbXAoaGFzaF9pbi5kYXRhKCksIGhhc2hfb3V0LmZ1bGxfaGFzaCwgc2l6ZW9m KFNCRnVsbEhhc2gpKSk7Ci0gCi0gICBzdGQ6OnN0cmluZyBoYXNoX2ZpbmFsID0gU0JGdWxsSGFz aFRvU3RyaW5nKGhhc2hfb3V0KTsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vY29tcG9uZW50cy9zYWZlX2Jyb3dzaW5nL2RiL3Y0X3JpY2UuY2MKLSsrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vY29tcG9uZW50cy9zYWZlX2Jyb3dzaW5nL2RiL3Y0X3Jp Y2UuY2MKLUBAIC04LDYgKzgsNyBAQAotICNpbmNsdWRlICJiYXNlL2xvZ2dpbmcuaCIKLSAjaW5j bHVkZSAiYmFzZS9udW1lcmljcy9zYWZlX21hdGguaCIKLSAjaW5jbHVkZSAiYmFzZS9zdHJpbmdz L3N0cmluZ3ByaW50Zi5oIgotKyNpbmNsdWRlICJiYXNlL3N5c19ieXRlb3JkZXIuaCIKLSAjaW5j bHVkZSAiYnVpbGQvYnVpbGRfY29uZmlnLmgiCi0gI2luY2x1ZGUgImNvbXBvbmVudHMvc2FmZV9i cm93c2luZy9kYi92NF9yaWNlLmgiCi0gCi1AQCAtMjEsMTAgKzIyLDYgQEAgdXNpbmcgOjpnb29n bGU6OnByb3RvYnVmOjpSZXBlYXRlZEZpZWxkOwotIHVzaW5nIDo6Z29vZ2xlOjpwcm90b2J1Zjo6 aW50MzI7Ci0gdXNpbmcgOjpnb29nbGU6OnByb3RvYnVmOjppbnQ2NDsKLSAKLS0jaWYgIWRlZmlu ZWQoQVJDSF9DUFVfTElUVExFX0VORElBTikgfHwgKEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4gIT0g MSkKLS0jZXJyb3IgVGhlIGNvZGUgYmVsb3cgYXNzdW1lcyBsaXR0bGUtZW5kaWFubmVzcy4KLS0j ZW5kaWYKLS0KLSBuYW1lc3BhY2Ugc2FmZV9icm93c2luZyB7Ci0gCi0gbmFtZXNwYWNlIHsKLUBA IC0xMTcsNyArMTE0LDcgQEAgVjREZWNvZGVSZXN1bHQgVjRSaWNlRGVjb2Rlcjo6RGVjb2RlUHJl Zml4ZXMoY29uc3QgaW50NjQgZmlyc3RfdmFsdWUsCi0gICBvdXQtPnJlc2VydmUoKG51bV9lbnRy aWVzICsgMSkpOwotIAotICAgYmFzZTo6Q2hlY2tlZE51bWVyaWM8dWludDMyX3Q+IGxhc3RfdmFs dWUoZmlyc3RfdmFsdWUpOwotLSAgb3V0LT5wdXNoX2JhY2soaHRvbmwobGFzdF92YWx1ZS5WYWx1 ZU9yRGllKCkpKTsKLSsgIG91dC0+cHVzaF9iYWNrKGJhc2U6OkJ5dGVTd2FwKHN0YXRpY19jYXN0 PHVpbnQzMl90PihsYXN0X3ZhbHVlLlZhbHVlT3JEaWUoKSkpKTsKLSAKLSAgIGlmIChudW1fZW50 cmllcyA+IDApIHsKLSAgICAgVjRSaWNlRGVjb2RlciBkZWNvZGVyKHJpY2VfcGFyYW1ldGVyLCBu dW1fZW50cmllcywgZW5jb2RlZF9kYXRhKTsKLUBAIC0xMzYsNyArMTMzLDcgQEAgVjREZWNvZGVS ZXN1bHQgVjRSaWNlRGVjb2Rlcjo6RGVjb2RlUHJlZml4ZXMoY29uc3QgaW50NjQgZmlyc3RfdmFs dWUsCi0gCi0gICAgICAgLy8gVGhpcyBmbGlwcGluZyBpcyBkb25lIHNvIHRoYXQgdGhlIGRlY29k ZWQgdWludDMyIGlzIGludGVycHJldGVkCi0gICAgICAgLy8gY29ycmVjbHkgYXMgYSBzdHJpbmcg b2YgNCBieXRlcy4KLS0gICAgICBvdXQtPnB1c2hfYmFjayhodG9ubChsYXN0X3ZhbHVlLlZhbHVl T3JEaWUoKSkpOwotKyAgICAgIG91dC0+cHVzaF9iYWNrKGJhc2U6OkJ5dGVTd2FwKHN0YXRpY19j YXN0PHVpbnQzMl90PihsYXN0X3ZhbHVlLlZhbHVlT3JEaWUoKSkpKTsKLSAgICAgfQotICAgfQot IAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9jb21wb25lbnRzL3NhZmVf YnJvd3NpbmcvZGIvdjRfcmljZV91bml0dGVzdC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS9jb21wb25lbnRzL3NhZmVfYnJvd3NpbmcvZGIvdjRfcmljZV91bml0dGVz dC5jYwotQEAgLTYsNiArNiwxMiBAQAotICNpbmNsdWRlICJiYXNlL2xvZ2dpbmcuaCIKLSAjaW5j bHVkZSAidGVzdGluZy9wbGF0Zm9ybV90ZXN0LmgiCi0gCi0rI2lmIGRlZmluZWQoT1NfV0lOKQot KyNpbmNsdWRlIDx3aW5zb2NrMi5oPgotKyNlbGlmIGRlZmluZWQoT1NfUE9TSVgpCi0rI2luY2x1 ZGUgPGFycGEvaW5ldC5oPgotKyNlbmRpZgotKwotIHVzaW5nIDo6Z29vZ2xlOjpwcm90b2J1Zjo6 UmVwZWF0ZWRGaWVsZDsKLSB1c2luZyA6Omdvb2dsZTo6cHJvdG9idWY6OmludDMyOwotIAotQEAg LTI0Nyw3ICsyNTMsNyBAQCBURVNUX0YoVjRSaWNlVGVzdCwgVGVzdERlY29kZXJQcmVmaXhlc1dp dGhPbmVWYWx1ZSkgewotICAgRVhQRUNUX0VRKERFQ09ERV9TVUNDRVNTLAotICAgICAgICAgICAg IFY0UmljZURlY29kZXI6OkRlY29kZVByZWZpeGVzKDB4NjlGNjdGNTF1LCAyLCAwLCAiIiwgJm91 dCkpOwotICAgRVhQRUNUX0VRKDF1LCBvdXQuc2l6ZSgpKTsKLS0gIEVYUEVDVF9FUSgweDY5RjY3 RjUxdSwgb3V0WzBdKTsKLSsgIEVYUEVDVF9FUShodG9ubCgweDUxN0ZGNjY5dSksIG91dFswXSk7 Ci0gfQotIAotIFRFU1RfRihWNFJpY2VUZXN0LCBUZXN0RGVjb2RlclByZWZpeGVzV2l0aE11bHRp cGxlVmFsdWVzKSB7Ci1AQCAtMjU2LDcgKzI2Miw3IEBAIFRFU1RfRihWNFJpY2VUZXN0LCBUZXN0 RGVjb2RlclByZWZpeGVzV2l0aE11bHRpcGxlVmFsdWVzKSB7Ci0gICAgICAgICAgICAgVjRSaWNl RGVjb2Rlcjo6RGVjb2RlUHJlZml4ZXMoCi0gICAgICAgICAgICAgICAgIDUsIDI4LCAzLCAiXHhi Zlx4YThceDNmXHhmYlx4Zlx4Zlx4NWVceDI3XHhlNlx4YzNceDFkXHhjNlx4MzgiLAotICAgICAg ICAgICAgICAgICAmb3V0KSk7Ci0tICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gZXhwZWN0ZWQgPSB7 NSwgMHhhZDkzNGMwY3UsIDB4NmZmNjdmNTZ1LCAweDgxMzE2ZmNldX07Ci0rICBzdGQ6OnZlY3Rv cjx1aW50MzJfdD4gZXhwZWN0ZWQgPSB7aHRvbmwoMHgwNTAwMDAwMCksIGh0b25sKDB4MGM0Yzkz YWR1KSwgaHRvbmwoMHg1NjdmZjY2ZnUpLCBodG9ubCgweGNlNmYzMTgxdSl9OwotICAgRVhQRUNU X0VRKGV4cGVjdGVkLnNpemUoKSwgb3V0LnNpemUoKSk7Ci0gICBmb3IgKHVuc2lnbmVkIGkgPSAw OyBpIDwgZXhwZWN0ZWQuc2l6ZSgpOyBpKyspIHsKLSAgICAgRVhQRUNUX0VRKGV4cGVjdGVkW2ld LCBvdXRbaV0pOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9m Zm1wZWcvZmZtcGVnX2NvbW1vbi5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS9tZWRpYS9mZm1wZWcvZmZtcGVnX2NvbW1vbi5jYwotQEAgLTY4NiwxMCArNjg2LDYgQEAg Q2hhbm5lbExheW91dCBDaGFubmVsTGF5b3V0VG9DaHJvbWVDaGFubmVsTGF5b3V0KGludDY0X3Qg bGF5b3V0LCBpbnQgY2hhbm5lbHMpIHsKLSAgIH0KLSB9Ci0gCi0tI2lmICFkZWZpbmVkKEFSQ0hf Q1BVX0xJVFRMRV9FTkRJQU4pCi0tI2Vycm9yIFRoZSBjb2RlIGJlbG93IGFzc3VtZXMgbGl0dGxl LWVuZGlhbm5lc3MuCi0tI2VuZGlmCi0tCi0gVmlkZW9QaXhlbEZvcm1hdCBBVlBpeGVsRm9ybWF0 VG9WaWRlb1BpeGVsRm9ybWF0KEFWUGl4ZWxGb3JtYXQgcGl4ZWxfZm9ybWF0KSB7Ci0gICAvLyBU aGUgWVVWSiBhbHRlcm5hdGl2ZXMgYXJlIEZGbXBlZydzIChkZXByZWNhdGVkLCBidXQgc3RpbGwg aW4gdXNlKSB3YXkgdG8KLSAgIC8vIHNwZWNpZnkgYSBwaXhlbCBmb3JtYXQgYW5kIGZ1bGwgcmFu Z2UgY29sb3IgY29tYmluYXRpb24uCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL21lZGlhL2Zvcm1hdHMvbXA0L2JveF9kZWZpbml0aW9ucy5jYwotKysrIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9mb3JtYXRzL21wNC9ib3hfZGVmaW5pdGlvbnMu Y2MKLUBAIC0xMTA3LDE1ICsxMTA3LDE0IEBAIGJvb2wgT3B1c1NwZWNpZmljQm94OjpQYXJzZShC b3hSZWFkZXIqIHJlYWRlcikgewotICAgUkNIRUNLKHJlYWRlci0+UmVhZDQoJnNhbXBsZV9yYXRl KSk7Ci0gICBSQ0hFQ0socmVhZGVyLT5SZWFkMnMoJmdhaW5fZGIpKTsKLSAKLS0jaWYgIWRlZmlu ZWQoQVJDSF9DUFVfTElUVExFX0VORElBTikKLS0jZXJyb3IgVGhlIGNvZGUgYmVsb3cgYXNzdW1l cyBsaXR0bGUtZW5kaWFubmVzcy4KLS0jZW5kaWYKLS0KLS0gIG1lbWNweSgmZXh0cmFkYXRhW09Q VVNfRVhUUkFEQVRBX1NLSVBfU0FNUExFU19PRkZTRVRdLCAmY29kZWNfZGVsYXlfaW5fZnJhbWVz LAotLSAgICAgICAgIHNpemVvZihjb2RlY19kZWxheV9pbl9mcmFtZXMpKTsKLS0gIG1lbWNweSgm ZXh0cmFkYXRhW09QVVNfRVhUUkFEQVRBX1NBTVBMRV9SQVRFX09GRlNFVF0sICZzYW1wbGVfcmF0 ZSwKLS0gICAgICAgICBzaXplb2Yoc2FtcGxlX3JhdGUpKTsKLS0gIG1lbWNweSgmZXh0cmFkYXRh W09QVVNfRVhUUkFEQVRBX0dBSU5fT0ZGU0VUXSwgJmdhaW5fZGIsIHNpemVvZihnYWluX2RiKSk7 Ci0rICBleHRyYWRhdGFbT1BVU19FWFRSQURBVEFfU0tJUF9TQU1QTEVTX09GRlNFVF0gPSAoY29k ZWNfZGVsYXlfaW5fZnJhbWVzID4+IDApICYgMHhmZjsKLSsgIGV4dHJhZGF0YVtPUFVTX0VYVFJB REFUQV9TS0lQX1NBTVBMRVNfT0ZGU0VUKzFdID0gKGNvZGVjX2RlbGF5X2luX2ZyYW1lcyA+PiA4 KSAmIDB4ZmY7Ci0rICBleHRyYWRhdGFbT1BVU19FWFRSQURBVEFfU0FNUExFX1JBVEVfT0ZGU0VU XSA9IChzYW1wbGVfcmF0ZSA+PiAwKSAmIDB4ZmY7Ci0rICBleHRyYWRhdGFbT1BVU19FWFRSQURB VEFfU0FNUExFX1JBVEVfT0ZGU0VUKzFdID0gKHNhbXBsZV9yYXRlID4+IDgpICYgMHhmZjsKLSsg IGV4dHJhZGF0YVtPUFVTX0VYVFJBREFUQV9TQU1QTEVfUkFURV9PRkZTRVQrMl0gPSAoc2FtcGxl X3JhdGUgPj4gMTYpICYgMHhmZjsKLSsgIGV4dHJhZGF0YVtPUFVTX0VYVFJBREFUQV9TQU1QTEVf UkFURV9PRkZTRVQrM10gPSAoc2FtcGxlX3JhdGUgPj4gMjQpICYgMHhmZjsKLSsgIGV4dHJhZGF0 YVtPUFVTX0VYVFJBREFUQV9HQUlOX09GRlNFVF0gPSAoZ2Fpbl9kYiA+PiAwKSAmIDB4ZmY7Ci0r ICBleHRyYWRhdGFbT1BVU19FWFRSQURBVEFfR0FJTl9PRkZTRVQrMV0gPSAoZ2Fpbl9kYiA+PiA4 KSAmIDB4ZmY7Ci0gCi0gICBjaGFubmVsX2NvdW50ID0gZXh0cmFkYXRhW09QVVNfRVhUUkFEQVRB X0NIQU5ORUxTX09GRlNFVF07Ci0gCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL21lZGlhL3JlbmRlcmVycy9wYWludF9jYW52YXNfdmlkZW9fcmVuZGVyZXIuY2MKLSsrKyBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvcmVuZGVyZXJzL3BhaW50X2Nh bnZhc192aWRlb19yZW5kZXJlci5jYwotQEAgLTMxLDggKzMxLDcgQEAKLSAKLSAvLyBTa2lhIGlu dGVybmFsIGZvcm1hdCBkZXBlbmRzIG9uIGEgcGxhdGZvcm0uIE9uIEFuZHJvaWQgaXQgaXMgQUJH Uiwgb24gb3RoZXJzCi0gLy8gaXQgaXMgQVJHQi4KLS0jaWYgU0tfQjMyX1NISUZUID09IDAgJiYg U0tfRzMyX1NISUZUID09IDggJiYgU0tfUjMyX1NISUZUID09IDE2ICYmIFwKLS0gICAgU0tfQTMy X1NISUZUID09IDI0Ci0rI2lmIFNLX1BNQ09MT1JfQllURV9PUkRFUihCLEcsUixBKQotICNkZWZp bmUgTElCWVVWX0k0MjBfVE9fQVJHQiBsaWJ5dXY6Okk0MjBUb0FSR0IKLSAjZGVmaW5lIExJQllV Vl9JNDIyX1RPX0FSR0IgbGlieXV2OjpJNDIyVG9BUkdCCi0gI2RlZmluZSBMSUJZVVZfSTQ0NF9U T19BUkdCIGxpYnl1djo6STQ0NFRvQVJHQgotQEAgLTQyLDggKzQxLDcgQEAKLSAjZGVmaW5lIExJ QllVVl9JMDEwX1RPX0FSR0IgbGlieXV2OjpJMDEwVG9BUkdCCi0gI2RlZmluZSBMSUJZVVZfSDAx MF9UT19BUkdCIGxpYnl1djo6SDAxMFRvQVJHQgotICNkZWZpbmUgTElCWVVWX05WMTJfVE9fQVJH QiBsaWJ5dXY6Ok5WMTJUb0FSR0IKLS0jZWxpZiBTS19SMzJfU0hJRlQgPT0gMCAmJiBTS19HMzJf U0hJRlQgPT0gOCAmJiBTS19CMzJfU0hJRlQgPT0gMTYgJiYgXAotLSAgICBTS19BMzJfU0hJRlQg PT0gMjQKLSsjZWxpZiBTS19QTUNPTE9SX0JZVEVfT1JERVIoUixHLEIsQSkKLSAjZGVmaW5lIExJ QllVVl9JNDIwX1RPX0FSR0IgbGlieXV2OjpJNDIwVG9BQkdSCi0gI2RlZmluZSBMSUJZVVZfSTQy Ml9UT19BUkdCIGxpYnl1djo6STQyMlRvQUJHUgotICNkZWZpbmUgTElCWVVWX0k0NDRfVE9fQVJH QiBsaWJ5dXY6Okk0NDRUb0FCR1IKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vbmV0L2NlcnQvY3JsX3NldC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS9uZXQvY2VydC9jcmxfc2V0LmNjCi1AQCAtNiw2ICs2LDcgQEAKLSAKLSAjaW5jbHVkZSAi YmFzZS9iYXNlNjQuaCIKLSAjaW5jbHVkZSAiYmFzZS9qc29uL2pzb25fcmVhZGVyLmgiCi0rI2lu Y2x1ZGUgImJhc2Uvc3lzX2J5dGVvcmRlci5oIgotICNpbmNsdWRlICJiYXNlL3RpbWUvdGltZS5o IgotICNpbmNsdWRlICJiYXNlL3RyYWNlX2V2ZW50L3RyYWNlX2V2ZW50LmgiCi0gI2luY2x1ZGUg ImJhc2UvdmFsdWVzLmgiCi1AQCAtNDQsOSArNDUsOSBAQCBiYXNlOjpEaWN0aW9uYXJ5VmFsdWUq IFJlYWRIZWFkZXIoYmFzZTo6U3RyaW5nUGllY2UqIGRhdGEpIHsKLSAgIHVpbnQxNl90IGhlYWRl cl9sZW47Ci0gICBpZiAoZGF0YS0+c2l6ZSgpIDwgc2l6ZW9mKGhlYWRlcl9sZW4pKQotICAgICBy ZXR1cm4gbnVsbHB0cjsKLS0gIC8vIEFzc3VtZXMgbGl0dGxlLWVuZGlhbi4KLSAgIG1lbWNweSgm aGVhZGVyX2xlbiwgZGF0YS0+ZGF0YSgpLCBzaXplb2YoaGVhZGVyX2xlbikpOwotICAgZGF0YS0+ cmVtb3ZlX3ByZWZpeChzaXplb2YoaGVhZGVyX2xlbikpOwotKyAgaGVhZGVyX2xlbiA9IGJhc2U6 OkJ5dGVTd2FwVG9MRTE2KGhlYWRlcl9sZW4pOwotIAotICAgaWYgKGRhdGEtPnNpemUoKSA8IGhl YWRlcl9sZW4pCi0gICAgIHJldHVybiBudWxscHRyOwotQEAgLTc5LDkgKzgwLDkgQEAgYm9vbCBS ZWFkQ1JMKGJhc2U6OlN0cmluZ1BpZWNlKiBkYXRhLAotICAgdWludDMyX3QgbnVtX3NlcmlhbHM7 Ci0gICBpZiAoZGF0YS0+c2l6ZSgpIDwgc2l6ZW9mKG51bV9zZXJpYWxzKSkKLSAgICAgcmV0dXJu IGZhbHNlOwotLSAgLy8gQXNzdW1lcyBsaXR0bGUgZW5kaWFuLgotICAgbWVtY3B5KCZudW1fc2Vy aWFscywgZGF0YS0+ZGF0YSgpLCBzaXplb2YobnVtX3NlcmlhbHMpKTsKLSAgIGRhdGEtPnJlbW92 ZV9wcmVmaXgoc2l6ZW9mKG51bV9zZXJpYWxzKSk7Ci0rICBudW1fc2VyaWFscyA9IGJhc2U6OkJ5 dGVTd2FwVG9MRTMyKG51bV9zZXJpYWxzKTsKLSAKLSAgIGlmIChudW1fc2VyaWFscyA+IDMyICog MTAyNCAqIDEwMjQpICAvLyBTYW5pdHkgY2hlY2suCi0gICAgIHJldHVybiBmYWxzZTsKLUBAIC0x OTIsMTUgKzE5Myw2IEBAIENSTFNldDo6fkNSTFNldCgpID0gZGVmYXVsdDsKLSAvLyBzdGF0aWMK LSBib29sIENSTFNldDo6UGFyc2UoYmFzZTo6U3RyaW5nUGllY2UgZGF0YSwgc2NvcGVkX3JlZnB0 cjxDUkxTZXQ+KiBvdXRfY3JsX3NldCkgewotICAgVFJBQ0VfRVZFTlQwKE5ldFRyYWNpbmdDYXRl Z29yeSgpLCAiQ1JMU2V0OjpQYXJzZSIpOwotLS8vIE90aGVyIHBhcnRzIG9mIENocm9tZSBhc3N1 bWUgdGhhdCB3ZSdyZSBsaXR0bGUgZW5kaWFuLCBzbyB3ZSBkb24ndCBsb3NlCi0tLy8gYW55dGhp bmcgYnkgZG9pbmcgdGhpcy4KLS0jaWYgZGVmaW5lZChfX0JZVEVfT1JERVIpCi0tICAvLyBMaW51 eCBjaGVjawotLSAgc3RhdGljX2Fzc2VydChfX0JZVEVfT1JERVIgPT0gX19MSVRUTEVfRU5ESUFO LCAiYXNzdW1lcyBsaXR0bGUgZW5kaWFuIik7Ci0tI2VsaWYgZGVmaW5lZChfX0JJR19FTkRJQU5f XykKLS0vLyBNYWMgY2hlY2sKLS0jZXJyb3IgYXNzdW1lcyBsaXR0bGUgZW5kaWFuCi0tI2VuZGlm Ci0gCi0gICBzdGQ6OnVuaXF1ZV9wdHI8YmFzZTo6RGljdGlvbmFyeVZhbHVlPiBoZWFkZXJfZGlj dChSZWFkSGVhZGVyKCZkYXRhKSk7Ci0gICBpZiAoIWhlYWRlcl9kaWN0LmdldCgpKQotLS0tIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L2JwZl9kc2wvc2Vj Y29tcF9tYWNyb3MuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5k Ym94L2xpbnV4L2JwZl9kc2wvc2VjY29tcF9tYWNyb3MuaAotQEAgLTM3Nyw2ICszNzcsNyBAQCB0 eXBlZGVmIHN0cnVjdCBwdF9yZWdzIHJlZ3Nfc3RydWN0OwotIAotICNkZWZpbmUgU0VDQ09NUF9O Ul9JRFggKG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSwgbnIpKQotICNkZWZpbmUg U0VDQ09NUF9BUkNIX0lEWCAob2Zmc2V0b2Yoc3RydWN0IGFyY2hfc2VjY29tcF9kYXRhLCBhcmNo KSkKLSsjaWYgX19CWVRFX09SREVSX18gPT0gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18KLSAjZGVm aW5lIFNFQ0NPTVBfSVBfTVNCX0lEWCBcCi0gICAob2Zmc2V0b2Yoc3RydWN0IGFyY2hfc2VjY29t cF9kYXRhLCBpbnN0cnVjdGlvbl9wb2ludGVyKSArIDQpCi0gI2RlZmluZSBTRUNDT01QX0lQX0xT Ql9JRFggXAotQEAgLTM4NSw2ICszODYsMTYgQEAgdHlwZWRlZiBzdHJ1Y3QgcHRfcmVncyByZWdz X3N0cnVjdDsKLSAgIChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIGFyZ3MpICsg OCAqIChucikgKyA0KQotICNkZWZpbmUgU0VDQ09NUF9BUkdfTFNCX0lEWChucikgXAotICAgKG9m ZnNldG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSwgYXJncykgKyA4ICogKG5yKSArIDApCi0r I2Vsc2UKLSsjZGVmaW5lIFNFQ0NPTVBfSVBfTVNCX0lEWCBcCi0rICAob2Zmc2V0b2Yoc3RydWN0 IGFyY2hfc2VjY29tcF9kYXRhLCBpbnN0cnVjdGlvbl9wb2ludGVyKSArIDApCi0rI2RlZmluZSBT RUNDT01QX0lQX0xTQl9JRFggXAotKyAgKG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0 YSwgaW5zdHJ1Y3Rpb25fcG9pbnRlcikgKyA0KQotKyNkZWZpbmUgU0VDQ09NUF9BUkdfTVNCX0lE WChucikgXAotKyAgKG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSwgYXJncykgKyA4 ICogKG5yKSArIDApCi0rI2RlZmluZSBTRUNDT01QX0FSR19MU0JfSURYKG5yKSBcCi0rICAob2Zm c2V0b2Yoc3RydWN0IGFyY2hfc2VjY29tcF9kYXRhLCBhcmdzKSArIDggKiAobnIpICsgNCkKLSsj ZW5kaWYKLSAKLSAjZGVmaW5lIFNFQ0NPTVBfUFRfUkVTVUxUKF9yZWdzKSAoX3JlZ3MpLmdwclsz XQotICNkZWZpbmUgU0VDQ09NUF9QVF9TWVNDQUxMKF9yZWdzKSAoX3JlZ3MpLmdwclswXQotLS0t IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9za2lhL2NvbmZpZy9Ta1VzZXJDb25m aWcuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9za2lhL2NvbmZpZy9T a1VzZXJDb25maWcuaAotQEAgLTkwLDExICs5MCwxOCBAQCBTS19BUEkgdm9pZCBTa0RlYnVnZl9G aWxlTGluZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgYm9vbCBmYXRhbCwKLSAgICAgX19G SUxFX18sIF9fTElORV9fLCAjY29uZCk7IH0gfSB3aGlsZSAoZmFsc2UpCi0gCi0gI2lmICFkZWZp bmVkKEFORFJPSUQpICAgLy8gT24gQW5kcm9pZCwgd2UgdXNlIHRoZSBza2lhIGRlZmF1bHQgc2V0 dGluZ3MuCi0rI2lmIGRlZmluZWQoU0tfQ1BVX0JFTkRJQU4pCi0rI2RlZmluZSBTS19BMzJfU0hJ RlQgICAgMAotKyNkZWZpbmUgU0tfUjMyX1NISUZUICAgIDgKLSsjZGVmaW5lIFNLX0czMl9TSElG VCAgICAxNgotKyNkZWZpbmUgU0tfQjMyX1NISUZUICAgIDI0Ci0rI2Vsc2UKLSAjZGVmaW5lIFNL X0EzMl9TSElGVCAgICAyNAotICNkZWZpbmUgU0tfUjMyX1NISUZUICAgIDE2Ci0gI2RlZmluZSBT S19HMzJfU0hJRlQgICAgOAotICNkZWZpbmUgU0tfQjMyX1NISUZUICAgIDAKLSAjZW5kaWYKLSsj ZW5kaWYKLSAKLSAjaWYgZGVmaW5lZChTS19CVUlMRF9GT1JfTUFDKQotIAotQEAgLTEwOCwxNyAr MTE1LDYgQEAgU0tfQVBJIHZvaWQgU2tEZWJ1Z2ZfRmlsZUxpbmUoY29uc3QgY2hhciogZmlsZSwg aW50IGxpbmUsIGJvb2wgZmF0YWwsCi0gLy8gd2Ugc2hvdWxkIHJldmlzaXQgdGhpcyBjaG9pY2Uu Li4KLSAjZGVmaW5lIFNLX1VTRV9GUkVFVFlQRV9FTUJPTERFTgotIAotLSNpZiBkZWZpbmVkKFNL X0JVSUxEX0ZPUl9VTklYKSAmJiBkZWZpbmVkKFNLX0NQVV9CRU5ESUFOKQotLS8vIEFib3ZlIHdl IHNldCB0aGUgb3JkZXIgZm9yIEFSR0IgY2hhbm5lbHMgaW4gcmVnaXN0ZXJzLiBJIHN1c3BlY3Qg dGhhdCwgb24KLS0vLyBiaWcgZW5kaWFuIG1hY2hpbmVzLCB5b3UgY2FuIGtlZXAgdGhpcyB0aGUg c2FtZSBhbmQgZXZlcnl0aGluZyB3aWxsIHdvcmsuCi0tLy8gVGhlIGluLW1lbW9yeSBvcmRlciB3 aWxsIGJlIGRpZmZlcmVudCwgb2YgY291cnNlLCBidXQgYXMgbG9uZyBhcyBldmVyeXRoaW5nCi0t Ly8gaXMgcmVhZGluZyBtZW1vcnkgYXMgd29yZHMgcmF0aGVyIHRoYW4gYnl0ZXMsIGl0IHdpbGwg YWxsIHdvcmsuIEhvd2V2ZXIsIGlmCi0tLy8geW91IGZpbmQgdGhhdCBjb2xvdXJzIGFyZSBtZXNz ZWQgdXAgSSB0aG91Z2h0IHRoYXQgSSB3b3VsZCBsZWF2ZSBhIGhlbHBmdWwKLS0vLyBsb2NhdG9y IGZvciB5b3UuIEFsc28gc2VlIHRoZSBjb21tZW50cyBpbgotLS8vIGJhc2UvZ2Z4L2JpdG1hcF9w bGF0Zm9ybV9kZXZpY2VfbGludXguaAotLSNlcnJvciBSZWFkIHRoZSBjb21tZW50IGF0IHRoaXMg bG9jYXRpb24KLS0jZW5kaWYKLS0KLSAjZW5kaWYKLSAKLSAvLyBUaGUgZGVmYXVsdCBjcmFzaCBt YWNybyB3cml0ZXMgdG8gYmFkYmVlZiB3aGljaCBjYW4gY2F1c2Ugc29tZSBzdHJhbmdlCi0tLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NraWEvZXh0L2ltYWdlX29wZXJhdGlv bnNfdW5pdHRlc3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2tp YS9leHQvaW1hZ2Vfb3BlcmF0aW9uc191bml0dGVzdC5jYwotQEAgLTE4LDkgKzE4LDExIEBACi0g I2luY2x1ZGUgInNraWEvZXh0L2ltYWdlX29wZXJhdGlvbnMuaCIKLSAjaW5jbHVkZSAidGVzdGlu Zy9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgiCi0gI2luY2x1ZGUgInRoaXJkX3BhcnR5L3Nr aWEvaW5jbHVkZS9jb3JlL1NrQml0bWFwLmgiCi0rI2luY2x1ZGUgInRoaXJkX3BhcnR5L3NraWEv aW5jbHVkZS9jb3JlL1NrQ29sb3JQcml2LmgiCi0gI2luY2x1ZGUgInRoaXJkX3BhcnR5L3NraWEv aW5jbHVkZS9jb3JlL1NrQ29sb3JTcGFjZS5oIgotICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9za2lh L2luY2x1ZGUvY29yZS9Ta0ltYWdlSW5mby5oIgotICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9za2lh L2luY2x1ZGUvY29yZS9Ta1JlY3QuaCIKLSsjaW5jbHVkZSAidGhpcmRfcGFydHkvc2tpYS9pbmNs dWRlL2NvcmUvU2tVblByZU11bHRpcGx5LmgiCi0gI2luY2x1ZGUgInVpL2dmeC9jb2RlYy9wbmdf Y29kZWMuaCIKLSAjaW5jbHVkZSAidWkvZ2Z4L2dlb21ldHJ5L3NpemUuaCIKLSAKLUBAIC0xNTEs NyArMTUzLDcgQEAgdm9pZCBEcmF3Q2hlY2tlclRvQml0bWFwKGludCB3LCBpbnQgaCwKLSAKLSAg ICAgICBib29sIHVzZV9jb2xvcjIgPSAoeF9iaXQgIT0geV9iaXQpOyAgLy8geG9yCi0gCi0tICAg ICAgKmJtcC0+Z2V0QWRkcjMyKHgsIHkpID0gKHVzZV9jb2xvcjIgPyBjb2xvcjIgOiBjb2xvcjEp OwotKyAgICAgICpibXAtPmdldEFkZHIzMih4LCB5KSA9IFNrUHJlTXVsdGlwbHlDb2xvcih1c2Vf Y29sb3IyID8gY29sb3IyIDogY29sb3IxKTsKLSAgICAgfQotICAgfQotIH0KLUBAIC0yNzMsNyAr Mjc1LDcgQEAgdm9pZCBDaGVja1Jlc2l6ZU1ldGhvZFNob3VsZEF2ZXJhZ2VHcmlkKAotICAgICAg ICAgc3RkOjptYXgodGVzdGVkX3BpeGVsLm1heF9jb2xvcl9kaXN0YW5jZSwKLSAgICAgICAgICAg ICAgICAgIHRlc3RlZF9tZXRob2QubWF4X2NvbG9yX2Rpc3RhbmNlX292ZXJyaWRlKTsKLSAKLS0g ICAgY29uc3QgU2tDb2xvciBhY3R1YWxfY29sb3IgPSAqZGVzdC5nZXRBZGRyMzIoeCwgeSk7Ci0r ICAgIGNvbnN0IFNrQ29sb3IgYWN0dWFsX2NvbG9yID0gU2tVblByZU11bHRpcGx5OjpQTUNvbG9y VG9Db2xvcigqZGVzdC5nZXRBZGRyMzIoeCwgeSkpOwotIAotICAgICAvLyBDaGVjayB0aGF0IHRo ZSBwaXhlbHMgYXdheSBmcm9tIHRoZSBib3JkZXIgcmVnaW9uIGFyZSB2ZXJ5IGNsb3NlCi0gICAg IC8vIHRvIHRoZSBleHBlY3RlZCBhdmVyYWdlIGNvbG9yCi1AQCAtNTI4LDcgKzUzMCw3IEBAIFRF U1QoSW1hZ2VPcGVyYXRpb25zLCBTY2FsZVVwKSB7Ci0gICBmb3IgKGludCBzcmNfeSA9IDA7IHNy Y195IDwgc3JjX2g7ICsrc3JjX3kpIHsKLSAgICAgZm9yIChpbnQgc3JjX3ggPSAwOyBzcmNfeCA8 IHNyY193OyArK3NyY194KSB7Ci0gICAgICAgKnNyYy5nZXRBZGRyMzIoc3JjX3gsIHNyY195KSA9 Ci0tICAgICAgICAgIFNrQ29sb3JTZXRBUkdCKDI1NSwgMTAgKyBzcmNfeCAqIDEwMCwgMTAgKyBz cmNfeSAqIDEwMCwgMCk7Ci0rICAgICAgICAgIFNrUGFja0FSR0IzMigyNTUsIDEwICsgc3JjX3gg KiAxMDAsIDEwICsgc3JjX3kgKiAxMDAsIDApOwotICAgICB9Ci0gICB9Ci0gCi1AQCAtNTUyLDcg KzU1NCw3IEBAIFRFU1QoSW1hZ2VPcGVyYXRpb25zLCBTY2FsZVVwKSB7Ci0gICAgICAgICAgICAg ICBsYW5jem9zMyhzcmNfeCArIDAuNSAtIGRzdF94X2luX3NyYykgKgotICAgICAgICAgICAgICAg bGFuY3pvczMoc3JjX3kgKyAwLjUgLSBkc3RfeV9pbl9zcmMpOwotICAgICAgICAgICBzdW0gKz0g Y29lZmY7Ci0tICAgICAgICAgIFNrQ29sb3IgdG1wID0gKnNyYy5nZXRBZGRyMzIoc3JjX3gsIHNy Y195KTsKLSsgICAgICAgICAgU2tDb2xvciB0bXAgPSBTa1VuUHJlTXVsdGlwbHk6OlBNQ29sb3JU b0NvbG9yKCpzcmMuZ2V0QWRkcjMyKHNyY194LCBzcmNfeSkpOwotICAgICAgICAgICBhICs9IGNv ZWZmICogU2tDb2xvckdldEEodG1wKTsKLSAgICAgICAgICAgciArPSBjb2VmZiAqIFNrQ29sb3JH ZXRSKHRtcCk7Ci0gICAgICAgICAgIGcgKz0gY29lZmYgKiBTa0NvbG9yR2V0Ryh0bXApOwotQEAg LTU3MSw3ICs1NzMsNyBAQCBURVNUKEltYWdlT3BlcmF0aW9ucywgU2NhbGVVcCkgewotICAgICAg IGlmIChyID4gMjU1LjBmKSByID0gMjU1LjBmOwotICAgICAgIGlmIChnID4gMjU1LjBmKSBnID0g MjU1LjBmOwotICAgICAgIGlmIChiID4gMjU1LjBmKSBiID0gMjU1LjBmOwotLSAgICAgIFNrQ29s b3IgZHN0X2NvbG9yID0gKmRzdC5nZXRBZGRyMzIoZHN0X3gsIGRzdF95KTsKLSsgICAgICBTa0Nv bG9yIGRzdF9jb2xvciA9IFNrVW5QcmVNdWx0aXBseTo6UE1Db2xvclRvQ29sb3IoKmRzdC5nZXRB ZGRyMzIoZHN0X3gsIGRzdF95KSk7Ci0gICAgICAgRVhQRUNUX0xFKGZhYnMoU2tDb2xvckdldEEo ZHN0X2NvbG9yKSAtIGEpLCAxLjVmKTsKLSAgICAgICBFWFBFQ1RfTEUoZmFicyhTa0NvbG9yR2V0 Uihkc3RfY29sb3IpIC0gciksIDEuNWYpOwotICAgICAgIEVYUEVDVF9MRShmYWJzKFNrQ29sb3JH ZXRHKGRzdF9jb2xvcikgLSBnKSwgMS41Zik7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2dyYXBoaWNzL2dw dS93ZWJnbF9pbWFnZV9jb252ZXJzaW9uLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2dyYXBoaWNzL2dw dS93ZWJnbF9pbWFnZV9jb252ZXJzaW9uLmNjCi1AQCAtNDU2LDggKzQ1Niw4IEBAIHZvaWQgVW5w YWNrPFdlYkdMSW1hZ2VDb252ZXJzaW9uOjprRGF0YUZvcm1hdEJHUkE4LCB1aW50OF90LCB1aW50 OF90PigKLSAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwaXhlbHNfcGVyX3JvdzsgKytpKSB7 Ci0gICAgIHVpbnQzMl90IGJncmEgPSBzb3VyY2UzMltpXTsKLSAjaWYgZGVmaW5lZChBUkNIX0NQ VV9CSUdfRU5ESUFOKQotLSAgICB1aW50MzJfdCBick1hc2sgPSAweGZmMDBmZjAwOwotLSAgICB1 aW50MzJfdCBnYU1hc2sgPSAweDAwZmYwMGZmOwotKyAgICB1aW50MzJfdCBicl9tYXNrID0gMHhm ZjAwZmYwMDsKLSsgICAgdWludDMyX3QgZ2FfbWFzayA9IDB4MDBmZjAwZmY7Ci0gI2Vsc2UKLSAg ICAgdWludDMyX3QgYnJfbWFzayA9IDB4MDBmZjAwZmY7Ci0gICAgIHVpbnQzMl90IGdhX21hc2sg PSAweGZmMDBmZjAwOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvd2ViZ2xfaW1hZ2Vf Y29udmVyc2lvbl90ZXN0LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS93ZWJnbF9p bWFnZV9jb252ZXJzaW9uX3Rlc3QuY2MKLUBAIC03Niw5ICs3Niw5IEBAIFRFU1RfRihXZWJHTElt YWdlQ29udmVyc2lvblRlc3QsIGNvbnZlcnRCR1JBOHRvUkdCQTgpIHsKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDB4MzQ1Njc4ODgsIDB4MTIzNDU2NzgsIDB4MzQ1Njc4ODgsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyMzQ1Njc4LCAweDM0NTY3ODg4LCAweDEyMzQ1 Njc4fTsKLSAjaWYgZGVmaW5lZChBUkNIX0NQVV9CSUdfRU5ESUFOKQotLSAgdWludDMyX3QgZXhw ZWN0ZWREYXRhWzldID0gezB4NTYzNDEyNzgsIDB4Nzg1NjM0ODgsIDB4NTYzNDEyNzgsCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ODU2MzQ4OCwgMHg1NjM0MTI3OCwgMHg3ODU2 MzQ4OCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU2MzQxMjc4LCAweDc4NTYz NDg4LCAweDU2MzQxMjc4fTsKLSsgIHVpbnQzMl90IGV4cGVjdGVkX2RhdGFbOV0gPSB7MHg1NjM0 MTI3OCwgMHg3ODU2MzQ4OCwgMHg1NjM0MTI3OCwKLSsJCQkgICAgICAgMHg3ODU2MzQ4OCwgMHg1 NjM0MTI3OCwgMHg3ODU2MzQ4OCwKLSsJCQkgICAgICAgMHg1NjM0MTI3OCwgMHg3ODU2MzQ4OCwg MHg1NjM0MTI3OH07Ci0gI2Vsc2UKLSAgIHVpbnQzMl90IGV4cGVjdGVkX2RhdGFbOV0gPSB7MHgx Mjc4NTYzNCwgMHgzNDg4Nzg1NiwgMHgxMjc4NTYzNCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMHgzNDg4Nzg1NiwgMHgxMjc4NTYzNCwgMHgzNDg4Nzg1NiwKLS0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxh dGZvcm0vZ3JhcGhpY3MvZ3JhcGhpY3NfY29udGV4dF90ZXN0LmNjCi0rKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3Jt L2dyYXBoaWNzL2dyYXBoaWNzX2NvbnRleHRfdGVzdC5jYwotQEAgLTUyLDcgKzUyLDcgQEAgbmFt ZXNwYWNlIGJsaW5rIHsKLSAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgZm9yIChpbnQgeSA9IG9wYXF1ZVJlY3Qu WSgpOyB5IDwgb3BhcXVlUmVjdC5NYXhZKCk7ICsreSkgICAgIFwKLSAgICAgICBmb3IgKGludCB4 ID0gb3BhcXVlUmVjdC5YKCk7IHggPCBvcGFxdWVSZWN0Lk1heFgoKTsgKyt4KSB7IFwKLS0gICAg ICAgIGludCBhbHBoYSA9ICpiaXRtYXAuZ2V0QWRkcjMyKHgsIHkpID4+IDI0OyAgICAgICAgICAg ICAgIFwKLSsgICAgICAgIGludCBhbHBoYSA9IFNrR2V0UGFja2VkQTMyKCpiaXRtYXAuZ2V0QWRk cjMyKHgsIHkpKTsJIFwKLSAgICAgICAgIEVYUEVDVF9FUSgyNTUsIGFscGhhKTsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICB9ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIH0KLUBAIC02MSwxMiAr NjEsMTYgQEAgbmFtZXNwYWNlIGJsaW5rIHsKLSAgIHsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgZm9yIChpbnQgeSA9IDA7 IHkgPCBiaXRtYXAuaGVpZ2h0KCk7ICsreSkgICAgICAgICAgICAgICAgIFwKLSAgICAgICBmb3Ig KGludCB4ID0gMDsgeCA8IGJpdG1hcC53aWR0aCgpOyArK3gpIHsgICAgICAgICAgICAgIFwKLS0g ICAgICAgIGludCBhbHBoYSA9ICpiaXRtYXAuZ2V0QWRkcjMyKHgsIHkpID4+IDI0OyAgICAgICAg ICAgIFwKLSsgICAgICAgIGludCBhbHBoYSA9IFNrR2V0UGFja2VkQTMyKCpiaXRtYXAuZ2V0QWRk cjMyKHgsIHkpKTsgIFwKLSAgICAgICAgIGJvb2wgb3BhcXVlID0gb3BhcXVlUmVjdC5Db250YWlu cyh4LCB5KTsgICAgICAgICAgICAgIFwKLSAgICAgICAgIEVYUEVDVF9FUShvcGFxdWUsIGFscGhh ID09IDI1NSk7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICB9ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIH0KLSAKLStzdGF0 aWMgaW5saW5lIHVpbnQzMl90IFBhY2tBUkdCMzIodWludDMyX3QgYXJnYikgewotKyAgcmV0dXJu IFNrUGFja0FSR0IzMk5vQ2hlY2soYXJnYj4+MjQsIChhcmdiPDw4KT4+MjQsIChhcmdiPDwxNik+ PjI0LCAoYXJnYjw8MjQpPj4yNCk7Ci0rfQotKwotIFRFU1QoR3JhcGhpY3NDb250ZXh0VGVzdCwg UmVjb3JkaW5nKSB7Ci0gICBTa0JpdG1hcCBiaXRtYXA7Ci0gICBiaXRtYXAuYWxsb2NOMzJQaXhl bHMoMTAwLCAxMDApOwotQEAgLTE4NCwxMCArMTg4LDEwIEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4 dEhpZ2hDb25zdHJhc3RUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIFRFU1RfRihHcmFw aGljc0NvbnRleHRIaWdoQ29uc3RyYXN0VGVzdCwgTUFZQkVfTm9IaWdoQ29udHJhc3QpIHsKLSAg IERyYXdDb2xvcnNUb0NvbnRleHQoKTsKLSAKLS0gIEVYUEVDVF9FUSgweGZmMDAwMDAwLCAqYml0 bWFwXy5nZXRBZGRyMzIoMCwgMCkpOwotLSAgRVhQRUNUX0VRKDB4ZmZmZmZmZmYsICpiaXRtYXBf LmdldEFkZHIzMigxLCAwKSk7Ci0tICBFWFBFQ1RfRVEoMHhmZmZmMDAwMCwgKmJpdG1hcF8uZ2V0 QWRkcjMyKDIsIDApKTsKLS0gIEVYUEVDVF9FUSgweGZmODA4MDgwLCAqYml0bWFwXy5nZXRBZGRy MzIoMywgMCkpOwotKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZjAwMDAwMCksICpiaXRtYXBf LmdldEFkZHIzMigwLCAwKSk7Ci0rICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmZmZmZmZmKSwg KmJpdG1hcF8uZ2V0QWRkcjMyKDEsIDApKTsKLSsgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmZm ZjAwMDApLCAqYml0bWFwXy5nZXRBZGRyMzIoMiwgMCkpOwotKyAgRVhQRUNUX0VRKFBhY2tBUkdC MzIoMHhmZjgwODA4MCksICpiaXRtYXBfLmdldEFkZHIzMigzLCAwKSk7Ci0gfQotIAotIC8vIFRP RE8oY3JidWcuY29tLzg1MDc4Mik6IFJlZW5hYmxlIHRoaXMuCi1AQCAtMjA1LDEwICsyMDksMTAg QEAgVEVTVF9GKEdyYXBoaWNzQ29udGV4dEhpZ2hDb25zdHJhc3RUZXN0LCBNQVlCRV9IaWdoQ29u dHJhc3RPZmYpIHsKLSAKLSAgIERyYXdDb2xvcnNUb0NvbnRleHQoKTsKLSAKLS0gIEVYUEVDVF9F USgweGZmMDAwMDAwLCAqYml0bWFwXy5nZXRBZGRyMzIoMCwgMCkpOwotLSAgRVhQRUNUX0VRKDB4 ZmZmZmZmZmYsICpiaXRtYXBfLmdldEFkZHIzMigxLCAwKSk7Ci0tICBFWFBFQ1RfRVEoMHhmZmZm MDAwMCwgKmJpdG1hcF8uZ2V0QWRkcjMyKDIsIDApKTsKLS0gIEVYUEVDVF9FUSgweGZmODA4MDgw LCAqYml0bWFwXy5nZXRBZGRyMzIoMywgMCkpOwotKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhm ZjAwMDAwMCksICpiaXRtYXBfLmdldEFkZHIzMigwLCAwKSk7Ci0rICBFWFBFQ1RfRVEoUGFja0FS R0IzMigweGZmZmZmZmZmKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDEsIDApKTsKLSsgIEVYUEVDVF9F UShQYWNrQVJHQjMyKDB4ZmZmZjAwMDApLCAqYml0bWFwXy5nZXRBZGRyMzIoMiwgMCkpOwotKyAg RVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZjgwODA4MCksICpiaXRtYXBfLmdldEFkZHIzMigzLCAw KSk7Ci0gfQotIAotIC8vIFNpbXBsZSBpbnZlcnQgZm9yIHRlc3RpbmcuIEVhY2ggY29sb3IgY29t cG9uZW50IHxjfAotQEAgLTIyOCwxMCArMjMyLDEwIEBAIFRFU1RfRihHcmFwaGljc0NvbnRleHRI aWdoQ29uc3RyYXN0VGVzdCwgTUFZQkVfU2ltcGxlSW52ZXJ0Rm9yVGVzdGluZykgewotIAotICAg RHJhd0NvbG9yc1RvQ29udGV4dCgpOwotIAotLSAgRVhQRUNUX0VRKDB4ZmZmZmZmZmYsICpiaXRt YXBfLmdldEFkZHIzMigwLCAwKSk7Ci0tICBFWFBFQ1RfRVEoMHhmZjAwMDAwMCwgKmJpdG1hcF8u Z2V0QWRkcjMyKDEsIDApKTsKLS0gIEVYUEVDVF9FUSgweGZmMDBmZmZmLCAqYml0bWFwXy5nZXRB ZGRyMzIoMiwgMCkpOwotLSAgRVhQRUNUX0VRKDB4ZmY3ZjdmN2YsICpiaXRtYXBfLmdldEFkZHIz MigzLCAwKSk7Ci0rICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmZmZmZmZmKSwgKmJpdG1hcF8u Z2V0QWRkcjMyKDAsIDApKTsKLSsgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmYwMDAwMDApLCAq Yml0bWFwXy5nZXRBZGRyMzIoMSwgMCkpOwotKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZjAw ZmZmZiksICpiaXRtYXBfLmdldEFkZHIzMigyLCAwKSk7Ci0rICBFWFBFQ1RfRVEoUGFja0FSR0Iz MigweGZmN2Y3ZjdmKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDMsIDApKTsKLSB9Ci0gCi0gLy8gSW52 ZXJ0IGJyaWdodG5lc3MgKHdpdGggZ2FtbWEgY29ycmVjdGlvbikuCi1AQCAtMjUwLDEwICsyNTQs MTAgQEAgVEVTVF9GKEdyYXBoaWNzQ29udGV4dEhpZ2hDb25zdHJhc3RUZXN0LCBNQVlCRV9JbnZl cnRCcmlnaHRuZXNzKSB7Ci0gCi0gICBEcmF3Q29sb3JzVG9Db250ZXh0KCk7Ci0gCi0tICBFWFBF Q1RfRVEoMHhmZmZmZmZmZiwgKmJpdG1hcF8uZ2V0QWRkcjMyKDAsIDApKTsKLS0gIEVYUEVDVF9F USgweGZmMDAwMDAwLCAqYml0bWFwXy5nZXRBZGRyMzIoMSwgMCkpOwotLSAgRVhQRUNUX0VRKDB4 ZmYwMGZmZmYsICpiaXRtYXBfLmdldEFkZHIzMigyLCAwKSk7Ci0tICBFWFBFQ1RfRVEoMHhmZmRk ZGRkZCwgKmJpdG1hcF8uZ2V0QWRkcjMyKDMsIDApKTsKLSsgIEVYUEVDVF9FUShQYWNrQVJHQjMy KDB4ZmZmZmZmZmYpLCAqYml0bWFwXy5nZXRBZGRyMzIoMCwgMCkpOwotKyAgRVhQRUNUX0VRKFBh Y2tBUkdCMzIoMHhmZjAwMDAwMCksICpiaXRtYXBfLmdldEFkZHIzMigxLCAwKSk7Ci0rICBFWFBF Q1RfRVEoUGFja0FSR0IzMigweGZmMDBmZmZmKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDIsIDApKTsK LSsgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmZkZGRkZGQpLCAqYml0bWFwXy5nZXRBZGRyMzIo MywgMCkpOwotIH0KLSAKLSAvLyBJbnZlcnQgbGlnaHRuZXNzIChpbiBIU0wgc3BhY2UpLgotQEAg LTI3MiwxMCArMjc2LDEwIEBAIFRFU1RfRihHcmFwaGljc0NvbnRleHRIaWdoQ29uc3RyYXN0VGVz dCwgTUFZQkVfSW52ZXJ0TGlnaHRuZXNzKSB7Ci0gCi0gICBEcmF3Q29sb3JzVG9Db250ZXh0KCk7 Ci0gCi0tICBFWFBFQ1RfRVEoMHhmZmZmZmZmZiwgKmJpdG1hcF8uZ2V0QWRkcjMyKDAsIDApKTsK LS0gIEVYUEVDVF9FUSgweGZmMDAwMDAwLCAqYml0bWFwXy5nZXRBZGRyMzIoMSwgMCkpOwotLSAg RVhQRUNUX0VRKDB4ZmZmZjAwMDAsICpiaXRtYXBfLmdldEFkZHIzMigyLCAwKSk7Ci0tICBFWFBF Q1RfRVEoMHhmZmRkZGRkZCwgKmJpdG1hcF8uZ2V0QWRkcjMyKDMsIDApKTsKLSsgIEVYUEVDVF9F UShQYWNrQVJHQjMyKDB4ZmZmZmZmZmYpLCAqYml0bWFwXy5nZXRBZGRyMzIoMCwgMCkpOwotKyAg RVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZjAwMDAwMCksICpiaXRtYXBfLmdldEFkZHIzMigxLCAw KSk7Ci0rICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmZmYwMDAwKSwgKmJpdG1hcF8uZ2V0QWRk cjMyKDIsIDApKTsKLSsgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmZkZGRkZGQpLCAqYml0bWFw Xy5nZXRBZGRyMzIoMywgMCkpOwotIH0KLSAKLSAvLyBJbnZlcnQgbGlnaHRuZXNzIHBsdXMgZ3Jh eXNjYWxlLgotQEAgLTI4OCwxMCArMjkyLDEwIEBAIFRFU1RfRihHcmFwaGljc0NvbnRleHRIaWdo Q29uc3RyYXN0VGVzdCwgSW52ZXJ0TGlnaHRuZXNzUGx1c0dyYXlzY2FsZSkgewotIAotICAgRHJh d0NvbG9yc1RvQ29udGV4dCgpOwotIAotLSAgRVhQRUNUX0VRKDB4ZmZmZmZmZmYsICpiaXRtYXBf LmdldEFkZHIzMigwLCAwKSk7Ci0tICBFWFBFQ1RfRVEoMHhmZjAwMDAwMCwgKmJpdG1hcF8uZ2V0 QWRkcjMyKDEsIDApKTsKLS0gIEVYUEVDVF9FUSgweGZmZTJlMmUyLCAqYml0bWFwXy5nZXRBZGRy MzIoMiwgMCkpOwotLSAgRVhQRUNUX0VRKDB4ZmZkZGRkZGQsICpiaXRtYXBfLmdldEFkZHIzMigz LCAwKSk7Ci0rICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmZmZmZmZmKSwgKmJpdG1hcF8uZ2V0 QWRkcjMyKDAsIDApKTsKLSsgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmYwMDAwMDApLCAqYml0 bWFwXy5nZXRBZGRyMzIoMSwgMCkpOwotKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZmUyZTJl MiksICpiaXRtYXBfLmdldEFkZHIzMigyLCAwKSk7Ci0rICBFWFBFQ1RfRVEoUGFja0FSR0IzMigw eGZmZGRkZGRkKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDMsIDApKTsKLSB9Ci0gCi0gLy8gVE9ETyhj cmJ1Zy5jb20vODUwNzgyKTogUmVlbmFibGUgdGhpcy4KLUBAIC0zMDksMTAgKzMxMywxMCBAQCBU RVNUX0YoR3JhcGhpY3NDb250ZXh0SGlnaENvbnN0cmFzdFRlc3QsIE1BWUJFX0ludmVydExpZ2h0 bmVzc1BsdXNDb250cmFzdCkgewotIAotICAgRHJhd0NvbG9yc1RvQ29udGV4dCgpOwotIAotLSAg RVhQRUNUX0VRKDB4ZmZmZmZmZmYsICpiaXRtYXBfLmdldEFkZHIzMigwLCAwKSk7Ci0tICBFWFBF Q1RfRVEoMHhmZjAwMDAwMCwgKmJpdG1hcF8uZ2V0QWRkcjMyKDEsIDApKTsKLS0gIEVYUEVDVF9F USgweGZmZmYwMDAwLCAqYml0bWFwXy5nZXRBZGRyMzIoMiwgMCkpOwotLSAgRVhQRUNUX0VRKDB4 ZmZlZWVlZWUsICpiaXRtYXBfLmdldEFkZHIzMigzLCAwKSk7Ci0rICBFWFBFQ1RfRVEoUGFja0FS R0IzMigweGZmZmZmZmZmKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDAsIDApKTsKLSsgIEVYUEVDVF9F UShQYWNrQVJHQjMyKDB4ZmYwMDAwMDApLCAqYml0bWFwXy5nZXRBZGRyMzIoMSwgMCkpOwotKyAg RVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZmZmMDAwMCksICpiaXRtYXBfLmdldEFkZHIzMigyLCAw KSk7Ci0rICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmZWVlZWVlKSwgKmJpdG1hcF8uZ2V0QWRk cjMyKDMsIDApKTsKLSB9Ci0gCi0gfSAgLy8gbmFtZXNwYWNlIGJsaW5rCi0tLS0gcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRm b3JtL2dyYXBoaWNzL2hpZ2hjb250cmFzdC9oaWdoY29udHJhc3RfY2xhc3NpZmllci5jYwotKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5k ZXJlci9wbGF0Zm9ybS9ncmFwaGljcy9oaWdoY29udHJhc3QvaGlnaGNvbnRyYXN0X2NsYXNzaWZp ZXIuY2MKLUBAIC0xMDYwLDU1ICsxMDYwLDQ3IEBAIHZvaWQgRGVxdWFudGl6ZU1pbkZpcnN0KGNv bnN0IGludDMyX3QgcmFuaywKLSAKLSAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIC8vIENPTlNU QU5UUwotLS8vIE5vdGUgdGhhdCBmb3Igbm93LCBlbmRpYW5uZXNzIG9mIHRoZSB0YXJnZXQgbWFj aGluZSBuZWVkcyB0byBtYXRjaCB0aGF0IG9mCi0tLy8gdGhlIG9uZSB0cmFpbmluZyB3YXMgcGVy Zm9ybWVkIG9uLgotIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gY29uc3QgaW50MzJfdCBkbm5f aGlkZGVubGF5ZXJfMF93ZWlnaHRzX3BhcnRfMF9zaGFwZVsyXSA9IHs0LCAxMH07Ci0gY29uc3Qg dW5pb24gewotLSAgdWludDhfdCBieXRlc1sxNjBdOwotICAgZmxvYXQgdmFsdWVzWzQwXTsKLSB9 IGRubl9oaWRkZW5sYXllcl8wX3dlaWdodHNfcGFydF8wID0ge3sKLS0gICAgMHhiYywgMHgyMiwg MHgwYSwgMHhiZiwgMHhiNCwgMHg0NiwgMHg4YywgMHgzZiwgMHhiYSwgMHgzMSwgMHgzNCwgMHhi ZSwKLS0gICAgMHg0YywgMHg2NSwgMHhkYiwgMHhiZSwgMHhmMCwgMHg1NCwgMHg1ZSwgMHhiZSwg MHhjMSwgMHg1ZCwgMHhiMywgMHgzZiwKLS0gICAgMHhmNCwgMHhlNiwgMHgxNSwgMHhiZiwgMHgw NSwgMHhjNiwgMHgzNCwgMHhiZiwgMHhjMCwgMHgzNywgMHg3ZSwgMHhiZCwKLS0gICAgMHg2Yywg MHgzNSwgMHgwYiwgMHhiZiwgMHhjYSwgMHg1MywgMHgyNiwgMHhiZiwgMHg1OCwgMHhiNCwgMHg4 NywgMHgzZiwKLS0gICAgMHgzNywgMHhlZSwgMHgzOSwgMHhiZiwgMHhkYSwgMHhmYSwgMHhmOSwg MHhiZSwgMHg5NywgMHhjMSwgMHgwNiwgMHhiZiwKLS0gICAgMHhmOSwgMHg0ZSwgMHg4MSwgMHgz ZiwgMHhiMiwgMHg0NCwgMHg4NSwgMHhiZiwgMHg3ZiwgMHg5OCwgMHg3YywgMHgzZCwKLS0gICAg MHgxNSwgMHgyNiwgMHhiYywgMHhiZSwgMHg1YywgMHg0OCwgMHgwNSwgMHgzZiwgMHhjOCwgMHhh YSwgMHhhMSwgMHhiZCwKLS0gICAgMHgzNSwgMHhiMywgMHg0MywgMHhiZSwgMHhlYiwgMHg0Niwg MHg5MSwgMHgzZiwgMHg4MCwgMHg3MSwgMHhlMywgMHgzYywKLS0gICAgMHhkMSwgMHg5OCwgMHg3 OSwgMHgzZiwgMHgzYywgMHhkMCwgMHgwZCwgMHhiZiwgMHgxZSwgMHgwMiwgMHhkMywgMHgzZSwK LS0gICAgMHg1ZCwgMHg0YiwgMHhhMiwgMHhiZiwgMHg2OCwgMHhhYywgMHhhYSwgMHhiZCwgMHhm OCwgMHhlMSwgMHg3NSwgMHgzZSwKLS0gICAgMHg0YSwgMHg5YywgMHgyNywgMHhiZSwgMHhmOCwg MHhhZSwgMHhiMiwgMHhiZSwgMHg3ZiwgMHg5ZCwgMHg5MSwgMHgzZiwKLS0gICAgMHgxZSwgMHg4 YiwgMHhhOCwgMHhiZSwgMHgzNSwgMHg3ZSwgMHhiMiwgMHgzZiwgMHhiZSwgMHg4YywgMHhkMywg MHhiZSwKLS0gICAgMHhmOSwgMHhjZCwgMHhiNSwgMHgzZiwgMHhhMSwgMHg1MCwgMHhhYSwgMHgz ZiwgMHhlNCwgMHg2ZCwgMHhkZCwgMHhiZSwKLS0gICAgMHgwZCwgMHhjZSwgMHhkMywgMHhiZSwK LSsgICAgIC0wLjUzOTU5MjUwNDUwMTM0MywgICAxLjA5NTkwNzY4ODE0MDg3LCAtMC4xNzU5NzA5 NDE3ODE5OTgsIC0wLjQyODUwNzIwODgyNDE1OCwKLSsgICAgIC0wLjIxNzEyMDg4NTg0ODk5OSwg ICAxLjQwMTI5ODY0MjE1ODUxLCAgIC0wLjU4NTU1NTMxNTAxNzcsIC0wLjcwNjE0NjUzODI1NzU5 OSwKLSsgICAgLTAuMDYyMDY0ODg2MDkzMTM5NiwgLTAuNTQzNzgzOTAzMTIxOTQ4LCAtMC42NDk3 MTYwMTk2MzA0MzIsICAgMS4wNjAxOTExNTQ0Nzk5OCwKLSsgICAgIC0wLjcyNjI5MTEyMDA1MjMz OCwgLTAuNDg4MjQxOTcwNTM5MDkzLCAtMC41MjYzOTE0NDY1OTA0MjQsICAgMS4wMTAyMjI1NTQy MDY4NSwKLSsgICAgICAtMS4wNDExNTg5MTQ1NjYwNCwgMC4wNjE2Njg4NjkxMDc5NjE3LCAtMC4z Njc0NzgwNDI4NDA5NTgsICAwLjUyMDYzNTM2NjQzOTgxOSwKLSsgICAgLTAuMDc4OTM5MDIwNjMz Njk3NSwgIC0wLjE5MTExMzMwODA3MjA5LCAgIDEuMTM0OTc2NzQ0NjUxNzksIDAuMDI3NzY0MDgx OTU0OTU2MSwKLSsgICAgICAwLjk3NDk4ODA0MzMwODI1OCwgLTAuNTUzOTU4NjU0NDAzNjg3LCAg MC40MTIxMjU1Mjc4NTg3MzQsICAgLTEuMjY3OTI0OTA0ODIzMywKLSsgICAgLTAuMDgzMzM2NjUx MzI1MjI1OCwgIDAuMjQwMTE5ODE0ODcyNzQyLCAtMC4xNjM2ODIxMzI5NTkzNjYsICAtMC4zNDg5 OTExNTU2MjQzOSwKLSsgICAgICAgIDEuMTM3NjE4ODk5MzQ1NCwgLTAuMzI5MTg2Mzc5OTA5NTE1 LCAgICAxLjM5NDQ3NjUzMjkzNjEsIC0wLjQxMzE4MzE1MjY3NTYyOSwKLSsgICAgICAgMS40MjAz NDgyODY2Mjg3MiwgICAxLjMzMDU4NTU5ODk0NTYyLCAtMC40MzI0NzkwMjM5MzM0MTEsIC0wLjQx MzY4MTQxNzcwMzYyOQotIH19OwotIGNvbnN0IGludDMyX3QgZG5uX2hpZGRlbmxheWVyXzBfYmlh c2VzX3BhcnRfMF9zaGFwZVsxXSA9IHsxMH07Ci0gY29uc3QgdW5pb24gewotLSAgdWludDhfdCBi eXRlc1s0MF07Ci0gICBmbG9hdCB2YWx1ZXNbMTBdOwotIH0gZG5uX2hpZGRlbmxheWVyXzBfYmlh c2VzX3BhcnRfMCA9IHt7Ci0tICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YmYsIDB4NmEs IDB4NTMsIDB4M2UsIDB4ZDMsIDB4YzEsCi0tICAgIDB4ZDAsIDB4M2UsIDB4MDAsIDB4MDAsIDB4 MDAsIDB4MDAsIDB4YjYsIDB4ZDgsIDB4YzAsIDB4M2UsCi0tICAgIDB4Y2EsIDB4ZTcsIDB4MzUs IDB4M2UsIDB4MjMsIDB4YTUsIDB4NDQsIDB4M2YsIDB4NjEsIDB4ZmQsCi0tICAgIDB4ZDIsIDB4 M2UsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjYsIDB4ZTAsIDB4NDMsIDB4M2MsCi0rICAg ICAgICAgICAgICAgICAgICAwLjAsICAwLjIwNjQ2MTg5MTUzMTk0NCwKLSsgICAgICAwLjQwNzcy ODc2MTQzNDU1NSwgICAgICAgICAgICAgICAgMC4wLAotKyAgICAgIDAuMzc2NjUzMzczMjQxNDI1 LCAgMC4xNzc2NDIwMTc2MDI5MjEsCi0rICAgICAgIDAuNzY4MTQ0Nzg2MzU3ODgsICAwLjQxMjA4 OTM3NzY0MTY3OCwKLSsgICAgICAgICAgICAgICAgICAgIDAuMCwgMC4wMTE5NTU0MzA3MzExNzcz Ci0gfX07Ci0gY29uc3QgaW50MzJfdCBkbm5fbG9naXRzX2JpYXNlc19wYXJ0XzBfc2hhcGVbMV0g PSB7MX07Ci0gY29uc3QgdW5pb24gewotLSAgdWludDhfdCBieXRlc1s0XTsKLSAgIGZsb2F0IHZh bHVlc1sxXTsKLSB9IGRubl9sb2dpdHNfYmlhc2VzX3BhcnRfMCA9IHt7Ci0tICAgIDB4NzUsIDB4 Y2EsIDB4ZDcsIDB4YmUsCi0rICAgIC0wLjQyMTQ2NjQ5OTU2NzAzMgotIH19OwotIGNvbnN0IGlu dDMyX3QgZG5uX2xvZ2l0c193ZWlnaHRzX3BhcnRfMF9zaGFwZVsyXSA9IHsxMCwgMX07Ci0gY29u c3QgdW5pb24gewotLSAgdWludDhfdCBieXRlc1s0MF07Ci0gICBmbG9hdCB2YWx1ZXNbMTBdOwot IH0gZG5uX2xvZ2l0c193ZWlnaHRzX3BhcnRfMCA9IHt7Ci0tICAgIDB4MTMsIDB4MTIsIDB4Mzks IDB4M2YsIDB4ZjMsIDB4YTUsIDB4YzIsIDB4YmYsIDB4ODEsIDB4N2YsCi0tICAgIDB4YmUsIDB4 M2YsIDB4ZjgsIDB4MTcsIDB4MjYsIDB4M2UsIDB4YTQsIDB4MTksIDB4YTYsIDB4M2YsCi0tICAg IDB4ZjAsIDB4YzksIDB4YjcsIDB4YmYsIDB4NmEsIDB4OTksIDB4ZDIsIDB4M2YsIDB4OGEsIDB4 N2QsCi0tICAgIDB4ZTksIDB4M2YsIDB4ODMsIDB4OWEsIDB4M2EsIDB4YmYsIDB4ZjEsIDB4NmMs IDB4MDgsIDB4M2UsCi0rICAgICAgMC43MjI5MzIwNDA2OTEzNzYsICAtMS41MjA2ODkzNjgyNDc5 OSwKLSsgICAgICAgMS40ODgyNjYxMTA0MjAyMywgIDAuMTYyMjAwODA4NTI1MDg1LAotKyAgICAg ICAxLjI5NzY1NzQ4OTc3NjYxLCAgLTEuNDM1ODUwMTQzNDMyNjIsCi0rICAgICAgIDEuNjQ1MzA2 ODI1NjM3ODIsICAgMS44MjQxNDM2NDgxNDc1OCwKLSsgICAgIC0wLjcyODkyMDE2MTcyNDA5MSwg IDAuMTMzMjI4MDc4NDg0NTM1Ci0gfX07Ci0gCi0gfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQot LS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9y ZW5kZXJlci9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvYm1wX2ltYWdlX3JlYWRlci5oCi0r KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JsaW5rL3Jl bmRlcmVyL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9ibXBfaW1hZ2VfcmVhZGVyLmgKLUBA IC0zNyw2ICszNyw3IEBACi0gI2luY2x1ZGUgInRoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3Bs YXRmb3JtL3d0Zi9hbGxvY2F0b3IuaCIKLSAjaW5jbHVkZSAidGhpcmRfcGFydHkvYmxpbmsvcmVu ZGVyZXIvcGxhdGZvcm0vd3RmL2NwdS5oIgotICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9ibGluay9y ZW5kZXJlci9wbGF0Zm9ybS93dGYvbm9uY29weWFibGUuaCIKLSsjaW5jbHVkZSAiYmFzZS9zeXNf Ynl0ZW9yZGVyLmgiCi0gCi0gbmFtZXNwYWNlIGJsaW5rIHsKLSAKLUBAIC01MCwxMSArNTEsMTEg QEAgY2xhc3MgUExBVEZPUk1fRVhQT1JUIEJNUEltYWdlUmVhZGVyIGZpbmFsIHsKLSAgIC8vIFJl YWQgYSB2YWx1ZSBmcm9tIHxidWZmZXJ8LCBjb252ZXJ0aW5nIHRvIGFuIGludCBhc3N1bWluZyBs aXR0bGUKLSAgIC8vIGVuZGlhbm5lc3MKLSAgIHN0YXRpYyBpbmxpbmUgdWludDE2X3QgUmVhZFVp bnQxNihjb25zdCBjaGFyKiBidWZmZXIpIHsKLS0gICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0 PGNvbnN0IHVpbnQxNl90Kj4oYnVmZmVyKTsKLSsgICAgcmV0dXJuIGJhc2U6OkJ5dGVTd2FwVG9M RTE2KCpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90Kj4oYnVmZmVyKSk7Ci0gICB9Ci0g Ci0gICBzdGF0aWMgaW5saW5lIHVpbnQzMl90IFJlYWRVaW50MzIoY29uc3QgY2hhciogYnVmZmVy KSB7Ci0tICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGJ1ZmZl cik7Ci0rICAgIHJldHVybiBiYXNlOjpCeXRlU3dhcFRvTEUzMigqcmVpbnRlcnByZXRfY2FzdDxj b25zdCB1aW50MzJfdCo+KGJ1ZmZlcikpOwotICAgfQotIAotICAgLy8gfHBhcmVudHwgaXMgdGhl IGRlY29kZXIgdGhhdCBvd25zIHVzLgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9q cGVnL2pwZWdfaW1hZ2VfZGVjb2Rlci5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy cy9qcGVnL2pwZWdfaW1hZ2VfZGVjb2Rlci5jYwotQEAgLTQ5LDIzICs0OSwzMCBAQCBleHRlcm4g IkMiIHsKLSAjaW5jbHVkZSA8c2V0am1wLmg+Ci0gfQotIAotLSNpZiBkZWZpbmVkKEFSQ0hfQ1BV X0JJR19FTkRJQU4pCi0tI2Vycm9yIEJsaW5rIGFzc3VtZXMgYSBsaXR0bGUtZW5kaWFuIHRhcmdl dC4KLS0jZW5kaWYKLS0KLSAjaWYgZGVmaW5lZChKQ1NfQUxQSEFfRVhURU5TSU9OUykKLSAjZGVm aW5lIFRVUkJPX0pQRUdfUkdCX1NXSVpaTEUKLS0jaWYgU0tfQjMyX1NISUZUICAvLyBPdXRwdXQg bGl0dGxlLWVuZGlhbiBSR0JBIHBpeGVscyAoQW5kcm9pZCkuCi0rI2lmIFNLX1BNQ09MT1JfQllU RV9PUkRFUihSLCBHLCBCLCBBKQotIGlubGluZSBKX0NPTE9SX1NQQUNFIHJnYk91dHB1dENvbG9y U3BhY2UoKSB7Ci0gICByZXR1cm4gSkNTX0VYVF9SR0JBOwotIH0KLS0jZWxzZSAgLy8gT3V0cHV0 IGxpdHRsZS1lbmRpYW4gQkdSQSBwaXhlbHMuCi0rI2VsaWYgU0tfUE1DT0xPUl9CWVRFX09SREVS KEIsIEcsIFIsIEEpCi0gaW5saW5lIEpfQ09MT1JfU1BBQ0UgcmdiT3V0cHV0Q29sb3JTcGFjZSgp IHsKLSAgIHJldHVybiBKQ1NfRVhUX0JHUkE7Ci0gfQotKyNlbGlmIFNLX1BNQ09MT1JfQllURV9P UkRFUihBLCBSLCBHLCBCKQotK2lubGluZSBKX0NPTE9SX1NQQUNFIHJnYk91dHB1dENvbG9yU3Bh Y2UoKSB7Ci0rICByZXR1cm4gSkNTX0VYVF9BUkdCOwotK30KLSsjZWxpZiBTS19QTUNPTE9SX0JZ VEVfT1JERVIoQSwgQiwgRywgUikKLStpbmxpbmUgSl9DT0xPUl9TUEFDRSByZ2JPdXRwdXRDb2xv clNwYWNlKCkgewotKyAgcmV0dXJuIEpDU19FWFRfQUJHUjsKLSt9Ci0rI2Vsc2UKLSsjZXJyb3Ig Q29tcG9uZW50IG9yZGVyIG5vdCBzdXBwb3J0ZWQgYnkgbGlianBlZ190dXJibwotICNlbmRpZgot IGlubGluZSBib29sIHR1cmJvU3dpenpsZWQoSl9DT0xPUl9TUEFDRSBjb2xvclNwYWNlKSB7Ci0t ICByZXR1cm4gY29sb3JTcGFjZSA9PSBKQ1NfRVhUX1JHQkEgfHwgY29sb3JTcGFjZSA9PSBKQ1Nf RVhUX0JHUkE7Ci0rICByZXR1cm4gY29sb3JTcGFjZSA9PSBKQ1NfRVhUX1JHQkEgfHwgY29sb3JT cGFjZSA9PSBKQ1NfRVhUX0JHUkEgfHwKLSsgICAgY29sb3JTcGFjZSA9PSBKQ1NfRVhUX0FCR1Ig fHwgY29sb3JTcGFjZSA9PSBKQ1NfRVhUX0FSR0I7Ci0gfQotICNlbHNlCi0gaW5saW5lIEpfQ09M T1JfU1BBQ0UgcmdiT3V0cHV0Q29sb3JTcGFjZSgpIHsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vaW1hZ2Ut ZGVjb2RlcnMvd2VicC93ZWJwX2ltYWdlX2RlY29kZXIuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vaW1h Z2UtZGVjb2RlcnMvd2VicC93ZWJwX2ltYWdlX2RlY29kZXIuY2MKLUBAIC0zMiwxOCArMzIsMjAg QEAKLSAjaW5jbHVkZSAidGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vaGlzdG9n cmFtLmgiCi0gI2luY2x1ZGUgInRoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrRGF0YS5o IgotIAotLSNpZiBkZWZpbmVkKEFSQ0hfQ1BVX0JJR19FTkRJQU4pCi0tI2Vycm9yIEJsaW5rIGFz c3VtZXMgYSBsaXR0bGUtZW5kaWFuIHRhcmdldC4KLS0jZW5kaWYKLS0KLS0jaWYgU0tfQjMyX1NI SUZUICAvLyBPdXRwdXQgbGl0dGxlLWVuZGlhbiBSR0JBIHBpeGVscyAoQW5kcm9pZCkuCi0rI2lm IFNLX1BNQ09MT1JfQllURV9PUkRFUihSLCBHLCBCLCBBKQotIGlubGluZSBXRUJQX0NTUF9NT0RF IG91dHB1dE1vZGUoYm9vbCBoYXNBbHBoYSkgewotICAgcmV0dXJuIGhhc0FscGhhID8gTU9ERV9y Z2JBIDogTU9ERV9SR0JBOwotIH0KLS0jZWxzZSAgLy8gT3V0cHV0IGxpdHRsZS1lbmRpYW4gQkdS QSBwaXhlbHMuCi0rI2VsaWYgU0tfUE1DT0xPUl9CWVRFX09SREVSKEIsIEcsIFIsIEEpCi0gaW5s aW5lIFdFQlBfQ1NQX01PREUgb3V0cHV0TW9kZShib29sIGhhc0FscGhhKSB7Ci0gICByZXR1cm4g aGFzQWxwaGEgPyBNT0RFX2JnckEgOiBNT0RFX0JHUkE7Ci0gfQotKyNlbGlmIFNLX1BNQ09MT1Jf QllURV9PUkRFUihBLCBSLCBHLCBCKQotK2lubGluZSBXRUJQX0NTUF9NT0RFIG91dHB1dE1vZGUo Ym9vbCBoYXNBbHBoYSkgewotKyAgcmV0dXJuIGhhc0FscGhhID8gTU9ERV9BcmdiIDogTU9ERV9B UkdCOwotK30KLSsjZWxzZQotKyNlcnJvciBDb21wb25lbnQgb3JkZXIgbm90IHN1cHBvcnRlZCBi eSBsaWJ3ZWJwCi0gI2VuZGlmCi0gCi0gbmFtZXNwYWNlIHsKLS0tLSBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vYXNuMS9h X2ludC5jCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2FzbjEvYV9pbnQuYwotQEAgLTM2OSw3ICszNjksOSBAQCBp bnQgQVNOMV9JTlRFR0VSX3NldF91aW50NjQoQVNOMV9JTlRFR0VSICpvdXQsIHVpbnQ2NF90IHYp Ci0gCi0gICAgIE9QRU5TU0xfZnJlZShvdXQtPmRhdGEpOwotICAgICBvdXQtPmRhdGEgPSBuZXdk YXRhOwotKyNpZm5kZWYgT1BFTlNTTF9CSUdFTkRJQU4KLSAgICAgdiA9IENSWVBUT19ic3dhcDgo dik7Ci0rI2VuZGlmCi0gICAgIG1lbWNweShvdXQtPmRhdGEsICZ2LCBzaXplb2YodikpOwotIAot ICAgICBvdXQtPnR5cGUgPSBWX0FTTjFfSU5URUdFUjsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vY2hhY2hhL2No YWNoYS5jCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2NoYWNoYS9jaGFjaGEuYwotQEAgLTI5LDYgKzI5LDE0IEBA Ci0gICAoKCh1aW50MzJfdCkoKHApWzBdKSkgfCAoKHVpbnQzMl90KSgocClbMV0pIDw8IDgpIHwg XAotICAgICgodWludDMyX3QpKChwKVsyXSkgPDwgMTYpIHwgKCh1aW50MzJfdCkoKHApWzNdKSA8 PCAyNCkpCi0gCi0rI2RlZmluZSBVMzJUTzhfTElUVExFKHAsIHYpICAgIFwKLSsgIHsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAocClbMF0gPSAodiA+PiAwKSAmIDB4ZmY7ICBc Ci0rICAgIChwKVsxXSA9ICh2ID4+IDgpICYgMHhmZjsgIFwKLSsgICAgKHApWzJdID0gKHYgPj4g MTYpICYgMHhmZjsgXAotKyAgICAocClbM10gPSAodiA+PiAyNCkgJiAweGZmOyBcCi0rICB9Ci0r Ci0gLy8gc2lnbWEgY29udGFpbnMgdGhlIENoYUNoYSBjb25zdGFudHMsIHdoaWNoIGhhcHBlbiB0 byBiZSBhbiBBU0NJSSBzdHJpbmcuCi0gc3RhdGljIGNvbnN0IHVpbnQ4X3Qgc2lnbWFbMTZdID0g eyAnZScsICd4JywgJ3AnLCAnYScsICduJywgJ2QnLCAnICcsICczJywKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICcyJywgJy0nLCAnYicsICd5JywgJ3QnLCAnZScsICcgJywg J2snIH07Ci1AQCAtNDUsOSArNTMsMjcgQEAgc3RhdGljIGNvbnN0IHVpbnQ4X3Qgc2lnbWFbMTZd ID0geyAnZScsICd4JywgJ3AnLCAnYScsICduJywgJ2QnLCAnICcsICczJywKLSB2b2lkIENSWVBU T19oY2hhY2hhMjAodWludDhfdCBvdXRbMzJdLCBjb25zdCB1aW50OF90IGtleVszMl0sCi0gICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3Qgbm9uY2VbMTZdKSB7Ci0gICB1aW50MzJf dCB4WzE2XTsKLS0gIE9QRU5TU0xfbWVtY3B5KHgsIHNpZ21hLCBzaXplb2Yoc2lnbWEpKTsKLS0g IE9QRU5TU0xfbWVtY3B5KCZ4WzRdLCBrZXksIDMyKTsKLS0gIE9QRU5TU0xfbWVtY3B5KCZ4WzEy XSwgbm9uY2UsIDE2KTsKLSsgIGludCBpOwotKwotKyAgeFswXSA9IFU4VE8zMl9MSVRUTEUoc2ln bWEgKyAwKTsKLSsgIHhbMV0gPSBVOFRPMzJfTElUVExFKHNpZ21hICsgNCk7Ci0rICB4WzJdID0g VThUTzMyX0xJVFRMRShzaWdtYSArIDgpOwotKyAgeFszXSA9IFU4VE8zMl9MSVRUTEUoc2lnbWEg KyAxMik7Ci0rCi0rICB4WzRdID0gVThUTzMyX0xJVFRMRShrZXkgKyAwKTsKLSsgIHhbNV0gPSBV OFRPMzJfTElUVExFKGtleSArIDQpOwotKyAgeFs2XSA9IFU4VE8zMl9MSVRUTEUoa2V5ICsgOCk7 Ci0rICB4WzddID0gVThUTzMyX0xJVFRMRShrZXkgKyAxMik7Ci0rCi0rICB4WzhdID0gVThUTzMy X0xJVFRMRShrZXkgKyAxNik7Ci0rICB4WzldID0gVThUTzMyX0xJVFRMRShrZXkgKyAyMCk7Ci0r ICB4WzEwXSA9IFU4VE8zMl9MSVRUTEUoa2V5ICsgMjQpOwotKyAgeFsxMV0gPSBVOFRPMzJfTElU VExFKGtleSArIDI4KTsKLSsKLSsgIHhbMTJdID0gVThUTzMyX0xJVFRMRShub25jZSArIDApOwot KyAgeFsxM10gPSBVOFRPMzJfTElUVExFKG5vbmNlICsgNCk7Ci0rICB4WzE0XSA9IFU4VE8zMl9M SVRUTEUobm9uY2UgKyA4KTsKLSsgIHhbMTVdID0gVThUTzMyX0xJVFRMRShub25jZSArIDEyKTsK LSAKLSAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMjA7IGkgKz0gMikgewotICAgICBRVUFSVEVS Uk9VTkQoMCwgNCwgOCwgMTIpCi1AQCAtNjAsOCArODYsMTAgQEAgdm9pZCBDUllQVE9faGNoYWNo YTIwKHVpbnQ4X3Qgb3V0WzMyXSwgY29uc3QgdWludDhfdCBrZXlbMzJdLAotICAgICBRVUFSVEVS Uk9VTkQoMywgNCwgOSwgMTQpCi0gICB9Ci0gCi0tICBPUEVOU1NMX21lbWNweShvdXQsICZ4WzBd LCBzaXplb2YodWludDMyX3QpICogNCk7Ci0tICBPUEVOU1NMX21lbWNweSgmb3V0WzE2XSwgJnhb MTJdLCBzaXplb2YodWludDMyX3QpICogNCk7Ci0rICBmb3IgKGkgPSAwOyBpIDwgNDsgKytpKSB7 Ci0rICAgIFUzMlRPOF9MSVRUTEUob3V0ICsgNCAqIGksIHhbaV0pOwotKyAgICBVMzJUTzhfTElU VExFKCZvdXRbMTZdICsgNCAqIGksIHhbMTIraV0pOwotKyAgfQotIH0KLSAKLSAjaWYgIWRlZmlu ZWQoT1BFTlNTTF9OT19BU00pICYmICAgICAgICAgICAgICAgICAgICAgICAgIFwKLUBAIC0xMDUs MTQgKzEzMyw2IEBAIHZvaWQgQ1JZUFRPX2NoYWNoYV8yMCh1aW50OF90ICpvdXQsIGNvbnN0IHVp bnQ4X3QgKmluLCBzaXplX3QgaW5fbGVuLAotIAotICNlbHNlCi0gCi0tI2RlZmluZSBVMzJUTzhf TElUVExFKHAsIHYpICAgIFwKLS0gIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAg ICAocClbMF0gPSAodiA+PiAwKSAmIDB4ZmY7ICBcCi0tICAgIChwKVsxXSA9ICh2ID4+IDgpICYg MHhmZjsgIFwKLS0gICAgKHApWzJdID0gKHYgPj4gMTYpICYgMHhmZjsgXAotLSAgICAocClbM10g PSAodiA+PiAyNCkgJiAweGZmOyBcCi0tICB9Ci0tCi0gLy8gY2hhY2hhX2NvcmUgcGVyZm9ybXMg MjAgcm91bmRzIG9mIENoYUNoYSBvbiB0aGUgaW5wdXQgd29yZHMgaW4KLSAvLyB8aW5wdXR8IGFu ZCB3cml0ZXMgdGhlIDY0IG91dHB1dCBieXRlcyB0byB8b3V0cHV0fC4KLSBzdGF0aWMgdm9pZCBj aGFjaGFfY29yZSh1aW50OF90IG91dHB1dFs2NF0sIGNvbnN0IHVpbnQzMl90IGlucHV0WzE2XSkg ewotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jp bmdzc2wvc3JjL2NyeXB0by9jaXBoZXJfZXh0cmEvZV9hZXNnY21zaXYuYwotKysrIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0 by9jaXBoZXJfZXh0cmEvZV9hZXNnY21zaXYuYwotQEAgLTYyNSw3ICs2MjUsMTEgQEAgc3RhdGlj IHZvaWQgZ2NtX3Npdl9jcnlwdCh1aW50OF90ICpvdXQsIGNvbnN0IHVpbnQ4X3QgKmluLCBzaXpl X3QgaW5fbGVuLAotICAgZm9yIChzaXplX3QgZG9uZSA9IDA7IGRvbmUgPCBpbl9sZW47KSB7Ci0g ICAgIHVpbnQ4X3Qga2V5c3RyZWFtW0FFU19CTE9DS19TSVpFXTsKLSAgICAgZW5jX2Jsb2NrKGNv dW50ZXIuYywga2V5c3RyZWFtLCBrZXkpOwotKyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgotKyAg ICBjb3VudGVyLndbMF0gPSBDUllQVE9fYnN3YXA0KENSWVBUT19ic3dhcDQoY291bnRlci53WzBd KSArIDEpOwotKyNlbHNlCi0gICAgIGNvdW50ZXIud1swXSsrOwotKyNlbmRpZgotIAotICAgICBz aXplX3QgdG9kbyA9IEFFU19CTE9DS19TSVpFOwotICAgICBpZiAoaW5fbGVuIC0gZG9uZSA8IHRv ZG8pIHsKLUBAIC02NzMsOCArNjc3LDEzIEBAIHN0YXRpYyB2b2lkIGdjbV9zaXZfcG9seXZhbCgK LSAgICAgfSBiaXRsZW5zOwotICAgfSBsZW5ndGhfYmxvY2s7Ci0gCi0rI2lmZGVmIE9QRU5TU0xf QklHRU5ESUFOCi0rICBsZW5ndGhfYmxvY2suYml0bGVucy5hZCA9IENSWVBUT19ic3dhcDgoYWRf bGVuICogOCk7Ci0rICBsZW5ndGhfYmxvY2suYml0bGVucy5pbiA9IENSWVBUT19ic3dhcDgoaW5f bGVuICogOCk7Ci0rI2Vsc2UKLSAgIGxlbmd0aF9ibG9jay5iaXRsZW5zLmFkID0gYWRfbGVuICog ODsKLSAgIGxlbmd0aF9ibG9jay5iaXRsZW5zLmluID0gaW5fbGVuICogODsKLSsjZW5kaWYKLSAg IENSWVBUT19QT0xZVkFMX3VwZGF0ZV9ibG9ja3MoJnBvbHl2YWxfY3R4LCBsZW5ndGhfYmxvY2su YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGxlbmd0aF9ibG9jaykp OwotIAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9i b3Jpbmdzc2wvc3JjL2NyeXB0by9jb21waWxlcl90ZXN0LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2NvbXBp bGVyX3Rlc3QuY2MKLUBAIC00MCw5ICs0MCwxMyBAQCBzdGF0aWMgdm9pZCBDaGVja1JlcHJlc2Vu dGF0aW9uKFQgdmFsdWUpIHsKLSAgIFVuc2lnbmVkVCB2YWx1ZV91ID0gc3RhdGljX2Nhc3Q8VW5z aWduZWRUPih2YWx1ZSk7Ci0gICBFWFBFQ1RfRVEoc2l6ZW9mKFVuc2lnbmVkVCksIHNpemVvZihU KSk7Ci0gCi0tICAvLyBJbnRlZ2VycyBtdXN0IGJlIGxpdHRsZS1lbmRpYW4uCi0rICAvLyBJbnRl Z2VycyBtdXN0IGJlIGVpdGhlciBiaWctZW5kaWFuIG9yIGxpdHRsZS1lbmRpYW4uCi0gICB1aW50 OF90IGV4cGVjdGVkW3NpemVvZihVbnNpZ25lZFQpXTsKLSsjaWZkZWYgT1BFTlNTTF9CSUdFTkRJ QU4KLSsgIGZvciAoc2l6ZV90IGkgPSBzaXplb2YoVW5zaWduZWRUKTsgaS0tID4gMDsgKSB7Ci0r I2Vsc2UKLSAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZW9mKFVuc2lnbmVkVCk7IGkrKykg ewotKyNlbmRpZgotICAgICBleHBlY3RlZFtpXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHZhbHVl X3UpOwotICAgICAvLyBEaXZpZGUgaW5zdGVhZCBvZiByaWdodC1zaGlmdCB0byBhcHBlYXNlIGNv bXBpbGVycyB0aGF0IHdhcm4gaWYgfFR8IGlzIGEKLSAgICAgLy8gY2hhci4gVGhlIGV4cGxpY2l0 IGNhc3QgaXMgYWxzbyBuZWVkZWQgdG8gYXBwZWFzZSBNU1ZDIGlmIGludGVnZXIKLS0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9j cnlwdG8vY3VydmUyNTUxOS9zcGFrZTI1NTE5LmMKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vY3VydmUyNTUxOS9z cGFrZTI1NTE5LmMKLUBAIC0zMzksOCArMzM5LDE3IEBAIHN0YXRpYyB2b2lkIHNjYWxhcl9kb3Vi bGUoc2NhbGFyICpzKSB7Ci0gICB1aW50MzJfdCBjYXJyeSA9IDA7Ci0gCi0gICBmb3IgKHNpemVf dCBpID0gMDsgaSA8IDg7IGkrKykgewotLSAgICBjb25zdCB1aW50MzJfdCBjYXJyeV9vdXQgPSBz LT53b3Jkc1tpXSA+PiAzMTsKLS0gICAgcy0+d29yZHNbaV0gPSAocy0+d29yZHNbaV0gPDwgMSkg fCBjYXJyeTsKLSsjaWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KLSsgICAgY29uc3QgdWludDMyX3Qg c2kgPSBDUllQVE9fYnN3YXA0KHMtPndvcmRzW2ldKTsKLSsjZWxzZQotKyAgICBjb25zdCB1aW50 MzJfdCBzaSA9IHMtPndvcmRzW2ldOwotKyNlbmRpZgotKyAgICBjb25zdCB1aW50MzJfdCBjYXJy eV9vdXQgPSBzaSA+PiAzMTsKLSsjaWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KLSsgICAgcy0+d29y ZHNbaV0gPSBDUllQVE9fYnN3YXA0KChzaSA8PCAxKSB8IGNhcnJ5KTsKLSsjZWxzZQotKyAgICBz LT53b3Jkc1tpXSA9IChzaSA8PCAxKSB8IGNhcnJ5OwotKyNlbmRpZgotICAgICBjYXJyeSA9IGNh cnJ5X291dDsKLSAgIH0KLSB9Ci1AQCAtMzUwLDggKzM1OSwxMyBAQCBzdGF0aWMgdm9pZCBzY2Fs YXJfYWRkKHNjYWxhciAqZGVzdCwgY29uc3Qgc2NhbGFyICpzcmMpIHsKLSAgIHVpbnQzMl90IGNh cnJ5ID0gMDsKLSAKLSAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgODsgaSsrKSB7Ci0rI2lmZGVm IE9QRU5TU0xfQklHRU5ESUFOCi0rICAgIHVpbnQ2NF90IHRtcCA9ICgodWludDY0X3QpQ1JZUFRP X2Jzd2FwNChkZXN0LT53b3Jkc1tpXSkgKyBDUllQVE9fYnN3YXA0KHNyYy0+d29yZHNbaV0pKSAr IGNhcnJ5OwotKyAgICBkZXN0LT53b3Jkc1tpXSA9IENSWVBUT19ic3dhcDQoKHVpbnQzMl90KXRt cCk7Ci0rI2Vsc2UKLSAgICAgdWludDY0X3QgdG1wID0gKCh1aW50NjRfdClkZXN0LT53b3Jkc1tp XSArIHNyYy0+d29yZHNbaV0pICsgY2Fycnk7Ci0gICAgIGRlc3QtPndvcmRzW2ldID0gKHVpbnQz Ml90KXRtcDsKLSsjZW5kaWYKLSAgICAgY2FycnkgPSAodWludDMyX3QpKHRtcCA+PiAzMik7Ci0g ICB9Ci0gfQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0 eS9ib3Jpbmdzc2wvc3JjL2NyeXB0by9ldnAvc2NyeXB0LmMKLSsrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vZXZwL3Nj cnlwdC5jCi1AQCAtMTk2LDEwICsxOTYsMjggQEAgaW50IEVWUF9QQkVfc2NyeXB0KGNvbnN0IGNo YXIgKnBhc3N3b3JkLCBzaXplX3QgcGFzc3dvcmRfbGVuLAotICAgICBnb3RvIGVycjsKLSAgIH0K LSAKLSsjaWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KLSsgIHVpbnQzMl90ICpCMzIgPSBCLT53b3Jk czsKLSsgIHNpemVfdCBCX3dvcmRzID0gQl9ieXRlcyA+PiAyOwotKyAgZG8gewotKyAgICAqQjMy ID0gQ1JZUFRPX2Jzd2FwNCgqQjMyKTsKLSsgICAgQjMyKys7Ci0rICB9IHdoaWxlKC0tQl93b3Jk cyk7Ci0rI2VuZGlmCi0rCi0gICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgcDsgaSsrKSB7Ci0g ICAgIHNjcnlwdFJPTWl4KEIgKyAyICogciAqIGksIHIsIE4sIFQsIFYpOwotICAgfQotIAotKyNp ZmRlZiBPUEVOU1NMX0JJR0VORElBTgotKyAgQjMyID0gQi0+d29yZHM7Ci0rICBCX3dvcmRzID0g Ql9ieXRlcyA+PiAyOwotKyAgZG8gewotKyAgICAqQjMyID0gQ1JZUFRPX2Jzd2FwNCgqQjMyKTsK LSsgICAgQjMyKys7Ci0rICB9IHdoaWxlKC0tQl93b3Jkcyk7Ci0rI2VuZGlmCi0rCi0gICBpZiAo IVBLQ1M1X1BCS0RGMl9ITUFDKHBhc3N3b3JkLCBwYXNzd29yZF9sZW4sIChjb25zdCB1aW50OF90 ICopQiwgQl9ieXRlcywgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRVZQX3NoYTI1Nigp LCBrZXlfbGVuLCBvdXRfa2V5KSkgewotICAgICBnb3RvIGVycjsKLS0tLSBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vZmlw c21vZHVsZS9ibi9ieXRlcy5jCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2ZpcHNtb2R1bGUvYm4vYnl0ZXMuYwot QEAgLTEzNiw5ICsxMzYsMTMgQEAgQklHTlVNICpCTl9sZTJibihjb25zdCB1aW50OF90ICppbiwg c2l6ZV90IGxlbiwgQklHTlVNICpyZXQpIHsKLSAgIC8vIE1ha2Ugc3VyZSB0aGUgdG9wIGJ5dGVz IHdpbGwgYmUgemVyb2VkLgotICAgcmV0LT5kW251bV93b3JkcyAtIDFdID0gMDsKLSAKLS0gIC8v IFdlIG9ubHkgc3VwcG9ydCBsaXR0bGUtZW5kaWFuIHBsYXRmb3Jtcywgc28gd2UgY2FuIHNpbXBs eSBtZW1jcHkgdGhlCi0tICAvLyBpbnRlcm5hbCByZXByZXNlbnRhdGlvbi4KLSsjaWZkZWYgT1BF TlNTTF9CSUdFTkRJQU4KLSsgIHVpbnQ4X3QgKm91dCA9ICh1aW50OF90ICopcmV0LT5kOwotKyAg Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW47IGkrKykKLSsgICAgb3V0W2kgXiAoQk5fQllURVMt MSldID0gaW5baV07Ci0rI2Vsc2UKLSAgIE9QRU5TU0xfbWVtY3B5KHJldC0+ZCwgaW4sIGxlbik7 Ci0rI2VuZGlmCi0gICByZXR1cm4gcmV0OwotIH0KLSAKLUBAIC0xNTcsNyArMTYxLDExIEBAIHNp emVfdCBCTl9ibjJiaW4oY29uc3QgQklHTlVNICppbiwgdWludDhfdCAqb3V0KSB7Ci0gc3RhdGlj IGludCBmaXRzX2luX2J5dGVzKGNvbnN0IHVpbnQ4X3QgKmJ5dGVzLCBzaXplX3QgbnVtX2J5dGVz LCBzaXplX3QgbGVuKSB7Ci0gICB1aW50OF90IG1hc2sgPSAwOwotICAgZm9yIChzaXplX3QgaSA9 IGxlbjsgaSA8IG51bV9ieXRlczsgaSsrKSB7Ci0rI2lmZGVmIE9QRU5TU0xfQklHRU5ESUFOCi0r ICAgIG1hc2sgfD0gYnl0ZXNbaSBeIChCTl9CWVRFUy0xKV07Ci0rI2Vsc2UKLSAgICAgbWFzayB8 PSBieXRlc1tpXTsKLSsjZW5kaWYKLSAgIH0KLSAgIHJldHVybiBtYXNrID09IDA7Ci0gfQotQEAg LTE3Miw5ICsxODAsMTMgQEAgaW50IEJOX2JuMmxlX3BhZGRlZCh1aW50OF90ICpvdXQsIHNpemVf dCBsZW4sIGNvbnN0IEJJR05VTSAqaW4pIHsKLSAgICAgbnVtX2J5dGVzID0gbGVuOwotICAgfQot IAotLSAgLy8gV2Ugb25seSBzdXBwb3J0IGxpdHRsZS1lbmRpYW4gcGxhdGZvcm1zLCBzbyB3ZSBj YW4gc2ltcGx5IG1lbWNweSBpbnRvIHRoZQotLSAgLy8gaW50ZXJuYWwgcmVwcmVzZW50YXRpb24u Ci0rI2lmZGVmIE9QRU5TU0xfQklHRU5ESUFOCi0rICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51 bV9ieXRlczsgaSsrKSB7Ci0rICAgIG91dFtpXSA9IGJ5dGVzW2kgXiAoQk5fQllURVMtMSldOwot KyAgfQotKyNlbHNlCi0gICBPUEVOU1NMX21lbWNweShvdXQsIGJ5dGVzLCBudW1fYnl0ZXMpOwot KyNlbmRpZgotICAgLy8gUGFkIG91dCB0aGUgcmVzdCBvZiB0aGUgYnVmZmVyIHdpdGggemVyb2Vz LgotICAgT1BFTlNTTF9tZW1zZXQob3V0ICsgbnVtX2J5dGVzLCAwLCBsZW4gLSBudW1fYnl0ZXMp OwotICAgcmV0dXJuIDE7Ci1AQCAtMTkwLDExICsyMDIsMTUgQEAgaW50IEJOX2JuMmJpbl9wYWRk ZWQodWludDhfdCAqb3V0LCBzaXplX3QgbGVuLCBjb25zdCBCSUdOVU0gKmluKSB7Ci0gICAgIG51 bV9ieXRlcyA9IGxlbjsKLSAgIH0KLSAKLS0gIC8vIFdlIG9ubHkgc3VwcG9ydCBsaXR0bGUtZW5k aWFuIHBsYXRmb3Jtcywgc28gd2UgY2FuIHNpbXBseSB3cml0ZSB0aGUgYnVmZmVyCi0tICAvLyBp biByZXZlcnNlLgotKyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgotKyAgZm9yIChzaXplX3QgaSA9 IDA7IGkgPCBudW1fYnl0ZXM7IGkrKykgewotKyAgICBvdXRbbGVuIC0gaSAtIDFdID0gYnl0ZXNb aSBeIChCTl9CWVRFUy0xKV07Ci0rICB9Ci0rI2Vsc2UKLSAgIGZvciAoc2l6ZV90IGkgPSAwOyBp IDwgbnVtX2J5dGVzOyBpKyspIHsKLSAgICAgb3V0W2xlbiAtIGkgLSAxXSA9IGJ5dGVzW2ldOwot ICAgfQotKyNlbmRpZgotICAgLy8gUGFkIG91dCB0aGUgcmVzdCBvZiB0aGUgYnVmZmVyIHdpdGgg emVyb2VzLgotICAgT1BFTlNTTF9tZW1zZXQob3V0LCAwLCBsZW4gLSBudW1fYnl0ZXMpOwotICAg cmV0dXJuIDE7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2ZpcHNtb2R1bGUvZWNkc2EvZWNkc2EuYwotKysrIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3Jj L2NyeXB0by9maXBzbW9kdWxlL2VjZHNhL2VjZHNhLmMKLUBAIC04MCw3ICs4MCwxMSBAQCBzdGF0 aWMgdm9pZCBkaWdlc3RfdG9fc2NhbGFyKGNvbnN0IEVDX0dST1VQICpncm91cCwgRUNfU0NBTEFS ICpvdXQsCi0gICB9Ci0gICBPUEVOU1NMX21lbXNldChvdXQsIDAsIHNpemVvZihFQ19TQ0FMQVIp KTsKLSAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGlnZXN0X2xlbjsgaSsrKSB7Ci0rI2lmZGVm IE9QRU5TU0xfQklHRU5ESUFOCi0rICAgIG91dC0+Ynl0ZXNbaSBeIChCTl9CWVRFUy0xKV0gPSBk aWdlc3RbZGlnZXN0X2xlbiAtIDEgLSBpXTsKLSsjZWxzZQotICAgICBvdXQtPmJ5dGVzW2ldID0g ZGlnZXN0W2RpZ2VzdF9sZW4gLSAxIC0gaV07Ci0rI2VuZGlmCi0gICB9Ci0gCi0gICAvLyBJZiBp dCBpcyBzdGlsbCB0b28gbG9uZywgdHJ1bmNhdGUgcmVtYWluaW5nIGJpdHMgd2l0aCBhIHNoaWZ0 LgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jp bmdzc2wvc3JjL2NyeXB0by9maXBzbW9kdWxlL21vZGVzL2djbS5jCi0rKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2Zp cHNtb2R1bGUvbW9kZXMvZ2NtLmMKLUBAIC03OCw2ICs3OCwxNCBAQAotICAgICB9ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0gICB9IHdoaWxlICgwKQotIAotKyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgotKyNkZWZpbmUg R0NNX2Jzd2FwNCh4KSAoeCkKLSsjZGVmaW5lIEdDTV9ic3dhcDgoeCkgKHgpCi0rI2Vsc2UKLSsj ZGVmaW5lIEdDTV9ic3dhcDQgQ1JZUFRPX2Jzd2FwNAotKyNkZWZpbmUgR0NNX2Jzd2FwOCBDUllQ VE9fYnN3YXA4Ci0rI2VuZGlmCi0rCi0gLy8ga1NpemVUV2l0aG91dExvd2VyNEJpdHMgaXMgYSBt YXNrIHRoYXQgY2FuIGJlIHVzZWQgdG8gemVybyB0aGUgbG93ZXIgZm91cgotIC8vIGJpdHMgb2Yg YSB8c2l6ZV90fC4KLSBzdGF0aWMgY29uc3Qgc2l6ZV90IGtTaXplVFdpdGhvdXRMb3dlcjRCaXRz ID0gKHNpemVfdCkgLTE2OwotQEAgLTE3Myw4ICsxODEsOCBAQCBzdGF0aWMgdm9pZCBnY21fZ211 bHRfNGJpdCh1aW50NjRfdCBYaVsyXSwgY29uc3QgdTEyOCBIdGFibGVbMTZdKSB7Ci0gICAgIFou bG8gXj0gSHRhYmxlW25sb10ubG87Ci0gICB9Ci0gCi0tICBYaVswXSA9IENSWVBUT19ic3dhcDgo Wi5oaSk7Ci0tICBYaVsxXSA9IENSWVBUT19ic3dhcDgoWi5sbyk7Ci0rICBYaVswXSA9IEdDTV9i c3dhcDgoWi5oaSk7Ci0rICBYaVsxXSA9IEdDTV9ic3dhcDgoWi5sbyk7Ci0gfQotIAotIC8vIFN0 cmVhbWVkIGdjbV9tdWx0XzRiaXQsIHNlZSBDUllQVE9fZ2NtMTI4X1tlbnxkZV1jcnlwdCBmb3IK LUBAIC0yMzMsOCArMjQxLDggQEAgc3RhdGljIHZvaWQgZ2NtX2doYXNoXzRiaXQodWludDY0X3Qg WGlbMl0sIGNvbnN0IHUxMjggSHRhYmxlWzE2XSwKLSAgICAgICBaLmxvIF49IEh0YWJsZVtubG9d LmxvOwotICAgICB9Ci0gCi0tICAgIFhpWzBdID0gQ1JZUFRPX2Jzd2FwOChaLmhpKTsKLS0gICAg WGlbMV0gPSBDUllQVE9fYnN3YXA4KFoubG8pOwotKyAgICBYaVswXSA9IEdDTV9ic3dhcDgoWi5o aSk7Ci0rICAgIFhpWzFdID0gR0NNX2Jzd2FwOChaLmxvKTsKLSAgIH0gd2hpbGUgKGlucCArPSAx NiwgbGVuIC09IDE2KTsKLSB9Ci0gI2Vsc2UgIC8vIEdIQVNIX0FTTQotQEAgLTM2MCw4ICszNjgs OCBAQCB2b2lkIENSWVBUT19naGFzaF9pbml0KGdtdWx0X2Z1bmMgKm91dF9tdWx0LCBnaGFzaF9m dW5jICpvdXRfaGFzaCwKLSAgIE9QRU5TU0xfbWVtY3B5KEguYywgZ2NtX2tleSwgMTYpOwotIAot ICAgLy8gSCBpcyBzdG9yZWQgaW4gaG9zdCBieXRlIG9yZGVyCi0tICBILnVbMF0gPSBDUllQVE9f YnN3YXA4KEgudVswXSk7Ci0tICBILnVbMV0gPSBDUllQVE9fYnN3YXA4KEgudVsxXSk7Ci0rICBI LnVbMF0gPSBHQ01fYnN3YXA4KEgudVswXSk7Ci0rICBILnVbMV0gPSBHQ01fYnN3YXA4KEgudVsx XSk7Ci0gCi0gICBPUEVOU1NMX21lbWNweShvdXRfa2V5LCBILmMsIDE2KTsKLSAKLUBAIC00NzQs MTUgKzQ4MiwxNSBAQCB2b2lkIENSWVBUT19nY20xMjhfc2V0aXYoR0NNMTI4X0NPTlRFWFQgKmN0 eCwgY29uc3QgQUVTX0tFWSAqa2V5LAotICAgICAgIEdDTV9NVUwoY3R4LCBZaSk7Ci0gICAgIH0K LSAgICAgbGVuMCA8PD0gMzsKLS0gICAgY3R4LT5ZaS51WzFdIF49IENSWVBUT19ic3dhcDgobGVu MCk7Ci0rICAgIGN0eC0+WWkudVsxXSBePSBHQ01fYnN3YXA4KGxlbjApOwotIAotICAgICBHQ01f TVVMKGN0eCwgWWkpOwotLSAgICBjdHIgPSBDUllQVE9fYnN3YXA0KGN0eC0+WWkuZFszXSk7Ci0r ICAgIGN0ciA9IEdDTV9ic3dhcDQoY3R4LT5ZaS5kWzNdKTsKLSAgIH0KLSAKLSAgICgqY3R4LT5n Y21fa2V5LmJsb2NrKShjdHgtPllpLmMsIGN0eC0+RUswLmMsIGtleSk7Ci0gICArK2N0cjsKLS0g IGN0eC0+WWkuZFszXSA9IENSWVBUT19ic3dhcDQoY3RyKTsKLSsgIGN0eC0+WWkuZFszXSA9IEdD TV9ic3dhcDQoY3RyKTsKLSB9Ci0gCi0gaW50IENSWVBUT19nY20xMjhfYWFkKEdDTTEyOF9DT05U RVhUICpjdHgsIGNvbnN0IHVpbnQ4X3QgKmFhZCwgc2l6ZV90IGxlbikgewotQEAgLTU4MCw3ICs1 ODgsNyBAQCBpbnQgQ1JZUFRPX2djbTEyOF9lbmNyeXB0KEdDTTEyOF9DT05URVhUICpjdHgsIGNv bnN0IEFFU19LRVkgKmtleSwKLSAgICAgY3R4LT5hcmVzID0gMDsKLSAgIH0KLSAKLS0gIGN0ciA9 IENSWVBUT19ic3dhcDQoY3R4LT5ZaS5kWzNdKTsKLSsgIGN0ciA9IEdDTV9ic3dhcDQoY3R4LT5Z aS5kWzNdKTsKLSAKLSAgIG4gPSBjdHgtPm1yZXM7Ci0gICBpZiAobikgewotQEAgLTYwMiw3ICs2 MTAsNyBAQCBpbnQgQ1JZUFRPX2djbTEyOF9lbmNyeXB0KEdDTTEyOF9DT05URVhUICpjdHgsIGNv bnN0IEFFU19LRVkgKmtleSwKLSAgICAgICBpZiAobiA9PSAwKSB7Ci0gICAgICAgICAoKmJsb2Nr KShjdHgtPllpLmMsIGN0eC0+RUtpLmMsIGtleSk7Ci0gICAgICAgICArK2N0cjsKLS0gICAgICAg IGN0eC0+WWkuZFszXSA9IENSWVBUT19ic3dhcDQoY3RyKTsKLSsgICAgICAgIGN0eC0+WWkuZFsz XSA9IEdDTV9ic3dhcDQoY3RyKTsKLSAgICAgICB9Ci0gICAgICAgY3R4LT5YaS5jW25dIF49IG91 dFtpXSA9IGluW2ldIF4gY3R4LT5FS2kuY1tuXTsKLSAgICAgICBuID0gKG4gKyAxKSAlIDE2Owot QEAgLTYyMSw3ICs2MjksNyBAQCBpbnQgQ1JZUFRPX2djbTEyOF9lbmNyeXB0KEdDTTEyOF9DT05U RVhUICpjdHgsIGNvbnN0IEFFU19LRVkgKmtleSwKLSAgICAgd2hpbGUgKGopIHsKLSAgICAgICAo KmJsb2NrKShjdHgtPllpLmMsIGN0eC0+RUtpLmMsIGtleSk7Ci0gICAgICAgKytjdHI7Ci0tICAg ICAgY3R4LT5ZaS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChjdHIpOwotKyAgICAgIGN0eC0+WWkuZFsz XSA9IEdDTV9ic3dhcDQoY3RyKTsKLSAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDE2OyBp ICs9IHNpemVvZihzaXplX3QpKSB7Ci0gICAgICAgICBzdG9yZV93b3JkX2xlKG91dCArIGksCi0g ICAgICAgICAgICAgICAgICAgICAgIGxvYWRfd29yZF9sZShpbiArIGkpIF4gY3R4LT5FS2kudFtp IC8gc2l6ZW9mKHNpemVfdCldKTsKLUBAIC02MzgsNyArNjQ2LDcgQEAgaW50IENSWVBUT19nY20x MjhfZW5jcnlwdChHQ00xMjhfQ09OVEVYVCAqY3R4LCBjb25zdCBBRVNfS0VZICprZXksCi0gICAg IHdoaWxlIChsZW4gPj0gMTYpIHsKLSAgICAgICAoKmJsb2NrKShjdHgtPllpLmMsIGN0eC0+RUtp LmMsIGtleSk7Ci0gICAgICAgKytjdHI7Ci0tICAgICAgY3R4LT5ZaS5kWzNdID0gQ1JZUFRPX2Jz d2FwNChjdHIpOwotKyAgICAgIGN0eC0+WWkuZFszXSA9IEdDTV9ic3dhcDQoY3RyKTsKLSAgICAg ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDE2OyBpICs9IHNpemVvZihzaXplX3QpKSB7Ci0gICAg ICAgICBzdG9yZV93b3JkX2xlKG91dCArIGksCi0gICAgICAgICAgICAgICAgICAgICAgIGxvYWRf d29yZF9sZShpbiArIGkpIF4gY3R4LT5FS2kudFtpIC8gc2l6ZW9mKHNpemVfdCldKTsKLUBAIC02 NTMsNyArNjYxLDcgQEAgaW50IENSWVBUT19nY20xMjhfZW5jcnlwdChHQ00xMjhfQ09OVEVYVCAq Y3R4LCBjb25zdCBBRVNfS0VZICprZXksCi0gICB3aGlsZSAobGVuID49IDE2KSB7Ci0gICAgICgq YmxvY2spKGN0eC0+WWkuYywgY3R4LT5FS2kuYywga2V5KTsKLSAgICAgKytjdHI7Ci0tICAgIGN0 eC0+WWkuZFszXSA9IENSWVBUT19ic3dhcDQoY3RyKTsKLSsgICAgY3R4LT5ZaS5kWzNdID0gR0NN X2Jzd2FwNChjdHIpOwotICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDE2OyBpICs9IHNpemVv ZihzaXplX3QpKSB7Ci0gICAgICAgc2l6ZV90IHRtcCA9IGxvYWRfd29yZF9sZShpbiArIGkpIF4g Y3R4LT5FS2kudFtpIC8gc2l6ZW9mKHNpemVfdCldOwotICAgICAgIHN0b3JlX3dvcmRfbGUob3V0 ICsgaSwgdG1wKTsKLUBAIC02NjgsNyArNjc2LDcgQEAgaW50IENSWVBUT19nY20xMjhfZW5jcnlw dChHQ00xMjhfQ09OVEVYVCAqY3R4LCBjb25zdCBBRVNfS0VZICprZXksCi0gICBpZiAobGVuKSB7 Ci0gICAgICgqYmxvY2spKGN0eC0+WWkuYywgY3R4LT5FS2kuYywga2V5KTsKLSAgICAgKytjdHI7 Ci0tICAgIGN0eC0+WWkuZFszXSA9IENSWVBUT19ic3dhcDQoY3RyKTsKLSsgICAgY3R4LT5ZaS5k WzNdID0gR0NNX2Jzd2FwNChjdHIpOwotICAgICB3aGlsZSAobGVuLS0pIHsKLSAgICAgICBjdHgt PlhpLmNbbl0gXj0gb3V0W25dID0gaW5bbl0gXiBjdHgtPkVLaS5jW25dOwotICAgICAgICsrbjsK LUBAIC03MDcsNyArNzE1LDcgQEAgaW50IENSWVBUT19nY20xMjhfZGVjcnlwdChHQ00xMjhfQ09O VEVYVCAqY3R4LCBjb25zdCBBRVNfS0VZICprZXksCi0gICAgIGN0eC0+YXJlcyA9IDA7Ci0gICB9 Ci0gCi0tICBjdHIgPSBDUllQVE9fYnN3YXA0KGN0eC0+WWkuZFszXSk7Ci0rICBjdHIgPSBHQ01f YnN3YXA0KGN0eC0+WWkuZFszXSk7Ci0gCi0gICBuID0gY3R4LT5tcmVzOwotICAgaWYgKG4pIHsK LUBAIC03MzIsNyArNzQwLDcgQEAgaW50IENSWVBUT19nY20xMjhfZGVjcnlwdChHQ00xMjhfQ09O VEVYVCAqY3R4LCBjb25zdCBBRVNfS0VZICprZXksCi0gICAgICAgaWYgKG4gPT0gMCkgewotICAg ICAgICAgKCpibG9jaykoY3R4LT5ZaS5jLCBjdHgtPkVLaS5jLCBrZXkpOwotICAgICAgICAgKytj dHI7Ci0tICAgICAgICBjdHgtPllpLmRbM10gPSBDUllQVE9fYnN3YXA0KGN0cik7Ci0rICAgICAg ICBjdHgtPllpLmRbM10gPSBHQ01fYnN3YXA0KGN0cik7Ci0gICAgICAgfQotICAgICAgIGMgPSBp bltpXTsKLSAgICAgICBvdXRbaV0gPSBjIF4gY3R4LT5FS2kuY1tuXTsKLUBAIC03NTQsNyArNzYy LDcgQEAgaW50IENSWVBUT19nY20xMjhfZGVjcnlwdChHQ00xMjhfQ09OVEVYVCAqY3R4LCBjb25z dCBBRVNfS0VZICprZXksCi0gICAgIHdoaWxlIChqKSB7Ci0gICAgICAgKCpibG9jaykoY3R4LT5Z aS5jLCBjdHgtPkVLaS5jLCBrZXkpOwotICAgICAgICsrY3RyOwotLSAgICAgIGN0eC0+WWkuZFsz XSA9IENSWVBUT19ic3dhcDQoY3RyKTsKLSsgICAgICBjdHgtPllpLmRbM10gPSBHQ01fYnN3YXA0 KGN0cik7Ci0gICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAxNjsgaSArPSBzaXplb2Yoc2l6 ZV90KSkgewotICAgICAgICAgc3RvcmVfd29yZF9sZShvdXQgKyBpLAotICAgICAgICAgICAgICAg ICAgICAgICBsb2FkX3dvcmRfbGUoaW4gKyBpKSBeIGN0eC0+RUtpLnRbaSAvIHNpemVvZihzaXpl X3QpXSk7Ci1AQCAtNzcxLDcgKzc3OSw3IEBAIGludCBDUllQVE9fZ2NtMTI4X2RlY3J5cHQoR0NN MTI4X0NPTlRFWFQgKmN0eCwgY29uc3QgQUVTX0tFWSAqa2V5LAotICAgICB3aGlsZSAobGVuID49 IDE2KSB7Ci0gICAgICAgKCpibG9jaykoY3R4LT5ZaS5jLCBjdHgtPkVLaS5jLCBrZXkpOwotICAg ICAgICsrY3RyOwotLSAgICAgIGN0eC0+WWkuZFszXSA9IENSWVBUT19ic3dhcDQoY3RyKTsKLSsg ICAgICBjdHgtPllpLmRbM10gPSBHQ01fYnN3YXA0KGN0cik7Ci0gICAgICAgZm9yIChzaXplX3Qg aSA9IDA7IGkgPCAxNjsgaSArPSBzaXplb2Yoc2l6ZV90KSkgewotICAgICAgICAgc3RvcmVfd29y ZF9sZShvdXQgKyBpLAotICAgICAgICAgICAgICAgICAgICAgICBsb2FkX3dvcmRfbGUoaW4gKyBp KSBeIGN0eC0+RUtpLnRbaSAvIHNpemVvZihzaXplX3QpXSk7Ci1AQCAtNzg1LDcgKzc5Myw3IEBA IGludCBDUllQVE9fZ2NtMTI4X2RlY3J5cHQoR0NNMTI4X0NPTlRFWFQgKmN0eCwgY29uc3QgQUVT X0tFWSAqa2V5LAotICAgd2hpbGUgKGxlbiA+PSAxNikgewotICAgICAoKmJsb2NrKShjdHgtPllp LmMsIGN0eC0+RUtpLmMsIGtleSk7Ci0gICAgICsrY3RyOwotLSAgICBjdHgtPllpLmRbM10gPSBD UllQVE9fYnN3YXA0KGN0cik7Ci0rICAgIGN0eC0+WWkuZFszXSA9IEdDTV9ic3dhcDQoY3RyKTsK LSAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAxNjsgaSArPSBzaXplb2Yoc2l6ZV90KSkgewot ICAgICAgIHNpemVfdCBjID0gbG9hZF93b3JkX2xlKGluICsgaSk7Ci0gICAgICAgc3RvcmVfd29y ZF9sZShvdXQgKyBpLCBjIF4gY3R4LT5FS2kudFtpIC8gc2l6ZW9mKHNpemVfdCldKTsKLUBAIC04 MDAsNyArODA4LDcgQEAgaW50IENSWVBUT19nY20xMjhfZGVjcnlwdChHQ00xMjhfQ09OVEVYVCAq Y3R4LCBjb25zdCBBRVNfS0VZICprZXksCi0gICBpZiAobGVuKSB7Ci0gICAgICgqYmxvY2spKGN0 eC0+WWkuYywgY3R4LT5FS2kuYywga2V5KTsKLSAgICAgKytjdHI7Ci0tICAgIGN0eC0+WWkuZFsz XSA9IENSWVBUT19ic3dhcDQoY3RyKTsKLSsgICAgY3R4LT5ZaS5kWzNdID0gR0NNX2Jzd2FwNChj dHIpOwotICAgICB3aGlsZSAobGVuLS0pIHsKLSAgICAgICB1aW50OF90IGMgPSBpbltuXTsKLSAg ICAgICBjdHgtPlhpLmNbbl0gXj0gYzsKLUBAIC04NjYsMTMgKzg3NCwxMyBAQCBpbnQgQ1JZUFRP X2djbTEyOF9lbmNyeXB0X2N0cjMyKEdDTTEyOF9DT05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkg KmtleSwKLSAgIH0KLSAjZW5kaWYKLSAKLS0gIGN0ciA9IENSWVBUT19ic3dhcDQoY3R4LT5ZaS5k WzNdKTsKLSsgIGN0ciA9IEdDTV9ic3dhcDQoY3R4LT5ZaS5kWzNdKTsKLSAKLSAjaWYgZGVmaW5l ZChHSEFTSCkKLSAgIHdoaWxlIChsZW4gPj0gR0hBU0hfQ0hVTkspIHsKLSAgICAgKCpzdHJlYW0p KGluLCBvdXQsIEdIQVNIX0NIVU5LIC8gMTYsIGtleSwgY3R4LT5ZaS5jKTsKLSAgICAgY3RyICs9 IEdIQVNIX0NIVU5LIC8gMTY7Ci0tICAgIGN0eC0+WWkuZFszXSA9IENSWVBUT19ic3dhcDQoY3Ry KTsKLSsgICAgY3R4LT5ZaS5kWzNdID0gR0NNX2Jzd2FwNChjdHIpOwotICAgICBHSEFTSChjdHgs IG91dCwgR0hBU0hfQ0hVTkspOwotICAgICBvdXQgKz0gR0hBU0hfQ0hVTks7Ci0gICAgIGluICs9 IEdIQVNIX0NIVU5LOwotQEAgLTg4NSw3ICs4OTMsNyBAQCBpbnQgQ1JZUFRPX2djbTEyOF9lbmNy eXB0X2N0cjMyKEdDTTEyOF9DT05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkgKmtleSwKLSAKLSAg ICAgKCpzdHJlYW0pKGluLCBvdXQsIGosIGtleSwgY3R4LT5ZaS5jKTsKLSAgICAgY3RyICs9ICh1 bnNpZ25lZCBpbnQpajsKLS0gICAgY3R4LT5ZaS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChjdHIpOwot KyAgICBjdHgtPllpLmRbM10gPSBHQ01fYnN3YXA0KGN0cik7Ci0gICAgIGluICs9IGk7Ci0gICAg IGxlbiAtPSBpOwotICNpZiBkZWZpbmVkKEdIQVNIKQotQEAgLTkwNCw3ICs5MTIsNyBAQCBpbnQg Q1JZUFRPX2djbTEyOF9lbmNyeXB0X2N0cjMyKEdDTTEyOF9DT05URVhUICpjdHgsIGNvbnN0IEFF U19LRVkgKmtleSwKLSAgIGlmIChsZW4pIHsKLSAgICAgKCpjdHgtPmdjbV9rZXkuYmxvY2spKGN0 eC0+WWkuYywgY3R4LT5FS2kuYywga2V5KTsKLSAgICAgKytjdHI7Ci0tICAgIGN0eC0+WWkuZFsz XSA9IENSWVBUT19ic3dhcDQoY3RyKTsKLSsgICAgY3R4LT5ZaS5kWzNdID0gR0NNX2Jzd2FwNChj dHIpOwotICAgICB3aGlsZSAobGVuLS0pIHsKLSAgICAgICBjdHgtPlhpLmNbbl0gXj0gb3V0W25d ID0gaW5bbl0gXiBjdHgtPkVLaS5jW25dOwotICAgICAgICsrbjsKLUBAIC05NzAsMTQgKzk3OCwx NCBAQCBpbnQgQ1JZUFRPX2djbTEyOF9kZWNyeXB0X2N0cjMyKEdDTTEyOF9DT05URVhUICpjdHgs IGNvbnN0IEFFU19LRVkgKmtleSwKLSAgIH0KLSAjZW5kaWYKLSAKLS0gIGN0ciA9IENSWVBUT19i c3dhcDQoY3R4LT5ZaS5kWzNdKTsKLSsgIGN0ciA9IEdDTV9ic3dhcDQoY3R4LT5ZaS5kWzNdKTsK LSAKLSAjaWYgZGVmaW5lZChHSEFTSCkKLSAgIHdoaWxlIChsZW4gPj0gR0hBU0hfQ0hVTkspIHsK LSAgICAgR0hBU0goY3R4LCBpbiwgR0hBU0hfQ0hVTkspOwotICAgICAoKnN0cmVhbSkoaW4sIG91 dCwgR0hBU0hfQ0hVTksgLyAxNiwga2V5LCBjdHgtPllpLmMpOwotICAgICBjdHIgKz0gR0hBU0hf Q0hVTksgLyAxNjsKLS0gICAgY3R4LT5ZaS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChjdHIpOwotKyAg ICBjdHgtPllpLmRbM10gPSBHQ01fYnN3YXA0KGN0cik7Ci0gICAgIG91dCArPSBHSEFTSF9DSFVO SzsKLSAgICAgaW4gKz0gR0hBU0hfQ0hVTks7Ci0gICAgIGxlbiAtPSBHSEFTSF9DSFVOSzsKLUBA IC0xMDAzLDcgKzEwMTEsNyBAQCBpbnQgQ1JZUFRPX2djbTEyOF9kZWNyeXB0X2N0cjMyKEdDTTEy OF9DT05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkgKmtleSwKLSAjZW5kaWYKLSAgICAgKCpzdHJl YW0pKGluLCBvdXQsIGosIGtleSwgY3R4LT5ZaS5jKTsKLSAgICAgY3RyICs9ICh1bnNpZ25lZCBp bnQpajsKLS0gICAgY3R4LT5ZaS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChjdHIpOwotKyAgICBjdHgt PllpLmRbM10gPSBHQ01fYnN3YXA0KGN0cik7Ci0gICAgIG91dCArPSBpOwotICAgICBpbiArPSBp OwotICAgICBsZW4gLT0gaTsKLUBAIC0xMDExLDcgKzEwMTksNyBAQCBpbnQgQ1JZUFRPX2djbTEy OF9kZWNyeXB0X2N0cjMyKEdDTTEyOF9DT05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkgKmtleSwK LSAgIGlmIChsZW4pIHsKLSAgICAgKCpjdHgtPmdjbV9rZXkuYmxvY2spKGN0eC0+WWkuYywgY3R4 LT5FS2kuYywga2V5KTsKLSAgICAgKytjdHI7Ci0tICAgIGN0eC0+WWkuZFszXSA9IENSWVBUT19i c3dhcDQoY3RyKTsKLSsgICAgY3R4LT5ZaS5kWzNdID0gR0NNX2Jzd2FwNChjdHIpOwotICAgICB3 aGlsZSAobGVuLS0pIHsKLSAgICAgICB1aW50OF90IGMgPSBpbltuXTsKLSAgICAgICBjdHgtPlhp LmNbbl0gXj0gYzsKLUBAIC0xMDM2LDggKzEwNDQsOCBAQCBpbnQgQ1JZUFRPX2djbTEyOF9maW5p c2goR0NNMTI4X0NPTlRFWFQgKmN0eCwgY29uc3QgdWludDhfdCAqdGFnLCBzaXplX3QgbGVuKSB7 Ci0gICAgIEdDTV9NVUwoY3R4LCBYaSk7Ci0gICB9Ci0gCi0tICBhbGVuID0gQ1JZUFRPX2Jzd2Fw OChhbGVuKTsKLS0gIGNsZW4gPSBDUllQVE9fYnN3YXA4KGNsZW4pOwotKyAgYWxlbiA9IEdDTV9i c3dhcDgoYWxlbik7Ci0rICBjbGVuID0gR0NNX2Jzd2FwOChjbGVuKTsKLSAKLSAgIGN0eC0+WGku dVswXSBePSBhbGVuOwotICAgY3R4LT5YaS51WzFdIF49IGNsZW47Ci0tLS0gcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2Zp cHNtb2R1bGUvbW9kZXMvaW50ZXJuYWwuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0by9maXBzbW9kdWxlL21vZGVz L2ludGVybmFsLmgKLUBAIC03MCwxMSArNzAsMTcgQEAgZXh0ZXJuICJDIiB7Ci0gc3RhdGljIGlu bGluZSB1aW50MzJfdCBHRVRVMzIoY29uc3Qgdm9pZCAqaW4pIHsKLSAgIHVpbnQzMl90IHY7Ci0g ICBPUEVOU1NMX21lbWNweSgmdiwgaW4sIHNpemVvZih2KSk7Ci0rI2lmZGVmIE9QRU5TU0xfQklH RU5ESUFOCi0rICByZXR1cm4gdjsKLSsjZWxzZQotICAgcmV0dXJuIENSWVBUT19ic3dhcDQodik7 Ci0rI2VuZGlmCi0gfQotIAotIHN0YXRpYyBpbmxpbmUgdm9pZCBQVVRVMzIodm9pZCAqb3V0LCB1 aW50MzJfdCB2KSB7Ci0rI2lmbmRlZiBPUEVOU1NMX0JJR0VORElBTgotICAgdiA9IENSWVBUT19i c3dhcDQodik7Ci0rI2VuZGlmCi0gICBPUEVOU1NMX21lbWNweShvdXQsICZ2LCBzaXplb2Yodikp OwotIH0KLSAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vZmlwc21vZHVsZS9tb2Rlcy9wb2x5dmFsLmMKLSsrKyBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3Ny Yy9jcnlwdG8vZmlwc21vZHVsZS9tb2Rlcy9wb2x5dmFsLmMKLUBAIC0zMiwxNiArMzIsMjYgQEAg c3RhdGljIHZvaWQgYnl0ZV9yZXZlcnNlKHBvbHl2YWxfYmxvY2sgKmIpIHsKLSAvLyB0aGUgR0hB U0ggZmllbGQsIG11bHRpcGxpZXMgdGhhdCBieSAneCcgYW5kIHNlcmlhbGlzZXMgdGhlIHJlc3Vs dCBiYWNrIGludG8KLSAvLyB8YnwsIGJ1dCB3aXRoIEdIQVNIJ3MgYmFja3dhcmRzIGJpdCBvcmRl cmluZy4KLSBzdGF0aWMgdm9pZCByZXZlcnNlX2FuZF9tdWxYX2doYXNoKHBvbHl2YWxfYmxvY2sg KmIpIHsKLSsjaWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KLSsgIHVpbnQ2NF90IGhpID0gQ1JZUFRP X2Jzd2FwOChiLT51WzBdKTsKLSsgIHVpbnQ2NF90IGxvID0gQ1JZUFRPX2Jzd2FwOChiLT51WzFd KTsKLSsjZWxzZQotICAgdWludDY0X3QgaGkgPSBiLT51WzBdOwotICAgdWludDY0X3QgbG8gPSBi LT51WzFdOwotKyNlbmRpZgotICAgY29uc3QgY3J5cHRvX3dvcmRfdCBjYXJyeSA9IGNvbnN0YW50 X3RpbWVfZXFfdyhoaSAmIDEsIDEpOwotICAgaGkgPj49IDE7Ci0gICBoaSB8PSBsbyA8PCA2MzsK LSAgIGxvID4+PSAxOwotICAgbG8gXj0gKCh1aW50NjRfdCkgY29uc3RhbnRfdGltZV9zZWxlY3Rf dyhjYXJyeSwgMHhlMSwgMCkpIDw8IDU2OwotIAotKyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgot KyAgYi0+dVswXSA9IGxvOwotKyAgYi0+dVsxXSA9IGhpOwotKyNlbHNlCi0gICBiLT51WzBdID0g Q1JZUFRPX2Jzd2FwOChsbyk7Ci0gICBiLT51WzFdID0gQ1JZUFRPX2Jzd2FwOChoaSk7Ci0rI2Vu ZGlmCi0gfQotIAotIC8vIFBPTFlWQUwoSCwgWF8xLCAuLi4sIFhfbikgPQotLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0 by9maXBzbW9kdWxlL3JhbmQvY3RyZHJiZy5jCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2ZpcHNtb2R1bGUvcmFu ZC9jdHJkcmJnLmMKLUBAIC03MCw4ICs3MCwxMiBAQCBPUEVOU1NMX1NUQVRJQ19BU1NFUlQoQ1RS X0RSQkdfRU5UUk9QWV9MRU4gJSBBRVNfQkxPQ0tfU0laRSA9PSAwLAotIC8vIGN0cl9pbmMgYWRk cyB8bnwgdG8gdGhlIGxhc3QgZm91ciBieXRlcyBvZiB8ZHJiZy0+Y291bnRlcnwsIHRyZWF0ZWQg YXMgYQotIC8vIGJpZy1lbmRpYW4gbnVtYmVyLgotIHN0YXRpYyB2b2lkIGN0cjMyX2FkZChDVFJf RFJCR19TVEFURSAqZHJiZywgdWludDMyX3QgbikgewotKyNpZmRlZiBPUEVOU1NMX0JJR0VORElB TgotKyAgZHJiZy0+Y291bnRlci53b3Jkc1szXSArPSBuOwotKyNlbHNlCi0gICBkcmJnLT5jb3Vu dGVyLndvcmRzWzNdID0KLSAgICAgICBDUllQVE9fYnN3YXA0KENSWVBUT19ic3dhcDQoZHJiZy0+ Y291bnRlci53b3Jkc1szXSkgKyBuKTsKLSsjZW5kaWYKLSB9Ci0gCi0gc3RhdGljIGludCBjdHJf ZHJiZ191cGRhdGUoQ1RSX0RSQkdfU1RBVEUgKmRyYmcsIGNvbnN0IHVpbnQ4X3QgKmRhdGEsCi0t LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3Nz bC9zcmMvY3J5cHRvL3BvbHkxMzA1L3BvbHkxMzA1LmMKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vcG9seTEzMDUv cG9seTEzMDUuYwotQEAgLTMyLDEwICszMiwxNiBAQAotIHN0YXRpYyB1aW50MzJfdCBVOFRPMzJf TEUoY29uc3QgdWludDhfdCAqbSkgewotICAgdWludDMyX3QgcjsKLSAgIE9QRU5TU0xfbWVtY3B5 KCZyLCBtLCBzaXplb2YocikpOwotKyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgotKyAgciA9IENS WVBUT19ic3dhcDQocik7Ci0rI2VuZGlmCi0gICByZXR1cm4gcjsKLSB9Ci0gCi0gc3RhdGljIHZv aWQgVTMyVE84X0xFKHVpbnQ4X3QgKm0sIHVpbnQzMl90IHYpIHsKLSsjaWZkZWYgT1BFTlNTTF9C SUdFTkRJQU4KLSsgIHYgPSBDUllQVE9fYnN3YXA0KHYpOwotKyNlbmRpZgotICAgT1BFTlNTTF9t ZW1jcHkobSwgJnYsIHNpemVvZih2KSk7Ci0gfQotIAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2luY2x1ZGUvb3BlbnNzbC9i YXNlLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv Ym9yaW5nc3NsL3NyYy9pbmNsdWRlL29wZW5zc2wvYmFzZS5oCi1AQCAtOTksNiArOTksMTAgQEAg ZXh0ZXJuICJDIiB7Ci0gI2VsaWYgKGRlZmluZWQoX19QUEM2NF9fKSB8fCBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pKSAmJiBkZWZpbmVkKF9MSVRUTEVfRU5ESUFOKQotICNkZWZpbmUgT1BFTlNTTF82 NF9CSVQKLSAjZGVmaW5lIE9QRU5TU0xfUFBDNjRMRQotKyNlbGlmIChkZWZpbmVkKF9fUFBDNjRf XykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKSkKLSsjZGVmaW5lIE9QRU5TU0xfNjRfQklUCi0r I2RlZmluZSBPUEVOU1NMX1BQQzY0Ci0rI2RlZmluZSBPUEVOU1NMX0JJR0VORElBTgotICNlbGlm IGRlZmluZWQoX19taXBzX18pICYmICFkZWZpbmVkKF9fTFA2NF9fKQotICNkZWZpbmUgT1BFTlNT TF8zMl9CSVQKLSAjZGVmaW5lIE9QRU5TU0xfTUlQUwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL3RoaXJkX3BhcnR5L2ZpYXQv Y3VydmUyNTUxOS5jCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L2JvcmluZ3NzbC9zcmMvdGhpcmRfcGFydHkvZmlhdC9jdXJ2ZTI1NTE5LmMKLUBAIC0z MDMyLDkgKzMwMzIsMTQgQEAgaW50IEVEMjU1MTlfdmVyaWZ5KGNvbnN0IHVpbnQ4X3QgKm1lc3Nh Z2UsIHNpemVfdCBtZXNzYWdlX2xlbiwKLSAgICAgVUlOVDY0X0MoMHgxMDAwMDAwMDAwMDAwMDAw KSwKLSAgIH07Ci0gICBmb3IgKHNpemVfdCBpID0gMzs7IGktLSkgewotLSAgICBpZiAoc2NvcHku dTY0W2ldID4ga09yZGVyW2ldKSB7Ci0rI2lmZGVmIE9QRU5TU0xfQklHRU5ESUFOCi0rICAgIGNv bnN0IHVpbnQ2NF90IG4gPSBDUllQVE9fYnN3YXA4KHNjb3B5LnU2NFtpXSk7Ci0rI2Vsc2UKLSsg ICAgY29uc3QgdWludDY0X3QgbiA9IHNjb3B5LnU2NFtpXTsKLSsjZW5kaWYKLSsgICAgaWYgKG4g PiBrT3JkZXJbaV0pIHsKLSAgICAgICByZXR1cm4gMDsKLS0gICAgfSBlbHNlIGlmIChzY29weS51 NjRbaV0gPCBrT3JkZXJbaV0pIHsKLSsgICAgfSBlbHNlIGlmIChuIDwga09yZGVyW2ldKSB7Ci0g ICAgICAgYnJlYWs7Ci0gICAgIH0gZWxzZSBpZiAoaSA9PSAwKSB7Ci0gICAgICAgcmV0dXJuIDA7 Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Jvcmlu Z3NzbC9zcmMvdGhpcmRfcGFydHkvZmlhdC9wMjU2LmMKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy90aGlyZF9wYXJ0eS9maWF0 L3AyNTYuYwotQEAgLTg4MiwxMiArODgyLDI0IEBAIHN0YXRpYyB2b2lkIGZlX3RvYnl0ZXModWlu dDhfdCBvdXRbTkJZVEVTXSwgY29uc3QgZmUgaW4pIHsKLSAgIH0KLSB9Ci0gCi0rI2lmZGVmIE9Q RU5TU0xfQklHRU5ESUFOCi0rc3RhdGljIHZvaWQgZmVfdG9ieXRlc19iZSh1aW50OF90IG91dFtO QllURVNdLCBjb25zdCBmZSBpbikgewotKyAgZm9yIChpbnQgaSA9IDA7IGk8TkJZVEVTOyBpKysp IHsKLSsgICAgb3V0W2kgXiAoQk5fQllURVMtMSldID0gKHVpbnQ4X3QpKGluW2kvc2l6ZW9mKGlu WzBdKV0gPj4gKDgqKGklc2l6ZW9mKGluWzBdKSkpKTsKLSsgIH0KLSt9Ci0rI2VuZGlmCi0rCi0g c3RhdGljIHZvaWQgZmVfZnJvbWJ5dGVzKGZlIG91dCwgY29uc3QgdWludDhfdCBpbltOQllURVNd KSB7Ci0gICBmb3IgKGludCBpID0gMDsgaTxOTElNQlM7IGkrKykgewotICAgICBvdXRbaV0gPSAw OwotICAgfQotICAgZm9yIChpbnQgaSA9IDA7IGk8TkJZVEVTOyBpKyspIHsKLSsjaWZkZWYgT1BF TlNTTF9CSUdFTkRJQU4KLSsgICAgb3V0W2kvc2l6ZW9mKG91dFswXSldIHw9ICgobGltYl90KWlu W2kgXiAoQk5fQllURVMtMSldKSA8PCAoOCooaSVzaXplb2Yob3V0WzBdKSkpOwotKyNlbHNlCi0g ICAgIG91dFtpL3NpemVvZihvdXRbMF0pXSB8PSAoKGxpbWJfdClpbltpXSkgPDwgKDgqKGklc2l6 ZW9mKG91dFswXSkpKTsKLSsjZW5kaWYKLSAgIH0KLSB9Ci0gCi1AQCAtOTA2LDcgKzkxOCwxMSBA QCBzdGF0aWMgdm9pZCBmZV90b19nZW5lcmljKEVDX0ZFTEVNICpvdXQsIGNvbnN0IGZlIGluKSB7 Ci0gICBPUEVOU1NMX1NUQVRJQ19BU1NFUlQoCi0gICAgICAgMjU2IC8gOCA9PSBzaXplb2YoQk5f VUxPTkcpICogKCgyNTYgKyBCTl9CSVRTMiAtIDEpIC8gQk5fQklUUzIpLAotICAgICAgICJmZV90 b2J5dGVzIGxlYXZlcyBieXRlcyB1bmluaXRpYWxpemVkIik7Ci0rI2lmZGVmIE9QRU5TU0xfQklH RU5ESUFOCi0rICBmZV90b2J5dGVzX2JlKG91dC0+Ynl0ZXMsIGluKTsKLSsjZWxzZQotICAgZmVf dG9ieXRlcyhvdXQtPmJ5dGVzLCBpbik7Ci0rI2VuZGlmCi0gfQotIAotIC8vIGZlX2ludiBjYWxj dWxhdGVzIHxvdXR8ID0gfGlufF57LTF9Ci1AQCAtMTUyNCw3ICsxNTQwLDExIEBAIHN0YXRpYyBj aGFyIGdldF9iaXQoY29uc3QgdWludDhfdCAqaW4sIGludCBpKSB7Ci0gICBpZiAoaSA8IDAgfHwg aSA+PSAyNTYpIHsKLSAgICAgcmV0dXJuIDA7Ci0gICB9Ci0rI2lmZGVmIE9QRU5TU0xfQklHRU5E SUFOCi0rICByZXR1cm4gKGluWyhpID4+IDMpIF4gKHNpemVvZihCTl9VTE9ORyktMSldID4+IChp ICYgNykpICYgMTsKLSsjZWxzZQotICAgcmV0dXJuIChpbltpID4+IDNdID4+IChpICYgNykpICYg MTsKLSsjZW5kaWYKLSB9Ci0gCi0gLy8gSW50ZXJsZWF2ZWQgcG9pbnQgbXVsdGlwbGljYXRpb24g dXNpbmcgcHJlY29tcHV0ZWQgcG9pbnQgbXVsdGlwbGVzOiBUaGUKLS0tLSBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3JjMzJjL0JVSUxELmduCi0rKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYzMyYy9CVUlMRC5n bgotQEAgLTE1LDEzICsxNSwxMCBAQCBjb25maWcoImNyYzMyY19jb25maWciKSB7Ci0gICBdCi0g Ci0gICBkZWZpbmVzID0gWwotLSAgICAiQllURV9PUkRFUl9CSUdfRU5ESUFOPTAiLAotKyAgICAi QllURV9PUkRFUl9CSUdfRU5ESUFOPV9fQllURV9PUkRFUl9fPT1fX09SREVSX0JJR19FTkRJQU5f XyIsCi0gICAgICJDUkMzMkNfVEVTVFNfQlVJTFRfV0lUSF9HTE9HPTAiLAotICAgXQotIAotLSAg IyBJZiB3ZSBldmVyIHN1cHBvcnQgYmlnLWVuZGlhbiBidWlsZHMsIGFkZCBsb2dpYyB0byBjb25k aXRpb25hbGx5IGVuYWJsZQotLSAgIyBCWVRFX09SREVSX0JJR19FTkRJQU4uCi0tCi0gICBpZiAo dGFyZ2V0X2NwdSA9PSAieDg2IiB8fCB0YXJnZXRfY3B1ID09ICJ4NjQiKSB7Ci0gICAgIGRlZmlu ZXMgKz0gWwotICAgICAgICJIQVZFX01NX1BSRUZFVENIPTEiLAotLS0tIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9mbGF0YnVmZmVycy9zcmMvaW5jbHVkZS9m bGF0YnVmZmVycy9iYXNlLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvZmxhdGJ1ZmZlcnMvc3JjL2luY2x1ZGUvZmxhdGJ1ZmZlcnMvYmFzZS5oCi1A QCAtMjIwLDE4ICsyMjAsMTUgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBFbmRpYW5Td2FwKFQg dCkgewotICAgaWYgKHNpemVvZihUKSA9PSAxKSB7ICAgLy8gQ29tcGlsZS10aW1lIGlmLXRoZW4n cy4KLSAgICAgcmV0dXJuIHQ7Ci0gICB9IGVsc2UgaWYgKHNpemVvZihUKSA9PSAyKSB7Ci0tICAg IHVuaW9uIHsgVCB0OyB1aW50MTZfdCBpOyB9IHU7Ci0tICAgIHUudCA9IHQ7Ci0rICAgIHVuaW9u IFUgeyBUIHQ7IHVpbnQxNl90IGk7IFUoY29uc3QgVCYgdF8pIDogdCh0Xykge319IHUodCk7Ci0g ICAgIHUuaSA9IEZMQVRCVUZGRVJTX0JZVEVTV0FQMTYodS5pKTsKLSAgICAgcmV0dXJuIHUudDsK LSAgIH0gZWxzZSBpZiAoc2l6ZW9mKFQpID09IDQpIHsKLS0gICAgdW5pb24geyBUIHQ7IHVpbnQz Ml90IGk7IH0gdTsKLS0gICAgdS50ID0gdDsKLSsgICAgdW5pb24gVSB7IFQgdDsgdWludDMyX3Qg aTsgVShjb25zdCBUJiB0XykgOiB0KHRfKSB7fX0gdSh0KTsKLSAgICAgdS5pID0gRkxBVEJVRkZF UlNfQllURVNXQVAzMih1LmkpOwotICAgICByZXR1cm4gdS50OwotICAgfSBlbHNlIGlmIChzaXpl b2YoVCkgPT0gOCkgewotLSAgICB1bmlvbiB7IFQgdDsgdWludDY0X3QgaTsgfSB1OwotLSAgICB1 LnQgPSB0OwotKyAgICB1bmlvbiBVIHsgVCB0OyB1aW50NjRfdCBpOyBVKGNvbnN0IFQmIHRfKSA6 IHQodF8pIHt9fSB1KHQpOwotICAgICB1LmkgPSBGTEFUQlVGRkVSU19CWVRFU1dBUDY0KHUuaSk7 Ci0gICAgIHJldHVybiB1LnQ7Ci0gICB9IGVsc2UgewotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9mbGF0YnVmZmVycy9zcmMvaW5jbHVkZS9mbGF0YnVm ZmVycy9taW5pcmVmbGVjdC5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2ZsYXRidWZmZXJzL3NyYy9pbmNsdWRlL2ZsYXRidWZmZXJzL21pbmlyZWZs ZWN0LmgKLUBAIC0xMjIsNTggKzEyMiw1OCBAQCBpbmxpbmUgdm9pZCBJdGVyYXRlVmFsdWUoRWxl bWVudGFyeVR5cGUgdHlwZSwgY29uc3QgdWludDhfdCAqdmFsLAotICAgICAgICAgICAgICAgICAg ICAgICAgICBzb2Zmc2V0X3QgdmVjdG9yX2luZGV4LCBJdGVyYXRpb25WaXNpdG9yICp2aXNpdG9y KSB7Ci0gICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgY2FzZSBFVF9VVFlQRTogewotLSAgICAgIGF1 dG8gdHZhbCA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QgKj4odmFsKTsKLSsgICAg ICBhdXRvIHR2YWwgPSBSZWFkU2NhbGFyPHVpbnQ4X3Q+KHZhbCk7Ci0gICAgICAgdmlzaXRvci0+ VVR5cGUodHZhbCwgRW51bU5hbWUodHZhbCwgdHlwZV90YWJsZSkpOwotICAgICAgIGJyZWFrOwot ICAgICB9Ci0gICAgIGNhc2UgRVRfQk9PTDogewotLSAgICAgIHZpc2l0b3ItPkJvb2woKnJlaW50 ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPih2YWwpICE9IDApOwotKyAgICAgIHZpc2l0b3It PkJvb2woUmVhZFNjYWxhcjx1aW50OF90Pih2YWwpICE9IDApOwotICAgICAgIGJyZWFrOwotICAg ICB9Ci0gICAgIGNhc2UgRVRfQ0hBUjogewotLSAgICAgIGF1dG8gdHZhbCA9ICpyZWludGVycHJl dF9jYXN0PGNvbnN0IGludDhfdCAqPih2YWwpOwotKyAgICAgIGF1dG8gdHZhbCA9IFJlYWRTY2Fs YXI8aW50OF90Pih2YWwpOwotICAgICAgIHZpc2l0b3ItPkNoYXIodHZhbCwgRW51bU5hbWUodHZh bCwgdHlwZV90YWJsZSkpOwotICAgICAgIGJyZWFrOwotICAgICB9Ci0gICAgIGNhc2UgRVRfVUNI QVI6IHsKLS0gICAgICBhdXRvIHR2YWwgPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90 ICo+KHZhbCk7Ci0rICAgICAgYXV0byB0dmFsID0gUmVhZFNjYWxhcjx1aW50OF90Pih2YWwpOwot ICAgICAgIHZpc2l0b3ItPlVDaGFyKHR2YWwsIEVudW1OYW1lKHR2YWwsIHR5cGVfdGFibGUpKTsK LSAgICAgICBicmVhazsKLSAgICAgfQotICAgICBjYXNlIEVUX1NIT1JUOiB7Ci0tICAgICAgYXV0 byB0dmFsID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MTZfdCAqPih2YWwpOwotKyAgICAg IGF1dG8gdHZhbCA9IFJlYWRTY2FsYXI8aW50MTZfdD4odmFsKTsKLSAgICAgICB2aXNpdG9yLT5T aG9ydCh0dmFsLCBFbnVtTmFtZSh0dmFsLCB0eXBlX3RhYmxlKSk7Ci0gICAgICAgYnJlYWs7Ci0g ICAgIH0KLSAgICAgY2FzZSBFVF9VU0hPUlQ6IHsKLS0gICAgICBhdXRvIHR2YWwgPSAqcmVpbnRl cnByZXRfY2FzdDxjb25zdCB1aW50MTZfdCAqPih2YWwpOwotKyAgICAgIGF1dG8gdHZhbCA9IFJl YWRTY2FsYXI8dWludDE2X3Q+KHZhbCk7Ci0gICAgICAgdmlzaXRvci0+VVNob3J0KHR2YWwsIEVu dW1OYW1lKHR2YWwsIHR5cGVfdGFibGUpKTsKLSAgICAgICBicmVhazsKLSAgICAgfQotICAgICBj YXNlIEVUX0lOVDogewotLSAgICAgIGF1dG8gdHZhbCA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0 IGludDMyX3QgKj4odmFsKTsKLSsgICAgICBhdXRvIHR2YWwgPSBSZWFkU2NhbGFyPGludDMyX3Q+ KHZhbCk7Ci0gICAgICAgdmlzaXRvci0+SW50KHR2YWwsIEVudW1OYW1lKHR2YWwsIHR5cGVfdGFi bGUpKTsKLSAgICAgICBicmVhazsKLSAgICAgfQotICAgICBjYXNlIEVUX1VJTlQ6IHsKLS0gICAg ICBhdXRvIHR2YWwgPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCAqPih2YWwpOwot KyAgICAgIGF1dG8gdHZhbCA9IFJlYWRTY2FsYXI8dWludDMyX3Q+KHZhbCk7Ci0gICAgICAgdmlz aXRvci0+VUludCh0dmFsLCBFbnVtTmFtZSh0dmFsLCB0eXBlX3RhYmxlKSk7Ci0gICAgICAgYnJl YWs7Ci0gICAgIH0KLSAgICAgY2FzZSBFVF9MT05HOiB7Ci0tICAgICAgdmlzaXRvci0+TG9uZygq cmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQ2NF90ICo+KHZhbCkpOwotKyAgICAgIHZpc2l0b3It PkxvbmcoUmVhZFNjYWxhcjxpbnQ2NF90Pih2YWwpKTsKLSAgICAgICBicmVhazsKLSAgICAgfQot ICAgICBjYXNlIEVUX1VMT05HOiB7Ci0tICAgICAgdmlzaXRvci0+VUxvbmcoKnJlaW50ZXJwcmV0 X2Nhc3Q8Y29uc3QgdWludDY0X3QgKj4odmFsKSk7Ci0rICAgICAgdmlzaXRvci0+VUxvbmcoUmVh ZFNjYWxhcjx1aW50NjRfdD4odmFsKSk7Ci0gICAgICAgYnJlYWs7Ci0gICAgIH0KLSAgICAgY2Fz ZSBFVF9GTE9BVDogewotLSAgICAgIHZpc2l0b3ItPkZsb2F0KCpyZWludGVycHJldF9jYXN0PGNv bnN0IGZsb2F0ICo+KHZhbCkpOwotKyAgICAgIHZpc2l0b3ItPkZsb2F0KFJlYWRTY2FsYXI8Zmxv YXQ+KHZhbCkpOwotICAgICAgIGJyZWFrOwotICAgICB9Ci0gICAgIGNhc2UgRVRfRE9VQkxFOiB7 Ci0tICAgICAgdmlzaXRvci0+RG91YmxlKCpyZWludGVycHJldF9jYXN0PGNvbnN0IGRvdWJsZSAq Pih2YWwpKTsKLSsgICAgICB2aXNpdG9yLT5Eb3VibGUoUmVhZFNjYWxhcjxkb3VibGU+KHZhbCkp OwotICAgICAgIGJyZWFrOwotICAgICB9Ci0gICAgIGNhc2UgRVRfU1RSSU5HOiB7Ci0tLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2xldmVsZGF0YWJhc2Uv cG9ydC9wb3J0X2Nocm9taXVtLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvbGV2ZWxkYXRhYmFzZS9wb3J0L3BvcnRfY2hyb21pdW0uaAotQEAgLTIz LDggKzIzLDExIEBACi0gbmFtZXNwYWNlIGxldmVsZGIgewotIG5hbWVzcGFjZSBwb3J0IHsKLSAK LS0vLyBDaHJvbWl1bSBvbmx5IHN1cHBvcnRzIGxpdHRsZSBlbmRpYW4uCi0rI2lmIEFSQ0hfQ1BV X0xJVFRMRV9FTkRJQU4KLSBzdGF0aWMgY29uc3QgYm9vbCBrTGl0dGxlRW5kaWFuID0gdHJ1ZTsK LSsjZWxzZQotK3N0YXRpYyBjb25zdCBib29sIGtMaXR0bGVFbmRpYW4gPSBmYWxzZTsKLSsjZW5k aWYKLSAKLSBjbGFzcyBMT0NLQUJMRSBNdXRleCB7Ci0gIHB1YmxpYzoKLS0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvbW9kcF9iNjQvQlVJTEQuZ24KLSsr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvbW9kcF9iNjQv QlVJTEQuZ24KLUBAIC0yLDEwICsyLDE2IEBACi0gIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gIyBmb3VuZCBp biB0aGUgTElDRU5TRSBmaWxlLgotIAotK2ltcG9ydCgiLy9idWlsZC9jb25maWcvaG9zdF9ieXRl b3JkZXIuZ25pIikKLSsKLSBzdGF0aWNfbGlicmFyeSgibW9kcF9iNjQiKSB7Ci0gICBzb3VyY2Vz ID0gWwotICAgICAibW9kcF9iNjQuY2MiLAotICAgICAibW9kcF9iNjQuaCIsCi0gICAgICJtb2Rw X2I2NF9kYXRhLmgiLAotICAgXQotKwotKyAgaWYgKGhvc3RfYnl0ZW9yZGVyID09ICJiaWciKSB7 Ci0rICAgIGRlZmluZXMgPSBbICJXT1JEU19CSUdFTkRJQU49MSIgXQotKyAgfQotIH0KLS0tLSBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvbW9kcF9iNjQvbW9k cF9iNjQuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvbW9kcF9iNjQvbW9kcF9iNjQuY2MKLUBAIC0xMTgsNyArMTE4LDcgQEAgc2l6ZV90IG1vZHBf YjY0X2VuY29kZShjaGFyKiBkZXN0LCBjb25zdCBjaGFyKiBzdHIsIHNpemVfdCBsZW4pCi0gfQot IAotICNpZmRlZiBXT1JEU19CSUdFTkRJQU4gICAvKiBCSUcgRU5ESUFOIC0tIFNVTiAvIElCTSAv IE1PVE9ST0xBICovCi0taW50IG1vZHBfYjY0X2RlY29kZShjaGFyKiBkZXN0LCBjb25zdCBjaGFy KiBzcmMsIGludCBsZW4pCi0rc2l6ZV90IG1vZHBfYjY0X2RlY29kZShjaGFyKiBkZXN0LCBjb25z dCBjaGFyKiBzcmMsIHNpemVfdCBsZW4pCi0gewotICAgICBpZiAobGVuID09IDApIHJldHVybiAw OwotIAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9w ZXJmZXR0by9pbmNsdWRlL3BlcmZldHRvL2Jhc2UvdXRpbHMuaAotKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9wZXJmZXR0by9pbmNsdWRlL3BlcmZldHRv L2Jhc2UvdXRpbHMuaAotQEAgLTIyLDYgKzIyLDcgQEAKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAj aW5jbHVkZSA8c3RkZGVmLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDx0eXBl X3RyYWl0cz4KLSAjaWYgIVBFUkZFVFRPX0JVSUxERkxBRyhQRVJGRVRUT19PU19XSU4pCi0gI2lu Y2x1ZGUgPHN5cy90eXBlcy5oPgotICNlbmRpZgotQEAgLTkxLDcgKzkyLDcgQEAgc3RydWN0IEZy ZWVEZWxldGVyIHsKLSAKLSB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSBjb25zdGV4cHIgVCBBc3N1 bWVMaXR0bGVFbmRpYW4oVCB2YWx1ZSkgewotLSAgc3RhdGljX2Fzc2VydChfX0JZVEVfT1JERVJf XyA9PSBfX09SREVSX0xJVFRMRV9FTkRJQU5fXywKLSsgIHN0YXRpY19hc3NlcnQoc3RkOjppc19z YW1lPFQsVD46OnZhbHVlICYmIF9fQllURV9PUkRFUl9fID09IF9fT1JERVJfTElUVExFX0VORElB Tl9fLAotICAgICAgICAgICAgICAgICAiVW5pbXBsZW1lbnRlZCBvbiBiaWctZW5kaWFuIGFyY2hz Iik7Ci0gICByZXR1cm4gdmFsdWU7Ci0gfQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9wZXJmZXR0by9pbmNsdWRlL3BlcmZldHRvL3Byb3RvemVyby9t ZXNzYWdlLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvcGVyZmV0dG8vaW5jbHVkZS9wZXJmZXR0by9wcm90b3plcm8vbWVzc2FnZS5oCi1AQCAtMTM4 LDYgKzEzOCwxMyBAQCBjbGFzcyBQRVJGRVRUT19FWFBPUlQgTWVzc2FnZSB7Ci0gCi0gICAgIHBv cyA9IHByb3RvX3V0aWxzOjpXcml0ZVZhckludChwcm90b191dGlsczo6TWFrZVRhZ0ZpeGVkPFQ+ KGZpZWxkX2lkKSwgcG9zKTsKLSAgICAgbWVtY3B5KHBvcywgJnZhbHVlLCBzaXplb2YoVCkpOwot KyNpZiBfX0JZVEVfT1JERVJfXyAhPSBfX09SREVSX0xJVFRMRV9FTkRJQU5fXwotKyAgICBmb3Ig KHNpemVfdCBpID0gc2l6ZW9mKFQpLzI7IGktLTsgKSB7Ci0rICAgICAgdWludDhfdCB0bXAgPSBw b3NbaV07Ci0rICAgICAgcG9zW2ldID0gcG9zW3NpemVvZihUKS0xLWldOwotKyAgICAgIHBvc1tz aXplb2YoVCktMS1pXSA9IHRtcDsKLSsgICAgfQotKyNlbmRpZgotICAgICBwb3MgKz0gc2l6ZW9m KFQpOwotICAgICAvLyBUT0RPOiBPcHRpbWl6ZSBtZW1jcHkgcGVyZm9ybWFuY2UsIHNlZSBodHRw Oi8vY3JidWcuY29tLzYyNDMxMSAuCi0gICAgIFdyaXRlVG9TdHJlYW0oYnVmZmVyLCBwb3MpOwot LS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9wZXJmZXR0 by9zcmMvcHJvdG96ZXJvL21lc3NhZ2UuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvcGVyZmV0dG8vc3JjL3Byb3RvemVyby9tZXNzYWdlLmNjCi1A QCAtMjEsMTIgKzIxLDYgQEAKLSAjaW5jbHVkZSAicGVyZmV0dG8vYmFzZS9sb2dnaW5nLmgiCi0g I2luY2x1ZGUgInBlcmZldHRvL3Byb3RvemVyby9tZXNzYWdlX2hhbmRsZS5oIgotIAotLSNpZiBf X0JZVEVfT1JERVJfXyAhPSBfX09SREVSX0xJVFRMRV9FTkRJQU5fXwotLS8vIFRoZSBtZW1jcHko KSBmb3IgZmxvYXQgYW5kIGRvdWJsZSBiZWxvdyBuZWVkcyB0byBiZSBhZGp1c3RlZCBpZiB3ZSB3 YW50IHRvCi0tLy8gc3VwcG9ydCBiaWcgZW5kaWFuIENQVXMuIFRoZXJlIGRvZXNuJ3Qgc2VlbSB0 byBiZSBhIGNvbXBlbGxpbmcgbmVlZCB0b2RheS4KLS0jZXJyb3IgVW5pbXBsZW1lbnRlZCBmb3Ig YmlnIGVuZGlhbiBhcmNocy4KLS0jZW5kaWYKLS0KLSBuYW1lc3BhY2UgcHJvdG96ZXJvIHsKLSAK LSAvLyBzdGF0aWMKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRf cGFydHkvcGVyZmV0dG8vc3JjL3Byb3RvemVyby9wcm90b19kZWNvZGVyLmNjCi0rKysgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3BlcmZldHRvL3NyYy9wcm90 b3plcm8vcHJvdG9fZGVjb2Rlci5jYwotQEAgLTI5LDcgKzI5LDggQEAgdXNpbmcgbmFtZXNwYWNl IHByb3RvX3V0aWxzOwotICNkZWZpbmUgQllURV9TV0FQX1RPX0xFMzIoeCkgKHgpCi0gI2RlZmlu ZSBCWVRFX1NXQVBfVE9fTEU2NCh4KSAoeCkKLSAjZWxzZQotLSNlcnJvciBVbmltcGxlbWVudGVk IGZvciBiaWcgZW5kaWFuIGFyY2hzLgotKyNkZWZpbmUgQllURV9TV0FQX1RPX0xFMzIoeCkgX19i dWlsdGluX2Jzd2FwMzIoeCkKLSsjZGVmaW5lIEJZVEVfU1dBUF9UT19MRTY0KHgpIF9fYnVpbHRp bl9ic3dhcDY0KHgpCi0gI2VuZGlmCi0gCi0gUHJvdG9EZWNvZGVyOjpGaWVsZCBQcm90b0RlY29k ZXI6OlJlYWRGaWVsZCgpIHsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tQb3N0Q29uZmlnLmgKLSsrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL2NvcmUv U2tQb3N0Q29uZmlnLmgKLUBAIC00MCwxMiArNDAsNiBAQAotICMgIGVycm9yICJtdXN0IGRlZmlu ZSBlaXRoZXIgU0tfQ1BVX0xFTkRJQU4gb3IgU0tfQ1BVX0JFTkRJQU4iCi0gI2VuZGlmCi0gCi0t I2lmIGRlZmluZWQoU0tfQ1BVX0JFTkRJQU4pICYmICFkZWZpbmVkKElfQUNLTk9XTEVER0VfU0tJ QV9ET0VTX05PVF9TVVBQT1JUX0JJR19FTkRJQU4pCi0tICAgICNlcnJvciAiVGhlIFNraWEgdGVh bSBpcyBub3QgZW5kaWFuLXNhdnZ5IGVub3VnaCB0byBzdXBwb3J0IGJpZy1lbmRpYW4gQ1BVcy4i Ci0tICAgICNlcnJvciAiSWYgeW91IHN0aWxsIHdhbnQgdG8gdXNlIFNraWEsIgotLSAgICAjZXJy b3IgInBsZWFzZSBkZWZpbmUgSV9BQ0tOT1dMRURHRV9TS0lBX0RPRVNfTk9UX1NVUFBPUlRfQklH X0VORElBTi4iCi0tI2VuZGlmCi0tCi0gLyoqCi0gICogRW5zdXJlIHRoZSBwb3J0IGhhcyBkZWZp bmVkIGFsbCBvZiBTS19YMzJfU0hJRlQsIG9yIG5vbmUgb2YgdGhlbS4KLSAgKi8KLS0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL3By aXZhdGUvR3JUeXBlc1ByaXYuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvcHJpdmF0ZS9HclR5cGVzUHJpdi5oCi1AQCAtNjUs OSArNjUsNiBAQCBlbnVtIEdyUGl4ZWxDb25maWcgewotIHN0YXRpYyBjb25zdCBpbnQga0dyUGl4 ZWxDb25maWdDbnQgPSBrTGFzdF9HclBpeGVsQ29uZmlnICsgMTsKLSAKLSAvLyBBbGlhc2VzIGZv ciBwaXhlbCBjb25maWdzIHRoYXQgbWF0Y2ggc2tpYSdzIGJ5dGUgb3JkZXIuCi0tI2lmbmRlZiBT S19DUFVfTEVORElBTgotLSNlcnJvciAiU2tpYSBncHUgY3VycmVudGx5IGFzc3VtZXMgbGl0dGxl IGVuZGlhbiIKLS0jZW5kaWYKLSAjaWYgU0tfUE1DT0xPUl9CWVRFX09SREVSKEIsRyxSLEEpCi0g c3RhdGljIGNvbnN0IEdyUGl4ZWxDb25maWcga1NraWE4ODg4X0dyUGl4ZWxDb25maWcgPSBrQkdS QV84ODg4X0dyUGl4ZWxDb25maWc7Ci0gI2VsaWYgU0tfUE1DT0xPUl9CWVRFX09SREVSKFIsRyxC LEEpCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3Nr aWEvc3JjL2NvZGVjL1NrQ29kZWNQcml2LmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9zcmMvY29kZWMvU2tDb2RlY1ByaXYuaAotQEAgLTE0 LDYgKzE0LDcgQEAKLSAjaW5jbHVkZSAiU2tFbmNvZGVkT3JpZ2luLmgiCi0gI2luY2x1ZGUgIlNr SW1hZ2VJbmZvLmgiCi0gI2luY2x1ZGUgIlNrVHlwZXMuaCIKLSsjaW5jbHVkZSAiU2tFbmRpYW4u aCIKLSAKLSAjaWZkZWYgU0tfUFJJTlRfQ09ERUNfTUVTU0FHRVMKLSAgICAgI2RlZmluZSBTa0Nv ZGVjUHJpbnRmIFNrRGVidWdmCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L3NraWEvc3JjL2NvcmUvU2tDb2xvci5jcHAKLSsrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9zcmMvY29yZS9Ta0NvbG9yLmNw cAotQEAgLTEwOCwxMyArMTA4LDI5IEBAIFNrQ29sb3IgU2tIU1ZUb0NvbG9yKFU4Q1BVIGEsIGNv bnN0IFNrU2NhbGFyIGhzdlszXSkgewotIHRlbXBsYXRlIDw+Ci0gU2tDb2xvcjRmIFNrQ29sb3I0 Zjo6RnJvbUNvbG9yKFNrQ29sb3IgYmdyYSkgewotICAgICBTa0NvbG9yNGYgcmdiYTsKLS0gICAg c3dpenpsZV9yYihTazRmX2Zyb21MMzIoYmdyYSkpLnN0b3JlKHJnYmEudmVjKCkpOwotKyAgICBT azRmIGM0ZiA9IFNrNGZfZnJvbUwzMihiZ3JhKTsKLSsjaWZkZWYgU0tfQ1BVX0JFTkRJQU4KLSsg ICAgLy8gQVJHQiAtPiBSR0JBCi0rICAgIGM0ZiA9IFNrTnhfc2h1ZmZsZTwxLCAyLCAzLCAwPihj NGYpOwotKyNlbHNlCi0rICAgIC8vIEJHUkEgLT4gUkdCQQotKyAgICBjNGYgPSBzd2l6emxlX3Ji KGM0Zik7Ci0rI2VuZGlmCi0rICAgIGM0Zi5zdG9yZShyZ2JhLnZlYygpKTsKLSAgICAgcmV0dXJu IHJnYmE7Ci0gfQotIAotIHRlbXBsYXRlIDw+Ci0gU2tDb2xvciBTa0NvbG9yNGY6OnRvU2tDb2xv cigpIGNvbnN0IHsKLS0gICAgcmV0dXJuIFNrNGZfdG9MMzIoc3dpenpsZV9yYihTazRmOjpMb2Fk KHRoaXMtPnZlYygpKSkpOwotKyAgICBTazRmIGM0ZiA9IFNrNGY6OkxvYWQodGhpcy0+dmVjKCkp OwotKyNpZmRlZiBTS19DUFVfQkVORElBTgotKyAgICAvLyBSR0JBIC0+IEFSR0IKLSsgICAgYzRm ID0gU2tOeF9zaHVmZmxlPDMsIDAsIDEsIDI+KGM0Zik7Ci0rI2Vsc2UKLSsgICAgLy8gUkdCQSAt PiBCR1JBCi0rICAgIGM0ZiA9IHN3aXp6bGVfcmIoYzRmKTsKLSsjZW5kaWYKLSsgICAgcmV0dXJu IFNrNGZfdG9MMzIoYzRmKTsKLSB9Ci0gCi0gdGVtcGxhdGUgPD4KLS0tLSBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9zcmMvY29yZS9Ta1BpeG1hcC5j cHAKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tp YS9zcmMvY29yZS9Ta1BpeG1hcC5jcHAKLUBAIC0yNDYsNyArMjQ2LDggQEAgU2tDb2xvciBTa1Bp eG1hcDo6Z2V0Q29sb3IoaW50IHgsIGludCB5KSBjb25zdCB7Ci0gICAgIGNvbnN0IGJvb2wgbmVl ZHNVbnByZW11bCA9IChrUHJlbXVsX1NrQWxwaGFUeXBlID09IGZJbmZvLmFscGhhVHlwZSgpKTsK LSAgICAgYXV0byB0b0NvbG9yID0gW25lZWRzVW5wcmVtdWxdKHVpbnQzMl90IG1heWJlUHJlbXVs Q29sb3IpIHsKLSAgICAgICAgIHJldHVybiBuZWVkc1VucHJlbXVsID8gU2tVblByZU11bHRpcGx5 OjpQTUNvbG9yVG9Db2xvcihtYXliZVByZW11bENvbG9yKQotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOiBTa1N3aXp6bGVfQkdSQV90b19QTUNvbG9yKG1heWJlUHJlbXVsQ29sb3IpOwot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBTa0NvbG9yU2V0QVJHQihTa0dldFBhY2tl ZEEzMihtYXliZVByZW11bENvbG9yKSwgU2tHZXRQYWNrZWRSMzIobWF5YmVQcmVtdWxDb2xvciks Ci0rCQkJCQkgICAgICBTa0dldFBhY2tlZEczMihtYXliZVByZW11bENvbG9yKSwgU2tHZXRQYWNr ZWRCMzIobWF5YmVQcmVtdWxDb2xvcikpOwotICAgICB9OwotIAotICAgICBzd2l0Y2ggKHRoaXMt PmNvbG9yVHlwZSgpKSB7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L3NraWEvc3JjL29wdHMvU2s0cHhfbm9uZS5oCi0rKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEvc3JjL29wdHMvU2s0cHhfbm9uZS5o Ci1AQCAtMzUsNyArMzUsNiBAQCBpbmxpbmUgU2s0cHggU2s0cHg6OldpZGU6OmRpdjI1NSgpIGNv bnN0IHsKLSB9Ci0gCi0gaW5saW5lIFNrNHB4IFNrNHB4OjphbHBoYXMoKSBjb25zdCB7Ci0tICAg IHN0YXRpY19hc3NlcnQoU0tfQTMyX1NISUZUID09IDI0LCAiVGhpcyBtZXRob2QgYXNzdW1lcyBs aXR0bGUtZW5kaWFuLiIpOwotICAgICByZXR1cm4gU2sxNmIoKCp0aGlzKVsgM10sICgqdGhpcylb IDNdLCAoKnRoaXMpWyAzXSwgKCp0aGlzKVsgM10sCi0gICAgICAgICAgICAgICAgICAoKnRoaXMp WyA3XSwgKCp0aGlzKVsgN10sICgqdGhpcylbIDddLCAoKnRoaXMpWyA3XSwKLSAgICAgICAgICAg ICAgICAgICgqdGhpcylbMTFdLCAoKnRoaXMpWzExXSwgKCp0aGlzKVsxMV0sICgqdGhpcylbMTFd LAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lh L3NyYy9vcHRzL1NrQmxpdFJvd19vcHRzLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9zcmMvb3B0cy9Ta0JsaXRSb3dfb3B0cy5oCi1AQCAt MjM3LDggKzIzNyw4IEBAIHZvaWQgYmxpdF9yb3dfczMyYV9vcGFxdWUoU2tQTUNvbG9yKiBkc3Qs IGNvbnN0IFNrUE1Db2xvciogc3JjLCBpbnQgbGVuLCBVOENQVSBhCi0gICAgICAgICAvLyB3aXRo IGNocm9taXVtOjYxMTAwMiB3ZSBuZWVkIHRvIGtlZXAgaXQgdW50aWwgd2UgZmlndXJlIG91dCB3 aGVyZQotICAgICAgICAgLy8gdGhlIG5vbi1wcmVtdWx0aXBsaWVkIHNyYyB2YWx1ZXMgKGxpa2Ug MHgwMEZGRkZGRikgYXJlIGNvbWluZyBmcm9tLgotICAgICAgICAgLy8gVE9ETyhtdGtsZWluKTog c29ydCB0aGlzIG91dCBhbmQgYXNzZXJ0ICpzcmMgaXMgcHJlbXVsIGhlcmUuCi0tICAgICAgICBp ZiAoKnNyYyAmIDB4RkYwMDAwMDApIHsKLS0gICAgICAgICAgICAqZHN0ID0gKCpzcmMgPj0gMHhG RjAwMDAwMCkgPyAqc3JjIDogU2tQTVNyY092ZXIoKnNyYywgKmRzdCk7Ci0rICAgICAgICBpZiAo KnNyYyAmICgweEZGIDw8IFNLX0EzMl9TSElGVCkpIHsKLSsgICAgICAgICAgICAqZHN0ID0gKCgq c3JjIDw8ICgyNCAtIFNLX0EzMl9TSElGVCkpID49IDB4RkYwMDAwMDApID8gKnNyYyA6IFNrUE1T cmNPdmVyKCpzcmMsICpkc3QpOwotICAgICAgICAgfQotICAgICAgICAgc3JjKys7Ci0gICAgICAg ICBkc3QrKzsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvc2tpYS9zcmMvb3B0cy9Ta1Jhc3RlclBpcGVsaW5lX29wdHMuaAotKysrIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL3NyYy9vcHRzL1NrUmFzdGVy UGlwZWxpbmVfb3B0cy5oCi1AQCAtOTQ4LDEwICs5NDgsMTcgQEAgU0kgdm9pZCBmcm9tXzQ0NDQo VTE2IF80NDQ0LCBGKiByLCBGKiBnLCBGKiBiLCBGKiBhKSB7Ci0gICAgICphID0gY2FzdCh3aWRl ICYgKDE1PDwgMCkpICogKDEuMGYgLyAoMTU8PCAwKSk7Ci0gfQotIFNJIHZvaWQgZnJvbV84ODg4 KFUzMiBfODg4OCwgRiogciwgRiogZywgRiogYiwgRiogYSkgewotKyNpZmRlZiBTS19DUFVfQkVO RElBTgotKyAgICAqciA9IGNhc3QoKF84ODg4ID4+IDI0KSAgICAgICApICogKDEvMjU1LjBmKTsK LSsgICAgKmcgPSBjYXN0KChfODg4OCA+PiAxNikgJiAweGZmKSAqICgxLzI1NS4wZik7Ci0rICAg ICpiID0gY2FzdCgoXzg4ODggPj4gIDgpICYgMHhmZikgKiAoMS8yNTUuMGYpOwotKyAgICAqYSA9 IGNhc3QoKF84ODg4ICAgICAgKSAmIDB4ZmYpICogKDEvMjU1LjBmKTsKLSsjZWxzZQotICAgICAq ciA9IGNhc3QoKF84ODg4ICAgICAgKSAmIDB4ZmYpICogKDEvMjU1LjBmKTsKLSAgICAgKmcgPSBj YXN0KChfODg4OCA+PiAgOCkgJiAweGZmKSAqICgxLzI1NS4wZik7Ci0gICAgICpiID0gY2FzdCgo Xzg4ODggPj4gMTYpICYgMHhmZikgKiAoMS8yNTUuMGYpOwotICAgICAqYSA9IGNhc3QoKF84ODg4 ID4+IDI0KSAgICAgICApICogKDEvMjU1LjBmKTsKLSsjZW5kaWYKLSB9Ci0gU0kgdm9pZCBmcm9t XzEwMTAxMDIoVTMyIHJnYmEsIEYqIHIsIEYqIGcsIEYqIGIsIEYqIGEpIHsKLSAgICAgKnIgPSBj YXN0KChyZ2JhICAgICAgKSAmIDB4M2ZmKSAqICgxLzEwMjMuMGYpOwotQEAgLTEyNzgsMTAgKzEy ODUsMTcgQEAgU1RBR0Uoc3Jjb3Zlcl9yZ2JhXzg4ODgsIGNvbnN0IFNrUmFzdGVyUGlwZWxpbmVf TWVtb3J5Q3R4KiBjdHgpIHsKLSAgICAgYXV0byBwdHIgPSBwdHJfYXRfeHk8dWludDMyX3Q+KGN0 eCwgZHgsZHkpOwotIAotICAgICBVMzIgZHN0ID0gbG9hZDxVMzI+KHB0ciwgdGFpbCk7Ci0rI2lm ZGVmIFNLX0NQVV9CRU5ESUFOCi0rICAgIGRyID0gY2FzdCgoZHN0ID4+IDI0KSAgICAgICApOwot KyAgICBkZyA9IGNhc3QoKGRzdCA+PiAxNikgJiAweGZmKTsKLSsgICAgZGIgPSBjYXN0KChkc3Qg Pj4gIDgpICYgMHhmZik7Ci0rICAgIGRhID0gY2FzdCgoZHN0ICAgICAgKSAmIDB4ZmYpOwotKyNl bHNlCi0gICAgIGRyID0gY2FzdCgoZHN0ICAgICAgKSAmIDB4ZmYpOwotICAgICBkZyA9IGNhc3Qo KGRzdCA+PiAgOCkgJiAweGZmKTsKLSAgICAgZGIgPSBjYXN0KChkc3QgPj4gMTYpICYgMHhmZik7 Ci0gICAgIGRhID0gY2FzdCgoZHN0ID4+IDI0KSAgICAgICApOwotKyNlbmRpZgotICAgICAvLyB7 ZHIsZGcsZGIsZGF9IGFyZSBpbiBbMCwyNTVdCi0gICAgIC8vIHsgciwgZywgYiwgYX0gYXJlIGlu IFswLCAgMV0gKGJ1dCBtYXkgYmUgb3V0IG9mIGdhbXV0KQotIAotQEAgLTEyOTIsMTAgKzEzMDYs MTcgQEAgU1RBR0Uoc3Jjb3Zlcl9yZ2JhXzg4ODgsIGNvbnN0IFNrUmFzdGVyUGlwZWxpbmVfTWVt b3J5Q3R4KiBjdHgpIHsKLSAgICAgLy8geyByLCBnLCBiLCBhfSBhcmUgbm93IGluIFswLDI1NV0g IChidXQgbWF5IGJlIG91dCBvZiBnYW11dCkKLSAKLSAgICAgLy8gdG9fdW5vcm0oKSBjbGFtcHMg YmFjayB0byBnYW11dC4gIFNjYWxpbmcgYnkgMSBzaW5jZSB3ZSdyZSBhbHJlYWR5IDI1NS1iaWFz ZWQuCi0rI2lmZGVmIFNLX0NQVV9CRU5ESUFOCi0rICAgIGRzdCA9IHRvX3Vub3JtKHIsIDEsIDI1 NSkgPDwgMjQKLSsgICAgICAgIHwgdG9fdW5vcm0oZywgMSwgMjU1KSA8PCAxNgotKyAgICAgICAg fCB0b191bm9ybShiLCAxLCAyNTUpIDw8ICA4Ci0rICAgICAgICB8IHRvX3Vub3JtKGEsIDEsIDI1 NSk7Ci0rI2Vsc2UKLSAgICAgZHN0ID0gdG9fdW5vcm0ociwgMSwgMjU1KQotICAgICAgICAgfCB0 b191bm9ybShnLCAxLCAyNTUpIDw8ICA4Ci0gICAgICAgICB8IHRvX3Vub3JtKGIsIDEsIDI1NSkg PDwgMTYKLSAgICAgICAgIHwgdG9fdW5vcm0oYSwgMSwgMjU1KSA8PCAyNDsKLSsjZW5kaWYKLSAg ICAgc3RvcmUocHRyLCBkc3QsIHRhaWwpOwotIH0KLSAKLUBAIC0xNjk0LDEwICsxNzE1LDE3IEBA IFNUQUdFKGdhdGhlcl84ODg4LCBjb25zdCBTa1Jhc3RlclBpcGVsaW5lX0dhdGhlckN0eCogY3R4 KSB7Ci0gU1RBR0Uoc3RvcmVfODg4OCwgY29uc3QgU2tSYXN0ZXJQaXBlbGluZV9NZW1vcnlDdHgq IGN0eCkgewotICAgICBhdXRvIHB0ciA9IHB0cl9hdF94eTx1aW50MzJfdD4oY3R4LCBkeCxkeSk7 Ci0gCi0rI2lmZGVmIFNLX0NQVV9CRU5ESUFOCi0rICAgIFUzMiBweCA9IHRvX3Vub3JtKHIsIDI1 NSkgPDwgMjQKLSsgICAgICAgICAgIHwgdG9fdW5vcm0oZywgMjU1KSA8PCAxNgotKyAgICAgICAg ICAgfCB0b191bm9ybShiLCAyNTUpIDw8ICA4Ci0rICAgICAgICAgICB8IHRvX3Vub3JtKGEsIDI1 NSk7Ci0rI2Vsc2UKLSAgICAgVTMyIHB4ID0gdG9fdW5vcm0ociwgMjU1KQotICAgICAgICAgICAg fCB0b191bm9ybShnLCAyNTUpIDw8ICA4Ci0gICAgICAgICAgICB8IHRvX3Vub3JtKGIsIDI1NSkg PDwgMTYKLSAgICAgICAgICAgIHwgdG9fdW5vcm0oYSwgMjU1KSA8PCAyNDsKLSsjZW5kaWYKLSAg ICAgc3RvcmUocHRyLCBweCwgdGFpbCk7Ci0gfQotIAotQEAgLTI4NTIsMTAgKzI4ODAsMTcgQEAg U0kgdm9pZCBmcm9tXzg4ODgoVTMyIHJnYmEsIFUxNiogciwgVTE2KiBnLCBVMTYqIGIsIFUxNiog YSkgewotICAgICAgICAgcmV0dXJuIGNhc3Q8VTE2Pih2KTsKLSAgICAgfTsKLSAjZW5kaWYKLSsj aWZkZWYgU0tfQ1BVX0JFTkRJQU4KLSsgICAgKnIgPSBjYXN0X1UxNihyZ2JhID4+ICAgMTYpID4+ ICA4OwotKyAgICAqZyA9IGNhc3RfVTE2KHJnYmEgPj4gICAxNikgJiAyNTU7Ci0rICAgICpiID0g Y2FzdF9VMTYocmdiYSAmIDY1NTM1KSA+PiAgODsKLSsgICAgKmEgPSBjYXN0X1UxNihyZ2JhICYg NjU1MzUpICYgMjU1OwotKyNlbHNlCi0gICAgICpyID0gY2FzdF9VMTYocmdiYSAmIDY1NTM1KSAm IDI1NTsKLSAgICAgKmcgPSBjYXN0X1UxNihyZ2JhICYgNjU1MzUpID4+ICA4OwotICAgICAqYiA9 IGNhc3RfVTE2KHJnYmEgPj4gICAxNikgJiAyNTU7Ci0gICAgICphID0gY2FzdF9VMTYocmdiYSA+ PiAgIDE2KSA+PiAgODsKLSsjZW5kaWYKLSB9Ci0gCi0gU0kgdm9pZCBsb2FkXzg4ODhfKGNvbnN0 IHVpbnQzMl90KiBwdHIsIHNpemVfdCB0YWlsLCBVMTYqIHIsIFUxNiogZywgVTE2KiBiLCBVMTYq IGEpIHsKLUBAIC0yODk3LDEwICsyOTMyLDE1IEBAIFNJIHZvaWQgc3RvcmVfODg4OF8odWludDMy X3QqIHB0ciwgc2l6ZV90IHRhaWwsIFUxNiByLCBVMTYgZywgVTE2IGIsIFUxNiBhKSB7Ci0gICAg ICAgICBjYXNlIDI6IHZzdDRfbGFuZV91OCgodWludDhfdCopKHB0cisxKSwgcmdiYSwgMSk7Ci0g ICAgICAgICBjYXNlIDE6IHZzdDRfbGFuZV91OCgodWludDhfdCopKHB0ciswKSwgcmdiYSwgMCk7 Ci0gICAgIH0KLSsjZWxzZQotKyNpZmRlZiBTS19DUFVfQkVORElBTgotKyAgICBzdG9yZShwdHIs IHRhaWwsIGNhc3Q8VTMyPigocjw8OCkgfCBnKSA8PCAxNgotKyAgICAgICAgICAgICAgICAgICB8 IGNhc3Q8VTMyPigoYjw8OCkgfCBhKSA8PCAwKTsKLSAjZWxzZQotICAgICBzdG9yZShwdHIsIHRh aWwsIGNhc3Q8VTMyPihyIHwgKGc8PDgpKSA8PCAgMAotICAgICAgICAgICAgICAgICAgICB8IGNh c3Q8VTMyPihiIHwgKGE8PDgpKSA8PCAxNik7Ci0gI2VuZGlmCi0rI2VuZGlmCi0gfQotIAotIFNU QUdFX1BQKGxvYWRfODg4OCwgY29uc3QgU2tSYXN0ZXJQaXBlbGluZV9NZW1vcnlDdHgqIGN0eCkg ewotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lh L3NyYy91dGlscy9Ta0pTT04uY3BwCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L3NraWEvc3JjL3V0aWxzL1NrSlNPTi5jcHAKLUBAIC0zNCw2ICszNCwx MCBAQCB2b2lkIFZhbHVlOjppbml0X3RhZ2dlZChUYWcgdCkgewotIAotIC8vIFBvaW50ZXIgdmFs dWVzIHN0b3JlIGEgdHlwZSAoaW4gdGhlIHVwcGVyIGtUYWdCaXRzIGJpdHMpIGFuZCBhIHBvaW50 ZXIuCi0gdm9pZCBWYWx1ZTo6aW5pdF90YWdnZWRfcG9pbnRlcihUYWcgdCwgdm9pZCogcCkgewot KyNpZiAhZGVmaW5lZChTS19DUFVfTEVORElBTikKLSsgICAgLy8gQ2hlY2sgdGhhdCBrUmVjQWxp Z24gaXMgbGFyZ2UgZW5vdWdoIHRvIGxlYXZlIHJvb20gZm9yIHRoZSB0YWcKLSsgICAgc3RhdGlj X2Fzc2VydChzaXplb2YoVmFsdWUpID4gc2l6ZW9mKHVpbnRwdHJfdCkgfHwgIShrUmVjQWxpZ24g JiBWYWx1ZTo6a1RhZ01hc2spLCAia1JlY0FsaWduIGlzIG5vdCBhIG11bHRpcGxlIG9mIGtUYWdN YXNrKzEiKTsKLSsjZW5kaWYKLSAgICAgKnRoaXMtPmNhc3Q8dWludHB0cl90PigpID0gcmVpbnRl cnByZXRfY2FzdDx1aW50cHRyX3Q+KHApOwotIAotICAgICBpZiAoc2l6ZW9mKFZhbHVlKSA9PSBz aXplb2YodWludHB0cl90KSkgewotQEAgLTE2OSw3ICsxNzMsNyBAQCBwcml2YXRlOgotICNpZiBk ZWZpbmVkKFNLX0NQVV9MRU5ESUFOKQotICAgICAgICAgKnM2NCAmPSAweDAwZmZmZmZmZmZmZmZm ZmZVTEwgPj4gKChrTWF4SW5saW5lU3RyaW5nU2l6ZSAtIHNpemUpICogOCk7Ci0gI2Vsc2UKLS0g ICAgICAgIHN0YXRpY19hc3NlcnQoZmFsc2UsICJCaWctZW5kaWFuIGJ1aWxkcyBhcmUgbm90IHN1 cHBvcnRlZCBhdCB0aGlzIHRpbWUuIik7Ci0rICAgICAgICAqczY0ICY9IDB4ZmZmZmZmZmZmZmZm ZmYwMFVMTCA8PCAoKGtNYXhJbmxpbmVTdHJpbmdTaXplIC0gc2l6ZSkgKiA4KTsKLSAjZW5kaWYK LSAgICAgfQotIH07Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L3NraWEvc3JjL3V0aWxzL1NrSlNPTi5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEvc3JjL3V0aWxzL1NrSlNPTi5oCi1AQCAtMTIw LDYgKzEyMCw3IEBAIHByb3RlY3RlZDoKLSAgICAgICAgICAtLSBoaWdoZXN0IDMgYml0cyByZXNl cnZlZCBmb3IgdHlwZSBzdG9yYWdlCi0gCi0gICAgICAqLwotKyNpZiBkZWZpbmVkKFNLX0NQVV9M RU5ESUFOKQotICAgICBlbnVtIGNsYXNzIFRhZyA6IHVpbnQ4X3QgewotICAgICAgICAgLy8gV2Ug cGlja2VkIGtTaG9ydFN0cmluZyA9PSAwIHNvIHRoYXQgdGFnIDB4MDAgYW5kIHN0b3JlZCBtYXhf c2l6ZS1zaXplICg3LTc9MCkKLSAgICAgICAgIC8vIGNvbnZlbmllbnRseSBvdmVybGFwIHRoZSAn XDAnIHRlcm1pbmF0b3IsIGFsbG93aW5nIHVzIHRvIHN0b3JlIGEgNyBjaGFyYWN0ZXIKLUBAIC0x MzQsNiArMTM1LDIyIEBAIHByb3RlY3RlZDoKLSAgICAgICAgIGtPYmplY3QgICAgICAgICAgICAg ICAgICAgICAgID0gMGIxMTEwMDAwMCwgIC8vIHB0ciB0byBleHRlcm5hbCBzdG9yYWdlCi0gICAg IH07Ci0gICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBrVGFnTWFzayA9IDBiMTExMDAwMDA7 Ci0rI2Vsc2UKLSsgICAgZW51bSBjbGFzcyBUYWcgOiB1aW50OF90IHsKLSsgICAgICAgIC8vIFdl IHBpY2tlZCBrU2hvcnRTdHJpbmcgPT0gMCBzbyB0aGF0IHRhZyAweDAwIGFuZCBzdG9yZWQgbWF4 X3NpemUtc2l6ZSAoNy03PTApCi0rICAgICAgICAvLyBjb252ZW5pZW50bHkgb3ZlcmxhcCB0aGUg J1wwJyB0ZXJtaW5hdG9yLCBhbGxvd2luZyB1cyB0byBzdG9yZSBhIDcgY2hhcmFjdGVyCi0rICAg ICAgICAvLyBDIHN0cmluZyBpbmxpbmUuCi0rICAgICAgICBrU2hvcnRTdHJpbmcgICAgICAgICAg ICAgICAgICA9IDBiMDAwMDAwMDAsICAvLyBpbmxpbmUgcGF5bG9hZAotKyAgICAgICAga051bGwg ICAgICAgICAgICAgICAgICAgICAgICAgPSAwYjAwMDAwMDAxLCAgLy8gbm8gcGF5bG9hZAotKyAg ICAgICAga0Jvb2wgICAgICAgICAgICAgICAgICAgICAgICAgPSAwYjAwMDAwMDEwLCAgLy8gaW5s aW5lIHBheWxvYWQKLSsgICAgICAgIGtJbnQgICAgICAgICAgICAgICAgICAgICAgICAgID0gMGIw MDAwMDAxMSwgIC8vIGlubGluZSBwYXlsb2FkCi0rICAgICAgICBrRmxvYXQgICAgICAgICAgICAg ICAgICAgICAgICA9IDBiMDAwMDAxMDAsICAvLyBpbmxpbmUgcGF5bG9hZAotKyAgICAgICAga1N0 cmluZyAgICAgICAgICAgICAgICAgICAgICAgPSAwYjAwMDAwMTAxLCAgLy8gcHRyIHRvIGV4dGVy bmFsIHN0b3JhZ2UKLSsgICAgICAgIGtBcnJheSAgICAgICAgICAgICAgICAgICAgICAgID0gMGIw MDAwMDExMCwgIC8vIHB0ciB0byBleHRlcm5hbCBzdG9yYWdlCi0rICAgICAgICBrT2JqZWN0ICAg ICAgICAgICAgICAgICAgICAgICA9IDBiMDAwMDAxMTEsICAvLyBwdHIgdG8gZXh0ZXJuYWwgc3Rv cmFnZQotKyAgICB9OwotKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3Qga1RhZ01hc2sgPSAw YjAwMDAwMTExOwotKyNlbmRpZgotIAotICAgICB2b2lkIGluaXRfdGFnZ2VkKFRhZyk7Ci0gICAg IHZvaWQgaW5pdF90YWdnZWRfcG9pbnRlcihUYWcsIHZvaWQqKTsKLUBAIC0xOTIsMTQgKzIwOSwx NCBAQCBwcml2YXRlOgotIAotICAgICB1aW50OF90IGZEYXRhOFtrVmFsdWVTaXplXTsKLSAKLS0j aWYgZGVmaW5lZChTS19DUFVfTEVORElBTikKLSAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qg a1RhZ09mZnNldCA9IGtWYWx1ZVNpemUgLSAxOwotIAotKyNpZiBkZWZpbmVkKFNLX0NQVV9MRU5E SUFOKQotICAgICBzdGF0aWMgY29uc3RleHByIHVpbnRwdHJfdCBrVGFnUG9pbnRlck1hc2sgPQot ICAgICAgICAgICAgIH4oc3RhdGljX2Nhc3Q8dWludHB0cl90PihrVGFnTWFzaykgPDwgKChzaXpl b2YodWludHB0cl90KSAtIDEpICogOCkpOwotICNlbHNlCi0tICAgIC8vIFRoZSBjdXJyZW50IHZh bHVlIGxheW91dCBhc3N1bWVzIExFIGFuZCB3aWxsIHRha2Ugc29tZSB0d2Vha2luZyBmb3IgQkUu Ci0tICAgIHN0YXRpY19hc3NlcnQoZmFsc2UsICJCaWctZW5kaWFuIGJ1aWxkcyBhcmUgbm90IHN1 cHBvcnRlZCBhdCB0aGlzIHRpbWUuIik7Ci0rICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90 IGtUYWdQb2ludGVyTWFzayA9Ci0rICAgICAgICAgICAgfnN0YXRpY19jYXN0PHVpbnRwdHJfdD4o a1RhZ01hc2spOwotICNlbmRpZgotIH07Ci0gCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEvdGhpcmRfcGFydHkvc2tjbXMvc2tjbXMuY2MKLSsr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS90aGly ZF9wYXJ0eS9za2Ntcy9za2Ntcy5jYwotQEAgLTY2LDEwICs2NiwxNSBAQCBzdGF0aWMgZmxvYXQg ZXZhbF9jdXJ2ZShjb25zdCBza2Ntc19DdXJ2ZSogY3VydmUsIGZsb2F0IHgpIHsKLSAgICAgICAg IHVpbnQxNl90IGJlX2wsIGJlX2g7Ci0gICAgICAgICBtZW1jcHkoJmJlX2wsIGN1cnZlLT50YWJs ZV8xNiArIDIqbG8sIDIpOwotICAgICAgICAgbWVtY3B5KCZiZV9oLCBjdXJ2ZS0+dGFibGVfMTYg KyAyKmhpLCAyKTsKLSsjaWYgX19CSUdfRU5ESUFOX18KLSsgICAgICAgIGwgPSBiZV9sICogKDEv NjU1MzUuMGYpOwotKyAgICAgICAgaCA9IGJlX2ggKiAoMS82NTUzNS4wZik7Ci0rI2Vsc2UKLSAg ICAgICAgIHVpbnQxNl90IGxlX2wgPSAoKGJlX2wgPDwgOCkgfCAoYmVfbCA+PiA4KSkgJiAweGZm ZmY7Ci0gICAgICAgICB1aW50MTZfdCBsZV9oID0gKChiZV9oIDw8IDgpIHwgKGJlX2ggPj4gOCkp ICYgMHhmZmZmOwotICAgICAgICAgbCA9IGxlX2wgKiAoMS82NTUzNS4wZik7Ci0gICAgICAgICBo ID0gbGVfaCAqICgxLzY1NTM1LjBmKTsKLSsjZW5kaWYKLSAgICAgfQotICAgICByZXR1cm4gbCAr IChoLWwpKnQ7Ci0gfQotQEAgLTEyNCwyMSArMTI5LDI5IEBAIGVudW0gewotIHN0YXRpYyB1aW50 MTZfdCByZWFkX2JpZ191MTYoY29uc3QgdWludDhfdCogcHRyKSB7Ci0gICAgIHVpbnQxNl90IGJl OwotICAgICBtZW1jcHkoJmJlLCBwdHIsIHNpemVvZihiZSkpOwotKyNpZiBfX0JJR19FTkRJQU5f XwotKyAgICByZXR1cm4gYmU7Ci0rI2Vsc2UKLSAjaWYgZGVmaW5lZChfTVNDX1ZFUikKLSAgICAg cmV0dXJuIF9ieXRlc3dhcF91c2hvcnQoYmUpOwotICNlbHNlCi0gICAgIHJldHVybiBfX2J1aWx0 aW5fYnN3YXAxNihiZSk7Ci0gI2VuZGlmCi0rI2VuZGlmCi0gfQotIAotIHN0YXRpYyB1aW50MzJf dCByZWFkX2JpZ191MzIoY29uc3QgdWludDhfdCogcHRyKSB7Ci0gICAgIHVpbnQzMl90IGJlOwot ICAgICBtZW1jcHkoJmJlLCBwdHIsIHNpemVvZihiZSkpOwotKyNpZiBfX0JJR19FTkRJQU5fXwot KyAgICByZXR1cm4gYmU7Ci0rI2Vsc2UKLSAjaWYgZGVmaW5lZChfTVNDX1ZFUikKLSAgICAgcmV0 dXJuIF9ieXRlc3dhcF91bG9uZyhiZSk7Ci0gI2Vsc2UKLSAgICAgcmV0dXJuIF9fYnVpbHRpbl9i c3dhcDMyKGJlKTsKLSAjZW5kaWYKLSsjZW5kaWYKLSB9Ci0gCi0gc3RhdGljIGludDMyX3QgcmVh ZF9iaWdfaTMyKGNvbnN0IHVpbnQ4X3QqIHB0cikgewotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL3RoaXJkX3BhcnR5L3NrY21zL3NyYy9UcmFu c2Zvcm1faW5sLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRf cGFydHkvc2tpYS90aGlyZF9wYXJ0eS9za2Ntcy9zcmMvVHJhbnNmb3JtX2lubC5oCi1AQCAtMzky LDkgKzM5MiwxMSBAQCBTSSBVMzIgZ2F0aGVyXzMyKGNvbnN0IHVpbnQ4X3QqIHAsIEkzMiBpeCkg ewotIH0KLSAKLSBTSSBVMzIgZ2F0aGVyXzI0KGNvbnN0IHVpbnQ4X3QqIHAsIEkzMiBpeCkgewot KyNpZiAhX19CSUdfRU5ESUFOX18KLSAgICAgLy8gRmlyc3QsIGJhY2sgdXAgYSBieXRlLiAgQW55 IHBsYWNlIHdlJ3JlIGdhdGhlcmluZyBmcm9tIGhhcyBhIHNhZmUganVuayBieXRlIHRvIHJlYWQK LSAgICAgLy8gaW4gZnJvbnQgb2YgaXQsIGVpdGhlciBhIHByZXZpb3VzIHRhYmxlIHZhbHVlLCBv ciBzb21lIHRhZyBtZXRhZGF0YS4KLSAgICAgcCAtPSAxOwotKyNlbmRpZgotIAotICAgICAvLyBM b2FkIHRoZSBpJ3RoIDI0LWJpdCB2YWx1ZSBmcm9tIHAsIGFuZCAxIGV4dHJhIGJ5dGUuCi0gICAg IGF1dG8gbG9hZF8yNF8zMiA9IFtwXShpbnQgaSkgewotQEAgLTQzNSw4ICs0MzcsMTAgQEAgU0kg VTMyIGdhdGhlcl8yNChjb25zdCB1aW50OF90KiBwLCBJMzIgaXgpIHsKLSAKLSAjaWYgIWRlZmlu ZWQoX19hcm1fXykKLSAgICAgU0kgdm9pZCBnYXRoZXJfNDgoY29uc3QgdWludDhfdCogcCwgSTMy IGl4LCBVNjQqIHYpIHsKLSsjaWYgIV9fQklHX0VORElBTl9fCi0gICAgICAgICAvLyBBcyBpbiBn YXRoZXJfMjQoKSwgd2l0aCBldmVyeXRoaW5nIGRvdWJsZWQuCi0gICAgICAgICBwIC09IDI7Ci0r I2VuZGlmCi0gCi0gICAgICAgICAvLyBMb2FkIHRoZSBpJ3RoIDQ4LWJpdCB2YWx1ZSBmcm9tIHAs IGFuZCAyIGV4dHJhIGJ5dGVzLgotICAgICAgICAgYXV0byBsb2FkXzQ4XzY0ID0gW3BdKGludCBp KSB7Ci1AQCAtNDk5LDcgKzUwMyw5IEBAIFNJIEYgRl9mcm9tX1U4KFU4IHYpIHsKLSBTSSBGIEZf ZnJvbV9VMTZfQkUoVTE2IHYpIHsKLSAgICAgLy8gQWxsIDE2LWJpdCBJQ0MgdmFsdWVzIGFyZSBi aWctZW5kaWFuLCBzbyB3ZSBieXRlIHN3YXAgYmVmb3JlIGNvbnZlcnRpbmcgdG8gZmxvYXQuCi0g ICAgIC8vIE1TVkMgY2F0Y2hlcyB0aGUgImxvc3MiIG9mIGRhdGEgaGVyZSBpbiB0aGUgcG9ydGFi bGUgcGF0aCwgc28gd2UgYWxzbyBtYWtlIHN1cmUgdG8gbWFzay4KLSsjaWYgIV9fQklHX0VORElB Tl9fCi0gICAgIHYgPSBVMTYoIDAgfCAoKHYgJiAweDAwZmYpIDw8IDgpIHwgKCh2ICYgMHhmZjAw KSA+PiA4KSApOwotKyNlbmRpZgotICAgICByZXR1cm4gY2FzdDxGPih2KSAqICgxLzY1NTM1LjBm KTsKLSB9Ci0gCi1AQCAtNTM0LDkgKzU0MCwxNSBAQCBTSSBGIHRhYmxlKGNvbnN0IHNrY21zX0N1 cnZlKiBjdXJ2ZSwgRiB2KSB7Ci0gU0kgdm9pZCBzYW1wbGVfY2x1dF84KGNvbnN0IHNrY21zX0Ey QiogYTJiLCBJMzIgaXgsIEYqIHIsIEYqIGcsIEYqIGIpIHsKLSAgICAgVTMyIHJnYiA9IGdhdGhl cl8yNChhMmItPmdyaWRfOCwgaXgpOwotIAotKyNpZiBfX0JJR19FTkRJQU5fXwotKyAgICAqciA9 IGNhc3Q8Rj4oKHJnYiA+PiAxNikgJiAweGZmKSAqICgxLzI1NS4wZik7Ci0rICAgICpnID0gY2Fz dDxGPigocmdiID4+ICA4KSAmIDB4ZmYpICogKDEvMjU1LjBmKTsKLSsgICAgKmIgPSBjYXN0PEY+ KChyZ2IgPj4gIDApICYgMHhmZikgKiAoMS8yNTUuMGYpOwotKyNlbHNlCi0gICAgICpyID0gY2Fz dDxGPigocmdiID4+ICAwKSAmIDB4ZmYpICogKDEvMjU1LjBmKTsKLSAgICAgKmcgPSBjYXN0PEY+ KChyZ2IgPj4gIDgpICYgMHhmZikgKiAoMS8yNTUuMGYpOwotICAgICAqYiA9IGNhc3Q8Rj4oKHJn YiA+PiAxNikgJiAweGZmKSAqICgxLzI1NS4wZik7Ci0rI2VuZGlmCi0gfQotIAotIFNJIHZvaWQg c2FtcGxlX2NsdXRfMTYoY29uc3Qgc2tjbXNfQTJCKiBhMmIsIEkzMiBpeCwgRiogciwgRiogZywg RiogYikgewotQEAgLTU0OSwxMiArNTYxLDE4IEBAIFNJIHZvaWQgc2FtcGxlX2NsdXRfMTYoY29u c3Qgc2tjbXNfQTJCKiBhMmIsIEkzMiBpeCwgRiogciwgRiogZywgRiogYikgewotICAgICAvLyBU aGlzIHN0cmF0ZWd5IGlzIG11Y2ggZmFzdGVyIGZvciA2NC1iaXQgYnVpbGRzLCBhbmQgZmluZSBm b3IgMzItYml0IHg4NiB0b28uCi0gICAgIFU2NCByZ2I7Ci0gICAgIGdhdGhlcl80OChhMmItPmdy aWRfMTYsIGl4LCAmcmdiKTsKLSsjaWYgX19CSUdfRU5ESUFOX18KLSsgICAgKnIgPSBjYXN0PEY+ KChyZ2IgPj4gMzIpICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKLSsgICAgKmcgPSBjYXN0PEY+ KChyZ2IgPj4gMTYpICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKLSsgICAgKmIgPSBjYXN0PEY+ KChyZ2IgPj4gIDApICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKLSsjZWxzZQotICAgICByZ2Ig PSBzd2FwX2VuZGlhbl8xNng0KHJnYik7Ci0gCi0gICAgICpyID0gY2FzdDxGPigocmdiID4+ICAw KSAmIDB4ZmZmZikgKiAoMS82NTUzNS4wZik7Ci0gICAgICpnID0gY2FzdDxGPigocmdiID4+IDE2 KSAmIDB4ZmZmZikgKiAoMS82NTUzNS4wZik7Ci0gICAgICpiID0gY2FzdDxGPigocmdiID4+IDMy KSAmIDB4ZmZmZikgKiAoMS82NTUzNS4wZik7Ci0gI2VuZGlmCi0rI2VuZGlmCi0gfQotIAotIC8v IEdDQyA3LjIuMCBoaXRzIGFuIGludGVybmFsIGNvbXBpbGVyIGVycm9yIHdpdGggLWZpbmxpbmUt ZnVuY3Rpb25zIChvciAtTzMpCi1AQCAtNjk1LDEwICs3MTMsMTcgQEAgc3RhdGljIHZvaWQgZXhl Y19vcHMoY29uc3QgT3AqIG9wcywgY29uc3Qgdm9pZCoqIGFyZ3MsCi0gICAgICAgICAgICAgY2Fz ZSBPcF9sb2FkXzg4ODg6ewotICAgICAgICAgICAgICAgICBVMzIgcmdiYSA9IGxvYWQ8VTMyPihz cmMgKyA0KmkpOwotIAotKyNpZiBfX0JJR19FTkRJQU5fXwotKyAgICAgICAgICAgICAgICByID0g Y2FzdDxGPigocmdiYSA+PiAyNCkgJiAweGZmKSAqICgxLzI1NS4wZik7Ci0rICAgICAgICAgICAg ICAgIGcgPSBjYXN0PEY+KChyZ2JhID4+IDE2KSAmIDB4ZmYpICogKDEvMjU1LjBmKTsKLSsgICAg ICAgICAgICAgICAgYiA9IGNhc3Q8Rj4oKHJnYmEgPj4gIDgpICYgMHhmZikgKiAoMS8yNTUuMGYp OwotKyAgICAgICAgICAgICAgICBhID0gY2FzdDxGPigocmdiYSA+PiAgMCkgJiAweGZmKSAqICgx LzI1NS4wZik7Ci0rI2Vsc2UKLSAgICAgICAgICAgICAgICAgciA9IGNhc3Q8Rj4oKHJnYmEgPj4g IDApICYgMHhmZikgKiAoMS8yNTUuMGYpOwotICAgICAgICAgICAgICAgICBnID0gY2FzdDxGPigo cmdiYSA+PiAgOCkgJiAweGZmKSAqICgxLzI1NS4wZik7Ci0gICAgICAgICAgICAgICAgIGIgPSBj YXN0PEY+KChyZ2JhID4+IDE2KSAmIDB4ZmYpICogKDEvMjU1LjBmKTsKLSAgICAgICAgICAgICAg ICAgYSA9IGNhc3Q8Rj4oKHJnYmEgPj4gMjQpICYgMHhmZikgKiAoMS8yNTUuMGYpOwotKyNlbmRp ZgotICAgICAgICAgICAgIH0gYnJlYWs7Ci0gCi0gICAgICAgICAgICAgY2FzZSBPcF9sb2FkXzg4 ODhfcGFsZXR0ZTg6ewotQEAgLTcyNywxMyArNzUyLDI5IEBAIHN0YXRpYyB2b2lkIGV4ZWNfb3Bz KGNvbnN0IE9wKiBvcHMsIGNvbnN0IHZvaWQqKiBhcmdzLAotICAgICAgICAgICAgICAgICBjb25z dCB1aW50MTZfdCogcmdiID0gKGNvbnN0IHVpbnQxNl90KilwdHI7IC8vIGNhc3QgdG8gY29uc3Qg dWludDE2X3QqIHRvIGJlIHNhZmUuCi0gICAgICAgICAgICAgI2lmIGRlZmluZWQoVVNJTkdfTkVP TikKLSAgICAgICAgICAgICAgICAgdWludDE2eDR4M190IHYgPSB2bGQzX3UxNihyZ2IpOwotKyNp ZiBfX0JJR19FTkRJQU5fXwotKyAgICAgICAgICAgICAgICByID0gY2FzdDxGPihzd2FwX2VuZGlh bl8xNigoVTE2KXYudmFsWzBdKSkgKiAoMS82NTUzNS4wZik7Ci0rICAgICAgICAgICAgICAgIGcg PSBjYXN0PEY+KHN3YXBfZW5kaWFuXzE2KChVMTYpdi52YWxbMV0pKSAqICgxLzY1NTM1LjBmKTsK LSsgICAgICAgICAgICAgICAgYiA9IGNhc3Q8Rj4oc3dhcF9lbmRpYW5fMTYoKFUxNil2LnZhbFsy XSkpICogKDEvNjU1MzUuMGYpOwotKyNlbHNlCi0gICAgICAgICAgICAgICAgIHIgPSBjYXN0PEY+ KChVMTYpdi52YWxbMF0pICogKDEvNjU1MzUuMGYpOwotICAgICAgICAgICAgICAgICBnID0gY2Fz dDxGPigoVTE2KXYudmFsWzFdKSAqICgxLzY1NTM1LjBmKTsKLSAgICAgICAgICAgICAgICAgYiA9 IGNhc3Q8Rj4oKFUxNil2LnZhbFsyXSkgKiAoMS82NTUzNS4wZik7Ci0rI2VuZGlmCi0gICAgICAg ICAgICAgI2Vsc2UKLSsjaWYgX19CSUdfRU5ESUFOX18KLSsgICAgICAgICAgICAgICAgVTMyIFIg PSBsb2FkXzM8VTMyPihyZ2IrMCksCi0rICAgICAgICAgICAgICAgICAgICBHID0gbG9hZF8zPFUz Mj4ocmdiKzEpLAotKyAgICAgICAgICAgICAgICAgICAgQiA9IGxvYWRfMzxVMzI+KHJnYisyKTsK LSsgICAgICAgICAgICAgICAgLy8gUixHLEIgYXJlIGxpdHRsZS1lbmRpYW4gMTYtYml0LCBzbyBi eXRlIHN3YXAgdGhlbSBiZWZvcmUgY29udmVydGluZyB0byBmbG9hdC4KLSsgICAgICAgICAgICAg ICAgciA9IGNhc3Q8Rj4oKFIgJiAweDAwZmYpPDw4IHwgKFIgJiAweGZmMDApPj44KSAqICgxLzY1 NTM1LjBmKTsKLSsgICAgICAgICAgICAgICAgZyA9IGNhc3Q8Rj4oKEcgJiAweDAwZmYpPDw4IHwg KEcgJiAweGZmMDApPj44KSAqICgxLzY1NTM1LjBmKTsKLSsgICAgICAgICAgICAgICAgYiA9IGNh c3Q8Rj4oKEIgJiAweDAwZmYpPDw4IHwgKEIgJiAweGZmMDApPj44KSAqICgxLzY1NTM1LjBmKTsK LSsjZWxzZQotICAgICAgICAgICAgICAgICByID0gY2FzdDxGPihsb2FkXzM8VTMyPihyZ2IrMCkp ICogKDEvNjU1MzUuMGYpOwotICAgICAgICAgICAgICAgICBnID0gY2FzdDxGPihsb2FkXzM8VTMy PihyZ2IrMSkpICogKDEvNjU1MzUuMGYpOwotICAgICAgICAgICAgICAgICBiID0gY2FzdDxGPihs b2FkXzM8VTMyPihyZ2IrMikpICogKDEvNjU1MzUuMGYpOwotKyNlbmRpZgotICAgICAgICAgICAg ICNlbmRpZgotICAgICAgICAgICAgIH0gYnJlYWs7Ci0gCi1AQCAtNzQzLDE3ICs3ODQsMzMgQEAg c3RhdGljIHZvaWQgZXhlY19vcHMoY29uc3QgT3AqIG9wcywgY29uc3Qgdm9pZCoqIGFyZ3MsCi0g ICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQxNl90KiByZ2JhID0gKGNvbnN0IHVpbnQxNl90Kilw dHI7IC8vIGNhc3QgdG8gY29uc3QgdWludDE2X3QqIHRvIGJlIHNhZmUuCi0gICAgICAgICAgICAg I2lmIGRlZmluZWQoVVNJTkdfTkVPTikKLSAgICAgICAgICAgICAgICAgdWludDE2eDR4NF90IHYg PSB2bGQ0X3UxNihyZ2JhKTsKLSsjaWYgX19CSUdfRU5ESUFOX18KLSsgICAgICAgICAgICAgICAg ciA9IGNhc3Q8Rj4oc3dhcF9lbmRpYW5fMTYoKFUxNil2LnZhbFswXSkpICogKDEvNjU1MzUuMGYp OwotKyAgICAgICAgICAgICAgICBnID0gY2FzdDxGPihzd2FwX2VuZGlhbl8xNigoVTE2KXYudmFs WzFdKSkgKiAoMS82NTUzNS4wZik7Ci0rICAgICAgICAgICAgICAgIGIgPSBjYXN0PEY+KHN3YXBf ZW5kaWFuXzE2KChVMTYpdi52YWxbMl0pKSAqICgxLzY1NTM1LjBmKTsKLSsgICAgICAgICAgICAg ICAgYSA9IGNhc3Q8Rj4oc3dhcF9lbmRpYW5fMTYoKFUxNil2LnZhbFszXSkpICogKDEvNjU1MzUu MGYpOwotKyNlbHNlCi0gICAgICAgICAgICAgICAgIHIgPSBjYXN0PEY+KChVMTYpdi52YWxbMF0p ICogKDEvNjU1MzUuMGYpOwotICAgICAgICAgICAgICAgICBnID0gY2FzdDxGPigoVTE2KXYudmFs WzFdKSAqICgxLzY1NTM1LjBmKTsKLSAgICAgICAgICAgICAgICAgYiA9IGNhc3Q8Rj4oKFUxNil2 LnZhbFsyXSkgKiAoMS82NTUzNS4wZik7Ci0gICAgICAgICAgICAgICAgIGEgPSBjYXN0PEY+KChV MTYpdi52YWxbM10pICogKDEvNjU1MzUuMGYpOwotKyNlbmRpZgotICAgICAgICAgICAgICNlbHNl Ci0rI2lmIF9fQklHX0VORElBTl9fCi0rICAgICAgICAgICAgICAgIFU2NCBweCA9IHN3YXBfZW5k aWFuXzE2eDQobG9hZDxVNjQ+KHJnYmEpKTsKLSsKLSsgICAgICAgICAgICAgICAgciA9IGNhc3Q8 Rj4oKHB4ID4+IDQ4KSAmIDB4ZmZmZikgKiAoMS82NTUzNS4wZik7Ci0rICAgICAgICAgICAgICAg IGcgPSBjYXN0PEY+KChweCA+PiAzMikgJiAweGZmZmYpICogKDEvNjU1MzUuMGYpOwotKyAgICAg ICAgICAgICAgICBiID0gY2FzdDxGPigocHggPj4gMTYpICYgMHhmZmZmKSAqICgxLzY1NTM1LjBm KTsKLSsgICAgICAgICAgICAgICAgYSA9IGNhc3Q8Rj4oKHB4ID4+ICAwKSAmIDB4ZmZmZikgKiAo MS82NTUzNS4wZik7Ci0rI2Vsc2UKLSAgICAgICAgICAgICAgICAgVTY0IHB4ID0gbG9hZDxVNjQ+ KHJnYmEpOwotIAotICAgICAgICAgICAgICAgICByID0gY2FzdDxGPigocHggPj4gIDApICYgMHhm ZmZmKSAqICgxLzY1NTM1LjBmKTsKLSAgICAgICAgICAgICAgICAgZyA9IGNhc3Q8Rj4oKHB4ID4+ IDE2KSAmIDB4ZmZmZikgKiAoMS82NTUzNS4wZik7Ci0gICAgICAgICAgICAgICAgIGIgPSBjYXN0 PEY+KChweCA+PiAzMikgJiAweGZmZmYpICogKDEvNjU1MzUuMGYpOwotICAgICAgICAgICAgICAg ICBhID0gY2FzdDxGPigocHggPj4gNDgpICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKLSsjZW5k aWYKLSAgICAgICAgICAgICAjZW5kaWYKLSAgICAgICAgICAgICB9IGJyZWFrOwotIAotQEAgLTc2 MywxMCArODIwLDIxIEBAIHN0YXRpYyB2b2lkIGV4ZWNfb3BzKGNvbnN0IE9wKiBvcHMsIGNvbnN0 IHZvaWQqKiBhcmdzLAotICAgICAgICAgICAgICAgICBjb25zdCB1aW50MTZfdCogcmdiID0gKGNv bnN0IHVpbnQxNl90KilwdHI7IC8vIGNhc3QgdG8gY29uc3QgdWludDE2X3QqIHRvIGJlIHNhZmUu Ci0gICAgICAgICAgICAgI2lmIGRlZmluZWQoVVNJTkdfTkVPTikKLSAgICAgICAgICAgICAgICAg dWludDE2eDR4M190IHYgPSB2bGQzX3UxNihyZ2IpOwotKyNpZiBfX0JJR19FTkRJQU5fXwotKyAg ICAgICAgICAgICAgICByID0gY2FzdDxGPigoVTE2KXYudmFsWzBdKSAqICgxLzY1NTM1LjBmKTsK LSsgICAgICAgICAgICAgICAgZyA9IGNhc3Q8Rj4oKFUxNil2LnZhbFsxXSkgKiAoMS82NTUzNS4w Zik7Ci0rICAgICAgICAgICAgICAgIGIgPSBjYXN0PEY+KChVMTYpdi52YWxbMl0pICogKDEvNjU1 MzUuMGYpOwotKyNlbHNlCi0gICAgICAgICAgICAgICAgIHIgPSBjYXN0PEY+KHN3YXBfZW5kaWFu XzE2KChVMTYpdi52YWxbMF0pKSAqICgxLzY1NTM1LjBmKTsKLSAgICAgICAgICAgICAgICAgZyA9 IGNhc3Q8Rj4oc3dhcF9lbmRpYW5fMTYoKFUxNil2LnZhbFsxXSkpICogKDEvNjU1MzUuMGYpOwot ICAgICAgICAgICAgICAgICBiID0gY2FzdDxGPihzd2FwX2VuZGlhbl8xNigoVTE2KXYudmFsWzJd KSkgKiAoMS82NTUzNS4wZik7Ci0rI2VuZGlmCi0gICAgICAgICAgICAgI2Vsc2UKLSsjaWYgX19C SUdfRU5ESUFOX18KLSsgICAgICAgICAgICAgICAgciA9IGNhc3Q8Rj4obG9hZF8zPFUzMj4ocmdi KzApKSAqICgxLzY1NTM1LjBmKTsKLSsgICAgICAgICAgICAgICAgZyA9IGNhc3Q8Rj4obG9hZF8z PFUzMj4ocmdiKzEpKSAqICgxLzY1NTM1LjBmKTsKLSsgICAgICAgICAgICAgICAgYiA9IGNhc3Q8 Rj4obG9hZF8zPFUzMj4ocmdiKzIpKSAqICgxLzY1NTM1LjBmKTsKLSsjZWxzZQotICAgICAgICAg ICAgICAgICBVMzIgUiA9IGxvYWRfMzxVMzI+KHJnYiswKSwKLSAgICAgICAgICAgICAgICAgICAg IEcgPSBsb2FkXzM8VTMyPihyZ2IrMSksCi0gICAgICAgICAgICAgICAgICAgICBCID0gbG9hZF8z PFUzMj4ocmdiKzIpOwotQEAgLTc3NCw2ICs4NDIsNyBAQCBzdGF0aWMgdm9pZCBleGVjX29wcyhj b25zdCBPcCogb3BzLCBjb25zdCB2b2lkKiogYXJncywKLSAgICAgICAgICAgICAgICAgciA9IGNh c3Q8Rj4oKFIgJiAweDAwZmYpPDw4IHwgKFIgJiAweGZmMDApPj44KSAqICgxLzY1NTM1LjBmKTsK LSAgICAgICAgICAgICAgICAgZyA9IGNhc3Q8Rj4oKEcgJiAweDAwZmYpPDw4IHwgKEcgJiAweGZm MDApPj44KSAqICgxLzY1NTM1LjBmKTsKLSAgICAgICAgICAgICAgICAgYiA9IGNhc3Q8Rj4oKEIg JiAweDAwZmYpPDw4IHwgKEIgJiAweGZmMDApPj44KSAqICgxLzY1NTM1LjBmKTsKLSsjZW5kaWYK LSAgICAgICAgICAgICAjZW5kaWYKLSAgICAgICAgICAgICB9IGJyZWFrOwotIAotQEAgLTc4Mywx NyArODUyLDMzIEBAIHN0YXRpYyB2b2lkIGV4ZWNfb3BzKGNvbnN0IE9wKiBvcHMsIGNvbnN0IHZv aWQqKiBhcmdzLAotICAgICAgICAgICAgICAgICBjb25zdCB1aW50MTZfdCogcmdiYSA9IChjb25z dCB1aW50MTZfdCopcHRyOyAvLyBjYXN0IHRvIGNvbnN0IHVpbnQxNl90KiB0byBiZSBzYWZlLgot ICAgICAgICAgICAgICNpZiBkZWZpbmVkKFVTSU5HX05FT04pCi0gICAgICAgICAgICAgICAgIHVp bnQxNng0eDRfdCB2ID0gdmxkNF91MTYocmdiYSk7Ci0rI2lmIF9fQklHX0VORElBTl9fCi0rICAg ICAgICAgICAgICAgIHIgPSBjYXN0PEY+KChVMTYpdi52YWxbMF0pICogKDEvNjU1MzUuMGYpOwot KyAgICAgICAgICAgICAgICBnID0gY2FzdDxGPigoVTE2KXYudmFsWzFdKSAqICgxLzY1NTM1LjBm KTsKLSsgICAgICAgICAgICAgICAgYiA9IGNhc3Q8Rj4oKFUxNil2LnZhbFsyXSkgKiAoMS82NTUz NS4wZik7Ci0rICAgICAgICAgICAgICAgIGEgPSBjYXN0PEY+KChVMTYpdi52YWxbM10pICogKDEv NjU1MzUuMGYpOwotKyNlbHNlCi0gICAgICAgICAgICAgICAgIHIgPSBjYXN0PEY+KHN3YXBfZW5k aWFuXzE2KChVMTYpdi52YWxbMF0pKSAqICgxLzY1NTM1LjBmKTsKLSAgICAgICAgICAgICAgICAg ZyA9IGNhc3Q8Rj4oc3dhcF9lbmRpYW5fMTYoKFUxNil2LnZhbFsxXSkpICogKDEvNjU1MzUuMGYp OwotICAgICAgICAgICAgICAgICBiID0gY2FzdDxGPihzd2FwX2VuZGlhbl8xNigoVTE2KXYudmFs WzJdKSkgKiAoMS82NTUzNS4wZik7Ci0gICAgICAgICAgICAgICAgIGEgPSBjYXN0PEY+KHN3YXBf ZW5kaWFuXzE2KChVMTYpdi52YWxbM10pKSAqICgxLzY1NTM1LjBmKTsKLSsjZW5kaWYKLSAgICAg ICAgICAgICAjZWxzZQotKyNpZiBfX0JJR19FTkRJQU5fXwotKyAgICAgICAgICAgICAgICBVNjQg cHggPSBsb2FkPFU2ND4ocmdiYSk7Ci0rCi0rICAgICAgICAgICAgICAgIHIgPSBjYXN0PEY+KChw eCA+PiA0OCkgJiAweGZmZmYpICogKDEvNjU1MzUuMGYpOwotKyAgICAgICAgICAgICAgICBnID0g Y2FzdDxGPigocHggPj4gMzIpICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKLSsgICAgICAgICAg ICAgICAgYiA9IGNhc3Q8Rj4oKHB4ID4+IDE2KSAmIDB4ZmZmZikgKiAoMS82NTUzNS4wZik7Ci0r ICAgICAgICAgICAgICAgIGEgPSBjYXN0PEY+KChweCA+PiAgMCkgJiAweGZmZmYpICogKDEvNjU1 MzUuMGYpOwotKyNlbHNlCi0gICAgICAgICAgICAgICAgIFU2NCBweCA9IHN3YXBfZW5kaWFuXzE2 eDQobG9hZDxVNjQ+KHJnYmEpKTsKLSAKLSAgICAgICAgICAgICAgICAgciA9IGNhc3Q8Rj4oKHB4 ID4+ICAwKSAmIDB4ZmZmZikgKiAoMS82NTUzNS4wZik7Ci0gICAgICAgICAgICAgICAgIGcgPSBj YXN0PEY+KChweCA+PiAxNikgJiAweGZmZmYpICogKDEvNjU1MzUuMGYpOwotICAgICAgICAgICAg ICAgICBiID0gY2FzdDxGPigocHggPj4gMzIpICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKLSAg ICAgICAgICAgICAgICAgYSA9IGNhc3Q8Rj4oKHB4ID4+IDQ4KSAmIDB4ZmZmZikgKiAoMS82NTUz NS4wZik7Ci0rI2VuZGlmCi0gICAgICAgICAgICAgI2VuZGlmCi0gICAgICAgICAgICAgfSBicmVh azsKLSAKLUBAIC04MjgsMTAgKzkxMywxNyBAQCBzdGF0aWMgdm9pZCBleGVjX29wcyhjb25zdCBP cCogb3BzLCBjb25zdCB2b2lkKiogYXJncywKLSAgICAgICAgICAgICAgICAgICAgIEEgPSAoVTE2 KXYudmFsWzNdOwotICAgICAgICAgICAgICNlbHNlCi0gICAgICAgICAgICAgICAgIFU2NCBweCA9 IGxvYWQ8VTY0PihyZ2JhKTsKLSsjaWYgX19CSUdfRU5ESUFOX18KLSsgICAgICAgICAgICAgICAg VTE2IFIgPSBjYXN0PFUxNj4oKHB4ID4+IDQ4KSAmIDB4ZmZmZiksCi0rICAgICAgICAgICAgICAg ICAgICBHID0gY2FzdDxVMTY+KChweCA+PiAzMikgJiAweGZmZmYpLAotKyAgICAgICAgICAgICAg ICAgICAgQiA9IGNhc3Q8VTE2PigocHggPj4gMTYpICYgMHhmZmZmKSwKLSsgICAgICAgICAgICAg ICAgICAgIEEgPSBjYXN0PFUxNj4oKHB4ID4+ICAwKSAmIDB4ZmZmZik7Ci0rI2Vsc2UKLSAgICAg ICAgICAgICAgICAgVTE2IFIgPSBjYXN0PFUxNj4oKHB4ID4+ICAwKSAmIDB4ZmZmZiksCi0gICAg ICAgICAgICAgICAgICAgICBHID0gY2FzdDxVMTY+KChweCA+PiAxNikgJiAweGZmZmYpLAotICAg ICAgICAgICAgICAgICAgICAgQiA9IGNhc3Q8VTE2PigocHggPj4gMzIpICYgMHhmZmZmKSwKLSAg ICAgICAgICAgICAgICAgICAgIEEgPSBjYXN0PFUxNj4oKHB4ID4+IDQ4KSAmIDB4ZmZmZik7Ci0r I2VuZGlmCi0gICAgICAgICAgICAgI2VuZGlmCi0gICAgICAgICAgICAgICAgIHIgPSBGX2Zyb21f SGFsZihSKTsKLSAgICAgICAgICAgICAgICAgZyA9IEZfZnJvbV9IYWxmKEcpOwotQEAgLTEwMjQs MTAgKzExMTYsMTcgQEAgc3RhdGljIHZvaWQgZXhlY19vcHMoY29uc3QgT3AqIG9wcywgY29uc3Qg dm9pZCoqIGFyZ3MsCi0gICAgICAgICAgICAgfSByZXR1cm47Ci0gCi0gICAgICAgICAgICAgY2Fz ZSBPcF9zdG9yZV84ODg4OiB7Ci0rI2lmIF9fQklHX0VORElBTl9fCi0rICAgICAgICAgICAgICAg IHN0b3JlKGRzdCArIDQqaSwgY2FzdDxVMzI+KHRvX2ZpeGVkKHIgKiAyNTUpIDw8IDI0KQotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhc3Q8VTMyPih0b19maXhlZChnICogMjU1 KSA8PCAxNikKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYXN0PFUzMj4odG9f Zml4ZWQoYiAqIDI1NSkgPDwgIDgpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg Y2FzdDxVMzI+KHRvX2ZpeGVkKGEgKiAyNTUpIDw8ICAwKSk7Ci0rI2Vsc2UKLSAgICAgICAgICAg ICAgICAgc3RvcmUoZHN0ICsgNCppLCBjYXN0PFUzMj4odG9fZml4ZWQociAqIDI1NSkgPDwgIDAp Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FzdDxVMzI+KHRvX2ZpeGVkKGcg KiAyNTUpIDw8ICA4KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhc3Q8VTMy Pih0b19maXhlZChiICogMjU1KSA8PCAxNikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCBjYXN0PFUzMj4odG9fZml4ZWQoYSAqIDI1NSkgPDwgMjQpKTsKLSsjZW5kaWYKLSAgICAg ICAgICAgICB9IHJldHVybjsKLSAKLSAgICAgICAgICAgICBjYXNlIE9wX3N0b3JlXzEwMTAxMDI6 IHsKLUBAIC0xMDQzLDE1ICsxMTQyLDMwIEBAIHN0YXRpYyB2b2lkIGV4ZWNfb3BzKGNvbnN0IE9w KiBvcHMsIGNvbnN0IHZvaWQqKiBhcmdzLAotICAgICAgICAgICAgICAgICB1aW50MTZfdCogcmdi ID0gKHVpbnQxNl90KilwdHI7ICAgICAgICAgIC8vIGZvciB0aGlzIGNhc3QgdG8gdWludDE2X3Qq IHRvIGJlIHNhZmUuCi0gICAgICAgICAgICAgI2lmIGRlZmluZWQoVVNJTkdfTkVPTikKLSAgICAg ICAgICAgICAgICAgdWludDE2eDR4M190IHYgPSB7ewotKyNpZiBfX0JJR19FTkRJQU5fXwotKyAg ICAgICAgICAgICAgICAgICAgKHVpbnQxNng0X3Qpc3dhcF9lbmRpYW5fMTYoY2FzdDxVMTY+KHRv X2ZpeGVkKHIgKiA2NTUzNSkpKSwKLSsgICAgICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KXN3 YXBfZW5kaWFuXzE2KGNhc3Q8VTE2Pih0b19maXhlZChnICogNjU1MzUpKSksCi0rICAgICAgICAg ICAgICAgICAgICAodWludDE2eDRfdClzd2FwX2VuZGlhbl8xNihjYXN0PFUxNj4odG9fZml4ZWQo YiAqIDY1NTM1KSkpLAotKyNlbHNlCi0gICAgICAgICAgICAgICAgICAgICAodWludDE2eDRfdClj YXN0PFUxNj4odG9fZml4ZWQociAqIDY1NTM1KSksCi0gICAgICAgICAgICAgICAgICAgICAodWlu dDE2eDRfdCljYXN0PFUxNj4odG9fZml4ZWQoZyAqIDY1NTM1KSksCi0gICAgICAgICAgICAgICAg ICAgICAodWludDE2eDRfdCljYXN0PFUxNj4odG9fZml4ZWQoYiAqIDY1NTM1KSksCi0rI2VuZGlm Ci0gICAgICAgICAgICAgICAgIH19OwotICAgICAgICAgICAgICAgICB2c3QzX3UxNihyZ2IsIHYp OwotICAgICAgICAgICAgICNlbHNlCi0rI2lmIF9fQklHX0VORElBTl9fCi0rICAgICAgICAgICAg ICAgIEkzMiBSID0gdG9fZml4ZWQociAqIDY1NTM1KSwKLSsgICAgICAgICAgICAgICAgICAgIEcg PSB0b19maXhlZChnICogNjU1MzUpLAotKyAgICAgICAgICAgICAgICAgICAgQiA9IHRvX2ZpeGVk KGIgKiA2NTUzNSk7Ci0rICAgICAgICAgICAgICAgIHN0b3JlXzMocmdiKzAsIGNhc3Q8VTE2Pigo UiAmIDB4MDBmZikgPDwgOCB8IChSICYgMHhmZjAwKSA+PiA4KSApOwotKyAgICAgICAgICAgICAg ICBzdG9yZV8zKHJnYisxLCBjYXN0PFUxNj4oKEcgJiAweDAwZmYpIDw8IDggfCAoRyAmIDB4ZmYw MCkgPj4gOCkgKTsKLSsgICAgICAgICAgICAgICAgc3RvcmVfMyhyZ2IrMiwgY2FzdDxVMTY+KChC ICYgMHgwMGZmKSA8PCA4IHwgKEIgJiAweGZmMDApID4+IDgpICk7Ci0rI2Vsc2UKLSAgICAgICAg ICAgICAgICAgc3RvcmVfMyhyZ2IrMCwgY2FzdDxVMTY+KHRvX2ZpeGVkKHIgKiA2NTUzNSkpKTsK LSAgICAgICAgICAgICAgICAgc3RvcmVfMyhyZ2IrMSwgY2FzdDxVMTY+KHRvX2ZpeGVkKGcgKiA2 NTUzNSkpKTsKLSAgICAgICAgICAgICAgICAgc3RvcmVfMyhyZ2IrMiwgY2FzdDxVMTY+KHRvX2Zp eGVkKGIgKiA2NTUzNSkpKTsKLSsjZW5kaWYKLSAgICAgICAgICAgICAjZW5kaWYKLSAKLSAgICAg ICAgICAgICB9IHJldHVybjsKLUBAIC0xMDYyLDE4ICsxMTc2LDMzIEBAIHN0YXRpYyB2b2lkIGV4 ZWNfb3BzKGNvbnN0IE9wKiBvcHMsIGNvbnN0IHZvaWQqKiBhcmdzLAotICAgICAgICAgICAgICAg ICB1aW50MTZfdCogcmdiYSA9ICh1aW50MTZfdCopcHRyOyAgICAgICAgLy8gZm9yIHRoaXMgY2Fz dCB0byB1aW50MTZfdCogdG8gYmUgc2FmZS4KLSAgICAgICAgICAgICAjaWYgZGVmaW5lZChVU0lO R19ORU9OKQotICAgICAgICAgICAgICAgICB1aW50MTZ4NHg0X3QgdiA9IHt7Ci0rI2lmIF9fQklH X0VORElBTl9fCi0rICAgICAgICAgICAgICAgICAgICAodWludDE2eDRfdClzd2FwX2VuZGlhbl8x NihjYXN0PFUxNj4odG9fZml4ZWQociAqIDY1NTM1KSkpLAotKyAgICAgICAgICAgICAgICAgICAg KHVpbnQxNng0X3Qpc3dhcF9lbmRpYW5fMTYoY2FzdDxVMTY+KHRvX2ZpeGVkKGcgKiA2NTUzNSkp KSwKLSsgICAgICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KXN3YXBfZW5kaWFuXzE2KGNhc3Q8 VTE2Pih0b19maXhlZChiICogNjU1MzUpKSksCi0rICAgICAgICAgICAgICAgICAgICAodWludDE2 eDRfdClzd2FwX2VuZGlhbl8xNihjYXN0PFUxNj4odG9fZml4ZWQoYSAqIDY1NTM1KSkpLAotKyNl bHNlCi0gICAgICAgICAgICAgICAgICAgICAodWludDE2eDRfdCljYXN0PFUxNj4odG9fZml4ZWQo ciAqIDY1NTM1KSksCi0gICAgICAgICAgICAgICAgICAgICAodWludDE2eDRfdCljYXN0PFUxNj4o dG9fZml4ZWQoZyAqIDY1NTM1KSksCi0gICAgICAgICAgICAgICAgICAgICAodWludDE2eDRfdClj YXN0PFUxNj4odG9fZml4ZWQoYiAqIDY1NTM1KSksCi0gICAgICAgICAgICAgICAgICAgICAodWlu dDE2eDRfdCljYXN0PFUxNj4odG9fZml4ZWQoYSAqIDY1NTM1KSksCi0rI2VuZGlmCi0gICAgICAg ICAgICAgICAgIH19OwotICAgICAgICAgICAgICAgICB2c3Q0X3UxNihyZ2JhLCB2KTsKLSAgICAg ICAgICAgICAjZWxzZQotKyNpZiBfX0JJR19FTkRJQU5fXwotKyAgICAgICAgICAgICAgICBVNjQg cHggPSBjYXN0PFU2ND4odG9fZml4ZWQociAqIDY1NTM1KSkgPDwgNDgKLSsgICAgICAgICAgICAg ICAgICAgICAgIHwgY2FzdDxVNjQ+KHRvX2ZpeGVkKGcgKiA2NTUzNSkpIDw8IDMyCi0rICAgICAg ICAgICAgICAgICAgICAgICB8IGNhc3Q8VTY0Pih0b19maXhlZChiICogNjU1MzUpKSA8PCAxNgot KyAgICAgICAgICAgICAgICAgICAgICAgfCBjYXN0PFU2ND4odG9fZml4ZWQoYSAqIDY1NTM1KSkg PDwgIDA7Ci0rICAgICAgICAgICAgICAgIHN0b3JlKHJnYmEsIHN3YXBfZW5kaWFuXzE2eDQocHgp KTsKLSsjZWxzZQotICAgICAgICAgICAgICAgICBVNjQgcHggPSBjYXN0PFU2ND4odG9fZml4ZWQo ciAqIDY1NTM1KSkgPDwgIDAKLSAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FzdDxVNjQ+KHRv X2ZpeGVkKGcgKiA2NTUzNSkpIDw8IDE2Ci0gICAgICAgICAgICAgICAgICAgICAgICB8IGNhc3Q8 VTY0Pih0b19maXhlZChiICogNjU1MzUpKSA8PCAzMgotICAgICAgICAgICAgICAgICAgICAgICAg fCBjYXN0PFU2ND4odG9fZml4ZWQoYSAqIDY1NTM1KSkgPDwgNDg7Ci0gICAgICAgICAgICAgICAg IHN0b3JlKHJnYmEsIHB4KTsKLSsjZW5kaWYKLSAgICAgICAgICAgICAjZW5kaWYKLSAgICAgICAg ICAgICB9IHJldHVybjsKLSAKLUBAIC0xMDgzLDE4ICsxMjEyLDMwIEBAIHN0YXRpYyB2b2lkIGV4 ZWNfb3BzKGNvbnN0IE9wKiBvcHMsIGNvbnN0IHZvaWQqKiBhcmdzLAotICAgICAgICAgICAgICAg ICB1aW50MTZfdCogcmdiID0gKHVpbnQxNl90KilwdHI7ICAgICAgICAgIC8vIGZvciB0aGlzIGNh c3QgdG8gdWludDE2X3QqIHRvIGJlIHNhZmUuCi0gICAgICAgICAgICAgI2lmIGRlZmluZWQoVVNJ TkdfTkVPTikKLSAgICAgICAgICAgICAgICAgdWludDE2eDR4M190IHYgPSB7ewotKyNpZiBfX0JJ R19FTkRJQU5fXwotKyAgICAgICAgICAgICAgICAgICAgKHVpbnQxNng0X3QpY2FzdDxVMTY+KHRv X2ZpeGVkKHIgKiA2NTUzNSkpLAotKyAgICAgICAgICAgICAgICAgICAgKHVpbnQxNng0X3QpY2Fz dDxVMTY+KHRvX2ZpeGVkKGcgKiA2NTUzNSkpLAotKyAgICAgICAgICAgICAgICAgICAgKHVpbnQx Nng0X3QpY2FzdDxVMTY+KHRvX2ZpeGVkKGIgKiA2NTUzNSkpLAotKyNlbHNlCi0gICAgICAgICAg ICAgICAgICAgICAodWludDE2eDRfdClzd2FwX2VuZGlhbl8xNihjYXN0PFUxNj4odG9fZml4ZWQo ciAqIDY1NTM1KSkpLAotICAgICAgICAgICAgICAgICAgICAgKHVpbnQxNng0X3Qpc3dhcF9lbmRp YW5fMTYoY2FzdDxVMTY+KHRvX2ZpeGVkKGcgKiA2NTUzNSkpKSwKLSAgICAgICAgICAgICAgICAg ICAgICh1aW50MTZ4NF90KXN3YXBfZW5kaWFuXzE2KGNhc3Q8VTE2Pih0b19maXhlZChiICogNjU1 MzUpKSksCi0rI2VuZGlmCi0gICAgICAgICAgICAgICAgIH19OwotICAgICAgICAgICAgICAgICB2 c3QzX3UxNihyZ2IsIHYpOwotICAgICAgICAgICAgICNlbHNlCi0rI2lmIF9fQklHX0VORElBTl9f Ci0rICAgICAgICAgICAgICAgIHN0b3JlXzMocmdiKzAsIGNhc3Q8VTE2Pih0b19maXhlZChyICog NjU1MzUpKSk7Ci0rICAgICAgICAgICAgICAgIHN0b3JlXzMocmdiKzEsIGNhc3Q8VTE2Pih0b19m aXhlZChnICogNjU1MzUpKSk7Ci0rICAgICAgICAgICAgICAgIHN0b3JlXzMocmdiKzIsIGNhc3Q8 VTE2Pih0b19maXhlZChiICogNjU1MzUpKSk7Ci0rI2Vsc2UKLSAgICAgICAgICAgICAgICAgSTMy IFIgPSB0b19maXhlZChyICogNjU1MzUpLAotICAgICAgICAgICAgICAgICAgICAgRyA9IHRvX2Zp eGVkKGcgKiA2NTUzNSksCi0gICAgICAgICAgICAgICAgICAgICBCID0gdG9fZml4ZWQoYiAqIDY1 NTM1KTsKLSAgICAgICAgICAgICAgICAgc3RvcmVfMyhyZ2IrMCwgY2FzdDxVMTY+KChSICYgMHgw MGZmKSA8PCA4IHwgKFIgJiAweGZmMDApID4+IDgpICk7Ci0gICAgICAgICAgICAgICAgIHN0b3Jl XzMocmdiKzEsIGNhc3Q8VTE2PigoRyAmIDB4MDBmZikgPDwgOCB8IChHICYgMHhmZjAwKSA+PiA4 KSApOwotICAgICAgICAgICAgICAgICBzdG9yZV8zKHJnYisyLCBjYXN0PFUxNj4oKEIgJiAweDAw ZmYpIDw8IDggfCAoQiAmIDB4ZmYwMCkgPj4gOCkgKTsKLSsjZW5kaWYKLSAgICAgICAgICAgICAj ZW5kaWYKLSAKLSAgICAgICAgICAgICB9IHJldHVybjsKLUBAIC0xMTA1LDE4ICsxMjQ2LDMzIEBA IHN0YXRpYyB2b2lkIGV4ZWNfb3BzKGNvbnN0IE9wKiBvcHMsIGNvbnN0IHZvaWQqKiBhcmdzLAot ICAgICAgICAgICAgICAgICB1aW50MTZfdCogcmdiYSA9ICh1aW50MTZfdCopcHRyOyAgICAgICAg Ly8gZm9yIHRoaXMgY2FzdCB0byB1aW50MTZfdCogdG8gYmUgc2FmZS4KLSAgICAgICAgICAgICAj aWYgZGVmaW5lZChVU0lOR19ORU9OKQotICAgICAgICAgICAgICAgICB1aW50MTZ4NHg0X3QgdiA9 IHt7Ci0rI2lmIF9fQklHX0VORElBTl9fCi0rICAgICAgICAgICAgICAgICAgICAodWludDE2eDRf dCljYXN0PFUxNj4odG9fZml4ZWQociAqIDY1NTM1KSksCi0rICAgICAgICAgICAgICAgICAgICAo dWludDE2eDRfdCljYXN0PFUxNj4odG9fZml4ZWQoZyAqIDY1NTM1KSksCi0rICAgICAgICAgICAg ICAgICAgICAodWludDE2eDRfdCljYXN0PFUxNj4odG9fZml4ZWQoYiAqIDY1NTM1KSksCi0rICAg ICAgICAgICAgICAgICAgICAodWludDE2eDRfdCljYXN0PFUxNj4odG9fZml4ZWQoYSAqIDY1NTM1 KSksCi0rI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KXN3YXBfZW5kaWFu XzE2KGNhc3Q8VTE2Pih0b19maXhlZChyICogNjU1MzUpKSksCi0gICAgICAgICAgICAgICAgICAg ICAodWludDE2eDRfdClzd2FwX2VuZGlhbl8xNihjYXN0PFUxNj4odG9fZml4ZWQoZyAqIDY1NTM1 KSkpLAotICAgICAgICAgICAgICAgICAgICAgKHVpbnQxNng0X3Qpc3dhcF9lbmRpYW5fMTYoY2Fz dDxVMTY+KHRvX2ZpeGVkKGIgKiA2NTUzNSkpKSwKLSAgICAgICAgICAgICAgICAgICAgICh1aW50 MTZ4NF90KXN3YXBfZW5kaWFuXzE2KGNhc3Q8VTE2Pih0b19maXhlZChhICogNjU1MzUpKSksCi0r I2VuZGlmCi0gICAgICAgICAgICAgICAgIH19OwotICAgICAgICAgICAgICAgICB2c3Q0X3UxNihy Z2JhLCB2KTsKLSAgICAgICAgICAgICAjZWxzZQotKyNpZiBfX0JJR19FTkRJQU5fXwotKyAgICAg ICAgICAgICAgICBVNjQgcHggPSBjYXN0PFU2ND4odG9fZml4ZWQociAqIDY1NTM1KSkgPDwgNDgK LSsgICAgICAgICAgICAgICAgICAgICAgIHwgY2FzdDxVNjQ+KHRvX2ZpeGVkKGcgKiA2NTUzNSkp IDw8IDMyCi0rICAgICAgICAgICAgICAgICAgICAgICB8IGNhc3Q8VTY0Pih0b19maXhlZChiICog NjU1MzUpKSA8PCAxNgotKyAgICAgICAgICAgICAgICAgICAgICAgfCBjYXN0PFU2ND4odG9fZml4 ZWQoYSAqIDY1NTM1KSkgPDwgIDA7Ci0rICAgICAgICAgICAgICAgIHN0b3JlKHJnYmEsIHB4KTsK LSsjZWxzZQotICAgICAgICAgICAgICAgICBVNjQgcHggPSBjYXN0PFU2ND4odG9fZml4ZWQociAq IDY1NTM1KSkgPDwgIDAKLSAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FzdDxVNjQ+KHRvX2Zp eGVkKGcgKiA2NTUzNSkpIDw8IDE2Ci0gICAgICAgICAgICAgICAgICAgICAgICB8IGNhc3Q8VTY0 Pih0b19maXhlZChiICogNjU1MzUpKSA8PCAzMgotICAgICAgICAgICAgICAgICAgICAgICAgfCBj YXN0PFU2ND4odG9fZml4ZWQoYSAqIDY1NTM1KSkgPDwgNDg7Ci0gICAgICAgICAgICAgICAgIHN0 b3JlKHJnYmEsIHN3YXBfZW5kaWFuXzE2eDQocHgpKTsKLSsjZW5kaWYKLSAgICAgICAgICAgICAj ZW5kaWYKLSAgICAgICAgICAgICB9IHJldHVybjsKLSAKLUBAIC0xMTYwLDEwICsxMzE2LDE3IEBA IHN0YXRpYyB2b2lkIGV4ZWNfb3BzKGNvbnN0IE9wKiBvcHMsIGNvbnN0IHZvaWQqKiBhcmdzLAot ICAgICAgICAgICAgICAgICB9fTsKLSAgICAgICAgICAgICAgICAgdnN0NF91MTYocmdiYSwgdik7 Ci0gICAgICAgICAgICAgI2Vsc2UKLSsjaWYgX19CSUdfRU5ESUFOX18KLSsgICAgICAgICAgICAg ICAgc3RvcmUocmdiYSwgY2FzdDxVNjQ+KFIpIDw8IDQ4Ci0rICAgICAgICAgICAgICAgICAgICAg ICAgICB8IGNhc3Q8VTY0PihHKSA8PCAzMgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgfCBj YXN0PFU2ND4oQikgPDwgMTYKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FzdDxVNjQ+ KEEpIDw8ICAwKTsKLSsjZWxzZQotICAgICAgICAgICAgICAgICBzdG9yZShyZ2JhLCBjYXN0PFU2 ND4oUikgPDwgIDAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FzdDxVNjQ+KEcpIDw8 IDE2Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhc3Q8VTY0PihCKSA8PCAzMgotICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCBjYXN0PFU2ND4oQSkgPDwgNDgpOwotKyNlbmRpZgot ICAgICAgICAgICAgICNlbmRpZgotIAotICAgICAgICAgICAgIH0gcmV0dXJuOwotLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvY29tbW9uX2F1 ZGlvL3dhdl9maWxlLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2ZpbGUuY2MKLUBAIC05MywxMyArOTMs MTUgQEAgc2l6ZV90IFdhdlJlYWRlcjo6bnVtX3NhbXBsZXMoKSBjb25zdCB7Ci0gfQotIAotIHNp emVfdCBXYXZSZWFkZXI6OlJlYWRTYW1wbGVzKHNpemVfdCBudW1fc2FtcGxlcywgaW50MTZfdCog c2FtcGxlcykgewotLSNpZm5kZWYgV0VCUlRDX0FSQ0hfTElUVExFX0VORElBTgotLSNlcnJvciAi TmVlZCB0byBjb252ZXJ0IHNhbXBsZXMgdG8gYmlnLWVuZGlhbiB3aGVuIHJlYWRpbmcgZnJvbSBX QVYgZmlsZSIKLS0jZW5kaWYKLSAgIC8vIFRoZXJlIGNvdWxkIGJlIG1ldGFkYXRhIGFmdGVyIHRo ZSBhdWRpbzsgZW5zdXJlIHdlIGRvbid0IHJlYWQgaXQuCi0gICBudW1fc2FtcGxlcyA9IHN0ZDo6 bWluKG51bV9zYW1wbGVzLCBudW1fc2FtcGxlc19yZW1haW5pbmdfKTsKLSAgIGNvbnN0IHNpemVf dCByZWFkID0KLSAgICAgICBmcmVhZChzYW1wbGVzLCBzaXplb2YoKnNhbXBsZXMpLCBudW1fc2Ft cGxlcywgZmlsZV9oYW5kbGVfKTsKLSsjaWZuZGVmIFdFQlJUQ19BUkNIX0xJVFRMRV9FTkRJQU4K LSsgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVhZDsgaSsrKSB7Ci0rICAgICAgc2FtcGxlc1tp XSA9IF9fYnVpbHRpbl9ic3dhcDE2KHNhbXBsZXNbaV0pOwotKyAgfQotKyNlbmRpZgotICAgLy8g SWYgd2UgZGlkbid0IHJlYWQgd2hhdCB3YXMgcmVxdWVzdGVkLCBlbnN1cmUgd2UndmUgcmVhY2hl ZCB0aGUgRU9GLgotICAgUlRDX0NIRUNLKHJlYWQgPT0gbnVtX3NhbXBsZXMgfHwgZmVvZihmaWxl X2hhbmRsZV8pKTsKLSAgIFJUQ19DSEVDS19MRShyZWFkLCBudW1fc2FtcGxlc19yZW1haW5pbmdf KTsKLUBAIC0xNzgsMTMgKzE4MCwyNiBAQCBzaXplX3QgV2F2V3JpdGVyOjpudW1fc2FtcGxlcygp IGNvbnN0IHsKLSAKLSB2b2lkIFdhdldyaXRlcjo6V3JpdGVTYW1wbGVzKGNvbnN0IGludDE2X3Qq IHNhbXBsZXMsIHNpemVfdCBudW1fc2FtcGxlcykgewotICNpZm5kZWYgV0VCUlRDX0FSQ0hfTElU VExFX0VORElBTgotLSNlcnJvciAiTmVlZCB0byBjb252ZXJ0IHNhbXBsZXMgdG8gbGl0dGxlLWVu ZGlhbiB3aGVuIHdyaXRpbmcgdG8gV0FWIGZpbGUiCi0tI2VuZGlmCi0rICBzdGF0aWMgY29uc3Qg c2l6ZV90IGtDaHVua3NpemUgPSA0MDk2IC8gc2l6ZW9mKHVpbnQxNl90KTsKLSsgIGZvciAoc2l6 ZV90IGkgPSAwOyBpIDwgbnVtX3NhbXBsZXM7IGkgKz0ga0NodW5rc2l6ZSkgewotKyAgICBpbnQx Nl90IGlzYW1wbGVzW2tDaHVua3NpemVdOwotKyAgICBjb25zdCBzaXplX3QgY2h1bmsgPSBzdGQ6 Om1pbihrQ2h1bmtzaXplLCBudW1fc2FtcGxlcyAtIGkpOwotKyAgICBmb3IgKHNpemVfdCBqID0g MDsgaiA8IGNodW5rOyBqKyspIHsKLSsgICAgICBpc2FtcGxlc1tqXSA9IF9fYnVpbHRpbl9ic3dh cDE2KHNhbXBsZXNbaSArIGpdKTsKLSsgICAgfQotKyAgICBjb25zdCBzaXplX3Qgd3JpdHRlbiA9 Ci0rICAgICAgICBmd3JpdGUoaXNhbXBsZXMsIHNpemVvZigqaXNhbXBsZXMpLCBjaHVuaywgZmls ZV9oYW5kbGVfKTsKLSsgICAgUlRDX0NIRUNLX0VRKGNodW5rLCB3cml0dGVuKTsKLSsgICAgbnVt X3NhbXBsZXNfICs9IHdyaXR0ZW47Ci0rICAgIFJUQ19DSEVDSyhudW1fc2FtcGxlc18gPj0gd3Jp dHRlbik7ICAvLyBkZXRlY3Qgc2l6ZV90IG92ZXJmbG93Ci0rICB9Ci0rI2Vsc2UKLSAgIGNvbnN0 IHNpemVfdCB3cml0dGVuID0KLSAgICAgICBmd3JpdGUoc2FtcGxlcywgc2l6ZW9mKCpzYW1wbGVz KSwgbnVtX3NhbXBsZXMsIGZpbGVfaGFuZGxlXyk7Ci0gICBSVENfQ0hFQ0tfRVEobnVtX3NhbXBs ZXMsIHdyaXR0ZW4pOwotICAgbnVtX3NhbXBsZXNfICs9IHdyaXR0ZW47Ci0gICBSVENfQ0hFQ0so bnVtX3NhbXBsZXNfID49IHdyaXR0ZW4pOyAgLy8gZGV0ZWN0IHNpemVfdCBvdmVyZmxvdwotKyNl bmRpZgotIH0KLSAKLSB2b2lkIFdhdldyaXRlcjo6V3JpdGVTYW1wbGVzKGNvbnN0IGZsb2F0KiBz YW1wbGVzLCBzaXplX3QgbnVtX3NhbXBsZXMpIHsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL2NvbW1vbl9hdWRpby93YXZfaGVhZGVyLmNj Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0 Yy9jb21tb25fYXVkaW8vd2F2X2hlYWRlci5jYwotQEAgLTg2LDcgKzg2LDI2IEBAIHN0YXRpYyBp bmxpbmUgc3RkOjpzdHJpbmcgUmVhZEZvdXJDQyh1aW50MzJfdCB4KSB7Ci0gICByZXR1cm4gc3Rk OjpzdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oJngpLCA0KTsKLSB9Ci0gI2Vsc2UKLS0j ZXJyb3IgIldyaXRlIGJlLXRvLWxlIGNvbnZlcnNpb24gZnVuY3Rpb25zIgotK3N0YXRpYyBpbmxp bmUgdm9pZCBXcml0ZUxFMTYodWludDE2X3QqIGYsIHVpbnQxNl90IHgpIHsKLSsgICpmID0gX19i dWlsdGluX2Jzd2FwMTYoeCk7Ci0rfQotK3N0YXRpYyBpbmxpbmUgdm9pZCBXcml0ZUxFMzIodWlu dDMyX3QqIGYsIHVpbnQzMl90IHgpIHsKLSsgICpmID0gX19idWlsdGluX2Jzd2FwMzIoeCk7Ci0r fQotK3N0YXRpYyBpbmxpbmUgdm9pZCBXcml0ZUZvdXJDQyh1aW50MzJfdCogZiwgY2hhciBhLCBj aGFyIGIsIGNoYXIgYywgY2hhciBkKSB7Ci0rICAqZiA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pihk KSB8IHN0YXRpY19jYXN0PHVpbnQzMl90PihjKSA8PCA4IHwKLSsgICAgICAgc3RhdGljX2Nhc3Q8 dWludDMyX3Q+KGIpIDw8IDE2IHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGEpIDw8IDI0OwotK30K LSsKLStzdGF0aWMgaW5saW5lIHVpbnQxNl90IFJlYWRMRTE2KHVpbnQxNl90IHgpIHsKLSsgIHJl dHVybiBfX2J1aWx0aW5fYnN3YXAxNih4KTsKLSt9Ci0rc3RhdGljIGlubGluZSB1aW50MzJfdCBS ZWFkTEUzMih1aW50MzJfdCB4KSB7Ci0rICByZXR1cm4gX19idWlsdGluX2Jzd2FwMzIoeCk7Ci0r fQotK3N0YXRpYyBpbmxpbmUgc3RkOjpzdHJpbmcgUmVhZEZvdXJDQyh1aW50MzJfdCB4KSB7Ci0r ICByZXR1cm4gc3RkOjpzdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oJngpLCA0KTsKLSt9 Ci0gI2VuZGlmCi0gCi0gc3RhdGljIGlubGluZSB1aW50MzJfdCBSaWZmQ2h1bmtTaXplKHNpemVf dCBieXRlc19pbl9wYXlsb2FkKSB7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3VpL2F1cmEvbXVzL29zX2V4Y2hhbmdlX2RhdGFfcHJvdmlkZXJfbXVzLmNjCi0rKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VpL2F1cmEvbXVzL29zX2V4Y2hhbmdlX2Rh dGFfcHJvdmlkZXJfbXVzLmNjCi1AQCAtMTQsNiArMTQsNyBAQAotICNpbmNsdWRlICJiYXNlL3N0 cmluZ3Mvc3RyaW5nX3NwbGl0LmgiCi0gI2luY2x1ZGUgImJhc2Uvc3RyaW5ncy9zdHJpbmdfdXRp bC5oIgotICNpbmNsdWRlICJiYXNlL3N0cmluZ3MvdXRmX3N0cmluZ19jb252ZXJzaW9ucy5oIgot KyNpbmNsdWRlICJiYXNlL3N5c19ieXRlb3JkZXIuaCIKLSAjaW5jbHVkZSAibmV0L2Jhc2UvZmls ZW5hbWVfdXRpbC5oIgotICNpbmNsdWRlICJ1aS9iYXNlL2NsaXBib2FyZC9jbGlwYm9hcmRfY29u c3RhbnRzLmgiCi0gI2luY2x1ZGUgInVpL2Jhc2UvY2xpcGJvYXJkL2NsaXBib2FyZF9mb3JtYXRf dHlwZS5oIgotQEAgLTI3OSw4ICsyODAsMTMgQEAgdm9pZCBPU0V4Y2hhbmdlRGF0YVByb3ZpZGVy TXVzOjpTZXRIdG1sKGNvbnN0IGJhc2U6OnN0cmluZzE2JiBodG1sLAotICAgc3RkOjp2ZWN0b3I8 dW5zaWduZWQgY2hhcj4gYnl0ZXM7Ci0gICAvLyBNYW51YWxseSBqYW0gYSBVVEYxNiBCT00gaW50 byBieXRlcyBiZWNhdXNlIG90aGVyd2lzZSwgb3RoZXIgcHJvZ3JhbXMgd2lsbAotICAgLy8gYXNz dW1lIFVURi04LgotKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4pCi0gICBieXRl cy5wdXNoX2JhY2soMHhGRik7Ci0gICBieXRlcy5wdXNoX2JhY2soMHhGRSk7Ci0rI2Vsc2UKLSsg IGJ5dGVzLnB1c2hfYmFjaygweEZFKTsKLSsgIGJ5dGVzLnB1c2hfYmFjaygweEZGKTsKLSsjZW5k aWYKLSAgIEFkZFN0cmluZzE2VG9WZWN0b3IoaHRtbCwgJmJ5dGVzKTsKLSAgIG1pbWVfZGF0YV9b dWk6OmtNaW1lVHlwZUhUTUxdID0gYnl0ZXM7Ci0gfQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS91aS9iYXNlL3Jlc291cmNlL2RhdGFfcGFjay5jYwotKysrIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91aS9iYXNlL3Jlc291cmNlL2RhdGFfcGFjay5jYwot QEAgLTE1NCwxNiArMTU0LDQyIEBAIGNsYXNzIFNjb3BlZEZpbGVXcml0ZXIgewotICAgRElTQUxM T1dfQ09QWV9BTkRfQVNTSUdOKFNjb3BlZEZpbGVXcml0ZXIpOwotIH07Ci0gCi0rc3RhdGljIGlu bGluZSB1aW50MTZfdCBieXRlc3dhcCh1aW50MTZfdCB2KSB7IHJldHVybiBfX2J1aWx0aW5fYnN3 YXAxNih2KTsgfQotK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgYnl0ZXN3YXAodWludDMyX3Qgdikg eyByZXR1cm4gX19idWlsdGluX2Jzd2FwMzIodik7IH0KLSsKLSt0ZW1wbGF0ZTxjbGFzcyBUPiBj bGFzcyBieXRlc3dhcHBlZF90IHsKLStwcml2YXRlOgotKyAgVCB2YWx1ZTsKLStwdWJsaWM6Ci0r ICBpbmxpbmUgYnl0ZXN3YXBwZWRfdChUIHYpIDogdmFsdWUoYnl0ZXN3YXAodikpIHsgfQotKyAg aW5saW5lIFQgb3BlcmF0b3I9KFQgdikgeyB2YWx1ZSA9IGJ5dGVzd2FwKHYpOyByZXR1cm4gdjsg fQotKyAgaW5saW5lIFQgb3BlcmF0b3IrPShUIHYpIHsgdiArPSBieXRlc3dhcCh2YWx1ZSk7IHZh bHVlID0gYnl0ZXN3YXAodik7IHJldHVybiB2OyB9Ci0rICBpbmxpbmUgb3BlcmF0b3IgVCgpIGNv bnN0IHsgcmV0dXJuIGJ5dGVzd2FwKHZhbHVlKTsgfQotK307Ci0rCi0rI2lmICFkZWZpbmVkKEFS Q0hfQ1BVX0xJVFRMRV9FTkRJQU4pCi0rCi0rdHlwZWRlZiBieXRlc3dhcHBlZF90PHVpbnQxNl90 PiB1aW50MTZsZV90OwotK3R5cGVkZWYgYnl0ZXN3YXBwZWRfdDx1aW50MzJfdD4gdWludDMybGVf dDsKLSsKLSsjZWxzZQotKwotK3R5cGVkZWYgdWludDE2X3QgdWludDE2bGVfdDsKLSt0eXBlZGVm IHVpbnQzMl90IHVpbnQzMmxlX3Q7Ci0rCi0rI2VuZGlmCi0rCi0gfSAgLy8gbmFtZXNwYWNlCi0g Ci0gbmFtZXNwYWNlIHVpIHsKLSAKLSAjcHJhZ21hIHBhY2socHVzaCwgMikKLSBzdHJ1Y3QgRGF0 YVBhY2s6OkVudHJ5IHsKLS0gIHVpbnQxNl90IHJlc291cmNlX2lkOwotLSAgdWludDMyX3QgZmls ZV9vZmZzZXQ7Ci0rICB1aW50MTZsZV90IHJlc291cmNlX2lkOwotKyAgdWludDMybGVfdCBmaWxl X29mZnNldDsKLSAKLSAgIHN0YXRpYyBpbnQgQ29tcGFyZUJ5SWQoY29uc3Qgdm9pZCogdm9pZF9r ZXksIGNvbnN0IHZvaWQqIHZvaWRfZW50cnkpIHsKLSsgICAgLy8gS2V5IGlzIGhvc3QgZW5kaWFu Ci0gICAgIHVpbnQxNl90IGtleSA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90Kj4o dm9pZF9rZXkpOwotICAgICBjb25zdCBFbnRyeSogZW50cnkgPSByZWludGVycHJldF9jYXN0PGNv bnN0IEVudHJ5Kj4odm9pZF9lbnRyeSk7Ci0gICAgIHJldHVybiBrZXkgLSBlbnRyeS0+cmVzb3Vy Y2VfaWQ7Ci1AQCAtMTcxLDEwICsxOTcsMTEgQEAgc3RydWN0IERhdGFQYWNrOjpFbnRyeSB7Ci0g fTsKLSAKLSBzdHJ1Y3QgRGF0YVBhY2s6OkFsaWFzIHsKLS0gIHVpbnQxNl90IHJlc291cmNlX2lk OwotLSAgdWludDE2X3QgZW50cnlfaW5kZXg7Ci0rICB1aW50MTZsZV90IHJlc291cmNlX2lkOwot KyAgdWludDE2bGVfdCBlbnRyeV9pbmRleDsKLSAKLSAgIHN0YXRpYyBpbnQgQ29tcGFyZUJ5SWQo Y29uc3Qgdm9pZCogdm9pZF9rZXksIGNvbnN0IHZvaWQqIHZvaWRfZW50cnkpIHsKLSsgICAgLy8g S2V5IGlzIGhvc3QgZW5kaWFuCi0gICAgIHVpbnQxNl90IGtleSA9ICpyZWludGVycHJldF9jYXN0 PGNvbnN0IHVpbnQxNl90Kj4odm9pZF9rZXkpOwotICAgICBjb25zdCBBbGlhcyogZW50cnkgPSBy ZWludGVycHJldF9jYXN0PGNvbnN0IEFsaWFzKj4odm9pZF9lbnRyeSk7Ci0gICAgIHJldHVybiBr ZXkgLSBlbnRyeS0+cmVzb3VyY2VfaWQ7Ci1AQCAtMjg0LDcgKzMxMSw3IEBAIGJvb2wgRGF0YVBh Y2s6OkxvYWRJbXBsKHN0ZDo6dW5pcXVlX3B0cjxEYXRhUGFjazo6RGF0YVNvdXJjZT4gZGF0YV9z b3VyY2UpIHsKLSAgIC8vIFBhcnNlIHRoZSB2ZXJzaW9uIGFuZCBjaGVjayBmb3IgdHJ1bmNhdGVk IGhlYWRlci4KLSAgIHVpbnQzMl90IHZlcnNpb24gPSAwOwotICAgaWYgKGRhdGFfbGVuZ3RoID4g c2l6ZW9mKHZlcnNpb24pKQotLSAgICB2ZXJzaW9uID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1 aW50MzJfdCo+KGRhdGEpWzBdOwotKyAgICB2ZXJzaW9uID0gcmVpbnRlcnByZXRfY2FzdDxjb25z dCB1aW50MzJsZV90Kj4oZGF0YSlbMF07Ci0gICBzaXplX3QgaGVhZGVyX2xlbmd0aCA9Ci0gICAg ICAgdmVyc2lvbiA9PSBrRmlsZUZvcm1hdFY0ID8ga0hlYWRlckxlbmd0aFY0IDoga0hlYWRlckxl bmd0aFY1OwotICAgaWYgKHZlcnNpb24gPT0gMCB8fCBkYXRhX2xlbmd0aCA8IGhlYWRlcl9sZW5n dGgpIHsKLUBAIC0yOTUsMTQgKzMyMiwxNCBAQCBib29sIERhdGFQYWNrOjpMb2FkSW1wbChzdGQ6 OnVuaXF1ZV9wdHI8RGF0YVBhY2s6OkRhdGFTb3VyY2U+IGRhdGFfc291cmNlKSB7Ci0gCi0gICAv LyBQYXJzZSB0aGUgaGVhZGVyIG9mIHRoZSBmaWxlLgotICAgaWYgKHZlcnNpb24gPT0ga0ZpbGVG b3JtYXRWNCkgewotLSAgICByZXNvdXJjZV9jb3VudF8gPSByZWludGVycHJldF9jYXN0PGNvbnN0 IHVpbnQzMl90Kj4oZGF0YSlbMV07Ci0rICAgIHJlc291cmNlX2NvdW50XyA9IHJlaW50ZXJwcmV0 X2Nhc3Q8Y29uc3QgdWludDMybGVfdCo+KGRhdGEpWzFdOwotICAgICBhbGlhc19jb3VudF8gPSAw OwotICAgICB0ZXh0X2VuY29kaW5nX3R5cGVfID0gc3RhdGljX2Nhc3Q8VGV4dEVuY29kaW5nVHlw ZT4oZGF0YVs4XSk7Ci0gICB9IGVsc2UgaWYgKHZlcnNpb24gPT0ga0ZpbGVGb3JtYXRWNSkgewot ICAgICAvLyBWZXJzaW9uIDUgYWRkZWQgdGhlIGFsaWFzIHRhYmxlIGFuZCBjaGFuZ2VkIHRoZSBo ZWFkZXIgZm9ybWF0LgotICAgICB0ZXh0X2VuY29kaW5nX3R5cGVfID0gc3RhdGljX2Nhc3Q8VGV4 dEVuY29kaW5nVHlwZT4oZGF0YVs0XSk7Ci0tICAgIHJlc291cmNlX2NvdW50XyA9IHJlaW50ZXJw cmV0X2Nhc3Q8Y29uc3QgdWludDE2X3QqPihkYXRhKVs0XTsKLS0gICAgYWxpYXNfY291bnRfID0g cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MTZfdCo+KGRhdGEpWzVdOwotKyAgICByZXNvdXJj ZV9jb3VudF8gPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNmxlX3QqPihkYXRhKVs0XTsK LSsgICAgYWxpYXNfY291bnRfID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MTZsZV90Kj4o ZGF0YSlbNV07Ci0gICB9IGVsc2UgewotICAgICBMT0coRVJST1IpIDw8ICJCYWQgZGF0YSBwYWNr IHZlcnNpb246IGdvdCAiIDw8IHZlcnNpb24gPDwgIiwgZXhwZWN0ZWQgIgotICAgICAgICAgICAg ICAgIDw8IGtGaWxlRm9ybWF0VjQgPDwgIiBvciAiIDw8IGtGaWxlRm9ybWF0VjU7Ci1AQCAtNDQ3 LDkgKzQ3NCw2IEBAIHZvaWQgRGF0YVBhY2s6OkNoZWNrRm9yRHVwbGljYXRlUmVzb3VyY2VzKAot IGJvb2wgRGF0YVBhY2s6OldyaXRlUGFjayhjb25zdCBiYXNlOjpGaWxlUGF0aCYgcGF0aCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjptYXA8dWludDE2X3QsIGJhc2U6OlN0 cmluZ1BpZWNlPiYgcmVzb3VyY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0RW5j b2RpbmdUeXBlIHRleHRfZW5jb2RpbmdfdHlwZSkgewotLSNpZiAhZGVmaW5lZChBUkNIX0NQVV9M SVRUTEVfRU5ESUFOKQotLSNlcnJvciAiZGF0YXBhY2sgYXNzdW1lcyBsaXR0bGUgZW5kaWFuIgot LSNlbmRpZgotICAgaWYgKHRleHRfZW5jb2RpbmdfdHlwZSAhPSBVVEY4ICYmIHRleHRfZW5jb2Rp bmdfdHlwZSAhPSBVVEYxNiAmJgotICAgICAgIHRleHRfZW5jb2RpbmdfdHlwZSAhPSBCSU5BUlkp IHsKLSAgICAgTE9HKEVSUk9SKSA8PCAiSW52YWxpZCB0ZXh0IGVuY29kaW5nIHR5cGUsIGdvdCAi IDw8IHRleHRfZW5jb2RpbmdfdHlwZQotQEAgLTQ2Nyw3ICs0OTEsNyBAQCBib29sIERhdGFQYWNr OjpXcml0ZVBhY2soY29uc3QgYmFzZTo6RmlsZVBhdGgmIHBhdGgsCi0gICBpZiAoIWZpbGUudmFs aWQoKSkKLSAgICAgcmV0dXJuIGZhbHNlOwotIAotLSAgdWludDMyX3QgZW5jb2RpbmcgPSBzdGF0 aWNfY2FzdDx1aW50MzJfdD4odGV4dF9lbmNvZGluZ190eXBlKTsKLSsgIHVpbnQzMmxlX3QgZW5j b2RpbmcgPSBzdGF0aWNfY2FzdDx1aW50MzJsZV90Pih0ZXh0X2VuY29kaW5nX3R5cGUpOwotIAot ICAgLy8gQnVpbGQgYSBsaXN0IG9mIGZpbmFsIHJlc291cmNlIGFsaWFzZXMsIGFuZCBhbiBhbGlh cyBtYXAgYXQgdGhlIHNhbWUgdGltZS4KLSAgIHN0ZDo6dmVjdG9yPHVpbnQxNl90PiByZXNvdXJj ZV9pZHM7Ci1AQCAtNDk0LDEzICs1MTgsMTQgQEAgYm9vbCBEYXRhUGFjazo6V3JpdGVQYWNrKGNv bnN0IGJhc2U6OkZpbGVQYXRoJiBwYXRoLAotIAotICAgLy8gVGhlc2UgdmFsdWVzIGFyZSBndWFy YW50ZWVkIHRvIGZpdCBpbiBhIHVpbnQxNl90IGR1ZSB0byB0aGUgZWFybGllcgotICAgLy8gY2hl Y2sgb2YgfHJlc291cmNlc19jb3VudHwuCi0tICBjb25zdCB1aW50MTZfdCBhbGlhc19jb3VudCA9 IHN0YXRpY19jYXN0PHVpbnQxNl90PihhbGlhc2VzLnNpemUoKSk7Ci0tICBjb25zdCB1aW50MTZf dCBlbnRyeV9jb3VudCA9IHN0YXRpY19jYXN0PHVpbnQxNl90PihyZXNvdXJjZV9pZHMuc2l6ZSgp KTsKLSsgIGNvbnN0IHVpbnQxNmxlX3QgYWxpYXNfY291bnQgPSBzdGF0aWNfY2FzdDx1aW50MTZs ZV90PihhbGlhc2VzLnNpemUoKSk7Ci0rICBjb25zdCB1aW50MTZsZV90IGVudHJ5X2NvdW50ID0g c3RhdGljX2Nhc3Q8dWludDE2bGVfdD4ocmVzb3VyY2VfaWRzLnNpemUoKSk7Ci0gICBEQ0hFQ0tf RVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnRyeV9jb3VudCkgKyBzdGF0aWNfY2FzdDxzaXplX3Q+ KGFsaWFzX2NvdW50KSwKLSAgICAgICAgICAgICByZXNvdXJjZXNfY291bnQpOwotIAotLSAgZmls ZS5Xcml0ZSgma0ZpbGVGb3JtYXRWNSwgc2l6ZW9mKGtGaWxlRm9ybWF0VjUpKTsKLS0gIGZpbGUu V3JpdGUoJmVuY29kaW5nLCBzaXplb2YodWludDMyX3QpKTsKLSsgIHVpbnQzMmxlX3QgdmVyc2lv biA9IGtGaWxlRm9ybWF0VjU7Ci0rICBmaWxlLldyaXRlKCZ2ZXJzaW9uLCBzaXplb2YodmVyc2lv bikpOwotKyAgZmlsZS5Xcml0ZSgmZW5jb2RpbmcsIHNpemVvZih1aW50MzJsZV90KSk7Ci0gICBm aWxlLldyaXRlKCZlbnRyeV9jb3VudCwgc2l6ZW9mKGVudHJ5X2NvdW50KSk7Ci0gICBmaWxlLldy aXRlKCZhbGlhc19jb3VudCwgc2l6ZW9mKGFsaWFzX2NvdW50KSk7Ci0gCi1AQCAtNTA4LDggKzUz Myw4IEBAIGJvb2wgRGF0YVBhY2s6OldyaXRlUGFjayhjb25zdCBiYXNlOjpGaWxlUGF0aCYgcGF0 aCwKLSAgIC8vIGxhc3QgaXRlbSBzbyB3ZSBjYW4gY29tcHV0ZSB0aGUgc2l6ZSBvZiB0aGUgbGlz dCBpdGVtLgotICAgY29uc3QgdWludDMyX3QgaW5kZXhfbGVuZ3RoID0gKGVudHJ5X2NvdW50ICsg MSkgKiBzaXplb2YoRW50cnkpOwotICAgY29uc3QgdWludDMyX3QgYWxpYXNfdGFibGVfbGVuZ3Ro ID0gYWxpYXNfY291bnQgKiBzaXplb2YoQWxpYXMpOwotLSAgdWludDMyX3QgZGF0YV9vZmZzZXQg PSBrSGVhZGVyTGVuZ3RoVjUgKyBpbmRleF9sZW5ndGggKyBhbGlhc190YWJsZV9sZW5ndGg7Ci0t ICBmb3IgKGNvbnN0IHVpbnQxNl90IHJlc291cmNlX2lkIDogcmVzb3VyY2VfaWRzKSB7Ci0rICB1 aW50MzJsZV90IGRhdGFfb2Zmc2V0ID0ga0hlYWRlckxlbmd0aFY1ICsgaW5kZXhfbGVuZ3RoICsg YWxpYXNfdGFibGVfbGVuZ3RoOwotKyAgZm9yIChjb25zdCB1aW50MTZsZV90IHJlc291cmNlX2lk IDogcmVzb3VyY2VfaWRzKSB7Ci0gICAgIGZpbGUuV3JpdGUoJnJlc291cmNlX2lkLCBzaXplb2Yo cmVzb3VyY2VfaWQpKTsKLSAgICAgZmlsZS5Xcml0ZSgmZGF0YV9vZmZzZXQsIHNpemVvZihkYXRh X29mZnNldCkpOwotICAgICBkYXRhX29mZnNldCArPSByZXNvdXJjZXMuZmluZChyZXNvdXJjZV9p ZCktPnNlY29uZC5sZW5ndGgoKTsKLUBAIC01MTcsMTMgKzU0MiwxMyBAQCBib29sIERhdGFQYWNr OjpXcml0ZVBhY2soY29uc3QgYmFzZTo6RmlsZVBhdGgmIHBhdGgsCi0gCi0gICAvLyBXZSBwbGFj ZSBhbiBleHRyYSBlbnRyeSBhZnRlciB0aGUgbGFzdCBpdGVtIHRoYXQgYWxsb3dzIHVzIHRvIHJl YWQgdGhlCi0gICAvLyBzaXplIG9mIHRoZSBsYXN0IGl0ZW0uCi0tICBjb25zdCB1aW50MTZfdCBy ZXNvdXJjZV9pZCA9IDA7Ci0rICBjb25zdCB1aW50MTZsZV90IHJlc291cmNlX2lkID0gMDsKLSAg IGZpbGUuV3JpdGUoJnJlc291cmNlX2lkLCBzaXplb2YocmVzb3VyY2VfaWQpKTsKLSAgIGZpbGUu V3JpdGUoJmRhdGFfb2Zmc2V0LCBzaXplb2YoZGF0YV9vZmZzZXQpKTsKLSAKLSAgIC8vIFdyaXRl IHRoZSBhbGlhc2VzIHRhYmxlLCBpZiBhbnkuIE5vdGU6IHxhbGlhc2VzfCBpcyBhbiBzdGQ6Om1h cCwKLSAgIC8vIGVuc3VyaW5nIHZhbHVlcyBhcmUgd3JpdHRlbiBpbiBpbmNyZWFzaW5nIG9yZGVy LgotLSAgZm9yIChjb25zdCBzdGQ6OnBhaXI8dWludDE2X3QsIHVpbnQxNl90PiYgYWxpYXMgOiBh bGlhc2VzKSB7Ci0rICBmb3IgKGNvbnN0IHN0ZDo6cGFpcjx1aW50MTZsZV90LCB1aW50MTZsZV90 PiBhbGlhcyA6IGFsaWFzZXMpIHsKLSAgICAgZmlsZS5Xcml0ZSgmYWxpYXMsIHNpemVvZihhbGlh cykpOwotICAgfQotIAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91aS9i YXNlL3Jlc291cmNlL2RhdGFfcGFjay5jYy5vcmlnCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3VpL2Jhc2UvcmVzb3VyY2UvZGF0YV9wYWNrLmNjLm9yaWcKLUBAIC0zODIs MTIgKzM4Miw2IEBAIGJvb2wgRGF0YVBhY2s6Okhhc1Jlc291cmNlKHVpbnQxNl90IHJlc291cmNl X2lkKSBjb25zdCB7Ci0gCi0gYm9vbCBEYXRhUGFjazo6R2V0U3RyaW5nUGllY2UodWludDE2X3Qg cmVzb3VyY2VfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTo6U3RyaW5n UGllY2UqIGRhdGEpIGNvbnN0IHsKLS0gIC8vIEl0IHdvbid0IGJlIGhhcmQgdG8gbWFrZSB0aGlz IGVuZGlhbi1hZ25vc3RpYywgYnV0IGl0J3Mgbm90IHdvcnRoCi0tICAvLyBib3RoZXJpbmcgdG8g ZG8gcmlnaHQgbm93LgotLSNpZiAhZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOKQotLSNl cnJvciAiZGF0YXBhY2sgYXNzdW1lcyBsaXR0bGUgZW5kaWFuIgotLSNlbmRpZgotLQotICAgY29u c3QgRW50cnkqIHRhcmdldCA9IExvb2t1cEVudHJ5QnlJZChyZXNvdXJjZV9pZCk7Ci0gICBpZiAo IXRhcmdldCkKLSAgICAgcmV0dXJuIGZhbHNlOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS91aS9nZngvY29kZWMvanBlZ19jb2RlYy5jYwotKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS91aS9nZngvY29kZWMvanBlZ19jb2RlYy5jYwotQEAgLTIxMiwx MSArMjEyLDExIEBAIGJvb2wgSlBFR0NvZGVjOjpEZWNvZGUoY29uc3QgdW5zaWduZWQgY2hhciog aW5wdXQsIHNpemVfdCBpbnB1dF9zaXplLAotICAgICAgIC8vIHVzZWQgYnkgQ2hyb21pdW0gKGku ZS4gUkdCQSBhbmQgQkdSQSkgYW5kIHdlIGp1c3QgbWFwIHRoZSBpbnB1dAotICAgICAgIC8vIHBh cmFtZXRlcnMgdG8gYSBjb2xvcnNwYWNlLgotICAgICAgIGlmIChmb3JtYXQgPT0gRk9STUFUX1JH QkEgfHwKLS0gICAgICAgICAgKGZvcm1hdCA9PSBGT1JNQVRfU2tCaXRtYXAgJiYgU0tfUjMyX1NI SUZUID09IDApKSB7Ci0rICAgICAgICAgIChmb3JtYXQgPT0gRk9STUFUX1NrQml0bWFwICYmIFNL X1BNQ09MT1JfQllURV9PUkRFUihSLCBHLCBCLCBBKSkpIHsKLSAgICAgICAgIGNpbmZvLT5vdXRf Y29sb3Jfc3BhY2UgPSBKQ1NfRVhUX1JHQlg7Ci0gICAgICAgICBjaW5mby0+b3V0cHV0X2NvbXBv bmVudHMgPSA0OwotICAgICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09IEZPUk1BVF9CR1JBIHx8Ci0t ICAgICAgICAgICAgICAgICAoZm9ybWF0ID09IEZPUk1BVF9Ta0JpdG1hcCAmJiBTS19CMzJfU0hJ RlQgPT0gMCkpIHsKLSsgICAgICAgICAgICAgICAgIChmb3JtYXQgPT0gRk9STUFUX1NrQml0bWFw ICYmIFNLX1BNQ09MT1JfQllURV9PUkRFUihCLCBHLCBSLCBBKSkpIHsKLSAgICAgICAgIGNpbmZv LT5vdXRfY29sb3Jfc3BhY2UgPSBKQ1NfRVhUX0JHUlg7Ci0gICAgICAgICBjaW5mby0+b3V0cHV0 X2NvbXBvbmVudHMgPSA0OwotICAgICAgIH0gZWxzZSB7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3VpL2dmeC9jb2RlYy9wbmdfY29kZWMuY2MKLSsrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdWkvZ2Z4L2NvZGVjL3BuZ19jb2RlYy5jYwotQEAgLTE2 OSw2ICsxNjksMTAgQEAgdm9pZCBEZWNvZGVJbmZvQ2FsbGJhY2socG5nX3N0cnVjdCogcG5nX3B0 ciwgcG5nX2luZm8qIGluZm9fcHRyKSB7Ci0gICAgICAgICBwbmdfc2V0X2JncihwbmdfcHRyKTsK LSAgICAgICAgIHBuZ19zZXRfYWRkX2FscGhhKHBuZ19wdHIsIDB4RkYsIFBOR19GSUxMRVJfQUZU RVIpOwotICAgICAgICAgYnJlYWs7Ci0rICAgICAgY2FzZSBQTkdDb2RlYzo6Rk9STUFUX0FSR0I6 Ci0rICAgICAgICBzdGF0ZS0+b3V0cHV0X2NoYW5uZWxzID0gNDsKLSsgICAgICAgIHBuZ19zZXRf YWRkX2FscGhhKHBuZ19wdHIsIDB4RkYsIFBOR19GSUxMRVJfQkVGT1JFKTsKLSsgICAgICAgIGJy ZWFrOwotICAgICAgIGNhc2UgUE5HQ29kZWM6OkZPUk1BVF9Ta0JpdG1hcDoKLSAgICAgICAgIHN0 YXRlLT5vdXRwdXRfY2hhbm5lbHMgPSA0OwotICAgICAgICAgcG5nX3NldF9hZGRfYWxwaGEocG5n X3B0ciwgMHhGRiwgUE5HX0ZJTExFUl9BRlRFUik7Ci1AQCAtMTgzLDYgKzE4NywxMCBAQCB2b2lk IERlY29kZUluZm9DYWxsYmFjayhwbmdfc3RydWN0KiBwbmdfcHRyLCBwbmdfaW5mbyogaW5mb19w dHIpIHsKLSAgICAgICAgIHN0YXRlLT5vdXRwdXRfY2hhbm5lbHMgPSA0OwotICAgICAgICAgcG5n X3NldF9iZ3IocG5nX3B0cik7Ci0gICAgICAgICBicmVhazsKLSsgICAgICBjYXNlIFBOR0NvZGVj OjpGT1JNQVRfQVJHQjoKLSsgICAgICAgIHN0YXRlLT5vdXRwdXRfY2hhbm5lbHMgPSA0OwotKwlw bmdfc2V0X3N3YXBfYWxwaGEocG5nX3B0cik7Ci0rICAgICAgICBicmVhazsKLSAgICAgICBjYXNl IFBOR0NvZGVjOjpGT1JNQVRfU2tCaXRtYXA6Ci0gICAgICAgICBzdGF0ZS0+b3V0cHV0X2NoYW5u ZWxzID0gNDsKLSAgICAgICAgIGJyZWFrOwotQEAgLTQ3NSw2ICs0ODMsOCBAQCBib29sIFBOR0Nv ZGVjOjpFbmNvZGUoY29uc3QgdW5zaWduZWQgY2hhciogaW5wdXQsCi0gICAgIGNhc2UgRk9STUFU X0JHUkE6Ci0gICAgICAgY29sb3JUeXBlID0ga0JHUkFfODg4OF9Ta0NvbG9yVHlwZTsKLSAgICAg ICBicmVhazsKLSsgICAgY2FzZSBGT1JNQVRfQVJHQjoKLSsgICAgICByZXR1cm4gZmFsc2U7Ci0g ICAgIGNhc2UgRk9STUFUX1NrQml0bWFwOgotICAgICAgIGNvbG9yVHlwZSA9IGtOMzJfU2tDb2xv clR5cGU7Ci0gICAgICAgYnJlYWs7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3VpL2dmeC9jb2RlYy9wbmdfY29kZWMuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS91aS9nZngvY29kZWMvcG5nX2NvZGVjLmgKLUBAIC0zNyw2ICszNywxMCBAQCBj bGFzcyBDT0RFQ19FWFBPUlQgUE5HQ29kZWMgewotICAgICAvLyBUaGlzIGlzIHRoZSBkZWZhdWx0 IFdpbmRvd3MgRElCIG9yZGVyLgotICAgICBGT1JNQVRfQkdSQSwKLSAKLSsgICAgLy8gNCBieXRl cyBwZXIgcGl4ZWwsIGluIEFSR0Igb3JkZXIgaW4gbWVtb3J5IHJlZ2FyZGxlc3Mgb2YgZW5kaWFu bmVzcy4KLSsgICAgLy8gT25seSBzdXBwb3J0ZWQgZm9yIGRlY29kaW5nCi0rICAgIEZPUk1BVF9B UkdCLAotKwotICAgICAvLyBTa0JpdG1hcCBmb3JtYXQuIEZvciBFbmNvZGUoKSBrTjMyX1NrQ29s b3JUeXBlICg0IGJ5dGVzIHBlciBwaXhlbCkgYW5kCi0gICAgIC8vIGtBbHBoYV84X1NrQ29sb3JU eXBlICgxIGJ5dGUgcGVyIHBpeGVsKSBmb3JtYXRzIGFyZSBzdXBwb3J0ZWQuCi0gICAgIC8vIGtB bHBoYV84X1NrQ29sb3JUeXBlIGdldHMgZW5jb2RlZCBpbnRvIGEgZ3JheXNjYWxlIFBORyB0cmVh dGluZyBhbHBoYSBhcwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91aS9n ZngvY29kZWMvcG5nX2NvZGVjX3VuaXR0ZXN0LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3VpL2dmeC9jb2RlYy9wbmdfY29kZWNfdW5pdHRlc3QuY2MKLUBAIC04NTMs NyArODUzLDcgQEAgVEVTVChQTkdDb2RlYywgRW5jb2RlQThTa0JpdG1hcCkgewotICAgICBmb3Ig KGludCB5ID0gMDsgeSA8IGg7IHkrKykgewotICAgICAgIHVpbnQ4X3Qgb3JpZ2luYWxfcGl4ZWwg PSAqb3JpZ2luYWxfYml0bWFwLmdldEFkZHI4KHgsIHkpOwotICAgICAgIHVpbnQzMl90IGRlY29k ZWRfcGl4ZWwgPSAqZGVjb2RlZF9iaXRtYXAuZ2V0QWRkcjMyKHgsIHkpOwotLSAgICAgIEVYUEVD VF9UUlVFKEJHUkFHcmF5RXF1YWxzQThHcmF5KGRlY29kZWRfcGl4ZWwsIG9yaWdpbmFsX3BpeGVs KSk7Ci0rICAgICAgRVhQRUNUX1RSVUUoQkdSQUdyYXlFcXVhbHNBOEdyYXkoU2tVblByZU11bHRp cGx5OjpQTUNvbG9yVG9Db2xvcihkZWNvZGVkX3BpeGVsKSwgb3JpZ2luYWxfcGl4ZWwpKTsKLSAg ICAgfQotICAgfQotIH0KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdWkv Z2Z4L2NvbG9yX2FuYWx5c2lzLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3VpL2dmeC9jb2xvcl9hbmFseXNpcy5jYwotQEAgLTE2LDYgKzE2LDcgQEAKLSAjaW5jbHVk ZSA8dmVjdG9yPgotIAotICNpbmNsdWRlICJiYXNlL2xvZ2dpbmcuaCIKLSsjaW5jbHVkZSAiYmFz ZS9zeXNfYnl0ZW9yZGVyLmgiCi0gI2luY2x1ZGUgInRoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9j b3JlL1NrQml0bWFwLmgiCi0gI2luY2x1ZGUgInRoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3Jl L1NrVW5QcmVNdWx0aXBseS5oIgotICNpbmNsdWRlICJ1aS9nZngvY29kZWMvcG5nX2NvZGVjLmgi Ci1AQCAtNTA2LDEwICs1MDcsMTcgQEAgU2tDb2xvciBGaW5kQ2xvc2VzdENvbG9yKGNvbnN0IHVp bnQ4X3QqIGltYWdlLAotICAgU2tDb2xvciBiZXN0X2NvbG9yID0gY29sb3I7Ci0gICBjb25zdCB1 aW50OF90KiBieXRlID0gaW1hZ2U7Ci0gICBmb3IgKGludCBpID0gMDsgaSA8IHdpZHRoICogaGVp Z2h0OyArK2kpIHsKLSsjaWYgZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOKQotICAgICB1 aW50OF90IGIgPSAqKGJ5dGUrKyk7Ci0gICAgIHVpbnQ4X3QgZyA9ICooYnl0ZSsrKTsKLSAgICAg dWludDhfdCByID0gKihieXRlKyspOwotICAgICB1aW50OF90IGEgPSAqKGJ5dGUrKyk7Ci0rI2Vs c2UKLSsgICAgdWludDhfdCBhID0gKihieXRlKyspOwotKyAgICB1aW50OF90IHIgPSAqKGJ5dGUr Kyk7Ci0rICAgIHVpbnQ4X3QgZyA9ICooYnl0ZSsrKTsKLSsgICAgdWludDhfdCBiID0gKihieXRl KyspOwotKyNlbmRpZgotICAgICAvLyBJZ25vcmUgZnVsbHkgdHJhbnNwYXJlbnQgcGl4ZWxzLgot ICAgICBpZiAoYSA9PSAwKQotICAgICAgIGNvbnRpbnVlOwotQEAgLTUyNyw3ICs1MzUsNiBAQCBT a0NvbG9yIEZpbmRDbG9zZXN0Q29sb3IoY29uc3QgdWludDhfdCogaW1hZ2UsCi0gCi0gLy8gRm9y IGEgMTZ4MTYgaWNvbiBvbiBhbiBJbnRlbCBDb3JlIGk1IHRoaXMgZnVuY3Rpb24gdGFrZXMgYXBw cm94aW1hdGVseQotIC8vIDAuNSBtcyB0byBydW4uCi0tLy8gVE9ETyhwb3J0KTogVGhpcyBjb2Rl IGFzc3VtZXMgdGhlIENQVSBhcmNoaXRlY3R1cmUgaXMgbGl0dGxlLWVuZGlhbi4KLSBTa0NvbG9y IENhbGN1bGF0ZUtNZWFuQ29sb3JPZkJ1ZmZlcih1aW50OF90KiBkZWNvZGVkX2RhdGEsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGltZ193aWR0aCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW1nX2hlaWdodCwKLUBAIC01NTAsMTAg KzU1NywxNyBAQCBTa0NvbG9yIENhbGN1bGF0ZUtNZWFuQ29sb3JPZkJ1ZmZlcih1aW50OF90KiBk ZWNvZGVkX2RhdGEsCi0gICAgICAgICBpbnQgcGl4ZWxfcG9zID0gc2FtcGxlci0+R2V0U2FtcGxl KGltZ193aWR0aCwgaW1nX2hlaWdodCkgJQotICAgICAgICAgICAgIChpbWdfd2lkdGggKiBpbWdf aGVpZ2h0KTsKLSAKLSsjaWYgZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOKQotICAgICAg ICAgdWludDhfdCBiID0gZGVjb2RlZF9kYXRhW3BpeGVsX3BvcyAqIDRdOwotICAgICAgICAgdWlu dDhfdCBnID0gZGVjb2RlZF9kYXRhW3BpeGVsX3BvcyAqIDQgKyAxXTsKLSAgICAgICAgIHVpbnQ4 X3QgciA9IGRlY29kZWRfZGF0YVtwaXhlbF9wb3MgKiA0ICsgMl07Ci0gICAgICAgICB1aW50OF90 IGEgPSBkZWNvZGVkX2RhdGFbcGl4ZWxfcG9zICogNCArIDNdOwotKyNlbHNlCi0rICAgICAgICB1 aW50OF90IGEgPSBkZWNvZGVkX2RhdGFbcGl4ZWxfcG9zICogNF07Ci0rICAgICAgICB1aW50OF90 IHIgPSBkZWNvZGVkX2RhdGFbcGl4ZWxfcG9zICogNCArIDFdOwotKyAgICAgICAgdWludDhfdCBn ID0gZGVjb2RlZF9kYXRhW3BpeGVsX3BvcyAqIDQgKyAyXTsKLSsgICAgICAgIHVpbnQ4X3QgYiA9 IGRlY29kZWRfZGF0YVtwaXhlbF9wb3MgKiA0ICsgM107Ci0rI2VuZGlmCi0gICAgICAgICAvLyBT a2lwIGZ1bGx5IHRyYW5zcGFyZW50IHBpeGVscyBhcyB0aGV5IHVzdWFsbHkgY29udGFpbiBibGFj ayBpbiB0aGVpcgotICAgICAgICAgLy8gUkdCIGNoYW5uZWxzIGJ1dCBkbyBub3QgY29udHJpYnV0 ZSB0byB0aGUgdmlzdWFsIGltYWdlLgotICAgICAgICAgaWYgKGEgPT0gMCkKLUBAIC02MDIsMTAg KzYxNiwxNyBAQCBTa0NvbG9yIENhbGN1bGF0ZUtNZWFuQ29sb3JPZkJ1ZmZlcih1aW50OF90KiBk ZWNvZGVkX2RhdGEsCi0gICAgICAgdWludDhfdCogcGl4ZWwgPSBkZWNvZGVkX2RhdGE7Ci0gICAg ICAgdWludDhfdCogZGVjb2RlZF9kYXRhX2VuZCA9IGRlY29kZWRfZGF0YSArIChpbWdfd2lkdGgg KiBpbWdfaGVpZ2h0ICogNCk7Ci0gICAgICAgd2hpbGUgKHBpeGVsIDwgZGVjb2RlZF9kYXRhX2Vu ZCkgewotKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4pCi0gICAgICAgICB1aW50 OF90IGIgPSAqKHBpeGVsKyspOwotICAgICAgICAgdWludDhfdCBnID0gKihwaXhlbCsrKTsKLSAg ICAgICAgIHVpbnQ4X3QgciA9ICoocGl4ZWwrKyk7Ci0gICAgICAgICB1aW50OF90IGEgPSAqKHBp eGVsKyspOwotKyNlbHNlCi0rICAgICAgICB1aW50OF90IGEgPSAqKHBpeGVsKyspOwotKyAgICAg ICAgdWludDhfdCByID0gKihwaXhlbCsrKTsKLSsgICAgICAgIHVpbnQ4X3QgZyA9ICoocGl4ZWwr Kyk7Ci0rICAgICAgICB1aW50OF90IGIgPSAqKHBpeGVsKyspOwotKyNlbmRpZgotICAgICAgICAg Ly8gU2tpcCB0cmFuc3BhcmVudCBwaXhlbHMsIHNlZSBhYm92ZS4KLSAgICAgICAgIGlmIChhID09 IDApCi0gICAgICAgICAgIGNvbnRpbnVlOwotQEAgLTY4Myw4ICs3MDQsMTIgQEAgU2tDb2xvciBD YWxjdWxhdGVLTWVhbkNvbG9yT2ZQTkcoc2NvcGVkX3JlZnB0cjxiYXNlOjpSZWZDb3VudGVkTWVt b3J5PiBwbmcsCi0gCi0gICBpZiAocG5nLmdldCgpICYmIHBuZy0+c2l6ZSgpICYmCi0gICAgICAg Z2Z4OjpQTkdDb2RlYzo6RGVjb2RlKHBuZy0+ZnJvbnQoKSwgcG5nLT5zaXplKCksCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGdmeDo6UE5HQ29kZWM6OkZPUk1BVF9CR1JBLCAmZGVjb2Rl ZF9kYXRhLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW1nX3dpZHRoLCAmaW1nX2hl aWdodCkpIHsKLSsjaWYgZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOKQotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBnZng6OlBOR0NvZGVjOjpGT1JNQVRfQkdSQSwKLSsjZWxzZQot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZng6OlBOR0NvZGVjOjpGT1JNQVRfQVJHQiwK LSsjZW5kaWYKLSsJCQkgICAgJmRlY29kZWRfZGF0YSwgJmltZ193aWR0aCwgJmltZ19oZWlnaHQp KSB7Ci0gICAgIHJldHVybiBDYWxjdWxhdGVLTWVhbkNvbG9yT2ZCdWZmZXIoJmRlY29kZWRfZGF0 YVswXSwgaW1nX3dpZHRoLCBpbWdfaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGxvd2VyX2JvdW5kLCB1cHBlcl9ib3VuZCwgc2FtcGxlciwgdHJ1ZSk7Ci0g ICB9Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VpL2dmeC9za2JpdG1h cF9vcGVyYXRpb25zX3VuaXR0ZXN0LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3VpL2dmeC9za2JpdG1hcF9vcGVyYXRpb25zX3VuaXR0ZXN0LmNjCi1AQCAtMjM4LDcg KzIzOCw3IEBAIFRFU1QoU2tCaXRtYXBPcGVyYXRpb25zVGVzdCwgQ3JlYXRlSFNMU2hpZnRlZEJp dG1hcEh1ZU9ubHkpIHsKLSAKLSAgIGZvciAoaW50IHkgPSAwLCBpID0gMDsgeSA8IHNyY19oOyB5 KyspIHsKLSAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBzcmNfdzsgeCsrKSB7Ci0tICAgICAgKnNy Yy5nZXRBZGRyMzIoeCwgeSkgPSBTa0NvbG9yU2V0QVJHQigyNTUsIDAsIDAsIGkgJSAyNTUpOwot KyAgICAgICpzcmMuZ2V0QWRkcjMyKHgsIHkpID0gU2tQYWNrQVJHQjMyKDI1NSwgMCwgMCwgaSAl IDI1NSk7Ci0gICAgICAgaSsrOwotICAgICB9Ci0gICB9Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3VybC91cmxfY2Fub25faG9zdC5jYwotKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS91cmwvdXJsX2Nhbm9uX2hvc3QuY2MKLUBAIC0xMzUsOCArMTM1 LDcgQEAgYm9vbCBEb1NpbXBsZUhvc3QoY29uc3QgSU5DSEFSKiBob3N0LAotICAgICBpZiAoc291 cmNlID09ICclJykgewotICAgICAgIC8vIFVuZXNjYXBlIGZpcnN0LCBpZiBwb3NzaWJsZS4KLSAg ICAgICAvLyBTb3VyY2Ugd2lsbCBiZSB1c2VkIG9ubHkgaWYgZGVjb2RlIG9wZXJhdGlvbiB3YXMg c3VjY2Vzc2Z1bC4KLS0gICAgICBpZiAoIURlY29kZUVzY2FwZWQoaG9zdCwgJmksIGhvc3RfbGVu LAotLSAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNo YXIqPigmc291cmNlKSkpIHsKLSsgICAgICBpZiAoIURlY29kZUVzY2FwZWQoaG9zdCwgJmksIGhv c3RfbGVuLCAmc291cmNlKSkgewotICAgICAgICAgLy8gSW52YWxpZCBlc2NhcGVkIGNoYXJhY3Rl ci4gVGhlcmUgaXMgbm90aGluZyB0aGF0IGNhbiBtYWtlIHRoaXMKLSAgICAgICAgIC8vIGhvc3Qg dmFsaWQuIFdlIGFwcGVuZCBhbiBlc2NhcGVkIHBlcmNlbnQgc28gdGhlIFVSTCBsb29rcyByZWFz b25hYmxlCi0gICAgICAgICAvLyBhbmQgbWFyayBhcyBmYWlsZWQuCi0tLS0gcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3VybC91cmxfY2Fub25faW50ZXJuYWwuaAotKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91cmwvdXJsX2Nhbm9uX2ludGVybmFsLmgKLUBA IC0zMDUsOSArMzA1LDkgQEAgaW5saW5lIGJvb2wgSXM4Qml0Q2hhcihiYXNlOjpjaGFyMTYgYykg ewotICAgcmV0dXJuIGMgPD0gMjU1OwotIH0KLSAKLS10ZW1wbGF0ZTx0eXBlbmFtZSBDSEFSPgot K3RlbXBsYXRlPHR5cGVuYW1lIENIQVIsIHR5cGVuYW1lIERTVD4KLSBpbmxpbmUgYm9vbCBEZWNv ZGVFc2NhcGVkKGNvbnN0IENIQVIqIHNwZWMsIGludCogYmVnaW4sIGludCBlbmQsCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiB1bmVzY2FwZWRfdmFsdWUpIHsKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgIERTVCogdW5lc2NhcGVkX3ZhbHVlKSB7Ci0gICBpZiAo KmJlZ2luICsgMyA+IGVuZCB8fAotICAgICAgICFJczhCaXRDaGFyKHNwZWNbKmJlZ2luICsgMV0p IHx8ICFJczhCaXRDaGFyKHNwZWNbKmJlZ2luICsgMl0pKSB7Ci0gICAgIC8vIEludmFsaWQgZXNj YXBlIHNlcXVlbmNlIGJlY2F1c2UgdGhlcmUncyBub3QgZW5vdWdoIHJvb20sIG9yIHRoZQpkaWZm IC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDkzLWNocm9taXVtLXY4LWVsZnYyLnBhdGNo IGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDkzLWNocm9taXVtLXY4LWVsZnYyLnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNTgwYzgxNDY5Ny4uMDAwMDAwMDAwMDAKLS0tIGEv c3JjcGtncy9xdDUvcGF0Y2hlcy8wMDkzLWNocm9taXVtLXY4LWVsZnYyLnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsNDMgKzAsMCBAQAotVGhpcyBmaXhlcyB2OCBvbiBiaWcgZW5kaWFuIHBwYzY0 IEVMRnYyLgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92OC9zcmMvcHBj L2NvbnN0YW50cy1wcGMuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92 OC9zcmMvcHBjL2NvbnN0YW50cy1wcGMuaAotQEAgLTIxLDcgKzIxLDggQEAKLSAjZW5kaWYKLSAK LSAjaWYgVjhfSE9TVF9BUkNIX1BQQyAmJiBcCi0tICAgIChWOF9PU19BSVggfHwgKFY4X1RBUkdF VF9BUkNIX1BQQzY0ICYmIFY4X1RBUkdFVF9CSUdfRU5ESUFOKSkKLSsgICAgKFY4X09TX0FJWCB8 fCAoVjhfVEFSR0VUX0FSQ0hfUFBDNjQgJiYgXAotKyAgICAgIChWOF9UQVJHRVRfQklHX0VORElB TiAmJiAoIWRlZmluZWQoX0NBTExfRUxGKSB8fCBfQ0FMTF9FTEYgPT0gMSkpKSkKLSAjZGVmaW5l IEFCSV9VU0VTX0ZVTkNUSU9OX0RFU0NSSVBUT1JTIDEKLSAjZWxzZQotICNkZWZpbmUgQUJJX1VT RVNfRlVOQ1RJT05fREVTQ1JJUFRPUlMgMAotQEAgLTMzLDEzICszNCwxNSBAQAotICNkZWZpbmUg QUJJX1BBU1NFU19IQU5ETEVTX0lOX1JFR1MgMAotICNlbmRpZgotIAotLSNpZiAhVjhfSE9TVF9B UkNIX1BQQyB8fCAhVjhfVEFSR0VUX0FSQ0hfUFBDNjQgfHwgVjhfVEFSR0VUX0xJVFRMRV9FTkRJ QU4KLSsjaWYgIVY4X0hPU1RfQVJDSF9QUEMgfHwgIVY4X1RBUkdFVF9BUkNIX1BQQzY0IHx8IFwK LSsgICAgKFY4X1RBUkdFVF9MSVRUTEVfRU5ESUFOIHx8IChkZWZpbmVkKF9DQUxMX0VMRikgJiYg X0NBTExfRUxGID09IDIpKQotICNkZWZpbmUgQUJJX1JFVFVSTlNfT0JKRUNUX1BBSVJTX0lOX1JF R1MgMQotICNlbHNlCi0gI2RlZmluZSBBQklfUkVUVVJOU19PQkpFQ1RfUEFJUlNfSU5fUkVHUyAw Ci0gI2VuZGlmCi0gCi0tI2lmICFWOF9IT1NUX0FSQ0hfUFBDIHx8IChWOF9UQVJHRVRfQVJDSF9Q UEM2NCAmJiBWOF9UQVJHRVRfTElUVExFX0VORElBTikKLSsjaWYgIVY4X0hPU1RfQVJDSF9QUEMg fHwgKFY4X1RBUkdFVF9BUkNIX1BQQzY0ICYmIFwKLSsgICAgKFY4X1RBUkdFVF9MSVRUTEVfRU5E SUFOIHx8IChkZWZpbmVkKF9DQUxMX0VMRikgJiYgX0NBTExfRUxGID09IDIpKSkKLSAjZGVmaW5l IEFCSV9DQUxMX1ZJQV9JUCAxCi0gI2Vsc2UKLSAjZGVmaW5lIEFCSV9DQUxMX1ZJQV9JUCAwCi0t LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Y4L3NyYy9wcGMvcmVnaXN0ZXIt cHBjLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdjgvc3JjL3BwYy9y ZWdpc3Rlci1wcGMuaAotQEAgLTE0NSw3ICsxNDUsOCBAQCBjb25zdCBpbnQga051bVNhZmVwb2lu dFJlZ2lzdGVycyA9IDMyOwotIC8vIFRoZSBmb2xsb3dpbmcgY29uc3RhbnRzIGRlc2NyaWJlIHRo ZSBzdGFjayBmcmFtZSBsaW5rYWdlIGFyZWEgYXMKLSAvLyBkZWZpbmVkIGJ5IHRoZSBBQkkuICBO b3RlIHRoYXQga051bVJlcXVpcmVkU3RhY2tGcmFtZVNsb3RzIG11c3QKLSAvLyBzYXRpc2Z5IGFs aWdubWVudCByZXF1aXJlbWVudHMgKHJvdW5kaW5nIHVwIGlmIHJlcXVpcmVkKS4KLS0jaWYgVjhf VEFSR0VUX0FSQ0hfUFBDNjQgJiYgVjhfVEFSR0VUX0xJVFRMRV9FTkRJQU4gIC8vIHBwYzY0bGUg bGludXgKLSsjaWYgVjhfVEFSR0VUX0FSQ0hfUFBDNjQgJiYgKFY4X1RBUkdFVF9MSVRUTEVfRU5E SUFOIHx8IFwKLSsgICAgZGVmaW5lZChfQ0FMTF9FTEYpICYmIF9DQUxMX0VMRiA9PSAyKQotIC8v IFswXSBiYWNrIGNoYWluCi0gLy8gWzFdIGNvbmRpdGlvbiByZWdpc3RlciBzYXZlIGFyZWEKLSAv LyBbMl0gbGluayByZWdpc3RlciBzYXZlIGFyZWEKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3Bh dGNoZXMvMDA5NC1iaWctZW5kaWFuLXNraWEtcG9ydGFibGUucGF0Y2ggYi9zcmNwa2dzL3F0NS9w YXRjaGVzLzAwOTQtYmlnLWVuZGlhbi1za2lhLXBvcnRhYmxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCBlYTI2OWQzODNkMS4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9x dDUvcGF0Y2hlcy8wMDk0LWJpZy1lbmRpYW4tc2tpYS1wb3J0YWJsZS5wYXRjaAorKysgL2Rldi9u dWxsCkBAIC0xLDE3ICswLDAgQEAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvc2tpYS90aGlyZF9wYXJ0eS9za2Ntcy9za2Ntcy5jYwotKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL3RoaXJkX3BhcnR5 L3NrY21zL3NrY21zLmNjCi1AQCAtMTgyOCw2ICsxODI4LDE0IEBAIHR5cGVkZWYgZW51bSB7Ci0g ICAgICNlbmRpZgotICNlbmRpZgotIAotKy8vIHdpdGggY3VycmVudCBnY2MgOC4zLjAgd2UgZ2V0 IGFuIGludGVybmFsIGNvbXBpbGVyIGVycm9yIHdoZW4gY29tcGlsaW5nCi0rLy8gZm9yIHBwYzY0 IGJpZyBlbmRpYW4gLSBzbyBzd2l0Y2ggdG8gcG9ydGFibGUgdW50aWwgdGhpcyBpcyByZXNvbHZl ZAotKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rIyAgaWYgZGVmaW5lZChfX0JJR19FTkRJ QU5fXykgJiYgIWRlZmluZWQoU0tDTVNfUE9SVEFCTEUpCi0rIyAgICBkZWZpbmUgU0tDTVNfUE9S VEFCTEUKLSsjICBlbmRpZgotKyNlbmRpZgotKwotICNpZiBkZWZpbmVkKF9fY2xhbmdfXykKLSAg ICAgdGVtcGxhdGUgPGludCBOLCB0eXBlbmFtZSBUPiB1c2luZyBWZWMgPSBUIF9fYXR0cmlidXRl X18oKGV4dF92ZWN0b3JfdHlwZShOKSkpOwotICNlbGlmIGRlZmluZWQoX19HTlVDX18pCmRpZmYg LS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAxMDAtc2FuZGJveC1zY2hlZF9nZXRwYXJhbS5w YXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDEwMC1zYW5kYm94LXNjaGVkX2dldHBhcmFtLnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNWMzM2E1N2YwMy4uMDAwMDAwMDAw MDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMTAwLXNhbmRib3gtc2NoZWRfZ2V0cGFyYW0u cGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1BbGxvdyBTWVNfc2NoZWRfZ2V0 cGFyYW0gYW5kIFNZU19zY2hlZF9nZXRzY2hlZHVsZXIKLW11c2wgdXNlcyB0aGVtIGZvciBwdGhy ZWFkX2dldHNjaGVkcGFyYW0oKQotCi1zb3VyY2U6IGh0dHBzOi8vZ2l0LmFscGluZWxpbnV4Lm9y Zy9hcG9ydHMvY29tbWl0L2NvbW11bml0eS9jaHJvbWl1bT9pZD01NGFmOWY4YWMyNGY1MmQzODJj NTc1OGUyNDQ1YmYwMjA2ZWZmNDBlCi0KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vc2VydmljZXMvc2VydmljZV9tYW5hZ2VyL3NhbmRib3gvbGludXgvYnBmX3JlbmRlcmVy X3BvbGljeV9saW51eC5jYwkyMDE5LTExLTEyIDIwOjQ4OjIwLjAxMzcyNDY2MSArMDEwMAotKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zZXJ2aWNlcy9zZXJ2aWNlX21hbmFn ZXIvc2FuZGJveC9saW51eC9icGZfcmVuZGVyZXJfcG9saWN5X2xpbnV4LmNjLnBhdGNoZWQJMjAx OS0xMS0xMiAyMDo1ODo1Ny4zMzA2OTU2NzYgKzAxMDAKLUBAIC05MywxMCArOTMsMTYgQEAKLSAg ICAgY2FzZSBfX05SX3N5c2luZm86Ci0gICAgIGNhc2UgX19OUl90aW1lczoKLSAgICAgY2FzZSBf X05SX3VuYW1lOgotKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCi0rICAgIGNhc2UgX19OUl9zY2hl ZF9nZXRwYXJhbToKLSsgICAgY2FzZSBfX05SX3NjaGVkX2dldHNjaGVkdWxlcjoKLSsjZW5kaWYK LSAgICAgICByZXR1cm4gQWxsb3coKTsKLSAgICAgY2FzZSBfX05SX3NjaGVkX2dldGFmZmluaXR5 OgotKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKLSAgICAgY2FzZSBfX05SX3NjaGVkX2dldHBhcmFt OgotICAgICBjYXNlIF9fTlJfc2NoZWRfZ2V0c2NoZWR1bGVyOgotKyNlbmRpZgotICAgICBjYXNl IF9fTlJfc2NoZWRfc2V0c2NoZWR1bGVyOgotICAgICAgIHJldHVybiBzYW5kYm94OjpSZXN0cmlj dFNjaGVkVGFyZ2V0KEdldFBvbGljeVBpZCgpLCBzeXNubyk7Ci0gICAgIGNhc2UgX19OUl9wcmxp bWl0NjQ6CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXQ1L3Rl bXBsYXRlCmluZGV4IDE0MzdhOTA5MWI5Li4yNDVkYzNkODNjYyAxMDA2NDQKLS0tIGEvc3JjcGtn cy9xdDUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xdDUvdGVtcGxhdGUKQEAgLTEsODYgKzEsMzEg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3F0NScKIHBrZ25hbWU9cXQ1Ci12ZXJzaW9uPTUuMTMu MgotcmV2aXNpb249MgordmVyc2lvbj01LjE0LjIKK3JldmlzaW9uPTEKK2J1aWxkX3N0eWxlPW1l dGEKIHdya3NyYz0icXQtZXZlcnl3aGVyZS1zcmMtJHt2ZXJzaW9ufSIKLWJ1aWxkX3N0eWxlPWdu dS1jb25maWd1cmUKLWhvc3RtYWtlZGVwZW5kcz0iY21ha2UgY2xhbmcgZmxleCBnaXQgZ2xpYi1k ZXZlbCBncGVyZiBuaW5qYSBwa2ctY29uZmlnCi0gcHJvdG9idWYgcHl0aG9uIHJlMmMgcnVieSB3 aGljaCIKK2hvc3RtYWtlZGVwZW5kcz0iY21ha2UgY2xhbmcgZmxleCBnaXQgZ2xpYi1kZXZlbCBw a2ctY29uZmlnCisgcHl0aG9uIHJlMmMgcnVieSB3aGljaCIKIG1ha2VkZXBlbmRzPSJTREwyLWRl dmVsIFZ1bGthbi1IZWFkZXJzIGFsc2EtbGliLWRldmVsIGRvdWJsZS1jb252ZXJzaW9uLWRldmVs CiAgZXVkZXYtbGlidWRldi1kZXZlbCBmZm1wZWctZGV2ZWwgZnJlZXRkcy1kZXZlbCBnbGliLWRl dmVsIGdzdC1wbHVnaW5zLWJhc2UxLWRldmVsCi0gZ3RrKzMtZGV2ZWwgaWN1LWRldmVsIGpzb25j cHAtZGV2ZWwgbGliWHYtZGV2ZWwgbGliYmx1ZXRvb3RoLWRldmVsIGxpYmNhcC1kZXZlbAotIGxp YmV2ZW50LWRldmVsIGxpYmlucHV0LWRldmVsIGxpYm1uZy1kZXZlbCBsaWJteXNxbGNsaWVudC1k ZXZlbCBsaWJwcm94eS1kZXZlbAotIGxpYnZweC1kZXZlbCBsaWJ3ZWJwLWRldmVsIGxpYnhzbHQt ZGV2ZWwgbWluaXppcC1kZXZlbCBuc3MtZGV2ZWwgY3Vwcy1kZXZlbAorIGd0ayszLWRldmVsIGlj dS1kZXZlbCBsaWJYdi1kZXZlbCBsaWJibHVldG9vdGgtZGV2ZWwgbGliY2FwLWRldmVsCisgbGli aW5wdXQtZGV2ZWwgbGlibW5nLWRldmVsIGxpYm15c3FsY2xpZW50LWRldmVsIGxpYnByb3h5LWRl dmVsCisgbGlidnB4LWRldmVsIGxpYndlYnAtZGV2ZWwgbGlieHNsdC1kZXZlbCBjdXBzLWRldmVs CiAgb3B1cy1kZXZlbCBwY2l1dGlscy1kZXZlbCBwY3JlMi1kZXZlbCBwb3N0Z3Jlc3FsLWxpYnMt ZGV2ZWwKLSBwcm90b2J1Zi1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsIHNuYXBweS1kZXZlbCB0c2xp Yi1kZXZlbAorIHByb3RvYnVmLWRldmVsIHB1bHNlYXVkaW8tZGV2ZWwgdHNsaWItZGV2ZWwgbGli cmVzc2wtZGV2ZWwKICB1bml4b2RiYy1kZXZlbCB4Y2ItdXRpbC1pbWFnZS1kZXZlbCB4Y2ItdXRp bC1rZXlzeW1zLWRldmVsCiAgeGNiLXV0aWwtcmVuZGVydXRpbC1kZXZlbCB4Y2ItdXRpbC13bS1k ZXZlbCBsaWJ6c3RkLWRldmVsIGhhcmZidXp6LWRldmVsIgotZGVwZW5kcz0icXRjaG9vc2VyIgor ZGVwZW5kcz0icXQ1LWRidXMgcXQ1LWd1aSBxdDUtY29yZSBxdDUtd2lkZ2V0cyBxdDUtbmV0d29y ayBxdDUteG1sCisgcXQ1LXRlc3QgcXQ1LXNxbCBxdDUtY29uY3VycmVudCBxdDUtcHJpbnRzdXBw b3J0IHF0NS1vcGVuZ2wiCiBzaG9ydF9kZXNjPSJDcm9zcy1wbGF0Zm9ybSBhcHBsaWNhdGlvbiBh bmQgVUkgZnJhbWV3b3JrIChRVDUpIgogbWFpbnRhaW5lcj0iSsO8cmdlbiBCdWNobcO8bGxlciA8 cHVsbG1vbGxAdC1vbmxpbmUuZGU+IgogbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciwgTEdQTC0z LjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly9xdC5pby8iCiBkaXN0ZmlsZXM9Imh0dHA6 Ly9kb3dubG9hZC5xdC5pby9vZmZpY2lhbF9yZWxlYXNlcy9xdC8ke3ZlcnNpb24lLip9LyR7dmVy c2lvbn0vc2luZ2xlL3F0LWV2ZXJ5d2hlcmUtc3JjLSR7dmVyc2lvbn0udGFyLnh6IgotY2hlY2tz dW09NTVlODI3MzUzNmJlNDFmNGY2MzA2NGE3OWU1NTJhMjIxMzM4NDhiYjQxOTQwMGI2ZmE4ZTlm YzBkYzA1ZGUwOAorY2hlY2tzdW09YzZmY2Q1M2M3NDRkZjg5ZTdkMzIyM2MwMjgzOGEzMzMwOWJk MWMyOTFmY2I2ZjkzNDE1MDVmZTk5ZjdmMTlmYQogcmVwbGFjZXM9InF0NS1kb2M8NS42LjAgcXQ1 LXF1aWNrMTw1LjYuMCBxdDUtcXVpY2sxLWRldmVsPDUuNi4wIHF0NS13ZWJraXQ8NS42LjAgcXQ1 LXdlYmtpdC1kZXZlbDw1LjYuMAogIHF0NS1lbmdpbmlvPDUuNy4xIHF0NS1lbmdpbmlvLWRldmVs PDUuNy4xIHF0NS1wbHVnaW4tZ3RrPDUuNy4xIHF0NS1jYW52YXMzZDw1LjEzLjAiCi0KLWJ1aWxk X29wdGlvbnM9IndlYmVuZ2luZSIKLWRlc2Nfb3B0aW9uX3dlYmVuZ2luZT0iQnVpbGQgQ2hyb21p dW0tYmFzZWQgV2ViRW5naW5lIGNvbXBvbmVudCIKLQotbWFrZWRlcGVuZHMrPSIgaGFyZmJ1enot ZGV2ZWwiCi0KLWlmIFsgIiRYQlBTX0xJQkMiID0gIm11c2wiIF07IHRoZW4KLQlob3N0bWFrZWRl cGVuZHMrPSIgbXVzbC1sZWdhY3ktY29tcGF0IgotZmkKLWlmIFsgIiRYQlBTX1RBUkdFVF9MSUJD IiA9ICJtdXNsIiBdOyB0aGVuCi0JbWFrZWRlcGVuZHMrPSIgbXVzbC1sZWdhY3ktY29tcGF0Igot ZmkKLQotY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCi0JYXJtdjV0ZWwqKSA7OyAjIHF0 d2ViZW5naW5lIHVzZXMgVlNNIGFzc2VtYmxlciBjb21tYW5kcwotCXBwY3xwcGMtbXVzbCkgOzsg IyBxdHdlYmVuZ2luZSBkb2VzIG5vdCBzdXBwb3J0IHBwYyAzMiBiaXQKLQkqKSBpZiBbICIkWEJQ U19XT1JEU0laRSIgPSAiJFhCUFNfVEFSR0VUX1dPUkRTSVpFIiBdOyB0aGVuCi0JCSMgd2ViZW5n aW5lIGNhbiBiZSBidWlsdCBvbmx5IGlmIHdvcmQgc2l6ZSBtYXRjaGVzCi0JCWJ1aWxkX29wdGlv bnNfZGVmYXVsdD0id2ViZW5naW5lIgotCWZpOzsKLWVzYWMKLQotaWYgWyAiJGJ1aWxkX29wdGlv bl93ZWJlbmdpbmUiIF07IHRoZW4KLQlpZiBbICIkWEJQU19UQVJHRVRfTk9fQVRPTUlDOCIgXTsg dGhlbgotCQltYWtlZGVwZW5kcys9IiBsaWJhdG9taWMtZGV2ZWwiCi0JZmkKLQlpZiBbICIkWEJQ U19OT19BVE9NSUM4IiBdOyB0aGVuCi0JCWhvc3RtYWtlZGVwZW5kcys9IiBsaWJhdG9taWMtZGV2 ZWwiCi0JZmkKLWZpCi0KLXN1YnBhY2thZ2VzPSJxdDUtM2QgcXQ1LTNkLWRldmVsIHF0NS1jaGFy dHMgcXQ1LWNoYXJ0cy1kZXZlbAotIHF0NS1jb25uZWN0aXZpdHkgcXQ1LWNvbm5lY3Rpdml0eS1k ZXZlbCBxdDUtZGF0YXZpczNkIHF0NS1kYXRhdmlzM2QtZGV2ZWwKLSBxdDUtZGVjbGFyYXRpdmUg cXQ1LWRlY2xhcmF0aXZlLWRldmVsIHF0NS1kZXZlbCBxdDUtZXhhbXBsZXMgcXQ1LWdhbWVwYWQK LSBxdDUtZ2FtZXBhZC1kZXZlbCBxdDUtZ3JhcGhpY2FsZWZmZWN0cyBxdDUtaG9zdC10b29scyBx dDUtaW1hZ2Vmb3JtYXRzCi0gcXQ1LWxvY2F0aW9uIHF0NS1sb2NhdGlvbi1kZXZlbCBxdDUtbXVs dGltZWRpYSBxdDUtbXVsdGltZWRpYS1kZXZlbAotIHF0NS1uZXR3b3JrYXV0aCBxdDUtbmV0d29y a2F1dGgtZGV2ZWwgcXQ1LXBsdWdpbi1teXNxbCBxdDUtcGx1Z2luLW9kYmMKLSBxdDUtcGx1Z2lu LXBnc3FsIHF0NS1wbHVnaW4tc3FsaXRlIHF0NS1wbHVnaW4tdGRzIHF0NS1wdXJjaGFzaW5nCi0g cXQ1LXB1cmNoYXNpbmctZGV2ZWwgcXQ1LXFtYWtlIHF0NS1xdWlja2NvbnRyb2xzIHF0NS1xdWlj a2NvbnRyb2xzMgotIHF0NS1xdWlja2NvbnRyb2xzMi1kZXZlbCBxdDUtcmVtb3Rlb2JqZWN0cyBx dDUtcmVtb3Rlb2JqZWN0cy1kZXZlbAotIHF0NS1zY3JpcHQgcXQ1LXNjcmlwdC1kZXZlbCBxdDUt c2N4bWwgcXQ1LXNjeG1sLWRldmVsIHF0NS1zZW5zb3JzCi0gcXQ1LXNlbnNvcnMtZGV2ZWwgcXQ1 LXNlcmlhbGJ1cyBxdDUtc2VyaWFsYnVzLWRldmVsIHF0NS1zZXJpYWxwb3J0Ci0gcXQ1LXNlcmlh bHBvcnQtZGV2ZWwgcXQ1LXNwZWVjaCBxdDUtc3BlZWNoLWRldmVsIHF0NS1zdmcgcXQ1LXN2Zy1k ZXZlbAotIHF0NS10b29scyBxdDUtdG9vbHMtZGV2ZWwgcXQ1LXRyYW5zbGF0aW9ucyBxdDUtdmly dHVhbGtleWJvYXJkCi0gcXQ1LXZpcnR1YWxrZXlib2FyZC1kZXZlbCBxdDUtd2F5bGFuZCBxdDUt d2F5bGFuZC1kZXZlbCBxdDUtd2ViY2hhbm5lbAotIHF0NS13ZWJjaGFubmVsLWRldmVsIHF0NS13 ZWJnbHBsdWdpbiBxdDUtd2ViZ2xwbHVnaW4tZGV2ZWwgcXQ1LXdlYnNvY2tldHMKLSBxdDUtd2Vi c29ja2V0cy1kZXZlbCBxdDUtd2VidmlldyBxdDUtd2Vidmlldy1kZXZlbCBxdDUteDExZXh0cmFz Ci0gcXQ1LXgxMWV4dHJhcy1kZXZlbCBxdDUteG1scGF0dGVybnMgcXQ1LXhtbHBhdHRlcm5zLWRl dmVsCi0gcXQ1LWxvdHRpZSBxdDUtbG90dGllLWRldmVsIgotCi1pZiBbICIkYnVpbGRfb3B0aW9u X3dlYmVuZ2luZSIgXTsgdGhlbgotCXN1YnBhY2thZ2VzKz0iIHF0NS13ZWJlbmdpbmUgcXQ1LXdl YmVuZ2luZS1kZXZlbCIKLWZpCi0KLWlmIFsgIiRYQlBTX1dPUkRTSVpFIiAtZXEgMzIgXTsgdGhl bgotCW5vZGVidWc9eWVzICAjIHByZXZlbnQgT09NCi1maQorbGliMzJtb2RlPWZ1bGwKIAogIyBX b3JrIGFyb3VuZCBTU0x2M197Y2xpZW50LHNlcnZlcn1fbWV0aG9kIG1pc3NpbmcgaW4gbGlicmVz c2wtMi4zLjMKIENGTEFHUz0iLURPUEVOU1NMX05PX1BTSyAtRE9QRU5TU0xfTk9fTkVYVFBST1RP TkVHIgpAQCAtOTMsMjYgKzM4LDggQEAgaWYgWyAiJENST1NTX0JVSUxEIiBdOyB0aGVuCiAJIyB3 YXlsYW5kLWRldmVsIGNvbnRhaW5zIC91c3IvYmluL3dheWxhbmQtc2Nhbm5lcgogCWhvc3RtYWtl ZGVwZW5kcys9IiBpY3UtZGV2ZWwgd2F5bGFuZC1kZXZlbCB6bGliLWRldmVsIgogCWhvc3RtYWtl ZGVwZW5kcys9IiBwb3N0Z3Jlc3FsLWxpYnMtZGV2ZWwiCi0JIyBDcm9zcyBidWlsZGluZyBxdHdl YmVuZ2luZSByZXF1aXJlcyBzb21lIG1vcmUgaG9zdCBwYWNrYWdlcwotCWlmIFsgIiRidWlsZF9v cHRpb25fd2ViZW5naW5lIiBdOyB0aGVuCi0JCWhvc3RtYWtlZGVwZW5kcys9IiBuc3MtZGV2ZWwg bGliZXZlbnQtZGV2ZWwiCi0JZmkKIGZpCiAKLV9ib290c3RyYXBfZ24oKSB7Ci0JIyBCb290c3Ry YXAgZ24gKGdlbmVyYXRlIG5pbmphKQotCWVjaG8gIkJvb3RzdHJhcHBpbmcgJ2duJyIKLQljZCAk e3dya3NyY30vcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2duCi0JQ0ZMQUdTPSIkQ0ZMQUdTX2hv c3QiIENYWEZMQUdTPSIkQ1hYRkxBR1NfaG9zdCIgTERGTEFHUz0iJExERkxBR1NfaG9zdCIgXAot CVBLR0NPTkZJRz0vdXNyL2Jpbi9wa2djb25maWcgUEtHX0NPTkZJR19QQVRIPSIvdXNyL2xpYi9w a2djb25maWc6L3Vzci9zaGFyZS9wa2djb25maWciIFwKLQkJcHl0aG9uMiBidWlsZC9nZW4ucHkg LS1uby1sYXN0LWNvbW1pdC1wb3NpdGlvbiAtLW91dC1wYXRoIFwKLQkJCSR7d3Jrc3JjfS9xdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvZ24vb3V0L1JlbGVhc2UgLS1jYyAiJENDX2hvc3QiIFwKLQkJ CS0tY3h4ICIkQ1hYX2hvc3QiIC0tbGQgIiRDWFhfaG9zdCIgLS1hciAiJEFSX2hvc3QiCi0Jbmlu amEgLUMgb3V0L1JlbGVhc2UgZ24KLQljZCAke3dya3NyY30KLX0KLQotCiBfY2xlYW51cF93cmtz cmNfbGVhaygpIHsKIAlpZiBbIC1kICIke1BLR0RFU1RESVJ9L3Vzci9saWIvY21ha2UiIF07IHRo ZW4KIAkJIyBSZXBsYWNlIHJlZmVyZW5jZXMgdG8gJHt3cmtzcmN9IGluIGNtYWtlIGZpbGVzCkBA IC0xNjcsNiArOTQsMTEgQEAgX2luc3RhbGxfZGV2ZWwoKSB7CiAJbG9jYWwgbW9kdWxlPSQxCiAJ Y2QgJHt3cmtzcmN9LyR7bW9kdWxlfQogCW1ha2UgSU5TVEFMTF9ST09UPSR7UEtHREVTVERJUn0g aW5zdGFsbAorCXZta2RpciB1c3IvbGliL3F0NS9ta3NwZWNzL21vZHVsZXMKKwlpZiBbIC1kICIk e1BLR0RFU1RESVJ9JHt3cmtzcmN9L2hvc3QvbWtzcGVjcy9tb2R1bGVzIiBdOyB0aGVuCisJCW12 IC1udiAke1BLR0RFU1RESVJ9JHt3cmtzcmN9L2hvc3QvbWtzcGVjcy9tb2R1bGVzLyogXAorCQkJ JHtQS0dERVNURElSfS91c3IvbGliL3F0NS9ta3NwZWNzL21vZHVsZXMvCisJZmkKIAlybSAtcmYg JHtQS0dERVNURElSfS9idWlsZGRpcgogCXJtIC1yZiAke1BLR0RFU1RESVJ9L3Vzci9zaGFyZQog CXJtIC1yZiAke1BLR0RFU1RESVJ9L3Vzci9saWIvcXQ1L2JpbgpAQCAtMjM3LDMyICsxNjksNiBA QCBfbXNnX2Nyb3NzKCkgewogZG9fY29uZmlndXJlKCkgewogCWxvY2FsIG9wdHMgc3BlYwogCi0J IyBDb21wYXRpYmlsaXR5IGZ1bmN0aW9ucyByZXNfbmluaXQoKSBhbmQgcmVzX25jbG9zZSgpIGZv ciBtdXNsIGxpYmMKLQljcCAke0ZJTEVTRElSfS9yZXNvbHZfY29tcGF0LmggJHt3cmtzcmN9L3F0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9uZXQvZG5zCi0KLQljYXNlICIkWEJQU19U QVJHRVRfTUFDSElORSIgaW4KLQlhcm12NSp8YXJtdjYqKQkjIERpc2FibGUgInlpZWxkIiBhc3Nl bWJsZXIgaW5zdHJ1Y3Rpb24KLQkJc2VkIC1pIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3NwaW5fbG9jay5jYyBcCi0J CQlxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvcGRmaXVtL3Ro aXJkX3BhcnR5L2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3Ivc3Bpbl9sb2NrLmNj IFwKLQkJCS1lICdzOyJ5aWVsZCI7Im5vcCI7JwotCQk7OwotCWVzYWMKLQotCWNhc2UgIiRYQlBT X1RBUkdFVF9NQUNISU5FIiBpbgotCSotbXVzbCkKLQkJIyBQYXRjaCAuLi4vbGludXgvKi9jb25m aWcue2gsYXNtfSB0byBkZWZpbmUgSEFWRV9TWVNDVEwgMAotCQlsb2NhbCBjb25maWcgY2hyb21p dW09JHt3cmtzcmN9L3F0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bQotCQlmb3IgY29u ZmlnIGluICQoZmluZCAke2Nocm9taXVtfS90aGlyZF9wYXJ0eS9mZm1wZWcvY2hyb21pdW0vY29u ZmlnIC1uYW1lICJjb25maWdcLioiIHwgZ3JlcCBsaW51eCk7IGRvCi0JCQlzZWQgLWkgJHtjb25m aWd9IC1lICJzO0hBVkVfU1lTQ1RMIDE7SEFWRV9TWVNDVEwgMDsiCi0JCWRvbmUKLQkJIyBEbyBu b3QgdXNlIGFsbG9jYXRvciBzaGltIChpbmNvbXBhdGlibGUgd2l0aCBtdXNsIGxpYmMpCi0JCXNl ZCAtaSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYnVpbGQvY29uZmlnL2FsbG9j YXRvci5nbmkgXAotCQkJLWUgInM7XCh1c2VfYWxsb2NhdG9yX3NoaW1cKSA9IC4qO1wxID0gZmFs c2U7IgotCQkjIERlZmluZSB0byBzZXQgMiBNaUIgc3RhY2sgc2l6ZSBmb3IgcXRocmVhZAotCQll eHBvcnQgQ1hYRkxBR1MrPSIgLURfUE9TSVhfVEhSRUFEX0FUVFJfU1RBQ0tTSVpFPTIwOTcxNTIi Ci0JCTs7Ci0JZXNhYwotCiAJIyBDcm9zcyBidWlsZCBwYXRjaGVzCiAJaWYgWyAiJENST1NTX0JV SUxEIiBdOyB0aGVuCiAJCSMgVGhpcyBhbHNvIHNldHMgZGVmYXVsdCB7QyxDWFgsTER9RkxBR1Mg Zm9yIHByb2plY3RzIGJ1aWx0IHVzaW5nIHFtYWtlCkBAIC0yNzUsMjggKzE4MSw2IEBAIGRvX2Nv bmZpZ3VyZSgpIHsKIAkJZm9yIGQgaW4gJChscyAke3dya3NyY30vcXRiYXNlL2luY2x1ZGUpOyBk bwogCQkJbG4gLXNmdiAke3ZlcnNpb259LyR7ZH0vcHJpdmF0ZSBxdGJhc2UvaW5jbHVkZS8ke2R9 L3ByaXZhdGUKIAkJZG9uZQotCQlpZiBbICIkYnVpbGRfb3B0aW9uX3dlYmVuZ2luZSIgXTsgdGhl bgotCQkJX2Jvb3RzdHJhcF9nbgotCQlmaQotCi0JCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5F IiBpbgotCQltaXBzKikJIyBzZ2lkZWZzLmggaXMgaW4gL3Vzci9pbmNsdWRlL2FzbQotCQkJZm9y IGYgaW4gXAotCQkJCXF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0 eS9sc3MvbGludXhfc3lzY2FsbF9zdXBwb3J0LmggXAotCQkJCXF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL2Fu ZHJvaWQvaW5jbHVkZS9hc20tbWlwcy9mcHJlZ2RlZi5oIFwKLQkJCQlxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NvbW1v bi9hbmRyb2lkL2luY2x1ZGUvYXNtLW1pcHMvcmVnZGVmLmggXAotCQkJCXF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29t bW9uL2FuZHJvaWQvaW5jbHVkZS9hc20tbWlwcy9hc20uaCBcCi0JCQkJcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3RjbWFsbG9jL3ZlbmRvci9zcmMvYmFzZS9s aW51eF9zeXNjYWxsX3N1cHBvcnQuaCBcCi0JCQkJcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L3RjbWFsbG9jL2Nocm9taXVtL3NyYy9iYXNlL2xpbnV4X3N5c2Nh bGxfc3VwcG9ydC5oIFwKLQkJCQlxdHNjcmlwdC9zcmMvM3JkcGFydHkvamF2YXNjcmlwdGNvcmUv SmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmg7IGRvCi0JCQkJc2VkIC1pICRmIC1lICJzOzxz Z2lkZWZzLmg+Ozxhc20vc2dpZGVmcy5oPjsiCi0JCQlkb25lCi0JCQkjIEFzc3VtZSB0aGF0IFJH QkEgb3JkZXIgaXMgY29ycmVjdCBmb3IgYmlnIGVuZGlhbiBDUFVzCi0JCQlzZWQgLWkgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NraWEvY29uZmlnL1NrVXNlckNvbmZpZy5oIFwK LQkJCQktZSAnLyNlcnJvciBSZWFkIHRoZSBjb21tZW50IGF0IHRoaXMgbG9jYXRpb24vZCcKLQkJ CTs7Ci0JCWVzYWMKLQkJcGF0Y2ggLU5wMCA8ICR7RklMRVNESVJ9LzAwOTAtaGFyZC1kaXNhYmxl LXFtbGNoYWNoZWdlbi5wYXRjaAogCWVsc2UKIAkJIyBxbWFrZSB7Q1hYLEx9RkxBR1MgcGF0Y2hl cwogCQlzZWQgLWkgLWUgInN8XlwoQ1hYRkxBR1MgPS4qXCl8XDEgJHtDWFhGTEFHU318IiBcCkBA IC0zNDQsMjkgKzIyOCwxMSBAQCBkb19jb25maWd1cmUoKSB7CiAJb3B0cys9IiAtc3lzdGVtLXps aWIiCiAJb3B0cys9IiAtc3lzdGVtLXNxbGl0ZSIKIAlvcHRzKz0iIC1zeXN0ZW0taGFyZmJ1enoi Ci0JIyBSZWx5IG9uIGF1dG8gZGV0ZWN0aW9uIChmYWlscyBpZiBmb3JjZWQgZm9yIGNyb3NzIGJ1 aWxkcykKLQlpZiBbICIkYnVpbGRfb3B0aW9uX3dlYmVuZ2luZSIgXTsgdGhlbgotCQkjIG9wdHMr PSIgLXdlYmVuZ2luZS1hbHNhIgotCQlvcHRzKz0iIC1uby13ZWJlbmdpbmUtZW1iZWRkZWQtYnVp bGQiCi0JCW9wdHMrPSIgLXdlYmVuZ2luZS1pY3UiCi0JCW9wdHMrPSIgLXdlYmVuZ2luZS1mZm1w ZWciCi0JCW9wdHMrPSIgLXdlYmVuZ2luZS1vcHVzIgotCQlvcHRzKz0iIC13ZWJlbmdpbmUtd2Vi cCIKLQkJb3B0cys9IiAtd2ViZW5naW5lLXBlcHBlci1wbHVnaW5zIgotCQlvcHRzKz0iIC13ZWJl bmdpbmUtcHJpbnRpbmctYW5kLXBkZiIKLQkJb3B0cys9IiAtd2ViZW5naW5lLXByb3ByaWV0YXJ5 LWNvZGVjcyIKLQkJb3B0cys9IiAtd2ViZW5naW5lLXB1bHNlYXVkaW8iCi0JCW9wdHMrPSIgLXdl YmVuZ2luZS1zcGVsbGNoZWNrZXIiCi0JCW9wdHMrPSIgLXdlYmVuZ2luZS13ZWJydGMiCi0JCW9w dHMrPSIgLXdlYmVuZ2luZS1nZW9sb2NhdGlvbiIKLQkJb3B0cys9IiAtd2ViZW5naW5lLXY4LXNu YXBzaG90IgotCWZpCisJb3B0cys9IiAtbm8tZmVhdHVyZS1lZ2xmc19icmNtIiAjIG1pc3Npbmcg aW5jbHVkZSBwYXRoCiAJb3B0cys9IiAtc2lsZW50IgogCSMgb3B0cys9IiAtdiIKLQkjIG1ha2Ug c3VyZSB0byBkaXNhYmxlIHdlYmVuZ2luZSBvbiBwbGF0Zm9ybXMgdGhhdCB3ZSBkb24ndCBidWls ZCBpdCBmb3IKLQlpZiBbIC16ICIkYnVpbGRfb3B0aW9uX3dlYmVuZ2luZSIgXTsgdGhlbgotCQlv cHRzKz0iIC1za2lwIHF0d2ViZW5naW5lIgotCWZpCisJb3B0cys9IiAtc2tpcCBxdHdlYmVuZ2lu ZSIKKwlvcHRzKz0iIC1za2lwIHF0d2VidmlldyIKIAlMREZMQUdTKz0iIC1XbCwtLW5vLWtlZXAt bWVtb3J5IiAgIyBuZWVkcyBtb3JlIHRoYW4gOEdCIFJBTSBlbHNlCiAJaWYgWyAiJENST1NTX0JV SUxEIiBdOyB0aGVuCiAJCXNwZWM9dm9pZC0ke1hCUFNfQ1JPU1NfVFJJUExFVH0tZysrCkBAIC0z NzYsMzMgKzI0MiwxMyBAQCBkb19jb25maWd1cmUoKSB7CiAJCW9wdHMrPSIgLXN5c3Jvb3QgJHtY QlBTX0NST1NTX0JBU0V9IgogCQlvcHRzKz0iIC1ob3N0cHJlZml4IGhvc3QiCiAJCW9wdHMrPSIg LWV4dHByZWZpeCAvdXNyIgotCQljYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KLQkJYXJt KnxtaXBzKikKLQkJCWlmIFsgIiRidWlsZF9vcHRpb25fd2ViZW5naW5lIiBdOyB0aGVuCi0JCQkJ IyBWOCBzbmFwc2hvdCBjYW4ndCBiZSBidWlsdCB3aXRoIGEgNjQgYml0IGhvc3QgY29tcGlsZXIK LQkJCQlvcHRzKz0iIC1uby13ZWJlbmdpbmUtdjgtc25hcHNob3QiCi0JCQlmaQotCQkJOzsKLQkJ ZXNhYwotCQljYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KLQkJYWFyY2g2NCp8YXJtdjcq KQotCQkJc2VkIC1pICR7d3Jrc3JjfS9xdHdlYmVuZ2luZS9zcmMvY29yZS9jb25maWcvbGludXgu cHJpIFwKLQkJCQktZSAiL2FybV91c2VfbmVvbj0vcztmYWxzZTt0cnVlOyIKLQkJCTs7Ci0JCWFy bSopCi0JCQlzZWQgLWkgJHt3cmtzcmN9L3F0d2ViZW5naW5lL3NyYy9jb3JlL2NvbmZpZy9saW51 eC5wcmkgXAotCQkJCS1lICIvYXJtX3VzZV9uZW9uPS9zO3RydWU7ZmFsc2U7IgotCi0JCQk7Owot CQllc2FjCi0JCXNlZCAtaSAke3dya3NyY30vcXR3ZWJlbmdpbmUvc3JjL2NvcmUvY29uZmlnL2xp bnV4LnByaSBcCi0JCQktZSAiL2VxdWFscyhNQVJNVi9zO3RydWU7ZmFsc2U7IgogCiAJCSMgTWFr ZSBzdXJlIGxpYlF0NURlc2lnbmVyIGlzIGJ1aWx0CiAJCWNwIC12ICR7RklMRVNESVJ9L3F0dG9v bHNfc3JjLnBybyBxdHRvb2xzL3NyYy9zcmMucHJvCiAJCWNwIC12ICR7RklMRVNESVJ9L2Rlc2ln bmVyX3NyYy5wcm8gcXR0b29scy9zcmMvZGVzaWduZXIvc3JjL3NyYy5wcm8KIAkJY3AgLXYgJHtG SUxFU0RJUn0vYXNzaXN0YW50LnBybyBxdHRvb2xzL3NyYy9hc3Npc3RhbnQvYXNzaXN0YW50LnBy bwogCQljcCAtdiAke0ZJTEVTRElSfS9saW5ndWlzdC5wcm8gcXR0b29scy9zcmMvbGluZ3Vpc3Qv bGluZ3Vpc3QucHJvCisJCWNwIC12ICR7RklMRVNESVJ9L3VpdG9vbHMucHJvIHF0dG9vbHMvc3Jj L2Rlc2lnbmVyL3NyYy91aXRvb2xzL3VpdG9vbHMucHJvCiAJZmkKIAogCUNDPSJjYyIgQ1hYPSJj KysiIENQUD0iY3BwIiBMRD0iYysrIiBBUj0iYXIiIEFTPSJhcyIgTk09Im5tIiBcCkBAIC00MTUs MTAgKzI2MSwxMCBAQCBkb19jb25maWd1cmUoKSB7CiB9CiAKIGRvX2J1aWxkKCkgewotCWV4cG9y dCBOSU5KQUpPQlM9JHttYWtlam9ic30KIAkjIFJ1biBtYWtlIHR3aWNlIGJlY2F1c2Ugc29tZXRp bWVzIGEgZmlsZSAiY2hyb21lL2dyaXQvZ2VuZXJhdGVkX3Jlc291cmNlcy5oIgogCSMgaXMgbm90 IHlldCByZWFkeSB3aGVuIGl0IGlzIHRvIGJlIGluY2x1ZGVkLiBSZXBlYXRpbmcgbWFrZSB3b3Jr cyBhcm91bmQgdGhhdAogCSMgcHJvYmxlbSB3aXRob3V0IGhhdmluZyB0byByZXNvcnQgdG8gZGlz YWJsZV9wYXJhbGxlbF9idWlsZD15ZXMKKwkjIG9yIHNvbWUgb3RoZXIgZmlsZXMKIAltYWtlICR7 bWFrZWpvYnN9IHx8IG1ha2UgJHttYWtlam9ic30KIH0KIApAQCAtNDkwLDEyICszMzYsMTUgQEAg ZG9faW5zdGFsbCgpIHsKIAkJIwogCQlkaXJzKz0iIHF0ZGVjbGFyYXRpdmUvdG9vbHMvcW1sbWlu IgogCQlkaXJzKz0iIHF0ZGVjbGFyYXRpdmUvdG9vbHMvcW1sbGludCIKKwkJZGlycys9IiBxdGRl Y2xhcmF0aXZlL3Rvb2xzL3FtbGNhY2hlZ2VuIgogCQlkaXJzKz0iIHF0ZGVjbGFyYXRpdmUvdG9v bHMvcW1saW1wb3J0c2Nhbm5lciIKIAkJZGlycys9IiBxdGJhc2Uvc3JjL3Rvb2xzL21vYyIKIAkJ ZGlycys9IiBxdGJhc2Uvc3JjL3Rvb2xzL3JjYyIKIAkJZGlycys9IiBxdGJhc2Uvc3JjL3Rvb2xz L3VpYyIKIAkJZGlycys9IiBxdGJhc2Uvc3JjL3Rvb2xzL3FkYnVzY3BwMnhtbCIKIAkJZGlycys9 IiBxdGJhc2Uvc3JjL3Rvb2xzL3FkYnVzeG1sMmNwcCIKKwkJZGlycys9IiBxdGJhc2Uvc3JjL3Rv b2xzL3F2a2dlbiIKKwkJZGlycys9IiBxdGJhc2Uvc3JjL3Rvb2xzL3RyYWNlZ2VuIgogCQlkaXJz Kz0iIHF0YmFzZS9zcmMvdG9vbHMvcWxhbHIiCiAJCWRpcnMrPSIgcXQzZC90b29scy9xZ2x0ZiIK IAkJZGlycys9IiBxdHJlbW90ZW9iamVjdHMvdG9vbHMvcmVwYyIKQEAgLTU2Nyw2ICs0MTYsMTAy IEBAIGRvX2luc3RhbGwoKSB7CiAJcm0gLXJmICR7REVTVERJUn0vYnVpbGRkaXIKIH0KIAorcXQ1 LWd1aV9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2MrPSIgLSBHdWkiCisJcGtnX2luc3RhbGwoKSB7 CisJCXZtb3ZlICJ1c3IvbGliL2xpYlF0NUd1aS5zbyoiCisJCXZtb3ZlICJ1c3IvbGliL2xpYlF0 NVhjYlFwYS5zbyoiCisJCXZtb3ZlICJ1c3IvbGliL2xpYlF0NUVnbEZTRGV2aWNlSW50ZWdyYXRp b24uc28qIgorCQl2bW92ZSAidXNyL2xpYi9saWJRdDVFZ2xGc0ttc1N1cHBvcnQuc28qIgorCQl2 bW92ZSB1c3IvbGliL3F0NS9wbHVnaW5zL2dlbmVyaWMKKwkJdm1vdmUgdXNyL2xpYi9xdDUvcGx1 Z2lucy9wbGF0Zm9ybXMKKwkJdm1vdmUgdXNyL2xpYi9xdDUvcGx1Z2lucy94Y2JnbGludGVncmF0 aW9ucworCQl2bW92ZSB1c3IvbGliL3F0NS9wbHVnaW5zL2ltYWdlZm9ybWF0cworCQl2bW92ZSB1 c3IvbGliL3F0NS9wbHVnaW5zL2VnbGRldmljZWludGVncmF0aW9ucworCQl2bW92ZSB1c3IvbGli L3F0NS9wbHVnaW5zL3BsYXRmb3JtaW5wdXRjb250ZXh0cworCQl2bW92ZSB1c3IvbGliL3F0NS9w bHVnaW5zL3BsYXRmb3JtdGhlbWVzCisJfQorfQorCitxdDUtZGJ1c19wYWNrYWdlKCkgeworCXNo b3J0X2Rlc2MrPSIgLSBEQnVzIgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSAidXNyL2xpYi9s aWJRdDVEQnVzLnNvKiIKKwl9Cit9CisKK3F0NS1jb3JlX3BhY2thZ2UoKSB7CisJc2hvcnRfZGVz Yys9IiAtIENvcmUiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYlF0NUNv cmUuc28qIgorCX0KK30KKworcXQ1LW9wZW5nbF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2MrPSIg LSBPcGVuR0wiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYlF0NU9wZW5H TC5zbyoiCisJfQorfQorCitxdDUtcHJpbnRzdXBwb3J0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVz Yys9IiAtIFByaW50IFN1cHBvcnQiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGli L2xpYlF0NVByaW50U3VwcG9ydC5zbyoiCisJCXZtb3ZlIHVzci9saWIvcXQ1L3BsdWdpbnMvcHJp bnRzdXBwb3J0CisJfQorfQorCitxdDUtY29uY3VycmVudF9wYWNrYWdlKCkgeworCXNob3J0X2Rl c2MrPSIgLSBDb25jdXJyZW5jeSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIv bGliUXQ1Q29uY3VycmVudC5zbyoiCisJfQorfQorCitxdDUtd2lkZ2V0c19wYWNrYWdlKCkgewor CXNob3J0X2Rlc2MrPSIgLSBXaWRnZXRzIgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSAidXNy L2xpYi9saWJRdDVXaWRnZXRzLnNvKiIKKwl9Cit9CisKK3F0NS1uZXR3b3JrX3BhY2thZ2UoKSB7 CisJc2hvcnRfZGVzYys9IiAtIE5ldHdvcmsiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1 c3IvbGliL2xpYlF0NU5ldHdvcmsuc28qIgorCQl2bW92ZSB1c3IvbGliL3F0NS9wbHVnaW5zL2Jl YXJlcgorCX0KK30KKworcXQ1LXNxbF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2MrPSIgLSBTcWwi CisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYlF0NVNxbC5zbyoiCisJfQor fQorCitxdDUtdGVzdF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2MrPSIgLSBUZXN0IgorCXBrZ19p bnN0YWxsKCkgeworCQl2bW92ZSAidXNyL2xpYi9saWJRdDVUZXN0LnNvKiIKKwl9Cit9CisKK3F0 NS14bWxfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjKz0iIC0gWG1sIgorCXBrZ19pbnN0YWxsKCkg eworCQl2bW92ZSAidXNyL2xpYi9saWJRdDVYbWwuc28qIgorCX0KK30KKworcXQ1LWJhc2UtZG9j c19wYWNrYWdlKCkgeworCXNob3J0X2Rlc2MrPSIgLSBEb2N1bWVudGF0aW9uIgorCXBrZ19pbnN0 YWxsKCkgeworCQl2bW92ZSB1c3Ivc2hhcmUvZG9jL3F0NQorCX0KK30KKwogcXQ1LTNkLWRldmVs X3BhY2thZ2UoKSB7CiAJc2hvcnRfZGVzYys9IiAtIEMrKyBhbmQgUU1MIEFQSXMgZm9yIDNEIGdy YXBoaWNzIChkZXZlbG9wbWVudCkiCiAJZGVwZW5kcz0icXQ1LTNkLSR7dmVyc2lvbn1fJHtyZXZp c2lvbn0gcXQ1LWRldmVsLSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCkBAIC02NDAsNyArNTg1LDcg QEAgcXQ1LWRlY2xhcmF0aXZlX3BhY2thZ2UoKSB7CiAJc2hvcnRfZGVzYys9IiAtIERlY2xhcmF0 aXZlIGNvbXBvbmVudCIKIAlwa2dfaW5zdGFsbCgpIHsKIAkJX2luc3RhbGxfc3VicGtnIHF0ZGVj bGFyYXRpdmUKLQkJX21vdmVfdGFyZ2V0X2JpbmFyaWVzIHFtbG1pbiBxbWxsaW50IHFtbGltcG9y dHNjYW5uZXIKKwkJX21vdmVfdGFyZ2V0X2JpbmFyaWVzIHFtbG1pbiBxbWxsaW50IHFtbGltcG9y dHNjYW5uZXIgcW1sY2FjaGVnZW4KIAl9CiB9CiAKQEAgLTc4Nyw2ICs3MzIsMTMgQEAgcXQ1LXF1 aWNrY29udHJvbHMyX3BhY2thZ2UoKSB7CiAJfQogfQogCitxdDUtcXVpY2t0aW1lbGluZV9wYWNr YWdlKCkgeworCXNob3J0X2Rlc2MrPSIgLSBLZXlmcmFtZS1iYXNlZCBhbmltYXRpb25zIgorCXBr Z19pbnN0YWxsKCkgeworCQlfaW5zdGFsbF9zdWJwa2cgcXRxdWlja3RpbWVsaW5lCisJfQorfQor CiBxdDUtcmVtb3Rlb2JqZWN0cy1kZXZlbF9wYWNrYWdlKCkgewogCXNob3J0X2Rlc2MrPSIgLSBS ZW1vdGUgT2JqZWN0cyAoZGV2ZWxvcG1lbnQpIgogCWRlcGVuZHM9InF0NS1yZW1vdGVvYmplY3Rz LSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0gcXQ1LWRldmVsLSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0i CkBAIC05NTUsMjEgKzkwNyw2IEBAIHF0NS13ZWJjaGFubmVsX3BhY2thZ2UoKSB7CiAJfQogfQog Ci1xdDUtd2ViZW5naW5lLWRldmVsX3BhY2thZ2UoKSB7Ci0Jc2hvcnRfZGVzYys9IiAtIFdlYkVu Z2luZSBjb21wb25lbnQgKGRldmVsb3BtZW50KSIKLQlkZXBlbmRzPSJxdDUtd2ViZW5naW5lLSR7 dmVyc2lvbn1fJHtyZXZpc2lvbn0gcXQ1LWRldmVsLSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCi0J cGtnX2luc3RhbGwoKSB7Ci0JCV9pbnN0YWxsX2RldmVsIHF0d2ViZW5naW5lCi0JfQotfQotCi1x dDUtd2ViZW5naW5lX3BhY2thZ2UoKSB7Ci0Jc2hvcnRfZGVzYys9IiAtIFdlYkVuZ2luZSBjb21w b25lbnQiCi0JcGtnX2luc3RhbGwoKSB7Ci0JCV9pbnN0YWxsX3N1YnBrZyBxdHdlYmVuZ2luZQot CX0KLX0KLQogcXQ1LXdlYmdscGx1Z2luLWRldmVsX3BhY2thZ2UoKSB7CiAJc2hvcnRfZGVzYys9 IiAtIFdlYkdMIHBsdWdpbiAoZGV2ZWxvcG1lbnQpIgogCWRlcGVuZHM9InF0NS13ZWJnbHBsdWdp bi0ke3ZlcnNpb259XyR7cmV2aXNpb259IHF0NS1kZXZlbC0ke3ZlcnNpb259XyR7cmV2aXNpb259 IgpAQCAtMTAwMCwyMSArOTM3LDYgQEAgcXQ1LXdlYnNvY2tldHNfcGFja2FnZSgpIHsKIAl9CiB9 CiAKLXF0NS13ZWJ2aWV3LWRldmVsX3BhY2thZ2UoKSB7Ci0Jc2hvcnRfZGVzYys9IiAtIFdlYlZp ZXcgY29tcG9uZW50IChkZXZlbG9wbWVudCkiCi0JZGVwZW5kcz0icXQ1LXdlYnZpZXctJHt2ZXJz aW9ufV8ke3JldmlzaW9ufSBxdDUtZGV2ZWwtJHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKLQlwa2df aW5zdGFsbCgpIHsKLQkJX2luc3RhbGxfZGV2ZWwgcXR3ZWJ2aWV3Ci0JfQotfQotCi1xdDUtd2Vi dmlld19wYWNrYWdlKCkgewotCXNob3J0X2Rlc2MrPSIgLSBXZWJWaWV3IGNvbXBvbmVudCIKLQlw a2dfaW5zdGFsbCgpIHsKLQkJX2luc3RhbGxfc3VicGtnIHF0d2VidmlldwotCX0KLX0KLQogcXQ1 LXgxMWV4dHJhcy1kZXZlbF9wYWNrYWdlKCkgewogCXNob3J0X2Rlc2MrPSIgLSBYMTEgZXh0cmFz IChkZXZlbG9wbWVudCkiCiAJZGVwZW5kcz0icXQ1LXgxMWV4dHJhcy0ke3ZlcnNpb259XyR7cmV2 aXNpb259IHF0NS1kZXZlbC0ke3ZlcnNpb259XyR7cmV2aXNpb259IgpAQCAtMTA0MCw2ICs5NjIs NyBAQCBxdDUteG1scGF0dGVybnMtZGV2ZWxfcGFja2FnZSgpIHsKIAogcXQ1LXhtbHBhdHRlcm5z X3BhY2thZ2UoKSB7CiAJc2hvcnRfZGVzYys9IiAtIFhNTCBjb21wb25lbnRzIgorCWRlcGVuZHM9 InF0Y2hvb3NlciIKIAlwa2dfaW5zdGFsbCgpIHsKIAkJX2luc3RhbGxfc3VicGtnIHF0eG1scGF0 dGVybnMKIAl9CkBAIC0xMDU0LDEyICs5NzcsMTMgQEAgcXQ1LXRyYW5zbGF0aW9uc19wYWNrYWdl KCkgewogCiBxdDUtaG9zdC10b29sc19wYWNrYWdlKCkgewogCXNob3J0X2Rlc2MrPSIgLSBUb29s cyByZXF1aXJlZCB3aGVuIGNyb3NzIGNvbXBpbGluZyIKKwlkZXBlbmRzPSJxdGNob29zZXIiCiAJ cGtnX2luc3RhbGwoKSB7CiAJCWxvY2FsIGRlc3Q9JHtYQlBTX0RFU1RESVJ9LyR7WEJQU19DUk9T U19UUklQTEVUfS9xdDUtdG9vbHMtJHt2ZXJzaW9ufQogCQl2bWtkaXIgdXNyL2xpYi9xdDUvYmlu CiAJCXZta2RpciB1c3IvYmluCi0JCWZvciBmIGluIG1vYyByY2MgdWljIHFsYWxyIHFkYnVzY3Bw MnhtbCBxZGJ1c3htbDJjcHAgXAotCQkJbGNvbnZlcnQgbHVwZGF0ZSBsdXBkYXRlLXBybyBscHJv ZHVtcCBscmVsZWFzZSBscmVsZWFzZS1wcm87IGRvCisJCWZvciBmIGluIG1vYyByY2MgdWljIHFs YWxyIHFkYnVzY3BwMnhtbCBxZGJ1c3htbDJjcHAgcXZrZ2VuIGZpeHF0NGhlYWRlcnMucGwgdHJh Y2VnZW4gXAorCQkJc3luY3F0LnBsIGxjb252ZXJ0IGx1cGRhdGUgbHVwZGF0ZS1wcm8gbHByb2R1 bXAgbHJlbGVhc2UgbHJlbGVhc2UtcHJvOyBkbwogCQkJaWYgWyAtciAke2Rlc3R9L3Vzci9saWIv cXQ1L2Jpbi8ke2Z9IF07IHRoZW4KIAkJCQltdiAtdiAke2Rlc3R9L3Vzci9saWIvcXQ1L2Jpbi8k e2Z9ICR7UEtHREVTVERJUn0vdXNyL2xpYi9xdDUvYmluLwogCQkJZmkKQEAgLTEwODgsNyArMTAx Miw3IEBAIHF0NS10b29scy1kZXZlbF9wYWNrYWdlKCkgewogCiBxdDUtdG9vbHNfcGFja2FnZSgp IHsKIAlzaG9ydF9kZXNjKz0iIC0gRGV2ZWxvcG1lbnQgdG9vbHMiCi0JZGVwZW5kcz0icXQ1LXRy YW5zbGF0aW9ucyBkZXNrdG9wLWZpbGUtdXRpbHMgaGljb2xvci1pY29uLXRoZW1lIgorCWRlcGVu ZHM9InF0Y2hvb3NlciBxdDUtdHJhbnNsYXRpb25zIGRlc2t0b3AtZmlsZS11dGlscyBoaWNvbG9y LWljb24tdGhlbWUiCiAJcGtnX2luc3RhbGwoKSB7CiAJCWxvY2FsIGYgZGVzdD0ke1hCUFNfREVT VERJUn0vJHtYQlBTX0NST1NTX1RSSVBMRVR9L3F0NS1ob3N0LXRvb2xzLSR7dmVyc2lvbn0KIAkJ X2luc3RhbGxfc3VicGtnIHF0dG9vbHMKQEAgLTExMjksOCArMTA1MywxOSBAQCBxdDUtdG9vbHNf cGFja2FnZSgpIHsKIHF0NS1kZXZlbF9wYWNrYWdlKCkgewogCWRlcGVuZHM9InpsaWItZGV2ZWwg bGlicmVzc2wtZGV2ZWw+PTIuMS40IGxpYlhleHQtZGV2ZWwgbGliWHJlbmRlci1kZXZlbAogCQlm b250Y29uZmlnLWRldmVsIGxpYmdsaWItZGV2ZWwgTWVzYUxpYi1kZXZlbCBtdGRldi1kZXZlbAot CQlkYnVzLWRldmVsIGljdS1kZXZlbCBjdXBzLWRldmVsIHF0NS0ke3ZlcnNpb259XyR7cmV2aXNp b259CisJCWRidXMtZGV2ZWwgaWN1LWRldmVsIGN1cHMtZGV2ZWwKKwkJcXQ1LWd1aS0ke3ZlcnNp b259XyR7cmV2aXNpb259CisJCXF0NS1kYnVzLSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KKwkJcXQ1 LWNvcmUtJHt2ZXJzaW9ufV8ke3JldmlzaW9ufQorCQlxdDUtd2lkZ2V0cy0ke3ZlcnNpb259XyR7 cmV2aXNpb259CiAJCXF0NS1xbWFrZS0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJCXF0NS1vcGVu Z2wtJHt2ZXJzaW9ufV8ke3JldmlzaW9ufQorCQlxdDUtcHJpbnRzdXBwb3J0LSR7dmVyc2lvbn1f JHtyZXZpc2lvbn0KKwkJcXQ1LWNvbmN1cnJlbnQtJHt2ZXJzaW9ufV8ke3JldmlzaW9ufQorCQlx dDUtc3FsLSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KKwkJcXQ1LXRlc3QtJHt2ZXJzaW9ufV8ke3Jl dmlzaW9ufQorCQlxdDUtbmV0d29yay0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJCXF0NS14bWwt JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQogCQlxdDUtaG9zdC10b29scy0ke3ZlcnNpb259XyR7cmV2 aXNpb259IgogCXNob3J0X2Rlc2MrPSIgLSBEZXZlbG9wbWVudCBmaWxlcyIKIAkjIHF0NS1lbmdp bmlvLWRldmVsIGlzIGdvbmUKQEAgLTExODEsNiArMTExNiw3IEBAIHF0NS1wbHVnaW4tdGRzX3Bh Y2thZ2UoKSB7CiAKIHF0NS1xbWFrZV9wYWNrYWdlKCkgewogCXNob3J0X2Rlc2MrPSIgLSBRbWFr ZSBNYWtlZmlsZSBnZW5lcmF0b3IgdG9vbCIKKwlkZXBlbmRzPSJxdGNob29zZXIiCiAJcGtnX2lu c3RhbGwoKSB7CiAJCXZtb3ZlIHVzci9saWIvcXQ1L2Jpbi9xbWFrZQogCQl2bW92ZSB1c3IvbGli L3F0NS9ta3NwZWNzCkBAIC0xMjA4LDMgKzExNDQsMTMgQEAgcXQ1LXFtYWtlX3BhY2thZ2UoKSB7 CiAJCWZpCiAJfQogfQorCitxdDUteGNiLXByaXZhdGUtaGVhZGVyc19wYWNrYWdlKCkgeworCXNo b3J0X2Rlc2MrPSIgLSBQcml2YXRlIGhlYWRlcnMgZm9yIFF0NSBYY2IiCisJZGVwZW5kcz0icXQ1 LWRldmVsIgorCXBrZ19pbnN0YWxsKCkgeworCQlmb3IgZiBpbiAke3dya3NyY30vcXRiYXNlL3Ny Yy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvKi5oOyBkbworCQkJdmluc3RhbGwgJGYgNjQ0IHVzci9p bmNsdWRlL3F0NXhjYi1wcml2YXRlCisJCWRvbmUKKwl9Cit9CgpGcm9tIDMwOTg4N2VjZTFlZDk5 NGU4YWMzMDgyZTQ1MGE2ZGMyNjEwN2E2NmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IEpvaG4gPG1lQGpvaG5ueW5hdG9yLmRldj4KRGF0ZTogVGh1LCAyIEFwciAyMDIwIDIwOjE3OjQ2 ICswMjAwClN1YmplY3Q6IFtQQVRDSCAwMi8xN10gcXQ1OiB1cGRhdGUgdG8gNS4xNC4yCgotLS0K IHNyY3BrZ3MvcXQ1L3RlbXBsYXRlIHwgMjYgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KIDEg ZmlsZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL3F0NS90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXQ1L3RlbXBsYXRlCmluZGV4IDI0 NWRjM2Q4M2NjLi45YTQ3NDRlZTYzZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDUvdGVtcGxhdGUK KysrIGIvc3JjcGtncy9xdDUvdGVtcGxhdGUKQEAgLTQzLDEzICs0MywxMyBAQCBmaQogX2NsZWFu dXBfd3Jrc3JjX2xlYWsoKSB7CiAJaWYgWyAtZCAiJHtQS0dERVNURElSfS91c3IvbGliL2NtYWtl IiBdOyB0aGVuCiAJCSMgUmVwbGFjZSByZWZlcmVuY2VzIHRvICR7d3Jrc3JjfSBpbiBjbWFrZSBm aWxlcwotCQlzZWQgLWkgJHtQS0dERVNURElSfS91c3IvbGliL2NtYWtlLyovKi5jbWFrZSBcCisJ CXZzZWQgLWkgJHtQS0dERVNURElSfS91c3IvbGliL2NtYWtlLyovKi5jbWFrZSBcCiAJCQktZSAi czske3dya3NyY30vaG9zdDsvdXNyL2xpYi9xdDU7ZyIgXAogCQkJLWUgInM7ZGV2aWNlcy92b2lk LSR7WEJQU19DUk9TU19UUklQTEVUfS1nKys7bGludXgtZysrO2ciCiAJZmkKIAlpZiBbIC1kICIk e1BLR0RFU1RESVJ9L3Vzci9saWIvcGtnY29uZmlnIiBdOyB0aGVuCiAJCSMgUmVwbGFjZSByZWZl cmVuY2VzIHRvICR7d3Jrc3JjfSBpbiBwa2djb25maWcgZmlsZXMKLQkJc2VkIC1pICR7UEtHREVT VERJUn0vdXNyL2xpYi9wa2djb25maWcvKi5wYyBcCisJCXZzZWQgLWkgJHtQS0dERVNURElSfS91 c3IvbGliL3BrZ2NvbmZpZy8qLnBjIFwKIAkJCS1lICJzOyR7d3Jrc3JjfS9ob3N0Oy91c3IvbGli L3F0NTtnIiBcCiAJCQktZSAicztkZXZpY2VzL3ZvaWQtJHtYQlBTX0NST1NTX1RSSVBMRVR9LWcr KztsaW51eC1nKys7ZyIKIAlmaQpAQCAtMTcyLDkgKzE3Miw5IEBAIGRvX2NvbmZpZ3VyZSgpIHsK IAkjIENyb3NzIGJ1aWxkIHBhdGNoZXMKIAlpZiBbICIkQ1JPU1NfQlVJTEQiIF07IHRoZW4KIAkJ IyBUaGlzIGFsc28gc2V0cyBkZWZhdWx0IHtDLENYWCxMRH1GTEFHUyBmb3IgcHJvamVjdHMgYnVp bHQgdXNpbmcgcW1ha2UKLQkJc2VkIC1pIC1lICJzfF5cKFFNQUtFX0NGTEFHU19SRUxFQVNFLipc KXxcMSAke1hCUFNfQ0ZMQUdTfXwiIFwKKwkJdnNlZCAtaSAtZSAic3xeXChRTUFLRV9DRkxBR1Nf UkVMRUFTRS4qXCl8XDEgJHtYQlBTX0NGTEFHU318IiBcCiAJCQkke3dya3NyY30vcXRiYXNlL21r c3BlY3MvY29tbW9uL2djYy1iYXNlLmNvbmYKLQkJc2VkIC1pIC1lICJzfF5cKFFNQUtFX0xGTEFH U19SRUxFQVNFLipcKXxcMSAke1hCUFNfTERGTEFHU318IiBcCisJCXZzZWQgLWkgLWUgInN8Xlwo UU1BS0VfTEZMQUdTX1JFTEVBU0UuKlwpfFwxICR7WEJQU19MREZMQUdTfXwiIFwKIAkJCSR7d3Jr c3JjfS9xdGJhc2UvbWtzcGVjcy9jb21tb24vZysrLXVuaXguY29uZgogCiAJCSMgQ3JlYXRlIHN5 bWJvbGljIGxpbmtzIGZvciBwcml2YXRlIGluY2x1ZGUgZGlyZWN0b3JpZXMKQEAgLTE4MywxNSAr MTgzLDE1IEBAIGRvX2NvbmZpZ3VyZSgpIHsKIAkJZG9uZQogCWVsc2UKIAkJIyBxbWFrZSB7Q1hY LEx9RkxBR1MgcGF0Y2hlcwotCQlzZWQgLWkgLWUgInN8XlwoQ1hYRkxBR1MgPS4qXCl8XDEgJHtD WFhGTEFHU318IiBcCisJCXZzZWQgLWkgLWUgInN8XlwoQ1hYRkxBR1MgPS4qXCl8XDEgJHtDWFhG TEFHU318IiBcCiAJCQktZSAic3xeXChMRkxBR1MgPS4qXCl8XDEgJHtMREZMQUdTfXwiIFwKIAkJ CSR7d3Jrc3JjfS9xdGJhc2UvcW1ha2UvTWFrZWZpbGUudW5peAogCiAJCSMgQnVpbGQgcW1ha2Ug dXNpbmcgVm9pZCB7QyxMRH1GTEFHUwogCQkjIFRoaXMgYWxzbyBzZXRzIGRlZmF1bHQge0MsQ1hY LExEfUZMQUdTIGZvciBwcm9qZWN0cyBidWlsdCB1c2luZyBxbWFrZQotCQlzZWQgLWkgLWUgInN8 XlwoUU1BS0VfQ0ZMQUdTX1JFTEVBU0UuKlwpfFwxICR7Q0ZMQUdTfXwiIFwKKwkJdnNlZCAtaSAt ZSAic3xeXChRTUFLRV9DRkxBR1NfUkVMRUFTRS4qXCl8XDEgJHtDRkxBR1N9fCIgXAogCQkJJHt3 cmtzcmN9L3F0YmFzZS9ta3NwZWNzL2NvbW1vbi9nY2MtYmFzZS5jb25mCi0JCXNlZCAtaSAtZSAi c3xeXChRTUFLRV9MRkxBR1NfUkVMRUFTRS4qXCl8XDEgJHtMREZMQUdTfXwiIFwKKwkJdnNlZCAt aSAtZSAic3xeXChRTUFLRV9MRkxBR1NfUkVMRUFTRS4qXCl8XDEgJHtMREZMQUdTfXwiIFwKIAkJ CSR7d3Jrc3JjfS9xdGJhc2UvbWtzcGVjcy9jb21tb24vZysrLXVuaXguY29uZgogCWZpCiAKQEAg LTMxNyw3ICszMTcsNyBAQCBkb19pbnN0YWxsKCkgewogCQlfbXNnX2Nyb3NzICIgQnVpbGRpbmcg JHtiYXNlfSIKIAkJY2QgJHt3cmtzcmN9LyR7ZGlyfS8ke2Jhc2V9CiAJCVsgLWYgIiR7YmFzZX0u cHJvIiBdICYmIGNwIC1hICR7YmFzZX0ucHJveywub3JpZ30KLQkJc2VkIC1pICR7YmFzZX0ucHJv IFwKKwkJdnNlZCAtaSAke2Jhc2V9LnBybyBcCiAJCQktZSAiL29wdGlvbihob3N0X2J1aWxkKS9k IiBcCiAJCQktZSAiL2luY2x1ZGUoLi5cLzNyZHBhcnR5XC9tYXNtXC9tYXNtLWRlZnMucHJpKS9p IGluY2x1ZGUoLi4vM3JkcGFydHkvbWFzbS9tYXNtLnByaSkiCiAJCW1ha2UgY2xlYW4KQEAgLTMy OSw3ICszMjksNyBAQCBkb19pbnN0YWxsKCkgewogCQlbIC1mICIke2Jhc2V9LnByby5vcmlnIiBd ICYmIG12IC12ICR7YmFzZX0ucHJvey5vcmlnLH0KIAkJbXYgLXYgTWFrZWZpbGV7Lm9yaWcsfQog CQkjIEF2b2lkIHJlYnVpbGRpbmcgdGhlIE1ha2VmaWxlIGJ5IGNoYW5naW5nIHRoZSBydWxlCi0J CXNlZCAtaSBNYWtlZmlsZSAtZSAiczteTWFrZWZpbGU6O01ha2VmaWxlLmhvc3Q6OyIKKwkJdnNl ZCAtaSBNYWtlZmlsZSAtZSAiczteTWFrZWZpbGU6O01ha2VmaWxlLmhvc3Q6OyIKIAogCQkjCiAJ CSMgQnVpbGQgdmFyaW91cyB0b29scyBmb3IgdGhlIHRhcmdldApAQCAtMzc2LDcgKzM3Niw3IEBA IGRvX2luc3RhbGwoKSB7CiAJCQkJY3AgJHtGSUxFU0RJUn0vJHtiYXNlfS5wcm8gJHtiYXNlfS5w cm8KIAkJCWVsc2UKIAkJCQkjIE90aGVyd2lzZSBzdHJpcCB0aGUgb3B0aW9uKGhvc3RfYnVpbGQp Ci0JCQkJc2VkIC1pICR7YmFzZX0ucHJvIC1lICIvb3B0aW9uKGhvc3RfYnVpbGQpL2QiCisJCQkJ dnNlZCAtaSAke2Jhc2V9LnBybyAtZSAiL29wdGlvbihob3N0X2J1aWxkKS9kIgogCQkJZmkKIAkJ CSMgQ3JlYXRlIHRoZSBNYWtlZmlsZQogCQkJWyAtZiBNYWtlZmlsZSBdICYmIG12IC12IE1ha2Vm aWxleywub3JpZ30KQEAgLTM5Niw3ICszOTYsNyBAQCBkb19pbnN0YWxsKCkgewogCQkJCS1lICJz O15cKFJBTkxJQlxccyo9XCkuKjtcMSAkUkFOTElCOyIgXAogCQkJCVw7CiAJCQkjIFNldCBhIGRp ZmZlcmVudCBkZXN0aW5hdGlvbiBkaXJlY3RvcnkgYW5kIHRhcmdldCBuYW1lCi0JCQlzZWQgLWkg TWFrZWZpbGUgXAorCQkJdnNlZCAtaSBNYWtlZmlsZSBcCiAJCQkJLWUgInM7XlwoREVTVERJUlxc cyo9XCkuKjtcMSAke0RFU1RESVJ9L3Vzci9saWIvcXQ1L2Jpbi87IiBcCiAJCQkJLWUgInM7Xlwo VEFSR0VUXFxzKj1cKS4qO1wxICR7REVTVERJUn0vdXNyL2xpYi9xdDUvYmluLyR7YmFzZX0tdGFy Z2V0OyIKIAkJCW1ha2UgJHttYWtlam9ic30KQEAgLTQwNCw4ICs0MDQsOCBAQCBkb19pbnN0YWxs KCkgewogCQkJWyAtZiAiJHtiYXNlfS5wcm8ub3JpZyIgXSAmJiBtdiAtdiAke2Jhc2V9LnByb3su b3JpZyx9CiAJCQlbIC1mIE1ha2VmaWxlLm9yaWcgXSAmJiBtdiAtdiBNYWtlZmlsZXsub3JpZyx9 CiAJCQkjIEF2b2lkIHJlYnVpbGRpbmcgdGhlIE1ha2VmaWxlIGJ5IGNoYW5naW5nIHRoZSBydWxl Ci0JCQlzZWQgLWkgTWFrZWZpbGUgLWUgJ3M7XmFsbDouKjthbGw6OycKLQkJCXNlZCAtaSBNYWtl ZmlsZSAtZSAiczteTWFrZWZpbGU6O01ha2VmaWxlLmhvc3Q6OyIKKwkJCXZzZWQgLWkgTWFrZWZp bGUgLWUgJ3M7XmFsbDouKjthbGw6OycKKwkJCXZzZWQgLWkgTWFrZWZpbGUgLWUgInM7Xk1ha2Vm aWxlOjtNYWtlZmlsZS5ob3N0OjsiCiAJCQlpZiBbIC14ICIke3dya3NyY30vJHtkaXJ9L2Jpbi8k e2Jhc2V9LWhvc3QiIF07IHRoZW4KIAkJCQltdiAtdiAke3dya3NyY30vJHtkaXJ9L2Jpbi8ke2Jh c2V9ey1ob3N0LH0KIAkJCQl0b3VjaCAke3dya3NyY30vJHtkaXJ9L2Jpbi8ke2Jhc2V9CgpGcm9t IDcyOGJjMTVlMWZhNzAzM2VkNTYxYjAwZTg5MzVhYzA1M2MyYmEzM2MgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IEpvaG4gPGpvaG56QHBvc3Rlby5uZXQ+CkRhdGU6IFR1ZSwgMTUgT2N0 IDIwMTkgMTM6MTk6NDMgKzAyMDAKU3ViamVjdDogW1BBVENIIDAzLzE3XSBOZXcgcGFja2FnZTog cXQ1LXdlYmVuZ2luZS01LjE0LjIKCi0tLQogc3JjcGtncy9xdDUtd2ViZW5naW5lLWRldmVsICAg ICAgICAgICAgICAgICAgIHwgICAgMiArLQogc3JjcGtncy9xdDUtd2ViZW5naW5lL2ZpbGVzL3Jl c29sdl9jb21wYXQuaCAgIHwgICAyOSArCiAuLi50ZS1pbnN0ZWFkLW9mLV9saWJjX2Zwc3RhdGUt b24tbGludXgucGF0Y2ggfCAgIDQyICsKIC4uLnJlZy5oLXRvLWdldC1fX1dPUkRTSVpFLW9uLW11 c2wtbGliYy5wYXRjaCB8ICAgMjYgKwogLi4uL3BhdGNoZXMvMDAwMy1tdXNsLWRpc3BhdGNoLXRv LW11c2wucGF0Y2ggIHwgIDEwMyArCiAuLi4vcGF0Y2hlcy8wMDA0LW11c2wtbm8tbWFsbGluZm8u cGF0Y2ggICAgICAgfCAgIDQwICsKIC4uLi9wYXRjaGVzLzAwMDUtbXVzbC1vZmZfdC5wYXRjaCAg ICAgICAgICAgICB8ICAgMTAgKwogLi4uL3BhdGNoZXMvMDAwNi1tdXNsLXByZWFkLXB3cml0ZS5w YXRjaCAgICAgIHwgICAxOCArCiAuLi4vcGF0Y2hlcy8wMDA3LW11c2wtcmVwbGFjZS1wdmFsbG9j LnBhdGNoICAgfCAgIDE0ICsKIC4uLi9wYXRjaGVzLzAwMDgtbXVzbC1yZXNvbHZlLnBhdGNoICAg ICAgICAgICB8ICAgMjYgKwogLi4uL3BhdGNoZXMvMDAwOS1tdXNsLXNpZ2luZm9fdC5wYXRjaCAg ICAgICAgIHwgICAxOCArCiAuLi4vcGF0Y2hlcy8wMDEwLW11c2wtc3RhY2tzdGFydC5wYXRjaCAg ICAgICAgfCAgIDIwICsKIC4uLi9wYXRjaGVzLzAwMTEtbXVzbC1zYW5kYm94LnBhdGNoICAgICAg ICAgICB8ICAgNzEgKwogLi4uMDAxMi1tdXNsLWNocm9taXVtLWRlZmF1bHQtc3RhY2tzaXplLnBh dGNoIHwgICAxNSArCiAuLi4vMDAxNC1tdXNsLWNyb3NzLW5vLWFzbV9wdHJhY2VfaC5wYXRjaCAg ICAgfCAgIDMwICsKIC4uLi9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAxNS15YXNtLW5scy5wYXRj aCB8ICAgMTMgKwogLi4uL3BhdGNoZXMvMDAxNi1xdC1tdXNsLWV4ZWNpbmZvLnBhdGNoICAgICAg IHwgICA5NCArCiAuLi4vMDAxNy1xdC1tdXNsLXRocmVhZC1zdGFja3NpemUucGF0Y2ggICAgICAg fCAgIDI2ICsKIC4uLi9wYXRjaGVzLzAwMTgtc2FuZGJveC1tZW1iYXJyaWVyLnBhdGNoICAgICB8 ICAgNjAgKwogLi4uL3BhdGNoZXMvMDAxOS1nbi1jcm9zcy1zeXNyb290LnBhdGNoICAgICAgIHwg ICAyNCArCiAuLi4vcGF0Y2hlcy8wMDIwLW1zZ3ZlYy1wdXNoX2JhY2sucGF0Y2ggICAgICAgfCAg IDE0ICsKIC4uLi9wYXRjaGVzLzAwMjEtc2FuZGJveC1zY2hlZF9nZXRwYXJhbS5wYXRjaCB8ICAg MjQgKwogLi4uLzAwMjItY2Fub25pY2FsaXplLWZpbGUtbmFtZS1tdXNsLnBhdGNoICAgIHwgICAx MSArCiAuLi4vcGF0Y2hlcy8wMDkwLWNocm9taXVtLXBwYzY0bGUucGF0Y2ggICAgICAgfCA0MDQ4 ICsrKysrKysrKysrKysrKysrCiBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvdGVtcGxhdGUgICAgICAg ICAgICAgICAgfCAgMTYwICsKIDI1IGZpbGVzIGNoYW5nZWQsIDQ5MzcgaW5zZXJ0aW9ucygrKSwg MSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9m aWxlcy9yZXNvbHZfY29tcGF0LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJl bmdpbmUvcGF0Y2hlcy8wMDAxLVVzZS1fZnBzdGF0ZS1pbnN0ZWFkLW9mLV9saWJjX2Zwc3RhdGUt b24tbGludXgucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUv cGF0Y2hlcy8wMDAyLWluY2x1ZGUtc3lzLXJlZy5oLXRvLWdldC1fX1dPUkRTSVpFLW9uLW11c2wt bGliYy5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRj aGVzLzAwMDMtbXVzbC1kaXNwYXRjaC10by1tdXNsLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwNC1tdXNsLW5vLW1hbGxpbmZvLnBhdGNo CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwNS1t dXNsLW9mZl90LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUtd2ViZW5naW5l L3BhdGNoZXMvMDAwNi1tdXNsLXByZWFkLXB3cml0ZS5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMDctbXVzbC1yZXBsYWNlLXB2YWxsb2Mu cGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8w MDA4LW11c2wtcmVzb2x2ZS5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1LXdl YmVuZ2luZS9wYXRjaGVzLzAwMDktbXVzbC1zaWdpbmZvX3QucGF0Y2gKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDEwLW11c2wtc3RhY2tzdGFydC5w YXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAw MTEtbXVzbC1zYW5kYm94LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUtd2Vi ZW5naW5lL3BhdGNoZXMvMDAxMi1tdXNsLWNocm9taXVtLWRlZmF1bHQtc3RhY2tzaXplLnBhdGNo CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAxNC1t dXNsLWNyb3NzLW5vLWFzbV9wdHJhY2VfaC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMTUteWFzbS1ubHMucGF0Y2gKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDE2LXF0LW11c2wtZXhlY2lu Zm8ucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hl cy8wMDE3LXF0LW11c2wtdGhyZWFkLXN0YWNrc2l6ZS5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMTgtc2FuZGJveC1tZW1iYXJyaWVyLnBh dGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAx OS1nbi1jcm9zcy1zeXNyb290LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUt d2ViZW5naW5lL3BhdGNoZXMvMDAyMC1tc2d2ZWMtcHVzaF9iYWNrLnBhdGNoCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAyMS1zYW5kYm94LXNjaGVk X2dldHBhcmFtLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUtd2ViZW5naW5l L3BhdGNoZXMvMDAyMi1jYW5vbmljYWxpemUtZmlsZS1uYW1lLW11c2wucGF0Y2gKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDkwLWNocm9taXVtLXBw YzY0bGUucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvdGVt cGxhdGUKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUtZGV2ZWwgYi9zcmNwa2dz L3F0NS13ZWJlbmdpbmUtZGV2ZWwKaW5kZXggNzU3OTNlYjY2NjQuLjFiZmRlZjExMDhiIDEyMDAw MAotLS0gYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUtZGV2ZWwKKysrIGIvc3JjcGtncy9xdDUtd2Vi ZW5naW5lLWRldmVsCkBAIC0xICsxIEBACi1xdDUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl CitxdDUtd2ViZW5naW5lClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv c3JjcGtncy9xdDUtd2ViZW5naW5lL2ZpbGVzL3Jlc29sdl9jb21wYXQuaCBiL3NyY3BrZ3MvcXQ1 LXdlYmVuZ2luZS9maWxlcy9yZXNvbHZfY29tcGF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjRmMGU4NTJhMTlkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9x dDUtd2ViZW5naW5lL2ZpbGVzL3Jlc29sdl9jb21wYXQuaApAQCAtMCwwICsxLDI5IEBACisjaWYg IWRlZmluZWQoX19HTElCQ19fKQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogcmVzb2x2X2NvbXBh dC5oCisgKgorICogTWltaWNrIEdMSUJDJ3MgcmVzX25pbml0KCkgYW5kIHJlc19uY2xvc2UoKSBm b3IgbXVzbCBsaWJjCisgKiBOb3RlOiByZXNfaW5pdCgpIGlzIGFjdHVhbGx5IGRlcHJlY2F0ZWQg YWNjb3JkaW5nIHRvCisgKiBodHRwOi8vZG9jcy5vcmFjbGUuY29tL2NkL0UzNjc4NF8wMS9odG1s L0UzNjg3NS9yZXMtbmNsb3NlLTNyZXNvbHYuaHRtbAorICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworI2lu Y2x1ZGUgPHN0cmluZy5oPgorCitzdGF0aWMgaW5saW5lIGludCByZXNfbmluaXQocmVzX3N0YXRl IHN0YXRwKQoreworCWludCByYyA9IHJlc19pbml0KCk7CisJaWYgKHN0YXRwICE9ICZfcmVzKSB7 CisJCW1lbWNweShzdGF0cCwgJl9yZXMsIHNpemVvZigqc3RhdHApKTsKKwl9CisJcmV0dXJuIHJj OworfQorCitzdGF0aWMgaW5saW5lIGludCByZXNfbmNsb3NlKHJlc19zdGF0ZSBzdGF0cCkKK3sK KwlpZiAoIXN0YXRwKQorCQlyZXR1cm4gLTE7CisJaWYgKHN0YXRwICE9ICZfcmVzKSB7CisJCW1l bXNldChzdGF0cCwgMCwgc2l6ZW9mKCpzdGF0cCkpOworCX0KKwlyZXR1cm4gMDsKK30KKyNlbmRp ZgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwMS1Vc2UtX2Zw c3RhdGUtaW5zdGVhZC1vZi1fbGliY19mcHN0YXRlLW9uLWxpbnV4LnBhdGNoIGIvc3JjcGtncy9x dDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwMS1Vc2UtX2Zwc3RhdGUtaW5zdGVhZC1vZi1fbGliY19m cHN0YXRlLW9uLWxpbnV4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi4zZTc4N2QxMzc0ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2lu ZS9wYXRjaGVzLzAwMDEtVXNlLV9mcHN0YXRlLWluc3RlYWQtb2YtX2xpYmNfZnBzdGF0ZS1vbi1s aW51eC5wYXRjaApAQCAtMCwwICsxLDQyIEBACistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgv ZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5oCTIwMTgtMDYtMTUgMDk6NDc6MjAu MDAwMDAwMDAwICswMjAwCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJf Y29tbW9uL3Vjb250ZXh0X3JlYWRlci5oCTIwMTgtMDktMDcgMjI6MjE6MjguNTIxNzYzNzE2ICsw MjAwCitAQCAtNTAsNyArNTAsNyBAQAorICAgLy8gICBpbmZvOiB0aGUgY29sbGVjdGlvbiBvZiBy ZWdpc3RlciBzdHJ1Y3R1cmVzLgorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9f eDg2XzY0KQorICAgc3RhdGljIHZvaWQgRmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0 LCBjb25zdCB1Y29udGV4dF90ICp1YywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHN0cnVjdCBfbGliY19mcHN0YXRlKiBmcCk7CisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBzdHJ1Y3QgX2Zwc3RhdGUqIGZwKTsKKyAjZWxpZiBkZWZpbmVkKF9fYWFyY2g2 NF9fKQorICAgc3RhdGljIHZvaWQgRmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBj b25zdCB1Y29udGV4dF90ICp1YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHN0cnVjdCBmcHNpbWRfY29udGV4dCogZnByZWdzKTsKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9s aW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmNjCTIwMTgtMDYtMTUgMDk6 NDc6MjAuMDAwMDAwMDAwICswMjAwCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93 cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5jYwkyMDE4LTA5LTA3IDIyOjIxOjQ1Ljc2Njc2 MjY4OCArMDIwMAorQEAgLTQ5LDcgKzQ5LDcgQEAKKyB9CisgCisgdm9pZCBVQ29udGV4dFJlYWRl cjo6RmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dF90ICp1 YywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgX2xp YmNfZnBzdGF0ZSogZnApIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBzdHJ1Y3QgX2Zwc3RhdGUqIGZwKSB7CisgICBjb25zdCBncmVnX3QqIHJlZ3MgPSB1Yy0+ dWNfbWNvbnRleHQuZ3JlZ3M7CisgCisgICBvdXQtPmNvbnRleHRfZmxhZ3MgPSBNRF9DT05URVhU X1g4Nl9GVUxMIHwKK0BAIC05Nyw3ICs5Nyw3IEBACisgfQorIAorIHZvaWQgVUNvbnRleHRSZWFk ZXI6OkZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUgKm91dCwgY29uc3QgdWNvbnRleHRfdCAq dWMsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IF9s aWJjX2Zwc3RhdGUqIGZwcmVncykgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHN0cnVjdCBfZnBzdGF0ZSogZnByZWdzKSB7CisgICBjb25zdCBncmVnX3QqIHJl Z3MgPSB1Yy0+dWNfbWNvbnRleHQuZ3JlZ3M7CisgCisgICBvdXQtPmNvbnRleHRfZmxhZ3MgPSBN RF9DT05URVhUX0FNRDY0X0ZVTEw7CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1 bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlci5oCTIwMTgtMDYtMTUgMDk6NDc6MjAuMDAwMDAwMDAw ICswMjAwCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL21pbmlk dW1wX3dyaXRlci5oCTIwMTgtMDktMDcgMjM6MzY6MzIuMDQ5NDk1Mjg1ICswMjAwCitAQCAtNDgs NyArNDgsNyBAQAorICNpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQorIHR5cGVkZWYgc3RydWN0IGZw c2ltZF9jb250ZXh0IGZwc3RhdGVfdDsKKyAjZWxpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYm ICFkZWZpbmVkKF9fbWlwc19fKQorLXR5cGVkZWYgc3RydWN0IF9saWJjX2Zwc3RhdGUgZnBzdGF0 ZV90OworK3R5cGVkZWYgc3RydWN0IF9mcHN0YXRlIGZwc3RhdGVfdDsKKyAjZW5kaWYKKyAKKyAv LyBUaGVzZSBlbnRyaWVzIHN0b3JlIGEgbGlzdCBvZiBtZW1vcnkgcmVnaW9ucyB0aGF0IHRoZSBj bGllbnQgd2FudHMgaW5jbHVkZWQKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9w YXRjaGVzLzAwMDItaW5jbHVkZS1zeXMtcmVnLmgtdG8tZ2V0LV9fV09SRFNJWkUtb24tbXVzbC1s aWJjLnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwMi1pbmNsdWRlLXN5 cy1yZWcuaC10by1nZXQtX19XT1JEU0laRS1vbi1tdXNsLWxpYmMucGF0Y2gKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmRhNDE2MGIyMWJkCi0tLSAvZGV2L251bGwKKysr IGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwMi1pbmNsdWRlLXN5cy1yZWcuaC10 by1nZXQtX19XT1JEU0laRS1vbi1tdXNsLWxpYmMucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorRnJv bSA5MDAxYzU0ZDZiOTc0NDQ5MTc0YThjZWU4ZjNmNWQ3OGE5YmQ2YzllIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQorRnJvbTogRmVsaXggSmFuZGEgPGZlbGl4LmphbmRhQHBvc3Rlby5kZT4KK0Rh dGU6IFN1biwgMSBGZWIgMjAxNSAxNDoyNjo1MiArMDEwMAorU3ViamVjdDogW1BBVENIIDMvNl0g aW5jbHVkZSA8c3lzL3JlZy5oPiB0byBnZXQgX19XT1JEU0laRSBvbiBtdXNsIGxpYmMKKworLS0t CisgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFk L2JyZWFrcGFkL3NyYy9jb21tb24vbGludXgvZWxmX2NvcmVfZHVtcC5oIHwgMSArCisgMSBmaWxl IGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9zcmMvY29tbW9uL2xpbnV4 L2VsZl9jb3JlX2R1bXAuaCBiL3NyYy9jb21tb24vbGludXgvZWxmX2NvcmVfZHVtcC5oCitpbmRl eCBkMDNjN2E4Li4wMmViMzkxIDEwMDY0NAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL2xpbnV4L2Vs Zl9jb3JlX2R1bXAuaAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL2xpbnV4L2VsZl9jb3JlX2R1bXAu aAorQEAgLTM2LDYgKzM2LDkgQEAKKyAjaW5jbHVkZSA8ZWxmLmg+CisgI2luY2x1ZGUgPGxpbmsu aD4KKyAjaW5jbHVkZSA8c3RkZGVmLmg+CisrI2lmbmRlZiBfX0dMSUJDX18KKysjaW5jbHVkZSA8 c3lzL3JlZy5oPgorKyNlbmRpZgorIAorICNpbmNsdWRlICJjb21tb24vbWVtb3J5X3JhbmdlLmgi CisgCistLSAKKzIuMC41CisKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRj aGVzLzAwMDMtbXVzbC1kaXNwYXRjaC10by1tdXNsLnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5n aW5lL3BhdGNoZXMvMDAwMy1tdXNsLWRpc3BhdGNoLXRvLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmRlMzJhM2RhYjk1Ci0tLSAvZGV2L251bGwKKysr IGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwMy1tdXNsLWRpc3BhdGNoLXRvLW11 c2wucGF0Y2gKQEAgLTAsMCArMSwxMDMgQEAKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vYmFzZS9hbGxvY2F0b3IvYWxsb2NhdG9yX3NoaW1fZGVmYXVsdF9kaXNwYXRjaF90 b19nbGliYy5jYworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL2Fs bG9jYXRvci9hbGxvY2F0b3Jfc2hpbV9kZWZhdWx0X2Rpc3BhdGNoX3RvX2dsaWJjLmNjCitAQCAt Niw2ICs2LDcgQEAKKyAKKyAjaW5jbHVkZSA8bWFsbG9jLmg+CisgCisrI2lmIGRlZmluZWQoX19H TElCQ19fKQorIC8vIFRoaXMgdHJhbnNsYXRpb24gdW5pdCBkZWZpbmVzIGEgZGVmYXVsdCBkaXNw YXRjaCBmb3IgdGhlIGFsbG9jYXRvciBzaGltIHdoaWNoCisgLy8gcm91dGVzIGFsbG9jYXRpb25z IHRvIGxpYmMgZnVuY3Rpb25zLgorIC8vIFRoZSBjb2RlIGhlcmUgaXMgc3Ryb25nbHkgaW5zcGly ZWQgZnJvbSB0Y21hbGxvYydzIGxpYmNfb3ZlcnJpZGVfZ2xpYmMuaC4KK0BAIC03MywzICs3NCw5 MiBAQCBjb25zdCBBbGxvY2F0b3JEaXNwYXRjaCBBbGxvY2F0b3JEaXNwYXRjaDo6ZGVmYXVsdF9k aXNwYXRjaCA9IHsKKyAgICAgbnVsbHB0ciwgICAgICAgICAgICAgICAvKiBmcmVlX2RlZmluaXRl X3NpemVfZnVuY3Rpb24gKi8KKyAgICAgbnVsbHB0ciwgICAgICAgICAgICAgICAvKiBuZXh0ICov CisgfTsKKysKKysjZWxzZSAvLyBkZWZpbmVkKF9fR0xJQkNfXykKKysKKysjaW5jbHVkZSA8ZGxm Y24uaD4KKysKKytleHRlcm4gIkMiIHsKKysvLyBEZWNsYXJlIGZ1bmN0aW9uIHBvaW50ZXJzIHRv IHRoZSBtZW1vcnkgZnVuY3Rpb25zCisrdHlwZWRlZiB2b2lkKiAoKnRfbGliY19tYWxsb2MpKHNp emVfdCBzaXplKTsKKyt0eXBlZGVmIHZvaWQqICgqdF9saWJjX2NhbGxvYykoc2l6ZV90IG4sIHNp emVfdCBzaXplKTsKKyt0eXBlZGVmIHZvaWQqICgqdF9saWJjX3JlYWxsb2MpKHZvaWQqIGFkZHJl c3MsIHNpemVfdCBzaXplKTsKKyt0eXBlZGVmIHZvaWQqICgqdF9saWJjX21lbWFsaWduKShzaXpl X3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSk7CisrdHlwZWRlZiB2b2lkICgqdF9saWJjX2ZyZWUp KHZvaWQqIHB0cik7CisrdHlwZWRlZiBzaXplX3QgKCp0X2xpYmNfbWFsbG9jX3VzYWJsZV9zaXpl KSh2b2lkKiBwdHIpOworKworKy8vIFN0YXRpYyBpbnN0YW5jZXMgb2YgcG9pbnRlcnMgdG8gbGli Yy5zbyBkbCBzeW1ib2xzCisrc3RhdGljIHRfbGliY19tYWxsb2MgbGliY19tYWxsb2MgPSBOVUxM OworK3N0YXRpYyB0X2xpYmNfY2FsbG9jIGxpYmNfY2FsbG9jID0gTlVMTDsKKytzdGF0aWMgdF9s aWJjX3JlYWxsb2MgbGliY19yZWFsbG9jID0gTlVMTDsKKytzdGF0aWMgdF9saWJjX21lbWFsaWdu IGxpYmNfbWVtYWxpZ24gPSBOVUxMOworK3N0YXRpYyB0X2xpYmNfZnJlZSBsaWJjX2ZyZWUgPSBO VUxMOworK3N0YXRpYyB0X2xpYmNfbWFsbG9jX3VzYWJsZV9zaXplIGxpYmNfbWFsbG9jX3VzYWJs ZV9zaXplID0gTlVMTDsKKysKKysvLyByZXNvbHZlIHRoZSBzeW1ib2xzIGluIGxpYmMuc28KKyt2 b2lkIG11c2xfbGliY19tZW1vcnlfaW5pdCh2b2lkKQorK3sKKysgIGxpYmNfbWFsbG9jID0gKHRf bGliY19tYWxsb2MpIGRsc3ltKFJUTERfTkVYVCwgIm1hbGxvYyIpOworKyAgbGliY19jYWxsb2Mg PSAodF9saWJjX2NhbGxvYykgZGxzeW0oUlRMRF9ORVhULCAiY2FsbG9jIik7CisrICBsaWJjX3Jl YWxsb2MgPSAodF9saWJjX3JlYWxsb2MpIGRsc3ltKFJUTERfTkVYVCwgInJlYWxsb2MiKTsKKysg IGxpYmNfbWVtYWxpZ24gPSAodF9saWJjX21lbWFsaWduKSBkbHN5bShSVExEX05FWFQsICJtZW1h bGlnbiIpOworKyAgbGliY19mcmVlID0gKHRfbGliY19mcmVlKSBkbHN5bShSVExEX05FWFQsICJm cmVlIik7CisrICBsaWJjX21hbGxvY191c2FibGVfc2l6ZSA9ICh0X2xpYmNfbWFsbG9jX3VzYWJs ZV9zaXplKSBkbHN5bShSVExEX05FWFQsICJtYWxsb2NfdXNhYmxlX3NpemUiKTsKKyt9CisrfSAg Ly8gZXh0ZXJuICJDIgorKworK25hbWVzcGFjZSB7CisrCisrdXNpbmcgYmFzZTo6YWxsb2NhdG9y OjpBbGxvY2F0b3JEaXNwYXRjaDsKKysKKyt2b2lkKiBNdXNsTWFsbG9jKGNvbnN0IEFsbG9jYXRv ckRpc3BhdGNoKiwgc2l6ZV90IHNpemUsIHZvaWQqIGNvbnRleHQpIHsKKysgIGlmICghbGliY19t YWxsb2MpCisrICAgIG11c2xfbGliY19tZW1vcnlfaW5pdCgpOworKyAgcmV0dXJuICgqbGliY19t YWxsb2MpKHNpemUpOworK30KKysKKyt2b2lkKiBNdXNsQ2FsbG9jKGNvbnN0IEFsbG9jYXRvckRp c3BhdGNoKiwgc2l6ZV90IG4sIHNpemVfdCBzaXplLCB2b2lkKiBjb250ZXh0KSB7CisrICBpZiAo IWxpYmNfY2FsbG9jKQorKyAgICBtdXNsX2xpYmNfbWVtb3J5X2luaXQoKTsKKysgIHJldHVybiAo KmxpYmNfY2FsbG9jKShuLCBzaXplKTsKKyt9CisrCisrdm9pZCogTXVzbFJlYWxsb2MoY29uc3Qg QWxsb2NhdG9yRGlzcGF0Y2gqLCB2b2lkKiBhZGRyZXNzLCBzaXplX3Qgc2l6ZSwgdm9pZCogY29u dGV4dCkgeworKyAgaWYgKCFsaWJjX3JlYWxsb2MpCisrICAgIG11c2xfbGliY19tZW1vcnlfaW5p dCgpOworKyAgcmV0dXJuICgqbGliY19yZWFsbG9jKShhZGRyZXNzLCBzaXplKTsKKyt9CisrCisr dm9pZCogTXVzbE1lbWFsaWduKGNvbnN0IEFsbG9jYXRvckRpc3BhdGNoKiwgc2l6ZV90IGFsaWdu bWVudCwgc2l6ZV90IHNpemUsIHZvaWQqIGNvbnRleHQpIHsKKysgIGlmICghbGliY19tZW1hbGln bikKKysgICAgbXVzbF9saWJjX21lbW9yeV9pbml0KCk7CisrICByZXR1cm4gKCpsaWJjX21lbWFs aWduKShhbGlnbm1lbnQsIHNpemUpOworK30KKysKKyt2b2lkIE11c2xGcmVlKGNvbnN0IEFsbG9j YXRvckRpc3BhdGNoKiwgdm9pZCogYWRkcmVzcywgdm9pZCogY29udGV4dCkgeworKyAgaWYgKCFs aWJjX2ZyZWUpCisrICAgIG11c2xfbGliY19tZW1vcnlfaW5pdCgpOworKyAgKCpsaWJjX2ZyZWUp KGFkZHJlc3MpOworK30KKysKKytzaXplX3QgTXVzbEdldFNpemVFc3RpbWF0ZShjb25zdCBBbGxv Y2F0b3JEaXNwYXRjaCosIHZvaWQqIGFkZHJlc3MsIHZvaWQqIGNvbnRleHQpIHsKKysgIC8vIFRP RE8oc2lnZ2ksIHByaW1pYW5vKTogbWFsbG9jX3VzYWJsZV9zaXplIG1heSBuZWVkIHJlZGlyZWN0 aW9uIGluIHRoZQorKyAgLy8gICAgIHByZXNlbmNlIG9mIGludGVycG9zaW5nIHNoaW1zIHRoYXQg ZGl2ZXJ0IGFsbG9jYXRpb25zLgorKyAgaWYgKCFsaWJjX21hbGxvY191c2FibGVfc2l6ZSkKKysg ICAgbXVzbF9saWJjX21lbW9yeV9pbml0KCk7CisrICByZXR1cm4gKCpsaWJjX21hbGxvY191c2Fi bGVfc2l6ZSkoYWRkcmVzcyk7CisrfQorKworK30gIC8vIG5hbWVzcGFjZQorKworK2NvbnN0IEFs bG9jYXRvckRpc3BhdGNoIEFsbG9jYXRvckRpc3BhdGNoOjpkZWZhdWx0X2Rpc3BhdGNoID0gewor KyAgICAmTXVzbE1hbGxvYywgICAgICAgICAgIC8qIGFsbG9jX2Z1bmN0aW9uICovCisrICAgICZN dXNsQ2FsbG9jLCAgICAgICAgICAgLyogYWxsb2NfemVyb19pbml0aWFsaXplZF9mdW5jdGlvbiAq LworKyAgICAmTXVzbE1lbWFsaWduLCAgICAgICAgIC8qIGFsbG9jX2FsaWduZWRfZnVuY3Rpb24g Ki8KKysgICAgJk11c2xSZWFsbG9jLCAgICAgICAgICAvKiByZWFsbG9jX2Z1bmN0aW9uICovCisr ICAgICZNdXNsRnJlZSwgICAgICAgICAgICAgLyogZnJlZV9mdW5jdGlvbiAqLworKyAgICAmTXVz bEdldFNpemVFc3RpbWF0ZSwgIC8qIGdldF9zaXplX2VzdGltYXRlX2Z1bmN0aW9uICovCisrICAg IG51bGxwdHIsICAgICAgICAgICAgICAgLyogbmV4dCAqLworK307CisrCisrI2VuZGlmCmRpZmYg LS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDA0LW11c2wtbm8tbWFsbGlu Zm8ucGF0Y2ggYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDA0LW11c2wtbm8tbWFs bGluZm8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmMzMzJi OTJiNjlkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMv MDAwNC1tdXNsLW5vLW1hbGxpbmZvLnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKKy0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS90cmFjZV9ldmVudC9tYWxsb2NfZHVtcF9w cm92aWRlci5jYwkyMDE3LTExLTI4IDE0OjA2OjUzLjAwMDAwMDAwMCArMDEwMAorKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL3RyYWNlX2V2ZW50L21hbGxvY19kdW1w X3Byb3ZpZGVyLmNjCTIwMTgtMDEtMjcgMjA6MTM6MjYuOTYwOTMyODA1ICswMTAwCitAQCAtMjQz LDcgKzI0Myw3IEBACisgICBhbGxvY2F0ZWRfb2JqZWN0c19jb3VudCA9IG1haW5faGVhcF9pbmZv LmJsb2NrX2NvdW50OworICNlbGlmIGRlZmluZWQoT1NfRlVDSFNJQSkKKyAvLyBUT0RPKGZ1Y2hz aWEpOiBQb3J0LCBzZWUgaHR0cHM6Ly9jcmJ1Zy5jb20vNzA2NTkyLgorLSNlbHNlCisrI2VsaWYg ZGVmaW5lZChfX0dMSUJDX18pCisgICBzdHJ1Y3QgbWFsbGluZm8gaW5mbyA9IG1hbGxpbmZvKCk7 CisgICBEQ0hFQ0tfR0UoaW5mby5hcmVuYSArIGluZm8uaGJsa2hkLCBpbmZvLnVvcmRibGtzKTsK KyAKK0BAIC0yNTUsNiArMjU1LDggQEAKKyAKKyAgIC8vIFRvdGFsIGFsbG9jYXRlZCBzcGFjZSBp cyBnaXZlbiBieSB8dW9yZGJsa3N8LgorICAgYWxsb2NhdGVkX29iamVjdHNfc2l6ZSA9IGluZm8u dW9yZGJsa3M7CisrI2Vsc2UKKysvLyBtdXNsIGxpYmMgZG9lcyBub3Qgc3VwcG9ydCBtYWxsaW5m bygpCisgI2VuZGlmCisgCisgICBNZW1vcnlBbGxvY2F0b3JEdW1wKiBvdXRlcl9kdW1wID0gcG1k LT5DcmVhdGVBbGxvY2F0b3JEdW1wKCJtYWxsb2MiKTsKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vYmFzZS9wcm9jZXNzL3Byb2Nlc3NfbWV0cmljc19wb3NpeC5jYwkyMDE3 LTExLTI4IDE0OjA2OjUzLjAwMDAwMDAwMCArMDEwMAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS9iYXNlL3Byb2Nlc3MvcHJvY2Vzc19tZXRyaWNzX3Bvc2l4LmNjCTIwMTgt MDEtMjcgMjA6NDg6MTEuNTcxMDQwMzQ4ICswMTAwCitAQCAtMTAwLDE0ICsxMDAsMTQgQEAKKyAg IG1hbGxvY19zdGF0aXN0aWNzX3Qgc3RhdHMgPSB7MH07CisgICBtYWxsb2Nfem9uZV9zdGF0aXN0 aWNzKG51bGxwdHIsICZzdGF0cyk7CisgICByZXR1cm4gc3RhdHMuc2l6ZV9pbl91c2U7CistI2Vs aWYgZGVmaW5lZChPU19MSU5VWCkgfHwgZGVmaW5lZChPU19BTkRST0lEKQorKyNlbGlmIChkZWZp bmVkKE9TX0xJTlVYKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykpIHx8IGRlZmluZWQoT1NfQU5EUk9J RCkKKyAgIHN0cnVjdCBtYWxsaW5mbyBtaW5mbyA9IG1hbGxpbmZvKCk7CisgI2lmIGRlZmluZWQo VVNFX1RDTUFMTE9DKQorICAgcmV0dXJuIG1pbmZvLnVvcmRibGtzOworICNlbHNlCisgICByZXR1 cm4gbWluZm8uaGJsa2hkICsgbWluZm8uYXJlbmE7CisgI2VuZGlmCistI2VsaWYgZGVmaW5lZChP U19GVUNIU0lBKQorKyNlbHNlIC8vaWYgZGVmaW5lZChPU19GVUNIU0lBKSAvLyBhbHNvIG11c2wg ZG9lc24ndCBkbyB0aGlzLgorICAgLy8gVE9ETyhmdWNoc2lhKTogTm90IGN1cnJlbnRseSBleHBv c2VkLiBodHRwczovL2NyYnVnLmNvbS83MzUwODcuCisgICByZXR1cm4gMDsKKyAjZW5kaWYKKwpk aWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwNS1tdXNsLW9mZl90 LnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwNS1tdXNsLW9mZl90LnBh dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41MmRiM2I5ZWJmNAot LS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMDUtbXVz bC1vZmZfdC5wYXRjaApAQCAtMCwwICsxLDEwIEBACistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L290cy9pbmNsdWRlL29wZW50eXBlLXNhbml0aXNlci5o CTIwMTYtMDUtMjYgMTQ6NTg6NTQuMDAwMDAwMDAwICswMjAwCisrKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L290cy9pbmNsdWRlL29wZW50eXBlLXNhbml0 aXNlci5oCTIwMTYtMTAtMDEgMTQ6MzE6MzAuODg1MDAwMDAwICswMjAwCitAQCAtMjEsNiArMjEs NyBAQAorICNkZWZpbmUgaHRvbnMoeCkgX2J5dGVzd2FwX3VzaG9ydCAoeCkKKyAjZWxzZQorICNp bmNsdWRlIDxhcnBhL2luZXQuaD4KKysjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2luY2x1ZGUg PHN0ZGludC5oPgorICNlbmRpZgorIApkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5l L3BhdGNoZXMvMDAwNi1tdXNsLXByZWFkLXB3cml0ZS5wYXRjaCBiL3NyY3BrZ3MvcXQ1LXdlYmVu Z2luZS9wYXRjaGVzLzAwMDYtbXVzbC1wcmVhZC1wd3JpdGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjAwMDE3YmJhMDE3Ci0tLSAvZGV2L251bGwKKysrIGIv c3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwNi1tdXNsLXByZWFkLXB3cml0ZS5wYXRj aApAQCAtMCwwICsxLDE4IEBACistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2xzcy9saW51eF9zeXNjYWxsX3N1cHBvcnQuaAkyMDE4LTA5LTA3IDIxOjI1 OjI2LjYzOTk2NDEwMCArMDIwMAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9sc3MvbGludXhfc3lzY2FsbF9zdXBwb3J0LmgJMjAxOC0wOS0wNyAyMToy NToxMS42MTE5NjQ5OTUgKzAyMDAKK0BAIC0xNzk0LDYgKzE3OTQsMTUgQEAKKyAvKiBFbmQgb2Yg czM5MC9zMzkweCBkZWZpbml0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICovCisgI2VuZGlmCisgCisrI2lmbmRlZiBfX0dMSUJDX18KKysgIC8qIEZvciBN dXNsIGxpYmMgcHJlYWQvcHJlYWQgaXMgdGhlIHNhbWUgYXMgcHJlYWQ2NC9wd3JpdGU2NCAqLwor KyNpZm5kZWYgX19OUl9wcmVhZAorKyNkZWZpbmUgX19OUl9wcmVhZCAgICAgICAgICAgICAgX19O Ul9wcmVhZDY0CisrI2VuZGlmCisrI2lmbmRlZiBfX05SX3B3cml0ZQorKyNkZWZpbmUgX19OUl9w d3JpdGUgICAgICAgICAgICAgX19OUl9wd3JpdGU2NAorKyNlbmRpZgorKyNlbmRpZiAvKiBpZm5k ZWYgX19HTElCQ19fICovCisgCisgLyogQWZ0ZXIgZm9ya2luZywgd2UgbXVzdCBtYWtlIHN1cmUg dG8gb25seSBjYWxsIHN5c3RlbSBjYWxscy4gICAgICAgICAgICAgICAqLworICNpZiBkZWZpbmVk KF9fQk9VTkRFRF9QT0lOVEVSU19fKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5l L3BhdGNoZXMvMDAwNy1tdXNsLXJlcGxhY2UtcHZhbGxvYy5wYXRjaCBiL3NyY3BrZ3MvcXQ1LXdl YmVuZ2luZS9wYXRjaGVzLzAwMDctbXVzbC1yZXBsYWNlLXB2YWxsb2MucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmQ1Y2FmMzgzNmQ3Ci0tLSAvZGV2L251bGwK KysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwNy1tdXNsLXJlcGxhY2UtcHZh bGxvYy5wYXRjaApAQCAtMCwwICsxLDE0IEBACistLS0gcXR3ZWJlbmdpbmUvc3JjL2NvcmUvYXBp L3F0YnVnLTYxNTIxLmNwcAkyMDE3LTExLTI5IDA5OjQyOjI5LjAwMDAwMDAwMCArMDEwMAorKysr IHF0d2ViZW5naW5lL3NyYy9jb3JlL2FwaS9xdGJ1Zy02MTUyMS5jcHAJMjAxOC0wMS0yOCAwNjo0 OToyOS40NTQxNzU3MjUgKzAxMDAKK0BAIC0xMTEsNyArMTExLDExIEBACisgfQorIAorIFNISU1f SElEREVOIHZvaWQqIFNoaW1QdmFsbG9jKHNpemVfdCBzaXplKSB7CisrI2lmIGRlZmluZWQoX19H TElCQ19fKQorICAgICByZXR1cm4gcHZhbGxvYyhzaXplKTsKKysjZWxzZQorKyAgICByZXR1cm4g dmFsbG9jKChzaXplKzQwOTUpJn40MDk1KTsKKysjZW5kaWYKKyB9CisgCisgU0hJTV9ISURERU4g aW50IFNoaW1Qb3NpeE1lbWFsaWduKHZvaWQqKiByLCBzaXplX3QgYSwgc2l6ZV90IHMpIHsKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMDgtbXVzbC1yZXNvbHZl LnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwOC1tdXNsLXJlc29sdmUu cGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmVkZmNlYjc5ZjMw Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwOC1t dXNsLXJlc29sdmUucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9uZXQvZG5zL2Ruc19yZWxvYWRlci5jYwkyMDE2LTExLTA3IDE1OjQ2 OjE4LjAwMDAwMDAwMCArMDEwMAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS9uZXQvZG5zL2Ruc19yZWxvYWRlci5jYwkyMDE2LTEyLTIwIDAzOjMzOjExLjc0OTA1OTY1NiAr MDEwMAorQEAgLTksNiArOSwxMCBAQAorIAorICNpbmNsdWRlIDxyZXNvbHYuaD4KKyAKKysjaWYg IWRlZmluZWQoX19HTElCQ19fKQorKyNpbmNsdWRlICJyZXNvbHZfY29tcGF0LmgiCisrI2VuZGlm CisrCisgI2luY2x1ZGUgImJhc2UvbGF6eV9pbnN0YW5jZS5oIgorICNpbmNsdWRlICJiYXNlL2xv Z2dpbmcuaCIKKyAjaW5jbHVkZSAiYmFzZS9tYWNyb3MuaCIKKy0tLSBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vbmV0L2Rucy9kbnNfY29uZmlnX3NlcnZpY2VfcG9zaXguY2MJMjAx Ni0xMS0wNyAxNTo0NjoxOC4wMDAwMDAwMDAgKzAxMDAKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vbmV0L2Rucy9kbnNfY29uZmlnX3NlcnZpY2VfcG9zaXguY2MJMjAxNi0x Mi0yMCAwMzo0MDowNy42NzE5NTMwOTggKzAxMDAKK0BAIC02LDYgKzYsMTAgQEAKKyAKKyAjaW5j bHVkZSA8c3RyaW5nPgorIAorKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCisrI2luY2x1ZGUgInJl c29sdl9jb21wYXQuaCIKKysjZW5kaWYKKysKKyAjaW5jbHVkZSAiYmFzZS9iaW5kLmgiCisgI2lu Y2x1ZGUgImJhc2UvZmlsZXMvZmlsZS5oIgorICNpbmNsdWRlICJiYXNlL2ZpbGVzL2ZpbGVfcGF0 aC5oIgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwOS1tdXNs LXNpZ2luZm9fdC5wYXRjaCBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMDktbXVz bC1zaWdpbmZvX3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LmZlNzYwYmUxNjY2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3Bh dGNoZXMvMDAwOS1tdXNsLXNpZ2luZm9fdC5wYXRjaApAQCAtMCwwICsxLDE4IEBACitUaGVyZSdz IGEgc3VidGxlIGRpZmZlcmVuY2UgaW4gdGhlIGludGVybmFsIG5hbWUgb2Ygc2lnaW5mb190IGZp ZWxkcworYmV0d2VlbiBnbGliYyBhbmQgbXVzbC4gVGhlIHN0cnVjdHVyZSBpdHNlbGYgaXMgZXF1 aXZhbGVudCwgc28gaXQKK3Nob3VsZCBzdWZmaWNlIHRvIGFkZCBhIG1hY3JvIHRvIHJlbmFtZSB0 aGUgZmllbGQuCisKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJv eC9saW51eC9zZWNjb21wLWJwZi90cmFwLmNjCTIwMTUtMDItMTcgMDU6NTc6NDMuMDAwMDAwMDAw ICswMTAwCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGlu dXgvc2VjY29tcC1icGYvdHJhcC5jYwkyMDE1LTA2LTAzIDA4OjIwOjI1LjAzMjcxNjQyNyArMDIw MAorQEAgLTIyLDYgKzIyLDExIEBACisgI2luY2x1ZGUgInNhbmRib3gvbGludXgvc2VydmljZXMv YW5kcm9pZF91Y29udGV4dC5oIgorICNlbmRpZgorCisrLy8gbXVzbCBsaWJjIGRlZmluZXMgc2ln aW5mb190IF9fc2lfZmllbGRzIGluc3RlYWQgb2YgX3NpZmllbGRzCisrI2lmICFkZWZpbmVkKF9f R0xJQkNfXykKKysjZGVmaW5lIF9zaWZpZWxkcyBfX3NpX2ZpZWxkcworKyNlbmRpZgorKworIG5h bWVzcGFjZSB7CisKKyBjb25zdCBpbnQga0NhcGFjaXR5SW5jcmVtZW50ID0gMjA7CmRpZmYgLS1n aXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDEwLW11c2wtc3RhY2tzdGFydC5w YXRjaCBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMTAtbXVzbC1zdGFja3N0YXJ0 LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41NzEzNmJjMmJj ZAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMTAt bXVzbC1zdGFja3N0YXJ0LnBhdGNoCkBAIC0wLDAgKzEsMjAgQEAKKy0tLSBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0v d3RmL3N0YWNrX3V0aWwuY2MJMjAxOC0wMS0yNyAyMzowODo0My41ODY0NzUzNDkgKzAxMDAKKysr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVu ZGVyZXIvcGxhdGZvcm0vd3RmL3N0YWNrX3V0aWwuY2MJMjAxOC0wMS0yNyAyMzoxODoyMi4yNzQ1 MDUyMDMgKzAxMDAKK0BAIC0yOCw3ICsyOCw3IEBACisgLy8gRklYTUU6IE9uIE1hYyBPU1ggYW5k IExpbnV4LCB0aGlzIG1ldGhvZCBjYW5ub3QgZXN0aW1hdGUgc3RhY2sgc2l6ZQorIC8vIGNvcnJl Y3RseSBmb3IgdGhlIG1haW4gdGhyZWFkLgorIAorLSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgfHwg ZGVmaW5lZChPU19BTkRST0lEKSB8fCBkZWZpbmVkKE9TX0ZSRUVCU0QpIHx8IFwKKysjaWYgZGVm aW5lZChPU19MSU5VWCkgfHwgZGVmaW5lZChPU19BTkRST0lEKSB8fCBkZWZpbmVkKE9TX0ZSRUVC U0QpIHx8IFwKKyAgICAgZGVmaW5lZChPU19GVUNIU0lBKQorICAgLy8gcHRocmVhZF9nZXRhdHRy X25wKCkgY2FuIGZhaWwgaWYgdGhlIHRocmVhZCBpcyBub3QgaW52b2tlZCBieQorICAgLy8gcHRo cmVhZF9jcmVhdGUoKSAoZS5nLiwgdGhlIG1haW4gdGhyZWFkIG9mIHdlYmtpdF91bml0X3Rlc3Rz KS4KK0BAIC05Niw3ICs5Niw3IEBACisgfQorIAorIHZvaWQqIEdldFN0YWNrU3RhcnQoKSB7Cist I2lmIGRlZmluZWQoX19HTElCQ19fKSB8fCBkZWZpbmVkKE9TX0FORFJPSUQpIHx8IGRlZmluZWQo T1NfRlJFRUJTRCkgfHwgXAorKyNpZiBkZWZpbmVkKE9TX0xJTlVYKSB8fCBkZWZpbmVkKE9TX0FO RFJPSUQpIHx8IGRlZmluZWQoT1NfRlJFRUJTRCkgfHwgXAorICAgICBkZWZpbmVkKE9TX0ZVQ0hT SUEpCisgICBwdGhyZWFkX2F0dHJfdCBhdHRyOworICAgaW50IGVycm9yOwpkaWZmIC0tZ2l0IGEv c3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAxMS1tdXNsLXNhbmRib3gucGF0Y2ggYi9z cmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDExLW11c2wtc2FuZGJveC5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDNkZTFlNDExODMKLS0tIC9kZXYv bnVsbAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDExLW11c2wtc2FuZGJv eC5wYXRjaApAQCAtMCwwICsxLDcxIEBACistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3BhcmFtZXRl cnNfcmVzdHJpY3Rpb25zLmNjCTIwMTgtMDYtMTUgMDk6NDc6MjAuMDAwMDAwMDAwICswMjAwCisr KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29t cC1icGYtaGVscGVycy9zeXNjYWxsX3BhcmFtZXRlcnNfcmVzdHJpY3Rpb25zLmNjCTIwMTgtMDkt MTMgMTk6NTM6NTMuNDUzNzgwMjUzICswMjAwCitAQCAtMTI5LDcgKzEyOSw3IEBACisgLy8gQ0xP TkVfVk0sIG5vciBDTE9ORV9USFJFQUQsIHdoaWNoIGluY2x1ZGVzIGFsbCBmb3JrKCkgaW1wbGVt ZW50YXRpb25zLgorIFJlc3VsdEV4cHIgUmVzdHJpY3RDbG9uZVRvVGhyZWFkc0FuZEVQRVJNRm9y aygpIHsKKyAgIGNvbnN0IEFyZzx1bnNpZ25lZCBsb25nPiBmbGFncygwKTsKKy0KKysjaWYgZGVm aW5lZChfX0dMSUJDX18pCisgICAvLyBUT0RPKG1kZW1wc2t5KTogRXh0ZW5kIERTTCB0byBzdXBw b3J0IChmbGFncyAmIH5tYXNrMSkgPT0gbWFzazIuCisgICBjb25zdCB1aW50NjRfdCBrQW5kcm9p ZENsb25lTWFzayA9IENMT05FX1ZNIHwgQ0xPTkVfRlMgfCBDTE9ORV9GSUxFUyB8CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENMT05FX1NJR0hBTkQgfCBDTE9ORV9USFJF QUQgfAorQEAgLTE0OCw2ICsxNDgsMTcgQEAKKyAgIHJldHVybiBJZihJc0FuZHJvaWQoKSA/IGFu ZHJvaWRfdGVzdCA6IGdsaWJjX3Rlc3QsIEFsbG93KCkpCisgICAgICAgLkVsc2VJZigoZmxhZ3Mg JiAoQ0xPTkVfVk0gfCBDTE9ORV9USFJFQUQpKSA9PSAwLCBFcnJvcihFUEVSTSkpCisgICAgICAg LkVsc2UoQ3Jhc2hTSUdTWVNDbG9uZSgpKTsKKysjZWxzZQorKyAgY29uc3QgaW50IHJlcXVpcmVk ID0gQ0xPTkVfVk0gfCBDTE9ORV9GUyB8IENMT05FX0ZJTEVTIHwgQ0xPTkVfU0lHSEFORCB8Cisr ICAgICAgICAgICAgICAgICAgICAgICBDTE9ORV9USFJFQUQgfCBDTE9ORV9TWVNWU0VNOworKyAg Y29uc3QgaW50IHNhZmUgPSBDTE9ORV9TRVRUTFMgfCBDTE9ORV9QQVJFTlRfU0VUVElEIHwgQ0xP TkVfQ0hJTERfQ0xFQVJUSUQgfAorKyAgICAgICAgICAgICAgICAgICBDTE9ORV9ERVRBQ0hFRDsK KysgIGNvbnN0IEJvb2xFeHByIHRocmVhZF9jbG9uZV9vayA9IChmbGFncyZ+c2FmZSk9PXJlcXVp cmVkOworKworKyAgcmV0dXJuIElmKHRocmVhZF9jbG9uZV9vaywgQWxsb3coKSkKKysgICAgICAu RWxzZUlmKChmbGFncyAmIChDTE9ORV9WTSB8IENMT05FX1RIUkVBRCkpID09IDAsIEVycm9yKEVQ RVJNKSkKKysgICAgICAuRWxzZShDcmFzaFNJR1NZU0Nsb25lKCkpOworKyNlbmRpZgorIH0KKyAK KyBSZXN1bHRFeHByIFJlc3RyaWN0UHJjdGwoKSB7CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3Nl dHMuY2MJMjAxOC0wNi0xNSAwOTo0NzoyMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJz L3N5c2NhbGxfc2V0cy5jYwkyMDE4LTA5LTEzIDE5OjU2OjMxLjc3OTc3Mzk0MCArMDIwMAorQEAg LTM3NSw2ICszNzUsOSBAQAorICNpZiBkZWZpbmVkKF9faTM4Nl9fKQorICAgICBjYXNlIF9fTlJf d2FpdHBpZDoKKyAjZW5kaWYKKysjaWYgIWRlZmluZWQoX19HTElCQ19fKQorKyAgICBjYXNlIF9f TlJfc2V0X3RpZF9hZGRyZXNzOgorKyNlbmRpZgorICAgICAgIHJldHVybiB0cnVlOworICAgICBj YXNlIF9fTlJfY2xvbmU6ICAvLyBTaG91bGQgYmUgcGFyYW1ldGVyLXJlc3RyaWN0ZWQuCisgICAg IGNhc2UgX19OUl9zZXRuczogIC8vIFByaXZpbGVnZWQuCitAQCAtMzg3LDcgKzM5MCw5IEBACisg I2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChf X21pcHNfXykKKyAgICAgY2FzZSBfX05SX3NldF90aHJlYWRfYXJlYToKKyAjZW5kaWYKKysjaWYg ZGVmaW5lZChfX0dMSUJDX18pCisgICAgIGNhc2UgX19OUl9zZXRfdGlkX2FkZHJlc3M6CisrI2Vu ZGlmCisgICAgIGNhc2UgX19OUl91bnNoYXJlOgorICNpZiAhZGVmaW5lZChfX21pcHNfXykgJiYg IWRlZmluZWQoX19hYXJjaDY0X18pCisgICAgIGNhc2UgX19OUl92Zm9yazoKK0BAIC00OTYsNiAr NTAxLDkgQEAKKyAgICAgY2FzZSBfX05SX21sb2NrOgorICAgICBjYXNlIF9fTlJfbXVubG9jazoK KyAgICAgY2FzZSBfX05SX211bm1hcDoKKysjaWYgIWRlZmluZWQoX19HTElCQ19fKQorKyAgICBj YXNlIF9fTlJfbXJlbWFwOgorKyNlbmRpZgorICAgICAgIHJldHVybiB0cnVlOworICAgICBjYXNl IF9fTlJfbWFkdmlzZToKKyAgICAgY2FzZSBfX05SX21pbmNvcmU6CitAQCAtNTExLDcgKzUxOSw5 IEBACisgICAgIGNhc2UgX19OUl9tb2RpZnlfbGR0OgorICNlbmRpZgorICAgICBjYXNlIF9fTlJf bXByb3RlY3Q6CisrI2lmIGRlZmluZWQoX19HTElCQ19fKQorICAgICBjYXNlIF9fTlJfbXJlbWFw OgorKyNlbmRpZgorICAgICBjYXNlIF9fTlJfbXN5bmM6CisgICAgIGNhc2UgX19OUl9tdW5sb2Nr YWxsOgorICAgICBjYXNlIF9fTlJfcmVhZGFoZWFkOgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUt d2ViZW5naW5lL3BhdGNoZXMvMDAxMi1tdXNsLWNocm9taXVtLWRlZmF1bHQtc3RhY2tzaXplLnBh dGNoIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAxMi1tdXNsLWNocm9taXVtLWRl ZmF1bHQtc3RhY2tzaXplLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi43YmY1YTIyZmJhNwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2lu ZS9wYXRjaGVzLzAwMTItbXVzbC1jaHJvbWl1bS1kZWZhdWx0LXN0YWNrc2l6ZS5wYXRjaApAQCAt MCwwICsxLDE1IEBACistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2Uv dGhyZWFkaW5nL3BsYXRmb3JtX3RocmVhZF9saW51eC5jYy5vcmlnCTIwMTgtMDktMTkgMTg6MDU6 MTUuNTIzOTIzNzAzICswMjAwCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L2Jhc2UvdGhyZWFkaW5nL3BsYXRmb3JtX3RocmVhZF9saW51eC5jYwkyMDE4LTA5LTE5IDE4OjA4 OjA1LjE1MDkzMjQ1NCArMDIwMAorQEAgLTE3Myw3ICsxNzMsMTIgQEAKKyAKKyBzaXplX3QgR2V0 RGVmYXVsdFRocmVhZFN0YWNrU2l6ZShjb25zdCBwdGhyZWFkX2F0dHJfdCYgYXR0cmlidXRlcykg eworICNpZiAhZGVmaW5lZChUSFJFQURfU0FOSVRJWkVSKQorKyNpZiBkZWZpbmVkKF9fR0xJQkNf XykKKyAgIHJldHVybiAwOworKyNlbHNlIC8vIGRlZmluZWQoX19HTElCQ19fKQorKyAgLy8gRm9y IE11c2wgbGliYyB0cnkgd2l0aCBhIGRlZmF1bHQgc3RhY2sgc2l6ZSBvZiAyIE1pQgorKyAgcmV0 dXJuIDIgKiAxMDI0ICogMTAyNDsKKysjZW5kaWYgLy8gIWRlZmluZWQoX19HTElCQ19fKQorICNl bHNlCisgICAvLyBUaHJlYWRTYW5pdGl6ZXIgYmxvYXRzIHRoZSBzdGFjayBoZWF2aWx5LiBFdmlk ZW5jZSBoYXMgYmVlbiB0aGF0IHRoZQorICAgLy8gZGVmYXVsdCBzdGFjayBzaXplIGlzbid0IGVu b3VnaCBmb3Igc29tZSBicm93c2VyIHRlc3RzLgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2Vi ZW5naW5lL3BhdGNoZXMvMDAxNC1tdXNsLWNyb3NzLW5vLWFzbV9wdHJhY2VfaC5wYXRjaCBiL3Ny Y3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMTQtbXVzbC1jcm9zcy1uby1hc21fcHRyYWNl X2gucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjE0MDc0MmY3 MmMyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAx NC1tdXNsLWNyb3NzLW5vLWFzbV9wdHJhY2VfaC5wYXRjaApAQCAtMCwwICsxLDMwIEBACistLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2Jy ZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X3B0cmFjZV9kdW1w ZXIuY2MJMjAxOC0wOC0yNyAxMDoyMTozMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3Jj L2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfcHRyYWNlX2R1bXBlci5jYwkyMDE4 LTExLTIyIDAwOjQxOjU4LjUyMjQ3NzU1OSArMDEwMAorQEAgLTM4LDcgKzM4LDEyIEBACisgCisg I2luY2x1ZGUgImNsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfcHRyYWNlX2R1bXBl ci5oIgorIAorKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKKyAjaW5jbHVkZSA8YXNtL3B0cmFjZS5o PgorKyNlbHNlCisrLyogRm9yIGFybSotbXVzbCB0aGlzIGRlZmluaXRpb24gaXMgbWlzc2luZyAq LworKyNkZWZpbmUgQVJNX3NwIHVyZWdzWzEzXQorKyNlbmRpZgorICNpbmNsdWRlIDxhc3NlcnQu aD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKy0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQv c3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfY29yZV9kdW1wZXIuY2MJMjAx OC0wOC0yNyAxMDoyMTozMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9s aW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfY29yZV9kdW1wZXIuY2MJMjAxOC0xMS0yMiAwMDo0 OTozOS41MzM0OTIyNDUgKzAxMDAKK0BAIC0zMiw3ICszMiwxMiBAQAorIAorICNpbmNsdWRlICJj bGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2NvcmVfZHVtcGVyLmgiCisgCisrI2lm IGRlZmluZWQoX19HTElCQ19fKQorICNpbmNsdWRlIDxhc20vcHRyYWNlLmg+CisrI2Vsc2UKKysv KiBGb3IgYXJtKi1tdXNsIHRoaXMgZGVmaW5pdGlvbiBpcyBtaXNzaW5nICovCisrI2RlZmluZSBB Uk1fc3AgdXJlZ3NbMTNdCisrI2VuZGlmCisgI2luY2x1ZGUgPGFzc2VydC5oPgorICNpbmNsdWRl IDxlbGYuaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdl YmVuZ2luZS9wYXRjaGVzLzAwMTUteWFzbS1ubHMucGF0Y2ggYi9zcmNwa2dzL3F0NS13ZWJlbmdp bmUvcGF0Y2hlcy8wMDE1LXlhc20tbmxzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi4yMmFjMDQyMDc2NAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1 LXdlYmVuZ2luZS9wYXRjaGVzLzAwMTUteWFzbS1ubHMucGF0Y2gKQEAgLTAsMCArMSwxMyBAQAor ZGlmZiAtLWdpdCBzcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkveWFzbS9zb3VyY2Uv Y29uZmlnL2xpbnV4L2NvbmZpZy5oIHNyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS95 YXNtL3NvdXJjZS9jb25maWcvbGludXgvY29uZmlnLmgKK2luZGV4IDllMzY1MzkuLmY1ODgwODMg MTAwNjQ0CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy90aGlyZF9wYXJ0 eS95YXNtL3NvdXJjZS9jb25maWcvbGludXgvY29uZmlnLmgKKy0tLSBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vL3RoaXJkX3BhcnR5L3lhc20vc291cmNlL2NvbmZpZy9saW51eC9j b25maWcuaAorQEAgLTUsNyArNSw3IEBACisgI2RlZmluZSBDUFBfUFJPRyAiZ2NjIC1FIgorIAor IC8qICovCistI2RlZmluZSBFTkFCTEVfTkxTIDEKKysvKiAjdW5kZWYgRU5BQkxFX05MUyAxICov CisgCisgLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBhYm9ydCcgZnVuY3Rpb24uICov CisgI2RlZmluZSBIQVZFX0FCT1JUIDEKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2lu ZS9wYXRjaGVzLzAwMTYtcXQtbXVzbC1leGVjaW5mby5wYXRjaCBiL3NyY3BrZ3MvcXQ1LXdlYmVu Z2luZS9wYXRjaGVzLzAwMTYtcXQtbXVzbC1leGVjaW5mby5wYXRjaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzFjZGI1MzcyMTIKLS0tIC9kZXYvbnVsbAorKysgYi9z cmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDE2LXF0LW11c2wtZXhlY2luZm8ucGF0Y2gK QEAgLTAsMCArMSw5NCBAQAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8v YmFzZS9kZWJ1Zy9zdGFja190cmFjZV9wb3NpeC5jYy5vcmlnCTIwMTktMDQtMDkgMDk6MzE6MTYu MDAwMDAwMDAwICswMjAwCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy9i YXNlL2RlYnVnL3N0YWNrX3RyYWNlX3Bvc2l4LmNjCTIwMTktMDUtMDYgMjM6MTY6MTMuMjQ1NTAy NDY3ICswMjAwCitAQCAtMjcsNyArMjcsNyBAQAorICNpZiAhZGVmaW5lZChVU0VfU1lNQk9MSVpF KQorICNpbmNsdWRlIDxjeHhhYmkuaD4KKyAjZW5kaWYKKy0jaWYgIWRlZmluZWQoX19VQ0xJQkNf XykgJiYgIWRlZmluZWQoX0FJWCkKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVk KF9BSVgpCisgI2luY2x1ZGUgPGV4ZWNpbmZvLmg+CisgI2VuZGlmCisgCitAQCAtODYsNyArODYs NyBAQAorICAgLy8gTm90ZTogY29kZSBpbiB0aGlzIGZ1bmN0aW9uIGlzIE5PVCBhc3luYy1zaWdu YWwgc2FmZSAoc3RkOjpzdHJpbmcgdXNlcworICAgLy8gbWFsbG9jIGludGVybmFsbHkpLgorIAor LSNpZiAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQorKyNpZiBkZWZpbmVk KF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKKyAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUg c2VhcmNoX2Zyb20gPSAwOworICAgd2hpbGUgKHNlYXJjaF9mcm9tIDwgdGV4dC0+c2l6ZSgpKSB7 CisgICAgIC8vIExvb2sgZm9yIHRoZSBzdGFydCBvZiBhIG1hbmdsZWQgc3ltYm9sLCBmcm9tIHNl YXJjaF9mcm9tLgorQEAgLTEyMSw3ICsxMjEsNyBAQAorICAgICAgIHNlYXJjaF9mcm9tID0gbWFu Z2xlZF9zdGFydCArIDI7CisgICAgIH0KKyAgIH0KKy0jZW5kaWYgIC8vICFkZWZpbmVkKF9fVUNM SUJDX18pICYmICFkZWZpbmVkKF9BSVgpCisrI2VuZGlmICAvLyAhZGVmaW5lZChfX0dMSUJDX18p ICYmICFkZWZpbmVkKF9BSVgpCisgfQorICNlbmRpZiAgLy8gIWRlZmluZWQoVVNFX1NZTUJPTEla RSkKKyAKK0BAIC0xMzMsNyArMTMzLDcgQEAKKyAgIHZpcnR1YWwgfkJhY2t0cmFjZU91dHB1dEhh bmRsZXIoKSA9IGRlZmF1bHQ7CisgfTsKKyAKKy0jaWYgIWRlZmluZWQoX19VQ0xJQkNfXykgJiYg IWRlZmluZWQoX0FJWCkKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9BSVgp Cisgdm9pZCBPdXRwdXRQb2ludGVyKHZvaWQqIHBvaW50ZXIsIEJhY2t0cmFjZU91dHB1dEhhbmRs ZXIqIGhhbmRsZXIpIHsKKyAgIC8vIFRoaXMgc2hvdWxkIGJlIG1vcmUgdGhhbiBlbm91Z2ggdG8g c3RvcmUgYSA2NC1iaXQgbnVtYmVyIGluIGhleDoKKyAgIC8vIDE2IGhleCBkaWdpdHMgKyAxIGZv ciBudWxsLXRlcm1pbmF0b3IuCitAQCAtMjE2LDcgKzIxNiw3IEBACisgICB9CisgI2VuZGlmICAv LyBkZWZpbmVkKFVTRV9TWU1CT0xJWkUpCisgfQorLSNlbmRpZiAgLy8gIWRlZmluZWQoX19VQ0xJ QkNfXykgJiYgIWRlZmluZWQoX0FJWCkKKysjZW5kaWYgIC8vICFkZWZpbmVkKF9fR0xJQkNfXykg JiYgIWRlZmluZWQoX0FJWCkKKyAKKyB2b2lkIFByaW50VG9TdGRlcnIoY29uc3QgY2hhciogb3V0 cHV0KSB7CisgICAvLyBOT1RFOiBUaGlzIGNvZGUgTVVTVCBiZSBhc3luYy1zaWduYWwgc2FmZSAo aXQncyB1c2VkIGJ5IGluLXByb2Nlc3MKK0BAIC04MTIsNyArODEyLDcgQEAKKyAgIC8vIE5PVEU6 IFRoaXMgY29kZSBNVVNUIGJlIGFzeW5jLXNpZ25hbCBzYWZlIChpdCdzIHVzZWQgYnkgaW4tcHJv Y2VzcworICAgLy8gc3RhY2sgZHVtcGluZyBzaWduYWwgaGFuZGxlcikuIE5PIG1hbGxvYyBvciBz dGRpbyBpcyBhbGxvd2VkIGhlcmUuCisgCistI2lmICFkZWZpbmVkKF9fVUNMSUJDX18pICYmICFk ZWZpbmVkKF9BSVgpCisrI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQor ICAgLy8gVGhvdWdoIHRoZSBiYWNrdHJhY2UgQVBJIG1hbiBwYWdlIGRvZXMgbm90IGxpc3QgYW55 IHBvc3NpYmxlIG5lZ2F0aXZlCisgICAvLyByZXR1cm4gdmFsdWVzLCB3ZSB0YWtlIG5vIGNoYW5j ZS4KKyAgIHJldHVybiBiYXNlOjpzYXR1cmF0ZWRfY2FzdDxzaXplX3Q+KGJhY2t0cmFjZSh0cmFj ZSwgY291bnQpKTsKK0BAIC04MjUsMTMgKzgyNSwxMyBAQAorIC8vIE5PVEU6IFRoaXMgY29kZSBN VVNUIGJlIGFzeW5jLXNpZ25hbCBzYWZlIChpdCdzIHVzZWQgYnkgaW4tcHJvY2VzcworIC8vIHN0 YWNrIGR1bXBpbmcgc2lnbmFsIGhhbmRsZXIpLiBOTyBtYWxsb2Mgb3Igc3RkaW8gaXMgYWxsb3dl ZCBoZXJlLgorIAorLSNpZiAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQor KyNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKKyAgIFByaW50QmFja3Ry YWNlT3V0cHV0SGFuZGxlciBoYW5kbGVyOworICAgUHJvY2Vzc0JhY2t0cmFjZSh0cmFjZV8sIGNv dW50XywgcHJlZml4X3N0cmluZywgJmhhbmRsZXIpOworICNlbmRpZgorIH0KKyAKKy0jaWYgIWRl ZmluZWQoX19VQ0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKKysjaWYgZGVmaW5lZChfX0dMSUJD X18pICYmICFkZWZpbmVkKF9BSVgpCisgdm9pZCBTdGFja1RyYWNlOjpPdXRwdXRUb1N0cmVhbVdp dGhQcmVmaXgoc3RkOjpvc3RyZWFtKiBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBwcmVmaXhfc3RyaW5nKSBjb25zdCB7CisgICBTdHJl YW1CYWNrdHJhY2VPdXRwdXRIYW5kbGVyIGhhbmRsZXIob3MpOworLS0tIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL2RlYnVnL3N0YWNrX3RyYWNlLmNjCTIwMTktMDQtMDkg MDk6MzE6MTYuMDAwMDAwMDAwICswMjAwCisrKysgLQkyMDE5LTA1LTA2IDIzOjE4OjE0LjkyMzU2 Njk5MiArMDIwMAorQEAgLTIzMyw3ICsyMzMsNyBAQAorIH0KKyBzdGQ6OnN0cmluZyBTdGFja1Ry YWNlOjpUb1N0cmluZ1dpdGhQcmVmaXgoY29uc3QgY2hhciogcHJlZml4X3N0cmluZykgY29uc3Qg eworICAgc3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOworLSNpZiAhZGVmaW5lZChfX1VDTElCQ19f KSAmJiAhZGVmaW5lZChfQUlYKQorKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQo X0FJWCkKKyAgIE91dHB1dFRvU3RyZWFtV2l0aFByZWZpeCgmc3RyZWFtLCBwcmVmaXhfc3RyaW5n KTsKKyAjZW5kaWYKKyAgIHJldHVybiBzdHJlYW0uc3RyKCk7CistLS0gcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtLy9iYXNlL2xvZ2dpbmcuY2MJMjAxNy0xMS0yOCAxNDowNjo1My4w MDAwMDAwMDAgKzAxMDAKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL2Jh c2UvbG9nZ2luZy5jYwkyMDE4LTAxLTI3IDIyOjQ2OjM0Ljk3MDQwNjgwNyArMDEwMAorQEAgLTU0 Niw3ICs1NDYsNyBAQAorIAorIExvZ01lc3NhZ2U6On5Mb2dNZXNzYWdlKCkgeworICAgc2l6ZV90 IHN0YWNrX3N0YXJ0ID0gc3RyZWFtXy50ZWxscCgpOworLSNpZiAhZGVmaW5lZChPRkZJQ0lBTF9C VUlMRCkgJiYgIWRlZmluZWQoT1NfTkFDTCkgJiYgIWRlZmluZWQoX19VQ0xJQkNfXykgJiYgXAor KyNpZiAhZGVmaW5lZChPRkZJQ0lBTF9CVUlMRCkgJiYgIWRlZmluZWQoT1NfTkFDTCkgJiYgZGVm aW5lZChfX0dMSUJDX18pICYmIFwKKyAgICAgIWRlZmluZWQoT1NfQUlYKQorICAgaWYgKHNldmVy aXR5XyA9PSBMT0dfRkFUQUwgJiYgIWJhc2U6OmRlYnVnOjpCZWluZ0RlYnVnZ2VkKCkpIHsKKyAg ICAgLy8gSW5jbHVkZSBhIHN0YWNrIHRyYWNlIG9uIGEgZmF0YWwsIHVubGVzcyBhIGRlYnVnZ2Vy IGlzIGF0dGFjaGVkLgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMv MDAxNy1xdC1tdXNsLXRocmVhZC1zdGFja3NpemUucGF0Y2ggYi9zcmNwa2dzL3F0NS13ZWJlbmdp bmUvcGF0Y2hlcy8wMDE3LXF0LW11c2wtdGhyZWFkLXN0YWNrc2l6ZS5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNDk2NzUzYmVmMzAKLS0tIC9kZXYvbnVsbAor KysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDE3LXF0LW11c2wtdGhyZWFkLXN0 YWNrc2l6ZS5wYXRjaApAQCAtMCwwICsxLDI2IEBACitkaWZmIC0tZ2l0IGEvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3BwYXBpL3V0aWxpdHkvdGhyZWFkaW5nL3NpbXBsZV90aHJlYWQuY2MgYi9zcmMv M3JkcGFydHkvY2hyb21pdW0vcHBhcGkvdXRpbGl0eS90aHJlYWRpbmcvc2ltcGxlX3RocmVhZC5j YworaW5kZXggMDJiZjQ5Yi4uMDVlZTE4MiAxMDA2NDQKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vcHBhcGkvdXRpbGl0eS90aHJlYWRpbmcvc2ltcGxlX3RocmVhZC5jYwor KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9wcGFwaS91dGlsaXR5L3RocmVh ZGluZy9zaW1wbGVfdGhyZWFkLmNjCitAQCAtMTMsNyArMTMsNyBAQCBuYW1lc3BhY2UgcHAgewor IG5hbWVzcGFjZSB7CisgCisgLy8gVXNlIDJNQiBkZWZhdWx0IHN0YWNrIHNpemUgZm9yIE5hdGl2 ZSBDbGllbnQsIG90aGVyd2lzZSB1c2Ugc3lzdGVtIGRlZmF1bHQuCistI2lmIGRlZmluZWQoX19u YXRpdmVfY2xpZW50X18pCisrI2lmIGRlZmluZWQoX19uYXRpdmVfY2xpZW50X18pIHx8ICFkZWZp bmVkKF9fR0xJQkNfXykKKyBjb25zdCBzaXplX3Qga0RlZmF1bHRTdGFja1NpemUgPSAyICogMTAy NCAqIDEwMjQ7CisgI2Vsc2UKKyBjb25zdCBzaXplX3Qga0RlZmF1bHRTdGFja1NpemUgPSAwOwor ZGlmZiAtLWdpdCBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92OC9zcmMvYmFzZS9wbGF0Zm9ybS9w bGF0Zm9ybS1wb3NpeC5jYyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92OC9zcmMvYmFzZS9wbGF0 Zm9ybS9wbGF0Zm9ybS1wb3NpeC5jYworaW5kZXggY2Y3ZjNlYy4uZTA2YTVjZSAxMDA2NDQKKy0t LSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdjgvc3JjL2Jhc2UvcGxhdGZvcm0v cGxhdGZvcm0tcG9zaXguY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v djgvc3JjL2Jhc2UvcGxhdGZvcm0vcGxhdGZvcm0tcG9zaXguY2MKK0BAIC03NjEsNyArNzYxLDcg QEAgdm9pZCBUaHJlYWQ6OlN0YXJ0KCkgeworICNpZiBWOF9PU19NQUNPU1gKKyAgICAgLy8gRGVm YXVsdCBvbiBNYWMgT1MgWCBpcyA1MTJrQiAtLSBidW1wIHVwIHRvIDFNQgorICAgICBzdGFja19z aXplID0gMSAqIDEwMjQgKiAxMDI0OworLSNlbGlmIFY4X09TX0FJWAorKyNlbGlmIFY4X09TX0FJ WCB8fCAhZGVmaW5lZChfX0dMSUJDX18pCisgICAgIC8vIERlZmF1bHQgb24gQUlYIGlzIDk2a0Ig LS0gYnVtcCB1cCB0byAyTUIKKyAgICAgc3RhY2tfc2l6ZSA9IDIgKiAxMDI0ICogMTAyNDsKKyAj ZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMTgtc2Fu ZGJveC1tZW1iYXJyaWVyLnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAx OC1zYW5kYm94LW1lbWJhcnJpZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLmI3Mzk3MWYyNDMyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2Vi ZW5naW5lL3BhdGNoZXMvMDAxOC1zYW5kYm94LW1lbWJhcnJpZXIucGF0Y2gKQEAgLTAsMCArMSw2 MCBAQAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vc2FuZGJveC9saW51 eC9zeXN0ZW1faGVhZGVycy9hcm02NF9saW51eF9zeXNjYWxscy5oCisrKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtLy9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2FybTY0 X2xpbnV4X3N5c2NhbGxzLmgKK0BAIC0xMDYzLDQgKzEwNjMsOCBAQAorICNkZWZpbmUgX19OUl9t ZW1mZF9jcmVhdGUgMjc5CisgI2VuZGlmCisgCisrI2lmICFkZWZpbmVkKF9fTlJfbWVtYmFycmll cikKKysjZGVmaW5lIF9fTlJfbWVtYmFycmllciAyODMKKysjZW5kaWYKKysKKyAjZW5kaWYgIC8v IFNBTkRCT1hfTElOVVhfU1lTVEVNX0hFQURFUlNfQVJNNjRfTElOVVhfU1lTQ0FMTFNfSF8KKwor LS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vc2FuZGJveC9saW51eC9zeXN0 ZW1faGVhZGVycy9hcm1fbGludXhfc3lzY2FsbHMuaAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS8vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9hcm1fbGludXhfc3lz Y2FsbHMuaAorQEAgLTEzODUsNiArMTM4NSwxMCBAQAorICNkZWZpbmUgX19OUl9tZW1mZF9jcmVh dGUgKF9fTlJfU1lTQ0FMTF9CQVNFKzM4NSkKKyAjZW5kaWYKKyAKKysjaWYgIWRlZmluZWQoX19O Ul9tZW1iYXJyaWVyKQorKyNkZWZpbmUgX19OUl9tZW1iYXJyaWVyIChfX05SX1NZU0NBTExfQkFT RSszODkpCisrI2VuZGlmCisrCisgLy8gQVJNIHByaXZhdGUgc3lzY2FsbHMuCisgI2lmICFkZWZp bmVkKF9fQVJNX05SX0JBU0UpCisgI2RlZmluZSBfX0FSTV9OUl9CQVNFIChfX05SX1NZU0NBTExf QkFTRSArIDB4RjAwMDApCisKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v L3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMveDg2XzMyX2xpbnV4X3N5c2NhbGxzLmgKKysr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL3NhbmRib3gvbGludXgvc3lzdGVt X2hlYWRlcnMveDg2XzMyX2xpbnV4X3N5c2NhbGxzLmgKK0BAIC0xNDIyLDUgKzE0MjIsOSBAQAor ICNkZWZpbmUgX19OUl9tZW1mZF9jcmVhdGUgMzU2CisgI2VuZGlmCisgCisrI2lmICFkZWZpbmVk KF9fTlJfbWVtYmFycmllcikKKysjZGVmaW5lIF9fTlJfbWVtYmFycmllciAzNzUKKysjZW5kaWYK KysKKyAjZW5kaWYgIC8vIFNBTkRCT1hfTElOVVhfU1lTVEVNX0hFQURFUlNfWDg2XzMyX0xJTlVY X1NZU0NBTExTX0hfCisgCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy9z YW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL3g4Nl82NF9saW51eF9zeXNjYWxscy5oCisrKysg cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy9zYW5kYm94L2xpbnV4L3N5c3RlbV9o ZWFkZXJzL3g4Nl82NF9saW51eF9zeXNjYWxscy5oCitAQCAtMTI5MCw1ICsxMjkwLDkgQEAKKyAj ZGVmaW5lIF9fTlJfbWVtZmRfY3JlYXRlIDMxOQorICNlbmRpZgorIAorKyNpZiAhZGVmaW5lZChf X05SX21lbWJhcnJpZXIpCisrI2RlZmluZSBfX05SX21lbWJhcnJpZXIgMzI0CisrI2VuZGlmCisr CisgI2VuZGlmICAvLyBTQU5EQk9YX0xJTlVYX1NZU1RFTV9IRUFERVJTX1g4Nl82NF9MSU5VWF9T WVNDQUxMU19IXworIAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vc2Fu ZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfc2V0cy5jYworKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1o ZWxwZXJzL3N5c2NhbGxfc2V0cy5jYworQEAgLTM3MCw2ICszNzAsNyBAQAorICAgc3dpdGNoIChz eXNubykgeworICAgICBjYXNlIF9fTlJfZXhpdDoKKyAgICAgY2FzZSBfX05SX2V4aXRfZ3JvdXA6 CisrICAgIGNhc2UgX19OUl9tZW1iYXJyaWVyOgorICAgICBjYXNlIF9fTlJfd2FpdDQ6CisgICAg IGNhc2UgX19OUl93YWl0aWQ6CisgI2lmIGRlZmluZWQoX19pMzg2X18pCmRpZmYgLS1naXQgYS9z cmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDE5LWduLWNyb3NzLXN5c3Jvb3QucGF0Y2gg Yi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDE5LWduLWNyb3NzLXN5c3Jvb3QucGF0 Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmVlNjY4OWE0MTgzCi0t LSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAxOS1nbi1j cm9zcy1zeXNyb290LnBhdGNoCkBAIC0wLDAgKzEsMjQgQEAKK1RoZXJlIGlzIG5vIHJlYXNvbiB0 byBydW4gdGhpcyBzY3JpcHQgYW5kIHJ1bm5pbmcgaXQgZmFpbHMgb24gYXJjaGl0ZWN0dXJlcwor Y2hyb21pdW0gZG9lcyBub3Qgb2ZmaWNpYWxseSBzdXBwb3J0IChzdWNoIGFzIHBwYzY0KS4KKwor LS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9idWlsZC9jb25maWcvcG9zaXgv QlVJTEQuZ24KKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYnVpbGQvY29u ZmlnL3Bvc2l4L0JVSUxELmduCitAQCAtMTAyLDEyICsxMDIsMTIgQEAgY29uZmlnKCJydW50aW1l X2xpYnJhcnkiKSB7CisgICAgICAgIyB3aGVuIHR1cm5pbmcgdGhlIHN5c3Jvb3Qgb24gb3Igb2Zm LiAoZGVmaW5lcyBhcmUgcGFzc2VkIHZpYSB0aGUgY29tbWFuZAorICAgICAgICMgbGluZSwgYW5k IGJ1aWxkIHN5c3RlbSByZWJ1aWxkcyB0aGluZ3Mgd2hlbiB0aGVpciBjb21tYW5kbGluZQorICAg ICAgICMgY2hhbmdlcykuIE5vdGhpbmcgc2hvdWxkIGV2ZXIgcmVhZCB0aGlzIGRlZmluZS4KKy0g ICAgICBzeXNyb290X2hhc2ggPQorLSAgICAgICAgICBleGVjX3NjcmlwdCgiLy9idWlsZC9saW51 eC9zeXNyb290X3NjcmlwdHMvaW5zdGFsbC1zeXNyb290LnB5IiwKKy0gICAgICAgICAgICAgICAg ICAgICAgWyAiLS1wcmludC1oYXNoPSRjdXJyZW50X2NwdSIgXSwKKy0gICAgICAgICAgICAgICAg ICAgICAgInRyaW0gc3RyaW5nIiwKKy0gICAgICAgICAgICAgICAgICAgICAgWyAiLy9idWlsZC9s aW51eC9zeXNyb290X3NjcmlwdHMvc3lzcm9vdHMuanNvbiIgXSkKKy0gICAgICBkZWZpbmVzICs9 IFsgIkNSX1NZU1JPT1RfSEFTSD0kc3lzcm9vdF9oYXNoIiBdCisrICAgICAgI3N5c3Jvb3RfaGFz aCA9CisrICAgICAgIyAgICBleGVjX3NjcmlwdCgiLy9idWlsZC9saW51eC9zeXNyb290X3Njcmlw dHMvaW5zdGFsbC1zeXNyb290LnB5IiwKKysgICAgICAjICAgICAgICAgICAgICAgIFsgIi0tcHJp bnQtaGFzaD0kY3VycmVudF9jcHUiIF0sCisrICAgICAgIyAgICAgICAgICAgICAgICAidHJpbSBz dHJpbmciLAorKyAgICAgICMgICAgICAgICAgICAgICAgWyAiLy9idWlsZC9saW51eC9zeXNyb290 X3NjcmlwdHMvc3lzcm9vdHMuanNvbiIgXSkKKysgICAgICAjZGVmaW5lcyArPSBbICJDUl9TWVNS T09UX0hBU0g9JHN5c3Jvb3RfaGFzaCIgXQorICAgICB9CisgICAgIGFzbWZsYWdzICs9IHN5c3Jv b3RfZmxhZ3MKKyAKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAw MjAtbXNndmVjLXB1c2hfYmFjay5wYXRjaCBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVz LzAwMjAtbXNndmVjLXB1c2hfYmFjay5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uNzU0ODFhMjg4OWYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS13 ZWJlbmdpbmUvcGF0Y2hlcy8wMDIwLW1zZ3ZlYy1wdXNoX2JhY2sucGF0Y2gKQEAgLTAsMCArMSwx NCBAQAorLS0tIHF0d2ViZW5naW5lLWV2ZXJ5d2hlcmUtc3JjLTUuMTQuMC1iZXRhMi9zcmMvM3Jk cGFydHkvY2hyb21pdW0vbmV0L3NvY2tldC91ZHBfc29ja2V0X3Bvc2l4LmNjCTIwMTktMTAtMDgg MDg6Mjc6NDMuMDAwMDAwMDAwICswMjAwCisrKysgLQkyMDE5LTExLTExIDIyOjQxOjQ2LjY5OTA2 ODg4OSArMDEwMAorQEAgLTExOTEsNyArMTE5MSwxMSBAQAorICAgICBtc2dfaW92LT5wdXNoX2Jh Y2soe2NvbnN0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5sZW5ndGgoKX0p OworICAgbXNndmVjLT5yZXNlcnZlKGJ1ZmZlcnMuc2l6ZSgpKTsKKyAgIGZvciAoc2l6ZV90IGog PSAwOyBqIDwgYnVmZmVycy5zaXplKCk7IGorKykKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pCisg ICAgIG1zZ3ZlYy0+cHVzaF9iYWNrKHt7bnVsbHB0ciwgMCwgJm1zZ19pb3Zbal0sIDEsIG51bGxw dHIsIDAsIDB9LCAwfSk7CisrI2Vsc2UKKysgICAgbXNndmVjLT5wdXNoX2JhY2soe3tudWxscHRy LCAwLCAmbXNnX2lvdltqXSwgMSwgMCwgMCwgMH0sIDB9KTsKKysjZW5kaWYKKyAgIGludCByZXN1 bHQgPSBIQU5ETEVfRUlOVFIoU2VuZG1tc2coZmQsICZtc2d2ZWNbMF0sIGJ1ZmZlcnMuc2l6ZSgp LCAwKSk7CisgICBTZW5kUmVzdWx0IHNlbmRfcmVzdWx0KDAsIDAsIHN0ZDo6bW92ZShidWZmZXJz KSk7CisgICBpZiAocmVzdWx0IDwgMCkgewpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5n aW5lL3BhdGNoZXMvMDAyMS1zYW5kYm94LXNjaGVkX2dldHBhcmFtLnBhdGNoIGIvc3JjcGtncy9x dDUtd2ViZW5naW5lL3BhdGNoZXMvMDAyMS1zYW5kYm94LXNjaGVkX2dldHBhcmFtLnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hOTFlODVlY2EzYwotLS0gL2Rl di9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMjEtc2FuZGJveC1z Y2hlZF9nZXRwYXJhbS5wYXRjaApAQCAtMCwwICsxLDI0IEBACitBbGxvdyBTWVNfc2NoZWRfZ2V0 cGFyYW0gYW5kIFNZU19zY2hlZF9nZXRzY2hlZHVsZXIKK211c2wgdXNlcyB0aGVtIGZvciBwdGhy ZWFkX2dldHNjaGVkcGFyYW0oKQorCitzb3VyY2U6IGh0dHBzOi8vZ2l0LmFscGluZWxpbnV4Lm9y Zy9hcG9ydHMvY29tbWl0L2NvbW11bml0eS9jaHJvbWl1bT9pZD01NGFmOWY4YWMyNGY1MmQzODJj NTc1OGUyNDQ1YmYwMjA2ZWZmNDBlCisKKy0tLSBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zZXJ2 aWNlcy9zZXJ2aWNlX21hbmFnZXIvc2FuZGJveC9saW51eC9icGZfcmVuZGVyZXJfcG9saWN5X2xp bnV4LmNjCTIwMTktMTAtMDggMDg6Mjc6NDMuMDAwMDAwMDAwICswMjAwCisrKysgLQkyMDE5LTEx LTExIDIyOjMzOjUxLjg2NTE1MzY4NCArMDEwMAorQEAgLTg4LDEwICs4OCwxNiBAQAorICAgICBj YXNlIF9fTlJfc3lzaW5mbzoKKyAgICAgY2FzZSBfX05SX3RpbWVzOgorICAgICBjYXNlIF9fTlJf dW5hbWU6CisrI2lmICFkZWZpbmVkKF9fR0xJQkNfXykKKysgICAgY2FzZSBfX05SX3NjaGVkX2dl dHBhcmFtOgorKyAgICBjYXNlIF9fTlJfc2NoZWRfZ2V0c2NoZWR1bGVyOgorKyNlbmRpZgorICAg ICAgIHJldHVybiBBbGxvdygpOworICAgICBjYXNlIF9fTlJfc2NoZWRfZ2V0YWZmaW5pdHk6Cisr I2lmIGRlZmluZWQoX19HTElCQ19fKQorICAgICBjYXNlIF9fTlJfc2NoZWRfZ2V0cGFyYW06Cisg ICAgIGNhc2UgX19OUl9zY2hlZF9nZXRzY2hlZHVsZXI6CisrI2VuZGlmCisgICAgIGNhc2UgX19O Ul9zY2hlZF9zZXRzY2hlZHVsZXI6CisgICAgICAgcmV0dXJuIHNhbmRib3g6OlJlc3RyaWN0U2No ZWRUYXJnZXQoR2V0UG9saWN5UGlkKCksIHN5c25vKTsKKyAgICAgY2FzZSBfX05SX3BybGltaXQ2 NDoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMjItY2Fub25p Y2FsaXplLWZpbGUtbmFtZS1tdXNsLnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNo ZXMvMDAyMi1jYW5vbmljYWxpemUtZmlsZS1uYW1lLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjg5M2VkMmQ0MWJiCi0tLSAvZGV2L251bGwKKysrIGIv c3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAyMi1jYW5vbmljYWxpemUtZmlsZS1uYW1l LW11c2wucGF0Y2gKQEAgLTAsMCArMSwxMSBAQAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9uYXNtL25hc21saWIvcmVhbHBhdGguYwkyMDE5LTA5LTIz IDE0OjI0OjIwLjAwMDAwMDAwMCArMDIwMAorKysrIC0JMjAxOS0xMC0xMSAwNjoyNzoyOC40NTAz Mjk5ODYgKzAyMDAKK0BAIC01Nyw3ICs1Nyw3IEBACisgICovCisgY2hhciAqbmFzbV9yZWFscGF0 aChjb25zdCBjaGFyICpyZWxfcGF0aCkKKyB7CistICAgIGNoYXIgKnJwID0gY2Fub25pY2FsaXpl X2ZpbGVfbmFtZShyZWxfcGF0aCk7CisrICAgIGNoYXIgKnJwID0gcmVhbHBhdGgocmVsX3BhdGgs IE5VTEwpOworICAgICByZXR1cm4gcnAgPyBycCA6IG5hc21fc3RyZHVwKHJlbF9wYXRoKTsKKyB9 CisgCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDkwLWNocm9t aXVtLXBwYzY0bGUucGF0Y2ggYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDkwLWNo cm9taXVtLXBwYzY0bGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjIxNzk2OTA5YjcwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5l L3BhdGNoZXMvMDA5MC1jaHJvbWl1bS1wcGM2NGxlLnBhdGNoCkBAIC0wLDAgKzEsNDA0OCBAQAor VGhpcyBpcyBhIGJhc2UgcGF0Y2ggdGhhdCBhZGRzIHN1cHBvcnQgZm9yIHBwYzY0bGUgZ2xpYmMu IEJpZyBlbmRpYW4gYW5kIG11c2wKK3N1cHBvcnQgaXMgYWRkZWQgaW4gZXh0cmEgcGF0Y2hlcyBh ZnRlcndhcmRzLgorCitQaW5nIHE2NiBpZiB5b3UncmUgdXBkYXRpbmcgcXQ1IGFuZCB0aGUgcGF0 Y2ggZG9lcyBub3QgYXBwbHkgYW55bW9yZS4KKworU291cmNlOiBodHRwczovL3dpa2kucmFwdG9y Y3MuY29tL3cvaW5kZXgucGhwP3RpdGxlPVBvcnRpbmcvQ2hyb21pdW0KK1Vwc3RyZWFtOiBDdXJy ZW50bHkgYmVpbmcgc3VibWl0dGVkCisKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vYnVpbGQvZG93bmxvYWRfbmFjbF90b29sY2hhaW5zLnB5CisrKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL2J1aWxkL2Rvd25sb2FkX25hY2xfdG9vbGNoYWlucy5weQor QEAgLTExLDYgKzExLDEwIEBAIGltcG9ydCBzeXMKKyAKKyAKKyBkZWYgTWFpbihhcmdzKToKKysg ICMgSWYgYGRpc2FibGVfbmFjbD0xYCBpcyBpbiBHWVBfREVGSU5FUywgZXhpdAorKyAgaWYgJ2Rp c2FibGVfbmFjbD0xJyBpbiBvcy5lbnZpcm9uLmdldCgnR1lQX0RFRklORVMnLCAnJyk6CisrICAg IHJldHVybiAwCisrCisgICBzY3JpcHRfZGlyID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJz cGF0aChfX2ZpbGVfXykpCisgICBzcmNfZGlyID0gb3MucGF0aC5kaXJuYW1lKHNjcmlwdF9kaXIp CisgICBuYWNsX2RpciA9IG9zLnBhdGguam9pbihzcmNfZGlyLCAnbmF0aXZlX2NsaWVudCcpCist LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvZmVhdHVyZXMuZ25p CisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvZmVhdHVyZXMu Z25pCitAQCAtMTIsNiArMTIsNiBAQCB1c2Vfc2VjY29tcF9icGYgPQorICAgICAoaXNfbGludXgg fHwgaXNfYW5kcm9pZCkgJiYKKyAgICAgKGN1cnJlbnRfY3B1ID09ICJ4ODYiIHx8IGN1cnJlbnRf Y3B1ID09ICJ4NjQiIHx8IGN1cnJlbnRfY3B1ID09ICJhcm0iIHx8CisgICAgICBjdXJyZW50X2Nw dSA9PSAiYXJtNjQiIHx8IGN1cnJlbnRfY3B1ID09ICJtaXBzZWwiIHx8CistICAgICBjdXJyZW50 X2NwdSA9PSAibWlwczY0ZWwiKQorKyAgICAgY3VycmVudF9jcHUgPT0gIm1pcHM2NGVsIiB8fCBj dXJyZW50X2NwdSA9PSAicHBjNjQiKQorIAorIHVzZV9zZWNjb21wX2JwZiA9IHVzZV9zZWNjb21w X2JwZiB8fCBpc19uYWNsX25vbnNmaQorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS9zYW5kYm94L2xpbnV4L0JVSUxELmduCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3NhbmRib3gvbGludXgvQlVJTEQuZ24KK0BAIC00MTYsNiArNDE2LDggQEAgY29t cG9uZW50KCJzYW5kYm94X3NlcnZpY2VzIikgeworIAorIHNvdXJjZV9zZXQoInNhbmRib3hfc2Vy dmljZXNfaGVhZGVycyIpIHsKKyAgIHNvdXJjZXMgPSBbCisrICAgICJzeXN0ZW1faGVhZGVycy9w cGM2NF9saW51eF9zeXNjYWxscy5oIiwKKysgICAgInN5c3RlbV9oZWFkZXJzL3BwYzY0X2xpbnV4 X3Vjb250ZXh0LmgiLAorICAgICAic3lzdGVtX2hlYWRlcnMvYXJtNjRfbGludXhfc3lzY2FsbHMu aCIsCisgICAgICJzeXN0ZW1faGVhZGVycy9hcm1fbGludXhfc3lzY2FsbHMuaCIsCisgICAgICJz eXN0ZW1faGVhZGVycy9hcm1fbGludXhfdWNvbnRleHQuaCIsCistLS0gcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvYnBmX2RzbC9saW51eF9zeXNjYWxsX3Jh bmdlcy5oCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGlu dXgvYnBmX2RzbC9saW51eF9zeXNjYWxsX3Jhbmdlcy5oCitAQCAtNTUsNiArNTUsMTMgQEAKKyAj ZGVmaW5lIE1BWF9QVUJMSUNfU1lTQ0FMTCAyNzl1CisgI2RlZmluZSBNQVhfU1lTQ0FMTCBNQVhf UFVCTElDX1NZU0NBTEwKKyAKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrCisrI2lu Y2x1ZGUgPGFzbS91bmlzdGQuaD4KKysjZGVmaW5lIE1JTl9TWVNDQUxMIDB1CisrI2RlZmluZSBN QVhfUFVCTElDX1NZU0NBTEwgMzg2dQorKyNkZWZpbmUgTUFYX1NZU0NBTEwgTUFYX1BVQkxJQ19T WVNDQUxMCisrCisgI2Vsc2UKKyAjZXJyb3IgIlVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZSIKKyAj ZW5kaWYKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51 eC9icGZfZHNsL3NlY2NvbXBfbWFjcm9zLmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vc2FuZGJveC9saW51eC9icGZfZHNsL3NlY2NvbXBfbWFjcm9zLmgKK0BAIC0xNiw2 ICsxNiw5IEBACisgI2lmIGRlZmluZWQoX19taXBzX18pCisgLy8gc3lzL3VzZXIuaCBpbiBlZ2xp YmMgbWlzc2VzIHNpemVfdCBkZWZpbml0aW9uCisgI2luY2x1ZGUgPHN0ZGRlZi5oPgorKyNlbGlm IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysvLyBNYW51YWxseSBkZWZpbmUgZ3JlZ190IG9uIHBw YzY0CisrdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgZ3JlZ190OworICNlbmRpZgorICNlbmRp ZgorIAorQEAgLTM0Niw2ICszNDksNTEgQEAgc3RydWN0IHJlZ3Nfc3RydWN0IHsKKyAjZGVmaW5l IFNFQ0NPTVBfUFRfUEFSTTQoX3JlZ3MpIChfcmVncykucmVnc1szXQorICNkZWZpbmUgU0VDQ09N UF9QVF9QQVJNNShfcmVncykgKF9yZWdzKS5yZWdzWzRdCisgI2RlZmluZSBTRUNDT01QX1BUX1BB Uk02KF9yZWdzKSAoX3JlZ3MpLnJlZ3NbNV0KKysKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0 X18pCisrI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KKysKKyt0eXBlZGVmIHN0cnVjdCBwdF9yZWdz IHJlZ3Nfc3RydWN0OworKworKyNpZmRlZiBBUkNIX0NQVV9MSVRUTEVfRU5ESUFOCisrI2RlZmlu ZSBTRUNDT01QX0FSQ0ggQVVESVRfQVJDSF9QUEM2NExFCisrI2Vsc2UKKysjZGVmaW5lIFNFQ0NP TVBfQVJDSCBBVURJVF9BUkNIX1BQQzY0CisrI2VuZGlmCisrCisrI2RlZmluZSBTRUNDT01QX1JF RyhfY3R4LCBfcmVnKSAoKF9jdHgpLT51Y19tY29udGV4dC5yZWdzLT5ncHJbX3JlZ10pCisrCisr I2RlZmluZSBTRUNDT01QX1JFU1VMVChfY3R4KSBTRUNDT01QX1JFRyhfY3R4LCAzKQorKyNkZWZp bmUgU0VDQ09NUF9TWVNDQUxMKF9jdHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDApCisrI2RlZmluZSBT RUNDT01QX0lQKF9jdHgpIChfY3R4KS0+dWNfbWNvbnRleHQucmVncy0+bmlwCisrI2RlZmluZSBT RUNDT01QX1BBUk0xKF9jdHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDMpCisrI2RlZmluZSBTRUNDT01Q X1BBUk0yKF9jdHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDQpCisrI2RlZmluZSBTRUNDT01QX1BBUk0z KF9jdHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDUpCisrI2RlZmluZSBTRUNDT01QX1BBUk00KF9jdHgp IFNFQ0NPTVBfUkVHKF9jdHgsIDYpCisrI2RlZmluZSBTRUNDT01QX1BBUk01KF9jdHgpIFNFQ0NP TVBfUkVHKF9jdHgsIDcpCisrI2RlZmluZSBTRUNDT01QX1BBUk02KF9jdHgpIFNFQ0NPTVBfUkVH KF9jdHgsIDgpCisrCisrI2RlZmluZSBTRUNDT01QX05SX0lEWCAob2Zmc2V0b2Yoc3RydWN0IGFy Y2hfc2VjY29tcF9kYXRhLCBucikpCisrI2RlZmluZSBTRUNDT01QX0FSQ0hfSURYIChvZmZzZXRv ZihzdHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIGFyY2gpKQorKyNkZWZpbmUgU0VDQ09NUF9JUF9N U0JfSURYIFwKKysgIChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIGluc3RydWN0 aW9uX3BvaW50ZXIpICsgNCkKKysjZGVmaW5lIFNFQ0NPTVBfSVBfTFNCX0lEWCBcCisrICAob2Zm c2V0b2Yoc3RydWN0IGFyY2hfc2VjY29tcF9kYXRhLCBpbnN0cnVjdGlvbl9wb2ludGVyKSArIDAp CisrI2RlZmluZSBTRUNDT01QX0FSR19NU0JfSURYKG5yKSBcCisrICAob2Zmc2V0b2Yoc3RydWN0 IGFyY2hfc2VjY29tcF9kYXRhLCBhcmdzKSArIDggKiAobnIpICsgNCkKKysjZGVmaW5lIFNFQ0NP TVBfQVJHX0xTQl9JRFgobnIpIFwKKysgIChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9zZWNjb21wX2Rh dGEsIGFyZ3MpICsgOCAqIChucikgKyAwKQorKworKyNkZWZpbmUgU0VDQ09NUF9QVF9SRVNVTFQo X3JlZ3MpIChfcmVncykuZ3ByWzNdCisrI2RlZmluZSBTRUNDT01QX1BUX1NZU0NBTEwoX3JlZ3Mp IChfcmVncykuZ3ByWzBdCisrI2RlZmluZSBTRUNDT01QX1BUX0lQKF9yZWdzKSAoX3JlZ3MpLm5p cAorKyNkZWZpbmUgU0VDQ09NUF9QVF9QQVJNMShfcmVncykgKF9yZWdzKS5ncHJbM10KKysjZGVm aW5lIFNFQ0NPTVBfUFRfUEFSTTIoX3JlZ3MpIChfcmVncykuZ3ByWzRdCisrI2RlZmluZSBTRUND T01QX1BUX1BBUk0zKF9yZWdzKSAoX3JlZ3MpLmdwcls1XQorKyNkZWZpbmUgU0VDQ09NUF9QVF9Q QVJNNChfcmVncykgKF9yZWdzKS5ncHJbNl0KKysjZGVmaW5lIFNFQ0NPTVBfUFRfUEFSTTUoX3Jl Z3MpIChfcmVncykuZ3ByWzddCisrI2RlZmluZSBTRUNDT01QX1BUX1BBUk02KF9yZWdzKSAoX3Jl Z3MpLmdwcls4XQorKworICNlbHNlCisgI2Vycm9yIFVuc3VwcG9ydGVkIHRhcmdldCBwbGF0Zm9y bQorIAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4 L3NlY2NvbXAtYnBmLWhlbHBlcnMvYmFzZWxpbmVfcG9saWN5LmNjCisrKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9i YXNlbGluZV9wb2xpY3kuY2MKK0BAIC04Nyw3ICs4Nyw4IEBAIGJvb2wgSXNCYXNlbGluZVBvbGlj eVdhdGNoZWQoaW50IHN5c25vKSB7CisgICAgICAgICAgU3lzY2FsbFNldHM6OklzUHJjdGwoc3lz bm8pIHx8CisgICAgICAgICAgU3lzY2FsbFNldHM6OklzUHJvY2Vzc0dyb3VwT3JTZXNzaW9uKHN5 c25vKSB8fAorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hf Q1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVm aW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkg fHwgXAorKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgICAgICAgU3lzY2FsbFNldHM6 OklzU29ja2V0Q2FsbChzeXNubykgfHwKKyAjZW5kaWYKKyAjaWYgZGVmaW5lZChfX2FybV9fKQor QEAgLTE5MCw3ICsxOTEsNyBAQCBSZXN1bHRFeHByIEV2YWx1YXRlU3lzY2FsbEltcGwoaW50IGZz X2RlbmllZF9lcnJubywKKyAgIH0KKyAKKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5l ZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCistICAgIGRlZmluZWQoX19h YXJjaDY0X18pCisrICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBj NjRfXykKKyAgIGlmIChzeXNubyA9PSBfX05SX21tYXApCisgICAgIHJldHVybiBSZXN0cmljdE1t YXBGbGFncygpOworICNlbmRpZgorQEAgLTIwOCw3ICsyMDksNyBAQCBSZXN1bHRFeHByIEV2YWx1 YXRlU3lzY2FsbEltcGwoaW50IGZzX2RlbmllZF9lcnJubywKKyAgICAgcmV0dXJuIFJlc3RyaWN0 UHJjdGwoKTsKKyAKKyAjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18p IHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKKy0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykKKysg ICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgaWYg KHN5c25vID09IF9fTlJfc29ja2V0cGFpcikgeworICAgICAvLyBPbmx5IGFsbG93IEFGX1VOSVgs IFBGX1VOSVguIENyYXNoIGlmIGFueXRoaW5nIGVsc2UgaXMgc2Vlbi4KKyAgICAgc3RhdGljX2Fz c2VydChBRl9VTklYID09IFBGX1VOSVgsCitAQCAtMjQ4LDcgKzI0OSw4IEBAIFJlc3VsdEV4cHIg RXZhbHVhdGVTeXNjYWxsSW1wbChpbnQgZnNfZGVuaWVkX2Vycm5vLAorICAgfQorIAorICNpZiBk ZWZpbmVkKF9faTM4Nl9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZ KSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9N SVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZp bmVkKF9fcG93ZXJwYzY0X18pCisgICBpZiAoU3lzY2FsbFNldHM6OklzU29ja2V0Q2FsbChzeXNu bykpCisgICAgIHJldHVybiBSZXN0cmljdFNvY2tldGNhbGxDb21tYW5kKCk7CisgI2VuZGlmCist LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29t cC1icGYtaGVscGVycy9zeXNjYWxsX3BhcmFtZXRlcnNfcmVzdHJpY3Rpb25zLmNjCisrKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYt aGVscGVycy9zeXNjYWxsX3BhcmFtZXRlcnNfcmVzdHJpY3Rpb25zLmNjCitAQCAtMzUsNyArMzUs OCBAQAorICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyAjaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgor ICNpZiBkZWZpbmVkKE9TX0xJTlVYKSAmJiAhZGVmaW5lZChPU19DSFJPTUVPUykgJiYgIWRlZmlu ZWQoX19hcm1fXykgJiYgXAorLSAgICAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgIWRlZmluZWQo UFRSQUNFX0dFVF9USFJFQURfQVJFQSkKKysgICAgIWRlZmluZWQoX19hYXJjaDY0X18pICYmICFk ZWZpbmVkKF9fcG93ZXJwYzY0X18pICYmIFwKKysgICAgIWRlZmluZWQoUFRSQUNFX0dFVF9USFJF QURfQVJFQSkKKyAvLyBBbHNvIGluY2x1ZGUgYXNtL3B0cmFjZS1hYmkuaCBzaW5jZSBwdHJhY2Uu aCBpbiBvbGRlciBsaWJjIChmb3IgaW5zdGFuY2UKKyAvLyB0aGUgb25lIGluIFVidW50dSAxNi4w NCBMVFMpIGlzIG1pc3NpbmcgUFRSQUNFX0dFVF9USFJFQURfQVJFQS4KKyAvLyBhc20vcHRyYWNl LWFiaS5oIGRvZXNuJ3QgZXhpc3Qgb24gYXJtMzIgYW5kIFBUUkFDRV9HRVRfVEhSRUFEX0FSRUEg aXNuJ3QKK0BAIC00NCw2ICs0NCwxMSBAQAorICNlbmRpZgorICNlbmRpZiAgLy8gIU9TX05BQ0xf Tk9OU0ZJCisgCisrLy8gT24gUFBDNjQsIFRDR0VUUyBpcyBkZWZpbmVkIGluIHRlcm1zIG9mIHN0 cnVjdCB0ZXJtaW9zLCBzbyB3ZSBtdXN0IGluY2x1ZGUgdGVybWlvcy5oCisrI2lmZGVmIF9fcG93 ZXJwYzY0X18KKysjaW5jbHVkZSA8dGVybWlvcy5oPgorKyNlbmRpZgorKworICNpZiBkZWZpbmVk KE9TX0FORFJPSUQpCisgCisgI2lmICFkZWZpbmVkKEZfRFVQRkRfQ0xPRVhFQykKK0BAIC0xMDYs NiArMTExLDE1IEBAIGlubGluZSBib29sIElzQXJjaGl0ZWN0dXJlTWlwcygpIHsKKyAjZW5kaWYK KyB9CisgCisraW5saW5lIGJvb2wgSXNBcmNoaXRlY3R1cmVQUEM2NCgpIHsKKysjaWYgZGVmaW5l ZChfX3Bvd2VycGM2NF9fKQorKyAgcmV0dXJuIHRydWU7CisrI2Vsc2UKKysgIHJldHVybiBmYWxz ZTsKKysjZW5kaWYKKyt9CisrCisrCisgLy8gVWJ1bnR1J3MgdmVyc2lvbiBvZiBnbGliYyBoYXMg YSByYWNlIGNvbmRpdGlvbiBpbiBzZW1fcG9zdCB0aGF0IGNhbiBjYXVzZQorIC8vIGl0IHRvIGNh bGwgZnV0ZXgoMikgd2l0aCBib2d1cyBvcCBhcmd1bWVudHMuIFRvIHdvcmthcm91bmQgdGhpcywg d2UgbmVlZAorIC8vIHRvIGFsbG93IHRob3NlIGZ1dGV4KDIpIGNhbGxzIHRvIGZhaWwgd2l0aCBF SU5WQUwsIGluc3RlYWQgb2YgY3Jhc2hpbmcgdGhlCitAQCAtMjQ3LDcgKzI2MSw4IEBAIFJlc3Vs dEV4cHIgUmVzdHJpY3RGY250bENvbW1hbmRzKCkgeworICAgLy8gb3BlcmF0b3IuCisgICAvLyBH bGliYyBvdmVycmlkZXMgdGhlIGtlcm5lbCdzIE9fTEFSR0VGSUxFIHZhbHVlLiBBY2NvdW50IGZv ciB0aGlzLgorICAgdWludDY0X3Qga09MYXJnZUZpbGVGbGFnID0gT19MQVJHRUZJTEU7CistICBp ZiAoSXNBcmNoaXRlY3R1cmVYODZfNjQoKSB8fCBJc0FyY2hpdGVjdHVyZUkzODYoKSB8fCBJc0Fy Y2hpdGVjdHVyZU1pcHMoKSkKKysgIGlmIChJc0FyY2hpdGVjdHVyZVg4Nl82NCgpIHx8IElzQXJj aGl0ZWN0dXJlSTM4NigpIHx8IElzQXJjaGl0ZWN0dXJlTWlwcygpIFwKKysgICAgICB8fCBJc0Fy Y2hpdGVjdHVyZVBQQzY0KCkpCisgICAgIGtPTGFyZ2VGaWxlRmxhZyA9IDAxMDAwMDA7CisgCisg ICBjb25zdCBBcmc8aW50PiBjbWQoMSk7CitAQCAtMjcwLDcgKzI4NSw3IEBAIFJlc3VsdEV4cHIg UmVzdHJpY3RGY250bENvbW1hbmRzKCkgeworICAgICAgIC5EZWZhdWx0KENyYXNoU0lHU1lTKCkp OworIH0KKyAKKy0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX21pcHNfXykKKysj aWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgZGVmaW5lZChfX3Bv d2VycGM2NF9fKQorIFJlc3VsdEV4cHIgUmVzdHJpY3RTb2NrZXRjYWxsQ29tbWFuZCgpIHsKKyAg IC8vIFVuZm9ydHVuYXRlbHksIHdlIGFyZSB1bmFibGUgdG8gcmVzdHJpY3QgdGhlIGZpcnN0IHBh cmFtZXRlciB0bworICAgLy8gc29ja2V0cGFpcigyKS4gV2hpbHN0IGluaXRpYWxseSBzb3VuZGlu ZyBiYWQsIGl0J3Mgbm90ZXdvcnRoeSB0aGF0IHZlcnkKK0BAIC00MjEsNyArNDIyLDcgQEAgUmVz dWx0RXhwciBSZXN0cmljdFBybGltaXQocGlkX3QgdGFyZ2V0X3BpZCkgeworIFJlc3VsdEV4cHIg UmVzdHJpY3RQdHJhY2UoKSB7CisgICBjb25zdCBBcmc8aW50PiByZXF1ZXN0KDApOworICAgcmV0 dXJuIFN3aXRjaChyZXF1ZXN0KS5DQVNFUygoCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKQor KyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgIWRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAg ICAgICAgIFBUUkFDRV9HRVRSRUdTLAorICAgICAgICAgUFRSQUNFX0dFVEZQUkVHUywKKyAgICAg ICAgIFBUUkFDRV9HRVRfVEhSRUFEX0FSRUEsCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3BhcmFt ZXRlcnNfcmVzdHJpY3Rpb25zLmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfcGFyYW1ldGVyc19y ZXN0cmljdGlvbnMuaAorQEAgLTQ4LDcgKzQ4LDcgQEAgU0FOREJPWF9FWFBPUlQgYnBmX2RzbDo6 UmVzdWx0RXhwciBSZXN0cmljdE1wcm90ZWN0RmxhZ3MoKTsKKyAvLyBPX05PTkJMT0NLIHwgT19T WU5DIHwgT19MQVJHRUZJTEUgfCBPX0NMT0VYRUMgfCBPX05PQVRJTUUuCisgU0FOREJPWF9FWFBP UlQgYnBmX2RzbDo6UmVzdWx0RXhwciBSZXN0cmljdEZjbnRsQ29tbWFuZHMoKTsKKyAKKy0jaWYg ZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX21pcHNfXykKKysjaWYgZGVmaW5lZChfX2kz ODZfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorIC8v IFJlc3RyaWN0IHNvY2tldGNhbGwoMikgdG8gb25seSBhbGxvdyBzb2NrZXRwYWlyKDIpLCBzZW5k KDIpLCByZWN2KDIpLAorIC8vIHNlbmR0bygyKSwgcmVjdmZyb20oMiksIHNodXRkb3duKDIpLCBz ZW5kbXNnKDIpIGFuZCByZWN2bXNnKDIpLgorIFNBTkRCT1hfRVhQT1JUIGJwZl9kc2w6OlJlc3Vs dEV4cHIgUmVzdHJpY3RTb2NrZXRjYWxsQ29tbWFuZCgpOworLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2Fs bF9zZXRzLmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gv bGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3NldHMuY2MKK0BAIC0yOSw3ICsyOSw4 IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEdldHRpbWUoaW50IHN5c25vKSB7CisgICBz d2l0Y2ggKHN5c25vKSB7CisgICAgIGNhc2UgX19OUl9nZXR0aW1lb2ZkYXk6CisgI2lmIGRlZmlu ZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgXAorLSAgICAoZGVmaW5lZChB UkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKKysgICAg KGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklU UykpIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfdGlt ZToKKyAjZW5kaWYKKyAgICAgICByZXR1cm4gdHJ1ZTsKK0BAIC00NSw3ICs0Niw4IEBAIGJvb2wg U3lzY2FsbFNldHM6OklzQWxsb3dlZEdldHRpbWUoaW50IHN5c25vKSB7CisgI2VuZGlmCisgICAg IGNhc2UgX19OUl9zZXR0aW1lb2ZkYXk6ICAvLyBQcml2aWxlZ2VkLgorICNpZiBkZWZpbmVkKF9f aTM4Nl9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZp bmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlM WSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9zdGltZToKKyAjZW5kaWYKKyAgICAgZGVmYXVsdDoK K0BAIC0xMTEsNyArMTEzLDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNGaWxlU3lzdGVtKGludCBz eXNubykgeworICAgICBjYXNlIF9fTlJfZmFjY2Vzc2F0OiAgLy8gRVBFUk0gbm90IGEgdmFsaWQg ZXJybm8uCisgICAgIGNhc2UgX19OUl9mY2htb2RhdDoKKyAgICAgY2FzZSBfX05SX2ZjaG93bmF0 OiAgLy8gU2hvdWxkIGJlIGNhbGxlZCBjaG93bmF0ID8KKy0jaWYgZGVmaW5lZChfX3g4Nl82NF9f KSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKQorKyNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRl ZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBf X05SX25ld2ZzdGF0YXQ6ICAvLyBmc3RhdGF0KCkuIEVQRVJNIG5vdCBhIHZhbGlkIGVycm5vLgor ICNlbGlmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgXAorICAgICAo ZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRT KSkKK0BAIC0xMzAsNyArMTMyLDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNGaWxlU3lzdGVtKGlu dCBzeXNubykgeworICAgICBjYXNlIF9fTlJfbWVtZmRfY3JlYXRlOgorICAgICBjYXNlIF9fTlJf bWtkaXJhdDoKKyAgICAgY2FzZSBfX05SX21rbm9kYXQ6CistI2lmIGRlZmluZWQoX19pMzg2X18p CisrI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAg Y2FzZSBfX05SX29sZGxzdGF0OgorICAgICBjYXNlIF9fTlJfb2xkc3RhdDoKKyAjZW5kaWYKK0BA IC0xNTQsNyArMTU2LDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNGaWxlU3lzdGVtKGludCBzeXNu bykgeworICAgICBjYXNlIF9fTlJfdHJ1bmNhdGU2NDoKKyAjZW5kaWYKKyAgICAgY2FzZSBfX05S X3VubGlua2F0OgorLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18p IHx8IGRlZmluZWQoX19taXBzX18pCisrI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQo X194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl91dGltZToKKyAjZW5kaWYKKyAgICAgY2FzZSBfX05S X3V0aW1lbnNhdDogIC8vIE5ldy4KK0BAIC0xNzMsNyArMTc2LDggQEAgYm9vbCBTeXNjYWxsU2V0 czo6SXNBbGxvd2VkRmlsZVN5c3RlbUFjY2Vzc1ZpYUZkKGludCBzeXNubykgeworICNlbmRpZgor ICAgICAgIHJldHVybiB0cnVlOworIC8vIFRPRE8oamxuKTogdGhlc2Ugc2hvdWxkIGJlIGRlbmll ZCBncmFjZWZ1bGx5IGFzIHdlbGwgKG1vdmVkIGJlbG93KS4KKy0jaWYgZGVmaW5lZChfX2kzODZf XykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQorKyNpZiBkZWZp bmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18p IHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfZmFkdmlz ZTY0OiAgLy8gRVBFUk0gbm90IGEgdmFsaWQgZXJybm8uCisgI2VuZGlmCisgI2lmIGRlZmluZWQo X19pMzg2X18pCitAQCAtMTg2LDcgKzE5MCw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dl ZEZpbGVTeXN0ZW1BY2Nlc3NWaWFGZChpbnQgc3lzbm8pIHsKKyAgICAgY2FzZSBfX05SX2Zsb2Nr OiAgICAgIC8vIEVQRVJNIG5vdCBhIHZhbGlkIGVycm5vLgorICAgICBjYXNlIF9fTlJfZnN0YXRm czogICAgLy8gR2l2ZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgd2hvbGUgZmlsZXN5c3RlbS4KKyAj aWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBcCistICAgIChkZWZp bmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQor KyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8z Ml9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19O Ul9mc3RhdGZzNjQ6CisgI2VuZGlmCisgICAgIGNhc2UgX19OUl9mc3luYzogIC8vIEVQRVJNIG5v dCBhIHZhbGlkIGVycm5vLgorQEAgLTE5OCw2ICsyMDMsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJ c0FsbG93ZWRGaWxlU3lzdGVtQWNjZXNzVmlhRmQoaW50IHN5c25vKSB7CisgICAgIGNhc2UgX19O Ul9zeW5jX2ZpbGVfcmFuZ2U6ICAvLyBFUEVSTSBub3QgYSB2YWxpZCBlcnJuby4KKyAjZWxpZiBk ZWZpbmVkKF9fYXJtX18pCisgICAgIGNhc2UgX19OUl9hcm1fc3luY19maWxlX3JhbmdlOiAgLy8g RVBFUk0gbm90IGEgdmFsaWQgZXJybm8uCisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQor KyAgICBjYXNlIF9fTlJfc3luY19maWxlX3JhbmdlMjogLy8gRVBFUk0gbm90IGEgdmFsaWQgZXJy bm8uCisgI2VuZGlmCisgICAgIGRlZmF1bHQ6CisgICAgICAgcmV0dXJuIGZhbHNlOworQEAgLTIy Myw3ICsyMzAsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0RlbmllZEZpbGVTeXN0ZW1BY2Nlc3NW aWFGZChpbnQgc3lzbm8pIHsKKyAjZW5kaWYKKyAgICAgY2FzZSBfX05SX2dldGRlbnRzNjQ6ICAv LyBFUEVSTSBub3QgYSB2YWxpZCBlcnJuby4KKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAor LSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8z Ml9CSVRTKSkKKysgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQo QVJDSF9DUFVfMzJfQklUUykpIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAg ICBjYXNlIF9fTlJfcmVhZGRpcjoKKyAjZW5kaWYKKyAgICAgICByZXR1cm4gdHJ1ZTsKK0BAIC0y NjQsNyArMjcyLDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNHZXRTaW1wbGVJZChpbnQgc3lzbm8p IHsKKyBib29sIFN5c2NhbGxTZXRzOjpJc1Byb2Nlc3NQcml2aWxlZ2VDaGFuZ2UoaW50IHN5c25v KSB7CisgICBzd2l0Y2ggKHN5c25vKSB7CisgICAgIGNhc2UgX19OUl9jYXBzZXQ6CistI2lmIGRl ZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykKKysjaWYgZGVmaW5lZChfX2kz ODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisg ICAgIGNhc2UgX19OUl9pb3Blcm06ICAvLyBJbnRlbCBwcml2aWxlZ2UuCisgICAgIGNhc2UgX19O Ul9pb3BsOiAgICAvLyBJbnRlbCBwcml2aWxlZ2UuCisgI2VuZGlmCitAQCAtMzE0LDcgKzMyMiw4 IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZFNpZ25hbEhhbmRsaW5nKGludCBzeXNubykg eworICAgICBjYXNlIF9fTlJfcnRfc2lncHJvY21hc2s6CisgICAgIGNhc2UgX19OUl9ydF9zaWdy ZXR1cm46CisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgXAor LSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8z Ml9CSVRTKSkKKysgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQo QVJDSF9DUFVfMzJfQklUUykpIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAg ICBjYXNlIF9fTlJfc2lnYWN0aW9uOgorICAgICBjYXNlIF9fTlJfc2lncHJvY21hc2s6CisgICAg IGNhc2UgX19OUl9zaWdyZXR1cm46CitAQCAtMzMxLDcgKzM0MCw4IEBAIGJvb2wgU3lzY2FsbFNl dHM6OklzQWxsb3dlZFNpZ25hbEhhbmRsaW5nKGludCBzeXNubykgeworICNlbmRpZgorICAgICBj YXNlIF9fTlJfc2lnbmFsZmQ0OgorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9f YXJtX18pIHx8IFwKKy0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmlu ZWQoQVJDSF9DUFVfMzJfQklUUykpCisrICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZ KSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCisrICAgIGRlZmluZWQoX19wb3dl cnBjNjRfXykKKyAgICAgY2FzZSBfX05SX3NpZ3BlbmRpbmc6CisgICAgIGNhc2UgX19OUl9zaWdz dXNwZW5kOgorICNlbmRpZgorQEAgLTM1NSw3ICszNjUsNyBAQCBib29sIFN5c2NhbGxTZXRzOjpJ c0FsbG93ZWRPcGVyYXRpb25PbkZkKGludCBzeXNubykgeworICNlbmRpZgorICAgICBjYXNlIF9f TlJfZHVwMzoKKyAjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8 IGRlZmluZWQoX19taXBzX18pIHx8IFwKKy0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykKKysgICAg ZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNl IF9fTlJfc2h1dGRvd246CisgI2VuZGlmCisgICAgICAgcmV0dXJuIHRydWU7CitAQCAtMzg5LDcg KzM5OSw3IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZFByb2Nlc3NTdGFydE9yRGVhdGgo aW50IHN5c25vKSB7CisgICAgIGNhc2UgX19OUl9tZW1iYXJyaWVyOgorICAgICBjYXNlIF9fTlJf d2FpdDQ6CisgICAgIGNhc2UgX19OUl93YWl0aWQ6CistI2lmIGRlZmluZWQoX19pMzg2X18pCisr I2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2Fz ZSBfX05SX3dhaXRwaWQ6CisgI2VuZGlmCisgI2lmICFkZWZpbmVkKF9fR0xJQkNfXykKK0BAIC00 MTEsNyArNDIxLDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkUHJvY2Vzc1N0YXJ0T3JE ZWF0aChpbnQgc3lzbm8pIHsKKyAgICAgY2FzZSBfX05SX3NldF90aWRfYWRkcmVzczoKKyAjZW5k aWYKKyAgICAgY2FzZSBfX05SX3Vuc2hhcmU6CistI2lmICFkZWZpbmVkKF9fbWlwc19fKSAmJiAh ZGVmaW5lZChfX2FhcmNoNjRfXykKKysjaWYgIWRlZmluZWQoX19taXBzX18pICYmICFkZWZpbmVk KF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl92 Zm9yazoKKyAjZW5kaWYKKyAgICAgZGVmYXVsdDoKK0BAIC00NjAsNyArNDcwLDcgQEAgYm9vbCBT eXNjYWxsU2V0czo6SXNBbGxvd2VkR2V0T3JNb2RpZnlTb2NrZXQoaW50IHN5c25vKSB7CisgICAg ICAgcmV0dXJuIHRydWU7CisgICAgIGRlZmF1bHQ6CisgI2lmIGRlZmluZWQoX194ODZfNjRfXykg fHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCistICAgIGRlZmlu ZWQoX19hYXJjaDY0X18pCisrICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19w b3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX3NvY2tldHBhaXI6ICAvLyBXZSB3aWxsIHdhbnQg dG8gaW5zcGVjdCBpdHMgYXJndW1lbnQuCisgI2VuZGlmCisgICAgICAgcmV0dXJuIGZhbHNlOwor QEAgLTQ3MCw3ICs0ODAsNyBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRHZXRPck1vZGlm eVNvY2tldChpbnQgc3lzbm8pIHsKKyBib29sIFN5c2NhbGxTZXRzOjpJc0RlbmllZEdldE9yTW9k aWZ5U29ja2V0KGludCBzeXNubykgeworICAgc3dpdGNoIChzeXNubykgeworICNpZiBkZWZpbmVk KF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwg XAorLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKQorKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8 fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9hY2NlcHQ6CisgICAgIGNh c2UgX19OUl9hY2NlcHQ0OgorICAgICBjYXNlIF9fTlJfYmluZDoKK0BAIC00ODUsNyArNDk1LDgg QEAgYm9vbCBTeXNjYWxsU2V0czo6SXNEZW5pZWRHZXRPck1vZGlmeVNvY2tldChpbnQgc3lzbm8p IHsKKyB9CisgCisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwKKy0gICAgKGRlZmluZWQoQVJD SF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCisrICAgIChk ZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMp KSB8fCBcCisrICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAvLyBCaWcgbXVsdGlwbGV4aW5n IHN5c3RlbSBjYWxsIGZvciBzb2NrZXRzLgorIGJvb2wgU3lzY2FsbFNldHM6OklzU29ja2V0Q2Fs bChpbnQgc3lzbm8pIHsKKyAgIHN3aXRjaCAoc3lzbm8pIHsKK0BAIC00OTksNyArNTEwLDggQEAg Ym9vbCBTeXNjYWxsU2V0czo6SXNTb2NrZXRDYWxsKGludCBzeXNubykgeworIH0KKyAjZW5kaWYK KyAKKy0jaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmlu ZWQoX19taXBzX18pCisrI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9f KSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCisrICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykK KyBib29sIFN5c2NhbGxTZXRzOjpJc05ldHdvcmtTb2NrZXRJbmZvcm1hdGlvbihpbnQgc3lzbm8p IHsKKyAgIHN3aXRjaCAoc3lzbm8pIHsKKyAgICAgY2FzZSBfX05SX2dldHBlZXJuYW1lOgorQEAg LTUyNyw3ICs1MzksNyBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRBZGRyZXNzU3BhY2VB Y2Nlc3MoaW50IHN5c25vKSB7CisgICAgIGNhc2UgX19OUl9taW5jb3JlOgorICAgICBjYXNlIF9f TlJfbWxvY2thbGw6CisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRf XykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAorLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKQor KyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAg IGNhc2UgX19OUl9tbWFwOgorICNlbmRpZgorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZp bmVkKF9fYXJtX18pIHx8IFwKK0BAIC01NTksNyArNTcxLDggQEAgYm9vbCBTeXNjYWxsU2V0czo6 SXNBbGxvd2VkR2VuZXJhbElvKGludCBzeXNubykgeworICAgc3dpdGNoIChzeXNubykgeworICAg ICBjYXNlIF9fTlJfbHNlZWs6CisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19h cm1fXykgfHwgXAorLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5l ZChBUkNIX0NQVV8zMl9CSVRTKSkKKysgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkp ICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKQorICAgICBjYXNlIF9fTlJfX2xsc2VlazoKKyAjZW5kaWYKKyAjaWYgIWRlZmluZWQo X19hYXJjaDY0X18pCitAQCAtNTcxLDI2ICs1ODQsMjggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNB bGxvd2VkR2VuZXJhbElvKGludCBzeXNubykgeworICAgICBjYXNlIF9fTlJfcmVhZHY6CisgICAg IGNhc2UgX19OUl9wcmVhZDY0OgorICNpZiBkZWZpbmVkKF9fYXJtX18pIHx8IFwKKy0gICAgKGRl ZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykp CisrICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BV XzMyX0JJVFMpKSB8fCBcCisrICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBf X05SX3JlY3Y6CisgI2VuZGlmCisgI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChf X2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCistICAgIGRlZmluZWQoX19hYXJjaDY0 X18pCisrICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykK KyAgICAgY2FzZSBfX05SX3JlY3Zmcm9tOiAgLy8gQ291bGQgc3BlY2lmeSBzb3VyY2UuCisgICAg IGNhc2UgX19OUl9yZWN2bXNnOiAgIC8vIENvdWxkIHNwZWNpZnkgc291cmNlLgorICNlbmRpZgor LSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pCisrI2lmIGRlZmlu ZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2 NF9fKQorICAgICBjYXNlIF9fTlJfc2VsZWN0OgorICNlbmRpZgorLSNpZiBkZWZpbmVkKF9faTM4 Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBzX18pCisrI2lmIGRlZmlu ZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfX25ld3NlbGVjdDoKKyAjZW5k aWYKKyAjaWYgZGVmaW5lZChfX2FybV9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01J UFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChB UkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAor KyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9zZW5kOgorICNlbmRp ZgorICNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5l ZChfX21pcHNfXykgfHwgXAorLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKQorKyAgICBkZWZpbmVk KF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9z ZW5kbXNnOiAgLy8gQ291bGQgc3BlY2lmeSBkZXN0aW5hdGlvbi4KKyAgICAgY2FzZSBfX05SX3Nl bmR0bzogICAvLyBDb3VsZCBzcGVjaWZ5IGRlc3RpbmF0aW9uLgorICNlbmRpZgorQEAgLTY0Nyw3 ICs2NjIsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRCYXNpY1NjaGVkdWxlcihpbnQg c3lzbm8pIHsKKyAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgY2FzZSBfX05SX2dldHByaW9yaXR5 OgorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IFwKKy0gICAg KGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklU UykpCisrICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hf Q1BVXzMyX0JJVFMpKSB8fCBcCisrICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2Fz ZSBfX05SX25pY2U6CisgI2VuZGlmCisgICAgIGNhc2UgX19OUl9zZXRwcmlvcml0eToKK0BAIC02 NTksNyArNjc1LDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkQmFzaWNTY2hlZHVsZXIo aW50IHN5c25vKSB7CisgYm9vbCBTeXNjYWxsU2V0czo6SXNBZG1pbk9wZXJhdGlvbihpbnQgc3lz bm8pIHsKKyAgIHN3aXRjaCAoc3lzbm8pIHsKKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVm aW5lZChfX2FybV9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAm JiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBT X0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9iZGZsdXNoOgorICNlbmRpZgorICAgICBj YXNlIF9fTlJfa2V4ZWNfbG9hZDoKK0BAIC02NzUsNyArNjkyLDggQEAgYm9vbCBTeXNjYWxsU2V0 czo6SXNBZG1pbk9wZXJhdGlvbihpbnQgc3lzbm8pIHsKKyAKKyBib29sIFN5c2NhbGxTZXRzOjpJ c0tlcm5lbE1vZHVsZShpbnQgc3lzbm8pIHsKKyAgIHN3aXRjaCAoc3lzbm8pIHsKKy0jaWYgZGVm aW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19f KQorKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmlu ZWQoX19taXBzX18pIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNl IF9fTlJfY3JlYXRlX21vZHVsZToKKyAgICAgY2FzZSBfX05SX2dldF9rZXJuZWxfc3ltczogIC8v IFNob3VsZCBFTk9TWVMuCisgICAgIGNhc2UgX19OUl9xdWVyeV9tb2R1bGU6CitAQCAtNzA4LDcg KzcyNiw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzRnNDb250cm9sKGludCBzeXNubykgeworICAg ICBjYXNlIF9fTlJfc3dhcG9mZjoKKyAgICAgY2FzZSBfX05SX3N3YXBvbjoKKyAjaWYgZGVmaW5l ZChfX2kzODZfXykgfHwgXAorLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYg ZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKKysgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19G QU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKKysgICAgZGVmaW5lZChf X3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfdW1vdW50OgorICNlbmRpZgorICAgICBjYXNl IF9fTlJfdW1vdW50MjoKK0BAIC03MjQsNyArNzQzLDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNO dW1hKGludCBzeXNubykgeworICAgICBjYXNlIF9fTlJfZ2V0Y3B1OgorICAgICBjYXNlIF9fTlJf bWJpbmQ6CisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwg ZGVmaW5lZChfX21pcHNfXykgfHwgXAorLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKQorKyAgICBk ZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2Ug X19OUl9taWdyYXRlX3BhZ2VzOgorICNlbmRpZgorICAgICBjYXNlIF9fTlJfbW92ZV9wYWdlczoK K0BAIC03NTMsMTQgKzc3MiwxNSBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0dsb2JhbFByb2Nlc3NF bnZpcm9ubWVudChpbnQgc3lzbm8pIHsKKyAgIHN3aXRjaCAoc3lzbm8pIHsKKyAgICAgY2FzZSBf X05SX2FjY3Q6ICAvLyBQcml2aWxlZ2VkLgorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZp bmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKKy0gICAgZGVmaW5lZChf X2FhcmNoNjRfXykKKysgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKQorICAgICBjYXNlIF9fTlJfZ2V0cmxpbWl0OgorICNlbmRpZgorLSNpZiBkZWZpbmVk KF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pCisrI2lmIGRlZmluZWQoX19pMzg2X18pIHx8 IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9f TlJfdWdldHJsaW1pdDoKKyAjZW5kaWYKKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAorLSAg ICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9C SVRTKSkKKysgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJD SF9DUFVfMzJfQklUUykpIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBj YXNlIF9fTlJfdWxpbWl0OgorICNlbmRpZgorICAgICBjYXNlIF9fTlJfZ2V0cnVzYWdlOgorQEAg LTc5NCw3ICs4MTQsNyBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0dsb2JhbFN5c3RlbVN0YXR1cyhp bnQgc3lzbm8pIHsKKyAjZW5kaWYKKyAgICAgY2FzZSBfX05SX3N5c2luZm86CisgICAgIGNhc2Ug X19OUl91bmFtZToKKy0jaWYgZGVmaW5lZChfX2kzODZfXykKKysjaWYgZGVmaW5lZChfX2kzODZf XykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfb2xkdW5hbWU6Cisg ICAgIGNhc2UgX19OUl9vbGRvbGR1bmFtZToKKyAjZW5kaWYKK0BAIC04ODgsNyArOTA4LDggQEAg Ym9vbCBTeXNjYWxsU2V0czo6SXNTeXN0ZW1WTWVzc2FnZVF1ZXVlKGludCBzeXNubykgeworICNl bmRpZgorIAorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hf Q1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVm aW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkg fHwgXAorKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgLy8gQmlnIHN5c3RlbSBWIG11bHRp cGxleGluZyBzeXN0ZW0gY2FsbC4KKyBib29sIFN5c2NhbGxTZXRzOjpJc1N5c3RlbVZJcGMoaW50 IHN5c25vKSB7CisgICBzd2l0Y2ggKHN5c25vKSB7CitAQCAtOTA4LDcgKzkyOSw4IEBAIGJvb2wg U3lzY2FsbFNldHM6OklzQW55U3lzdGVtVihpbnQgc3lzbm8pIHsKKyAgIHJldHVybiBJc1N5c3Rl bVZNZXNzYWdlUXVldWUoc3lzbm8pIHx8IElzU3lzdGVtVlNlbWFwaG9yZXMoc3lzbm8pIHx8Cisg ICAgICAgICAgSXNTeXN0ZW1WU2hhcmVkTWVtb3J5KHN5c25vKTsKKyAjZWxpZiBkZWZpbmVkKF9f aTM4Nl9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZp bmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlM WSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pCisgICByZXR1cm4gSXNTeXN0ZW1WSXBjKHN5c25vKTsKKyAjZW5kaWYKKyB9CitA QCAtOTYxLDcgKzk4Myw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzRmFOb3RpZnkoaW50IHN5c25v KSB7CisgYm9vbCBTeXNjYWxsU2V0czo6SXNUaW1lcihpbnQgc3lzbm8pIHsKKyAgIHN3aXRjaCAo c3lzbm8pIHsKKyAgICAgY2FzZSBfX05SX2dldGl0aW1lcjoKKy0jaWYgZGVmaW5lZChfX2kzODZf XykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQorKyNpZiBkZWZp bmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18p IHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfYWxhcm06 CisgI2VuZGlmCisgICAgIGNhc2UgX19OUl9zZXRpdGltZXI6CitAQCAtMTAyMCwxOCArMTA0Mywy MiBAQCBib29sIFN5c2NhbGxTZXRzOjpJc01pc2MoaW50IHN5c25vKSB7CisgICAgIGNhc2UgX19O Ul9zeW5jZnM6CisgICAgIGNhc2UgX19OUl92aGFuZ3VwOgorIC8vIFRoZSBzeXN0ZW0gY2FsbHMg YmVsb3cgYXJlIG5vdCBpbXBsZW1lbnRlZC4KKy0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVm aW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQorKyNpZiBkZWZpbmVkKF9faTM4 Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKKysg ICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfYWZzX3N5c2NhbGw6Cisg I2VuZGlmCisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwKKy0gICAgKGRlZmluZWQoQVJDSF9D UFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCisrICAgIChkZWZp bmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8 fCBcCisrICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX2JyZWFrOgor ICNlbmRpZgorLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8 IGRlZmluZWQoX19taXBzX18pCisrI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194 ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93ZXJw YzY0X18pCisgICAgIGNhc2UgX19OUl9nZXRwbXNnOgorICNlbmRpZgorICNpZiBkZWZpbmVkKF9f aTM4Nl9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZp bmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlM WSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9ndHR5OgorICAgICBjYXNlIF9fTlJfaWRsZToKKyAg ICAgY2FzZSBfX05SX2xvY2s6CitAQCAtMTAzOSwyMCArMTA2NiwyMiBAQCBib29sIFN5c2NhbGxT ZXRzOjpJc01pc2MoaW50IHN5c25vKSB7CisgICAgIGNhc2UgX19OUl9wcm9mOgorICAgICBjYXNl IF9fTlJfcHJvZmlsOgorICNlbmRpZgorLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVk KF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pCisrI2lmIGRlZmluZWQoX19pMzg2X18p IHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAorKyAgICBk ZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9wdXRwbXNnOgorICNlbmRpZgor ICNpZiBkZWZpbmVkKF9feDg2XzY0X18pCisgICAgIGNhc2UgX19OUl9zZWN1cml0eToKKyAjZW5k aWYKKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAorLSAgICAoZGVmaW5lZChBUkNIX0NQVV9N SVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKKysgICAgKGRlZmluZWQo QVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwK KysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfc3R0eToKKyAjZW5k aWYKKy0jaWYgZGVmaW5lZChfX3g4Nl82NF9fKQorKyNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8 IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX3R1eGNhbGw6CisgI2VuZGlm CistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKQorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykg JiYgIWRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX3ZzZXJ2ZXI6CisgI2Vu ZGlmCisgICAgICAgcmV0dXJuIHRydWU7CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3NldHMuaAor KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2Nv bXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmgKK0BAIC00MywxMyArNDMsMTQgQEAgY2xhc3Mg U0FOREJPWF9FWFBPUlQgU3lzY2FsbFNldHMgeworICAgc3RhdGljIGJvb2wgSXNEZW5pZWRHZXRP ck1vZGlmeVNvY2tldChpbnQgc3lzbm8pOworIAorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBc CistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BV XzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5l ZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisg ICAvLyBCaWcgbXVsdGlwbGV4aW5nIHN5c3RlbSBjYWxsIGZvciBzb2NrZXRzLgorICAgc3RhdGlj IGJvb2wgSXNTb2NrZXRDYWxsKGludCBzeXNubyk7CisgI2VuZGlmCisgCisgI2lmIGRlZmluZWQo X194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBc CistICAgIGRlZmluZWQoX19hYXJjaDY0X18pCisrICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8 IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgIHN0YXRpYyBib29sIElzTmV0d29ya1NvY2tldElu Zm9ybWF0aW9uKGludCBzeXNubyk7CisgI2VuZGlmCisgCitAQCAtODcsNyArODgsOCBAQCBjbGFz cyBTQU5EQk9YX0VYUE9SVCBTeXNjYWxsU2V0cyB7CisgI2VuZGlmCisgCisgI2lmIGRlZmluZWQo X19pMzg2X18pIHx8IFwKKy0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRl ZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCisrICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFN SUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCisrICAgIGRlZmluZWQoX19w b3dlcnBjNjRfXykKKyAgIC8vIEJpZyBzeXN0ZW0gViBtdWx0aXBsZXhpbmcgc3lzdGVtIGNhbGwu CisgICBzdGF0aWMgYm9vbCBJc1N5c3RlbVZJcGMoaW50IHN5c25vKTsKKyAjZW5kaWYKKy0tLSBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJw Zi9zeXNjYWxsLmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRi b3gvbGludXgvc2VjY29tcC1icGYvc3lzY2FsbC5jYworQEAgLTE2LDcgKzE2LDcgQEAgbmFtZXNw YWNlIHNhbmRib3ggeworIG5hbWVzcGFjZSB7CisgCisgI2lmIGRlZmluZWQoQVJDSF9DUFVfWDg2 X0ZBTUlMWSkgfHwgZGVmaW5lZChBUkNIX0NQVV9BUk1fRkFNSUxZKSB8fCBcCistICAgIGRlZmlu ZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCisrICAgIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1J TFkpIHx8IGRlZmluZWQgKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKyAvLyBOdW1iZXIgdGhhdCdz IG5vdCBjdXJyZW50bHkgdXNlZCBieSBhbnkgTGludXgga2VybmVsIEFCSXMuCisgY29uc3QgaW50 IGtJbnZhbGlkU3lzY2FsbE51bWJlciA9IDB4MzUxZDM7CisgI2Vsc2UKK0BAIC0zMDgsMTIgKzMw OCw1NiBAQCBhc20oLy8gV2UgbmVlZCB0byBiZSBhYmxlIHRvIHRlbGwgdGhlIGtlcm5lbCBleGFj dGx5IHdoZXJlIHdlIG1hZGUgYQorICAgICAvLyBFbnRlciB0aGUga2VybmVsCisgICAgICJzdmMg MFxuIgorICAgICAiMjpyZXRcbiIKKysgICAgIi5jZmlfZW5kcHJvY1xuIgorKyAgICAiLnNpemUg U3lzY2FsbEFzbSwgLi1TeXNjYWxsQXNtXG4iCisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9f KQorKyAgICAiLnRleHRcbiIKKysgICAgIi5hbGlnbiA0XG4iCisrICAgICIudHlwZSBTeXNjYWxs QXNtIEBmdW5jdGlvblxuIgorKyAgICAiU3lzY2FsbEFzbTpcbiIKKysgICAgIi5jZmlfc3RhcnRw cm9jXG4iCisrCisrICAgIC8vIENoZWNrIGlmIHIzIGlzIG5lZ2F0aXZlCisrICAgICJjbXBkaSAz LCAwXG4iCisrICAgICJiZ3QgMmZcbiIKKysKKysgICAgLy8gTG9hZCBhZGRyZXNzIG9mIDNmIGlu dG8gcjMgYW5kIHJldHVybgorKyAgICAibWZsciAxMFxuIgorKyAgICAiYmwgMWZcbiIKKysgICAg IjE6IG1mbHIgM1xuIgorKyAgICAibXRsciAxMFxuIgorKyAgICAiYWRkaSAzLCAzLCA0KjEzXG4i CisrICAgICJibHJcbiIKKysKKysgICAgLy8gTG9hZCBhcmd1bWVudHMgZnJvbSBhcnJheSBpbnRv IHIzLTgKKysgICAgLy8gc2F2ZSBwYXJhbSAzIGluIHIxMAorKyAgICAiMjpcbiIKKysgICAgIm1y IDAsIDNcbiIKKysgICAgImxkIDMsIDAoNClcbiIKKysgICAgImxkIDUsIDE2KDQpXG4iCisrICAg ICJsZCA2LCAyNCg0KVxuIgorKyAgICAibGQgNywgMzIoNClcbiIKKysgICAgImxkIDgsIDQwKDQp XG4iCisrICAgICJsZCA0LCA4KDQpXG4iCisrICAgICJsaSA5LCAwXG4iCisrCisrICAgIC8vIEVu dGVyIGtlcm5lbAorKyAgICAic2NcbiIKKysKKysgICAgLy8gTWFnaWMgcmV0dXJuIGFkZHJlc3MK KysgICAgIjM6XG4iCisrICAgIC8vIExpa2UgTUlQUywgcHBjNjQgcmV0dXJuIHZhbHVlcyBhcmUg YWx3YXlzIHBvc2l0aXZlLgorKyAgICAvLyBDaGVjayBmb3IgZXJyb3IgaW4gY3IwLlNPIGFuZCBu ZWdhdGUgdXBvbiBlcnJvcgorKyAgICAiYmMgNCwgMywgNGZcbiIKKysgICAgIm5lZyAzLCAzXG4i CisrICAgICI0OiBibHJcbiIKKysKKyAgICAgIi5jZmlfZW5kcHJvY1xuIgorICAgICAiLnNpemUg U3lzY2FsbEFzbSwgLi1TeXNjYWxsQXNtXG4iCisgI2VuZGlmCisgICAgICk7ICAvLyBhc20KKyAK Ky0jaWYgZGVmaW5lZChfX3g4Nl82NF9fKQorKyNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRl ZmluZWQoX19wb3dlcnBjNjRfXykKKyBleHRlcm4gIkMiIHsKKyBpbnRwdHJfdCBTeXNjYWxsQXNt KGludHB0cl90IG5yLCBjb25zdCBpbnRwdHJfdCBhcmdzWzZdKTsKKyB9CitAQCAtNDI3LDYgKzQ3 MSw4IEBAIGludHB0cl90IFN5c2NhbGw6OkNhbGwoaW50IG5yLAorICAgICByZXQgPSBpbm91dDsK KyAgIH0KKyAKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICBpbnRwdHJfdCByZXQg PSBTeXNjYWxsQXNtKG5yLCBhcmdzKTsKKyAjZWxzZQorICNlcnJvciAiVW5pbXBsZW1lbnRlZCBh cmNoaXRlY3R1cmUiCisgI2VuZGlmCitAQCAtNDQzLDggKzQ4OSwxOCBAQCB2b2lkIFN5c2NhbGw6 OlB1dFZhbHVlSW5VY29udGV4dChpbnRwdHJfdCByZXRfdmFsLCB1Y29udGV4dF90KiBjdHgpIHsK KyAgICAgLy8gbmVlZHMgdG8gYmUgY2hhbmdlZCBiYWNrLgorICAgICByZXRfdmFsID0gLXJldF92 YWw7CisgICAgIFNFQ0NPTVBfUEFSTTQoY3R4KSA9IDE7CistICB9IGVsc2UKKysgIH0gZWxzZSB7 CisgICAgIFNFQ0NPTVBfUEFSTTQoY3R4KSA9IDA7CisrICB9CisrI2VuZGlmCisrI2lmIGRlZmlu ZWQoX19wb3dlcnBjNjRfXykKKysgIC8vIFNhbWUgYXMgTUlQUywgbmVlZCB0byBpbnZlcnQgcmV0 IGFuZCBzZXQgZXJyb3IgcmVnaXN0ZXIgKGNyMC5TTykKKysgIGlmIChyZXRfdmFsIDw9IC0xICYm IHJldF92YWwgPj0gLTQwOTUpIHsKKysgICAgcmV0X3ZhbCA9IC1yZXRfdmFsOworKyAgICBjdHgt PnVjX21jb250ZXh0LnJlZ3MtPmNjciB8PSAoMSA8PCAyOCk7CisrICB9IGVsc2UgeworKyAgICBj dHgtPnVjX21jb250ZXh0LnJlZ3MtPmNjciAmPSB+KDEgPDwgMjgpOworKyAgfQorICNlbmRpZgor ICAgU0VDQ09NUF9SRVNVTFQoY3R4KSA9IHN0YXRpY19jYXN0PGdyZWdfdD4ocmV0X3ZhbCk7Cisg fQorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3Nl Y2NvbXAtYnBmL3RyYXAuY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v c2FuZGJveC9saW51eC9zZWNjb21wLWJwZi90cmFwLmNjCitAQCAtMjMwLDYgKzIzMCwyMCBAQCB2 b2lkIFRyYXA6OlNpZ1N5cyhpbnQgbnIsIExpbnV4U2lnSW5mbyogaW5mbywgdWNvbnRleHRfdCog Y3R4KSB7CisgICAgICAgU2V0SXNJblNpZ0hhbmRsZXIoKTsKKyAgICAgfQorIAorKyNpZiBkZWZp bmVkKF9fcG93ZXJwYzY0X18pCisrICAgIC8vIE9uIHBwYzY0K2dsaWJjLCBzb21lIHN5c2NhbGxz IHNlZW0gdG8gYWNjaWRlbnRhbGx5IG5lZ2F0ZSB0aGUgZmlyc3QKKysgICAgLy8gcGFyYW1ldGVy IHdoaWNoIGNhdXNlcyBjaGVja3MgYWdhaW5zdCBpdCB0byBmYWlsLiBGb3Igbm93LCBtYW51YWxs eQorKyAgICAvLyBuZWdhdGUgdGhlbSBiYWNrLgorKyAgICAvLyBUT0RPKHNoYXduQGFuYXN0YXMu aW8pOiBpbnZlc3RpZ2F0ZSB0aGlzIGlzc3VlIGZ1cnRoZXIKKysgICAgYXV0byBuciA9IFNFQ0NP TVBfU1lTQ0FMTChjdHgpOworKyAgICBpZiAobnIgPT0gX19OUl9vcGVuYXQgfHwgbnIgPT0gX19O Ul9ta2RpcmF0IHx8IG5yID09IF9fTlJfZmFjY2Vzc2F0IHx8IG5yID09IF9fTlJfcmVhZGxpbmth dCB8fAorKyAgICAgICAgbnIgPT0gX19OUl9yZW5hbWVhdCB8fCBuciA9PSBfX05SX3JlbmFtZWF0 MiB8fCBuciA9PSBfX05SX25ld2ZzdGF0YXQgfHwgbnIgPT0gX19OUl91bmxpbmthdCkgeworKyAg ICAgICAgaWYgKHN0YXRpY19jYXN0PGludD4oU0VDQ09NUF9QQVJNMShjdHgpKSA+IDApIHsKKysg ICAgICAgICAgICBTRUNDT01QX1BBUk0xKGN0eCkgPSAtU0VDQ09NUF9QQVJNMShjdHgpOworKyAg ICAgICAgfQorKyAgICB9CisrI2VuZGlmCisrCisgICAgIC8vIENvcHkgdGhlIHNlY2NvbXAtc3Bl Y2lmaWMgZGF0YSBpbnRvIGEgYXJjaF9zZWNjb21wX2RhdGEgc3RydWN0dXJlLiBUaGlzCisgICAg IC8vIGlzIHdoYXQgd2UgYXJlIHNob3dpbmcgdG8gVHJhcEZuYyBjYWxsYmFja3MgdGhhdCB0aGUg c3lzdGVtIGNhbGwKKyAgICAgLy8gZXZhbHVhdG9yIHJlZ2lzdGVyZWQgd2l0aCB0aGUgc2FuZGJv eC4KKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9z ZXJ2aWNlcy9jcmVkZW50aWFscy5jYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS9zYW5kYm94L2xpbnV4L3NlcnZpY2VzL2NyZWRlbnRpYWxzLmNjCitAQCAtNzksNyArNzks NyBAQCBib29sIENocm9vdFRvU2FmZUVtcHR5RGlyKCkgeworICAgcGlkX3QgcGlkID0gLTE7Cisg ICBhbGlnbmFzKDE2KSBjaGFyIHN0YWNrX2J1ZltQVEhSRUFEX1NUQUNLX01JTl07CisgI2lmIGRl ZmluZWQoQVJDSF9DUFVfWDg2X0ZBTUlMWSkgfHwgZGVmaW5lZChBUkNIX0NQVV9BUk1fRkFNSUxZ KSB8fCBcCistICAgIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCisrICAgIGRlZmluZWQo QVJDSF9DUFVfTUlQU19GQU1JTFkpIHx8IGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQor ICAgLy8gVGhlIHN0YWNrIGdyb3dzIGRvd253YXJkLgorICAgdm9pZCogc3RhY2sgPSBzdGFja19i dWYgKyBzaXplb2Yoc3RhY2tfYnVmKTsKKyAjZWxzZQorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3N5c2NhbGxfYnJva2VyL2Jyb2tlcl9wcm9jZXNz LmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgv c3lzY2FsbF9icm9rZXIvYnJva2VyX3Byb2Nlc3MuY2MKK0BAIC0xNTEsNyArMTUxLDcgQEAgYm9v bCBCcm9rZXJQcm9jZXNzOjpJc1N5c2NhbGxBbGxvd2VkKGludCBzeXNubykgY29uc3QgeworICNp ZiBkZWZpbmVkKF9fTlJfZnN0YXRhdCkKKyAgICAgY2FzZSBfX05SX2ZzdGF0YXQ6CisgI2VuZGlm CistI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykKKysjaWYg ZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9f cG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9uZXdmc3RhdGF0OgorICNlbmRpZgorICAgICAg IHJldHVybiAhZmFzdF9jaGVja19pbl9jbGllbnRfIHx8IGFsbG93ZWRfY29tbWFuZF9zZXRfLnRl c3QoQ09NTUFORF9TVEFUKTsKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v c2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51eF9zZWNjb21wLmgKKysrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9s aW51eF9zZWNjb21wLmgKK0BAIC0yOSw2ICsyOSw5IEBACisgI2lmbmRlZiBFTV9BQVJDSDY0Cisg I2RlZmluZSBFTV9BQVJDSDY0IDE4MworICNlbmRpZgorKyNpZm5kZWYgRU1fUFBDNjQKKysjZGVm aW5lIEVNX1BQQzY0IDIxCisrI2VuZGlmCisgCisgI2lmbmRlZiBfX0FVRElUX0FSQ0hfNjRCSVQK KyAjZGVmaW5lIF9fQVVESVRfQVJDSF82NEJJVCAweDgwMDAwMDAwCitAQCAtNTQsNiArNTcsMTIg QEAKKyAjaWZuZGVmIEFVRElUX0FSQ0hfQUFSQ0g2NAorICNkZWZpbmUgQVVESVRfQVJDSF9BQVJD SDY0IChFTV9BQVJDSDY0IHwgX19BVURJVF9BUkNIXzY0QklUIHwgX19BVURJVF9BUkNIX0xFKQor ICNlbmRpZgorKyNpZm5kZWYgQVVESVRfQVJDSF9QUEM2NAorKyNkZWZpbmUgQVVESVRfQVJDSF9Q UEM2NCAoRU1fUFBDNjQgfCBfX0FVRElUX0FSQ0hfNjRCSVQpCisrI2VuZGlmCisrI2lmbmRlZiBB VURJVF9BUkNIX1BQQzY0TEUKKysjZGVmaW5lIEFVRElUX0FSQ0hfUFBDNjRMRSAoRU1fUFBDNjQg fCBfX0FVRElUX0FSQ0hfNjRCSVQgfCBfX0FVRElUX0FSQ0hfTEUpCisrI2VuZGlmCisgCisgLy8g Rm9yIHByY3RsLmgKKyAjaWZuZGVmIFBSX1NFVF9TRUNDT01QCistLS0gcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGludXhfc2ln bmFsLmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51 eC9zeXN0ZW1faGVhZGVycy9saW51eF9zaWduYWwuaAorQEAgLTEzLDcgKzEzLDcgQEAKKyAvLyAo bm90IHVuZGVmaW5lZCwgYnV0IGRlZmluZWQgZGlmZmVyZW50IHZhbHVlcyBhbmQgaW4gZGlmZmVy ZW50IG1lbW9yeQorIC8vIGxheW91dHMpLiBTbywgZmlsbCB0aGUgZ2FwIGhlcmUuCisgI2lmIGRl ZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9f KSB8fCBcCistICAgIGRlZmluZWQoX19hYXJjaDY0X18pCisrICAgIGRlZmluZWQoX19hYXJjaDY0 X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAKKyAjZGVmaW5lIExJTlVYX1NJR0hVUCAx CisgI2RlZmluZSBMSU5VWF9TSUdJTlQgMgorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3N5c2NhbGxzLmgKKysr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zeXN0ZW1f aGVhZGVycy9saW51eF9zeXNjYWxscy5oCitAQCAtMzUsNSArMzUsOSBAQAorICNpbmNsdWRlICJz YW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2FybTY0X2xpbnV4X3N5c2NhbGxzLmgiCisgI2Vu ZGlmCisgCisrI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysjaW5jbHVkZSAic2FuZGJveC9s aW51eC9zeXN0ZW1faGVhZGVycy9wcGM2NF9saW51eF9zeXNjYWxscy5oIgorKyNlbmRpZgorKwor ICNlbmRpZiAgLy8gU0FOREJPWF9MSU5VWF9TWVNURU1fSEVBREVSU19MSU5VWF9TWVNDQUxMU19I XworIAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4 L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3Vjb250ZXh0LmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51eF91Y29udGV4 dC5oCitAQCAtMTEsNiArMTEsOCBAQAorICNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3N5c3RlbV9o ZWFkZXJzL2FybV9saW51eF91Y29udGV4dC5oIgorICNlbGlmIGRlZmluZWQoX19pMzg2X18pCisg I2luY2x1ZGUgInNhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvaTM4Nl9saW51eF91Y29udGV4 dC5oIgorKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysjaW5jbHVkZSAic2FuZGJveC9s aW51eC9zeXN0ZW1faGVhZGVycy9wcGM2NF9saW51eF91Y29udGV4dC5oIgorICNlbHNlCisgI2Vy cm9yICJObyBzdXBwb3J0IGZvciB5b3VyIGFyY2hpdGVjdHVyZSBpbiBQTmFDbCBoZWFkZXIiCisg I2VuZGlmCituZXcgZmlsZSBtb2RlIDEwMDY0NAorLS0tIC9kZXYvbnVsbAorKysrIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL3Bw YzY0X2xpbnV4X3N5c2NhbGxzLmgKK0BAIC0wLDAgKzEsMTIgQEAKKysvLyBDb3B5cmlnaHQgMjAx NCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysvLyBVc2Ugb2Yg dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg Y2FuIGJlCisrLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKysKKysjaWZuZGVmIFNBTkRC T1hfTElOVVhfU1lTVEVNX0hFQURFUlNfUFBDNjRfTElOVVhfU1lTQ0FMTFNfSF8KKysjZGVmaW5l IFNBTkRCT1hfTElOVVhfU1lTVEVNX0hFQURFUlNfUFBDNjRfTElOVVhfU1lTQ0FMTFNfSF8KKysK KysjaW5jbHVkZSA8YXNtL3VuaXN0ZC5oPgorKworKy8vVE9ETzogaXMgaXQgbmVjZXNzYXJ5IHRv IHJlZGVmaW5lIHN5c2NhbGwgbnVtYmVycyBmb3IgUFBDNjQ/CisrCisrI2VuZGlmICAvLyBTQU5E Qk9YX0xJTlVYX1NZU1RFTV9IRUFERVJTX1BQQzY0X0xJTlVYX1NZU0NBTExTX0hfCituZXcgZmls ZSBtb2RlIDEwMDY0NAorLS0tIC9kZXYvbnVsbAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL3BwYzY0X2xpbnV4X3Vjb250 ZXh0LmgKK0BAIC0wLDAgKzEsMTIgQEAKKysvLyBDb3B5cmlnaHQgMjAxNCBUaGUgQ2hyb21pdW0g QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisrLy8gZm91 bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKysKKysjaWZuZGVmIFNBTkRCT1hfTElOVVhfU1lTVEVN X0hFQURFUlNfUFBDNjRfTElOVVhfVUNPTlRFWFRfSF8KKysjZGVmaW5lIFNBTkRCT1hfTElOVVhf U1lTVEVNX0hFQURFUlNfUFBDNjRfTElOVVhfVUNPTlRFWFRfSF8KKysKKysjaW5jbHVkZSA8c3lz L3Vjb250ZXh0Lmg+CisrCisrLy9UT0RPOiBpcyBpdCBuZWNlc3NhcnkgdG8gcmVkZWZpbmUgdWNv bnRleHQgb24gUFBDNjQ/CisrCisrI2VuZGlmICAvLyBTQU5EQk9YX0xJTlVYX1NZU1RFTV9IRUFE RVJTX1BQQzY0X0xJTlVYX1VDT05URVhUX0hfCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3NlcnZpY2VzL3NlcnZpY2VfbWFuYWdlci9zYW5kYm94L2xpbnV4L2JwZl9yZW5k ZXJlcl9wb2xpY3lfbGludXguY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vc2VydmljZXMvc2VydmljZV9tYW5hZ2VyL3NhbmRib3gvbGludXgvYnBmX3JlbmRlcmVyX3Bv bGljeV9saW51eC5jYworQEAgLTE1LDYgKzE1LDExIEBACisgI2luY2x1ZGUgInNhbmRib3gvbGlu dXgvc3lzdGVtX2hlYWRlcnMvbGludXhfc3lzY2FsbHMuaCIKKyAjaW5jbHVkZSAic2VydmljZXMv c2VydmljZV9tYW5hZ2VyL3NhbmRib3gvbGludXgvc2FuZGJveF9saW51eC5oIgorIAorKy8vIE9u IFBQQzY0LCBUQ0dFVFMgaXMgZGVmaW5lZCBpbiB0ZXJtcyBvZiBzdHJ1Y3QgdGVybWlvcywgc28g d2UgbXVzdCBpbmNsdWRlIHRlcm1pb3MuaAorKyNpZmRlZiBfX3Bvd2VycGM2NF9fCisrI2luY2x1 ZGUgPHRlcm1pb3MuaD4KKysjZW5kaWYKKysKKyAvLyBUT0RPKHZpZ25hdHRpKTogcmVwbGFjZSB0 aGUgbG9jYWwgZGVmaW5pdGlvbnMgYmVsb3cgd2l0aCAjaW5jbHVkZQorIC8vIDxsaW51eC9kbWEt YnVmLmg+IG9uY2Uga2VybmVsIHZlcnNpb24gNC42IGJlY29tZXMgd2lkZWx5IHVzZWQuCisgI2lu Y2x1ZGUgPGxpbnV4L3R5cGVzLmg+CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2FuZ2xlL3NyYy9saWJBTkdMRS9Db25zdGFudHMuaAorKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9hbmdsZS9zcmMvbGliQU5H TEUvQ29uc3RhbnRzLmgKK0BAIC05LDYgKzksNyBAQAorICNpZm5kZWYgTElCQU5HTEVfQ09OU1RB TlRTX0hfCisgI2RlZmluZSBMSUJBTkdMRV9DT05TVEFOVFNfSF8KKyAKKysjaW5jbHVkZSA8Y3N0 ZGRlZj4KKyAjaW5jbHVkZSAiY29tbW9uL3BsYXRmb3JtLmgiCisgCisgbmFtZXNwYWNlIGdsCist LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3Nz bC9CVUlMRC5nbgorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9ib3Jpbmdzc2wvQlVJTEQuZ24KK0BAIC0xMDAsNiArMTAwLDEzIEBAIGlmIChpc193aW4g JiYgIWlzX21zYW4gJiYgY3VycmVudF9jcHUgIT0gImFybTY0IikgeworICAgICAgIH0gZWxzZSB7 CisgICAgICAgICBwdWJsaWNfY29uZmlncyA9IFsgIjpub19hc21fY29uZmlnIiBdCisgICAgICAg fQorKyAgICB9IGVsc2UgaWYgKGN1cnJlbnRfY3B1ID09ICJwcGM2NCIpIHsKKysgICAgICBpZiAo aXNfbGludXgpIHsKKysgICAgICAgICMgVE9ETzogcHBjNjQgKGJlKSBjaGVjaworKyAgICAgICAg c291cmNlcyArPSBjcnlwdG9fc291cmNlc19saW51eF9wcGM2NGxlCisrICAgICAgfSBlbHNlIHsK KysgICAgICAgIHB1YmxpY19jb25maWdzID0gWyAiOm5vX2FzbV9jb25maWciIF0KKysgICAgICB9 CisgICAgIH0gZWxzZSB7CisgICAgICAgcHVibGljX2NvbmZpZ3MgPSBbICI6bm9fYXNtX2NvbmZp ZyIgXQorICAgICB9CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29t bW9uL3Jhd19jb250ZXh0X2NwdS5oCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93 cml0ZXJfY29tbW9uL3Jhd19jb250ZXh0X2NwdS5oCitAQCAtNDQsNiArNDQsOCBAQCB0eXBlZGVm IE1EUmF3Q29udGV4dEFSTSBSYXdDb250ZXh0Q1BVOworIHR5cGVkZWYgTURSYXdDb250ZXh0QVJN NjRfT2xkIFJhd0NvbnRleHRDUFU7CisgI2VsaWYgZGVmaW5lZChfX21pcHNfXykKKyB0eXBlZGVm IE1EUmF3Q29udGV4dE1JUFMgUmF3Q29udGV4dENQVTsKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJw YzY0X18pCisrdHlwZWRlZiBNRFJhd0NvbnRleHRQUEM2NCBSYXdDb250ZXh0Q1BVOworICNlbHNl CisgI2Vycm9yICJUaGlzIGNvZGUgaGFzIG5vdCBiZWVuIHBvcnRlZCB0byB5b3VyIHBsYXRmb3Jt IHlldC4iCisgI2VuZGlmCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJf Y29tbW9uL3RocmVhZF9pbmZvLmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93 cml0ZXJfY29tbW9uL3RocmVhZF9pbmZvLmNjCitAQCAtMjcwLDcgKzI3MCw0MiBAQCB2b2lkIFRo cmVhZEluZm86OkZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUqIG91dCkgY29uc3QgeworICAg b3V0LT5mbG9hdF9zYXZlLmZpciA9IG1jb250ZXh0LmZwY19laXI7CisgI2VuZGlmCisgfQorLSNl bmRpZiAgLy8gX19taXBzX18KKysKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrCisr dWludHB0cl90IFRocmVhZEluZm86OkdldEluc3RydWN0aW9uUG9pbnRlcigpIGNvbnN0IHsKKysg ICAgcmV0dXJuIG1jb250ZXh0LmdwX3JlZ3NbUFRfTklQXTsKKyt9CisrCisrdm9pZCBUaHJlYWRJ bmZvOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVKiBvdXQpIGNvbnN0IHsKKysgICAgb3V0 LT5jb250ZXh0X2ZsYWdzID0gTURfQ09OVEVYVF9QUEM2NF9GVUxMOworKyAgICBmb3IgKGludCBp ID0gMDsgaSA8IE1EX0NPTlRFWFRfUFBDNjRfR1BSX0NPVU5UOyBpKyspCisrICAgICAgICBvdXQt PmdwcltpXSA9IG1jb250ZXh0LmdwX3JlZ3NbaV07CisrCisrICAgIG91dC0+bHIgPSBtY29udGV4 dC5ncF9yZWdzW1BUX0xOS107CisrICAgIG91dC0+c3JyMCA9IG1jb250ZXh0LmdwX3JlZ3NbUFRf TklQXTsKKysgICAgb3V0LT5zcnIxID0gbWNvbnRleHQuZ3BfcmVnc1tQVF9NU1JdOworKyAgICBv dXQtPmNyID0gbWNvbnRleHQuZ3BfcmVnc1tQVF9DQ1JdOworKyAgICBvdXQtPnhlciA9IG1jb250 ZXh0LmdwX3JlZ3NbUFRfWEVSXTsKKysgICAgb3V0LT5jdHIgPSBtY29udGV4dC5ncF9yZWdzW1BU X0NUUl07CisrICAgIAorKyAgICBmb3IgKGludCBpID0gMDsgaSA8IE1EX0ZMT0FUSU5HU0FWRUFS RUFfUFBDX0ZQUl9DT1VOVDsgaSsrKQorKyAgICAgICAgb3V0LT5mbG9hdF9zYXZlLmZwcmVnc1tp XSA9IG1jb250ZXh0LmZwX3JlZ3NbaV07CisrCisrICAgIG91dC0+ZmxvYXRfc2F2ZS5mcHNjciA9 IG1jb250ZXh0LmZwX3JlZ3NbTkZQUkVHLTFdOworKworKyAgICBmb3IgKGludCBpID0gMDsgaSA8 IE1EX1ZFQ1RPUlNBVkVBUkVBX1BQQ19WUl9DT1VOVDsgaSsrKQorKyAgICAgICAgb3V0LT52ZWN0 b3Jfc2F2ZS5zYXZlX3ZyW2ldID0gXAorKyAgICAgICAgICAgIHsoKCh1aW50NjRfdCl2cmVncy52 cnJlZ3NbaV1bMF0pIDw8IDMyKSAKKysgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdnJlZ3Mu dnJyZWdzW2ldWzFdLCAKKysgICAgICAgICAgICAoKCh1aW50NjRfdCl2cmVncy52cnJlZ3NbaV1b Ml0pIDw8IDMyKQorKyAgICAgICAgICAgICAgICAgICAgICAgICB8IHZyZWdzLnZycmVnc1tpXVsz XX07CisrCisrICAgIG91dC0+dnJzYXZlID0gdnJlZ3MudnJzYXZlOworKyAgICBvdXQtPnZlY3Rv cl9zYXZlLnNhdmVfdnNjciA9IHswLCB2cmVncy52c2NyLnZzY3Jfd29yZH07CisrICAgIG91dC0+ dmVjdG9yX3NhdmUuc2F2ZV92cnZhbGlkID0gMHhGRkZGRkZGRjsgCisrfQorKyNlbmRpZiAgLy8g X19wb3dlcnBjNjRfXworIAorIHZvaWQgVGhyZWFkSW5mbzo6R2V0R2VuZXJhbFB1cnBvc2VSZWdp c3RlcnModm9pZCoqIGdwX3JlZ3MsIHNpemVfdCogc2l6ZSkgeworICAgYXNzZXJ0KGdwX3JlZ3Mg fHwgc2l6ZSk7CitAQCAtMjc5LDYgKzMxNCwxMSBAQCB2b2lkIFRocmVhZEluZm86OkdldEdlbmVy YWxQdXJwb3NlUmVnaXN0ZXJzKHZvaWQqKiBncF9yZWdzLCBzaXplX3QqIHNpemUpIHsKKyAgICAg KmdwX3JlZ3MgPSBtY29udGV4dC5ncmVnczsKKyAgIGlmIChzaXplKQorICAgICAqc2l6ZSA9IHNp emVvZihtY29udGV4dC5ncmVncyk7CisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAg aWYgKGdwX3JlZ3MpCisrICAgICpncF9yZWdzID0gbWNvbnRleHQuZ3BfcmVnczsKKysgIGlmIChz aXplKQorKyAgICAqc2l6ZSA9IHNpemVvZihtY29udGV4dC5ncF9yZWdzKTsKKyAjZWxzZQorICAg aWYgKGdwX3JlZ3MpCisgICAgICpncF9yZWdzID0gJnJlZ3M7CitAQCAtMjk0LDYgKzMzNCwxMSBA QCB2b2lkIFRocmVhZEluZm86OkdldEZsb2F0aW5nUG9pbnRSZWdpc3RlcnModm9pZCoqIGZwX3Jl Z3MsIHNpemVfdCogc2l6ZSkgeworICAgICAqZnBfcmVncyA9ICZtY29udGV4dC5mcHJlZ3M7Cisg ICBpZiAoc2l6ZSkKKyAgICAgKnNpemUgPSBzaXplb2YobWNvbnRleHQuZnByZWdzKTsKKysjZWxp ZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICBpZiAoZnBfcmVncykKKysgICAgKmZwX3JlZ3Mg PSAmbWNvbnRleHQuZnBfcmVnczsKKysgIGlmIChzaXplKQorKyAgICAqc2l6ZSA9IHNpemVvZiht Y29udGV4dC5mcF9yZWdzKTsKKyAjZWxzZQorICAgaWYgKGZwX3JlZ3MpCisgICAgICpmcF9yZWdz ID0gJmZwcmVnczsKK0BAIC0zMDIsNCArMzQ3LDEzIEBAIHZvaWQgVGhyZWFkSW5mbzo6R2V0Rmxv YXRpbmdQb2ludFJlZ2lzdGVycyh2b2lkKiogZnBfcmVncywgc2l6ZV90KiBzaXplKSB7CisgI2Vu ZGlmCisgfQorIAorKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrdm9pZCBUaHJlYWRJbmZv OjpHZXRWZWN0b3JSZWdpc3RlcnModm9pZCoqIHZfcmVncywgc2l6ZV90KiBzaXplKSB7CisrICAg IGlmICh2X3JlZ3MpCisrICAgICAgICAqdl9yZWdzID0gJnZyZWdzOworKyAgICBpZiAoc2l6ZSkK KysgICAgICAgICpzaXplID0gc2l6ZW9mKHZyZWdzKTsKKyt9CisrI2VuZGlmCisrCisgfSAgLy8g bmFtZXNwYWNlIGdvb2dsZV9icmVha3BhZAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1 bXBfd3JpdGVyX2NvbW1vbi90aHJlYWRfaW5mby5oCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGlu dXgvZHVtcF93cml0ZXJfY29tbW9uL3RocmVhZF9pbmZvLmgKK0BAIC02OCw2ICs2OCwxMCBAQCBz dHJ1Y3QgVGhyZWFkSW5mbyB7CisgICAvLyBVc2UgdGhlIHN0cnVjdHVyZXMgZGVmaW5lZCBpbiA8 c3lzL3VzZXIuaD4KKyAgIHN0cnVjdCB1c2VyX3JlZ3Nfc3RydWN0IHJlZ3M7CisgICBzdHJ1Y3Qg dXNlcl9mcHNpbWRfc3RydWN0IGZwcmVnczsKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18p CisrICAvLyBVc2UgdGhlIHN0cnVjdHVyZXMgZGVmaW5lZCBpbiA8c3lzL3Vjb250ZXh0Lmg+Lgor KyAgbWNvbnRleHRfdCBtY29udGV4dDsKKysgIHZycmVnc2V0X3QgdnJlZ3M7CisgI2VsaWYgZGVm aW5lZChfX21pcHNfXykKKyAgIC8vIFVzZSB0aGUgc3RydWN0dXJlIGRlZmluZWQgaW4gPHN5cy91 Y29udGV4dC5oPi4KKyAgIG1jb250ZXh0X3QgbWNvbnRleHQ7CitAQCAtODQsNiArODgsMTEgQEAg c3RydWN0IFRocmVhZEluZm8geworIAorICAgLy8gUmV0dXJucyB0aGUgcG9pbnRlciBhbmQgc2l6 ZSBvZiBmbG9hdCBwb2ludCByZWdpc3RlciBhcmVhLgorICAgdm9pZCBHZXRGbG9hdGluZ1BvaW50 UmVnaXN0ZXJzKHZvaWQqKiBmcF9yZWdzLCBzaXplX3QqIHNpemUpOworKworKyNpZiBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCisrICAvLyBSZXR1cm5zIHRoZSBwb2ludGVyIGFuZCBzaXplIG9mIHRo ZSB2ZWN0b3IgcmVnaXN0ZXIgYXJlYS4gKFBQQzY0IG9ubHkpCisrICB2b2lkIEdldFZlY3RvclJl Z2lzdGVycyh2b2lkKiogdl9yZWdzLCBzaXplX3QqIHNpemUpOworKyNlbmRpZgorIH07CisgCisg fSAgLy8gbmFtZXNwYWNlIGdvb2dsZV9icmVha3BhZAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xp bnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuY2MKKysrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3Jj L2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmNjCitAQCAt MjU0LDYgKzI1NCw0OCBAQCB2b2lkIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChSYXdD b250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0X3QgKnVjKSB7CisgICBvdXQtPmZsb2F0X3Nh dmUuZmlyID0gdWMtPnVjX21jb250ZXh0LmZwY19laXI7ICAvLyBVbnVzZWQuCisgI2VuZGlmCisg fQorKworKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysKKyt1aW50cHRyX3QgVUNvbnRl eHRSZWFkZXI6OkdldFN0YWNrUG9pbnRlcihjb25zdCB1Y29udGV4dF90KiB1YykgeworKyAgICBy ZXR1cm4gdWMtPnVjX21jb250ZXh0LmdwX3JlZ3NbTURfQ09OVEVYVF9QUEM2NF9SRUdfU1BdOwor K30KKysKKyt1aW50cHRyX3QgVUNvbnRleHRSZWFkZXI6OkdldEluc3RydWN0aW9uUG9pbnRlcihj b25zdCB1Y29udGV4dF90KiB1YykgeworKyAgICByZXR1cm4gdWMtPnVjX21jb250ZXh0LmdwX3Jl Z3NbUFRfTklQXTsKKyt9CisrCisrdm9pZCBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNvbnRleHQo UmF3Q29udGV4dENQVSogb3V0LCBjb25zdCB1Y29udGV4dF90KiB1YywKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2cnJlZ3NldF90KiB2cmVncykgeworKyAgICBv dXQtPmNvbnRleHRfZmxhZ3MgPSBNRF9DT05URVhUX1BQQzY0X0ZVTEw7CisrCisrICAgIGZvciAo aW50IGkgPSAwOyBpIDwgTURfQ09OVEVYVF9QUEM2NF9HUFJfQ09VTlQ7IGkrKykKKysgICAgICAg IG91dC0+Z3ByW2ldID0gdWMtPnVjX21jb250ZXh0LmdwX3JlZ3NbaV07CisrCisrICAgIG91dC0+ bHIgPSB1Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9MTktdOyAgICAKKysgICAgb3V0LT5zcnIw ID0gdWMtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfTklQXTsKKysgICAgb3V0LT5zcnIxID0gdWMt PnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfTVNSXTsKKysgICAgb3V0LT5jciA9IHVjLT51Y19tY29u dGV4dC5ncF9yZWdzW1BUX0NDUl07CisrICAgIG91dC0+eGVyID0gdWMtPnVjX21jb250ZXh0Lmdw X3JlZ3NbUFRfWEVSXTsKKysgICAgb3V0LT5jdHIgPSB1Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQ VF9DVFJdOworKyAgICAKKysgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9GTE9BVElOR1NBVkVB UkVBX1BQQ19GUFJfQ09VTlQ7IGkrKykKKysgICAgICAgIG91dC0+ZmxvYXRfc2F2ZS5mcHJlZ3Nb aV0gPSB1Yy0+dWNfbWNvbnRleHQuZnBfcmVnc1tpXTsKKysKKysgICAgb3V0LT5mbG9hdF9zYXZl LmZwc2NyID0gdWMtPnVjX21jb250ZXh0LmZwX3JlZ3NbTkZQUkVHLTFdOworKworKyAgICBmb3Ig KGludCBpID0gMDsgaSA8IE1EX1ZFQ1RPUlNBVkVBUkVBX1BQQ19WUl9DT1VOVDsgaSsrKQorKyAg ICAgICAgb3V0LT52ZWN0b3Jfc2F2ZS5zYXZlX3ZyW2ldID0KKysgICAgICAgICAgICB7KCgodWlu dDY0X3QpdnJlZ3MtPnZycmVnc1tpXVswXSkgPDwgMzIpIAorKyAgICAgICAgICAgICAgICAgICAg ICAgICB8IHZyZWdzLT52cnJlZ3NbaV1bMV0sIAorKyAgICAgICAgICAgICAoKCh1aW50NjRfdCl2 cmVncy0+dnJyZWdzW2ldWzJdKSA8PCAzMikKKysgICAgICAgICAgICAgICAgICAgICAgICAgfCB2 cmVncy0+dnJyZWdzW2ldWzNdfTsKKysKKysgICAgb3V0LT52cnNhdmUgPSB2cmVncy0+dnJzYXZl OworKyAgICBvdXQtPnZlY3Rvcl9zYXZlLnNhdmVfdnNjciA9IHswLCB2cmVncy0+dnNjci52c2Ny X3dvcmR9OworKyAgICBvdXQtPnZlY3Rvcl9zYXZlLnNhdmVfdnJ2YWxpZCA9IDB4RkZGRkZGRkY7 IAorK30KKysKKyAjZW5kaWYKKyAKKyB9ICAvLyBuYW1lc3BhY2UgZ29vZ2xlX2JyZWFrcGFkCist LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFk L2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3Jl YWRlci5oCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vj b250ZXh0X3JlYWRlci5oCitAQCAtNTQsNiArNTQsOSBAQCBzdHJ1Y3QgVUNvbnRleHRSZWFkZXIg eworICNlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pCisgICBzdGF0aWMgdm9pZCBGaWxsQ1BVQ29u dGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0X3QgKnVjLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGZwc2ltZF9jb250ZXh0KiBmcHJlZ3Mp OworKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgIHN0YXRpYyB2b2lkIEZpbGxDUFVD b250ZXh0KFJhd0NvbnRleHRDUFUgKm91dCwgY29uc3QgdWNvbnRleHRfdCAqdWMsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2cnJlZ3NldF90KiB2cmVncyk7CisgI2Vsc2UK KyAgIHN0YXRpYyB2b2lkIEZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUgKm91dCwgY29uc3Qg dWNvbnRleHRfdCAqdWMpOworICNlbmRpZgorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hh bmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9o YW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNjCitAQCAtNDY3LDkgKzQ2NywxNiBAQCBib29sIEV4 Y2VwdGlvbkhhbmRsZXI6OkhhbmRsZVNpZ25hbChpbnQgLypzaWcqLywgc2lnaW5mb190KiBpbmZv LCB2b2lkKiB1YykgeworICAgICBtZW1jcHkoJmdfY3Jhc2hfY29udGV4dF8uZmxvYXRfc3RhdGUs IGZwX3B0ciwKKyAgICAgICAgICAgIHNpemVvZihnX2NyYXNoX2NvbnRleHRfLmZsb2F0X3N0YXRl KSk7CisgICB9CisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgLy8gT24gUFBDNjQs IHdlIG11c3QgY29weSBWUiBzdGF0ZQorKyAgdWNvbnRleHRfdCogdWNfcHRyID0gKHVjb250ZXh0 X3QqKXVjOworKyAgaWYgKHVjX3B0ci0+dWNfbWNvbnRleHQudl9yZWdzKSB7CisrICAgIG1lbWNw eSgmZ19jcmFzaF9jb250ZXh0Xy52ZWN0b3Jfc3RhdGUsIHVjX3B0ci0+dWNfbWNvbnRleHQudl9y ZWdzLAorKyAgICAgICAgICAgc2l6ZW9mKGdfY3Jhc2hfY29udGV4dF8udmVjdG9yX3N0YXRlKSk7 CisrICB9CisgI2VsaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNf XykKKyAgIC8vIEZQIHN0YXRlIGlzIG5vdCBwYXJ0IG9mIHVzZXIgQUJJIG9uIEFSTSBMaW51eC4K Ky0gIC8vIEluIGNhc2Ugb2YgTUlQUyBMaW51eCBGUCBzdGF0ZSBpcyBhbHJlYWR5IHBhcnQgb2Yg dWNvbnRleHRfdAorKyAgLy8gSW4gY2FzZSBvZiBNSVBTLCBMaW51eCBGUCBzdGF0ZSBpcyBhbHJl YWR5IHBhcnQgb2YgdWNvbnRleHRfdAorICAgLy8gYW5kICdmbG9hdF9zdGF0ZScgaXMgbm90IGEg bWVtYmVyIG9mIENyYXNoQ29udGV4dC4KKyAgIHVjb250ZXh0X3QqIHVjX3B0ciA9ICh1Y29udGV4 dF90Kil1YzsKKyAgIGlmICh1Y19wdHItPnVjX21jb250ZXh0LmZwcmVncykgeworQEAgLTcwNywx MSArNzE0LDE5IEBAIGJvb2wgRXhjZXB0aW9uSGFuZGxlcjo6V3JpdGVNaW5pZHVtcCgpIHsKKyAg IH0KKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChf X2FhcmNoNjRfXykgJiYgIWRlZmluZWQoX19taXBzX18pCisrI2lmICFkZWZpbmVkKF9fQVJNX0VB QklfXykgJiYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmICFkZWZpbmVkKF9fbWlwc19fKSBcCisr ICAgICYmICFkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAvLyBGUFUgc3RhdGUgaXMgbm90IHBh cnQgb2YgQVJNIEVBQkkgdWNvbnRleHRfdC4KKyAgIG1lbWNweSgmY29udGV4dC5mbG9hdF9zdGF0 ZSwgY29udGV4dC5jb250ZXh0LnVjX21jb250ZXh0LmZwcmVncywKKyAgICAgICAgICBzaXplb2Yo Y29udGV4dC5mbG9hdF9zdGF0ZSkpOworICNlbmRpZgorKworKyNpZiBkZWZpbmVkKF9fcG93ZXJw YzY0X18pCisrICAvLyBWZWN0b3IgcmVnaXN0ZXJzIG11c3QgYmUgY29waWVkIG9uIFBQQzY0Cisr ICBtZW1jcHkoJmNvbnRleHQudmVjdG9yX3N0YXRlLCBjb250ZXh0LmNvbnRleHQudWNfbWNvbnRl eHQudl9yZWdzLAorKyAgICAgICAgIHNpemVvZihjb250ZXh0LnZlY3Rvcl9zdGF0ZSkpOworKyNl bmRpZgorKworICAgY29udGV4dC50aWQgPSBzeXNfZ2V0dGlkKCk7CisgCisgICAvLyBBZGQgYW4g ZXhjZXB0aW9uIHN0cmVhbSB0byB0aGUgbWluaWR1bXAgZm9yIGJldHRlciByZXBvcnRpbmcuCitA QCAtNzMyLDYgKzc0Nyw5IEBAIGJvb2wgRXhjZXB0aW9uSGFuZGxlcjo6V3JpdGVNaW5pZHVtcCgp IHsKKyAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQorICAgY29udGV4dC5zaWdpbmZvLnNpX2FkZHIg PQorICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNvbnRleHQuY29udGV4dC51Y19tY29u dGV4dC5wYyk7CisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgY29udGV4dC5zaWdp bmZvLnNpX2FkZHIgPQorKyAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNvbnRleHQuY29u dGV4dC51Y19tY29udGV4dC5ncF9yZWdzW1BUX05JUF0pOworICNlbHNlCisgI2Vycm9yICJUaGlz IGNvZGUgaGFzIG5vdCBiZWVuIHBvcnRlZCB0byB5b3VyIHBsYXRmb3JtIHlldC4iCisgI2VuZGlm CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFr cGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5o CisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFr cGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5o CitAQCAtMTkyLDcgKzE5MiwxMSBAQCBjbGFzcyBFeGNlcHRpb25IYW5kbGVyIHsKKyAgICAgc2ln aW5mb190IHNpZ2luZm87CisgICAgIHBpZF90IHRpZDsgIC8vIHRoZSBjcmFzaGluZyB0aHJlYWQu CisgICAgIHVjb250ZXh0X3QgY29udGV4dDsKKy0jaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAm JiAhZGVmaW5lZChfX21pcHNfXykKKysjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgICAv LyBQUEM2NCdzIEZQIHN0YXRlIGlzIGEgcGFydCBvZiB1Y29udGV4dF90IGxpa2UgTUlQUyBidXQg dGhlIHZlY3RvcgorKyAgICAvLyBzdGF0ZSBpcyBub3QsIHNvIGEgc3RydWN0IGlzIG5lZWRlZC4K KysgICAgdnN0YXRlX3QgdmVjdG9yX3N0YXRlOworKyNlbGlmICFkZWZpbmVkKF9fQVJNX0VBQklf XykgJiYgIWRlZmluZWQoX19taXBzX18pCisgICAgIC8vICNpZmRlZiB0aGlzIG91dCBiZWNhdXNl IEZQIHN0YXRlIGlzIG5vdCBwYXJ0IG9mIHVzZXIgQUJJIGZvciBMaW51eCBBUk0uCisgICAgIC8v IEluIGNhc2Ugb2YgTUlQUyBMaW51eCBGUCBzdGF0ZSBpcyBhbHJlYWR5IHBhcnQgb2YgdWNvbnRl eHRfdCBzbworICAgICAvLyAnZmxvYXRfc3RhdGUnIGlzIG5vdCByZXF1aXJlZC4KKy0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtw YWQvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyX3VuaXR0ZXN0LmNj CisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFr cGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlcl91 bml0dGVzdC5jYworQEAgLTMwNyw3ICszMDcsNyBAQCBURVNUKEV4Y2VwdGlvbkhhbmRsZXJUZXN0 LCBQYXJhbGxlbENoaWxkQ3Jhc2hlc0RvbnRIYW5nKSB7CisgICB9CisgCisgICAvLyBXYWl0IGEg d2hpbGUgdW50aWwgdGhlIGNoaWxkIHNob3VsZCBoYXZlIGNyYXNoZWQuCistICB1c2xlZXAoMTAw MDAwMCk7CisrICB1c2xlZXAoMjAwMDAwMCk7CisgICAvLyBLaWxsIHRoZSBjaGlsZCBpZiBpdCBp cyBzdGlsbCBydW5uaW5nLgorICAga2lsbChjaGlsZCwgU0lHS0lMTCk7CisgCitAQCAtNTc2LDYg KzU3Niw4IEBAIGNvbnN0IHVuc2lnbmVkIGNoYXIga0lsbGVnYWxJbnN0cnVjdGlvbltdID0gewor ICNpZiBkZWZpbmVkKF9fbWlwc19fKQorICAgLy8gbWZjMiB6ZXJvLEltcGwgLSB1c3VhbGx5IGls bGVnYWwgaW4gdXNlcnNwYWNlLgorICAgMHg0OCwgMHgwMCwgMHgwMCwgMHg0OAorKyNlbGlmIGRl ZmluZWQoX19wb3dlcnBjNjRfXykKKysgIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEgLy8gQ3Jhc2hl cyBvbiBhIHRlc3RlZCBQT1dFUjkgY3B1CisgI2Vsc2UKKyAgIC8vIFRoaXMgY3Jhc2hlcyB3aXRo IFNJR0lMTCBvbiB4ODYveDg2LTY0L2FybS4KKyAgIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYKK0BA IC03NzEsMTAgKzc3MywxMCBAQCBURVNUKEV4Y2VwdGlvbkhhbmRsZXJUZXN0LCBJbnN0cnVjdGlv blBvaW50ZXJNZW1vcnlNYXhCb3VuZCkgeworIAorICAgLy8gVGhlc2UgYXJlIGRlZmluZWQgaGVy ZSBzbyB0aGUgcGFyZW50IGNhbiB1c2UgdGhlbSB0byBjaGVjayB0aGUKKyAgIC8vIGRhdGEgZnJv bSB0aGUgbWluaWR1bXAgYWZ0ZXJ3YXJkcy4KKy0gIC8vIFVzZSA0ayBoZXJlIGJlY2F1c2UgdGhl IE9TIHdpbGwgaGFuZCBvdXQgYSBzaW5nbGUgcGFnZSBldmVuCisrICAvLyBVc2UgdGhlIHBhZ2Ug c2l6ZSBoZXJlIGJlY2F1c2UgdGhlIE9TIHdpbGwgaGFuZCBvdXQgYSBzaW5nbGUgcGFnZSBldmVu CisgICAvLyBpZiBhIHNtYWxsZXIgc2l6ZSBpcyByZXF1ZXN0ZWQsIGFuZCB0aGlzIHRlc3Qgd2Fu dHMgdG8KKyAgIC8vIHRlc3QgdGhlIHVwcGVyIGJvdW5kIG9mIHRoZSBtZW1vcnkgcmFuZ2UuCist ICBjb25zdCB1aW50MzJfdCBrTWVtb3J5U2l6ZSA9IDQwOTY7ICAvLyBieXRlcworKyAgY29uc3Qg dWludDMyX3Qga01lbW9yeVNpemUgPSBnZXRwYWdlc2l6ZSgpOyAgLy8gYnl0ZXMKKyAgIGNvbnN0 IGludCBrT2Zmc2V0ID0ga01lbW9yeVNpemUgLSBzaXplb2Yoa0lsbGVnYWxJbnN0cnVjdGlvbik7 CisgCisgICBjb25zdCBwaWRfdCBjaGlsZCA9IGZvcmsoKTsKKy0tLSBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVu dC9saW51eC9taWNyb2R1bXBfd3JpdGVyL21pY3JvZHVtcF93cml0ZXIuY2MKKysrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQv c3JjL2NsaWVudC9saW51eC9taWNyb2R1bXBfd3JpdGVyL21pY3JvZHVtcF93cml0ZXIuY2MKK0BA IC0xMzgsNyArMTM4LDkgQEAgY2xhc3MgTWljcm9kdW1wV3JpdGVyIHsKKyAgICAgICAgICAgICAg ICAgICBjb25zdCBNaWNyb2R1bXBFeHRyYUluZm8mIG1pY3JvZHVtcF9leHRyYV9pbmZvLAorICAg ICAgICAgICAgICAgICAgIExpbnV4RHVtcGVyKiBkdW1wZXIpCisgICAgICAgOiB1Y29udGV4dF8o Y29udGV4dCA/ICZjb250ZXh0LT5jb250ZXh0IDogTlVMTCksCistI2lmICFkZWZpbmVkKF9fQVJN X0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCisrI2lmIGRlZmluZWQoX19wb3dlcnBjNjRf XykKKysgICAgICAgIHZlY3Rvcl9zdGF0ZV8oY29udGV4dCA/ICZjb250ZXh0LT52ZWN0b3Jfc3Rh dGUgOiBOVUxMKSwKKysjZWxpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9f bWlwc19fKQorICAgICAgICAgZmxvYXRfc3RhdGVfKGNvbnRleHQgPyAmY29udGV4dC0+ZmxvYXRf c3RhdGUgOiBOVUxMKSwKKyAjZW5kaWYKKyAgICAgICAgIGR1bXBlcl8oZHVtcGVyKSwKK0BAIC0z MzcsNiArMzM5LDggQEAgY2xhc3MgTWljcm9kdW1wV3JpdGVyIHsKKyAjIGVsc2UKKyAjICBlcnJv ciAiVGhpcyBtaXBzIEFCSSBpcyBjdXJyZW50bHkgbm90IHN1cHBvcnRlZCAobjMyKSIKKyAjZW5k aWYKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICAgIGNvbnN0IGNoYXIga0FyY2hb XSA9ICJwcGM2NCI7CisgI2Vsc2UKKyAjZXJyb3IgIlRoaXMgY29kZSBoYXMgbm90IGJlZW4gcG9y dGVkIHRvIHlvdXIgcGxhdGZvcm0geWV0IgorICNlbmRpZgorQEAgLTQwOSw3ICs0MTMsOSBAQCBj bGFzcyBNaWNyb2R1bXBXcml0ZXIgeworICAgdm9pZCBEdW1wQ1BVU3RhdGUoKSB7CisgICAgIFJh d0NvbnRleHRDUFUgY3B1OworICAgICBteV9tZW1zZXQoJmNwdSwgMCwgc2l6ZW9mKFJhd0NvbnRl eHRDUFUpKTsKKy0jaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNf XykKKysjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgICBVQ29udGV4dFJlYWRlcjo6Rmls bENQVUNvbnRleHQoJmNwdSwgdWNvbnRleHRfLCB2ZWN0b3Jfc3RhdGVfKTsKKysjZWxpZiAhZGVm aW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQorICAgICBVQ29udGV4dFJl YWRlcjo6RmlsbENQVUNvbnRleHQoJmNwdSwgdWNvbnRleHRfLCBmbG9hdF9zdGF0ZV8pOworICNl bHNlCisgICAgIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dCgmY3B1LCB1Y29udGV4dF8p OworQEAgLTYwNSw3ICs2MTEsOSBAQCBjbGFzcyBNaWNyb2R1bXBXcml0ZXIgeworICAgdm9pZCog QWxsb2ModW5zaWduZWQgYnl0ZXMpIHsgcmV0dXJuIGR1bXBlcl8tPmFsbG9jYXRvcigpLT5BbGxv YyhieXRlcyk7IH0KKyAKKyAgIGNvbnN0IHVjb250ZXh0X3QqIGNvbnN0IHVjb250ZXh0XzsKKy0j aWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKKysjaWYgZGVm aW5lZChfX3Bvd2VycGM2NF9fKQorKyAgY29uc3QgZ29vZ2xlX2JyZWFrcGFkOjp2c3RhdGVfdCog Y29uc3QgdmVjdG9yX3N0YXRlXzsKKysjZWxpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFk ZWZpbmVkKF9fbWlwc19fKQorICAgY29uc3QgZ29vZ2xlX2JyZWFrcGFkOjpmcHN0YXRlX3QqIGNv bnN0IGZsb2F0X3N0YXRlXzsKKyAjZW5kaWYKKyAgIExpbnV4RHVtcGVyKiBkdW1wZXJfOworLS0t IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9i cmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pY3JvZHVtcF93cml0ZXIvbWljcm9kdW1wX3dyaXRl cl91bml0dGVzdC5jYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pY3JvZHVtcF93cml0 ZXIvbWljcm9kdW1wX3dyaXRlcl91bml0dGVzdC5jYworQEAgLTI3OCwxMCArMjc4LDE5IEBAIFRF U1QoTWljcm9kdW1wV3JpdGVyVGVzdCwgQmFzaWNXaXRoTWFwcGluZ3MpIHsKKyAgIENyYXNoQW5k R2V0TWljcm9kdW1wKG1hcHBpbmdzLCBNaWNyb2R1bXBFeHRyYUluZm8oKSwgJmJ1Zik7CisgICBB U1NFUlRfVFJVRShDb250YWluc01pY3JvZHVtcChidWYpKTsKKyAKKysgIGludCBwYWdlX3NpemUg PSBnZXRwYWdlc2l6ZSgpOworICNpZmRlZiBfX0xQNjRfXworLSAgQVNTRVJUX05FKHN0ZDo6c3Ry aW5nOjpucG9zLAorLSAgICAgICAgICAgIGJ1Zi5maW5kKCJNIDAwMDAwMDAwMDAwMDEwMDAgMDAw MDAwMDAwMDAwMDAyQSAwMDAwMDAwMDAwMDAxMDAwICIKKy0gICAgICAgICAgICAgICAgICAgICAi MzMyMjExMDA1NTQ0Nzc2Njg4OTlBQUJCQ0NEREVFRkYwIGxpYmZvby5zbyIpKTsKKysgIC8vIFRo aXMgdGVzdCBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgdGhlIGZvbGxvd2luZyBwYWdlIHNpemVzCisr ICBBU1NFUlRfVFJVRSgocGFnZV9zaXplID09IDQwOTYpIHx8IChwYWdlX3NpemUgPT0gNjU1MzYp KTsKKysgIGlmIChwYWdlX3NpemUgPT0gNDA5NikgeyAKKysgICAgQVNTRVJUX05FKHN0ZDo6c3Ry aW5nOjpucG9zLAorKyAgICAgICAgICAgICAgYnVmLmZpbmQoIk0gMDAwMDAwMDAwMDAwMTAwMCAw MDAwMDAwMDAwMDAwMDJBIDAwMDAwMDAwMDAwMDEwMDAgIgorKyAgICAgICAgICAgICAgICAgICAg ICAgIjMzMjIxMTAwNTU0NDc3NjY4ODk5QUFCQkNDRERFRUZGMCBsaWJmb28uc28iKSk7CisrICB9 IGVsc2UgeworKyAgICBBU1NFUlRfTkUoc3RkOjpzdHJpbmc6Om5wb3MsCisrICAgICAgICAgICAg ICBidWYuZmluZCgiTSAwMDAwMDAwMDAwMDEwMDAwIDAwMDAwMDAwMDAwMDAwMkEgMDAwMDAwMDAw MDAxMDAwMCAiCisrICAgICAgICAgICAgICAgICAgICAgICAiMzMyMjExMDA1NTQ0Nzc2Njg4OTlB QUJCQ0NEREVFRkYwIGxpYmZvby5zbyIpKTsKKysgIH0KKyAjZWxzZQorICAgQVNTRVJUX05FKHN0 ZDo6c3RyaW5nOjpucG9zLAorICAgICAgICAgICAgIGJ1Zi5maW5kKCJNIDAwMDAxMDAwIDAwMDAw MDJBIDAwMDAxMDAwICIKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0 ZXIvbGludXhfY29yZV9kdW1wZXIuY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5p ZHVtcF93cml0ZXIvbGludXhfY29yZV9kdW1wZXIuY2MKK0BAIC0xMTYsNiArMTE2LDkgQEAgYm9v bCBMaW51eENvcmVEdW1wZXI6OkdldFRocmVhZEluZm9CeUluZGV4KHNpemVfdCBpbmRleCwgVGhy ZWFkSW5mbyogaW5mbykgeworICNlbGlmIGRlZmluZWQoX19taXBzX18pCisgICBzdGFja19wb2lu dGVyID0KKyAgICAgICByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbmZvLT5tY29udGV4dC5n cmVnc1tNRF9DT05URVhUX01JUFNfUkVHX1NQXSk7CisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2 NF9fKQorKyAgc3RhY2tfcG9pbnRlciA9CisrICAgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90 Kj4oaW5mby0+bWNvbnRleHQuZ3BfcmVnc1tNRF9DT05URVhUX1BQQzY0X1JFR19TUF0pOworICNl bHNlCisgI2Vycm9yICJUaGlzIGNvZGUgaGFzbid0IGJlZW4gcG9ydGVkIHRvIHlvdXIgcGxhdGZv cm0geWV0LiIKKyAjZW5kaWYKK0BAIC0yMDAsNyArMjAzLDEwIEBAIGJvb2wgTGludXhDb3JlRHVt cGVyOjpFbnVtZXJhdGVUaHJlYWRzKCkgeworICAgICAgICAgbWVtc2V0KCZpbmZvLCAwLCBzaXpl b2YoVGhyZWFkSW5mbykpOworICAgICAgICAgaW5mby50Z2lkID0gc3RhdHVzLT5wcl9wZ3JwOwor ICAgICAgICAgaW5mby5wcGlkID0gc3RhdHVzLT5wcl9wcGlkOworLSNpZiBkZWZpbmVkKF9fbWlw c19fKQorKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICAgICAgICBmb3IgKGludCBpID0g MDsgaSA8IDMxOyBpKyspCisrICAgICAgICAgICAgaW5mby5tY29udGV4dC5ncF9yZWdzW2ldID0g c3RhdHVzLT5wcl9yZWdbaV07CisrI2VsaWYgZGVmaW5lZChfX21pcHNfXykKKyAjaWYgZGVmaW5l ZChfX0FORFJPSURfXykKKyAgICAgICAgIGZvciAoaW50IGkgPSBFRl9SMDsgaSA8PSBFRl9SMzE7 IGkrKykKKyAgICAgICAgICAgaW5mby5tY29udGV4dC5ncmVnc1tpIC0gRUZfUjBdID0gc3RhdHVz LT5wcl9yZWdbaV07CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVy L2xpbnV4X2R1bXBlci5jYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dy aXRlci9saW51eF9kdW1wZXIuY2MKK0BAIC03OTgsNyArNzk4LDkgQEAgYm9vbCBMaW51eER1bXBl cjo6R2V0U3RhY2tJbmZvKGNvbnN0IHZvaWQqKiBzdGFjaywgc2l6ZV90KiBzdGFja19sZW4sCisg ICAgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW50X3N0YWNrX3BvaW50ZXIgJiB+KHBh Z2Vfc2l6ZSAtIDEpKTsKKyAKKyAgIC8vIFRoZSBudW1iZXIgb2YgYnl0ZXMgb2Ygc3RhY2sgd2hp Y2ggd2UgdHJ5IHRvIGNhcHR1cmUuCistICBzdGF0aWMgY29uc3QgcHRyZGlmZl90IGtTdGFja1Rv Q2FwdHVyZSA9IDMyICogMTAyNDsKKysgIC8vIFRoaXMgbm93IGRlcGVuZHMgb24gcGFnZV9zaXpl IHRvIGF2b2lkIG1pc3NpbmcgZGF0YQorKyAgLy8gb24gc3lzdGVtcyB3aXRoIGxhcmdlciBwYWdl IHNpemVzLgorKyAgc3RhdGljIGNvbnN0IHB0cmRpZmZfdCBrU3RhY2tUb0NhcHR1cmUgPSA4ICog cGFnZV9zaXplOworIAorICAgY29uc3QgTWFwcGluZ0luZm8qIG1hcHBpbmcgPSBGaW5kTWFwcGlu ZyhzdGFja19wb2ludGVyKTsKKyAgIGlmICghbWFwcGluZykKKy0tLSBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVu dC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfZHVtcGVyLmgKKysrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2Ns aWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfZHVtcGVyLmgKK0BAIC02MCw3ICs2MCw4 IEBAIG5hbWVzcGFjZSBnb29nbGVfYnJlYWtwYWQgeworICAoZGVmaW5lZChfX21pcHNfXykgJiYg X01JUFNfU0lNID09IF9BQklPMzIpCisgdHlwZWRlZiBFbGYzMl9hdXh2X3QgZWxmX2F1eF9lbnRy eTsKKyAjZWxpZiBkZWZpbmVkKF9feDg2XzY0KSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBc CistICAgICAoZGVmaW5lZChfX21pcHNfXykgJiYgX01JUFNfU0lNICE9IF9BQklPMzIpCisrICAg ICAoZGVmaW5lZChfX21pcHNfXykgJiYgX01JUFNfU0lNICE9IF9BQklPMzIpIHx8IFwKKysgICAg IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyB0eXBlZGVmIEVsZjY0X2F1eHZfdCBlbGZfYXV4X2Vu dHJ5OworICNlbmRpZgorIAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dy aXRlci9saW51eF9kdW1wZXJfdW5pdHRlc3RfaGVscGVyLmNjCisrKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGll bnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2R1bXBlcl91bml0dGVzdF9oZWxwZXIuY2MK K0BAIC01MSw2ICs1MSw4IEBACisgI2RlZmluZSBUSURfUFRSX1JFR0lTVEVSICJyY3giCisgI2Vs aWYgZGVmaW5lZChfX21pcHNfXykKKyAjZGVmaW5lIFRJRF9QVFJfUkVHSVNURVIgIiQxIgorKyNl bGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysjZGVmaW5lIFRJRF9QVFJfUkVHSVNURVIgInI4 IgorICNlbHNlCisgI2Vycm9yIFRoaXMgdGVzdCBoYXMgbm90IGJlZW4gcG9ydGVkIHRvIHRoaXMg cGxhdGZvcm0uCisgI2VuZGlmCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBf d3JpdGVyL2xpbnV4X3B0cmFjZV9kdW1wZXIuY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51 eC9taW5pZHVtcF93cml0ZXIvbGludXhfcHRyYWNlX2R1bXBlci5jYworQEAgLTE1NCwxOSArMTU0 LDI3IEBAIGJvb2wgTGludXhQdHJhY2VEdW1wZXI6OkNvcHlGcm9tUHJvY2Vzcyh2b2lkKiBkZXN0 LCBwaWRfdCBjaGlsZCwKKyAgIHJldHVybiB0cnVlOworIH0KKyAKKy1ib29sIExpbnV4UHRyYWNl RHVtcGVyOjpSZWFkUmVnaXN0ZXJTZXQoVGhyZWFkSW5mbyogaW5mbywgcGlkX3QgdGlkKQorLXsK Kytib29sIExpbnV4UHRyYWNlRHVtcGVyOjpSZWFkUmVnaXN0ZXJTZXQoVGhyZWFkSW5mbyogaW5m bywgcGlkX3QgdGlkKSB7CisgI2lmZGVmIFBUUkFDRV9HRVRSRUdTRVQKKyAgIHN0cnVjdCBpb3Zl YyBpbzsKKyAgIGluZm8tPkdldEdlbmVyYWxQdXJwb3NlUmVnaXN0ZXJzKCZpby5pb3ZfYmFzZSwg JmlvLmlvdl9sZW4pOworLSAgaWYgKHN5c19wdHJhY2UoUFRSQUNFX0dFVFJFR1NFVCwgdGlkLCAo dm9pZCopTlRfUFJTVEFUVVMsICh2b2lkKikmaW8pID09IC0xKSB7CisrICBpZiAocHRyYWNlKFBU UkFDRV9HRVRSRUdTRVQsIHRpZCwgKHZvaWQqKU5UX1BSU1RBVFVTLCAodm9pZCopJmlvKSA9PSAt MSkgeworICAgICByZXR1cm4gZmFsc2U7CisgICB9CisgCisgICBpbmZvLT5HZXRGbG9hdGluZ1Bv aW50UmVnaXN0ZXJzKCZpby5pb3ZfYmFzZSwgJmlvLmlvdl9sZW4pOworLSAgaWYgKHN5c19wdHJh Y2UoUFRSQUNFX0dFVFJFR1NFVCwgdGlkLCAodm9pZCopTlRfRlBSRUdTRVQsICh2b2lkKikmaW8p ID09IC0xKSB7CisrICBpZiAocHRyYWNlKFBUUkFDRV9HRVRSRUdTRVQsIHRpZCwgKHZvaWQqKU5U X0ZQUkVHU0VULCAodm9pZCopJmlvKSA9PSAtMSkgeworICAgICByZXR1cm4gZmFsc2U7CisgICB9 CisrCisrI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgIC8vIEdyYWIgdGhlIHZlY3RvciBy ZWdpc3RlcnMgb24gUFBDNjQgdG9vCisrICBpbmZvLT5HZXRWZWN0b3JSZWdpc3RlcnMoJmlvLmlv dl9iYXNlLCAmaW8uaW92X2xlbik7CisrICBpZiAocHRyYWNlKFBUUkFDRV9HRVRSRUdTRVQsIHRp ZCwgKHZvaWQqKU5UX1BQQ19WTVgsICh2b2lkKikmaW8pID09IC0xKSB7CisrICAgIHJldHVybiBm YWxzZTsKKysgIH0KKysjZW5kaWYgLy8gZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKworICAgcmV0 dXJuIHRydWU7CisgI2Vsc2UKKyAgIHJldHVybiBmYWxzZTsKK0BAIC0zMDMsNiArMzExLDkgQEAg Ym9vbCBMaW51eFB0cmFjZUR1bXBlcjo6R2V0VGhyZWFkSW5mb0J5SW5kZXgoc2l6ZV90IGluZGV4 LCBUaHJlYWRJbmZvKiBpbmZvKSB7CisgI2VsaWYgZGVmaW5lZChfX21pcHNfXykKKyAgIHN0YWNr X3BvaW50ZXIgPQorICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGluZm8tPm1jb250 ZXh0LmdyZWdzW01EX0NPTlRFWFRfTUlQU19SRUdfU1BdKTsKKysjZWxpZiBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pCisrICBzdGFja19wb2ludGVyID0KKysgICAgICByZWludGVycHJldF9jYXN0PHVp bnQ4X3QqPihpbmZvLT5tY29udGV4dC5ncF9yZWdzW01EX0NPTlRFWFRfUFBDNjRfUkVHX1NQXSk7 CisgI2Vsc2UKKyAjZXJyb3IgIlRoaXMgY29kZSBoYXNuJ3QgYmVlbiBwb3J0ZWQgdG8geW91ciBw bGF0Zm9ybSB5ZXQuIgorICNlbmRpZgorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlk dW1wX3dyaXRlci9saW51eF9wdHJhY2VfZHVtcGVyX3VuaXR0ZXN0LmNjCisrKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3Ny Yy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X3B0cmFjZV9kdW1wZXJfdW5pdHRl c3QuY2MKK0BAIC00NTcsNiArNDU3LDkgQEAgVEVTVChMaW51eFB0cmFjZUR1bXBlclRlc3QsIFZl cmlmeVN0YWNrUmVhZFdpdGhNdWx0aXBsZVRocmVhZHMpIHsKKyAjZWxpZiBkZWZpbmVkKF9fbWlw c19fKQorICAgICBwaWRfdCogcHJvY2Vzc190aWRfbG9jYXRpb24gPQorICAgICAgICAgcmVpbnRl cnByZXRfY2FzdDxwaWRfdCo+KG9uZV90aHJlYWQubWNvbnRleHQuZ3JlZ3NbMV0pOworKyNlbGlm IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgICAgcGlkX3QqIHByb2Nlc3NfdGlkX2xvY2F0aW9u ID0KKysgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8cGlkX3QqPihvbmVfdGhyZWFkLm1jb250ZXh0 LmdwX3JlZ3NbOF0pOworICNlbHNlCisgI2Vycm9yIFRoaXMgdGVzdCBoYXMgbm90IGJlZW4gcG9y dGVkIHRvIHRoaXMgcGxhdGZvcm0uCisgI2VuZGlmCitAQCAtNTUzLDYgKzU1Niw4IEBAIFRFU1Rf RihMaW51eFB0cmFjZUR1bXBlclRlc3QsIFNhbml0aXplU3RhY2tDb3B5KSB7CisgICB1aW50cHRy X3QgaGVhcF9hZGRyID0gdGhyZWFkX2luZm8ucmVncy5yY3g7CisgI2VsaWYgZGVmaW5lZChfX21p cHNfXykKKyAgIHVpbnRwdHJfdCBoZWFwX2FkZHIgPSB0aHJlYWRfaW5mby5tY29udGV4dC5ncmVn c1sxXTsKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICB1aW50cHRyX3QgaGVhcF9h ZGRyID0gdGhyZWFkX2luZm8ubWNvbnRleHQuZ3BfcmVnc1s4XTsKKyAjZWxzZQorICNlcnJvciBU aGlzIHRlc3QgaGFzIG5vdCBiZWVuIHBvcnRlZCB0byB0aGlzIHBsYXRmb3JtLgorICNlbmRpZgor LS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3Bh ZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93cml0 ZXIuY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv YnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1 bXBfd3JpdGVyLmNjCitAQCAtMTM2LDcgKzEzNiw5IEBAIGNsYXNzIE1pbmlkdW1wV3JpdGVyIHsK KyAgICAgICA6IGZkXyhtaW5pZHVtcF9mZCksCisgICAgICAgICBwYXRoXyhtaW5pZHVtcF9wYXRo KSwKKyAgICAgICAgIHVjb250ZXh0Xyhjb250ZXh0ID8gJmNvbnRleHQtPmNvbnRleHQgOiBOVUxM KSwKKy0jaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKKysj aWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgICAgICAgdmVjdG9yX3N0YXRlXyhjb250ZXh0 ID8gJmNvbnRleHQtPnZlY3Rvcl9zdGF0ZSA6IE5VTEwpLAorKyNlbGlmICFkZWZpbmVkKF9fQVJN X0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCisgICAgICAgICBmbG9hdF9zdGF0ZV8oY29u dGV4dCA/ICZjb250ZXh0LT5mbG9hdF9zdGF0ZSA6IE5VTEwpLAorICNlbmRpZgorICAgICAgICAg ZHVtcGVyXyhkdW1wZXIpLAorQEAgLTQ2OCw3ICs0NzAsOSBAQCBjbGFzcyBNaW5pZHVtcFdyaXRl ciB7CisgICAgICAgICBpZiAoIWNwdS5BbGxvY2F0ZSgpKQorICAgICAgICAgICByZXR1cm4gZmFs c2U7CisgICAgICAgICBteV9tZW1zZXQoY3B1LmdldCgpLCAwLCBzaXplb2YoUmF3Q29udGV4dENQ VSkpOworLSNpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQor KyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICAgICAgICBVQ29udGV4dFJlYWRlcjo6Rmls bENQVUNvbnRleHQoY3B1LmdldCgpLCB1Y29udGV4dF8sIHZlY3Rvcl9zdGF0ZV8pOworKyNlbGlm ICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCisgICAgICAgICBV Q29udGV4dFJlYWRlcjo6RmlsbENQVUNvbnRleHQoY3B1LmdldCgpLCB1Y29udGV4dF8sIGZsb2F0 X3N0YXRlXyk7CisgI2Vsc2UKKyAgICAgICAgIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4 dChjcHUuZ2V0KCksIHVjb250ZXh0Xyk7CitAQCAtODkxLDcgKzg5NSw3IEBAIGNsYXNzIE1pbmlk dW1wV3JpdGVyIHsKKyAgICAgZGlyZW50LT5sb2NhdGlvbi5ydmEgPSAwOworICAgfQorIAorLSNp ZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19t aXBzX18pCisrI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwg ZGVmaW5lZChfX21pcHNfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgYm9vbCBXcml0 ZUNQVUluZm9ybWF0aW9uKE1EUmF3U3lzdGVtSW5mbyogc3lzX2luZm8pIHsKKyAgICAgY2hhciB2 ZW5kb3JfaWRbc2l6ZW9mKHN5c19pbmZvLT5jcHUueDg2X2NwdV9pbmZvLnZlbmRvcl9pZCkgKyAx XSA9IHswfTsKKyAgICAgc3RhdGljIGNvbnN0IGNoYXIgdmVuZG9yX2lkX25hbWVbXSA9ICJ2ZW5k b3JfaWQiOworQEAgLTkxMSw3ICs5MTUsOSBAQCBjbGFzcyBNaW5pZHVtcFdyaXRlciB7CisgCisg ICAgIC8vIHByb2Nlc3Nvcl9hcmNoaXRlY3R1cmUgc2hvdWxkIGFsd2F5cyBiZSBzZXQsIGRvIHRo aXMgZmlyc3QKKyAgICAgc3lzX2luZm8tPnByb2Nlc3Nvcl9hcmNoaXRlY3R1cmUgPQorLSNpZiBk ZWZpbmVkKF9fbWlwc19fKQorKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICAgICAgICBN RF9DUFVfQVJDSElURUNUVVJFX1BQQzY0OworKyNlbGlmIGRlZmluZWQoX19taXBzX18pCisgIyBp ZiBfTUlQU19TSU0gPT0gX0FCSU8zMgorICAgICAgICAgTURfQ1BVX0FSQ0hJVEVDVFVSRV9NSVBT OworICMgZWxpZiBfTUlQU19TSU0gPT0gX0FCSTY0CitAQCAtMTMyNyw3ICsxMzMzLDkgQEAgY2xh c3MgTWluaWR1bXBXcml0ZXIgeworICAgY29uc3QgY2hhciogcGF0aF87ICAvLyBQYXRoIHRvIHRo ZSBmaWxlIHdoZXJlIHRoZSBtaW5pZHVtIHNob3VsZCBiZSB3cml0dGVuLgorIAorICAgY29uc3Qg dWNvbnRleHRfdCogY29uc3QgdWNvbnRleHRfOyAgLy8gYWxzbyBmcm9tIHRoZSBzaWduYWwgaGFu ZGxlcgorLSNpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQor KyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICBjb25zdCBnb29nbGVfYnJlYWtwYWQ6OnZz dGF0ZV90KiBjb25zdCB2ZWN0b3Jfc3RhdGVfOworKyNlbGlmICFkZWZpbmVkKF9fQVJNX0VBQklf XykgJiYgIWRlZmluZWQoX19taXBzX18pCisgICBjb25zdCBnb29nbGVfYnJlYWtwYWQ6OmZwc3Rh dGVfdCogY29uc3QgZmxvYXRfc3RhdGVfOyAgLy8gZGl0dG8KKyAjZW5kaWYKKyAgIExpbnV4RHVt cGVyKiBkdW1wZXJfOworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRl ci9taW5pZHVtcF93cml0ZXIuaAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1w X3dyaXRlci9taW5pZHVtcF93cml0ZXIuaAorQEAgLTQ3LDYgKzQ3LDggQEAgY2xhc3MgRXhjZXB0 aW9uSGFuZGxlcjsKKyAKKyAjaWYgZGVmaW5lZChfX2FhcmNoNjRfXykKKyB0eXBlZGVmIHN0cnVj dCBmcHNpbWRfY29udGV4dCBmcHN0YXRlX3Q7CisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9f KQorK3R5cGVkZWYgdnJyZWdzZXRfdCB2c3RhdGVfdDsKKyAjZWxpZiAhZGVmaW5lZChfX0FSTV9F QUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQorIHR5cGVkZWYgc3RydWN0IF9mcHN0YXRlIGZw c3RhdGVfdDsKKyAjZW5kaWYKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93 cml0ZXIvbWluaWR1bXBfd3JpdGVyX3VuaXR0ZXN0LmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQv bGludXgvbWluaWR1bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlcl91bml0dGVzdC5jYworQEAgLTcx MCw2ICs3MTAsOSBAQCBURVNUKE1pbmlkdW1wV3JpdGVyVGVzdCwgSW52YWxpZFN0YWNrUG9pbnRl cikgeworICNlbGlmIGRlZmluZWQoX19taXBzX18pCisgICBjb250ZXh0LmNvbnRleHQudWNfbWNv bnRleHQuZ3JlZ3NbTURfQ09OVEVYVF9NSVBTX1JFR19TUF0gPQorICAgICAgIGludmFsaWRfc3Rh Y2tfcG9pbnRlcjsKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICBjb250ZXh0LmNv bnRleHQudWNfbWNvbnRleHQuZ3BfcmVnc1tNRF9DT05URVhUX1BQQzY0X1JFR19TUF0gPQorKyAg ICAgIGludmFsaWRfc3RhY2tfcG9pbnRlcjsKKyAjZWxzZQorICMgZXJyb3IgIlRoaXMgY29kZSBo YXMgbm90IGJlZW4gcG9ydGVkIHRvIHlvdXIgcGxhdGZvcm0geWV0LiIKKyAjZW5kaWYKKy0tLSBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJl YWtwYWQvc3JjL2NvbW1vbi9saW51eC9tZW1vcnlfbWFwcGVkX2ZpbGUuY2MKKysrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQv c3JjL2NvbW1vbi9saW51eC9tZW1vcnlfbWFwcGVkX2ZpbGUuY2MKK0BAIC02NSw4ICs2NSw3IEBA IGJvb2wgTWVtb3J5TWFwcGVkRmlsZTo6TWFwKGNvbnN0IGNoYXIqIHBhdGgsIHNpemVfdCBvZmZz ZXQpIHsKKyAgIH0KKyAKKyAjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYWFy Y2g2NF9fKSB8fCBcCistICAgKGRlZmluZWQoX19taXBzX18pICYmIF9NSVBTX1NJTSA9PSBfQUJJ NjQpCistCisrICAgKGRlZmluZWQoX19taXBzX18pICYmIF9NSVBTX1NJTSA9PSBfQUJJNjQpIHx8 IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgIHN0cnVjdCBrZXJuZWxfc3RhdCBzdDsKKyAgIGlm IChzeXNfZnN0YXQoZmQsICZzdCkgPT0gLTEgfHwgc3Quc3Rfc2l6ZSA8IDApIHsKKyAjZWxzZQor LS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3Bh ZC9icmVha3BhZC9zcmMvY29tbW9uL2xpbnV4L21lbW9yeV9tYXBwZWRfZmlsZV91bml0dGVzdC5j YworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVh a3BhZC9icmVha3BhZC9zcmMvY29tbW9uL2xpbnV4L21lbW9yeV9tYXBwZWRfZmlsZV91bml0dGVz dC5jYworQEAgLTE3Niw5ICsxNzYsMTAgQEAgVEVTVF9GKE1lbW9yeU1hcHBlZEZpbGVUZXN0LCBS ZW1hcEFmdGVyTWFwKSB7CisgVEVTVF9GKE1lbW9yeU1hcHBlZEZpbGVUZXN0LCBNYXBXaXRoT2Zm c2V0KSB7CisgICAvLyBQdXQgbW9yZSBkYXRhIGluIHRoZSB0ZXN0IGZpbGUgdGhpcyB0aW1lLiBP ZmZzZXRzIGNhbiBvbmx5IGJlCisgICAvLyBkb25lIG9uIHBhZ2UgYm91bmRhcmllcywgc28gd2Ug bmVlZCBhIHR3byBwYWdlIGZpbGUgdG8gdGVzdCB0aGlzLgorLSAgY29uc3QgaW50IHBhZ2Vfc2l6 ZSA9IDQwOTY7CistICBjaGFyIGRhdGExWzIgKiBwYWdlX3NpemVdOworLSAgc2l6ZV90IGRhdGEx X3NpemUgPSBzaXplb2YoZGF0YTEpOworKyAgY29uc3QgaW50IHBhZ2Vfc2l6ZSA9IGdldHBhZ2Vz aXplKCk7CisrICBjaGFyICpkYXRhMSA9IHN0YXRpY19jYXN0PGNoYXIqPihtYWxsb2MoMiAqIHBh Z2Vfc2l6ZSkpOworKyAgRVhQRUNUX1RSVUUoZGF0YTEgIT0gTlVMTCk7CisrICBzaXplX3QgZGF0 YTFfc2l6ZSA9ICgyICogcGFnZV9zaXplKTsKKyAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGF0 YTFfc2l6ZTsgKytpKSB7CisgICAgIGRhdGExW2ldID0gaSAmIDB4N2Y7CisgICB9CistLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFr cGFkL3NyYy9jb21tb24vbWVtb3J5X2FsbG9jYXRvcl91bml0dGVzdC5jYworKysrIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9z cmMvY29tbW9uL21lbW9yeV9hbGxvY2F0b3JfdW5pdHRlc3QuY2MKK0BAIC01Nyw4ICs1Nyw5IEBA IFRFU1QoUGFnZUFsbG9jYXRvclRlc3QsIExhcmdlT2JqZWN0KSB7CisgCisgICBFWFBFQ1RfRVEo MFUsIGFsbG9jYXRvci5wYWdlc19hbGxvY2F0ZWQoKSk7CisgICB1aW50OF90ICpwID0gcmVpbnRl cnByZXRfY2FzdDx1aW50OF90Kj4oYWxsb2NhdG9yLkFsbG9jKDEwMDAwKSk7CisrICB1aW50NjRf dCBleHBlY3RlZF9wYWdlcyA9IDEgKyAoKDEwMDAwIC0gMSkgLyBnZXRwYWdlc2l6ZSgpKTsKKyAg IEFTU0VSVF9GQUxTRShwID09IE5VTEwpOworLSAgRVhQRUNUX0VRKDNVLCBhbGxvY2F0b3IucGFn ZXNfYWxsb2NhdGVkKCkpOworKyAgRVhQRUNUX0VRKGV4cGVjdGVkX3BhZ2VzLCBhbGxvY2F0b3Iu cGFnZXNfYWxsb2NhdGVkKCkpOworICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IDEwOyArK2kp IHsKKyAgICAgdWludDhfdCAqcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGFsbG9jYXRv ci5BbGxvYyhpKSk7CisgICAgIEFTU0VSVF9GQUxTRShwID09IE5VTEwpOworLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9z cmMvcHJvY2Vzc29yL2V4cGxvaXRhYmlsaXR5X2xpbnV4LmNjCisrKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9wcm9j ZXNzb3IvZXhwbG9pdGFiaWxpdHlfbGludXguY2MKK0BAIC0yMDIsMTIgKzIwMiwxNCBAQCBib29s IEV4cGxvaXRhYmlsaXR5TGludXg6OkVuZGVkT25JbGxlZ2FsV3JpdGUodWludDY0X3QgaW5zdHJ1 Y3Rpb25fcHRyKSB7CisgICAvLyBDaGVjayBhcmNoaXRlY3R1cmUgYW5kIHNldCBhcmNoaXRlY3R1 cmUgdmFyaWFibGUgdG8gY29ycmVzcG9uZGluZyBmbGFnCisgICAvLyBpbiBvYmpkdW1wLgorICAg c3dpdGNoIChjb250ZXh0LT5HZXRDb250ZXh0Q1BVKCkpIHsKKysjaWYgZGVmaW5lZChfX2kzODYp IHx8IGRlZmluZWQoX194ODZfNjQpCisgICAgIGNhc2UgTURfQ09OVEVYVF9YODY6CisgICAgICAg YXJjaGl0ZWN0dXJlID0gImkzODYiOworICAgICAgIGJyZWFrOworICAgICBjYXNlIE1EX0NPTlRF WFRfQU1ENjQ6CisgICAgICAgYXJjaGl0ZWN0dXJlID0gImkzODY6eDg2LTY0IjsKKyAgICAgICBi cmVhazsKKysjZW5kaWYKKyAgICAgZGVmYXVsdDoKKyAgICAgICAvLyBVbnN1cHBvcnRlZCBhcmNo aXRlY3R1cmUuIE5vdGUgdGhhdCBBUk0gYXJjaGl0ZWN0dXJlcyBhcmUgbm90CisgICAgICAgLy8g c3VwcG9ydGVkIGJlY2F1c2Ugb2JqZHVtcCBkb2VzIG5vdCBzdXBwb3J0IEFSTS4KKy0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtw YWQvc3JjL3Byb2Nlc3Nvci9leHBsb2l0YWJpbGl0eV91bml0dGVzdC5jYworKysrIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9z cmMvcHJvY2Vzc29yL2V4cGxvaXRhYmlsaXR5X3VuaXR0ZXN0LmNjCitAQCAtMTA0LDYgKzEwNCw4 IEBAIEV4cGxvaXRhYmlsaXR5Rm9yKGNvbnN0IHN0cmluZyYgZmlsZW5hbWUpIHsKKyB9CisgCisg VEVTVChFeHBsb2l0YWJpbGl0eVRlc3QsIFRlc3RXaW5kb3dzRW5naW5lKSB7CisrLy8gVGhlIGZv bGxvd2luZyB0ZXN0cyBhcmUgb25seSBleGVjdXRhYmxlIG9uIGFuIHg4Ni1jbGFzcyBsaW51eCBt YWNoaW5lLgorKyNpZiAhZGVmaW5lZChfV0lOMzIpICYmIChkZWZpbmVkKF9faTM4NikgfHwgZGVm aW5lZChfX3g4Nl82NCkpCisgICBBU1NFUlRfRVEoZ29vZ2xlX2JyZWFrcGFkOjpFWFBMT0lUQUJJ TElUWV9ISUdILAorICAgICAgICAgICAgIEV4cGxvaXRhYmlsaXR5Rm9yKCJhc2NpaV9yZWFkX2F2 LmRtcCIpKTsKKyAgIEFTU0VSVF9FUShnb29nbGVfYnJlYWtwYWQ6OkVYUExPSVRBQklMSVRZX0hJ R0gsCitAQCAtMTM2LDkgKzEzOCwxMiBAQCBURVNUKEV4cGxvaXRhYmlsaXR5VGVzdCwgVGVzdFdp bmRvd3NFbmdpbmUpIHsKKyAgICAgICAgICAgICBFeHBsb2l0YWJpbGl0eUZvcigicmVhZF9hdl9j bG9iYmVyX3dyaXRlLmRtcCIpKTsKKyAgIEFTU0VSVF9FUShnb29nbGVfYnJlYWtwYWQ6OkVYUExP SVRBQklMSVRZX0xPVywKKyAgICAgICAgICAgICBFeHBsb2l0YWJpbGl0eUZvcigicmVhZF9hdl9j b25kaXRpb25hbC5kbXAiKSk7CisrI2VuZGlmCisgfQorIAorIFRFU1QoRXhwbG9pdGFiaWxpdHlU ZXN0LCBUZXN0TGludXhFbmdpbmUpIHsKKysvLyBUaGUgZm9sbG93aW5nIHRlc3RzIGFyZSBvbmx5 IGV4ZWN1dGFibGUgb24gYW4geDg2LWNsYXNzIGxpbnV4IG1hY2hpbmUuCisrI2lmIGRlZmluZWQo X19pMzg2KSB8fCBkZWZpbmVkKF9feDg2XzY0KQorICAgQVNTRVJUX0VRKGdvb2dsZV9icmVha3Bh ZDo6RVhQTE9JVEFCSUxJVFlfSU5URVJFU1RJTkcsCisgICAgICAgICAgICAgRXhwbG9pdGFiaWxp dHlGb3IoImxpbnV4X251bGxfcmVhZF9hdi5kbXAiKSk7CisgICBBU1NFUlRfRVEoZ29vZ2xlX2Jy ZWFrcGFkOjpFWFBMT0lUQUJJTElUWV9ISUdILAorQEAgLTE3MSw3ICsxNzYsOCBAQCBURVNUKEV4 cGxvaXRhYmlsaXR5VGVzdCwgVGVzdExpbnV4RW5naW5lKSB7CisgICAgICAgICAgICAgRXhwbG9p dGFiaWxpdHlGb3IoImxpbnV4X2V4ZWN1dGFibGVfaGVhcC5kbXAiKSk7CisgICBBU1NFUlRfRVEo Z29vZ2xlX2JyZWFrcGFkOjpFWFBMT0lUQUJJTElUWV9ISUdILAorICAgICAgICAgICAgIEV4cGxv aXRhYmlsaXR5Rm9yKCJsaW51eF9qbXBfdG9fbW9kdWxlX25vdF9leGVfcmVnaW9uLmRtcCIpKTsK Ky0jaWZuZGVmIF9XSU4zMgorKyNlbmRpZgorKyNpZiAhZGVmaW5lZChfV0lOMzIpICYmIChkZWZp bmVkKF9faTM4NikgfHwgZGVmaW5lZChfX3g4Nl82NCkpCisgICBBU1NFUlRfRVEoZ29vZ2xlX2Jy ZWFrcGFkOjpFWFBMT0lUQUJJTElUWV9ISUdILAorICAgICAgICAgICAgIEV4cGxvaXRhYmlsaXR5 Rm9yKCJsaW51eF93cml0ZV90b19ub253cml0YWJsZV9tb2R1bGUuZG1wIikpOworICAgQVNTRVJU X0VRKGdvb2dsZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJVFlfSElHSCwKK0BAIC0xODIsMTAgKzE4 OCwxMCBAQCBURVNUKEV4cGxvaXRhYmlsaXR5VGVzdCwgVGVzdExpbnV4RW5naW5lKSB7CisgICAg ICAgICAgICAgRXhwbG9pdGFiaWxpdHlGb3IoImxpbnV4X3dyaXRlX3RvX291dHNpZGVfbW9kdWxl X3ZpYV9tYXRoLmRtcCIpKTsKKyAgIEFTU0VSVF9FUShnb29nbGVfYnJlYWtwYWQ6OkVYUExPSVRB QklMSVRZX0lOVEVSRVNUSU5HLAorICAgICAgICAgICAgIEV4cGxvaXRhYmlsaXR5Rm9yKCJsaW51 eF93cml0ZV90b191bmRlcl80ay5kbXAiKSk7CistI2VuZGlmICAvLyBfV0lOMzIKKysjZW5kaWYg IC8vICFkZWZpbmVkKF9XSU4zMikgJiYgKCFkZWZpbmVkKF9faTM4NikgJiYgIWRlZmluZWQoX194 ODZfNjQpKQorIH0KKyAKKy0jaWZuZGVmIF9XSU4zMgorKyNpZiAhZGVmaW5lZChfV0lOMzIpICYm IChkZWZpbmVkKF9faTM4NikgfHwgZGVmaW5lZChfX3g4Nl82NCkpCisgVEVTVChFeHBsb2l0YWJp bGl0eUxpbnV4VXRpbHNUZXN0LCBEaXNhc3NlbWJsZUJ5dGVzVGVzdCkgeworICAgQVNTRVJUX0ZB TFNFKEV4cGxvaXRhYmlsaXR5TGludXhUZXN0OjpEaXNhc3NlbWJsZUJ5dGVzKCIiLCBOVUxMLCA1 LCBOVUxMKSk7CisgICB1aW50OF90IGJ5dGVzWzZdID0gezB4YzcsIDB4MCwgMHg1LCAweDAsIDB4 MCwgMHgwfTsKK0BAIC0zMDEsNiArMzA3LDcgQEAgVEVTVChFeHBsb2l0YWJpbGl0eUxpbnV4VXRp bHNUZXN0LCBDYWxjdWxhdGVBZGRyZXNzVGVzdCkgeworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJndyaXRlX2FkZHJl c3MpKTsKKyB9CistI2VuZGlmICAvLyBfV0lOMzIKKysjZW5kaWYgIC8vICFkZWZpbmVkKF9XSU4z MikgJiYgKGRlZmluZWQoX19pMzg2KSB8fCBkZWZpbmVkKF9feDg2XzY0KSkKKysKKyAKKyB9ICAv LyBuYW1lc3BhY2UKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRf cGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL3Rvb2xzL2xpbnV4L21kMmNvcmUvbWluaWR1bXAt Mi1jb3JlLmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy90b29scy9saW51eC9tZDJjb3JlL21pbmlkdW1wLTIt Y29yZS5jYworQEAgLTc2LDYgKzc2LDggQEAKKyAgICNkZWZpbmUgRUxGX0FSQ0ggIEVNX01JUFMK KyAjZWxpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQorICAgI2RlZmluZSBFTEZfQVJDSCAgRU1fQUFS Q0g2NAorKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgICNkZWZpbmUgRUxGX0FSQ0gg IEVNX1BQQzY0CisgI2VuZGlmCisgCisgI2lmIGRlZmluZWQoX19hcm1fXykKK0BAIC04Niw2ICs4 OCw4IEBAIHR5cGVkZWYgdXNlcl9yZWdzIHVzZXJfcmVnc19zdHJ1Y3Q7CisgI2VsaWYgZGVmaW5l ZCAoX19taXBzX18pCisgLy8gVGhpcyBmaWxlLWxvY2FsIHR5cGVkZWYgc2ltcGxpZmllcyB0aGUg c291cmNlIGNvZGUuCisgdHlwZWRlZiBncmVnc2V0X3QgdXNlcl9yZWdzX3N0cnVjdDsKKysjZWxp ZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrdHlwZWRlZiBzdHJ1Y3QgcHRfcmVncyB1c2VyX3Jl Z3Nfc3RydWN0OworICNlbmRpZgorIAorIHVzaW5nIGdvb2dsZV9icmVha3BhZDo6TURUeXBlSGVs cGVyOworQEAgLTMyMCw2ICszMjQsOSBAQCBzdHJ1Y3QgQ3Jhc2hlZFByb2Nlc3MgeworICNlbmRp ZgorICNpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQorICAgICB1c2VyX2Zwc2ltZF9zdHJ1Y3QgZnBy ZWdzOworKyNlbmRpZgorKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICAgIG1jb250ZXh0 X3QgbWNvbnRleHQ7CisgI2VuZGlmCisgICAgIHVpbnRwdHJfdCBzdGFja19hZGRyOworICAgICBj b25zdCB1aW50OF90KiBzdGFjazsKK0BAIC01MzQsNiArNTQxLDM4IEBAIFBhcnNlVGhyZWFkUmVn aXN0ZXJzKENyYXNoZWRQcm9jZXNzOjpUaHJlYWQqIHRocmVhZCwKKyAgIHRocmVhZC0+bWNvbnRl eHQuZnBjX2VpciA9IHJhd3JlZ3MtPmZsb2F0X3NhdmUuZmlyOworICNlbmRpZgorIH0KKysjZWxp ZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrc3RhdGljIHZvaWQKKytQYXJzZVRocmVhZFJlZ2lz dGVycyhDcmFzaGVkUHJvY2Vzczo6VGhyZWFkKiB0aHJlYWQsCisrICAgICAgICAgICAgICAgICAg ICAgY29uc3QgTWluaWR1bXBNZW1vcnlSYW5nZSYgcmFuZ2UpIHsKKysgIGNvbnN0IE1EUmF3Q29u dGV4dFBQQzY0KiByYXdyZWdzID0gcmFuZ2UuR2V0RGF0YTxNRFJhd0NvbnRleHRQUEM2ND4oMCk7 CisrCisrICBmb3IgKGludCBpID0gMDsgaSA8IE1EX0NPTlRFWFRfUFBDNjRfR1BSX0NPVU5UOyBp KyspCisrICAgIHRocmVhZC0+bWNvbnRleHQuZ3BfcmVnc1tpXSA9IHJhd3JlZ3MtPmdwcltpXTsK KysKKysgIHRocmVhZC0+bWNvbnRleHQuZ3BfcmVnc1tQVF9MTktdID0gcmF3cmVncy0+bHI7Cisr ICB0aHJlYWQtPm1jb250ZXh0LmdwX3JlZ3NbUFRfTklQXSA9IHJhd3JlZ3MtPnNycjA7CisrICB0 aHJlYWQtPm1jb250ZXh0LmdwX3JlZ3NbUFRfTVNSXSA9IHJhd3JlZ3MtPnNycjE7CisrICB0aHJl YWQtPm1jb250ZXh0LmdwX3JlZ3NbUFRfQ0NSXSA9IHJhd3JlZ3MtPmNyOworKyAgdGhyZWFkLT5t Y29udGV4dC5ncF9yZWdzW1BUX1hFUl0gPSByYXdyZWdzLT54ZXI7CisrICB0aHJlYWQtPm1jb250 ZXh0LmdwX3JlZ3NbUFRfQ1RSXSA9IHJhd3JlZ3MtPmN0cjsKKysgIHRocmVhZC0+bWNvbnRleHQu dl9yZWdzLT52cnNhdmUgPSByYXdyZWdzLT52cnNhdmU7CisrCisrICBmb3IgKGludCBpID0gMDsg aSA8IE1EX0ZMT0FUSU5HU0FWRUFSRUFfUFBDX0ZQUl9DT1VOVDsgaSsrKQorKyAgICAgIHRocmVh ZC0+bWNvbnRleHQuZnBfcmVnc1tpXSA9IHJhd3JlZ3MtPmZsb2F0X3NhdmUuZnByZWdzW2ldOwor KworKyAgdGhyZWFkLT5tY29udGV4dC5mcF9yZWdzW05GUFJFRy0xXSA9IHJhd3JlZ3MtPmZsb2F0 X3NhdmUuZnBzY3I7CisrCisrICBmb3IgKGludCBpID0gMDsgaSA8IE1EX1ZFQ1RPUlNBVkVBUkVB X1BQQ19WUl9DT1VOVDsgaSsrKSB7CisrICAgICAgdGhyZWFkLT5tY29udGV4dC52X3JlZ3MtPnZy cmVnc1tpXVswXSA9IHJhd3JlZ3MtPnZlY3Rvcl9zYXZlLnNhdmVfdnJbaV0uaGlnaCA+PiAzMjsK KysgICAgICB0aHJlYWQtPm1jb250ZXh0LnZfcmVncy0+dnJyZWdzW2ldWzFdID0gcmF3cmVncy0+ dmVjdG9yX3NhdmUuc2F2ZV92cltpXS5oaWdoOworKyAgICAgIHRocmVhZC0+bWNvbnRleHQudl9y ZWdzLT52cnJlZ3NbaV1bMl0gPSByYXdyZWdzLT52ZWN0b3Jfc2F2ZS5zYXZlX3ZyW2ldLmxvdyA+ PiAzMjsKKysgICAgICB0aHJlYWQtPm1jb250ZXh0LnZfcmVncy0+dnJyZWdzW2ldWzNdID0gcmF3 cmVncy0+dmVjdG9yX3NhdmUuc2F2ZV92cltpXS5sb3c7CisrICB9CisrCisrICB0aHJlYWQtPm1j b250ZXh0LnZfcmVncy0+dnNjci52c2NyX3dvcmQgPSByYXdyZWdzLT52ZWN0b3Jfc2F2ZS5zYXZl X3ZzY3IubG93ICYgMHhGRkZGRkZGRjsKKyt9CisrCisgI2Vsc2UKKyAjZXJyb3IgIlRoaXMgY29k ZSBoYXMgbm90IGJlZW4gcG9ydGVkIHRvIHlvdXIgcGxhdGZvcm0geWV0IgorICNlbmRpZgorQEAg LTYyMiw2ICs2NjEsMTIgQEAgUGFyc2VTeXN0ZW1JbmZvKGNvbnN0IE9wdGlvbnMmIG9wdGlvbnMs IENyYXNoZWRQcm9jZXNzKiBjcmFzaGluZm8sCisgIyBlbHNlCisgIyAgZXJyb3IgIlRoaXMgbWlw cyBBQkkgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQgKG4zMikiCisgIyBlbmRpZgorKyNlbGlm IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgIGlmIChzeXNpbmZvLT5wcm9jZXNzb3JfYXJjaGl0 ZWN0dXJlICE9IE1EX0NQVV9BUkNISVRFQ1RVUkVfUFBDNjQpIHsKKysgICAgZnByaW50ZihzdGRl cnIsCisrICAgICAgICAgICAgIlRoaXMgdmVyc2lvbiBvZiBtaW5pZHVtcC0yLWNvcmUgb25seSBz dXBwb3J0cyBQUEM2NC5cbiIpOworKyAgICBleGl0KDEpOworKyAgfQorICNlbHNlCisgI2Vycm9y ICJUaGlzIGNvZGUgaGFzIG5vdCBiZWVuIHBvcnRlZCB0byB5b3VyIHBsYXRmb3JtIHlldCIKKyAj ZW5kaWYKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv Y3Jhc2hwYWQvY3Jhc2hwYWQvQ09OVFJJQlVUT1JTCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL0NPTlRSSUJVVE9SUwor QEAgLTEzLDMgKzEzLDQgQEAgTWFyayBNZW50b3ZhaSA8bWFya0BjaHJvbWl1bS5vcmc+CisgUm9i ZXJ0IFNlc2VrIDxyc2VzZWtAY2hyb21pdW0ub3JnPgorIFNjb3R0IEdyYWhhbSA8c2NvdHRtZ0Bj aHJvbWl1bS5vcmc+CisgSm9zaHVhIFBlcmF6YSA8anBlcmF6YUBjaHJvbWl1bS5vcmc+CisrU2hh d24gQW5hc3Rhc2lvIDxzaGF3bkBhbmFzdGFzLmlvPgorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9jb21wYXQvbGludXgv c3lzL3VzZXIuaAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9jb21wYXQvbGludXgvc3lzL3VzZXIuaAorQEAgLTE1LDYg KzE1LDcgQEAKKyAjaWZuZGVmIENSQVNIUEFEX0NPTVBBVF9MSU5VWF9TWVNfVVNFUl9IXworICNk ZWZpbmUgQ1JBU0hQQURfQ09NUEFUX0xJTlVYX1NZU19VU0VSX0hfCisgCisrI2luY2x1ZGUgPGNz dGRkZWY+CisgI2luY2x1ZGVfbmV4dCA8c3lzL3VzZXIuaD4KKyAKKyAjaW5jbHVkZSA8ZmVhdHVy ZXMuaD4KKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv Y3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4dC5oCisrKysgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFk L21pbmlkdW1wL21pbmlkdW1wX2NvbnRleHQuaAorQEAgLTU5Miw2ICs1OTIsNzAgQEAgc3RydWN0 IE1pbmlkdW1wQ29udGV4dE1JUFM2NCB7CisgICB1aW50NjRfdCBmaXI7CisgfTsKKyAKKysvLyEg XGJyaWVmIHBwYzY0LXNwZWNpZmljIGZsYWdzIGZvciBNaW5pZHVtcFBQQzY0Ojpjb250ZXh0X2Zs YWdzCisrLy8hIEJhc2VkIG9uIG1pbmlkdW1wX2NwdV9wcGM2NC5oIGZyb20gYnJlYWtwYWQKKytl bnVtIE1pbmlkdW1wQ29udGV4dFBQQzY0RmxhZ3MgOiB1aW50MzJfdCB7CisrICAvLyEgXGJyaWVm IElkZW50aWZpZXMgdGhlIGNvbnRleHQgYXMgUFBDNjQuCisrICBrTWluaWR1bXBDb250ZXh0UFBD NjQgPSAweDAxMDAwMDAwLAorKworKyAgLy8hIFxicmllZiBJbmRpY2F0ZXMgdGhlIHZhbGlkaXR5 IG9mIGdlbmVyYWwgcHVycG9zZSByZWdpc3RlcnMuCisrICAvLyEKKysgIC8vISBSZWdpc3RlcnMg YHIwYC1gcjMxYCwgYG5pcGAsIGBtc3JgLCBgbHJgLCBldGMuIGFyZSB2YWxpZC4KKysgIGtNaW5p ZHVtcENvbnRleHRQUEM2NEJhc2UgPSBrTWluaWR1bXBDb250ZXh0UFBDNjQgfCAweDAwMDAwMDAx LAorKworKyAgLy8hIFxicmllZiBJbmRpY2F0ZXMgdGhlIHZhbGlkaXR5IG9mIGZsb2F0aW5nIHBv aW50IHJlZ2lzdGVycy4KKysgIC8vIQorKyAgLy8hIFJlZ2lzdGVycyBgZnAwYC1gZnAzMWAsIGBm cHNjcmAgYXJlIHZhbGlkLgorKyAga01pbmlkdW1wQ29udGV4dFBQQzY0RmxvYXRpbmcgPSBrTWlu aWR1bXBDb250ZXh0UFBDNjQgfCAweDAwMDAwMDA4LAorKworKyAgLy8hIFxicmllZiBJbmRpY2F0 ZXMgdGhlIHZhbGlkaXR5IG9mIEFsdGl2ZWMvVk1YIHJlZ2lzdGVycy4KKysgIC8vIQorKyAgLy8h IFJlZ2lzdGVycyBgdjBgLWB2MzFgLCBgdnNjcmAsIGB2cnNhdmVgLgorKyAga01pbmlkdW1wQ29u dGV4dFBQQzY0VmVjdG9yID0ga01pbmlkdW1wQ29udGV4dFBQQzY0IHwgMHgwMDAwMDAyMCwKKysK KysgIC8vISBcYnJpZWYgSW5kaWNhdGVzIHRoZSB2YWxpZGl0eSBvZiBhbGwgcmVnaXN0ZXJzCisr ICBrTWluaWR1bXBDb250ZXh0UFBDNjRBbGwgPSBrTWluaWR1bXBDb250ZXh0UFBDNjRCYXNlICAg ICB8CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrTWluaWR1bXBDb250ZXh0UFBDNjRG bG9hdGluZyB8CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrTWluaWR1bXBDb250ZXh0 UFBDNjRWZWN0b3IKKyt9OworKworKy8vISBcYnJpZWYgQSBQUEM2NCBDUFUgY29udGV4dCBjYXJy aWVkIGluIGEgbWluaWR1bXAgZmlsZS4KKysvLyEgQmFzZWQgb24gbWluaWR1bXBfY3B1X3BwYzY0 LmggZnJvbSBicmVha3BhZC4KKytzdHJ1Y3QgTWluaWR1bXBDb250ZXh0UFBDNjQgeworKyAgdWlu dDY0X3QgY29udGV4dF9mbGFnczsKKysKKysgIC8vISBcYnJpZWYgR2VuZXJhbCBwdXJwb3NlIHJl Z2lzdGVycy4KKysgIHVpbnQ2NF90IG5pcDsKKysgIHVpbnQ2NF90IG1zcjsKKysgIHVpbnQ2NF90 IHJlZ3NbMzJdOworKyAgdWludDY0X3QgY2NyOworKyAgdWludDY0X3QgeGVyOworKyAgdWludDY0 X3QgbG5rOworKyAgdWludDY0X3QgY3RyOworKworKyAgLy8hIFxicmllZiBGbG9hdGluZyBwb2lu dCByZWdpc3RlcnMuCisrICBkb3VibGUgZnByZWdzWzMyXTsKKysKKysgIC8vISBcYnJpZWYgRlBV IHN0YXR1cyByZWdpc3Rlci4KKysgIGRvdWJsZSBmcHNjcjsKKysKKysgIC8vISBcYnJpZWYgQWx0 aXZlYy9WTVggdmVjdG9yIHJlZ2lzdGVycy4KKysgIHN0cnVjdCB7CisrICAgICAgLy8hIFxicmll ZiBWZWN0b3IgcmVnaXN0ZXJzIGFyZSAxMjhiaXRzLgorKyAgICAgIHVpbnQxMjhfc3RydWN0IHNh dmVfdnJbMzJdOworKyAgICAgIHVpbnQxMjhfc3RydWN0IHNhdmVfdnNjcjsKKysKKysgICAgICAv LyEgXGJyaWVmIFBhZGRpbmcgaW5jbHVkZWQgZm9yIGJyZWFrcGFkIGNvbXBhdGliaWx0aXkuCisr ICAgICAgdWludDMyX3Qgc2F2ZV9wYWQ1WzRdOworKworKyAgICAgIC8vISBcYnJpZWYgVlJTQVZF IHJlZ2lzdGVyLgorKyAgICAgIHVpbnQzMl90IHNhdmVfdnJzYXZlOworKworKyAgICAgIC8vISBc YnJpZWYgUGFkZGluZyBpbmNsdWRlZCBmb3IgYnJlYWtwYWQgY29tcGF0aWJpbHRpeS4KKysgICAg ICB1aW50MzJfdCBzYXZlX3BhZDZbN107CisrICB9IHZyZWdzOworK307CisrCisgfSAgLy8gbmFt ZXNwYWNlIGNyYXNocGFkCisgCisgI2VuZGlmICAvLyBDUkFTSFBBRF9NSU5JRFVNUF9NSU5JRFVN UF9DT05URVhUX0hfCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlkdW1wL21pbmlkdW1wX2NvbnRleHRfd3JpdGVy LmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Ny YXNocGFkL2NyYXNocGFkL21pbmlkdW1wL21pbmlkdW1wX2NvbnRleHRfd3JpdGVyLmNjCitAQCAt MTAxLDYgKzEwMSwxMyBAQCBNaW5pZHVtcENvbnRleHRXcml0ZXI6OkNyZWF0ZUZyb21TbmFwc2hv dChjb25zdCBDUFVDb250ZXh0KiBjb250ZXh0X3NuYXBzaG90KSB7CisgICAgICAgYnJlYWs7Cisg ICAgIH0KKyAKKysgICAgY2FzZSBrQ1BVQXJjaGl0ZWN0dXJlUFBDNjQ6IHsKKysgICAgICBjb250 ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlcj4oKTsKKysg ICAgICByZWludGVycHJldF9jYXN0PE1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyKj4oY29udGV4 dC5nZXQoKSkKKysgICAgICAgICAgLT5Jbml0YWxpemVGcm9tU25hcHNob3QoY29udGV4dF9zbmFw c2hvdC0+cHBjNjQpOworKyAgICAgIGJyZWFrOworKyAgICB9CisrCisgICAgIGRlZmF1bHQ6IHsK KyAgICAgICBMT0coRVJST1IpIDw8ICJ1bmtub3duIGNvbnRleHQgYXJjaGl0ZWN0dXJlICIKKyAg ICAgICAgICAgICAgICAgIDw8IGNvbnRleHRfc25hcHNob3QtPmFyY2hpdGVjdHVyZTsKK0BAIC00 NTMsNCArNDYwLDQ3IEBAIHNpemVfdCBNaW5pZHVtcENvbnRleHRNSVBTNjRXcml0ZXI6OkNvbnRl eHRTaXplKCkgY29uc3QgeworICAgcmV0dXJuIHNpemVvZihjb250ZXh0Xyk7CisgfQorIAorK01p bmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyOjpNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlcigpCisr ICA6IE1pbmlkdW1wQ29udGV4dFdyaXRlcigpLCBjb250ZXh0XygpIHsKKysgICAgY29udGV4dF8u Y29udGV4dF9mbGFncyA9IGtNaW5pZHVtcENvbnRleHRQUEM2NDsKKyt9CisrCisrTWluaWR1bXBD b250ZXh0UFBDNjRXcml0ZXI6On5NaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlcigpID0gZGVmYXVs dDsKKysKKyt2b2lkIE1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyOjpJbml0YWxpemVGcm9tU25h cHNob3QoCisrICAgIGNvbnN0IENQVUNvbnRleHRQUEM2NCogY29udGV4dF9zbmFwc2hvdCkgewor KyAgRENIRUNLX0VRKHN0YXRlKCksIGtTdGF0ZU11dGFibGUpOworKyAgRENIRUNLX0VRKGNvbnRl eHRfLmNvbnRleHRfZmxhZ3MsIGtNaW5pZHVtcENvbnRleHRQUEM2NCk7CisrCisrICBjb250ZXh0 Xy5jb250ZXh0X2ZsYWdzID0ga01pbmlkdW1wQ29udGV4dFBQQzY0QWxsOworKworKyAgbWVtY3B5 KGNvbnRleHRfLnJlZ3MsIGNvbnRleHRfc25hcHNob3QtPnJlZ3MsIHNpemVvZihjb250ZXh0Xy5y ZWdzKSk7CisrICBjb250ZXh0Xy5uaXAgPSBjb250ZXh0X3NuYXBzaG90LT5uaXA7CisrICBjb250 ZXh0Xy5tc3IgPSBjb250ZXh0X3NuYXBzaG90LT5tc3I7CisrICBjb250ZXh0Xy5jY3IgPSBjb250 ZXh0X3NuYXBzaG90LT5jY3I7CisrICBjb250ZXh0Xy54ZXIgPSBjb250ZXh0X3NuYXBzaG90LT54 ZXI7CisrICBjb250ZXh0Xy5sbmsgPSBjb250ZXh0X3NuYXBzaG90LT5sbms7CisrICBjb250ZXh0 Xy5jdHIgPSBjb250ZXh0X3NuYXBzaG90LT5jdHI7CisrCisrICBtZW1jcHkoY29udGV4dF8uZnBy ZWdzLCBjb250ZXh0X3NuYXBzaG90LT5mcHJlZ3MsIHNpemVvZihjb250ZXh0Xy5mcHJlZ3MpKTsK KysgIGNvbnRleHRfLmZwc2NyID0gY29udGV4dF9zbmFwc2hvdC0+ZnBzY3I7CisrCisrICBtZW1j cHkoY29udGV4dF8udnJlZ3Muc2F2ZV92ciwgY29udGV4dF9zbmFwc2hvdC0+dnJlZ3Muc2F2ZV92 ciwKKysgICAgICAgICBzaXplb2YoY29udGV4dF8udnJlZ3Muc2F2ZV92cikpOworKyAgbWVtY3B5 KCZjb250ZXh0Xy52cmVncy5zYXZlX3ZzY3IsICZjb250ZXh0X3NuYXBzaG90LT52cmVncy5zYXZl X3ZzY3IsCisrICAgICAgICAgc2l6ZW9mKGNvbnRleHRfLnZyZWdzLnNhdmVfdnNjcikpOworKyAg Y29udGV4dF8udnJlZ3Muc2F2ZV92cnNhdmUgPSBjb250ZXh0X3NuYXBzaG90LT52cmVncy5zYXZl X3Zyc2F2ZTsKKyt9CisrCisrYm9vbCBNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlcjo6V3JpdGVP YmplY3QoCisrICAgIEZpbGVXcml0ZXJJbnRlcmZhY2UqIGZpbGVfd3JpdGVyKSB7CisrICBEQ0hF Q0tfRVEoc3RhdGUoKSwga1N0YXRlV3JpdGFibGUpOworKyAgcmV0dXJuIGZpbGVfd3JpdGVyLT5X cml0ZSgmY29udGV4dF8sIHNpemVvZihjb250ZXh0XykpOworK30KKysKKytzaXplX3QgTWluaWR1 bXBDb250ZXh0UFBDNjRXcml0ZXI6OkNvbnRleHRTaXplKCkgY29uc3QgeworKyAgRENIRUNLX0dF KHN0YXRlKCksIGtTdGF0ZUZyb3plbik7CisrICByZXR1cm4gc2l6ZW9mKGNvbnRleHRfKTsKKyt9 CisrCisgfSAgLy8gbmFtZXNwYWNlIGNyYXNocGFkCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlkdW1wL21pbmlk dW1wX2NvbnRleHRfd3JpdGVyLmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4 dF93cml0ZXIuaAorQEAgLTMxNSw2ICszMTUsNDUgQEAgY2xhc3MgTWluaWR1bXBDb250ZXh0TUlQ UzY0V3JpdGVyIGZpbmFsIDogcHVibGljIE1pbmlkdW1wQ29udGV4dFdyaXRlciB7CisgICBESVNB TExPV19DT1BZX0FORF9BU1NJR04oTWluaWR1bXBDb250ZXh0TUlQUzY0V3JpdGVyKTsKKyB9Owor IAorK2NsYXNzIE1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyIGZpbmFsIDogcHVibGljIE1pbmlk dW1wQ29udGV4dFdyaXRlciB7CisrIHB1YmxpYzoKKysgIE1pbmlkdW1wQ29udGV4dFBQQzY0V3Jp dGVyKCk7CisrICB+TWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXIoKSBvdmVycmlkZTsKKysKKysg IC8vISBcYnJpZWYgSW5pdGFsaXplcyB0aGUgTWluaWR1bXBDb250ZXh0UFBDNjQgYmFzZWQgb24g XGEgY29udGV4dF9zbmFwc2hvdC4KKysgIC8vIQorKyAgLy8hIFxwYXJhbVtpbl0gY29udGV4dF9z bmFwc2hvdCBUaGUgY29udGV4dCBzbmFwc2hvdCB0byB1c2UgYXMgc291cmNlIGRhdGEuCisrICAv LyEKKysgIC8vISBcbm90ZSBWYWxpZCBpbiAja1N0YXRlTXV0YWJsZS4gTm8gbXV0YXRpb24gb2Yg Y29udGV4dCgpIG1heSBiZSBkb25lIGJlZm9yZQorKyAgLy8hICAgICBjYWxsaW5nIHRoaXMgbWV0 aG9kLCBhbmQgaXQgaXMgbm90IG5vcm1hbGx5IG5lY2Vzc2FyeSB0byBhbHRlcgorKyAgLy8hICAg ICBjb250ZXh0KCkgYWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZC4KKysgIHZvaWQgSW5pdGFsaXpl RnJvbVNuYXBzaG90KGNvbnN0IENQVUNvbnRleHRQUEM2NCogY29udGV4dF9zbmFwc2hvdCk7Cisr CisrICAvLyEgXGJyaWVmIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBjb250ZXh0IHN0cnVjdHVy ZSB0aGF0IHRoaXMgb2JqZWN0IHdpbGwKKysgIC8vISAgICAgd3JpdGUuCisrICAvLyEKKysgIC8v ISBcYXR0ZW50aW9uIFRoaXMgcmV0dXJucyBhIG5vbi1gY29uc3RgIHBvaW50ZXIgdG8gdGhpcyBv YmplY3TigJlzIHByaXZhdGUKKysgIC8vISAgICAgZGF0YSBzbyB0aGF0IGEgY2FsbGVyIGNhbiBw b3B1bGF0ZSB0aGUgY29udGV4dCBzdHJ1Y3R1cmUgZGlyZWN0bHkuCisrICAvLyEgICAgIFRoaXMg aXMgZG9uZSBiZWNhdXNlIHByb3ZpZGluZyBzZXR0ZXIgaW50ZXJmYWNlcyB0byBlYWNoIGZpZWxk IGluIHRoZQorKyAgLy8hICAgICBjb250ZXh0IHN0cnVjdHVyZSB3b3VsZCBiZSB1bndpZWxkeSBh bmQgY3VtYmVyc29tZS4gQ2FyZSBtdXN0IGJlIHRha2VuCisrICAvLyEgICAgIHRvIHBvcHVsYXRl IHRoZSBjb250ZXh0IHN0cnVjdHVyZSBjb3JyZWN0bHkuIFRoZSBjb250ZXh0IHN0cnVjdHVyZQor KyAgLy8hICAgICBtdXN0IG9ubHkgYmUgbW9kaWZpZWQgd2hpbGUgdGhpcyBvYmplY3QgaXMgaW4g dGhlICNrU3RhdGVNdXRhYmxlCisrICAvLyEgICAgIHN0YXRlLgorKyAgTWluaWR1bXBDb250ZXh0 UFBDNjQqIGNvbnRleHQoKSB7IHJldHVybiAmY29udGV4dF87IH0KKysKKysgcHJvdGVjdGVkOgor KyAgLy8gTWluaWR1bXBXcml0YWJsZToKKysgIGJvb2wgV3JpdGVPYmplY3QoRmlsZVdyaXRlcklu dGVyZmFjZSogZmlsZV93cml0ZXIpIG92ZXJyaWRlOworKworKyAgLy8gTWluaWR1bXBDb250ZXh0 V3JpdGVyOgorKyAgc2l6ZV90IENvbnRleHRTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CisrCisrIHBy aXZhdGU6CisrICBNaW5pZHVtcENvbnRleHRQUEM2NCBjb250ZXh0XzsKKysKKysgIERJU0FMTE9X X0NPUFlfQU5EX0FTU0lHTihNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlcik7CisrfTsKKysKKyB9 ICAvLyBuYW1lc3BhY2UgY3Jhc2hwYWQKKyAKKyAjZW5kaWYgIC8vIENSQVNIUEFEX01JTklEVU1Q X01JTklEVU1QX0NPTlRFWFRfV1JJVEVSX0hfCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlkdW1wL21pbmlkdW1w X2NvbnRleHRfd3JpdGVyX3Rlc3QuY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29u dGV4dF93cml0ZXJfdGVzdC5jYworQEAgLTIxMyw2ICsyMTMsMjEgQEAgVEVTVChNaW5pZHVtcENv bnRleHRXcml0ZXIsIE1JUFM2NF9Gcm9tU25hcHNob3QpIHsKKyAgICAgICBjb250ZXh0LCBFeHBl Y3RNaW5pZHVtcENvbnRleHRNSVBTNjQsIGtTZWVkKTsKKyB9CisgCisrVEVTVChNaW5pZHVtcENv bnRleHRXcml0ZXIsIFBQQzY0X1plcm9zKSB7CisrICBFbXB0eUNvbnRleHRUZXN0PE1pbmlkdW1w Q29udGV4dFBQQzY0V3JpdGVyLCBNaW5pZHVtcENvbnRleHRQUEM2ND4oCisrICAgIEV4cGVjdE1p bmlkdW1wQ29udGV4dFBQQzY0KTsKKyt9CisrCisrVEVTVChNaW5pZHVtcENvbnRleHRXcml0ZXIs IFBQQzY0X0Zyb21TbmFwc2hvdCkgeworKyAgY29uc3RleHByIHVpbnQzMl90IGtTZWVkID0gNjQ7 CisrICBDUFVDb250ZXh0UFBDNjQgY29udGV4dF9wcGM2NDsKKysgIENQVUNvbnRleHQgY29udGV4 dDsKKysgIGNvbnRleHQucHBjNjQgPSAmY29udGV4dF9wcGM2NDsKKysgIEluaXRpYWxpemVDUFVD b250ZXh0UFBDNjQoJmNvbnRleHQsIGtTZWVkKTsKKysgIEZyb21TbmFwc2hvdFRlc3Q8TWluaWR1 bXBDb250ZXh0UFBDNjRXcml0ZXIsIE1pbmlkdW1wQ29udGV4dFBQQzY0PigKKysgICAgICBjb250 ZXh0LCBFeHBlY3RNaW5pZHVtcENvbnRleHRQUEM2NCwga1NlZWQpOworK30KKysKKyB9ICAvLyBu YW1lc3BhY2UKKyB9ICAvLyBuYW1lc3BhY2UgdGVzdAorIH0gIC8vIG5hbWVzcGFjZSBjcmFzaHBh ZAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFz aHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9taXNjX2luZm9fd3JpdGVyLmNjCisrKysg cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2Ny YXNocGFkL21pbmlkdW1wL21pbmlkdW1wX21pc2NfaW5mb193cml0ZXIuY2MKK0BAIC0xMjYsNiAr MTI2LDggQEAgc3RkOjpzdHJpbmcgTWluaWR1bXBNaXNjSW5mb0RlYnVnQnVpbGRTdHJpbmcoKSB7 CisgICBzdGF0aWMgY29uc3RleHByIGNoYXIga0NQVVtdID0gIm1pcHMiOworICNlbGlmIGRlZmlu ZWQoQVJDSF9DUFVfTUlQUzY0RUwpCisgICBzdGF0aWMgY29uc3RleHByIGNoYXIga0NQVVtdID0g Im1pcHM2NCI7CisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NCkKKysgIHN0YXRpYyBjb25z dGV4cHIgY2hhciBrQ1BVW10gPSAicHBjNjQiOworICNlbHNlCisgI2Vycm9yIGRlZmluZSBrQ1BV IGZvciB0aGlzIENQVQorICNlbmRpZgorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9jYXB0dXJlX21lbW9y eS5jYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9j cmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9jYXB0dXJlX21lbW9yeS5jYworQEAgLTExMSw2ICsx MTEsMTEgQEAgdm9pZCBDYXB0dXJlTWVtb3J5OjpQb2ludGVkVG9CeUNvbnRleHQoY29uc3QgQ1BV Q29udGV4dCYgY29udGV4dCwKKyAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmFzZTo6c2l6ZShj b250ZXh0Lm1pcHNlbC0+cmVncyk7ICsraSkgeworICAgICBNYXliZUNhcHR1cmVNZW1vcnlBcm91 bmQoZGVsZWdhdGUsIGNvbnRleHQubWlwc2VsLT5yZWdzW2ldKTsKKyAgIH0KKysjZWxpZiBkZWZp bmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKysgIE1heWJlQ2FwdHVyZU1lbW9yeUFyb3VuZChk ZWxlZ2F0ZSwgY29udGV4dC5wcGM2NC0+bmlwKTsKKysgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg YmFzZTo6c2l6ZShjb250ZXh0LnBwYzY0LT5yZWdzKTsgKytpKSB7CisrICAgIE1heWJlQ2FwdHVy ZU1lbW9yeUFyb3VuZChkZWxlZ2F0ZSwgY29udGV4dC5wcGM2NC0+cmVnc1tpXSk7CisrICB9Cisg I2Vsc2UKKyAjZXJyb3IgUG9ydC4KKyAjZW5kaWYKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvY3B1X2Fy Y2hpdGVjdHVyZS5oCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2NwdV9hcmNoaXRlY3R1cmUuaAorQEAg LTQzLDcgKzQzLDEwIEBAIGVudW0gQ1BVQXJjaGl0ZWN0dXJlIHsKKyAgIGtDUFVBcmNoaXRlY3R1 cmVNSVBTRUwsCisgCisgICAvLyEgXGJyaWVmIDY0LWJpdCBNSVBTRUwuCistICBrQ1BVQXJjaGl0 ZWN0dXJlTUlQUzY0RUwKKysgIGtDUFVBcmNoaXRlY3R1cmVNSVBTNjRFTCwKKysKKysgIC8vISBc YnJpZWYgNjQtYml0IFBQQzY0LgorKyAga0NQVUFyY2hpdGVjdHVyZVBQQzY0CisgfTsKKyAKKyB9 ICAvLyBuYW1lc3BhY2UgY3Jhc2hwYWQKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvY3B1X2NvbnRleHQu Y2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jh c2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvY3B1X2NvbnRleHQuY2MKK0BAIC0xNjksNiArMTY5LDgg QEAgdWludDY0X3QgQ1BVQ29udGV4dDo6SW5zdHJ1Y3Rpb25Qb2ludGVyKCkgY29uc3QgeworICAg ICAgIHJldHVybiBhcm0tPnBjOworICAgICBjYXNlIGtDUFVBcmNoaXRlY3R1cmVBUk02NDoKKyAg ICAgICByZXR1cm4gYXJtNjQtPnBjOworKyAgICBjYXNlIGtDUFVBcmNoaXRlY3R1cmVQUEM2NDoK KysgICAgICByZXR1cm4gcHBjNjQtPm5pcDsKKyAgICAgZGVmYXVsdDoKKyAgICAgICBOT1RSRUFD SEVEKCk7CisgICAgICAgcmV0dXJuIH4wdWxsOworQEAgLTE4NSw2ICsxODcsOCBAQCB1aW50NjRf dCBDUFVDb250ZXh0OjpTdGFja1BvaW50ZXIoKSBjb25zdCB7CisgICAgICAgcmV0dXJuIGFybS0+ c3A7CisgICAgIGNhc2Uga0NQVUFyY2hpdGVjdHVyZUFSTTY0OgorICAgICAgIHJldHVybiBhcm02 NC0+c3A7CisrICAgIGNhc2Uga0NQVUFyY2hpdGVjdHVyZVBQQzY0OgorKyAgICAgIHJldHVybiBw cGM2NC0+cmVnc1sxXTsKKyAgICAgZGVmYXVsdDoKKyAgICAgICBOT1RSRUFDSEVEKCk7CisgICAg ICAgcmV0dXJuIH4wdWxsOworQEAgLTE5Niw2ICsyMDAsNyBAQCBib29sIENQVUNvbnRleHQ6Oklz NjRCaXQoKSBjb25zdCB7CisgICAgIGNhc2Uga0NQVUFyY2hpdGVjdHVyZVg4Nl82NDoKKyAgICAg Y2FzZSBrQ1BVQXJjaGl0ZWN0dXJlQVJNNjQ6CisgICAgIGNhc2Uga0NQVUFyY2hpdGVjdHVyZU1J UFM2NEVMOgorKyAgICBjYXNlIGtDUFVBcmNoaXRlY3R1cmVQUEM2NDoKKyAgICAgICByZXR1cm4g dHJ1ZTsKKyAgICAgY2FzZSBrQ1BVQXJjaGl0ZWN0dXJlWDg2OgorICAgICBjYXNlIGtDUFVBcmNo aXRlY3R1cmVBUk06CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2NwdV9jb250ZXh0LmgKKysrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hw YWQvc25hcHNob3QvY3B1X2NvbnRleHQuaAorQEAgLTM1Miw2ICszNTIsMjQgQEAgc3RydWN0IENQ VUNvbnRleHRNSVBTNjQgeworICAgdWludDY0X3QgZmlyOworIH07CisgCisrLy8hIFxicmllZiBB IGNvbnRleHQgc3RydWN0dXJlIGNhcnJ5aW5nIFBQQzY0IENQVSBzdGF0ZS4KKytzdHJ1Y3QgQ1BV Q29udGV4dFBQQzY0IHsKKysgIHVpbnQ2NF90IG5pcDsKKysgIHVpbnQ2NF90IG1zcjsKKysgIHVp bnQ2NF90IHJlZ3NbMzJdOworKyAgdWludDY0X3QgY2NyOworKyAgdWludDY0X3QgeGVyOworKyAg dWludDY0X3QgbG5rOworKyAgdWludDY0X3QgY3RyOworKyAgZG91YmxlIGZwcmVnc1szMl07Cisr ICBkb3VibGUgZnBzY3I7CisrICBzdHJ1Y3QgeworKyAgICB1aW50MTI4X3N0cnVjdCBzYXZlX3Zy WzMyXTsKKysgICAgdWludDEyOF9zdHJ1Y3Qgc2F2ZV92c2NyOworKyAgICB1aW50MzJfdCBzYXZl X3Zyc2F2ZTsKKysgIH0gdnJlZ3M7CisrfTsKKysKKyAvLyEgXGJyaWVmIEEgY29udGV4dCBzdHJ1 Y3R1cmUgY2FwYWJsZSBvZiBjYXJyeWluZyB0aGUgY29udGV4dCBvZiBhbnkgc3VwcG9ydGVkCisg Ly8hICAgICBDUFUgYXJjaGl0ZWN0dXJlLgorIHN0cnVjdCBDUFVDb250ZXh0IHsKK0BAIC0zODIs NiArNDAwLDcgQEAgc3RydWN0IENQVUNvbnRleHQgeworICAgICBDUFVDb250ZXh0QVJNNjQqIGFy bTY0OworICAgICBDUFVDb250ZXh0TUlQUyogbWlwc2VsOworICAgICBDUFVDb250ZXh0TUlQUzY0 KiBtaXBzNjQ7CisrICAgIENQVUNvbnRleHRQUEM2NCogcHBjNjQ7CisgICB9OworIH07CisgCist LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFk L2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2NwdV9jb250ZXh0X2xpbnV4LmgKKysrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQv c25hcHNob3QvbGludXgvY3B1X2NvbnRleHRfbGludXguaAorQEAgLTE1LDYgKzE1LDcgQEAKKyAj aWZuZGVmIENSQVNIUEFEX1NOQVBTSE9UX0xJTlVYX0NQVV9DT05URVhUX0xJTlVYX0hfCisgI2Rl ZmluZSBDUkFTSFBBRF9TTkFQU0hPVF9MSU5VWF9DUFVfQ09OVEVYVF9MSU5VWF9IXworIAorKyNp bmNsdWRlIDxjc3RyaW5nPgorICNpbmNsdWRlICJidWlsZC9idWlsZF9jb25maWcuaCIKKyAjaW5j bHVkZSAic25hcHNob3QvY3B1X2NvbnRleHQuaCIKKyAjaW5jbHVkZSAic25hcHNob3QvbGludXgv c2lnbmFsX2NvbnRleHQuaCIKK0BAIC0xNzQsNiArMTc1LDc4IEBAIHZvaWQgSW5pdGlhbGl6ZUNQ VUNvbnRleHRNSVBTKAorIAorICNlbmRpZiAgLy8gQVJDSF9DUFVfTUlQU19GQU1JTFkgfHwgRE9Y WUdFTgorIAorKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkgfHwgRE9YWUdFTgor KworKy8vISBcYnJpZWYgSW5pdGFsaXplcyBhIENQVUNvbnRleHRQUEM2NCBzdHJ1Y3R1cmUgZnJv bSBuYXRpdmUgY29udGV4dAorKy8vISAgICAgc3RydWN0dXJlcyBvbiBMaW51eC4KKysvLyEKKysv LyEgXHBhcmFtW2luXSB0aHJlYWRfY29udGV4dCBUaGUgbmF0aXZlIHRocmVhZCBjb250ZXh0Lgor Ky8vISBccGFyYW1baW5dIGZsb2F0X2NvbnRleHQgVGhlIG5hdGl2ZSBmbG9hdCBjb250ZXh0Lgor Ky8vISBccGFyYW1baW5dIHZlY3Rvcl9jb250ZXh0IFRoZSBuYXRpdmUgdmVjdG9yIGNvbnRleHQu CisrLy8hIFxwYXJhbVtvdXRdIGNvbnRleHQgVGhlIENQVUNvbnRleHRQUEM2NCBzdHJ1Y3R1cmUg dG8gaW5pdGFsaXplLgorK3RlbXBsYXRlIDx0eXBlbmFtZSBUcmFpdHM+Cisrdm9pZCBJbml0aWFs aXplQ1BVQ29udGV4dFBQQzY0KAorKyAgICBjb25zdCBUaHJlYWRDb250ZXh0Ojp0NjRfdCYgdGhy ZWFkX2NvbnRleHQsCisrICAgIGNvbnN0IEZsb2F0Q29udGV4dDo6ZjY0X3QmIGZsb2F0X2NvbnRl eHQsCisrICAgIGNvbnN0IFZlY3RvckNvbnRleHQ6OnY2NF90JiB2ZWN0b3JfY29udGV4dCwKKysg ICAgdHlwZW5hbWUgVHJhaXRzOjpDUFVDb250ZXh0KiBjb250ZXh0KSB7CisrCisrICBtZW1jcHko Y29udGV4dC0+cmVncywgdGhyZWFkX2NvbnRleHQuZ3ByLCBzaXplb2YoY29udGV4dC0+cmVncykp OworKyAgY29udGV4dC0+bmlwID0gdGhyZWFkX2NvbnRleHQubmlwOworKyAgY29udGV4dC0+bXNy ID0gdGhyZWFkX2NvbnRleHQubXNyOworKyAgY29udGV4dC0+Y2NyID0gdGhyZWFkX2NvbnRleHQu Y2NyOworKyAgY29udGV4dC0+eGVyID0gdGhyZWFkX2NvbnRleHQueGVyOworKyAgY29udGV4dC0+ bG5rID0gdGhyZWFkX2NvbnRleHQubG5rOworKyAgY29udGV4dC0+Y3RyID0gdGhyZWFkX2NvbnRl eHQuY3RyOworKworKyAgbWVtY3B5KGNvbnRleHQtPmZwcmVncywgZmxvYXRfY29udGV4dC5mcHJl Z3MsIHNpemVvZihjb250ZXh0LT5mcHJlZ3MpKTsKKysgIGNvbnRleHQtPmZwc2NyID0gZmxvYXRf Y29udGV4dC5mcHNjcjsKKysKKysgIGZvciAodWludDhfdCBpID0gMDsgaSA8IDMyOyBpKyspIHsK KysgICAgY29udGV4dC0+dnJlZ3Muc2F2ZV92cltpXSA9IHsKKysgICAgICAoKCh1aW50NjRfdCl2 ZWN0b3JfY29udGV4dC52cnJlZ3NbaV1bMF0pIDw8IDMyKSB8CisrICAgICAgICB2ZWN0b3JfY29u dGV4dC52cnJlZ3NbaV1bMV0sCisrICAgICAgKCgodWludDY0X3QpdmVjdG9yX2NvbnRleHQudnJy ZWdzW2ldWzJdKSA8PCAzMikgfAorKyAgICAgICAgdmVjdG9yX2NvbnRleHQudnJyZWdzW2ldWzNd CisrICAgIH07CisrICB9CisrICBjb250ZXh0LT52cmVncy5zYXZlX3Zyc2F2ZSA9IHZlY3Rvcl9j b250ZXh0LnZyc2F2ZTsKKysgIGNvbnRleHQtPnZyZWdzLnNhdmVfdnNjciA9IHswLCAodWludDY0 X3QpdmVjdG9yX2NvbnRleHQudnNjci52c2NyX3dvcmR9OworK30KKysKKyt0ZW1wbGF0ZSA8dHlw ZW5hbWUgVHJhaXRzPgorK3ZvaWQgSW5pdGlhbGl6ZUNQVUNvbnRleHRQUEM2NCgKKysgICAgY29u c3QgU2lnbmFsVGhyZWFkQ29udGV4dDY0ICZ0aHJlYWRfY29udGV4dCwKKysgICAgY29uc3QgU2ln bmFsRmxvYXRDb250ZXh0NjQgJmZsb2F0X2NvbnRleHQsCisrICAgIGNvbnN0IFNpZ25hbFZlY3Rv ckNvbnRleHQ2NCAmdmVjdG9yX2NvbnRleHQsCisrICAgIHR5cGVuYW1lIFRyYWl0czo6Q1BVQ29u dGV4dCogY29udGV4dCkgeworKworKyAgbWVtY3B5KGNvbnRleHQtPnJlZ3MsIHRocmVhZF9jb250 ZXh0LnJlZ3MsIHNpemVvZihjb250ZXh0LT5yZWdzKSk7CisrICBjb250ZXh0LT5uaXAgPSB0aHJl YWRfY29udGV4dC5uaXA7CisrICBjb250ZXh0LT5tc3IgPSB0aHJlYWRfY29udGV4dC5tc3I7Cisr ICBjb250ZXh0LT5jY3IgPSB0aHJlYWRfY29udGV4dC5jY3I7CisrICBjb250ZXh0LT54ZXIgPSB0 aHJlYWRfY29udGV4dC54ZXI7CisrICBjb250ZXh0LT5sbmsgPSB0aHJlYWRfY29udGV4dC5sbms7 CisrICBjb250ZXh0LT5jdHIgPSB0aHJlYWRfY29udGV4dC5jdHI7CisrCisrICBtZW1jcHkoY29u dGV4dC0+ZnByZWdzLCBmbG9hdF9jb250ZXh0LnJlZ3MsIHNpemVvZihjb250ZXh0LT5mcHJlZ3Mp KTsKKysgIGNvbnRleHQtPmZwc2NyID0gZmxvYXRfY29udGV4dC5mcHNjcjsKKysKKysgIGZvciAo dWludDhfdCBpID0gMDsgaSA8IDMyOyBpKyspIHsKKysgICAgY29udGV4dC0+dnJlZ3Muc2F2ZV92 cltpXSA9IHsKKysgICAgICAoKCh1aW50NjRfdCl2ZWN0b3JfY29udGV4dC52cnJlZ3NbaV1bMF0p IDw8IDMyKSB8CisrICAgICAgICB2ZWN0b3JfY29udGV4dC52cnJlZ3NbaV1bMV0sCisrICAgICAg KCgodWludDY0X3QpdmVjdG9yX2NvbnRleHQudnJyZWdzW2ldWzJdKSA8PCAzMikgfAorKyAgICAg ICAgdmVjdG9yX2NvbnRleHQudnJyZWdzW2ldWzNdCisrICAgIH07CisrICB9CisrICBjb250ZXh0 LT52cmVncy5zYXZlX3Zyc2F2ZSA9IHZlY3Rvcl9jb250ZXh0LnZyc2F2ZTsKKysgIGNvbnRleHQt PnZyZWdzLnNhdmVfdnNjciA9IHswLCAodWludDY0X3QpdmVjdG9yX2NvbnRleHQudnNjci52c2Ny X3dvcmR9OworK30KKysKKysKKysjZW5kaWYKKysKKyB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwK KyB9ICAvLyBuYW1lc3BhY2UgY3Jhc2hwYWQKKyAKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgv ZGVidWdfcmVuZGV6dm91c190ZXN0LmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2RlYnVn X3JlbmRlenZvdXNfdGVzdC5jYworQEAgLTE1OSw5ICsxNTksMTEgQEAgdm9pZCBUZXN0QWdhaW5z dFRhcmdldChQdHJhY2VDb25uZWN0aW9uKiBjb25uZWN0aW9uKSB7CisgICAgICAgICAgIGNvbnN0 IGJvb2wgaXNfdmRzb19tYXBwaW5nID0KKyAgICAgICAgICAgICAgIGRldmljZSA9PSAwICYmIGlu b2RlID09IDAgJiYgbWFwcGluZ19uYW1lID09ICJbdmRzb10iOworICAgICAgICAgICBzdGF0aWMg Y29uc3RleHByIGNoYXIga1ByZWZpeFtdID0gImxpbnV4LXZkc28uc28uIjsKKysgICAgICAgICAg c3RhdGljIGNvbnN0ZXhwciBjaGFyIGtQcmVmaXg2NFtdID0gImxpbnV4LXZkc282NC5zby4iOwor ICAgICAgICAgICByZXR1cm4gaXNfdmRzb19tYXBwaW5nID09CisgICAgICAgICAgICAgICAgICAo bW9kdWxlX25hbWUuZW1wdHkoKSB8fAorLSAgICAgICAgICAgICAgICAgIG1vZHVsZV9uYW1lLmNv bXBhcmUoMCwgc3RybGVuKGtQcmVmaXgpLCBrUHJlZml4KSA9PSAwKTsKKysgICAgICAgICAgICAg ICAgICBtb2R1bGVfbmFtZS5jb21wYXJlKDAsIHN0cmxlbihrUHJlZml4KSwga1ByZWZpeCkgPT0g MCB8fAorKyAgICAgICAgICAgICAgICAgIG1vZHVsZV9uYW1lLmNvbXBhcmUoMCwgc3RybGVuKGtQ cmVmaXg2NCksIGtQcmVmaXg2NCkgPT0gMCk7CisgICAgICAgICB9LAorICAgICAgICAgbW9kdWxl X21hcHBpbmctPm5hbWUsCisgICAgICAgICBtb2R1bGVfbWFwcGluZy0+ZGV2aWNlLAorLS0tIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFz aHBhZC9zbmFwc2hvdC9saW51eC9leGNlcHRpb25fc25hcHNob3RfbGludXguY2MKKysrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hw YWQvc25hcHNob3QvbGludXgvZXhjZXB0aW9uX3NuYXBzaG90X2xpbnV4LmNjCitAQCAtMzIzLDYg KzMyMyw2OSBAQCBib29sIEV4Y2VwdGlvblNuYXBzaG90TGludXg6OlJlYWRDb250ZXh0PENvbnRl eHRUcmFpdHM2ND4oCisgICAgICAgcmVhZGVyLCBjb250ZXh0X2FkZHJlc3MsIGNvbnRleHRfLm1p cHM2NCk7CisgfQorIAorKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQorKwor K3RlbXBsYXRlIDx0eXBlbmFtZSBUcmFpdHM+Cisrc3RhdGljIGJvb2wgUmVhZENvbnRleHQoUHJv Y2Vzc1JlYWRlckxpbnV4KiByZWFkZXIsCisrICAgICAgICAgICAgICAgICAgICAgICAgTGludXhW TUFkZHJlc3MgY29udGV4dF9hZGRyZXNzLAorKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVu YW1lIFRyYWl0czo6Q1BVQ29udGV4dCogZGVzdF9jb250ZXh0KSB7CisrICBjb25zdCBQcm9jZXNz TWVtb3J5KiBtZW1vcnkgPSByZWFkZXItPk1lbW9yeSgpOworKworKyAgTGludXhWTUFkZHJlc3Mg Z3BfcmVnc19hZGRyZXNzID0gY29udGV4dF9hZGRyZXNzICsKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG9mZnNldG9mKFVDb250ZXh0LCBtY29udGV4dCkgKworKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0b2YodHlwZW5hbWUgVHJhaXRzOjpNQ29u dGV4dCwgZ3BfcmVncyk7CisrCisrICB0eXBlbmFtZSBUcmFpdHM6OlNpZ25hbFRocmVhZENvbnRl eHQgdGhyZWFkX2NvbnRleHQ7CisrICBpZiAoIW1lbW9yeS0+UmVhZChncF9yZWdzX2FkZHJlc3Ms IHNpemVvZih0aHJlYWRfY29udGV4dCksICZ0aHJlYWRfY29udGV4dCkpIHsKKysgICAgTE9HKEVS Uk9SKSA8PCAiQ291bGRuJ3QgcmVhZCBncF9yZWdzISI7CisrICAgIHJldHVybiBmYWxzZTsKKysg IH0KKysKKysgIExpbnV4Vk1BZGRyZXNzIGZwX3JlZ3NfYWRkcmVzcyA9IGNvbnRleHRfYWRkcmVz cyArCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRvZihVQ29udGV4 dCwgbWNvbnRleHQpICsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNl dG9mKHR5cGVuYW1lIFRyYWl0czo6TUNvbnRleHQsIGZwX3JlZ3MpOworKworKyAgdHlwZW5hbWUg VHJhaXRzOjpTaWduYWxGbG9hdENvbnRleHQgZnBfY29udGV4dDsKKysgIGlmICghbWVtb3J5LT5S ZWFkKGZwX3JlZ3NfYWRkcmVzcywgc2l6ZW9mKGZwX2NvbnRleHQpLCAmZnBfY29udGV4dCkpIHsK KysgICAgTE9HKEVSUk9SKSA8PCAiQ291bGRuJ3QgcmVhZCBmcF9yZWdzISI7CisrICAgIHJldHVy biBmYWxzZTsKKysgIH0KKysKKysgIExpbnV4Vk1BZGRyZXNzIHZfcmVnc19wdHJfYWRkcmVzcyA9 IGNvbnRleHRfYWRkcmVzcyArCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9m ZnNldG9mKFVDb250ZXh0LCBtY29udGV4dCkgKworKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvZmZzZXRvZih0eXBlbmFtZSBUcmFpdHM6Ok1Db250ZXh0LCB2bXhfcmVzZXJ2ZSkg KyA4OworKworKyAgdHlwZW5hbWUgVHJhaXRzOjpTaWduYWxWZWN0b3JDb250ZXh0IHZfY29udGV4 dDsKKysgIGlmICghbWVtb3J5LT5SZWFkKHZfcmVnc19wdHJfYWRkcmVzcywgc2l6ZW9mKHZfY29u dGV4dCksICZ2X2NvbnRleHQpKSB7CisrICAgIExPRyhFUlJPUikgPDwgIkNvdWxkbid0IHJlYWQg dl9yZWdzISI7CisrICAgIHJldHVybiBmYWxzZTsKKysgIH0KKysKKysgIEluaXRpYWxpemVDUFVD b250ZXh0UFBDNjQ8Q29udGV4dFRyYWl0czY0Pih0aHJlYWRfY29udGV4dCwgZnBfY29udGV4dCwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgdl9jb250ZXh0LCBkZXN0X2NvbnRleHQpOwor KworKyAgcmV0dXJuIHRydWU7CisrfQorKworK3RlbXBsYXRlPD4KKytib29sIEV4Y2VwdGlvblNu YXBzaG90TGludXg6OlJlYWRDb250ZXh0PENvbnRleHRUcmFpdHM2ND4oCisrICAgIFByb2Nlc3NS ZWFkZXJMaW51eCogcmVhZGVyLAorKyAgICBMaW51eFZNQWRkcmVzcyBjb250ZXh0X2FkZHJlc3Mp IHsKKysgIGNvbnRleHRfLmFyY2hpdGVjdHVyZSA9IGtDUFVBcmNoaXRlY3R1cmVQUEM2NDsKKysg IGNvbnRleHRfLnBwYzY0ID0gJmNvbnRleHRfdW5pb25fLnBwYzY0OworKworKyAgcmV0dXJuIGlu dGVybmFsOjpSZWFkQ29udGV4dDxDb250ZXh0VHJhaXRzNjQ+KAorKyAgICAgIHJlYWRlciwgY29u dGV4dF9hZGRyZXNzLCBjb250ZXh0Xy5wcGM2NCk7CisrfQorKworK3RlbXBsYXRlPD4KKytib29s IEV4Y2VwdGlvblNuYXBzaG90TGludXg6OlJlYWRDb250ZXh0PENvbnRleHRUcmFpdHMzMj4oCisr ICAgIFByb2Nlc3NSZWFkZXJMaW51eCogcmVhZGVyLAorKyAgICBMaW51eFZNQWRkcmVzcyBjb250 ZXh0X2FkZHJlc3MpIHsKKysgIC8vIFBQQzY0IGlzIDY0LWJpdAorKyAgcmV0dXJuIGZhbHNlOwor K30KKysKKyAjZW5kaWYgIC8vIEFSQ0hfQ1BVX1g4Nl9GQU1JTFkKKyAKKyBib29sIEV4Y2VwdGlv blNuYXBzaG90TGludXg6OkluaXRpYWxpemUoUHJvY2Vzc1JlYWRlckxpbnV4KiBwcm9jZXNzX3Jl YWRlciwKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv Y3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvZXhjZXB0aW9uX3NuYXBzaG90X2xpbnV4 LmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jh c2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvZXhjZXB0aW9uX3NuYXBzaG90X2xpbnV4LmgK K0BAIC04NCw2ICs4NCw4IEBAIGNsYXNzIEV4Y2VwdGlvblNuYXBzaG90TGludXggZmluYWwgOiBw dWJsaWMgRXhjZXB0aW9uU25hcHNob3QgeworICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU19G QU1JTFkpCisgICAgIENQVUNvbnRleHRNSVBTIG1pcHNlbDsKKyAgICAgQ1BVQ29udGV4dE1JUFM2 NCBtaXBzNjQ7CisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrICAgIENQ VUNvbnRleHRQUEM2NCBwcGM2NDsKKyAjZW5kaWYKKyAgIH0gY29udGV4dF91bmlvbl87CisgICBD UFVDb250ZXh0IGNvbnRleHRfOworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9leGNlcHRpb25f c25hcHNob3RfbGludXhfdGVzdC5jYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9leGNlcHRp b25fc25hcHNob3RfbGludXhfdGVzdC5jYworQEAgLTI5Niw3ICsyOTYsMjggQEAgdm9pZCBFeHBl Y3RDb250ZXh0KGNvbnN0IENQVUNvbnRleHQmIGFjdHVhbCwgY29uc3QgTmF0aXZlQ1BVQ29udGV4 dCYgZXhwZWN0ZWQpIHsKKyAgICAgICAgICAgICAwKTsKKyAjdW5kZWYgQ1BVX0FSQ0hfTkFNRQor IH0KKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKyt1c2luZyBOYXRpdmVD UFVDb250ZXh0ID0gdWNvbnRleHRfdDsKKysKKyt2b2lkIEluaXRpYWxpemVDb250ZXh0KE5hdGl2 ZUNQVUNvbnRleHQqIGNvbnRleHQpIHsKKysgIGZvciAoc2l6ZV90IHJlZyA9IDA7IHJlZyA8IDMy OyArK3JlZykgeworKyAgICBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW3JlZ10gPSByZWc7 CisrICB9CisrCisrICBtZW1zZXQoJmNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3MsIDQ0LAor KyAgICAgIHNpemVvZihjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzKSk7CisrfQorIAorK3Zv aWQgRXhwZWN0Q29udGV4dChjb25zdCBDUFVDb250ZXh0JiBhY3R1YWwsIGNvbnN0IE5hdGl2ZUNQ VUNvbnRleHQmIGV4cGVjdGVkKSB7CisrICBFWFBFQ1RfRVEoYWN0dWFsLmFyY2hpdGVjdHVyZSwg a0NQVUFyY2hpdGVjdHVyZVBQQzY0KTsKKysKKysgIGZvciAoc2l6ZV90IHJlZyA9IDA7IHJlZyA8 IDMyOyArK3JlZykgeworKyAgICBFWFBFQ1RfRVEoYWN0dWFsLnBwYzY0LT5yZWdzW3JlZ10sIGV4 cGVjdGVkLnVjX21jb250ZXh0LmdwX3JlZ3NbcmVnXSk7CisrICB9CisrCisrICBFWFBFQ1RfRVEo bWVtY21wKGFjdHVhbC5wcGM2NC0+ZnByZWdzLCBleHBlY3RlZC51Y19tY29udGV4dC5mcF9yZWdz LAorKyAgICAgICAgICAgIHNpemVvZihhY3R1YWwucHBjNjQtPmZwcmVncykpLCAwKTsKKyt9Cisg I2Vsc2UKKyAjZXJyb3IgUG9ydC4KKyAjZW5kaWYKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgv cHJvY2Vzc19yZWFkZXJfbGludXguY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvcHJvY2Vz c19yZWFkZXJfbGludXguY2MKK0BAIC0xMDgsNiArMTA4LDggQEAgdm9pZCBQcm9jZXNzUmVhZGVy TGludXg6OlRocmVhZDo6SW5pdGlhbGl6ZVN0YWNrKFByb2Nlc3NSZWFkZXJMaW51eCogcmVhZGVy KSB7CisgI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkKKyAgIHN0YWNrX3BvaW50 ZXIgPSByZWFkZXItPklzNjRCaXQoKSA/IHRocmVhZF9pbmZvLnRocmVhZF9jb250ZXh0LnQ2NC5y ZWdzWzI5XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGhyZWFkX2lu Zm8udGhyZWFkX2NvbnRleHQudDMyLnJlZ3NbMjldOworKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVf UFBDNjRfRkFNSUxZKQorKyAgc3RhY2tfcG9pbnRlciA9IHRocmVhZF9pbmZvLnRocmVhZF9jb250 ZXh0LnQ2NC5ncHJbMV07CisgI2Vsc2UKKyAjZXJyb3IgUG9ydC4KKyAjZW5kaWYKKy0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hw YWQvc25hcHNob3QvbGludXgvcHJvY2Vzc19yZWFkZXJfbGludXhfdGVzdC5jYworKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBh ZC9zbmFwc2hvdC9saW51eC9wcm9jZXNzX3JlYWRlcl9saW51eF90ZXN0LmNjCitAQCAtNTkxLDYg KzU5MSw4IEBAIGJvb2wgV3JpdGVUZXN0TW9kdWxlKGNvbnN0IGJhc2U6OkZpbGVQYXRoJiBtb2R1 bGVfcGF0aCkgeworICAgbW9kdWxlLmVoZHIuZV9tYWNoaW5lID0gRU1fQUFSQ0g2NDsKKyAjZWxp ZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNFTCkgfHwgZGVmaW5lZChBUkNIX0NQVV9NSVBTNjRFTCkK KyAgIG1vZHVsZS5laGRyLmVfbWFjaGluZSA9IEVNX01JUFM7CisrI2VsaWYgZGVmaW5lZChBUkNI X0NQVV9QUEM2NCkKKysgIG1vZHVsZS5laGRyLmVfbWFjaGluZSA9IEVNX1BQQzY0OworICNlbmRp ZgorIAorICAgbW9kdWxlLmVoZHIuZV92ZXJzaW9uID0gRVZfQ1VSUkVOVDsKKy0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQv c25hcHNob3QvbGludXgvc2lnbmFsX2NvbnRleHQuaAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51 eC9zaWduYWxfY29udGV4dC5oCitAQCAtNDIyLDYgKzQyMiw4OSBAQCBzdGF0aWNfYXNzZXJ0KG9m ZnNldG9mKFVDb250ZXh0PENvbnRleHRUcmFpdHM2ND4sIG1jb250ZXh0LmZwcmVncykgPT0KKyAg ICAgICAgICAgICAgICJjb250ZXh0IG9mZnNldCBtaXNtYXRjaCIpOworICNlbmRpZgorIAorKyNl bGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQorKworK3N0cnVjdCBTaWduYWxUaHJl YWRDb250ZXh0NjQgeworKyAgdWludDY0X3QgcmVnc1szMl07CisrICB1aW50NjRfdCBuaXA7Cisr ICB1aW50NjRfdCBtc3I7CisrICB1aW50NjRfdCBvcmlnX3IzOworKyAgdWludDY0X3QgY3RyOwor KyAgdWludDY0X3QgbG5rOworKyAgdWludDY0X3QgeGVyOworKyAgdWludDY0X3QgY2NyOworKyAg dWludDY0X3Qgc29mdGU7CisrICB1aW50NjRfdCB0cmFwOworKyAgdWludDY0X3QgZGFyOworKyAg dWludDY0X3QgZHNpc3I7CisrICB1aW50NjRfdCByZXN1bHQ7CisrICB1aW50NjRfdCBkc2NyOwor KyAgdWludDY0X3QgZnByMFszXTsKKyt9OworKworK3N0cnVjdCBTaWduYWxGbG9hdENvbnRleHQ2 NCB7CisrICBkb3VibGUgcmVnc1szMl07CisrICBkb3VibGUgZnBzY3I7CisrfTsKKysKKytzdHJ1 Y3QgU2lnbmFsVmVjdG9yQ29udGV4dDY0IHsKKysgIGludDMyX3QgdnJyZWdzWzMyXVs0XTsKKysg IHN0cnVjdCB7CisrICAgIGludDMyX3QgX19wYWRbM107CisrICAgIGludDMyX3QgdnNjcl93b3Jk OworKyAgfSB2c2NyOworKyAgaW50MzJfdCB2cnNhdmU7CisrICBpbnQzMl90IF9fcGFkWzNdOwor K30gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oMTYpKSk7CisrCisrCisrI3ByYWdtYSBwYWNr KHBvcCkKKytzdHJ1Y3QgTUNvbnRleHQ2NCB7CisrICB1aW50NjRfdCByZXNlcnZlZFs0XTsKKysg IGludDMyX3Qgc2lnbmFsOworKyAgaW50MzJfdCBfX3BhZDA7CisrICB1aW50NjRfdCBoYW5kbGVy OworKyAgdWludDY0X3Qgb2xkbWFzazsKKysgIHVpbnQ2NF90IHB0X3JlZ3NfcHRyOworKyAgU2ln bmFsVGhyZWFkQ29udGV4dDY0IGdwX3JlZ3M7CisrICBTaWduYWxGbG9hdENvbnRleHQ2NCAgZnBf cmVnczsKKysgIFNpZ25hbFZlY3RvckNvbnRleHQ2NCAqdl9yZWdzOworKyAgaW50NjRfdCB2bXhf cmVzZXJ2ZVs2OV07CisrfTsKKysKKytzdHJ1Y3QgQ29udGV4dFRyYWl0czY0IDogcHVibGljIFRy YWl0czY0IHsKKysgIHVzaW5nIE1Db250ZXh0ID0gTUNvbnRleHQ2NDsKKysgIHVzaW5nIFNpZ25h bFRocmVhZENvbnRleHQgPSBTaWduYWxUaHJlYWRDb250ZXh0NjQ7CisrICB1c2luZyBTaWduYWxG bG9hdENvbnRleHQgPSBTaWduYWxGbG9hdENvbnRleHQ2NDsKKysgIHVzaW5nIFNpZ25hbFZlY3Rv ckNvbnRleHQgPSBTaWduYWxWZWN0b3JDb250ZXh0NjQ7CisrICB1c2luZyBDUFVDb250ZXh0ID0g Q1BVQ29udGV4dFBQQzY0OworK307CisrCisrc3RydWN0IENvbnRleHRUcmFpdHMzMiA6IHB1Ymxp YyBUcmFpdHMzMiB7fTsKKysKKytzdHJ1Y3QgVUNvbnRleHQgeworKyAgdWludDY0X3QgZmxhZ3M7 CisrICB1aW50NjRfdCBsaW5rOworKyAgU2lnbmFsU3RhY2s8Q29udGV4dFRyYWl0czY0PiBzdGFj azsKKysgIFNpZ3NldDxDb250ZXh0VHJhaXRzNjQ+IHNpZ21hc2s7CisrICBNQ29udGV4dDY0IG1j b250ZXh0OworK307CisrI3ByYWdtYSBwYWNrKHB1c2gsIDEpCisrCisrc3RhdGljX2Fzc2VydChz aXplb2YoVUNvbnRleHQpID09IHNpemVvZih1Y29udGV4dF90KSwKKysgICAgICAgICAgICAgICJ1 Y29udGV4dF90IHNpemUgbWlzbWF0Y2giKTsKKytzdGF0aWNfYXNzZXJ0KHNpemVvZihNQ29udGV4 dDY0KSA9PSBzaXplb2YobWNvbnRleHRfdCksCisrICAgICAgICAgICAgICAibWNvbnRleHRfdCBz aXplIG1pc21hdGNoIik7Cisrc3RhdGljX2Fzc2VydChzaXplb2YoU2lnbmFsVGhyZWFkQ29udGV4 dDY0KSA9PSBzaXplb2YoZ3JlZ3NldF90KSwKKysgICAgICAgICAgICAgICJncmVnc2V0X3Qgc2l6 ZSBtaXNtYXRjaCIpOworK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFNpZ25hbEZsb2F0Q29udGV4dDY0 KSA9PSBzaXplb2YoZnByZWdzZXRfdCksCisrICAgICAgICAgICAgICAiZnByZWdzZXRfdCBzaXpl IG1pc21hdGNoIik7Cisrc3RhdGljX2Fzc2VydChzaXplb2YoU2lnbmFsVmVjdG9yQ29udGV4dDY0 KSA9PSBzaXplb2YoX2xpYmNfdnJzdGF0ZSksCisrICAgICAgICAgICAgICAidnJzdGF0ZSBzaXpl IG1pc21hdGNoIik7Cisrc3RhdGljX2Fzc2VydChvZmZzZXRvZihVQ29udGV4dCwgbWNvbnRleHQp ID09CisrICAgICAgICAgICAgICBvZmZzZXRvZih1Y29udGV4dF90LCB1Y19tY29udGV4dCksICJt Y29udGV4dCBvZmZzZXQgbWlzbWF0Y2giKTsKKytzdGF0aWNfYXNzZXJ0KG9mZnNldG9mKE1Db250 ZXh0NjQsIGdwX3JlZ3MpID09CisrICAgICAgICAgICAgICBvZmZzZXRvZihtY29udGV4dF90LCBn cF9yZWdzKSwgImdwX3JlZ3Mgb2Zmc2V0IG1pc21hdGNoIik7CisgI2Vsc2UKKyAjZXJyb3IgUG9y dC4KKyAjZW5kaWYgIC8vIEFSQ0hfQ1BVX1g4Nl9GQU1JTFkKKy0tLSBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3Qv bGludXgvc3lzdGVtX3NuYXBzaG90X2xpbnV4LmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4 L3N5c3RlbV9zbmFwc2hvdF9saW51eC5jYworQEAgLTIwMyw2ICsyMDMsOCBAQCBDUFVBcmNoaXRl Y3R1cmUgU3lzdGVtU25hcHNob3RMaW51eDo6R2V0Q1BVQXJjaGl0ZWN0dXJlKCkgY29uc3Qgewor ICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCisgICByZXR1cm4gcHJvY2Vzc19y ZWFkZXJfLT5JczY0Qml0KCkgPyBrQ1BVQXJjaGl0ZWN0dXJlTUlQUzY0RUwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA6IGtDUFVBcmNoaXRlY3R1cmVNSVBTRUw7CisrI2Vs aWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrICByZXR1cm4ga0NQVUFyY2hpdGVj dHVyZVBQQzY0OworICNlbHNlCisgI2Vycm9yIHBvcnQgdG8geW91ciBhcmNoaXRlY3R1cmUKKyAj ZW5kaWYKK0BAIC0yMTgsNiArMjIwLDkgQEAgdWludDMyX3QgU3lzdGVtU25hcHNob3RMaW51eDo6 Q1BVUmV2aXNpb24oKSBjb25zdCB7CisgI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlM WSkKKyAgIC8vIE5vdCBpbXBsZW1lbnRhYmxlIG9uIE1JUFMKKyAgIHJldHVybiAwOworKyNlbGlm IGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQorKyAgLy8gTm90IHlldCBpbXBsZW1lbnRl ZCBvbiBQUEM2NAorKyAgcmV0dXJuIDA7CisgI2Vsc2UKKyAjZXJyb3IgcG9ydCB0byB5b3VyIGFy Y2hpdGVjdHVyZQorICNlbmRpZgorQEAgLTIzOCw2ICsyNDMsOSBAQCBzdGQ6OnN0cmluZyBTeXN0 ZW1TbmFwc2hvdExpbnV4OjpDUFVWZW5kb3IoKSBjb25zdCB7CisgI2VsaWYgZGVmaW5lZChBUkNI X0NQVV9NSVBTX0ZBTUlMWSkKKyAgIC8vIE5vdCBpbXBsZW1lbnRhYmxlIG9uIE1JUFMKKyAgIHJl dHVybiBzdGQ6OnN0cmluZygpOworKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZ KQorKyAgLy8gTm90IHlldCBpbXBsZW1lbnRlZCBvbiBQUEM2NAorKyAgcmV0dXJuIHN0ZDo6c3Ry aW5nKCk7CisgI2Vsc2UKKyAjZXJyb3IgcG9ydCB0byB5b3VyIGFyY2hpdGVjdHVyZQorICNlbmRp ZgorQEAgLTM3MSw2ICszNzksOSBAQCBib29sIFN5c3RlbVNuYXBzaG90TGludXg6Ok5YRW5hYmxl ZCgpIGNvbnN0IHsKKyAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQorICAgLy8g Tm90IGltcGxlbWVudGFibGUgb24gTUlQUworICAgcmV0dXJuIGZhbHNlOworKyNlbGlmIGRlZmlu ZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQorKyAgLy8gTm90IHlldCBpbXBsZW1lbnRlZCBvbiBQ UEM2NAorKyAgcmV0dXJuIGZhbHNlOworICNlbHNlCisgI2Vycm9yIFBvcnQuCisgI2VuZGlmICAv LyBBUkNIX0NQVV9YODZfRkFNSUxZCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3RocmVhZF9z bmFwc2hvdF9saW51eC5jYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC90aHJlYWRfc25hcHNo b3RfbGludXguY2MKK0BAIC0xODYsNiArMTg2LDE0IEBAIGJvb2wgVGhyZWFkU25hcHNob3RMaW51 eDo6SW5pdGlhbGl6ZShQcm9jZXNzUmVhZGVyTGludXgqIHByb2Nlc3NfcmVhZGVyLAorICAgICAg ICAgdGhyZWFkLnRocmVhZF9pbmZvLmZsb2F0X2NvbnRleHQuZjMyLAorICAgICAgICAgY29udGV4 dF8ubWlwc2VsKTsKKyAgIH0KKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkK KysgIGNvbnRleHRfLmFyY2hpdGVjdHVyZSA9IGtDUFVBcmNoaXRlY3R1cmVQUEM2NDsKKysgIGNv bnRleHRfLnBwYzY0ID0gJmNvbnRleHRfdW5pb25fLnBwYzY0OworKyAgSW5pdGlhbGl6ZUNQVUNv bnRleHRQUEM2NDxDb250ZXh0VHJhaXRzNjQ+KAorKyAgICAgIHRocmVhZC50aHJlYWRfaW5mby50 aHJlYWRfY29udGV4dC50NjQsCisrICAgICAgdGhyZWFkLnRocmVhZF9pbmZvLmZsb2F0X2NvbnRl eHQuZjY0LAorKyAgICAgIHRocmVhZC50aHJlYWRfaW5mby52ZWN0b3JfY29udGV4dC52NjQsCisr ICAgICAgY29udGV4dF8ucHBjNjQpOworICNlbHNlCisgI2Vycm9yIFBvcnQuCisgI2VuZGlmCist LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFk L2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3RocmVhZF9zbmFwc2hvdF9saW51eC5oCisrKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNo cGFkL3NuYXBzaG90L2xpbnV4L3RocmVhZF9zbmFwc2hvdF9saW51eC5oCitAQCAtNjgsNiArNjgs OCBAQCBjbGFzcyBUaHJlYWRTbmFwc2hvdExpbnV4IGZpbmFsIDogcHVibGljIFRocmVhZFNuYXBz aG90IHsKKyAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQorICAgICBDUFVDb250 ZXh0TUlQUyBtaXBzZWw7CisgICAgIENQVUNvbnRleHRNSVBTNjQgbWlwczY0OworKyNlbGlmIGRl ZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQorKyAgICBDUFVDb250ZXh0UFBDNjQgcHBjNjQ7 CisgI2Vsc2UKKyAjZXJyb3IgUG9ydC4KKyAjZW5kaWYgIC8vIEFSQ0hfQ1BVX1g4Nl9GQU1JTFkK Ky0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hw YWQvY3Jhc2hwYWQvdXRpbC9saW51eC9hdXhpbGlhcnlfdmVjdG9yLmNjCisrKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0 aWwvbGludXgvYXV4aWxpYXJ5X3ZlY3Rvci5jYworQEAgLTU2LDYgKzU2LDExIEBAIGJvb2wgQXV4 aWxpYXJ5VmVjdG9yOjpSZWFkKFB0cmFjZUNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pIHsKKyAgICAg aWYgKHR5cGUgPT0gQVRfSUdOT1JFKSB7CisgICAgICAgY29udGludWU7CisgICAgIH0KKysjaWYg ZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrICAgIGlmICh0eXBlID09IEFUX0lHTk9S RVBQQykgeworKyAgICAgIGNvbnRpbnVlOworKyAgICB9CisrI2VuZGlmCisgICAgIGlmICghTWFw SW5zZXJ0T3JSZXBsYWNlKCZ2YWx1ZXNfLCB0eXBlLCB2YWx1ZSwgbnVsbHB0cikpIHsKKyAgICAg ICBMT0coRVJST1IpIDw8ICJkdXBsaWNhdGUgYXV4diBlbnRyeSI7CisgICAgICAgcmV0dXJuIGZh bHNlOworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9j cmFzaHBhZC9jcmFzaHBhZC91dGlsL2xpbnV4L3B0cmFjZV9icm9rZXIuY2MKKysrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQv dXRpbC9saW51eC9wdHJhY2VfYnJva2VyLmNjCitAQCAtOTMsOCArOTMsOCBAQCBpbnQgUHRyYWNl QnJva2VyOjpSdW4oKSB7CisgfQorIAorIGJvb2wgUHRyYWNlQnJva2VyOjpBbGxvY2F0ZUF0dGFj aG1lbnRzKCkgeworLSAgY29uc3RleHByIHNpemVfdCBwYWdlX3NpemUgPSA0MDk2OworLSAgY29u c3RleHByIHNpemVfdCBhbGxvY19zaXplID0KKysgIHN0YXRpYyBzaXplX3QgcGFnZV9zaXplID0g Z2V0cGFnZXNpemUoKTsKKysgIHNpemVfdCBhbGxvY19zaXplID0KKyAgICAgICAoc2l6ZW9mKFNj b3BlZFB0cmFjZUF0dGFjaCkgKyBwYWdlX3NpemUgLSAxKSAmIH4ocGFnZV9zaXplIC0gMSk7Cisg ICB2b2lkKiBhbGxvYyA9IHNicmsoYWxsb2Nfc2l6ZSk7CisgICBpZiAocmVpbnRlcnByZXRfY2Fz dDxpbnRwdHJfdD4oYWxsb2MpID09IC0xKSB7CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGludXgvcHRyYWNl ci5jYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9j cmFzaHBhZC9jcmFzaHBhZC91dGlsL2xpbnV4L3B0cmFjZXIuY2MKK0BAIC0zOTQsNiArMzk0LDY0 IEBAIGJvb2wgR2V0VGhyZWFkQXJlYTY0KHBpZF90IHRpZCwKKyAgIHJldHVybiB0cnVlOworIH0K KyAKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKysvLyBQUEM2NCBoYXMg aGFkIEhBVkVfQVJDSF9UUkFDRUhPT0sgc2V0IHNpbmNlIDIuNi4yNyAoZXZlbiBiZWZvcmUgeDg2 IGhhZCBpdCkuCisrLy8gVGhhdCBtZWFucyB3ZSBjYW4gc2ltcGx5IHVzZSBQVFJBQ0VfR0VUUkVH RVNFVC4KKysKKyt0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVzdGluYXRpb24+CisrYm9vbCBHZXRSZWdp c3RlclNldChwaWRfdCB0aWQsIGludCBzZXQsIERlc3RpbmF0aW9uKiBkZXN0LCBib29sIGNhbl9s b2cpIHsKKysgIGlvdmVjIGlvdjsKKysgIGlvdi5pb3ZfYmFzZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8 dm9pZCo+KGRlc3QpOworKyAgaW92Lmlvdl9sZW4gPSBzaXplb2YoKmRlc3QpOworKyAgaWYgKHB0 cmFjZShQVFJBQ0VfR0VUUkVHU0VULCB0aWQsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHNldCks ICZpb3YpICE9IDApIHsKKysgICAgUExPR19JRihFUlJPUiwgY2FuX2xvZykgPDwgInB0cmFjZSI7 CisrICAgIHJldHVybiBmYWxzZTsKKysgIH0KKysgIGlmIChpb3YuaW92X2xlbiAhPSBzaXplb2Yo KmRlc3QpKSB7CisrICAgIExPR19JRihFUlJPUiwgY2FuX2xvZykgPDwgIlVuZXhwZWN0ZWQgcmVn aXN0ZXJzIHNpemUiOworKyAgICByZXR1cm4gZmFsc2U7CisrICB9CisrICByZXR1cm4gdHJ1ZTsK Kyt9CisrCisrYm9vbCBHZXRWZWN0b3JSZWdpc3RlcnM2NChwaWRfdCB0aWQsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICBWZWN0b3JDb250ZXh0KiBjb250ZXh0LAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgYm9vbCBjYW5fbG9nKSB7CisrICByZXR1cm4gR2V0UmVnaXN0ZXJTZXQodGlk LCBOVF9QUENfVk1YLCAmY29udGV4dC0+djY0LCBjYW5fbG9nKTsKKyt9CisrCisrYm9vbCBHZXRG bG9hdGluZ1BvaW50UmVnaXN0ZXJzNjQocGlkX3QgdGlkLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEZsb2F0Q29udGV4dCogY29udGV4dCwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBib29sIGNhbl9sb2cpIHsKKysgIHJldHVybiBHZXRSZWdpc3RlclNldCh0 aWQsIE5UX1BSRlBSRUcsICZjb250ZXh0LT5mNjQsIGNhbl9sb2cpOworK30KKysKKytib29sIEdl dFRocmVhZEFyZWE2NChwaWRfdCB0aWQsCisrICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGhy ZWFkQ29udGV4dCYgY29udGV4dCwKKysgICAgICAgICAgICAgICAgICAgICBMaW51eFZNQWRkcmVz cyogYWRkcmVzcywKKysgICAgICAgICAgICAgICAgICAgICBib29sIGNhbl9sb2cpIHsKKysgIC8v IFBQQzY0IGRvZXNuJ3QgaGF2ZSBQVFJBQ0VfR0VUX1RIUkVBRF9BUkVBIHNpbmNlIHRoZSB0aHJl YWQgcG9pbnRlcgorKyAgLy8gaXMgc3RvcmVkIGluIEdQUiAxMy4KKysgIFRocmVhZENvbnRleHQ6 OnQ2NF90IHRjOworKyAgaWYgKCFHZXRSZWdpc3RlclNldCh0aWQsIE5UX1BSU1RBVFVTLCAmdGMs IGNhbl9sb2cpKSB7CisrICAgIExPR19JRihFUlJPUiwgY2FuX2xvZykgPDwgIlVuYWJsZSB0byBn ZXQgdGhyZWFkIHBvaW50ZXIhIjsKKysgICAgcmV0dXJuIGZhbHNlOworKyAgfQorKworKyAgKmFk ZHJlc3MgPSB0Yy5ncHJbMTNdOworKworKyAgcmV0dXJuIHRydWU7CisrfQorKworKy8vIFN0dWJz IGZvciAzMi1iaXQgZnVuY3Rpb25zIG5vdCBhcHBsaWNhYmxlIG9uIFBQQzY0CisrYm9vbCBHZXRG bG9hdGluZ1BvaW50UmVnaXN0ZXJzMzIocGlkX3QgdGlkLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEZsb2F0Q29udGV4dCogY29udGV4dCwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBib29sIGNhbl9sb2cpIHsgcmV0dXJuIGZhbHNlOyB9CisrYm9vbCBHZXRU aHJlYWRBcmVhMzIocGlkX3QgdGlkLAorKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRocmVh ZENvbnRleHQgJmNvbnRleHQsCisrICAgICAgICAgICAgICAgICAgICAgTGludXhWTUFkZHJlc3Mg KmFkZHJlc3MsCisrICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5fbG9nKSB7IHJldHVybiBm YWxzZTsgfQorKworICNlbHNlCisgI2Vycm9yIFBvcnQuCisgI2VuZGlmICAvLyBBUkNIX0NQVV9Y ODZfRkFNSUxZCitAQCAtNDg2LDYgKzU0NCw5IEBAIGJvb2wgUHRyYWNlcjo6R2V0VGhyZWFkSW5m byhwaWRfdCB0aWQsIFRocmVhZEluZm8qIGluZm8pIHsKKyAgIGlmIChpc182NF9iaXRfKSB7Cisg ICAgIHJldHVybiBHZXRHZW5lcmFsUHVycG9zZVJlZ2lzdGVyczY0KHRpZCwgJmluZm8tPnRocmVh ZF9jb250ZXh0LCBjYW5fbG9nXykgJiYKKyAgICAgICAgICAgIEdldEZsb2F0aW5nUG9pbnRSZWdp c3RlcnM2NCh0aWQsICZpbmZvLT5mbG9hdF9jb250ZXh0LCBjYW5fbG9nXykgJiYKKysjaWYgZGVm aW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrICAgICAgICAgICBHZXRWZWN0b3JSZWdpc3Rl cnM2NCh0aWQsICZpbmZvLT52ZWN0b3JfY29udGV4dCwgY2FuX2xvZ18pICYmCisrI2VuZGlmCisg ICAgICAgICAgICBHZXRUaHJlYWRBcmVhNjQodGlkLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGluZm8tPnRocmVhZF9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZp bmZvLT50aHJlYWRfc3BlY2lmaWNfZGF0YV9hZGRyZXNzLAorLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL2xpbnV4 L3RocmVhZF9pbmZvLmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9saW51eC90aHJlYWRfaW5mby5oCitAQCAt MjgsNiArMjgsMTAgQEAKKyAjaW5jbHVkZSA8YW5kcm9pZC9hcGktbGV2ZWwuaD4KKyAjZW5kaWYK KyAKKysjaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrI2luY2x1ZGUgPHN5cy91 Y29udGV4dC5oPgorKyNlbmRpZgorKworIG5hbWVzcGFjZSBjcmFzaHBhZCB7CisgCisgLy8hIFxi cmllZiBUaGUgc2V0IG9mIGdlbmVyYWwgcHVycG9zZSByZWdpc3RlcnMgZm9yIGFuIGFyY2hpdGVj dHVyZSBmYW1pbHkuCitAQCAtNzksNiArODMsOCBAQCB1bmlvbiBUaHJlYWRDb250ZXh0IHsKKyAg ICAgdWludDMyX3QgY3AwX3N0YXR1czsKKyAgICAgdWludDMyX3QgY3AwX2NhdXNlOworICAgICB1 aW50MzJfdCBwYWRkaW5nMV87CisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkp CisrICAgIC8vIFBQQzY0IGlzIDY0LWJpdAorICNlbHNlCisgI2Vycm9yIFBvcnQuCisgI2VuZGlm ICAvLyBBUkNIX0NQVV9YODZfRkFNSUxZCitAQCAtMTMyLDYgKzEzOCwyMSBAQCB1bmlvbiBUaHJl YWRDb250ZXh0IHsKKyAgICAgdWludDY0X3QgY3AwX2JhZHZhZGRyOworICAgICB1aW50NjRfdCBj cDBfc3RhdHVzOworICAgICB1aW50NjRfdCBjcDBfY2F1c2U7CisrI2VsaWYgZGVmaW5lZChBUkNI X0NQVV9QUEM2NF9GQU1JTFkpCisrICAgIC8vIFJlZmxlY3RzIHN0cnVjdCBwdF9yZWdzIGluIGFz bS9wdHJhY2UuaC4KKysgICAgdWludDY0X3QgZ3ByWzMyXTsKKysgICAgdWludDY0X3QgbmlwOwor KyAgICB1aW50NjRfdCBtc3I7CisrICAgIHVpbnQ2NF90IG9yaWdfZ3ByMzsKKysgICAgdWludDY0 X3QgY3RyOworKyAgICB1aW50NjRfdCBsbms7CisrICAgIHVpbnQ2NF90IHhlcjsKKysgICAgdWlu dDY0X3QgY2NyOworKyAgICB1aW50NjRfdCBzb2Z0ZTsKKysgICAgdWludDY0X3QgdHJhcDsKKysg ICAgdWludDY0X3QgZGFyOworKyAgICB1aW50NjRfdCBkc2lzcjsKKysgICAgdWludDY0X3QgcmVz dWx0OworICNlbHNlCisgI2Vycm9yIFBvcnQuCisgI2VuZGlmICAvLyBBUkNIX0NQVV9YODZfRkFN SUxZCitAQCAtMTQzLDYgKzE2NCw4IEBAIHVuaW9uIFRocmVhZENvbnRleHQgeworICAgdXNpbmcg TmF0aXZlVGhyZWFkQ29udGV4dCA9IHVzZXJfcmVnczsKKyAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BV X01JUFNfRkFNSUxZKQorIC8vIE5vIGFwcHJvcHJpYXRlIE5hdGl2ZVRocmVhZHNDb250ZXh0IHR5 cGUgYXZhaWxhYmxlIGZvciBNSVBTCisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1J TFkpCisrICB1c2luZyBOYXRpdmVUaHJlYWRDb250ZXh0ID0gc3RydWN0IHB0X3JlZ3M7CisgI2Vs c2UKKyAjZXJyb3IgUG9ydC4KKyAjZW5kaWYgIC8vIEFSQ0hfQ1BVX1g4Nl9GQU1JTFkgfHwgQVJD SF9DUFVfQVJNNjQKK0BAIC0yMTgsNiArMjQxLDkgQEAgdW5pb24gRmxvYXRDb250ZXh0IHsKKyAg ICAgfSBmcHJlZ3NbMzJdOworICAgICB1aW50MzJfdCBmcGNzcjsKKyAgICAgdWludDMyX3QgZnB1 X2lkOworKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQorKyAgICAvLyBDcmFz aHBhZCdzIFBQQyBzdXBwb3J0IGlzIDY0LWJpdCBvbmx5LCBzbyB0aGlzCisrICAgIC8vIDMyYml0 LW9ubHkgc3RydWN0IGlzIGRlY2xhcmVkIGFzIGVtcHR5LgorICNlbHNlCisgI2Vycm9yIFBvcnQu CisgI2VuZGlmICAvLyBBUkNIX0NQVV9YODZfRkFNSUxZCitAQCAtMjUyLDYgKzI3OCwxMCBAQCB1 bmlvbiBGbG9hdENvbnRleHQgeworICAgICBkb3VibGUgZnByZWdzWzMyXTsKKyAgICAgdWludDMy X3QgZnBjc3I7CisgICAgIHVpbnQzMl90IGZwdV9pZDsKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BV X1BQQzY0X0ZBTUlMWSkKKysgICAgLy8gUmVmbGVjdHMgZnByZWdzZXRfdCBpbiBzeXMvdWNvbnRl eHQuaAorKyAgICBkb3VibGUgZnByZWdzWzMyXTsKKysgICAgZG91YmxlIGZwc2NyOworICNlbHNl CisgI2Vycm9yIFBvcnQuCisgI2VuZGlmICAvLyBBUkNIX0NQVV9YODZfRkFNSUxZCitAQCAtMjgw LDYgKzMxMCw4IEBAIHVuaW9uIEZsb2F0Q29udGV4dCB7CisgICBzdGF0aWNfYXNzZXJ0KHNpemVv ZihmNjQpID09IHNpemVvZih1c2VyX2Zwc2ltZF9zdHJ1Y3QpLCAiU2l6ZSBtaXNtYXRjaCIpOwor ICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCisgLy8gTm8gYXBwcm9wcmlhdGUg ZmxvYXRpbmcgcG9pbnQgY29udGV4dCBuYXRpdmUgdHlwZSBmb3IgYXZhaWxhYmxlIE1JUFMuCisr I2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrICBzdGF0aWNfYXNzZXJ0KHNp emVvZihmNjQpID09IHNpemVvZihmcHJlZ3NldF90KSwgIlNpemUgbWlzbWF0Y2giKTsKKyAjZWxz ZQorICNlcnJvciBQb3J0LgorICNlbmRpZiAgLy8gQVJDSF9DUFVfWDg2CitAQCAtMjg3LDYgKzMx OSwyNiBAQCB1bmlvbiBGbG9hdENvbnRleHQgeworIHN0YXRpY19hc3NlcnQoc3RkOjppc19zdGFu ZGFyZF9sYXlvdXQ8RmxvYXRDb250ZXh0Pjo6dmFsdWUsCisgICAgICAgICAgICAgICAiTm90IHN0 YW5kYXJkIGxheW91dCIpOworIAorKy8vISBcYnJpZWYgVGhlIHZlY3RvciByZWdpc3RlcnMgdXNl ZCBmb3IgYW4gYXJjaGl0ZWN0dXJlIGZhbWlseQorK3VuaW9uIFZlY3RvckNvbnRleHQgeworKyAg c3RydWN0IHYzMl90IHt9IHYzMjsKKysjaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkp CisrICBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygxNikpKSAvLyBWZWN0b3IgY29udGV4dCBt dXN0IGJlIGRvdWJsZXdvcmQgYWxpZ25lZC4KKysjZW5kaWYKKysgIHN0cnVjdCB2NjRfdCB7Cisr I2lmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQorKyAgICAvLyBSZWZsZWN0cyB2cnJl Z3NldF90IGluIHN5cy91Y29udGV4dC5oCisrICAgIHVpbnQzMl90IHZycmVnc1szMl1bNF07Cisr ICAgIHN0cnVjdCB7CisrICAgICAgdWludDMyX3QgX19wYWRbM107CisrICAgICAgdWludDMyX3Qg dnNjcl93b3JkOworKyAgICB9IHZzY3I7CisrICAgIHVpbnQzMl90IHZyc2F2ZTsKKysgICAgdWlu dDMyX3QgX19wYWRbM107CisrI2VuZGlmCisrICB9IHY2NDsKKyt9OworKworIC8vISBcYnJpZWYg QSBjb2xsZWN0aW9uIG9mIGBwdHJhY2VgLWFibGUgaW5mb3JtYXRpb24gYWJvdXQgYSB0aHJlYWQu Cisgc3RydWN0IFRocmVhZEluZm8geworICAgVGhyZWFkSW5mbygpOworQEAgLTI5OCw2ICszNTAs OSBAQCBzdHJ1Y3QgVGhyZWFkSW5mbyB7CisgICAvLyEgXGJyaWVmIFRoZSBmbG9hdGluZyBwb2lu dCByZWdpc3RlcnMgZm9yIHRoZSB0aHJlYWQuCisgICBGbG9hdENvbnRleHQgZmxvYXRfY29udGV4 dDsKKyAKKysgIC8vISBcYnJpZWYgKE9wdGlvbmFsKSBUaGUgdmVjdG9yIHJlZ2lzdGVycyB1c2Vk IGZvciB0aGUgdGhyZWFkLgorKyAgVmVjdG9yQ29udGV4dCB2ZWN0b3JfY29udGV4dDsKKysKKyAg IC8vISBcYnJpZWYgVGhlIHRocmVhZC1sb2NhbCBzdG9yYWdlIGFkZHJlc3MgZm9yIHRoZSB0aHJl YWQuCisgICBMaW51eFZNQWRkcmVzcyB0aHJlYWRfc3BlY2lmaWNfZGF0YV9hZGRyZXNzOworIH07 CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNo cGFkL2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHQuaAorKysrIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGls L21pc2MvY2FwdHVyZV9jb250ZXh0LmgKK0BAIC02Niw2ICs2Niw3IEBAIHVzaW5nIE5hdGl2ZUNQ VUNvbnRleHQgPSB1Y29udGV4dF90OworIC8vISAgICAgbWFjT1MvTGludXgvRnVjaHNpYSB8IHg4 Nl82NCAgICAgICB8IGAlJXJkaWAKKyAvLyEgICAgIExpbnV4ICAgICAgICAgICAgICAgfCBBUk0v QVJNNjQgICAgfCBgcjBgL2B4MGAKKyAvLyEgICAgIExpbnV4ICAgICAgICAgICAgICAgfCBNSVBT L01JUFM2NCAgfCBgJGEwYAorKy8vISAgICAgTGludXggICAgICAgICAgICAgICB8IFBQQzY0ICAg ICAgICB8IGByM2AKKyAvLyEKKyAvLyEgICAgIEFkZGl0aW9uYWxseSwgdGhlIHZhbHVlIGBMUmAg b24gQVJNL0FSTTY0IHdpbGwgYmUgdGhlIHJldHVybiBhZGRyZXNzIG9mCisgLy8hICAgICB0aGlz IGZ1bmN0aW9uLgorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL21pc2MvY2FwdHVyZV9jb250ZXh0X2xpbnV4LlMK KysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hw YWQvY3Jhc2hwYWQvdXRpbC9taXNjL2NhcHR1cmVfY29udGV4dF9saW51eC5TCitAQCAtMjgsNyAr MjgsNyBAQAorICAgLmdsb2JsIENBUFRVUkVDT05URVhUX1NZTUJPTDIKKyAjaWYgZGVmaW5lZChf X2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKQorICAgLmJhbGlnbiAxNiwgMHg5MAorLSNl bGlmIGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChf X21pcHNfXykKKysjZWxpZiBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18p IHx8IGRlZmluZWQoX19taXBzX18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgIC5iYWxp Z24gNCwgMHgwCisgI2VuZGlmCisgCitAQCAtNDE5LDQgKzQxOSwyMTQgQEAgQ0FQVFVSRUNPTlRF WFRfU1lNQk9MMjoKKyAgIGpyICRyYQorIAorICAgLnNldCBhdAorKyNlbGlmIGRlZmluZWQoX19w b3dlcnBjNjRfXykKKysgIC8vIFN0b3JlIHIwLXIzMQorKyAgc3RkIDAsIDB4ZTgoMykgICAvLyBj b250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzBdCisrICBzdGQgMSwgMHhmMCgzKSAgIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMV0KKysgIHN0ZCAyLCAweGY4KDMpICAgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1syXQorKyAgLy8gbm90ZSB0aGF0IHIzJ3Mgb3JpZ2lu YWwgdmFsdWUgd2FzIGxvc3QKKysgIHN0ZCAzLCAweDEwMCgzKSAgLy8gY29udGV4dC0+dWNfbWNv bnRleHQuZ3BfcmVnc1szXQorKyAgc3RkIDQsIDB4MTA4KDMpICAvLyBjb250ZXh0LT51Y19tY29u dGV4dC5ncF9yZWdzWzRdCisrICBzdGQgNSwgMHgxMTAoMykgIC8vIGNvbnRleHQtPnVjX21jb250 ZXh0LmdwX3JlZ3NbNV0KKysgIHN0ZCA2LCAweDExOCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1s2XQorKyAgc3RkIDcsIDB4MTIwKDMpICAvLyBjb250ZXh0LT51Y19tY29udGV4 dC5ncF9yZWdzWzddCisrICBzdGQgOCwgMHgxMjgoMykgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0 LmdwX3JlZ3NbOF0KKysgIHN0ZCA5LCAweDEzMCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQu Z3BfcmVnc1s5XQorKyAgc3RkIDEwLCAweDEzOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5n cF9yZWdzWzEwXQorKyAgc3RkIDExLCAweDE0MCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5n cF9yZWdzWzExXQorKyAgc3RkIDEyLCAweDE0OCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5n cF9yZWdzWzEyXQorKyAgc3RkIDEzLCAweDE1MCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5n cF9yZWdzWzEzXQorKyAgc3RkIDE0LCAweDE1OCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5n cF9yZWdzWzE0XQorKyAgc3RkIDE1LCAweDE2MCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5n cF9yZWdzWzE1XQorKyAgc3RkIDE2LCAweDE2OCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5n cF9yZWdzWzE2XQorKyAgc3RkIDE3LCAweDE3MCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5n cF9yZWdzWzE3XQorKyAgc3RkIDE4LCAweDE3OCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5n cF9yZWdzWzE4XQorKyAgc3RkIDE5LCAweDE4MCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5n cF9yZWdzWzE5XQorKyAgc3RkIDIwLCAweDE4OCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5n cF9yZWdzWzIwXQorKyAgc3RkIDIxLCAweDE5MCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5n cF9yZWdzWzIxXQorKyAgc3RkIDIyLCAweDE5OCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5n cF9yZWdzWzIyXQorKyAgc3RkIDIzLCAweDFhMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5n cF9yZWdzWzIzXQorKyAgc3RkIDI0LCAweDFhOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5n cF9yZWdzWzI0XQorKyAgc3RkIDI1LCAweDFiMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5n cF9yZWdzWzI1XQorKyAgc3RkIDI2LCAweDFiOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5n cF9yZWdzWzI2XQorKyAgc3RkIDI3LCAweDFjMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5n cF9yZWdzWzI3XQorKyAgc3RkIDI4LCAweDFjOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5n cF9yZWdzWzI4XQorKyAgc3RkIDI5LCAweDFkMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5n cF9yZWdzWzI5XQorKyAgc3RkIDMwLCAweDFkOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5n cF9yZWdzWzMwXQorKyAgc3RkIDMxLCAweDFlMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5n cF9yZWdzWzMxXQorKworKyAgLy8gRm9yIE5JUCwgd2UgY2FuIHVzZSB0aGUgdmFsdWUgaW4gdGhl IGxpbmsgcmVnaXN0ZXIKKysgIG1mbHIgMAorKyAgc3RkIDAsIDB4MWU4KDMpIC8vIGNvbnRleHQt PnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfTklQXQorKworKyAgLy8gQ1RSCisrICBtZmN0ciAwCisr ICBzdGQgMCwgMHgyMDAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9DVFJd CisrCisrICAvLyBGb3IgTE5LLCB3ZSdsbCB1c2UgdGhlIGNhbGxlcidzIExSIHNhdmUgYXJlYSAo MiBzdGFjayBmcmFtZXMgdXApLgorKyAgLy8gcjQgY2FuIGJlIHVzZWQgYXMgYSBzY3JhdGNoIHJl Z2lzdGVyIHNpbmNlIGl0IGhhcyBhbHJlYWR5IGJlZW4gc2F2ZWQuCisrICBsZCA0LCAwKDEpCisr ICBsZCA0LCAxNig0KQorKyAgc3RkIDQsIDB4MjA4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0 LmdwX3JlZ3NbUFRfTE5LXQorKworKyAgLy8gWEVSCisrICBtZnhlciAwCisrICBzdGQgMCwgMHgy MTAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9YRVJdCisrCisrICAvLyBD Q1IKKysgIG1mY3IgMAorKyAgc3RkIDAsIDB4MjE4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0 LmdwX3JlZ3NbUFRfQ0NSXQorKworKyAgLy8gTVNSLCBvcmlnX3IzLCBNUSwgVFJBUCwgREFSLCBE U0lTUiwgUkVTVUxULCBEU0NSLAorKyAgLy8gbm90IHVzZWQgb3Igbm90IHJlbGV2YW50LCAgemVy byB0aGVtIG91dC4KKysgIGxpIDQsIDAKKysgIHN0ZCA0LCAweDFmMCgzKSAvLyBjb250ZXh0LT51 Y19tY29udGV4dC5ncF9yZWdzW1BUX01TUl0KKysgIHN0ZCA0LCAweDFmOCgzKSAvLyBjb250ZXh0 LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX09SSUdfUjNdCisrICBzdGQgNCwgMHgyMjAoMykgLy8g Y29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9NUV0KKysgIHN0ZCA0LCAweDIyOCgzKSAv LyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX1RSQVBdCisrICBzdGQgNCwgMHgyMzAo MykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9EQVJdCisrICBzdGQgNCwgMHgy MzgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9EU0lTUl0KKysgIHN0ZCA0 LCAweDI0MCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX1JFU1VMVF0KKysg IHN0ZCA0LCAweDI0OCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX0RTQ1Jd CisrCisrICAvLyBVcGRhdGUgY29udGV4dC0+dWNfbWNvbnRleHQucmVncyB0byBwb2ludCB0byBn cF9yZWdzCisrICBhZGRpIDAsIDMsIDB4ZTgKKysgIHN0ZCAwLCAweGUwKDMpCisrCisrICAvLyBT YXZlIGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycyAwLTMxCisrICBzdGZkIDAsIDB4MjY4KDMpICAv LyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzBdCisrICBzdGZkIDEsIDB4MjcwKDMpICAv LyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzFdCisrICBzdGZkIDIsIDB4Mjc4KDMpICAv LyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzJdCisrICBzdGZkIDMsIDB4MjgwKDMpICAv LyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzNdCisrICBzdGZkIDQsIDB4Mjg4KDMpICAv LyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzRdCisrICBzdGZkIDUsIDB4MjkwKDMpICAv LyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzVdCisrICBzdGZkIDYsIDB4Mjk4KDMpICAv LyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzZdCisrICBzdGZkIDcsIDB4MmEwKDMpICAv LyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzddCisrICBzdGZkIDgsIDB4MmE4KDMpICAv LyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzhdCisrICBzdGZkIDksIDB4MmIwKDMpICAv LyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzldCisrICBzdGZkIDEwLCAweDJiOCgzKSAv LyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzEwXQorKyAgc3RmZCAxMSwgMHgyYzAoMykg Ly8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxMV0KKysgIHN0ZmQgMTIsIDB4MmM4KDMp IC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMTJdCisrICBzdGZkIDEzLCAweDJkMCgz KSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzEzXQorKyAgc3RmZCAxNCwgMHgyZDgo MykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxNF0KKysgIHN0ZmQgMTUsIDB4MmUw KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMTVdCisrICBzdGZkIDE2LCAweDJl OCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzE2XQorKyAgc3RmZCAxNywgMHgy ZjAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxN10KKysgIHN0ZmQgMTgsIDB4 MmY4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMThdCisrICBzdGZkIDE5LCAw eDMwMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzE5XQorKyAgc3RmZCAyMCwg MHgzMDgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1syMF0KKysgIHN0ZmQgMjEs IDB4MzEwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMjFdCisrICBzdGZkIDIy LCAweDMxOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzIyXQorKyAgc3RmZCAy MywgMHgzMjAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1syM10KKysgIHN0ZmQg MjQsIDB4MzI4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMjRdCisrICBzdGZk IDI1LCAweDMzMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzI1XQorKyAgc3Rm ZCAyNiwgMHgzMzgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1syNl0KKysgIHN0 ZmQgMjcsIDB4MzQwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMjddCisrICBz dGZkIDI4LCAweDM0OCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzI4XQorKyAg c3RmZCAyOSwgMHgzNTAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1syOV0KKysg IHN0ZmQgMzAsIDB4MzU4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMzBdCisr ICBzdGZkIDMxLCAweDM2MCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzMxXQor KworKyAgLy8gRlBTQ1IKKysgIG1mZnMgMAorKyAgc3RmZCAwLCAweDM2OCgzKSAvLyBjb250ZXh0 LT51Y19tY29udGV4dC5mcF9yZWdzWzMyXQorKworKyAgLy8gU2F2ZSBWTVggVmVjdG9yIHJlZ2lz dGVycworKyAgLy8gVXBkYXRlIHI0IHRvIGNvbnRhaW4gdGhlIGJhc2UgYWRkcmVzcyBvZiB2bXhf cmVzZXJ2ZQorKyAgYWRkaSA0LCAzLCAweDM3OAorKyAgLy8gRW5zdXJlIHRoYXQgaXQgaXMgcXVh ZHdvcmQgYWxpZ25lZAorKyAgYW5kaS4gNSwgNCwgMHhGCisrICBiZXEgMWYgLy8gTm8gYWxpZ25t ZW50IGlzIG5lY2Vzc2FyeQorKyAgLy8gQWRkcmVzcyBpcyBkb3VibGV3b3JkIGFsaWduZWQgYW5k IG5vdCBxdWFkd29yZCBhbGlnbmVkLCBhZGQgOAorKyAgYWRkaSA0LCA0LCA4CisrCisrMToKKysg IC8vIFN0b3JlIFZNWCByZWdpc3RlcnMgMC0zMQorKyAgLy8gcjQgd2lsbCBjb250YWluIHRoZSBi YXNlIGFkZHJlc3MKKysgIC8vIHI1IHdpbGwgY29udGFpbiB0aGUgaW5kZXgKKysgIGxpIDUsIDAK KysgIHN0dnggMCwgNCwgNSAgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhh bGlnbikgKyAwXQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCAxLCA0LCA1ICAgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDFdCisrICBhZGRpIDUsIDUsIDE2 CisrICBzdHZ4IDIsIDQsIDUgICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVso YWxpZ24pICsgMl0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMywgNCwgNSAgIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAzXQorKyAgYWRkaSA1LCA1LCAx NgorKyAgc3R2eCA0LCA0LCA1ICAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVb KGFsaWduKSArIDRdCisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDUsIDQsIDUgICAvLyBjb250 ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgNV0KKysgIGFkZGkgNSwgNSwg MTYKKysgIHN0dnggNiwgNCwgNSAgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZl WyhhbGlnbikgKyA2XQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCA3LCA0LCA1ICAgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDddCisrICBhZGRpIDUsIDUs IDE2CisrICBzdHZ4IDgsIDQsIDUgICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2 ZVsoYWxpZ24pICsgOF0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggOSwgNCwgNSAgIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyA5XQorKyAgYWRkaSA1LCA1 LCAxNgorKyAgc3R2eCAxMCwgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2Vy dmVbKGFsaWduKSArIDEwXQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCAxMSwgNCwgNSAgLy8g Y29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDExXQorKyAgYWRkaSA1 LCA1LCAxNgorKyAgc3R2eCAxMiwgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jl c2VydmVbKGFsaWduKSArIDEyXQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCAxMywgNCwgNSAg Ly8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDEzXQorKyAgYWRk aSA1LCA1LCAxNgorKyAgc3R2eCAxNCwgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14 X3Jlc2VydmVbKGFsaWduKSArIDE0XQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCAxNSwgNCwg NSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDE1XQorKyAg YWRkaSA1LCA1LCAxNgorKyAgc3R2eCAxNiwgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQu dm14X3Jlc2VydmVbKGFsaWduKSArIDE2XQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCAxNywg NCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDE3XQor KyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCAxOCwgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQudm14X3Jlc2VydmVbKGFsaWduKSArIDE4XQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCAx OSwgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDE5 XQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCAyMCwgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNv bnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDIwXQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2 eCAyMSwgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSAr IDIxXQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCAyMiwgNCwgNSAgLy8gY29udGV4dC0+dWNf bWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDIyXQorKyAgYWRkaSA1LCA1LCAxNgorKyAg c3R2eCAyMywgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWdu KSArIDIzXQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCAyNCwgNCwgNSAgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDI0XQorKyAgYWRkaSA1LCA1LCAxNgor KyAgc3R2eCAyNSwgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFs aWduKSArIDI1XQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCAyNiwgNCwgNSAgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDI2XQorKyAgYWRkaSA1LCA1LCAx NgorKyAgc3R2eCAyNywgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVb KGFsaWduKSArIDI3XQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCAyOCwgNCwgNSAgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDI4XQorKyAgYWRkaSA1LCA1 LCAxNgorKyAgc3R2eCAyOSwgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2Vy dmVbKGFsaWduKSArIDI5XQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCAzMCwgNCwgNSAgLy8g Y29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDMwXQorKyAgYWRkaSA1 LCA1LCAxNgorKyAgc3R2eCAzMSwgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jl c2VydmVbKGFsaWduKSArIDMxXQorKyAgYWRkaSA1LCA1LCAxNgorKworKyAgLy8gVlNDUgorKyAg bWZ2c2NyIDAKKysgIHN0dnggMCwgNCwgNQorKyAgYWRkaSA1LCA1LCAxNgorKworKyAgLy8gVlJT QVZFCisrICBtZnZyc2F2ZSAwCisrICBzdHd4IDAsIDQsIDUKKysKKysgIC8vIFVwZGF0ZSBjb250 ZXh0LT51Y19tY29udGV4dC52X3JlZ3MgdG8gcG9pbnQgdG8gdm14X3Jlc2VydmUgKyBhbGlnbm1l bnQuCisrICBzdGQgNCwgMHgzNzAoMykKKysKKysgIC8vIFplcm8gb3V0IGFsbCB1bnVzZWQgZmll bGRzCisrICBsaSA0LCAwCisrICBzdGQgNCwgMHhjOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4 dC5zaWduYWwKKysgIHN0ZCA0LCAweGQwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmhhbmRs ZXIKKysgIHN0ZCA0LCAweGQ4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0Lm9sZG1hc2sKKysK KysgIGJscgorICNlbmRpZiAgLy8gX19pMzg2X18KKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9taXNjL2NhcHR1 cmVfY29udGV4dF90ZXN0LmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHRf dGVzdC5jYworQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBUZXN0Q2FwdHVyZUNvbnRleHQoKSB7Cisg ICB1aW50cHRyX3QgcGMgPSBQcm9ncmFtQ291bnRlckZyb21Db250ZXh0KGNvbnRleHRfMSk7Cisg CisgI2lmICFkZWZpbmVkKEFERFJFU1NfU0FOSVRJWkVSKSAmJiAhZGVmaW5lZChBUkNIX0NQVV9N SVBTX0ZBTUlMWSkgJiYgXAorLSAgICAhZGVmaW5lZChNRU1PUllfU0FOSVRJWkVSKQorKyAgICAh ZGVmaW5lZChNRU1PUllfU0FOSVRJWkVSKSAmJiAhZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1J TFkpCisgICAvLyBTYW5pdGl6ZXJzIGNhbiBjYXVzZSBlbm91Z2ggY29kZSBibG9hdCB0aGF0IHRo ZSDigJxuZWFyYnnigJ0gY2hlY2sgd291bGQKKyAgIC8vIGxpa2VseSBmYWlsLgorICAgY29uc3Qg dWludHB0cl90IGtSZWZlcmVuY2VQQyA9CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0dXJlX2Nv bnRleHRfdGVzdF91dGlsX2xpbnV4LmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0dXJlX2Nv bnRleHRfdGVzdF91dGlsX2xpbnV4LmNjCitAQCAtMzYsNiArMzYsOCBAQCB2b2lkIFNhbml0eUNo ZWNrQ29udGV4dChjb25zdCBOYXRpdmVDUFVDb250ZXh0JiBjb250ZXh0KSB7CisgICBFWFBFQ1Rf RVEoY29udGV4dC51Y19tY29udGV4dC5yZWdzWzBdLCBGcm9tUG9pbnRlckNhc3Q8dWludHB0cl90 PigmY29udGV4dCkpOworICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCisgICBF WFBFQ1RfRVEoY29udGV4dC51Y19tY29udGV4dC5ncmVnc1s0XSwgRnJvbVBvaW50ZXJDYXN0PHVp bnRwdHJfdD4oJmNvbnRleHQpKTsKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlM WSkKKysgIEVYUEVDVF9FUShjb250ZXh0LnVjX21jb250ZXh0LmdwX3JlZ3NbM10sIEZyb21Qb2lu dGVyQ2FzdDx1aW50cHRyX3Q+KCZjb250ZXh0KSk7CisgI2VuZGlmCisgfQorIAorQEAgLTUwLDYg KzUyLDggQEAgdWludHB0cl90IFByb2dyYW1Db3VudGVyRnJvbUNvbnRleHQoY29uc3QgTmF0aXZl Q1BVQ29udGV4dCYgY29udGV4dCkgeworICAgcmV0dXJuIGNvbnRleHQudWNfbWNvbnRleHQucGM7 CisgI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkKKyAgIHJldHVybiBjb250ZXh0 LnVjX21jb250ZXh0LnBjOworKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQor KyAgcmV0dXJuIGNvbnRleHQudWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9OSVBdOworICNlbmRpZgor IH0KKyAKK0BAIC02NCw2ICs2OCw4IEBAIHVpbnRwdHJfdCBTdGFja1BvaW50ZXJGcm9tQ29udGV4 dChjb25zdCBOYXRpdmVDUFVDb250ZXh0JiBjb250ZXh0KSB7CisgICByZXR1cm4gY29udGV4dC51 Y19tY29udGV4dC5zcDsKKyAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQorICAg cmV0dXJuIGNvbnRleHQudWNfbWNvbnRleHQuZ3JlZ3NbMjldOworKyNlbGlmIGRlZmluZWQoQVJD SF9DUFVfUFBDNjRfRkFNSUxZKQorKyAgcmV0dXJuIGNvbnRleHQudWNfbWNvbnRleHQuZ3BfcmVn c1sxXTsKKyAjZW5kaWYKKyB9CisgCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvcG9zaXgvc2lnbmFsc190ZXN0 LmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Ny YXNocGFkL2NyYXNocGFkL3V0aWwvcG9zaXgvc2lnbmFsc190ZXN0LmNjCitAQCAtNDYsMTIgKzQ2 LDEyIEBAIGJvb2wgQ2FuQ2F1c2VTaWduYWwoaW50IHNpZykgeworICAgcmV0dXJuIHNpZyA9PSBT SUdBQlJUIHx8CisgICAgICAgICAgc2lnID09IFNJR0FMUk0gfHwKKyAgICAgICAgICBzaWcgPT0g U0lHQlVTIHx8CistI2lmICFkZWZpbmVkKEFSQ0hfQ1BVX0FSTTY0KQorKyNpZiAhZGVmaW5lZChB UkNIX0NQVV9BUk02NCkgJiYgIWRlZmluZWQoQVJDSF9DUFVfUFBDNjQpCisgICAgICAgICAgc2ln ID09IFNJR0ZQRSB8fAorLSNlbmRpZiAgLy8gIWRlZmluZWQoQVJDSF9DUFVfQVJNNjQpCisrI2Vu ZGlmICAvLyAhZGVmaW5lZChBUkNIX0NQVV9BUk02NCkgJiYgIWRlZmluZWQoQVJDSF9DUFVfUFBD NjQpCisgI2lmIGRlZmluZWQoQVJDSF9DUFVfWDg2X0ZBTUlMWSkgfHwgZGVmaW5lZChBUkNIX0NQ VV9BUk1FTCkKKyAgICAgICAgICBzaWcgPT0gU0lHSUxMIHx8CistI2VuZGlmICAvLyBkZWZpbmVk KEFSQ0hfQ1BVX1g4Nl9GQU1JTFkpIHx8IGRlZmluZWQoQVJDSF9DUFVfQVJNRUwKKysjZW5kaWYg IC8vIGRlZmluZWQoQVJDSF9DUFVfWDg2X0ZBTUlMWSkgfHwgZGVmaW5lZChBUkNIX0NQVV9BUk1F TCkKKyAgICAgICAgICBzaWcgPT0gU0lHUElQRSB8fAorICAgICAgICAgIHNpZyA9PSBTSUdTRUdW IHx8CisgI2lmIGRlZmluZWQoT1NfTUFDT1NYKQorQEAgLTExNyw5ICsxMTcsMTEgQEAgdm9pZCBD YXVzZVNpZ25hbChpbnQgc2lnKSB7CisgICAgICAgYnJlYWs7CisgICAgIH0KKyAKKy0jaWYgIWRl ZmluZWQoQVJDSF9DUFVfQVJNNjQpCisrI2lmICFkZWZpbmVkKEFSQ0hfQ1BVX0FSTTY0KSAmJiAh ZGVmaW5lZChBUkNIX0NQVV9QUEM2NCkKKyAgICAgLy8gQVJNNjQgaGFzIGhhcmR3YXJlIGludGVn ZXIgZGl2aXNpb24gaW5zdHJ1Y3Rpb25zIHRoYXQgZG9u4oCZdCBnZW5lcmF0ZSBhCisgICAgIC8v IHRyYXAgZm9yIGRpdmlkZS1ieS16ZXJvLCBzbyB0aGlzIGRvZXNu4oCZdCBwcm9kdWNlIFNJR0ZQ RS4KKysgICAgLy8KKysgICAgLy8gUFBDNjQgZml4ZWQtcG9pbnQgZGl2aXNpb24gYnkgemVybyBh bHNvIGRvZXNuJ3QgcHJvZHVjZSBhIFNJR0ZQRS4KKyAgICAgY2FzZSBTSUdGUEU6IHsKKyAgICAg ICAvLyBPcHRpbWl6YXRpb24gbWFrZXMgdGhpcyB0cmlja3ksIHNvIGdldCB6ZXJvIGZyb20gYSBz eXN0ZW0gY2FsbCBsaWtlbHkKKyAgICAgICAvLyB0byBzdWNjZWVkLCBhbmQgdHJ5IHRvIGRvIHNv bWV0aGluZyB3aXRoIHRoZSByZXN1bHQuCitAQCAtMTM3LDcgKzEzOSw3IEBAIHZvaWQgQ2F1c2VT aWduYWwoaW50IHNpZykgeworICAgICAgIGZzdGF0KHF1b3RpZW50LCAmc3RhdF9idWYpOworICAg ICAgIGJyZWFrOworICAgICB9CistI2VuZGlmICAvLyBBUkNIX0NQVV9BUk02NAorKyNlbmRpZiAg Ly8gIWRlZmluZWQoQVJDSF9DUFVfQVJNNjQpICYmICFkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQor IAorICNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1g4Nl9GQU1JTFkpIHx8IGRlZmluZWQoQVJDSF9DUFVf QVJNRUwpCisgICAgIGNhc2UgU0lHSUxMOiB7CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2xpYnBuZy9CVUlMRC5nbgorKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9saWJwbmcvQlVJTEQuZ24KK0BAIC05Myw2 ICs5MywxMSBAQCBzb3VyY2Vfc2V0KCJsaWJwbmdfc291cmNlcyIpIHsKKyAgICAgICAibWlwcy9m aWx0ZXJfbXNhX2ludHJpbnNpY3MuYyIsCisgICAgICAgIm1pcHMvbWlwc19pbml0LmMiLAorICAg ICBdCisrICB9IGVsc2UgaWYgKGN1cnJlbnRfY3B1ID09ICJwcGM2NCIpIHsKKysgICAgc291cmNl cyArPSBbCisrICAgICAgInBvd2VycGMvZmlsdGVyX3ZzeF9pbnRyaW5zaWNzLmMiLAorKyAgICAg ICJwb3dlcnBjL3Bvd2VycGNfaW5pdC5jIiwKKysgICAgXQorICAgfQorIAorICAgY29uZmlncyAt PSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCituZXcgZmlsZSBt b2RlIDEwMDY0NAorLS0tIC9kZXYvbnVsbAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9saWJwbmcvcG93ZXJwYy9maWx0ZXJfdnN4X2ludHJpbnNpY3Mu YworQEAgLTAsMCArMSw3NjcgQEAKKysvKiBmaWx0ZXJfdnN4X2ludHJpbnNpY3MuYyAtIFBvd2Vy UEMgb3B0aW1pc2VkIGZpbHRlciBmdW5jdGlvbnMKKysgKgorKyAqIENvcHlyaWdodCAoYykgMjAx NyBHbGVubiBSYW5kZXJzLVBlaHJzb24KKysgKiBXcml0dGVuIGJ5IFZhZGltIEJhcmtvdiwgMjAx Ny4KKysgKiBMYXN0IGNoYW5nZWQgaW4gbGlicG5nIDEuNi4yOSBbTWFyY2ggMTYsIDIwMTddCisr ICoKKysgKiBUaGlzIGNvZGUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIGxpYnBuZyBsaWNlbnNlLgor KyAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgdGhlIGRpc2Ns YWltZXIKKysgKiBhbmQgbGljZW5zZSBpbiBwbmcuaAorKyAqLworKyNpbmNsdWRlIDxzdGRpby5o PgorKyNpbmNsdWRlIDxzdGRpbnQuaD4KKysjaW5jbHVkZSAiLi4vcG5ncHJpdi5oIgorKworKyNp ZmRlZiBQTkdfUkVBRF9TVVBQT1JURUQKKysKKysvKiBUaGlzIGNvZGUgcmVxdWlyZXMgLW1hbHRp dmVjIGFuZCAtbXZzeCBvbiB0aGUgY29tbWFuZCBsaW5lOiAqLworKyNpZiBQTkdfUE9XRVJQQ19W U1hfSU1QTEVNRU5UQVRJT04gPT0gMSAvKiBpbnRyaW5zaWNzIGNvZGUgZnJvbSBwbmdwcml2Lmgg Ki8KKysKKysjaW5jbHVkZSA8YWx0aXZlYy5oPgorKworKyNpZiBQTkdfUE9XRVJQQ19WU1hfT1BU ID4gMAorKworKyNpZm5kZWYgX19WU1hfXworKyMgIGVycm9yICJUaGlzIGNvZGUgcmVxdWlyZXMg VlNYIHN1cHBvcnQgKFBPV0VSNyBhbmQgbGF0ZXIpLiBQbGVhc2UgcHJvdmlkZSAtbXZzeCBjb21w aWxlciBmbGFnLiIKKysjZW5kaWYKKysKKysjZGVmaW5lIHZlY19sZF91bmFsaWduZWQodmVjLGRh dGEpIHZlYyA9IHZlY192c3hfbGQoMCxkYXRhKQorKyNkZWZpbmUgdmVjX3N0X3VuYWxpZ25lZCh2 ZWMsZGF0YSkgdmVjX3ZzeF9zdCh2ZWMsMCxkYXRhKQorKworKworKy8qIEZ1bmN0aW9ucyBpbiB0 aGlzIGZpbGUgbG9vayBhdCBtb3N0IDMgcGl4ZWxzIChhLGIsYykgdG8gcHJlZGljdCB0aGUgNHRo IChkKS4KKysgKiBUaGV5J3JlIHBvc2l0aW9uZWQgbGlrZSB0aGlzOgorKyAqICAgIHByZXY6ICBj IGIKKysgKiAgICByb3c6ICAgYSBkCisrICogVGhlIFN1YiBmaWx0ZXIgcHJlZGljdHMgZD1hLCBB dmcgZD0oYStiKS8yLCBhbmQgUGFldGggcHJlZGljdHMgZCB0byBiZQorKyAqIHdoaWNoZXZlciBv ZiBhLCBiLCBvciBjIGlzIGNsb3Nlc3QgdG8gcD1hK2ItYy4KKysgKiAoIHRoaXMgaXMgdGFrZW4g ZnJvbSAuLi9pbnRlbC9maWx0ZXJfc3NlMl9pbnRyaW5zaWNzLmMgKQorKyAqLworKworKyNkZWZp bmUgdnN4X2RlY2xhcmVfY29tbW9uX3ZhcnMocm93X2luZm8scm93LHByZXZfcm93LG9mZnNldCkg XAorKyAgIHBuZ19ieXRlIGk7XAorKyAgIHBuZ19ieXRlcCBycCA9IHJvdyArIG9mZnNldDtcCisr ICAgcG5nX2NvbnN0X2J5dGVwIHBwID0gcHJldl9yb3c7XAorKyAgIHBuZ19zaXplX3QgdW5hbGln bmVkX3RvcCA9IDE2IC0gKCgocG5nX3NpemVfdClycCAlIDE2KSk7XAorKyAgIHBuZ19zaXplX3Qg aXN0b3A7XAorKyAgIGlmKHVuYWxpZ25lZF90b3AgPT0gMTYpXAorKyAgICAgIHVuYWxpZ25lZF90 b3AgPSAwO1wKKysgICBpc3RvcCA9IHJvd19pbmZvLT5yb3dieXRlcztcCisrICAgaWYoKHVuYWxp Z25lZF90b3AgPCBpc3RvcCkpXAorKyAgICAgIGlzdG9wIC09IHVuYWxpZ25lZF90b3A7XAorKyAg IGVsc2V7XAorKyAgICAgIHVuYWxpZ25lZF90b3AgPSBpc3RvcDtcCisrICAgICAgaXN0b3AgPSAw O1wKKysgICB9CisrCisrdm9pZCBwbmdfcmVhZF9maWx0ZXJfcm93X3VwX3ZzeChwbmdfcm93X2lu Zm9wIHJvd19pbmZvLCBwbmdfYnl0ZXAgcm93LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcG5nX2NvbnN0X2J5dGVwIHByZXZfcm93KQorK3sKKysgICB2ZWN0b3IgdW5zaWduZWQg Y2hhciBycF92ZWM7CisrICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcHBfdmVjOworKyAgIHZzeF9k ZWNsYXJlX2NvbW1vbl92YXJzKHJvd19pbmZvLHJvdyxwcmV2X3JvdywwKQorKworKyAgIC8qIEFs dGl2ZWMgb3BlcmF0aW9ucyByZXF1aXJlIDE2LWJ5dGUgYWxpZ25lZCBkYXRhCisrICAgICogYnV0 IGlucHV0IGNhbiBiZSB1bmFsaWduZWQuIFNvIHdlIGNhbGN1bGF0ZQorKyAgICAqIHVuYWxpZ25l ZCBwYXJ0IGFzIHVzdWFsLgorKyAgICAqLworKyAgIGZvciAoaSA9IDA7IGkgPCB1bmFsaWduZWRf dG9wOyBpKyspCisrICAgeworKyAgICAgICpycCA9IChwbmdfYnl0ZSkoKChpbnQpKCpycCkgKyAo aW50KSgqcHArKykpICYgMHhmZik7CisrICAgICAgcnArKzsKKysgICB9CisrCisrICAgLyogVXNp bmcgU0lNRCB3aGlsZSB3ZSBjYW4gKi8KKysgICB3aGlsZSggaXN0b3AgPj0gMTYgKQorKyAgIHsK KysgICAgICBycF92ZWMgPSB2ZWNfbGQoMCxycCk7CisrICAgICAgdmVjX2xkX3VuYWxpZ25lZChw cF92ZWMscHApOworKworKyAgICAgIHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLHBwX3ZlYyk7Cisr CisrICAgICAgdmVjX3N0KHJwX3ZlYywwLHJwKTsKKysKKysgICAgICBwcCArPSAxNjsKKysgICAg ICBycCArPSAxNjsKKysgICAgICBpc3RvcCAtPSAxNjsKKysgICB9CisrCisrICAgaWYoaXN0b3Ag PiAwKQorKyAgIHsKKysgICAgICAvKiBJZiBieXRlIGNvdW50IG9mIHJvdyBpcyBub3QgZGl2aXNp YmxlIGJ5IDE2CisrICAgICAgICogd2Ugd2lsbCBwcm9jZXNzIHJlbWFpbmluZyBwYXJ0IGFzIHVz dWFsCisrICAgICAgICovCisrICAgICAgZm9yIChpID0gMDsgaSA8IGlzdG9wOyBpKyspCisrICAg ICAgeworKyAgICAgICAgICpycCA9IChwbmdfYnl0ZSkoKChpbnQpKCpycCkgKyAoaW50KSgqcHAr KykpICYgMHhmZik7CisrICAgICAgICAgcnArKzsKKysgICAgICB9CisrfQorKworK30KKysKKytz dGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX0xFRlRTSElGVEVEMV80ID0gezE2 LDE2LDE2LDE2LCAwLCAxLCAyLCAzLDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKKytzdGF0aWMg Y29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX0xFRlRTSElGVEVEMl80ID0gezE2LDE2LDE2 LDE2LDE2LDE2LDE2LDE2LCA0LCA1LCA2LCA3LDE2LDE2LDE2LDE2fTsKKytzdGF0aWMgY29uc3Qg dmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX0xFRlRTSElGVEVEM180ID0gezE2LDE2LDE2LDE2LDE2 LDE2LDE2LDE2LDE2LDE2LDE2LDE2LCA4LCA5LDEwLDExfTsKKysKKytzdGF0aWMgY29uc3QgdmVj dG9yIHVuc2lnbmVkIGNoYXIgVlNYX0xFRlRTSElGVEVEMV8zID0gezE2LDE2LDE2LCAwLCAxLCAy LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKKytzdGF0aWMgY29uc3QgdmVjdG9yIHVu c2lnbmVkIGNoYXIgVlNYX0xFRlRTSElGVEVEMl8zID0gezE2LDE2LDE2LDE2LDE2LDE2LCAzLCA0 LCA1LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKKytzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVk IGNoYXIgVlNYX0xFRlRTSElGVEVEM18zID0gezE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LCA2 LCA3LCA4LDE2LDE2LDE2LDE2fTsKKytzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIg VlNYX0xFRlRTSElGVEVENF8zID0gezE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2 LCA5LDEwLDExLDE2fTsKKysKKytzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNY X05PVF9TSElGVEVEMV80ID0gezE2LDE2LDE2LDE2LCA0LCA1LCA2LCA3LDE2LDE2LDE2LDE2LDE2 LDE2LDE2LDE2fTsKKytzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX05PVF9T SElGVEVEMl80ID0gezE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LCA4LCA5LDEwLDExLDE2LDE2LDE2 LDE2fTsKKytzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX05PVF9TSElGVEVE M180ID0gezE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDEyLDEzLDE0LDE1fTsK KysKKytzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX05PVF9TSElGVEVEMV8z ID0gezE2LDE2LDE2LCAzLCA0LCA1LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKKytz dGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX05PVF9TSElGVEVEMl8zID0gezE2 LDE2LDE2LDE2LDE2LDE2LCA2LCA3LCA4LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKKytzdGF0aWMg Y29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX05PVF9TSElGVEVEM18zID0gezE2LDE2LDE2 LDE2LDE2LDE2LDE2LDE2LDE2LCA5LDEwLDExLDE2LDE2LDE2LDE2fTsKKytzdGF0aWMgY29uc3Qg dmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX05PVF9TSElGVEVENF8zID0gezE2LDE2LDE2LDE2LDE2 LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDEyLDEzLDE0LDE2fTsKKysKKytzdGF0aWMgY29uc3QgdmVj dG9yIHVuc2lnbmVkIGNoYXIgVlNYX0NIQVJfWkVSTyA9IHswLDAsMCwwLDAsMCwwLDAsMCwwLDAs MCwwLDAsMCwwfTsKKysjaWZkZWYgX19MSVRUTEVfRU5ESUFOX18KKysKKytzdGF0aWMgY29uc3Qg dmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX0NIQVJfVE9fU0hPUlQxXzQgPSB7IDQsMTYsIDUsMTYs IDYsMTYsIDcsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OworK3N0YXRpYyBjb25zdCB2ZWN0 b3IgdW5zaWduZWQgY2hhciBWU1hfQ0hBUl9UT19TSE9SVDJfNCA9IHsgOCwxNiwgOSwxNiwxMCwx NiwxMSwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Cisrc3RhdGljIGNvbnN0IHZlY3RvciB1 bnNpZ25lZCBjaGFyIFZTWF9DSEFSX1RPX1NIT1JUM180ID0gezEyLDE2LDEzLDE2LDE0LDE2LDE1 LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKKysKKytzdGF0aWMgY29uc3QgdmVjdG9yIHVu c2lnbmVkIGNoYXIgVlNYX1NIT1JUX1RPX0NIQVIxXzQgPSB7MTYsMTYsMTYsMTYsIDAsIDIsIDQs IDYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OworK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWdu ZWQgY2hhciBWU1hfU0hPUlRfVE9fQ0hBUjJfNCA9IHsxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwg MCwgMiwgNCwgNiwxNiwxNiwxNiwxNn07Cisrc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBj aGFyIFZTWF9TSE9SVF9UT19DSEFSM180ID0gezE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2 LDE2LDE2LCAwLCAyLCA0LCA2fTsKKysKKytzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNo YXIgVlNYX0NIQVJfVE9fU0hPUlQxXzMgPSB7IDMsMTYsIDQsMTYsIDUsMTYsMTYsMTYsMTYsMTYs MTYsMTYsMTYsMTYsMTYsMTZ9OworK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBW U1hfQ0hBUl9UT19TSE9SVDJfMyA9IHsgNiwxNiwgNywxNiwgOCwxNiwxNiwxNiwxNiwxNiwxNiwx NiwxNiwxNiwxNiwxNn07Cisrc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9D SEFSX1RPX1NIT1JUM18zID0geyA5LDE2LDEwLDE2LDExLDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2 LDE2LDE2LDE2fTsKKytzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX0NIQVJf VE9fU0hPUlQ0XzMgPSB7MTIsMTYsMTMsMTYsMTQsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYs MTYsMTZ9OworKworK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfU0hPUlRf VE9fQ0hBUjFfMyA9IHsxNiwxNiwxNiwgMCwgMiwgNCwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwx NiwxNn07Cisrc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9TSE9SVF9UT19D SEFSMl8zID0gezE2LDE2LDE2LDE2LDE2LDE2LCAwLCAyLCA0LDE2LDE2LDE2LDE2LDE2LDE2LDE2 fTsKKytzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX1NIT1JUX1RPX0NIQVIz XzMgPSB7MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsIDAsIDIsIDQsMTYsMTYsMTYsMTZ9Owor K3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfU0hPUlRfVE9fQ0hBUjRfMyA9 IHsxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwgMCwgMiwgNCwxNn07CisrCisr I2VsaWYgZGVmaW5lZChfX0JJR19FTkRJQU5fXykKKysKKytzdGF0aWMgY29uc3QgdmVjdG9yIHVu c2lnbmVkIGNoYXIgVlNYX0NIQVJfVE9fU0hPUlQxXzQgPSB7MTYsIDQsMTYsIDUsMTYsIDYsMTYs IDcsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OworK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWdu ZWQgY2hhciBWU1hfQ0hBUl9UT19TSE9SVDJfNCA9IHsxNiwgOCwxNiwgOSwxNiwxMCwxNiwxMSwx NiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Cisrc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBj aGFyIFZTWF9DSEFSX1RPX1NIT1JUM180ID0gezE2LDEyLDE2LDEzLDE2LDE0LDE2LDE1LDE2LDE2 LDE2LDE2LDE2LDE2LDE2LDE2fTsKKysKKytzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNo YXIgVlNYX1NIT1JUX1RPX0NIQVIxXzQgPSB7MTYsMTYsMTYsMTYsIDEsIDMsIDUsIDcsMTYsMTYs MTYsMTYsMTYsMTYsMTYsMTZ9OworK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBW U1hfU0hPUlRfVE9fQ0hBUjJfNCA9IHsxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwgMSwgMywgNSwg NywxNiwxNiwxNiwxNn07Cisrc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9T SE9SVF9UT19DSEFSM180ID0gezE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LCAx LCAzLCA1LCA3fTsKKysKKytzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX0NI QVJfVE9fU0hPUlQxXzMgPSB7MTYsIDMsMTYsIDQsMTYsIDUsMTYsMTYsMTYsMTYsMTYsMTYsMTYs MTYsMTYsMTZ9OworK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfQ0hBUl9U T19TSE9SVDJfMyA9IHsxNiwgNiwxNiwgNywxNiwgOCwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwx NiwxNn07Cisrc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9DSEFSX1RPX1NI T1JUM18zID0gezE2LCA5LDE2LDEwLDE2LDExLDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2 fTsKKytzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX0NIQVJfVE9fU0hPUlQ0 XzMgPSB7MTYsMTIsMTYsMTMsMTYsMTQsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9Owor KworK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfU0hPUlRfVE9fQ0hBUjFf MyA9IHsxNiwxNiwxNiwgMSwgMywgNSwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Cisr c3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9TSE9SVF9UT19DSEFSMl8zID0g ezE2LDE2LDE2LDE2LDE2LDE2LCAxLCAzLCA1LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKKytzdGF0 aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX1NIT1JUX1RPX0NIQVIzXzMgPSB7MTYs MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsIDEsIDMsIDUsMTYsMTYsMTYsMTZ9OworK3N0YXRpYyBj b25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfU0hPUlRfVE9fQ0hBUjRfMyA9IHsxNiwxNiwx NiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwgMSwgMywgNSwxNn07CisrCisrI2VuZGlmCisr CisrI2RlZmluZSB2c3hfY2hhcl90b19zaG9ydCh2ZWMsb2Zmc2V0LGJwcCkgKHZlY3RvciB1bnNp Z25lZCBzaG9ydCl2ZWNfcGVybSgodmVjKSxWU1hfQ0hBUl9aRVJPLFZTWF9DSEFSX1RPX1NIT1JU IyNvZmZzZXQjI18jI2JwcCkKKysjZGVmaW5lIHZzeF9zaG9ydF90b19jaGFyKHZlYyxvZmZzZXQs YnBwKSB2ZWNfcGVybSgoKHZlY3RvciB1bnNpZ25lZCBjaGFyKSh2ZWMpKSxWU1hfQ0hBUl9aRVJP LFZTWF9TSE9SVF9UT19DSEFSIyNvZmZzZXQjI18jI2JwcCkKKysKKysjaWZkZWYgUE5HX1VTRV9B QlMKKysjICBkZWZpbmUgdnN4X2FicyhudW1iZXIpIGFicyhudW1iZXIpCisrI2Vsc2UKKysjICBk ZWZpbmUgdnN4X2FicyhudW1iZXIpIChudW1iZXIgPiAwKSA/IChudW1iZXIpIDogLShudW1iZXIp CisrI2VuZGlmCisrCisrdm9pZCBwbmdfcmVhZF9maWx0ZXJfcm93X3N1YjRfdnN4KHBuZ19yb3df aW5mb3Agcm93X2luZm8sIHBuZ19ieXRlcCByb3csCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBuZ19jb25zdF9ieXRlcCBwcmV2X3JvdykKKyt7CisrICAgY29uc3QgcG5nX2J5 dGUgYnBwID0gNDsKKysKKysgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBycF92ZWM7CisrICAgdmVj dG9yIHVuc2lnbmVkIGNoYXIgcGFydF92ZWM7CisrCisrICAgdnN4X2RlY2xhcmVfY29tbW9uX3Zh cnMocm93X2luZm8scm93LHByZXZfcm93LGJwcCkKKysKKysgICBQTkdfVU5VU0VEKHBwKQorKwor KyAgIC8qIEFsdGl2ZWMgb3BlcmF0aW9ucyByZXF1aXJlIDE2LWJ5dGUgYWxpZ25lZCBkYXRhCisr ICAgICogYnV0IGlucHV0IGNhbiBiZSB1bmFsaWduZWQuIFNvIHdlIGNhbGN1bGF0ZQorKyAgICAq IHVuYWxpZ25lZCBwYXJ0IGFzIHVzdWFsLgorKyAgICAqLworKyAgIGZvciAoaSA9IDA7IGkgPCB1 bmFsaWduZWRfdG9wOyBpKyspCisrICAgeworKyAgICAgICpycCA9IChwbmdfYnl0ZSkoKChpbnQp KCpycCkgKyAoaW50KSgqKHJwLWJwcCkpKSAmIDB4ZmYpOworKyAgICAgIHJwKys7CisrICAgfQor KworKyAgIC8qIFVzaW5nIFNJTUQgd2hpbGUgd2UgY2FuICovCisrICAgd2hpbGUoIGlzdG9wID49 IDE2ICkKKysgICB7CisrICAgICAgZm9yKGk9MDtpIDwgYnBwIDsgaSsrKQorKyAgICAgIHsKKysg ICAgICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsgKGludCkoKihycC1icHApKSkg JiAweGZmKTsKKysgICAgICAgICBycCsrOworKyAgICAgIH0KKysgICAgICBycCAtPSBicHA7Cisr CisrICAgICAgcnBfdmVjID0gdmVjX2xkKDAscnApOworKyAgICAgIHBhcnRfdmVjID0gdmVjX3Bl cm0ocnBfdmVjLFZTWF9DSEFSX1pFUk8sVlNYX0xFRlRTSElGVEVEMV80KTsKKysgICAgICBycF92 ZWMgPSB2ZWNfYWRkKHJwX3ZlYyxwYXJ0X3ZlYyk7CisrCisrICAgICAgcGFydF92ZWMgPSB2ZWNf cGVybShycF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTEVGVFNISUZURUQyXzQpOworKyAgICAgIHJw X3ZlYyA9IHZlY19hZGQocnBfdmVjLHBhcnRfdmVjKTsKKysKKysgICAgICBwYXJ0X3ZlYyA9IHZl Y19wZXJtKHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZUU0hJRlRFRDNfNCk7CisrICAgICAg cnBfdmVjID0gdmVjX2FkZChycF92ZWMscGFydF92ZWMpOworKworKyAgICAgIHZlY19zdChycF92 ZWMsMCxycCk7CisrCisrICAgICAgcnAgKz0gMTY7CisrICAgICAgaXN0b3AgLT0gMTY7CisrICAg fQorKworKyAgIGlmKGlzdG9wID4gMCkKKysgICAgICBmb3IgKGkgPSAwOyBpIDwgaXN0b3AgJSAx NjsgaSsrKQorKyAgICAgIHsKKysgICAgICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnAp ICsgKGludCkoKihycCAtIGJwcCkpKSAmIDB4ZmYpOworKyAgICAgICAgIHJwKys7CisrICAgICAg fQorKworK30KKysKKyt2b2lkIHBuZ19yZWFkX2ZpbHRlcl9yb3dfc3ViM192c3gocG5nX3Jvd19p bmZvcCByb3dfaW5mbywgcG5nX2J5dGVwIHJvdywKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcG5nX2NvbnN0X2J5dGVwIHByZXZfcm93KQorK3sKKysgICBjb25zdCBwbmdfYnl0 ZSBicHAgPSAzOworKworKyAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIHJwX3ZlYzsKKysgICB2ZWN0 b3IgdW5zaWduZWQgY2hhciBwYXJ0X3ZlYzsKKysKKysgICB2c3hfZGVjbGFyZV9jb21tb25fdmFy cyhyb3dfaW5mbyxyb3cscHJldl9yb3csYnBwKQorKworKyAgIFBOR19VTlVTRUQocHApCisrCisr ICAgLyogQWx0aXZlYyBvcGVyYXRpb25zIHJlcXVpcmUgMTYtYnl0ZSBhbGlnbmVkIGRhdGEKKysg ICAgKiBidXQgaW5wdXQgY2FuIGJlIHVuYWxpZ25lZC4gU28gd2UgY2FsY3VsYXRlCisrICAgICog dW5hbGlnbmVkIHBhcnQgYXMgdXN1YWwuCisrICAgICovCisrICAgZm9yIChpID0gMDsgaSA8IHVu YWxpZ25lZF90b3A7IGkrKykKKysgICB7CisrICAgICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCko KnJwKSArIChpbnQpKCoocnAtYnBwKSkpICYgMHhmZik7CisrICAgICAgcnArKzsKKysgICB9Cisr CisrICAgLyogVXNpbmcgU0lNRCB3aGlsZSB3ZSBjYW4gKi8KKysgICB3aGlsZSggaXN0b3AgPj0g MTYgKQorKyAgIHsKKysgICAgICBmb3IoaT0wO2kgPCBicHAgOyBpKyspCisrICAgICAgeworKyAg ICAgICAgICpycCA9IChwbmdfYnl0ZSkoKChpbnQpKCpycCkgKyAoaW50KSgqKHJwLWJwcCkpKSAm IDB4ZmYpOworKyAgICAgICAgIHJwKys7CisrICAgICAgfQorKyAgICAgIHJwIC09IGJwcDsKKysK KysgICAgICBycF92ZWMgPSB2ZWNfbGQoMCxycCk7CisrICAgICAgcGFydF92ZWMgPSB2ZWNfcGVy bShycF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTEVGVFNISUZURUQxXzMpOworKyAgICAgIHJwX3Zl YyA9IHZlY19hZGQocnBfdmVjLHBhcnRfdmVjKTsKKysKKysgICAgICBwYXJ0X3ZlYyA9IHZlY19w ZXJtKHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZUU0hJRlRFRDJfMyk7CisrICAgICAgcnBf dmVjID0gdmVjX2FkZChycF92ZWMscGFydF92ZWMpOworKworKyAgICAgIHBhcnRfdmVjID0gdmVj X3Blcm0ocnBfdmVjLFZTWF9DSEFSX1pFUk8sVlNYX0xFRlRTSElGVEVEM18zKTsKKysgICAgICBy cF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYyxwYXJ0X3ZlYyk7CisrCisrICAgICAgcGFydF92ZWMgPSB2 ZWNfcGVybShycF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTEVGVFNISUZURUQ0XzMpOworKyAgICAg IHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLHBhcnRfdmVjKTsKKysKKysgICAgICB2ZWNfc3QocnBf dmVjLDAscnApOworKyAgICAgIHJwICs9IDE1OworKyAgICAgIGlzdG9wIC09IDE2OworKworKyAg ICAgIC8qIFNpbmNlIDE2ICUgYnBwID0gMTYgJSAzID0gMSwgbGFzdCBlbGVtZW50IG9mIGFycmF5 IG11c3QKKysgICAgICAgKiBiZSBwcm9jZWVkZWQgbWFudWFsbHkKKysgICAgICAgKi8KKysgICAg ICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsgKGludCkoKihycC1icHApKSkgJiAweGZm KTsKKysgICAgICBycCsrOworKyAgIH0KKysKKysgICBpZihpc3RvcCA+IDApCisrICAgICAgZm9y IChpID0gMDsgaSA8IGlzdG9wICUgMTY7IGkrKykKKysgICAgICB7CisrICAgICAgICAgKnJwID0g KHBuZ19ieXRlKSgoKGludCkoKnJwKSArIChpbnQpKCoocnAtYnBwKSkpICYgMHhmZik7CisrICAg ICAgICAgcnArKzsKKysgICAgICB9CisrfQorKworK3ZvaWQgcG5nX3JlYWRfZmlsdGVyX3Jvd19h dmc0X3ZzeChwbmdfcm93X2luZm9wIHJvd19pbmZvLCBwbmdfYnl0ZXAgcm93LAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwbmdfY29uc3RfYnl0ZXAgcHJldl9yb3cpCisrewor KyAgIGNvbnN0IHBuZ19ieXRlIGJwcCA9IDQ7CisrCisrICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIg cnBfdmVjOworKyAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIHBwX3ZlYzsKKysgICB2ZWN0b3IgdW5z aWduZWQgY2hhciBwcF9wYXJ0X3ZlYzsKKysgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBycF9wYXJ0 X3ZlYzsKKysgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBhdmdfdmVjOworKworKyAgIHZzeF9kZWNs YXJlX2NvbW1vbl92YXJzKHJvd19pbmZvLHJvdyxwcmV2X3JvdyxicHApCisrICAgcnAgLT0gYnBw OworKyAgIGlmKGlzdG9wID49IGJwcCkKKysgICAgICBpc3RvcCAtPSBicHA7CisrCisrICAgZm9y IChpID0gMDsgaSA8IGJwcDsgaSsrKQorKyAgIHsKKysgICAgICAqcnAgPSAocG5nX2J5dGUpKCgo aW50KSgqcnApICsKKysgICAgICAgICAoKGludCkoKnBwKyspIC8gMiApKSAmIDB4ZmYpOworKwor KyAgICAgIHJwKys7CisrICAgfQorKworKyAgIC8qIEFsdGl2ZWMgb3BlcmF0aW9ucyByZXF1aXJl IDE2LWJ5dGUgYWxpZ25lZCBkYXRhCisrICAgICogYnV0IGlucHV0IGNhbiBiZSB1bmFsaWduZWQu IFNvIHdlIGNhbGN1bGF0ZQorKyAgICAqIHVuYWxpZ25lZCBwYXJ0IGFzIHVzdWFsLgorKyAgICAq LworKyAgIGZvciAoaSA9IDA7IGkgPCB1bmFsaWduZWRfdG9wOyBpKyspCisrICAgeworKyAgICAg ICpycCA9IChwbmdfYnl0ZSkoKChpbnQpKCpycCkgKworKyAgICAgICAgIChpbnQpKCpwcCsrICsg KihycC1icHApKSAvIDIgKSAmIDB4ZmYpOworKworKyAgICAgIHJwKys7CisrICAgfQorKworKyAg IC8qIFVzaW5nIFNJTUQgd2hpbGUgd2UgY2FuICovCisrICAgd2hpbGUoIGlzdG9wID49IDE2ICkK KysgICB7CisrICAgICAgZm9yKGk9MDtpIDwgYnBwIDsgaSsrKQorKyAgICAgIHsKKysgICAgICAg ICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsKKysgICAgICAgICAgICAoaW50KSgqcHAr KyArICoocnAtYnBwKSkgLyAyICkgJiAweGZmKTsKKysKKysgICAgICAgICBycCsrOworKyAgICAg IH0KKysgICAgICBycCAtPSBicHA7CisrICAgICAgcHAgLT0gYnBwOworKworKyAgICAgIHZlY19s ZF91bmFsaWduZWQocHBfdmVjLHBwKTsKKysgICAgICBycF92ZWMgPSB2ZWNfbGQoMCxycCk7Cisr CisrICAgICAgcnBfcGFydF92ZWMgPSB2ZWNfcGVybShycF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hf TEVGVFNISUZURUQxXzQpOworKyAgICAgIHBwX3BhcnRfdmVjID0gdmVjX3Blcm0ocHBfdmVjLFZT WF9DSEFSX1pFUk8sVlNYX05PVF9TSElGVEVEMV80KTsKKysgICAgICBhdmdfdmVjID0gdmVjX2F2 ZyhycF9wYXJ0X3ZlYyxwcF9wYXJ0X3ZlYyk7CisrICAgICAgYXZnX3ZlYyA9IHZlY19zdWIoYXZn X3ZlYywgdmVjX2FuZCh2ZWNfeG9yKHJwX3BhcnRfdmVjLHBwX3BhcnRfdmVjKSx2ZWNfc3BsYXRf dTgoMSkpKTsKKysgICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYyxhdmdfdmVjKTsKKysKKysg ICAgICBycF9wYXJ0X3ZlYyA9IHZlY19wZXJtKHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZU U0hJRlRFRDJfNCk7CisrICAgICAgcHBfcGFydF92ZWMgPSB2ZWNfcGVybShwcF92ZWMsVlNYX0NI QVJfWkVSTyxWU1hfTk9UX1NISUZURUQyXzQpOworKyAgICAgIGF2Z192ZWMgPSB2ZWNfYXZnKHJw X3BhcnRfdmVjLHBwX3BhcnRfdmVjKTsKKysgICAgICBhdmdfdmVjID0gdmVjX3N1YihhdmdfdmVj LCB2ZWNfYW5kKHZlY194b3IocnBfcGFydF92ZWMscHBfcGFydF92ZWMpLHZlY19zcGxhdF91OCgx KSkpOworKyAgICAgIHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLGF2Z192ZWMpOworKworKyAgICAg IHJwX3BhcnRfdmVjID0gdmVjX3Blcm0ocnBfdmVjLFZTWF9DSEFSX1pFUk8sVlNYX0xFRlRTSElG VEVEM180KTsKKysgICAgICBwcF9wYXJ0X3ZlYyA9IHZlY19wZXJtKHBwX3ZlYyxWU1hfQ0hBUl9a RVJPLFZTWF9OT1RfU0hJRlRFRDNfNCk7CisrICAgICAgYXZnX3ZlYyA9IHZlY19hdmcocnBfcGFy dF92ZWMscHBfcGFydF92ZWMpOworKyAgICAgIGF2Z192ZWMgPSB2ZWNfc3ViKGF2Z192ZWMsIHZl Y19hbmQodmVjX3hvcihycF9wYXJ0X3ZlYyxwcF9wYXJ0X3ZlYyksdmVjX3NwbGF0X3U4KDEpKSk7 CisrICAgICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMsYXZnX3ZlYyk7CisrCisrICAgICAgdmVj X3N0KHJwX3ZlYywwLHJwKTsKKysKKysgICAgICBycCArPSAxNjsKKysgICAgICBwcCArPSAxNjsK KysgICAgICBpc3RvcCAtPSAxNjsKKysgICB9CisrCisrICAgaWYoaXN0b3AgID4gMCkKKysgICAg ICBmb3IgKGkgPSAwOyBpIDwgaXN0b3AgJSAxNjsgaSsrKQorKyAgICAgIHsKKysgICAgICAgICAq cnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsKKysgICAgICAgICAgICAoaW50KSgqcHArKyAr ICoocnAtYnBwKSkgLyAyICkgJiAweGZmKTsKKysKKysgICAgICAgICBycCsrOworKyAgICAgIH0K Kyt9CisrCisrdm9pZCBwbmdfcmVhZF9maWx0ZXJfcm93X2F2ZzNfdnN4KHBuZ19yb3dfaW5mb3Ag cm93X2luZm8sIHBuZ19ieXRlcCByb3csCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHBuZ19jb25zdF9ieXRlcCBwcmV2X3JvdykKKyt7CisrICBjb25zdCBwbmdfYnl0ZSBicHAg PSAzOworKworKyAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcnBfdmVjOworKyAgdmVjdG9yIHVuc2ln bmVkIGNoYXIgcHBfdmVjOworKyAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcHBfcGFydF92ZWM7Cisr ICB2ZWN0b3IgdW5zaWduZWQgY2hhciBycF9wYXJ0X3ZlYzsKKysgIHZlY3RvciB1bnNpZ25lZCBj aGFyIGF2Z192ZWM7CisrCisrICB2c3hfZGVjbGFyZV9jb21tb25fdmFycyhyb3dfaW5mbyxyb3cs cHJldl9yb3csYnBwKQorKyAgcnAgLT0gYnBwOworKyAgaWYoaXN0b3AgPj0gYnBwKQorKyAgICAg aXN0b3AgLT0gYnBwOworKworKyAgZm9yIChpID0gMDsgaSA8IGJwcDsgaSsrKQorKyAgeworKyAg ICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArCisrICAgICAgICAoKGludCkoKnBwKysp IC8gMiApKSAmIDB4ZmYpOworKworKyAgICAgcnArKzsKKysgIH0KKysKKysgIC8qIEFsdGl2ZWMg b3BlcmF0aW9ucyByZXF1aXJlIDE2LWJ5dGUgYWxpZ25lZCBkYXRhCisrICAgKiBidXQgaW5wdXQg Y2FuIGJlIHVuYWxpZ25lZC4gU28gd2UgY2FsY3VsYXRlCisrICAgKiB1bmFsaWduZWQgcGFydCBh cyB1c3VhbC4KKysgICAqLworKyAgZm9yIChpID0gMDsgaSA8IHVuYWxpZ25lZF90b3A7IGkrKykK KysgIHsKKysgICAgICpycCA9IChwbmdfYnl0ZSkoKChpbnQpKCpycCkgKworKyAgICAgICAgKGlu dCkoKnBwKysgKyAqKHJwLWJwcCkpIC8gMiApICYgMHhmZik7CisrCisrICAgICBycCsrOworKyAg fQorKworKyAgLyogVXNpbmcgU0lNRCB3aGlsZSB3ZSBjYW4gKi8KKysgIHdoaWxlKCBpc3RvcCA+ PSAxNiApCisrICB7CisrICAgICBmb3IoaT0wO2kgPCBicHAgOyBpKyspCisrICAgICB7CisrICAg ICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsKKysgICAgICAgICAgIChpbnQpKCpw cCsrICsgKihycC1icHApKSAvIDIgKSAmIDB4ZmYpOworKworKyAgICAgICAgcnArKzsKKysgICAg IH0KKysgICAgIHJwIC09IGJwcDsKKysgICAgIHBwIC09IGJwcDsKKysKKysgICAgIHZlY19sZF91 bmFsaWduZWQocHBfdmVjLHBwKTsKKysgICAgIHJwX3ZlYyA9IHZlY19sZCgwLHJwKTsKKysKKysg ICAgIHJwX3BhcnRfdmVjID0gdmVjX3Blcm0ocnBfdmVjLFZTWF9DSEFSX1pFUk8sVlNYX0xFRlRT SElGVEVEMV8zKTsKKysgICAgIHBwX3BhcnRfdmVjID0gdmVjX3Blcm0ocHBfdmVjLFZTWF9DSEFS X1pFUk8sVlNYX05PVF9TSElGVEVEMV8zKTsKKysgICAgIGF2Z192ZWMgPSB2ZWNfYXZnKHJwX3Bh cnRfdmVjLHBwX3BhcnRfdmVjKTsKKysgICAgIGF2Z192ZWMgPSB2ZWNfc3ViKGF2Z192ZWMsIHZl Y19hbmQodmVjX3hvcihycF9wYXJ0X3ZlYyxwcF9wYXJ0X3ZlYyksdmVjX3NwbGF0X3U4KDEpKSk7 CisrICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYyxhdmdfdmVjKTsKKysKKysgICAgIHJwX3Bh cnRfdmVjID0gdmVjX3Blcm0ocnBfdmVjLFZTWF9DSEFSX1pFUk8sVlNYX0xFRlRTSElGVEVEMl8z KTsKKysgICAgIHBwX3BhcnRfdmVjID0gdmVjX3Blcm0ocHBfdmVjLFZTWF9DSEFSX1pFUk8sVlNY X05PVF9TSElGVEVEMl8zKTsKKysgICAgIGF2Z192ZWMgPSB2ZWNfYXZnKHJwX3BhcnRfdmVjLHBw X3BhcnRfdmVjKTsKKysgICAgIGF2Z192ZWMgPSB2ZWNfc3ViKGF2Z192ZWMsIHZlY19hbmQodmVj X3hvcihycF9wYXJ0X3ZlYyxwcF9wYXJ0X3ZlYyksdmVjX3NwbGF0X3U4KDEpKSk7CisrICAgICBy cF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYyxhdmdfdmVjKTsKKysKKysgICAgIHJwX3BhcnRfdmVjID0g dmVjX3Blcm0ocnBfdmVjLFZTWF9DSEFSX1pFUk8sVlNYX0xFRlRTSElGVEVEM18zKTsKKysgICAg IHBwX3BhcnRfdmVjID0gdmVjX3Blcm0ocHBfdmVjLFZTWF9DSEFSX1pFUk8sVlNYX05PVF9TSElG VEVEM18zKTsKKysgICAgIGF2Z192ZWMgPSB2ZWNfYXZnKHJwX3BhcnRfdmVjLHBwX3BhcnRfdmVj KTsKKysgICAgIGF2Z192ZWMgPSB2ZWNfc3ViKGF2Z192ZWMsIHZlY19hbmQodmVjX3hvcihycF9w YXJ0X3ZlYyxwcF9wYXJ0X3ZlYyksdmVjX3NwbGF0X3U4KDEpKSk7CisrICAgICBycF92ZWMgPSB2 ZWNfYWRkKHJwX3ZlYyxhdmdfdmVjKTsKKysKKysgICAgIHJwX3BhcnRfdmVjID0gdmVjX3Blcm0o cnBfdmVjLFZTWF9DSEFSX1pFUk8sVlNYX0xFRlRTSElGVEVENF8zKTsKKysgICAgIHBwX3BhcnRf dmVjID0gdmVjX3Blcm0ocHBfdmVjLFZTWF9DSEFSX1pFUk8sVlNYX05PVF9TSElGVEVENF8zKTsK KysgICAgIGF2Z192ZWMgPSB2ZWNfYXZnKHJwX3BhcnRfdmVjLHBwX3BhcnRfdmVjKTsKKysgICAg IGF2Z192ZWMgPSB2ZWNfc3ViKGF2Z192ZWMsIHZlY19hbmQodmVjX3hvcihycF9wYXJ0X3ZlYyxw cF9wYXJ0X3ZlYyksdmVjX3NwbGF0X3U4KDEpKSk7CisrICAgICBycF92ZWMgPSB2ZWNfYWRkKHJw X3ZlYyxhdmdfdmVjKTsKKysKKysgICAgIHZlY19zdChycF92ZWMsMCxycCk7CisrCisrICAgICBy cCArPSAxNTsKKysgICAgIHBwICs9IDE1OworKyAgICAgaXN0b3AgLT0gMTY7CisrCisrICAgICAv KiBTaW5jZSAxNiAlIGJwcCA9IDE2ICUgMyA9IDEsIGxhc3QgZWxlbWVudCBvZiBhcnJheSBtdXN0 CisrICAgICAgKiBiZSBwcm9jZWVkZWQgbWFudWFsbHkKKysgICAgICAqLworKyAgICAgKnJwID0g KHBuZ19ieXRlKSgoKGludCkoKnJwKSArCisrICAgICAgICAoaW50KSgqcHArKyArICoocnAtYnBw KSkgLyAyICkgJiAweGZmKTsKKysgICAgIHJwKys7CisrICB9CisrCisrICBpZihpc3RvcCAgPiAw KQorKyAgICAgZm9yIChpID0gMDsgaSA8IGlzdG9wICUgMTY7IGkrKykKKysgICAgIHsKKysgICAg ICAgICpycCA9IChwbmdfYnl0ZSkoKChpbnQpKCpycCkgKworKyAgICAgICAgICAgKGludCkoKnBw KysgKyAqKHJwLWJwcCkpIC8gMiApICYgMHhmZik7CisrCisrICAgICAgICBycCsrOworKyAgICAg fQorK30KKysKKysvKiBCeXRld2lzZSBjID8gdCA6IGUuICovCisrI2RlZmluZSBpZl90aGVuX2Vs c2UoYyx0LGUpIHZlY19zZWwoZSx0LGMpCisrCisrI2RlZmluZSB2c3hfcGFldGhfcHJvY2Vzcyhy cCxwcCxhLGIsYyxwYSxwYixwYyxicHApIHtcCisrICAgICAgYyA9ICoocHAgLSBicHApO1wKKysg ICAgICBhID0gKihycCAtIGJwcCk7XAorKyAgICAgIGIgPSAqcHArKztcCisrICAgICAgcCA9IGIg LSBjO1wKKysgICAgICBwYyA9IGEgLSBjO1wKKysgICAgICBwYSA9IHZzeF9hYnMocCk7XAorKyAg ICAgIHBiID0gdnN4X2FicyhwYyk7XAorKyAgICAgIHBjID0gdnN4X2FicyhwICsgcGMpO1wKKysg ICAgICBpZiAocGIgPCBwYSkgcGEgPSBwYiwgYSA9IGI7XAorKyAgICAgIGlmIChwYyA8IHBhKSBh ID0gYztcCisrICAgICAgYSArPSAqcnA7XAorKyAgICAgICpycCsrID0gKHBuZ19ieXRlKWE7XAor KyAgICAgIH0KKysKKyt2b2lkIHBuZ19yZWFkX2ZpbHRlcl9yb3dfcGFldGg0X3ZzeChwbmdfcm93 X2luZm9wIHJvd19pbmZvLCBwbmdfYnl0ZXAgcm93LAorKyAgIHBuZ19jb25zdF9ieXRlcCBwcmV2 X3JvdykKKyt7CisrICAgY29uc3QgcG5nX2J5dGUgYnBwID0gNDsKKysKKysgICBpbnQgYSwgYiwg YywgcGEsIHBiLCBwYywgcDsKKysgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBycF92ZWM7CisrICAg dmVjdG9yIHVuc2lnbmVkIGNoYXIgcHBfdmVjOworKyAgIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBh X3ZlYyxiX3ZlYyxjX3ZlYyxuZWFyZXN0X3ZlYzsKKysgICB2ZWN0b3Igc2lnbmVkIHNob3J0IHBh X3ZlYyxwYl92ZWMscGNfdmVjLHNtYWxsZXN0X3ZlYzsKKysKKysgICB2c3hfZGVjbGFyZV9jb21t b25fdmFycyhyb3dfaW5mbyxyb3cscHJldl9yb3csYnBwKQorKyAgIHJwIC09IGJwcDsKKysgICBp Zihpc3RvcCA+PSBicHApCisrICAgICAgaXN0b3AgLT0gYnBwOworKworKyAgIC8qIFByb2Nlc3Mg dGhlIGZpcnN0IHBpeGVsIGluIHRoZSByb3cgY29tcGxldGVseSAodGhpcyBpcyB0aGUgc2FtZSBh cyAndXAnCisrICAgICogYmVjYXVzZSB0aGVyZSBpcyBvbmx5IG9uZSBjYW5kaWRhdGUgcHJlZGlj dG9yIGZvciB0aGUgZmlyc3Qgcm93KS4KKysgICAgKi8KKysgICBmb3IoaSA9IDA7IGkgPCBicHAg OyBpKyspCisrICAgeworKyAgICAgICpycCA9IChwbmdfYnl0ZSkoICpycCArICpwcCk7CisrICAg ICAgcnArKzsKKysgICAgICBwcCsrOworKyAgIH0KKysKKysgICBmb3IoaSA9IDA7IGkgPCB1bmFs aWduZWRfdG9wIDsgaSsrKQorKyAgIHsKKysgICAgICB2c3hfcGFldGhfcHJvY2VzcyhycCxwcCxh LGIsYyxwYSxwYixwYyxicHApCisrICAgfQorKworKyAgIHdoaWxlKCBpc3RvcCA+PSAxNikKKysg ICB7CisrICAgICAgZm9yKGkgPSAwOyBpIDwgYnBwIDsgaSsrKQorKyAgICAgIHsKKysgICAgICAg ICB2c3hfcGFldGhfcHJvY2VzcyhycCxwcCxhLGIsYyxwYSxwYixwYyxicHApCisrICAgICAgfQor KworKyAgICAgIHJwIC09IGJwcDsKKysgICAgICBwcCAtPSBicHA7CisrICAgICAgcnBfdmVjID0g dmVjX2xkKDAscnApOworKyAgICAgIHZlY19sZF91bmFsaWduZWQocHBfdmVjLHBwKTsKKysKKysg ICAgICBhX3ZlYyA9IHZzeF9jaGFyX3RvX3Nob3J0KHZlY19wZXJtKHJwX3ZlYyAsIFZTWF9DSEFS X1pFUk8gLCBWU1hfTEVGVFNISUZURUQxXzQpLDEsNCk7CisrICAgICAgYl92ZWMgPSB2c3hfY2hh cl90b19zaG9ydCh2ZWNfcGVybShwcF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX05PVF9TSElG VEVEMV80KSwxLDQpOworKyAgICAgIGNfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0o cHBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9MRUZUU0hJRlRFRDFfNCksMSw0KTsKKysgICAg ICBwYV92ZWMgPSAodmVjdG9yIHNpZ25lZCBzaG9ydCkgdmVjX3N1YihiX3ZlYyxjX3ZlYyk7Cisr ICAgICAgcGJfdmVjID0gKHZlY3RvciBzaWduZWQgc2hvcnQpIHZlY19zdWIoYV92ZWMgLCBjX3Zl Yyk7CisrICAgICAgcGNfdmVjID0gdmVjX2FkZChwYV92ZWMscGJfdmVjKTsKKysgICAgICBwYV92 ZWMgPSB2ZWNfYWJzKHBhX3ZlYyk7CisrICAgICAgcGJfdmVjID0gdmVjX2FicyhwYl92ZWMpOwor KyAgICAgIHBjX3ZlYyA9IHZlY19hYnMocGNfdmVjKTsKKysgICAgICBzbWFsbGVzdF92ZWMgPSB2 ZWNfbWluKHBjX3ZlYywgdmVjX21pbihwYV92ZWMscGJfdmVjKSk7CisrICAgICAgbmVhcmVzdF92 ZWMgPSAgaWZfdGhlbl9lbHNlKAorKyAgICAgICAgICAgIHZlY19jbXBlcShwYV92ZWMsc21hbGxl c3RfdmVjKSwKKysgICAgICAgICAgICBhX3ZlYywKKysgICAgICAgICAgICBpZl90aGVuX2Vsc2Uo CisrICAgICAgICAgICAgICB2ZWNfY21wZXEocGJfdmVjLHNtYWxsZXN0X3ZlYyksCisrICAgICAg ICAgICAgICBiX3ZlYywKKysgICAgICAgICAgICAgIGNfdmVjCisrICAgICAgICAgICAgICApCisr ICAgICAgICAgICAgKTsKKysgICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYywodnN4X3Nob3J0 X3RvX2NoYXIobmVhcmVzdF92ZWMsMSw0KSkpOworKworKyAgICAgIGFfdmVjID0gdnN4X2NoYXJf dG9fc2hvcnQodmVjX3Blcm0ocnBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9MRUZUU0hJRlRF RDJfNCksMiw0KTsKKysgICAgICBiX3ZlYyA9IHZzeF9jaGFyX3RvX3Nob3J0KHZlY19wZXJtKHBw X3ZlYyAsIFZTWF9DSEFSX1pFUk8gLCBWU1hfTk9UX1NISUZURUQyXzQpLDIsNCk7CisrICAgICAg Y192ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShwcF92ZWMgLCBWU1hfQ0hBUl9aRVJP ICwgVlNYX0xFRlRTSElGVEVEMl80KSwyLDQpOworKyAgICAgIHBhX3ZlYyA9ICh2ZWN0b3Igc2ln bmVkIHNob3J0KSB2ZWNfc3ViKGJfdmVjLGNfdmVjKTsKKysgICAgICBwYl92ZWMgPSAodmVjdG9y IHNpZ25lZCBzaG9ydCkgdmVjX3N1YihhX3ZlYyAsIGNfdmVjKTsKKysgICAgICBwY192ZWMgPSB2 ZWNfYWRkKHBhX3ZlYyxwYl92ZWMpOworKyAgICAgIHBhX3ZlYyA9IHZlY19hYnMocGFfdmVjKTsK KysgICAgICBwYl92ZWMgPSB2ZWNfYWJzKHBiX3ZlYyk7CisrICAgICAgcGNfdmVjID0gdmVjX2Fi cyhwY192ZWMpOworKyAgICAgIHNtYWxsZXN0X3ZlYyA9IHZlY19taW4ocGNfdmVjLCB2ZWNfbWlu KHBhX3ZlYyxwYl92ZWMpKTsKKysgICAgICBuZWFyZXN0X3ZlYyA9ICBpZl90aGVuX2Vsc2UoCisr ICAgICAgICAgICAgdmVjX2NtcGVxKHBhX3ZlYyxzbWFsbGVzdF92ZWMpLAorKyAgICAgICAgICAg IGFfdmVjLAorKyAgICAgICAgICAgIGlmX3RoZW5fZWxzZSgKKysgICAgICAgICAgICAgIHZlY19j bXBlcShwYl92ZWMsc21hbGxlc3RfdmVjKSwKKysgICAgICAgICAgICAgIGJfdmVjLAorKyAgICAg ICAgICAgICAgY192ZWMKKysgICAgICAgICAgICAgICkKKysgICAgICAgICAgICApOworKyAgICAg IHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLCh2c3hfc2hvcnRfdG9fY2hhcihuZWFyZXN0X3ZlYywy LDQpKSk7CisrCisrICAgICAgYV92ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShycF92 ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX0xFRlRTSElGVEVEM180KSwzLDQpOworKyAgICAgIGJf dmVjID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocHBfdmVjICwgVlNYX0NIQVJfWkVSTyAs IFZTWF9OT1RfU0hJRlRFRDNfNCksMyw0KTsKKysgICAgICBjX3ZlYyA9IHZzeF9jaGFyX3RvX3No b3J0KHZlY19wZXJtKHBwX3ZlYyAsIFZTWF9DSEFSX1pFUk8gLCBWU1hfTEVGVFNISUZURUQzXzQp LDMsNCk7CisrICAgICAgcGFfdmVjID0gKHZlY3RvciBzaWduZWQgc2hvcnQpIHZlY19zdWIoYl92 ZWMsY192ZWMpOworKyAgICAgIHBiX3ZlYyA9ICh2ZWN0b3Igc2lnbmVkIHNob3J0KSB2ZWNfc3Vi KGFfdmVjICwgY192ZWMpOworKyAgICAgIHBjX3ZlYyA9IHZlY19hZGQocGFfdmVjLHBiX3ZlYyk7 CisrICAgICAgcGFfdmVjID0gdmVjX2FicyhwYV92ZWMpOworKyAgICAgIHBiX3ZlYyA9IHZlY19h YnMocGJfdmVjKTsKKysgICAgICBwY192ZWMgPSB2ZWNfYWJzKHBjX3ZlYyk7CisrICAgICAgc21h bGxlc3RfdmVjID0gdmVjX21pbihwY192ZWMsIHZlY19taW4ocGFfdmVjLHBiX3ZlYykpOworKyAg ICAgIG5lYXJlc3RfdmVjID0gIGlmX3RoZW5fZWxzZSgKKysgICAgICAgICAgICB2ZWNfY21wZXEo cGFfdmVjLHNtYWxsZXN0X3ZlYyksCisrICAgICAgICAgICAgYV92ZWMsCisrICAgICAgICAgICAg aWZfdGhlbl9lbHNlKAorKyAgICAgICAgICAgICAgdmVjX2NtcGVxKHBiX3ZlYyxzbWFsbGVzdF92 ZWMpLAorKyAgICAgICAgICAgICAgYl92ZWMsCisrICAgICAgICAgICAgICBjX3ZlYworKyAgICAg ICAgICAgICAgKQorKyAgICAgICAgICAgICk7CisrICAgICAgcnBfdmVjID0gdmVjX2FkZChycF92 ZWMsKHZzeF9zaG9ydF90b19jaGFyKG5lYXJlc3RfdmVjLDMsNCkpKTsKKysKKysgICAgICB2ZWNf c3QocnBfdmVjLDAscnApOworKworKyAgICAgIHJwICs9IDE2OworKyAgICAgIHBwICs9IDE2Owor KyAgICAgIGlzdG9wIC09IDE2OworKyAgIH0KKysKKysgICBpZihpc3RvcCA+IDApCisrICAgICAg Zm9yIChpID0gMDsgaSA8IGlzdG9wICUgMTY7IGkrKykKKysgICAgICB7CisrICAgICAgICAgdnN4 X3BhZXRoX3Byb2Nlc3MocnAscHAsYSxiLGMscGEscGIscGMsYnBwKQorKyAgICAgIH0KKyt9Cisr Cisrdm9pZCBwbmdfcmVhZF9maWx0ZXJfcm93X3BhZXRoM192c3gocG5nX3Jvd19pbmZvcCByb3df aW5mbywgcG5nX2J5dGVwIHJvdywKKysgICBwbmdfY29uc3RfYnl0ZXAgcHJldl9yb3cpCisrewor KyAgY29uc3QgcG5nX2J5dGUgYnBwID0gMzsKKysKKysgIGludCBhLCBiLCBjLCBwYSwgcGIsIHBj LCBwOworKyAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcnBfdmVjOworKyAgdmVjdG9yIHVuc2lnbmVk IGNoYXIgcHBfdmVjOworKyAgdmVjdG9yIHVuc2lnbmVkIHNob3J0IGFfdmVjLGJfdmVjLGNfdmVj LG5lYXJlc3RfdmVjOworKyAgdmVjdG9yIHNpZ25lZCBzaG9ydCBwYV92ZWMscGJfdmVjLHBjX3Zl YyxzbWFsbGVzdF92ZWM7CisrCisrICB2c3hfZGVjbGFyZV9jb21tb25fdmFycyhyb3dfaW5mbyxy b3cscHJldl9yb3csYnBwKQorKyAgcnAgLT0gYnBwOworKyAgaWYoaXN0b3AgPj0gYnBwKQorKyAg ICAgaXN0b3AgLT0gYnBwOworKworKyAgLyogUHJvY2VzcyB0aGUgZmlyc3QgcGl4ZWwgaW4gdGhl IHJvdyBjb21wbGV0ZWx5ICh0aGlzIGlzIHRoZSBzYW1lIGFzICd1cCcKKysgICAqIGJlY2F1c2Ug dGhlcmUgaXMgb25seSBvbmUgY2FuZGlkYXRlIHByZWRpY3RvciBmb3IgdGhlIGZpcnN0IHJvdyku CisrICAgKi8KKysgIGZvcihpID0gMDsgaSA8IGJwcCA7IGkrKykKKysgIHsKKysgICAgICpycCA9 IChwbmdfYnl0ZSkoICpycCArICpwcCk7CisrICAgICBycCsrOworKyAgICAgcHArKzsKKysgIH0K KysKKysgIGZvcihpID0gMDsgaSA8IHVuYWxpZ25lZF90b3AgOyBpKyspCisrICB7CisrICAgICB2 c3hfcGFldGhfcHJvY2VzcyhycCxwcCxhLGIsYyxwYSxwYixwYyxicHApCisrICB9CisrCisrICB3 aGlsZSggaXN0b3AgPj0gMTYpCisrICB7CisrICAgICBmb3IoaSA9IDA7IGkgPCBicHAgOyBpKysp CisrICAgICB7CisrICAgICAgICB2c3hfcGFldGhfcHJvY2VzcyhycCxwcCxhLGIsYyxwYSxwYixw YyxicHApCisrICAgICB9CisrCisrICAgICBycCAtPSBicHA7CisrICAgICBwcCAtPSBicHA7Cisr ICAgICBycF92ZWMgPSB2ZWNfbGQoMCxycCk7CisrICAgICB2ZWNfbGRfdW5hbGlnbmVkKHBwX3Zl YyxwcCk7CisrCisrICAgICBhX3ZlYyA9IHZzeF9jaGFyX3RvX3Nob3J0KHZlY19wZXJtKHJwX3Zl YyAsIFZTWF9DSEFSX1pFUk8gLCBWU1hfTEVGVFNISUZURUQxXzMpLDEsMyk7CisrICAgICBiX3Zl YyA9IHZzeF9jaGFyX3RvX3Nob3J0KHZlY19wZXJtKHBwX3ZlYyAsIFZTWF9DSEFSX1pFUk8gLCBW U1hfTk9UX1NISUZURUQxXzMpLDEsMyk7CisrICAgICBjX3ZlYyA9IHZzeF9jaGFyX3RvX3Nob3J0 KHZlY19wZXJtKHBwX3ZlYyAsIFZTWF9DSEFSX1pFUk8gLCBWU1hfTEVGVFNISUZURUQxXzMpLDEs Myk7CisrICAgICBwYV92ZWMgPSAodmVjdG9yIHNpZ25lZCBzaG9ydCkgdmVjX3N1YihiX3ZlYyxj X3ZlYyk7CisrICAgICBwYl92ZWMgPSAodmVjdG9yIHNpZ25lZCBzaG9ydCkgdmVjX3N1YihhX3Zl YyAsIGNfdmVjKTsKKysgICAgIHBjX3ZlYyA9IHZlY19hZGQocGFfdmVjLHBiX3ZlYyk7CisrICAg ICBwYV92ZWMgPSB2ZWNfYWJzKHBhX3ZlYyk7CisrICAgICBwYl92ZWMgPSB2ZWNfYWJzKHBiX3Zl Yyk7CisrICAgICBwY192ZWMgPSB2ZWNfYWJzKHBjX3ZlYyk7CisrICAgICBzbWFsbGVzdF92ZWMg PSB2ZWNfbWluKHBjX3ZlYywgdmVjX21pbihwYV92ZWMscGJfdmVjKSk7CisrICAgICBuZWFyZXN0 X3ZlYyA9ICBpZl90aGVuX2Vsc2UoCisrICAgICAgICAgICB2ZWNfY21wZXEocGFfdmVjLHNtYWxs ZXN0X3ZlYyksCisrICAgICAgICAgICBhX3ZlYywKKysgICAgICAgICAgIGlmX3RoZW5fZWxzZSgK KysgICAgICAgICAgICAgdmVjX2NtcGVxKHBiX3ZlYyxzbWFsbGVzdF92ZWMpLAorKyAgICAgICAg ICAgICBiX3ZlYywKKysgICAgICAgICAgICAgY192ZWMKKysgICAgICAgICAgICAgKQorKyAgICAg ICAgICAgKTsKKysgICAgIHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLCh2c3hfc2hvcnRfdG9fY2hh cihuZWFyZXN0X3ZlYywxLDMpKSk7CisrCisrICAgICBhX3ZlYyA9IHZzeF9jaGFyX3RvX3Nob3J0 KHZlY19wZXJtKHJwX3ZlYyAsIFZTWF9DSEFSX1pFUk8gLCBWU1hfTEVGVFNISUZURUQyXzMpLDIs Myk7CisrICAgICBiX3ZlYyA9IHZzeF9jaGFyX3RvX3Nob3J0KHZlY19wZXJtKHBwX3ZlYyAsIFZT WF9DSEFSX1pFUk8gLCBWU1hfTk9UX1NISUZURUQyXzMpLDIsMyk7CisrICAgICBjX3ZlYyA9IHZz eF9jaGFyX3RvX3Nob3J0KHZlY19wZXJtKHBwX3ZlYyAsIFZTWF9DSEFSX1pFUk8gLCBWU1hfTEVG VFNISUZURUQyXzMpLDIsMyk7CisrICAgICBwYV92ZWMgPSAodmVjdG9yIHNpZ25lZCBzaG9ydCkg dmVjX3N1YihiX3ZlYyxjX3ZlYyk7CisrICAgICBwYl92ZWMgPSAodmVjdG9yIHNpZ25lZCBzaG9y dCkgdmVjX3N1YihhX3ZlYyAsIGNfdmVjKTsKKysgICAgIHBjX3ZlYyA9IHZlY19hZGQocGFfdmVj LHBiX3ZlYyk7CisrICAgICBwYV92ZWMgPSB2ZWNfYWJzKHBhX3ZlYyk7CisrICAgICBwYl92ZWMg PSB2ZWNfYWJzKHBiX3ZlYyk7CisrICAgICBwY192ZWMgPSB2ZWNfYWJzKHBjX3ZlYyk7CisrICAg ICBzbWFsbGVzdF92ZWMgPSB2ZWNfbWluKHBjX3ZlYywgdmVjX21pbihwYV92ZWMscGJfdmVjKSk7 CisrICAgICBuZWFyZXN0X3ZlYyA9ICBpZl90aGVuX2Vsc2UoCisrICAgICAgICAgICB2ZWNfY21w ZXEocGFfdmVjLHNtYWxsZXN0X3ZlYyksCisrICAgICAgICAgICBhX3ZlYywKKysgICAgICAgICAg IGlmX3RoZW5fZWxzZSgKKysgICAgICAgICAgICAgdmVjX2NtcGVxKHBiX3ZlYyxzbWFsbGVzdF92 ZWMpLAorKyAgICAgICAgICAgICBiX3ZlYywKKysgICAgICAgICAgICAgY192ZWMKKysgICAgICAg ICAgICAgKQorKyAgICAgICAgICAgKTsKKysgICAgIHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLCh2 c3hfc2hvcnRfdG9fY2hhcihuZWFyZXN0X3ZlYywyLDMpKSk7CisrCisrICAgICBhX3ZlYyA9IHZz eF9jaGFyX3RvX3Nob3J0KHZlY19wZXJtKHJwX3ZlYyAsIFZTWF9DSEFSX1pFUk8gLCBWU1hfTEVG VFNISUZURUQzXzMpLDMsMyk7CisrICAgICBiX3ZlYyA9IHZzeF9jaGFyX3RvX3Nob3J0KHZlY19w ZXJtKHBwX3ZlYyAsIFZTWF9DSEFSX1pFUk8gLCBWU1hfTk9UX1NISUZURUQzXzMpLDMsMyk7Cisr ICAgICBjX3ZlYyA9IHZzeF9jaGFyX3RvX3Nob3J0KHZlY19wZXJtKHBwX3ZlYyAsIFZTWF9DSEFS X1pFUk8gLCBWU1hfTEVGVFNISUZURUQzXzMpLDMsMyk7CisrICAgICBwYV92ZWMgPSAodmVjdG9y IHNpZ25lZCBzaG9ydCkgdmVjX3N1YihiX3ZlYyxjX3ZlYyk7CisrICAgICBwYl92ZWMgPSAodmVj dG9yIHNpZ25lZCBzaG9ydCkgdmVjX3N1YihhX3ZlYyAsIGNfdmVjKTsKKysgICAgIHBjX3ZlYyA9 IHZlY19hZGQocGFfdmVjLHBiX3ZlYyk7CisrICAgICBwYV92ZWMgPSB2ZWNfYWJzKHBhX3ZlYyk7 CisrICAgICBwYl92ZWMgPSB2ZWNfYWJzKHBiX3ZlYyk7CisrICAgICBwY192ZWMgPSB2ZWNfYWJz KHBjX3ZlYyk7CisrICAgICBzbWFsbGVzdF92ZWMgPSB2ZWNfbWluKHBjX3ZlYywgdmVjX21pbihw YV92ZWMscGJfdmVjKSk7CisrICAgICBuZWFyZXN0X3ZlYyA9ICBpZl90aGVuX2Vsc2UoCisrICAg ICAgICAgICB2ZWNfY21wZXEocGFfdmVjLHNtYWxsZXN0X3ZlYyksCisrICAgICAgICAgICBhX3Zl YywKKysgICAgICAgICAgIGlmX3RoZW5fZWxzZSgKKysgICAgICAgICAgICAgdmVjX2NtcGVxKHBi X3ZlYyxzbWFsbGVzdF92ZWMpLAorKyAgICAgICAgICAgICBiX3ZlYywKKysgICAgICAgICAgICAg Y192ZWMKKysgICAgICAgICAgICAgKQorKyAgICAgICAgICAgKTsKKysgICAgIHJwX3ZlYyA9IHZl Y19hZGQocnBfdmVjLCh2c3hfc2hvcnRfdG9fY2hhcihuZWFyZXN0X3ZlYywzLDMpKSk7CisrCisr ICAgICBhX3ZlYyA9IHZzeF9jaGFyX3RvX3Nob3J0KHZlY19wZXJtKHJwX3ZlYyAsIFZTWF9DSEFS X1pFUk8gLCBWU1hfTEVGVFNISUZURUQ0XzMpLDQsMyk7CisrICAgICBiX3ZlYyA9IHZzeF9jaGFy X3RvX3Nob3J0KHZlY19wZXJtKHBwX3ZlYyAsIFZTWF9DSEFSX1pFUk8gLCBWU1hfTk9UX1NISUZU RUQ0XzMpLDQsMyk7CisrICAgICBjX3ZlYyA9IHZzeF9jaGFyX3RvX3Nob3J0KHZlY19wZXJtKHBw X3ZlYyAsIFZTWF9DSEFSX1pFUk8gLCBWU1hfTEVGVFNISUZURUQ0XzMpLDQsMyk7CisrICAgICBw YV92ZWMgPSAodmVjdG9yIHNpZ25lZCBzaG9ydCkgdmVjX3N1YihiX3ZlYyxjX3ZlYyk7CisrICAg ICBwYl92ZWMgPSAodmVjdG9yIHNpZ25lZCBzaG9ydCkgdmVjX3N1YihhX3ZlYyAsIGNfdmVjKTsK KysgICAgIHBjX3ZlYyA9IHZlY19hZGQocGFfdmVjLHBiX3ZlYyk7CisrICAgICBwYV92ZWMgPSB2 ZWNfYWJzKHBhX3ZlYyk7CisrICAgICBwYl92ZWMgPSB2ZWNfYWJzKHBiX3ZlYyk7CisrICAgICBw Y192ZWMgPSB2ZWNfYWJzKHBjX3ZlYyk7CisrICAgICBzbWFsbGVzdF92ZWMgPSB2ZWNfbWluKHBj X3ZlYywgdmVjX21pbihwYV92ZWMscGJfdmVjKSk7CisrICAgICBuZWFyZXN0X3ZlYyA9ICBpZl90 aGVuX2Vsc2UoCisrICAgICAgICAgICB2ZWNfY21wZXEocGFfdmVjLHNtYWxsZXN0X3ZlYyksCisr ICAgICAgICAgICBhX3ZlYywKKysgICAgICAgICAgIGlmX3RoZW5fZWxzZSgKKysgICAgICAgICAg ICAgdmVjX2NtcGVxKHBiX3ZlYyxzbWFsbGVzdF92ZWMpLAorKyAgICAgICAgICAgICBiX3ZlYywK KysgICAgICAgICAgICAgY192ZWMKKysgICAgICAgICAgICAgKQorKyAgICAgICAgICAgKTsKKysg ICAgIHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLCh2c3hfc2hvcnRfdG9fY2hhcihuZWFyZXN0X3Zl Yyw0LDMpKSk7CisrCisrICAgICB2ZWNfc3QocnBfdmVjLDAscnApOworKworKyAgICAgcnAgKz0g MTU7CisrICAgICBwcCArPSAxNTsKKysgICAgIGlzdG9wIC09IDE2OworKworKyAgICAgLyogU2lu Y2UgMTYgJSBicHAgPSAxNiAlIDMgPSAxLCBsYXN0IGVsZW1lbnQgb2YgYXJyYXkgbXVzdAorKyAg ICAgICogYmUgcHJvY2VlZGVkIG1hbnVhbGx5CisrICAgICAgKi8KKysgICAgIHZzeF9wYWV0aF9w cm9jZXNzKHJwLHBwLGEsYixjLHBhLHBiLHBjLGJwcCkKKysgIH0KKysKKysgIGlmKGlzdG9wID4g MCkKKysgICAgIGZvciAoaSA9IDA7IGkgPCBpc3RvcCAlIDE2OyBpKyspCisrICAgICB7CisrICAg ICAgICB2c3hfcGFldGhfcHJvY2VzcyhycCxwcCxhLGIsYyxwYSxwYixwYyxicHApCisrICAgICB9 CisrfQorKworKyNlbmRpZiAvKiBQTkdfUE9XRVJQQ19WU1hfT1BUID4gMCAqLworKyNlbmRpZiAv KiBQTkdfUE9XRVJQQ19WU1hfSU1QTEVNRU5UQVRJT04gPT0gMSAoaW50cmluc2ljcykgKi8KKysj ZW5kaWYgLyogUkVBRCAqLworbmV3IGZpbGUgbW9kZSAxMDA2NDQKKy0tLSAvZGV2L251bGwKKysr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvbGlicG5nL3Bv d2VycGMvcG93ZXJwY19pbml0LmMKK0BAIC0wLDAgKzEsMTI1IEBACisrCisrLyogcG93ZXJwY19p bml0LmMgLSBQT1dFUlBDIG9wdGltaXNlZCBmaWx0ZXIgZnVuY3Rpb25zCisrICoKKysgKiBDb3B5 cmlnaHQgKGMpIDIwMTcgR2xlbm4gUmFuZGVycy1QZWhyc29uCisrICogV3JpdHRlbiBieSBWYWRp bSBCYXJrb3YsIDIwMTcuCisrICogTGFzdCBjaGFuZ2VkIGluIGxpYnBuZyAxLjYuMjkgW01hcmNo IDE2LCAyMDE3XQorKyAqCisrICogVGhpcyBjb2RlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBsaWJw bmcgbGljZW5zZS4KKysgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwg c2VlIHRoZSBkaXNjbGFpbWVyCisrICogYW5kIGxpY2Vuc2UgaW4gcG5nLmgKKysgKi8KKysvKiBC ZWxvdywgYWZ0ZXIgY2hlY2tpbmcgX19saW51eF9fLCB2YXJpb3VzIG5vbi1DOTAgUE9TSVggMTAw My4xIGZ1bmN0aW9ucyBhcmUKKysgKiBjYWxsZWQuCisrICovCisrI2RlZmluZSBfUE9TSVhfU09V UkNFIDEKKysKKysjaW5jbHVkZSA8c3RkaW8uaD4KKysjaW5jbHVkZSAiLi4vcG5ncHJpdi5oIgor KworKyNpZmRlZiBQTkdfUkVBRF9TVVBQT1JURUQKKysKKysjaWYgUE5HX1BPV0VSUENfVlNYX09Q VCA+IDAKKysjaWZkZWYgUE5HX1BPV0VSUENfVlNYX0NIRUNLX1NVUFBPUlRFRCAvKiBEbyBydW4t dGltZSBjaGVja3MgKi8KKysvKiBXQVJOSU5HOiBpdCBpcyBzdHJvbmdseSByZWNvbW1lbmRlZCB0 aGF0IHlvdSBkbyBub3QgYnVpbGQgbGlicG5nIHdpdGgKKysgKiBydW4tdGltZSBjaGVja3MgZm9y IENQVSBmZWF0dXJlcyBpZiBhdCBhbGwgcG9zc2libGUuICBJbiB0aGUgY2FzZSBvZiB0aGUgUG93 ZXJQQworKyAqIFZTWCBpbnN0cnVjdGlvbnMgdGhlcmUgaXMgbm8gcHJvY2Vzc29yLXNwZWNpZmlj IHdheSBvZiBkZXRlY3RpbmcgdGhlCisrICogcHJlc2VuY2Ugb2YgdGhlIHJlcXVpcmVkIHN1cHBv cnQsIHRoZXJlZm9yZSBydW4tdGltZSBkZXRlY3Rpb24gaXMgZXh0cmVtZWx5CisrICogT1Mgc3Bl Y2lmaWMuCisrICoKKysgKiBZb3UgbWF5IHNldCB0aGUgbWFjcm8gUE5HX1BPV0VSUENfVlNYX0ZJ TEUgdG8gdGhlIGZpbGUgbmFtZSBvZiBmaWxlIGNvbnRhaW5pbmcKKysgKiBhIGZyYWdtZW50IG9m IEMgc291cmNlIGNvZGUgd2hpY2ggZGVmaW5lcyB0aGUgcG5nX2hhdmVfdnN4IGZ1bmN0aW9uLiAg VGhlcmUKKysgKiBhcmUgYSBudW1iZXIgb2YgaW1wbGVtZW50YXRpb25zIGluIGNvbnRyaWIvcG93 ZXJwYy12c3gsIGJ1dCB0aGUgb25seSBvbmUgdGhhdAorKyAqIGhhcyBwYXJ0aWFsIHN1cHBvcnQg aXMgY29udHJpYi9wb3dlcnBjLXZzeC9saW51eC5jIC0gYSBnZW5lcmljIExpbnV4CisrICogaW1w bGVtZW50YXRpb24gd2hpY2ggcmVhZHMgL3Byb2MvY3B1Zmluby4KKysgKi8KKysjaWZuZGVmIFBO R19QT1dFUlBDX1ZTWF9GSUxFCisrIyAgaWZkZWYgX19saW51eF9fCisrIyAgICAgZGVmaW5lICBQ TkdfUE9XRVJQQ19WU1hfRklMRSAiY29udHJpYi9wb3dlcnBjLXZzeC9saW51eF9hdXguYyIKKysj ICBlbmRpZgorKyNlbmRpZgorKworKyNpZmRlZiBQTkdfUE9XRVJQQ19WU1hfRklMRQorKworKyNp bmNsdWRlIDxzaWduYWwuaD4gLyogZm9yIHNpZ19hdG9taWNfdCAqLworK3N0YXRpYyBpbnQgcG5n X2hhdmVfdnN4KHBuZ19zdHJ1Y3RwIHBuZ19wdHIpOworKyNpbmNsdWRlIFBOR19QT1dFUlBDX1ZT WF9GSUxFCisrCisrI2Vsc2UgIC8qIFBOR19QT1dFUlBDX1ZTWF9GSUxFICovCisrIyAgZXJyb3Ig IlBOR19QT1dFUlBDX1ZTWF9GSUxFIHVuZGVmaW5lZDogbm8gc3VwcG9ydCBmb3IgcnVuLXRpbWUg UE9XRVJQQyBWU1ggY2hlY2tzIgorKyNlbmRpZiAvKiBQTkdfUE9XRVJQQ19WU1hfRklMRSAqLwor KyNlbmRpZiAvKiBQTkdfUE9XRVJQQ19WU1hfQ0hFQ0tfU1VQUE9SVEVEICovCisrCisrdm9pZAor K3BuZ19pbml0X2ZpbHRlcl9mdW5jdGlvbnNfdnN4KHBuZ19zdHJ1Y3RwIHBwLCB1bnNpZ25lZCBp bnQgYnBwKQorK3sKKysgICAvKiBUaGUgc3dpdGNoIHN0YXRlbWVudCBpcyBjb21waWxlZCBpbiBm b3IgUE9XRVJQQ19WU1hfQVBJLCB0aGUgY2FsbCB0bworKyAgICAqIHBuZ19oYXZlX3ZzeCBpcyBj b21waWxlZCBpbiBmb3IgUE9XRVJQQ19WU1hfQ0hFQ0suIElmIGJvdGggYXJlIGRlZmluZWQKKysg ICAgKiB0aGUgY2hlY2sgaXMgb25seSBwZXJmb3JtZWQgaWYgdGhlIEFQSSBoYXMgbm90IHNldCB0 aGUgUG93ZXJQQyBvcHRpb24gb24KKysgICAgKiBvciBvZmYgZXhwbGljaXRseS4gSW4gdGhpcyBj YXNlIHRoZSBjaGVjayBjb250cm9scyB3aGF0IGhhcHBlbnMuCisrICAgICovCisrCisrI2lmZGVm IFBOR19QT1dFUlBDX1ZTWF9BUElfU1VQUE9SVEVECisrICAgc3dpdGNoICgocHAtPm9wdGlvbnMg Pj4gUE5HX1BPV0VSUENfVlNYKSAmIDMpCisrICAgeworKyAgICAgIGNhc2UgUE5HX09QVElPTl9V TlNFVDoKKysgICAgICAgICAvKiBBbGxvdyB0aGUgcnVuLXRpbWUgY2hlY2sgdG8gZXhlY3V0ZSBp ZiBpdCBoYXMgYmVlbiBlbmFibGVkIC0KKysgICAgICAgICAgKiB0aHVzIGJvdGggQVBJIGFuZCBD SEVDSyBjYW4gYmUgdHVybmVkIG9uLiAgSWYgaXQgaXNuJ3Qgc3VwcG9ydGVkCisrICAgICAgICAg ICogdGhpcyBjYXNlIHdpbGwgZmFsbCB0aHJvdWdoIHRvIHRoZSAnZGVmYXVsdCcgYmVsb3csIHdo aWNoIGp1c3QKKysgICAgICAgICAgKiByZXR1cm5zLgorKyAgICAgICAgICAqLworKyNlbmRpZiAv KiBQTkdfUE9XRVJQQ19WU1hfQVBJX1NVUFBPUlRFRCAqLworKyNpZmRlZiBQTkdfUE9XRVJQQ19W U1hfQ0hFQ0tfU1VQUE9SVEVECisrICAgICAgICAgeworKyAgICAgICAgICAgIHN0YXRpYyB2b2xh dGlsZSBzaWdfYXRvbWljX3Qgbm9fdnN4ID0gLTE7IC8qIG5vdCBjaGVja2VkICovCisrCisrICAg ICAgICAgICAgaWYgKG5vX3ZzeCA8IDApCisrICAgICAgICAgICAgICAgbm9fdnN4ID0gIXBuZ19o YXZlX3ZzeChwcCk7CisrCisrICAgICAgICAgICAgaWYgKG5vX3ZzeCkKKysgICAgICAgICAgICAg ICByZXR1cm47CisrICAgICAgICAgfQorKyNpZmRlZiBQTkdfUE9XRVJQQ19WU1hfQVBJX1NVUFBP UlRFRAorKyAgICAgICAgIGJyZWFrOworKyNlbmRpZgorKyNlbmRpZiAvKiBQTkdfUE9XRVJQQ19W U1hfQ0hFQ0tfU1VQUE9SVEVEICovCisrCisrI2lmZGVmIFBOR19QT1dFUlBDX1ZTWF9BUElfU1VQ UE9SVEVECisrICAgICAgZGVmYXVsdDogLyogT0ZGIG9yIElOVkFMSUQgKi8KKysgICAgICAgICBy ZXR1cm47CisrCisrICAgICAgY2FzZSBQTkdfT1BUSU9OX09OOgorKyAgICAgICAgIC8qIE9wdGlv biB0dXJuZWQgb24gKi8KKysgICAgICAgICBicmVhazsKKysgICB9CisrI2VuZGlmCisrCisrICAg LyogSU1QT1JUQU5UOiBhbnkgbmV3IGludGVybmFsIGZ1bmN0aW9ucyB1c2VkIGhlcmUgbXVzdCBi ZSBkZWNsYXJlZCB1c2luZworKyAgICAqIFBOR19JTlRFUk5BTF9GVU5DVElPTiBpbiAuLi9wbmdw cml2LmguICBUaGlzIGlzIHJlcXVpcmVkIHNvIHRoYXQgdGhlCisrICAgICogJ3ByZWZpeCcgb3B0 aW9uIHRvIGNvbmZpZ3VyZSB3b3JrczoKKysgICAgKgorKyAgICAqICAgIC4vY29uZmlndXJlIC0t d2l0aC1saWJwbmctcHJlZml4PWZvb2Jhcl8KKysgICAgKgorKyAgICAqIFZlcmlmeSB5b3UgaGF2 ZSBnb3QgdGhpcyByaWdodCBieSBydW5uaW5nIHRoZSBhYm92ZSBjb21tYW5kLCBkb2luZyBhIGJ1 aWxkCisrICAgICogYW5kIGV4YW1pbmluZyBwbmdwcmVmaXguaDsgaXQgbXVzdCBjb250YWluIGEg I2RlZmluZSBmb3IgZXZlcnkgZXh0ZXJuYWwKKysgICAgKiBmdW5jdGlvbiB5b3UgYWRkLiAgKE5v dGljZSB0aGF0IHRoaXMgaGFwcGVucyBhdXRvbWF0aWNhbGx5IGZvciB0aGUKKysgICAgKiBpbml0 aWFsaXphdGlvbiBmdW5jdGlvbi4pCisrICAgICovCisrICAgcHAtPnJlYWRfZmlsdGVyW1BOR19G SUxURVJfVkFMVUVfVVAtMV0gPSBwbmdfcmVhZF9maWx0ZXJfcm93X3VwX3ZzeDsKKysKKysgICBp ZiAoYnBwID09IDMpCisrICAgeworKyAgICAgIHBwLT5yZWFkX2ZpbHRlcltQTkdfRklMVEVSX1ZB TFVFX1NVQi0xXSA9IHBuZ19yZWFkX2ZpbHRlcl9yb3dfc3ViM192c3g7CisrICAgICAgcHAtPnJl YWRfZmlsdGVyW1BOR19GSUxURVJfVkFMVUVfQVZHLTFdID0gcG5nX3JlYWRfZmlsdGVyX3Jvd19h dmczX3ZzeDsKKysgICAgICBwcC0+cmVhZF9maWx0ZXJbUE5HX0ZJTFRFUl9WQUxVRV9QQUVUSC0x XSA9IHBuZ19yZWFkX2ZpbHRlcl9yb3dfcGFldGgzX3ZzeDsKKysgICB9CisrCisrICAgZWxzZSBp ZiAoYnBwID09IDQpCisrICAgeworKyAgICAgIHBwLT5yZWFkX2ZpbHRlcltQTkdfRklMVEVSX1ZB TFVFX1NVQi0xXSA9IHBuZ19yZWFkX2ZpbHRlcl9yb3dfc3ViNF92c3g7CisrICAgICAgcHAtPnJl YWRfZmlsdGVyW1BOR19GSUxURVJfVkFMVUVfQVZHLTFdID0gcG5nX3JlYWRfZmlsdGVyX3Jvd19h dmc0X3ZzeDsKKysgICAgICBwcC0+cmVhZF9maWx0ZXJbUE5HX0ZJTFRFUl9WQUxVRV9QQUVUSC0x XSA9IHBuZ19yZWFkX2ZpbHRlcl9yb3dfcGFldGg0X3ZzeDsKKysgICB9CisrfQorKyNlbmRpZiAv KiBQTkdfUE9XRVJQQ19WU1hfT1BUID4gMCAqLworKyNlbmRpZiAvKiBSRUFEICovCistLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2xzcy9saW51eF9zeXNj YWxsX3N1cHBvcnQuaAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9sc3MvbGludXhfc3lzY2FsbF9zdXBwb3J0LmgKK0BAIC0zOTE0LDcgKzM5MTQsNyBA QCBzdHJ1Y3Qga2VybmVsX3N0YXRmcyB7CisgICAgICAgTFNTX1JFRygyLCBidWYpOworICAgICAg IExTU19CT0RZKHZvaWQqLCBtbWFwMiwgIjAiKF9fcjIpKTsKKyAgICAgfQorLSNlbHNlCisrI2Vs aWYgIWRlZmluZWQoX19wb3dlcnBjNjRfXykgLyogcHBjNjQgZG9lc24ndCBoYXZlIG1tYXAyICov CisgICAgICNkZWZpbmUgX19OUl9fbW1hcDIgX19OUl9tbWFwMgorICAgICBMU1NfSU5MSU5FIF9z eXNjYWxsNih2b2lkKiwgX21tYXAyLCAgICAgICAgICAgIHZvaWQqLCBzLAorICAgICAgICAgICAg ICAgICAgICAgICAgICBzaXplX3QsICAgICAgICAgICAgICAgICAgIGwsIGludCwgICAgICAgICAg ICAgICBwLAorQEAgLTQwNDUsNyArNDA0NSw3IEBAIHN0cnVjdCBrZXJuZWxfc3RhdGZzIHsKKyAg ICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgZGVmaW5lZChfX0FSTV9BUkNIXzNfXykgfHwg ZGVmaW5lZChfX0FSTV9FQUJJX18pIHx8ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgKGRl ZmluZWQoX19taXBzX18pICYmIF9NSVBTX1NJTSA9PSBfTUlQU19TSU1fQUJJMzIpIHx8ICAgICAg ICAgICAgICAgICAgIFwKKy0gICAgICBkZWZpbmVkKF9fUFBDX18pIHx8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAoZGVmaW5lZChf X1BQQ19fKSAmJiAhZGVmaW5lZChfX3Bvd2VycGM2NF9fKSkgfHwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIChkZWZpbmVkKF9fczM5 MF9fKSAmJiAhZGVmaW5lZChfX3MzOTB4X18pKQorICAgICAvKiBPbiB0aGVzZSBhcmNoaXRlY3R1 cmVzLCBpbXBsZW1lbnQgbW1hcCgpIHdpdGggbW1hcDIoKS4gKi8KKyAgICAgTFNTX0lOTElORSB2 b2lkKiBMU1NfTkFNRShtbWFwKSh2b2lkICpzLCBzaXplX3QgbCwgaW50IHAsIGludCBmLCBpbnQg ZCwKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvbm9k ZS9ub2RlLnB5CisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L25vZGUvbm9kZS5weQorQEAgLTEwLDExICsxMCwxMiBAQCBpbXBvcnQgc3lzCisgCisgCisg ZGVmIEdldEJpbmFyeVBhdGgoKToKKy0gIHJldHVybiBvc19wYXRoLmpvaW4ob3NfcGF0aC5kaXJu YW1lKF9fZmlsZV9fKSwgKnsKKy0gICAgJ0Rhcndpbic6ICgnbWFjJywgJ25vZGUtZGFyd2luLXg2 NCcsICdiaW4nLCAnbm9kZScpLAorLSAgICAnTGludXgnOiAoJ2xpbnV4JywgJ25vZGUtbGludXgt eDY0JywgJ2JpbicsICdub2RlJyksCistICAgICdXaW5kb3dzJzogKCd3aW4nLCAnbm9kZS5leGUn KSwKKy0gIH1bcGxhdGZvcm0uc3lzdGVtKCldKQorKyAgcmV0dXJuICIvdXNyL2Jpbi9ub2RlIgor KyAgI3JldHVybiBvc19wYXRoLmpvaW4ob3NfcGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgKnsKKysg ICMgICdEYXJ3aW4nOiAoJ21hYycsICdub2RlLWRhcndpbi14NjQnLCAnYmluJywgJ25vZGUnKSwK KysgICMgICdMaW51eCc6ICgnbGludXgnLCAnbm9kZS1saW51eC14NjQnLCAnYmluJywgJ25vZGUn KSwKKysgICMgICdXaW5kb3dzJzogKCd3aW4nLCAnbm9kZS5leGUnKSwKKysgICN9W3BsYXRmb3Jt LnN5c3RlbSgpXSkKKyAKKyAKKyBkZWYgUnVuTm9kZShjbWRfcGFydHMsIHN0ZG91dD1Ob25lKToK Ky0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvcGRmaXVt L3RoaXJkX3BhcnR5L2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3IvcGFnZV9hbGxv Y2F0b3JfY29uc3RhbnRzLmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvcGRmaXVtL3RoaXJkX3BhcnR5L2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9h bGxvY2F0b3IvcGFnZV9hbGxvY2F0b3JfY29uc3RhbnRzLmgKK0BAIC0xMSw3ICsxMSw3IEBACisg CisgbmFtZXNwYWNlIHBkZml1bSB7CisgbmFtZXNwYWNlIGJhc2UgeworLSNpZiBkZWZpbmVkKE9T X1dJTikKKysjaWYgZGVmaW5lZChPU19XSU4pIHx8IGRlZmluZWQoQVJDSF9DUFVfUFBDNjQpCisg c3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1BhZ2VBbGxvY2F0aW9uR3JhbnVsYXJpdHlTaGlmdCA9 IDE2OyAgLy8gNjRLQgorICNlbGlmIGRlZmluZWQoX01JUFNfQVJDSF9MT09OR1NPTikKKyBzdGF0 aWMgY29uc3RleHByIHNpemVfdCBrUGFnZUFsbG9jYXRpb25HcmFudWxhcml0eVNoaWZ0ID0gMTQ7 ICAvLyAxNktCCitAQCAtMjcsNiArMjcsMTAgQEAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1Bh Z2VBbGxvY2F0aW9uR3JhbnVsYXJpdHlCYXNlTWFzayA9CisgCisgI2lmIGRlZmluZWQoX01JUFNf QVJDSF9MT09OR1NPTikKKyBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrU3lzdGVtUGFnZVNpemUg PSAxNjM4NDsKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQorKy8vIFRPRE86IG1vZGVy biBwcGM2NCBjYW4gZG8gNGsgYW5kIDY0ayBwYWdlIHNpemVzCisrLy8gZm9yIG5vdywgNjRrIGlz IGFzc3VtZWQKKytzdGF0aWMgY29uc3RleHByIHNpemVfdCBrU3lzdGVtUGFnZVNpemUgPSA2NTUz NjsKKyAjZWxzZQorIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtTeXN0ZW1QYWdlU2l6ZSA9IDQw OTY7CisgI2VuZGlmCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L3NxbGl0ZS9hbWFsZ2FtYXRpb24vc3FsaXRlMy5jCisrKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NxbGl0ZS9hbWFsZ2FtYXRpb24vc3FsaXRl My5jCitAQCAtMTM5MzcsNyArMTM5MzcsOCBAQCB0eXBlZGVmIElOVDE2X1RZUEUgTG9nRXN0Owor ICMgaWYgZGVmaW5lZChpMzg2KSAgICAgfHwgZGVmaW5lZChfX2kzODZfXykgICB8fCBkZWZpbmVk KF9NX0lYODYpIHx8ICAgIFwKKyAgICAgIGRlZmluZWQoX194ODZfNjQpIHx8IGRlZmluZWQoX194 ODZfNjRfXykgfHwgZGVmaW5lZChfTV9YNjQpICB8fCAgICBcCisgICAgICBkZWZpbmVkKF9NX0FN RDY0KSB8fCBkZWZpbmVkKF9NX0FSTSkgICAgIHx8IGRlZmluZWQoX194ODYpICAgfHwgICAgXAor LSAgICAgZGVmaW5lZChfX0FSTUVMX18pIHx8IGRlZmluZWQoX19BQVJDSDY0RUxfXykgfHwgZGVm aW5lZChfTV9BUk02NCkKKysgICAgIGRlZmluZWQoX19BUk1FTF9fKSB8fCBkZWZpbmVkKF9fQUFS Q0g2NEVMX18pIHx8IGRlZmluZWQoX01fQVJNNjQpIHx8IFwKKysgICAgIGRlZmluZWQoX19wb3dl cnBjNjRfXykgJiYgKF9fQllURV9PUkRFUl9fID09IF9fT1JERVJfTElUVExFX0VORElBTl9fKQor ICMgICBkZWZpbmUgU1FMSVRFX0JZVEVPUkRFUiAgICAxMjM0CisgIyBlbGlmIGRlZmluZWQoc3Bh cmMpICAgIHx8IGRlZmluZWQoX19wcGNfXykgfHwgXAorICAgICAgICBkZWZpbmVkKF9fQVJNRUJf XykgfHwgZGVmaW5lZChfX0FBUkNINjRFQl9fKQorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGlm ZmVyX2Jsb2NrLmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kaWZmZXJfYmxvY2suY2MKK0BA IC0zMCwxMSArMzAsNyBAQCBib29sIFZlY3RvckRpZmZlcmVuY2UoY29uc3QgdWludDhfdCogaW1h Z2UxLCBjb25zdCB1aW50OF90KiBpbWFnZTIpIHsKKyAgIHN0YXRpYyBib29sICgqZGlmZl9wcm9j KShjb25zdCB1aW50OF90KiwgY29uc3QgdWludDhfdCopID0gbnVsbHB0cjsKKyAKKyAgIGlmICgh ZGlmZl9wcm9jKSB7CistI2lmIGRlZmluZWQoV0VCUlRDX0FSQ0hfQVJNX0ZBTUlMWSkgfHwgZGVm aW5lZChXRUJSVENfQVJDSF9NSVBTX0ZBTUlMWSkKKy0gICAgLy8gRm9yIEFSTSBhbmQgTUlQUyBw cm9jZXNzb3JzLCBhbHdheXMgdXNlIEMgdmVyc2lvbi4KKy0gICAgLy8gVE9ETyhoY2xhbSk6IElt cGxlbWVudCBhIE5FT04gdmVyc2lvbi4KKy0gICAgZGlmZl9wcm9jID0gJlZlY3RvckRpZmZlcmVu Y2VfQzsKKy0jZWxzZQorKyNpZiBkZWZpbmVkKFdFQlJUQ19BUkNIX1g4Nl9GQU1JTFkpCisgICAg IGJvb2wgaGF2ZV9zc2UyID0gV2ViUnRjX0dldENQVUluZm8oa1NTRTIpICE9IDA7CisgICAgIC8v IEZvciB4ODYgcHJvY2Vzc29ycywgY2hlY2sgaWYgU1NFMiBpcyBzdXBwb3J0ZWQuCisgICAgIGlm IChoYXZlX3NzZTIgJiYga0Jsb2NrU2l6ZSA9PSAzMikgeworQEAgLTQ0LDYgKzQwLDEwIEBAIGJv b2wgVmVjdG9yRGlmZmVyZW5jZShjb25zdCB1aW50OF90KiBpbWFnZTEsIGNvbnN0IHVpbnQ4X3Qq IGltYWdlMikgeworICAgICB9IGVsc2UgeworICAgICAgIGRpZmZfcHJvYyA9ICZWZWN0b3JEaWZm ZXJlbmNlX0M7CisgICAgIH0KKysjZWxzZQorKyAgICAvLyBGb3Igb3RoZXIgcHJvY2Vzc29ycywg YWx3YXlzIHVzZSBDIHZlcnNpb24uCisrICAgIC8vIFRPRE8oaGNsYW0pOiBJbXBsZW1lbnQgYSBO RU9OIHZlcnNpb24uCisrICAgIGRpZmZfcHJvYyA9ICZWZWN0b3JEaWZmZXJlbmNlX0M7CisgI2Vu ZGlmCisgICB9CisgCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L3dlYnJ0Yy9ydGNfYmFzZS9zeXN0ZW0vYXJjaC5oCisrKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9ydGNfYmFzZS9zeXN0ZW0vYXJj aC5oCitAQCAtNDcsNiArNDcsMTggQEAKKyAjZWxpZiBkZWZpbmVkKF9fcG5hY2xfXykKKyAjZGVm aW5lIFdFQlJUQ19BUkNIXzMyX0JJVFMKKyAjZGVmaW5lIFdFQlJUQ19BUkNIX0xJVFRMRV9FTkRJ QU4KKysjZWxpZiBkZWZpbmVkKF9fUFBDX18pCisrI2RlZmluZSBXRUJSVENfQVJDSF9QUENfRkFN SUxZCisrI2lmIF9fQllURV9PUkRFUl9fID09IF9fT1JERVJfTElUVExFX0VORElBTl9fCisrI2Rl ZmluZSBXRUJSVENfQVJDSF9MSVRUTEVfRU5ESUFOCisrI2Vsc2UKKysjZGVmaW5lIFdFQlJUQ19B UkNIX0JJR19FTkRJQU4KKysjZW5kaWYKKysjaWYgZGVmaW5lZChfX0xQNjRfXykKKysjZGVmaW5l IFdFQlJUQ19BUkNIXzY0X0JJVFMKKysjZWxzZQorKyNkZWZpbmUgV0VCUlRDX0FSQ0hfMzJfQklU UworKyNlbmRpZgorICNlbHNlCisgI2Vycm9yIFBsZWFzZSBhZGQgc3VwcG9ydCBmb3IgeW91ciBh cmNoaXRlY3R1cmUgaW4gdHlwZWRlZnMuaAorICNlbmRpZgorLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS92OC9CVUlMRC5nbgorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS92OC9CVUlMRC5nbgorQEAgLTU0NCw2ICs1NDQsMTIgQEAgY29uZmlnKCJ0b29s Y2hhaW4iKSB7CisgICAgIH0KKyAgICAgaWYgKGhvc3RfYnl0ZW9yZGVyID09ICJsaXR0bGUiKSB7 CisgICAgICAgZGVmaW5lcyArPSBbICJWOF9UQVJHRVRfQVJDSF9QUENfTEUiIF0KKysgICAgICAg IGNmbGFncyArPSBbCisrICAgICAgICAjIEVuYWJsZSB1c2FnZSBvZiBBbHRpVmVjLCBWU1gsIGFu ZCBvdGhlciBQT1dFUjggYW5kIGhpZ2hlciBmZWF0dXJlcworKyAgICAgICAgIi1tY3B1PXBvd2Vy OCIsCisrICAgICAgICAiLW1hbHRpdmVjIiwKKysgICAgICAgICItbXZzeCIsCisrICAgICAgXQor ICAgICB9IGVsc2UgaWYgKGhvc3RfYnl0ZW9yZGVyID09ICJiaWciKSB7CisgICAgICAgZGVmaW5l cyArPSBbICJWOF9UQVJHRVRfQVJDSF9QUENfQkUiIF0KKyAgICAgICBpZiAoY3VycmVudF9vcyA9 PSAiYWl4IikgeworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92OC90ZXN0 L0JVSUxELmduCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Y4L3Rlc3Qv QlVJTEQuZ24KK0BAIC0xNyw3ICsxNyw3IEBAIGdyb3VwKCJnbl9hbGwiKSB7CisgICAgIm1vemls bGE6djhfbW96aWxsYSIsCisgICAgInByZXBhcnNlcjp2OF9wcmVwYXJzZXIiLAorICAgICJ0ZXN0 MjYyOnY4X3Rlc3QyNjIiLAorICAgICJ3YXNtLWpzOnY4X3dhc21fanMiLAorLSAgICJ3YXNtLXNw ZWMtdGVzdHM6djhfd2FzbV9zcGVjX3Rlc3RzIiwKKysgICAjIndhc20tc3BlYy10ZXN0czp2OF93 YXNtX3NwZWNfdGVzdHMiLAorICAgICJ3ZWJraXQ6djhfd2Via2l0IiwKKyAgXQorQEAgLTgwLDkg KzgwLDkgQEAgZ3JvdXAoInY4X2JvdF9kZWZhdWx0IikgeworICAgICAibWpzdW5pdDp2OF9tanN1 bml0IiwKKyAgICAgIm1rZ3Jva2R1bXA6bWtncm9rZHVtcCIsCisgICAgICJwcmVwYXJzZXI6djhf cHJlcGFyc2VyIiwKKy0gICAgInVuaXR0ZXN0czp1bml0dGVzdHMiLAorKyAgICAjInVuaXR0ZXN0 czp1bml0dGVzdHMiLAorICAgICAid2FzbS1hcGktdGVzdHM6d2FzbV9hcGlfdGVzdHMiLAorICAg ICAid2FzbS1qczp2OF93YXNtX2pzIiwKKy0gICAgIndhc20tc3BlYy10ZXN0czp2OF93YXNtX3Nw ZWNfdGVzdHMiLAorKyAgICAjIndhc20tc3BlYy10ZXN0czp2OF93YXNtX3NwZWNfdGVzdHMiLAor ICAgICAid2Via2l0OnY4X3dlYmtpdCIsCisgICBdCitAQCAtMTA0LDkgKzEwNCw5IEBAIGdyb3Vw KCJ2OF9kZWZhdWx0IikgeworICAgICAibWtncm9rZHVtcDpta2dyb2tkdW1wIiwKKyAgICAgInBy ZXBhcnNlcjp2OF9wcmVwYXJzZXIiLAorLSAgICAidW5pdHRlc3RzOnVuaXR0ZXN0cyIsCistICAg ICJ3YXNtLWFwaS10ZXN0czp3YXNtX2FwaV90ZXN0cyIsCistICAgICJ3YXNtLWpzOnY4X3dhc21f anMiLAorLSAgICAid2FzbS1zcGVjLXRlc3RzOnY4X3dhc21fc3BlY190ZXN0cyIsCisrICAgICMi dW5pdHRlc3RzOnVuaXR0ZXN0cyIsCisrICAgICMid2FzbS1hcGktdGVzdHM6d2FzbV9hcGlfdGVz dHMiLAorKyAgICAjIndhc20tanM6djhfd2FzbV9qcyIsCisrICAgICMid2FzbS1zcGVjLXRlc3Rz OnY4X3dhc21fc3BlY190ZXN0cyIsCisgICBdCisgfQorIApkaWZmIC0tZ2l0IGEvc3JjcGtncy9x dDUtd2ViZW5naW5lL3RlbXBsYXRlIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3RlbXBsYXRlCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zZmFhNWZiMmJjMQotLS0gL2Rl di9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS90ZW1wbGF0ZQpAQCAtMCwwICsxLDE2 MCBAQAorIyBUZW1wbGF0ZSBmaWxlIGZvciAncXQ1LXdlYmVuZ2luZScKK3BrZ25hbWU9cXQ1LXdl YmVuZ2luZQordmVyc2lvbj01LjE0LjIKK3JldmlzaW9uPTEKK3dya3NyYz0icXR3ZWJlbmdpbmUt ZXZlcnl3aGVyZS1zcmMtJHt2ZXJzaW9ufSIKK2FyY2hzPSJ4ODZfNjQqIGk2ODYqIGFybXZbNjdd KiBwcGM2NCogYWFyY2g2NCoiCitidWlsZF9zdHlsZT1xbWFrZQorY29uZmlndXJlX2FyZ3M9Ii0t CisgLXdlYmVuZ2luZS1pY3UgLXdlYmVuZ2luZS1mZm1wZWcgLXdlYmVuZ2luZS1vcHVzIC13ZWJl bmdpbmUtd2VicAorIC13ZWJlbmdpbmUtcGVwcGVyLXBsdWdpbnMgLXdlYmVuZ2luZS1wcmludGlu Zy1hbmQtcGRmIC13ZWJlbmdpbmUtcHJvcHJpZXRhcnktY29kZWNzCisgLXdlYmVuZ2luZS1wdWxz ZWF1ZGlvIC13ZWJlbmdpbmUtc3BlbGxjaGVja2VyIC13ZWJlbmdpbmUtd2VicnRjIC13ZWJlbmdp bmUtZ2VvbG9jYXRpb24KKyAkKHZvcHRfaWYgc25hcHNob3QgJycgJy1ubycpLXdlYmVuZ2luZS12 OC1zbmFwc2hvdCAtd2ViZW5naW5lLWtlcmJlcm9zIgorIyBSZWx5IG9uIGF1dG8gZGV0ZWN0aW9u IChmYWlscyBpZiBmb3JjZWQgZm9yIGNyb3NzIGJ1aWxkcykgLXdlYmVuZ2luZS1hbHNhCitob3N0 bWFrZWRlcGVuZHM9InF0NS1xbWFrZSBncGVyZiBuaW5qYSBxdDUtaG9zdC10b29scyBmbGV4IHBr Zy1jb25maWcKKyB3aGljaCBwZXJsIHB5dGhvbiBwcm90b2J1ZiIKK21ha2VkZXBlbmRzPSJxdDUt d2ViY2hhbm5lbC1kZXZlbCBxdDUtbG9jYXRpb24tZGV2ZWwgcXQ1LXRvb2xzLWRldmVsCisgcXQ1 LWRlY2xhcmF0aXZlLWRldmVsIGxpYmV2ZW50LWRldmVsIHNuYXBweS1kZXZlbCBpY3UtZGV2ZWwg ZmZtcGVnLWRldmVsCisgbGlid2VicC1kZXZlbCBvcHVzLWRldmVsIGN1cHMtZGV2ZWwgbnNzLWRl dmVsIG1pbml6aXAtZGV2ZWwgbGlieHNsdC1kZXZlbAorIGxpYnZweC1kZXZlbCByZTItZGV2ZWwg bGliWHRzdC1kZXZlbCBsaWJYY3Vyc29yLWRldmVsIGxpYlhjb21wb3NpdGUtZGV2ZWwKKyBqc29u Y3BwLWRldmVsIGhhcmZidXp6LWRldmVsIGxjbXMyLWRldmVsIHByb3RvYnVmLWRldmVsIHB1bHNl YXVkaW8tZGV2ZWwKKyBsaWJYcmFuZHItZGV2ZWwgTWVzYUxpYi1kZXZlbCBtaXQta3JiNS1kZXZl bCIKK3Nob3J0X2Rlc2M9IkNyb3NzLXBsYXRmb3JtIGFwcGxpY2F0aW9uIGFuZCBVSSBmcmFtZXdv cmsgKFFUNSkgLSBXZWJFbmdpbmUgY29tcG9uZW50IgorbWFpbnRhaW5lcj0iSm9obiA8am9obnpA cG9zdGVvLm5ldD4iCitsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyLCBMR1BMLTMuMC1vci1sYXRl ciIKK2hvbWVwYWdlPSJodHRwczovL3F0LmlvLyIKK2Rpc3RmaWxlcz0iaHR0cDovL2Rvd25sb2Fk LnF0LmlvL29mZmljaWFsX3JlbGVhc2VzL3F0LyR7dmVyc2lvbiUuKn0vJHt2ZXJzaW9ufS9zdWJt b2R1bGVzL3F0d2ViZW5naW5lLWV2ZXJ5d2hlcmUtc3JjLSR7dmVyc2lvbn0udGFyLnh6IgorY2hl Y2tzdW09ZTE2OWQ2YTc1ZDhjMzk3ZTA0Zjg0M2JjMWI5NTg1OTUwZmI5YTAwMTI1NWNkMThkNjI5 M2Y2NmZhOGE2Yzk0NworcGF0Y2hfYXJncz0iLU5wMSIKKworYnVpbGRfb3B0aW9ucz0ic25hcHNo b3QiCitidWlsZF9vcHRpb25zX2RlZmF1bHQ9InNuYXBzaG90IgorCitpZiBbICIkQ1JPU1NfQlVJ TEQiIF07IHRoZW4KKwlob3N0bWFrZWRlcGVuZHMrPSIgbnNzLWRldmVsIGxpYmV2ZW50LWRldmVs IHF0NS1sb2NhdGlvbi1kZXZlbAorCSBxdDUtZGVjbGFyYXRpdmUtZGV2ZWwiCitmaQorCitpZiBb ICIkWEJQU19UQVJHRVRfTElCQyIgPSAibXVzbCIgXTsgdGhlbgorCW1ha2VkZXBlbmRzKz0iIG11 c2wtbGVnYWN5LWNvbXBhdCIKK2ZpCisKK2lmIFsgIiRYQlBTX0xJQkMiID0gIm11c2wiIF07IHRo ZW4KKwlob3N0bWFrZWRlcGVuZHMrPSIgbXVzbC1sZWdhY3ktY29tcGF0IgorZmkKKworaWYgWyAi JFhCUFNfV09SRFNJWkUiIC1lcSAzMiBdOyB0aGVuCisJbm9kZWJ1Zz15ZXMgICMgcHJldmVudCBP T00KK2ZpCisKK2lmIFsgISAiJFhCUFNfV09SRFNJWkUiID0gIiRYQlBTX1RBUkdFVF9XT1JEU0la RSIgXTsgdGhlbgorCWJyb2tlbj0id2ViZW5naW5lIGNhbiBiZSBidWlsdCBvbmx5IGlmIHdvcmQg c2l6ZSBtYXRjaGVzIgorZmkKKworaWYgWyAiJFhCUFNfTk9fQVRPTUlDOCIgXTsgdGhlbgorCWhv c3RtYWtlZGVwZW5kcys9IiBsaWJhdG9taWMtZGV2ZWwiCitmaQoraWYgWyAiJFhCUFNfVEFSR0VU X05PX0FUT01JQzgiIF07IHRoZW4KKwltYWtlZGVwZW5kcys9IiBsaWJhdG9taWMtZGV2ZWwiCitm aQorCitjYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KKwlhcm12N2wqKSBicm9rZW49IkVS Uk9SIGF0IC8vc2tpYS9CVUlMRC5nbjo3MDc6MTE6IFVuZGVmaW5lZCBpZGVudGlmaWVyLiI7Owor ICAgICAgICAjICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNvbXBpbGVy X2FybV9mcHUiIF0KKwlhcm12NmwqKSBicm9rZW49IkVSUk9SIGF0IC8vYnVpbGQvdG9vbGNoYWlu L2djY190b29sY2hhaW4uZ25pOjEwMjozOiBEdXBsaWNhdGUgZGVmaW5pdGlvbi4iOzsKK2VzYWMK KworX2Jvb3RzdHJhcF9nbigpIHsKKwkjIEJvb3RzdHJhcCBnbiAoZ2VuZXJhdGUgbmluamEpCisJ ZWNobyAiQm9vdHN0cmFwcGluZyAnZ24nIgorCWNkICR7d3Jrc3JjfS9zcmMvM3JkcGFydHkvZ24K KwlDRkxBR1M9IiRDRkxBR1NfaG9zdCIgQ1hYRkxBR1M9IiRDWFhGTEFHU19ob3N0IiBMREZMQUdT PSIkTERGTEFHU19ob3N0IiBcCisJUEtHQ09ORklHPS91c3IvYmluL3BrZ2NvbmZpZyBQS0dfQ09O RklHX1BBVEg9Ii91c3IvbGliL3BrZ2NvbmZpZzovdXNyL3NoYXJlL3BrZ2NvbmZpZyIgXAorCQlw eXRob24yIGJ1aWxkL2dlbi5weSAtLW5vLWxhc3QtY29tbWl0LXBvc2l0aW9uIC0tb3V0LXBhdGgg XAorCQkJJHt3cmtzcmN9L3NyYy8zcmRwYXJ0eS9nbi9vdXQvUmVsZWFzZSAtLWNjICIkQ0NfaG9z dCIgXAorICAgICAgICAgICAgICAgICAgICAgICAgLS1jeHggIiRDWFhfaG9zdCIgLS1sZCAiJENY WF9ob3N0IiAtLWFyICIkQVJfaG9zdCIKKwluaW5qYSAtQyBvdXQvUmVsZWFzZSBnbgorCWNkICR7 d3Jrc3JjfQorfQorCitfY2xlYW51cF93cmtzcmNfbGVhaygpIHsKKwlpZiBbIC1kICIke1BLR0RF U1RESVJ9L3Vzci9saWIvY21ha2UiIF07IHRoZW4KKwkJIyBSZXBsYWNlIHJlZmVyZW5jZXMgdG8g JHt3cmtzcmN9IGluIGNtYWtlIGZpbGVzCisJCXZzZWQgLWkgJHtQS0dERVNURElSfS91c3IvbGli L2NtYWtlLyovKi5jbWFrZSBcCisJCQktZSAiczske3dya3NyY30vaG9zdDsvdXNyL2xpYi9xdDU7 ZyIgXAorCQkJLWUgInM7ZGV2aWNlcy92b2lkLSR7WEJQU19DUk9TU19UUklQTEVUfS1nKys7bGlu dXgtZysrO2ciCisJZmkKKwlpZiBbIC1kICIke1BLR0RFU1RESVJ9L3Vzci9saWIvcGtnY29uZmln IiBdOyB0aGVuCisJCSMgUmVwbGFjZSByZWZlcmVuY2VzIHRvICR7d3Jrc3JjfSBpbiBwa2djb25m aWcgZmlsZXMKKwkJdnNlZCAtaSAke1BLR0RFU1RESVJ9L3Vzci9saWIvcGtnY29uZmlnLyoucGMg XAorCQkJLWUgInM7JHt3cmtzcmN9L2hvc3Q7L3Vzci9saWIvcXQ1O2ciIFwKKwkJCS1lICJzO2Rl dmljZXMvdm9pZC0ke1hCUFNfQ1JPU1NfVFJJUExFVH0tZysrO2xpbnV4LWcrKztnIgorCWZpCisJ IyBSZW1vdmUgUU1BS0VfUFJMX0JVSUxEX0RJUiBmcm9tIGhpbnQgZmlsZXMgZm9yIHN0YXRpYyBs aWJyYXJpZXMKKwkjIGFuZCByZXBsYWNlIHJlZmVyZW5jZXMgdG8gJHt3cmtzcmN9CisJZmluZCAk e1BLR0RFU1RESVJ9IC1pbmFtZSAiKi5wcmwiIC1leGVjIHNlZCAtaSAie30iIFwKKwkJLWUgIi9e UU1BS0VfUFJMX0JVSUxEX0RJUi9kIiBcCisJCS1lICJzOy1MJHt3cmtzcmN9L3F0YmFzZS9saWI7 LUwvdXNyL2xpYjtnIiBcOworCSMgUmVwbGFjZSAke3dya3NyY30gaW4gcHJvamVjdCBpbmNsdWRl IGZpbGVzCisJZmluZCAke1BLR0RFU1RESVJ9IC1pbmFtZSAiKi5wcmkiIC1leGVjIHNlZCAtaSAi e30iIFwKKwkJLWUgInM7JHt3cmtzcmN9L3F0YmFzZTsvdXNyL2xpYi9xdDU7ZyIgXDsKK30KKwor cHJlX2NvbmZpZ3VyZSgpIHsKKwlleHBvcnQgUEFUSD0ke1BBVEgvXC9idWlsZGRpclwvLnhicHMt cXQ1LXdlYmVuZ2luZVwvd3JhcHBlcnM6L30KKwljcCAke0ZJTEVTRElSfS9yZXNvbHZfY29tcGF0 LmggJHt3cmtzcmN9L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9uZXQvZG5zCisJY2FzZSAiJFhCUFNf VEFSR0VUX01BQ0hJTkUiIGluCisJCWFybXY1Knxhcm12NiopICAjIERpc2FibGUgInlpZWxkIiBh c3NlbWJsZXIgaW5zdHJ1Y3Rpb24KKwkJCXZzZWQgLWkgc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jh c2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3Ivc3Bpbl9sb2NrLmNjIFwKKwkJCQlzcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvcGRmaXVtL3RoaXJkX3BhcnR5L2Jhc2UvYWxs b2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3Ivc3Bpbl9sb2NrLmNjIFwKKwkJCQktZSAnczsieWll bGQiOyJub3AiOycKKwkJCTs7CisJZXNhYworCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBp bgorCQkqLW11c2wpIGV4cG9ydCBDWFhGTEFHUys9IiAtRF9QT1NJWF9USFJFQURfQVRUUl9TVEFD S1NJWkU9MjA5NzE1MiI7OworCWVzYWMKKwljYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4K KwkJbWlwcyopICAjIHNnaWRlZnMuaCBpcyBpbiAvdXNyL2luY2x1ZGUvYXNtCisJCQlmb3IgZiBp biBcCisJCQkJcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2xz cy9saW51eF9zeXNjYWxsX3N1cHBvcnQuaCBcCisJCQkJcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vYW5kcm9p ZC9pbmNsdWRlL2FzbS1taXBzL2ZwcmVnZGVmLmggXAorCQkJCXF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL2Fu ZHJvaWQvaW5jbHVkZS9hc20tbWlwcy9yZWdkZWYuaCBcCisJCQkJcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24v YW5kcm9pZC9pbmNsdWRlL2FzbS1taXBzL2FzbS5oIFwKKwkJCQlxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvdGNtYWxsb2MvdmVuZG9yL3NyYy9iYXNlL2xpbnV4 X3N5c2NhbGxfc3VwcG9ydC5oIFwKKwkJCQlxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvdGNtYWxsb2MvY2hyb21pdW0vc3JjL2Jhc2UvbGludXhfc3lzY2FsbF9z dXBwb3J0LmggXAorCQkJCXF0c2NyaXB0L3NyYy8zcmRwYXJ0eS9qYXZhc2NyaXB0Y29yZS9KYXZh U2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaDsgZG8KKwkJCQkJdnNlZCAtaSAkZiAtZSAiczs8c2dp ZGVmcy5oPjs8YXNtL3NnaWRlZnMuaD47IgorCQkJZG9uZQorCQkJIyBBc3N1bWUgdGhhdCBSR0JB IG9yZGVyIGlzIGNvcnJlY3QgZm9yIGJpZyBlbmRpYW4gQ1BVcworCQkJdnNlZCAtaSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2tpYS9jb25maWcvU2tVc2VyQ29uZmlnLmggXAor CQkJCS1lICcvI2Vycm9yIFJlYWQgdGhlIGNvbW1lbnQgYXQgdGhpcyBsb2NhdGlvbi9kJworCQkJ OzsKKwllc2FjCisKKwlpZiBbICIkQ1JPU1NfQlVJTEQiIF07IHRoZW4KKwkJX2Jvb3RzdHJhcF9n bgorCWZpCit9CisKK3ByZV9idWlsZCgpIHsKKwlleHBvcnQgTklOSkFKT0JTPSR7bWFrZWpvYnN9 Cit9CisKK3F0NS13ZWJlbmdpbmUtZGV2ZWxfcGFja2FnZSgpIHsKKwlkZXBlbmRzPSIke3NvdXJj ZXBrZ30+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCisJc2hvcnRfZGVzYys9IiAtIGRldmVsb3Bt ZW50IGZpbGVzIgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSB1c3IvaW5jbHVkZQorCQl2bW92 ZSB1c3IvbGliL2NtYWtlCisJCXZtb3ZlIHVzci9saWIvcGtnY29uZmlnCisJCXZtb3ZlIHVzci9s aWIvcXQ1L21rc3BlY3MKKwkJI1RPRE86IEZJWCEhIQorCQlpZiBbIC16ICIkQ1JPU1NfQlVJTEQi IF07IHRoZW4KKwkJCXZtb3ZlIHVzci9saWIvcXQ1L3BsdWdpbnMvZGVzaWduZXIKKwkJZmkKKwkJ dm1vdmUgInVzci9saWIvKi5zbyIKKwkJdm1vdmUgInVzci9saWIvKi5wcmwiCisJCXZtb3ZlICJ1 c3IvbGliLyoubGEiCisJCV9jbGVhbnVwX3dya3NyY19sZWFrCisJfQorfQoKRnJvbSA3OTZmNzJi MTZmZTNkODFmN2M0YTU0ZWMyNDc5ZDI0YTEwNWMwN2EzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiBKb2huIDxqb2huekBwb3N0ZW8ubmV0PgpEYXRlOiBNb24sIDExIE5vdiAyMDE5IDIw OjIyOjQzICswMTAwClN1YmplY3Q6IFtQQVRDSCAwNC8xN10gY29tbW9uL3FtYWtlLnNoOiByZW9y ZGVyIGFyZ3MKCltjaSBza2lwXQotLS0KIGNvbW1vbi9idWlsZC1zdHlsZS9xbWFrZS5zaCB8IDk4 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA4 NyBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb21tb24vYnVp bGQtc3R5bGUvcW1ha2Uuc2ggYi9jb21tb24vYnVpbGQtc3R5bGUvcW1ha2Uuc2gKaW5kZXggNjNi ZTVhM2E1NjguLjMzNzYyZTIzMjRkIDEwMDY0NAotLS0gYS9jb21tb24vYnVpbGQtc3R5bGUvcW1h a2Uuc2gKKysrIGIvY29tbW9uL2J1aWxkLXN0eWxlL3FtYWtlLnNoCkBAIC0xNiwxMCArMTYsNzYg QEAgZG9fY29uZmlndXJlKCkgewogCQltc2dfZXJyb3IgIiR7cGtndmVyfTogQ291bGQgbm90IGZp bmQgcW1ha2UgLSBtaXNzaW5nIGluIGhvc3RkZXBlbmRzP1xuIgogCWZpCiAJaWYgWyAiJENST1NT X0JVSUxEIiBdICYmIFsgIiRxbWFrZSIgPT0gIi91c3IvbGliL3F0NS9iaW4vcW1ha2UiIF07IHRo ZW4KKwkJY2FzZSAkWEJQU19UQVJHRVRfTUFDSElORSBpbgorCQkJaTY4NiopIF9xdF9hcmNoPWkz ODY7OworCQkJeDg2XzY0KikgX3F0X2FyY2g9eDg2XzY0OzsKKwkJCWFhcmNoNjQqKSBfcXRfYXJj aD1hcm02NDs7CisJCQlhcm0qKSBfcXRfYXJjaD1hcm07OworCQkJbWlwcyopIF9xdF9hcmNoPW1p cHM7OworCQllc2FjCisJCW1rZGlyIC1wICIke3dya3NyY30vLnRhcmdldC1zcGVjL2xpbnV4LWcr KyIKKwkJY2F0ID4gIiR7d3Jrc3JjfS8udGFyZ2V0LXNwZWMvbGludXgtZysrL3FtYWtlLmNvbmYi IDw8X0VPRgorTUFLRUZJTEVfR0VORVJBVE9SICAgICAgPSBVTklYCitDT05GSUcgICAgICAgICAg ICAgICAgICs9IGluY3JlbWVudGFsCitRTUFLRV9JTkNSRU1FTlRBTF9TVFlMRSA9IHN1YmxpYgor CitpbmNsdWRlKC91c3IvbGliL3F0NS9ta3NwZWNzL2NvbW1vbi9saW51eC5jb25mKQoraW5jbHVk ZSgvdXNyL2xpYi9xdDUvbWtzcGVjcy9jb21tb24vZ2NjLWJhc2UtdW5peC5jb25mKQoraW5jbHVk ZSgvdXNyL2xpYi9xdDUvbWtzcGVjcy9jb21tb24vZysrLXVuaXguY29uZikKKworUU1BS0VfVEFS R0VUX0NPTkZJRyAgICAgPSAke1hCUFNfQ1JPU1NfQkFTRX0vdXNyL2xpYi9xdDUvbWtzcGVjcy9x Y29uZmlnLnByaQorUU1BS0VfVEFSR0VUX01PRFVMRSAgICAgPSAke1hCUFNfQ1JPU1NfQkFTRX0v dXNyL2xpYi9xdDUvbWtzcGVjcy9xbW9kdWxlLnByaQorUU1BS0VfQ0MgICAgICAgICAgICAgICAg PSAke0NDfQorUU1BS0VfQ1hYICAgICAgICAgICAgICAgPSAke0NYWH0KK1FNQUtFX0xJTksgICAg ICAgICAgICAgID0gJHtDWFh9CitRTUFLRV9MSU5LX0MgICAgICAgICAgICA9ICR7Q0N9CitRTUFL RV9MSU5LX1NITElCICAgICAgICA9ICR7Q1hYfQorCitRTUFLRV9BUiAgICAgICAgICAgICAgICA9 ICR7WEJQU19DUk9TU19UUklQTEVUfS1nY2MtYXIgY3FzCitRTUFLRV9PQkpDT1BZICAgICAgICAg ICA9ICR7T0JKQ09QWX0KK1FNQUtFX05NICAgICAgICAgICAgICAgID0gJHtOTX0gLVAKK1FNQUtF X1NUUklQICAgICAgICAgICAgID0gJHtTVFJJUH0KKworUU1BS0VfQ0ZMQUdTICAgICAgICAgICAg PSAke0NGTEFHU30KK1FNQUtFX0NYWEZMQUdTICAgICAgICAgID0gJHtDWFhGTEFHU30KK1FNQUtF X0xGTEFHUyAgICAgICAgICAgID0gJHtMREZMQUdTfQorbG9hZChxdF9jb25maWcpCitfRU9GCisJ CWVjaG8gIiNpbmNsdWRlIFwiJHtYQlBTX0NST1NTX0JBU0V9L3Vzci9saWIvcXQ1L21rc3BlY3Mv bGludXgtZysrL3FwbGF0Zm9ybWRlZnMuaFwiIiA+ICIke3dya3NyY30vLnRhcmdldC1zcGVjL2xp bnV4LWcrKy9xcGxhdGZvcm1kZWZzLmgiCisKKwkJbWtkaXIgLXAgIiR7d3Jrc3JjfS8uaG9zdC1z cGVjL2xpbnV4LWcrKyIKKwkJY2F0ID4gIiR7d3Jrc3JjfS8uaG9zdC1zcGVjL2xpbnV4LWcrKy9x bWFrZS5jb25mIiA8PF9FT0YKK01BS0VGSUxFX0dFTkVSQVRPUiAgICAgID0gVU5JWAorQ09ORklH ICAgICAgICAgICAgICAgICArPSBpbmNyZW1lbnRhbAorUU1BS0VfSU5DUkVNRU5UQUxfU1RZTEUg PSBzdWJsaWIKKworaW5jbHVkZSgvdXNyL2xpYi9xdDUvbWtzcGVjcy9jb21tb24vbGludXguY29u ZikKK2luY2x1ZGUoL3Vzci9saWIvcXQ1L21rc3BlY3MvY29tbW9uL2djYy1iYXNlLXVuaXguY29u ZikKK2luY2x1ZGUoL3Vzci9saWIvcXQ1L21rc3BlY3MvY29tbW9uL2crKy11bml4LmNvbmYpCisK K1FNQUtFX1RBUkdFVF9DT05GSUcgICAgID0gJHtYQlBTX0NST1NTX0JBU0V9L3Vzci9saWIvcXQ1 L21rc3BlY3MvcWNvbmZpZy5wcmkKK1FNQUtFX1RBUkdFVF9NT0RVTEUgICAgID0gJHtYQlBTX0NS T1NTX0JBU0V9L3Vzci9saWIvcXQ1L21rc3BlY3MvcW1vZHVsZS5wcmkKK1FNQUtFX0NDICAgICAg ICAgICAgICAgID0gJHtDQ19ob3N0fQorUU1BS0VfQ1hYICAgICAgICAgICAgICAgPSAke0NYWF9o b3N0fQorUU1BS0VfTElOSyAgICAgICAgICAgICAgPSAke0NYWF9ob3N0fQorUU1BS0VfTElOS19D ICAgICAgICAgICAgPSAke0NDX2hvc3R9CitRTUFLRV9MSU5LX1NITElCICAgICAgICA9ICR7Q1hY X2hvc3R9CisKK1FNQUtFX0FSICAgICAgICAgICAgICAgID0gZ2NjLWFyIGNxcworUU1BS0VfT0JK Q09QWSAgICAgICAgICAgPSAke09CSkNPUFlfaG9zdH0KK1FNQUtFX05NICAgICAgICAgICAgICAg ID0gJHtOTV9ob3N0fSAtUAorUU1BS0VfU1RSSVAgICAgICAgICAgICAgPSAke1NUUklQX2hvc3R9 CisKK1FNQUtFX0NGTEFHUyAgICAgICAgICAgID0gJHtDRkxBR1NfaG9zdH0KK1FNQUtFX0NYWEZM QUdTICAgICAgICAgID0gJHtDWFhGTEFHU19ob3N0fQorUU1BS0VfTEZMQUdTICAgICAgICAgICAg PSAke0xERkxBR1NfaG9zdH0KK2xvYWQocXRfY29uZmlnKQorX0VPRgorZWNobyAnI2luY2x1ZGUg Ii91c3IvbGliL3F0NS9ta3NwZWNzL2xpbnV4LWcrKy9xcGxhdGZvcm1kZWZzLmgiJyA+ICIke3dy a3NyY30vLmhvc3Qtc3BlYy9saW51eC1nKysvcXBsYXRmb3JtZGVmcy5oIgogCQljYXQgPiAiJHt3 cmtzcmN9L3F0LmNvbmYiIDw8X0VPRgogW1BhdGhzXQogU3lzcm9vdD0ke1hCUFNfQ1JPU1NfQkFT RX0KLVByZWZpeD0ke1hCUFNfQ1JPU1NfQkFTRX0vdXNyCitQcmVmaXg9L3VzcgogQXJjaERhdGE9 JHtYQlBTX0NST1NTX0JBU0V9L3Vzci9saWIvcXQ1CiBEYXRhPSR7WEJQU19DUk9TU19CQVNFfS91 c3Ivc2hhcmUvcXQ1CiBEb2N1bWVudGF0aW9uPSR7WEJQU19DUk9TU19CQVNFfS91c3Ivc2hhcmUv ZG9jL3F0NQpAQCAtMzgsMTggKzEwNCwyOCBAQCBIb3N0UHJlZml4PS91c3IKIEhvc3REYXRhPS91 c3IvbGliL3F0NQogSG9zdEJpbmFyaWVzPS91c3IvbGliL3F0NS9iaW4KIEhvc3RMaWJyYXJpZXM9 L3Vzci9saWIKLVNwZWM9bGludXgtZysrCi1UYXJnZXRTcGVjPWxpbnV4LWcrKworU3BlYz0ke3dy a3NyY30vLmhvc3Qtc3BlYy9saW51eC1nKysKK1RhcmdldFNwZWM9JHt3cmtzcmN9Ly50YXJnZXQt c3BlYy9saW51eC1nKysKIF9FT0YKLQkJcW1ha2VfYXJncz0iLXF0Y29uZiAke3dya3NyY30vcXQu Y29uZiIKKwkJcW1ha2VfYXJncz0iLXF0Y29uZiAke3dya3NyY30vcXQuY29uZiBQS0dfQ09ORklH X0VYRUNVVEFCTEU9JHtYQlBTX1dSQVBQRVJESVJ9L3BrZy1jb25maWciCisJCSR7cW1ha2V9ICR7 cW1ha2VfYXJnc30gXAorCQkJUFJFRklYPS91c3IgXAorCQkJUVRfSU5TVEFMTF9QUkVGSVg9L3Vz ciBcCisJCQlMSUI9L3Vzci9saWIgXAorCQkJUVRfVEFSR0VUX0FSQ0g9JF9xdF9hcmNoIFwKKwkJ CSR7Y29uZmlndXJlX2FyZ3N9CisJZWxzZQorCQkke3FtYWtlfSAke3FtYWtlX2FyZ3N9IFwKKwkJ CVBSRUZJWD0vdXNyIFwKKwkJCVFUX0lOU1RBTExfUFJFRklYPS91c3IgXAorCQkJTElCPS91c3Iv bGliIFwKKwkJCVFNQUtFX0NDPSRDQyBRTUFLRV9DWFg9JENYWCBcCisJCQlRTUFLRV9MSU5LPSRD WFggUU1BS0VfTElOS19DPSRDQyBcCisJCQlRTUFLRV9DRkxBR1M9IiR7Q0ZMQUdTfSIgXAorCQkJ UU1BS0VfQ1hYRkxBR1M9IiR7Q1hYRkxBR1N9IiBcCisJCQlRTUFLRV9MRkxBR1M9IiR7TERGTEFH U30iIFwKKwkJCSR7Y29uZmlndXJlX2FyZ3N9CiAJZmkKLQkke3FtYWtlfSAke3FtYWtlX2FyZ3N9 ICR7Y29uZmlndXJlX2FyZ3N9IFwKLQkJUFJFRklYPS91c3IgXAotCQlMSUI9L3Vzci9saWIgXAot CQlRTUFLRV9DQz0kQ0MgUU1BS0VfQ1hYPSRDWFggUU1BS0VfTElOSz0kQ1hYIFFNQUtFX0xJTktf Qz0kQ0MgXAotCQlRTUFLRV9DRkxBR1M9IiR7Q0ZMQUdTfSIgXAotCQlRTUFLRV9DWFhGTEFHUz0i JHtDWFhGTEFHU30iIFwKLQkJUU1BS0VfTEZMQUdTPSIke0xERkxBR1N9IgogfQogCiBkb19idWls ZCgpIHsKCkZyb20gYzRiNDNlYTgyZDVhYjk1ZGYwYmQ5ZmRmNjQwMTgwM2VkZTVjOGRlYSBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSm9obiA8am9obnpAcG9zdGVvLm5ldD4KRGF0ZTog RnJpLCAxMSBPY3QgMjAxOSAwMToxNTo0OCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDUvMTddIHRl bGVncmFtLWRlc2t0b3A6IHJlYnVpbGQgZm9yIHF0NS4xNC4yCgpbY2kgc2tpcF0KLS0tCiBzcmNw a2dzL3RlbGVncmFtLWRlc2t0b3AvdGVtcGxhdGUgfCA2ICsrKy0tLQogMSBmaWxlIGNoYW5nZWQs IDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3Rl bGVncmFtLWRlc2t0b3AvdGVtcGxhdGUgYi9zcmNwa2dzL3RlbGVncmFtLWRlc2t0b3AvdGVtcGxh dGUKaW5kZXggMDgyZDM1MjA4MjIuLjZmODU1ZWRjZGMxIDEwMDY0NAotLS0gYS9zcmNwa2dzL3Rl bGVncmFtLWRlc2t0b3AvdGVtcGxhdGUKKysrIGIvc3JjcGtncy90ZWxlZ3JhbS1kZXNrdG9wL3Rl bXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAndGVsZWdyYW0tZGVz a3RvcCcKIHBrZ25hbWU9dGVsZWdyYW0tZGVza3RvcAogdmVyc2lvbj0yLjAuMQotcmV2aXNpb249 MQorcmV2aXNpb249Mgogd3Jrc3JjPSJ0ZGVza3RvcC0ke3ZlcnNpb259LWZ1bGwiCiBidWlsZF9z dHlsZT1jbWFrZQogYnVpbGRfaGVscGVyPSJxZW11IgpAQCAtMjEsNyArMjEsNyBAQCBtYWtlZGVw ZW5kcz0iYWxzYS1saWItZGV2ZWwgZmZtcGVnLWRldmVsIGxpYmRidXNtZW51LWdsaWItZGV2ZWwg bGlib3BlbmFsLWRldmVsCiAgbWluaXppcC1kZXZlbCBvcHVzLWRldmVsIHh4SGFzaC1kZXZlbCBw dWxzZWF1ZGlvLWRldmVsIHF0NS1kZXZlbCByYW5nZS12MwogIGxpYnZhLWRldmVsIHJhcGlkanNv biBsaWJsejQtZGV2ZWwgbGlibHptYS1kZXZlbCBybG90dGllLWRldmVsCiAgTWVzYUxpYi1kZXZl bCBsaWJkYnVzbWVudS1xdDUtZGV2ZWwgJCh2b3B0X2lmIHNwZWxsY2hlY2sgaHVuc3BlbGwtZGV2 ZWwpIgotZGVwZW5kcz0icXQ1LWltYWdlZm9ybWF0cyBxdDU+PTUuMTMuMjw1LjEzLjMiCitkZXBl bmRzPSJxdDUtaW1hZ2Vmb3JtYXRzIHF0NS1jb3JlPj01LjE0LjI8NS4xNC4zIgogc2hvcnRfZGVz Yz0iVGVsZWdyYW0gRGVza3RvcCBtZXNzYWdpbmcgYXBwIgogbWFpbnRhaW5lcj0iSm9obiA8am9o bnpAcG9zdGVvLm5ldD4iCiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyIFdJVEggT3BlblNTTCIK QEAgLTUyLDcgKzUyLDcgQEAgZmkKIHBvc3RfZXh0cmFjdCgpIHsKIAlfcXQ1X2RlcF92ZXI9IiR7 ZGVwZW5kcyMqPj19IgogCV9xdDVfZGVwX3Zlcj0iJHtfcXQ1X2RlcF92ZXIlPCp9IgotCV9xdDVf dmVyc2lvbj0iJCh4YnBzLXVoZWxwZXIgdmVyc2lvbiBxdDUpIgorCV9xdDVfdmVyc2lvbj0iJCh4 YnBzLXVoZWxwZXIgdmVyc2lvbiBxdDUtY29yZSkiCiAKIAlpZiBbWyAiJHtfcXQ1X3ZlcnNpb24l Xyp9IiAhPSAiJHtfcXQ1X2RlcF92ZXJ9IiBdXTsgdGhlbgogCQllY2hvCgpGcm9tIDM2ZWJhZTFl NTcyNjc3ZjdkYTQ3NjUyMjQ3YTQyN2Y3OGUyN2MxNTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IEpvaG4gPGpvaG56QHBvc3Rlby5uZXQ+CkRhdGU6IE1vbiwgMTggTm92IDIwMTkgMDM6 MDU6MjggKzAxMDAKU3ViamVjdDogW1BBVENIIDA2LzE3XSBxdDUtc3R5bGVwbHVnaW5zOiByZWJ1 aWxkIGFnYWluc3QgcXQ1LjE0CgotLS0KIHNyY3BrZ3MvcXQ1LXN0eWxlcGx1Z2lucy90ZW1wbGF0 ZSB8IDYgKysrLS0tCiAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXN0eWxlcGx1Z2lucy90ZW1wbGF0ZSBiL3Ny Y3BrZ3MvcXQ1LXN0eWxlcGx1Z2lucy90ZW1wbGF0ZQppbmRleCBmNmM1MTFjYWQ0Yy4uZmRiMGQ3 NGVjODYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1LXN0eWxlcGx1Z2lucy90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL3F0NS1zdHlsZXBsdWdpbnMvdGVtcGxhdGUKQEAgLTEsMTMgKzEsMTMgQEAKICMg VGVtcGxhdGUgZmlsZSBmb3IgJ3F0NS1zdHlsZXBsdWdpbnMnCiBwa2duYW1lPXF0NS1zdHlsZXBs dWdpbnMKIHZlcnNpb249NS4wLjAKLXJldmlzaW9uPTExCityZXZpc2lvbj0xMgogX2dpdHJldj0z MzVkYmVjZTEwM2UyY2JmNmM3Y2Y4MTlhYjY2NzJjMjk1NmIxN2IzCiB3cmtzcmM9InF0c3R5bGVw bHVnaW5zLSR7X2dpdHJldn0iCiBidWlsZF9zdHlsZT1xbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJw a2ctY29uZmlnIHF0NS1ob3N0LXRvb2xzIHF0NS1kZXZlbCIKIG1ha2VkZXBlbmRzPSJsaWJ4Y2It ZGV2ZWwgbGlieGtiY29tbW9uLWRldmVsIGxpYmlucHV0LWRldmVsIHRzbGliLWRldmVsIGd0ayst ZGV2ZWwgcXQ1LWRldmVsIgotZGVwZW5kcz0icXQ1Pj01LjEzLjI8NS4xMy4zIgorZGVwZW5kcz0i cXQ1LWNvcmU+PTUuMTQuMjw1LjE0LjMiCiBzaG9ydF9kZXNjPSJBZGRpdGlvbmFsIHN0eWxlIHBs dWdpbnMgZm9yIFF0NSIKIG1haW50YWluZXI9IkrDvHJnZW4gQnVjaG3DvGxsZXIgPHB1bGxtb2xs QHQtb25saW5lLmRlPiIKIGxpY2Vuc2U9IkxHUEwtMi4xLW9ubHksIExHUEwtMy4wLW9ubHkiCkBA IC0yMSw3ICsyMSw3IEBAIExERkxBR1M9Ii1XbCwtZnVzZS1sZD1iZmQiCiBwcmVfY29uZmlndXJl KCkgewogCV9xdDVfZGVwX3Zlcj0iJHtkZXBlbmRzIyo+PX0iCiAJX3F0NV9kZXBfdmVyPSIke19x dDVfZGVwX3ZlciU8Kn0iCi0JX3F0NV92ZXJzaW9uPSIkKHhicHMtdWhlbHBlciB2ZXJzaW9uIHF0 NSkiCisJX3F0NV92ZXJzaW9uPSIkKHhicHMtdWhlbHBlciB2ZXJzaW9uIHF0NS1jb3JlKSIKIAog CWlmIFtbICIke19xdDVfdmVyc2lvbiVfKn0iICE9ICIke19xdDVfZGVwX3Zlcn0iIF1dOyB0aGVu CiAJCWVjaG8KCkZyb20gNWNiMWU3N2E4NmQ5NjFlMWVhYWQ5MTE4NjBjYmZiMjRhNjNmYzlmMiBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSm9obiA8am9obnpAcG9zdGVvLm5ldD4KRGF0 ZTogTW9uLCAxOCBOb3YgMjAxOSAwMzoyNzozMSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMDcvMTdd IHF0NWR4Y2ItcGx1Z2luOiByZWJ1aWxkIGFnYWluc3QgcXQ1LjE0CgpbY2kgc2tpcF0KLS0tCiBz cmNwa2dzL3F0NWR4Y2ItcGx1Z2luL3RlbXBsYXRlIHwgMTUgKysrKystLS0tLS0tLS0tCiAxIGZp bGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9zcmNwa2dzL3F0NWR4Y2ItcGx1Z2luL3RlbXBsYXRlIGIvc3JjcGtncy9xdDVkeGNiLXBsdWdp bi90ZW1wbGF0ZQppbmRleCBiNTQwOGVkODlmYi4uYTI5NGIwMTMwOWEgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvcXQ1ZHhjYi1wbHVnaW4vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xdDVkeGNiLXBsdWdp bi90ZW1wbGF0ZQpAQCAtMSwxNCArMSwxNCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncXQ1ZHhj Yi1wbHVnaW4nCiBwa2duYW1lPXF0NWR4Y2ItcGx1Z2luCiB2ZXJzaW9uPTUuMC4xCi1yZXZpc2lv bj0zCityZXZpc2lvbj00CiBidWlsZF9zdHlsZT1xbWFrZQogbWFrZV9idWlsZF9hcmdzPSJWRVJT SU9OPSR7dmVyc2lvbn0iCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcXQ1LXFtYWtlIgog bWFrZWRlcGVuZHM9ImNhaXJvLWRldmVsIGxpYlNNLWRldmVsIGxpYlhpLWRldmVsIGxpYnhrYmNv bW1vbi1kZXZlbAogIHF0NS14MTFleHRyYXMtZGV2ZWwgeGNiLXV0aWwtaW1hZ2UtZGV2ZWwgeGNi LXV0aWwta2V5c3ltcy1kZXZlbAotIHhjYi11dGlsLXJlbmRlcnV0aWwtZGV2ZWwgeGNiLXV0aWwt d20tZGV2ZWwiCi1kZXBlbmRzPSJxdDU+PTUuMTMuMjw1LjEzLjMiCisgeGNiLXV0aWwtcmVuZGVy dXRpbC1kZXZlbCB4Y2ItdXRpbC13bS1kZXZlbCBxdDUteGNiLXByaXZhdGUtaGVhZGVycyIKK2Rl cGVuZHM9InF0NS1jb3JlPj01LjE0LjI8NS4xNC4zIgogc2hvcnRfZGVzYz0iUXQgcGxhdGZvcm0g cGx1Z2lucyBmb3IgRERFIgogbWFpbnRhaW5lcj0iSm9obiA8am9obnpAcG9zdGVvLm5ldD4iCiBs aWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyIgpAQCAtMTYsMTIgKzE2LDExIEBAIGhvbWVwYWdlPSJo dHRwczovL2dpdGh1Yi5jb20vbGludXhkZWVwaW4vcXQ1ZHhjYi1wbHVnaW4vIgogY2hhbmdlbG9n PSJodHRwczovL2dpdGh1Yi5jb20vbGludXhkZWVwaW4vcXQ1ZHhjYi1wbHVnaW4vYmxvYi9tYXN0 ZXIvQ0hBTkdFTE9HLm1kIgogZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20vbGludXhkZWVw aW4vcXQ1ZHhjYi1wbHVnaW4vYXJjaGl2ZS8ke3ZlcnNpb259LnRhci5neiIKIGNoZWNrc3VtPWIx OTI1M2Y5ZjU3N2IyYTlkODY3NzRiYTk1ZDI1MjMxOGYzZDY5MmFiOTJkMmU2MmZiZjA1NzhkNTZk YjQ1M2QKLXBhdGNoX2FyZ3M9Ii1OcDEiCiAKIHByZV9jb25maWd1cmUoKSB7CiAJX3F0NV9kZXBf dmVyPSIke2RlcGVuZHMjKj49fSIKIAlfcXQ1X2RlcF92ZXI9IiR7X3F0NV9kZXBfdmVyJTwqfSIK LQlfcXQ1X3ZlcnNpb249IiQoeGJwcy11aGVscGVyIHZlcnNpb24gcXQ1KSIKKwlfcXQ1X3ZlcnNp b249IiQoeGJwcy11aGVscGVyIHZlcnNpb24gcXQ1LWNvcmUpIgogCiAJaWYgW1sgIiR7X3F0NV92 ZXJzaW9uJV8qfSIgIT0gIiR7X3F0NV9kZXBfdmVyfSIgXV07IHRoZW4KIAkJZWNobwpAQCAtMjks MTEgKzI4LDcgQEAgcHJlX2NvbmZpZ3VyZSgpIHsKIAkJbXNnX3JlZCAiJHtfcXQ1X3ZlcnNpb24l Xyp9IGRvZXMgbm90IG1hdGNoICR7X3F0NV9kZXBfdmVyfVxcbiIKIAkJZXhpdCAxCiAJZmkKLQot CSMgbm8gaGVhZGVycyBmb3IgNS4xMy4xIHlldDsgNS4xMy4wIGhlYWRlcnMgYXJlIHRoZSBzYW1l IGZvciB0aGlzCi0JIyByZW1vdmUgb24gbmV4dCB2ZXJzaW9uIHVwZ3JhZGUgKGFmdGVyIHVwc3Ry ZWFtIGhhcyBhZGRlZCB0aGVtKQotCWxuIC1zICR7d3Jrc3JjfS9wbGF0Zm9ybXBsdWdpbi9saWJx dDV4Y2JxcGEtZGV2LzUuMTMuMCBcCi0JCSR7d3Jrc3JjfS9wbGF0Zm9ybXBsdWdpbi9saWJxdDV4 Y2JxcGEtZGV2LzUuMTMuMgorCXNlZCAtaSAic3xlcnJvcihOb3Qgc3VwcG9ydCBRdCBWZXJzaW9u OiAuKil8SU5DTFVERVBBVEggKz0gJHtYQlBTX0NST1NTX0JBU0V9L3Vzci9pbmNsdWRlL3F0NXhj Yi1wcml2YXRlfCIgcGxhdGZvcm1wbHVnaW4vbGludXgucHJpCiB9CiAKIGlmIFsgIiRDUk9TU19C VUlMRCIgXTsgdGhlbgoKRnJvbSBjYTE4NTdiMjZjYzMzNjA2NGFiNzE3MTVmM2FmZTgyZGNmYjdl YzFhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKb2huIDxqb2huekBwb3N0ZW8ubmV0 PgpEYXRlOiBUaHUsIDUgRGVjIDIwMTkgMDg6NDI6NDEgKzAxMDAKU3ViamVjdDogW1BBVENIIDA4 LzE3XSBrd2luOiByZWJ1aWxkIGFnYWluc3QgcXQ1LjE0LjIKCltjaSBza2lwXQotLS0KIHNyY3Br Z3Mva3dpbi90ZW1wbGF0ZSB8IDYgKysrLS0tCiAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25z KCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mva3dpbi90ZW1wbGF0ZSBi L3NyY3BrZ3Mva3dpbi90ZW1wbGF0ZQppbmRleCAxZDkwMWE5MzNiZS4uNmQ2NjM2YTgxNDUgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3Mva3dpbi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2t3aW4vdGVtcGxh dGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdrd2luJwogcGtnbmFtZT1r d2luCiB2ZXJzaW9uPTUuMTguNC4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHls ZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EQlVJTERfVEVTVElORz1PRkYiCiBob3N0bWFrZWRl cGVuZHM9ImV4dHJhLWNtYWtlLW1vZHVsZXMgZ2V0dGV4dCBicmVlemUgcGtnLWNvbmZpZyIKQEAg LTksNyArOSw3IEBAIG1ha2VkZXBlbmRzPSJwbGFzbWEtZnJhbWV3b3JrLWRldmVsIGtjbXV0aWxz LWRldmVsIGtuZXdzdHVmZi1kZXZlbAogIGtzY3JlZW5sb2NrZXItZGV2ZWwga2luaXQtZGV2ZWwg eGNiLXV0aWwtY3Vyc29yLWRldmVsIHF0NS1tdWx0aW1lZGlhLWRldmVsCiAga2RlY29yYXRpb24t ZGV2ZWwgbGlieGtiY29tbW9uLWRldmVsIGxpYmlucHV0LWRldmVsIGxpYlNNLWRldmVsCiAgbGli SUNFLWRldmVsIHhjYi11dGlsLXdtLWRldmVsIHF0NS1zZW5zb3JzLWRldmVsIGxpYmNhcC1kZXZl bCIKLWRlcGVuZHM9ImJyZWV6ZSBoaWNvbG9yLWljb24tdGhlbWUga2luaXQgcXQ1Pj01LjEzLjI8 NS4xMy4zIgorZGVwZW5kcz0iYnJlZXplIGhpY29sb3ItaWNvbi10aGVtZSBraW5pdCBxdDUtY29y ZT49NS4xNC4yPDUuMTQuMyIKIHNob3J0X2Rlc2M9IktERSBXaW5kb3cgbWFuYWdlciIKIG1haW50 YWluZXI9IkpvaG4gPGpvaG56QHBvc3Rlby5uZXQ+IgogbGljZW5zZT0iR1BMLTIuMC1vci1sYXRl ciIKQEAgLTI5LDcgKzI5LDcgQEAgZmkKIHBvc3RfZXh0cmFjdCgpIHsKIAlfcXQ1X2RlcF92ZXI9 IiR7ZGVwZW5kcyMqPj19IgogCV9xdDVfZGVwX3Zlcj0iJHtfcXQ1X2RlcF92ZXIlPCp9IgotCV9x dDVfdmVyc2lvbj0iJCh4YnBzLXVoZWxwZXIgdmVyc2lvbiBxdDUpIgorCV9xdDVfdmVyc2lvbj0i JCh4YnBzLXVoZWxwZXIgdmVyc2lvbiBxdDUtY29yZSkiCiAKIAlpZiBbWyAiJHtfcXQ1X3ZlcnNp b24lXyp9IiAhPSAiJHtfcXQ1X2RlcF92ZXJ9IiBdXTsgdGhlbgogCQllY2hvCgpGcm9tIGU1MzYx ODMyMDhkZjdiYzYzMjBiODUxNzI3NzNkZGE3NTAyYmMyNmUgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IEpvaG4gPGpvaG56QHBvc3Rlby5uZXQ+CkRhdGU6IFNhdCwgMTQgRGVjIDIwMTkg MTU6MTM6MzUgKzAxMDAKU3ViamVjdDogW1BBVENIIDA5LzE3XSBxdDUtd2Via2l0OiByZWJ1aWxk IGFnYWluc3QgcXQ1LjE0CgpbY2kgc2tpcF0KLS0tCiBzcmNwa2dzL3F0NS13ZWJraXQvcGF0Y2hl cy9xdDUuMTQucGF0Y2ggICAgICB8IDkzICsrKysrKysrKysrKysrKysrKysrCiBzcmNwa2dzL3F0 NS13ZWJraXQvcGF0Y2hlcy9xdDUuMTQucGF0Y2guYXJncyB8ICAxICsKIHNyY3BrZ3MvcXQ1LXdl YmtpdC90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIDMgZmlsZXMgY2hhbmdlZCwg OTUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvcXQ1LXdlYmtpdC9wYXRjaGVzL3F0NS4xNC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Y3BrZ3MvcXQ1LXdlYmtpdC9wYXRjaGVzL3F0NS4xNC5wYXRjaC5hcmdzCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9xdDUtd2Via2l0L3BhdGNoZXMvcXQ1LjE0LnBhdGNoIGIvc3JjcGtncy9xdDUtd2Vi a2l0L3BhdGNoZXMvcXQ1LjE0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi43OTlkNTNmMWY1NQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1LXdlYmtp dC9wYXRjaGVzL3F0NS4xNC5wYXRjaApAQCAtMCwwICsxLDkzIEBACitGcm9tIGMzNDQxODdhMDk5 ZjhmZDc0OWRjODRmZmNjMTI1YzA5MjUxMDM4MTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitG cm9tOiBLb25zdGFudGluIFRva2FyZXYgPGFubnVsZW5AeWFuZGV4LnJ1PgorRGF0ZTogVHVlLCAx MCBTZXAgMjAxOSAwMzo1MTo0MiArMDMwMAorU3ViamVjdDogRml4IGNvbXBpbGF0aW9uIG9mIEhU VFAyIHNldHRpbmdzIHdpdGggUXQgPj0gNS4xNAorCitQdWJsaWMgQVBJIFFIdHRwMkNvbmZpZ3Vy YXRpb24gd2FzIGFkZGVkLCBzbyB3ZSB1c2UgaXQgbm93IGluc3RlYWQgb2YKK3VnbHkgaGFjayBy ZXF1aXJlZCBmb3IgcHJldmlvdXMgdmVyc2lvbnMuIFdvcmthcm91bmQgZm9yIFFUQlVHLTc3MzA4 IGlzCitubyBsb2dlciBuZWVkZWQgaW4gNS4xNCwgc28gd2Ugb25seSBlbmFibGUgc2VydmVyIHB1 c2guCisKK0NoYW5nZS1JZDogSTNlNjgxN2Q4ZmEyNzRjM2E4NDlmMDliMjNjYTU4ZjkzMzE4YmU2 YzQKKy0tLQorIC4uLi9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcCAgICAgICB8 ICA2ICsrKy0tLQorIC4uLi9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVxdWVzdFF0LmNw cCB8IDIwICsrKysrKysrKysrKysrKysrKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIyIGluc2VydGlv bnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0 Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl L3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwCitpbmRleCAwZGE0 NWZiYzc5YTUuLjc5MjQ1OTU1ODJhYyAxMDA2NDQKKy0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm b3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwCisrKysgYi9Tb3VyY2UvV2Vi Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcAorQEAgLTQx LDcgKzQxLDcgQEAKKyAKKyAjaW5jbHVkZSA8UUNvcmVBcHBsaWNhdGlvbj4KKyAKKy0jaWYgVVNF KEhUVFAyKQorKyNpZiBVU0UoSFRUUDIpICYmIFFUX1ZFUlNJT04gPCBRVF9WRVJTSU9OX0NIRUNL KDUsIDE0LCAwKQorIAorICNpbmNsdWRlIDxwcml2YXRlL2h0dHAycHJvdG9jb2xfcC5oPgorICNp bmNsdWRlIDxjc3RkbGliPgorQEAgLTYyLDcgKzYyLDcgQEAgUHJvdG9jb2xQYXJhbWV0ZXJzOjpQ cm90b2NvbFBhcmFtZXRlcnMoKQorIAorIFFUX0VORF9OQU1FU1BBQ0UKKyAKKy0jZW5kaWYgLy8g VVNFKEhUVFAyKQorKyNlbmRpZiAvLyBVU0UoSFRUUDIpICYmIFFUX1ZFUlNJT04gPCBRVF9WRVJT SU9OX0NIRUNLKDUsIDE0LCAwKQorIAorIHN0YXRpYyBjb25zdCBpbnQgZ01heFJlZGlyZWN0aW9u cyA9IDEwOworIAorQEAgLTc5Nyw3ICs3OTcsNyBAQCBRTmV0d29ya1JlcGx5KiBRTmV0d29ya1Jl cGx5SGFuZGxlcjo6c2VuZE5ldHdvcmtSZXF1ZXN0KFFOZXR3b3JrQWNjZXNzTWFuYWdlciogbQor ICAgICBpZiAoIW1hbmFnZXIpCisgICAgICAgICByZXR1cm4gMDsKKyAKKy0jaWYgVVNFKEhUVFAy KQorKyNpZiBVU0UoSFRUUDIpICYmIFFUX1ZFUlNJT04gPCBRVF9WRVJTSU9OX0NIRUNLKDUsIDE0 LCAwKQorICAgICBzdGF0aWMgY29uc3QgYm9vbCBhbHBuSXNTdXBwb3J0ZWQgPSBSZXNvdXJjZVJl cXVlc3Q6OmFscG5Jc1N1cHBvcnRlZCgpOworICAgICBpZiAoYWxwbklzU3VwcG9ydGVkICYmICFt YW5hZ2VyLT5wcm9wZXJ0eShIdHRwMjo6aHR0cDJQYXJhbWV0ZXJzUHJvcGVydHlOYW1lKS5pc1Zh bGlkKCkpIHsKKyAgICAgICAgIEh0dHAyOjpQcm90b2NvbFBhcmFtZXRlcnMgcGFyYW1zOworZGlm ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1 ZXN0UXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZVJl cXVlc3RRdC5jcHAKK2luZGV4IDJjZjJlNzc1MGRkZS4uMzEwNzM4NDQ5Yjc1IDEwMDY0NAorLS0t IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZVJlcXVlc3RRdC5j cHAKKysrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1 ZXN0UXQuY3BwCitAQCAtMjksNyArMjksMTAgQEAKKyAKKyAjaWYgVVNFKEhUVFAyKQorICNpbmNs dWRlIDxRU3NsU29ja2V0PgorKyNpZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNSwg MTQsIDApCisrI2luY2x1ZGUgPFFIdHRwMkNvbmZpZ3VyYXRpb24+CisgI2VuZGlmCisrI2VuZGlm IC8vIFVTRShIVFRQMikKKyAKKyBuYW1lc3BhY2UgV2ViQ29yZSB7CisgCitAQCAtNjUsNiArNjgs MTYgQEAgYm9vbCBSZXNvdXJjZVJlcXVlc3Q6OmFscG5Jc1N1cHBvcnRlZCgpCisgICAgIHJldHVy biBRU3NsU29ja2V0Ojpzc2xMaWJyYXJ5VmVyc2lvbk51bWJlcigpID4gMHgxMDAwMjAwMEwgJiYK KyAgICAgICAgIFFTc2xTb2NrZXQ6OnNzbExpYnJhcnlWZXJzaW9uU3RyaW5nKCkuc3RhcnRzV2l0 aChRTGF0aW4xU3RyaW5nKCJPcGVuU1NMIikpOworIH0KKysKKysjaWYgUVRfVkVSU0lPTiA+PSBR VF9WRVJTSU9OX0NIRUNLKDUsIDE0LCAwKQorK3N0YXRpYyBRSHR0cDJDb25maWd1cmF0aW9uIGNy ZWF0ZUh0dHAyQ29uZmlndXJhdGlvbigpCisreworKyAgICBRSHR0cDJDb25maWd1cmF0aW9uIHBh cmFtczsKKysgICAgcGFyYW1zLnNldFNlcnZlclB1c2hFbmFibGVkKHRydWUpOworKyAgICByZXR1 cm4gcGFyYW1zOworK30KKysjZW5kaWYKKysKKyAjZW5kaWYKKyAKKyBRTmV0d29ya1JlcXVlc3Qg UmVzb3VyY2VSZXF1ZXN0Ojp0b05ldHdvcmtSZXF1ZXN0KE5ldHdvcmtpbmdDb250ZXh0ICpjb250 ZXh0KSBjb25zdAorQEAgLTc2LDggKzg5LDEzIEBAIFFOZXR3b3JrUmVxdWVzdCBSZXNvdXJjZVJl cXVlc3Q6OnRvTmV0d29ya1JlcXVlc3QoTmV0d29ya2luZ0NvbnRleHQgKmNvbnRleHQpIGNvCisg CisgI2lmIFVTRShIVFRQMikKKyAgICAgc3RhdGljIGNvbnN0IGJvb2wgTmVnb3RpYXRlSHR0cDJG b3JIdHRwcyA9IGFscG5Jc1N1cHBvcnRlZCgpOworLSAgICBpZiAob3JpZ2luYWxVcmwucHJvdG9j b2xJcygiaHR0cHMiKSAmJiBOZWdvdGlhdGVIdHRwMkZvckh0dHBzKQorKyAgICBpZiAob3JpZ2lu YWxVcmwucHJvdG9jb2xJcygiaHR0cHMiKSAmJiBOZWdvdGlhdGVIdHRwMkZvckh0dHBzKSB7Cisr I2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg1LCAxNCwgMCkKKysgICAgICAgIHN0 YXRpYyBjb25zdCBhdXRvIHBhcmFtcyA9IGNyZWF0ZUh0dHAyQ29uZmlndXJhdGlvbigpOworKyAg ICAgICAgcmVxdWVzdC5zZXRIdHRwMkNvbmZpZ3VyYXRpb24ocGFyYW1zKTsKKysjZW5kaWYKKyAg ICAgICAgIHJlcXVlc3Quc2V0QXR0cmlidXRlKFFOZXR3b3JrUmVxdWVzdDo6SFRUUDJBbGxvd2Vk QXR0cmlidXRlLCB0cnVlKTsKKysgICAgfQorICNlbmRpZiAvLyBVU0UoSFRUUDIpCisgCisgICAg IGNvbnN0IEhUVFBIZWFkZXJNYXAgJmhlYWRlcnMgPSBodHRwSGVhZGVyRmllbGRzKCk7CmRpZmYg LS1naXQgYS9zcmNwa2dzL3F0NS13ZWJraXQvcGF0Y2hlcy9xdDUuMTQucGF0Y2guYXJncyBiL3Ny Y3BrZ3MvcXQ1LXdlYmtpdC9wYXRjaGVzL3F0NS4xNC5wYXRjaC5hcmdzCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yZWJhMWNiM2M1YwotLS0gL2Rldi9udWxsCisrKyBi L3NyY3BrZ3MvcXQ1LXdlYmtpdC9wYXRjaGVzL3F0NS4xNC5wYXRjaC5hcmdzCkBAIC0wLDAgKzEg QEAKKy1OcDEKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmtpdC90ZW1wbGF0ZSBiL3NyY3Br Z3MvcXQ1LXdlYmtpdC90ZW1wbGF0ZQppbmRleCBiZDc1MDQzM2Q1ZC4uMGVlYjRjYWE2MWUgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1LXdlYmtpdC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0NS13 ZWJraXQvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdxdDUt d2Via2l0JwogcGtnbmFtZT1xdDUtd2Via2l0CiB2ZXJzaW9uPTUuMjEyLjAKLXJldmlzaW9uPTYK K3JldmlzaW9uPTcKIF9zbmFwPTE1NjU4OTU0NjkKIF92PSR7dmVyc2lvbiUuKn0KIHdya3NyYz0i cXR3ZWJraXQtZXZlcnl3aGVyZS1zcmMtJHtfdn0iCgpGcm9tIGE1ODc4ZWJjMzRlYjE2NTY2NjYy YTJlOTJhZDRlNjI2ZTU5OTUwOWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEpvaG4g PGpvaG56QHBvc3Rlby5uZXQ+CkRhdGU6IFR1ZSwgMjggSmFuIDIwMjAgMDk6NDA6MjUgKzAxMDAK U3ViamVjdDogW1BBVENIIDEwLzE3XSBwbGFzbWEtaW50ZWdyYXRpb246IHJlYnVpbGQgZm9yIHF0 NS01LjE0LjIKCi0tLQogc3JjcGtncy9wbGFzbWEtaW50ZWdyYXRpb24vdGVtcGxhdGUgfCAyICst CiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL3BsYXNtYS1pbnRlZ3JhdGlvbi90ZW1wbGF0ZSBiL3NyY3BrZ3MvcGxhc21h LWludGVncmF0aW9uL3RlbXBsYXRlCmluZGV4IGQxOTk4ZjM5ZTQ3Li41ZDc2MTJkNzQ5NCAxMDA2 NDQKLS0tIGEvc3JjcGtncy9wbGFzbWEtaW50ZWdyYXRpb24vdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9wbGFzbWEtaW50ZWdyYXRpb24vdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdwbGFzbWEtaW50ZWdyYXRpb24nCiBwa2duYW1lPXBsYXNtYS1pbnRlZ3JhdGlv bgogdmVyc2lvbj01LjE4LjQuMQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9 Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItREJVSUxEX1RFU1RJTkc9T0ZGIgogaG9zdG1ha2VkZXBl bmRzPSJleHRyYS1jbWFrZS1tb2R1bGVzIHBrZy1jb25maWcgcXQ1LXFtYWtlIHF0NS1ob3N0LXRv b2xzCgpGcm9tIDllODMyYzRkYTgzZjI5Yjg3YzAyMmJlZWU1ZTUwYzQ2ZjRkOGU2MjkgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IEpvaG4gPGpvaG56QHBvc3Rlby5uZXQ+CkRhdGU6IEZy aSwgNyBGZWIgMjAyMCAxMDoyODoyNSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMTEvMTddIHF0NWlu dGVncmF0aW9uOiByZWJ1aWxkIGZvciBxdDUtNS4xNC4yCgotLS0KIHNyY3BrZ3MvcXQ1aW50ZWdy YXRpb24vcGF0Y2hlcy9xdDUuMTQucGF0Y2ggfCA0NiArKysrKysrKysrKysrKysrKysrKysKIHNy Y3BrZ3MvcXQ1aW50ZWdyYXRpb24vdGVtcGxhdGUgICAgICAgICAgICAgfCAgNiArLS0KIDIgZmls ZXMgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL3F0NWludGVncmF0aW9uL3BhdGNoZXMvcXQ1LjE0LnBhdGNoCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9xdDVpbnRlZ3JhdGlvbi9wYXRjaGVzL3F0NS4xNC5wYXRjaCBiL3Ny Y3BrZ3MvcXQ1aW50ZWdyYXRpb24vcGF0Y2hlcy9xdDUuMTQucGF0Y2gKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmFiZTkwYjc4YzljCi0tLSAvZGV2L251bGwKKysrIGIv c3JjcGtncy9xdDVpbnRlZ3JhdGlvbi9wYXRjaGVzL3F0NS4xNC5wYXRjaApAQCAtMCwwICsxLDQ2 IEBACitkaWZmIC0tZ2l0IGEvcGxhdGZvcm10aGVtZXBsdWdpbi9xZGVlcGludGhlbWUuY3BwIGIv cGxhdGZvcm10aGVtZXBsdWdpbi9xZGVlcGludGhlbWUuY3BwCitpbmRleCBlOTg0ODdiLi40NWU5 MGJjIDEwMDY0NAorLS0tIHBsYXRmb3JtdGhlbWVwbHVnaW4vcWRlZXBpbnRoZW1lLmNwcAorKysr IHBsYXRmb3JtdGhlbWVwbHVnaW4vcWRlZXBpbnRoZW1lLmNwcAorQEAgLTU3MSwxMCArNTcxLDE4 IEBAIHN0YXRpYyBib29sIHVwZGF0ZVNjcmVlblNjYWxlRmFjdG9ycyhEVGhlbWVTZXR0aW5ncyAq cywgY29uc3QgUUJ5dGVBcnJheSAmdmFsdWUsCisgICAgIH0KKyAKKyAgICAgUUhpZ2hEcGlTY2Fs aW5nOjp1cGRhdGVIaWdoRHBpU2NhbGluZygpOworKyNpZiBRVF9WRVJTSU9OIDwgUVRfVkVSU0lP Tl9DSEVDSyg1LDE0LDApCisgICAgIHFEZWJ1ZygpIDw8IFFIaWdoRHBpU2NhbGluZzo6bG9naWNh bERwaSgpOworKyNlbHNlCisrICAgIHFEZWJ1ZygpIDw8IFFIaWdoRHBpU2NhbGluZzo6bG9naWNh bERwaShRR3VpQXBwbGljYXRpb246OnByaW1hcnlTY3JlZW4oKSk7CisrI2VuZGlmCisgICAgIHVw ZGF0ZVNjYWxlTG9nY2FpbERwaShzLT5zY2FsZUxvZ2ljYWxEcGkoKSk7CisgCisrI2lmIFFUX1ZF UlNJT04gPCBRVF9WRVJTSU9OX0NIRUNLKDUsMTQsMCkKKyAgICAgcURlYnVnKCkgPDwgUUhpZ2hE cGlTY2FsaW5nOjpsb2dpY2FsRHBpKCk7CisrI2Vsc2UKKysgICAgcURlYnVnKCkgPDwgUUhpZ2hE cGlTY2FsaW5nOjpsb2dpY2FsRHBpKFFHdWlBcHBsaWNhdGlvbjo6cHJpbWFyeVNjcmVlbigpKTsK KysjZW5kaWYKKyAKKyAgICAgcmV0dXJuIHRydWU7CisgfQorLS0tIHBsYXRmb3JtdGhlbWVwbHVn aW4vcWRlZXBpbnRoZW1lLmNwcAkyMDE5LTEyLTE5IDE3OjQ1OjQ3LjM5Njg5NDA0NSArMDgwMAor KysrIHBsYXRmb3JtdGhlbWVwbHVnaW4vcWRlZXBpbnRoZW1lLmNwcAkyMDE5LTEyLTE5IDE3OjQ2 OjI4LjQzNjEzNjI0MyArMDgwMAorQEAgLTUxNiwxOSArNTE2LDcgQEAKKyBzdGF0aWMgYm9vbCB1 cGRhdGVTY2FsZUxvZ2NhaWxEcGkoY29uc3QgUVBhaXI8cXJlYWwsIHFyZWFsPiAmZHBpKQorIHsK KyAgICAgYm9vbCBvayA9IGRwaS5maXJzdCA+PSAwICYmIGRwaS5zZWNvbmQgPj0gMDsKKy0KKy0g ICAgaWYgKGRwaS5maXJzdCA+IDApIHsKKy0gICAgICAgIFFIaWdoRHBpU2NhbGluZzo6bV9sb2dp Y2FsRHBpLmZpcnN0ID0gZHBpLmZpcnN0OworLSAgICB9IGVsc2UgaWYgKHFJc051bGwoZHBpLmZp cnN0KSkgeworLSAgICAgICAgUUhpZ2hEcGlTY2FsaW5nOjptX2xvZ2ljYWxEcGkuZmlyc3QgPSBx R3VpQXBwLT5wcmltYXJ5U2NyZWVuKCktPmhhbmRsZSgpLT5sb2dpY2FsRHBpKCkuZmlyc3Q7Cist ICAgIH0KKy0KKy0gICAgaWYgKGRwaS5zZWNvbmQgPiAwKSB7CistICAgICAgICBRSGlnaERwaVNj YWxpbmc6Om1fbG9naWNhbERwaS5zZWNvbmQgPSBkcGkuc2Vjb25kOworLSAgICB9IGVsc2UgaWYg KHFJc051bGwoZHBpLnNlY29uZCkpIHsKKy0gICAgICAgIFFIaWdoRHBpU2NhbGluZzo6bV9sb2dp Y2FsRHBpLnNlY29uZCA9IHFHdWlBcHAtPnByaW1hcnlTY3JlZW4oKS0+aGFuZGxlKCktPmxvZ2lj YWxEcGkoKS5zZWNvbmQ7CistICAgIH0KKy0KKysgICAgUUhpZ2hEcGlTY2FsaW5nOjptX3VzZVBp eGVsRGVuc2l0eSA9IGZhbHNlOworICAgICByZXR1cm4gb2s7CisgfQorIApkaWZmIC0tZ2l0IGEv c3JjcGtncy9xdDVpbnRlZ3JhdGlvbi90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXQ1aW50ZWdyYXRpb24v dGVtcGxhdGUKaW5kZXggODdjZGI5MTE5MTUuLjMzNjZhMTVlMTVmIDEwMDY0NAotLS0gYS9zcmNw a2dzL3F0NWludGVncmF0aW9uL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXQ1aW50ZWdyYXRpb24v dGVtcGxhdGUKQEAgLTEsMTIgKzEsMTIgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3F0NWludGVn cmF0aW9uJwogcGtnbmFtZT1xdDVpbnRlZ3JhdGlvbgogdmVyc2lvbj01LjAuMAotcmV2aXNpb249 MworcmV2aXNpb249NAogYnVpbGRfc3R5bGU9cW1ha2UKIGhvc3RtYWtlZGVwZW5kcz0icXQ1LXFt YWtlIHBrZy1jb25maWciCiBtYWtlZGVwZW5kcz0ibGlicXR4ZGctZGV2ZWwgZHRrd20tZGV2ZWwg ZHRrd2lkZ2V0LWRldmVsIG10ZGV2LWRldmVsCiAgcXQ1LXN2Zy1kZXZlbCBxdDUteDExZXh0cmFz LWRldmVsIHF0NS1tdWx0aW1lZGlhLWRldmVsIgotZGVwZW5kcz0icXQ1ZHhjYi1wbHVnaW4gcXQ1 LXN0eWxlcGx1Z2lucyBxdDU+PTUuMTMuMjw1LjEzLjMiCitkZXBlbmRzPSJxdDVkeGNiLXBsdWdp biBxdDUtc3R5bGVwbHVnaW5zIHF0NS1jb3JlPj01LjE0LjI8NS4xNC4zIgogc2hvcnRfZGVzYz0i UXQgcGxhdGZvcm0gdGhlbWUgaW50ZWdyYXRpb24gcGx1Z2lucyBmb3IgRGVlcGluIERlc2t0b3Ag RW52aXJvbm1lbnQiCiBtYWludGFpbmVyPSJKb2huIDxqb2huekBwb3N0ZW8ubmV0PiIKIGxpY2Vu c2U9IkdQTC0zLjAtb3ItbGF0ZXIiCkBAIC0xOCw3ICsxOCw3IEBAIGNoZWNrc3VtPTU5ZWZmNzNl YTE2ZGVkMGE1NGZlOTFhMDgxNjhkNTNiOTZmNmU3ZmU5YTUzYjU5OWJhMzczNDZiMjgzZDZhN2MK IHByZV9jb25maWd1cmUoKSB7CiAJX3F0NV9kZXBfdmVyPSIke2RlcGVuZHMjKj49fSIKIAlfcXQ1 X2RlcF92ZXI9IiR7X3F0NV9kZXBfdmVyJTwqfSIKLQlfcXQ1X3ZlcnNpb249IiQoeGJwcy11aGVs cGVyIHZlcnNpb24gcXQ1KSIKKwlfcXQ1X3ZlcnNpb249IiQoeGJwcy11aGVscGVyIHZlcnNpb24g cXQ1LWNvcmUpIgogCiAJaWYgW1sgIiR7X3F0NV92ZXJzaW9uJV8qfSIgIT0gIiR7X3F0NV9kZXBf dmVyfSIgXV07IHRoZW4KIAkJZWNobwoKRnJvbSA4MDFjMmRiMzg4YjcyZTc0NDVhMTk2YmUyOWQ5 OWYyNzlmNTdiODNkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKb2huIDxqb2huekBw b3N0ZW8ubmV0PgpEYXRlOiBTYXQsIDggRmViIDIwMjAgMTc6NTA6MTggKzAxMDAKU3ViamVjdDog W1BBVENIIDEyLzE3XSBxdDUtZG9jOiB1cGRhdGUgdG8gNS4xNC4yLgoKW2NpIHNraXBdCi0tLQog c3JjcGtncy9xdDUtZG9jL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNl cnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LWRvYy90 ZW1wbGF0ZSBiL3NyY3BrZ3MvcXQ1LWRvYy90ZW1wbGF0ZQppbmRleCAyMmI5MmU5ZGUyNS4uNjQx OWNjMDc5NDcgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1LWRvYy90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL3F0NS1kb2MvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdxdDUtZG9jJwogcGtnbmFtZT1xdDUtZG9jCi12ZXJzaW9uPTUuMTMuMgordmVyc2lvbj01LjE0 LjIKIHJldmlzaW9uPTEKIHdya3NyYz0icXQtZXZlcnl3aGVyZS1zcmMtJHt2ZXJzaW9ufSIKIGhv c3RtYWtlZGVwZW5kcz0iY2xhbmcgcGVybCBwa2ctY29uZmlnIHF0NS1kZXZlbCBxdDUtcGx1Z2lu LXNxbGl0ZSBxdDUtdG9vbHMgd2hpY2giCkBAIC0xMSw3ICsxMSw3IEBAIHNob3J0X2Rlc2M9IkEg Y3Jvc3MtcGxhdGZvcm0gYXBwbGljYXRpb24gYW5kIFVJIGZyYW1ld29yayAoUVQ1KSAtIERvY3Vt ZW50YXRpb24iCiBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+Igog bGljZW5zZT0iR1BMLTMsIExHUEwtMi4xIgogZGlzdGZpbGVzPSJodHRwOi8vZG93bmxvYWQucXQu aW8vb2ZmaWNpYWxfcmVsZWFzZXMvcXQvJHt2ZXJzaW9uJS4qfS8ke3ZlcnNpb259L3NpbmdsZS9x dC1ldmVyeXdoZXJlLXNyYy0ke3ZlcnNpb259LnRhci54eiIKLWNoZWNrc3VtPTU1ZTgyNzM1MzZi ZTQxZjRmNjMwNjRhNzllNTUyYTIyMTMzODQ4YmI0MTk0MDBiNmZhOGU5ZmMwZGMwNWRlMDgKK2No ZWNrc3VtPWM2ZmNkNTNjNzQ0ZGY4OWU3ZDMyMjNjMDI4MzhhMzMzMDliZDFjMjkxZmNiNmY5MzQx NTA1ZmU5OWY3ZjE5ZmEKIAogcG9zdF9leHRyYWN0KCkgewogCXJtIC1yZiBxdHRvb2xzL3tiaW4s cGx1Z2luc30KCkZyb20gNjZmODYyYmNlZTY4ZjU4MzIwY2UwNjQ5MGM4MWEwZDA3MzJlZDU3MiBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSm9obiA8am9obnpAcG9zdGVvLm5ldD4KRGF0 ZTogU3VuLCA5IEZlYiAyMDIwIDIzOjU1OjA4ICswMTAwClN1YmplY3Q6IFtQQVRDSCAxMy8xN10g TmV3IHBhY2thZ2U6IHF0NS13ZWJ2aWV3LTUuMTQuMgoKW2NpIHNraXBdCi0tLQogc3JjcGtncy9x dDUtd2VidmlldyAgICAgICAgICB8ICAxIC0KIHNyY3BrZ3MvcXQ1LXdlYnZpZXctZGV2ZWwgICAg fCAgMiArLQogc3JjcGtncy9xdDUtd2Vidmlldy90ZW1wbGF0ZSB8IDU3ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA1OCBpbnNlcnRpb25zKCsp LCAyIGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvcXQ1LXdlYnZpZXcK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJ2aWV3L3RlbXBsYXRlCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9xdDUtd2VidmlldyBiL3NyY3BrZ3MvcXQ1LXdlYnZpZXcKZGVsZXRlZCBm aWxlIG1vZGUgMTIwMDAwCmluZGV4IDc1NzkzZWI2NjY0Li4wMDAwMDAwMDAwMAotLS0gYS9zcmNw a2dzL3F0NS13ZWJ2aWV3CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotcXQ1ClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2Vidmlldy1kZXZl bCBiL3NyY3BrZ3MvcXQ1LXdlYnZpZXctZGV2ZWwKaW5kZXggNzU3OTNlYjY2NjQuLjExNmQwMTY0 OTg0IDEyMDAwMAotLS0gYS9zcmNwa2dzL3F0NS13ZWJ2aWV3LWRldmVsCisrKyBiL3NyY3BrZ3Mv cXQ1LXdlYnZpZXctZGV2ZWwKQEAgLTEgKzEgQEAKLXF0NQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUKK3F0NS13ZWJ2aWV3ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9xdDUtd2Vidmlldy90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXQ1LXdlYnZpZXcvdGVt cGxhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjhlOTZhZWViYmU4 Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2Vidmlldy90ZW1wbGF0ZQpAQCAtMCww ICsxLDU3IEBACisjIFRlbXBsYXRlIGZpbGUgZm9yICdxdDUtd2VidmlldycKK3BrZ25hbWU9cXQ1 LXdlYnZpZXcKK3ZlcnNpb249NS4xNC4yCityZXZpc2lvbj0xCit3cmtzcmM9InF0d2Vidmlldy1l dmVyeXdoZXJlLXNyYy0ke3ZlcnNpb259IgorYnVpbGRfc3R5bGU9cW1ha2UKK2hvc3RtYWtlZGVw ZW5kcz0icXQ1LXFtYWtlIHBlcmwgcXQ1LWRlY2xhcmF0aXZlLWRldmVsIgorbWFrZWRlcGVuZHM9 InF0NS1sb2NhdGlvbi1kZXZlbCBxdDUtd2ViY2hhbm5lbC1kZXZlbCBxdDUtdG9vbHMtZGV2ZWwg cXQ1LWRlY2xhcmF0aXZlLWRldmVsCisgJCh2b3B0X2lmIHdlYmVuZ2luZSBxdDUtd2ViZW5naW5l LWRldmVsKSIKK3Nob3J0X2Rlc2M9IkNyb3NzLXBsYXRmb3JtIGFwcGxpY2F0aW9uIGFuZCBVSSBm cmFtZXdvcmsgKFFUNSkgLSBXZWJFbmdpbmUgY29tcG9uZW50IgorbWFpbnRhaW5lcj0iSm9obiA8 am9obnpAcG9zdGVvLm5ldD4iCitsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyLCBMR1BMLTMuMC1v ci1sYXRlciIKK2hvbWVwYWdlPSJodHRwczovL3F0LmlvLyIKK2Rpc3RmaWxlcz0iaHR0cDovL2Rv d25sb2FkLnF0LmlvL29mZmljaWFsX3JlbGVhc2VzL3F0LyR7dmVyc2lvbiUuKn0vJHt2ZXJzaW9u fS9zdWJtb2R1bGVzL3F0d2Vidmlldy1ldmVyeXdoZXJlLXNyYy0ke3ZlcnNpb259LnRhci54eiIK K2NoZWNrc3VtPWM2MWY5MjEzZWU4NGZkNzQwODg5OGMwMTk0NDY4MjA4ZmZiNTFhZjlkMjU3ZTg3 ZTZiNTNkYWYyNGY2NWZmNGIKKworYnVpbGRfb3B0aW9uPSJ3ZWJlbmdpbmUiCitpZiBbICIkWEJQ U19UQVJHRVRfRU5ESUFOIiA9ICJsZSIgXSAmJiBbICIkWEJQU19XT1JEU0laRSIgPSAiJFhCUFNf VEFSR0VUX1dPUkRTSVpFIiBdOyB0aGVuCisJYnVpbGRfb3B0aW9uX2RlZmF1bHQ9IndlYmVuZ2lu ZSIKK2ZpCisKK19jbGVhbnVwX3dya3NyY19sZWFrKCkgeworCWlmIFsgLWQgIiR7UEtHREVTVERJ Un0vdXNyL2xpYi9jbWFrZSIgXTsgdGhlbgorCQkjIFJlcGxhY2UgcmVmZXJlbmNlcyB0byAke3dy a3NyY30gaW4gY21ha2UgZmlsZXMKKwkJc2VkIC1pICR7UEtHREVTVERJUn0vdXNyL2xpYi9jbWFr ZS8qLyouY21ha2UgXAorCQkJLWUgInM7JHt3cmtzcmN9L2hvc3Q7L3Vzci9saWIvcXQ1O2ciIFwK KwkJCS1lICJzO2RldmljZXMvdm9pZC0ke1hCUFNfQ1JPU1NfVFJJUExFVH0tZysrO2xpbnV4LWcr KztnIgorCWZpCisJaWYgWyAtZCAiJHtQS0dERVNURElSfS91c3IvbGliL3BrZ2NvbmZpZyIgXTsg dGhlbgorCQkjIFJlcGxhY2UgcmVmZXJlbmNlcyB0byAke3dya3NyY30gaW4gcGtnY29uZmlnIGZp bGVzCisJCXNlZCAtaSAke1BLR0RFU1RESVJ9L3Vzci9saWIvcGtnY29uZmlnLyoucGMgXAorCQkJ LWUgInM7JHt3cmtzcmN9L2hvc3Q7L3Vzci9saWIvcXQ1O2ciIFwKKwkJCS1lICJzO2RldmljZXMv dm9pZC0ke1hCUFNfQ1JPU1NfVFJJUExFVH0tZysrO2xpbnV4LWcrKztnIgorCWZpCisJIyBSZW1v dmUgUU1BS0VfUFJMX0JVSUxEX0RJUiBmcm9tIGhpbnQgZmlsZXMgZm9yIHN0YXRpYyBsaWJyYXJp ZXMKKwkjIGFuZCByZXBsYWNlIHJlZmVyZW5jZXMgdG8gJHt3cmtzcmN9CisJZmluZCAke1BLR0RF U1RESVJ9IC1pbmFtZSAiKi5wcmwiIC1leGVjIHNlZCAtaSAie30iIFwKKwkJLWUgIi9eUU1BS0Vf UFJMX0JVSUxEX0RJUi9kIiBcCisJCS1lICJzOy1MJHt3cmtzcmN9L3F0YmFzZS9saWI7LUwvdXNy L2xpYjtnIiBcOworCSMgUmVwbGFjZSAke3dya3NyY30gaW4gcHJvamVjdCBpbmNsdWRlIGZpbGVz CisJZmluZCAke1BLR0RFU1RESVJ9IC1pbmFtZSAiKi5wcmkiIC1leGVjIHNlZCAtaSAie30iIFwK KwkJLWUgInM7JHt3cmtzcmN9L3F0YmFzZTsvdXNyL2xpYi9xdDU7ZyIgXDsKK30KKworcXQ1LXdl YnZpZXctZGV2ZWxfcGFja2FnZSgpIHsKKwlkZXBlbmRzPSIke3NvdXJjZXBrZ30+PSR7dmVyc2lv bn1fJHtyZXZpc2lvbn0iCisJc2hvcnRfZGVzYys9IiAtIGRldmVsb3BtZW50IGZpbGVzIgorCXBr Z19pbnN0YWxsKCkgeworCQl2bW92ZSB1c3IvaW5jbHVkZQorCQl2bW92ZSB1c3IvbGliL2NtYWtl CisJCXZtb3ZlIHVzci9saWIvcGtnY29uZmlnCisJCXZtb3ZlIHVzci9saWIvcXQ1L21rc3BlY3MK KwkJdm1vdmUgInVzci9saWIvKi5zbyIKKwkJdm1vdmUgInVzci9saWIvKi5wcmwiCisJCV9jbGVh bnVwX3dya3NyY19sZWFrCisJfQorfQoKRnJvbSAxODQzZGMzNjFlMjE2ZjQ3NzliOTBmNmJlNTVl NWFmNzdjMWM1Zjk2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKb2huIDxtZUBqb2hu bnluYXRvci5kZXY+CkRhdGU6IE1vbiwgMzAgTWFyIDIwMjAgMTQ6MDc6MTMgKzAyMDAKU3ViamVj dDogW1BBVENIIDE0LzE3XSBxbWx0ZXJtd2lkZ2V0OiBub2Nyb3NzCgotLS0KIHNyY3BrZ3MvcW1s dGVybXdpZGdldC90ZW1wbGF0ZSB8IDIgKysKIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMo KykKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3FtbHRlcm13aWRnZXQvdGVtcGxhdGUgYi9zcmNwa2dz L3FtbHRlcm13aWRnZXQvdGVtcGxhdGUKaW5kZXggNjBkZTEwZGZlZjguLjczNGY4MTI0MzVmIDEw MDY0NAotLS0gYS9zcmNwa2dzL3FtbHRlcm13aWRnZXQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9x bWx0ZXJtd2lkZ2V0L3RlbXBsYXRlCkBAIC0xMSwzICsxMSw1IEBAIGxpY2Vuc2U9IkdQTC0yLjAt b3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly9naXRodWIuY29tL1N3b3JkZmlzaDkwL3FtbHRl cm13aWRnZXQiCiBkaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9L2FyY2hpdmUvJHt2ZXJzaW9ufS50YXIu Z3oiCiBjaGVja3N1bT0yM2UxOWVlZGI1OWQ2ZmUzZTM3ZWNjMDY4NzJmNTRiZWZkOTQzODQ5NDY5 MjZlMDA5YzQyYzRiMzk5MTRjZmUyCitub2Nyb3NzPXllcworIyBzb21lIHRoaW5ncyBkbyBnZXQg d3JvbmdseSBpbnN0YWxsZWQgaW50byAkREVTVERPUi8kWEJQU19DUk9TU19CQVNFCgpGcm9tIDE1 ZjhhOTI2NDliODU0NmMxZjUyZWU1Njk1MjZhM2MzOGMzZGJhN2MgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IEpvaG4gPG1lQGpvaG5ueW5hdG9yLmRldj4KRGF0ZTogTW9uLCAzMCBNYXIg MjAyMCAxNjoxMzoyNSArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMTUvMTddIHFtbC1ib3gyZDogbm9j cm9zcwoKLS0tCiBzcmNwa2dzL3FtbC1ib3gyZC90ZW1wbGF0ZSB8IDEgKwogMSBmaWxlIGNoYW5n ZWQsIDEgaW5zZXJ0aW9uKCspCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xbWwtYm94MmQvdGVtcGxh dGUgYi9zcmNwa2dzL3FtbC1ib3gyZC90ZW1wbGF0ZQppbmRleCAzMDdkZWNkM2MyNy4uOTlkNTk5 YTFiMzUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcW1sLWJveDJkL3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvcW1sLWJveDJkL3RlbXBsYXRlCkBAIC0xMiw2ICsxMiw3IEBAIGxpY2Vuc2U9IlpsaWIiCiBo b21lcGFnZT0iaHR0cHM6Ly9naXRodWIuY29tL3FtbC1ib3gyZC9xbWwtYm94MmQiCiBkaXN0Zmls ZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9xbWwtYm94MmQvcW1sLWJveDJkL2FyY2hpdmUvJHtfY29t bWl0fS50YXIuZ3oiCiBjaGVja3N1bT1hOTA3MWQyYTg1YWFmZTc0Y2I0MzFlMTI4ODhjZmI5MmJk MTljYjkxZjRmNTc3ZWRkNzNjZDk2OTJkNWUxNTJmCitub2Nyb3NzPSdzb21lIHRoaW5ncyBkbyBn ZXQgd3JvbmdseSBpbnN0YWxsZWQgaW50byAkREVTVERJUi8kWEJQU19DUk9TU19CQVNFJwogCiBp ZiBbICIkQ1JPU1NfQlVJTEQiIF07IHRoZW4KIAlob3N0bWFrZWRlcGVuZHMrPSIgcXQ1LWRlY2xh cmF0aXZlLWRldmVsIgoKRnJvbSA1NDc1MTUyZWUxN2Q4NzQyNzQwMDQxOTAzNGYwMzQ4YTUxNjNj NDU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKb2huIDxtZUBqb2hubnluYXRvci5k ZXY+CkRhdGU6IE1vbiwgMzAgTWFyIDIwMjAgMTY6NDA6NDUgKzAyMDAKU3ViamVjdDogW1BBVENI IDE2LzE3XSB0ZXhzdHVkaW86IG5vY3Jvc3MKCi0tLQogc3JjcGtncy90ZXhzdHVkaW8vdGVtcGxh dGUgfCAxICsKIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQoKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvdGV4c3R1ZGlvL3RlbXBsYXRlIGIvc3JjcGtncy90ZXhzdHVkaW8vdGVtcGxhdGUKaW5k ZXggODhkZjU0MjVlMTUuLjc1NjBhNzY4NTU4IDEwMDY0NAotLS0gYS9zcmNwa2dzL3RleHN0dWRp by90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3RleHN0dWRpby90ZW1wbGF0ZQpAQCAtMTYsNiArMTYs NyBAQCBsaWNlbnNlPSJHUEwtMi4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vdGV4c3R1 ZGlvLm9yZy8iCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZXhzdHVkaW8tb3JnL3Rl eHN0dWRpby9hcmNoaXZlLyR7dmVyc2lvbn0udGFyLmd6IgogY2hlY2tzdW09YTE0Yjg5MTJiZmQx NWQ5ODJjZmJlNWYwMGRlZWQzN2NhODVmYjZlMzhkM2FhMGMyZGFjMjNiNGVjYWFiMDk4NAorbm9j cm9zcz0iL3Vzci9saWIvbGlicGhvbm9uNHF0NS5zbzogZXJyb3IgYWRkaW5nIHN5bWJvbHM6IGZp bGUgaW4gd3JvbmcgZm9ybWF0IgogCiBidWlsZF9vcHRpb25zPSJwaG9ub24gcG9wcGxlciIKIGRl c2Nfb3B0aW9uX3Bob25vbj0iYnVpbGQgd2l0aCBwaG9ub24gc3VwcG9ydCIKCkZyb20gMjY1NTFj YTc1N2VkZTI2YzBhMjFkMThhMmIwODNjNTZiZThjOTRiMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogSm9obiA8bWVAam9obm55bmF0b3IuZGV2PgpEYXRlOiBNb24sIDMwIE1hciAyMDIw IDEzOjA0OjQ0ICswMjAwClN1YmplY3Q6IFtQQVRDSCAxNy8xN10gZ3NldHRpbmdzLXF0OiBzZXQg bm9jcm9zcwoKW2NpIHNraXBdCi0tLQogc3JjcGtncy9nc2V0dGluZ3MtcXQvdGVtcGxhdGUgfCAy ICsrCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9nc2V0dGluZ3MtcXQvdGVtcGxhdGUgYi9zcmNwa2dzL2dzZXR0aW5ncy1xdC90ZW1wbGF0ZQpp bmRleCAxZDY1ODUzZmMxOC4uYjllNzI2YjM3MmIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3NldHRp bmdzLXF0L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3NldHRpbmdzLXF0L3RlbXBsYXRlCkBAIC0x MSw2ICsxMSw4IEBAIGxpY2Vuc2U9IkxHUEwtMy4wLW9ubHkiCiBob21lcGFnZT0iaHR0cHM6Ly9s YXVuY2hwYWQubmV0L2dzZXR0aW5ncy1xdCIKIGRpc3RmaWxlcz0iJERFQklBTl9TSVRFL21haW4v Zy9nc2V0dGluZ3MtcXQvZ3NldHRpbmdzLXF0XyR7dmVyc2lvbn0ub3JpZy50YXIuZ3oiCiBjaGVj a3N1bT1hM2QxMDIwZDUyNmVjZTIzMTlmMWU4ZjA1ODc2ZTQ1NmU4NTI3OTc0MTY1MzAwOGUwNWM1 ZDdlOGIwMTljOWI5Citub2Nyb3NzPXllcworIyBzb21lIHRoaW5ncyBkbyBnZXQgd3JvbmdseSBp bnN0YWxsZWQgaW50byAkREVTVERPUi8kWEJQU19DUk9TU19CQVNFCiAKIGlmIFsgIiRDUk9TU19C VUlMRCIgXTsgdGhlbgogCWhvc3RtYWtlZGVwZW5kcys9IiBxdDUtZGV2ZWwgcXQ1LWRlY2xhcmF0 aXZlLWRldmVsIgo= --===============5123405164347195964==--