From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Nicolas Chauvet To: git-commits@fedoraproject.org Subject: [rpms/opencv] opencv5: Update to 2.3.1 Date: Fri, 28 Aug 2026 13:30:00 GMT Message-ID: <178792380049.1.14121753210117612447.rpms-opencv-04c7529f0522@fedoraproject.org> List-ID: X-Git-Repo: rpms/opencv X-Git-Branch: opencv5 X-Git-Rev: 04c7529f052246cca23182198a4638eabf7d4a60 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvb3BlbmN2CkJyYW5j aCA6IG9wZW5jdjUKQ29tbWl0IDogMDRjNzUyOWYwNTIyNDZjY2EyMzE4MjE5OGE0NjM4ZWFiZjdk NGE2MApBdXRob3IgOiBOaWNvbGFzIENoYXV2ZXQgPGt3aXphcnRAZ21haWwuY29tPgpEYXRlICAg OiAyMDExLTA4LTIwVDE1OjAwOjEyKzAyOjAwClN0YXRzICA6ICs1Ni8tMjEwMiBpbiAxMyBmaWxl KHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvb3BlbmN2L2Mv MDRjNzUyOWYwNTIyNDZjY2EyMzE4MjE5OGE0NjM4ZWFiZjdkNGE2MD9icmFuY2g9b3BlbmN2NQoK TG9nOgpVcGRhdGUgdG8gMi4zLjEKCi0tLQpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRp Z25vcmUKaW5kZXggMjVmMmJmOC4uOTg0NjcyNSAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysg Yi8uZ2l0aWdub3JlCkBAIC0xLDIgKzEsMyBAQAogT3BlbkNWLTIuMS4wLnRhci5iejIKIC9PcGVu Q1YtMi4yLjAudGFyLmJ6MgorL09wZW5DVi0yLjMuMS50YXIuYnoyCgpkaWZmIC0tZ2l0IGEvT3Bl bkNWLTIuMi1iMjItYmFja3BvcnRfMjAxMTA1MjYucGF0Y2ggYi9PcGVuQ1YtMi4yLWIyMi1iYWNr cG9ydF8yMDExMDUyNi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQyYzVm My4uMDAwMDAwMAotLS0gYS9PcGVuQ1YtMi4yLWIyMi1iYWNrcG9ydF8yMDExMDUyNi5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDE3MDIgKzAsMCBAQAotZGlmZiAtdXIgT3BlbkNWLTIuMi4wL0NN YWtlTGlzdHMudHh0IG9wZW5jdi9DTWFrZUxpc3RzLnR4dAotLS0tIE9wZW5DVi0yLjIuMC9DTWFr ZUxpc3RzLnR4dAkyMDEwLTEyLTA1IDA0OjM1OjIzLjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5j di9DTWFrZUxpc3RzLnR4dAkyMDExLTA1LTI2IDEyOjU3OjU2LjQ1MjA5MzAwMiArMDIwMAotQEAg LTEyMjQsNiArMTIyNCwxMSBAQAotICAgICAgICAgICAgIERFU1RJTkFUSU9OICIuIg0KLSAgICAg ICAgICAgICBDT01QT05FTlQgbWFpbg0KLSAgICAgICAgICAgICApDQotKyAgICAgICAgaW5zdGFs bChGSUxFUw0KLSsgICAgICAgICAgICAiaW5jbHVkZS9DTWFrZUxpc3RzLnR4dCINCi0rICAgICAg ICAgICAgREVTVElOQVRJT04gImluY2x1ZGUvIg0KLSsgICAgICAgICAgICBDT01QT05FTlQgc3Jj DQotKyAgICAgICAgICAgICkNCi0gDQotICAgICAgICAgaWYoQ01BS0VfSU5TVEFMTF9ERUJVR19M SUJSQVJJRVMpDQotICAgICAgICAgICAgIGZvcmVhY2gobSBjYWxpYjNkIGNvcmUgY29udHJpYiBm ZWF0dXJlczJkIGZmbXBlZyBmbGFubiBncHUgaGlnaGd1aSBpbWdwcm9jIGxlZ2FjeSBtbCBvYmpk ZXRlY3QgdmlkZW8pDQotZGlmZiAtdXIgT3BlbkNWLTIuMi4wL2N2Y29uZmlnLmguY21ha2Ugb3Bl bmN2L2N2Y29uZmlnLmguY21ha2UKLS0tLSBPcGVuQ1YtMi4yLjAvY3Zjb25maWcuaC5jbWFrZQky MDEwLTEyLTA1IDA0OjM1OjIzLjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5jdi9jdmNvbmZpZy5o LmNtYWtlCTIwMTEtMDUtMjYgMTI6NTc6NTYuNDQ5MDkzMDAyICswMjAwCi1AQCAtMTksNiArMTks OSBAQAotIC8qIFY0TDIgY2FwdHVyaW5nIHN1cHBvcnQgKi8KLSAjY21ha2VkZWZpbmUgSEFWRV9D QU1WNEwyCi0gCi0rLyogVjRML1Y0TDIgY2FwdHVyaW5nIHN1cHBvcnQgdmlhIGxpYnY0bCAqLwot KyNjbWFrZWRlZmluZSBIQVZFX0xJQlY0TAotKwotIC8qIENhcmJvbiB3aW5kb3dpbmcgZW52aXJv bm1lbnQgKi8KLSAjY21ha2VkZWZpbmUgSEFWRV9DQVJCT04KLSAKLWRpZmYgLXVyIE9wZW5DVi0y LjIuMC9tb2R1bGVzL2NhbGliM2Qvc3JjL2Z1bmRhbS5jcHAgb3BlbmN2L21vZHVsZXMvY2FsaWIz ZC9zcmMvZnVuZGFtLmNwcAotLS0tIE9wZW5DVi0yLjIuMC9tb2R1bGVzL2NhbGliM2Qvc3JjL2Z1 bmRhbS5jcHAJMjAxMC0xMi0wNSAwNDozNToyNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuY3Yv bW9kdWxlcy9jYWxpYjNkL3NyYy9mdW5kYW0uY3BwCTIwMTEtMDUtMjYgMTI6NTY6MzMuNDU3MDkz MDAzICswMjAwCi1AQCAtMjY5LDYgKzI2OSw4IEBACi0gICAgICAgICBpY3ZDb21wcmVzc1BvaW50 cyggKEN2UG9pbnQyRDY0ZiopTS0+ZGF0YS5wdHIsIHRlbXBNYXNrLT5kYXRhLnB0ciwgMSwgY291 bnQgKTsKLSAgICAgICAgIGNvdW50ID0gaWN2Q29tcHJlc3NQb2ludHMoIChDdlBvaW50MkQ2NGYq KW0tPmRhdGEucHRyLCB0ZW1wTWFzay0+ZGF0YS5wdHIsIDEsIGNvdW50ICk7Ci0gICAgICAgICBN LT5jb2xzID0gbS0+Y29scyA9IGNvdW50OwotKyAgICAgICAgaWYoIG1ldGhvZCA9PSBDVl9SQU5T QUMgKQotKyAgICAgICAgICAgIGVzdGltYXRvci5ydW5LZXJuZWwoIE0sIG0sICZtYXRIICk7Ci0g ICAgICAgICBlc3RpbWF0b3IucmVmaW5lKCBNLCBtLCAmbWF0SCwgMTAgKTsKLSAgICAgfQotIAot ZGlmZiAtdXIgT3BlbkNWLTIuMi4wL21vZHVsZXMvY29yZS9pbmNsdWRlL29wZW5jdjIvY29yZS9j b3JlLmhwcCBvcGVuY3YvbW9kdWxlcy9jb3JlL2luY2x1ZGUvb3BlbmN2Mi9jb3JlL2NvcmUuaHBw Ci0tLS0gT3BlbkNWLTIuMi4wL21vZHVsZXMvY29yZS9pbmNsdWRlL29wZW5jdjIvY29yZS9jb3Jl LmhwcAkyMDEwLTEyLTA1IDA0OjM1OjI0LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5jdi9tb2R1 bGVzL2NvcmUvaW5jbHVkZS9vcGVuY3YyL2NvcmUvY29yZS5ocHAJMjAxMS0wNS0yNiAxMjo1Njow Ni4wMjgwOTMwMDMgKzAyMDAKLUBAIC0xODE2LDcgKzE4MTYsNyBAQAotIGNsYXNzIENWX0VYUE9S VFMgUk5HCi0gewotIHB1YmxpYzoKLS0gICAgZW51bSB7IEE9NDE2NDkwMzY5MFUsIFVOSUZPUk09 MCwgTk9STUFMPTEgfTsKLSsgICAgZW51bSB7IFVOSUZPUk09MCwgTk9STUFMPTEgfTsKLSAKLSAg ICAgUk5HKCk7Ci0gICAgIFJORyh1aW50NjQgX3N0YXRlKTsKLWRpZmYgLXVyIE9wZW5DVi0yLjIu MC9tb2R1bGVzL2NvcmUvaW5jbHVkZS9vcGVuY3YyL2NvcmUvbWF0LmhwcCBvcGVuY3YvbW9kdWxl cy9jb3JlL2luY2x1ZGUvb3BlbmN2Mi9jb3JlL21hdC5ocHAKLS0tLSBPcGVuQ1YtMi4yLjAvbW9k dWxlcy9jb3JlL2luY2x1ZGUvb3BlbmN2Mi9jb3JlL21hdC5ocHAJMjAxMC0xMi0wNSAwNDozNToy NC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuY3YvbW9kdWxlcy9jb3JlL2luY2x1ZGUvb3BlbmN2 Mi9jb3JlL21hdC5ocHAJMjAxMS0wNS0yNiAxMjo1NjowNi4wMTkwOTMwMDMgKzAyMDAKLUBAIC04 MDUsNyArODA1LDcgQEAKLSAKLSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IHRlbXBsYXRlPGludCBu PiBpbmxpbmUKLSAgICAgTWF0XzxfVHA+OjpNYXRfKGNvbnN0IFZlYzx0eXBlbmFtZSBEYXRhVHlw ZTxfVHA+OjpjaGFubmVsX3R5cGUsIG4+JiB2ZWMsIGJvb2wgY29weURhdGEpCi0tICAgIDogTWF0 KG4vRGF0YVR5cGU8X1RwPjo6Y2hhbm5lbHMsIDEsIERhdGFUeXBlPF9UcD46OnR5cGUsICZ2ZWMp Ci0rICAgIDogTWF0KG4vRGF0YVR5cGU8X1RwPjo6Y2hhbm5lbHMsIDEsIERhdGFUeXBlPF9UcD46 OnR5cGUsICh2b2lkKikmdmVjKQotIHsKLSAgICAgQ1ZfQXNzZXJ0KG4lRGF0YVR5cGU8X1RwPjo6 Y2hhbm5lbHMgPT0gMCk7Ci0gICAgIGlmKCBjb3B5RGF0YSApCi1AQCAtODE0LDcgKzgxNCw3IEBA Ci0gCi0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiB0ZW1wbGF0ZTxpbnQgbSwgaW50IG4+IGlubGlu ZQotICAgICBNYXRfPF9UcD46Ok1hdF8oY29uc3QgTWF0eDx0eXBlbmFtZSBEYXRhVHlwZTxfVHA+ OjpjaGFubmVsX3R5cGUsbSxuPiYgTSwgYm9vbCBjb3B5RGF0YSkKLS0gICAgOiBNYXQobSwgbi9E YXRhVHlwZTxfVHA+OjpjaGFubmVscywgRGF0YVR5cGU8X1RwPjo6dHlwZSwgJk0pCi0rICAgIDog TWF0KG0sIG4vRGF0YVR5cGU8X1RwPjo6Y2hhbm5lbHMsIERhdGFUeXBlPF9UcD46OnR5cGUsICh2 b2lkKikmTSkKLSB7Ci0gICAgIENWX0Fzc2VydChuICUgRGF0YVR5cGU8X1RwPjo6Y2hhbm5lbHMg PT0gMCk7Ci0gICAgIGlmKCBjb3B5RGF0YSApCi1AQCAtODIyLDcgKzgyMiw3IEBACi0gfQotICAg ICAKLSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlubGluZSBNYXRfPF9UcD46Ok1hdF8oY29uc3Qg UG9pbnRfPHR5cGVuYW1lIERhdGFUeXBlPF9UcD46OmNoYW5uZWxfdHlwZT4mIHB0LCBib29sIGNv cHlEYXRhKQotLSAgICA6IE1hdCgyL0RhdGFUeXBlPF9UcD46OmNoYW5uZWxzLCAxLCBEYXRhVHlw ZTxfVHA+Ojp0eXBlLCAmcHQpCi0rICAgIDogTWF0KDIvRGF0YVR5cGU8X1RwPjo6Y2hhbm5lbHMs IDEsIERhdGFUeXBlPF9UcD46OnR5cGUsICh2b2lkKikmcHQpCi0gewotICAgICBDVl9Bc3NlcnQo MiAlIERhdGFUeXBlPF9UcD46OmNoYW5uZWxzID09IDApOwotICAgICBpZiggY29weURhdGEgKQot QEAgLTgzMCw3ICs4MzAsNyBAQAotIH0KLSAKLSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlubGlu ZSBNYXRfPF9UcD46Ok1hdF8oY29uc3QgUG9pbnQzXzx0eXBlbmFtZSBEYXRhVHlwZTxfVHA+Ojpj aGFubmVsX3R5cGU+JiBwdCwgYm9vbCBjb3B5RGF0YSkKLS0gICAgOiBNYXQoMy9EYXRhVHlwZTxf VHA+OjpjaGFubmVscywgMSwgRGF0YVR5cGU8X1RwPjo6dHlwZSwgJnB0KQotKyAgICA6IE1hdCgz L0RhdGFUeXBlPF9UcD46OmNoYW5uZWxzLCAxLCBEYXRhVHlwZTxfVHA+Ojp0eXBlLCAodm9pZCop JnB0KQotIHsKLSAgICAgQ1ZfQXNzZXJ0KDMgJSBEYXRhVHlwZTxfVHA+OjpjaGFubmVscyA9PSAw KTsKLSAgICAgaWYoIGNvcHlEYXRhICkKLWRpZmYgLXVyIE9wZW5DVi0yLjIuMC9tb2R1bGVzL2Nv cmUvaW5jbHVkZS9vcGVuY3YyL2NvcmUvb3BlcmF0aW9ucy5ocHAgb3BlbmN2L21vZHVsZXMvY29y ZS9pbmNsdWRlL29wZW5jdjIvY29yZS9vcGVyYXRpb25zLmhwcAotLS0tIE9wZW5DVi0yLjIuMC9t b2R1bGVzL2NvcmUvaW5jbHVkZS9vcGVuY3YyL2NvcmUvb3BlcmF0aW9ucy5ocHAJMjAxMC0xMi0w NSAwNDozNToyNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuY3YvbW9kdWxlcy9jb3JlL2luY2x1 ZGUvb3BlbmN2Mi9jb3JlL29wZXJhdGlvbnMuaHBwCTIwMTEtMDUtMjYgMTI6NTY6MDYuMDIyMDkz MDAzICswMjAwCi1AQCAtNTcyLDYgKzU3Miw3IEBACi0gewotICAgICBmb3IoIGludCBpID0gMDsg aSA8IG0qbjsgaSsrICkKLSAgICAgICAgIGEudmFsW2ldID0gc2F0dXJhdGVfY2FzdDxfVHA+KGEu dmFsW2ldICogYWxwaGEpOwotKyAgICByZXR1cm4gYTsKLSB9ICAgICAgICAKLSAgICAgCi0gdGVt cGxhdGU8dHlwZW5hbWUgX1RwLCBpbnQgbSwgaW50IG4+IHN0YXRpYyBpbmxpbmUKLUBAIC01Nzks NiArNTgwLDcgQEAKLSB7Ci0gICAgIGZvciggaW50IGkgPSAwOyBpIDwgbSpuOyBpKysgKQotICAg ICAgICAgYS52YWxbaV0gPSBzYXR1cmF0ZV9jYXN0PF9UcD4oYS52YWxbaV0gKiBhbHBoYSk7Ci0r ICAgIHJldHVybiBhOwotIH0gICAgCi0gCi0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBpbnQgbSwg aW50IG4+IHN0YXRpYyBpbmxpbmUKLUBAIC01ODYsNiArNTg4LDcgQEAKLSB7Ci0gICAgIGZvcigg aW50IGkgPSAwOyBpIDwgbSpuOyBpKysgKQotICAgICAgICAgYS52YWxbaV0gPSBzYXR1cmF0ZV9j YXN0PF9UcD4oYS52YWxbaV0gKiBhbHBoYSk7Ci0rICAgIHJldHVybiBhOwotIH0gICAgICAgIAot IAotIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgaW50IG0sIGludCBuPiBzdGF0aWMgaW5saW5lCi1A QCAtMjIzOSw3ICsyMjQyLDcgQEAKLSBpbmxpbmUgUk5HOjpSTkcodWludDY0IF9zdGF0ZSkgeyBz dGF0ZSA9IF9zdGF0ZSA/IF9zdGF0ZSA6IDB4ZmZmZmZmZmY7IH0KLSBpbmxpbmUgdW5zaWduZWQg Uk5HOjpuZXh0KCkKLSB7Ci0tICAgIHN0YXRlID0gKHVpbnQ2NCkodW5zaWduZWQpc3RhdGUqQSAr ICh1bnNpZ25lZCkoc3RhdGUgPj4gMzIpOwotKyAgICBzdGF0ZSA9ICh1aW50NjQpKHVuc2lnbmVk KXN0YXRlKkNWX1JOR19DT0VGRiArICh1bnNpZ25lZCkoc3RhdGUgPj4gMzIpOwotICAgICByZXR1 cm4gKHVuc2lnbmVkKXN0YXRlOwotIH0KLSAKLWRpZmYgLXVyIE9wZW5DVi0yLjIuMC9tb2R1bGVz L2NvcmUvaW5jbHVkZS9vcGVuY3YyL2NvcmUvdHlwZXNfYy5oIG9wZW5jdi9tb2R1bGVzL2NvcmUv aW5jbHVkZS9vcGVuY3YyL2NvcmUvdHlwZXNfYy5oCi0tLS0gT3BlbkNWLTIuMi4wL21vZHVsZXMv Y29yZS9pbmNsdWRlL29wZW5jdjIvY29yZS90eXBlc19jLmgJMjAxMC0xMi0wNSAwNDozNToyNC4w MDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuY3YvbW9kdWxlcy9jb3JlL2luY2x1ZGUvb3BlbmN2Mi9j b3JlL3R5cGVzX2MuaAkyMDExLTA1LTI2IDEyOjU2OjA2LjAyNDA5MzAwMyArMDIwMAotQEAgLTM3 NSw2ICszNzUsOCBAQAotIAotIHR5cGVkZWYgdWludDY0IEN2Uk5HOwotIAotKyNkZWZpbmUgQ1Zf Uk5HX0NPRUZGIDQxNjQ5MDM2OTBVCi0rCi0gQ1ZfSU5MSU5FIEN2Uk5HIGN2Uk5HKCBpbnQ2NCBz ZWVkIENWX0RFRkFVTFQoLTEpKQotIHsKLSAgICAgQ3ZSTkcgcm5nID0gc2VlZCA/ICh1aW50NjQp c2VlZCA6ICh1aW50NjQpKGludDY0KS0xOwotQEAgLTM4NSw3ICszODcsNyBAQAotIENWX0lOTElO RSB1bnNpZ25lZCBjdlJhbmRJbnQoIEN2Uk5HKiBybmcgKQotIHsKLSAgICAgdWludDY0IHRlbXAg PSAqcm5nOwotLSAgICB0ZW1wID0gKHVpbnQ2NCkodW5zaWduZWQpdGVtcCo0MTY0OTAzNjkwVSAr ICh0ZW1wID4+IDMyKTsKLSsgICAgdGVtcCA9ICh1aW50NjQpKHVuc2lnbmVkKXRlbXAqQ1ZfUk5H X0NPRUZGICsgKHRlbXAgPj4gMzIpOwotICAgICAqcm5nID0gdGVtcDsKLSAgICAgcmV0dXJuICh1 bnNpZ25lZCl0ZW1wOwotIH0KLWRpZmYgLXVyIE9wZW5DVi0yLjIuMC9tb2R1bGVzL2NvcmUvc3Jj L2xhcGFjay5jcHAgb3BlbmN2L21vZHVsZXMvY29yZS9zcmMvbGFwYWNrLmNwcAotLS0tIE9wZW5D Vi0yLjIuMC9tb2R1bGVzL2NvcmUvc3JjL2xhcGFjay5jcHAJMjAxMC0xMi0wNSAwNDozNToyNC4w MDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuY3YvbW9kdWxlcy9jb3JlL3NyYy9sYXBhY2suY3BwCTIw MTEtMDUtMjYgMTI6NTY6MTMuNTY3MDkzMDAzICswMjAwCi1AQCAtMjE3LDEwICsyMTcsMTAgQEAK LSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV0ZXJtaW5hbnQgb2YgdGhlIG1h dHJpeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSBcKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KLSAKLS0jZGVmaW5lIGRldDIobSkgICAobSgwLDApKm0oMSwxKSAtIG0o MCwxKSptKDEsMCkpCi0tI2RlZmluZSBkZXQzKG0pICAgKG0oMCwwKSoobSgxLDEpKm0oMiwyKSAt IG0oMSwyKSptKDIsMSkpIC0gIFwKLS0gICAgICAgICAgICAgICAgICAgbSgwLDEpKihtKDEsMCkq bSgyLDIpIC0gbSgxLDIpKm0oMiwwKSkgKyAgXAotLSAgICAgICAgICAgICAgICAgICBtKDAsMikq KG0oMSwwKSptKDIsMSkgLSBtKDEsMSkqbSgyLDApKSkKLSsjZGVmaW5lIGRldDIobSkgICAoKGRv dWJsZSltKDAsMCkqbSgxLDEpIC0gKGRvdWJsZSltKDAsMSkqbSgxLDApKQotKyNkZWZpbmUgZGV0 MyhtKSAgIChtKDAsMCkqKChkb3VibGUpbSgxLDEpKm0oMiwyKSAtIChkb3VibGUpbSgxLDIpKm0o MiwxKSkgLSAgXAotKyAgICAgICAgICAgICAgICAgICBtKDAsMSkqKChkb3VibGUpbSgxLDApKm0o MiwyKSAtIChkb3VibGUpbSgxLDIpKm0oMiwwKSkgKyAgXAotKyAgICAgICAgICAgICAgICAgICBt KDAsMikqKChkb3VibGUpbSgxLDApKm0oMiwxKSAtIChkb3VibGUpbSgxLDEpKm0oMiwwKSkpCi0g Ci0gZG91YmxlIGRldGVybWluYW50KCBjb25zdCBNYXQmIG1hdCApCi0gewotQEAgLTQwNSwxNyAr NDA1LDE3IEBACi0gICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBkOwotICAgICAgICAgICAg ICAgICAgICAgZCA9IDEuL2Q7Ci0gCi0tICAgICAgICAgICAgICAgICAgICB0WzBdID0gKGZsb2F0 KSgoU2YoMSwxKSAqIFNmKDIsMikgLSBTZigxLDIpICogU2YoMiwxKSkgKiBkKTsKLS0gICAgICAg ICAgICAgICAgICAgIHRbMV0gPSAoZmxvYXQpKChTZigwLDIpICogU2YoMiwxKSAtIFNmKDAsMSkg KiBTZigyLDIpKSAqIGQpOwotLSAgICAgICAgICAgICAgICAgICAgdFsyXSA9IChmbG9hdCkoKFNm KDAsMSkgKiBTZigxLDIpIC0gU2YoMCwyKSAqIFNmKDEsMSkpICogZCk7Ci0tICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAotLSAgICAgICAgICAgICAgICAgICAgdFszXSA9IChmbG9h dCkoKFNmKDEsMikgKiBTZigyLDApIC0gU2YoMSwwKSAqIFNmKDIsMikpICogZCk7Ci0tICAgICAg ICAgICAgICAgICAgICB0WzRdID0gKGZsb2F0KSgoU2YoMCwwKSAqIFNmKDIsMikgLSBTZigwLDIp ICogU2YoMiwwKSkgKiBkKTsKLS0gICAgICAgICAgICAgICAgICAgIHRbNV0gPSAoZmxvYXQpKChT ZigwLDIpICogU2YoMSwwKSAtIFNmKDAsMCkgKiBTZigxLDIpKSAqIGQpOwotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKLS0gICAgICAgICAgICAgICAgICAgIHRbNl0gPSAoZmxv YXQpKChTZigxLDApICogU2YoMiwxKSAtIFNmKDEsMSkgKiBTZigyLDApKSAqIGQpOwotLSAgICAg ICAgICAgICAgICAgICAgdFs3XSA9IChmbG9hdCkoKFNmKDAsMSkgKiBTZigyLDApIC0gU2YoMCww KSAqIFNmKDIsMSkpICogZCk7Ci0tICAgICAgICAgICAgICAgICAgICB0WzhdID0gKGZsb2F0KSgo U2YoMCwwKSAqIFNmKDEsMSkgLSBTZigwLDEpICogU2YoMSwwKSkgKiBkKTsKLSsgICAgICAgICAg ICAgICAgICAgIHRbMF0gPSAoZmxvYXQpKCgoZG91YmxlKVNmKDEsMSkgKiBTZigyLDIpIC0gKGRv dWJsZSlTZigxLDIpICogU2YoMiwxKSkgKiBkKTsKLSsgICAgICAgICAgICAgICAgICAgIHRbMV0g PSAoZmxvYXQpKCgoZG91YmxlKVNmKDAsMikgKiBTZigyLDEpIC0gKGRvdWJsZSlTZigwLDEpICog U2YoMiwyKSkgKiBkKTsKLSsgICAgICAgICAgICAgICAgICAgIHRbMl0gPSAoZmxvYXQpKCgoZG91 YmxlKVNmKDAsMSkgKiBTZigxLDIpIC0gKGRvdWJsZSlTZigwLDIpICogU2YoMSwxKSkgKiBkKTsK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSsgICAgICAgICAgICAgICAgICAgIHRbM10g PSAoZmxvYXQpKCgoZG91YmxlKVNmKDEsMikgKiBTZigyLDApIC0gKGRvdWJsZSlTZigxLDApICog U2YoMiwyKSkgKiBkKTsKLSsgICAgICAgICAgICAgICAgICAgIHRbNF0gPSAoZmxvYXQpKCgoZG91 YmxlKVNmKDAsMCkgKiBTZigyLDIpIC0gKGRvdWJsZSlTZigwLDIpICogU2YoMiwwKSkgKiBkKTsK LSsgICAgICAgICAgICAgICAgICAgIHRbNV0gPSAoZmxvYXQpKCgoZG91YmxlKVNmKDAsMikgKiBT ZigxLDApIC0gKGRvdWJsZSlTZigwLDApICogU2YoMSwyKSkgKiBkKTsKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAKLSsgICAgICAgICAgICAgICAgICAgIHRbNl0gPSAoZmxvYXQpKCgoZG91 YmxlKVNmKDEsMCkgKiBTZigyLDEpIC0gKGRvdWJsZSlTZigxLDEpICogU2YoMiwwKSkgKiBkKTsK LSsgICAgICAgICAgICAgICAgICAgIHRbN10gPSAoZmxvYXQpKCgoZG91YmxlKVNmKDAsMSkgKiBT ZigyLDApIC0gKGRvdWJsZSlTZigwLDApICogU2YoMiwxKSkgKiBkKTsKLSsgICAgICAgICAgICAg ICAgICAgIHRbOF0gPSAoZmxvYXQpKCgoZG91YmxlKVNmKDAsMCkgKiBTZigxLDEpIC0gKGRvdWJs ZSlTZigwLDEpICogU2YoMSwwKSkgKiBkKTsKLSAKLSAgICAgICAgICAgICAgICAgICAgIERmKDAs MCkgPSB0WzBdOyBEZigwLDEpID0gdFsxXTsgRGYoMCwyKSA9IHRbMl07Ci0gICAgICAgICAgICAg ICAgICAgICBEZigxLDApID0gdFszXTsgRGYoMSwxKSA9IHRbNF07IERmKDEsMikgPSB0WzVdOwot QEAgLTYwNywxMCArNjA3LDEwIEBACi0gICAgICAgICAgICAgICAgIGRvdWJsZSBkID0gZGV0MihT Zik7Ci0gICAgICAgICAgICAgICAgIGlmKCBkICE9IDAuICkKLSAgICAgICAgICAgICAgICAgewot LSAgICAgICAgICAgICAgICAgICAgZmxvYXQgdDsKLSsgICAgICAgICAgICAgICAgICAgIGRvdWJs ZSB0OwotICAgICAgICAgICAgICAgICAgICAgZCA9IDEuL2Q7Ci0tICAgICAgICAgICAgICAgICAg ICB0ID0gKGZsb2F0KSgoYmYoMCkqU2YoMSwxKSAtIGJmKDEpKlNmKDAsMSkpKmQpOwotLSAgICAg ICAgICAgICAgICAgICAgRGYoMSwwKSA9IChmbG9hdCkoKGJmKDEpKlNmKDAsMCkgLSBiZigwKSpT ZigxLDApKSpkKTsKLSsgICAgICAgICAgICAgICAgICAgIHQgPSAoZmxvYXQpKCgoZG91YmxlKWJm KDApKlNmKDEsMSkgLSAoZG91YmxlKWJmKDEpKlNmKDAsMSkpKmQpOwotKyAgICAgICAgICAgICAg ICAgICAgRGYoMSwwKSA9IChmbG9hdCkoKChkb3VibGUpYmYoMSkqU2YoMCwwKSAtIChkb3VibGUp YmYoMCkqU2YoMSwwKSkqZCk7Ci0gICAgICAgICAgICAgICAgICAgICBEZigwLDApID0gdDsKLSAg ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBlbHNlCi1AQCAtNjQyLDE5ICs2NDIs MTkgQEAKLSAgICAgICAgICAgICAgICAgICAgIGQgPSAxLi9kOwotIAotICAgICAgICAgICAgICAg ICAgICAgdFswXSA9IChmbG9hdCkoZCoKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAoYmYo MCkqKFNmKDEsMSkqU2YoMiwyKSAtIFNmKDEsMikqU2YoMiwxKSkgLQotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICBTZigwLDEpKihiZigxKSpTZigyLDIpIC0gU2YoMSwyKSpiZigyKSkgKwot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZigwLDIpKihiZigxKSpTZigyLDEpIC0gU2Yo MSwxKSpiZigyKSkpKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmYoMCkqKChkb3Vi bGUpU2YoMSwxKSpTZigyLDIpIC0gKGRvdWJsZSlTZigxLDIpKlNmKDIsMSkpIC0KLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgU2YoMCwxKSooKGRvdWJsZSliZigxKSpTZigyLDIpIC0gKGRv dWJsZSlTZigxLDIpKmJmKDIpKSArCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNmKDAs MikqKChkb3VibGUpYmYoMSkqU2YoMiwxKSAtIChkb3VibGUpU2YoMSwxKSpiZigyKSkpKTsKLSAK LSAgICAgICAgICAgICAgICAgICAgIHRbMV0gPSAoZmxvYXQpKGQqCi0tICAgICAgICAgICAgICAg ICAgICAgICAgICAgKFNmKDAsMCkqKGJmKDEpKlNmKDIsMikgLSBTZigxLDIpKmJmKDIpKSAtCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJmKDApKihTZigxLDApKlNmKDIsMikgLSBTZigx LDIpKlNmKDIsMCkpICsKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2YoMCwyKSooU2Yo MSwwKSpiZigyKSAtIGJmKDEpKlNmKDIsMCkpKSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgKFNmKDAsMCkqKGRvdWJsZSkoYmYoMSkqU2YoMiwyKSAtIChkb3VibGUpU2YoMSwyKSpiZigy KSkgLQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZigwKSooKGRvdWJsZSlTZigxLDAp KlNmKDIsMikgLSAoZG91YmxlKVNmKDEsMikqU2YoMiwwKSkgKwotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBTZigwLDIpKigoZG91YmxlKVNmKDEsMCkqYmYoMikgLSAoZG91YmxlKWJmKDEp KlNmKDIsMCkpKSk7Ci0gCi0gICAgICAgICAgICAgICAgICAgICB0WzJdID0gKGZsb2F0KShkKgot LSAgICAgICAgICAgICAgICAgICAgICAgICAgIChTZigwLDApKihTZigxLDEpKmJmKDIpIC0gYmYo MSkqU2YoMiwxKSkgLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZigwLDEpKihTZigx LDApKmJmKDIpIC0gYmYoMSkqU2YoMiwwKSkgKwotLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICBiZigwKSooU2YoMSwwKSpTZigyLDEpIC0gU2YoMSwxKSpTZigyLDApKSkpOwotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIChTZigwLDApKigoZG91YmxlKVNmKDEsMSkqYmYoMikgLSAoZG91 YmxlKWJmKDEpKlNmKDIsMSkpIC0KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2YoMCwx KSooKGRvdWJsZSlTZigxLDApKmJmKDIpIC0gKGRvdWJsZSliZigxKSpTZigyLDApKSArCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJmKDApKigoZG91YmxlKVNmKDEsMCkqU2YoMiwxKSAt IChkb3VibGUpU2YoMSwxKSpTZigyLDApKSkpOwotIAotICAgICAgICAgICAgICAgICAgICAgRGYo MCwwKSA9IHRbMF07Ci0gICAgICAgICAgICAgICAgICAgICBEZigxLDApID0gdFsxXTsKLWRpZmYg LXVyIE9wZW5DVi0yLjIuMC9tb2R1bGVzL2NvcmUvc3JjL21hdGhmdW5jcy5jcHAgb3BlbmN2L21v ZHVsZXMvY29yZS9zcmMvbWF0aGZ1bmNzLmNwcAotLS0tIE9wZW5DVi0yLjIuMC9tb2R1bGVzL2Nv cmUvc3JjL21hdGhmdW5jcy5jcHAJMjAxMC0xMi0wNSAwNDozNToyNC4wMDAwMDAwMDAgKzAxMDAK LSsrKyBvcGVuY3YvbW9kdWxlcy9jb3JlL3NyYy9tYXRoZnVuY3MuY3BwCTIwMTEtMDUtMjYgMTI6 NTY6MTMuNTY0MDkzMDAzICswMjAwCi1AQCAtNzczLDcgKzc3Myw4IEBACi0gCi0gCi0gLy8gdGhl IGNvZGUgYmVsb3cgdXNlcyBfbW1fY2FzdCogaW50cmluc2ljcywgd2hpY2ggYXJlIG5vdCBhdmlh bGFibGUgb24gVlMyMDA1Ci0tI2lmIGRlZmluZWQgX01TQ19WRVIgJiYgX01TQ19WRVIgPCAxNTAw Ci0rI2lmIChkZWZpbmVkIF9NU0NfVkVSICYmIF9NU0NfVkVSIDwgMTUwMCkgfHwgXAotKyAgICAo IWRlZmluZWQgX19BUFBMRV9fICYmIGRlZmluZWQgX19HTlVDX18gJiYgX19HTlVDX18qMTAwICsg X19HTlVDX01JTk9SX18gPCA0MDIpCi0gI3VuZGVmIENWX1NTRTIKLSAjZGVmaW5lIENWX1NTRTIg MAotICNlbmRpZiAgICAKLWRpZmYgLXVyIE9wZW5DVi0yLjIuMC9tb2R1bGVzL2NvcmUvc3JjL3Jh bmQuY3BwIG9wZW5jdi9tb2R1bGVzL2NvcmUvc3JjL3JhbmQuY3BwCi0tLS0gT3BlbkNWLTIuMi4w L21vZHVsZXMvY29yZS9zcmMvcmFuZC5jcHAJMjAxMC0xMi0wNSAwNDozNToyNC4wMDAwMDAwMDAg KzAxMDAKLSsrKyBvcGVuY3YvbW9kdWxlcy9jb3JlL3NyYy9yYW5kLmNwcAkyMDExLTA1LTI2IDEy OjU2OjEzLjU1NjA5MzAwMyArMDIwMAotQEAgLTYwLDcgKzYwLDcgQEAKLSAgICBjYXJyeSA9IHRl bXAgLyAoMl4zMikKLSAqLwotIAotLSNkZWZpbmUgIFJOR19ORVhUKHgpICAgICgodWludDY0KSh1 bnNpZ25lZCkoeCkqUk5HOjpBICsgKCh4KSA+PiAzMikpCi0rI2RlZmluZSAgUk5HX05FWFQoeCkg ICAgKCh1aW50NjQpKHVuc2lnbmVkKSh4KSpDVl9STkdfQ09FRkYgKyAoKHgpID4+IDMyKSkKLSAK LSAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXAotICogICAgICAgICAgICAgICAgICAg ICAgICAgICBQc2V1ZG8tUmFuZG9tIE51bWJlciBHZW5lcmF0b3JzIChQUk5HcykgICAgICAgICAg ICAgICAgICAgICAqCi1kaWZmIC11ciBPcGVuQ1YtMi4yLjAvbW9kdWxlcy9mZWF0dXJlczJkL3Ny Yy9zaWZ0LmNwcCBvcGVuY3YvbW9kdWxlcy9mZWF0dXJlczJkL3NyYy9zaWZ0LmNwcAotLS0tIE9w ZW5DVi0yLjIuMC9tb2R1bGVzL2ZlYXR1cmVzMmQvc3JjL3NpZnQuY3BwCTIwMTAtMTItMDUgMDQ6 MzU6MjQuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbmN2L21vZHVsZXMvZmVhdHVyZXMyZC9zcmMv c2lmdC5jcHAJMjAxMS0wNS0yNiAxMjo1Njo0MC4zNTQwOTMwMDIgKzAyMDAKLUBAIC00OCwxNCAr NDgsMTUgQEAKLSAKLSAjaW5jbHVkZSAicHJlY29tcC5ocHAiCi0gCi0tI2lmZGVmIF9fYXJtX18K LS0jZGVmaW5lIEFSTV9OT19TSUZUCi0tI2VuZGlmCi0tCi0tI2lmZGVmIEFORFJPSUQKLS0jdW5k ZWYgIEFSTV9OT19TSUZUCi0tI2VuZGlmIC8vQU5EUk9JRAotKy8vI2lmZGVmIF9fYXJtX18KLSsv LyNkZWZpbmUgQVJNX05PX1NJRlQKLSsvLyNlbmRpZgotKwotKy8vI2lmZGVmIEFORFJPSUQKLSsv LyN1bmRlZiAgQVJNX05PX1NJRlQKLSsvLyNlbmRpZiAvL0FORFJPSUQKLSAKLSsjdW5kZWYgQVJN X05PX1NJRlQKLSAjaWZuZGVmIEFSTV9OT19TSUZUCi0gCi0gI2luY2x1ZGUgPGlvc3RyZWFtPgot ZGlmZiAtdXIgT3BlbkNWLTIuMi4wL21vZHVsZXMvZmZtcGVnL0NNYWtlTGlzdHMudHh0IG9wZW5j di9tb2R1bGVzL2ZmbXBlZy9DTWFrZUxpc3RzLnR4dAotLS0tIE9wZW5DVi0yLjIuMC9tb2R1bGVz L2ZmbXBlZy9DTWFrZUxpc3RzLnR4dAkyMDEwLTEyLTA1IDA0OjM1OjI0LjAwMDAwMDAwMCArMDEw MAotKysrIG9wZW5jdi9tb2R1bGVzL2ZmbXBlZy9DTWFrZUxpc3RzLnR4dAkyMDExLTA1LTI2IDEy OjU2OjQwLjkzMjA5MzAwMyArMDIwMAotQEAgLTQ1LDYgKzQ1LDcgQEAKLSAgICAgICAgICAgICAg ICAgICAgICAgREVGSU5FX1NZTUJPTCAiQ1ZBUElfRVhQT1JUUyIKLSAgICAgICAgICAgICAgICAg ICAgICAgQVJDSElWRV9PVVRQVVRfRElSRUNUT1JZICIke0NNQUtFX0JJTkFSWV9ESVJ9L2xpYi8i Ci0gICAgICAgICAgICAgICAgICAgICAgIFJVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWSAiJHtDTUFL RV9CSU5BUllfRElSfS9iaW4vIgotKyAgICAgICAgICAgICAgICAgICAgICBMSU5LX0ZMQUdTICIv Tk9ERUZBVUxUTElCOmxpYmMgL0RFQlVHIgotICAgICAgICAgICAgICAgICAgICAgICApCi0gCi0g aW5zdGFsbChUQVJHRVRTICR7dGhlX3RhcmdldH0KLWRpZmYgLXVyIE9wZW5DVi0yLjIuMC9tb2R1 bGVzL2dwdS9zcmMvY3VkYS9zdGVyZW9ibS5jdSBvcGVuY3YvbW9kdWxlcy9ncHUvc3JjL2N1ZGEv c3RlcmVvYm0uY3UKLS0tLSBPcGVuQ1YtMi4yLjAvbW9kdWxlcy9ncHUvc3JjL2N1ZGEvc3RlcmVv Ym0uY3UJMjAxMC0xMi0wNSAwNDozNToyNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuY3YvbW9k dWxlcy9ncHUvc3JjL2N1ZGEvc3RlcmVvYm0uY3UJMjAxMS0wNS0yNiAxMjo1NjoxOC4zMDkwOTMw MDIgKzAyMDAKLUBAIC0yNTIsNyArMjUyLDcgQEAKLSAgICAgICAgIGZvcih1aW50ICpwdHIgPSBt aW5TU0RJbWFnZTsgcHRyICE9IG1pblNTREltYWdlX2VuZDsgcHRyICs9IG1pbnNzZF9zdGVwICkN Ci0gICAgICAgICAgICAgKnB0ciA9IDB4RkZGRkZGRkY7DQotICAgICB9Ki8NCi0tICAgIGludCBl bmRfcm93ID0gbWluKFJPV1NwZXJUSFJFQUQsIGNoZWlnaHQgLSBZKTsNCi0rICAgIGludCBlbmRf cm93ID0gbWluKFJPV1NwZXJUSFJFQUQsIGNoZWlnaHQgLSBZIC0gUkFESVVTKTsNCi0gICAgIGlu dCB5X3RleDsNCi0gICAgIGludCB4X3RleCA9IFggLSBSQURJVVM7DQotIA0KLWRpZmYgLXVyIE9w ZW5DVi0yLjIuMC9tb2R1bGVzL2dwdS9zcmMvc3RlcmVvYm1fZ3B1LmNwcCBvcGVuY3YvbW9kdWxl cy9ncHUvc3JjL3N0ZXJlb2JtX2dwdS5jcHAKLS0tLSBPcGVuQ1YtMi4yLjAvbW9kdWxlcy9ncHUv c3JjL3N0ZXJlb2JtX2dwdS5jcHAJMjAxMC0xMi0wNSAwNDozNToyNC4wMDAwMDAwMDAgKzAxMDAK LSsrKyBvcGVuY3YvbW9kdWxlcy9ncHUvc3JjL3N0ZXJlb2JtX2dwdS5jcHAJMjAxMS0wNS0yNiAx Mjo1NjoxOC40NjgwOTMwMDIgKzAyMDAKLUBAIC02Miw3ICs2Miw3IEBACi0gICAgIHsNCi0gICAg ICAgICAvL2V4dGVybiAiQyIgdm9pZCBzdGVyZW9CTV9HUFUoY29uc3QgRGV2TWVtMkQmIGxlZnQs IGNvbnN0IERldk1lbTJEJiByaWdodCwgY29uc3QgRGV2TWVtMkQmIGRpc3AsIGludCBuZGlzcCwg aW50IHdpbnN6LCBjb25zdCBEZXZNZW0yRF88dWludD4mIG1pblNTRF9idWYpOw0KLSAgICAgICAg IGV4dGVybiAiQyIgdm9pZCBzdGVyZW9CTV9HUFUoY29uc3QgRGV2TWVtMkQmIGxlZnQsIGNvbnN0 IERldk1lbTJEJiByaWdodCwgY29uc3QgRGV2TWVtMkQmIGRpc3AsIGludCBuZGlzcCwgaW50IHdp bnN6LCBjb25zdCBEZXZNZW0yRF88dWludD4mIG1pblNTRF9idWYsIGN1ZGFTdHJlYW1fdCAmIHN0 cmVhbSk7DQotLSAgICAgICAgZXh0ZXJuICJDIiB2b2lkIHByZWZpbHRlcl94c29iZWwoY29uc3Qg RGV2TWVtMkQmIGlucHV0LCBjb25zdCBEZXZNZW0yRCBvdXRwdXQsIGludCBwcmVmaWx0ZXJDYXAg Lyo9IDMxKi8sIGN1ZGFTdHJlYW1fdCAmIHN0cmVhbSk7DQotKyAgICAgICAgZXh0ZXJuICJDIiB2 b2lkIHByZWZpbHRlcl94c29iZWwoY29uc3QgRGV2TWVtMkQmIGlucHV0LCBjb25zdCBEZXZNZW0y RCYgb3V0cHV0LCBpbnQgcHJlZmlsdGVyQ2FwIC8qPSAzMSovLCBjdWRhU3RyZWFtX3QgJiBzdHJl YW0pOw0KLSAgICAgICAgIGV4dGVybiAiQyIgdm9pZCBwb3N0ZmlsdGVyX3RleHR1cmVuZXNzKGNv bnN0IERldk1lbTJEJiBpbnB1dCwgaW50IHdpbnN6LCBmbG9hdCBhdmdUZXh0dXJlbmVzc1RocmVz aG9sZCwgY29uc3QgRGV2TWVtMkQmIGRpc3AsIGN1ZGFTdHJlYW1fdCAmIHN0cmVhbSk7DQotICAg ICB9DQotIH19DQotZGlmZiAtdXIgT3BlbkNWLTIuMi4wL21vZHVsZXMvaGlnaGd1aS9DTWFrZUxp c3RzLnR4dCBvcGVuY3YvbW9kdWxlcy9oaWdoZ3VpL0NNYWtlTGlzdHMudHh0Ci0tLS0gT3BlbkNW LTIuMi4wL21vZHVsZXMvaGlnaGd1aS9DTWFrZUxpc3RzLnR4dAkyMDEwLTEyLTA1IDA0OjM1OjI0 LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5jdi9tb2R1bGVzL2hpZ2hndWkvQ01ha2VMaXN0cy50 eHQJMjAxMS0wNS0yNiAxMjo1NjowMi44MDcwOTMwMDMgKzAyMDAKLUBAIC0yNTcsNyArMjU3LDcg QEAKLSAJKQotIAotIGlmKE1TVkMpCi0tCXNldF90YXJnZXRfcHJvcGVydGllcygke3RoZV90YXJn ZXR9IFBST1BFUlRJRVMgTElOS19GTEFHUyAiL05PREVGQVVMVExJQjphdGx0aHVuay5saWIiKQot KwlzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoJHt0aGVfdGFyZ2V0fSBQUk9QRVJUSUVTIExJTktfRkxB R1MgIi9OT0RFRkFVTFRMSUI6YXRsdGh1bmsubGliIC9OT0RFRkFVTFRMSUI6YXRsc2QubGliIC9E RUJVRyIpCi0gZW5kaWYoTVNWQykKLSAKLSAjIERlcGVuZGVuY2llcyBvZiB0aGlzIHRhcmdldDoK LWRpZmYgLXVyIE9wZW5DVi0yLjIuMC9tb2R1bGVzL2hpZ2hndWkvc3JjL2NhcC5jcHAgb3BlbmN2 L21vZHVsZXMvaGlnaGd1aS9zcmMvY2FwLmNwcAotLS0tIE9wZW5DVi0yLjIuMC9tb2R1bGVzL2hp Z2hndWkvc3JjL2NhcC5jcHAJMjAxMC0xMi0wNSAwNDozNToyNC4wMDAwMDAwMDAgKzAxMDAKLSsr KyBvcGVuY3YvbW9kdWxlcy9oaWdoZ3VpL3NyYy9jYXAuY3BwCTIwMTEtMDUtMjYgMTI6NTY6MDIu NzcwMDkzMDAzICswMjAwCi1AQCAtNTIsMTAgKzUyLDEwIEBACi0gbmFtZXNwYWNlIGN2Ci0gewot IAotLXRlbXBsYXRlPD4gaW5saW5lIHZvaWQgUHRyPEN2Q2FwdHVyZT46OmRlbGV0ZV9vYmooKQot K3RlbXBsYXRlPD4gdm9pZCBQdHI8Q3ZDYXB0dXJlPjo6ZGVsZXRlX29iaigpCi0geyBjdlJlbGVh c2VDYXB0dXJlKCZvYmopOyB9Ci0gCi0tdGVtcGxhdGU8PiBpbmxpbmUgdm9pZCBQdHI8Q3ZWaWRl b1dyaXRlcj46OmRlbGV0ZV9vYmooKQotK3RlbXBsYXRlPD4gdm9pZCBQdHI8Q3ZWaWRlb1dyaXRl cj46OmRlbGV0ZV9vYmooKQotIHsgY3ZSZWxlYXNlVmlkZW9Xcml0ZXIoJm9iaik7IH0KLSAKLSB9 Ci1AQCAtMTcxLDcgKzE3MSw3IEBACi0gICAgICAgICAgICAgaWYgKGNhcHR1cmUpCi0gICAgICAg ICAgICAgICAgIHJldHVybiBjYXB0dXJlOwotICAgICAgICAgI2VuZGlmCi0tICAgICAgICAjaWYg ZGVmaW5lZCAoSEFWRV9DQU1WNEwpIHx8IGRlZmluZWQgKEhBVkVfQ0FNVjRMMikKLSsgICAgICAg ICNpZiBkZWZpbmVkIEhBVkVfTElCVjRMIHx8IChkZWZpbmVkIChIQVZFX0NBTVY0TCkgJiYgZGVm aW5lZCAoSEFWRV9DQU1WNEwyKSkKLSAgICAgICAgICAgICBjYXB0dXJlID0gY3ZDcmVhdGVDYW1l cmFDYXB0dXJlX1Y0TCAoaW5kZXgpOwotICAgICAgICAgICAgIGlmIChjYXB0dXJlKQotICAgICAg ICAgICAgICAgICByZXR1cm4gY2FwdHVyZTsKLWRpZmYgLXVyIE9wZW5DVi0yLjIuMC9tb2R1bGVz L2hpZ2hndWkvc3JjL2NhcF9kc2hvdy5jcHAgb3BlbmN2L21vZHVsZXMvaGlnaGd1aS9zcmMvY2Fw X2RzaG93LmNwcAotLS0tIE9wZW5DVi0yLjIuMC9tb2R1bGVzL2hpZ2hndWkvc3JjL2NhcF9kc2hv dy5jcHAJMjAxMC0xMi0wNSAwNDozNToyNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuY3YvbW9k dWxlcy9oaWdoZ3VpL3NyYy9jYXBfZHNob3cuY3BwCTIwMTEtMDUtMjYgMTI6NTY6MDIuNzg5MDkz MDAzICswMjAwCi1AQCAtMTg0LDYgKzE4NCw3IEBACi0gfQotIAotICNpZmRlZiBfTVNDX1ZFUgot KyNwcmFnbWEgY29tbWVudChsaWIsICJzdHJtaWlkcy5saWIiKQotICNpZiBkZWZpbmVkIF9NX1g2 NAotICNwcmFnbWEgY29tbWVudChsaWIsICJ2aWRlb0lucHV0NjQubGliIikKLSAjZWxzZQotZGlm ZiAtdXIgT3BlbkNWLTIuMi4wL21vZHVsZXMvaGlnaGd1aS9zcmMvY2FwX2xpYnY0bC5jcHAgb3Bl bmN2L21vZHVsZXMvaGlnaGd1aS9zcmMvY2FwX2xpYnY0bC5jcHAKLS0tLSBPcGVuQ1YtMi4yLjAv bW9kdWxlcy9oaWdoZ3VpL3NyYy9jYXBfbGlidjRsLmNwcAkyMDEwLTEyLTA1IDA0OjM1OjI1LjAw MDAwMDAwMCArMDEwMAotKysrIG9wZW5jdi9tb2R1bGVzL2hpZ2hndWkvc3JjL2NhcF9saWJ2NGwu Y3BwCTIwMTEtMDUtMjYgMTI6NTY6MDIuNzk2MDkzMDAzICswMjAwCi1AQCAtMjI0LDcgKzIyNCw3 IEBACi0gI2luY2x1ZGUgImhpZ2hndWkuaCIKLSAjaW5jbHVkZSAicHJlY29tcC5ocHAiCi0gCi0t I2lmICFkZWZpbmVkIFdJTjMyICYmIGRlZmluZWQgSEFWRV9DQU1WNEwgJiYgZGVmaW5lZCBIQVZF X0NBTVY0TDIKLSsjaWYgIWRlZmluZWQgV0lOMzIgJiYgZGVmaW5lZCBIQVZFX0xJQlY0TAotIAot ICNkZWZpbmUgQ0xFQVIoeCkgbWVtc2V0ICgmKHgpLCAwLCBzaXplb2YgKHgpKQotIAotQEAgLTI0 MSw4ICsyNDEsMTIgQEAKLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSAjaW5jbHVkZSA8c3lzL2lv Y3RsLmg+Ci0gCi0rI2lmZGVmIEhBVkVfQ0FNVjRMCi0gI2luY2x1ZGUgPGxpbnV4L3ZpZGVvZGV2 Lmg+Ci0rI2VuZGlmCi0rI2lmZGVmIEhBVkVfQ0FNVjRMMgotICNpbmNsdWRlIDxsaW51eC92aWRl b2RldjIuaD4KLSsjZW5kaWYKLSAKLSAjaW5jbHVkZSA8bGlidjRsMS5oPgotICNpbmNsdWRlIDxs aWJ2NGwyLmg+Ci1kaWZmIC11ciBPcGVuQ1YtMi4yLjAvbW9kdWxlcy9oaWdoZ3VpL3NyYy9ncmZt dF9wbmcuY3BwIG9wZW5jdi9tb2R1bGVzL2hpZ2hndWkvc3JjL2dyZm10X3BuZy5jcHAKLS0tLSBP cGVuQ1YtMi4yLjAvbW9kdWxlcy9oaWdoZ3VpL3NyYy9ncmZtdF9wbmcuY3BwCTIwMTAtMTItMDUg MDQ6MzU6MjUuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbmN2L21vZHVsZXMvaGlnaGd1aS9zcmMv Z3JmbXRfcG5nLmNwcAkyMDExLTA1LTI2IDEyOjU2OjAyLjc5NzA5MzAwMyArMDIwMAotQEAgLTIy Myw4ICsyMjMsMTIgQEAKLSAgICAgICAgICAgICAgICAgcG5nX3NldF9wYWxldHRlX3RvX3JnYigg cG5nX3B0ciApOwotIAotICAgICAgICAgICAgIGlmKCBtX2NvbG9yX3R5cGUgPT0gUE5HX0NPTE9S X1RZUEVfR1JBWSAmJiBtX2JpdF9kZXB0aCA8IDggKQotKyNpZiBQTkdfTElCUE5HX1ZFUl9NQUpP UioxMDAgKyBQTkdfTElCUE5HX1ZFUl9NSU5PUiA+PSAxMDQKLSAgICAgICAgICAgICAgICAgcG5n X3NldF9leHBhbmRfZ3JheV8xXzJfNF90b184KCBwbmdfcHRyICk7Ci0tCi0rI2Vsc2UKLSsgICAg ICAgICAgICAgICAgcG5nX3NldF9ncmF5XzFfMl80X3RvXzgoIHBuZ19wdHIgKTsKLSsjZW5kaWYK LSsgICAgICAgICAgICAKLSAgICAgICAgICAgICBpZiggQ1ZfTUFUX0NOKG1fdHlwZSkgPiAxICYm IGNvbG9yICkKLSAgICAgICAgICAgICAgICAgcG5nX3NldF9iZ3IoIHBuZ19wdHIgKTsgLy8gY29u dmVydCBSR0IgdG8gQkdSCi0gICAgICAgICAgICAgZWxzZSBpZiggY29sb3IgKQotZGlmZiAtdXIg T3BlbkNWLTIuMi4wL21vZHVsZXMvaGlnaGd1aS9zcmMvcHJlY29tcC5ocHAgb3BlbmN2L21vZHVs ZXMvaGlnaGd1aS9zcmMvcHJlY29tcC5ocHAKLS0tLSBPcGVuQ1YtMi4yLjAvbW9kdWxlcy9oaWdo Z3VpL3NyYy9wcmVjb21wLmhwcAkyMDEwLTEyLTA1IDA0OjM1OjI1LjAwMDAwMDAwMCArMDEwMAot KysrIG9wZW5jdi9tb2R1bGVzL2hpZ2hndWkvc3JjL3ByZWNvbXAuaHBwCTIwMTEtMDUtMjYgMTI6 NTY6MDIuNzkzMDkzMDAzICswMjAwCi1AQCAtNTgsOSArNTgsOCBAQAotICNpbmNsdWRlIDxjdHlw ZS5oPgotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAKLS0jaWYgIWRlZmluZWQgV0lOMzIgJiYgIWRl ZmluZWQgX1dJTjMyCi0gI2luY2x1ZGUgImN2Y29uZmlnLmgiCi0tI2Vsc2UKLSsjaWYgZGVmaW5l ZCBXSU4zMiB8fCBkZWZpbmVkIF9XSU4zMgotIHZvaWQgIEZpbGxCaXRtYXBJbmZvKCBCSVRNQVBJ TkZPKiBibWksIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IGJwcCwgaW50IG9yaWdpbiApOwot ICNlbmRpZgotIAotZGlmZiAtdXIgT3BlbkNWLTIuMi4wL21vZHVsZXMvaW1ncHJvYy9pbmNsdWRl L29wZW5jdjIvaW1ncHJvYy9pbWdwcm9jLmhwcCBvcGVuY3YvbW9kdWxlcy9pbWdwcm9jL2luY2x1 ZGUvb3BlbmN2Mi9pbWdwcm9jL2ltZ3Byb2MuaHBwCi0tLS0gT3BlbkNWLTIuMi4wL21vZHVsZXMv aW1ncHJvYy9pbmNsdWRlL29wZW5jdjIvaW1ncHJvYy9pbWdwcm9jLmhwcAkyMDEwLTEyLTA1IDA0 OjM1OjI1LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5jdi9tb2R1bGVzL2ltZ3Byb2MvaW5jbHVk ZS9vcGVuY3YyL2ltZ3Byb2MvaW1ncHJvYy5ocHAJMjAxMS0wNS0yNiAxMjo1NjoyMi41OTQwOTMw MDMgKzAyMDAKLUBAIC0zNDgsOCArMzQ4LDEwIEBACi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbm9ybWFsaXplPXRydWUsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBib3JkZXJUeXBlPUJPUkRFUl9E RUZBVUxUKTsKLSAvLyEgdHlwZSBvZiBtb3JwaG9sb2dpY2FsIG9wZXJhdGlvbgotLWVudW0geyBN T1JQSF9FUk9ERT0wLCBNT1JQSF9ESUxBVEU9MSwgTU9SUEhfT1BFTj0yLCBNT1JQSF9DTE9TRT0z LAotLSAgICAgICBNT1JQSF9HUkFESUVOVD00LCBNT1JQSF9UT1BIQVQ9NSwgTU9SUEhfQkxBQ0tI QVQ9NiB9OwotK2VudW0geyBNT1JQSF9FUk9ERT1DVl9NT1BfRVJPREUsIE1PUlBIX0RJTEFURT1D Vl9NT1BfRElMQVRFLAotKyAgICAgICBNT1JQSF9PUEVOPUNWX01PUF9PUEVOLCBNT1JQSF9DTE9T RT1DVl9NT1BfQ0xPU0UsCi0rICAgICAgIE1PUlBIX0dSQURJRU5UPUNWX01PUF9HUkFESUVOVCwg TU9SUEhfVE9QSEFUPUNWX01PUF9UT1BIQVQsCi0rICAgICAgIE1PUlBIX0JMQUNLSEFUPUNWX01P UF9CTEFDS0hBVCB9OwotIAotIC8vISByZXR1cm5zIGhvcml6b250YWwgMUQgbW9ycGhvbG9naWNh bCBmaWx0ZXIKLSBDVl9FWFBPUlRTIFB0cjxCYXNlUm93RmlsdGVyPiBnZXRNb3JwaG9sb2d5Um93 RmlsdGVyKGludCBvcCwgaW50IHR5cGUsIGludCBrc2l6ZSwgaW50IGFuY2hvcj0tMSk7Ci1AQCAt NTAwLDEzICs1MDIsMTMgQEAKLSAvLyEgaW50ZXJwb2xhdGlvbiBhbGdvcml0aG0KLSBlbnVtCi0g ewotLSAgICBJTlRFUl9ORUFSRVNUPTAsIC8vITwgbmVhcmVzdCBuZWlnaGJvciBpbnRlcnBvbGF0 aW9uCi0tICAgIElOVEVSX0xJTkVBUj0xLCAvLyE8IGJpbGluZWFyIGludGVycG9sYXRpb24KLS0g ICAgSU5URVJfQ1VCSUM9MiwgLy8hPCBiaWN1YmljIGludGVycG9sYXRpb24KLS0gICAgSU5URVJf QVJFQT0zLCAvLyE8IGFyZWEtYmFzZWQgKG9yIHN1cGVyKSBpbnRlcnBvbGF0aW9uCi0tICAgIElO VEVSX0xBTkNaT1M0PTQsIC8vITwgTGFuY3pvcyBpbnRlcnBvbGF0aW9uIG92ZXIgOHg4IG5laWdo Ym9yaG9vZAotKyAgICBJTlRFUl9ORUFSRVNUPUNWX0lOVEVSX05OLCAvLyE8IG5lYXJlc3QgbmVp Z2hib3IgaW50ZXJwb2xhdGlvbgotKyAgICBJTlRFUl9MSU5FQVI9Q1ZfSU5URVJfTElORUFSLCAv LyE8IGJpbGluZWFyIGludGVycG9sYXRpb24KLSsgICAgSU5URVJfQ1VCSUM9Q1ZfSU5URVJfQ1VC SUMsIC8vITwgYmljdWJpYyBpbnRlcnBvbGF0aW9uCi0rICAgIElOVEVSX0FSRUE9Q1ZfSU5URVJf QVJFQSwgLy8hPCBhcmVhLWJhc2VkIChvciBzdXBlcikgaW50ZXJwb2xhdGlvbgotKyAgICBJTlRF Ul9MQU5DWk9TND1DVl9JTlRFUl9MQU5DWk9TNCwgLy8hPCBMYW5jem9zIGludGVycG9sYXRpb24g b3ZlciA4eDggbmVpZ2hib3Job29kCi0gICAgIElOVEVSX01BWD03LAotLSAgICBXQVJQX0lOVkVS U0VfTUFQPTE2Ci0rICAgIFdBUlBfSU5WRVJTRV9NQVA9Q1ZfV0FSUF9JTlZFUlNFX01BUAotIH07 Ci0gCi0gLy8hIHJlc2l6ZXMgdGhlIGltYWdlCi1AQCAtNTc0LDggKzU3NiwxMCBAQAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGFscGhhLCBjb25zdCBNYXQm IG1hc2s9TWF0KCkgKTsKLSAgICAgCi0gLy8hIHR5cGUgb2YgdGhlIHRocmVzaG9sZCBvcGVyYXRp b24KLS1lbnVtIHsgVEhSRVNIX0JJTkFSWT0wLCBUSFJFU0hfQklOQVJZX0lOVj0xLCBUSFJFU0hf VFJVTkM9MiwgVEhSRVNIX1RPWkVSTz0zLAotLSAgICAgICBUSFJFU0hfVE9aRVJPX0lOVj00LCBU SFJFU0hfTUFTSz03LCBUSFJFU0hfT1RTVT04IH07Ci0rZW51bSB7IFRIUkVTSF9CSU5BUlk9Q1Zf VEhSRVNIX0JJTkFSWSwgVEhSRVNIX0JJTkFSWV9JTlY9Q1ZfVEhSRVNIX0JJTkFSWV9JTlYsCi0r ICAgICAgIFRIUkVTSF9UUlVOQz1DVl9USFJFU0hfVFJVTkMsIFRIUkVTSF9UT1pFUk89Q1ZfVEhS RVNIX1RPWkVSTywKLSsgICAgICAgVEhSRVNIX1RPWkVST19JTlY9Q1ZfVEhSRVNIX1RPWkVST19J TlYsIFRIUkVTSF9NQVNLPUNWX1RIUkVTSF9NQVNLLAotKyAgICAgICBUSFJFU0hfT1RTVT1DVl9U SFJFU0hfT1RTVSB9OwotIAotIC8vISBhcHBsaWVzIGZpeGVkIHRocmVzaG9sZCB0byB0aGUgaW1h Z2UKLSBDVl9FWFBPUlRTX1cgZG91YmxlIHRocmVzaG9sZCggY29uc3QgTWF0JiBzcmMsIENWX09V VCBNYXQmIGRzdCwgZG91YmxlIHRocmVzaCwgZG91YmxlIG1heHZhbCwgaW50IHR5cGUgKTsKLUBA IC02NzIsMTcgKzY3NiwyMSBAQAotICAgICAgICAgICAgICAgICAgICAgVGVybUNyaXRlcmlhIHRl cm1jcml0PVRlcm1Dcml0ZXJpYShUZXJtQ3JpdGVyaWE6Ok1BWF9JVEVSK1Rlcm1Dcml0ZXJpYTo6 RVBTLDUsMSkgKTsKLSAKLSAvLyEgY2xhc3Mgb2YgdGhlIHBpeGVsIGluIEdyYWJDdXQgYWxnb3Jp dGhtCi0tZW51bSB7IEdDX0JHRCAgICA9IDAsICAvLyE8IGJhY2tncm91bmQKLS0gICAgICAgR0Nf RkdEICAgID0gMSwgIC8vITwgZm9yZWdyb3VuZAotLSAgICAgICBHQ19QUl9CR0QgPSAyLCAgLy8h PCBtb3N0IHByb2JhYmx5IGJhY2tncm91bmQKLS0gICAgICAgR0NfUFJfRkdEID0gMyAgIC8vITwg bW9zdCBwcm9iYWJseSBmb3JlZ3JvdW5kIAotLSAgICAgfTsKLStlbnVtCi0rewotKyAgICBHQ19C R0QgICAgPSAwLCAgLy8hPCBiYWNrZ3JvdW5kCi0rICAgIEdDX0ZHRCAgICA9IDEsICAvLyE8IGZv cmVncm91bmQKLSsgICAgR0NfUFJfQkdEID0gMiwgIC8vITwgbW9zdCBwcm9iYWJseSBiYWNrZ3Jv dW5kCi0rICAgIEdDX1BSX0ZHRCA9IDMgICAvLyE8IG1vc3QgcHJvYmFibHkgZm9yZWdyb3VuZCAK LSt9OwotIAotIC8vISBHcmFiQ3V0IGFsZ29yaXRobSBmbGFncwotLWVudW0geyBHQ19JTklUX1dJ VEhfUkVDVCAgPSAwLAotLSAgICAgICBHQ19JTklUX1dJVEhfTUFTSyAgPSAxLAotLSAgICAgICBH Q19FVkFMICAgICAgICAgICAgPSAyCi0tICAgICB9OwotK2VudW0KLSt7Ci0rICAgIEdDX0lOSVRf V0lUSF9SRUNUICA9IDAsCi0rICAgIEdDX0lOSVRfV0lUSF9NQVNLICA9IDEsCi0rICAgIEdDX0VW QUwgICAgICAgICAgICA9IDIKLSt9OwotIAotIC8vISBzZWdtZW50cyB0aGUgaW1hZ2UgdXNpbmcg R3JhYkN1dCBhbGdvcml0aG0KLSBDVl9FWFBPUlRTX1cgdm9pZCBncmFiQ3V0KCBjb25zdCBNYXQm IGltZywgTWF0JiBtYXNrLCBSZWN0IHJlY3QsIAotQEAgLTY5Miw4ICs3MDAsOCBAQAotIC8vISB0 aGUgaW5wYWludGluZyBhbGdvcml0aG0KLSBlbnVtCi0gewotLSAgICBJTlBBSU5UX05TPTAsIC8v IE5hdmllci1TdG9rZXMgYWxnb3JpdGhtCi0tICAgIElOUEFJTlRfVEVMRUE9MSAvLyBBLiBUZWxl YSBhbGdvcml0aG0KLSsgICAgSU5QQUlOVF9OUz1DVl9JTlBBSU5UX05TLCAvLyBOYXZpZXItU3Rv a2VzIGFsZ29yaXRobQotKyAgICBJTlBBSU5UX1RFTEVBPUNWX0lOUEFJTlRfVEVMRUEgLy8gQS4g VGVsZWEgYWxnb3JpdGhtCi0gfTsKLSAKLSAvLyEgcmVzdG9yZXMgdGhlIGRhbWFnZWQgaW1hZ2Ug YXJlYXMgdXNpbmcgb25lIG9mIHRoZSBhdmFpbGFibGUgaW50cGFpbnRpbmcgYWxnb3JpdGhtcwot QEAgLTc2NCwxOSArNzcyLDE5IEBACi0gLy8hIG1vZGUgb2YgdGhlIGNvbnRvdXIgcmV0cmlldmFs IGFsZ29yaXRobQotIGVudW0KLSB7Ci0tICAgIFJFVFJfRVhURVJOQUw9MCwgLy8hPCByZXRyaWV2 ZSBvbmx5IHRoZSBtb3N0IGV4dGVybmFsICh0b3AtbGV2ZWwpIGNvbnRvdXJzCi0tICAgIFJFVFJf TElTVD0xLCAvLyE8IHJldHJpZXZlIGFsbCB0aGUgY29udG91cnMgd2l0aG91dCBhbnkgaGllcmFy Y2hpY2FsIGluZm9ybWF0aW9uCi0tICAgIFJFVFJfQ0NPTVA9MiwgLy8hPCByZXRyaWV2ZSB0aGUg Y29ubmVjdGVkIGNvbXBvbmVudHMgKHRoYXQgY2FuIHBvc3NpYmx5IGJlIG5lc3RlZCkKLS0gICAg UkVUUl9UUkVFPTMgLy8hPCByZXRyaWV2ZSBhbGwgdGhlIGNvbnRvdXJzIGFuZCB0aGUgd2hvbGUg aGllcmFyY2h5Ci0rICAgIFJFVFJfRVhURVJOQUw9Q1ZfUkVUUl9FWFRFUk5BTCwgLy8hPCByZXRy aWV2ZSBvbmx5IHRoZSBtb3N0IGV4dGVybmFsICh0b3AtbGV2ZWwpIGNvbnRvdXJzCi0rICAgIFJF VFJfTElTVD1DVl9SRVRSX0xJU1QsIC8vITwgcmV0cmlldmUgYWxsIHRoZSBjb250b3VycyB3aXRo b3V0IGFueSBoaWVyYXJjaGljYWwgaW5mb3JtYXRpb24KLSsgICAgUkVUUl9DQ09NUD1DVl9SRVRS X0NDT01QLCAvLyE8IHJldHJpZXZlIHRoZSBjb25uZWN0ZWQgY29tcG9uZW50cyAodGhhdCBjYW4g cG9zc2libHkgYmUgbmVzdGVkKQotKyAgICBSRVRSX1RSRUU9Q1ZfUkVUUl9UUkVFIC8vITwgcmV0 cmlldmUgYWxsIHRoZSBjb250b3VycyBhbmQgdGhlIHdob2xlIGhpZXJhcmNoeQotIH07Ci0gCi0g Ly8hIHRoZSBjb250b3VyIGFwcHJveGltYXRpb24gYWxnb3JpdGhtCi0gZW51bQotIHsKLS0gICAg Q0hBSU5fQVBQUk9YX05PTkU9MCwKLS0gICAgQ0hBSU5fQVBQUk9YX1NJTVBMRT0xLAotLSAgICBD SEFJTl9BUFBST1hfVEM4OV9MMT0yLAotLSAgICBDSEFJTl9BUFBST1hfVEM4OV9LQ09TPTMKLSsg ICAgQ0hBSU5fQVBQUk9YX05PTkU9Q1ZfQ0hBSU5fQVBQUk9YX05PTkUsCi0rIAlDSEFJTl9BUFBS T1hfU0lNUExFPUNWX0NIQUlOX0FQUFJPWF9TSU1QTEUsCi0rIAlDSEFJTl9BUFBST1hfVEM4OV9M MT1DVl9DSEFJTl9BUFBST1hfVEM4OV9MMSwKLSsgCUNIQUlOX0FQUFJPWF9UQzg5X0tDT1M9Q1Zf Q0hBSU5fQVBQUk9YX1RDODlfS0NPUwotIH07Ci0gCi0gLy8hIHJldHJpZXZlcyBjb250b3VycyBh bmQgdGhlIGhpZXJhcmNoaWNhbCBpbmZvcm1hdGlvbiBmcm9tIGJsYWNrLW4td2hpdGUgaW1hZ2Uu Ci1kaWZmIC11ciBPcGVuQ1YtMi4yLjAvbW9kdWxlcy9pbWdwcm9jL2luY2x1ZGUvb3BlbmN2Mi9p bWdwcm9jL3R5cGVzX2MuaCBvcGVuY3YvbW9kdWxlcy9pbWdwcm9jL2luY2x1ZGUvb3BlbmN2Mi9p bWdwcm9jL3R5cGVzX2MuaAotLS0tIE9wZW5DVi0yLjIuMC9tb2R1bGVzL2ltZ3Byb2MvaW5jbHVk ZS9vcGVuY3YyL2ltZ3Byb2MvdHlwZXNfYy5oCTIwMTAtMTItMDUgMDQ6MzU6MjUuMDAwMDAwMDAw ICswMTAwCi0rKysgb3BlbmN2L21vZHVsZXMvaW1ncHJvYy9pbmNsdWRlL29wZW5jdjIvaW1ncHJv Yy90eXBlc19jLmgJMjAxMS0wNS0yNiAxMjo1NjoyMi41OTUwOTMwMDMgKzAyMDAKLUBAIC0yMjEs NiArMjIxLDExIEBACi0gICAgIENWX1lVVjJCR1IgICAgICA9IDg0LAotICAgICBDVl9ZVVYyUkdC ICAgICAgPSA4NSwKLSAgICAgCi0rICAgIENWX0JheWVyQkcyR1JBWSA9IDg2LAotKyAgICBDVl9C YXllckdCMkdSQVkgPSA4NywKLSsgICAgQ1ZfQmF5ZXJSRzJHUkFZID0gODgsCi0rICAgIENWX0Jh eWVyR1IyR1JBWSA9IDg5LAotKyAgICAKLSAgICAgQ1ZfQ09MT1JDVlRfTUFYICA9MTAwCi0gfTsK LSAKLWRpZmYgLXVyIE9wZW5DVi0yLjIuMC9tb2R1bGVzL2ltZ3Byb2Mvc3JjL2NvbG9yLmNwcCBv cGVuY3YvbW9kdWxlcy9pbWdwcm9jL3NyYy9jb2xvci5jcHAKLS0tLSBPcGVuQ1YtMi4yLjAvbW9k dWxlcy9pbWdwcm9jL3NyYy9jb2xvci5jcHAJMjAxMC0xMi0wNSAwNDozNToyNS4wMDAwMDAwMDAg KzAxMDAKLSsrKyBvcGVuY3YvbW9kdWxlcy9pbWdwcm9jL3NyYy9jb2xvci5jcHAJMjAxMS0wNS0y NiAxMjo1NjozMC40NTQwOTMwMDIgKzAyMDAKLUBAIC0xNzM4LDYgKzE3MzgsMTQ3IEBACi0gICAg ICAgICAKLSAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vIEJheWVyIFBhdHRlcm4gLT4gUkdC IGNvbnZlcnNpb24gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAKLStzdGF0aWMgdm9p ZCBCYXllcjJHcmF5Xzh1KCBjb25zdCBNYXQmIHNyY21hdCwgTWF0JiBkc3RtYXQsIGludCBjb2Rl ICkKLSt7Ci0rICAgIGNvbnN0IGludCBSMlkgPSA0ODk5OwotKyAgICBjb25zdCBpbnQgRzJZID0g OTYxNzsKLSsgICAgY29uc3QgaW50IEIyWSA9IDE4Njg7Ci0rICAgIGNvbnN0IGludCBTSElGVCA9 IDE0OwotKyAgICAKLSsgICAgY29uc3QgdWNoYXIqIGJheWVyMCA9IHNyY21hdC5kYXRhOwotKyAg ICBpbnQgYmF5ZXJfc3RlcCA9IChpbnQpc3JjbWF0LnN0ZXA7Ci0rICAgIHVjaGFyKiBkc3QwID0g ZHN0bWF0LmRhdGE7Ci0rICAgIGludCBkc3Rfc3RlcCA9IChpbnQpZHN0bWF0LnN0ZXA7Ci0rICAg IFNpemUgc2l6ZSA9IHNyY21hdC5zaXplKCk7Ci0rICAgIGludCBiY29lZmYgPSBCMlksIHJjb2Vm ZiA9IFIyWTsKLSsgICAgaW50IHN0YXJ0X3dpdGhfZ3JlZW4gPSBjb2RlID09IENWX0JheWVyR0Iy R1JBWSB8fCBjb2RlID09IENWX0JheWVyR1IyR1JBWTsKLSsgICAgYm9vbCBicm93ID0gdHJ1ZTsK LSsjaWYgQ1ZfU1NFMiAgICAKLSsgICAgYm9vbCBoYXZlU1NFMiA9IGNoZWNrSGFyZHdhcmVTdXBw b3J0KENWX0NQVV9TU0UyKTsKLSsjZW5kaWYKLSsgICAgCi0rICAgIGlmKCBjb2RlICE9IENWX0Jh eWVyQkcyR1JBWSAmJiBjb2RlICE9IENWX0JheWVyR0IyR1JBWSApCi0rICAgIHsKLSsgICAgICAg IGJyb3cgPSBmYWxzZTsKLSsgICAgICAgIHN0ZDo6c3dhcChiY29lZmYsIHJjb2VmZik7Ci0rICAg IH0KLSsgICAgCi0rICAgIGRzdDAgKz0gZHN0X3N0ZXAgKyAxOwotKyAgICBzaXplLmhlaWdodCAt PSAyOwotKyAgICBzaXplLndpZHRoIC09IDI7Ci0rICAgIAotKyAgICBmb3IoIDsgc2l6ZS5oZWln aHQtLSA+IDA7IGJheWVyMCArPSBiYXllcl9zdGVwLCBkc3QwICs9IGRzdF9zdGVwICkKLSsgICAg ewotKyAgICAgICAgaW50IHQwLCB0MSwgdDI7Ci0rICAgICAgICBjb25zdCB1Y2hhciogYmF5ZXIg PSBiYXllcjA7Ci0rICAgICAgICB1Y2hhciogZHN0ID0gZHN0MDsKLSsgICAgICAgIGNvbnN0IHVj aGFyKiBiYXllcl9lbmQgPSBiYXllciArIHNpemUud2lkdGg7Ci0rICAgICAgICAKLSsgICAgICAg IGlmKCBzaXplLndpZHRoIDw9IDAgKQotKyAgICAgICAgewotKyAgICAgICAgICAgIGRzdFstMV0g PSBkc3Rbc2l6ZS53aWR0aF0gPSAwOwotKyAgICAgICAgICAgIGNvbnRpbnVlOwotKyAgICAgICAg fQotKyAgICAgICAgCi0rICAgICAgICBpZiggc3RhcnRfd2l0aF9ncmVlbiApCi0rICAgICAgICB7 Ci0rICAgICAgICAgICAgdDAgPSAoYmF5ZXJbMV0gKyBiYXllcltiYXllcl9zdGVwKjIrMV0pKnJj b2VmZjsKLSsgICAgICAgICAgICB0MSA9IChiYXllcltiYXllcl9zdGVwXSArIGJheWVyW2JheWVy X3N0ZXArMl0pKmJjb2VmZjsKLSsgICAgICAgICAgICB0MiA9IGJheWVyW2JheWVyX3N0ZXArMV0q KDIqRzJZKTsKLSsgICAgICAgICAgICAKLSsgICAgICAgICAgICBkc3RbMF0gPSAodWNoYXIpQ1Zf REVTQ0FMRSh0MCArIHQxICsgdDIsIFNISUZUKzEpOwotKyAgICAgICAgICAgIGJheWVyKys7Ci0r ICAgICAgICAgICAgZHN0Kys7Ci0rICAgICAgICB9Ci0rICAgICAgICAKLSsjaWYgQ1ZfU1NFMgot KyAgICAgICAgaWYoIGhhdmVTU0UyICkKLSsgICAgICAgIHsKLSsgICAgICAgICAgICBfX20xMjhp IF9iMnkgPSBfbW1fc2V0MV9lcGkxNigoc2hvcnQpKHJjb2VmZioyKSk7Ci0rICAgICAgICAgICAg X19tMTI4aSBfZzJ5ID0gX21tX3NldDFfZXBpMTYoKHNob3J0KShHMlkqMikpOwotKyAgICAgICAg ICAgIF9fbTEyOGkgX3IyeSA9IF9tbV9zZXQxX2VwaTE2KChzaG9ydCkoYmNvZWZmKjIpKTsKLSsg ICAgICAgICAgICAKLSsgICAgICAgICAgICBmb3IoIDsgYmF5ZXIgPD0gYmF5ZXJfZW5kIC0gMTg7 IGJheWVyICs9IDE0LCBkc3QgKz0gMTQgKQotKyAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAg ICAgX19tMTI4aSByMCA9IF9tbV9sb2FkdV9zaTEyOCgoY29uc3QgX19tMTI4aSopYmF5ZXIpOwot KyAgICAgICAgICAgICAgICBfX20xMjhpIHIxID0gX21tX2xvYWR1X3NpMTI4KChjb25zdCBfX20x MjhpKikoYmF5ZXIrYmF5ZXJfc3RlcCkpOwotKyAgICAgICAgICAgICAgICBfX20xMjhpIHIyID0g X21tX2xvYWR1X3NpMTI4KChjb25zdCBfX20xMjhpKikoYmF5ZXIrYmF5ZXJfc3RlcCoyKSk7Ci0r ICAgICAgICAgICAgICAgIAotKyAgICAgICAgICAgICAgICBfX20xMjhpIGIxID0gX21tX2FkZF9l cGkxNihfbW1fc3JsaV9lcGkxNihfbW1fc2xsaV9lcGkxNihyMCwgOCksIDgpLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbW1fc3JsaV9lcGkxNihfbW1fc2xs aV9lcGkxNihyMiwgOCksIDgpKTsKLSsgICAgICAgICAgICAgICAgX19tMTI4aSBiMCA9IF9tbV9h ZGRfZXBpMTYoYjEsIF9tbV9zcmxpX3NpMTI4KGIxLCAyKSk7Ci0rICAgICAgICAgICAgICAgIGIx ID0gX21tX3NsbGlfZXBpMTYoX21tX3NybGlfc2kxMjgoYjEsIDIpLCAxKTsKLSsgICAgICAgICAg ICAgICAgCi0rICAgICAgICAgICAgICAgIF9fbTEyOGkgZzAgPSBfbW1fYWRkX2VwaTE2KF9tbV9z cmxpX2VwaTE2KHIwLCA4KSwgX21tX3NybGlfZXBpMTYocjIsIDgpKTsKLSsgICAgICAgICAgICAg ICAgX19tMTI4aSBnMSA9IF9tbV9zcmxpX2VwaTE2KF9tbV9zbGxpX2VwaTE2KHIxLCA4KSwgOCk7 Ci0rICAgICAgICAgICAgICAgIGcwID0gX21tX2FkZF9lcGkxNihnMCwgX21tX2FkZF9lcGkxNihn MSwgX21tX3NybGlfc2kxMjgoZzEsIDIpKSk7Ci0rICAgICAgICAgICAgICAgIGcxID0gX21tX3Ns bGlfZXBpMTYoX21tX3NybGlfc2kxMjgoZzEsIDIpLCAyKTsKLSsgICAgICAgICAgICAgICAgCi0r ICAgICAgICAgICAgICAgIHIwID0gX21tX3NybGlfZXBpMTYocjEsIDgpOwotKyAgICAgICAgICAg ICAgICByMSA9IF9tbV9zbGxpX2VwaTE2KF9tbV9hZGRfZXBpMTYocjAsIF9tbV9zcmxpX3NpMTI4 KHIwLCAyKSksIDEpOwotKyAgICAgICAgICAgICAgICByMCA9IF9tbV9zbGxpX2VwaTE2KHIwLCAy KTsKLSsgICAgICAgICAgICAgICAgCi0rICAgICAgICAgICAgICAgIGcwID0gX21tX2FkZF9lcGkx NihfbW1fbXVsaGlfZXBpMTYoYjAsIF9iMnkpLCBfbW1fbXVsaGlfZXBpMTYoZzAsIF9nMnkpKTsK LSsgICAgICAgICAgICAgICAgZzEgPSBfbW1fYWRkX2VwaTE2KF9tbV9tdWxoaV9lcGkxNihiMSwg X2IyeSksIF9tbV9tdWxoaV9lcGkxNihnMSwgX2cyeSkpOwotKyAgICAgICAgICAgICAgICBnMCA9 IF9tbV9hZGRfZXBpMTYoZzAsIF9tbV9tdWxoaV9lcGkxNihyMCwgX3IyeSkpOwotKyAgICAgICAg ICAgICAgICBnMSA9IF9tbV9hZGRfZXBpMTYoZzEsIF9tbV9tdWxoaV9lcGkxNihyMSwgX3IyeSkp OwotKyAgICAgICAgICAgICAgICBnMCA9IF9tbV9zcmxpX2VwaTE2KGcwLCAxKTsKLSsgICAgICAg ICAgICAgICAgZzEgPSBfbW1fc3JsaV9lcGkxNihnMSwgMSk7Ci0rICAgICAgICAgICAgICAgIGcw ID0gX21tX3BhY2t1c19lcGkxNihnMCwgZzApOwotKyAgICAgICAgICAgICAgICBnMSA9IF9tbV9w YWNrdXNfZXBpMTYoZzEsIGcxKTsKLSsgICAgICAgICAgICAgICAgZzAgPSBfbW1fdW5wYWNrbG9f ZXBpOChnMCwgZzEpOwotKyAgICAgICAgICAgICAgICBfbW1fc3RvcmV1X3NpMTI4KChfX20xMjhp Kilkc3QsIGcwKTsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICB9Ci0rI2VuZGlmCi0rICAgICAg ICAKLSsgICAgICAgIGZvciggOyBiYXllciA8PSBiYXllcl9lbmQgLSAyOyBiYXllciArPSAyLCBk c3QgKz0gMiApCi0rICAgICAgICB7Ci0rICAgICAgICAgICAgdDAgPSAoYmF5ZXJbMF0gKyBiYXll clsyXSArIGJheWVyW2JheWVyX3N0ZXAqMl0gKyBiYXllcltiYXllcl9zdGVwKjIrMl0pKnJjb2Vm ZjsKLSsgICAgICAgICAgICB0MSA9IChiYXllclsxXSArIGJheWVyW2JheWVyX3N0ZXBdICsgYmF5 ZXJbYmF5ZXJfc3RlcCsyXSArIGJheWVyW2JheWVyX3N0ZXAqMisxXSkqRzJZOwotKyAgICAgICAg ICAgIHQyID0gYmF5ZXJbYmF5ZXJfc3RlcCsxXSooNCpiY29lZmYpOwotKyAgICAgICAgICAgIGRz dFswXSA9ICh1Y2hhcilDVl9ERVNDQUxFKHQwICsgdDEgKyB0MiwgU0hJRlQrMik7Ci0rICAgICAg ICAgICAgCi0rICAgICAgICAgICAgdDAgPSAoYmF5ZXJbMl0gKyBiYXllcltiYXllcl9zdGVwKjIr Ml0pKnJjb2VmZjsKLSsgICAgICAgICAgICB0MSA9IChiYXllcltiYXllcl9zdGVwKzFdICsgYmF5 ZXJbYmF5ZXJfc3RlcCszXSkqYmNvZWZmOwotKyAgICAgICAgICAgIHQyID0gYmF5ZXJbYmF5ZXJf c3RlcCsyXSooMipHMlkpOwotKyAgICAgICAgICAgIGRzdFsxXSA9ICh1Y2hhcilDVl9ERVNDQUxF KHQwICsgdDEgKyB0MiwgU0hJRlQrMSk7Ci0rICAgICAgICB9Ci0rICAgICAgICAKLSsgICAgICAg IGlmKCBiYXllciA8IGJheWVyX2VuZCApCi0rICAgICAgICB7Ci0rICAgICAgICAgICAgdDAgPSAo YmF5ZXJbMF0gKyBiYXllclsyXSArIGJheWVyW2JheWVyX3N0ZXAqMl0gKyBiYXllcltiYXllcl9z dGVwKjIrMl0pKnJjb2VmZjsKLSsgICAgICAgICAgICB0MSA9IChiYXllclsxXSArIGJheWVyW2Jh eWVyX3N0ZXBdICsgYmF5ZXJbYmF5ZXJfc3RlcCsyXSArIGJheWVyW2JheWVyX3N0ZXAqMisxXSkq RzJZOwotKyAgICAgICAgICAgIHQyID0gYmF5ZXJbYmF5ZXJfc3RlcCsxXSooNCpiY29lZmYpOwot KyAgICAgICAgICAgIGRzdFswXSA9ICh1Y2hhcilDVl9ERVNDQUxFKHQwICsgdDEgKyB0MiwgU0hJ RlQrMik7Ci0rICAgICAgICAgICAgYmF5ZXIrKzsKLSsgICAgICAgICAgICBkc3QrKzsKLSsgICAg ICAgIH0KLSsgICAgICAgIAotKyAgICAgICAgZHN0MFstMV0gPSBkc3QwWzBdOwotKyAgICAgICAg ZHN0MFtzaXplLndpZHRoXSA9IGRzdDBbc2l6ZS53aWR0aC0xXTsKLSsgICAgICAgIAotKyAgICAg ICAgYnJvdyA9ICFicm93OwotKyAgICAgICAgc3RkOjpzd2FwKGJjb2VmZiwgcmNvZWZmKTsKLSsg ICAgICAgIHN0YXJ0X3dpdGhfZ3JlZW4gPSAhc3RhcnRfd2l0aF9ncmVlbjsKLSsgICAgfQotKyAg ICAKLSsgICAgc2l6ZSA9IGRzdG1hdC5zaXplKCk7Ci0rICAgIGRzdDAgPSBkc3RtYXQuZGF0YTsK LSsgICAgaWYoIHNpemUuaGVpZ2h0ID4gMiApCi0rICAgICAgICBmb3IoIGludCBpID0gMDsgaSA8 IHNpemUud2lkdGg7IGkrKyApCi0rICAgICAgICB7Ci0rICAgICAgICAgICAgZHN0MFtpXSA9IGRz dDBbaSArIGRzdF9zdGVwXTsKLSsgICAgICAgICAgICBkc3QwW2kgKyAoc2l6ZS5oZWlnaHQtMSkq ZHN0X3N0ZXBdID0gZHN0MFtpICsgKHNpemUuaGVpZ2h0LTIpKmRzdF9zdGVwXTsKLSsgICAgICAg IH0KLSsgICAgZWxzZQotKyAgICAgICAgZm9yKCBpbnQgaSA9IDA7IGkgPCBzaXplLndpZHRoOyBp KysgKQotKyAgICAgICAgewotKyAgICAgICAgICAgIGRzdDBbaV0gPSBkc3QwW2kgKyAoc2l6ZS5o ZWlnaHQtMSkqZHN0X3N0ZXBdID0gMDsKLSsgICAgICAgIH0KLSt9Ci0rCi0rCi0gc3RhdGljIHZv aWQgQmF5ZXIyUkdCXzh1KCBjb25zdCBNYXQmIHNyY21hdCwgTWF0JiBkc3RtYXQsIGludCBjb2Rl ICkKLSB7Ci0gICAgIGNvbnN0IHVjaGFyKiBiYXllcjAgPSBzcmNtYXQuZGF0YTsKLUBAIC0xNzQ3 LDI2ICsxODg4LDI4IEBACi0gICAgIFNpemUgc2l6ZSA9IHNyY21hdC5zaXplKCk7Ci0gICAgIGlu dCBibHVlID0gY29kZSA9PSBDVl9CYXllckJHMkJHUiB8fCBjb2RlID09IENWX0JheWVyR0IyQkdS ID8gLTEgOiAxOwotICAgICBpbnQgc3RhcnRfd2l0aF9ncmVlbiA9IGNvZGUgPT0gQ1ZfQmF5ZXJH QjJCR1IgfHwgY29kZSA9PSBDVl9CYXllckdSMkJHUjsKLS0KLS0gICAgbWVtc2V0KCBkc3QwLCAw LCBzaXplLndpZHRoKjMqc2l6ZW9mKGRzdDBbMF0pICk7Ci0tICAgIG1lbXNldCggZHN0MCArIChz aXplLmhlaWdodCAtIDEpKmRzdF9zdGVwLCAwLCBzaXplLndpZHRoKjMqc2l6ZW9mKGRzdDBbMF0p ICk7Ci0rI2lmIENWX1NTRTIKLSsgICAgYm9vbCBoYXZlU1NFMiA9IGNoZWNrSGFyZHdhcmVTdXBw b3J0KENWX0NQVV9TU0UyKTsKLSsjZW5kaWYKLSsgICAgCi0gICAgIGRzdDAgKz0gZHN0X3N0ZXAg KyAzICsgMTsKLSAgICAgc2l6ZS5oZWlnaHQgLT0gMjsKLSAgICAgc2l6ZS53aWR0aCAtPSAyOwot LQotKyAgICAgICAgCi0gICAgIGZvciggOyBzaXplLmhlaWdodC0tID4gMDsgYmF5ZXIwICs9IGJh eWVyX3N0ZXAsIGRzdDAgKz0gZHN0X3N0ZXAgKQotICAgICB7Ci0gICAgICAgICBpbnQgdDAsIHQx OwotICAgICAgICAgY29uc3QgdWNoYXIqIGJheWVyID0gYmF5ZXIwOwotICAgICAgICAgdWNoYXIq IGRzdCA9IGRzdDA7Ci0gICAgICAgICBjb25zdCB1Y2hhciogYmF5ZXJfZW5kID0gYmF5ZXIgKyBz aXplLndpZHRoOwotLQotLSAgICAgICAgZHN0Wy00XSA9IGRzdFstM10gPSBkc3RbLTJdID0gZHN0 W3NpemUud2lkdGgqMy0xXSA9Ci0tICAgICAgICAgICAgZHN0W3NpemUud2lkdGgqM10gPSBkc3Rb c2l6ZS53aWR0aCozKzFdID0gMDsKLS0KLSsgICAgICAgIAotICAgICAgICAgaWYoIHNpemUud2lk dGggPD0gMCApCi0rICAgICAgICB7Ci0rICAgICAgICAgICAgZHN0Wy00XSA9IGRzdFstM10gPSBk c3RbLTJdID0gZHN0W3NpemUud2lkdGgqMy0xXSA9Ci0rICAgICAgICAgICAgZHN0W3NpemUud2lk dGgqM10gPSBkc3Rbc2l6ZS53aWR0aCozKzFdID0gMDsKLSAgICAgICAgICAgICBjb250aW51ZTsK LS0KLSsgICAgICAgIH0KLSsgICAgICAgIAotICAgICAgICAgaWYoIHN0YXJ0X3dpdGhfZ3JlZW4g KQotICAgICAgICAgewotICAgICAgICAgICAgIHQwID0gKGJheWVyWzFdICsgYmF5ZXJbYmF5ZXJf c3RlcCoyKzFdICsgMSkgPj4gMTsKLUBAIC0xNzc3LDcgKzE5MjAsODcgQEAKLSAgICAgICAgICAg ICBiYXllcisrOwotICAgICAgICAgICAgIGRzdCArPSAzOwotICAgICAgICAgfQotLQotKyAgICAg ICAgCi0rI2lmIENWX1NTRTIKLSsgICAgICAgIGlmKCBoYXZlU1NFMiApCi0rICAgICAgICB7Ci0r ICAgICAgICAgICAgLyoKLSsgICAgICAgICAgICAgQiBHIEIgRyB8IEIgRyBCIEcgfCBCIEcgQiBH IHwgQiBHIEIgRwotKyAgICAgICAgICAgICBHIFIgRyBSIHwgRyBSIEcgUiB8IEcgUiBHIFIgfCBH IFIgRyBSCi0rICAgICAgICAgICAgIEIgRyBCIEcgfCBCIEcgQiBHIHwgQiBHIEIgRyB8IEIgRyBC IEcKLSsgICAgICAgICAgICAgKi8KLSsgICAgICAgICAgICBfX20xMjhpIGRlbHRhMSA9IF9tbV9z ZXQxX2VwaTE2KDEpLCBkZWx0YTIgPSBfbW1fc2V0MV9lcGkxNigyKTsKLSsgICAgICAgICAgICBf X20xMjhpIG1hc2sgPSBfbW1fc2V0MV9lcGkxNihibHVlIDwgMCA/IC0xIDogMCksIHogPSBfbW1f c2V0emVyb19zaTEyOCgpOwotKyAgICAgICAgICAgIF9fbTEyOGkgbWFza2xvID0gX21tX3NldDFf ZXBpMTYoMHgwMGZmKTsKLSsgICAgICAgICAgICAKLSsgICAgICAgICAgICBmb3IoIDsgYmF5ZXIg PD0gYmF5ZXJfZW5kIC0gMTg7IGJheWVyICs9IDE0LCBkc3QgKz0gNDIgKQotKyAgICAgICAgICAg IHsKLSsgICAgICAgICAgICAgICAgX19tMTI4aSByMCA9IF9tbV9sb2FkdV9zaTEyOCgoY29uc3Qg X19tMTI4aSopYmF5ZXIpOwotKyAgICAgICAgICAgICAgICBfX20xMjhpIHIxID0gX21tX2xvYWR1 X3NpMTI4KChjb25zdCBfX20xMjhpKikoYmF5ZXIrYmF5ZXJfc3RlcCkpOwotKyAgICAgICAgICAg ICAgICBfX20xMjhpIHIyID0gX21tX2xvYWR1X3NpMTI4KChjb25zdCBfX20xMjhpKikoYmF5ZXIr YmF5ZXJfc3RlcCoyKSk7Ci0rICAgICAgICAgICAgICAgIAotKyAgICAgICAgICAgICAgICBfX20x MjhpIGIxID0gX21tX2FkZF9lcGkxNihfbW1fYW5kX3NpMTI4KHIwLCBtYXNrbG8pLCBfbW1fYW5k X3NpMTI4KHIyLCBtYXNrbG8pKTsKLSsgICAgICAgICAgICAgICAgX19tMTI4aSBiMCA9IF9tbV9h ZGRfZXBpMTYoYjEsIF9tbV9zcmxpX3NpMTI4KGIxLCAyKSk7Ci0rICAgICAgICAgICAgICAgIGIx ID0gX21tX3NybGlfc2kxMjgoYjEsIDIpOwotKyAgICAgICAgICAgICAgICBiMSA9IF9tbV9zcmxp X2VwaTE2KF9tbV9hZGRfZXBpMTYoYjEsIGRlbHRhMSksIDEpOwotKyAgICAgICAgICAgICAgICBi MCA9IF9tbV9zcmxpX2VwaTE2KF9tbV9hZGRfZXBpMTYoYjAsIGRlbHRhMiksIDIpOwotKyAgICAg ICAgICAgICAgICBiMCA9IF9tbV9wYWNrdXNfZXBpMTYoYjAsIGIxKTsKLSsgICAgICAgICAgICAg ICAgCi0rICAgICAgICAgICAgICAgIF9fbTEyOGkgZzAgPSBfbW1fYWRkX2VwaTE2KF9tbV9zcmxp X2VwaTE2KHIwLCA4KSwgX21tX3NybGlfZXBpMTYocjIsIDgpKTsKLSsgICAgICAgICAgICAgICAg X19tMTI4aSBnMSA9IF9tbV9hbmRfc2kxMjgocjEsIG1hc2tsbyk7Ci0rICAgICAgICAgICAgICAg IGcwID0gX21tX2FkZF9lcGkxNihnMCwgX21tX2FkZF9lcGkxNihnMSwgX21tX3NybGlfc2kxMjgo ZzEsIDIpKSk7Ci0rICAgICAgICAgICAgICAgIGcxID0gX21tX3NybGlfc2kxMjgoZzEsIDIpOwot KyAgICAgICAgICAgICAgICBnMCA9IF9tbV9zcmxpX2VwaTE2KF9tbV9hZGRfZXBpMTYoZzAsIGRl bHRhMiksIDIpOwotKyAgICAgICAgICAgICAgICBnMCA9IF9tbV9wYWNrdXNfZXBpMTYoZzAsIGcx KTsKLSsgICAgICAgICAgICAgICAgCi0rICAgICAgICAgICAgICAgIHIwID0gX21tX3NybGlfZXBp MTYocjEsIDgpOwotKyAgICAgICAgICAgICAgICByMSA9IF9tbV9hZGRfZXBpMTYocjAsIF9tbV9z cmxpX3NpMTI4KHIwLCAyKSk7Ci0rICAgICAgICAgICAgICAgIHIxID0gX21tX3NybGlfZXBpMTYo X21tX2FkZF9lcGkxNihyMSwgZGVsdGExKSwgMSk7Ci0rICAgICAgICAgICAgICAgIHIwID0gX21t X3BhY2t1c19lcGkxNihyMCwgcjEpOwotKyAgICAgICAgICAgICAgICAKLSsgICAgICAgICAgICAg ICAgYjEgPSBfbW1fYW5kX3NpMTI4KF9tbV94b3Jfc2kxMjgoYjAsIHIwKSwgbWFzayk7Ci0rICAg ICAgICAgICAgICAgIGIwID0gX21tX3hvcl9zaTEyOChiMCwgYjEpOwotKyAgICAgICAgICAgICAg ICByMCA9IF9tbV94b3Jfc2kxMjgocjAsIGIxKTsKLSsgICAgICAgICAgICAgICAgCi0rICAgICAg ICAgICAgICAgIC8vIGIxIGcxIGIxIGcxIC4uLgotKyAgICAgICAgICAgICAgICBiMSA9IF9tbV91 bnBhY2toaV9lcGk4KGIwLCBnMCk7Ci0rICAgICAgICAgICAgICAgIC8vIGIwIGcwIGIyIGcyIGI0 IGc0IC4uLi4KLSsgICAgICAgICAgICAgICAgYjAgPSBfbW1fdW5wYWNrbG9fZXBpOChiMCwgZzAp OwotKyAgICAgICAgICAgICAgICAKLSsgICAgICAgICAgICAgICAgLy8gcjEgMCByMyAwIC4uLgot KyAgICAgICAgICAgICAgICByMSA9IF9tbV91bnBhY2toaV9lcGk4KHIwLCB6KTsKLSsgICAgICAg ICAgICAgICAgLy8gcjAgMCByMiAwIHI0IDAgLi4uCi0rICAgICAgICAgICAgICAgIHIwID0gX21t X3VucGFja2xvX2VwaTgocjAsIHopOwotKyAgICAgICAgICAgICAgICAKLSsgICAgICAgICAgICAg ICAgLy8gMCBiMCBnMCByMCAwIGIyIGcyIHIyIDAgLi4uCi0rICAgICAgICAgICAgICAgIGcwID0g X21tX3NsbGlfc2kxMjgoX21tX3VucGFja2xvX2VwaTE2KGIwLCByMCksIDEpOwotKyAgICAgICAg ICAgICAgICAvLyAwIGI4IGc4IHI4IDAgYjEwIGcxMCByMTAgMCAuLi4KLSsgICAgICAgICAgICAg ICAgZzEgPSBfbW1fc2xsaV9zaTEyOChfbW1fdW5wYWNraGlfZXBpMTYoYjAsIHIwKSwgMSk7Ci0r ICAgICAgICAgICAgICAgIAotKyAgICAgICAgICAgICAgICAvLyBiMSBnMSByMSAwIGIzIGczIHIz IC4uLi4KLSsgICAgICAgICAgICAgICAgcjAgPSBfbW1fdW5wYWNrbG9fZXBpMTYoYjEsIHIxKTsK LSsgICAgICAgICAgICAgICAgLy8gYjkgZzkgcjkgMCAuLi4KLSsgICAgICAgICAgICAgICAgcjEg PSBfbW1fdW5wYWNraGlfZXBpMTYoYjEsIHIxKTsKLSsgICAgICAgICAgICAgICAgCi0rICAgICAg ICAgICAgICAgIGIwID0gX21tX3NybGlfc2kxMjgoX21tX3VucGFja2xvX2VwaTMyKGcwLCByMCks IDEpOwotKyAgICAgICAgICAgICAgICBiMSA9IF9tbV9zcmxpX3NpMTI4KF9tbV91bnBhY2toaV9l cGkzMihnMCwgcjApLCAxKTsKLSsgICAgICAgICAgICAgICAgCi0rICAgICAgICAgICAgICAgIF9t bV9zdG9yZWxfZXBpNjQoKF9fbTEyOGkqKShkc3QtMSswKSwgYjApOwotKyAgICAgICAgICAgICAg ICBfbW1fc3RvcmVsX2VwaTY0KChfX20xMjhpKikoZHN0LTErNioxKSwgX21tX3NybGlfc2kxMjgo YjAsIDgpKTsKLSsgICAgICAgICAgICAgICAgX21tX3N0b3JlbF9lcGk2NCgoX19tMTI4aSopKGRz dC0xKzYqMiksIGIxKTsKLSsgICAgICAgICAgICAgICAgX21tX3N0b3JlbF9lcGk2NCgoX19tMTI4 aSopKGRzdC0xKzYqMyksIF9tbV9zcmxpX3NpMTI4KGIxLCA4KSk7Ci0rICAgICAgICAgICAgICAg IAotKyAgICAgICAgICAgICAgICBnMCA9IF9tbV9zcmxpX3NpMTI4KF9tbV91bnBhY2tsb19lcGkz MihnMSwgcjEpLCAxKTsKLSsgICAgICAgICAgICAgICAgZzEgPSBfbW1fc3JsaV9zaTEyOChfbW1f dW5wYWNraGlfZXBpMzIoZzEsIHIxKSwgMSk7Ci0rICAgICAgICAgICAgICAgIAotKyAgICAgICAg ICAgICAgICBfbW1fc3RvcmVsX2VwaTY0KChfX20xMjhpKikoZHN0LTErNio0KSwgZzApOwotKyAg ICAgICAgICAgICAgICBfbW1fc3RvcmVsX2VwaTY0KChfX20xMjhpKikoZHN0LTErNio1KSwgX21t X3NybGlfc2kxMjgoZzAsIDgpKTsKLSsgICAgICAgICAgICAgICAgCi0rICAgICAgICAgICAgICAg IF9tbV9zdG9yZWxfZXBpNjQoKF9fbTEyOGkqKShkc3QtMSs2KjYpLCBnMSk7Ci0rICAgICAgICAg ICAgfQotKyAgICAgICAgfQotKyNlbmRpZgotKyAgICAgICAgCi0gICAgICAgICBpZiggYmx1ZSA+ IDAgKQotICAgICAgICAgewotICAgICAgICAgICAgIGZvciggOyBiYXllciA8PSBiYXllcl9lbmQg LSAyOyBiYXllciArPSAyLCBkc3QgKz0gNiApCi1AQCAtMTc4OSw3ICsyMDEyLDcgQEAKLSAgICAg ICAgICAgICAgICAgZHN0Wy0xXSA9ICh1Y2hhcil0MDsKLSAgICAgICAgICAgICAgICAgZHN0WzBd ID0gKHVjaGFyKXQxOwotICAgICAgICAgICAgICAgICBkc3RbMV0gPSBiYXllcltiYXllcl9zdGVw KzFdOwotLQotKyAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgdDAgPSAoYmF5ZXJb Ml0gKyBiYXllcltiYXllcl9zdGVwKjIrMl0gKyAxKSA+PiAxOwotICAgICAgICAgICAgICAgICB0 MSA9IChiYXllcltiYXllcl9zdGVwKzFdICsgYmF5ZXJbYmF5ZXJfc3RlcCszXSArIDEpID4+IDE7 Ci0gICAgICAgICAgICAgICAgIGRzdFsyXSA9ICh1Y2hhcil0MDsKLUBAIC0xODA4LDcgKzIwMzEs NyBAQAotICAgICAgICAgICAgICAgICBkc3RbMV0gPSAodWNoYXIpdDA7Ci0gICAgICAgICAgICAg ICAgIGRzdFswXSA9ICh1Y2hhcil0MTsKLSAgICAgICAgICAgICAgICAgZHN0Wy0xXSA9IGJheWVy W2JheWVyX3N0ZXArMV07Ci0tCi0rICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICB0 MCA9IChiYXllclsyXSArIGJheWVyW2JheWVyX3N0ZXAqMisyXSArIDEpID4+IDE7Ci0gICAgICAg ICAgICAgICAgIHQxID0gKGJheWVyW2JheWVyX3N0ZXArMV0gKyBiYXllcltiYXllcl9zdGVwKzNd ICsgMSkgPj4gMTsKLSAgICAgICAgICAgICAgICAgZHN0WzRdID0gKHVjaGFyKXQwOwotQEAgLTE4 MTYsNyArMjAzOSw3IEBACi0gICAgICAgICAgICAgICAgIGRzdFsyXSA9ICh1Y2hhcil0MTsKLSAg ICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0tCi0rICAgICAgICAKLSAgICAgICAgIGlmKCBiYXll ciA8IGJheWVyX2VuZCApCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgdDAgPSAoYmF5ZXJbMF0g KyBiYXllclsyXSArIGJheWVyW2JheWVyX3N0ZXAqMl0gKwotQEAgLTE4MjksMTAgKzIwNTIsMzEg QEAKLSAgICAgICAgICAgICBiYXllcisrOwotICAgICAgICAgICAgIGRzdCArPSAzOwotICAgICAg ICAgfQotLQotKyAgICAgICAgCi0rICAgICAgICBkc3QwWy00XSA9IGRzdDBbLTFdOwotKyAgICAg ICAgZHN0MFstM10gPSBkc3QwWzBdOwotKyAgICAgICAgZHN0MFstMl0gPSBkc3QwWzFdOwotKyAg ICAgICAgZHN0MFtzaXplLndpZHRoKjMtMV0gPSBkc3QwW3NpemUud2lkdGgqMy00XTsKLSsgICAg ICAgIGRzdDBbc2l6ZS53aWR0aCozXSA9IGRzdDBbc2l6ZS53aWR0aCozLTNdOwotKyAgICAgICAg ZHN0MFtzaXplLndpZHRoKjMrMV0gPSBkc3QwW3NpemUud2lkdGgqMy0yXTsKLSsgICAgICAgIAot ICAgICAgICAgYmx1ZSA9IC1ibHVlOwotICAgICAgICAgc3RhcnRfd2l0aF9ncmVlbiA9ICFzdGFy dF93aXRoX2dyZWVuOwotICAgICB9Ci0rICAgIAotKyAgICBzaXplID0gZHN0bWF0LnNpemUoKTsK LSsgICAgZHN0MCA9IGRzdG1hdC5kYXRhOwotKyAgICBpZiggc2l6ZS5oZWlnaHQgPiAyICkKLSsg ICAgICAgIGZvciggaW50IGkgPSAwOyBpIDwgc2l6ZS53aWR0aCozOyBpKysgKQotKyAgICAgICAg ewotKyAgICAgICAgICAgIGRzdDBbaV0gPSBkc3QwW2kgKyBkc3Rfc3RlcF07Ci0rICAgICAgICAg ICAgZHN0MFtpICsgKHNpemUuaGVpZ2h0LTEpKmRzdF9zdGVwXSA9IGRzdDBbaSArIChzaXplLmhl aWdodC0yKSpkc3Rfc3RlcF07Ci0rICAgICAgICB9Ci0rICAgIGVsc2UKLSsgICAgICAgIGZvcigg aW50IGkgPSAwOyBpIDwgc2l6ZS53aWR0aCozOyBpKysgKQotKyAgICAgICAgewotKyAgICAgICAg ICAgIGRzdDBbaV0gPSBkc3QwW2kgKyAoc2l6ZS5oZWlnaHQtMSkqZHN0X3N0ZXBdID0gMDsKLSsg ICAgICAgIH0KLSB9Ci0gCi0gICAgIAotQEAgLTIxMzIsOCArMjM3Niw5IEBACi0gICAgICAgICAg ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgIAotICAgICAgICAgICAgIF9fbTEyOGkgZW1hc2sg PSBfbW1fc2V0MV9lcGkzMigweDAwMDBmZmZmKSwKLS0gICAgICAgICAgICBvbWFzayA9IF9tbV9z ZXQxX2VwaTMyKDB4ZmZmZjAwMDApLAotLSAgICAgICAgICAgIHogPSBfbW1fc2V0emVyb19zaTEy OCgpOwotKyAgICAgICAgICAgICAgICBvbWFzayA9IF9tbV9zZXQxX2VwaTMyKDB4ZmZmZjAwMDAp LAotKyAgICAgICAgICAgICAgICBhbGxfb25lcyA9IF9tbV9zZXQxX2VwaTE2KDEpLAotKyAgICAg ICAgICAgICAgICB6ID0gX21tX3NldHplcm9fc2kxMjgoKTsKLSAgICAgICAgICAgICBfX20xMjgg XzBfNSA9IF9tbV9zZXQxX3BzKDAuNWYpOwotICAgICAgICAgICAgIAotICAgICAgICAgICAgICNk ZWZpbmUgX21tX21lcmdlX2VwaTE2KGEsIGIpIFwKLUBAIC0yMzA3LDcgKzI1NTIsNyBAQAotICAg ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgLy8gZ3JhZE5XCi0gICAgICAgICAgICAg ICAgIG1hc2sgPSBfbW1fY21wZ3RfZXBpMTYoVCwgZ3JhZE5XKTsKLS0gICAgICAgICAgICAgICAg bmcgPSBfbW1fc3ViX2VwaTE2KG5nLCBtYXNrKTsKLSsgICAgICAgICAgICAgICAgbmcgPSBfbW1f bWF4X2VwaTE2KF9tbV9zdWJfZXBpMTYobmcsIG1hc2spLCBhbGxfb25lcyk7Ci0gICAgICAgICAg ICAgICAgIAotICAgICAgICAgICAgICAgICBfX20xMjggbmdmMCwgbmdmMTsKLSAgICAgICAgICAg ICAgICAgbmdmMCA9IF9tbV9kaXZfcHMoXzBfNSwgX21tX2N2dGxvZXBpMTZfcHMobmcpKTsKLUBA IC0yNjU3LDEyICsyOTAyLDE5IEBACi0gICAgICAgICAgICAgfQotICAgICAgICAgICAgIH0KLSAg ICAgICAgICAgICBicmVhazsKLSsgICAgICAgIAotKyAgICAgICAgY2FzZSBDVl9CYXllckJHMkdS QVk6IGNhc2UgQ1ZfQmF5ZXJHQjJHUkFZOiBjYXNlIENWX0JheWVyUkcyR1JBWTogY2FzZSBDVl9C YXllckdSMkdSQVk6Ci0rICAgICAgICAgICAgaWYoZGNuIDw9IDApIGRjbiA9IDE7Ci0rICAgICAg ICAgICAgQ1ZfQXNzZXJ0KCBzY24gPT0gMSAmJiBkY24gPT0gMSAmJiBkZXB0aCA9PSBDVl84VSAp OwotKyAgICAgICAgICAgIGRzdC5jcmVhdGUoc3osIGRlcHRoKTsKLSsgICAgICAgICAgICBCYXll cjJHcmF5Xzh1KHNyYywgZHN0LCBjb2RlKTsKLSsgICAgICAgICAgICBicmVhazsgICAgCi0gICAg ICAgICAgICAgCi0gICAgICAgICBjYXNlIENWX0JheWVyQkcyQkdSOiBjYXNlIENWX0JheWVyR0Iy QkdSOiBjYXNlIENWX0JheWVyUkcyQkdSOiBjYXNlIENWX0JheWVyR1IyQkdSOgotICAgICAgICAg Y2FzZSBDVl9CYXllckJHMkJHUl9WTkc6IGNhc2UgQ1ZfQmF5ZXJHQjJCR1JfVk5HOiBjYXNlIENW X0JheWVyUkcyQkdSX1ZORzogY2FzZSBDVl9CYXllckdSMkJHUl9WTkc6Ci0gICAgICAgICAgICAg aWYoZGNuIDw9IDApIGRjbiA9IDM7Ci0gICAgICAgICAgICAgQ1ZfQXNzZXJ0KCBzY24gPT0gMSAm JiBkY24gPT0gMyAmJiBkZXB0aCA9PSBDVl84VSApOwotLSAgICAgICAgICAgIGRzdC5jcmVhdGUo c3osIENWXzhVQzMpOwotKyAgICAgICAgICAgIGRzdC5jcmVhdGUoc3osIENWX01BS0VUWVBFKGRl cHRoLCBkY24pKTsKLSAgICAgICAgICAgICAKLSAgICAgICAgICAgICBpZiggY29kZSA9PSBDVl9C YXllckJHMkJHUiB8fCBjb2RlID09IENWX0JheWVyR0IyQkdSIHx8Ci0gICAgICAgICAgICAgICAg IGNvZGUgPT0gQ1ZfQmF5ZXJSRzJCR1IgfHwgY29kZSA9PSBDVl9CYXllckdSMkJHUiApCi1kaWZm IC11ciBPcGVuQ1YtMi4yLjAvbW9kdWxlcy9pbWdwcm9jL3NyYy91dGlscy5jcHAgb3BlbmN2L21v ZHVsZXMvaW1ncHJvYy9zcmMvdXRpbHMuY3BwCi0tLS0gT3BlbkNWLTIuMi4wL21vZHVsZXMvaW1n cHJvYy9zcmMvdXRpbHMuY3BwCTIwMTAtMTItMDUgMDQ6MzU6MjUuMDAwMDAwMDAwICswMTAwCi0r Kysgb3BlbmN2L21vZHVsZXMvaW1ncHJvYy9zcmMvdXRpbHMuY3BwCTIwMTEtMDUtMjYgMTI6NTY6 MzAuNDY1MDkzMDAyICswMjAwCi1AQCAtNzEsNDEzICs3MSwxNjQgQEAKLSAgICAgcmV0dXJuIChD dlNlcSopY29udG91cl9oZWFkZXI7Ci0gfQotIAotK25hbWVzcGFjZSBjdgotK3sKLSAKLS10eXBl ZGVmIEN2U3RhdHVzIChDVl9TVERDQUxMICogQ3ZDb3B5Tm9uQ29uc3RCb3JkZXJGdW5jKSgKLS0g ICAgY29uc3Qgdm9pZCosIGludCwgQ3ZTaXplLCB2b2lkKiwgaW50LCBDdlNpemUsIGludCwgaW50 ICk7Ci0tCi0tdHlwZWRlZiBDdlN0YXR1cyAoQ1ZfU1REQ0FMTCAqIEN2Q29weU5vbkNvbnN0Qm9y ZGVyRnVuY0kpKAotLSAgICBjb25zdCB2b2lkKiwgaW50LCBDdlNpemUsIEN2U2l6ZSwgaW50LCBp bnQgKTsKLS0KLS1DdlN0YXR1cyBDVl9TVERDQUxMCi0taWN2Q29weVJlcGxpY2F0ZUJvcmRlcl84 dSggY29uc3QgdWNoYXIqIHNyYywgaW50IHNyY3N0ZXAsIEN2U2l6ZSBzcmNyb2ksCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgdWNoYXIqIGRzdCwgaW50IGRzdHN0ZXAsIEN2U2l6ZSBkc3Ry b2ksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRvcCwgaW50IGxlZnQsIGludCBj biwgY29uc3QgdWNoYXIqICkKLStzdGF0aWMgdm9pZCBjb3B5TWFrZUJvcmRlcl84dSggY29uc3Qg dWNoYXIqIHNyYywgc2l6ZV90IHNyY3N0ZXAsIFNpemUgc3Jjcm9pLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1Y2hhciogZHN0LCBzaXplX3QgZHN0c3RlcCwgU2l6ZSBkc3Ryb2ks Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0b3AsIGludCBsZWZ0LCBpbnQg Y24sIGludCBib3JkZXJUeXBlICkKLSB7Ci0gICAgIGNvbnN0IGludCBpc3ogPSAoaW50KXNpemVv ZihpbnQpOwotLSAgICBpbnQgaSwgajsKLSsgICAgaW50IGksIGosIGssIGVsZW1TaXplID0gMTsK LSsgICAgYm9vbCBpbnRNb2RlID0gZmFsc2U7Ci0gCi0gICAgIGlmKCAoY24gfCBzcmNzdGVwIHwg ZHN0c3RlcCB8IChzaXplX3Qpc3JjIHwgKHNpemVfdClkc3QpICUgaXN6ID09IDAgKQotICAgICB7 Ci0tICAgICAgICBjb25zdCBpbnQqIGlzcmMgPSAoY29uc3QgaW50KilzcmM7Ci0tICAgICAgICBp bnQqIGlkc3QgPSAoaW50Kilkc3Q7Ci0tICAgICAgICAKLSAgICAgICAgIGNuIC89IGlzejsKLS0g ICAgICAgIHNyY3N0ZXAgLz0gaXN6OwotLSAgICAgICAgZHN0c3RlcCAvPSBpc3o7Ci0tCi0tICAg ICAgICBzcmNyb2kud2lkdGggKj0gY247Ci0tICAgICAgICBkc3Ryb2kud2lkdGggKj0gY247Ci0t ICAgICAgICBsZWZ0ICo9IGNuOwotLQotLSAgICAgICAgZm9yKCBpID0gMDsgaSA8IGRzdHJvaS5o ZWlnaHQ7IGkrKywgaWRzdCArPSBkc3RzdGVwICkKLS0gICAgICAgIHsKLS0gICAgICAgICAgICBp ZiggaWRzdCArIGxlZnQgIT0gaXNyYyApCi0tICAgICAgICAgICAgICAgIG1lbWNweSggaWRzdCAr IGxlZnQsIGlzcmMsIHNyY3JvaS53aWR0aCpzaXplb2YoaWRzdFswXSkgKTsKLS0gICAgICAgICAg ICBmb3IoIGogPSBsZWZ0IC0gMTsgaiA+PSAwOyBqLS0gKQotLSAgICAgICAgICAgICAgICBpZHN0 W2pdID0gaWRzdFtqICsgY25dOwotLSAgICAgICAgICAgIGZvciggaiA9IGxlZnQrc3Jjcm9pLndp ZHRoOyBqIDwgZHN0cm9pLndpZHRoOyBqKysgKQotLSAgICAgICAgICAgICAgICBpZHN0W2pdID0g aWRzdFtqIC0gY25dOwotLSAgICAgICAgICAgIGlmKCBpID49IHRvcCAmJiBpIDwgdG9wICsgc3Jj cm9pLmhlaWdodCAtIDEgKQotLSAgICAgICAgICAgICAgICBpc3JjICs9IHNyY3N0ZXA7Ci0tICAg ICAgICB9Ci0rICAgICAgICBlbGVtU2l6ZSA9IGlzejsKLSsgICAgICAgIGludE1vZGUgPSB0cnVl OwotICAgICB9Ci0tICAgIGVsc2UKLS0gICAgewotLSAgICAgICAgc3Jjcm9pLndpZHRoICo9IGNu OwotLSAgICAgICAgZHN0cm9pLndpZHRoICo9IGNuOwotLSAgICAgICAgbGVmdCAqPSBjbjsKLSAK LS0gICAgICAgIGZvciggaSA9IDA7IGkgPCBkc3Ryb2kuaGVpZ2h0OyBpKyssIGRzdCArPSBkc3Rz dGVwICkKLS0gICAgICAgIHsKLS0gICAgICAgICAgICBpZiggZHN0ICsgbGVmdCAhPSBzcmMgKQot LSAgICAgICAgICAgICAgICBtZW1jcHkoIGRzdCArIGxlZnQsIHNyYywgc3Jjcm9pLndpZHRoICk7 Ci0tICAgICAgICAgICAgZm9yKCBqID0gbGVmdCAtIDE7IGogPj0gMDsgai0tICkKLS0gICAgICAg ICAgICAgICAgZHN0W2pdID0gZHN0W2ogKyBjbl07Ci0tICAgICAgICAgICAgZm9yKCBqID0gbGVm dCtzcmNyb2kud2lkdGg7IGogPCBkc3Ryb2kud2lkdGg7IGorKyApCi0tICAgICAgICAgICAgICAg IGRzdFtqXSA9IGRzdFtqIC0gY25dOwotLSAgICAgICAgICAgIGlmKCBpID49IHRvcCAmJiBpIDwg dG9wICsgc3Jjcm9pLmhlaWdodCAtIDEgKQotLSAgICAgICAgICAgICAgICBzcmMgKz0gc3Jjc3Rl cDsKLS0gICAgICAgIH0KLSsgICAgQXV0b0J1ZmZlcjxpbnQ+IF90YWIoKGRzdHJvaS53aWR0aCAt IHNyY3JvaS53aWR0aCkqY24pOwotKyAgICBpbnQqIHRhYiA9IF90YWI7Ci0rICAgIGludCByaWdo dCA9IGRzdHJvaS53aWR0aCAtIHNyY3JvaS53aWR0aCAtIGxlZnQ7Ci0rICAgIGludCBib3R0b20g PSBkc3Ryb2kuaGVpZ2h0IC0gc3Jjcm9pLmhlaWdodCAtIHRvcDsKLSsgICAgCi0rICAgIGZvcigg aSA9IDA7IGkgPCBsZWZ0OyBpKysgKQotKyAgICB7Ci0rICAgICAgICBqID0gYm9yZGVySW50ZXJw b2xhdGUoaSAtIGxlZnQsIHNyY3JvaS53aWR0aCwgYm9yZGVyVHlwZSkqY247Ci0rICAgICAgICBm b3IoIGsgPSAwOyBrIDwgY247IGsrKyApCi0rICAgICAgICAgICAgdGFiW2kqY24gKyBrXSA9IGog KyBrOwotICAgICB9Ci0tCi0tICAgIHJldHVybiBDVl9PSzsKLS19Ci0tCi0tCi0tc3RhdGljIEN2 U3RhdHVzIENWX1NURENBTEwKLS1pY3ZDb3B5UmVmbGVjdDEwMUJvcmRlcl84dSggY29uc3QgdWNo YXIqIHNyYywgaW50IHNyY3N0ZXAsIEN2U2l6ZSBzcmNyb2ksCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVjaGFyKiBkc3QsIGludCBkc3RzdGVwLCBDdlNpemUgZHN0cm9pLAotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgdG9wLCBpbnQgbGVmdCwgaW50IGNuICkKLS17Ci0t ICAgIGNvbnN0IGludCBpc3ogPSAoaW50KXNpemVvZihpbnQpOwotLSAgICBpbnQgaSwgaiwgaywg dCwgZGosIHRhYl9zaXplLCBpbnRfbW9kZSA9IDA7Ci0tICAgIGNvbnN0IGludCogaXNyYyA9IChj b25zdCBpbnQqKXNyYzsKLS0gICAgaW50KiBpZHN0ID0gKGludCopZHN0LCAqdGFiOwotLQotLSAg ICBpZiggKGNuIHwgc3Jjc3RlcCB8IGRzdHN0ZXAgfCAoc2l6ZV90KXNyYyB8IChzaXplX3QpZHN0 KSAlIGlzeiA9PSAwICkKLSsgICAgCi0rICAgIGZvciggaSA9IDA7IGkgPCByaWdodDsgaSsrICkK LSAgICAgewotLSAgICAgICAgY24gLz0gaXN6OwotLSAgICAgICAgc3Jjc3RlcCAvPSBpc3o7Ci0t ICAgICAgICBkc3RzdGVwIC89IGlzejsKLS0KLS0gICAgICAgIGludF9tb2RlID0gMTsKLSsgICAg ICAgIGogPSBib3JkZXJJbnRlcnBvbGF0ZShzcmNyb2kud2lkdGggKyBpLCBzcmNyb2kud2lkdGgs IGJvcmRlclR5cGUpKmNuOwotKyAgICAgICAgZm9yKCBrID0gMDsgayA8IGNuOyBrKysgKQotKyAg ICAgICAgICAgIHRhYlsoaStsZWZ0KSpjbiArIGtdID0gaiArIGs7Ci0gICAgIH0KLSAKLSAgICAg c3Jjcm9pLndpZHRoICo9IGNuOwotICAgICBkc3Ryb2kud2lkdGggKj0gY247Ci0gICAgIGxlZnQg Kj0gY247Ci0rICAgIHJpZ2h0ICo9IGNuOwotKyAgICAKLSsgICAgdWNoYXIqIGRzdElubmVyID0g ZHN0ICsgZHN0c3RlcCp0b3AgKyBsZWZ0KmVsZW1TaXplOwotIAotLSAgICB0YWJfc2l6ZSA9IGRz dHJvaS53aWR0aCAtIHNyY3JvaS53aWR0aDsKLS0gICAgdGFiID0gKGludCopY3ZTdGFja0FsbG9j KCB0YWJfc2l6ZSpzaXplb2YodGFiWzBdKSApOwotLQotLSAgICBpZiggc3Jjcm9pLndpZHRoID09 IDEgKQotLSAgICB7Ci0tICAgICAgICBmb3IoIGsgPSAwOyBrIDwgY247IGsrKyApCi0tICAgICAg ICAgICAgZm9yKCBpID0gMDsgaSA8IHRhYl9zaXplOyBpICs9IGNuICkKLS0gICAgICAgICAgICAg ICAgdGFiW2kgKyBrXSA9IGsgKyBsZWZ0OwotLSAgICB9Ci0tICAgIGVsc2UKLSsgICAgZm9yKCBp ID0gMDsgaSA8IHNyY3JvaS5oZWlnaHQ7IGkrKywgZHN0SW5uZXIgKz0gZHN0c3RlcCwgc3JjICs9 IHNyY3N0ZXAgKQotICAgICB7Ci0tICAgICAgICBqID0gZGogPSBjbjsKLS0gICAgICAgIGZvcigg aSA9IGxlZnQgLSBjbjsgaSA+PSAwOyBpIC09IGNuICkKLS0gICAgICAgIHsKLS0gICAgICAgICAg ICBmb3IoIGsgPSAwOyBrIDwgY247IGsrKyApCi0tICAgICAgICAgICAgICAgIHRhYltpICsga10g PSBqICsgayArIGxlZnQ7Ci0tICAgICAgICAgICAgaWYoICh1bnNpZ25lZCkoaiArPSBkaikgPj0g KHVuc2lnbmVkKXNyY3JvaS53aWR0aCApCi0tICAgICAgICAgICAgICAgIGogLT0gMipkaiwgZGog PSAtZGo7Ci0tICAgICAgICB9Ci0rICAgICAgICBpZiggZHN0SW5uZXIgIT0gc3JjICkKLSsgICAg ICAgICAgICBtZW1jcHkoZHN0SW5uZXIsIHNyYywgc3Jjcm9pLndpZHRoKmVsZW1TaXplKTsKLSAg ICAgICAgIAotLSAgICAgICAgaiA9IHNyY3JvaS53aWR0aCAtIGNuKjI7Ci0tICAgICAgICBkaiA9 IC1jbjsKLS0gICAgICAgIGZvciggaSA9IGxlZnQ7IGkgPCB0YWJfc2l6ZTsgaSArPSBjbiApCi0r ICAgICAgICBpZiggaW50TW9kZSApCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgZm9yKCBrID0g MDsgayA8IGNuOyBrKysgKQotLSAgICAgICAgICAgICAgICB0YWJbaSArIGtdID0gaiArIGsgKyBs ZWZ0OwotLSAgICAgICAgICAgIGlmKCAodW5zaWduZWQpKGogKz0gZGopID49ICh1bnNpZ25lZClz cmNyb2kud2lkdGggKQotLSAgICAgICAgICAgICAgICBqIC09IDIqZGosIGRqID0gLWRqOwotKyAg ICAgICAgICAgIGNvbnN0IGludCogaXNyYyA9IChpbnQqKXNyYzsKLSsgICAgICAgICAgICBpbnQq IGlkc3RJbm5lciA9IChpbnQqKWRzdElubmVyOwotKyAgICAgICAgICAgIGZvciggaiA9IDA7IGog PCBsZWZ0OyBqKysgKQotKyAgICAgICAgICAgICAgICBpZHN0SW5uZXJbaiAtIGxlZnRdID0gaXNy Y1t0YWJbal1dOwotKyAgICAgICAgICAgIGZvciggaiA9IDA7IGogPCByaWdodDsgaisrICkKLSsg ICAgICAgICAgICAgICAgaWRzdElubmVyW2ogKyBzcmNyb2kud2lkdGhdID0gaXNyY1t0YWJbaiAr IGxlZnRdXTsKLSAgICAgICAgIH0KLS0gICAgfQotLQotLSAgICBpZiggaW50X21vZGUgKQotLSAg ICB7Ci0tICAgICAgICBpZHN0ICs9IHRvcCpkc3RzdGVwOwotLSAgICAgICAgZm9yKCBpID0gMDsg aSA8IHNyY3JvaS5oZWlnaHQ7IGkrKywgaXNyYyArPSBzcmNzdGVwLCBpZHN0ICs9IGRzdHN0ZXAg KQotKyAgICAgICAgZWxzZQotICAgICAgICAgewotLSAgICAgICAgICAgIGlmKCBpZHN0ICsgbGVm dCAhPSBpc3JjICkKLS0gICAgICAgICAgICAgICAgbWVtY3B5KCBpZHN0ICsgbGVmdCwgaXNyYywg c3Jjcm9pLndpZHRoKnNpemVvZihpZHN0WzBdKSApOwotICAgICAgICAgICAgIGZvciggaiA9IDA7 IGogPCBsZWZ0OyBqKysgKQotLSAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICAgayA9IHRh YltqXTsgCi0tICAgICAgICAgICAgICAgIGlkc3Rbal0gPSBpZHN0W2tdOwotLSAgICAgICAgICAg IH0KLS0gICAgICAgICAgICBmb3IoIDsgaiA8IHRhYl9zaXplOyBqKysgKQotLSAgICAgICAgICAg IHsKLS0gICAgICAgICAgICAgICAgayA9IHRhYltqXTsKLS0gICAgICAgICAgICAgICAgaWRzdFtq ICsgc3Jjcm9pLndpZHRoXSA9IGlkc3Rba107Ci0tICAgICAgICAgICAgfQotKyAgICAgICAgICAg ICAgICBkc3RJbm5lcltqIC0gbGVmdF0gPSBzcmNbdGFiW2pdXTsKLSsgICAgICAgICAgICBmb3Io IGogPSAwOyBqIDwgcmlnaHQ7IGorKyApCi0rICAgICAgICAgICAgICAgIGRzdElubmVyW2ogKyBz cmNyb2kud2lkdGhdID0gc3JjW3RhYltqICsgbGVmdF1dOwotICAgICAgICAgfQotLSAgICAgICAg aXNyYyAtPSBzcmNyb2kuaGVpZ2h0KnNyY3N0ZXA7Ci0tICAgICAgICBpZHN0IC09ICh0b3AgKyBz cmNyb2kuaGVpZ2h0KSpkc3RzdGVwOwotICAgICB9Ci0tICAgIGVsc2UKLSsgICAgCi0rICAgIGRz dHJvaS53aWR0aCAqPSBlbGVtU2l6ZTsKLSsgICAgZHN0ICs9IGRzdHN0ZXAqdG9wOwotKyAgICAK LSsgICAgZm9yKCBpID0gMDsgaSA8IHRvcDsgaSsrICkKLSAgICAgewotLSAgICAgICAgZHN0ICs9 IHRvcCpkc3RzdGVwOwotLSAgICAgICAgZm9yKCBpID0gMDsgaSA8IHNyY3JvaS5oZWlnaHQ7IGkr Kywgc3JjICs9IHNyY3N0ZXAsIGRzdCArPSBkc3RzdGVwICkKLS0gICAgICAgIHsKLS0gICAgICAg ICAgICBpZiggZHN0ICsgbGVmdCAhPSBzcmMgKQotLSAgICAgICAgICAgICAgICBtZW1jcHkoIGRz dCArIGxlZnQsIHNyYywgc3Jjcm9pLndpZHRoICk7Ci0tICAgICAgICAgICAgZm9yKCBqID0gMDsg aiA8IGxlZnQ7IGorKyApCi0tICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgICBrID0gdGFi W2pdOyAKLS0gICAgICAgICAgICAgICAgZHN0W2pdID0gZHN0W2tdOwotLSAgICAgICAgICAgIH0K LS0gICAgICAgICAgICBmb3IoIDsgaiA8IHRhYl9zaXplOyBqKysgKQotLSAgICAgICAgICAgIHsK LS0gICAgICAgICAgICAgICAgayA9IHRhYltqXTsKLS0gICAgICAgICAgICAgICAgZHN0W2ogKyBz cmNyb2kud2lkdGhdID0gZHN0W2tdOwotLSAgICAgICAgICAgIH0KLS0gICAgICAgIH0KLS0gICAg ICAgIHNyYyAtPSBzcmNyb2kuaGVpZ2h0KnNyY3N0ZXA7Ci0tICAgICAgICBkc3QgLT0gKHRvcCAr IHNyY3JvaS5oZWlnaHQpKmRzdHN0ZXA7Ci0rICAgICAgICBqID0gYm9yZGVySW50ZXJwb2xhdGUo aSAtIHRvcCwgc3Jjcm9pLmhlaWdodCwgYm9yZGVyVHlwZSk7Ci0rICAgICAgICBtZW1jcHkoZHN0 ICsgKGkgLSB0b3ApKmRzdHN0ZXAsIGRzdCArIGoqZHN0c3RlcCwgZHN0cm9pLndpZHRoKTsKLSAg ICAgfQotLQotLSAgICBmb3IoIHQgPSAwOyB0IDwgMjsgdCsrICkKLSsgICAgCi0rICAgIGZvcigg aSA9IDA7IGkgPCBib3R0b207IGkrKyApCi0gICAgIHsKLS0gICAgICAgIGludCBpMSwgaTIsIGRp OwotLSAgICAgICAgaWYoIHQgPT0gMCApCi0tICAgICAgICAgICAgaTEgPSB0b3AtMSwgaTIgPSAw LCBkaSA9IC0xLCBqID0gMSwgZGogPSAxOwotLSAgICAgICAgZWxzZQotLSAgICAgICAgICAgIGkx ID0gdG9wK3NyY3JvaS5oZWlnaHQsIGkyPWRzdHJvaS5oZWlnaHQsIGRpID0gMSwgaiA9IHNyY3Jv aS5oZWlnaHQtMiwgZGogPSAtMTsKLS0gICAgICAgIAotLSAgICAgICAgZm9yKCBpID0gaTE7IChk aSA+IDAgJiYgaSA8IGkyKSB8fCAoZGkgPCAwICYmIGkgPiBpMik7IGkgKz0gZGkgKQotLSAgICAg ICAgewotLSAgICAgICAgICAgIGlmKCBpbnRfbW9kZSApCi0tICAgICAgICAgICAgewotLSAgICAg ICAgICAgICAgICBjb25zdCBpbnQqIHMgPSBpZHN0ICsgaSpkc3RzdGVwOwotLSAgICAgICAgICAg ICAgICBpbnQqIGQgPSBpZHN0ICsgKGordG9wKSpkc3RzdGVwOwotLSAgICAgICAgICAgICAgICBm b3IoIGsgPSAwOyBrIDwgZHN0cm9pLndpZHRoOyBrKysgKQotLSAgICAgICAgICAgICAgICAgICAg ZFtrXSA9IHNba107Ci0tICAgICAgICAgICAgfQotLSAgICAgICAgICAgIGVsc2UKLS0gICAgICAg ICAgICB7Ci0tICAgICAgICAgICAgICAgIGNvbnN0IHVjaGFyKiBzID0gZHN0ICsgaSpkc3RzdGVw OwotLSAgICAgICAgICAgICAgICB1Y2hhciogZCA9IGRzdCArIChqK3RvcCkqZHN0c3RlcDsKLS0g ICAgICAgICAgICAgICAgZm9yKCBrID0gMDsgayA8IGRzdHJvaS53aWR0aDsgaysrICkKLS0gICAg ICAgICAgICAgICAgICAgIGRba10gPSBzW2tdOwotLSAgICAgICAgICAgIH0KLS0KLS0gICAgICAg ICAgICBpZiggKHVuc2lnbmVkKShqICs9IGRqKSA+PSAodW5zaWduZWQpc3Jjcm9pLmhlaWdodCAp Ci0tICAgICAgICAgICAgICAgIGogLT0gMipkaiwgZGogPSAtZGo7Ci0tICAgICAgICB9Ci0rICAg ICAgICBqID0gYm9yZGVySW50ZXJwb2xhdGUoaSArIHNyY3JvaS5oZWlnaHQsIHNyY3JvaS5oZWln aHQsIGJvcmRlclR5cGUpOwotKyAgICAgICAgbWVtY3B5KGRzdCArIChpICsgc3Jjcm9pLmhlaWdo dCkqZHN0c3RlcCwgZHN0ICsgaipkc3RzdGVwLCBkc3Ryb2kud2lkdGgpOwotICAgICB9Ci0tCi0t ICAgIHJldHVybiBDVl9PSzsKLSB9Ci0gCi0gCi0tc3RhdGljIEN2U3RhdHVzIENWX1NURENBTEwK LS1pY3ZDb3B5Q29uc3RCb3JkZXJfOHUoIGNvbnN0IHVjaGFyKiBzcmMsIGludCBzcmNzdGVwLCBD dlNpemUgc3Jjcm9pLAotLSAgICAgICAgICAgICAgICAgICAgICAgdWNoYXIqIGRzdCwgaW50IGRz dHN0ZXAsIEN2U2l6ZSBkc3Ryb2ksCi0tICAgICAgICAgICAgICAgICAgICAgICBpbnQgdG9wLCBp bnQgbGVmdCwgaW50IGNuLCBjb25zdCB1Y2hhciogdmFsdWUgKQotK3N0YXRpYyB2b2lkIGNvcHlN YWtlQ29uc3RCb3JkZXJfOHUoIGNvbnN0IHVjaGFyKiBzcmMsIHNpemVfdCBzcmNzdGVwLCBTaXpl IHNyY3JvaSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1Y2hhciogZHN0 LCBzaXplX3QgZHN0c3RlcCwgU2l6ZSBkc3Ryb2ksCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50IHRvcCwgaW50IGxlZnQsIGludCBjbiwgY29uc3QgdWNoYXIqIHZhbHVl ICkKLSB7Ci0tICAgIGNvbnN0IGludCBpc3ogPSAoaW50KXNpemVvZihpbnQpOwotLSAgICBpbnQg aSwgaiwgazsKLS0gICAgaWYoIChjbiB8IHNyY3N0ZXAgfCBkc3RzdGVwIHwgKHNpemVfdClzcmMg fCAoc2l6ZV90KWRzdCB8IChzaXplX3QpdmFsdWUpICUgaXN6ID09IDAgKQotKyAgICBpbnQgaSwg ajsKLSsgICAgQXV0b0J1ZmZlcjx1Y2hhcj4gX2NvbnN0QnVmKGRzdHJvaS53aWR0aCpjbik7Ci0r ICAgIHVjaGFyKiBjb25zdEJ1ZiA9IF9jb25zdEJ1ZjsKLSsgICAgaW50IHJpZ2h0ID0gZHN0cm9p LndpZHRoIC0gc3Jjcm9pLndpZHRoIC0gbGVmdDsKLSsgICAgaW50IGJvdHRvbSA9IGRzdHJvaS5o ZWlnaHQgLSBzcmNyb2kuaGVpZ2h0IC0gdG9wOwotKyAgICAKLSsgICAgZm9yKCBpID0gMDsgaSA8 IGRzdHJvaS53aWR0aDsgaSsrICkKLSAgICAgewotLSAgICAgICAgY29uc3QgaW50KiBpc3JjID0g KGNvbnN0IGludCopc3JjOwotLSAgICAgICAgaW50KiBpZHN0ID0gKGludCopZHN0OwotLSAgICAg ICAgY29uc3QgaW50KiBpdmFsdWUgPSAoY29uc3QgaW50Kil2YWx1ZTsKLS0gICAgICAgIGludCB2 MCA9IGl2YWx1ZVswXTsKLS0gICAgICAgIAotLSAgICAgICAgY24gLz0gaXN6OwotLSAgICAgICAg c3Jjc3RlcCAvPSBpc3o7Ci0tICAgICAgICBkc3RzdGVwIC89IGlzejsKLS0KLS0gICAgICAgIHNy Y3JvaS53aWR0aCAqPSBjbjsKLS0gICAgICAgIGRzdHJvaS53aWR0aCAqPSBjbjsKLS0gICAgICAg IGxlZnQgKj0gY247Ci0tCi0tICAgICAgICBmb3IoIGogPSAxOyBqIDwgY247IGorKyApCi0tICAg ICAgICAgICAgaWYoIGl2YWx1ZVtqXSAhPSBpdmFsdWVbMF0gKQotLSAgICAgICAgICAgICAgICBi cmVhazsKLS0KLS0gICAgICAgIGlmKCBqID09IGNuICkKLS0gICAgICAgICAgICBjbiA9IDE7Ci0t Ci0tICAgICAgICBpZiggZHN0cm9pLndpZHRoIDw9IDAgKQotLSAgICAgICAgICAgIHJldHVybiBD Vl9PSzsKLS0KLS0gICAgICAgIGZvciggaSA9IDA7IGkgPCBkc3Ryb2kuaGVpZ2h0OyBpKyssIGlk c3QgKz0gZHN0c3RlcCApCi0tICAgICAgICB7Ci0tICAgICAgICAgICAgaWYoIGkgPCB0b3AgfHwg aSA+PSB0b3AgKyBzcmNyb2kuaGVpZ2h0ICkKLS0gICAgICAgICAgICB7Ci0tICAgICAgICAgICAg ICAgIGlmKCBjbiA9PSAxICkKLS0gICAgICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgICAg ICAgZm9yKCBqID0gMDsgaiA8IGRzdHJvaS53aWR0aDsgaisrICkKLS0gICAgICAgICAgICAgICAg ICAgICAgICBpZHN0W2pdID0gdjA7Ci0tICAgICAgICAgICAgICAgIH0KLS0gICAgICAgICAgICAg ICAgZWxzZQotLSAgICAgICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAgICAgICBmb3IoIGog PSAwOyBqIDwgY247IGorKyApCi0tICAgICAgICAgICAgICAgICAgICAgICAgaWRzdFtqXSA9IGl2 YWx1ZVtqXTsKLS0gICAgICAgICAgICAgICAgICAgIGZvciggOyBqIDwgZHN0cm9pLndpZHRoOyBq KysgKQotLSAgICAgICAgICAgICAgICAgICAgICAgIGlkc3Rbal0gPSBpZHN0W2ogLSBjbl07Ci0t ICAgICAgICAgICAgICAgIH0KLS0gICAgICAgICAgICAgICAgY29udGludWU7Ci0tICAgICAgICAg ICAgfQotLQotLSAgICAgICAgICAgIGlmKCBjbiA9PSAxICkKLS0gICAgICAgICAgICB7Ci0tICAg ICAgICAgICAgICAgIGZvciggaiA9IDA7IGogPCBsZWZ0OyBqKysgKQotLSAgICAgICAgICAgICAg ICAgICAgaWRzdFtqXSA9IHYwOwotLSAgICAgICAgICAgICAgICBmb3IoIGogPSBzcmNyb2kud2lk dGggKyBsZWZ0OyBqIDwgZHN0cm9pLndpZHRoOyBqKysgKQotLSAgICAgICAgICAgICAgICAgICAg aWRzdFtqXSA9IHYwOwotLSAgICAgICAgICAgIH0KLS0gICAgICAgICAgICBlbHNlCi0tICAgICAg ICAgICAgewotLSAgICAgICAgICAgICAgICBmb3IoIGsgPSAwOyBrIDwgY247IGsrKyApCi0tICAg ICAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICAgICAgIGZvciggaiA9IDA7IGogPCBsZWZ0 OyBqICs9IGNuICkKLS0gICAgICAgICAgICAgICAgICAgICAgICBpZHN0W2ora10gPSBpdmFsdWVb a107Ci0tICAgICAgICAgICAgICAgICAgICBmb3IoIGogPSBzcmNyb2kud2lkdGggKyBsZWZ0OyBq IDwgZHN0cm9pLndpZHRoOyBqICs9IGNuICkKLS0gICAgICAgICAgICAgICAgICAgICAgICBpZHN0 W2ora10gPSBpdmFsdWVba107Ci0tICAgICAgICAgICAgICAgIH0KLS0gICAgICAgICAgICB9Ci0t Ci0tICAgICAgICAgICAgaWYoIGlkc3QgKyBsZWZ0ICE9IGlzcmMgKQotLSAgICAgICAgICAgICAg ICBmb3IoIGogPSAwOyBqIDwgc3Jjcm9pLndpZHRoOyBqKysgKQotLSAgICAgICAgICAgICAgICAg ICAgaWRzdFtqICsgbGVmdF0gPSBpc3JjW2pdOwotLSAgICAgICAgICAgIGlzcmMgKz0gc3Jjc3Rl cDsKLS0gICAgICAgIH0KLSsgICAgICAgIGZvciggaiA9IDA7IGogPCBjbjsgaisrICkKLSsgICAg ICAgICAgICBjb25zdEJ1ZltpKmNuICsgal0gPSB2YWx1ZVtqXTsKLSAgICAgfQotLSAgICBlbHNl Ci0rICAgIAotKyAgICBzcmNyb2kud2lkdGggKj0gY247Ci0rICAgIGRzdHJvaS53aWR0aCAqPSBj bjsKLSsgICAgbGVmdCAqPSBjbjsKLSsgICAgcmlnaHQgKj0gY247Ci0rICAgIAotKyAgICB1Y2hh ciogZHN0SW5uZXIgPSBkc3QgKyBkc3RzdGVwKnRvcCArIGxlZnQ7Ci0rICAgIAotKyAgICBmb3Io IGkgPSAwOyBpIDwgc3Jjcm9pLmhlaWdodDsgaSsrLCBkc3RJbm5lciArPSBkc3RzdGVwLCBzcmMg Kz0gc3Jjc3RlcCApCi0gICAgIHsKLS0gICAgICAgIHVjaGFyIHYwID0gdmFsdWVbMF07Ci0tICAg ICAgICAKLS0gICAgICAgIHNyY3JvaS53aWR0aCAqPSBjbjsKLS0gICAgICAgIGRzdHJvaS53aWR0 aCAqPSBjbjsKLS0gICAgICAgIGxlZnQgKj0gY247Ci0tCi0tICAgICAgICBmb3IoIGogPSAxOyBq IDwgY247IGorKyApCi0tICAgICAgICAgICAgaWYoIHZhbHVlW2pdICE9IHZhbHVlWzBdICkKLS0g ICAgICAgICAgICAgICAgYnJlYWs7Ci0tCi0tICAgICAgICBpZiggaiA9PSBjbiApCi0tICAgICAg ICAgICAgY24gPSAxOwotLQotLSAgICAgICAgaWYoIGRzdHJvaS53aWR0aCA8PSAwICkKLS0gICAg ICAgICAgICByZXR1cm4gQ1ZfT0s7Ci0tCi0tICAgICAgICBmb3IoIGkgPSAwOyBpIDwgZHN0cm9p LmhlaWdodDsgaSsrLCBkc3QgKz0gZHN0c3RlcCApCi0tICAgICAgICB7Ci0tICAgICAgICAgICAg aWYoIGkgPCB0b3AgfHwgaSA+PSB0b3AgKyBzcmNyb2kuaGVpZ2h0ICkKLS0gICAgICAgICAgICB7 Ci0tICAgICAgICAgICAgICAgIGlmKCBjbiA9PSAxICkKLS0gICAgICAgICAgICAgICAgewotLSAg ICAgICAgICAgICAgICAgICAgZm9yKCBqID0gMDsgaiA8IGRzdHJvaS53aWR0aDsgaisrICkKLS0g ICAgICAgICAgICAgICAgICAgICAgICBkc3Rbal0gPSB2MDsKLS0gICAgICAgICAgICAgICAgfQot LSAgICAgICAgICAgICAgICBlbHNlCi0tICAgICAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAg ICAgICAgIGZvciggaiA9IDA7IGogPCBjbjsgaisrICkKLS0gICAgICAgICAgICAgICAgICAgICAg ICBkc3Rbal0gPSB2YWx1ZVtqXTsKLS0gICAgICAgICAgICAgICAgICAgIGZvciggOyBqIDwgZHN0 cm9pLndpZHRoOyBqKysgKQotLSAgICAgICAgICAgICAgICAgICAgICAgIGRzdFtqXSA9IGRzdFtq IC0gY25dOwotLSAgICAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot LSAgICAgICAgICAgIH0KLS0KLS0gICAgICAgICAgICBpZiggY24gPT0gMSApCi0tICAgICAgICAg ICAgewotLSAgICAgICAgICAgICAgICBmb3IoIGogPSAwOyBqIDwgbGVmdDsgaisrICkKLS0gICAg ICAgICAgICAgICAgICAgIGRzdFtqXSA9IHYwOwotLSAgICAgICAgICAgICAgICBmb3IoIGogPSBz cmNyb2kud2lkdGggKyBsZWZ0OyBqIDwgZHN0cm9pLndpZHRoOyBqKysgKQotLSAgICAgICAgICAg ICAgICAgICAgZHN0W2pdID0gdjA7Ci0tICAgICAgICAgICAgfQotLSAgICAgICAgICAgIGVsc2UK LS0gICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAgIGZvciggayA9IDA7IGsgPCBjbjsgaysr ICkKLS0gICAgICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgICAgICAgZm9yKCBqID0gMDsg aiA8IGxlZnQ7IGogKz0gY24gKQotLSAgICAgICAgICAgICAgICAgICAgICAgIGRzdFtqK2tdID0g dmFsdWVba107Ci0tICAgICAgICAgICAgICAgICAgICBmb3IoIGogPSBzcmNyb2kud2lkdGggKyBs ZWZ0OyBqIDwgZHN0cm9pLndpZHRoOyBqICs9IGNuICkKLS0gICAgICAgICAgICAgICAgICAgICAg ICBkc3RbaitrXSA9IHZhbHVlW2tdOwotLSAgICAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAg fQotLQotLSAgICAgICAgICAgIGlmKCBkc3QgKyBsZWZ0ICE9IHNyYyApCi0tICAgICAgICAgICAg ICAgIGZvciggaiA9IDA7IGogPCBzcmNyb2kud2lkdGg7IGorKyApCi0tICAgICAgICAgICAgICAg ICAgICBkc3RbaiArIGxlZnRdID0gc3JjW2pdOwotLSAgICAgICAgICAgIHNyYyArPSBzcmNzdGVw OwotLSAgICAgICAgfQotKyAgICAgICAgaWYoIGRzdElubmVyICE9IHNyYyApCi0rICAgICAgICAg ICAgbWVtY3B5KCBkc3RJbm5lciwgc3JjLCBzcmNyb2kud2lkdGggKTsKLSsgICAgICAgIG1lbWNw eSggZHN0SW5uZXIgLSBsZWZ0LCBjb25zdEJ1ZiwgbGVmdCApOwotKyAgICAgICAgbWVtY3B5KCBk c3RJbm5lciArIHNyY3JvaS53aWR0aCwgY29uc3RCdWYsIHJpZ2h0ICk7Ci0gICAgIH0KLS0KLS0g ICAgcmV0dXJuIENWX09LOwotKyAgICAKLSsgICAgZHN0ICs9IGRzdHN0ZXAqdG9wOwotKyAgICAK LSsgICAgZm9yKCBpID0gMDsgaSA8IHRvcDsgaSsrICkKLSsgICAgICAgIG1lbWNweShkc3QgKyAo aSAtIHRvcCkqZHN0c3RlcCwgY29uc3RCdWYsIGRzdHJvaS53aWR0aCk7Ci0rICAgIAotKyAgICBm b3IoIGkgPSAwOyBpIDwgYm90dG9tOyBpKysgKQotKyAgICAgICAgbWVtY3B5KGRzdCArIChpICsg c3Jjcm9pLmhlaWdodCkqZHN0c3RlcCwgY29uc3RCdWYsIGRzdHJvaS53aWR0aCk7Ci0gfQotIAot LQotLUNWX0lNUEwgdm9pZAotLWN2Q29weU1ha2VCb3JkZXIoIGNvbnN0IEN2QXJyKiBzcmNhcnIs IEN2QXJyKiBkc3RhcnIsIEN2UG9pbnQgb2Zmc2V0LAotLSAgICAgICAgICAgICAgICAgIGludCBi b3JkZXJ0eXBlLCBDdlNjYWxhciB2YWx1ZSApCi0rICAgIAotK3ZvaWQgY29weU1ha2VCb3JkZXIo IGNvbnN0IE1hdCYgc3JjLCBNYXQmIGRzdCwgaW50IHRvcCwgaW50IGJvdHRvbSwKLSsgICAgICAg ICAgICAgICAgICAgIGludCBsZWZ0LCBpbnQgcmlnaHQsIGludCBib3JkZXJUeXBlLCBjb25zdCBT Y2FsYXImIHZhbHVlICkKLSB7Ci0tICAgIEN2TWF0IHNyY3N0dWIsICpzcmMgPSAoQ3ZNYXQqKXNy Y2FycjsKLS0gICAgQ3ZNYXQgZHN0c3R1YiwgKmRzdCA9IChDdk1hdCopZHN0YXJyOwotLSAgICBD dlNpemUgc3Jjc2l6ZSwgZHN0c2l6ZTsKLS0gICAgaW50IHNyY3N0ZXAsIGRzdHN0ZXA7Ci0tICAg IGludCBwaXhfc2l6ZSwgdHlwZTsKLS0KLS0gICAgaWYoICFDVl9JU19NQVQoc3JjKSApCi0tICAg ICAgICBzcmMgPSBjdkdldE1hdCggc3JjLCAmc3Jjc3R1YiApOwotLSAgICAKLS0gICAgaWYoICFD Vl9JU19NQVQoZHN0KSApICAgIAotLSAgICAgICAgZHN0ID0gY3ZHZXRNYXQoIGRzdCwgJmRzdHN0 dWIgKTsKLS0KLS0gICAgaWYoIG9mZnNldC54IDwgMCB8fCBvZmZzZXQueSA8IDAgKQotLSAgICAg ICAgQ1ZfRXJyb3IoIENWX1N0c091dE9mUmFuZ2UsICJPZmZzZXQgKGxlZnQvdG9wIGJvcmRlciB3 aWR0aCkgaXMgbmVnYXRpdmUiICk7Ci0tCi0tICAgIGlmKCBzcmMtPnJvd3MgKyBvZmZzZXQueSA+ IGRzdC0+cm93cyB8fCBzcmMtPmNvbHMgKyBvZmZzZXQueCA+IGRzdC0+Y29scyApCi0tICAgICAg ICBDVl9FcnJvciggQ1ZfU3RzQmFkU2l6ZSwgIlNvdXJjZSBhcnJheSBpcyB0b28gYmlnIG9yIGRl c3RpbmF0aW9uIGFycmF5IGlzIHRvbyBzbWFsbCIgKTsKLS0KLS0gICAgaWYoICFDVl9BUkVfVFlQ RVNfRVEoIHNyYywgZHN0ICkpCi0tICAgICAgICBDVl9FcnJvciggQ1ZfU3RzVW5tYXRjaGVkRm9y bWF0cywgIiIgKTsKLS0KLS0gICAgdHlwZSA9IENWX01BVF9UWVBFKHNyYy0+dHlwZSk7Ci0tICAg IHBpeF9zaXplID0gQ1ZfRUxFTV9TSVpFKHR5cGUpOwotLSAgICBzcmNzaXplID0gY3ZHZXRNYXRT aXplKHNyYyk7Ci0tICAgIGRzdHNpemUgPSBjdkdldE1hdFNpemUoZHN0KTsKLS0gICAgc3Jjc3Rl cCA9IHNyYy0+c3RlcDsKLS0gICAgZHN0c3RlcCA9IGRzdC0+c3RlcDsKLS0gICAgaWYoIHNyY3N0 ZXAgPT0gMCApCi0tICAgICAgICBzcmNzdGVwID0gQ1ZfU1RVQl9TVEVQOwotLSAgICBpZiggZHN0 c3RlcCA9PSAwICkKLS0gICAgICAgIGRzdHN0ZXAgPSBDVl9TVFVCX1NURVA7Ci0tCi0tICAgIGJv cmRlcnR5cGUgJj0gMTU7Ci0tICAgIGlmKCBib3JkZXJ0eXBlID09IElQTF9CT1JERVJfUkVQTElD QVRFICkKLS0gICAgewotLSAgICAgICAgaWN2Q29weVJlcGxpY2F0ZUJvcmRlcl84dSggc3JjLT5k YXRhLnB0ciwgc3Jjc3RlcCwgc3Jjc2l6ZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRzdC0+ZGF0YS5wdHIsIGRzdHN0ZXAsIGRzdHNpemUsCi0tICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBvZmZzZXQueSwgb2Zmc2V0LngsIHBpeF9zaXplICk7Ci0tICAg IH0KLS0gICAgZWxzZSBpZiggYm9yZGVydHlwZSA9PSBJUExfQk9SREVSX1JFRkxFQ1RfMTAxICkK LS0gICAgewotLSAgICAgICAgaWN2Q29weVJlZmxlY3QxMDFCb3JkZXJfOHUoIHNyYy0+ZGF0YS5w dHIsIHNyY3N0ZXAsIHNyY3NpemUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkc3QtPmRhdGEucHRyLCBkc3RzdGVwLCBkc3RzaXplLAotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgb2Zmc2V0LnksIG9mZnNldC54LCBwaXhfc2l6ZSApOwotLSAgICB9Ci0t ICAgIGVsc2UgaWYoIGJvcmRlcnR5cGUgPT0gSVBMX0JPUkRFUl9DT05TVEFOVCApCi0rICAgIENW X0Fzc2VydCggdG9wID49IDAgJiYgYm90dG9tID49IDAgJiYgbGVmdCA+PSAwICYmIHJpZ2h0ID49 IDAgKTsKLSsgICAgCi0rICAgIGRzdC5jcmVhdGUoIHNyYy5yb3dzICsgdG9wICsgYm90dG9tLCBz cmMuY29scyArIGxlZnQgKyByaWdodCwgc3JjLnR5cGUoKSApOwotKyAgICBpZiggYm9yZGVyVHlw ZSAhPSBCT1JERVJfQ09OU1RBTlQgKQotKyAgICAgICAgY29weU1ha2VCb3JkZXJfOHUoIHNyYy5k YXRhLCBzcmMuc3RlcCwgc3JjLnNpemUoKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBk c3QuZGF0YSwgZHN0LnN0ZXAsIGRzdC5zaXplKCksCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgdG9wLCBsZWZ0LCAoaW50KXNyYy5lbGVtU2l6ZSgpLCBib3JkZXJUeXBlICk7Ci0rICAgIGVs c2UKLSAgICAgewotICAgICAgICAgZG91YmxlIGJ1Zls0XTsKLS0gICAgICAgIGN2U2NhbGFyVG9S YXdEYXRhKCAmdmFsdWUsIGJ1Ziwgc3JjLT50eXBlLCAwICk7Ci0tICAgICAgICBpY3ZDb3B5Q29u c3RCb3JkZXJfOHUoIHNyYy0+ZGF0YS5wdHIsIHNyY3N0ZXAsIHNyY3NpemUsCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRzdC0+ZGF0YS5wdHIsIGRzdHN0ZXAsIGRzdHNpemUsCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldC55LCBvZmZzZXQueCwgcGl4X3Np emUsICh1Y2hhciopYnVmICk7Ci0rICAgICAgICBzY2FsYXJUb1Jhd0RhdGEodmFsdWUsIGJ1Ziwg c3JjLnR5cGUoKSk7Ci0rICAgICAgICBjb3B5TWFrZUNvbnN0Qm9yZGVyXzh1KCBzcmMuZGF0YSwg c3JjLnN0ZXAsIHNyYy5zaXplKCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk c3QuZGF0YSwgZHN0LnN0ZXAsIGRzdC5zaXplKCksCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0b3AsIGxlZnQsIChpbnQpc3JjLmVsZW1TaXplKCksICh1Y2hhciopYnVmICk7Ci0g ICAgIH0KLS0gICAgZWxzZQotLSAgICAgICAgQ1ZfRXJyb3IoIENWX1N0c0JhZEZsYWcsICJVbmtu b3duL3Vuc3VwcG9ydGVkIGJvcmRlciB0eXBlIiApOwotK30KLSsgICAgCi0gfQotIAotLW5hbWVz cGFjZSBjdgotLXsKLSAKLS12b2lkIGNvcHlNYWtlQm9yZGVyKCBjb25zdCBNYXQmIHNyYywgTWF0 JiBkc3QsIGludCB0b3AsIGludCBib3R0b20sCi0tICAgICAgICAgICAgICAgICAgICAgaW50IGxl ZnQsIGludCByaWdodCwgaW50IGJvcmRlclR5cGUsIGNvbnN0IFNjYWxhciYgdmFsdWUgKQotK0NW X0lNUEwgdm9pZAotK2N2Q29weU1ha2VCb3JkZXIoIGNvbnN0IEN2QXJyKiBzcmNhcnIsIEN2QXJy KiBkc3RhcnIsIEN2UG9pbnQgb2Zmc2V0LAotKyAgICAgICAgICAgICAgICAgIGludCBib3JkZXJU eXBlLCBDdlNjYWxhciB2YWx1ZSApCi0gewotLSAgICBkc3QuY3JlYXRlKCBzcmMucm93cyArIHRv cCArIGJvdHRvbSwgc3JjLmNvbHMgKyBsZWZ0ICsgcmlnaHQsIHNyYy50eXBlKCkgKTsKLS0gICAg Q3ZNYXQgX3NyYyA9IHNyYywgX2RzdCA9IGRzdDsKLS0gICAgY3ZDb3B5TWFrZUJvcmRlciggJl9z cmMsICZfZHN0LCBQb2ludChsZWZ0LCB0b3ApLCBib3JkZXJUeXBlLCB2YWx1ZSApOwotLX0KLS0K LSsgICAgY3Y6Ok1hdCBzcmMgPSBjdjo6Y3ZhcnJUb01hdChzcmNhcnIpLCBkc3QgPSBjdjo6Y3Zh cnJUb01hdChkc3RhcnIpOwotKyAgICBpbnQgbGVmdCA9IG9mZnNldC54LCByaWdodCA9IGRzdC5j b2xzIC0gc3JjLmNvbHMgLSBsZWZ0OwotKyAgICBpbnQgdG9wID0gb2Zmc2V0LnksIGJvdHRvbSA9 IGRzdC5yb3dzIC0gc3JjLnJvd3MgLSB0b3A7Ci0rICAgIAotKyAgICBDVl9Bc3NlcnQoIGRzdC50 eXBlKCkgPT0gc3JjLnR5cGUoKSApOwotKyAgICBjdjo6Y29weU1ha2VCb3JkZXIoIHNyYywgZHN0 LCB0b3AsIGJvdHRvbSwgbGVmdCwgcmlnaHQsIGJvcmRlclR5cGUsIHZhbHVlICk7Ci0gfQotIAot IC8qIEVuZCBvZiBmaWxlLiAqLwotZGlmZiAtdXIgT3BlbkNWLTIuMi4wL21vZHVsZXMvbWwvc3Jj L2VtLmNwcCBvcGVuY3YvbW9kdWxlcy9tbC9zcmMvZW0uY3BwCi0tLS0gT3BlbkNWLTIuMi4wL21v ZHVsZXMvbWwvc3JjL2VtLmNwcAkyMDEwLTEyLTA1IDA0OjM1OjI1LjAwMDAwMDAwMCArMDEwMAot KysrIG9wZW5jdi9tb2R1bGVzL21sL3NyYy9lbS5jcHAJMjAxMS0wNS0yNiAxMjo1NzowMC43MTkw OTMwMDIgKzAyMDAKLUBAIC01ODEsNyArNTgxLDcgQEAKLSAKLSAgICAgX19CRUdJTl9fOwotIAot LSAgICBjdjo6Uk5HKiBybmcgPSAmY3Y6OnRoZVJORygpOwotKyAgICBjdjo6Uk5HIHJuZygweEZG RkZGRkZGKTsKLSAgICAgaW50IGksIGosIGssIG5zYW1wbGVzLCBkaW1zOwotICAgICBpbnQgaXRl ciA9IDA7Ci0gICAgIGRvdWJsZSBtYXhfZGlzdCA9IERCTF9NQVg7Ci1AQCAtNjA1LDcgKzYwNSw3 IEBACi0gICAgIHsKLSAgICAgICAgIGZvciggaSA9IDA7IGkgPCBuc2FtcGxlczsgaSsrICkKLSAg ICAgICAgICAgICBsYWJlbHMtPmRhdGEuaVtpXSA9IGkqbmNsdXN0ZXJzL25zYW1wbGVzOwotLSAg ICAgICAgY3ZSYW5kU2h1ZmZsZSggbGFiZWxzLCAmcm5nLT5zdGF0ZSApOwotKyAgICAgICAgY3ZS YW5kU2h1ZmZsZSggbGFiZWxzLCAmcm5nLnN0YXRlICk7Ci0gICAgIH0KLSAKLSAgICAgZm9yKCA7 OyApCi1AQCAtNzAyLDcgKzcwMiw3IEBACi0gICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0KiBz OwotICAgICAgICAgICAgICAgICBmb3IoIGogPSAwOyBqIDwgMTA7IGorKyApCi0gICAgICAgICAg ICAgICAgIHsKLS0gICAgICAgICAgICAgICAgICAgIGkgPSAoKnJuZykobnNhbXBsZXMpOwotKyAg ICAgICAgICAgICAgICAgICAgaSA9IHJuZyhuc2FtcGxlcyk7Ci0gICAgICAgICAgICAgICAgICAg ICBpZiggY291bnRlcnMtPmRhdGEuaVtsYWJlbHMtPmRhdGEuaVtpXV0gPiAxICkKLSAgICAgICAg ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgfQotQEAgLTczOCw3ICs3 MzgsNyBAQAotICAgICAgICAgaWYoIGNvdW50ZXJzLT5kYXRhLmlba10gPT0gMCApCi0gICAgICAg ICAgICAgZm9yKDs7KQotICAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICAgaSA9ICgqcm5n KShuc2FtcGxlcyk7Ci0rICAgICAgICAgICAgICAgIGkgPSBybmcobnNhbXBsZXMpOwotICAgICAg ICAgICAgICAgICBqID0gbGFiZWxzLT5kYXRhLmlbaV07Ci0gICAgICAgICAgICAgICAgIGlmKCBj b3VudGVycy0+ZGF0YS5pW2pdID4gMSApCi0gICAgICAgICAgICAgICAgIHsKLWRpZmYgLXVyIE9w ZW5DVi0yLjIuMC9tb2R1bGVzL21sL3NyYy9nYnQuY3BwIG9wZW5jdi9tb2R1bGVzL21sL3NyYy9n YnQuY3BwCi0tLS0gT3BlbkNWLTIuMi4wL21vZHVsZXMvbWwvc3JjL2didC5jcHAJMjAxMC0xMi0w NSAwNDozNToyNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuY3YvbW9kdWxlcy9tbC9zcmMvZ2J0 LmNwcAkyMDExLTA1LTI2IDEyOjU3OjAwLjcyOTA5MzAwMiArMDIwMAotQEAgLTExLDEwICsxMSw2 IEBACi0gI2RlZmluZSBDVl9DTVBfRkxPQVQoYSxiKSAoKGEpIDwgKGIpKQ0KLSBzdGF0aWMgQ1Zf SU1QTEVNRU5UX1FTT1JUX0VYKCBpY3ZTb3J0RmxvYXQsIGZsb2F0LCBDVl9DTVBfRkxPQVQsIGZs b2F0KQ0KLSANCi0tI2lmIEFORFJPSUQNCi0tI2RlZmluZSBleHBsKHgpIGV4cCh4KQ0KLS0jZW5k aWYNCi0tDQotIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotIHN0cmluZyBUb1N0cmluZyhpbnQgaSkN Ci0gew0KLUBAIC00NjEsMTcgKzQ1NywxNyBAQAotICAgICAgICAgew0KLSAgICAgICAgICAgICBm b3IgKGludCBpPTA7IGk8Z2V0X2xlbihzdWJzYW1wbGVfdHJhaW4pOyArK2kpDQotICAgICAgICAg ICAgIHsNCi0tICAgICAgICAgICAgICAgIGxvbmcgZG91YmxlIGV4cF9mayA9IDA7DQotLSAgICAg ICAgICAgICAgICBsb25nIGRvdWJsZSBleHBfc2ZpID0gMDsNCi0rICAgICAgICAgICAgICAgIGRv dWJsZSBleHBfZmsgPSAwOw0KLSsgICAgICAgICAgICAgICAgZG91YmxlIGV4cF9zZmkgPSAwOw0K LSAgICAgICAgICAgICAgICAgaW50IHNfc3RlcCA9IChzYW1wbGVfaWR4LT5jb2xzID4gc2FtcGxl X2lkeC0+cm93cykgPyAxDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzYW1wbGVf aWR4LT5zdGVwL0NWX0VMRU1fU0laRShzYW1wbGVfaWR4LT50eXBlKTsNCi0gICAgICAgICAgICAg ICAgIGludCBpZHggPSAqKHNhbXBsZV9kYXRhICsgc3Vic2FtcGxlX2RhdGFbaV0qc19zdGVwKTsN Ci0gICAgICAgICAgICAgDQotICAgICAgICAgICAgICAgICBmb3IgKGludCBqPTA7IGo8Y2xhc3Nf Y291bnQ7ICsraikNCi0gICAgICAgICAgICAgICAgIHsNCi0tICAgICAgICAgICAgICAgICAgICBs b25nIGRvdWJsZSByZXM7DQotKyAgICAgICAgICAgICAgICAgICAgZG91YmxlIHJlczsNCi0gICAg ICAgICAgICAgICAgICAgICByZXMgPSBjdXJyZW50X2RhdGFbaWR4ICsgaipzdW1fcmVzcG9uc2Ut PmNvbHNdOw0KLS0gICAgICAgICAgICAgICAgICAgIHJlcyA9IGV4cGwocmVzKTsNCi0rICAgICAg ICAgICAgICAgICAgICByZXMgPSBleHAocmVzKTsNCi0gICAgICAgICAgICAgICAgICAgICBpZiAo aiA9PSBrKSBleHBfZmsgPSByZXM7DQotICAgICAgICAgICAgICAgICAgICAgZXhwX3NmaSArPSBy ZXM7DQotICAgICAgICAgICAgICAgICB9DQotQEAgLTYyNSw3ICs2MjEsNyBAQAotIGZsb2F0IEN2 R0JUcmVlczo6ZmluZF9vcHRpbWFsX3ZhbHVlKCBjb25zdCBDdk1hdCogX0lkeCApDQotIHsNCi0g DQotLSAgICBsb25nIGRvdWJsZSBnYW1tYSA9IChsb25nIGRvdWJsZSkwLjA7DQotKyAgICBkb3Vi bGUgZ2FtbWEgPSAoZG91YmxlKTAuMDsNCi0gDQotICAgICBpbnQqIGlkeCA9IF9JZHgtPmRhdGEu aTsNCi0gICAgIGZsb2F0KiByZXNwX2RhdGEgPSBvcmlnX3Jlc3BvbnNlLT5kYXRhLmZsOw0KLUBA IC02MzksNyArNjM1LDcgQEAKLSAgICAgICAgIHsNCi0gICAgICAgICAgICAgZm9yIChpbnQgaT0w OyBpPG47ICsraSkNCi0gICAgICAgICAgICAgICAgIGdhbW1hICs9IHJlc3BfZGF0YVtpZHhbaV1d IC0gY3VyX2RhdGFbaWR4W2ldXTsNCi0tICAgICAgICAgICAgZ2FtbWEgLz0gKGxvbmcgZG91Ymxl KW47DQotKyAgICAgICAgICAgIGdhbW1hIC89IChkb3VibGUpbjsNCi0gICAgICAgICB9OyBicmVh azsNCi0gDQotICAgICBjYXNlIEFCU09MVVRFX0xPU1M6DQotQEAgLTY3MSw3ICs2NjcsNyBAQAot ICAgICAgICAgICAgICAgICBmbG9hdCBkaWYgPSByZXNpZHVhbHNbaV0gLSByX21lZGlhbjsNCi0g ICAgICAgICAgICAgICAgIGdhbW1hICs9IChkZWx0YSA8IGZhYnMoZGlmKSkgPyBTaWduKGRpZikq ZGVsdGEgOiBkaWY7DQotICAgICAgICAgICAgIH0NCi0tICAgICAgICAgICAgZ2FtbWEgLz0gKGxv bmcgZG91YmxlKW47DQotKyAgICAgICAgICAgIGdhbW1hIC89IChkb3VibGUpbjsNCi0gICAgICAg ICAgICAgZ2FtbWEgKz0gcl9tZWRpYW47DQotICAgICAgICAgICAgIGRlbGV0ZVtdIHJlc2lkdWFs czsNCi0gDQotQEAgLTY4MCw5ICs2NzYsOSBAQAotICAgICBjYXNlIERFVklBTkNFX0xPU1M6DQot ICAgICAgICAgew0KLSAgICAgICAgICAgICBmbG9hdCogZ3JhZF9kYXRhID0gZGF0YS0+cmVzcG9u c2VzLT5kYXRhLmZsOw0KLS0gICAgICAgICAgICBsb25nIGRvdWJsZSB0bXAxID0gMDsNCi0tICAg ICAgICAgICAgbG9uZyBkb3VibGUgdG1wMiA9IDA7DQotLSAgICAgICAgICAgIGxvbmcgZG91Ymxl IHRtcCAgPSAwOw0KLSsgICAgICAgICAgICBkb3VibGUgdG1wMSA9IDA7DQotKyAgICAgICAgICAg IGRvdWJsZSB0bXAyID0gMDsNCi0rICAgICAgICAgICAgZG91YmxlIHRtcCAgPSAwOw0KLSAgICAg ICAgICAgICBmb3IgKGludCBpPTA7IGk8bjsgKytpKQ0KLSAgICAgICAgICAgICB7DQotICAgICAg ICAgICAgICAgICB0bXAgPSBncmFkX2RhdGFbaWR4W2ldXTsNCi1AQCAtNjk0LDcgKzY5MCw3IEBA Ci0gICAgICAgICAgICAgICAgIHRtcDIgPSAxOw0KLSAgICAgICAgICAgICB9DQotIA0KLS0gICAg ICAgICAgICBnYW1tYSA9ICgobG9uZyBkb3VibGUpKGNsYXNzX2NvdW50LTEpKSAvIChsb25nIGRv dWJsZSljbGFzc19jb3VudCAqICh0bXAxL3RtcDIpOw0KLSsgICAgICAgICAgICBnYW1tYSA9ICgo ZG91YmxlKShjbGFzc19jb3VudC0xKSkgLyAoZG91YmxlKWNsYXNzX2NvdW50ICogKHRtcDEvdG1w Mik7DQotICAgICAgICAgfTsgYnJlYWs7DQotIA0KLSAgICAgZGVmYXVsdDogYnJlYWs7DQotZGlm ZiAtdXIgT3BlbkNWLTIuMi4wL21vZHVsZXMvbWwvc3JjL25iYXllcy5jcHAgb3BlbmN2L21vZHVs ZXMvbWwvc3JjL25iYXllcy5jcHAKLS0tLSBPcGVuQ1YtMi4yLjAvbW9kdWxlcy9tbC9zcmMvbmJh eWVzLmNwcAkyMDEwLTEyLTA1IDA0OjM1OjI1LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5jdi9t b2R1bGVzL21sL3NyYy9uYmF5ZXMuY3BwCTIwMTEtMDUtMjYgMTI6NTc6MDAuNzMyMDkzMDAyICsw MjAwCi1AQCAtMjU5LDcgKzI1OSw3IEBACi0gICAgICAgICAgICAgZGV0ICo9IHctPmRhdGEuZGJb al07Ci0gCi0gICAgICAgICBDVl9DQUxMKCBjdkRpdiggTlVMTCwgdywgdyApKTsKLS0gICAgICAg IGMtPmRhdGEuZGJbY2xzXSA9IGxvZyggZGV0ICk7Ci0rICAgICAgICBjLT5kYXRhLmRiW2Nsc10g PSBkZXQgPiAwID8gbG9nKGRldCkgOiAtNzAwOwotICAgICB9Ci0gCi0gICAgIHJlc3VsdCA9IHRy dWU7Ci1kaWZmIC11ciBPcGVuQ1YtMi4yLjAvT3BlbkNWTW9kdWxlLmNtYWtlIG9wZW5jdi9PcGVu Q1ZNb2R1bGUuY21ha2UKLS0tLSBPcGVuQ1YtMi4yLjAvT3BlbkNWTW9kdWxlLmNtYWtlCTIwMTAt MTItMDUgMDQ6MzU6MjUuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbmN2L09wZW5DVk1vZHVsZS5j bWFrZQkyMDExLTA1LTI2IDEyOjU3OjU2LjQ0NjA5MzAwMiArMDIwMAotQEAgLTY2LDcgKzY2LDcg QEAKLSAJICAgICAgICAgICAgKQotIAkgICAgZW5kaWYoKQotIAkgICAgc2V0X3RhcmdldF9wcm9w ZXJ0aWVzKCR7dGhlX3RhcmdldH0gUFJPUEVSVElFUwotLQkgICAgICAgIExJTktfRkxBR1MgIi9O T0RFRkFVTFRMSUI6bGliYyIKLSsJICAgICAgICBMSU5LX0ZMQUdTICIvTk9ERUZBVUxUTElCOmxp YmMgL0RFQlVHIgotIAkgICAgICAgICkKLSAJZW5kaWYoKQotIAotZGlmZiAtdXIgT3BlbkNWLTIu Mi4wL3Rlc3RzL2N2L3NyYy9hY29sb3IuY3BwIG9wZW5jdi90ZXN0cy9jdi9zcmMvYWNvbG9yLmNw cAotLS0tIE9wZW5DVi0yLjIuMC90ZXN0cy9jdi9zcmMvYWNvbG9yLmNwcAkyMDEwLTEyLTA1IDA0 OjM1OjI1LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5jdi90ZXN0cy9jdi9zcmMvYWNvbG9yLmNw cAkyMDExLTA1LTI2IDEyOjQ2OjA2LjgzNzA5MzAwMyArMDIwMAotQEAgLTE3MzQsOSArMTczNCw2 IEBACi0gICAgIGludCBiaSA9IDA7Ci0gICAgIGludCBzdGVwID0gc3JjLT5zdGVwOwotIAotLSAg ICBtZW1zZXQoIGRzdC0+ZGF0YS5wdHIsIDAsIGRzdC0+Y29scyozICk7Ci0tICAgIG1lbXNldCgg ZHN0LT5kYXRhLnB0ciArIChkc3QtPnJvd3MtMSkqZHN0LT5zdGVwLCAwLCBkc3QtPmNvbHMqMyAp OwotLQotICAgICBpZiggZndkX2NvZGUgPT0gQ1ZfQmF5ZXJSRzJCR1IgfHwgZndkX2NvZGUgPT0g Q1ZfQmF5ZXJHUjJCR1IgKQotICAgICAgICAgYmkgXj0gMjsKLSAKLUBAIC0xNzQ1LDggKzE3NDIs MTIgQEAKLSAgICAgICAgIGNvbnN0IHVjaGFyKiBwdHIgPSBzcmMtPmRhdGEucHRyICsgaSpzdGVw ICsgMTsKLSAgICAgICAgIHVjaGFyKiBkc3Rfcm93ID0gZHN0LT5kYXRhLnB0ciArIGkqZHN0LT5z dGVwICsgMzsKLSAgICAgICAgIGludCBzYXZlX2NvZGUgPSBjb2RlOwotLSAgICAgICAgZHN0X3Jv d1stM10gPSBkc3Rfcm93Wy0yXSA9IGRzdF9yb3dbLTFdID0gMDsKLS0gICAgICAgIGRzdF9yb3db Y29scyozXSA9IGRzdF9yb3dbY29scyozKzFdID0gZHN0X3Jvd1tjb2xzKjMrMl0gPSAwOwotKyAg ICAgICAgaWYoIGNvbHMgPD0gMCApCi0rICAgICAgICB7Ci0rICAgICAgICAgICAgZHN0X3Jvd1st M10gPSBkc3Rfcm93Wy0yXSA9IGRzdF9yb3dbLTFdID0gMDsKLSsgICAgICAgICAgICBkc3Rfcm93 W2NvbHMqM10gPSBkc3Rfcm93W2NvbHMqMysxXSA9IGRzdF9yb3dbY29scyozKzJdID0gMDsKLSsg ICAgICAgICAgICBjb250aW51ZTsKLSsgICAgICAgIH0KLSAKLSAgICAgICAgIGZvciggaiA9IDA7 IGogPCBjb2xzOyBqKysgKQotICAgICAgICAgewotQEAgLTE3NjgsOSArMTc2OSwzNSBAQAotICAg ICAgICAgICAgIGRzdF9yb3dbaiozICsgMV0gPSAodWNoYXIpZzsKLSAgICAgICAgICAgICBkc3Rf cm93W2oqMyArIChiaV4yKV0gPSAodWNoYXIpcjsKLSAgICAgICAgIH0KLSsgICAgICAgIAotKyAg ICAgICAgZHN0X3Jvd1stM10gPSBkc3Rfcm93WzBdOwotKyAgICAgICAgZHN0X3Jvd1stMl0gPSBk c3Rfcm93WzFdOwotKyAgICAgICAgZHN0X3Jvd1stMV0gPSBkc3Rfcm93WzJdOwotKyAgICAgICAg ZHN0X3Jvd1tjb2xzKjNdID0gZHN0X3Jvd1tjb2xzKjMtM107Ci0rICAgICAgICBkc3Rfcm93W2Nv bHMqMysxXSA9IGRzdF9yb3dbY29scyozLTJdOwotKyAgICAgICAgZHN0X3Jvd1tjb2xzKjMrMl0g PSBkc3Rfcm93W2NvbHMqMy0xXTsKLSsgICAgICAgIAotICAgICAgICAgY29kZSA9IHNhdmVfY29k ZSBeIDE7Ci0gICAgICAgICBiaSBePSAyOwotICAgICB9Ci0rICAgIAotKyAgICBpZiggc3JjLT5y b3dzIDw9IDIgKQotKyAgICB7Ci0rICAgICAgICBtZW1zZXQoIGRzdC0+ZGF0YS5wdHIsIDAsIChj b2xzKzIpKjMgKTsKLSsgICAgICAgIG1lbXNldCggZHN0LT5kYXRhLnB0ciArIChkc3QtPnJvd3Mt MSkqZHN0LT5zdGVwLCAwLCAoY29scysyKSozICk7Ci0rICAgIH0KLSsgICAgZWxzZQotKyAgICB7 Ci0rICAgICAgICB1Y2hhciogdG9wX3JvdyA9IGRzdC0+ZGF0YS5wdHI7Ci0rICAgICAgICB1Y2hh ciogYm90dG9tX3JvdyA9IGRzdC0+ZGF0YS5wdHIgKyBkc3QtPnN0ZXAqKGRzdC0+cm93cy0xKTsK LSsgICAgICAgIGludCBkc3RlcCA9IGRzdC0+c3RlcDsKLSsgICAgICAgIAotKyAgICAgICAgZm9y KCBqID0gMDsgaiA8IChjb2xzKzIpKjM7IGorKyApCi0rICAgICAgICB7Ci0rICAgICAgICAgICAg dG9wX3Jvd1tqXSA9IHRvcF9yb3dbaiArIGRzdGVwXTsKLSsgICAgICAgICAgICBib3R0b21fcm93 W2pdID0gYm90dG9tX3Jvd1tqIC0gZHN0ZXBdOwotKyAgICAgICAgfQotKyAgICB9Ci0gfQotIAot IENWX0NvbG9yQmF5ZXJUZXN0IGNvbG9yX2JheWVyX3Rlc3Q7Ci1kaWZmIC11ciBPcGVuQ1YtMi4y LjAvdGVzdHMvY3Yvc3JjL2FmbG9vZGZpbGwuY3BwIG9wZW5jdi90ZXN0cy9jdi9zcmMvYWZsb29k ZmlsbC5jcHAKLS0tLSBPcGVuQ1YtMi4yLjAvdGVzdHMvY3Yvc3JjL2FmbG9vZGZpbGwuY3BwCTIw MTAtMTItMDUgMDQ6MzU6MjUuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbmN2L3Rlc3RzL2N2L3Ny Yy9hZmxvb2RmaWxsLmNwcAkyMDExLTA1LTI2IDEyOjQ2OjA2Ljg1MzA5MzAwMyArMDIwMAotQEAg LTEzOCwxMiArMTM4LDEyIEBACi0gICAgICAgICBsX2RpZmYgPSB1X2RpZmYgPSBjdlNjYWxhckFs bCgwLik7Ci0gICAgIGVsc2UKLSAgICAgewotLSAgICAgICAgQ3ZNYXQgbSA9IGN2TWF0KCAxLCA4 LCBDVl82NEYsIGJ1ZiApOwotLSAgICAgICAgY3ZSYW5kQXJyKCBybmcsICZtLCBDVl9SQU5EX05P Uk1BTCwgY3ZTY2FsYXJBbGwoMCksIGN2U2NhbGFyQWxsKDQpICk7Ci0rICAgICAgICBDdk1hdCBt ID0gY3ZNYXQoIDEsIDgsIENWXzE2UywgYnVmICk7Ci0rICAgICAgICBjdlJhbmRBcnIoIHJuZywg Jm0sIENWX1JBTkRfTk9STUFMLCBjdlNjYWxhckFsbCgwKSwgY3ZTY2FsYXJBbGwoMzIpICk7Ci0g ICAgICAgICBmb3IoIGkgPSAwOyBpIDwgNDsgaSsrICkKLSAgICAgICAgIHsKLS0gICAgICAgICAg ICBsX2RpZmYudmFsW2ldID0gZmFicyhtLmRhdGEuZGJbaV0pOwotLSAgICAgICAgICAgIHVfZGlm Zi52YWxbaV0gPSBmYWJzKG0uZGF0YS5kYltpKzRdKTsKLSsgICAgICAgICAgICBsX2RpZmYudmFs W2ldID0gZmFicyhtLmRhdGEuc1tpXS8xNi4pOwotKyAgICAgICAgICAgIHVfZGlmZi52YWxbaV0g PSBmYWJzKG0uZGF0YS5zW2krNF0vMTYuKTsKLSAgICAgICAgIH0KLSAgICAgfQotIAoKZGlmZiAt LWdpdCBhL09wZW5DVi0yLjItYmFja3BvcnQtdjRsLnBhdGNoIGIvT3BlbkNWLTIuMi1iYWNrcG9y dC12NGwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxY2RlM2QuLjAwMDAw MDAKLS0tIGEvT3BlbkNWLTIuMi1iYWNrcG9ydC12NGwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAt MSw1MyArMCwwIEBACi1uZGV4OiBjdmNvbmZpZy5oLmNtYWtlCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gY3Zj b25maWcuaC5jbWFrZQkocsOpdmlzaW9uIDUwOTgpCi0rKysgY3Zjb25maWcuaC5jbWFrZQkocsOp dmlzaW9uIDUwOTkpCi1AQCAtMTksNiArMTksOSBAQAotIC8qIFY0TDIgY2FwdHVyaW5nIHN1cHBv cnQgKi8KLSAjY21ha2VkZWZpbmUgSEFWRV9DQU1WNEwyCi0gCi0rLyogVjRML1Y0TDIgY2FwdHVy aW5nIHN1cHBvcnQgdmlhIGxpYnY0bCAqLwotKyNjbWFrZWRlZmluZSBIQVZFX0xJQlY0TAotKwot IC8qIENhcmJvbiB3aW5kb3dpbmcgZW52aXJvbm1lbnQgKi8KLSAjY21ha2VkZWZpbmUgSEFWRV9D QVJCT04KLSAKLUluZGV4OiBtb2R1bGVzL2hpZ2hndWkvc3JjL2NhcC5jcHAKLT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBtb2R1bGVzL2hpZ2hndWkvc3JjL2NhcC5jcHAJKHLDqXZpc2lvbiA1MDk4KQotKysrIG1v ZHVsZXMvaGlnaGd1aS9zcmMvY2FwLmNwcAkocsOpdmlzaW9uIDUwOTkpCi1AQCAtMTczLDcgKzE3 Myw3IEBACi0gICAgICAgICAgICAgaWYgKGNhcHR1cmUpCi0gICAgICAgICAgICAgICAgIHJldHVy biBjYXB0dXJlOwotICAgICAgICAgI2VuZGlmCi0tICAgICAgICAjaWYgZGVmaW5lZCAoSEFWRV9D QU1WNEwpIHx8IGRlZmluZWQgKEhBVkVfQ0FNVjRMMikKLSsgICAgICAgICNpZiBkZWZpbmVkIEhB VkVfTElCVjRMIHx8IChkZWZpbmVkIChIQVZFX0NBTVY0TCkgJiYgZGVmaW5lZCAoSEFWRV9DQU1W NEwyKSkKLSAgICAgICAgICAgICBjYXB0dXJlID0gY3ZDcmVhdGVDYW1lcmFDYXB0dXJlX1Y0TCAo aW5kZXgpOwotICAgICAgICAgICAgIGlmIChjYXB0dXJlKQotICAgICAgICAgICAgICAgICByZXR1 cm4gY2FwdHVyZTsKLUluZGV4OiBtb2R1bGVzL2hpZ2hndWkvc3JjL2NhcF9saWJ2NGwuY3BwCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gbW9kdWxlcy9oaWdoZ3VpL3NyYy9jYXBfbGlidjRsLmNwcAkocsOpdmlz aW9uIDUwOTgpCi0rKysgbW9kdWxlcy9oaWdoZ3VpL3NyYy9jYXBfbGlidjRsLmNwcAkocsOpdmlz aW9uIDUwOTkpCi1AQCAtMjI0LDcgKzIyNCw3IEBACi0gI2luY2x1ZGUgImhpZ2hndWkuaCIKLSAj aW5jbHVkZSAicHJlY29tcC5ocHAiCi0gCi0tI2lmICFkZWZpbmVkIFdJTjMyICYmIChkZWZpbmVk IEhBVkVfQ0FNVjRMIHx8IGRlZmluZWQgSEFWRV9DQU1WNEwyKQotKyNpZiAhZGVmaW5lZCBXSU4z MiAmJiBkZWZpbmVkIEhBVkVfTElCVjRMCi0gCi0gI2RlZmluZSBDTEVBUih4KSBtZW1zZXQgKCYo eCksIDAsIHNpemVvZiAoeCkpCi0gCi1AQCAtMjQxLDggKzI0MSwxMiBAQAotICNpbmNsdWRlIDxz eXMvc3RhdC5oPgotICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KLSAKLSsjaWZkZWYgSEFWRV9DQU1W NEwKLSAjaW5jbHVkZSA8bGludXgvdmlkZW9kZXYuaD4KLSsjZW5kaWYKLSsjaWZkZWYgSEFWRV9D QU1WNEwyCi0gI2luY2x1ZGUgPGxpbnV4L3ZpZGVvZGV2Mi5oPgotKyNlbmRpZgotIAotICNpbmNs dWRlIDxsaWJ2NGwxLmg+Ci0gI2luY2x1ZGUgPGxpYnY0bDIuaD4KCmRpZmYgLS1naXQgYS9PcGVu Q1YtMi4yLWZpeHBjLnBhdGNoIGIvT3BlbkNWLTIuMi1maXhwYy5wYXRjaApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggM2RmYmRmYS4uMDAwMDAwMAotLS0gYS9PcGVuQ1YtMi4yLWZpeHBj LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotZGlmZiAtdXAgT3BlbkNWLTIu Mi4wL0NNYWtlTGlzdHMudHh0LmZpeHBjIE9wZW5DVi0yLjIuMC9DTWFrZUxpc3RzLnR4dAotLS0t IE9wZW5DVi0yLjIuMC9DTWFrZUxpc3RzLnR4dC5maXhwYwkyMDExLTAxLTA2IDEwOjIwOjMzLjY1 MDIxODAwMSArMDEwMAotKysrIE9wZW5DVi0yLjIuMC9DTWFrZUxpc3RzLnR4dAkyMDExLTAxLTA2 IDEwOjIyOjEwLjE3MDIxNzk5NyArMDEwMAotQEAgLTI0LDggKzI0LDggQEAgaWYgKE5PVCBDTUFL RV9JTlNUQUxMX1BSRUZJWCkNCi0gICAgIGVuZGlmKCkNCi0gZW5kaWYoKQ0KLSANCi0tU0VUKENN QUtFX0lOU1RBTExfUlBBVEggIiR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9L2xpYiIpDQotLVNFVChD TUFLRV9JTlNUQUxMX1JQQVRIX1VTRV9MSU5LX1BBVEggVFJVRSkNCi0rI1NFVChDTUFLRV9JTlNU QUxMX1JQQVRIICIke0NNQUtFX0lOU1RBTExfUFJFRklYfS9saWIiKQ0KLSsjU0VUKENNQUtFX0lO U1RBTExfUlBBVEhfVVNFX0xJTktfUEFUSCBUUlVFKQ0KLSANCi0gc2V0KENNQUtFX0NPTkZJR1VS QVRJT05fVFlQRVMgIkRlYnVnO1JlbGVhc2UiIENBQ0hFIFNUUklORyAiQ29uZmlncyIgRk9SQ0Up DQotIHNldChDTUFLRV9DX0ZMQUdTX01JTlNJWkVSRUwgIiIgQ0FDSEUgSU5URVJOQUwgIiIgRk9S Q0UpDQotQEAgLTExNjYsMTQgKzExNjYsMTQgQEAgZW5kaWYoKQ0KLSAjIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gc2V0KHByZWZpeCAgICAgICR7Q01BS0VfSU5TVEFMTF9Q UkVGSVh9KQ0KLSBzZXQoZXhlY19wcmVmaXggICAgICJcJHtwcmVmaXh9IikNCi0tc2V0KGxpYmRp ciAgICAgICJcJHtleGVjX3ByZWZpeH0vbGliIikNCi0rc2V0KGxpYmRpciAgICAgICJcJHtleGVj X3ByZWZpeH0vbGliJHtMSUJfU1VGRklYfSIpDQotIHNldChpbmNsdWRlZGlyICAgICAgIlwke3By ZWZpeH0vaW5jbHVkZSIpDQotIHNldChWRVJTSU9OICAgICAgICAgICAgICR7T1BFTkNWX1ZFUlNJ T059KQ0KLSANCi0gY29uZmlndXJlX2ZpbGUoIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9v cGVuY3YucGMuY21ha2UuaW4iICIke0NNQUtFX0JJTkFSWV9ESVJ9L3VuaXgtaW5zdGFsbC9vcGVu Y3YucGMiIEBPTkxZIElNTUVESUFURSkNCi0gDQotIGlmKFVOSVgpDQotLSAgICBpbnN0YWxsKEZJ TEVTICR7Q01BS0VfQklOQVJZX0RJUn0vdW5peC1pbnN0YWxsL29wZW5jdi5wYyBERVNUSU5BVElP TiBsaWIvcGtnY29uZmlnKQ0KLSsgICAgaW5zdGFsbChGSUxFUyAke0NNQUtFX0JJTkFSWV9ESVJ9 L3VuaXgtaW5zdGFsbC9vcGVuY3YucGMgREVTVElOQVRJT04gbGliJHtMSUJfU1VGRklYfS9wa2dj b25maWcpDQotIGVuZGlmKCkNCi0gDQotIA0KCmRpZmYgLS1naXQgYS9PcGVuQ1YtMi4yLWdjYzQ2 LnBhdGNoIGIvT3BlbkNWLTIuMi1nY2M0Ni5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggYzFlZDI5Yi4uMDAwMDAwMAotLS0gYS9PcGVuQ1YtMi4yLWdjYzQ2LnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotZGlmZiAtdXAgT3BlbkNWLTIuMi4wL21vZHVsZXMv Y29yZS9pbmNsdWRlL29wZW5jdjIvY29yZS9jb3JlLmhwcC5nY2M0NiBPcGVuQ1YtMi4yLjAvbW9k dWxlcy9jb3JlL2luY2x1ZGUvb3BlbmN2Mi9jb3JlL2NvcmUuaHBwCi0tLS0gT3BlbkNWLTIuMi4w L21vZHVsZXMvY29yZS9pbmNsdWRlL29wZW5jdjIvY29yZS9jb3JlLmhwcC5nY2M0NgkyMDEwLTEy LTA1IDA0OjM1OjI0LjAwMDAwMDAwMCArMDEwMAotKysrIE9wZW5DVi0yLjIuMC9tb2R1bGVzL2Nv cmUvaW5jbHVkZS9vcGVuY3YyL2NvcmUvY29yZS5ocHAJMjAxMS0wMi0wMiAxNjo0NDowMi4xNzcy NDM5OTMgKzAxMDAKLUBAIC01Miw2ICs1Miw3IEBACi0gI2lmZGVmIF9fY3BsdXNwbHVzCi0gCi0g I2lmbmRlZiBTS0lQX0lOQ0xVREVTCi0rI2luY2x1ZGUgPGNzdGRkZWY+Ci0gI2luY2x1ZGUgPGxp bWl0cy5oPgotICNpbmNsdWRlIDxhbGdvcml0aG0+Ci0gI2luY2x1ZGUgPGNtYXRoPgoKZGlmZiAt LWdpdCBhL09wZW5DVi0yLjItbGliZGlyLnBhdGNoIGIvT3BlbkNWLTIuMi1saWJkaXIucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViOTIwMjUuLjAwMDAwMDAKLS0tIGEvT3Bl bkNWLTIuMi1saWJkaXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzIgKzAsMCBAQAotZGlm ZiAtdXAgT3BlbkNWLTIuMi4wL0NNYWtlTGlzdHMudHh0LmxpYmRpciBPcGVuQ1YtMi4yLjAvQ01h a2VMaXN0cy50eHQKLS0tLSBPcGVuQ1YtMi4yLjAvQ01ha2VMaXN0cy50eHQubGliZGlyCTIwMTAt MTItMDUgMDQ6MzU6MjMuMDAwMDAwMDAwICswMTAwCi0rKysgT3BlbkNWLTIuMi4wL0NNYWtlTGlz dHMudHh0CTIwMTEtMDEtMDUgMTg6MTE6MTIuNTY1MjE4MDAxICswMTAwCi1AQCAtMTMsNyArMTMs NyBAQCBzZXQoQ01BS0VfQUxMT1dfTE9PU0VfTE9PUF9DT05TVFJVQ1RTIHRyCi0gIyBBZGQgdGhl c2Ugc3RhbmRhcmQgcGF0aHMgdG8gdGhlIHNlYXJjaCBwYXRocyBmb3IgRklORF9MSUJSQVJZDQot ICMgdG8gZmluZCBsaWJyYXJpZXMgZnJvbSB0aGVzZSBsb2NhdGlvbnMgZmlyc3QNCi0gaWYoVU5J WCkNCi0tICBzZXQoQ01BS0VfTElCUkFSWV9QQVRIICR7Q01BS0VfTElCUkFSWV9QQVRIfSAvbGli IC91c3IvbGliKQ0KLSsgIHNldChDTUFLRV9MSUJSQVJZX1BBVEggJHtDTUFLRV9MSUJSQVJZX1BB VEh9IC9saWIke0xJQl9TVUZGSVh9IC91c3IvbGliJHtMSUJfU1VGRklYfSkNCi0gZW5kaWYoKQ0K LSAjIGl0IF9tdXN0XyBnbyBiZWZvcmUgUFJPSkVDVChPcGVuQ1YpIGluIG9yZGVyIHRvIHdvcmsN Ci0gaWYgKE5PVCBDTUFLRV9JTlNUQUxMX1BSRUZJWCkNCi1AQCAtNTEzLDggKzUxNSw4IEBAIGlm KEJVSUxEX05FV19QWVRIT05fU1VQUE9SVCkNCi0gDQotICAgICBzdHJpbmcoUkVHRVggTUFUQ0gg IlswLTldLlswLTldIiBQWVRIT05fVkVSU0lPTl9NQUpPUl9NSU5PUiAiJHtQWVRIT05fVkVSU0lP Tl9GVUxMfSIpDQotICAgICBpZihVTklYKQ0KLS0gICAgICAgIHNldChQWVRIT05fUExVR0lOX0lO U1RBTExfUEFUSCBsaWIvcHl0aG9uJHtQWVRIT05fVkVSU0lPTl9NQUpPUl9NSU5PUn0vc2l0ZS1w YWNrYWdlcy9vcGVuY3YpDQotLSAgICAgICAgc2V0KFBZVEhPTl9QQUNLQUdFU19QQVRIIGxpYi9w eXRob24ke1BZVEhPTl9WRVJTSU9OX01BSk9SX01JTk9SfS9zaXRlLXBhY2thZ2VzKQ0KLSsgICAg ICAgIHNldChQWVRIT05fUExVR0lOX0lOU1RBTExfUEFUSCBsaWIke0xJQl9TVUZGSVh9L3B5dGhv biR7UFlUSE9OX1ZFUlNJT05fTUFKT1JfTUlOT1J9L3NpdGUtcGFja2FnZXMvb3BlbmN2KQ0KLSsg ICAgICAgIHNldChQWVRIT05fUEFDS0FHRVNfUEFUSCBsaWIke0xJQl9TVUZGSVh9L3B5dGhvbiR7 UFlUSE9OX1ZFUlNJT05fTUFKT1JfTUlOT1J9L3NpdGUtcGFja2FnZXMpDQotICAgICBlbmRpZigp DQotICAgICBpZihXSU4zMikNCi0gICAgICAgICBnZXRfZmlsZW5hbWVfY29tcG9uZW50KFBZVEhP Tl9QQVRIICJbSEtFWV9MT0NBTF9NQUNISU5FXFxTT0ZUV0FSRVxcUHl0aG9uXFxQeXRob25Db3Jl XFwke1BZVEhPTl9WRVJTSU9OX01BSk9SX01JTk9SfVxcSW5zdGFsbFBhdGhdIiBBQlNPTFVURSBD QUNIRSkNCi1kaWZmIC11cCBPcGVuQ1YtMi4yLjAvbW9kdWxlcy9mZm1wZWcvQ01ha2VMaXN0cy50 eHQubGliZGlyIE9wZW5DVi0yLjIuMC9tb2R1bGVzL2ZmbXBlZy9DTWFrZUxpc3RzLnR4dAotLS0t IE9wZW5DVi0yLjIuMC9tb2R1bGVzL2ZmbXBlZy9DTWFrZUxpc3RzLnR4dC5saWJkaXIJMjAxMC0x Mi0wNSAwNDozNToyNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBPcGVuQ1YtMi4yLjAvbW9kdWxlcy9m Zm1wZWcvQ01ha2VMaXN0cy50eHQJMjAxMS0wMS0wNSAxODoxMToxMi41MzEyMTgwMDAgKzAxMDAK LUBAIC00MywxMiArNDMsMTIgQEAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKCR7dGhlX3RhcmdldH0g UFJPUAotICAgICAgICAgICAgICAgICAgICAgICBWRVJTSU9OICR7T1BFTkNWX1ZFUlNJT059Ci0g ICAgICAgICAgICAgICAgICAgICAgIE9VVFBVVF9OQU1FICIke3RoZV90YXJnZXR9JHtPUEVOQ1Zf RExMVkVSU0lPTn0iCi0gICAgICAgICAgICAgICAgICAgICAgIERFRklORV9TWU1CT0wgIkNWQVBJ X0VYUE9SVFMiCi0tICAgICAgICAgICAgICAgICAgICAgIEFSQ0hJVkVfT1VUUFVUX0RJUkVDVE9S WSAiJHtDTUFLRV9CSU5BUllfRElSfS9saWIvIgotKyAgICAgICAgICAgICAgICAgICAgICBBUkNI SVZFX09VVFBVVF9ESVJFQ1RPUlkgIiR7Q01BS0VfQklOQVJZX0RJUn0vbGliJHtMSUJfU1VGRklY fS8iCi0gICAgICAgICAgICAgICAgICAgICAgIFJVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWSAiJHtD TUFLRV9CSU5BUllfRElSfS9iaW4vIgotICAgICAgICAgICAgICAgICAgICAgICApCi0gCi0gaW5z dGFsbChUQVJHRVRTICR7dGhlX3RhcmdldH0KLSAgICAgUlVOVElNRSBERVNUSU5BVElPTiBiaW4g Q09NUE9ORU5UIG1haW4KLS0gICAgQVJDSElWRSBERVNUSU5BVElPTiBsaWIgQ09NUE9ORU5UIG1h aW4KLS0gICAgTElCUkFSWSBERVNUSU5BVElPTiBsaWIgQ09NUE9ORU5UIG1haW4KLSsgICAgQVJD SElWRSBERVNUSU5BVElPTiBsaWIke0xJQl9TVUZGSVh9IENPTVBPTkVOVCBtYWluCi0rICAgIExJ QlJBUlkgREVTVElOQVRJT04gbGliJHtMSUJfU1VGRklYfSBDT01QT05FTlQgbWFpbgotICAgICAp Ci1kaWZmIC11cCBPcGVuQ1YtMi4yLjAvbW9kdWxlcy9ncHUvQ01ha2VMaXN0cy50eHQubGliZGly IE9wZW5DVi0yLjIuMC9tb2R1bGVzL2dwdS9DTWFrZUxpc3RzLnR4dAotLS0tIE9wZW5DVi0yLjIu MC9tb2R1bGVzL2dwdS9DTWFrZUxpc3RzLnR4dC5saWJkaXIJMjAxMC0xMi0wNSAwNDozNToyNC4w MDAwMDAwMDAgKzAxMDAKLSsrKyBPcGVuQ1YtMi4yLjAvbW9kdWxlcy9ncHUvQ01ha2VMaXN0cy50 eHQJMjAxMS0wMS0wNSAxODoxMToxMi41MzIyMTgwMDAgKzAxMDAKLUBAIC05Niw5ICs5Niw5IEBA IHNldF90YXJnZXRfcHJvcGVydGllcygke3RoZV90YXJnZXR9IFBST1AKLSAjIEFkZGl0aW9uYWwg dGFyZ2V0IHByb3BlcnRpZXMNCi0gc2V0X3RhcmdldF9wcm9wZXJ0aWVzKCR7dGhlX3RhcmdldH0g UFJPUEVSVElFUw0KLSAJREVCVUdfUE9TVEZJWCAiJHtPUEVOQ1ZfREVCVUdfUE9TVEZJWH0iDQot LQlBUkNISVZFX09VVFBVVF9ESVJFQ1RPUlkgIiR7Q01BS0VfQklOQVJZX0RJUn0vbGliLyINCi0r CUFSQ0hJVkVfT1VUUFVUX0RJUkVDVE9SWSAiJHtDTUFLRV9CSU5BUllfRElSfS9saWIke0xJQl9T VUZGSVh9LyINCi0gCVJVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWSAiJHtDTUFLRV9CSU5BUllfRElS fS9iaW4vIg0KLS0JSU5TVEFMTF9OQU1FX0RJUiAiJHtDTUFLRV9JTlNUQUxMX1BSRUZJWH0vbGli Ig0KLSsJSU5TVEFMTF9OQU1FX0RJUiAiJHtDTUFLRV9JTlNUQUxMX1BSRUZJWH0vbGliJHtMSUJf U1VGRklYfSINCi0gCSkNCi0gDQotICMgQWRkIHRoZSByZXF1aXJlZCBsaWJyYXJpZXMgZm9yIGxp bmtpbmc6DQotQEAgLTEyNCw4ICsxMjQsOCBAQCBhZGRfZGVwZW5kZW5jaWVzKCR7dGhlX3Rhcmdl dH0gJHtERVBTfSkNCi0gDQotIGluc3RhbGwoVEFSR0VUUyAke3RoZV90YXJnZXR9DQotIAlSVU5U SU1FIERFU1RJTkFUSU9OIGJpbiBDT01QT05FTlQgbWFpbg0KLS0JTElCUkFSWSBERVNUSU5BVElP TiBsaWIgQ09NUE9ORU5UIG1haW4NCi0tCUFSQ0hJVkUgREVTVElOQVRJT04gbGliIENPTVBPTkVO VCBtYWluKQ0KLSsJTElCUkFSWSBERVNUSU5BVElPTiBsaWIke0xJQl9TVUZGSVh9IENPTVBPTkVO VCBtYWluDQotKwlBUkNISVZFIERFU1RJTkFUSU9OIGxpYiR7TElCX1NVRkZJWH0gQ09NUE9ORU5U IG1haW4pDQotIA0KLSBpbnN0YWxsKEZJTEVTICR7bGliX2hkcnN9DQotIAlERVNUSU5BVElPTiBp bmNsdWRlL29wZW5jdjIvJHtuYW1lfQ0KLWRpZmYgLXVwIE9wZW5DVi0yLjIuMC9tb2R1bGVzL2hp Z2hndWkvQ01ha2VMaXN0cy50eHQubGliZGlyIE9wZW5DVi0yLjIuMC9tb2R1bGVzL2hpZ2hndWkv Q01ha2VMaXN0cy50eHQKLS0tLSBPcGVuQ1YtMi4yLjAvbW9kdWxlcy9oaWdoZ3VpL0NNYWtlTGlz dHMudHh0LmxpYmRpcgkyMDEwLTEyLTA1IDA0OjM1OjI0LjAwMDAwMDAwMCArMDEwMAotKysrIE9w ZW5DVi0yLjIuMC9tb2R1bGVzL2hpZ2hndWkvQ01ha2VMaXN0cy50eHQJMjAxMS0wMS0wNSAxODox MToxMi41NDEyMTgwMDEgKzAxMDAKLUBAIC0yNTAsOSArMjUwLDkgQEAgc2V0X3RhcmdldF9wcm9w ZXJ0aWVzKCR7dGhlX3RhcmdldH0gUFJPUAotICMgQWRkaXRpb25hbCB0YXJnZXQgcHJvcGVydGll cwotIHNldF90YXJnZXRfcHJvcGVydGllcygke3RoZV90YXJnZXR9IFBST1BFUlRJRVMKLSAJREVC VUdfUE9TVEZJWCAiJHtPUEVOQ1ZfREVCVUdfUE9TVEZJWH0iCi0tCUFSQ0hJVkVfT1VUUFVUX0RJ UkVDVE9SWSAiJHtDTUFLRV9CSU5BUllfRElSfS9saWIvIgotKwlBUkNISVZFX09VVFBVVF9ESVJF Q1RPUlkgIiR7Q01BS0VfQklOQVJZX0RJUn0vbGliJHtMSUJfU1VGRklYfS8iCi0gCVJVTlRJTUVf T1VUUFVUX0RJUkVDVE9SWSAiJHtDTUFLRV9CSU5BUllfRElSfS9iaW4vIgotLQlJTlNUQUxMX05B TUVfRElSICIke0NNQUtFX0lOU1RBTExfUFJFRklYfS9saWIiCi0rCUlOU1RBTExfTkFNRV9ESVIg IiR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9L2xpYiR7TElCX1NVRkZJWH0iCi0gCUxJTktfSU5URVJG QUNFX0xJQlJBUklFUyAiIgotIAkpCi0gCi1AQCAtMzAyLDggKzMwMiw4IEBACi0gCi0gaW5zdGFs bChUQVJHRVRTICR7dGhlX3RhcmdldH0KLSAJUlVOVElNRSBERVNUSU5BVElPTiBiaW4gQ09NUE9O RU5UIG1haW4KLS0JTElCUkFSWSBERVNUSU5BVElPTiBsaWIgQ09NUE9ORU5UIG1haW4KLS0JQVJD SElWRSBERVNUSU5BVElPTiBsaWIgQ09NUE9ORU5UIG1haW4pCi0rCUxJQlJBUlkgREVTVElOQVRJ T04gbGliJHtMSUJfU1VGRklYfSBDT01QT05FTlQgbWFpbgotKwlBUkNISVZFIERFU1RJTkFUSU9O IGxpYiR7TElCX1NVRkZJWH0gQ09NUE9ORU5UIG1haW4pCi0gCi0gaW5zdGFsbChGSUxFUyAke2hp Z2hndWlfZXh0X2hkcnN9Ci0gICAgICAgICBERVNUSU5BVElPTiBpbmNsdWRlL29wZW5jdjIvaGln aGd1aQotZGlmZiAtdXAgT3BlbkNWLTIuMi4wL09wZW5DVk1vZHVsZS5jbWFrZS5saWJkaXIgT3Bl bkNWLTIuMi4wL09wZW5DVk1vZHVsZS5jbWFrZQotLS0tIE9wZW5DVi0yLjIuMC9PcGVuQ1ZNb2R1 bGUuY21ha2UubGliZGlyCTIwMTAtMTItMDUgMDQ6MzU6MjUuMDAwMDAwMDAwICswMTAwCi0rKysg T3BlbkNWLTIuMi4wL09wZW5DVk1vZHVsZS5jbWFrZQkyMDExLTAxLTA2IDA5OjQzOjUyLjQ4NDIx ODAwMyArMDEwMAotQEAgLTUxLDkgKzUxLDkgQEAgbWFjcm8oZGVmaW5lX29wZW5jdl9tb2R1bGUg bmFtZSkKLSAJIyBBZGRpdGlvbmFsIHRhcmdldCBwcm9wZXJ0aWVzCi0gCXNldF90YXJnZXRfcHJv cGVydGllcygke3RoZV90YXJnZXR9IFBST1BFUlRJRVMKLSAJICAgIERFQlVHX1BPU1RGSVggIiR7 T1BFTkNWX0RFQlVHX1BPU1RGSVh9IgotLQkgICAgQVJDSElWRV9PVVRQVVRfRElSRUNUT1JZICIk e0NNQUtFX0JJTkFSWV9ESVJ9L2xpYi8iCi0rCSAgICBBUkNISVZFX09VVFBVVF9ESVJFQ1RPUlkg IiR7Q01BS0VfQklOQVJZX0RJUn0vbGliJHtMSUJfU1VGRklYfS8iCi0gCSAgICBSVU5USU1FX09V VFBVVF9ESVJFQ1RPUlkgIiR7Q01BS0VfQklOQVJZX0RJUn0vYmluLyIKLS0JICAgIElOU1RBTExf TkFNRV9ESVIgIiR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9L2xpYiIKLSsJICAgIElOU1RBTExfTkFN RV9ESVIgIiR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9L2xpYiR7TElCX1NVRkZJWH0iCi0gCSAgICAp Ci0gCi0gCSMgQWRkIHRoZSByZXF1aXJlZCBsaWJyYXJpZXMgZm9yIGxpbmtpbmc6Ci1AQCAtNzUs OCArNzUsOCBAQCBtYWNybyhkZWZpbmVfb3BlbmN2X21vZHVsZSBuYW1lKQotIAotIAlpbnN0YWxs KFRBUkdFVFMgJHt0aGVfdGFyZ2V0fQotIAkgICAgUlVOVElNRSBERVNUSU5BVElPTiBiaW4gQ09N UE9ORU5UIG1haW4KLS0JICAgIExJQlJBUlkgREVTVElOQVRJT04gbGliIENPTVBPTkVOVCBtYWlu Ci0tCSAgICBBUkNISVZFIERFU1RJTkFUSU9OIGxpYiBDT01QT05FTlQgbWFpbikKLSsJICAgIExJ QlJBUlkgREVTVElOQVRJT04gbGliJHtMSUJfU1VGRklYfSBDT01QT05FTlQgbWFpbgotKwkgICAg QVJDSElWRSBERVNUSU5BVElPTiBsaWIke0xJQl9TVUZGSVh9IENPTVBPTkVOVCBtYWluKQotIAot IAlpbnN0YWxsKEZJTEVTICR7bGliX2hkcnN9Ci0gCSAgICBERVNUSU5BVElPTiBpbmNsdWRlL29w ZW5jdjIvJHtuYW1lfQotZGlmZiAtdXAgT3BlbkNWLTIuMi4wL3Rlc3RzL2N4dHMvQ01ha2VMaXN0 cy50eHQubGliZGlyIE9wZW5DVi0yLjIuMC90ZXN0cy9jeHRzL0NNYWtlTGlzdHMudHh0Ci0tLS0g T3BlbkNWLTIuMi4wL3Rlc3RzL2N4dHMvQ01ha2VMaXN0cy50eHQubGliZGlyCTIwMTAtMTItMDUg MDQ6MzU6MjUuMDAwMDAwMDAwICswMTAwCi0rKysgT3BlbkNWLTIuMi4wL3Rlc3RzL2N4dHMvQ01h a2VMaXN0cy50eHQJMjAxMS0wMS0wNSAxODoxMToxMi41MzUyMTgwMDEgKzAxMDAKLUBAIC01MSw3 ICs1MSw3IEBAIHNldF90YXJnZXRfcHJvcGVydGllcygke3RoZV90YXJnZXR9IFBST1AKLSAjIEFk ZGl0aW9uYWwgdGFyZ2V0IHByb3BlcnRpZXMKLSBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoJHt0aGVf dGFyZ2V0fSBQUk9QRVJUSUVTCi0gCURFQlVHX1BPU1RGSVggIiR7T1BFTkNWX0RFQlVHX1BPU1RG SVh9IgotLQlBUkNISVZFX09VVFBVVF9ESVJFQ1RPUlkgIiR7Q01BS0VfQklOQVJZX0RJUn0vbGli LyIKLSsJQVJDSElWRV9PVVRQVVRfRElSRUNUT1JZICIke0NNQUtFX0JJTkFSWV9ESVJ9L2xpYiR7 TElCX1NVRkZJWH0vIgotIAlSVU5USU1FX09VVFBVVF9ESVJFQ1RPUlkgIiR7Q01BS0VfQklOQVJZ X0RJUn0vYmluLyIKLSAJREVGSU5FX1NZTUJPTCAiQ1ZBUElfRVhQT1JUUyIKLSAJKQoKZGlmZiAt LWdpdCBhL09wZW5DVi0yLjItbm9pbnRyZXJuYWwucGF0Y2ggYi9PcGVuQ1YtMi4yLW5vaW50cmVy bmFsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZGU5MmE3Li4wMDAwMDAw Ci0tLSBhL09wZW5DVi0yLjItbm9pbnRyZXJuYWwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2 OSArMCwwIEBACi1kaWZmIC11cCBPcGVuQ1YtMi4yLjAvM3JkcGFydHkvQ01ha2VMaXN0cy50eHQu bm9pbnRlcm5hbCBPcGVuQ1YtMi4yLjAvM3JkcGFydHkvQ01ha2VMaXN0cy50eHQKLS0tLSBPcGVu Q1YtMi4yLjAvM3JkcGFydHkvQ01ha2VMaXN0cy50eHQubm9pbnRlcm5hbAkyMDEwLTEyLTA1IDA0 OjM1OjIzLjAwMDAwMDAwMCArMDEwMAotKysrIE9wZW5DVi0yLjIuMC8zcmRwYXJ0eS9DTWFrZUxp c3RzLnR4dAkyMDEwLTEyLTA3IDE2OjAwOjUzLjUxMDA3MDAwNSArMDEwMAotQEAgLTIsOCArMiwx MiBAQCBpZihBTkRST0lEKQotICBjb25maWd1cmVfZmlsZSgiJHtDTUFLRV9TT1VSQ0VfRElSfS9B bmRyb2lkLm1rLm1vZHVsZXMuaW4iICIke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vQW5kcm9p ZC5tayIpCi0gZW5kaWYoKQotIAotLWFkZF9zdWJkaXJlY3RvcnkobGFwYWNrKQotLWFkZF9zdWJk aXJlY3RvcnkoemxpYikKLSsjaWYoV0lUSF9MQVBBQ0sgQU5EIE5PVCBMQVBBQ0tfRk9VTkQpCi0r IwlhZGRfc3ViZGlyZWN0b3J5KGxhcGFjaykKLSsjZW5kaWYoKQotKyNpZihXSVRIX1pMSUIgQU5E IE5PVCBaTElCX0ZPVU5EKQotKyMJYWRkX3N1YmRpcmVjdG9yeSh6bGliKQotKyNlbmRpZigpCi0g aWYoV0lUSF9KQVNQRVIgQU5EIE5PVCBKQVNQRVJfRk9VTkQpCi0gCWFkZF9zdWJkaXJlY3Rvcnko bGliamFzcGVyKQotIGVuZGlmKCkKLWRpZmYgLXVwIE9wZW5DVi0yLjIuMC9DTWFrZUxpc3RzLnR4 dC5ub2ludGVybmFsIE9wZW5DVi0yLjIuMC9DTWFrZUxpc3RzLnR4dAotLS0tIE9wZW5DVi0yLjIu MC9DTWFrZUxpc3RzLnR4dC5ub2ludGVybmFsCTIwMTAtMTItMDUgMDQ6MzU6MjMuMDAwMDAwMDAw ICswMTAwCi0rKysgT3BlbkNWLTIuMi4wL0NNYWtlTGlzdHMudHh0CTIwMTAtMTItMDcgMTY6MDA6 NTMuNTMyMDcwMDA1ICswMTAwCi1AQCAtMjgwLDYgKzI4MCw4IEBAIHNldChXSVRIX0pQRUcgT04g Q0FDSEUgQk9PTCAiSW5jbHVkZSBKUEUKLSBzZXQoV0lUSF9KQVNQRVIgT04gQ0FDSEUgQk9PTCAi SW5jbHVkZSBKUEVHMksgc3VwcG9ydCIpDQotIHNldChXSVRIX1RJRkYgT04gQ0FDSEUgQk9PTCAi SW5jbHVkZSBUSUZGIHN1cHBvcnQiKQ0KLSBzZXQoV0lUSF9PUEVORVhSIE9OIENBQ0hFIEJPT0wg IkluY2x1ZGUgSUxNIHN1cHBvcnQgdmlhIE9wZW5FWFIiKQ0KLStzZXQoV0lUSF9MQVBBQ0sgT04g Q0FDSEUgQk9PTCAiSW5jbHVkZSBMQVBBQ0sgc3VwcG9ydCIpDQotK3NldChXSVRIX1pMSUIgT04g Q0FDSEUgQk9PTCAiSW5jbHVkZSBaTElCIHN1cHBvcnQiKQ0KLSANCi0gaWYoVU5JWCkNCi0gICAg IHNldChXSVRIX0ZGTVBFRyBPTiBDQUNIRSBCT09MICJJbmNsdWRlIEZGTVBFRyBzdXBwb3J0IikN Ci1kaWZmIC11cCBPcGVuQ1YtMi4yLjAvbW9kdWxlcy9jb3JlL0NNYWtlTGlzdHMudHh0Lm5vaW50 ZXJuYWwgT3BlbkNWLTIuMi4wL21vZHVsZXMvY29yZS9DTWFrZUxpc3RzLnR4dAotLS0tIE9wZW5D Vi0yLjIuMC9tb2R1bGVzL2NvcmUvQ01ha2VMaXN0cy50eHQubm9pbnRlcm5hbAkyMDEwLTEyLTA1 IDA0OjM1OjI0LjAwMDAwMDAwMCArMDEwMAotKysrIE9wZW5DVi0yLjIuMC9tb2R1bGVzL2NvcmUv Q01ha2VMaXN0cy50eHQJMjAxMC0xMi0wNyAxNjo0NzoxNC43NjcwNzAwMDUgKzAxMDAKLUBAIC0x LDMgKzEsMTEgQEAKLSBpbmNsdWRlX2RpcmVjdG9yaWVzKCIke0NNQUtFX0NVUlJFTlRfU09VUkNF X0RJUn0vLi4vLi4vM3JkcGFydHkvaW5jbHVkZSIpCi0tc2V0KGRlcHMgb3BlbmN2X2xhcGFjayB6 bGliKQotK2lmKFdJVEhfTEFQQUNLIEFORCBOT1QgTEFQQUNLX0ZPVU5EKQotKwlpZihXSVRIX1pM SUIgQU5EIE5PVCBaTElCX0ZPVU5EKQotKwkJc2V0KGRlcHMgb3BlbmN2X2xhcGFjayB6bGliKQot KwllbHNlKCkKLSsJCXNldChkZXBzIGxhcGFjayB6KQotKwllbmRpZigpCi0gZGVmaW5lX29wZW5j dl9tb2R1bGUoY29yZSAke2RlcHN9KQotK2Vsc2UoKQotK2RlZmluZV9vcGVuY3ZfbW9kdWxlKGNv cmUgbGFwYWNrIHopCi0rZW5kaWYoKQotZGlmZiAtdXAgT3BlbkNWLTIuMi4wL21vZHVsZXMvaGln aGd1aS9DTWFrZUxpc3RzLnR4dC5ub2ludGVybmFsIE9wZW5DVi0yLjIuMC9tb2R1bGVzL2hpZ2hn dWkvQ01ha2VMaXN0cy50eHQKLS0tLSBPcGVuQ1YtMi4yLjAvbW9kdWxlcy9oaWdoZ3VpL0NNYWtl TGlzdHMudHh0Lm5vaW50ZXJuYWwJMjAxMC0xMi0wNSAwNDozNToyNC4wMDAwMDAwMDAgKzAxMDAK LSsrKyBPcGVuQ1YtMi4yLjAvbW9kdWxlcy9oaWdoZ3VpL0NNYWtlTGlzdHMudHh0CTIwMTAtMTIt MDcgMTc6MDE6MTEuOTYzMDcwMDA0ICswMTAwCi1AQCAtMjg1LDcgKzI4NSw3IEBAIGlmKFdJVEhf VElGRiBBTkQgTk9UIFRJRkZfRk9VTkQpCi0gCSN0YXJnZXRfbGlua19saWJyYXJpZXMoJHt0aGVf dGFyZ2V0fSBsaWJ0aWZmKQotIGVuZGlmKCkKLSAKLS10YXJnZXRfbGlua19saWJyYXJpZXMoJHt0 aGVfdGFyZ2V0fSAke09QRU5DVl9MSU5LRVJfTElCU30gb3BlbmN2X2NvcmUgb3BlbmN2X2ltZ3By b2MgemxpYiAke0pQRUdfTElCUkFSSUVTfSAke1BOR19MSUJSQVJJRVN9ICR7VElGRl9MSUJSQVJJ RVN9ICR7SkFTUEVSX0xJQlJBUklFU30gJHtISUdIR1VJX0xJQlJBUklFU30gJHtPUEVORVhSX0xJ QlJBUklFU30pCi0rdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7dGhlX3RhcmdldH0gJHtPUEVOQ1Zf TElOS0VSX0xJQlN9IG9wZW5jdl9jb3JlIG9wZW5jdl9pbWdwcm9jIHogJHtKUEVHX0xJQlJBUklF U30gJHtQTkdfTElCUkFSSUVTfSAke1RJRkZfTElCUkFSSUVTfSAke0pBU1BFUl9MSUJSQVJJRVN9 ICR7SElHSEdVSV9MSUJSQVJJRVN9ICR7T1BFTkVYUl9MSUJSQVJJRVN9KQotIAotIGlmKEFQUExF KQotIAl0YXJnZXRfbGlua19saWJyYXJpZXMoJHt0aGVfdGFyZ2V0fSAiLWxiejIgLWZyYW1ld29y ayBDb2NvYSAtZnJhbWV3b3JrIFF1YXJ0ekNvcmUiKQotLS0tIE9wZW5DVi0yLjIuMC9PcGVuQ1ZG aW5kT3BlbkVYUi5jbWFrZS5ub2ludGVybmFsCTIwMTAtMTItMDcgMTc6MTI6MTYuNTkyMDcwMDA0 ICswMTAwCi0rKysgT3BlbkNWLTIuMi4wL09wZW5DVkZpbmRPcGVuRVhSLmNtYWtlCTIwMTAtMTIt MDcgMTc6MTI6MjYuNTM5MDcwMDA0ICswMTAwCi1AQCAtNDQsNyArNDQsNyBAQCBGSU5EX0xJQlJB UlkoT1BFTkVYUl9JTE1JTUZfTElCUkFSWQotIElGIChPUEVORVhSX0lOQ0xVREVfUEFUSCBBTkQg T1BFTkVYUl9JTUFUSF9MSUJSQVJZIEFORCBPUEVORVhSX0lMTUlNRl9MSUJSQVJZIEFORCBPUEVO RVhSX0lFWF9MSUJSQVJZIEFORCBPUEVORVhSX0hBTEZfTElCUkFSWSkKLSAgICAgU0VUKE9QRU5F WFJfRk9VTkQgVFJVRSkKLSAgICAgU0VUKE9QRU5FWFJfSU5DTFVERV9QQVRIUyAke09QRU5FWFJf SU5DTFVERV9QQVRIfSBDQUNIRSBTVFJJTkcgIlRoZSBpbmNsdWRlIHBhdGhzIG5lZWRlZCB0byB1 c2UgT3BlbkVYUiIpCi0tICAgIFNFVChPUEVORVhSX0xJQlJBUklFUyAke09QRU5FWFJfSU1BVEhf TElCUkFSWX0gJHtPUEVORVhSX0lMTUlNRl9MSUJSQVJZfSAke09QRU5FWFJfSUVYX0xJQlJBUll9 ICR7T1BFTkVYUl9IQUxGX0xJQlJBUll9IHpsaWIgQ0FDSEUgU1RSSU5HICJUaGUgbGlicmFyaWVz IG5lZWRlZCB0byB1c2UgT3BlbkVYUiIpCi0rICAgIFNFVChPUEVORVhSX0xJQlJBUklFUyAke09Q RU5FWFJfSU1BVEhfTElCUkFSWX0gJHtPUEVORVhSX0lMTUlNRl9MSUJSQVJZfSAke09QRU5FWFJf SUVYX0xJQlJBUll9ICR7T1BFTkVYUl9IQUxGX0xJQlJBUll9IENBQ0hFIFNUUklORyAiVGhlIGxp YnJhcmllcyBuZWVkZWQgdG8gdXNlIE9wZW5FWFIiKQotIEVORElGICgpCi0gCi0gSUYoT1BFTkVY Ul9GT1VORCkKCmRpZmYgLS1naXQgYS9PcGVuQ1YtMi4yLW51bXB5LnBhdGNoIGIvT3BlbkNWLTIu Mi1udW1weS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDY5MGVhYi4uMDAw MDAwMAotLS0gYS9PcGVuQ1YtMi4yLW51bXB5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTIg KzAsMCBAQAotZGlmZiAtdXAgT3BlbkNWLTIuMi4wL0NNYWtlTGlzdHMudHh0Lm51bXB5IE9wZW5D Vi0yLjIuMC9DTWFrZUxpc3RzLnR4dAotLS0tIE9wZW5DVi0yLjIuMC9DTWFrZUxpc3RzLnR4dC5u dW1weQkyMDEwLTEyLTA3IDE3OjU0OjU2LjM2OTA3MDAwNSArMDEwMAotKysrIE9wZW5DVi0yLjIu MC9DTWFrZUxpc3RzLnR4dAkyMDEwLTEyLTA3IDE3OjU4OjMxLjk4NzA3MDAwNCArMDEwMAotQEAg LTUzMiw3ICs1MzIsNyBAQCBpZihCVUlMRF9ORVdfUFlUSE9OX1NVUFBPUlQpDQotICAgICAgICAg ICAgICAgICAgICAgT1VUUFVUX1NUUklQX1RSQUlMSU5HX1dISVRFU1BBQ0UpDQotICAgICBpZihQ WVRIT05fTlVNUFlfUFJPQ0VTUyBFUVVBTCAwKQ0KLSAgICAgICBzZXQoUFlUSE9OX1VTRV9OVU1Q WSAxKQ0KLS0gICAgICBhZGRfZGVmaW5pdGlvbnMoLUQgUFlUSE9OX1VTRV9OVU1QWT0xKQ0KLSsg ICAgICBhZGRfZGVmaW5pdGlvbnMoLURQWVRIT05fVVNFX05VTVBZPTEpDQotICAgICAgIGluY2x1 ZGVfZGlyZWN0b3JpZXMoQUZURVIgJHtQWVRIT05fTlVNUFlfSU5DTFVERV9ESVJTfSkNCi0gICAg ICAgbWVzc2FnZShTVEFUVVMgIiAgICBVc2UgSU5DTFVERTogJHtQWVRIT05fTlVNUFlfSU5DTFVE RV9ESVJTfSIpDQotICAgICBlbHNlKCkNCgpkaWZmIC0tZ2l0IGEvT3BlbkNWLTIuMy4xLW51bXB5 LnBhdGNoIGIvT3BlbkNWLTIuMy4xLW51bXB5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmZmZjg0ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9PcGVuQ1YtMi4zLjEtbnVt cHkucGF0Y2gKQEAgLTAsMCArMSwxMiBAQAorZGlmZiAtdXAgT3BlbkNWLTIuMy4xL0NNYWtlTGlz dHMudHh0Lm51bXB5IE9wZW5DVi0yLjMuMS9DTWFrZUxpc3RzLnR4dAorLS0tIE9wZW5DVi0yLjMu MS9DTWFrZUxpc3RzLnR4dC5udW1weQkyMDExLTA4LTE5IDIxOjUwOjI3LjIxNzk5ODI3NCArMDIw MAorKysrIE9wZW5DVi0yLjMuMS9DTWFrZUxpc3RzLnR4dAkyMDExLTA4LTE5IDIxOjU4OjA2LjY3 NzQ5NTQ3OSArMDIwMAorQEAgLTY4Nyw3ICs2ODcsNyBAQCBleGVjdXRlX3Byb2Nlc3MoQ09NTUFO RCAke1BZVEhPTl9FWEVDVVRBCisgCisgaWYoUFlUSE9OX05VTVBZX1BST0NFU1MgRVFVQUwgMCkK KyAgICAgc2V0KFBZVEhPTl9VU0VfTlVNUFkgMSkKKy0gICAgYWRkX2RlZmluaXRpb25zKC1EIFBZ VEhPTl9VU0VfTlVNUFk9MSkKKysgICAgYWRkX2RlZmluaXRpb25zKC1EUFlUSE9OX1VTRV9OVU1Q WT0xKQorICAgICBpbmNsdWRlX2RpcmVjdG9yaWVzKEFGVEVSICR7UFlUSE9OX05VTVBZX0lOQ0xV REVfRElSU30pCisgICAgIG1lc3NhZ2UoU1RBVFVTICIgICAgVXNlIE51bVB5IGhlYWRlcnMgZnJv bTogJHtQWVRIT05fTlVNUFlfSU5DTFVERV9ESVJTfSIpCisgZWxzZSgpCgpkaWZmIC0tZ2l0IGEv T3BlbkNWLTIuMy4xLW9wZW5jdmNvbmZpZy5wYXRjaCBiL09wZW5DVi0yLjMuMS1vcGVuY3Zjb25m aWcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWY0YmJjZgotLS0g L2Rldi9udWxsCisrKyBiL09wZW5DVi0yLjMuMS1vcGVuY3Zjb25maWcucGF0Y2gKQEAgLTAsMCAr MSwyMyBAQAorZGlmZiAtdXAgT3BlbkNWLTIuMy4xL0NNYWtlTGlzdHMudHh0Lm9wZW5jdmNvbmZp ZyBPcGVuQ1YtMi4zLjEvQ01ha2VMaXN0cy50eHQKKy0tLSBPcGVuQ1YtMi4zLjEvQ01ha2VMaXN0 cy50eHQub3BlbmN2Y29uZmlnCTIwMTEtMDgtMjAgMTQ6MjU6NDMuNTkyNjE1NzI0ICswMjAwCisr KysgT3BlbkNWLTIuMy4xL0NNYWtlTGlzdHMudHh0CTIwMTEtMDgtMjAgMTQ6Mjg6NDAuODE0MDE3 MDI5ICswMjAwCitAQCAtMzYsNyArMzYsNyBAQCBlbmRpZihOT1QgQ01BS0VfVE9PTENIQUlOX0ZJ TEUpCisgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICMgVG9wIGxldmVsIE9wZW5DViBwcm9qZWN0CisgIyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLWNt YWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAyLjQpCisrY21ha2VfbWluaW11bV9yZXF1aXJl ZChWRVJTSU9OIDIuNi4zKQorIHByb2plY3QoT3BlbkNWKQorIAorIHNldChDTUFLRV9DT05GSUdV UkFUSU9OX1RZUEVTICJEZWJ1ZztSZWxlYXNlIiBDQUNIRSBTVFJJTkcgIkNvbmZpZ3MiIEZPUkNF KQorQEAgLTEzNzAsOCArMTM3MCw4IEBAIGlmKFVOSVgpCisgICAgIGluc3RhbGwoRklMRVMgJHtD TUFLRV9CSU5BUllfRElSfS91bml4LWluc3RhbGwvT3BlbkNWQ29uZmlnLmNtYWtlIERFU1RJTkFU SU9OIHNoYXJlL09wZW5DVi0ke09QRU5DVl9WRVJTSU9OfS8pCisgICAgIGluc3RhbGwoRklMRVMg JHtDTUFLRV9CSU5BUllfRElSfS91bml4LWluc3RhbGwvT3BlbkNWQ29uZmlnLXZlcnNpb24uY21h a2UgREVTVElOQVRJT04gc2hhcmUvT3BlbkNWLSR7T1BFTkNWX1ZFUlNJT059LykKKyAgIGVsc2Uo KQorLSAgICBpbnN0YWxsKEZJTEVTICIke0NNQUtFX0JJTkFSWV9ESVJ9L3VuaXgtaW5zdGFsbC9P cGVuQ1ZDb25maWcuY21ha2UiIERFU1RJTkFUSU9OIHNoYXJlL09wZW5DVi8pCistICAgIGluc3Rh bGwoRklMRVMgJHtDTUFLRV9CSU5BUllfRElSfS91bml4LWluc3RhbGwvT3BlbkNWQ29uZmlnLXZl cnNpb24uY21ha2UgREVTVElOQVRJT04gc2hhcmUvT3BlbkNWLykKKysgICAgaW5zdGFsbChGSUxF UyAiJHtDTUFLRV9CSU5BUllfRElSfS91bml4LWluc3RhbGwvT3BlbkNWQ29uZmlnLmNtYWtlIiBE RVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfUFJFRklYfS9saWIke0xJQl9TVUZGSVh9L2NtYWtl L29wZW5jdi8pCisrICAgIGluc3RhbGwoRklMRVMgJHtDTUFLRV9CSU5BUllfRElSfS91bml4LWlu c3RhbGwvT3BlbkNWQ29uZmlnLXZlcnNpb24uY21ha2UgREVTVElOQVRJT04gJHtDTUFLRV9JTlNU QUxMX1BSRUZJWH0vbGliJHtMSUJfU1VGRklYfS9jbWFrZS9vcGVuY3YvKQorICAgZW5kaWYoKQor IGVuZGlmKCkKKyAKCmRpZmYgLS1naXQgYS9vcGVuY3YtMi4xLjAtb3BlbmN2Y29uZmlnLnBhdGNo IGIvb3BlbmN2LTIuMS4wLW9wZW5jdmNvbmZpZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggYzdiMDQ0ZS4uMDAwMDAwMAotLS0gYS9vcGVuY3YtMi4xLjAtb3BlbmN2Y29uZmln LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotZGlmZiAtdXAgT3BlbkNWLTIu MS4wL0NNYWtlTGlzdHMudHh0Lm9wZW5jdmNvbmZpZyBPcGVuQ1YtMi4xLjAvQ01ha2VMaXN0cy50 eHQKLS0tLSBPcGVuQ1YtMi4xLjAvQ01ha2VMaXN0cy50eHQub3BlbmN2Y29uZmlnCTIwMTAtMDgt MjYgMDg6MjY6NTYuNDAzMjc2ODQyIC0wNTAwCi0rKysgT3BlbkNWLTIuMS4wL0NNYWtlTGlzdHMu dHh0CTIwMTAtMDgtMjYgMDg6MzE6MjAuNTQzMjc3NTU5IC0wNTAwCi1AQCAtMzgsNyArMzgsNyBA QCBzZXQoQ01BS0VfU0hBUkVEX0xJTktFUl9GTEFHU19SRUxXSVRIREVCCi0gDQotIHByb2plY3Qo T3BlbkNWKQ0KLSANCi0tY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDIuNCkNCi0rY21h a2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDIuNi4zKQ0KLSANCi0gaWYoTVNWQykNCi0gICAg IHNldChDTUFLRV9VU0VfUkVMQVRJVkVfUEFUSFMgT04gQ0FDSEUgSU5URVJOQUwgIiIgRk9SQ0Up DQotQEAgLTkzOSw4ICs5MzksOCBAQCBleGVjX3Byb2dyYW0obWtkaXIgQVJHUyAiLXAgXCIke0NN QUtFX0JJCi0gY29uZmlndXJlX2ZpbGUoIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9PcGVu Q1ZDb25maWcuY21ha2UuaW4iICIke0NNQUtFX0JJTkFSWV9ESVJ9L3VuaXgtaW5zdGFsbC9PcGVu Q1ZDb25maWcuY21ha2UiIElNTUVESUFURSBAT05MWSkNCi0gDQotIGlmKFVOSVgpDQotLSAgICAj IEZvciBhIGNvbW1hbmQgIkZJTkRfUEFDS0FHRShGT08pIiwgQ01ha2Ugd2lsbCBsb29rIGF0IHRo ZSBkaXJlY3RvcnkgL3Vzci9zaGFyZXxsaWIvRk9PL0ZPT0NvbmZpZy5jbWFrZSwgc286DQotLSAg ICBpbnN0YWxsKEZJTEVTICR7Q01BS0VfQklOQVJZX0RJUn0vdW5peC1pbnN0YWxsL09wZW5DVkNv bmZpZy5jbWFrZSBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfUFJFRklYfS9zaGFyZS9vcGVu Y3YvKQ0KLSsgICAgIyBGb3IgYSBjb21tYW5kICJGSU5EX1BBQ0tBR0UoRk9PKSIsIENNYWtlIHdp bGwgbG9vayBhdCB0aGUgZGlyZWN0b3J5IC91c3Ivc2hhcmV8bGliL2NtYWtlL0ZPTy9GT09Db25m aWcuY21ha2UsIHNvOg0KLSsgICAgaW5zdGFsbChGSUxFUyAke0NNQUtFX0JJTkFSWV9ESVJ9L3Vu aXgtaW5zdGFsbC9PcGVuQ1ZDb25maWcuY21ha2UgREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxM X1BSRUZJWH0vbGliJHtMSUJfU1VGRklYfS9jbWFrZS9vcGVuY3YvKQ0KLSBlbmRpZigpDQotIA0K LSAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoKZGlmZiAtLWdpdCBhL29w ZW5jdi5zcGVjIGIvb3BlbmN2LnNwZWMKaW5kZXggZmRmMjk4ZC4uMDYxYmQ1MiAxMDA2NDQKLS0t IGEvb3BlbmN2LnNwZWMKKysrIGIvb3BlbmN2LnNwZWMKQEAgLTMsOCArMyw4IEBACiAlZ2xvYmFs IHRhcl9uYW1lIE9wZW5DVgogCiBOYW1lOiAgICAgICAgICAgb3BlbmN2Ci1WZXJzaW9uOiAgICAg ICAgMi4yLjAKLVJlbGVhc2U6ICAgICAgICA2JXs/ZGlzdH0KK1ZlcnNpb246ICAgICAgICAyLjMu MQorUmVsZWFzZTogICAgICAgIDElez9kaXN0fQogU3VtbWFyeTogICAgICAgIENvbGxlY3Rpb24g b2YgYWxnb3JpdGhtcyBmb3IgY29tcHV0ZXIgdmlzaW9uCiAKIEdyb3VwOiAgICAgICAgICBEZXZl bG9wbWVudC9MaWJyYXJpZXMKQEAgLTEzLDE3ICsxMyw4IEBAIExpY2Vuc2U6ICAgICAgICBCU0QK IFVSTDogICAgICAgICAgICBodHRwOi8vb3BlbmN2LndpbGxvd2dhcmFnZS5jb20vd2lraS8KIFNv dXJjZTA6ICAgICAgICBodHRwOi8vcHJkb3dubG9hZHMuc291cmNlZm9yZ2UubmV0L29wZW5jdmxp YnJhcnkvJXt0YXJfbmFtZX0tJXt2ZXJzaW9ufS50YXIuYnoyCiBTb3VyY2UxOiAgICAgICAgb3Bl bmN2LXNhbXBsZXMtTWFrZWZpbGUKLSMgRmVkb3JhIGNtYWtlIG1hY3JvcyBkZWZpbmUgLURMSUJf U1VGRklYPTY0IG9uIDY0IGJpdHMgcGxhdGZvcm1zCi1QYXRjaDA6ICAgICAgICAgT3BlbkNWLTIu Mi1saWJkaXIucGF0Y2gKLVBhdGNoMTogICAgICAgICBPcGVuQ1YtMi4yLW5vaW50cmVybmFsLnBh dGNoCi1QYXRjaDM6ICAgICAgICAgT3BlbkNWLTIuMi1maXhwYy5wYXRjaAotIyBwdXQgT3BlbkNW Q29uZmlnLmNtYWtlIGludG8gJXtfbGliZGlyfS9jbWFrZS9vcGVuY3YvIGluc3RlYWQgb2YgJXtf ZGF0YWRpcn0vb3BlbmN2LwotIyB1cHN0cmVhbWFibGUsIHVwJ3MgY21ha2UgcmVxIHRvIDIuNi4z IHRob3VnaC4gIENhbiBkbyBqdXN0ICV7X2xpYmRpcn0vb3BlbmN2LyB3aXRob3V0Ci0jIHRoZSBj bWFrZSBidW1wLCBpZiB0aGF0J3MgcHJlZmVyYWJsZSAtLSBSZXgKLVBhdGNoNDogICAgICAgICBv cGVuY3YtMi4xLjAtb3BlbmN2Y29uZmlnLnBhdGNoCi1QYXRjaDU6ICAgICAgICAgT3BlbkNWLTIu Mi1udW1weS5wYXRjaAotUGF0Y2g2OiAgICAgICAgIE9wZW5DVi0yLjItZ2NjNDYucGF0Y2gKLVBh dGNoNzogICAgICAgICBPcGVuQ1YtMi4yLWIyMi1iYWNrcG9ydF8yMDExMDUyNi5wYXRjaAorUGF0 Y2gwOiAgICAgICAgIE9wZW5DVi0yLjMuMS1udW1weS5wYXRjaAorUGF0Y2gxOiAgICAgICAgIE9w ZW5DVi0yLjMuMS1vcGVuY3Zjb25maWcucGF0Y2gKIEJ1aWxkUm9vdDogICAgICAle190bXBwYXRo fS8le25hbWV9LSV7dmVyc2lvbn0tJXtyZWxlYXNlfS1yb290LSUoJXtfX2lkX3V9IC1uKQogCiBC dWlsZFJlcXVpcmVzOiAgbGlidG9vbApAQCAtOTksNDggKzkwLDEyIEBAIFRoaXMgcGFja2FnZSBj b250YWlucyBQeXRob24gYmluZGluZ3MgZm9yIHRoZSBPcGVuQ1YgbGlicmFyeS4KIAogJXByZXAK ICVzZXR1cCAtcSAtbiAle3Rhcl9uYW1lfS0le3ZlcnNpb259Ci0lcGF0Y2gwIC1wMSAtYiAubGli ZGlyCi0lcGF0Y2gxIC1wMSAtYiAubm9pbnRlcm5hbAotJXBhdGNoMyAtcDEgLWIgLmZpeHBjCi0l cGF0Y2g0IC1wMSAtYiAub3BlbmN2Y29uZmlnCi0lcGF0Y2g1IC1wMSAtYiAubnVtcHkKLSVwYXRj aDYgLXAxIC1iIC5nY2M0NgotJWdsb2JhbCBfZGVmYXVsdF9wYXRjaF9mdXp6IDIKLSVwYXRjaDcg LXAxCi0KLSNTYXZlIHNvbWUgY29udmFudCBoZWFkZXJzIGZvciBub3c6Ci1jcCAtcCAzcmRwYXJ0 eS9pbmNsdWRlL2NibGFzLmggM3JkcGFydHkKLWNwIC1wIDNyZHBhcnR5L2luY2x1ZGUvY2xhcGFj ay5oIDNyZHBhcnR5Ci0KLSNSZW1vdmUgc2V2ZXJhbCBidW5kbGVkIGxpYnJhcmllcy4KLXJtIC1y ZiAzcmRwYXJ0eS9sYXBhY2sKLXJtIC1yZiAzcmRwYXJ0eS96bGliCi1ybSAtcmYgM3JkcGFydHkv bGliamFzcGVyCi1ybSAtcmYgM3JkcGFydHkvbGlicG5nCi1ybSAtcmYgM3JkcGFydHkvbGlianBl Zwotcm0gLXJmIDNyZHBhcnR5L2xpYnRpZmYKLXJtIC1yZiAzcmRwYXJ0eS9pbG1pbWYKLXJtIC1y ZiAzcmRwYXJ0eS9pbmNsdWRlLyoKLQotIyBQdXQgYmFjawotY3AgLXAgM3JkcGFydHkvY2JsYXMu aCAzcmRwYXJ0eS9pbmNsdWRlCi1jcCAtcCAzcmRwYXJ0eS9jbGFwYWNrLmggM3JkcGFydHkvaW5j bHVkZQotCi0KLSNGaXggc3B1cmlvdXMgcGVybToKLWZpbmQgLXBlcm0gNzU1IC1uYW1lICIqLmNw cCIgLWV4ZWMgY2htb2QgLXggIHt9ICc7JwotZmluZCAtcGVybSA3NTUgLW5hbWUgIiouYyIgLWV4 ZWMgY2htb2QgLXggIHt9ICc7JworJXBhdGNoMCAtcDEgLWIgLm51bXB5CislcGF0Y2gxIC1wMSAt YiAub3BlbmN2Y29uZmlnCiAKICMgZml4IGRvcyBlbmQgb2YgbGluZXMKIHNlZCAtaSAnc3xccnx8 ZycgIHNhbXBsZXMvYy9hZGFwdGl2ZXNraW5kZXRlY3Rvci5jcHAKIAotI0ZpeCBGbGFncwotc2Vk IC1pIC1lICdzL1VTRV9PMyBPTi9VU0VfTzMgT0ZGLycgQ01ha2VMaXN0cy50eHQKLSVpZmFyY2gg JXtpeDg2fQotc2VkIC1pIC1lICdzL0VOQUJMRV9TU0UgT04vRU5BQkxFX1NTRSBPRkYvJyBDTWFr ZUxpc3RzLnR4dAotc2VkIC1pIC1lICdzL0VOQUJMRV9TU0UyIE9OL0VOQUJMRV9TU0UyIE9GRi8n IENNYWtlTGlzdHMudHh0Ci0lZW5kaWYKLQogCiAlYnVpbGQKICMgZW5hYmxlZCBieSBkZWZhdWx0 IGlmIGxpYnJhcmllcyBhcmUgcHJlc2VudHMgYXQgYnVpbGQgdGltZToKQEAgLTE0OCw2ICsxMDMs OCBAQCBzZWQgLWkgLWUgJ3MvRU5BQkxFX1NTRTIgT04vRU5BQkxFX1NTRTIgT0ZGLycgQ01ha2VM aXN0cy50eHQKICMgbm9uIGF2YWlsYWJsZSBvbiBGZWRvcmE6IEZGTVBFRywgWElORQogI0JVSUxE X1RFU1QgaXMgYnJva2VuCiAlY21ha2UgQ01BS0VfVkVSQk9TRT0xIFwKKyAtRFBZVEhPTl9QQUNL QUdFU19QQVRIPSV7cHl0aG9uX3NpdGVhcmNofSBcCisgLURDTUFLRV9TS0lQX1JQQVRIPU9OIFwK ICAtREVOQUJMRV9PUEVOTVA9MSBcCiAgLURVU0VfTzM9MCBcCiAgLURVU0VfRkFTVF9NQVRIPTAg XApAQCAtMTgwLDE1ICsxMzcsOCBAQCBybSAtZiAkUlBNX0JVSUxEX1JPT1Qle19kYXRhZGlyfS8l e25hbWV9L3NhbXBsZXMvYy9idWlsZF9hbGwuc2ggXAogaW5zdGFsbCAtcG02NDQgJXtTT1VSQ0Ux fSAkUlBNX0JVSUxEX1JPT1Qle19kYXRhZGlyfS8le25hbWV9L3NhbXBsZXMvYy9HTlVtYWtlZmls ZQogCiAjIHJlbW92ZSB1bm5lY2Vzc2FyeSBkb2N1bWVudGF0aW9uCi1ybSAtcmYgJFJQTV9CVUlM RF9ST09UJXtfZGF0YWRpcn0vb3BlbmN2L3tkb2MvLHNhbXBsZXMvb2N0YXZlL30KK3JtIC1yZiAk UlBNX0JVSUxEX1JPT1Qle19kYXRhZGlyfS9PcGVuQ1YvZG9jCiAKLSMgRml4IG5vbnN0YW5kYXJk IGV4ZWN1dGFibGUgcGVybWlzc2lvbnMKLSNjaG1vZCAwNzU1ICRSUE1fQlVJTERfUk9PVCV7X2Rh dGFkaXJ9L29wZW5jdi9zYW1wbGVzL3B5dGhvbi8qLnB5Ci0jY2htb2QgMDc1NSAkUlBNX0JVSUxE X1JPT1Qle3B5dGhvbl9zaXRlYXJjaH0vY3Yuc28KLSNjaG1vZCAwNzU1ICRSUE1fQlVJTERfUk9P VCV7cHl0aG9uX3NpdGVhcmNofS9vcGVuY3YvKi5zbwotCi0jIFJlbW92ZSBScGF0aCBpbiBweXRo b24gc2hhcmVkIG9iamVjdHM6Ci1maW5kICRSUE1fQlVJTERfUk9PVCV7cHl0aG9uX3NpdGVhcmNo fSAtbmFtZSAiKi5zbyIgLWV4ZWMgY2hycGF0aCAtZCB7fSAnOycKIAogCiAlY2hlY2sKQEAgLTIx MCwxMyArMTYwLDEyIEBAIHJtIC1yZiAkUlBNX0JVSUxEX1JPT1QKIAogJWZpbGVzCiAlZGVmYXR0 cigtLHJvb3Qscm9vdCwtKQotJWRvYyBkb2MvUkVBRE1FLnR4dAorJWRvYyBkb2MvbGljZW5zZS50 eHQKICV7X2JpbmRpcn0vb3BlbmN2XyoKICV7X2xpYmRpcn0vbGliKi5zby4qCi0lZGlyICV7X2Rh dGFkaXJ9L29wZW5jdgotJWV4Y2x1ZGUgJXtfZGF0YWRpcn0vb3BlbmN2L3NhbXBsZXMKLSV7X2Rh dGFkaXJ9L29wZW5jdi9oYWFyY2FzY2FkZXMKLSV7X2RhdGFkaXJ9L29wZW5jdi9sYnBjYXNjYWRl cworJWRpciAle19kYXRhZGlyfS9PcGVuQ1YKKyV7X2RhdGFkaXJ9L09wZW5DVi9oYWFyY2FzY2Fk ZXMKKyV7X2RhdGFkaXJ9L09wZW5DVi9sYnBjYXNjYWRlcwogCiAKICVmaWxlcyBkZXZlbApAQCAt MjMxLDE4ICsxODAsMjAgQEAgcm0gLXJmICRSUE1fQlVJTERfUk9PVAogCiAlZmlsZXMgZGV2ZWwt ZG9jcwogJWRlZmF0dHIoLSxyb290LHJvb3QsLSkKLSVkb2MgZG9jLyV7bmFtZX0ucGRmCislZG9j IGRvYy9vcGVuY3ZfdHV0b3JpYWxzLnBkZgogJWRvYyBkb2MvKi57aHRtLHBuZyxqcGd9CiAlZG9j ICV7X2RhdGFkaXJ9L29wZW5jdi9zYW1wbGVzCiAKICVmaWxlcyBweXRob24KICVkZWZhdHRyKC0s cm9vdCxyb290LC0pCi0le3B5dGhvbl9zaXRlYXJjaH0vY3Yuc28KLSMgb2xkIFNXSUcgd3JhcHBl cnMKLSN7cHl0aG9uX3NpdGVhcmNofS9vcGVuY3YKKyV7cHl0aG9uX3NpdGVhcmNofS9jdi5weSoK KyV7cHl0aG9uX3NpdGVhcmNofS9jdjIuc28KIAogCiAlY2hhbmdlbG9nCisqIEZyaSBBdWcgMTkg MjAxMSBOaWNvbGFzIENoYXV2ZXQgPGt3aXphcnRAZ21haWwuY29tPiAtIDIuMy4xLTEKKy0gVXBk YXRlIHRvIDIuMy4xCisKICogVGh1IE1heSAyNiAyMDExIE5pY29sYXMgQ2hhdXZldCA8a3dpemFy dEBnbWFpbC5jb20+IC0gMi4yLjAtNgogLSBCYWNrcG9ydCBmaXhlcyBmcm9tIGJyYW5jaCAyLjIg dG8gZGF0ZQogCgpkaWZmIC0tZ2l0IGEvc291cmNlcyBiL3NvdXJjZXMKaW5kZXggZTg2ODYwNi4u NDEyNmQxZCAxMDA2NDQKLS0tIGEvc291cmNlcworKysgYi9zb3VyY2VzCkBAIC0xICsxIEBACi0x MjJjOWFjNzkzYTQ2ODU0ZWYyODE5ZmVkYmJkNmIxYiAgT3BlbkNWLTIuMi4wLnRhci5iejIKKzgy N2M5ZjhhYTE0Mzg0YzUzMWM3M2FhMTY1ZjliNzc3ICBPcGVuQ1YtMi4zLjEudGFyLmJ6Mgo=