From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 28907 invoked from network); 12 Jul 2020 08:23:42 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 12 Jul 2020 08:23:42 -0000 Content-Type: multipart/mixed; boundary="===============0290197711273952171==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_firefox=3A_build_with_pipewire_patch_to_enable_screenshare_for_wayland_users?= To: ml@inbox.vuxu.org From: absrd Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Sun, 12 Jul 2020 10:23:41 +0200 List-Id: Message-ID: <20200712082341.EEUHMlkGoBl55wt224nMFZ0Jzsa74vq1L--WpLC-eMc@z> GitHub notification mails are now in MIME to allow UTF8. --===============0290197711273952171== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgYWJzcmQgYWdhaW5zdCBtYXN0ZXIg b24gdGhlIHZvaWQtcGFja2FnZXMgcmVwb3NpdG9yeQoKaHR0cHM6Ly9naXRodWIuY29tL2Fic3Jk L3ZvaWQtcGFja2FnZXMgZmlyZWZveC1waXBld2lyZQpodHRwczovL2dpdGh1Yi5jb20vdm9pZC1s aW51eC92b2lkLXBhY2thZ2VzL3B1bGwvMjMyOTEKCmZpcmVmb3g6IGJ1aWxkIHdpdGggcGlwZXdp cmUgcGF0Y2ggdG8gZW5hYmxlIHNjcmVlbnNoYXJlIGZvciB3YXlsYW5kIHVzZXJzCkVuYWJsZXMg d2VicnRjIHBpcGV3aXJlIHNjcmVlbnNoYXJpbmcgd2l0aCBwaXBld2lyZSwgeGRnLWRlc2t0b3At cG9ydGFsIGFuZCBodHRwczovL2dpdGh1Yi5jb20vZW1lcnNpb24veGRnLWRlc2t0b3AtcG9ydGFs LXdscgoKQSBwYXRjaCBmaWxlIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9p ZC1wYWNrYWdlcy9wdWxsLzIzMjkxLnBhdGNoIGlzIGF0dGFjaGVk --===============0290197711273952171== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-firefox-pipewire-23291.patch" RnJvbSA1NWFmOTM3ZTllYTBiZTgyMzlmOGE2Yjk0Y2I0OTllZjIxZTRlMTdhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBGZWxpeCBLbGVpbnNjaG1pZHQgPGZrQGJzcmQuaW8+CkRhdGU6 IFN1biwgMjggSnVuIDIwMjAgMjA6Mzg6MTUgKzAyMDAKU3ViamVjdDogW1BBVENIXSBmaXJlZm94 OiBhZGQgcGlwZXdpcmUgcGF0Y2ggdG8gZW5hYmxlIHNjcmVlbnNoYXJlIGZvciB3YXlsYW5kCgpb Y2kgc2tpcF0KLS0tCiBzcmNwa2dzL2ZpcmVmb3gvcGF0Y2hlcy9waXBld2lyZS0wLjMucGF0Y2gg fCA4MjggKysrKysrKysrKysrKysrKysrKysrCiBzcmNwa2dzL2ZpcmVmb3gvdGVtcGxhdGUgICAg ICAgICAgICAgICAgICAgfCAgIDYgKy0KIDIgZmlsZXMgY2hhbmdlZCwgODMxIGluc2VydGlvbnMo KyksIDMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9maXJlZm94L3Bh dGNoZXMvcGlwZXdpcmUtMC4zLnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9maXJlZm94L3Bh dGNoZXMvcGlwZXdpcmUtMC4zLnBhdGNoIGIvc3JjcGtncy9maXJlZm94L3BhdGNoZXMvcGlwZXdp cmUtMC4zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yNTEw OTNjOGU0ZAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZmlyZWZveC9wYXRjaGVzL3BpcGV3 aXJlLTAuMy5wYXRjaApAQCAtMCwwICsxLDgyOCBAQAorSW1wb3J0ZWQgZnJvbSBGZWRvcmEncyBi dWlsZCBzcmMgb2YgRmlyZWZveDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9m aXJlZm94L2Jsb2IvMThmZDA0MmRlY2RiNWYyOTExZjBkM2RiZTY2NWMzNjVlZmVkMjhhNS9mL2Zp cmVmb3gtcGlwZXdpcmUtMC0zLnBhdGNoCisKKy0tLSBjb25maWcvc3lzdGVtLWhlYWRlcnMubW96 YnVpbGQKKysrKyBjb25maWcvc3lzdGVtLWhlYWRlcnMubW96YnVpbGQKK0BAIC0zMTQsNiArMzE0 LDcgQEAgc3lzdGVtX2hlYWRlcnMgPSBbCisgICAgICdHZXN0YWx0LmgnLAorICAgICAnZ2V0b3B0 LmgnLAorICAgICAnZ2lvL2dpby5oJywKKysgICAgJ2dpby9ndW5peGZkbGlzdC5oJywKKyAgICAg J2dsaWJjb25maWcuaCcsCisgICAgICdnbGliLmgnLAorICAgICAnZ2xpYi1vYmplY3QuaCcsCitA QCAtNjA3LDYgKzYwOCw3IEBAIHN5c3RlbV9oZWFkZXJzID0gWworICAgICAnUGdlbmVyci5oJywK KyAgICAgJ1BHZW5FcnIuaCcsCisgICAgICdQaC5oJywKKysgICAgJ3BpcGV3aXJlL3BpcGV3aXJl LmgnLAorICAgICAncGl4bWFuLmgnLAorICAgICAncGsxMWZ1bmMuaCcsCisgICAgICdwazExcHFn LmgnLAorLS0tIG1lZGlhL3dlYnJ0Yy90cnVuay93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1 cmUvQlVJTEQuZ24KKysrKyBtZWRpYS93ZWJydGMvdHJ1bmsvd2VicnRjL21vZHVsZXMvZGVza3Rv cF9jYXB0dXJlL0JVSUxELmduCitAQCAtMTU4LDcgKzE1OCw3IEBAIGlmIChydGNfaW5jbHVkZV90 ZXN0cykgeworIGlmIChpc19saW51eCkgeworICAgaWYgKHJ0Y191c2VfcGlwZXdpcmUpIHsKKyAg ICAgcGtnX2NvbmZpZygicGlwZXdpcmUiKSB7CistICAgICAgcGFja2FnZXMgPSBbICJsaWJwaXBl d2lyZS0wLjIiIF0KKysgICAgICBwYWNrYWdlcyA9IFsgImxpYnBpcGV3aXJlLTAuMyIgXQorCisg ICAgICAgZGVmaW5lcyA9IFsgIldFQlJUQ19VU0VfUElQRVdJUkUiIF0KKyAgICAgfQorLS0tIG1l ZGlhL3dlYnJ0Yy90cnVuay93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvZGVza3RvcF9j YXB0dXJlX2dlbmVyaWNfZ24vbW96LmJ1aWxkCisrKysgbWVkaWEvd2VicnRjL3RydW5rL3dlYnJ0 Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2NhcHR1cmVfZ2VuZXJpY19nbi9tb3ou YnVpbGQKK0BAIC0xOTQsNiArMTk0LDMwIEBAIGlmIENPTkZJR1siT1NfVEFSR0VUIl0gPT0gIkxp bnV4IjoKKyAgICAgICAgICIvbWVkaWEvd2VicnRjL3RydW5rL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0 b3BfY2FwdHVyZS93aW5kb3dfY2FwdHVyZXJfbGludXguY2MiCisgICAgIF0KKworKyMgUGlwZVdp cmUgc3BlY2lmaWMgZmlsZXMKKytpZiBDT05GSUdbIk9TX1RBUkdFVCJdID09ICJMaW51eCI6Cisr CisrICAgIERFRklORVNbIldFQlJUQ19VU0VfUElQRVdJUkUiXSA9ICIxIgorKworKyAgICBPU19M SUJTICs9IFsKKysgICAgICAgICJydCIsCisrICAgICAgICAicGlwZXdpcmUtMC4zIiwKKysgICAg ICAgICJnbGliLTIuMCIsCisrICAgICAgICAiZ2lvLTIuMCIsCisrICAgICAgICAiZ29iamVjdC0y LjAiCisrICAgIF0KKysKKysgICAgQ1hYRkxBR1MgKz0gQ09ORklHWydUS19DRkxBR1MnXQorKyAg ICBDWFhGTEFHUyArPSBbICItSS91c3IvaW5jbHVkZS9waXBld2lyZS0wLjMiIF0KKysgICAgQ1hY RkxBR1MgKz0gWyAiLUkvdXNyL2luY2x1ZGUvc3BhLTAuMiIgXQorKworKyAgICBVTklGSUVEX1NP VVJDRVMgKz0gWworKyAgICAgICAgIi9tZWRpYS93ZWJydGMvdHJ1bmsvd2VicnRjL21vZHVsZXMv ZGVza3RvcF9jYXB0dXJlL2xpbnV4L2Jhc2VfY2FwdHVyZXJfcGlwZXdpcmUuY2MiLAorKyAgICAg ICAgIi9tZWRpYS93ZWJydGMvdHJ1bmsvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xp bnV4L3NjcmVlbl9jYXB0dXJlcl9waXBld2lyZS5jYyIsCisrICAgICAgICAiL21lZGlhL3dlYnJ0 Yy90cnVuay93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvd2luZG93X2NhcHR1 cmVyX3BpcGV3aXJlLmNjIgorKyAgICBdCisrCisrCisgaWYgQ09ORklHWyJPU19UQVJHRVQiXSA9 PSAiTmV0QlNEIjoKKworICAgICBERUZJTkVTWyJVU0VfWDExIl0gPSAiMSIKKy0tLSBtZWRpYS93 ZWJydGMvdHJ1bmsvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rlc2t0b3BfY2FwdHVy ZV9vcHRpb25zLmgKKysrKyBtZWRpYS93ZWJydGMvdHJ1bmsvd2VicnRjL21vZHVsZXMvZGVza3Rv cF9jYXB0dXJlL2Rlc2t0b3BfY2FwdHVyZV9vcHRpb25zLmgKK0BAIC0xNDEsNyArMTQxLDcgQEAg Y2xhc3MgRGVza3RvcENhcHR1cmVPcHRpb25zIHsKKyAgIGJvb2wgZGlzYWJsZV9lZmZlY3RzXyA9 IHRydWU7CisgICBib29sIGRldGVjdF91cGRhdGVkX3JlZ2lvbl8gPSBmYWxzZTsKKyAjaWYgZGVm aW5lZChXRUJSVENfVVNFX1BJUEVXSVJFKQorLSAgYm9vbCBhbGxvd19waXBld2lyZV8gPSBmYWxz ZTsKKysgIGJvb2wgYWxsb3dfcGlwZXdpcmVfID0gdHJ1ZTsKKyAjZW5kaWYKKyB9OworCistLS0g bWVkaWEvd2VicnRjL3RydW5rL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9i YXNlX2NhcHR1cmVyX3BpcGV3aXJlLmNjCisrKysgbWVkaWEvd2VicnRjL3RydW5rL3dlYnJ0Yy9t b2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9iYXNlX2NhcHR1cmVyX3BpcGV3aXJlLmNjCitA QCAtMTUsOCArMTUsMTEgQEAKKworICNpbmNsdWRlIDxzcGEvcGFyYW0vZm9ybWF0LXV0aWxzLmg+ CisgI2luY2x1ZGUgPHNwYS9wYXJhbS9wcm9wcy5oPgorLSNpbmNsdWRlIDxzcGEvcGFyYW0vdmlk ZW8vcmF3LXV0aWxzLmg+CistI2luY2x1ZGUgPHNwYS9zdXBwb3J0L3R5cGUtbWFwLmg+CisrCisr I2luY2x1ZGUgPGxpbnV4L2RtYS1idWYuaD4KKysjaW5jbHVkZSA8c3lzL21tYW4uaD4KKysjaW5j bHVkZSA8c3lzL2lvY3RsLmg+CisrI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisKKyAjaW5jbHVk ZSA8bWVtb3J5PgorICNpbmNsdWRlIDx1dGlsaXR5PgorQEAgLTM2LDMxICszOSwzNiBAQCBjb25z dCBjaGFyIGtTZXNzaW9uSW50ZXJmYWNlTmFtZVtdID0gIm9yZy5mcmVlZGVza3RvcC5wb3J0YWwu U2Vzc2lvbiI7CisgY29uc3QgY2hhciBrUmVxdWVzdEludGVyZmFjZU5hbWVbXSA9ICJvcmcuZnJl ZWRlc2t0b3AucG9ydGFsLlJlcXVlc3QiOworIGNvbnN0IGNoYXIga1NjcmVlbkNhc3RJbnRlcmZh Y2VOYW1lW10gPSAib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5TY3JlZW5DYXN0IjsKKworLS8vIHN0 YXRpYworLXZvaWQgQmFzZUNhcHR1cmVyUGlwZVdpcmU6Ok9uU3RhdGVDaGFuZ2VkKHZvaWQqIGRh dGEsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHdfcmVtb3Rl X3N0YXRlIG9sZF9zdGF0ZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwd19yZW1vdGVfc3RhdGUgc3RhdGUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXJyb3JfbWVzc2FnZSkgeworLSAgQmFzZUNhcHR1 cmVyUGlwZVdpcmUqIHRoYXQgPSBzdGF0aWNfY2FzdDxCYXNlQ2FwdHVyZXJQaXBlV2lyZSo+KGRh dGEpOworLSAgUlRDX0RDSEVDSyh0aGF0KTsKKworLSAgc3dpdGNoIChzdGF0ZSkgeworLSAgICBj YXNlIFBXX1JFTU9URV9TVEFURV9FUlJPUjoKKy0gICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAi UGlwZVdpcmUgcmVtb3RlIHN0YXRlIGVycm9yOiAiIDw8IGVycm9yX21lc3NhZ2U7CistICAgICAg YnJlYWs7CistICAgIGNhc2UgUFdfUkVNT1RFX1NUQVRFX0NPTk5FQ1RFRDoKKy0gICAgICBSVENf TE9HKExTX0lORk8pIDw8ICJQaXBlV2lyZSByZW1vdGUgc3RhdGU6IGNvbm5lY3RlZC4iOworLSAg ICAgIHRoYXQtPkNyZWF0ZVJlY2VpdmluZ1N0cmVhbSgpOworLSAgICAgIGJyZWFrOworLSAgICBj YXNlIFBXX1JFTU9URV9TVEFURV9DT05ORUNUSU5HOgorLSAgICAgIFJUQ19MT0coTFNfSU5GTykg PDwgIlBpcGVXaXJlIHJlbW90ZSBzdGF0ZTogY29ubmVjdGluZy4iOworKy8vIHN0YXRpYworK3Zv aWQgQmFzZUNhcHR1cmVyUGlwZVdpcmU6OlN5bmNEbWFCdWYoaW50IGZkLCB1aW50NjRfdCBzdGFy dF9vcl9lbmQpIHsKKysgIHN0cnVjdCBkbWFfYnVmX3N5bmMgc3luYyA9IHsgMCB9OworKworKyAg c3luYy5mbGFncyA9IHN0YXJ0X29yX2VuZCB8IERNQV9CVUZfU1lOQ19SRUFEOworKworKyAgd2hp bGUodHJ1ZSkgeworKyAgICBpbnQgcmV0OworKyAgICByZXQgPSBpb2N0bCAoZmQsIERNQV9CVUZf SU9DVExfU1lOQywgJnN5bmMpOworKyAgICBpZiAocmV0ID09IC0xICYmIGVycm5vID09IEVJTlRS KSB7CisrICAgICAgY29udGludWU7CisrICAgIH0gZWxzZSBpZiAocmV0ID09IC0xKSB7CisrICAg ICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBzeW5jaHJvbml6ZSBETUEgYnVmZmVy OiAiIDw8IGdfc3RyZXJyb3IoZXJybm8pOworICAgICAgIGJyZWFrOworLSAgICBjYXNlIFBXX1JF TU9URV9TVEFURV9VTkNPTk5FQ1RFRDoKKy0gICAgICBSVENfTE9HKExTX0lORk8pIDw8ICJQaXBl V2lyZSByZW1vdGUgc3RhdGU6IHVuY29ubmVjdGVkLiI7CisrICAgIH0gZWxzZSB7CisgICAgICAg YnJlYWs7CisrICAgIH0KKyAgIH0KKyB9CisKKysvLyBzdGF0aWMKKyt2b2lkIEJhc2VDYXB0dXJl clBpcGVXaXJlOjpPbkNvcmVFcnJvcih2b2lkICpkYXRhLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGlkLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCBzZXEsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50IHJlcywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBjaGFyICptZXNzYWdlKSB7CisrICBSVENfTE9HKExTX0VSUk9SKSA8PCAiY29yZSBl cnJvcjogIiA8PCBtZXNzYWdlOworK30KKysKKyAvLyBzdGF0aWMKKyB2b2lkIEJhc2VDYXB0dXJl clBpcGVXaXJlOjpPblN0cmVhbVN0YXRlQ2hhbmdlZCh2b2lkKiBkYXRhLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB3X3N0cmVhbV9zdGF0ZSBvbGRf c3RhdGUsCitAQCAtNzMsNzYgKzgxLDU0IEBAIHZvaWQgQmFzZUNhcHR1cmVyUGlwZVdpcmU6Ok9u U3RyZWFtU3RhdGVDaGFuZ2VkKHZvaWQqIGRhdGEsCisgICAgIGNhc2UgUFdfU1RSRUFNX1NUQVRF X0VSUk9SOgorICAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJQaXBlV2lyZSBzdHJlYW0gc3Rh dGUgZXJyb3I6ICIgPDwgZXJyb3JfbWVzc2FnZTsKKyAgICAgICBicmVhazsKKy0gICAgY2FzZSBQ V19TVFJFQU1fU1RBVEVfQ09ORklHVVJFOgorLSAgICAgIHB3X3N0cmVhbV9zZXRfYWN0aXZlKHRo YXQtPnB3X3N0cmVhbV8sIHRydWUpOworLSAgICAgIGJyZWFrOworLSAgICBjYXNlIFBXX1NUUkVB TV9TVEFURV9VTkNPTk5FQ1RFRDoKKy0gICAgY2FzZSBQV19TVFJFQU1fU1RBVEVfQ09OTkVDVElO RzoKKy0gICAgY2FzZSBQV19TVFJFQU1fU1RBVEVfUkVBRFk6CisgICAgIGNhc2UgUFdfU1RSRUFN X1NUQVRFX1BBVVNFRDoKKyAgICAgY2FzZSBQV19TVFJFQU1fU1RBVEVfU1RSRUFNSU5HOgorKyAg ICBjYXNlIFBXX1NUUkVBTV9TVEFURV9VTkNPTk5FQ1RFRDoKKysgICAgY2FzZSBQV19TVFJFQU1f U1RBVEVfQ09OTkVDVElORzoKKyAgICAgICBicmVhazsKKyAgIH0KKyB9CisKKyAvLyBzdGF0aWMK Ky12b2lkIEJhc2VDYXB0dXJlclBpcGVXaXJlOjpPblN0cmVhbUZvcm1hdENoYW5nZWQodm9pZCog ZGF0YSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3Qgc3RydWN0IHNwYV9wb2QqIGZvcm1hdCkgeworK3ZvaWQgQmFzZUNhcHR1cmVyUGlwZVdp cmU6Ok9uU3RyZWFtUGFyYW1DaGFuZ2VkKHZvaWQgKmRhdGEsIHVpbnQzMl90IGlkLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBz cGFfcG9kICpmb3JtYXQpIHsKKyAgIEJhc2VDYXB0dXJlclBpcGVXaXJlKiB0aGF0ID0gc3RhdGlj X2Nhc3Q8QmFzZUNhcHR1cmVyUGlwZVdpcmUqPihkYXRhKTsKKyAgIFJUQ19EQ0hFQ0sodGhhdCk7 CisKKy0gIFJUQ19MT0coTFNfSU5GTykgPDwgIlBpcGVXaXJlIHN0cmVhbSBmb3JtYXQgY2hhbmdl ZC4iOworKyAgUlRDX0xPRyhMU19JTkZPKSA8PCAiUGlwZVdpcmUgc3RyZWFtIHBhcmFtIGNoYW5n ZWQuIjsKKworLSAgaWYgKCFmb3JtYXQpIHsKKy0gICAgcHdfc3RyZWFtX2ZpbmlzaF9mb3JtYXQo dGhhdC0+cHdfc3RyZWFtXywgLypyZXM9Ki8wLCAvKnBhcmFtcz0qL251bGxwdHIsCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8qbl9wYXJhbXM9Ki8wKTsKKysgIGlmICghZm9ybWF0IHx8 IGlkICE9IFNQQV9QQVJBTV9Gb3JtYXQpIHsKKyAgICAgcmV0dXJuOworICAgfQorCistICB0aGF0 LT5zcGFfdmlkZW9fZm9ybWF0XyA9IG5ldyBzcGFfdmlkZW9faW5mb19yYXcoKTsKKy0gIHNwYV9m b3JtYXRfdmlkZW9fcmF3X3BhcnNlKGZvcm1hdCwgdGhhdC0+c3BhX3ZpZGVvX2Zvcm1hdF8sCist ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGhhdC0+cHdfdHlwZV8tPmZvcm1hdF92aWRl byk7CisrICBzcGFfZm9ybWF0X3ZpZGVvX3Jhd19wYXJzZShmb3JtYXQsICZ0aGF0LT5zcGFfdmlk ZW9fZm9ybWF0Xyk7CisKKy0gIGF1dG8gd2lkdGggPSB0aGF0LT5zcGFfdmlkZW9fZm9ybWF0Xy0+ c2l6ZS53aWR0aDsKKy0gIGF1dG8gaGVpZ2h0ID0gdGhhdC0+c3BhX3ZpZGVvX2Zvcm1hdF8tPnNp emUuaGVpZ2h0OworKyAgYXV0byB3aWR0aCA9IHRoYXQtPnNwYV92aWRlb19mb3JtYXRfLnNpemUu d2lkdGg7CisrICBhdXRvIGhlaWdodCA9IHRoYXQtPnNwYV92aWRlb19mb3JtYXRfLnNpemUuaGVp Z2h0OworICAgYXV0byBzdHJpZGUgPSBTUEFfUk9VTkRfVVBfTih3aWR0aCAqIGtCeXRlc1BlclBp eGVsLCA0KTsKKyAgIGF1dG8gc2l6ZSA9IGhlaWdodCAqIHN0cmlkZTsKKworKyAgdGhhdC0+ZGVz a3RvcF9zaXplXyA9IERlc2t0b3BTaXplKHdpZHRoLCBoZWlnaHQpOworKworICAgdWludDhfdCBi dWZmZXJbMTAyNF0gPSB7fTsKKyAgIGF1dG8gYnVpbGRlciA9IHNwYV9wb2RfYnVpbGRlcntidWZm ZXIsIHNpemVvZihidWZmZXIpfTsKKworICAgLy8gU2V0dXAgYnVmZmVycyBhbmQgbWV0YSBoZWFk ZXIgZm9yIG5ldyBmb3JtYXQuCistICBjb25zdCBzdHJ1Y3Qgc3BhX3BvZCogcGFyYW1zWzJdOwor LSAgcGFyYW1zWzBdID0gcmVpbnRlcnByZXRfY2FzdDxzcGFfcG9kKj4oc3BhX3BvZF9idWlsZGVy X29iamVjdCgKKy0gICAgICAmYnVpbGRlciwKKy0gICAgICAvLyBpZCB0byBlbnVtZXJhdGUgYnVm ZmVyIHJlcXVpcmVtZW50cworLSAgICAgIHRoYXQtPnB3X2NvcmVfdHlwZV8tPnBhcmFtLmlkQnVm ZmVycywKKy0gICAgICB0aGF0LT5wd19jb3JlX3R5cGVfLT5wYXJhbV9idWZmZXJzLkJ1ZmZlcnMs CistICAgICAgLy8gU2l6ZTogc3BlY2lmaWVkIGFzIGludGVnZXIgKGkpIGFuZCBzZXQgdG8gc3Bl Y2lmaWVkIHNpemUKKy0gICAgICAiOiIsIHRoYXQtPnB3X2NvcmVfdHlwZV8tPnBhcmFtX2J1ZmZl cnMuc2l6ZSwgImkiLCBzaXplLAorLSAgICAgIC8vIFN0cmlkZTogc3BlY2lmaWVkIGFzIGludGVn ZXIgKGkpIGFuZCBzZXQgdG8gc3BlY2lmaWVkIHN0cmlkZQorLSAgICAgICI6IiwgdGhhdC0+cHdf Y29yZV90eXBlXy0+cGFyYW1fYnVmZmVycy5zdHJpZGUsICJpIiwgc3RyaWRlLAorLSAgICAgIC8v IEJ1ZmZlcnM6IHNwZWNpZmllcyBob3cgbWFueSBidWZmZXJzIHdlIHdhbnQgdG8gZGVhbCB3aXRo LCBzZXQgYXMKKy0gICAgICAvLyBpbnRlZ2VyIChpKSB3aGVyZSBwcmVmZXJyZWQgbnVtYmVyIGlz IDgsIHRoZW4gYWxsb3dlZCBudW1iZXIgaXMgZGVmaW5lZAorLSAgICAgIC8vIGFzIHJhbmdlIChy KSBmcm9tIG1pbiBhbmQgbWF4IHZhbHVlcyBhbmQgaXQgaXMgdW5kZWNpZGVkICh1KSB0byBhbGxv dworLSAgICAgIC8vIG5lZ290aWF0aW9uCistICAgICAgIjoiLCB0aGF0LT5wd19jb3JlX3R5cGVf LT5wYXJhbV9idWZmZXJzLmJ1ZmZlcnMsICJpcnUiLCA4LAorLSAgICAgIFNQQV9QT0RfUFJPUF9N SU5fTUFYKDEsIDMyKSwKKy0gICAgICAvLyBBbGlnbjogbWVtb3J5IGFsaWdubWVudCBvZiB0aGUg YnVmZmVyLCBzZXQgYXMgaW50ZWdlciAoaSkgdG8gc3BlY2lmaWVkCistICAgICAgLy8gdmFsdWUK Ky0gICAgICAiOiIsIHRoYXQtPnB3X2NvcmVfdHlwZV8tPnBhcmFtX2J1ZmZlcnMuYWxpZ24sICJp IiwgMTYpKTsKKy0gIHBhcmFtc1sxXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8c3BhX3BvZCo+KHNwYV9w b2RfYnVpbGRlcl9vYmplY3QoCistICAgICAgJmJ1aWxkZXIsCistICAgICAgLy8gaWQgdG8gZW51 bWVyYXRlIHN1cHBvcnRlZCBtZXRhZGF0YQorLSAgICAgIHRoYXQtPnB3X2NvcmVfdHlwZV8tPnBh cmFtLmlkTWV0YSwgdGhhdC0+cHdfY29yZV90eXBlXy0+cGFyYW1fbWV0YS5NZXRhLAorLSAgICAg IC8vIFR5cGU6IHNwZWNpZmllZCBhcyBpZCBvciBlbnVtIChJKQorLSAgICAgICI6IiwgdGhhdC0+ cHdfY29yZV90eXBlXy0+cGFyYW1fbWV0YS50eXBlLCAiSSIsCistICAgICAgdGhhdC0+cHdfY29y ZV90eXBlXy0+bWV0YS5IZWFkZXIsCistICAgICAgLy8gU2l6ZTogc2l6ZSBvZiB0aGUgbWV0YWRh dGEsIHNwZWNpZmllZCBhcyBpbnRlZ2VyIChpKQorLSAgICAgICI6IiwgdGhhdC0+cHdfY29yZV90 eXBlXy0+cGFyYW1fbWV0YS5zaXplLCAiaSIsCistICAgICAgc2l6ZW9mKHN0cnVjdCBzcGFfbWV0 YV9oZWFkZXIpKSk7CistCistICBwd19zdHJlYW1fZmluaXNoX2Zvcm1hdCh0aGF0LT5wd19zdHJl YW1fLCAvKnJlcz0qLzAsIHBhcmFtcywgLypuX3BhcmFtcz0qLzIpOworKyAgY29uc3Qgc3RydWN0 IHNwYV9wb2QqIHBhcmFtc1szXTsKKysgIHBhcmFtc1swXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8c3Bh X3BvZCAqPihzcGFfcG9kX2J1aWxkZXJfYWRkX29iamVjdCgmYnVpbGRlciwKKysgICAgICAgICAg ICAgIFNQQV9UWVBFX09CSkVDVF9QYXJhbUJ1ZmZlcnMsIFNQQV9QQVJBTV9CdWZmZXJzLAorKyAg ICAgICAgICAgICAgU1BBX1BBUkFNX0JVRkZFUlNfc2l6ZSwgU1BBX1BPRF9JbnQoc2l6ZSksCisr ICAgICAgICAgICAgICBTUEFfUEFSQU1fQlVGRkVSU19zdHJpZGUsIFNQQV9QT0RfSW50KHN0cmlk ZSksCisrICAgICAgICAgICAgICBTUEFfUEFSQU1fQlVGRkVSU19idWZmZXJzLCBTUEFfUE9EX0NI T0lDRV9SQU5HRV9JbnQoOCwgMSwgMzIpKSk7CisrICBwYXJhbXNbMV0gPSByZWludGVycHJldF9j YXN0PHNwYV9wb2QgKj4oc3BhX3BvZF9idWlsZGVyX2FkZF9vYmplY3QoJmJ1aWxkZXIsCisrICAg ICAgICAgICAgICBTUEFfVFlQRV9PQkpFQ1RfUGFyYW1NZXRhLCBTUEFfUEFSQU1fTWV0YSwKKysg ICAgICAgICAgICAgIFNQQV9QQVJBTV9NRVRBX3R5cGUsIFNQQV9QT0RfSWQoU1BBX01FVEFfSGVh ZGVyKSwKKysgICAgICAgICAgICAgIFNQQV9QQVJBTV9NRVRBX3NpemUsIFNQQV9QT0RfSW50KHNp emVvZihzdHJ1Y3Qgc3BhX21ldGFfaGVhZGVyKSkpKTsKKysgIHBhcmFtc1syXSA9IHJlaW50ZXJw cmV0X2Nhc3Q8c3BhX3BvZCAqPihzcGFfcG9kX2J1aWxkZXJfYWRkX29iamVjdCgmYnVpbGRlciwK KysgICAgICAgICAgICAgIFNQQV9UWVBFX09CSkVDVF9QYXJhbU1ldGEsIFNQQV9QQVJBTV9NZXRh LAorKyAgICAgICAgICAgICAgU1BBX1BBUkFNX01FVEFfdHlwZSwgU1BBX1BPRF9JZCAoU1BBX01F VEFfVmlkZW9Dcm9wKSwKKysgICAgICAgICAgICAgIFNQQV9QQVJBTV9NRVRBX3NpemUsIFNQQV9Q T0RfSW50IChzaXplb2Yoc3RydWN0IHNwYV9tZXRhX3JlZ2lvbikpKSk7CisrICBwd19zdHJlYW1f dXBkYXRlX3BhcmFtcyh0aGF0LT5wd19zdHJlYW1fLCBwYXJhbXMsIDMpOworIH0KKworIC8vIHN0 YXRpYworQEAgLTE1MCwxNSArMTM2LDI1IEBAIHZvaWQgQmFzZUNhcHR1cmVyUGlwZVdpcmU6Ok9u U3RyZWFtUHJvY2Vzcyh2b2lkKiBkYXRhKSB7CisgICBCYXNlQ2FwdHVyZXJQaXBlV2lyZSogdGhh dCA9IHN0YXRpY19jYXN0PEJhc2VDYXB0dXJlclBpcGVXaXJlKj4oZGF0YSk7CisgICBSVENfRENI RUNLKHRoYXQpOworCistICBwd19idWZmZXIqIGJ1ZiA9IG51bGxwdHI7CisrICBzdHJ1Y3QgcHdf YnVmZmVyICpuZXh0X2J1ZmZlcjsKKysgIHN0cnVjdCBwd19idWZmZXIgKmJ1ZmZlciA9IG51bGxw dHI7CisrCisrICBuZXh0X2J1ZmZlciA9IHB3X3N0cmVhbV9kZXF1ZXVlX2J1ZmZlcih0aGF0LT5w d19zdHJlYW1fKTsKKysgIHdoaWxlIChuZXh0X2J1ZmZlcikgeworKyAgICBidWZmZXIgPSBuZXh0 X2J1ZmZlcjsKKysgICAgbmV4dF9idWZmZXIgPSBwd19zdHJlYW1fZGVxdWV1ZV9idWZmZXIodGhh dC0+cHdfc3RyZWFtXyk7CisKKy0gIGlmICghKGJ1ZiA9IHB3X3N0cmVhbV9kZXF1ZXVlX2J1ZmZl cih0aGF0LT5wd19zdHJlYW1fKSkpIHsKKysgICAgaWYgKG5leHRfYnVmZmVyKQorKyAgICAgIHB3 X3N0cmVhbV9xdWV1ZV9idWZmZXIgKHRoYXQtPnB3X3N0cmVhbV8sIGJ1ZmZlcik7CisrICB9Cisr CisrICBpZiAoIWJ1ZmZlcikgeworICAgICByZXR1cm47CisgICB9CisKKy0gIHRoYXQtPkhhbmRs ZUJ1ZmZlcihidWYpOworKyAgdGhhdC0+SGFuZGxlQnVmZmVyKGJ1ZmZlcik7CisKKy0gIHB3X3N0 cmVhbV9xdWV1ZV9idWZmZXIodGhhdC0+cHdfc3RyZWFtXywgYnVmKTsKKysgIHB3X3N0cmVhbV9x dWV1ZV9idWZmZXIodGhhdC0+cHdfc3RyZWFtXywgYnVmZmVyKTsKKyB9CisKKyBCYXNlQ2FwdHVy ZXJQaXBlV2lyZTo6QmFzZUNhcHR1cmVyUGlwZVdpcmUoQ2FwdHVyZVNvdXJjZVR5cGUgc291cmNl X3R5cGUpCitAQCAtMTY5LDM4ICsxNjUsMjIgQEAgQmFzZUNhcHR1cmVyUGlwZVdpcmU6On5CYXNl Q2FwdHVyZXJQaXBlV2lyZSgpIHsKKyAgICAgcHdfdGhyZWFkX2xvb3Bfc3RvcChwd19tYWluX2xv b3BfKTsKKyAgIH0KKworLSAgaWYgKHB3X3R5cGVfKSB7CistICAgIGRlbGV0ZSBwd190eXBlXzsK Ky0gIH0KKy0KKy0gIGlmIChzcGFfdmlkZW9fZm9ybWF0XykgeworLSAgICBkZWxldGUgc3BhX3Zp ZGVvX2Zvcm1hdF87CistICB9CistCisgICBpZiAocHdfc3RyZWFtXykgeworICAgICBwd19zdHJl YW1fZGVzdHJveShwd19zdHJlYW1fKTsKKyAgIH0KKworLSAgaWYgKHB3X3JlbW90ZV8pIHsKKy0g ICAgcHdfcmVtb3RlX2Rlc3Ryb3kocHdfcmVtb3RlXyk7CisrICBpZiAocHdfY29yZV8pIHsKKysg ICAgcHdfY29yZV9kaXNjb25uZWN0KHB3X2NvcmVfKTsKKyAgIH0KKworLSAgaWYgKHB3X2NvcmVf KSB7CistICAgIHB3X2NvcmVfZGVzdHJveShwd19jb3JlXyk7CisrICBpZiAocHdfY29udGV4dF8p IHsKKysgICAgcHdfY29udGV4dF9kZXN0cm95KHB3X2NvbnRleHRfKTsKKyAgIH0KKworICAgaWYg KHB3X21haW5fbG9vcF8pIHsKKyAgICAgcHdfdGhyZWFkX2xvb3BfZGVzdHJveShwd19tYWluX2xv b3BfKTsKKyAgIH0KKworLSAgaWYgKHB3X2xvb3BfKSB7CistICAgIHB3X2xvb3BfZGVzdHJveShw d19sb29wXyk7CistICB9CistCistICBpZiAoY3VycmVudF9mcmFtZV8pIHsKKy0gICAgZnJlZShj dXJyZW50X2ZyYW1lXyk7CistICB9CistCisgICBpZiAoc3RhcnRfcmVxdWVzdF9zaWduYWxfaWRf KSB7CisgICAgIGdfZGJ1c19jb25uZWN0aW9uX3NpZ25hbF91bnN1YnNjcmliZShjb25uZWN0aW9u Xywgc3RhcnRfcmVxdWVzdF9zaWduYWxfaWRfKTsKKyAgIH0KK0BAIC0yNTAsMjcgKzIzMCwzNSBA QCB2b2lkIEJhc2VDYXB0dXJlclBpcGVXaXJlOjpJbml0UG9ydGFsKCkgeworIHZvaWQgQmFzZUNh cHR1cmVyUGlwZVdpcmU6OkluaXRQaXBlV2lyZSgpIHsKKyAgIHB3X2luaXQoLyphcmdjPSovbnVs bHB0ciwgLyphcmdjPSovbnVsbHB0cik7CisKKy0gIHB3X2xvb3BfID0gcHdfbG9vcF9uZXcoLypw cm9wZXJ0aWVzPSovbnVsbHB0cik7CistICBwd19tYWluX2xvb3BfID0gcHdfdGhyZWFkX2xvb3Bf bmV3KHB3X2xvb3BfLCAicGlwZXdpcmUtbWFpbi1sb29wIik7CistCistICBwd19jb3JlXyA9IHB3 X2NvcmVfbmV3KHB3X2xvb3BfLCAvKnByb3BlcnRpZXM9Ki9udWxscHRyKTsKKy0gIHB3X2NvcmVf dHlwZV8gPSBwd19jb3JlX2dldF90eXBlKHB3X2NvcmVfKTsKKy0gIHB3X3JlbW90ZV8gPSBwd19y ZW1vdGVfbmV3KHB3X2NvcmVfLCBudWxscHRyLCAvKnVzZXJfZGF0YV9zaXplPSovMCk7CisrICBw d19tYWluX2xvb3BfID0gcHdfdGhyZWFkX2xvb3BfbmV3KCJwaXBld2lyZS1tYWluLWxvb3AiLCBu dWxscHRyKTsKKysgIHB3X2NvbnRleHRfID0gcHdfY29udGV4dF9uZXcocHdfdGhyZWFkX2xvb3Bf Z2V0X2xvb3AocHdfbWFpbl9sb29wXyksIG51bGxwdHIsIDApOworKyAgaWYgKCFwd19jb250ZXh0 XykgeworKyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIGNyZWF0ZSBQaXBlV2ly ZSBjb250ZXh0IjsKKysgICAgcmV0dXJuOworKyAgfQorCistICBJbml0UGlwZVdpcmVUeXBlcygp OworKyAgcHdfY29yZV8gPSBwd19jb250ZXh0X2Nvbm5lY3QocHdfY29udGV4dF8sIG51bGxwdHIs IDApOworKyAgaWYgKCFwd19jb3JlXykgeworKyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFp bGVkIHRvIGNvbm5lY3QgUGlwZVdpcmUgY29udGV4dCI7CisrICAgIHJldHVybjsKKysgIH0KKwor ICAgLy8gSW5pdGlhbGl6ZSBldmVudCBoYW5kbGVycywgcmVtb3RlIGVuZCBhbmQgc3RyZWFtLXJl bGF0ZWQuCistICBwd19yZW1vdGVfZXZlbnRzXy52ZXJzaW9uID0gUFdfVkVSU0lPTl9SRU1PVEVf RVZFTlRTOworLSAgcHdfcmVtb3RlX2V2ZW50c18uc3RhdGVfY2hhbmdlZCA9ICZPblN0YXRlQ2hh bmdlZDsKKysgIHB3X2NvcmVfZXZlbnRzXy52ZXJzaW9uID0gUFdfVkVSU0lPTl9DT1JFX0VWRU5U UzsKKysgIHB3X2NvcmVfZXZlbnRzXy5lcnJvciA9ICZPbkNvcmVFcnJvcjsKKworICAgcHdfc3Ry ZWFtX2V2ZW50c18udmVyc2lvbiA9IFBXX1ZFUlNJT05fU1RSRUFNX0VWRU5UUzsKKyAgIHB3X3N0 cmVhbV9ldmVudHNfLnN0YXRlX2NoYW5nZWQgPSAmT25TdHJlYW1TdGF0ZUNoYW5nZWQ7CistICBw d19zdHJlYW1fZXZlbnRzXy5mb3JtYXRfY2hhbmdlZCA9ICZPblN0cmVhbUZvcm1hdENoYW5nZWQ7 CisrICBwd19zdHJlYW1fZXZlbnRzXy5wYXJhbV9jaGFuZ2VkID0gJk9uU3RyZWFtUGFyYW1DaGFu Z2VkOworICAgcHdfc3RyZWFtX2V2ZW50c18ucHJvY2VzcyA9ICZPblN0cmVhbVByb2Nlc3M7CisK Ky0gIHB3X3JlbW90ZV9hZGRfbGlzdGVuZXIocHdfcmVtb3RlXywgJnNwYV9yZW1vdGVfbGlzdGVu ZXJfLCAmcHdfcmVtb3RlX2V2ZW50c18sCistICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMp OworLSAgcHdfcmVtb3RlX2Nvbm5lY3RfZmQocHdfcmVtb3RlXywgcHdfZmRfKTsKKysgIHB3X2Nv cmVfYWRkX2xpc3RlbmVyKHB3X2NvcmVfLCAmc3BhX2NvcmVfbGlzdGVuZXJfLCAmcHdfY29yZV9l dmVudHNfLCB0aGlzKTsKKysKKysgIHB3X3N0cmVhbV8gPSBDcmVhdGVSZWNlaXZpbmdTdHJlYW0o KTsKKysgIGlmICghcHdfc3RyZWFtXykgeworKyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFp bGVkIHRvIGNyZWF0ZSBQaXBlV2lyZSBzdHJlYW0iOworKyAgICByZXR1cm47CisrICB9CisKKyAg IGlmIChwd190aHJlYWRfbG9vcF9zdGFydChwd19tYWluX2xvb3BfKSA8IDApIHsKKyAgICAgUlRD X0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBzdGFydCBtYWluIFBpcGVXaXJlIGxvb3AiOwor QEAgLTI3OCw4MSArMjY2LDEzMiBAQCB2b2lkIEJhc2VDYXB0dXJlclBpcGVXaXJlOjpJbml0UGlw ZVdpcmUoKSB7CisgICB9CisgfQorCistdm9pZCBCYXNlQ2FwdHVyZXJQaXBlV2lyZTo6SW5pdFBp cGVXaXJlVHlwZXMoKSB7CistICBzcGFfdHlwZV9tYXAqIG1hcCA9IHB3X2NvcmVfdHlwZV8tPm1h cDsKKy0gIHB3X3R5cGVfID0gbmV3IFBpcGVXaXJlVHlwZSgpOworLQorLSAgc3BhX3R5cGVfbWVk aWFfdHlwZV9tYXAobWFwLCAmcHdfdHlwZV8tPm1lZGlhX3R5cGUpOworLSAgc3BhX3R5cGVfbWVk aWFfc3VidHlwZV9tYXAobWFwLCAmcHdfdHlwZV8tPm1lZGlhX3N1YnR5cGUpOworLSAgc3BhX3R5 cGVfZm9ybWF0X3ZpZGVvX21hcChtYXAsICZwd190eXBlXy0+Zm9ybWF0X3ZpZGVvKTsKKy0gIHNw YV90eXBlX3ZpZGVvX2Zvcm1hdF9tYXAobWFwLCAmcHdfdHlwZV8tPnZpZGVvX2Zvcm1hdCk7Cist fQorLQorLXZvaWQgQmFzZUNhcHR1cmVyUGlwZVdpcmU6OkNyZWF0ZVJlY2VpdmluZ1N0cmVhbSgp IHsKKytwd19zdHJlYW0qIEJhc2VDYXB0dXJlclBpcGVXaXJlOjpDcmVhdGVSZWNlaXZpbmdTdHJl YW0oKSB7CisgICBzcGFfcmVjdGFuZ2xlIHB3TWluU2NyZWVuQm91bmRzID0gc3BhX3JlY3Rhbmds ZXsxLCAxfTsKKy0gIHNwYV9yZWN0YW5nbGUgcHdTY3JlZW5Cb3VuZHMgPQorLSAgICAgIHNwYV9y ZWN0YW5nbGV7c3RhdGljX2Nhc3Q8dWludDMyX3Q+KGRlc2t0b3Bfc2l6ZV8ud2lkdGgoKSksCist ICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZGVza3RvcF9zaXplXy5o ZWlnaHQoKSl9OworKyAgc3BhX3JlY3RhbmdsZSBwd01heFNjcmVlbkJvdW5kcyA9IHNwYV9yZWN0 YW5nbGV7SU5UMzJfTUFYLCBJTlQzMl9NQVh9OworCistICBzcGFfZnJhY3Rpb24gcHdGcmFtZVJh dGVNaW4gPSBzcGFfZnJhY3Rpb257MCwgMX07CistICBzcGFfZnJhY3Rpb24gcHdGcmFtZVJhdGVN YXggPSBzcGFfZnJhY3Rpb257NjAsIDF9OworKyAgYXV0byBzdHJlYW0gPSBwd19zdHJlYW1fbmV3 KHB3X2NvcmVfLCAid2VicnRjLXBpcGV3aXJlLXN0cmVhbSIsIG51bGxwdHIpOworCistICBwd19w cm9wZXJ0aWVzKiByZXVzZVByb3BzID0gcHdfcHJvcGVydGllc19uZXcoInBpcGV3aXJlLmNsaWVu dC5yZXVzZSIsICIxIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAvKmVuZCBvZiB2YXJhcmdzKi8gbnVsbHB0cik7CistICBwd19zdHJlYW1fID0gcHdf c3RyZWFtX25ldyhwd19yZW1vdGVfLCAid2VicnRjLWNvbnN1bWUtc3RyZWFtIiwgcmV1c2VQcm9w cyk7CisrICBpZiAoIXN0cmVhbSkgeworKyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiQ291bGQg bm90IGNyZWF0ZSByZWNlaXZpbmcgc3RyZWFtLiI7CisrICAgIHJldHVybiBudWxscHRyOworKyAg fQorCisgICB1aW50OF90IGJ1ZmZlclsxMDI0XSA9IHt9OworLSAgY29uc3Qgc3BhX3BvZCogcGFy YW1zWzFdOworLSAgc3BhX3BvZF9idWlsZGVyIGJ1aWxkZXIgPSBzcGFfcG9kX2J1aWxkZXJ7YnVm ZmVyLCBzaXplb2YoYnVmZmVyKX07CistICBwYXJhbXNbMF0gPSByZWludGVycHJldF9jYXN0PHNw YV9wb2QqPihzcGFfcG9kX2J1aWxkZXJfb2JqZWN0KAorLSAgICAgICZidWlsZGVyLAorLSAgICAg IC8vIGlkIHRvIGVudW1lcmF0ZSBmb3JtYXRzCistICAgICAgcHdfY29yZV90eXBlXy0+cGFyYW0u aWRFbnVtRm9ybWF0LCBwd19jb3JlX3R5cGVfLT5zcGFfZm9ybWF0LCAiSSIsCistICAgICAgcHdf dHlwZV8tPm1lZGlhX3R5cGUudmlkZW8sICJJIiwgcHdfdHlwZV8tPm1lZGlhX3N1YnR5cGUucmF3 LAorLSAgICAgIC8vIFZpZGVvIGZvcm1hdDogc3BlY2lmaWVkIGFzIGlkIG9yIGVudW0gKEkpLCBw cmVmZXJyZWQgZm9ybWF0IGlzIEJHUngsCistICAgICAgLy8gdGhlbiBhbGxvd2VkIGZvcm1hdHMg YXJlIGVudW1lcmF0ZWQgKGUpIGFuZCB0aGUgZm9ybWF0IGlzIHVuZGVjaWRlZCAodSkKKy0gICAg ICAvLyB0byBhbGxvdyBuZWdvdGlhdGlvbgorLSAgICAgICI6IiwgcHdfdHlwZV8tPmZvcm1hdF92 aWRlby5mb3JtYXQsICJJZXUiLCBwd190eXBlXy0+dmlkZW9fZm9ybWF0LkJHUngsCistICAgICAg U1BBX1BPRF9QUk9QX0VOVU0oMiwgcHdfdHlwZV8tPnZpZGVvX2Zvcm1hdC5SR0J4LAorLSAgICAg ICAgICAgICAgICAgICAgICAgIHB3X3R5cGVfLT52aWRlb19mb3JtYXQuQkdSeCksCistICAgICAg Ly8gVmlkZW8gc2l6ZTogc3BlY2lmaWVkIGFzIHJlY3RhbmdsZSAoUiksIHByZWZlcnJlZCBzaXpl IGlzIHNwZWNpZmllZCBhcworLSAgICAgIC8vIGZpcnN0IHBhcmFtZXRlciwgdGhlbiBhbGxvd2Vk IHNpemUgaXMgZGVmaW5lZCBhcyByYW5nZSAocikgZnJvbSBtaW4gYW5kCistICAgICAgLy8gbWF4 IHZhbHVlcyBhbmQgdGhlIGZvcm1hdCBpcyB1bmRlY2lkZWQgKHUpIHRvIGFsbG93IG5lZ290aWF0 aW9uCistICAgICAgIjoiLCBwd190eXBlXy0+Zm9ybWF0X3ZpZGVvLnNpemUsICJScnUiLCAmcHdT Y3JlZW5Cb3VuZHMsIDIsCistICAgICAgJnB3TWluU2NyZWVuQm91bmRzLCAmcHdTY3JlZW5Cb3Vu ZHMsCistICAgICAgLy8gRnJhbWUgcmF0ZTogc3BlY2lmaWVkIGFzIGZyYWN0aW9uIChGKSBhbmQg c2V0IHRvIG1pbmltdW0gZnJhbWUgcmF0ZQorLSAgICAgIC8vIHZhbHVlCistICAgICAgIjoiLCBw d190eXBlXy0+Zm9ybWF0X3ZpZGVvLmZyYW1lcmF0ZSwgIkYiLCAmcHdGcmFtZVJhdGVNaW4sCist ICAgICAgLy8gTWF4IGZyYW1lIHJhdGU6IHNwZWNpZmllZCBhcyBmcmFjdGlvbiAoRiksIHByZWZl cnJlZCBmcmFtZSByYXRlIGlzIHNldAorLSAgICAgIC8vIHRvIG1heGltdW0gdmFsdWUsIHRoZW4g YWxsb3dlZCBmcmFtZSByYXRlIGlzIGRlZmluZWQgYXMgcmFuZ2UgKHIpIGZyb20KKy0gICAgICAv LyBtaW4gYW5kIG1heCB2YWx1ZXMgYW5kIGl0IGlzIHVuZGVjaWRlZCAodSkgdG8gYWxsb3cgbmVn b3RpYXRpb24KKy0gICAgICAiOiIsIHB3X3R5cGVfLT5mb3JtYXRfdmlkZW8ubWF4X2ZyYW1lcmF0 ZSwgIkZydSIsICZwd0ZyYW1lUmF0ZU1heCwgMiwKKy0gICAgICAmcHdGcmFtZVJhdGVNaW4sICZw d0ZyYW1lUmF0ZU1heCkpOworLQorLSAgcHdfc3RyZWFtX2FkZF9saXN0ZW5lcihwd19zdHJlYW1f LCAmc3BhX3N0cmVhbV9saXN0ZW5lcl8sICZwd19zdHJlYW1fZXZlbnRzXywKKy0gICAgICAgICAg ICAgICAgICAgICAgICAgdGhpcyk7CisrICBjb25zdCBzcGFfcG9kKiBwYXJhbXNbMl07CisrICBz cGFfcG9kX2J1aWxkZXIgYnVpbGRlciA9IFNQQV9QT0RfQlVJTERFUl9JTklUKGJ1ZmZlciwgc2l6 ZW9mIChidWZmZXIpKTsKKysKKysgIHBhcmFtc1swXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8c3BhX3Bv ZCAqPihzcGFfcG9kX2J1aWxkZXJfYWRkX29iamVjdCgmYnVpbGRlciwKKysgICAgICAgICAgICAg IFNQQV9UWVBFX09CSkVDVF9Gb3JtYXQsIFNQQV9QQVJBTV9FbnVtRm9ybWF0LAorKyAgICAgICAg ICAgICAgU1BBX0ZPUk1BVF9tZWRpYVR5cGUsIFNQQV9QT0RfSWQoU1BBX01FRElBX1RZUEVfdmlk ZW8pLAorKyAgICAgICAgICAgICAgU1BBX0ZPUk1BVF9tZWRpYVN1YnR5cGUsIFNQQV9QT0RfSWQo U1BBX01FRElBX1NVQlRZUEVfcmF3KSwKKysgICAgICAgICAgICAgIFNQQV9GT1JNQVRfVklERU9f Zm9ybWF0LCBTUEFfUE9EX0NIT0lDRV9FTlVNX0lkKDUsIFNQQV9WSURFT19GT1JNQVRfQkdSeCwg U1BBX1ZJREVPX0ZPUk1BVF9SR0J4LCBTUEFfVklERU9fRk9STUFUX1JHQkEsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT UEFfVklERU9fRk9STUFUX0JHUngsIFNQQV9WSURFT19GT1JNQVRfQkdSQSksCisrICAgICAgICAg ICAgICBTUEFfRk9STUFUX1ZJREVPX3NpemUsIFNQQV9QT0RfQ0hPSUNFX1JBTkdFX1JlY3Rhbmds ZSgmcHdNaW5TY3JlZW5Cb3VuZHMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHdNaW5TY3JlZW5Cb3VuZHMsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmcHdNYXhTY3JlZW5Cb3VuZHMpLAorKyAgICAgICAgICAgICAgMCkpOworKyAg cHdfc3RyZWFtX2FkZF9saXN0ZW5lcihzdHJlYW0sICZzcGFfc3RyZWFtX2xpc3RlbmVyXywgJnB3 X3N0cmVhbV9ldmVudHNfLCB0aGlzKTsKKysKKyAgIHB3X3N0cmVhbV9mbGFncyBmbGFncyA9IHN0 YXRpY19jYXN0PHB3X3N0cmVhbV9mbGFncz4oCistICAgICAgUFdfU1RSRUFNX0ZMQUdfQVVUT0NP Tk5FQ1QgfCBQV19TVFJFQU1fRkxBR19JTkFDVElWRSB8CistICAgICAgUFdfU1RSRUFNX0ZMQUdf TUFQX0JVRkZFUlMpOworLSAgaWYgKHB3X3N0cmVhbV9jb25uZWN0KHB3X3N0cmVhbV8sIFBXX0RJ UkVDVElPTl9JTlBVVCwgLypwb3J0X3BhdGg9Ki9udWxscHRyLAorLSAgICAgICAgICAgICAgICAg ICAgICAgIGZsYWdzLCBwYXJhbXMsCistICAgICAgICAgICAgICAgICAgICAgICAgLypuX3BhcmFt cz0qLzEpICE9IDApIHsKKysgICAgICBQV19TVFJFQU1fRkxBR19BVVRPQ09OTkVDVCB8IFBXX1NU UkVBTV9GTEFHX0lOQUNUSVZFKTsKKysKKysgIGlmIChwd19zdHJlYW1fY29ubmVjdChzdHJlYW0s IFBXX0RJUkVDVElPTl9JTlBVVCwgcHdfc3RyZWFtX25vZGVfaWRfLCBQV19TVFJFQU1fRkxBR19B VVRPQ09OTkVDVCwgcGFyYW1zLCAxKSAhPSAwKSB7CisgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8 ICJDb3VsZCBub3QgY29ubmVjdCByZWNlaXZpbmcgc3RyZWFtLiI7CisgICAgIHBvcnRhbF9pbml0 X2ZhaWxlZF8gPSB0cnVlOworLSAgICByZXR1cm47CisgICB9CisrCisrICByZXR1cm4gc3RyZWFt OworIH0KKworIHZvaWQgQmFzZUNhcHR1cmVyUGlwZVdpcmU6OkhhbmRsZUJ1ZmZlcihwd19idWZm ZXIqIGJ1ZmZlcikgeworKyAgc3RydWN0IHNwYV9tZXRhX3JlZ2lvbiogdmlkZW9fY3JvcDsKKyAg IHNwYV9idWZmZXIqIHNwYUJ1ZmZlciA9IGJ1ZmZlci0+YnVmZmVyOworLSAgdm9pZCogc3JjID0g bnVsbHB0cjsKKysgIHVpbnQ4X3QgKm1hcCA9IG51bGxwdHI7CisrICB1aW50OF90KiBzcmMgPSBu dWxscHRyOworKyAgdWludDhfdCogZHN0ID0gbnVsbHB0cjsKKysKKysgIGlmIChzcGFCdWZmZXIt PmRhdGFzWzBdLmNodW5rLT5zaXplID09IDApIHsKKysgICAgbWFwID0gbnVsbHB0cjsKKysgICAg c3JjID0gbnVsbHB0cjsKKysgIH0gZWxzZSBpZiAoc3BhQnVmZmVyLT5kYXRhc1swXS50eXBlID09 IFNQQV9EQVRBX01lbUZkKSB7CisrICAgIG1hcCA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtbWFw KAorKyAgICAgICAgbnVsbHB0ciwgc3BhQnVmZmVyLT5kYXRhc1swXS5tYXhzaXplICsgc3BhQnVm ZmVyLT5kYXRhc1swXS5tYXBvZmZzZXQsCisrICAgICAgICBQUk9UX1JFQUQsIE1BUF9QUklWQVRF LCBzcGFCdWZmZXItPmRhdGFzWzBdLmZkLCAwKSk7CisrCisrICAgIGlmIChtYXAgPT0gTUFQX0ZB SUxFRCkgeworKyAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gbW1hcCB0aGUg bWVtb3J5OiAiIDw8IHN0ZDo6c3RyZXJyb3IoZXJybm8pOworKyAgICAgIHJldHVybjsKKysgICAg fQorKworKyAgICBzcmMgPSBTUEFfTUVNQkVSKG1hcCwgc3BhQnVmZmVyLT5kYXRhc1swXS5tYXBv ZmZzZXQsIHVpbnQ4X3QpOworKyAgfSBlbHNlIGlmIChzcGFCdWZmZXItPmRhdGFzWzBdLnR5cGUg PT0gU1BBX0RBVEFfRG1hQnVmKSB7CisrICAgIGludCBmZDsKKysgICAgZmQgPSBzcGFCdWZmZXIt PmRhdGFzWzBdLmZkOworCistICBpZiAoIShzcmMgPSBzcGFCdWZmZXItPmRhdGFzWzBdLmRhdGEp KSB7CisrICAgIG1hcCA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtbWFwKAorKyAgICAgICAgbnVs bHB0ciwgc3BhQnVmZmVyLT5kYXRhc1swXS5tYXhzaXplICsgc3BhQnVmZmVyLT5kYXRhc1swXS5t YXBvZmZzZXQsCisrICAgICAgICBQUk9UX1JFQUQsIE1BUF9QUklWQVRFLCBmZCwgMCkpOworKwor KyAgICBpZiAobWFwID09IE1BUF9GQUlMRUQpIHsKKysgICAgICBSVENfTE9HKExTX0VSUk9SKSA8 PCAiRmFpbGVkIHRvIG1tYXAgdGhlIG1lbW9yeTogIiA8PCBzdGQ6OnN0cmVycm9yKGVycm5vKTsK KysgICAgICByZXR1cm47CisrICAgIH0KKysKKysgICAgU3luY0RtYUJ1ZihmZCwgRE1BX0JVRl9T WU5DX1NUQVJUKTsKKysKKysgICAgc3JjID0gU1BBX01FTUJFUihtYXAsIHNwYUJ1ZmZlci0+ZGF0 YXNbMF0ubWFwb2Zmc2V0LCB1aW50OF90KTsKKysgIH0gZWxzZSBpZiAoc3BhQnVmZmVyLT5kYXRh c1swXS50eXBlID09IFNQQV9EQVRBX01lbVB0cikgeworKyAgICBtYXAgPSBudWxscHRyOworKyAg ICBzcmMgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oc3BhQnVmZmVyLT5kYXRhc1swXS5kYXRhKTsK KysgIH0gZWxzZSB7CisgICAgIHJldHVybjsKKyAgIH0KKworLSAgdWludDMyX3QgbWF4U2l6ZSA9 IHNwYUJ1ZmZlci0+ZGF0YXNbMF0ubWF4c2l6ZTsKKy0gIGludDMyX3Qgc3JjU3RyaWRlID0gc3Bh QnVmZmVyLT5kYXRhc1swXS5jaHVuay0+c3RyaWRlOworKyAgaWYgKCFzcmMpIHsKKysgICAgcmV0 dXJuOworKyAgfQorKworKyAgRGVza3RvcFNpemUgcHJldl9jcm9wX3NpemUgPSBEZXNrdG9wU2l6 ZSgwLCAwKTsKKysgIGlmICh2aWRlb19jcm9wX3NpemVfaW5pdGlhbGl6ZWRfKSB7CisrICAgIHBy ZXZfY3JvcF9zaXplID0gdmlkZW9fY3JvcF9zaXplXzsKKysgIH0KKysKKysgIGlmICgodmlkZW9f Y3JvcCA9IHN0YXRpY19jYXN0PHN0cnVjdCBzcGFfbWV0YV9yZWdpb24qPigKKysgICAgICAgICAg IHNwYV9idWZmZXJfZmluZF9tZXRhX2RhdGEoc3BhQnVmZmVyLCBTUEFfTUVUQV9WaWRlb0Nyb3As IHNpemVvZigqdmlkZW9fY3JvcCkpKSkpIHsKKysgICAgUlRDX0RDSEVDSyh2aWRlb19jcm9wLT5y ZWdpb24uc2l6ZS53aWR0aCA8PSBkZXNrdG9wX3NpemVfLndpZHRoKCkgJiYKKysgICAgICAgICAg ICAgICB2aWRlb19jcm9wLT5yZWdpb24uc2l6ZS5oZWlnaHQgPD0gZGVza3RvcF9zaXplXy5oZWln aHQoKSk7CisrICAgIGlmICgodmlkZW9fY3JvcC0+cmVnaW9uLnNpemUud2lkdGggIT0gZGVza3Rv cF9zaXplXy53aWR0aCgpIHx8CisrICAgICAgICB2aWRlb19jcm9wLT5yZWdpb24uc2l6ZS5oZWln aHQgIT0gZGVza3RvcF9zaXplXy5oZWlnaHQoKSkgJiYgdmlkZW9fY3JvcC0+cmVnaW9uLnNpemUu d2lkdGggJiYgdmlkZW9fY3JvcC0+cmVnaW9uLnNpemUuaGVpZ2h0KSB7CisrICAgICAgdmlkZW9f Y3JvcF9zaXplXyA9IERlc2t0b3BTaXplKHZpZGVvX2Nyb3AtPnJlZ2lvbi5zaXplLndpZHRoLCB2 aWRlb19jcm9wLT5yZWdpb24uc2l6ZS5oZWlnaHQpOworKyAgICAgIHZpZGVvX2Nyb3Bfc2l6ZV9p bml0aWFsaXplZF8gPSB0cnVlOworKyAgICB9IGVsc2UgeworKyAgICAgIHZpZGVvX2Nyb3Bfc2l6 ZV9pbml0aWFsaXplZF8gPSBmYWxzZTsKKysgICAgfQorKyAgfSBlbHNlIHsKKysgICAgdmlkZW9f Y3JvcF9zaXplX2luaXRpYWxpemVkXyA9IGZhbHNlOworKyAgfQorKworKyAgc2l6ZV90IGZyYW1l X3NpemU7CisrICBpZiAodmlkZW9fY3JvcF9zaXplX2luaXRpYWxpemVkXykgeworKyAgICBmcmFt ZV9zaXplID0KKysgICAgICAgIHZpZGVvX2Nyb3Bfc2l6ZV8ud2lkdGgoKSAqIHZpZGVvX2Nyb3Bf c2l6ZV8uaGVpZ2h0KCkgKiBrQnl0ZXNQZXJQaXhlbDsKKysgIH0gZWxzZSB7CisrICAgIGZyYW1l X3NpemUgPQorKyAgICAgICAgZGVza3RvcF9zaXplXy53aWR0aCgpICogZGVza3RvcF9zaXplXy5o ZWlnaHQoKSAqIGtCeXRlc1BlclBpeGVsOworKyAgfQorKworKyAgaWYgKCFjdXJyZW50X2ZyYW1l XyB8fAorKyAgICAgICh2aWRlb19jcm9wX3NpemVfaW5pdGlhbGl6ZWRfICYmICF2aWRlb19jcm9w X3NpemVfLmVxdWFscyhwcmV2X2Nyb3Bfc2l6ZSkpKSB7CisrICAgIGN1cnJlbnRfZnJhbWVfID0g c3RkOjptYWtlX3VuaXF1ZTx1aW50OF90W10+KGZyYW1lX3NpemUpOworKyAgfQorKyAgUlRDX0RD SEVDSyhjdXJyZW50X2ZyYW1lXyAhPSBudWxscHRyKTsKKysKKysgIGNvbnN0IGludDMyX3QgZHN0 U3RyaWRlID0gdmlkZW9fY3JvcF9zaXplX2luaXRpYWxpemVkXworKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPyB2aWRlb19jcm9wX3NpemVfLndpZHRoKCkgKiBrQnl0ZXNQZXJQaXhl bAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBkZXNrdG9wX3NpemVfLndpZHRo KCkgKiBrQnl0ZXNQZXJQaXhlbDsKKysgIGNvbnN0IGludDMyX3Qgc3JjU3RyaWRlID0gc3BhQnVm ZmVyLT5kYXRhc1swXS5jaHVuay0+c3RyaWRlOworKworICAgaWYgKHNyY1N0cmlkZSAhPSAoZGVz a3RvcF9zaXplXy53aWR0aCgpICoga0J5dGVzUGVyUGl4ZWwpKSB7CisgICAgIFJUQ19MT0coTFNf RVJST1IpIDw8ICJHb3QgYnVmZmVyIHdpdGggc3RyaWRlIGRpZmZlcmVudCBmcm9tIHNjcmVlbiBz dHJpZGU6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgPDwgc3JjU3RyaWRlCitAQCAtMzYxLDIx ICs0MDAsNDAgQEAgdm9pZCBCYXNlQ2FwdHVyZXJQaXBlV2lyZTo6SGFuZGxlQnVmZmVyKHB3X2J1 ZmZlciogYnVmZmVyKSB7CisgICAgIHJldHVybjsKKyAgIH0KKworLSAgaWYgKCFjdXJyZW50X2Zy YW1lXykgeworLSAgICBjdXJyZW50X2ZyYW1lXyA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtYWxs b2MobWF4U2l6ZSkpOworKyAgZHN0ID0gY3VycmVudF9mcmFtZV8uZ2V0KCk7CisrCisrICAvLyBB ZGp1c3Qgc291cmNlIGNvbnRlbnQgYmFzZWQgb24gY3JvcCB2aWRlbyBwb3NpdGlvbgorKyAgaWYg KHZpZGVvX2Nyb3Bfc2l6ZV9pbml0aWFsaXplZF8gJiYKKysgICAgICAodmlkZW9fY3JvcC0+cmVn aW9uLnBvc2l0aW9uLnkgKyB2aWRlb19jcm9wX3NpemVfLmhlaWdodCgpIDw9IGRlc2t0b3Bfc2l6 ZV8uaGVpZ2h0KCkpKSB7CisrICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdmlkZW9fY3JvcC0+cmVn aW9uLnBvc2l0aW9uLnk7ICsraSkgeworKyAgICAgIHNyYyArPSBzcmNTdHJpZGU7CisrICAgIH0K KysgIH0KKysgIGNvbnN0IGludCB4T2Zmc2V0ID0KKysgICAgICB2aWRlb19jcm9wX3NpemVfaW5p dGlhbGl6ZWRfICYmICh2aWRlb19jcm9wLT5yZWdpb24ucG9zaXRpb24ueCArIHZpZGVvX2Nyb3Bf c2l6ZV8ud2lkdGgoKSA8PQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2t0b3Bfc2l6 ZV8ud2lkdGgoKSkKKysgICAgICAgICAgPyB2aWRlb19jcm9wLT5yZWdpb24ucG9zaXRpb24ueCAq IGtCeXRlc1BlclBpeGVsCisrICAgICAgICAgIDogMDsKKysgIGNvbnN0IGludCBoZWlnaHQgPSB2 aWRlb19jcm9wX3NpemVfaW5pdGlhbGl6ZWRfID8gdmlkZW9fY3JvcF9zaXplXy5oZWlnaHQoKSA6 IGRlc2t0b3Bfc2l6ZV8uaGVpZ2h0KCk7CisrICBmb3IgKGludCBpID0gMDsgaSA8IGhlaWdodDsg KytpKSB7CisrICAgIC8vIEFkanVzdCBzb3VyY2UgY29udGVudCBiYXNlZCBvbiBjcm9wIHZpZGVv IHBvc2l0aW9uIGlmIG5lZWRlZAorKyAgICBzcmMgKz0geE9mZnNldDsKKysgICAgc3RkOjptZW1j cHkoZHN0LCBzcmMsIGRzdFN0cmlkZSk7CisrICAgIC8vIElmIGJvdGggc2lkZXMgZGVjaWRlZCB0 byBnbyB3aXRoIHRoZSBSR0J4IGZvcm1hdCB3ZSBuZWVkIHRvIGNvbnZlcnQgaXQgdG8KKysgICAg Ly8gQkdSeCB0byBtYXRjaCBjb2xvciBmb3JtYXQgZXhwZWN0ZWQgYnkgV2ViUlRDLgorKyAgICBp ZiAoc3BhX3ZpZGVvX2Zvcm1hdF8uZm9ybWF0ID09IFNQQV9WSURFT19GT1JNQVRfUkdCeCB8fAor KyAgICAgICAgc3BhX3ZpZGVvX2Zvcm1hdF8uZm9ybWF0ID09IFNQQV9WSURFT19GT1JNQVRfUkdC QSkgeworKyAgICAgIENvbnZlcnRSR0J4VG9CR1J4KGRzdCwgZHN0U3RyaWRlKTsKKysgICAgfQor KyAgICBzcmMgKz0gc3JjU3RyaWRlIC0geE9mZnNldDsKKysgICAgZHN0ICs9IGRzdFN0cmlkZTsK KyAgIH0KKy0gIFJUQ19EQ0hFQ0soY3VycmVudF9mcmFtZV8gIT0gbnVsbHB0cik7CisKKy0gIC8v IElmIGJvdGggc2lkZXMgZGVjaWRlZCB0byBnbyB3aXRoIHRoZSBSR0J4IGZvcm1hdCB3ZSBuZWVk IHRvIGNvbnZlcnQgaXQgdG8KKy0gIC8vIEJHUnggdG8gbWF0Y2ggY29sb3IgZm9ybWF0IGV4cGVj dGVkIGJ5IFdlYlJUQy4KKy0gIGlmIChzcGFfdmlkZW9fZm9ybWF0Xy0+Zm9ybWF0ID09IHB3X3R5 cGVfLT52aWRlb19mb3JtYXQuUkdCeCkgeworLSAgICB1aW50OF90KiB0ZW1wRnJhbWUgPSBzdGF0 aWNfY2FzdDx1aW50OF90Kj4obWFsbG9jKG1heFNpemUpKTsKKy0gICAgc3RkOjptZW1jcHkodGVt cEZyYW1lLCBzcmMsIG1heFNpemUpOworLSAgICBDb252ZXJ0UkdCeFRvQkdSeCh0ZW1wRnJhbWUs IG1heFNpemUpOworLSAgICBzdGQ6Om1lbWNweShjdXJyZW50X2ZyYW1lXywgdGVtcEZyYW1lLCBt YXhTaXplKTsKKy0gICAgZnJlZSh0ZW1wRnJhbWUpOworLSAgfSBlbHNlIHsKKy0gICAgc3RkOjpt ZW1jcHkoY3VycmVudF9mcmFtZV8sIHNyYywgbWF4U2l6ZSk7CisrICBpZiAobWFwKSB7CisrICAg IGlmIChzcGFCdWZmZXItPmRhdGFzWzBdLnR5cGUgPT0gU1BBX0RBVEFfRG1hQnVmKSB7CisrICAg ICAgU3luY0RtYUJ1ZihzcGFCdWZmZXItPmRhdGFzWzBdLmZkLCBETUFfQlVGX1NZTkNfRU5EKTsK KysgICAgfQorKyAgICBtdW5tYXAobWFwLCBzcGFCdWZmZXItPmRhdGFzWzBdLm1heHNpemUgKyBz cGFCdWZmZXItPmRhdGFzWzBdLm1hcG9mZnNldCk7CisgICB9CisgfQorCitAQCAtNzI1LDEwICs3 ODMsNyBAQCB2b2lkIEJhc2VDYXB0dXJlclBpcGVXaXJlOjpPblN0YXJ0UmVxdWVzdFJlc3BvbnNl U2lnbmFsKAorICAgICAgIGdfdmFyaWFudF9nZXQodmFyaWFudCwgIih1QGF7c3Z9KSIsICZzdHJl YW1faWQsICZvcHRpb25zKTsKKyAgICAgICBSVENfRENIRUNLKG9wdGlvbnMgIT0gbnVsbHB0cik7 CisKKy0gICAgICBnX3ZhcmlhbnRfbG9va3VwKG9wdGlvbnMsICJzaXplIiwgIihpaSkiLCAmd2lk dGgsICZoZWlnaHQpOworLQorLSAgICAgIHRoYXQtPmRlc2t0b3Bfc2l6ZV8uc2V0KHdpZHRoLCBo ZWlnaHQpOworLQorKyAgICAgIHRoYXQtPnB3X3N0cmVhbV9ub2RlX2lkXyA9IHN0cmVhbV9pZDsK KyAgICAgICBnX3ZhcmlhbnRfdW5yZWYob3B0aW9ucyk7CisgICAgICAgZ192YXJpYW50X3VucmVm KHZhcmlhbnQpOworICAgICB9CitAQCAtODEzLDEwICs4NjgsMTUgQEAgdm9pZCBCYXNlQ2FwdHVy ZXJQaXBlV2lyZTo6Q2FwdHVyZUZyYW1lKCkgeworICAgICByZXR1cm47CisgICB9CisKKy0gIHN0 ZDo6dW5pcXVlX3B0cjxEZXNrdG9wRnJhbWU+IHJlc3VsdChuZXcgQmFzaWNEZXNrdG9wRnJhbWUo ZGVza3RvcF9zaXplXykpOworKyAgRGVza3RvcFNpemUgZnJhbWVfc2l6ZSA9IGRlc2t0b3Bfc2l6 ZV87CisrICBpZiAodmlkZW9fY3JvcF9zaXplX2luaXRpYWxpemVkXykgeworKyAgICBmcmFtZV9z aXplID0gdmlkZW9fY3JvcF9zaXplXzsKKysgIH0KKysKKysgIHN0ZDo6dW5pcXVlX3B0cjxEZXNr dG9wRnJhbWU+IHJlc3VsdChuZXcgQmFzaWNEZXNrdG9wRnJhbWUoZnJhbWVfc2l6ZSkpOworICAg cmVzdWx0LT5Db3B5UGl4ZWxzRnJvbSgKKy0gICAgICBjdXJyZW50X2ZyYW1lXywgKGRlc2t0b3Bf c2l6ZV8ud2lkdGgoKSAqIGtCeXRlc1BlclBpeGVsKSwKKy0gICAgICBEZXNrdG9wUmVjdDo6TWFr ZVdIKGRlc2t0b3Bfc2l6ZV8ud2lkdGgoKSwgZGVza3RvcF9zaXplXy5oZWlnaHQoKSkpOworKyAg ICAgIGN1cnJlbnRfZnJhbWVfLmdldCgpLCAoZnJhbWVfc2l6ZS53aWR0aCgpICoga0J5dGVzUGVy UGl4ZWwpLAorKyAgICAgIERlc2t0b3BSZWN0OjpNYWtlV0goZnJhbWVfc2l6ZS53aWR0aCgpLCBm cmFtZV9zaXplLmhlaWdodCgpKSk7CisgICBpZiAoIXJlc3VsdCkgeworICAgICBjYWxsYmFja18t Pk9uQ2FwdHVyZVJlc3VsdChSZXN1bHQ6OkVSUk9SX1RFTVBPUkFSWSwgbnVsbHB0cik7CisgICAg IHJldHVybjsKK0BAIC04MzcsNCArODk3LDIyIEBAIGJvb2wgQmFzZUNhcHR1cmVyUGlwZVdpcmU6 OlNlbGVjdFNvdXJjZShTb3VyY2VJZCBpZCkgeworICAgcmV0dXJuIHRydWU7CisgfQorCisrLy8g c3RhdGljCisrc3RkOjp1bmlxdWVfcHRyPERlc2t0b3BDYXB0dXJlcj4KKytCYXNlQ2FwdHVyZXJQ aXBlV2lyZTo6Q3JlYXRlUmF3U2NyZWVuQ2FwdHVyZXIoCisrICAgIGNvbnN0IERlc2t0b3BDYXB0 dXJlT3B0aW9ucyYgb3B0aW9ucykgeworKyAgc3RkOjp1bmlxdWVfcHRyPEJhc2VDYXB0dXJlclBp cGVXaXJlPiBjYXB0dXJlciA9CisrICAgICAgc3RkOjptYWtlX3VuaXF1ZTxCYXNlQ2FwdHVyZXJQ aXBlV2lyZT4oQmFzZUNhcHR1cmVyUGlwZVdpcmU6OkNhcHR1cmVTb3VyY2VUeXBlOjprQW55KTsK KysgIHJldHVybiBzdGQ6Om1vdmUoY2FwdHVyZXIpO30KKysKKysvLyBzdGF0aWMKKytzdGQ6OnVu aXF1ZV9wdHI8RGVza3RvcENhcHR1cmVyPgorK0Jhc2VDYXB0dXJlclBpcGVXaXJlOjpDcmVhdGVS YXdXaW5kb3dDYXB0dXJlcigKKysgICAgY29uc3QgRGVza3RvcENhcHR1cmVPcHRpb25zJiBvcHRp b25zKSB7CisrCisrICBzdGQ6OnVuaXF1ZV9wdHI8QmFzZUNhcHR1cmVyUGlwZVdpcmU+IGNhcHR1 cmVyID0KKysgICAgICBzdGQ6Om1ha2VfdW5pcXVlPEJhc2VDYXB0dXJlclBpcGVXaXJlPihCYXNl Q2FwdHVyZXJQaXBlV2lyZTo6Q2FwdHVyZVNvdXJjZVR5cGU6OmtBbnkpOworKyAgcmV0dXJuIHN0 ZDo6bW92ZShjYXB0dXJlcik7CisrfQorKworIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKy0tLSBt ZWRpYS93ZWJydGMvdHJ1bmsvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L2Jh c2VfY2FwdHVyZXJfcGlwZXdpcmUuaAorKysrIG1lZGlhL3dlYnJ0Yy90cnVuay93ZWJydGMvbW9k dWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvYmFzZV9jYXB0dXJlcl9waXBld2lyZS5oCitAQCAt MjIsMTcgKzIyLDEzIEBACisKKyBuYW1lc3BhY2Ugd2VicnRjIHsKKworLWNsYXNzIFBpcGVXaXJl VHlwZSB7CistIHB1YmxpYzoKKy0gIHNwYV90eXBlX21lZGlhX3R5cGUgbWVkaWFfdHlwZTsKKy0g IHNwYV90eXBlX21lZGlhX3N1YnR5cGUgbWVkaWFfc3VidHlwZTsKKy0gIHNwYV90eXBlX2Zvcm1h dF92aWRlbyBmb3JtYXRfdmlkZW87CistICBzcGFfdHlwZV92aWRlb19mb3JtYXQgdmlkZW9fZm9y bWF0OworLX07CistCisgY2xhc3MgQmFzZUNhcHR1cmVyUGlwZVdpcmUgOiBwdWJsaWMgRGVza3Rv cENhcHR1cmVyIHsKKyAgcHVibGljOgorLSAgZW51bSBDYXB0dXJlU291cmNlVHlwZSB7IFNjcmVl biA9IDEsIFdpbmRvdyB9OworKyAgZW51bSBDYXB0dXJlU291cmNlVHlwZSA6IHVpbnQzMl90IHsK KysgICAga1NjcmVlbiA9IDBiMDEsCisrICAgIGtXaW5kb3cgPSAwYjEwLAorKyAgICBrQW55ID0g MGIxMQorKyAgfTsKKworICAgZXhwbGljaXQgQmFzZUNhcHR1cmVyUGlwZVdpcmUoQ2FwdHVyZVNv dXJjZVR5cGUgc291cmNlX3R5cGUpOworICAgfkJhc2VDYXB0dXJlclBpcGVXaXJlKCkgb3ZlcnJp ZGU7CitAQCAtNDMsMjggKzM5LDMyIEBAIGNsYXNzIEJhc2VDYXB0dXJlclBpcGVXaXJlIDogcHVi bGljIERlc2t0b3BDYXB0dXJlciB7CisgICBib29sIEdldFNvdXJjZUxpc3QoU291cmNlTGlzdCog c291cmNlcykgb3ZlcnJpZGU7CisgICBib29sIFNlbGVjdFNvdXJjZShTb3VyY2VJZCBpZCkgb3Zl cnJpZGU7CisKKysgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVza3RvcENhcHR1cmVyPiBDcmVh dGVSYXdTY3JlZW5DYXB0dXJlcigKKysgICAgICBjb25zdCBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMm IG9wdGlvbnMpOworKworKyAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZXNrdG9wQ2FwdHVyZXI+ IENyZWF0ZVJhd1dpbmRvd0NhcHR1cmVyKAorKyAgICAgIGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0 aW9ucyYgb3B0aW9ucyk7CisrCisgIHByaXZhdGU6CisgICAvLyBQaXBlV2lyZSB0eXBlcyAtLT4K KysgIHB3X2NvbnRleHQqIHB3X2NvbnRleHRfID0gbnVsbHB0cjsKKyAgIHB3X2NvcmUqIHB3X2Nv cmVfID0gbnVsbHB0cjsKKy0gIHB3X3R5cGUqIHB3X2NvcmVfdHlwZV8gPSBudWxscHRyOworICAg cHdfc3RyZWFtKiBwd19zdHJlYW1fID0gbnVsbHB0cjsKKy0gIHB3X3JlbW90ZSogcHdfcmVtb3Rl XyA9IG51bGxwdHI7CistICBwd19sb29wKiBwd19sb29wXyA9IG51bGxwdHI7CisgICBwd190aHJl YWRfbG9vcCogcHdfbWFpbl9sb29wXyA9IG51bGxwdHI7CistICBQaXBlV2lyZVR5cGUqIHB3X3R5 cGVfID0gbnVsbHB0cjsKKworKyAgc3BhX2hvb2sgc3BhX2NvcmVfbGlzdGVuZXJfID0ge307Cisg ICBzcGFfaG9vayBzcGFfc3RyZWFtX2xpc3RlbmVyXyA9IHt9OworLSAgc3BhX2hvb2sgc3BhX3Jl bW90ZV9saXN0ZW5lcl8gPSB7fTsKKworKyAgcHdfY29yZV9ldmVudHMgcHdfY29yZV9ldmVudHNf ID0ge307CisgICBwd19zdHJlYW1fZXZlbnRzIHB3X3N0cmVhbV9ldmVudHNfID0ge307CistICBw d19yZW1vdGVfZXZlbnRzIHB3X3JlbW90ZV9ldmVudHNfID0ge307CisKKy0gIHNwYV92aWRlb19p bmZvX3Jhdyogc3BhX3ZpZGVvX2Zvcm1hdF8gPSBudWxscHRyOworKyAgc3RydWN0IHNwYV92aWRl b19pbmZvX3JhdyBzcGFfdmlkZW9fZm9ybWF0XzsKKworKyAgZ3VpbnQzMiBwd19zdHJlYW1fbm9k ZV9pZF8gPSAwOworICAgZ2ludDMyIHB3X2ZkXyA9IC0xOworCisgICBDYXB0dXJlU291cmNlVHlw ZSBjYXB0dXJlX3NvdXJjZV90eXBlXyA9CistICAgICAgQmFzZUNhcHR1cmVyUGlwZVdpcmU6OkNh cHR1cmVTb3VyY2VUeXBlOjpTY3JlZW47CisrICAgICAgQmFzZUNhcHR1cmVyUGlwZVdpcmU6OkNh cHR1cmVTb3VyY2VUeXBlOjprQW55OworCisgICAvLyA8LS0gZW5kIG9mIFBpcGVXaXJlIHR5cGVz CisKK0BAIC03OCwzMyArNzgsMzcgQEAgY2xhc3MgQmFzZUNhcHR1cmVyUGlwZVdpcmUgOiBwdWJs aWMgRGVza3RvcENhcHR1cmVyIHsKKyAgIGd1aW50IHNvdXJjZXNfcmVxdWVzdF9zaWduYWxfaWRf ID0gMDsKKyAgIGd1aW50IHN0YXJ0X3JlcXVlc3Rfc2lnbmFsX2lkXyA9IDA7CisKKysgIGJvb2wg dmlkZW9fY3JvcF9zaXplX2luaXRpYWxpemVkXyA9IGZhbHNlOworKyAgRGVza3RvcFNpemUgdmlk ZW9fY3JvcF9zaXplXzs7CisgICBEZXNrdG9wU2l6ZSBkZXNrdG9wX3NpemVfID0ge307CisgICBE ZXNrdG9wQ2FwdHVyZU9wdGlvbnMgb3B0aW9uc18gPSB7fTsKKworLSAgdWludDhfdCogY3VycmVu dF9mcmFtZV8gPSBudWxscHRyOworKyAgc3RkOjp1bmlxdWVfcHRyPHVpbnQ4X3RbXT4gY3VycmVu dF9mcmFtZV87CisgICBDYWxsYmFjayogY2FsbGJhY2tfID0gbnVsbHB0cjsKKworICAgYm9vbCBw b3J0YWxfaW5pdF9mYWlsZWRfID0gZmFsc2U7CisKKyAgIHZvaWQgSW5pdFBvcnRhbCgpOworICAg dm9pZCBJbml0UGlwZVdpcmUoKTsKKy0gIHZvaWQgSW5pdFBpcGVXaXJlVHlwZXMoKTsKKworLSAg dm9pZCBDcmVhdGVSZWNlaXZpbmdTdHJlYW0oKTsKKysgIHB3X3N0cmVhbSogQ3JlYXRlUmVjZWl2 aW5nU3RyZWFtKCk7CisgICB2b2lkIEhhbmRsZUJ1ZmZlcihwd19idWZmZXIqIGJ1ZmZlcik7CisK KyAgIHZvaWQgQ29udmVydFJHQnhUb0JHUngodWludDhfdCogZnJhbWUsIHVpbnQzMl90IHNpemUp OworCistICBzdGF0aWMgdm9pZCBPblN0YXRlQ2hhbmdlZCh2b2lkKiBkYXRhLAorLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcHdfcmVtb3RlX3N0YXRlIG9sZF9zdGF0ZSwKKy0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHB3X3JlbW90ZV9zdGF0ZSBzdGF0ZSwKKy0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGVycm9yKTsKKysgIHN0YXRpYyB2b2lkIFN5 bmNEbWFCdWYoaW50IGZkLCB1aW50NjRfdCBzdGFydF9vcl9lbmQpOworKyAgc3RhdGljIHZvaWQg T25Db3JlRXJyb3Iodm9pZCAqZGF0YSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz Ml90IGlkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNlcSwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCByZXMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBjaGFyICptZXNzYWdlKTsKKysgIHN0YXRpYyB2b2lkIE9uU3RyZWFtUGFyYW1DaGFuZ2VkKHZv aWQgKmRhdGEsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBp ZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBzcGFf cG9kICpmb3JtYXQpOworICAgc3RhdGljIHZvaWQgT25TdHJlYW1TdGF0ZUNoYW5nZWQodm9pZCog ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB3X3N0cmVhbV9zdGF0 ZSBvbGRfc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwd19zdHJl YW1fc3RhdGUgc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBjaGFyKiBlcnJvcl9tZXNzYWdlKTsKKy0KKy0gIHN0YXRpYyB2b2lkIE9uU3RyZWFtRm9ybWF0 Q2hhbmdlZCh2b2lkKiBkYXRhLCBjb25zdCBzdHJ1Y3Qgc3BhX3BvZCogZm9ybWF0KTsKKyAgIHN0 YXRpYyB2b2lkIE9uU3RyZWFtUHJvY2Vzcyh2b2lkKiBkYXRhKTsKKyAgIHN0YXRpYyB2b2lkIE9u TmV3QnVmZmVyKHZvaWQqIGRhdGEsIHVpbnQzMl90IGlkKTsKKworLS0tIG1lZGlhL3dlYnJ0Yy90 cnVuay93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2NyZWVuX2NhcHR1cmVy X3BpcGV3aXJlLmNjCisrKysgbWVkaWEvd2VicnRjL3RydW5rL3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0 b3BfY2FwdHVyZS9saW51eC9zY3JlZW5fY2FwdHVyZXJfcGlwZXdpcmUuY2MKK0BAIC0xNSw3ICsx NSw3IEBACisgbmFtZXNwYWNlIHdlYnJ0YyB7CisKKyBTY3JlZW5DYXB0dXJlclBpcGVXaXJlOjpT Y3JlZW5DYXB0dXJlclBpcGVXaXJlKCkKKy0gICAgOiBCYXNlQ2FwdHVyZXJQaXBlV2lyZShCYXNl Q2FwdHVyZXJQaXBlV2lyZTo6Q2FwdHVyZVNvdXJjZVR5cGU6OlNjcmVlbikge30KKysgICAgOiBC YXNlQ2FwdHVyZXJQaXBlV2lyZShCYXNlQ2FwdHVyZXJQaXBlV2lyZTo6Q2FwdHVyZVNvdXJjZVR5 cGU6OmtTY3JlZW4pIHt9CisgU2NyZWVuQ2FwdHVyZXJQaXBlV2lyZTo6flNjcmVlbkNhcHR1cmVy UGlwZVdpcmUoKSB7fQorCisgLy8gc3RhdGljCistLS0gbWVkaWEvd2VicnRjL3RydW5rL3dlYnJ0 Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC93aW5kb3dfY2FwdHVyZXJfcGlwZXdpcmUu Y2MKKysrKyBtZWRpYS93ZWJydGMvdHJ1bmsvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJl L2xpbnV4L3dpbmRvd19jYXB0dXJlcl9waXBld2lyZS5jYworQEAgLTE1LDcgKzE1LDcgQEAKKyBu YW1lc3BhY2Ugd2VicnRjIHsKKworIFdpbmRvd0NhcHR1cmVyUGlwZVdpcmU6OldpbmRvd0NhcHR1 cmVyUGlwZVdpcmUoKQorLSAgICA6IEJhc2VDYXB0dXJlclBpcGVXaXJlKEJhc2VDYXB0dXJlclBp cGVXaXJlOjpDYXB0dXJlU291cmNlVHlwZTo6V2luZG93KSB7fQorKyAgICA6IEJhc2VDYXB0dXJl clBpcGVXaXJlKEJhc2VDYXB0dXJlclBpcGVXaXJlOjpDYXB0dXJlU291cmNlVHlwZTo6a1dpbmRv dykge30KKyBXaW5kb3dDYXB0dXJlclBpcGVXaXJlOjp+V2luZG93Q2FwdHVyZXJQaXBlV2lyZSgp IHt9CisKKyAvLyBzdGF0aWMKKy0tLSBtZWRpYS93ZWJydGMvdHJ1bmsvd2VicnRjL21vZHVsZXMv ZGVza3RvcF9jYXB0dXJlL3NjcmVlbl9jYXB0dXJlcl9saW51eC5jYworKysrIG1lZGlhL3dlYnJ0 Yy90cnVuay93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvc2NyZWVuX2NhcHR1cmVyX2xp bnV4LmNjCitAQCAtMjYsNyArMjYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGVza3RvcENhcHR1cmVy PiBEZXNrdG9wQ2FwdHVyZXI6OkNyZWF0ZVJhd1NjcmVlbkNhcHR1cmVyKAorICAgICBjb25zdCBE ZXNrdG9wQ2FwdHVyZU9wdGlvbnMmIG9wdGlvbnMpIHsKKyAjaWYgZGVmaW5lZChXRUJSVENfVVNF X1BJUEVXSVJFKQorICAgaWYgKG9wdGlvbnMuYWxsb3dfcGlwZXdpcmUoKSAmJiBEZXNrdG9wQ2Fw dHVyZXI6OklzUnVubmluZ1VuZGVyV2F5bGFuZCgpKSB7CistICAgIHJldHVybiBTY3JlZW5DYXB0 dXJlclBpcGVXaXJlOjpDcmVhdGVSYXdTY3JlZW5DYXB0dXJlcihvcHRpb25zKTsKKysgICAgcmV0 dXJuIEJhc2VDYXB0dXJlclBpcGVXaXJlOjpDcmVhdGVSYXdTY3JlZW5DYXB0dXJlcihvcHRpb25z KTsKKyAgIH0KKyAjZW5kaWYgIC8vIGRlZmluZWQoV0VCUlRDX1VTRV9QSVBFV0lSRSkKKworLS0t IG1lZGlhL3dlYnJ0Yy90cnVuay93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvd2luZG93 X2NhcHR1cmVyX2xpbnV4LmNjCisrKysgbWVkaWEvd2VicnRjL3RydW5rL3dlYnJ0Yy9tb2R1bGVz L2Rlc2t0b3BfY2FwdHVyZS93aW5kb3dfY2FwdHVyZXJfbGludXguY2MKK0BAIC0yNiw3ICsyNiw3 IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZXNrdG9wQ2FwdHVyZXI+IERlc2t0b3BDYXB0dXJlcjo6Q3Jl YXRlUmF3V2luZG93Q2FwdHVyZXIoCisgICAgIGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYg b3B0aW9ucykgeworICNpZiBkZWZpbmVkKFdFQlJUQ19VU0VfUElQRVdJUkUpCisgICBpZiAob3B0 aW9ucy5hbGxvd19waXBld2lyZSgpICYmIERlc2t0b3BDYXB0dXJlcjo6SXNSdW5uaW5nVW5kZXJX YXlsYW5kKCkpIHsKKy0gICAgcmV0dXJuIFdpbmRvd0NhcHR1cmVyUGlwZVdpcmU6OkNyZWF0ZVJh d1dpbmRvd0NhcHR1cmVyKG9wdGlvbnMpOworKyAgICByZXR1cm4gQmFzZUNhcHR1cmVyUGlwZVdp cmU6OkNyZWF0ZVJhd1dpbmRvd0NhcHR1cmVyKG9wdGlvbnMpOworICAgfQorICNlbmRpZiAgLy8g ZGVmaW5lZChXRUJSVENfVVNFX1BJUEVXSVJFKQorCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZpcmVm b3gvdGVtcGxhdGUgYi9zcmNwa2dzL2ZpcmVmb3gvdGVtcGxhdGUKaW5kZXggNGQ5Y2MwNWU5OWQu LjRlMGNlYzEyMTk4IDEwMDY0NAotLS0gYS9zcmNwa2dzL2ZpcmVmb3gvdGVtcGxhdGUKKysrIGIv c3JjcGtncy9maXJlZm94L3RlbXBsYXRlCkBAIC0zLDcgKzMsNyBAQAogIyBUSElTIFBLRyBNVVNU IEJFIFNZTkNIUk9OSVpFRCBXSVRIICJzcmNwa2dzL2ZpcmVmb3gtaTE4biIuCiAjCiBwa2duYW1l PWZpcmVmb3gKLXZlcnNpb249NzguMC4xCit2ZXJzaW9uPTc4LjAuMgogcmV2aXNpb249MQogYnVp bGRfaGVscGVyPSJydXN0Igogc2hvcnRfZGVzYz0iTW96aWxsYSBGaXJlZm94IHdlYiBicm93c2Vy IgpAQCAtMTEsMTQgKzExLDE0IEBAIG1haW50YWluZXI9IkpvaGFubmVzIDxqb2hhbm5lcy5icmVj aHRtYW5uQGdtYWlsLmNvbT4iCiBsaWNlbnNlPSJNUEwtMi4wLCBHUEwtMi4wLW9yLWxhdGVyLCBM R1BMLTIuMS1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL3d3dy5tb3ppbGxhLm9yZy9maXJl Zm94LyIKIGRpc3RmaWxlcz0iJHtNT1pJTExBX1NJVEV9LyR7cGtnbmFtZX0vcmVsZWFzZXMvJHt2 ZXJzaW9ufS9zb3VyY2UvJHtwa2duYW1lfS0ke3ZlcnNpb259LnNvdXJjZS50YXIueHoiCi1jaGVj a3N1bT00OTRkMjc3YjEyMDAyOGUwMzZlMmFlZTNmNjU4ZDc5YWZjODk1NDU3ZGM2YWFkYjFjMDJm MDU0N2VmMWQ2NmNhCitjaGVja3N1bT0xYWEwMGVjNmQ0MGE3NzFkNTI1Yjg2N2IxNzViZTI4ZWRh MDk2YmVjYzc0NTg3NWJjY2ViMTMzYTk4NTc1MGZjCiAKIGxpYjMyZGlzYWJsZWQ9eWVzCiAKIGhv c3RtYWtlZGVwZW5kcz0iYXV0b2NvbmYyMTMgdW56aXAgemlwIHBrZy1jb25maWcgcGVybCBweXRo b24zIHlhc20gcnVzdCBjYXJnbwogIGxsdm0gY2xhbmcgbm9kZWpzLWx0cy0xMCBjYmluZGdlbiBw eXRob24gbmFzbSB3aGljaCB0YXIiCiBtYWtlZGVwZW5kcz0ibnNzLWRldmVsIGxpYmpwZWctdHVy Ym8tZGV2ZWwgZ3RrKy1kZXZlbCBndGsrMy1kZXZlbCBpY3UtZGV2ZWwKLSBwaXhtYW4tZGV2ZWwg bGliZXZlbnQtZGV2ZWwgbGlibm90aWZ5LWRldmVsIGxpYnZweC1kZXZlbAorIHBpeG1hbi1kZXZl bCBsaWJldmVudC1kZXZlbCBsaWJub3RpZnktZGV2ZWwgbGlidnB4LWRldmVsIHBpcGV3aXJlLWRl dmVsCiAgbGliWHJlbmRlci1kZXZlbCBsaWJYY29tcG9zaXRlLWRldmVsIGxpYlNNLWRldmVsIGxp Ylh0LWRldmVsIHJ1c3Qtc3RkCiAgbGliWGRhbWFnZS1kZXZlbCBmcmVldHlwZS1kZXZlbCAkKHZv cHRfaWYgYWxzYSBhbHNhLWxpYi1kZXZlbCkKICAkKHZvcHRfaWYgZGJ1cyBkYnVzLWdsaWItZGV2 ZWwpICQodm9wdF9pZiBwdWxzZWF1ZGlvIHB1bHNlYXVkaW8tZGV2ZWwpCg== --===============0290197711273952171==--