From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from inbox.vuxu.org (localhost [::1]) by inbox.vuxu.org (OpenSMTPD) with ESMTP id 2b361e94 for ; Sun, 2 Feb 2020 16:03:04 +0000 (UTC) Content-Type: multipart/mixed; boundary="===============1467018591389245472==" MIME-Version: 1.0 Subject: Re: [PR PATCH] [Updated] [WIP] qt5 update to 5.14.0 To: ml@inbox.vuxu.org From: voidlinux-github@inbox.vuxu.org Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Sun, 02 Feb 2020 17:03:04 +0100 Message-ID: <20200202160304.HOzZP3NozO65iJVBihNGa_DKx1xFj2RjvjJVF9nJHTI@z> GitHub notification mails are now in MIME to allow UTF8. --===============1467018591389245472== MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgSm9obm55bmF0b3IgYWdhaW5zdCBt YXN0ZXIgb24gdGhlIHZvaWQtcGFja2FnZXMgcmVwb3NpdG9yeQoKaHR0cHM6Ly9naXRodWIuY29t L0pvaG5ueW5hdG9yL3ZvaWQtcGFja2FnZXMgcXQ1LjE0Cmh0dHBzOi8vZ2l0aHViLmNvbS92b2lk LWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC8xNTMxMAoKW1dJUF0gcXQ1IHVwZGF0ZSB0byA1LjE0 LjAKIyBUZXN0ZWQgb24NCi0gWyBdIHg4Nl82NCAoY29tcGlsZWQgYW5kIHJ1bnRpbWUpDQotIFsg XSB4ODZfNjQtbXVzbCAoY29tcGlsZWQsIHdlYmVuZ2luZSBzZWVtcyB0byB3b3JrIGh0dHBzOi8v aS5pbWd1ci5jb20vMGpwT0JldC5wbmcgKHNlZ2ZhdWx0cyB3aXRoIHNuZGlvICg/KSBhbHNvIGN1 cnJlbnRseSB0cmllcyB0byBmZXRjaCByZXNvdXJjZXMgZnJvbSBgL3NoYXJlYCBpbnN0ZWFkIG9m IGAvdXNyL3NoYXJlYCwgbmVlZHMgdG8gYmUgZml4ZWQuKQ0KLSBbIF0gaTY4NiAoKQ0KLSBbIF0g YXJtdjdsLW11c2wNCi0gWyBdIGFybXY3bCANCi0gWyBdIGFybXY2bC1tdXNsDQotIFsgXSBhcm12 NmwgKGNvbXBpbGVkIHdpdGhvdXQgd2ViZW5naW5lKQ0KLSBbIF0gYWFyY2g2NC1tdXNsIChjb21w aWxlZCkNCi0gWyBdIGFhcmNoNjQNCi0gWyBdIHBwYzY0bGUNCi0gWyBdIHBwYzY0bGUtbXVzbA0K LSBbIF0gcHBjNjQNCi0gWyBdIHBwYzY0LW11c2wNCi0gWyBdIHBwYw0KLSBbIF0gcHBjLW11c2wN CiMgVE9ETzoNCg0KLSBmaXggY3Jvc3MgKGZvciBzb21lIHFtYWtlIHBhY2thZ2VzKQ0KLSByZWJh c2Ugd2ViZW5naW5lIHBwYyBwYXRjaGVzIEBxNjYgDQotIGAtbm8tZmVhdHVyZS1xZG9jYCBpbnN0 ZWFkIG9mIGN1c3RvbSBgcXR0b29scy9zcmMvc3JjLnByb2AgPw0KLSBmaXggd2ViZW5naW5lIGxv YWRpbmcgcmVzb3VyY2VzIGZyb20gYC9zaGFyZWAgaW5zdGVhZCBvZiBgL3Vzci9zaGFyZWANCg0K IyBCdWdzDQoNCi0gd2ViZW5naW5lIGN1cnJlbnRseSB0cmllcyB0byBmZXRjaCByZXNvdXJjZXMg ZnJvbSBgL3NoYXJlYCBpbnN0ZWFkIG9mIGAvdXNyL3NoYXJlDQotIFBsYXNtYXNoZWxsIHdheWxh bmQgb24gbXVzbCBjcmFzaGVzIHJlZ3VsYXJ5IAoKQSBwYXRjaCBmaWxlIGZyb20gaHR0cHM6Ly9n aXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzE1MzEwLnBhdGNoIGlzIGF0 dGFjaGVk --===============1467018591389245472== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-qt5.14-15310.patch" RnJvbSA5Y2E1ZGE4YzFkMTg2ODFkMjY4YTA1NDM5YTI3ZWQwMjlmNmMzOWZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2huIDxqb2huekBwb3N0ZW8ubmV0PgpEYXRlOiBGcmksIDEx IE9jdCAyMDE5IDAwOjU5OjE4ICswMjAwClN1YmplY3Q6IFtQQVRDSCAwMS8xMF0gcXQ1OiB1cGRh dGUgdG8gNS4xNC4xCgotLS0KIGNvbW1vbi9zaGxpYnMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgMzMgKy0KIHNyY3BrZ3Mve3F0NS13ZWJlbmdpbmUgPT4gcXQ1LWJhc2UtZG9j 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 bWFrZS1ta3NwZWNzLnBhdGNoICB8ICAgMzMgKwogLi4uL3F0NS9wYXRjaGVzLzAwODktd2ViZW5n aW5lLXBwYzY0LnBhdGNoICAgIHwgICAyMCAtCiAuLi4vcXQ1L3BhdGNoZXMvMDA5MC1jaHJvbWl1 bS1wcGM2NGxlLnBhdGNoICAgfCA0MjY3IC0tLS0tLS0tLS0tLS0tLS0tCiAuLi4vcGF0Y2hlcy8w MDkxLWNocm9taXVtLXBwYzY0LW11c2wucGF0Y2ggICAgfCAgMTQxIC0KIC4uLi9xdDUvcGF0Y2hl cy8wMDkyLWNocm9taXVtLXBwYzY0LWJlLnBhdGNoICB8IDI5NzAgLS0tLS0tLS0tLS0tCiAuLi4v cXQ1L3BhdGNoZXMvMDA5My1jaHJvbWl1bS12OC1lbGZ2Mi5wYXRjaCAgfCAgIDQzIC0KIC4uLi8w MDk0LWJpZy1lbmRpYW4tc2tpYS1wb3J0YWJsZS5wYXRjaCAgICAgICB8ICAgMTcgLQogLi4uL3Bh dGNoZXMvMDEwMC1zYW5kYm94LXNjaGVkX2dldHBhcmFtLnBhdGNoIHwgICAyNCAtCiBzcmNwa2dz L3F0NS90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMzU3ICstCiA1NSBmaWxl cyBjaGFuZ2VkLCAzMjMgaW5zZXJ0aW9ucygrKSwgODUwNiBkZWxldGlvbnMoLSkKIHJlbmFtZSBz 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 bW1vbi9zaGxpYnMgYi9jb21tb24vc2hsaWJzCmluZGV4IDM1YzUxYmFjNWRjLi41OThkMjRjZDY4 NCAxMDA2NDQKLS0tIGEvY29tbW9uL3NobGlicworKysgYi9jb21tb24vc2hsaWJzCkBAIC0xOTE4 LDYgKzE5MTgsNyBAQCBsaWJRdDUzRFF1aWNrU2NlbmUyRC5zby41IHF0NS0zZC01LjEwLjFfMQog bGliUXQ1M0RFeHRyYXMuc28uNSBxdDUtM2QtNS42LjBfMQogbGliUXQ1M0RRdWlja0V4dHJhcy5z by41IHF0NS0zZC01LjYuMF8xCiBsaWJRdDUzRFF1aWNrQW5pbWF0aW9uLnNvLjUgcXQ1LTNkLTUu MTAuMV8xCitsaWJRdDUzRFF1aWNrSW5wdXQuc28uNSBxdDUtM2QtNS4xMy4wXzEKIGxpYlF0NUNo YXJ0cy5zby41IHF0NS1jaGFydHMtNS43LjFfMQogbGliUXQ1RGF0YVZpc3VhbGl6YXRpb24uc28u NSBxdDUtZGF0YXZpczNkLTUuNy4xXzEKIGxpYlF0NUdhbWVwYWQuc28uNSBxdDUtZ2FtZXBhZC01 LjcuMV8xCkBAIC0xOTMwLDYgKzE5MzEsOCBAQCBsaWJRdDVRdWlja1Rlc3Quc28uNSBxdDUtZGVj bGFyYXRpdmUtNS42LjBfMQogbGliUXQ1UXVpY2tXaWRnZXRzLnNvLjUgcXQ1LWRlY2xhcmF0aXZl LTUuNi4wXzEKIGxpYlF0NVF1aWNrUGFydGljbGVzLnNvLjUgcXQ1LWRlY2xhcmF0aXZlLTUuNi4w XzEKIGxpYlF0NVF1aWNrU2hhcGVzLnNvLjUgcXQ1LWRlY2xhcmF0aXZlLTUuMTIuMV8xCitsaWJR dDVRbWxNb2RlbHMuc28uNSBxdDUtZGVjbGFyYXRpdmUtNS4xNC4wXzEKK2xpYlF0NVFtbFdvcmtl clNjcmlwdC5zby41IHF0NS1kZWNsYXJhdGl2ZS01LjE0LjBfMQogbGliUXQ1UXVpY2tDb250cm9s czIuc28uNSBxdDUtcXVpY2tjb250cm9sczItNS43LjFfMQogbGliUXQ1UXVpY2tUZW1wbGF0ZXMy LnNvLjUgcXQ1LXF1aWNrY29udHJvbHMyLTUuNy4xXzEKIGxpYlF0NVBvc2l0aW9uaW5nLnNvLjUg cXQ1LWxvY2F0aW9uLTUuNi4wXzEKQEAgLTE5NjYsMjEgKzE5NjksMjEgQEAgbGliUXQ1V2ViRW5n aW5lV2lkZ2V0cy5zby41IHF0NS13ZWJlbmdpbmUtNS42LjBfMQogbGliUXQ1V2ViU29ja2V0cy5z by41IHF0NS13ZWJzb2NrZXRzLTUuNi4wXzEKIGxpYlF0NVgxMUV4dHJhcy5zby41IHF0NS14MTFl eHRyYXMtNS42LjBfMQogbGliUXQ1WG1sUGF0dGVybnMuc28uNSBxdDUteG1scGF0dGVybnMtNS42 LjBfMQotbGliUXQ1Q29yZS5zby41IHF0NS01LjYuMF8xCi1saWJRdDVFZ2xGU0RldmljZUludGVn cmF0aW9uLnNvLjUgcXQ1LTUuOC4wXzEKLWxpYlF0NU5ldHdvcmsuc28uNSBxdDUtNS42LjBfMQot bGliUXQ1U3FsLnNvLjUgcXQ1LTUuNi4wXzEKLWxpYlF0NVhtbC5zby41IHF0NS01LjYuMF8xCi1s aWJRdDVHdWkuc28uNSBxdDUtNS42LjBfMQotbGliUXQ1V2lkZ2V0cy5zby41IHF0NS01LjYuMF8x Ci1saWJRdDVUZXN0LnNvLjUgcXQ1LTUuNi4wXzEKLWxpYlF0NURCdXMuc28uNSBxdDUtNS42LjBf MQotbGliUXQ1Q29uY3VycmVudC5zby41IHF0NS01LjYuMF8xCi1saWJRdDVPcGVuR0wuc28uNSBx dDUtNS42LjBfMQotbGliUXQ1UHJpbnRTdXBwb3J0LnNvLjUgcXQ1LTUuNi4wXzEKLWxpYlF0NVhj YlFwYS5zby41IHF0NS01LjYuMF8xCi1saWJRdDVFZ2xEZXZpY2VJbnRlZ3JhdGlvbi5zby41IHF0 NS01LjYuMF8xCi1saWJRdDVFZ2xGc0ttc1N1cHBvcnQuc28uNSBxdDUtNS43LjFfMQorbGliUXQ1 Q29yZS5zby41IHF0NS1jb3JlLTUuMTQuMF8xCitsaWJRdDVFZ2xGU0RldmljZUludGVncmF0aW9u LnNvLjUgcXQ1LWd1aS01LjE0LjBfMQorbGliUXQ1TmV0d29yay5zby41IHF0NS1uZXR3b3JrLTUu MTQuMF8xCitsaWJRdDVTcWwuc28uNSBxdDUtc3FsLTUuMTQuMF8xCitsaWJRdDVYbWwuc28uNSBx dDUteG1sLTUuMTQuMF8xCitsaWJRdDVHdWkuc28uNSBxdDUtZ3VpLTUuMTQuMF8xCitsaWJRdDVX aWRnZXRzLnNvLjUgcXQ1LXdpZGdldHMtNS4xNC4wXzEKK2xpYlF0NVRlc3Quc28uNSBxdDUtdGVz dC01LjE0LjBfMQorbGliUXQ1REJ1cy5zby41IHF0NS1kYnVzLTUuMTQuMF8xCitsaWJRdDVDb25j dXJyZW50LnNvLjUgcXQ1LWNvbmN1cnJlbnQtNS4xNC4wXzEKK2xpYlF0NU9wZW5HTC5zby41IHF0 NS1vcGVuZ2wtNS4xNC4wXzEKK2xpYlF0NVByaW50U3VwcG9ydC5zby41IHF0NS1wcmludHN1cHBv cnQtNS4xNC4wXzEKK2xpYlF0NVhjYlFwYS5zby41IHF0NS1ndWktNS4xNC4wXzEKK2xpYlF0NUVn bERldmljZUludGVncmF0aW9uLnNvLjUgcXQ1LWd1aS01LjE0LjBfMQorbGliUXQ1RWdsRnNLbXNT dXBwb3J0LnNvLjUgcXQ1LWd1aS01LjE0LjBfMQogbGliUXQ1V2ViS2l0LnNvLjUgcXQ1LXdlYmtp dC01LjYuMF8xCiBsaWJRdDVXZWJLaXRXaWRnZXRzLnNvLjUgcXQ1LXdlYmtpdC01LjYuMF8xCiBs aWJRdDVUZXh0VG9TcGVlY2guc28uNSBxdDUtc3BlZWNoLTUuOC4wXzEKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvcXQ1LXdlYmVuZ2luZSBiL3NyY3BrZ3MvcXQ1LWJhc2UtZG9jcwpzaW1pbGFyaXR5IGlu ZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjcGtncy9xdDUtd2ViZW5naW5lCnJlbmFtZSB0byBzcmNw a2dzL3F0NS1iYXNlLWRvY3MKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LWNvbmN1cnJlbnQgYi9z cmNwa2dzL3F0NS1jb25jdXJyZW50Cm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAw MDAwLi43NTc5M2ViNjY2NAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1LWNvbmN1cnJl bnQKQEAgLTAsMCArMSBAQAorcXQ1ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t Z2l0IGEvc3JjcGtncy9xdDUtY29yZSBiL3NyY3BrZ3MvcXQ1LWNvcmUKbmV3IGZpbGUgbW9kZSAx MjAwMDAKaW5kZXggMDAwMDAwMDAwMDAuLjc1NzkzZWI2NjY0Ci0tLSAvZGV2L251bGwKKysrIGIv c3JjcGtncy9xdDUtY29yZQpAQCAtMCwwICsxIEBACitxdDUKXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS1kYnVzIGIvc3JjcGtncy9xdDUtZGJ1cwpu ZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMC4uNzU3OTNlYjY2NjQKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS1kYnVzCkBAIC0wLDAgKzEgQEAKK3F0NQpcIE5vIG5l d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LWd1aSBiL3NyY3Br Z3MvcXQ1LWd1aQpuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMC4uNzU3OTNl YjY2NjQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS1ndWkKQEAgLTAsMCArMSBAQAor cXQ1ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUt bmV0d29yayBiL3NyY3BrZ3MvcXQ1LW5ldHdvcmsKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXgg MDAwMDAwMDAwMDAuLjc1NzkzZWI2NjY0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUt bmV0d29yawpAQCAtMCwwICsxIEBACitxdDUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp ZmYgLS1naXQgYS9zcmNwa2dzL3F0NS1vcGVuZ2wgYi9zcmNwa2dzL3F0NS1vcGVuZ2wKbmV3IGZp bGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAuLjc1NzkzZWI2NjY0Ci0tLSAvZGV2L251 bGwKKysrIGIvc3JjcGtncy9xdDUtb3BlbmdsCkBAIC0wLDAgKzEgQEAKK3F0NQpcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXByaW50c3VwcG9ydCBi L3NyY3BrZ3MvcXQ1LXByaW50c3VwcG9ydApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAw MDAwMDAwMC4uNzU3OTNlYjY2NjQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS1wcmlu dHN1cHBvcnQKQEAgLTAsMCArMSBAQAorcXQ1ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk aWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtcXVpY2t0aW1lbGluZSBiL3NyY3BrZ3MvcXQ1LXF1aWNr dGltZWxpbmUKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAuLjc1NzkzZWI2 NjY0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtcXVpY2t0aW1lbGluZQpAQCAtMCww ICsxIEBACitxdDUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNw a2dzL3F0NS1zcWwgYi9zcmNwa2dzL3F0NS1zcWwKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXgg MDAwMDAwMDAwMDAuLjc1NzkzZWI2NjY0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUt c3FsCkBAIC0wLDAgKzEgQEAKK3F0NQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvcXQ1LXRlc3QgYi9zcmNwa2dzL3F0NS10ZXN0Cm5ldyBmaWxlIG1vZGUg MTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwLi43NTc5M2ViNjY2NAotLS0gL2Rldi9udWxsCisrKyBi L3NyY3BrZ3MvcXQ1LXRlc3QKQEAgLTAsMCArMSBAQAorcXQ1ClwgTm8gbmV3bGluZSBhdCBlbmQg b2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2lkZ2V0cyBiL3NyY3BrZ3MvcXQ1LXdp ZGdldHMKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAuLjc1NzkzZWI2NjY0 Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2lkZ2V0cwpAQCAtMCwwICsxIEBACitx dDUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS14 Y2ItcHJpdmF0ZS1oZWFkZXJzIGIvc3JjcGtncy9xdDUteGNiLXByaXZhdGUtaGVhZGVycwpuZXcg ZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMC4uNzU3OTNlYjY2NjQKLS0tIC9kZXYv bnVsbAorKysgYi9zcmNwa2dzL3F0NS14Y2ItcHJpdmF0ZS1oZWFkZXJzCkBAIC0wLDAgKzEgQEAK K3F0NQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1 LXhtbCBiL3NyY3BrZ3MvcXQ1LXhtbApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAw MDAwMC4uNzU3OTNlYjY2NjQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS14bWwKQEAg LTAsMCArMSBAQAorcXQ1ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv c3JjcGtncy9xdDUvZmlsZXMvMDA5MC1oYXJkLWRpc2FibGUtcW1sY2hhY2hlZ2VuLnBhdGNoIGIv c3JjcGtncy9xdDUvZmlsZXMvMDA5MC1oYXJkLWRpc2FibGUtcW1sY2hhY2hlZ2VuLnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZWNkZmIzMGY1Yi4uMDAwMDAwMDAwMDAKLS0t IGEvc3JjcGtncy9xdDUvZmlsZXMvMDA5MC1oYXJkLWRpc2FibGUtcW1sY2hhY2hlZ2VuLnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotLS0tIHF0ZGVjbGFyYXRpdmUvdG9vbHMv dG9vbHMucHJvCTIwMTktMDQtMDkgMDE6MDE6MDcuMDAwMDAwMDAwICswMjAwCi0rKysgLQkyMDE5 LTA0LTIxIDAwOjI0OjE2LjE5Mjk2NjM0NSArMDIwMAotQEAgLTcsNyArNyw2IEBACi0gICAgICAg ICBxbWxtaW4gXAotICAgICAgICAgcW1saW1wb3J0c2Nhbm5lcgotIAotLSAgICBxdENvbmZpZyhj b21tYW5kbGluZXBhcnNlcik6cXRDb25maWcoeG1sc3RyZWFtd3JpdGVyKTogU1VCRElSUyArPSBx bWxjYWNoZWdlbgotIH0KLSAKLSBxdENvbmZpZyh0aHJlYWQpOiFhbmRyb2lkfGFuZHJvaWRfYXBw OiF3YXNtIHsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L2ZpbGVzL3FtbGNhY2hlZ2VuLnBybyBi L3NyY3BrZ3MvcXQ1L2ZpbGVzL3FtbGNhY2hlZ2VuLnBybwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uYjU5NjNiZWNkNmMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dz L3F0NS9maWxlcy9xbWxjYWNoZWdlbi5wcm8KQEAgLTAsMCArMSwzOCBAQAorUVQgPSBjb3JlIHFt bCBxbWxkZXZ0b29scy1wcml2YXRlCitERUZJTkVTICs9IFFUX05PX0NBU1RfVE9fQVNDSUkgUVRf Tk9fQ0FTVF9GUk9NX0FTQ0lJCisKK1NPVVJDRVMgPSBxbWxjYWNoZWdlbi5jcHAgXAorICAgIHJl c291cmNlZmlsdGVyLmNwcCBcCisgICAgZ2VuZXJhdGVsb2FkZXIuY3BwCitUQVJHRVQgPSBxbWxj YWNoZWdlbgorCitpbmNsdWRlKC4uL3NoYXJlZC9zaGFyZWQucHJpKQorCitidWlsZF9pbnRlZ3Jh dGlvbi5maWxlcyA9IHFtbGNhY2hlLnByZiBxdHF1aWNrY29tcGlsZXIucHJmCitidWlsZF9pbnRl Z3JhdGlvbi5wYXRoID0gJCRbUVRfSE9TVF9EQVRBXS9ta3NwZWNzL2ZlYXR1cmVzCitwcmVmaXhf YnVpbGQ6IElOU1RBTExTICs9IGJ1aWxkX2ludGVncmF0aW9uCitlbHNlOiBDT1BJRVMgKz0gYnVp bGRfaW50ZWdyYXRpb24KKworbG9hZChjbWFrZV9mdW5jdGlvbnMpCisKK0NNQUtFX0JJTl9ESVIg PSAkJGNtYWtlUmVsYXRpdmVQYXRoKCQkW1FUX0hPU1RfQklOU10sICQkW1FUX0lOU1RBTExfUFJF RklYXSkKK2NvbnRhaW5zKENNQUtFX0JJTl9ESVIsICJeXFwuXFwuLy4qIikgeworICAgIENNQUtF X0JJTl9ESVIgPSAkJFtRVF9IT1NUX0JJTlNdLworICAgIENNQUtFX0JJTl9ESVJfSVNfQUJTT0xV VEUgPSBUcnVlCit9CisKK2xvYWQocXRfYnVpbGRfcGF0aHMpCisKK2VxdWFscyhRTUFLRV9IT1NU Lm9zLCBXaW5kb3dzKTogQ01BS0VfQklOX1NVRkZJWCA9ICIuZXhlIgorY21ha2VfY29uZmlnX2Zp bGUuaW5wdXQgPSAkJFBXRC9RdDVRdWlja0NvbXBpbGVyQ29uZmlnLmNtYWtlLmluCitjbWFrZV9j b25maWdfZmlsZS5vdXRwdXQgPSAkJE1PRFVMRV9CQVNFX09VVERJUi9saWIvY21ha2UvUXQ1UXVp Y2tDb21waWxlci9RdDVRdWlja0NvbXBpbGVyQ29uZmlnLmNtYWtlCitRTUFLRV9TVUJTVElUVVRF UyArPSBjbWFrZV9jb25maWdfZmlsZQorCitjbWFrZV9idWlsZF9pbnRlZ3JhdGlvbi5maWxlcyA9 ICQkY21ha2VfY29uZmlnX2ZpbGUub3V0cHV0CitjbWFrZV9idWlsZF9pbnRlZ3JhdGlvbi5wYXRo ID0gJCRbUVRfSU5TVEFMTF9MSUJTXS9jbWFrZS9RdDVRdWlja0NvbXBpbGVyCitwcmVmaXhfYnVp bGQ6IElOU1RBTExTICs9IGNtYWtlX2J1aWxkX2ludGVncmF0aW9uCitlbHNlOiBDT1BJRVMgKz0g Y21ha2VfYnVpbGRfaW50ZWdyYXRpb24KKworUU1BS0VfVEFSR0VUX0RFU0NSSVBUSU9OID0gUU1M IENhY2hlIEdlbmVyYXRvcgorCitsb2FkKHF0X3Rvb2wpCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0 NS9maWxlcy9xbWxpbXBvcnRzY2FubmVyLnBybyBiL3NyY3BrZ3MvcXQ1L2ZpbGVzL3FtbGltcG9y dHNjYW5uZXIucHJvCmluZGV4IDU3YzIyOGI4NTQwLi5hYjFlODUxMjkzYSAxMDA2NDQKLS0tIGEv c3JjcGtncy9xdDUvZmlsZXMvcW1saW1wb3J0c2Nhbm5lci5wcm8KKysrIGIvc3JjcGtncy9xdDUv ZmlsZXMvcW1saW1wb3J0c2Nhbm5lci5wcm8KQEAgLTMsNiArMyw4IEBAIERFRklORVMgKz0gUVRf Tk9fQ0FTVF9UT19BU0NJSSBRVF9OT19DQVNUX0ZST01fQVNDSUkKIAogU09VUkNFUyArPSBtYWlu LmNwcCAuLi8uLi9zcmMvcW1sL3FxbWxqc2dyYW1tYXIuY3BwCiAKK2luY2x1ZGUoLi4vc2hhcmVk L3NoYXJlZC5wcmkpCisKIFFNQUtFX1RBUkdFVF9ERVNDUklQVElPTiA9IFFNTCBJbXBvcnQgU2Nh bm5lcgogCiBsb2FkKHF0X3Rvb2wpCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9maWxlcy9xbWxs aW50LnBybyBiL3NyY3BrZ3MvcXQ1L2ZpbGVzL3FtbGxpbnQucHJvCmluZGV4IDQwOWEzNzhiZmNi Li44Y2E2MDBjMjBlYyAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDUvZmlsZXMvcW1sbGludC5wcm8K KysrIGIvc3JjcGtncy9xdDUvZmlsZXMvcW1sbGludC5wcm8KQEAgLTEsNyArMSwyMiBAQAogUVQg PSBjb3JlIHFtbCBxbWxkZXZ0b29scy1wcml2YXRlCiAKLVNPVVJDRVMgKz0gbWFpbi5jcHAgLi4v Li4vc3JjL3FtbC9xcW1sanNncmFtbWFyLmNwcAorU09VUkNFUyArPSBtYWluLmNwcCBcCisgICAg Y29tcG9uZW50dmVyc2lvbi5jcHAgXAorICAgIGZha2VtZXRhb2JqZWN0LmNwcCBcCisgICAgZmlu ZHVucXVhbGlmaWVkLmNwcCBcCisgICAgcW1sanN0eXBlZGVzY3JpcHRpb25yZWFkZXIuY3BwIFwK KyAgICBxY29sb3JvdXRwdXQuY3BwIFwKKyAgICBzY29wZXRyZWUuY3BwIFwKKyAgICAuLi8uLi9z cmMvcW1sL3FxbWxqc2dyYW1tYXIuY3BwCiAKIFFNQUtFX1RBUkdFVF9ERVNDUklQVElPTiA9IFFN TCBTeW50YXggVmVyaWZpZXIKIAogbG9hZChxdF90b29sKQorCitIRUFERVJTICs9IFwKKyAgICBj b21wb25lbnR2ZXJzaW9uLmggXAorICAgIGZha2VtZXRhb2JqZWN0LmggXAorICAgIGZpbmR1bnF1 YWxpZmllZC5oIFwKKyAgICBxbWxqc3R5cGVkZXNjcmlwdGlvbnJlYWRlci5oIFwKKyAgICBxY29s b3JvdXRwdXRfcC5oIFwKKyAgICBzY29wZXRyZWUuaApkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUv ZmlsZXMvcXR0b29sc19zcmMucHJvIGIvc3JjcGtncy9xdDUvZmlsZXMvcXR0b29sc19zcmMucHJv CmluZGV4IGM3MzQ0NDA0YzA1Li5hMzg3YTk5MDE2NyAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDUv ZmlsZXMvcXR0b29sc19zcmMucHJvCisrKyBiL3NyY3BrZ3MvcXQ1L2ZpbGVzL3F0dG9vbHNfc3Jj LnBybwpAQCAtMSw1ICsxLDYgQEAKIFRFTVBMQVRFID0gc3ViZGlycwogCitRVF9GT1JfQ09ORklH ICs9IHdpZGdldHMKIFNVQkRJUlMgPSBhc3Npc3RhbnQgXAogCXBpeGVsdG9vbCBcCiAJZGVzaWdu ZXIgXApAQCAtOCwzNCArOSwzMSBAQCBTVUJESVJTID0gYXNzaXN0YW50IFwKIAlxdGF0dHJpYnV0 aW9uc3NjYW5uZXIKIAogbGluZ3Vpc3QuZGVwZW5kcyA9IGRlc2lnbmVyCitxdEhhdmVNb2R1bGUo cXVpY2spOnF0Q29uZmlnKHRocmVhZCk6cXRDb25maWcodG9vbGJ1dHRvbik6IFNVQkRJUlMgKz0g ZGlzdGFuY2VmaWVsZGdlbmVyYXRvcgorCiAKIHF0Q29uZmlnKGxpYnJhcnkpIHsKICAgICAhYW5k cm9pZHxhbmRyb2lkX2FwcDogU1VCRElSUyArPSBxdHBsdWdpbmluZm8KIH0KIAotaWYoIWFuZHJv aWR8YW5kcm9pZF9hcHApOiF1aWtpdDogU1VCRElSUyArPSBxdHBhdGhzCishYW5kcm9pZHxhbmRy b2lkX2FwcDogU1VCRElSUyArPSBxdHBhdGhzCiAKLW1hYyB7CittYWNvcyB7CiAgICAgU1VCRElS UyArPSBtYWNkZXBsb3lxdAogfQogCi1hbmRyb2lkIHsKLSAgICBTVUJESVJTICs9IGFuZHJvaWRk ZXBsb3lxdAotfQotCiB3aW4zMnx3aW5ydDpTVUJESVJTICs9IHdpbmRlcGxveXF0CiB3aW5ydDpT VUJESVJTICs9IHdpbnJ0cnVubmVyCi1xdEhhdmVNb2R1bGUoZ3VpKTohYW5kcm9pZDohdWlraXQ6 IXFueDohd2lucnQ6IFNVQkRJUlMgKz0gcXRkaWFnCitxdEhhdmVNb2R1bGUoZ3VpKTohd2FzbToh YW5kcm9pZDohdWlraXQ6IXFueDohd2lucnQ6IFNVQkRJUlMgKz0gcXRkaWFnCiAKIHF0Tm9tYWtl VG9vbHMoIFwKLSAgICBtYWNkZXBsb3lxdCBcCisgICAgZGlzdGFuY2VmaWVsZGdlbmVyYXRvciBc CisgICAgcGl4ZWx0b29sIFwKICkKIAogIyBUaGlzIGlzIG5lY2Vzc2FyeSB0byBhdm9pZCBhIHJh Y2UgY29uZGl0aW9uIGJldHdlZW4gdG9vbGNoYWluLnByZgogIyBpbnZvY2F0aW9ucyBpbiBhIG1v ZHVsZS1ieS1tb2R1bGUgY3Jvc3MtYnVpbGQuCiBjcm9zc19jb21waWxlOmlzRW1wdHkoUU1BS0Vf SE9TVF9DWFguSU5DRElSUykgewotICAgIGFuZHJvaWRkZXBsb3lxdC5kZXBlbmRzICs9IHF0YXR0 cmlidXRpb25zc2Nhbm5lcgotICAgIHFkb2MuZGVwZW5kcyArPSBxdGF0dHJpYnV0aW9uc3NjYW5u ZXIKICAgICB3aW5kZXBsb3lxdC5kZXBlbmRzICs9IHF0YXR0cmlidXRpb25zc2Nhbm5lcgogICAg IHdpbnJ0cnVubmVyLmRlcGVuZHMgKz0gcXRhdHRyaWJ1dGlvbnNzY2FubmVyCiAgICAgbGluZ3Vp c3QuZGVwZW5kcyArPSBxdGF0dHJpYnV0aW9uc3NjYW5uZXIKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv cXQ1L2ZpbGVzL3Jlc29sdl9jb21wYXQuaCBiL3NyY3BrZ3MvcXQ1L2ZpbGVzL3Jlc29sdl9jb21w YXQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGYwZTg1MmExOWQuLjAwMDAwMDAw MDAwCi0tLSBhL3NyY3BrZ3MvcXQ1L2ZpbGVzL3Jlc29sdl9jb21wYXQuaAorKysgL2Rldi9udWxs CkBAIC0xLDI5ICswLDAgQEAKLSNpZiAhZGVmaW5lZChfX0dMSUJDX18pCi0vKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCi0gKiByZXNvbHZfY29tcGF0LmgKLSAqCi0gKiBNaW1pY2sgR0xJQkMncyByZXNfbmlu aXQoKSBhbmQgcmVzX25jbG9zZSgpIGZvciBtdXNsIGxpYmMKLSAqIE5vdGU6IHJlc19pbml0KCkg aXMgYWN0dWFsbHkgZGVwcmVjYXRlZCBhY2NvcmRpbmcgdG8KLSAqIGh0dHA6Ly9kb2NzLm9yYWNs ZS5jb20vY2QvRTM2Nzg0XzAxL2h0bWwvRTM2ODc1L3Jlcy1uY2xvc2UtM3Jlc29sdi5odG1sCi0g KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCi0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0KLXN0YXRpYyBpbmxpbmUg aW50IHJlc19uaW5pdChyZXNfc3RhdGUgc3RhdHApCi17Ci0JaW50IHJjID0gcmVzX2luaXQoKTsK LQlpZiAoc3RhdHAgIT0gJl9yZXMpIHsKLQkJbWVtY3B5KHN0YXRwLCAmX3Jlcywgc2l6ZW9mKCpz dGF0cCkpOwotCX0KLQlyZXR1cm4gcmM7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgaW50IHJlc19uY2xv c2UocmVzX3N0YXRlIHN0YXRwKQotewotCWlmICghc3RhdHApCi0JCXJldHVybiAtMTsKLQlpZiAo c3RhdHAgIT0gJl9yZXMpIHsKLQkJbWVtc2V0KHN0YXRwLCAwLCBzaXplb2YoKnN0YXRwKSk7Ci0J fQotCXJldHVybiAwOwotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9maWxlcy91 aWMucHJvIGIvc3JjcGtncy9xdDUvZmlsZXMvdWljLnBybwppbmRleCA3NGQ3ZGJkODc4Zi4uZGMw OGVmY2ZmMTkgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1L2ZpbGVzL3VpYy5wcm8KKysrIGIvc3Jj cGtncy9xdDUvZmlsZXMvdWljLnBybwpAQCAtNCw2ICs0LDcgQEAgREVGSU5FUyArPSBRVF9VSUMg UVRfTk9fQ0FTVF9GUk9NX0FTQ0lJIFFUX05PX0ZPUkVBQ0gKIGluY2x1ZGUodWljLnByaSkKIGlu Y2x1ZGUoc2hhcmVkL3NoYXJlZC5wcmkpCiBpbmNsdWRlKGNwcC9jcHAucHJpKQoraW5jbHVkZShw eXRob24vcHl0aG9uLnByaSkKIAogSEVBREVSUyArPSB1aWMuaAogCmRpZmYgLS1naXQgYS9zcmNw a2dzL3F0NS9maWxlcy91aXRvb2xzLnBybyBiL3NyY3BrZ3MvcXQ1L2ZpbGVzL3VpdG9vbHMucHJv Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41MWUyMmIxNDUwNgotLS0g L2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1L2ZpbGVzL3VpdG9vbHMucHJvCkBAIC0wLDAgKzEs MTUgQEAKK1RBUkdFVCA9IFF0VWlUb29scworQ09ORklHICs9IHN0YXRpYworCitpbmNsdWRlKC4u L2xpYi91aWxpYi91aWxpYi5wcmkpCisKK1FNQUtFX0RPQ1MgPSAkJFBXRC9kb2MvcXR1aXRvb2xz LnFkb2Njb25mCisKK0hFQURFUlMgKz0gcXVpbG9hZGVyLmgKK1NPVVJDRVMgKz0gcXVpbG9hZGVy LmNwcAorCitERUZJTkVTICs9IFwKKyAgICBRRk9STUlOVEVSTkFMX05BTUVTUEFDRSBcCisgICAg UVRfREVTSUdORVJfU1RBVElDCisKK2xvYWQocXRfbW9kdWxlKQpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9xdDUvcGF0Y2hlcy8wMDAxLWFkZGxyLnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDAx LWFkZGxyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lNDE1 MzMyZGQ4OQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAwMS1hZGRs ci5wYXRjaApAQCAtMCwwICsxLDIzIEBACitTb3VyY2U6IEBKb2hubnluYXRvcgorVXBzdGVhbTog Tm8KK1N1YmplY3Q6IE11c2wgYWx3YXlzIHJldHVybnMgL2xpYi9saWJRdDVDb3JlLnNvLjUgZm9y IERsX2luZm8uZGxpX2ZuYW1lLiAKK09uIEdMSUJDIHRoaXMgc2VlbXMgdG8gb25seSBoYXBwZW4g d2l0aCBwcm9ncmFtcyB0aGF0IGxvYWQgcXQ1LXdlYmVuZ2luZSg/KQorCistLS0KK2RpZmYgLS1n aXQgcXRiYXNlc3JjL2NvcmVsaWIvZ2xvYmFsL3FsaWJyYXJ5aW5mby5jcHAgcXRiYXNlc3JjL2Nv cmVsaWIvZ2xvYmFsL3FsaWJyYXJ5aW5mby5jcHAKK2luZGV4IDhiY2Y2N2U3M2QuLjI4ZDczNTUz MTAgMTAwNjQ0CistLS0gcXRiYXNlL3NyYy9jb3JlbGliL2dsb2JhbC9xbGlicmFyeWluZm8uY3Bw CisrKysgcXRiYXNlL3NyYy9jb3JlbGliL2dsb2JhbC9xbGlicmFyeWluZm8uY3BwCitAQCAtNTU4 LDYgKzU1OCwxMiBAQCBzdGF0aWMgUVN0cmluZyBnZXRSZWxvY2F0YWJsZVByZWZpeCgpCisgICAg IGludCByZXN1bHQgPSBkbGFkZHIocmVpbnRlcnByZXRfY2FzdDx2b2lkICo+KCZRTGlicmFyeUlu Zm86OmlzRGVidWdCdWlsZCksICZpbmZvKTsKKyAgICAgaWYgKHJlc3VsdCA+IDAgJiYgaW5mby5k bGlfZm5hbWUpCisgICAgICAgICBwcmVmaXhQYXRoID0gcHJlZml4RnJvbVF0Q29yZUxpYnJhcnlI ZWxwZXIoUVN0cmluZzo6ZnJvbUxhdGluMShpbmZvLmRsaV9mbmFtZSkpOworKyNpZiAxCisrICAg IFFEaXIgcHJlRGlyKHByZWZpeFBhdGgpOworKyAgICBpZiAocHJlRGlyLmlzUm9vdCgpKSB7Cisr ICAgICAgICBwcmVmaXhQYXRoID0gUVN0cmluZ0xpdGVyYWwoIi91c3IiKTsKKysgICAgfQorKyNl bmRpZgorICNlbGlmIGRlZmluZWQoUV9PU19XSU4pCisgICAgIEhNT0RVTEUgaE1vZHVsZSA9IGdl dFdpbmRvd3NNb2R1bGVIYW5kbGUoKTsKKyAgICAgY29uc3QgaW50IGtCdWZmZXJTaXplID0gNDA5 NjsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAwMi1Vc2UtX2Zwc3RhdGUtaW5z dGVhZC1vZi1fbGliY19mcHN0YXRlLW9uLWxpbnV4LnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hl cy8wMDAyLVVzZS1fZnBzdGF0ZS1pbnN0ZWFkLW9mLV9saWJjX2Zwc3RhdGUtb24tbGludXgucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlNzg3ZDEzNzRlLi4wMDAwMDAwMDAw MAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMDItVXNlLV9mcHN0YXRlLWluc3RlYWQtb2Yt X2xpYmNfZnBzdGF0ZS1vbi1saW51eC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAg QEAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJl YWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRl eHRfcmVhZGVyLmgJMjAxOC0wNi0xNSAwOTo0NzoyMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtw YWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmgJ MjAxOC0wOS0wNyAyMjoyMToyOC41MjE3NjM3MTYgKzAyMDAKLUBAIC01MCw3ICs1MCw3IEBACi0g ICAvLyAgIGluZm86IHRoZSBjb2xsZWN0aW9uIG9mIHJlZ2lzdGVyIHN0cnVjdHVyZXMuCi0gI2lm IGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjQpCi0gICBzdGF0aWMgdm9pZCBG aWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0X3QgKnVjLAot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IF9saWJjX2Zwc3RhdGUq IGZwKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBfZnBzdGF0 ZSogZnApOwotICNlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pCi0gICBzdGF0aWMgdm9pZCBGaWxs Q1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0X3QgKnVjLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGZwc2ltZF9jb250ZXh0KiBm cHJlZ3MpOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0 eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91 Y29udGV4dF9yZWFkZXIuY2MJMjAxOC0wNi0xNSAwOTo0NzoyMC4wMDAwMDAwMDAgKzAyMDAKLSsr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQv YnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVh ZGVyLmNjCTIwMTgtMDktMDcgMjI6MjE6NDUuNzY2NzYyNjg4ICswMjAwCi1AQCAtNDksNyArNDks NyBAQAotIH0KLSAKLSB2b2lkIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChSYXdDb250 ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0X3QgKnVjLAotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBfbGliY19mcHN0YXRlKiBmcCkgewotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBfZnBzdGF0ZSogZnAp IHsKLSAgIGNvbnN0IGdyZWdfdCogcmVncyA9IHVjLT51Y19tY29udGV4dC5ncmVnczsKLSAKLSAg IG91dC0+Y29udGV4dF9mbGFncyA9IE1EX0NPTlRFWFRfWDg2X0ZVTEwgfAotQEAgLTk3LDcgKzk3 LDcgQEAKLSB9Ci0gCi0gdm9pZCBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNvbnRleHQoUmF3Q29u dGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dF90ICp1YywKLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgX2xpYmNfZnBzdGF0ZSogZnByZWdzKSB7Ci0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IF9mcHN0YXRl KiBmcHJlZ3MpIHsKLSAgIGNvbnN0IGdyZWdfdCogcmVncyA9IHVjLT51Y19tY29udGV4dC5ncmVn czsKLSAKLSAgIG91dC0+Y29udGV4dF9mbGFncyA9IE1EX0NPTlRFWFRfQU1ENjRfRlVMTDsKLS0t LSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQv YnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVy LmgJMjAxOC0wNi0xNSAwOTo0NzoyMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2Ns aWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVyLmgJMjAxOC0wOS0wNyAy MzozNjozMi4wNDk0OTUyODUgKzAyMDAKLUBAIC00OCw3ICs0OCw3IEBACi0gI2lmIGRlZmluZWQo X19hYXJjaDY0X18pCi0gdHlwZWRlZiBzdHJ1Y3QgZnBzaW1kX2NvbnRleHQgZnBzdGF0ZV90Owot ICNlbGlmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCi0tdHlw ZWRlZiBzdHJ1Y3QgX2xpYmNfZnBzdGF0ZSBmcHN0YXRlX3Q7Ci0rdHlwZWRlZiBzdHJ1Y3QgX2Zw c3RhdGUgZnBzdGF0ZV90OwotICNlbmRpZgotIAotIC8vIFRoZXNlIGVudHJpZXMgc3RvcmUgYSBs aXN0IG9mIG1lbW9yeSByZWdpb25zIHRoYXQgdGhlIGNsaWVudCB3YW50cyBpbmNsdWRlZApkaWZm IC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDAzLWluY2x1ZGUtc3lzLXJlZy5oLXRvLWdl dC1fX1dPUkRTSVpFLW9uLW11c2wtbGliYy5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAw My1pbmNsdWRlLXN5cy1yZWcuaC10by1nZXQtX19XT1JEU0laRS1vbi1tdXNsLWxpYmMucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhNDE2MGIyMWJkLi4wMDAwMDAwMDAwMAot LS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMDMtaW5jbHVkZS1zeXMtcmVnLmgtdG8tZ2V0LV9f V09SRFNJWkUtb24tbXVzbC1saWJjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBA QAotRnJvbSA5MDAxYzU0ZDZiOTc0NDQ5MTc0YThjZWU4ZjNmNWQ3OGE5YmQ2YzllIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRmVsaXggSmFuZGEgPGZlbGl4LmphbmRhQHBvc3Rlby5k ZT4KLURhdGU6IFN1biwgMSBGZWIgMjAxNSAxNDoyNjo1MiArMDEwMAotU3ViamVjdDogW1BBVENI IDMvNl0gaW5jbHVkZSA8c3lzL3JlZy5oPiB0byBnZXQgX19XT1JEU0laRSBvbiBtdXNsIGxpYmMK LQotLS0tCi0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Jy ZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbGludXgvZWxmX2NvcmVfZHVtcC5oIHwgMSArCi0g MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvY29tbW9u L2xpbnV4L2VsZl9jb3JlX2R1bXAuaCBiL3NyYy9jb21tb24vbGludXgvZWxmX2NvcmVfZHVtcC5o Ci1pbmRleCBkMDNjN2E4Li4wMmViMzkxIDEwMDY0NAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL2xp bnV4L2VsZl9jb3JlX2R1bXAuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL2xpbnV4L2VsZl9jb3Jl X2R1bXAuaAotQEAgLTM2LDYgKzM2LDkgQEAKLSAjaW5jbHVkZSA8ZWxmLmg+Ci0gI2luY2x1ZGUg PGxpbmsuaD4KLSAjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rI2lmbmRlZiBfX0dMSUJDX18KLSsjaW5j bHVkZSA8c3lzL3JlZy5oPgotKyNlbmRpZgotIAotICNpbmNsdWRlICJjb21tb24vbWVtb3J5X3Jh bmdlLmgiCi0gCi0tLSAKLTIuMC41Ci0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMv MDAwNC1tdXNsLWRpc3BhdGNoLXRvLW11c2wucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAw MDQtbXVzbC1kaXNwYXRjaC10by1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCBkZTMyYTNkYWI5NS4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8w MDA0LW11c2wtZGlzcGF0Y2gtdG8tbXVzbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMyAr MCwwIEBACi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvYWxsb2Nh dG9yL2FsbG9jYXRvcl9zaGltX2RlZmF1bHRfZGlzcGF0Y2hfdG9fZ2xpYmMuY2MKLS0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9hbGxvY2F0b3IvYWxsb2NhdG9yX3No aW1fZGVmYXVsdF9kaXNwYXRjaF90b19nbGliYy5jYwotQEAgLTYsNiArNiw3IEBACi0gCi0gI2lu Y2x1ZGUgPG1hbGxvYy5oPgotIAotKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKLSAvLyBUaGlzIHRy YW5zbGF0aW9uIHVuaXQgZGVmaW5lcyBhIGRlZmF1bHQgZGlzcGF0Y2ggZm9yIHRoZSBhbGxvY2F0 b3Igc2hpbSB3aGljaAotIC8vIHJvdXRlcyBhbGxvY2F0aW9ucyB0byBsaWJjIGZ1bmN0aW9ucy4K LSAvLyBUaGUgY29kZSBoZXJlIGlzIHN0cm9uZ2x5IGluc3BpcmVkIGZyb20gdGNtYWxsb2MncyBs aWJjX292ZXJyaWRlX2dsaWJjLmguCi1AQCAtNzMsMyArNzQsOTIgQEAgY29uc3QgQWxsb2NhdG9y RGlzcGF0Y2ggQWxsb2NhdG9yRGlzcGF0Y2g6OmRlZmF1bHRfZGlzcGF0Y2ggPSB7Ci0gICAgIG51 bGxwdHIsICAgICAgICAgICAgICAgLyogZnJlZV9kZWZpbml0ZV9zaXplX2Z1bmN0aW9uICovCi0g ICAgIG51bGxwdHIsICAgICAgICAgICAgICAgLyogbmV4dCAqLwotIH07Ci0rCi0rI2Vsc2UgLy8g ZGVmaW5lZChfX0dMSUJDX18pCi0rCi0rI2luY2x1ZGUgPGRsZmNuLmg+Ci0rCi0rZXh0ZXJuICJD IiB7Ci0rLy8gRGVjbGFyZSBmdW5jdGlvbiBwb2ludGVycyB0byB0aGUgbWVtb3J5IGZ1bmN0aW9u cwotK3R5cGVkZWYgdm9pZCogKCp0X2xpYmNfbWFsbG9jKShzaXplX3Qgc2l6ZSk7Ci0rdHlwZWRl ZiB2b2lkKiAoKnRfbGliY19jYWxsb2MpKHNpemVfdCBuLCBzaXplX3Qgc2l6ZSk7Ci0rdHlwZWRl ZiB2b2lkKiAoKnRfbGliY19yZWFsbG9jKSh2b2lkKiBhZGRyZXNzLCBzaXplX3Qgc2l6ZSk7Ci0r dHlwZWRlZiB2b2lkKiAoKnRfbGliY19tZW1hbGlnbikoc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90 IHNpemUpOwotK3R5cGVkZWYgdm9pZCAoKnRfbGliY19mcmVlKSh2b2lkKiBwdHIpOwotK3R5cGVk ZWYgc2l6ZV90ICgqdF9saWJjX21hbGxvY191c2FibGVfc2l6ZSkodm9pZCogcHRyKTsKLSsKLSsv LyBTdGF0aWMgaW5zdGFuY2VzIG9mIHBvaW50ZXJzIHRvIGxpYmMuc28gZGwgc3ltYm9scwotK3N0 YXRpYyB0X2xpYmNfbWFsbG9jIGxpYmNfbWFsbG9jID0gTlVMTDsKLStzdGF0aWMgdF9saWJjX2Nh bGxvYyBsaWJjX2NhbGxvYyA9IE5VTEw7Ci0rc3RhdGljIHRfbGliY19yZWFsbG9jIGxpYmNfcmVh bGxvYyA9IE5VTEw7Ci0rc3RhdGljIHRfbGliY19tZW1hbGlnbiBsaWJjX21lbWFsaWduID0gTlVM TDsKLStzdGF0aWMgdF9saWJjX2ZyZWUgbGliY19mcmVlID0gTlVMTDsKLStzdGF0aWMgdF9saWJj X21hbGxvY191c2FibGVfc2l6ZSBsaWJjX21hbGxvY191c2FibGVfc2l6ZSA9IE5VTEw7Ci0rCi0r Ly8gcmVzb2x2ZSB0aGUgc3ltYm9scyBpbiBsaWJjLnNvCi0rdm9pZCBtdXNsX2xpYmNfbWVtb3J5 X2luaXQodm9pZCkKLSt7Ci0rICBsaWJjX21hbGxvYyA9ICh0X2xpYmNfbWFsbG9jKSBkbHN5bShS VExEX05FWFQsICJtYWxsb2MiKTsKLSsgIGxpYmNfY2FsbG9jID0gKHRfbGliY19jYWxsb2MpIGRs c3ltKFJUTERfTkVYVCwgImNhbGxvYyIpOwotKyAgbGliY19yZWFsbG9jID0gKHRfbGliY19yZWFs bG9jKSBkbHN5bShSVExEX05FWFQsICJyZWFsbG9jIik7Ci0rICBsaWJjX21lbWFsaWduID0gKHRf bGliY19tZW1hbGlnbikgZGxzeW0oUlRMRF9ORVhULCAibWVtYWxpZ24iKTsKLSsgIGxpYmNfZnJl ZSA9ICh0X2xpYmNfZnJlZSkgZGxzeW0oUlRMRF9ORVhULCAiZnJlZSIpOwotKyAgbGliY19tYWxs b2NfdXNhYmxlX3NpemUgPSAodF9saWJjX21hbGxvY191c2FibGVfc2l6ZSkgZGxzeW0oUlRMRF9O RVhULCAibWFsbG9jX3VzYWJsZV9zaXplIik7Ci0rfQotK30gIC8vIGV4dGVybiAiQyIKLSsKLStu YW1lc3BhY2UgewotKwotK3VzaW5nIGJhc2U6OmFsbG9jYXRvcjo6QWxsb2NhdG9yRGlzcGF0Y2g7 Ci0rCi0rdm9pZCogTXVzbE1hbGxvYyhjb25zdCBBbGxvY2F0b3JEaXNwYXRjaCosIHNpemVfdCBz aXplLCB2b2lkKiBjb250ZXh0KSB7Ci0rICBpZiAoIWxpYmNfbWFsbG9jKQotKyAgICBtdXNsX2xp YmNfbWVtb3J5X2luaXQoKTsKLSsgIHJldHVybiAoKmxpYmNfbWFsbG9jKShzaXplKTsKLSt9Ci0r Ci0rdm9pZCogTXVzbENhbGxvYyhjb25zdCBBbGxvY2F0b3JEaXNwYXRjaCosIHNpemVfdCBuLCBz aXplX3Qgc2l6ZSwgdm9pZCogY29udGV4dCkgewotKyAgaWYgKCFsaWJjX2NhbGxvYykKLSsgICAg bXVzbF9saWJjX21lbW9yeV9pbml0KCk7Ci0rICByZXR1cm4gKCpsaWJjX2NhbGxvYykobiwgc2l6 ZSk7Ci0rfQotKwotK3ZvaWQqIE11c2xSZWFsbG9jKGNvbnN0IEFsbG9jYXRvckRpc3BhdGNoKiwg dm9pZCogYWRkcmVzcywgc2l6ZV90IHNpemUsIHZvaWQqIGNvbnRleHQpIHsKLSsgIGlmICghbGli Y19yZWFsbG9jKQotKyAgICBtdXNsX2xpYmNfbWVtb3J5X2luaXQoKTsKLSsgIHJldHVybiAoKmxp YmNfcmVhbGxvYykoYWRkcmVzcywgc2l6ZSk7Ci0rfQotKwotK3ZvaWQqIE11c2xNZW1hbGlnbihj b25zdCBBbGxvY2F0b3JEaXNwYXRjaCosIHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplLCB2 b2lkKiBjb250ZXh0KSB7Ci0rICBpZiAoIWxpYmNfbWVtYWxpZ24pCi0rICAgIG11c2xfbGliY19t ZW1vcnlfaW5pdCgpOwotKyAgcmV0dXJuICgqbGliY19tZW1hbGlnbikoYWxpZ25tZW50LCBzaXpl KTsKLSt9Ci0rCi0rdm9pZCBNdXNsRnJlZShjb25zdCBBbGxvY2F0b3JEaXNwYXRjaCosIHZvaWQq IGFkZHJlc3MsIHZvaWQqIGNvbnRleHQpIHsKLSsgIGlmICghbGliY19mcmVlKQotKyAgICBtdXNs X2xpYmNfbWVtb3J5X2luaXQoKTsKLSsgICgqbGliY19mcmVlKShhZGRyZXNzKTsKLSt9Ci0rCi0r c2l6ZV90IE11c2xHZXRTaXplRXN0aW1hdGUoY29uc3QgQWxsb2NhdG9yRGlzcGF0Y2gqLCB2b2lk KiBhZGRyZXNzLCB2b2lkKiBjb250ZXh0KSB7Ci0rICAvLyBUT0RPKHNpZ2dpLCBwcmltaWFubyk6 IG1hbGxvY191c2FibGVfc2l6ZSBtYXkgbmVlZCByZWRpcmVjdGlvbiBpbiB0aGUKLSsgIC8vICAg ICBwcmVzZW5jZSBvZiBpbnRlcnBvc2luZyBzaGltcyB0aGF0IGRpdmVydCBhbGxvY2F0aW9ucy4K LSsgIGlmICghbGliY19tYWxsb2NfdXNhYmxlX3NpemUpCi0rICAgIG11c2xfbGliY19tZW1vcnlf aW5pdCgpOwotKyAgcmV0dXJuICgqbGliY19tYWxsb2NfdXNhYmxlX3NpemUpKGFkZHJlc3MpOwot K30KLSsKLSt9ICAvLyBuYW1lc3BhY2UKLSsKLStjb25zdCBBbGxvY2F0b3JEaXNwYXRjaCBBbGxv Y2F0b3JEaXNwYXRjaDo6ZGVmYXVsdF9kaXNwYXRjaCA9IHsKLSsgICAgJk11c2xNYWxsb2MsICAg ICAgICAgICAvKiBhbGxvY19mdW5jdGlvbiAqLwotKyAgICAmTXVzbENhbGxvYywgICAgICAgICAg IC8qIGFsbG9jX3plcm9faW5pdGlhbGl6ZWRfZnVuY3Rpb24gKi8KLSsgICAgJk11c2xNZW1hbGln biwgICAgICAgICAvKiBhbGxvY19hbGlnbmVkX2Z1bmN0aW9uICovCi0rICAgICZNdXNsUmVhbGxv YywgICAgICAgICAgLyogcmVhbGxvY19mdW5jdGlvbiAqLwotKyAgICAmTXVzbEZyZWUsICAgICAg ICAgICAgIC8qIGZyZWVfZnVuY3Rpb24gKi8KLSsgICAgJk11c2xHZXRTaXplRXN0aW1hdGUsICAv KiBnZXRfc2l6ZV9lc3RpbWF0ZV9mdW5jdGlvbiAqLwotKyAgICBudWxscHRyLCAgICAgICAgICAg ICAgIC8qIG5leHQgKi8KLSt9OwotKwotKyNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUv cGF0Y2hlcy8wMDA4LW11c2wtbm8tbWFsbGluZm8ucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVz LzAwMDgtbXVzbC1uby1tYWxsaW5mby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggYzMzMmI5MmI2OWQuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAw OC1tdXNsLW5vLW1hbGxpbmZvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAot LS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL3RyYWNlX2V2ZW50L21h bGxvY19kdW1wX3Byb3ZpZGVyLmNjCTIwMTctMTEtMjggMTQ6MDY6NTMuMDAwMDAwMDAwICswMTAw Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvdHJhY2VfZXZlbnQv bWFsbG9jX2R1bXBfcHJvdmlkZXIuY2MJMjAxOC0wMS0yNyAyMDoxMzoyNi45NjA5MzI4MDUgKzAx MDAKLUBAIC0yNDMsNyArMjQzLDcgQEAKLSAgIGFsbG9jYXRlZF9vYmplY3RzX2NvdW50ID0gbWFp bl9oZWFwX2luZm8uYmxvY2tfY291bnQ7Ci0gI2VsaWYgZGVmaW5lZChPU19GVUNIU0lBKQotIC8v IFRPRE8oZnVjaHNpYSk6IFBvcnQsIHNlZSBodHRwczovL2NyYnVnLmNvbS83MDY1OTIuCi0tI2Vs c2UKLSsjZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKLSAgIHN0cnVjdCBtYWxsaW5mbyBpbmZvID0g bWFsbGluZm8oKTsKLSAgIERDSEVDS19HRShpbmZvLmFyZW5hICsgaW5mby5oYmxraGQsIGluZm8u dW9yZGJsa3MpOwotIAotQEAgLTI1NSw2ICsyNTUsOCBAQAotIAotICAgLy8gVG90YWwgYWxsb2Nh dGVkIHNwYWNlIGlzIGdpdmVuIGJ5IHx1b3JkYmxrc3wuCi0gICBhbGxvY2F0ZWRfb2JqZWN0c19z aXplID0gaW5mby51b3JkYmxrczsKLSsjZWxzZQotKy8vIG11c2wgbGliYyBkb2VzIG5vdCBzdXBw b3J0IG1hbGxpbmZvKCkKLSAjZW5kaWYKLSAKLSAgIE1lbW9yeUFsbG9jYXRvckR1bXAqIG91dGVy X2R1bXAgPSBwbWQtPkNyZWF0ZUFsbG9jYXRvckR1bXAoIm1hbGxvYyIpOwotLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL3Byb2Nlc3MvcHJvY2Vzc19tZXRyaWNzX3Bv c2l4LmNjCTIwMTctMTEtMjggMTQ6MDY6NTMuMDAwMDAwMDAwICswMTAwCi0rKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvcHJvY2Vzcy9wcm9jZXNzX21ldHJpY3NfcG9z aXguY2MJMjAxOC0wMS0yNyAyMDo0ODoxMS41NzEwNDAzNDggKzAxMDAKLUBAIC0xMDAsMTQgKzEw MCwxNCBAQAotICAgbWFsbG9jX3N0YXRpc3RpY3NfdCBzdGF0cyA9IHswfTsKLSAgIG1hbGxvY196 b25lX3N0YXRpc3RpY3MobnVsbHB0ciwgJnN0YXRzKTsKLSAgIHJldHVybiBzdGF0cy5zaXplX2lu X3VzZTsKLS0jZWxpZiBkZWZpbmVkKE9TX0xJTlVYKSB8fCBkZWZpbmVkKE9TX0FORFJPSUQpCi0r I2VsaWYgKGRlZmluZWQoT1NfTElOVVgpICYmIGRlZmluZWQoX19HTElCQ19fKSkgfHwgZGVmaW5l ZChPU19BTkRST0lEKQotICAgc3RydWN0IG1hbGxpbmZvIG1pbmZvID0gbWFsbGluZm8oKTsKLSAj aWYgZGVmaW5lZChVU0VfVENNQUxMT0MpCi0gICByZXR1cm4gbWluZm8udW9yZGJsa3M7Ci0gI2Vs c2UKLSAgIHJldHVybiBtaW5mby5oYmxraGQgKyBtaW5mby5hcmVuYTsKLSAjZW5kaWYKLS0jZWxp ZiBkZWZpbmVkKE9TX0ZVQ0hTSUEpCi0rI2Vsc2UgLy9pZiBkZWZpbmVkKE9TX0ZVQ0hTSUEpIC8v IGFsc28gbXVzbCBkb2Vzbid0IGRvIHRoaXMuCi0gICAvLyBUT0RPKGZ1Y2hzaWEpOiBOb3QgY3Vy cmVudGx5IGV4cG9zZWQuIGh0dHBzOi8vY3JidWcuY29tLzczNTA4Ny4KLSAgIHJldHVybiAwOwot ICNlbmRpZgotCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMDktbXVzbC1vZmZf dC5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAwOS1tdXNsLW9mZl90LnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MmRiM2I5ZWJmNC4uMDAwMDAwMDAwMDAKLS0tIGEv c3JjcGtncy9xdDUvcGF0Y2hlcy8wMDA5LW11c2wtb2ZmX3QucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSwxMCArMCwwIEBACi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L290cy9pbmNsdWRlL29wZW50eXBlLXNhbml0aXNlci5oCTIwMTYtMDUtMjYgMTQ6 NTg6NTQuMDAwMDAwMDAwICswMjAwCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L290cy9pbmNsdWRlL29wZW50eXBlLXNhbml0aXNlci5oCTIwMTYtMTAt MDEgMTQ6MzE6MzAuODg1MDAwMDAwICswMjAwCi1AQCAtMjEsNiArMjEsNyBAQAotICNkZWZpbmUg aHRvbnMoeCkgX2J5dGVzd2FwX3VzaG9ydCAoeCkKLSAjZWxzZQotICNpbmNsdWRlIDxhcnBhL2lu ZXQuaD4KLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN0ZGludC5oPgotICNl bmRpZgotIApkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDEwLW11c2wtcHJlYWQt cHdyaXRlLnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDEwLW11c2wtcHJlYWQtcHdyaXRl LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAxN2JiYTAxNy4uMDAwMDAw MDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDEwLW11c2wtcHJlYWQtcHdyaXRlLnBh dGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9sc3MvbGludXhfc3lzY2FsbF9zdXBwb3J0LmgJ MjAxOC0wOS0wNyAyMToyNToyNi42Mzk5NjQxMDAgKzAyMDAKLSsrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvbHNzL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5o CTIwMTgtMDktMDcgMjE6MjU6MTEuNjExOTY0OTk1ICswMjAwCi1AQCAtMTc5NCw2ICsxNzk0LDE1 IEBACi0gLyogRW5kIG9mIHMzOTAvczM5MHggZGVmaW5pdGlvbnMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICNlbmRpZgotIAotKyNpZm5kZWYgX19HTElC Q19fCi0rICAvKiBGb3IgTXVzbCBsaWJjIHByZWFkL3ByZWFkIGlzIHRoZSBzYW1lIGFzIHByZWFk NjQvcHdyaXRlNjQgKi8KLSsjaWZuZGVmIF9fTlJfcHJlYWQKLSsjZGVmaW5lIF9fTlJfcHJlYWQg ICAgICAgICAgICAgIF9fTlJfcHJlYWQ2NAotKyNlbmRpZgotKyNpZm5kZWYgX19OUl9wd3JpdGUK LSsjZGVmaW5lIF9fTlJfcHdyaXRlICAgICAgICAgICAgIF9fTlJfcHdyaXRlNjQKLSsjZW5kaWYK LSsjZW5kaWYgLyogaWZuZGVmIF9fR0xJQkNfXyAqLwotIAotIC8qIEFmdGVyIGZvcmtpbmcsIHdl IG11c3QgbWFrZSBzdXJlIHRvIG9ubHkgY2FsbCBzeXN0ZW0gY2FsbHMuICAgICAgICAgICAgICAg Ki8KLSAjaWYgZGVmaW5lZChfX0JPVU5ERURfUE9JTlRFUlNfXykKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvcXQ1L3BhdGNoZXMvMDAxMS1tdXNsLXJlcGxhY2UtcHZhbGxvYy5wYXRjaCBiL3NyY3BrZ3Mv cXQ1L3BhdGNoZXMvMDAxMS1tdXNsLXJlcGxhY2UtcHZhbGxvYy5wYXRjaApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggZDVjYWYzODM2ZDcuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3Mv cXQ1L3BhdGNoZXMvMDAxMS1tdXNsLXJlcGxhY2UtcHZhbGxvYy5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDE0ICswLDAgQEAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvY29yZS9hcGkvcXRidWctNjE1 MjEuY3BwCTIwMTctMTEtMjkgMDk6NDI6MjkuMDAwMDAwMDAwICswMTAwCi0rKysgcXR3ZWJlbmdp bmUvc3JjL2NvcmUvYXBpL3F0YnVnLTYxNTIxLmNwcAkyMDE4LTAxLTI4IDA2OjQ5OjI5LjQ1NDE3 NTcyNSArMDEwMAotQEAgLTExMSw3ICsxMTEsMTEgQEAKLSB9Ci0gCi0gU0hJTV9ISURERU4gdm9p ZCogU2hpbVB2YWxsb2Moc2l6ZV90IHNpemUpIHsKLSsjaWYgZGVmaW5lZChfX0dMSUJDX18pCi0g ICAgIHJldHVybiBwdmFsbG9jKHNpemUpOwotKyNlbHNlCi0rICAgIHJldHVybiB2YWxsb2MoKHNp emUrNDA5NSkmfjQwOTUpOwotKyNlbmRpZgotIH0KLSAKLSBTSElNX0hJRERFTiBpbnQgU2hpbVBv c2l4TWVtYWxpZ24odm9pZCoqIHIsIHNpemVfdCBhLCBzaXplX3QgcykgewpkaWZmIC0tZ2l0IGEv c3JjcGtncy9xdDUvcGF0Y2hlcy8wMDEyLW11c2wtcmVzb2x2ZS5wYXRjaCBiL3NyY3BrZ3MvcXQ1 L3BhdGNoZXMvMDAxMi1tdXNsLXJlc29sdmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IGVkZmNlYjc5ZjMwLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVz LzAwMTItbXVzbC1yZXNvbHZlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAot LS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9uZXQvZG5zL2Ruc19yZWxvYWRl ci5jYwkyMDE2LTExLTA3IDE1OjQ2OjE4LjAwMDAwMDAwMCArMDEwMAotKysrIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9uZXQvZG5zL2Ruc19yZWxvYWRlci5jYwkyMDE2LTEyLTIw IDAzOjMzOjExLjc0OTA1OTY1NiArMDEwMAotQEAgLTksNiArOSwxMCBAQAotIAotICNpbmNsdWRl IDxyZXNvbHYuaD4KLSAKLSsjaWYgIWRlZmluZWQoX19HTElCQ19fKQotKyNpbmNsdWRlICJyZXNv bHZfY29tcGF0LmgiCi0rI2VuZGlmCi0rCi0gI2luY2x1ZGUgImJhc2UvbGF6eV9pbnN0YW5jZS5o IgotICNpbmNsdWRlICJiYXNlL2xvZ2dpbmcuaCIKLSAjaW5jbHVkZSAiYmFzZS9tYWNyb3MuaCIK LS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbmV0L2Rucy9kbnNfY29uZmln X3NlcnZpY2VfcG9zaXguY2MJMjAxNi0xMS0wNyAxNTo0NjoxOC4wMDAwMDAwMDAgKzAxMDAKLSsr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbmV0L2Rucy9kbnNfY29uZmlnX3Nl cnZpY2VfcG9zaXguY2MJMjAxNi0xMi0yMCAwMzo0MDowNy42NzE5NTMwOTggKzAxMDAKLUBAIC02 LDYgKzYsMTAgQEAKLSAKLSAjaW5jbHVkZSA8c3RyaW5nPgotIAotKyNpZiAhZGVmaW5lZChfX0dM SUJDX18pCi0rI2luY2x1ZGUgInJlc29sdl9jb21wYXQuaCIKLSsjZW5kaWYKLSsKLSAjaW5jbHVk ZSAiYmFzZS9iaW5kLmgiCi0gI2luY2x1ZGUgImJhc2UvZmlsZXMvZmlsZS5oIgotICNpbmNsdWRl ICJiYXNlL2ZpbGVzL2ZpbGVfcGF0aC5oIgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hl cy8wMDE1LW11c2wtc2lnaW5mb190LnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDE1LW11 c2wtc2lnaW5mb190LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTc2MGJl MTY2Ni4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDE1LW11c2wtc2ln aW5mb190LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlcmUncyBhIHN1 YnRsZSBkaWZmZXJlbmNlIGluIHRoZSBpbnRlcm5hbCBuYW1lIG9mIHNpZ2luZm9fdCBmaWVsZHMK LWJldHdlZW4gZ2xpYmMgYW5kIG11c2wuIFRoZSBzdHJ1Y3R1cmUgaXRzZWxmIGlzIGVxdWl2YWxl bnQsIHNvIGl0Ci1zaG91bGQgc3VmZmljZSB0byBhZGQgYSBtYWNybyB0byByZW5hbWUgdGhlIGZp ZWxkLgotCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGlu dXgvc2VjY29tcC1icGYvdHJhcC5jYwkyMDE1LTAyLTE3IDA1OjU3OjQzLjAwMDAwMDAwMCArMDEw MAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3Nl Y2NvbXAtYnBmL3RyYXAuY2MJMjAxNS0wNi0wMyAwODoyMDoyNS4wMzI3MTY0MjcgKzAyMDAKLUBA IC0yMiw2ICsyMiwxMSBAQAotICNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3NlcnZpY2VzL2FuZHJv aWRfdWNvbnRleHQuaCIKLSAjZW5kaWYKLQotKy8vIG11c2wgbGliYyBkZWZpbmVzIHNpZ2luZm9f dCBfX3NpX2ZpZWxkcyBpbnN0ZWFkIG9mIF9zaWZpZWxkcwotKyNpZiAhZGVmaW5lZChfX0dMSUJD X18pCi0rI2RlZmluZSBfc2lmaWVsZHMgX19zaV9maWVsZHMKLSsjZW5kaWYKLSsKLSBuYW1lc3Bh Y2UgewotCi0gY29uc3QgaW50IGtDYXBhY2l0eUluY3JlbWVudCA9IDIwOwpkaWZmIC0tZ2l0IGEv c3JjcGtncy9xdDUvcGF0Y2hlcy8wMDE3LW11c2wtc3RhY2tzdGFydC5wYXRjaCBiL3NyY3BrZ3Mv cXQ1L3BhdGNoZXMvMDAxNy1tdXNsLXN0YWNrc3RhcnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDU3MTM2YmMyYmNkLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9w YXRjaGVzLzAwMTctbXVzbC1zdGFja3N0YXJ0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjAg KzAsMCBAQAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0 eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS93dGYvc3RhY2tfdXRpbC5jYwkyMDE4LTAxLTI3IDIz OjA4OjQzLjU4NjQ3NTM0OSArMDEwMAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS93dGYvc3RhY2tfdXRpbC5j YwkyMDE4LTAxLTI3IDIzOjE4OjIyLjI3NDUwNTIwMyArMDEwMAotQEAgLTI4LDcgKzI4LDcgQEAK LSAvLyBGSVhNRTogT24gTWFjIE9TWCBhbmQgTGludXgsIHRoaXMgbWV0aG9kIGNhbm5vdCBlc3Rp bWF0ZSBzdGFjayBzaXplCi0gLy8gY29ycmVjdGx5IGZvciB0aGUgbWFpbiB0aHJlYWQuCi0gCi0t I2lmIGRlZmluZWQoX19HTElCQ19fKSB8fCBkZWZpbmVkKE9TX0FORFJPSUQpIHx8IGRlZmluZWQo T1NfRlJFRUJTRCkgfHwgXAotKyNpZiBkZWZpbmVkKE9TX0xJTlVYKSB8fCBkZWZpbmVkKE9TX0FO RFJPSUQpIHx8IGRlZmluZWQoT1NfRlJFRUJTRCkgfHwgXAotICAgICBkZWZpbmVkKE9TX0ZVQ0hT SUEpCi0gICAvLyBwdGhyZWFkX2dldGF0dHJfbnAoKSBjYW4gZmFpbCBpZiB0aGUgdGhyZWFkIGlz IG5vdCBpbnZva2VkIGJ5Ci0gICAvLyBwdGhyZWFkX2NyZWF0ZSgpIChlLmcuLCB0aGUgbWFpbiB0 aHJlYWQgb2Ygd2Via2l0X3VuaXRfdGVzdHMpLgotQEAgLTk2LDcgKzk2LDcgQEAKLSB9Ci0gCi0g dm9pZCogR2V0U3RhY2tTdGFydCgpIHsKLS0jaWYgZGVmaW5lZChfX0dMSUJDX18pIHx8IGRlZmlu ZWQoT1NfQU5EUk9JRCkgfHwgZGVmaW5lZChPU19GUkVFQlNEKSB8fCBcCi0rI2lmIGRlZmluZWQo T1NfTElOVVgpIHx8IGRlZmluZWQoT1NfQU5EUk9JRCkgfHwgZGVmaW5lZChPU19GUkVFQlNEKSB8 fCBcCi0gICAgIGRlZmluZWQoT1NfRlVDSFNJQSkKLSAgIHB0aHJlYWRfYXR0cl90IGF0dHI7Ci0g ICBpbnQgZXJyb3I7CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMjAtbXVzbC1z YW5kYm94LnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDIwLW11c2wtc2FuZGJveC5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDNkZTFlNDExODMuLjAwMDAwMDAwMDAw Ci0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAyMC1tdXNsLXNhbmRib3gucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3BhcmFtZXRl cnNfcmVzdHJpY3Rpb25zLmNjCTIwMTgtMDYtMTUgMDk6NDc6MjAuMDAwMDAwMDAwICswMjAwCi0r KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29t cC1icGYtaGVscGVycy9zeXNjYWxsX3BhcmFtZXRlcnNfcmVzdHJpY3Rpb25zLmNjCTIwMTgtMDkt MTMgMTk6NTM6NTMuNDUzNzgwMjUzICswMjAwCi1AQCAtMTI5LDcgKzEyOSw3IEBACi0gLy8gQ0xP TkVfVk0sIG5vciBDTE9ORV9USFJFQUQsIHdoaWNoIGluY2x1ZGVzIGFsbCBmb3JrKCkgaW1wbGVt ZW50YXRpb25zLgotIFJlc3VsdEV4cHIgUmVzdHJpY3RDbG9uZVRvVGhyZWFkc0FuZEVQRVJNRm9y aygpIHsKLSAgIGNvbnN0IEFyZzx1bnNpZ25lZCBsb25nPiBmbGFncygwKTsKLS0KLSsjaWYgZGVm aW5lZChfX0dMSUJDX18pCi0gICAvLyBUT0RPKG1kZW1wc2t5KTogRXh0ZW5kIERTTCB0byBzdXBw b3J0IChmbGFncyAmIH5tYXNrMSkgPT0gbWFzazIuCi0gICBjb25zdCB1aW50NjRfdCBrQW5kcm9p ZENsb25lTWFzayA9IENMT05FX1ZNIHwgQ0xPTkVfRlMgfCBDTE9ORV9GSUxFUyB8Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENMT05FX1NJR0hBTkQgfCBDTE9ORV9USFJF QUQgfAotQEAgLTE0OCw2ICsxNDgsMTcgQEAKLSAgIHJldHVybiBJZihJc0FuZHJvaWQoKSA/IGFu ZHJvaWRfdGVzdCA6IGdsaWJjX3Rlc3QsIEFsbG93KCkpCi0gICAgICAgLkVsc2VJZigoZmxhZ3Mg JiAoQ0xPTkVfVk0gfCBDTE9ORV9USFJFQUQpKSA9PSAwLCBFcnJvcihFUEVSTSkpCi0gICAgICAg LkVsc2UoQ3Jhc2hTSUdTWVNDbG9uZSgpKTsKLSsjZWxzZQotKyAgY29uc3QgaW50IHJlcXVpcmVk ID0gQ0xPTkVfVk0gfCBDTE9ORV9GUyB8IENMT05FX0ZJTEVTIHwgQ0xPTkVfU0lHSEFORCB8Ci0r ICAgICAgICAgICAgICAgICAgICAgICBDTE9ORV9USFJFQUQgfCBDTE9ORV9TWVNWU0VNOwotKyAg Y29uc3QgaW50IHNhZmUgPSBDTE9ORV9TRVRUTFMgfCBDTE9ORV9QQVJFTlRfU0VUVElEIHwgQ0xP TkVfQ0hJTERfQ0xFQVJUSUQgfAotKyAgICAgICAgICAgICAgICAgICBDTE9ORV9ERVRBQ0hFRDsK LSsgIGNvbnN0IEJvb2xFeHByIHRocmVhZF9jbG9uZV9vayA9IChmbGFncyZ+c2FmZSk9PXJlcXVp cmVkOwotKwotKyAgcmV0dXJuIElmKHRocmVhZF9jbG9uZV9vaywgQWxsb3coKSkKLSsgICAgICAu RWxzZUlmKChmbGFncyAmIChDTE9ORV9WTSB8IENMT05FX1RIUkVBRCkpID09IDAsIEVycm9yKEVQ RVJNKSkKLSsgICAgICAuRWxzZShDcmFzaFNJR1NZU0Nsb25lKCkpOwotKyNlbmRpZgotIH0KLSAK LSBSZXN1bHRFeHByIFJlc3RyaWN0UHJjdGwoKSB7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3Nl dHMuY2MJMjAxOC0wNi0xNSAwOTo0NzoyMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJz L3N5c2NhbGxfc2V0cy5jYwkyMDE4LTA5LTEzIDE5OjU2OjMxLjc3OTc3Mzk0MCArMDIwMAotQEAg LTM3NSw2ICszNzUsOSBAQAotICNpZiBkZWZpbmVkKF9faTM4Nl9fKQotICAgICBjYXNlIF9fTlJf d2FpdHBpZDoKLSAjZW5kaWYKLSsjaWYgIWRlZmluZWQoX19HTElCQ19fKQotKyAgICBjYXNlIF9f TlJfc2V0X3RpZF9hZGRyZXNzOgotKyNlbmRpZgotICAgICAgIHJldHVybiB0cnVlOwotICAgICBj YXNlIF9fTlJfY2xvbmU6ICAvLyBTaG91bGQgYmUgcGFyYW1ldGVyLXJlc3RyaWN0ZWQuCi0gICAg IGNhc2UgX19OUl9zZXRuczogIC8vIFByaXZpbGVnZWQuCi1AQCAtMzg3LDcgKzM5MCw5IEBACi0g I2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChf X21pcHNfXykKLSAgICAgY2FzZSBfX05SX3NldF90aHJlYWRfYXJlYToKLSAjZW5kaWYKLSsjaWYg ZGVmaW5lZChfX0dMSUJDX18pCi0gICAgIGNhc2UgX19OUl9zZXRfdGlkX2FkZHJlc3M6Ci0rI2Vu ZGlmCi0gICAgIGNhc2UgX19OUl91bnNoYXJlOgotICNpZiAhZGVmaW5lZChfX21pcHNfXykgJiYg IWRlZmluZWQoX19hYXJjaDY0X18pCi0gICAgIGNhc2UgX19OUl92Zm9yazoKLUBAIC00OTYsNiAr NTAxLDkgQEAKLSAgICAgY2FzZSBfX05SX21sb2NrOgotICAgICBjYXNlIF9fTlJfbXVubG9jazoK LSAgICAgY2FzZSBfX05SX211bm1hcDoKLSsjaWYgIWRlZmluZWQoX19HTElCQ19fKQotKyAgICBj YXNlIF9fTlJfbXJlbWFwOgotKyNlbmRpZgotICAgICAgIHJldHVybiB0cnVlOwotICAgICBjYXNl IF9fTlJfbWFkdmlzZToKLSAgICAgY2FzZSBfX05SX21pbmNvcmU6Ci1AQCAtNTExLDcgKzUxOSw5 IEBACi0gICAgIGNhc2UgX19OUl9tb2RpZnlfbGR0OgotICNlbmRpZgotICAgICBjYXNlIF9fTlJf bXByb3RlY3Q6Ci0rI2lmIGRlZmluZWQoX19HTElCQ19fKQotICAgICBjYXNlIF9fTlJfbXJlbWFw OgotKyNlbmRpZgotICAgICBjYXNlIF9fTlJfbXN5bmM6Ci0gICAgIGNhc2UgX19OUl9tdW5sb2Nr YWxsOgotICAgICBjYXNlIF9fTlJfcmVhZGFoZWFkOgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUv cGF0Y2hlcy8wMDIzLWVuYWJsZV90b29scy1jcm9zcy5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNo ZXMvMDAyMy1lbmFibGVfdG9vbHMtY3Jvc3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDllYWM0ZTcwZWZhLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVz LzAwMjMtZW5hYmxlX3Rvb2xzLWNyb3NzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAs MCBAQAotLS0tIHF0dG9vbHMvc3JjL3NyYy5wcm8JMjAxOC0wNi0wOSAxMzoxMDozOC4wMDAwMDAw MDAgKzAyMDAKLSsrKyBxdHRvb2xzL3NyYy9zcmMucHJvCTIwMTgtMDgtMTkgMDk6MzQ6MjkuODAz NjcwMjA1ICswMjAwCi1AQCAtMSwyMCArMSwxNCBAQAotIFRFTVBMQVRFID0gc3ViZGlycwotIAot LXF0SGF2ZU1vZHVsZSh3aWRnZXRzKSB7Ci0tICAgIG5vLXBuZyB7Ci0tICAgICAgICBtZXNzYWdl KCJTb21lIGdyYXBoaWNzLXJlbGF0ZWQgdG9vbHMgYXJlIHVuYXZhaWxhYmxlIHdpdGhvdXQgUE5H IHN1cHBvcnQiKQotLSAgICB9IGVsc2UgewotLSAgICAgICAgUVRfRk9SX0NPTkZJRyArPSB3aWRn ZXRzCi0tICAgICAgICBxdENvbmZpZyhwdXNoYnV0dG9uKTpxdENvbmZpZyh0b29sYnV0dG9uKSB7 Ci0tICAgICAgICAgICAgU1VCRElSUyA9IGFzc2lzdGFudCBcCi0tICAgICAgICAgICAgICAgICAg ICAgIGRlc2lnbmVyIFwKLS0gICAgICAgICAgICAgICAgICAgICAgcGl4ZWx0b29sCi0tCi0tICAg ICAgICAgICAgbGluZ3Vpc3QuZGVwZW5kcyA9IGRlc2lnbmVyCi0tICAgICAgICB9Ci0tICAgICAg ICBxdEhhdmVNb2R1bGUocXVpY2spOnF0Q29uZmlnKHRocmVhZCk6cXRDb25maWcodG9vbGJ1dHRv bik6IFNVQkRJUlMgKz0gZGlzdGFuY2VmaWVsZGdlbmVyYXRvcgotLSAgICB9Ci0tfQotK1FUX0ZP Ul9DT05GSUcgKz0gd2lkZ2V0cwotKwotK1NVQkRJUlMgPSBhc3Npc3RhbnQgXAotKyAgICAgICAg ICBkZXNpZ25lciBcCi0rICAgICAgICAgIHBpeGVsdG9vbAotKwotK2xpbmd1aXN0LmRlcGVuZHMg PSBkZXNpZ25lcgotKwotK1NVQkRJUlMgKz0gZGlzdGFuY2VmaWVsZGdlbmVyYXRvcgotIAotIFNV QkRJUlMgKz0gbGluZ3Vpc3QgXAotICAgICBxdGF0dHJpYnV0aW9uc3NjYW5uZXIKLUBAIC0zMSwx MSArMjUsMTEgQEAgbWFjb3MgewotICAgICBTVUJESVJTICs9IG1hY2RlcGxveXF0Ci0gfQotIAot LXF0SGF2ZU1vZHVsZShkYnVzKTogU1VCRElSUyArPSBxZGJ1cwotK1NVQkRJUlMgKz0gcWRidXMK LSAKLSB3aW4zMnx3aW5ydDpTVUJESVJTICs9IHdpbmRlcGxveXF0Ci0gd2lucnQ6U1VCRElSUyAr PSB3aW5ydHJ1bm5lcgotLXF0SGF2ZU1vZHVsZShndWkpOiF3YXNtOiFhbmRyb2lkOiF1aWtpdDoh cW54OiF3aW5ydDogU1VCRElSUyArPSBxdGRpYWcKLStTVUJESVJTICs9IHF0ZGlhZwotIAotIHF0 Tm9tYWtlVG9vbHMoIFwKLSAgICAgZGlzdGFuY2VmaWVsZGdlbmVyYXRvciBcCmRpZmYgLS1naXQg YS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMjUtbXVzbC1jaHJvbWl1bS1kZWZhdWx0LXN0YWNrc2l6 ZS5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAyNS1tdXNsLWNocm9taXVtLWRlZmF1bHQt c3RhY2tzaXplLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YmY1YTIyZmJh Ny4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDI1LW11c2wtY2hyb21p dW0tZGVmYXVsdC1zdGFja3NpemUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBA Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvdGhyZWFkaW5nL3Bs YXRmb3JtX3RocmVhZF9saW51eC5jYy5vcmlnCTIwMTgtMDktMTkgMTg6MDU6MTUuNTIzOTIzNzAz ICswMjAwCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvdGhyZWFk aW5nL3BsYXRmb3JtX3RocmVhZF9saW51eC5jYwkyMDE4LTA5LTE5IDE4OjA4OjA1LjE1MDkzMjQ1 NCArMDIwMAotQEAgLTE3Myw3ICsxNzMsMTIgQEAKLSAKLSBzaXplX3QgR2V0RGVmYXVsdFRocmVh ZFN0YWNrU2l6ZShjb25zdCBwdGhyZWFkX2F0dHJfdCYgYXR0cmlidXRlcykgewotICNpZiAhZGVm aW5lZChUSFJFQURfU0FOSVRJWkVSKQotKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKLSAgIHJldHVy biAwOwotKyNlbHNlIC8vIGRlZmluZWQoX19HTElCQ19fKQotKyAgLy8gRm9yIE11c2wgbGliYyB0 cnkgd2l0aCBhIGRlZmF1bHQgc3RhY2sgc2l6ZSBvZiAyIE1pQgotKyAgcmV0dXJuIDIgKiAxMDI0 ICogMTAyNDsKLSsjZW5kaWYgLy8gIWRlZmluZWQoX19HTElCQ19fKQotICNlbHNlCi0gICAvLyBU aHJlYWRTYW5pdGl6ZXIgYmxvYXRzIHRoZSBzdGFjayBoZWF2aWx5LiBFdmlkZW5jZSBoYXMgYmVl biB0aGF0IHRoZQotICAgLy8gZGVmYXVsdCBzdGFjayBzaXplIGlzbid0IGVub3VnaCBmb3Igc29t ZSBicm93c2VyIHRlc3RzLgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDI2LWRh dGFfcGFjay1iZS5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAyNi1kYXRhX3BhY2stYmUu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxMTNkZGI2NTY2Li4wMDAwMDAw MDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMjYtZGF0YV9wYWNrLWJlLnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS91aS9iYXNlL3Jlc291cmNlL2RhdGFfcGFjay5jYy5vcmlnCTIwMTgtMDktMTEg MTQ6MTY6NTMuMTA0ODk3Mzc5ICswMjAwCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3VpL2Jhc2UvcmVzb3VyY2UvZGF0YV9wYWNrLmNjCTIwMTgtMDktMTEgMTQ6MTc6MTIu MDA5ODk2MjUzICswMjAwCi1AQCAtMzgzLDEyICszODMsNiBAQAotIAotIGJvb2wgRGF0YVBhY2s6 OkdldFN0cmluZ1BpZWNlKHVpbnQxNl90IHJlc291cmNlX2lkLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJhc2U6OlN0cmluZ1BpZWNlKiBkYXRhKSBjb25zdCB7Ci0tICAvLyBJdCB3 b24ndCBiZSBoYXJkIHRvIG1ha2UgdGhpcyBlbmRpYW4tYWdub3N0aWMsIGJ1dCBpdCdzIG5vdCB3 b3J0aAotLSAgLy8gYm90aGVyaW5nIHRvIGRvIHJpZ2h0IG5vdy4KLS0jaWYgIWRlZmluZWQoQVJD SF9DUFVfTElUVExFX0VORElBTikKLS0jZXJyb3IgImRhdGFwYWNrIGFzc3VtZXMgbGl0dGxlIGVu ZGlhbiIKLS0jZW5kaWYKLS0KLSAgIGNvbnN0IEVudHJ5KiB0YXJnZXQgPSBMb29rdXBFbnRyeUJ5 SWQocmVzb3VyY2VfaWQpOwotICAgaWYgKCF0YXJnZXQpCi0gICAgIHJldHVybiBmYWxzZTsKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAyNy1yZW1vdmUtZ2xpYmMtY2hlY2sucGF0 Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMjctcmVtb3ZlLWdsaWJjLWNoZWNrLnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDBhYjg0OWMwMS4uMDAwMDAwMDAwMDAKLS0t IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDI3LXJlbW92ZS1nbGliYy1jaGVjay5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLS0tLSBxdHdlYmVuZ2luZS9jb25maWcudGVzdHMv Z2xpYmMvZ2xpYmMuY3BwCi0rKysgcXR3ZWJlbmdpbmUvY29uZmlnLnRlc3RzL2dsaWJjL2dsaWJj LmNwcAotQEAgLTI4LDEwICsyOCw2IEBACi0gCi0gI2luY2x1ZGUgPGZlYXR1cmVzLmg+Ci0gCi0t I2lmIF9fR0xJQkNfXyA8IDIgfHwgX19HTElCQ19NSU5PUl9fIDwgMTcKLS0jZXJyb3IgZ2xpYmMg dmVyc2lvbnMgYmVsb3cgMi4xNyBhcmUgbm90IHN1cHBvcnRlZAotLSNlbmRpZgotLQotIGludCBt YWluKGludCAsIGNoYXIgKiopIHsKLSAgIHJldHVybiAwOwotIH0KZGlmZiAtLWdpdCBhL3NyY3Br Z3MvcXQ1L3BhdGNoZXMvMDAzMi1tdXNsLWNyb3NzLW5vLWFzbV9wdHJhY2VfaC5wYXRjaCBiL3Ny Y3BrZ3MvcXQ1L3BhdGNoZXMvMDAzMi1tdXNsLWNyb3NzLW5vLWFzbV9wdHJhY2VfaC5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTQwNzQyZjcyYzIuLjAwMDAwMDAwMDAwCi0t LSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAzMi1tdXNsLWNyb3NzLW5vLWFzbV9wdHJhY2VfaC5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLS0tLSBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVu dC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfcHRyYWNlX2R1bXBlci5jYwkyMDE4LTA4LTI3 IDEwOjIxOjMxLjAwMDAwMDAwMCArMDIwMAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21p bmlkdW1wX3dyaXRlci9saW51eF9wdHJhY2VfZHVtcGVyLmNjCTIwMTgtMTEtMjIgMDA6NDE6NTgu NTIyNDc3NTU5ICswMTAwCi1AQCAtMzgsNyArMzgsMTIgQEAKLSAKLSAjaW5jbHVkZSAiY2xpZW50 L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9wdHJhY2VfZHVtcGVyLmgiCi0gCi0rI2lmIGRl ZmluZWQoX19HTElCQ19fKQotICNpbmNsdWRlIDxhc20vcHRyYWNlLmg+Ci0rI2Vsc2UKLSsvKiBG b3IgYXJtKi1tdXNsIHRoaXMgZGVmaW5pdGlvbiBpcyBtaXNzaW5nICovCi0rI2RlZmluZSBBUk1f c3AgdXJlZ3NbMTNdCi0rI2VuZGlmCi0gI2luY2x1ZGUgPGFzc2VydC5oPgotICNpbmNsdWRlIDxl cnJuby5oPgotICNpbmNsdWRlIDxmY250bC5oPgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4 L21pbmlkdW1wX3dyaXRlci9saW51eF9jb3JlX2R1bXBlci5jYwkyMDE4LTA4LTI3IDEwOjIxOjMx LjAwMDAwMDAwMCArMDIwMAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dy aXRlci9saW51eF9jb3JlX2R1bXBlci5jYwkyMDE4LTExLTIyIDAwOjQ5OjM5LjUzMzQ5MjI0NSAr MDEwMAotQEAgLTMyLDcgKzMyLDEyIEBACi0gCi0gI2luY2x1ZGUgImNsaWVudC9saW51eC9taW5p ZHVtcF93cml0ZXIvbGludXhfY29yZV9kdW1wZXIuaCIKLSAKLSsjaWYgZGVmaW5lZChfX0dMSUJD X18pCi0gI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KLSsjZWxzZQotKy8qIEZvciBhcm0qLW11c2wg dGhpcyBkZWZpbml0aW9uIGlzIG1pc3NpbmcgKi8KLSsjZGVmaW5lIEFSTV9zcCB1cmVnc1sxM10K LSsjZW5kaWYKLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0gI2luY2x1ZGUgPGVsZi5oPgotICNpbmNs dWRlIDxzdGRpby5oPgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQwLXlhc20t bmxzLnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQwLXlhc20tbmxzLnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMmFjMDQyMDc2NC4uMDAwMDAwMDAwMDAKLS0tIGEv c3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQwLXlhc20tbmxzLnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsMTMgKzAsMCBAQAotZGlmZiAtLWdpdCBzcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkveWFzbS9zb3VyY2UvY29uZmlnL2xpbnV4L2NvbmZpZy5oIHNyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS95YXNtL3NvdXJjZS9jb25maWcvbGludXgvY29uZmlnLmgKLWluZGV4IDll MzY1MzkuLmY1ODgwODMgMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtLy90aGlyZF9wYXJ0eS95YXNtL3NvdXJjZS9jb25maWcvbGludXgvY29uZmlnLmgKLS0tLSBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL3RoaXJkX3BhcnR5L3lhc20vc291cmNl L2NvbmZpZy9saW51eC9jb25maWcuaAotQEAgLTUsNyArNSw3IEBACi0gI2RlZmluZSBDUFBfUFJP RyAiZ2NjIC1FIgotIAotIC8qICovCi0tI2RlZmluZSBFTkFCTEVfTkxTIDEKLSsvKiAjdW5kZWYg RU5BQkxFX05MUyAxICovCi0gCi0gLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBhYm9y dCcgZnVuY3Rpb24uICovCi0gI2RlZmluZSBIQVZFX0FCT1JUIDEKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvcXQ1L3BhdGNoZXMvMDA0Mi1hcm0tdm9pZC1pcy1ub3QtYW5kcm9pZC5wYXRjaCBiL3NyY3Br Z3MvcXQ1L3BhdGNoZXMvMDA0Mi1hcm0tdm9pZC1pcy1ub3QtYW5kcm9pZC5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjEzMjkwZDNjY2QuLjAwMDAwMDAwMDAwCi0tLSBhL3Ny Y3BrZ3MvcXQ1L3BhdGNoZXMvMDA0Mi1hcm0tdm9pZC1pcy1ub3QtYW5kcm9pZC5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vL3RoaXJkX3BhcnR5L29wZW5tYXhfZGwvZGwvQlVJTEQuZ24JMjAxOS0wNC0wOSAw OTozMToxNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyAtCTIwMTktMDUtMDYgMjM6MDg6MDkuNTM3MzQ2 NTQ2ICswMjAwCi1AQCAtMjA2LDE4ICsyMDYsNiBAQAotICAgICAgICJzcC9zcmMvYXJtL2FybXY3 L29teFNQX0ZGVEZ3ZF9SVG9DQ1NfRjMyX1Nmc19zLlMiLAotICAgICAgICJzcC9zcmMvYXJtL2Fy bXY3L29teFNQX0ZGVEludl9DQ1NUb1JfRjMyX1Nmc19zLlMiLAotICAgICBdCi0tICAgIGlmIChh cm1fb3B0aW9uYWxseV91c2VfbmVvbikgewotLSAgICAgICMgUnVuLXRpbWUgTkVPTiBkZXRlY3Rp b24uCi0tICAgICAgZGVwcyA9IFsKLS0gICAgICAgICIvL3RoaXJkX3BhcnR5L2FuZHJvaWRfdG9v bHM6Y3B1X2ZlYXR1cmVzIiwKLS0gICAgICBdCi0tCi0tICAgICAgIyBUbyBnZXQgdGhlIF9fYW5k cm9pZF9sb2dfcHJpbnQgcm91dGluZQotLSAgICAgIGxpYnMgPSBbICJsb2ciIF0KLS0KLS0gICAg ICAjIERldGVjdGlvbiByb3V0aW5lCi0tICAgICAgc291cmNlcyArPSBbICJzcC9zcmMvYXJtL2Rl dGVjdC5jIiBdCi0tICAgIH0KLSAgIH0KLSAKLSAgICMgTkVPTiBpbXBsZW1lbnRhdGlvbiBvZiBG RlQuIFRoaXMgbGlicmFyeSBpcyBOT1QKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMv MDA0NC1xdC1tdXNsLWV4ZWNpbmZvLnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQ0LXF0 LW11c2wtZXhlY2luZm8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4ZjNh Mzg3NDVhLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDQtcXQtbXVz bC1leGVjaW5mby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNyArMCwwIEBACi0tLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy9iYXNlL2RlYnVnL3N0YWNrX3RyYWNlX3Bv c2l4LmNjLm9yaWcJMjAxOS0wNC0wOSAwOTozMToxNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL2Jhc2UvZGVidWcvc3RhY2tfdHJhY2VfcG9z aXguY2MJMjAxOS0wNS0wNiAyMzoxNjoxMy4yNDU1MDI0NjcgKzAyMDAKLUBAIC0yNyw3ICsyNyw3 IEBACi0gI2lmICFkZWZpbmVkKFVTRV9TWU1CT0xJWkUpCi0gI2luY2x1ZGUgPGN4eGFiaS5oPgot ICNlbmRpZgotLSNpZiAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQotKyNp ZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKLSAjaW5jbHVkZSA8ZXhlY2lu Zm8uaD4KLSAjZW5kaWYKLSAKLUBAIC04Niw3ICs4Niw3IEBACi0gICAvLyBOb3RlOiBjb2RlIGlu IHRoaXMgZnVuY3Rpb24gaXMgTk9UIGFzeW5jLXNpZ25hbCBzYWZlIChzdGQ6OnN0cmluZyB1c2Vz Ci0gICAvLyBtYWxsb2MgaW50ZXJuYWxseSkuCi0gCi0tI2lmICFkZWZpbmVkKF9fVUNMSUJDX18p ICYmICFkZWZpbmVkKF9BSVgpCi0rI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChf QUlYKQotICAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBzZWFyY2hfZnJvbSA9IDA7Ci0gICB3aGls ZSAoc2VhcmNoX2Zyb20gPCB0ZXh0LT5zaXplKCkpIHsKLSAgICAgLy8gTG9vayBmb3IgdGhlIHN0 YXJ0IG9mIGEgbWFuZ2xlZCBzeW1ib2wsIGZyb20gc2VhcmNoX2Zyb20uCi1AQCAtMTIxLDcgKzEy MSw3IEBACi0gICAgICAgc2VhcmNoX2Zyb20gPSBtYW5nbGVkX3N0YXJ0ICsgMjsKLSAgICAgfQot ICAgfQotLSNlbmRpZiAgLy8gIWRlZmluZWQoX19VQ0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkK LSsjZW5kaWYgIC8vICFkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKLSB9Ci0g I2VuZGlmICAvLyAhZGVmaW5lZChVU0VfU1lNQk9MSVpFKQotIAotQEAgLTEzMyw3ICsxMzMsNyBA QAotICAgdmlydHVhbCB+QmFja3RyYWNlT3V0cHV0SGFuZGxlcigpID0gZGVmYXVsdDsKLSB9Owot IAotLSNpZiAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQotKyNpZiBkZWZp bmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKLSB2b2lkIE91dHB1dFBvaW50ZXIodm9p ZCogcG9pbnRlciwgQmFja3RyYWNlT3V0cHV0SGFuZGxlciogaGFuZGxlcikgewotICAgLy8gVGhp cyBzaG91bGQgYmUgbW9yZSB0aGFuIGVub3VnaCB0byBzdG9yZSBhIDY0LWJpdCBudW1iZXIgaW4g aGV4OgotICAgLy8gMTYgaGV4IGRpZ2l0cyArIDEgZm9yIG51bGwtdGVybWluYXRvci4KLUBAIC0y MTYsNyArMjE2LDcgQEAKLSAgIH0KLSAjZW5kaWYgIC8vIGRlZmluZWQoVVNFX1NZTUJPTElaRSkK LSB9Ci0tI2VuZGlmICAvLyAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQot KyNlbmRpZiAgLy8gIWRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQotIAotIHZv aWQgUHJpbnRUb1N0ZGVycihjb25zdCBjaGFyKiBvdXRwdXQpIHsKLSAgIC8vIE5PVEU6IFRoaXMg Y29kZSBNVVNUIGJlIGFzeW5jLXNpZ25hbCBzYWZlIChpdCdzIHVzZWQgYnkgaW4tcHJvY2Vzcwot QEAgLTgxMiw3ICs4MTIsNyBAQAotICAgLy8gTk9URTogVGhpcyBjb2RlIE1VU1QgYmUgYXN5bmMt c2lnbmFsIHNhZmUgKGl0J3MgdXNlZCBieSBpbi1wcm9jZXNzCi0gICAvLyBzdGFjayBkdW1waW5n IHNpZ25hbCBoYW5kbGVyKS4gTk8gbWFsbG9jIG9yIHN0ZGlvIGlzIGFsbG93ZWQgaGVyZS4KLSAK LS0jaWYgIWRlZmluZWQoX19VQ0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKLSsjaWYgZGVmaW5l ZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCi0gICAvLyBUaG91Z2ggdGhlIGJhY2t0cmFj ZSBBUEkgbWFuIHBhZ2UgZG9lcyBub3QgbGlzdCBhbnkgcG9zc2libGUgbmVnYXRpdmUKLSAgIC8v IHJldHVybiB2YWx1ZXMsIHdlIHRha2Ugbm8gY2hhbmNlLgotICAgcmV0dXJuIGJhc2U6OnNhdHVy YXRlZF9jYXN0PHNpemVfdD4oYmFja3RyYWNlKHRyYWNlLCBjb3VudCkpOwotQEAgLTgyNSwxMyAr ODI1LDEzIEBACi0gLy8gTk9URTogVGhpcyBjb2RlIE1VU1QgYmUgYXN5bmMtc2lnbmFsIHNhZmUg KGl0J3MgdXNlZCBieSBpbi1wcm9jZXNzCi0gLy8gc3RhY2sgZHVtcGluZyBzaWduYWwgaGFuZGxl cikuIE5PIG1hbGxvYyBvciBzdGRpbyBpcyBhbGxvd2VkIGhlcmUuCi0gCi0tI2lmICFkZWZpbmVk KF9fVUNMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCi0rI2lmIGRlZmluZWQoX19HTElCQ19fKSAm JiAhZGVmaW5lZChfQUlYKQotICAgUHJpbnRCYWNrdHJhY2VPdXRwdXRIYW5kbGVyIGhhbmRsZXI7 Ci0gICBQcm9jZXNzQmFja3RyYWNlKHRyYWNlXywgY291bnRfLCBwcmVmaXhfc3RyaW5nLCAmaGFu ZGxlcik7Ci0gI2VuZGlmCi0gfQotIAotLSNpZiAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVm aW5lZChfQUlYKQotKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKLSB2 b2lkIFN0YWNrVHJhY2U6Ok91dHB1dFRvU3RyZWFtV2l0aFByZWZpeChzdGQ6Om9zdHJlYW0qIG9z LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq IHByZWZpeF9zdHJpbmcpIGNvbnN0IHsKLSAgIFN0cmVhbUJhY2t0cmFjZU91dHB1dEhhbmRsZXIg aGFuZGxlcihvcyk7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2Uv ZGVidWcvc3RhY2tfdHJhY2UuY2MJMjAxOS0wNC0wOSAwOTozMToxNi4wMDAwMDAwMDAgKzAyMDAK LSsrKyAtCTIwMTktMDUtMDYgMjM6MTg6MTQuOTIzNTY2OTkyICswMjAwCi1AQCAtMjMzLDcgKzIz Myw3IEBACi0gfQotIHN0ZDo6c3RyaW5nIFN0YWNrVHJhY2U6OlRvU3RyaW5nV2l0aFByZWZpeChj b25zdCBjaGFyKiBwcmVmaXhfc3RyaW5nKSBjb25zdCB7Ci0gICBzdGQ6OnN0cmluZ3N0cmVhbSBz dHJlYW07Ci0tI2lmICFkZWZpbmVkKF9fVUNMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCi0rI2lm IGRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQotICAgT3V0cHV0VG9TdHJlYW1X aXRoUHJlZml4KCZzdHJlYW0sIHByZWZpeF9zdHJpbmcpOwotICNlbmRpZgotICAgcmV0dXJuIHN0 cmVhbS5zdHIoKTsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL2Jhc2Uv bG9nZ2luZy5jYwkyMDE3LTExLTI4IDE0OjA2OjUzLjAwMDAwMDAwMCArMDEwMAotLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vYmFzZS9sb2dnaW5nLmNjCTIwMTgtMDEtMjcg MjI6NDY6MzQuOTcwNDA2ODA3ICswMTAwCi1AQCAtNTQ2LDcgKzU0Niw3IEBACi0gCi0gTG9nTWVz c2FnZTo6fkxvZ01lc3NhZ2UoKSB7Ci0gICBzaXplX3Qgc3RhY2tfc3RhcnQgPSBzdHJlYW1fLnRl bGxwKCk7Ci0tI2lmICFkZWZpbmVkKE9GRklDSUFMX0JVSUxEKSAmJiAhZGVmaW5lZChPU19OQUNM KSAmJiAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiBcCi0rI2lmICFkZWZpbmVkKE9GRklDSUFMX0JV SUxEKSAmJiAhZGVmaW5lZChPU19OQUNMKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgXAotICAg ICAhZGVmaW5lZChPU19BSVgpCi0gICBpZiAoc2V2ZXJpdHlfID09IExPR19GQVRBTCAmJiAhYmFz ZTo6ZGVidWc6OkJlaW5nRGVidWdnZWQoKSkgewotICAgICAvLyBJbmNsdWRlIGEgc3RhY2sgdHJh Y2Ugb24gYSBmYXRhbCwgdW5sZXNzIGEgZGVidWdnZXIgaXMgYXR0YWNoZWQuCi0tLS0gcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3Bs YXRmb3JtL3d0Zi9hc3NlcnRpb25zLmNjCTIwMTktMDQtMDkgMDk6MzE6MTYuMDAwMDAwMDAwICsw MjAwCi0rKysgLQkyMDE5LTA1LTA2IDIzOjEyOjA3LjA0MDk3NzI1OCArMDIwMAotQEAgLTUxLDgg KzUxLDEwIEBACi0gI2lmIGRlZmluZWQoT1NfTUFDT1NYKSB8fCAoZGVmaW5lZChPU19MSU5VWCkg JiYgIWRlZmluZWQoX19VQ0xJQkNfXykpCi0gI2luY2x1ZGUgPGN4eGFiaS5oPgotICNpbmNsdWRl IDxkbGZjbi5oPgotKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKLSAjaW5jbHVkZSA8ZXhlY2luZm8u aD4KLSAjZW5kaWYKLSsjZW5kaWYKLSAKLSAjaWYgZGVmaW5lZChPU19BTkRST0lEKQotICNpbmNs dWRlIDxhbmRyb2lkL2xvZy5oPgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQ1 LXF0LW11c2wtdGhyZWFkLXN0YWNrc2l6ZS5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0 NS1xdC1tdXNsLXRocmVhZC1zdGFja3NpemUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDQ5Njc1M2JlZjMwLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVz LzAwNDUtcXQtbXVzbC10aHJlYWQtc3RhY2tzaXplLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs MjYgKzAsMCBAQAotZGlmZiAtLWdpdCBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9wcGFwaS91dGls aXR5L3RocmVhZGluZy9zaW1wbGVfdGhyZWFkLmNjIGIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Bw YXBpL3V0aWxpdHkvdGhyZWFkaW5nL3NpbXBsZV90aHJlYWQuY2MKLWluZGV4IDAyYmY0OWIuLjA1 ZWUxODIgMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3BwYXBp L3V0aWxpdHkvdGhyZWFkaW5nL3NpbXBsZV90aHJlYWQuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vcHBhcGkvdXRpbGl0eS90aHJlYWRpbmcvc2ltcGxlX3RocmVhZC5j YwotQEAgLTEzLDcgKzEzLDcgQEAgbmFtZXNwYWNlIHBwIHsKLSBuYW1lc3BhY2UgewotIAotIC8v IFVzZSAyTUIgZGVmYXVsdCBzdGFjayBzaXplIGZvciBOYXRpdmUgQ2xpZW50LCBvdGhlcndpc2Ug dXNlIHN5c3RlbSBkZWZhdWx0LgotLSNpZiBkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9fKQotKyNp ZiBkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9fKSB8fCAhZGVmaW5lZChfX0dMSUJDX18pCi0gY29u c3Qgc2l6ZV90IGtEZWZhdWx0U3RhY2tTaXplID0gMiAqIDEwMjQgKiAxMDI0OwotICNlbHNlCi0g Y29uc3Qgc2l6ZV90IGtEZWZhdWx0U3RhY2tTaXplID0gMDsKLWRpZmYgLS1naXQgYS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdjgvc3JjL2Jhc2UvcGxhdGZvcm0vcGxhdGZvcm0tcG9zaXguY2MgYi9z cmMvM3JkcGFydHkvY2hyb21pdW0vdjgvc3JjL2Jhc2UvcGxhdGZvcm0vcGxhdGZvcm0tcG9zaXgu Y2MKLWluZGV4IGNmN2YzZWMuLmUwNmE1Y2UgMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3Y4L3NyYy9iYXNlL3BsYXRmb3JtL3BsYXRmb3JtLXBvc2l4LmNjCi0r KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Y4L3NyYy9iYXNlL3BsYXRmb3Jt L3BsYXRmb3JtLXBvc2l4LmNjCi1AQCAtNzYxLDcgKzc2MSw3IEBAIHZvaWQgVGhyZWFkOjpTdGFy dCgpIHsKLSAjaWYgVjhfT1NfTUFDT1NYCi0gICAgIC8vIERlZmF1bHQgb24gTWFjIE9TIFggaXMg NTEya0IgLS0gYnVtcCB1cCB0byAxTUIKLSAgICAgc3RhY2tfc2l6ZSA9IDEgKiAxMDI0ICogMTAy NDsKLS0jZWxpZiBWOF9PU19BSVgKLSsjZWxpZiBWOF9PU19BSVggfHwgIWRlZmluZWQoX19HTElC Q19fKQotICAgICAvLyBEZWZhdWx0IG9uIEFJWCBpcyA5NmtCIC0tIGJ1bXAgdXAgdG8gMk1CCi0g ICAgIHN0YWNrX3NpemUgPSAyICogMTAyNCAqIDEwMjQ7Ci0gI2VuZGlmCmRpZmYgLS1naXQgYS9z cmNwa2dzL3F0NS9wYXRjaGVzLzAwNDYtc2FuZGJveC1tZW1iYXJyaWVyLnBhdGNoIGIvc3JjcGtn cy9xdDUvcGF0Y2hlcy8wMDQ2LXNhbmRib3gtbWVtYmFycmllci5wYXRjaApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggYjczOTcxZjI0MzIuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3Mv cXQ1L3BhdGNoZXMvMDA0Ni1zYW5kYm94LW1lbWJhcnJpZXIucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSw2MCArMCwwIEBACi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy9z YW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2FybTY0X2xpbnV4X3N5c2NhbGxzLmgKLSsrKyBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL3NhbmRib3gvbGludXgvc3lzdGVtX2hl YWRlcnMvYXJtNjRfbGludXhfc3lzY2FsbHMuaAotQEAgLTEwNjMsNCArMTA2Myw4IEBACi0gI2Rl ZmluZSBfX05SX21lbWZkX2NyZWF0ZSAyNzkKLSAjZW5kaWYKLSAKLSsjaWYgIWRlZmluZWQoX19O Ul9tZW1iYXJyaWVyKQotKyNkZWZpbmUgX19OUl9tZW1iYXJyaWVyIDI4MwotKyNlbmRpZgotKwot ICNlbmRpZiAgLy8gU0FOREJPWF9MSU5VWF9TWVNURU1fSEVBREVSU19BUk02NF9MSU5VWF9TWVND QUxMU19IXwotCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy9zYW5kYm94 L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2FybV9saW51eF9zeXNjYWxscy5oCi0rKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2Fy bV9saW51eF9zeXNjYWxscy5oCi1AQCAtMTM4NSw2ICsxMzg1LDEwIEBACi0gI2RlZmluZSBfX05S X21lbWZkX2NyZWF0ZSAoX19OUl9TWVNDQUxMX0JBU0UrMzg1KQotICNlbmRpZgotIAotKyNpZiAh ZGVmaW5lZChfX05SX21lbWJhcnJpZXIpCi0rI2RlZmluZSBfX05SX21lbWJhcnJpZXIgKF9fTlJf U1lTQ0FMTF9CQVNFKzM4OSkKLSsjZW5kaWYKLSsKLSAvLyBBUk0gcHJpdmF0ZSBzeXNjYWxscy4K LSAjaWYgIWRlZmluZWQoX19BUk1fTlJfQkFTRSkKLSAjZGVmaW5lIF9fQVJNX05SX0JBU0UgKF9f TlJfU1lTQ0FMTF9CQVNFICsgMHhGMDAwMCkKLQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS8vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy94ODZfMzJfbGludXhfc3lz Y2FsbHMuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vc2FuZGJveC9s aW51eC9zeXN0ZW1faGVhZGVycy94ODZfMzJfbGludXhfc3lzY2FsbHMuaAotQEAgLTE0MjIsNSAr MTQyMiw5IEBACi0gI2RlZmluZSBfX05SX21lbWZkX2NyZWF0ZSAzNTYKLSAjZW5kaWYKLSAKLSsj aWYgIWRlZmluZWQoX19OUl9tZW1iYXJyaWVyKQotKyNkZWZpbmUgX19OUl9tZW1iYXJyaWVyIDM3 NQotKyNlbmRpZgotKwotICNlbmRpZiAgLy8gU0FOREJPWF9MSU5VWF9TWVNURU1fSEVBREVSU19Y ODZfMzJfTElOVVhfU1lTQ0FMTFNfSF8KLSAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMveDg2XzY0X2xpbnV4X3N5c2Nh bGxzLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL3NhbmRib3gvbGlu dXgvc3lzdGVtX2hlYWRlcnMveDg2XzY0X2xpbnV4X3N5c2NhbGxzLmgKLUBAIC0xMjkwLDUgKzEy OTAsOSBAQAotICNkZWZpbmUgX19OUl9tZW1mZF9jcmVhdGUgMzE5Ci0gI2VuZGlmCi0gCi0rI2lm ICFkZWZpbmVkKF9fTlJfbWVtYmFycmllcikKLSsjZGVmaW5lIF9fTlJfbWVtYmFycmllciAzMjQK LSsjZW5kaWYKLSsKLSAjZW5kaWYgIC8vIFNBTkRCT1hfTElOVVhfU1lTVEVNX0hFQURFUlNfWDg2 XzY0X0xJTlVYX1NZU0NBTExTX0hfCi0gCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtLy9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmNj Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy9zYW5kYm94L2xpbnV4L3Nl Y2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmNjCi1AQCAtMzcwLDYgKzM3MCw3IEBACi0g ICBzd2l0Y2ggKHN5c25vKSB7Ci0gICAgIGNhc2UgX19OUl9leGl0OgotICAgICBjYXNlIF9fTlJf ZXhpdF9ncm91cDoKLSsgICAgY2FzZSBfX05SX21lbWJhcnJpZXI6Ci0gICAgIGNhc2UgX19OUl93 YWl0NDoKLSAgICAgY2FzZSBfX05SX3dhaXRpZDoKLSAjaWYgZGVmaW5lZChfX2kzODZfXykKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0Ny1nbi1jcm9zcy1zeXNyb290LnBhdGNo IGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQ3LWduLWNyb3NzLXN5c3Jvb3QucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlNjY4OWE0MTgzLi4wMDAwMDAwMDAwMAotLS0gYS9z cmNwa2dzL3F0NS9wYXRjaGVzLzAwNDctZ24tY3Jvc3Mtc3lzcm9vdC5wYXRjaAorKysgL2Rldi9u dWxsCkBAIC0xLDI0ICswLDAgQEAKLVRoZXJlIGlzIG5vIHJlYXNvbiB0byBydW4gdGhpcyBzY3Jp cHQgYW5kIHJ1bm5pbmcgaXQgZmFpbHMgb24gYXJjaGl0ZWN0dXJlcwotY2hyb21pdW0gZG9lcyBu b3Qgb2ZmaWNpYWxseSBzdXBwb3J0IChzdWNoIGFzIHBwYzY0KS4KLQotLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9idWlsZC9jb25maWcvcG9zaXgvQlVJTEQuZ24KLSsrKyBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYnVpbGQvY29uZmlnL3Bvc2l4L0JVSUxE LmduCi1AQCAtMTAyLDEyICsxMDIsMTIgQEAgY29uZmlnKCJydW50aW1lX2xpYnJhcnkiKSB7Ci0g ICAgICAgIyB3aGVuIHR1cm5pbmcgdGhlIHN5c3Jvb3Qgb24gb3Igb2ZmLiAoZGVmaW5lcyBhcmUg cGFzc2VkIHZpYSB0aGUgY29tbWFuZAotICAgICAgICMgbGluZSwgYW5kIGJ1aWxkIHN5c3RlbSBy ZWJ1aWxkcyB0aGluZ3Mgd2hlbiB0aGVpciBjb21tYW5kbGluZQotICAgICAgICMgY2hhbmdlcyku IE5vdGhpbmcgc2hvdWxkIGV2ZXIgcmVhZCB0aGlzIGRlZmluZS4KLS0gICAgICBzeXNyb290X2hh c2ggPQotLSAgICAgICAgICBleGVjX3NjcmlwdCgiLy9idWlsZC9saW51eC9zeXNyb290X3Njcmlw dHMvaW5zdGFsbC1zeXNyb290LnB5IiwKLS0gICAgICAgICAgICAgICAgICAgICAgWyAiLS1wcmlu dC1oYXNoPSRjdXJyZW50X2NwdSIgXSwKLS0gICAgICAgICAgICAgICAgICAgICAgInRyaW0gc3Ry aW5nIiwKLS0gICAgICAgICAgICAgICAgICAgICAgWyAiLy9idWlsZC9saW51eC9zeXNyb290X3Nj cmlwdHMvc3lzcm9vdHMuanNvbiIgXSkKLS0gICAgICBkZWZpbmVzICs9IFsgIkNSX1NZU1JPT1Rf SEFTSD0kc3lzcm9vdF9oYXNoIiBdCi0rICAgICAgI3N5c3Jvb3RfaGFzaCA9Ci0rICAgICAgIyAg ICBleGVjX3NjcmlwdCgiLy9idWlsZC9saW51eC9zeXNyb290X3NjcmlwdHMvaW5zdGFsbC1zeXNy b290LnB5IiwKLSsgICAgICAjICAgICAgICAgICAgICAgIFsgIi0tcHJpbnQtaGFzaD0kY3VycmVu dF9jcHUiIF0sCi0rICAgICAgIyAgICAgICAgICAgICAgICAidHJpbSBzdHJpbmciLAotKyAgICAg ICMgICAgICAgICAgICAgICAgWyAiLy9idWlsZC9saW51eC9zeXNyb290X3NjcmlwdHMvc3lzcm9v dHMuanNvbiIgXSkKLSsgICAgICAjZGVmaW5lcyArPSBbICJDUl9TWVNST09UX0hBU0g9JHN5c3Jv b3RfaGFzaCIgXQotICAgICB9Ci0gICAgIGFzbWZsYWdzICs9IHN5c3Jvb3RfZmxhZ3MKLSAKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA1MC1xbWFrZS1ta3NwZWNzLnBhdGNoIGIv c3JjcGtncy9xdDUvcGF0Y2hlcy8wMDUwLXFtYWtlLW1rc3BlY3MucGF0Y2gKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjJlZWFlNjMyY2ZlCi0tLSAvZGV2L251bGwKKysr IGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDUwLXFtYWtlLW1rc3BlY3MucGF0Y2gKQEAgLTAsMCAr MSwzMyBAQAorU3VibW9kdWxlIHF0YmFzZSBjb250YWlucyB1bnRyYWNrZWQgY29udGVudAorU3Vi bW9kdWxlIHF0YmFzZSBjb250YWlucyBtb2RpZmllZCBjb250ZW50CitkaWZmIC0tZ2l0IHF0YmFz ZS9ta3NwZWNzL2ZlYXR1cmVzL3F0X2J1aWxkX2NvbmZpZy5wcmYgcXRiYXNlL21rc3BlY3MvZmVh dHVyZXMvcXRfYnVpbGRfY29uZmlnLnByZgoraW5kZXggODI3M2JhM2ZlMS4uYjY3NGY0MjEwOSAx MDA2NDQKKy0tLSBxdGJhc2UvbWtzcGVjcy9mZWF0dXJlcy9xdF9idWlsZF9jb25maWcucHJmCisr KysgcXRiYXNlL21rc3BlY3MvZmVhdHVyZXMvcXRfYnVpbGRfY29uZmlnLnByZgorQEAgLTExLDYg KzExLDEwIEBACisgCisgIWNvbnRhaW5zKFFNQUtFX0lOVEVSTkFMX0lOQ0xVREVEX0ZJTEVTLCAu KnFtb2R1bGVcXC5wcmkpIHsKKyAgICAgUU1BS0VfUVRfTU9EVUxFID0gJCRbUVRfSE9TVF9EQVRB L2dldF0vbWtzcGVjcy9xbW9kdWxlLnByaQorKyAgICBkZWZpbmVkKFFNQUtFX1RBUkdFVF9NT0RV TEUsdmFyKTpleGlzdHMoJCRRTUFLRV9UQVJHRVRfTU9EVUxFKSB7CisrICAgICAgICBRTUFLRV9R VF9NT0RVTEUgPSAkJFFNQUtFX1RBUkdFVF9NT0RVTEUKKysgICAgICAgIG1lc3NhZ2UoIlRyeWlu ZyAucW1vZHVsZS5wcmkgZnJvbSAoJCRRTUFLRV9RVF9DT05GSUcpIikKKysgICAgfQorICAgICAh ZXhpc3RzKCQkUU1BS0VfUVRfTU9EVUxFKXwhaW5jbHVkZSgkJFFNQUtFX1FUX01PRFVMRSwgIiIs IHRydWUpIHsKKyAgICAgICAgIGRlYnVnKDEsICJDYW5ub3QgbG9hZCBxbW9kdWxlLnByaSEiKQor ICAgICB9IGVsc2UgeworZGlmZiAtLWdpdCBxdGJhc2UvbWtzcGVjcy9mZWF0dXJlcy9xdF9jb25m aWcucHJmIHF0YmFzZS9ta3NwZWNzL2ZlYXR1cmVzL3F0X2NvbmZpZy5wcmYKK2luZGV4IDkzYzU0 ZTMwMTAuLmFhZmYyNmI1MmEgMTAwNjQ0CistLS0gcXRiYXNlL21rc3BlY3MvZmVhdHVyZXMvcXRf Y29uZmlnLnByZgorKysrIHF0YmFzZS9ta3NwZWNzL2ZlYXR1cmVzL3F0X2NvbmZpZy5wcmYKK0BA IC0xLDYgKzEsMTAgQEAKKyAjIFRoaXMgZmlsZSBpcyBsb2FkZWQgYXMgb25lIG9mIHRoZSBsYXN0 IHRoaW5ncyBieSBhbGwgcW1ha2VzcGVjcy4KKyAKKyBRTUFLRV9RVF9DT05GSUcgPSAkJFtRVF9I T1NUX0RBVEEvZ2V0XS9ta3NwZWNzL3Fjb25maWcucHJpCisrZGVmaW5lZChRTUFLRV9UQVJHRVRf Q09ORklHLHZhcik6ZXhpc3RzKCQkUU1BS0VfVEFSR0VUX0NPTkZJRykgeworKyAgIFFNQUtFX1FU X0NPTkZJRyA9ICQkUU1BS0VfVEFSR0VUX0NPTkZJRworKyAgIG1lc3NhZ2UoIlRyeWluZyAucWNv bmZpZy5wcmkgZnJvbSAoJCRRTUFLRV9RVF9DT05GSUcpIikKKyt9CisgIWV4aXN0cygkJFFNQUtF X1FUX0NPTkZJRyl8IWluY2x1ZGUoJCRRTUFLRV9RVF9DT05GSUcsICIiLCB0cnVlKSB7CisgICAg ZGVidWcoMSwgIkNhbm5vdCBsb2FkIHFjb25maWcucHJpISIpCisgfSBlbHNlIHsKK1N1Ym1vZHVs ZSBxdHdlYmVuZ2luZSBjb250YWlucyB1bnRyYWNrZWQgY29udGVudApkaWZmIC0tZ2l0IGEvc3Jj cGtncy9xdDUvcGF0Y2hlcy8wMDg5LXdlYmVuZ2luZS1wcGM2NC5wYXRjaCBiL3NyY3BrZ3MvcXQ1 L3BhdGNoZXMvMDA4OS13ZWJlbmdpbmUtcHBjNjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDQwMmQ3ZTJkNjIyLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRj aGVzLzAwODktd2ViZW5naW5lLXBwYzY0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAs MCBAQAotLS0tIHF0d2ViZW5naW5lL21rc3BlY3MvZmVhdHVyZXMvZnVuY3Rpb25zLnByZgotKysr IHF0d2ViZW5naW5lL21rc3BlY3MvZmVhdHVyZXMvZnVuY3Rpb25zLnByZgotQEAgLTk1LDYgKzk1 LDcgQEAKLSAgICAgY29udGFpbnMocXRBcmNoLCAiYXJtNjQiKTogcmV0dXJuKGFybTY0KQotICAg ICBjb250YWlucyhxdEFyY2gsICJtaXBzIik6IHJldHVybihtaXBzZWwpCi0gICAgIGNvbnRhaW5z KHF0QXJjaCwgIm1pcHM2NCIpOiByZXR1cm4obWlwczY0ZWwpCi0rICAgIGNvbnRhaW5zKHF0QXJj aCwgInBvd2VyNjQiKTogcmV0dXJuKHBwYzY0KQotICAgICByZXR1cm4odW5rbm93bikKLSB9Ci0g Ci0tLS0gcXR3ZWJlbmdpbmUvbWtzcGVjcy9mZWF0dXJlcy9wbGF0Zm9ybS5wcmYKLSsrKyBxdHdl YmVuZ2luZS9ta3NwZWNzL2ZlYXR1cmVzL3BsYXRmb3JtLnByZgotQEAgLTgyLDYgKzgyLDcgQEAK LSAgICAgY29udGFpbnMoUVRfQVJDSCwgImFybSIpfGNvbnRhaW5zKFFUX0FSQ0gsICJhcm02NCIp OiByZXR1cm4odHJ1ZSkKLSAgICAgY29udGFpbnMoUVRfQVJDSCwgIm1pcHMiKTogcmV0dXJuKHRy dWUpCi0gIyAgICAgY29udGFpbnMoUVRfQVJDSCwgIm1pcHM2NCIpOiByZXR1cm4odHJ1ZSkKLSsg ICAgY29udGFpbnMoUVRfQVJDSCwgInBvd2VyNjQiKTogcmV0dXJuKHRydWUpCi0gCi0gICAgIHNr aXBCdWlsZCgiUXRXZWJFbmdpbmUgY2FuIG9ubHkgYmUgYnVpbHQgZm9yIHg4NiwgeDg2LTY0LCBB Uk0sIEFhcmNoNjQsIGFuZCBNSVBTZWwgYXJjaGl0ZWN0dXJlcy4iKQotICAgICByZXR1cm4oZmFs c2UpCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwOTAtY2hyb21pdW0tcHBjNjRs ZS5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA5MC1jaHJvbWl1bS1wcGM2NGxlLnBhdGNo CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNGQ4ZDNlZmFhYy4uMDAwMDAwMDAwMDAK LS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDkwLWNocm9taXVtLXBwYzY0bGUucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSw0MjY3ICswLDAgQEAKLVRoaXMgaXMgYSBiYXNlIHBhdGNoIHRoYXQg YWRkcyBzdXBwb3J0IGZvciBwcGM2NGxlIGdsaWJjLiBCaWcgZW5kaWFuIGFuZCBtdXNsCi1zdXBw b3J0IGlzIGFkZGVkIGluIGV4dHJhIHBhdGNoZXMgYWZ0ZXJ3YXJkcy4KLQotUGluZyBxNjYgaWYg eW91J3JlIHVwZGF0aW5nIHF0NSBhbmQgdGhlIHBhdGNoIGRvZXMgbm90IGFwcGx5IGFueW1vcmUu Ci0KLVNvdXJjZTogaHR0cHM6Ly93aWtpLnJhcHRvcmNzLmNvbS93L2luZGV4LnBocD90aXRsZT1Q b3J0aW5nL0Nocm9taXVtCi1VcHN0cmVhbTogQ3VycmVudGx5IGJlaW5nIHN1Ym1pdHRlZAotCi0t LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvYWxsb2NhdG9yL3BhcnRp dGlvbl9hbGxvY2F0b3IvcGFnZV9hbGxvY2F0b3JfY29uc3RhbnRzLmgKLSsrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRv ci9wYWdlX2FsbG9jYXRvcl9jb25zdGFudHMuaAotQEAgLTEwLDcgKzEwLDcgQEAKLSAjaW5jbHVk ZSAiYnVpbGQvYnVpbGRfY29uZmlnLmgiCi0gCi0gbmFtZXNwYWNlIGJhc2UgewotLSNpZiBkZWZp bmVkKE9TX1dJTikKLSsjaWYgZGVmaW5lZChPU19XSU4pIHx8IGRlZmluZWQoQVJDSF9DUFVfUFBD NjQpCi0gc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1BhZ2VBbGxvY2F0aW9uR3JhbnVsYXJpdHlT aGlmdCA9IDE2OyAgLy8gNjRLQgotICNlbGlmIGRlZmluZWQoX01JUFNfQVJDSF9MT09OR1NPTikK LSBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrUGFnZUFsbG9jYXRpb25HcmFudWxhcml0eVNoaWZ0 ID0gMTQ7ICAvLyAxNktCCi1AQCAtMjYsNiArMjYsMTAgQEAgc3RhdGljIGNvbnN0ZXhwciBzaXpl X3Qga1BhZ2VBbGxvY2F0aW9uR3JhbnVsYXJpdHlCYXNlTWFzayA9Ci0gCi0gI2lmIGRlZmluZWQo X01JUFNfQVJDSF9MT09OR1NPTikKLSBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrU3lzdGVtUGFn ZVNpemUgPSAxNjM4NDsKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQotKy8vIFRPRE86 IG1vZGVybiBwcGM2NCBjYW4gZG8gNGsgYW5kIDY0ayBwYWdlIHNpemVzCi0rLy8gZm9yIG5vdywg NjRrIGlzIGFzc3VtZWQKLStzdGF0aWMgY29uc3RleHByIHNpemVfdCBrU3lzdGVtUGFnZVNpemUg PSA2NTUzNjsKLSAjZWxzZQotIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtTeXN0ZW1QYWdlU2l6 ZSA9IDQwOTY7Ci0gI2VuZGlmCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jX2NvbnN0 YW50cy5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvYWxsb2Nh dG9yL3BhcnRpdGlvbl9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jX2NvbnN0YW50cy5oCi1AQCAt MzUsNiArMzUsOCBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IGtCdWNrZXRTaGlmdCA9IChrQWxsb2Nh dGlvbkdyYW51bGFyaXR5ID09IDgpID8gMyA6IDI7Ci0gCi0gI2lmIGRlZmluZWQoX01JUFNfQVJD SF9MT09OR1NPTikKLSBzdGF0aWMgY29uc3Qgc2l6ZV90IGtQYXJ0aXRpb25QYWdlU2hpZnQgPSAx NjsgIC8vIDY0IEtpQgotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjQpCi0rc3RhdGljIGNv bnN0IHNpemVfdCBrUGFydGl0aW9uUGFnZVNoaWZ0ID0gMTg7ICAvLyAyNTYgS2lCCi0gI2Vsc2UK LSBzdGF0aWMgY29uc3Qgc2l6ZV90IGtQYXJ0aXRpb25QYWdlU2hpZnQgPSAxNDsgIC8vIDE2IEtp QgotICNlbmRpZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9idWlsZC9k b3dubG9hZF9uYWNsX3Rvb2xjaGFpbnMucHkKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vYnVpbGQvZG93bmxvYWRfbmFjbF90b29sY2hhaW5zLnB5Ci1AQCAtMTEsNiArMTEs MTAgQEAgaW1wb3J0IHN5cwotIAotIAotIGRlZiBNYWluKGFyZ3MpOgotKyAgIyBJZiBgZGlzYWJs ZV9uYWNsPTFgIGlzIGluIEdZUF9ERUZJTkVTLCBleGl0Ci0rICBpZiAnZGlzYWJsZV9uYWNsPTEn IGluIG9zLmVudmlyb24uZ2V0KCdHWVBfREVGSU5FUycsICcnKToKLSsgICAgcmV0dXJuIDAKLSsK LSAgIHNjcmlwdF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9f KSkKLSAgIHNyY19kaXIgPSBvcy5wYXRoLmRpcm5hbWUoc2NyaXB0X2RpcikKLSAgIG5hY2xfZGly ID0gb3MucGF0aC5qb2luKHNyY19kaXIsICduYXRpdmVfY2xpZW50JykKLS0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYnVpbGQvdG9vbGNoYWluL2xpbnV4L0JVSUxELmduCi0r KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2J1aWxkL3Rvb2xjaGFpbi9saW51 eC9CVUlMRC5nbgotQEAgLTUsNiArNSwxNCBAQAotIGltcG9ydCgiLy9idWlsZC9jb25maWcvc3lz cm9vdC5nbmkiKQotIGltcG9ydCgiLy9idWlsZC90b29sY2hhaW4vZ2NjX3Rvb2xjaGFpbi5nbmki KQotIAotK2NsYW5nX3Rvb2xjaGFpbigiY2xhbmdfcHBjNjQiKSB7Ci0rICBlbmFibGVfbGlua2Vy X21hcCA9IHRydWUKLSsgIHRvb2xjaGFpbl9hcmdzID0gewotKyAgICBjdXJyZW50X2NwdSA9ICJw cGM2NCIKLSsgICAgY3VycmVudF9vcyA9ICJsaW51eCIKLSsgIH0KLSt9Ci0rCi0gY2xhbmdfdG9v bGNoYWluKCJjbGFuZ19hcm0iKSB7Ci0gICB0b29scHJlZml4ID0gImFybS1saW51eC1nbnVlYWJp aGYtIgotICAgdG9vbGNoYWluX2FyZ3MgPSB7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL2NvbXBvbmVudHMvdXBkYXRlX2NsaWVudC91cGRhdGVfcXVlcnlfcGFyYW1zLmNj Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2NvbXBvbmVudHMvdXBkYXRl X2NsaWVudC91cGRhdGVfcXVlcnlfcGFyYW1zLmNjCi1AQCAtNTUsNiArNTUsOCBAQCBjb25zdCBj aGFyIGtBcmNoW10gPQotICAgICAibWlwczY0ZWwiOwotICNlbGlmIGRlZmluZWQoX19taXBzX18p Ci0gICAgICJtaXBzZWwiOwotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgICAgInBw YzY0IjsKLSAjZWxzZQotICNlcnJvciAidW5rbm93biBhcmNoIgotICNlbmRpZgotQEAgLTEyNyw2 ICsxMjksOCBAQCBjb25zdCBjaGFyKiBVcGRhdGVRdWVyeVBhcmFtczo6R2V0TmFjbEFyY2goKSB7 Ci0gICByZXR1cm4gIm1pcHMzMiI7Ci0gI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTNjRFTCkK LSAgIHJldHVybiAibWlwczY0IjsKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQotKyAg cmV0dXJuICJwcGM2NCI7Ci0gI2Vsc2UKLSAvLyBOT1RFOiB3aGVuIGFkZGluZyBuZXcgdmFsdWVz IGhlcmUsIHBsZWFzZSByZW1lbWJlciB0byB1cGRhdGUgdGhlCi0gLy8gY29tbWVudCBpbiB0aGUg LmggZmlsZSBhYm91dCBwb3NzaWJsZSByZXR1cm4gdmFsdWVzIGZyb20gdGhpcyBmdW5jdGlvbi4K LS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vY29tcG9uZW50cy91cGRhdGVf Y2xpZW50L3VwZGF0ZV9xdWVyeV9wYXJhbXMuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9jb21wb25lbnRzL3VwZGF0ZV9jbGllbnQvdXBkYXRlX3F1ZXJ5X3BhcmFtcy5o Ci1AQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBVcGRhdGVRdWVyeVBhcmFtcyB7Ci0gICAvLyBSZXR1 cm5zIHRoZSB2YWx1ZSB3ZSB1c2UgZm9yIHRoZSAibmFjbF9hcmNoIiBwYXJhbWV0ZXIuIE5vdGUg dGhhdCB0aGlzIG1heQotICAgLy8gYmUgZGlmZmVyZW50IGZyb20gdGhlICJhcmNoIiBwYXJhbWV0 ZXIgYWJvdmUgKGUuZy4gb25lIG1heSBiZSAzMi1iaXQgYW5kCi0gICAvLyB0aGUgb3RoZXIgNjQt Yml0KS4gUG9zc2libGUgcmV0dXJuIHZhbHVlcyBpbmNsdWRlOiAieDg2LTMyIiwgIng4Ni02NCIs Ci0tICAvLyAiYXJtIiwgYW5kICJtaXBzMzIiLgotKyAgLy8gImFybSIsICJtaXBzMzIiLCBhbmQg InBwYzY0Ii4KLSAgIHN0YXRpYyBjb25zdCBjaGFyKiBHZXROYWNsQXJjaCgpOwotIAotICAgLy8g UmV0dXJucyB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIENocm9tZS9DaHJvbWl1bS4KLS0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9mZWF0dXJlcy5nbmkKLSsrKyBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9mZWF0dXJlcy5nbmkKLUBA IC0xMiw2ICsxMiw2IEBAIHVzZV9zZWNjb21wX2JwZiA9Ci0gICAgIChpc19saW51eCB8fCBpc19h bmRyb2lkKSAmJgotICAgICAoY3VycmVudF9jcHUgPT0gIng4NiIgfHwgY3VycmVudF9jcHUgPT0g Ing2NCIgfHwgY3VycmVudF9jcHUgPT0gImFybSIgfHwKLSAgICAgIGN1cnJlbnRfY3B1ID09ICJh cm02NCIgfHwgY3VycmVudF9jcHUgPT0gIm1pcHNlbCIgfHwKLS0gICAgIGN1cnJlbnRfY3B1ID09 ICJtaXBzNjRlbCIpCi0rICAgICBjdXJyZW50X2NwdSA9PSAibWlwczY0ZWwiIHx8IGN1cnJlbnRf Y3B1ID09ICJwcGM2NCIpCi0gCi0gdXNlX3NlY2NvbXBfYnBmID0gdXNlX3NlY2NvbXBfYnBmIHx8 IGlzX25hY2xfbm9uc2ZpCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Nh bmRib3gvbGludXgvQlVJTEQuZ24KLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vc2FuZGJveC9saW51eC9CVUlMRC5nbgotQEAgLTQxNiw2ICs0MTYsOCBAQCBjb21wb25lbnQo InNhbmRib3hfc2VydmljZXMiKSB7Ci0gCi0gc291cmNlX3NldCgic2FuZGJveF9zZXJ2aWNlc19o ZWFkZXJzIikgewotICAgc291cmNlcyA9IFsKLSsgICAgInN5c3RlbV9oZWFkZXJzL3BwYzY0X2xp bnV4X3N5c2NhbGxzLmgiLAotKyAgICAic3lzdGVtX2hlYWRlcnMvcHBjNjRfbGludXhfdWNvbnRl eHQuaCIsCi0gICAgICJzeXN0ZW1faGVhZGVycy9hcm02NF9saW51eF9zeXNjYWxscy5oIiwKLSAg ICAgInN5c3RlbV9oZWFkZXJzL2FybV9saW51eF9zeXNjYWxscy5oIiwKLSAgICAgInN5c3RlbV9o ZWFkZXJzL2FybV9saW51eF91Y29udGV4dC5oIiwKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9icGZfZHNsL2xpbnV4X3N5c2NhbGxfcmFuZ2VzLmgK LSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9icGZf ZHNsL2xpbnV4X3N5c2NhbGxfcmFuZ2VzLmgKLUBAIC01NSw2ICs1NSwxMyBAQAotICNkZWZpbmUg TUFYX1BVQkxJQ19TWVNDQUxMIDI3OXUKLSAjZGVmaW5lIE1BWF9TWVNDQUxMIE1BWF9QVUJMSUNf U1lTQ0FMTAotIAotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsKLSsjaW5jbHVkZSA8 YXNtL3VuaXN0ZC5oPgotKyNkZWZpbmUgTUlOX1NZU0NBTEwgMHUKLSsjZGVmaW5lIE1BWF9QVUJM SUNfU1lTQ0FMTCAzODZ1Ci0rI2RlZmluZSBNQVhfU1lTQ0FMTCBNQVhfUFVCTElDX1NZU0NBTEwK LSsKLSAjZWxzZQotICNlcnJvciAiVW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlIgotICNlbmRpZgot LS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L2JwZl9k c2wvc2VjY29tcF9tYWNyb3MuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS9zYW5kYm94L2xpbnV4L2JwZl9kc2wvc2VjY29tcF9tYWNyb3MuaAotQEAgLTE2LDYgKzE2LDkg QEAKLSAjaWYgZGVmaW5lZChfX21pcHNfXykKLSAvLyBzeXMvdXNlci5oIGluIGVnbGliYyBtaXNz ZXMgc2l6ZV90IGRlZmluaXRpb24KLSAjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rI2VsaWYgZGVmaW5l ZChfX3Bvd2VycGM2NF9fKQotKy8vIE1hbnVhbGx5IGRlZmluZSBncmVnX3Qgb24gcHBjNjQKLSt0 eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBncmVnX3Q7Ci0gI2VuZGlmCi0gI2VuZGlmCi0gCi1A QCAtMzQ2LDYgKzM0OSw1MSBAQCBzdHJ1Y3QgcmVnc19zdHJ1Y3QgewotICNkZWZpbmUgU0VDQ09N UF9QVF9QQVJNNChfcmVncykgKF9yZWdzKS5yZWdzWzNdCi0gI2RlZmluZSBTRUNDT01QX1BUX1BB Uk01KF9yZWdzKSAoX3JlZ3MpLnJlZ3NbNF0KLSAjZGVmaW5lIFNFQ0NPTVBfUFRfUEFSTTYoX3Jl Z3MpIChfcmVncykucmVnc1s1XQotKwotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsj aW5jbHVkZSA8YXNtL3B0cmFjZS5oPgotKwotK3R5cGVkZWYgc3RydWN0IHB0X3JlZ3MgcmVnc19z dHJ1Y3Q7Ci0rCi0rI2lmZGVmIEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4KLSsjZGVmaW5lIFNFQ0NP TVBfQVJDSCBBVURJVF9BUkNIX1BQQzY0TEUKLSsjZWxzZQotKyNkZWZpbmUgU0VDQ09NUF9BUkNI IEFVRElUX0FSQ0hfUFBDNjQKLSsjZW5kaWYKLSsKLSsjZGVmaW5lIFNFQ0NPTVBfUkVHKF9jdHgs IF9yZWcpICgoX2N0eCktPnVjX21jb250ZXh0LnJlZ3MtPmdwcltfcmVnXSkKLSsKLSsjZGVmaW5l IFNFQ0NPTVBfUkVTVUxUKF9jdHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDMpCi0rI2RlZmluZSBTRUND T01QX1NZU0NBTEwoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgMCkKLSsjZGVmaW5lIFNFQ0NPTVBf SVAoX2N0eCkgKF9jdHgpLT51Y19tY29udGV4dC5yZWdzLT5uaXAKLSsjZGVmaW5lIFNFQ0NPTVBf UEFSTTEoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgMykKLSsjZGVmaW5lIFNFQ0NPTVBfUEFSTTIo X2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgNCkKLSsjZGVmaW5lIFNFQ0NPTVBfUEFSTTMoX2N0eCkg U0VDQ09NUF9SRUcoX2N0eCwgNSkKLSsjZGVmaW5lIFNFQ0NPTVBfUEFSTTQoX2N0eCkgU0VDQ09N UF9SRUcoX2N0eCwgNikKLSsjZGVmaW5lIFNFQ0NPTVBfUEFSTTUoX2N0eCkgU0VDQ09NUF9SRUco X2N0eCwgNykKLSsjZGVmaW5lIFNFQ0NPTVBfUEFSTTYoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwg OCkKLSsKLSsjZGVmaW5lIFNFQ0NPTVBfTlJfSURYIChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9zZWNj b21wX2RhdGEsIG5yKSkKLSsjZGVmaW5lIFNFQ0NPTVBfQVJDSF9JRFggKG9mZnNldG9mKHN0cnVj dCBhcmNoX3NlY2NvbXBfZGF0YSwgYXJjaCkpCi0rI2RlZmluZSBTRUNDT01QX0lQX01TQl9JRFgg XAotKyAgKG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSwgaW5zdHJ1Y3Rpb25fcG9p bnRlcikgKyA0KQotKyNkZWZpbmUgU0VDQ09NUF9JUF9MU0JfSURYIFwKLSsgIChvZmZzZXRvZihz dHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIGluc3RydWN0aW9uX3BvaW50ZXIpICsgMCkKLSsjZGVm aW5lIFNFQ0NPTVBfQVJHX01TQl9JRFgobnIpIFwKLSsgIChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9z ZWNjb21wX2RhdGEsIGFyZ3MpICsgOCAqIChucikgKyA0KQotKyNkZWZpbmUgU0VDQ09NUF9BUkdf TFNCX0lEWChucikgXAotKyAgKG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSwgYXJn cykgKyA4ICogKG5yKSArIDApCi0rCi0rI2RlZmluZSBTRUNDT01QX1BUX1JFU1VMVChfcmVncykg KF9yZWdzKS5ncHJbM10KLSsjZGVmaW5lIFNFQ0NPTVBfUFRfU1lTQ0FMTChfcmVncykgKF9yZWdz KS5ncHJbMF0KLSsjZGVmaW5lIFNFQ0NPTVBfUFRfSVAoX3JlZ3MpIChfcmVncykubmlwCi0rI2Rl ZmluZSBTRUNDT01QX1BUX1BBUk0xKF9yZWdzKSAoX3JlZ3MpLmdwclszXQotKyNkZWZpbmUgU0VD Q09NUF9QVF9QQVJNMihfcmVncykgKF9yZWdzKS5ncHJbNF0KLSsjZGVmaW5lIFNFQ0NPTVBfUFRf UEFSTTMoX3JlZ3MpIChfcmVncykuZ3ByWzVdCi0rI2RlZmluZSBTRUNDT01QX1BUX1BBUk00KF9y ZWdzKSAoX3JlZ3MpLmdwcls2XQotKyNkZWZpbmUgU0VDQ09NUF9QVF9QQVJNNShfcmVncykgKF9y ZWdzKS5ncHJbN10KLSsjZGVmaW5lIFNFQ0NPTVBfUFRfUEFSTTYoX3JlZ3MpIChfcmVncykuZ3By WzhdCi0rCi0gI2Vsc2UKLSAjZXJyb3IgVW5zdXBwb3J0ZWQgdGFyZ2V0IHBsYXRmb3JtCi0gCi0t LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29t cC1icGYtaGVscGVycy9iYXNlbGluZV9wb2xpY3kuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL2Jhc2VsaW5l X3BvbGljeS5jYwotQEAgLTg3LDcgKzg3LDggQEAgYm9vbCBJc0Jhc2VsaW5lUG9saWN5V2F0Y2hl ZChpbnQgc3lzbm8pIHsKLSAgICAgICAgICBTeXNjYWxsU2V0czo6SXNQcmN0bChzeXNubykgfHwK LSAgICAgICAgICBTeXNjYWxsU2V0czo6SXNQcm9jZXNzR3JvdXBPclNlc3Npb24oc3lzbm8pIHx8 Ci0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwKLS0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQ U19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCi0rICAgIChkZWZpbmVkKEFS Q0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCi0r ICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgICAgICBTeXNjYWxsU2V0czo6SXNTb2Nr ZXRDYWxsKHN5c25vKSB8fAotICNlbmRpZgotICNpZiBkZWZpbmVkKF9fYXJtX18pCi1AQCAtMTkw LDcgKzE5MSw3IEBAIFJlc3VsdEV4cHIgRXZhbHVhdGVTeXNjYWxsSW1wbChpbnQgZnNfZGVuaWVk X2Vycm5vLAotICAgfQotIAotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2 XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLS0gICAgZGVmaW5lZChfX2FhcmNoNjRf XykKLSsgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQot ICAgaWYgKHN5c25vID09IF9fTlJfbW1hcCkKLSAgICAgcmV0dXJuIFJlc3RyaWN0TW1hcEZsYWdz KCk7Ci0gI2VuZGlmCi1AQCAtMjA4LDcgKzIwOSw3IEBAIFJlc3VsdEV4cHIgRXZhbHVhdGVTeXNj YWxsSW1wbChpbnQgZnNfZGVuaWVkX2Vycm5vLAotICAgICByZXR1cm4gUmVzdHJpY3RQcmN0bCgp OwotIAotICNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVm aW5lZChfX21pcHNfXykgfHwgXAotLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyAgICBkZWZp bmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICBpZiAoc3lzbm8g PT0gX19OUl9zb2NrZXRwYWlyKSB7Ci0gICAgIC8vIE9ubHkgYWxsb3cgQUZfVU5JWCwgUEZfVU5J WC4gQ3Jhc2ggaWYgYW55dGhpbmcgZWxzZSBpcyBzZWVuLgotICAgICBzdGF0aWNfYXNzZXJ0KEFG X1VOSVggPT0gUEZfVU5JWCwKLUBAIC0yNDgsNyArMjQ5LDggQEAgUmVzdWx0RXhwciBFdmFsdWF0 ZVN5c2NhbGxJbXBsKGludCBmc19kZW5pZWRfZXJybm8sCi0gICB9Ci0gCi0gI2lmIGRlZmluZWQo X19pMzg2X18pIHx8IFwKLS0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRl ZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCi0rICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFN SUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQoX19w b3dlcnBjNjRfXykKLSAgIGlmIChTeXNjYWxsU2V0czo6SXNTb2NrZXRDYWxsKHN5c25vKSkKLSAg ICAgcmV0dXJuIFJlc3RyaWN0U29ja2V0Y2FsbENvbW1hbmQoKTsKLSAjZW5kaWYKLS0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1o ZWxwZXJzL2Jhc2VsaW5lX3BvbGljeV91bml0dGVzdC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvYmFzZWxp bmVfcG9saWN5X3VuaXR0ZXN0LmNjCi1AQCAtMjU3LDcgKzI1Nyw3IEBAIFRFU1RfQkFTRUxJTkVf U0lHU1lTKF9fTlJfc3lzaW5mbyk7Ci0gVEVTVF9CQVNFTElORV9TSUdTWVMoX19OUl9zeXNsb2cp OwotIFRFU1RfQkFTRUxJTkVfU0lHU1lTKF9fTlJfdGltZXJfY3JlYXRlKTsKLSAKLS0jaWYgIWRl ZmluZWQoX19hYXJjaDY0X18pCi0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiAhZGVmaW5l ZChfX3Bvd2VycGM2NF9fKQotIFRFU1RfQkFTRUxJTkVfU0lHU1lTKF9fTlJfZXZlbnRmZCk7Ci0g VEVTVF9CQVNFTElORV9TSUdTWVMoX19OUl9pbm90aWZ5X2luaXQpOwotIFRFU1RfQkFTRUxJTkVf U0lHU1lTKF9fTlJfdnNlcnZlcik7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3BhcmFtZXRlcnNf cmVzdHJpY3Rpb25zLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Nh bmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3BhcmFtZXRlcnNfcmVzdHJp Y3Rpb25zLmNjCi1AQCAtMzUsNyArMzUsOCBAQAotICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KLSAj aW5jbHVkZSA8c3lzL3B0cmFjZS5oPgotICNpZiBkZWZpbmVkKE9TX0xJTlVYKSAmJiAhZGVmaW5l ZChPU19DSFJPTUVPUykgJiYgIWRlZmluZWQoX19hcm1fXykgJiYgXAotLSAgICAhZGVmaW5lZChf X2FhcmNoNjRfXykgJiYgIWRlZmluZWQoUFRSQUNFX0dFVF9USFJFQURfQVJFQSkKLSsgICAgIWRl ZmluZWQoX19hYXJjaDY0X18pICYmICFkZWZpbmVkKF9fcG93ZXJwYzY0X18pICYmIFwKLSsgICAg IWRlZmluZWQoUFRSQUNFX0dFVF9USFJFQURfQVJFQSkKLSAvLyBBbHNvIGluY2x1ZGUgYXNtL3B0 cmFjZS1hYmkuaCBzaW5jZSBwdHJhY2UuaCBpbiBvbGRlciBsaWJjIChmb3IgaW5zdGFuY2UKLSAv LyB0aGUgb25lIGluIFVidW50dSAxNi4wNCBMVFMpIGlzIG1pc3NpbmcgUFRSQUNFX0dFVF9USFJF QURfQVJFQS4KLSAvLyBhc20vcHRyYWNlLWFiaS5oIGRvZXNuJ3QgZXhpc3Qgb24gYXJtMzIgYW5k IFBUUkFDRV9HRVRfVEhSRUFEX0FSRUEgaXNuJ3QKLUBAIC00NCw2ICs0NCwxMSBAQAotICNlbmRp ZgotICNlbmRpZiAgLy8gIU9TX05BQ0xfTk9OU0ZJCi0gCi0rLy8gT24gUFBDNjQsIFRDR0VUUyBp cyBkZWZpbmVkIGluIHRlcm1zIG9mIHN0cnVjdCB0ZXJtaW9zLCBzbyB3ZSBtdXN0IGluY2x1ZGUg dGVybWlvcy5oCi0rI2lmZGVmIF9fcG93ZXJwYzY0X18KLSsjaW5jbHVkZSA8dGVybWlvcy5oPgot KyNlbmRpZgotKwotICNpZiBkZWZpbmVkKE9TX0FORFJPSUQpCi0gCi0gI2lmICFkZWZpbmVkKEZf RFVQRkRfQ0xPRVhFQykKLUBAIC0xMDYsNiArMTExLDE1IEBAIGlubGluZSBib29sIElzQXJjaGl0 ZWN0dXJlTWlwcygpIHsKLSAjZW5kaWYKLSB9Ci0gCi0raW5saW5lIGJvb2wgSXNBcmNoaXRlY3R1 cmVQUEM2NCgpIHsKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgcmV0dXJuIHRydWU7 Ci0rI2Vsc2UKLSsgIHJldHVybiBmYWxzZTsKLSsjZW5kaWYKLSt9Ci0rCi0rCi0gLy8gVWJ1bnR1 J3MgdmVyc2lvbiBvZiBnbGliYyBoYXMgYSByYWNlIGNvbmRpdGlvbiBpbiBzZW1fcG9zdCB0aGF0 IGNhbiBjYXVzZQotIC8vIGl0IHRvIGNhbGwgZnV0ZXgoMikgd2l0aCBib2d1cyBvcCBhcmd1bWVu dHMuIFRvIHdvcmthcm91bmQgdGhpcywgd2UgbmVlZAotIC8vIHRvIGFsbG93IHRob3NlIGZ1dGV4 KDIpIGNhbGxzIHRvIGZhaWwgd2l0aCBFSU5WQUwsIGluc3RlYWQgb2YgY3Jhc2hpbmcgdGhlCi1A QCAtMjQ3LDcgKzI2MSw4IEBAIFJlc3VsdEV4cHIgUmVzdHJpY3RGY250bENvbW1hbmRzKCkgewot ICAgLy8gb3BlcmF0b3IuCi0gICAvLyBHbGliYyBvdmVycmlkZXMgdGhlIGtlcm5lbCdzIE9fTEFS R0VGSUxFIHZhbHVlLiBBY2NvdW50IGZvciB0aGlzLgotICAgdWludDY0X3Qga09MYXJnZUZpbGVG bGFnID0gT19MQVJHRUZJTEU7Ci0tICBpZiAoSXNBcmNoaXRlY3R1cmVYODZfNjQoKSB8fCBJc0Fy Y2hpdGVjdHVyZUkzODYoKSB8fCBJc0FyY2hpdGVjdHVyZU1pcHMoKSkKLSsgIGlmIChJc0FyY2hp dGVjdHVyZVg4Nl82NCgpIHx8IElzQXJjaGl0ZWN0dXJlSTM4NigpIHx8IElzQXJjaGl0ZWN0dXJl TWlwcygpIFwKLSsgICAgICB8fCBJc0FyY2hpdGVjdHVyZVBQQzY0KCkpCi0gICAgIGtPTGFyZ2VG aWxlRmxhZyA9IDAxMDAwMDA7Ci0gCi0gICBjb25zdCBBcmc8aW50PiBjbWQoMSk7Ci1AQCAtMjcw LDcgKzI4NSw3IEBAIFJlc3VsdEV4cHIgUmVzdHJpY3RGY250bENvbW1hbmRzKCkgewotICAgICAg IC5EZWZhdWx0KENyYXNoU0lHU1lTKCkpOwotIH0KLSAKLS0jaWYgZGVmaW5lZChfX2kzODZfXykg fHwgZGVmaW5lZChfX21pcHNfXykKLSsjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChf X21pcHNfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotIFJlc3VsdEV4cHIgUmVzdHJpY3RT b2NrZXRjYWxsQ29tbWFuZCgpIHsKLSAgIC8vIFVuZm9ydHVuYXRlbHksIHdlIGFyZSB1bmFibGUg dG8gcmVzdHJpY3QgdGhlIGZpcnN0IHBhcmFtZXRlciB0bwotICAgLy8gc29ja2V0cGFpcigyKS4g V2hpbHN0IGluaXRpYWxseSBzb3VuZGluZyBiYWQsIGl0J3Mgbm90ZXdvcnRoeSB0aGF0IHZlcnkK LUBAIC00MjEsNyArNDIyLDcgQEAgUmVzdWx0RXhwciBSZXN0cmljdFBybGltaXQocGlkX3QgdGFy Z2V0X3BpZCkgewotIFJlc3VsdEV4cHIgUmVzdHJpY3RQdHJhY2UoKSB7Ci0gICBjb25zdCBBcmc8 aW50PiByZXF1ZXN0KDApOwotICAgcmV0dXJuIFN3aXRjaChyZXF1ZXN0KS5DQVNFUygoCi0tI2lm ICFkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgIWRl ZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgICAgIFBUUkFDRV9HRVRSRUdTLAotICAgICAgICAg UFRSQUNFX0dFVEZQUkVHUywKLSAgICAgICAgIFBUUkFDRV9HRVRfVEhSRUFEX0FSRUEsCi0tLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1i cGYtaGVscGVycy9zeXNjYWxsX3BhcmFtZXRlcnNfcmVzdHJpY3Rpb25zLmgKLSsrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxw ZXJzL3N5c2NhbGxfcGFyYW1ldGVyc19yZXN0cmljdGlvbnMuaAotQEAgLTQ4LDcgKzQ4LDcgQEAg U0FOREJPWF9FWFBPUlQgYnBmX2RzbDo6UmVzdWx0RXhwciBSZXN0cmljdE1wcm90ZWN0RmxhZ3Mo KTsKLSAvLyBPX05PTkJMT0NLIHwgT19TWU5DIHwgT19MQVJHRUZJTEUgfCBPX0NMT0VYRUMgfCBP X05PQVRJTUUuCi0gU0FOREJPWF9FWFBPUlQgYnBmX2RzbDo6UmVzdWx0RXhwciBSZXN0cmljdEZj bnRsQ29tbWFuZHMoKTsKLSAKLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX21p cHNfXykKLSsjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgZGVm aW5lZChfX3Bvd2VycGM2NF9fKQotIC8vIFJlc3RyaWN0IHNvY2tldGNhbGwoMikgdG8gb25seSBh bGxvdyBzb2NrZXRwYWlyKDIpLCBzZW5kKDIpLCByZWN2KDIpLAotIC8vIHNlbmR0bygyKSwgcmVj dmZyb20oMiksIHNodXRkb3duKDIpLCBzZW5kbXNnKDIpIGFuZCByZWN2bXNnKDIpLgotIFNBTkRC T1hfRVhQT1JUIGJwZl9kc2w6OlJlc3VsdEV4cHIgUmVzdHJpY3RTb2NrZXRjYWxsQ29tbWFuZCgp OwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3Nl Y2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxs X3NldHMuY2MKLUBAIC0yOSw3ICsyOSw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEdl dHRpbWUoaW50IHN5c25vKSB7Ci0gICBzd2l0Y2ggKHN5c25vKSB7Ci0gICAgIGNhc2UgX19OUl9n ZXR0aW1lb2ZkYXk6Ci0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRf XykgfHwgXAotLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChB UkNIX0NQVV8zMl9CSVRTKSkKLSsgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYm IGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2 NF9fKQotICAgICBjYXNlIF9fTlJfdGltZToKLSAjZW5kaWYKLSAgICAgICByZXR1cm4gdHJ1ZTsK LUBAIC00NSw3ICs0Niw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEdldHRpbWUoaW50 IHN5c25vKSB7Ci0gI2VuZGlmCi0gICAgIGNhc2UgX19OUl9zZXR0aW1lb2ZkYXk6ICAvLyBQcml2 aWxlZ2VkLgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCi0tICAgIChkZWZpbmVkKEFSQ0hf Q1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQotKyAgICAoZGVm aW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkg fHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9zdGltZToK LSAjZW5kaWYKLSAgICAgZGVmYXVsdDoKLUBAIC0xMTEsNyArMTEzLDcgQEAgYm9vbCBTeXNjYWxs U2V0czo6SXNGaWxlU3lzdGVtKGludCBzeXNubykgewotICAgICBjYXNlIF9fTlJfZmFjY2Vzc2F0 OiAgLy8gRVBFUk0gbm90IGEgdmFsaWQgZXJybm8uCi0gICAgIGNhc2UgX19OUl9mY2htb2RhdDoK LSAgICAgY2FzZSBfX05SX2ZjaG93bmF0OiAgLy8gU2hvdWxkIGJlIGNhbGxlZCBjaG93bmF0ID8K LS0jaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyNpZiBk ZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19w b3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX25ld2ZzdGF0YXQ6ICAvLyBmc3RhdGF0KCkuIEVQ RVJNIG5vdCBhIHZhbGlkIGVycm5vLgotICNlbGlmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmlu ZWQoX19hcm1fXykgfHwgXAotICAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYg ZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKLUBAIC0xMzAsNyArMTMyLDcgQEAgYm9vbCBTeXNj YWxsU2V0czo6SXNGaWxlU3lzdGVtKGludCBzeXNubykgewotICAgICBjYXNlIF9fTlJfbWVtZmRf Y3JlYXRlOgotICAgICBjYXNlIF9fTlJfbWtkaXJhdDoKLSAgICAgY2FzZSBfX05SX21rbm9kYXQ6 Ci0tI2lmIGRlZmluZWQoX19pMzg2X18pCi0rI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmlu ZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX29sZGxzdGF0OgotICAgICBjYXNlIF9f TlJfb2xkc3RhdDoKLSAjZW5kaWYKLUBAIC0xNTQsNyArMTU2LDggQEAgYm9vbCBTeXNjYWxsU2V0 czo6SXNGaWxlU3lzdGVtKGludCBzeXNubykgewotICAgICBjYXNlIF9fTlJfdHJ1bmNhdGU2NDoK LSAjZW5kaWYKLSAgICAgY2FzZSBfX05SX3VubGlua2F0OgotLSNpZiBkZWZpbmVkKF9faTM4Nl9f KSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pCi0rI2lmIGRlZmlu ZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykg fHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl91dGltZToK LSAjZW5kaWYKLSAgICAgY2FzZSBfX05SX3V0aW1lbnNhdDogIC8vIE5ldy4KLUBAIC0xNzMsNyAr MTc2LDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkRmlsZVN5c3RlbUFjY2Vzc1ZpYUZk KGludCBzeXNubykgewotICNlbmRpZgotICAgICAgIHJldHVybiB0cnVlOwotIC8vIFRPRE8oamxu KTogdGhlc2Ugc2hvdWxkIGJlIGRlbmllZCBncmFjZWZ1bGx5IGFzIHdlbGwgKG1vdmVkIGJlbG93 KS4KLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZp bmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0 X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9f KQotICAgICBjYXNlIF9fTlJfZmFkdmlzZTY0OiAgLy8gRVBFUk0gbm90IGEgdmFsaWQgZXJybm8u Ci0gI2VuZGlmCi0gI2lmIGRlZmluZWQoX19pMzg2X18pCi1AQCAtMTg2LDcgKzE5MCw4IEBAIGJv b2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEZpbGVTeXN0ZW1BY2Nlc3NWaWFGZChpbnQgc3lzbm8p IHsKLSAgICAgY2FzZSBfX05SX2Zsb2NrOiAgICAgIC8vIEVQRVJNIG5vdCBhIHZhbGlkIGVycm5v LgotICAgICBjYXNlIF9fTlJfZnN0YXRmczogICAgLy8gR2l2ZSBpbmZvcm1hdGlvbiBhYm91dCB0 aGUgd2hvbGUgZmlsZXN5c3RlbS4KLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChf X2FybV9fKSB8fCBcCi0tICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZp bmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQotKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlM WSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9mc3RhdGZzNjQ6Ci0gI2VuZGlmCi0gICAgIGNhc2Ug X19OUl9mc3luYzogIC8vIEVQRVJNIG5vdCBhIHZhbGlkIGVycm5vLgotQEAgLTE5OCw2ICsyMDMs OCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRGaWxlU3lzdGVtQWNjZXNzVmlhRmQoaW50 IHN5c25vKSB7Ci0gICAgIGNhc2UgX19OUl9zeW5jX2ZpbGVfcmFuZ2U6ICAvLyBFUEVSTSBub3Qg YSB2YWxpZCBlcnJuby4KLSAjZWxpZiBkZWZpbmVkKF9fYXJtX18pCi0gICAgIGNhc2UgX19OUl9h cm1fc3luY19maWxlX3JhbmdlOiAgLy8gRVBFUk0gbm90IGEgdmFsaWQgZXJybm8uCi0rI2VsaWYg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgICBjYXNlIF9fTlJfc3luY19maWxlX3JhbmdlMjog Ly8gRVBFUk0gbm90IGEgdmFsaWQgZXJybm8uCi0gI2VuZGlmCi0gICAgIGRlZmF1bHQ6Ci0gICAg ICAgcmV0dXJuIGZhbHNlOwotQEAgLTIyMyw3ICsyMzAsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJ c0RlbmllZEZpbGVTeXN0ZW1BY2Nlc3NWaWFGZChpbnQgc3lzbm8pIHsKLSAjZW5kaWYKLSAgICAg Y2FzZSBfX05SX2dldGRlbnRzNjQ6ICAvLyBFUEVSTSBub3QgYSB2YWxpZCBlcnJuby4KLSAjaWYg ZGVmaW5lZChfX2kzODZfXykgfHwgXAotLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlM WSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKLSsgICAgKGRlZmluZWQoQVJDSF9DUFVf TUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKLSsgICAgZGVm aW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfcmVhZGRpcjoKLSAjZW5kaWYKLSAg ICAgICByZXR1cm4gdHJ1ZTsKLUBAIC0yNjQsNyArMjcyLDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6 SXNHZXRTaW1wbGVJZChpbnQgc3lzbm8pIHsKLSBib29sIFN5c2NhbGxTZXRzOjpJc1Byb2Nlc3NQ cml2aWxlZ2VDaGFuZ2UoaW50IHN5c25vKSB7Ci0gICBzd2l0Y2ggKHN5c25vKSB7Ci0gICAgIGNh c2UgX19OUl9jYXBzZXQ6Ci0tI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZf NjRfXykKLSsjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBk ZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9pb3Blcm06ICAvLyBJbnRlbCBw cml2aWxlZ2UuCi0gICAgIGNhc2UgX19OUl9pb3BsOiAgICAvLyBJbnRlbCBwcml2aWxlZ2UuCi0g I2VuZGlmCi1AQCAtMzE0LDcgKzMyMiw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZFNp Z25hbEhhbmRsaW5nKGludCBzeXNubykgewotICAgICBjYXNlIF9fTlJfcnRfc2lncHJvY21hc2s6 Ci0gICAgIGNhc2UgX19OUl9ydF9zaWdyZXR1cm46Ci0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8 IGRlZmluZWQoX19hcm1fXykgfHwgXAotLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlM WSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKLSsgICAgKGRlZmluZWQoQVJDSF9DUFVf TUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKLSsgICAgZGVm aW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfc2lnYWN0aW9uOgotICAgICBjYXNl IF9fTlJfc2lncHJvY21hc2s6Ci0gICAgIGNhc2UgX19OUl9zaWdyZXR1cm46Ci1AQCAtMzMxLDcg KzM0MCw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZFNpZ25hbEhhbmRsaW5nKGludCBz eXNubykgewotICNlbmRpZgotICAgICBjYXNlIF9fTlJfc2lnbmFsZmQ0OgotICNpZiBkZWZpbmVk KF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IFwKLS0gICAgKGRlZmluZWQoQVJDSF9D UFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCi0rICAgIChkZWZp bmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8 fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3NpZ3BlbmRp bmc6Ci0gICAgIGNhc2UgX19OUl9zaWdzdXNwZW5kOgotICNlbmRpZgotQEAgLTM1NSw3ICszNjUs NyBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRPcGVyYXRpb25PbkZkKGludCBzeXNubykg ewotICNlbmRpZgotICAgICBjYXNlIF9fTlJfZHVwMzoKLSAjaWYgZGVmaW5lZChfX3g4Nl82NF9f KSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLS0gICAgZGVm aW5lZChfX2FhcmNoNjRfXykKLSsgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChf X3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfc2h1dGRvd246Ci0gI2VuZGlmCi0gICAgICAg cmV0dXJuIHRydWU7Ci1AQCAtMzg5LDcgKzM5OSw3IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxs b3dlZFByb2Nlc3NTdGFydE9yRGVhdGgoaW50IHN5c25vKSB7Ci0gICAgIGNhc2UgX19OUl9tZW1i YXJyaWVyOgotICAgICBjYXNlIF9fTlJfd2FpdDQ6Ci0gICAgIGNhc2UgX19OUl93YWl0aWQ6Ci0t I2lmIGRlZmluZWQoX19pMzg2X18pCi0rI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQo X19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3dhaXRwaWQ6Ci0gI2VuZGlmCi0gI2lmICFk ZWZpbmVkKF9fR0xJQkNfXykKLUBAIC00MTEsNyArNDIxLDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6 SXNBbGxvd2VkUHJvY2Vzc1N0YXJ0T3JEZWF0aChpbnQgc3lzbm8pIHsKLSAgICAgY2FzZSBfX05S X3NldF90aWRfYWRkcmVzczoKLSAjZW5kaWYKLSAgICAgY2FzZSBfX05SX3Vuc2hhcmU6Ci0tI2lm ICFkZWZpbmVkKF9fbWlwc19fKSAmJiAhZGVmaW5lZChfX2FhcmNoNjRfXykKLSsjaWYgIWRlZmlu ZWQoX19taXBzX18pICYmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJw YzY0X18pCi0gICAgIGNhc2UgX19OUl92Zm9yazoKLSAjZW5kaWYKLSAgICAgZGVmYXVsdDoKLUBA IC00NjAsNyArNDcwLDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkR2V0T3JNb2RpZnlT b2NrZXQoaW50IHN5c25vKSB7Ci0gICAgICAgcmV0dXJuIHRydWU7Ci0gICAgIGRlZmF1bHQ6Ci0g I2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9f bWlwc19fKSB8fCBcCi0tICAgIGRlZmluZWQoX19hYXJjaDY0X18pCi0rICAgIGRlZmluZWQoX19h YXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3NvY2tl dHBhaXI6ICAvLyBXZSB3aWxsIHdhbnQgdG8gaW5zcGVjdCBpdHMgYXJndW1lbnQuCi0gI2VuZGlm Ci0gICAgICAgcmV0dXJuIGZhbHNlOwotQEAgLTQ3MCw3ICs0ODAsNyBAQCBib29sIFN5c2NhbGxT ZXRzOjpJc0FsbG93ZWRHZXRPck1vZGlmeVNvY2tldChpbnQgc3lzbm8pIHsKLSBib29sIFN5c2Nh bGxTZXRzOjpJc0RlbmllZEdldE9yTW9kaWZ5U29ja2V0KGludCBzeXNubykgewotICAgc3dpdGNo IChzeXNubykgewotICNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hcm1fXykg fHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAotLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyAg ICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNh c2UgX19OUl9hY2NlcHQ6Ci0gICAgIGNhc2UgX19OUl9hY2NlcHQ0OgotICAgICBjYXNlIF9fTlJf YmluZDoKLUBAIC00ODUsNyArNDk1LDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNEZW5pZWRHZXRP ck1vZGlmeVNvY2tldChpbnQgc3lzbm8pIHsKLSB9Ci0gCi0gI2lmIGRlZmluZWQoX19pMzg2X18p IHx8IFwKLS0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJD SF9DUFVfMzJfQklUUykpCi0rICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBk ZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRf XykKLSAvLyBCaWcgbXVsdGlwbGV4aW5nIHN5c3RlbSBjYWxsIGZvciBzb2NrZXRzLgotIGJvb2wg U3lzY2FsbFNldHM6OklzU29ja2V0Q2FsbChpbnQgc3lzbm8pIHsKLSAgIHN3aXRjaCAoc3lzbm8p IHsKLUBAIC00OTksNyArNTEwLDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNTb2NrZXRDYWxsKGlu dCBzeXNubykgewotIH0KLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBk ZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBzX18pCi0rI2lmIGRlZmluZWQoX194ODZf NjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCi0rICAg IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSBib29sIFN5c2NhbGxTZXRzOjpJc05ldHdvcmtTb2Nr ZXRJbmZvcm1hdGlvbihpbnQgc3lzbm8pIHsKLSAgIHN3aXRjaCAoc3lzbm8pIHsKLSAgICAgY2Fz ZSBfX05SX2dldHBlZXJuYW1lOgotQEAgLTUyNyw3ICs1MzksNyBAQCBib29sIFN5c2NhbGxTZXRz OjpJc0FsbG93ZWRBZGRyZXNzU3BhY2VBY2Nlc3MoaW50IHN5c25vKSB7Ci0gICAgIGNhc2UgX19O Ul9taW5jb3JlOgotICAgICBjYXNlIF9fTlJfbWxvY2thbGw6Ci0gI2lmIGRlZmluZWQoX19pMzg2 X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAotLSAg ICBkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZp bmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9tbWFwOgotICNlbmRpZgotICNpZiBk ZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IFwKLUBAIC01NTksNyArNTcx LDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkR2VuZXJhbElvKGludCBzeXNubykgewot ICAgc3dpdGNoIChzeXNubykgewotICAgICBjYXNlIF9fTlJfbHNlZWs6Ci0gI2lmIGRlZmluZWQo X19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgXAotLSAgICAoZGVmaW5lZChBUkNIX0NQ VV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKLSsgICAgKGRlZmlu ZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8 IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfX2xsc2VlazoK LSAjZW5kaWYKLSAjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pCi1AQCAtNTcxLDI2ICs1ODQsMjgg QEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkR2VuZXJhbElvKGludCBzeXNubykgewotICAg ICBjYXNlIF9fTlJfcmVhZHY6Ci0gICAgIGNhc2UgX19OUl9wcmVhZDY0OgotICNpZiBkZWZpbmVk KF9fYXJtX18pIHx8IFwKLS0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRl ZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCi0rICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFN SUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQoX19w b3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3JlY3Y6Ci0gI2VuZGlmCi0gI2lmIGRlZmluZWQo X194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBc Ci0tICAgIGRlZmluZWQoX19hYXJjaDY0X18pCi0rICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8 IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3JlY3Zmcm9tOiAgLy8gQ291 bGQgc3BlY2lmeSBzb3VyY2UuCi0gICAgIGNhc2UgX19OUl9yZWN2bXNnOiAgIC8vIENvdWxkIHNw ZWNpZnkgc291cmNlLgotICNlbmRpZgotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVk KF9feDg2XzY0X18pCi0rI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRf XykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfc2VsZWN0OgotICNl bmRpZgotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmlu ZWQoX19taXBzX18pCi0rI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykg fHwgZGVmaW5lZChfX21pcHNfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNl IF9fTlJfX25ld3NlbGVjdDoKLSAjZW5kaWYKLSAjaWYgZGVmaW5lZChfX2FybV9fKSB8fCBcCi0t ICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMy X0JJVFMpKQotKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChB UkNIX0NQVV8zMl9CSVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAg IGNhc2UgX19OUl9zZW5kOgotICNlbmRpZgotICNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRl ZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAotLSAgICBkZWZpbmVkKF9f YWFyY2g2NF9fKQotKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJw YzY0X18pCi0gICAgIGNhc2UgX19OUl9zZW5kbXNnOiAgLy8gQ291bGQgc3BlY2lmeSBkZXN0aW5h dGlvbi4KLSAgICAgY2FzZSBfX05SX3NlbmR0bzogICAvLyBDb3VsZCBzcGVjaWZ5IGRlc3RpbmF0 aW9uLgotICNlbmRpZgotQEAgLTY0Nyw3ICs2NjIsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0Fs bG93ZWRCYXNpY1NjaGVkdWxlcihpbnQgc3lzbm8pIHsKLSAgICAgICByZXR1cm4gdHJ1ZTsKLSAg ICAgY2FzZSBfX05SX2dldHByaW9yaXR5OgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZp bmVkKF9fYXJtX18pIHx8IFwKLS0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYm IGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCi0rICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNf RkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQo X19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX25pY2U6Ci0gI2VuZGlmCi0gICAgIGNhc2Ug X19OUl9zZXRwcmlvcml0eToKLUBAIC02NTksNyArNjc1LDggQEAgYm9vbCBTeXNjYWxsU2V0czo6 SXNBbGxvd2VkQmFzaWNTY2hlZHVsZXIoaW50IHN5c25vKSB7Ci0gYm9vbCBTeXNjYWxsU2V0czo6 SXNBZG1pbk9wZXJhdGlvbihpbnQgc3lzbm8pIHsKLSAgIHN3aXRjaCAoc3lzbm8pIHsKLSAjaWYg ZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBcCi0tICAgIChkZWZpbmVk KEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQotKyAg ICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9C SVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9i ZGZsdXNoOgotICNlbmRpZgotICAgICBjYXNlIF9fTlJfa2V4ZWNfbG9hZDoKLUBAIC02NzUsNyAr NjkyLDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBZG1pbk9wZXJhdGlvbihpbnQgc3lzbm8pIHsK LSAKLSBib29sIFN5c2NhbGxTZXRzOjpJc0tlcm5lbE1vZHVsZShpbnQgc3lzbm8pIHsKLSAgIHN3 aXRjaCAoc3lzbm8pIHsKLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82 NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZp bmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLSsgICAgZGVmaW5lZChf X3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfY3JlYXRlX21vZHVsZToKLSAgICAgY2FzZSBf X05SX2dldF9rZXJuZWxfc3ltczogIC8vIFNob3VsZCBFTk9TWVMuCi0gICAgIGNhc2UgX19OUl9x dWVyeV9tb2R1bGU6Ci1AQCAtNzA4LDcgKzcyNiw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzRnND b250cm9sKGludCBzeXNubykgewotICAgICBjYXNlIF9fTlJfc3dhcG9mZjoKLSAgICAgY2FzZSBf X05SX3N3YXBvbjoKLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAotLSAgICAoZGVmaW5lZChB UkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKLSsgICAg KGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklU UykpIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfdW1v dW50OgotICNlbmRpZgotICAgICBjYXNlIF9fTlJfdW1vdW50MjoKLUBAIC03MjQsNyArNzQzLDcg QEAgYm9vbCBTeXNjYWxsU2V0czo6SXNOdW1hKGludCBzeXNubykgewotICAgICBjYXNlIF9fTlJf Z2V0Y3B1OgotICAgICBjYXNlIF9fTlJfbWJpbmQ6Ci0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8 IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAotLSAgICBkZWZp bmVkKF9fYWFyY2g2NF9fKQotKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9f cG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9taWdyYXRlX3BhZ2VzOgotICNlbmRpZgotICAg ICBjYXNlIF9fTlJfbW92ZV9wYWdlczoKLUBAIC03NTMsMTQgKzc3MiwxNSBAQCBib29sIFN5c2Nh bGxTZXRzOjpJc0dsb2JhbFByb2Nlc3NFbnZpcm9ubWVudChpbnQgc3lzbm8pIHsKLSAgIHN3aXRj aCAoc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX2FjY3Q6ICAvLyBQcml2aWxlZ2VkLgotICNpZiBk ZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBz X18pIHx8IFwKLS0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykKLSsgICAgZGVmaW5lZChfX2FhcmNo NjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfZ2V0cmxpbWl0 OgotICNlbmRpZgotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pCi0r I2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX3Bv d2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfdWdldHJsaW1pdDoKLSAjZW5kaWYKLSAjaWYgZGVm aW5lZChfX2kzODZfXykgfHwgXAotLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkg JiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKLSsgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQ U19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKLSsgICAgZGVmaW5l ZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfdWxpbWl0OgotICNlbmRpZgotICAgICBj YXNlIF9fTlJfZ2V0cnVzYWdlOgotQEAgLTc5NCw3ICs4MTQsNyBAQCBib29sIFN5c2NhbGxTZXRz OjpJc0dsb2JhbFN5c3RlbVN0YXR1cyhpbnQgc3lzbm8pIHsKLSAjZW5kaWYKLSAgICAgY2FzZSBf X05SX3N5c2luZm86Ci0gICAgIGNhc2UgX19OUl91bmFtZToKLS0jaWYgZGVmaW5lZChfX2kzODZf XykKLSsjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAg ICBjYXNlIF9fTlJfb2xkdW5hbWU6Ci0gICAgIGNhc2UgX19OUl9vbGRvbGR1bmFtZToKLSAjZW5k aWYKLUBAIC04ODgsNyArOTA4LDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNTeXN0ZW1WTWVzc2Fn ZVF1ZXVlKGludCBzeXNubykgewotICNlbmRpZgotIAotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8 fCBcCi0tICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hf Q1BVXzMyX0JJVFMpKQotKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVm aW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18p Ci0gLy8gQmlnIHN5c3RlbSBWIG11bHRpcGxleGluZyBzeXN0ZW0gY2FsbC4KLSBib29sIFN5c2Nh bGxTZXRzOjpJc1N5c3RlbVZJcGMoaW50IHN5c25vKSB7Ci0gICBzd2l0Y2ggKHN5c25vKSB7Ci1A QCAtOTA4LDcgKzkyOSw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQW55U3lzdGVtVihpbnQgc3lz bm8pIHsKLSAgIHJldHVybiBJc1N5c3RlbVZNZXNzYWdlUXVldWUoc3lzbm8pIHx8IElzU3lzdGVt VlNlbWFwaG9yZXMoc3lzbm8pIHx8Ci0gICAgICAgICAgSXNTeXN0ZW1WU2hhcmVkTWVtb3J5KHN5 c25vKTsKLSAjZWxpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCi0tICAgIChkZWZpbmVkKEFSQ0hf Q1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQotKyAgICAoZGVm aW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkg fHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICByZXR1cm4gSXNTeXN0ZW1WSXBj KHN5c25vKTsKLSAjZW5kaWYKLSB9Ci1AQCAtOTYxLDcgKzk4Myw4IEBAIGJvb2wgU3lzY2FsbFNl dHM6OklzRmFOb3RpZnkoaW50IHN5c25vKSB7Ci0gYm9vbCBTeXNjYWxsU2V0czo6SXNUaW1lcihp bnQgc3lzbm8pIHsKLSAgIHN3aXRjaCAoc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX2dldGl0aW1l cjoKLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZp bmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0 X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9f KQotICAgICBjYXNlIF9fTlJfYWxhcm06Ci0gI2VuZGlmCi0gICAgIGNhc2UgX19OUl9zZXRpdGlt ZXI6Ci1AQCAtMTAyMCwxOCArMTA0MywyMiBAQCBib29sIFN5c2NhbGxTZXRzOjpJc01pc2MoaW50 IHN5c25vKSB7Ci0gICAgIGNhc2UgX19OUl9zeW5jZnM6Ci0gICAgIGNhc2UgX19OUl92aGFuZ3Vw OgotIC8vIFRoZSBzeXN0ZW0gY2FsbHMgYmVsb3cgYXJlIG5vdCBpbXBsZW1lbnRlZC4KLS0jaWYg ZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlw c19fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRl ZmluZWQoX19taXBzX18pIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBj YXNlIF9fTlJfYWZzX3N5c2NhbGw6Ci0gI2VuZGlmCi0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8 IFwKLS0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9D UFVfMzJfQklUUykpCi0rICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZp bmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykK LSAgICAgY2FzZSBfX05SX2JyZWFrOgotICNlbmRpZgotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8 fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pCi0rI2lmIGRlZmluZWQo X19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwg XAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9nZXRwbXNnOgot ICNlbmRpZgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCi0tICAgIChkZWZpbmVkKEFSQ0hf Q1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQotKyAgICAoZGVm aW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkg fHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9ndHR5Ogot ICAgICBjYXNlIF9fTlJfaWRsZToKLSAgICAgY2FzZSBfX05SX2xvY2s6Ci1AQCAtMTAzOSwyMCAr MTA2NiwyMiBAQCBib29sIFN5c2NhbGxTZXRzOjpJc01pc2MoaW50IHN5c25vKSB7Ci0gICAgIGNh c2UgX19OUl9wcm9mOgotICAgICBjYXNlIF9fTlJfcHJvZmlsOgotICNlbmRpZgotLSNpZiBkZWZp bmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18p Ci0rI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5l ZChfX21pcHNfXykgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2Ug X19OUl9wdXRwbXNnOgotICNlbmRpZgotICNpZiBkZWZpbmVkKF9feDg2XzY0X18pCi0gICAgIGNh c2UgX19OUl9zZWN1cml0eToKLSAjZW5kaWYKLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAot LSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8z Ml9CSVRTKSkKLSsgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQo QVJDSF9DUFVfMzJfQklUUykpIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAg ICBjYXNlIF9fTlJfc3R0eToKLSAjZW5kaWYKLS0jaWYgZGVmaW5lZChfX3g4Nl82NF9fKQotKyNp ZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2Fz ZSBfX05SX3R1eGNhbGw6Ci0gI2VuZGlmCi0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyNp ZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgIWRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAg Y2FzZSBfX05SX3ZzZXJ2ZXI6Ci0gI2VuZGlmCi0gICAgICAgcmV0dXJuIHRydWU7Ci0tLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYt aGVscGVycy9zeXNjYWxsX3NldHMuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmgKLUBA IC00MywxMyArNDMsMTQgQEAgY2xhc3MgU0FOREJPWF9FWFBPUlQgU3lzY2FsbFNldHMgewotICAg c3RhdGljIGJvb2wgSXNEZW5pZWRHZXRPck1vZGlmeVNvY2tldChpbnQgc3lzbm8pOwotIAotICNp ZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCi0tICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFN SUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQotKyAgICAoZGVmaW5lZChBUkNIX0NQ VV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAotKyAgICBk ZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAvLyBCaWcgbXVsdGlwbGV4aW5nIHN5c3RlbSBjYWxs IGZvciBzb2NrZXRzLgotICAgc3RhdGljIGJvb2wgSXNTb2NrZXRDYWxsKGludCBzeXNubyk7Ci0g I2VuZGlmCi0gCi0gI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8 fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCi0tICAgIGRlZmluZWQoX19hYXJjaDY0X18pCi0rICAg IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgIHN0YXRp YyBib29sIElzTmV0d29ya1NvY2tldEluZm9ybWF0aW9uKGludCBzeXNubyk7Ci0gI2VuZGlmCi0g Ci1AQCAtODcsNyArODgsOCBAQCBjbGFzcyBTQU5EQk9YX0VYUE9SVCBTeXNjYWxsU2V0cyB7Ci0g I2VuZGlmCi0gCi0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwKLS0gICAgKGRlZmluZWQoQVJD SF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCi0rICAgIChk ZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMp KSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgIC8vIEJpZyBzeXN0ZW0gViBt dWx0aXBsZXhpbmcgc3lzdGVtIGNhbGwuCi0gICBzdGF0aWMgYm9vbCBJc1N5c3RlbVZJcGMoaW50 IHN5c25vKTsKLSAjZW5kaWYKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v c2FuZGJveC9saW51eC9zZWNjb21wLWJwZi9zeXNjYWxsLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYvc3lzY2FsbC5jYwot QEAgLTE2LDcgKzE2LDcgQEAgbmFtZXNwYWNlIHNhbmRib3ggewotIG5hbWVzcGFjZSB7Ci0gCi0g I2lmIGRlZmluZWQoQVJDSF9DUFVfWDg2X0ZBTUlMWSkgfHwgZGVmaW5lZChBUkNIX0NQVV9BUk1f RkFNSUxZKSB8fCBcCi0tICAgIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCi0rICAgIGRl ZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpIHx8IGRlZmluZWQgKEFSQ0hfQ1BVX1BQQzY0X0ZB TUlMWSkKLSAvLyBOdW1iZXIgdGhhdCdzIG5vdCBjdXJyZW50bHkgdXNlZCBieSBhbnkgTGludXgg a2VybmVsIEFCSXMuCi0gY29uc3QgaW50IGtJbnZhbGlkU3lzY2FsbE51bWJlciA9IDB4MzUxZDM7 Ci0gI2Vsc2UKLUBAIC0zMDgsMTIgKzMwOCw1NiBAQCBhc20oLy8gV2UgbmVlZCB0byBiZSBhYmxl IHRvIHRlbGwgdGhlIGtlcm5lbCBleGFjdGx5IHdoZXJlIHdlIG1hZGUgYQotICAgICAvLyBFbnRl ciB0aGUga2VybmVsCi0gICAgICJzdmMgMFxuIgotICAgICAiMjpyZXRcbiIKLSsgICAgIi5jZmlf ZW5kcHJvY1xuIgotKyAgICAiLnNpemUgU3lzY2FsbEFzbSwgLi1TeXNjYWxsQXNtXG4iCi0rI2Vs aWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgICAiLnRleHRcbiIKLSsgICAgIi5hbGlnbiA0 XG4iCi0rICAgICIudHlwZSBTeXNjYWxsQXNtIEBmdW5jdGlvblxuIgotKyAgICAiU3lzY2FsbEFz bTpcbiIKLSsgICAgIi5jZmlfc3RhcnRwcm9jXG4iCi0rCi0rICAgIC8vIENoZWNrIGlmIHIzIGlz IG5lZ2F0aXZlCi0rICAgICJjbXBkaSAzLCAwXG4iCi0rICAgICJiZ3QgMmZcbiIKLSsKLSsgICAg Ly8gTG9hZCBhZGRyZXNzIG9mIDNmIGludG8gcjMgYW5kIHJldHVybgotKyAgICAibWZsciAxMFxu IgotKyAgICAiYmwgMWZcbiIKLSsgICAgIjE6IG1mbHIgM1xuIgotKyAgICAibXRsciAxMFxuIgot KyAgICAiYWRkaSAzLCAzLCA0KjEzXG4iCi0rICAgICJibHJcbiIKLSsKLSsgICAgLy8gTG9hZCBh cmd1bWVudHMgZnJvbSBhcnJheSBpbnRvIHIzLTgKLSsgICAgLy8gc2F2ZSBwYXJhbSAzIGluIHIx MAotKyAgICAiMjpcbiIKLSsgICAgIm1yIDAsIDNcbiIKLSsgICAgImxkIDMsIDAoNClcbiIKLSsg ICAgImxkIDUsIDE2KDQpXG4iCi0rICAgICJsZCA2LCAyNCg0KVxuIgotKyAgICAibGQgNywgMzIo NClcbiIKLSsgICAgImxkIDgsIDQwKDQpXG4iCi0rICAgICJsZCA0LCA4KDQpXG4iCi0rICAgICJs aSA5LCAwXG4iCi0rCi0rICAgIC8vIEVudGVyIGtlcm5lbAotKyAgICAic2NcbiIKLSsKLSsgICAg Ly8gTWFnaWMgcmV0dXJuIGFkZHJlc3MKLSsgICAgIjM6XG4iCi0rICAgIC8vIExpa2UgTUlQUywg cHBjNjQgcmV0dXJuIHZhbHVlcyBhcmUgYWx3YXlzIHBvc2l0aXZlLgotKyAgICAvLyBDaGVjayBm b3IgZXJyb3IgaW4gY3IwLlNPIGFuZCBuZWdhdGUgdXBvbiBlcnJvcgotKyAgICAiYmMgNCwgMywg NGZcbiIKLSsgICAgIm5lZyAzLCAzXG4iCi0rICAgICI0OiBibHJcbiIKLSsKLSAgICAgIi5jZmlf ZW5kcHJvY1xuIgotICAgICAiLnNpemUgU3lzY2FsbEFzbSwgLi1TeXNjYWxsQXNtXG4iCi0gI2Vu ZGlmCi0gICAgICk7ICAvLyBhc20KLSAKLS0jaWYgZGVmaW5lZChfX3g4Nl82NF9fKQotKyNpZiBk ZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSBleHRlcm4gIkMi IHsKLSBpbnRwdHJfdCBTeXNjYWxsQXNtKGludHB0cl90IG5yLCBjb25zdCBpbnRwdHJfdCBhcmdz WzZdKTsKLSB9Ci1AQCAtNDI3LDYgKzQ3MSw4IEBAIGludHB0cl90IFN5c2NhbGw6OkNhbGwoaW50 IG5yLAotICAgICByZXQgPSBpbm91dDsKLSAgIH0KLSAKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJw YzY0X18pCi0rICBpbnRwdHJfdCByZXQgPSBTeXNjYWxsQXNtKG5yLCBhcmdzKTsKLSAjZWxzZQot ICNlcnJvciAiVW5pbXBsZW1lbnRlZCBhcmNoaXRlY3R1cmUiCi0gI2VuZGlmCi1AQCAtNDQzLDgg KzQ4OSwxOCBAQCB2b2lkIFN5c2NhbGw6OlB1dFZhbHVlSW5VY29udGV4dChpbnRwdHJfdCByZXRf dmFsLCB1Y29udGV4dF90KiBjdHgpIHsKLSAgICAgLy8gbmVlZHMgdG8gYmUgY2hhbmdlZCBiYWNr LgotICAgICByZXRfdmFsID0gLXJldF92YWw7Ci0gICAgIFNFQ0NPTVBfUEFSTTQoY3R4KSA9IDE7 Ci0tICB9IGVsc2UKLSsgIH0gZWxzZSB7Ci0gICAgIFNFQ0NPTVBfUEFSTTQoY3R4KSA9IDA7Ci0r ICB9Ci0rI2VuZGlmCi0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgIC8vIFNhbWUgYXMg TUlQUywgbmVlZCB0byBpbnZlcnQgcmV0IGFuZCBzZXQgZXJyb3IgcmVnaXN0ZXIgKGNyMC5TTykK LSsgIGlmIChyZXRfdmFsIDw9IC0xICYmIHJldF92YWwgPj0gLTQwOTUpIHsKLSsgICAgcmV0X3Zh bCA9IC1yZXRfdmFsOwotKyAgICBjdHgtPnVjX21jb250ZXh0LnJlZ3MtPmNjciB8PSAoMSA8PCAy OCk7Ci0rICB9IGVsc2UgewotKyAgICBjdHgtPnVjX21jb250ZXh0LnJlZ3MtPmNjciAmPSB+KDEg PDwgMjgpOwotKyAgfQotICNlbmRpZgotICAgU0VDQ09NUF9SRVNVTFQoY3R4KSA9IHN0YXRpY19j YXN0PGdyZWdfdD4ocmV0X3ZhbCk7Ci0gfQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmL3RyYXAuY2MKLSsrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi90cmFwLmNj Ci1AQCAtMjMwLDYgKzIzMCwyMCBAQCB2b2lkIFRyYXA6OlNpZ1N5cyhpbnQgbnIsIExpbnV4U2ln SW5mbyogaW5mbywgdWNvbnRleHRfdCogY3R4KSB7Ci0gICAgICAgU2V0SXNJblNpZ0hhbmRsZXIo KTsKLSAgICAgfQotIAotKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAgIC8vIE9uIHBw YzY0K2dsaWJjLCBzb21lIHN5c2NhbGxzIHNlZW0gdG8gYWNjaWRlbnRhbGx5IG5lZ2F0ZSB0aGUg Zmlyc3QKLSsgICAgLy8gcGFyYW1ldGVyIHdoaWNoIGNhdXNlcyBjaGVja3MgYWdhaW5zdCBpdCB0 byBmYWlsLiBGb3Igbm93LCBtYW51YWxseQotKyAgICAvLyBuZWdhdGUgdGhlbSBiYWNrLgotKyAg ICAvLyBUT0RPKHNoYXduQGFuYXN0YXMuaW8pOiBpbnZlc3RpZ2F0ZSB0aGlzIGlzc3VlIGZ1cnRo ZXIKLSsgICAgYXV0byBuciA9IFNFQ0NPTVBfU1lTQ0FMTChjdHgpOwotKyAgICBpZiAobnIgPT0g X19OUl9vcGVuYXQgfHwgbnIgPT0gX19OUl9ta2RpcmF0IHx8IG5yID09IF9fTlJfZmFjY2Vzc2F0 IHx8IG5yID09IF9fTlJfcmVhZGxpbmthdCB8fAotKyAgICAgICAgbnIgPT0gX19OUl9yZW5hbWVh dCB8fCBuciA9PSBfX05SX3JlbmFtZWF0MiB8fCBuciA9PSBfX05SX25ld2ZzdGF0YXQgfHwgbnIg PT0gX19OUl91bmxpbmthdCkgewotKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludD4oU0VDQ09N UF9QQVJNMShjdHgpKSA+IDApIHsKLSsgICAgICAgICAgICBTRUNDT01QX1BBUk0xKGN0eCkgPSAt U0VDQ09NUF9QQVJNMShjdHgpOwotKyAgICAgICAgfQotKyAgICB9Ci0rI2VuZGlmCi0rCi0gICAg IC8vIENvcHkgdGhlIHNlY2NvbXAtc3BlY2lmaWMgZGF0YSBpbnRvIGEgYXJjaF9zZWNjb21wX2Rh dGEgc3RydWN0dXJlLiBUaGlzCi0gICAgIC8vIGlzIHdoYXQgd2UgYXJlIHNob3dpbmcgdG8gVHJh cEZuYyBjYWxsYmFja3MgdGhhdCB0aGUgc3lzdGVtIGNhbGwKLSAgICAgLy8gZXZhbHVhdG9yIHJl Z2lzdGVyZWQgd2l0aCB0aGUgc2FuZGJveC4KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vc2FuZGJveC9saW51eC9zZXJ2aWNlcy9jcmVkZW50aWFscy5jYwotKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlcnZpY2VzL2NyZWRl bnRpYWxzLmNjCi1AQCAtNzksNyArNzksNyBAQCBib29sIENocm9vdFRvU2FmZUVtcHR5RGlyKCkg ewotICAgcGlkX3QgcGlkID0gLTE7Ci0gICBhbGlnbmFzKDE2KSBjaGFyIHN0YWNrX2J1ZltQVEhS RUFEX1NUQUNLX01JTl07Ci0gI2lmIGRlZmluZWQoQVJDSF9DUFVfWDg2X0ZBTUlMWSkgfHwgZGVm aW5lZChBUkNIX0NQVV9BUk1fRkFNSUxZKSB8fCBcCi0tICAgIGRlZmluZWQoQVJDSF9DUFVfTUlQ U19GQU1JTFkpCi0rICAgIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpIHx8IGRlZmluZWQo QVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotICAgLy8gVGhlIHN0YWNrIGdyb3dzIGRvd253YXJkLgot ICAgdm9pZCogc3RhY2sgPSBzdGFja19idWYgKyBzaXplb2Yoc3RhY2tfYnVmKTsKLSAjZWxzZQot LS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3N5c2Nh bGxfYnJva2VyL2Jyb2tlcl9wcm9jZXNzLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3NhbmRib3gvbGludXgvc3lzY2FsbF9icm9rZXIvYnJva2VyX3Byb2Nlc3MuY2MK LUBAIC0xNTEsNyArMTUxLDcgQEAgYm9vbCBCcm9rZXJQcm9jZXNzOjpJc1N5c2NhbGxBbGxvd2Vk KGludCBzeXNubykgY29uc3QgewotICNpZiBkZWZpbmVkKF9fTlJfZnN0YXRhdCkKLSAgICAgY2Fz ZSBfX05SX2ZzdGF0YXQ6Ci0gI2VuZGlmCi0tI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVm aW5lZChfX2FhcmNoNjRfXykKLSsjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9f YWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9uZXdm c3RhdGF0OgotICNlbmRpZgotICAgICAgIHJldHVybiAhZmFzdF9jaGVja19pbl9jbGllbnRfIHx8 IGFsbG93ZWRfY29tbWFuZF9zZXRfLnRlc3QoQ09NTUFORF9TVEFUKTsKLS0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51 eF9zZWNjb21wLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJv eC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51eF9zZWNjb21wLmgKLUBAIC0yOSw2ICsyOSw5IEBA Ci0gI2lmbmRlZiBFTV9BQVJDSDY0Ci0gI2RlZmluZSBFTV9BQVJDSDY0IDE4MwotICNlbmRpZgot KyNpZm5kZWYgRU1fUFBDNjQKLSsjZGVmaW5lIEVNX1BQQzY0IDIxCi0rI2VuZGlmCi0gCi0gI2lm bmRlZiBfX0FVRElUX0FSQ0hfNjRCSVQKLSAjZGVmaW5lIF9fQVVESVRfQVJDSF82NEJJVCAweDgw MDAwMDAwCi1AQCAtNTQsNiArNTcsMTIgQEAKLSAjaWZuZGVmIEFVRElUX0FSQ0hfQUFSQ0g2NAot ICNkZWZpbmUgQVVESVRfQVJDSF9BQVJDSDY0IChFTV9BQVJDSDY0IHwgX19BVURJVF9BUkNIXzY0 QklUIHwgX19BVURJVF9BUkNIX0xFKQotICNlbmRpZgotKyNpZm5kZWYgQVVESVRfQVJDSF9QUEM2 NAotKyNkZWZpbmUgQVVESVRfQVJDSF9QUEM2NCAoRU1fUFBDNjQgfCBfX0FVRElUX0FSQ0hfNjRC SVQpCi0rI2VuZGlmCi0rI2lmbmRlZiBBVURJVF9BUkNIX1BQQzY0TEUKLSsjZGVmaW5lIEFVRElU X0FSQ0hfUFBDNjRMRSAoRU1fUFBDNjQgfCBfX0FVRElUX0FSQ0hfNjRCSVQgfCBfX0FVRElUX0FS Q0hfTEUpCi0rI2VuZGlmCi0gCi0gLy8gRm9yIHByY3RsLmgKLSAjaWZuZGVmIFBSX1NFVF9TRUND T01QCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgv c3lzdGVtX2hlYWRlcnMvbGludXhfc2lnbmFsLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51eF9zaWduYWwuaAot QEAgLTEzLDcgKzEzLDcgQEAKLSAvLyAobm90IHVuZGVmaW5lZCwgYnV0IGRlZmluZWQgZGlmZmVy ZW50IHZhbHVlcyBhbmQgaW4gZGlmZmVyZW50IG1lbW9yeQotIC8vIGxheW91dHMpLiBTbywgZmls bCB0aGUgZ2FwIGhlcmUuCi0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZf NjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBcCi0tICAgIGRlZmluZWQoX19hYXJjaDY0X18p Ci0rICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAK LSAjZGVmaW5lIExJTlVYX1NJR0hVUCAxCi0gI2RlZmluZSBMSU5VWF9TSUdJTlQgMgotLS0tIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFk ZXJzL2xpbnV4X3N5c2NhbGxzLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51eF9zeXNjYWxscy5oCi1AQCAtMzUs NSArMzUsOSBAQAotICNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2FybTY0 X2xpbnV4X3N5c2NhbGxzLmgiCi0gI2VuZGlmCi0gCi0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRf XykKLSsjaW5jbHVkZSAic2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9wcGM2NF9saW51eF9z eXNjYWxscy5oIgotKyNlbmRpZgotKwotICNlbmRpZiAgLy8gU0FOREJPWF9MSU5VWF9TWVNURU1f SEVBREVSU19MSU5VWF9TWVNDQUxMU19IXwotIAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3Vjb250ZXh0LmgK LSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zeXN0 ZW1faGVhZGVycy9saW51eF91Y29udGV4dC5oCi1AQCAtMTEsNiArMTEsOCBAQAotICNpbmNsdWRl ICJzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2FybV9saW51eF91Y29udGV4dC5oIgotICNl bGlmIGRlZmluZWQoX19pMzg2X18pCi0gI2luY2x1ZGUgInNhbmRib3gvbGludXgvc3lzdGVtX2hl YWRlcnMvaTM4Nl9saW51eF91Y29udGV4dC5oIgotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRf XykKLSsjaW5jbHVkZSAic2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9wcGM2NF9saW51eF91 Y29udGV4dC5oIgotICNlbHNlCi0gI2Vycm9yICJObyBzdXBwb3J0IGZvciB5b3VyIGFyY2hpdGVj dHVyZSBpbiBQTmFDbCBoZWFkZXIiCi0gI2VuZGlmCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0t IC9kZXYvbnVsbAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94 L2xpbnV4L3N5c3RlbV9oZWFkZXJzL3BwYzY0X2xpbnV4X3N5c2NhbGxzLmgKLUBAIC0wLDAgKzEs MTIgQEAKLSsvLyBDb3B5cmlnaHQgMjAxNCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0 cyByZXNlcnZlZC4KLSsvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0rLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug ZmlsZS4KLSsKLSsjaWZuZGVmIFNBTkRCT1hfTElOVVhfU1lTVEVNX0hFQURFUlNfUFBDNjRfTElO VVhfU1lTQ0FMTFNfSF8KLSsjZGVmaW5lIFNBTkRCT1hfTElOVVhfU1lTVEVNX0hFQURFUlNfUFBD NjRfTElOVVhfU1lTQ0FMTFNfSF8KLSsKLSsjaW5jbHVkZSA8YXNtL3VuaXN0ZC5oPgotKwotKy8v VE9ETzogaXMgaXQgbmVjZXNzYXJ5IHRvIHJlZGVmaW5lIHN5c2NhbGwgbnVtYmVycyBmb3IgUFBD NjQ/Ci0rCi0rI2VuZGlmICAvLyBTQU5EQk9YX0xJTlVYX1NZU1RFTV9IRUFERVJTX1BQQzY0X0xJ TlVYX1NZU0NBTExTX0hfCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3N5c3RlbV9o ZWFkZXJzL3BwYzY0X2xpbnV4X3Vjb250ZXh0LmgKLUBAIC0wLDAgKzEsMTIgQEAKLSsvLyBDb3B5 cmlnaHQgMjAxNCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsv LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl bnNlIHRoYXQgY2FuIGJlCi0rLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLSsKLSsjaWZu ZGVmIFNBTkRCT1hfTElOVVhfU1lTVEVNX0hFQURFUlNfUFBDNjRfTElOVVhfVUNPTlRFWFRfSF8K LSsjZGVmaW5lIFNBTkRCT1hfTElOVVhfU1lTVEVNX0hFQURFUlNfUFBDNjRfTElOVVhfVUNPTlRF WFRfSF8KLSsKLSsjaW5jbHVkZSA8c3lzL3Vjb250ZXh0Lmg+Ci0rCi0rLy9UT0RPOiBpcyBpdCBu ZWNlc3NhcnkgdG8gcmVkZWZpbmUgdWNvbnRleHQgb24gUFBDNjQ/Ci0rCi0rI2VuZGlmICAvLyBT QU5EQk9YX0xJTlVYX1NZU1RFTV9IRUFERVJTX1BQQzY0X0xJTlVYX1VDT05URVhUX0hfCi0tLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NlcnZpY2VzL3NlcnZpY2VfbWFuYWdl ci9zYW5kYm94L2xpbnV4L2JwZl9yZW5kZXJlcl9wb2xpY3lfbGludXguY2MKLSsrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2VydmljZXMvc2VydmljZV9tYW5hZ2VyL3NhbmRi b3gvbGludXgvYnBmX3JlbmRlcmVyX3BvbGljeV9saW51eC5jYwotQEAgLTE1LDYgKzE1LDExIEBA Ci0gI2luY2x1ZGUgInNhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGludXhfc3lzY2FsbHMu aCIKLSAjaW5jbHVkZSAic2VydmljZXMvc2VydmljZV9tYW5hZ2VyL3NhbmRib3gvbGludXgvc2Fu ZGJveF9saW51eC5oIgotIAotKy8vIE9uIFBQQzY0LCBUQ0dFVFMgaXMgZGVmaW5lZCBpbiB0ZXJt cyBvZiBzdHJ1Y3QgdGVybWlvcywgc28gd2UgbXVzdCBpbmNsdWRlIHRlcm1pb3MuaAotKyNpZmRl ZiBfX3Bvd2VycGM2NF9fCi0rI2luY2x1ZGUgPHRlcm1pb3MuaD4KLSsjZW5kaWYKLSsKLSAvLyBU T0RPKHZpZ25hdHRpKTogcmVwbGFjZSB0aGUgbG9jYWwgZGVmaW5pdGlvbnMgYmVsb3cgd2l0aCAj aW5jbHVkZQotIC8vIDxsaW51eC9kbWEtYnVmLmg+IG9uY2Uga2VybmVsIHZlcnNpb24gNC42IGJl Y29tZXMgd2lkZWx5IHVzZWQuCi0gI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Ci0tLS0gcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2FuZ2xlL3NyYy9saWJBTkdM RS9Db25zdGFudHMuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9hbmdsZS9zcmMvbGliQU5HTEUvQ29uc3RhbnRzLmgKLUBAIC05LDYgKzksNyBAQAot ICNpZm5kZWYgTElCQU5HTEVfQ09OU1RBTlRTX0hfCi0gI2RlZmluZSBMSUJBTkdMRV9DT05TVEFO VFNfSF8KLSAKLSsjaW5jbHVkZSA8Y3N0ZGRlZj4KLSAjaW5jbHVkZSAiY29tbW9uL3BsYXRmb3Jt LmgiCi0gCi0gbmFtZXNwYWNlIGdsCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2hlYXAvYXNtL0JVSUxELmdu Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JsaW5r L3JlbmRlcmVyL3BsYXRmb3JtL2hlYXAvYXNtL0JVSUxELmduCi1AQCAtNDYsNiArNDYsMTAgQEAg aWYgKGN1cnJlbnRfY3B1ID09ICJ4ODYiIHx8IGN1cnJlbnRfY3B1ID09ICJ4NjQiKSB7Ci0gICAg ICAgc291cmNlcyA9IFsKLSAgICAgICAgICJTYXZlUmVnaXN0ZXJzX21pcHM2NC5TIiwKLSAgICAg ICBdCi0rICAgIH0gZWxzZSBpZiAoY3VycmVudF9jcHUgPT0gInBwYzY0IikgewotKyAgICAgIHNv dXJjZXMgPSBbCi0rICAgICAgICAiU2F2ZVJlZ2lzdGVyc19wcGM2NC5TIiwKLSsgICAgICBdCi0g ICAgIH0KLSAKLSAgICAgaWYgKGN1cnJlbnRfY3B1ID09ICJhcm0iKSB7Ci1uZXcgZmlsZSBtb2Rl IDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9oZWFwL2FzbS9TYXZlUmVn aXN0ZXJzX3BwYzY0LlMKLUBAIC0wLDAgKzEsNjAgQEAKLSsvKgotKyAqIHR5cGVkZWYgdm9pZCAo KlB1c2hBbGxSZWdpc3RlcnNDYWxsYmFjaykoU2FmZVBvaW50QmFycmllciosIFRocmVhZFN0YXRl KiwgaW50cHRyX3QqKTsKLSsgKiBleHRlcm4gIkMiIHZvaWQgUHVzaEFsbFJlZ2lzdGVycyhTYWZl UG9pbnRCYXJyaWVyKiwgVGhyZWFkU3RhdGUqLCBQdXNoQWxsUmVnaXN0ZXJzQ2FsbGJhY2spCi0r ICovCi0rCi0rLnR5cGUgUHVzaEFsbFJlZ2lzdGVycywgJWZ1bmN0aW9uCi0rLmdsb2JhbCBQdXNo QWxsUmVnaXN0ZXJzCi0rLmhpZGRlbiBQdXNoQWxsUmVnaXN0ZXJzCi0rUHVzaEFsbFJlZ2lzdGVy czoKLSsgICAgICAgIC8vIFB1c2ggYWxsIGNhbGxlZS1zYXZlcyByZWdpc3RlcnMgdG8gZ2V0IHRo ZW0KLSsgICAgICAgIC8vIG9uIHRoZSBzdGFjayBmb3IgY29uc2VydmF0aXZlIHN0YWNrIHNjYW5u aW5nLgotKyAgICAgICAgLy8gUmVzZXJ2ZSBzcGFjZSBmb3IgY2FsbGVlLXNhdmVkIHJlZ2lzdGVy cyBhbmQgbWluaW1hbCBzdGFjayBmcmFtZS4KLSsgICAgICAgIG1mbHIgMCAgICAgICAgICMgcjAg PSBMUgotKyAgICAgICAgc3RkIDAsMTYoMSkgICAgIyBzdG9yZSBMUiBhdCBhZGRyIHNwKzE2Ci0r ICAgICAgICBzdGR1IDEsLTE3NigxKSAjIGdyb3cgc3RhY2sgYnkgMTc2IGJ5dGVzIGFuZCBzdG9y ZSBuZXcgc3RhY2sgdG9wIHB0ciB0byByMQotKyAgICAgICAgICAgICMgMzIxOCo4ID0gbWluIHN0 YWNrICBub24tdm9sYXRpbGUgcmVnaXN0ZXJzCi0rCi0rICAgICAgICAvLyBTYXZlIHRoZSBjYWxs ZWUtc2F2ZWQgcmVnaXN0ZXJzCi0rICAgICAgICBzdGQgMzEsMTY4KDEpICAjIHN0b3JlIHIzMSB0 byBhZGRyIHNwKzE2OCAKLSsgICAgICAgIHN0ZCAzMCwxNjAoMSkgICMgZXRjLi4uCi0rICAgICAg ICBzdGQgMjksMTUyKDEpCi0rICAgICAgICBzdGQgMjgsMTQ0KDEpCi0rICAgICAgICBzdGQgMjcs MTM2KDEpCi0rICAgICAgICBzdGQgMjYsMTI4KDEpCi0rICAgICAgICBzdGQgMjUsMTIwKDEpCi0r ICAgICAgICBzdGQgMjQsMTEyKDEpCi0rICAgICAgICBzdGQgMjMsMTA0KDEpCi0rICAgICAgICBz dGQgMjIsOTYoMSkKLSsgICAgICAgIHN0ZCAyMSw4OCgxKQotKyAgICAgICAgc3RkIDIwLDgwKDEp Ci0rICAgICAgICBzdGQgMTksNzIoMSkKLSsgICAgICAgIHN0ZCAxOCw2NCgxKQotKyAgICAgICAg c3RkIDE3LDU2KDEpCi0rICAgICAgICBzdGQgMTYsNDgoMSkKLSsgICAgICAgIHN0ZCAxNSw0MCgx KQotKyAgICAgICAgc3RkIDE0LDMyKDEpCi0rICAgICAgICAKLSsgICAgICAgIC8vIE5vdGU6IHRo ZSBjYWxsZWUtc2F2ZWQgZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzIGRvIG5vdCBuZWVkIHRvIGJl Ci0rICAgICAgICAvLyBjb3BpZWQgdG8gdGhlIHN0YWNrLCBiZWNhdXNlIGZwIHJlZ2lzdGVycyBu ZXZlciBob2xkIGhlYXAgcG9pbnRlcnMKLSsgICAgICAgIC8vIGFuZCBzbyBkbyBub3QgbmVlZCB0 byBiZSBrZXB0IHZpc2libGUgdG8gdGhlIGdhcmJhZ2UgY29sbGVjdG9yLgotKyAgICAgICAgCi0r ICAgICAgICAvLyBQYXNzIHRoZSB0d28gZmlyc3QgYXJndW1lbnRzIHVudG91Y2hlZCBpbiByMyBh bmQgcjQgYW5kIHRoZQotKyAgICAgICAgLy8gc3RhY2sgcG9pbnRlciB0byB0aGUgY2FsbGJhY2su Ci0rCi0rICAgICAgICBzdGQgMiwgMjQoMSkgICAjIHNhdmUgcjIgdG8gc3ArMjQgYWRkcgotKyAg ICAgICAgbXRjdHIgNSAgICAgICAgIyBjb3B5IDNyZCBmdW5jdGlvbiBhcmcgKGNhbGxiYWNrIGZu IHBvaW50ZXIpIHRvIENUUgotKyAgICAgICAgbXIgMTIsIDUgICAgICAgIyByMTIgbXVzdCBob2xk IGFkZHJlc3Mgb2YgY2FsbGJhY2sgd2UgYXJlIGdvaW5nIHRvIGNhbGwgCi0rICAgICAgICAgICAg ICAgICAgICAgICAjICBmb3IgcG9zaXRpb24taWRlcGVuZGVudCBmdW5jdGlvbnMgaW5zaWRlIHRo ZSBjYWxsYmFjayB0byB3b3JrCi0rICAgICAgICBtciA1LCAxICAgICAgICAjIHNldCBjdXJyZW50 IHNwIChzdGFjayB0b3ApIGFzIDNyZCBhcmd1bWVudCBmb3IgdGhlIGNhbGxiYWNrCi0rICAgICAg ICBiY3RybCAgICAgICAgICAjIHNldCBMUiB0byBQQys0IGFuZCBjYWxsIHRoZSBjYWxsYmFjawot KyAgICAgICAgbGQgMiwgMjQoMSkgICAgIyByZXN0b3JlIHIyIGZyb20gc3ArMjQgYWRkcgotKwot KyAgICAgICAgLy8gQWRqdXN0IHN0YWNrLCByZXN0b3JlIHJldHVybiBhZGRyZXNzIGFuZCByZXR1 cm4uCi0rICAgICAgICAvLyBOb3RlOiB0aGUgY29waWVkIHJlZ2lzdGVycyBkbyBub3QgbmVlZCB0 byBiZSByZWxvYWRlZCBoZXJlLAotKyAgICAgICAgLy8gYmVjYXVzZSB0aGV5IHdlcmUgcHJlc2Vy dmVkIGJ5IHRoZSBjYWxsZWQgcm91dGluZS4KLSsgICAgICAgIGFkZGkgMSwxLDE3NiAgICMgcmVz dG9yZSBvcmlnaW5hbCBTUCBieSBkb2luZyBzcCArPSAxNzYKLSsgICAgICAgIGxkIDAsMTYoMSkg ICAgICMgcmVzdG9yZSBvcmlnaW5hbCBMUiBmcm9tIGFkZHIgc3ArMTYKLSsgICAgICAgIG10bHIg MCAgICAgICAgICMgLi4uIGNvcHkgaXQgdG8gdGhlIGFjdHVhbCBMUgotKyAgICAgICAgYmxyICAg ICAgICAgICAgIyByZXR1cm4gdG8gTFIgYWRkcgotKwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9oZWFwL2hl YXBfcGFnZS5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2hlYXAvaGVhcF9wYWdlLmgKLUBAIC02NywxMSAr NjcsMTIgQEAgY29uc3RleHByIHNpemVfdCBrQmxpbmtQYWdlQmFzZU1hc2sgPSB+a0JsaW5rUGFn ZU9mZnNldE1hc2s7Ci0gY29uc3RleHByIHNpemVfdCBrQmxpbmtQYWdlc1BlclJlZ2lvbiA9IDEw OwotIAotIC8vIFRPRE8obnlhKTogUmVwbGFjZSB0aGlzIHdpdGggc29tZXRoaW5nIGxpa2UgI2lm IEVOQUJMRV9OQUNMLgotLSNpZiAwCi0rI2lmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjQpCi0gLy8g TmFDbCdzIHN5c3RlbSBwYWdlIHNpemUgaXMgNjQgS2lCLiBUaGlzIGNhdXNlcyBhIHByb2JsZW0g aW4gT2lscGFuJ3MgaGVhcAotIC8vIGxheW91dCBiZWNhdXNlIE9pbHBhbiBhbGxvY2F0ZXMgdHdv IGd1YXJkIHBhZ2VzIGZvciBlYWNoIEJsaW5rIHBhZ2UgKHdob3NlCi0gLy8gc2l6ZSBpcyBrQmxp bmtQYWdlU2l6ZSA9IDJeMTcgPSAxMjggS2lCKS4gU28gd2UgZG9uJ3QgdXNlIGd1YXJkIHBhZ2Vz IGluCi0gLy8gTmFDbC4KLSsvLyBUaGUgc2FtZSBpc3N1ZSBob2xkcyBmb3IgcHBjNjQgc3lzdGVt cywgd2hpY2ggdXNlIGEgNjRrIHBhZ2Ugc2l6ZS4KLSBjb25zdGV4cHIgc2l6ZV90IGtCbGlua0d1 YXJkUGFnZVNpemUgPSAwOwotICNlbHNlCi0gY29uc3RleHByIHNpemVfdCBrQmxpbmtHdWFyZFBh Z2VTaXplID0gYmFzZTo6a1N5c3RlbVBhZ2VTaXplOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS93dGYvZHRv YS91dGlscy5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL3d0Zi9kdG9hL3V0aWxzLmgKLUBAIC00NSw3ICs0 NSw3IEBACi0gLy8gZGlzYWJsZWQuKQotIC8vIE9uIExpbnV4LHg4NiA4OTI1NWUtMjIgIT0gRGl2 X2RvdWJsZSg4OTI1NS4wLzFlMjIpCi0gI2lmIGRlZmluZWQoX01fWDY0KSB8fCBkZWZpbmVkKF9f eDg2XzY0X18pIHx8IGRlZmluZWQoX19BUk1FTF9fKSB8fCBcCi0tICAgIGRlZmluZWQoX19hYXJj aDY0X18pIHx8IGRlZmluZWQoX19NSVBTRUxfXykKLSsgICAgZGVmaW5lZChfX2FhcmNoNjRfXykg fHwgZGVmaW5lZChfX01JUFNFTF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gI2RlZmlu ZSBET1VCTEVfQ09OVkVSU0lPTl9DT1JSRUNUX0RPVUJMRV9PUEVSQVRJT05TIDEKLSAjZWxpZiBk ZWZpbmVkKF9NX0lYODYpIHx8IGRlZmluZWQoX19pMzg2X18pCi0gI2lmIGRlZmluZWQoX1dJTjMy KQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jp bmdzc2wvQlVJTEQuZ24KLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvYm9yaW5nc3NsL0JVSUxELmduCi1AQCAtMTAwLDYgKzEwMCwxMyBAQCBpZiAoaXNf d2luICYmICFpc19tc2FuICYmIGN1cnJlbnRfY3B1ICE9ICJhcm02NCIpIHsKLSAgICAgICB9IGVs c2UgewotICAgICAgICAgcHVibGljX2NvbmZpZ3MgPSBbICI6bm9fYXNtX2NvbmZpZyIgXQotICAg ICAgIH0KLSsgICAgfSBlbHNlIGlmIChjdXJyZW50X2NwdSA9PSAicHBjNjQiKSB7Ci0rICAgICAg aWYgKGlzX2xpbnV4KSB7Ci0rICAgICAgICAjIFRPRE86IHBwYzY0IChiZSkgY2hlY2sKLSsgICAg ICAgIHNvdXJjZXMgKz0gY3J5cHRvX3NvdXJjZXNfbGludXhfcHBjNjRsZQotKyAgICAgIH0gZWxz ZSB7Ci0rICAgICAgICBwdWJsaWNfY29uZmlncyA9IFsgIjpub19hc21fY29uZmlnIiBdCi0rICAg ICAgfQotICAgICB9IGVsc2UgewotICAgICAgIHB1YmxpY19jb25maWdzID0gWyAiOm5vX2FzbV9j b25maWciIF0KLSAgICAgfQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVy X2NvbW1vbi9yYXdfY29udGV4dF9jcHUuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1 bXBfd3JpdGVyX2NvbW1vbi9yYXdfY29udGV4dF9jcHUuaAotQEAgLTQ0LDYgKzQ0LDggQEAgdHlw ZWRlZiBNRFJhd0NvbnRleHRBUk0gUmF3Q29udGV4dENQVTsKLSB0eXBlZGVmIE1EUmF3Q29udGV4 dEFSTTY0X09sZCBSYXdDb250ZXh0Q1BVOwotICNlbGlmIGRlZmluZWQoX19taXBzX18pCi0gdHlw ZWRlZiBNRFJhd0NvbnRleHRNSVBTIFJhd0NvbnRleHRDUFU7Ci0rI2VsaWYgZGVmaW5lZChfX3Bv d2VycGM2NF9fKQotK3R5cGVkZWYgTURSYXdDb250ZXh0UFBDNjQgUmF3Q29udGV4dENQVTsKLSAj ZWxzZQotICNlcnJvciAiVGhpcyBjb2RlIGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8geW91ciBwbGF0 Zm9ybSB5ZXQuIgotICNlbmRpZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3Jp dGVyX2NvbW1vbi90aHJlYWRfaW5mby5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1 bXBfd3JpdGVyX2NvbW1vbi90aHJlYWRfaW5mby5jYwotQEAgLTI3MCw3ICsyNzAsNDIgQEAgdm9p ZCBUaHJlYWRJbmZvOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVKiBvdXQpIGNvbnN0IHsK LSAgIG91dC0+ZmxvYXRfc2F2ZS5maXIgPSBtY29udGV4dC5mcGNfZWlyOwotICNlbmRpZgotIH0K LS0jZW5kaWYgIC8vIF9fbWlwc19fCi0rCi0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQot KwotK3VpbnRwdHJfdCBUaHJlYWRJbmZvOjpHZXRJbnN0cnVjdGlvblBvaW50ZXIoKSBjb25zdCB7 Ci0rICAgIHJldHVybiBtY29udGV4dC5ncF9yZWdzW1BUX05JUF07Ci0rfQotKwotK3ZvaWQgVGhy ZWFkSW5mbzo6RmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSogb3V0KSBjb25zdCB7Ci0rICAg IG91dC0+Y29udGV4dF9mbGFncyA9IE1EX0NPTlRFWFRfUFBDNjRfRlVMTDsKLSsgICAgZm9yIChp bnQgaSA9IDA7IGkgPCBNRF9DT05URVhUX1BQQzY0X0dQUl9DT1VOVDsgaSsrKQotKyAgICAgICAg b3V0LT5ncHJbaV0gPSBtY29udGV4dC5ncF9yZWdzW2ldOwotKwotKyAgICBvdXQtPmxyID0gbWNv bnRleHQuZ3BfcmVnc1tQVF9MTktdOwotKyAgICBvdXQtPnNycjAgPSBtY29udGV4dC5ncF9yZWdz W1BUX05JUF07Ci0rICAgIG91dC0+c3JyMSA9IG1jb250ZXh0LmdwX3JlZ3NbUFRfTVNSXTsKLSsg ICAgb3V0LT5jciA9IG1jb250ZXh0LmdwX3JlZ3NbUFRfQ0NSXTsKLSsgICAgb3V0LT54ZXIgPSBt Y29udGV4dC5ncF9yZWdzW1BUX1hFUl07Ci0rICAgIG91dC0+Y3RyID0gbWNvbnRleHQuZ3BfcmVn c1tQVF9DVFJdOwotKyAgICAKLSsgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9GTE9BVElOR1NB VkVBUkVBX1BQQ19GUFJfQ09VTlQ7IGkrKykKLSsgICAgICAgIG91dC0+ZmxvYXRfc2F2ZS5mcHJl Z3NbaV0gPSBtY29udGV4dC5mcF9yZWdzW2ldOwotKwotKyAgICBvdXQtPmZsb2F0X3NhdmUuZnBz Y3IgPSBtY29udGV4dC5mcF9yZWdzW05GUFJFRy0xXTsKLSsKLSsgICAgZm9yIChpbnQgaSA9IDA7 IGkgPCBNRF9WRUNUT1JTQVZFQVJFQV9QUENfVlJfQ09VTlQ7IGkrKykKLSsgICAgICAgIG91dC0+ dmVjdG9yX3NhdmUuc2F2ZV92cltpXSA9IFwKLSsgICAgICAgICAgICB7KCgodWludDY0X3QpdnJl Z3MudnJyZWdzW2ldWzBdKSA8PCAzMikgCi0rICAgICAgICAgICAgICAgICAgICAgICAgICB8IHZy ZWdzLnZycmVnc1tpXVsxXSwgCi0rICAgICAgICAgICAgKCgodWludDY0X3QpdnJlZ3MudnJyZWdz W2ldWzJdKSA8PCAzMikKLSsgICAgICAgICAgICAgICAgICAgICAgICAgfCB2cmVncy52cnJlZ3Nb aV1bM119OwotKwotKyAgICBvdXQtPnZyc2F2ZSA9IHZyZWdzLnZyc2F2ZTsKLSsgICAgb3V0LT52 ZWN0b3Jfc2F2ZS5zYXZlX3ZzY3IgPSB7MCwgdnJlZ3MudnNjci52c2NyX3dvcmR9OwotKyAgICBv dXQtPnZlY3Rvcl9zYXZlLnNhdmVfdnJ2YWxpZCA9IDB4RkZGRkZGRkY7IAotK30KLSsjZW5kaWYg IC8vIF9fcG93ZXJwYzY0X18KLSAKLSB2b2lkIFRocmVhZEluZm86OkdldEdlbmVyYWxQdXJwb3Nl UmVnaXN0ZXJzKHZvaWQqKiBncF9yZWdzLCBzaXplX3QqIHNpemUpIHsKLSAgIGFzc2VydChncF9y ZWdzIHx8IHNpemUpOwotQEAgLTI3OSw2ICszMTQsMTEgQEAgdm9pZCBUaHJlYWRJbmZvOjpHZXRH ZW5lcmFsUHVycG9zZVJlZ2lzdGVycyh2b2lkKiogZ3BfcmVncywgc2l6ZV90KiBzaXplKSB7Ci0g ICAgICpncF9yZWdzID0gbWNvbnRleHQuZ3JlZ3M7Ci0gICBpZiAoc2l6ZSkKLSAgICAgKnNpemUg PSBzaXplb2YobWNvbnRleHQuZ3JlZ3MpOwotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykK LSsgIGlmIChncF9yZWdzKQotKyAgICAqZ3BfcmVncyA9IG1jb250ZXh0LmdwX3JlZ3M7Ci0rICBp ZiAoc2l6ZSkKLSsgICAgKnNpemUgPSBzaXplb2YobWNvbnRleHQuZ3BfcmVncyk7Ci0gI2Vsc2UK LSAgIGlmIChncF9yZWdzKQotICAgICAqZ3BfcmVncyA9ICZyZWdzOwotQEAgLTI5NCw2ICszMzQs MTEgQEAgdm9pZCBUaHJlYWRJbmZvOjpHZXRGbG9hdGluZ1BvaW50UmVnaXN0ZXJzKHZvaWQqKiBm cF9yZWdzLCBzaXplX3QqIHNpemUpIHsKLSAgICAgKmZwX3JlZ3MgPSAmbWNvbnRleHQuZnByZWdz OwotICAgaWYgKHNpemUpCi0gICAgICpzaXplID0gc2l6ZW9mKG1jb250ZXh0LmZwcmVncyk7Ci0r I2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgaWYgKGZwX3JlZ3MpCi0rICAgICpmcF9y ZWdzID0gJm1jb250ZXh0LmZwX3JlZ3M7Ci0rICBpZiAoc2l6ZSkKLSsgICAgKnNpemUgPSBzaXpl b2YobWNvbnRleHQuZnBfcmVncyk7Ci0gI2Vsc2UKLSAgIGlmIChmcF9yZWdzKQotICAgICAqZnBf cmVncyA9ICZmcHJlZ3M7Ci1AQCAtMzAyLDQgKzM0NywxMyBAQCB2b2lkIFRocmVhZEluZm86Okdl dEZsb2F0aW5nUG9pbnRSZWdpc3RlcnModm9pZCoqIGZwX3JlZ3MsIHNpemVfdCogc2l6ZSkgewot ICNlbmRpZgotIH0KLSAKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotK3ZvaWQgVGhyZWFk SW5mbzo6R2V0VmVjdG9yUmVnaXN0ZXJzKHZvaWQqKiB2X3JlZ3MsIHNpemVfdCogc2l6ZSkgewot KyAgICBpZiAodl9yZWdzKQotKyAgICAgICAgKnZfcmVncyA9ICZ2cmVnczsKLSsgICAgaWYgKHNp emUpCi0rICAgICAgICAqc2l6ZSA9IHNpemVvZih2cmVncyk7Ci0rfQotKyNlbmRpZgotKwotIH0g IC8vIG5hbWVzcGFjZSBnb29nbGVfYnJlYWtwYWQKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51 eC9kdW1wX3dyaXRlcl9jb21tb24vdGhyZWFkX2luZm8uaAotKysrIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50 L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi90aHJlYWRfaW5mby5oCi1AQCAtNjgsNiArNjgsMTAg QEAgc3RydWN0IFRocmVhZEluZm8gewotICAgLy8gVXNlIHRoZSBzdHJ1Y3R1cmVzIGRlZmluZWQg aW4gPHN5cy91c2VyLmg+Ci0gICBzdHJ1Y3QgdXNlcl9yZWdzX3N0cnVjdCByZWdzOwotICAgc3Ry dWN0IHVzZXJfZnBzaW1kX3N0cnVjdCBmcHJlZ3M7Ci0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2 NF9fKQotKyAgLy8gVXNlIHRoZSBzdHJ1Y3R1cmVzIGRlZmluZWQgaW4gPHN5cy91Y29udGV4dC5o Pi4KLSsgIG1jb250ZXh0X3QgbWNvbnRleHQ7Ci0rICB2cnJlZ3NldF90IHZyZWdzOwotICNlbGlm IGRlZmluZWQoX19taXBzX18pCi0gICAvLyBVc2UgdGhlIHN0cnVjdHVyZSBkZWZpbmVkIGluIDxz eXMvdWNvbnRleHQuaD4uCi0gICBtY29udGV4dF90IG1jb250ZXh0OwotQEAgLTg0LDYgKzg4LDEx IEBAIHN0cnVjdCBUaHJlYWRJbmZvIHsKLSAKLSAgIC8vIFJldHVybnMgdGhlIHBvaW50ZXIgYW5k IHNpemUgb2YgZmxvYXQgcG9pbnQgcmVnaXN0ZXIgYXJlYS4KLSAgIHZvaWQgR2V0RmxvYXRpbmdQ b2ludFJlZ2lzdGVycyh2b2lkKiogZnBfcmVncywgc2l6ZV90KiBzaXplKTsKLSsKLSsjaWYgZGVm aW5lZChfX3Bvd2VycGM2NF9fKQotKyAgLy8gUmV0dXJucyB0aGUgcG9pbnRlciBhbmQgc2l6ZSBv ZiB0aGUgdmVjdG9yIHJlZ2lzdGVyIGFyZWEuIChQUEM2NCBvbmx5KQotKyAgdm9pZCBHZXRWZWN0 b3JSZWdpc3RlcnModm9pZCoqIHZfcmVncywgc2l6ZV90KiBzaXplKTsKLSsjZW5kaWYKLSB9Owot IAotIH0gIC8vIG5hbWVzcGFjZSBnb29nbGVfYnJlYWtwYWQKLS0tLSBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVu dC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmNjCi0rKysgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFk L3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5jYwot QEAgLTI1NCw2ICsyNTQsNDggQEAgdm9pZCBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNvbnRleHQo UmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dF90ICp1YykgewotICAgb3V0LT5mbG9h dF9zYXZlLmZpciA9IHVjLT51Y19tY29udGV4dC5mcGNfZWlyOyAgLy8gVW51c2VkLgotICNlbmRp ZgotIH0KLSsKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rCi0rdWludHB0cl90IFVD b250ZXh0UmVhZGVyOjpHZXRTdGFja1BvaW50ZXIoY29uc3QgdWNvbnRleHRfdCogdWMpIHsKLSsg ICAgcmV0dXJuIHVjLT51Y19tY29udGV4dC5ncF9yZWdzW01EX0NPTlRFWFRfUFBDNjRfUkVHX1NQ XTsKLSt9Ci0rCi0rdWludHB0cl90IFVDb250ZXh0UmVhZGVyOjpHZXRJbnN0cnVjdGlvblBvaW50 ZXIoY29uc3QgdWNvbnRleHRfdCogdWMpIHsKLSsgICAgcmV0dXJuIHVjLT51Y19tY29udGV4dC5n cF9yZWdzW1BUX05JUF07Ci0rfQotKwotK3ZvaWQgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250 ZXh0KFJhd0NvbnRleHRDUFUqIG91dCwgY29uc3QgdWNvbnRleHRfdCogdWMsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdnJyZWdzZXRfdCogdnJlZ3MpIHsKLSsg ICAgb3V0LT5jb250ZXh0X2ZsYWdzID0gTURfQ09OVEVYVF9QUEM2NF9GVUxMOwotKwotKyAgICBm b3IgKGludCBpID0gMDsgaSA8IE1EX0NPTlRFWFRfUFBDNjRfR1BSX0NPVU5UOyBpKyspCi0rICAg ICAgICBvdXQtPmdwcltpXSA9IHVjLT51Y19tY29udGV4dC5ncF9yZWdzW2ldOwotKwotKyAgICBv dXQtPmxyID0gdWMtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfTE5LXTsgICAgCi0rICAgIG91dC0+ c3JyMCA9IHVjLT51Y19tY29udGV4dC5ncF9yZWdzW1BUX05JUF07Ci0rICAgIG91dC0+c3JyMSA9 IHVjLT51Y19tY29udGV4dC5ncF9yZWdzW1BUX01TUl07Ci0rICAgIG91dC0+Y3IgPSB1Yy0+dWNf bWNvbnRleHQuZ3BfcmVnc1tQVF9DQ1JdOwotKyAgICBvdXQtPnhlciA9IHVjLT51Y19tY29udGV4 dC5ncF9yZWdzW1BUX1hFUl07Ci0rICAgIG91dC0+Y3RyID0gdWMtPnVjX21jb250ZXh0LmdwX3Jl Z3NbUFRfQ1RSXTsKLSsgICAgCi0rICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTURfRkxPQVRJTkdT QVZFQVJFQV9QUENfRlBSX0NPVU5UOyBpKyspCi0rICAgICAgICBvdXQtPmZsb2F0X3NhdmUuZnBy ZWdzW2ldID0gdWMtPnVjX21jb250ZXh0LmZwX3JlZ3NbaV07Ci0rCi0rICAgIG91dC0+ZmxvYXRf c2F2ZS5mcHNjciA9IHVjLT51Y19tY29udGV4dC5mcF9yZWdzW05GUFJFRy0xXTsKLSsKLSsgICAg Zm9yIChpbnQgaSA9IDA7IGkgPCBNRF9WRUNUT1JTQVZFQVJFQV9QUENfVlJfQ09VTlQ7IGkrKykK LSsgICAgICAgIG91dC0+dmVjdG9yX3NhdmUuc2F2ZV92cltpXSA9Ci0rICAgICAgICAgICAgeygo KHVpbnQ2NF90KXZyZWdzLT52cnJlZ3NbaV1bMF0pIDw8IDMyKSAKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgfCB2cmVncy0+dnJyZWdzW2ldWzFdLCAKLSsgICAgICAgICAgICAgKCgodWludDY0 X3QpdnJlZ3MtPnZycmVnc1tpXVsyXSkgPDwgMzIpCi0rICAgICAgICAgICAgICAgICAgICAgICAg IHwgdnJlZ3MtPnZycmVnc1tpXVszXX07Ci0rCi0rICAgIG91dC0+dnJzYXZlID0gdnJlZ3MtPnZy c2F2ZTsKLSsgICAgb3V0LT52ZWN0b3Jfc2F2ZS5zYXZlX3ZzY3IgPSB7MCwgdnJlZ3MtPnZzY3Iu dnNjcl93b3JkfTsKLSsgICAgb3V0LT52ZWN0b3Jfc2F2ZS5zYXZlX3ZydmFsaWQgPSAweEZGRkZG RkZGOyAKLSt9Ci0rCi0gI2VuZGlmCi0gCi0gfSAgLy8gbmFtZXNwYWNlIGdvb2dsZV9icmVha3Bh ZAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVh a3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29udGV4 dF9yZWFkZXIuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1v bi91Y29udGV4dF9yZWFkZXIuaAotQEAgLTU0LDYgKzU0LDkgQEAgc3RydWN0IFVDb250ZXh0UmVh ZGVyIHsKLSAjZWxpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQotICAgc3RhdGljIHZvaWQgRmlsbENQ VUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dF90ICp1YywKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBmcHNpbWRfY29udGV4dCogZnBy ZWdzKTsKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICBzdGF0aWMgdm9pZCBGaWxs Q1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0X3QgKnVjLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdnJyZWdzZXRfdCogdnJlZ3MpOwotICNl bHNlCi0gICBzdGF0aWMgdm9pZCBGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNv bnN0IHVjb250ZXh0X3QgKnVjKTsKLSAjZW5kaWYKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51 eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGlu dXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5jYwotQEAgLTQ2Nyw5ICs0NjcsMTYgQEAgYm9v bCBFeGNlcHRpb25IYW5kbGVyOjpIYW5kbGVTaWduYWwoaW50IC8qc2lnKi8sIHNpZ2luZm9fdCog aW5mbywgdm9pZCogdWMpIHsKLSAgICAgbWVtY3B5KCZnX2NyYXNoX2NvbnRleHRfLmZsb2F0X3N0 YXRlLCBmcF9wdHIsCi0gICAgICAgICAgICBzaXplb2YoZ19jcmFzaF9jb250ZXh0Xy5mbG9hdF9z dGF0ZSkpOwotICAgfQotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgIC8vIE9uIFBQ QzY0LCB3ZSBtdXN0IGNvcHkgVlIgc3RhdGUKLSsgIHVjb250ZXh0X3QqIHVjX3B0ciA9ICh1Y29u dGV4dF90Kil1YzsKLSsgIGlmICh1Y19wdHItPnVjX21jb250ZXh0LnZfcmVncykgewotKyAgICBt ZW1jcHkoJmdfY3Jhc2hfY29udGV4dF8udmVjdG9yX3N0YXRlLCB1Y19wdHItPnVjX21jb250ZXh0 LnZfcmVncywKLSsgICAgICAgICAgIHNpemVvZihnX2NyYXNoX2NvbnRleHRfLnZlY3Rvcl9zdGF0 ZSkpOwotKyAgfQotICNlbGlmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19t aXBzX18pCi0gICAvLyBGUCBzdGF0ZSBpcyBub3QgcGFydCBvZiB1c2VyIEFCSSBvbiBBUk0gTGlu dXguCi0tICAvLyBJbiBjYXNlIG9mIE1JUFMgTGludXggRlAgc3RhdGUgaXMgYWxyZWFkeSBwYXJ0 IG9mIHVjb250ZXh0X3QKLSsgIC8vIEluIGNhc2Ugb2YgTUlQUywgTGludXggRlAgc3RhdGUgaXMg YWxyZWFkeSBwYXJ0IG9mIHVjb250ZXh0X3QKLSAgIC8vIGFuZCAnZmxvYXRfc3RhdGUnIGlzIG5v dCBhIG1lbWJlciBvZiBDcmFzaENvbnRleHQuCi0gICB1Y29udGV4dF90KiB1Y19wdHIgPSAodWNv bnRleHRfdCopdWM7Ci0gICBpZiAodWNfcHRyLT51Y19tY29udGV4dC5mcHJlZ3MpIHsKLUBAIC03 MDcsMTEgKzcxNCwxOSBAQCBib29sIEV4Y2VwdGlvbkhhbmRsZXI6OldyaXRlTWluaWR1bXAoKSB7 Ci0gICB9Ci0gI2VuZGlmCi0gCi0tI2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmlu ZWQoX19hYXJjaDY0X18pICYmICFkZWZpbmVkKF9fbWlwc19fKQotKyNpZiAhZGVmaW5lZChfX0FS TV9FQUJJX18pICYmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykg XAotKyAgICAmJiAhZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgLy8gRlBVIHN0YXRlIGlzIG5v dCBwYXJ0IG9mIEFSTSBFQUJJIHVjb250ZXh0X3QuCi0gICBtZW1jcHkoJmNvbnRleHQuZmxvYXRf c3RhdGUsIGNvbnRleHQuY29udGV4dC51Y19tY29udGV4dC5mcHJlZ3MsCi0gICAgICAgICAgc2l6 ZW9mKGNvbnRleHQuZmxvYXRfc3RhdGUpKTsKLSAjZW5kaWYKLSsKLSsjaWYgZGVmaW5lZChfX3Bv d2VycGM2NF9fKQotKyAgLy8gVmVjdG9yIHJlZ2lzdGVycyBtdXN0IGJlIGNvcGllZCBvbiBQUEM2 NAotKyAgbWVtY3B5KCZjb250ZXh0LnZlY3Rvcl9zdGF0ZSwgY29udGV4dC5jb250ZXh0LnVjX21j b250ZXh0LnZfcmVncywKLSsgICAgICAgICBzaXplb2YoY29udGV4dC52ZWN0b3Jfc3RhdGUpKTsK LSsjZW5kaWYKLSsKLSAgIGNvbnRleHQudGlkID0gc3lzX2dldHRpZCgpOwotIAotICAgLy8gQWRk IGFuIGV4Y2VwdGlvbiBzdHJlYW0gdG8gdGhlIG1pbmlkdW1wIGZvciBiZXR0ZXIgcmVwb3J0aW5n LgotQEAgLTczMiw2ICs3NDcsOSBAQCBib29sIEV4Y2VwdGlvbkhhbmRsZXI6OldyaXRlTWluaWR1 bXAoKSB7Ci0gI2VsaWYgZGVmaW5lZChfX21pcHNfXykKLSAgIGNvbnRleHQuc2lnaW5mby5zaV9h ZGRyID0KLSAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihjb250ZXh0LmNvbnRleHQudWNf bWNvbnRleHQucGMpOwotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgIGNvbnRleHQu c2lnaW5mby5zaV9hZGRyID0KLSsgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihjb250ZXh0 LmNvbnRleHQudWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9OSVBdKTsKLSAjZWxzZQotICNlcnJvciAi VGhpcyBjb2RlIGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8geW91ciBwbGF0Zm9ybSB5ZXQuIgotICNl bmRpZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9i cmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRs ZXIuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9i cmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRs ZXIuaAotQEAgLTE5Miw3ICsxOTIsMTEgQEAgY2xhc3MgRXhjZXB0aW9uSGFuZGxlciB7Ci0gICAg IHNpZ2luZm9fdCBzaWdpbmZvOwotICAgICBwaWRfdCB0aWQ7ICAvLyB0aGUgY3Jhc2hpbmcgdGhy ZWFkLgotICAgICB1Y29udGV4dF90IGNvbnRleHQ7Ci0tI2lmICFkZWZpbmVkKF9fQVJNX0VBQklf XykgJiYgIWRlZmluZWQoX19taXBzX18pCi0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsg ICAgLy8gUFBDNjQncyBGUCBzdGF0ZSBpcyBhIHBhcnQgb2YgdWNvbnRleHRfdCBsaWtlIE1JUFMg YnV0IHRoZSB2ZWN0b3IKLSsgICAgLy8gc3RhdGUgaXMgbm90LCBzbyBhIHN0cnVjdCBpcyBuZWVk ZWQuCi0rICAgIHZzdGF0ZV90IHZlY3Rvcl9zdGF0ZTsKLSsjZWxpZiAhZGVmaW5lZChfX0FSTV9F QUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQotICAgICAvLyAjaWZkZWYgdGhpcyBvdXQgYmVj YXVzZSBGUCBzdGF0ZSBpcyBub3QgcGFydCBvZiB1c2VyIEFCSSBmb3IgTGludXggQVJNLgotICAg ICAvLyBJbiBjYXNlIG9mIE1JUFMgTGludXggRlAgc3RhdGUgaXMgYWxyZWFkeSBwYXJ0IG9mIHVj b250ZXh0X3Qgc28KLSAgICAgLy8gJ2Zsb2F0X3N0YXRlJyBpcyBub3QgcmVxdWlyZWQuCi0tLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2Jy ZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlcl91bml0dGVz dC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9i cmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRs ZXJfdW5pdHRlc3QuY2MKLUBAIC0zMDcsNyArMzA3LDcgQEAgVEVTVChFeGNlcHRpb25IYW5kbGVy VGVzdCwgUGFyYWxsZWxDaGlsZENyYXNoZXNEb250SGFuZykgewotICAgfQotIAotICAgLy8gV2Fp dCBhIHdoaWxlIHVudGlsIHRoZSBjaGlsZCBzaG91bGQgaGF2ZSBjcmFzaGVkLgotLSAgdXNsZWVw KDEwMDAwMDApOwotKyAgdXNsZWVwKDIwMDAwMDApOwotICAgLy8gS2lsbCB0aGUgY2hpbGQgaWYg aXQgaXMgc3RpbGwgcnVubmluZy4KLSAgIGtpbGwoY2hpbGQsIFNJR0tJTEwpOwotIAotQEAgLTU3 Niw2ICs1NzYsOCBAQCBjb25zdCB1bnNpZ25lZCBjaGFyIGtJbGxlZ2FsSW5zdHJ1Y3Rpb25bXSA9 IHsKLSAjaWYgZGVmaW5lZChfX21pcHNfXykKLSAgIC8vIG1mYzIgemVybyxJbXBsIC0gdXN1YWxs eSBpbGxlZ2FsIGluIHVzZXJzcGFjZS4KLSAgIDB4NDgsIDB4MDAsIDB4MDAsIDB4NDgKLSsjZWxp ZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAweDAxLCAweDAxLCAweDAxLCAweDAxIC8vIENy YXNoZXMgb24gYSB0ZXN0ZWQgUE9XRVI5IGNwdQotICNlbHNlCi0gICAvLyBUaGlzIGNyYXNoZXMg d2l0aCBTSUdJTEwgb24geDg2L3g4Ni02NC9hcm0uCi0gICAweGZmLCAweGZmLCAweGZmLCAweGZm Ci1AQCAtNzcxLDEwICs3NzMsMTAgQEAgVEVTVChFeGNlcHRpb25IYW5kbGVyVGVzdCwgSW5zdHJ1 Y3Rpb25Qb2ludGVyTWVtb3J5TWF4Qm91bmQpIHsKLSAKLSAgIC8vIFRoZXNlIGFyZSBkZWZpbmVk IGhlcmUgc28gdGhlIHBhcmVudCBjYW4gdXNlIHRoZW0gdG8gY2hlY2sgdGhlCi0gICAvLyBkYXRh IGZyb20gdGhlIG1pbmlkdW1wIGFmdGVyd2FyZHMuCi0tICAvLyBVc2UgNGsgaGVyZSBiZWNhdXNl IHRoZSBPUyB3aWxsIGhhbmQgb3V0IGEgc2luZ2xlIHBhZ2UgZXZlbgotKyAgLy8gVXNlIHRoZSBw YWdlIHNpemUgaGVyZSBiZWNhdXNlIHRoZSBPUyB3aWxsIGhhbmQgb3V0IGEgc2luZ2xlIHBhZ2Ug ZXZlbgotICAgLy8gaWYgYSBzbWFsbGVyIHNpemUgaXMgcmVxdWVzdGVkLCBhbmQgdGhpcyB0ZXN0 IHdhbnRzIHRvCi0gICAvLyB0ZXN0IHRoZSB1cHBlciBib3VuZCBvZiB0aGUgbWVtb3J5IHJhbmdl LgotLSAgY29uc3QgdWludDMyX3Qga01lbW9yeVNpemUgPSA0MDk2OyAgLy8gYnl0ZXMKLSsgIGNv bnN0IHVpbnQzMl90IGtNZW1vcnlTaXplID0gZ2V0cGFnZXNpemUoKTsgIC8vIGJ5dGVzCi0gICBj b25zdCBpbnQga09mZnNldCA9IGtNZW1vcnlTaXplIC0gc2l6ZW9mKGtJbGxlZ2FsSW5zdHJ1Y3Rp b24pOwotIAotICAgY29uc3QgcGlkX3QgY2hpbGQgPSBmb3JrKCk7Ci0tLS0gcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9j bGllbnQvbGludXgvbWljcm9kdW1wX3dyaXRlci9taWNyb2R1bXBfd3JpdGVyLmNjCi0rKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFr cGFkL3NyYy9jbGllbnQvbGludXgvbWljcm9kdW1wX3dyaXRlci9taWNyb2R1bXBfd3JpdGVyLmNj Ci1AQCAtMTM4LDcgKzEzOCw5IEBAIGNsYXNzIE1pY3JvZHVtcFdyaXRlciB7Ci0gICAgICAgICAg ICAgICAgICAgY29uc3QgTWljcm9kdW1wRXh0cmFJbmZvJiBtaWNyb2R1bXBfZXh0cmFfaW5mbywK LSAgICAgICAgICAgICAgICAgICBMaW51eER1bXBlciogZHVtcGVyKQotICAgICAgIDogdWNvbnRl eHRfKGNvbnRleHQgPyAmY29udGV4dC0+Y29udGV4dCA6IE5VTEwpLAotLSNpZiAhZGVmaW5lZChf X0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9fcG93ZXJw YzY0X18pCi0rICAgICAgICB2ZWN0b3Jfc3RhdGVfKGNvbnRleHQgPyAmY29udGV4dC0+dmVjdG9y X3N0YXRlIDogTlVMTCksCi0rI2VsaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5l ZChfX21pcHNfXykKLSAgICAgICAgIGZsb2F0X3N0YXRlXyhjb250ZXh0ID8gJmNvbnRleHQtPmZs b2F0X3N0YXRlIDogTlVMTCksCi0gI2VuZGlmCi0gICAgICAgICBkdW1wZXJfKGR1bXBlciksCi1A QCAtMzM3LDYgKzMzOSw4IEBAIGNsYXNzIE1pY3JvZHVtcFdyaXRlciB7Ci0gIyBlbHNlCi0gIyAg ZXJyb3IgIlRoaXMgbWlwcyBBQkkgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQgKG4zMikiCi0g I2VuZGlmCi0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgICBjb25zdCBjaGFyIGtB cmNoW10gPSAicHBjNjQiOwotICNlbHNlCi0gI2Vycm9yICJUaGlzIGNvZGUgaGFzIG5vdCBiZWVu IHBvcnRlZCB0byB5b3VyIHBsYXRmb3JtIHlldCIKLSAjZW5kaWYKLUBAIC00MDksNyArNDEzLDkg QEAgY2xhc3MgTWljcm9kdW1wV3JpdGVyIHsKLSAgIHZvaWQgRHVtcENQVVN0YXRlKCkgewotICAg ICBSYXdDb250ZXh0Q1BVIGNwdTsKLSAgICAgbXlfbWVtc2V0KCZjcHUsIDAsIHNpemVvZihSYXdD b250ZXh0Q1BVKSk7Ci0tI2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19t aXBzX18pCi0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgICAgVUNvbnRleHRSZWFkZXI6 OkZpbGxDUFVDb250ZXh0KCZjcHUsIHVjb250ZXh0XywgdmVjdG9yX3N0YXRlXyk7Ci0rI2VsaWYg IWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKLSAgICAgVUNvbnRl eHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KCZjcHUsIHVjb250ZXh0XywgZmxvYXRfc3RhdGVfKTsK LSAjZWxzZQotICAgICBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNvbnRleHQoJmNwdSwgdWNvbnRl eHRfKTsKLUBAIC02MDUsNyArNjExLDkgQEAgY2xhc3MgTWljcm9kdW1wV3JpdGVyIHsKLSAgIHZv aWQqIEFsbG9jKHVuc2lnbmVkIGJ5dGVzKSB7IHJldHVybiBkdW1wZXJfLT5hbGxvY2F0b3IoKS0+ QWxsb2MoYnl0ZXMpOyB9Ci0gCi0gICBjb25zdCB1Y29udGV4dF90KiBjb25zdCB1Y29udGV4dF87 Ci0tI2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCi0rI2lm IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgIGNvbnN0IGdvb2dsZV9icmVha3BhZDo6dnN0YXRl X3QqIGNvbnN0IHZlY3Rvcl9zdGF0ZV87Ci0rI2VsaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAm JiAhZGVmaW5lZChfX21pcHNfXykKLSAgIGNvbnN0IGdvb2dsZV9icmVha3BhZDo6ZnBzdGF0ZV90 KiBjb25zdCBmbG9hdF9zdGF0ZV87Ci0gI2VuZGlmCi0gICBMaW51eER1bXBlciogZHVtcGVyXzsK LS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtw YWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taWNyb2R1bXBfd3JpdGVyL21pY3JvZHVtcF93 cml0ZXJfdW5pdHRlc3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taWNyb2R1bXBf d3JpdGVyL21pY3JvZHVtcF93cml0ZXJfdW5pdHRlc3QuY2MKLUBAIC0yNzgsMTAgKzI3OCwxOSBA QCBURVNUKE1pY3JvZHVtcFdyaXRlclRlc3QsIEJhc2ljV2l0aE1hcHBpbmdzKSB7Ci0gICBDcmFz aEFuZEdldE1pY3JvZHVtcChtYXBwaW5ncywgTWljcm9kdW1wRXh0cmFJbmZvKCksICZidWYpOwot ICAgQVNTRVJUX1RSVUUoQ29udGFpbnNNaWNyb2R1bXAoYnVmKSk7Ci0gCi0rICBpbnQgcGFnZV9z aXplID0gZ2V0cGFnZXNpemUoKTsKLSAjaWZkZWYgX19MUDY0X18KLS0gIEFTU0VSVF9ORShzdGQ6 OnN0cmluZzo6bnBvcywKLS0gICAgICAgICAgICBidWYuZmluZCgiTSAwMDAwMDAwMDAwMDAxMDAw IDAwMDAwMDAwMDAwMDAwMkEgMDAwMDAwMDAwMDAwMTAwMCAiCi0tICAgICAgICAgICAgICAgICAg ICAgIjMzMjIxMTAwNTU0NDc3NjY4ODk5QUFCQkNDRERFRUZGMCBsaWJmb28uc28iKSk7Ci0rICAv LyBUaGlzIHRlc3QgaXMgb25seSBhdmFpbGFibGUgZm9yIHRoZSBmb2xsb3dpbmcgcGFnZSBzaXpl cwotKyAgQVNTRVJUX1RSVUUoKHBhZ2Vfc2l6ZSA9PSA0MDk2KSB8fCAocGFnZV9zaXplID09IDY1 NTM2KSk7Ci0rICBpZiAocGFnZV9zaXplID09IDQwOTYpIHsgCi0rICAgIEFTU0VSVF9ORShzdGQ6 OnN0cmluZzo6bnBvcywKLSsgICAgICAgICAgICAgIGJ1Zi5maW5kKCJNIDAwMDAwMDAwMDAwMDEw MDAgMDAwMDAwMDAwMDAwMDAyQSAwMDAwMDAwMDAwMDAxMDAwICIKLSsgICAgICAgICAgICAgICAg ICAgICAgICIzMzIyMTEwMDU1NDQ3NzY2ODg5OUFBQkJDQ0RERUVGRjAgbGliZm9vLnNvIikpOwot KyAgfSBlbHNlIHsKLSsgICAgQVNTRVJUX05FKHN0ZDo6c3RyaW5nOjpucG9zLAotKyAgICAgICAg ICAgICAgYnVmLmZpbmQoIk0gMDAwMDAwMDAwMDAxMDAwMCAwMDAwMDAwMDAwMDAwMDJBIDAwMDAw MDAwMDAwMTAwMDAgIgotKyAgICAgICAgICAgICAgICAgICAgICAgIjMzMjIxMTAwNTU0NDc3NjY4 ODk5QUFCQkNDRERFRUZGMCBsaWJmb28uc28iKSk7Ci0rICB9Ci0gI2Vsc2UKLSAgIEFTU0VSVF9O RShzdGQ6OnN0cmluZzo6bnBvcywKLSAgICAgICAgICAgICBidWYuZmluZCgiTSAwMDAwMTAwMCAw MDAwMDAyQSAwMDAwMTAwMCAiCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBf d3JpdGVyL2xpbnV4X2NvcmVfZHVtcGVyLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgv bWluaWR1bXBfd3JpdGVyL2xpbnV4X2NvcmVfZHVtcGVyLmNjCi1AQCAtMTE2LDYgKzExNiw5IEBA IGJvb2wgTGludXhDb3JlRHVtcGVyOjpHZXRUaHJlYWRJbmZvQnlJbmRleChzaXplX3QgaW5kZXgs IFRocmVhZEluZm8qIGluZm8pIHsKLSAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQotICAgc3RhY2tf cG9pbnRlciA9Ci0gICAgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5mby0+bWNvbnRl eHQuZ3JlZ3NbTURfQ09OVEVYVF9NSVBTX1JFR19TUF0pOwotKyNlbGlmIGRlZmluZWQoX19wb3dl cnBjNjRfXykKLSsgIHN0YWNrX3BvaW50ZXIgPQotKyAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWlu dDhfdCo+KGluZm8tPm1jb250ZXh0LmdwX3JlZ3NbTURfQ09OVEVYVF9QUEM2NF9SRUdfU1BdKTsK LSAjZWxzZQotICNlcnJvciAiVGhpcyBjb2RlIGhhc24ndCBiZWVuIHBvcnRlZCB0byB5b3VyIHBs YXRmb3JtIHlldC4iCi0gI2VuZGlmCi1AQCAtMjAwLDcgKzIwMywxMCBAQCBib29sIExpbnV4Q29y ZUR1bXBlcjo6RW51bWVyYXRlVGhyZWFkcygpIHsKLSAgICAgICAgIG1lbXNldCgmaW5mbywgMCwg c2l6ZW9mKFRocmVhZEluZm8pKTsKLSAgICAgICAgIGluZm8udGdpZCA9IHN0YXR1cy0+cHJfcGdy cDsKLSAgICAgICAgIGluZm8ucHBpZCA9IHN0YXR1cy0+cHJfcHBpZDsKLS0jaWYgZGVmaW5lZChf X21pcHNfXykKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgICAgICAgZm9yIChpbnQg aSA9IDA7IGkgPCAzMTsgaSsrKQotKyAgICAgICAgICAgIGluZm8ubWNvbnRleHQuZ3BfcmVnc1tp XSA9IHN0YXR1cy0+cHJfcmVnW2ldOwotKyNlbGlmIGRlZmluZWQoX19taXBzX18pCi0gI2lmIGRl ZmluZWQoX19BTkRST0lEX18pCi0gICAgICAgICBmb3IgKGludCBpID0gRUZfUjA7IGkgPD0gRUZf UjMxOyBpKyspCi0gICAgICAgICAgIGluZm8ubWNvbnRleHQuZ3JlZ3NbaSAtIEVGX1IwXSA9IHN0 YXR1cy0+cHJfcmVnW2ldOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dy aXRlci9saW51eF9kdW1wZXIuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVt cF93cml0ZXIvbGludXhfZHVtcGVyLmNjCi1AQCAtNzk4LDcgKzc5OCw5IEBAIGJvb2wgTGludXhE dW1wZXI6OkdldFN0YWNrSW5mbyhjb25zdCB2b2lkKiogc3RhY2ssIHNpemVfdCogc3RhY2tfbGVu LAotICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGludF9zdGFja19wb2ludGVyICYg fihwYWdlX3NpemUgLSAxKSk7Ci0gCi0gICAvLyBUaGUgbnVtYmVyIG9mIGJ5dGVzIG9mIHN0YWNr IHdoaWNoIHdlIHRyeSB0byBjYXB0dXJlLgotLSAgc3RhdGljIGNvbnN0IHB0cmRpZmZfdCBrU3Rh Y2tUb0NhcHR1cmUgPSAzMiAqIDEwMjQ7Ci0rICAvLyBUaGlzIG5vdyBkZXBlbmRzIG9uIHBhZ2Vf c2l6ZSB0byBhdm9pZCBtaXNzaW5nIGRhdGEKLSsgIC8vIG9uIHN5c3RlbXMgd2l0aCBsYXJnZXIg cGFnZSBzaXplcy4KLSsgIHN0YXRpYyBjb25zdCBwdHJkaWZmX3Qga1N0YWNrVG9DYXB0dXJlID0g OCAqIHBhZ2Vfc2l6ZTsKLSAKLSAgIGNvbnN0IE1hcHBpbmdJbmZvKiBtYXBwaW5nID0gRmluZE1h cHBpbmcoc3RhY2tfcG9pbnRlcik7Ci0gICBpZiAoIW1hcHBpbmcpCi0tLS0gcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9j bGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2R1bXBlci5oCi0rKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3Ny Yy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2R1bXBlci5oCi1AQCAtNjAsNyAr NjAsOCBAQCBuYW1lc3BhY2UgZ29vZ2xlX2JyZWFrcGFkIHsKLSAgKGRlZmluZWQoX19taXBzX18p ICYmIF9NSVBTX1NJTSA9PSBfQUJJTzMyKQotIHR5cGVkZWYgRWxmMzJfYXV4dl90IGVsZl9hdXhf ZW50cnk7Ci0gI2VsaWYgZGVmaW5lZChfX3g4Nl82NCkgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykg fHwgXAotLSAgICAgKGRlZmluZWQoX19taXBzX18pICYmIF9NSVBTX1NJTSAhPSBfQUJJTzMyKQot KyAgICAgKGRlZmluZWQoX19taXBzX18pICYmIF9NSVBTX1NJTSAhPSBfQUJJTzMyKSB8fCBcCi0r ICAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gdHlwZWRlZiBFbGY2NF9hdXh2X3QgZWxmX2F1 eF9lbnRyeTsKLSAjZW5kaWYKLSAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVt cF93cml0ZXIvbGludXhfZHVtcGVyX3VuaXR0ZXN0X2hlbHBlci5jYwotKysrIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMv Y2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9kdW1wZXJfdW5pdHRlc3RfaGVscGVy LmNjCi1AQCAtNTEsNiArNTEsOCBAQAotICNkZWZpbmUgVElEX1BUUl9SRUdJU1RFUiAicmN4Igot ICNlbGlmIGRlZmluZWQoX19taXBzX18pCi0gI2RlZmluZSBUSURfUFRSX1JFR0lTVEVSICIkMSIK LSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rI2RlZmluZSBUSURfUFRSX1JFR0lTVEVS ICJyOCIKLSAjZWxzZQotICNlcnJvciBUaGlzIHRlc3QgaGFzIG5vdCBiZWVuIHBvcnRlZCB0byB0 aGlzIHBsYXRmb3JtLgotICNlbmRpZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlk dW1wX3dyaXRlci9saW51eF9wdHJhY2VfZHVtcGVyLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQv bGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X3B0cmFjZV9kdW1wZXIuY2MKLUBAIC0xNTQsMTkg KzE1NCwyNyBAQCBib29sIExpbnV4UHRyYWNlRHVtcGVyOjpDb3B5RnJvbVByb2Nlc3Modm9pZCog ZGVzdCwgcGlkX3QgY2hpbGQsCi0gICByZXR1cm4gdHJ1ZTsKLSB9Ci0gCi0tYm9vbCBMaW51eFB0 cmFjZUR1bXBlcjo6UmVhZFJlZ2lzdGVyU2V0KFRocmVhZEluZm8qIGluZm8sIHBpZF90IHRpZCkK LS17Ci0rYm9vbCBMaW51eFB0cmFjZUR1bXBlcjo6UmVhZFJlZ2lzdGVyU2V0KFRocmVhZEluZm8q IGluZm8sIHBpZF90IHRpZCkgewotICNpZmRlZiBQVFJBQ0VfR0VUUkVHU0VUCi0gICBzdHJ1Y3Qg aW92ZWMgaW87Ci0gICBpbmZvLT5HZXRHZW5lcmFsUHVycG9zZVJlZ2lzdGVycygmaW8uaW92X2Jh c2UsICZpby5pb3ZfbGVuKTsKLS0gIGlmIChzeXNfcHRyYWNlKFBUUkFDRV9HRVRSRUdTRVQsIHRp ZCwgKHZvaWQqKU5UX1BSU1RBVFVTLCAodm9pZCopJmlvKSA9PSAtMSkgewotKyAgaWYgKHB0cmFj ZShQVFJBQ0VfR0VUUkVHU0VULCB0aWQsICh2b2lkKilOVF9QUlNUQVRVUywgKHZvaWQqKSZpbykg PT0gLTEpIHsKLSAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotIAotICAgaW5mby0+R2V0RmxvYXRp bmdQb2ludFJlZ2lzdGVycygmaW8uaW92X2Jhc2UsICZpby5pb3ZfbGVuKTsKLS0gIGlmIChzeXNf cHRyYWNlKFBUUkFDRV9HRVRSRUdTRVQsIHRpZCwgKHZvaWQqKU5UX0ZQUkVHU0VULCAodm9pZCop JmlvKSA9PSAtMSkgewotKyAgaWYgKHB0cmFjZShQVFJBQ0VfR0VUUkVHU0VULCB0aWQsICh2b2lk KilOVF9GUFJFR1NFVCwgKHZvaWQqKSZpbykgPT0gLTEpIHsKLSAgICAgcmV0dXJuIGZhbHNlOwot ICAgfQotKwotKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAvLyBHcmFiIHRoZSB2ZWN0 b3IgcmVnaXN0ZXJzIG9uIFBQQzY0IHRvbwotKyAgaW5mby0+R2V0VmVjdG9yUmVnaXN0ZXJzKCZp by5pb3ZfYmFzZSwgJmlvLmlvdl9sZW4pOwotKyAgaWYgKHB0cmFjZShQVFJBQ0VfR0VUUkVHU0VU LCB0aWQsICh2b2lkKilOVF9QUENfVk1YLCAodm9pZCopJmlvKSA9PSAtMSkgewotKyAgICByZXR1 cm4gZmFsc2U7Ci0rICB9Ci0rI2VuZGlmIC8vIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsKLSAg IHJldHVybiB0cnVlOwotICNlbHNlCi0gICByZXR1cm4gZmFsc2U7Ci1AQCAtMzAzLDYgKzMxMSw5 IEBAIGJvb2wgTGludXhQdHJhY2VEdW1wZXI6OkdldFRocmVhZEluZm9CeUluZGV4KHNpemVfdCBp bmRleCwgVGhyZWFkSW5mbyogaW5mbykgewotICNlbGlmIGRlZmluZWQoX19taXBzX18pCi0gICBz dGFja19wb2ludGVyID0KLSAgICAgICByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbmZvLT5t Y29udGV4dC5ncmVnc1tNRF9DT05URVhUX01JUFNfUkVHX1NQXSk7Ci0rI2VsaWYgZGVmaW5lZChf X3Bvd2VycGM2NF9fKQotKyAgc3RhY2tfcG9pbnRlciA9Ci0rICAgICAgcmVpbnRlcnByZXRfY2Fz dDx1aW50OF90Kj4oaW5mby0+bWNvbnRleHQuZ3BfcmVnc1tNRF9DT05URVhUX1BQQzY0X1JFR19T UF0pOwotICNlbHNlCi0gI2Vycm9yICJUaGlzIGNvZGUgaGFzbid0IGJlZW4gcG9ydGVkIHRvIHlv dXIgcGxhdGZvcm0geWV0LiIKLSAjZW5kaWYKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9t aW5pZHVtcF93cml0ZXIvbGludXhfcHRyYWNlX2R1bXBlcl91bml0dGVzdC5jYwotKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3Bh ZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9wdHJhY2VfZHVtcGVyX3Vu aXR0ZXN0LmNjCi1AQCAtNDU3LDYgKzQ1Nyw5IEBAIFRFU1QoTGludXhQdHJhY2VEdW1wZXJUZXN0 LCBWZXJpZnlTdGFja1JlYWRXaXRoTXVsdGlwbGVUaHJlYWRzKSB7Ci0gI2VsaWYgZGVmaW5lZChf X21pcHNfXykKLSAgICAgcGlkX3QqIHByb2Nlc3NfdGlkX2xvY2F0aW9uID0KLSAgICAgICAgIHJl aW50ZXJwcmV0X2Nhc3Q8cGlkX3QqPihvbmVfdGhyZWFkLm1jb250ZXh0LmdyZWdzWzFdKTsKLSsj ZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAgIHBpZF90KiBwcm9jZXNzX3RpZF9sb2Nh dGlvbiA9Ci0rICAgICAgICByZWludGVycHJldF9jYXN0PHBpZF90Kj4ob25lX3RocmVhZC5tY29u dGV4dC5ncF9yZWdzWzhdKTsKLSAjZWxzZQotICNlcnJvciBUaGlzIHRlc3QgaGFzIG5vdCBiZWVu IHBvcnRlZCB0byB0aGlzIHBsYXRmb3JtLgotICNlbmRpZgotQEAgLTU1Myw2ICs1NTYsOCBAQCBU RVNUX0YoTGludXhQdHJhY2VEdW1wZXJUZXN0LCBTYW5pdGl6ZVN0YWNrQ29weSkgewotICAgdWlu dHB0cl90IGhlYXBfYWRkciA9IHRocmVhZF9pbmZvLnJlZ3MucmN4OwotICNlbGlmIGRlZmluZWQo X19taXBzX18pCi0gICB1aW50cHRyX3QgaGVhcF9hZGRyID0gdGhyZWFkX2luZm8ubWNvbnRleHQu Z3JlZ3NbMV07Ci0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgdWludHB0cl90IGhl YXBfYWRkciA9IHRocmVhZF9pbmZvLm1jb250ZXh0LmdwX3JlZ3NbOF07Ci0gI2Vsc2UKLSAjZXJy b3IgVGhpcyB0ZXN0IGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8gdGhpcyBwbGF0Zm9ybS4KLSAjZW5k aWYKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJl YWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1bXBf d3JpdGVyLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL21p bmlkdW1wX3dyaXRlci5jYwotQEAgLTEzNiw3ICsxMzYsOSBAQCBjbGFzcyBNaW5pZHVtcFdyaXRl ciB7Ci0gICAgICAgOiBmZF8obWluaWR1bXBfZmQpLAotICAgICAgICAgcGF0aF8obWluaWR1bXBf cGF0aCksCi0gICAgICAgICB1Y29udGV4dF8oY29udGV4dCA/ICZjb250ZXh0LT5jb250ZXh0IDog TlVMTCksCi0tI2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18p Ci0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgICAgICAgIHZlY3Rvcl9zdGF0ZV8oY29u dGV4dCA/ICZjb250ZXh0LT52ZWN0b3Jfc3RhdGUgOiBOVUxMKSwKLSsjZWxpZiAhZGVmaW5lZChf X0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQotICAgICAgICAgZmxvYXRfc3RhdGVf KGNvbnRleHQgPyAmY29udGV4dC0+ZmxvYXRfc3RhdGUgOiBOVUxMKSwKLSAjZW5kaWYKLSAgICAg ICAgIGR1bXBlcl8oZHVtcGVyKSwKLUBAIC00NjgsNyArNDcwLDkgQEAgY2xhc3MgTWluaWR1bXBX cml0ZXIgewotICAgICAgICAgaWYgKCFjcHUuQWxsb2NhdGUoKSkKLSAgICAgICAgICAgcmV0dXJu IGZhbHNlOwotICAgICAgICAgbXlfbWVtc2V0KGNwdS5nZXQoKSwgMCwgc2l6ZW9mKFJhd0NvbnRl eHRDUFUpKTsKLS0jaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNf XykKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgICAgICAgVUNvbnRleHRSZWFkZXI6 OkZpbGxDUFVDb250ZXh0KGNwdS5nZXQoKSwgdWNvbnRleHRfLCB2ZWN0b3Jfc3RhdGVfKTsKLSsj ZWxpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQotICAgICAg ICAgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KGNwdS5nZXQoKSwgdWNvbnRleHRfLCBm bG9hdF9zdGF0ZV8pOwotICNlbHNlCi0gICAgICAgICBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNv bnRleHQoY3B1LmdldCgpLCB1Y29udGV4dF8pOwotQEAgLTg5MSw3ICs4OTUsNyBAQCBjbGFzcyBN aW5pZHVtcFdyaXRlciB7Ci0gICAgIGRpcmVudC0+bG9jYXRpb24ucnZhID0gMDsKLSAgIH0KLSAK LS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVk KF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18p IHx8IGRlZmluZWQoX19taXBzX18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgIGJvb2wg V3JpdGVDUFVJbmZvcm1hdGlvbihNRFJhd1N5c3RlbUluZm8qIHN5c19pbmZvKSB7Ci0gICAgIGNo YXIgdmVuZG9yX2lkW3NpemVvZihzeXNfaW5mby0+Y3B1Lng4Nl9jcHVfaW5mby52ZW5kb3JfaWQp ICsgMV0gPSB7MH07Ci0gICAgIHN0YXRpYyBjb25zdCBjaGFyIHZlbmRvcl9pZF9uYW1lW10gPSAi dmVuZG9yX2lkIjsKLUBAIC05MTEsNyArOTE1LDkgQEAgY2xhc3MgTWluaWR1bXBXcml0ZXIgewot IAotICAgICAvLyBwcm9jZXNzb3JfYXJjaGl0ZWN0dXJlIHNob3VsZCBhbHdheXMgYmUgc2V0LCBk byB0aGlzIGZpcnN0Ci0gICAgIHN5c19pbmZvLT5wcm9jZXNzb3JfYXJjaGl0ZWN0dXJlID0KLS0j aWYgZGVmaW5lZChfX21pcHNfXykKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgICAg ICAgTURfQ1BVX0FSQ0hJVEVDVFVSRV9QUEM2NDsKLSsjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQot ICMgaWYgX01JUFNfU0lNID09IF9BQklPMzIKLSAgICAgICAgIE1EX0NQVV9BUkNISVRFQ1RVUkVf TUlQUzsKLSAjIGVsaWYgX01JUFNfU0lNID09IF9BQkk2NAotQEAgLTEzMjcsNyArMTMzMyw5IEBA IGNsYXNzIE1pbmlkdW1wV3JpdGVyIHsKLSAgIGNvbnN0IGNoYXIqIHBhdGhfOyAgLy8gUGF0aCB0 byB0aGUgZmlsZSB3aGVyZSB0aGUgbWluaWR1bSBzaG91bGQgYmUgd3JpdHRlbi4KLSAKLSAgIGNv bnN0IHVjb250ZXh0X3QqIGNvbnN0IHVjb250ZXh0XzsgIC8vIGFsc28gZnJvbSB0aGUgc2lnbmFs IGhhbmRsZXIKLS0jaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNf XykKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgY29uc3QgZ29vZ2xlX2JyZWFrcGFk Ojp2c3RhdGVfdCogY29uc3QgdmVjdG9yX3N0YXRlXzsKLSsjZWxpZiAhZGVmaW5lZChfX0FSTV9F QUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQotICAgY29uc3QgZ29vZ2xlX2JyZWFrcGFkOjpm cHN0YXRlX3QqIGNvbnN0IGZsb2F0X3N0YXRlXzsgIC8vIGRpdHRvCi0gI2VuZGlmCi0gICBMaW51 eER1bXBlciogZHVtcGVyXzsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93 cml0ZXIvbWluaWR1bXBfd3JpdGVyLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5p ZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVyLmgKLUBAIC00Nyw2ICs0Nyw4IEBAIGNsYXNzIEV4 Y2VwdGlvbkhhbmRsZXI7Ci0gCi0gI2lmIGRlZmluZWQoX19hYXJjaDY0X18pCi0gdHlwZWRlZiBz dHJ1Y3QgZnBzaW1kX2NvbnRleHQgZnBzdGF0ZV90OwotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBj NjRfXykKLSt0eXBlZGVmIHZycmVnc2V0X3QgdnN0YXRlX3Q7Ci0gI2VsaWYgIWRlZmluZWQoX19B Uk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKLSB0eXBlZGVmIHN0cnVjdCBfZnBzdGF0 ZSBmcHN0YXRlX3Q7Ci0gI2VuZGlmCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1 bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlcl91bml0dGVzdC5jYwotKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xp ZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93cml0ZXJfdW5pdHRlc3QuY2MKLUBA IC03MTAsNiArNzEwLDkgQEAgVEVTVChNaW5pZHVtcFdyaXRlclRlc3QsIEludmFsaWRTdGFja1Bv aW50ZXIpIHsKLSAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQotICAgY29udGV4dC5jb250ZXh0LnVj X21jb250ZXh0LmdyZWdzW01EX0NPTlRFWFRfTUlQU19SRUdfU1BdID0KLSAgICAgICBpbnZhbGlk X3N0YWNrX3BvaW50ZXI7Ci0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgY29udGV4 dC5jb250ZXh0LnVjX21jb250ZXh0LmdwX3JlZ3NbTURfQ09OVEVYVF9QUEM2NF9SRUdfU1BdID0K LSsgICAgICBpbnZhbGlkX3N0YWNrX3BvaW50ZXI7Ci0gI2Vsc2UKLSAjIGVycm9yICJUaGlzIGNv ZGUgaGFzIG5vdCBiZWVuIHBvcnRlZCB0byB5b3VyIHBsYXRmb3JtIHlldC4iCi0gI2VuZGlmCi0t LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFk L2JyZWFrcGFkL3NyYy9jb21tb24vbGludXgvbWVtb3J5X21hcHBlZF9maWxlLmNjCi0rKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFr cGFkL3NyYy9jb21tb24vbGludXgvbWVtb3J5X21hcHBlZF9maWxlLmNjCi1AQCAtNjUsOCArNjUs NyBAQCBib29sIE1lbW9yeU1hcHBlZEZpbGU6Ok1hcChjb25zdCBjaGFyKiBwYXRoLCBzaXplX3Qg b2Zmc2V0KSB7Ci0gICB9Ci0gCi0gI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChf X2FhcmNoNjRfXykgfHwgXAotLSAgIChkZWZpbmVkKF9fbWlwc19fKSAmJiBfTUlQU19TSU0gPT0g X0FCSTY0KQotLQotKyAgIChkZWZpbmVkKF9fbWlwc19fKSAmJiBfTUlQU19TSU0gPT0gX0FCSTY0 KSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICBzdHJ1Y3Qga2VybmVsX3N0YXQgc3Q7Ci0g ICBpZiAoc3lzX2ZzdGF0KGZkLCAmc3QpID09IC0xIHx8IHN0LnN0X3NpemUgPCAwKSB7Ci0gI2Vs c2UKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJl YWtwYWQvYnJlYWtwYWQvc3JjL2NvbW1vbi9saW51eC9tZW1vcnlfbWFwcGVkX2ZpbGVfdW5pdHRl c3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv YnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NvbW1vbi9saW51eC9tZW1vcnlfbWFwcGVkX2ZpbGVfdW5p dHRlc3QuY2MKLUBAIC0xNzYsOSArMTc2LDEwIEBAIFRFU1RfRihNZW1vcnlNYXBwZWRGaWxlVGVz dCwgUmVtYXBBZnRlck1hcCkgewotIFRFU1RfRihNZW1vcnlNYXBwZWRGaWxlVGVzdCwgTWFwV2l0 aE9mZnNldCkgewotICAgLy8gUHV0IG1vcmUgZGF0YSBpbiB0aGUgdGVzdCBmaWxlIHRoaXMgdGlt ZS4gT2Zmc2V0cyBjYW4gb25seSBiZQotICAgLy8gZG9uZSBvbiBwYWdlIGJvdW5kYXJpZXMsIHNv IHdlIG5lZWQgYSB0d28gcGFnZSBmaWxlIHRvIHRlc3QgdGhpcy4KLS0gIGNvbnN0IGludCBwYWdl X3NpemUgPSA0MDk2OwotLSAgY2hhciBkYXRhMVsyICogcGFnZV9zaXplXTsKLS0gIHNpemVfdCBk YXRhMV9zaXplID0gc2l6ZW9mKGRhdGExKTsKLSsgIGNvbnN0IGludCBwYWdlX3NpemUgPSBnZXRw YWdlc2l6ZSgpOwotKyAgY2hhciAqZGF0YTEgPSBzdGF0aWNfY2FzdDxjaGFyKj4obWFsbG9jKDIg KiBwYWdlX3NpemUpKTsKLSsgIEVYUEVDVF9UUlVFKGRhdGExICE9IE5VTEwpOwotKyAgc2l6ZV90 IGRhdGExX3NpemUgPSAoMiAqIHBhZ2Vfc2l6ZSk7Ci0gICBmb3IgKHNpemVfdCBpID0gMDsgaSA8 IGRhdGExX3NpemU7ICsraSkgewotICAgICBkYXRhMVtpXSA9IGkgJiAweDdmOwotICAgfQotLS0t IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9i cmVha3BhZC9zcmMvY29tbW9uL21lbW9yeV9hbGxvY2F0b3JfdW5pdHRlc3QuY2MKLSsrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtw YWQvc3JjL2NvbW1vbi9tZW1vcnlfYWxsb2NhdG9yX3VuaXR0ZXN0LmNjCi1AQCAtNTcsOCArNTcs OSBAQCBURVNUKFBhZ2VBbGxvY2F0b3JUZXN0LCBMYXJnZU9iamVjdCkgewotIAotICAgRVhQRUNU X0VRKDBVLCBhbGxvY2F0b3IucGFnZXNfYWxsb2NhdGVkKCkpOwotICAgdWludDhfdCAqcCA9IHJl aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGFsbG9jYXRvci5BbGxvYygxMDAwMCkpOwotKyAgdWlu dDY0X3QgZXhwZWN0ZWRfcGFnZXMgPSAxICsgKCgxMDAwMCAtIDEpIC8gZ2V0cGFnZXNpemUoKSk7 Ci0gICBBU1NFUlRfRkFMU0UocCA9PSBOVUxMKTsKLS0gIEVYUEVDVF9FUSgzVSwgYWxsb2NhdG9y LnBhZ2VzX2FsbG9jYXRlZCgpKTsKLSsgIEVYUEVDVF9FUShleHBlY3RlZF9wYWdlcywgYWxsb2Nh dG9yLnBhZ2VzX2FsbG9jYXRlZCgpKTsKLSAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCAxMDsg KytpKSB7Ci0gICAgIHVpbnQ4X3QgKnAgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihhbGxv Y2F0b3IuQWxsb2MoaSkpOwotICAgICBBU1NFUlRfRkFMU0UocCA9PSBOVUxMKTsKLS0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtw YWQvc3JjL3Byb2Nlc3Nvci9leHBsb2l0YWJpbGl0eV9saW51eC5jYwotKysrIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMv cHJvY2Vzc29yL2V4cGxvaXRhYmlsaXR5X2xpbnV4LmNjCi1AQCAtMjAyLDEyICsyMDIsMTQgQEAg Ym9vbCBFeHBsb2l0YWJpbGl0eUxpbnV4OjpFbmRlZE9uSWxsZWdhbFdyaXRlKHVpbnQ2NF90IGlu c3RydWN0aW9uX3B0cikgewotICAgLy8gQ2hlY2sgYXJjaGl0ZWN0dXJlIGFuZCBzZXQgYXJjaGl0 ZWN0dXJlIHZhcmlhYmxlIHRvIGNvcnJlc3BvbmRpbmcgZmxhZwotICAgLy8gaW4gb2JqZHVtcC4K LSAgIHN3aXRjaCAoY29udGV4dC0+R2V0Q29udGV4dENQVSgpKSB7Ci0rI2lmIGRlZmluZWQoX19p Mzg2KSB8fCBkZWZpbmVkKF9feDg2XzY0KQotICAgICBjYXNlIE1EX0NPTlRFWFRfWDg2OgotICAg ICAgIGFyY2hpdGVjdHVyZSA9ICJpMzg2IjsKLSAgICAgICBicmVhazsKLSAgICAgY2FzZSBNRF9D T05URVhUX0FNRDY0OgotICAgICAgIGFyY2hpdGVjdHVyZSA9ICJpMzg2Ong4Ni02NCI7Ci0gICAg ICAgYnJlYWs7Ci0rI2VuZGlmCi0gICAgIGRlZmF1bHQ6Ci0gICAgICAgLy8gVW5zdXBwb3J0ZWQg YXJjaGl0ZWN0dXJlLiBOb3RlIHRoYXQgQVJNIGFyY2hpdGVjdHVyZXMgYXJlIG5vdAotICAgICAg IC8vIHN1cHBvcnRlZCBiZWNhdXNlIG9iamR1bXAgZG9lcyBub3Qgc3VwcG9ydCBBUk0uCi0tLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2Jy ZWFrcGFkL3NyYy9wcm9jZXNzb3IvZXhwbG9pdGFiaWxpdHlfdW5pdHRlc3QuY2MKLSsrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtw YWQvc3JjL3Byb2Nlc3Nvci9leHBsb2l0YWJpbGl0eV91bml0dGVzdC5jYwotQEAgLTEwNCw2ICsx MDQsOCBAQCBFeHBsb2l0YWJpbGl0eUZvcihjb25zdCBzdHJpbmcmIGZpbGVuYW1lKSB7Ci0gfQot IAotIFRFU1QoRXhwbG9pdGFiaWxpdHlUZXN0LCBUZXN0V2luZG93c0VuZ2luZSkgewotKy8vIFRo ZSBmb2xsb3dpbmcgdGVzdHMgYXJlIG9ubHkgZXhlY3V0YWJsZSBvbiBhbiB4ODYtY2xhc3MgbGlu dXggbWFjaGluZS4KLSsjaWYgIWRlZmluZWQoX1dJTjMyKSAmJiAoZGVmaW5lZChfX2kzODYpIHx8 IGRlZmluZWQoX194ODZfNjQpKQotICAgQVNTRVJUX0VRKGdvb2dsZV9icmVha3BhZDo6RVhQTE9J VEFCSUxJVFlfSElHSCwKLSAgICAgICAgICAgICBFeHBsb2l0YWJpbGl0eUZvcigiYXNjaWlfcmVh ZF9hdi5kbXAiKSk7Ci0gICBBU1NFUlRfRVEoZ29vZ2xlX2JyZWFrcGFkOjpFWFBMT0lUQUJJTElU WV9ISUdILAotQEAgLTEzNiw5ICsxMzgsMTIgQEAgVEVTVChFeHBsb2l0YWJpbGl0eVRlc3QsIFRl c3RXaW5kb3dzRW5naW5lKSB7Ci0gICAgICAgICAgICAgRXhwbG9pdGFiaWxpdHlGb3IoInJlYWRf YXZfY2xvYmJlcl93cml0ZS5kbXAiKSk7Ci0gICBBU1NFUlRfRVEoZ29vZ2xlX2JyZWFrcGFkOjpF WFBMT0lUQUJJTElUWV9MT1csCi0gICAgICAgICAgICAgRXhwbG9pdGFiaWxpdHlGb3IoInJlYWRf YXZfY29uZGl0aW9uYWwuZG1wIikpOwotKyNlbmRpZgotIH0KLSAKLSBURVNUKEV4cGxvaXRhYmls aXR5VGVzdCwgVGVzdExpbnV4RW5naW5lKSB7Ci0rLy8gVGhlIGZvbGxvd2luZyB0ZXN0cyBhcmUg b25seSBleGVjdXRhYmxlIG9uIGFuIHg4Ni1jbGFzcyBsaW51eCBtYWNoaW5lLgotKyNpZiBkZWZp bmVkKF9faTM4NikgfHwgZGVmaW5lZChfX3g4Nl82NCkKLSAgIEFTU0VSVF9FUShnb29nbGVfYnJl YWtwYWQ6OkVYUExPSVRBQklMSVRZX0lOVEVSRVNUSU5HLAotICAgICAgICAgICAgIEV4cGxvaXRh YmlsaXR5Rm9yKCJsaW51eF9udWxsX3JlYWRfYXYuZG1wIikpOwotICAgQVNTRVJUX0VRKGdvb2ds ZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJVFlfSElHSCwKLUBAIC0xNzEsNyArMTc2LDggQEAgVEVT VChFeHBsb2l0YWJpbGl0eVRlc3QsIFRlc3RMaW51eEVuZ2luZSkgewotICAgICAgICAgICAgIEV4 cGxvaXRhYmlsaXR5Rm9yKCJsaW51eF9leGVjdXRhYmxlX2hlYXAuZG1wIikpOwotICAgQVNTRVJU X0VRKGdvb2dsZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJVFlfSElHSCwKLSAgICAgICAgICAgICBF eHBsb2l0YWJpbGl0eUZvcigibGludXhfam1wX3RvX21vZHVsZV9ub3RfZXhlX3JlZ2lvbi5kbXAi KSk7Ci0tI2lmbmRlZiBfV0lOMzIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQoX1dJTjMyKSAmJiAo ZGVmaW5lZChfX2kzODYpIHx8IGRlZmluZWQoX194ODZfNjQpKQotICAgQVNTRVJUX0VRKGdvb2ds ZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJVFlfSElHSCwKLSAgICAgICAgICAgICBFeHBsb2l0YWJp bGl0eUZvcigibGludXhfd3JpdGVfdG9fbm9ud3JpdGFibGVfbW9kdWxlLmRtcCIpKTsKLSAgIEFT U0VSVF9FUShnb29nbGVfYnJlYWtwYWQ6OkVYUExPSVRBQklMSVRZX0hJR0gsCi1AQCAtMTgyLDEw ICsxODgsMTAgQEAgVEVTVChFeHBsb2l0YWJpbGl0eVRlc3QsIFRlc3RMaW51eEVuZ2luZSkgewot ICAgICAgICAgICAgIEV4cGxvaXRhYmlsaXR5Rm9yKCJsaW51eF93cml0ZV90b19vdXRzaWRlX21v ZHVsZV92aWFfbWF0aC5kbXAiKSk7Ci0gICBBU1NFUlRfRVEoZ29vZ2xlX2JyZWFrcGFkOjpFWFBM T0lUQUJJTElUWV9JTlRFUkVTVElORywKLSAgICAgICAgICAgICBFeHBsb2l0YWJpbGl0eUZvcigi bGludXhfd3JpdGVfdG9fdW5kZXJfNGsuZG1wIikpOwotLSNlbmRpZiAgLy8gX1dJTjMyCi0rI2Vu ZGlmICAvLyAhZGVmaW5lZChfV0lOMzIpICYmICghZGVmaW5lZChfX2kzODYpICYmICFkZWZpbmVk KF9feDg2XzY0KSkKLSB9Ci0gCi0tI2lmbmRlZiBfV0lOMzIKLSsjaWYgIWRlZmluZWQoX1dJTjMy KSAmJiAoZGVmaW5lZChfX2kzODYpIHx8IGRlZmluZWQoX194ODZfNjQpKQotIFRFU1QoRXhwbG9p dGFiaWxpdHlMaW51eFV0aWxzVGVzdCwgRGlzYXNzZW1ibGVCeXRlc1Rlc3QpIHsKLSAgIEFTU0VS VF9GQUxTRShFeHBsb2l0YWJpbGl0eUxpbnV4VGVzdDo6RGlzYXNzZW1ibGVCeXRlcygiIiwgTlVM TCwgNSwgTlVMTCkpOwotICAgdWludDhfdCBieXRlc1s2XSA9IHsweGM3LCAweDAsIDB4NSwgMHgw LCAweDAsIDB4MH07Ci1AQCAtMzAxLDYgKzMwNyw3IEBAIFRFU1QoRXhwbG9pdGFiaWxpdHlMaW51 eFV0aWxzVGVzdCwgQ2FsY3VsYXRlQWRkcmVzc1Rlc3QpIHsKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ3cml0ZV9h ZGRyZXNzKSk7Ci0gfQotLSNlbmRpZiAgLy8gX1dJTjMyCi0rI2VuZGlmICAvLyAhZGVmaW5lZChf V0lOMzIpICYmIChkZWZpbmVkKF9faTM4NikgfHwgZGVmaW5lZChfX3g4Nl82NCkpCi0rCi0gCi0g fSAgLy8gbmFtZXNwYWNlCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy90b29scy9saW51eC9tZDJjb3JlL21pbmlk dW1wLTItY29yZS5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvdG9vbHMvbGludXgvbWQyY29yZS9taW5pZHVt cC0yLWNvcmUuY2MKLUBAIC03Niw2ICs3Niw4IEBACi0gICAjZGVmaW5lIEVMRl9BUkNIICBFTV9N SVBTCi0gI2VsaWYgZGVmaW5lZChfX2FhcmNoNjRfXykKLSAgICNkZWZpbmUgRUxGX0FSQ0ggIEVN X0FBUkNINjQKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAjZGVmaW5lIEVMRl9B UkNIICBFTV9QUEM2NAotICNlbmRpZgotIAotICNpZiBkZWZpbmVkKF9fYXJtX18pCi1AQCAtODYs NiArODgsOCBAQCB0eXBlZGVmIHVzZXJfcmVncyB1c2VyX3JlZ3Nfc3RydWN0OwotICNlbGlmIGRl ZmluZWQgKF9fbWlwc19fKQotIC8vIFRoaXMgZmlsZS1sb2NhbCB0eXBlZGVmIHNpbXBsaWZpZXMg dGhlIHNvdXJjZSBjb2RlLgotIHR5cGVkZWYgZ3JlZ3NldF90IHVzZXJfcmVnc19zdHJ1Y3Q7Ci0r I2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotK3R5cGVkZWYgc3RydWN0IHB0X3JlZ3MgdXNl cl9yZWdzX3N0cnVjdDsKLSAjZW5kaWYKLSAKLSB1c2luZyBnb29nbGVfYnJlYWtwYWQ6Ok1EVHlw ZUhlbHBlcjsKLUBAIC0zMjAsNiArMzI0LDkgQEAgc3RydWN0IENyYXNoZWRQcm9jZXNzIHsKLSAj ZW5kaWYKLSAjaWYgZGVmaW5lZChfX2FhcmNoNjRfXykKLSAgICAgdXNlcl9mcHNpbWRfc3RydWN0 IGZwcmVnczsKLSsjZW5kaWYKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgICBtY29u dGV4dF90IG1jb250ZXh0OwotICNlbmRpZgotICAgICB1aW50cHRyX3Qgc3RhY2tfYWRkcjsKLSAg ICAgY29uc3QgdWludDhfdCogc3RhY2s7Ci1AQCAtNTM0LDYgKzU0MSwzOCBAQCBQYXJzZVRocmVh ZFJlZ2lzdGVycyhDcmFzaGVkUHJvY2Vzczo6VGhyZWFkKiB0aHJlYWQsCi0gICB0aHJlYWQtPm1j b250ZXh0LmZwY19laXIgPSByYXdyZWdzLT5mbG9hdF9zYXZlLmZpcjsKLSAjZW5kaWYKLSB9Ci0r I2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotK3N0YXRpYyB2b2lkCi0rUGFyc2VUaHJlYWRS ZWdpc3RlcnMoQ3Jhc2hlZFByb2Nlc3M6OlRocmVhZCogdGhyZWFkLAotKyAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IE1pbmlkdW1wTWVtb3J5UmFuZ2UmIHJhbmdlKSB7Ci0rICBjb25zdCBNRFJh d0NvbnRleHRQUEM2NCogcmF3cmVncyA9IHJhbmdlLkdldERhdGE8TURSYXdDb250ZXh0UFBDNjQ+ KDApOwotKwotKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9DT05URVhUX1BQQzY0X0dQUl9DT1VO VDsgaSsrKQotKyAgICB0aHJlYWQtPm1jb250ZXh0LmdwX3JlZ3NbaV0gPSByYXdyZWdzLT5ncHJb aV07Ci0rCi0rICB0aHJlYWQtPm1jb250ZXh0LmdwX3JlZ3NbUFRfTE5LXSA9IHJhd3JlZ3MtPmxy OwotKyAgdGhyZWFkLT5tY29udGV4dC5ncF9yZWdzW1BUX05JUF0gPSByYXdyZWdzLT5zcnIwOwot KyAgdGhyZWFkLT5tY29udGV4dC5ncF9yZWdzW1BUX01TUl0gPSByYXdyZWdzLT5zcnIxOwotKyAg dGhyZWFkLT5tY29udGV4dC5ncF9yZWdzW1BUX0NDUl0gPSByYXdyZWdzLT5jcjsKLSsgIHRocmVh ZC0+bWNvbnRleHQuZ3BfcmVnc1tQVF9YRVJdID0gcmF3cmVncy0+eGVyOwotKyAgdGhyZWFkLT5t Y29udGV4dC5ncF9yZWdzW1BUX0NUUl0gPSByYXdyZWdzLT5jdHI7Ci0rICB0aHJlYWQtPm1jb250 ZXh0LnZfcmVncy0+dnJzYXZlID0gcmF3cmVncy0+dnJzYXZlOwotKwotKyAgZm9yIChpbnQgaSA9 IDA7IGkgPCBNRF9GTE9BVElOR1NBVkVBUkVBX1BQQ19GUFJfQ09VTlQ7IGkrKykKLSsgICAgICB0 aHJlYWQtPm1jb250ZXh0LmZwX3JlZ3NbaV0gPSByYXdyZWdzLT5mbG9hdF9zYXZlLmZwcmVnc1tp XTsKLSsKLSsgIHRocmVhZC0+bWNvbnRleHQuZnBfcmVnc1tORlBSRUctMV0gPSByYXdyZWdzLT5m bG9hdF9zYXZlLmZwc2NyOwotKwotKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9WRUNUT1JTQVZF QVJFQV9QUENfVlJfQ09VTlQ7IGkrKykgewotKyAgICAgIHRocmVhZC0+bWNvbnRleHQudl9yZWdz LT52cnJlZ3NbaV1bMF0gPSByYXdyZWdzLT52ZWN0b3Jfc2F2ZS5zYXZlX3ZyW2ldLmhpZ2ggPj4g MzI7Ci0rICAgICAgdGhyZWFkLT5tY29udGV4dC52X3JlZ3MtPnZycmVnc1tpXVsxXSA9IHJhd3Jl Z3MtPnZlY3Rvcl9zYXZlLnNhdmVfdnJbaV0uaGlnaDsKLSsgICAgICB0aHJlYWQtPm1jb250ZXh0 LnZfcmVncy0+dnJyZWdzW2ldWzJdID0gcmF3cmVncy0+dmVjdG9yX3NhdmUuc2F2ZV92cltpXS5s b3cgPj4gMzI7Ci0rICAgICAgdGhyZWFkLT5tY29udGV4dC52X3JlZ3MtPnZycmVnc1tpXVszXSA9 IHJhd3JlZ3MtPnZlY3Rvcl9zYXZlLnNhdmVfdnJbaV0ubG93OwotKyAgfQotKwotKyAgdGhyZWFk LT5tY29udGV4dC52X3JlZ3MtPnZzY3IudnNjcl93b3JkID0gcmF3cmVncy0+dmVjdG9yX3NhdmUu c2F2ZV92c2NyLmxvdyAmIDB4RkZGRkZGRkY7Ci0rfQotKwotICNlbHNlCi0gI2Vycm9yICJUaGlz IGNvZGUgaGFzIG5vdCBiZWVuIHBvcnRlZCB0byB5b3VyIHBsYXRmb3JtIHlldCIKLSAjZW5kaWYK LUBAIC02MjIsNiArNjYxLDEyIEBAIFBhcnNlU3lzdGVtSW5mbyhjb25zdCBPcHRpb25zJiBvcHRp b25zLCBDcmFzaGVkUHJvY2VzcyogY3Jhc2hpbmZvLAotICMgZWxzZQotICMgIGVycm9yICJUaGlz IG1pcHMgQUJJIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkIChuMzIpIgotICMgZW5kaWYKLSsj ZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICBpZiAoc3lzaW5mby0+cHJvY2Vzc29yX2Fy Y2hpdGVjdHVyZSAhPSBNRF9DUFVfQVJDSElURUNUVVJFX1BQQzY0KSB7Ci0rICAgIGZwcmludGYo c3RkZXJyLAotKyAgICAgICAgICAgICJUaGlzIHZlcnNpb24gb2YgbWluaWR1bXAtMi1jb3JlIG9u bHkgc3VwcG9ydHMgUFBDNjQuXG4iKTsKLSsgICAgZXhpdCgxKTsKLSsgIH0KLSAjZWxzZQotICNl cnJvciAiVGhpcyBjb2RlIGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8geW91ciBwbGF0Zm9ybSB5ZXQi Ci0gI2VuZGlmCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L2NyYXNocGFkL2NyYXNocGFkL0NPTlRSSUJVVE9SUwotKysrIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9DT05UUklCVVRP UlMKLUBAIC0xMywzICsxMyw0IEBAIE1hcmsgTWVudG92YWkgPG1hcmtAY2hyb21pdW0ub3JnPgot IFJvYmVydCBTZXNlayA8cnNlc2VrQGNocm9taXVtLm9yZz4KLSBTY290dCBHcmFoYW0gPHNjb3R0 bWdAY2hyb21pdW0ub3JnPgotIEpvc2h1YSBQZXJhemEgPGpwZXJhemFAY2hyb21pdW0ub3JnPgot K1NoYXduIEFuYXN0YXNpbyA8c2hhd25AYW5hc3Rhcy5pbz4KLS0tLSBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvY29tcGF0L2xp bnV4L3N5cy91c2VyLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvY29tcGF0L2xpbnV4L3N5cy91c2VyLmgKLUBAIC0x NSw2ICsxNSw3IEBACi0gI2lmbmRlZiBDUkFTSFBBRF9DT01QQVRfTElOVVhfU1lTX1VTRVJfSF8K LSAjZGVmaW5lIENSQVNIUEFEX0NPTVBBVF9MSU5VWF9TWVNfVVNFUl9IXwotIAotKyNpbmNsdWRl IDxjc3RkZGVmPgotICNpbmNsdWRlX25leHQgPHN5cy91c2VyLmg+Ci0gCi0gI2luY2x1ZGUgPGZl YXR1cmVzLmg+Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlkdW1wL21pbmlkdW1wX2NvbnRleHQuaAotKysrIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFz aHBhZC9taW5pZHVtcC9taW5pZHVtcF9jb250ZXh0LmgKLUBAIC01OTIsNiArNTkyLDcwIEBAIHN0 cnVjdCBNaW5pZHVtcENvbnRleHRNSVBTNjQgewotICAgdWludDY0X3QgZmlyOwotIH07Ci0gCi0r Ly8hIFxicmllZiBwcGM2NC1zcGVjaWZpYyBmbGFncyBmb3IgTWluaWR1bXBQUEM2NDo6Y29udGV4 dF9mbGFncwotKy8vISBCYXNlZCBvbiBtaW5pZHVtcF9jcHVfcHBjNjQuaCBmcm9tIGJyZWFrcGFk Ci0rZW51bSBNaW5pZHVtcENvbnRleHRQUEM2NEZsYWdzIDogdWludDMyX3QgewotKyAgLy8hIFxi cmllZiBJZGVudGlmaWVzIHRoZSBjb250ZXh0IGFzIFBQQzY0LgotKyAga01pbmlkdW1wQ29udGV4 dFBQQzY0ID0gMHgwMTAwMDAwMCwKLSsKLSsgIC8vISBcYnJpZWYgSW5kaWNhdGVzIHRoZSB2YWxp ZGl0eSBvZiBnZW5lcmFsIHB1cnBvc2UgcmVnaXN0ZXJzLgotKyAgLy8hCi0rICAvLyEgUmVnaXN0 ZXJzIGByMGAtYHIzMWAsIGBuaXBgLCBgbXNyYCwgYGxyYCwgZXRjLiBhcmUgdmFsaWQuCi0rICBr TWluaWR1bXBDb250ZXh0UFBDNjRCYXNlID0ga01pbmlkdW1wQ29udGV4dFBQQzY0IHwgMHgwMDAw MDAwMSwKLSsKLSsgIC8vISBcYnJpZWYgSW5kaWNhdGVzIHRoZSB2YWxpZGl0eSBvZiBmbG9hdGlu ZyBwb2ludCByZWdpc3RlcnMuCi0rICAvLyEKLSsgIC8vISBSZWdpc3RlcnMgYGZwMGAtYGZwMzFg LCBgZnBzY3JgIGFyZSB2YWxpZC4KLSsgIGtNaW5pZHVtcENvbnRleHRQUEM2NEZsb2F0aW5nID0g a01pbmlkdW1wQ29udGV4dFBQQzY0IHwgMHgwMDAwMDAwOCwKLSsKLSsgIC8vISBcYnJpZWYgSW5k aWNhdGVzIHRoZSB2YWxpZGl0eSBvZiBBbHRpdmVjL1ZNWCByZWdpc3RlcnMuCi0rICAvLyEKLSsg IC8vISBSZWdpc3RlcnMgYHYwYC1gdjMxYCwgYHZzY3JgLCBgdnJzYXZlYC4KLSsgIGtNaW5pZHVt cENvbnRleHRQUEM2NFZlY3RvciA9IGtNaW5pZHVtcENvbnRleHRQUEM2NCB8IDB4MDAwMDAwMjAs Ci0rCi0rICAvLyEgXGJyaWVmIEluZGljYXRlcyB0aGUgdmFsaWRpdHkgb2YgYWxsIHJlZ2lzdGVy cwotKyAga01pbmlkdW1wQ29udGV4dFBQQzY0QWxsID0ga01pbmlkdW1wQ29udGV4dFBQQzY0QmFz ZSAgICAgfAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAga01pbmlkdW1wQ29udGV4dFBQ QzY0RmxvYXRpbmcgfAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAga01pbmlkdW1wQ29u dGV4dFBQQzY0VmVjdG9yCi0rfTsKLSsKLSsvLyEgXGJyaWVmIEEgUFBDNjQgQ1BVIGNvbnRleHQg Y2FycmllZCBpbiBhIG1pbmlkdW1wIGZpbGUuCi0rLy8hIEJhc2VkIG9uIG1pbmlkdW1wX2NwdV9w cGM2NC5oIGZyb20gYnJlYWtwYWQuCi0rc3RydWN0IE1pbmlkdW1wQ29udGV4dFBQQzY0IHsKLSsg IHVpbnQ2NF90IGNvbnRleHRfZmxhZ3M7Ci0rCi0rICAvLyEgXGJyaWVmIEdlbmVyYWwgcHVycG9z ZSByZWdpc3RlcnMuCi0rICB1aW50NjRfdCBuaXA7Ci0rICB1aW50NjRfdCBtc3I7Ci0rICB1aW50 NjRfdCByZWdzWzMyXTsKLSsgIHVpbnQ2NF90IGNjcjsKLSsgIHVpbnQ2NF90IHhlcjsKLSsgIHVp bnQ2NF90IGxuazsKLSsgIHVpbnQ2NF90IGN0cjsKLSsKLSsgIC8vISBcYnJpZWYgRmxvYXRpbmcg cG9pbnQgcmVnaXN0ZXJzLgotKyAgZG91YmxlIGZwcmVnc1szMl07Ci0rCi0rICAvLyEgXGJyaWVm IEZQVSBzdGF0dXMgcmVnaXN0ZXIuCi0rICBkb3VibGUgZnBzY3I7Ci0rCi0rICAvLyEgXGJyaWVm IEFsdGl2ZWMvVk1YIHZlY3RvciByZWdpc3RlcnMuCi0rICBzdHJ1Y3QgewotKyAgICAgIC8vISBc YnJpZWYgVmVjdG9yIHJlZ2lzdGVycyBhcmUgMTI4Yml0cy4KLSsgICAgICB1aW50MTI4X3N0cnVj dCBzYXZlX3ZyWzMyXTsKLSsgICAgICB1aW50MTI4X3N0cnVjdCBzYXZlX3ZzY3I7Ci0rCi0rICAg ICAgLy8hIFxicmllZiBQYWRkaW5nIGluY2x1ZGVkIGZvciBicmVha3BhZCBjb21wYXRpYmlsdGl5 LgotKyAgICAgIHVpbnQzMl90IHNhdmVfcGFkNVs0XTsKLSsKLSsgICAgICAvLyEgXGJyaWVmIFZS U0FWRSByZWdpc3Rlci4KLSsgICAgICB1aW50MzJfdCBzYXZlX3Zyc2F2ZTsKLSsKLSsgICAgICAv LyEgXGJyaWVmIFBhZGRpbmcgaW5jbHVkZWQgZm9yIGJyZWFrcGFkIGNvbXBhdGliaWx0aXkuCi0r ICAgICAgdWludDMyX3Qgc2F2ZV9wYWQ2WzddOwotKyAgfSB2cmVnczsKLSt9OwotKwotIH0gIC8v IG5hbWVzcGFjZSBjcmFzaHBhZAotIAotICNlbmRpZiAgLy8gQ1JBU0hQQURfTUlOSURVTVBfTUlO SURVTVBfQ09OVEVYVF9IXwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9jb250ZXh0X3dy aXRlci5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0 eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9jb250ZXh0X3dyaXRlci5jYwot QEAgLTEwMSw2ICsxMDEsMTMgQEAgTWluaWR1bXBDb250ZXh0V3JpdGVyOjpDcmVhdGVGcm9tU25h cHNob3QoY29uc3QgQ1BVQ29udGV4dCogY29udGV4dF9zbmFwc2hvdCkgewotICAgICAgIGJyZWFr OwotICAgICB9Ci0gCi0rICAgIGNhc2Uga0NQVUFyY2hpdGVjdHVyZVBQQzY0OiB7Ci0rICAgICAg Y29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8TWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXI+KCk7 Ci0rICAgICAgcmVpbnRlcnByZXRfY2FzdDxNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlcio+KGNv bnRleHQuZ2V0KCkpCi0rICAgICAgICAgIC0+SW5pdGFsaXplRnJvbVNuYXBzaG90KGNvbnRleHRf c25hcHNob3QtPnBwYzY0KTsKLSsgICAgICBicmVhazsKLSsgICAgfQotKwotICAgICBkZWZhdWx0 OiB7Ci0gICAgICAgTE9HKEVSUk9SKSA8PCAidW5rbm93biBjb250ZXh0IGFyY2hpdGVjdHVyZSAi Ci0gICAgICAgICAgICAgICAgICA8PCBjb250ZXh0X3NuYXBzaG90LT5hcmNoaXRlY3R1cmU7Ci1A QCAtNDUzLDQgKzQ2MCw0NyBAQCBzaXplX3QgTWluaWR1bXBDb250ZXh0TUlQUzY0V3JpdGVyOjpD b250ZXh0U2l6ZSgpIGNvbnN0IHsKLSAgIHJldHVybiBzaXplb2YoY29udGV4dF8pOwotIH0KLSAK LStNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlcjo6TWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXIo KQotKyAgOiBNaW5pZHVtcENvbnRleHRXcml0ZXIoKSwgY29udGV4dF8oKSB7Ci0rICAgIGNvbnRl eHRfLmNvbnRleHRfZmxhZ3MgPSBrTWluaWR1bXBDb250ZXh0UFBDNjQ7Ci0rfQotKwotK01pbmlk dW1wQ29udGV4dFBQQzY0V3JpdGVyOjp+TWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXIoKSA9IGRl ZmF1bHQ7Ci0rCi0rdm9pZCBNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlcjo6SW5pdGFsaXplRnJv bVNuYXBzaG90KAotKyAgICBjb25zdCBDUFVDb250ZXh0UFBDNjQqIGNvbnRleHRfc25hcHNob3Qp IHsKLSsgIERDSEVDS19FUShzdGF0ZSgpLCBrU3RhdGVNdXRhYmxlKTsKLSsgIERDSEVDS19FUShj b250ZXh0Xy5jb250ZXh0X2ZsYWdzLCBrTWluaWR1bXBDb250ZXh0UFBDNjQpOwotKwotKyAgY29u dGV4dF8uY29udGV4dF9mbGFncyA9IGtNaW5pZHVtcENvbnRleHRQUEM2NEFsbDsKLSsKLSsgIG1l bWNweShjb250ZXh0Xy5yZWdzLCBjb250ZXh0X3NuYXBzaG90LT5yZWdzLCBzaXplb2YoY29udGV4 dF8ucmVncykpOwotKyAgY29udGV4dF8ubmlwID0gY29udGV4dF9zbmFwc2hvdC0+bmlwOwotKyAg Y29udGV4dF8ubXNyID0gY29udGV4dF9zbmFwc2hvdC0+bXNyOwotKyAgY29udGV4dF8uY2NyID0g Y29udGV4dF9zbmFwc2hvdC0+Y2NyOwotKyAgY29udGV4dF8ueGVyID0gY29udGV4dF9zbmFwc2hv dC0+eGVyOwotKyAgY29udGV4dF8ubG5rID0gY29udGV4dF9zbmFwc2hvdC0+bG5rOwotKyAgY29u dGV4dF8uY3RyID0gY29udGV4dF9zbmFwc2hvdC0+Y3RyOwotKwotKyAgbWVtY3B5KGNvbnRleHRf LmZwcmVncywgY29udGV4dF9zbmFwc2hvdC0+ZnByZWdzLCBzaXplb2YoY29udGV4dF8uZnByZWdz KSk7Ci0rICBjb250ZXh0Xy5mcHNjciA9IGNvbnRleHRfc25hcHNob3QtPmZwc2NyOwotKwotKyAg bWVtY3B5KGNvbnRleHRfLnZyZWdzLnNhdmVfdnIsIGNvbnRleHRfc25hcHNob3QtPnZyZWdzLnNh dmVfdnIsCi0rICAgICAgICAgc2l6ZW9mKGNvbnRleHRfLnZyZWdzLnNhdmVfdnIpKTsKLSsgIG1l bWNweSgmY29udGV4dF8udnJlZ3Muc2F2ZV92c2NyLCAmY29udGV4dF9zbmFwc2hvdC0+dnJlZ3Mu c2F2ZV92c2NyLAotKyAgICAgICAgIHNpemVvZihjb250ZXh0Xy52cmVncy5zYXZlX3ZzY3IpKTsK LSsgIGNvbnRleHRfLnZyZWdzLnNhdmVfdnJzYXZlID0gY29udGV4dF9zbmFwc2hvdC0+dnJlZ3Mu c2F2ZV92cnNhdmU7Ci0rfQotKwotK2Jvb2wgTWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXI6Oldy aXRlT2JqZWN0KAotKyAgICBGaWxlV3JpdGVySW50ZXJmYWNlKiBmaWxlX3dyaXRlcikgewotKyAg RENIRUNLX0VRKHN0YXRlKCksIGtTdGF0ZVdyaXRhYmxlKTsKLSsgIHJldHVybiBmaWxlX3dyaXRl ci0+V3JpdGUoJmNvbnRleHRfLCBzaXplb2YoY29udGV4dF8pKTsKLSt9Ci0rCi0rc2l6ZV90IE1p bmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyOjpDb250ZXh0U2l6ZSgpIGNvbnN0IHsKLSsgIERDSEVD S19HRShzdGF0ZSgpLCBrU3RhdGVGcm96ZW4pOwotKyAgcmV0dXJuIHNpemVvZihjb250ZXh0Xyk7 Ci0rfQotKwotIH0gIC8vIG5hbWVzcGFjZSBjcmFzaHBhZAotLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9t aW5pZHVtcF9jb250ZXh0X3dyaXRlci5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlkdW1wL21pbmlkdW1wX2Nv bnRleHRfd3JpdGVyLmgKLUBAIC0zMTUsNiArMzE1LDQ1IEBAIGNsYXNzIE1pbmlkdW1wQ29udGV4 dE1JUFM2NFdyaXRlciBmaW5hbCA6IHB1YmxpYyBNaW5pZHVtcENvbnRleHRXcml0ZXIgewotICAg RElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKE1pbmlkdW1wQ29udGV4dE1JUFM2NFdyaXRlcik7Ci0g fTsKLSAKLStjbGFzcyBNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlciBmaW5hbCA6IHB1YmxpYyBN aW5pZHVtcENvbnRleHRXcml0ZXIgewotKyBwdWJsaWM6Ci0rICBNaW5pZHVtcENvbnRleHRQUEM2 NFdyaXRlcigpOwotKyAgfk1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyKCkgb3ZlcnJpZGU7Ci0r Ci0rICAvLyEgXGJyaWVmIEluaXRhbGl6ZXMgdGhlIE1pbmlkdW1wQ29udGV4dFBQQzY0IGJhc2Vk IG9uIFxhIGNvbnRleHRfc25hcHNob3QuCi0rICAvLyEKLSsgIC8vISBccGFyYW1baW5dIGNvbnRl eHRfc25hcHNob3QgVGhlIGNvbnRleHQgc25hcHNob3QgdG8gdXNlIGFzIHNvdXJjZSBkYXRhLgot KyAgLy8hCi0rICAvLyEgXG5vdGUgVmFsaWQgaW4gI2tTdGF0ZU11dGFibGUuIE5vIG11dGF0aW9u IG9mIGNvbnRleHQoKSBtYXkgYmUgZG9uZSBiZWZvcmUKLSsgIC8vISAgICAgY2FsbGluZyB0aGlz IG1ldGhvZCwgYW5kIGl0IGlzIG5vdCBub3JtYWxseSBuZWNlc3NhcnkgdG8gYWx0ZXIKLSsgIC8v ISAgICAgY29udGV4dCgpIGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QuCi0rICB2b2lkIEluaXRh bGl6ZUZyb21TbmFwc2hvdChjb25zdCBDUFVDb250ZXh0UFBDNjQqIGNvbnRleHRfc25hcHNob3Qp OwotKwotKyAgLy8hIFxicmllZiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgY29udGV4dCBzdHJ1 Y3R1cmUgdGhhdCB0aGlzIG9iamVjdCB3aWxsCi0rICAvLyEgICAgIHdyaXRlLgotKyAgLy8hCi0r ICAvLyEgXGF0dGVudGlvbiBUaGlzIHJldHVybnMgYSBub24tYGNvbnN0YCBwb2ludGVyIHRvIHRo aXMgb2JqZWN04oCZcyBwcml2YXRlCi0rICAvLyEgICAgIGRhdGEgc28gdGhhdCBhIGNhbGxlciBj YW4gcG9wdWxhdGUgdGhlIGNvbnRleHQgc3RydWN0dXJlIGRpcmVjdGx5LgotKyAgLy8hICAgICBU aGlzIGlzIGRvbmUgYmVjYXVzZSBwcm92aWRpbmcgc2V0dGVyIGludGVyZmFjZXMgdG8gZWFjaCBm aWVsZCBpbiB0aGUKLSsgIC8vISAgICAgY29udGV4dCBzdHJ1Y3R1cmUgd291bGQgYmUgdW53aWVs ZHkgYW5kIGN1bWJlcnNvbWUuIENhcmUgbXVzdCBiZSB0YWtlbgotKyAgLy8hICAgICB0byBwb3B1 bGF0ZSB0aGUgY29udGV4dCBzdHJ1Y3R1cmUgY29ycmVjdGx5LiBUaGUgY29udGV4dCBzdHJ1Y3R1 cmUKLSsgIC8vISAgICAgbXVzdCBvbmx5IGJlIG1vZGlmaWVkIHdoaWxlIHRoaXMgb2JqZWN0IGlz IGluIHRoZSAja1N0YXRlTXV0YWJsZQotKyAgLy8hICAgICBzdGF0ZS4KLSsgIE1pbmlkdW1wQ29u dGV4dFBQQzY0KiBjb250ZXh0KCkgeyByZXR1cm4gJmNvbnRleHRfOyB9Ci0rCi0rIHByb3RlY3Rl ZDoKLSsgIC8vIE1pbmlkdW1wV3JpdGFibGU6Ci0rICBib29sIFdyaXRlT2JqZWN0KEZpbGVXcml0 ZXJJbnRlcmZhY2UqIGZpbGVfd3JpdGVyKSBvdmVycmlkZTsKLSsKLSsgIC8vIE1pbmlkdW1wQ29u dGV4dFdyaXRlcjoKLSsgIHNpemVfdCBDb250ZXh0U2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwotKwot KyBwcml2YXRlOgotKyAgTWluaWR1bXBDb250ZXh0UFBDNjQgY29udGV4dF87Ci0rCi0rICBESVNB TExPV19DT1BZX0FORF9BU1NJR04oTWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXIpOwotK307Ci0r Ci0gfSAgLy8gbmFtZXNwYWNlIGNyYXNocGFkCi0gCi0gI2VuZGlmICAvLyBDUkFTSFBBRF9NSU5J RFVNUF9NSU5JRFVNUF9DT05URVhUX1dSSVRFUl9IXwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5p ZHVtcF9jb250ZXh0X3dyaXRlcl90ZXN0LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlkdW1wL21pbmlkdW1w X2NvbnRleHRfd3JpdGVyX3Rlc3QuY2MKLUBAIC0yMTMsNiArMjEzLDIxIEBAIFRFU1QoTWluaWR1 bXBDb250ZXh0V3JpdGVyLCBNSVBTNjRfRnJvbVNuYXBzaG90KSB7Ci0gICAgICAgY29udGV4dCwg RXhwZWN0TWluaWR1bXBDb250ZXh0TUlQUzY0LCBrU2VlZCk7Ci0gfQotIAotK1RFU1QoTWluaWR1 bXBDb250ZXh0V3JpdGVyLCBQUEM2NF9aZXJvcykgewotKyAgRW1wdHlDb250ZXh0VGVzdDxNaW5p ZHVtcENvbnRleHRQUEM2NFdyaXRlciwgTWluaWR1bXBDb250ZXh0UFBDNjQ+KAotKyAgICBFeHBl Y3RNaW5pZHVtcENvbnRleHRQUEM2NCk7Ci0rfQotKwotK1RFU1QoTWluaWR1bXBDb250ZXh0V3Jp dGVyLCBQUEM2NF9Gcm9tU25hcHNob3QpIHsKLSsgIGNvbnN0ZXhwciB1aW50MzJfdCBrU2VlZCA9 IDY0OwotKyAgQ1BVQ29udGV4dFBQQzY0IGNvbnRleHRfcHBjNjQ7Ci0rICBDUFVDb250ZXh0IGNv bnRleHQ7Ci0rICBjb250ZXh0LnBwYzY0ID0gJmNvbnRleHRfcHBjNjQ7Ci0rICBJbml0aWFsaXpl Q1BVQ29udGV4dFBQQzY0KCZjb250ZXh0LCBrU2VlZCk7Ci0rICBGcm9tU25hcHNob3RUZXN0PE1p bmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyLCBNaW5pZHVtcENvbnRleHRQUEM2ND4oCi0rICAgICAg Y29udGV4dCwgRXhwZWN0TWluaWR1bXBDb250ZXh0UFBDNjQsIGtTZWVkKTsKLSt9Ci0rCi0gfSAg Ly8gbmFtZXNwYWNlCi0gfSAgLy8gbmFtZXNwYWNlIHRlc3QKLSB9ICAvLyBuYW1lc3BhY2UgY3Jh c2hwYWQKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv Y3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfbWlzY19pbmZvX3dyaXRlci5jYwot KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBh ZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9taXNjX2luZm9fd3JpdGVyLmNjCi1AQCAtMTI2 LDYgKzEyNiw4IEBAIHN0ZDo6c3RyaW5nIE1pbmlkdW1wTWlzY0luZm9EZWJ1Z0J1aWxkU3RyaW5n KCkgewotICAgc3RhdGljIGNvbnN0ZXhwciBjaGFyIGtDUFVbXSA9ICJtaXBzIjsKLSAjZWxpZiBk ZWZpbmVkKEFSQ0hfQ1BVX01JUFM2NEVMKQotICAgc3RhdGljIGNvbnN0ZXhwciBjaGFyIGtDUFVb XSA9ICJtaXBzNjQiOwotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjQpCi0rICBzdGF0aWMg Y29uc3RleHByIGNoYXIga0NQVVtdID0gInBwYzY0IjsKLSAjZWxzZQotICNlcnJvciBkZWZpbmUg a0NQVSBmb3IgdGhpcyBDUFUKLSAjZW5kaWYKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvY2FwdHVyZV9t ZW1vcnkuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvY2FwdHVyZV9tZW1vcnkuY2MKLUBAIC0xMTEs NiArMTExLDExIEBAIHZvaWQgQ2FwdHVyZU1lbW9yeTo6UG9pbnRlZFRvQnlDb250ZXh0KGNvbnN0 IENQVUNvbnRleHQmIGNvbnRleHQsCi0gICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJhc2U6OnNp emUoY29udGV4dC5taXBzZWwtPnJlZ3MpOyArK2kpIHsKLSAgICAgTWF5YmVDYXB0dXJlTWVtb3J5 QXJvdW5kKGRlbGVnYXRlLCBjb250ZXh0Lm1pcHNlbC0+cmVnc1tpXSk7Ci0gICB9Ci0rI2VsaWYg ZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0rICBNYXliZUNhcHR1cmVNZW1vcnlBcm91 bmQoZGVsZWdhdGUsIGNvbnRleHQucHBjNjQtPm5pcCk7Ci0rICBmb3IgKHNpemVfdCBpID0gMDsg aSA8IGJhc2U6OnNpemUoY29udGV4dC5wcGM2NC0+cmVncyk7ICsraSkgewotKyAgICBNYXliZUNh cHR1cmVNZW1vcnlBcm91bmQoZGVsZWdhdGUsIGNvbnRleHQucHBjNjQtPnJlZ3NbaV0pOwotKyAg fQotICNlbHNlCi0gI2Vycm9yIFBvcnQuCi0gI2VuZGlmCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2Nw dV9hcmNoaXRlY3R1cmUuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9jcHVfYXJjaGl0ZWN0dXJlLmgK LUBAIC00Myw3ICs0MywxMCBAQCBlbnVtIENQVUFyY2hpdGVjdHVyZSB7Ci0gICBrQ1BVQXJjaGl0 ZWN0dXJlTUlQU0VMLAotIAotICAgLy8hIFxicmllZiA2NC1iaXQgTUlQU0VMLgotLSAga0NQVUFy Y2hpdGVjdHVyZU1JUFM2NEVMCi0rICBrQ1BVQXJjaGl0ZWN0dXJlTUlQUzY0RUwsCi0rCi0rICAv LyEgXGJyaWVmIDY0LWJpdCBQUEM2NC4KLSsgIGtDUFVBcmNoaXRlY3R1cmVQUEM2NAotIH07Ci0g Ci0gfSAgLy8gbmFtZXNwYWNlIGNyYXNocGFkCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2NwdV9jb250 ZXh0LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2NwdV9jb250ZXh0LmNjCi1AQCAtMTY5LDYgKzE2 OSw4IEBAIHVpbnQ2NF90IENQVUNvbnRleHQ6Okluc3RydWN0aW9uUG9pbnRlcigpIGNvbnN0IHsK LSAgICAgICByZXR1cm4gYXJtLT5wYzsKLSAgICAgY2FzZSBrQ1BVQXJjaGl0ZWN0dXJlQVJNNjQ6 Ci0gICAgICAgcmV0dXJuIGFybTY0LT5wYzsKLSsgICAgY2FzZSBrQ1BVQXJjaGl0ZWN0dXJlUFBD NjQ6Ci0rICAgICAgcmV0dXJuIHBwYzY0LT5uaXA7Ci0gICAgIGRlZmF1bHQ6Ci0gICAgICAgTk9U UkVBQ0hFRCgpOwotICAgICAgIHJldHVybiB+MHVsbDsKLUBAIC0xODUsNiArMTg3LDggQEAgdWlu dDY0X3QgQ1BVQ29udGV4dDo6U3RhY2tQb2ludGVyKCkgY29uc3QgewotICAgICAgIHJldHVybiBh cm0tPnNwOwotICAgICBjYXNlIGtDUFVBcmNoaXRlY3R1cmVBUk02NDoKLSAgICAgICByZXR1cm4g YXJtNjQtPnNwOwotKyAgICBjYXNlIGtDUFVBcmNoaXRlY3R1cmVQUEM2NDoKLSsgICAgICByZXR1 cm4gcHBjNjQtPnJlZ3NbMV07Ci0gICAgIGRlZmF1bHQ6Ci0gICAgICAgTk9UUkVBQ0hFRCgpOwot ICAgICAgIHJldHVybiB+MHVsbDsKLUBAIC0xOTYsNiArMjAwLDcgQEAgYm9vbCBDUFVDb250ZXh0 OjpJczY0Qml0KCkgY29uc3QgewotICAgICBjYXNlIGtDUFVBcmNoaXRlY3R1cmVYODZfNjQ6Ci0g ICAgIGNhc2Uga0NQVUFyY2hpdGVjdHVyZUFSTTY0OgotICAgICBjYXNlIGtDUFVBcmNoaXRlY3R1 cmVNSVBTNjRFTDoKLSsgICAgY2FzZSBrQ1BVQXJjaGl0ZWN0dXJlUFBDNjQ6Ci0gICAgICAgcmV0 dXJuIHRydWU7Ci0gICAgIGNhc2Uga0NQVUFyY2hpdGVjdHVyZVg4NjoKLSAgICAgY2FzZSBrQ1BV QXJjaGl0ZWN0dXJlQVJNOgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9jcHVfY29udGV4dC5oCi0rKysg cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2Ny YXNocGFkL3NuYXBzaG90L2NwdV9jb250ZXh0LmgKLUBAIC0zNTIsNiArMzUyLDI0IEBAIHN0cnVj dCBDUFVDb250ZXh0TUlQUzY0IHsKLSAgIHVpbnQ2NF90IGZpcjsKLSB9OwotIAotKy8vISBcYnJp ZWYgQSBjb250ZXh0IHN0cnVjdHVyZSBjYXJyeWluZyBQUEM2NCBDUFUgc3RhdGUuCi0rc3RydWN0 IENQVUNvbnRleHRQUEM2NCB7Ci0rICB1aW50NjRfdCBuaXA7Ci0rICB1aW50NjRfdCBtc3I7Ci0r ICB1aW50NjRfdCByZWdzWzMyXTsKLSsgIHVpbnQ2NF90IGNjcjsKLSsgIHVpbnQ2NF90IHhlcjsK LSsgIHVpbnQ2NF90IGxuazsKLSsgIHVpbnQ2NF90IGN0cjsKLSsgIGRvdWJsZSBmcHJlZ3NbMzJd OwotKyAgZG91YmxlIGZwc2NyOwotKyAgc3RydWN0IHsKLSsgICAgdWludDEyOF9zdHJ1Y3Qgc2F2 ZV92clszMl07Ci0rICAgIHVpbnQxMjhfc3RydWN0IHNhdmVfdnNjcjsKLSsgICAgdWludDMyX3Qg c2F2ZV92cnNhdmU7Ci0rICB9IHZyZWdzOwotK307Ci0rCi0gLy8hIFxicmllZiBBIGNvbnRleHQg c3RydWN0dXJlIGNhcGFibGUgb2YgY2FycnlpbmcgdGhlIGNvbnRleHQgb2YgYW55IHN1cHBvcnRl ZAotIC8vISAgICAgQ1BVIGFyY2hpdGVjdHVyZS4KLSBzdHJ1Y3QgQ1BVQ29udGV4dCB7Ci1AQCAt MzgyLDYgKzQwMCw3IEBAIHN0cnVjdCBDUFVDb250ZXh0IHsKLSAgICAgQ1BVQ29udGV4dEFSTTY0 KiBhcm02NDsKLSAgICAgQ1BVQ29udGV4dE1JUFMqIG1pcHNlbDsKLSAgICAgQ1BVQ29udGV4dE1J UFM2NCogbWlwczY0OwotKyAgICBDUFVDb250ZXh0UFBDNjQqIHBwYzY0OwotICAgfTsKLSB9Owot IAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFz aHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9jcHVfY29udGV4dF9saW51eC5oCi0rKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNo cGFkL3NuYXBzaG90L2xpbnV4L2NwdV9jb250ZXh0X2xpbnV4LmgKLUBAIC0xNSw2ICsxNSw3IEBA Ci0gI2lmbmRlZiBDUkFTSFBBRF9TTkFQU0hPVF9MSU5VWF9DUFVfQ09OVEVYVF9MSU5VWF9IXwot ICNkZWZpbmUgQ1JBU0hQQURfU05BUFNIT1RfTElOVVhfQ1BVX0NPTlRFWFRfTElOVVhfSF8KLSAK LSsjaW5jbHVkZSA8Y3N0cmluZz4KLSAjaW5jbHVkZSAiYnVpbGQvYnVpbGRfY29uZmlnLmgiCi0g I2luY2x1ZGUgInNuYXBzaG90L2NwdV9jb250ZXh0LmgiCi0gI2luY2x1ZGUgInNuYXBzaG90L2xp bnV4L3NpZ25hbF9jb250ZXh0LmgiCi1AQCAtMTc0LDYgKzE3NSw3OCBAQCB2b2lkIEluaXRpYWxp emVDUFVDb250ZXh0TUlQUygKLSAKLSAjZW5kaWYgIC8vIEFSQ0hfQ1BVX01JUFNfRkFNSUxZIHx8 IERPWFlHRU4KLSAKLSsjaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpIHx8IERPWFlH RU4KLSsKLSsvLyEgXGJyaWVmIEluaXRhbGl6ZXMgYSBDUFVDb250ZXh0UFBDNjQgc3RydWN0dXJl IGZyb20gbmF0aXZlIGNvbnRleHQKLSsvLyEgICAgIHN0cnVjdHVyZXMgb24gTGludXguCi0rLy8h Ci0rLy8hIFxwYXJhbVtpbl0gdGhyZWFkX2NvbnRleHQgVGhlIG5hdGl2ZSB0aHJlYWQgY29udGV4 dC4KLSsvLyEgXHBhcmFtW2luXSBmbG9hdF9jb250ZXh0IFRoZSBuYXRpdmUgZmxvYXQgY29udGV4 dC4KLSsvLyEgXHBhcmFtW2luXSB2ZWN0b3JfY29udGV4dCBUaGUgbmF0aXZlIHZlY3RvciBjb250 ZXh0LgotKy8vISBccGFyYW1bb3V0XSBjb250ZXh0IFRoZSBDUFVDb250ZXh0UFBDNjQgc3RydWN0 dXJlIHRvIGluaXRhbGl6ZS4KLSt0ZW1wbGF0ZSA8dHlwZW5hbWUgVHJhaXRzPgotK3ZvaWQgSW5p dGlhbGl6ZUNQVUNvbnRleHRQUEM2NCgKLSsgICAgY29uc3QgVGhyZWFkQ29udGV4dDo6dDY0X3Qm IHRocmVhZF9jb250ZXh0LAotKyAgICBjb25zdCBGbG9hdENvbnRleHQ6OmY2NF90JiBmbG9hdF9j b250ZXh0LAotKyAgICBjb25zdCBWZWN0b3JDb250ZXh0Ojp2NjRfdCYgdmVjdG9yX2NvbnRleHQs Ci0rICAgIHR5cGVuYW1lIFRyYWl0czo6Q1BVQ29udGV4dCogY29udGV4dCkgewotKwotKyAgbWVt Y3B5KGNvbnRleHQtPnJlZ3MsIHRocmVhZF9jb250ZXh0Lmdwciwgc2l6ZW9mKGNvbnRleHQtPnJl Z3MpKTsKLSsgIGNvbnRleHQtPm5pcCA9IHRocmVhZF9jb250ZXh0Lm5pcDsKLSsgIGNvbnRleHQt Pm1zciA9IHRocmVhZF9jb250ZXh0Lm1zcjsKLSsgIGNvbnRleHQtPmNjciA9IHRocmVhZF9jb250 ZXh0LmNjcjsKLSsgIGNvbnRleHQtPnhlciA9IHRocmVhZF9jb250ZXh0LnhlcjsKLSsgIGNvbnRl eHQtPmxuayA9IHRocmVhZF9jb250ZXh0LmxuazsKLSsgIGNvbnRleHQtPmN0ciA9IHRocmVhZF9j b250ZXh0LmN0cjsKLSsKLSsgIG1lbWNweShjb250ZXh0LT5mcHJlZ3MsIGZsb2F0X2NvbnRleHQu ZnByZWdzLCBzaXplb2YoY29udGV4dC0+ZnByZWdzKSk7Ci0rICBjb250ZXh0LT5mcHNjciA9IGZs b2F0X2NvbnRleHQuZnBzY3I7Ci0rCi0rICBmb3IgKHVpbnQ4X3QgaSA9IDA7IGkgPCAzMjsgaSsr KSB7Ci0rICAgIGNvbnRleHQtPnZyZWdzLnNhdmVfdnJbaV0gPSB7Ci0rICAgICAgKCgodWludDY0 X3QpdmVjdG9yX2NvbnRleHQudnJyZWdzW2ldWzBdKSA8PCAzMikgfAotKyAgICAgICAgdmVjdG9y X2NvbnRleHQudnJyZWdzW2ldWzFdLAotKyAgICAgICgoKHVpbnQ2NF90KXZlY3Rvcl9jb250ZXh0 LnZycmVnc1tpXVsyXSkgPDwgMzIpIHwKLSsgICAgICAgIHZlY3Rvcl9jb250ZXh0LnZycmVnc1tp XVszXQotKyAgICB9OwotKyAgfQotKyAgY29udGV4dC0+dnJlZ3Muc2F2ZV92cnNhdmUgPSB2ZWN0 b3JfY29udGV4dC52cnNhdmU7Ci0rICBjb250ZXh0LT52cmVncy5zYXZlX3ZzY3IgPSB7MCwgKHVp bnQ2NF90KXZlY3Rvcl9jb250ZXh0LnZzY3IudnNjcl93b3JkfTsKLSt9Ci0rCi0rdGVtcGxhdGUg PHR5cGVuYW1lIFRyYWl0cz4KLSt2b2lkIEluaXRpYWxpemVDUFVDb250ZXh0UFBDNjQoCi0rICAg IGNvbnN0IFNpZ25hbFRocmVhZENvbnRleHQ2NCAmdGhyZWFkX2NvbnRleHQsCi0rICAgIGNvbnN0 IFNpZ25hbEZsb2F0Q29udGV4dDY0ICZmbG9hdF9jb250ZXh0LAotKyAgICBjb25zdCBTaWduYWxW ZWN0b3JDb250ZXh0NjQgJnZlY3Rvcl9jb250ZXh0LAotKyAgICB0eXBlbmFtZSBUcmFpdHM6OkNQ VUNvbnRleHQqIGNvbnRleHQpIHsKLSsKLSsgIG1lbWNweShjb250ZXh0LT5yZWdzLCB0aHJlYWRf Y29udGV4dC5yZWdzLCBzaXplb2YoY29udGV4dC0+cmVncykpOwotKyAgY29udGV4dC0+bmlwID0g dGhyZWFkX2NvbnRleHQubmlwOwotKyAgY29udGV4dC0+bXNyID0gdGhyZWFkX2NvbnRleHQubXNy OwotKyAgY29udGV4dC0+Y2NyID0gdGhyZWFkX2NvbnRleHQuY2NyOwotKyAgY29udGV4dC0+eGVy ID0gdGhyZWFkX2NvbnRleHQueGVyOwotKyAgY29udGV4dC0+bG5rID0gdGhyZWFkX2NvbnRleHQu bG5rOwotKyAgY29udGV4dC0+Y3RyID0gdGhyZWFkX2NvbnRleHQuY3RyOwotKwotKyAgbWVtY3B5 KGNvbnRleHQtPmZwcmVncywgZmxvYXRfY29udGV4dC5yZWdzLCBzaXplb2YoY29udGV4dC0+ZnBy ZWdzKSk7Ci0rICBjb250ZXh0LT5mcHNjciA9IGZsb2F0X2NvbnRleHQuZnBzY3I7Ci0rCi0rICBm b3IgKHVpbnQ4X3QgaSA9IDA7IGkgPCAzMjsgaSsrKSB7Ci0rICAgIGNvbnRleHQtPnZyZWdzLnNh dmVfdnJbaV0gPSB7Ci0rICAgICAgKCgodWludDY0X3QpdmVjdG9yX2NvbnRleHQudnJyZWdzW2ld WzBdKSA8PCAzMikgfAotKyAgICAgICAgdmVjdG9yX2NvbnRleHQudnJyZWdzW2ldWzFdLAotKyAg ICAgICgoKHVpbnQ2NF90KXZlY3Rvcl9jb250ZXh0LnZycmVnc1tpXVsyXSkgPDwgMzIpIHwKLSsg ICAgICAgIHZlY3Rvcl9jb250ZXh0LnZycmVnc1tpXVszXQotKyAgICB9OwotKyAgfQotKyAgY29u dGV4dC0+dnJlZ3Muc2F2ZV92cnNhdmUgPSB2ZWN0b3JfY29udGV4dC52cnNhdmU7Ci0rICBjb250 ZXh0LT52cmVncy5zYXZlX3ZzY3IgPSB7MCwgKHVpbnQ2NF90KXZlY3Rvcl9jb250ZXh0LnZzY3Iu dnNjcl93b3JkfTsKLSt9Ci0rCi0rCi0rI2VuZGlmCi0rCi0gfSAgLy8gbmFtZXNwYWNlIGludGVy bmFsCi0gfSAgLy8gbmFtZXNwYWNlIGNyYXNocGFkCi0gCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xp bnV4L2RlYnVnX3JlbmRlenZvdXNfdGVzdC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9k ZWJ1Z19yZW5kZXp2b3VzX3Rlc3QuY2MKLUBAIC0xNTksOSArMTU5LDExIEBAIHZvaWQgVGVzdEFn YWluc3RUYXJnZXQoUHRyYWNlQ29ubmVjdGlvbiogY29ubmVjdGlvbikgewotICAgICAgICAgICBj b25zdCBib29sIGlzX3Zkc29fbWFwcGluZyA9Ci0gICAgICAgICAgICAgICBkZXZpY2UgPT0gMCAm JiBpbm9kZSA9PSAwICYmIG1hcHBpbmdfbmFtZSA9PSAiW3Zkc29dIjsKLSAgICAgICAgICAgc3Rh dGljIGNvbnN0ZXhwciBjaGFyIGtQcmVmaXhbXSA9ICJsaW51eC12ZHNvLnNvLiI7Ci0rICAgICAg ICAgIHN0YXRpYyBjb25zdGV4cHIgY2hhciBrUHJlZml4NjRbXSA9ICJsaW51eC12ZHNvNjQuc28u IjsKLSAgICAgICAgICAgcmV0dXJuIGlzX3Zkc29fbWFwcGluZyA9PQotICAgICAgICAgICAgICAg ICAgKG1vZHVsZV9uYW1lLmVtcHR5KCkgfHwKLS0gICAgICAgICAgICAgICAgICBtb2R1bGVfbmFt ZS5jb21wYXJlKDAsIHN0cmxlbihrUHJlZml4KSwga1ByZWZpeCkgPT0gMCk7Ci0rICAgICAgICAg ICAgICAgICAgbW9kdWxlX25hbWUuY29tcGFyZSgwLCBzdHJsZW4oa1ByZWZpeCksIGtQcmVmaXgp ID09IDAgfHwKLSsgICAgICAgICAgICAgICAgICBtb2R1bGVfbmFtZS5jb21wYXJlKDAsIHN0cmxl bihrUHJlZml4NjQpLCBrUHJlZml4NjQpID09IDApOwotICAgICAgICAgfSwKLSAgICAgICAgIG1v ZHVsZV9tYXBwaW5nLT5uYW1lLAotICAgICAgICAgbW9kdWxlX21hcHBpbmctPmRldmljZSwKLS0t LSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQv Y3Jhc2hwYWQvc25hcHNob3QvbGludXgvZXhjZXB0aW9uX3NuYXBzaG90X2xpbnV4LmNjCi0rKysg cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2Ny YXNocGFkL3NuYXBzaG90L2xpbnV4L2V4Y2VwdGlvbl9zbmFwc2hvdF9saW51eC5jYwotQEAgLTMy Myw2ICszMjMsNjkgQEAgYm9vbCBFeGNlcHRpb25TbmFwc2hvdExpbnV4OjpSZWFkQ29udGV4dDxD b250ZXh0VHJhaXRzNjQ+KAotICAgICAgIHJlYWRlciwgY29udGV4dF9hZGRyZXNzLCBjb250ZXh0 Xy5taXBzNjQpOwotIH0KLSAKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkK LSsKLSt0ZW1wbGF0ZSA8dHlwZW5hbWUgVHJhaXRzPgotK3N0YXRpYyBib29sIFJlYWRDb250ZXh0 KFByb2Nlc3NSZWFkZXJMaW51eCogcmVhZGVyLAotKyAgICAgICAgICAgICAgICAgICAgICAgIExp bnV4Vk1BZGRyZXNzIGNvbnRleHRfYWRkcmVzcywKLSsgICAgICAgICAgICAgICAgICAgICAgICB0 eXBlbmFtZSBUcmFpdHM6OkNQVUNvbnRleHQqIGRlc3RfY29udGV4dCkgewotKyAgY29uc3QgUHJv Y2Vzc01lbW9yeSogbWVtb3J5ID0gcmVhZGVyLT5NZW1vcnkoKTsKLSsKLSsgIExpbnV4Vk1BZGRy ZXNzIGdwX3JlZ3NfYWRkcmVzcyA9IGNvbnRleHRfYWRkcmVzcyArCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBvZmZzZXRvZihVQ29udGV4dCwgbWNvbnRleHQpICsKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldG9mKHR5cGVuYW1lIFRyYWl0czo6 TUNvbnRleHQsIGdwX3JlZ3MpOwotKwotKyAgdHlwZW5hbWUgVHJhaXRzOjpTaWduYWxUaHJlYWRD b250ZXh0IHRocmVhZF9jb250ZXh0OwotKyAgaWYgKCFtZW1vcnktPlJlYWQoZ3BfcmVnc19hZGRy ZXNzLCBzaXplb2YodGhyZWFkX2NvbnRleHQpLCAmdGhyZWFkX2NvbnRleHQpKSB7Ci0rICAgIExP RyhFUlJPUikgPDwgIkNvdWxkbid0IHJlYWQgZ3BfcmVncyEiOwotKyAgICByZXR1cm4gZmFsc2U7 Ci0rICB9Ci0rCi0rICBMaW51eFZNQWRkcmVzcyBmcF9yZWdzX2FkZHJlc3MgPSBjb250ZXh0X2Fk ZHJlc3MgKwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0b2YoVUNv bnRleHQsIG1jb250ZXh0KSArCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv ZmZzZXRvZih0eXBlbmFtZSBUcmFpdHM6Ok1Db250ZXh0LCBmcF9yZWdzKTsKLSsKLSsgIHR5cGVu YW1lIFRyYWl0czo6U2lnbmFsRmxvYXRDb250ZXh0IGZwX2NvbnRleHQ7Ci0rICBpZiAoIW1lbW9y eS0+UmVhZChmcF9yZWdzX2FkZHJlc3MsIHNpemVvZihmcF9jb250ZXh0KSwgJmZwX2NvbnRleHQp KSB7Ci0rICAgIExPRyhFUlJPUikgPDwgIkNvdWxkbid0IHJlYWQgZnBfcmVncyEiOwotKyAgICBy ZXR1cm4gZmFsc2U7Ci0rICB9Ci0rCi0rICBMaW51eFZNQWRkcmVzcyB2X3JlZ3NfcHRyX2FkZHJl c3MgPSBjb250ZXh0X2FkZHJlc3MgKwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBvZmZzZXRvZihVQ29udGV4dCwgbWNvbnRleHQpICsKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgb2Zmc2V0b2YodHlwZW5hbWUgVHJhaXRzOjpNQ29udGV4dCwgdm14X3Jlc2Vy dmUpICsgODsKLSsKLSsgIHR5cGVuYW1lIFRyYWl0czo6U2lnbmFsVmVjdG9yQ29udGV4dCB2X2Nv bnRleHQ7Ci0rICBpZiAoIW1lbW9yeS0+UmVhZCh2X3JlZ3NfcHRyX2FkZHJlc3MsIHNpemVvZih2 X2NvbnRleHQpLCAmdl9jb250ZXh0KSkgewotKyAgICBMT0coRVJST1IpIDw8ICJDb3VsZG4ndCBy ZWFkIHZfcmVncyEiOwotKyAgICByZXR1cm4gZmFsc2U7Ci0rICB9Ci0rCi0rICBJbml0aWFsaXpl Q1BVQ29udGV4dFBQQzY0PENvbnRleHRUcmFpdHM2ND4odGhyZWFkX2NvbnRleHQsIGZwX2NvbnRl eHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZfY29udGV4dCwgZGVzdF9jb250ZXh0 KTsKLSsKLSsgIHJldHVybiB0cnVlOwotK30KLSsKLSt0ZW1wbGF0ZTw+Ci0rYm9vbCBFeGNlcHRp b25TbmFwc2hvdExpbnV4OjpSZWFkQ29udGV4dDxDb250ZXh0VHJhaXRzNjQ+KAotKyAgICBQcm9j ZXNzUmVhZGVyTGludXgqIHJlYWRlciwKLSsgICAgTGludXhWTUFkZHJlc3MgY29udGV4dF9hZGRy ZXNzKSB7Ci0rICBjb250ZXh0Xy5hcmNoaXRlY3R1cmUgPSBrQ1BVQXJjaGl0ZWN0dXJlUFBDNjQ7 Ci0rICBjb250ZXh0Xy5wcGM2NCA9ICZjb250ZXh0X3VuaW9uXy5wcGM2NDsKLSsKLSsgIHJldHVy biBpbnRlcm5hbDo6UmVhZENvbnRleHQ8Q29udGV4dFRyYWl0czY0PigKLSsgICAgICByZWFkZXIs IGNvbnRleHRfYWRkcmVzcywgY29udGV4dF8ucHBjNjQpOwotK30KLSsKLSt0ZW1wbGF0ZTw+Ci0r Ym9vbCBFeGNlcHRpb25TbmFwc2hvdExpbnV4OjpSZWFkQ29udGV4dDxDb250ZXh0VHJhaXRzMzI+ KAotKyAgICBQcm9jZXNzUmVhZGVyTGludXgqIHJlYWRlciwKLSsgICAgTGludXhWTUFkZHJlc3Mg Y29udGV4dF9hZGRyZXNzKSB7Ci0rICAvLyBQUEM2NCBpcyA2NC1iaXQKLSsgIHJldHVybiBmYWxz ZTsKLSt9Ci0rCi0gI2VuZGlmICAvLyBBUkNIX0NQVV9YODZfRkFNSUxZCi0gCi0gYm9vbCBFeGNl cHRpb25TbmFwc2hvdExpbnV4OjpJbml0aWFsaXplKFByb2Nlc3NSZWFkZXJMaW51eCogcHJvY2Vz c19yZWFkZXIsCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2V4Y2VwdGlvbl9zbmFwc2hvdF9s aW51eC5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2V4Y2VwdGlvbl9zbmFwc2hvdF9saW51 eC5oCi1AQCAtODQsNiArODQsOCBAQCBjbGFzcyBFeGNlcHRpb25TbmFwc2hvdExpbnV4IGZpbmFs IDogcHVibGljIEV4Y2VwdGlvblNuYXBzaG90IHsKLSAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01J UFNfRkFNSUxZKQotICAgICBDUFVDb250ZXh0TUlQUyBtaXBzZWw7Ci0gICAgIENQVUNvbnRleHRN SVBTNjQgbWlwczY0OwotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKyAg ICBDUFVDb250ZXh0UFBDNjQgcHBjNjQ7Ci0gI2VuZGlmCi0gICB9IGNvbnRleHRfdW5pb25fOwot ICAgQ1BVQ29udGV4dCBjb250ZXh0XzsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvZXhjZXB0 aW9uX3NuYXBzaG90X2xpbnV4X3Rlc3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvZXhj ZXB0aW9uX3NuYXBzaG90X2xpbnV4X3Rlc3QuY2MKLUBAIC0yOTYsNyArMjk2LDI4IEBAIHZvaWQg RXhwZWN0Q29udGV4dChjb25zdCBDUFVDb250ZXh0JiBhY3R1YWwsIGNvbnN0IE5hdGl2ZUNQVUNv bnRleHQmIGV4cGVjdGVkKSB7Ci0gICAgICAgICAgICAgMCk7Ci0gI3VuZGVmIENQVV9BUkNIX05B TUUKLSB9Ci0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0rdXNpbmcgTmF0 aXZlQ1BVQ29udGV4dCA9IHVjb250ZXh0X3Q7Ci0rCi0rdm9pZCBJbml0aWFsaXplQ29udGV4dChO YXRpdmVDUFVDb250ZXh0KiBjb250ZXh0KSB7Ci0rICBmb3IgKHNpemVfdCByZWcgPSAwOyByZWcg PCAzMjsgKytyZWcpIHsKLSsgICAgY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tyZWddID0g cmVnOwotKyAgfQotKwotKyAgbWVtc2V0KCZjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzLCA0 NCwKLSsgICAgICBzaXplb2YoY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVncykpOwotK30KLSAK LSt2b2lkIEV4cGVjdENvbnRleHQoY29uc3QgQ1BVQ29udGV4dCYgYWN0dWFsLCBjb25zdCBOYXRp dmVDUFVDb250ZXh0JiBleHBlY3RlZCkgewotKyAgRVhQRUNUX0VRKGFjdHVhbC5hcmNoaXRlY3R1 cmUsIGtDUFVBcmNoaXRlY3R1cmVQUEM2NCk7Ci0rCi0rICBmb3IgKHNpemVfdCByZWcgPSAwOyBy ZWcgPCAzMjsgKytyZWcpIHsKLSsgICAgRVhQRUNUX0VRKGFjdHVhbC5wcGM2NC0+cmVnc1tyZWdd LCBleHBlY3RlZC51Y19tY29udGV4dC5ncF9yZWdzW3JlZ10pOwotKyAgfQotKwotKyAgRVhQRUNU X0VRKG1lbWNtcChhY3R1YWwucHBjNjQtPmZwcmVncywgZXhwZWN0ZWQudWNfbWNvbnRleHQuZnBf cmVncywKLSsgICAgICAgICAgICBzaXplb2YoYWN0dWFsLnBwYzY0LT5mcHJlZ3MpKSwgMCk7Ci0r fQotICNlbHNlCi0gI2Vycm9yIFBvcnQuCi0gI2VuZGlmCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xp bnV4L3Byb2Nlc3NfcmVhZGVyX2xpbnV4LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3By b2Nlc3NfcmVhZGVyX2xpbnV4LmNjCi1AQCAtMTA4LDYgKzEwOCw4IEBAIHZvaWQgUHJvY2Vzc1Jl YWRlckxpbnV4OjpUaHJlYWQ6OkluaXRpYWxpemVTdGFjayhQcm9jZXNzUmVhZGVyTGludXgqIHJl YWRlcikgewotICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCi0gICBzdGFja19w b2ludGVyID0gcmVhZGVyLT5JczY0Qml0KCkgPyB0aHJlYWRfaW5mby50aHJlYWRfY29udGV4dC50 NjQucmVnc1syOV0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRocmVh ZF9pbmZvLnRocmVhZF9jb250ZXh0LnQzMi5yZWdzWzI5XTsKLSsjZWxpZiBkZWZpbmVkKEFSQ0hf Q1BVX1BQQzY0X0ZBTUlMWSkKLSsgIHN0YWNrX3BvaW50ZXIgPSB0aHJlYWRfaW5mby50aHJlYWRf Y29udGV4dC50NjQuZ3ByWzFdOwotICNlbHNlCi0gI2Vycm9yIFBvcnQuCi0gI2VuZGlmCi0tLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2Ny YXNocGFkL3NuYXBzaG90L2xpbnV4L3Byb2Nlc3NfcmVhZGVyX2xpbnV4X3Rlc3QuY2MKLSsrKyBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jh c2hwYWQvc25hcHNob3QvbGludXgvcHJvY2Vzc19yZWFkZXJfbGludXhfdGVzdC5jYwotQEAgLTU5 MSw2ICs1OTEsOCBAQCBib29sIFdyaXRlVGVzdE1vZHVsZShjb25zdCBiYXNlOjpGaWxlUGF0aCYg bW9kdWxlX3BhdGgpIHsKLSAgIG1vZHVsZS5laGRyLmVfbWFjaGluZSA9IEVNX0FBUkNINjQ7Ci0g I2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTRUwpIHx8IGRlZmluZWQoQVJDSF9DUFVfTUlQUzY0 RUwpCi0gICBtb2R1bGUuZWhkci5lX21hY2hpbmUgPSBFTV9NSVBTOwotKyNlbGlmIGRlZmluZWQo QVJDSF9DUFVfUFBDNjQpCi0rICBtb2R1bGUuZWhkci5lX21hY2hpbmUgPSBFTV9QUEM2NDsKLSAj ZW5kaWYKLSAKLSAgIG1vZHVsZS5laGRyLmVfdmVyc2lvbiA9IEVWX0NVUlJFTlQ7Ci0tLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNo cGFkL3NuYXBzaG90L2xpbnV4L3NpZ25hbF9jb250ZXh0LmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3Qv bGludXgvc2lnbmFsX2NvbnRleHQuaAotQEAgLTQyMiw2ICs0MjIsODkgQEAgc3RhdGljX2Fzc2Vy dChvZmZzZXRvZihVQ29udGV4dDxDb250ZXh0VHJhaXRzNjQ+LCBtY29udGV4dC5mcHJlZ3MpID09 Ci0gICAgICAgICAgICAgICAiY29udGV4dCBvZmZzZXQgbWlzbWF0Y2giKTsKLSAjZW5kaWYKLSAK LSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsKLStzdHJ1Y3QgU2lnbmFs VGhyZWFkQ29udGV4dDY0IHsKLSsgIHVpbnQ2NF90IHJlZ3NbMzJdOwotKyAgdWludDY0X3Qgbmlw OwotKyAgdWludDY0X3QgbXNyOwotKyAgdWludDY0X3Qgb3JpZ19yMzsKLSsgIHVpbnQ2NF90IGN0 cjsKLSsgIHVpbnQ2NF90IGxuazsKLSsgIHVpbnQ2NF90IHhlcjsKLSsgIHVpbnQ2NF90IGNjcjsK LSsgIHVpbnQ2NF90IHNvZnRlOwotKyAgdWludDY0X3QgdHJhcDsKLSsgIHVpbnQ2NF90IGRhcjsK LSsgIHVpbnQ2NF90IGRzaXNyOwotKyAgdWludDY0X3QgcmVzdWx0OwotKyAgdWludDY0X3QgZHNj cjsKLSsgIHVpbnQ2NF90IGZwcjBbM107Ci0rfTsKLSsKLStzdHJ1Y3QgU2lnbmFsRmxvYXRDb250 ZXh0NjQgewotKyAgZG91YmxlIHJlZ3NbMzJdOwotKyAgZG91YmxlIGZwc2NyOwotK307Ci0rCi0r c3RydWN0IFNpZ25hbFZlY3RvckNvbnRleHQ2NCB7Ci0rICBpbnQzMl90IHZycmVnc1szMl1bNF07 Ci0rICBzdHJ1Y3QgewotKyAgICBpbnQzMl90IF9fcGFkWzNdOwotKyAgICBpbnQzMl90IHZzY3Jf d29yZDsKLSsgIH0gdnNjcjsKLSsgIGludDMyX3QgdnJzYXZlOwotKyAgaW50MzJfdCBfX3BhZFsz XTsKLSt9IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKDE2KSkpOwotKwotKwotKyNwcmFnbWEg cGFjayhwb3ApCi0rc3RydWN0IE1Db250ZXh0NjQgewotKyAgdWludDY0X3QgcmVzZXJ2ZWRbNF07 Ci0rICBpbnQzMl90IHNpZ25hbDsKLSsgIGludDMyX3QgX19wYWQwOwotKyAgdWludDY0X3QgaGFu ZGxlcjsKLSsgIHVpbnQ2NF90IG9sZG1hc2s7Ci0rICB1aW50NjRfdCBwdF9yZWdzX3B0cjsKLSsg IFNpZ25hbFRocmVhZENvbnRleHQ2NCBncF9yZWdzOwotKyAgU2lnbmFsRmxvYXRDb250ZXh0NjQg IGZwX3JlZ3M7Ci0rICBTaWduYWxWZWN0b3JDb250ZXh0NjQgKnZfcmVnczsKLSsgIGludDY0X3Qg dm14X3Jlc2VydmVbNjldOwotK307Ci0rCi0rc3RydWN0IENvbnRleHRUcmFpdHM2NCA6IHB1Ymxp YyBUcmFpdHM2NCB7Ci0rICB1c2luZyBNQ29udGV4dCA9IE1Db250ZXh0NjQ7Ci0rICB1c2luZyBT aWduYWxUaHJlYWRDb250ZXh0ID0gU2lnbmFsVGhyZWFkQ29udGV4dDY0OwotKyAgdXNpbmcgU2ln bmFsRmxvYXRDb250ZXh0ID0gU2lnbmFsRmxvYXRDb250ZXh0NjQ7Ci0rICB1c2luZyBTaWduYWxW ZWN0b3JDb250ZXh0ID0gU2lnbmFsVmVjdG9yQ29udGV4dDY0OwotKyAgdXNpbmcgQ1BVQ29udGV4 dCA9IENQVUNvbnRleHRQUEM2NDsKLSt9OwotKwotK3N0cnVjdCBDb250ZXh0VHJhaXRzMzIgOiBw dWJsaWMgVHJhaXRzMzIge307Ci0rCi0rc3RydWN0IFVDb250ZXh0IHsKLSsgIHVpbnQ2NF90IGZs YWdzOwotKyAgdWludDY0X3QgbGluazsKLSsgIFNpZ25hbFN0YWNrPENvbnRleHRUcmFpdHM2ND4g c3RhY2s7Ci0rICBTaWdzZXQ8Q29udGV4dFRyYWl0czY0PiBzaWdtYXNrOwotKyAgTUNvbnRleHQ2 NCBtY29udGV4dDsKLSt9OwotKyNwcmFnbWEgcGFjayhwdXNoLCAxKQotKwotK3N0YXRpY19hc3Nl cnQoc2l6ZW9mKFVDb250ZXh0KSA9PSBzaXplb2YodWNvbnRleHRfdCksCi0rICAgICAgICAgICAg ICAidWNvbnRleHRfdCBzaXplIG1pc21hdGNoIik7Ci0rc3RhdGljX2Fzc2VydChzaXplb2YoTUNv bnRleHQ2NCkgPT0gc2l6ZW9mKG1jb250ZXh0X3QpLAotKyAgICAgICAgICAgICAgIm1jb250ZXh0 X3Qgc2l6ZSBtaXNtYXRjaCIpOwotK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFNpZ25hbFRocmVhZENv bnRleHQ2NCkgPT0gc2l6ZW9mKGdyZWdzZXRfdCksCi0rICAgICAgICAgICAgICAiZ3JlZ3NldF90 IHNpemUgbWlzbWF0Y2giKTsKLStzdGF0aWNfYXNzZXJ0KHNpemVvZihTaWduYWxGbG9hdENvbnRl eHQ2NCkgPT0gc2l6ZW9mKGZwcmVnc2V0X3QpLAotKyAgICAgICAgICAgICAgImZwcmVnc2V0X3Qg c2l6ZSBtaXNtYXRjaCIpOwotK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFNpZ25hbFZlY3RvckNvbnRl eHQ2NCkgPT0gc2l6ZW9mKF9saWJjX3Zyc3RhdGUpLAotKyAgICAgICAgICAgICAgInZyc3RhdGUg c2l6ZSBtaXNtYXRjaCIpOwotK3N0YXRpY19hc3NlcnQob2Zmc2V0b2YoVUNvbnRleHQsIG1jb250 ZXh0KSA9PQotKyAgICAgICAgICAgICAgb2Zmc2V0b2YodWNvbnRleHRfdCwgdWNfbWNvbnRleHQp LCAibWNvbnRleHQgb2Zmc2V0IG1pc21hdGNoIik7Ci0rc3RhdGljX2Fzc2VydChvZmZzZXRvZihN Q29udGV4dDY0LCBncF9yZWdzKSA9PQotKyAgICAgICAgICAgICAgb2Zmc2V0b2YobWNvbnRleHRf dCwgZ3BfcmVncyksICJncF9yZWdzIG9mZnNldCBtaXNtYXRjaCIpOwotICNlbHNlCi0gI2Vycm9y IFBvcnQuCi0gI2VuZGlmICAvLyBBUkNIX0NQVV9YODZfRkFNSUxZCi0tLS0gcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBz aG90L2xpbnV4L3N5c3RlbV9zbmFwc2hvdF9saW51eC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9s aW51eC9zeXN0ZW1fc25hcHNob3RfbGludXguY2MKLUBAIC0yMDMsNiArMjAzLDggQEAgQ1BVQXJj aGl0ZWN0dXJlIFN5c3RlbVNuYXBzaG90TGludXg6OkdldENQVUFyY2hpdGVjdHVyZSgpIGNvbnN0 IHsKLSAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQotICAgcmV0dXJuIHByb2Nl c3NfcmVhZGVyXy0+SXM2NEJpdCgpID8ga0NQVUFyY2hpdGVjdHVyZU1JUFM2NEVMCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBrQ1BVQXJjaGl0ZWN0dXJlTUlQU0VMOwot KyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKyAgcmV0dXJuIGtDUFVBcmNo aXRlY3R1cmVQUEM2NDsKLSAjZWxzZQotICNlcnJvciBwb3J0IHRvIHlvdXIgYXJjaGl0ZWN0dXJl Ci0gI2VuZGlmCi1AQCAtMjE4LDYgKzIyMCw5IEBAIHVpbnQzMl90IFN5c3RlbVNuYXBzaG90TGlu dXg6OkNQVVJldmlzaW9uKCkgY29uc3QgewotICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU19G QU1JTFkpCi0gICAvLyBOb3QgaW1wbGVtZW50YWJsZSBvbiBNSVBTCi0gICByZXR1cm4gMDsKLSsj ZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsgIC8vIE5vdCB5ZXQgaW1wbGVt ZW50ZWQgb24gUFBDNjQKLSsgIHJldHVybiAwOwotICNlbHNlCi0gI2Vycm9yIHBvcnQgdG8geW91 ciBhcmNoaXRlY3R1cmUKLSAjZW5kaWYKLUBAIC0yMzgsNiArMjQzLDkgQEAgc3RkOjpzdHJpbmcg U3lzdGVtU25hcHNob3RMaW51eDo6Q1BVVmVuZG9yKCkgY29uc3QgewotICNlbGlmIGRlZmluZWQo QVJDSF9DUFVfTUlQU19GQU1JTFkpCi0gICAvLyBOb3QgaW1wbGVtZW50YWJsZSBvbiBNSVBTCi0g ICByZXR1cm4gc3RkOjpzdHJpbmcoKTsKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZB TUlMWSkKLSsgIC8vIE5vdCB5ZXQgaW1wbGVtZW50ZWQgb24gUFBDNjQKLSsgIHJldHVybiBzdGQ6 OnN0cmluZygpOwotICNlbHNlCi0gI2Vycm9yIHBvcnQgdG8geW91ciBhcmNoaXRlY3R1cmUKLSAj ZW5kaWYKLUBAIC0zNzEsNiArMzc5LDkgQEAgYm9vbCBTeXN0ZW1TbmFwc2hvdExpbnV4OjpOWEVu YWJsZWQoKSBjb25zdCB7Ci0gI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkKLSAg IC8vIE5vdCBpbXBsZW1lbnRhYmxlIG9uIE1JUFMKLSAgIHJldHVybiBmYWxzZTsKLSsjZWxpZiBk ZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsgIC8vIE5vdCB5ZXQgaW1wbGVtZW50ZWQg b24gUFBDNjQKLSsgIHJldHVybiBmYWxzZTsKLSAjZWxzZQotICNlcnJvciBQb3J0LgotICNlbmRp ZiAgLy8gQVJDSF9DUFVfWDg2X0ZBTUlMWQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC90aHJl YWRfc25hcHNob3RfbGludXguY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvdGhyZWFkX3Nu YXBzaG90X2xpbnV4LmNjCi1AQCAtMTg2LDYgKzE4NiwxNCBAQCBib29sIFRocmVhZFNuYXBzaG90 TGludXg6OkluaXRpYWxpemUoUHJvY2Vzc1JlYWRlckxpbnV4KiBwcm9jZXNzX3JlYWRlciwKLSAg ICAgICAgIHRocmVhZC50aHJlYWRfaW5mby5mbG9hdF9jb250ZXh0LmYzMiwKLSAgICAgICAgIGNv bnRleHRfLm1pcHNlbCk7Ci0gICB9Ci0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1J TFkpCi0rICBjb250ZXh0Xy5hcmNoaXRlY3R1cmUgPSBrQ1BVQXJjaGl0ZWN0dXJlUFBDNjQ7Ci0r ICBjb250ZXh0Xy5wcGM2NCA9ICZjb250ZXh0X3VuaW9uXy5wcGM2NDsKLSsgIEluaXRpYWxpemVD UFVDb250ZXh0UFBDNjQ8Q29udGV4dFRyYWl0czY0PigKLSsgICAgICB0aHJlYWQudGhyZWFkX2lu Zm8udGhyZWFkX2NvbnRleHQudDY0LAotKyAgICAgIHRocmVhZC50aHJlYWRfaW5mby5mbG9hdF9j b250ZXh0LmY2NCwKLSsgICAgICB0aHJlYWQudGhyZWFkX2luZm8udmVjdG9yX2NvbnRleHQudjY0 LAotKyAgICAgIGNvbnRleHRfLnBwYzY0KTsKLSAjZWxzZQotICNlcnJvciBQb3J0LgotICNlbmRp ZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFz aHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC90aHJlYWRfc25hcHNob3RfbGludXguaAotKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9j cmFzaHBhZC9zbmFwc2hvdC9saW51eC90aHJlYWRfc25hcHNob3RfbGludXguaAotQEAgLTY4LDYg KzY4LDggQEAgY2xhc3MgVGhyZWFkU25hcHNob3RMaW51eCBmaW5hbCA6IHB1YmxpYyBUaHJlYWRT bmFwc2hvdCB7Ci0gI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkKLSAgICAgQ1BV Q29udGV4dE1JUFMgbWlwc2VsOwotICAgICBDUFVDb250ZXh0TUlQUzY0IG1pcHM2NDsKLSsjZWxp ZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsgICAgQ1BVQ29udGV4dFBQQzY0IHBw YzY0OwotICNlbHNlCi0gI2Vycm9yIFBvcnQuCi0gI2VuZGlmICAvLyBBUkNIX0NQVV9YODZfRkFN SUxZCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Ny YXNocGFkL2NyYXNocGFkL3V0aWwvbGludXgvYXV4aWxpYXJ5X3ZlY3Rvci5jYwotKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBh ZC91dGlsL2xpbnV4L2F1eGlsaWFyeV92ZWN0b3IuY2MKLUBAIC01Niw2ICs1NiwxMSBAQCBib29s IEF1eGlsaWFyeVZlY3Rvcjo6UmVhZChQdHJhY2VDb25uZWN0aW9uKiBjb25uZWN0aW9uKSB7Ci0g ICAgIGlmICh0eXBlID09IEFUX0lHTk9SRSkgewotICAgICAgIGNvbnRpbnVlOwotICAgICB9Ci0r I2lmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKyAgICBpZiAodHlwZSA9PSBBVF9J R05PUkVQUEMpIHsKLSsgICAgICBjb250aW51ZTsKLSsgICAgfQotKyNlbmRpZgotICAgICBpZiAo IU1hcEluc2VydE9yUmVwbGFjZSgmdmFsdWVzXywgdHlwZSwgdmFsdWUsIG51bGxwdHIpKSB7Ci0g ICAgICAgTE9HKEVSUk9SKSA8PCAiZHVwbGljYXRlIGF1eHYgZW50cnkiOwotICAgICAgIHJldHVy biBmYWxzZTsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9saW51eC9wdHJhY2VfYnJva2VyLmNjCi0rKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNo cGFkL3V0aWwvbGludXgvcHRyYWNlX2Jyb2tlci5jYwotQEAgLTkzLDggKzkzLDggQEAgaW50IFB0 cmFjZUJyb2tlcjo6UnVuKCkgewotIH0KLSAKLSBib29sIFB0cmFjZUJyb2tlcjo6QWxsb2NhdGVB dHRhY2htZW50cygpIHsKLS0gIGNvbnN0ZXhwciBzaXplX3QgcGFnZV9zaXplID0gNDA5NjsKLS0g IGNvbnN0ZXhwciBzaXplX3QgYWxsb2Nfc2l6ZSA9Ci0rICBzdGF0aWMgc2l6ZV90IHBhZ2Vfc2l6 ZSA9IGdldHBhZ2VzaXplKCk7Ci0rICBzaXplX3QgYWxsb2Nfc2l6ZSA9Ci0gICAgICAgKHNpemVv ZihTY29wZWRQdHJhY2VBdHRhY2gpICsgcGFnZV9zaXplIC0gMSkgJiB+KHBhZ2Vfc2l6ZSAtIDEp OwotICAgdm9pZCogYWxsb2MgPSBzYnJrKGFsbG9jX3NpemUpOwotICAgaWYgKHJlaW50ZXJwcmV0 X2Nhc3Q8aW50cHRyX3Q+KGFsbG9jKSA9PSAtMSkgewotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL2xpbnV4L3B0 cmFjZXIuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9saW51eC9wdHJhY2VyLmNjCi1AQCAtMzk0LDYgKzM5 NCw2NCBAQCBib29sIEdldFRocmVhZEFyZWE2NChwaWRfdCB0aWQsCi0gICByZXR1cm4gdHJ1ZTsK LSB9Ci0gCi0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0rLy8gUFBDNjQg aGFzIGhhZCBIQVZFX0FSQ0hfVFJBQ0VIT09LIHNldCBzaW5jZSAyLjYuMjcgKGV2ZW4gYmVmb3Jl IHg4NiBoYWQgaXQpLgotKy8vIFRoYXQgbWVhbnMgd2UgY2FuIHNpbXBseSB1c2UgUFRSQUNFX0dF VFJFR0VTRVQuCi0rCi0rdGVtcGxhdGUgPHR5cGVuYW1lIERlc3RpbmF0aW9uPgotK2Jvb2wgR2V0 UmVnaXN0ZXJTZXQocGlkX3QgdGlkLCBpbnQgc2V0LCBEZXN0aW5hdGlvbiogZGVzdCwgYm9vbCBj YW5fbG9nKSB7Ci0rICBpb3ZlYyBpb3Y7Ci0rICBpb3YuaW92X2Jhc2UgPSByZWludGVycHJldF9j YXN0PHZvaWQqPihkZXN0KTsKLSsgIGlvdi5pb3ZfbGVuID0gc2l6ZW9mKCpkZXN0KTsKLSsgIGlm IChwdHJhY2UoUFRSQUNFX0dFVFJFR1NFVCwgdGlkLCByZWludGVycHJldF9jYXN0PHZvaWQqPihz ZXQpLCAmaW92KSAhPSAwKSB7Ci0rICAgIFBMT0dfSUYoRVJST1IsIGNhbl9sb2cpIDw8ICJwdHJh Y2UiOwotKyAgICByZXR1cm4gZmFsc2U7Ci0rICB9Ci0rICBpZiAoaW92Lmlvdl9sZW4gIT0gc2l6 ZW9mKCpkZXN0KSkgewotKyAgICBMT0dfSUYoRVJST1IsIGNhbl9sb2cpIDw8ICJVbmV4cGVjdGVk IHJlZ2lzdGVycyBzaXplIjsKLSsgICAgcmV0dXJuIGZhbHNlOwotKyAgfQotKyAgcmV0dXJuIHRy dWU7Ci0rfQotKwotK2Jvb2wgR2V0VmVjdG9yUmVnaXN0ZXJzNjQocGlkX3QgdGlkLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgVmVjdG9yQ29udGV4dCogY29udGV4dCwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgIGJvb2wgY2FuX2xvZykgewotKyAgcmV0dXJuIEdldFJlZ2lzdGVyU2V0 KHRpZCwgTlRfUFBDX1ZNWCwgJmNvbnRleHQtPnY2NCwgY2FuX2xvZyk7Ci0rfQotKwotK2Jvb2wg R2V0RmxvYXRpbmdQb2ludFJlZ2lzdGVyczY0KHBpZF90IHRpZCwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBGbG9hdENvbnRleHQqIGNvbnRleHQsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYm9vbCBjYW5fbG9nKSB7Ci0rICByZXR1cm4gR2V0UmVnaXN0ZXJT ZXQodGlkLCBOVF9QUkZQUkVHLCAmY29udGV4dC0+ZjY0LCBjYW5fbG9nKTsKLSt9Ci0rCi0rYm9v bCBHZXRUaHJlYWRBcmVhNjQocGlkX3QgdGlkLAotKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IFRocmVhZENvbnRleHQmIGNvbnRleHQsCi0rICAgICAgICAgICAgICAgICAgICAgTGludXhWTUFk ZHJlc3MqIGFkZHJlc3MsCi0rICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5fbG9nKSB7Ci0r ICAvLyBQUEM2NCBkb2Vzbid0IGhhdmUgUFRSQUNFX0dFVF9USFJFQURfQVJFQSBzaW5jZSB0aGUg dGhyZWFkIHBvaW50ZXIKLSsgIC8vIGlzIHN0b3JlZCBpbiBHUFIgMTMuCi0rICBUaHJlYWRDb250 ZXh0Ojp0NjRfdCB0YzsKLSsgIGlmICghR2V0UmVnaXN0ZXJTZXQodGlkLCBOVF9QUlNUQVRVUywg JnRjLCBjYW5fbG9nKSkgewotKyAgICBMT0dfSUYoRVJST1IsIGNhbl9sb2cpIDw8ICJVbmFibGUg dG8gZ2V0IHRocmVhZCBwb2ludGVyISI7Ci0rICAgIHJldHVybiBmYWxzZTsKLSsgIH0KLSsKLSsg ICphZGRyZXNzID0gdGMuZ3ByWzEzXTsKLSsKLSsgIHJldHVybiB0cnVlOwotK30KLSsKLSsvLyBT dHVicyBmb3IgMzItYml0IGZ1bmN0aW9ucyBub3QgYXBwbGljYWJsZSBvbiBQUEM2NAotK2Jvb2wg R2V0RmxvYXRpbmdQb2ludFJlZ2lzdGVyczMyKHBpZF90IHRpZCwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBGbG9hdENvbnRleHQqIGNvbnRleHQsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYm9vbCBjYW5fbG9nKSB7IHJldHVybiBmYWxzZTsgfQotK2Jvb2wg R2V0VGhyZWFkQXJlYTMyKHBpZF90IHRpZCwKLSsgICAgICAgICAgICAgICAgICAgICBjb25zdCBU aHJlYWRDb250ZXh0ICZjb250ZXh0LAotKyAgICAgICAgICAgICAgICAgICAgIExpbnV4Vk1BZGRy ZXNzICphZGRyZXNzLAotKyAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuX2xvZykgeyByZXR1 cm4gZmFsc2U7IH0KLSsKLSAjZWxzZQotICNlcnJvciBQb3J0LgotICNlbmRpZiAgLy8gQVJDSF9D UFVfWDg2X0ZBTUlMWQotQEAgLTQ4Niw2ICs1NDQsOSBAQCBib29sIFB0cmFjZXI6OkdldFRocmVh ZEluZm8ocGlkX3QgdGlkLCBUaHJlYWRJbmZvKiBpbmZvKSB7Ci0gICBpZiAoaXNfNjRfYml0Xykg ewotICAgICByZXR1cm4gR2V0R2VuZXJhbFB1cnBvc2VSZWdpc3RlcnM2NCh0aWQsICZpbmZvLT50 aHJlYWRfY29udGV4dCwgY2FuX2xvZ18pICYmCi0gICAgICAgICAgICBHZXRGbG9hdGluZ1BvaW50 UmVnaXN0ZXJzNjQodGlkLCAmaW5mby0+ZmxvYXRfY29udGV4dCwgY2FuX2xvZ18pICYmCi0rI2lm IGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKyAgICAgICAgICAgR2V0VmVjdG9yUmVn aXN0ZXJzNjQodGlkLCAmaW5mby0+dmVjdG9yX2NvbnRleHQsIGNhbl9sb2dfKSAmJgotKyNlbmRp ZgotICAgICAgICAgICAgR2V0VGhyZWFkQXJlYTY0KHRpZCwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbmZvLT50aHJlYWRfY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmaW5mby0+dGhyZWFkX3NwZWNpZmljX2RhdGFfYWRkcmVzcywKLS0tLSBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9s aW51eC90aHJlYWRfaW5mby5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGludXgvdGhyZWFkX2luZm8uaAot QEAgLTI4LDYgKzI4LDEwIEBACi0gI2luY2x1ZGUgPGFuZHJvaWQvYXBpLWxldmVsLmg+Ci0gI2Vu ZGlmCi0gCi0rI2lmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKyNpbmNsdWRlIDxz eXMvdWNvbnRleHQuaD4KLSsjZW5kaWYKLSsKLSBuYW1lc3BhY2UgY3Jhc2hwYWQgewotIAotIC8v ISBcYnJpZWYgVGhlIHNldCBvZiBnZW5lcmFsIHB1cnBvc2UgcmVnaXN0ZXJzIGZvciBhbiBhcmNo aXRlY3R1cmUgZmFtaWx5LgotQEAgLTc5LDYgKzgzLDggQEAgdW5pb24gVGhyZWFkQ29udGV4dCB7 Ci0gICAgIHVpbnQzMl90IGNwMF9zdGF0dXM7Ci0gICAgIHVpbnQzMl90IGNwMF9jYXVzZTsKLSAg ICAgdWludDMyX3QgcGFkZGluZzFfOwotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFN SUxZKQotKyAgICAvLyBQUEM2NCBpcyA2NC1iaXQKLSAjZWxzZQotICNlcnJvciBQb3J0LgotICNl bmRpZiAgLy8gQVJDSF9DUFVfWDg2X0ZBTUlMWQotQEAgLTEzMiw2ICsxMzgsMjEgQEAgdW5pb24g VGhyZWFkQ29udGV4dCB7Ci0gICAgIHVpbnQ2NF90IGNwMF9iYWR2YWRkcjsKLSAgICAgdWludDY0 X3QgY3AwX3N0YXR1czsKLSAgICAgdWludDY0X3QgY3AwX2NhdXNlOwotKyNlbGlmIGRlZmluZWQo QVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKyAgICAvLyBSZWZsZWN0cyBzdHJ1Y3QgcHRfcmVncyBp biBhc20vcHRyYWNlLmguCi0rICAgIHVpbnQ2NF90IGdwclszMl07Ci0rICAgIHVpbnQ2NF90IG5p cDsKLSsgICAgdWludDY0X3QgbXNyOwotKyAgICB1aW50NjRfdCBvcmlnX2dwcjM7Ci0rICAgIHVp bnQ2NF90IGN0cjsKLSsgICAgdWludDY0X3QgbG5rOwotKyAgICB1aW50NjRfdCB4ZXI7Ci0rICAg IHVpbnQ2NF90IGNjcjsKLSsgICAgdWludDY0X3Qgc29mdGU7Ci0rICAgIHVpbnQ2NF90IHRyYXA7 Ci0rICAgIHVpbnQ2NF90IGRhcjsKLSsgICAgdWludDY0X3QgZHNpc3I7Ci0rICAgIHVpbnQ2NF90 IHJlc3VsdDsKLSAjZWxzZQotICNlcnJvciBQb3J0LgotICNlbmRpZiAgLy8gQVJDSF9DUFVfWDg2 X0ZBTUlMWQotQEAgLTE0Myw2ICsxNjQsOCBAQCB1bmlvbiBUaHJlYWRDb250ZXh0IHsKLSAgIHVz aW5nIE5hdGl2ZVRocmVhZENvbnRleHQgPSB1c2VyX3JlZ3M7Ci0gI2VsaWYgZGVmaW5lZChBUkNI X0NQVV9NSVBTX0ZBTUlMWSkKLSAvLyBObyBhcHByb3ByaWF0ZSBOYXRpdmVUaHJlYWRzQ29udGV4 dCB0eXBlIGF2YWlsYWJsZSBmb3IgTUlQUwotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRf RkFNSUxZKQotKyAgdXNpbmcgTmF0aXZlVGhyZWFkQ29udGV4dCA9IHN0cnVjdCBwdF9yZWdzOwot ICNlbHNlCi0gI2Vycm9yIFBvcnQuCi0gI2VuZGlmICAvLyBBUkNIX0NQVV9YODZfRkFNSUxZIHx8 IEFSQ0hfQ1BVX0FSTTY0Ci1AQCAtMjE4LDYgKzI0MSw5IEBAIHVuaW9uIEZsb2F0Q29udGV4dCB7 Ci0gICAgIH0gZnByZWdzWzMyXTsKLSAgICAgdWludDMyX3QgZnBjc3I7Ci0gICAgIHVpbnQzMl90 IGZwdV9pZDsKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsgICAgLy8g Q3Jhc2hwYWQncyBQUEMgc3VwcG9ydCBpcyA2NC1iaXQgb25seSwgc28gdGhpcwotKyAgICAvLyAz MmJpdC1vbmx5IHN0cnVjdCBpcyBkZWNsYXJlZCBhcyBlbXB0eS4KLSAjZWxzZQotICNlcnJvciBQ b3J0LgotICNlbmRpZiAgLy8gQVJDSF9DUFVfWDg2X0ZBTUlMWQotQEAgLTI1Miw2ICsyNzgsMTAg QEAgdW5pb24gRmxvYXRDb250ZXh0IHsKLSAgICAgZG91YmxlIGZwcmVnc1szMl07Ci0gICAgIHVp bnQzMl90IGZwY3NyOwotICAgICB1aW50MzJfdCBmcHVfaWQ7Ci0rI2VsaWYgZGVmaW5lZChBUkNI X0NQVV9QUEM2NF9GQU1JTFkpCi0rICAgIC8vIFJlZmxlY3RzIGZwcmVnc2V0X3QgaW4gc3lzL3Vj b250ZXh0LmgKLSsgICAgZG91YmxlIGZwcmVnc1szMl07Ci0rICAgIGRvdWJsZSBmcHNjcjsKLSAj ZWxzZQotICNlcnJvciBQb3J0LgotICNlbmRpZiAgLy8gQVJDSF9DUFVfWDg2X0ZBTUlMWQotQEAg LTI4MCw2ICszMTAsOCBAQCB1bmlvbiBGbG9hdENvbnRleHQgewotICAgc3RhdGljX2Fzc2VydChz aXplb2YoZjY0KSA9PSBzaXplb2YodXNlcl9mcHNpbWRfc3RydWN0KSwgIlNpemUgbWlzbWF0Y2gi KTsKLSAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQotIC8vIE5vIGFwcHJvcHJp YXRlIGZsb2F0aW5nIHBvaW50IGNvbnRleHQgbmF0aXZlIHR5cGUgZm9yIGF2YWlsYWJsZSBNSVBT LgotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKyAgc3RhdGljX2Fzc2Vy dChzaXplb2YoZjY0KSA9PSBzaXplb2YoZnByZWdzZXRfdCksICJTaXplIG1pc21hdGNoIik7Ci0g I2Vsc2UKLSAjZXJyb3IgUG9ydC4KLSAjZW5kaWYgIC8vIEFSQ0hfQ1BVX1g4NgotQEAgLTI4Nyw2 ICszMTksMjYgQEAgdW5pb24gRmxvYXRDb250ZXh0IHsKLSBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf c3RhbmRhcmRfbGF5b3V0PEZsb2F0Q29udGV4dD46OnZhbHVlLAotICAgICAgICAgICAgICAgIk5v dCBzdGFuZGFyZCBsYXlvdXQiKTsKLSAKLSsvLyEgXGJyaWVmIFRoZSB2ZWN0b3IgcmVnaXN0ZXJz IHVzZWQgZm9yIGFuIGFyY2hpdGVjdHVyZSBmYW1pbHkKLSt1bmlvbiBWZWN0b3JDb250ZXh0IHsK LSsgIHN0cnVjdCB2MzJfdCB7fSB2MzI7Ci0rI2lmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFN SUxZKQotKyAgX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oMTYpKSkgLy8gVmVjdG9yIGNvbnRl eHQgbXVzdCBiZSBkb3VibGV3b3JkIGFsaWduZWQuCi0rI2VuZGlmCi0rICBzdHJ1Y3QgdjY0X3Qg ewotKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsgICAgLy8gUmVmbGVjdHMg dnJyZWdzZXRfdCBpbiBzeXMvdWNvbnRleHQuaAotKyAgICB1aW50MzJfdCB2cnJlZ3NbMzJdWzRd OwotKyAgICBzdHJ1Y3QgewotKyAgICAgIHVpbnQzMl90IF9fcGFkWzNdOwotKyAgICAgIHVpbnQz Ml90IHZzY3Jfd29yZDsKLSsgICAgfSB2c2NyOwotKyAgICB1aW50MzJfdCB2cnNhdmU7Ci0rICAg IHVpbnQzMl90IF9fcGFkWzNdOwotKyNlbmRpZgotKyAgfSB2NjQ7Ci0rfTsKLSsKLSAvLyEgXGJy aWVmIEEgY29sbGVjdGlvbiBvZiBgcHRyYWNlYC1hYmxlIGluZm9ybWF0aW9uIGFib3V0IGEgdGhy ZWFkLgotIHN0cnVjdCBUaHJlYWRJbmZvIHsKLSAgIFRocmVhZEluZm8oKTsKLUBAIC0yOTgsNiAr MzUwLDkgQEAgc3RydWN0IFRocmVhZEluZm8gewotICAgLy8hIFxicmllZiBUaGUgZmxvYXRpbmcg cG9pbnQgcmVnaXN0ZXJzIGZvciB0aGUgdGhyZWFkLgotICAgRmxvYXRDb250ZXh0IGZsb2F0X2Nv bnRleHQ7Ci0gCi0rICAvLyEgXGJyaWVmIChPcHRpb25hbCkgVGhlIHZlY3RvciByZWdpc3RlcnMg dXNlZCBmb3IgdGhlIHRocmVhZC4KLSsgIFZlY3RvckNvbnRleHQgdmVjdG9yX2NvbnRleHQ7Ci0r Ci0gICAvLyEgXGJyaWVmIFRoZSB0aHJlYWQtbG9jYWwgc3RvcmFnZSBhZGRyZXNzIGZvciB0aGUg dGhyZWFkLgotICAgTGludXhWTUFkZHJlc3MgdGhyZWFkX3NwZWNpZmljX2RhdGFfYWRkcmVzczsK LSB9OwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9j cmFzaHBhZC9jcmFzaHBhZC91dGlsL21pc2MvY2FwdHVyZV9jb250ZXh0LmgKLSsrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQv dXRpbC9taXNjL2NhcHR1cmVfY29udGV4dC5oCi1AQCAtNjYsNiArNjYsNyBAQCB1c2luZyBOYXRp dmVDUFVDb250ZXh0ID0gdWNvbnRleHRfdDsKLSAvLyEgICAgIG1hY09TL0xpbnV4L0Z1Y2hzaWEg fCB4ODZfNjQgICAgICAgfCBgJSVyZGlgCi0gLy8hICAgICBMaW51eCAgICAgICAgICAgICAgIHwg QVJNL0FSTTY0ICAgIHwgYHIwYC9geDBgCi0gLy8hICAgICBMaW51eCAgICAgICAgICAgICAgIHwg TUlQUy9NSVBTNjQgIHwgYCRhMGAKLSsvLyEgICAgIExpbnV4ICAgICAgICAgICAgICAgfCBQUEM2 NCAgICAgICAgfCBgcjNgCi0gLy8hCi0gLy8hICAgICBBZGRpdGlvbmFsbHksIHRoZSB2YWx1ZSBg TFJgIG9uIEFSTS9BUk02NCB3aWxsIGJlIHRoZSByZXR1cm4gYWRkcmVzcyBvZgotIC8vISAgICAg dGhpcyBmdW5jdGlvbi4KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9taXNjL2NhcHR1cmVfY29udGV4dF9saW51 eC5TCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Ny YXNocGFkL2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHRfbGludXguUwotQEAgLTI4 LDcgKzI4LDcgQEAKLSAgIC5nbG9ibCBDQVBUVVJFQ09OVEVYVF9TWU1CT0wyCi0gI2lmIGRlZmlu ZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykKLSAgIC5iYWxpZ24gMTYsIDB4OTAK LS0jZWxpZiBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmlu ZWQoX19taXBzX18pCi0rI2VsaWYgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2 NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAu YmFsaWduIDQsIDB4MAotICNlbmRpZgotIAotQEAgLTQxOSw0ICs0MTksMjE0IEBAIENBUFRVUkVD T05URVhUX1NZTUJPTDI6Ci0gICBqciAkcmEKLSAKLSAgIC5zZXQgYXQKLSsjZWxpZiBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCi0rICAvLyBTdG9yZSByMC1yMzEKLSsgIHN0ZCAwLCAweGU4KDMpICAg Ly8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1swXQotKyAgc3RkIDEsIDB4ZjAoMykgICAv LyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzFdCi0rICBzdGQgMiwgMHhmOCgzKSAgIC8v IGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMl0KLSsgIC8vIG5vdGUgdGhhdCByMydzIG9y aWdpbmFsIHZhbHVlIHdhcyBsb3N0Ci0rICBzdGQgMywgMHgxMDAoMykgIC8vIGNvbnRleHQtPnVj X21jb250ZXh0LmdwX3JlZ3NbM10KLSsgIHN0ZCA0LCAweDEwOCgzKSAgLy8gY29udGV4dC0+dWNf bWNvbnRleHQuZ3BfcmVnc1s0XQotKyAgc3RkIDUsIDB4MTEwKDMpICAvLyBjb250ZXh0LT51Y19t Y29udGV4dC5ncF9yZWdzWzVdCi0rICBzdGQgNiwgMHgxMTgoMykgIC8vIGNvbnRleHQtPnVjX21j b250ZXh0LmdwX3JlZ3NbNl0KLSsgIHN0ZCA3LCAweDEyMCgzKSAgLy8gY29udGV4dC0+dWNfbWNv bnRleHQuZ3BfcmVnc1s3XQotKyAgc3RkIDgsIDB4MTI4KDMpICAvLyBjb250ZXh0LT51Y19tY29u dGV4dC5ncF9yZWdzWzhdCi0rICBzdGQgOSwgMHgxMzAoMykgIC8vIGNvbnRleHQtPnVjX21jb250 ZXh0LmdwX3JlZ3NbOV0KLSsgIHN0ZCAxMCwgMHgxMzgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1sxMF0KLSsgIHN0ZCAxMSwgMHgxNDAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1sxMV0KLSsgIHN0ZCAxMiwgMHgxNDgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1sxMl0KLSsgIHN0ZCAxMywgMHgxNTAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1sxM10KLSsgIHN0ZCAxNCwgMHgxNTgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1sxNF0KLSsgIHN0ZCAxNSwgMHgxNjAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1sxNV0KLSsgIHN0ZCAxNiwgMHgxNjgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1sxNl0KLSsgIHN0ZCAxNywgMHgxNzAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1sxN10KLSsgIHN0ZCAxOCwgMHgxNzgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1sxOF0KLSsgIHN0ZCAxOSwgMHgxODAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1sxOV0KLSsgIHN0ZCAyMCwgMHgxODgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1syMF0KLSsgIHN0ZCAyMSwgMHgxOTAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1syMV0KLSsgIHN0ZCAyMiwgMHgxOTgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1syMl0KLSsgIHN0ZCAyMywgMHgxYTAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1syM10KLSsgIHN0ZCAyNCwgMHgxYTgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1syNF0KLSsgIHN0ZCAyNSwgMHgxYjAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1syNV0KLSsgIHN0ZCAyNiwgMHgxYjgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1syNl0KLSsgIHN0ZCAyNywgMHgxYzAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1syN10KLSsgIHN0ZCAyOCwgMHgxYzgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1syOF0KLSsgIHN0ZCAyOSwgMHgxZDAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1syOV0KLSsgIHN0ZCAzMCwgMHgxZDgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1szMF0KLSsgIHN0ZCAzMSwgMHgxZTAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1szMV0KLSsKLSsgIC8vIEZvciBOSVAsIHdlIGNhbiB1c2UgdGhlIHZhbHVlIGlu IHRoZSBsaW5rIHJlZ2lzdGVyCi0rICBtZmxyIDAKLSsgIHN0ZCAwLCAweDFlOCgzKSAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX05JUF0KLSsKLSsgIC8vIENUUgotKyAgbWZjdHIg MAotKyAgc3RkIDAsIDB4MjAwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRf Q1RSXQotKwotKyAgLy8gRm9yIExOSywgd2UnbGwgdXNlIHRoZSBjYWxsZXIncyBMUiBzYXZlIGFy ZWEgKDIgc3RhY2sgZnJhbWVzIHVwKS4KLSsgIC8vIHI0IGNhbiBiZSB1c2VkIGFzIGEgc2NyYXRj aCByZWdpc3RlciBzaW5jZSBpdCBoYXMgYWxyZWFkeSBiZWVuIHNhdmVkLgotKyAgbGQgNCwgMCgx KQotKyAgbGQgNCwgMTYoNCkKLSsgIHN0ZCA0LCAweDIwOCgzKSAvLyBjb250ZXh0LT51Y19tY29u dGV4dC5ncF9yZWdzW1BUX0xOS10KLSsKLSsgIC8vIFhFUgotKyAgbWZ4ZXIgMAotKyAgc3RkIDAs IDB4MjEwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfWEVSXQotKwotKyAg Ly8gQ0NSCi0rICBtZmNyIDAKLSsgIHN0ZCAwLCAweDIxOCgzKSAvLyBjb250ZXh0LT51Y19tY29u dGV4dC5ncF9yZWdzW1BUX0NDUl0KLSsKLSsgIC8vIE1TUiwgb3JpZ19yMywgTVEsIFRSQVAsIERB UiwgRFNJU1IsIFJFU1VMVCwgRFNDUiwKLSsgIC8vIG5vdCB1c2VkIG9yIG5vdCByZWxldmFudCwg IHplcm8gdGhlbSBvdXQuCi0rICBsaSA0LCAwCi0rICBzdGQgNCwgMHgxZjAoMykgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9NU1JdCi0rICBzdGQgNCwgMHgxZjgoMykgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9PUklHX1IzXQotKyAgc3RkIDQsIDB4MjIwKDMp IC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfTVFdCi0rICBzdGQgNCwgMHgyMjgo MykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9UUkFQXQotKyAgc3RkIDQsIDB4 MjMwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfREFSXQotKyAgc3RkIDQs IDB4MjM4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfRFNJU1JdCi0rICBz dGQgNCwgMHgyNDAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9SRVNVTFRd Ci0rICBzdGQgNCwgMHgyNDgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9E U0NSXQotKwotKyAgLy8gVXBkYXRlIGNvbnRleHQtPnVjX21jb250ZXh0LnJlZ3MgdG8gcG9pbnQg dG8gZ3BfcmVncwotKyAgYWRkaSAwLCAzLCAweGU4Ci0rICBzdGQgMCwgMHhlMCgzKQotKwotKyAg Ly8gU2F2ZSBmbG9hdGluZyBwb2ludCByZWdpc3RlcnMgMC0zMQotKyAgc3RmZCAwLCAweDI2OCgz KSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1swXQotKyAgc3RmZCAxLCAweDI3MCgz KSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxXQotKyAgc3RmZCAyLCAweDI3OCgz KSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1syXQotKyAgc3RmZCAzLCAweDI4MCgz KSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1szXQotKyAgc3RmZCA0LCAweDI4OCgz KSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1s0XQotKyAgc3RmZCA1LCAweDI5MCgz KSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1s1XQotKyAgc3RmZCA2LCAweDI5OCgz KSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1s2XQotKyAgc3RmZCA3LCAweDJhMCgz KSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1s3XQotKyAgc3RmZCA4LCAweDJhOCgz KSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1s4XQotKyAgc3RmZCA5LCAweDJiMCgz KSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1s5XQotKyAgc3RmZCAxMCwgMHgyYjgo MykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxMF0KLSsgIHN0ZmQgMTEsIDB4MmMw KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMTFdCi0rICBzdGZkIDEyLCAweDJj OCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzEyXQotKyAgc3RmZCAxMywgMHgy ZDAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxM10KLSsgIHN0ZmQgMTQsIDB4 MmQ4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMTRdCi0rICBzdGZkIDE1LCAw eDJlMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzE1XQotKyAgc3RmZCAxNiwg MHgyZTgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxNl0KLSsgIHN0ZmQgMTcs IDB4MmYwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMTddCi0rICBzdGZkIDE4 LCAweDJmOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzE4XQotKyAgc3RmZCAx OSwgMHgzMDAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxOV0KLSsgIHN0ZmQg MjAsIDB4MzA4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMjBdCi0rICBzdGZk IDIxLCAweDMxMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzIxXQotKyAgc3Rm ZCAyMiwgMHgzMTgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1syMl0KLSsgIHN0 ZmQgMjMsIDB4MzIwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMjNdCi0rICBz dGZkIDI0LCAweDMyOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzI0XQotKyAg c3RmZCAyNSwgMHgzMzAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1syNV0KLSsg IHN0ZmQgMjYsIDB4MzM4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMjZdCi0r ICBzdGZkIDI3LCAweDM0MCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzI3XQot KyAgc3RmZCAyOCwgMHgzNDgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1syOF0K LSsgIHN0ZmQgMjksIDB4MzUwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMjld Ci0rICBzdGZkIDMwLCAweDM1OCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzMw XQotKyAgc3RmZCAzMSwgMHgzNjAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sz MV0KLSsKLSsgIC8vIEZQU0NSCi0rICBtZmZzIDAKLSsgIHN0ZmQgMCwgMHgzNjgoMykgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1szMl0KLSsKLSsgIC8vIFNhdmUgVk1YIFZlY3RvciBy ZWdpc3RlcnMKLSsgIC8vIFVwZGF0ZSByNCB0byBjb250YWluIHRoZSBiYXNlIGFkZHJlc3Mgb2Yg dm14X3Jlc2VydmUKLSsgIGFkZGkgNCwgMywgMHgzNzgKLSsgIC8vIEVuc3VyZSB0aGF0IGl0IGlz IHF1YWR3b3JkIGFsaWduZWQKLSsgIGFuZGkuIDUsIDQsIDB4RgotKyAgYmVxIDFmIC8vIE5vIGFs aWdubWVudCBpcyBuZWNlc3NhcnkKLSsgIC8vIEFkZHJlc3MgaXMgZG91Ymxld29yZCBhbGlnbmVk IGFuZCBub3QgcXVhZHdvcmQgYWxpZ25lZCwgYWRkIDgKLSsgIGFkZGkgNCwgNCwgOAotKwotKzE6 Ci0rICAvLyBTdG9yZSBWTVggcmVnaXN0ZXJzIDAtMzEKLSsgIC8vIHI0IHdpbGwgY29udGFpbiB0 aGUgYmFzZSBhZGRyZXNzCi0rICAvLyByNSB3aWxsIGNvbnRhaW4gdGhlIGluZGV4Ci0rICBsaSA1 LCAwCi0rICBzdHZ4IDAsIDQsIDUgICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2 ZVsoYWxpZ24pICsgMF0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMSwgNCwgNSAgIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxXQotKyAgYWRkaSA1LCA1 LCAxNgotKyAgc3R2eCAyLCA0LCA1ICAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2Vy dmVbKGFsaWduKSArIDJdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDMsIDQsIDUgICAvLyBj b250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgM10KLSsgIGFkZGkgNSwg NSwgMTYKLSsgIHN0dnggNCwgNCwgNSAgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNl cnZlWyhhbGlnbikgKyA0XQotKyAgYWRkaSA1LCA1LCAxNgotKyAgc3R2eCA1LCA0LCA1ICAgLy8g Y29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDVdCi0rICBhZGRpIDUs IDUsIDE2Ci0rICBzdHZ4IDYsIDQsIDUgICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVz ZXJ2ZVsoYWxpZ24pICsgNl0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggNywgNCwgNSAgIC8v IGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyA3XQotKyAgYWRkaSA1 LCA1LCAxNgotKyAgc3R2eCA4LCA0LCA1ICAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jl c2VydmVbKGFsaWduKSArIDhdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDksIDQsIDUgICAv LyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgOV0KLSsgIGFkZGkg NSwgNSwgMTYKLSsgIHN0dnggMTAsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9y ZXNlcnZlWyhhbGlnbikgKyAxMF0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMTEsIDQsIDUg IC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxMV0KLSsgIGFk ZGkgNSwgNSwgMTYKLSsgIHN0dnggMTIsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZt eF9yZXNlcnZlWyhhbGlnbikgKyAxMl0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMTMsIDQs IDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxM10KLSsg IGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMTQsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0 LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxNF0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMTUs IDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxNV0K LSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMTYsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250 ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxNl0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dngg MTcsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAx N10KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMTgsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21j b250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxOF0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0 dnggMTksIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikg KyAxOV0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMjAsIDQsIDUgIC8vIGNvbnRleHQtPnVj X21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyMF0KLSsgIGFkZGkgNSwgNSwgMTYKLSsg IHN0dnggMjEsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGln bikgKyAyMV0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMjIsIDQsIDUgIC8vIGNvbnRleHQt PnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyMl0KLSsgIGFkZGkgNSwgNSwgMTYK LSsgIHN0dnggMjMsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhh bGlnbikgKyAyM10KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMjQsIDQsIDUgIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyNF0KLSsgIGFkZGkgNSwgNSwg MTYKLSsgIHN0dnggMjUsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZl WyhhbGlnbikgKyAyNV0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMjYsIDQsIDUgIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyNl0KLSsgIGFkZGkgNSwg NSwgMTYKLSsgIHN0dnggMjcsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNl cnZlWyhhbGlnbikgKyAyN10KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMjgsIDQsIDUgIC8v IGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyOF0KLSsgIGFkZGkg NSwgNSwgMTYKLSsgIHN0dnggMjksIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9y ZXNlcnZlWyhhbGlnbikgKyAyOV0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMzAsIDQsIDUg IC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAzMF0KLSsgIGFk ZGkgNSwgNSwgMTYKLSsgIHN0dnggMzEsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZt eF9yZXNlcnZlWyhhbGlnbikgKyAzMV0KLSsgIGFkZGkgNSwgNSwgMTYKLSsKLSsgIC8vIFZTQ1IK LSsgIG1mdnNjciAwCi0rICBzdHZ4IDAsIDQsIDUKLSsgIGFkZGkgNSwgNSwgMTYKLSsKLSsgIC8v IFZSU0FWRQotKyAgbWZ2cnNhdmUgMAotKyAgc3R3eCAwLCA0LCA1Ci0rCi0rICAvLyBVcGRhdGUg Y29udGV4dC0+dWNfbWNvbnRleHQudl9yZWdzIHRvIHBvaW50IHRvIHZteF9yZXNlcnZlICsgYWxp Z25tZW50LgotKyAgc3RkIDQsIDB4MzcwKDMpCi0rCi0rICAvLyBaZXJvIG91dCBhbGwgdW51c2Vk IGZpZWxkcwotKyAgbGkgNCwgMAotKyAgc3RkIDQsIDB4YzgoMykgLy8gY29udGV4dC0+dWNfbWNv bnRleHQuc2lnbmFsCi0rICBzdGQgNCwgMHhkMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5o YW5kbGVyCi0rICBzdGQgNCwgMHhkOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5vbGRtYXNr Ci0rCi0rICBibHIKLSAjZW5kaWYgIC8vIF9faTM4Nl9fCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbWlzYy9j YXB0dXJlX2NvbnRleHRfdGVzdC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL21pc2MvY2FwdHVyZV9jb250 ZXh0X3Rlc3QuY2MKLUBAIC00OSw3ICs0OSw4IEBAIHZvaWQgVGVzdENhcHR1cmVDb250ZXh0KCkg ewotICAgLy8gcmVmZXJlbmNlIHByb2dyYW0gY291bnRlci4KLSAgIHVpbnRwdHJfdCBwYyA9IFBy b2dyYW1Db3VudGVyRnJvbUNvbnRleHQoY29udGV4dF8xKTsKLSAKLS0jaWYgIWRlZmluZWQoQURE UkVTU19TQU5JVElaRVIpICYmICFkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQotKyNpZiAh ZGVmaW5lZChBRERSRVNTX1NBTklUSVpFUikgJiYgIWRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1J TFkpICYmIFwKLSsgICAgIWRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotICAgLy8gQWRk cmVzc1Nhbml0aXplciBjYW4gY2F1c2UgZW5vdWdoIGNvZGUgYmxvYXQgdGhhdCB0aGUg4oCcbmVh cmJ54oCdIGNoZWNrIHdvdWxkCi0gICAvLyBsaWtlbHkgZmFpbC4KLSAgIGNvbnN0IHVpbnRwdHJf dCBrUmVmZXJlbmNlUEMgPQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL21pc2MvY2FwdHVyZV9jb250ZXh0X3Rl c3RfdXRpbF9saW51eC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL21pc2MvY2FwdHVyZV9jb250ZXh0X3Rl c3RfdXRpbF9saW51eC5jYwotQEAgLTM2LDYgKzM2LDggQEAgdm9pZCBTYW5pdHlDaGVja0NvbnRl eHQoY29uc3QgTmF0aXZlQ1BVQ29udGV4dCYgY29udGV4dCkgewotICAgRVhQRUNUX0VRKGNvbnRl eHQudWNfbWNvbnRleHQucmVnc1swXSwgRnJvbVBvaW50ZXJDYXN0PHVpbnRwdHJfdD4oJmNvbnRl eHQpKTsKLSAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQotICAgRVhQRUNUX0VR KGNvbnRleHQudWNfbWNvbnRleHQuZ3JlZ3NbNF0sIEZyb21Qb2ludGVyQ2FzdDx1aW50cHRyX3Q+ KCZjb250ZXh0KSk7Ci0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0rICBF WFBFQ1RfRVEoY29udGV4dC51Y19tY29udGV4dC5ncF9yZWdzWzNdLCBGcm9tUG9pbnRlckNhc3Q8 dWludHB0cl90PigmY29udGV4dCkpOwotICNlbmRpZgotIH0KLSAKLUBAIC01MCw2ICs1Miw4IEBA IHVpbnRwdHJfdCBQcm9ncmFtQ291bnRlckZyb21Db250ZXh0KGNvbnN0IE5hdGl2ZUNQVUNvbnRl eHQmIGNvbnRleHQpIHsKLSAgIHJldHVybiBjb250ZXh0LnVjX21jb250ZXh0LnBjOwotICNlbGlm IGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCi0gICByZXR1cm4gY29udGV4dC51Y19tY29u dGV4dC5wYzsKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsgIHJldHVy biBjb250ZXh0LnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfTklQXTsKLSAjZW5kaWYKLSB9Ci0gCi1A QCAtNjQsNiArNjgsOCBAQCB1aW50cHRyX3QgU3RhY2tQb2ludGVyRnJvbUNvbnRleHQoY29uc3Qg TmF0aXZlQ1BVQ29udGV4dCYgY29udGV4dCkgewotICAgcmV0dXJuIGNvbnRleHQudWNfbWNvbnRl eHQuc3A7Ci0gI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkKLSAgIHJldHVybiBj b250ZXh0LnVjX21jb250ZXh0LmdyZWdzWzI5XTsKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQ QzY0X0ZBTUlMWSkKLSsgIHJldHVybiBjb250ZXh0LnVjX21jb250ZXh0LmdwX3JlZ3NbMV07Ci0g I2VuZGlmCi0gfQotIAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL3Bvc2l4L3NpZ25hbHNfdGVzdC5jYwotKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9j cmFzaHBhZC91dGlsL3Bvc2l4L3NpZ25hbHNfdGVzdC5jYwotQEAgLTQ2LDEyICs0NiwxMiBAQCBi b29sIENhbkNhdXNlU2lnbmFsKGludCBzaWcpIHsKLSAgIHJldHVybiBzaWcgPT0gU0lHQUJSVCB8 fAotICAgICAgICAgIHNpZyA9PSBTSUdBTFJNIHx8Ci0gICAgICAgICAgc2lnID09IFNJR0JVUyB8 fAotLSNpZiAhZGVmaW5lZChBUkNIX0NQVV9BUk02NCkKLSsjaWYgIWRlZmluZWQoQVJDSF9DUFVf QVJNNjQpICYmICFkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQotICAgICAgICAgIHNpZyA9PSBTSUdG UEUgfHwKLS0jZW5kaWYgIC8vICFkZWZpbmVkKEFSQ0hfQ1BVX0FSTTY0KQotKyNlbmRpZiAgLy8g IWRlZmluZWQoQVJDSF9DUFVfQVJNNjQpICYmICFkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQotICNp ZiBkZWZpbmVkKEFSQ0hfQ1BVX1g4Nl9GQU1JTFkpIHx8IGRlZmluZWQoQVJDSF9DUFVfQVJNRUwp Ci0gICAgICAgICAgc2lnID09IFNJR0lMTCB8fAotLSNlbmRpZiAgLy8gZGVmaW5lZChBUkNIX0NQ VV9YODZfRkFNSUxZKSB8fCBkZWZpbmVkKEFSQ0hfQ1BVX0FSTUVMCi0rI2VuZGlmICAvLyBkZWZp bmVkKEFSQ0hfQ1BVX1g4Nl9GQU1JTFkpIHx8IGRlZmluZWQoQVJDSF9DUFVfQVJNRUwpCi0gICAg ICAgICAgc2lnID09IFNJR1BJUEUgfHwKLSAgICAgICAgICBzaWcgPT0gU0lHU0VHViB8fAotICNp ZiBkZWZpbmVkKE9TX01BQ09TWCkKLUBAIC0xMTcsOSArMTE3LDExIEBAIHZvaWQgQ2F1c2VTaWdu YWwoaW50IHNpZykgewotICAgICAgIGJyZWFrOwotICAgICB9Ci0gCi0tI2lmICFkZWZpbmVkKEFS Q0hfQ1BVX0FSTTY0KQotKyNpZiAhZGVmaW5lZChBUkNIX0NQVV9BUk02NCkgJiYgIWRlZmluZWQo QVJDSF9DUFVfUFBDNjQpCi0gICAgIC8vIEFSTTY0IGhhcyBoYXJkd2FyZSBpbnRlZ2VyIGRpdmlz aW9uIGluc3RydWN0aW9ucyB0aGF0IGRvbuKAmXQgZ2VuZXJhdGUgYQotICAgICAvLyB0cmFwIGZv ciBkaXZpZGUtYnktemVybywgc28gdGhpcyBkb2VzbuKAmXQgcHJvZHVjZSBTSUdGUEUuCi0rICAg IC8vCi0rICAgIC8vIFBQQzY0IGZpeGVkLXBvaW50IGRpdmlzaW9uIGJ5IHplcm8gYWxzbyBkb2Vz bid0IHByb2R1Y2UgYSBTSUdGUEUuCi0gICAgIGNhc2UgU0lHRlBFOiB7Ci0gICAgICAgLy8gT3B0 aW1pemF0aW9uIG1ha2VzIHRoaXMgdHJpY2t5LCBzbyBnZXQgemVybyBmcm9tIGEgc3lzdGVtIGNh bGwgbGlrZWx5Ci0gICAgICAgLy8gdG8gc3VjY2VlZCwgYW5kIHRyeSB0byBkbyBzb21ldGhpbmcg d2l0aCB0aGUgcmVzdWx0LgotQEAgLTEzNyw3ICsxMzksNyBAQCB2b2lkIENhdXNlU2lnbmFsKGlu dCBzaWcpIHsKLSAgICAgICBmc3RhdChxdW90aWVudCwgJnN0YXRfYnVmKTsKLSAgICAgICBicmVh azsKLSAgICAgfQotLSNlbmRpZiAgLy8gQVJDSF9DUFVfQVJNNjQKLSsjZW5kaWYgIC8vICFkZWZp bmVkKEFSQ0hfQ1BVX0FSTTY0KSAmJiAhZGVmaW5lZChBUkNIX0NQVV9QUEM2NCkKLSAKLSAjaWYg ZGVmaW5lZChBUkNIX0NQVV9YODZfRkFNSUxZKSB8fCBkZWZpbmVkKEFSQ0hfQ1BVX0FSTUVMKQot ICAgICBjYXNlIFNJR0lMTDogewotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9saWJwbmcvQlVJTEQuZ24KLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvbGlicG5nL0JVSUxELmduCi1AQCAtOTMsNiArOTMsMTEg QEAgc291cmNlX3NldCgibGlicG5nX3NvdXJjZXMiKSB7Ci0gICAgICAgIm1pcHMvZmlsdGVyX21z YV9pbnRyaW5zaWNzLmMiLAotICAgICAgICJtaXBzL21pcHNfaW5pdC5jIiwKLSAgICAgXQotKyAg fSBlbHNlIGlmIChjdXJyZW50X2NwdSA9PSAicHBjNjQiKSB7Ci0rICAgIHNvdXJjZXMgKz0gWwot KyAgICAgICJwb3dlcnBjL2ZpbHRlcl92c3hfaW50cmluc2ljcy5jIiwKLSsgICAgICAicG93ZXJw Yy9wb3dlcnBjX2luaXQuYyIsCi0rICAgIF0KLSAgIH0KLSAKLSAgIGNvbmZpZ3MgLT0gWyAiLy9i dWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQotbmV3IGZpbGUgbW9kZSAxMDA2 NDQKLS0tLSAvZGV2L251bGwKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvbGlicG5nL3Bvd2VycGMvZmlsdGVyX3ZzeF9pbnRyaW5zaWNzLmMKLUBAIC0w LDAgKzEsNzY3IEBACi0rLyogZmlsdGVyX3ZzeF9pbnRyaW5zaWNzLmMgLSBQb3dlclBDIG9wdGlt aXNlZCBmaWx0ZXIgZnVuY3Rpb25zCi0rICoKLSsgKiBDb3B5cmlnaHQgKGMpIDIwMTcgR2xlbm4g UmFuZGVycy1QZWhyc29uCi0rICogV3JpdHRlbiBieSBWYWRpbSBCYXJrb3YsIDIwMTcuCi0rICog TGFzdCBjaGFuZ2VkIGluIGxpYnBuZyAxLjYuMjkgW01hcmNoIDE2LCAyMDE3XQotKyAqCi0rICog VGhpcyBjb2RlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBsaWJwbmcgbGljZW5zZS4KLSsgKiBGb3Ig Y29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIHRoZSBkaXNjbGFpbWVyCi0r ICogYW5kIGxpY2Vuc2UgaW4gcG5nLmgKLSsgKi8KLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaW5j bHVkZSA8c3RkaW50Lmg+Ci0rI2luY2x1ZGUgIi4uL3BuZ3ByaXYuaCIKLSsKLSsjaWZkZWYgUE5H X1JFQURfU1VQUE9SVEVECi0rCi0rLyogVGhpcyBjb2RlIHJlcXVpcmVzIC1tYWx0aXZlYyBhbmQg LW12c3ggb24gdGhlIGNvbW1hbmQgbGluZTogKi8KLSsjaWYgUE5HX1BPV0VSUENfVlNYX0lNUExF TUVOVEFUSU9OID09IDEgLyogaW50cmluc2ljcyBjb2RlIGZyb20gcG5ncHJpdi5oICovCi0rCi0r I2luY2x1ZGUgPGFsdGl2ZWMuaD4KLSsKLSsjaWYgUE5HX1BPV0VSUENfVlNYX09QVCA+IDAKLSsK LSsjaWZuZGVmIF9fVlNYX18KLSsjICBlcnJvciAiVGhpcyBjb2RlIHJlcXVpcmVzIFZTWCBzdXBw b3J0IChQT1dFUjcgYW5kIGxhdGVyKS4gUGxlYXNlIHByb3ZpZGUgLW12c3ggY29tcGlsZXIgZmxh Zy4iCi0rI2VuZGlmCi0rCi0rI2RlZmluZSB2ZWNfbGRfdW5hbGlnbmVkKHZlYyxkYXRhKSB2ZWMg PSB2ZWNfdnN4X2xkKDAsZGF0YSkKLSsjZGVmaW5lIHZlY19zdF91bmFsaWduZWQodmVjLGRhdGEp IHZlY192c3hfc3QodmVjLDAsZGF0YSkKLSsKLSsKLSsvKiBGdW5jdGlvbnMgaW4gdGhpcyBmaWxl IGxvb2sgYXQgbW9zdCAzIHBpeGVscyAoYSxiLGMpIHRvIHByZWRpY3QgdGhlIDR0aCAoZCkuCi0r ICogVGhleSdyZSBwb3NpdGlvbmVkIGxpa2UgdGhpczoKLSsgKiAgICBwcmV2OiAgYyBiCi0rICog ICAgcm93OiAgIGEgZAotKyAqIFRoZSBTdWIgZmlsdGVyIHByZWRpY3RzIGQ9YSwgQXZnIGQ9KGEr YikvMiwgYW5kIFBhZXRoIHByZWRpY3RzIGQgdG8gYmUKLSsgKiB3aGljaGV2ZXIgb2YgYSwgYiwg b3IgYyBpcyBjbG9zZXN0IHRvIHA9YStiLWMuCi0rICogKCB0aGlzIGlzIHRha2VuIGZyb20gLi4v aW50ZWwvZmlsdGVyX3NzZTJfaW50cmluc2ljcy5jICkKLSsgKi8KLSsKLSsjZGVmaW5lIHZzeF9k ZWNsYXJlX2NvbW1vbl92YXJzKHJvd19pbmZvLHJvdyxwcmV2X3JvdyxvZmZzZXQpIFwKLSsgICBw bmdfYnl0ZSBpO1wKLSsgICBwbmdfYnl0ZXAgcnAgPSByb3cgKyBvZmZzZXQ7XAotKyAgIHBuZ19j b25zdF9ieXRlcCBwcCA9IHByZXZfcm93O1wKLSsgICBwbmdfc2l6ZV90IHVuYWxpZ25lZF90b3Ag PSAxNiAtICgoKHBuZ19zaXplX3QpcnAgJSAxNikpO1wKLSsgICBwbmdfc2l6ZV90IGlzdG9wO1wK LSsgICBpZih1bmFsaWduZWRfdG9wID09IDE2KVwKLSsgICAgICB1bmFsaWduZWRfdG9wID0gMDtc Ci0rICAgaXN0b3AgPSByb3dfaW5mby0+cm93Ynl0ZXM7XAotKyAgIGlmKCh1bmFsaWduZWRfdG9w IDwgaXN0b3ApKVwKLSsgICAgICBpc3RvcCAtPSB1bmFsaWduZWRfdG9wO1wKLSsgICBlbHNle1wK LSsgICAgICB1bmFsaWduZWRfdG9wID0gaXN0b3A7XAotKyAgICAgIGlzdG9wID0gMDtcCi0rICAg fQotKwotK3ZvaWQgcG5nX3JlYWRfZmlsdGVyX3Jvd191cF92c3gocG5nX3Jvd19pbmZvcCByb3df aW5mbywgcG5nX2J5dGVwIHJvdywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBu Z19jb25zdF9ieXRlcCBwcmV2X3JvdykKLSt7Ci0rICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcnBf dmVjOwotKyAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIHBwX3ZlYzsKLSsgICB2c3hfZGVjbGFyZV9j b21tb25fdmFycyhyb3dfaW5mbyxyb3cscHJldl9yb3csMCkKLSsKLSsgICAvKiBBbHRpdmVjIG9w ZXJhdGlvbnMgcmVxdWlyZSAxNi1ieXRlIGFsaWduZWQgZGF0YQotKyAgICAqIGJ1dCBpbnB1dCBj YW4gYmUgdW5hbGlnbmVkLiBTbyB3ZSBjYWxjdWxhdGUKLSsgICAgKiB1bmFsaWduZWQgcGFydCBh cyB1c3VhbC4KLSsgICAgKi8KLSsgICBmb3IgKGkgPSAwOyBpIDwgdW5hbGlnbmVkX3RvcDsgaSsr KQotKyAgIHsKLSsgICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsgKGludCkoKnBw KyspKSAmIDB4ZmYpOwotKyAgICAgIHJwKys7Ci0rICAgfQotKwotKyAgIC8qIFVzaW5nIFNJTUQg d2hpbGUgd2UgY2FuICovCi0rICAgd2hpbGUoIGlzdG9wID49IDE2ICkKLSsgICB7Ci0rICAgICAg cnBfdmVjID0gdmVjX2xkKDAscnApOwotKyAgICAgIHZlY19sZF91bmFsaWduZWQocHBfdmVjLHBw KTsKLSsKLSsgICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYyxwcF92ZWMpOwotKwotKyAgICAg IHZlY19zdChycF92ZWMsMCxycCk7Ci0rCi0rICAgICAgcHAgKz0gMTY7Ci0rICAgICAgcnAgKz0g MTY7Ci0rICAgICAgaXN0b3AgLT0gMTY7Ci0rICAgfQotKwotKyAgIGlmKGlzdG9wID4gMCkKLSsg ICB7Ci0rICAgICAgLyogSWYgYnl0ZSBjb3VudCBvZiByb3cgaXMgbm90IGRpdmlzaWJsZSBieSAx NgotKyAgICAgICAqIHdlIHdpbGwgcHJvY2VzcyByZW1haW5pbmcgcGFydCBhcyB1c3VhbAotKyAg ICAgICAqLwotKyAgICAgIGZvciAoaSA9IDA7IGkgPCBpc3RvcDsgaSsrKQotKyAgICAgIHsKLSsg ICAgICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsgKGludCkoKnBwKyspKSAmIDB4 ZmYpOwotKyAgICAgICAgIHJwKys7Ci0rICAgICAgfQotK30KLSsKLSt9Ci0rCi0rc3RhdGljIGNv bnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9MRUZUU0hJRlRFRDFfNCA9IHsxNiwxNiwxNiwx NiwgMCwgMSwgMiwgMywxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0rc3RhdGljIGNvbnN0IHZl Y3RvciB1bnNpZ25lZCBjaGFyIFZTWF9MRUZUU0hJRlRFRDJfNCA9IHsxNiwxNiwxNiwxNiwxNiwx NiwxNiwxNiwgNCwgNSwgNiwgNywxNiwxNiwxNiwxNn07Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1 bnNpZ25lZCBjaGFyIFZTWF9MRUZUU0hJRlRFRDNfNCA9IHsxNiwxNiwxNiwxNiwxNiwxNiwxNiwx NiwxNiwxNiwxNiwxNiwgOCwgOSwxMCwxMX07Ci0rCi0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNp Z25lZCBjaGFyIFZTWF9MRUZUU0hJRlRFRDFfMyA9IHsxNiwxNiwxNiwgMCwgMSwgMiwxNiwxNiwx NiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBj aGFyIFZTWF9MRUZUU0hJRlRFRDJfMyA9IHsxNiwxNiwxNiwxNiwxNiwxNiwgMywgNCwgNSwxNiwx NiwxNiwxNiwxNiwxNiwxNn07Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZT WF9MRUZUU0hJRlRFRDNfMyA9IHsxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwgNiwgNywgOCwx NiwxNiwxNiwxNn07Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9MRUZU U0hJRlRFRDRfMyA9IHsxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwgOSwxMCwx MSwxNn07Ci0rCi0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9OT1RfU0hJ RlRFRDFfNCA9IHsxNiwxNiwxNiwxNiwgNCwgNSwgNiwgNywxNiwxNiwxNiwxNiwxNiwxNiwxNiwx Nn07Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9OT1RfU0hJRlRFRDJf NCA9IHsxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwgOCwgOSwxMCwxMSwxNiwxNiwxNiwxNn07Ci0r c3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9OT1RfU0hJRlRFRDNfNCA9IHsx NiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxMiwxMywxNCwxNX07Ci0rCi0rc3Rh dGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9OT1RfU0hJRlRFRDFfMyA9IHsxNiwx NiwxNiwgMywgNCwgNSwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0rc3RhdGljIGNv bnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9OT1RfU0hJRlRFRDJfMyA9IHsxNiwxNiwxNiwx NiwxNiwxNiwgNiwgNywgOCwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0rc3RhdGljIGNvbnN0IHZl Y3RvciB1bnNpZ25lZCBjaGFyIFZTWF9OT1RfU0hJRlRFRDNfMyA9IHsxNiwxNiwxNiwxNiwxNiwx NiwxNiwxNiwxNiwgOSwxMCwxMSwxNiwxNiwxNiwxNn07Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1 bnNpZ25lZCBjaGFyIFZTWF9OT1RfU0hJRlRFRDRfMyA9IHsxNiwxNiwxNiwxNiwxNiwxNiwxNiwx NiwxNiwxNiwxNiwxNiwxMiwxMywxNCwxNn07Ci0rCi0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNp Z25lZCBjaGFyIFZTWF9DSEFSX1pFUk8gPSB7MCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAs MH07Ci0rI2lmZGVmIF9fTElUVExFX0VORElBTl9fCi0rCi0rc3RhdGljIGNvbnN0IHZlY3RvciB1 bnNpZ25lZCBjaGFyIFZTWF9DSEFSX1RPX1NIT1JUMV80ID0geyA0LDE2LCA1LDE2LCA2LDE2LCA3 LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2ln bmVkIGNoYXIgVlNYX0NIQVJfVE9fU0hPUlQyXzQgPSB7IDgsMTYsIDksMTYsMTAsMTYsMTEsMTYs MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQg Y2hhciBWU1hfQ0hBUl9UT19TSE9SVDNfNCA9IHsxMiwxNiwxMywxNiwxNCwxNiwxNSwxNiwxNiwx NiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0rCi0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBj aGFyIFZTWF9TSE9SVF9UT19DSEFSMV80ID0gezE2LDE2LDE2LDE2LCAwLCAyLCA0LCA2LDE2LDE2 LDE2LDE2LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIg VlNYX1NIT1JUX1RPX0NIQVIyXzQgPSB7MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsIDAsIDIsIDQs IDYsMTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hf U0hPUlRfVE9fQ0hBUjNfNCA9IHsxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwg MCwgMiwgNCwgNn07Ci0rCi0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9D SEFSX1RPX1NIT1JUMV8zID0geyAzLDE2LCA0LDE2LCA1LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2 LDE2LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX0NIQVJf VE9fU0hPUlQyXzMgPSB7IDYsMTYsIDcsMTYsIDgsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYs MTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfQ0hBUl9UT19T SE9SVDNfMyA9IHsgOSwxNiwxMCwxNiwxMSwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwx Nn07Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9DSEFSX1RPX1NIT1JU NF8zID0gezEyLDE2LDEzLDE2LDE0LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsK LSsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX1NIT1JUX1RPX0NIQVIx XzMgPSB7MTYsMTYsMTYsIDAsIDIsIDQsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9Owot K3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfU0hPUlRfVE9fQ0hBUjJfMyA9 IHsxNiwxNiwxNiwxNiwxNiwxNiwgMCwgMiwgNCwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0rc3Rh dGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9TSE9SVF9UT19DSEFSM18zID0gezE2 LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LCAwLCAyLCA0LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMg Y29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX1NIT1JUX1RPX0NIQVI0XzMgPSB7MTYsMTYs MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsIDAsIDIsIDQsMTZ9OwotKwotKyNlbGlmIGRl ZmluZWQoX19CSUdfRU5ESUFOX18pCi0rCi0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBj aGFyIFZTWF9DSEFSX1RPX1NIT1JUMV80ID0gezE2LCA0LDE2LCA1LDE2LCA2LDE2LCA3LDE2LDE2 LDE2LDE2LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIg VlNYX0NIQVJfVE9fU0hPUlQyXzQgPSB7MTYsIDgsMTYsIDksMTYsMTAsMTYsMTEsMTYsMTYsMTYs MTYsMTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hf Q0hBUl9UT19TSE9SVDNfNCA9IHsxNiwxMiwxNiwxMywxNiwxNCwxNiwxNSwxNiwxNiwxNiwxNiwx NiwxNiwxNiwxNn07Ci0rCi0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9T SE9SVF9UT19DSEFSMV80ID0gezE2LDE2LDE2LDE2LCAxLCAzLCA1LCA3LDE2LDE2LDE2LDE2LDE2 LDE2LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX1NIT1JU X1RPX0NIQVIyXzQgPSB7MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsIDEsIDMsIDUsIDcsMTYsMTYs MTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfU0hPUlRfVE9f Q0hBUjNfNCA9IHsxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwgMSwgMywgNSwg N307Ci0rCi0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9DSEFSX1RPX1NI T1JUMV8zID0gezE2LCAzLDE2LCA0LDE2LCA1LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2 fTsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX0NIQVJfVE9fU0hPUlQy XzMgPSB7MTYsIDYsMTYsIDcsMTYsIDgsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9Owot K3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfQ0hBUl9UT19TSE9SVDNfMyA9 IHsxNiwgOSwxNiwxMCwxNiwxMSwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0rc3Rh dGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9DSEFSX1RPX1NIT1JUNF8zID0gezE2 LDEyLDE2LDEzLDE2LDE0LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKLSsKLStzdGF0 aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX1NIT1JUX1RPX0NIQVIxXzMgPSB7MTYs MTYsMTYsIDEsIDMsIDUsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBj b25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfU0hPUlRfVE9fQ0hBUjJfMyA9IHsxNiwxNiwx NiwxNiwxNiwxNiwgMSwgMywgNSwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0rc3RhdGljIGNvbnN0 IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9TSE9SVF9UT19DSEFSM18zID0gezE2LDE2LDE2LDE2 LDE2LDE2LDE2LDE2LDE2LCAxLCAzLCA1LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVj dG9yIHVuc2lnbmVkIGNoYXIgVlNYX1NIT1JUX1RPX0NIQVI0XzMgPSB7MTYsMTYsMTYsMTYsMTYs MTYsMTYsMTYsMTYsMTYsMTYsMTYsIDEsIDMsIDUsMTZ9OwotKwotKyNlbmRpZgotKwotKyNkZWZp bmUgdnN4X2NoYXJfdG9fc2hvcnQodmVjLG9mZnNldCxicHApICh2ZWN0b3IgdW5zaWduZWQgc2hv cnQpdmVjX3Blcm0oKHZlYyksVlNYX0NIQVJfWkVSTyxWU1hfQ0hBUl9UT19TSE9SVCMjb2Zmc2V0 IyNfIyNicHApCi0rI2RlZmluZSB2c3hfc2hvcnRfdG9fY2hhcih2ZWMsb2Zmc2V0LGJwcCkgdmVj X3Blcm0oKCh2ZWN0b3IgdW5zaWduZWQgY2hhcikodmVjKSksVlNYX0NIQVJfWkVSTyxWU1hfU0hP UlRfVE9fQ0hBUiMjb2Zmc2V0IyNfIyNicHApCi0rCi0rI2lmZGVmIFBOR19VU0VfQUJTCi0rIyAg ZGVmaW5lIHZzeF9hYnMobnVtYmVyKSBhYnMobnVtYmVyKQotKyNlbHNlCi0rIyAgZGVmaW5lIHZz eF9hYnMobnVtYmVyKSAobnVtYmVyID4gMCkgPyAobnVtYmVyKSA6IC0obnVtYmVyKQotKyNlbmRp ZgotKwotK3ZvaWQgcG5nX3JlYWRfZmlsdGVyX3Jvd19zdWI0X3ZzeChwbmdfcm93X2luZm9wIHJv d19pbmZvLCBwbmdfYnl0ZXAgcm93LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwbmdfY29uc3RfYnl0ZXAgcHJldl9yb3cpCi0rewotKyAgIGNvbnN0IHBuZ19ieXRlIGJwcCA9 IDQ7Ci0rCi0rICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcnBfdmVjOwotKyAgIHZlY3RvciB1bnNp Z25lZCBjaGFyIHBhcnRfdmVjOwotKwotKyAgIHZzeF9kZWNsYXJlX2NvbW1vbl92YXJzKHJvd19p bmZvLHJvdyxwcmV2X3JvdyxicHApCi0rCi0rICAgUE5HX1VOVVNFRChwcCkKLSsKLSsgICAvKiBB bHRpdmVjIG9wZXJhdGlvbnMgcmVxdWlyZSAxNi1ieXRlIGFsaWduZWQgZGF0YQotKyAgICAqIGJ1 dCBpbnB1dCBjYW4gYmUgdW5hbGlnbmVkLiBTbyB3ZSBjYWxjdWxhdGUKLSsgICAgKiB1bmFsaWdu ZWQgcGFydCBhcyB1c3VhbC4KLSsgICAgKi8KLSsgICBmb3IgKGkgPSAwOyBpIDwgdW5hbGlnbmVk X3RvcDsgaSsrKQotKyAgIHsKLSsgICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsg KGludCkoKihycC1icHApKSkgJiAweGZmKTsKLSsgICAgICBycCsrOwotKyAgIH0KLSsKLSsgICAv KiBVc2luZyBTSU1EIHdoaWxlIHdlIGNhbiAqLwotKyAgIHdoaWxlKCBpc3RvcCA+PSAxNiApCi0r ICAgewotKyAgICAgIGZvcihpPTA7aSA8IGJwcCA7IGkrKykKLSsgICAgICB7Ci0rICAgICAgICAg KnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArIChpbnQpKCoocnAtYnBwKSkpICYgMHhmZik7 Ci0rICAgICAgICAgcnArKzsKLSsgICAgICB9Ci0rICAgICAgcnAgLT0gYnBwOwotKwotKyAgICAg IHJwX3ZlYyA9IHZlY19sZCgwLHJwKTsKLSsgICAgICBwYXJ0X3ZlYyA9IHZlY19wZXJtKHJwX3Zl YyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZUU0hJRlRFRDFfNCk7Ci0rICAgICAgcnBfdmVjID0gdmVj X2FkZChycF92ZWMscGFydF92ZWMpOwotKwotKyAgICAgIHBhcnRfdmVjID0gdmVjX3Blcm0ocnBf dmVjLFZTWF9DSEFSX1pFUk8sVlNYX0xFRlRTSElGVEVEMl80KTsKLSsgICAgICBycF92ZWMgPSB2 ZWNfYWRkKHJwX3ZlYyxwYXJ0X3ZlYyk7Ci0rCi0rICAgICAgcGFydF92ZWMgPSB2ZWNfcGVybShy cF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTEVGVFNISUZURUQzXzQpOwotKyAgICAgIHJwX3ZlYyA9 IHZlY19hZGQocnBfdmVjLHBhcnRfdmVjKTsKLSsKLSsgICAgICB2ZWNfc3QocnBfdmVjLDAscnAp OwotKwotKyAgICAgIHJwICs9IDE2OwotKyAgICAgIGlzdG9wIC09IDE2OwotKyAgIH0KLSsKLSsg ICBpZihpc3RvcCA+IDApCi0rICAgICAgZm9yIChpID0gMDsgaSA8IGlzdG9wICUgMTY7IGkrKykK LSsgICAgICB7Ci0rICAgICAgICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArIChpbnQp KCoocnAgLSBicHApKSkgJiAweGZmKTsKLSsgICAgICAgICBycCsrOwotKyAgICAgIH0KLSsKLSt9 Ci0rCi0rdm9pZCBwbmdfcmVhZF9maWx0ZXJfcm93X3N1YjNfdnN4KHBuZ19yb3dfaW5mb3Agcm93 X2luZm8sIHBuZ19ieXRlcCByb3csCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBuZ19jb25zdF9ieXRlcCBwcmV2X3JvdykKLSt7Ci0rICAgY29uc3QgcG5nX2J5dGUgYnBwID0g MzsKLSsKLSsgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBycF92ZWM7Ci0rICAgdmVjdG9yIHVuc2ln bmVkIGNoYXIgcGFydF92ZWM7Ci0rCi0rICAgdnN4X2RlY2xhcmVfY29tbW9uX3ZhcnMocm93X2lu Zm8scm93LHByZXZfcm93LGJwcCkKLSsKLSsgICBQTkdfVU5VU0VEKHBwKQotKwotKyAgIC8qIEFs dGl2ZWMgb3BlcmF0aW9ucyByZXF1aXJlIDE2LWJ5dGUgYWxpZ25lZCBkYXRhCi0rICAgICogYnV0 IGlucHV0IGNhbiBiZSB1bmFsaWduZWQuIFNvIHdlIGNhbGN1bGF0ZQotKyAgICAqIHVuYWxpZ25l ZCBwYXJ0IGFzIHVzdWFsLgotKyAgICAqLwotKyAgIGZvciAoaSA9IDA7IGkgPCB1bmFsaWduZWRf dG9wOyBpKyspCi0rICAgewotKyAgICAgICpycCA9IChwbmdfYnl0ZSkoKChpbnQpKCpycCkgKyAo aW50KSgqKHJwLWJwcCkpKSAmIDB4ZmYpOwotKyAgICAgIHJwKys7Ci0rICAgfQotKwotKyAgIC8q IFVzaW5nIFNJTUQgd2hpbGUgd2UgY2FuICovCi0rICAgd2hpbGUoIGlzdG9wID49IDE2ICkKLSsg ICB7Ci0rICAgICAgZm9yKGk9MDtpIDwgYnBwIDsgaSsrKQotKyAgICAgIHsKLSsgICAgICAgICAq cnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsgKGludCkoKihycC1icHApKSkgJiAweGZmKTsK LSsgICAgICAgICBycCsrOwotKyAgICAgIH0KLSsgICAgICBycCAtPSBicHA7Ci0rCi0rICAgICAg cnBfdmVjID0gdmVjX2xkKDAscnApOwotKyAgICAgIHBhcnRfdmVjID0gdmVjX3Blcm0ocnBfdmVj LFZTWF9DSEFSX1pFUk8sVlNYX0xFRlRTSElGVEVEMV8zKTsKLSsgICAgICBycF92ZWMgPSB2ZWNf YWRkKHJwX3ZlYyxwYXJ0X3ZlYyk7Ci0rCi0rICAgICAgcGFydF92ZWMgPSB2ZWNfcGVybShycF92 ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTEVGVFNISUZURUQyXzMpOwotKyAgICAgIHJwX3ZlYyA9IHZl Y19hZGQocnBfdmVjLHBhcnRfdmVjKTsKLSsKLSsgICAgICBwYXJ0X3ZlYyA9IHZlY19wZXJtKHJw X3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZUU0hJRlRFRDNfMyk7Ci0rICAgICAgcnBfdmVjID0g dmVjX2FkZChycF92ZWMscGFydF92ZWMpOwotKwotKyAgICAgIHBhcnRfdmVjID0gdmVjX3Blcm0o cnBfdmVjLFZTWF9DSEFSX1pFUk8sVlNYX0xFRlRTSElGVEVENF8zKTsKLSsgICAgICBycF92ZWMg PSB2ZWNfYWRkKHJwX3ZlYyxwYXJ0X3ZlYyk7Ci0rCi0rICAgICAgdmVjX3N0KHJwX3ZlYywwLHJw KTsKLSsgICAgICBycCArPSAxNTsKLSsgICAgICBpc3RvcCAtPSAxNjsKLSsKLSsgICAgICAvKiBT aW5jZSAxNiAlIGJwcCA9IDE2ICUgMyA9IDEsIGxhc3QgZWxlbWVudCBvZiBhcnJheSBtdXN0Ci0r ICAgICAgICogYmUgcHJvY2VlZGVkIG1hbnVhbGx5Ci0rICAgICAgICovCi0rICAgICAgKnJwID0g KHBuZ19ieXRlKSgoKGludCkoKnJwKSArIChpbnQpKCoocnAtYnBwKSkpICYgMHhmZik7Ci0rICAg ICAgcnArKzsKLSsgICB9Ci0rCi0rICAgaWYoaXN0b3AgPiAwKQotKyAgICAgIGZvciAoaSA9IDA7 IGkgPCBpc3RvcCAlIDE2OyBpKyspCi0rICAgICAgewotKyAgICAgICAgICpycCA9IChwbmdfYnl0 ZSkoKChpbnQpKCpycCkgKyAoaW50KSgqKHJwLWJwcCkpKSAmIDB4ZmYpOwotKyAgICAgICAgIHJw Kys7Ci0rICAgICAgfQotK30KLSsKLSt2b2lkIHBuZ19yZWFkX2ZpbHRlcl9yb3dfYXZnNF92c3go cG5nX3Jvd19pbmZvcCByb3dfaW5mbywgcG5nX2J5dGVwIHJvdywKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcG5nX2NvbnN0X2J5dGVwIHByZXZfcm93KQotK3sKLSsgICBjb25z dCBwbmdfYnl0ZSBicHAgPSA0OwotKwotKyAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIHJwX3ZlYzsK LSsgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBwcF92ZWM7Ci0rICAgdmVjdG9yIHVuc2lnbmVkIGNo YXIgcHBfcGFydF92ZWM7Ci0rICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcnBfcGFydF92ZWM7Ci0r ICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgYXZnX3ZlYzsKLSsKLSsgICB2c3hfZGVjbGFyZV9jb21t b25fdmFycyhyb3dfaW5mbyxyb3cscHJldl9yb3csYnBwKQotKyAgIHJwIC09IGJwcDsKLSsgICBp Zihpc3RvcCA+PSBicHApCi0rICAgICAgaXN0b3AgLT0gYnBwOwotKwotKyAgIGZvciAoaSA9IDA7 IGkgPCBicHA7IGkrKykKLSsgICB7Ci0rICAgICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJw KSArCi0rICAgICAgICAgKChpbnQpKCpwcCsrKSAvIDIgKSkgJiAweGZmKTsKLSsKLSsgICAgICBy cCsrOwotKyAgIH0KLSsKLSsgICAvKiBBbHRpdmVjIG9wZXJhdGlvbnMgcmVxdWlyZSAxNi1ieXRl IGFsaWduZWQgZGF0YQotKyAgICAqIGJ1dCBpbnB1dCBjYW4gYmUgdW5hbGlnbmVkLiBTbyB3ZSBj YWxjdWxhdGUKLSsgICAgKiB1bmFsaWduZWQgcGFydCBhcyB1c3VhbC4KLSsgICAgKi8KLSsgICBm b3IgKGkgPSAwOyBpIDwgdW5hbGlnbmVkX3RvcDsgaSsrKQotKyAgIHsKLSsgICAgICAqcnAgPSAo cG5nX2J5dGUpKCgoaW50KSgqcnApICsKLSsgICAgICAgICAoaW50KSgqcHArKyArICoocnAtYnBw KSkgLyAyICkgJiAweGZmKTsKLSsKLSsgICAgICBycCsrOwotKyAgIH0KLSsKLSsgICAvKiBVc2lu ZyBTSU1EIHdoaWxlIHdlIGNhbiAqLwotKyAgIHdoaWxlKCBpc3RvcCA+PSAxNiApCi0rICAgewot KyAgICAgIGZvcihpPTA7aSA8IGJwcCA7IGkrKykKLSsgICAgICB7Ci0rICAgICAgICAgKnJwID0g KHBuZ19ieXRlKSgoKGludCkoKnJwKSArCi0rICAgICAgICAgICAgKGludCkoKnBwKysgKyAqKHJw LWJwcCkpIC8gMiApICYgMHhmZik7Ci0rCi0rICAgICAgICAgcnArKzsKLSsgICAgICB9Ci0rICAg ICAgcnAgLT0gYnBwOwotKyAgICAgIHBwIC09IGJwcDsKLSsKLSsgICAgICB2ZWNfbGRfdW5hbGln bmVkKHBwX3ZlYyxwcCk7Ci0rICAgICAgcnBfdmVjID0gdmVjX2xkKDAscnApOwotKwotKyAgICAg IHJwX3BhcnRfdmVjID0gdmVjX3Blcm0ocnBfdmVjLFZTWF9DSEFSX1pFUk8sVlNYX0xFRlRTSElG VEVEMV80KTsKLSsgICAgICBwcF9wYXJ0X3ZlYyA9IHZlY19wZXJtKHBwX3ZlYyxWU1hfQ0hBUl9a RVJPLFZTWF9OT1RfU0hJRlRFRDFfNCk7Ci0rICAgICAgYXZnX3ZlYyA9IHZlY19hdmcocnBfcGFy dF92ZWMscHBfcGFydF92ZWMpOwotKyAgICAgIGF2Z192ZWMgPSB2ZWNfc3ViKGF2Z192ZWMsIHZl Y19hbmQodmVjX3hvcihycF9wYXJ0X3ZlYyxwcF9wYXJ0X3ZlYyksdmVjX3NwbGF0X3U4KDEpKSk7 Ci0rICAgICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMsYXZnX3ZlYyk7Ci0rCi0rICAgICAgcnBf cGFydF92ZWMgPSB2ZWNfcGVybShycF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTEVGVFNISUZURUQy XzQpOwotKyAgICAgIHBwX3BhcnRfdmVjID0gdmVjX3Blcm0ocHBfdmVjLFZTWF9DSEFSX1pFUk8s VlNYX05PVF9TSElGVEVEMl80KTsKLSsgICAgICBhdmdfdmVjID0gdmVjX2F2ZyhycF9wYXJ0X3Zl YyxwcF9wYXJ0X3ZlYyk7Ci0rICAgICAgYXZnX3ZlYyA9IHZlY19zdWIoYXZnX3ZlYywgdmVjX2Fu ZCh2ZWNfeG9yKHJwX3BhcnRfdmVjLHBwX3BhcnRfdmVjKSx2ZWNfc3BsYXRfdTgoMSkpKTsKLSsg ICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYyxhdmdfdmVjKTsKLSsKLSsgICAgICBycF9wYXJ0 X3ZlYyA9IHZlY19wZXJtKHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZUU0hJRlRFRDNfNCk7 Ci0rICAgICAgcHBfcGFydF92ZWMgPSB2ZWNfcGVybShwcF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hf Tk9UX1NISUZURUQzXzQpOwotKyAgICAgIGF2Z192ZWMgPSB2ZWNfYXZnKHJwX3BhcnRfdmVjLHBw X3BhcnRfdmVjKTsKLSsgICAgICBhdmdfdmVjID0gdmVjX3N1YihhdmdfdmVjLCB2ZWNfYW5kKHZl Y194b3IocnBfcGFydF92ZWMscHBfcGFydF92ZWMpLHZlY19zcGxhdF91OCgxKSkpOwotKyAgICAg IHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLGF2Z192ZWMpOwotKwotKyAgICAgIHZlY19zdChycF92 ZWMsMCxycCk7Ci0rCi0rICAgICAgcnAgKz0gMTY7Ci0rICAgICAgcHAgKz0gMTY7Ci0rICAgICAg aXN0b3AgLT0gMTY7Ci0rICAgfQotKwotKyAgIGlmKGlzdG9wICA+IDApCi0rICAgICAgZm9yIChp ID0gMDsgaSA8IGlzdG9wICUgMTY7IGkrKykKLSsgICAgICB7Ci0rICAgICAgICAgKnJwID0gKHBu Z19ieXRlKSgoKGludCkoKnJwKSArCi0rICAgICAgICAgICAgKGludCkoKnBwKysgKyAqKHJwLWJw cCkpIC8gMiApICYgMHhmZik7Ci0rCi0rICAgICAgICAgcnArKzsKLSsgICAgICB9Ci0rfQotKwot K3ZvaWQgcG5nX3JlYWRfZmlsdGVyX3Jvd19hdmczX3ZzeChwbmdfcm93X2luZm9wIHJvd19pbmZv LCBwbmdfYnl0ZXAgcm93LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbmdf Y29uc3RfYnl0ZXAgcHJldl9yb3cpCi0rewotKyAgY29uc3QgcG5nX2J5dGUgYnBwID0gMzsKLSsK LSsgIHZlY3RvciB1bnNpZ25lZCBjaGFyIHJwX3ZlYzsKLSsgIHZlY3RvciB1bnNpZ25lZCBjaGFy IHBwX3ZlYzsKLSsgIHZlY3RvciB1bnNpZ25lZCBjaGFyIHBwX3BhcnRfdmVjOwotKyAgdmVjdG9y IHVuc2lnbmVkIGNoYXIgcnBfcGFydF92ZWM7Ci0rICB2ZWN0b3IgdW5zaWduZWQgY2hhciBhdmdf dmVjOwotKwotKyAgdnN4X2RlY2xhcmVfY29tbW9uX3ZhcnMocm93X2luZm8scm93LHByZXZfcm93 LGJwcCkKLSsgIHJwIC09IGJwcDsKLSsgIGlmKGlzdG9wID49IGJwcCkKLSsgICAgIGlzdG9wIC09 IGJwcDsKLSsKLSsgIGZvciAoaSA9IDA7IGkgPCBicHA7IGkrKykKLSsgIHsKLSsgICAgICpycCA9 IChwbmdfYnl0ZSkoKChpbnQpKCpycCkgKwotKyAgICAgICAgKChpbnQpKCpwcCsrKSAvIDIgKSkg JiAweGZmKTsKLSsKLSsgICAgIHJwKys7Ci0rICB9Ci0rCi0rICAvKiBBbHRpdmVjIG9wZXJhdGlv bnMgcmVxdWlyZSAxNi1ieXRlIGFsaWduZWQgZGF0YQotKyAgICogYnV0IGlucHV0IGNhbiBiZSB1 bmFsaWduZWQuIFNvIHdlIGNhbGN1bGF0ZQotKyAgICogdW5hbGlnbmVkIHBhcnQgYXMgdXN1YWwu Ci0rICAgKi8KLSsgIGZvciAoaSA9IDA7IGkgPCB1bmFsaWduZWRfdG9wOyBpKyspCi0rICB7Ci0r ICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsKLSsgICAgICAgIChpbnQpKCpwcCsr ICsgKihycC1icHApKSAvIDIgKSAmIDB4ZmYpOwotKwotKyAgICAgcnArKzsKLSsgIH0KLSsKLSsg IC8qIFVzaW5nIFNJTUQgd2hpbGUgd2UgY2FuICovCi0rICB3aGlsZSggaXN0b3AgPj0gMTYgKQot KyAgewotKyAgICAgZm9yKGk9MDtpIDwgYnBwIDsgaSsrKQotKyAgICAgewotKyAgICAgICAgKnJw ID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArCi0rICAgICAgICAgICAoaW50KSgqcHArKyArICoo cnAtYnBwKSkgLyAyICkgJiAweGZmKTsKLSsKLSsgICAgICAgIHJwKys7Ci0rICAgICB9Ci0rICAg ICBycCAtPSBicHA7Ci0rICAgICBwcCAtPSBicHA7Ci0rCi0rICAgICB2ZWNfbGRfdW5hbGlnbmVk KHBwX3ZlYyxwcCk7Ci0rICAgICBycF92ZWMgPSB2ZWNfbGQoMCxycCk7Ci0rCi0rICAgICBycF9w YXJ0X3ZlYyA9IHZlY19wZXJtKHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZUU0hJRlRFRDFf Myk7Ci0rICAgICBwcF9wYXJ0X3ZlYyA9IHZlY19wZXJtKHBwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZT WF9OT1RfU0hJRlRFRDFfMyk7Ci0rICAgICBhdmdfdmVjID0gdmVjX2F2ZyhycF9wYXJ0X3ZlYyxw cF9wYXJ0X3ZlYyk7Ci0rICAgICBhdmdfdmVjID0gdmVjX3N1YihhdmdfdmVjLCB2ZWNfYW5kKHZl Y194b3IocnBfcGFydF92ZWMscHBfcGFydF92ZWMpLHZlY19zcGxhdF91OCgxKSkpOwotKyAgICAg cnBfdmVjID0gdmVjX2FkZChycF92ZWMsYXZnX3ZlYyk7Ci0rCi0rICAgICBycF9wYXJ0X3ZlYyA9 IHZlY19wZXJtKHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZUU0hJRlRFRDJfMyk7Ci0rICAg ICBwcF9wYXJ0X3ZlYyA9IHZlY19wZXJtKHBwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9OT1RfU0hJ RlRFRDJfMyk7Ci0rICAgICBhdmdfdmVjID0gdmVjX2F2ZyhycF9wYXJ0X3ZlYyxwcF9wYXJ0X3Zl Yyk7Ci0rICAgICBhdmdfdmVjID0gdmVjX3N1YihhdmdfdmVjLCB2ZWNfYW5kKHZlY194b3IocnBf cGFydF92ZWMscHBfcGFydF92ZWMpLHZlY19zcGxhdF91OCgxKSkpOwotKyAgICAgcnBfdmVjID0g dmVjX2FkZChycF92ZWMsYXZnX3ZlYyk7Ci0rCi0rICAgICBycF9wYXJ0X3ZlYyA9IHZlY19wZXJt KHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZUU0hJRlRFRDNfMyk7Ci0rICAgICBwcF9wYXJ0 X3ZlYyA9IHZlY19wZXJtKHBwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9OT1RfU0hJRlRFRDNfMyk7 Ci0rICAgICBhdmdfdmVjID0gdmVjX2F2ZyhycF9wYXJ0X3ZlYyxwcF9wYXJ0X3ZlYyk7Ci0rICAg ICBhdmdfdmVjID0gdmVjX3N1YihhdmdfdmVjLCB2ZWNfYW5kKHZlY194b3IocnBfcGFydF92ZWMs cHBfcGFydF92ZWMpLHZlY19zcGxhdF91OCgxKSkpOwotKyAgICAgcnBfdmVjID0gdmVjX2FkZChy cF92ZWMsYXZnX3ZlYyk7Ci0rCi0rICAgICBycF9wYXJ0X3ZlYyA9IHZlY19wZXJtKHJwX3ZlYyxW U1hfQ0hBUl9aRVJPLFZTWF9MRUZUU0hJRlRFRDRfMyk7Ci0rICAgICBwcF9wYXJ0X3ZlYyA9IHZl Y19wZXJtKHBwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9OT1RfU0hJRlRFRDRfMyk7Ci0rICAgICBh dmdfdmVjID0gdmVjX2F2ZyhycF9wYXJ0X3ZlYyxwcF9wYXJ0X3ZlYyk7Ci0rICAgICBhdmdfdmVj ID0gdmVjX3N1YihhdmdfdmVjLCB2ZWNfYW5kKHZlY194b3IocnBfcGFydF92ZWMscHBfcGFydF92 ZWMpLHZlY19zcGxhdF91OCgxKSkpOwotKyAgICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMsYXZn X3ZlYyk7Ci0rCi0rICAgICB2ZWNfc3QocnBfdmVjLDAscnApOwotKwotKyAgICAgcnAgKz0gMTU7 Ci0rICAgICBwcCArPSAxNTsKLSsgICAgIGlzdG9wIC09IDE2OwotKwotKyAgICAgLyogU2luY2Ug MTYgJSBicHAgPSAxNiAlIDMgPSAxLCBsYXN0IGVsZW1lbnQgb2YgYXJyYXkgbXVzdAotKyAgICAg ICogYmUgcHJvY2VlZGVkIG1hbnVhbGx5Ci0rICAgICAgKi8KLSsgICAgICpycCA9IChwbmdfYnl0 ZSkoKChpbnQpKCpycCkgKwotKyAgICAgICAgKGludCkoKnBwKysgKyAqKHJwLWJwcCkpIC8gMiAp ICYgMHhmZik7Ci0rICAgICBycCsrOwotKyAgfQotKwotKyAgaWYoaXN0b3AgID4gMCkKLSsgICAg IGZvciAoaSA9IDA7IGkgPCBpc3RvcCAlIDE2OyBpKyspCi0rICAgICB7Ci0rICAgICAgICAqcnAg PSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsKLSsgICAgICAgICAgIChpbnQpKCpwcCsrICsgKihy cC1icHApKSAvIDIgKSAmIDB4ZmYpOwotKwotKyAgICAgICAgcnArKzsKLSsgICAgIH0KLSt9Ci0r Ci0rLyogQnl0ZXdpc2UgYyA/IHQgOiBlLiAqLwotKyNkZWZpbmUgaWZfdGhlbl9lbHNlKGMsdCxl KSB2ZWNfc2VsKGUsdCxjKQotKwotKyNkZWZpbmUgdnN4X3BhZXRoX3Byb2Nlc3MocnAscHAsYSxi LGMscGEscGIscGMsYnBwKSB7XAotKyAgICAgIGMgPSAqKHBwIC0gYnBwKTtcCi0rICAgICAgYSA9 ICoocnAgLSBicHApO1wKLSsgICAgICBiID0gKnBwKys7XAotKyAgICAgIHAgPSBiIC0gYztcCi0r ICAgICAgcGMgPSBhIC0gYztcCi0rICAgICAgcGEgPSB2c3hfYWJzKHApO1wKLSsgICAgICBwYiA9 IHZzeF9hYnMocGMpO1wKLSsgICAgICBwYyA9IHZzeF9hYnMocCArIHBjKTtcCi0rICAgICAgaWYg KHBiIDwgcGEpIHBhID0gcGIsIGEgPSBiO1wKLSsgICAgICBpZiAocGMgPCBwYSkgYSA9IGM7XAot KyAgICAgIGEgKz0gKnJwO1wKLSsgICAgICAqcnArKyA9IChwbmdfYnl0ZSlhO1wKLSsgICAgICB9 Ci0rCi0rdm9pZCBwbmdfcmVhZF9maWx0ZXJfcm93X3BhZXRoNF92c3gocG5nX3Jvd19pbmZvcCBy b3dfaW5mbywgcG5nX2J5dGVwIHJvdywKLSsgICBwbmdfY29uc3RfYnl0ZXAgcHJldl9yb3cpCi0r ewotKyAgIGNvbnN0IHBuZ19ieXRlIGJwcCA9IDQ7Ci0rCi0rICAgaW50IGEsIGIsIGMsIHBhLCBw YiwgcGMsIHA7Ci0rICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcnBfdmVjOwotKyAgIHZlY3RvciB1 bnNpZ25lZCBjaGFyIHBwX3ZlYzsKLSsgICB2ZWN0b3IgdW5zaWduZWQgc2hvcnQgYV92ZWMsYl92 ZWMsY192ZWMsbmVhcmVzdF92ZWM7Ci0rICAgdmVjdG9yIHNpZ25lZCBzaG9ydCBwYV92ZWMscGJf dmVjLHBjX3ZlYyxzbWFsbGVzdF92ZWM7Ci0rCi0rICAgdnN4X2RlY2xhcmVfY29tbW9uX3ZhcnMo cm93X2luZm8scm93LHByZXZfcm93LGJwcCkKLSsgICBycCAtPSBicHA7Ci0rICAgaWYoaXN0b3Ag Pj0gYnBwKQotKyAgICAgIGlzdG9wIC09IGJwcDsKLSsKLSsgICAvKiBQcm9jZXNzIHRoZSBmaXJz dCBwaXhlbCBpbiB0aGUgcm93IGNvbXBsZXRlbHkgKHRoaXMgaXMgdGhlIHNhbWUgYXMgJ3VwJwot KyAgICAqIGJlY2F1c2UgdGhlcmUgaXMgb25seSBvbmUgY2FuZGlkYXRlIHByZWRpY3RvciBmb3Ig dGhlIGZpcnN0IHJvdykuCi0rICAgICovCi0rICAgZm9yKGkgPSAwOyBpIDwgYnBwIDsgaSsrKQot KyAgIHsKLSsgICAgICAqcnAgPSAocG5nX2J5dGUpKCAqcnAgKyAqcHApOwotKyAgICAgIHJwKys7 Ci0rICAgICAgcHArKzsKLSsgICB9Ci0rCi0rICAgZm9yKGkgPSAwOyBpIDwgdW5hbGlnbmVkX3Rv cCA7IGkrKykKLSsgICB7Ci0rICAgICAgdnN4X3BhZXRoX3Byb2Nlc3MocnAscHAsYSxiLGMscGEs cGIscGMsYnBwKQotKyAgIH0KLSsKLSsgICB3aGlsZSggaXN0b3AgPj0gMTYpCi0rICAgewotKyAg ICAgIGZvcihpID0gMDsgaSA8IGJwcCA7IGkrKykKLSsgICAgICB7Ci0rICAgICAgICAgdnN4X3Bh ZXRoX3Byb2Nlc3MocnAscHAsYSxiLGMscGEscGIscGMsYnBwKQotKyAgICAgIH0KLSsKLSsgICAg ICBycCAtPSBicHA7Ci0rICAgICAgcHAgLT0gYnBwOwotKyAgICAgIHJwX3ZlYyA9IHZlY19sZCgw LHJwKTsKLSsgICAgICB2ZWNfbGRfdW5hbGlnbmVkKHBwX3ZlYyxwcCk7Ci0rCi0rICAgICAgYV92 ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShycF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwg VlNYX0xFRlRTSElGVEVEMV80KSwxLDQpOwotKyAgICAgIGJfdmVjID0gdnN4X2NoYXJfdG9fc2hv cnQodmVjX3Blcm0ocHBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9OT1RfU0hJRlRFRDFfNCks MSw0KTsKLSsgICAgICBjX3ZlYyA9IHZzeF9jaGFyX3RvX3Nob3J0KHZlY19wZXJtKHBwX3ZlYyAs IFZTWF9DSEFSX1pFUk8gLCBWU1hfTEVGVFNISUZURUQxXzQpLDEsNCk7Ci0rICAgICAgcGFfdmVj ID0gKHZlY3RvciBzaWduZWQgc2hvcnQpIHZlY19zdWIoYl92ZWMsY192ZWMpOwotKyAgICAgIHBi X3ZlYyA9ICh2ZWN0b3Igc2lnbmVkIHNob3J0KSB2ZWNfc3ViKGFfdmVjICwgY192ZWMpOwotKyAg ICAgIHBjX3ZlYyA9IHZlY19hZGQocGFfdmVjLHBiX3ZlYyk7Ci0rICAgICAgcGFfdmVjID0gdmVj X2FicyhwYV92ZWMpOwotKyAgICAgIHBiX3ZlYyA9IHZlY19hYnMocGJfdmVjKTsKLSsgICAgICBw Y192ZWMgPSB2ZWNfYWJzKHBjX3ZlYyk7Ci0rICAgICAgc21hbGxlc3RfdmVjID0gdmVjX21pbihw Y192ZWMsIHZlY19taW4ocGFfdmVjLHBiX3ZlYykpOwotKyAgICAgIG5lYXJlc3RfdmVjID0gIGlm X3RoZW5fZWxzZSgKLSsgICAgICAgICAgICB2ZWNfY21wZXEocGFfdmVjLHNtYWxsZXN0X3ZlYyks Ci0rICAgICAgICAgICAgYV92ZWMsCi0rICAgICAgICAgICAgaWZfdGhlbl9lbHNlKAotKyAgICAg ICAgICAgICAgdmVjX2NtcGVxKHBiX3ZlYyxzbWFsbGVzdF92ZWMpLAotKyAgICAgICAgICAgICAg Yl92ZWMsCi0rICAgICAgICAgICAgICBjX3ZlYwotKyAgICAgICAgICAgICAgKQotKyAgICAgICAg ICAgICk7Ci0rICAgICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMsKHZzeF9zaG9ydF90b19jaGFy KG5lYXJlc3RfdmVjLDEsNCkpKTsKLSsKLSsgICAgICBhX3ZlYyA9IHZzeF9jaGFyX3RvX3Nob3J0 KHZlY19wZXJtKHJwX3ZlYyAsIFZTWF9DSEFSX1pFUk8gLCBWU1hfTEVGVFNISUZURUQyXzQpLDIs NCk7Ci0rICAgICAgYl92ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShwcF92ZWMgLCBW U1hfQ0hBUl9aRVJPICwgVlNYX05PVF9TSElGVEVEMl80KSwyLDQpOwotKyAgICAgIGNfdmVjID0g dnN4X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocHBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9M RUZUU0hJRlRFRDJfNCksMiw0KTsKLSsgICAgICBwYV92ZWMgPSAodmVjdG9yIHNpZ25lZCBzaG9y dCkgdmVjX3N1YihiX3ZlYyxjX3ZlYyk7Ci0rICAgICAgcGJfdmVjID0gKHZlY3RvciBzaWduZWQg c2hvcnQpIHZlY19zdWIoYV92ZWMgLCBjX3ZlYyk7Ci0rICAgICAgcGNfdmVjID0gdmVjX2FkZChw YV92ZWMscGJfdmVjKTsKLSsgICAgICBwYV92ZWMgPSB2ZWNfYWJzKHBhX3ZlYyk7Ci0rICAgICAg cGJfdmVjID0gdmVjX2FicyhwYl92ZWMpOwotKyAgICAgIHBjX3ZlYyA9IHZlY19hYnMocGNfdmVj KTsKLSsgICAgICBzbWFsbGVzdF92ZWMgPSB2ZWNfbWluKHBjX3ZlYywgdmVjX21pbihwYV92ZWMs cGJfdmVjKSk7Ci0rICAgICAgbmVhcmVzdF92ZWMgPSAgaWZfdGhlbl9lbHNlKAotKyAgICAgICAg ICAgIHZlY19jbXBlcShwYV92ZWMsc21hbGxlc3RfdmVjKSwKLSsgICAgICAgICAgICBhX3ZlYywK LSsgICAgICAgICAgICBpZl90aGVuX2Vsc2UoCi0rICAgICAgICAgICAgICB2ZWNfY21wZXEocGJf dmVjLHNtYWxsZXN0X3ZlYyksCi0rICAgICAgICAgICAgICBiX3ZlYywKLSsgICAgICAgICAgICAg IGNfdmVjCi0rICAgICAgICAgICAgICApCi0rICAgICAgICAgICAgKTsKLSsgICAgICBycF92ZWMg PSB2ZWNfYWRkKHJwX3ZlYywodnN4X3Nob3J0X3RvX2NoYXIobmVhcmVzdF92ZWMsMiw0KSkpOwot KwotKyAgICAgIGFfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocnBfdmVjICwgVlNY X0NIQVJfWkVSTyAsIFZTWF9MRUZUU0hJRlRFRDNfNCksMyw0KTsKLSsgICAgICBiX3ZlYyA9IHZz eF9jaGFyX3RvX3Nob3J0KHZlY19wZXJtKHBwX3ZlYyAsIFZTWF9DSEFSX1pFUk8gLCBWU1hfTk9U X1NISUZURUQzXzQpLDMsNCk7Ci0rICAgICAgY192ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNf cGVybShwcF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX0xFRlRTSElGVEVEM180KSwzLDQpOwot KyAgICAgIHBhX3ZlYyA9ICh2ZWN0b3Igc2lnbmVkIHNob3J0KSB2ZWNfc3ViKGJfdmVjLGNfdmVj KTsKLSsgICAgICBwYl92ZWMgPSAodmVjdG9yIHNpZ25lZCBzaG9ydCkgdmVjX3N1YihhX3ZlYyAs IGNfdmVjKTsKLSsgICAgICBwY192ZWMgPSB2ZWNfYWRkKHBhX3ZlYyxwYl92ZWMpOwotKyAgICAg IHBhX3ZlYyA9IHZlY19hYnMocGFfdmVjKTsKLSsgICAgICBwYl92ZWMgPSB2ZWNfYWJzKHBiX3Zl Yyk7Ci0rICAgICAgcGNfdmVjID0gdmVjX2FicyhwY192ZWMpOwotKyAgICAgIHNtYWxsZXN0X3Zl YyA9IHZlY19taW4ocGNfdmVjLCB2ZWNfbWluKHBhX3ZlYyxwYl92ZWMpKTsKLSsgICAgICBuZWFy ZXN0X3ZlYyA9ICBpZl90aGVuX2Vsc2UoCi0rICAgICAgICAgICAgdmVjX2NtcGVxKHBhX3ZlYyxz bWFsbGVzdF92ZWMpLAotKyAgICAgICAgICAgIGFfdmVjLAotKyAgICAgICAgICAgIGlmX3RoZW5f ZWxzZSgKLSsgICAgICAgICAgICAgIHZlY19jbXBlcShwYl92ZWMsc21hbGxlc3RfdmVjKSwKLSsg ICAgICAgICAgICAgIGJfdmVjLAotKyAgICAgICAgICAgICAgY192ZWMKLSsgICAgICAgICAgICAg ICkKLSsgICAgICAgICAgICApOwotKyAgICAgIHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLCh2c3hf c2hvcnRfdG9fY2hhcihuZWFyZXN0X3ZlYywzLDQpKSk7Ci0rCi0rICAgICAgdmVjX3N0KHJwX3Zl YywwLHJwKTsKLSsKLSsgICAgICBycCArPSAxNjsKLSsgICAgICBwcCArPSAxNjsKLSsgICAgICBp c3RvcCAtPSAxNjsKLSsgICB9Ci0rCi0rICAgaWYoaXN0b3AgPiAwKQotKyAgICAgIGZvciAoaSA9 IDA7IGkgPCBpc3RvcCAlIDE2OyBpKyspCi0rICAgICAgewotKyAgICAgICAgIHZzeF9wYWV0aF9w cm9jZXNzKHJwLHBwLGEsYixjLHBhLHBiLHBjLGJwcCkKLSsgICAgICB9Ci0rfQotKwotK3ZvaWQg cG5nX3JlYWRfZmlsdGVyX3Jvd19wYWV0aDNfdnN4KHBuZ19yb3dfaW5mb3Agcm93X2luZm8sIHBu Z19ieXRlcCByb3csCi0rICAgcG5nX2NvbnN0X2J5dGVwIHByZXZfcm93KQotK3sKLSsgIGNvbnN0 IHBuZ19ieXRlIGJwcCA9IDM7Ci0rCi0rICBpbnQgYSwgYiwgYywgcGEsIHBiLCBwYywgcDsKLSsg IHZlY3RvciB1bnNpZ25lZCBjaGFyIHJwX3ZlYzsKLSsgIHZlY3RvciB1bnNpZ25lZCBjaGFyIHBw X3ZlYzsKLSsgIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBhX3ZlYyxiX3ZlYyxjX3ZlYyxuZWFyZXN0 X3ZlYzsKLSsgIHZlY3RvciBzaWduZWQgc2hvcnQgcGFfdmVjLHBiX3ZlYyxwY192ZWMsc21hbGxl c3RfdmVjOwotKwotKyAgdnN4X2RlY2xhcmVfY29tbW9uX3ZhcnMocm93X2luZm8scm93LHByZXZf cm93LGJwcCkKLSsgIHJwIC09IGJwcDsKLSsgIGlmKGlzdG9wID49IGJwcCkKLSsgICAgIGlzdG9w IC09IGJwcDsKLSsKLSsgIC8qIFByb2Nlc3MgdGhlIGZpcnN0IHBpeGVsIGluIHRoZSByb3cgY29t cGxldGVseSAodGhpcyBpcyB0aGUgc2FtZSBhcyAndXAnCi0rICAgKiBiZWNhdXNlIHRoZXJlIGlz IG9ubHkgb25lIGNhbmRpZGF0ZSBwcmVkaWN0b3IgZm9yIHRoZSBmaXJzdCByb3cpLgotKyAgICov Ci0rICBmb3IoaSA9IDA7IGkgPCBicHAgOyBpKyspCi0rICB7Ci0rICAgICAqcnAgPSAocG5nX2J5 dGUpKCAqcnAgKyAqcHApOwotKyAgICAgcnArKzsKLSsgICAgIHBwKys7Ci0rICB9Ci0rCi0rICBm b3IoaSA9IDA7IGkgPCB1bmFsaWduZWRfdG9wIDsgaSsrKQotKyAgewotKyAgICAgdnN4X3BhZXRo X3Byb2Nlc3MocnAscHAsYSxiLGMscGEscGIscGMsYnBwKQotKyAgfQotKwotKyAgd2hpbGUoIGlz dG9wID49IDE2KQotKyAgewotKyAgICAgZm9yKGkgPSAwOyBpIDwgYnBwIDsgaSsrKQotKyAgICAg ewotKyAgICAgICAgdnN4X3BhZXRoX3Byb2Nlc3MocnAscHAsYSxiLGMscGEscGIscGMsYnBwKQot KyAgICAgfQotKwotKyAgICAgcnAgLT0gYnBwOwotKyAgICAgcHAgLT0gYnBwOwotKyAgICAgcnBf dmVjID0gdmVjX2xkKDAscnApOwotKyAgICAgdmVjX2xkX3VuYWxpZ25lZChwcF92ZWMscHApOwot KwotKyAgICAgYV92ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShycF92ZWMgLCBWU1hf Q0hBUl9aRVJPICwgVlNYX0xFRlRTSElGVEVEMV8zKSwxLDMpOwotKyAgICAgYl92ZWMgPSB2c3hf Y2hhcl90b19zaG9ydCh2ZWNfcGVybShwcF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX05PVF9T SElGVEVEMV8zKSwxLDMpOwotKyAgICAgY192ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVy bShwcF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX0xFRlRTSElGVEVEMV8zKSwxLDMpOwotKyAg ICAgcGFfdmVjID0gKHZlY3RvciBzaWduZWQgc2hvcnQpIHZlY19zdWIoYl92ZWMsY192ZWMpOwot KyAgICAgcGJfdmVjID0gKHZlY3RvciBzaWduZWQgc2hvcnQpIHZlY19zdWIoYV92ZWMgLCBjX3Zl Yyk7Ci0rICAgICBwY192ZWMgPSB2ZWNfYWRkKHBhX3ZlYyxwYl92ZWMpOwotKyAgICAgcGFfdmVj ID0gdmVjX2FicyhwYV92ZWMpOwotKyAgICAgcGJfdmVjID0gdmVjX2FicyhwYl92ZWMpOwotKyAg ICAgcGNfdmVjID0gdmVjX2FicyhwY192ZWMpOwotKyAgICAgc21hbGxlc3RfdmVjID0gdmVjX21p bihwY192ZWMsIHZlY19taW4ocGFfdmVjLHBiX3ZlYykpOwotKyAgICAgbmVhcmVzdF92ZWMgPSAg aWZfdGhlbl9lbHNlKAotKyAgICAgICAgICAgdmVjX2NtcGVxKHBhX3ZlYyxzbWFsbGVzdF92ZWMp LAotKyAgICAgICAgICAgYV92ZWMsCi0rICAgICAgICAgICBpZl90aGVuX2Vsc2UoCi0rICAgICAg ICAgICAgIHZlY19jbXBlcShwYl92ZWMsc21hbGxlc3RfdmVjKSwKLSsgICAgICAgICAgICAgYl92 ZWMsCi0rICAgICAgICAgICAgIGNfdmVjCi0rICAgICAgICAgICAgICkKLSsgICAgICAgICAgICk7 Ci0rICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYywodnN4X3Nob3J0X3RvX2NoYXIobmVhcmVz dF92ZWMsMSwzKSkpOwotKwotKyAgICAgYV92ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVy bShycF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX0xFRlRTSElGVEVEMl8zKSwyLDMpOwotKyAg ICAgYl92ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShwcF92ZWMgLCBWU1hfQ0hBUl9a RVJPICwgVlNYX05PVF9TSElGVEVEMl8zKSwyLDMpOwotKyAgICAgY192ZWMgPSB2c3hfY2hhcl90 b19zaG9ydCh2ZWNfcGVybShwcF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX0xFRlRTSElGVEVE Ml8zKSwyLDMpOwotKyAgICAgcGFfdmVjID0gKHZlY3RvciBzaWduZWQgc2hvcnQpIHZlY19zdWIo Yl92ZWMsY192ZWMpOwotKyAgICAgcGJfdmVjID0gKHZlY3RvciBzaWduZWQgc2hvcnQpIHZlY19z dWIoYV92ZWMgLCBjX3ZlYyk7Ci0rICAgICBwY192ZWMgPSB2ZWNfYWRkKHBhX3ZlYyxwYl92ZWMp OwotKyAgICAgcGFfdmVjID0gdmVjX2FicyhwYV92ZWMpOwotKyAgICAgcGJfdmVjID0gdmVjX2Fi cyhwYl92ZWMpOwotKyAgICAgcGNfdmVjID0gdmVjX2FicyhwY192ZWMpOwotKyAgICAgc21hbGxl c3RfdmVjID0gdmVjX21pbihwY192ZWMsIHZlY19taW4ocGFfdmVjLHBiX3ZlYykpOwotKyAgICAg bmVhcmVzdF92ZWMgPSAgaWZfdGhlbl9lbHNlKAotKyAgICAgICAgICAgdmVjX2NtcGVxKHBhX3Zl YyxzbWFsbGVzdF92ZWMpLAotKyAgICAgICAgICAgYV92ZWMsCi0rICAgICAgICAgICBpZl90aGVu X2Vsc2UoCi0rICAgICAgICAgICAgIHZlY19jbXBlcShwYl92ZWMsc21hbGxlc3RfdmVjKSwKLSsg ICAgICAgICAgICAgYl92ZWMsCi0rICAgICAgICAgICAgIGNfdmVjCi0rICAgICAgICAgICAgICkK LSsgICAgICAgICAgICk7Ci0rICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYywodnN4X3Nob3J0 X3RvX2NoYXIobmVhcmVzdF92ZWMsMiwzKSkpOwotKwotKyAgICAgYV92ZWMgPSB2c3hfY2hhcl90 b19zaG9ydCh2ZWNfcGVybShycF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX0xFRlRTSElGVEVE M18zKSwzLDMpOwotKyAgICAgYl92ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShwcF92 ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX05PVF9TSElGVEVEM18zKSwzLDMpOwotKyAgICAgY192 ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShwcF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwg VlNYX0xFRlRTSElGVEVEM18zKSwzLDMpOwotKyAgICAgcGFfdmVjID0gKHZlY3RvciBzaWduZWQg c2hvcnQpIHZlY19zdWIoYl92ZWMsY192ZWMpOwotKyAgICAgcGJfdmVjID0gKHZlY3RvciBzaWdu ZWQgc2hvcnQpIHZlY19zdWIoYV92ZWMgLCBjX3ZlYyk7Ci0rICAgICBwY192ZWMgPSB2ZWNfYWRk KHBhX3ZlYyxwYl92ZWMpOwotKyAgICAgcGFfdmVjID0gdmVjX2FicyhwYV92ZWMpOwotKyAgICAg cGJfdmVjID0gdmVjX2FicyhwYl92ZWMpOwotKyAgICAgcGNfdmVjID0gdmVjX2FicyhwY192ZWMp OwotKyAgICAgc21hbGxlc3RfdmVjID0gdmVjX21pbihwY192ZWMsIHZlY19taW4ocGFfdmVjLHBi X3ZlYykpOwotKyAgICAgbmVhcmVzdF92ZWMgPSAgaWZfdGhlbl9lbHNlKAotKyAgICAgICAgICAg dmVjX2NtcGVxKHBhX3ZlYyxzbWFsbGVzdF92ZWMpLAotKyAgICAgICAgICAgYV92ZWMsCi0rICAg ICAgICAgICBpZl90aGVuX2Vsc2UoCi0rICAgICAgICAgICAgIHZlY19jbXBlcShwYl92ZWMsc21h bGxlc3RfdmVjKSwKLSsgICAgICAgICAgICAgYl92ZWMsCi0rICAgICAgICAgICAgIGNfdmVjCi0r ICAgICAgICAgICAgICkKLSsgICAgICAgICAgICk7Ci0rICAgICBycF92ZWMgPSB2ZWNfYWRkKHJw X3ZlYywodnN4X3Nob3J0X3RvX2NoYXIobmVhcmVzdF92ZWMsMywzKSkpOwotKwotKyAgICAgYV92 ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShycF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwg VlNYX0xFRlRTSElGVEVENF8zKSw0LDMpOwotKyAgICAgYl92ZWMgPSB2c3hfY2hhcl90b19zaG9y dCh2ZWNfcGVybShwcF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX05PVF9TSElGVEVENF8zKSw0 LDMpOwotKyAgICAgY192ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShwcF92ZWMgLCBW U1hfQ0hBUl9aRVJPICwgVlNYX0xFRlRTSElGVEVENF8zKSw0LDMpOwotKyAgICAgcGFfdmVjID0g KHZlY3RvciBzaWduZWQgc2hvcnQpIHZlY19zdWIoYl92ZWMsY192ZWMpOwotKyAgICAgcGJfdmVj ID0gKHZlY3RvciBzaWduZWQgc2hvcnQpIHZlY19zdWIoYV92ZWMgLCBjX3ZlYyk7Ci0rICAgICBw Y192ZWMgPSB2ZWNfYWRkKHBhX3ZlYyxwYl92ZWMpOwotKyAgICAgcGFfdmVjID0gdmVjX2Ficyhw YV92ZWMpOwotKyAgICAgcGJfdmVjID0gdmVjX2FicyhwYl92ZWMpOwotKyAgICAgcGNfdmVjID0g dmVjX2FicyhwY192ZWMpOwotKyAgICAgc21hbGxlc3RfdmVjID0gdmVjX21pbihwY192ZWMsIHZl Y19taW4ocGFfdmVjLHBiX3ZlYykpOwotKyAgICAgbmVhcmVzdF92ZWMgPSAgaWZfdGhlbl9lbHNl KAotKyAgICAgICAgICAgdmVjX2NtcGVxKHBhX3ZlYyxzbWFsbGVzdF92ZWMpLAotKyAgICAgICAg ICAgYV92ZWMsCi0rICAgICAgICAgICBpZl90aGVuX2Vsc2UoCi0rICAgICAgICAgICAgIHZlY19j bXBlcShwYl92ZWMsc21hbGxlc3RfdmVjKSwKLSsgICAgICAgICAgICAgYl92ZWMsCi0rICAgICAg ICAgICAgIGNfdmVjCi0rICAgICAgICAgICAgICkKLSsgICAgICAgICAgICk7Ci0rICAgICBycF92 ZWMgPSB2ZWNfYWRkKHJwX3ZlYywodnN4X3Nob3J0X3RvX2NoYXIobmVhcmVzdF92ZWMsNCwzKSkp OwotKwotKyAgICAgdmVjX3N0KHJwX3ZlYywwLHJwKTsKLSsKLSsgICAgIHJwICs9IDE1OwotKyAg ICAgcHAgKz0gMTU7Ci0rICAgICBpc3RvcCAtPSAxNjsKLSsKLSsgICAgIC8qIFNpbmNlIDE2ICUg YnBwID0gMTYgJSAzID0gMSwgbGFzdCBlbGVtZW50IG9mIGFycmF5IG11c3QKLSsgICAgICAqIGJl IHByb2NlZWRlZCBtYW51YWxseQotKyAgICAgICovCi0rICAgICB2c3hfcGFldGhfcHJvY2Vzcyhy cCxwcCxhLGIsYyxwYSxwYixwYyxicHApCi0rICB9Ci0rCi0rICBpZihpc3RvcCA+IDApCi0rICAg ICBmb3IgKGkgPSAwOyBpIDwgaXN0b3AgJSAxNjsgaSsrKQotKyAgICAgewotKyAgICAgICAgdnN4 X3BhZXRoX3Byb2Nlc3MocnAscHAsYSxiLGMscGEscGIscGMsYnBwKQotKyAgICAgfQotK30KLSsK LSsjZW5kaWYgLyogUE5HX1BPV0VSUENfVlNYX09QVCA+IDAgKi8KLSsjZW5kaWYgLyogUE5HX1BP V0VSUENfVlNYX0lNUExFTUVOVEFUSU9OID09IDEgKGludHJpbnNpY3MpICovCi0rI2VuZGlmIC8q IFJFQUQgKi8KLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2xpYnBuZy9wb3dlcnBjL3Bv d2VycGNfaW5pdC5jCi1AQCAtMCwwICsxLDEyNSBAQAotKwotKy8qIHBvd2VycGNfaW5pdC5jIC0g UE9XRVJQQyBvcHRpbWlzZWQgZmlsdGVyIGZ1bmN0aW9ucwotKyAqCi0rICogQ29weXJpZ2h0IChj KSAyMDE3IEdsZW5uIFJhbmRlcnMtUGVocnNvbgotKyAqIFdyaXR0ZW4gYnkgVmFkaW0gQmFya292 LCAyMDE3LgotKyAqIExhc3QgY2hhbmdlZCBpbiBsaWJwbmcgMS42LjI5IFtNYXJjaCAxNiwgMjAx N10KLSsgKgotKyAqIFRoaXMgY29kZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgbGlicG5nIGxpY2Vu c2UuCi0rICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSB0aGUg ZGlzY2xhaW1lcgotKyAqIGFuZCBsaWNlbnNlIGluIHBuZy5oCi0rICovCi0rLyogQmVsb3csIGFm dGVyIGNoZWNraW5nIF9fbGludXhfXywgdmFyaW91cyBub24tQzkwIFBPU0lYIDEwMDMuMSBmdW5j dGlvbnMgYXJlCi0rICogY2FsbGVkLgotKyAqLwotKyNkZWZpbmUgX1BPU0lYX1NPVVJDRSAxCi0r Ci0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgIi4uL3BuZ3ByaXYuaCIKLSsKLSsjaWZk ZWYgUE5HX1JFQURfU1VQUE9SVEVECi0rCi0rI2lmIFBOR19QT1dFUlBDX1ZTWF9PUFQgPiAwCi0r I2lmZGVmIFBOR19QT1dFUlBDX1ZTWF9DSEVDS19TVVBQT1JURUQgLyogRG8gcnVuLXRpbWUgY2hl Y2tzICovCi0rLyogV0FSTklORzogaXQgaXMgc3Ryb25nbHkgcmVjb21tZW5kZWQgdGhhdCB5b3Ug ZG8gbm90IGJ1aWxkIGxpYnBuZyB3aXRoCi0rICogcnVuLXRpbWUgY2hlY2tzIGZvciBDUFUgZmVh dHVyZXMgaWYgYXQgYWxsIHBvc3NpYmxlLiAgSW4gdGhlIGNhc2Ugb2YgdGhlIFBvd2VyUEMKLSsg KiBWU1ggaW5zdHJ1Y3Rpb25zIHRoZXJlIGlzIG5vIHByb2Nlc3Nvci1zcGVjaWZpYyB3YXkgb2Yg ZGV0ZWN0aW5nIHRoZQotKyAqIHByZXNlbmNlIG9mIHRoZSByZXF1aXJlZCBzdXBwb3J0LCB0aGVy ZWZvcmUgcnVuLXRpbWUgZGV0ZWN0aW9uIGlzIGV4dHJlbWVseQotKyAqIE9TIHNwZWNpZmljLgot KyAqCi0rICogWW91IG1heSBzZXQgdGhlIG1hY3JvIFBOR19QT1dFUlBDX1ZTWF9GSUxFIHRvIHRo ZSBmaWxlIG5hbWUgb2YgZmlsZSBjb250YWluaW5nCi0rICogYSBmcmFnbWVudCBvZiBDIHNvdXJj ZSBjb2RlIHdoaWNoIGRlZmluZXMgdGhlIHBuZ19oYXZlX3ZzeCBmdW5jdGlvbi4gIFRoZXJlCi0r ICogYXJlIGEgbnVtYmVyIG9mIGltcGxlbWVudGF0aW9ucyBpbiBjb250cmliL3Bvd2VycGMtdnN4 LCBidXQgdGhlIG9ubHkgb25lIHRoYXQKLSsgKiBoYXMgcGFydGlhbCBzdXBwb3J0IGlzIGNvbnRy aWIvcG93ZXJwYy12c3gvbGludXguYyAtIGEgZ2VuZXJpYyBMaW51eAotKyAqIGltcGxlbWVudGF0 aW9uIHdoaWNoIHJlYWRzIC9wcm9jL2NwdWZpbm8uCi0rICovCi0rI2lmbmRlZiBQTkdfUE9XRVJQ Q19WU1hfRklMRQotKyMgIGlmZGVmIF9fbGludXhfXwotKyMgICAgIGRlZmluZSAgUE5HX1BPV0VS UENfVlNYX0ZJTEUgImNvbnRyaWIvcG93ZXJwYy12c3gvbGludXhfYXV4LmMiCi0rIyAgZW5kaWYK LSsjZW5kaWYKLSsKLSsjaWZkZWYgUE5HX1BPV0VSUENfVlNYX0ZJTEUKLSsKLSsjaW5jbHVkZSA8 c2lnbmFsLmg+IC8qIGZvciBzaWdfYXRvbWljX3QgKi8KLStzdGF0aWMgaW50IHBuZ19oYXZlX3Zz eChwbmdfc3RydWN0cCBwbmdfcHRyKTsKLSsjaW5jbHVkZSBQTkdfUE9XRVJQQ19WU1hfRklMRQot KwotKyNlbHNlICAvKiBQTkdfUE9XRVJQQ19WU1hfRklMRSAqLwotKyMgIGVycm9yICJQTkdfUE9X RVJQQ19WU1hfRklMRSB1bmRlZmluZWQ6IG5vIHN1cHBvcnQgZm9yIHJ1bi10aW1lIFBPV0VSUEMg VlNYIGNoZWNrcyIKLSsjZW5kaWYgLyogUE5HX1BPV0VSUENfVlNYX0ZJTEUgKi8KLSsjZW5kaWYg LyogUE5HX1BPV0VSUENfVlNYX0NIRUNLX1NVUFBPUlRFRCAqLwotKwotK3ZvaWQKLStwbmdfaW5p dF9maWx0ZXJfZnVuY3Rpb25zX3ZzeChwbmdfc3RydWN0cCBwcCwgdW5zaWduZWQgaW50IGJwcCkK LSt7Ci0rICAgLyogVGhlIHN3aXRjaCBzdGF0ZW1lbnQgaXMgY29tcGlsZWQgaW4gZm9yIFBPV0VS UENfVlNYX0FQSSwgdGhlIGNhbGwgdG8KLSsgICAgKiBwbmdfaGF2ZV92c3ggaXMgY29tcGlsZWQg aW4gZm9yIFBPV0VSUENfVlNYX0NIRUNLLiBJZiBib3RoIGFyZSBkZWZpbmVkCi0rICAgICogdGhl IGNoZWNrIGlzIG9ubHkgcGVyZm9ybWVkIGlmIHRoZSBBUEkgaGFzIG5vdCBzZXQgdGhlIFBvd2Vy UEMgb3B0aW9uIG9uCi0rICAgICogb3Igb2ZmIGV4cGxpY2l0bHkuIEluIHRoaXMgY2FzZSB0aGUg Y2hlY2sgY29udHJvbHMgd2hhdCBoYXBwZW5zLgotKyAgICAqLwotKwotKyNpZmRlZiBQTkdfUE9X RVJQQ19WU1hfQVBJX1NVUFBPUlRFRAotKyAgIHN3aXRjaCAoKHBwLT5vcHRpb25zID4+IFBOR19Q T1dFUlBDX1ZTWCkgJiAzKQotKyAgIHsKLSsgICAgICBjYXNlIFBOR19PUFRJT05fVU5TRVQ6Ci0r ICAgICAgICAgLyogQWxsb3cgdGhlIHJ1bi10aW1lIGNoZWNrIHRvIGV4ZWN1dGUgaWYgaXQgaGFz IGJlZW4gZW5hYmxlZCAtCi0rICAgICAgICAgICogdGh1cyBib3RoIEFQSSBhbmQgQ0hFQ0sgY2Fu IGJlIHR1cm5lZCBvbi4gIElmIGl0IGlzbid0IHN1cHBvcnRlZAotKyAgICAgICAgICAqIHRoaXMg Y2FzZSB3aWxsIGZhbGwgdGhyb3VnaCB0byB0aGUgJ2RlZmF1bHQnIGJlbG93LCB3aGljaCBqdXN0 Ci0rICAgICAgICAgICogcmV0dXJucy4KLSsgICAgICAgICAgKi8KLSsjZW5kaWYgLyogUE5HX1BP V0VSUENfVlNYX0FQSV9TVVBQT1JURUQgKi8KLSsjaWZkZWYgUE5HX1BPV0VSUENfVlNYX0NIRUNL X1NVUFBPUlRFRAotKyAgICAgICAgIHsKLSsgICAgICAgICAgICBzdGF0aWMgdm9sYXRpbGUgc2ln X2F0b21pY190IG5vX3ZzeCA9IC0xOyAvKiBub3QgY2hlY2tlZCAqLwotKwotKyAgICAgICAgICAg IGlmIChub192c3ggPCAwKQotKyAgICAgICAgICAgICAgIG5vX3ZzeCA9ICFwbmdfaGF2ZV92c3go cHApOwotKwotKyAgICAgICAgICAgIGlmIChub192c3gpCi0rICAgICAgICAgICAgICAgcmV0dXJu OwotKyAgICAgICAgIH0KLSsjaWZkZWYgUE5HX1BPV0VSUENfVlNYX0FQSV9TVVBQT1JURUQKLSsg ICAgICAgICBicmVhazsKLSsjZW5kaWYKLSsjZW5kaWYgLyogUE5HX1BPV0VSUENfVlNYX0NIRUNL X1NVUFBPUlRFRCAqLwotKwotKyNpZmRlZiBQTkdfUE9XRVJQQ19WU1hfQVBJX1NVUFBPUlRFRAot KyAgICAgIGRlZmF1bHQ6IC8qIE9GRiBvciBJTlZBTElEICovCi0rICAgICAgICAgcmV0dXJuOwot KwotKyAgICAgIGNhc2UgUE5HX09QVElPTl9PTjoKLSsgICAgICAgICAvKiBPcHRpb24gdHVybmVk IG9uICovCi0rICAgICAgICAgYnJlYWs7Ci0rICAgfQotKyNlbmRpZgotKwotKyAgIC8qIElNUE9S VEFOVDogYW55IG5ldyBpbnRlcm5hbCBmdW5jdGlvbnMgdXNlZCBoZXJlIG11c3QgYmUgZGVjbGFy ZWQgdXNpbmcKLSsgICAgKiBQTkdfSU5URVJOQUxfRlVOQ1RJT04gaW4gLi4vcG5ncHJpdi5oLiAg VGhpcyBpcyByZXF1aXJlZCBzbyB0aGF0IHRoZQotKyAgICAqICdwcmVmaXgnIG9wdGlvbiB0byBj b25maWd1cmUgd29ya3M6Ci0rICAgICoKLSsgICAgKiAgICAuL2NvbmZpZ3VyZSAtLXdpdGgtbGli cG5nLXByZWZpeD1mb29iYXJfCi0rICAgICoKLSsgICAgKiBWZXJpZnkgeW91IGhhdmUgZ290IHRo aXMgcmlnaHQgYnkgcnVubmluZyB0aGUgYWJvdmUgY29tbWFuZCwgZG9pbmcgYSBidWlsZAotKyAg ICAqIGFuZCBleGFtaW5pbmcgcG5ncHJlZml4Lmg7IGl0IG11c3QgY29udGFpbiBhICNkZWZpbmUg Zm9yIGV2ZXJ5IGV4dGVybmFsCi0rICAgICogZnVuY3Rpb24geW91IGFkZC4gIChOb3RpY2UgdGhh dCB0aGlzIGhhcHBlbnMgYXV0b21hdGljYWxseSBmb3IgdGhlCi0rICAgICogaW5pdGlhbGl6YXRp b24gZnVuY3Rpb24uKQotKyAgICAqLwotKyAgIHBwLT5yZWFkX2ZpbHRlcltQTkdfRklMVEVSX1ZB TFVFX1VQLTFdID0gcG5nX3JlYWRfZmlsdGVyX3Jvd191cF92c3g7Ci0rCi0rICAgaWYgKGJwcCA9 PSAzKQotKyAgIHsKLSsgICAgICBwcC0+cmVhZF9maWx0ZXJbUE5HX0ZJTFRFUl9WQUxVRV9TVUIt MV0gPSBwbmdfcmVhZF9maWx0ZXJfcm93X3N1YjNfdnN4OwotKyAgICAgIHBwLT5yZWFkX2ZpbHRl cltQTkdfRklMVEVSX1ZBTFVFX0FWRy0xXSA9IHBuZ19yZWFkX2ZpbHRlcl9yb3dfYXZnM192c3g7 Ci0rICAgICAgcHAtPnJlYWRfZmlsdGVyW1BOR19GSUxURVJfVkFMVUVfUEFFVEgtMV0gPSBwbmdf cmVhZF9maWx0ZXJfcm93X3BhZXRoM192c3g7Ci0rICAgfQotKwotKyAgIGVsc2UgaWYgKGJwcCA9 PSA0KQotKyAgIHsKLSsgICAgICBwcC0+cmVhZF9maWx0ZXJbUE5HX0ZJTFRFUl9WQUxVRV9TVUIt MV0gPSBwbmdfcmVhZF9maWx0ZXJfcm93X3N1YjRfdnN4OwotKyAgICAgIHBwLT5yZWFkX2ZpbHRl cltQTkdfRklMVEVSX1ZBTFVFX0FWRy0xXSA9IHBuZ19yZWFkX2ZpbHRlcl9yb3dfYXZnNF92c3g7 Ci0rICAgICAgcHAtPnJlYWRfZmlsdGVyW1BOR19GSUxURVJfVkFMVUVfUEFFVEgtMV0gPSBwbmdf cmVhZF9maWx0ZXJfcm93X3BhZXRoNF92c3g7Ci0rICAgfQotK30KLSsjZW5kaWYgLyogUE5HX1BP V0VSUENfVlNYX09QVCA+IDAgKi8KLSsjZW5kaWYgLyogUkVBRCAqLwotLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9sc3MvbGludXhfc3lzY2FsbF9zdXBw b3J0LmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv bHNzL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oCi1AQCAtMzkxNCw3ICszOTE0LDcgQEAgc3RydWN0 IGtlcm5lbF9zdGF0ZnMgewotICAgICAgIExTU19SRUcoMiwgYnVmKTsKLSAgICAgICBMU1NfQk9E WSh2b2lkKiwgbW1hcDIsICIwIihfX3IyKSk7Ci0gICAgIH0KLS0jZWxzZQotKyNlbGlmICFkZWZp bmVkKF9fcG93ZXJwYzY0X18pIC8qIHBwYzY0IGRvZXNuJ3QgaGF2ZSBtbWFwMiAqLwotICAgICAj ZGVmaW5lIF9fTlJfX21tYXAyIF9fTlJfbW1hcDIKLSAgICAgTFNTX0lOTElORSBfc3lzY2FsbDYo dm9pZCosIF9tbWFwMiwgICAgICAgICAgICB2b2lkKiwgcywKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgc2l6ZV90LCAgICAgICAgICAgICAgICAgICBsLCBpbnQsICAgICAgICAgICAgICAgcCwK LUBAIC00MDQ1LDcgKzQwNDUsNyBAQCBzdHJ1Y3Qga2VybmVsX3N0YXRmcyB7Ci0gICAjaWYgZGVm aW5lZChfX2kzODZfXykgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotICAgICAgIGRlZmluZWQoX19BUk1fQVJDSF8zX18pIHx8IGRlZmluZWQo X19BUk1fRUFCSV9fKSB8fCAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIChkZWZpbmVkKF9f bWlwc19fKSAmJiBfTUlQU19TSU0gPT0gX01JUFNfU0lNX0FCSTMyKSB8fCAgICAgICAgICAgICAg ICAgICBcCi0tICAgICAgZGVmaW5lZChfX1BQQ19fKSB8fCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgKGRlZmluZWQoX19QUENfXykg JiYgIWRlZmluZWQoX19wb3dlcnBjNjRfXykpIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAoZGVmaW5lZChfX3MzOTBfXykgJiYg IWRlZmluZWQoX19zMzkweF9fKSkKLSAgICAgLyogT24gdGhlc2UgYXJjaGl0ZWN0dXJlcywgaW1w bGVtZW50IG1tYXAoKSB3aXRoIG1tYXAyKCkuICovCi0gICAgIExTU19JTkxJTkUgdm9pZCogTFNT X05BTUUobW1hcCkodm9pZCAqcywgc2l6ZV90IGwsIGludCBwLCBpbnQgZiwgaW50IGQsCi0tLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L25vZGUvbm9kZS5w eQotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ub2Rl L25vZGUucHkKLUBAIC0xMCwxMSArMTAsMTIgQEAgaW1wb3J0IHN5cwotIAotIAotIGRlZiBHZXRC aW5hcnlQYXRoKCk6Ci0tICByZXR1cm4gb3NfcGF0aC5qb2luKG9zX3BhdGguZGlybmFtZShfX2Zp bGVfXyksICp7Ci0tICAgICdEYXJ3aW4nOiAoJ21hYycsICdub2RlLWRhcndpbi14NjQnLCAnYmlu JywgJ25vZGUnKSwKLS0gICAgJ0xpbnV4JzogKCdsaW51eCcsICdub2RlLWxpbnV4LXg2NCcsICdi aW4nLCAnbm9kZScpLAotLSAgICAnV2luZG93cyc6ICgnd2luJywgJ25vZGUuZXhlJyksCi0tICB9 W3BsYXRmb3JtLnN5c3RlbSgpXSkKLSsgIHJldHVybiAiL3Vzci9iaW4vbm9kZSIKLSsgICNyZXR1 cm4gb3NfcGF0aC5qb2luKG9zX3BhdGguZGlybmFtZShfX2ZpbGVfXyksICp7Ci0rICAjICAnRGFy d2luJzogKCdtYWMnLCAnbm9kZS1kYXJ3aW4teDY0JywgJ2JpbicsICdub2RlJyksCi0rICAjICAn TGludXgnOiAoJ2xpbnV4JywgJ25vZGUtbGludXgteDY0JywgJ2JpbicsICdub2RlJyksCi0rICAj ICAnV2luZG93cyc6ICgnd2luJywgJ25vZGUuZXhlJyksCi0rICAjfVtwbGF0Zm9ybS5zeXN0ZW0o KV0pCi0gCi0gCi0gZGVmIFJ1bk5vZGUoY21kX3BhcnRzLCBzdGRvdXQ9Tm9uZSk6Ci0tLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3BkZml1bS90aGlyZF9w YXJ0eS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3BhZ2VfYWxsb2NhdG9yX2Nv bnN0YW50cy5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L3BkZml1bS90aGlyZF9wYXJ0eS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9y L3BhZ2VfYWxsb2NhdG9yX2NvbnN0YW50cy5oCi1AQCAtMTEsNyArMTEsNyBAQAotIAotIG5hbWVz cGFjZSBwZGZpdW0gewotIG5hbWVzcGFjZSBiYXNlIHsKLS0jaWYgZGVmaW5lZChPU19XSU4pCi0r I2lmIGRlZmluZWQoT1NfV0lOKSB8fCBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQotIHN0YXRpYyBj b25zdGV4cHIgc2l6ZV90IGtQYWdlQWxsb2NhdGlvbkdyYW51bGFyaXR5U2hpZnQgPSAxNjsgIC8v IDY0S0IKLSAjZWxpZiBkZWZpbmVkKF9NSVBTX0FSQ0hfTE9PTkdTT04pCi0gc3RhdGljIGNvbnN0 ZXhwciBzaXplX3Qga1BhZ2VBbGxvY2F0aW9uR3JhbnVsYXJpdHlTaGlmdCA9IDE0OyAgLy8gMTZL QgotQEAgLTI3LDYgKzI3LDEwIEBAIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtQYWdlQWxsb2Nh dGlvbkdyYW51bGFyaXR5QmFzZU1hc2sgPQotIAotICNpZiBkZWZpbmVkKF9NSVBTX0FSQ0hfTE9P TkdTT04pCi0gc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1N5c3RlbVBhZ2VTaXplID0gMTYzODQ7 Ci0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NCkKLSsvLyBUT0RPOiBtb2Rlcm4gcHBjNjQg Y2FuIGRvIDRrIGFuZCA2NGsgcGFnZSBzaXplcwotKy8vIGZvciBub3csIDY0ayBpcyBhc3N1bWVk Ci0rc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1N5c3RlbVBhZ2VTaXplID0gNjU1MzY7Ci0gI2Vs c2UKLSBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrU3lzdGVtUGFnZVNpemUgPSA0MDk2OwotICNl bmRpZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9w ZGZpdW0vdGhpcmRfcGFydHkvYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9wYXJ0 aXRpb25fYWxsb2NfY29uc3RhbnRzLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvcGRmaXVtL3RoaXJkX3BhcnR5L2Jhc2UvYWxsb2NhdG9yL3BhcnRp dGlvbl9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jX2NvbnN0YW50cy5oCi1AQCAtMzMsNiArMzMs OCBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IGtCdWNrZXRTaGlmdCA9IChrQWxsb2NhdGlvbkdyYW51 bGFyaXR5ID09IDgpID8gMyA6IDI7Ci0gLy8gdXAgYWdhaW5zdCB0aGUgZW5kIG9mIGEgc3lzdGVt IHBhZ2UuCi0gI2lmIGRlZmluZWQoX01JUFNfQVJDSF9MT09OR1NPTikKLSBzdGF0aWMgY29uc3Qg c2l6ZV90IGtQYXJ0aXRpb25QYWdlU2hpZnQgPSAxNjsgIC8vIDY0S0IKLSsjZWxpZiBkZWZpbmVk KEFSQ0hfQ1BVX1BQQzY0KQotK3N0YXRpYyBjb25zdCBzaXplX3Qga1BhcnRpdGlvblBhZ2VTaGlm dCA9IDE4OyAgLy8gMjU2S0IKLSAjZWxzZQotIHN0YXRpYyBjb25zdCBzaXplX3Qga1BhcnRpdGlv blBhZ2VTaGlmdCA9IDE0OyAgLy8gMTZLQgotICNlbmRpZgotLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9zcWxpdGUvYW1hbGdhbWF0aW9uL3NxbGl0ZTMu YwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9zcWxp dGUvYW1hbGdhbWF0aW9uL3NxbGl0ZTMuYwotQEAgLTEzOTM3LDcgKzEzOTM3LDggQEAgdHlwZWRl ZiBJTlQxNl9UWVBFIExvZ0VzdDsKLSAjIGlmIGRlZmluZWQoaTM4NikgICAgIHx8IGRlZmluZWQo X19pMzg2X18pICAgfHwgZGVmaW5lZChfTV9JWDg2KSB8fCAgICBcCi0gICAgICBkZWZpbmVkKF9f eDg2XzY0KSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX01fWDY0KSAgfHwgICAg XAotICAgICAgZGVmaW5lZChfTV9BTUQ2NCkgfHwgZGVmaW5lZChfTV9BUk0pICAgICB8fCBkZWZp bmVkKF9feDg2KSAgIHx8ICAgIFwKLS0gICAgIGRlZmluZWQoX19hcm1fXykgIHx8IGRlZmluZWQo X01fQVJNNjQpCi0rICAgICBkZWZpbmVkKF9fYXJtX18pICB8fCBkZWZpbmVkKF9NX0FSTTY0KSAg IHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykgJiYgXAotKyAgICAgKF9fQllURV9PUkRFUl9fID09 IF9fT1JERVJfTElUVExFX0VORElBTl9fKQotICMgICBkZWZpbmUgU1FMSVRFX0JZVEVPUkRFUiAg ICAxMjM0Ci0gIyBlbGlmIGRlZmluZWQoc3BhcmMpICAgIHx8IGRlZmluZWQoX19wcGNfXykKLSAj ICAgZGVmaW5lIFNRTElURV9CWVRFT1JERVIgICAgNDMyMQotLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9zcWxpdGUvc3JjL3NyYy9zcWxpdGVJbnQuaAot KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9zcWxpdGUv c3JjL3NyYy9zcWxpdGVJbnQuaAotQEAgLTgzMyw3ICs4MzMsOCBAQCB0eXBlZGVmIElOVDE2X1RZ UEUgTG9nRXN0OwotICMgaWYgZGVmaW5lZChpMzg2KSAgICAgfHwgZGVmaW5lZChfX2kzODZfXykg ICB8fCBkZWZpbmVkKF9NX0lYODYpIHx8ICAgIFwKLSAgICAgIGRlZmluZWQoX194ODZfNjQpIHx8 IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfTV9YNjQpICB8fCAgICBcCi0gICAgICBk ZWZpbmVkKF9NX0FNRDY0KSB8fCBkZWZpbmVkKF9NX0FSTSkgICAgIHx8IGRlZmluZWQoX194ODYp ICAgfHwgICAgXAotLSAgICAgZGVmaW5lZChfX2FybV9fKSAgfHwgZGVmaW5lZChfTV9BUk02NCkK LSsgICAgIGRlZmluZWQoX19hcm1fXykgIHx8IGRlZmluZWQoX01fQVJNNjQpICAgfHwgZGVmaW5l ZChfX3Bvd2VycGM2NF9fKSAmJiBcCi0rICAgICAoX19CWVRFX09SREVSX18gPT0gX19PUkRFUl9M SVRUTEVfRU5ESUFOX18pCi0gIyAgIGRlZmluZSBTUUxJVEVfQllURU9SREVSICAgIDEyMzQKLSAj IGVsaWYgZGVmaW5lZChzcGFyYykgICAgfHwgZGVmaW5lZChfX3BwY19fKQotICMgICBkZWZpbmUg U1FMSVRFX0JZVEVPUkRFUiAgICA0MzIxCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kaWZmZXJf YmxvY2suY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2RpZmZlcl9ibG9jay5jYwotQEAgLTMw LDExICszMCw3IEBAIGJvb2wgVmVjdG9yRGlmZmVyZW5jZShjb25zdCB1aW50OF90KiBpbWFnZTEs IGNvbnN0IHVpbnQ4X3QqIGltYWdlMikgewotICAgc3RhdGljIGJvb2wgKCpkaWZmX3Byb2MpKGNv bnN0IHVpbnQ4X3QqLCBjb25zdCB1aW50OF90KikgPSBudWxscHRyOwotIAotICAgaWYgKCFkaWZm X3Byb2MpIHsKLS0jaWYgZGVmaW5lZChXRUJSVENfQVJDSF9BUk1fRkFNSUxZKSB8fCBkZWZpbmVk KFdFQlJUQ19BUkNIX01JUFNfRkFNSUxZKQotLSAgICAvLyBGb3IgQVJNIGFuZCBNSVBTIHByb2Nl c3NvcnMsIGFsd2F5cyB1c2UgQyB2ZXJzaW9uLgotLSAgICAvLyBUT0RPKGhjbGFtKTogSW1wbGVt ZW50IGEgTkVPTiB2ZXJzaW9uLgotLSAgICBkaWZmX3Byb2MgPSAmVmVjdG9yRGlmZmVyZW5jZV9D OwotLSNlbHNlCi0rI2lmIGRlZmluZWQoV0VCUlRDX0FSQ0hfWDg2X0ZBTUlMWSkKLSAgICAgYm9v bCBoYXZlX3NzZTIgPSBXZWJSdGNfR2V0Q1BVSW5mbyhrU1NFMikgIT0gMDsKLSAgICAgLy8gRm9y IHg4NiBwcm9jZXNzb3JzLCBjaGVjayBpZiBTU0UyIGlzIHN1cHBvcnRlZC4KLSAgICAgaWYgKGhh dmVfc3NlMiAmJiBrQmxvY2tTaXplID09IDMyKSB7Ci1AQCAtNDQsNiArNDAsMTAgQEAgYm9vbCBW ZWN0b3JEaWZmZXJlbmNlKGNvbnN0IHVpbnQ4X3QqIGltYWdlMSwgY29uc3QgdWludDhfdCogaW1h Z2UyKSB7Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAgZGlmZl9wcm9jID0gJlZlY3RvckRpZmZlcmVu Y2VfQzsKLSAgICAgfQotKyNlbHNlCi0rICAgIC8vIEZvciBvdGhlciBwcm9jZXNzb3JzLCBhbHdh eXMgdXNlIEMgdmVyc2lvbi4KLSsgICAgLy8gVE9ETyhoY2xhbSk6IEltcGxlbWVudCBhIE5FT04g dmVyc2lvbi4KLSsgICAgZGlmZl9wcm9jID0gJlZlY3RvckRpZmZlcmVuY2VfQzsKLSAjZW5kaWYK LSAgIH0KLSAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvd2VicnRjL3J0Y19iYXNlL3N5c3RlbS9hcmNoLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL3J0Y19iYXNlL3N5c3RlbS9hcmNoLmgK LUBAIC00Nyw2ICs0NywxOCBAQAotICNlbGlmIGRlZmluZWQoX19wbmFjbF9fKQotICNkZWZpbmUg V0VCUlRDX0FSQ0hfMzJfQklUUwotICNkZWZpbmUgV0VCUlRDX0FSQ0hfTElUVExFX0VORElBTgot KyNlbGlmIGRlZmluZWQoX19QUENfXykKLSsjZGVmaW5lIFdFQlJUQ19BUkNIX1BQQ19GQU1JTFkK LSsjaWYgX19CWVRFX09SREVSX18gPT0gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18KLSsjZGVmaW5l IFdFQlJUQ19BUkNIX0xJVFRMRV9FTkRJQU4KLSsjZWxzZQotKyNkZWZpbmUgV0VCUlRDX0FSQ0hf QklHX0VORElBTgotKyNlbmRpZgotKyNpZiBkZWZpbmVkKF9fTFA2NF9fKQotKyNkZWZpbmUgV0VC UlRDX0FSQ0hfNjRfQklUUwotKyNlbHNlCi0rI2RlZmluZSBXRUJSVENfQVJDSF8zMl9CSVRTCi0r I2VuZGlmCi0gI2Vsc2UKLSAjZXJyb3IgUGxlYXNlIGFkZCBzdXBwb3J0IGZvciB5b3VyIGFyY2hp dGVjdHVyZSBpbiB0eXBlZGVmcy5oCi0gI2VuZGlmCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3Y4L0JVSUxELmduCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3Y4L0JVSUxELmduCi1AQCAtNTQ0LDYgKzU0NCwxMiBAQCBjb25maWcoInRvb2xjaGFp biIpIHsKLSAgICAgfQotICAgICBpZiAoaG9zdF9ieXRlb3JkZXIgPT0gImxpdHRsZSIpIHsKLSAg ICAgICBkZWZpbmVzICs9IFsgIlY4X1RBUkdFVF9BUkNIX1BQQ19MRSIgXQotKyAgICAgICAgY2Zs YWdzICs9IFsKLSsgICAgICAgICMgRW5hYmxlIHVzYWdlIG9mIEFsdGlWZWMsIFZTWCwgYW5kIG90 aGVyIFBPV0VSOCBhbmQgaGlnaGVyIGZlYXR1cmVzCi0rICAgICAgICAiLW1jcHU9cG93ZXI4IiwK LSsgICAgICAgICItbWFsdGl2ZWMiLAotKyAgICAgICAgIi1tdnN4IiwKLSsgICAgICBdCi0gICAg IH0gZWxzZSBpZiAoaG9zdF9ieXRlb3JkZXIgPT0gImJpZyIpIHsKLSAgICAgICBkZWZpbmVzICs9 IFsgIlY4X1RBUkdFVF9BUkNIX1BQQ19CRSIgXQotICAgICAgIGlmIChjdXJyZW50X29zID09ICJh aXgiKSB7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Y4L3Rlc3QvQlVJ TEQuZ24KLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdjgvdGVzdC9CVUlM RC5nbgotQEAgLTMxLDcgKzMxLDcgQEAgZ3JvdXAoImduX2FsbCIpIHsKLSAgICAgZGVwcyArPSBb Ci0gICAgICAgImNjdGVzdDpjY3Rlc3QiLAotICAgICAgICJjY3Rlc3Q6Z2VuZXJhdGUtYnl0ZWNv ZGUtZXhwZWN0YXRpb25zIiwKLS0gICAgICAidW5pdHRlc3RzOnVuaXR0ZXN0cyIsCi0rICAgICAg IyJ1bml0dGVzdHM6dW5pdHRlc3RzIiwKLSAgICAgXQotICAgfQotIH0KLUBAIC04MCw5ICs4MCw5 IEBAIGdyb3VwKCJ2OF9ib3RfZGVmYXVsdCIpIHsKLSAgICAgIm1qc3VuaXQ6djhfbWpzdW5pdCIs Ci0gICAgICJta2dyb2tkdW1wOm1rZ3Jva2R1bXAiLAotICAgICAicHJlcGFyc2VyOnY4X3ByZXBh cnNlciIsCi0tICAgICJ1bml0dGVzdHM6dW5pdHRlc3RzIiwKLSsgICAgIyJ1bml0dGVzdHM6dW5p dHRlc3RzIiwKLSAgICAgIndhc20tanM6djhfd2FzbV9qcyIsCi0tICAgICJ3YXNtLXNwZWMtdGVz dHM6djhfd2FzbV9zcGVjX3Rlc3RzIiwKLSsgICAgIyJ3YXNtLXNwZWMtdGVzdHM6djhfd2FzbV9z cGVjX3Rlc3RzIiwKLSAgICAgIndlYmtpdDp2OF93ZWJraXQiLAotICAgXQotIH0KLUBAIC0xMDAs OSArMTAwLDkgQEAgZ3JvdXAoInY4X2RlZmF1bHQiKSB7Ci0gICAgICJtanN1bml0OnY4X21qc3Vu aXQiLAotICAgICAibWtncm9rZHVtcDpta2dyb2tkdW1wIiwKLSAgICAgInByZXBhcnNlcjp2OF9w cmVwYXJzZXIiLAotLSAgICAidW5pdHRlc3RzOnVuaXR0ZXN0cyIsCi0tICAgICJ3YXNtLWpzOnY4 X3dhc21fanMiLAotLSAgICAid2FzbS1zcGVjLXRlc3RzOnY4X3dhc21fc3BlY190ZXN0cyIsCi0r ICAgICMidW5pdHRlc3RzOnVuaXR0ZXN0cyIsCi0rICAgICMid2FzbS1qczp2OF93YXNtX2pzIiwK LSsgICAgIyJ3YXNtLXNwZWMtdGVzdHM6djhfd2FzbV9zcGVjX3Rlc3RzIiwKLSAgIF0KLSB9Ci0g CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwOTEtY2hyb21pdW0tcHBjNjQtbXVz bC5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA5MS1jaHJvbWl1bS1wcGM2NC1tdXNsLnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjAxNGQ4YjU5OC4uMDAwMDAwMDAw MDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDkxLWNocm9taXVtLXBwYzY0LW11c2wucGF0 Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotVGhpcyBpbmNsdWRlcyBhZGRpdGlv bmFsIGJ1aWxkIGZpeGVzIGZvciB0aGUgbXVzbCBsaWJjLgotCi0tLS0gcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvYnBmX2RzbC9zZWNjb21wX21hY3Jvcy5o Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvYnBm X2RzbC9zZWNjb21wX21hY3Jvcy5oCi1AQCAtMTEsMTIgKzExLDE0IEBACi0gLy8gQWxsIHg4Nl82 NCBidWlsZHMgdXNlIGEgbmV3IGVub3VnaCBiaW9uaWMgdG8gaGF2ZSBzeXMvdXNlci5oLgotICNp ZiAhZGVmaW5lZChfX0JJT05JQ19fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pCi0gI2lmICFkZWZp bmVkKF9fbmF0aXZlX2NsaWVudF9ub25zZmlfXykKLSsjaWYgIWRlZmluZWQoX19wb3dlcnBjNjRf XykgfHwgZGVmaW5lZChfX0dMSUJDX18pCi0gI2luY2x1ZGUgPHN5cy91c2VyLmg+Ci0gI2VuZGlm Ci0rI2VuZGlmCi0gI2lmIGRlZmluZWQoX19taXBzX18pCi0gLy8gc3lzL3VzZXIuaCBpbiBlZ2xp YmMgbWlzc2VzIHNpemVfdCBkZWZpbml0aW9uCi0gI2luY2x1ZGUgPHN0ZGRlZi5oPgotLSNlbGlm IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pICYm IGRlZmluZWQoX19HTElCQ19fKQotIC8vIE1hbnVhbGx5IGRlZmluZSBncmVnX3Qgb24gcHBjNjQK LSB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBncmVnX3Q7Ci0gI2VuZGlmCi1AQCAtMzYxLDEx ICszNjMsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgcHRfcmVncyByZWdzX3N0cnVjdDsKLSAjZGVmaW5l IFNFQ0NPTVBfQVJDSCBBVURJVF9BUkNIX1BQQzY0Ci0gI2VuZGlmCi0gCi0tI2RlZmluZSBTRUND T01QX1JFRyhfY3R4LCBfcmVnKSAoKF9jdHgpLT51Y19tY29udGV4dC5yZWdzLT5ncHJbX3JlZ10p Ci0rI2RlZmluZSBTRUNDT01QX1JFRyhfY3R4LCBfcmVnKSAoKChzdHJ1Y3QgcHRfcmVncyAqKShf Y3R4KS0+dWNfbWNvbnRleHQucmVncyktPmdwcltfcmVnXSkKLSAKLSAjZGVmaW5lIFNFQ0NPTVBf UkVTVUxUKF9jdHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDMpCi0gI2RlZmluZSBTRUNDT01QX1NZU0NB TEwoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgMCkKLS0jZGVmaW5lIFNFQ0NPTVBfSVAoX2N0eCkg KF9jdHgpLT51Y19tY29udGV4dC5yZWdzLT5uaXAKLSsjZGVmaW5lIFNFQ0NPTVBfSVAoX2N0eCkg KChzdHJ1Y3QgcHRfcmVncyAqKShfY3R4KS0+dWNfbWNvbnRleHQucmVncyktPm5pcAotICNkZWZp bmUgU0VDQ09NUF9QQVJNMShfY3R4KSBTRUNDT01QX1JFRyhfY3R4LCAzKQotICNkZWZpbmUgU0VD Q09NUF9QQVJNMihfY3R4KSBTRUNDT01QX1JFRyhfY3R4LCA0KQotICNkZWZpbmUgU0VDQ09NUF9Q QVJNMyhfY3R4KSBTRUNDT01QX1JFRyhfY3R4LCA1KQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmL3N5c2NhbGwuY2MKLSsrKyBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJw Zi9zeXNjYWxsLmNjCi1AQCAtNDk3LDkgKzQ5Nyw5IEBAIHZvaWQgU3lzY2FsbDo6UHV0VmFsdWVJ blVjb250ZXh0KGludHB0cl90IHJldF92YWwsIHVjb250ZXh0X3QqIGN0eCkgewotICAgLy8gU2Ft ZSBhcyBNSVBTLCBuZWVkIHRvIGludmVydCByZXQgYW5kIHNldCBlcnJvciByZWdpc3RlciAoY3Iw LlNPKQotICAgaWYgKHJldF92YWwgPD0gLTEgJiYgcmV0X3ZhbCA+PSAtNDA5NSkgewotICAgICBy ZXRfdmFsID0gLXJldF92YWw7Ci0tICAgIGN0eC0+dWNfbWNvbnRleHQucmVncy0+Y2NyIHw9ICgx IDw8IDI4KTsKLSsgICAgKChzdHJ1Y3QgcHRfcmVncyAqKWN0eC0+dWNfbWNvbnRleHQucmVncykt PmNjciB8PSAoMSA8PCAyOCk7Ci0gICB9IGVsc2UgewotLSAgICBjdHgtPnVjX21jb250ZXh0LnJl Z3MtPmNjciAmPSB+KDEgPDwgMjgpOwotKyAgICAoKHN0cnVjdCBwdF9yZWdzICopY3R4LT51Y19t Y29udGV4dC5yZWdzKS0+Y2NyICY9IH4oMSA8PCAyOCk7Ci0gICB9Ci0gI2VuZGlmCi0gICBTRUND T01QX1JFU1VMVChjdHgpID0gc3RhdGljX2Nhc3Q8Z3JlZ190PihyZXRfdmFsKTsKLS0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs L2Jhc2UvaW50ZXJuYWwvdW5zY2FsZWRjeWNsZWNsb2NrLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVy bmFsL3Vuc2NhbGVkY3ljbGVjbG9jay5jYwotQEAgLTIwLDcgKzIwLDcgQEAKLSAjaW5jbHVkZSA8 aW50cmluLmg+Ci0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQoX19wb3dlcnBjX18pIHx8IGRlZmlu ZWQoX19wcGNfXykKLSsjaWYgKGRlZmluZWQoX19wb3dlcnBjX18pIHx8IGRlZmluZWQoX19wcGNf XykpICYmIGRlZmluZWQoX19HTElCQ19fKQotICNpbmNsdWRlIDxzeXMvcGxhdGZvcm0vcHBjLmg+ Ci0gI2VuZGlmCi0gCi1AQCAtNTMsNyArNTMsNyBAQCBkb3VibGUgVW5zY2FsZWRDeWNsZUNsb2Nr OjpGcmVxdWVuY3koKSB7Ci0gICByZXR1cm4gYmFzZV9pbnRlcm5hbDo6Tm9taW5hbENQVUZyZXF1 ZW5jeSgpOwotIH0KLSAKLS0jZWxpZiBkZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBkZWZpbmVkKF9f cHBjX18pCi0rI2VsaWYgKGRlZmluZWQoX19wb3dlcnBjX18pIHx8IGRlZmluZWQoX19wcGNfXykp ICYmIGRlZmluZWQoX19HTElCQ19fKQotIAotIGludDY0X3QgVW5zY2FsZWRDeWNsZUNsb2NrOjpO b3coKSB7Ci0gICByZXR1cm4gX19wcGNfZ2V0X3RpbWViYXNlKCk7Ci0tLS0gcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2lu dGVybmFsL3Vuc2NhbGVkY3ljbGVjbG9jay5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Vuc2Nh bGVkY3ljbGVjbG9jay5oCi1AQCAtNDYsNyArNDYsNyBAQAotIAotIC8vIFRoZSBmb2xsb3dpbmcg cGxhdGZvcm1zIGhhdmUgYW4gaW1wbGVtZW50YXRpb24gb2YgYSBoYXJkd2FyZSBjb3VudGVyLgot ICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQo X19hYXJjaDY0X18pIHx8IFwKLS0gIGRlZmluZWQoX19wb3dlcnBjX18pIHx8IGRlZmluZWQoX19w cGNfXykgfHwgXAotKyAgKChkZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBkZWZpbmVkKF9fcHBjX18p KSAmJiBkZWZpbmVkKF9fR0xJQkNfXykpIHx8IFwKLSAgIGRlZmluZWQoX01fSVg4NikgfHwgZGVm aW5lZChfTV9YNjQpCi0gI2RlZmluZSBBQlNMX0hBVkVfVU5TQ0FMRURfQ1lDTEVDTE9DS19JTVBM RU1FTlRBVElPTiAxCi0gI2Vsc2UKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dy aXRlcl9jb21tb24vdGhyZWFkX2luZm8uY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9k dW1wX3dyaXRlcl9jb21tb24vdGhyZWFkX2luZm8uY2MKLUBAIC0yNzMsNiArMjczLDkgQEAgdm9p ZCBUaHJlYWRJbmZvOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVKiBvdXQpIGNvbnN0IHsK LSAKLSAjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gCi0rI2luY2x1ZGUgPGFzbS9lbGYu aD4KLSsjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgotKwotIHVpbnRwdHJfdCBUaHJlYWRJbmZvOjpH ZXRJbnN0cnVjdGlvblBvaW50ZXIoKSBjb25zdCB7Ci0gICAgIHJldHVybiBtY29udGV4dC5ncF9y ZWdzW1BUX05JUF07Ci0gfQotQEAgLTI5MCw5ICsyOTMsOSBAQCB2b2lkIFRocmVhZEluZm86OkZp bGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUqIG91dCkgY29uc3QgewotICAgICBvdXQtPmN0ciA9 IG1jb250ZXh0LmdwX3JlZ3NbUFRfQ1RSXTsKLSAgICAgCi0gICAgIGZvciAoaW50IGkgPSAwOyBp IDwgTURfRkxPQVRJTkdTQVZFQVJFQV9QUENfRlBSX0NPVU5UOyBpKyspCi0tICAgICAgICBvdXQt PmZsb2F0X3NhdmUuZnByZWdzW2ldID0gbWNvbnRleHQuZnBfcmVnc1tpXTsKLSsgICAgICAgIG91 dC0+ZmxvYXRfc2F2ZS5mcHJlZ3NbaV0gPSAoKHVpbnQ2NF90ICopJm1jb250ZXh0LmZwX3JlZ3Mp W2ldOwotIAotLSAgICBvdXQtPmZsb2F0X3NhdmUuZnBzY3IgPSBtY29udGV4dC5mcF9yZWdzW05G UFJFRy0xXTsKLSsgICAgb3V0LT5mbG9hdF9zYXZlLmZwc2NyID0gKCh1aW50NjRfdCAqKSZtY29u dGV4dC5mcF9yZWdzKVtFTEZfTkZQUkVHLTFdOwotIAotICAgICBmb3IgKGludCBpID0gMDsgaSA8 IE1EX1ZFQ1RPUlNBVkVBUkVBX1BQQ19WUl9DT1VOVDsgaSsrKQotICAgICAgICAgb3V0LT52ZWN0 b3Jfc2F2ZS5zYXZlX3ZyW2ldID0gXAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBf d3JpdGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9s aW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmNjCi1AQCAtMjU3LDYgKzI1 Nyw5IEBAIHZvaWQgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUg Km91dCwgY29uc3QgdWNvbnRleHRfdCAqdWMpIHsKLSAKLSAjZWxpZiBkZWZpbmVkKF9fcG93ZXJw YzY0X18pCi0gCi0rI2luY2x1ZGUgPGFzbS9lbGYuaD4KLSsjaW5jbHVkZSA8YXNtL3B0cmFjZS5o PgotKwotIHVpbnRwdHJfdCBVQ29udGV4dFJlYWRlcjo6R2V0U3RhY2tQb2ludGVyKGNvbnN0IHVj b250ZXh0X3QqIHVjKSB7Ci0gICAgIHJldHVybiB1Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tNRF9D T05URVhUX1BQQzY0X1JFR19TUF07Ci0gfQotQEAgLTI4MCw5ICsyODMsOSBAQCB2b2lkIFVDb250 ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVKiBvdXQsIGNvbnN0IHVjb250 ZXh0X3QqIHVjLAotICAgICBvdXQtPmN0ciA9IHVjLT51Y19tY29udGV4dC5ncF9yZWdzW1BUX0NU Ul07Ci0gICAgIAotICAgICBmb3IgKGludCBpID0gMDsgaSA8IE1EX0ZMT0FUSU5HU0FWRUFSRUFf UFBDX0ZQUl9DT1VOVDsgaSsrKQotLSAgICAgICAgb3V0LT5mbG9hdF9zYXZlLmZwcmVnc1tpXSA9 IHVjLT51Y19tY29udGV4dC5mcF9yZWdzW2ldOwotKyAgICAgICAgb3V0LT5mbG9hdF9zYXZlLmZw cmVnc1tpXSA9ICgodWludDY0X3QgKikmdWMtPnVjX21jb250ZXh0LmZwX3JlZ3MpW2ldOwotIAot LSAgICBvdXQtPmZsb2F0X3NhdmUuZnBzY3IgPSB1Yy0+dWNfbWNvbnRleHQuZnBfcmVnc1tORlBS RUctMV07Ci0rICAgIG91dC0+ZmxvYXRfc2F2ZS5mcHNjciA9ICgodWludDY0X3QgKikmdWMtPnVj X21jb250ZXh0LmZwX3JlZ3MpW0VMRl9ORlBSRUctMV07Ci0gCi0gICAgIGZvciAoaW50IGkgPSAw OyBpIDwgTURfVkVDVE9SU0FWRUFSRUFfUFBDX1ZSX0NPVU5UOyBpKyspCi0gICAgICAgICBvdXQt PnZlY3Rvcl9zYXZlLnNhdmVfdnJbaV0gPQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hh bmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9o YW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNjCi1AQCAtMTA1LDYgKzEwNSwxMSBAQAotICNkZWZp bmUgUFJfU0VUX1BUUkFDRVIgMHg1OTYxNmQ2MQotICNlbmRpZgotIAotKy8qIG11c2wgaGFjaywg Y2FuJ3QgaW5jbHVkZSBhc20vcHRyYWNlLmggYXMgdGhhdCBjYXVzZXMgY29uZmxpY3RzICovCi0r I2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykgJiYgIWRlZmluZWQoUFRfTklQKQotKyNkZWZpbmUg UFRfTklQIDMyCi0rI2VuZGlmCi0rCi0gbmFtZXNwYWNlIGdvb2dsZV9icmVha3BhZCB7Ci0gCi0g bmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA5Mi1jaHJvbWl1 bS1wcGM2NC1iZS5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA5Mi1jaHJvbWl1bS1wcGM2 NC1iZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2U4MzExYzliYTIuLjAw MDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA5Mi1jaHJvbWl1bS1wcGM2NC1i ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5NzAgKzAsMCBAQAotVGhpcyBhZGRzIGJpZyBl bmRpYW4gc3VwcG9ydC9maXhlcyBpbiBhZGRpdGlvbiB0byB0aGUgYmFzZSBwcGM2NGxlIHBhdGNo LgotCi1QaW5nIHE2NiBpZiB5b3UncmUgdXBkYXRpbmcgcXQ1IGFuZCB0aGUgcGF0Y2ggZG9lcyBu b3QgYXBwbHkgYW55bW9yZS4KLQotU291cmNlOiBodHRwczovL3dpa2kucmFwdG9yY3MuY29tL3cv aW5kZXgucGhwP3RpdGxlPVBvcnRpbmcvQ2hyb21pdW0vQkUKLQotLS0tIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3Bh cnRpdGlvbl9hbGxvYy5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9i YXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvYy5jYwotQEAg LTQ0MCw3ICs0NDAsNyBAQCBzdGF0aWMgc2l6ZV90IFBhcnRpdGlvblB1cmdlUGFnZShpbnRlcm5h bDo6UGFydGl0aW9uUGFnZSogcGFnZSwgYm9vbCBkaXNjYXJkKSB7Ci0gI2VuZGlmCi0gICAgICAg fQotICAgICAgIC8vIFRlcm1pbmF0ZSB0aGUgZnJlZWxpc3QgY2hhaW4uCi0tICAgICAgKmVudHJ5 X3B0ciA9IG51bGxwdHI7Ci0rICAgICAgKmVudHJ5X3B0ciA9IGludGVybmFsOjpQYXJ0aXRpb25G cmVlbGlzdEVudHJ5OjpUcmFuc2Zvcm0obnVsbHB0cik7Ci0gICAgICAgLy8gVGhlIGZyZWVsaXN0 IGhlYWQgaXMgc3RvcmVkIHVubWFza2VkLgotICAgICAgIHBhZ2UtPmZyZWVsaXN0X2hlYWQgPQot ICAgICAgICAgICBpbnRlcm5hbDo6UGFydGl0aW9uRnJlZWxpc3RFbnRyeTo6VHJhbnNmb3JtKHBh Z2UtPmZyZWVsaXN0X2hlYWQpOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS9iYXNlL2kxOG4vaWN1X3V0aWwuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vYmFzZS9pMThuL2ljdV91dGlsLmNjCi1AQCAtNzUsNyArNzUsMTEgQEAgd2NoYXJfdCBn X2RlYnVnX2ljdV9wZl9maWxlbmFtZVtfTUFYX1BBVEhdOwotIC8vIE5vIG5lZWQgdG8gY2hhbmdl IHRoZSBmaWxlbmFtZSBpbiBtdWx0aXBsZSBwbGFjZXMgKGd5cCBmaWxlcywgd2luZG93cwotIC8v IGJ1aWxkIHBrZyBjb25maWd1cmF0aW9ucywgZXRjKS4gJ2wnIHN0YW5kcyBmb3IgTGl0dGxlIEVu ZGlhbi4KLSAvLyBUaGlzIHZhcmlhYmxlIGlzIGV4cG9ydGVkIHRocm91Z2ggdGhlIGhlYWRlciBm aWxlLgotKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4pCi0gY29uc3QgY2hhciBr SWN1RGF0YUZpbGVOYW1lW10gPSAiaWN1ZHRsLmRhdCI7Ci0rI2Vsc2UKLStjb25zdCBjaGFyIGtJ Y3VEYXRhRmlsZU5hbWVbXSA9ICJpY3VkdGIuZGF0IjsKLSsjZW5kaWYKLSAjaWYgZGVmaW5lZChP U19BTkRST0lEKQotIGNvbnN0IGNoYXIga0FuZHJvaWRBc3NldHNJY3VEYXRhRmlsZU5hbWVbXSA9 ICJhc3NldHMvaWN1ZHRsLmRhdCI7Ci0gI2VuZGlmCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL2Jhc2UvbWVtb3J5L3NoYXJlZF9tZW1vcnlfbWFwcGluZ191bml0dGVzdC5j YwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL21lbW9yeS9zaGFy ZWRfbWVtb3J5X21hcHBpbmdfdW5pdHRlc3QuY2MKLUBAIC0xMiw2ICsxMiw3IEBACi0gI2luY2x1 ZGUgImJhc2UvY29udGFpbmVycy9zcGFuLmgiCi0gI2luY2x1ZGUgImJhc2UvbWVtb3J5L3JlYWRf b25seV9zaGFyZWRfbWVtb3J5X3JlZ2lvbi5oIgotICNpbmNsdWRlICJ0ZXN0aW5nL2d0ZXN0L2lu Y2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCIKLSsjaW5jbHVkZSAiYmFzZS9zeXNfYnl0ZW9yZGVyLmgiCi0g Ci0gbmFtZXNwYWNlIGJhc2UgewotIAotQEAgLTY5LDggKzcwLDggQEAgVEVTVF9GKFNoYXJlZE1l bW9yeU1hcHBpbmdUZXN0LCBTcGFuV2l0aEF1dG9EZWR1Y2VkRWxlbWVudENvdW50KSB7Ci0gCi0g ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdyaXRlX3NwYW4uc2l6ZSgpOyArK2kpCi0gICAgIHdy aXRlX3NwYW5baV0gPSBpICsgMTsKLS0gIEVYUEVDVF9FUSgweDA0MDMwMjAxdSwgcmVhZF9zcGFu WzBdKTsKLS0gIEVYUEVDVF9FUSgweDA4MDcwNjA1dSwgcmVhZF9zcGFuWzFdKTsKLSsgIEVYUEVD VF9FUShIb3N0VG9OZXQzMigweDAxMDIwMzA0dSksIHJlYWRfc3BhblswXSk7Ci0rICBFWFBFQ1Rf RVEoSG9zdFRvTmV0MzIoMHgwNTA2MDcwOHUpLCByZWFkX3NwYW5bMV0pOwotIH0KLSAKLSBURVNU X0YoU2hhcmVkTWVtb3J5TWFwcGluZ1Rlc3QsIFNwYW5XaXRoRXhwbGljaXRFbGVtZW50Q291bnQp IHsKLUBAIC05NSwxMyArOTYsMTMgQEAgVEVTVF9GKFNoYXJlZE1lbW9yeU1hcHBpbmdUZXN0LCBT cGFuV2l0aEV4cGxpY2l0RWxlbWVudENvdW50KSB7Ci0gCi0gICBmb3IgKHNpemVfdCBpID0gMDsg aSA8IHdyaXRlX3NwYW4uc2l6ZSgpOyArK2kpCi0gICAgIHdyaXRlX3NwYW5baV0gPSBpICsgMTsK LS0gIEVYUEVDVF9FUSgweDA0MDMwMjAxdSwgcmVhZF9zcGFuWzBdKTsKLS0gIEVYUEVDVF9FUSgw eDA4MDcwNjA1dSwgcmVhZF9zcGFuWzFdKTsKLS0gIEVYUEVDVF9FUSgweDA0MDMwMjAxdSwgcmVh ZF9zcGFuXzJbMF0pOwotKyAgRVhQRUNUX0VRKEhvc3RUb05ldDMyKDB4MDEwMjAzMDR1KSwgcmVh ZF9zcGFuWzBdKTsKLSsgIEVYUEVDVF9FUShIb3N0VG9OZXQzMigweDA1MDYwNzA4dSksIHJlYWRf c3BhblsxXSk7Ci0rICBFWFBFQ1RfRVEoSG9zdFRvTmV0MzIoMHgwMTAyMDMwNHUpLCByZWFkX3Nw YW5fMlswXSk7Ci0gCi0gICBzdGQ6OmZpbGwod3JpdGVfc3Bhbl8yLmJlZ2luKCksIHdyaXRlX3Nw YW5fMi5lbmQoKSwgMCk7Ci0gICBFWFBFQ1RfRVEoMHUsIHJlYWRfc3BhblswXSk7Ci0tICBFWFBF Q1RfRVEoMHgwODA3MDYwNXUsIHJlYWRfc3BhblsxXSk7Ci0rICBFWFBFQ1RfRVEoSG9zdFRvTmV0 MzIoMHgwNTA2MDcwOHUpLCByZWFkX3NwYW5bMV0pOwotICAgRVhQRUNUX0VRKDB1LCByZWFkX3Nw YW5fMlswXSk7Ci0gfQotIAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9i YXNlL21ldHJpY3MvYnVja2V0X3Jhbmdlc191bml0dGVzdC5jYwotKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL21ldHJpY3MvYnVja2V0X3Jhbmdlc191bml0dGVzdC5j YwotQEAgLTcsNiArNyw3IEBACi0gI2luY2x1ZGUgPHN0ZGludC5oPgotIAotICNpbmNsdWRlICJ0 ZXN0aW5nL2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCIKLSsjaW5jbHVkZSAiYmFzZS9zeXNf Ynl0ZW9yZGVyLmgiCi0gCi0gbmFtZXNwYWNlIGJhc2UgewotIG5hbWVzcGFjZSB7Ci1AQCAtNjQs MTMgKzY1LDIxIEBAIFRFU1QoQnVja2V0UmFuZ2VzVGVzdCwgQ2hlY2tzdW0pIHsKLSAgIHJhbmdl cy5zZXRfcmFuZ2UoMiwgMik7Ci0gCi0gICByYW5nZXMuUmVzZXRDaGVja3N1bSgpOwotKyNpZiBk ZWZpbmVkKEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4pCi0gICBFWFBFQ1RfRVEoMjg5MjE3MjUzdSwg cmFuZ2VzLmNoZWNrc3VtKCkpOwotKyNlbHNlCi0rICBFWFBFQ1RfRVEoMjc2NzIzMTU5NnUsIHJh bmdlcy5jaGVja3N1bSgpKTsKLSsjZW5kaWYKLSAKLSAgIHJhbmdlcy5zZXRfcmFuZ2UoMiwgMyk7 Ci0gICBFWFBFQ1RfRkFMU0UocmFuZ2VzLkhhc1ZhbGlkQ2hlY2tzdW0oKSk7Ci0gCi0gICByYW5n ZXMuUmVzZXRDaGVja3N1bSgpOwotKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4p Ci0gICBFWFBFQ1RfRVEoMjg0MzgzNTc3NnUsIHJhbmdlcy5jaGVja3N1bSgpKTsKLSsjZWxzZQot KyAgRVhQRUNUX0VRKDM1NTYyMjM3Mzh1LCByYW5nZXMuY2hlY2tzdW0oKSk7Ci0rI2VuZGlmCi0g ICBFWFBFQ1RfVFJVRShyYW5nZXMuSGFzVmFsaWRDaGVja3N1bSgpKTsKLSB9Ci0gCi0tLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvcGlja2xlLmNjCi0rKysgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvcGlja2xlLmNjCi1AQCAtODIsNyArODIs MTIgQEAgaW5saW5lIGNvbnN0IGNoYXIqIFBpY2tsZUl0ZXJhdG9yOjpHZXRSZWFkUG9pbnRlckFu ZEFkdmFuY2UoCi0gfQotIAotIGJvb2wgUGlja2xlSXRlcmF0b3I6OlJlYWRCb29sKGJvb2wqIHJl c3VsdCkgewotLSAgcmV0dXJuIFJlYWRCdWlsdGluVHlwZShyZXN1bHQpOwotKyAgaW50IGludF9y ZXN1bHQ7Ci0rICBpZiAoUmVhZEJ1aWx0aW5UeXBlKCZpbnRfcmVzdWx0KSkgewotKyAgICAqcmVz dWx0ID0gc3RhdGljX2Nhc3Q8Ym9vbD4oaW50X3Jlc3VsdCk7Ci0rICAgIHJldHVybiB0cnVlOwot KyAgfSBlbHNlCi0rICAgIHJldHVybiBmYWxzZTsKLSB9Ci0gCi0gYm9vbCBQaWNrbGVJdGVyYXRv cjo6UmVhZEludChpbnQqIHJlc3VsdCkgewotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9iYXNlL3NoYTEuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vYmFzZS9zaGExLmNjCi1AQCAtMTEwLDggKzExMCwxMCBAQCB2b2lkIFNlY3VyZUhhc2hBbGdv cml0aG06OkZpbmFsKCkgewotICAgUGFkKCk7Ci0gICBQcm9jZXNzKCk7Ci0gCi0rI2lmIGRlZmlu ZWQoQVJDSF9DUFVfTElUVExFX0VORElBTikKLSAgIGZvciAoYXV0byYgdCA6IEgpCi0gICAgIHQg PSBCeXRlU3dhcCh0KTsKLSsjZW5kaWYKLSB9Ci0gCi0gdm9pZCBTZWN1cmVIYXNoQWxnb3JpdGht OjpVcGRhdGUoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IG5ieXRlcykgewotQEAgLTE1Nyw4ICsx NTksMTAgQEAgdm9pZCBTZWN1cmVIYXNoQWxnb3JpdGhtOjpQcm9jZXNzKCkgewotICAgLy8KLSAg IC8vIFcgYW5kIE0gYXJlIGluIGEgdW5pb24sIHNvIG5vIG5lZWQgdG8gbWVtY3B5LgotICAgLy8g bWVtY3B5KFcsIE0sIHNpemVvZihNKSk7Ci0rI2lmIGRlZmluZWQoQVJDSF9DUFVfTElUVExFX0VO RElBTikKLSAgIGZvciAodCA9IDA7IHQgPCAxNjsgKyt0KQotICAgICBXW3RdID0gQnl0ZVN3YXAo V1t0XSk7Ci0rI2VuZGlmCi0gCi0gICAvLyBiLgotICAgZm9yICh0ID0gMTY7IHQgPCA4MDsgKyt0 KQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL3N0cmluZ3Mvc3Ry aW5nX251bWJlcl9jb252ZXJzaW9uc191bml0dGVzdC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9iYXNlL3N0cmluZ3Mvc3RyaW5nX251bWJlcl9jb252ZXJzaW9uc191 bml0dGVzdC5jYwotQEAgLTgyOSwxMiArODI5LDIxIEBAIFRFU1QoU3RyaW5nTnVtYmVyQ29udmVy c2lvbnNUZXN0LCBEb3VibGVUb1N0cmluZykgewotICAgfQotIAotICAgLy8gVGhlIGZvbGxvd2lu ZyB0d28gdmFsdWVzIHdlcmUgc2VlbiBpbiBjcmFzaGVzIGluIHRoZSB3aWxkLgotKyNpZiBkZWZp bmVkKEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4pCi0gICBjb25zdCBjaGFyIGlucHV0X2J5dGVzWzhd ID0gezAsIDAsIDAsIDAsICdceGVlJywgJ1x4NmQnLCAnXHg3MycsICdceDQyJ307Ci0rI2Vsc2UK LSsgIGNvbnN0IGNoYXIgaW5wdXRfYnl0ZXNbOF0gPSB7J1x4NDInLCAnXHg3MycsICdceDZkJywg J1x4ZWUnLCAwLCAwLCAwLCAwfTsKLSsjZW5kaWYKLSAgIGRvdWJsZSBpbnB1dCA9IDA7Ci0gICBt ZW1jcHkoJmlucHV0LCBpbnB1dF9ieXRlcywgYmFzZTo6c2l6ZShpbnB1dF9ieXRlcykpOwotICAg RVhQRUNUX0VRKCIxMzM1MTc5MDgzNzc2IiwgTnVtYmVyVG9TdHJpbmcoaW5wdXQpKTsKLSsjaWYg ZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOKQotICAgY29uc3QgY2hhciBpbnB1dF9ieXRl czJbOF0gPQotICAgICAgIHswLCAwLCAwLCAnXHhhMCcsICdceGRhJywgJ1x4NmMnLCAnXHg3Mycs ICdceDQyJ307Ci0rI2Vsc2UKLSsgIGNvbnN0IGNoYXIgaW5wdXRfYnl0ZXMyWzhdID0KLSsgICAg ICB7J1x4NDInLCAnXHg3MycsICdceDZjJywgJ1x4ZGEnLCAnXHhhMCcsIDAsIDAsIDB9OwotKyNl bmRpZgotICAgaW5wdXQgPSAwOwotICAgbWVtY3B5KCZpbnB1dCwgaW5wdXRfYnl0ZXMyLCBiYXNl OjpzaXplKGlucHV0X2J5dGVzMikpOwotICAgRVhQRUNUX0VRKCIxMzM0ODkwMzMyMTYwIiwgTnVt YmVyVG9TdHJpbmcoaW5wdXQpKTsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vYmFzZS90aGlyZF9wYXJ0eS9kbWdfZnAvZHRvYS5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9iYXNlL3RoaXJkX3BhcnR5L2RtZ19mcC9kdG9hLmNjCi1AQCAtMTg2 LDcgKzE4NiwxMSBAQAotICAqCXVzZWQgZm9yIGlucHV0IG1vcmUgdGhhbiBTVFJUT0RfRElHTElN IGRpZ2l0cyBsb25nIChkZWZhdWx0IDQwKS4KLSAgKi8KLSAKLSsjaWZkZWYgX19CSUdfRU5ESUFO X18KLSsjZGVmaW5lIElFRUVfTUM2OGsKLSsjZWxzZQotICNkZWZpbmUgSUVFRV84MDg3Ci0rI2Vu ZGlmCi0gI2RlZmluZSBOT19IRVhfRlAKLSAKLSAjaWZuZGVmIExvbmcKLS0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vY29tcG9uZW50cy9zYWZlX2Jyb3dzaW5nL2RiL3V0aWxf dW5pdHRlc3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vY29tcG9u ZW50cy9zYWZlX2Jyb3dzaW5nL2RiL3V0aWxfdW5pdHRlc3QuY2MKLUBAIC0xMiw2ICsxMiwxMiBA QAotICNpbmNsdWRlICJ0ZXN0aW5nL2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCIKLSAjaW5j bHVkZSAidXJsL2d1cmwuaCIKLSAKLSsjaWYgZGVmaW5lZChPU19XSU4pCi0rI2luY2x1ZGUgPHdp bnNvY2syLmg+Ci0rI2VsaWYgZGVmaW5lZChPU19QT1NJWCkKLSsjaW5jbHVkZSA8YXJwYS9pbmV0 Lmg+Ci0rI2VuZGlmCi0rCi0gbmFtZXNwYWNlIHNhZmVfYnJvd3NpbmcgewotIAotIFRFU1QoU2Fm ZUJyb3dzaW5nRGJVdGlsVGVzdCwgVXJsVG9GdWxsSGFzaGVzKSB7Ci1AQCAtODMsNyArODksNyBA QCBURVNUKFNhZmVCcm93c2luZ0RiVXRpbFRlc3QsIFN0cmluZ1RvU0JGdWxsSGFzaEFuZFNCRnVs bEhhc2hUb1N0cmluZykgewotICAgLy8gMzEgY2hhcnMgcGx1cyB0aGUgbGFzdCBcMCBhcyBmdWxs X2hhc2guCi0gICBjb25zdCBzdGQ6OnN0cmluZyBoYXNoX2luID0gIjEyMzQ1Njc4OTAyMjM0NTY3 ODkwMzIzNDU2Nzg5MDEyIjsKLSAgIFNCRnVsbEhhc2ggaGFzaF9vdXQgPSBTdHJpbmdUb1NCRnVs bEhhc2goaGFzaF9pbik7Ci0tICBFWFBFQ1RfRVEoMHgzNDMzMzIzMVUsIGhhc2hfb3V0LnByZWZp eCk7Ci0rICBFWFBFQ1RfRVEoaHRvbmwoMHgzMTMyMzMzNFUpLCBoYXNoX291dC5wcmVmaXgpOwot ICAgRVhQRUNUX0VRKDAsIG1lbWNtcChoYXNoX2luLmRhdGEoKSwgaGFzaF9vdXQuZnVsbF9oYXNo LCBzaXplb2YoU0JGdWxsSGFzaCkpKTsKLSAKLSAgIHN0ZDo6c3RyaW5nIGhhc2hfZmluYWwgPSBT QkZ1bGxIYXNoVG9TdHJpbmcoaGFzaF9vdXQpOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9jb21wb25lbnRzL3NhZmVfYnJvd3NpbmcvZGIvdjRfcmljZS5jYwotKysrIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9jb21wb25lbnRzL3NhZmVfYnJvd3Npbmcv ZGIvdjRfcmljZS5jYwotQEAgLTgsNiArOCw3IEBACi0gI2luY2x1ZGUgImJhc2UvbG9nZ2luZy5o IgotICNpbmNsdWRlICJiYXNlL251bWVyaWNzL3NhZmVfbWF0aC5oIgotICNpbmNsdWRlICJiYXNl L3N0cmluZ3Mvc3RyaW5ncHJpbnRmLmgiCi0rI2luY2x1ZGUgImJhc2Uvc3lzX2J5dGVvcmRlci5o IgotICNpbmNsdWRlICJidWlsZC9idWlsZF9jb25maWcuaCIKLSAjaW5jbHVkZSAiY29tcG9uZW50 cy9zYWZlX2Jyb3dzaW5nL2RiL3Y0X3JpY2UuaCIKLSAKLUBAIC0yMSwxMCArMjIsNiBAQCB1c2lu ZyA6Omdvb2dsZTo6cHJvdG9idWY6OlJlcGVhdGVkRmllbGQ7Ci0gdXNpbmcgOjpnb29nbGU6OnBy b3RvYnVmOjppbnQzMjsKLSB1c2luZyA6Omdvb2dsZTo6cHJvdG9idWY6OmludDY0OwotIAotLSNp ZiAhZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOKSB8fCAoQVJDSF9DUFVfTElUVExFX0VO RElBTiAhPSAxKQotLSNlcnJvciBUaGUgY29kZSBiZWxvdyBhc3N1bWVzIGxpdHRsZS1lbmRpYW5u ZXNzLgotLSNlbmRpZgotLQotIG5hbWVzcGFjZSBzYWZlX2Jyb3dzaW5nIHsKLSAKLSBuYW1lc3Bh Y2UgewotQEAgLTExNyw3ICsxMTQsNyBAQCBWNERlY29kZVJlc3VsdCBWNFJpY2VEZWNvZGVyOjpE ZWNvZGVQcmVmaXhlcyhjb25zdCBpbnQ2NCBmaXJzdF92YWx1ZSwKLSAgIG91dC0+cmVzZXJ2ZSgo bnVtX2VudHJpZXMgKyAxKSk7Ci0gCi0gICBiYXNlOjpDaGVja2VkTnVtZXJpYzx1aW50MzJfdD4g bGFzdF92YWx1ZShmaXJzdF92YWx1ZSk7Ci0tICBvdXQtPnB1c2hfYmFjayhodG9ubChsYXN0X3Zh bHVlLlZhbHVlT3JEaWUoKSkpOwotKyAgb3V0LT5wdXNoX2JhY2soYmFzZTo6Qnl0ZVN3YXAoc3Rh dGljX2Nhc3Q8dWludDMyX3Q+KGxhc3RfdmFsdWUuVmFsdWVPckRpZSgpKSkpOwotIAotICAgaWYg KG51bV9lbnRyaWVzID4gMCkgewotICAgICBWNFJpY2VEZWNvZGVyIGRlY29kZXIocmljZV9wYXJh bWV0ZXIsIG51bV9lbnRyaWVzLCBlbmNvZGVkX2RhdGEpOwotQEAgLTEzNiw3ICsxMzMsNyBAQCBW NERlY29kZVJlc3VsdCBWNFJpY2VEZWNvZGVyOjpEZWNvZGVQcmVmaXhlcyhjb25zdCBpbnQ2NCBm aXJzdF92YWx1ZSwKLSAKLSAgICAgICAvLyBUaGlzIGZsaXBwaW5nIGlzIGRvbmUgc28gdGhhdCB0 aGUgZGVjb2RlZCB1aW50MzIgaXMgaW50ZXJwcmV0ZWQKLSAgICAgICAvLyBjb3JyZWNseSBhcyBh IHN0cmluZyBvZiA0IGJ5dGVzLgotLSAgICAgIG91dC0+cHVzaF9iYWNrKGh0b25sKGxhc3RfdmFs dWUuVmFsdWVPckRpZSgpKSk7Ci0rICAgICAgb3V0LT5wdXNoX2JhY2soYmFzZTo6Qnl0ZVN3YXAo c3RhdGljX2Nhc3Q8dWludDMyX3Q+KGxhc3RfdmFsdWUuVmFsdWVPckRpZSgpKSkpOwotICAgICB9 Ci0gICB9Ci0gCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2NvbXBvbmVu dHMvc2FmZV9icm93c2luZy9kYi92NF9yaWNlX3VuaXR0ZXN0LmNjCi0rKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL2NvbXBvbmVudHMvc2FmZV9icm93c2luZy9kYi92NF9yaWNl X3VuaXR0ZXN0LmNjCi1AQCAtNiw2ICs2LDEyIEBACi0gI2luY2x1ZGUgImJhc2UvbG9nZ2luZy5o IgotICNpbmNsdWRlICJ0ZXN0aW5nL3BsYXRmb3JtX3Rlc3QuaCIKLSAKLSsjaWYgZGVmaW5lZChP U19XSU4pCi0rI2luY2x1ZGUgPHdpbnNvY2syLmg+Ci0rI2VsaWYgZGVmaW5lZChPU19QT1NJWCkK LSsjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+Ci0rI2VuZGlmCi0rCi0gdXNpbmcgOjpnb29nbGU6OnBy b3RvYnVmOjpSZXBlYXRlZEZpZWxkOwotIHVzaW5nIDo6Z29vZ2xlOjpwcm90b2J1Zjo6aW50MzI7 Ci0gCi1AQCAtMjQ3LDcgKzI1Myw3IEBAIFRFU1RfRihWNFJpY2VUZXN0LCBUZXN0RGVjb2RlclBy ZWZpeGVzV2l0aE9uZVZhbHVlKSB7Ci0gICBFWFBFQ1RfRVEoREVDT0RFX1NVQ0NFU1MsCi0gICAg ICAgICAgICAgVjRSaWNlRGVjb2Rlcjo6RGVjb2RlUHJlZml4ZXMoMHg2OUY2N0Y1MXUsIDIsIDAs ICIiLCAmb3V0KSk7Ci0gICBFWFBFQ1RfRVEoMXUsIG91dC5zaXplKCkpOwotLSAgRVhQRUNUX0VR KDB4NjlGNjdGNTF1LCBvdXRbMF0pOwotKyAgRVhQRUNUX0VRKGh0b25sKDB4NTE3RkY2Njl1KSwg b3V0WzBdKTsKLSB9Ci0gCi0gVEVTVF9GKFY0UmljZVRlc3QsIFRlc3REZWNvZGVyUHJlZml4ZXNX aXRoTXVsdGlwbGVWYWx1ZXMpIHsKLUBAIC0yNTYsNyArMjYyLDcgQEAgVEVTVF9GKFY0UmljZVRl c3QsIFRlc3REZWNvZGVyUHJlZml4ZXNXaXRoTXVsdGlwbGVWYWx1ZXMpIHsKLSAgICAgICAgICAg ICBWNFJpY2VEZWNvZGVyOjpEZWNvZGVQcmVmaXhlcygKLSAgICAgICAgICAgICAgICAgNSwgMjgs IDMsICJceGJmXHhhOFx4M2ZceGZiXHhmXHhmXHg1ZVx4MjdceGU2XHhjM1x4MWRceGM2XHgzOCIs Ci0gICAgICAgICAgICAgICAgICZvdXQpKTsKLS0gIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBleHBl Y3RlZCA9IHs1LCAweGFkOTM0YzBjdSwgMHg2ZmY2N2Y1NnUsIDB4ODEzMTZmY2V1fTsKLSsgIHN0 ZDo6dmVjdG9yPHVpbnQzMl90PiBleHBlY3RlZCA9IHtodG9ubCgweDA1MDAwMDAwKSwgaHRvbmwo MHgwYzRjOTNhZHUpLCBodG9ubCgweDU2N2ZmNjZmdSksIGh0b25sKDB4Y2U2ZjMxODF1KX07Ci0g ICBFWFBFQ1RfRVEoZXhwZWN0ZWQuc2l6ZSgpLCBvdXQuc2l6ZSgpKTsKLSAgIGZvciAodW5zaWdu ZWQgaSA9IDA7IGkgPCBleHBlY3RlZC5zaXplKCk7IGkrKykgewotICAgICBFWFBFQ1RfRVEoZXhw ZWN0ZWRbaV0sIG91dFtpXSk7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L21lZGlhL2ZmbXBlZy9mZm1wZWdfY29tbW9uLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL21lZGlhL2ZmbXBlZy9mZm1wZWdfY29tbW9uLmNjCi1AQCAtNjg2LDEwICs2 ODYsNiBAQCBDaGFubmVsTGF5b3V0IENoYW5uZWxMYXlvdXRUb0Nocm9tZUNoYW5uZWxMYXlvdXQo aW50NjRfdCBsYXlvdXQsIGludCBjaGFubmVscykgewotICAgfQotIH0KLSAKLS0jaWYgIWRlZmlu ZWQoQVJDSF9DUFVfTElUVExFX0VORElBTikKLS0jZXJyb3IgVGhlIGNvZGUgYmVsb3cgYXNzdW1l cyBsaXR0bGUtZW5kaWFubmVzcy4KLS0jZW5kaWYKLS0KLSBWaWRlb1BpeGVsRm9ybWF0IEFWUGl4 ZWxGb3JtYXRUb1ZpZGVvUGl4ZWxGb3JtYXQoQVZQaXhlbEZvcm1hdCBwaXhlbF9mb3JtYXQpIHsK LSAgIC8vIFRoZSBZVVZKIGFsdGVybmF0aXZlcyBhcmUgRkZtcGVnJ3MgKGRlcHJlY2F0ZWQsIGJ1 dCBzdGlsbCBpbiB1c2UpIHdheSB0bwotICAgLy8gc3BlY2lmeSBhIHBpeGVsIGZvcm1hdCBhbmQg ZnVsbCByYW5nZSBjb2xvciBjb21iaW5hdGlvbi4KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vbWVkaWEvZm9ybWF0cy9tcDQvYm94X2RlZmluaXRpb25zLmNjCi0rKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2Zvcm1hdHMvbXA0L2JveF9kZWZp bml0aW9ucy5jYwotQEAgLTExMDcsMTUgKzExMDcsMTQgQEAgYm9vbCBPcHVzU3BlY2lmaWNCb3g6 OlBhcnNlKEJveFJlYWRlciogcmVhZGVyKSB7Ci0gICBSQ0hFQ0socmVhZGVyLT5SZWFkNCgmc2Ft cGxlX3JhdGUpKTsKLSAgIFJDSEVDSyhyZWFkZXItPlJlYWQycygmZ2Fpbl9kYikpOwotIAotLSNp ZiAhZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOKQotLSNlcnJvciBUaGUgY29kZSBiZWxv dyBhc3N1bWVzIGxpdHRsZS1lbmRpYW5uZXNzLgotLSNlbmRpZgotLQotLSAgbWVtY3B5KCZleHRy YWRhdGFbT1BVU19FWFRSQURBVEFfU0tJUF9TQU1QTEVTX09GRlNFVF0sICZjb2RlY19kZWxheV9p bl9mcmFtZXMsCi0tICAgICAgICAgc2l6ZW9mKGNvZGVjX2RlbGF5X2luX2ZyYW1lcykpOwotLSAg bWVtY3B5KCZleHRyYWRhdGFbT1BVU19FWFRSQURBVEFfU0FNUExFX1JBVEVfT0ZGU0VUXSwgJnNh bXBsZV9yYXRlLAotLSAgICAgICAgIHNpemVvZihzYW1wbGVfcmF0ZSkpOwotLSAgbWVtY3B5KCZl eHRyYWRhdGFbT1BVU19FWFRSQURBVEFfR0FJTl9PRkZTRVRdLCAmZ2Fpbl9kYiwgc2l6ZW9mKGdh aW5fZGIpKTsKLSsgIGV4dHJhZGF0YVtPUFVTX0VYVFJBREFUQV9TS0lQX1NBTVBMRVNfT0ZGU0VU XSA9IChjb2RlY19kZWxheV9pbl9mcmFtZXMgPj4gMCkgJiAweGZmOwotKyAgZXh0cmFkYXRhW09Q VVNfRVhUUkFEQVRBX1NLSVBfU0FNUExFU19PRkZTRVQrMV0gPSAoY29kZWNfZGVsYXlfaW5fZnJh bWVzID4+IDgpICYgMHhmZjsKLSsgIGV4dHJhZGF0YVtPUFVTX0VYVFJBREFUQV9TQU1QTEVfUkFU RV9PRkZTRVRdID0gKHNhbXBsZV9yYXRlID4+IDApICYgMHhmZjsKLSsgIGV4dHJhZGF0YVtPUFVT X0VYVFJBREFUQV9TQU1QTEVfUkFURV9PRkZTRVQrMV0gPSAoc2FtcGxlX3JhdGUgPj4gOCkgJiAw eGZmOwotKyAgZXh0cmFkYXRhW09QVVNfRVhUUkFEQVRBX1NBTVBMRV9SQVRFX09GRlNFVCsyXSA9 IChzYW1wbGVfcmF0ZSA+PiAxNikgJiAweGZmOwotKyAgZXh0cmFkYXRhW09QVVNfRVhUUkFEQVRB X1NBTVBMRV9SQVRFX09GRlNFVCszXSA9IChzYW1wbGVfcmF0ZSA+PiAyNCkgJiAweGZmOwotKyAg ZXh0cmFkYXRhW09QVVNfRVhUUkFEQVRBX0dBSU5fT0ZGU0VUXSA9IChnYWluX2RiID4+IDApICYg MHhmZjsKLSsgIGV4dHJhZGF0YVtPUFVTX0VYVFJBREFUQV9HQUlOX09GRlNFVCsxXSA9IChnYWlu X2RiID4+IDgpICYgMHhmZjsKLSAKLSAgIGNoYW5uZWxfY291bnQgPSBleHRyYWRhdGFbT1BVU19F WFRSQURBVEFfQ0hBTk5FTFNfT0ZGU0VUXTsKLSAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vbWVkaWEvcmVuZGVyZXJzL3BhaW50X2NhbnZhc192aWRlb19yZW5kZXJlci5j YwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9yZW5kZXJlcnMv cGFpbnRfY2FudmFzX3ZpZGVvX3JlbmRlcmVyLmNjCi1AQCAtMzEsOCArMzEsNyBAQAotIAotIC8v IFNraWEgaW50ZXJuYWwgZm9ybWF0IGRlcGVuZHMgb24gYSBwbGF0Zm9ybS4gT24gQW5kcm9pZCBp dCBpcyBBQkdSLCBvbiBvdGhlcnMKLSAvLyBpdCBpcyBBUkdCLgotLSNpZiBTS19CMzJfU0hJRlQg PT0gMCAmJiBTS19HMzJfU0hJRlQgPT0gOCAmJiBTS19SMzJfU0hJRlQgPT0gMTYgJiYgXAotLSAg ICBTS19BMzJfU0hJRlQgPT0gMjQKLSsjaWYgU0tfUE1DT0xPUl9CWVRFX09SREVSKEIsRyxSLEEp Ci0gI2RlZmluZSBMSUJZVVZfSTQyMF9UT19BUkdCIGxpYnl1djo6STQyMFRvQVJHQgotICNkZWZp bmUgTElCWVVWX0k0MjJfVE9fQVJHQiBsaWJ5dXY6Okk0MjJUb0FSR0IKLSAjZGVmaW5lIExJQllV Vl9JNDQ0X1RPX0FSR0IgbGlieXV2OjpJNDQ0VG9BUkdCCi1AQCAtNDIsOCArNDEsNyBAQAotICNk ZWZpbmUgTElCWVVWX0kwMTBfVE9fQVJHQiBsaWJ5dXY6OkkwMTBUb0FSR0IKLSAjZGVmaW5lIExJ QllVVl9IMDEwX1RPX0FSR0IgbGlieXV2OjpIMDEwVG9BUkdCCi0gI2RlZmluZSBMSUJZVVZfTlYx Ml9UT19BUkdCIGxpYnl1djo6TlYxMlRvQVJHQgotLSNlbGlmIFNLX1IzMl9TSElGVCA9PSAwICYm IFNLX0czMl9TSElGVCA9PSA4ICYmIFNLX0IzMl9TSElGVCA9PSAxNiAmJiBcCi0tICAgIFNLX0Ez Ml9TSElGVCA9PSAyNAotKyNlbGlmIFNLX1BNQ09MT1JfQllURV9PUkRFUihSLEcsQixBKQotICNk ZWZpbmUgTElCWVVWX0k0MjBfVE9fQVJHQiBsaWJ5dXY6Okk0MjBUb0FCR1IKLSAjZGVmaW5lIExJ QllVVl9JNDIyX1RPX0FSR0IgbGlieXV2OjpJNDIyVG9BQkdSCi0gI2RlZmluZSBMSUJZVVZfSTQ0 NF9UT19BUkdCIGxpYnl1djo6STQ0NFRvQUJHUgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9uZXQvY2VydC9jcmxfc2V0LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL25ldC9jZXJ0L2NybF9zZXQuY2MKLUBAIC02LDYgKzYsNyBAQAotIAotICNp bmNsdWRlICJiYXNlL2Jhc2U2NC5oIgotICNpbmNsdWRlICJiYXNlL2pzb24vanNvbl9yZWFkZXIu aCIKLSsjaW5jbHVkZSAiYmFzZS9zeXNfYnl0ZW9yZGVyLmgiCi0gI2luY2x1ZGUgImJhc2UvdGlt ZS90aW1lLmgiCi0gI2luY2x1ZGUgImJhc2UvdHJhY2VfZXZlbnQvdHJhY2VfZXZlbnQuaCIKLSAj aW5jbHVkZSAiYmFzZS92YWx1ZXMuaCIKLUBAIC00NCw5ICs0NSw5IEBAIGJhc2U6OkRpY3Rpb25h cnlWYWx1ZSogUmVhZEhlYWRlcihiYXNlOjpTdHJpbmdQaWVjZSogZGF0YSkgewotICAgdWludDE2 X3QgaGVhZGVyX2xlbjsKLSAgIGlmIChkYXRhLT5zaXplKCkgPCBzaXplb2YoaGVhZGVyX2xlbikp Ci0gICAgIHJldHVybiBudWxscHRyOwotLSAgLy8gQXNzdW1lcyBsaXR0bGUtZW5kaWFuLgotICAg bWVtY3B5KCZoZWFkZXJfbGVuLCBkYXRhLT5kYXRhKCksIHNpemVvZihoZWFkZXJfbGVuKSk7Ci0g ICBkYXRhLT5yZW1vdmVfcHJlZml4KHNpemVvZihoZWFkZXJfbGVuKSk7Ci0rICBoZWFkZXJfbGVu ID0gYmFzZTo6Qnl0ZVN3YXBUb0xFMTYoaGVhZGVyX2xlbik7Ci0gCi0gICBpZiAoZGF0YS0+c2l6 ZSgpIDwgaGVhZGVyX2xlbikKLSAgICAgcmV0dXJuIG51bGxwdHI7Ci1AQCAtNzksOSArODAsOSBA QCBib29sIFJlYWRDUkwoYmFzZTo6U3RyaW5nUGllY2UqIGRhdGEsCi0gICB1aW50MzJfdCBudW1f c2VyaWFsczsKLSAgIGlmIChkYXRhLT5zaXplKCkgPCBzaXplb2YobnVtX3NlcmlhbHMpKQotICAg ICByZXR1cm4gZmFsc2U7Ci0tICAvLyBBc3N1bWVzIGxpdHRsZSBlbmRpYW4uCi0gICBtZW1jcHko Jm51bV9zZXJpYWxzLCBkYXRhLT5kYXRhKCksIHNpemVvZihudW1fc2VyaWFscykpOwotICAgZGF0 YS0+cmVtb3ZlX3ByZWZpeChzaXplb2YobnVtX3NlcmlhbHMpKTsKLSsgIG51bV9zZXJpYWxzID0g YmFzZTo6Qnl0ZVN3YXBUb0xFMzIobnVtX3NlcmlhbHMpOwotIAotICAgaWYgKG51bV9zZXJpYWxz ID4gMzIgKiAxMDI0ICogMTAyNCkgIC8vIFNhbml0eSBjaGVjay4KLSAgICAgcmV0dXJuIGZhbHNl OwotQEAgLTE5MiwxNSArMTkzLDYgQEAgQ1JMU2V0Ojp+Q1JMU2V0KCkgPSBkZWZhdWx0OwotIC8v IHN0YXRpYwotIGJvb2wgQ1JMU2V0OjpQYXJzZShiYXNlOjpTdHJpbmdQaWVjZSBkYXRhLCBzY29w ZWRfcmVmcHRyPENSTFNldD4qIG91dF9jcmxfc2V0KSB7Ci0gICBUUkFDRV9FVkVOVDAoTmV0VHJh Y2luZ0NhdGVnb3J5KCksICJDUkxTZXQ6OlBhcnNlIik7Ci0tLy8gT3RoZXIgcGFydHMgb2YgQ2hy b21lIGFzc3VtZSB0aGF0IHdlJ3JlIGxpdHRsZSBlbmRpYW4sIHNvIHdlIGRvbid0IGxvc2UKLS0v LyBhbnl0aGluZyBieSBkb2luZyB0aGlzLgotLSNpZiBkZWZpbmVkKF9fQllURV9PUkRFUikKLS0g IC8vIExpbnV4IGNoZWNrCi0tICBzdGF0aWNfYXNzZXJ0KF9fQllURV9PUkRFUiA9PSBfX0xJVFRM RV9FTkRJQU4sICJhc3N1bWVzIGxpdHRsZSBlbmRpYW4iKTsKLS0jZWxpZiBkZWZpbmVkKF9fQklH X0VORElBTl9fKQotLS8vIE1hYyBjaGVjawotLSNlcnJvciBhc3N1bWVzIGxpdHRsZSBlbmRpYW4K LS0jZW5kaWYKLSAKLSAgIHN0ZDo6dW5pcXVlX3B0cjxiYXNlOjpEaWN0aW9uYXJ5VmFsdWU+IGhl YWRlcl9kaWN0KFJlYWRIZWFkZXIoJmRhdGEpKTsKLSAgIGlmICghaGVhZGVyX2RpY3QuZ2V0KCkp Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvYnBm X2RzbC9zZWNjb21wX21hY3Jvcy5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3NhbmRib3gvbGludXgvYnBmX2RzbC9zZWNjb21wX21hY3Jvcy5oCi1AQCAtMzc3LDYgKzM3 Nyw3IEBAIHR5cGVkZWYgc3RydWN0IHB0X3JlZ3MgcmVnc19zdHJ1Y3Q7Ci0gCi0gI2RlZmluZSBT RUNDT01QX05SX0lEWCAob2Zmc2V0b2Yoc3RydWN0IGFyY2hfc2VjY29tcF9kYXRhLCBucikpCi0g I2RlZmluZSBTRUNDT01QX0FSQ0hfSURYIChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9zZWNjb21wX2Rh dGEsIGFyY2gpKQotKyNpZiBfX0JZVEVfT1JERVJfXyA9PSBfX09SREVSX0xJVFRMRV9FTkRJQU5f XwotICNkZWZpbmUgU0VDQ09NUF9JUF9NU0JfSURYIFwKLSAgIChvZmZzZXRvZihzdHJ1Y3QgYXJj aF9zZWNjb21wX2RhdGEsIGluc3RydWN0aW9uX3BvaW50ZXIpICsgNCkKLSAjZGVmaW5lIFNFQ0NP TVBfSVBfTFNCX0lEWCBcCi1AQCAtMzg1LDYgKzM4NiwxNiBAQCB0eXBlZGVmIHN0cnVjdCBwdF9y ZWdzIHJlZ3Nfc3RydWN0OwotICAgKG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSwg YXJncykgKyA4ICogKG5yKSArIDQpCi0gI2RlZmluZSBTRUNDT01QX0FSR19MU0JfSURYKG5yKSBc Ci0gICAob2Zmc2V0b2Yoc3RydWN0IGFyY2hfc2VjY29tcF9kYXRhLCBhcmdzKSArIDggKiAobnIp ICsgMCkKLSsjZWxzZQotKyNkZWZpbmUgU0VDQ09NUF9JUF9NU0JfSURYIFwKLSsgIChvZmZzZXRv ZihzdHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIGluc3RydWN0aW9uX3BvaW50ZXIpICsgMCkKLSsj ZGVmaW5lIFNFQ0NPTVBfSVBfTFNCX0lEWCBcCi0rICAob2Zmc2V0b2Yoc3RydWN0IGFyY2hfc2Vj Y29tcF9kYXRhLCBpbnN0cnVjdGlvbl9wb2ludGVyKSArIDQpCi0rI2RlZmluZSBTRUNDT01QX0FS R19NU0JfSURYKG5yKSBcCi0rICAob2Zmc2V0b2Yoc3RydWN0IGFyY2hfc2VjY29tcF9kYXRhLCBh cmdzKSArIDggKiAobnIpICsgMCkKLSsjZGVmaW5lIFNFQ0NPTVBfQVJHX0xTQl9JRFgobnIpIFwK LSsgIChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIGFyZ3MpICsgOCAqIChucikg KyA0KQotKyNlbmRpZgotIAotICNkZWZpbmUgU0VDQ09NUF9QVF9SRVNVTFQoX3JlZ3MpIChfcmVn cykuZ3ByWzNdCi0gI2RlZmluZSBTRUNDT01QX1BUX1NZU0NBTEwoX3JlZ3MpIChfcmVncykuZ3By WzBdCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NraWEvY29uZmlnL1Nr VXNlckNvbmZpZy5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NraWEv Y29uZmlnL1NrVXNlckNvbmZpZy5oCi1AQCAtOTAsMTEgKzkwLDE4IEBAIFNLX0FQSSB2b2lkIFNr RGVidWdmX0ZpbGVMaW5lKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBib29sIGZhdGFsLAot ICAgICBfX0ZJTEVfXywgX19MSU5FX18sICNjb25kKTsgfSB9IHdoaWxlIChmYWxzZSkKLSAKLSAj aWYgIWRlZmluZWQoQU5EUk9JRCkgICAvLyBPbiBBbmRyb2lkLCB3ZSB1c2UgdGhlIHNraWEgZGVm YXVsdCBzZXR0aW5ncy4KLSsjaWYgZGVmaW5lZChTS19DUFVfQkVORElBTikKLSsjZGVmaW5lIFNL X0EzMl9TSElGVCAgICAwCi0rI2RlZmluZSBTS19SMzJfU0hJRlQgICAgOAotKyNkZWZpbmUgU0tf RzMyX1NISUZUICAgIDE2Ci0rI2RlZmluZSBTS19CMzJfU0hJRlQgICAgMjQKLSsjZWxzZQotICNk ZWZpbmUgU0tfQTMyX1NISUZUICAgIDI0Ci0gI2RlZmluZSBTS19SMzJfU0hJRlQgICAgMTYKLSAj ZGVmaW5lIFNLX0czMl9TSElGVCAgICA4Ci0gI2RlZmluZSBTS19CMzJfU0hJRlQgICAgMAotICNl bmRpZgotKyNlbmRpZgotIAotICNpZiBkZWZpbmVkKFNLX0JVSUxEX0ZPUl9NQUMpCi0gCi1AQCAt MTA4LDE3ICsxMTUsNiBAQCBTS19BUEkgdm9pZCBTa0RlYnVnZl9GaWxlTGluZShjb25zdCBjaGFy KiBmaWxlLCBpbnQgbGluZSwgYm9vbCBmYXRhbCwKLSAvLyB3ZSBzaG91bGQgcmV2aXNpdCB0aGlz IGNob2ljZS4uLgotICNkZWZpbmUgU0tfVVNFX0ZSRUVUWVBFX0VNQk9MREVOCi0gCi0tI2lmIGRl ZmluZWQoU0tfQlVJTERfRk9SX1VOSVgpICYmIGRlZmluZWQoU0tfQ1BVX0JFTkRJQU4pCi0tLy8g QWJvdmUgd2Ugc2V0IHRoZSBvcmRlciBmb3IgQVJHQiBjaGFubmVscyBpbiByZWdpc3RlcnMuIEkg c3VzcGVjdCB0aGF0LCBvbgotLS8vIGJpZyBlbmRpYW4gbWFjaGluZXMsIHlvdSBjYW4ga2VlcCB0 aGlzIHRoZSBzYW1lIGFuZCBldmVyeXRoaW5nIHdpbGwgd29yay4KLS0vLyBUaGUgaW4tbWVtb3J5 IG9yZGVyIHdpbGwgYmUgZGlmZmVyZW50LCBvZiBjb3Vyc2UsIGJ1dCBhcyBsb25nIGFzIGV2ZXJ5 dGhpbmcKLS0vLyBpcyByZWFkaW5nIG1lbW9yeSBhcyB3b3JkcyByYXRoZXIgdGhhbiBieXRlcywg aXQgd2lsbCBhbGwgd29yay4gSG93ZXZlciwgaWYKLS0vLyB5b3UgZmluZCB0aGF0IGNvbG91cnMg YXJlIG1lc3NlZCB1cCBJIHRob3VnaHQgdGhhdCBJIHdvdWxkIGxlYXZlIGEgaGVscGZ1bAotLS8v IGxvY2F0b3IgZm9yIHlvdS4gQWxzbyBzZWUgdGhlIGNvbW1lbnRzIGluCi0tLy8gYmFzZS9nZngv Yml0bWFwX3BsYXRmb3JtX2RldmljZV9saW51eC5oCi0tI2Vycm9yIFJlYWQgdGhlIGNvbW1lbnQg YXQgdGhpcyBsb2NhdGlvbgotLSNlbmRpZgotLQotICNlbmRpZgotIAotIC8vIFRoZSBkZWZhdWx0 IGNyYXNoIG1hY3JvIHdyaXRlcyB0byBiYWRiZWVmIHdoaWNoIGNhbiBjYXVzZSBzb21lIHN0cmFu Z2UKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2tpYS9leHQvaW1hZ2Vf b3BlcmF0aW9uc191bml0dGVzdC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS9za2lhL2V4dC9pbWFnZV9vcGVyYXRpb25zX3VuaXR0ZXN0LmNjCi1AQCAtMTgsOSArMTgs MTEgQEAKLSAjaW5jbHVkZSAic2tpYS9leHQvaW1hZ2Vfb3BlcmF0aW9ucy5oIgotICNpbmNsdWRl ICJ0ZXN0aW5nL2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCIKLSAjaW5jbHVkZSAidGhpcmRf cGFydHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tCaXRtYXAuaCIKLSsjaW5jbHVkZSAidGhpcmRfcGFy dHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tDb2xvclByaXYuaCIKLSAjaW5jbHVkZSAidGhpcmRfcGFy dHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tDb2xvclNwYWNlLmgiCi0gI2luY2x1ZGUgInRoaXJkX3Bh cnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrSW1hZ2VJbmZvLmgiCi0gI2luY2x1ZGUgInRoaXJkX3Bh cnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrUmVjdC5oIgotKyNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9z a2lhL2luY2x1ZGUvY29yZS9Ta1VuUHJlTXVsdGlwbHkuaCIKLSAjaW5jbHVkZSAidWkvZ2Z4L2Nv ZGVjL3BuZ19jb2RlYy5oIgotICNpbmNsdWRlICJ1aS9nZngvZ2VvbWV0cnkvc2l6ZS5oIgotIAot QEAgLTE1MSw3ICsxNTMsNyBAQCB2b2lkIERyYXdDaGVja2VyVG9CaXRtYXAoaW50IHcsIGludCBo LAotIAotICAgICAgIGJvb2wgdXNlX2NvbG9yMiA9ICh4X2JpdCAhPSB5X2JpdCk7ICAvLyB4b3IK LSAKLS0gICAgICAqYm1wLT5nZXRBZGRyMzIoeCwgeSkgPSAodXNlX2NvbG9yMiA/IGNvbG9yMiA6 IGNvbG9yMSk7Ci0rICAgICAgKmJtcC0+Z2V0QWRkcjMyKHgsIHkpID0gU2tQcmVNdWx0aXBseUNv bG9yKHVzZV9jb2xvcjIgPyBjb2xvcjIgOiBjb2xvcjEpOwotICAgICB9Ci0gICB9Ci0gfQotQEAg LTI3Myw3ICsyNzUsNyBAQCB2b2lkIENoZWNrUmVzaXplTWV0aG9kU2hvdWxkQXZlcmFnZUdyaWQo Ci0gICAgICAgICBzdGQ6Om1heCh0ZXN0ZWRfcGl4ZWwubWF4X2NvbG9yX2Rpc3RhbmNlLAotICAg ICAgICAgICAgICAgICAgdGVzdGVkX21ldGhvZC5tYXhfY29sb3JfZGlzdGFuY2Vfb3ZlcnJpZGUp OwotIAotLSAgICBjb25zdCBTa0NvbG9yIGFjdHVhbF9jb2xvciA9ICpkZXN0LmdldEFkZHIzMih4 LCB5KTsKLSsgICAgY29uc3QgU2tDb2xvciBhY3R1YWxfY29sb3IgPSBTa1VuUHJlTXVsdGlwbHk6 OlBNQ29sb3JUb0NvbG9yKCpkZXN0LmdldEFkZHIzMih4LCB5KSk7Ci0gCi0gICAgIC8vIENoZWNr IHRoYXQgdGhlIHBpeGVscyBhd2F5IGZyb20gdGhlIGJvcmRlciByZWdpb24gYXJlIHZlcnkgY2xv c2UKLSAgICAgLy8gdG8gdGhlIGV4cGVjdGVkIGF2ZXJhZ2UgY29sb3IKLUBAIC01MjgsNyArNTMw LDcgQEAgVEVTVChJbWFnZU9wZXJhdGlvbnMsIFNjYWxlVXApIHsKLSAgIGZvciAoaW50IHNyY195 ID0gMDsgc3JjX3kgPCBzcmNfaDsgKytzcmNfeSkgewotICAgICBmb3IgKGludCBzcmNfeCA9IDA7 IHNyY194IDwgc3JjX3c7ICsrc3JjX3gpIHsKLSAgICAgICAqc3JjLmdldEFkZHIzMihzcmNfeCwg c3JjX3kpID0KLS0gICAgICAgICAgU2tDb2xvclNldEFSR0IoMjU1LCAxMCArIHNyY194ICogMTAw LCAxMCArIHNyY195ICogMTAwLCAwKTsKLSsgICAgICAgICAgU2tQYWNrQVJHQjMyKDI1NSwgMTAg KyBzcmNfeCAqIDEwMCwgMTAgKyBzcmNfeSAqIDEwMCwgMCk7Ci0gICAgIH0KLSAgIH0KLSAKLUBA IC01NTIsNyArNTU0LDcgQEAgVEVTVChJbWFnZU9wZXJhdGlvbnMsIFNjYWxlVXApIHsKLSAgICAg ICAgICAgICAgIGxhbmN6b3MzKHNyY194ICsgMC41IC0gZHN0X3hfaW5fc3JjKSAqCi0gICAgICAg ICAgICAgICBsYW5jem9zMyhzcmNfeSArIDAuNSAtIGRzdF95X2luX3NyYyk7Ci0gICAgICAgICAg IHN1bSArPSBjb2VmZjsKLS0gICAgICAgICAgU2tDb2xvciB0bXAgPSAqc3JjLmdldEFkZHIzMihz cmNfeCwgc3JjX3kpOwotKyAgICAgICAgICBTa0NvbG9yIHRtcCA9IFNrVW5QcmVNdWx0aXBseTo6 UE1Db2xvclRvQ29sb3IoKnNyYy5nZXRBZGRyMzIoc3JjX3gsIHNyY195KSk7Ci0gICAgICAgICAg IGEgKz0gY29lZmYgKiBTa0NvbG9yR2V0QSh0bXApOwotICAgICAgICAgICByICs9IGNvZWZmICog U2tDb2xvckdldFIodG1wKTsKLSAgICAgICAgICAgZyArPSBjb2VmZiAqIFNrQ29sb3JHZXRHKHRt cCk7Ci1AQCAtNTcxLDcgKzU3Myw3IEBAIFRFU1QoSW1hZ2VPcGVyYXRpb25zLCBTY2FsZVVwKSB7 Ci0gICAgICAgaWYgKHIgPiAyNTUuMGYpIHIgPSAyNTUuMGY7Ci0gICAgICAgaWYgKGcgPiAyNTUu MGYpIGcgPSAyNTUuMGY7Ci0gICAgICAgaWYgKGIgPiAyNTUuMGYpIGIgPSAyNTUuMGY7Ci0tICAg ICAgU2tDb2xvciBkc3RfY29sb3IgPSAqZHN0LmdldEFkZHIzMihkc3RfeCwgZHN0X3kpOwotKyAg ICAgIFNrQ29sb3IgZHN0X2NvbG9yID0gU2tVblByZU11bHRpcGx5OjpQTUNvbG9yVG9Db2xvcigq ZHN0LmdldEFkZHIzMihkc3RfeCwgZHN0X3kpKTsKLSAgICAgICBFWFBFQ1RfTEUoZmFicyhTa0Nv bG9yR2V0QShkc3RfY29sb3IpIC0gYSksIDEuNWYpOwotICAgICAgIEVYUEVDVF9MRShmYWJzKFNr Q29sb3JHZXRSKGRzdF9jb2xvcikgLSByKSwgMS41Zik7Ci0gICAgICAgRVhQRUNUX0xFKGZhYnMo U2tDb2xvckdldEcoZHN0X2NvbG9yKSAtIGcpLCAxLjVmKTsKLS0tLSBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vZ3Jh cGhpY3MvZ3B1L3dlYmdsX2ltYWdlX2NvbnZlcnNpb24uY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vZ3Jh cGhpY3MvZ3B1L3dlYmdsX2ltYWdlX2NvbnZlcnNpb24uY2MKLUBAIC00NTYsOCArNDU2LDggQEAg dm9pZCBVbnBhY2s8V2ViR0xJbWFnZUNvbnZlcnNpb246OmtEYXRhRm9ybWF0QkdSQTgsIHVpbnQ4 X3QsIHVpbnQ4X3Q+KAotICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBpeGVsc19wZXJfcm93 OyArK2kpIHsKLSAgICAgdWludDMyX3QgYmdyYSA9IHNvdXJjZTMyW2ldOwotICNpZiBkZWZpbmVk KEFSQ0hfQ1BVX0JJR19FTkRJQU4pCi0tICAgIHVpbnQzMl90IGJyTWFzayA9IDB4ZmYwMGZmMDA7 Ci0tICAgIHVpbnQzMl90IGdhTWFzayA9IDB4MDBmZjAwZmY7Ci0rICAgIHVpbnQzMl90IGJyX21h c2sgPSAweGZmMDBmZjAwOwotKyAgICB1aW50MzJfdCBnYV9tYXNrID0gMHgwMGZmMDBmZjsKLSAj ZWxzZQotICAgICB1aW50MzJfdCBicl9tYXNrID0gMHgwMGZmMDBmZjsKLSAgICAgdWludDMyX3Qg Z2FfbWFzayA9IDB4ZmYwMGZmMDA7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS93ZWJn bF9pbWFnZV9jb252ZXJzaW9uX3Rlc3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1 L3dlYmdsX2ltYWdlX2NvbnZlcnNpb25fdGVzdC5jYwotQEAgLTc2LDkgKzc2LDkgQEAgVEVTVF9G KFdlYkdMSW1hZ2VDb252ZXJzaW9uVGVzdCwgY29udmVydEJHUkE4dG9SR0JBOCkgewotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMHgzNDU2Nzg4OCwgMHgxMjM0NTY3OCwgMHgzNDU2Nzg4 OCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIzNDU2NzgsIDB4MzQ1Njc4ODgs IDB4MTIzNDU2Nzh9OwotICNpZiBkZWZpbmVkKEFSQ0hfQ1BVX0JJR19FTkRJQU4pCi0tICB1aW50 MzJfdCBleHBlY3RlZERhdGFbOV0gPSB7MHg1NjM0MTI3OCwgMHg3ODU2MzQ4OCwgMHg1NjM0MTI3 OCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4NTYzNDg4LCAweDU2MzQxMjc4 LCAweDc4NTYzNDg4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTYzNDEyNzgs IDB4Nzg1NjM0ODgsIDB4NTYzNDEyNzh9OwotKyAgdWludDMyX3QgZXhwZWN0ZWRfZGF0YVs5XSA9 IHsweDU2MzQxMjc4LCAweDc4NTYzNDg4LCAweDU2MzQxMjc4LAotKwkJCSAgICAgICAweDc4NTYz NDg4LCAweDU2MzQxMjc4LCAweDc4NTYzNDg4LAotKwkJCSAgICAgICAweDU2MzQxMjc4LCAweDc4 NTYzNDg4LCAweDU2MzQxMjc4fTsKLSAjZWxzZQotICAgdWludDMyX3QgZXhwZWN0ZWRfZGF0YVs5 XSA9IHsweDEyNzg1NjM0LCAweDM0ODg3ODU2LCAweDEyNzg1NjM0LAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAweDM0ODg3ODU2LCAweDEyNzg1NjM0LCAweDM0ODg3ODU2LAotLS0t IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5k ZXJlci9wbGF0Zm9ybS9ncmFwaGljcy9ncmFwaGljc19jb250ZXh0X3Rlc3QuY2MKLSsrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIv cGxhdGZvcm0vZ3JhcGhpY3MvZ3JhcGhpY3NfY29udGV4dF90ZXN0LmNjCi1AQCAtNTIsNyArNTIs NyBAQCBuYW1lc3BhY2UgYmxpbmsgewotICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICBmb3IgKGludCB5ID0gb3Bh cXVlUmVjdC5ZKCk7IHkgPCBvcGFxdWVSZWN0Lk1heFkoKTsgKyt5KSAgICAgXAotICAgICAgIGZv ciAoaW50IHggPSBvcGFxdWVSZWN0LlgoKTsgeCA8IG9wYXF1ZVJlY3QuTWF4WCgpOyArK3gpIHsg XAotLSAgICAgICAgaW50IGFscGhhID0gKmJpdG1hcC5nZXRBZGRyMzIoeCwgeSkgPj4gMjQ7ICAg ICAgICAgICAgICAgXAotKyAgICAgICAgaW50IGFscGhhID0gU2tHZXRQYWNrZWRBMzIoKmJpdG1h cC5nZXRBZGRyMzIoeCwgeSkpOwkgXAotICAgICAgICAgRVhQRUNUX0VRKDI1NSwgYWxwaGEpOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgIH0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgfQotQEAg LTYxLDEyICs2MSwxNiBAQCBuYW1lc3BhY2UgYmxpbmsgewotICAgeyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICBmb3IgKGlu dCB5ID0gMDsgeSA8IGJpdG1hcC5oZWlnaHQoKTsgKyt5KSAgICAgICAgICAgICAgICAgXAotICAg ICAgIGZvciAoaW50IHggPSAwOyB4IDwgYml0bWFwLndpZHRoKCk7ICsreCkgeyAgICAgICAgICAg ICAgXAotLSAgICAgICAgaW50IGFscGhhID0gKmJpdG1hcC5nZXRBZGRyMzIoeCwgeSkgPj4gMjQ7 ICAgICAgICAgICAgXAotKyAgICAgICAgaW50IGFscGhhID0gU2tHZXRQYWNrZWRBMzIoKmJpdG1h cC5nZXRBZGRyMzIoeCwgeSkpOyAgXAotICAgICAgICAgYm9vbCBvcGFxdWUgPSBvcGFxdWVSZWN0 LkNvbnRhaW5zKHgsIHkpOyAgICAgICAgICAgICAgXAotICAgICAgICAgRVhQRUNUX0VRKG9wYXF1 ZSwgYWxwaGEgPT0gMjU1KTsgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgIH0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgfQot IAotK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgUGFja0FSR0IzMih1aW50MzJfdCBhcmdiKSB7Ci0r ICByZXR1cm4gU2tQYWNrQVJHQjMyTm9DaGVjayhhcmdiPj4yNCwgKGFyZ2I8PDgpPj4yNCwgKGFy Z2I8PDE2KT4+MjQsIChhcmdiPDwyNCk+PjI0KTsKLSt9Ci0rCi0gVEVTVChHcmFwaGljc0NvbnRl eHRUZXN0LCBSZWNvcmRpbmcpIHsKLSAgIFNrQml0bWFwIGJpdG1hcDsKLSAgIGJpdG1hcC5hbGxv Y04zMlBpeGVscygxMDAsIDEwMCk7Ci1AQCAtMTg0LDEwICsxODgsMTAgQEAgY2xhc3MgR3JhcGhp Y3NDb250ZXh0SGlnaENvbnN0cmFzdFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gVEVT VF9GKEdyYXBoaWNzQ29udGV4dEhpZ2hDb25zdHJhc3RUZXN0LCBNQVlCRV9Ob0hpZ2hDb250cmFz dCkgewotICAgRHJhd0NvbG9yc1RvQ29udGV4dCgpOwotIAotLSAgRVhQRUNUX0VRKDB4ZmYwMDAw MDAsICpiaXRtYXBfLmdldEFkZHIzMigwLCAwKSk7Ci0tICBFWFBFQ1RfRVEoMHhmZmZmZmZmZiwg KmJpdG1hcF8uZ2V0QWRkcjMyKDEsIDApKTsKLS0gIEVYUEVDVF9FUSgweGZmZmYwMDAwLCAqYml0 bWFwXy5nZXRBZGRyMzIoMiwgMCkpOwotLSAgRVhQRUNUX0VRKDB4ZmY4MDgwODAsICpiaXRtYXBf LmdldEFkZHIzMigzLCAwKSk7Ci0rICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmMDAwMDAwKSwg KmJpdG1hcF8uZ2V0QWRkcjMyKDAsIDApKTsKLSsgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmZm ZmZmZmYpLCAqYml0bWFwXy5nZXRBZGRyMzIoMSwgMCkpOwotKyAgRVhQRUNUX0VRKFBhY2tBUkdC MzIoMHhmZmZmMDAwMCksICpiaXRtYXBfLmdldEFkZHIzMigyLCAwKSk7Ci0rICBFWFBFQ1RfRVEo UGFja0FSR0IzMigweGZmODA4MDgwKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDMsIDApKTsKLSB9Ci0g Ci0gLy8gVE9ETyhjcmJ1Zy5jb20vODUwNzgyKTogUmVlbmFibGUgdGhpcy4KLUBAIC0yMDUsMTAg KzIwOSwxMCBAQCBURVNUX0YoR3JhcGhpY3NDb250ZXh0SGlnaENvbnN0cmFzdFRlc3QsIE1BWUJF X0hpZ2hDb250cmFzdE9mZikgewotIAotICAgRHJhd0NvbG9yc1RvQ29udGV4dCgpOwotIAotLSAg RVhQRUNUX0VRKDB4ZmYwMDAwMDAsICpiaXRtYXBfLmdldEFkZHIzMigwLCAwKSk7Ci0tICBFWFBF Q1RfRVEoMHhmZmZmZmZmZiwgKmJpdG1hcF8uZ2V0QWRkcjMyKDEsIDApKTsKLS0gIEVYUEVDVF9F USgweGZmZmYwMDAwLCAqYml0bWFwXy5nZXRBZGRyMzIoMiwgMCkpOwotLSAgRVhQRUNUX0VRKDB4 ZmY4MDgwODAsICpiaXRtYXBfLmdldEFkZHIzMigzLCAwKSk7Ci0rICBFWFBFQ1RfRVEoUGFja0FS R0IzMigweGZmMDAwMDAwKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDAsIDApKTsKLSsgIEVYUEVDVF9F UShQYWNrQVJHQjMyKDB4ZmZmZmZmZmYpLCAqYml0bWFwXy5nZXRBZGRyMzIoMSwgMCkpOwotKyAg RVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZmZmMDAwMCksICpiaXRtYXBfLmdldEFkZHIzMigyLCAw KSk7Ci0rICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmODA4MDgwKSwgKmJpdG1hcF8uZ2V0QWRk cjMyKDMsIDApKTsKLSB9Ci0gCi0gLy8gU2ltcGxlIGludmVydCBmb3IgdGVzdGluZy4gRWFjaCBj b2xvciBjb21wb25lbnQgfGN8Ci1AQCAtMjI4LDEwICsyMzIsMTAgQEAgVEVTVF9GKEdyYXBoaWNz Q29udGV4dEhpZ2hDb25zdHJhc3RUZXN0LCBNQVlCRV9TaW1wbGVJbnZlcnRGb3JUZXN0aW5nKSB7 Ci0gCi0gICBEcmF3Q29sb3JzVG9Db250ZXh0KCk7Ci0gCi0tICBFWFBFQ1RfRVEoMHhmZmZmZmZm ZiwgKmJpdG1hcF8uZ2V0QWRkcjMyKDAsIDApKTsKLS0gIEVYUEVDVF9FUSgweGZmMDAwMDAwLCAq Yml0bWFwXy5nZXRBZGRyMzIoMSwgMCkpOwotLSAgRVhQRUNUX0VRKDB4ZmYwMGZmZmYsICpiaXRt YXBfLmdldEFkZHIzMigyLCAwKSk7Ci0tICBFWFBFQ1RfRVEoMHhmZjdmN2Y3ZiwgKmJpdG1hcF8u Z2V0QWRkcjMyKDMsIDApKTsKLSsgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmZmZmZmZmYpLCAq Yml0bWFwXy5nZXRBZGRyMzIoMCwgMCkpOwotKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZjAw MDAwMCksICpiaXRtYXBfLmdldEFkZHIzMigxLCAwKSk7Ci0rICBFWFBFQ1RfRVEoUGFja0FSR0Iz MigweGZmMDBmZmZmKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDIsIDApKTsKLSsgIEVYUEVDVF9FUShQ YWNrQVJHQjMyKDB4ZmY3ZjdmN2YpLCAqYml0bWFwXy5nZXRBZGRyMzIoMywgMCkpOwotIH0KLSAK LSAvLyBJbnZlcnQgYnJpZ2h0bmVzcyAod2l0aCBnYW1tYSBjb3JyZWN0aW9uKS4KLUBAIC0yNTAs MTAgKzI1NCwxMCBAQCBURVNUX0YoR3JhcGhpY3NDb250ZXh0SGlnaENvbnN0cmFzdFRlc3QsIE1B WUJFX0ludmVydEJyaWdodG5lc3MpIHsKLSAKLSAgIERyYXdDb2xvcnNUb0NvbnRleHQoKTsKLSAK LS0gIEVYUEVDVF9FUSgweGZmZmZmZmZmLCAqYml0bWFwXy5nZXRBZGRyMzIoMCwgMCkpOwotLSAg RVhQRUNUX0VRKDB4ZmYwMDAwMDAsICpiaXRtYXBfLmdldEFkZHIzMigxLCAwKSk7Ci0tICBFWFBF Q1RfRVEoMHhmZjAwZmZmZiwgKmJpdG1hcF8uZ2V0QWRkcjMyKDIsIDApKTsKLS0gIEVYUEVDVF9F USgweGZmZGRkZGRkLCAqYml0bWFwXy5nZXRBZGRyMzIoMywgMCkpOwotKyAgRVhQRUNUX0VRKFBh Y2tBUkdCMzIoMHhmZmZmZmZmZiksICpiaXRtYXBfLmdldEFkZHIzMigwLCAwKSk7Ci0rICBFWFBF Q1RfRVEoUGFja0FSR0IzMigweGZmMDAwMDAwKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDEsIDApKTsK LSsgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmYwMGZmZmYpLCAqYml0bWFwXy5nZXRBZGRyMzIo MiwgMCkpOwotKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZmRkZGRkZCksICpiaXRtYXBfLmdl dEFkZHIzMigzLCAwKSk7Ci0gfQotIAotIC8vIEludmVydCBsaWdodG5lc3MgKGluIEhTTCBzcGFj ZSkuCi1AQCAtMjcyLDEwICsyNzYsMTAgQEAgVEVTVF9GKEdyYXBoaWNzQ29udGV4dEhpZ2hDb25z dHJhc3RUZXN0LCBNQVlCRV9JbnZlcnRMaWdodG5lc3MpIHsKLSAKLSAgIERyYXdDb2xvcnNUb0Nv bnRleHQoKTsKLSAKLS0gIEVYUEVDVF9FUSgweGZmZmZmZmZmLCAqYml0bWFwXy5nZXRBZGRyMzIo MCwgMCkpOwotLSAgRVhQRUNUX0VRKDB4ZmYwMDAwMDAsICpiaXRtYXBfLmdldEFkZHIzMigxLCAw KSk7Ci0tICBFWFBFQ1RfRVEoMHhmZmZmMDAwMCwgKmJpdG1hcF8uZ2V0QWRkcjMyKDIsIDApKTsK LS0gIEVYUEVDVF9FUSgweGZmZGRkZGRkLCAqYml0bWFwXy5nZXRBZGRyMzIoMywgMCkpOwotKyAg RVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZmZmZmZmZiksICpiaXRtYXBfLmdldEFkZHIzMigwLCAw KSk7Ci0rICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmMDAwMDAwKSwgKmJpdG1hcF8uZ2V0QWRk cjMyKDEsIDApKTsKLSsgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmZmZjAwMDApLCAqYml0bWFw Xy5nZXRBZGRyMzIoMiwgMCkpOwotKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZmRkZGRkZCks ICpiaXRtYXBfLmdldEFkZHIzMigzLCAwKSk7Ci0gfQotIAotIC8vIEludmVydCBsaWdodG5lc3Mg cGx1cyBncmF5c2NhbGUuCi1AQCAtMjg4LDEwICsyOTIsMTAgQEAgVEVTVF9GKEdyYXBoaWNzQ29u dGV4dEhpZ2hDb25zdHJhc3RUZXN0LCBJbnZlcnRMaWdodG5lc3NQbHVzR3JheXNjYWxlKSB7Ci0g Ci0gICBEcmF3Q29sb3JzVG9Db250ZXh0KCk7Ci0gCi0tICBFWFBFQ1RfRVEoMHhmZmZmZmZmZiwg KmJpdG1hcF8uZ2V0QWRkcjMyKDAsIDApKTsKLS0gIEVYUEVDVF9FUSgweGZmMDAwMDAwLCAqYml0 bWFwXy5nZXRBZGRyMzIoMSwgMCkpOwotLSAgRVhQRUNUX0VRKDB4ZmZlMmUyZTIsICpiaXRtYXBf LmdldEFkZHIzMigyLCAwKSk7Ci0tICBFWFBFQ1RfRVEoMHhmZmRkZGRkZCwgKmJpdG1hcF8uZ2V0 QWRkcjMyKDMsIDApKTsKLSsgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmZmZmZmZmYpLCAqYml0 bWFwXy5nZXRBZGRyMzIoMCwgMCkpOwotKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZjAwMDAw MCksICpiaXRtYXBfLmdldEFkZHIzMigxLCAwKSk7Ci0rICBFWFBFQ1RfRVEoUGFja0FSR0IzMigw eGZmZTJlMmUyKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDIsIDApKTsKLSsgIEVYUEVDVF9FUShQYWNr QVJHQjMyKDB4ZmZkZGRkZGQpLCAqYml0bWFwXy5nZXRBZGRyMzIoMywgMCkpOwotIH0KLSAKLSAv LyBUT0RPKGNyYnVnLmNvbS84NTA3ODIpOiBSZWVuYWJsZSB0aGlzLgotQEAgLTMwOSwxMCArMzEz LDEwIEBAIFRFU1RfRihHcmFwaGljc0NvbnRleHRIaWdoQ29uc3RyYXN0VGVzdCwgTUFZQkVfSW52 ZXJ0TGlnaHRuZXNzUGx1c0NvbnRyYXN0KSB7Ci0gCi0gICBEcmF3Q29sb3JzVG9Db250ZXh0KCk7 Ci0gCi0tICBFWFBFQ1RfRVEoMHhmZmZmZmZmZiwgKmJpdG1hcF8uZ2V0QWRkcjMyKDAsIDApKTsK LS0gIEVYUEVDVF9FUSgweGZmMDAwMDAwLCAqYml0bWFwXy5nZXRBZGRyMzIoMSwgMCkpOwotLSAg RVhQRUNUX0VRKDB4ZmZmZjAwMDAsICpiaXRtYXBfLmdldEFkZHIzMigyLCAwKSk7Ci0tICBFWFBF Q1RfRVEoMHhmZmVlZWVlZSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDMsIDApKTsKLSsgIEVYUEVDVF9F UShQYWNrQVJHQjMyKDB4ZmZmZmZmZmYpLCAqYml0bWFwXy5nZXRBZGRyMzIoMCwgMCkpOwotKyAg RVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZjAwMDAwMCksICpiaXRtYXBfLmdldEFkZHIzMigxLCAw KSk7Ci0rICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmZmYwMDAwKSwgKmJpdG1hcF8uZ2V0QWRk cjMyKDIsIDApKTsKLSsgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmZlZWVlZWUpLCAqYml0bWFw Xy5nZXRBZGRyMzIoMywgMCkpOwotIH0KLSAKLSB9ICAvLyBuYW1lc3BhY2UgYmxpbmsKLS0tLSBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVy ZXIvcGxhdGZvcm0vZ3JhcGhpY3MvaGlnaGNvbnRyYXN0L2hpZ2hjb250cmFzdF9jbGFzc2lmaWVy LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Js aW5rL3JlbmRlcmVyL3BsYXRmb3JtL2dyYXBoaWNzL2hpZ2hjb250cmFzdC9oaWdoY29udHJhc3Rf Y2xhc3NpZmllci5jYwotQEAgLTEwNjAsNTUgKzEwNjAsNDcgQEAgdm9pZCBEZXF1YW50aXplTWlu Rmlyc3QoY29uc3QgaW50MzJfdCByYW5rLAotIAotIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0g Ly8gQ09OU1RBTlRTCi0tLy8gTm90ZSB0aGF0IGZvciBub3csIGVuZGlhbm5lc3Mgb2YgdGhlIHRh cmdldCBtYWNoaW5lIG5lZWRzIHRvIG1hdGNoIHRoYXQgb2YKLS0vLyB0aGUgb25lIHRyYWluaW5n IHdhcyBwZXJmb3JtZWQgb24uCi0gLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBjb25zdCBpbnQz Ml90IGRubl9oaWRkZW5sYXllcl8wX3dlaWdodHNfcGFydF8wX3NoYXBlWzJdID0gezQsIDEwfTsK LSBjb25zdCB1bmlvbiB7Ci0tICB1aW50OF90IGJ5dGVzWzE2MF07Ci0gICBmbG9hdCB2YWx1ZXNb NDBdOwotIH0gZG5uX2hpZGRlbmxheWVyXzBfd2VpZ2h0c19wYXJ0XzAgPSB7ewotLSAgICAweGJj LCAweDIyLCAweDBhLCAweGJmLCAweGI0LCAweDQ2LCAweDhjLCAweDNmLCAweGJhLCAweDMxLCAw eDM0LCAweGJlLAotLSAgICAweDRjLCAweDY1LCAweGRiLCAweGJlLCAweGYwLCAweDU0LCAweDVl LCAweGJlLCAweGMxLCAweDVkLCAweGIzLCAweDNmLAotLSAgICAweGY0LCAweGU2LCAweDE1LCAw eGJmLCAweDA1LCAweGM2LCAweDM0LCAweGJmLCAweGMwLCAweDM3LCAweDdlLCAweGJkLAotLSAg ICAweDZjLCAweDM1LCAweDBiLCAweGJmLCAweGNhLCAweDUzLCAweDI2LCAweGJmLCAweDU4LCAw eGI0LCAweDg3LCAweDNmLAotLSAgICAweDM3LCAweGVlLCAweDM5LCAweGJmLCAweGRhLCAweGZh LCAweGY5LCAweGJlLCAweDk3LCAweGMxLCAweDA2LCAweGJmLAotLSAgICAweGY5LCAweDRlLCAw eDgxLCAweDNmLCAweGIyLCAweDQ0LCAweDg1LCAweGJmLCAweDdmLCAweDk4LCAweDdjLCAweDNk LAotLSAgICAweDE1LCAweDI2LCAweGJjLCAweGJlLCAweDVjLCAweDQ4LCAweDA1LCAweDNmLCAw eGM4LCAweGFhLCAweGExLCAweGJkLAotLSAgICAweDM1LCAweGIzLCAweDQzLCAweGJlLCAweGVi LCAweDQ2LCAweDkxLCAweDNmLCAweDgwLCAweDcxLCAweGUzLCAweDNjLAotLSAgICAweGQxLCAw eDk4LCAweDc5LCAweDNmLCAweDNjLCAweGQwLCAweDBkLCAweGJmLCAweDFlLCAweDAyLCAweGQz LCAweDNlLAotLSAgICAweDVkLCAweDRiLCAweGEyLCAweGJmLCAweDY4LCAweGFjLCAweGFhLCAw eGJkLCAweGY4LCAweGUxLCAweDc1LCAweDNlLAotLSAgICAweDRhLCAweDljLCAweDI3LCAweGJl LCAweGY4LCAweGFlLCAweGIyLCAweGJlLCAweDdmLCAweDlkLCAweDkxLCAweDNmLAotLSAgICAw eDFlLCAweDhiLCAweGE4LCAweGJlLCAweDM1LCAweDdlLCAweGIyLCAweDNmLCAweGJlLCAweDhj LCAweGQzLCAweGJlLAotLSAgICAweGY5LCAweGNkLCAweGI1LCAweDNmLCAweGExLCAweDUwLCAw eGFhLCAweDNmLCAweGU0LCAweDZkLCAweGRkLCAweGJlLAotLSAgICAweDBkLCAweGNlLCAweGQz LCAweGJlLAotKyAgICAgLTAuNTM5NTkyNTA0NTAxMzQzLCAgIDEuMDk1OTA3Njg4MTQwODcsIC0w LjE3NTk3MDk0MTc4MTk5OCwgLTAuNDI4NTA3MjA4ODI0MTU4LAotKyAgICAgLTAuMjE3MTIwODg1 ODQ4OTk5LCAgIDEuNDAxMjk4NjQyMTU4NTEsICAgLTAuNTg1NTU1MzE1MDE3NywgLTAuNzA2MTQ2 NTM4MjU3NTk5LAotKyAgICAtMC4wNjIwNjQ4ODYwOTMxMzk2LCAtMC41NDM3ODM5MDMxMjE5NDgs IC0wLjY0OTcxNjAxOTYzMDQzMiwgICAxLjA2MDE5MTE1NDQ3OTk4LAotKyAgICAgLTAuNzI2Mjkx MTIwMDUyMzM4LCAtMC40ODgyNDE5NzA1MzkwOTMsIC0wLjUyNjM5MTQ0NjU5MDQyNCwgICAxLjAx MDIyMjU1NDIwNjg1LAotKyAgICAgIC0xLjA0MTE1ODkxNDU2NjA0LCAwLjA2MTY2ODg2OTEwNzk2 MTcsIC0wLjM2NzQ3ODA0Mjg0MDk1OCwgIDAuNTIwNjM1MzY2NDM5ODE5LAotKyAgICAtMC4wNzg5 MzkwMjA2MzM2OTc1LCAgLTAuMTkxMTEzMzA4MDcyMDksICAgMS4xMzQ5NzY3NDQ2NTE3OSwgMC4w Mjc3NjQwODE5NTQ5NTYxLAotKyAgICAgIDAuOTc0OTg4MDQzMzA4MjU4LCAtMC41NTM5NTg2NTQ0 MDM2ODcsICAwLjQxMjEyNTUyNzg1ODczNCwgICAtMS4yNjc5MjQ5MDQ4MjMzLAotKyAgICAtMC4w ODMzMzY2NTEzMjUyMjU4LCAgMC4yNDAxMTk4MTQ4NzI3NDIsIC0wLjE2MzY4MjEzMjk1OTM2Niwg IC0wLjM0ODk5MTE1NTYyNDM5LAotKyAgICAgICAgMS4xMzc2MTg4OTkzNDU0LCAtMC4zMjkxODYz Nzk5MDk1MTUsICAgIDEuMzk0NDc2NTMyOTM2MSwgLTAuNDEzMTgzMTUyNjc1NjI5LAotKyAgICAg ICAxLjQyMDM0ODI4NjYyODcyLCAgIDEuMzMwNTg1NTk4OTQ1NjIsIC0wLjQzMjQ3OTAyMzkzMzQx MSwgLTAuNDEzNjgxNDE3NzAzNjI5Ci0gfX07Ci0gY29uc3QgaW50MzJfdCBkbm5faGlkZGVubGF5 ZXJfMF9iaWFzZXNfcGFydF8wX3NoYXBlWzFdID0gezEwfTsKLSBjb25zdCB1bmlvbiB7Ci0tICB1 aW50OF90IGJ5dGVzWzQwXTsKLSAgIGZsb2F0IHZhbHVlc1sxMF07Ci0gfSBkbm5faGlkZGVubGF5 ZXJfMF9iaWFzZXNfcGFydF8wID0ge3sKLS0gICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhi ZiwgMHg2YSwgMHg1MywgMHgzZSwgMHhkMywgMHhjMSwKLS0gICAgMHhkMCwgMHgzZSwgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMCwgMHhiNiwgMHhkOCwgMHhjMCwgMHgzZSwKLS0gICAgMHhjYSwgMHhl NywgMHgzNSwgMHgzZSwgMHgyMywgMHhhNSwgMHg0NCwgMHgzZiwgMHg2MSwgMHhmZCwKLS0gICAg MHhkMiwgMHgzZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiNiwgMHhlMCwgMHg0MywgMHgz YywKLSsgICAgICAgICAgICAgICAgICAgIDAuMCwgIDAuMjA2NDYxODkxNTMxOTQ0LAotKyAgICAg IDAuNDA3NzI4NzYxNDM0NTU1LCAgICAgICAgICAgICAgICAwLjAsCi0rICAgICAgMC4zNzY2NTMz NzMyNDE0MjUsICAwLjE3NzY0MjAxNzYwMjkyMSwKLSsgICAgICAgMC43NjgxNDQ3ODYzNTc4OCwg IDAuNDEyMDg5Mzc3NjQxNjc4LAotKyAgICAgICAgICAgICAgICAgICAgMC4wLCAwLjAxMTk1NTQz MDczMTE3NzMKLSB9fTsKLSBjb25zdCBpbnQzMl90IGRubl9sb2dpdHNfYmlhc2VzX3BhcnRfMF9z aGFwZVsxXSA9IHsxfTsKLSBjb25zdCB1bmlvbiB7Ci0tICB1aW50OF90IGJ5dGVzWzRdOwotICAg ZmxvYXQgdmFsdWVzWzFdOwotIH0gZG5uX2xvZ2l0c19iaWFzZXNfcGFydF8wID0ge3sKLS0gICAg MHg3NSwgMHhjYSwgMHhkNywgMHhiZSwKLSsgICAgLTAuNDIxNDY2NDk5NTY3MDMyCi0gfX07Ci0g Y29uc3QgaW50MzJfdCBkbm5fbG9naXRzX3dlaWdodHNfcGFydF8wX3NoYXBlWzJdID0gezEwLCAx fTsKLSBjb25zdCB1bmlvbiB7Ci0tICB1aW50OF90IGJ5dGVzWzQwXTsKLSAgIGZsb2F0IHZhbHVl c1sxMF07Ci0gfSBkbm5fbG9naXRzX3dlaWdodHNfcGFydF8wID0ge3sKLS0gICAgMHgxMywgMHgx MiwgMHgzOSwgMHgzZiwgMHhmMywgMHhhNSwgMHhjMiwgMHhiZiwgMHg4MSwgMHg3ZiwKLS0gICAg MHhiZSwgMHgzZiwgMHhmOCwgMHgxNywgMHgyNiwgMHgzZSwgMHhhNCwgMHgxOSwgMHhhNiwgMHgz ZiwKLS0gICAgMHhmMCwgMHhjOSwgMHhiNywgMHhiZiwgMHg2YSwgMHg5OSwgMHhkMiwgMHgzZiwg MHg4YSwgMHg3ZCwKLS0gICAgMHhlOSwgMHgzZiwgMHg4MywgMHg5YSwgMHgzYSwgMHhiZiwgMHhm MSwgMHg2YywgMHgwOCwgMHgzZSwKLSsgICAgICAwLjcyMjkzMjA0MDY5MTM3NiwgIC0xLjUyMDY4 OTM2ODI0Nzk5LAotKyAgICAgICAxLjQ4ODI2NjExMDQyMDIzLCAgMC4xNjIyMDA4MDg1MjUwODUs Ci0rICAgICAgIDEuMjk3NjU3NDg5Nzc2NjEsICAtMS40MzU4NTAxNDM0MzI2MiwKLSsgICAgICAg MS42NDUzMDY4MjU2Mzc4MiwgICAxLjgyNDE0MzY0ODE0NzU4LAotKyAgICAgLTAuNzI4OTIwMTYx NzI0MDkxLCAgMC4xMzMyMjgwNzg0ODQ1MzUKLSB9fTsKLSAKLSB9ICAvLyBhbm9ueW1vdXMgbmFt ZXNwYWNlCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9ibXBfaW1hZ2VfcmVh ZGVyLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv YmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL2JtcF9pbWFnZV9yZWFk ZXIuaAotQEAgLTM3LDYgKzM3LDcgQEAKLSAjaW5jbHVkZSAidGhpcmRfcGFydHkvYmxpbmsvcmVu ZGVyZXIvcGxhdGZvcm0vd3RmL2FsbG9jYXRvci5oIgotICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9i bGluay9yZW5kZXJlci9wbGF0Zm9ybS93dGYvY3B1LmgiCi0gI2luY2x1ZGUgInRoaXJkX3BhcnR5 L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL3d0Zi9ub25jb3B5YWJsZS5oIgotKyNpbmNsdWRlICJi YXNlL3N5c19ieXRlb3JkZXIuaCIKLSAKLSBuYW1lc3BhY2UgYmxpbmsgewotIAotQEAgLTUwLDEx ICs1MSwxMSBAQCBjbGFzcyBQTEFURk9STV9FWFBPUlQgQk1QSW1hZ2VSZWFkZXIgZmluYWwgewot ICAgLy8gUmVhZCBhIHZhbHVlIGZyb20gfGJ1ZmZlcnwsIGNvbnZlcnRpbmcgdG8gYW4gaW50IGFz c3VtaW5nIGxpdHRsZQotICAgLy8gZW5kaWFubmVzcwotICAgc3RhdGljIGlubGluZSB1aW50MTZf dCBSZWFkVWludDE2KGNvbnN0IGNoYXIqIGJ1ZmZlcikgewotLSAgICByZXR1cm4gKnJlaW50ZXJw cmV0X2Nhc3Q8Y29uc3QgdWludDE2X3QqPihidWZmZXIpOwotKyAgICByZXR1cm4gYmFzZTo6Qnl0 ZVN3YXBUb0xFMTYoKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDE2X3QqPihidWZmZXIpKTsK LSAgIH0KLSAKLSAgIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgUmVhZFVpbnQzMihjb25zdCBjaGFy KiBidWZmZXIpIHsKLS0gICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90 Kj4oYnVmZmVyKTsKLSsgICAgcmV0dXJuIGJhc2U6OkJ5dGVTd2FwVG9MRTMyKCpyZWludGVycHJl dF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYnVmZmVyKSk7Ci0gICB9Ci0gCi0gICAvLyB8cGFyZW50 fCBpcyB0aGUgZGVjb2RlciB0aGF0IG93bnMgdXMuCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2ltYWdlLWRl Y29kZXJzL2pwZWcvanBlZ19pbWFnZV9kZWNvZGVyLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2ltYWdl LWRlY29kZXJzL2pwZWcvanBlZ19pbWFnZV9kZWNvZGVyLmNjCi1AQCAtNDksMjMgKzQ5LDMwIEBA IGV4dGVybiAiQyIgewotICNpbmNsdWRlIDxzZXRqbXAuaD4KLSB9Ci0gCi0tI2lmIGRlZmluZWQo QVJDSF9DUFVfQklHX0VORElBTikKLS0jZXJyb3IgQmxpbmsgYXNzdW1lcyBhIGxpdHRsZS1lbmRp YW4gdGFyZ2V0LgotLSNlbmRpZgotLQotICNpZiBkZWZpbmVkKEpDU19BTFBIQV9FWFRFTlNJT05T KQotICNkZWZpbmUgVFVSQk9fSlBFR19SR0JfU1dJWlpMRQotLSNpZiBTS19CMzJfU0hJRlQgIC8v IE91dHB1dCBsaXR0bGUtZW5kaWFuIFJHQkEgcGl4ZWxzIChBbmRyb2lkKS4KLSsjaWYgU0tfUE1D T0xPUl9CWVRFX09SREVSKFIsIEcsIEIsIEEpCi0gaW5saW5lIEpfQ09MT1JfU1BBQ0UgcmdiT3V0 cHV0Q29sb3JTcGFjZSgpIHsKLSAgIHJldHVybiBKQ1NfRVhUX1JHQkE7Ci0gfQotLSNlbHNlICAv LyBPdXRwdXQgbGl0dGxlLWVuZGlhbiBCR1JBIHBpeGVscy4KLSsjZWxpZiBTS19QTUNPTE9SX0JZ VEVfT1JERVIoQiwgRywgUiwgQSkKLSBpbmxpbmUgSl9DT0xPUl9TUEFDRSByZ2JPdXRwdXRDb2xv clNwYWNlKCkgewotICAgcmV0dXJuIEpDU19FWFRfQkdSQTsKLSB9Ci0rI2VsaWYgU0tfUE1DT0xP Ul9CWVRFX09SREVSKEEsIFIsIEcsIEIpCi0raW5saW5lIEpfQ09MT1JfU1BBQ0UgcmdiT3V0cHV0 Q29sb3JTcGFjZSgpIHsKLSsgIHJldHVybiBKQ1NfRVhUX0FSR0I7Ci0rfQotKyNlbGlmIFNLX1BN Q09MT1JfQllURV9PUkRFUihBLCBCLCBHLCBSKQotK2lubGluZSBKX0NPTE9SX1NQQUNFIHJnYk91 dHB1dENvbG9yU3BhY2UoKSB7Ci0rICByZXR1cm4gSkNTX0VYVF9BQkdSOwotK30KLSsjZWxzZQot KyNlcnJvciBDb21wb25lbnQgb3JkZXIgbm90IHN1cHBvcnRlZCBieSBsaWJqcGVnX3R1cmJvCi0g I2VuZGlmCi0gaW5saW5lIGJvb2wgdHVyYm9Td2l6emxlZChKX0NPTE9SX1NQQUNFIGNvbG9yU3Bh Y2UpIHsKLS0gIHJldHVybiBjb2xvclNwYWNlID09IEpDU19FWFRfUkdCQSB8fCBjb2xvclNwYWNl ID09IEpDU19FWFRfQkdSQTsKLSsgIHJldHVybiBjb2xvclNwYWNlID09IEpDU19FWFRfUkdCQSB8 fCBjb2xvclNwYWNlID09IEpDU19FWFRfQkdSQSB8fAotKyAgICBjb2xvclNwYWNlID09IEpDU19F WFRfQUJHUiB8fCBjb2xvclNwYWNlID09IEpDU19FWFRfQVJHQjsKLSB9Ci0gI2Vsc2UKLSBpbmxp bmUgSl9DT0xPUl9TUEFDRSByZ2JPdXRwdXRDb2xvclNwYWNlKCkgewotLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9y bS9pbWFnZS1kZWNvZGVycy93ZWJwL3dlYnBfaW1hZ2VfZGVjb2Rlci5jYwotKysrIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0 Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL3dlYnBfaW1hZ2VfZGVjb2Rlci5jYwotQEAgLTMyLDE4 ICszMiwyMCBAQAotICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9y bS9oaXN0b2dyYW0uaCIKLSAjaW5jbHVkZSAidGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL2NvcmUv U2tEYXRhLmgiCi0gCi0tI2lmIGRlZmluZWQoQVJDSF9DUFVfQklHX0VORElBTikKLS0jZXJyb3Ig QmxpbmsgYXNzdW1lcyBhIGxpdHRsZS1lbmRpYW4gdGFyZ2V0LgotLSNlbmRpZgotLQotLSNpZiBT S19CMzJfU0hJRlQgIC8vIE91dHB1dCBsaXR0bGUtZW5kaWFuIFJHQkEgcGl4ZWxzIChBbmRyb2lk KS4KLSsjaWYgU0tfUE1DT0xPUl9CWVRFX09SREVSKFIsIEcsIEIsIEEpCi0gaW5saW5lIFdFQlBf Q1NQX01PREUgb3V0cHV0TW9kZShib29sIGhhc0FscGhhKSB7Ci0gICByZXR1cm4gaGFzQWxwaGEg PyBNT0RFX3JnYkEgOiBNT0RFX1JHQkE7Ci0gfQotLSNlbHNlICAvLyBPdXRwdXQgbGl0dGxlLWVu ZGlhbiBCR1JBIHBpeGVscy4KLSsjZWxpZiBTS19QTUNPTE9SX0JZVEVfT1JERVIoQiwgRywgUiwg QSkKLSBpbmxpbmUgV0VCUF9DU1BfTU9ERSBvdXRwdXRNb2RlKGJvb2wgaGFzQWxwaGEpIHsKLSAg IHJldHVybiBoYXNBbHBoYSA/IE1PREVfYmdyQSA6IE1PREVfQkdSQTsKLSB9Ci0rI2VsaWYgU0tf UE1DT0xPUl9CWVRFX09SREVSKEEsIFIsIEcsIEIpCi0raW5saW5lIFdFQlBfQ1NQX01PREUgb3V0 cHV0TW9kZShib29sIGhhc0FscGhhKSB7Ci0rICByZXR1cm4gaGFzQWxwaGEgPyBNT0RFX0FyZ2Ig OiBNT0RFX0FSR0I7Ci0rfQotKyNlbHNlCi0rI2Vycm9yIENvbXBvbmVudCBvcmRlciBub3Qgc3Vw cG9ydGVkIGJ5IGxpYndlYnAKLSAjZW5kaWYKLSAKLSBuYW1lc3BhY2UgewotLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0 by9hc24xL2FfaW50LmMKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vYXNuMS9hX2ludC5jCi1AQCAtMzY5LDcgKzM2 OSw5IEBAIGludCBBU04xX0lOVEVHRVJfc2V0X3VpbnQ2NChBU04xX0lOVEVHRVIgKm91dCwgdWlu dDY0X3QgdikKLSAKLSAgICAgT1BFTlNTTF9mcmVlKG91dC0+ZGF0YSk7Ci0gICAgIG91dC0+ZGF0 YSA9IG5ld2RhdGE7Ci0rI2lmbmRlZiBPUEVOU1NMX0JJR0VORElBTgotICAgICB2ID0gQ1JZUFRP X2Jzd2FwOCh2KTsKLSsjZW5kaWYKLSAgICAgbWVtY3B5KG91dC0+ZGF0YSwgJnYsIHNpemVvZih2 KSk7Ci0gCi0gICAgIG91dC0+dHlwZSA9IFZfQVNOMV9JTlRFR0VSOwotLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0by9j aGFjaGEvY2hhY2hhLmMKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vY2hhY2hhL2NoYWNoYS5jCi1AQCAtMjksNiAr MjksMTQgQEAKLSAgICgoKHVpbnQzMl90KSgocClbMF0pKSB8ICgodWludDMyX3QpKChwKVsxXSkg PDwgOCkgfCBcCi0gICAgKCh1aW50MzJfdCkoKHApWzJdKSA8PCAxNikgfCAoKHVpbnQzMl90KSgo cClbM10pIDw8IDI0KSkKLSAKLSsjZGVmaW5lIFUzMlRPOF9MSVRUTEUocCwgdikgICAgXAotKyAg eyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIChwKVswXSA9ICh2ID4+IDApICYg MHhmZjsgIFwKLSsgICAgKHApWzFdID0gKHYgPj4gOCkgJiAweGZmOyAgXAotKyAgICAocClbMl0g PSAodiA+PiAxNikgJiAweGZmOyBcCi0rICAgIChwKVszXSA9ICh2ID4+IDI0KSAmIDB4ZmY7IFwK LSsgIH0KLSsKLSAvLyBzaWdtYSBjb250YWlucyB0aGUgQ2hhQ2hhIGNvbnN0YW50cywgd2hpY2gg aGFwcGVuIHRvIGJlIGFuIEFTQ0lJIHN0cmluZy4KLSBzdGF0aWMgY29uc3QgdWludDhfdCBzaWdt YVsxNl0gPSB7ICdlJywgJ3gnLCAncCcsICdhJywgJ24nLCAnZCcsICcgJywgJzMnLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzInLCAnLScsICdiJywgJ3knLCAndCcsICdl JywgJyAnLCAnaycgfTsKLUBAIC00NSw5ICs1MywyNyBAQCBzdGF0aWMgY29uc3QgdWludDhfdCBz aWdtYVsxNl0gPSB7ICdlJywgJ3gnLCAncCcsICdhJywgJ24nLCAnZCcsICcgJywgJzMnLAotIHZv aWQgQ1JZUFRPX2hjaGFjaGEyMCh1aW50OF90IG91dFszMl0sIGNvbnN0IHVpbnQ4X3Qga2V5WzMy XSwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCBub25jZVsxNl0pIHsKLSAg IHVpbnQzMl90IHhbMTZdOwotLSAgT1BFTlNTTF9tZW1jcHkoeCwgc2lnbWEsIHNpemVvZihzaWdt YSkpOwotLSAgT1BFTlNTTF9tZW1jcHkoJnhbNF0sIGtleSwgMzIpOwotLSAgT1BFTlNTTF9tZW1j cHkoJnhbMTJdLCBub25jZSwgMTYpOwotKyAgaW50IGk7Ci0rCi0rICB4WzBdID0gVThUTzMyX0xJ VFRMRShzaWdtYSArIDApOwotKyAgeFsxXSA9IFU4VE8zMl9MSVRUTEUoc2lnbWEgKyA0KTsKLSsg IHhbMl0gPSBVOFRPMzJfTElUVExFKHNpZ21hICsgOCk7Ci0rICB4WzNdID0gVThUTzMyX0xJVFRM RShzaWdtYSArIDEyKTsKLSsKLSsgIHhbNF0gPSBVOFRPMzJfTElUVExFKGtleSArIDApOwotKyAg eFs1XSA9IFU4VE8zMl9MSVRUTEUoa2V5ICsgNCk7Ci0rICB4WzZdID0gVThUTzMyX0xJVFRMRShr ZXkgKyA4KTsKLSsgIHhbN10gPSBVOFRPMzJfTElUVExFKGtleSArIDEyKTsKLSsKLSsgIHhbOF0g PSBVOFRPMzJfTElUVExFKGtleSArIDE2KTsKLSsgIHhbOV0gPSBVOFRPMzJfTElUVExFKGtleSAr IDIwKTsKLSsgIHhbMTBdID0gVThUTzMyX0xJVFRMRShrZXkgKyAyNCk7Ci0rICB4WzExXSA9IFU4 VE8zMl9MSVRUTEUoa2V5ICsgMjgpOwotKwotKyAgeFsxMl0gPSBVOFRPMzJfTElUVExFKG5vbmNl ICsgMCk7Ci0rICB4WzEzXSA9IFU4VE8zMl9MSVRUTEUobm9uY2UgKyA0KTsKLSsgIHhbMTRdID0g VThUTzMyX0xJVFRMRShub25jZSArIDgpOwotKyAgeFsxNV0gPSBVOFRPMzJfTElUVExFKG5vbmNl ICsgMTIpOwotIAotICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAyMDsgaSArPSAyKSB7Ci0gICAg IFFVQVJURVJST1VORCgwLCA0LCA4LCAxMikKLUBAIC02MCw4ICs4NiwxMCBAQCB2b2lkIENSWVBU T19oY2hhY2hhMjAodWludDhfdCBvdXRbMzJdLCBjb25zdCB1aW50OF90IGtleVszMl0sCi0gICAg IFFVQVJURVJST1VORCgzLCA0LCA5LCAxNCkKLSAgIH0KLSAKLS0gIE9QRU5TU0xfbWVtY3B5KG91 dCwgJnhbMF0sIHNpemVvZih1aW50MzJfdCkgKiA0KTsKLS0gIE9QRU5TU0xfbWVtY3B5KCZvdXRb MTZdLCAmeFsxMl0sIHNpemVvZih1aW50MzJfdCkgKiA0KTsKLSsgIGZvciAoaSA9IDA7IGkgPCA0 OyArK2kpIHsKLSsgICAgVTMyVE84X0xJVFRMRShvdXQgKyA0ICogaSwgeFtpXSk7Ci0rICAgIFUz MlRPOF9MSVRUTEUoJm91dFsxNl0gKyA0ICogaSwgeFsxMitpXSk7Ci0rICB9Ci0gfQotIAotICNp ZiAhZGVmaW5lZChPUEVOU1NMX05PX0FTTSkgJiYgICAgICAgICAgICAgICAgICAgICAgICAgXAot QEAgLTEwNSwxNCArMTMzLDYgQEAgdm9pZCBDUllQVE9fY2hhY2hhXzIwKHVpbnQ4X3QgKm91dCwg Y29uc3QgdWludDhfdCAqaW4sIHNpemVfdCBpbl9sZW4sCi0gCi0gI2Vsc2UKLSAKLS0jZGVmaW5l IFUzMlRPOF9MSVRUTEUocCwgdikgICAgXAotLSAgeyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi0tICAgIChwKVswXSA9ICh2ID4+IDApICYgMHhmZjsgIFwKLS0gICAgKHApWzFdID0gKHYg Pj4gOCkgJiAweGZmOyAgXAotLSAgICAocClbMl0gPSAodiA+PiAxNikgJiAweGZmOyBcCi0tICAg IChwKVszXSA9ICh2ID4+IDI0KSAmIDB4ZmY7IFwKLS0gIH0KLS0KLSAvLyBjaGFjaGFfY29yZSBw ZXJmb3JtcyAyMCByb3VuZHMgb2YgQ2hhQ2hhIG9uIHRoZSBpbnB1dCB3b3JkcyBpbgotIC8vIHxp bnB1dHwgYW5kIHdyaXRlcyB0aGUgNjQgb3V0cHV0IGJ5dGVzIHRvIHxvdXRwdXR8LgotIHN0YXRp YyB2b2lkIGNoYWNoYV9jb3JlKHVpbnQ4X3Qgb3V0cHV0WzY0XSwgY29uc3QgdWludDMyX3QgaW5w dXRbMTZdKSB7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2NpcGhlcl9leHRyYS9lX2Flc2djbXNpdi5jCi0rKysg cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9z cmMvY3J5cHRvL2NpcGhlcl9leHRyYS9lX2Flc2djbXNpdi5jCi1AQCAtNjI1LDcgKzYyNSwxMSBA QCBzdGF0aWMgdm9pZCBnY21fc2l2X2NyeXB0KHVpbnQ4X3QgKm91dCwgY29uc3QgdWludDhfdCAq aW4sIHNpemVfdCBpbl9sZW4sCi0gICBmb3IgKHNpemVfdCBkb25lID0gMDsgZG9uZSA8IGluX2xl bjspIHsKLSAgICAgdWludDhfdCBrZXlzdHJlYW1bQUVTX0JMT0NLX1NJWkVdOwotICAgICBlbmNf YmxvY2soY291bnRlci5jLCBrZXlzdHJlYW0sIGtleSk7Ci0rI2lmZGVmIE9QRU5TU0xfQklHRU5E SUFOCi0rICAgIGNvdW50ZXIud1swXSA9IENSWVBUT19ic3dhcDQoQ1JZUFRPX2Jzd2FwNChjb3Vu dGVyLndbMF0pICsgMSk7Ci0rI2Vsc2UKLSAgICAgY291bnRlci53WzBdKys7Ci0rI2VuZGlmCi0g Ci0gICAgIHNpemVfdCB0b2RvID0gQUVTX0JMT0NLX1NJWkU7Ci0gICAgIGlmIChpbl9sZW4gLSBk b25lIDwgdG9kbykgewotQEAgLTY3Myw4ICs2NzcsMTMgQEAgc3RhdGljIHZvaWQgZ2NtX3Npdl9w b2x5dmFsKAotICAgICB9IGJpdGxlbnM7Ci0gICB9IGxlbmd0aF9ibG9jazsKLSAKLSsjaWZkZWYg T1BFTlNTTF9CSUdFTkRJQU4KLSsgIGxlbmd0aF9ibG9jay5iaXRsZW5zLmFkID0gQ1JZUFRPX2Jz d2FwOChhZF9sZW4gKiA4KTsKLSsgIGxlbmd0aF9ibG9jay5iaXRsZW5zLmluID0gQ1JZUFRPX2Jz d2FwOChpbl9sZW4gKiA4KTsKLSsjZWxzZQotICAgbGVuZ3RoX2Jsb2NrLmJpdGxlbnMuYWQgPSBh ZF9sZW4gKiA4OwotICAgbGVuZ3RoX2Jsb2NrLmJpdGxlbnMuaW4gPSBpbl9sZW4gKiA4OwotKyNl bmRpZgotICAgQ1JZUFRPX1BPTFlWQUxfdXBkYXRlX2Jsb2NrcygmcG9seXZhbF9jdHgsIGxlbmd0 aF9ibG9jay5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobGVuZ3Ro X2Jsb2NrKSk7Ci0gCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2NvbXBpbGVyX3Rlc3QuY2MKLSsrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlw dG8vY29tcGlsZXJfdGVzdC5jYwotQEAgLTQwLDkgKzQwLDEzIEBAIHN0YXRpYyB2b2lkIENoZWNr UmVwcmVzZW50YXRpb24oVCB2YWx1ZSkgewotICAgVW5zaWduZWRUIHZhbHVlX3UgPSBzdGF0aWNf Y2FzdDxVbnNpZ25lZFQ+KHZhbHVlKTsKLSAgIEVYUEVDVF9FUShzaXplb2YoVW5zaWduZWRUKSwg c2l6ZW9mKFQpKTsKLSAKLS0gIC8vIEludGVnZXJzIG11c3QgYmUgbGl0dGxlLWVuZGlhbi4KLSsg IC8vIEludGVnZXJzIG11c3QgYmUgZWl0aGVyIGJpZy1lbmRpYW4gb3IgbGl0dGxlLWVuZGlhbi4K LSAgIHVpbnQ4X3QgZXhwZWN0ZWRbc2l6ZW9mKFVuc2lnbmVkVCldOwotKyNpZmRlZiBPUEVOU1NM X0JJR0VORElBTgotKyAgZm9yIChzaXplX3QgaSA9IHNpemVvZihVbnNpZ25lZFQpOyBpLS0gPiAw OyApIHsKLSsjZWxzZQotICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplb2YoVW5zaWduZWRU KTsgaSsrKSB7Ci0rI2VuZGlmCi0gICAgIGV4cGVjdGVkW2ldID0gc3RhdGljX2Nhc3Q8dWludDhf dD4odmFsdWVfdSk7Ci0gICAgIC8vIERpdmlkZSBpbnN0ZWFkIG9mIHJpZ2h0LXNoaWZ0IHRvIGFw cGVhc2UgY29tcGlsZXJzIHRoYXQgd2FybiBpZiB8VHwgaXMgYQotICAgICAvLyBjaGFyLiBUaGUg ZXhwbGljaXQgY2FzdCBpcyBhbHNvIG5lZWRlZCB0byBhcHBlYXNlIE1TVkMgaWYgaW50ZWdlcgot LS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdz c2wvc3JjL2NyeXB0by9jdXJ2ZTI1NTE5L3NwYWtlMjU1MTkuYwotKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0by9jdXJ2 ZTI1NTE5L3NwYWtlMjU1MTkuYwotQEAgLTMzOSw4ICszMzksMTcgQEAgc3RhdGljIHZvaWQgc2Nh bGFyX2RvdWJsZShzY2FsYXIgKnMpIHsKLSAgIHVpbnQzMl90IGNhcnJ5ID0gMDsKLSAKLSAgIGZv ciAoc2l6ZV90IGkgPSAwOyBpIDwgODsgaSsrKSB7Ci0tICAgIGNvbnN0IHVpbnQzMl90IGNhcnJ5 X291dCA9IHMtPndvcmRzW2ldID4+IDMxOwotLSAgICBzLT53b3Jkc1tpXSA9IChzLT53b3Jkc1tp XSA8PCAxKSB8IGNhcnJ5OwotKyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgotKyAgICBjb25zdCB1 aW50MzJfdCBzaSA9IENSWVBUT19ic3dhcDQocy0+d29yZHNbaV0pOwotKyNlbHNlCi0rICAgIGNv bnN0IHVpbnQzMl90IHNpID0gcy0+d29yZHNbaV07Ci0rI2VuZGlmCi0rICAgIGNvbnN0IHVpbnQz Ml90IGNhcnJ5X291dCA9IHNpID4+IDMxOwotKyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgotKyAg ICBzLT53b3Jkc1tpXSA9IENSWVBUT19ic3dhcDQoKHNpIDw8IDEpIHwgY2FycnkpOwotKyNlbHNl Ci0rICAgIHMtPndvcmRzW2ldID0gKHNpIDw8IDEpIHwgY2Fycnk7Ci0rI2VuZGlmCi0gICAgIGNh cnJ5ID0gY2Fycnlfb3V0OwotICAgfQotIH0KLUBAIC0zNTAsOCArMzU5LDEzIEBAIHN0YXRpYyB2 b2lkIHNjYWxhcl9hZGQoc2NhbGFyICpkZXN0LCBjb25zdCBzY2FsYXIgKnNyYykgewotICAgdWlu dDMyX3QgY2FycnkgPSAwOwotIAotICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA4OyBpKyspIHsK LSsjaWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KLSsgICAgdWludDY0X3QgdG1wID0gKCh1aW50NjRf dClDUllQVE9fYnN3YXA0KGRlc3QtPndvcmRzW2ldKSArIENSWVBUT19ic3dhcDQoc3JjLT53b3Jk c1tpXSkpICsgY2Fycnk7Ci0rICAgIGRlc3QtPndvcmRzW2ldID0gQ1JZUFRPX2Jzd2FwNCgodWlu dDMyX3QpdG1wKTsKLSsjZWxzZQotICAgICB1aW50NjRfdCB0bXAgPSAoKHVpbnQ2NF90KWRlc3Qt PndvcmRzW2ldICsgc3JjLT53b3Jkc1tpXSkgKyBjYXJyeTsKLSAgICAgZGVzdC0+d29yZHNbaV0g PSAodWludDMyX3QpdG1wOwotKyNlbmRpZgotICAgICBjYXJyeSA9ICh1aW50MzJfdCkodG1wID4+ IDMyKTsKLSAgIH0KLSB9Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2V2cC9zY3J5cHQuYwotKysrIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0 by9ldnAvc2NyeXB0LmMKLUBAIC0xOTYsMTAgKzE5NiwyOCBAQCBpbnQgRVZQX1BCRV9zY3J5cHQo Y29uc3QgY2hhciAqcGFzc3dvcmQsIHNpemVfdCBwYXNzd29yZF9sZW4sCi0gICAgIGdvdG8gZXJy OwotICAgfQotIAotKyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgotKyAgdWludDMyX3QgKkIzMiA9 IEItPndvcmRzOwotKyAgc2l6ZV90IEJfd29yZHMgPSBCX2J5dGVzID4+IDI7Ci0rICBkbyB7Ci0r ICAgICpCMzIgPSBDUllQVE9fYnN3YXA0KCpCMzIpOwotKyAgICBCMzIrKzsKLSsgIH0gd2hpbGUo LS1CX3dvcmRzKTsKLSsjZW5kaWYKLSsKLSAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCBwOyBp KyspIHsKLSAgICAgc2NyeXB0Uk9NaXgoQiArIDIgKiByICogaSwgciwgTiwgVCwgVik7Ci0gICB9 Ci0gCi0rI2lmZGVmIE9QRU5TU0xfQklHRU5ESUFOCi0rICBCMzIgPSBCLT53b3JkczsKLSsgIEJf d29yZHMgPSBCX2J5dGVzID4+IDI7Ci0rICBkbyB7Ci0rICAgICpCMzIgPSBDUllQVE9fYnN3YXA0 KCpCMzIpOwotKyAgICBCMzIrKzsKLSsgIH0gd2hpbGUoLS1CX3dvcmRzKTsKLSsjZW5kaWYKLSsK LSAgIGlmICghUEtDUzVfUEJLREYyX0hNQUMocGFzc3dvcmQsIHBhc3N3b3JkX2xlbiwgKGNvbnN0 IHVpbnQ4X3QgKilCLCBCX2J5dGVzLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICBFVlBf c2hhMjU2KCksIGtleV9sZW4sIG91dF9rZXkpKSB7Ci0gICAgIGdvdG8gZXJyOwotLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2Ny eXB0by9maXBzbW9kdWxlL2JuL2J5dGVzLmMKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vZmlwc21vZHVsZS9ibi9i eXRlcy5jCi1AQCAtMTM2LDkgKzEzNiwxMyBAQCBCSUdOVU0gKkJOX2xlMmJuKGNvbnN0IHVpbnQ4 X3QgKmluLCBzaXplX3QgbGVuLCBCSUdOVU0gKnJldCkgewotICAgLy8gTWFrZSBzdXJlIHRoZSB0 b3AgYnl0ZXMgd2lsbCBiZSB6ZXJvZWQuCi0gICByZXQtPmRbbnVtX3dvcmRzIC0gMV0gPSAwOwot IAotLSAgLy8gV2Ugb25seSBzdXBwb3J0IGxpdHRsZS1lbmRpYW4gcGxhdGZvcm1zLCBzbyB3ZSBj YW4gc2ltcGx5IG1lbWNweSB0aGUKLS0gIC8vIGludGVybmFsIHJlcHJlc2VudGF0aW9uLgotKyNp ZmRlZiBPUEVOU1NMX0JJR0VORElBTgotKyAgdWludDhfdCAqb3V0ID0gKHVpbnQ4X3QgKilyZXQt PmQ7Ci0rICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbjsgaSsrKQotKyAgICBvdXRbaSBeIChC Tl9CWVRFUy0xKV0gPSBpbltpXTsKLSsjZWxzZQotICAgT1BFTlNTTF9tZW1jcHkocmV0LT5kLCBp biwgbGVuKTsKLSsjZW5kaWYKLSAgIHJldHVybiByZXQ7Ci0gfQotIAotQEAgLTE1Nyw3ICsxNjEs MTEgQEAgc2l6ZV90IEJOX2JuMmJpbihjb25zdCBCSUdOVU0gKmluLCB1aW50OF90ICpvdXQpIHsK LSBzdGF0aWMgaW50IGZpdHNfaW5fYnl0ZXMoY29uc3QgdWludDhfdCAqYnl0ZXMsIHNpemVfdCBu dW1fYnl0ZXMsIHNpemVfdCBsZW4pIHsKLSAgIHVpbnQ4X3QgbWFzayA9IDA7Ci0gICBmb3IgKHNp emVfdCBpID0gbGVuOyBpIDwgbnVtX2J5dGVzOyBpKyspIHsKLSsjaWZkZWYgT1BFTlNTTF9CSUdF TkRJQU4KLSsgICAgbWFzayB8PSBieXRlc1tpIF4gKEJOX0JZVEVTLTEpXTsKLSsjZWxzZQotICAg ICBtYXNrIHw9IGJ5dGVzW2ldOwotKyNlbmRpZgotICAgfQotICAgcmV0dXJuIG1hc2sgPT0gMDsK LSB9Ci1AQCAtMTcyLDkgKzE4MCwxMyBAQCBpbnQgQk5fYm4ybGVfcGFkZGVkKHVpbnQ4X3QgKm91 dCwgc2l6ZV90IGxlbiwgY29uc3QgQklHTlVNICppbikgewotICAgICBudW1fYnl0ZXMgPSBsZW47 Ci0gICB9Ci0gCi0tICAvLyBXZSBvbmx5IHN1cHBvcnQgbGl0dGxlLWVuZGlhbiBwbGF0Zm9ybXMs IHNvIHdlIGNhbiBzaW1wbHkgbWVtY3B5IGludG8gdGhlCi0tICAvLyBpbnRlcm5hbCByZXByZXNl bnRhdGlvbi4KLSsjaWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KLSsgIGZvciAoc2l6ZV90IGkgPSAw OyBpIDwgbnVtX2J5dGVzOyBpKyspIHsKLSsgICAgb3V0W2ldID0gYnl0ZXNbaSBeIChCTl9CWVRF Uy0xKV07Ci0rICB9Ci0rI2Vsc2UKLSAgIE9QRU5TU0xfbWVtY3B5KG91dCwgYnl0ZXMsIG51bV9i eXRlcyk7Ci0rI2VuZGlmCi0gICAvLyBQYWQgb3V0IHRoZSByZXN0IG9mIHRoZSBidWZmZXIgd2l0 aCB6ZXJvZXMuCi0gICBPUEVOU1NMX21lbXNldChvdXQgKyBudW1fYnl0ZXMsIDAsIGxlbiAtIG51 bV9ieXRlcyk7Ci0gICByZXR1cm4gMTsKLUBAIC0xOTAsMTEgKzIwMiwxNSBAQCBpbnQgQk5fYm4y YmluX3BhZGRlZCh1aW50OF90ICpvdXQsIHNpemVfdCBsZW4sIGNvbnN0IEJJR05VTSAqaW4pIHsK LSAgICAgbnVtX2J5dGVzID0gbGVuOwotICAgfQotIAotLSAgLy8gV2Ugb25seSBzdXBwb3J0IGxp dHRsZS1lbmRpYW4gcGxhdGZvcm1zLCBzbyB3ZSBjYW4gc2ltcGx5IHdyaXRlIHRoZSBidWZmZXIK LS0gIC8vIGluIHJldmVyc2UuCi0rI2lmZGVmIE9QRU5TU0xfQklHRU5ESUFOCi0rICBmb3IgKHNp emVfdCBpID0gMDsgaSA8IG51bV9ieXRlczsgaSsrKSB7Ci0rICAgIG91dFtsZW4gLSBpIC0gMV0g PSBieXRlc1tpIF4gKEJOX0JZVEVTLTEpXTsKLSsgIH0KLSsjZWxzZQotICAgZm9yIChzaXplX3Qg aSA9IDA7IGkgPCBudW1fYnl0ZXM7IGkrKykgewotICAgICBvdXRbbGVuIC0gaSAtIDFdID0gYnl0 ZXNbaV07Ci0gICB9Ci0rI2VuZGlmCi0gICAvLyBQYWQgb3V0IHRoZSByZXN0IG9mIHRoZSBidWZm ZXIgd2l0aCB6ZXJvZXMuCi0gICBPUEVOU1NMX21lbXNldChvdXQsIDAsIGxlbiAtIG51bV9ieXRl cyk7Ci0gICByZXR1cm4gMTsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vZmlwc21vZHVsZS9lY2RzYS9lY2RzYS5j Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Jvcmlu Z3NzbC9zcmMvY3J5cHRvL2ZpcHNtb2R1bGUvZWNkc2EvZWNkc2EuYwotQEAgLTgwLDcgKzgwLDEx IEBAIHN0YXRpYyB2b2lkIGRpZ2VzdF90b19zY2FsYXIoY29uc3QgRUNfR1JPVVAgKmdyb3VwLCBF Q19TQ0FMQVIgKm91dCwKLSAgIH0KLSAgIE9QRU5TU0xfbWVtc2V0KG91dCwgMCwgc2l6ZW9mKEVD X1NDQUxBUikpOwotICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkaWdlc3RfbGVuOyBpKyspIHsK LSsjaWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KLSsgICAgb3V0LT5ieXRlc1tpIF4gKEJOX0JZVEVT LTEpXSA9IGRpZ2VzdFtkaWdlc3RfbGVuIC0gMSAtIGldOwotKyNlbHNlCi0gICAgIG91dC0+Ynl0 ZXNbaV0gPSBkaWdlc3RbZGlnZXN0X2xlbiAtIDEgLSBpXTsKLSsjZW5kaWYKLSAgIH0KLSAKLSAg IC8vIElmIGl0IGlzIHN0aWxsIHRvbyBsb25nLCB0cnVuY2F0ZSByZW1haW5pbmcgYml0cyB3aXRo IGEgc2hpZnQuCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2ZpcHNtb2R1bGUvbW9kZXMvZ2NtLmMKLSsrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9j cnlwdG8vZmlwc21vZHVsZS9tb2Rlcy9nY20uYwotQEAgLTc4LDYgKzc4LDE0IEBACi0gICAgIH0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSAgIH0gd2hpbGUgKDApCi0gCi0rI2lmZGVmIE9QRU5TU0xfQklHRU5ESUFOCi0r I2RlZmluZSBHQ01fYnN3YXA0KHgpICh4KQotKyNkZWZpbmUgR0NNX2Jzd2FwOCh4KSAoeCkKLSsj ZWxzZQotKyNkZWZpbmUgR0NNX2Jzd2FwNCBDUllQVE9fYnN3YXA0Ci0rI2RlZmluZSBHQ01fYnN3 YXA4IENSWVBUT19ic3dhcDgKLSsjZW5kaWYKLSsKLSAvLyBrU2l6ZVRXaXRob3V0TG93ZXI0Qml0 cyBpcyBhIG1hc2sgdGhhdCBjYW4gYmUgdXNlZCB0byB6ZXJvIHRoZSBsb3dlciBmb3VyCi0gLy8g Yml0cyBvZiBhIHxzaXplX3R8LgotIHN0YXRpYyBjb25zdCBzaXplX3Qga1NpemVUV2l0aG91dExv d2VyNEJpdHMgPSAoc2l6ZV90KSAtMTY7Ci1AQCAtMTczLDggKzE4MSw4IEBAIHN0YXRpYyB2b2lk IGdjbV9nbXVsdF80Yml0KHVpbnQ2NF90IFhpWzJdLCBjb25zdCB1MTI4IEh0YWJsZVsxNl0pIHsK LSAgICAgWi5sbyBePSBIdGFibGVbbmxvXS5sbzsKLSAgIH0KLSAKLS0gIFhpWzBdID0gQ1JZUFRP X2Jzd2FwOChaLmhpKTsKLS0gIFhpWzFdID0gQ1JZUFRPX2Jzd2FwOChaLmxvKTsKLSsgIFhpWzBd ID0gR0NNX2Jzd2FwOChaLmhpKTsKLSsgIFhpWzFdID0gR0NNX2Jzd2FwOChaLmxvKTsKLSB9Ci0g Ci0gLy8gU3RyZWFtZWQgZ2NtX211bHRfNGJpdCwgc2VlIENSWVBUT19nY20xMjhfW2VufGRlXWNy eXB0IGZvcgotQEAgLTIzMyw4ICsyNDEsOCBAQCBzdGF0aWMgdm9pZCBnY21fZ2hhc2hfNGJpdCh1 aW50NjRfdCBYaVsyXSwgY29uc3QgdTEyOCBIdGFibGVbMTZdLAotICAgICAgIFoubG8gXj0gSHRh YmxlW25sb10ubG87Ci0gICAgIH0KLSAKLS0gICAgWGlbMF0gPSBDUllQVE9fYnN3YXA4KFouaGkp OwotLSAgICBYaVsxXSA9IENSWVBUT19ic3dhcDgoWi5sbyk7Ci0rICAgIFhpWzBdID0gR0NNX2Jz d2FwOChaLmhpKTsKLSsgICAgWGlbMV0gPSBHQ01fYnN3YXA4KFoubG8pOwotICAgfSB3aGlsZSAo aW5wICs9IDE2LCBsZW4gLT0gMTYpOwotIH0KLSAjZWxzZSAgLy8gR0hBU0hfQVNNCi1AQCAtMzYw LDggKzM2OCw4IEBAIHZvaWQgQ1JZUFRPX2doYXNoX2luaXQoZ211bHRfZnVuYyAqb3V0X211bHQs IGdoYXNoX2Z1bmMgKm91dF9oYXNoLAotICAgT1BFTlNTTF9tZW1jcHkoSC5jLCBnY21fa2V5LCAx Nik7Ci0gCi0gICAvLyBIIGlzIHN0b3JlZCBpbiBob3N0IGJ5dGUgb3JkZXIKLS0gIEgudVswXSA9 IENSWVBUT19ic3dhcDgoSC51WzBdKTsKLS0gIEgudVsxXSA9IENSWVBUT19ic3dhcDgoSC51WzFd KTsKLSsgIEgudVswXSA9IEdDTV9ic3dhcDgoSC51WzBdKTsKLSsgIEgudVsxXSA9IEdDTV9ic3dh cDgoSC51WzFdKTsKLSAKLSAgIE9QRU5TU0xfbWVtY3B5KG91dF9rZXksIEguYywgMTYpOwotIAot QEAgLTQ3NCwxNSArNDgyLDE1IEBAIHZvaWQgQ1JZUFRPX2djbTEyOF9zZXRpdihHQ00xMjhfQ09O VEVYVCAqY3R4LCBjb25zdCBBRVNfS0VZICprZXksCi0gICAgICAgR0NNX01VTChjdHgsIFlpKTsK LSAgICAgfQotICAgICBsZW4wIDw8PSAzOwotLSAgICBjdHgtPllpLnVbMV0gXj0gQ1JZUFRPX2Jz d2FwOChsZW4wKTsKLSsgICAgY3R4LT5ZaS51WzFdIF49IEdDTV9ic3dhcDgobGVuMCk7Ci0gCi0g ICAgIEdDTV9NVUwoY3R4LCBZaSk7Ci0tICAgIGN0ciA9IENSWVBUT19ic3dhcDQoY3R4LT5ZaS5k WzNdKTsKLSsgICAgY3RyID0gR0NNX2Jzd2FwNChjdHgtPllpLmRbM10pOwotICAgfQotIAotICAg KCpjdHgtPmdjbV9rZXkuYmxvY2spKGN0eC0+WWkuYywgY3R4LT5FSzAuYywga2V5KTsKLSAgICsr Y3RyOwotLSAgY3R4LT5ZaS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChjdHIpOwotKyAgY3R4LT5ZaS5k WzNdID0gR0NNX2Jzd2FwNChjdHIpOwotIH0KLSAKLSBpbnQgQ1JZUFRPX2djbTEyOF9hYWQoR0NN MTI4X0NPTlRFWFQgKmN0eCwgY29uc3QgdWludDhfdCAqYWFkLCBzaXplX3QgbGVuKSB7Ci1AQCAt NTgwLDcgKzU4OCw3IEBAIGludCBDUllQVE9fZ2NtMTI4X2VuY3J5cHQoR0NNMTI4X0NPTlRFWFQg KmN0eCwgY29uc3QgQUVTX0tFWSAqa2V5LAotICAgICBjdHgtPmFyZXMgPSAwOwotICAgfQotIAot LSAgY3RyID0gQ1JZUFRPX2Jzd2FwNChjdHgtPllpLmRbM10pOwotKyAgY3RyID0gR0NNX2Jzd2Fw NChjdHgtPllpLmRbM10pOwotIAotICAgbiA9IGN0eC0+bXJlczsKLSAgIGlmIChuKSB7Ci1AQCAt NjAyLDcgKzYxMCw3IEBAIGludCBDUllQVE9fZ2NtMTI4X2VuY3J5cHQoR0NNMTI4X0NPTlRFWFQg KmN0eCwgY29uc3QgQUVTX0tFWSAqa2V5LAotICAgICAgIGlmIChuID09IDApIHsKLSAgICAgICAg ICgqYmxvY2spKGN0eC0+WWkuYywgY3R4LT5FS2kuYywga2V5KTsKLSAgICAgICAgICsrY3RyOwot LSAgICAgICAgY3R4LT5ZaS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChjdHIpOwotKyAgICAgICAgY3R4 LT5ZaS5kWzNdID0gR0NNX2Jzd2FwNChjdHIpOwotICAgICAgIH0KLSAgICAgICBjdHgtPlhpLmNb bl0gXj0gb3V0W2ldID0gaW5baV0gXiBjdHgtPkVLaS5jW25dOwotICAgICAgIG4gPSAobiArIDEp ICUgMTY7Ci1AQCAtNjIxLDcgKzYyOSw3IEBAIGludCBDUllQVE9fZ2NtMTI4X2VuY3J5cHQoR0NN MTI4X0NPTlRFWFQgKmN0eCwgY29uc3QgQUVTX0tFWSAqa2V5LAotICAgICB3aGlsZSAoaikgewot ICAgICAgICgqYmxvY2spKGN0eC0+WWkuYywgY3R4LT5FS2kuYywga2V5KTsKLSAgICAgICArK2N0 cjsKLS0gICAgICBjdHgtPllpLmRbM10gPSBDUllQVE9fYnN3YXA0KGN0cik7Ci0rICAgICAgY3R4 LT5ZaS5kWzNdID0gR0NNX2Jzd2FwNChjdHIpOwotICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp IDwgMTY7IGkgKz0gc2l6ZW9mKHNpemVfdCkpIHsKLSAgICAgICAgIHN0b3JlX3dvcmRfbGUob3V0 ICsgaSwKLSAgICAgICAgICAgICAgICAgICAgICAgbG9hZF93b3JkX2xlKGluICsgaSkgXiBjdHgt PkVLaS50W2kgLyBzaXplb2Yoc2l6ZV90KV0pOwotQEAgLTYzOCw3ICs2NDYsNyBAQCBpbnQgQ1JZ UFRPX2djbTEyOF9lbmNyeXB0KEdDTTEyOF9DT05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkgKmtl eSwKLSAgICAgd2hpbGUgKGxlbiA+PSAxNikgewotICAgICAgICgqYmxvY2spKGN0eC0+WWkuYywg Y3R4LT5FS2kuYywga2V5KTsKLSAgICAgICArK2N0cjsKLS0gICAgICBjdHgtPllpLmRbM10gPSBD UllQVE9fYnN3YXA0KGN0cik7Ci0rICAgICAgY3R4LT5ZaS5kWzNdID0gR0NNX2Jzd2FwNChjdHIp OwotICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMTY7IGkgKz0gc2l6ZW9mKHNpemVfdCkp IHsKLSAgICAgICAgIHN0b3JlX3dvcmRfbGUob3V0ICsgaSwKLSAgICAgICAgICAgICAgICAgICAg ICAgbG9hZF93b3JkX2xlKGluICsgaSkgXiBjdHgtPkVLaS50W2kgLyBzaXplb2Yoc2l6ZV90KV0p OwotQEAgLTY1Myw3ICs2NjEsNyBAQCBpbnQgQ1JZUFRPX2djbTEyOF9lbmNyeXB0KEdDTTEyOF9D T05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkgKmtleSwKLSAgIHdoaWxlIChsZW4gPj0gMTYpIHsK LSAgICAgKCpibG9jaykoY3R4LT5ZaS5jLCBjdHgtPkVLaS5jLCBrZXkpOwotICAgICArK2N0cjsK LS0gICAgY3R4LT5ZaS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChjdHIpOwotKyAgICBjdHgtPllpLmRb M10gPSBHQ01fYnN3YXA0KGN0cik7Ci0gICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMTY7IGkg Kz0gc2l6ZW9mKHNpemVfdCkpIHsKLSAgICAgICBzaXplX3QgdG1wID0gbG9hZF93b3JkX2xlKGlu ICsgaSkgXiBjdHgtPkVLaS50W2kgLyBzaXplb2Yoc2l6ZV90KV07Ci0gICAgICAgc3RvcmVfd29y ZF9sZShvdXQgKyBpLCB0bXApOwotQEAgLTY2OCw3ICs2NzYsNyBAQCBpbnQgQ1JZUFRPX2djbTEy OF9lbmNyeXB0KEdDTTEyOF9DT05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkgKmtleSwKLSAgIGlm IChsZW4pIHsKLSAgICAgKCpibG9jaykoY3R4LT5ZaS5jLCBjdHgtPkVLaS5jLCBrZXkpOwotICAg ICArK2N0cjsKLS0gICAgY3R4LT5ZaS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChjdHIpOwotKyAgICBj dHgtPllpLmRbM10gPSBHQ01fYnN3YXA0KGN0cik7Ci0gICAgIHdoaWxlIChsZW4tLSkgewotICAg ICAgIGN0eC0+WGkuY1tuXSBePSBvdXRbbl0gPSBpbltuXSBeIGN0eC0+RUtpLmNbbl07Ci0gICAg ICAgKytuOwotQEAgLTcwNyw3ICs3MTUsNyBAQCBpbnQgQ1JZUFRPX2djbTEyOF9kZWNyeXB0KEdD TTEyOF9DT05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkgKmtleSwKLSAgICAgY3R4LT5hcmVzID0g MDsKLSAgIH0KLSAKLS0gIGN0ciA9IENSWVBUT19ic3dhcDQoY3R4LT5ZaS5kWzNdKTsKLSsgIGN0 ciA9IEdDTV9ic3dhcDQoY3R4LT5ZaS5kWzNdKTsKLSAKLSAgIG4gPSBjdHgtPm1yZXM7Ci0gICBp ZiAobikgewotQEAgLTczMiw3ICs3NDAsNyBAQCBpbnQgQ1JZUFRPX2djbTEyOF9kZWNyeXB0KEdD TTEyOF9DT05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkgKmtleSwKLSAgICAgICBpZiAobiA9PSAw KSB7Ci0gICAgICAgICAoKmJsb2NrKShjdHgtPllpLmMsIGN0eC0+RUtpLmMsIGtleSk7Ci0gICAg ICAgICArK2N0cjsKLS0gICAgICAgIGN0eC0+WWkuZFszXSA9IENSWVBUT19ic3dhcDQoY3RyKTsK LSsgICAgICAgIGN0eC0+WWkuZFszXSA9IEdDTV9ic3dhcDQoY3RyKTsKLSAgICAgICB9Ci0gICAg ICAgYyA9IGluW2ldOwotICAgICAgIG91dFtpXSA9IGMgXiBjdHgtPkVLaS5jW25dOwotQEAgLTc1 NCw3ICs3NjIsNyBAQCBpbnQgQ1JZUFRPX2djbTEyOF9kZWNyeXB0KEdDTTEyOF9DT05URVhUICpj dHgsIGNvbnN0IEFFU19LRVkgKmtleSwKLSAgICAgd2hpbGUgKGopIHsKLSAgICAgICAoKmJsb2Nr KShjdHgtPllpLmMsIGN0eC0+RUtpLmMsIGtleSk7Ci0gICAgICAgKytjdHI7Ci0tICAgICAgY3R4 LT5ZaS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChjdHIpOwotKyAgICAgIGN0eC0+WWkuZFszXSA9IEdD TV9ic3dhcDQoY3RyKTsKLSAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDE2OyBpICs9IHNp emVvZihzaXplX3QpKSB7Ci0gICAgICAgICBzdG9yZV93b3JkX2xlKG91dCArIGksCi0gICAgICAg ICAgICAgICAgICAgICAgIGxvYWRfd29yZF9sZShpbiArIGkpIF4gY3R4LT5FS2kudFtpIC8gc2l6 ZW9mKHNpemVfdCldKTsKLUBAIC03NzEsNyArNzc5LDcgQEAgaW50IENSWVBUT19nY20xMjhfZGVj cnlwdChHQ00xMjhfQ09OVEVYVCAqY3R4LCBjb25zdCBBRVNfS0VZICprZXksCi0gICAgIHdoaWxl IChsZW4gPj0gMTYpIHsKLSAgICAgICAoKmJsb2NrKShjdHgtPllpLmMsIGN0eC0+RUtpLmMsIGtl eSk7Ci0gICAgICAgKytjdHI7Ci0tICAgICAgY3R4LT5ZaS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChj dHIpOwotKyAgICAgIGN0eC0+WWkuZFszXSA9IEdDTV9ic3dhcDQoY3RyKTsKLSAgICAgICBmb3Ig KHNpemVfdCBpID0gMDsgaSA8IDE2OyBpICs9IHNpemVvZihzaXplX3QpKSB7Ci0gICAgICAgICBz dG9yZV93b3JkX2xlKG91dCArIGksCi0gICAgICAgICAgICAgICAgICAgICAgIGxvYWRfd29yZF9s ZShpbiArIGkpIF4gY3R4LT5FS2kudFtpIC8gc2l6ZW9mKHNpemVfdCldKTsKLUBAIC03ODUsNyAr NzkzLDcgQEAgaW50IENSWVBUT19nY20xMjhfZGVjcnlwdChHQ00xMjhfQ09OVEVYVCAqY3R4LCBj b25zdCBBRVNfS0VZICprZXksCi0gICB3aGlsZSAobGVuID49IDE2KSB7Ci0gICAgICgqYmxvY2sp KGN0eC0+WWkuYywgY3R4LT5FS2kuYywga2V5KTsKLSAgICAgKytjdHI7Ci0tICAgIGN0eC0+WWku ZFszXSA9IENSWVBUT19ic3dhcDQoY3RyKTsKLSsgICAgY3R4LT5ZaS5kWzNdID0gR0NNX2Jzd2Fw NChjdHIpOwotICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDE2OyBpICs9IHNpemVvZihzaXpl X3QpKSB7Ci0gICAgICAgc2l6ZV90IGMgPSBsb2FkX3dvcmRfbGUoaW4gKyBpKTsKLSAgICAgICBz dG9yZV93b3JkX2xlKG91dCArIGksIGMgXiBjdHgtPkVLaS50W2kgLyBzaXplb2Yoc2l6ZV90KV0p OwotQEAgLTgwMCw3ICs4MDgsNyBAQCBpbnQgQ1JZUFRPX2djbTEyOF9kZWNyeXB0KEdDTTEyOF9D T05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkgKmtleSwKLSAgIGlmIChsZW4pIHsKLSAgICAgKCpi bG9jaykoY3R4LT5ZaS5jLCBjdHgtPkVLaS5jLCBrZXkpOwotICAgICArK2N0cjsKLS0gICAgY3R4 LT5ZaS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChjdHIpOwotKyAgICBjdHgtPllpLmRbM10gPSBHQ01f YnN3YXA0KGN0cik7Ci0gICAgIHdoaWxlIChsZW4tLSkgewotICAgICAgIHVpbnQ4X3QgYyA9IGlu W25dOwotICAgICAgIGN0eC0+WGkuY1tuXSBePSBjOwotQEAgLTg2NiwxMyArODc0LDEzIEBAIGlu dCBDUllQVE9fZ2NtMTI4X2VuY3J5cHRfY3RyMzIoR0NNMTI4X0NPTlRFWFQgKmN0eCwgY29uc3Qg QUVTX0tFWSAqa2V5LAotICAgfQotICNlbmRpZgotIAotLSAgY3RyID0gQ1JZUFRPX2Jzd2FwNChj dHgtPllpLmRbM10pOwotKyAgY3RyID0gR0NNX2Jzd2FwNChjdHgtPllpLmRbM10pOwotIAotICNp ZiBkZWZpbmVkKEdIQVNIKQotICAgd2hpbGUgKGxlbiA+PSBHSEFTSF9DSFVOSykgewotICAgICAo KnN0cmVhbSkoaW4sIG91dCwgR0hBU0hfQ0hVTksgLyAxNiwga2V5LCBjdHgtPllpLmMpOwotICAg ICBjdHIgKz0gR0hBU0hfQ0hVTksgLyAxNjsKLS0gICAgY3R4LT5ZaS5kWzNdID0gQ1JZUFRPX2Jz d2FwNChjdHIpOwotKyAgICBjdHgtPllpLmRbM10gPSBHQ01fYnN3YXA0KGN0cik7Ci0gICAgIEdI QVNIKGN0eCwgb3V0LCBHSEFTSF9DSFVOSyk7Ci0gICAgIG91dCArPSBHSEFTSF9DSFVOSzsKLSAg ICAgaW4gKz0gR0hBU0hfQ0hVTks7Ci1AQCAtODg1LDcgKzg5Myw3IEBAIGludCBDUllQVE9fZ2Nt MTI4X2VuY3J5cHRfY3RyMzIoR0NNMTI4X0NPTlRFWFQgKmN0eCwgY29uc3QgQUVTX0tFWSAqa2V5 LAotIAotICAgICAoKnN0cmVhbSkoaW4sIG91dCwgaiwga2V5LCBjdHgtPllpLmMpOwotICAgICBj dHIgKz0gKHVuc2lnbmVkIGludClqOwotLSAgICBjdHgtPllpLmRbM10gPSBDUllQVE9fYnN3YXA0 KGN0cik7Ci0rICAgIGN0eC0+WWkuZFszXSA9IEdDTV9ic3dhcDQoY3RyKTsKLSAgICAgaW4gKz0g aTsKLSAgICAgbGVuIC09IGk7Ci0gI2lmIGRlZmluZWQoR0hBU0gpCi1AQCAtOTA0LDcgKzkxMiw3 IEBAIGludCBDUllQVE9fZ2NtMTI4X2VuY3J5cHRfY3RyMzIoR0NNMTI4X0NPTlRFWFQgKmN0eCwg Y29uc3QgQUVTX0tFWSAqa2V5LAotICAgaWYgKGxlbikgewotICAgICAoKmN0eC0+Z2NtX2tleS5i bG9jaykoY3R4LT5ZaS5jLCBjdHgtPkVLaS5jLCBrZXkpOwotICAgICArK2N0cjsKLS0gICAgY3R4 LT5ZaS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChjdHIpOwotKyAgICBjdHgtPllpLmRbM10gPSBHQ01f YnN3YXA0KGN0cik7Ci0gICAgIHdoaWxlIChsZW4tLSkgewotICAgICAgIGN0eC0+WGkuY1tuXSBe PSBvdXRbbl0gPSBpbltuXSBeIGN0eC0+RUtpLmNbbl07Ci0gICAgICAgKytuOwotQEAgLTk3MCwx NCArOTc4LDE0IEBAIGludCBDUllQVE9fZ2NtMTI4X2RlY3J5cHRfY3RyMzIoR0NNMTI4X0NPTlRF WFQgKmN0eCwgY29uc3QgQUVTX0tFWSAqa2V5LAotICAgfQotICNlbmRpZgotIAotLSAgY3RyID0g Q1JZUFRPX2Jzd2FwNChjdHgtPllpLmRbM10pOwotKyAgY3RyID0gR0NNX2Jzd2FwNChjdHgtPllp LmRbM10pOwotIAotICNpZiBkZWZpbmVkKEdIQVNIKQotICAgd2hpbGUgKGxlbiA+PSBHSEFTSF9D SFVOSykgewotICAgICBHSEFTSChjdHgsIGluLCBHSEFTSF9DSFVOSyk7Ci0gICAgICgqc3RyZWFt KShpbiwgb3V0LCBHSEFTSF9DSFVOSyAvIDE2LCBrZXksIGN0eC0+WWkuYyk7Ci0gICAgIGN0ciAr PSBHSEFTSF9DSFVOSyAvIDE2OwotLSAgICBjdHgtPllpLmRbM10gPSBDUllQVE9fYnN3YXA0KGN0 cik7Ci0rICAgIGN0eC0+WWkuZFszXSA9IEdDTV9ic3dhcDQoY3RyKTsKLSAgICAgb3V0ICs9IEdI QVNIX0NIVU5LOwotICAgICBpbiArPSBHSEFTSF9DSFVOSzsKLSAgICAgbGVuIC09IEdIQVNIX0NI VU5LOwotQEAgLTEwMDMsNyArMTAxMSw3IEBAIGludCBDUllQVE9fZ2NtMTI4X2RlY3J5cHRfY3Ry MzIoR0NNMTI4X0NPTlRFWFQgKmN0eCwgY29uc3QgQUVTX0tFWSAqa2V5LAotICNlbmRpZgotICAg ICAoKnN0cmVhbSkoaW4sIG91dCwgaiwga2V5LCBjdHgtPllpLmMpOwotICAgICBjdHIgKz0gKHVu c2lnbmVkIGludClqOwotLSAgICBjdHgtPllpLmRbM10gPSBDUllQVE9fYnN3YXA0KGN0cik7Ci0r ICAgIGN0eC0+WWkuZFszXSA9IEdDTV9ic3dhcDQoY3RyKTsKLSAgICAgb3V0ICs9IGk7Ci0gICAg IGluICs9IGk7Ci0gICAgIGxlbiAtPSBpOwotQEAgLTEwMTEsNyArMTAxOSw3IEBAIGludCBDUllQ VE9fZ2NtMTI4X2RlY3J5cHRfY3RyMzIoR0NNMTI4X0NPTlRFWFQgKmN0eCwgY29uc3QgQUVTX0tF WSAqa2V5LAotICAgaWYgKGxlbikgewotICAgICAoKmN0eC0+Z2NtX2tleS5ibG9jaykoY3R4LT5Z aS5jLCBjdHgtPkVLaS5jLCBrZXkpOwotICAgICArK2N0cjsKLS0gICAgY3R4LT5ZaS5kWzNdID0g Q1JZUFRPX2Jzd2FwNChjdHIpOwotKyAgICBjdHgtPllpLmRbM10gPSBHQ01fYnN3YXA0KGN0cik7 Ci0gICAgIHdoaWxlIChsZW4tLSkgewotICAgICAgIHVpbnQ4X3QgYyA9IGluW25dOwotICAgICAg IGN0eC0+WGkuY1tuXSBePSBjOwotQEAgLTEwMzYsOCArMTA0NCw4IEBAIGludCBDUllQVE9fZ2Nt MTI4X2ZpbmlzaChHQ00xMjhfQ09OVEVYVCAqY3R4LCBjb25zdCB1aW50OF90ICp0YWcsIHNpemVf dCBsZW4pIHsKLSAgICAgR0NNX01VTChjdHgsIFhpKTsKLSAgIH0KLSAKLS0gIGFsZW4gPSBDUllQ VE9fYnN3YXA4KGFsZW4pOwotLSAgY2xlbiA9IENSWVBUT19ic3dhcDgoY2xlbik7Ci0rICBhbGVu ID0gR0NNX2Jzd2FwOChhbGVuKTsKLSsgIGNsZW4gPSBHQ01fYnN3YXA4KGNsZW4pOwotIAotICAg Y3R4LT5YaS51WzBdIF49IGFsZW47Ci0gICBjdHgtPlhpLnVbMV0gXj0gY2xlbjsKLS0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9j cnlwdG8vZmlwc21vZHVsZS9tb2Rlcy9pbnRlcm5hbC5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2ZpcHNtb2R1 bGUvbW9kZXMvaW50ZXJuYWwuaAotQEAgLTcwLDExICs3MCwxNyBAQCBleHRlcm4gIkMiIHsKLSBz dGF0aWMgaW5saW5lIHVpbnQzMl90IEdFVFUzMihjb25zdCB2b2lkICppbikgewotICAgdWludDMy X3QgdjsKLSAgIE9QRU5TU0xfbWVtY3B5KCZ2LCBpbiwgc2l6ZW9mKHYpKTsKLSsjaWZkZWYgT1BF TlNTTF9CSUdFTkRJQU4KLSsgIHJldHVybiB2OwotKyNlbHNlCi0gICByZXR1cm4gQ1JZUFRPX2Jz d2FwNCh2KTsKLSsjZW5kaWYKLSB9Ci0gCi0gc3RhdGljIGlubGluZSB2b2lkIFBVVFUzMih2b2lk ICpvdXQsIHVpbnQzMl90IHYpIHsKLSsjaWZuZGVmIE9QRU5TU0xfQklHRU5ESUFOCi0gICB2ID0g Q1JZUFRPX2Jzd2FwNCh2KTsKLSsjZW5kaWYKLSAgIE9QRU5TU0xfbWVtY3B5KG91dCwgJnYsIHNp emVvZih2KSk7Ci0gfQotIAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0by9maXBzbW9kdWxlL21vZGVzL3BvbHl2YWwu YwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jp bmdzc2wvc3JjL2NyeXB0by9maXBzbW9kdWxlL21vZGVzL3BvbHl2YWwuYwotQEAgLTMyLDE2ICsz MiwyNiBAQCBzdGF0aWMgdm9pZCBieXRlX3JldmVyc2UocG9seXZhbF9ibG9jayAqYikgewotIC8v IHRoZSBHSEFTSCBmaWVsZCwgbXVsdGlwbGllcyB0aGF0IGJ5ICd4JyBhbmQgc2VyaWFsaXNlcyB0 aGUgcmVzdWx0IGJhY2sgaW50bwotIC8vIHxifCwgYnV0IHdpdGggR0hBU0gncyBiYWNrd2FyZHMg Yml0IG9yZGVyaW5nLgotIHN0YXRpYyB2b2lkIHJldmVyc2VfYW5kX211bFhfZ2hhc2gocG9seXZh bF9ibG9jayAqYikgewotKyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgotKyAgdWludDY0X3QgaGkg PSBDUllQVE9fYnN3YXA4KGItPnVbMF0pOwotKyAgdWludDY0X3QgbG8gPSBDUllQVE9fYnN3YXA4 KGItPnVbMV0pOwotKyNlbHNlCi0gICB1aW50NjRfdCBoaSA9IGItPnVbMF07Ci0gICB1aW50NjRf dCBsbyA9IGItPnVbMV07Ci0rI2VuZGlmCi0gICBjb25zdCBjcnlwdG9fd29yZF90IGNhcnJ5ID0g Y29uc3RhbnRfdGltZV9lcV93KGhpICYgMSwgMSk7Ci0gICBoaSA+Pj0gMTsKLSAgIGhpIHw9IGxv IDw8IDYzOwotICAgbG8gPj49IDE7Ci0gICBsbyBePSAoKHVpbnQ2NF90KSBjb25zdGFudF90aW1l X3NlbGVjdF93KGNhcnJ5LCAweGUxLCAwKSkgPDwgNTY7Ci0gCi0rI2lmZGVmIE9QRU5TU0xfQklH RU5ESUFOCi0rICBiLT51WzBdID0gbG87Ci0rICBiLT51WzFdID0gaGk7Ci0rI2Vsc2UKLSAgIGIt PnVbMF0gPSBDUllQVE9fYnN3YXA4KGxvKTsKLSAgIGItPnVbMV0gPSBDUllQVE9fYnN3YXA4KGhp KTsKLSsjZW5kaWYKLSB9Ci0gCi0gLy8gUE9MWVZBTChILCBYXzEsIC4uLiwgWF9uKSA9Ci0tLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9z cmMvY3J5cHRvL2ZpcHNtb2R1bGUvcmFuZC9jdHJkcmJnLmMKLSsrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vZmlwc21v ZHVsZS9yYW5kL2N0cmRyYmcuYwotQEAgLTcwLDggKzcwLDEyIEBAIE9QRU5TU0xfU1RBVElDX0FT U0VSVChDVFJfRFJCR19FTlRST1BZX0xFTiAlIEFFU19CTE9DS19TSVpFID09IDAsCi0gLy8gY3Ry X2luYyBhZGRzIHxufCB0byB0aGUgbGFzdCBmb3VyIGJ5dGVzIG9mIHxkcmJnLT5jb3VudGVyfCwg dHJlYXRlZCBhcyBhCi0gLy8gYmlnLWVuZGlhbiBudW1iZXIuCi0gc3RhdGljIHZvaWQgY3RyMzJf YWRkKENUUl9EUkJHX1NUQVRFICpkcmJnLCB1aW50MzJfdCBuKSB7Ci0rI2lmZGVmIE9QRU5TU0xf QklHRU5ESUFOCi0rICBkcmJnLT5jb3VudGVyLndvcmRzWzNdICs9IG47Ci0rI2Vsc2UKLSAgIGRy YmctPmNvdW50ZXIud29yZHNbM10gPQotICAgICAgIENSWVBUT19ic3dhcDQoQ1JZUFRPX2Jzd2Fw NChkcmJnLT5jb3VudGVyLndvcmRzWzNdKSArIG4pOwotKyNlbmRpZgotIH0KLSAKLSBzdGF0aWMg aW50IGN0cl9kcmJnX3VwZGF0ZShDVFJfRFJCR19TVEFURSAqZHJiZywgY29uc3QgdWludDhfdCAq ZGF0YSwKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv Ym9yaW5nc3NsL3NyYy9jcnlwdG8vcG9seTEzMDUvcG9seTEzMDUuYwotKysrIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0by9w b2x5MTMwNS9wb2x5MTMwNS5jCi1AQCAtMzIsMTAgKzMyLDE2IEBACi0gc3RhdGljIHVpbnQzMl90 IFU4VE8zMl9MRShjb25zdCB1aW50OF90ICptKSB7Ci0gICB1aW50MzJfdCByOwotICAgT1BFTlNT TF9tZW1jcHkoJnIsIG0sIHNpemVvZihyKSk7Ci0rI2lmZGVmIE9QRU5TU0xfQklHRU5ESUFOCi0r ICByID0gQ1JZUFRPX2Jzd2FwNChyKTsKLSsjZW5kaWYKLSAgIHJldHVybiByOwotIH0KLSAKLSBz dGF0aWMgdm9pZCBVMzJUTzhfTEUodWludDhfdCAqbSwgdWludDMyX3QgdikgewotKyNpZmRlZiBP UEVOU1NMX0JJR0VORElBTgotKyAgdiA9IENSWVBUT19ic3dhcDQodik7Ci0rI2VuZGlmCi0gICBP UEVOU1NMX21lbWNweShtLCAmdiwgc2l6ZW9mKHYpKTsKLSB9Ci0gCi0tLS0gcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvaW5jbHVkZS9v cGVuc3NsL2Jhc2UuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2luY2x1ZGUvb3BlbnNzbC9iYXNlLmgKLUBAIC05OSw2ICs5 OSwxMCBAQCBleHRlcm4gIkMiIHsKLSAjZWxpZiAoZGVmaW5lZChfX1BQQzY0X18pIHx8IGRlZmlu ZWQoX19wb3dlcnBjNjRfXykpICYmIGRlZmluZWQoX0xJVFRMRV9FTkRJQU4pCi0gI2RlZmluZSBP UEVOU1NMXzY0X0JJVAotICNkZWZpbmUgT1BFTlNTTF9QUEM2NExFCi0rI2VsaWYgKGRlZmluZWQo X19QUEM2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pKQotKyNkZWZpbmUgT1BFTlNTTF82 NF9CSVQKLSsjZGVmaW5lIE9QRU5TU0xfUFBDNjQKLSsjZGVmaW5lIE9QRU5TU0xfQklHRU5ESUFO Ci0gI2VsaWYgZGVmaW5lZChfX21pcHNfXykgJiYgIWRlZmluZWQoX19MUDY0X18pCi0gI2RlZmlu ZSBPUEVOU1NMXzMyX0JJVAotICNkZWZpbmUgT1BFTlNTTF9NSVBTCi0tLS0gcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvdGhpcmRfcGFy dHkvZmlhdC9jdXJ2ZTI1NTE5LmMKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy90aGlyZF9wYXJ0eS9maWF0L2N1cnZlMjU1MTku YwotQEAgLTMwMzIsOSArMzAzMiwxNCBAQCBpbnQgRUQyNTUxOV92ZXJpZnkoY29uc3QgdWludDhf dCAqbWVzc2FnZSwgc2l6ZV90IG1lc3NhZ2VfbGVuLAotICAgICBVSU5UNjRfQygweDEwMDAwMDAw MDAwMDAwMDApLAotICAgfTsKLSAgIGZvciAoc2l6ZV90IGkgPSAzOzsgaS0tKSB7Ci0tICAgIGlm IChzY29weS51NjRbaV0gPiBrT3JkZXJbaV0pIHsKLSsjaWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4K LSsgICAgY29uc3QgdWludDY0X3QgbiA9IENSWVBUT19ic3dhcDgoc2NvcHkudTY0W2ldKTsKLSsj ZWxzZQotKyAgICBjb25zdCB1aW50NjRfdCBuID0gc2NvcHkudTY0W2ldOwotKyNlbmRpZgotKyAg ICBpZiAobiA+IGtPcmRlcltpXSkgewotICAgICAgIHJldHVybiAwOwotLSAgICB9IGVsc2UgaWYg KHNjb3B5LnU2NFtpXSA8IGtPcmRlcltpXSkgewotKyAgICB9IGVsc2UgaWYgKG4gPCBrT3JkZXJb aV0pIHsKLSAgICAgICBicmVhazsKLSAgICAgfSBlbHNlIGlmIChpID09IDApIHsKLSAgICAgICBy ZXR1cm4gMDsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvYm9yaW5nc3NsL3NyYy90aGlyZF9wYXJ0eS9maWF0L3AyNTYuYwotKysrIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL3RoaXJkX3Bh cnR5L2ZpYXQvcDI1Ni5jCi1AQCAtODgyLDEyICs4ODIsMjQgQEAgc3RhdGljIHZvaWQgZmVfdG9i eXRlcyh1aW50OF90IG91dFtOQllURVNdLCBjb25zdCBmZSBpbikgewotICAgfQotIH0KLSAKLSsj aWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KLStzdGF0aWMgdm9pZCBmZV90b2J5dGVzX2JlKHVpbnQ4 X3Qgb3V0W05CWVRFU10sIGNvbnN0IGZlIGluKSB7Ci0rICBmb3IgKGludCBpID0gMDsgaTxOQllU RVM7IGkrKykgewotKyAgICBvdXRbaSBeIChCTl9CWVRFUy0xKV0gPSAodWludDhfdCkoaW5baS9z aXplb2YoaW5bMF0pXSA+PiAoOCooaSVzaXplb2YoaW5bMF0pKSkpOwotKyAgfQotK30KLSsjZW5k aWYKLSsKLSBzdGF0aWMgdm9pZCBmZV9mcm9tYnl0ZXMoZmUgb3V0LCBjb25zdCB1aW50OF90IGlu W05CWVRFU10pIHsKLSAgIGZvciAoaW50IGkgPSAwOyBpPE5MSU1CUzsgaSsrKSB7Ci0gICAgIG91 dFtpXSA9IDA7Ci0gICB9Ci0gICBmb3IgKGludCBpID0gMDsgaTxOQllURVM7IGkrKykgewotKyNp ZmRlZiBPUEVOU1NMX0JJR0VORElBTgotKyAgICBvdXRbaS9zaXplb2Yob3V0WzBdKV0gfD0gKChs aW1iX3QpaW5baSBeIChCTl9CWVRFUy0xKV0pIDw8ICg4KihpJXNpemVvZihvdXRbMF0pKSk7Ci0r I2Vsc2UKLSAgICAgb3V0W2kvc2l6ZW9mKG91dFswXSldIHw9ICgobGltYl90KWluW2ldKSA8PCAo OCooaSVzaXplb2Yob3V0WzBdKSkpOwotKyNlbmRpZgotICAgfQotIH0KLSAKLUBAIC05MDYsNyAr OTE4LDExIEBAIHN0YXRpYyB2b2lkIGZlX3RvX2dlbmVyaWMoRUNfRkVMRU0gKm91dCwgY29uc3Qg ZmUgaW4pIHsKLSAgIE9QRU5TU0xfU1RBVElDX0FTU0VSVCgKLSAgICAgICAyNTYgLyA4ID09IHNp emVvZihCTl9VTE9ORykgKiAoKDI1NiArIEJOX0JJVFMyIC0gMSkgLyBCTl9CSVRTMiksCi0gICAg ICAgImZlX3RvYnl0ZXMgbGVhdmVzIGJ5dGVzIHVuaW5pdGlhbGl6ZWQiKTsKLSsjaWZkZWYgT1BF TlNTTF9CSUdFTkRJQU4KLSsgIGZlX3RvYnl0ZXNfYmUob3V0LT5ieXRlcywgaW4pOwotKyNlbHNl Ci0gICBmZV90b2J5dGVzKG91dC0+Ynl0ZXMsIGluKTsKLSsjZW5kaWYKLSB9Ci0gCi0gLy8gZmVf aW52IGNhbGN1bGF0ZXMgfG91dHwgPSB8aW58XnstMX0KLUBAIC0xNTI0LDcgKzE1NDAsMTEgQEAg c3RhdGljIGNoYXIgZ2V0X2JpdChjb25zdCB1aW50OF90ICppbiwgaW50IGkpIHsKLSAgIGlmIChp IDwgMCB8fCBpID49IDI1NikgewotICAgICByZXR1cm4gMDsKLSAgIH0KLSsjaWZkZWYgT1BFTlNT TF9CSUdFTkRJQU4KLSsgIHJldHVybiAoaW5bKGkgPj4gMykgXiAoc2l6ZW9mKEJOX1VMT05HKS0x KV0gPj4gKGkgJiA3KSkgJiAxOwotKyNlbHNlCi0gICByZXR1cm4gKGluW2kgPj4gM10gPj4gKGkg JiA3KSkgJiAxOwotKyNlbmRpZgotIH0KLSAKLSAvLyBJbnRlcmxlYXZlZCBwb2ludCBtdWx0aXBs aWNhdGlvbiB1c2luZyBwcmVjb21wdXRlZCBwb2ludCBtdWx0aXBsZXM6IFRoZQotLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmMzMmMvQlVJTEQuZ24K LSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3JjMzJj L0JVSUxELmduCi1AQCAtMTUsMTMgKzE1LDEwIEBAIGNvbmZpZygiY3JjMzJjX2NvbmZpZyIpIHsK LSAgIF0KLSAKLSAgIGRlZmluZXMgPSBbCi0tICAgICJCWVRFX09SREVSX0JJR19FTkRJQU49MCIs Ci0rICAgICJCWVRFX09SREVSX0JJR19FTkRJQU49X19CWVRFX09SREVSX189PV9fT1JERVJfQklH X0VORElBTl9fIiwKLSAgICAgIkNSQzMyQ19URVNUU19CVUlMVF9XSVRIX0dMT0c9MCIsCi0gICBd Ci0gCi0tICAjIElmIHdlIGV2ZXIgc3VwcG9ydCBiaWctZW5kaWFuIGJ1aWxkcywgYWRkIGxvZ2lj IHRvIGNvbmRpdGlvbmFsbHkgZW5hYmxlCi0tICAjIEJZVEVfT1JERVJfQklHX0VORElBTi4KLS0K LSAgIGlmICh0YXJnZXRfY3B1ID09ICJ4ODYiIHx8IHRhcmdldF9jcHUgPT0gIng2NCIpIHsKLSAg ICAgZGVmaW5lcyArPSBbCi0gICAgICAgIkhBVkVfTU1fUFJFRkVUQ0g9MSIsCi0tLS0gcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2ZsYXRidWZmZXJzL3NyYy9p bmNsdWRlL2ZsYXRidWZmZXJzL2Jhc2UuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9mbGF0YnVmZmVycy9zcmMvaW5jbHVkZS9mbGF0YnVmZmVycy9i YXNlLmgKLUBAIC0yMjAsMTggKzIyMCwxNSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIEVuZGlh blN3YXAoVCB0KSB7Ci0gICBpZiAoc2l6ZW9mKFQpID09IDEpIHsgICAvLyBDb21waWxlLXRpbWUg aWYtdGhlbidzLgotICAgICByZXR1cm4gdDsKLSAgIH0gZWxzZSBpZiAoc2l6ZW9mKFQpID09IDIp IHsKLS0gICAgdW5pb24geyBUIHQ7IHVpbnQxNl90IGk7IH0gdTsKLS0gICAgdS50ID0gdDsKLSsg ICAgdW5pb24gVSB7IFQgdDsgdWludDE2X3QgaTsgVShjb25zdCBUJiB0XykgOiB0KHRfKSB7fX0g dSh0KTsKLSAgICAgdS5pID0gRkxBVEJVRkZFUlNfQllURVNXQVAxNih1LmkpOwotICAgICByZXR1 cm4gdS50OwotICAgfSBlbHNlIGlmIChzaXplb2YoVCkgPT0gNCkgewotLSAgICB1bmlvbiB7IFQg dDsgdWludDMyX3QgaTsgfSB1OwotLSAgICB1LnQgPSB0OwotKyAgICB1bmlvbiBVIHsgVCB0OyB1 aW50MzJfdCBpOyBVKGNvbnN0IFQmIHRfKSA6IHQodF8pIHt9fSB1KHQpOwotICAgICB1LmkgPSBG TEFUQlVGRkVSU19CWVRFU1dBUDMyKHUuaSk7Ci0gICAgIHJldHVybiB1LnQ7Ci0gICB9IGVsc2Ug aWYgKHNpemVvZihUKSA9PSA4KSB7Ci0tICAgIHVuaW9uIHsgVCB0OyB1aW50NjRfdCBpOyB9IHU7 Ci0tICAgIHUudCA9IHQ7Ci0rICAgIHVuaW9uIFUgeyBUIHQ7IHVpbnQ2NF90IGk7IFUoY29uc3Qg VCYgdF8pIDogdCh0Xykge319IHUodCk7Ci0gICAgIHUuaSA9IEZMQVRCVUZGRVJTX0JZVEVTV0FQ NjQodS5pKTsKLSAgICAgcmV0dXJuIHUudDsKLSAgIH0gZWxzZSB7Ci0tLS0gcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2ZsYXRidWZmZXJzL3NyYy9pbmNsdWRl L2ZsYXRidWZmZXJzL21pbmlyZWZsZWN0LmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvZmxhdGJ1ZmZlcnMvc3JjL2luY2x1ZGUvZmxhdGJ1ZmZlcnMv bWluaXJlZmxlY3QuaAotQEAgLTEyMiw1OCArMTIyLDU4IEBAIGlubGluZSB2b2lkIEl0ZXJhdGVW YWx1ZShFbGVtZW50YXJ5VHlwZSB0eXBlLCBjb25zdCB1aW50OF90ICp2YWwsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgIHNvZmZzZXRfdCB2ZWN0b3JfaW5kZXgsIEl0ZXJhdGlvblZpc2l0b3Ig KnZpc2l0b3IpIHsKLSAgIHN3aXRjaCAodHlwZSkgewotICAgICBjYXNlIEVUX1VUWVBFOiB7Ci0t ICAgICAgYXV0byB0dmFsID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPih2YWwp OwotKyAgICAgIGF1dG8gdHZhbCA9IFJlYWRTY2FsYXI8dWludDhfdD4odmFsKTsKLSAgICAgICB2 aXNpdG9yLT5VVHlwZSh0dmFsLCBFbnVtTmFtZSh0dmFsLCB0eXBlX3RhYmxlKSk7Ci0gICAgICAg YnJlYWs7Ci0gICAgIH0KLSAgICAgY2FzZSBFVF9CT09MOiB7Ci0tICAgICAgdmlzaXRvci0+Qm9v bCgqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90ICo+KHZhbCkgIT0gMCk7Ci0rICAgICAg dmlzaXRvci0+Qm9vbChSZWFkU2NhbGFyPHVpbnQ4X3Q+KHZhbCkgIT0gMCk7Ci0gICAgICAgYnJl YWs7Ci0gICAgIH0KLSAgICAgY2FzZSBFVF9DSEFSOiB7Ci0tICAgICAgYXV0byB0dmFsID0gKnJl aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50OF90ICo+KHZhbCk7Ci0rICAgICAgYXV0byB0dmFsID0g UmVhZFNjYWxhcjxpbnQ4X3Q+KHZhbCk7Ci0gICAgICAgdmlzaXRvci0+Q2hhcih0dmFsLCBFbnVt TmFtZSh0dmFsLCB0eXBlX3RhYmxlKSk7Ci0gICAgICAgYnJlYWs7Ci0gICAgIH0KLSAgICAgY2Fz ZSBFVF9VQ0hBUjogewotLSAgICAgIGF1dG8gdHZhbCA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0 IHVpbnQ4X3QgKj4odmFsKTsKLSsgICAgICBhdXRvIHR2YWwgPSBSZWFkU2NhbGFyPHVpbnQ4X3Q+ KHZhbCk7Ci0gICAgICAgdmlzaXRvci0+VUNoYXIodHZhbCwgRW51bU5hbWUodHZhbCwgdHlwZV90 YWJsZSkpOwotICAgICAgIGJyZWFrOwotICAgICB9Ci0gICAgIGNhc2UgRVRfU0hPUlQ6IHsKLS0g ICAgICBhdXRvIHR2YWwgPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQxNl90ICo+KHZhbCk7 Ci0rICAgICAgYXV0byB0dmFsID0gUmVhZFNjYWxhcjxpbnQxNl90Pih2YWwpOwotICAgICAgIHZp c2l0b3ItPlNob3J0KHR2YWwsIEVudW1OYW1lKHR2YWwsIHR5cGVfdGFibGUpKTsKLSAgICAgICBi cmVhazsKLSAgICAgfQotICAgICBjYXNlIEVUX1VTSE9SVDogewotLSAgICAgIGF1dG8gdHZhbCA9 ICpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90ICo+KHZhbCk7Ci0rICAgICAgYXV0byB0 dmFsID0gUmVhZFNjYWxhcjx1aW50MTZfdD4odmFsKTsKLSAgICAgICB2aXNpdG9yLT5VU2hvcnQo dHZhbCwgRW51bU5hbWUodHZhbCwgdHlwZV90YWJsZSkpOwotICAgICAgIGJyZWFrOwotICAgICB9 Ci0gICAgIGNhc2UgRVRfSU5UOiB7Ci0tICAgICAgYXV0byB0dmFsID0gKnJlaW50ZXJwcmV0X2Nh c3Q8Y29uc3QgaW50MzJfdCAqPih2YWwpOwotKyAgICAgIGF1dG8gdHZhbCA9IFJlYWRTY2FsYXI8 aW50MzJfdD4odmFsKTsKLSAgICAgICB2aXNpdG9yLT5JbnQodHZhbCwgRW51bU5hbWUodHZhbCwg dHlwZV90YWJsZSkpOwotICAgICAgIGJyZWFrOwotICAgICB9Ci0gICAgIGNhc2UgRVRfVUlOVDog ewotLSAgICAgIGF1dG8gdHZhbCA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90ICo+ KHZhbCk7Ci0rICAgICAgYXV0byB0dmFsID0gUmVhZFNjYWxhcjx1aW50MzJfdD4odmFsKTsKLSAg ICAgICB2aXNpdG9yLT5VSW50KHR2YWwsIEVudW1OYW1lKHR2YWwsIHR5cGVfdGFibGUpKTsKLSAg ICAgICBicmVhazsKLSAgICAgfQotICAgICBjYXNlIEVUX0xPTkc6IHsKLS0gICAgICB2aXNpdG9y LT5Mb25nKCpyZWludGVycHJldF9jYXN0PGNvbnN0IGludDY0X3QgKj4odmFsKSk7Ci0rICAgICAg dmlzaXRvci0+TG9uZyhSZWFkU2NhbGFyPGludDY0X3Q+KHZhbCkpOwotICAgICAgIGJyZWFrOwot ICAgICB9Ci0gICAgIGNhc2UgRVRfVUxPTkc6IHsKLS0gICAgICB2aXNpdG9yLT5VTG9uZygqcmVp bnRlcnByZXRfY2FzdDxjb25zdCB1aW50NjRfdCAqPih2YWwpKTsKLSsgICAgICB2aXNpdG9yLT5V TG9uZyhSZWFkU2NhbGFyPHVpbnQ2NF90Pih2YWwpKTsKLSAgICAgICBicmVhazsKLSAgICAgfQot ICAgICBjYXNlIEVUX0ZMT0FUOiB7Ci0tICAgICAgdmlzaXRvci0+RmxvYXQoKnJlaW50ZXJwcmV0 X2Nhc3Q8Y29uc3QgZmxvYXQgKj4odmFsKSk7Ci0rICAgICAgdmlzaXRvci0+RmxvYXQoUmVhZFNj YWxhcjxmbG9hdD4odmFsKSk7Ci0gICAgICAgYnJlYWs7Ci0gICAgIH0KLSAgICAgY2FzZSBFVF9E T1VCTEU6IHsKLS0gICAgICB2aXNpdG9yLT5Eb3VibGUoKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg ZG91YmxlICo+KHZhbCkpOwotKyAgICAgIHZpc2l0b3ItPkRvdWJsZShSZWFkU2NhbGFyPGRvdWJs ZT4odmFsKSk7Ci0gICAgICAgYnJlYWs7Ci0gICAgIH0KLSAgICAgY2FzZSBFVF9TVFJJTkc6IHsK LS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvbGV2ZWxk YXRhYmFzZS9wb3J0L3BvcnRfY2hyb21pdW0uaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9sZXZlbGRhdGFiYXNlL3BvcnQvcG9ydF9jaHJvbWl1bS5o Ci1AQCAtMjMsOCArMjMsMTEgQEAKLSBuYW1lc3BhY2UgbGV2ZWxkYiB7Ci0gbmFtZXNwYWNlIHBv cnQgewotIAotLS8vIENocm9taXVtIG9ubHkgc3VwcG9ydHMgbGl0dGxlIGVuZGlhbi4KLSsjaWYg QVJDSF9DUFVfTElUVExFX0VORElBTgotIHN0YXRpYyBjb25zdCBib29sIGtMaXR0bGVFbmRpYW4g PSB0cnVlOwotKyNlbHNlCi0rc3RhdGljIGNvbnN0IGJvb2wga0xpdHRsZUVuZGlhbiA9IGZhbHNl OwotKyNlbmRpZgotIAotIGNsYXNzIExPQ0tBQkxFIE11dGV4IHsKLSAgcHVibGljOgotLS0tIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9tb2RwX2I2NC9CVUlM RC5nbgotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9t b2RwX2I2NC9CVUlMRC5nbgotQEAgLTIsMTAgKzIsMTYgQEAKLSAjIFVzZSBvZiB0aGlzIHNvdXJj ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAj IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0gCi0raW1wb3J0KCIvL2J1aWxkL2NvbmZpZy9o b3N0X2J5dGVvcmRlci5nbmkiKQotKwotIHN0YXRpY19saWJyYXJ5KCJtb2RwX2I2NCIpIHsKLSAg IHNvdXJjZXMgPSBbCi0gICAgICJtb2RwX2I2NC5jYyIsCi0gICAgICJtb2RwX2I2NC5oIiwKLSAg ICAgIm1vZHBfYjY0X2RhdGEuaCIsCi0gICBdCi0rCi0rICBpZiAoaG9zdF9ieXRlb3JkZXIgPT0g ImJpZyIpIHsKLSsgICAgZGVmaW5lcyA9IFsgIldPUkRTX0JJR0VORElBTj0xIiBdCi0rICB9Ci0g fQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9tb2Rw X2I2NC9tb2RwX2I2NC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9tb2RwX2I2NC9tb2RwX2I2NC5jYwotQEAgLTExOCw3ICsxMTgsNyBAQCBzaXpl X3QgbW9kcF9iNjRfZW5jb2RlKGNoYXIqIGRlc3QsIGNvbnN0IGNoYXIqIHN0ciwgc2l6ZV90IGxl bikKLSB9Ci0gCi0gI2lmZGVmIFdPUkRTX0JJR0VORElBTiAgIC8qIEJJRyBFTkRJQU4gLS0gU1VO IC8gSUJNIC8gTU9UT1JPTEEgKi8KLS1pbnQgbW9kcF9iNjRfZGVjb2RlKGNoYXIqIGRlc3QsIGNv bnN0IGNoYXIqIHNyYywgaW50IGxlbikKLStzaXplX3QgbW9kcF9iNjRfZGVjb2RlKGNoYXIqIGRl c3QsIGNvbnN0IGNoYXIqIHNyYywgc2l6ZV90IGxlbikKLSB7Ci0gICAgIGlmIChsZW4gPT0gMCkg cmV0dXJuIDA7Ci0gCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L3BlcmZldHRvL2luY2x1ZGUvcGVyZmV0dG8vYmFzZS91dGlscy5oCi0rKysgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3BlcmZldHRvL2luY2x1ZGUv cGVyZmV0dG8vYmFzZS91dGlscy5oCi1AQCAtMjIsNiArMjIsNyBAQAotICNpbmNsdWRlIDxlcnJu by5oPgotICNpbmNsdWRlIDxzdGRkZWYuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1 ZGUgPHR5cGVfdHJhaXRzPgotICNpZiAhUEVSRkVUVE9fQlVJTERGTEFHKFBFUkZFVFRPX09TX1dJ TikKLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2VuZGlmCi1AQCAtOTEsNyArOTIsNyBAQCBz dHJ1Y3QgRnJlZURlbGV0ZXIgewotIAotIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotIGNvbnN0ZXhw ciBUIEFzc3VtZUxpdHRsZUVuZGlhbihUIHZhbHVlKSB7Ci0tICBzdGF0aWNfYXNzZXJ0KF9fQllU RV9PUkRFUl9fID09IF9fT1JERVJfTElUVExFX0VORElBTl9fLAotKyAgc3RhdGljX2Fzc2VydChz dGQ6OmlzX3NhbWU8VCxUPjo6dmFsdWUgJiYgX19CWVRFX09SREVSX18gPT0gX19PUkRFUl9MSVRU TEVfRU5ESUFOX18sCi0gICAgICAgICAgICAgICAgICJVbmltcGxlbWVudGVkIG9uIGJpZy1lbmRp YW4gYXJjaHMiKTsKLSAgIHJldHVybiB2YWx1ZTsKLSB9Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3BlcmZldHRvL2luY2x1ZGUvcGVyZmV0dG8vcHJv dG96ZXJvL21lc3NhZ2UuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9wZXJmZXR0by9pbmNsdWRlL3BlcmZldHRvL3Byb3RvemVyby9tZXNzYWdlLmgK LUBAIC0xMzgsNiArMTM4LDEzIEBAIGNsYXNzIFBFUkZFVFRPX0VYUE9SVCBNZXNzYWdlIHsKLSAK LSAgICAgcG9zID0gcHJvdG9fdXRpbHM6OldyaXRlVmFySW50KHByb3RvX3V0aWxzOjpNYWtlVGFn Rml4ZWQ8VD4oZmllbGRfaWQpLCBwb3MpOwotICAgICBtZW1jcHkocG9zLCAmdmFsdWUsIHNpemVv ZihUKSk7Ci0rI2lmIF9fQllURV9PUkRFUl9fICE9IF9fT1JERVJfTElUVExFX0VORElBTl9fCi0r ICAgIGZvciAoc2l6ZV90IGkgPSBzaXplb2YoVCkvMjsgaS0tOyApIHsKLSsgICAgICB1aW50OF90 IHRtcCA9IHBvc1tpXTsKLSsgICAgICBwb3NbaV0gPSBwb3Nbc2l6ZW9mKFQpLTEtaV07Ci0rICAg ICAgcG9zW3NpemVvZihUKS0xLWldID0gdG1wOwotKyAgICB9Ci0rI2VuZGlmCi0gICAgIHBvcyAr PSBzaXplb2YoVCk7Ci0gICAgIC8vIFRPRE86IE9wdGltaXplIG1lbWNweSBwZXJmb3JtYW5jZSwg c2VlIGh0dHA6Ly9jcmJ1Zy5jb20vNjI0MzExIC4KLSAgICAgV3JpdGVUb1N0cmVhbShidWZmZXIs IHBvcyk7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L3BlcmZldHRvL3NyYy9wcm90b3plcm8vbWVzc2FnZS5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9wZXJmZXR0by9zcmMvcHJvdG96ZXJvL21lc3Nh Z2UuY2MKLUBAIC0yMSwxMiArMjEsNiBAQAotICNpbmNsdWRlICJwZXJmZXR0by9iYXNlL2xvZ2dp bmcuaCIKLSAjaW5jbHVkZSAicGVyZmV0dG8vcHJvdG96ZXJvL21lc3NhZ2VfaGFuZGxlLmgiCi0g Ci0tI2lmIF9fQllURV9PUkRFUl9fICE9IF9fT1JERVJfTElUVExFX0VORElBTl9fCi0tLy8gVGhl IG1lbWNweSgpIGZvciBmbG9hdCBhbmQgZG91YmxlIGJlbG93IG5lZWRzIHRvIGJlIGFkanVzdGVk IGlmIHdlIHdhbnQgdG8KLS0vLyBzdXBwb3J0IGJpZyBlbmRpYW4gQ1BVcy4gVGhlcmUgZG9lc24n dCBzZWVtIHRvIGJlIGEgY29tcGVsbGluZyBuZWVkIHRvZGF5LgotLSNlcnJvciBVbmltcGxlbWVu dGVkIGZvciBiaWcgZW5kaWFuIGFyY2hzLgotLSNlbmRpZgotLQotIG5hbWVzcGFjZSBwcm90b3pl cm8gewotIAotIC8vIHN0YXRpYwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9wZXJmZXR0by9zcmMvcHJvdG96ZXJvL3Byb3RvX2RlY29kZXIuY2MKLSsr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvcGVyZmV0dG8v c3JjL3Byb3RvemVyby9wcm90b19kZWNvZGVyLmNjCi1AQCAtMjksNyArMjksOCBAQCB1c2luZyBu YW1lc3BhY2UgcHJvdG9fdXRpbHM7Ci0gI2RlZmluZSBCWVRFX1NXQVBfVE9fTEUzMih4KSAoeCkK LSAjZGVmaW5lIEJZVEVfU1dBUF9UT19MRTY0KHgpICh4KQotICNlbHNlCi0tI2Vycm9yIFVuaW1w bGVtZW50ZWQgZm9yIGJpZyBlbmRpYW4gYXJjaHMuCi0rI2RlZmluZSBCWVRFX1NXQVBfVE9fTEUz Mih4KSBfX2J1aWx0aW5fYnN3YXAzMih4KQotKyNkZWZpbmUgQllURV9TV0FQX1RPX0xFNjQoeCkg X19idWlsdGluX2Jzd2FwNjQoeCkKLSAjZW5kaWYKLSAKLSBQcm90b0RlY29kZXI6OkZpZWxkIFBy b3RvRGVjb2Rlcjo6UmVhZEZpZWxkKCkgewotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta1Bvc3RDb25maWcuaAotKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL2luY2x1 ZGUvY29yZS9Ta1Bvc3RDb25maWcuaAotQEAgLTQwLDEyICs0MCw2IEBACi0gIyAgZXJyb3IgIm11 c3QgZGVmaW5lIGVpdGhlciBTS19DUFVfTEVORElBTiBvciBTS19DUFVfQkVORElBTiIKLSAjZW5k aWYKLSAKLS0jaWYgZGVmaW5lZChTS19DUFVfQkVORElBTikgJiYgIWRlZmluZWQoSV9BQ0tOT1dM RURHRV9TS0lBX0RPRVNfTk9UX1NVUFBPUlRfQklHX0VORElBTikKLS0gICAgI2Vycm9yICJUaGUg U2tpYSB0ZWFtIGlzIG5vdCBlbmRpYW4tc2F2dnkgZW5vdWdoIHRvIHN1cHBvcnQgYmlnLWVuZGlh biBDUFVzLiIKLS0gICAgI2Vycm9yICJJZiB5b3Ugc3RpbGwgd2FudCB0byB1c2UgU2tpYSwiCi0t ICAgICNlcnJvciAicGxlYXNlIGRlZmluZSBJX0FDS05PV0xFREdFX1NLSUFfRE9FU19OT1RfU1VQ UE9SVF9CSUdfRU5ESUFOLiIKLS0jZW5kaWYKLS0KLSAvKioKLSAgKiBFbnN1cmUgdGhlIHBvcnQg aGFzIGRlZmluZWQgYWxsIG9mIFNLX1gzMl9TSElGVCwgb3Igbm9uZSBvZiB0aGVtLgotICAqLwot LS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL2lu Y2x1ZGUvcHJpdmF0ZS9HclR5cGVzUHJpdi5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9wcml2YXRlL0dyVHlwZXNQcml2LmgK LUBAIC02NSw5ICs2NSw2IEBAIGVudW0gR3JQaXhlbENvbmZpZyB7Ci0gc3RhdGljIGNvbnN0IGlu dCBrR3JQaXhlbENvbmZpZ0NudCA9IGtMYXN0X0dyUGl4ZWxDb25maWcgKyAxOwotIAotIC8vIEFs aWFzZXMgZm9yIHBpeGVsIGNvbmZpZ3MgdGhhdCBtYXRjaCBza2lhJ3MgYnl0ZSBvcmRlci4KLS0j aWZuZGVmIFNLX0NQVV9MRU5ESUFOCi0tI2Vycm9yICJTa2lhIGdwdSBjdXJyZW50bHkgYXNzdW1l cyBsaXR0bGUgZW5kaWFuIgotLSNlbmRpZgotICNpZiBTS19QTUNPTE9SX0JZVEVfT1JERVIoQixH LFIsQSkKLSBzdGF0aWMgY29uc3QgR3JQaXhlbENvbmZpZyBrU2tpYTg4ODhfR3JQaXhlbENvbmZp ZyA9IGtCR1JBXzg4ODhfR3JQaXhlbENvbmZpZzsKLSAjZWxpZiBTS19QTUNPTE9SX0JZVEVfT1JE RVIoUixHLEIsQSkKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRf cGFydHkvc2tpYS9zcmMvY29kZWMvU2tDb2RlY1ByaXYuaAotKysrIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL3NyYy9jb2RlYy9Ta0NvZGVjUHJpdi5o Ci1AQCAtMTQsNiArMTQsNyBAQAotICNpbmNsdWRlICJTa0VuY29kZWRPcmlnaW4uaCIKLSAjaW5j bHVkZSAiU2tJbWFnZUluZm8uaCIKLSAjaW5jbHVkZSAiU2tUeXBlcy5oIgotKyNpbmNsdWRlICJT a0VuZGlhbi5oIgotIAotICNpZmRlZiBTS19QUklOVF9DT0RFQ19NRVNTQUdFUwotICAgICAjZGVm aW5lIFNrQ29kZWNQcmludGYgU2tEZWJ1Z2YKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9zcmMvY29yZS9Ta0NvbG9yLmNwcAotKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL3NyYy9jb3JlL1Nr Q29sb3IuY3BwCi1AQCAtMTA4LDEzICsxMDgsMjkgQEAgU2tDb2xvciBTa0hTVlRvQ29sb3IoVThD UFUgYSwgY29uc3QgU2tTY2FsYXIgaHN2WzNdKSB7Ci0gdGVtcGxhdGUgPD4KLSBTa0NvbG9yNGYg U2tDb2xvcjRmOjpGcm9tQ29sb3IoU2tDb2xvciBiZ3JhKSB7Ci0gICAgIFNrQ29sb3I0ZiByZ2Jh OwotLSAgICBzd2l6emxlX3JiKFNrNGZfZnJvbUwzMihiZ3JhKSkuc3RvcmUocmdiYS52ZWMoKSk7 Ci0rICAgIFNrNGYgYzRmID0gU2s0Zl9mcm9tTDMyKGJncmEpOwotKyNpZmRlZiBTS19DUFVfQkVO RElBTgotKyAgICAvLyBBUkdCIC0+IFJHQkEKLSsgICAgYzRmID0gU2tOeF9zaHVmZmxlPDEsIDIs IDMsIDA+KGM0Zik7Ci0rI2Vsc2UKLSsgICAgLy8gQkdSQSAtPiBSR0JBCi0rICAgIGM0ZiA9IHN3 aXp6bGVfcmIoYzRmKTsKLSsjZW5kaWYKLSsgICAgYzRmLnN0b3JlKHJnYmEudmVjKCkpOwotICAg ICByZXR1cm4gcmdiYTsKLSB9Ci0gCi0gdGVtcGxhdGUgPD4KLSBTa0NvbG9yIFNrQ29sb3I0Zjo6 dG9Ta0NvbG9yKCkgY29uc3QgewotLSAgICByZXR1cm4gU2s0Zl90b0wzMihzd2l6emxlX3JiKFNr NGY6OkxvYWQodGhpcy0+dmVjKCkpKSk7Ci0rICAgIFNrNGYgYzRmID0gU2s0Zjo6TG9hZCh0aGlz LT52ZWMoKSk7Ci0rI2lmZGVmIFNLX0NQVV9CRU5ESUFOCi0rICAgIC8vIFJHQkEgLT4gQVJHQgot KyAgICBjNGYgPSBTa054X3NodWZmbGU8MywgMCwgMSwgMj4oYzRmKTsKLSsjZWxzZQotKyAgICAv LyBSR0JBIC0+IEJHUkEKLSsgICAgYzRmID0gc3dpenpsZV9yYihjNGYpOwotKyNlbmRpZgotKyAg ICByZXR1cm4gU2s0Zl90b0wzMihjNGYpOwotIH0KLSAKLSB0ZW1wbGF0ZSA8PgotLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL3NyYy9jb3JlL1Nr UGl4bWFwLmNwcAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9za2lhL3NyYy9jb3JlL1NrUGl4bWFwLmNwcAotQEAgLTI0Niw3ICsyNDYsOCBAQCBTa0Nv bG9yIFNrUGl4bWFwOjpnZXRDb2xvcihpbnQgeCwgaW50IHkpIGNvbnN0IHsKLSAgICAgY29uc3Qg Ym9vbCBuZWVkc1VucHJlbXVsID0gKGtQcmVtdWxfU2tBbHBoYVR5cGUgPT0gZkluZm8uYWxwaGFU eXBlKCkpOwotICAgICBhdXRvIHRvQ29sb3IgPSBbbmVlZHNVbnByZW11bF0odWludDMyX3QgbWF5 YmVQcmVtdWxDb2xvcikgewotICAgICAgICAgcmV0dXJuIG5lZWRzVW5wcmVtdWwgPyBTa1VuUHJl TXVsdGlwbHk6OlBNQ29sb3JUb0NvbG9yKG1heWJlUHJlbXVsQ29sb3IpCi0tICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA6IFNrU3dpenpsZV9CR1JBX3RvX1BNQ29sb3IobWF5YmVQcmVtdWxD b2xvcik7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFNrQ29sb3JTZXRBUkdCKFNr R2V0UGFja2VkQTMyKG1heWJlUHJlbXVsQ29sb3IpLCBTa0dldFBhY2tlZFIzMihtYXliZVByZW11 bENvbG9yKSwKLSsJCQkJCSAgICAgIFNrR2V0UGFja2VkRzMyKG1heWJlUHJlbXVsQ29sb3IpLCBT a0dldFBhY2tlZEIzMihtYXliZVByZW11bENvbG9yKSk7Ci0gICAgIH07Ci0gCi0gICAgIHN3aXRj aCAodGhpcy0+Y29sb3JUeXBlKCkpIHsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvc2tpYS9zcmMvb3B0cy9TazRweF9ub25lLmgKLSsrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9zcmMvb3B0cy9TazRw eF9ub25lLmgKLUBAIC0zNSw3ICszNSw2IEBAIGlubGluZSBTazRweCBTazRweDo6V2lkZTo6ZGl2 MjU1KCkgY29uc3QgewotIH0KLSAKLSBpbmxpbmUgU2s0cHggU2s0cHg6OmFscGhhcygpIGNvbnN0 IHsKLS0gICAgc3RhdGljX2Fzc2VydChTS19BMzJfU0hJRlQgPT0gMjQsICJUaGlzIG1ldGhvZCBh c3N1bWVzIGxpdHRsZS1lbmRpYW4uIik7Ci0gICAgIHJldHVybiBTazE2YigoKnRoaXMpWyAzXSwg KCp0aGlzKVsgM10sICgqdGhpcylbIDNdLCAoKnRoaXMpWyAzXSwKLSAgICAgICAgICAgICAgICAg ICgqdGhpcylbIDddLCAoKnRoaXMpWyA3XSwgKCp0aGlzKVsgN10sICgqdGhpcylbIDddLAotICAg ICAgICAgICAgICAgICAgKCp0aGlzKVsxMV0sICgqdGhpcylbMTFdLCAoKnRoaXMpWzExXSwgKCp0 aGlzKVsxMV0sCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L3NraWEvc3JjL29wdHMvU2tCbGl0Um93X29wdHMuaAotKysrIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL3NyYy9vcHRzL1NrQmxpdFJvd19vcHRz LmgKLUBAIC0yMzcsOCArMjM3LDggQEAgdm9pZCBibGl0X3Jvd19zMzJhX29wYXF1ZShTa1BNQ29s b3IqIGRzdCwgY29uc3QgU2tQTUNvbG9yKiBzcmMsIGludCBsZW4sIFU4Q1BVIGEKLSAgICAgICAg IC8vIHdpdGggY2hyb21pdW06NjExMDAyIHdlIG5lZWQgdG8ga2VlcCBpdCB1bnRpbCB3ZSBmaWd1 cmUgb3V0IHdoZXJlCi0gICAgICAgICAvLyB0aGUgbm9uLXByZW11bHRpcGxpZWQgc3JjIHZhbHVl cyAobGlrZSAweDAwRkZGRkZGKSBhcmUgY29taW5nIGZyb20uCi0gICAgICAgICAvLyBUT0RPKG10 a2xlaW4pOiBzb3J0IHRoaXMgb3V0IGFuZCBhc3NlcnQgKnNyYyBpcyBwcmVtdWwgaGVyZS4KLS0g ICAgICAgIGlmICgqc3JjICYgMHhGRjAwMDAwMCkgewotLSAgICAgICAgICAgICpkc3QgPSAoKnNy YyA+PSAweEZGMDAwMDAwKSA/ICpzcmMgOiBTa1BNU3JjT3Zlcigqc3JjLCAqZHN0KTsKLSsgICAg ICAgIGlmICgqc3JjICYgKDB4RkYgPDwgU0tfQTMyX1NISUZUKSkgewotKyAgICAgICAgICAgICpk c3QgPSAoKCpzcmMgPDwgKDI0IC0gU0tfQTMyX1NISUZUKSkgPj0gMHhGRjAwMDAwMCkgPyAqc3Jj IDogU2tQTVNyY092ZXIoKnNyYywgKmRzdCk7Ci0gICAgICAgICB9Ci0gICAgICAgICBzcmMrKzsK LSAgICAgICAgIGRzdCsrOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9za2lhL3NyYy9vcHRzL1NrUmFzdGVyUGlwZWxpbmVfb3B0cy5oCi0rKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEvc3JjL29wdHMv U2tSYXN0ZXJQaXBlbGluZV9vcHRzLmgKLUBAIC05NDgsMTAgKzk0OCwxNyBAQCBTSSB2b2lkIGZy b21fNDQ0NChVMTYgXzQ0NDQsIEYqIHIsIEYqIGcsIEYqIGIsIEYqIGEpIHsKLSAgICAgKmEgPSBj YXN0KHdpZGUgJiAoMTU8PCAwKSkgKiAoMS4wZiAvICgxNTw8IDApKTsKLSB9Ci0gU0kgdm9pZCBm cm9tXzg4ODgoVTMyIF84ODg4LCBGKiByLCBGKiBnLCBGKiBiLCBGKiBhKSB7Ci0rI2lmZGVmIFNL X0NQVV9CRU5ESUFOCi0rICAgICpyID0gY2FzdCgoXzg4ODggPj4gMjQpICAgICAgICkgKiAoMS8y NTUuMGYpOwotKyAgICAqZyA9IGNhc3QoKF84ODg4ID4+IDE2KSAmIDB4ZmYpICogKDEvMjU1LjBm KTsKLSsgICAgKmIgPSBjYXN0KChfODg4OCA+PiAgOCkgJiAweGZmKSAqICgxLzI1NS4wZik7Ci0r ICAgICphID0gY2FzdCgoXzg4ODggICAgICApICYgMHhmZikgKiAoMS8yNTUuMGYpOwotKyNlbHNl Ci0gICAgICpyID0gY2FzdCgoXzg4ODggICAgICApICYgMHhmZikgKiAoMS8yNTUuMGYpOwotICAg ICAqZyA9IGNhc3QoKF84ODg4ID4+ICA4KSAmIDB4ZmYpICogKDEvMjU1LjBmKTsKLSAgICAgKmIg PSBjYXN0KChfODg4OCA+PiAxNikgJiAweGZmKSAqICgxLzI1NS4wZik7Ci0gICAgICphID0gY2Fz dCgoXzg4ODggPj4gMjQpICAgICAgICkgKiAoMS8yNTUuMGYpOwotKyNlbmRpZgotIH0KLSBTSSB2 b2lkIGZyb21fMTAxMDEwMihVMzIgcmdiYSwgRiogciwgRiogZywgRiogYiwgRiogYSkgewotICAg ICAqciA9IGNhc3QoKHJnYmEgICAgICApICYgMHgzZmYpICogKDEvMTAyMy4wZik7Ci1AQCAtMTI3 OCwxMCArMTI4NSwxNyBAQCBTVEFHRShzcmNvdmVyX3JnYmFfODg4OCwgY29uc3QgU2tSYXN0ZXJQ aXBlbGluZV9NZW1vcnlDdHgqIGN0eCkgewotICAgICBhdXRvIHB0ciA9IHB0cl9hdF94eTx1aW50 MzJfdD4oY3R4LCBkeCxkeSk7Ci0gCi0gICAgIFUzMiBkc3QgPSBsb2FkPFUzMj4ocHRyLCB0YWls KTsKLSsjaWZkZWYgU0tfQ1BVX0JFTkRJQU4KLSsgICAgZHIgPSBjYXN0KChkc3QgPj4gMjQpICAg ICAgICk7Ci0rICAgIGRnID0gY2FzdCgoZHN0ID4+IDE2KSAmIDB4ZmYpOwotKyAgICBkYiA9IGNh c3QoKGRzdCA+PiAgOCkgJiAweGZmKTsKLSsgICAgZGEgPSBjYXN0KChkc3QgICAgICApICYgMHhm Zik7Ci0rI2Vsc2UKLSAgICAgZHIgPSBjYXN0KChkc3QgICAgICApICYgMHhmZik7Ci0gICAgIGRn ID0gY2FzdCgoZHN0ID4+ICA4KSAmIDB4ZmYpOwotICAgICBkYiA9IGNhc3QoKGRzdCA+PiAxNikg JiAweGZmKTsKLSAgICAgZGEgPSBjYXN0KChkc3QgPj4gMjQpICAgICAgICk7Ci0rI2VuZGlmCi0g ICAgIC8vIHtkcixkZyxkYixkYX0gYXJlIGluIFswLDI1NV0KLSAgICAgLy8geyByLCBnLCBiLCBh fSBhcmUgaW4gWzAsICAxXSAoYnV0IG1heSBiZSBvdXQgb2YgZ2FtdXQpCi0gCi1AQCAtMTI5Miwx MCArMTMwNiwxNyBAQCBTVEFHRShzcmNvdmVyX3JnYmFfODg4OCwgY29uc3QgU2tSYXN0ZXJQaXBl bGluZV9NZW1vcnlDdHgqIGN0eCkgewotICAgICAvLyB7IHIsIGcsIGIsIGF9IGFyZSBub3cgaW4g WzAsMjU1XSAgKGJ1dCBtYXkgYmUgb3V0IG9mIGdhbXV0KQotIAotICAgICAvLyB0b191bm9ybSgp IGNsYW1wcyBiYWNrIHRvIGdhbXV0LiAgU2NhbGluZyBieSAxIHNpbmNlIHdlJ3JlIGFscmVhZHkg MjU1LWJpYXNlZC4KLSsjaWZkZWYgU0tfQ1BVX0JFTkRJQU4KLSsgICAgZHN0ID0gdG9fdW5vcm0o ciwgMSwgMjU1KSA8PCAyNAotKyAgICAgICAgfCB0b191bm9ybShnLCAxLCAyNTUpIDw8IDE2Ci0r ICAgICAgICB8IHRvX3Vub3JtKGIsIDEsIDI1NSkgPDwgIDgKLSsgICAgICAgIHwgdG9fdW5vcm0o YSwgMSwgMjU1KTsKLSsjZWxzZQotICAgICBkc3QgPSB0b191bm9ybShyLCAxLCAyNTUpCi0gICAg ICAgICB8IHRvX3Vub3JtKGcsIDEsIDI1NSkgPDwgIDgKLSAgICAgICAgIHwgdG9fdW5vcm0oYiwg MSwgMjU1KSA8PCAxNgotICAgICAgICAgfCB0b191bm9ybShhLCAxLCAyNTUpIDw8IDI0OwotKyNl bmRpZgotICAgICBzdG9yZShwdHIsIGRzdCwgdGFpbCk7Ci0gfQotIAotQEAgLTE2OTQsMTAgKzE3 MTUsMTcgQEAgU1RBR0UoZ2F0aGVyXzg4ODgsIGNvbnN0IFNrUmFzdGVyUGlwZWxpbmVfR2F0aGVy Q3R4KiBjdHgpIHsKLSBTVEFHRShzdG9yZV84ODg4LCBjb25zdCBTa1Jhc3RlclBpcGVsaW5lX01l bW9yeUN0eCogY3R4KSB7Ci0gICAgIGF1dG8gcHRyID0gcHRyX2F0X3h5PHVpbnQzMl90PihjdHgs IGR4LGR5KTsKLSAKLSsjaWZkZWYgU0tfQ1BVX0JFTkRJQU4KLSsgICAgVTMyIHB4ID0gdG9fdW5v cm0ociwgMjU1KSA8PCAyNAotKyAgICAgICAgICAgfCB0b191bm9ybShnLCAyNTUpIDw8IDE2Ci0r ICAgICAgICAgICB8IHRvX3Vub3JtKGIsIDI1NSkgPDwgIDgKLSsgICAgICAgICAgIHwgdG9fdW5v cm0oYSwgMjU1KTsKLSsjZWxzZQotICAgICBVMzIgcHggPSB0b191bm9ybShyLCAyNTUpCi0gICAg ICAgICAgICB8IHRvX3Vub3JtKGcsIDI1NSkgPDwgIDgKLSAgICAgICAgICAgIHwgdG9fdW5vcm0o YiwgMjU1KSA8PCAxNgotICAgICAgICAgICAgfCB0b191bm9ybShhLCAyNTUpIDw8IDI0OwotKyNl bmRpZgotICAgICBzdG9yZShwdHIsIHB4LCB0YWlsKTsKLSB9Ci0gCi1AQCAtMjg1MiwxMCArMjg4 MCwxNyBAQCBTSSB2b2lkIGZyb21fODg4OChVMzIgcmdiYSwgVTE2KiByLCBVMTYqIGcsIFUxNiog YiwgVTE2KiBhKSB7Ci0gICAgICAgICByZXR1cm4gY2FzdDxVMTY+KHYpOwotICAgICB9OwotICNl bmRpZgotKyNpZmRlZiBTS19DUFVfQkVORElBTgotKyAgICAqciA9IGNhc3RfVTE2KHJnYmEgPj4g ICAxNikgPj4gIDg7Ci0rICAgICpnID0gY2FzdF9VMTYocmdiYSA+PiAgIDE2KSAmIDI1NTsKLSsg ICAgKmIgPSBjYXN0X1UxNihyZ2JhICYgNjU1MzUpID4+ICA4OwotKyAgICAqYSA9IGNhc3RfVTE2 KHJnYmEgJiA2NTUzNSkgJiAyNTU7Ci0rI2Vsc2UKLSAgICAgKnIgPSBjYXN0X1UxNihyZ2JhICYg NjU1MzUpICYgMjU1OwotICAgICAqZyA9IGNhc3RfVTE2KHJnYmEgJiA2NTUzNSkgPj4gIDg7Ci0g ICAgICpiID0gY2FzdF9VMTYocmdiYSA+PiAgIDE2KSAmIDI1NTsKLSAgICAgKmEgPSBjYXN0X1Ux NihyZ2JhID4+ICAgMTYpID4+ICA4OwotKyNlbmRpZgotIH0KLSAKLSBTSSB2b2lkIGxvYWRfODg4 OF8oY29uc3QgdWludDMyX3QqIHB0ciwgc2l6ZV90IHRhaWwsIFUxNiogciwgVTE2KiBnLCBVMTYq IGIsIFUxNiogYSkgewotQEAgLTI4OTcsMTAgKzI5MzIsMTUgQEAgU0kgdm9pZCBzdG9yZV84ODg4 Xyh1aW50MzJfdCogcHRyLCBzaXplX3QgdGFpbCwgVTE2IHIsIFUxNiBnLCBVMTYgYiwgVTE2IGEp IHsKLSAgICAgICAgIGNhc2UgMjogdnN0NF9sYW5lX3U4KCh1aW50OF90KikocHRyKzEpLCByZ2Jh LCAxKTsKLSAgICAgICAgIGNhc2UgMTogdnN0NF9sYW5lX3U4KCh1aW50OF90KikocHRyKzApLCBy Z2JhLCAwKTsKLSAgICAgfQotKyNlbHNlCi0rI2lmZGVmIFNLX0NQVV9CRU5ESUFOCi0rICAgIHN0 b3JlKHB0ciwgdGFpbCwgY2FzdDxVMzI+KChyPDw4KSB8IGcpIDw8IDE2Ci0rICAgICAgICAgICAg ICAgICAgIHwgY2FzdDxVMzI+KChiPDw4KSB8IGEpIDw8IDApOwotICNlbHNlCi0gICAgIHN0b3Jl KHB0ciwgdGFpbCwgY2FzdDxVMzI+KHIgfCAoZzw8OCkpIDw8ICAwCi0gICAgICAgICAgICAgICAg ICAgIHwgY2FzdDxVMzI+KGIgfCAoYTw8OCkpIDw8IDE2KTsKLSAjZW5kaWYKLSsjZW5kaWYKLSB9 Ci0gCi0gU1RBR0VfUFAobG9hZF84ODg4LCBjb25zdCBTa1Jhc3RlclBpcGVsaW5lX01lbW9yeUN0 eCogY3R4KSB7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L3NraWEvc3JjL3V0aWxzL1NrSlNPTi5jcHAKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9zcmMvdXRpbHMvU2tKU09OLmNwcAotQEAgLTM0 LDYgKzM0LDEwIEBAIHZvaWQgVmFsdWU6OmluaXRfdGFnZ2VkKFRhZyB0KSB7Ci0gCi0gLy8gUG9p bnRlciB2YWx1ZXMgc3RvcmUgYSB0eXBlIChpbiB0aGUgdXBwZXIga1RhZ0JpdHMgYml0cykgYW5k IGEgcG9pbnRlci4KLSB2b2lkIFZhbHVlOjppbml0X3RhZ2dlZF9wb2ludGVyKFRhZyB0LCB2b2lk KiBwKSB7Ci0rI2lmICFkZWZpbmVkKFNLX0NQVV9MRU5ESUFOKQotKyAgICAvLyBDaGVjayB0aGF0 IGtSZWNBbGlnbiBpcyBsYXJnZSBlbm91Z2ggdG8gbGVhdmUgcm9vbSBmb3IgdGhlIHRhZwotKyAg ICBzdGF0aWNfYXNzZXJ0KHNpemVvZihWYWx1ZSkgPiBzaXplb2YodWludHB0cl90KSB8fCAhKGtS ZWNBbGlnbiAmIFZhbHVlOjprVGFnTWFzayksICJrUmVjQWxpZ24gaXMgbm90IGEgbXVsdGlwbGUg b2Yga1RhZ01hc2srMSIpOwotKyNlbmRpZgotICAgICAqdGhpcy0+Y2FzdDx1aW50cHRyX3Q+KCkg PSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocCk7Ci0gCi0gICAgIGlmIChzaXplb2YoVmFs dWUpID09IHNpemVvZih1aW50cHRyX3QpKSB7Ci1AQCAtMTY5LDcgKzE3Myw3IEBAIHByaXZhdGU6 Ci0gI2lmIGRlZmluZWQoU0tfQ1BVX0xFTkRJQU4pCi0gICAgICAgICAqczY0ICY9IDB4MDBmZmZm ZmZmZmZmZmZmZlVMTCA+PiAoKGtNYXhJbmxpbmVTdHJpbmdTaXplIC0gc2l6ZSkgKiA4KTsKLSAj ZWxzZQotLSAgICAgICAgc3RhdGljX2Fzc2VydChmYWxzZSwgIkJpZy1lbmRpYW4gYnVpbGRzIGFy ZSBub3Qgc3VwcG9ydGVkIGF0IHRoaXMgdGltZS4iKTsKLSsgICAgICAgICpzNjQgJj0gMHhmZmZm ZmZmZmZmZmZmZjAwVUxMIDw8ICgoa01heElubGluZVN0cmluZ1NpemUgLSBzaXplKSAqIDgpOwot ICNlbmRpZgotICAgICB9Ci0gfTsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvc2tpYS9zcmMvdXRpbHMvU2tKU09OLmgKLSsrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9zcmMvdXRpbHMvU2tKU09OLmgK LUBAIC0xMjAsNiArMTIwLDcgQEAgcHJvdGVjdGVkOgotICAgICAgICAgIC0tIGhpZ2hlc3QgMyBi aXRzIHJlc2VydmVkIGZvciB0eXBlIHN0b3JhZ2UKLSAKLSAgICAgICovCi0rI2lmIGRlZmluZWQo U0tfQ1BVX0xFTkRJQU4pCi0gICAgIGVudW0gY2xhc3MgVGFnIDogdWludDhfdCB7Ci0gICAgICAg ICAvLyBXZSBwaWNrZWQga1Nob3J0U3RyaW5nID09IDAgc28gdGhhdCB0YWcgMHgwMCBhbmQgc3Rv cmVkIG1heF9zaXplLXNpemUgKDctNz0wKQotICAgICAgICAgLy8gY29udmVuaWVudGx5IG92ZXJs YXAgdGhlICdcMCcgdGVybWluYXRvciwgYWxsb3dpbmcgdXMgdG8gc3RvcmUgYSA3IGNoYXJhY3Rl cgotQEAgLTEzNCw2ICsxMzUsMjIgQEAgcHJvdGVjdGVkOgotICAgICAgICAga09iamVjdCAgICAg ICAgICAgICAgICAgICAgICAgPSAwYjExMTAwMDAwLCAgLy8gcHRyIHRvIGV4dGVybmFsIHN0b3Jh Z2UKLSAgICAgfTsKLSAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IGtUYWdNYXNrID0gMGIx MTEwMDAwMDsKLSsjZWxzZQotKyAgICBlbnVtIGNsYXNzIFRhZyA6IHVpbnQ4X3QgewotKyAgICAg ICAgLy8gV2UgcGlja2VkIGtTaG9ydFN0cmluZyA9PSAwIHNvIHRoYXQgdGFnIDB4MDAgYW5kIHN0 b3JlZCBtYXhfc2l6ZS1zaXplICg3LTc9MCkKLSsgICAgICAgIC8vIGNvbnZlbmllbnRseSBvdmVy bGFwIHRoZSAnXDAnIHRlcm1pbmF0b3IsIGFsbG93aW5nIHVzIHRvIHN0b3JlIGEgNyBjaGFyYWN0 ZXIKLSsgICAgICAgIC8vIEMgc3RyaW5nIGlubGluZS4KLSsgICAgICAgIGtTaG9ydFN0cmluZyAg ICAgICAgICAgICAgICAgID0gMGIwMDAwMDAwMCwgIC8vIGlubGluZSBwYXlsb2FkCi0rICAgICAg ICBrTnVsbCAgICAgICAgICAgICAgICAgICAgICAgICA9IDBiMDAwMDAwMDEsICAvLyBubyBwYXls b2FkCi0rICAgICAgICBrQm9vbCAgICAgICAgICAgICAgICAgICAgICAgICA9IDBiMDAwMDAwMTAs ICAvLyBpbmxpbmUgcGF5bG9hZAotKyAgICAgICAga0ludCAgICAgICAgICAgICAgICAgICAgICAg ICAgPSAwYjAwMDAwMDExLCAgLy8gaW5saW5lIHBheWxvYWQKLSsgICAgICAgIGtGbG9hdCAgICAg ICAgICAgICAgICAgICAgICAgID0gMGIwMDAwMDEwMCwgIC8vIGlubGluZSBwYXlsb2FkCi0rICAg ICAgICBrU3RyaW5nICAgICAgICAgICAgICAgICAgICAgICA9IDBiMDAwMDAxMDEsICAvLyBwdHIg dG8gZXh0ZXJuYWwgc3RvcmFnZQotKyAgICAgICAga0FycmF5ICAgICAgICAgICAgICAgICAgICAg ICAgPSAwYjAwMDAwMTEwLCAgLy8gcHRyIHRvIGV4dGVybmFsIHN0b3JhZ2UKLSsgICAgICAgIGtP YmplY3QgICAgICAgICAgICAgICAgICAgICAgID0gMGIwMDAwMDExMSwgIC8vIHB0ciB0byBleHRl cm5hbCBzdG9yYWdlCi0rICAgIH07Ci0rICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBrVGFn TWFzayA9IDBiMDAwMDAxMTE7Ci0rI2VuZGlmCi0gCi0gICAgIHZvaWQgaW5pdF90YWdnZWQoVGFn KTsKLSAgICAgdm9pZCBpbml0X3RhZ2dlZF9wb2ludGVyKFRhZywgdm9pZCopOwotQEAgLTE5Miwx NCArMjA5LDE0IEBAIHByaXZhdGU6Ci0gCi0gICAgIHVpbnQ4X3QgZkRhdGE4W2tWYWx1ZVNpemVd OwotIAotLSNpZiBkZWZpbmVkKFNLX0NQVV9MRU5ESUFOKQotICAgICBzdGF0aWMgY29uc3RleHBy IHNpemVfdCBrVGFnT2Zmc2V0ID0ga1ZhbHVlU2l6ZSAtIDE7Ci0gCi0rI2lmIGRlZmluZWQoU0tf Q1BVX0xFTkRJQU4pCi0gICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90IGtUYWdQb2ludGVy TWFzayA9Ci0gICAgICAgICAgICAgfihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGtUYWdNYXNrKSA8 PCAoKHNpemVvZih1aW50cHRyX3QpIC0gMSkgKiA4KSk7Ci0gI2Vsc2UKLS0gICAgLy8gVGhlIGN1 cnJlbnQgdmFsdWUgbGF5b3V0IGFzc3VtZXMgTEUgYW5kIHdpbGwgdGFrZSBzb21lIHR3ZWFraW5n IGZvciBCRS4KLS0gICAgc3RhdGljX2Fzc2VydChmYWxzZSwgIkJpZy1lbmRpYW4gYnVpbGRzIGFy ZSBub3Qgc3VwcG9ydGVkIGF0IHRoaXMgdGltZS4iKTsKLSsgICAgc3RhdGljIGNvbnN0ZXhwciB1 aW50cHRyX3Qga1RhZ1BvaW50ZXJNYXNrID0KLSsgICAgICAgICAgICB+c3RhdGljX2Nhc3Q8dWlu dHB0cl90PihrVGFnTWFzayk7Ci0gI2VuZGlmCi0gfTsKLSAKLS0tLSBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS90aGlyZF9wYXJ0eS9za2Ntcy9za2Nt cy5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9z a2lhL3RoaXJkX3BhcnR5L3NrY21zL3NrY21zLmNjCi1AQCAtNjYsMTAgKzY2LDE1IEBAIHN0YXRp YyBmbG9hdCBldmFsX2N1cnZlKGNvbnN0IHNrY21zX0N1cnZlKiBjdXJ2ZSwgZmxvYXQgeCkgewot ICAgICAgICAgdWludDE2X3QgYmVfbCwgYmVfaDsKLSAgICAgICAgIG1lbWNweSgmYmVfbCwgY3Vy dmUtPnRhYmxlXzE2ICsgMipsbywgMik7Ci0gICAgICAgICBtZW1jcHkoJmJlX2gsIGN1cnZlLT50 YWJsZV8xNiArIDIqaGksIDIpOwotKyNpZiBfX0JJR19FTkRJQU5fXwotKyAgICAgICAgbCA9IGJl X2wgKiAoMS82NTUzNS4wZik7Ci0rICAgICAgICBoID0gYmVfaCAqICgxLzY1NTM1LjBmKTsKLSsj ZWxzZQotICAgICAgICAgdWludDE2X3QgbGVfbCA9ICgoYmVfbCA8PCA4KSB8IChiZV9sID4+IDgp KSAmIDB4ZmZmZjsKLSAgICAgICAgIHVpbnQxNl90IGxlX2ggPSAoKGJlX2ggPDwgOCkgfCAoYmVf aCA+PiA4KSkgJiAweGZmZmY7Ci0gICAgICAgICBsID0gbGVfbCAqICgxLzY1NTM1LjBmKTsKLSAg ICAgICAgIGggPSBsZV9oICogKDEvNjU1MzUuMGYpOwotKyNlbmRpZgotICAgICB9Ci0gICAgIHJl dHVybiBsICsgKGgtbCkqdDsKLSB9Ci1AQCAtMTI0LDIxICsxMjksMjkgQEAgZW51bSB7Ci0gc3Rh dGljIHVpbnQxNl90IHJlYWRfYmlnX3UxNihjb25zdCB1aW50OF90KiBwdHIpIHsKLSAgICAgdWlu dDE2X3QgYmU7Ci0gICAgIG1lbWNweSgmYmUsIHB0ciwgc2l6ZW9mKGJlKSk7Ci0rI2lmIF9fQklH X0VORElBTl9fCi0rICAgIHJldHVybiBiZTsKLSsjZWxzZQotICNpZiBkZWZpbmVkKF9NU0NfVkVS KQotICAgICByZXR1cm4gX2J5dGVzd2FwX3VzaG9ydChiZSk7Ci0gI2Vsc2UKLSAgICAgcmV0dXJu IF9fYnVpbHRpbl9ic3dhcDE2KGJlKTsKLSAjZW5kaWYKLSsjZW5kaWYKLSB9Ci0gCi0gc3RhdGlj IHVpbnQzMl90IHJlYWRfYmlnX3UzMihjb25zdCB1aW50OF90KiBwdHIpIHsKLSAgICAgdWludDMy X3QgYmU7Ci0gICAgIG1lbWNweSgmYmUsIHB0ciwgc2l6ZW9mKGJlKSk7Ci0rI2lmIF9fQklHX0VO RElBTl9fCi0rICAgIHJldHVybiBiZTsKLSsjZWxzZQotICNpZiBkZWZpbmVkKF9NU0NfVkVSKQot ICAgICByZXR1cm4gX2J5dGVzd2FwX3Vsb25nKGJlKTsKLSAjZWxzZQotICAgICByZXR1cm4gX19i dWlsdGluX2Jzd2FwMzIoYmUpOwotICNlbmRpZgotKyNlbmRpZgotIH0KLSAKLSBzdGF0aWMgaW50 MzJfdCByZWFkX2JpZ19pMzIoY29uc3QgdWludDhfdCogcHRyKSB7Ci0tLS0gcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEvdGhpcmRfcGFydHkvc2tjbXMv c3JjL1RyYW5zZm9ybV9pbmwuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9za2lhL3RoaXJkX3BhcnR5L3NrY21zL3NyYy9UcmFuc2Zvcm1faW5sLmgK LUBAIC0zOTIsOSArMzkyLDExIEBAIFNJIFUzMiBnYXRoZXJfMzIoY29uc3QgdWludDhfdCogcCwg STMyIGl4KSB7Ci0gfQotIAotIFNJIFUzMiBnYXRoZXJfMjQoY29uc3QgdWludDhfdCogcCwgSTMy IGl4KSB7Ci0rI2lmICFfX0JJR19FTkRJQU5fXwotICAgICAvLyBGaXJzdCwgYmFjayB1cCBhIGJ5 dGUuICBBbnkgcGxhY2Ugd2UncmUgZ2F0aGVyaW5nIGZyb20gaGFzIGEgc2FmZSBqdW5rIGJ5dGUg dG8gcmVhZAotICAgICAvLyBpbiBmcm9udCBvZiBpdCwgZWl0aGVyIGEgcHJldmlvdXMgdGFibGUg dmFsdWUsIG9yIHNvbWUgdGFnIG1ldGFkYXRhLgotICAgICBwIC09IDE7Ci0rI2VuZGlmCi0gCi0g ICAgIC8vIExvYWQgdGhlIGkndGggMjQtYml0IHZhbHVlIGZyb20gcCwgYW5kIDEgZXh0cmEgYnl0 ZS4KLSAgICAgYXV0byBsb2FkXzI0XzMyID0gW3BdKGludCBpKSB7Ci1AQCAtNDM1LDggKzQzNywx MCBAQCBTSSBVMzIgZ2F0aGVyXzI0KGNvbnN0IHVpbnQ4X3QqIHAsIEkzMiBpeCkgewotIAotICNp ZiAhZGVmaW5lZChfX2FybV9fKQotICAgICBTSSB2b2lkIGdhdGhlcl80OChjb25zdCB1aW50OF90 KiBwLCBJMzIgaXgsIFU2NCogdikgewotKyNpZiAhX19CSUdfRU5ESUFOX18KLSAgICAgICAgIC8v IEFzIGluIGdhdGhlcl8yNCgpLCB3aXRoIGV2ZXJ5dGhpbmcgZG91YmxlZC4KLSAgICAgICAgIHAg LT0gMjsKLSsjZW5kaWYKLSAKLSAgICAgICAgIC8vIExvYWQgdGhlIGkndGggNDgtYml0IHZhbHVl IGZyb20gcCwgYW5kIDIgZXh0cmEgYnl0ZXMuCi0gICAgICAgICBhdXRvIGxvYWRfNDhfNjQgPSBb cF0oaW50IGkpIHsKLUBAIC00OTksNyArNTAzLDkgQEAgU0kgRiBGX2Zyb21fVTgoVTggdikgewot IFNJIEYgRl9mcm9tX1UxNl9CRShVMTYgdikgewotICAgICAvLyBBbGwgMTYtYml0IElDQyB2YWx1 ZXMgYXJlIGJpZy1lbmRpYW4sIHNvIHdlIGJ5dGUgc3dhcCBiZWZvcmUgY29udmVydGluZyB0byBm bG9hdC4KLSAgICAgLy8gTVNWQyBjYXRjaGVzIHRoZSAibG9zcyIgb2YgZGF0YSBoZXJlIGluIHRo ZSBwb3J0YWJsZSBwYXRoLCBzbyB3ZSBhbHNvIG1ha2Ugc3VyZSB0byBtYXNrLgotKyNpZiAhX19C SUdfRU5ESUFOX18KLSAgICAgdiA9IFUxNiggMCB8ICgodiAmIDB4MDBmZikgPDwgOCkgfCAoKHYg JiAweGZmMDApID4+IDgpICk7Ci0rI2VuZGlmCi0gICAgIHJldHVybiBjYXN0PEY+KHYpICogKDEv NjU1MzUuMGYpOwotIH0KLSAKLUBAIC01MzQsOSArNTQwLDE1IEBAIFNJIEYgdGFibGUoY29uc3Qg c2tjbXNfQ3VydmUqIGN1cnZlLCBGIHYpIHsKLSBTSSB2b2lkIHNhbXBsZV9jbHV0XzgoY29uc3Qg c2tjbXNfQTJCKiBhMmIsIEkzMiBpeCwgRiogciwgRiogZywgRiogYikgewotICAgICBVMzIgcmdi ID0gZ2F0aGVyXzI0KGEyYi0+Z3JpZF84LCBpeCk7Ci0gCi0rI2lmIF9fQklHX0VORElBTl9fCi0r ICAgICpyID0gY2FzdDxGPigocmdiID4+IDE2KSAmIDB4ZmYpICogKDEvMjU1LjBmKTsKLSsgICAg KmcgPSBjYXN0PEY+KChyZ2IgPj4gIDgpICYgMHhmZikgKiAoMS8yNTUuMGYpOwotKyAgICAqYiA9 IGNhc3Q8Rj4oKHJnYiA+PiAgMCkgJiAweGZmKSAqICgxLzI1NS4wZik7Ci0rI2Vsc2UKLSAgICAg KnIgPSBjYXN0PEY+KChyZ2IgPj4gIDApICYgMHhmZikgKiAoMS8yNTUuMGYpOwotICAgICAqZyA9 IGNhc3Q8Rj4oKHJnYiA+PiAgOCkgJiAweGZmKSAqICgxLzI1NS4wZik7Ci0gICAgICpiID0gY2Fz dDxGPigocmdiID4+IDE2KSAmIDB4ZmYpICogKDEvMjU1LjBmKTsKLSsjZW5kaWYKLSB9Ci0gCi0g U0kgdm9pZCBzYW1wbGVfY2x1dF8xNihjb25zdCBza2Ntc19BMkIqIGEyYiwgSTMyIGl4LCBGKiBy LCBGKiBnLCBGKiBiKSB7Ci1AQCAtNTQ5LDEyICs1NjEsMTggQEAgU0kgdm9pZCBzYW1wbGVfY2x1 dF8xNihjb25zdCBza2Ntc19BMkIqIGEyYiwgSTMyIGl4LCBGKiByLCBGKiBnLCBGKiBiKSB7Ci0g ICAgIC8vIFRoaXMgc3RyYXRlZ3kgaXMgbXVjaCBmYXN0ZXIgZm9yIDY0LWJpdCBidWlsZHMsIGFu ZCBmaW5lIGZvciAzMi1iaXQgeDg2IHRvby4KLSAgICAgVTY0IHJnYjsKLSAgICAgZ2F0aGVyXzQ4 KGEyYi0+Z3JpZF8xNiwgaXgsICZyZ2IpOwotKyNpZiBfX0JJR19FTkRJQU5fXwotKyAgICAqciA9 IGNhc3Q8Rj4oKHJnYiA+PiAzMikgJiAweGZmZmYpICogKDEvNjU1MzUuMGYpOwotKyAgICAqZyA9 IGNhc3Q8Rj4oKHJnYiA+PiAxNikgJiAweGZmZmYpICogKDEvNjU1MzUuMGYpOwotKyAgICAqYiA9 IGNhc3Q8Rj4oKHJnYiA+PiAgMCkgJiAweGZmZmYpICogKDEvNjU1MzUuMGYpOwotKyNlbHNlCi0g ICAgIHJnYiA9IHN3YXBfZW5kaWFuXzE2eDQocmdiKTsKLSAKLSAgICAgKnIgPSBjYXN0PEY+KChy Z2IgPj4gIDApICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKLSAgICAgKmcgPSBjYXN0PEY+KChy Z2IgPj4gMTYpICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKLSAgICAgKmIgPSBjYXN0PEY+KChy Z2IgPj4gMzIpICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKLSAjZW5kaWYKLSsjZW5kaWYKLSB9 Ci0gCi0gLy8gR0NDIDcuMi4wIGhpdHMgYW4gaW50ZXJuYWwgY29tcGlsZXIgZXJyb3Igd2l0aCAt ZmlubGluZS1mdW5jdGlvbnMgKG9yIC1PMykKLUBAIC02OTUsMTAgKzcxMywxNyBAQCBzdGF0aWMg dm9pZCBleGVjX29wcyhjb25zdCBPcCogb3BzLCBjb25zdCB2b2lkKiogYXJncywKLSAgICAgICAg ICAgICBjYXNlIE9wX2xvYWRfODg4ODp7Ci0gICAgICAgICAgICAgICAgIFUzMiByZ2JhID0gbG9h ZDxVMzI+KHNyYyArIDQqaSk7Ci0gCi0rI2lmIF9fQklHX0VORElBTl9fCi0rICAgICAgICAgICAg ICAgIHIgPSBjYXN0PEY+KChyZ2JhID4+IDI0KSAmIDB4ZmYpICogKDEvMjU1LjBmKTsKLSsgICAg ICAgICAgICAgICAgZyA9IGNhc3Q8Rj4oKHJnYmEgPj4gMTYpICYgMHhmZikgKiAoMS8yNTUuMGYp OwotKyAgICAgICAgICAgICAgICBiID0gY2FzdDxGPigocmdiYSA+PiAgOCkgJiAweGZmKSAqICgx LzI1NS4wZik7Ci0rICAgICAgICAgICAgICAgIGEgPSBjYXN0PEY+KChyZ2JhID4+ICAwKSAmIDB4 ZmYpICogKDEvMjU1LjBmKTsKLSsjZWxzZQotICAgICAgICAgICAgICAgICByID0gY2FzdDxGPigo cmdiYSA+PiAgMCkgJiAweGZmKSAqICgxLzI1NS4wZik7Ci0gICAgICAgICAgICAgICAgIGcgPSBj YXN0PEY+KChyZ2JhID4+ICA4KSAmIDB4ZmYpICogKDEvMjU1LjBmKTsKLSAgICAgICAgICAgICAg ICAgYiA9IGNhc3Q8Rj4oKHJnYmEgPj4gMTYpICYgMHhmZikgKiAoMS8yNTUuMGYpOwotICAgICAg ICAgICAgICAgICBhID0gY2FzdDxGPigocmdiYSA+PiAyNCkgJiAweGZmKSAqICgxLzI1NS4wZik7 Ci0rI2VuZGlmCi0gICAgICAgICAgICAgfSBicmVhazsKLSAKLSAgICAgICAgICAgICBjYXNlIE9w X2xvYWRfODg4OF9wYWxldHRlODp7Ci1AQCAtNzI3LDEzICs3NTIsMjkgQEAgc3RhdGljIHZvaWQg ZXhlY19vcHMoY29uc3QgT3AqIG9wcywgY29uc3Qgdm9pZCoqIGFyZ3MsCi0gICAgICAgICAgICAg ICAgIGNvbnN0IHVpbnQxNl90KiByZ2IgPSAoY29uc3QgdWludDE2X3QqKXB0cjsgLy8gY2FzdCB0 byBjb25zdCB1aW50MTZfdCogdG8gYmUgc2FmZS4KLSAgICAgICAgICAgICAjaWYgZGVmaW5lZChV U0lOR19ORU9OKQotICAgICAgICAgICAgICAgICB1aW50MTZ4NHgzX3QgdiA9IHZsZDNfdTE2KHJn Yik7Ci0rI2lmIF9fQklHX0VORElBTl9fCi0rICAgICAgICAgICAgICAgIHIgPSBjYXN0PEY+KHN3 YXBfZW5kaWFuXzE2KChVMTYpdi52YWxbMF0pKSAqICgxLzY1NTM1LjBmKTsKLSsgICAgICAgICAg ICAgICAgZyA9IGNhc3Q8Rj4oc3dhcF9lbmRpYW5fMTYoKFUxNil2LnZhbFsxXSkpICogKDEvNjU1 MzUuMGYpOwotKyAgICAgICAgICAgICAgICBiID0gY2FzdDxGPihzd2FwX2VuZGlhbl8xNigoVTE2 KXYudmFsWzJdKSkgKiAoMS82NTUzNS4wZik7Ci0rI2Vsc2UKLSAgICAgICAgICAgICAgICAgciA9 IGNhc3Q8Rj4oKFUxNil2LnZhbFswXSkgKiAoMS82NTUzNS4wZik7Ci0gICAgICAgICAgICAgICAg IGcgPSBjYXN0PEY+KChVMTYpdi52YWxbMV0pICogKDEvNjU1MzUuMGYpOwotICAgICAgICAgICAg ICAgICBiID0gY2FzdDxGPigoVTE2KXYudmFsWzJdKSAqICgxLzY1NTM1LjBmKTsKLSsjZW5kaWYK LSAgICAgICAgICAgICAjZWxzZQotKyNpZiBfX0JJR19FTkRJQU5fXwotKyAgICAgICAgICAgICAg ICBVMzIgUiA9IGxvYWRfMzxVMzI+KHJnYiswKSwKLSsgICAgICAgICAgICAgICAgICAgIEcgPSBs b2FkXzM8VTMyPihyZ2IrMSksCi0rICAgICAgICAgICAgICAgICAgICBCID0gbG9hZF8zPFUzMj4o cmdiKzIpOwotKyAgICAgICAgICAgICAgICAvLyBSLEcsQiBhcmUgbGl0dGxlLWVuZGlhbiAxNi1i aXQsIHNvIGJ5dGUgc3dhcCB0aGVtIGJlZm9yZSBjb252ZXJ0aW5nIHRvIGZsb2F0LgotKyAgICAg ICAgICAgICAgICByID0gY2FzdDxGPigoUiAmIDB4MDBmZik8PDggfCAoUiAmIDB4ZmYwMCk+Pjgp ICogKDEvNjU1MzUuMGYpOwotKyAgICAgICAgICAgICAgICBnID0gY2FzdDxGPigoRyAmIDB4MDBm Zik8PDggfCAoRyAmIDB4ZmYwMCk+PjgpICogKDEvNjU1MzUuMGYpOwotKyAgICAgICAgICAgICAg ICBiID0gY2FzdDxGPigoQiAmIDB4MDBmZik8PDggfCAoQiAmIDB4ZmYwMCk+PjgpICogKDEvNjU1 MzUuMGYpOwotKyNlbHNlCi0gICAgICAgICAgICAgICAgIHIgPSBjYXN0PEY+KGxvYWRfMzxVMzI+ KHJnYiswKSkgKiAoMS82NTUzNS4wZik7Ci0gICAgICAgICAgICAgICAgIGcgPSBjYXN0PEY+KGxv YWRfMzxVMzI+KHJnYisxKSkgKiAoMS82NTUzNS4wZik7Ci0gICAgICAgICAgICAgICAgIGIgPSBj YXN0PEY+KGxvYWRfMzxVMzI+KHJnYisyKSkgKiAoMS82NTUzNS4wZik7Ci0rI2VuZGlmCi0gICAg ICAgICAgICAgI2VuZGlmCi0gICAgICAgICAgICAgfSBicmVhazsKLSAKLUBAIC03NDMsMTcgKzc4 NCwzMyBAQCBzdGF0aWMgdm9pZCBleGVjX29wcyhjb25zdCBPcCogb3BzLCBjb25zdCB2b2lkKiog YXJncywKLSAgICAgICAgICAgICAgICAgY29uc3QgdWludDE2X3QqIHJnYmEgPSAoY29uc3QgdWlu dDE2X3QqKXB0cjsgLy8gY2FzdCB0byBjb25zdCB1aW50MTZfdCogdG8gYmUgc2FmZS4KLSAgICAg ICAgICAgICAjaWYgZGVmaW5lZChVU0lOR19ORU9OKQotICAgICAgICAgICAgICAgICB1aW50MTZ4 NHg0X3QgdiA9IHZsZDRfdTE2KHJnYmEpOwotKyNpZiBfX0JJR19FTkRJQU5fXwotKyAgICAgICAg ICAgICAgICByID0gY2FzdDxGPihzd2FwX2VuZGlhbl8xNigoVTE2KXYudmFsWzBdKSkgKiAoMS82 NTUzNS4wZik7Ci0rICAgICAgICAgICAgICAgIGcgPSBjYXN0PEY+KHN3YXBfZW5kaWFuXzE2KChV MTYpdi52YWxbMV0pKSAqICgxLzY1NTM1LjBmKTsKLSsgICAgICAgICAgICAgICAgYiA9IGNhc3Q8 Rj4oc3dhcF9lbmRpYW5fMTYoKFUxNil2LnZhbFsyXSkpICogKDEvNjU1MzUuMGYpOwotKyAgICAg ICAgICAgICAgICBhID0gY2FzdDxGPihzd2FwX2VuZGlhbl8xNigoVTE2KXYudmFsWzNdKSkgKiAo MS82NTUzNS4wZik7Ci0rI2Vsc2UKLSAgICAgICAgICAgICAgICAgciA9IGNhc3Q8Rj4oKFUxNil2 LnZhbFswXSkgKiAoMS82NTUzNS4wZik7Ci0gICAgICAgICAgICAgICAgIGcgPSBjYXN0PEY+KChV MTYpdi52YWxbMV0pICogKDEvNjU1MzUuMGYpOwotICAgICAgICAgICAgICAgICBiID0gY2FzdDxG PigoVTE2KXYudmFsWzJdKSAqICgxLzY1NTM1LjBmKTsKLSAgICAgICAgICAgICAgICAgYSA9IGNh c3Q8Rj4oKFUxNil2LnZhbFszXSkgKiAoMS82NTUzNS4wZik7Ci0rI2VuZGlmCi0gICAgICAgICAg ICAgI2Vsc2UKLSsjaWYgX19CSUdfRU5ESUFOX18KLSsgICAgICAgICAgICAgICAgVTY0IHB4ID0g c3dhcF9lbmRpYW5fMTZ4NChsb2FkPFU2ND4ocmdiYSkpOwotKwotKyAgICAgICAgICAgICAgICBy ID0gY2FzdDxGPigocHggPj4gNDgpICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKLSsgICAgICAg ICAgICAgICAgZyA9IGNhc3Q8Rj4oKHB4ID4+IDMyKSAmIDB4ZmZmZikgKiAoMS82NTUzNS4wZik7 Ci0rICAgICAgICAgICAgICAgIGIgPSBjYXN0PEY+KChweCA+PiAxNikgJiAweGZmZmYpICogKDEv NjU1MzUuMGYpOwotKyAgICAgICAgICAgICAgICBhID0gY2FzdDxGPigocHggPj4gIDApICYgMHhm ZmZmKSAqICgxLzY1NTM1LjBmKTsKLSsjZWxzZQotICAgICAgICAgICAgICAgICBVNjQgcHggPSBs b2FkPFU2ND4ocmdiYSk7Ci0gCi0gICAgICAgICAgICAgICAgIHIgPSBjYXN0PEY+KChweCA+PiAg MCkgJiAweGZmZmYpICogKDEvNjU1MzUuMGYpOwotICAgICAgICAgICAgICAgICBnID0gY2FzdDxG PigocHggPj4gMTYpICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKLSAgICAgICAgICAgICAgICAg YiA9IGNhc3Q8Rj4oKHB4ID4+IDMyKSAmIDB4ZmZmZikgKiAoMS82NTUzNS4wZik7Ci0gICAgICAg ICAgICAgICAgIGEgPSBjYXN0PEY+KChweCA+PiA0OCkgJiAweGZmZmYpICogKDEvNjU1MzUuMGYp OwotKyNlbmRpZgotICAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgIH0gYnJlYWs7Ci0g Ci1AQCAtNzYzLDEwICs4MjAsMjEgQEAgc3RhdGljIHZvaWQgZXhlY19vcHMoY29uc3QgT3AqIG9w cywgY29uc3Qgdm9pZCoqIGFyZ3MsCi0gICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQxNl90KiBy Z2IgPSAoY29uc3QgdWludDE2X3QqKXB0cjsgLy8gY2FzdCB0byBjb25zdCB1aW50MTZfdCogdG8g YmUgc2FmZS4KLSAgICAgICAgICAgICAjaWYgZGVmaW5lZChVU0lOR19ORU9OKQotICAgICAgICAg ICAgICAgICB1aW50MTZ4NHgzX3QgdiA9IHZsZDNfdTE2KHJnYik7Ci0rI2lmIF9fQklHX0VORElB Tl9fCi0rICAgICAgICAgICAgICAgIHIgPSBjYXN0PEY+KChVMTYpdi52YWxbMF0pICogKDEvNjU1 MzUuMGYpOwotKyAgICAgICAgICAgICAgICBnID0gY2FzdDxGPigoVTE2KXYudmFsWzFdKSAqICgx LzY1NTM1LjBmKTsKLSsgICAgICAgICAgICAgICAgYiA9IGNhc3Q8Rj4oKFUxNil2LnZhbFsyXSkg KiAoMS82NTUzNS4wZik7Ci0rI2Vsc2UKLSAgICAgICAgICAgICAgICAgciA9IGNhc3Q8Rj4oc3dh cF9lbmRpYW5fMTYoKFUxNil2LnZhbFswXSkpICogKDEvNjU1MzUuMGYpOwotICAgICAgICAgICAg ICAgICBnID0gY2FzdDxGPihzd2FwX2VuZGlhbl8xNigoVTE2KXYudmFsWzFdKSkgKiAoMS82NTUz NS4wZik7Ci0gICAgICAgICAgICAgICAgIGIgPSBjYXN0PEY+KHN3YXBfZW5kaWFuXzE2KChVMTYp di52YWxbMl0pKSAqICgxLzY1NTM1LjBmKTsKLSsjZW5kaWYKLSAgICAgICAgICAgICAjZWxzZQot KyNpZiBfX0JJR19FTkRJQU5fXwotKyAgICAgICAgICAgICAgICByID0gY2FzdDxGPihsb2FkXzM8 VTMyPihyZ2IrMCkpICogKDEvNjU1MzUuMGYpOwotKyAgICAgICAgICAgICAgICBnID0gY2FzdDxG Pihsb2FkXzM8VTMyPihyZ2IrMSkpICogKDEvNjU1MzUuMGYpOwotKyAgICAgICAgICAgICAgICBi ID0gY2FzdDxGPihsb2FkXzM8VTMyPihyZ2IrMikpICogKDEvNjU1MzUuMGYpOwotKyNlbHNlCi0g ICAgICAgICAgICAgICAgIFUzMiBSID0gbG9hZF8zPFUzMj4ocmdiKzApLAotICAgICAgICAgICAg ICAgICAgICAgRyA9IGxvYWRfMzxVMzI+KHJnYisxKSwKLSAgICAgICAgICAgICAgICAgICAgIEIg PSBsb2FkXzM8VTMyPihyZ2IrMik7Ci1AQCAtNzc0LDYgKzg0Miw3IEBAIHN0YXRpYyB2b2lkIGV4 ZWNfb3BzKGNvbnN0IE9wKiBvcHMsIGNvbnN0IHZvaWQqKiBhcmdzLAotICAgICAgICAgICAgICAg ICByID0gY2FzdDxGPigoUiAmIDB4MDBmZik8PDggfCAoUiAmIDB4ZmYwMCk+PjgpICogKDEvNjU1 MzUuMGYpOwotICAgICAgICAgICAgICAgICBnID0gY2FzdDxGPigoRyAmIDB4MDBmZik8PDggfCAo RyAmIDB4ZmYwMCk+PjgpICogKDEvNjU1MzUuMGYpOwotICAgICAgICAgICAgICAgICBiID0gY2Fz dDxGPigoQiAmIDB4MDBmZik8PDggfCAoQiAmIDB4ZmYwMCk+PjgpICogKDEvNjU1MzUuMGYpOwot KyNlbmRpZgotICAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgIH0gYnJlYWs7Ci0gCi1A QCAtNzgzLDE3ICs4NTIsMzMgQEAgc3RhdGljIHZvaWQgZXhlY19vcHMoY29uc3QgT3AqIG9wcywg Y29uc3Qgdm9pZCoqIGFyZ3MsCi0gICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQxNl90KiByZ2Jh ID0gKGNvbnN0IHVpbnQxNl90KilwdHI7IC8vIGNhc3QgdG8gY29uc3QgdWludDE2X3QqIHRvIGJl IHNhZmUuCi0gICAgICAgICAgICAgI2lmIGRlZmluZWQoVVNJTkdfTkVPTikKLSAgICAgICAgICAg ICAgICAgdWludDE2eDR4NF90IHYgPSB2bGQ0X3UxNihyZ2JhKTsKLSsjaWYgX19CSUdfRU5ESUFO X18KLSsgICAgICAgICAgICAgICAgciA9IGNhc3Q8Rj4oKFUxNil2LnZhbFswXSkgKiAoMS82NTUz NS4wZik7Ci0rICAgICAgICAgICAgICAgIGcgPSBjYXN0PEY+KChVMTYpdi52YWxbMV0pICogKDEv NjU1MzUuMGYpOwotKyAgICAgICAgICAgICAgICBiID0gY2FzdDxGPigoVTE2KXYudmFsWzJdKSAq ICgxLzY1NTM1LjBmKTsKLSsgICAgICAgICAgICAgICAgYSA9IGNhc3Q8Rj4oKFUxNil2LnZhbFsz XSkgKiAoMS82NTUzNS4wZik7Ci0rI2Vsc2UKLSAgICAgICAgICAgICAgICAgciA9IGNhc3Q8Rj4o c3dhcF9lbmRpYW5fMTYoKFUxNil2LnZhbFswXSkpICogKDEvNjU1MzUuMGYpOwotICAgICAgICAg ICAgICAgICBnID0gY2FzdDxGPihzd2FwX2VuZGlhbl8xNigoVTE2KXYudmFsWzFdKSkgKiAoMS82 NTUzNS4wZik7Ci0gICAgICAgICAgICAgICAgIGIgPSBjYXN0PEY+KHN3YXBfZW5kaWFuXzE2KChV MTYpdi52YWxbMl0pKSAqICgxLzY1NTM1LjBmKTsKLSAgICAgICAgICAgICAgICAgYSA9IGNhc3Q8 Rj4oc3dhcF9lbmRpYW5fMTYoKFUxNil2LnZhbFszXSkpICogKDEvNjU1MzUuMGYpOwotKyNlbmRp ZgotICAgICAgICAgICAgICNlbHNlCi0rI2lmIF9fQklHX0VORElBTl9fCi0rICAgICAgICAgICAg ICAgIFU2NCBweCA9IGxvYWQ8VTY0PihyZ2JhKTsKLSsKLSsgICAgICAgICAgICAgICAgciA9IGNh c3Q8Rj4oKHB4ID4+IDQ4KSAmIDB4ZmZmZikgKiAoMS82NTUzNS4wZik7Ci0rICAgICAgICAgICAg ICAgIGcgPSBjYXN0PEY+KChweCA+PiAzMikgJiAweGZmZmYpICogKDEvNjU1MzUuMGYpOwotKyAg ICAgICAgICAgICAgICBiID0gY2FzdDxGPigocHggPj4gMTYpICYgMHhmZmZmKSAqICgxLzY1NTM1 LjBmKTsKLSsgICAgICAgICAgICAgICAgYSA9IGNhc3Q8Rj4oKHB4ID4+ICAwKSAmIDB4ZmZmZikg KiAoMS82NTUzNS4wZik7Ci0rI2Vsc2UKLSAgICAgICAgICAgICAgICAgVTY0IHB4ID0gc3dhcF9l bmRpYW5fMTZ4NChsb2FkPFU2ND4ocmdiYSkpOwotIAotICAgICAgICAgICAgICAgICByID0gY2Fz dDxGPigocHggPj4gIDApICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKLSAgICAgICAgICAgICAg ICAgZyA9IGNhc3Q8Rj4oKHB4ID4+IDE2KSAmIDB4ZmZmZikgKiAoMS82NTUzNS4wZik7Ci0gICAg ICAgICAgICAgICAgIGIgPSBjYXN0PEY+KChweCA+PiAzMikgJiAweGZmZmYpICogKDEvNjU1MzUu MGYpOwotICAgICAgICAgICAgICAgICBhID0gY2FzdDxGPigocHggPj4gNDgpICYgMHhmZmZmKSAq ICgxLzY1NTM1LjBmKTsKLSsjZW5kaWYKLSAgICAgICAgICAgICAjZW5kaWYKLSAgICAgICAgICAg ICB9IGJyZWFrOwotIAotQEAgLTgyOCwxMCArOTEzLDE3IEBAIHN0YXRpYyB2b2lkIGV4ZWNfb3Bz KGNvbnN0IE9wKiBvcHMsIGNvbnN0IHZvaWQqKiBhcmdzLAotICAgICAgICAgICAgICAgICAgICAg QSA9IChVMTYpdi52YWxbM107Ci0gICAgICAgICAgICAgI2Vsc2UKLSAgICAgICAgICAgICAgICAg VTY0IHB4ID0gbG9hZDxVNjQ+KHJnYmEpOwotKyNpZiBfX0JJR19FTkRJQU5fXwotKyAgICAgICAg ICAgICAgICBVMTYgUiA9IGNhc3Q8VTE2PigocHggPj4gNDgpICYgMHhmZmZmKSwKLSsgICAgICAg ICAgICAgICAgICAgIEcgPSBjYXN0PFUxNj4oKHB4ID4+IDMyKSAmIDB4ZmZmZiksCi0rICAgICAg ICAgICAgICAgICAgICBCID0gY2FzdDxVMTY+KChweCA+PiAxNikgJiAweGZmZmYpLAotKyAgICAg ICAgICAgICAgICAgICAgQSA9IGNhc3Q8VTE2PigocHggPj4gIDApICYgMHhmZmZmKTsKLSsjZWxz ZQotICAgICAgICAgICAgICAgICBVMTYgUiA9IGNhc3Q8VTE2PigocHggPj4gIDApICYgMHhmZmZm KSwKLSAgICAgICAgICAgICAgICAgICAgIEcgPSBjYXN0PFUxNj4oKHB4ID4+IDE2KSAmIDB4ZmZm ZiksCi0gICAgICAgICAgICAgICAgICAgICBCID0gY2FzdDxVMTY+KChweCA+PiAzMikgJiAweGZm ZmYpLAotICAgICAgICAgICAgICAgICAgICAgQSA9IGNhc3Q8VTE2PigocHggPj4gNDgpICYgMHhm ZmZmKTsKLSsjZW5kaWYKLSAgICAgICAgICAgICAjZW5kaWYKLSAgICAgICAgICAgICAgICAgciA9 IEZfZnJvbV9IYWxmKFIpOwotICAgICAgICAgICAgICAgICBnID0gRl9mcm9tX0hhbGYoRyk7Ci1A QCAtMTAyNCwxMCArMTExNiwxNyBAQCBzdGF0aWMgdm9pZCBleGVjX29wcyhjb25zdCBPcCogb3Bz LCBjb25zdCB2b2lkKiogYXJncywKLSAgICAgICAgICAgICB9IHJldHVybjsKLSAKLSAgICAgICAg ICAgICBjYXNlIE9wX3N0b3JlXzg4ODg6IHsKLSsjaWYgX19CSUdfRU5ESUFOX18KLSsgICAgICAg ICAgICAgICAgc3RvcmUoZHN0ICsgNCppLCBjYXN0PFUzMj4odG9fZml4ZWQociAqIDI1NSkgPDwg MjQpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FzdDxVMzI+KHRvX2ZpeGVk KGcgKiAyNTUpIDw8IDE2KQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhc3Q8 VTMyPih0b19maXhlZChiICogMjU1KSA8PCAgOCkKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCBjYXN0PFUzMj4odG9fZml4ZWQoYSAqIDI1NSkgPDwgIDApKTsKLSsjZWxzZQotICAg ICAgICAgICAgICAgICBzdG9yZShkc3QgKyA0KmksIGNhc3Q8VTMyPih0b19maXhlZChyICogMjU1 KSA8PCAgMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYXN0PFUzMj4odG9f Zml4ZWQoZyAqIDI1NSkgPDwgIDgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg Y2FzdDxVMzI+KHRvX2ZpeGVkKGIgKiAyNTUpIDw8IDE2KQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IGNhc3Q8VTMyPih0b19maXhlZChhICogMjU1KSA8PCAyNCkpOwotKyNlbmRp ZgotICAgICAgICAgICAgIH0gcmV0dXJuOwotIAotICAgICAgICAgICAgIGNhc2UgT3Bfc3RvcmVf MTAxMDEwMjogewotQEAgLTEwNDMsMTUgKzExNDIsMzAgQEAgc3RhdGljIHZvaWQgZXhlY19vcHMo Y29uc3QgT3AqIG9wcywgY29uc3Qgdm9pZCoqIGFyZ3MsCi0gICAgICAgICAgICAgICAgIHVpbnQx Nl90KiByZ2IgPSAodWludDE2X3QqKXB0cjsgICAgICAgICAgLy8gZm9yIHRoaXMgY2FzdCB0byB1 aW50MTZfdCogdG8gYmUgc2FmZS4KLSAgICAgICAgICAgICAjaWYgZGVmaW5lZChVU0lOR19ORU9O KQotICAgICAgICAgICAgICAgICB1aW50MTZ4NHgzX3QgdiA9IHt7Ci0rI2lmIF9fQklHX0VORElB Tl9fCi0rICAgICAgICAgICAgICAgICAgICAodWludDE2eDRfdClzd2FwX2VuZGlhbl8xNihjYXN0 PFUxNj4odG9fZml4ZWQociAqIDY1NTM1KSkpLAotKyAgICAgICAgICAgICAgICAgICAgKHVpbnQx Nng0X3Qpc3dhcF9lbmRpYW5fMTYoY2FzdDxVMTY+KHRvX2ZpeGVkKGcgKiA2NTUzNSkpKSwKLSsg ICAgICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KXN3YXBfZW5kaWFuXzE2KGNhc3Q8VTE2Pih0 b19maXhlZChiICogNjU1MzUpKSksCi0rI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgICh1aW50 MTZ4NF90KWNhc3Q8VTE2Pih0b19maXhlZChyICogNjU1MzUpKSwKLSAgICAgICAgICAgICAgICAg ICAgICh1aW50MTZ4NF90KWNhc3Q8VTE2Pih0b19maXhlZChnICogNjU1MzUpKSwKLSAgICAgICAg ICAgICAgICAgICAgICh1aW50MTZ4NF90KWNhc3Q8VTE2Pih0b19maXhlZChiICogNjU1MzUpKSwK LSsjZW5kaWYKLSAgICAgICAgICAgICAgICAgfX07Ci0gICAgICAgICAgICAgICAgIHZzdDNfdTE2 KHJnYiwgdik7Ci0gICAgICAgICAgICAgI2Vsc2UKLSsjaWYgX19CSUdfRU5ESUFOX18KLSsgICAg ICAgICAgICAgICAgSTMyIFIgPSB0b19maXhlZChyICogNjU1MzUpLAotKyAgICAgICAgICAgICAg ICAgICAgRyA9IHRvX2ZpeGVkKGcgKiA2NTUzNSksCi0rICAgICAgICAgICAgICAgICAgICBCID0g dG9fZml4ZWQoYiAqIDY1NTM1KTsKLSsgICAgICAgICAgICAgICAgc3RvcmVfMyhyZ2IrMCwgY2Fz dDxVMTY+KChSICYgMHgwMGZmKSA8PCA4IHwgKFIgJiAweGZmMDApID4+IDgpICk7Ci0rICAgICAg ICAgICAgICAgIHN0b3JlXzMocmdiKzEsIGNhc3Q8VTE2PigoRyAmIDB4MDBmZikgPDwgOCB8IChH ICYgMHhmZjAwKSA+PiA4KSApOwotKyAgICAgICAgICAgICAgICBzdG9yZV8zKHJnYisyLCBjYXN0 PFUxNj4oKEIgJiAweDAwZmYpIDw8IDggfCAoQiAmIDB4ZmYwMCkgPj4gOCkgKTsKLSsjZWxzZQot ICAgICAgICAgICAgICAgICBzdG9yZV8zKHJnYiswLCBjYXN0PFUxNj4odG9fZml4ZWQociAqIDY1 NTM1KSkpOwotICAgICAgICAgICAgICAgICBzdG9yZV8zKHJnYisxLCBjYXN0PFUxNj4odG9fZml4 ZWQoZyAqIDY1NTM1KSkpOwotICAgICAgICAgICAgICAgICBzdG9yZV8zKHJnYisyLCBjYXN0PFUx Nj4odG9fZml4ZWQoYiAqIDY1NTM1KSkpOwotKyNlbmRpZgotICAgICAgICAgICAgICNlbmRpZgot IAotICAgICAgICAgICAgIH0gcmV0dXJuOwotQEAgLTEwNjIsMTggKzExNzYsMzMgQEAgc3RhdGlj IHZvaWQgZXhlY19vcHMoY29uc3QgT3AqIG9wcywgY29uc3Qgdm9pZCoqIGFyZ3MsCi0gICAgICAg ICAgICAgICAgIHVpbnQxNl90KiByZ2JhID0gKHVpbnQxNl90KilwdHI7ICAgICAgICAvLyBmb3Ig dGhpcyBjYXN0IHRvIHVpbnQxNl90KiB0byBiZSBzYWZlLgotICAgICAgICAgICAgICNpZiBkZWZp bmVkKFVTSU5HX05FT04pCi0gICAgICAgICAgICAgICAgIHVpbnQxNng0eDRfdCB2ID0ge3sKLSsj aWYgX19CSUdfRU5ESUFOX18KLSsgICAgICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KXN3YXBf ZW5kaWFuXzE2KGNhc3Q8VTE2Pih0b19maXhlZChyICogNjU1MzUpKSksCi0rICAgICAgICAgICAg ICAgICAgICAodWludDE2eDRfdClzd2FwX2VuZGlhbl8xNihjYXN0PFUxNj4odG9fZml4ZWQoZyAq IDY1NTM1KSkpLAotKyAgICAgICAgICAgICAgICAgICAgKHVpbnQxNng0X3Qpc3dhcF9lbmRpYW5f MTYoY2FzdDxVMTY+KHRvX2ZpeGVkKGIgKiA2NTUzNSkpKSwKLSsgICAgICAgICAgICAgICAgICAg ICh1aW50MTZ4NF90KXN3YXBfZW5kaWFuXzE2KGNhc3Q8VTE2Pih0b19maXhlZChhICogNjU1MzUp KSksCi0rI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KWNhc3Q8VTE2Pih0 b19maXhlZChyICogNjU1MzUpKSwKLSAgICAgICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KWNh c3Q8VTE2Pih0b19maXhlZChnICogNjU1MzUpKSwKLSAgICAgICAgICAgICAgICAgICAgICh1aW50 MTZ4NF90KWNhc3Q8VTE2Pih0b19maXhlZChiICogNjU1MzUpKSwKLSAgICAgICAgICAgICAgICAg ICAgICh1aW50MTZ4NF90KWNhc3Q8VTE2Pih0b19maXhlZChhICogNjU1MzUpKSwKLSsjZW5kaWYK LSAgICAgICAgICAgICAgICAgfX07Ci0gICAgICAgICAgICAgICAgIHZzdDRfdTE2KHJnYmEsIHYp OwotICAgICAgICAgICAgICNlbHNlCi0rI2lmIF9fQklHX0VORElBTl9fCi0rICAgICAgICAgICAg ICAgIFU2NCBweCA9IGNhc3Q8VTY0Pih0b19maXhlZChyICogNjU1MzUpKSA8PCA0OAotKyAgICAg ICAgICAgICAgICAgICAgICAgfCBjYXN0PFU2ND4odG9fZml4ZWQoZyAqIDY1NTM1KSkgPDwgMzIK LSsgICAgICAgICAgICAgICAgICAgICAgIHwgY2FzdDxVNjQ+KHRvX2ZpeGVkKGIgKiA2NTUzNSkp IDw8IDE2Ci0rICAgICAgICAgICAgICAgICAgICAgICB8IGNhc3Q8VTY0Pih0b19maXhlZChhICog NjU1MzUpKSA8PCAgMDsKLSsgICAgICAgICAgICAgICAgc3RvcmUocmdiYSwgc3dhcF9lbmRpYW5f MTZ4NChweCkpOwotKyNlbHNlCi0gICAgICAgICAgICAgICAgIFU2NCBweCA9IGNhc3Q8VTY0Pih0 b19maXhlZChyICogNjU1MzUpKSA8PCAgMAotICAgICAgICAgICAgICAgICAgICAgICAgfCBjYXN0 PFU2ND4odG9fZml4ZWQoZyAqIDY1NTM1KSkgPDwgMTYKLSAgICAgICAgICAgICAgICAgICAgICAg IHwgY2FzdDxVNjQ+KHRvX2ZpeGVkKGIgKiA2NTUzNSkpIDw8IDMyCi0gICAgICAgICAgICAgICAg ICAgICAgICB8IGNhc3Q8VTY0Pih0b19maXhlZChhICogNjU1MzUpKSA8PCA0ODsKLSAgICAgICAg ICAgICAgICAgc3RvcmUocmdiYSwgcHgpOwotKyNlbmRpZgotICAgICAgICAgICAgICNlbmRpZgot ICAgICAgICAgICAgIH0gcmV0dXJuOwotIAotQEAgLTEwODMsMTggKzEyMTIsMzAgQEAgc3RhdGlj IHZvaWQgZXhlY19vcHMoY29uc3QgT3AqIG9wcywgY29uc3Qgdm9pZCoqIGFyZ3MsCi0gICAgICAg ICAgICAgICAgIHVpbnQxNl90KiByZ2IgPSAodWludDE2X3QqKXB0cjsgICAgICAgICAgLy8gZm9y IHRoaXMgY2FzdCB0byB1aW50MTZfdCogdG8gYmUgc2FmZS4KLSAgICAgICAgICAgICAjaWYgZGVm aW5lZChVU0lOR19ORU9OKQotICAgICAgICAgICAgICAgICB1aW50MTZ4NHgzX3QgdiA9IHt7Ci0r I2lmIF9fQklHX0VORElBTl9fCi0rICAgICAgICAgICAgICAgICAgICAodWludDE2eDRfdCljYXN0 PFUxNj4odG9fZml4ZWQociAqIDY1NTM1KSksCi0rICAgICAgICAgICAgICAgICAgICAodWludDE2 eDRfdCljYXN0PFUxNj4odG9fZml4ZWQoZyAqIDY1NTM1KSksCi0rICAgICAgICAgICAgICAgICAg ICAodWludDE2eDRfdCljYXN0PFUxNj4odG9fZml4ZWQoYiAqIDY1NTM1KSksCi0rI2Vsc2UKLSAg ICAgICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KXN3YXBfZW5kaWFuXzE2KGNhc3Q8VTE2Pih0 b19maXhlZChyICogNjU1MzUpKSksCi0gICAgICAgICAgICAgICAgICAgICAodWludDE2eDRfdClz d2FwX2VuZGlhbl8xNihjYXN0PFUxNj4odG9fZml4ZWQoZyAqIDY1NTM1KSkpLAotICAgICAgICAg ICAgICAgICAgICAgKHVpbnQxNng0X3Qpc3dhcF9lbmRpYW5fMTYoY2FzdDxVMTY+KHRvX2ZpeGVk KGIgKiA2NTUzNSkpKSwKLSsjZW5kaWYKLSAgICAgICAgICAgICAgICAgfX07Ci0gICAgICAgICAg ICAgICAgIHZzdDNfdTE2KHJnYiwgdik7Ci0gICAgICAgICAgICAgI2Vsc2UKLSsjaWYgX19CSUdf RU5ESUFOX18KLSsgICAgICAgICAgICAgICAgc3RvcmVfMyhyZ2IrMCwgY2FzdDxVMTY+KHRvX2Zp eGVkKHIgKiA2NTUzNSkpKTsKLSsgICAgICAgICAgICAgICAgc3RvcmVfMyhyZ2IrMSwgY2FzdDxV MTY+KHRvX2ZpeGVkKGcgKiA2NTUzNSkpKTsKLSsgICAgICAgICAgICAgICAgc3RvcmVfMyhyZ2Ir MiwgY2FzdDxVMTY+KHRvX2ZpeGVkKGIgKiA2NTUzNSkpKTsKLSsjZWxzZQotICAgICAgICAgICAg ICAgICBJMzIgUiA9IHRvX2ZpeGVkKHIgKiA2NTUzNSksCi0gICAgICAgICAgICAgICAgICAgICBH ID0gdG9fZml4ZWQoZyAqIDY1NTM1KSwKLSAgICAgICAgICAgICAgICAgICAgIEIgPSB0b19maXhl ZChiICogNjU1MzUpOwotICAgICAgICAgICAgICAgICBzdG9yZV8zKHJnYiswLCBjYXN0PFUxNj4o KFIgJiAweDAwZmYpIDw8IDggfCAoUiAmIDB4ZmYwMCkgPj4gOCkgKTsKLSAgICAgICAgICAgICAg ICAgc3RvcmVfMyhyZ2IrMSwgY2FzdDxVMTY+KChHICYgMHgwMGZmKSA8PCA4IHwgKEcgJiAweGZm MDApID4+IDgpICk7Ci0gICAgICAgICAgICAgICAgIHN0b3JlXzMocmdiKzIsIGNhc3Q8VTE2Pigo QiAmIDB4MDBmZikgPDwgOCB8IChCICYgMHhmZjAwKSA+PiA4KSApOwotKyNlbmRpZgotICAgICAg ICAgICAgICNlbmRpZgotIAotICAgICAgICAgICAgIH0gcmV0dXJuOwotQEAgLTExMDUsMTggKzEy NDYsMzMgQEAgc3RhdGljIHZvaWQgZXhlY19vcHMoY29uc3QgT3AqIG9wcywgY29uc3Qgdm9pZCoq IGFyZ3MsCi0gICAgICAgICAgICAgICAgIHVpbnQxNl90KiByZ2JhID0gKHVpbnQxNl90KilwdHI7 ICAgICAgICAvLyBmb3IgdGhpcyBjYXN0IHRvIHVpbnQxNl90KiB0byBiZSBzYWZlLgotICAgICAg ICAgICAgICNpZiBkZWZpbmVkKFVTSU5HX05FT04pCi0gICAgICAgICAgICAgICAgIHVpbnQxNng0 eDRfdCB2ID0ge3sKLSsjaWYgX19CSUdfRU5ESUFOX18KLSsgICAgICAgICAgICAgICAgICAgICh1 aW50MTZ4NF90KWNhc3Q8VTE2Pih0b19maXhlZChyICogNjU1MzUpKSwKLSsgICAgICAgICAgICAg ICAgICAgICh1aW50MTZ4NF90KWNhc3Q8VTE2Pih0b19maXhlZChnICogNjU1MzUpKSwKLSsgICAg ICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KWNhc3Q8VTE2Pih0b19maXhlZChiICogNjU1MzUp KSwKLSsgICAgICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KWNhc3Q8VTE2Pih0b19maXhlZChh ICogNjU1MzUpKSwKLSsjZWxzZQotICAgICAgICAgICAgICAgICAgICAgKHVpbnQxNng0X3Qpc3dh cF9lbmRpYW5fMTYoY2FzdDxVMTY+KHRvX2ZpeGVkKHIgKiA2NTUzNSkpKSwKLSAgICAgICAgICAg ICAgICAgICAgICh1aW50MTZ4NF90KXN3YXBfZW5kaWFuXzE2KGNhc3Q8VTE2Pih0b19maXhlZChn ICogNjU1MzUpKSksCi0gICAgICAgICAgICAgICAgICAgICAodWludDE2eDRfdClzd2FwX2VuZGlh bl8xNihjYXN0PFUxNj4odG9fZml4ZWQoYiAqIDY1NTM1KSkpLAotICAgICAgICAgICAgICAgICAg ICAgKHVpbnQxNng0X3Qpc3dhcF9lbmRpYW5fMTYoY2FzdDxVMTY+KHRvX2ZpeGVkKGEgKiA2NTUz NSkpKSwKLSsjZW5kaWYKLSAgICAgICAgICAgICAgICAgfX07Ci0gICAgICAgICAgICAgICAgIHZz dDRfdTE2KHJnYmEsIHYpOwotICAgICAgICAgICAgICNlbHNlCi0rI2lmIF9fQklHX0VORElBTl9f Ci0rICAgICAgICAgICAgICAgIFU2NCBweCA9IGNhc3Q8VTY0Pih0b19maXhlZChyICogNjU1MzUp KSA8PCA0OAotKyAgICAgICAgICAgICAgICAgICAgICAgfCBjYXN0PFU2ND4odG9fZml4ZWQoZyAq IDY1NTM1KSkgPDwgMzIKLSsgICAgICAgICAgICAgICAgICAgICAgIHwgY2FzdDxVNjQ+KHRvX2Zp eGVkKGIgKiA2NTUzNSkpIDw8IDE2Ci0rICAgICAgICAgICAgICAgICAgICAgICB8IGNhc3Q8VTY0 Pih0b19maXhlZChhICogNjU1MzUpKSA8PCAgMDsKLSsgICAgICAgICAgICAgICAgc3RvcmUocmdi YSwgcHgpOwotKyNlbHNlCi0gICAgICAgICAgICAgICAgIFU2NCBweCA9IGNhc3Q8VTY0Pih0b19m aXhlZChyICogNjU1MzUpKSA8PCAgMAotICAgICAgICAgICAgICAgICAgICAgICAgfCBjYXN0PFU2 ND4odG9fZml4ZWQoZyAqIDY1NTM1KSkgPDwgMTYKLSAgICAgICAgICAgICAgICAgICAgICAgIHwg Y2FzdDxVNjQ+KHRvX2ZpeGVkKGIgKiA2NTUzNSkpIDw8IDMyCi0gICAgICAgICAgICAgICAgICAg ICAgICB8IGNhc3Q8VTY0Pih0b19maXhlZChhICogNjU1MzUpKSA8PCA0ODsKLSAgICAgICAgICAg ICAgICAgc3RvcmUocmdiYSwgc3dhcF9lbmRpYW5fMTZ4NChweCkpOwotKyNlbmRpZgotICAgICAg ICAgICAgICNlbmRpZgotICAgICAgICAgICAgIH0gcmV0dXJuOwotIAotQEAgLTExNjAsMTAgKzEz MTYsMTcgQEAgc3RhdGljIHZvaWQgZXhlY19vcHMoY29uc3QgT3AqIG9wcywgY29uc3Qgdm9pZCoq IGFyZ3MsCi0gICAgICAgICAgICAgICAgIH19OwotICAgICAgICAgICAgICAgICB2c3Q0X3UxNihy Z2JhLCB2KTsKLSAgICAgICAgICAgICAjZWxzZQotKyNpZiBfX0JJR19FTkRJQU5fXwotKyAgICAg ICAgICAgICAgICBzdG9yZShyZ2JhLCBjYXN0PFU2ND4oUikgPDwgNDgKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgY2FzdDxVNjQ+KEcpIDw8IDMyCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICB8IGNhc3Q8VTY0PihCKSA8PCAxNgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgfCBj YXN0PFU2ND4oQSkgPDwgIDApOwotKyNlbHNlCi0gICAgICAgICAgICAgICAgIHN0b3JlKHJnYmEs IGNhc3Q8VTY0PihSKSA8PCAgMAotICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYXN0PFU2 ND4oRykgPDwgMTYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FzdDxVNjQ+KEIpIDw8 IDMyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhc3Q8VTY0PihBKSA8PCA0OCk7Ci0r I2VuZGlmCi0gICAgICAgICAgICAgI2VuZGlmCi0gCi0gICAgICAgICAgICAgfSByZXR1cm47Ci0t LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9j b21tb25fYXVkaW8vd2F2X2ZpbGUuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvd2VicnRjL2NvbW1vbl9hdWRpby93YXZfZmlsZS5jYwotQEAgLTkz LDEzICs5MywxNSBAQCBzaXplX3QgV2F2UmVhZGVyOjpudW1fc2FtcGxlcygpIGNvbnN0IHsKLSB9 Ci0gCi0gc2l6ZV90IFdhdlJlYWRlcjo6UmVhZFNhbXBsZXMoc2l6ZV90IG51bV9zYW1wbGVzLCBp bnQxNl90KiBzYW1wbGVzKSB7Ci0tI2lmbmRlZiBXRUJSVENfQVJDSF9MSVRUTEVfRU5ESUFOCi0t I2Vycm9yICJOZWVkIHRvIGNvbnZlcnQgc2FtcGxlcyB0byBiaWctZW5kaWFuIHdoZW4gcmVhZGlu ZyBmcm9tIFdBViBmaWxlIgotLSNlbmRpZgotICAgLy8gVGhlcmUgY291bGQgYmUgbWV0YWRhdGEg YWZ0ZXIgdGhlIGF1ZGlvOyBlbnN1cmUgd2UgZG9uJ3QgcmVhZCBpdC4KLSAgIG51bV9zYW1wbGVz ID0gc3RkOjptaW4obnVtX3NhbXBsZXMsIG51bV9zYW1wbGVzX3JlbWFpbmluZ18pOwotICAgY29u c3Qgc2l6ZV90IHJlYWQgPQotICAgICAgIGZyZWFkKHNhbXBsZXMsIHNpemVvZigqc2FtcGxlcyks IG51bV9zYW1wbGVzLCBmaWxlX2hhbmRsZV8pOwotKyNpZm5kZWYgV0VCUlRDX0FSQ0hfTElUVExF X0VORElBTgotKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWFkOyBpKyspIHsKLSsgICAgICBz YW1wbGVzW2ldID0gX19idWlsdGluX2Jzd2FwMTYoc2FtcGxlc1tpXSk7Ci0rICB9Ci0rI2VuZGlm Ci0gICAvLyBJZiB3ZSBkaWRuJ3QgcmVhZCB3aGF0IHdhcyByZXF1ZXN0ZWQsIGVuc3VyZSB3ZSd2 ZSByZWFjaGVkIHRoZSBFT0YuCi0gICBSVENfQ0hFQ0socmVhZCA9PSBudW1fc2FtcGxlcyB8fCBm ZW9mKGZpbGVfaGFuZGxlXykpOwotICAgUlRDX0NIRUNLX0xFKHJlYWQsIG51bV9zYW1wbGVzX3Jl bWFpbmluZ18pOwotQEAgLTE3OCwxMyArMTgwLDI2IEBAIHNpemVfdCBXYXZXcml0ZXI6Om51bV9z YW1wbGVzKCkgY29uc3QgewotIAotIHZvaWQgV2F2V3JpdGVyOjpXcml0ZVNhbXBsZXMoY29uc3Qg aW50MTZfdCogc2FtcGxlcywgc2l6ZV90IG51bV9zYW1wbGVzKSB7Ci0gI2lmbmRlZiBXRUJSVENf QVJDSF9MSVRUTEVfRU5ESUFOCi0tI2Vycm9yICJOZWVkIHRvIGNvbnZlcnQgc2FtcGxlcyB0byBs aXR0bGUtZW5kaWFuIHdoZW4gd3JpdGluZyB0byBXQVYgZmlsZSIKLS0jZW5kaWYKLSsgIHN0YXRp YyBjb25zdCBzaXplX3Qga0NodW5rc2l6ZSA9IDQwOTYgLyBzaXplb2YodWludDE2X3QpOwotKyAg Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1fc2FtcGxlczsgaSArPSBrQ2h1bmtzaXplKSB7Ci0r ICAgIGludDE2X3QgaXNhbXBsZXNba0NodW5rc2l6ZV07Ci0rICAgIGNvbnN0IHNpemVfdCBjaHVu ayA9IHN0ZDo6bWluKGtDaHVua3NpemUsIG51bV9zYW1wbGVzIC0gaSk7Ci0rICAgIGZvciAoc2l6 ZV90IGogPSAwOyBqIDwgY2h1bms7IGorKykgewotKyAgICAgIGlzYW1wbGVzW2pdID0gX19idWls dGluX2Jzd2FwMTYoc2FtcGxlc1tpICsgal0pOwotKyAgICB9Ci0rICAgIGNvbnN0IHNpemVfdCB3 cml0dGVuID0KLSsgICAgICAgIGZ3cml0ZShpc2FtcGxlcywgc2l6ZW9mKCppc2FtcGxlcyksIGNo dW5rLCBmaWxlX2hhbmRsZV8pOwotKyAgICBSVENfQ0hFQ0tfRVEoY2h1bmssIHdyaXR0ZW4pOwot KyAgICBudW1fc2FtcGxlc18gKz0gd3JpdHRlbjsKLSsgICAgUlRDX0NIRUNLKG51bV9zYW1wbGVz XyA+PSB3cml0dGVuKTsgIC8vIGRldGVjdCBzaXplX3Qgb3ZlcmZsb3cKLSsgIH0KLSsjZWxzZQot ICAgY29uc3Qgc2l6ZV90IHdyaXR0ZW4gPQotICAgICAgIGZ3cml0ZShzYW1wbGVzLCBzaXplb2Yo KnNhbXBsZXMpLCBudW1fc2FtcGxlcywgZmlsZV9oYW5kbGVfKTsKLSAgIFJUQ19DSEVDS19FUShu dW1fc2FtcGxlcywgd3JpdHRlbik7Ci0gICBudW1fc2FtcGxlc18gKz0gd3JpdHRlbjsKLSAgIFJU Q19DSEVDSyhudW1fc2FtcGxlc18gPj0gd3JpdHRlbik7ICAvLyBkZXRlY3Qgc2l6ZV90IG92ZXJm bG93Ci0rI2VuZGlmCi0gfQotIAotIHZvaWQgV2F2V3JpdGVyOjpXcml0ZVNhbXBsZXMoY29uc3Qg ZmxvYXQqIHNhbXBsZXMsIHNpemVfdCBudW1fc2FtcGxlcykgewotLS0tIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvY29tbW9uX2F1ZGlvL3dhdl9o ZWFkZXIuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvd2VicnRjL2NvbW1vbl9hdWRpby93YXZfaGVhZGVyLmNjCi1AQCAtODYsNyArODYsMjYgQEAg c3RhdGljIGlubGluZSBzdGQ6OnN0cmluZyBSZWFkRm91ckNDKHVpbnQzMl90IHgpIHsKLSAgIHJl dHVybiBzdGQ6OnN0cmluZyhyZWludGVycHJldF9jYXN0PGNoYXIqPigmeCksIDQpOwotIH0KLSAj ZWxzZQotLSNlcnJvciAiV3JpdGUgYmUtdG8tbGUgY29udmVyc2lvbiBmdW5jdGlvbnMiCi0rc3Rh dGljIGlubGluZSB2b2lkIFdyaXRlTEUxNih1aW50MTZfdCogZiwgdWludDE2X3QgeCkgewotKyAg KmYgPSBfX2J1aWx0aW5fYnN3YXAxNih4KTsKLSt9Ci0rc3RhdGljIGlubGluZSB2b2lkIFdyaXRl TEUzMih1aW50MzJfdCogZiwgdWludDMyX3QgeCkgewotKyAgKmYgPSBfX2J1aWx0aW5fYnN3YXAz Mih4KTsKLSt9Ci0rc3RhdGljIGlubGluZSB2b2lkIFdyaXRlRm91ckNDKHVpbnQzMl90KiBmLCBj aGFyIGEsIGNoYXIgYiwgY2hhciBjLCBjaGFyIGQpIHsKLSsgICpmID0gc3RhdGljX2Nhc3Q8dWlu dDMyX3Q+KGQpIHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGMpIDw8IDggfAotKyAgICAgICBzdGF0 aWNfY2FzdDx1aW50MzJfdD4oYikgPDwgMTYgfCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYSkgPDwg MjQ7Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgdWludDE2X3QgUmVhZExFMTYodWludDE2X3QgeCkg ewotKyAgcmV0dXJuIF9fYnVpbHRpbl9ic3dhcDE2KHgpOwotK30KLStzdGF0aWMgaW5saW5lIHVp bnQzMl90IFJlYWRMRTMyKHVpbnQzMl90IHgpIHsKLSsgIHJldHVybiBfX2J1aWx0aW5fYnN3YXAz Mih4KTsKLSt9Ci0rc3RhdGljIGlubGluZSBzdGQ6OnN0cmluZyBSZWFkRm91ckNDKHVpbnQzMl90 IHgpIHsKLSsgIHJldHVybiBzdGQ6OnN0cmluZyhyZWludGVycHJldF9jYXN0PGNoYXIqPigmeCks IDQpOwotK30KLSAjZW5kaWYKLSAKLSBzdGF0aWMgaW5saW5lIHVpbnQzMl90IFJpZmZDaHVua1Np emUoc2l6ZV90IGJ5dGVzX2luX3BheWxvYWQpIHsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdWkvYXVyYS9tdXMvb3NfZXhjaGFuZ2VfZGF0YV9wcm92aWRlcl9tdXMuY2MK LSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdWkvYXVyYS9tdXMvb3NfZXhj aGFuZ2VfZGF0YV9wcm92aWRlcl9tdXMuY2MKLUBAIC0xNCw2ICsxNCw3IEBACi0gI2luY2x1ZGUg ImJhc2Uvc3RyaW5ncy9zdHJpbmdfc3BsaXQuaCIKLSAjaW5jbHVkZSAiYmFzZS9zdHJpbmdzL3N0 cmluZ191dGlsLmgiCi0gI2luY2x1ZGUgImJhc2Uvc3RyaW5ncy91dGZfc3RyaW5nX2NvbnZlcnNp b25zLmgiCi0rI2luY2x1ZGUgImJhc2Uvc3lzX2J5dGVvcmRlci5oIgotICNpbmNsdWRlICJuZXQv YmFzZS9maWxlbmFtZV91dGlsLmgiCi0gI2luY2x1ZGUgInVpL2Jhc2UvY2xpcGJvYXJkL2NsaXBi b2FyZF9jb25zdGFudHMuaCIKLSAjaW5jbHVkZSAidWkvYmFzZS9jbGlwYm9hcmQvY2xpcGJvYXJk X2Zvcm1hdF90eXBlLmgiCi1AQCAtMjc5LDggKzI4MCwxMyBAQCB2b2lkIE9TRXhjaGFuZ2VEYXRh UHJvdmlkZXJNdXM6OlNldEh0bWwoY29uc3QgYmFzZTo6c3RyaW5nMTYmIGh0bWwsCi0gICBzdGQ6 OnZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBieXRlczsKLSAgIC8vIE1hbnVhbGx5IGphbSBhIFVURjE2 IEJPTSBpbnRvIGJ5dGVzIGJlY2F1c2Ugb3RoZXJ3aXNlLCBvdGhlciBwcm9ncmFtcyB3aWxsCi0g ICAvLyBhc3N1bWUgVVRGLTguCi0rI2lmIGRlZmluZWQoQVJDSF9DUFVfTElUVExFX0VORElBTikK LSAgIGJ5dGVzLnB1c2hfYmFjaygweEZGKTsKLSAgIGJ5dGVzLnB1c2hfYmFjaygweEZFKTsKLSsj ZWxzZQotKyAgYnl0ZXMucHVzaF9iYWNrKDB4RkUpOwotKyAgYnl0ZXMucHVzaF9iYWNrKDB4RkYp OwotKyNlbmRpZgotICAgQWRkU3RyaW5nMTZUb1ZlY3RvcihodG1sLCAmYnl0ZXMpOwotICAgbWlt ZV9kYXRhX1t1aTo6a01pbWVUeXBlSFRNTF0gPSBieXRlczsKLSB9Ci0tLS0gcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3VpL2Jhc2UvcmVzb3VyY2UvZGF0YV9wYWNrLmNjCi0rKysg cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VpL2Jhc2UvcmVzb3VyY2UvZGF0YV9w YWNrLmNjCi1AQCAtMTU0LDE2ICsxNTQsNDIgQEAgY2xhc3MgU2NvcGVkRmlsZVdyaXRlciB7Ci0g ICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oU2NvcGVkRmlsZVdyaXRlcik7Ci0gfTsKLSAKLStz dGF0aWMgaW5saW5lIHVpbnQxNl90IGJ5dGVzd2FwKHVpbnQxNl90IHYpIHsgcmV0dXJuIF9fYnVp bHRpbl9ic3dhcDE2KHYpOyB9Ci0rc3RhdGljIGlubGluZSB1aW50MzJfdCBieXRlc3dhcCh1aW50 MzJfdCB2KSB7IHJldHVybiBfX2J1aWx0aW5fYnN3YXAzMih2KTsgfQotKwotK3RlbXBsYXRlPGNs YXNzIFQ+IGNsYXNzIGJ5dGVzd2FwcGVkX3QgewotK3ByaXZhdGU6Ci0rICBUIHZhbHVlOwotK3B1 YmxpYzoKLSsgIGlubGluZSBieXRlc3dhcHBlZF90KFQgdikgOiB2YWx1ZShieXRlc3dhcCh2KSkg eyB9Ci0rICBpbmxpbmUgVCBvcGVyYXRvcj0oVCB2KSB7IHZhbHVlID0gYnl0ZXN3YXAodik7IHJl dHVybiB2OyB9Ci0rICBpbmxpbmUgVCBvcGVyYXRvcis9KFQgdikgeyB2ICs9IGJ5dGVzd2FwKHZh bHVlKTsgdmFsdWUgPSBieXRlc3dhcCh2KTsgcmV0dXJuIHY7IH0KLSsgIGlubGluZSBvcGVyYXRv ciBUKCkgY29uc3QgeyByZXR1cm4gYnl0ZXN3YXAodmFsdWUpOyB9Ci0rfTsKLSsKLSsjaWYgIWRl ZmluZWQoQVJDSF9DUFVfTElUVExFX0VORElBTikKLSsKLSt0eXBlZGVmIGJ5dGVzd2FwcGVkX3Q8 dWludDE2X3Q+IHVpbnQxNmxlX3Q7Ci0rdHlwZWRlZiBieXRlc3dhcHBlZF90PHVpbnQzMl90PiB1 aW50MzJsZV90OwotKwotKyNlbHNlCi0rCi0rdHlwZWRlZiB1aW50MTZfdCB1aW50MTZsZV90Owot K3R5cGVkZWYgdWludDMyX3QgdWludDMybGVfdDsKLSsKLSsjZW5kaWYKLSsKLSB9ICAvLyBuYW1l c3BhY2UKLSAKLSBuYW1lc3BhY2UgdWkgewotIAotICNwcmFnbWEgcGFjayhwdXNoLCAyKQotIHN0 cnVjdCBEYXRhUGFjazo6RW50cnkgewotLSAgdWludDE2X3QgcmVzb3VyY2VfaWQ7Ci0tICB1aW50 MzJfdCBmaWxlX29mZnNldDsKLSsgIHVpbnQxNmxlX3QgcmVzb3VyY2VfaWQ7Ci0rICB1aW50MzJs ZV90IGZpbGVfb2Zmc2V0OwotIAotICAgc3RhdGljIGludCBDb21wYXJlQnlJZChjb25zdCB2b2lk KiB2b2lkX2tleSwgY29uc3Qgdm9pZCogdm9pZF9lbnRyeSkgewotKyAgICAvLyBLZXkgaXMgaG9z dCBlbmRpYW4KLSAgICAgdWludDE2X3Qga2V5ID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu dDE2X3QqPih2b2lkX2tleSk7Ci0gICAgIGNvbnN0IEVudHJ5KiBlbnRyeSA9IHJlaW50ZXJwcmV0 X2Nhc3Q8Y29uc3QgRW50cnkqPih2b2lkX2VudHJ5KTsKLSAgICAgcmV0dXJuIGtleSAtIGVudHJ5 LT5yZXNvdXJjZV9pZDsKLUBAIC0xNzEsMTAgKzE5NywxMSBAQCBzdHJ1Y3QgRGF0YVBhY2s6OkVu dHJ5IHsKLSB9OwotIAotIHN0cnVjdCBEYXRhUGFjazo6QWxpYXMgewotLSAgdWludDE2X3QgcmVz b3VyY2VfaWQ7Ci0tICB1aW50MTZfdCBlbnRyeV9pbmRleDsKLSsgIHVpbnQxNmxlX3QgcmVzb3Vy Y2VfaWQ7Ci0rICB1aW50MTZsZV90IGVudHJ5X2luZGV4OwotIAotICAgc3RhdGljIGludCBDb21w YXJlQnlJZChjb25zdCB2b2lkKiB2b2lkX2tleSwgY29uc3Qgdm9pZCogdm9pZF9lbnRyeSkgewot KyAgICAvLyBLZXkgaXMgaG9zdCBlbmRpYW4KLSAgICAgdWludDE2X3Qga2V5ID0gKnJlaW50ZXJw cmV0X2Nhc3Q8Y29uc3QgdWludDE2X3QqPih2b2lkX2tleSk7Ci0gICAgIGNvbnN0IEFsaWFzKiBl bnRyeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQWxpYXMqPih2b2lkX2VudHJ5KTsKLSAgICAg cmV0dXJuIGtleSAtIGVudHJ5LT5yZXNvdXJjZV9pZDsKLUBAIC0yODQsNyArMzExLDcgQEAgYm9v bCBEYXRhUGFjazo6TG9hZEltcGwoc3RkOjp1bmlxdWVfcHRyPERhdGFQYWNrOjpEYXRhU291cmNl PiBkYXRhX3NvdXJjZSkgewotICAgLy8gUGFyc2UgdGhlIHZlcnNpb24gYW5kIGNoZWNrIGZvciB0 cnVuY2F0ZWQgaGVhZGVyLgotICAgdWludDMyX3QgdmVyc2lvbiA9IDA7Ci0gICBpZiAoZGF0YV9s ZW5ndGggPiBzaXplb2YodmVyc2lvbikpCi0tICAgIHZlcnNpb24gPSByZWludGVycHJldF9jYXN0 PGNvbnN0IHVpbnQzMl90Kj4oZGF0YSlbMF07Ci0rICAgIHZlcnNpb24gPSByZWludGVycHJldF9j YXN0PGNvbnN0IHVpbnQzMmxlX3QqPihkYXRhKVswXTsKLSAgIHNpemVfdCBoZWFkZXJfbGVuZ3Ro ID0KLSAgICAgICB2ZXJzaW9uID09IGtGaWxlRm9ybWF0VjQgPyBrSGVhZGVyTGVuZ3RoVjQgOiBr SGVhZGVyTGVuZ3RoVjU7Ci0gICBpZiAodmVyc2lvbiA9PSAwIHx8IGRhdGFfbGVuZ3RoIDwgaGVh ZGVyX2xlbmd0aCkgewotQEAgLTI5NSwxNCArMzIyLDE0IEBAIGJvb2wgRGF0YVBhY2s6OkxvYWRJ bXBsKHN0ZDo6dW5pcXVlX3B0cjxEYXRhUGFjazo6RGF0YVNvdXJjZT4gZGF0YV9zb3VyY2UpIHsK LSAKLSAgIC8vIFBhcnNlIHRoZSBoZWFkZXIgb2YgdGhlIGZpbGUuCi0gICBpZiAodmVyc2lvbiA9 PSBrRmlsZUZvcm1hdFY0KSB7Ci0tICAgIHJlc291cmNlX2NvdW50XyA9IHJlaW50ZXJwcmV0X2Nh c3Q8Y29uc3QgdWludDMyX3QqPihkYXRhKVsxXTsKLSsgICAgcmVzb3VyY2VfY291bnRfID0gcmVp bnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJsZV90Kj4oZGF0YSlbMV07Ci0gICAgIGFsaWFzX2Nv dW50XyA9IDA7Ci0gICAgIHRleHRfZW5jb2RpbmdfdHlwZV8gPSBzdGF0aWNfY2FzdDxUZXh0RW5j b2RpbmdUeXBlPihkYXRhWzhdKTsKLSAgIH0gZWxzZSBpZiAodmVyc2lvbiA9PSBrRmlsZUZvcm1h dFY1KSB7Ci0gICAgIC8vIFZlcnNpb24gNSBhZGRlZCB0aGUgYWxpYXMgdGFibGUgYW5kIGNoYW5n ZWQgdGhlIGhlYWRlciBmb3JtYXQuCi0gICAgIHRleHRfZW5jb2RpbmdfdHlwZV8gPSBzdGF0aWNf Y2FzdDxUZXh0RW5jb2RpbmdUeXBlPihkYXRhWzRdKTsKLS0gICAgcmVzb3VyY2VfY291bnRfID0g cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MTZfdCo+KGRhdGEpWzRdOwotLSAgICBhbGlhc19j b3VudF8gPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90Kj4oZGF0YSlbNV07Ci0rICAg IHJlc291cmNlX2NvdW50XyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDE2bGVfdCo+KGRh dGEpWzRdOwotKyAgICBhbGlhc19jb3VudF8gPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQx NmxlX3QqPihkYXRhKVs1XTsKLSAgIH0gZWxzZSB7Ci0gICAgIExPRyhFUlJPUikgPDwgIkJhZCBk YXRhIHBhY2sgdmVyc2lvbjogZ290ICIgPDwgdmVyc2lvbiA8PCAiLCBleHBlY3RlZCAiCi0gICAg ICAgICAgICAgICAgPDwga0ZpbGVGb3JtYXRWNCA8PCAiIG9yICIgPDwga0ZpbGVGb3JtYXRWNTsK LUBAIC00NDcsOSArNDc0LDYgQEAgdm9pZCBEYXRhUGFjazo6Q2hlY2tGb3JEdXBsaWNhdGVSZXNv dXJjZXMoCi0gYm9vbCBEYXRhUGFjazo6V3JpdGVQYWNrKGNvbnN0IGJhc2U6OkZpbGVQYXRoJiBw YXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6Om1hcDx1aW50MTZfdCwg YmFzZTo6U3RyaW5nUGllY2U+JiByZXNvdXJjZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg IFRleHRFbmNvZGluZ1R5cGUgdGV4dF9lbmNvZGluZ190eXBlKSB7Ci0tI2lmICFkZWZpbmVkKEFS Q0hfQ1BVX0xJVFRMRV9FTkRJQU4pCi0tI2Vycm9yICJkYXRhcGFjayBhc3N1bWVzIGxpdHRsZSBl bmRpYW4iCi0tI2VuZGlmCi0gICBpZiAodGV4dF9lbmNvZGluZ190eXBlICE9IFVURjggJiYgdGV4 dF9lbmNvZGluZ190eXBlICE9IFVURjE2ICYmCi0gICAgICAgdGV4dF9lbmNvZGluZ190eXBlICE9 IEJJTkFSWSkgewotICAgICBMT0coRVJST1IpIDw8ICJJbnZhbGlkIHRleHQgZW5jb2RpbmcgdHlw ZSwgZ290ICIgPDwgdGV4dF9lbmNvZGluZ190eXBlCi1AQCAtNDY3LDcgKzQ5MSw3IEBAIGJvb2wg RGF0YVBhY2s6OldyaXRlUGFjayhjb25zdCBiYXNlOjpGaWxlUGF0aCYgcGF0aCwKLSAgIGlmICgh ZmlsZS52YWxpZCgpKQotICAgICByZXR1cm4gZmFsc2U7Ci0gCi0tICB1aW50MzJfdCBlbmNvZGlu ZyA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pih0ZXh0X2VuY29kaW5nX3R5cGUpOwotKyAgdWludDMy bGVfdCBlbmNvZGluZyA9IHN0YXRpY19jYXN0PHVpbnQzMmxlX3Q+KHRleHRfZW5jb2RpbmdfdHlw ZSk7Ci0gCi0gICAvLyBCdWlsZCBhIGxpc3Qgb2YgZmluYWwgcmVzb3VyY2UgYWxpYXNlcywgYW5k IGFuIGFsaWFzIG1hcCBhdCB0aGUgc2FtZSB0aW1lLgotICAgc3RkOjp2ZWN0b3I8dWludDE2X3Q+ IHJlc291cmNlX2lkczsKLUBAIC00OTQsMTMgKzUxOCwxNCBAQCBib29sIERhdGFQYWNrOjpXcml0 ZVBhY2soY29uc3QgYmFzZTo6RmlsZVBhdGgmIHBhdGgsCi0gCi0gICAvLyBUaGVzZSB2YWx1ZXMg YXJlIGd1YXJhbnRlZWQgdG8gZml0IGluIGEgdWludDE2X3QgZHVlIHRvIHRoZSBlYXJsaWVyCi0g ICAvLyBjaGVjayBvZiB8cmVzb3VyY2VzX2NvdW50fC4KLS0gIGNvbnN0IHVpbnQxNl90IGFsaWFz X2NvdW50ID0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KGFsaWFzZXMuc2l6ZSgpKTsKLS0gIGNvbnN0 IHVpbnQxNl90IGVudHJ5X2NvdW50ID0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHJlc291cmNlX2lk cy5zaXplKCkpOwotKyAgY29uc3QgdWludDE2bGVfdCBhbGlhc19jb3VudCA9IHN0YXRpY19jYXN0 PHVpbnQxNmxlX3Q+KGFsaWFzZXMuc2l6ZSgpKTsKLSsgIGNvbnN0IHVpbnQxNmxlX3QgZW50cnlf Y291bnQgPSBzdGF0aWNfY2FzdDx1aW50MTZsZV90PihyZXNvdXJjZV9pZHMuc2l6ZSgpKTsKLSAg IERDSEVDS19FUShzdGF0aWNfY2FzdDxzaXplX3Q+KGVudHJ5X2NvdW50KSArIHN0YXRpY19jYXN0 PHNpemVfdD4oYWxpYXNfY291bnQpLAotICAgICAgICAgICAgIHJlc291cmNlc19jb3VudCk7Ci0g Ci0tICBmaWxlLldyaXRlKCZrRmlsZUZvcm1hdFY1LCBzaXplb2Yoa0ZpbGVGb3JtYXRWNSkpOwot LSAgZmlsZS5Xcml0ZSgmZW5jb2RpbmcsIHNpemVvZih1aW50MzJfdCkpOwotKyAgdWludDMybGVf dCB2ZXJzaW9uID0ga0ZpbGVGb3JtYXRWNTsKLSsgIGZpbGUuV3JpdGUoJnZlcnNpb24sIHNpemVv Zih2ZXJzaW9uKSk7Ci0rICBmaWxlLldyaXRlKCZlbmNvZGluZywgc2l6ZW9mKHVpbnQzMmxlX3Qp KTsKLSAgIGZpbGUuV3JpdGUoJmVudHJ5X2NvdW50LCBzaXplb2YoZW50cnlfY291bnQpKTsKLSAg IGZpbGUuV3JpdGUoJmFsaWFzX2NvdW50LCBzaXplb2YoYWxpYXNfY291bnQpKTsKLSAKLUBAIC01 MDgsOCArNTMzLDggQEAgYm9vbCBEYXRhUGFjazo6V3JpdGVQYWNrKGNvbnN0IGJhc2U6OkZpbGVQ YXRoJiBwYXRoLAotICAgLy8gbGFzdCBpdGVtIHNvIHdlIGNhbiBjb21wdXRlIHRoZSBzaXplIG9m IHRoZSBsaXN0IGl0ZW0uCi0gICBjb25zdCB1aW50MzJfdCBpbmRleF9sZW5ndGggPSAoZW50cnlf Y291bnQgKyAxKSAqIHNpemVvZihFbnRyeSk7Ci0gICBjb25zdCB1aW50MzJfdCBhbGlhc190YWJs ZV9sZW5ndGggPSBhbGlhc19jb3VudCAqIHNpemVvZihBbGlhcyk7Ci0tICB1aW50MzJfdCBkYXRh X29mZnNldCA9IGtIZWFkZXJMZW5ndGhWNSArIGluZGV4X2xlbmd0aCArIGFsaWFzX3RhYmxlX2xl bmd0aDsKLS0gIGZvciAoY29uc3QgdWludDE2X3QgcmVzb3VyY2VfaWQgOiByZXNvdXJjZV9pZHMp IHsKLSsgIHVpbnQzMmxlX3QgZGF0YV9vZmZzZXQgPSBrSGVhZGVyTGVuZ3RoVjUgKyBpbmRleF9s ZW5ndGggKyBhbGlhc190YWJsZV9sZW5ndGg7Ci0rICBmb3IgKGNvbnN0IHVpbnQxNmxlX3QgcmVz b3VyY2VfaWQgOiByZXNvdXJjZV9pZHMpIHsKLSAgICAgZmlsZS5Xcml0ZSgmcmVzb3VyY2VfaWQs IHNpemVvZihyZXNvdXJjZV9pZCkpOwotICAgICBmaWxlLldyaXRlKCZkYXRhX29mZnNldCwgc2l6 ZW9mKGRhdGFfb2Zmc2V0KSk7Ci0gICAgIGRhdGFfb2Zmc2V0ICs9IHJlc291cmNlcy5maW5kKHJl c291cmNlX2lkKS0+c2Vjb25kLmxlbmd0aCgpOwotQEAgLTUxNywxMyArNTQyLDEzIEBAIGJvb2wg RGF0YVBhY2s6OldyaXRlUGFjayhjb25zdCBiYXNlOjpGaWxlUGF0aCYgcGF0aCwKLSAKLSAgIC8v IFdlIHBsYWNlIGFuIGV4dHJhIGVudHJ5IGFmdGVyIHRoZSBsYXN0IGl0ZW0gdGhhdCBhbGxvd3Mg dXMgdG8gcmVhZCB0aGUKLSAgIC8vIHNpemUgb2YgdGhlIGxhc3QgaXRlbS4KLS0gIGNvbnN0IHVp bnQxNl90IHJlc291cmNlX2lkID0gMDsKLSsgIGNvbnN0IHVpbnQxNmxlX3QgcmVzb3VyY2VfaWQg PSAwOwotICAgZmlsZS5Xcml0ZSgmcmVzb3VyY2VfaWQsIHNpemVvZihyZXNvdXJjZV9pZCkpOwot ICAgZmlsZS5Xcml0ZSgmZGF0YV9vZmZzZXQsIHNpemVvZihkYXRhX29mZnNldCkpOwotIAotICAg Ly8gV3JpdGUgdGhlIGFsaWFzZXMgdGFibGUsIGlmIGFueS4gTm90ZTogfGFsaWFzZXN8IGlzIGFu IHN0ZDo6bWFwLAotICAgLy8gZW5zdXJpbmcgdmFsdWVzIGFyZSB3cml0dGVuIGluIGluY3JlYXNp bmcgb3JkZXIuCi0tICBmb3IgKGNvbnN0IHN0ZDo6cGFpcjx1aW50MTZfdCwgdWludDE2X3Q+JiBh bGlhcyA6IGFsaWFzZXMpIHsKLSsgIGZvciAoY29uc3Qgc3RkOjpwYWlyPHVpbnQxNmxlX3QsIHVp bnQxNmxlX3Q+IGFsaWFzIDogYWxpYXNlcykgewotICAgICBmaWxlLldyaXRlKCZhbGlhcywgc2l6 ZW9mKGFsaWFzKSk7Ci0gICB9Ci0gCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3VpL2Jhc2UvcmVzb3VyY2UvZGF0YV9wYWNrLmNjLm9yaWcKLSsrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdWkvYmFzZS9yZXNvdXJjZS9kYXRhX3BhY2suY2Mub3JpZwot QEAgLTM4MiwxMiArMzgyLDYgQEAgYm9vbCBEYXRhUGFjazo6SGFzUmVzb3VyY2UodWludDE2X3Qg cmVzb3VyY2VfaWQpIGNvbnN0IHsKLSAKLSBib29sIERhdGFQYWNrOjpHZXRTdHJpbmdQaWVjZSh1 aW50MTZfdCByZXNvdXJjZV9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNl OjpTdHJpbmdQaWVjZSogZGF0YSkgY29uc3QgewotLSAgLy8gSXQgd29uJ3QgYmUgaGFyZCB0byBt YWtlIHRoaXMgZW5kaWFuLWFnbm9zdGljLCBidXQgaXQncyBub3Qgd29ydGgKLS0gIC8vIGJvdGhl cmluZyB0byBkbyByaWdodCBub3cuCi0tI2lmICFkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRMRV9FTkRJ QU4pCi0tI2Vycm9yICJkYXRhcGFjayBhc3N1bWVzIGxpdHRsZSBlbmRpYW4iCi0tI2VuZGlmCi0t Ci0gICBjb25zdCBFbnRyeSogdGFyZ2V0ID0gTG9va3VwRW50cnlCeUlkKHJlc291cmNlX2lkKTsK LSAgIGlmICghdGFyZ2V0KQotICAgICByZXR1cm4gZmFsc2U7Ci0tLS0gcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3VpL2dmeC9jb2RlYy9qcGVnX2NvZGVjLmNjCi0rKysgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VpL2dmeC9jb2RlYy9qcGVnX2NvZGVjLmNjCi1A QCAtMjEyLDExICsyMTIsMTEgQEAgYm9vbCBKUEVHQ29kZWM6OkRlY29kZShjb25zdCB1bnNpZ25l ZCBjaGFyKiBpbnB1dCwgc2l6ZV90IGlucHV0X3NpemUsCi0gICAgICAgLy8gdXNlZCBieSBDaHJv bWl1bSAoaS5lLiBSR0JBIGFuZCBCR1JBKSBhbmQgd2UganVzdCBtYXAgdGhlIGlucHV0Ci0gICAg ICAgLy8gcGFyYW1ldGVycyB0byBhIGNvbG9yc3BhY2UuCi0gICAgICAgaWYgKGZvcm1hdCA9PSBG T1JNQVRfUkdCQSB8fAotLSAgICAgICAgICAoZm9ybWF0ID09IEZPUk1BVF9Ta0JpdG1hcCAmJiBT S19SMzJfU0hJRlQgPT0gMCkpIHsKLSsgICAgICAgICAgKGZvcm1hdCA9PSBGT1JNQVRfU2tCaXRt YXAgJiYgU0tfUE1DT0xPUl9CWVRFX09SREVSKFIsIEcsIEIsIEEpKSkgewotICAgICAgICAgY2lu Zm8tPm91dF9jb2xvcl9zcGFjZSA9IEpDU19FWFRfUkdCWDsKLSAgICAgICAgIGNpbmZvLT5vdXRw dXRfY29tcG9uZW50cyA9IDQ7Ci0gICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT0gRk9STUFUX0JH UkEgfHwKLS0gICAgICAgICAgICAgICAgIChmb3JtYXQgPT0gRk9STUFUX1NrQml0bWFwICYmIFNL X0IzMl9TSElGVCA9PSAwKSkgewotKyAgICAgICAgICAgICAgICAgKGZvcm1hdCA9PSBGT1JNQVRf U2tCaXRtYXAgJiYgU0tfUE1DT0xPUl9CWVRFX09SREVSKEIsIEcsIFIsIEEpKSkgewotICAgICAg ICAgY2luZm8tPm91dF9jb2xvcl9zcGFjZSA9IEpDU19FWFRfQkdSWDsKLSAgICAgICAgIGNpbmZv LT5vdXRwdXRfY29tcG9uZW50cyA9IDQ7Ci0gICAgICAgfSBlbHNlIHsKLS0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdWkvZ2Z4L2NvZGVjL3BuZ19jb2RlYy5jYwotKysrIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91aS9nZngvY29kZWMvcG5nX2NvZGVjLmNj Ci1AQCAtMTY5LDYgKzE2OSwxMCBAQCB2b2lkIERlY29kZUluZm9DYWxsYmFjayhwbmdfc3RydWN0 KiBwbmdfcHRyLCBwbmdfaW5mbyogaW5mb19wdHIpIHsKLSAgICAgICAgIHBuZ19zZXRfYmdyKHBu Z19wdHIpOwotICAgICAgICAgcG5nX3NldF9hZGRfYWxwaGEocG5nX3B0ciwgMHhGRiwgUE5HX0ZJ TExFUl9BRlRFUik7Ci0gICAgICAgICBicmVhazsKLSsgICAgICBjYXNlIFBOR0NvZGVjOjpGT1JN QVRfQVJHQjoKLSsgICAgICAgIHN0YXRlLT5vdXRwdXRfY2hhbm5lbHMgPSA0OwotKyAgICAgICAg cG5nX3NldF9hZGRfYWxwaGEocG5nX3B0ciwgMHhGRiwgUE5HX0ZJTExFUl9CRUZPUkUpOwotKyAg ICAgICAgYnJlYWs7Ci0gICAgICAgY2FzZSBQTkdDb2RlYzo6Rk9STUFUX1NrQml0bWFwOgotICAg ICAgICAgc3RhdGUtPm91dHB1dF9jaGFubmVscyA9IDQ7Ci0gICAgICAgICBwbmdfc2V0X2FkZF9h bHBoYShwbmdfcHRyLCAweEZGLCBQTkdfRklMTEVSX0FGVEVSKTsKLUBAIC0xODMsNiArMTg3LDEw IEBAIHZvaWQgRGVjb2RlSW5mb0NhbGxiYWNrKHBuZ19zdHJ1Y3QqIHBuZ19wdHIsIHBuZ19pbmZv KiBpbmZvX3B0cikgewotICAgICAgICAgc3RhdGUtPm91dHB1dF9jaGFubmVscyA9IDQ7Ci0gICAg ICAgICBwbmdfc2V0X2JncihwbmdfcHRyKTsKLSAgICAgICAgIGJyZWFrOwotKyAgICAgIGNhc2Ug UE5HQ29kZWM6OkZPUk1BVF9BUkdCOgotKyAgICAgICAgc3RhdGUtPm91dHB1dF9jaGFubmVscyA9 IDQ7Ci0rCXBuZ19zZXRfc3dhcF9hbHBoYShwbmdfcHRyKTsKLSsgICAgICAgIGJyZWFrOwotICAg ICAgIGNhc2UgUE5HQ29kZWM6OkZPUk1BVF9Ta0JpdG1hcDoKLSAgICAgICAgIHN0YXRlLT5vdXRw dXRfY2hhbm5lbHMgPSA0OwotICAgICAgICAgYnJlYWs7Ci1AQCAtNDc1LDYgKzQ4Myw4IEBAIGJv b2wgUE5HQ29kZWM6OkVuY29kZShjb25zdCB1bnNpZ25lZCBjaGFyKiBpbnB1dCwKLSAgICAgY2Fz ZSBGT1JNQVRfQkdSQToKLSAgICAgICBjb2xvclR5cGUgPSBrQkdSQV84ODg4X1NrQ29sb3JUeXBl OwotICAgICAgIGJyZWFrOwotKyAgICBjYXNlIEZPUk1BVF9BUkdCOgotKyAgICAgIHJldHVybiBm YWxzZTsKLSAgICAgY2FzZSBGT1JNQVRfU2tCaXRtYXA6Ci0gICAgICAgY29sb3JUeXBlID0ga04z Ml9Ta0NvbG9yVHlwZTsKLSAgICAgICBicmVhazsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdWkvZ2Z4L2NvZGVjL3BuZ19jb2RlYy5oCi0rKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3VpL2dmeC9jb2RlYy9wbmdfY29kZWMuaAotQEAgLTM3LDYgKzM3 LDEwIEBAIGNsYXNzIENPREVDX0VYUE9SVCBQTkdDb2RlYyB7Ci0gICAgIC8vIFRoaXMgaXMgdGhl IGRlZmF1bHQgV2luZG93cyBESUIgb3JkZXIuCi0gICAgIEZPUk1BVF9CR1JBLAotIAotKyAgICAv LyA0IGJ5dGVzIHBlciBwaXhlbCwgaW4gQVJHQiBvcmRlciBpbiBtZW1vcnkgcmVnYXJkbGVzcyBv ZiBlbmRpYW5uZXNzLgotKyAgICAvLyBPbmx5IHN1cHBvcnRlZCBmb3IgZGVjb2RpbmcKLSsgICAg Rk9STUFUX0FSR0IsCi0rCi0gICAgIC8vIFNrQml0bWFwIGZvcm1hdC4gRm9yIEVuY29kZSgpIGtO MzJfU2tDb2xvclR5cGUgKDQgYnl0ZXMgcGVyIHBpeGVsKSBhbmQKLSAgICAgLy8ga0FscGhhXzhf U2tDb2xvclR5cGUgKDEgYnl0ZSBwZXIgcGl4ZWwpIGZvcm1hdHMgYXJlIHN1cHBvcnRlZC4KLSAg ICAgLy8ga0FscGhhXzhfU2tDb2xvclR5cGUgZ2V0cyBlbmNvZGVkIGludG8gYSBncmF5c2NhbGUg UE5HIHRyZWF0aW5nIGFscGhhIGFzCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3VpL2dmeC9jb2RlYy9wbmdfY29kZWNfdW5pdHRlc3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdWkvZ2Z4L2NvZGVjL3BuZ19jb2RlY191bml0dGVzdC5jYwot QEAgLTg1Myw3ICs4NTMsNyBAQCBURVNUKFBOR0NvZGVjLCBFbmNvZGVBOFNrQml0bWFwKSB7Ci0g ICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaDsgeSsrKSB7Ci0gICAgICAgdWludDhfdCBvcmlnaW5h bF9waXhlbCA9ICpvcmlnaW5hbF9iaXRtYXAuZ2V0QWRkcjgoeCwgeSk7Ci0gICAgICAgdWludDMy X3QgZGVjb2RlZF9waXhlbCA9ICpkZWNvZGVkX2JpdG1hcC5nZXRBZGRyMzIoeCwgeSk7Ci0tICAg ICAgRVhQRUNUX1RSVUUoQkdSQUdyYXlFcXVhbHNBOEdyYXkoZGVjb2RlZF9waXhlbCwgb3JpZ2lu YWxfcGl4ZWwpKTsKLSsgICAgICBFWFBFQ1RfVFJVRShCR1JBR3JheUVxdWFsc0E4R3JheShTa1Vu UHJlTXVsdGlwbHk6OlBNQ29sb3JUb0NvbG9yKGRlY29kZWRfcGl4ZWwpLCBvcmlnaW5hbF9waXhl bCkpOwotICAgICB9Ci0gICB9Ci0gfQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS91aS9nZngvY29sb3JfYW5hbHlzaXMuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdWkvZ2Z4L2NvbG9yX2FuYWx5c2lzLmNjCi1AQCAtMTYsNiArMTYsNyBAQAot ICNpbmNsdWRlIDx2ZWN0b3I+Ci0gCi0gI2luY2x1ZGUgImJhc2UvbG9nZ2luZy5oIgotKyNpbmNs dWRlICJiYXNlL3N5c19ieXRlb3JkZXIuaCIKLSAjaW5jbHVkZSAidGhpcmRfcGFydHkvc2tpYS9p bmNsdWRlL2NvcmUvU2tCaXRtYXAuaCIKLSAjaW5jbHVkZSAidGhpcmRfcGFydHkvc2tpYS9pbmNs dWRlL2NvcmUvU2tVblByZU11bHRpcGx5LmgiCi0gI2luY2x1ZGUgInVpL2dmeC9jb2RlYy9wbmdf Y29kZWMuaCIKLUBAIC01MDYsMTAgKzUwNywxNyBAQCBTa0NvbG9yIEZpbmRDbG9zZXN0Q29sb3Io Y29uc3QgdWludDhfdCogaW1hZ2UsCi0gICBTa0NvbG9yIGJlc3RfY29sb3IgPSBjb2xvcjsKLSAg IGNvbnN0IHVpbnQ4X3QqIGJ5dGUgPSBpbWFnZTsKLSAgIGZvciAoaW50IGkgPSAwOyBpIDwgd2lk dGggKiBoZWlnaHQ7ICsraSkgewotKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4p Ci0gICAgIHVpbnQ4X3QgYiA9ICooYnl0ZSsrKTsKLSAgICAgdWludDhfdCBnID0gKihieXRlKysp OwotICAgICB1aW50OF90IHIgPSAqKGJ5dGUrKyk7Ci0gICAgIHVpbnQ4X3QgYSA9ICooYnl0ZSsr KTsKLSsjZWxzZQotKyAgICB1aW50OF90IGEgPSAqKGJ5dGUrKyk7Ci0rICAgIHVpbnQ4X3QgciA9 ICooYnl0ZSsrKTsKLSsgICAgdWludDhfdCBnID0gKihieXRlKyspOwotKyAgICB1aW50OF90IGIg PSAqKGJ5dGUrKyk7Ci0rI2VuZGlmCi0gICAgIC8vIElnbm9yZSBmdWxseSB0cmFuc3BhcmVudCBw aXhlbHMuCi0gICAgIGlmIChhID09IDApCi0gICAgICAgY29udGludWU7Ci1AQCAtNTI3LDcgKzUz NSw2IEBAIFNrQ29sb3IgRmluZENsb3Nlc3RDb2xvcihjb25zdCB1aW50OF90KiBpbWFnZSwKLSAK LSAvLyBGb3IgYSAxNngxNiBpY29uIG9uIGFuIEludGVsIENvcmUgaTUgdGhpcyBmdW5jdGlvbiB0 YWtlcyBhcHByb3hpbWF0ZWx5Ci0gLy8gMC41IG1zIHRvIHJ1bi4KLS0vLyBUT0RPKHBvcnQpOiBU aGlzIGNvZGUgYXNzdW1lcyB0aGUgQ1BVIGFyY2hpdGVjdHVyZSBpcyBsaXR0bGUtZW5kaWFuLgot IFNrQ29sb3IgQ2FsY3VsYXRlS01lYW5Db2xvck9mQnVmZmVyKHVpbnQ4X3QqIGRlY29kZWRfZGF0 YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW1nX3dpZHRoLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbWdfaGVpZ2h0LAotQEAg LTU1MCwxMCArNTU3LDE3IEBAIFNrQ29sb3IgQ2FsY3VsYXRlS01lYW5Db2xvck9mQnVmZmVyKHVp bnQ4X3QqIGRlY29kZWRfZGF0YSwKLSAgICAgICAgIGludCBwaXhlbF9wb3MgPSBzYW1wbGVyLT5H ZXRTYW1wbGUoaW1nX3dpZHRoLCBpbWdfaGVpZ2h0KSAlCi0gICAgICAgICAgICAgKGltZ193aWR0 aCAqIGltZ19oZWlnaHQpOwotIAotKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4p Ci0gICAgICAgICB1aW50OF90IGIgPSBkZWNvZGVkX2RhdGFbcGl4ZWxfcG9zICogNF07Ci0gICAg ICAgICB1aW50OF90IGcgPSBkZWNvZGVkX2RhdGFbcGl4ZWxfcG9zICogNCArIDFdOwotICAgICAg ICAgdWludDhfdCByID0gZGVjb2RlZF9kYXRhW3BpeGVsX3BvcyAqIDQgKyAyXTsKLSAgICAgICAg IHVpbnQ4X3QgYSA9IGRlY29kZWRfZGF0YVtwaXhlbF9wb3MgKiA0ICsgM107Ci0rI2Vsc2UKLSsg ICAgICAgIHVpbnQ4X3QgYSA9IGRlY29kZWRfZGF0YVtwaXhlbF9wb3MgKiA0XTsKLSsgICAgICAg IHVpbnQ4X3QgciA9IGRlY29kZWRfZGF0YVtwaXhlbF9wb3MgKiA0ICsgMV07Ci0rICAgICAgICB1 aW50OF90IGcgPSBkZWNvZGVkX2RhdGFbcGl4ZWxfcG9zICogNCArIDJdOwotKyAgICAgICAgdWlu dDhfdCBiID0gZGVjb2RlZF9kYXRhW3BpeGVsX3BvcyAqIDQgKyAzXTsKLSsjZW5kaWYKLSAgICAg ICAgIC8vIFNraXAgZnVsbHkgdHJhbnNwYXJlbnQgcGl4ZWxzIGFzIHRoZXkgdXN1YWxseSBjb250 YWluIGJsYWNrIGluIHRoZWlyCi0gICAgICAgICAvLyBSR0IgY2hhbm5lbHMgYnV0IGRvIG5vdCBj b250cmlidXRlIHRvIHRoZSB2aXN1YWwgaW1hZ2UuCi0gICAgICAgICBpZiAoYSA9PSAwKQotQEAg LTYwMiwxMCArNjE2LDE3IEBAIFNrQ29sb3IgQ2FsY3VsYXRlS01lYW5Db2xvck9mQnVmZmVyKHVp bnQ4X3QqIGRlY29kZWRfZGF0YSwKLSAgICAgICB1aW50OF90KiBwaXhlbCA9IGRlY29kZWRfZGF0 YTsKLSAgICAgICB1aW50OF90KiBkZWNvZGVkX2RhdGFfZW5kID0gZGVjb2RlZF9kYXRhICsgKGlt Z193aWR0aCAqIGltZ19oZWlnaHQgKiA0KTsKLSAgICAgICB3aGlsZSAocGl4ZWwgPCBkZWNvZGVk X2RhdGFfZW5kKSB7Ci0rI2lmIGRlZmluZWQoQVJDSF9DUFVfTElUVExFX0VORElBTikKLSAgICAg ICAgIHVpbnQ4X3QgYiA9ICoocGl4ZWwrKyk7Ci0gICAgICAgICB1aW50OF90IGcgPSAqKHBpeGVs KyspOwotICAgICAgICAgdWludDhfdCByID0gKihwaXhlbCsrKTsKLSAgICAgICAgIHVpbnQ4X3Qg YSA9ICoocGl4ZWwrKyk7Ci0rI2Vsc2UKLSsgICAgICAgIHVpbnQ4X3QgYSA9ICoocGl4ZWwrKyk7 Ci0rICAgICAgICB1aW50OF90IHIgPSAqKHBpeGVsKyspOwotKyAgICAgICAgdWludDhfdCBnID0g KihwaXhlbCsrKTsKLSsgICAgICAgIHVpbnQ4X3QgYiA9ICoocGl4ZWwrKyk7Ci0rI2VuZGlmCi0g ICAgICAgICAvLyBTa2lwIHRyYW5zcGFyZW50IHBpeGVscywgc2VlIGFib3ZlLgotICAgICAgICAg aWYgKGEgPT0gMCkKLSAgICAgICAgICAgY29udGludWU7Ci1AQCAtNjgzLDggKzcwNCwxMiBAQCBT a0NvbG9yIENhbGN1bGF0ZUtNZWFuQ29sb3JPZlBORyhzY29wZWRfcmVmcHRyPGJhc2U6OlJlZkNv dW50ZWRNZW1vcnk+IHBuZywKLSAKLSAgIGlmIChwbmcuZ2V0KCkgJiYgcG5nLT5zaXplKCkgJiYK LSAgICAgICBnZng6OlBOR0NvZGVjOjpEZWNvZGUocG5nLT5mcm9udCgpLCBwbmctPnNpemUoKSwK LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Z4OjpQTkdDb2RlYzo6Rk9STUFUX0JHUkEs ICZkZWNvZGVkX2RhdGEsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbWdfd2lkdGgs ICZpbWdfaGVpZ2h0KSkgewotKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4pCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdmeDo6UE5HQ29kZWM6OkZPUk1BVF9CR1JBLAot KyNlbHNlCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdmeDo6UE5HQ29kZWM6OkZPUk1B VF9BUkdCLAotKyNlbmRpZgotKwkJCSAgICAmZGVjb2RlZF9kYXRhLCAmaW1nX3dpZHRoLCAmaW1n X2hlaWdodCkpIHsKLSAgICAgcmV0dXJuIENhbGN1bGF0ZUtNZWFuQ29sb3JPZkJ1ZmZlcigmZGVj b2RlZF9kYXRhWzBdLCBpbWdfd2lkdGgsIGltZ19oZWlnaHQsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbG93ZXJfYm91bmQsIHVwcGVyX2JvdW5kLCBzYW1wbGVyLCB0 cnVlKTsKLSAgIH0KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdWkvZ2Z4 L3NrYml0bWFwX29wZXJhdGlvbnNfdW5pdHRlc3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdWkvZ2Z4L3NrYml0bWFwX29wZXJhdGlvbnNfdW5pdHRlc3QuY2MKLUBA IC0yMzgsNyArMjM4LDcgQEAgVEVTVChTa0JpdG1hcE9wZXJhdGlvbnNUZXN0LCBDcmVhdGVIU0xT aGlmdGVkQml0bWFwSHVlT25seSkgewotIAotICAgZm9yIChpbnQgeSA9IDAsIGkgPSAwOyB5IDwg c3JjX2g7IHkrKykgewotICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHNyY193OyB4KyspIHsKLS0g ICAgICAqc3JjLmdldEFkZHIzMih4LCB5KSA9IFNrQ29sb3JTZXRBUkdCKDI1NSwgMCwgMCwgaSAl IDI1NSk7Ci0rICAgICAgKnNyYy5nZXRBZGRyMzIoeCwgeSkgPSBTa1BhY2tBUkdCMzIoMjU1LCAw LCAwLCBpICUgMjU1KTsKLSAgICAgICBpKys7Ci0gICAgIH0KLSAgIH0KLS0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdXJsL3VybF9jYW5vbl9ob3N0LmNjCi0rKysgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VybC91cmxfY2Fub25faG9zdC5jYwotQEAgLTEz NSw4ICsxMzUsNyBAQCBib29sIERvU2ltcGxlSG9zdChjb25zdCBJTkNIQVIqIGhvc3QsCi0gICAg IGlmIChzb3VyY2UgPT0gJyUnKSB7Ci0gICAgICAgLy8gVW5lc2NhcGUgZmlyc3QsIGlmIHBvc3Np YmxlLgotICAgICAgIC8vIFNvdXJjZSB3aWxsIGJlIHVzZWQgb25seSBpZiBkZWNvZGUgb3BlcmF0 aW9uIHdhcyBzdWNjZXNzZnVsLgotLSAgICAgIGlmICghRGVjb2RlRXNjYXBlZChob3N0LCAmaSwg aG9zdF9sZW4sCi0tICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dW5z aWduZWQgY2hhcio+KCZzb3VyY2UpKSkgewotKyAgICAgIGlmICghRGVjb2RlRXNjYXBlZChob3N0 LCAmaSwgaG9zdF9sZW4sICZzb3VyY2UpKSB7Ci0gICAgICAgICAvLyBJbnZhbGlkIGVzY2FwZWQg Y2hhcmFjdGVyLiBUaGVyZSBpcyBub3RoaW5nIHRoYXQgY2FuIG1ha2UgdGhpcwotICAgICAgICAg Ly8gaG9zdCB2YWxpZC4gV2UgYXBwZW5kIGFuIGVzY2FwZWQgcGVyY2VudCBzbyB0aGUgVVJMIGxv b2tzIHJlYXNvbmFibGUKLSAgICAgICAgIC8vIGFuZCBtYXJrIGFzIGZhaWxlZC4KLS0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdXJsL3VybF9jYW5vbl9pbnRlcm5hbC5oCi0r KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VybC91cmxfY2Fub25faW50ZXJu YWwuaAotQEAgLTMwNSw5ICszMDUsOSBAQCBpbmxpbmUgYm9vbCBJczhCaXRDaGFyKGJhc2U6OmNo YXIxNiBjKSB7Ci0gICByZXR1cm4gYyA8PSAyNTU7Ci0gfQotIAotLXRlbXBsYXRlPHR5cGVuYW1l IENIQVI+Ci0rdGVtcGxhdGU8dHlwZW5hbWUgQ0hBUiwgdHlwZW5hbWUgRFNUPgotIGlubGluZSBi b29sIERlY29kZUVzY2FwZWQoY29uc3QgQ0hBUiogc3BlYywgaW50KiBiZWdpbiwgaW50IGVuZCwK LS0gICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIHVuZXNjYXBlZF92YWx1 ZSkgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgRFNUKiB1bmVzY2FwZWRfdmFsdWUpIHsK LSAgIGlmICgqYmVnaW4gKyAzID4gZW5kIHx8Ci0gICAgICAgIUlzOEJpdENoYXIoc3BlY1sqYmVn aW4gKyAxXSkgfHwgIUlzOEJpdENoYXIoc3BlY1sqYmVnaW4gKyAyXSkpIHsKLSAgICAgLy8gSW52 YWxpZCBlc2NhcGUgc2VxdWVuY2UgYmVjYXVzZSB0aGVyZSdzIG5vdCBlbm91Z2ggcm9vbSwgb3Ig dGhlCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwOTMtY2hyb21pdW0tdjgtZWxm djIucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwOTMtY2hyb21pdW0tdjgtZWxmdjIucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1ODBjODE0Njk3Li4wMDAwMDAwMDAw MAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwOTMtY2hyb21pdW0tdjgtZWxmdjIucGF0Y2gK KysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1UaGlzIGZpeGVzIHY4IG9uIGJpZyBlbmRp YW4gcHBjNjQgRUxGdjIuCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Y4 L3NyYy9wcGMvY29uc3RhbnRzLXBwYy5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3Y4L3NyYy9wcGMvY29uc3RhbnRzLXBwYy5oCi1AQCAtMjEsNyArMjEsOCBAQAotICNl bmRpZgotIAotICNpZiBWOF9IT1NUX0FSQ0hfUFBDICYmIFwKLS0gICAgKFY4X09TX0FJWCB8fCAo VjhfVEFSR0VUX0FSQ0hfUFBDNjQgJiYgVjhfVEFSR0VUX0JJR19FTkRJQU4pKQotKyAgICAoVjhf T1NfQUlYIHx8IChWOF9UQVJHRVRfQVJDSF9QUEM2NCAmJiBcCi0rICAgICAgKFY4X1RBUkdFVF9C SUdfRU5ESUFOICYmICghZGVmaW5lZChfQ0FMTF9FTEYpIHx8IF9DQUxMX0VMRiA9PSAxKSkpKQot ICNkZWZpbmUgQUJJX1VTRVNfRlVOQ1RJT05fREVTQ1JJUFRPUlMgMQotICNlbHNlCi0gI2RlZmlu ZSBBQklfVVNFU19GVU5DVElPTl9ERVNDUklQVE9SUyAwCi1AQCAtMzMsMTMgKzM0LDE1IEBACi0g I2RlZmluZSBBQklfUEFTU0VTX0hBTkRMRVNfSU5fUkVHUyAwCi0gI2VuZGlmCi0gCi0tI2lmICFW OF9IT1NUX0FSQ0hfUFBDIHx8ICFWOF9UQVJHRVRfQVJDSF9QUEM2NCB8fCBWOF9UQVJHRVRfTElU VExFX0VORElBTgotKyNpZiAhVjhfSE9TVF9BUkNIX1BQQyB8fCAhVjhfVEFSR0VUX0FSQ0hfUFBD NjQgfHwgXAotKyAgICAoVjhfVEFSR0VUX0xJVFRMRV9FTkRJQU4gfHwgKGRlZmluZWQoX0NBTExf RUxGKSAmJiBfQ0FMTF9FTEYgPT0gMikpCi0gI2RlZmluZSBBQklfUkVUVVJOU19PQkpFQ1RfUEFJ UlNfSU5fUkVHUyAxCi0gI2Vsc2UKLSAjZGVmaW5lIEFCSV9SRVRVUk5TX09CSkVDVF9QQUlSU19J Tl9SRUdTIDAKLSAjZW5kaWYKLSAKLS0jaWYgIVY4X0hPU1RfQVJDSF9QUEMgfHwgKFY4X1RBUkdF VF9BUkNIX1BQQzY0ICYmIFY4X1RBUkdFVF9MSVRUTEVfRU5ESUFOKQotKyNpZiAhVjhfSE9TVF9B UkNIX1BQQyB8fCAoVjhfVEFSR0VUX0FSQ0hfUFBDNjQgJiYgXAotKyAgICAoVjhfVEFSR0VUX0xJ VFRMRV9FTkRJQU4gfHwgKGRlZmluZWQoX0NBTExfRUxGKSAmJiBfQ0FMTF9FTEYgPT0gMikpKQot ICNkZWZpbmUgQUJJX0NBTExfVklBX0lQIDEKLSAjZWxzZQotICNkZWZpbmUgQUJJX0NBTExfVklB X0lQIDAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdjgvc3JjL3BwYy9y ZWdpc3Rlci1wcGMuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92OC9z cmMvcHBjL3JlZ2lzdGVyLXBwYy5oCi1AQCAtMTQ1LDcgKzE0NSw4IEBAIGNvbnN0IGludCBrTnVt U2FmZXBvaW50UmVnaXN0ZXJzID0gMzI7Ci0gLy8gVGhlIGZvbGxvd2luZyBjb25zdGFudHMgZGVz Y3JpYmUgdGhlIHN0YWNrIGZyYW1lIGxpbmthZ2UgYXJlYSBhcwotIC8vIGRlZmluZWQgYnkgdGhl IEFCSS4gIE5vdGUgdGhhdCBrTnVtUmVxdWlyZWRTdGFja0ZyYW1lU2xvdHMgbXVzdAotIC8vIHNh dGlzZnkgYWxpZ25tZW50IHJlcXVpcmVtZW50cyAocm91bmRpbmcgdXAgaWYgcmVxdWlyZWQpLgot LSNpZiBWOF9UQVJHRVRfQVJDSF9QUEM2NCAmJiBWOF9UQVJHRVRfTElUVExFX0VORElBTiAgLy8g cHBjNjRsZSBsaW51eAotKyNpZiBWOF9UQVJHRVRfQVJDSF9QUEM2NCAmJiAoVjhfVEFSR0VUX0xJ VFRMRV9FTkRJQU4gfHwgXAotKyAgICBkZWZpbmVkKF9DQUxMX0VMRikgJiYgX0NBTExfRUxGID09 IDIpCi0gLy8gWzBdIGJhY2sgY2hhaW4KLSAvLyBbMV0gY29uZGl0aW9uIHJlZ2lzdGVyIHNhdmUg YXJlYQotIC8vIFsyXSBsaW5rIHJlZ2lzdGVyIHNhdmUgYXJlYQpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9xdDUvcGF0Y2hlcy8wMDk0LWJpZy1lbmRpYW4tc2tpYS1wb3J0YWJsZS5wYXRjaCBiL3NyY3Br Z3MvcXQ1L3BhdGNoZXMvMDA5NC1iaWctZW5kaWFuLXNraWEtcG9ydGFibGUucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhMjY5ZDM4M2QxLi4wMDAwMDAwMDAwMAotLS0gYS9z cmNwa2dzL3F0NS9wYXRjaGVzLzAwOTQtYmlnLWVuZGlhbi1za2lhLXBvcnRhYmxlLnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL3RoaXJkX3BhcnR5L3NrY21zL3NrY21zLmNjCi0r KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEvdGhp cmRfcGFydHkvc2tjbXMvc2tjbXMuY2MKLUBAIC0xODI4LDYgKzE4MjgsMTQgQEAgdHlwZWRlZiBl bnVtIHsKLSAgICAgI2VuZGlmCi0gI2VuZGlmCi0gCi0rLy8gd2l0aCBjdXJyZW50IGdjYyA4LjMu MCB3ZSBnZXQgYW4gaW50ZXJuYWwgY29tcGlsZXIgZXJyb3Igd2hlbiBjb21waWxpbmcKLSsvLyBm b3IgcHBjNjQgYmlnIGVuZGlhbiAtIHNvIHN3aXRjaCB0byBwb3J0YWJsZSB1bnRpbCB0aGlzIGlz IHJlc29sdmVkCi0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsjICBpZiBkZWZpbmVkKF9f QklHX0VORElBTl9fKSAmJiAhZGVmaW5lZChTS0NNU19QT1JUQUJMRSkKLSsjICAgIGRlZmluZSBT S0NNU19QT1JUQUJMRQotKyMgIGVuZGlmCi0rI2VuZGlmCi0rCi0gI2lmIGRlZmluZWQoX19jbGFu Z19fKQotICAgICB0ZW1wbGF0ZSA8aW50IE4sIHR5cGVuYW1lIFQ+IHVzaW5nIFZlYyA9IFQgX19h dHRyaWJ1dGVfXygoZXh0X3ZlY3Rvcl90eXBlKE4pKSk7Ci0gI2VsaWYgZGVmaW5lZChfX0dOVUNf XykKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDEwMC1zYW5kYm94LXNjaGVkX2dl dHBhcmFtLnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMTAwLXNhbmRib3gtc2NoZWRfZ2V0 cGFyYW0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1YzMzYTU3ZjAzLi4w MDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAxMDAtc2FuZGJveC1zY2hlZF9n ZXRwYXJhbS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLUFsbG93IFNZU19z Y2hlZF9nZXRwYXJhbSBhbmQgU1lTX3NjaGVkX2dldHNjaGVkdWxlcgotbXVzbCB1c2VzIHRoZW0g Zm9yIHB0aHJlYWRfZ2V0c2NoZWRwYXJhbSgpCi0KLXNvdXJjZTogaHR0cHM6Ly9naXQuYWxwaW5l bGludXgub3JnL2Fwb3J0cy9jb21taXQvY29tbXVuaXR5L2Nocm9taXVtP2lkPTU0YWY5ZjhhYzI0 ZjUyZDM4MmM1NzU4ZTI0NDViZjAyMDZlZmY0MGUKLQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS9zZXJ2aWNlcy9zZXJ2aWNlX21hbmFnZXIvc2FuZGJveC9saW51eC9icGZf cmVuZGVyZXJfcG9saWN5X2xpbnV4LmNjCTIwMTktMTEtMTIgMjA6NDg6MjAuMDEzNzI0NjYxICsw MTAwCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NlcnZpY2VzL3NlcnZp Y2VfbWFuYWdlci9zYW5kYm94L2xpbnV4L2JwZl9yZW5kZXJlcl9wb2xpY3lfbGludXguY2MucGF0 Y2hlZAkyMDE5LTExLTEyIDIwOjU4OjU3LjMzMDY5NTY3NiArMDEwMAotQEAgLTkzLDEwICs5Mywx NiBAQAotICAgICBjYXNlIF9fTlJfc3lzaW5mbzoKLSAgICAgY2FzZSBfX05SX3RpbWVzOgotICAg ICBjYXNlIF9fTlJfdW5hbWU6Ci0rI2lmICFkZWZpbmVkKF9fR0xJQkNfXykKLSsgICAgY2FzZSBf X05SX3NjaGVkX2dldHBhcmFtOgotKyAgICBjYXNlIF9fTlJfc2NoZWRfZ2V0c2NoZWR1bGVyOgot KyNlbmRpZgotICAgICAgIHJldHVybiBBbGxvdygpOwotICAgICBjYXNlIF9fTlJfc2NoZWRfZ2V0 YWZmaW5pdHk6Ci0rI2lmIGRlZmluZWQoX19HTElCQ19fKQotICAgICBjYXNlIF9fTlJfc2NoZWRf Z2V0cGFyYW06Ci0gICAgIGNhc2UgX19OUl9zY2hlZF9nZXRzY2hlZHVsZXI6Ci0rI2VuZGlmCi0g ICAgIGNhc2UgX19OUl9zY2hlZF9zZXRzY2hlZHVsZXI6Ci0gICAgICAgcmV0dXJuIHNhbmRib3g6 OlJlc3RyaWN0U2NoZWRUYXJnZXQoR2V0UG9saWN5UGlkKCksIHN5c25vKTsKLSAgICAgY2FzZSBf X05SX3BybGltaXQ2NDoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3RlbXBsYXRlIGIvc3JjcGtn cy9xdDUvdGVtcGxhdGUKaW5kZXggYjAyMDU1MzBhMTMuLjE3NjVhOTRmMTZhIDEwMDY0NAotLS0g YS9zcmNwa2dzL3F0NS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0NS90ZW1wbGF0ZQpAQCAtMSw5 MSArMSwzMSBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncXQ1JwogcGtnbmFtZT1xdDUKLXZlcnNp b249NS4xMy4yCi1yZXZpc2lvbj0yCit2ZXJzaW9uPTUuMTQuMQorcmV2aXNpb249MQorYnVpbGRf c3R5bGU9bWV0YQogd3Jrc3JjPSJxdC1ldmVyeXdoZXJlLXNyYy0ke3ZlcnNpb259IgotYnVpbGRf c3R5bGU9Z251LWNvbmZpZ3VyZQotaG9zdG1ha2VkZXBlbmRzPSJjbWFrZSBjbGFuZyBmbGV4IGdp dCBnbGliLWRldmVsIGdwZXJmIG5pbmphIHBrZy1jb25maWcKLSBwcm90b2J1ZiBweXRob24gcmUy YyBydWJ5IHdoaWNoIgoraG9zdG1ha2VkZXBlbmRzPSJjbWFrZSBjbGFuZyBmbGV4IGdpdCBnbGli LWRldmVsIHBrZy1jb25maWcKKyBweXRob24gcmUyYyBydWJ5IHdoaWNoIgogbWFrZWRlcGVuZHM9 IlNETDItZGV2ZWwgVnVsa2FuLUhlYWRlcnMgYWxzYS1saWItZGV2ZWwgZG91YmxlLWNvbnZlcnNp b24tZGV2ZWwKICBldWRldi1saWJ1ZGV2LWRldmVsIGZmbXBlZy1kZXZlbCBmcmVldGRzLWRldmVs IGdsaWItZGV2ZWwgZ3N0LXBsdWdpbnMtYmFzZTEtZGV2ZWwKLSBndGsrMy1kZXZlbCBpY3UtZGV2 ZWwganNvbmNwcC1kZXZlbCBsaWJYdi1kZXZlbCBsaWJibHVldG9vdGgtZGV2ZWwgbGliY2FwLWRl dmVsCi0gbGliZXZlbnQtZGV2ZWwgbGliaW5wdXQtZGV2ZWwgbGlibW5nLWRldmVsIGxpYm15c3Fs Y2xpZW50LWRldmVsIGxpYnByb3h5LWRldmVsCi0gbGlidnB4LWRldmVsIGxpYndlYnAtZGV2ZWwg bGlieHNsdC1kZXZlbCBtaW5pemlwLWRldmVsIG5zcy1kZXZlbCBjdXBzLWRldmVsCisgZ3RrKzMt ZGV2ZWwgaWN1LWRldmVsIGxpYlh2LWRldmVsIGxpYmJsdWV0b290aC1kZXZlbCBsaWJjYXAtZGV2 ZWwKKyBsaWJpbnB1dC1kZXZlbCBsaWJtbmctZGV2ZWwgbGlibXlzcWxjbGllbnQtZGV2ZWwgbGli cHJveHktZGV2ZWwKKyBsaWJ2cHgtZGV2ZWwgbGlid2VicC1kZXZlbCBsaWJ4c2x0LWRldmVsIGN1 cHMtZGV2ZWwKICBvcHVzLWRldmVsIHBjaXV0aWxzLWRldmVsIHBjcmUyLWRldmVsIHBvc3RncmVz cWwtbGlicy1kZXZlbAotIHByb3RvYnVmLWRldmVsIHB1bHNlYXVkaW8tZGV2ZWwgc25hcHB5LWRl dmVsIHRzbGliLWRldmVsCisgcHJvdG9idWYtZGV2ZWwgcHVsc2VhdWRpby1kZXZlbCB0c2xpYi1k ZXZlbCBsaWJyZXNzbC1kZXZlbAogIHVuaXhvZGJjLWRldmVsIHhjYi11dGlsLWltYWdlLWRldmVs IHhjYi11dGlsLWtleXN5bXMtZGV2ZWwKICB4Y2ItdXRpbC1yZW5kZXJ1dGlsLWRldmVsIHhjYi11 dGlsLXdtLWRldmVsIGxpYnpzdGQtZGV2ZWwgaGFyZmJ1enotZGV2ZWwiCi1kZXBlbmRzPSJxdGNo b29zZXIiCitkZXBlbmRzPSJxdDUtZGJ1cyBxdDUtZ3VpIHF0NS1jb3JlIHF0NS13aWRnZXRzIHF0 NS1uZXR3b3JrIHF0NS14bWwKKyBxdDUtdGVzdCBxdDUtc3FsIHF0NS1jb25jdXJyZW50IHF0NS1w cmludHN1cHBvcnQgcXQ1LW9wZW5nbCIKIHNob3J0X2Rlc2M9IkNyb3NzLXBsYXRmb3JtIGFwcGxp Y2F0aW9uIGFuZCBVSSBmcmFtZXdvcmsgKFFUNSkiCiBtYWludGFpbmVyPSJKw7xyZ2VuIEJ1Y2ht w7xsbGVyIDxwdWxsbW9sbEB0LW9ubGluZS5kZT4iCiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVy LCBMR1BMLTMuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL3F0LmlvLyIKIGRpc3RmaWxl cz0iaHR0cDovL2Rvd25sb2FkLnF0LmlvL29mZmljaWFsX3JlbGVhc2VzL3F0LyR7dmVyc2lvbiUu Kn0vJHt2ZXJzaW9ufS9zaW5nbGUvcXQtZXZlcnl3aGVyZS1zcmMtJHt2ZXJzaW9ufS50YXIueHoi Ci1jaGVja3N1bT01NWU4MjczNTM2YmU0MWY0ZjYzMDY0YTc5ZTU1MmEyMjEzMzg0OGJiNDE5NDAw YjZmYThlOWZjMGRjMDVkZTA4CitjaGVja3N1bT02ZjE3ZjQ4OGY1MTJiMzljMmZlYjU3ZDgzYTVl MGExM2RjZWYzMjk5OWJlYTJlMmE4ZjgzMmY1NGEyOWJhZGI4CiByZXBsYWNlcz0icXQ1LWRvYzw1 LjYuMCBxdDUtcXVpY2sxPDUuNi4wIHF0NS1xdWljazEtZGV2ZWw8NS42LjAgcXQ1LXdlYmtpdDw1 LjYuMCBxdDUtd2Via2l0LWRldmVsPDUuNi4wCiAgcXQ1LWVuZ2luaW88NS43LjEgcXQ1LWVuZ2lu aW8tZGV2ZWw8NS43LjEgcXQ1LXBsdWdpbi1ndGs8NS43LjEgcXQ1LWNhbnZhczNkPDUuMTMuMCIK IAotYnVpbGRfb3B0aW9ucz0id2ViZW5naW5lIgotZGVzY19vcHRpb25fd2ViZW5naW5lPSJCdWls ZCBDaHJvbWl1bS1iYXNlZCBXZWJFbmdpbmUgY29tcG9uZW50IgotCi1tYWtlZGVwZW5kcys9IiBo YXJmYnV6ei1kZXZlbCIKLQotaWYgWyAiJFhCUFNfTElCQyIgPSAibXVzbCIgXTsgdGhlbgotCWhv c3RtYWtlZGVwZW5kcys9IiBtdXNsLWxlZ2FjeS1jb21wYXQiCi1maQotaWYgWyAiJFhCUFNfVEFS R0VUX0xJQkMiID0gIm11c2wiIF07IHRoZW4KLQltYWtlZGVwZW5kcys9IiBtdXNsLWxlZ2FjeS1j b21wYXQiCi1maQotCi1jYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KLQlhcm12NXRlbCop IDs7ICMgcXR3ZWJlbmdpbmUgdXNlcyBWU00gYXNzZW1ibGVyIGNvbW1hbmRzCi0JcHBjfHBwYy1t dXNsKSA7OyAjIHF0d2ViZW5naW5lIGRvZXMgbm90IHN1cHBvcnQgcHBjIDMyIGJpdAotCSopIGlm IFsgIiRYQlBTX1dPUkRTSVpFIiA9ICIkWEJQU19UQVJHRVRfV09SRFNJWkUiIF07IHRoZW4KLQkJ IyB3ZWJlbmdpbmUgY2FuIGJlIGJ1aWx0IG9ubHkgaWYgd29yZCBzaXplIG1hdGNoZXMKLQkJYnVp bGRfb3B0aW9uc19kZWZhdWx0PSJ3ZWJlbmdpbmUiCi0JZmk7OwotZXNhYwotCi1pZiBbICIkYnVp bGRfb3B0aW9uX3dlYmVuZ2luZSIgXTsgdGhlbgotCSMgdjggcmVxdWlyZXMgbGliYXRvbWljIG9u IGFybXZbNTZdKi9wcGMqL3MzOTB4L21pcHMqCi0JY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUi IGluCi0JCWFybXZbNTZdKnxtaXBzKnxwcGMqKSBtYWtlZGVwZW5kcys9IiBsaWJhdG9taWMtZGV2 ZWwiIDs7Ci0JCSopIDs7Ci0JZXNhYwotCSMgYWxzbyBuZWVkIGl0IG9uIGhvc3Qgd2hlbiBpdCdz IG9uZSBvZiB0aG9zZSBhcmNocwotCWNhc2UgIiRYQlBTX01BQ0hJTkUiIGluCi0JCWFybXZbNTZd KnxtaXBzKnxwcGMqKSBob3N0bWFrZWRlcGVuZHMrPSIgbGliYXRvbWljLWRldmVsIiA7OwotCQkq KSA7OwotCWVzYWMKLWZpCi0KLXN1YnBhY2thZ2VzPSJxdDUtM2QgcXQ1LTNkLWRldmVsIHF0NS1j aGFydHMgcXQ1LWNoYXJ0cy1kZXZlbAotIHF0NS1jb25uZWN0aXZpdHkgcXQ1LWNvbm5lY3Rpdml0 eS1kZXZlbCBxdDUtZGF0YXZpczNkIHF0NS1kYXRhdmlzM2QtZGV2ZWwKLSBxdDUtZGVjbGFyYXRp dmUgcXQ1LWRlY2xhcmF0aXZlLWRldmVsIHF0NS1kZXZlbCBxdDUtZXhhbXBsZXMgcXQ1LWdhbWVw YWQKLSBxdDUtZ2FtZXBhZC1kZXZlbCBxdDUtZ3JhcGhpY2FsZWZmZWN0cyBxdDUtaG9zdC10b29s cyBxdDUtaW1hZ2Vmb3JtYXRzCi0gcXQ1LWxvY2F0aW9uIHF0NS1sb2NhdGlvbi1kZXZlbCBxdDUt bXVsdGltZWRpYSBxdDUtbXVsdGltZWRpYS1kZXZlbAotIHF0NS1uZXR3b3JrYXV0aCBxdDUtbmV0 d29ya2F1dGgtZGV2ZWwgcXQ1LXBsdWdpbi1teXNxbCBxdDUtcGx1Z2luLW9kYmMKLSBxdDUtcGx1 Z2luLXBnc3FsIHF0NS1wbHVnaW4tc3FsaXRlIHF0NS1wbHVnaW4tdGRzIHF0NS1wdXJjaGFzaW5n Ci0gcXQ1LXB1cmNoYXNpbmctZGV2ZWwgcXQ1LXFtYWtlIHF0NS1xdWlja2NvbnRyb2xzIHF0NS1x dWlja2NvbnRyb2xzMgotIHF0NS1xdWlja2NvbnRyb2xzMi1kZXZlbCBxdDUtcmVtb3Rlb2JqZWN0 cyBxdDUtcmVtb3Rlb2JqZWN0cy1kZXZlbAotIHF0NS1zY3JpcHQgcXQ1LXNjcmlwdC1kZXZlbCBx dDUtc2N4bWwgcXQ1LXNjeG1sLWRldmVsIHF0NS1zZW5zb3JzCi0gcXQ1LXNlbnNvcnMtZGV2ZWwg cXQ1LXNlcmlhbGJ1cyBxdDUtc2VyaWFsYnVzLWRldmVsIHF0NS1zZXJpYWxwb3J0Ci0gcXQ1LXNl cmlhbHBvcnQtZGV2ZWwgcXQ1LXNwZWVjaCBxdDUtc3BlZWNoLWRldmVsIHF0NS1zdmcgcXQ1LXN2 Zy1kZXZlbAotIHF0NS10b29scyBxdDUtdG9vbHMtZGV2ZWwgcXQ1LXRyYW5zbGF0aW9ucyBxdDUt dmlydHVhbGtleWJvYXJkCi0gcXQ1LXZpcnR1YWxrZXlib2FyZC1kZXZlbCBxdDUtd2F5bGFuZCBx dDUtd2F5bGFuZC1kZXZlbCBxdDUtd2ViY2hhbm5lbAotIHF0NS13ZWJjaGFubmVsLWRldmVsIHF0 NS13ZWJnbHBsdWdpbiBxdDUtd2ViZ2xwbHVnaW4tZGV2ZWwgcXQ1LXdlYnNvY2tldHMKLSBxdDUt d2Vic29ja2V0cy1kZXZlbCBxdDUtd2VidmlldyBxdDUtd2Vidmlldy1kZXZlbCBxdDUteDExZXh0 cmFzCi0gcXQ1LXgxMWV4dHJhcy1kZXZlbCBxdDUteG1scGF0dGVybnMgcXQ1LXhtbHBhdHRlcm5z LWRldmVsCi0gcXQ1LWxvdHRpZSBxdDUtbG90dGllLWRldmVsIgotCi1pZiBbICIkYnVpbGRfb3B0 aW9uX3dlYmVuZ2luZSIgXTsgdGhlbgotCXN1YnBhY2thZ2VzKz0iIHF0NS13ZWJlbmdpbmUgcXQ1 LXdlYmVuZ2luZS1kZXZlbCIKLWZpCi0KLWlmIFsgIiRYQlBTX1dPUkRTSVpFIiAtZXEgMzIgXTsg dGhlbgotCW5vZGVidWc9eWVzICAjIHByZXZlbnQgT09NCi1maQotCiAjIFdvcmsgYXJvdW5kIFNT THYzX3tjbGllbnQsc2VydmVyfV9tZXRob2QgbWlzc2luZyBpbiBsaWJyZXNzbC0yLjMuMwogQ0ZM QUdTPSItRE9QRU5TU0xfTk9fUFNLIC1ET1BFTlNTTF9OT19ORVhUUFJPVE9ORUciCiBDWFhGTEFH Uz0iJHtDRkxBR1N9IC1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMgLVduby1jbGFzcy1tZW1h Y2Nlc3MgLVduby1wYWNrZWQtbm90LWFsaWduZWQiCkBAIC05NywyNiArMzcsOCBAQCBpZiBbICIk Q1JPU1NfQlVJTEQiIF07IHRoZW4KIAkjIHdheWxhbmQtZGV2ZWwgY29udGFpbnMgL3Vzci9iaW4v d2F5bGFuZC1zY2FubmVyCiAJaG9zdG1ha2VkZXBlbmRzKz0iIGljdS1kZXZlbCB3YXlsYW5kLWRl dmVsIHpsaWItZGV2ZWwiCiAJaG9zdG1ha2VkZXBlbmRzKz0iIHBvc3RncmVzcWwtbGlicy1kZXZl bCIKLQkjIENyb3NzIGJ1aWxkaW5nIHF0d2ViZW5naW5lIHJlcXVpcmVzIHNvbWUgbW9yZSBob3N0 IHBhY2thZ2VzCi0JaWYgWyAiJGJ1aWxkX29wdGlvbl93ZWJlbmdpbmUiIF07IHRoZW4KLQkJaG9z dG1ha2VkZXBlbmRzKz0iIG5zcy1kZXZlbCBsaWJldmVudC1kZXZlbCIKLQlmaQogZmkKIAotX2Jv b3RzdHJhcF9nbigpIHsKLQkjIEJvb3RzdHJhcCBnbiAoZ2VuZXJhdGUgbmluamEpCi0JZWNobyAi Qm9vdHN0cmFwcGluZyAnZ24nIgotCWNkICR7d3Jrc3JjfS9xdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvZ24KLQlDRkxBR1M9IiRDRkxBR1NfaG9zdCIgQ1hYRkxBR1M9IiRDWFhGTEFHU19ob3N0IiBM REZMQUdTPSIkTERGTEFHU19ob3N0IiBcCi0JUEtHQ09ORklHPS91c3IvYmluL3BrZ2NvbmZpZyBQ S0dfQ09ORklHX1BBVEg9Ii91c3IvbGliL3BrZ2NvbmZpZzovdXNyL3NoYXJlL3BrZ2NvbmZpZyIg XAotCQlweXRob24yIGJ1aWxkL2dlbi5weSAtLW5vLWxhc3QtY29tbWl0LXBvc2l0aW9uIC0tb3V0 LXBhdGggXAotCQkJJHt3cmtzcmN9L3F0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9nbi9vdXQvUmVs ZWFzZSAtLWNjICIkQ0NfaG9zdCIgXAotCQkJLS1jeHggIiRDWFhfaG9zdCIgLS1sZCAiJENYWF9o b3N0IiAtLWFyICIkQVJfaG9zdCIKLQluaW5qYSAtQyBvdXQvUmVsZWFzZSBnbgotCWNkICR7d3Jr c3JjfQotfQotCi0KIF9jbGVhbnVwX3dya3NyY19sZWFrKCkgewogCWlmIFsgLWQgIiR7UEtHREVT VERJUn0vdXNyL2xpYi9jbWFrZSIgXTsgdGhlbgogCQkjIFJlcGxhY2UgcmVmZXJlbmNlcyB0byAk e3dya3NyY30gaW4gY21ha2UgZmlsZXMKQEAgLTE3MSw2ICs5MywxMSBAQCBfaW5zdGFsbF9kZXZl bCgpIHsKIAlsb2NhbCBtb2R1bGU9JDEKIAljZCAke3dya3NyY30vJHttb2R1bGV9CiAJbWFrZSBJ TlNUQUxMX1JPT1Q9JHtQS0dERVNURElSfSBpbnN0YWxsCisJdm1rZGlyIHVzci9saWIvcXQ1L21r c3BlY3MvbW9kdWxlcworCWlmIFsgLWQgIiR7UEtHREVTVERJUn0ke3dya3NyY30vaG9zdC9ta3Nw ZWNzL21vZHVsZXMiIF07IHRoZW4KKwkJbXYgLW52ICR7UEtHREVTVERJUn0ke3dya3NyY30vaG9z dC9ta3NwZWNzL21vZHVsZXMvKiBcCisJCQkke1BLR0RFU1RESVJ9L3Vzci9saWIvcXQ1L21rc3Bl Y3MvbW9kdWxlcy8KKwlmaQogCXJtIC1yZiAke1BLR0RFU1RESVJ9L2J1aWxkZGlyCiAJcm0gLXJm ICR7UEtHREVTVERJUn0vdXNyL3NoYXJlCiAJcm0gLXJmICR7UEtHREVTVERJUn0vdXNyL2xpYi9x dDUvYmluCkBAIC0yNDEsMzIgKzE2OCw2IEBAIF9tc2dfY3Jvc3MoKSB7CiBkb19jb25maWd1cmUo KSB7CiAJbG9jYWwgb3B0cyBzcGVjCiAKLQkjIENvbXBhdGliaWxpdHkgZnVuY3Rpb25zIHJlc19u aW5pdCgpIGFuZCByZXNfbmNsb3NlKCkgZm9yIG11c2wgbGliYwotCWNwICR7RklMRVNESVJ9L3Jl c29sdl9jb21wYXQuaCAke3dya3NyY30vcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L25ldC9kbnMKLQotCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgotCWFybXY1Knxhcm12 NiopCSMgRGlzYWJsZSAieWllbGQiIGFzc2VtYmxlciBpbnN0cnVjdGlvbgotCQlzZWQgLWkgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9h bGxvY2F0b3Ivc3Bpbl9sb2NrLmNjIFwKLQkJCXF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9wZGZpdW0vdGhpcmRfcGFydHkvYmFzZS9hbGxvY2F0b3IvcGFydGl0 aW9uX2FsbG9jYXRvci9zcGluX2xvY2suY2MgXAotCQkJLWUgJ3M7InlpZWxkIjsibm9wIjsnCi0J CTs7Ci0JZXNhYwotCi0JY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCi0JKi1tdXNsKQot CQkjIFBhdGNoIC4uLi9saW51eC8qL2NvbmZpZy57aCxhc219IHRvIGRlZmluZSBIQVZFX1NZU0NU TCAwCi0JCWxvY2FsIGNvbmZpZyBjaHJvbWl1bT0ke3dya3NyY30vcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtCi0JCWZvciBjb25maWcgaW4gJChmaW5kICR7Y2hyb21pdW19L3RoaXJk X3BhcnR5L2ZmbXBlZy9jaHJvbWl1bS9jb25maWcgLW5hbWUgImNvbmZpZ1wuKiIgfCBncmVwIGxp bnV4KTsgZG8KLQkJCXNlZCAtaSAke2NvbmZpZ30gLWUgInM7SEFWRV9TWVNDVEwgMTtIQVZFX1NZ U0NUTCAwOyIKLQkJZG9uZQotCQkjIERvIG5vdCB1c2UgYWxsb2NhdG9yIHNoaW0gKGluY29tcGF0 aWJsZSB3aXRoIG11c2wgbGliYykKLQkJc2VkIC1pIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9idWlsZC9jb25maWcvYWxsb2NhdG9yLmduaSBcCi0JCQktZSAicztcKHVzZV9hbGxv Y2F0b3Jfc2hpbVwpID0gLio7XDEgPSBmYWxzZTsiCi0JCSMgRGVmaW5lIHRvIHNldCAyIE1pQiBz dGFjayBzaXplIGZvciBxdGhyZWFkCi0JCWV4cG9ydCBDWFhGTEFHUys9IiAtRF9QT1NJWF9USFJF QURfQVRUUl9TVEFDS1NJWkU9MjA5NzE1MiIKLQkJOzsKLQllc2FjCi0KIAkjIENyb3NzIGJ1aWxk IHBhdGNoZXMKIAlpZiBbICIkQ1JPU1NfQlVJTEQiIF07IHRoZW4KIAkJIyBUaGlzIGFsc28gc2V0 cyBkZWZhdWx0IHtDLENYWCxMRH1GTEFHUyBmb3IgcHJvamVjdHMgYnVpbHQgdXNpbmcgcW1ha2UK QEAgLTI3OSwyOCArMTgwLDYgQEAgZG9fY29uZmlndXJlKCkgewogCQlmb3IgZCBpbiAkKGxzICR7 d3Jrc3JjfS9xdGJhc2UvaW5jbHVkZSk7IGRvCiAJCQlsbiAtc2Z2ICR7dmVyc2lvbn0vJHtkfS9w cml2YXRlIHF0YmFzZS9pbmNsdWRlLyR7ZH0vcHJpdmF0ZQogCQlkb25lCi0JCWlmIFsgIiRidWls ZF9vcHRpb25fd2ViZW5naW5lIiBdOyB0aGVuCi0JCQlfYm9vdHN0cmFwX2duCi0JCWZpCi0KLQkJ Y2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCi0JCW1pcHMqKQkjIHNnaWRlZnMuaCBpcyBp biAvdXNyL2luY2x1ZGUvYXNtCi0JCQlmb3IgZiBpbiBcCi0JCQkJcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2xzcy9saW51eF9zeXNjYWxsX3N1cHBvcnQuaCBc Ci0JCQkJcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFr cGFkL2JyZWFrcGFkL3NyYy9jb21tb24vYW5kcm9pZC9pbmNsdWRlL2FzbS1taXBzL2ZwcmVnZGVm LmggXAotCQkJCXF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9i cmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL2FuZHJvaWQvaW5jbHVkZS9hc20tbWlwcy9yZWdk ZWYuaCBcCi0JCQkJcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vYW5kcm9pZC9pbmNsdWRlL2FzbS1taXBzL2Fz bS5oIFwKLQkJCQlxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv dGNtYWxsb2MvdmVuZG9yL3NyYy9iYXNlL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oIFwKLQkJCQlx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvdGNtYWxsb2MvY2hy b21pdW0vc3JjL2Jhc2UvbGludXhfc3lzY2FsbF9zdXBwb3J0LmggXAotCQkJCXF0c2NyaXB0L3Ny Yy8zcmRwYXJ0eS9qYXZhc2NyaXB0Y29yZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaDsg ZG8KLQkJCQlzZWQgLWkgJGYgLWUgInM7PHNnaWRlZnMuaD47PGFzbS9zZ2lkZWZzLmg+OyIKLQkJ CWRvbmUKLQkJCSMgQXNzdW1lIHRoYXQgUkdCQSBvcmRlciBpcyBjb3JyZWN0IGZvciBiaWcgZW5k aWFuIENQVXMKLQkJCXNlZCAtaSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2tp YS9jb25maWcvU2tVc2VyQ29uZmlnLmggXAotCQkJCS1lICcvI2Vycm9yIFJlYWQgdGhlIGNvbW1l bnQgYXQgdGhpcyBsb2NhdGlvbi9kJwotCQkJOzsKLQkJZXNhYwotCQlwYXRjaCAtTnAwIDwgJHtG SUxFU0RJUn0vMDA5MC1oYXJkLWRpc2FibGUtcW1sY2hhY2hlZ2VuLnBhdGNoCiAJZWxzZQogCQkj IHFtYWtlIHtDWFgsTH1GTEFHUyBwYXRjaGVzCiAJCXNlZCAtaSAtZSAic3xeXChDWFhGTEFHUyA9 LipcKXxcMSAke0NYWEZMQUdTfXwiIFwKQEAgLTM0OCwyOSArMjI3LDEwIEBAIGRvX2NvbmZpZ3Vy ZSgpIHsKIAlvcHRzKz0iIC1zeXN0ZW0temxpYiIKIAlvcHRzKz0iIC1zeXN0ZW0tc3FsaXRlIgog CW9wdHMrPSIgLXN5c3RlbS1oYXJmYnV6eiIKLQkjIFJlbHkgb24gYXV0byBkZXRlY3Rpb24gKGZh aWxzIGlmIGZvcmNlZCBmb3IgY3Jvc3MgYnVpbGRzKQotCWlmIFsgIiRidWlsZF9vcHRpb25fd2Vi ZW5naW5lIiBdOyB0aGVuCi0JCSMgb3B0cys9IiAtd2ViZW5naW5lLWFsc2EiCi0JCW9wdHMrPSIg LW5vLXdlYmVuZ2luZS1lbWJlZGRlZC1idWlsZCIKLQkJb3B0cys9IiAtd2ViZW5naW5lLWljdSIK LQkJb3B0cys9IiAtd2ViZW5naW5lLWZmbXBlZyIKLQkJb3B0cys9IiAtd2ViZW5naW5lLW9wdXMi Ci0JCW9wdHMrPSIgLXdlYmVuZ2luZS13ZWJwIgotCQlvcHRzKz0iIC13ZWJlbmdpbmUtcGVwcGVy LXBsdWdpbnMiCi0JCW9wdHMrPSIgLXdlYmVuZ2luZS1wcmludGluZy1hbmQtcGRmIgotCQlvcHRz Kz0iIC13ZWJlbmdpbmUtcHJvcHJpZXRhcnktY29kZWNzIgotCQlvcHRzKz0iIC13ZWJlbmdpbmUt cHVsc2VhdWRpbyIKLQkJb3B0cys9IiAtd2ViZW5naW5lLXNwZWxsY2hlY2tlciIKLQkJb3B0cys9 IiAtd2ViZW5naW5lLXdlYnJ0YyIKLQkJb3B0cys9IiAtd2ViZW5naW5lLWdlb2xvY2F0aW9uIgot CQlvcHRzKz0iIC13ZWJlbmdpbmUtdjgtc25hcHNob3QiCi0JZmkKKwlvcHRzKz0iIC1uby1mZWF0 dXJlLWVnbGZzX2JyY20iICMgbWlzc2luZyBpbmNsdWRlIHBhdGgKIAlvcHRzKz0iIC1zaWxlbnQi CiAJIyBvcHRzKz0iIC12IgotCSMgbWFrZSBzdXJlIHRvIGRpc2FibGUgd2ViZW5naW5lIG9uIHBs YXRmb3JtcyB0aGF0IHdlIGRvbid0IGJ1aWxkIGl0IGZvcgotCWlmIFsgLXogIiRidWlsZF9vcHRp b25fd2ViZW5naW5lIiBdOyB0aGVuCi0JCW9wdHMrPSIgLXNraXAgcXR3ZWJlbmdpbmUiCi0JZmkK KwlvcHRzKz0iIC1za2lwIHF0d2ViZW5naW5lIgogCUxERkxBR1MrPSIgLVdsLC0tbm8ta2VlcC1t ZW1vcnkiICAjIG5lZWRzIG1vcmUgdGhhbiA4R0IgUkFNIGVsc2UKIAlpZiBbICIkQ1JPU1NfQlVJ TEQiIF07IHRoZW4KIAkJc3BlYz12b2lkLSR7WEJQU19DUk9TU19UUklQTEVUfS1nKysKQEAgLTM4 MCwzMyArMjQwLDEzIEBAIGRvX2NvbmZpZ3VyZSgpIHsKIAkJb3B0cys9IiAtc3lzcm9vdCAke1hC UFNfQ1JPU1NfQkFTRX0iCiAJCW9wdHMrPSIgLWhvc3RwcmVmaXggaG9zdCIKIAkJb3B0cys9IiAt ZXh0cHJlZml4IC91c3IiCi0JCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgotCQlhcm0q fG1pcHMqKQotCQkJaWYgWyAiJGJ1aWxkX29wdGlvbl93ZWJlbmdpbmUiIF07IHRoZW4KLQkJCQkj IFY4IHNuYXBzaG90IGNhbid0IGJlIGJ1aWx0IHdpdGggYSA2NCBiaXQgaG9zdCBjb21waWxlcgot CQkJCW9wdHMrPSIgLW5vLXdlYmVuZ2luZS12OC1zbmFwc2hvdCIKLQkJCWZpCi0JCQk7OwotCQll c2FjCi0JCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgotCQlhYXJjaDY0Knxhcm12Nyop Ci0JCQlzZWQgLWkgJHt3cmtzcmN9L3F0d2ViZW5naW5lL3NyYy9jb3JlL2NvbmZpZy9saW51eC5w cmkgXAotCQkJCS1lICIvYXJtX3VzZV9uZW9uPS9zO2ZhbHNlO3RydWU7IgotCQkJOzsKLQkJYXJt KikKLQkJCXNlZCAtaSAke3dya3NyY30vcXR3ZWJlbmdpbmUvc3JjL2NvcmUvY29uZmlnL2xpbnV4 LnByaSBcCi0JCQkJLWUgIi9hcm1fdXNlX25lb249L3M7dHJ1ZTtmYWxzZTsiCi0KLQkJCTs7Ci0J CWVzYWMKLQkJc2VkIC1pICR7d3Jrc3JjfS9xdHdlYmVuZ2luZS9zcmMvY29yZS9jb25maWcvbGlu dXgucHJpIFwKLQkJCS1lICIvZXF1YWxzKE1BUk1WL3M7dHJ1ZTtmYWxzZTsiCiAKIAkJIyBNYWtl IHN1cmUgbGliUXQ1RGVzaWduZXIgaXMgYnVpbHQKIAkJY3AgLXYgJHtGSUxFU0RJUn0vcXR0b29s c19zcmMucHJvIHF0dG9vbHMvc3JjL3NyYy5wcm8KIAkJY3AgLXYgJHtGSUxFU0RJUn0vZGVzaWdu ZXJfc3JjLnBybyBxdHRvb2xzL3NyYy9kZXNpZ25lci9zcmMvc3JjLnBybwogCQljcCAtdiAke0ZJ TEVTRElSfS9hc3Npc3RhbnQucHJvIHF0dG9vbHMvc3JjL2Fzc2lzdGFudC9hc3Npc3RhbnQucHJv CiAJCWNwIC12ICR7RklMRVNESVJ9L2xpbmd1aXN0LnBybyBxdHRvb2xzL3NyYy9saW5ndWlzdC9s aW5ndWlzdC5wcm8KKwkJY3AgLXYgJHtGSUxFU0RJUn0vdWl0b29scy5wcm8gcXR0b29scy9zcmMv ZGVzaWduZXIvc3JjL3VpdG9vbHMvdWl0b29scy5wcm8KIAlmaQogCiAJQ0M9ImNjIiBDWFg9ImMr KyIgQ1BQPSJjcHAiIExEPSJjKysiIEFSPSJhciIgQVM9ImFzIiBOTT0ibm0iIFwKQEAgLTQxOSwx MCArMjU5LDEwIEBAIGRvX2NvbmZpZ3VyZSgpIHsKIH0KIAogZG9fYnVpbGQoKSB7Ci0JZXhwb3J0 IE5JTkpBSk9CUz0ke21ha2Vqb2JzfQogCSMgUnVuIG1ha2UgdHdpY2UgYmVjYXVzZSBzb21ldGlt ZXMgYSBmaWxlICJjaHJvbWUvZ3JpdC9nZW5lcmF0ZWRfcmVzb3VyY2VzLmgiCiAJIyBpcyBub3Qg eWV0IHJlYWR5IHdoZW4gaXQgaXMgdG8gYmUgaW5jbHVkZWQuIFJlcGVhdGluZyBtYWtlIHdvcmtz IGFyb3VuZCB0aGF0CiAJIyBwcm9ibGVtIHdpdGhvdXQgaGF2aW5nIHRvIHJlc29ydCB0byBkaXNh YmxlX3BhcmFsbGVsX2J1aWxkPXllcworCSMgb3Igc29tZSBvdGhlciBmaWxlcwogCW1ha2UgJHtt YWtlam9ic30gfHwgbWFrZSAke21ha2Vqb2JzfQogfQogCkBAIC00OTQsMTIgKzMzNCwxNSBAQCBk b19pbnN0YWxsKCkgewogCQkjCiAJCWRpcnMrPSIgcXRkZWNsYXJhdGl2ZS90b29scy9xbWxtaW4i CiAJCWRpcnMrPSIgcXRkZWNsYXJhdGl2ZS90b29scy9xbWxsaW50IgorCQlkaXJzKz0iIHF0ZGVj bGFyYXRpdmUvdG9vbHMvcW1sY2FjaGVnZW4iCiAJCWRpcnMrPSIgcXRkZWNsYXJhdGl2ZS90b29s cy9xbWxpbXBvcnRzY2FubmVyIgogCQlkaXJzKz0iIHF0YmFzZS9zcmMvdG9vbHMvbW9jIgogCQlk aXJzKz0iIHF0YmFzZS9zcmMvdG9vbHMvcmNjIgogCQlkaXJzKz0iIHF0YmFzZS9zcmMvdG9vbHMv dWljIgogCQlkaXJzKz0iIHF0YmFzZS9zcmMvdG9vbHMvcWRidXNjcHAyeG1sIgogCQlkaXJzKz0i IHF0YmFzZS9zcmMvdG9vbHMvcWRidXN4bWwyY3BwIgorCQlkaXJzKz0iIHF0YmFzZS9zcmMvdG9v bHMvcXZrZ2VuIgorCQlkaXJzKz0iIHF0YmFzZS9zcmMvdG9vbHMvdHJhY2VnZW4iCiAJCWRpcnMr PSIgcXRiYXNlL3NyYy90b29scy9xbGFsciIKIAkJZGlycys9IiBxdDNkL3Rvb2xzL3FnbHRmIgog CQlkaXJzKz0iIHF0cmVtb3Rlb2JqZWN0cy90b29scy9yZXBjIgpAQCAtNTcxLDYgKzQxNCwxMDIg QEAgZG9faW5zdGFsbCgpIHsKIAlybSAtcmYgJHtERVNURElSfS9idWlsZGRpcgogfQogCitxdDUt Z3VpX3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYys9IiAtIEd1aSIKKwlwa2dfaW5zdGFsbCgpIHsK KwkJdm1vdmUgInVzci9saWIvbGliUXQ1R3VpLnNvKiIKKwkJdm1vdmUgInVzci9saWIvbGliUXQ1 WGNiUXBhLnNvKiIKKwkJdm1vdmUgInVzci9saWIvbGliUXQ1RWdsRlNEZXZpY2VJbnRlZ3JhdGlv bi5zbyoiCisJCXZtb3ZlICJ1c3IvbGliL2xpYlF0NUVnbEZzS21zU3VwcG9ydC5zbyoiCisJCXZt b3ZlIHVzci9saWIvcXQ1L3BsdWdpbnMvZ2VuZXJpYworCQl2bW92ZSB1c3IvbGliL3F0NS9wbHVn aW5zL3BsYXRmb3JtcworCQl2bW92ZSB1c3IvbGliL3F0NS9wbHVnaW5zL3hjYmdsaW50ZWdyYXRp b25zCisJCXZtb3ZlIHVzci9saWIvcXQ1L3BsdWdpbnMvaW1hZ2Vmb3JtYXRzCisJCXZtb3ZlIHVz ci9saWIvcXQ1L3BsdWdpbnMvZWdsZGV2aWNlaW50ZWdyYXRpb25zCisJCXZtb3ZlIHVzci9saWIv cXQ1L3BsdWdpbnMvcGxhdGZvcm1pbnB1dGNvbnRleHRzCisJCXZtb3ZlIHVzci9saWIvcXQ1L3Bs dWdpbnMvcGxhdGZvcm10aGVtZXMKKwl9Cit9CisKK3F0NS1kYnVzX3BhY2thZ2UoKSB7CisJc2hv cnRfZGVzYys9IiAtIERCdXMiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xp YlF0NURCdXMuc28qIgorCX0KK30KKworcXQ1LWNvcmVfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNj Kz0iIC0gQ29yZSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGliUXQ1Q29y ZS5zbyoiCisJfQorfQorCitxdDUtb3BlbmdsX3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYys9IiAt IE9wZW5HTCIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGliUXQ1T3BlbkdM LnNvKiIKKwl9Cit9CisKK3F0NS1wcmludHN1cHBvcnRfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNj Kz0iIC0gUHJpbnQgU3VwcG9ydCIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIv bGliUXQ1UHJpbnRTdXBwb3J0LnNvKiIKKwkJdm1vdmUgdXNyL2xpYi9xdDUvcGx1Z2lucy9wcmlu dHN1cHBvcnQKKwl9Cit9CisKK3F0NS1jb25jdXJyZW50X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVz Yys9IiAtIENvbmN1cnJlbmN5IgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSAidXNyL2xpYi9s aWJRdDVDb25jdXJyZW50LnNvKiIKKwl9Cit9CisKK3F0NS13aWRnZXRzX3BhY2thZ2UoKSB7CisJ c2hvcnRfZGVzYys9IiAtIFdpZGdldHMiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3Iv bGliL2xpYlF0NVdpZGdldHMuc28qIgorCX0KK30KKworcXQ1LW5ldHdvcmtfcGFja2FnZSgpIHsK KwlzaG9ydF9kZXNjKz0iIC0gTmV0d29yayIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVz ci9saWIvbGliUXQ1TmV0d29yay5zbyoiCisJCXZtb3ZlIHVzci9saWIvcXQ1L3BsdWdpbnMvYmVh cmVyCisJfQorfQorCitxdDUtc3FsX3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYys9IiAtIFNxbCIK Kwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGliUXQ1U3FsLnNvKiIKKwl9Cit9 CisKK3F0NS10ZXN0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYys9IiAtIFRlc3QiCisJcGtnX2lu c3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYlF0NVRlc3Quc28qIgorCX0KK30KKworcXQ1 LXhtbF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2MrPSIgLSBYbWwiCisJcGtnX2luc3RhbGwoKSB7 CisJCXZtb3ZlICJ1c3IvbGliL2xpYlF0NVhtbC5zbyoiCisJfQorfQorCitxdDUtYmFzZS1kb2Nz X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYys9IiAtIERvY3VtZW50YXRpb24iCisJcGtnX2luc3Rh bGwoKSB7CisJCXZtb3ZlIHVzci9zaGFyZS9kb2MvcXQ1CisJfQorfQorCiBxdDUtM2QtZGV2ZWxf cGFja2FnZSgpIHsKIAlzaG9ydF9kZXNjKz0iIC0gQysrIGFuZCBRTUwgQVBJcyBmb3IgM0QgZ3Jh cGhpY3MgKGRldmVsb3BtZW50KSIKIAlkZXBlbmRzPSJxdDUtM2QtJHt2ZXJzaW9ufV8ke3Jldmlz aW9ufSBxdDUtZGV2ZWwtJHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKQEAgLTY0NCw3ICs1ODMsNyBA QCBxdDUtZGVjbGFyYXRpdmVfcGFja2FnZSgpIHsKIAlzaG9ydF9kZXNjKz0iIC0gRGVjbGFyYXRp dmUgY29tcG9uZW50IgogCXBrZ19pbnN0YWxsKCkgewogCQlfaW5zdGFsbF9zdWJwa2cgcXRkZWNs YXJhdGl2ZQotCQlfbW92ZV90YXJnZXRfYmluYXJpZXMgcW1sbWluIHFtbGxpbnQgcW1saW1wb3J0 c2Nhbm5lcgorCQlfbW92ZV90YXJnZXRfYmluYXJpZXMgcW1sbWluIHFtbGxpbnQgcW1saW1wb3J0 c2Nhbm5lciBxbWxjYWNoZWdlbgogCX0KIH0KIApAQCAtNzkxLDYgKzczMCwxMyBAQCBxdDUtcXVp Y2tjb250cm9sczJfcGFja2FnZSgpIHsKIAl9CiB9CiAKK3F0NS1xdWlja3RpbWVsaW5lX3BhY2th Z2UoKSB7CisJc2hvcnRfZGVzYys9IiAtIEtleWZyYW1lLWJhc2VkIGFuaW1hdGlvbnMiCisJcGtn X2luc3RhbGwoKSB7CisJCV9pbnN0YWxsX3N1YnBrZyBxdHF1aWNrdGltZWxpbmUKKwl9Cit9CisK IHF0NS1yZW1vdGVvYmplY3RzLWRldmVsX3BhY2thZ2UoKSB7CiAJc2hvcnRfZGVzYys9IiAtIFJl bW90ZSBPYmplY3RzIChkZXZlbG9wbWVudCkiCiAJZGVwZW5kcz0icXQ1LXJlbW90ZW9iamVjdHMt JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSBxdDUtZGV2ZWwtJHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIK QEAgLTk1OSwyMSArOTA1LDYgQEAgcXQ1LXdlYmNoYW5uZWxfcGFja2FnZSgpIHsKIAl9CiB9CiAK LXF0NS13ZWJlbmdpbmUtZGV2ZWxfcGFja2FnZSgpIHsKLQlzaG9ydF9kZXNjKz0iIC0gV2ViRW5n aW5lIGNvbXBvbmVudCAoZGV2ZWxvcG1lbnQpIgotCWRlcGVuZHM9InF0NS13ZWJlbmdpbmUtJHt2 ZXJzaW9ufV8ke3JldmlzaW9ufSBxdDUtZGV2ZWwtJHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKLQlw a2dfaW5zdGFsbCgpIHsKLQkJX2luc3RhbGxfZGV2ZWwgcXR3ZWJlbmdpbmUKLQl9Ci19Ci0KLXF0 NS13ZWJlbmdpbmVfcGFja2FnZSgpIHsKLQlzaG9ydF9kZXNjKz0iIC0gV2ViRW5naW5lIGNvbXBv bmVudCIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJX2luc3RhbGxfc3VicGtnIHF0d2ViZW5naW5lCi0J fQotfQotCiBxdDUtd2ViZ2xwbHVnaW4tZGV2ZWxfcGFja2FnZSgpIHsKIAlzaG9ydF9kZXNjKz0i IC0gV2ViR0wgcGx1Z2luIChkZXZlbG9wbWVudCkiCiAJZGVwZW5kcz0icXQ1LXdlYmdscGx1Z2lu LSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0gcXQ1LWRldmVsLSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0i CkBAIC0xMDQ0LDYgKzk3NSw3IEBAIHF0NS14bWxwYXR0ZXJucy1kZXZlbF9wYWNrYWdlKCkgewog CiBxdDUteG1scGF0dGVybnNfcGFja2FnZSgpIHsKIAlzaG9ydF9kZXNjKz0iIC0gWE1MIGNvbXBv bmVudHMiCisJZGVwZW5kcz0icXRjaG9vc2VyIgogCXBrZ19pbnN0YWxsKCkgewogCQlfaW5zdGFs bF9zdWJwa2cgcXR4bWxwYXR0ZXJucwogCX0KQEAgLTEwNTgsMTIgKzk5MCwxMyBAQCBxdDUtdHJh bnNsYXRpb25zX3BhY2thZ2UoKSB7CiAKIHF0NS1ob3N0LXRvb2xzX3BhY2thZ2UoKSB7CiAJc2hv cnRfZGVzYys9IiAtIFRvb2xzIHJlcXVpcmVkIHdoZW4gY3Jvc3MgY29tcGlsaW5nIgorCWRlcGVu ZHM9InF0Y2hvb3NlciIKIAlwa2dfaW5zdGFsbCgpIHsKIAkJbG9jYWwgZGVzdD0ke1hCUFNfREVT VERJUn0vJHtYQlBTX0NST1NTX1RSSVBMRVR9L3F0NS10b29scy0ke3ZlcnNpb259CiAJCXZta2Rp ciB1c3IvbGliL3F0NS9iaW4KIAkJdm1rZGlyIHVzci9iaW4KLQkJZm9yIGYgaW4gbW9jIHJjYyB1 aWMgcWxhbHIgcWRidXNjcHAyeG1sIHFkYnVzeG1sMmNwcCBcCi0JCQlsY29udmVydCBsdXBkYXRl IGx1cGRhdGUtcHJvIGxwcm9kdW1wIGxyZWxlYXNlIGxyZWxlYXNlLXBybzsgZG8KKwkJZm9yIGYg aW4gbW9jIHJjYyB1aWMgcWxhbHIgcWRidXNjcHAyeG1sIHFkYnVzeG1sMmNwcCBxdmtnZW4gZml4 cXQ0aGVhZGVycy5wbCB0cmFjZWdlbiBcCisJCQlzeW5jcXQucGwgbGNvbnZlcnQgbHVwZGF0ZSBs dXBkYXRlLXBybyBscHJvZHVtcCBscmVsZWFzZSBscmVsZWFzZS1wcm87IGRvCiAJCQlpZiBbIC1y ICR7ZGVzdH0vdXNyL2xpYi9xdDUvYmluLyR7Zn0gXTsgdGhlbgogCQkJCW12IC12ICR7ZGVzdH0v dXNyL2xpYi9xdDUvYmluLyR7Zn0gJHtQS0dERVNURElSfS91c3IvbGliL3F0NS9iaW4vCiAJCQlm aQpAQCAtMTA5Miw3ICsxMDI1LDcgQEAgcXQ1LXRvb2xzLWRldmVsX3BhY2thZ2UoKSB7CiAKIHF0 NS10b29sc19wYWNrYWdlKCkgewogCXNob3J0X2Rlc2MrPSIgLSBEZXZlbG9wbWVudCB0b29scyIK LQlkZXBlbmRzPSJxdDUtdHJhbnNsYXRpb25zIGRlc2t0b3AtZmlsZS11dGlscyBoaWNvbG9yLWlj b24tdGhlbWUiCisJZGVwZW5kcz0icXRjaG9vc2VyIHF0NS10cmFuc2xhdGlvbnMgZGVza3RvcC1m aWxlLXV0aWxzIGhpY29sb3ItaWNvbi10aGVtZSIKIAlwa2dfaW5zdGFsbCgpIHsKIAkJbG9jYWwg ZiBkZXN0PSR7WEJQU19ERVNURElSfS8ke1hCUFNfQ1JPU1NfVFJJUExFVH0vcXQ1LWhvc3QtdG9v bHMtJHt2ZXJzaW9ufQogCQlfaW5zdGFsbF9zdWJwa2cgcXR0b29scwpAQCAtMTEzMyw4ICsxMDY2 LDE5IEBAIHF0NS10b29sc19wYWNrYWdlKCkgewogcXQ1LWRldmVsX3BhY2thZ2UoKSB7CiAJZGVw ZW5kcz0iemxpYi1kZXZlbCBsaWJyZXNzbC1kZXZlbD49Mi4xLjQgbGliWGV4dC1kZXZlbCBsaWJY cmVuZGVyLWRldmVsCiAJCWZvbnRjb25maWctZGV2ZWwgbGliZ2xpYi1kZXZlbCBNZXNhTGliLWRl dmVsIG10ZGV2LWRldmVsCi0JCWRidXMtZGV2ZWwgaWN1LWRldmVsIGN1cHMtZGV2ZWwgcXQ1LSR7 dmVyc2lvbn1fJHtyZXZpc2lvbn0KKwkJZGJ1cy1kZXZlbCBpY3UtZGV2ZWwgY3Vwcy1kZXZlbAor CQlxdDUtZ3VpLSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KKwkJcXQ1LWRidXMtJHt2ZXJzaW9ufV8k e3JldmlzaW9ufQorCQlxdDUtY29yZS0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJCXF0NS13aWRn ZXRzLSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KIAkJcXQ1LXFtYWtlLSR7dmVyc2lvbn1fJHtyZXZp c2lvbn0KKwkJcXQ1LW9wZW5nbC0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJCXF0NS1wcmludHN1 cHBvcnQtJHt2ZXJzaW9ufV8ke3JldmlzaW9ufQorCQlxdDUtY29uY3VycmVudC0ke3ZlcnNpb259 XyR7cmV2aXNpb259CisJCXF0NS1zcWwtJHt2ZXJzaW9ufV8ke3JldmlzaW9ufQorCQlxdDUtdGVz dC0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJCXF0NS1uZXR3b3JrLSR7dmVyc2lvbn1fJHtyZXZp c2lvbn0KKwkJcXQ1LXhtbC0ke3ZlcnNpb259XyR7cmV2aXNpb259CiAJCXF0NS1ob3N0LXRvb2xz LSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCiAJc2hvcnRfZGVzYys9IiAtIERldmVsb3BtZW50IGZp bGVzIgogCSMgcXQ1LWVuZ2luaW8tZGV2ZWwgaXMgZ29uZQpAQCAtMTE4NSw2ICsxMTI5LDcgQEAg cXQ1LXBsdWdpbi10ZHNfcGFja2FnZSgpIHsKIAogcXQ1LXFtYWtlX3BhY2thZ2UoKSB7CiAJc2hv cnRfZGVzYys9IiAtIFFtYWtlIE1ha2VmaWxlIGdlbmVyYXRvciB0b29sIgorCWRlcGVuZHM9InF0 Y2hvb3NlciIKIAlwa2dfaW5zdGFsbCgpIHsKIAkJdm1vdmUgdXNyL2xpYi9xdDUvYmluL3FtYWtl CiAJCXZtb3ZlIHVzci9saWIvcXQ1L21rc3BlY3MKQEAgLTEyMTIsMyArMTE1NywxMyBAQCBxdDUt cW1ha2VfcGFja2FnZSgpIHsKIAkJZmkKIAl9CiB9CisKK3F0NS14Y2ItcHJpdmF0ZS1oZWFkZXJz X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYys9IiAtIFByaXZhdGUgaGVhZGVycyBmb3IgUXQ1IFhj YiIKKwlkZXBlbmRzPSJxdDUtZGV2ZWwiCisJcGtnX2luc3RhbGwoKSB7CisJCWZvciBmIGluICR7 d3Jrc3JjfS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi8qLmg7IGRvCisJCQl2aW5z dGFsbCAkZiA2NDQgdXNyL2luY2x1ZGUvcXQ1eGNiLXByaXZhdGUKKwkJZG9uZQorCX0KK30KCkZy b20gOWEyN2M2ZTJkZDAyZmU2MzJkZDM5NTVkNWY1MDA1ZDQ1YWI1NjE3MyBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogSm9obiA8am9obnpAcG9zdGVvLm5ldD4KRGF0ZTogVHVlLCAxNSBP Y3QgMjAxOSAxMzoxOTo0MyArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDIvMTBdIE5ldyBwYWNrYWdl OiBxdDUtd2ViZW5naW5lLTUuMTQuMQoKLS0tCiBzcmNwa2dzL3F0NS13ZWJlbmdpbmUtZGV2ZWwg ICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9maWxlcy9y ZXNvbHZfY29tcGF0LmggICB8ICAyOSArKysrCiAuLi50ZS1pbnN0ZWFkLW9mLV9saWJjX2Zwc3Rh dGUtb24tbGludXgucGF0Y2ggfCAgNDIgKysrKysKIC4uLnJlZy5oLXRvLWdldC1fX1dPUkRTSVpF LW9uLW11c2wtbGliYy5wYXRjaCB8ICAyNiArKysKIC4uLi9wYXRjaGVzLzAwMDMtbXVzbC1kaXNw YXRjaC10by1tdXNsLnBhdGNoICB8IDEwMyArKysrKysrKysrKysKIC4uLi9wYXRjaGVzLzAwMDQt bXVzbC1uby1tYWxsaW5mby5wYXRjaCAgICAgICB8ICA0MCArKysrKwogLi4uL3BhdGNoZXMvMDAw NS1tdXNsLW9mZl90LnBhdGNoICAgICAgICAgICAgIHwgIDEwICsrCiAuLi4vcGF0Y2hlcy8wMDA2 LW11c2wtcHJlYWQtcHdyaXRlLnBhdGNoICAgICAgfCAgMTggKysKIC4uLi9wYXRjaGVzLzAwMDct bXVzbC1yZXBsYWNlLXB2YWxsb2MucGF0Y2ggICB8ICAxNCArKwogLi4uL3BhdGNoZXMvMDAwOC1t dXNsLXJlc29sdmUucGF0Y2ggICAgICAgICAgIHwgIDI2ICsrKwogLi4uL3BhdGNoZXMvMDAwOS1t dXNsLXNpZ2luZm9fdC5wYXRjaCAgICAgICAgIHwgIDE4ICsrCiAuLi4vcGF0Y2hlcy8wMDEwLW11 c2wtc3RhY2tzdGFydC5wYXRjaCAgICAgICAgfCAgMjAgKysrCiAuLi4vcGF0Y2hlcy8wMDExLW11 c2wtc2FuZGJveC5wYXRjaCAgICAgICAgICAgfCAgNzEgKysrKysrKysKIC4uLjAwMTItbXVzbC1j aHJvbWl1bS1kZWZhdWx0LXN0YWNrc2l6ZS5wYXRjaCB8ICAxNSArKwogLi4uLzAwMTQtbXVzbC1j cm9zcy1uby1hc21fcHRyYWNlX2gucGF0Y2ggICAgIHwgIDMwICsrKysKIC4uLi9xdDUtd2ViZW5n aW5lL3BhdGNoZXMvMDAxNS15YXNtLW5scy5wYXRjaCB8ICAxMyArKwogLi4uL3BhdGNoZXMvMDAx Ni1xdC1tdXNsLWV4ZWNpbmZvLnBhdGNoICAgICAgIHwgIDk0ICsrKysrKysrKysrCiAuLi4vMDAx Ny1xdC1tdXNsLXRocmVhZC1zdGFja3NpemUucGF0Y2ggICAgICAgfCAgMjYgKysrCiAuLi4vcGF0 Y2hlcy8wMDE4LXNhbmRib3gtbWVtYmFycmllci5wYXRjaCAgICAgfCAgNjAgKysrKysrKwogLi4u L3BhdGNoZXMvMDAxOS1nbi1jcm9zcy1zeXNyb290LnBhdGNoICAgICAgIHwgIDI0ICsrKwogLi4u L3BhdGNoZXMvMDAyMC1tc2d2ZWMtcHVzaF9iYWNrLnBhdGNoICAgICAgIHwgIDE0ICsrCiAuLi4v cGF0Y2hlcy8wMDIxLXNhbmRib3gtc2NoZWRfZ2V0cGFyYW0ucGF0Y2ggfCAgMjQgKysrCiAuLi4v MDAyMi1jYW5vbmljYWxpemUtZmlsZS1uYW1lLW11c2wucGF0Y2ggICAgfCAgMTEgKysKIHNyY3Br Z3MvcXQ1LXdlYmVuZ2luZS90ZW1wbGF0ZSAgICAgICAgICAgICAgICB8IDE1NSArKysrKysrKysr KysrKysrKysKIDI0IGZpbGVzIGNoYW5nZWQsIDg4NCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9u KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUtd2ViZW5naW5lL2ZpbGVzL3Jlc29s dl9jb21wYXQuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRj aGVzLzAwMDEtVXNlLV9mcHN0YXRlLWluc3RlYWQtb2YtX2xpYmNfZnBzdGF0ZS1vbi1saW51eC5w YXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAw MDItaW5jbHVkZS1zeXMtcmVnLmgtdG8tZ2V0LV9fV09SRFNJWkUtb24tbXVzbC1saWJjLnBhdGNo CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwMy1t dXNsLWRpc3BhdGNoLXRvLW11c2wucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0 NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDA0LW11c2wtbm8tbWFsbGluZm8ucGF0Y2gKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDA1LW11c2wtb2ZmX3Qu cGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8w MDA2LW11c2wtcHJlYWQtcHdyaXRlLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9x dDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwNy1tdXNsLXJlcGxhY2UtcHZhbGxvYy5wYXRjaAogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMDgtbXVzbC1y ZXNvbHZlLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUtd2ViZW5naW5lL3Bh dGNoZXMvMDAwOS1tdXNsLXNpZ2luZm9fdC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMTAtbXVzbC1zdGFja3N0YXJ0LnBhdGNoCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAxMS1tdXNsLXNh bmRib3gucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0 Y2hlcy8wMDEyLW11c2wtY2hyb21pdW0tZGVmYXVsdC1zdGFja3NpemUucGF0Y2gKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDE0LW11c2wtY3Jvc3Mt bm8tYXNtX3B0cmFjZV9oLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUtd2Vi ZW5naW5lL3BhdGNoZXMvMDAxNS15YXNtLW5scy5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Y3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMTYtcXQtbXVzbC1leGVjaW5mby5wYXRjaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMTctcXQt bXVzbC10aHJlYWQtc3RhY2tzaXplLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9x dDUtd2ViZW5naW5lL3BhdGNoZXMvMDAxOC1zYW5kYm94LW1lbWJhcnJpZXIucGF0Y2gKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDE5LWduLWNyb3Nz LXN5c3Jvb3QucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUv cGF0Y2hlcy8wMDIwLW1zZ3ZlYy1wdXNoX2JhY2sucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDIxLXNhbmRib3gtc2NoZWRfZ2V0cGFyYW0u cGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8w MDIyLWNhbm9uaWNhbGl6ZS1maWxlLW5hbWUtbXVzbC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS90ZW1wbGF0ZQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1 LXdlYmVuZ2luZS1kZXZlbCBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS1kZXZlbAppbmRleCA3NTc5 M2ViNjY2NC4uMWJmZGVmMTEwOGIgMTIwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS1k ZXZlbAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUtZGV2ZWwKQEAgLTEgKzEgQEAKLXF0NQpc IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK3F0NS13ZWJlbmdpbmUKXCBObyBuZXdsaW5lIGF0 IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvZmlsZXMvcmVz b2x2X2NvbXBhdC5oIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL2ZpbGVzL3Jlc29sdl9jb21wYXQu aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNGYwZTg1MmExOWQKLS0t IC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvZmlsZXMvcmVzb2x2X2NvbXBh dC5oCkBAIC0wLDAgKzEsMjkgQEAKKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCisvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCisgKiByZXNvbHZfY29tcGF0LmgKKyAqCisgKiBNaW1pY2sgR0xJQkMncyByZXNf bmluaXQoKSBhbmQgcmVzX25jbG9zZSgpIGZvciBtdXNsIGxpYmMKKyAqIE5vdGU6IHJlc19pbml0 KCkgaXMgYWN0dWFsbHkgZGVwcmVjYXRlZCBhY2NvcmRpbmcgdG8KKyAqIGh0dHA6Ly9kb2NzLm9y YWNsZS5jb20vY2QvRTM2Nzg0XzAxL2h0bWwvRTM2ODc1L3Jlcy1uY2xvc2UtM3Jlc29sdi5odG1s CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKK3N0YXRpYyBpbmxp bmUgaW50IHJlc19uaW5pdChyZXNfc3RhdGUgc3RhdHApCit7CisJaW50IHJjID0gcmVzX2luaXQo KTsKKwlpZiAoc3RhdHAgIT0gJl9yZXMpIHsKKwkJbWVtY3B5KHN0YXRwLCAmX3Jlcywgc2l6ZW9m KCpzdGF0cCkpOworCX0KKwlyZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IHJlc19u Y2xvc2UocmVzX3N0YXRlIHN0YXRwKQoreworCWlmICghc3RhdHApCisJCXJldHVybiAtMTsKKwlp ZiAoc3RhdHAgIT0gJl9yZXMpIHsKKwkJbWVtc2V0KHN0YXRwLCAwLCBzaXplb2YoKnN0YXRwKSk7 CisJfQorCXJldHVybiAwOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJl bmdpbmUvcGF0Y2hlcy8wMDAxLVVzZS1fZnBzdGF0ZS1pbnN0ZWFkLW9mLV9saWJjX2Zwc3RhdGUt b24tbGludXgucGF0Y2ggYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDAxLVVzZS1f ZnBzdGF0ZS1pbnN0ZWFkLW9mLV9saWJjX2Zwc3RhdGUtb24tbGludXgucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjNlNzg3ZDEzNzRlCi0tLSAvZGV2L251bGwK KysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwMS1Vc2UtX2Zwc3RhdGUtaW5z dGVhZC1vZi1fbGliY19mcHN0YXRlLW9uLWxpbnV4LnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKKy0t LSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQv YnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVh ZGVyLmgJMjAxOC0wNi0xNSAwOTo0NzoyMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3Jj L2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmgJMjAxOC0w OS0wNyAyMjoyMToyOC41MjE3NjM3MTYgKzAyMDAKK0BAIC01MCw3ICs1MCw3IEBACisgICAvLyAg IGluZm86IHRoZSBjb2xsZWN0aW9uIG9mIHJlZ2lzdGVyIHN0cnVjdHVyZXMuCisgI2lmIGRlZmlu ZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjQpCisgICBzdGF0aWMgdm9pZCBGaWxsQ1BV Q29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0X3QgKnVjLAorLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IF9saWJjX2Zwc3RhdGUqIGZwKTsK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBfZnBzdGF0ZSogZnAp OworICNlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pCisgICBzdGF0aWMgdm9pZCBGaWxsQ1BVQ29u dGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0X3QgKnVjLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGZwc2ltZF9jb250ZXh0KiBmcHJlZ3Mp OworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVh a3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29udGV4 dF9yZWFkZXIuY2MJMjAxOC0wNi0xNSAwOTo0NzoyMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtw YWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmNj CTIwMTgtMDktMDcgMjI6MjE6NDUuNzY2NzYyNjg4ICswMjAwCitAQCAtNDksNyArNDksNyBAQAor IH0KKyAKKyB2b2lkIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BV ICpvdXQsIGNvbnN0IHVjb250ZXh0X3QgKnVjLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHN0cnVjdCBfbGliY19mcHN0YXRlKiBmcCkgeworKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBfZnBzdGF0ZSogZnApIHsKKyAg IGNvbnN0IGdyZWdfdCogcmVncyA9IHVjLT51Y19tY29udGV4dC5ncmVnczsKKyAKKyAgIG91dC0+ Y29udGV4dF9mbGFncyA9IE1EX0NPTlRFWFRfWDg2X0ZVTEwgfAorQEAgLTk3LDcgKzk3LDcgQEAK KyB9CisgCisgdm9pZCBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQ VSAqb3V0LCBjb25zdCB1Y29udGV4dF90ICp1YywKKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgX2xpYmNfZnBzdGF0ZSogZnByZWdzKSB7CisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IF9mcHN0YXRlKiBmcHJl Z3MpIHsKKyAgIGNvbnN0IGdyZWdfdCogcmVncyA9IHVjLT51Y19tY29udGV4dC5ncmVnczsKKyAK KyAgIG91dC0+Y29udGV4dF9mbGFncyA9IE1EX0NPTlRFWFRfQU1ENjRfRlVMTDsKKy0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtw YWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVyLmgJMjAx OC0wNi0xNSAwOTo0NzoyMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9s aW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVyLmgJMjAxOC0wOS0wNyAyMzozNjoz Mi4wNDk0OTUyODUgKzAyMDAKK0BAIC00OCw3ICs0OCw3IEBACisgI2lmIGRlZmluZWQoX19hYXJj aDY0X18pCisgdHlwZWRlZiBzdHJ1Y3QgZnBzaW1kX2NvbnRleHQgZnBzdGF0ZV90OworICNlbGlm ICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCistdHlwZWRlZiBz dHJ1Y3QgX2xpYmNfZnBzdGF0ZSBmcHN0YXRlX3Q7CisrdHlwZWRlZiBzdHJ1Y3QgX2Zwc3RhdGUg ZnBzdGF0ZV90OworICNlbmRpZgorIAorIC8vIFRoZXNlIGVudHJpZXMgc3RvcmUgYSBsaXN0IG9m IG1lbW9yeSByZWdpb25zIHRoYXQgdGhlIGNsaWVudCB3YW50cyBpbmNsdWRlZApkaWZmIC0tZ2l0 IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwMi1pbmNsdWRlLXN5cy1yZWcuaC10 by1nZXQtX19XT1JEU0laRS1vbi1tdXNsLWxpYmMucGF0Y2ggYi9zcmNwa2dzL3F0NS13ZWJlbmdp bmUvcGF0Y2hlcy8wMDAyLWluY2x1ZGUtc3lzLXJlZy5oLXRvLWdldC1fX1dPUkRTSVpFLW9uLW11 c2wtbGliYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZGE0 MTYwYjIxYmQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hl cy8wMDAyLWluY2x1ZGUtc3lzLXJlZy5oLXRvLWdldC1fX1dPUkRTSVpFLW9uLW11c2wtbGliYy5w YXRjaApAQCAtMCwwICsxLDI2IEBACitGcm9tIDkwMDFjNTRkNmI5NzQ0NDkxNzRhOGNlZThmM2Y1 ZDc4YTliZDZjOWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBGZWxpeCBKYW5kYSA8 ZmVsaXguamFuZGFAcG9zdGVvLmRlPgorRGF0ZTogU3VuLCAxIEZlYiAyMDE1IDE0OjI2OjUyICsw MTAwCitTdWJqZWN0OiBbUEFUQ0ggMy82XSBpbmNsdWRlIDxzeXMvcmVnLmg+IHRvIGdldCBfX1dP UkRTSVpFIG9uIG11c2wgbGliYworCistLS0KKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NvbW1vbi9saW51eC9lbGZf Y29yZV9kdW1wLmggfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlm ZiAtLWdpdCBhL3NyYy9jb21tb24vbGludXgvZWxmX2NvcmVfZHVtcC5oIGIvc3JjL2NvbW1vbi9s aW51eC9lbGZfY29yZV9kdW1wLmgKK2luZGV4IGQwM2M3YTguLjAyZWIzOTEgMTAwNjQ0CistLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2Jy ZWFrcGFkL3NyYy9jb21tb24vbGludXgvZWxmX2NvcmVfZHVtcC5oCisrKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9j b21tb24vbGludXgvZWxmX2NvcmVfZHVtcC5oCitAQCAtMzYsNiArMzYsOSBAQAorICNpbmNsdWRl IDxlbGYuaD4KKyAjaW5jbHVkZSA8bGluay5oPgorICNpbmNsdWRlIDxzdGRkZWYuaD4KKysjaWZu ZGVmIF9fR0xJQkNfXworKyNpbmNsdWRlIDxzeXMvcmVnLmg+CisrI2VuZGlmCisgCisgI2luY2x1 ZGUgImNvbW1vbi9tZW1vcnlfcmFuZ2UuaCIKKyAKKy0tIAorMi4wLjUKKwpkaWZmIC0tZ2l0IGEv c3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwMy1tdXNsLWRpc3BhdGNoLXRvLW11c2wu cGF0Y2ggYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDAzLW11c2wtZGlzcGF0Y2gt dG8tbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZGUz MmEzZGFiOTUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hl cy8wMDAzLW11c2wtZGlzcGF0Y2gtdG8tbXVzbC5wYXRjaApAQCAtMCwwICsxLDEwMyBAQAorLS0t IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL2FsbG9jYXRvci9hbGxvY2F0 b3Jfc2hpbV9kZWZhdWx0X2Rpc3BhdGNoX3RvX2dsaWJjLmNjCistLS0gcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvYWxsb2NhdG9yL2FsbG9jYXRvcl9zaGltX2RlZmF1bHRf ZGlzcGF0Y2hfdG9fZ2xpYmMuY2MKK0BAIC02LDYgKzYsNyBAQAorIAorICNpbmNsdWRlIDxtYWxs b2MuaD4KKyAKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pCisgLy8gVGhpcyB0cmFuc2xhdGlvbiB1 bml0IGRlZmluZXMgYSBkZWZhdWx0IGRpc3BhdGNoIGZvciB0aGUgYWxsb2NhdG9yIHNoaW0gd2hp Y2gKKyAvLyByb3V0ZXMgYWxsb2NhdGlvbnMgdG8gbGliYyBmdW5jdGlvbnMuCisgLy8gVGhlIGNv ZGUgaGVyZSBpcyBzdHJvbmdseSBpbnNwaXJlZCBmcm9tIHRjbWFsbG9jJ3MgbGliY19vdmVycmlk ZV9nbGliYy5oLgorQEAgLTczLDMgKzc0LDkyIEBAIGNvbnN0IEFsbG9jYXRvckRpc3BhdGNoIEFs bG9jYXRvckRpc3BhdGNoOjpkZWZhdWx0X2Rpc3BhdGNoID0geworICAgICBudWxscHRyLCAgICAg ICAgICAgICAgIC8qIGZyZWVfZGVmaW5pdGVfc2l6ZV9mdW5jdGlvbiAqLworICAgICBudWxscHRy LCAgICAgICAgICAgICAgIC8qIG5leHQgKi8KKyB9OworKworKyNlbHNlIC8vIGRlZmluZWQoX19H TElCQ19fKQorKworKyNpbmNsdWRlIDxkbGZjbi5oPgorKworK2V4dGVybiAiQyIgeworKy8vIERl Y2xhcmUgZnVuY3Rpb24gcG9pbnRlcnMgdG8gdGhlIG1lbW9yeSBmdW5jdGlvbnMKKyt0eXBlZGVm IHZvaWQqICgqdF9saWJjX21hbGxvYykoc2l6ZV90IHNpemUpOworK3R5cGVkZWYgdm9pZCogKCp0 X2xpYmNfY2FsbG9jKShzaXplX3Qgbiwgc2l6ZV90IHNpemUpOworK3R5cGVkZWYgdm9pZCogKCp0 X2xpYmNfcmVhbGxvYykodm9pZCogYWRkcmVzcywgc2l6ZV90IHNpemUpOworK3R5cGVkZWYgdm9p ZCogKCp0X2xpYmNfbWVtYWxpZ24pKHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKTsKKyt0 eXBlZGVmIHZvaWQgKCp0X2xpYmNfZnJlZSkodm9pZCogcHRyKTsKKyt0eXBlZGVmIHNpemVfdCAo KnRfbGliY19tYWxsb2NfdXNhYmxlX3NpemUpKHZvaWQqIHB0cik7CisrCisrLy8gU3RhdGljIGlu c3RhbmNlcyBvZiBwb2ludGVycyB0byBsaWJjLnNvIGRsIHN5bWJvbHMKKytzdGF0aWMgdF9saWJj X21hbGxvYyBsaWJjX21hbGxvYyA9IE5VTEw7Cisrc3RhdGljIHRfbGliY19jYWxsb2MgbGliY19j YWxsb2MgPSBOVUxMOworK3N0YXRpYyB0X2xpYmNfcmVhbGxvYyBsaWJjX3JlYWxsb2MgPSBOVUxM OworK3N0YXRpYyB0X2xpYmNfbWVtYWxpZ24gbGliY19tZW1hbGlnbiA9IE5VTEw7Cisrc3RhdGlj IHRfbGliY19mcmVlIGxpYmNfZnJlZSA9IE5VTEw7Cisrc3RhdGljIHRfbGliY19tYWxsb2NfdXNh YmxlX3NpemUgbGliY19tYWxsb2NfdXNhYmxlX3NpemUgPSBOVUxMOworKworKy8vIHJlc29sdmUg dGhlIHN5bWJvbHMgaW4gbGliYy5zbworK3ZvaWQgbXVzbF9saWJjX21lbW9yeV9pbml0KHZvaWQp CisreworKyAgbGliY19tYWxsb2MgPSAodF9saWJjX21hbGxvYykgZGxzeW0oUlRMRF9ORVhULCAi bWFsbG9jIik7CisrICBsaWJjX2NhbGxvYyA9ICh0X2xpYmNfY2FsbG9jKSBkbHN5bShSVExEX05F WFQsICJjYWxsb2MiKTsKKysgIGxpYmNfcmVhbGxvYyA9ICh0X2xpYmNfcmVhbGxvYykgZGxzeW0o UlRMRF9ORVhULCAicmVhbGxvYyIpOworKyAgbGliY19tZW1hbGlnbiA9ICh0X2xpYmNfbWVtYWxp Z24pIGRsc3ltKFJUTERfTkVYVCwgIm1lbWFsaWduIik7CisrICBsaWJjX2ZyZWUgPSAodF9saWJj X2ZyZWUpIGRsc3ltKFJUTERfTkVYVCwgImZyZWUiKTsKKysgIGxpYmNfbWFsbG9jX3VzYWJsZV9z aXplID0gKHRfbGliY19tYWxsb2NfdXNhYmxlX3NpemUpIGRsc3ltKFJUTERfTkVYVCwgIm1hbGxv Y191c2FibGVfc2l6ZSIpOworK30KKyt9ICAvLyBleHRlcm4gIkMiCisrCisrbmFtZXNwYWNlIHsK KysKKyt1c2luZyBiYXNlOjphbGxvY2F0b3I6OkFsbG9jYXRvckRpc3BhdGNoOworKworK3ZvaWQq IE11c2xNYWxsb2MoY29uc3QgQWxsb2NhdG9yRGlzcGF0Y2gqLCBzaXplX3Qgc2l6ZSwgdm9pZCog Y29udGV4dCkgeworKyAgaWYgKCFsaWJjX21hbGxvYykKKysgICAgbXVzbF9saWJjX21lbW9yeV9p bml0KCk7CisrICByZXR1cm4gKCpsaWJjX21hbGxvYykoc2l6ZSk7CisrfQorKworK3ZvaWQqIE11 c2xDYWxsb2MoY29uc3QgQWxsb2NhdG9yRGlzcGF0Y2gqLCBzaXplX3Qgbiwgc2l6ZV90IHNpemUs IHZvaWQqIGNvbnRleHQpIHsKKysgIGlmICghbGliY19jYWxsb2MpCisrICAgIG11c2xfbGliY19t ZW1vcnlfaW5pdCgpOworKyAgcmV0dXJuICgqbGliY19jYWxsb2MpKG4sIHNpemUpOworK30KKysK Kyt2b2lkKiBNdXNsUmVhbGxvYyhjb25zdCBBbGxvY2F0b3JEaXNwYXRjaCosIHZvaWQqIGFkZHJl c3MsIHNpemVfdCBzaXplLCB2b2lkKiBjb250ZXh0KSB7CisrICBpZiAoIWxpYmNfcmVhbGxvYykK KysgICAgbXVzbF9saWJjX21lbW9yeV9pbml0KCk7CisrICByZXR1cm4gKCpsaWJjX3JlYWxsb2Mp KGFkZHJlc3MsIHNpemUpOworK30KKysKKyt2b2lkKiBNdXNsTWVtYWxpZ24oY29uc3QgQWxsb2Nh dG9yRGlzcGF0Y2gqLCBzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSwgdm9pZCogY29udGV4 dCkgeworKyAgaWYgKCFsaWJjX21lbWFsaWduKQorKyAgICBtdXNsX2xpYmNfbWVtb3J5X2luaXQo KTsKKysgIHJldHVybiAoKmxpYmNfbWVtYWxpZ24pKGFsaWdubWVudCwgc2l6ZSk7CisrfQorKwor K3ZvaWQgTXVzbEZyZWUoY29uc3QgQWxsb2NhdG9yRGlzcGF0Y2gqLCB2b2lkKiBhZGRyZXNzLCB2 b2lkKiBjb250ZXh0KSB7CisrICBpZiAoIWxpYmNfZnJlZSkKKysgICAgbXVzbF9saWJjX21lbW9y eV9pbml0KCk7CisrICAoKmxpYmNfZnJlZSkoYWRkcmVzcyk7CisrfQorKworK3NpemVfdCBNdXNs R2V0U2l6ZUVzdGltYXRlKGNvbnN0IEFsbG9jYXRvckRpc3BhdGNoKiwgdm9pZCogYWRkcmVzcywg dm9pZCogY29udGV4dCkgeworKyAgLy8gVE9ETyhzaWdnaSwgcHJpbWlhbm8pOiBtYWxsb2NfdXNh YmxlX3NpemUgbWF5IG5lZWQgcmVkaXJlY3Rpb24gaW4gdGhlCisrICAvLyAgICAgcHJlc2VuY2Ug b2YgaW50ZXJwb3Npbmcgc2hpbXMgdGhhdCBkaXZlcnQgYWxsb2NhdGlvbnMuCisrICBpZiAoIWxp YmNfbWFsbG9jX3VzYWJsZV9zaXplKQorKyAgICBtdXNsX2xpYmNfbWVtb3J5X2luaXQoKTsKKysg IHJldHVybiAoKmxpYmNfbWFsbG9jX3VzYWJsZV9zaXplKShhZGRyZXNzKTsKKyt9CisrCisrfSAg Ly8gbmFtZXNwYWNlCisrCisrY29uc3QgQWxsb2NhdG9yRGlzcGF0Y2ggQWxsb2NhdG9yRGlzcGF0 Y2g6OmRlZmF1bHRfZGlzcGF0Y2ggPSB7CisrICAgICZNdXNsTWFsbG9jLCAgICAgICAgICAgLyog YWxsb2NfZnVuY3Rpb24gKi8KKysgICAgJk11c2xDYWxsb2MsICAgICAgICAgICAvKiBhbGxvY196 ZXJvX2luaXRpYWxpemVkX2Z1bmN0aW9uICovCisrICAgICZNdXNsTWVtYWxpZ24sICAgICAgICAg LyogYWxsb2NfYWxpZ25lZF9mdW5jdGlvbiAqLworKyAgICAmTXVzbFJlYWxsb2MsICAgICAgICAg IC8qIHJlYWxsb2NfZnVuY3Rpb24gKi8KKysgICAgJk11c2xGcmVlLCAgICAgICAgICAgICAvKiBm cmVlX2Z1bmN0aW9uICovCisrICAgICZNdXNsR2V0U2l6ZUVzdGltYXRlLCAgLyogZ2V0X3NpemVf ZXN0aW1hdGVfZnVuY3Rpb24gKi8KKysgICAgbnVsbHB0ciwgICAgICAgICAgICAgICAvKiBuZXh0 ICovCisrfTsKKysKKysjZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9w YXRjaGVzLzAwMDQtbXVzbC1uby1tYWxsaW5mby5wYXRjaCBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2lu ZS9wYXRjaGVzLzAwMDQtbXVzbC1uby1tYWxsaW5mby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uYzMzMmI5MmI2OWQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNw a2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDA0LW11c2wtbm8tbWFsbGluZm8ucGF0Y2gKQEAg LTAsMCArMSw0MCBAQAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNl L3RyYWNlX2V2ZW50L21hbGxvY19kdW1wX3Byb3ZpZGVyLmNjCTIwMTctMTEtMjggMTQ6MDY6NTMu MDAwMDAwMDAwICswMTAwCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jh c2UvdHJhY2VfZXZlbnQvbWFsbG9jX2R1bXBfcHJvdmlkZXIuY2MJMjAxOC0wMS0yNyAyMDoxMzoy Ni45NjA5MzI4MDUgKzAxMDAKK0BAIC0yNDMsNyArMjQzLDcgQEAKKyAgIGFsbG9jYXRlZF9vYmpl Y3RzX2NvdW50ID0gbWFpbl9oZWFwX2luZm8uYmxvY2tfY291bnQ7CisgI2VsaWYgZGVmaW5lZChP U19GVUNIU0lBKQorIC8vIFRPRE8oZnVjaHNpYSk6IFBvcnQsIHNlZSBodHRwczovL2NyYnVnLmNv bS83MDY1OTIuCistI2Vsc2UKKysjZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKKyAgIHN0cnVjdCBt YWxsaW5mbyBpbmZvID0gbWFsbGluZm8oKTsKKyAgIERDSEVDS19HRShpbmZvLmFyZW5hICsgaW5m by5oYmxraGQsIGluZm8udW9yZGJsa3MpOworIAorQEAgLTI1NSw2ICsyNTUsOCBAQAorIAorICAg Ly8gVG90YWwgYWxsb2NhdGVkIHNwYWNlIGlzIGdpdmVuIGJ5IHx1b3JkYmxrc3wuCisgICBhbGxv Y2F0ZWRfb2JqZWN0c19zaXplID0gaW5mby51b3JkYmxrczsKKysjZWxzZQorKy8vIG11c2wgbGli YyBkb2VzIG5vdCBzdXBwb3J0IG1hbGxpbmZvKCkKKyAjZW5kaWYKKyAKKyAgIE1lbW9yeUFsbG9j YXRvckR1bXAqIG91dGVyX2R1bXAgPSBwbWQtPkNyZWF0ZUFsbG9jYXRvckR1bXAoIm1hbGxvYyIp OworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL3Byb2Nlc3MvcHJv Y2Vzc19tZXRyaWNzX3Bvc2l4LmNjCTIwMTctMTEtMjggMTQ6MDY6NTMuMDAwMDAwMDAwICswMTAw CisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvcHJvY2Vzcy9wcm9j ZXNzX21ldHJpY3NfcG9zaXguY2MJMjAxOC0wMS0yNyAyMDo0ODoxMS41NzEwNDAzNDggKzAxMDAK K0BAIC0xMDAsMTQgKzEwMCwxNCBAQAorICAgbWFsbG9jX3N0YXRpc3RpY3NfdCBzdGF0cyA9IHsw fTsKKyAgIG1hbGxvY196b25lX3N0YXRpc3RpY3MobnVsbHB0ciwgJnN0YXRzKTsKKyAgIHJldHVy biBzdGF0cy5zaXplX2luX3VzZTsKKy0jZWxpZiBkZWZpbmVkKE9TX0xJTlVYKSB8fCBkZWZpbmVk KE9TX0FORFJPSUQpCisrI2VsaWYgKGRlZmluZWQoT1NfTElOVVgpICYmIGRlZmluZWQoX19HTElC Q19fKSkgfHwgZGVmaW5lZChPU19BTkRST0lEKQorICAgc3RydWN0IG1hbGxpbmZvIG1pbmZvID0g bWFsbGluZm8oKTsKKyAjaWYgZGVmaW5lZChVU0VfVENNQUxMT0MpCisgICByZXR1cm4gbWluZm8u dW9yZGJsa3M7CisgI2Vsc2UKKyAgIHJldHVybiBtaW5mby5oYmxraGQgKyBtaW5mby5hcmVuYTsK KyAjZW5kaWYKKy0jZWxpZiBkZWZpbmVkKE9TX0ZVQ0hTSUEpCisrI2Vsc2UgLy9pZiBkZWZpbmVk KE9TX0ZVQ0hTSUEpIC8vIGFsc28gbXVzbCBkb2Vzbid0IGRvIHRoaXMuCisgICAvLyBUT0RPKGZ1 Y2hzaWEpOiBOb3QgY3VycmVudGx5IGV4cG9zZWQuIGh0dHBzOi8vY3JidWcuY29tLzczNTA4Ny4K KyAgIHJldHVybiAwOworICNlbmRpZgorCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdp bmUvcGF0Y2hlcy8wMDA1LW11c2wtb2ZmX3QucGF0Y2ggYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUv cGF0Y2hlcy8wMDA1LW11c2wtb2ZmX3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLjUyZGIzYjllYmY0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUt d2ViZW5naW5lL3BhdGNoZXMvMDAwNS1tdXNsLW9mZl90LnBhdGNoCkBAIC0wLDAgKzEsMTAgQEAK Ky0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvb3RzL2lu Y2x1ZGUvb3BlbnR5cGUtc2FuaXRpc2VyLmgJMjAxNi0wNS0yNiAxNDo1ODo1NC4wMDAwMDAwMDAg KzAyMDAKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv b3RzL2luY2x1ZGUvb3BlbnR5cGUtc2FuaXRpc2VyLmgJMjAxNi0xMC0wMSAxNDozMTozMC44ODUw MDAwMDAgKzAyMDAKK0BAIC0yMSw2ICsyMSw3IEBACisgI2RlZmluZSBodG9ucyh4KSBfYnl0ZXN3 YXBfdXNob3J0ICh4KQorICNlbHNlCisgI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorKyNpbmNsdWRl IDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3RkaW50Lmg+CisgI2VuZGlmCisgCmRpZmYgLS1n aXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDA2LW11c2wtcHJlYWQtcHdyaXRl LnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwNi1tdXNsLXByZWFkLXB3 cml0ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMDAwMTdi YmEwMTcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8w MDA2LW11c2wtcHJlYWQtcHdyaXRlLnBhdGNoCkBAIC0wLDAgKzEsMTggQEAKKy0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvbHNzL2xpbnV4X3N5c2NhbGxf c3VwcG9ydC5oCTIwMTgtMDktMDcgMjE6MjU6MjYuNjM5OTY0MTAwICswMjAwCisrKysgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2xzcy9saW51eF9zeXNjYWxs X3N1cHBvcnQuaAkyMDE4LTA5LTA3IDIxOjI1OjExLjYxMTk2NDk5NSArMDIwMAorQEAgLTE3OTQs NiArMTc5NCwxNSBAQAorIC8qIEVuZCBvZiBzMzkwL3MzOTB4IGRlZmluaXRpb25zICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAjZW5kaWYKKyAKKysjaWZu ZGVmIF9fR0xJQkNfXworKyAgLyogRm9yIE11c2wgbGliYyBwcmVhZC9wcmVhZCBpcyB0aGUgc2Ft ZSBhcyBwcmVhZDY0L3B3cml0ZTY0ICovCisrI2lmbmRlZiBfX05SX3ByZWFkCisrI2RlZmluZSBf X05SX3ByZWFkICAgICAgICAgICAgICBfX05SX3ByZWFkNjQKKysjZW5kaWYKKysjaWZuZGVmIF9f TlJfcHdyaXRlCisrI2RlZmluZSBfX05SX3B3cml0ZSAgICAgICAgICAgICBfX05SX3B3cml0ZTY0 CisrI2VuZGlmCisrI2VuZGlmIC8qIGlmbmRlZiBfX0dMSUJDX18gKi8KKyAKKyAvKiBBZnRlciBm b3JraW5nLCB3ZSBtdXN0IG1ha2Ugc3VyZSB0byBvbmx5IGNhbGwgc3lzdGVtIGNhbGxzLiAgICAg ICAgICAgICAgICovCisgI2lmIGRlZmluZWQoX19CT1VOREVEX1BPSU5URVJTX18pCmRpZmYgLS1n aXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDA3LW11c2wtcmVwbGFjZS1wdmFs bG9jLnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwNy1tdXNsLXJlcGxh Y2UtcHZhbGxvYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u ZDVjYWYzODM2ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0 Y2hlcy8wMDA3LW11c2wtcmVwbGFjZS1wdmFsbG9jLnBhdGNoCkBAIC0wLDAgKzEsMTQgQEAKKy0t LSBxdHdlYmVuZ2luZS9zcmMvY29yZS9hcGkvcXRidWctNjE1MjEuY3BwCTIwMTctMTEtMjkgMDk6 NDI6MjkuMDAwMDAwMDAwICswMTAwCisrKysgcXR3ZWJlbmdpbmUvc3JjL2NvcmUvYXBpL3F0YnVn LTYxNTIxLmNwcAkyMDE4LTAxLTI4IDA2OjQ5OjI5LjQ1NDE3NTcyNSArMDEwMAorQEAgLTExMSw3 ICsxMTEsMTEgQEAKKyB9CisgCisgU0hJTV9ISURERU4gdm9pZCogU2hpbVB2YWxsb2Moc2l6ZV90 IHNpemUpIHsKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pCisgICAgIHJldHVybiBwdmFsbG9jKHNp emUpOworKyNlbHNlCisrICAgIHJldHVybiB2YWxsb2MoKHNpemUrNDA5NSkmfjQwOTUpOworKyNl bmRpZgorIH0KKyAKKyBTSElNX0hJRERFTiBpbnQgU2hpbVBvc2l4TWVtYWxpZ24odm9pZCoqIHIs IHNpemVfdCBhLCBzaXplX3QgcykgewpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5l L3BhdGNoZXMvMDAwOC1tdXNsLXJlc29sdmUucGF0Y2ggYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUv cGF0Y2hlcy8wMDA4LW11c2wtcmVzb2x2ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uZWRmY2ViNzlmMzAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0 NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDA4LW11c2wtcmVzb2x2ZS5wYXRjaApAQCAtMCwwICsxLDI2 IEBACistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL25ldC9kbnMvZG5zX3Jl bG9hZGVyLmNjCTIwMTYtMTEtMDcgMTU6NDY6MTguMDAwMDAwMDAwICswMTAwCisrKysgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL25ldC9kbnMvZG5zX3JlbG9hZGVyLmNjCTIwMTYt MTItMjAgMDM6MzM6MTEuNzQ5MDU5NjU2ICswMTAwCitAQCAtOSw2ICs5LDEwIEBACisgCisgI2lu Y2x1ZGUgPHJlc29sdi5oPgorIAorKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCisrI2luY2x1ZGUg InJlc29sdl9jb21wYXQuaCIKKysjZW5kaWYKKysKKyAjaW5jbHVkZSAiYmFzZS9sYXp5X2luc3Rh bmNlLmgiCisgI2luY2x1ZGUgImJhc2UvbG9nZ2luZy5oIgorICNpbmNsdWRlICJiYXNlL21hY3Jv cy5oIgorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9uZXQvZG5zL2Ruc19j b25maWdfc2VydmljZV9wb3NpeC5jYwkyMDE2LTExLTA3IDE1OjQ2OjE4LjAwMDAwMDAwMCArMDEw MAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9uZXQvZG5zL2Ruc19jb25m aWdfc2VydmljZV9wb3NpeC5jYwkyMDE2LTEyLTIwIDAzOjQwOjA3LjY3MTk1MzA5OCArMDEwMAor QEAgLTYsNiArNiwxMCBAQAorIAorICNpbmNsdWRlIDxzdHJpbmc+CisgCisrI2lmICFkZWZpbmVk KF9fR0xJQkNfXykKKysjaW5jbHVkZSAicmVzb2x2X2NvbXBhdC5oIgorKyNlbmRpZgorKworICNp bmNsdWRlICJiYXNlL2JpbmQuaCIKKyAjaW5jbHVkZSAiYmFzZS9maWxlcy9maWxlLmgiCisgI2lu Y2x1ZGUgImJhc2UvZmlsZXMvZmlsZV9wYXRoLmgiCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13 ZWJlbmdpbmUvcGF0Y2hlcy8wMDA5LW11c2wtc2lnaW5mb190LnBhdGNoIGIvc3JjcGtncy9xdDUt d2ViZW5naW5lL3BhdGNoZXMvMDAwOS1tdXNsLXNpZ2luZm9fdC5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZmU3NjBiZTE2NjYKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDA5LW11c2wtc2lnaW5mb190LnBhdGNo CkBAIC0wLDAgKzEsMTggQEAKK1RoZXJlJ3MgYSBzdWJ0bGUgZGlmZmVyZW5jZSBpbiB0aGUgaW50 ZXJuYWwgbmFtZSBvZiBzaWdpbmZvX3QgZmllbGRzCitiZXR3ZWVuIGdsaWJjIGFuZCBtdXNsLiBU aGUgc3RydWN0dXJlIGl0c2VsZiBpcyBlcXVpdmFsZW50LCBzbyBpdAorc2hvdWxkIHN1ZmZpY2Ug dG8gYWRkIGEgbWFjcm8gdG8gcmVuYW1lIHRoZSBmaWVsZC4KKworLS0tIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmL3RyYXAuY2MJMjAx NS0wMi0xNyAwNTo1Nzo0My4wMDAwMDAwMDAgKzAxMDAKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi90cmFwLmNjCTIwMTUtMDYt MDMgMDg6MjA6MjUuMDMyNzE2NDI3ICswMjAwCitAQCAtMjIsNiArMjIsMTEgQEAKKyAjaW5jbHVk ZSAic2FuZGJveC9saW51eC9zZXJ2aWNlcy9hbmRyb2lkX3Vjb250ZXh0LmgiCisgI2VuZGlmCisK KysvLyBtdXNsIGxpYmMgZGVmaW5lcyBzaWdpbmZvX3QgX19zaV9maWVsZHMgaW5zdGVhZCBvZiBf c2lmaWVsZHMKKysjaWYgIWRlZmluZWQoX19HTElCQ19fKQorKyNkZWZpbmUgX3NpZmllbGRzIF9f c2lfZmllbGRzCisrI2VuZGlmCisrCisgbmFtZXNwYWNlIHsKKworIGNvbnN0IGludCBrQ2FwYWNp dHlJbmNyZW1lbnQgPSAyMDsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRj aGVzLzAwMTAtbXVzbC1zdGFja3N0YXJ0LnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3Bh dGNoZXMvMDAxMC1tdXNsLXN0YWNrc3RhcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjU3MTM2YmMyYmNkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9x dDUtd2ViZW5naW5lL3BhdGNoZXMvMDAxMC1tdXNsLXN0YWNrc3RhcnQucGF0Y2gKQEAgLTAsMCAr MSwyMCBAQAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0 eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS93dGYvc3RhY2tfdXRpbC5jYwkyMDE4LTAxLTI3IDIz OjA4OjQzLjU4NjQ3NTM0OSArMDEwMAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS93dGYvc3RhY2tfdXRpbC5j YwkyMDE4LTAxLTI3IDIzOjE4OjIyLjI3NDUwNTIwMyArMDEwMAorQEAgLTI4LDcgKzI4LDcgQEAK KyAvLyBGSVhNRTogT24gTWFjIE9TWCBhbmQgTGludXgsIHRoaXMgbWV0aG9kIGNhbm5vdCBlc3Rp bWF0ZSBzdGFjayBzaXplCisgLy8gY29ycmVjdGx5IGZvciB0aGUgbWFpbiB0aHJlYWQuCisgCist I2lmIGRlZmluZWQoX19HTElCQ19fKSB8fCBkZWZpbmVkKE9TX0FORFJPSUQpIHx8IGRlZmluZWQo T1NfRlJFRUJTRCkgfHwgXAorKyNpZiBkZWZpbmVkKE9TX0xJTlVYKSB8fCBkZWZpbmVkKE9TX0FO RFJPSUQpIHx8IGRlZmluZWQoT1NfRlJFRUJTRCkgfHwgXAorICAgICBkZWZpbmVkKE9TX0ZVQ0hT SUEpCisgICAvLyBwdGhyZWFkX2dldGF0dHJfbnAoKSBjYW4gZmFpbCBpZiB0aGUgdGhyZWFkIGlz IG5vdCBpbnZva2VkIGJ5CisgICAvLyBwdGhyZWFkX2NyZWF0ZSgpIChlLmcuLCB0aGUgbWFpbiB0 aHJlYWQgb2Ygd2Via2l0X3VuaXRfdGVzdHMpLgorQEAgLTk2LDcgKzk2LDcgQEAKKyB9CisgCisg dm9pZCogR2V0U3RhY2tTdGFydCgpIHsKKy0jaWYgZGVmaW5lZChfX0dMSUJDX18pIHx8IGRlZmlu ZWQoT1NfQU5EUk9JRCkgfHwgZGVmaW5lZChPU19GUkVFQlNEKSB8fCBcCisrI2lmIGRlZmluZWQo T1NfTElOVVgpIHx8IGRlZmluZWQoT1NfQU5EUk9JRCkgfHwgZGVmaW5lZChPU19GUkVFQlNEKSB8 fCBcCisgICAgIGRlZmluZWQoT1NfRlVDSFNJQSkKKyAgIHB0aHJlYWRfYXR0cl90IGF0dHI7Cisg ICBpbnQgZXJyb3I7CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8w MDExLW11c2wtc2FuZGJveC5wYXRjaCBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAw MTEtbXVzbC1zYW5kYm94LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi5kM2RlMWU0MTE4MwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2lu ZS9wYXRjaGVzLzAwMTEtbXVzbC1zYW5kYm94LnBhdGNoCkBAIC0wLDAgKzEsNzEgQEAKKy0tLSBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJw Zi1oZWxwZXJzL3N5c2NhbGxfcGFyYW1ldGVyc19yZXN0cmljdGlvbnMuY2MJMjAxOC0wNi0xNSAw OTo0NzoyMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfcGFyYW1ldGVy c19yZXN0cmljdGlvbnMuY2MJMjAxOC0wOS0xMyAxOTo1Mzo1My40NTM3ODAyNTMgKzAyMDAKK0BA IC0xMjksNyArMTI5LDcgQEAKKyAvLyBDTE9ORV9WTSwgbm9yIENMT05FX1RIUkVBRCwgd2hpY2gg aW5jbHVkZXMgYWxsIGZvcmsoKSBpbXBsZW1lbnRhdGlvbnMuCisgUmVzdWx0RXhwciBSZXN0cmlj dENsb25lVG9UaHJlYWRzQW5kRVBFUk1Gb3JrKCkgeworICAgY29uc3QgQXJnPHVuc2lnbmVkIGxv bmc+IGZsYWdzKDApOworLQorKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKKyAgIC8vIFRPRE8obWRl bXBza3kpOiBFeHRlbmQgRFNMIHRvIHN1cHBvcnQgKGZsYWdzICYgfm1hc2sxKSA9PSBtYXNrMi4K KyAgIGNvbnN0IHVpbnQ2NF90IGtBbmRyb2lkQ2xvbmVNYXNrID0gQ0xPTkVfVk0gfCBDTE9ORV9G UyB8IENMT05FX0ZJTEVTIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Q0xPTkVfU0lHSEFORCB8IENMT05FX1RIUkVBRCB8CitAQCAtMTQ4LDYgKzE0OCwxNyBAQAorICAg cmV0dXJuIElmKElzQW5kcm9pZCgpID8gYW5kcm9pZF90ZXN0IDogZ2xpYmNfdGVzdCwgQWxsb3co KSkKKyAgICAgICAuRWxzZUlmKChmbGFncyAmIChDTE9ORV9WTSB8IENMT05FX1RIUkVBRCkpID09 IDAsIEVycm9yKEVQRVJNKSkKKyAgICAgICAuRWxzZShDcmFzaFNJR1NZU0Nsb25lKCkpOworKyNl bHNlCisrICBjb25zdCBpbnQgcmVxdWlyZWQgPSBDTE9ORV9WTSB8IENMT05FX0ZTIHwgQ0xPTkVf RklMRVMgfCBDTE9ORV9TSUdIQU5EIHwKKysgICAgICAgICAgICAgICAgICAgICAgIENMT05FX1RI UkVBRCB8IENMT05FX1NZU1ZTRU07CisrICBjb25zdCBpbnQgc2FmZSA9IENMT05FX1NFVFRMUyB8 IENMT05FX1BBUkVOVF9TRVRUSUQgfCBDTE9ORV9DSElMRF9DTEVBUlRJRCB8CisrICAgICAgICAg ICAgICAgICAgIENMT05FX0RFVEFDSEVEOworKyAgY29uc3QgQm9vbEV4cHIgdGhyZWFkX2Nsb25l X29rID0gKGZsYWdzJn5zYWZlKT09cmVxdWlyZWQ7CisrCisrICByZXR1cm4gSWYodGhyZWFkX2Ns b25lX29rLCBBbGxvdygpKQorKyAgICAgIC5FbHNlSWYoKGZsYWdzICYgKENMT05FX1ZNIHwgQ0xP TkVfVEhSRUFEKSkgPT0gMCwgRXJyb3IoRVBFUk0pKQorKyAgICAgIC5FbHNlKENyYXNoU0lHU1lT Q2xvbmUoKSk7CisrI2VuZGlmCisgfQorIAorIFJlc3VsdEV4cHIgUmVzdHJpY3RQcmN0bCgpIHsK Ky0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNj b21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfc2V0cy5jYwkyMDE4LTA2LTE1IDA5OjQ3OjIwLjAwMDAw MDAwMCArMDIwMAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94 L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmNjCTIwMTgtMDktMTMgMTk6 NTY6MzEuNzc5NzczOTQwICswMjAwCitAQCAtMzc1LDYgKzM3NSw5IEBACisgI2lmIGRlZmluZWQo X19pMzg2X18pCisgICAgIGNhc2UgX19OUl93YWl0cGlkOgorICNlbmRpZgorKyNpZiAhZGVmaW5l ZChfX0dMSUJDX18pCisrICAgIGNhc2UgX19OUl9zZXRfdGlkX2FkZHJlc3M6CisrI2VuZGlmCisg ICAgICAgcmV0dXJuIHRydWU7CisgICAgIGNhc2UgX19OUl9jbG9uZTogIC8vIFNob3VsZCBiZSBw YXJhbWV0ZXItcmVzdHJpY3RlZC4KKyAgICAgY2FzZSBfX05SX3NldG5zOiAgLy8gUHJpdmlsZWdl ZC4KK0BAIC0zODcsNyArMzkwLDkgQEAKKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5l ZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQorICAgICBjYXNlIF9fTlJfc2V0X3Ro cmVhZF9hcmVhOgorICNlbmRpZgorKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKKyAgICAgY2FzZSBf X05SX3NldF90aWRfYWRkcmVzczoKKysjZW5kaWYKKyAgICAgY2FzZSBfX05SX3Vuc2hhcmU6Cisg I2lmICFkZWZpbmVkKF9fbWlwc19fKSAmJiAhZGVmaW5lZChfX2FhcmNoNjRfXykKKyAgICAgY2Fz ZSBfX05SX3Zmb3JrOgorQEAgLTQ5Niw2ICs1MDEsOSBAQAorICAgICBjYXNlIF9fTlJfbWxvY2s6 CisgICAgIGNhc2UgX19OUl9tdW5sb2NrOgorICAgICBjYXNlIF9fTlJfbXVubWFwOgorKyNpZiAh ZGVmaW5lZChfX0dMSUJDX18pCisrICAgIGNhc2UgX19OUl9tcmVtYXA6CisrI2VuZGlmCisgICAg ICAgcmV0dXJuIHRydWU7CisgICAgIGNhc2UgX19OUl9tYWR2aXNlOgorICAgICBjYXNlIF9fTlJf bWluY29yZToKK0BAIC01MTEsNyArNTE5LDkgQEAKKyAgICAgY2FzZSBfX05SX21vZGlmeV9sZHQ6 CisgI2VuZGlmCisgICAgIGNhc2UgX19OUl9tcHJvdGVjdDoKKysjaWYgZGVmaW5lZChfX0dMSUJD X18pCisgICAgIGNhc2UgX19OUl9tcmVtYXA6CisrI2VuZGlmCisgICAgIGNhc2UgX19OUl9tc3lu YzoKKyAgICAgY2FzZSBfX05SX211bmxvY2thbGw6CisgICAgIGNhc2UgX19OUl9yZWFkYWhlYWQ6 CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDEyLW11c2wtY2hy b21pdW0tZGVmYXVsdC1zdGFja3NpemUucGF0Y2ggYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0 Y2hlcy8wMDEyLW11c2wtY2hyb21pdW0tZGVmYXVsdC1zdGFja3NpemUucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjdiZjVhMjJmYmE3Ci0tLSAvZGV2L251bGwK KysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAxMi1tdXNsLWNocm9taXVtLWRl ZmF1bHQtc3RhY2tzaXplLnBhdGNoCkBAIC0wLDAgKzEsMTUgQEAKKy0tLSBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS90aHJlYWRpbmcvcGxhdGZvcm1fdGhyZWFkX2xpbnV4 LmNjLm9yaWcJMjAxOC0wOS0xOSAxODowNToxNS41MjM5MjM3MDMgKzAyMDAKKysrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS90aHJlYWRpbmcvcGxhdGZvcm1fdGhyZWFk X2xpbnV4LmNjCTIwMTgtMDktMTkgMTg6MDg6MDUuMTUwOTMyNDU0ICswMjAwCitAQCAtMTczLDcg KzE3MywxMiBAQAorIAorIHNpemVfdCBHZXREZWZhdWx0VGhyZWFkU3RhY2tTaXplKGNvbnN0IHB0 aHJlYWRfYXR0cl90JiBhdHRyaWJ1dGVzKSB7CisgI2lmICFkZWZpbmVkKFRIUkVBRF9TQU5JVEla RVIpCisrI2lmIGRlZmluZWQoX19HTElCQ19fKQorICAgcmV0dXJuIDA7CisrI2Vsc2UgLy8gZGVm aW5lZChfX0dMSUJDX18pCisrICAvLyBGb3IgTXVzbCBsaWJjIHRyeSB3aXRoIGEgZGVmYXVsdCBz dGFjayBzaXplIG9mIDIgTWlCCisrICByZXR1cm4gMiAqIDEwMjQgKiAxMDI0OworKyNlbmRpZiAv LyAhZGVmaW5lZChfX0dMSUJDX18pCisgI2Vsc2UKKyAgIC8vIFRocmVhZFNhbml0aXplciBibG9h dHMgdGhlIHN0YWNrIGhlYXZpbHkuIEV2aWRlbmNlIGhhcyBiZWVuIHRoYXQgdGhlCisgICAvLyBk ZWZhdWx0IHN0YWNrIHNpemUgaXNuJ3QgZW5vdWdoIGZvciBzb21lIGJyb3dzZXIgdGVzdHMuCmRp ZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDE0LW11c2wtY3Jvc3Mt bm8tYXNtX3B0cmFjZV9oLnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAx NC1tdXNsLWNyb3NzLW5vLWFzbV9wdHJhY2VfaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uMTQwNzQyZjcyYzIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dz L3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDE0LW11c2wtY3Jvc3Mtbm8tYXNtX3B0cmFjZV9oLnBh dGNoCkBAIC0wLDAgKzEsMzAgQEAKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVt cF93cml0ZXIvbGludXhfcHRyYWNlX2R1bXBlci5jYwkyMDE4LTA4LTI3IDEwOjIxOjMxLjAwMDAw MDAwMCArMDIwMAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9s aW51eF9wdHJhY2VfZHVtcGVyLmNjCTIwMTgtMTEtMjIgMDA6NDE6NTguNTIyNDc3NTU5ICswMTAw CitAQCAtMzgsNyArMzgsMTIgQEAKKyAKKyAjaW5jbHVkZSAiY2xpZW50L2xpbnV4L21pbmlkdW1w X3dyaXRlci9saW51eF9wdHJhY2VfZHVtcGVyLmgiCisgCisrI2lmIGRlZmluZWQoX19HTElCQ19f KQorICNpbmNsdWRlIDxhc20vcHRyYWNlLmg+CisrI2Vsc2UKKysvKiBGb3IgYXJtKi1tdXNsIHRo aXMgZGVmaW5pdGlvbiBpcyBtaXNzaW5nICovCisrI2RlZmluZSBBUk1fc3AgdXJlZ3NbMTNdCisr I2VuZGlmCisgI2luY2x1ZGUgPGFzc2VydC5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNs dWRlIDxmY250bC5oPgorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRl ci9saW51eF9jb3JlX2R1bXBlci5jYwkyMDE4LTA4LTI3IDEwOjIxOjMxLjAwMDAwMDAwMCArMDIw MAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVh a3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9jb3Jl X2R1bXBlci5jYwkyMDE4LTExLTIyIDAwOjQ5OjM5LjUzMzQ5MjI0NSArMDEwMAorQEAgLTMyLDcg KzMyLDEyIEBACisgCisgI2luY2x1ZGUgImNsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGlu dXhfY29yZV9kdW1wZXIuaCIKKyAKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pCisgI2luY2x1ZGUg PGFzbS9wdHJhY2UuaD4KKysjZWxzZQorKy8qIEZvciBhcm0qLW11c2wgdGhpcyBkZWZpbml0aW9u IGlzIG1pc3NpbmcgKi8KKysjZGVmaW5lIEFSTV9zcCB1cmVnc1sxM10KKysjZW5kaWYKKyAjaW5j bHVkZSA8YXNzZXJ0Lmg+CisgI2luY2x1ZGUgPGVsZi5oPgorICNpbmNsdWRlIDxzdGRpby5oPgpk aWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAxNS15YXNtLW5scy5w YXRjaCBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMTUteWFzbS1ubHMucGF0Y2gK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjIyYWMwNDIwNzY0Ci0tLSAv ZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAxNS15YXNtLW5s cy5wYXRjaApAQCAtMCwwICsxLDEzIEBACitkaWZmIC0tZ2l0IHNyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS95YXNtL3NvdXJjZS9jb25maWcvbGludXgvY29uZmlnLmggc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3lhc20vc291cmNlL2NvbmZpZy9saW51eC9jb25maWcu aAoraW5kZXggOWUzNjUzOS4uZjU4ODA4MyAxMDA2NDQKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vL3RoaXJkX3BhcnR5L3lhc20vc291cmNlL2NvbmZpZy9saW51eC9jb25m aWcuaAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vdGhpcmRfcGFydHkv eWFzbS9zb3VyY2UvY29uZmlnL2xpbnV4L2NvbmZpZy5oCitAQCAtNSw3ICs1LDcgQEAKKyAjZGVm aW5lIENQUF9QUk9HICJnY2MgLUUiCisgCisgLyogKi8KKy0jZGVmaW5lIEVOQUJMRV9OTFMgMQor Ky8qICN1bmRlZiBFTkFCTEVfTkxTIDEgKi8KKyAKKyAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2 ZSB0aGUgYGFib3J0JyBmdW5jdGlvbi4gKi8KKyAjZGVmaW5lIEhBVkVfQUJPUlQgMQpkaWZmIC0t Z2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAxNi1xdC1tdXNsLWV4ZWNpbmZv LnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAxNi1xdC1tdXNsLWV4ZWNp bmZvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jMWNkYjUz NzIxMgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAw MTYtcXQtbXVzbC1leGVjaW5mby5wYXRjaApAQCAtMCwwICsxLDk0IEBACistLS0gcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy9iYXNlL2RlYnVnL3N0YWNrX3RyYWNlX3Bvc2l4LmNj Lm9yaWcJMjAxOS0wNC0wOSAwOTozMToxNi4wMDAwMDAwMDAgKzAyMDAKKysrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL2Jhc2UvZGVidWcvc3RhY2tfdHJhY2VfcG9zaXguY2MJ MjAxOS0wNS0wNiAyMzoxNjoxMy4yNDU1MDI0NjcgKzAyMDAKK0BAIC0yNyw3ICsyNyw3IEBACisg I2lmICFkZWZpbmVkKFVTRV9TWU1CT0xJWkUpCisgI2luY2x1ZGUgPGN4eGFiaS5oPgorICNlbmRp ZgorLSNpZiAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQorKyNpZiBkZWZp bmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKKyAjaW5jbHVkZSA8ZXhlY2luZm8uaD4K KyAjZW5kaWYKKyAKK0BAIC04Niw3ICs4Niw3IEBACisgICAvLyBOb3RlOiBjb2RlIGluIHRoaXMg ZnVuY3Rpb24gaXMgTk9UIGFzeW5jLXNpZ25hbCBzYWZlIChzdGQ6OnN0cmluZyB1c2VzCisgICAv LyBtYWxsb2MgaW50ZXJuYWxseSkuCisgCistI2lmICFkZWZpbmVkKF9fVUNMSUJDX18pICYmICFk ZWZpbmVkKF9BSVgpCisrI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQor ICAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBzZWFyY2hfZnJvbSA9IDA7CisgICB3aGlsZSAoc2Vh cmNoX2Zyb20gPCB0ZXh0LT5zaXplKCkpIHsKKyAgICAgLy8gTG9vayBmb3IgdGhlIHN0YXJ0IG9m IGEgbWFuZ2xlZCBzeW1ib2wsIGZyb20gc2VhcmNoX2Zyb20uCitAQCAtMTIxLDcgKzEyMSw3IEBA CisgICAgICAgc2VhcmNoX2Zyb20gPSBtYW5nbGVkX3N0YXJ0ICsgMjsKKyAgICAgfQorICAgfQor LSNlbmRpZiAgLy8gIWRlZmluZWQoX19VQ0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKKysjZW5k aWYgIC8vICFkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKKyB9CisgI2VuZGlm ICAvLyAhZGVmaW5lZChVU0VfU1lNQk9MSVpFKQorIAorQEAgLTEzMyw3ICsxMzMsNyBAQAorICAg dmlydHVhbCB+QmFja3RyYWNlT3V0cHV0SGFuZGxlcigpID0gZGVmYXVsdDsKKyB9OworIAorLSNp ZiAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQorKyNpZiBkZWZpbmVkKF9f R0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKKyB2b2lkIE91dHB1dFBvaW50ZXIodm9pZCogcG9p bnRlciwgQmFja3RyYWNlT3V0cHV0SGFuZGxlciogaGFuZGxlcikgeworICAgLy8gVGhpcyBzaG91 bGQgYmUgbW9yZSB0aGFuIGVub3VnaCB0byBzdG9yZSBhIDY0LWJpdCBudW1iZXIgaW4gaGV4Ogor ICAgLy8gMTYgaGV4IGRpZ2l0cyArIDEgZm9yIG51bGwtdGVybWluYXRvci4KK0BAIC0yMTYsNyAr MjE2LDcgQEAKKyAgIH0KKyAjZW5kaWYgIC8vIGRlZmluZWQoVVNFX1NZTUJPTElaRSkKKyB9Cist I2VuZGlmICAvLyAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQorKyNlbmRp ZiAgLy8gIWRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQorIAorIHZvaWQgUHJp bnRUb1N0ZGVycihjb25zdCBjaGFyKiBvdXRwdXQpIHsKKyAgIC8vIE5PVEU6IFRoaXMgY29kZSBN VVNUIGJlIGFzeW5jLXNpZ25hbCBzYWZlIChpdCdzIHVzZWQgYnkgaW4tcHJvY2VzcworQEAgLTgx Miw3ICs4MTIsNyBAQAorICAgLy8gTk9URTogVGhpcyBjb2RlIE1VU1QgYmUgYXN5bmMtc2lnbmFs IHNhZmUgKGl0J3MgdXNlZCBieSBpbi1wcm9jZXNzCisgICAvLyBzdGFjayBkdW1waW5nIHNpZ25h bCBoYW5kbGVyKS4gTk8gbWFsbG9jIG9yIHN0ZGlvIGlzIGFsbG93ZWQgaGVyZS4KKyAKKy0jaWYg IWRlZmluZWQoX19VQ0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKKysjaWYgZGVmaW5lZChfX0dM SUJDX18pICYmICFkZWZpbmVkKF9BSVgpCisgICAvLyBUaG91Z2ggdGhlIGJhY2t0cmFjZSBBUEkg bWFuIHBhZ2UgZG9lcyBub3QgbGlzdCBhbnkgcG9zc2libGUgbmVnYXRpdmUKKyAgIC8vIHJldHVy biB2YWx1ZXMsIHdlIHRha2Ugbm8gY2hhbmNlLgorICAgcmV0dXJuIGJhc2U6OnNhdHVyYXRlZF9j YXN0PHNpemVfdD4oYmFja3RyYWNlKHRyYWNlLCBjb3VudCkpOworQEAgLTgyNSwxMyArODI1LDEz IEBACisgLy8gTk9URTogVGhpcyBjb2RlIE1VU1QgYmUgYXN5bmMtc2lnbmFsIHNhZmUgKGl0J3Mg dXNlZCBieSBpbi1wcm9jZXNzCisgLy8gc3RhY2sgZHVtcGluZyBzaWduYWwgaGFuZGxlcikuIE5P IG1hbGxvYyBvciBzdGRpbyBpcyBhbGxvd2VkIGhlcmUuCisgCistI2lmICFkZWZpbmVkKF9fVUNM SUJDX18pICYmICFkZWZpbmVkKF9BSVgpCisrI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVm aW5lZChfQUlYKQorICAgUHJpbnRCYWNrdHJhY2VPdXRwdXRIYW5kbGVyIGhhbmRsZXI7CisgICBQ cm9jZXNzQmFja3RyYWNlKHRyYWNlXywgY291bnRfLCBwcmVmaXhfc3RyaW5nLCAmaGFuZGxlcik7 CisgI2VuZGlmCisgfQorIAorLSNpZiAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChf QUlYKQorKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKKyB2b2lkIFN0 YWNrVHJhY2U6Ok91dHB1dFRvU3RyZWFtV2l0aFByZWZpeChzdGQ6Om9zdHJlYW0qIG9zLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHByZWZp eF9zdHJpbmcpIGNvbnN0IHsKKyAgIFN0cmVhbUJhY2t0cmFjZU91dHB1dEhhbmRsZXIgaGFuZGxl cihvcyk7CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvZGVidWcv c3RhY2tfdHJhY2UuY2MJMjAxOS0wNC0wOSAwOTozMToxNi4wMDAwMDAwMDAgKzAyMDAKKysrKyAt CTIwMTktMDUtMDYgMjM6MTg6MTQuOTIzNTY2OTkyICswMjAwCitAQCAtMjMzLDcgKzIzMyw3IEBA CisgfQorIHN0ZDo6c3RyaW5nIFN0YWNrVHJhY2U6OlRvU3RyaW5nV2l0aFByZWZpeChjb25zdCBj aGFyKiBwcmVmaXhfc3RyaW5nKSBjb25zdCB7CisgICBzdGQ6OnN0cmluZ3N0cmVhbSBzdHJlYW07 CistI2lmICFkZWZpbmVkKF9fVUNMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCisrI2lmIGRlZmlu ZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQorICAgT3V0cHV0VG9TdHJlYW1XaXRoUHJl Zml4KCZzdHJlYW0sIHByZWZpeF9zdHJpbmcpOworICNlbmRpZgorICAgcmV0dXJuIHN0cmVhbS5z dHIoKTsKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL2Jhc2UvbG9nZ2lu Zy5jYwkyMDE3LTExLTI4IDE0OjA2OjUzLjAwMDAwMDAwMCArMDEwMAorLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vYmFzZS9sb2dnaW5nLmNjCTIwMTgtMDEtMjcgMjI6NDY6 MzQuOTcwNDA2ODA3ICswMTAwCitAQCAtNTQ2LDcgKzU0Niw3IEBACisgCisgTG9nTWVzc2FnZTo6 fkxvZ01lc3NhZ2UoKSB7CisgICBzaXplX3Qgc3RhY2tfc3RhcnQgPSBzdHJlYW1fLnRlbGxwKCk7 CistI2lmICFkZWZpbmVkKE9GRklDSUFMX0JVSUxEKSAmJiAhZGVmaW5lZChPU19OQUNMKSAmJiAh ZGVmaW5lZChfX1VDTElCQ19fKSAmJiBcCisrI2lmICFkZWZpbmVkKE9GRklDSUFMX0JVSUxEKSAm JiAhZGVmaW5lZChPU19OQUNMKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgXAorICAgICAhZGVm aW5lZChPU19BSVgpCisgICBpZiAoc2V2ZXJpdHlfID09IExPR19GQVRBTCAmJiAhYmFzZTo6ZGVi dWc6OkJlaW5nRGVidWdnZWQoKSkgeworICAgICAvLyBJbmNsdWRlIGEgc3RhY2sgdHJhY2Ugb24g YSBmYXRhbCwgdW5sZXNzIGEgZGVidWdnZXIgaXMgYXR0YWNoZWQuCmRpZmYgLS1naXQgYS9zcmNw a2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDE3LXF0LW11c2wtdGhyZWFkLXN0YWNrc2l6ZS5w YXRjaCBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMTctcXQtbXVzbC10aHJlYWQt c3RhY2tzaXplLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40 OTY3NTNiZWYzMAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRj aGVzLzAwMTctcXQtbXVzbC10aHJlYWQtc3RhY2tzaXplLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAK K2RpZmYgLS1naXQgYS9zcmMvM3JkcGFydHkvY2hyb21pdW0vcHBhcGkvdXRpbGl0eS90aHJlYWRp bmcvc2ltcGxlX3RocmVhZC5jYyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9wcGFwaS91dGlsaXR5 L3RocmVhZGluZy9zaW1wbGVfdGhyZWFkLmNjCitpbmRleCAwMmJmNDliLi4wNWVlMTgyIDEwMDY0 NAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9wcGFwaS91dGlsaXR5L3Ro cmVhZGluZy9zaW1wbGVfdGhyZWFkLmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3BwYXBpL3V0aWxpdHkvdGhyZWFkaW5nL3NpbXBsZV90aHJlYWQuY2MKK0BAIC0xMyw3 ICsxMyw3IEBAIG5hbWVzcGFjZSBwcCB7CisgbmFtZXNwYWNlIHsKKyAKKyAvLyBVc2UgMk1CIGRl ZmF1bHQgc3RhY2sgc2l6ZSBmb3IgTmF0aXZlIENsaWVudCwgb3RoZXJ3aXNlIHVzZSBzeXN0ZW0g ZGVmYXVsdC4KKy0jaWYgZGVmaW5lZChfX25hdGl2ZV9jbGllbnRfXykKKysjaWYgZGVmaW5lZChf X25hdGl2ZV9jbGllbnRfXykgfHwgIWRlZmluZWQoX19HTElCQ19fKQorIGNvbnN0IHNpemVfdCBr RGVmYXVsdFN0YWNrU2l6ZSA9IDIgKiAxMDI0ICogMTAyNDsKKyAjZWxzZQorIGNvbnN0IHNpemVf dCBrRGVmYXVsdFN0YWNrU2l6ZSA9IDA7CitkaWZmIC0tZ2l0IGEvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3Y4L3NyYy9iYXNlL3BsYXRmb3JtL3BsYXRmb3JtLXBvc2l4LmNjIGIvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3Y4L3NyYy9iYXNlL3BsYXRmb3JtL3BsYXRmb3JtLXBvc2l4LmNjCitpbmRleCBj ZjdmM2VjLi5lMDZhNWNlIDEwMDY0NAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS92OC9zcmMvYmFzZS9wbGF0Zm9ybS9wbGF0Zm9ybS1wb3NpeC5jYworKysrIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92OC9zcmMvYmFzZS9wbGF0Zm9ybS9wbGF0Zm9ybS1w b3NpeC5jYworQEAgLTc2MSw3ICs3NjEsNyBAQCB2b2lkIFRocmVhZDo6U3RhcnQoKSB7CisgI2lm IFY4X09TX01BQ09TWAorICAgICAvLyBEZWZhdWx0IG9uIE1hYyBPUyBYIGlzIDUxMmtCIC0tIGJ1 bXAgdXAgdG8gMU1CCisgICAgIHN0YWNrX3NpemUgPSAxICogMTAyNCAqIDEwMjQ7CistI2VsaWYg VjhfT1NfQUlYCisrI2VsaWYgVjhfT1NfQUlYIHx8ICFkZWZpbmVkKF9fR0xJQkNfXykKKyAgICAg Ly8gRGVmYXVsdCBvbiBBSVggaXMgOTZrQiAtLSBidW1wIHVwIHRvIDJNQgorICAgICBzdGFja19z aXplID0gMiAqIDEwMjQgKiAxMDI0OworICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUt d2ViZW5naW5lL3BhdGNoZXMvMDAxOC1zYW5kYm94LW1lbWJhcnJpZXIucGF0Y2ggYi9zcmNwa2dz L3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDE4LXNhbmRib3gtbWVtYmFycmllci5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjczOTcxZjI0MzIKLS0tIC9kZXYv bnVsbAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDE4LXNhbmRib3gtbWVt YmFycmllci5wYXRjaApAQCAtMCwwICsxLDYwIEBACistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtLy9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2FybTY0X2xpbnV4X3N5 c2NhbGxzLmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL3NhbmRib3gv bGludXgvc3lzdGVtX2hlYWRlcnMvYXJtNjRfbGludXhfc3lzY2FsbHMuaAorQEAgLTEwNjMsNCAr MTA2Myw4IEBACisgI2RlZmluZSBfX05SX21lbWZkX2NyZWF0ZSAyNzkKKyAjZW5kaWYKKyAKKysj aWYgIWRlZmluZWQoX19OUl9tZW1iYXJyaWVyKQorKyNkZWZpbmUgX19OUl9tZW1iYXJyaWVyIDI4 MworKyNlbmRpZgorKworICNlbmRpZiAgLy8gU0FOREJPWF9MSU5VWF9TWVNURU1fSEVBREVSU19B Uk02NF9MSU5VWF9TWVNDQUxMU19IXworCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtLy9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2FybV9saW51eF9zeXNjYWxscy5o CisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy9zYW5kYm94L2xpbnV4L3N5 c3RlbV9oZWFkZXJzL2FybV9saW51eF9zeXNjYWxscy5oCitAQCAtMTM4NSw2ICsxMzg1LDEwIEBA CisgI2RlZmluZSBfX05SX21lbWZkX2NyZWF0ZSAoX19OUl9TWVNDQUxMX0JBU0UrMzg1KQorICNl bmRpZgorIAorKyNpZiAhZGVmaW5lZChfX05SX21lbWJhcnJpZXIpCisrI2RlZmluZSBfX05SX21l bWJhcnJpZXIgKF9fTlJfU1lTQ0FMTF9CQVNFKzM4OSkKKysjZW5kaWYKKysKKyAvLyBBUk0gcHJp dmF0ZSBzeXNjYWxscy4KKyAjaWYgIWRlZmluZWQoX19BUk1fTlJfQkFTRSkKKyAjZGVmaW5lIF9f QVJNX05SX0JBU0UgKF9fTlJfU1lTQ0FMTF9CQVNFICsgMHhGMDAwMCkKKworLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy94 ODZfMzJfbGludXhfc3lzY2FsbHMuaAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS8vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy94ODZfMzJfbGludXhfc3lzY2FsbHMu aAorQEAgLTE0MjIsNSArMTQyMiw5IEBACisgI2RlZmluZSBfX05SX21lbWZkX2NyZWF0ZSAzNTYK KyAjZW5kaWYKKyAKKysjaWYgIWRlZmluZWQoX19OUl9tZW1iYXJyaWVyKQorKyNkZWZpbmUgX19O Ul9tZW1iYXJyaWVyIDM3NQorKyNlbmRpZgorKworICNlbmRpZiAgLy8gU0FOREJPWF9MSU5VWF9T WVNURU1fSEVBREVSU19YODZfMzJfTElOVVhfU1lTQ0FMTFNfSF8KKyAKKy0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMveDg2 XzY0X2xpbnV4X3N5c2NhbGxzLmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMveDg2XzY0X2xpbnV4X3N5c2NhbGxzLmgK K0BAIC0xMjkwLDUgKzEyOTAsOSBAQAorICNkZWZpbmUgX19OUl9tZW1mZF9jcmVhdGUgMzE5Cisg I2VuZGlmCisgCisrI2lmICFkZWZpbmVkKF9fTlJfbWVtYmFycmllcikKKysjZGVmaW5lIF9fTlJf bWVtYmFycmllciAzMjQKKysjZW5kaWYKKysKKyAjZW5kaWYgIC8vIFNBTkRCT1hfTElOVVhfU1lT VEVNX0hFQURFUlNfWDg2XzY0X0xJTlVYX1NZU0NBTExTX0hfCisgCistLS0gcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtLy9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMv c3lzY2FsbF9zZXRzLmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy9z YW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmNjCitAQCAtMzcw LDYgKzM3MCw3IEBACisgICBzd2l0Y2ggKHN5c25vKSB7CisgICAgIGNhc2UgX19OUl9leGl0Ogor ICAgICBjYXNlIF9fTlJfZXhpdF9ncm91cDoKKysgICAgY2FzZSBfX05SX21lbWJhcnJpZXI6Cisg ICAgIGNhc2UgX19OUl93YWl0NDoKKyAgICAgY2FzZSBfX05SX3dhaXRpZDoKKyAjaWYgZGVmaW5l ZChfX2kzODZfXykKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAw MTktZ24tY3Jvc3Mtc3lzcm9vdC5wYXRjaCBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVz LzAwMTktZ24tY3Jvc3Mtc3lzcm9vdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uZWU2Njg5YTQxODMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS13 ZWJlbmdpbmUvcGF0Y2hlcy8wMDE5LWduLWNyb3NzLXN5c3Jvb3QucGF0Y2gKQEAgLTAsMCArMSwy NCBAQAorVGhlcmUgaXMgbm8gcmVhc29uIHRvIHJ1biB0aGlzIHNjcmlwdCBhbmQgcnVubmluZyBp dCBmYWlscyBvbiBhcmNoaXRlY3R1cmVzCitjaHJvbWl1bSBkb2VzIG5vdCBvZmZpY2lhbGx5IHN1 cHBvcnQgKHN1Y2ggYXMgcHBjNjQpLgorCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL2J1aWxkL2NvbmZpZy9wb3NpeC9CVUlMRC5nbgorKysrIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9idWlsZC9jb25maWcvcG9zaXgvQlVJTEQuZ24KK0BAIC0xMDIsMTIg KzEwMiwxMiBAQCBjb25maWcoInJ1bnRpbWVfbGlicmFyeSIpIHsKKyAgICAgICAjIHdoZW4gdHVy bmluZyB0aGUgc3lzcm9vdCBvbiBvciBvZmYuIChkZWZpbmVzIGFyZSBwYXNzZWQgdmlhIHRoZSBj b21tYW5kCisgICAgICAgIyBsaW5lLCBhbmQgYnVpbGQgc3lzdGVtIHJlYnVpbGRzIHRoaW5ncyB3 aGVuIHRoZWlyIGNvbW1hbmRsaW5lCisgICAgICAgIyBjaGFuZ2VzKS4gTm90aGluZyBzaG91bGQg ZXZlciByZWFkIHRoaXMgZGVmaW5lLgorLSAgICAgIHN5c3Jvb3RfaGFzaCA9CistICAgICAgICAg IGV4ZWNfc2NyaXB0KCIvL2J1aWxkL2xpbnV4L3N5c3Jvb3Rfc2NyaXB0cy9pbnN0YWxsLXN5c3Jv b3QucHkiLAorLSAgICAgICAgICAgICAgICAgICAgICBbICItLXByaW50LWhhc2g9JGN1cnJlbnRf Y3B1IiBdLAorLSAgICAgICAgICAgICAgICAgICAgICAidHJpbSBzdHJpbmciLAorLSAgICAgICAg ICAgICAgICAgICAgICBbICIvL2J1aWxkL2xpbnV4L3N5c3Jvb3Rfc2NyaXB0cy9zeXNyb290cy5q c29uIiBdKQorLSAgICAgIGRlZmluZXMgKz0gWyAiQ1JfU1lTUk9PVF9IQVNIPSRzeXNyb290X2hh c2giIF0KKysgICAgICAjc3lzcm9vdF9oYXNoID0KKysgICAgICAjICAgIGV4ZWNfc2NyaXB0KCIv L2J1aWxkL2xpbnV4L3N5c3Jvb3Rfc2NyaXB0cy9pbnN0YWxsLXN5c3Jvb3QucHkiLAorKyAgICAg ICMgICAgICAgICAgICAgICAgWyAiLS1wcmludC1oYXNoPSRjdXJyZW50X2NwdSIgXSwKKysgICAg ICAjICAgICAgICAgICAgICAgICJ0cmltIHN0cmluZyIsCisrICAgICAgIyAgICAgICAgICAgICAg ICBbICIvL2J1aWxkL2xpbnV4L3N5c3Jvb3Rfc2NyaXB0cy9zeXNyb290cy5qc29uIiBdKQorKyAg ICAgICNkZWZpbmVzICs9IFsgIkNSX1NZU1JPT1RfSEFTSD0kc3lzcm9vdF9oYXNoIiBdCisgICAg IH0KKyAgICAgYXNtZmxhZ3MgKz0gc3lzcm9vdF9mbGFncworIApkaWZmIC0tZ2l0IGEvc3JjcGtn cy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAyMC1tc2d2ZWMtcHVzaF9iYWNrLnBhdGNoIGIvc3Jj cGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAyMC1tc2d2ZWMtcHVzaF9iYWNrLnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43NTQ4MWEyODg5ZgotLS0gL2Rl di9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMjAtbXNndmVjLXB1 c2hfYmFjay5wYXRjaApAQCAtMCwwICsxLDE0IEBACistLS0gcXR3ZWJlbmdpbmUtZXZlcnl3aGVy ZS1zcmMtNS4xNC4wLWJldGEyL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9uZXQvc29ja2V0L3VkcF9z b2NrZXRfcG9zaXguY2MJMjAxOS0xMC0wOCAwODoyNzo0My4wMDAwMDAwMDAgKzAyMDAKKysrKyAt CTIwMTktMTEtMTEgMjI6NDE6NDYuNjk5MDY4ODg5ICswMTAwCitAQCAtMTE5MSw3ICsxMTkxLDEx IEBACisgICAgIG1zZ19pb3YtPnB1c2hfYmFjayh7Y29uc3RfY2FzdDxjaGFyKj4oYnVmZmVyLT5k YXRhKCkpLCBidWZmZXItPmxlbmd0aCgpfSk7CisgICBtc2d2ZWMtPnJlc2VydmUoYnVmZmVycy5z aXplKCkpOworICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBidWZmZXJzLnNpemUoKTsgaisrKQor KyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKKyAgICAgbXNndmVjLT5wdXNoX2JhY2soe3tudWxscHRy LCAwLCAmbXNnX2lvdltqXSwgMSwgbnVsbHB0ciwgMCwgMH0sIDB9KTsKKysjZWxzZQorKyAgICBt c2d2ZWMtPnB1c2hfYmFjayh7e251bGxwdHIsIDAsICZtc2dfaW92W2pdLCAxLCAwLCAwLCAwfSwg MH0pOworKyNlbmRpZgorICAgaW50IHJlc3VsdCA9IEhBTkRMRV9FSU5UUihTZW5kbW1zZyhmZCwg Jm1zZ3ZlY1swXSwgYnVmZmVycy5zaXplKCksIDApKTsKKyAgIFNlbmRSZXN1bHQgc2VuZF9yZXN1 bHQoMCwgMCwgc3RkOjptb3ZlKGJ1ZmZlcnMpKTsKKyAgIGlmIChyZXN1bHQgPCAwKSB7CmRpZmYg LS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDIxLXNhbmRib3gtc2NoZWRf Z2V0cGFyYW0ucGF0Y2ggYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDIxLXNhbmRi b3gtc2NoZWRfZ2V0cGFyYW0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLmE5MWU4NWVjYTNjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5n aW5lL3BhdGNoZXMvMDAyMS1zYW5kYm94LXNjaGVkX2dldHBhcmFtLnBhdGNoCkBAIC0wLDAgKzEs MjQgQEAKK0FsbG93IFNZU19zY2hlZF9nZXRwYXJhbSBhbmQgU1lTX3NjaGVkX2dldHNjaGVkdWxl cgorbXVzbCB1c2VzIHRoZW0gZm9yIHB0aHJlYWRfZ2V0c2NoZWRwYXJhbSgpCisKK3NvdXJjZTog aHR0cHM6Ly9naXQuYWxwaW5lbGludXgub3JnL2Fwb3J0cy9jb21taXQvY29tbXVuaXR5L2Nocm9t aXVtP2lkPTU0YWY5ZjhhYzI0ZjUyZDM4MmM1NzU4ZTI0NDViZjAyMDZlZmY0MGUKKworLS0tIGEv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3NlcnZpY2VzL3NlcnZpY2VfbWFuYWdlci9zYW5kYm94L2xp bnV4L2JwZl9yZW5kZXJlcl9wb2xpY3lfbGludXguY2MJMjAxOS0xMC0wOCAwODoyNzo0My4wMDAw MDAwMDAgKzAyMDAKKysrKyAtCTIwMTktMTEtMTEgMjI6MzM6NTEuODY1MTUzNjg0ICswMTAwCitA QCAtODgsMTAgKzg4LDE2IEBACisgICAgIGNhc2UgX19OUl9zeXNpbmZvOgorICAgICBjYXNlIF9f TlJfdGltZXM6CisgICAgIGNhc2UgX19OUl91bmFtZToKKysjaWYgIWRlZmluZWQoX19HTElCQ19f KQorKyAgICBjYXNlIF9fTlJfc2NoZWRfZ2V0cGFyYW06CisrICAgIGNhc2UgX19OUl9zY2hlZF9n ZXRzY2hlZHVsZXI6CisrI2VuZGlmCisgICAgICAgcmV0dXJuIEFsbG93KCk7CisgICAgIGNhc2Ug X19OUl9zY2hlZF9nZXRhZmZpbml0eToKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pCisgICAgIGNh c2UgX19OUl9zY2hlZF9nZXRwYXJhbToKKyAgICAgY2FzZSBfX05SX3NjaGVkX2dldHNjaGVkdWxl cjoKKysjZW5kaWYKKyAgICAgY2FzZSBfX05SX3NjaGVkX3NldHNjaGVkdWxlcjoKKyAgICAgICBy ZXR1cm4gc2FuZGJveDo6UmVzdHJpY3RTY2hlZFRhcmdldChHZXRQb2xpY3lQaWQoKSwgc3lzbm8p OworICAgICBjYXNlIF9fTlJfcHJsaW1pdDY0OgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2Vi ZW5naW5lL3BhdGNoZXMvMDAyMi1jYW5vbmljYWxpemUtZmlsZS1uYW1lLW11c2wucGF0Y2ggYi9z cmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDIyLWNhbm9uaWNhbGl6ZS1maWxlLW5hbWUt bXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODkzZWQy ZDQxYmIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8w MDIyLWNhbm9uaWNhbGl6ZS1maWxlLW5hbWUtbXVzbC5wYXRjaApAQCAtMCwwICsxLDExIEBACist LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L25hc20vbmFz bWxpYi9yZWFscGF0aC5jCTIwMTktMDktMjMgMTQ6MjQ6MjAuMDAwMDAwMDAwICswMjAwCisrKysg LQkyMDE5LTEwLTExIDA2OjI3OjI4LjQ1MDMyOTk4NiArMDIwMAorQEAgLTU3LDcgKzU3LDcgQEAK KyAgKi8KKyBjaGFyICpuYXNtX3JlYWxwYXRoKGNvbnN0IGNoYXIgKnJlbF9wYXRoKQorIHsKKy0g ICAgY2hhciAqcnAgPSBjYW5vbmljYWxpemVfZmlsZV9uYW1lKHJlbF9wYXRoKTsKKysgICAgY2hh ciAqcnAgPSByZWFscGF0aChyZWxfcGF0aCwgTlVMTCk7CisgICAgIHJldHVybiBycCA/IHJwIDog bmFzbV9zdHJkdXAocmVsX3BhdGgpOworIH0KKyAKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdl YmVuZ2luZS90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS90ZW1wbGF0ZQpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMDlhNjQ1ODJlYjcKLS0tIC9kZXYvbnVs bAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvdGVtcGxhdGUKQEAgLTAsMCArMSwxNTUgQEAK KyMgVGVtcGxhdGUgZmlsZSBmb3IgJ3F0NS13ZWJlbmdpbmUnCitwa2duYW1lPXF0NS13ZWJlbmdp bmUKK3ZlcnNpb249NS4xNC4xCityZXZpc2lvbj0xCit3cmtzcmM9InF0d2ViZW5naW5lLWV2ZXJ5 d2hlcmUtc3JjLSR7dmVyc2lvbn0iCithcmNocz0ieDg2XzY0KiBpNjg2KiBhcm12WzY3XSogcHBj NjQqIGFhcmNoNjQqIgorYnVpbGRfc3R5bGU9cW1ha2UKK2NvbmZpZ3VyZV9hcmdzPSItLQorIC13 ZWJlbmdpbmUtaWN1IC13ZWJlbmdpbmUtZmZtcGVnIC13ZWJlbmdpbmUtb3B1cyAtd2ViZW5naW5l LXdlYnAKKyAtd2ViZW5naW5lLXBlcHBlci1wbHVnaW5zIC13ZWJlbmdpbmUtcHJpbnRpbmctYW5k LXBkZiAtd2ViZW5naW5lLXByb3ByaWV0YXJ5LWNvZGVjcworIC13ZWJlbmdpbmUtcHVsc2VhdWRp byAtd2ViZW5naW5lLXNwZWxsY2hlY2tlciAtd2ViZW5naW5lLXdlYnJ0YyAtd2ViZW5naW5lLWdl b2xvY2F0aW9uCisgJCh2b3B0X2lmIHNuYXBzaG90ICcnICctbm8nKS13ZWJlbmdpbmUtdjgtc25h cHNob3QgLXdlYmVuZ2luZS1rZXJiZXJvcyIKKyMgUmVseSBvbiBhdXRvIGRldGVjdGlvbiAoZmFp bHMgaWYgZm9yY2VkIGZvciBjcm9zcyBidWlsZHMpIC13ZWJlbmdpbmUtYWxzYQoraG9zdG1ha2Vk ZXBlbmRzPSJxdDUtcW1ha2UgZ3BlcmYgbmluamEgcXQ1LWhvc3QtdG9vbHMgZmxleCBwa2ctY29u ZmlnCisgcGVybCBweXRob24gcHJvdG9idWYiCittYWtlZGVwZW5kcz0icXQ1LXdlYmNoYW5uZWwt ZGV2ZWwgcXQ1LWxvY2F0aW9uLWRldmVsIHF0NS10b29scy1kZXZlbAorIHF0NS1kZWNsYXJhdGl2 ZS1kZXZlbCBsaWJldmVudC1kZXZlbCBzbmFwcHktZGV2ZWwgaWN1LWRldmVsIGZmbXBlZy1kZXZl bAorIGxpYndlYnAtZGV2ZWwgb3B1cy1kZXZlbCBjdXBzLWRldmVsIG5zcy1kZXZlbCBtaW5pemlw LWRldmVsIGxpYnhzbHQtZGV2ZWwKKyBsaWJ2cHgtZGV2ZWwgcmUyLWRldmVsIGxpYlh0c3QtZGV2 ZWwgbGliWGN1cnNvci1kZXZlbCBsaWJYY29tcG9zaXRlLWRldmVsCisganNvbmNwcC1kZXZlbCBo YXJmYnV6ei1kZXZlbCBsY21zMi1kZXZlbCBwcm90b2J1Zi1kZXZlbCBwdWxzZWF1ZGlvLWRldmVs CisgbGliWHJhbmRyLWRldmVsIE1lc2FMaWItZGV2ZWwgbWl0LWtyYjUtZGV2ZWwiCitzaG9ydF9k ZXNjPSJDcm9zcy1wbGF0Zm9ybSBhcHBsaWNhdGlvbiBhbmQgVUkgZnJhbWV3b3JrIChRVDUpIC0g V2ViRW5naW5lIGNvbXBvbmVudCIKK21haW50YWluZXI9IkpvaG4gPGpvaG56QHBvc3Rlby5uZXQ+ IgorbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciwgTEdQTC0zLjAtb3ItbGF0ZXIiCitob21lcGFn ZT0iaHR0cHM6Ly9xdC5pby8iCitkaXN0ZmlsZXM9Imh0dHA6Ly9kb3dubG9hZC5xdC5pby9vZmZp Y2lhbF9yZWxlYXNlcy9xdC8ke3ZlcnNpb24lLip9LyR7dmVyc2lvbn0vc3VibW9kdWxlcy9xdHdl YmVuZ2luZS1ldmVyeXdoZXJlLXNyYy0ke3ZlcnNpb259LnRhci54eiIKK2NoZWNrc3VtPTRlYzc3 MDQwYTg3NmE4M2FhMmE4MzNlYmZlN2IzZTg4ZGNjMTY3Y2ViMzE3MDk1ZWIyMjZhMGI4ZDQ1NWU4 ODcKK3BhdGNoX2FyZ3M9Ii1OcDEiCisKK2J1aWxkX29wdGlvbnM9InNuYXBzaG90IgorCitpZiBb ICIkQ1JPU1NfQlVJTEQiIF07IHRoZW4KKwlob3N0bWFrZWRlcGVuZHMrPSIgbnNzLWRldmVsIGxp YmV2ZW50LWRldmVsIHF0NS1sb2NhdGlvbi1kZXZlbAorCSBxdDUtZGVjbGFyYXRpdmUtZGV2ZWwi CitmaQorCitpZiBbICIkWEJQU19UQVJHRVRfTElCQyIgPSAibXVzbCIgXTsgdGhlbgorCW1ha2Vk ZXBlbmRzKz0iIG11c2wtbGVnYWN5LWNvbXBhdCIKK2ZpCisKK2lmIFsgIiRYQlBTX1dPUkRTSVpF IiAtZXEgMzIgXTsgdGhlbgorCW5vZGVidWc9eWVzICAjIHByZXZlbnQgT09NCitmaQorCitpZiBb ICEgIiRYQlBTX1dPUkRTSVpFIiA9ICIkWEJQU19UQVJHRVRfV09SRFNJWkUiIF07IHRoZW4KKwli cm9rZW49IndlYmVuZ2luZSBjYW4gYmUgYnVpbHQgb25seSBpZiB3b3JkIHNpemUgbWF0Y2hlcyIK KwkjVE9ETzogbG9vayBpbnRvIHdvcmtpbmcgYXJvdW5kIHRoaXMgd2l0aCAtMzJiaXQgcGFja2Fn ZXMKK2ZpCisKK2Nhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgorCW1pcHMqfHBwYyopIG1h a2VkZXBlbmRzKz0iIGxpYmF0b21pYy1kZXZlbCIgOzsKKwkqKSA7OworZXNhYworCisjIFRPRE86 IGxpa2VseSByZWxhdGVkIHRvIG5vdCBtYXRjaGluZyB3b3Jkc2l6ZQorY2FzZSAiJFhCUFNfVEFS R0VUX01BQ0hJTkUiIGluCisJYXJtKnxtaXBzKik7OworCSopIGJ1aWxkX29wdGlvbnNfZGVmYXVs dD0ic25hcHNob3QiOzsKK2VzYWMKKworX2Jvb3RzdHJhcF9nbigpIHsKKwkjIEJvb3RzdHJhcCBn biAoZ2VuZXJhdGUgbmluamEpCisJZWNobyAiQm9vdHN0cmFwcGluZyAnZ24nIgorCWNkICR7d3Jr c3JjfS9zcmMvM3JkcGFydHkvZ24KKwlDRkxBR1M9IiRDRkxBR1NfaG9zdCIgQ1hYRkxBR1M9IiRD WFhGTEFHU19ob3N0IiBMREZMQUdTPSIkTERGTEFHU19ob3N0IiBcCisJUEtHQ09ORklHPS91c3Iv YmluL3BrZ2NvbmZpZyBQS0dfQ09ORklHX1BBVEg9Ii91c3IvbGliL3BrZ2NvbmZpZzovdXNyL3No YXJlL3BrZ2NvbmZpZyIgXAorCQlweXRob24yIGJ1aWxkL2dlbi5weSAtLW5vLWxhc3QtY29tbWl0 LXBvc2l0aW9uIC0tb3V0LXBhdGggXAorCQkJJHt3cmtzcmN9L3NyYy8zcmRwYXJ0eS9nbi9vdXQv UmVsZWFzZSAtLWNjICIkQ0NfaG9zdCIgXAorICAgICAgICAgICAgICAgICAgICAgICAgLS1jeHgg IiRDWFhfaG9zdCIgLS1sZCAiJENYWF9ob3N0IiAtLWFyICIkQVJfaG9zdCIKKwluaW5qYSAtQyBv dXQvUmVsZWFzZSBnbgorCWNkICR7d3Jrc3JjfQorfQorCitfY2xlYW51cF93cmtzcmNfbGVhaygp IHsKKwlpZiBbIC1kICIke1BLR0RFU1RESVJ9L3Vzci9saWIvY21ha2UiIF07IHRoZW4KKwkJIyBS ZXBsYWNlIHJlZmVyZW5jZXMgdG8gJHt3cmtzcmN9IGluIGNtYWtlIGZpbGVzCisJCXNlZCAtaSAk e1BLR0RFU1RESVJ9L3Vzci9saWIvY21ha2UvKi8qLmNtYWtlIFwKKwkJCS1lICJzOyR7d3Jrc3Jj fS9ob3N0Oy91c3IvbGliL3F0NTtnIiBcCisJCQktZSAicztkZXZpY2VzL3ZvaWQtJHtYQlBTX0NS T1NTX1RSSVBMRVR9LWcrKztsaW51eC1nKys7ZyIKKwlmaQorCWlmIFsgLWQgIiR7UEtHREVTVERJ Un0vdXNyL2xpYi9wa2djb25maWciIF07IHRoZW4KKwkJIyBSZXBsYWNlIHJlZmVyZW5jZXMgdG8g JHt3cmtzcmN9IGluIHBrZ2NvbmZpZyBmaWxlcworCQlzZWQgLWkgJHtQS0dERVNURElSfS91c3Iv bGliL3BrZ2NvbmZpZy8qLnBjIFwKKwkJCS1lICJzOyR7d3Jrc3JjfS9ob3N0Oy91c3IvbGliL3F0 NTtnIiBcCisJCQktZSAicztkZXZpY2VzL3ZvaWQtJHtYQlBTX0NST1NTX1RSSVBMRVR9LWcrKzts aW51eC1nKys7ZyIKKwlmaQorCSMgUmVtb3ZlIFFNQUtFX1BSTF9CVUlMRF9ESVIgZnJvbSBoaW50 IGZpbGVzIGZvciBzdGF0aWMgbGlicmFyaWVzCisJIyBhbmQgcmVwbGFjZSByZWZlcmVuY2VzIHRv ICR7d3Jrc3JjfQorCWZpbmQgJHtQS0dERVNURElSfSAtaW5hbWUgIioucHJsIiAtZXhlYyBzZWQg LWkgInt9IiBcCisJCS1lICIvXlFNQUtFX1BSTF9CVUlMRF9ESVIvZCIgXAorCQktZSAiczstTCR7 d3Jrc3JjfS9xdGJhc2UvbGliOy1ML3Vzci9saWI7ZyIgXDsKKwkjIFJlcGxhY2UgJHt3cmtzcmN9 IGluIHByb2plY3QgaW5jbHVkZSBmaWxlcworCWZpbmQgJHtQS0dERVNURElSfSAtaW5hbWUgIiou cHJpIiAtZXhlYyBzZWQgLWkgInt9IiBcCisJCS1lICJzOyR7d3Jrc3JjfS9xdGJhc2U7L3Vzci9s aWIvcXQ1O2ciIFw7Cit9CisKK3ByZV9jb25maWd1cmUoKSB7CisJZXhwb3J0IFBBVEg9JHtQQVRI L1wvYnVpbGRkaXJcLy54YnBzLXF0NS13ZWJlbmdpbmVcL3dyYXBwZXJzOi99CisJY3AgJHtGSUxF U0RJUn0vcmVzb2x2X2NvbXBhdC5oICR7d3Jrc3JjfS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbmV0 L2RucworCQorCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgorCQlhcm12NSp8YXJtdjYq KSAgIyBEaXNhYmxlICJ5aWVsZCIgYXNzZW1ibGVyIGluc3RydWN0aW9uCisJCQlzZWQgLWkgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9h bGxvY2F0b3Ivc3Bpbl9sb2NrLmNjIFwKKwkJCQlxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvcGRmaXVtL3RoaXJkX3BhcnR5L2Jhc2UvYWxsb2NhdG9yL3BhcnRp dGlvbl9hbGxvY2F0b3Ivc3Bpbl9sb2NrLmNjIFwKKwkJCQktZSAnczsieWllbGQiOyJub3AiOycK KwkJCTs7CisJZXNhYworCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgorCQkqLW11c2wp IGV4cG9ydCBDWFhGTEFHUys9IiAtRF9QT1NJWF9USFJFQURfQVRUUl9TVEFDS1NJWkU9MjA5NzE1 MiI7OworCWVzYWMKKwljYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KKwkJbWlwcyopICAj IHNnaWRlZnMuaCBpcyBpbiAvdXNyL2luY2x1ZGUvYXNtCisJCQlmb3IgZiBpbiBcCisJCQkJcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2xzcy9saW51eF9zeXNj YWxsX3N1cHBvcnQuaCBcCisJCQkJcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vYW5kcm9pZC9pbmNsdWRlL2Fz bS1taXBzL2ZwcmVnZGVmLmggXAorCQkJCXF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL2FuZHJvaWQvaW5jbHVk ZS9hc20tbWlwcy9yZWdkZWYuaCBcCisJCQkJcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vYW5kcm9pZC9pbmNs dWRlL2FzbS1taXBzL2FzbS5oIFwKKwkJCQlxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvdGNtYWxsb2MvdmVuZG9yL3NyYy9iYXNlL2xpbnV4X3N5c2NhbGxfc3Vw cG9ydC5oIFwKKwkJCQlxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvdGNtYWxsb2MvY2hyb21pdW0vc3JjL2Jhc2UvbGludXhfc3lzY2FsbF9zdXBwb3J0LmggXAor CQkJCXF0c2NyaXB0L3NyYy8zcmRwYXJ0eS9qYXZhc2NyaXB0Y29yZS9KYXZhU2NyaXB0Q29yZS93 dGYvUGxhdGZvcm0uaDsgZG8KKwkJCQkJc2VkIC1pICRmIC1lICJzOzxzZ2lkZWZzLmg+Ozxhc20v c2dpZGVmcy5oPjsiCisJCQlkb25lCisJCQkjIEFzc3VtZSB0aGF0IFJHQkEgb3JkZXIgaXMgY29y cmVjdCBmb3IgYmlnIGVuZGlhbiBDUFVzCisJCQlzZWQgLWkgcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3NraWEvY29uZmlnL1NrVXNlckNvbmZpZy5oIFwKKwkJCQktZSAnLyNlcnJv ciBSZWFkIHRoZSBjb21tZW50IGF0IHRoaXMgbG9jYXRpb24vZCcKKwkJCTs7CisJZXNhYworCisJ aWYgWyAiJENST1NTX0JVSUxEIiBdOyB0aGVuCisJCV9ib290c3RyYXBfZ24KKwlmaQorfQorCitw cmVfYnVpbGQoKSB7CisJZXhwb3J0IE5JTkpBSk9CUz0ke21ha2Vqb2JzfQorfQorCitxdDUtd2Vi ZW5naW5lLWRldmVsX3BhY2thZ2UoKSB7CisJZGVwZW5kcz0iJHtzb3VyY2Vwa2d9Pj0ke3ZlcnNp b259XyR7cmV2aXNpb259IgorCXNob3J0X2Rlc2MrPSIgLSBkZXZlbG9wbWVudCBmaWxlcyIKKwlw a2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgdXNyL2luY2x1ZGUKKwkJdm1vdmUgdXNyL2xpYi9jbWFr ZQorCQl2bW92ZSB1c3IvbGliL3BrZ2NvbmZpZworCQl2bW92ZSB1c3IvbGliL3F0NS9ta3NwZWNz CisJCSNUT0RPOiBGSVghISEKKwkJaWYgWyAteiAiJENST1NTX0JVSUxEIiBdOyB0aGVuCisJCQl2 bW92ZSB1c3IvbGliL3F0NS9wbHVnaW5zL2Rlc2lnbmVyCisJCWZpCisJCXZtb3ZlICJ1c3IvbGli Lyouc28iCisJCXZtb3ZlICJ1c3IvbGliLyoucHJsIgorCQl2bW92ZSAidXNyL2xpYi8qLmxhIgor CQlfY2xlYW51cF93cmtzcmNfbGVhaworCX0KK30KCkZyb20gMDg2MThkNDkyOTQwZjJmMWE5MDgz ODViMGU2Mzk1YjE4MWY2YTRlNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSm9obiA8 am9obnpAcG9zdGVvLm5ldD4KRGF0ZTogTW9uLCAxMSBOb3YgMjAxOSAyMDoyMjo0MyArMDEwMApT dWJqZWN0OiBbUEFUQ0ggMDMvMTBdIGNvbW1vbi9xbWFrZS5zaDogcmVvcmRlciBhcmdzCgpbY2kg c2tpcF0KLS0tCiBjb21tb24vYnVpbGQtc3R5bGUvcW1ha2Uuc2ggfCA5OCArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgODcgaW5zZXJ0aW9ucygr KSwgMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29tbW9uL2J1aWxkLXN0eWxlL3FtYWtl LnNoIGIvY29tbW9uL2J1aWxkLXN0eWxlL3FtYWtlLnNoCmluZGV4IDYzYmU1YTNhNTY4Li4zMzc2 MmUyMzI0ZCAxMDA2NDQKLS0tIGEvY29tbW9uL2J1aWxkLXN0eWxlL3FtYWtlLnNoCisrKyBiL2Nv bW1vbi9idWlsZC1zdHlsZS9xbWFrZS5zaApAQCAtMTYsMTAgKzE2LDc2IEBAIGRvX2NvbmZpZ3Vy ZSgpIHsKIAkJbXNnX2Vycm9yICIke3BrZ3Zlcn06IENvdWxkIG5vdCBmaW5kIHFtYWtlIC0gbWlz c2luZyBpbiBob3N0ZGVwZW5kcz9cbiIKIAlmaQogCWlmIFsgIiRDUk9TU19CVUlMRCIgXSAmJiBb ICIkcW1ha2UiID09ICIvdXNyL2xpYi9xdDUvYmluL3FtYWtlIiBdOyB0aGVuCisJCWNhc2UgJFhC UFNfVEFSR0VUX01BQ0hJTkUgaW4KKwkJCWk2ODYqKSBfcXRfYXJjaD1pMzg2OzsKKwkJCXg4Nl82 NCopIF9xdF9hcmNoPXg4Nl82NDs7CisJCQlhYXJjaDY0KikgX3F0X2FyY2g9YXJtNjQ7OworCQkJ YXJtKikgX3F0X2FyY2g9YXJtOzsKKwkJCW1pcHMqKSBfcXRfYXJjaD1taXBzOzsKKwkJZXNhYwor CQlta2RpciAtcCAiJHt3cmtzcmN9Ly50YXJnZXQtc3BlYy9saW51eC1nKysiCisJCWNhdCA+ICIk e3dya3NyY30vLnRhcmdldC1zcGVjL2xpbnV4LWcrKy9xbWFrZS5jb25mIiA8PF9FT0YKK01BS0VG SUxFX0dFTkVSQVRPUiAgICAgID0gVU5JWAorQ09ORklHICAgICAgICAgICAgICAgICArPSBpbmNy ZW1lbnRhbAorUU1BS0VfSU5DUkVNRU5UQUxfU1RZTEUgPSBzdWJsaWIKKworaW5jbHVkZSgvdXNy L2xpYi9xdDUvbWtzcGVjcy9jb21tb24vbGludXguY29uZikKK2luY2x1ZGUoL3Vzci9saWIvcXQ1 L21rc3BlY3MvY29tbW9uL2djYy1iYXNlLXVuaXguY29uZikKK2luY2x1ZGUoL3Vzci9saWIvcXQ1 L21rc3BlY3MvY29tbW9uL2crKy11bml4LmNvbmYpCisKK1FNQUtFX1RBUkdFVF9DT05GSUcgICAg ID0gJHtYQlBTX0NST1NTX0JBU0V9L3Vzci9saWIvcXQ1L21rc3BlY3MvcWNvbmZpZy5wcmkKK1FN QUtFX1RBUkdFVF9NT0RVTEUgICAgID0gJHtYQlBTX0NST1NTX0JBU0V9L3Vzci9saWIvcXQ1L21r c3BlY3MvcW1vZHVsZS5wcmkKK1FNQUtFX0NDICAgICAgICAgICAgICAgID0gJHtDQ30KK1FNQUtF X0NYWCAgICAgICAgICAgICAgID0gJHtDWFh9CitRTUFLRV9MSU5LICAgICAgICAgICAgICA9ICR7 Q1hYfQorUU1BS0VfTElOS19DICAgICAgICAgICAgPSAke0NDfQorUU1BS0VfTElOS19TSExJQiAg ICAgICAgPSAke0NYWH0KKworUU1BS0VfQVIgICAgICAgICAgICAgICAgPSAke1hCUFNfQ1JPU1Nf VFJJUExFVH0tZ2NjLWFyIGNxcworUU1BS0VfT0JKQ09QWSAgICAgICAgICAgPSAke09CSkNPUFl9 CitRTUFLRV9OTSAgICAgICAgICAgICAgICA9ICR7Tk19IC1QCitRTUFLRV9TVFJJUCAgICAgICAg ICAgICA9ICR7U1RSSVB9CisKK1FNQUtFX0NGTEFHUyAgICAgICAgICAgID0gJHtDRkxBR1N9CitR TUFLRV9DWFhGTEFHUyAgICAgICAgICA9ICR7Q1hYRkxBR1N9CitRTUFLRV9MRkxBR1MgICAgICAg ICAgICA9ICR7TERGTEFHU30KK2xvYWQocXRfY29uZmlnKQorX0VPRgorCQllY2hvICIjaW5jbHVk ZSBcIiR7WEJQU19DUk9TU19CQVNFfS91c3IvbGliL3F0NS9ta3NwZWNzL2xpbnV4LWcrKy9xcGxh dGZvcm1kZWZzLmhcIiIgPiAiJHt3cmtzcmN9Ly50YXJnZXQtc3BlYy9saW51eC1nKysvcXBsYXRm b3JtZGVmcy5oIgorCisJCW1rZGlyIC1wICIke3dya3NyY30vLmhvc3Qtc3BlYy9saW51eC1nKysi CisJCWNhdCA+ICIke3dya3NyY30vLmhvc3Qtc3BlYy9saW51eC1nKysvcW1ha2UuY29uZiIgPDxf RU9GCitNQUtFRklMRV9HRU5FUkFUT1IgICAgICA9IFVOSVgKK0NPTkZJRyAgICAgICAgICAgICAg ICAgKz0gaW5jcmVtZW50YWwKK1FNQUtFX0lOQ1JFTUVOVEFMX1NUWUxFID0gc3VibGliCisKK2lu Y2x1ZGUoL3Vzci9saWIvcXQ1L21rc3BlY3MvY29tbW9uL2xpbnV4LmNvbmYpCitpbmNsdWRlKC91 c3IvbGliL3F0NS9ta3NwZWNzL2NvbW1vbi9nY2MtYmFzZS11bml4LmNvbmYpCitpbmNsdWRlKC91 c3IvbGliL3F0NS9ta3NwZWNzL2NvbW1vbi9nKystdW5peC5jb25mKQorCitRTUFLRV9UQVJHRVRf Q09ORklHICAgICA9ICR7WEJQU19DUk9TU19CQVNFfS91c3IvbGliL3F0NS9ta3NwZWNzL3Fjb25m aWcucHJpCitRTUFLRV9UQVJHRVRfTU9EVUxFICAgICA9ICR7WEJQU19DUk9TU19CQVNFfS91c3Iv bGliL3F0NS9ta3NwZWNzL3Ftb2R1bGUucHJpCitRTUFLRV9DQyAgICAgICAgICAgICAgICA9ICR7 Q0NfaG9zdH0KK1FNQUtFX0NYWCAgICAgICAgICAgICAgID0gJHtDWFhfaG9zdH0KK1FNQUtFX0xJ TksgICAgICAgICAgICAgID0gJHtDWFhfaG9zdH0KK1FNQUtFX0xJTktfQyAgICAgICAgICAgID0g JHtDQ19ob3N0fQorUU1BS0VfTElOS19TSExJQiAgICAgICAgPSAke0NYWF9ob3N0fQorCitRTUFL RV9BUiAgICAgICAgICAgICAgICA9IGdjYy1hciBjcXMKK1FNQUtFX09CSkNPUFkgICAgICAgICAg ID0gJHtPQkpDT1BZX2hvc3R9CitRTUFLRV9OTSAgICAgICAgICAgICAgICA9ICR7Tk1faG9zdH0g LVAKK1FNQUtFX1NUUklQICAgICAgICAgICAgID0gJHtTVFJJUF9ob3N0fQorCitRTUFLRV9DRkxB R1MgICAgICAgICAgICA9ICR7Q0ZMQUdTX2hvc3R9CitRTUFLRV9DWFhGTEFHUyAgICAgICAgICA9 ICR7Q1hYRkxBR1NfaG9zdH0KK1FNQUtFX0xGTEFHUyAgICAgICAgICAgID0gJHtMREZMQUdTX2hv c3R9Citsb2FkKHF0X2NvbmZpZykKK19FT0YKK2VjaG8gJyNpbmNsdWRlICIvdXNyL2xpYi9xdDUv bWtzcGVjcy9saW51eC1nKysvcXBsYXRmb3JtZGVmcy5oIicgPiAiJHt3cmtzcmN9Ly5ob3N0LXNw ZWMvbGludXgtZysrL3FwbGF0Zm9ybWRlZnMuaCIKIAkJY2F0ID4gIiR7d3Jrc3JjfS9xdC5jb25m IiA8PF9FT0YKIFtQYXRoc10KIFN5c3Jvb3Q9JHtYQlBTX0NST1NTX0JBU0V9Ci1QcmVmaXg9JHtY QlBTX0NST1NTX0JBU0V9L3VzcgorUHJlZml4PS91c3IKIEFyY2hEYXRhPSR7WEJQU19DUk9TU19C QVNFfS91c3IvbGliL3F0NQogRGF0YT0ke1hCUFNfQ1JPU1NfQkFTRX0vdXNyL3NoYXJlL3F0NQog RG9jdW1lbnRhdGlvbj0ke1hCUFNfQ1JPU1NfQkFTRX0vdXNyL3NoYXJlL2RvYy9xdDUKQEAgLTM4 LDE4ICsxMDQsMjggQEAgSG9zdFByZWZpeD0vdXNyCiBIb3N0RGF0YT0vdXNyL2xpYi9xdDUKIEhv c3RCaW5hcmllcz0vdXNyL2xpYi9xdDUvYmluCiBIb3N0TGlicmFyaWVzPS91c3IvbGliCi1TcGVj PWxpbnV4LWcrKwotVGFyZ2V0U3BlYz1saW51eC1nKysKK1NwZWM9JHt3cmtzcmN9Ly5ob3N0LXNw ZWMvbGludXgtZysrCitUYXJnZXRTcGVjPSR7d3Jrc3JjfS8udGFyZ2V0LXNwZWMvbGludXgtZysr CiBfRU9GCi0JCXFtYWtlX2FyZ3M9Ii1xdGNvbmYgJHt3cmtzcmN9L3F0LmNvbmYiCisJCXFtYWtl X2FyZ3M9Ii1xdGNvbmYgJHt3cmtzcmN9L3F0LmNvbmYgUEtHX0NPTkZJR19FWEVDVVRBQkxFPSR7 WEJQU19XUkFQUEVSRElSfS9wa2ctY29uZmlnIgorCQkke3FtYWtlfSAke3FtYWtlX2FyZ3N9IFwK KwkJCVBSRUZJWD0vdXNyIFwKKwkJCVFUX0lOU1RBTExfUFJFRklYPS91c3IgXAorCQkJTElCPS91 c3IvbGliIFwKKwkJCVFUX1RBUkdFVF9BUkNIPSRfcXRfYXJjaCBcCisJCQkke2NvbmZpZ3VyZV9h cmdzfQorCWVsc2UKKwkJJHtxbWFrZX0gJHtxbWFrZV9hcmdzfSBcCisJCQlQUkVGSVg9L3VzciBc CisJCQlRVF9JTlNUQUxMX1BSRUZJWD0vdXNyIFwKKwkJCUxJQj0vdXNyL2xpYiBcCisJCQlRTUFL RV9DQz0kQ0MgUU1BS0VfQ1hYPSRDWFggXAorCQkJUU1BS0VfTElOSz0kQ1hYIFFNQUtFX0xJTktf Qz0kQ0MgXAorCQkJUU1BS0VfQ0ZMQUdTPSIke0NGTEFHU30iIFwKKwkJCVFNQUtFX0NYWEZMQUdT PSIke0NYWEZMQUdTfSIgXAorCQkJUU1BS0VfTEZMQUdTPSIke0xERkxBR1N9IiBcCisJCQkke2Nv bmZpZ3VyZV9hcmdzfQogCWZpCi0JJHtxbWFrZX0gJHtxbWFrZV9hcmdzfSAke2NvbmZpZ3VyZV9h cmdzfSBcCi0JCVBSRUZJWD0vdXNyIFwKLQkJTElCPS91c3IvbGliIFwKLQkJUU1BS0VfQ0M9JEND IFFNQUtFX0NYWD0kQ1hYIFFNQUtFX0xJTks9JENYWCBRTUFLRV9MSU5LX0M9JENDIFwKLQkJUU1B S0VfQ0ZMQUdTPSIke0NGTEFHU30iIFwKLQkJUU1BS0VfQ1hYRkxBR1M9IiR7Q1hYRkxBR1N9IiBc Ci0JCVFNQUtFX0xGTEFHUz0iJHtMREZMQUdTfSIKIH0KIAogZG9fYnVpbGQoKSB7CgpGcm9tIDc1 ZTE5MzAzOWFhZjc3MjIzNzk5NWY1ZDUzZjRmMzBhYjVhNjg2ZDEgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IEpvaG4gPGpvaG56QHBvc3Rlby5uZXQ+CkRhdGU6IEZyaSwgMTEgT2N0IDIw MTkgMDE6MTU6NDggKzAyMDAKU3ViamVjdDogW1BBVENIIDA0LzEwXSB0ZWxlZ3JhbS1kZXNrdG9w OiByZWJ1aWxkIGZvciBxdDUuMTQuMAoKW2NpIHNraXBdCi0tLQogc3JjcGtncy90ZWxlZ3JhbS1k ZXNrdG9wL3RlbXBsYXRlIHwgNiArKystLS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMo KyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy90ZWxlZ3JhbS1kZXNrdG9w L3RlbXBsYXRlIGIvc3JjcGtncy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBsYXRlCmluZGV4IDM3YWI1 ODAxZDg0Li41ZGFjYjAyNmQ0YSAxMDA2NDQKLS0tIGEvc3JjcGtncy90ZWxlZ3JhbS1kZXNrdG9w L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvdGVsZWdyYW0tZGVza3RvcC90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3RlbGVncmFtLWRlc2t0b3AnCiBwa2duYW1l PXRlbGVncmFtLWRlc2t0b3AKIHZlcnNpb249MS45LjgKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIK IHdya3NyYz0idGRlc2t0b3AtJHt2ZXJzaW9ufS1mdWxsIgogYnVpbGRfc3R5bGU9Y21ha2UKIGJ1 aWxkX2hlbHBlcj0icWVtdSIKQEAgLTE3LDcgKzE3LDcgQEAgbWFrZWRlcGVuZHM9ImFsc2EtbGli LWRldmVsIGZmbXBlZy1kZXZlbCBsaWJkYnVzbWVudS1nbGliLWRldmVsIGxpYm9wZW5hbC1kZXZl bAogIG1pbml6aXAtZGV2ZWwgb3B1cy1kZXZlbCB4eEhhc2gtZGV2ZWwgcHVsc2VhdWRpby1kZXZl bCBxdDUtZGV2ZWwgcmFuZ2UtdjMKICBsaWJ2YS1kZXZlbCBlbmNoYW50Mi1kZXZlbCByYXBpZGpz b24gbGlibHo0LWRldmVsIGxpYmx6bWEtZGV2ZWwgcmxvdHRpZS1kZXZlbAogIE1lc2FMaWItZGV2 ZWwiCi1kZXBlbmRzPSJxdDUtaW1hZ2Vmb3JtYXRzIHF0NT49NS4xMy4yPDUuMTMuMyIKK2RlcGVu ZHM9InF0NS1pbWFnZWZvcm1hdHMgcXQ1LWNvcmU+PTUuMTQuMTw1LjE0LjIiCiBzaG9ydF9kZXNj PSJUZWxlZ3JhbSBEZXNrdG9wIG1lc3NhZ2luZyBhcHAiCiBtYWludGFpbmVyPSJKb2huIDxqb2hu ekBwb3N0ZW8ubmV0PiIKIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIgV0lUSCBPcGVuU1NMIgpA QCAtNDksNyArNDksNyBAQCBmaQogcG9zdF9leHRyYWN0KCkgewogCV9xdDVfZGVwX3Zlcj0iJHtk ZXBlbmRzIyo+PX0iCiAJX3F0NV9kZXBfdmVyPSIke19xdDVfZGVwX3ZlciU8Kn0iCi0JX3F0NV92 ZXJzaW9uPSIkKHhicHMtdWhlbHBlciB2ZXJzaW9uIHF0NSkiCisJX3F0NV92ZXJzaW9uPSIkKHhi cHMtdWhlbHBlciB2ZXJzaW9uIHF0NS1jb3JlKSIKIAogCWlmIFtbICIke19xdDVfdmVyc2lvbiVf Kn0iICE9ICIke19xdDVfZGVwX3Zlcn0iIF1dOyB0aGVuCiAJCWVjaG8KCkZyb20gMjdmNjNhZTI5 OTEyMGIxY2I4MTFhYzg4ZTQ1YzFhNzYxMWNkMWM1ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogSm9obiA8am9obnpAcG9zdGVvLm5ldD4KRGF0ZTogTW9uLCAxOCBOb3YgMjAxOSAwMzow NToyOCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMDUvMTBdIHF0NS1zdHlsZXBsdWdpbnM6IHJlYnVp bGQgYWdhaW5zdCBxdDUuMTQKCi0tLQogc3JjcGtncy9xdDUtc3R5bGVwbHVnaW5zL3RlbXBsYXRl IHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXN0eWxlcGx1Z2lucy90ZW1wbGF0ZSBiL3NyY3Br Z3MvcXQ1LXN0eWxlcGx1Z2lucy90ZW1wbGF0ZQppbmRleCBmNmM1MTFjYWQ0Yy4uMTBmYzZlNGZh MjYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1LXN0eWxlcGx1Z2lucy90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL3F0NS1zdHlsZXBsdWdpbnMvdGVtcGxhdGUKQEAgLTEsMTMgKzEsMTMgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ3F0NS1zdHlsZXBsdWdpbnMnCiBwa2duYW1lPXF0NS1zdHlsZXBsdWdp bnMKIHZlcnNpb249NS4wLjAKLXJldmlzaW9uPTExCityZXZpc2lvbj0xMgogX2dpdHJldj0zMzVk YmVjZTEwM2UyY2JmNmM3Y2Y4MTlhYjY2NzJjMjk1NmIxN2IzCiB3cmtzcmM9InF0c3R5bGVwbHVn aW5zLSR7X2dpdHJldn0iCiBidWlsZF9zdHlsZT1xbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ct Y29uZmlnIHF0NS1ob3N0LXRvb2xzIHF0NS1kZXZlbCIKIG1ha2VkZXBlbmRzPSJsaWJ4Y2ItZGV2 ZWwgbGlieGtiY29tbW9uLWRldmVsIGxpYmlucHV0LWRldmVsIHRzbGliLWRldmVsIGd0aystZGV2 ZWwgcXQ1LWRldmVsIgotZGVwZW5kcz0icXQ1Pj01LjEzLjI8NS4xMy4zIgorZGVwZW5kcz0icXQ1 Pj01LjE0LjE8NS4xNC4yIgogc2hvcnRfZGVzYz0iQWRkaXRpb25hbCBzdHlsZSBwbHVnaW5zIGZv ciBRdDUiCiBtYWludGFpbmVyPSJKw7xyZ2VuIEJ1Y2htw7xsbGVyIDxwdWxsbW9sbEB0LW9ubGlu ZS5kZT4iCiBsaWNlbnNlPSJMR1BMLTIuMS1vbmx5LCBMR1BMLTMuMC1vbmx5IgoKRnJvbSBkYTEx NDRlMjYxNzk0MzZhYjU5ODk5YzQxYWNlZDRlNzE3MTYyNzk3IE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiBKb2huIDxqb2huekBwb3N0ZW8ubmV0PgpEYXRlOiBNb24sIDE4IE5vdiAyMDE5 IDAzOjI3OjMxICswMTAwClN1YmplY3Q6IFtQQVRDSCAwNi8xMF0gcXQ1ZHhjYi1wbHVnaW46IHJl YnVpbGQgYWdhaW5zdCBxdDUuMTQKCltjaSBza2lwXQotLS0KIHNyY3BrZ3MvcXQ1ZHhjYi1wbHVn aW4vdGVtcGxhdGUgfCAxNSArKysrKy0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2Vy dGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1ZHhjYi1w bHVnaW4vdGVtcGxhdGUgYi9zcmNwa2dzL3F0NWR4Y2ItcGx1Z2luL3RlbXBsYXRlCmluZGV4IGI1 NDA4ZWQ4OWZiLi5mMTkzY2E1YjllYSAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDVkeGNiLXBsdWdp bi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0NWR4Y2ItcGx1Z2luL3RlbXBsYXRlCkBAIC0xLDE0 ICsxLDE0IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdxdDVkeGNiLXBsdWdpbicKIHBrZ25hbWU9 cXQ1ZHhjYi1wbHVnaW4KIHZlcnNpb249NS4wLjEKLXJldmlzaW9uPTMKK3JldmlzaW9uPTQKIGJ1 aWxkX3N0eWxlPXFtYWtlCiBtYWtlX2J1aWxkX2FyZ3M9IlZFUlNJT049JHt2ZXJzaW9ufSIKIGhv c3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBxdDUtcW1ha2UiCiBtYWtlZGVwZW5kcz0iY2Fpcm8t ZGV2ZWwgbGliU00tZGV2ZWwgbGliWGktZGV2ZWwgbGlieGtiY29tbW9uLWRldmVsCiAgcXQ1LXgx MWV4dHJhcy1kZXZlbCB4Y2ItdXRpbC1pbWFnZS1kZXZlbCB4Y2ItdXRpbC1rZXlzeW1zLWRldmVs Ci0geGNiLXV0aWwtcmVuZGVydXRpbC1kZXZlbCB4Y2ItdXRpbC13bS1kZXZlbCIKLWRlcGVuZHM9 InF0NT49NS4xMy4yPDUuMTMuMyIKKyB4Y2ItdXRpbC1yZW5kZXJ1dGlsLWRldmVsIHhjYi11dGls LXdtLWRldmVsIHF0NS14Y2ItcHJpdmF0ZS1oZWFkZXJzIgorZGVwZW5kcz0icXQ1LWNvcmU+PTUu MTQuMTw1LjE0LjIiCiBzaG9ydF9kZXNjPSJRdCBwbGF0Zm9ybSBwbHVnaW5zIGZvciBEREUiCiBt YWludGFpbmVyPSJKb2huIDxqb2huekBwb3N0ZW8ubmV0PiIKIGxpY2Vuc2U9IkdQTC0zLjAtb3It bGF0ZXIiCkBAIC0xNiwxMiArMTYsMTEgQEAgaG9tZXBhZ2U9Imh0dHBzOi8vZ2l0aHViLmNvbS9s aW51eGRlZXBpbi9xdDVkeGNiLXBsdWdpbi8iCiBjaGFuZ2Vsb2c9Imh0dHBzOi8vZ2l0aHViLmNv bS9saW51eGRlZXBpbi9xdDVkeGNiLXBsdWdpbi9ibG9iL21hc3Rlci9DSEFOR0VMT0cubWQiCiBk aXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9saW51eGRlZXBpbi9xdDVkeGNiLXBsdWdpbi9h cmNoaXZlLyR7dmVyc2lvbn0udGFyLmd6IgogY2hlY2tzdW09YjE5MjUzZjlmNTc3YjJhOWQ4Njc3 NGJhOTVkMjUyMzE4ZjNkNjkyYWI5MmQyZTYyZmJmMDU3OGQ1NmRiNDUzZAotcGF0Y2hfYXJncz0i LU5wMSIKIAogcHJlX2NvbmZpZ3VyZSgpIHsKIAlfcXQ1X2RlcF92ZXI9IiR7ZGVwZW5kcyMqPj19 IgogCV9xdDVfZGVwX3Zlcj0iJHtfcXQ1X2RlcF92ZXIlPCp9IgotCV9xdDVfdmVyc2lvbj0iJCh4 YnBzLXVoZWxwZXIgdmVyc2lvbiBxdDUpIgorCV9xdDVfdmVyc2lvbj0iJCh4YnBzLXVoZWxwZXIg dmVyc2lvbiBxdDUtY29yZSkiCiAKIAlpZiBbWyAiJHtfcXQ1X3ZlcnNpb24lXyp9IiAhPSAiJHtf cXQ1X2RlcF92ZXJ9IiBdXTsgdGhlbgogCQllY2hvCkBAIC0yOSwxMSArMjgsNyBAQCBwcmVfY29u ZmlndXJlKCkgewogCQltc2dfcmVkICIke19xdDVfdmVyc2lvbiVfKn0gZG9lcyBub3QgbWF0Y2gg JHtfcXQ1X2RlcF92ZXJ9XFxuIgogCQlleGl0IDEKIAlmaQotCi0JIyBubyBoZWFkZXJzIGZvciA1 LjEzLjEgeWV0OyA1LjEzLjAgaGVhZGVycyBhcmUgdGhlIHNhbWUgZm9yIHRoaXMKLQkjIHJlbW92 ZSBvbiBuZXh0IHZlcnNpb24gdXBncmFkZSAoYWZ0ZXIgdXBzdHJlYW0gaGFzIGFkZGVkIHRoZW0p Ci0JbG4gLXMgJHt3cmtzcmN9L3BsYXRmb3JtcGx1Z2luL2xpYnF0NXhjYnFwYS1kZXYvNS4xMy4w IFwKLQkJJHt3cmtzcmN9L3BsYXRmb3JtcGx1Z2luL2xpYnF0NXhjYnFwYS1kZXYvNS4xMy4yCisJ c2VkIC1pICdzfGVycm9yKE5vdCBzdXBwb3J0IFF0IFZlcnNpb246IC4qKXxJTkNMVURFUEFUSCAr PSAvdXNyL2luY2x1ZGUvcXQ1eGNiLXByaXZhdGV8JyBwbGF0Zm9ybXBsdWdpbi9saW51eC5wcmkK IH0KIAogaWYgWyAiJENST1NTX0JVSUxEIiBdOyB0aGVuCgpGcm9tIDA5YjVmMzBiZjg4YThmZDJm ODI3ODc2MGI2ZjRmOTA0YmU0MTYzOTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEpv aG4gPGpvaG56QHBvc3Rlby5uZXQ+CkRhdGU6IFRodSwgNSBEZWMgMjAxOSAwODo0Mjo0MSArMDEw MApTdWJqZWN0OiBbUEFUQ0ggMDcvMTBdIGt3aW46IHJlYnVpbGQgYWdhaW5zdCBxdDUuMTQuMAoK W2NpIHNraXBdCi0tLQogc3JjcGtncy9rd2luL3RlbXBsYXRlIHwgNiArKystLS0KIDEgZmlsZSBj aGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9rd2luL3RlbXBsYXRlIGIvc3JjcGtncy9rd2luL3RlbXBsYXRlCmluZGV4IDhmOGIwNGI0 MzE3Li40MmZmZTg5MzE5MyAxMDA2NDQKLS0tIGEvc3JjcGtncy9rd2luL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3Mva3dpbi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBm b3IgJ2t3aW4nCiBwa2duYW1lPWt3aW4KIHZlcnNpb249NS4xNy41Ci1yZXZpc2lvbj0xCityZXZp c2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EQlVJTERfVEVTVElO Rz1PRkYiCiBob3N0bWFrZWRlcGVuZHM9ImV4dHJhLWNtYWtlLW1vZHVsZXMgZ2V0dGV4dCBicmVl emUgcGtnLWNvbmZpZyIKQEAgLTksNyArOSw3IEBAIG1ha2VkZXBlbmRzPSJwbGFzbWEtZnJhbWV3 b3JrLWRldmVsIGtjbXV0aWxzLWRldmVsIGtuZXdzdHVmZi1kZXZlbAogIGtzY3JlZW5sb2NrZXIt ZGV2ZWwga2luaXQtZGV2ZWwgeGNiLXV0aWwtY3Vyc29yLWRldmVsIHF0NS1tdWx0aW1lZGlhLWRl dmVsCiAga2RlY29yYXRpb24tZGV2ZWwgbGlieGtiY29tbW9uLWRldmVsIGxpYmlucHV0LWRldmVs IGxpYlNNLWRldmVsCiAgbGliSUNFLWRldmVsIHhjYi11dGlsLXdtLWRldmVsIHF0NS1zZW5zb3Jz LWRldmVsIGxpYmNhcC1kZXZlbCIKLWRlcGVuZHM9ImJyZWV6ZSBoaWNvbG9yLWljb24tdGhlbWUg a2luaXQgcXQ1Pj01LjEzLjI8NS4xMy4zIgorZGVwZW5kcz0iYnJlZXplIGhpY29sb3ItaWNvbi10 aGVtZSBraW5pdCBxdDUtY29yZT49NS4xNC4xPDUuMTQuMiIKIHNob3J0X2Rlc2M9IktERSBXaW5k b3cgbWFuYWdlciIKIG1haW50YWluZXI9IkpvaG4gPGpvaG56QHBvc3Rlby5uZXQ+IgogbGljZW5z ZT0iR1BMLTIuMC1vci1sYXRlciIKQEAgLTI5LDcgKzI5LDcgQEAgZXNhYwogcG9zdF9leHRyYWN0 KCkgewogCV9xdDVfZGVwX3Zlcj0iJHtkZXBlbmRzIyo+PX0iCiAJX3F0NV9kZXBfdmVyPSIke19x dDVfZGVwX3ZlciU8Kn0iCi0JX3F0NV92ZXJzaW9uPSIkKHhicHMtdWhlbHBlciB2ZXJzaW9uIHF0 NSkiCisJX3F0NV92ZXJzaW9uPSIkKHhicHMtdWhlbHBlciB2ZXJzaW9uIHF0NS1jb3JlKSIKIAog CWlmIFtbICIke19xdDVfdmVyc2lvbiVfKn0iICE9ICIke19xdDVfZGVwX3Zlcn0iIF1dOyB0aGVu CiAJCWVjaG8KCkZyb20gNDNlMGYyN2VjMGZhM2ZlNjNmNGM5ZTgzZmM0MTIxMTk3NzI4NmQ5OCBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSm9obiA8am9obnpAcG9zdGVvLm5ldD4KRGF0 ZTogU2F0LCAxNCBEZWMgMjAxOSAxMzozMToxNCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMDgvMTBd IHBsYXNtYS1mcmFtZXdvcms6IGFkZCBwYXRjaCBmb3IgcXQ1LjE0CgotLS0KIHNyY3BrZ3MvcGxh c21hLWZyYW1ld29yay9wYXRjaGVzL3F0NS4xNC5wYXRjaCB8IDE4ICsrKysrKysrKysrKysrKysr Kwogc3JjcGtncy9wbGFzbWEtZnJhbWV3b3JrL3RlbXBsYXRlICAgICAgICAgICAgIHwgIDIgKy0K IDIgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcGxhc21hLWZyYW1ld29yay9wYXRjaGVzL3F0NS4xNC5wYXRj aAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcGxhc21hLWZyYW1ld29yay9wYXRjaGVzL3F0NS4xNC5w YXRjaCBiL3NyY3BrZ3MvcGxhc21hLWZyYW1ld29yay9wYXRjaGVzL3F0NS4xNC5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzhiMDhiYTA0YmEKLS0tIC9kZXYv bnVsbAorKysgYi9zcmNwa2dzL3BsYXNtYS1mcmFtZXdvcmsvcGF0Y2hlcy9xdDUuMTQucGF0Y2gK QEAgLTAsMCArMSwxOCBAQAorU291cmNlOiBASm9obm55bmF0b3IKK1Vwc3RyZWFtOiBubyAoTmVl ZCB0byB2ZXJpZnkgaWYgdGhpcyBpc24ndCBhIHF0NSBidWcpCitSZWFzb246IFFMb2NhbGUoKS51 aUxhbmd1YWdlcygpIGluIFF0NS4xNCBjYW4gcmV0dXJuIGFuIGVtcHR5IGxpc3QsCisJaW4gcHJl dmlvdXMgUXQgdmVyc2lvbnMgaXQgaGFkIGEgbWluaW11bSBzaXplIG9mIG9uZSB3aXRoCisJbG9j YWxlIkMiIGFzIGNvbnRlbnQuCisKKy0tLSBzcmMvZGVjbGFyYXRpdmVpbXBvcnRzL2NhbGVuZGFy L2NhbGVuZGFyLmNwcAkyMDE5LTExLTAyIDE0OjAyOjIzLjAwMDAwMDAwMCArMDEwMAorKysrIC0J MjAxOS0xMi0xMyAxOToyMjowOS4xNzgyMzQ3MzEgKzAxMDAKK0BAIC0xOTksNyArMTk5LDggQEAK KyAgICAgLy8gbG9jYWxlIGFuZCB0YWtlIHRoZSBtb250aCBuYW1lIGZyb20gdGhhdC4KKyAgICAg Ly8KKyAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy5rZGUub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTM3 MTUKKy0gICAgY29uc3QgUVN0cmluZyBsYW5nID0gUUxvY2FsZSgpLnVpTGFuZ3VhZ2VzKCkuYXQo MCk7CisrICAgIGNvbnN0IFFTdHJpbmdMaXN0IGxhbmd1YWdlcyA9IFFMb2NhbGUoKS51aUxhbmd1 YWdlcygpOworKyAgICBjb25zdCBRU3RyaW5nIGxhbmcgPSBsYW5ndWFnZXMuc2l6ZSgpID4gMCA/ IGxhbmd1YWdlcy5hdCgwKSA6IFFTdHJpbmcoKTsKKyAgICAgLy8gSWYgbGFuZyBpcyBlbXB0eSwg aXQgd2lsbCBjcmVhdGUganVzdCBhIHN5c3RlbSBsb2NhbGUKKyAgICAgUUxvY2FsZSBsYW5nTG9j YWxlKGxhbmcpOworICAgICByZXR1cm4gbGFuZ0xvY2FsZS5zdGFuZGFsb25lTW9udGhOYW1lKG1f ZGlzcGxheWVkRGF0ZS5tb250aCgpKTsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcGxhc21hLWZyYW1l d29yay90ZW1wbGF0ZSBiL3NyY3BrZ3MvcGxhc21hLWZyYW1ld29yay90ZW1wbGF0ZQppbmRleCAw ZjgyNzA1MDVjNy4uNWVmMjllOGYxODQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcGxhc21hLWZyYW1l d29yay90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3BsYXNtYS1mcmFtZXdvcmsvdGVtcGxhdGUKQEAg LTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdwbGFzbWEtZnJhbWV3b3JrJwogcGtn bmFtZT1wbGFzbWEtZnJhbWV3b3JrCiB2ZXJzaW9uPTUuNjYuMAotcmV2aXNpb249MQorcmV2aXNp b249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItREJVSUxEX1RFU1RJTkc9 T0ZGCiAgLURERVNLVE9QVE9KU09OX0VYRUNVVEFCTEU9L3Vzci9iaW4vZGVza3RvcHRvanNvbiIK CkZyb20gODJhZTA0NDNhYzNiODcxYjlhZjU0OWZjNjQzMTNiODE2OWNhODNiOCBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogSm9obiA8am9obnpAcG9zdGVvLm5ldD4KRGF0ZTogU2F0LCAx NCBEZWMgMjAxOSAxNToxMzozNSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMDkvMTBdIHF0NS13ZWJr aXQ6IHJlYnVpbGQgYWdhaW5zdCBxdDUuMTQKCltjaSBza2lwXQotLS0KIHNyY3BrZ3MvcXQ1LXdl YmtpdC9wYXRjaGVzL3F0NS4xNC5wYXRjaCAgICAgIHwgOTMgKysrKysrKysrKysrKysrKysrKysK IHNyY3BrZ3MvcXQ1LXdlYmtpdC9wYXRjaGVzL3F0NS4xNC5wYXRjaC5hcmdzIHwgIDEgKwogc3Jj cGtncy9xdDUtd2Via2l0L3RlbXBsYXRlICAgICAgICAgICAgICAgICAgfCAgMiArLQogMyBmaWxl cyBjaGFuZ2VkLCA5NSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjcGtncy9xdDUtd2Via2l0L3BhdGNoZXMvcXQ1LjE0LnBhdGNoCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjcGtncy9xdDUtd2Via2l0L3BhdGNoZXMvcXQ1LjE0LnBhdGNoLmFyZ3MKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJraXQvcGF0Y2hlcy9xdDUuMTQucGF0Y2ggYi9zcmNw a2dzL3F0NS13ZWJraXQvcGF0Y2hlcy9xdDUuMTQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjc5OWQ1M2YxZjU1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtn cy9xdDUtd2Via2l0L3BhdGNoZXMvcXQ1LjE0LnBhdGNoCkBAIC0wLDAgKzEsOTMgQEAKK0Zyb20g YzM0NDE4N2EwOTlmOGZkNzQ5ZGM4NGZmY2MxMjVjMDkyNTEwMzgxOSBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKK0Zyb206IEtvbnN0YW50aW4gVG9rYXJldiA8YW5udWxlbkB5YW5kZXgucnU+CitE YXRlOiBUdWUsIDEwIFNlcCAyMDE5IDAzOjUxOjQyICswMzAwCitTdWJqZWN0OiBGaXggY29tcGls YXRpb24gb2YgSFRUUDIgc2V0dGluZ3Mgd2l0aCBRdCA+PSA1LjE0CisKK1B1YmxpYyBBUEkgUUh0 dHAyQ29uZmlndXJhdGlvbiB3YXMgYWRkZWQsIHNvIHdlIHVzZSBpdCBub3cgaW5zdGVhZCBvZgor dWdseSBoYWNrIHJlcXVpcmVkIGZvciBwcmV2aW91cyB2ZXJzaW9ucy4gV29ya2Fyb3VuZCBmb3Ig UVRCVUctNzczMDggaXMKK25vIGxvZ2VyIG5lZWRlZCBpbiA1LjE0LCBzbyB3ZSBvbmx5IGVuYWJs ZSBzZXJ2ZXIgcHVzaC4KKworQ2hhbmdlLUlkOiBJM2U2ODE3ZDhmYTI3NGMzYTg0OWYwOWIyM2Nh NThmOTMzMThiZTZjNAorLS0tCisgLi4uL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIu Y3BwICAgICAgIHwgIDYgKysrLS0tCisgLi4uL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VS ZXF1ZXN0UXQuY3BwIHwgMjAgKysrKysrKysrKysrKysrKysrLQorIDIgZmlsZXMgY2hhbmdlZCwg MjIgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL1NvdXJjZS9X ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwIGIvU291 cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAK K2luZGV4IDBkYTQ1ZmJjNzlhNS4uNzkyNDU5NTU4MmFjIDEwMDY0NAorLS0tIGEvU291cmNlL1dl YkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAKKysrKyBi L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIu Y3BwCitAQCAtNDEsNyArNDEsNyBAQAorIAorICNpbmNsdWRlIDxRQ29yZUFwcGxpY2F0aW9uPgor IAorLSNpZiBVU0UoSFRUUDIpCisrI2lmIFVTRShIVFRQMikgJiYgUVRfVkVSU0lPTiA8IFFUX1ZF UlNJT05fQ0hFQ0soNSwgMTQsIDApCisgCisgI2luY2x1ZGUgPHByaXZhdGUvaHR0cDJwcm90b2Nv bF9wLmg+CisgI2luY2x1ZGUgPGNzdGRsaWI+CitAQCAtNjIsNyArNjIsNyBAQCBQcm90b2NvbFBh cmFtZXRlcnM6OlByb3RvY29sUGFyYW1ldGVycygpCisgCisgUVRfRU5EX05BTUVTUEFDRQorIAor LSNlbmRpZiAvLyBVU0UoSFRUUDIpCisrI2VuZGlmIC8vIFVTRShIVFRQMikgJiYgUVRfVkVSU0lP TiA8IFFUX1ZFUlNJT05fQ0hFQ0soNSwgMTQsIDApCisgCisgc3RhdGljIGNvbnN0IGludCBnTWF4 UmVkaXJlY3Rpb25zID0gMTA7CisgCitAQCAtNzk3LDcgKzc5Nyw3IEBAIFFOZXR3b3JrUmVwbHkq IFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpzZW5kTmV0d29ya1JlcXVlc3QoUU5ldHdvcmtBY2Nlc3NN YW5hZ2VyKiBtCisgICAgIGlmICghbWFuYWdlcikKKyAgICAgICAgIHJldHVybiAwOworIAorLSNp ZiBVU0UoSFRUUDIpCisrI2lmIFVTRShIVFRQMikgJiYgUVRfVkVSU0lPTiA8IFFUX1ZFUlNJT05f Q0hFQ0soNSwgMTQsIDApCisgICAgIHN0YXRpYyBjb25zdCBib29sIGFscG5Jc1N1cHBvcnRlZCA9 IFJlc291cmNlUmVxdWVzdDo6YWxwbklzU3VwcG9ydGVkKCk7CisgICAgIGlmIChhbHBuSXNTdXBw b3J0ZWQgJiYgIW1hbmFnZXItPnByb3BlcnR5KEh0dHAyOjpodHRwMlBhcmFtZXRlcnNQcm9wZXJ0 eU5hbWUpLmlzVmFsaWQoKSkgeworICAgICAgICAgSHR0cDI6OlByb3RvY29sUGFyYW1ldGVycyBw YXJhbXM7CitkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9S ZXNvdXJjZVJlcXVlc3RRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0 L1Jlc291cmNlUmVxdWVzdFF0LmNwcAoraW5kZXggMmNmMmU3NzUwZGRlLi4zMTA3Mzg0NDliNzUg MTAwNjQ0CistLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNl UmVxdWVzdFF0LmNwcAorKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9S ZXNvdXJjZVJlcXVlc3RRdC5jcHAKK0BAIC0yOSw3ICsyOSwxMCBAQAorIAorICNpZiBVU0UoSFRU UDIpCisgI2luY2x1ZGUgPFFTc2xTb2NrZXQ+CisrI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lP Tl9DSEVDSyg1LCAxNCwgMCkKKysjaW5jbHVkZSA8UUh0dHAyQ29uZmlndXJhdGlvbj4KKyAjZW5k aWYKKysjZW5kaWYgLy8gVVNFKEhUVFAyKQorIAorIG5hbWVzcGFjZSBXZWJDb3JlIHsKKyAKK0BA IC02NSw2ICs2OCwxNiBAQCBib29sIFJlc291cmNlUmVxdWVzdDo6YWxwbklzU3VwcG9ydGVkKCkK KyAgICAgcmV0dXJuIFFTc2xTb2NrZXQ6OnNzbExpYnJhcnlWZXJzaW9uTnVtYmVyKCkgPiAweDEw MDAyMDAwTCAmJgorICAgICAgICAgUVNzbFNvY2tldDo6c3NsTGlicmFyeVZlcnNpb25TdHJpbmco KS5zdGFydHNXaXRoKFFMYXRpbjFTdHJpbmcoIk9wZW5TU0wiKSk7CisgfQorKworKyNpZiBRVF9W RVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNSwgMTQsIDApCisrc3RhdGljIFFIdHRwMkNvbmZp Z3VyYXRpb24gY3JlYXRlSHR0cDJDb25maWd1cmF0aW9uKCkKKyt7CisrICAgIFFIdHRwMkNvbmZp Z3VyYXRpb24gcGFyYW1zOworKyAgICBwYXJhbXMuc2V0U2VydmVyUHVzaEVuYWJsZWQodHJ1ZSk7 CisrICAgIHJldHVybiBwYXJhbXM7CisrfQorKyNlbmRpZgorKworICNlbmRpZgorIAorIFFOZXR3 b3JrUmVxdWVzdCBSZXNvdXJjZVJlcXVlc3Q6OnRvTmV0d29ya1JlcXVlc3QoTmV0d29ya2luZ0Nv bnRleHQgKmNvbnRleHQpIGNvbnN0CitAQCAtNzYsOCArODksMTMgQEAgUU5ldHdvcmtSZXF1ZXN0 IFJlc291cmNlUmVxdWVzdDo6dG9OZXR3b3JrUmVxdWVzdChOZXR3b3JraW5nQ29udGV4dCAqY29u dGV4dCkgY28KKyAKKyAjaWYgVVNFKEhUVFAyKQorICAgICBzdGF0aWMgY29uc3QgYm9vbCBOZWdv dGlhdGVIdHRwMkZvckh0dHBzID0gYWxwbklzU3VwcG9ydGVkKCk7CistICAgIGlmIChvcmlnaW5h bFVybC5wcm90b2NvbElzKCJodHRwcyIpICYmIE5lZ290aWF0ZUh0dHAyRm9ySHR0cHMpCisrICAg IGlmIChvcmlnaW5hbFVybC5wcm90b2NvbElzKCJodHRwcyIpICYmIE5lZ290aWF0ZUh0dHAyRm9y SHR0cHMpIHsKKysjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDUsIDE0LCAwKQor KyAgICAgICAgc3RhdGljIGNvbnN0IGF1dG8gcGFyYW1zID0gY3JlYXRlSHR0cDJDb25maWd1cmF0 aW9uKCk7CisrICAgICAgICByZXF1ZXN0LnNldEh0dHAyQ29uZmlndXJhdGlvbihwYXJhbXMpOwor KyNlbmRpZgorICAgICAgICAgcmVxdWVzdC5zZXRBdHRyaWJ1dGUoUU5ldHdvcmtSZXF1ZXN0OjpI VFRQMkFsbG93ZWRBdHRyaWJ1dGUsIHRydWUpOworKyAgICB9CisgI2VuZGlmIC8vIFVTRShIVFRQ MikKKyAKKyAgICAgY29uc3QgSFRUUEhlYWRlck1hcCAmaGVhZGVycyA9IGh0dHBIZWFkZXJGaWVs ZHMoKTsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmtpdC9wYXRjaGVzL3F0NS4xNC5wYXRj aC5hcmdzIGIvc3JjcGtncy9xdDUtd2Via2l0L3BhdGNoZXMvcXQ1LjE0LnBhdGNoLmFyZ3MKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjJlYmExY2IzYzVjCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2Via2l0L3BhdGNoZXMvcXQ1LjE0LnBhdGNoLmFyZ3MK QEAgLTAsMCArMSBAQAorLU5wMQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2Via2l0L3RlbXBs YXRlIGIvc3JjcGtncy9xdDUtd2Via2l0L3RlbXBsYXRlCmluZGV4IGM3YzA5YzEzNzZlLi40Yzhi M2Y2NDE0ZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDUtd2Via2l0L3RlbXBsYXRlCisrKyBiL3Ny Y3BrZ3MvcXQ1LXdlYmtpdC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmls ZSBmb3IgJ3F0NS13ZWJraXQnCiBwa2duYW1lPXF0NS13ZWJraXQKIHZlcnNpb249NS4yMTIuMAot cmV2aXNpb249NgorcmV2aXNpb249NwogX3NuYXA9MTU2NTg5NTQ2OQogX3Y9JHt2ZXJzaW9uJS4q fQogd3Jrc3JjPSJxdHdlYmtpdC1ldmVyeXdoZXJlLXNyYy0ke192fSIKCkZyb20gOWZjYWI5NmRh ZDQ1OWUzOWQ2ZjljN2M4MjdiOGVkZGU0NTM3YWYwNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogSm9obiA8am9obnpAcG9zdGVvLm5ldD4KRGF0ZTogVHVlLCAyOCBKYW4gMjAyMCAwOTo0 MDoyNSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMTAvMTBdIHBsYXNtYS1pbnRlZ3JhdGlvbjogcmVi dWlsZCBmb3IgcXQ1LTUuMTQuMQoKLS0tCiBzcmNwa2dzL3BsYXNtYS1pbnRlZ3JhdGlvbi90ZW1w bGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcGxhc21hLWludGVncmF0aW9uL3RlbXBsYXRlIGIvc3Jj cGtncy9wbGFzbWEtaW50ZWdyYXRpb24vdGVtcGxhdGUKaW5kZXggNWExMDU5ZmJmNzUuLjU1OWE5 YWJmNWZmIDEwMDY0NAotLS0gYS9zcmNwa2dzL3BsYXNtYS1pbnRlZ3JhdGlvbi90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL3BsYXNtYS1pbnRlZ3JhdGlvbi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3BsYXNtYS1pbnRlZ3JhdGlvbicKIHBrZ25hbWU9cGxhc21h LWludGVncmF0aW9uCiB2ZXJzaW9uPTUuMTcuNQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVp bGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItREJVSUxEX1RFU1RJTkc9T0ZGIgogaG9z dG1ha2VkZXBlbmRzPSJleHRyYS1jbWFrZS1tb2R1bGVzIHBrZy1jb25maWcgcXQ1LXFtYWtlIHF0 NS1ob3N0LXRvb2xzCg== --===============1467018591389245472==--