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: Jakub Jelinek To: git-commits@fedoraproject.org Subject: [rpms/gcc] rhel-f41-base: 12.0.1-0.9 Date: Mon, 29 Jun 2026 12:29:42 GMT Message-ID: <178273618204.1.7702718603087934916.rpms-gcc-b0dddd2d05f2@fedoraproject.org> List-ID: X-Git-Repo: rpms/gcc X-Git-Branch: rhel-f41-base X-Git-Rev: b0dddd2d05f29e68631c9155f3eee6a9536c0cf1 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2NjCkJyYW5jaCA6 IHJoZWwtZjQxLWJhc2UKQ29tbWl0IDogYjBkZGRkMmQwNWYyOWU2ODYzMWM5MTU1ZjNlZWU2YTk1 MzZjMGNmMQpBdXRob3IgOiBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPgpEYXRlICAg OiAyMDIyLTAyLTIyVDExOjU2OjAwKzAxOjAwClN0YXRzICA6ICsyMy8tMTM0OSBpbiA1IGZpbGUo cykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9nY2MvYy9iMGRk ZGQyZDA1ZjI5ZTY4NjMxYzkxNTVmM2VlZTZhOTUzNmMwY2YxP2JyYW5jaD1yaGVsLWY0MS1iYXNl CgpMb2c6CjEyLjAuMS0wLjkKCi0tLQpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25v cmUKaW5kZXggMDM0NjBmZS4uYzUwMjk3YyAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysgYi8u Z2l0aWdub3JlCkBAIC02NCwzICs2NCw0IEBACiAvZ2NjLTEyLjAuMS0yMDIyMDIwNS50YXIueHoK IC9nY2MtMTIuMC4xLTIwMjIwMjEyLnRhci54egogL2djYy0xMi4wLjEtMjAyMjAyMTQudGFyLnh6 CisvZ2NjLTEyLjAuMS0yMDIyMDIyMi50YXIueHoKCmRpZmYgLS1naXQgYS9nY2Muc3BlYyBiL2dj Yy5zcGVjCmluZGV4IDM3NGMxNWUuLjQ1ZTQ1ZjcgMTAwNjQ0Ci0tLSBhL2djYy5zcGVjCisrKyBi L2djYy5zcGVjCkBAIC0xLDUgKzEsNSBAQAotJWdsb2JhbCBEQVRFIDIwMjIwMjE0Ci0lZ2xvYmFs IGdpdHJldiA3MjIyZmI5ODNkNzk4MzA2YTgzNjY2MzI0YTkyZmNlNWU1ODgxZWI3CislZ2xvYmFs IERBVEUgMjAyMjAyMjIKKyVnbG9iYWwgZ2l0cmV2IDk3ODBlYTUwZDJhMGZiMmIwN2JjOWEwZjcx ZTI4ZTljMWVmNWUyMzUKICVnbG9iYWwgZ2NjX3ZlcnNpb24gMTIuMC4xCiAlZ2xvYmFsIGdjY19t YWpvciAxMgogIyBOb3RlLCBnY2NfcmVsZWFzZSBtdXN0IGJlIGludGVnZXIsIGlmIHlvdSB3YW50 IHRvIGFkZCBzdWZmaXhlcyB0bwpAQCAtMTIwLDcgKzEyMCw3IEBACiBTdW1tYXJ5OiBWYXJpb3Vz IGNvbXBpbGVycyAoQywgQysrLCBPYmplY3RpdmUtQywgLi4uKQogTmFtZTogZ2NjCiBWZXJzaW9u OiAle2djY192ZXJzaW9ufQotUmVsZWFzZTogJXtnY2NfcmVsZWFzZX0uOCV7P2Rpc3R9CitSZWxl YXNlOiAle2djY19yZWxlYXNlfS45JXs/ZGlzdH0KICMgbGliZ2NjLCBsaWJnZm9ydHJhbiwgbGli Z29tcCwgbGlic3RkYysrIGFuZCBjcnRzdHVmZiBoYXZlCiAjIEdDQyBSdW50aW1lIEV4Y2VwdGlv bi4KIExpY2Vuc2U6IEdQTHYzKyBhbmQgR1BMdjMrIHdpdGggZXhjZXB0aW9ucyBhbmQgR1BMdjIr IHdpdGggZXhjZXB0aW9ucyBhbmQgTEdQTHYyKyBhbmQgQlNECkBAIC0yNzAsOCArMjcwLDYgQEAg UGF0Y2g4OiBnY2MxMi1uby1hZGQtbmVlZGVkLnBhdGNoCiBQYXRjaDk6IGdjYzEyLVduby1mb3Jt YXQtc2VjdXJpdHkucGF0Y2gKIFBhdGNoMTA6IGdjYzEyLXJoMTU3NDkzNi5wYXRjaAogUGF0Y2gx MTogZ2NjMTItZC1zaGFyZWQtbGlicGhvYm9zLnBhdGNoCi1QYXRjaDEyOiBnY2MxMi1pZmN2dC1y ZXZlcnQucGF0Y2gKLVBhdGNoMTM6IGdjYzEyLXByMTA0MjUzLnBhdGNoCiAKIFBhdGNoMTAwOiBn Y2MxMi1mb3J0cmFuLWZkZWMtZHVwbGljYXRlcy5wYXRjaAogUGF0Y2gxMDE6IGdjYzEyLWZvcnRy YW4tZmxvZ2ljYWwtYXMtaW50ZWdlci5wYXRjaApAQCAtNzkzLDggKzc5MSw2IEBAIHRvIE5WaWRp YSBQVFggY2FwYWJsZSBkZXZpY2VzIGlmIGF2YWlsYWJsZS4KICVwYXRjaDEwIC1wMCAtYiAucmgx NTc0OTM2fgogJWVuZGlmCiAlcGF0Y2gxMSAtcDAgLWIgLmQtc2hhcmVkLWxpYnBob2Jvc34KLSVw YXRjaDEyIC1wMCAtYiAuaWZjdnQtcmV2ZXJ0fgotJXBhdGNoMTMgLXAwIC1iIC5wcjEwNDI1M34K IAogJWlmIDAlez9yaGVsfSA+PSA5CiAlcGF0Y2gxMDAgLXAxIC1iIC5mb3J0cmFuLWZkZWMtZHVw bGljYXRlc34KQEAgLTgyNCw2ICs4MjAsNyBAQCBjcCAtYSBsaWJzdGRjKystdjMvY29uZmlnL2Nw dS9pezQsM304Ni9hdG9taWNpdHkuaAogTENfQUxMPUMgc2VkIC1pIC1lICdzL1x4YTAvIC8nIGdj Yy9kb2Mvb3B0aW9ucy50ZXhpCiAKIHNlZCAtaSAtZSAncy9Db21tb24gRHJpdmVyIFZhcihmbGFn X3JlcG9ydF9idWcpLyYgSW5pdCgxKS8nIGdjYy9jb21tb24ub3B0CitzZWQgLWkgLWUgJ3MvY29u dGV4dC0+cmVwb3J0X2J1ZyA9IGZhbHNlOy9jb250ZXh0LT5yZXBvcnRfYnVnID0gdHJ1ZTsvJyBn Y2MvZGlhZ25vc3RpYy5jYwogCiAlaWZhcmNoIHBwYwogaWYgWyAtZCBsaWJzdGRjKystdjMvY29u ZmlnL2FiaS9wb3N0L3Bvd2VycGM2NC1saW51eC1nbnUgXTsgdGhlbgpAQCAtMzE2Nyw2ICszMTY0 LDIzIEBAIGVuZAogJWVuZGlmCiAKICVjaGFuZ2Vsb2cKKyogVHVlIEZlYiAyMiAyMDIyIEpha3Vi IEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDEyLjAuMS0wLjkKKy0gdXBkYXRlIGZyb20gdHJ1 bmsKKyAgLSBQUnMgYW5hbHl6ZXIvMTA0NTI0LCBhbmFseXplci8xMDQ1NjAsIGFuYWx5emVyLzEw NDU3NiwgYysrLzg1NDkzLAorCWMrKy85MDQ1MSwgYysrLzk0OTQ0LCBjKysvOTUwMzYsIGMrKy8x MDQxMDcsIGMrKy8xMDQ1MDcsIGMrKy8xMDQ1MzksCisJYysrLzEwNDU2NSwgYy8xMDQ1MDYsIGMv MTA0NTEwLCBjLzEwNDUzMSwgYy8xMDQ1MzIsIGRlYnVnLzEwNDUxNywKKwlkZWJ1Zy8xMDQ1NTcs IGZvcnRyYW4vNzc2OTMsIGZvcnRyYW4vMTA0MjExLCBsaWJzdGRjKysvMTA0NTQyLAorCWxpYnN0 ZGMrKy8xMDQ1NTksIGx0by8xMDQ2MTcsIG1pZGRsZS1lbmQvMTA0MzU1LCBtaWRkbGUtZW5kLzEw NDUyMiwKKwlydGwtb3B0aW1pemF0aW9uLzEwNDQ0NywgcnRsLW9wdGltaXphdGlvbi8xMDQ0OTgs CisJcnRsLW9wdGltaXphdGlvbi8xMDQ1NDQsIHNhbml0aXplci8xMDI2NTYsIHRhcmdldC85OTcw OCwgdGFyZ2V0Lzk5ODgxLAorCXRhcmdldC8xMDAwNTYsIHRhcmdldC8xMDA4NzQsIHRhcmdldC8x MDMwNjksIHRhcmdldC8xMDQyNTMsCisJdGFyZ2V0LzEwNDI1NywgdGFyZ2V0LzEwNDMzNSwgdGFy Z2V0LzEwNDQ0MCwgdGFyZ2V0LzEwNDQ0OCwKKwl0YXJnZXQvMTA0NTM2LCB0YXJnZXQvMTA0NTgx LCB0YXJnZXQvMTA0NTk4LCB0YXJnZXQvMTA0NjEyLAorCXRlc3RzdWl0ZS8xMDQxNDYsIHRyZWUt b3B0aW1pemF0aW9uLzk2ODgxLCB0cmVlLW9wdGltaXphdGlvbi8xMDM3NzEsCisJdHJlZS1vcHRp bWl6YXRpb24vMTA0NTE5LCB0cmVlLW9wdGltaXphdGlvbi8xMDQ1MjYsCisJdHJlZS1vcHRpbWl6 YXRpb24vMTA0NTQzLCB0cmVlLW9wdGltaXphdGlvbi8xMDQ1NTEsCisJdHJlZS1vcHRpbWl6YXRp b24vMTA0NTgyLCB0cmVlLW9wdGltaXphdGlvbi8xMDQ2MDQKKwogKiBNb24gRmViIDE0IDIwMjIg SmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gMTIuMC4xLTAuOAogLSB1cGRhdGUgZnJv bSB0cnVuawogICAtIFBScyBhZGEvOTc1MDQsIGFkYS85ODcyNCwgYy8xMDQ1MDUsIGZvcnRyYW4v MTA0MjI4LCBsaWJzdGRjKysvMTAwOTEyLAoKZGlmZiAtLWdpdCBhL2djYzEyLWlmY3Z0LXJldmVy dC5wYXRjaCBiL2djYzEyLWlmY3Z0LXJldmVydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggZGQxMzI3MS4uMDAwMDAwMAotLS0gYS9nY2MxMi1pZmN2dC1yZXZlcnQucGF0Y2gK KysrIC9kZXYvbnVsbApAQCAtMSwxMTQxICswLDAgQEAKLVJldmVydCByMTItNjc0ezMsNCw1LDYs Nyw4LDl9IGFuZCByMTItNzExNCwgYXMgdGhlcmUgYXJlIHNldmVyYWwgUFJzIHJlcG9ydGVkCi1h Z2FpbnN0IHRob3NlIGNoYW5nZXMgc3RpbGwgdW5yZXNvbHZlZC4KLQotLS0tIGdjYy9pZmN2dC5j YwotKysrIGdjYy9pZmN2dC5jYwotQEAgLTMzOTEsMTEgKzMzOTEsNyBAQCBub2NlX2NvbnZlcnRf bXVsdGlwbGVfc2V0c18xIChzdHJ1Y3Qgbm9jZV9pZl9pbmZvICppZl9pbmZvLAotICAgcnR4IGNv bmQgPSBub2NlX2dldF9jb25kaXRpb24gKGp1bXAsICZjb25kX2VhcmxpZXN0LCBmYWxzZSk7Ci0g Ci0gICBydHggY2NfY21wID0gY29uZF9leGVjX2dldF9jb25kaXRpb24gKGp1bXApOwotLSAgaWYg KGNjX2NtcCkKLS0gICAgY2NfY21wID0gY29weV9ydHggKGNjX2NtcCk7Ci0gICBydHggcmV2X2Nj X2NtcCA9IGNvbmRfZXhlY19nZXRfY29uZGl0aW9uIChqdW1wLCAvKiBnZXRfcmV2ZXJzZWQgKi8g dHJ1ZSk7Ci0tICBpZiAocmV2X2NjX2NtcCkKLS0gICAgcmV2X2NjX2NtcCA9IGNvcHlfcnR4IChy ZXZfY2NfY21wKTsKLSAKLSAgIHJ0eF9pbnNuICppbnNuOwotICAgaW50IGNvdW50ID0gMDsKLUBA IC0zNTE5LDcgKzM1MTUsNiBAQCBub2NlX2NvbnZlcnRfbXVsdGlwbGVfc2V0c18xIChzdHJ1Y3Qg bm9jZV9pZl9pbmZvICppZl9pbmZvLAotICAgICAgIHVuc2lnbmVkIGNvc3QxID0gMCwgY29zdDIg PSAwOwotICAgICAgIHJ0eF9pbnNuICpzZXEsICpzZXExLCAqc2VxMjsKLSAgICAgICBydHggdGVt cF9kZXN0ID0gTlVMTF9SVFgsIHRlbXBfZGVzdDEgPSBOVUxMX1JUWCwgdGVtcF9kZXN0MiA9IE5V TExfUlRYOwotLSAgICAgIGJvb2wgcmVhZF9jb21wYXJpc29uID0gZmFsc2U7Ci0gCi0gICAgICAg c2VxMSA9IHRyeV9lbWl0X2Ntb3ZlX3NlcSAoaWZfaW5mbywgdGVtcCwgY29uZCwKLSAJCQkJIG5l d192YWwsIG9sZF92YWwsIG5lZWRfY21vdiwKLUBAIC0zNTI5LDQxICszNTI0LDEwIEBAIG5vY2Vf Y29udmVydF9tdWx0aXBsZV9zZXRzXzEgKHN0cnVjdCBub2NlX2lmX2luZm8gKmlmX2luZm8sCi0g CSBhcyB3ZWxsLiAgVGhpcyBhbGxvd3MgdGhlIGJhY2tlbmQgdG8gZW1pdCBhIGNtb3YgZGlyZWN0 bHkgd2l0aG91dAotIAkgY3JlYXRpbmcgYW4gYWRkaXRpb25hbCBjb21wYXJlIGZvciBlYWNoLiAg SWYgc3VjY2Vzc2Z1bCwgY29zdGluZwotIAkgaXMgZWFzaWVyIGFuZCB0aGlzIHNlcXVlbmNlIGlz IHVzdWFsbHkgcHJlZmVycmVkLiAgKi8KLS0gICAgICBzZXEyID0gdHJ5X2VtaXRfY21vdmVfc2Vx IChpZl9pbmZvLCB0ZW1wLCBjb25kLAotKyAgICAgIHNlcTIgPSB0cnlfZW1pdF9jbW92ZV9zZXEg KGlmX2luZm8sIHRhcmdldCwgY29uZCwKLSAJCQkJIG5ld192YWwsIG9sZF92YWwsIG5lZWRfY21v diwKLSAJCQkJICZjb3N0MiwgJnRlbXBfZGVzdDIsIGNjX2NtcCwgcmV2X2NjX2NtcCk7Ci0gCi0t ICAgICAgLyogVGhlIGJhY2tlbmQgbWlnaHQgaGF2ZSBjcmVhdGVkIGEgc2VxdWVuY2UgdGhhdCB1 c2VzIHRoZQotLQkgY29uZGl0aW9uLiAgQ2hlY2sgdGhpcy4gICovCi0tICAgICAgcnR4X2luc24g KndhbGsgPSBzZXEyOwotLSAgICAgIHdoaWxlICh3YWxrKQotLQl7Ci0tCSAgcnR4IHNldCA9IHNp bmdsZV9zZXQgKHdhbGspOwotLQotLQkgIGlmICghc2V0IHx8ICFTRVRfU1JDIChzZXQpKQotLQkg ICAgewotLQkgICAgICB3YWxrID0gTkVYVF9JTlNOICh3YWxrKTsKLS0JICAgICAgY29udGludWU7 Ci0tCSAgICB9Ci0tCi0tCSAgcnR4IHNyYyA9IFNFVF9TUkMgKHNldCk7Ci0tCi0tCSAgaWYgKFhF WFAgKHNldCwgMSkgJiYgR0VUX0NPREUgKFhFWFAgKHNldCwgMSkpID09IElGX1RIRU5fRUxTRSkK LS0JICAgIDsgLyogV2UgYXNzdW1lIHRoYXQgdGhpcyBpcyB0aGUgY21vdmUgY3JlYXRlZCBieSB0 aGUgYmFja2VuZCB0aGF0Ci0tCQkgbmF0dXJhbGx5IHVzZXMgdGhlIGNvbmRpdGlvbi4gIFRoZXJl Zm9yZSB3ZSBpZ25vcmUgaXQuICAqLwotLQkgIGVsc2UKLS0JICAgIHsKLS0JICAgICAgaWYgKHJl Z19tZW50aW9uZWRfcCAoWEVYUCAoY29uZCwgMCksIHNyYykKLS0JCSAgfHwgcmVnX21lbnRpb25l ZF9wIChYRVhQIChjb25kLCAxKSwgc3JjKSkKLS0JCXsKLS0JCSAgcmVhZF9jb21wYXJpc29uID0g dHJ1ZTsKLS0JCSAgYnJlYWs7Ci0tCQl9Ci0tCSAgICB9Ci0tCi0tCSAgd2FsayA9IE5FWFRfSU5T TiAod2Fsayk7Ci0tCX0KLS0KLSAgICAgICAvKiBDaGVjayB3aGljaCB2ZXJzaW9uIGlzIGxlc3Mg ZXhwZW5zaXZlLiAgKi8KLSAgICAgICBpZiAoc2VxMSAhPSBOVUxMX1JUWCAmJiAoY29zdDEgPD0g Y29zdDIgfHwgc2VxMiA9PSBOVUxMX1JUWCkpCi0gCXsKLUBAIC0zNTc2LDggKzM1NDAsNiBAQCBu b2NlX2NvbnZlcnRfbXVsdGlwbGVfc2V0c18xIChzdHJ1Y3Qgbm9jZV9pZl9pbmZvICppZl9pbmZv LAotIAl7Ci0gCSAgc2VxID0gc2VxMjsKLSAJICB0ZW1wX2Rlc3QgPSB0ZW1wX2Rlc3QyOwotLQkg IGlmICghc2Vjb25kX3RyeSAmJiByZWFkX2NvbXBhcmlzb24pCi0tCSAgICAqbGFzdF9uZWVkc19j b21wYXJpc29uID0gY291bnQ7Ci0gCX0KLSAgICAgICBlbHNlCi0gCXsKLUBAIC0zNTk2LDEyICsz NTU4LDYgQEAgbm9jZV9jb252ZXJ0X211bHRpcGxlX3NldHNfMSAoc3RydWN0IG5vY2VfaWZfaW5m byAqaWZfaW5mbywKLSAgICAgICB1bm1vZGlmaWVkX2luc25zLT5zYWZlX3B1c2ggKGluc24pOwot ICAgICB9Ci0gCi0tICAvKiBFdmVuIGlmIHdlIGRpZCBub3QgYWN0dWFsbHkgbmVlZCB0aGUgY29t cGFyaXNvbiwgd2Ugd2FudCB0byBtYWtlIHN1cmUKLS0gICAgIHRvIHRyeSBhIHNlY29uZCB0aW1l IGluIG9yZGVyIHRvIGdldCByaWQgb2YgdGhlIHRlbXBvcmFyaWVzLiAgKi8KLS0gIGlmICgqbGFz dF9uZWVkc19jb21wYXJpc29uID09IC0xKQotLSAgICAqbGFzdF9uZWVkc19jb21wYXJpc29uID0g MDsKLS0KLS0KLSAgIHJldHVybiB0cnVlOwotIH0KLSAKLS0tLSBnY2MvY29uZmlnL3JzNjAwMC9y czYwMDAuY2MKLSsrKyBnY2MvY29uZmlnL3JzNjAwMC9yczYwMDAuY2MKLUBAIC0xNjM3MywxMCAr MTYzNzMsMTAgQEAgcnM2MDAwX2VtaXRfbWlubWF4IChydHggZGVzdCwgZW51bSBydHhfY29kZSBj b2RlLCBydHggb3AwLCBydHggb3AxKQotICAgICBjID0gR0VVOwotIAotICAgaWYgKGNvZGUgPT0g U01BWCB8fCBjb2RlID09IFVNQVgpCi0tICAgIHRhcmdldCA9IGVtaXRfY29uZGl0aW9uYWxfbW92 ZSAoZGVzdCwgeyBjLCBvcDAsIG9wMSwgbW9kZSB9LAotKyAgICB0YXJnZXQgPSBlbWl0X2NvbmRp dGlvbmFsX21vdmUgKGRlc3QsIGMsIG9wMCwgb3AxLCBtb2RlLAotIAkJCQkgICAgb3AwLCBvcDEs IG1vZGUsIDApOwotICAgZWxzZQotLSAgICB0YXJnZXQgPSBlbWl0X2NvbmRpdGlvbmFsX21vdmUg KGRlc3QsIHsgYywgb3AwLCBvcDEsIG1vZGUgfSwKLSsgICAgdGFyZ2V0ID0gZW1pdF9jb25kaXRp b25hbF9tb3ZlIChkZXN0LCBjLCBvcDAsIG9wMSwgbW9kZSwKLSAJCQkJICAgIG9wMSwgb3AwLCBt b2RlLCAwKTsKLSAgIGdjY19hc3NlcnQgKHRhcmdldCk7Ci0gICBpZiAodGFyZ2V0ICE9IGRlc3Qp Ci1AQCAtMjI3NjksNyArMjI3NjksNyBAQCByczYwMDBfZW1pdF9zd3NxcnQgKHJ0eCBkc3QsIHJ0 eCBzcmMsIGJvb2wgcmVjaXApCi0gCi0gICAgICAgaWYgKG1vZGUgPT0gU0Ztb2RlKQotIAl7Ci0t CSAgcnR4IHRhcmdldCA9IGVtaXRfY29uZGl0aW9uYWxfbW92ZSAoZSwgeyBHVCwgc3JjLCB6ZXJv LCBtb2RlIH0sCi0rCSAgcnR4IHRhcmdldCA9IGVtaXRfY29uZGl0aW9uYWxfbW92ZSAoZSwgR1Qs IHNyYywgemVybywgbW9kZSwKLSAJCQkJCSAgICAgIGUsIHplcm8sIG1vZGUsIDApOwotIAkgIGlm ICh0YXJnZXQgIT0gZSkKLSAJICAgIGVtaXRfbW92ZV9pbnNuIChlLCB0YXJnZXQpOwotLS0tIGdj Yy9leHBtZWQuY2MKLSsrKyBnY2MvZXhwbWVkLmNjCi1AQCAtNDEyNCw4ICs0MTI0LDggQEAgZXhw YW5kX3NkaXZfcG93MiAoc2NhbGFyX2ludF9tb2RlIG1vZGUsIHJ0eCBvcDAsIEhPU1RfV0lERV9J TlQgZCkKLSAgICAgICB0ZW1wID0gZm9yY2VfcmVnIChtb2RlLCB0ZW1wKTsKLSAKLSAgICAgICAv KiBDb25zdHJ1Y3QgInRlbXAyID0gKHRlbXAyIDwgMCkgPyB0ZW1wIDogdGVtcDIiLiAgKi8KLS0g ICAgICB0ZW1wMiA9IGVtaXRfY29uZGl0aW9uYWxfbW92ZSAodGVtcDIsIHsgTFQsIHRlbXAyLCBj b25zdDBfcnR4LCBtb2RlIH0sCi0tCQkJCSAgICAgdGVtcCwgdGVtcDIsIG1vZGUsIDApOwotKyAg ICAgIHRlbXAyID0gZW1pdF9jb25kaXRpb25hbF9tb3ZlICh0ZW1wMiwgTFQsIHRlbXAyLCBjb25z dDBfcnR4LAotKwkJCQkgICAgIG1vZGUsIHRlbXAsIHRlbXAyLCBtb2RlLCAwKTsKLSAgICAgICBp ZiAodGVtcDIpCi0gCXsKLSAJICBydHhfaW5zbiAqc2VxID0gZ2V0X2luc25zICgpOwotQEAgLTYx MjcsMTAgKzYxMjcsMTAgQEAgZW1pdF9zdG9yZV9mbGFnIChydHggdGFyZ2V0LCBlbnVtIHJ0eF9j b2RlIGNvZGUsIHJ0eCBvcDAsIHJ0eCBvcDEsCi0gCXJldHVybiAwOwotIAotICAgICAgIGlmIChh bmRfdGhlbSkKLS0JdGVtID0gZW1pdF9jb25kaXRpb25hbF9tb3ZlICh0YXJnZXQsIHsgY29kZSwg b3AwLCBvcDEsIG1vZGUgfSwKLSsJdGVtID0gZW1pdF9jb25kaXRpb25hbF9tb3ZlICh0YXJnZXQs IGNvZGUsIG9wMCwgb3AxLCBtb2RlLAotIAkJCQkgICAgIHRlbSwgY29uc3QwX3J0eCwgR0VUX01P REUgKHRlbSksIDApOwotICAgICAgIGVsc2UKLS0JdGVtID0gZW1pdF9jb25kaXRpb25hbF9tb3Zl ICh0YXJnZXQsIHsgY29kZSwgb3AwLCBvcDEsIG1vZGUgfSwKLSsJdGVtID0gZW1pdF9jb25kaXRp b25hbF9tb3ZlICh0YXJnZXQsIGNvZGUsIG9wMCwgb3AxLCBtb2RlLAotIAkJCQkgICAgIHRydWV2 YWwsIHRlbSwgR0VUX01PREUgKHRlbSksIDApOwotIAotICAgICAgIGlmICh0ZW0gPT0gMCkKLS0t LSBnY2MvZXhwci5jYwotKysrIGdjYy9leHByLmNjCi1AQCAtODgyNCw5ICs4ODI0LDggQEAgZXhw YW5kX2NvbmRfZXhwcl91c2luZ19jbW92ZSAodHJlZSB0cmVlb3AwIEFUVFJJQlVURV9VTlVTRUQs Ci0gICAgIG9wMiA9IGdlbl9sb3dwYXJ0IChtb2RlLCBvcDIpOwotIAotICAgLyogVHJ5IHRvIGVt aXQgdGhlIGNvbmRpdGlvbmFsIG1vdmUuICAqLwotLSAgaW5zbiA9IGVtaXRfY29uZGl0aW9uYWxf bW92ZSAodGVtcCwKLS0JCQkJeyBjb21wYXJpc29uX2NvZGUsIG9wMDAsIG9wMDEsCi0tCQkJCSAg Y29tcGFyaXNvbl9tb2RlIH0sCi0rICBpbnNuID0gZW1pdF9jb25kaXRpb25hbF9tb3ZlICh0ZW1w LCBjb21wYXJpc29uX2NvZGUsCi0rCQkJCW9wMDAsIG9wMDEsIGNvbXBhcmlzb25fbW9kZSwKLSAJ CQkJb3AxLCBvcDIsIG1vZGUsCi0gCQkJCXVuc2lnbmVkcCk7Ci0gCi1AQCAtOTcxNyw5ICs5NzE2 LDggQEAgZXhwYW5kX2V4cHJfcmVhbF8yIChzZXBvcHMgb3BzLCBydHggdGFyZ2V0LCBtYWNoaW5l X21vZGUgdG1vZGUsCi0gCSAgICBzdGFydF9zZXF1ZW5jZSAoKTsKLSAKLSAJICAgIC8qIFRyeSB0 byBlbWl0IHRoZSBjb25kaXRpb25hbCBtb3ZlLiAgKi8KLS0JICAgIGluc24gPSBlbWl0X2NvbmRp dGlvbmFsX21vdmUgKHRhcmdldCwKLS0JCQkJCSAgeyBjb21wYXJpc29uX2NvZGUsCi0tCQkJCQkg ICAgb3AwLCBjbXBvcDEsIG1vZGUgfSwKLSsJICAgIGluc24gPSBlbWl0X2NvbmRpdGlvbmFsX21v dmUgKHRhcmdldCwgY29tcGFyaXNvbl9jb2RlLAotKwkJCQkJICBvcDAsIGNtcG9wMSwgbW9kZSwK LSAJCQkJCSAgb3AwLCBvcDEsIG1vZGUsCi0gCQkJCQkgIHVuc2lnbmVkcCk7Ci0gCi0tLS0gZ2Nj L2lmY3Z0LmNjCi0rKysgZ2NjL2lmY3Z0LmNjCi1AQCAtODMsNyArODMsNyBAQCBzdGF0aWMgcnR4 X2luc24gKmxhc3RfYWN0aXZlX2luc24gKGJhc2ljX2Jsb2NrLCBpbnQpOwotIHN0YXRpYyBydHhf aW5zbiAqZmluZF9hY3RpdmVfaW5zbl9iZWZvcmUgKGJhc2ljX2Jsb2NrLCBydHhfaW5zbiAqKTsK LSBzdGF0aWMgcnR4X2luc24gKmZpbmRfYWN0aXZlX2luc25fYWZ0ZXIgKGJhc2ljX2Jsb2NrLCBy dHhfaW5zbiAqKTsKLSBzdGF0aWMgYmFzaWNfYmxvY2sgYmxvY2tfZmFsbHRocnUgKGJhc2ljX2Js b2NrKTsKLS1zdGF0aWMgcnR4IGNvbmRfZXhlY19nZXRfY29uZGl0aW9uIChydHhfaW5zbiAqLCBi b29sKTsKLStzdGF0aWMgcnR4IGNvbmRfZXhlY19nZXRfY29uZGl0aW9uIChydHhfaW5zbiAqKTsK LSBzdGF0aWMgcnR4IG5vY2VfZ2V0X2NvbmRpdGlvbiAocnR4X2luc24gKiwgcnR4X2luc24gKios IGJvb2wpOwotIHN0YXRpYyBpbnQgbm9jZV9vcGVyYW5kX29rIChjb25zdF9ydHgpOwotIHN0YXRp YyB2b2lkIG1lcmdlX2lmX2Jsb2NrIChjZV9pZl9ibG9jayAqKTsKLUBAIC05OCwxNCArOTgsNiBA QCBzdGF0aWMgaW50IGRlYWRfb3JfcHJlZGljYWJsZSAoYmFzaWNfYmxvY2ssIGJhc2ljX2Jsb2Nr LCBiYXNpY19ibG9jaywKLSAJCQkgICAgICAgZWRnZSwgaW50KTsKLSBzdGF0aWMgdm9pZCBub2Nl X2VtaXRfbW92ZV9pbnNuIChydHgsIHJ0eCk7Ci0gc3RhdGljIHJ0eF9pbnNuICpibG9ja19oYXNf b25seV90cmFwIChiYXNpY19ibG9jayk7Ci0tc3RhdGljIHZvaWQgbmVlZF9jbW92X29yX3Jld2ly ZSAoYmFzaWNfYmxvY2ssIGhhc2hfc2V0PHJ0eF9pbnNuICo+ICosCi0tCQkJCSBoYXNoX21hcDxy dHhfaW5zbiAqLCBpbnQ+ICopOwotLXN0YXRpYyBib29sIG5vY2VfY29udmVydF9tdWx0aXBsZV9z ZXRzXzEgKHN0cnVjdCBub2NlX2lmX2luZm8gKiwKLS0JCQkJCSAgaGFzaF9zZXQ8cnR4X2luc24g Kj4gKiwKLS0JCQkJCSAgaGFzaF9tYXA8cnR4X2luc24gKiwgaW50PiAqLAotLQkJCQkJICBhdXRv X3ZlYzxydHg+ICosCi0tCQkJCQkgIGF1dG9fdmVjPHJ0eD4gKiwKLS0JCQkJCSAgYXV0b192ZWM8 cnR4X2luc24gKj4gKiwgaW50ICopOwotIAwKLSAvKiBDb3VudCB0aGUgbnVtYmVyIG9mIG5vbi1q dW1wIGFjdGl2ZSBpbnNucyBpbiBCQi4gICovCi0gCi1AQCAtNDMzLDcgKzQyNSw3IEBAIGNvbmRf ZXhlY19wcm9jZXNzX2luc25zIChjZV9pZl9ibG9jayAqY2VfaW5mbyBBVFRSSUJVVEVfVU5VU0VE LAotIC8qIFJldHVybiB0aGUgY29uZGl0aW9uIGZvciBhIGp1bXAuICBEbyBub3QgZG8gYW55IHNw ZWNpYWwgcHJvY2Vzc2luZy4gICovCi0gCi0gc3RhdGljIHJ0eAotLWNvbmRfZXhlY19nZXRfY29u ZGl0aW9uIChydHhfaW5zbiAqanVtcCwgYm9vbCBnZXRfcmV2ZXJzZWQgPSBmYWxzZSkKLStjb25k X2V4ZWNfZ2V0X2NvbmRpdGlvbiAocnR4X2luc24gKmp1bXApCi0gewotICAgcnR4IHRlc3RfaWYs IGNvbmQ7Ci0gCi1AQCAtNDQ1LDEwICs0MzcsOCBAQCBjb25kX2V4ZWNfZ2V0X2NvbmRpdGlvbiAo cnR4X2luc24gKmp1bXAsIGJvb2wgZ2V0X3JldmVyc2VkID0gZmFsc2UpCi0gCi0gICAvKiBJZiB0 aGlzIGJyYW5jaGVzIHRvIEpVTVBfTEFCRUwgd2hlbiB0aGUgY29uZGl0aW9uIGlzIGZhbHNlLAot ICAgICAgcmV2ZXJzZSB0aGUgY29uZGl0aW9uLiAgKi8KLS0gIGlmIChnZXRfcmV2ZXJzZWQKLS0g ICAgICB8fCAoR0VUX0NPREUgKFhFWFAgKHRlc3RfaWYsIDIpKSA9PSBMQUJFTF9SRUYKLS0JICAm JiBsYWJlbF9yZWZfbGFiZWwgKFhFWFAgKHRlc3RfaWYsIDIpKQotLQkgID09IEpVTVBfTEFCRUwg KGp1bXApKSkKLSsgIGlmIChHRVRfQ09ERSAoWEVYUCAodGVzdF9pZiwgMikpID09IExBQkVMX1JF RgotKyAgICAgICYmIGxhYmVsX3JlZl9sYWJlbCAoWEVYUCAodGVzdF9pZiwgMikpID09IEpVTVBf TEFCRUwgKGp1bXApKQotICAgICB7Ci0gICAgICAgZW51bSBydHhfY29kZSByZXYgPSByZXZlcnNl ZF9jb21wYXJpc29uX2NvZGUgKGNvbmQsIGp1bXApOwotICAgICAgIGlmIChyZXYgPT0gVU5LTk9X TikKLUBAIC03ODAsNyArNzcwLDcgQEAgc3RhdGljIGludCBub2NlX3RyeV9hZGRjYyAoc3RydWN0 IG5vY2VfaWZfaW5mbyAqKTsKLSBzdGF0aWMgaW50IG5vY2VfdHJ5X3N0b3JlX2ZsYWdfY29uc3Rh bnRzIChzdHJ1Y3Qgbm9jZV9pZl9pbmZvICopOwotIHN0YXRpYyBpbnQgbm9jZV90cnlfc3RvcmVf ZmxhZ19tYXNrIChzdHJ1Y3Qgbm9jZV9pZl9pbmZvICopOwotIHN0YXRpYyBydHggbm9jZV9lbWl0 X2Ntb3ZlIChzdHJ1Y3Qgbm9jZV9pZl9pbmZvICosIHJ0eCwgZW51bSBydHhfY29kZSwgcnR4LAot LQkJCSAgICBydHgsIHJ0eCwgcnR4LCBydHggPSBOVUxMLCBydHggPSBOVUxMKTsKLSsJCQkgICAg cnR4LCBydHgsIHJ0eCk7Ci0gc3RhdGljIGludCBub2NlX3RyeV9jbW92ZSAoc3RydWN0IG5vY2Vf aWZfaW5mbyAqKTsKLSBzdGF0aWMgaW50IG5vY2VfdHJ5X2Ntb3ZlX2FyaXRoIChzdHJ1Y3Qgbm9j ZV9pZl9pbmZvICopOwotIHN0YXRpYyBydHggbm9jZV9nZXRfYWx0X2NvbmRpdGlvbiAoc3RydWN0 IG5vY2VfaWZfaW5mbyAqLCBydHgsIHJ0eF9pbnNuICoqKTsKLUBAIC0xNzE5LDggKzE3MDksNyBA QCBub2NlX3RyeV9zdG9yZV9mbGFnX21hc2sgKHN0cnVjdCBub2NlX2lmX2luZm8gKmlmX2luZm8p Ci0gCi0gc3RhdGljIHJ0eAotIG5vY2VfZW1pdF9jbW92ZSAoc3RydWN0IG5vY2VfaWZfaW5mbyAq aWZfaW5mbywgcnR4IHgsIGVudW0gcnR4X2NvZGUgY29kZSwKLS0JCSBydHggY21wX2EsIHJ0eCBj bXBfYiwgcnR4IHZmYWxzZSwgcnR4IHZ0cnVlLCBydHggY2NfY21wLAotLQkJIHJ0eCByZXZfY2Nf Y21wKQotKwkJIHJ0eCBjbXBfYSwgcnR4IGNtcF9iLCBydHggdmZhbHNlLCBydHggdnRydWUpCi0g ewotICAgcnR4IHRhcmdldCBBVFRSSUJVVEVfVU5VU0VEOwotICAgaW50IHVuc2lnbmVkcCBBVFRS SUJVVEVfVU5VU0VEOwotQEAgLTE3NTIsMzAgKzE3NDEsMjMgQEAgbm9jZV9lbWl0X2Ntb3ZlIChz dHJ1Y3Qgbm9jZV9pZl9pbmZvICppZl9pbmZvLCBydHggeCwgZW51bSBydHhfY29kZSBjb2RlLAot ICAgICAgIGVuZF9zZXF1ZW5jZSAoKTsKLSAgICAgfQotIAotLSAgdW5zaWduZWRwID0gKGNvZGUg PT0gTFRVIHx8IGNvZGUgPT0gR0VVCi0tCSAgICAgICB8fCBjb2RlID09IExFVSB8fCBjb2RlID09 IEdUVSk7Ci0tCi0tICBpZiAoY2NfY21wICE9IE5VTExfUlRYICYmIHJldl9jY19jbXAgIT0gTlVM TF9SVFgpCi0tICAgIHRhcmdldCA9IGVtaXRfY29uZGl0aW9uYWxfbW92ZSAoeCwgY2NfY21wLCBy ZXZfY2NfY21wLAotLQkJCQkgICAgdnRydWUsIHZmYWxzZSwgR0VUX01PREUgKHgpKTsKLS0gIGVs c2UKLSsgIC8qIERvbid0IGV2ZW4gdHJ5IGlmIHRoZSBjb21wYXJpc29uIG9wZXJhbmRzIGFyZSB3 ZWlyZAotKyAgICAgZXhjZXB0IHRoYXQgdGhlIHRhcmdldCBzdXBwb3J0cyBjYnJhbmNoY2M0LiAg Ki8KLSsgIGlmICghIGdlbmVyYWxfb3BlcmFuZCAoY21wX2EsIEdFVF9NT0RFIChjbXBfYSkpCi0r ICAgICAgfHwgISBnZW5lcmFsX29wZXJhbmQgKGNtcF9iLCBHRVRfTU9ERSAoY21wX2IpKSkKLSAg ICAgewotLSAgICAgIC8qIERvbid0IGV2ZW4gdHJ5IGlmIHRoZSBjb21wYXJpc29uIG9wZXJhbmRz IGFyZSB3ZWlyZAotLQkgZXhjZXB0IHRoYXQgdGhlIHRhcmdldCBzdXBwb3J0cyBjYnJhbmNoY2M0 LiAgKi8KLS0gICAgICBpZiAoISBnZW5lcmFsX29wZXJhbmQgKGNtcF9hLCBHRVRfTU9ERSAoY21w X2EpKQotLQkgIHx8ICEgZ2VuZXJhbF9vcGVyYW5kIChjbXBfYiwgR0VUX01PREUgKGNtcF9iKSkp Ci0tCXsKLS0JICBpZiAoIWhhdmVfY2JyYW5jaGNjNAotLQkgICAgICB8fCBHRVRfTU9ERV9DTEFT UyAoR0VUX01PREUgKGNtcF9hKSkgIT0gTU9ERV9DQwotLQkgICAgICB8fCBjbXBfYiAhPSBjb25z dDBfcnR4KQotLQkgICAgcmV0dXJuIE5VTExfUlRYOwotLQl9Ci0tCi0tICAgICAgdGFyZ2V0ID0g ZW1pdF9jb25kaXRpb25hbF9tb3ZlICh4LCB7IGNvZGUsIGNtcF9hLCBjbXBfYiwgVk9JRG1vZGUg fSwKLS0JCQkJICAgICAgdnRydWUsIHZmYWxzZSwgR0VUX01PREUgKHgpLAotLQkJCQkgICAgICB1 bnNpZ25lZHApOwotKyAgICAgIGlmICghaGF2ZV9jYnJhbmNoY2M0Ci0rCSAgfHwgR0VUX01PREVf Q0xBU1MgKEdFVF9NT0RFIChjbXBfYSkpICE9IE1PREVfQ0MKLSsJICB8fCBjbXBfYiAhPSBjb25z dDBfcnR4KQotKwlyZXR1cm4gTlVMTF9SVFg7Ci0gICAgIH0KLSAKLSsgIHVuc2lnbmVkcCA9IChj b2RlID09IExUVSB8fCBjb2RlID09IEdFVQotKwkgICAgICAgfHwgY29kZSA9PSBMRVUgfHwgY29k ZSA9PSBHVFUpOwotKwotKyAgdGFyZ2V0ID0gZW1pdF9jb25kaXRpb25hbF9tb3ZlICh4LCBjb2Rl LCBjbXBfYSwgY21wX2IsIFZPSURtb2RlLAotKwkJCQkgIHZ0cnVlLCB2ZmFsc2UsIEdFVF9NT0RF ICh4KSwKLSsJCQkJICB1bnNpZ25lZHApOwotICAgaWYgKHRhcmdldCkKLSAgICAgcmV0dXJuIHRh cmdldDsKLSAKLUBAIC0xODExLDkgKzE3OTMsOCBAQCBub2NlX2VtaXRfY21vdmUgKHN0cnVjdCBu b2NlX2lmX2luZm8gKmlmX2luZm8sIHJ0eCB4LCBlbnVtIHJ0eF9jb2RlIGNvZGUsCi0gCi0gICAg ICAgcHJvbW90ZWRfdGFyZ2V0ID0gZ2VuX3JlZ19ydHggKEdFVF9NT0RFIChyZWdfdnRydWUpKTsK LSAKLS0gICAgICB0YXJnZXQgPSBlbWl0X2NvbmRpdGlvbmFsX21vdmUgKHByb21vdGVkX3Rhcmdl dCwKLS0JCQkJICAgICAgeyBjb2RlLCBjbXBfYSwgY21wX2IsIFZPSURtb2RlIH0sCi0tCQkJCSAg ICAgIHJlZ192dHJ1ZSwgcmVnX3ZmYWxzZSwKLSsgICAgICB0YXJnZXQgPSBlbWl0X2NvbmRpdGlv bmFsX21vdmUgKHByb21vdGVkX3RhcmdldCwgY29kZSwgY21wX2EsIGNtcF9iLAotKwkJCQkgICAg ICBWT0lEbW9kZSwgcmVnX3Z0cnVlLCByZWdfdmZhbHNlLAotIAkJCQkgICAgICBHRVRfTU9ERSAo cmVnX3Z0cnVlKSwgdW5zaWduZWRwKTsKLSAgICAgICAvKiBOb3BlLCBjb3VsZG4ndCBkbyBpdCBp biB0aGF0IG1vZGUgZWl0aGVyLiAgKi8KLSAgICAgICBpZiAoIXRhcmdldCkKLUBAIC0zMTYwLDUw ICszMTQxLDYgQEAgYmJfdmFsaWRfZm9yX25vY2VfcHJvY2Vzc19wIChiYXNpY19ibG9jayB0ZXN0 X2JiLCBydHggY29uZCwKLSAgIHJldHVybiBmYWxzZTsKLSB9Ci0gCi0tLyogSGVscGVyIGZ1bmN0 aW9uIHRvIGVtaXQgYSBjbW92IHNlcXVlbmNlIGVuY2Fwc3VsYXRlZCBpbgotLSAgIHN0YXJ0X3Nl cXVlbmNlICgpIGFuZCBlbmRfc2VxdWVuY2UgKCkuICBJZiBORUVEX0NNT1YgaXMgdHJ1ZQotLSAg IHdlIGNhbGwgbm9jZV9lbWl0X2Ntb3ZlIHRvIGNyZWF0ZSBhIGNtb3ZlIHNlcXVlbmNlLiAgT3Ro ZXJ3aXNlIGVtaXQKLS0gICBhIHNpbXBsZSBtb3ZlLiAgSWYgc3VjY2Vzc2Z1bCwgc3RvcmUgdGhl IGZpcnN0IGluc3RydWN0aW9uIG9mIHRoZQotLSAgIHNlcXVlbmNlIGluIFRFTVBfREVTVCBhbmQg dGhlIHNlcXVlbmNlIGNvc3RzIGluIFNFUV9DT1NULiAgKi8KLS0KLS1zdGF0aWMgcnR4X2luc24q Ci0tdHJ5X2VtaXRfY21vdmVfc2VxIChzdHJ1Y3Qgbm9jZV9pZl9pbmZvICppZl9pbmZvLCBydHgg dGVtcCwKLS0JCSAgICBydHggY29uZCwgcnR4IG5ld192YWwsIHJ0eCBvbGRfdmFsLCBib29sIG5l ZWRfY21vdiwKLS0JCSAgICB1bnNpZ25lZCAqY29zdCwgcnR4ICp0ZW1wX2Rlc3QsCi0tCQkgICAg cnR4IGNjX2NtcCA9IE5VTEwsIHJ0eCByZXZfY2NfY21wID0gTlVMTCkKLS17Ci0tICBydHhfaW5z biAqc2VxID0gTlVMTDsKLS0gICpjb3N0ID0gMDsKLS0KLS0gIHJ0eCB4ID0gWEVYUCAoY29uZCwg MCk7Ci0tICBydHggeSA9IFhFWFAgKGNvbmQsIDEpOwotLSAgcnR4X2NvZGUgY29uZF9jb2RlID0g R0VUX0NPREUgKGNvbmQpOwotLQotLSAgc3RhcnRfc2VxdWVuY2UgKCk7Ci0tCi0tICBpZiAobmVl ZF9jbW92KQotLSAgICAqdGVtcF9kZXN0ID0gbm9jZV9lbWl0X2Ntb3ZlIChpZl9pbmZvLCB0ZW1w LCBjb25kX2NvZGUsCi0tCQkJCSAgeCwgeSwgbmV3X3ZhbCwgb2xkX3ZhbCwgY2NfY21wLCByZXZf Y2NfY21wKTsKLS0gIGVsc2UKLS0gICAgewotLSAgICAgICp0ZW1wX2Rlc3QgPSB0ZW1wOwotLSAg ICAgIGlmIChpZl9pbmZvLT50aGVuX2Vsc2VfcmV2ZXJzZWQpCi0tCW5vY2VfZW1pdF9tb3ZlX2lu c24gKHRlbXAsIG9sZF92YWwpOwotLSAgICAgIGVsc2UKLS0Jbm9jZV9lbWl0X21vdmVfaW5zbiAo dGVtcCwgbmV3X3ZhbCk7Ci0tICAgIH0KLS0KLS0gIGlmICgqdGVtcF9kZXN0ICE9IE5VTExfUlRY KQotLSAgICB7Ci0tICAgICAgc2VxID0gZ2V0X2luc25zICgpOwotLSAgICAgICpjb3N0ID0gc2Vx X2Nvc3QgKHNlcSwgaWZfaW5mby0+c3BlZWRfcCk7Ci0tICAgIH0KLS0KLS0gIGVuZF9zZXF1ZW5j ZSAoKTsKLS0KLS0gIHJldHVybiBzZXE7Ci0tfQotLQotIC8qIFdlIGhhdmUgc29tZXRoaW5nIGxp a2U6Ci0gCi0gICAgICBpZiAoeCA+IHkpCi1AQCAtMzI2MSw2ICszMTk4LDcgQEAgbm9jZV9jb252 ZXJ0X211bHRpcGxlX3NldHMgKHN0cnVjdCBub2NlX2lmX2luZm8gKmlmX2luZm8pCi0gICBydHgg Y29uZCA9IG5vY2VfZ2V0X2NvbmRpdGlvbiAoanVtcCwgJmNvbmRfZWFybGllc3QsIGZhbHNlKTsK LSAgIHJ0eCB4ID0gWEVYUCAoY29uZCwgMCk7Ci0gICBydHggeSA9IFhFWFAgKGNvbmQsIDEpOwot KyAgcnR4X2NvZGUgY29uZF9jb2RlID0gR0VUX0NPREUgKGNvbmQpOwotIAotICAgLyogVGhlIHRy dWUgdGFyZ2V0cyBmb3IgYSBjb25kaXRpb25hbCBtb3ZlLiAgKi8KLSAgIGF1dG9fdmVjPHJ0eD4g dGFyZ2V0czsKLUBAIC0zMjY5LDEzOSArMzIwNyw4IEBAIG5vY2VfY29udmVydF9tdWx0aXBsZV9z ZXRzIChzdHJ1Y3Qgbm9jZV9pZl9pbmZvICppZl9pbmZvKQotICAgYXV0b192ZWM8cnR4PiB0ZW1w b3JhcmllczsKLSAgIC8qIFRoZSBpbnNucyB3ZSd2ZSBlbWl0dGVkLiAgKi8KLSAgIGF1dG9fdmVj PHJ0eF9pbnNuICo+IHVubW9kaWZpZWRfaW5zbnM7Ci0tCi0tICBoYXNoX3NldDxydHhfaW5zbiAq PiBuZWVkX25vX2Ntb3Y7Ci0tICBoYXNoX21hcDxydHhfaW5zbiAqLCBpbnQ+IHJld2lyZWRfc3Jj OwotLQotLSAgbmVlZF9jbW92X29yX3Jld2lyZSAodGhlbl9iYiwgJm5lZWRfbm9fY21vdiwgJnJl d2lyZWRfc3JjKTsKLS0KLS0gIGludCBsYXN0X25lZWRzX2NvbXBhcmlzb24gPSAtMTsKLS0KLS0g IGJvb2wgb2sgPSBub2NlX2NvbnZlcnRfbXVsdGlwbGVfc2V0c18xCi0tICAgIChpZl9pbmZvLCAm bmVlZF9ub19jbW92LCAmcmV3aXJlZF9zcmMsICZ0YXJnZXRzLCAmdGVtcG9yYXJpZXMsCi0tICAg ICAmdW5tb2RpZmllZF9pbnNucywgJmxhc3RfbmVlZHNfY29tcGFyaXNvbik7Ci0tICBpZiAoIW9r KQotLSAgICAgIHJldHVybiBmYWxzZTsKLS0KLS0gIC8qIElmIHRoZXJlIGFyZSBpbnNucyB0aGF0 IG92ZXJ3cml0ZSBwYXJ0IG9mIHRoZSBpbml0aWFsCi0tICAgICBjb21wYXJpc29uLCB3ZSBjYW4g c3RpbGwgb21pdCBjcmVhdGluZyB0ZW1wb3JhcmllcyBmb3IKLS0gICAgIHRoZSBsYXN0IG9mIHRo ZW0uCi0tICAgICBBcyB0aGUgc2Vjb25kIHRyeSB3aWxsIGFsd2F5cyBjcmVhdGUgYSBsZXNzIGV4 cGVuc2l2ZSwKLS0gICAgIHZhbGlkIHNlcXVlbmNlLCB3ZSBkbyBub3QgbmVlZCB0byBjb21wYXJl IGFuZCBjYW4gZGlzY2FyZAotLSAgICAgdGhlIGZpcnN0IG9uZS4gICovCi0tICBpZiAobGFzdF9u ZWVkc19jb21wYXJpc29uICE9IC0xKQotLSAgICB7Ci0tICAgICAgZW5kX3NlcXVlbmNlICgpOwot LSAgICAgIHN0YXJ0X3NlcXVlbmNlICgpOwotLSAgICAgIG9rID0gbm9jZV9jb252ZXJ0X211bHRp cGxlX3NldHNfMQotLQkoaWZfaW5mbywgJm5lZWRfbm9fY21vdiwgJnJld2lyZWRfc3JjLCAmdGFy Z2V0cywgJnRlbXBvcmFyaWVzLAotLQkgJnVubW9kaWZpZWRfaW5zbnMsICZsYXN0X25lZWRzX2Nv bXBhcmlzb24pOwotLSAgICAgIC8qIEFjdHVhbGx5IHdlIHNob3VsZCBub3QgZmFpbCBhbnltb3Jl IGlmIHdlIHJlYWNoZWQgaGVyZSwKLS0JIGJ1dCBiZXR0ZXIgc3RpbGwgY2hlY2suICAqLwotLSAg ICAgIGlmICghb2spCi0tCSAgcmV0dXJuIGZhbHNlOwotLSAgICB9Ci0tCi0tICAvKiBXZSBtdXN0 IGhhdmUgc2VlbiBzb21lIHNvcnQgb2YgaW5zbiB0byBpbnNlcnQsIG90aGVyd2lzZSB3ZSB3ZXJl Ci0tICAgICBnaXZlbiBhbiBlbXB0eSBCQiB0byBjb252ZXJ0LCBhbmQgd2UgY2FuJ3QgaGFuZGxl IHRoYXQuICAqLwotLSAgZ2NjX2Fzc2VydCAoIXVubW9kaWZpZWRfaW5zbnMuaXNfZW1wdHkgKCkp OwotLQotLSAgLyogTm93IGZpeHVwIHRoZSBhc3NpZ25tZW50cy4gICovCi0tICBmb3IgKHVuc2ln bmVkIGkgPSAwOyBpIDwgdGFyZ2V0cy5sZW5ndGggKCk7IGkrKykKLS0gICAgaWYgKHRhcmdldHNb aV0gIT0gdGVtcG9yYXJpZXNbaV0pCi0tICAgICAgbm9jZV9lbWl0X21vdmVfaW5zbiAodGFyZ2V0 c1tpXSwgdGVtcG9yYXJpZXNbaV0pOwotLQotLSAgLyogQWN0dWFsbHkgZW1pdCB0aGUgc2VxdWVu Y2UgaWYgaXQgaXNuJ3QgdG9vIGV4cGVuc2l2ZS4gICovCi0tICBydHhfaW5zbiAqc2VxID0gZ2V0 X2luc25zICgpOwotLQotLSAgaWYgKCF0YXJnZXRtLm5vY2VfY29udmVyc2lvbl9wcm9maXRhYmxl X3AgKHNlcSwgaWZfaW5mbykpCi0tICAgIHsKLS0gICAgICBlbmRfc2VxdWVuY2UgKCk7Ci0tICAg ICAgcmV0dXJuIEZBTFNFOwotLSAgICB9Ci0tCi0tICBmb3IgKGluc24gPSBzZXE7IGluc247IGlu c24gPSBORVhUX0lOU04gKGluc24pKQotLSAgICBzZXRfdXNlZF9mbGFncyAoaW5zbik7Ci0tCi0t ICAvKiBNYXJrIGFsbCBvdXIgdGVtcG9yYXJpZXMgYW5kIHRhcmdldHMgYXMgdXNlZC4gICovCi0t ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGFyZ2V0cy5sZW5ndGggKCk7IGkrKykKLS0gICAg ewotLSAgICAgIHNldF91c2VkX2ZsYWdzICh0ZW1wb3Jhcmllc1tpXSk7Ci0tICAgICAgc2V0X3Vz ZWRfZmxhZ3MgKHRhcmdldHNbaV0pOwotLSAgICB9Ci0tCi0tICBzZXRfdXNlZF9mbGFncyAoY29u ZCk7Ci0tICBzZXRfdXNlZF9mbGFncyAoeCk7Ci0tICBzZXRfdXNlZF9mbGFncyAoeSk7Ci0tCi0t ICB1bnNoYXJlX2FsbF9ydGxfaW5fY2hhaW4gKHNlcSk7Ci0tICBlbmRfc2VxdWVuY2UgKCk7Ci0t Ci0tICBpZiAoIXNlcSkKLS0gICAgcmV0dXJuIEZBTFNFOwotLQotLSAgZm9yIChpbnNuID0gc2Vx OyBpbnNuOyBpbnNuID0gTkVYVF9JTlNOIChpbnNuKSkKLS0gICAgaWYgKEpVTVBfUCAoaW5zbikK LS0JfHwgcmVjb2dfbWVtb2l6ZWQgKGluc24pID09IC0xKQotLSAgICAgIHJldHVybiBGQUxTRTsK LS0KLS0gIGVtaXRfaW5zbl9iZWZvcmVfc2V0bG9jIChzZXEsIGlmX2luZm8tPmp1bXAsCi0tCQkJ ICAgSU5TTl9MT0NBVElPTiAodW5tb2RpZmllZF9pbnNucy5sYXN0ICgpKSk7Ci0tCi0tICAvKiBD bGVhbiB1cCBUSEVOX0JCIGFuZCB0aGUgZWRnZXMgaW4gYW5kIG91dCBvZiBpdC4gICovCi0tICBy ZW1vdmVfZWRnZSAoZmluZF9lZGdlICh0ZXN0X2JiLCBqb2luX2JiKSk7Ci0tICByZW1vdmVfZWRn ZSAoZmluZF9lZGdlICh0aGVuX2JiLCBqb2luX2JiKSk7Ci0tICByZWRpcmVjdF9lZGdlX2FuZF9i cmFuY2hfZm9yY2UgKHNpbmdsZV9zdWNjX2VkZ2UgKHRlc3RfYmIpLCBqb2luX2JiKTsKLS0gIGRl bGV0ZV9iYXNpY19ibG9jayAodGhlbl9iYik7Ci0tICBudW1fdHJ1ZV9jaGFuZ2VzKys7Ci0tCi0t ICAvKiBNYXliZSBtZXJnZSBibG9ja3Mgbm93IHRoZSBqdW1wIGlzIHNpbXBsZSBlbm91Z2guICAq LwotLSAgaWYgKGNhbl9tZXJnZV9ibG9ja3NfcCAodGVzdF9iYiwgam9pbl9iYikpCi0tICAgIHsK LS0gICAgICBtZXJnZV9ibG9ja3MgKHRlc3RfYmIsIGpvaW5fYmIpOwotLSAgICAgIG51bV90cnVl X2NoYW5nZXMrKzsKLS0gICAgfQotLQotLSAgbnVtX3VwZGF0ZWRfaWZfYmxvY2tzKys7Ci0tICBp Zl9pbmZvLT50cmFuc2Zvcm1fbmFtZSA9ICJub2NlX2NvbnZlcnRfbXVsdGlwbGVfc2V0cyI7Ci0t ICByZXR1cm4gVFJVRTsKLS19Ci0tCi0tLyogVGhpcyBnb2VzIHRocm91Z2ggYWxsIHJlbGV2YW50 IGluc25zIG9mIElGX0lORk8tPnRoZW5fYmIgYW5kIHRyaWVzIHRvCi0tICAgY3JlYXRlIGNvbmRp dGlvbmFsIG1vdmVzLiAgSW4gY2FzZSBhIHNpbXBsZSBtb3ZlIHN1ZmZpY2lzIHRoZSBpbnNuCi0t ICAgc2hvdWxkIGJlIGxpc3RlZCBpbiBORUVEX05PX0NNT1YuICBUaGUgcmV3aXJlZC1zcmMgY2Fz ZXMgc2hvdWxkIGJlCi0tICAgc3BlY2lmaWVkIHZpYSBSRVdJUkVEX1NSQy4gIFRBUkdFVFMsIFRF TVBPUkFSSUVTIGFuZCBVTk1PRElGSUVEX0lOU05TCi0tICAgYXJlIHNwZWNpZmllZCBhbmQgdXNl ZCBpbiBub2NlX2NvbnZlcnRfbXVsdGlwbGVfc2V0cyBhbmQgc2hvdWxkIGJlIHBhc3NlZAotLSAg IHRvIHRoaXMgZnVuY3Rpb24uLiAgKi8KLS0KLS1zdGF0aWMgYm9vbAotLW5vY2VfY29udmVydF9t dWx0aXBsZV9zZXRzXzEgKHN0cnVjdCBub2NlX2lmX2luZm8gKmlmX2luZm8sCi0tCQkJICAgICAg aGFzaF9zZXQ8cnR4X2luc24gKj4gKm5lZWRfbm9fY21vdiwKLS0JCQkgICAgICBoYXNoX21hcDxy dHhfaW5zbiAqLCBpbnQ+ICpyZXdpcmVkX3NyYywKLS0JCQkgICAgICBhdXRvX3ZlYzxydHg+ICp0 YXJnZXRzLAotLQkJCSAgICAgIGF1dG9fdmVjPHJ0eD4gKnRlbXBvcmFyaWVzLAotLQkJCSAgICAg IGF1dG9fdmVjPHJ0eF9pbnNuICo+ICp1bm1vZGlmaWVkX2luc25zLAotLQkJCSAgICAgIGludCAq bGFzdF9uZWVkc19jb21wYXJpc29uKQotLXsKLS0gIGJhc2ljX2Jsb2NrIHRoZW5fYmIgPSBpZl9p bmZvLT50aGVuX2JiOwotLSAgcnR4X2luc24gKmp1bXAgPSBpZl9pbmZvLT5qdW1wOwotLSAgcnR4 X2luc24gKmNvbmRfZWFybGllc3Q7Ci0tCi0tICAvKiBEZWNvbXBvc2UgdGhlIGNvbmRpdGlvbiBh dHRhY2hlZCB0byB0aGUganVtcC4gICovCi0tICBydHggY29uZCA9IG5vY2VfZ2V0X2NvbmRpdGlv biAoanVtcCwgJmNvbmRfZWFybGllc3QsIGZhbHNlKTsKLS0KLS0gIHJ0eCBjY19jbXAgPSBjb25k X2V4ZWNfZ2V0X2NvbmRpdGlvbiAoanVtcCk7Ci0tICBydHggcmV2X2NjX2NtcCA9IGNvbmRfZXhl Y19nZXRfY29uZGl0aW9uIChqdW1wLCAvKiBnZXRfcmV2ZXJzZWQgKi8gdHJ1ZSk7Ci0tCi0tICBy dHhfaW5zbiAqaW5zbjsKLSAgIGludCBjb3VudCA9IDA7Ci0gCi0tICB0YXJnZXRzLT50cnVuY2F0 ZSAoMCk7Ci0tICB0ZW1wb3Jhcmllcy0+dHJ1bmNhdGUgKDApOwotLSAgdW5tb2RpZmllZF9pbnNu cy0+dHJ1bmNhdGUgKDApOwotLQotLSAgYm9vbCBzZWNvbmRfdHJ5ID0gKmxhc3RfbmVlZHNfY29t cGFyaXNvbiAhPSAtMTsKLS0KLSAgIEZPUl9CQl9JTlNOUyAodGhlbl9iYiwgaW5zbikKLSAgICAg ewotICAgICAgIC8qIFNraXAgb3ZlciBub24taW5zbnMuICAqLwotQEAgLTM0MTIsNTMgKzMyMTks MjYgQEAgbm9jZV9jb252ZXJ0X211bHRpcGxlX3NldHNfMSAoc3RydWN0IG5vY2VfaWZfaW5mbyAq aWZfaW5mbywKLSAgICAgICBnY2NfY2hlY2tpbmdfYXNzZXJ0IChzZXQpOwotIAotICAgICAgIHJ0 eCB0YXJnZXQgPSBTRVRfREVTVCAoc2V0KTsKLS0gICAgICBydHggdGVtcDsKLS0KLSsgICAgICBy dHggdGVtcCA9IGdlbl9yZWdfcnR4IChHRVRfTU9ERSAodGFyZ2V0KSk7Ci0gICAgICAgcnR4IG5l d192YWwgPSBTRVRfU1JDIChzZXQpOwotLSAgICAgIGlmIChpbnQgKmlpID0gcmV3aXJlZF9zcmMt PmdldCAoaW5zbikpCi0tCW5ld192YWwgPSBzaW1wbGlmeV9yZXBsYWNlX3J0eCAobmV3X3ZhbCwg KCp0YXJnZXRzKVsqaWldLAotLQkJCQkJKCp0ZW1wb3JhcmllcylbKmlpXSk7Ci0gICAgICAgcnR4 IG9sZF92YWwgPSB0YXJnZXQ7Ci0gCi0tICAgICAgLyogQXMgd2UgYXJlIHRyYW5zZm9ybWluZwot LQkgaWYgKHggPiB5KQotLQkgICB7Ci0tCSAgICAgYSA9IGI7Ci0tCSAgICAgYyA9IGQ7Ci0tCSAg IH0KLS0JIGludG8KLS0JICAgYSA9ICh4ID4geSkgLi4uCi0tCSAgIGMgPSAoeCA+IHkpIC4uLgot LQotLQkgd2UgcG90ZW50aWFsbHkgY2hlY2sgeCA+IHkgYmVmb3JlIGV2ZXJ5IHNldC4KLS0JIEV2 ZW4gdGhvdWdoIHRoZSBjaGVjayBtaWdodCBiZSByZW1vdmVkIGJ5IHN1YnNlcXVlbnQgcGFzc2Vz LCB0aGlzIG1lYW5zCi0tCSB0aGF0IHdlIGNhbm5vdCB0cmFuc2Zvcm0KLS0JICAgaWYgKHggPiB5 KQotLQkgICAgIHsKLS0JICAgICAgIHggPSB5OwotLQkgICAgICAgLi4uCi0tCSAgICAgfQotLQkg aW50bwotLQkgICB4ID0gKHggPiB5KSAuLi4KLS0JICAgLi4uCi0tCSBzaW5jZSB0aGlzIHdvdWxk IGludmFsaWRhdGUgeCBhbmQgdGhlIGZvbGxvd2luZyB0by1iZS1yZW1vdmVkIGNoZWNrcy4KLS0J IFRoZXJlZm9yZSB3ZSBpbnRyb2R1Y2UgYSB0ZW1wb3JhcnkgZXZlcnkgdGltZSB3ZSBhcmUgYWJv dXQgdG8KLS0JIG92ZXJ3cml0ZSBhIHZhcmlhYmxlIHVzZWQgaW4gdGhlIGNoZWNrLiAgQ29zdGlu ZyBvZiBhIHNlcXVlbmNlIHdpdGgKLS0JIHRoZXNlIGlzIGdvaW5nIHRvIGJlIGluYWNjdXJhdGUg c28gb25seSB1c2UgdGVtcG9yYXJpZXMgd2hlbgotLQkgbmVlZGVkLgotLQotLQkgSWYgcGVyZm9y bWluZyBhIHNlY29uZCB0cnksIHdlIGtub3cgaG93IG1hbnkgaW5zbnMgcmVxdWlyZSBhCi0tCSB0 ZW1wb3JhcnkuICBGb3IgdGhlIGxhc3Qgb2YgdGhlc2UsIHdlIGNhbiBvbWl0IGNyZWF0aW5nIG9u ZS4gICovCi0tICAgICAgaWYgKHJlZ19vdmVybGFwX21lbnRpb25lZF9wICh0YXJnZXQsIGNvbmQp Ci0tCSAgJiYgKCFzZWNvbmRfdHJ5IHx8IGNvdW50IDwgKmxhc3RfbmVlZHNfY29tcGFyaXNvbikp Ci0tCXRlbXAgPSBnZW5fcmVnX3J0eCAoR0VUX01PREUgKHRhcmdldCkpOwotLSAgICAgIGVsc2UK LS0JdGVtcCA9IHRhcmdldDsKLS0KLS0gICAgICAvKiBXZSBoYXZlIGlkZW50aWZpZWQgc3dhcC1z dHlsZSBpZGlvbXMgYmVmb3JlLiAgQSBub3JtYWwKLS0JIHNldCB3aWxsIG5lZWQgdG8gYmUgYSBj bW92IHdoaWxlIHRoZSBmaXJzdCBpbnN0cnVjdGlvbiBvZiBhIHN3YXAtc3R5bGUKLS0JIGlkaW9t IGNhbiBiZSBhIHJlZ3VsYXIgbW92ZS4gIFRoaXMgaGVscHMgd2l0aCBjb3N0aW5nLiAgKi8KLS0g ICAgICBib29sIG5lZWRfY21vdiA9ICFuZWVkX25vX2Ntb3YtPmNvbnRhaW5zIChpbnNuKTsKLSsg ICAgICAvKiBJZiB3ZSB3ZXJlIHN1cHBvc2VkIHRvIHJlYWQgZnJvbSBhbiBlYXJsaWVyIHdyaXRl IGluIHRoaXMgYmxvY2ssCi0rCSB3ZSd2ZSBjaGFuZ2VkIHRoZSByZWdpc3RlciBhbGxvY2F0aW9u LiAgUmV3aXJlIHRoZSByZWFkLiAgV2hpbGUKLSsJIHdlIGFyZSBsb29raW5nLCBhbHNvIHRyeSB0 byBjYXRjaCBhIHN3YXAgaWRpb20uICAqLwotKyAgICAgIGZvciAoaW50IGkgPSBjb3VudCAtIDE7 IGkgPj0gMDsgLS1pKQotKwlpZiAocmVnX292ZXJsYXBfbWVudGlvbmVkX3AgKG5ld192YWwsIHRh cmdldHNbaV0pKQotKwkgIHsKLSsJICAgIC8qIENhdGNoIGEgInN3YXAiIHN0eWxlIGlkaW9tLiAg Ki8KLSsJICAgIGlmIChmaW5kX3JlZ19ub3RlIChpbnNuLCBSRUdfREVBRCwgbmV3X3ZhbCkgIT0g TlVMTF9SVFgpCi0rCSAgICAgIC8qIFRoZSB3cml0ZSB0byB0YXJnZXRzW2ldIGlzIG9ubHkgbGl2 ZSB1bnRpbCB0aGUgcmVhZAotKwkJIGhlcmUuICBBcyB0aGUgY29uZGl0aW9uIGNvZGVzIG1hdGNo LCB3ZSBjYW4gcHJvcGFnYXRlCi0rCQkgdGhlIHNldCB0byBoZXJlLiAgKi8KLSsJICAgICAgbmV3 X3ZhbCA9IFNFVF9TUkMgKHNpbmdsZV9zZXQgKHVubW9kaWZpZWRfaW5zbnNbaV0pKTsKLSsJICAg IGVsc2UKLSsJICAgICAgbmV3X3ZhbCA9IHRlbXBvcmFyaWVzW2ldOwotKwkgICAgYnJlYWs7Ci0r CSAgfQotIAotICAgICAgIC8qIElmIHdlIGhhZCBhIG5vbi1jYW5vbmljYWwgY29uZGl0aW9uYWwg anVtcCAoaS5lLiBvbmUgd2hlcmUKLSAJIHRoZSBmYWxsdGhyb3VnaCBpcyB0byB0aGUgImVsc2Ui IGNhc2UpIHdlIG5lZWQgdG8gcmV2ZXJzZQotQEAgLTM0NzgsOSArMzI1OCw3IEBAIG5vY2VfY29u dmVydF9tdWx0aXBsZV9zZXRzXzEgKHN0cnVjdCBub2NlX2lmX2luZm8gKmlmX2luZm8sCi0gCSB3 ZSdsbCBlbmQgdXAgdHJ5aW5nIHRvIGVtaXQgcjQ6SEkgPSBjb25kID8gKHIxOlNJKSA6IChyMzpI SSkuCi0gCSBXcmFwIHRoZSB0d28gY21vdmUgb3BlcmFuZHMgaW50byBzdWJyZWdzIGlmIGFwcHJv cHJpYXRlIHRvIHByZXZlbnQKLSAJIHRoYXQuICAqLwotLQotLSAgICAgIGlmICghQ09OU1RBTlRf UCAobmV3X3ZhbCkKLS0JICAmJiBHRVRfTU9ERSAobmV3X3ZhbCkgIT0gR0VUX01PREUgKHRlbXAp KQotKyAgICAgIGlmIChHRVRfTU9ERSAobmV3X3ZhbCkgIT0gR0VUX01PREUgKHRlbXApKQotIAl7 Ci0gCSAgbWFjaGluZV9tb2RlIHNyY19tb2RlID0gR0VUX01PREUgKG5ld192YWwpOwotIAkgIG1h Y2hpbmVfbW9kZSBkc3RfbW9kZSA9IEdFVF9NT0RFICh0ZW1wKTsKLUBAIC0zNDkxLDggKzMyNjks NyBAQCBub2NlX2NvbnZlcnRfbXVsdGlwbGVfc2V0c18xIChzdHJ1Y3Qgbm9jZV9pZl9pbmZvICpp Zl9pbmZvLAotIAkgICAgfQotIAkgIG5ld192YWwgPSBsb3dwYXJ0X3N1YnJlZyAoZHN0X21vZGUs IG5ld192YWwsIHNyY19tb2RlKTsKLSAJfQotLSAgICAgIGlmICghQ09OU1RBTlRfUCAob2xkX3Zh bCkKLS0JICAmJiBHRVRfTU9ERSAob2xkX3ZhbCkgIT0gR0VUX01PREUgKHRlbXApKQotKyAgICAg IGlmIChHRVRfTU9ERSAob2xkX3ZhbCkgIT0gR0VUX01PREUgKHRlbXApKQotIAl7Ci0gCSAgbWFj aGluZV9tb2RlIHNyY19tb2RlID0gR0VUX01PREUgKG9sZF92YWwpOwotIAkgIG1hY2hpbmVfbW9k ZSBkc3RfbW9kZSA9IEdFVF9NT0RFICh0ZW1wKTsKLUBAIC0zNTA0LDgwICszMjgxLDEwMSBAQCBu b2NlX2NvbnZlcnRfbXVsdGlwbGVfc2V0c18xIChzdHJ1Y3Qgbm9jZV9pZl9pbmZvICppZl9pbmZv LAotIAkgIG9sZF92YWwgPSBsb3dwYXJ0X3N1YnJlZyAoZHN0X21vZGUsIG9sZF92YWwsIHNyY19t b2RlKTsKLSAJfQotIAotLSAgICAgIC8qIFRyeSBlbWl0dGluZyBhIGNvbmRpdGlvbmFsIG1vdmUg cGFzc2luZyB0aGUgYmFja2VuZCB0aGUKLS0JIGNhbm9uaWNhbGl6ZWQgY29tcGFyaXNvbi4gIFRo ZSBiYWNrZW5kIGlzIHRoZW4gYWJsZSB0bwotLQkgcmVjb2duaXplIGV4cHJlc3Npb25zIGxpa2UK LS0KLS0JICAgaWYgKHggPiB5KQotLQkgICAgIHkgPSB4OwotLQotLQkgYXMgbWluL21heCBhbmQg ZW1pdCBhbiBpbnNuLCBhY2NvcmRpbmdseS4gICovCi0tICAgICAgdW5zaWduZWQgY29zdDEgPSAw LCBjb3N0MiA9IDA7Ci0tICAgICAgcnR4X2luc24gKnNlcSwgKnNlcTEsICpzZXEyOwotLSAgICAg IHJ0eCB0ZW1wX2Rlc3QgPSBOVUxMX1JUWCwgdGVtcF9kZXN0MSA9IE5VTExfUlRYLCB0ZW1wX2Rl c3QyID0gTlVMTF9SVFg7Ci0rICAgICAgLyogQWN0dWFsbHkgZW1pdCB0aGUgY29uZGl0aW9uYWwg bW92ZS4gICovCi0rICAgICAgcnR4IHRlbXBfZGVzdCA9IG5vY2VfZW1pdF9jbW92ZSAoaWZfaW5m bywgdGVtcCwgY29uZF9jb2RlLAotKwkJCQkgICAgICAgeCwgeSwgbmV3X3ZhbCwgb2xkX3ZhbCk7 Ci0gCi0tICAgICAgc2VxMSA9IHRyeV9lbWl0X2Ntb3ZlX3NlcSAoaWZfaW5mbywgdGVtcCwgY29u ZCwKLS0JCQkJIG5ld192YWwsIG9sZF92YWwsIG5lZWRfY21vdiwKLS0JCQkJICZjb3N0MSwgJnRl bXBfZGVzdDEpOwotLQotLSAgICAgIC8qIEhlcmUsIHdlIHRyeSB0byBwYXNzIHRoZSBiYWNrZW5k IGEgbm9uLWNhbm9uaWNhbGl6ZWQgY2MgY29tcGFyaXNvbgotLQkgYXMgd2VsbC4gIFRoaXMgYWxs b3dzIHRoZSBiYWNrZW5kIHRvIGVtaXQgYSBjbW92IGRpcmVjdGx5IHdpdGhvdXQKLS0JIGNyZWF0 aW5nIGFuIGFkZGl0aW9uYWwgY29tcGFyZSBmb3IgZWFjaC4gIElmIHN1Y2Nlc3NmdWwsIGNvc3Rp bmcKLS0JIGlzIGVhc2llciBhbmQgdGhpcyBzZXF1ZW5jZSBpcyB1c3VhbGx5IHByZWZlcnJlZC4g ICovCi0tICAgICAgc2VxMiA9IHRyeV9lbWl0X2Ntb3ZlX3NlcSAoaWZfaW5mbywgdGFyZ2V0LCBj b25kLAotLQkJCQkgbmV3X3ZhbCwgb2xkX3ZhbCwgbmVlZF9jbW92LAotLQkJCQkgJmNvc3QyLCAm dGVtcF9kZXN0MiwgY2NfY21wLCByZXZfY2NfY21wKTsKLS0KLS0gICAgICAvKiBDaGVjayB3aGlj aCB2ZXJzaW9uIGlzIGxlc3MgZXhwZW5zaXZlLiAgKi8KLS0gICAgICBpZiAoc2VxMSAhPSBOVUxM X1JUWCAmJiAoY29zdDEgPD0gY29zdDIgfHwgc2VxMiA9PSBOVUxMX1JUWCkpCi0tCXsKLS0JICBz ZXEgPSBzZXExOwotLQkgIHRlbXBfZGVzdCA9IHRlbXBfZGVzdDE7Ci0tCSAgaWYgKCFzZWNvbmRf dHJ5KQotLQkgICAgKmxhc3RfbmVlZHNfY29tcGFyaXNvbiA9IGNvdW50OwotLQl9Ci0tICAgICAg ZWxzZSBpZiAoc2VxMiAhPSBOVUxMX1JUWCkKLS0JewotLQkgIHNlcSA9IHNlcTI7Ci0tCSAgdGVt cF9kZXN0ID0gdGVtcF9kZXN0MjsKLS0JfQotLSAgICAgIGVsc2UKLSsgICAgICAvKiBJZiB3ZSBm YWlsZWQgdG8gZXhwYW5kIHRoZSBjb25kaXRpb25hbCBtb3ZlLCBkcm9wIG91dCBhbmQgZG9uJ3QK LSsJIHRyeSB0byBjb250aW51ZS4gICovCi0rICAgICAgaWYgKHRlbXBfZGVzdCA9PSBOVUxMX1JU WCkKLSAJewotLQkgIC8qIE5vdGhpbmcgd29ya2VkLCBiYWlsIG91dC4gICovCi0gCSAgZW5kX3Nl cXVlbmNlICgpOwotIAkgIHJldHVybiBGQUxTRTsKLSAJfQotIAotLSAgICAgIC8qIEVuZCB0aGUg c3ViIHNlcXVlbmNlIGFuZCBlbWl0IHRvIHRoZSBtYWluIHNlcXVlbmNlLiAgKi8KLS0gICAgICBl bWl0X2luc24gKHNlcSk7Ci0tCi0gICAgICAgLyogQm9va2tlZXBpbmcuICAqLwotICAgICAgIGNv dW50Kys7Ci0tICAgICAgdGFyZ2V0cy0+c2FmZV9wdXNoICh0YXJnZXQpOwotLSAgICAgIHRlbXBv cmFyaWVzLT5zYWZlX3B1c2ggKHRlbXBfZGVzdCk7Ci0tICAgICAgdW5tb2RpZmllZF9pbnNucy0+ c2FmZV9wdXNoIChpbnNuKTsKLSsgICAgICB0YXJnZXRzLnNhZmVfcHVzaCAodGFyZ2V0KTsKLSsg ICAgICB0ZW1wb3Jhcmllcy5zYWZlX3B1c2ggKHRlbXBfZGVzdCk7Ci0rICAgICAgdW5tb2RpZmll ZF9pbnNucy5zYWZlX3B1c2ggKGluc24pOwotICAgICB9Ci0gCi0tICByZXR1cm4gdHJ1ZTsKLS19 Ci0rICAvKiBXZSBtdXN0IGhhdmUgc2VlbiBzb21lIHNvcnQgb2YgaW5zbiB0byBpbnNlcnQsIG90 aGVyd2lzZSB3ZSB3ZXJlCi0rICAgICBnaXZlbiBhbiBlbXB0eSBCQiB0byBjb252ZXJ0LCBhbmQg d2UgY2FuJ3QgaGFuZGxlIHRoYXQuICAqLwotKyAgZ2NjX2Fzc2VydCAoIXVubW9kaWZpZWRfaW5z bnMuaXNfZW1wdHkgKCkpOwotKwotKyAgLyogTm93IGZpeHVwIHRoZSBhc3NpZ25tZW50cy4gICov Ci0rICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCi0rICAgIG5vY2VfZW1pdF9tb3Zl X2luc24gKHRhcmdldHNbaV0sIHRlbXBvcmFyaWVzW2ldKTsKLSsKLSsgIC8qIEFjdHVhbGx5IGVt aXQgdGhlIHNlcXVlbmNlIGlmIGl0IGlzbid0IHRvbyBleHBlbnNpdmUuICAqLwotKyAgcnR4X2lu c24gKnNlcSA9IGdldF9pbnNucyAoKTsKLSsKLSsgIGlmICghdGFyZ2V0bS5ub2NlX2NvbnZlcnNp b25fcHJvZml0YWJsZV9wIChzZXEsIGlmX2luZm8pKQotKyAgICB7Ci0rICAgICAgZW5kX3NlcXVl bmNlICgpOwotKyAgICAgIHJldHVybiBGQUxTRTsKLSsgICAgfQotKwotKyAgZm9yIChpbnNuID0g c2VxOyBpbnNuOyBpbnNuID0gTkVYVF9JTlNOIChpbnNuKSkKLSsgICAgc2V0X3VzZWRfZmxhZ3Mg KGluc24pOwotKwotKyAgLyogTWFyayBhbGwgb3VyIHRlbXBvcmFyaWVzIGFuZCB0YXJnZXRzIGFz IHVzZWQuICAqLwotKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQotKyAgICB7Ci0r ICAgICAgc2V0X3VzZWRfZmxhZ3MgKHRlbXBvcmFyaWVzW2ldKTsKLSsgICAgICBzZXRfdXNlZF9m bGFncyAodGFyZ2V0c1tpXSk7Ci0rICAgIH0KLSAKLSsgIHNldF91c2VkX2ZsYWdzIChjb25kKTsK LSsgIHNldF91c2VkX2ZsYWdzICh4KTsKLSsgIHNldF91c2VkX2ZsYWdzICh5KTsKLSAKLSsgIHVu c2hhcmVfYWxsX3J0bF9pbl9jaGFpbiAoc2VxKTsKLSsgIGVuZF9zZXF1ZW5jZSAoKTsKLSsKLSsg IGlmICghc2VxKQotKyAgICByZXR1cm4gRkFMU0U7Ci0rCi0rICBmb3IgKGluc24gPSBzZXE7IGlu c247IGluc24gPSBORVhUX0lOU04gKGluc24pKQotKyAgICBpZiAoSlVNUF9QIChpbnNuKQotKwl8 fCByZWNvZ19tZW1vaXplZCAoaW5zbikgPT0gLTEpCi0rICAgICAgcmV0dXJuIEZBTFNFOwotKwot KyAgZW1pdF9pbnNuX2JlZm9yZV9zZXRsb2MgKHNlcSwgaWZfaW5mby0+anVtcCwKLSsJCQkgICBJ TlNOX0xPQ0FUSU9OICh1bm1vZGlmaWVkX2luc25zLmxhc3QgKCkpKTsKLSsKLSsgIC8qIENsZWFu IHVwIFRIRU5fQkIgYW5kIHRoZSBlZGdlcyBpbiBhbmQgb3V0IG9mIGl0LiAgKi8KLSsgIHJlbW92 ZV9lZGdlIChmaW5kX2VkZ2UgKHRlc3RfYmIsIGpvaW5fYmIpKTsKLSsgIHJlbW92ZV9lZGdlIChm aW5kX2VkZ2UgKHRoZW5fYmIsIGpvaW5fYmIpKTsKLSsgIHJlZGlyZWN0X2VkZ2VfYW5kX2JyYW5j aF9mb3JjZSAoc2luZ2xlX3N1Y2NfZWRnZSAodGVzdF9iYiksIGpvaW5fYmIpOwotKyAgZGVsZXRl X2Jhc2ljX2Jsb2NrICh0aGVuX2JiKTsKLSsgIG51bV90cnVlX2NoYW5nZXMrKzsKLSsKLSsgIC8q IE1heWJlIG1lcmdlIGJsb2NrcyBub3cgdGhlIGp1bXAgaXMgc2ltcGxlIGVub3VnaC4gICovCi0r ICBpZiAoY2FuX21lcmdlX2Jsb2Nrc19wICh0ZXN0X2JiLCBqb2luX2JiKSkKLSsgICAgewotKyAg ICAgIG1lcmdlX2Jsb2NrcyAodGVzdF9iYiwgam9pbl9iYik7Ci0rICAgICAgbnVtX3RydWVfY2hh bmdlcysrOwotKyAgICB9Ci0rCi0rICBudW1fdXBkYXRlZF9pZl9ibG9ja3MrKzsKLSsgIGlmX2lu Zm8tPnRyYW5zZm9ybV9uYW1lID0gIm5vY2VfY29udmVydF9tdWx0aXBsZV9zZXRzIjsKLSsgIHJl dHVybiBUUlVFOwotK30KLSAKLSAvKiBSZXR1cm4gdHJ1ZSBpZmYgYmFzaWMgYmxvY2sgVEVTVF9C QiBpcyBjb21wcmlzZWQgb2Ygb25seQotICAgIChTRVQgKFJFRykgKFJFRykpIGluc25zIHN1aXRh YmxlIGZvciBjb252ZXJzaW9uIHRvIGEgc2VyaWVzCi0gICAgb2YgY29uZGl0aW9uYWwgbW92ZXMu ICBBbHNvIGNoZWNrIHRoYXQgd2UgaGF2ZSBtb3JlIHRoYW4gb25lIHNldAotICAgIChvdGhlciBy b3V0aW5lcyBjYW4gaGFuZGxlIGEgc2luZ2xlIHNldCBiZXR0ZXIgdGhhbiB3ZSB3b3VsZCksIGFu ZAotLSAgIGZld2VyIHRoYW4gUEFSQU1fTUFYX1JUTF9JRl9DT05WRVJTSU9OX0lOU05TIHNldHMu ICBXaGlsZSBnb2luZwotLSAgIHRocm91Z2ggdGhlIGluc25zIHN0b3JlIHRoZSBzdW0gb2YgdGhl aXIgcG90ZW50aWFsIGNvc3RzIGluIENPU1QuICAqLwotKyAgIGZld2VyIHRoYW4gUEFSQU1fTUFY X1JUTF9JRl9DT05WRVJTSU9OX0lOU05TIHNldHMuICAqLwotIAotIHN0YXRpYyBib29sCi0tYmJf b2tfZm9yX25vY2VfY29udmVydF9tdWx0aXBsZV9zZXRzIChiYXNpY19ibG9jayB0ZXN0X2JiLCB1 bnNpZ25lZCAqY29zdCkKLStiYl9va19mb3Jfbm9jZV9jb252ZXJ0X211bHRpcGxlX3NldHMgKGJh c2ljX2Jsb2NrIHRlc3RfYmIpCi0gewotICAgcnR4X2luc24gKmluc247Ci0gICB1bnNpZ25lZCBj b3VudCA9IDA7Ci0gICB1bnNpZ25lZCBwYXJhbSA9IHBhcmFtX21heF9ydGxfaWZfY29udmVyc2lv bl9pbnNuczsKLS0gIGJvb2wgc3BlZWRfcCA9IG9wdGltaXplX2JiX2Zvcl9zcGVlZF9wICh0ZXN0 X2JiKTsKLS0gIHVuc2lnbmVkIHBvdGVudGlhbF9jb3N0ID0gMDsKLSAKLSAgIEZPUl9CQl9JTlNO UyAodGVzdF9iYiwgaW5zbikKLSAgICAgewotQEAgLTM2MDAsOSArMzM5OCw5IEBAIGJiX29rX2Zv cl9ub2NlX2NvbnZlcnRfbXVsdGlwbGVfc2V0cyAoYmFzaWNfYmxvY2sgdGVzdF9iYiwgdW5zaWdu ZWQgKmNvc3QpCi0gICAgICAgaWYgKCFSRUdfUCAoZGVzdCkpCi0gCXJldHVybiBmYWxzZTsKLSAK LS0gICAgICBpZiAoISgoUkVHX1AgKHNyYykgfHwgQ09OU1RBTlRfUCAoc3JjKSkKLS0JICAgIHx8 IChHRVRfQ09ERSAoc3JjKSA9PSBTVUJSRUcgJiYgUkVHX1AgKFNVQlJFR19SRUcgKHNyYykpCi0t CSAgICAgICYmIHN1YnJlZ19sb3dwYXJ0X3AgKHNyYykpKSkKLSsgICAgICBpZiAoIShSRUdfUCAo c3JjKQotKwkgICB8fCAoR0VUX0NPREUgKHNyYykgPT0gU1VCUkVHICYmIFJFR19QIChTVUJSRUdf UkVHIChzcmMpKQotKwkgICAgICAgJiYgc3VicmVnX2xvd3BhcnRfcCAoc3JjKSkpKQotIAlyZXR1 cm4gZmFsc2U7Ci0gCi0gICAgICAgLyogRGVzdGluYXRpb24gbXVzdCBiZSBhcHByb3ByaWF0ZSBm b3IgYSBjb25kaXRpb25hbCB3cml0ZS4gICovCi1AQCAtMzYxMywxMyArMzQxMSw5IEBAIGJiX29r X2Zvcl9ub2NlX2NvbnZlcnRfbXVsdGlwbGVfc2V0cyAoYmFzaWNfYmxvY2sgdGVzdF9iYiwgdW5z aWduZWQgKmNvc3QpCi0gICAgICAgaWYgKCFjYW5fY29uZGl0aW9uYWxseV9tb3ZlX3AgKEdFVF9N T0RFIChkZXN0KSkpCi0gCXJldHVybiBmYWxzZTsKLSAKLS0gICAgICBwb3RlbnRpYWxfY29zdCAr PSBpbnNuX2Nvc3QgKGluc24sIHNwZWVkX3ApOwotLQotICAgICAgIGNvdW50Kys7Ci0gICAgIH0K LSAKLS0gICpjb3N0ICs9IHBvdGVudGlhbF9jb3N0OwotLQotICAgLyogSWYgd2Ugd291bGQgb25s eSBwdXQgb3V0IG9uZSBjb25kaXRpb25hbCBtb3ZlLCB0aGUgb3RoZXIgc3RyYXRlZ2llcwotICAg ICAgdGhpcyBwYXNzIHRyaWVzIGFyZSBiZXR0ZXIgb3B0aW1pemVkIGFuZCB3aWxsIGJlIG1vcmUg YXBwcm9wcmlhdGUuCi0gICAgICBTb21lIHRhcmdldHMgd2FudCB0byBzdHJpY3RseSBsaW1pdCB0 aGUgbnVtYmVyIG9mIGNvbmRpdGlvbmFsIG1vdmVzCi1AQCAtMzY2NywyNCArMzQ2MSwxMSBAQCBu b2NlX3Byb2Nlc3NfaWZfYmxvY2sgKHN0cnVjdCBub2NlX2lmX2luZm8gKmlmX2luZm8pCi0gICAg ICB0byBjYWxjdWxhdGUgYSB2YWx1ZSBmb3IgeC4KLSAgICAgID8/PyBGb3IgZnV0dXJlIGV4cGFu c2lvbiwgZnVydGhlciBleHBhbmQgdGhlICJtdWx0aXBsZSBYIiBydWxlcy4gICovCi0gCi0tICAv KiBGaXJzdCBsb29rIGZvciBtdWx0aXBsZSBTRVRTLiAgVGhlIG9yaWdpbmFsIGNvc3RzIGFscmVh ZHkgaW5jbHVkZQotLSAgICAgYSBiYXNlIGNvc3Qgb2YgQ09TVFNfTl9JTlNOUyAoMik6IG9uZSBp bnN0cnVjdGlvbiBmb3IgdGhlIGNvbXBhcmUKLS0gICAgICh3aGljaCB3ZSB3aWxsIGJlIG5lZWRp bmcgZWl0aGVyIHdheSkgYW5kIG9uZSBpbnN0cnVjdGlvbiBmb3IgdGhlCi0tICAgICBicmFuY2gu ICBXaGVuIGNvbXBhcmluZyBjb3N0cyB3ZSB3YW50IHRvIHVzZSB0aGUgYnJhbmNoIGluc3RydWN0 aW9uCi0tICAgICBjb3N0IGFuZCB0aGUgc2V0cyB2cy4gdGhlIGNtb3ZzIGdlbmVyYXRlZCBoZXJl LiAgVGhlcmVmb3JlIHN1YnRyYWN0Ci0tICAgICB0aGUgY29zdHMgb2YgdGhlIGNvbXBhcmUgYmVm b3JlIGNoZWNraW5nLgotLSAgICAgPz8/IEFjdHVhbGx5LCBpbnN0ZWFkIG9mIHRoZSBicmFuY2gg aW5zdHJ1Y3Rpb24gY29zdHMgd2UgbWlnaHQgd2FudAotLSAgICAgdG8gdXNlIENPU1RTX05fSU5T TlMgKEJSQU5DSF9DT1NUICgpKSBhcyBpbiBvdGhlciBwbGFjZXMuICAqLwotLQotLSAgdW5zaWdu ZWQgcG90ZW50aWFsX2Nvc3QgPSBpZl9pbmZvLT5vcmlnaW5hbF9jb3N0IC0gQ09TVFNfTl9JTlNO UyAoMSk7Ci0tICB1bnNpZ25lZCBvbGRfY29zdCA9IGlmX2luZm8tPm9yaWdpbmFsX2Nvc3Q7Ci0r ICAvKiBGaXJzdCBsb29rIGZvciBtdWx0aXBsZSBTRVRTLiAgKi8KLSAgIGlmICghZWxzZV9iYgot ICAgICAgICYmIEhBVkVfY29uZGl0aW9uYWxfbW92ZQotLSAgICAgICYmIGJiX29rX2Zvcl9ub2Nl X2NvbnZlcnRfbXVsdGlwbGVfc2V0cyAodGhlbl9iYiwgJnBvdGVudGlhbF9jb3N0KSkKLSsgICAg ICAmJiBiYl9va19mb3Jfbm9jZV9jb252ZXJ0X211bHRpcGxlX3NldHMgKHRoZW5fYmIpKQotICAg ICB7Ci0tICAgICAgLyogVGVtcG9yYXJpbHkgc2V0IHRoZSBvcmlnaW5hbCBjb3N0cyB0byB3aGF0 IHdlIGVzdGltYXRlZCBzbwotLQkgd2UgY2FuIGRldGVybWluZSBpZiB0aGUgdHJhbnNmb3JtYXRp b24gaXMgd29ydGggaXQuICAqLwotLSAgICAgIGlmX2luZm8tPm9yaWdpbmFsX2Nvc3QgPSBwb3Rl bnRpYWxfY29zdDsKLSAgICAgICBpZiAobm9jZV9jb252ZXJ0X211bHRpcGxlX3NldHMgKGlmX2lu Zm8pKQotIAl7Ci0gCSAgaWYgKGR1bXBfZmlsZSAmJiBpZl9pbmZvLT50cmFuc2Zvcm1fbmFtZSkK LUBAIC0zNjkyLDkgKzM0NzMsNiBAQCBub2NlX3Byb2Nlc3NfaWZfYmxvY2sgKHN0cnVjdCBub2Nl X2lmX2luZm8gKmlmX2luZm8pCi0gCQkgICAgIGlmX2luZm8tPnRyYW5zZm9ybV9uYW1lKTsKLSAJ ICByZXR1cm4gVFJVRTsKLSAJfQotLQotLSAgICAgIC8qIFJlc3RvcmUgdGhlIG9yaWdpbmFsIGNv c3RzLiAgKi8KLS0gICAgICBpZl9pbmZvLT5vcmlnaW5hbF9jb3N0ID0gb2xkX2Nvc3Q7Ci0gICAg IH0KLSAKLSAgIGJvb2wgc3BlZWRfcCA9IG9wdGltaXplX2JiX2Zvcl9zcGVlZF9wICh0ZXN0X2Ji KTsKLUBAIC00MDM2LDg5ICszODE0LDYgQEAgY2hlY2tfY29uZF9tb3ZlX2Jsb2NrIChiYXNpY19i bG9jayBiYiwKLSAgIHJldHVybiBUUlVFOwotIH0KLSAKLS0vKiBGaW5kIGxvY2FsIHN3YXAtc3R5 bGUgaWRpb21zIGluIEJCIGFuZCBtYXJrIHRoZSBmaXJzdCBpbnNuICgxKQotLSAgIHRoYXQgaXMg b25seSBhIHRlbXBvcmFyeSBhcyBub3QgbmVlZGluZyBhIGNvbmRpdGlvbmFsIG1vdmUgYXMKLS0g ICBpdCBpcyBnb2luZyB0byBiZSBkZWFkIGFmdGVyd2FyZHMgYW55d2F5LgotLQotLSAgICAgKDEp IGludCB0bXAgPSBhOwotLQkgYSA9IGI7Ci0tCSBiID0gdG1wOwotLQotLQkgaWZjdnQKLS0JIC0t PgotLQotLQkgdG1wID0gYTsKLS0JIGEgPSBjb25kID8gYiA6IGFfb2xkOwotLQkgYiA9IGNvbmQg PyB0bXAgOiBiX29sZDsKLS0KLS0gICAgQWRkaXRpb25hbGx5LCBzdG9yZSB0aGUgaW5kZXggb2Yg aW5zbnMgbGlrZSAoMikgd2hlbiBhIHN1YnNlcXVlbnQKLS0gICAgU0VUIHJlYWRzIGZyb20gdGhl aXIgZGVzdGluYXRpb24uCi0tCi0tICAgICgyKSBpbnQgYyA9IGE7Ci0tCWludCBkID0gYzsKLS0K LS0JaWZjdnQKLS0JLS0+Ci0tCi0tCWMgPSBjb25kID8gYSA6IGNfb2xkOwotLQlkID0gY29uZCA/ IGQgOiBjOyAgICAgLy8gTmVlZCB0byB1c2UgYyByYXRoZXIgdGhhbiBjX29sZCBoZXJlLgotLSov Ci0tCi0tc3RhdGljIHZvaWQKLS1uZWVkX2Ntb3Zfb3JfcmV3aXJlIChiYXNpY19ibG9jayBiYiwK LS0JCSAgICAgaGFzaF9zZXQ8cnR4X2luc24gKj4gKm5lZWRfbm9fY21vdiwKLS0JCSAgICAgaGFz aF9tYXA8cnR4X2luc24gKiwgaW50PiAqcmV3aXJlZF9zcmMpCi0tewotLSAgcnR4X2luc24gKmlu c247Ci0tICBpbnQgY291bnQgPSAwOwotLSAgYXV0b192ZWM8cnR4X2luc24gKj4gaW5zbnM7Ci0t ICBhdXRvX3ZlYzxydHg+IGRlc3RzOwotLQotLSAgLyogSXRlcmF0ZSBvdmVyIGFsbCBTRVRzLCBz dG9yaW5nIHRoZSBkZXN0aW5hdGlvbnMKLS0gICAgIGluIERFU1QuCi0tICAgICAtIElmIHdlIGhp dCBhIFNFVCB0aGF0IHJlYWRzIGZyb20gYSBkZXN0aW5hdGlvbgotLSAgICAgICB0aGF0IHdlIGhh dmUgc2VlbiBiZWZvcmUgYW5kIHRoZSBjb3JyZXNwb25kaW5nIHJlZ2lzdGVyCi0tICAgICAgIGlz IGRlYWQgYWZ0ZXJ3YXJkcywgdGhlIHJlZ2lzdGVyIGRvZXMgbm90IG5lZWQgdG8gYmUKLS0gICAg ICAgbW92ZWQgY29uZGl0aW9uYWxseS4KLS0gICAgIC0gSWYgd2UgZW5jb3VudGVyIGEgcHJldmlv dXNseSBjaGFuZ2VkIHJlZ2lzdGVyLAotLSAgICAgICByZXdpcmUgdGhlIHJlYWQgdG8gdGhlIG9y aWdpbmFsIHNvdXJjZS4gICovCi0tICBGT1JfQkJfSU5TTlMgKGJiLCBpbnNuKQotLSAgICB7Ci0t ICAgICAgcnR4IHNldCwgc3JjLCBkZXN0OwotLQotLSAgICAgIGlmICghYWN0aXZlX2luc25fcCAo aW5zbikpCi0tCWNvbnRpbnVlOwotLQotLSAgICAgIHNldCA9IHNpbmdsZV9zZXQgKGluc24pOwot LSAgICAgIGlmIChzZXQgPT0gTlVMTF9SVFgpCi0tCWNvbnRpbnVlOwotLQotLSAgICAgIHNyYyA9 IFNFVF9TUkMgKHNldCk7Ci0tICAgICAgaWYgKFNVQlJFR19QIChzcmMpKQotLQlzcmMgPSBTVUJS RUdfUkVHIChzcmMpOwotLSAgICAgIGRlc3QgPSBTRVRfREVTVCAoc2V0KTsKLS0KLS0gICAgICAv KiBDaGVjayBpZiB0aGUgY3VycmVudCBTRVQncyBzb3VyY2UgaXMgdGhlIHNhbWUKLS0JIGFzIGFu eSBwcmV2aW91c2x5IHNlZW4gZGVzdGluYXRpb24uCi0tCSBUaGlzIGlzIHF1YWRyYXRpYyBidXQg dGhlIG51bWJlciBvZiBpbnNucyBpbiBCQgotLQkgaXMgYm91bmRlZCBieSBQQVJBTV9NQVhfUlRM X0lGX0NPTlZFUlNJT05fSU5TTlMuICAqLwotLSAgICAgIGlmIChSRUdfUCAoc3JjKSkKLS0JZm9y IChpbnQgaSA9IGNvdW50IC0gMTsgaSA+PSAwOyAtLWkpCi0tCSAgaWYgKHJlZ19vdmVybGFwX21l bnRpb25lZF9wIChzcmMsIGRlc3RzW2ldKSkKLS0JICAgIHsKLS0JICAgICAgaWYgKGZpbmRfcmVn X25vdGUgKGluc24sIFJFR19ERUFELCBzcmMpICE9IE5VTExfUlRYKQotLQkJbmVlZF9ub19jbW92 LT5hZGQgKGluc25zW2ldKTsKLS0JICAgICAgZWxzZQotLQkJcmV3aXJlZF9zcmMtPnB1dCAoaW5z biwgaSk7Ci0tCSAgICB9Ci0tCi0tICAgICAgaW5zbnMuc2FmZV9wdXNoIChpbnNuKTsKLS0gICAg ICBkZXN0cy5zYWZlX3B1c2ggKGRlc3QpOwotLQotLSAgICAgIGNvdW50Kys7Ci0tICAgIH0KLS19 Ci0tCi0gLyogR2l2ZW4gYSBiYXNpYyBibG9jayBCQiBzdWl0YWJsZSBmb3IgY29uZGl0aW9uYWwg bW92ZSBjb252ZXJzaW9uLAotICAgIGEgY29uZGl0aW9uIENPTkQsIGFuZCBwb2ludGVyIG1hcHMg VEhFTl9WQUxTIGFuZCBFTFNFX1ZBTFMgY29udGFpbmluZwotICAgIHRoZSByZWdpc3RlciB2YWx1 ZXMgZGVwZW5kaW5nIG9uIENPTkQsIGVtaXQgdGhlIGluc25zIGluIHRoZSBibG9jayBhcwotLS0t IGdjYy9vcHRhYnMuY2MKLSsrKyBnY2Mvb3B0YWJzLmNjCi1AQCAtNTIsOCArNTIsNiBAQCBzdGF0 aWMgdm9pZCBwcmVwYXJlX2Zsb2F0X2xpYl9jbXAgKHJ0eCwgcnR4LCBlbnVtIHJ0eF9jb2RlLCBy dHggKiwKLSBzdGF0aWMgcnR4IGV4cGFuZF91bm9wX2RpcmVjdCAobWFjaGluZV9tb2RlLCBvcHRh YiwgcnR4LCBydHgsIGludCk7Ci0gc3RhdGljIHZvaWQgZW1pdF9saWJjYWxsX2Jsb2NrXzEgKHJ0 eF9pbnNuICosIHJ0eCwgcnR4LCBydHgsIGJvb2wpOwotIAotLXN0YXRpYyBydHggZW1pdF9jb25k aXRpb25hbF9tb3ZlXzEgKHJ0eCwgcnR4LCBydHgsIHJ0eCwgbWFjaGluZV9tb2RlKTsKLS0KLSAv KiBEZWJ1ZyBmYWNpbGl0eSBmb3IgdXNlIGluIEdEQi4gICovCi0gdm9pZCBkZWJ1Z19vcHRhYl9s aWJmdW5jcyAodm9pZCk7Ci0gDAotQEAgLTYyNiwxMyArNjI0LDEyIEBAIGV4cGFuZF9kb3VibGV3 b3JkX3NoaWZ0X2NvbmRtb3ZlIChzY2FsYXJfaW50X21vZGUgb3AxX21vZGUsIG9wdGFiIGJpbm9w dGFiLAotIAotICAgLyogU2VsZWN0IGJldHdlZW4gdGhlbS4gIERvIHRoZSBJTlRPIGhhbGYgZmly c3QgYmVjYXVzZSBJTlRPX1NVUEVSV09SRAotICAgICAgbWlnaHQgYmUgdGhlIGN1cnJlbnQgdmFs dWUgb2YgT1VUT0ZfVEFSR0VULiAgKi8KLS0gIGlmICghZW1pdF9jb25kaXRpb25hbF9tb3ZlIChp bnRvX3RhcmdldCwgeyBjbXBfY29kZSwgY21wMSwgY21wMiwgb3AxX21vZGUgfSwKLSsgIGlmICgh ZW1pdF9jb25kaXRpb25hbF9tb3ZlIChpbnRvX3RhcmdldCwgY21wX2NvZGUsIGNtcDEsIGNtcDIs IG9wMV9tb2RlLAotIAkJCSAgICAgIGludG9fdGFyZ2V0LCBpbnRvX3N1cGVyd29yZCwgd29yZF9t b2RlLCBmYWxzZSkpCi0gICAgIHJldHVybiBmYWxzZTsKLSAKLSAgIGlmIChvdXRvZl90YXJnZXQg IT0gMCkKLS0gICAgaWYgKCFlbWl0X2NvbmRpdGlvbmFsX21vdmUgKG91dG9mX3RhcmdldCwKLS0J CQkJeyBjbXBfY29kZSwgY21wMSwgY21wMiwgb3AxX21vZGUgfSwKLSsgICAgaWYgKCFlbWl0X2Nv bmRpdGlvbmFsX21vdmUgKG91dG9mX3RhcmdldCwgY21wX2NvZGUsIGNtcDEsIGNtcDIsIG9wMV9t b2RlLAotIAkJCQlvdXRvZl90YXJnZXQsIG91dG9mX3N1cGVyd29yZCwKLSAJCQkJd29yZF9tb2Rl LCBmYWxzZSkpCi0gICAgICAgcmV0dXJuIGZhbHNlOwotQEAgLTQ4NTQsOCArNDg1MSw4IEBAIGVt aXRfaW5kaXJlY3RfanVtcCAocnR4IGxvYykKLSAgICBpcyBub3Qgc3VwcG9ydGVkLiAgKi8KLSAK LSBydHgKLS1lbWl0X2NvbmRpdGlvbmFsX21vdmUgKHJ0eCB0YXJnZXQsIHN0cnVjdCBydHhfY29t cGFyaXNvbiBjb21wLAotLQkJICAgICAgIHJ0eCBvcDIsIHJ0eCBvcDMsCi0rZW1pdF9jb25kaXRp b25hbF9tb3ZlIChydHggdGFyZ2V0LCBlbnVtIHJ0eF9jb2RlIGNvZGUsIHJ0eCBvcDAsIHJ0eCBv cDEsCi0rCQkgICAgICAgbWFjaGluZV9tb2RlIGNtb2RlLCBydHggb3AyLCBydHggb3AzLAotIAkJ ICAgICAgIG1hY2hpbmVfbW9kZSBtb2RlLCBpbnQgdW5zaWduZWRwKQotIHsKLSAgIHJ0eCBjb21w YXJpc29uOwotQEAgLTQ4NzcsMzMgKzQ4NzQsMzEgQEAgZW1pdF9jb25kaXRpb25hbF9tb3ZlIChy dHggdGFyZ2V0LCBzdHJ1Y3QgcnR4X2NvbXBhcmlzb24gY29tcCwKLSAgIC8qIElmIG9uZSBvcGVy YW5kIGlzIGNvbnN0YW50LCBtYWtlIGl0IHRoZSBzZWNvbmQgb25lLiAgT25seSBkbyB0aGlzCi0g ICAgICBpZiB0aGUgb3RoZXIgb3BlcmFuZCBpcyBub3QgY29uc3RhbnQgYXMgd2VsbC4gICovCi0g Ci0tICBpZiAoc3dhcF9jb21tdXRhdGl2ZV9vcGVyYW5kc19wIChjb21wLm9wMCwgY29tcC5vcDEp KQotKyAgaWYgKHN3YXBfY29tbXV0YXRpdmVfb3BlcmFuZHNfcCAob3AwLCBvcDEpKQotICAgICB7 Ci0tICAgICAgc3RkOjpzd2FwIChjb21wLm9wMCwgY29tcC5vcDEpOwotLSAgICAgIGNvbXAuY29k ZSA9IHN3YXBfY29uZGl0aW9uIChjb21wLmNvZGUpOwotKyAgICAgIHN0ZDo6c3dhcCAob3AwLCBv cDEpOwotKyAgICAgIGNvZGUgPSBzd2FwX2NvbmRpdGlvbiAoY29kZSk7Ci0gICAgIH0KLSAKLSAg IC8qIGdldF9jb25kaXRpb24gd2lsbCBwcmVmZXIgdG8gZ2VuZXJhdGUgTFQgYW5kIEdUIGV2ZW4g aWYgdGhlIG9sZAotICAgICAgY29tcGFyaXNvbiB3YXMgYWdhaW5zdCB6ZXJvLCBzbyB1bmRvIHRo YXQgY2Fub25pY2FsaXphdGlvbiBoZXJlIHNpbmNlCi0gICAgICBjb21wYXJpc29ucyBhZ2FpbnN0 IHplcm8gYXJlIGNoZWFwZXIuICAqLwotKyAgaWYgKGNvZGUgPT0gTFQgJiYgb3AxID09IGNvbnN0 MV9ydHgpCi0rICAgIGNvZGUgPSBMRSwgb3AxID0gY29uc3QwX3J0eDsKLSsgIGVsc2UgaWYgKGNv ZGUgPT0gR1QgJiYgb3AxID09IGNvbnN0bTFfcnR4KQotKyAgICBjb2RlID0gR0UsIG9wMSA9IGNv bnN0MF9ydHg7Ci0gCi0tICBpZiAoY29tcC5jb2RlID09IExUICYmIGNvbXAub3AxID09IGNvbnN0 MV9ydHgpCi0tICAgIGNvbXAuY29kZSA9IExFLCBjb21wLm9wMSA9IGNvbnN0MF9ydHg7Ci0tICBl bHNlIGlmIChjb21wLmNvZGUgPT0gR1QgJiYgY29tcC5vcDEgPT0gY29uc3RtMV9ydHgpCi0tICAg IGNvbXAuY29kZSA9IEdFLCBjb21wLm9wMSA9IGNvbnN0MF9ydHg7Ci0tCi0tICBpZiAoY29tcC5t b2RlID09IFZPSURtb2RlKQotLSAgICBjb21wLm1vZGUgPSBHRVRfTU9ERSAoY29tcC5vcDApOwot KyAgaWYgKGNtb2RlID09IFZPSURtb2RlKQotKyAgICBjbW9kZSA9IEdFVF9NT0RFIChvcDApOwot IAotLSAgZW51bSBydHhfY29kZSBvcmlnX2NvZGUgPSBjb21wLmNvZGU7Ci0rICBlbnVtIHJ0eF9j b2RlIG9yaWdfY29kZSA9IGNvZGU7Ci0gICBib29sIHN3YXBwZWQgPSBmYWxzZTsKLSAgIGlmIChz d2FwX2NvbW11dGF0aXZlX29wZXJhbmRzX3AgKG9wMiwgb3AzKQotLSAgICAgICYmICgocmV2ZXJz ZWQgPQotLQkgICByZXZlcnNlZF9jb21wYXJpc29uX2NvZGVfcGFydHMgKGNvbXAuY29kZSwgY29t cC5vcDAsIGNvbXAub3AxLCBOVUxMKSkKLS0JICAhPSBVTktOT1dOKSkKLSsgICAgICAmJiAoKHJl dmVyc2VkID0gcmV2ZXJzZWRfY29tcGFyaXNvbl9jb2RlX3BhcnRzIChjb2RlLCBvcDAsIG9wMSwg TlVMTCkpCi0rICAgICAgICAgICE9IFVOS05PV04pKQotICAgICB7Ci0gICAgICAgc3RkOjpzd2Fw IChvcDIsIG9wMyk7Ci0tICAgICAgY29tcC5jb2RlID0gcmV2ZXJzZWQ7Ci0rICAgICAgY29kZSA9 IHJldmVyc2VkOwotICAgICAgIHN3YXBwZWQgPSB0cnVlOwotICAgICB9Ci0gCi1AQCAtNDkyMCwx MCArNDkxNSw4IEBAIGVtaXRfY29uZGl0aW9uYWxfbW92ZSAocnR4IHRhcmdldCwgc3RydWN0IHJ0 eF9jb21wYXJpc29uIGNvbXAsCi0gCi0gICBmb3IgKGludCBwYXNzID0gMDsgOyBwYXNzKyspCi0g ICAgIHsKLS0gICAgICBjb21wLmNvZGUgPSB1bnNpZ25lZHAgPyB1bnNpZ25lZF9jb25kaXRpb24g KGNvbXAuY29kZSkgOiBjb21wLmNvZGU7Ci0tICAgICAgY29tcGFyaXNvbiA9Ci0tCXNpbXBsaWZ5 X2dlbl9yZWxhdGlvbmFsIChjb21wLmNvZGUsIFZPSURtb2RlLAotLQkJCQkgY29tcC5tb2RlLCBj b21wLm9wMCwgY29tcC5vcDEpOwotKyAgICAgIGNvZGUgPSB1bnNpZ25lZHAgPyB1bnNpZ25lZF9j b25kaXRpb24gKGNvZGUpIDogY29kZTsKLSsgICAgICBjb21wYXJpc29uID0gc2ltcGxpZnlfZ2Vu X3JlbGF0aW9uYWwgKGNvZGUsIFZPSURtb2RlLCBjbW9kZSwgb3AwLCBvcDEpOwotIAotICAgICAg IC8qIFdlIGNhbiBnZXQgY29uc3QwX3J0eCBvciBjb25zdF90cnVlX3J0eCBpbiBzb21lIGNpcmN1 bXN0YW5jZXMuICBKdXN0Ci0gCSBwdW50IGFuZCBsZXQgdGhlIGNhbGxlciBmaWd1cmUgb3V0IGhv dyBiZXN0IHRvIGRlYWwgd2l0aCB0aGlzCi1AQCAtNDkzNCwxNiArNDkyNywyNCBAQCBlbWl0X2Nv bmRpdGlvbmFsX21vdmUgKHJ0eCB0YXJnZXQsIHN0cnVjdCBydHhfY29tcGFyaXNvbiBjb21wLAot IAkgIHNhdmVfcGVuZGluZ19zdGFja19hZGp1c3QgKCZzYXZlKTsKLSAJICBsYXN0ID0gZ2V0X2xh c3RfaW5zbiAoKTsKLSAJICBkb19wZW5kaW5nX3N0YWNrX2FkanVzdCAoKTsKLS0JICBtYWNoaW5l X21vZGUgY21wbW9kZSA9IGNvbXAubW9kZTsKLSsJICBtYWNoaW5lX21vZGUgY21wbW9kZSA9IGNt b2RlOwotIAkgIHByZXBhcmVfY21wX2luc24gKFhFWFAgKGNvbXBhcmlzb24sIDApLCBYRVhQIChj b21wYXJpc29uLCAxKSwKLSAJCQkgICAgR0VUX0NPREUgKGNvbXBhcmlzb24pLCBOVUxMX1JUWCwg dW5zaWduZWRwLAotIAkJCSAgICBPUFRBQl9XSURFTiwgJmNvbXBhcmlzb24sICZjbXBtb2RlKTsK LSAJICBpZiAoY29tcGFyaXNvbikKLSAJICAgIHsKLS0JICAgICAgIHJ0eCByZXMgPSBlbWl0X2Nv bmRpdGlvbmFsX21vdmVfMSAodGFyZ2V0LCBjb21wYXJpc29uLAotLQkJCQkJCSAgb3AyLCBvcDMs IG1vZGUpOwotLQkgICAgICAgaWYgKHJlcyAhPSBOVUxMX1JUWCkKLS0JCSByZXR1cm4gcmVzOwot KwkgICAgICBjbGFzcyBleHBhbmRfb3BlcmFuZCBvcHNbNF07Ci0rCi0rCSAgICAgIGNyZWF0ZV9v dXRwdXRfb3BlcmFuZCAoJm9wc1swXSwgdGFyZ2V0LCBtb2RlKTsKLSsJICAgICAgY3JlYXRlX2Zp eGVkX29wZXJhbmQgKCZvcHNbMV0sIGNvbXBhcmlzb24pOwotKwkgICAgICBjcmVhdGVfaW5wdXRf b3BlcmFuZCAoJm9wc1syXSwgb3AyLCBtb2RlKTsKLSsJICAgICAgY3JlYXRlX2lucHV0X29wZXJh bmQgKCZvcHNbM10sIG9wMywgbW9kZSk7Ci0rCSAgICAgIGlmIChtYXliZV9leHBhbmRfaW5zbiAo aWNvZGUsIDQsIG9wcykpCi0rCQl7Ci0rCQkgIGlmIChvcHNbMF0udmFsdWUgIT0gdGFyZ2V0KQot KwkJICAgIGNvbnZlcnRfbW92ZSAodGFyZ2V0LCBvcHNbMF0udmFsdWUsIGZhbHNlKTsKLSsJCSAg cmV0dXJuIHRhcmdldDsKLSsJCX0KLSAJICAgIH0KLSAJICBkZWxldGVfaW5zbnNfc2luY2UgKGxh c3QpOwotIAkgIHJlc3RvcmVfcGVuZGluZ19zdGFja19hZGp1c3QgKCZzYXZlKTsKLUBAIC00OTU1 LDg4ICs0OTU2LDE3IEBAIGVtaXRfY29uZGl0aW9uYWxfbW92ZSAocnR4IHRhcmdldCwgc3RydWN0 IHJ0eF9jb21wYXJpc29uIGNvbXAsCi0gICAgICAgLyogSWYgdGhlIHByZWZlcnJlZCBvcDIvb3Az IG9yZGVyIGlzIG5vdCB1c2FibGUsIHJldHJ5IHdpdGggb3RoZXIKLSAJIG9wZXJhbmQgb3JkZXIs IHBlcmhhcHMgaXQgd2lsbCBleHBhbmQgc3VjY2Vzc2Z1bGx5LiAgKi8KLSAgICAgICBpZiAoc3dh cHBlZCkKLS0JY29tcC5jb2RlID0gb3JpZ19jb2RlOwotLSAgICAgIGVsc2UgaWYgKChyZXZlcnNl ZCA9Ci0tCQlyZXZlcnNlZF9jb21wYXJpc29uX2NvZGVfcGFydHMgKG9yaWdfY29kZSwgY29tcC5v cDAsIGNvbXAub3AxLAotKwljb2RlID0gb3JpZ19jb2RlOwotKyAgICAgIGVsc2UgaWYgKChyZXZl cnNlZCA9IHJldmVyc2VkX2NvbXBhcmlzb25fY29kZV9wYXJ0cyAob3JpZ19jb2RlLCBvcDAsIG9w MSwKLSAJCQkJCQkJICAgTlVMTCkpCi0gCSAgICAgICAhPSBVTktOT1dOKQotLQljb21wLmNvZGUg PSByZXZlcnNlZDsKLSsJY29kZSA9IHJldmVyc2VkOwotICAgICAgIGVsc2UKLSAJcmV0dXJuIE5V TExfUlRYOwotICAgICAgIHN0ZDo6c3dhcCAob3AyLCBvcDMpOwotICAgICB9Ci0gfQotIAotLS8q IEhlbHBlciBmdW5jdGlvbiB0aGF0LCBpbiBhZGRpdGlvbiB0byBDT01QQVJJU09OLCBhbHNvIHRy aWVzCi0tICAgdGhlIHJldmVyc2VkIFJFVl9DT01QQVJJU09OIHdpdGggc3dhcHBlZCBPUDIgYW5k IE9QMy4gIEFzIG9wcG9zZWQKLS0gICB0byB3aGVuIHdlIHBhc3MgdGhlIHNwZWNpZmljIGNvbnN0 aXR1ZW50cyBvZiBhIGNvbXBhcmlzb24sIG5vCi0tICAgYWRkaXRpb25hbCBpbnNucyBhcmUgZW1p dHRlZCBmb3IgaXQuICBJdCBtaWdodCBzdGlsbCBiZSBuZWNlc3NhcnkKLS0gICB0byBlbWl0IG1v cmUgdGhhbiBvbmUgaW5zbiBmb3IgdGhlIGZpbmFsIGNvbmRpdGlvbmFsIG1vdmUsIHRob3VnaC4g ICovCi0tCi0tcnR4Ci0tZW1pdF9jb25kaXRpb25hbF9tb3ZlIChydHggdGFyZ2V0LCBydHggY29t cGFyaXNvbiwgcnR4IHJldl9jb21wYXJpc29uLAotLQkJICAgICAgIHJ0eCBvcDIsIHJ0eCBvcDMs IG1hY2hpbmVfbW9kZSBtb2RlKQotLXsKLS0gIHJ0eCByZXMgPSBlbWl0X2NvbmRpdGlvbmFsX21v dmVfMSAodGFyZ2V0LCBjb21wYXJpc29uLCBvcDIsIG9wMywgbW9kZSk7Ci0tCi0tICBpZiAocmVz ICE9IE5VTExfUlRYKQotLSAgICByZXR1cm4gcmVzOwotLQotLSAgcmV0dXJuIGVtaXRfY29uZGl0 aW9uYWxfbW92ZV8xICh0YXJnZXQsIHJldl9jb21wYXJpc29uLCBvcDMsIG9wMiwgbW9kZSk7Ci0t fQotLQotLS8qIEhlbHBlciBmb3IgZW1pdHRpbmcgYSBjb25kaXRpb25hbCBtb3ZlLiAgKi8KLS0K LS1zdGF0aWMgcnR4Ci0tZW1pdF9jb25kaXRpb25hbF9tb3ZlXzEgKHJ0eCB0YXJnZXQsIHJ0eCBj b21wYXJpc29uLAotLQkJCSBydHggb3AyLCBydHggb3AzLCBtYWNoaW5lX21vZGUgbW9kZSkKLS17 Ci0tICBlbnVtIGluc25fY29kZSBpY29kZTsKLS0KLS0gIGlmIChjb21wYXJpc29uID09IE5VTExf UlRYIHx8ICFDT01QQVJJU09OX1AgKGNvbXBhcmlzb24pKQotLSAgICByZXR1cm4gTlVMTF9SVFg7 Ci0tCi0tICAvKiBJZiB0aGUgdHdvIHNvdXJjZSBvcGVyYW5kcyBhcmUgaWRlbnRpY2FsLCB0aGF0 J3MganVzdCBhIG1vdmUuCi0tICAgICBBcyB0aGUgY29tcGFyaXNvbiBjb21lcyBpbiBub24tY2Fu b25pY2FsaXplZCwgd2UgbXVzdCBtYWtlCi0tICAgICBzdXJlIG5vdCB0byBkaXNjYXJkIGFueSBw b3NzaWJsZSBzaWRlIGVmZmVjdHMuICBJZiB0aGVyZSBhcmUKLS0gICAgIHNpZGUgZWZmZWN0cywg anVzdCBsZXQgdGhlIHRhcmdldCBoYW5kbGUgaXQuICAqLwotLSAgaWYgKCFzaWRlX2VmZmVjdHNf cCAoY29tcGFyaXNvbikgJiYgcnR4X2VxdWFsX3AgKG9wMiwgb3AzKSkKLS0gICAgewotLSAgICAg IGlmICghdGFyZ2V0KQotLQl0YXJnZXQgPSBnZW5fcmVnX3J0eCAobW9kZSk7Ci0tCi0tICAgICAg ZW1pdF9tb3ZlX2luc24gKHRhcmdldCwgb3AzKTsKLS0gICAgICByZXR1cm4gdGFyZ2V0OwotLSAg ICB9Ci0tCi0tICBpZiAobW9kZSA9PSBWT0lEbW9kZSkKLS0gICAgbW9kZSA9IEdFVF9NT0RFIChv cDIpOwotLQotLSAgaWNvZGUgPSBkaXJlY3Rfb3B0YWJfaGFuZGxlciAobW92Y2Nfb3B0YWIsIG1v ZGUpOwotLQotLSAgaWYgKGljb2RlID09IENPREVfRk9SX25vdGhpbmcpCi0tICAgIHJldHVybiBO VUxMX1JUWDsKLS0KLS0gIGlmICghdGFyZ2V0KQotLSAgICB0YXJnZXQgPSBnZW5fcmVnX3J0eCAo bW9kZSk7Ci0tCi0tICBjbGFzcyBleHBhbmRfb3BlcmFuZCBvcHNbNF07Ci0tCi0tICBjcmVhdGVf b3V0cHV0X29wZXJhbmQgKCZvcHNbMF0sIHRhcmdldCwgbW9kZSk7Ci0tICBjcmVhdGVfZml4ZWRf b3BlcmFuZCAoJm9wc1sxXSwgY29tcGFyaXNvbik7Ci0tICBjcmVhdGVfaW5wdXRfb3BlcmFuZCAo Jm9wc1syXSwgb3AyLCBtb2RlKTsKLS0gIGNyZWF0ZV9pbnB1dF9vcGVyYW5kICgmb3BzWzNdLCBv cDMsIG1vZGUpOwotLQotLSAgaWYgKG1heWJlX2V4cGFuZF9pbnNuIChpY29kZSwgNCwgb3BzKSkK LS0gICAgewotLSAgICAgIGlmIChvcHNbMF0udmFsdWUgIT0gdGFyZ2V0KQotLQljb252ZXJ0X21v dmUgKHRhcmdldCwgb3BzWzBdLnZhbHVlLCBmYWxzZSk7Ci0tICAgICAgcmV0dXJuIHRhcmdldDsK LS0gICAgfQotLQotLSAgcmV0dXJuIE5VTExfUlRYOwotLX0KLS0KLSAKLSAvKiBFbWl0IGEgY29u ZGl0aW9uYWwgbmVnYXRlIG9yIGJpdHdpc2UgY29tcGxlbWVudCB1c2luZyB0aGUKLSAgICBuZWdj YyBvciBub3RjYyBvcHRhYnMgaWYgYXZhaWxhYmxlLiAgUmV0dXJuIE5VTExfUlRYIGlmIHN1Y2gg b3BlcmF0aW9ucwotLS0tIGdjYy9vcHRhYnMuaAotKysrIGdjYy9vcHRhYnMuaAotQEAgLTI3OSw4 ICsyNzksOCBAQCBleHRlcm4gdm9pZCBlbWl0X2luZGlyZWN0X2p1bXAgKHJ0eCk7Ci0gI2VuZGlm Ci0gCi0gLyogRW1pdCBhIGNvbmRpdGlvbmFsIG1vdmUgb3BlcmF0aW9uLiAgKi8KLS1ydHggZW1p dF9jb25kaXRpb25hbF9tb3ZlIChydHgsIHJ0eF9jb21wYXJpc29uLCBydHgsIHJ0eCwgbWFjaGlu ZV9tb2RlLCBpbnQpOwotLXJ0eCBlbWl0X2NvbmRpdGlvbmFsX21vdmUgKHJ0eCwgcnR4LCBydHgs IHJ0eCwgcnR4LCBtYWNoaW5lX21vZGUpOwotK3J0eCBlbWl0X2NvbmRpdGlvbmFsX21vdmUgKHJ0 eCwgZW51bSBydHhfY29kZSwgcnR4LCBydHgsIG1hY2hpbmVfbW9kZSwKLSsJCQkgICBydHgsIHJ0 eCwgbWFjaGluZV9tb2RlLCBpbnQpOwotIAotIC8qIEVtaXQgYSBjb25kaXRpb25hbCBuZWdhdGUg b3IgYml0d2lzZSBjb21wbGVtZW50IG9wZXJhdGlvbi4gICovCi0gcnR4IGVtaXRfY29uZGl0aW9u YWxfbmVnX29yX2NvbXBsZW1lbnQgKHJ0eCwgcnR4X2NvZGUsIG1hY2hpbmVfbW9kZSwgcnR4LAot LS0tIGdjYy9ydGwuaAotKysrIGdjYy9ydGwuaAotQEAgLTQ2MDQsMTYgKzQ2MDQsNyBAQCB3b3Jk X3JlZ2lzdGVyX29wZXJhdGlvbl9wIChjb25zdF9ydHggeCkKLSAgICAgICByZXR1cm4gdHJ1ZTsK LSAgICAgfQotIH0KLS0KLS0vKiBIb2xkcyBhbiBydHggY29tcGFyaXNvbiB0byBzaW1wbGlmeSBw YXNzaW5nIG1hbnkgcGFyYW1ldGVycyBwZXJ0YWluaW5nIHRvIGEKLS0gICBzaW5nbGUgY29tcGFy aXNvbi4gICovCi0tCi0tc3RydWN0IHJ0eF9jb21wYXJpc29uIHsKLS0gIHJ0eF9jb2RlIGNvZGU7 Ci0tICBydHggb3AwLCBvcDE7Ci0tICBtYWNoaW5lX21vZGUgbW9kZTsKLS19OwotLQotKyAgICAK LSAvKiBndHlwZS1kZXNjLmNjLiAgKi8KLSBleHRlcm4gdm9pZCBndF9nZ2NfbXggKHJ0eCAmKTsK LSBleHRlcm4gdm9pZCBndF9wY2hfbnggKHJ0eCAmKTsKCmRpZmYgLS1naXQgYS9nY2MxMi1wcjEw NDI1My5wYXRjaCBiL2djYzEyLXByMTA0MjUzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCA1NTYwNTI0Li4wMDAwMDAwCi0tLSBhL2djYzEyLXByMTA0MjUzLnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsMjAwICswLDAgQEAKLUlmIHlvdSBhcmUgb24gYSBQb3dlclBDIHN5c3Rl bSB3aGVyZSB0aGUgZGVmYXVsdCBsb25nIGRvdWJsZSBpcyBJRUVFCi0xMjgtYml0LCBHQ0Mgd2ls bCB1c2UgdGhlIHdyb25nIG5hbWVzIGZvciBzb21lIG9mIHRoZSBjb252ZXJzaW9uIGZ1bmN0aW9u cwotZm9yIHRoZSBfX2libTEyOCB0eXBlLgotCi1XaGF0IGlzIGhhcHBlbmluZyBpcyB3aGVuIHRo ZSBkZWZ1bHQgbG9uZyBkb3VibGUgaXMgSUVFRSAxMjgtYml0LCB0aGUKLXZhcmlvdXMgY29udmVy dCwgdHJ1bmNhdGlvbiwgYW5kIGV4dGVuZCBmdW5jdGlvbnMgZGlkIG5vdCBzcGVjaWZ5IGEKLWRl ZmF1bHQgbmFtZSBmb3IgdGhlIGNvbnZlcnNpb24uICBUaGUgbWFjaGluZSBpbmRlcGVudGVudCBw b3J0aW9ucyBvZiB0aGUKLWNvbXBpbGVyIHdvdWxkIGNvbnN0cnVjdCBhIGNhbGwgd2l0aCBhbiAn aWYnIG5hbWUgKElGbW9kZSBiZWluZyB0aGUgbW9kZQotZm9yIElCTSAxMjgtYml0IGZsb2F0aW5n IHBvaW50KS4gIFRoaXMgcGF0Y2ggc3BlY2lmaWVzIHRvIHVzZSB0aGUKLXRyYWRpYXRpb25hbCAn dGYnIG5hbWUgZm9yIHRoZXNlIGNvbnZlcnNpb24gZnVuY3Rpb25zLgotCi0yMDIyLTAxLTI4ICBN aWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAdGhlLW1laXNzbmVycy5vcmc+Ci0KLWdjYy8KLQlQ UiB0YXJnZXQvMTA0MjUzCi0JKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jYyAoaW5pdF9mbG9hdDEy OF9pYm0pOiBVc2UgdGhlIFRGIG5hbWVzCi0JZm9yIGJ1aWx0aW4gY29udmVyc2lvbnMgYmV0d2Vl biBfX2libTEyOCBhbmQgREltb2RlIHdoZW4gbG9uZwotCWRvdWJsZSB1c2VzIHRoZSBJRUVFIDEy OC1iaXQgZm9ybWF0LgotCi1nY2MvdGVzdHN1aXRlLwotCVBSIHRhcmdldC8xMDQyNTMKLQkqIGdj Yy50YXJnZXQvcG93ZXJwYy9wcjEwNDI1My5jOiBOZXcgdGVzdC4KLS0tLQotIGdjYy9jb25maWcv cnM2MDAwL3JzNjAwMC5jYyAgICAgICAgICAgICAgICAgfCAgIDYgKwotIGdjYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9wb3dlcnBjL3ByMTA0MjUzLmMgfCAxNTQgKysrKysrKysrKysrKysrKysrKysK LSAyIGZpbGVzIGNoYW5nZWQsIDE2MCBpbnNlcnRpb25zKCspCi0gY3JlYXRlIG1vZGUgMTAwNjQ0 IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9wb3dlcnBjL3ByMTA0MjUzLmMKLQotLS0tIGdjYy9j b25maWcvcnM2MDAwL3JzNjAwMC5jYwotKysrIGdjYy9jb25maWcvcnM2MDAwL3JzNjAwMC5jYwot QEAgLTExMTEzLDYgKzExMTEzLDEyIEBAIGluaXRfZmxvYXQxMjhfaWJtIChtYWNoaW5lX21vZGUg bW9kZSkKLSAgICAgICBzZXRfY29udl9saWJmdW5jICh0cnVuY19vcHRhYiwgRERtb2RlLCBtb2Rl LCAiX19kcGRfdHJ1bmN0ZmRkIik7Ci0gICAgICAgc2V0X2NvbnZfbGliZnVuYyAoc2V4dF9vcHRh YiwgVERtb2RlLCBtb2RlLCAiX19kcGRfZXh0ZW5kdGZ0ZCIpOwotIAotKyAgICAgIHNldF9jb252 X2xpYmZ1bmMgKHNmaXhfb3B0YWIsIERJbW9kZSwgbW9kZSwgIl9fZml4dGZkaSIpOwotKyAgICAg IHNldF9jb252X2xpYmZ1bmMgKHVmaXhfb3B0YWIsIERJbW9kZSwgbW9kZSwgIl9fZml4dW5zdGZk aSIpOwotKwotKyAgICAgIHNldF9jb252X2xpYmZ1bmMgKHNmbG9hdF9vcHRhYiwgbW9kZSwgRElt b2RlLCAiX19mbG9hdGRpdGYiKTsKLSsgICAgICBzZXRfY29udl9saWJmdW5jICh1ZmxvYXRfb3B0 YWIsIG1vZGUsIERJbW9kZSwgIl9fZmxvYXR1bmRpdGYiKTsKLSsKLSAgICAgICBpZiAoVEFSR0VU X1BPV0VSUEM2NCkKLSAJewotIAkgIHNldF9jb252X2xpYmZ1bmMgKHNmaXhfb3B0YWIsIFRJbW9k ZSwgbW9kZSwgIl9fZml4dGZ0aSIpOwotLS0tIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9wb3dl cnBjL3ByMTA0MjUzLmMKLSsrKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcG93ZXJwYy9wcjEw NDI1My5jCi1AQCAtMCwwICsxLDE1NCBAQAotKy8qCi0rICogUmVxdWlyZSBmbG9hdDEyOCBzdXBw b3J0IGJlY2F1c2UgX19pYm0xMjggY3VycmVudGx5IGlzIG5vdCBlbmFibGVkIHVubGVzcyB3ZQot KyAqIGFsc28gaGF2ZSBfX2Zsb2F0MTI4IHN1cHBvcnQuCi0rICovCi0rCi0rLyogeyBkZy1kbyBy dW4gfSAqLwotKy8qIHsgcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHBwY19mbG9hdDEyOF9zdyB9 ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW12c3ggLW1mbG9hdDEyOCIgfSAqLwotKwotKy8q Ci0rICogUFIgdGFyZ2V0LzEwNDI1MwotKyAqCi0rICogVmVyaWZ5IHRoYXQgdGhlIHZhcmlvdXMg Y29udmVyc2lvbnMgdG8gYW5kIGZyb20gX19pYm0xMjggd29yay4gIFdoZW4gdGhlCi0rICogIGRl ZmF1bHQgZm9yIGxvbmcgZG91YmxlIGlzIGNoYW5nZWQgdG8gSUVFRSAxMjgtYml0LCBvcmlnaW5h bGx5IEdDQyB3b3VsZAotKyAqICBjYWxsIHRoZSBmdW5jdGlvbnMgdXNpbmcgYW4gJ2lmJyBuYW1l IGluc3RlYWQgb2YgJ3RmLgotKyAqLwotKwotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsKLStleHRl cm4gZmxvYXQgICAgICAgICAgICAgIGlibTEyOF90b19zZiAgKF9faWJtMTI4KSBfX2F0dHJpYnV0 ZV9fKChub2lubGluZSkpOwotK2V4dGVybiBkb3VibGUgICAgICAgICAgICAgaWJtMTI4X3RvX2Rm ICAoX19pYm0xMjgpIF9fYXR0cmlidXRlX18oKG5vaW5saW5lKSk7Ci0rZXh0ZXJuIGludCAgICAg ICAgICAgICAgICBpYm0xMjhfdG9fc2kgIChfX2libTEyOCkgX19hdHRyaWJ1dGVfXygobm9pbmxp bmUpKTsKLStleHRlcm4gbG9uZyBsb25nICAgICAgICAgIGlibTEyOF90b19kaSAgKF9faWJtMTI4 KSBfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpOwotK2V4dGVybiB1bnNpZ25lZCBpbnQgICAgICAg aWJtMTI4X3RvX3VzaSAoX19pYm0xMjgpIF9fYXR0cmlidXRlX18oKG5vaW5saW5lKSk7Ci0rZXh0 ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpYm0xMjhfdG9fdWRpIChfX2libTEyOCkgX19hdHRyaWJ1 dGVfXygobm9pbmxpbmUpKTsKLSsKLStleHRlcm4gX19pYm0xMjggc2ZfdG9faWJtMTI4ICAoZmxv YXQpICAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpOwotK2V4dGVybiBfX2li bTEyOCBkZl90b19pYm0xMjggIChkb3VibGUpICAgICAgICAgICAgIF9fYXR0cmlidXRlX18oKG5v aW5saW5lKSk7Ci0rZXh0ZXJuIF9faWJtMTI4IHNpX3RvX2libTEyOCAgKGludCkgICAgICAgICAg ICAgICAgX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKTsKLStleHRlcm4gX19pYm0xMjggZGlfdG9f aWJtMTI4ICAobG9uZyBsb25nKSAgICAgICAgICBfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpOwot K2V4dGVybiBfX2libTEyOCB1c2lfdG9faWJtMTI4ICh1bnNpZ25lZCBpbnQpICAgICAgIF9fYXR0 cmlidXRlX18oKG5vaW5saW5lKSk7Ci0rZXh0ZXJuIF9faWJtMTI4IHVkaV90b19pYm0xMjggKHVu c2lnbmVkIGxvbmcgbG9uZykgX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKTsKLSsKLStmbG9hdAot K2libTEyOF90b19zZiAgKF9faWJtMTI4IHgpCi0rewotKyAgcmV0dXJuIHg7Ci0rfQotKwotK2Rv dWJsZQotK2libTEyOF90b19kZiAgKF9faWJtMTI4IHgpCi0rewotKyAgcmV0dXJuIHg7Ci0rfQot KwotK2ludAotK2libTEyOF90b19zaSAgKF9faWJtMTI4IHgpCi0rewotKyAgcmV0dXJuIHg7Ci0r fQotKwotK2xvbmcgbG9uZwotK2libTEyOF90b19kaSAgKF9faWJtMTI4IHgpCi0rewotKyAgcmV0 dXJuIHg7Ci0rfQotKwotK3Vuc2lnbmVkIGludAotK2libTEyOF90b191c2kgKF9faWJtMTI4IHgp Ci0rewotKyAgcmV0dXJuIHg7Ci0rfQotKwotK3Vuc2lnbmVkIGxvbmcgbG9uZwotK2libTEyOF90 b191ZGkgKF9faWJtMTI4IHgpCi0rewotKyAgcmV0dXJuIHg7Ci0rfQotKwotK19faWJtMTI4Ci0r c2ZfdG9faWJtMTI4ICAoZmxvYXQgeCkKLSt7Ci0rICByZXR1cm4geDsKLSt9Ci0rCi0rX19pYm0x MjgKLStkZl90b19pYm0xMjggIChkb3VibGUgeCkKLSt7Ci0rICByZXR1cm4geDsKLSt9Ci0rCi0r X19pYm0xMjgKLStzaV90b19pYm0xMjggIChpbnQgeCkKLSt7Ci0rICByZXR1cm4geDsKLSt9Ci0r Ci0rX19pYm0xMjgKLStkaV90b19pYm0xMjggIChsb25nIGxvbmcgeCkKLSt7Ci0rICByZXR1cm4g eDsKLSt9Ci0rCi0rX19pYm0xMjgKLSt1c2lfdG9faWJtMTI4ICh1bnNpZ25lZCBpbnQgeCkKLSt7 Ci0rICByZXR1cm4geDsKLSt9Ci0rCi0rX19pYm0xMjgKLSt1ZGlfdG9faWJtMTI4ICh1bnNpZ25l ZCBsb25nIGxvbmcgeCkKLSt7Ci0rICByZXR1cm4geDsKLSt9Ci0rCi0rdm9sYXRpbGUgZmxvYXQJ CQlzZXZlbl9zZgk9IDcuMGY7Ci0rdm9sYXRpbGUgZG91YmxlCQkJc2V2ZW5fZGYJPSA3LjA7Ci0r dm9sYXRpbGUgaW50CQkJc2V2ZW5fc2kJPSA3OwotK3ZvbGF0aWxlIGxvbmcgbG9uZwkJc2V2ZW5f ZGkJPSA3TEw7Ci0rdm9sYXRpbGUgdW5zaWduZWQgaW50CQlzZXZlbl91c2kJPSA3VTsKLSt2b2xh dGlsZSB1bnNpZ25lZCBsb25nIGxvbmcJc2V2ZW5fdWRpCT0gN1VMTDsKLSt2b2xhdGlsZSBfX2li bTEyOAkJc2V2ZW5faWJtMTI4CT0gNy4wOwotKwotK2ludAotK21haW4gKHZvaWQpCi0rewotKyAg aWYgKHNldmVuX2libTEyOCAhPSBzZl90b19pYm0xMjggKHNldmVuX3NmKSkKLSsgICAgYWJvcnQg KCk7Ci0rCi0rICBpZiAoc2V2ZW5faWJtMTI4ICE9IGRmX3RvX2libTEyOCAoc2V2ZW5fZGYpKQot KyAgICBhYm9ydCAoKTsKLSsKLSsgIGlmIChzZXZlbl9pYm0xMjggIT0gc2lfdG9faWJtMTI4IChz ZXZlbl9zaSkpCi0rICAgIGFib3J0ICgpOwotKwotKyAgaWYgKHNldmVuX2libTEyOCAhPSBkaV90 b19pYm0xMjggKHNldmVuX2RpKSkKLSsgICAgYWJvcnQgKCk7Ci0rCi0rICBpZiAoc2V2ZW5faWJt MTI4ICE9IHVzaV90b19pYm0xMjggKHNldmVuX3VzaSkpCi0rICAgIGFib3J0ICgpOwotKwotKyAg aWYgKHNldmVuX2libTEyOCAhPSB1ZGlfdG9faWJtMTI4IChzZXZlbl91ZGkpKQotKyAgICBhYm9y dCAoKTsKLSsKLSsgIGlmIChzZXZlbl9zZiAhPSBpYm0xMjhfdG9fc2YgKHNldmVuX2libTEyOCkp Ci0rICAgIGFib3J0ICgpOwotKwotKyAgaWYgKHNldmVuX2RmICE9IGlibTEyOF90b19kZiAoc2V2 ZW5faWJtMTI4KSkKLSsgICAgYWJvcnQgKCk7Ci0rCi0rICBpZiAoc2V2ZW5fc2kgIT0gaWJtMTI4 X3RvX3NpIChzZXZlbl9pYm0xMjgpKQotKyAgICBhYm9ydCAoKTsKLSsKLSsgIGlmIChzZXZlbl9k aSAhPSBpYm0xMjhfdG9fZGkgKHNldmVuX2libTEyOCkpCi0rICAgIGFib3J0ICgpOwotKwotKyAg aWYgKHNldmVuX3VzaSAhPSBpYm0xMjhfdG9fdXNpIChzZXZlbl9pYm0xMjgpKQotKyAgICBhYm9y dCAoKTsKLSsKLSsgIGlmIChzZXZlbl91ZGkgIT0gaWJtMTI4X3RvX3VkaSAoc2V2ZW5faWJtMTI4 KSkKLSsgICAgYWJvcnQgKCk7Ci0rCi0rICByZXR1cm4gMDsKLSt9CgpkaWZmIC0tZ2l0IGEvc291 cmNlcyBiL3NvdXJjZXMKaW5kZXggMTgxOWNmMy4uODczMDNkMCAxMDA2NDQKLS0tIGEvc291cmNl cworKysgYi9zb3VyY2VzCkBAIC0xLDQgKzEsNCBAQAotU0hBNTEyIChnY2MtMTIuMC4xLTIwMjIw MjE0LnRhci54eikgPSBhNmY1OTBiOWZhY2YyYzgwZWM3M2Q0MWNjZDViY2Q0MDQ3MjJiNzZmN2Zm MDZkODJmMzBiOGI5NTYzNDlkZjRlZmEwNDliNzIyODViZTFhNzZkYTUyZTg1MWVmMzI3YjhmZTQy ZDA1ZWE3ZTYyMTQ5YjJhNDIzNjYxMWE4MzU1ZgorU0hBNTEyIChnY2MtMTIuMC4xLTIwMjIwMjIy LnRhci54eikgPSA3MDQyNmJhYjQ4M2RmOGRkY2M1OGY4MGY3MDljMDg3Y2IzYzllNDk5MmRkYjkx MGRjNTU5ODZmYmY4YTBhYTQwNjdmNDAxZTNjMmZhZDFlN2E1ZDc4MzJlMThkM2YyNDMxNmNjZDdh MThkYjY2MDEwNTlhNGI0NjMyNWM2YTg5OQogU0hBNTEyIChpc2wtMC4xOC50YXIuYnoyKSA9IDg1 ZDBiNDBmNGRiZjE0Y2I5OWQxN2FhMDcwNDhjZGNhYjJkYzNlYjUyN2QyZmJiMWU4NGM0MWIyZGU1 ZjM1MTAyNTM3MGU1NzQ0OGI2M2IyYjhhOGNmOGEwODQzYTA4OWMzMjYzZjliYWVlMTU0MmQ1YzJl MWNiMzdlZDM5ZDk0CiBTSEE1MTIgKG5ld2xpYi1jeWd3aW4tNTBlMmE2M2IwNGJkZDAxODQ4NDYw NWZiYjk1NGZkMWJkNTE0N2ZhMC50YXIueHopID0gMDAyYTQ4YTdiNjg5YTgxYWJiZjE2MTYxYmNh ZWMwMDFhODQyZTY3ZGZiZTM3MmU5ZTEwOTA5MjcwM2JmYzY2NjY3NWYxNjE5OGY2MGNhNDI5Mzcw ZTg4NTBkNTY0NTQ3ZGM1MDVkZjgxYmMzYWFjYTRjZTZkZWZiYzAxNGFkNmMKIFNIQTUxMiAobnZw dHgtdG9vbHMtNWY2ZjM0M2EzMDJkNjIwYjA4NjhlZGFiMzc2YzAwYjE1NzQxZTM5ZS50YXIueHop ID0gZjZkMTBkYjk0ZmExNTcwYWUwZjk0ZGYwNzNmYTNjNzNjOGU1ZWUxNmQ1OTA3MGI1M2Q5NGY3 ZGIwZGU4YTAzMWJjNDRkN2YzZjE4NTI1MzNkYTA0YjYyNWNlNzU4ZTAyMjI2Mzg1NWVkNDNjZmM2 ODY3ZTA3MDhkMDAxZTUzYzcK