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: Kaleb S. KEITHLEY To: git-commits@fedoraproject.org Subject: [rpms/libntirpc] rawhide: Merge remote-tracking branch 'origin/f44' into rawhide Date: Sat, 13 Jun 2026 11:57:14 GMT Message-ID: <178135183454.1.1152664249994545731.rpms-libntirpc-f48821ac2651@fedoraproject.org> List-ID: X-Git-Repo: rpms/libntirpc X-Git-Branch: rawhide X-Git-Rev: f48821ac26517060520c79deaeff2ba11d9f231b QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvbGlibnRpcnBjCkJy YW5jaCA6IHJhd2hpZGUKQ29tbWl0IDogZjQ4ODIxYWMyNjUxNzA2MDUyMGM3OWRlYWVmZjJiYTEx ZDlmMjMxYgpBdXRob3IgOiBLYWxlYiBTLiBLRUlUSExFWSA8a2tlaXRobGVAcmVkaGF0LmNvbT4K RGF0ZSAgIDogMjAyNi0wNi0xM1QwNzo1Njo1OS0wNDowMApTdGF0cyAgOiArMjgyMi8tMTIgaW4g NCBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvbGli bnRpcnBjL2MvZjQ4ODIxYWMyNjUxNzA2MDUyMGM3OWRlYWVmZjJiYTExZDlmMjMxYj9icmFuY2g9 cmF3aGlkZQoKTG9nOgpNZXJnZSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoICdvcmlnaW4vZjQ0JyBp bnRvIHJhd2hpZGUKCi0tLQpkaWZmIC0tZ2l0IGEvMDAwMS1DTWFrZUxpc3RzLnR4dC5wYXRjaCBi LzAwMDEtQ01ha2VMaXN0cy50eHQucGF0Y2gKaW5kZXggYjEyYzg0Yy4uY2NhMzdjYyAxMDA2NDQK LS0tIGEvMDAwMS1DTWFrZUxpc3RzLnR4dC5wYXRjaAorKysgYi8wMDAxLUNNYWtlTGlzdHMudHh0 LnBhdGNoCkBAIC0xLDEyICsxLDExIEBACiAtLS0gbnRpcnBjLTcuMi9DTWFrZUxpc3RzLnR4dC5v cmlnCTIwMjYtMDMtMTggMTE6MjQ6MDAuMTI1NzE2MDY0IC0wNDAwCiArKysgbnRpcnBjLTcuMi9D TWFrZUxpc3RzLnR4dAkyMDI2LTAzLTE4IDExOjQ1OjQwLjM1OTQ3MDQzNiAtMDQwMAotQEAgLTIs NyArMiw4IEBACitAQCAtMiw3ICsyLDcgQEAKICAKICAjIEN1cnJlbnQgdmVyc2lvbiBhcyBvZiBG ZWRvcmEgMTYuICBOb3QgdGVzdGVkIHdpdGggZWFybGllci4KICAKIC1jbWFrZV9taW5pbXVtX3Jl cXVpcmVkKFZFUlNJT04gMi42LjMpCi0rY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDMu Ni4wKQotK2NtYWtlX3BvbGljeShTRVQgQ01QMDE3NSBPTEQpCisrY21ha2VfbWluaW11bV9yZXF1 aXJlZChWRVJTSU9OIDMuNS4wLi4uNC4wKQogIAogIHNldChDTUFLRV9NT0RVTEVfUEFUSCAke0NN QUtFX01PRFVMRV9QQVRIfSAiJHtDTUFLRV9TT1VSQ0VfRElSfS9jbWFrZS9tb2R1bGVzLyIpCiAg CgpkaWZmIC0tZ2l0IGEvMDAwMi03LjJwbHVzLnBhdGNoIGIvMDAwMi03LjJwbHVzLnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3ZTBlN2UKLS0tIC9kZXYvbnVsbAor KysgYi8wMDAyLTcuMnBsdXMucGF0Y2gKQEAgLTAsMCArMSwyNzkyIEBACitkaWZmIC11ciBudGly cGMtNy4yL0NNYWtlTGlzdHMudHh0IG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdl ZTEyOTc4MjU2YmQxL0NNYWtlTGlzdHMudHh0CistLS0gbnRpcnBjLTcuMi9DTWFrZUxpc3RzLnR4 dAkyMDI2LTAzLTE4IDExOjQ1OjQwLjM1OTQ3MDQzNiAtMDQwMAorKysrIG50aXJwYy01Yzc2MWJi MTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL0NNYWtlTGlzdHMudHh0CTIwMjYtMDUt MTggMTk6NDA6MjAuMDAwMDAwMDAwIC0wNDAwCitAQCAtMzcsMTggKzM3LDcgQEAKKyAKKyBzZXQo Q01BS0VfUE9TSVRJT05fSU5ERVBFTkRFTlRfQ09ERSBPTikKKyAKKy0jIEluc3RhbGwgZGVzdGlu YXRpb24sIGlmIGJ1aWx0IHN0YW5kYWxvbmUKKy1nZXRfcHJvcGVydHkoVVNFX0xJQjY0IEdMT0JB TCBQUk9QRVJUWSBGSU5EX0xJQlJBUllfVVNFX0xJQjY0X1BBVEhTKQorLWlmIChVU0VfTElCNjQp CistCXNldChMSUJfSU5TVEFMTF9ESVIgbGliNjQgQ0FDSEUgUEFUSAorLQkJIlNwZWNpZnkgbmFt ZSBvZiBsaWJkaXIgaW5zaWRlIGluc3RhbGwgcGF0aCIpCistZWxzZSAoVVNFX0xJQjY0KQorLQlz ZXQoTElCX0lOU1RBTExfRElSIGxpYiBDQUNIRSBQQVRICistCQkiU3BlY2lmeSBuYW1lIG9mIGxp YmRpciBpbnNpZGUgaW5zdGFsbCBwYXRoIikKKy1lbmRpZiAoVVNFX0xJQjY0KQorLQorLXNldChT WVNURU1fTElCUkFSSUVTICR7U1lTVEVNX0xJQlJBUklFU30pCistc2V0KEJJTkFSWV9MSUJSQVJJ RVMgJHtCSU5BUllfTElCUkFSSUVTfSkKKytpbmNsdWRlKEdOVUluc3RhbGxEaXJzKQorIAorIGlu Y2x1ZGUoR2V0R2l0UmV2aXNpb25EZXNjcmlwdGlvbikKKyBnZXRfZ2l0X2hlYWRfcmV2aXNpb24o R0lUX1JFRlNQRUMgX0dJVF9IRUFEX0NPTU1JVCkKK0BAIC0zMTcsMjEgKzMwNiwxOSBAQAorIGVu ZGlmIChOT1QgVEFSR0VUIGRpc3QpCisgCisgaWYgKE5PVCBUQVJHRVQgcnBtKQorLWFkZF9jdXN0 b21fdGFyZ2V0KCBycG0gREVQRU5EUyBkaXN0KQorLWFkZF9jdXN0b21fY29tbWFuZChUQVJHRVQg cnBtCisrYWRkX2N1c3RvbV90YXJnZXQoIHJwbQorICAgICAgICAgICAgICAgICAgIENPTU1BTkQg c2ggLWMgInJwbWJ1aWxkIC10YSAke1BLR19OQU1FfSIKKyAJCSAgVkVSQkFUSU0KKyAJCSAgREVQ RU5EUyBkaXN0KQorIAorIHNldChSUE1ERVNUICItLWRlZmluZSAnX3NyY3JwbWRpciAke0NNQUtF X0NVUlJFTlRfQklOQVJZX0RJUn0nIikKKy1hZGRfY3VzdG9tX3RhcmdldCggc3JwbSBERVBFTkRT IGRpc3QpCistYWRkX2N1c3RvbV9jb21tYW5kKFRBUkdFVCBzcnBtCisrYWRkX2N1c3RvbV90YXJn ZXQoIHNycG0KKyAgICAgICAgICAgICAgICAgICBDT01NQU5EIHNoIC1jICJycG1idWlsZCAke1JQ TURFU1R9IC10cyAke1BLR19OQU1FfSIKKyAJCSAgVkVSQkFUSU0KKyAJCSAgREVQRU5EUyBkaXN0 KQorIGVuZGlmIChOT1QgVEFSR0VUIHJwbSkKKyAjIyMjIyMjIyMjIyBpbnN0YWxsIGZpbGVzICMj IyMjIyMjIyMjIyMjIworIAorLWluc3RhbGwoRklMRVMgICR7UFJPSkVDVF9CSU5BUllfRElSfS9s aWJudGlycGMucGMgREVTVElOQVRJT04gJHtMSUJfSU5TVEFMTF9ESVJ9L3BrZ2NvbmZpZykKKy1p bnN0YWxsKERJUkVDVE9SWSAgJHtOVElSUENfQkFTRV9ESVJ9L250aXJwYyBERVNUSU5BVElPTiBp bmNsdWRlKQorLWluc3RhbGwoRklMRVMgICR7UFJPSkVDVF9CSU5BUllfRElSfS9udGlycGMvdmVy c2lvbi5oIERFU1RJTkFUSU9OIGluY2x1ZGUvbnRpcnBjKQorK2luc3RhbGwoRklMRVMgICR7UFJP SkVDVF9CSU5BUllfRElSfS9saWJudGlycGMucGMgREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxM X0xJQkRJUn0vcGtnY29uZmlnKQorK2luc3RhbGwoRElSRUNUT1JZICAke05USVJQQ19CQVNFX0RJ Un0vbnRpcnBjIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9JTkNMVURFRElSfSkKKytpbnN0 YWxsKEZJTEVTICAke1BST0pFQ1RfQklOQVJZX0RJUn0vbnRpcnBjL3ZlcnNpb24uaCBERVNUSU5B VElPTiAke0NNQUtFX0lOU1RBTExfSU5DTFVERURJUn0vbnRpcnBjKQorT25seSBpbiBudGlycGMt Ny4yOiBDTWFrZUxpc3RzLnR4dC5vcmlnCitPbmx5IGluIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNm OGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxOiAuZ2l0aHViCitkaWZmIC11ciBudGlycGMtNy4yL2xp Ym50aXJwYy5wYy5pbi5jbWFrZSBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUx Mjk3ODI1NmJkMS9saWJudGlycGMucGMuaW4uY21ha2UKKy0tLSBudGlycGMtNy4yL2xpYm50aXJw Yy5wYy5pbi5jbWFrZQkyMDI1LTA5LTIzIDEwOjA1OjE5LjAwMDAwMDAwMCAtMDQwMAorKysrIG50 aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL2xpYm50aXJwYy5w Yy5pbi5jbWFrZQkyMDI2LTA1LTE4IDE5OjQwOjIwLjAwMDAwMDAwMCAtMDQwMAorQEAgLTEsNiAr MSw2IEBACisgcHJlZml4PUBDTUFLRV9JTlNUQUxMX1BSRUZJWEAKKyBleGVjX3ByZWZpeD0ke3By ZWZpeH0KKy1saWJkaXI9JHtwcmVmaXh9L0BMSUJfSU5TVEFMTF9ESVJACisrbGliZGlyPSR7cHJl Zml4fS9AQ01BS0VfSU5TVEFMTF9MSUJESVJACisgaW5jbHVkZWRpcj0ke3ByZWZpeH0vaW5jbHVk ZS9udGlycGMKKyAKKyBOYW1lOiBsaWJudGlycGMKK2RpZmYgLXVyIG50aXJwYy03LjIvbnRpcnBj L2x0dG5nL250aXJwY190cmFjZXMuaCBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3 ZWUxMjk3ODI1NmJkMS9udGlycGMvbHR0bmcvbnRpcnBjX3RyYWNlcy5oCistLS0gbnRpcnBjLTcu Mi9udGlycGMvbHR0bmcvbnRpcnBjX3RyYWNlcy5oCTIwMjUtMDktMjMgMTA6MDU6MTkuMDAwMDAw MDAwIC0wNDAwCisrKysgbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5Nzgy NTZiZDEvbnRpcnBjL2x0dG5nL250aXJwY190cmFjZXMuaAkyMDI2LTA1LTE4IDE5OjQwOjIwLjAw MDAwMDAwMCAtMDQwMAorQEAgLTMyLDYgKzMyLDEyIEBACisgI2RlZmluZSBfX1MyKHgpIF9fUzEo eCkKKyAjZGVmaW5lIExJTkVfQVNfU1RSSU5HIF9fUzIoX19MSU5FX18pCisgCisrI2lmbmRlZiBV TlVTRUQKKysjZGVmaW5lIFVOVVNFRF9BVFRSIF9fYXR0cmlidXRlX18oKHVudXNlZCkpCisrI2Rl ZmluZSBVTlVTRUQoLi4uKSBVTlVTRURfKF9fVkFfQVJHU19fKQorKyNkZWZpbmUgVU5VU0VEXyhh cmcpIE5PVF9VU0VEXyMjYXJnIFVOVVNFRF9BVFRSCisrI2VuZGlmCisrCisgI2lmZGVmIFVTRV9M VFROR19OVElSUEMKKyAKKyAjaW5jbHVkZSAibHR0bmdfZ2VuZXJhdG9yLmgiCitAQCAtNTcsNyAr NjMsNyBAQAorIAorIC8qIFdlIGNhbGwgdGhlIGVtcHR5IGZ1bmN0aW9uIHdpdGggdGhlIHZhcmlh YmxlIGFyZ3MgdG8gYXZvaWQgdW51c2VkIHZhcmlhYmxlcworICAqIHdhcm5pbmcgd2hlbiBMVFRO RyB0cmFjZXMgYXJlIGRpc2FibGVkICovCistc3RhdGljIHZvaWQgaW5saW5lIG50aXJwY19lbXB0 eV9mdW5jdGlvbihjb25zdCBjaGFyKiB1bnVzZWQsIC4uLikge30KKytzdGF0aWMgdm9pZCBpbmxp bmUgbnRpcnBjX2VtcHR5X2Z1bmN0aW9uKGNvbnN0IGNoYXIqIFVOVVNFRCh1bnVzZWQpLCAuLi4p IHt9CisgCisgI2RlZmluZSBOVElSUENfQVVUT19UUkFDRVBPSU5UKHByb3ZfbmFtZSwgZXZlbnRf bmFtZSwgbG9nX2xldmVsLCAuLi4pIFwKKyAJCW50aXJwY19lbXB0eV9mdW5jdGlvbigidW51c2Vk IiwgIyNfX1ZBX0FSR1NfXykKK0BAIC03NCw0ICs4MCw0IEBACisgI2VuZGlmIC8qIFRQX0lOVF9B UlIgKi8KKyAKKyAjZW5kaWYgLy8gVVNFX0xUVE5HX05USVJQQworLSNlbmRpZiAvLyBfX05USVJQ Q19UUkFDRVNfSF9fCitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKysjZW5kaWYgLy8gX19O VElSUENfVFJBQ0VTX0hfXworZGlmZiAtdXIgbnRpcnBjLTcuMi9udGlycGMvcnBjL2NsbnQuaCBu dGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9udGlycGMvcnBj L2NsbnQuaAorLS0tIG50aXJwYy03LjIvbnRpcnBjL3JwYy9jbG50LmgJMjAyNS0wOS0yMyAxMDow NToxOS4wMDAwMDAwMDAgLTA0MDAKKysrKyBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3 MzQ3ZWUxMjk3ODI1NmJkMS9udGlycGMvcnBjL2NsbnQuaAkyMDI2LTA1LTE4IDE5OjQwOjIwLjAw MDAwMDAwMCAtMDQwMAorQEAgLTExNSw2ICsxMTUsNyBAQAorIAltdXRleF90IGNsX2xvY2s7CS8q IHNlcmlhbGl6ZSBwcml2YXRlIGRhdGEgKi8KKyAJc3RydWN0IHJwY19lcnIgY2xfZXJyb3I7IC8q IHNwZWNpZmljIGVycm9yIGNvZGUgKi8KKyAJaW50MzJfdCBjbF9yZWZjbnQ7CS8qIGhhbmRsZSBy ZWZlcmVuY2UgY291bnQgKi8KKysJYm9vbCByZG1hX2NsbnQ7CQkvKiB0cmFuc3BvcnQgcmRtYSAq LworIAl1aW50MTZfdCBjbF9mbGFnczsJLyogc3RhdGUgZmxhZ3MgKi8KKyAKKyB9IENMSUVOVDsK K0BAIC00ODksNiArNDkwLDExIEBACisgCQkJCWNvbnN0IHJwY3Byb2dfdCwgY29uc3QgcnBjdmVy c190LAorIAkJCQljb25zdCB1X2ludCwgY29uc3QgdV9pbnQsIGNvbnN0IHVpbnQzMl90KTsKKyAK KytDTElFTlQgKgorK2NsbnRfcmRtYV9jcmVhdGUoaW50IGZkLCBjaGFyICpob3N0LCBpbnQgcG9y dCwgaW50IHJlY3Zfc3osCisrICAgIGludCBzZW5kX3N6LCBpbnQgcGFnZV9zeiwgY29uc3QgcnBj cHJvZ190IHByb2csCisrICAgIGNvbnN0IHJwY3ZlcnNfdCB2ZXJzLCBjb25zdCB1aW50MzJfdCBm bGFncyk7CisrCisgc3RhdGljIGlubGluZSBDTElFTlQgKgorIGNsbnRfdmNfbmNyZWF0ZShjb25z dCBpbnQgZmQsIGNvbnN0IHN0cnVjdCBuZXRidWYgKnJhZGRyLAorIAkJY29uc3QgcnBjcHJvZ190 IHByb2csIGNvbnN0IHJwY3ZlcnNfdCB2ZXJzLAorQEAgLTUwMyw2ICs1MDksOSBAQAorICAqLwor IGV4dGVybiBDTElFTlQgKmNsbnRfdmNfbmNyZWF0ZV9zdmMoY29uc3QgU1ZDWFBSVCAqLCBjb25z dCBycGNwcm9nX3QsCisgCQkJCSAgIGNvbnN0IHJwY3ZlcnNfdCwgY29uc3QgdWludDMyX3QpOwor KworK2V4dGVybiBDTElFTlQgKmNsbnRfcmRtYV9uY3JlYXRlZihjb25zdCBTVkNYUFJUICosIGNv bnN0IHJwY3Byb2dfdCwKKysJCQkJICBjb25zdCBycGN2ZXJzX3QsIGNvbnN0IHVpbnQzMl90LCBi b29sKTsKKyAvKgorICAqICAgICAgY29uc3QgU1ZDWFBSVCAqeHBydDsgICAgICAgICAgICAgICAg ICAgIC0tIGFjdGl2ZSBzZXJ2aWNlIHhwcnQKKyAgKiAgICAgIGNvbnN0IHJwY3Byb2dfdCBwcm9n OyAgICAgICAgICAgICAgICAgICAtLSBSUEMgcHJvZ3JhbSBudW1iZXIKK2RpZmYgLXVyIG50aXJw Yy03LjIvbnRpcnBjL3JwYy9oYXByb3h5LmggbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3 NzM0N2VlMTI5NzgyNTZiZDEvbnRpcnBjL3JwYy9oYXByb3h5LmgKKy0tLSBudGlycGMtNy4yL250 aXJwYy9ycGMvaGFwcm94eS5oCTIwMjUtMDktMjMgMTA6MDU6MTkuMDAwMDAwMDAwIC0wNDAwCisr KysgbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvbnRpcnBj L3JwYy9oYXByb3h5LmgJMjAyNi0wNS0xOCAxOTo0MDoyMC4wMDAwMDAwMDAgLTA0MDAKK0BAIC0z MCw2ICszMCwxMyBAQAorIAorICNpbmNsdWRlICJjb25maWcuaCIKKyAKKysvKiBBZGRpbmcgbWFj cm8gZm9yIGNvbXBhdGliaWx0eSBvZiBjKysgY29tcGlsYXRpb24gKi8KKysjaWZkZWYgX19jcGx1 c3BsdXMKKysjaWZuZGVmIF9TdGF0aWNfYXNzZXJ0CisrI2RlZmluZSBfU3RhdGljX2Fzc2VydCBz dGF0aWNfYXNzZXJ0CisrI2VuZGlmCisrI2VuZGlmCisrCisgI2lmbmRlZiBfTlRJUlBDX1JQQ19I QVBST1hZX0gKKyAjZGVmaW5lIF9OVElSUENfUlBDX0hBUFJPWFlfSAorIAorQEAgLTEyMiw2ICsx MjksNyBAQAorIAl1aW50MTZfdCBzcmNfcG9ydDsKKyAJdWludDE2X3QgZHN0X3BvcnQ7CisgfTsK KysKKyBfU3RhdGljX2Fzc2VydCgKKyAJc2l6ZW9mKHN0cnVjdCBwcm94eV9oZWFkZXJfYWRkcl9p cDRfcGFydCkgPT0gUFAyX0FERFJfTEVOX0lORVQsCisgCSJwcm94eV9oZWFkZXJfYWRkcl9pcDRf cGFydCBzaXplIGlzIG5vdCBlcXVhbCB0byBQUDJfQUREUl9MRU5fSU5FVCIpOworQEAgLTEzMiw2 ICsxNDAsNyBAQAorIAl1aW50MTZfdCBzcmNfcG9ydDsKKyAJdWludDE2X3QgZHN0X3BvcnQ7Cisg fTsKKysKKyBfU3RhdGljX2Fzc2VydCgKKyAJc2l6ZW9mKHN0cnVjdCBwcm94eV9oZWFkZXJfYWRk cl9pcDZfcGFydCkgPT0gUFAyX0FERFJfTEVOX0lORVQ2LAorIAkicHJveHlfaGVhZGVyX2FkZHJf aXA2X3BhcnQgc2l6ZSBpcyBub3QgZXF1YWwgdG8gUFAyX0FERFJfTEVOX0lORVQ2Iik7CitkaWZm IC11ciBudGlycGMtNy4yL250aXJwYy9ycGMvc3ZjLmggbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4 YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvbnRpcnBjL3JwYy9zdmMuaAorLS0tIG50aXJwYy03LjIv bnRpcnBjL3JwYy9zdmMuaAkyMDI1LTA5LTIzIDEwOjA1OjE5LjAwMDAwMDAwMCAtMDQwMAorKysr IG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL250aXJwYy9y cGMvc3ZjLmgJMjAyNi0wNS0xOCAxOTo0MDoyMC4wMDAwMDAwMDAgLTA0MDAKK0BAIC0xODAsNiAr MTgwLDcgQEAKKyAjZGVmaW5lIFNWQ19YUFJUX0ZMQUdfUkVNT1RFX0FERFJfU0VUCTB4MDIwMAkv KiByZW1vdGUgYWRkciB3YXMgZmluYWwgc2V0ICovCisgI2RlZmluZSBTVkNfWFBSVF9GTEFHX1JF QURZCQkweDA0MDAJLyogcmVhZHkgdG8gdXNlICovCisgI2RlZmluZSBTVkNfWFBSVF9GTEFHX0lP UV9XUklUSU5HCTB4MDgwMAkvKiB4cHJ0IGlzIHVzZWQgYnkgc3ZjX2lvcV93cml0ZSAqLworKyNk ZWZpbmUgU1ZDX1hQUlRfRkxBR19OT19TRVQJCTB4MTAwMCAgLyogZG8gbm90IHJlZ2lzdGVyIHdp dGggcnBjYmluZCAqLworIAorICNkZWZpbmUgU1ZDX1hQUlRfRkxBR19ERVNUUk9ZRUQgKFNWQ19Y UFJUX0ZMQUdfREVTVFJPWUlORyBcCisgCQkJCXwgU1ZDX1hQUlRfRkxBR19SRUxFQVNJTkcpCitA QCAtMjcyLDcgKzI3MywxMSBAQAorIAkJc3RydWN0IHsKKyAJCQlzdmNfcmVxX2Z1bl90IHByb2Nl c3NfY2I7CisgCQkJc3ZjX3hwcnRfZnVuX3QgcmVtb3RlX2FkZHJfc2V0X2NiOworKyNpZmRlZiBf X2NwbHVzcGx1cworKwkJfWNvbm5lY3Rpb25fZGlzcGF0Y2hfb3BzOworKyNlbHNlCisgCQl9Owor KyNlbmRpZgorIAkJc3ZjX3hwcnRfZnVuX3QgcmVuZGV6dm91c19jYjsKKyAJfSAgeHBfZGlzcGF0 Y2g7CisgCVNWQ1hQUlQgKnhwX3BhcmVudDsKK0BAIC0zMTUsNiArMzIwLDggQEAKKyAJaW50IHhw X2lmaW5kZXg7CQkvKiBpbnRlcmZhY2UgaW5kZXggKi8KKyAJaW50IHhwX3NpX3R5cGU7CQkvKiBz aSB0eXBlICovCisgCWludCB4cF90eXBlOwkJLyogeHBydCB0eXBlICovCisrCWNoYXIgKnhwX2lw OwkJLyogcmVtb3RlIGlwICovCisrCWludCB4cF9wb3J0OwkJLyogcmVtb3RlIHBvcnQgKi8KKyAK KyAJaW50MzJfdCB4cF9yZWZjbnQ7CS8qIGhhbmRsZSByZWZlcmVuY2UgY291bnQgKi8KKyAJdWlu dDE2X3QgeHBfZmxhZ3M7CS8qIGZsYWdzICovCitAQCAtMzI3LDYgKzMzNCwxMCBAQAorIAkJc3Ry dWN0IGluNl9wa3RpbmZvIGluNjsKKyAjZW5kaWYKKyAJfSB4cF9wa3RpbmZvOworKworKwkvKiBD bGllbnQgZGV0YWlscyAtIElQIEFkZHJlc3MgJiBQb3J0ICovCisrCWNoYXIgeHBfY2xudF9hZGRy W0lORVQ2X0FERFJTVFJMRU5dOworKwl1aW50MTZfdCB4cF9jbG50X3BvcnQ7CisgfTsKKyAKKyAj ZGVmaW5lIFhQUlRfRk1UICJ4cHJ0OiBbcHRyID0ge30sZmxhZ3MgPSB7fSxmZCA9IHt9LHR5cGUg PSB7fSxyZWZjbnQgPSB7fV0iCitkaWZmIC11ciBudGlycGMtNy4yL250aXJwYy9ycGMveGRyLmgg bnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvbnRpcnBjL3Jw Yy94ZHIuaAorLS0tIG50aXJwYy03LjIvbnRpcnBjL3JwYy94ZHIuaAkyMDI1LTA5LTIzIDEwOjA1 OjE5LjAwMDAwMDAwMCAtMDQwMAorKysrIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzcz NDdlZTEyOTc4MjU2YmQxL250aXJwYy9ycGMveGRyLmgJMjAyNi0wNS0xOCAxOTo0MDoyMC4wMDAw MDAwMDAgLTA0MDAKK0BAIC0xMjMsNyArMTIzLDcgQEAKKyAJVklPX0RBVEEsICAgICAgICAgICAg ICAgLyogZGF0YSBidWZmZXIgKi8KKyAJVklPX1RSQUlMRVJfTEVOLAkvKiBsZW5ndGggZmllbGQg Zm9yIGZvbGxvd2luZyBUUkFJTEVSIGJ1ZmZlciAqLworIAlWSU9fVFJBSUxFUiwgICAgICAgICAg ICAvKiB0cmFpbGVyIGJ1ZmZlciBhZnRlciBkYXRhICovCistfSB2aW9fdHlwZTsKKyt9IHZpb190 eXBlX3Q7CisgCisgLyogWERSIGJ1ZmZlciB2ZWN0b3IgZGVzY3JpcHRvcnMgKi8KKyB0eXBlZGVm IHN0cnVjdCB4ZHJfdmlvIHsKK0BAIC0xMzMsNyArMTMzLDcgQEAKKyAJdWludDhfdCAqdmlvX3dy YXA7CS8qIG1heGltdW0gdmlvX3RhaWwgKi8KKyAJdWludDMyX3QgdmlvX2xlbmd0aDsJLyogbGVu Z3RoIG9mIGJ1ZmZlciwgdXNlZCBmb3IgdmVjdG9yCisgCQkJCSAgIHByZS1hbGxvY2F0aW9uICov CistCXZpb190eXBlIHZpb190eXBlOwkvKiB0eXBlIG9mIGJ1ZmZlciAqLyAgIAorKwl2aW9fdHlw ZV90IHZpb190eXBlOwkvKiB0eXBlIG9mIGJ1ZmZlciAqLyAgIAorIH0geGRyX3ZpbzsKKyAKKyAv KiB2aW9fd3JhcCA+PSB2aW9fdGFpbCA+PSB2aW9faGVhZCA+PSB2aW9fYmFzZSAqLworQEAgLTE2 Miw3ICsxNjIsMTEgQEAKKyAJCQkJICogMDogbm90IGFsbG9jYXRlZCAqLworIAl1X2ludAl1aW9f ZmxhZ3M7CisgCWludDMyX3QgdWlvX3JlZmVyZW5jZXM7CisrI2lmZGVmIF9fY3BsdXNwbHVzCisr CXhkcl92aW8gdWlvX3Zpb1sxXTsKKysjZWxzZQorIAl4ZHJfdmlvCXVpb192aW9bMF07CS8qIGFw cGVuZGVkIHZlY3RvcnMgKi8KKysjZW5kaWYKKyB9IHhkcl91aW87CisgCisgLyogT3AgZmxhZ3Mg Ki8KK2RpZmYgLXVyIG50aXJwYy03LjIvbnRpcnBjL3JwYy94ZHJfaW5saW5lLmggbnRpcnBjLTVj NzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvbnRpcnBjL3JwYy94ZHJfaW5s aW5lLmgKKy0tLSBudGlycGMtNy4yL250aXJwYy9ycGMveGRyX2lubGluZS5oCTIwMjUtMDktMjMg MTA6MDU6MTkuMDAwMDAwMDAwIC0wNDAwCisrKysgbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTVi YWI3NzM0N2VlMTI5NzgyNTZiZDEvbnRpcnBjL3JwYy94ZHJfaW5saW5lLmgJMjAyNi0wNS0xOCAx OTo0MDoyMC4wMDAwMDAwMDAgLTA0MDAKK0BAIC01Miw2ICs1MiwxNyBAQAorICNpbmNsdWRlIDxy cGMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8cnBjL3hkci5oPgorIAorKyNpZmRlZiBfX2NwbHVzcGx1 cworK2V4dGVybiAiQyIgeworKyNlbmRpZgorKworKyNpZm5kZWYgVU5VU0VECisrI2RlZmluZSBV TlVTRURfQVRUUiBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKQorKyNkZWZpbmUgVU5VU0VEKC4uLikg VU5VU0VEXyhfX1ZBX0FSR1NfXykKKysjZGVmaW5lIFVOVVNFRF8oYXJnKSBOT1RfVVNFRF8jI2Fy ZyBVTlVTRURfQVRUUgorKyNlbmRpZgorKworKworIC8qCisgICogWERSIGludGVnZXJzCisgICov CitAQCAtNjM5LDcgKzY1MCw3IEBACisgfQorIAorIHN0YXRpYyBpbmxpbmUgYm9vbAorLXhkcl9i eXRlc19mcmVlKFhEUiAqeGRycywgY2hhciAqKmNwcCwgc2l6ZV90IHNpemUpCisreGRyX2J5dGVz X2ZyZWUoWERSICpVTlVTRUQoeGRycyksIGNoYXIgKipjcHAsIHNpemVfdCBzaXplKQorIHsKKyAJ aWYgKCpjcHApIHsKKyAJCW1lbV9mcmVlKCpjcHAsIHNpemUpOworQEAgLTg0MCw3ICs4NTEsNyBA QAorIH0KKyAKKyBzdGF0aWMgaW5saW5lIGJvb2wKKy14ZHJfYXJyYXlfZnJlZShYRFIgKnhkcnMs IGNoYXIgKipjcHAsIHVfaW50ICpzaXplcCwgdV9pbnQgbWF4c2l6ZSwKKyt4ZHJfYXJyYXlfZnJl ZShYRFIgKnhkcnMsIGNoYXIgKipjcHAsIHVfaW50ICpzaXplcCwgdV9pbnQgVU5VU0VEKG1heHNp emUpLAorIAkgICAgICAgdV9pbnQgc2VsZW0sIHhkcnByb2NfdCB4ZHJfZWxlbSkKKyB7CisgCWNo YXIgKnRhcmdldCA9ICpjcHA7CitAQCAtOTkzLDcgKzEwMDQsNyBAQAorIH0KKyAKKyBzdGF0aWMg aW5saW5lIGJvb2wKKy14ZHJfc3RyaW5nX2ZyZWUoWERSICp4ZHJzLCBjaGFyICoqY3BwKQorK3hk cl9zdHJpbmdfZnJlZShYRFIgKlVOVVNFRCh4ZHJzKSwgY2hhciAqKmNwcCkKKyB7CisgCWlmICgq Y3BwKSB7CisgCQltZW1fZnJlZSgqY3BwLCBzdHJsZW4oKmNwcCkgKyAxKTsKK0BAIC0xMDY0LDQg KzEwNzUsOCBAQAorIAlyZXR1cm4gKGlubGluZV94ZHJfdV9pbnQ2NF90KHhkcnMsICh1X2ludDY0 X3QgKikgdWxscCkpOworIH0KKyAKKysjaWZkZWYgX19jcGx1c3BsdXMKKyt9CisrI2VuZGlmIC8q IGV4dGVybiAiQyIgKi8KKysKKyAjZW5kaWYJCQkJLyogX1RJUlBDX0lOTElORV9YRFJfSCAqLwor ZGlmZiAtdXIgbnRpcnBjLTcuMi9zcmMvY2xudF9nZW5lcmljLmMgbnRpcnBjLTVjNzYxYmIxODZl OWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvc3JjL2NsbnRfZ2VuZXJpYy5jCistLS0gbnRp cnBjLTcuMi9zcmMvY2xudF9nZW5lcmljLmMJMjAyNS0wOS0yMyAxMDowNToxOS4wMDAwMDAwMDAg LTA0MDAKKysrKyBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJk MS9zcmMvY2xudF9nZW5lcmljLmMJMjAyNi0wNS0xOCAxOTo0MDoyMC4wMDAwMDAwMDAgLTA0MDAK K0BAIC00NDcsMTAgKzQ0Nyw0MyBAQAorIAlyZXR1cm4gKDEpOworIH0KKyAKKysvKgorKyAqIEhl bHBlciBmdW5jdGlvbiB0byBpbnNlcnQgUkRNQSBjbGllbnQgcmVxdWVzdCBpbnRvIGNhbGxfZXhw aXJlcworKyAqLworK3N0YXRpYyB2b2lkCisrcmRtYV9jbG50X3JlcV9leHBpcmVfaW5zZXJ0KHN0 cnVjdCBjbG50X3JlcSAqY2MpCisreworKwlzdHJ1Y3QgY3hfZGF0YSAqY3ggPSBDWF9EQVRBKGNj LT5jY19jbG50KTsKKysJc3RydWN0IHJwY19kcGx4X3JlYyAqcmVjID0gY3gtPmN4X3JlYzsKKysJ c3RydWN0IG9wcl9yYnRyZWVfbm9kZSAqbnY7CisrCXN0cnVjdCB0aW1lc3BlYyB0czsKKysKKysJ LyogQ2FsY3VsYXRlIGV4cGlyYXRpb24gdGltZSAqLworKwkodm9pZCljbG9ja19nZXR0aW1lKENM T0NLX01PTk9UT05JQ19GQVNULCAmdHMpOworKwl0aW1lc3BlY2FkZCgmdHMsICZjYy0+Y2NfdGlt ZW91dCwgJnRzKTsKKysJY2MtPmNjX2V4cGlyZV9tcyA9IHRpbWVzcGVjX21zKCZ0cyk7CisrCisr CXJwY19kcGx4X3JsaShyZWMpOworKwljYy0+Y2NfZmxhZ3MgPSBDTE5UX1JFUV9GTEFHX0VYUElS SU5HOworKyByZXBlYXQ6CisrCW52ID0gb3ByX3JidHJlZV9pbnNlcnQoJnJlYy0+cmRtYV9jYWxs X2V4cGlyZXMsICZjYy0+Y2NfcnFzdCk7CisrCWlmIChudikgeworKwkJLyogYWRkIHRoaXMgc2xp Z2h0bHkgbGF0ZXIgKi8KKysJCWNjLT5jY19leHBpcmVfbXMrKzsKKysJCWdvdG8gcmVwZWF0Owor Kwl9CisrCXJwY19kcGx4X3J1aShyZWMpOworK30KKysKKyBlbnVtIGNsbnRfc3RhdAorIGNsbnRf cmVxX2NhbGxiYWNrKHN0cnVjdCBjbG50X3JlcSAqY2MpCisgeworLQlzdmNfcnFzdF9leHBpcmVf aW5zZXJ0KGNjKTsKKysJLyogQWRkIHRvIGFwcHJvcHJpYXRlIGNhbGxfZXhwaXJlcyBsaXN0IGJh c2VkIG9uIHRyYW5zcG9ydCB0eXBlICovCisrCWlmIChjYy0+Y2NfY2xudC0+cmRtYV9jbG50KSB7 CisrCQlyZG1hX2NsbnRfcmVxX2V4cGlyZV9pbnNlcnQoY2MpOworKwl9IGVsc2UgeworKwkJc3Zj X3Jxc3RfZXhwaXJlX2luc2VydChjYyk7CisrCX0KKyAKKyAJcmV0dXJuIENMTlRfQ0FMTF9PTkNF KGNjKTsKKyB9CitAQCAtNDkyLDYgKzUyNSwyMCBAQAorIAlyZXR1cm4gKFJQQ19TVUNDRVNTKTsK KyB9CisgCisrLyoKKysgKiBIZWxwZXIgZnVuY3Rpb24gdG8gcmVtb3ZlIFJETUEgY2xpZW50IHJl cXVlc3QgZnJvbSBjYWxsX2V4cGlyZXMKKysgKi8KKyt2b2lkCisrcmRtYV9jbG50X3JlcV9leHBp cmVfcmVtb3ZlKHN0cnVjdCBjbG50X3JlcSAqY2MpCisreworKwlzdHJ1Y3QgY3hfZGF0YSAqY3gg PSBDWF9EQVRBKGNjLT5jY19jbG50KTsKKysJc3RydWN0IHJwY19kcGx4X3JlYyAqcmVjID0gY3gt PmN4X3JlYzsKKysKKysJcnBjX2RwbHhfcmxpKHJlYyk7CisrCW9wcl9yYnRyZWVfcmVtb3ZlKCZy ZWMtPnJkbWFfY2FsbF9leHBpcmVzLCAmY2MtPmNjX3Jxc3QpOworKwlycGNfZHBseF9ydWkocmVj KTsKKyt9CisrCisgdm9pZAorIGNsbnRfcmVxX3Jlc2V0KHN0cnVjdCBjbG50X3JlcSAqY2MpCisg eworQEAgLTUwNSw3ICs1NTIsMTIgQEAKKyAJCQkJCSAgIENMTlRfUkVRX0ZMQUdfQUNLU1lOQyB8 CisgCQkJCQkgICBDTE5UX1JFUV9GTEFHX0VYUElSSU5HKQorIAkgICAgJiBDTE5UX1JFUV9GTEFH X0VYUElSSU5HKSB7CistCQlzdmNfcnFzdF9leHBpcmVfcmVtb3ZlKGNjKTsKKysJCS8qIFJlbW92 ZSBmcm9tIGFwcHJvcHJpYXRlIGNhbGxfZXhwaXJlcyBsaXN0IGJhc2VkIG9uIHRyYW5zcG9ydCB0 eXBlICovCisrCQlpZiAoY2MtPmNjX2NsbnQtPnJkbWFfY2xudCkgeworKwkJCXJkbWFfY2xudF9y ZXFfZXhwaXJlX3JlbW92ZShjYyk7CisrCQl9IGVsc2UgeworKwkJCXN2Y19ycXN0X2V4cGlyZV9y ZW1vdmUoY2MpOworKwkJfQorIAkJY2MtPmNjX2V4cGlyZV9tcyA9IDA7CS8qIGF0b21pYyBiYXJy aWVyKHMpICovCisgCX0KKyB9CitAQCAtNTI1LDYgKzU3Nyw3IEBACisgCWNjLT5jY19yZWZyZXNo ZXMgPSAyOworIAljYy0+Y2NfdGltZW91dCA9IHRpbWVvdXQ7CisgCisrCisgCWlmICh0aW1lb3V0 LnR2X25zZWMgPCAwIHx8IHRpbWVvdXQudHZfbnNlYyA+IDk5OTk5OTk5OQorIAkgfHwgdGltZW91 dC50dl9zZWMgPCAwKSB7CisgCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsCitAQCAt NTg1LDcgKzYzOCwxMSBAQAorIAlpZiAoYXRvbWljX3Bvc3RjbGVhcl91aW50MTZfdF9iaXRzKCZj Yy0+Y2NfZmxhZ3MsCisgCQkJCQkgICBDTE5UX1JFUV9GTEFHX0VYUElSSU5HKQorIAkgICAgJiBD TE5UX1JFUV9GTEFHX0VYUElSSU5HKSB7CistCQlzdmNfcnFzdF9leHBpcmVfcmVtb3ZlKGNjKTsK KysJCWlmIChjYy0+Y2NfY2xudC0+cmRtYV9jbG50KSB7CisrCQkJcmRtYV9jbG50X3JlcV9leHBp cmVfcmVtb3ZlKGNjKTsKKysJCX0gZWxzZSB7CisrCQkJc3ZjX3Jxc3RfZXhwaXJlX3JlbW92ZShj Yyk7CisrCQl9CisgCQljYy0+Y2NfZXhwaXJlX21zID0gMDsJLyogYXRvbWljIGJhcnJpZXIocykg Ki8KKyAJfQorIAorZGlmZiAtdXIgbnRpcnBjLTcuMi9zcmMvY2xudF9pbnRlcm5hbC5oIG50aXJw Yy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL3NyYy9jbG50X2ludGVy bmFsLmgKKy0tLSBudGlycGMtNy4yL3NyYy9jbG50X2ludGVybmFsLmgJMjAyNS0wOS0yMyAxMDow NToxOS4wMDAwMDAwMDAgLTA0MDAKKysrKyBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3 MzQ3ZWUxMjk3ODI1NmJkMS9zcmMvY2xudF9pbnRlcm5hbC5oCTIwMjYtMDUtMTggMTk6NDA6MjAu MDAwMDAwMDAwIC0wNDAwCitAQCAtNjQsNSArNjQsOSBAQAorIC8qIGluIHN2Y19ycXN0LmMgKi8K KyB2b2lkIHN2Y19ycXN0X2V4cGlyZV9pbnNlcnQoc3RydWN0IGNsbnRfcmVxICopOworIHZvaWQg c3ZjX3Jxc3RfZXhwaXJlX3JlbW92ZShzdHJ1Y3QgY2xudF9yZXEgKik7CistCisrdm9pZCBzdmNf cnFzdF9leHBpcmVfdGFzayhzdHJ1Y3Qgd29ya19wb29sX2VudHJ5ICopOworK2ludCBzdmNfcnFz dF9leHBpcmVfY21wZihjb25zdCBzdHJ1Y3Qgb3ByX3JidHJlZV9ub2RlICpsaHMsCisrCQkJIGNv bnN0IHN0cnVjdCBvcHJfcmJ0cmVlX25vZGUgKnJocyk7Cisrdm9pZCByZG1hX2NsbnRfcmVxX2V4 cGlyZV9yZW1vdmUoc3RydWN0IGNsbnRfcmVxICopOworK2Jvb2wgY2xudF9kYXRhX2lzdmFsaWQo c3RydWN0IHJwY19jbGllbnQgKik7CisgI2VuZGlmCQkJCS8qIF9DTE5UX0lOVEVSTkFMX0ggKi8K K2RpZmYgLXVyIG50aXJwYy03LjIvc3JjL2NsbnRfcmRtYS5jIG50aXJwYy01Yzc2MWJiMTg2ZTll YTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL3NyYy9jbG50X3JkbWEuYworLS0tIG50aXJwYy03 LjIvc3JjL2NsbnRfcmRtYS5jCTIwMjUtMDktMjMgMTA6MDU6MTkuMDAwMDAwMDAwIC0wNDAwCisr KysgbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvc3JjL2Ns bnRfcmRtYS5jCTIwMjYtMDUtMTggMTk6NDA6MjAuMDAwMDAwMDAwIC0wNDAwCitAQCAtNTQsNiAr NTQsNyBAQAorICNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSAicnBjX2NvbS5oIgorICNpbmNs dWRlICJjbG50X2ludGVybmFsLmgiCisrI2luY2x1ZGUgInN2Y19pbnRlcm5hbC5oIgorICNpbmNs dWRlICJycGNfcmRtYS5oIgorIAorICNkZWZpbmUgTUFYX0RFRkFVTFRfRkRTCQkgMjAwMDAKK0BA IC04OCwyOSArODksMTAxIEBACisgICogZm9sbG93ZWQgYnkgQ0xOVF9ERVNUUk9ZKCkgYXMgbmVj ZXNzYXJ5LgorICAqLworIENMSUVOVCAqCistY2xudF9yZG1hX25jcmVhdGVmKFJETUFYUFJUICpy ZG1hX3hwcnQsCQkvKiBpbml0IGJ1dCBOT1QgY29ubmVjdCgpZWQgKi8KKytjbG50X3JkbWFfbmNy ZWF0ZWYoY29uc3QgU1ZDWFBSVCAqeHBydCwJCS8qIGluaXQgYnV0IE5PVCBjb25uZWN0KCllZCAq LworIAkJICAgY29uc3QgcnBjcHJvZ190IHByb2dyYW0sCisgCQkgICBjb25zdCBycGN2ZXJzX3Qg dmVyc2lvbiwKKy0JCSAgIGNvbnN0IHVfaW50IGZsYWdzKQorKwkJICAgY29uc3QgdV9pbnQgZmxh Z3MsIGJvb2wgY3JlYXRlKQorIHsKKyAJc3RydWN0IGNtX2RhdGEgKmNtID0gY2xudF9yZG1hX2Rh dGFfemFsbG9jKCk7CisgCUNMSUVOVCAqY2wgPSAmY20tPmNtX2N4LmN4X2M7CisgCXN0cnVjdCBy cGNfbXNnIGNhbGxfbXNnOworIAlYRFIgeGRyc1sxXTsJCS8qIHRlbXAgWERSIHN0cmVhbSAqLwor IAorLQljbC0+Y2xfb3BzID0gY2xudF9yZG1hX29wcygpOworLQorLQlpZiAoIXJkbWFfeHBydCB8 fCByZG1hX3hwcnQtPnN0YXRlICE9IFJETUFYU19JTklUSUFMKSB7CistCQlfX3dhcm54KFRJUlBD X0RFQlVHX0ZMQUdfRVJST1IsCistCQkJIiVzOiAlcEAlcCBjYWxsZWQgd2l0aCBpbnZhbGlkIHRy YW5zcG9ydCBhZGRyZXNzIiwKKy0JCQlfX2Z1bmNfXywgY2wsIHJkbWFfeHBydCk7CistCQljbC0+ Y2xfZXJyb3IucmVfc3RhdHVzID0gUlBDX1VOS05PV05BRERSOworLQkJcmV0dXJuIChjbCk7Cisr CVJETUFYUFJUICpyZG1hX3hwcnQgPSBOVUxMOworKwlpZiAoY3JlYXRlKSB7CisrCQlyZG1hX3hw cnQgPSBycGNfcmRtYV9hbGxvY2F0ZSgoKFJETUFYUFJUICopeHBydCktPnhhKTsKKysJCWlmICgh cmRtYV94cHJ0KSB7CisrCQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLAorKwkJCQki JXM6IHJkbWEgYWxsb2NhdGUgZmFpbGVkIiwgX19mdW5jX18pOworKwkJCWNsLT5jbF9lcnJvci5y ZV9zdGF0dXMgPSBSUENfU1lTVEVNRVJST1I7CisrCQkJcmV0dXJuIGNsOworKwkJfQorKwl9IGVs c2UgeworKwkJcmRtYV94cHJ0ID0gKFJETUFYUFJUICopeHBydDsKKysJCXJkbWFfeHBydC0+c2hh cmVkID0gdHJ1ZTsKKysJCS8qIFRha2UgcmVmIGZvciBzaGFyZWQgeHBydCAqLworKwkJU1ZDX1JF RigmcmRtYV94cHJ0LT5zbV9kci54cHJ0LCBTVkNfUkVGX0ZMQUdfTk9ORSk7CisgCX0KKysKKyAJ Y20tPmNtX2N4LmN4X3JlYyA9ICZyZG1hX3hwcnQtPnNtX2RyOworKwljbC0+Y2xfb3BzID0gY2xu dF9yZG1hX29wcygpOworKwljbC0+cmRtYV9jbG50ID0gdHJ1ZTsKKyAKKy0JcnBjX3JkbWFfY29u bmVjdChyZG1hX3hwcnQpOworLQlycGNfcmRtYV9jb25uZWN0X2ZpbmFsaXplKHJkbWFfeHBydCk7 CisrCS8qIFRoaXMgaXMgdXNlZCB3aGVuIHdlIHdhbnQgdG8gY3JlYXRlIHNlcGVyYXRlCisrCSAq IGNvbm5lY3Rpb24gZm9yIGNhbGxiYWNrIGNoYW5uZWwuCisrCSAqIHhwcnQgd2UgYXJlIHBhc3Np bmcgaXMgZXhpc3RpbmcgY29ubmVjdGlvbiwKKysJICogc28gd2UgbmVlZCBzZXBhcmV0IGZsYWcg dG8gaW5kaWNhdGUgd2Ugd2FudCB0bworKwkgKiBjcmVhdGUgbmV3IGNvbm5lY3Rpb24gb3IgZXhp c3Rpbmcgb25lIGFzIGNhbGxiYWNrIGNoYW5uZWwuCisrCSAqIEZvciBORlN2NC4xIGl0cyBhbHdh eXMgZmFsc2UsIHNpbmNlIHdlIHdhbnQgdG8gdXNlIHNhbWUgY29ubmVjdGlvbi4gKi8KKysJaWYg KGNyZWF0ZSkgeworKwkJLyogQ29weSByZW1vdGUgaXAgKi8KKysJCXN2Y19yZG1hX29wcygmcmRt YV94cHJ0LT5zbV9kci54cHJ0KTsKKysKKysJCXJkbWFfeHBydC0+c21fZHIueHBydC54cF9pcCA9 IG1lbV9hbGxvYyhTT0NLX05BTUVfTUFYKTsKKysJCW1lbWNweShyZG1hX3hwcnQtPnNtX2RyLnhw cnQueHBfaXAsIHhwcnQtPnhwX2lwLCBTT0NLX05BTUVfTUFYKTsKKysJCXJkbWFfeHBydC0+c21f ZHIueHBydC54cF9wb3J0ID0geHBydC0+eHBfcG9ydDsKKysKKysJCV9fd2FybngoVElSUENfREVC VUdfRkxBR19SUENfUkRNQSwgIiVzOiBjcmVhdGUgcmRtYSBjbG50IGlwICVzIHBvcnQgJWQiLAor KwkJCV9fZnVuY19fLCByZG1hX3hwcnQtPnNtX2RyLnhwcnQueHBfaXAsIHJkbWFfeHBydC0+c21f ZHIueHBydC54cF9wb3J0KTsKKysKKysJCS8qIFJETUFYX0NMSUVOVCBpbmRpY2F0ZSBpcyBjbGll bnQgY29ubmVjdGlvbiBmcm9tCisrCQkgKiBzZXJ2ZXIgdG8gY2xpZW50IGlmIHdlIGFyZSBjcmVh dGluZyBuZXcgY29ubmVjdGlvbgorKwkJICogZm9yIHNlcnZlciBsaXN0ZW4gY29ubmVjdGlvbiB3 ZSB1c2UgeGEtPmJhY2tsb2cKKysJCSAqIGZvciBjbGllbnQgdG8gc2VydmVyIGNvbm5lY3Rpb24g d2UgdXNlIFJETUFYX1NFUlZFUl9DSElMRCAqLworKwkJcmRtYV94cHJ0LT5zZXJ2ZXIgPSBSRE1B WF9DTElFTlQ7CisrCisrCQlpZiAoIXJkbWFfeHBydCB8fCByZG1hX3hwcnQtPnN0YXRlICE9IFJE TUFYU19JTklUSUFMKSB7CisrCQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLAorKwkJ CQkiJXM6ICVwQCVwIGNhbGxlZCB3aXRoIGludmFsaWQgdHJhbnNwb3J0IGFkZHJlc3MiLAorKwkJ CQlfX2Z1bmNfXywgY2wsIHJkbWFfeHBydCk7CisrCQkJY2wtPmNsX2Vycm9yLnJlX3N0YXR1cyA9 IFJQQ19VTktOT1dOQUREUjsKKysJCQlyZXR1cm4gKGNsKTsKKysJCX0KKysKKysJCWlmIChycGNf cmRtYV9jb25uZWN0X3ByZXBhcmUocmRtYV94cHJ0KSkgeworKwkJCV9fd2FybngoVElSUENfREVC VUdfRkxBR19FUlJPUiwgIiVzOiBmYWlsZWQiLCBfX2Z1bmNfXyk7CisrCQkJY2wtPmNsX2Vycm9y LnJlX3N0YXR1cyA9IFJQQ19VTktOT1dOQUREUjsKKysJCQlyZXR1cm4gKGNsKTsKKysJCX0KKysK KysJCWlmIChycGNfcmRtYV9jb25uZWN0KHJkbWFfeHBydCkpIHsKKysJCQlfX3dhcm54KFRJUlBD X0RFQlVHX0ZMQUdfRVJST1IsCisrCQkJCSIlczogcmRtYSBjb25uZWN0IGZhaWxlZCIsIF9fZnVu Y19fKTsKKysJCQljbC0+Y2xfZXJyb3IucmVfc3RhdHVzID0gUlBDX1VOS05PV05BRERSOworKwkJ CXJldHVybiAoY2wpOworKwkJfQorKwkJaWYgKHJwY19yZG1hX2Nvbm5lY3RfZmluYWxpemUocmRt YV94cHJ0KSkgeworKwkJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwKKysJCQkJIiVz OiByZG1hIGNvbm5lY3QgZmluYWxpemUgZmFpbGVkIiwgX19mdW5jX18pOworKwkJCWNsLT5jbF9l cnJvci5yZV9zdGF0dXMgPSBSUENfVU5LTk9XTkFERFI7CisrCQkJcmV0dXJuIChjbCk7CisrCQl9 CisrCisrCQlzdHJ1Y3QgcnBjX2RwbHhfcmVjICpyZWMgPSBSRUNfWFBSVCh4cHJ0KTsKKysJCXJk bWFfeHBydC0+c21fZHIucmVjdnN6ID0gcmVjLT5yZWN2c3o7CisrCQlyZG1hX3hwcnQtPnNtX2Ry LnNlbmRzeiA9IHJlYy0+c2VuZHN6OworKwkJcmRtYV94cHJ0LT5zbV9kci5wYWdlc3ogPSByZWMt PnBhZ2VzejsKKysKKysJCXJkbWFfeHBydC0+c21fZHIucmVjdl9oZHJfc3ogPSByZWMtPnJlY3Zf aGRyX3N6OworKwkJcmRtYV94cHJ0LT5zbV9kci5zZW5kX2hkcl9zeiA9IHJlYy0+c2VuZF9oZHJf c3o7CisrCisrCQlpZiAoeGRyX3JkbWFfY3JlYXRlKHJkbWFfeHBydCkpIHsKKysJCQlfX3dhcm54 KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsCisrCQkJCSIlczogYnVmZmVyIGFsbG9jYXRpb24gZmFp bGVkIiwgX19mdW5jX18pOworKwkJCWNsLT5jbF9lcnJvci5yZV9zdGF0dXMgPSBSUENfU1lTVEVN RVJST1I7CisrCQkJcmV0dXJuIChjbCk7CisrCQl9CisrCX0KKyAKKyAJLyoKKyAJICogaW5pdGlh bGl6ZSBjYWxsIG1lc3NhZ2UKK0BAIC0xNjIsMjMgKzIzNSw0MiBAQAorIAkJeGRyX3JkbWFfaW9x X3V2X2ZldGNoKCZyZG1hX3hwcnQtPnNtX2RyLmlvcSwgJnJkbWFfeHBydC0+Y2JxaCwKKyAJCQkJ ICJjYWxsIGNvbnRleHQiLCAxLCBJT1FfRkxBR19OT05FKTsKKyAJc3RydWN0IHJwY19yZG1hX2Ni YyAqY2JjID0gKHN0cnVjdCBycGNfcmRtYV9jYmMgKikoX0lPUShoYXZlKSk7CisrCisrICAgICAg ICBjYmMtPnJlY3ZxLnhkcnNbMF0ueF9saWJbMV0gPQorKyAgICAgICAgY2JjLT5zZW5kcS54ZHJz WzBdLnhfbGliWzFdID0KKysgICAgICAgIGNiYy0+ZGF0YXEueGRyc1swXS54X2xpYlsxXSA9Cisr ICAgICAgICBjYmMtPmZyZWVxLnhkcnNbMF0ueF9saWJbMV0gPSByZG1hX3hwcnQ7CisrCisrICAg ICAgICBwdGhyZWFkX211dGV4X2xvY2soJnJkbWFfeHBydC0+Y2JjbGlzdC5xbXV0ZXgpOworKwor KyAgICAgICAgY2JjLT5jYWxsX2lubGluZSA9IDE7CisrICAgICAgICBjYmMtPmRhdGFfY2h1bmtf dXYgPSBOVUxMOworKyAgICAgICAgY2JjLT5yZWZjbnQgPSAxOyAvLyBTZW50aW5lbCByZWYKKysJ U1ZDX1JFRigmcmRtYV94cHJ0LT5zbV9kci54cHJ0LCBTVkNfUkVGX0ZMQUdfTk9ORSk7IC8vIGZv ciBjYmMgcmVmCisrICAgICAgICBjYmMtPmNiY19mbGFncyA9IENCQ19GTEFHX1JFTEVBU0U7Cisr ICAgICAgICBjYmMtPnJlYWRfd2FpdHMgPSAwOworKyAgICAgICAgY2JjLT53cml0ZV93YWl0cyA9 IDA7CisrICAgICAgICBjYmMtPmFjdGl2ZSA9IGZhbHNlOworKyAgICAgICAgY2JjLT5ub25fcmVn aXN0ZXJlZF9idWYgPSBOVUxMOworKyAgICAgICAgY2JjLT5ub25fcmVnaXN0ZXJlZF9idWZfbGVu ID0gMDsKKysKKysgICAgICAgIFRBSUxRX0lOU0VSVF9UQUlMKCZyZG1hX3hwcnQtPmNiY2xpc3Qu cWgsICZjYmMtPmNiY19saXN0LCBxKTsKKysgICAgICAgIHJkbWFfeHBydC0+Y2JjbGlzdC5xY291 bnQrKzsKKysgICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZyZG1hX3hwcnQtPmNiY2xpc3Qu cW11dGV4KTsKKysKKyAJWERSICp4ZHJzOworIAl1X2ludDMyX3QgKnVpbnQzMnA7CisgCistCS8q IGZyZWUgb2xkIGJ1ZmZlcnMgKHNob3VsZCBkbyBub3RoaW5nKSAqLworLQl4ZHJfaW9xX3JlbGVh c2UoJmNiYy0+cmVjdnEuaW9xX3V2LnV2cWgpOworLQl4ZHJfaW9xX3JlbGVhc2UoJmNiYy0+c2Vu ZHEuaW9xX3V2LnV2cWgpOworLQl4ZHJfcmRtYV9jYWxscShyZG1hX3hwcnQpOworLQorLQljYmMt PnJlY3ZxLnhkcnNbMF0ueF9saWJbMV0gPQorLQljYmMtPnNlbmRxLnhkcnNbMF0ueF9saWJbMV0g PSByZG1hX3hwcnQ7CisrCWNjLT5jY190aW1lb3V0LnR2X3NlYyA9IGNjLT5jY190aW1lb3V0LnR2 X25zZWMgPSAwOworIAorLQkodm9pZCkgeGRyX3JkbWFfaW9xX3V2X2ZldGNoKCZjYmMtPnNlbmRx LCAmcmRtYV94cHJ0LT5vdXRidWZzX2RhdGEudXZxaCwKKysJLyogVXNlIGhkciBidWZmZXIgc2lu Y2UgY2FsbGJhY2tzIGRvbid0IGNvbnRhaW4gZGF0YSAqLworKwkodm9pZCkgeGRyX3JkbWFfaW9x X3V2X2ZldGNoKCZjYmMtPnNlbmRxLCAmcmRtYV94cHJ0LT5vdXRidWZzX2hkci51dnFoLAorIAkJ CQkiY2FsbCBidWZmZXIiLCAxLCBJT1FfRkxBR19OT05FKTsKKyAJeGRyX2lvcV9yZXNldCgmY2Jj LT5zZW5kcSwgMCk7CisgCisgCXhkcnMgPSBjYmMtPnNlbmRxLnhkcnM7CisgCWNjLT5jY19lcnJv ci5yZV9zdGF0dXMgPSBSUENfU1VDQ0VTUzsKKysJeGRycy0+eF9vcCA9IFhEUl9FTkNPREU7Cisg CisgCW11dGV4X2xvY2soJmNsLT5jbF9sb2NrKTsKKyAJdWludDMycCA9ICh1X2ludDMyX3QgKikm Y3gtPmN4X21jYWxsY1swXTsKK0BAIC0xOTQsMTYgKzI4NiwyMCBAQAorIAkJX193YXJueChUSVJQ Q19ERUJVR19GTEFHX0NMTlRfUkRNQSwKKyAJCQkiJXM6ICVwQCVwIGZhaWxlZCIsCisgCQkJX19m dW5jX18sIGNsLCBjeC0+Y3hfcmVjKTsKKy0JCXhkcl9pb3FfcmVsZWFzZSgmY2JjLT5zZW5kcS5p b3FfdXYudXZxaCk7CisrCQljYmNfcmVsZWFzZV9pdChjYmMpOworIAkJcmV0dXJuIChSUENfQ0FO VEVOQ09ERUFSR1MpOworIAl9CisgCW11dGV4X3VubG9jaygmY2wtPmNsX2xvY2spOworIAorKwkv KiBzZW5kIHJlcXVlc3QgYW5kIHJlY3YgcmVzcG9uc2UgKi8KKyAJaWYgKCF4ZHJfcmRtYV9jbG50 X2ZsdXNob3V0KGNiYykpIHsKKysJCWNiY19yZWxlYXNlX2l0KGNiYyk7CisgCQljbC0+Y2xfZXJy b3IucmVfZXJybm8gPSBlcnJubzsKKyAJCXJldHVybiAoUlBDX0NBTlRTRU5EKTsKKyAJfQorIAor KwljYmNfcmVsZWFzZV9pdChjYmMpOworKworIAlyZXR1cm4gKFJQQ19TVUNDRVNTKTsKKyB9Cisg CitkaWZmIC11ciBudGlycGMtNy4yL3NyYy9jbG50X3ZjLmMgbnRpcnBjLTVjNzYxYmIxODZlOWVh M2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvc3JjL2NsbnRfdmMuYworLS0tIG50aXJwYy03LjIv c3JjL2NsbnRfdmMuYwkyMDI1LTA5LTIzIDEwOjA1OjE5LjAwMDAwMDAwMCAtMDQwMAorKysrIG50 aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL3NyYy9jbG50X3Zj LmMJMjAyNi0wNS0xOCAxOTo0MDoyMC4wMDAwMDAwMDAgLTA0MDAKK0BAIC03Myw2ICs3Myw5IEBA CisgI2luY2x1ZGUgInN2Y19pb3EuaCIKKyAjaW5jbHVkZSAiY2xudF9pbnRlcm5hbC5oIgorICNp bmNsdWRlICJzdmNfaW50ZXJuYWwuaCIKKysjaWZkZWYgVVNFX1JQQ19SRE1BCisrI2luY2x1ZGUg InJwY19yZG1hLmgiCisrI2VuZGlmCisgCisgc3RhdGljIGVudW0geHBydF9zdGF0IGNsbnRfdmNf cHJvY2VzcyhzdHJ1Y3Qgc3ZjX3JlcSAqcmVxKTsKKyBzdGF0aWMgc3RydWN0IGNsbnRfb3BzICpj bG50X3ZjX29wcyh2b2lkKTsKK0BAIC0xMjQsNiArMTI3LDQ5IEBACisgICogICAgICBzZXJ2ZXIg dHJhbnBzb3J0cyBzaGFyaW5nIGFuIHVuZGVybHlpbmcgYnl0ZXN0cmVhbSAoTWF0dCkuCisgICov CisgCisrI2lmZGVmIFVTRV9SUENfUkRNQQorKy8qIENyZWF0ZSBuZXcgUkRNQSBjbGllbnQgd2l0 aCBzcGVjaWZpZWQgY29ubmVjdGlvbiBwYXJhbWV0ZXJzICovCisrQ0xJRU5UICoKKytjbG50X3Jk bWFfY3JlYXRlKGludCBmZCwgY2hhciAqaG9zdCwgaW50IHBvcnQsIGludCByZWN2X3N6LCBpbnQg c2VuZF9zeiwKKysgICAgaW50IHBhZ2Vfc3osIGNvbnN0IHJwY3Byb2dfdCBwcm9nLCBjb25zdCBy cGN2ZXJzX3QgdmVycywKKysgICAgY29uc3QgdWludDMyX3QgZmxhZ3MpCisreworKwlzdHJ1Y3Qg cnBjX3JkbWFfYXR0ciB0bXBfeGEgPSB7CisrCQkuc3RhdGlzdGljc19wcmVmaXggPSBOVUxMLAor KwkJLm5vZGUgPSAiOjoiLAorKwkJLnBvcnQgPSAiMjAwNDkiLCAgICAgICAgICAgICAgICAvKiBk ZWZhdWx0IHBvcnQgMjAwNDkgKi8KKysJCS5zcV9kZXB0aCA9IDMyLCAgICAgICAgICAgICAgICAg LyogZGVmYXVsdCB3YXMgNTAgKi8KKysJCS5tYXhfc2VuZF9zZ2UgPSAzMiwgICAgICAgICAgICAg LyogbWluaW11bSAyICovCisrCQkucnFfZGVwdGggPSAzMiwgICAgICAgICAgICAgICAgIC8qIGRl ZmF1bHQgd2FzIDUwICovCisrCQkubWF4X3JlY3Zfc2dlID0gMzEsICAgICAgICAgICAgIC8qIG1p bmltdW0gMSAqLworKwkJLmJhY2tsb2cgPSAxMCwgICAgICAgICAgICAgICAgICAvKiBtaW5pbXVt IDIgKi8KKysJCS5jcmVkaXRzID0gMzAsICAgICAgICAgICAgICAgICAgLyogZGVmYXVsdCAxMCAq LworKwkJLmRlc3Ryb3lfb25fZGlzY29ubmVjdCA9IHRydWUsCisrCQkudXNlX3NycSA9IGZhbHNl LAorKwl9OworKwlzdHJ1Y3QgcnBjX3JkbWFfYXR0ciAqdXNlX3hhID0gbWVtX2FsbG9jKHNpemVv ZihzdHJ1Y3QgcnBjX3JkbWFfYXR0cikpOworKwltZW1jcHkodXNlX3hhLCAmdG1wX3hhLCBzaXpl b2Yoc3RydWN0IHJwY19yZG1hX2F0dHIpKTsKKysJU1ZDWFBSVCAqeHBydCA9IHN2Y19mZF9uY3Jl YXRlZihmZCwgc2VuZF9zeiwgcmVjdl9zeiwgZmxhZ3MpOworKwlpZiAoIXhwcnQpIHsKKysJCV9f d2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwgIiVzOiBGYWlsZWQgdG8gY3JlYXRlIHhwcnQg ZmQgJWQiLAorKwkJCV9fZnVuY19fLCBmZCk7CisrCQlyZXR1cm4gTlVMTDsKKysJfQorKwlSRE1B WFBSVCAqcmRtYV94cHJ0ID0gKFJETUFYUFJUICopeHBydDsKKysJcmRtYV94cHJ0LT54YSA9IHVz ZV94YTsKKysJc3RydWN0IHJwY19kcGx4X3JlYyAqcmVjID0gUkVDX1hQUlQoeHBydCk7CisrCXJl Yy0+cmVjdnN6ID0gUkRNQV9EQVRBX0NIVU5LX1NaOworKwlyZWMtPnNlbmRzeiA9IFJETUFfREFU QV9DSFVOS19TWjsKKysJcmVjLT5wYWdlc3ogPSBwYWdlX3N6OworKwlyZWMtPnJlY3ZfaGRyX3N6 ID0gUkRNQV9IRFJfQ0hVTktfU1o7CisrCXJlYy0+c2VuZF9oZHJfc3ogPSBSRE1BX0hEUl9DSFVO S19TWjsKKysJeHBydC0+eHBfaXAgPSBob3N0OworKwl4cHJ0LT54cF9wb3J0ID0gcG9ydDsKKysJ LyogY3JlYXRlIHJkbWFfeHBydCB1c2luZyB4cHJ0ICovCisrCXJldHVybiBjbG50X3JkbWFfbmNy ZWF0ZWYoeHBydCwgcHJvZywgdmVycywgZmxhZ3MsIHRydWUpOworK30KKysjZW5kaWYKKysKKyAv KgorICAqIENyZWF0ZSBhIGNsaWVudCBoYW5kbGUgZm9yIGEgY29ubmVjdGlvbi4KKyAgKiBEZWZh dWx0IG9wdGlvbnMgYXJlIHNldCwgd2hpY2ggdGhlIHVzZXIgY2FuIGNoYW5nZSB1c2luZyBjbG50 X2NvbnRyb2woKSdzLgorZGlmZiAtdXIgbnRpcnBjLTcuMi9zcmMvQ01ha2VMaXN0cy50eHQgbnRp cnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvc3JjL0NNYWtlTGlz dHMudHh0CistLS0gbnRpcnBjLTcuMi9zcmMvQ01ha2VMaXN0cy50eHQJMjAyNS0wOS0yMyAxMDow NToxOS4wMDAwMDAwMDAgLTA0MDAKKysrKyBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3 MzQ3ZWUxMjk3ODI1NmJkMS9zcmMvQ01ha2VMaXN0cy50eHQJMjAyNi0wNS0xOCAxOTo0MDoyMC4w MDAwMDAwMDAgLTA0MDAKK0BAIC01LDkgKzUsNiBAQAorICAgLURfR05VX1NPVVJDRQorICkKKyAK Ky0jIG9rIG9uIExpbnV4IGFuZCBGcmVlQlNEIHcvR0NDIGFuZCBjbGFuZyBjb21waWxlcnMKKy1z ZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAtZlBJQyIpCistCisgIyMjIyMjIyMj IyMgbmV4dCB0YXJnZXQgIyMjIyMjIyMjIyMjIyMjCisgCisgU0VUKG50aXJwY19jb21tb25fU1JD UworQEAgLTI3LDcgKzI0LDYgQEAKKyAgIGdldG5ldGNvbmZpZy5jCisgICBnZXRuZXRwYXRoLmMK KyAgIGdldHBlZXJlaWQuYworLSAgZ2V0cnBjZW50LmMKKyAgIG10X21pc2MuYworICAgcG1hcF9w cm90LmMKKyAgIHBtYXBfcHJvdDIuYworQEAgLTEzNiw3ICsxMzIsNyBAQAorICAgU09WRVJTSU9O ICIke05USVJQQ19NQUpPUl9WRVJTSU9OfSR7TlRJUlBDX01JTk9SX1ZFUlNJT059IgorICAgKQor IAorLWluc3RhbGwoVEFSR0VUUyBudGlycGMgREVTVElOQVRJT04gJHtMSUJfSU5TVEFMTF9ESVJ9 KQorK2luc3RhbGwoVEFSR0VUUyBudGlycGMgREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0xJ QkRJUn0pCisgCisgIyMjIyMjIyMjIyMgaW5zdGFsbCBmaWxlcyAjIyMjIyMjIyMjIyMjIyMKKyAK K2RpZmYgLXVyIG50aXJwYy03LjIvc3JjL2xpYm50aXJwYy5tYXAuaW4uY21ha2UgbnRpcnBjLTVj NzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvc3JjL2xpYm50aXJwYy5tYXAu aW4uY21ha2UKKy0tLSBudGlycGMtNy4yL3NyYy9saWJudGlycGMubWFwLmluLmNtYWtlCTIwMjUt MDktMjMgMTA6MDU6MTkuMDAwMDAwMDAwIC0wNDAwCisrKysgbnRpcnBjLTVjNzYxYmIxODZlOWVh M2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvc3JjL2xpYm50aXJwYy5tYXAuaW4uY21ha2UJMjAy Ni0wNS0xOCAxOTo0MDoyMC4wMDAwMDAwMDAgLTA0MDAKK0BAIC03MCw2ICs3MCw4IEBACisgICAg IGNsbnRfdmNfZ2V0X2NsaWVudF94cHJ0OworICAgICBjbG50X3ZjX25jcmVhdGVmOworICAgICBj bG50X3ZjX25jcmVhdGVfc3ZjOworKyAgICBjbG50X3JkbWFfY3JlYXRlOworKyAgICBjbG50X3Jk bWFfbmNyZWF0ZWY7CisgCisgICAgICMgZSoKKyAgICAgZW5kbmV0Y29uZmlnOworZGlmZiAtdXIg bnRpcnBjLTcuMi9zcmMvbHR0bmcvQ01ha2VMaXN0cy50eHQgbnRpcnBjLTVjNzYxYmIxODZlOWVh M2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvc3JjL2x0dG5nL0NNYWtlTGlzdHMudHh0CistLS0g bnRpcnBjLTcuMi9zcmMvbHR0bmcvQ01ha2VMaXN0cy50eHQJMjAyNS0wOS0yMyAxMDowNToxOS4w MDAwMDAwMDAgLTA0MDAKKysrKyBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUx Mjk3ODI1NmJkMS9zcmMvbHR0bmcvQ01ha2VMaXN0cy50eHQJMjAyNi0wNS0xOCAxOTo0MDoyMC4w MDAwMDAwMDAgLTA0MDAKK0BAIC0yMiw3ICsyMiw3IEBACisgICBTT1ZFUlNJT04gIiR7TlRJUlBD X01BSk9SX1ZFUlNJT059JHtOVElSUENfTUlOT1JfVkVSU0lPTn0iCisgKQorIAorLWluc3RhbGwo VEFSR0VUUyBudGlycGNfdHJhY2Vwb2ludHMgQ09NUE9ORU5UIHRyYWNpbmcgREVTVElOQVRJT04g JHtMSUJfSU5TVEFMTF9ESVJ9ICkKKytpbnN0YWxsKFRBUkdFVFMgbnRpcnBjX3RyYWNlcG9pbnRz IENPTVBPTkVOVCB0cmFjaW5nIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9ICkK KyAKKyBhZGRfbGlicmFyeShudGlycGNfbHR0bmcgU1RBVElDIGx0dG5nX2RlZmluZXMuYykKKyAj YWRkX3Nhbml0aXplcnMobnRpcnBjX2x0dG5nKQorZGlmZiAtdXIgbnRpcnBjLTcuMi9zcmMvbWV0 cmljc19saWJudGlycGMuaCBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3 ODI1NmJkMS9zcmMvbWV0cmljc19saWJudGlycGMuaAorLS0tIG50aXJwYy03LjIvc3JjL21ldHJp Y3NfbGlibnRpcnBjLmgJMjAyNS0wOS0yMyAxMDowNToxOS4wMDAwMDAwMDAgLTA0MDAKKysrKyBu dGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9zcmMvbWV0cmlj c19saWJudGlycGMuaAkyMDI2LTA1LTE4IDE5OjQwOjIwLjAwMDAwMDAwMCAtMDQwMAorQEAgLTMz LDYgKzMzLDcgQEAKKyAjaW5jbHVkZSA8cnBjL2F1dGhfZ3NzLmg+CisgI2VuZGlmCisgI2luY2x1 ZGUgPHJwYy9hdXRoX3N0YXQuaD4KKysjaW5jbHVkZSA8dGltZS5oPgorIAorIHR5cGVkZWYgZW51 bSBnc3Nfc3ZjX2F1dGhfc3RlcCB7CisgCVZBTElEQVRFX0FVVEhfREFUQSA9IDAsCitkaWZmIC11 ciBudGlycGMtNy4yL3NyYy9tb25pdG9yaW5nL0NNYWtlTGlzdHMudHh0IG50aXJwYy01Yzc2MWJi MTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL3NyYy9tb25pdG9yaW5nL0NNYWtlTGlz dHMudHh0CistLS0gbnRpcnBjLTcuMi9zcmMvbW9uaXRvcmluZy9DTWFrZUxpc3RzLnR4dAkyMDI1 LTA5LTIzIDEwOjA1OjE5LjAwMDAwMDAwMCAtMDQwMAorKysrIG50aXJwYy01Yzc2MWJiMTg2ZTll YTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL3NyYy9tb25pdG9yaW5nL0NNYWtlTGlzdHMudHh0 CTIwMjYtMDUtMTggMTk6NDA6MjAuMDAwMDAwMDAwIC0wNDAwCitAQCAtOCwxMyArOCwxMyBAQAor IAorIGFkZF9saWJyYXJ5KG50aXJwY21vbml0b3JpbmcgU0hBUkVEICR7bnRpcnBjbW9uaXRvcmlu Z19TUkNTfSkKKyBhZGRfc2FuaXRpemVycyhudGlycGNtb25pdG9yaW5nKQorLXNldF90YXJnZXRf cHJvcGVydGllcyhudGlycGNtb25pdG9yaW5nIFBST1BFUlRJRVMgQ09NUElMRV9GTEFHUyAiLWZQ SUMiCisrc2V0X3RhcmdldF9wcm9wZXJ0aWVzKG50aXJwY21vbml0b3JpbmcgUFJPUEVSVElFUwor ICAgVkVSU0lPTiAke05USVJQQ19WRVJTSU9OfQorICAgU09WRVJTSU9OICIke05USVJQQ19NQUpP Ul9WRVJTSU9OfSR7TlRJUlBDX01JTk9SX1ZFUlNJT059IgorICAgKQorIHRhcmdldF9pbmNsdWRl X2RpcmVjdG9yaWVzKG50aXJwY21vbml0b3JpbmcgICAgIFBSSVZBVEUgJHtDTUFLRV9DVVJSRU5U X1NPVVJDRV9ESVJ9L3Byb21ldGhldXMtY3BwLWxpdGUvY29yZS9pbmNsdWRlKQorIHNldChDTUFL RV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAtcGVkYW50aWMtZXJyb3JzIC1XZXJyb3Ig LVdhbGwgLVdleHRyYSIpCistaW5zdGFsbChUQVJHRVRTIG50aXJwY21vbml0b3JpbmcgREVTVElO QVRJT04gJHtMSUJfSU5TVEFMTF9ESVJ9KQorK2luc3RhbGwoVEFSR0VUUyBudGlycGNtb25pdG9y aW5nIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9KQorIAorICMjIyMjIyMjIyMj IGluc3RhbGwgZmlsZXMgIyMjIyMjIyMjIyMjIyMjCistaW5zdGFsbChGSUxFUyAgaW5jbHVkZS9t b25pdG9yaW5nLmggREVTVElOQVRJT04gaW5jbHVkZS9udGlycGMpCisraW5zdGFsbChGSUxFUyAg aW5jbHVkZS9tb25pdG9yaW5nLmggREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0lOQ0xVREVE SVJ9L250aXJwYykKK2RpZmYgLXVyIG50aXJwYy03LjIvc3JjL3JwY19kcGx4X2ludGVybmFsLmgg bnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvc3JjL3JwY19k cGx4X2ludGVybmFsLmgKKy0tLSBudGlycGMtNy4yL3NyYy9ycGNfZHBseF9pbnRlcm5hbC5oCTIw MjUtMDktMjMgMTA6MDU6MTkuMDAwMDAwMDAwIC0wNDAwCisrKysgbnRpcnBjLTVjNzYxYmIxODZl OWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvc3JjL3JwY19kcGx4X2ludGVybmFsLmgJMjAy Ni0wNS0xOCAxOTo0MDoyMC4wMDAwMDAwMDAgLTA0MDAKK0BAIC01Nyw2ICs1Nyw3IEBACisgCXN0 cnVjdCB4ZHJfaW9xIGlvcTsKKyAJc3RydWN0IHBvb2xxX2hlYWQgd3JpdGVxOwkvKio8IHBvb2xx IGZvciB3cml0ZSByZXF1ZXN0cyAqLworIAlzdHJ1Y3Qgb3ByX3JidHJlZSBjYWxsX3JlcGxpZXM7 CisrCXN0cnVjdCBvcHJfcmJ0cmVlIHJkbWFfY2FsbF9leHBpcmVzOwkvKio8IGNhbGwgZXhwaXJh dGlvbiB0cmVlIGZvciBSRE1BICovCisgCXN0cnVjdCBvcHJfcmJ0cmVlX25vZGUgZmRfbm9kZTsK KyAJc3RydWN0IHsKKyAJCXJwY19kcGx4X2xvY2tfdCBsb2NrOworQEAgLTExNCwxMSArMTE1LDE2 IEBACisgCWNvbmRfZGVzdHJveSgmbG9jay0+d2UuY3YpOworIH0KKyAKKysvKiBGb3J3YXJkIGRl Y2xhcmF0aW9uIGZvciBjYWxsX2V4cGlyZXMgY29tcGFyaXNvbiBmdW5jdGlvbiAqLworK2ludCBz dmNfcnFzdF9leHBpcmVfY21wZihjb25zdCBzdHJ1Y3Qgb3ByX3JidHJlZV9ub2RlICpsaHMsCisr CQkJIGNvbnN0IHN0cnVjdCBvcHJfcmJ0cmVlX25vZGUgKnJocyk7CisrCisgc3RhdGljIGlubGlu ZSB2b2lkCisgcnBjX2RwbHhfcmVjX2luaXQoc3RydWN0IHJwY19kcGx4X3JlYyAqcmVjKQorIHsK KyAJcnBjX2RwbHhfbG9ja19pbml0KCZyZWMtPnJlY3YubG9jayk7CisgCW9wcl9yYnRyZWVfaW5p dCgmcmVjLT5jYWxsX3JlcGxpZXMsIGNsbnRfcmVxX3hpZF9jbXBmKTsKKysJb3ByX3JidHJlZV9p bml0KCZyZWMtPnJkbWFfY2FsbF9leHBpcmVzLCBzdmNfcnFzdF9leHBpcmVfY21wZik7CisgCW11 dGV4X2luaXQoJnJlYy0+eHBydC54cF9sb2NrLCBOVUxMKTsKKyAJVEFJTFFfSU5JVCgmcmVjLT53 cml0ZXEucWgpOworIAltdXRleF9pbml0KCZyZWMtPndyaXRlcS5xbXV0ZXgsIE5VTEwpOworZGlm ZiAtdXIgbnRpcnBjLTcuMi9zcmMvcnBjX3JkbWEuYyBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhh NWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9zcmMvcnBjX3JkbWEuYworLS0tIG50aXJwYy03LjIvc3Jj L3JwY19yZG1hLmMJMjAyNS0wOS0yMyAxMDowNToxOS4wMDAwMDAwMDAgLTA0MDAKKysrKyBudGly cGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9zcmMvcnBjX3JkbWEu YwkyMDI2LTA1LTE4IDE5OjQwOjIwLjAwMDAwMDAwMCAtMDQwMAorQEAgLTc0LDYgKzc0LDcgQEAK KyAjaW5jbHVkZSAibWlzYy9hYnN0cmFjdF9hdG9taWMuaCIKKyAjaW5jbHVkZSAicnBjX3JkbWEu aCIKKyAjaW5jbHVkZSAic3ZjX2ludGVybmFsLmgiCisrI2luY2x1ZGUgImNsbnRfaW50ZXJuYWwu aCIKKyAKKyAjaWZkZWYgSEFWRV9WQUxHUklORF9NRU1DSEVDS19ICisgIyAgaW5jbHVkZSA8dmFs Z3JpbmQvbWVtY2hlY2suaD4KK0BAIC0zMjksNyArMzMwLDcgQEAKKyAJaW50IGNsZWFudXBfY291 bnQgPSAwOworIAlzdHJ1Y3QgcG9vbHFfaGVhZCAqaW9xaCA9ICZyZG1hX3hwcnQtPmNiY2xpc3Q7 CisgCistCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwgIiVzKCkgYmVmb3JlIGNsZWFu dXAgIgorKwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEsICIlcygpIGJlZm9yZSBj bGVhbnVwICIKKyAJICAgICIlcCB4cF9yZWZjbnQgJWQgYWN0aXZlIHJlcXVlc3RzICVkIHFjb3Vu dCAlZCIsCisgCSAgICBfX2Z1bmNfXywgJnJkbWFfeHBydC0+c21fZHIueHBydCwKKyAJICAgIHJk bWFfeHBydC0+c21fZHIueHBydC54cF9yZWZjbnQsIHJkbWFfeHBydC0+YWN0aXZlX3JlcXVlc3Rz LAorQEAgLTM3Niw3ICszNzcsNyBAQAorIAkJCQljYmNfcmVsZWFzZSA9IHRydWU7CisgCQkJCWNi Y19yZWxlYXNlX2NvdW50ID0gY2JjLT53cml0ZV93YWl0czsKKyAKKy0JCQkJX193YXJueChUSVJQ Q19ERUJVR19GTEFHX0VWRU5ULCAiJXMgYWN0aXZlIGNiYyAlcCAiCisrCQkJCV9fd2FybngoVElS UENfREVCVUdfRkxBR19SUENfUkRNQSwgIiVzIGFjdGl2ZSBjYmMgJXAgIgorIAkJCQkgICAgImNi Y19yZWYgJWQgcmVhZF93YWl0cyAlZCB3cml0ZV93YWl0cyAlZCAiCisgCQkJCSAgICAiYWN0aXZl IHJlcXVlc3RzICVkIHJkbWFfeHBydCAlcCIsCisgCQkJCSAgICBfX2Z1bmNfXywgY2JjLCBjYmMt PnJlZmNudCwgY2JjLT5yZWFkX3dhaXRzLAorQEAgLTM4Niw3ICszODcsNyBAQAorIAorIAkJCWlm ICghY2JjX3JlbGVhc2UpIHsKKyAJCQkJLyogUGVuZGluZyByZXF1ZXN0IHNob3VsZCBjbGVhbnVw IHRoaXMgY2JjICovCistCQkJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwgIiVzIGFj dGl2ZSBjYmMgJXAgIgorKwkJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEsICIl cyBhY3RpdmUgY2JjICVwICIKKyAJCQkJICAgICJjYmNfcmVmICVkIHJlYWRfd2FpdHMgJWQgd3Jp dGVfd2FpdHMgJWQgIgorIAkJCQkgICAgImFjdGl2ZSByZXF1ZXN0cyAlZCByZG1hX3hwcnQgJXAi LAorIAkJCQkgICAgX19mdW5jX18sIGNiYywgY2JjLT5yZWZjbnQsIGNiYy0+cmVhZF93YWl0cywK K0BAIC00MTcsNyArNDE4LDcgQEAKKyAKKyAJcHRocmVhZF9tdXRleF91bmxvY2soJmlvcWgtPnFt dXRleCk7CisgCistCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwgIiVzKCkgYWZ0ZXIg Y2xlYW51cCAiCisrCV9fd2FybngoVElSUENfREVCVUdfRkxBR19SUENfUkRNQSwgIiVzKCkgYWZ0 ZXIgY2xlYW51cCAiCisgCSAgICAiJXAgeHBfcmVmY250ICVkIGFjdGl2ZSByZXF1ZXN0cyAlZCBj bGVhbnVwIGNvdW50ICVkICIKKyAJICAgICJxY291bnQgJWQiLAorIAkgICAgX19mdW5jX18sICZy ZG1hX3hwcnQtPnNtX2RyLnhwcnQsCitAQCAtNTE1LDcgKzUxNiw3IEBACisgCisgCQlycGNfcmRt YV9zdGF0ZS5jcV90aHJlYWRfaWRzW3JwY19yZG1hX3N0YXRlLmNxX3RocmVhZF9jb3VudF0gPSB0 aHJpZDsKKyAKKy0JCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwKKysJCV9fd2Fybngo VElSUENfREVCVUdfRkxBR19SUENfUkRNQSwKKyAJCQkiJXMoKSB0aHJlYWQgJWx4IHNwYXduZWQg Zm9yIGVwb2xsICVkIiwKKyAJCQlfX2Z1bmNfXywKKyAJCQkodW5zaWduZWQgbG9uZyl0aHJpZCwK K0BAIC02NjEsNyArNjYyLDcgQEAKKyAJCXJldHVybiByYzsKKyAJfQorIAorLQlfX3dhcm54KFRJ UlBDX0RFQlVHX0ZMQUdfRVZFTlQsCisrCV9fd2FybngoVElSUENfREVCVUdfRkxBR19SUENfUkRN QSwKKyAJCSIlcDpycGNfcmRtYV9mZF9hZGQgZmQ6JWQgZXBvbGxmZDolZCIsCisgCQlwdGhyZWFk X3NlbGYoKSwgZmQsIGVwb2xsZmQpOworIAorQEAgLTY3MSw3ICs2NzIsNyBAQAorIGludAorIHJw Y19yZG1hX2ZkX2RlbChpbnQgZmQsIGludCBlcG9sbGZkKQorIHsKKy0JX193YXJueChUSVJQQ19E RUJVR19GTEFHX0VWRU5ULAorKwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEsCisg CQkiJXA6cnBjX3JkbWFfZmRfZGVsIGZkOiVkIGVwb2xsZmQ6JWQiLAorIAkJcHRocmVhZF9zZWxm KCksIGZkLCBlcG9sbGZkKTsKKyAKK0BAIC04NDQsOCArODQ1LDggQEAKKyAgKgorICAqIEByZXR1 cm4gMCBvbiBzdWNjZXNzLCB3b3JrIGNvbXBsZXRpb24gc3RhdHVzIGlmIG5vdCAwCisgICovCist c3RhdGljIGludAorLXJwY19yZG1hX2NxX2V2ZW50X2hhbmRsZXIoUkRNQVhQUlQgKnJkbWFfeHBy dCkKKytpbnQKKytycGNfcmRtYV9jcV9ldmVudF9oYW5kbGVyKFJETUFYUFJUICpyZG1hX3hwcnQs IGludCBleHBlY3RlZF9wb2xsX2NvdW50KQorIHsKKyAJc3RydWN0IGlidl93YyB3Y1tJQlZfUE9M TF9FVkVOVFNdOworIAlzdHJ1Y3QgaWJ2X2NxICpldl9jcTsKK0BAIC04NTgsNiArODU5LDkgQEAK KyAJdWludDMyX3QgbGVuOworIAlpbnQgcG9sbF9jb3VudCA9IElCVl9QT0xMX0NPVU5UOworIAor KwlpZiAoZXhwZWN0ZWRfcG9sbF9jb3VudCkKKysJCXBvbGxfY291bnQgPSBleHBlY3RlZF9wb2xs X2NvdW50OworKworIAlyYyA9IGlidl9nZXRfY3FfZXZlbnQocmRtYV94cHJ0LT5jb21wX2NoYW5u ZWwsICZldl9jcSwgJmV2X2N0eCk7CisgCWlmIChyYykgeworIAkJcmMgPSBlcnJubzsKK0BAIC0x MDQ3LDYgKzEwNTEsNTYgQEAKKyB9CisgCisgLyoqCisrICogcnBjX3JkbWFfcHJvY2Vzc190cmFu c3BvcnRfZXhwaXJlczogcHJvY2VzcyBleHBpcmVkIGNsaWVudCByZXF1ZXN0cyBmb3IgYSBzcGVj aWZpYyBSRE1BIHRyYW5zcG9ydAorKyAqIFNpbWlsYXIgdG8gdGhlIGNhbGxfZXhwaXJlcyBwcm9j ZXNzaW5nIGluIHN2Y19ycXN0X2Vwb2xsX2xvb3AKKysgKgorKyAqIEBwYXJhbVtJTl0gcmRtYV94 cHJ0IFJETUEgdHJhbnNwb3J0IHRvIHByb2Nlc3MKKysgKiBAcGFyYW1bSU5dIGV4cGlyZV9tcyBj dXJyZW50IHRpbWUgaW4gbWlsbGlzZWNvbmRzCisrICogQHBhcmFtW0lOT1VUXSB0aW1lb3V0X21z IHBvaW50ZXIgdG8gdGltZW91dCB2YWx1ZSB0byBiZSB1cGRhdGVkCisrICovCisrc3RhdGljIHZv aWQKKytycGNfcmRtYV9wcm9jZXNzX3RyYW5zcG9ydF9leHBpcmVzKFJETUFYUFJUICpyZG1hX3hw cnQsIGludCBleHBpcmVfbXMsIGludCAqdGltZW91dF9tcykKKyt7CisrCXN0cnVjdCBjbG50X3Jl cSAqY2M7CisrCXN0cnVjdCBvcHJfcmJ0cmVlX25vZGUgKm5fbm9kZTsKKysJc3RydWN0IHJwY19k cGx4X3JlYyAqcmVjOworKwlpbnQgbWluX3RpbWVvdXQgPSAqdGltZW91dF9tczsKKysKKysJaWYg KCFyZG1hX3hwcnQpCisrCQlyZXR1cm47CisrCisrCXJlYyA9ICZyZG1hX3hwcnQtPnNtX2RyOwor KworKwkvKiBQcm9jZXNzIHJkbWFfY2FsbF9leHBpcmVzIGZvciB0aGlzIHRyYW5zcG9ydCAtIHNp bWlsYXIgdG8gc3ZjX3Jxc3RfZXBvbGxfbG9vcCAqLworKwlycGNfZHBseF9ybGkocmVjKTsKKysJ d2hpbGUgKChuX25vZGUgPSBvcHJfcmJ0cmVlX2ZpcnN0KCZyZWMtPnJkbWFfY2FsbF9leHBpcmVz KSkpIHsKKysJCWNjID0gb3ByX2NvbnRhaW5lcm9mKG5fbm9kZSwgc3RydWN0IGNsbnRfcmVxLCBj Y19ycXN0KTsKKysKKysJCWlmIChjYy0+Y2NfZXhwaXJlX21zID4gZXhwaXJlX21zKSB7CisrCQkJ aW50IHRyYW5zcG9ydF90aW1lb3V0ID0gY2MtPmNjX2V4cGlyZV9tcyAtIGV4cGlyZV9tczsKKysJ CQlpZiAodHJhbnNwb3J0X3RpbWVvdXQgPCBtaW5fdGltZW91dCkgeworKwkJCQltaW5fdGltZW91 dCA9IHRyYW5zcG9ydF90aW1lb3V0OworKwkJCX0KKysJCQlicmVhazsKKysJCX0KKysKKysJCS8q IG9yZGVyIGRlcGVuZGVudCAqLworKwkJYXRvbWljX2NsZWFyX3VpbnQxNl90X2JpdHMoJmNjLT5j Y19mbGFncywKKysJCQkJCSAgIENMTlRfUkVRX0ZMQUdfRVhQSVJJTkcpOworKwkJb3ByX3JidHJl ZV9yZW1vdmUoJnJlYy0+cmRtYV9jYWxsX2V4cGlyZXMsICZjYy0+Y2NfcnFzdCk7CisrCQljYy0+ Y2NfZXhwaXJlX21zID0gMDsJLyogYXRvbWljIGJhcnJpZXIocykgKi8KKysKKysJCWF0b21pY19p bmNfdWludDMyX3QoJmNjLT5jY19yZWZjbnQpOworKwkJY2MtPmNjX3dwZS5mdW4gPSBzdmNfcnFz dF9leHBpcmVfdGFzazsKKysJCWNjLT5jY193cGUuYXJnID0gTlVMTDsKKysJCXdvcmtfcG9vbF9z dWJtaXQoJnN2Y193b3JrX3Bvb2wsICZjYy0+Y2Nfd3BlKTsKKysJfQorKwlycGNfZHBseF9ydWko cmVjKTsKKysKKysJKnRpbWVvdXRfbXMgPSBtaW5fdGltZW91dDsKKyt9CisrCisrLyoqCisgICog cnBjX3JkbWFfY3FfdGhyZWFkOiB0aHJlYWQgZnVuY3Rpb24gd2hpY2ggd2FpdHMgZm9yIG5ldyBj b21wbGV0aW9uIGV2ZW50cworICAqIGFuZCBnaXZlcyB0aGVtIHRvIGhhbmRsZXIgKHRoZW4gYWNr IHRoZSBldmVudCkKKyAgKgorQEAgLTEwNTYsMjQgKzExMTAsMzAgQEAKKyB7CisgCVJETUFYUFJU ICpyZG1hX3hwcnQ7CisgCXN0cnVjdCBlcG9sbF9ldmVudCBlcG9sbF9ldmVudHNbRVBPTExfRVZF TlRTXTsKKysJc3RydWN0IHRpbWVzcGVjIHRzOworKwlpbnQgdGltZW91dF9tczsKKysJaW50IGV4 cGlyZV9tczsKKyAJaW50IGk7CisgCWludCBuOworIAlpbnQgcmM7CisgCWludCBlcG9sbGZkID0g KigoaW50ICopIGFyZyk7CisgCistCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwKKy0J CSIlcCwgU3RhcnRpbmcgcnBjX3JkbWFfY3FfdGhyZWFkIGVwb2xsZmQ6JWQiLAorLQkJcHRocmVh ZF9zZWxmKCksIGVwb2xsZmQpOworLQorLQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQs CisrCV9fd2FybngoVElSUENfREVCVUdfRkxBR19SUENfUkRNQSwKKyAJCSIlcCwgU3RhcnRpbmcg cnBjX3JkbWFfY3FfdGhyZWFkIGVwb2xsZmQ6JWQiLAorIAkJcHRocmVhZF9zZWxmKCksIGVwb2xs ZmQpOworIAorIAlyY3VfcmVnaXN0ZXJfdGhyZWFkKCk7CisgCisgCXdoaWxlIChycGNfcmRtYV9z dGF0ZS5ydW5fY291bnQgPiAwKSB7CisrCQl0aW1lb3V0X21zID0gRVBPTExfV0FJVF9NUzsKKysK KysJCS8qIFByb2Nlc3MgY2FsbF9leHBpcmVzIGZvciBSRE1BIHRyYW5zcG9ydHMgKi8KKysJCS8q IGNvYXJzZSBuc2VjLCBub3Qgc3lzdGVtIHRpbWUgKi8KKysJCSh2b2lkKWNsb2NrX2dldHRpbWUo Q0xPQ0tfTU9OT1RPTklDX0ZBU1QsICZ0cyk7CisrCQlleHBpcmVfbXMgPSB0aW1lc3BlY19tcygm dHMpOworKworIAkJbiA9IGVwb2xsX3dhaXQoZXBvbGxmZCwKKy0JCQkJZXBvbGxfZXZlbnRzLCBF UE9MTF9FVkVOVFMsIEVQT0xMX1dBSVRfTVMpOworKwkJCQllcG9sbF9ldmVudHMsIEVQT0xMX0VW RU5UUywgdGltZW91dF9tcyk7CisgCQlpZiAobiA9PSAwKQorIAkJCWNvbnRpbnVlOworIAorQEAg LTEwOTgsNiArMTE1OCw5IEBACisgCQkJCWNvbnRpbnVlOworIAkJCX0KKyAKKysJCQkvKiBQcm9j ZXNzIGNhbGxfZXhwaXJlcyBmb3IgdGhpcyBSRE1BIHRyYW5zcG9ydCAqLworKwkJCXJwY19yZG1h X3Byb2Nlc3NfdHJhbnNwb3J0X2V4cGlyZXMocmRtYV94cHJ0LCBleHBpcmVfbXMsICZ0aW1lb3V0 X21zKTsKKysKKyAJCQlpZiAoZXBvbGxfZXZlbnRzW2ldLmV2ZW50cyA9PSBFUE9MTEVSUgorIAkJ CSB8fCBlcG9sbF9ldmVudHNbaV0uZXZlbnRzID09IEVQT0xMSFVQKSB7CisgCQkJCV9fd2Fybngo VElSUENfREVCVUdfRkxBR19FUlJPUiwKK0BAIC0xMTE2LDcgKzExNzksNyBAQAorIAorIAkJCW11 dGV4X2xvY2soJnJkbWFfeHBydC0+Y21fbG9jayk7CisgCistCQkJcmMgPSBycGNfcmRtYV9jcV9l dmVudF9oYW5kbGVyKHJkbWFfeHBydCk7CisrCQkJcmMgPSBycGNfcmRtYV9jcV9ldmVudF9oYW5k bGVyKHJkbWFfeHBydCwgMCk7CisgCQkJaWYgKHJjKSB7CisgCQkJCVNWQ19ERVNUUk9ZKCZyZG1h X3hwcnQtPnNtX2RyLnhwcnQpOworIAkJCX0KK0BAIC0xMTYxLDcgKzEyMjQsNyBAQAorIAorIAlz d2l0Y2ggKGV2ZW50LT5ldmVudCkgeworIAljYXNlIFJETUFfQ01fRVZFTlRfQUREUl9SRVNPTFZF RDoKKy0JCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwKKysJCV9fd2FybngoVElSUENf REVCVUdfRkxBR19SUENfUkRNQSwKKyAJCQkiJXMoKSAlcCBBRERSX1JFU09MVkVEIiwKKyAJCQlf X2Z1bmNfXywgcmRtYV94cHJ0KTsKKyAJCW11dGV4X2xvY2soJnJkbWFfeHBydC0+Y21fbG9jayk7 CitAQCAtMTE3MSw3ICsxMjM0LDcgQEAKKyAJCWJyZWFrOworIAorIAljYXNlIFJETUFfQ01fRVZF TlRfUk9VVEVfUkVTT0xWRUQ6CistCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsCisr CQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEsCisgCQkJIiVzKCkgJXAgUk9VVEVf UkVTT0xWRUQiLAorIAkJCV9fZnVuY19fLCByZG1hX3hwcnQpOworIAkJbXV0ZXhfbG9jaygmcmRt YV94cHJ0LT5jbV9sb2NrKTsKK0BAIC0xMTgxLDI2ICsxMjQ0LDI4IEBACisgCQlicmVhazsKKyAK KyAJY2FzZSBSRE1BX0NNX0VWRU5UX0VTVEFCTElTSEVEOgorLQkJX193YXJueChUSVJQQ19ERUJV R19GTEFHX0VWRU5ULAorKwkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQQ19SRE1BLAorIAkJ CSIlcygpICVwIEVTVEFCTElTSEVEIiwKKyAJCQlfX2Z1bmNfXywgcmRtYV94cHJ0KTsKKyAKKyAJ CXJkbWFfeHBydC0+c3RhdGUgPSBSRE1BWFNfQ09OTkVDVEVEOworIAorLQkJaW50IGNxX2ZkID0g cmRtYV94cHJ0LT5jb21wX2NoYW5uZWwtPmZkOworLQkJaW50IGNxX3RocmVhZF9pbmRleCA9IGNx X2ZkICUgTlVNX0NRX0VQT0xMX1RIUkVBRFM7CistCQlyYyA9IHJwY19yZG1hX2ZkX2FkZChyZG1h X3hwcnQsIGNxX2ZkLAorKwkJaWYgKHJkbWFfeHBydC0+c2VydmVyKSB7CisrCQkJaW50IGNxX2Zk ID0gcmRtYV94cHJ0LT5jb21wX2NoYW5uZWwtPmZkOworKwkJCWludCBjcV90aHJlYWRfaW5kZXgg PSBjcV9mZCAlIE5VTV9DUV9FUE9MTF9USFJFQURTOworKwkJCXJjID0gcnBjX3JkbWFfZmRfYWRk KHJkbWFfeHBydCwgY3FfZmQsCisgCQkJCSAgICAgcnBjX3JkbWFfc3RhdGUuY3FfZXBvbGxmZFtj cV90aHJlYWRfaW5kZXhdKTsKKy0JCWlmIChyYykgeworLQkJCV9fd2FybngoVElSUENfREVCVUdf RkxBR19FUlJPUiwKKy0JCQkJIiVzOiV1IEVSUk9SIChyZXR1cm4pIiwKKy0JCQkJX19mdW5jX18s IF9fTElORV9fKTsKKysJCQlpZiAocmMpIHsKKysJCQkJX193YXJueChUSVJQQ19ERUJVR19GTEFH X0VSUk9SLAorKwkJCQkJIiVzOiV1IEVSUk9SIChyZXR1cm4pIiwKKysJCQkJCV9fZnVuY19fLCBf X0xJTkVfXyk7CisrCQkJfQorKwkJCXJwY19yZG1hX3N0YXRzX2FkZChyZG1hX3hwcnQpOworIAkJ fQorLQkJcnBjX3JkbWFfc3RhdHNfYWRkKHJkbWFfeHBydCk7CisgCQlicmVhazsKKyAKKyAJY2Fz ZSBSRE1BX0NNX0VWRU5UX0NPTk5FQ1RfUkVRVUVTVDoKKy0JCV9fd2FybngoVElSUENfREVCVUdf RkxBR19FVkVOVCwKKysJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19SUENfUkRNQSwKKyAJCQki JXMoKSAlcCBDT05ORUNUX1JFUVVFU1QiLAorIAkJCV9fZnVuY19fLCByZG1hX3hwcnQpOworIAkJ cnBjX3JkbWFfc3RhdGUuY19yLmlkX3F1ZXVlWzBdID0gY21faWQ7CitAQCAtMTIyMyw3ICsxMjg4 LDcgQEAKKyAJCWJyZWFrOworIAorIAljYXNlIFJETUFfQ01fRVZFTlRfRElTQ09OTkVDVEVEOgor LQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAorKwkJX193YXJueChUSVJQQ19ERUJV R19GTEFHX1JQQ19SRE1BLAorIAkJCSIlcygpICVwWyV1XSBESVNDT05ORUNUIEVWRU5ULi4uIiwK KyAJCQlfX2Z1bmNfXywgcmRtYV94cHJ0LCByZG1hX3hwcnQtPnN0YXRlKTsKKyAKK0BAIC0xMjMy LDE0ICsxMjk3LDE0IEBACisgCQlicmVhazsKKyAKKyAJY2FzZSBSRE1BX0NNX0VWRU5UX0RFVklD RV9SRU1PVkFMOgorLQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAorKwkJX193YXJu eChUSVJQQ19ERUJVR19GTEFHX1JQQ19SRE1BLAorIAkJCSIlcygpICVwWyV1XSBjbWEgZGV0ZWN0 ZWQgZGV2aWNlIHJlbW92YWwhISEhIiwKKyAJCQlfX2Z1bmNfXywgcmRtYV94cHJ0LCByZG1hX3hw cnQtPnN0YXRlKTsKKyAJCXJjID0gRU5PREVWOworIAkJYnJlYWs7CisgCisgCWNhc2UgUkRNQV9D TV9FVkVOVF9USU1FV0FJVF9FWElUOgorLQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5U LAorKwkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQQ19SRE1BLAorIAkJICAgICIlcygpICVw WyV1XSBSRE1BX0NNX0VWRU5UX1RJTUVXQUlUX0VYSVQiLAorIAkJICAgIF9fZnVuY19fLCByZG1h X3hwcnQsIHJkbWFfeHBydC0+c3RhdGUpOworIAorQEAgLTEzNTIsNiArMTQxNyw0MSBAQAorIAlw dGhyZWFkX2V4aXQoTlVMTCk7CisgfQorIAorKy8qIEhhbmRsZSBSRE1BIGNvbm5lY3Rpb24gbWFu YWdlciBldmVudHMgc3luY2hyb25vdXNseSAqLworK2ludAorK3JwY19yZG1hX2NtX2V2ZW50X2hh bmRsZXJfaW5saW5lKFJETUFYUFJUICpyZG1hX3hwcnQsIGludCBleHBlY3RlZF9ldmVudCkKKyt7 CisrCWludCByYyA9IDA7CisrCXN0cnVjdCByZG1hX2NtX2V2ZW50ICpldmVudCA9IE5VTEw7Cisr CisrCXJjID0gcmRtYV9nZXRfY21fZXZlbnQocmRtYV94cHJ0LT5ldmVudF9jaGFubmVsLCAmZXZl bnQpOworKwlpZiAocmMpIHsKKysJCXJjID0gZXJybm87CisrCQlfX3dhcm54KFRJUlBDX0RFQlVH X0ZMQUdfRVJST1IsICIlczogcmRtYSBnZXQgZXZlbnQgZmFpbGVkIHhwcnQgJXAgIgorKwkJCSJl cnIgJWQiLCBfX2Z1bmNfXywgcmRtYV94cHJ0LCByYyk7CisrCQlnb3RvIG91dDsKKysJfQorKwor KwlpZiAoZXZlbnQtPmV2ZW50ICE9IGV4cGVjdGVkX2V2ZW50KSB7CisrCQlfX3dhcm54KFRJUlBD X0RFQlVHX0ZMQUdfRVJST1IsICIlczogdW5leHBlY3RlZCBldmVudCAlZCwgZXhwZWN0ZWQgJWQg IgorKwkJCSJ4cHJ0ICVzIiwgX19mdW5jX18sIGV2ZW50LT5ldmVudCwgZXhwZWN0ZWRfZXZlbnQp OworKwl9CisrCisrCVNWQ19SRUYoJnJkbWFfeHBydC0+c21fZHIueHBydCwgU1ZDX1JFRl9GTEFH X05PTkUpOworKworKwlyYyA9IHJwY19yZG1hX2NtX2V2ZW50X2hhbmRsZXIocmRtYV94cHJ0LCBl dmVudCk7CisrCisrCXJkbWFfYWNrX2NtX2V2ZW50KGV2ZW50KTsKKysKKysJU1ZDX1JFTEVBU0Uo JnJkbWFfeHBydC0+c21fZHIueHBydCwgU1ZDX1JFRl9GTEFHX05PTkUpOworKworK291dDoKKysJ aWYgKHJjKQorKwkJU1ZDX0RFU1RST1koJnJkbWFfeHBydC0+c21fZHIueHBydCk7CisrCisrCXJl dHVybiByYzsKKyt9CisrCisgLyoqCisgICogcnBjX3JkbWFfZGVzdHJveV9zdHVmZjogZGVzdHJv eXMgYWxsIHFwLXJlbGF0ZWQgc3R1ZmYgZm9yIHVzCisgICoKK0BAIC0xMzczLDcgKzE0NzMsOCBA QAorIAl9CisgCisgCWlmIChyZG1hX3hwcnQtPmNvbXBfY2hhbm5lbCkgeworLQkJaWYgKHJkbWFf eHBydC0+c3RhdGUgPT0gUkRNQVhTX0NPTk5FQ1RFRCkgeworKwkJaWYgKHJkbWFfeHBydC0+c2Vy dmVyICYmCisrCQkgICAgKHJkbWFfeHBydC0+c3RhdGUgPT0gUkRNQVhTX0NPTk5FQ1RFRCkpIHsK KyAJCQlpbnQgY3FfZmQgPSAoKFJETUFYUFJUICopcmRtYV94cHJ0KS0+Y29tcF9jaGFubmVsLT5m ZDsKKyAJCQlpbnQgY3FfdGhyZWFkX2luZGV4ID0gY3FfZmQgJSBOVU1fQ1FfRVBPTExfVEhSRUFE UzsKKyAJCQlycGNfcmRtYV9mZF9kZWwoY3FfZmQsCitAQCAtMTM5Niw3ICsxNDk3LDcgQEAKKyBz dGF0aWMgdm9pZAorIHJkbWFfZGVzdHJveV9jYmNzKFJETUFYUFJUICpyZG1hX3hwcnQpIHsKKyAK Ky0JX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAorKwlfX3dhcm54KFRJUlBDX0RFQlVH X0ZMQUdfUlBDX1JETUEsCisgCSAgICAiJXMoKSBEZXN0cm95aW5nIHhwcnQgJXAgY2JjcyBxY291 bnQgJXUgcXNpemUgJXUgdG90YWwgY2Jjc19tZW1vcnkgJXUiLAorIAkgICAgX19mdW5jX18sIHJk bWFfeHBydCwgcmRtYV94cHJ0LT5jYnFoLnFjb3VudCwgcmRtYV94cHJ0LT5jYnFoLnFzaXplLAor IAkgICAgcmRtYV94cHJ0LT5jYnFoLnFjb3VudCAqIHJkbWFfeHBydC0+Y2JxaC5xc2l6ZSk7CitA QCAtMTQzNiw3ICsxNTM3LDcgQEAKKyAKKyBzdGF0aWMgdm9pZAorIHJkbWFfZGVzdHJveV9pb19i dWZzKFJETUFYUFJUICpyZG1hX3hwcnQpIHsKKy0JX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VW RU5ULAorKwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEsCisgCSAgICAiJXMoKSBE ZXN0cm95aW5nIHhwcnQgJXAgaW9fYnVmcyIsCisgCSAgICBfX2Z1bmNfXywgcmRtYV94cHJ0KTsK KyAKK0BAIC0xNDU2LDEzICsxNTU3LDEzIEBACisgCQkJc3RydWN0IHJwY19pb19idWZzICppb19i dWYgPQorIAkJCQlvcHJfY29udGFpbmVyb2YoaGF2ZSwgc3RydWN0IHJwY19pb19idWZzLCBxKTsK KyAKKy0JCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsICIlcyBEZXN0cm95IGlvX2J1 ZiAlcCBpb3FoICVwIGNvdW50ICVkIiwKKysJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBD X1JETUEsICIlcyBEZXN0cm95IGlvX2J1ZiAlcCBpb3FoICVwIGNvdW50ICVkIiwKKyAJCQkgICAg X19mdW5jX18sIGlvX2J1ZiwgaW9xaCwgaW9xaC0+cWNvdW50KTsKKyAKKyAJCQlpZiAoKGlvX2J1 Zi0+dHlwZSA9PSBJT19CVUZfQUxMKSB8fAorIAkJCSAgICAoaW9fYnVmLT50eXBlID09IElPX0lO QlVGX0hEUikpIHsKKyAJCQkJc3RydWN0IHBvb2xxX2hlYWQgKmlvcWhfYnVmcyA9ICZyZG1hX3hw cnQtPmluYnVmc19oZHIudXZxaDsKKy0JCQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5U LAorKwkJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEsCisgCQkJCSAgICAiJXMo KSBEZXN0cm95aW5nICVwIGluYnVmc19oZHIgaGVhZCAlcCBjb3VudCAlZCBpb19idWYgJXAiLAor IAkJCQkgICAgX19mdW5jX18sIHJkbWFfeHBydCwgaW9xaF9idWZzLCBpb3FoX2J1ZnMtPnFjb3Vu dCwgaW9fYnVmKTsKKyAJCQkJeGRyX3JkbWFfYnVmX3Bvb2xfZGVzdHJveShpb3FoX2J1ZnMsIGlv X2J1Zik7CitAQCAtMTQ3MSw3ICsxNTcyLDcgQEAKKyAJCQlpZiAoKGlvX2J1Zi0+dHlwZSA9PSBJ T19CVUZfQUxMKSB8fAorIAkJCSAgICAoaW9fYnVmLT50eXBlID09IElPX09VVEJVRl9IRFIpKSB7 CisgCQkJCXN0cnVjdCBwb29scV9oZWFkICppb3FoX2J1ZnMgPSAmcmRtYV94cHJ0LT5vdXRidWZz X2hkci51dnFoOworLQkJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsCisrCQkJCV9f d2FybngoVElSUENfREVCVUdfRkxBR19SUENfUkRNQSwKKyAJCQkJICAgICIlcygpIERlc3Ryb3lp bmcgJXAgb3V0YnVmc19oZHIgaGVhZCAlcCBjb3VudCAlZCBpb19idWYgJXAiLAorIAkJCQkgICAg X19mdW5jX18sIHJkbWFfeHBydCwgaW9xaF9idWZzLCBpb3FoX2J1ZnMtPnFjb3VudCwgaW9fYnVm KTsKKyAJCQkJeGRyX3JkbWFfYnVmX3Bvb2xfZGVzdHJveShpb3FoX2J1ZnMsIGlvX2J1Zik7CitA QCAtMTQ4MCw3ICsxNTgxLDcgQEAKKyAJCQlpZiAoKGlvX2J1Zi0+dHlwZSA9PSBJT19CVUZfQUxM KSB8fAorIAkJCSAgICAoaW9fYnVmLT50eXBlID09IElPX0lOQlVGX0RBVEEpKSB7CisgCQkJCXN0 cnVjdCBwb29scV9oZWFkICppb3FoX2J1ZnMgPSAmcmRtYV94cHJ0LT5pbmJ1ZnNfZGF0YS51dnFo OworLQkJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsCisrCQkJCV9fd2FybngoVElS UENfREVCVUdfRkxBR19SUENfUkRNQSwKKyAJCQkJICAgICIlcygpIERlc3Ryb3lpbmcgJXAgaW5i dWZzX2RhdGEgaGVhZCAlcCBjb3VudCAlZCBpb19idWYgJXAiLAorIAkJCQkgICAgX19mdW5jX18s IHJkbWFfeHBydCwgaW9xaF9idWZzLCBpb3FoX2J1ZnMtPnFjb3VudCwgaW9fYnVmKTsKKyAJCQkJ eGRyX3JkbWFfYnVmX3Bvb2xfZGVzdHJveShpb3FoX2J1ZnMsIGlvX2J1Zik7CitAQCAtMTQ4OSw3 ICsxNTkwLDcgQEAKKyAJCQlpZiAoKGlvX2J1Zi0+dHlwZSA9PSBJT19CVUZfQUxMKSB8fAorIAkJ CSAgICAoaW9fYnVmLT50eXBlID09IElPX09VVEJVRl9EQVRBKSkgeworIAkJCQlzdHJ1Y3QgcG9v bHFfaGVhZCAqaW9xaF9idWZzID0gJnJkbWFfeHBydC0+b3V0YnVmc19kYXRhLnV2cWg7CistCQkJ CV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwKKysJCQkJX193YXJueChUSVJQQ19ERUJV R19GTEFHX1JQQ19SRE1BLAorIAkJCQkgICAgIiVzKCkgRGVzdHJveWluZyAlcCBvdXRidWZzX2Rh dGEgaGVhZCAlcCBjb3VudCAlZCBpb19idWYgJXAiLAorIAkJCQkgICAgX19mdW5jX18sIHJkbWFf eHBydCwgaW9xaF9idWZzLCBpb3FoX2J1ZnMtPnFjb3VudCwgaW9fYnVmKTsKKyAJCQkJeGRyX3Jk bWFfYnVmX3Bvb2xfZGVzdHJveShpb3FoX2J1ZnMsIGlvX2J1Zik7CitAQCAtMTU5MCw3ICsxNjkx LDcgQEAKKyAgKgorICAqIEByZXR1cm4gcmRtYV94cHJ0IG9uIHN1Y2Nlc3MsIE5VTEwgb24gZmFp bHVyZQorICAqLworLXN0YXRpYyBSRE1BWFBSVCAqCisrUkRNQVhQUlQgKgorIHJwY19yZG1hX2Fs bG9jYXRlKGNvbnN0IHN0cnVjdCBycGNfcmRtYV9hdHRyICp4YSkKKyB7CisgCVJETUFYUFJUICpy ZG1hX3hwcnQ7CitAQCAtMTczOSw5ICsxODQwLDEzIEBACisgCQkJX19mdW5jX18pOworIAkJZ290 byBmYWlsdXJlOworIAl9CistCV9fd2FybngoVElSUENfREVCVUdfRkxBR19SUENfUkRNQSwKKy0J CSIlcygpIE5GUy9SRE1BIGVuZ2luZSBib3VuZCByZWN2c3ogJWxsdSBzZW5kc3ogJWxsdSByZG1h X3hwcnQgJXAiLAorLQkJX19mdW5jX18sIHJkbWFfeHBydC0+c21fZHIucmVjdnN6LCByZG1hX3hw cnQtPnNtX2RyLnNlbmRzeiwgcmRtYV94cHJ0KTsKKysKKysJX193YXJueChUSVJQQ19ERUJVR19G TEFHX0VWRU5UIHwgVElSUENfREVCVUdfRkxBR19SUENfUkRNQSwKKysJCSIlcygpIFJETUE6IE5G Uy9SRE1BIHRyYW5zcG9ydCByZWFkeSBvbiBwb3J0ICVzIHJlY3Zzej0lbGx1IHNlbmRzej0lbGx1 IHhwcnQ9JXAiLAorKwkJX19mdW5jX18sIHhhLT5wb3J0LAorKwkJKHVuc2lnbmVkIGxvbmcgbG9u ZylyZG1hX3hwcnQtPnNtX2RyLnJlY3ZzeiwKKysJCSh1bnNpZ25lZCBsb25nIGxvbmcpcmRtYV94 cHJ0LT5zbV9kci5zZW5kc3osCisrCQlyZG1hX3hwcnQpOworIAorIAlyZXR1cm4gKCZyZG1hX3hw cnQtPnNtX2RyLnhwcnQpOworIAorQEAgLTE3OTAsNyArMTg5NSw3IEBACisgCSAgICBJQlZfUVBf UEFUSF9NVFUgfCBJQlZfUVBfREVTVF9RUE4gfCBJQlZfUVBfUlFfUFNOIHwKKyAJICAgIElCVl9R UF9NQVhfREVTVF9SRF9BVE9NSUMgfCBJQlZfUVBfTUlOX1JOUl9USU1FUiwgJnFwX2F0dHIpOwor IAorLQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsCisrCV9fd2FybngoVElSUENfREVC VUdfRkxBR19SUENfUkRNQSwKKyAJCSIlcygpICVwWyV1XSBpYnZfcXVlcnlfcXAgcGF0aCBtdHUg JWQgc3RhdGUgJWQgcXAgdHlwZSAlZCIsCisgCQlfX2Z1bmNfXywgcmRtYV94cHJ0LCByZG1hX3hw cnQtPnN0YXRlLCBhdHRyLnFwX3N0YXRlLAorIAkJYXR0ci5wYXRoX210dSwgcXBfYXR0ci5xcF90 eXBlKTsKK0BAIC0xNzk5LDYgKzE5MDQsNDggQEAKKyAJcmV0dXJuIDA7CisgfQorIAorKy8qIElu aXRpYWxpemUgUkRNQSBjbGllbnQgY29tcGxldGlvbiBjaGFubmVsIGFuZCBxdWV1ZSAqLworK2lu dAorK3JwY19yZG1hX3NldHVwX3N0dWZmX2NsaWVudChSRE1BWFBSVCAqcmRtYV94cHJ0KQorK3sK KysJaW50IHJjID0gMDsKKysKKysJcmRtYV94cHJ0LT5jb21wX2NoYW5uZWwgPSBpYnZfY3JlYXRl X2NvbXBfY2hhbm5lbChyZG1hX3hwcnQtPmNtX2lkLT52ZXJicyk7CisrCWlmICghcmRtYV94cHJ0 LT5jb21wX2NoYW5uZWwpIHsKKysJCXJjID0gZXJybm87CisrCQlfX3dhcm54KFRJUlBDX0RFQlVH X0ZMQUdfRVJST1IsICIlczogY3JlYXRlIGNvbXAgY2hhbm5lbCBmYWlsZWQgeHBydCAlcCAiCisr CQkJImVyciAlZCIsIF9fZnVuY19fLCByZG1hX3hwcnQsIHJjKTsKKysJCWdvdG8gb3V0OworKwl9 CisrCisrCXJkbWFfeHBydC0+Y3EgPSBpYnZfY3JlYXRlX2NxKHJkbWFfeHBydC0+Y21faWQtPnZl cmJzLCBNQVhfQ1FfU0laRShyZG1hX3hwcnQtPnhhKSwKKysJICAgIHJkbWFfeHBydCwgcmRtYV94 cHJ0LT5jb21wX2NoYW5uZWwsIDApOworKwlpZiAoIXJkbWFfeHBydC0+Y3EpIHsKKysJCXJjID0g ZXJybm87CisrCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsICIlczogY3JlYXRlIGNx IGZhaWxlZCB4cHJ0ICVwIGVyciAlZCIsCisrCQkJX19mdW5jX18sIHJkbWFfeHBydCwgcmMpOwor KwkJZ290byBvdXQ7CisrCX0KKysKKysJcmMgPSBpYnZfcmVxX25vdGlmeV9jcShyZG1hX3hwcnQt PmNxLCAwKTsKKysJaWYgKHJjKSB7CisrCQlyYyA9IGVycm5vOworKwkJX193YXJueChUSVJQQ19E RUJVR19GTEFHX0VSUk9SLCAiJXM6IG5vdGlmeSBjcSBmYWlsZWQgeHBydCAlcCBlcnIgJWQiLAor KwkJCV9fZnVuY19fLCByZG1hX3hwcnQsIHJjKTsKKysJCWdvdG8gb3V0OworKwl9CisrCisrCXJj ID0gcnBjX3JkbWFfY3JlYXRlX3FwKHJkbWFfeHBydCwgcmRtYV94cHJ0LT5jbV9pZCk7CisrCWlm IChyYykgeworKwkJcmMgPSBlcnJubzsKKysJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJP UiwgIiVzOiBjcmVhdGUgcXAgZmFpbGVkIHhwcnQgJXAgZXJyICVkIiwKKysJCQlfX2Z1bmNfXywg cmRtYV94cHJ0LCByYyk7CisrCX0KKysKKytvdXQ6CisrCXJldHVybiByYzsKKyt9CisrCisgLyoq CisgICogcnBjX3JkbWFfc2V0dXBfc3R1ZmY6IHNldHVwIHBkLCBxcCBhbicgc3R1ZmYKKyAgKgor QEAgLTE5MjEsMTAgKzIwNjgsMTQgQEAKKyAvKioKKyAgKiBycGNfcmRtYV9zZXR1cF9jYnEKKyAg Ki8KKy1zdGF0aWMgaW50CisraW50CisgcnBjX3JkbWFfc2V0dXBfY2JxKFJETUFYUFJUICpyZG1h X3hwcnQsCisgICAgIHN0cnVjdCBwb29scV9oZWFkICppb3FoLCB1X2ludCBkZXB0aCwgdV9pbnQg c2dlKQorIHsKKysJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQQ19SRE1BLAorKwkJIiVzOiBz ZXR1cCBjYnEgeHBydCAlcCBkZXB0aCAlZCBzZ2UgJWQiLAorKwkJX19mdW5jX18sIHJkbWFfeHBy dCwgZGVwdGgsIHNnZSk7CisrCisgCWlmIChpb3FoLT5xc2l6ZSkgeworIAkJX193YXJueChUSVJQ Q19ERUJVR19GTEFHX0VSUk9SLAorIAkJCSIlcygpIGNvbnRleHRzIGFscmVhZHkgYWxsb2NhdGVk IiwKK0BAIC0xOTQ4LDcgKzIwOTksNyBAQAorIAkJcnBjX3JkbWFfYWxsb2NhdGVfY2JjX2xvY2tl ZChpb3FoKTsKKyAJfQorIAorLQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsICIlcyBU b3RhbCBjYmNzX21lbW9yeSAldSAiCisrCV9fd2FybngoVElSUENfREVCVUdfRkxBR19SUENfUkRN QSwgIiVzIFRvdGFsIGNiY3NfbWVtb3J5ICV1ICIKKyAJICAgICJxY291bnQgJXUgcXNpemUgJXUg eHBydCAlcCIsCisgCSAgICBfX2Z1bmNfXywgaW9xaC0+cWNvdW50ICogaW9xaC0+cXNpemUsCisg CSAgICBpb3FoLT5xY291bnQsIGlvcWgtPnFzaXplLCByZG1hX3hwcnQpOworQEAgLTIwMzUsNiAr MjE4NiwxNyBAQAorIAl9CisgCisgCXJkbWFfeHBydC0+c3RhdGUgPSBSRE1BWFNfTElTVEVOSU5H OworKworKwkvKiBMb2cgYXQgRVZFTlQgbGV2ZWwgdGhhdCBSRE1BIGxpc3RlbmVyIGlzIHVwICov CisrCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwKKysJCSIlcygpIFJETUE6IE5GUy9S RE1BIHNlcnZlciBpcyBub3cgbGlzdGVuaW5nIG9uIG5vZGUgJXMgcG9ydCAlcyAoYmFja2xvZz0l ZCBzcV9kZXB0aD0lZCBycV9kZXB0aD0lZCkiLAorKwkJX19mdW5jX18sCisrCQlyZG1hX3hwcnQt PnhhLT5ub2RlID8gcmRtYV94cHJ0LT54YS0+bm9kZSA6ICIqIiwKKysJCXJkbWFfeHBydC0+eGEt PnBvcnQsCisrCQlyZG1hX3hwcnQtPnhhLT5iYWNrbG9nLAorKwkJcmRtYV94cHJ0LT54YS0+c3Ff ZGVwdGgsCisrCQlyZG1hX3hwcnQtPnhhLT5ycV9kZXB0aCk7CisrCisgCWF0b21pY19pbmNfaW50 MzJfdCgmcnBjX3JkbWFfc3RhdGUucnVuX2NvdW50KTsKKyAKKyAJcmMgPSBycGNfcmRtYV90aHJl YWRfY3JlYXRlX2Vwb2xsKCZycGNfcmRtYV9zdGF0ZS5jbV90aHJlYWRfaWQsCitAQCAtMjIxOCw3 ICsyMzgwLDcgQEAKKyB7CisgCXN0cnVjdCByZG1hX2NtX2lkICpjbV9pZDsKKyAKKy0JX193YXJu eChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAorKwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBD X1JETUEsCisgCQkiJXMoKSAlcFsldV0gbGlzdGVuaW5nIChhZnRlciBiaW5kX3NlcnZlcikiLAor IAkJX19mdW5jX18sIGxfcmRtYV94cHJ0LCBsX3JkbWFfeHBydC0+c3RhdGUpOworIAorQEAgLTIy ODEsMjUgKzI0NDMsMjkgQEAKKyAJc3RydWN0IHJkbWFfYWRkcmluZm8gKnJlczsKKyAJaW50IHJj OworIAorLQltdXRleF9sb2NrKCZyZG1hX3hwcnQtPmNtX2xvY2spOworLQorIAlkbyB7CisgCQlt ZW1zZXQoJmhpbnRzLCAwLCBzaXplb2YoaGludHMpKTsKKyAJCWhpbnRzLmFpX3BvcnRfc3BhY2Ug PSByZG1hX3hwcnQtPmNvbm5fdHlwZTsKKyAKKy0JCXJjID0gcmRtYV9nZXRhZGRyaW5mbyhyZG1h X3hwcnQtPnhhLT5ub2RlLCByZG1hX3hwcnQtPnhhLT5wb3J0LAorKwkJX193YXJueChUSVJQQ19E RUJVR19GTEFHX1JQQ19SRE1BLCAiJXM6IHJlc29sdmUgJXMgcG9ydCAlZCIsIF9fZnVuY19fLAor KwkJCXJkbWFfeHBydC0+c21fZHIueHBydC54cF9pcCwgcmRtYV94cHJ0LT5zbV9kci54cHJ0Lnhw X3BvcnQpOworKwkJY2hhciBwb3J0X3N0cltTT0NLX05BTUVfTUFYXTsKKysJCXNucHJpbnRmKHBv cnRfc3RyLCBTT0NLX05BTUVfTUFYLCAiJWQiLCByZG1hX3hwcnQtPnNtX2RyLnhwcnQueHBfcG9y dCk7CisrCisrCQlyYyA9IHJkbWFfZ2V0YWRkcmluZm8ocmRtYV94cHJ0LT5zbV9kci54cHJ0Lnhw X2lwLCBwb3J0X3N0ciwKKyAJCQkJCSZoaW50cywgJnJlcyk7CisgCQlpZiAocmMpIHsKKyAJCQly YyA9IGVycm5vOworIAkJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwKKy0JCQkJIiVz KCkgJXBbJXVdIHJkbWFfZ2V0YWRkcmluZm86ICVzICglZCkiLAorLQkJCQlfX2Z1bmNfXywgcmRt YV94cHJ0LCByZG1hX3hwcnQtPnN0YXRlLCBzdHJlcnJvcihyYyksIHJjKTsKKysJCQkJIiVzKCkg JXBbJXVdIHJkbWFfZ2V0YWRkcmluZm86ICVzICglZCkgaXAgJXMgcG9ydCAlZCIsCisrCQkJCV9f ZnVuY19fLCByZG1hX3hwcnQsIHJkbWFfeHBydC0+c3RhdGUsIHN0cmVycm9yKHJjKSwgcmMsCisr CQkJCXJkbWFfeHBydC0+c21fZHIueHBydC54cF9pcCwgcmRtYV94cHJ0LT5zbV9kci54cHJ0Lnhw X3BvcnQpOworIAkJCWJyZWFrOworIAkJfQorIAorIAkJcmMgPSByZG1hX3Jlc29sdmVfYWRkcihy ZG1hX3hwcnQtPmNtX2lkLCByZXMtPmFpX3NyY19hZGRyLAorIAkJCQkJcmVzLT5haV9kc3RfYWRk ciwKKy0JCQkJCV9fc3ZjX3BhcmFtcy0+aWRsZV90aW1lb3V0KTsKKysJCQkJCTUwMDApOworIAkJ aWYgKHJjKSB7CisgCQkJcmMgPSBlcnJubzsKKyAJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdf RVJST1IsCitAQCAtMjMwOSwxNCArMjQ3NSw4IEBACisgCQl9CisgCQlyZG1hX2ZyZWVhZGRyaW5m byhyZXMpOworIAorLQkJd2hpbGUgKHJkbWFfeHBydC0+c3RhdGUgPT0gUkRNQVhTX0lOSVRJQUwp IHsKKy0JCQljb25kX3dhaXQoJnJkbWFfeHBydC0+Y21fY29uZCwgJnJkbWFfeHBydC0+Y21fbG9j ayk7CistCQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQQ19SRE1BLAorLQkJCQkiJXMoKSAl cFsldV0gYWZ0ZXIgY29uZF93YWl0IiwKKy0JCQkJX19mdW5jX18sIHJkbWFfeHBydCwgcmRtYV94 cHJ0LT5zdGF0ZSk7CistCQl9CistCistCQlpZiAocmRtYV94cHJ0LT5zdGF0ZSAhPSBSRE1BWFNf QUREUl9SRVNPTFZFRCkgeworKwkJcmMgPSBycGNfcmRtYV9jbV9ldmVudF9oYW5kbGVyX2lubGlu ZShyZG1hX3hwcnQsIFJETUFfQ01fRVZFTlRfQUREUl9SRVNPTFZFRCk7CisrCQlpZiAocmMpIHsK KyAJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsCisgCQkJCSIlcygpIENvdWxkIG5v dCByZXNvbHZlIGFkZHIiLAorIAkJCQlfX2Z1bmNfXyk7CitAQCAtMjMyNSw3ICsyNDg1LDcgQEAK KyAJCX0KKyAKKyAJCXJjID0gcmRtYV9yZXNvbHZlX3JvdXRlKHJkbWFfeHBydC0+Y21faWQsCist CQkJCQlfX3N2Y19wYXJhbXMtPmlkbGVfdGltZW91dCk7CisrCQkJCQk1MDAwKTsKKyAJCWlmIChy YykgeworIAkJCXJkbWFfeHBydC0+c3RhdGUgPSBSRE1BWFNfRVJST1I7CisgCQkJX193YXJueChU SVJQQ19ERUJVR19GTEFHX0VSUk9SLAorQEAgLTIzMzQsMTQgKzI0OTQsOCBAQAorIAkJCWJyZWFr OworIAkJfQorIAorLQkJd2hpbGUgKHJkbWFfeHBydC0+c3RhdGUgPT0gUkRNQVhTX0FERFJfUkVT T0xWRUQpIHsKKy0JCQljb25kX3dhaXQoJnJkbWFfeHBydC0+Y21fY29uZCwgJnJkbWFfeHBydC0+ Y21fbG9jayk7CistCQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQQ19SRE1BLAorLQkJCQki JXMoKSAlcFsldV0gYWZ0ZXIgY29uZF93YWl0IiwKKy0JCQkJX19mdW5jX18sIHJkbWFfeHBydCwg cmRtYV94cHJ0LT5zdGF0ZSk7CistCQl9CistCistCQlpZiAocmRtYV94cHJ0LT5zdGF0ZSAhPSBS RE1BWFNfUk9VVEVfUkVTT0xWRUQpIHsKKysJCXJjID0gcnBjX3JkbWFfY21fZXZlbnRfaGFuZGxl cl9pbmxpbmUocmRtYV94cHJ0LCBSRE1BX0NNX0VWRU5UX1JPVVRFX1JFU09MVkVEKTsKKysJCWlm IChyYykgeworIAkJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwKKyAJCQkJIiVzKCkg Q291bGQgbm90IHJlc29sdmUgcm91dGUiLAorIAkJCQlfX2Z1bmNfXyk7CitAQCAtMjM1MCw4ICsy NTA0LDYgQEAKKyAJCX0KKyAJfSB3aGlsZSAoMCk7CisgCistCW11dGV4X3VubG9jaygmcmRtYV94 cHJ0LT5jbV9sb2NrKTsKKy0KKyAJcmV0dXJuIHJjOworIH0KKyAKK0BAIC0yMzk4LDYgKzI1NTAs MzkgQEAKKyAJCQlfX2Z1bmNfXywgcmRtYV94cHJ0LCByZG1hX3hwcnQtPnN0YXRlLCBzdHJlcnJv cihyYyksIHJjKTsKKyAJfQorIAorKwlyYyA9IHJwY19yZG1hX2NtX2V2ZW50X2hhbmRsZXJfaW5s aW5lKHJkbWFfeHBydCwgUkRNQV9DTV9FVkVOVF9FU1RBQkxJU0hFRCk7CisrCWlmIChyYykgewor KwkJcmMgPSBlcnJubzsKKysJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwgIiVzOiBj b25lY3QgZmFpbGVkIHhwcnQgJXAgZXJyICVkIiwKKysJCQlfX2Z1bmNfXywgcmRtYV94cHJ0LCBy Yyk7CisrCX0KKysKKysJcmV0dXJuIHJjOworK30KKysKKysvKiBQcmVwYXJlIFJETUEgY29ubmVj dGlvbiBieSBjcmVhdGluZyBldmVudCBjaGFubmVsIGFuZCBDTSBJRCAqLworK2ludAorK3JwY19y ZG1hX2Nvbm5lY3RfcHJlcGFyZShSRE1BWFBSVCAqcmRtYV94cHJ0KQorK3sKKysJaW50IHJjID0g MDsKKysKKysJcmRtYV94cHJ0LT5ldmVudF9jaGFubmVsID0gcmRtYV9jcmVhdGVfZXZlbnRfY2hh bm5lbCgpOworKwlpZiAoIXJkbWFfeHBydC0+ZXZlbnRfY2hhbm5lbCkgeworKwkJcmMgPSBlcnJu bzsKKysJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwgIiVzOiBjcmVhdGUgZXZlbnQg Y2hhbm5lbCBmYWlsZWQgIgorKwkJCSJpcCAlcyBlcnIgJWQiLCBfX2Z1bmNfXywgcmRtYV94cHJ0 LT5zbV9kci54cHJ0LnhwX2lwLCByYyk7CisrCQlnb3RvIG91dDsKKysJfQorKworKwlyYyA9IHJk bWFfY3JlYXRlX2lkKHJkbWFfeHBydC0+ZXZlbnRfY2hhbm5lbCwgJnJkbWFfeHBydC0+Y21faWQs IHJkbWFfeHBydCwKKysJICAgIHJkbWFfeHBydC0+Y29ubl90eXBlKTsKKysJaWYgKHJjKSB7Cisr CQlyYyA9IGVycm5vOworKwkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLCAiJXM6IGNy ZWF0ZSBpZCBmYWlsZWQgaXAgJXMgZXJyICVkIiwKKysJCQlfX2Z1bmNfXywgcmRtYV94cHJ0LT5z bV9kci54cHJ0LnhwX2lwLCByYyk7CisrCQlnb3RvIG91dDsKKysJfQorK291dDoKKyAJcmV0dXJu IHJjOworIH0KKyAKK0BAIC0yNDI3LDI5ICsyNjEyLDIwIEBACisgCQlyZXR1cm4gRUlOVkFMOwor IAl9CisgCistCWlmIChyZG1hX3hwcnQtPnNlcnZlcikgeworKwlpZiAocmRtYV94cHJ0LT5zZXJ2 ZXIgIT0gUkRNQVhfQ0xJRU5UKSB7CisgCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1Is CisgCQkJIiVzKCkgb25seSBjYWxsZWQgZnJvbSBjbGllbnQgc2lkZSEiLAorIAkJCV9fZnVuY19f KTsKKyAJCXJldHVybiBFSU5WQUw7CisgCX0KKyAKKy0JcmMgPSBycGNfcmRtYV90aHJlYWRfY3Jl YXRlX2Vwb2xsKCZycGNfcmRtYV9zdGF0ZS5jbV90aHJlYWRfaWQsCistCQlycGNfcmRtYV9jbV90 aHJlYWQsIHJkbWFfeHBydCwgJnJwY19yZG1hX3N0YXRlLmNtX2Vwb2xsZmQpOworLQlpZiAocmMp IHsKKy0JCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwKKy0JCQkiJXMoKSAlcFsldV0g cnBjX3JkbWFfdGhyZWFkX2NyZWF0ZV9lcG9sbCBmYWlsZWQ6ICVzICglZCkiLAorLQkJCV9fZnVu Y19fLCByZG1hX3hwcnQsIHJkbWFfeHBydC0+c3RhdGUsIHN0cmVycm9yKHJjKSwgcmMpOworLQkJ cmV0dXJuIHJjOworLQl9CistCisgCXJjID0gcnBjX3JkbWFfYmluZF9jbGllbnQocmRtYV94cHJ0 KTsKKyAJaWYgKHJjKQorIAkJcmV0dXJuIHJjOworIAlyYyA9IHJwY19yZG1hX3BkX2dldChyZG1h X3hwcnQpOworIAlpZiAocmMpCisgCQlyZXR1cm4gcmM7CistCXJjID0gcnBjX3JkbWFfc2V0dXBf c3R1ZmYocmRtYV94cHJ0KTsKKysJcmMgPSBycGNfcmRtYV9zZXR1cF9zdHVmZl9jbGllbnQocmRt YV94cHJ0KTsKKyAJaWYgKHJjKSB7CisgCQlycGNfcmRtYV9kZXN0cm95X3N0dWZmKHJkbWFfeHBy dCk7CisgCQlyZXR1cm4gcmM7CitAQCAtMjQ1NywxMSArMjYzMyw3IEBACisgCXJjID0gcnBjX3Jk bWFfc2V0dXBfY2JxKHJkbWFfeHBydCwgJnJkbWFfeHBydC0+Y2JxaCwKKyAJCQkJcmRtYV94cHJ0 LT54YS0+cnFfZGVwdGggKyByZG1hX3hwcnQtPnhhLT5zcV9kZXB0aCwKKyAJCQkJcmRtYV94cHJ0 LT54YS0+Y3JlZGl0cyk7CistCWlmIChyYykKKy0JCXJldHVybiByYzsKKy0KKy0JcmV0dXJuIHJw Y19yZG1hX2ZkX2FkZChyZG1hX3hwcnQsIHJkbWFfeHBydC0+ZXZlbnRfY2hhbm5lbC0+ZmQsCist CQkJCXJwY19yZG1hX3N0YXRlLmNtX2Vwb2xsZmQpOworKwlyZXR1cm4gcmM7CisgfQorIAorIGV4 dGVybiBtdXRleF90IG9wc19sb2NrOworZGlmZiAtdXIgbnRpcnBjLTcuMi9zcmMvcnBjX3JkbWEu aCBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9zcmMvcnBj X3JkbWEuaAorLS0tIG50aXJwYy03LjIvc3JjL3JwY19yZG1hLmgJMjAyNS0wOS0yMyAxMDowNTox OS4wMDAwMDAwMDAgLTA0MDAKKysrKyBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3 ZWUxMjk3ODI1NmJkMS9zcmMvcnBjX3JkbWEuaAkyMDI2LTA1LTE4IDE5OjQwOjIwLjAwMDAwMDAw MCAtMDQwMAorQEAgLTg3LDYgKzg3LDEwIEBACisgI2RlZmluZSBDQkNfRkxBR19OT05FCQkweDAw MDAKKyAjZGVmaW5lIENCQ19GTEFHX1JFTEVBU0UJMHgwMDAxCisgI2RlZmluZSBDQkNfRkxBR19S RUxFQVNJTkcJMHgwMDAyCisrLyogc3ZjX3JlcXVlc3QgcmV0dXJuZWQgWFBSVF9TVVNQRU5EIChl LmcuIFFPUywgYXN5bmMgcmVxdWVzdCBoYW5kbGluZykKKysgKiB3cmFwX2NhbGxiYWNrIGRlZmVy cmVkIHRoZSBzZW50aW5lbCBjYmNfcmVsZWFzZV9pdCB0byB4ZHJfcmRtYV9zdmNfZmx1c2hvdXQK KysgKiBzbyB0aGF0IGRhdGFxIGJ1ZmZlcnMgcmVtYWluIHZhbGlkIGFjcm9zcyB0aGUgc3VzcGVu c2lvbiB3aW5kb3cuICovCisrI2RlZmluZSBDQkNfRkxBR19TRU5USU5FTF9QRU5ESU5HIDB4MDAw NAorIAorICNkZWZpbmUgUkRNQV9DQl9USU1FT1VUX1NFQyAxMAorIAorQEAgLTIyMiw2ICsyMjYs NyBAQAorIAkJCQkJICogLTEgKFJETUFYX1NFUlZFUl9DSElMRCk6CisgCQkJCQkgKiBzZXJ2ZXIg aGFzIGFjY2VwdGVkIGNvbm5lY3Rpb24KKyAJCQkJCSAqLworKwlib29sIHNoYXJlZDsKKyAKKyAJ ZW51bSByZG1hX3RyYW5zcG9ydF9zdGF0ZSB7CisgCQlSRE1BWFNfSU5JVElBTCwgCS8qIGFzc3Vt ZXMgemVybywgbmV2ZXIgc2V0ICovCitAQCAtMzc0LDYgKzM3OSw3IEBACisgZW51bSB4cHJ0X3N0 YXQgc3ZjX3JkbWFfcmVuZGV6dm91cyhTVkNYUFJUICopOworIAorIC8qIGNsaWVudCAqLworK2lu dCBycGNfcmRtYV9jb25uZWN0X3ByZXBhcmUoUkRNQVhQUlQgKik7CisgaW50IHJwY19yZG1hX2Nv bm5lY3QoUkRNQVhQUlQgKik7CisgaW50IHJwY19yZG1hX2Nvbm5lY3RfZmluYWxpemUoUkRNQVhQ UlQgKik7CisgCitAQCAtMzgzLDcgKzM4OSw3IEBACisgdm9pZCB4ZHJfcmRtYV9hZGRfb3V0YnVm c19kYXRhKFJETUFYUFJUICpyZG1hX3hwcnQpOworIHZvaWQgeGRyX3JkbWFfYWRkX2luYnVmc19o ZHIoUkRNQVhQUlQgKnJkbWFfeHBydCk7Cisgdm9pZCB4ZHJfcmRtYV9hZGRfb3V0YnVmc19oZHIo UkRNQVhQUlQgKnJkbWFfeHBydCk7Cistdm9pZCB4ZHJfcmRtYV9jYWxscShSRE1BWFBSVCAqKTsK Kyt2b2lkIHhkcl9yZG1hX2NhbGxxKFJETUFYUFJUICosIGludCk7CisgCisgYm9vbCB4ZHJfcmRt YV9jbG50X3JlcGx5KFhEUiAqLCB1X2ludDMyX3QpOworIGJvb2wgeGRyX3JkbWFfY2xudF9mbHVz aG91dChzdHJ1Y3QgcnBjX3JkbWFfY2JjICopOworQEAgLTQwNiw0ICs0MTIsMTMgQEAKKyBpbnQg eGRyX3JkbWFfZGVyZWdfbXIoUkRNQVhQUlQgKnJkbWFfeHBydCwgc3RydWN0IGlidl9tciAqbXIs CisgICAgIHVpbnQ4X3QgKmJ1ZmZlcl9hbGlnbmVkLCB1aW50MzJfdCBidWZmZXJfdG90YWwpOwor IAorK2ludCBycGNfcmRtYV9jcV9ldmVudF9oYW5kbGVyKFJETUFYUFJUICosIGludCk7CisrCisr UkRNQVhQUlQgKiBycGNfcmRtYV9hbGxvY2F0ZShjb25zdCBzdHJ1Y3QgcnBjX3JkbWFfYXR0ciAq KTsKKysKKytpbnQgcnBjX3JkbWFfc2V0dXBfY2JxKFJETUFYUFJUICosIHN0cnVjdCBwb29scV9o ZWFkICosCisrICAgIHVfaW50IGRlcHRoLCB1X2ludCBzZ2UpOworKworK3ZvaWQgc3ZjX3JkbWFf b3BzKFNWQ1hQUlQgKik7CisrCisgI2VuZGlmIC8qICFfVElSUENfUlBDX1JETUFfSCAqLworZGlm ZiAtdXIgbnRpcnBjLTcuMi9zcmMvc3ZjLmMgbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3 NzM0N2VlMTI5NzgyNTZiZDEvc3JjL3N2Yy5jCistLS0gbnRpcnBjLTcuMi9zcmMvc3ZjLmMJMjAy NS0wOS0yMyAxMDowNToxOS4wMDAwMDAwMDAgLTA0MDAKKysrKyBudGlycGMtNWM3NjFiYjE4NmU5 ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9zcmMvc3ZjLmMJMjAyNi0wNS0xOCAxOTo0MDoy MC4wMDAwMDAwMDAgLTA0MDAKK0BAIC0zNzgsNyArMzc4LDcgQEAKKyAgcnBjYl9pdDoKKyAJcnds b2NrX3VubG9jaygmc3ZjX2xvY2spOworIAkvKiBub3cgcmVnaXN0ZXIgdGhlIGluZm9ybWF0aW9u IHdpdGggdGhlIGxvY2FsIGJpbmRlciBzZXJ2aWNlICovCistCWlmIChuY29uZikgeworKwlpZiAo bmNvbmYgJiYgKCh4cHJ0LT54cF9mbGFncyAmIFNWQ19YUFJUX0ZMQUdfTk9fU0VUKSA9PSAwKSkg eworIAkJLypMSU5URUQgY29uc3QgY2FzdGF3YXkgKi8KKyAJCWR1bW15ID0KKyAJCSAgICBycGNi X3NldChwcm9nLCB2ZXJzLCAoc3RydWN0IG5ldGNvbmZpZyAqKW5jb25mLAorZGlmZiAtdXIgbnRp cnBjLTcuMi9zcmMvc3ZjX2ludGVybmFsLmggbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3 NzM0N2VlMTI5NzgyNTZiZDEvc3JjL3N2Y19pbnRlcm5hbC5oCistLS0gbnRpcnBjLTcuMi9zcmMv c3ZjX2ludGVybmFsLmgJMjAyNS0wOS0yMyAxMDowNToxOS4wMDAwMDAwMDAgLTA0MDAKKysrKyBu dGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9zcmMvc3ZjX2lu dGVybmFsLmgJMjAyNi0wNS0xOCAxOTo0MDoyMC4wMDAwMDAwMDAgLTA0MDAKK0BAIC0zMCw2ICsz MCw3IEBACisgI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyAjaW5jbHVkZSA8bmV0aW5ldC9pbi5o PgorICNpbmNsdWRlIDxtaXNjL29zX2Vwb2xsLmg+CisrI2luY2x1ZGUgPGFycGEvaW5ldC5oPgor ICNpbmNsdWRlIDxycGMvcnBjX21zZy5oPgorIAorICNpbmNsdWRlICJycGNfZHBseF9pbnRlcm5h bC5oIgorQEAgLTE5NCw3ICsxOTUsNDYgQEAKKyB2b2lkIHN2Y19ycXN0X3hwcnRfc2VuZF9jb21w bGV0ZShTVkNYUFJUICopOworIHZvaWQgc3ZjX3Jxc3RfdW5ob29rKFNWQ1hQUlQgKik7CisgCisr LyogQWxsb3cgbXVjaCBtb3JlIHNwYWNlIHRoYW4gd2UgcmVhbGx5IG5lZWQgZm9yIGEgc29jayBu YW1lLiBBbiBJUFY0IGFkZHJlc3MKKysgKiBlbWJlZGRlZCBpbiBJUHY2IGNvdWxkIHVzZSA0NSBi eXRlcyBhbmQgdGhlbiBpZiB3ZSBhZGQgYSBwb3J0LCB0aGF0IHdvdWxkIGJlCisrICogYW4gYWRk aXRpb25hbCA2IGJ5dGVzICg6NjU1MzUpIGZvciBhIHRvdGFsIG9mIDUxLCBhbmQgdGhlbiBvbmUg bW9yZSBmb3IgTlVMCisrICogdGVybWluYXRpb24uIFdlIGNvdWxkIHVzZSA2NCBpbnN0ZWFkIG9m IDEyOC4KKysgKi8KKysjZGVmaW5lIFNPQ0tfTkFNRV9NQVggMTI4CisrCisgdHlwZWRlZiBzdHJ1 Y3Qgc29ja2FkZHJfc3RvcmFnZSBzb2NrYWRkcl90OworIGludCBzdmNfZ2V0X3BvcnQoc29ja2Fk ZHJfdCAqKTsKKyAKKytzdGF0aWMgaW5saW5lIHZvaWQgKnNvY2tldF9hZGRyKHNvY2thZGRyX3Qg KmFkZHIpCisreworKwlzd2l0Y2ggKGFkZHItPnNzX2ZhbWlseSkgeworKwljYXNlIEFGX0lORVQ6 CisrCQlyZXR1cm4gJigoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKWFkZHIpLT5zaW5fYWRkcik7Cisr CWNhc2UgQUZfSU5FVDY6CisrCQlyZXR1cm4gJigoKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilhZGRy KS0+c2luNl9hZGRyKTsKKysjaWZkZWYgUlBDX1ZTT0NLCisrCWNhc2UgQUZfVlNPQ0s6CisrCQly ZXR1cm4gJigoKHN0cnVjdCBzb2NrYWRkcl92bSAqKWFkZHIpLT5zdm1fY2lkKTsKKysjZW5kaWYg LyogVlNPQ0sgKi8KKysJZGVmYXVsdDoKKysJCXJldHVybiBhZGRyOworKwl9CisrfQorKworK3N0 YXRpYyBpbmxpbmUgYm9vbCBzcHJpbnRfc29ja2lwKHNvY2thZGRyX3QgKmFkZHIsIGNoYXIgKmJ1 ZiwgaW50IGxlbikKKyt7CisrI2lmZGVmIFJQQ19WU09DSworKwlpZiAoYWRkci0+c3NfZmFtaWx5 ID09IEFGX1ZTT0NLKSB7CisrCQlpbnQgcmMgPSBzbnByaW50ZihidWYsIGxlbiwgIiVkIiwKKysJ CQkgKChzdHJ1Y3Qgc29ja2FkZHJfdm0gKilhZGRyKS0+c3ZtX2NpZCkpOworKwkJcmV0dXJuIHJj ID49IDAgJiYgcmMgPCBsZW47CisrCX0KKysjZW5kaWYgLyogVlNPQ0sgKi8KKysKKysJaWYgKGFk ZHItPnNzX2ZhbWlseSAhPSBBRl9JTkVUICYmIGFkZHItPnNzX2ZhbWlseSAhPSBBRl9JTkVUNikK KysJCXJldHVybiBmYWxzZTsKKysKKysJcmV0dXJuIGluZXRfbnRvcChhZGRyLT5zc19mYW1pbHks IHNvY2tldF9hZGRyKGFkZHIpLCBidWYsIGxlbikgIT0gTlVMTDsKKyt9CisrCisgI2VuZGlmCQkJ CS8qIFRJUlBDX1NWQ19JTlRFUk5BTF9IICovCitkaWZmIC11ciBudGlycGMtNy4yL3NyYy9zdmNf cmRtYS5jIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL3Ny Yy9zdmNfcmRtYS5jCistLS0gbnRpcnBjLTcuMi9zcmMvc3ZjX3JkbWEuYwkyMDI1LTA5LTIzIDEw OjA1OjE5LjAwMDAwMDAwMCAtMDQwMAorKysrIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFi NzczNDdlZTEyOTc4MjU2YmQxL3NyYy9zdmNfcmRtYS5jCTIwMjYtMDUtMTggMTk6NDA6MjAuMDAw MDAwMDAwIC0wNDAwCitAQCAtNjAsNyArNjAsNiBAQAorICNpbmNsdWRlIDxycGMvc3ZjX3Jxc3Qu aD4KKyAjaW5jbHVkZSA8cnBjL3N2Y19hdXRoLmg+CisgCistc3RhdGljIHZvaWQgc3ZjX3JkbWFf b3BzKFNWQ1hQUlQgKik7CisgCisgLyoKKyAgKiBzdmNfcmRtYV9yZW5kZXp2b3VzOiB3YWl0cyBm b3IgY29ubmVjdGlvbiByZXF1ZXN0CitAQCAtOTUsMTEgKzk0LDE4IEBACisgCW1lbWNweShyZG1h X3hwcnQtPnNtX2RyLnhwcnQueHBfcmVtb3RlLm5iLmJ1Ziwgc3MsCisgCQlyZG1hX3hwcnQtPnNt X2RyLnhwcnQueHBfcmVtb3RlLm5iLmxlbik7CisgCistCV9fd2FybngoVElSUENfREVCVUdfRkxB R19FVkVOVCwKKy0JCSIlczoldSBsb2NhbCAlcCByZW1vdGUgJXAgeHBydCAlcCIsIF9fZnVuY19f LCBfX0xJTkVfXywKKysJcmRtYV94cHJ0LT5zbV9kci54cHJ0LnhwX2lwID0gbWVtX2FsbG9jKFNP Q0tfTkFNRV9NQVgpOworKwlzcHJpbnRfc29ja2lwKHNzLCByZG1hX3hwcnQtPnNtX2RyLnhwcnQu eHBfaXAsCisrCSAgICBTT0NLX05BTUVfTUFYKTsKKysJcmRtYV94cHJ0LT5zbV9kci54cHJ0Lnhw X3BvcnQgPSBzdmNfZ2V0X3BvcnQoc3MpOworKworKwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdf UlBDX1JETUEsCisrCQkiJXM6JXUgbG9jYWwgJXAgcmVtb3RlICVwIHhwcnQgJXAgcmVtb3RlIGlw ICVzIiwKKysJCV9fZnVuY19fLCBfX0xJTkVfXywKKyAJCSZyZG1hX3hwcnQtPnNtX2RyLnhwcnQu eHBfbG9jYWwubmIsCisgCQkmcmRtYV94cHJ0LT5zbV9kci54cHJ0LnhwX3JlbW90ZS5uYiwKKy0J CSZyZG1hX3hwcnQtPnNtX2RyLnhwcnQpOworKwkJJnJkbWFfeHBydC0+c21fZHIueHBydCwKKysJ CXJkbWFfeHBydC0+c21fZHIueHBydC54cF9pcCk7CisgCisgCXN2Y19yZG1hX29wcygmcmRtYV94 cHJ0LT5zbV9kci54cHJ0KTsKKyAJcmRtYV94cHJ0LT5zbV9kci5yZWN2c3ogPSByZXFfcmRtYV94 cHJ0LT5zbV9kci5yZWN2c3o7CitAQCAtMTU1LDcgKzE2MSw3IEBACisgCV9fd2FybngoVElSUENf REVCVUdfRkxBR19FVkVOVCwKKyAJCSIlczoldSBOZXcgUkRNQSBjbGllbnQgY29ubmVjdGVkIHhw cnQgJXAsIHhwX2ZkICVkLCAiCisgCQkicXBfbnVtICVkLCB4cF9mZCAlZCBpc19yZG1hX2VuYWJs ZWQgJWQgdG8gbG9jYWwgcG9ydCAlZCAiCistCQkiZnJvbSByZW1vdGUgcG9ydCAlZCByZWYgJWQg ZXBvbGwgJSMwNHgiLAorKwkJImZyb20gcmVtb3RlIHBvcnQgJWQgcmVmICVkIGVwb2xsICUjMDR4 IHJlbW90ZSBpcCAlcyIsCisgCQlfX2Z1bmNfXywgX19MSU5FX18sCisgCQkmcmRtYV94cHJ0LT5z bV9kci54cHJ0LCByZG1hX3hwcnQtPnNtX2RyLnhwcnQueHBfZmQsCisgCQlyZG1hX3hwcnQtPnFw LT5xcF9udW0sCitAQCAtMTY1LDcgKzE3MSw4IEBACisgCQlyZG1hX3hwcnQtPnNtX2RyLnhwcnQu eHBfcmVtb3RlLm5iLmJ1ZiA/CisgCQlzdmNfZ2V0X3BvcnQocmRtYV94cHJ0LT5zbV9kci54cHJ0 LnhwX3JlbW90ZS5uYi5idWYpIDogMCwKKyAJCXJkbWFfeHBydC0+c21fZHIueHBydC54cF9yZWZj bnQsCistCQlyZG1hX3hwcnQtPnNtX2RyLnhwcnQueHBfZmxhZ3MpOworKwkJcmRtYV94cHJ0LT5z bV9kci54cHJ0LnhwX2ZsYWdzLAorKwkJcmRtYV94cHJ0LT5zbV9kci54cHJ0LnhwX2lwKTsKKyAK KyAJcmV0dXJuIChYUFJUX0lETEUpOworIH0KK0BAIC0yMjEsNiArMjI4LDI3IEBACisgCQlyZXR1 cm4gKFhQUlRfRElFRCk7CisgCX0KKyAKKysJLyogaW4gb3JkZXIgb2YgbGlrZWxpaG9vZCAqLwor KwlpZiAocmVxLT5ycV9tc2cucm1fZGlyZWN0aW9uID09IENBTEwpIHsKKysJCS8qIGFuIG9yZGlu YXJ5IGNhbGwgaGVhZGVyICovCisrCQlnb3RvIHByb2Nlc3NfY2FsbDsKKysJfQorKworKwlpZiAo cmVxLT5ycV9tc2cucm1fZGlyZWN0aW9uID09IFJFUExZKSB7CisrCQkvKiByZXBseSBoZWFkZXIg KHhwcnQgT0spICovCisrCQljbG50X3JlcV9wcm9jZXNzX3JlcGx5KHJlcS0+cnFfeHBydCwgcmVx KTsKKysJCXJldHVybiBYUFJUX0lETEU7CisrCX0KKysKKysJX193YXJueChUSVJQQ19ERUJVR19G TEFHX1dBUk4sCisrCQkiJXM6ICVwIGZkICVkIGZhaWxlZCBkaXJlY3Rpb24gJSIgUFJJdTMyCisr CQkiICh3aWxsIHNldCBkZWFkKSIsCisrCQlfX2Z1bmNfXywgcmVxLT5ycV94cHJ0LCByZXEtPnJx X3hwcnQtPnhwX2ZkLAorKwkJcmVxLT5ycV9tc2cucm1fZGlyZWN0aW9uKTsKKysJcmV0dXJuIChY UFJUX0RJRUQpOworKworK3Byb2Nlc3NfY2FsbDoKKysKKyAJLyogdGhlIGNoZWNrc3VtICovCisg CXJlcS0+cnFfY2tzdW0gPSAwOworIAorQEAgLTI4OSw3ICszMTcsNyBAQAorIAorIAlzdmNfcnFz dF94cHJ0X3VucmVnaXN0ZXJfcmRtYSh4cHJ0LCBmbGFncyk7CisgCistCV9fd2FybngoVElSUENf REVCVUdfRkxBR19FVkVOVCwKKysJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQQ19SRE1BLAor IAkgICAgIiVzKCkgJXBbJXVdIiwKKyAJICAgIF9fZnVuY19fLCByZG1hX3hwcnQsIHJkbWFfeHBy dC0+c3RhdGUpOworIAorQEAgLTMxMyw3ICszNDEsNyBAQAorIHsKKyAJUkRNQVhQUlQgKnJkbWFf eHBydCA9IFJETUFfRFIoUkVDX1hQUlQoeHBydCkpOworIAorLQlfX3dhcm54KFRJUlBDX0RFQlVH X0ZMQUdfRVZFTlQsCisrCV9fd2FybngoVElSUENfREVCVUdfRkxBR19SUENfUkRNQSwKKyAJCSIl cygpICVwIHhwX3JlZmNudCAlIiBQUklkMzIKKyAJCSIgc2hvdWxkIGFjdHVhbGx5IGRlc3Ryb3kg dGhpbmdzIEAgJXM6JWQiLAorIAkJX19mdW5jX18sIHhwcnQsIHhwcnQtPnhwX3JlZmNudCwgdGFn LCBsaW5lKTsKK0BAIC0zNjgsNyArMzk2LDcgQEAKKyAJcmV0dXJuIChUUlVFKTsKKyB9CisgCist c3RhdGljIHZvaWQKKyt2b2lkCisgc3ZjX3JkbWFfb3BzKFNWQ1hQUlQgKnhwcnQpCisgeworIAlz dGF0aWMgc3RydWN0IHhwX29wcyBvcHM7CitkaWZmIC11ciBudGlycGMtNy4yL3NyYy9zdmNfcnFz dC5jIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL3NyYy9z dmNfcnFzdC5jCistLS0gbnRpcnBjLTcuMi9zcmMvc3ZjX3Jxc3QuYwkyMDI1LTA5LTIzIDEwOjA1 OjE5LjAwMDAwMDAwMCAtMDQwMAorKysrIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzcz NDdlZTEyOTc4MjU2YmQxL3NyYy9zdmNfcnFzdC5jCTIwMjYtMDUtMTggMTk6NDA6MjAuMDAwMDAw MDAwIC0wNDAwCitAQCAtMjk3LDcgKzI5Nyw3IEBACisgc3RhdGljIHZvaWQgc3ZjX3Jxc3RfZXBv bGxfbG9vcChzdHJ1Y3Qgd29ya19wb29sX2VudHJ5ICp3cGUpOworIHN0YXRpYyB2b2lkIHN2Y19j b21wbGV0ZV90YXNrKHN0cnVjdCBzdmNfcnFzdF9yZWMgKnNyX3JlYywgYm9vbCBmaW5pc2hlZCk7 CisgCistc3RhdGljIGludAorK2ludAorIHN2Y19ycXN0X2V4cGlyZV9jbXBmKGNvbnN0IHN0cnVj dCBvcHJfcmJ0cmVlX25vZGUgKmxocywKKyAJCSAgICAgY29uc3Qgc3RydWN0IG9wcl9yYnRyZWVf bm9kZSAqcmhzKQorIHsKK0BAIC0zNzEsNyArMzcxLDcgQEAKKyAJZXZfc2lnKHNyX3JlYy0+c3Zb MF0sIDApOwkvKiBzZW5kIHdha2V1cCAqLworIH0KKyAKKy1zdGF0aWMgdm9pZAorK3ZvaWQKKyBz dmNfcnFzdF9leHBpcmVfdGFzayhzdHJ1Y3Qgd29ya19wb29sX2VudHJ5ICp3cGUpCisgeworIAlz dHJ1Y3QgY2xudF9yZXEgKmNjID0gb3ByX2NvbnRhaW5lcm9mKHdwZSwgc3RydWN0IGNsbnRfcmVx LCBjY193cGUpOworZGlmZiAtdXIgbnRpcnBjLTcuMi9zcmMvc3ZjX3ZjLmMgbnRpcnBjLTVjNzYx YmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvc3JjL3N2Y192Yy5jCistLS0gbnRp cnBjLTcuMi9zcmMvc3ZjX3ZjLmMJMjAyNS0wOS0yMyAxMDowNToxOS4wMDAwMDAwMDAgLTA0MDAK KysrKyBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9zcmMv c3ZjX3ZjLmMJMjAyNi0wNS0xOCAxOTo0MDoyMC4wMDAwMDAwMDAgLTA0MDAKK0BAIC03NCw2ICs3 NCw3IEBACisgI2luY2x1ZGUgPHJwYy9zdmNfYXV0aC5oPgorICNpbmNsdWRlIDxycGMvc3ZjX3Jx c3QuaD4KKyAjaW5jbHVkZSA8cnBjL3hkcl9pb3EuaD4KKysjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+ CisgCisgI2luY2x1ZGUgInJwY19jb20uaCIKKyAjaW5jbHVkZSAiY2xudF9pbnRlcm5hbC5oIgor QEAgLTQzOCw2ICs0MzksNyBAQAorIAlzb2NrbGVuX3QgbGVuOworIAlzdGF0aWMgaW50IG4gPSAx OworIAlzdHJ1Y3QgdGltZXZhbCB0aW1ldmFsOworKwlzdHJ1Y3Qgc29ja2FkZHIgKnNhOworIAor IAlYUFJUX0FVVE9fVFJBQ0VQT0lOVCh4cHJ0LCByZW5kZXp2b3VzX3N0YXJ0LCBUUkFDRV9JTkZP LAorIAkJInJlbmRlenZvdXNfc3RhcnQiKTsKK0BAIC01MDUsNiArNTA3LDI4IEBACisgCW5ld3hw cnQtPnhwX3JlbW90ZS5uYi5sZW4gPSBsZW47CisgCVhQUlRfVFJBQ0UobmV3eHBydCwgX19mdW5j X18sIF9fZnVuY19fLCBfX0xJTkVfXyk7CisgCisrCXNhID0gKHN0cnVjdCBzb2NrYWRkciAqKW5l d3hwcnQtPnhwX3JlbW90ZS5uYi5idWY7CisrCS8qIFN0b3JlIGNsaWVudCBpbmZvcm1hdGlvbiAo SVAgJiBQb3J0KSBpbiBTVkNYUFJUICovCisrCWlmIChuZXd4cHJ0LT54cF9yZW1vdGUubmIubGVu ID4gMCAmJiBzYSAhPSBOVUxMKSB7CisrCQlpZiAoc2EtPnNhX2ZhbWlseSA9PSBBRl9JTkVUKSB7 CisrCQkJc3RydWN0IHNvY2thZGRyX2luICpzaW4gPSAoc3RydWN0IHNvY2thZGRyX2luICopc2E7 CisrCQkJaW5ldF9udG9wKEFGX0lORVQsICZzaW4tPnNpbl9hZGRyLCBuZXd4cHJ0LT54cF9jbG50 X2FkZHIsCisrCQkJCQlzaXplb2YobmV3eHBydC0+eHBfY2xudF9hZGRyKSk7CisrCQkJbmV3eHBy dC0+eHBfY2xudF9wb3J0ID0gbnRvaHMoc2luLT5zaW5fcG9ydCk7CisrCQl9IGVsc2UgaWYgKHNh LT5zYV9mYW1pbHkgPT0gQUZfSU5FVDYpIHsKKysJCQlzdHJ1Y3Qgc29ja2FkZHJfaW42ICpzaW42 ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilzYTsKKysJCQlpbmV0X250b3AoQUZfSU5FVDYsICZz aW42LT5zaW42X2FkZHIsIG5ld3hwcnQtPnhwX2NsbnRfYWRkciwKKysJCQkJCXNpemVvZihuZXd4 cHJ0LT54cF9jbG50X2FkZHIpKTsKKysJCQluZXd4cHJ0LT54cF9jbG50X3BvcnQgPSBudG9ocyhz aW42LT5zaW42X3BvcnQpOworKwkJfSBlbHNlIHsKKysJCQlzbnByaW50ZihuZXd4cHJ0LT54cF9j bG50X2FkZHIsIHNpemVvZihuZXd4cHJ0LT54cF9jbG50X2FkZHIpLCAidW5rbm93biIpOworKwkJ CW5ld3hwcnQtPnhwX2NsbnRfcG9ydCA9IDA7CisrCQl9CisrCX0gZWxzZSB7CisrCQlzbnByaW50 ZihuZXd4cHJ0LT54cF9jbG50X2FkZHIsIHNpemVvZihuZXd4cHJ0LT54cF9jbG50X2FkZHIpLCAi bm9fYWRkciIpOworKwkJbmV3eHBydC0+eHBfY2xudF9wb3J0ID0gMDsKKysJfQorKworIAkvKiBY WFggZnZkbCAtIGlzIHRoaXMgdXNlZnVsPyAoWWVzLiAgTWF0dCkgKi8KKyAJaWYgKHNpLnNpX3By b3RvID09IElQUFJPVE9fVENQKSB7CisgCQlsZW4gPSAxOworQEAgLTk3OSw3ICsxMDAzLDcgQEAK KyAJU1ZDWFBSVCAqeHBydCwgc3RydWN0IHByb3h5X2hlYWRlcl9wYXJ0ICpwcm94eV9oZWFkZXJf cGFydCkKKyB7CisgCWVudW0gaGFwcm94eV9yZXRfY29kZSByZXQ7CistCV9fd2FybngoVElSUENf REVCVUdfRkxBR19FVkVOVCwKKysJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQQ19SRE1BLAor IAkJIiVzOiAlcCBmZCAlZCBwcm94eSBpZ25vcmVkIGZvciBsb2NhbC4gbGVuIGlnbm9yZWQ6ICVk IiwKKyAJCV9fZnVuY19fLCB4cHJ0LCB4cHJ0LT54cF9mZCwgcHJveHlfaGVhZGVyX3BhcnQtPmxl bik7CisgCWNvbnN0IGVudW0gaGFwcm94eV9yZXRfY29kZSBpZ25vcmVfcmVtYWluaW5nX2RhdGFf cmVzdWx0ID0KK0BAIC0xMjA1LDkgKzEyMjksOSBAQAorIAkJCQkJCXhwcnQsCisgCQkJCQkJU1ZD X1hQUlRfRkxBR19BRERFRF9SRUNWKSkpIHsKKyAJCQkJCV9fd2FybngoVElSUENfREVCVUdfRkxB R19FUlJPUiwKKy0JCQkJCQkiJXM6ICVwIGZkICVkIHN2Y19ycXN0X3JlYXJtX2V2ZW50cyBmYWls ZWQgKHdpbGwgc2V0IGRlYWQpIiwKKysJCQkJCQkiJXM6ICVwIGZkICVkIHN2Y19ycXN0X3JlYXJt X2V2ZW50cyBmYWlsZWQgKHdpbGwgc2V0IGRlYWQpIC0gY2xpZW50aXA6ICVzOiV1IiwKKyAJCQkJ CQkic3ZjX3ZjX3dhaXQiLAorLQkJCQkJCXhwcnQsIHhwcnQtPnhwX2ZkKTsKKysJCQkJCQl4cHJ0 LCB4cHJ0LT54cF9mZCwgeHBydC0+eHBfY2xudF9hZGRyLCB4cHJ0LT54cF9jbG50X3BvcnQpOwor IAkJCQkJU1ZDX0RFU1RST1koeHBydCk7CisgCQkJCQljb2RlID0gRUlOVkFMOworIAkJCQl9CitA QCAtMTIxNiw4ICsxMjQwLDggQEAKKyAJCQkJcmV0dXJuIFNWQ19TVEFUKHhwcnQpOworIAkJCX0K KyAJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfV0FSTiwKKy0JCQkJIiVzOiAlcCBmZCAlZCBy ZWN2IGVycm5vICVkICh3aWxsIHNldCBkZWFkKSIsCistCQkJCSJzdmNfdmNfd2FpdCIsIHhwcnQs IHhwcnQtPnhwX2ZkLCBjb2RlKTsKKysJCQkJIiVzOiAlcCBmZCAlZCByZWN2IGVycm5vICVkICh3 aWxsIHNldCBkZWFkKSAtIGNsaWVudGlwOiAlczoldSIsCisrCQkJCSJzdmNfdmNfd2FpdCIsIHhw cnQsIHhwcnQtPnhwX2ZkLCBjb2RlLCB4cHJ0LT54cF9jbG50X2FkZHIsIHhwcnQtPnhwX2NsbnRf cG9ydCk7CisgCQkJU1ZDX0RFU1RST1koeHBydCk7CisgCisgCQkJWFBSVF9BVVRPX1RSQUNFUE9J TlQoeHBydCwgcmVjdl9lcnIsCitAQCAtMTIyNyw4ICsxMjUxLDggQEAKKyAKKyAJCWlmICh1bmxp a2VseSghcmxlbikpIHsKKyAJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfU1ZDX1ZDLAorLQkJ CQkiJXM6ICVwIGZkICVkIHJlY3YgY2xvc2VkICh3aWxsIHNldCBkZWFkKSIsCistCQkJCSJzdmNf dmNfd2FpdCIsIHhwcnQsIHhwcnQtPnhwX2ZkKTsKKysJCQkJIiVzOiAlcCBmZCAlZCByZWN2IGNs b3NlZCAod2lsbCBzZXQgZGVhZCkgLSBjbGllbnRpcDogJXM6JXUiLAorKwkJCQkic3ZjX3ZjX3dh aXQiLCB4cHJ0LCB4cHJ0LT54cF9mZCwgeHBydC0+eHBfY2xudF9hZGRyLCB4cHJ0LT54cF9jbG50 X3BvcnQpOworIAkJCVNWQ19ERVNUUk9ZKHhwcnQpOworIAorIAkJCVhQUlRfQVVUT19UUkFDRVBP SU5UKHhwcnQsIHJlY3ZfZW1wdHksCitAQCAtMTI0Myw2ICsxMjY3LDE2IEBACisgCQkJInN4X2Zi dGJjID0gJTA4eCIsIChpbnQpeGQtPnN4X2ZidGJjKTsKKyAKKyAJCWlmICh4ZC0+c3hfZmJ0YmMg PT0gUFAyX1NJR19VSU5UMzIpIHsKKysJCQkvKiBTaW5jZSB0aGlzIGlzIGhhcHJveHkgaGVhZGVy IGNsZWFyIG9mZiBzeF9mYnRiYworKwkJCSAqIEluIGNhc2Ugb2YgSEFQUk9YWV9SRVRfQ09ERV9f SUdOT1JFX0xPQ0FMLAorKwkJCSAqIGhhbmRsZV9oYXByb3h5X2hlYWRlcigpIGRvIHJlYXJtIHRo ZSB4cHJ0IHJlY3YgZmQuCisrCQkJICogY2F1c2luZyBhIHJhY2UgaWYgdGhlIHRocmVhZCBnZXRz IHNjaGVkdWxlZAorKwkJCSAqIG91dCBhZnRlciByZWFybSBhbmQgZXBvbGxfd2FpdCBnZXRzIGRh dGEgYXZhaWxhYmxlCisrCQkJICogZXZlbnQsIHRoZW4gbmV3IHJlY3YgZW5kdXAgaW4gZWxzZWNh c2UKKysJCQkgKiAiaWYgKCF4ZC0+c3hfZmJ0YmMpIgorKwkJCSAqIGFuZCB3aWxsIGNhdXNlIHV2 IHRvIE5VTEwgKi8KKysJCQl4ZC0+c3hfZmJ0YmMgPSAwOworKworIAkJCS8qIEhBIFByb3h5IFYy PyAqLworIAkJCWVudW0gaGFwcm94eV9yZXRfY29kZSByZXQgPSBoYW5kbGVfaGFwcm94eV9oZWFk ZXIoeHBydCk7CisgCQkJc3dpdGNoIChyZXQpIHsKK0BAIC0xMjUyLDE3ICsxMjg2LDE1IEBACisg CQkJCQlyZXR1cm4gU1ZDX1NUQVQoeHBydCk7CisgCQkJCX0KKyAJCQkJLyogTm93IGxvb2sgdG8g c2VlIGlmIHRoZXJlJ3MgbW9yZS4uLiAqLworLQkgICAgICAgICAgICAgICAgICAgICAgICB4ZC0+ c3hfZmJ0YmMgPSAwOworIAkJCQloYXBfYWdhaW4gPSB0cnVlOworIAkJCQlnb3RvIGFnYWluOwor IAkJCWNhc2UgSEFQUk9YWV9SRVRfQ09ERV9fRkFJTFVSRToKKyAJCQkJU1ZDX0RFU1RST1koeHBy dCk7CisgCQkJCXJldHVybiBTVkNfU1RBVCh4cHJ0KTsKKyAJCQljYXNlIEhBUFJPWFlfUkVUX0NP REVfX0lHTk9SRV9MT0NBTDoKKy0JCQkJLyogY2xlYXIgb2ZmIHN4X2ZidGJjICovCistCSAgICAg ICAgICAgICAgICAgICAgICAgIHhkLT5zeF9mYnRiYyA9IDA7CisgCQkJCXJldHVybiBTVkNfU1RB VCh4cHJ0KTsKKyAJCQljYXNlIEhBUFJPWFlfUkVUX0NPREVfX05PVF9IQVBST1hZOgorKwkJCQl4 ZC0+c3hfZmJ0YmMgPSBQUDJfU0lHX1VJTlQzMjsKKyAJCQkJYnJlYWs7CisgCQkJfQorIAkJfQor QEAgLTEyNzYsOCArMTMwOCw4IEBACisgCisgCQlpZiAodW5saWtlbHkoIXhkLT5zeF9mYnRiYykp IHsKKyAJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsCistCQkJCSIlczogJXAgZmQg JWQgZnJhZ21lbnQgaXMgemVybyAod2lsbCBzZXQgZGVhZCkiLAorLQkJCQlfX2Z1bmNfXywgeHBy dCwgeHBydC0+eHBfZmQpOworKwkJCQkiJXM6ICVwIGZkICVkIGZyYWdtZW50IGlzIHplcm8gKHdp bGwgc2V0IGRlYWQpIC0gY2xpZW50aXA6ICVzOiV1IiwKKysJCQkJX19mdW5jX18sIHhwcnQsIHhw cnQtPnhwX2ZkLCB4cHJ0LT54cF9jbG50X2FkZHIsIHhwcnQtPnhwX2NsbnRfcG9ydCk7CisgCQkJ U1ZDX0RFU1RST1koeHBydCk7CisgCisgCQkJWFBSVF9BVVRPX1RSQUNFUE9JTlQoeHBydCwgcmVj dl9ub19yZWNvcmQsCitAQCAtMTMwMywxNCArMTMzNSwxNCBAQAorIAorIAkJaWYgKGNvZGUgPT0g RUFHQUlOIHx8IGNvZGUgPT0gRVdPVUxEQkxPQ0spIHsKKyAJCQlfX3dhcm54KFRJUlBDX0RFQlVH X0ZMQUdfU1ZDX1ZDLAorLQkJCQkiJXM6ICVwIGZkICVkIHJlY3YgZXJybm8gJWQgKHRyeSBhZ2Fp bikiLAorLQkJCQlfX2Z1bmNfXywgeHBydCwgeHBydC0+eHBfZmQsIGNvZGUpOworKwkJCQkiJXM6 ICVwIGZkICVkIHJlY3YgZXJybm8gJWQgKHRyeSBhZ2FpbikgLSBjbGllbnRpcDogJXM6JXUiLAor KwkJCQlfX2Z1bmNfXywgeHBydCwgeHBydC0+eHBfZmQsIGNvZGUsIHhwcnQtPnhwX2NsbnRfYWRk ciwgeHBydC0+eHBfY2xudF9wb3J0KTsKKyAJCQlpZiAodW5saWtlbHkoc3ZjX3Jxc3RfcmVhcm1f ZXZlbnRzKAorIAkJCQkJCXhwcnQsCisgCQkJCQkJU1ZDX1hQUlRfRkxBR19BRERFRF9SRUNWKSkp IHsKKyAJCQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLAorLQkJCQkJIiVzOiAlcCBm ZCAlZCBzdmNfcnFzdF9yZWFybV9ldmVudHMgZmFpbGVkICh3aWxsIHNldCBkZWFkKSIsCistCQkJ CQlfX2Z1bmNfXywgeHBydCwgeHBydC0+eHBfZmQpOworKwkJCQkJIiVzOiAlcCBmZCAlZCBzdmNf cnFzdF9yZWFybV9ldmVudHMgZmFpbGVkICh3aWxsIHNldCBkZWFkKSAtIGNsaWVudGlwOiAlczol dSIsCisrCQkJCQlfX2Z1bmNfXywgeHBydCwgeHBydC0+eHBfZmQsIHhwcnQtPnhwX2NsbnRfYWRk ciwgeHBydC0+eHBfY2xudF9wb3J0KTsKKyAJCQkJU1ZDX0RFU1RST1koeHBydCk7CisgCQkJCWNv ZGUgPSBFSU5WQUw7CisgCQkJfQorQEAgLTEzMjEsOCArMTM1Myw4IEBACisgCQkJcmV0dXJuIFNW Q19TVEFUKHhwcnQpOworIAkJfQorIAkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLAor LQkJCSIlczogJXAgZmQgJWQgcmVjdiBlcnJubyAlZCAod2lsbCBzZXQgZGVhZCkiLAorLQkJCV9f ZnVuY19fLCB4cHJ0LCB4cHJ0LT54cF9mZCwgY29kZSk7CisrCQkJIiVzOiAlcCBmZCAlZCByZWN2 IGVycm5vICVkICh3aWxsIHNldCBkZWFkKSAtIGNsaWVudGlwOiAlczoldSIsCisrCQkJX19mdW5j X18sIHhwcnQsIHhwcnQtPnhwX2ZkLCBjb2RlLCB4cHJ0LT54cF9jbG50X2FkZHIsIHhwcnQtPnhw X2NsbnRfcG9ydCk7CisgCQlTVkNfREVTVFJPWSh4cHJ0KTsKKyAKKyAJCVhQUlRfQVVUT19UUkFD RVBPSU5UKHhwcnQsIHJlY3ZfZXJyb3IsCitAQCAtMTMzMyw4ICsxMzY1LDggQEAKKyAKKyAJaWYg KHVubGlrZWx5KCFybGVuKSkgeworIAkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1NWQ19WQywK Ky0JCQkiJXM6ICVwIGZkICVkIHJlY3YgY2xvc2VkICh3aWxsIHNldCBkZWFkKSIsCistCQkJX19m dW5jX18sIHhwcnQsIHhwcnQtPnhwX2ZkKTsKKysJCQkiJXM6ICVwIGZkICVkIHJlY3YgY2xvc2Vk ICh3aWxsIHNldCBkZWFkKSAtIGNsaWVudGlwOiAlczoldSIsCisrCQkJX19mdW5jX18sIHhwcnQs IHhwcnQtPnhwX2ZkLCB4cHJ0LT54cF9jbG50X2FkZHIsIHhwcnQtPnhwX2NsbnRfcG9ydCk7Cisg CQlTVkNfREVTVFJPWSh4cHJ0KTsKKyAKKyAJCVhQUlRfQVVUT19UUkFDRVBPSU5UKHhwcnQsIHJl Y3ZfY2xvc2VkLAorQEAgLTEzNTgsOCArMTM5MCw4IEBACisgCQlpZiAodW5saWtlbHkoc3ZjX3Jx c3RfcmVhcm1fZXZlbnRzKHhwcnQsCisgCQkJCQkJICAgU1ZDX1hQUlRfRkxBR19BRERFRF9SRUNW KSkpIHsKKyAJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsCistCQkJCSIlczogJXAg ZmQgJWQgc3ZjX3Jxc3RfcmVhcm1fZXZlbnRzIGZhaWxlZCAod2lsbCBzZXQgZGVhZCkiLAorLQkJ CQlfX2Z1bmNfXywgeHBydCwgeHBydC0+eHBfZmQpOworKwkJCQkiJXM6ICVwIGZkICVkIHN2Y19y cXN0X3JlYXJtX2V2ZW50cyBmYWlsZWQgKHdpbGwgc2V0IGRlYWQpIC0gY2xpZW50aXA6ICVzOiV1 IiwKKysJCQkJX19mdW5jX18sIHhwcnQsIHhwcnQtPnhwX2ZkLCB4cHJ0LT54cF9jbG50X2FkZHIs IHhwcnQtPnhwX2NsbnRfcG9ydCk7CisgCQkJWFBSVF9VTklRVUVfQVVUT19UUkFDRVBPSU5UKHhw cnQsIHJlYXJtX2ZhaWxlZCwKKyAJCQkJVFJBQ0VfRVJSLCAiUmVhcm0gZmFpbGVkIik7CisgCQkJ U1ZDX0RFU1RST1koeHBydCk7CitAQCAtMTM4NSw4ICsxNDE3LDggQEAKKyAKKyAJaWYgKHVubGlr ZWx5KHN2Y19ycXN0X3JlYXJtX2V2ZW50cyh4cHJ0LCBTVkNfWFBSVF9GTEFHX0FEREVEX1JFQ1Yp KSkgeworIAkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLAorLQkJCSIlczogJXAgZmQg JWQgc3ZjX3Jxc3RfcmVhcm1fZXZlbnRzIGZhaWxlZCAod2lsbCBzZXQgZGVhZCkiLAorLQkJCV9f ZnVuY19fLCB4cHJ0LCB4cHJ0LT54cF9mZCk7CisrCQkJIiVzOiAlcCBmZCAlZCBzdmNfcnFzdF9y ZWFybV9ldmVudHMgZmFpbGVkICh3aWxsIHNldCBkZWFkKSAtIGNsaWVudGlwOiAlczoldSIsCisr CQkJX19mdW5jX18sIHhwcnQsIHhwcnQtPnhwX2ZkLCB4cHJ0LT54cF9jbG50X2FkZHIsIHhwcnQt PnhwX2NsbnRfcG9ydCk7CisgCQl4ZHJfaW9xX2Rlc3Ryb3koeGlvcSwgeGlvcS0+aW9xX3MucXNp emUpOworIAkJU1ZDX0RFU1RST1koeHBydCk7CisgCitkaWZmIC11ciBudGlycGMtNy4yL3NyYy9z dmNfeHBydC5jIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQx L3NyYy9zdmNfeHBydC5jCistLS0gbnRpcnBjLTcuMi9zcmMvc3ZjX3hwcnQuYwkyMDI1LTA5LTIz IDEwOjA1OjE5LjAwMDAwMDAwMCAtMDQwMAorKysrIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1 YmFiNzczNDdlZTEyOTc4MjU2YmQxL3NyYy9zdmNfeHBydC5jCTIwMjYtMDUtMTggMTk6NDA6MjAu MDAwMDAwMDAwIC0wNDAwCitAQCAtNDE0LDExICs0MTQsMTcgQEAKKyAJCQkJCWdvdG8gcmVzdGFy dDsKKyAJCQkJfQorIAkJCX0KKy0JCQkvKiBJZiBleGl0cyBlYXJsaWVyLCBjbGVhciB0aGUgZmxh ZyBleHBsaWNpdGx5ICovCisrCQkJLyoKKysJCQkgKiBHZXQgdGhlIG5leHQgbm9kZSBCRUZPUkUg cmVsZWFzaW5nIHRoZSByZWZlcmVuY2UuCisrCQkJICogU1ZDX1JFTEVBU0UgbWF5IHRyaWdnZXIg ZGVzdHJ1Y3Rpb24gaWYgcmVmY250IGRyb3BzCisrCQkJICogdG8gMCwgd2hpY2ggZnJlZXMgdGhl IG1lbW9yeS4gVGhlIG1lbW9yeSBjYW4gYmUKKysJCQkgKiBpbW1lZGlhdGVseSByZXVzZWQgYnkg YW5vdGhlciB4cHJ0ICh1c2UtYWZ0ZXItZnJlZSkuCisrCQkJICovCisrCQkJbiA9IG9wcl9yYnRy ZWVfbmV4dChuKTsKKysJCQkvKiBOb3cgc2FmZSB0byByZWxlYXNlIC0gd2UgaGF2ZSB0aGUgbmV4 dCBub2RlICovCisgCQkJYXRvbWljX2NsZWFyX3VpbnQxNl90X2JpdHMoCisgCQkJCSZyZWMtPnhw cnQueHBfZmxhZ3MsIFNWQ19YUFJUX1RSRUVfTE9DS0VEKTsKKyAJCQlTVkNfUkVMRUFTRSgmcmVj LT54cHJ0LCBTVkNfUkVMRUFTRV9GTEFHX05PTkUpOworLQkJCW4gPSBvcHJfcmJ0cmVlX25leHQo bik7CisgCQl9CQkvKiBjdXJyIHBhcnRpdGlvbiAqLworIAkJcndsb2NrX3VubG9jaygmdC0+bG9j ayk7IC8qIHQgIUxPQ0tFRCAqLworIAkJcF9peCsrOworZGlmZiAtdXIgbnRpcnBjLTcuMi9zcmMv eGRyX2lvcS5jIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQx L3NyYy94ZHJfaW9xLmMKKy0tLSBudGlycGMtNy4yL3NyYy94ZHJfaW9xLmMJMjAyNS0wOS0yMyAx MDowNToxOS4wMDAwMDAwMDAgLTA0MDAKKysrKyBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJh Yjc3MzQ3ZWUxMjk3ODI1NmJkMS9zcmMveGRyX2lvcS5jCTIwMjYtMDUtMTggMTk6NDA6MjAuMDAw MDAwMDAwIC0wNDAwCitAQCAtMjYwLDYgKzI2MCw3IEBACisgCQkgICAgJnJkbWFfeHBydC0+bGFz dF9leHRyYV9idWZfYWxsb2NhdGlvbl90aW1lKTsKKyAJfQorIAorKwlfX3dhcm54KFRJUlBDX0RF QlVHX0ZMQUdfWERSLCAiaW8gYnVmIHJlZiAlcCByZWZzICVkIiwgaW9fYnVmLCBpb19idWYtPnJl ZnMpOworIAlyZXR1cm4gYXRvbWljX2luY191aW50MzJfdCgmaW9fYnVmLT5yZWZzKTsKKyB9Cisg CitAQCAtMjkxLDcgKzI5Miw3IEBACisgeworIAlzdHJ1Y3QgcG9vbHFfaGVhZCAqaW9xaCA9IGdl dF9kYXRhX3Bvb2xxX2hlYWQoaW9fYnVmLCByZG1hX3hwcnQpOworIAorLQlfX3dhcm54KFRJUlBD X0RFQlVHX0ZMQUdfRVZFTlQsICIlczogU3RhcnQgc2hyaW5raW5nIHhwcnQgJXAgIgorKwlfX3dh cm54KFRJUlBDX0RFQlVHX0ZMQUdfWERSLCAiJXM6IFN0YXJ0IHNocmlua2luZyB4cHJ0ICVwICIK KyAJICAgICJpb19idWYgJXAgcmVmcyAlZCBpb3FoICVwIGNvdW50ICVkIiwKKyAJICAgIF9fZnVu Y19fLCByZG1hX3hwcnQsIGlvX2J1ZiwgaW9fYnVmLT5yZWZzLCBpb3FoLAorIAkgICAgaW9xaC0+ cWNvdW50KTsKK0BAIC0zODUsNyArMzg2LDcgQEAKKyAJCQlyZG1hX3hwcnQtPmlvX2J1ZnNfY291 bnQtLTsKKyAJCQlyZG1hX3hwcnQtPmlvX2J1ZnMucWNvdW50LS07CisgCistCQkJX193YXJueChU SVJQQ19ERUJVR19GTEFHX0VWRU5ULCAiJXM6IHhwcnQgJXAgc2hyaW5rICIKKysJCQlfX3dhcm54 KFRJUlBDX0RFQlVHX0ZMQUdfWERSLCAiJXM6IHhwcnQgJXAgc2hyaW5rICIKKyAJCQkgICAgImlv X2J1ZiAlcCByZWZzICVkIGlvX2J1ZnMgY291bnQgJWQgJWQiLAorIAkJCSAgICBfX2Z1bmNfXywg cmRtYV94cHJ0LCBpb19idWYsIGlvX2J1Zi0+cmVmcywKKyAJCQkgICAgcmRtYV94cHJ0LT5pb19i dWZzX2NvdW50LAorQEAgLTQwMyw2ICs0MDQsNyBAQAorIAlzdHJ1Y3QgcnBjX2lvX2J1ZnMgKmlv X2J1ZiA9IGdldF9wYXJlbnRfY2h1bmsoaGF2ZSk7CisgCXVpbnQzMl90IHJlZnMgPSBhdG9taWNf ZGVjX3VpbnQzMl90KCZpb19idWYtPnJlZnMpOworIAlSRE1BWFBSVCAqcmRtYV94cHJ0ID0gKFJE TUFYUFJUICopaW9fYnVmLT5jdHg7CisrCV9fd2FybngoVElSUENfREVCVUdfRkxBR19YRFIsICJp byBidWYgdW5yZWYgJXAgcmVmcyAlZCIsIGlvX2J1ZiwgaW9fYnVmLT5yZWZzKTsKKyAKKyAJLyog Q2hlY2sgaWYgaXRzIG9uIG9uIGRlbWFuZCBhbGxvY2F0ZWQgZGF0YSBidWYgKi8KKyAJaWYgKGlz X3Nocmlua19idWYoaW9fYnVmLCByZG1hX3hwcnQpKSB7CitAQCAtNjQ4LDcgKzY1MCw3IEBACisg CQkJICAgIGlvX2J1Zi0+YnVmZmVyX2FsaWduZWQsIGlvX2J1Zi0+YnVmZmVyX3RvdGFsKSk7Cisg CQkJaW9fYnVmLT5tciA9IE5VTEw7CisgCistCQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VW RU5ULCAiJXMoKSBGcmVlIHhwcnQgJXAgbXIgIgorKwkJCV9fd2FybngoVElSUENfREVCVUdfRkxB R19YRFIsICIlcygpIEZyZWUgeHBydCAlcCBtciAiCisgCQkJICAgICJpb19idWZzICVwIHNpemUg JXUgaW9fYnVmICVwIiwgX19mdW5jX18sIHJkbWFfeHBydCwKKyAJCQkgICAgaW9fYnVmLT5idWZm ZXJfYWxpZ25lZCwgaW9fYnVmLT5idWZmZXJfdG90YWwsIGlvX2J1Zik7CisgCitAQCAtOTk4LDEy ICsxMDAwLDEyIEBACisgCX0KKyAKKyAJLyoKKy0JICogU21hbGwgUkRNQSBXcml0ZXMKKy0JICog SWYgZGF0YSBpcyBpbmxpbmUsIGl0IHNob3VsZCBiZSBwYXJ0IG9mIG5mc19idWZmZXIgaXRzZWxm LgorLQkgKiBTbywgdG8gYXZvaWQgdGhlIElMTEVHQUxfT1AsIHN0YXJ0IHNob3VsZCBhZHZhbmNl IGJ5IGRhdGFsZW4KKy0JICogdG8gcGljayB0aGUgY29ycmVjdCBPUCB3aGlsZSBkZWNvZGluZyB0 aGUgQ09NUE9VTkQgb3BzLgorKwkgKiBTbWFsbCBSRE1BIFdyaXRlcyAoSW5saW5lIFJETUEpCisr CSAqIFRoZSB3cml0ZSBkYXRhIGZpdHMgZW50aXJlbHkgd2l0aGluIHRoZSBjdXJyZW50IChORlMg aGVhZGVyKSBVVgorKwkgKiBhdCB0aGUgY3VycmVudCBYRFIgcG9zaXRpb24uICBSZXR1cm4gJ3N0 YXJ0JyB1bmNoYW5nZWQgc28gdGhhdAorKwkgKiBYRFJfRklMTEJVRlMgcmVhZHMgdGhlIGFjdHVh bCBkYXRhIGJ5dGVzLgorIAkgKi8KKy0JcmV0dXJuIHN0YXJ0ICsgZGF0YWxlbjsKKysJcmV0dXJu IHN0YXJ0OworIAorIH0KKyAKK0BAIC0xMDI3LDkgKzEwMjksMTUgQEAKKyAJICogbmV4dCBuZnMg aGVhZGVyIGluIGNvbXBvdW5kIG9wLiAqLworIAlpZiAoZGF0YWxlbiA+ICgodWludHB0cl90KXhk cnMtPnhfdi52aW9fdGFpbCAtICh1aW50cHRyX3QpeGRycy0+eF9kYXRhKSkgeworIAkJb2Zmc2V0 ID0gKHVpbnRwdHJfdCl4ZHJzLT54X3YudmlvX3RhaWwgLSAodWludHB0cl90KXhkcnMtPnhfZGF0 YTsKKysJCXJldHVybiBzdGFydCAtIG9mZnNldDsKKyAJfQorIAorLQlyZXR1cm4gc3RhcnQgLSBv ZmZzZXQ7CisrCS8qIElubGluZSBSRE1BOiAnc3RhcnQnIGlzIHRoZSBwb3NpdGlvbiBvZiB0aGUg Zmlyc3QgZGF0YSBieXRlCisrCSAqIChnZXRzdGFydGRhdGFwb3MgcmV0dXJuZWQgaXQgdW5jaGFu Z2VkKS4gICdkYXRhbGVuJyBoZXJlIGlzCisrCSAqIFJORFVQKGRhdGFfbGVuKSwgaS5lLiB0aGUg ZGF0YSBieXRlcyBwbHVzIGFueSBYRFIgYWxpZ25tZW50CisrCSAqIHBhZGRpbmcuICBBZHZhbmNl IHBhc3QgYm90aCBzbyB0aGUgZGVjb2RlciBpcyBwb3NpdGlvbmVkIGF0CisrCSAqIHRoZSBzdGFy dCBvZiB0aGUgbmV4dCBjb21wb3VuZCBvcC4gKi8KKysJcmV0dXJuIHN0YXJ0ICsgZGF0YWxlbjsK KyB9CisgCisgc3RhdGljIGJvb2wKK0BAIC0xODU1LDcgKzE4NjMsNyBAQAorIAorIAl3aGlsZSAo aWR4IDwgaW92X2NvdW50KSB7CisgCQkvKiBBbm90aGVyIFRSQUlMRVIgYnVmZmVyIHRvIG1hbmFn ZSAqLworLQkJdmlvX3R5cGUgdnQgPSB2ZWN0b3JbaWR4XS52aW9fdHlwZTsKKysJCXZpb190eXBl X3QgdnQgPSB2ZWN0b3JbaWR4XS52aW9fdHlwZTsKKyAKKyAJCV9fd2FybngoVElSUENfREVCVUdf RkxBR19YRFIsCisgCQkJIkNhbGxpbmcgeGRyX2lvcV91c2Vfb3JfYWxsb2NhdGUgZm9yIGlkeCAl ZCBmb3IgJXMiLAorZGlmZiAtdXIgbnRpcnBjLTcuMi9zcmMveGRyX3JkbWEuYyBudGlycGMtNWM3 NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9zcmMveGRyX3JkbWEuYworLS0t IG50aXJwYy03LjIvc3JjL3hkcl9yZG1hLmMJMjAyNS0wOS0yMyAxMDowNToxOS4wMDAwMDAwMDAg LTA0MDAKKysrKyBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJk MS9zcmMveGRyX3JkbWEuYwkyMDI2LTA1LTE4IDE5OjQwOjIwLjAwMDAwMDAwMCAtMDQwMAorQEAg LTIxMSwxNyArMjExLDE4IEBACisgCWludCByZXQgPSAwOworIAlpbnQzMl90IHdyaXRlX3dhaXRz ID0gYXRvbWljX2RlY19pbnQzMl90KCZjYmMtPndyaXRlX3dhaXRzKTsKKyAKKy0JX193YXJueChU SVJQQ19ERUJVR19GTEFHX1hEUiwKKy0JICAgICIlcygpICVwWyV1XSBjYmMgJXAgY2JjX3JlZiAl ZCB3cml0ZV93YWl0cyAlZFxuIiwKKy0JICAgIF9fZnVuY19fLCByZG1hX3hwcnQsIHJkbWFfeHBy dC0+c3RhdGUsIGNiYywKKy0JICAgIGNiYy0+cmVmY250LCB3cml0ZV93YWl0cyk7CisgCisgCWlm IChyZG1hX3hwcnQtPnNtX2RyLnhwcnQueHBfZmxhZ3MgJiBTVkNfWFBSVF9GTEFHX0RFU1RST1lF RCkgeworLQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLCAiICVzIHJkbWFfeHBydCAl cCBjYmMgJXAgIgorKwkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1hEUl9SRE1BLCAiICVzIHJk bWFfeHBydCAlcCBjYmMgJXAgIgorIAkJICAgICJjYmNfcmVmICVkIHdyaXRlX3dhaXRzICVkIGFs cmVhZHkgZGVzdHJveWVkIiwKKyAJCSAgICBfX2Z1bmNfXywgcmRtYV94cHJ0LCBjYmMsIGNiYy0+ cmVmY250LCB3cml0ZV93YWl0cyk7CisgCisgCQlyZXQgPSAgLTE7CisrCX0gZWxzZSB7CisrCQlf X3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfWERSLAorKwkJCSIlcygpICVwWyV1XSBjYmMgJXAgY2Jj X3JlZiAlZCB3cml0ZV93YWl0cyAlZFxuIiwKKysJCQlfX2Z1bmNfXywgcmRtYV94cHJ0LCByZG1h X3hwcnQtPnN0YXRlLCBjYmMsCisrCQkJY2JjLT5yZWZjbnQsIHdyaXRlX3dhaXRzKTsKKyAJfQor IAorIAljYmNfcmVsZWFzZV9pdChjYmMpOworQEAgLTIzNSwxNyArMjM2LDE4IEBACisgCWludCBy ZXQgPSAwOworIAlpbnQgd3JpdGVfd2FpdHMgPSBhdG9taWNfZGVjX2ludDMyX3QoJmNiYy0+d3Jp dGVfd2FpdHMpOworIAorLQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsCistCSAgICAi JXMoKSAlcFsldV0gY2JjICVwIHJlZnMgJWQgd3JpdGVfd2FpdHMgJWRcbiIsCistCSAgICBfX2Z1 bmNfXywgcmRtYV94cHJ0LCByZG1hX3hwcnQtPnN0YXRlLCBjYmMsCistCSAgICBjYmMtPnJlZmNu dCwgd3JpdGVfd2FpdHMpOworIAorIAlpZiAocmRtYV94cHJ0LT5zbV9kci54cHJ0LnhwX2ZsYWdz ICYgU1ZDX1hQUlRfRkxBR19ERVNUUk9ZRUQpIHsKKy0JCV9fd2FybngoVElSUENfREVCVUdfRkxB R19FUlJPUiwgIiAlcyByZG1hX3hwcnQgJXAgY2JjICVwICIKKysJCV9fd2FybngoVElSUENfREVC VUdfRkxBR19YRFJfUkRNQSwgIiAlcyByZG1hX3hwcnQgJXAgY2JjICVwICIKKyAJCSAgICAiY2Jj X3JlZiAlZCB3cml0ZV93YWl0cyAlZCBhbHJlYWR5IGRlc3Ryb3llZCIsCisgCQkgICAgX19mdW5j X18sIHJkbWFfeHBydCwgY2JjLCBjYmMtPnJlZmNudCwgd3JpdGVfd2FpdHMpOworIAorIAkJcmV0 ID0gLTE7CisrCX0gZWxzZSB7CisrCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsCisr CQkJIiVzKCkgJXBbJXVdIGNiYyAlcCByZWZzICVkIHdyaXRlX3dhaXRzICVkXG4iLAorKwkJCV9f ZnVuY19fLCByZG1hX3hwcnQsIHJkbWFfeHBydC0+c3RhdGUsIGNiYywKKysJCQljYmMtPnJlZmNu dCwgd3JpdGVfd2FpdHMpOworIAl9CisgCisgCWNiY19yZWxlYXNlX2l0KGNiYyk7CitAQCAtMjYw LDE1ICsyNjIsMTUgQEAKKyB7CisgCWludCByZXQgPSAwOworIAorLQlfX3dhcm54KFRJUlBDX0RF QlVHX0ZMQUdfWERSLAorLQkJIiVzKCkgJXBbJXVdIGNiYyAlcFxuIiwKKy0JCV9fZnVuY19fLCBy ZG1hX3hwcnQsIHJkbWFfeHBydC0+c3RhdGUsIGNiYyk7CistCisgCWlmIChyZG1hX3hwcnQtPnNt X2RyLnhwcnQueHBfZmxhZ3MgJiBTVkNfWFBSVF9GTEFHX0RFU1RST1lFRCkgeworLQkJX193YXJu eChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLCAiICVzIHJkbWFfeHBydCAlcCBjYmMgJXAgIgorKwkJ X193YXJueChUSVJQQ19ERUJVR19GTEFHX1hEUl9SRE1BLCAiICVzIHJkbWFfeHBydCAlcCBjYmMg JXAgIgorIAkJCSJhbHJlYWR5IGRlc3Ryb3llZCIsIF9fZnVuY19fLCByZG1hX3hwcnQsIGNiYyk7 CisgCisgCQlyZXQgPSAtMTsKKysJfSBlbHNlIHsKKysJCV9fd2FybngoVElSUENfREVCVUdfRkxB R19YRFIsCisrCQkJIiVzKCkgJXBbJXVdIGNiYyAlcFxuIiwKKysJCQlfX2Z1bmNfXywgcmRtYV94 cHJ0LCByZG1hX3hwcnQtPnN0YXRlLCBjYmMpOworIAl9CisgCisgCXhkcl9yZG1hX2NhbGxiYWNr X3NpZ25hbChjYmMsIHJkbWFfeHBydCk7CitAQCAtMjgzLDE1ICsyODUsMTYgQEAKKyB7CisgCWlu dCByZXQgPSAwOworIAorLQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsCistCQkiJXMo KSAlcFsldV0gY2JjICVwXG4iLAorLQkJX19mdW5jX18sIHJkbWFfeHBydCwgcmRtYV94cHJ0LT5z dGF0ZSwgY2JjKTsKKy0KKyAJaWYgKHJkbWFfeHBydC0+c21fZHIueHBydC54cF9mbGFncyAmIFNW Q19YUFJUX0ZMQUdfREVTVFJPWUVEKSB7CistCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJS T1IsICIgJXMgcmRtYV94cHJ0ICVwIGNiYyAlcCAiCisrCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZM QUdfWERSX1JETUEsICIgJXMgcmRtYV94cHJ0ICVwIGNiYyAlcCAiCisgCQkJImFscmVhZHkgZGVz dHJveWVkIiwgX19mdW5jX18sIHJkbWFfeHBydCwgY2JjKTsKKyAKKyAJCXJldCA9IC0xOworKwl9 IGVsc2UgeworKwkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLAorKwkJCSIlcygpICVw WyV1XSBjYmMgJXBcbiIsCisrCQkJX19mdW5jX18sIHJkbWFfeHBydCwgcmRtYV94cHJ0LT5zdGF0 ZSwgY2JjKTsKKysKKyAJfQorIAorIAl4ZHJfcmRtYV9jYWxsYmFja19zaWduYWwoY2JjLCByZG1h X3hwcnQpOworQEAgLTMwOCwxNSArMzExLDE2IEBACisgeworIAlpbnQgcmV0ID0gMDsKKyAKKy0J X193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLAorLQkJIkVycm9yIGluIHJlY3YgY2FsbGJh Y2sgJXMoKSAlcFsldV0gY2JjICVwXG4iLAorLQkJX19mdW5jX18sIHJkbWFfeHBydCwgcmRtYV94 cHJ0LT5zdGF0ZSwgY2JjKTsKKy0KKyAJaWYgKHJkbWFfeHBydC0+c21fZHIueHBydC54cF9mbGFn cyAmIFNWQ19YUFJUX0ZMQUdfREVTVFJPWUVEKSB7CistCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZM QUdfRVJST1IsICIgJXMgcmRtYV94cHJ0ICVwIGNiYyAlcCAiCisrCQlfX3dhcm54KFRJUlBDX0RF QlVHX0ZMQUdfWERSX1JETUEsICIgJXMgcmRtYV94cHJ0ICVwIGNiYyAlcCAiCisgCQkJImFscmVh ZHkgZGVzdHJveWVkIiwgX19mdW5jX18sIHJkbWFfeHBydCwgY2JjKTsKKyAKKyAJCXJldCA9IC0x OworKwl9IGVsc2UgeworKwkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLAorKwkJCSJF cnJvciBpbiByZWN2IGNhbGxiYWNrICVzKCkgJXBbJXVdIGNiYyAlcFxuIiwKKysJCQlfX2Z1bmNf XywgcmRtYV94cHJ0LCByZG1hX3hwcnQtPnN0YXRlLCBjYmMpOworKworIAl9CisgCisgCWNiYy0+ Y2JjX2ZsYWdzID0gQ0JDX0ZMQUdfUkVMRUFTRTsKK0BAIC0zNTUsNiArMzU5LDMzIEBACisgCisg CWF0b21pY19kZWNfdWludDMyX3QoJnJkbWFfeHBydC0+YWN0aXZlX3JlcXVlc3RzKTsKKyAKKysJ aWYgKChlbnVtIHhwcnRfc3RhdClyZXQgPT0gWFBSVF9TVVNQRU5EKSB7CisrCQkvKgorKwkJICog VGhlIHJlcXVlc3Qgd2FzIHN1c3BlbmRlZCBtaWQtY29tcG91bmQKKysJCSAqIGUuZy4gUU9TIEJX IHRocm90dGxlLCBhc3luYyBJTyBiYWNrZW5kLgorKwkJICogTm8gUkRNQSBXUklURS9TRU5EIG9w ZXJhdGlvbnMgaGF2ZSBiZWVuIHBvc3RlZAorKwkJICogeWV0LCBzbyBjYmMtPnJlZmNudCBpcyBz dGlsbCAxIChzZW50aW5lbCBvbmx5KS4gIFJlbGVhc2luZworKwkJICogdGhlIHNlbnRpbmVsIGhl cmUgd291bGQgZHJvcCByZWZjbnQgdG8gMCwgd2hpY2ggdHJpZ2dlcnMKKysJCSAqIHhkcl9yZG1h X2lvcV9yZWxlYXNlKCZjYmMtPmRhdGFxKSwgemVyb2luZyBkYXRhcS5xY291bnQgYW5kCisrCQkg KiByZXR1cm5pbmcgZGF0YV9jaHVua191diB0byB0aGUgcG9vbCB3aGlsZSB0aGUgc3VzcGVuZGVk CisrCQkgKiByZXF1ZXN0IHN0aWxsIGhvbGRzIGEgcG9pbnRlciB0byBpdC4gIFRoZSBzdWJzZXF1 ZW50CisrCQkgKiB4ZHJfcmRtYV9zdmNfZmx1c2hvdXQgY2FsbCB3b3VsZCB0aGVuIGhpdDoKKysJ CSAqICAgYXNzZXJ0KGRhdGFxLnFjb3VudCA+IDApICBmaXJlcyB3aXRoIHFjb3VudCA9PSAwCisr CQkgKgorKwkJICogRml4OiBtYXJrIEZMQUdfUkVMRUFTRSAoc28gY2xlYW51cCBmaXJlcyB3aGVu IHJlZnMgZXZlbnR1YWxseQorKwkJICogcmVhY2ggMCkgYnV0IGRlZmVyIHRoZSBzZW50aW5lbCBj YmNfcmVsZWFzZV9pdCB0bworKwkJICogeGRyX3JkbWFfc3ZjX2ZsdXNob3V0LCB3aGljaCBpcyBj YWxsZWQgYWZ0ZXIgUkRNQSBvcGVyYXRpb25zCisrCQkgKiBhcmUgcG9zdGVkIG9uIHRoZSByZXN1 bWUgcGF0aCBhbmQgdGhlaXIgcmVmcyBrZWVwIHRoZSBjYmMKKysJCSAqIGFsaXZlLgorKwkJICov CisrCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfWERSLAorKwkJCSIlcyByZG1hX3hwcnQgJXAg Y2JjICVwIHN1c3BlbmRlZCwgZGVmZXJyaW5nICIKKysJCQkic2VudGluZWwgcmVsZWFzZSB0byBm bHVzaG91dCIsCisrCQkJX19mdW5jX18sIHJkbWFfeHBydCwgY2JjKTsKKysJCWNiYy0+Y2JjX2Zs YWdzID0gQ0JDX0ZMQUdfUkVMRUFTRSB8IENCQ19GTEFHX1NFTlRJTkVMX1BFTkRJTkc7CisrCQly ZXR1cm4gcmV0OworKwl9CisrCisgZXJyOgorIAljYmMtPmNiY19mbGFncyA9IENCQ19GTEFHX1JF TEVBU0U7CisgCitAQCAtNDYxLDYgKzQ5MiwzNSBAQAorIAlyZXR1cm4gMDsKKyB9CisgCisrLyog UG9zdCBzeW5jaHJvbm91cyBSRE1BIHJlY2VpdmUgb3BlcmF0aW9uICovCisrc3RhdGljIGludAor K3hkcl9yZG1hX3Bvc3RfcmVjdl9zeW5jKFJETUFYUFJUICpyZG1hX3hwcnQsIHN0cnVjdCBycGNf cmRtYV9jYmMgKmNiYywgaW50IHNnZSkKKyt7CisrCWNiYy0+cG9zaXRpdmVfY2IgPSB4ZHJfcmRt YV93cmFwX2NhbGxiYWNrOworKwljYmMtPm5lZ2F0aXZlX2NiID0geGRyX3JkbWFfZGVzdHJveV9j YWxsYmFja19yZWN2OworKwljYmMtPmNhbGxiYWNrX2FyZyA9IE5VTEw7CisrCWNiYy0+Y2FsbF9p bmxpbmUgPSAxOworKworKwlTVkNfUkVGKCZyZG1hX3hwcnQtPnNtX2RyLnhwcnQsIFNWQ19SRUZf RkxBR19OT05FKTsKKysKKysJaW50IHJldCA9IHhkcl9yZG1hX3Bvc3RfcmVjdl9uKHJkbWFfeHBy dCwgY2JjLCBzZ2UpOworKworKwlpZiAocmV0KSB7CisrCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZM QUdfRVJST1IsICIlcyBwb3N0X3JlY3YgZmFpbGVkIHJkbWFfeHBydCAlcCAiCisrCQkJImNiYyAl cCBlcnJvciAlZCIsIF9fZnVuY19fLCByZG1hX3hwcnQsIGNiYywgcmV0KTsKKysKKysJCWNiYy0+ Y2JjX2ZsYWdzID0gQ0JDX0ZMQUdfUkVMRUFTRTsKKysKKysJCS8qIFJlbGVhc2Ugc2VudGluZWwg cmVmICovCisrCQljYmNfcmVsZWFzZV9pdChjYmMpOworKworKwkJU1ZDX0RFU1RST1koJnJkbWFf eHBydC0+c21fZHIueHBydCk7CisrCX0KKysJcnBjX3JkbWFfY3FfZXZlbnRfaGFuZGxlcihyZG1h X3hwcnQsIDEpOworKworKwlyZXR1cm4gcmV0OworK30KKysKKyAvKioKKyAgKiB4ZHJfcmRtYV9w b3N0X3JlY3ZfY2I6IFBvc3QgcmVjZWl2ZSBjaHVuayhzKSB3aXRoIHN0YW5kYXJkIGNhbGxiYWNr cy4KKyAgKgorQEAgLTY1NSw2ICs3MTUsMzkgQEAKKyAKKyB9CisgCisrLyogUG9zdCBzeW5jaHJv bm91cyBSRE1BIHNlbmQgb3BlcmF0aW9uIHdpdGggY2FsbGJhY2sgKi8KKytzdGF0aWMgaW5saW5l IGludAorK3hkcl9yZG1hX3N5bmNfc2VuZF9jYihSRE1BWFBSVCAqcmRtYV94cHJ0LCBzdHJ1Y3Qg cnBjX3JkbWFfY2JjICpjYmMsIGludCBzZ2UpCisreworKwlpbnQgcmV0OworKworKwljYmMtPnBv c2l0aXZlX2NiID0geGRyX3JkbWFfcmVzcG9uZF9jYWxsYmFja19zZW5kOworKwljYmMtPm5lZ2F0 aXZlX2NiID0geGRyX3JkbWFfZGVzdHJveV9jYWxsYmFja19zZW5kOworKwljYmMtPmNhbGxiYWNr X2FyZyA9IE5VTEw7CisrCWNiYy0+Y2FsbF9pbmxpbmUgPSAxOworKwlpbnQzMl90IHdyaXRlX3dh aXRzID0gYXRvbWljX2luY19pbnQzMl90KCZjYmMtPndyaXRlX3dhaXRzKTsKKysKKysJY2JjX3Jl Zl9pdChjYmMsIHJkbWFfeHBydCk7CisrCisrCXJldCA9IHhkcl9yZG1hX3Bvc3Rfc2VuZF9uKHJk bWFfeHBydCwgY2JjLCBzZ2UsIE5VTEwsIElCVl9XUl9TRU5EKTsKKysKKysJaWYgKHJldCkgewor KwkJd3JpdGVfd2FpdHMgPSBhdG9taWNfZGVjX2ludDMyX3QoJmNiYy0+d3JpdGVfd2FpdHMpOwor KworKwkJY2JjX3JlbGVhc2VfaXQoY2JjKTsKKysKKysJCVNWQ19ERVNUUk9ZKCZyZG1hX3hwcnQt PnNtX2RyLnhwcnQpOworKworKwkJLyogQXNzdW1pbmcgdGhlcmUgd29uJ3QgYmUgY2FsbGJhY2sg Ki8KKysJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwgIiVzOiBmYWlsZWQgcmV0ICVk IGVyciAlZCIKKysJCSAgICAiIHJkbWFfeHBydCAlcCBjYmMgJXAgY2JjX3JlZiAlZCB3cml0ZV93 YWl0cyAlZCIsCisrCQkgICAgX19mdW5jX18sIHJldCwgZXJybm8sIHJkbWFfeHBydCwgY2JjLCBj YmMtPnJlZmNudCwKKysJCSAgICB3cml0ZV93YWl0cyk7CisrCX0KKysJcnBjX3JkbWFfY3FfZXZl bnRfaGFuZGxlcihyZG1hX3hwcnQsIDIpOworKworKwlyZXR1cm4gcmV0OworK30KKyAvKioKKyAg KiBQb3N0IGEgd29yayBjaHVuayB3aXRoIHN0YW5kYXJkIGNhbGxiYWNrcy4KKyAgKgorQEAgLTg4 Nyw4ICs5ODAsMTAgQEAKKyAKKyAvKiBwb3N0IHJlY3YgYnVmZmVycyAqLworIHZvaWQKKy14ZHJf cmRtYV9jYWxscShSRE1BWFBSVCAqcmRtYV94cHJ0KQorK3hkcl9yZG1hX2NhbGxxKFJETUFYUFJU ICpyZG1hX3hwcnQsIGludCBzeW5jKQorIHsKKysJaW50IHJjID0gMDsKKysKKyAJLyogR2V0IGNv bnRleHQgYnVmIGZyb20gY2JxaCBhbmQgYWRkIHRvIHNtX2RyCisgCSAqIHJwY19yZG1hX2FsbG9j YXRlLT54ZHJfaW9xX3NldHVwKCZyZG1hX3hwcnQtPnNtX2RyLmlvcSk7CisgCSAqIENoZWNrIGlm IHdlIGhhdmUgY3JlZGl0cyBhdmFpbGFibGVkIGZyb20gY2JxaAorQEAgLTkyNyw3ICsxMDIyLDcg QEAKKyAKKyAJcHRocmVhZF9tdXRleF9sb2NrKCZyZG1hX3hwcnQtPmNiY2xpc3QucW11dGV4KTsK KyAKKy0JY2JjLT5jYWxsX2lubGluZSA9IDA7CisrCWNiYy0+Y2FsbF9pbmxpbmUgPSBzeW5jOwor IAljYmMtPmRhdGFfY2h1bmtfdXYgPSBOVUxMOworIAljYmMtPnJlZmNudCA9IDE7IC8vIFNlbnRp bmVsIHJlZgorIAljYmMtPmNiY19mbGFncyA9IENCQ19GTEFHX05PTkU7CitAQCAtOTQxLDggKzEw MzYsMTMgQEAKKyAJcmRtYV94cHJ0LT5jYmNsaXN0LnFjb3VudCsrOworIAlwdGhyZWFkX211dGV4 X3VubG9jaygmcmRtYV94cHJ0LT5jYmNsaXN0LnFtdXRleCk7CisgCisrCWlmIChzeW5jKQorKwkJ cmMgPSB4ZHJfcmRtYV9wb3N0X3JlY3Zfc3luYyhyZG1hX3hwcnQsIGNiYywgMSk7CisrCWVsc2UK KysJCXJjID0geGRyX3JkbWFfcG9zdF9yZWN2X2NiKHJkbWFfeHBydCwgY2JjLCAxKTsKKysKKyAJ LyogcmRtYV94cHJ0IHJlZiBpcyB0YWtlbiBieSB4ZHJfcmRtYV9wb3N0X3JlY3ZfY2IgKi8KKy0J aWYgKHhkcl9yZG1hX3Bvc3RfcmVjdl9jYihyZG1hX3hwcnQsIGNiYywgMSkpIHsKKysJaWYgKHJj KSB7CisgCQkgX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLCAiJXM6IHJlY3YgZmFpbGVk ICVwIiwKKyAJCQlfX2Z1bmNfXywgcmRtYV94cHJ0KTsKKyAJfQorQEAgLTk3Myw3ICsxMDczLDcg QEAKKyAKKyAJCWRhdGEtPnJkbWFfdXYgPSAxOworIAorLQkJX193YXJueChUSVJQQ19ERUJVR19G TEFHX1JQQ19SRE1BLAorKwkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1hEUl9SRE1BLAorIAkJ CSIlcygpIHJlY3ZidWYgYXQgJXAgYmFzZSAlcCIsCisgCQkJX19mdW5jX18sIGRhdGEsIGJfYWRk cik7CisgCitAQCAtMTA0Nyw3ICsxMTQ3LDcgQEAKKyAJcmRtYV94cHJ0LT5pb19idWZzX2NvdW50 Kys7CisgCXJkbWFfeHBydC0+aW9fYnVmcy5xY291bnQrKzsKKyAKKy0JX193YXJueChUSVJQQ19E RUJVR19GTEFHX0VWRU5ULAorKwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfWERSX1JETUEsCisg CQkiJXMoKSBpbyBidWZzIGNvdW50ICV1IGlvX2J1ZiAlcCByZG1hX3hwcnQgJXAiLAorIAkJX19m dW5jX18sIHJkbWFfeHBydC0+aW9fYnVmc19jb3VudCwgaW9fYnVmLCByZG1hX3hwcnQpOworIAor QEAgLTEwNzEsNyArMTE3MSw3IEBACisgCWlmIChtcikgeworIAkJYXRvbWljX2FkZF91aW50NjRf dCgmdG90YWxfcmRtYV9yZWdfbWVtLCBidWZmZXJfdG90YWwpOworIAorLQkJX193YXJueChUSVJQ Q19ERUJVR19GTEFHX0VWRU5ULCAiJXM6IHRvdGFsX3JkbWFfcmVnX21lbSAlbGx1IHJlZ2lzdGVy ZWQsICIKKysJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19YRFJfUkRNQSwgIiVzOiB0b3RhbF9y ZG1hX3JlZ19tZW0gJWxsdSByZWdpc3RlcmVkLCAiCisgCQkgICAgInJlZ2lzdGVyaW5nIGZvciB4 cHJ0ICVwIG1yICVwIGJ1ZmZlcl9hbGlnbmVkICVwIGJ1ZmZlcl90b3RhbCAldSIsCisgCQkgICAg X19mdW5jX18sIGF0b21pY19mZXRjaF91aW50NjRfdCgmdG90YWxfcmRtYV9yZWdfbWVtKSwKKyAJ CSAgICByZG1hX3hwcnQsIG1yLCBidWZmZXJfYWxpZ25lZCwgYnVmZmVyX3RvdGFsKTsKK0BAIC0x MTA0LDcgKzEyMDQsNyBAQAorIAl9IGVsc2UgeworIAkJYXRvbWljX3N1Yl91aW50NjRfdCgmdG90 YWxfcmRtYV9yZWdfbWVtLCBidWZmZXJfdG90YWwpOworIAorLQkJX193YXJueChUSVJQQ19ERUJV R19GTEFHX0VWRU5ULCAiJXM6IHRvdGFsX3JkbWFfcmVnX21lbSAlbGx1IHJlZ2lzdGVyZWQsICIK KysJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19YRFJfUkRNQSwgIiVzOiB0b3RhbF9yZG1hX3Jl Z19tZW0gJWxsdSByZWdpc3RlcmVkLCAiCisgCQkgICAgInVucmVnaXN0ZXJpbmcgZm9yIHhwcnQg JXAgbXIgJXAgYnVmZmVyX2FsaWduZWQgJXAgYnVmZmVyX3RvdGFsICV1IiwKKyAJCSAgICBfX2Z1 bmNfXywgYXRvbWljX2ZldGNoX3VpbnQ2NF90KCZ0b3RhbF9yZG1hX3JlZ19tZW0pLAorIAkJICAg IHJkbWFfeHBydCwgbXIsIGJ1ZmZlcl9hbGlnbmVkLCBidWZmZXJfdG90YWwpOworQEAgLTExMjEs NyArMTIyMSw3IEBACisgCXVpbnQzMl90IGJ1ZmZlcl90b3RhbCA9IHJkbWFfeHBydC0+c21fZHIu c2VuZF9oZHJfc3ogKiBoZHJfcWRlcHRoOworIAlzdHJ1Y3QgcnBjX2lvX2J1ZnMgKmlvX2J1ZiA9 IE5VTEw7CisgCistCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwKKysJX193YXJueChU SVJQQ19ERUJVR19GTEFHX1hEUl9SRE1BLAorIAkJIiVzKCkgYnVmZmVyX3RvdGFsICVsbHUsIHNl bmRzeiAlbGx1IHNxICVsbHUgcmRtYV94cHJ0ICVwIHBhZ2VzeiAlbGx1IiwKKyAJCV9fZnVuY19f LCBidWZmZXJfdG90YWwsIHJkbWFfeHBydC0+c21fZHIuc2VuZF9oZHJfc3osIGhkcl9xZGVwdGgs CisgCQlyZG1hX3hwcnQsIHJkbWFfeHBydC0+c21fZHIucGFnZXN6KTsKK0BAIC0xMTMxLDcgKzEy MzEsNyBAQAorIAlhc3NlcnQoYnVmZmVyX2FsaWduZWQpOworIAltZW1zZXQoYnVmZmVyX2FsaWdu ZWQsIDAsIGJ1ZmZlcl90b3RhbCk7CisgCistCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVO VCwKKysJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1hEUl9SRE1BLAorIAkJIiVzKCkgYnVmZmVy X2FsaWduZWQgYXQgJXAgcHJvdGVjdGlvbiBkb21haW4gJXAgcmRtYV94cHJ0ICVwIiwKKyAJCV9f ZnVuY19fLCBidWZmZXJfYWxpZ25lZCwgcmRtYV94cHJ0LT5wZC0+cGQsIHJkbWFfeHBydCk7Cisg CitAQCAtMTE1OCw3ICsxMjU4LDcgQEAKKyAJdWludDMyX3QgYnVmZmVyX3RvdGFsID0gcmRtYV94 cHJ0LT5zbV9kci5zZW5kc3ogKiBkYXRhX3FkZXB0aDsKKyAJc3RydWN0IHJwY19pb19idWZzICpp b19idWYgPSBOVUxMOworIAorLQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsCisrCV9f d2FybngoVElSUENfREVCVUdfRkxBR19YRFJfUkRNQSwKKyAJCSIlcygpIGJ1ZmZlcl90b3RhbCAl bGx1LCBzZW5kc3ogJWxsdSBzcSAlbGx1IHJkbWFfeHBydCAlcCBwYWdlc3ogJWxsdSIsCisgCQlf X2Z1bmNfXywgYnVmZmVyX3RvdGFsLCByZG1hX3hwcnQtPnNtX2RyLnNlbmRzeiwgZGF0YV9xZGVw dGgsCisgCQlyZG1hX3hwcnQsIHJkbWFfeHBydC0+c21fZHIucGFnZXN6KTsKK0BAIC0xMTY4LDcg KzEyNjgsNyBAQAorIAlhc3NlcnQoYnVmZmVyX2FsaWduZWQpOworIAltZW1zZXQoYnVmZmVyX2Fs aWduZWQsIDAsIGJ1ZmZlcl90b3RhbCk7CisgCistCV9fd2FybngoVElSUENfREVCVUdfRkxBR19F VkVOVCwKKysJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1hEUl9SRE1BLAorIAkJIiVzKCkgYnVm ZmVyX2FsaWduZWQgYXQgJXAgcHJvdGVjdGlvbiBkb21haW4gJXAgcmRtYV94cHJ0ICVwIiwKKyAJ CV9fZnVuY19fLCBidWZmZXJfYWxpZ25lZCwgcmRtYV94cHJ0LT5wZC0+cGQsIHJkbWFfeHBydCk7 CisgCitAQCAtMTE5NSw3ICsxMjk1LDcgQEAKKyAJdWludDMyX3QgYnVmZmVyX3RvdGFsID0gcmRt YV94cHJ0LT5zbV9kci5yZWN2X2hkcl9zeiAqIGhkcl9xZGVwdGg7CisgCXN0cnVjdCBycGNfaW9f YnVmcyAqaW9fYnVmID0gTlVMTDsKKyAKKy0JX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5U LAorKwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfWERSX1JETUEsCisgCQkiJXMoKSBidWZmZXJf dG90YWwgJWxsdSwgcmVjdnN6ICVsbHUgcnEgJWxsdSByZG1hX3hwcnQgJXAgcGFnZXN6ICVsbHUi LAorIAkJX19mdW5jX18sIGJ1ZmZlcl90b3RhbCwgcmRtYV94cHJ0LT5zbV9kci5yZWN2X2hkcl9z eiwgaGRyX3FkZXB0aCwKKyAJCXJkbWFfeHBydCwgcmRtYV94cHJ0LT5zbV9kci5wYWdlc3opOwor QEAgLTEyMDUsNyArMTMwNSw3IEBACisgCWFzc2VydChidWZmZXJfYWxpZ25lZCk7CisgCW1lbXNl dChidWZmZXJfYWxpZ25lZCwgMCwgYnVmZmVyX3RvdGFsKTsKKyAKKy0JX193YXJueChUSVJQQ19E RUJVR19GTEFHX0VWRU5ULAorKwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfWERSX1JETUEsCisg CQkiJXMoKSBidWZmZXJfYWxpZ25lZCBhdCAlcCBwcm90ZWN0aW9uIGRvbWFpbiAlcCByZG1hX3hw cnQgJXAiLAorIAkJX19mdW5jX18sIGJ1ZmZlcl9hbGlnbmVkLCByZG1hX3hwcnQtPnBkLT5wZCwg cmRtYV94cHJ0KTsKKyAKK0BAIC0xMjMyLDcgKzEzMzIsNyBAQAorIAl1aW50MzJfdCBidWZmZXJf dG90YWwgPSByZG1hX3hwcnQtPnNtX2RyLnJlY3ZzeiAqIGRhdGFfcWRlcHRoOworIAlzdHJ1Y3Qg cnBjX2lvX2J1ZnMgKmlvX2J1ZiA9IE5VTEw7CisgCistCV9fd2FybngoVElSUENfREVCVUdfRkxB R19FVkVOVCwKKysJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1hEUl9SRE1BLAorIAkJIiVzKCkg YnVmZmVyX3RvdGFsICVsbHUsIHJlY3ZzeiAlbGx1IHJxICVsbHUgcmRtYV94cHJ0ICVwIHBhZ2Vz eiAlbGx1IiwKKyAJCV9fZnVuY19fLCBidWZmZXJfdG90YWwsIHJkbWFfeHBydC0+c21fZHIucmVj dnN6LCBkYXRhX3FkZXB0aCwKKyAJCXJkbWFfeHBydCwgcmRtYV94cHJ0LT5zbV9kci5wYWdlc3op OworQEAgLTEyNDIsNyArMTM0Miw3IEBACisgCWFzc2VydChidWZmZXJfYWxpZ25lZCk7CisgCW1l bXNldChidWZmZXJfYWxpZ25lZCwgMCwgYnVmZmVyX3RvdGFsKTsKKyAKKy0JX193YXJueChUSVJQ Q19ERUJVR19GTEFHX0VWRU5ULAorKwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfWERSX1JETUEs CisgCQkiJXMoKSBidWZmZXJfYWxpZ25lZCBhdCAlcCBwcm90ZWN0aW9uIGRvbWFpbiAlcCByZG1h X3hwcnQgJXAiLAorIAkJX19mdW5jX18sIGJ1ZmZlcl9hbGlnbmVkLCByZG1hX3hwcnQtPnBkLT5w ZCwgcmRtYV94cHJ0KTsKKyAKK0BAIC0xMjk3LDcgKzEzOTcsNyBAQAorIAorIAlyZG1hX3hwcnQt PmJ1ZmZlcl90b3RhbCA9IHRpcnBjX2J1ZmZfdG90YWwgKyB0b3RhbF9oZHJfc3o7CisgCistCV9f d2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwKKysJX193YXJueChUSVJQQ19ERUJVR19GTEFH X1hEUl9SRE1BLAorIAkJIiVzKCkgYnVmZmVyX3RvdGFsICVsbHUoJWxsdSArICVsbHUpLCByZG1h X3hwcnQgJXAgcGFnZXN6ICVsbHUgIgorIAkJInJlY3ZzeiBkYXRhICVsbHUgaGRyICVsbHUgcnEg JWxsdSAiCisgCQkic2VuZHN6IGRhdGEgJWxsdSBoZHIgJWxsdSBzcSAlbGx1IiwKK0BAIC0xMzEx LDcgKzE0MTEsNyBAQAorIAlhc3NlcnQocmRtYV94cHJ0LT5idWZmZXJfYWxpZ25lZCk7CisgCW1l bXNldChyZG1hX3hwcnQtPmJ1ZmZlcl9hbGlnbmVkLCAwLCByZG1hX3hwcnQtPmJ1ZmZlcl90b3Rh bCk7CisgCistCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwKKysJX193YXJueChUSVJQ Q19ERUJVR19GTEFHX1hEUl9SRE1BLAorIAkJIiVzKCkgYnVmZmVyX2FsaWduZWQgYXQgJXAgcHJv dGVjdGlvbiBkb21haW4gJXAgcmRtYV94cHJ0ICVwIiwKKyAJCV9fZnVuY19fLCByZG1hX3hwcnQt PmJ1ZmZlcl9hbGlnbmVkLCByZG1hX3hwcnQtPnBkLT5wZCwgcmRtYV94cHJ0KTsKKyAKK0BAIC0x MzcwLDE4ICsxNDcwLDE4IEBACisgCSAqIHdlIGNvdWxkIGhhdmUgbWF4IGNiY3MgcmVxdWlyZWQg d2lsbCBiZSBjYWxscV9zaXplICogMiAqLworIAlpbnQgY2FsbHFfc2l6ZSA9IE1BWF9SRUNWX09V VFNUQU5ESU5HKHJkbWFfeHBydC0+eGEpOworIAorLQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdf UlBDX1JETUEsICJjYWxscSBzaXplICVkIiwgY2FsbHFfc2l6ZSk7CisrCV9fd2FybngoVElSUENf REVCVUdfRkxBR19YRFJfUkRNQSwgImNhbGxxIHNpemUgJWQiLCBjYWxscV9zaXplKTsKKyAKKyAJ cG9vbHFfaGVhZF9zZXR1cCgmcmRtYV94cHJ0LT5jYmNsaXN0KTsKKyAKKyAJd2hpbGUgKHJkbWFf eHBydC0+c21fZHIuaW9xLmlvcV91di51dnFoLnFjb3VudCA8IGNhbGxxX3NpemUpIHsKKyAJCS8q IFBvc3QgY2FsbHFfc2l6ZSBidWZmZXJzIHRvIGRvIGZpcnN0IHJlY3ZzCisgCQkgKiBjYWxsYmFj ayB3aWxsIGJlIGRvbmUgb24gcmVjdiB3aGljaCBzaG91bGQgcmVhcmFtIGFnYWluICovCistCQlf X3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEsCisrCQlfX3dhcm54KFRJUlBDX0RFQlVH X0ZMQUdfWERSX1JETUEsCisgCQkJIiVzKCkgcWNvdW50ICVkIGNhbGxxIHNpemUgJWQiLAorIAkJ CV9fZnVuY19fLCByZG1hX3hwcnQtPnNtX2RyLmlvcS5pb3FfdXYudXZxaC5xY291bnQsCisgCQkJ Y2FsbHFfc2l6ZSk7CistCQl4ZHJfcmRtYV9jYWxscShyZG1hX3hwcnQpOworKwkJeGRyX3JkbWFf Y2FsbHEocmRtYV94cHJ0LCAwKTsKKyAJfQorIAorIAlyZXR1cm4gMDsKK0BAIC0xNTA1LDcgKzE2 MDUsNyBAQAorIAlhc3NlcnQoY2JjLT53cml0ZV93YWl0cyA9PSAwKTsKKyAKKyAJLyogTWFpbnRh aW4gbWF4X291dHN0YW5kaW5nICovCistCXhkcl9yZG1hX2NhbGxxKHJkbWFfeHBydCk7CisrCXhk cl9yZG1hX2NhbGxxKHJkbWFfeHBydCwgMCk7CisgCisgCS8qIEdldCBpbmJ1ZiBmcm9tIHJlY3Zx ICovCisgCWNiYy0+Y2FsbF91diA9IElPUV8oVEFJTFFfRklSU1QoJmNiYy0+cmVjdnEuaW9xX3V2 LnV2cWgucWgpKTsKK0BAIC0xODczLDE1ICsxOTczLDE2IEBACisgCQlhbGxvY2F0ZV9oZWFkZXIg PSAxOworIAorIAkJaWYgKGFsbG9jYXRlX2hlYWRlcikgeworLQkJCWhhdmUgPSB4ZHJfcmRtYV9p b3FfdXZfZmV0Y2goJmNiYy0+c2VuZHEsICZyZG1hX3hwcnQtPm91dGJ1ZnNfaGRyLnV2cWgsCist CQkJCQkic3JlcGx5IGJ1ZmZlciIsIDEsIElPUV9GTEFHX05PTkUpOworLQorKwkJCS8qIFdpdGgg QUNMIHN1cHBvcnQgd2UgY291bGQgbmVlZCBidWZmZXJzID44ayAqLworKwkJCWhhdmUgPSB4ZHJf cmRtYV9pb3FfdXZfZmV0Y2goJmNiYy0+c2VuZHEsICZyZG1hX3hwcnQtPm91dGJ1ZnNfZGF0YS51 dnFoLAorKwkJCQkic3JlcGx5IGJ1ZmZlciIsIDEsIElPUV9GTEFHX05PTkUpOworIAorIAkJCS8q IGJ1ZmZlciBpcyBsaW1pdGVkIHNpemUgKi8KKyAJCQlJT1FfKGhhdmUpLT52LnZpb19oZWFkID0K KyAJCQlJT1FfKGhhdmUpLT52LnZpb190YWlsID0gSU9RXyhoYXZlKS0+di52aW9fYmFzZTsKKyAJ CQlJT1FfKGhhdmUpLT52LnZpb193cmFwID0gKGNoYXIgKilJT1FfKGhhdmUpLT52LnZpb19iYXNl CistCQkJCQkrIHJkbWFfeHBydC0+c21fZHIuc2VuZF9oZHJfc3o7CisrCQkJCSsgcmRtYV94cHJ0 LT5zbV9kci5zZW5kc3o7CisrCisgCQkJLyogbWFrZSByb29tIGF0IGhlYWQgZm9yIFJETUEgaGVh ZGVyICovCisgCQkJeGRyX2lvcV9yZXNldCgmY2JjLT5zZW5kcSwgMCk7CisgCQl9CitAQCAtMTkw MywxNiArMjAwNCwzNSBAQAorIAkJCQlJT1FfKGhhdmUpLT52LnZpb193cmFwID0gKGNoYXIgKilJ T1FfKGhhdmUpLT52LnZpb19iYXNlCisgCQkJCQkrIHJkbWFfeHBydC0+c21fZHIuc2VuZF9oZHJf c3o7CisgCQkJfSBlbHNlIHsKKy0JCQkJLyogRm9yIHJlcGx5X2xpc3Qgd2UgY29weSBmcm9tIHBy b3RvY29sIGJ1ZmZlciBzbyBhbGxvY2F0ZSBiaWdnZXIKKy0JCQkJICogY2h1bmsgKi8KKy0JCQkJ YXNzZXJ0KGwgPD0gcmRtYV94cHJ0LT5zbV9kci5zZW5kc3opOworKwkJCQkvKiBGb3IgcmVwbHlf bGlzdCB3ZSBjb3B5IGZyb20gcHJvdG9jb2wgYnVmZmVyIHNvIGFsbG9jYXRlCisrCQkJCSAqIGJp Z2dlciBjaHVuay4KKysJCQkJICoKKysJCQkJICogVGhlIGNsaWVudCdzIHJlcGx5IGNodW5rIGxl bmd0aCAobCkgY2FuIGxlZ2FsbHkgZXhjZWVkCisrCQkJCSAqIHNlbmRzejogdGhlIGNsaWVudCBw cmUtcmVnaXN0ZXJzIGEgYnVmZmVyIG9mIG1heGNvdW50ICsKKysJCQkJICogTkZTIENPTVBPVU5E IG92ZXJoZWFkIChhIGZldyBodW5kcmVkIGJ5dGVzKSwgYW5kIHdoZW4KKysJCQkJICogbWF4Y291 bnQgPT0gc2VuZHN6ICg9IFJETUFfREFUQV9DSFVOS19TWiA9IDEgTWlCKSB0aGUKKysJCQkJICog dG90YWwgbCA+IHNlbmRzei4KKysJCQkJICoKKysJCQkJICogdmlvX3dyYXAgaXMgc2V0IHRvIG1p bihsLCBzZW5kc3opOgorKwkJCQkgKiBsIDwgc2VuZHN6OiBob25vdXIgdGhlIGNsaWVudCdzIGFj dHVhbCBjaHVuayBjYXBhY2l0eS4KKysJCQkJICogbCA+PSBzZW5kc3o6IGNhcCBhdCB0aGUgcGh5 c2ljYWwgYnVmZmVyIHNpemUgdG8gcHJldmVudAorKwkJCQkgKiBhIHNlcnZlci1zaWRlIGJ1ZmZl ciBvdmVyZmxvdyAodGhlIG92ZXJmbG93IGRhdGEgaXMKKysJCQkJICogb25seSBORlMgaGVhZGVy IGJ5dGVzLCBmYXIgbGVzcyB0aGFuIHNlbmRzeikuCisrCQkJCSAqCisrCQkJCSAqIFRoZSBSRE1B IFdSSVRFIHNpemUgaXMgZGVyaXZlZCBmcm9tIGlvcXV2X2xlbmd0aCgpID0KKysJCQkJICogdmlv X3RhaWwgLSB2aW9faGVhZCAoYWN0dWFsIGJ5dGVzIHdyaXR0ZW4gYnkgWERSKSwgbmV2ZXIKKysJ CQkJICogZnJvbSBsLCBzbyB0aGUgdHJhbnNmZXIgc3RheXMgd2l0aGluIGJvdGggdGhlIHNlcnZl ciBidWZmZXIKKysJCQkJICogYW5kIHRoZSBjbGllbnQncyBwcmUtcmVnaXN0ZXJlZCByZWdpb24u CisrCQkJCSAqLworIAkJCQloYXZlID0geGRyX3JkbWFfaW9xX3V2X2ZldGNoKCZjYmMtPnNlbmRx LCAmcmRtYV94cHJ0LT5vdXRidWZzX2RhdGEudXZxaCwKKyAJCQkJICAgICJzcmVwbHkgYnVmZmVy IiwgMSwgSU9RX0ZMQUdfTk9ORSk7CisgCistCQkJCS8qIGJ1ZmZlciBpcyBsaW1pdGVkIHNpemUg Ki8KKysJCQkJLyogYnVmZmVyIGlzIGxpbWl0ZWQgdG8gbWluKGwsIHNlbmRzeikgKi8KKyAJCQkJ SU9RXyhoYXZlKS0+di52aW9faGVhZCA9CisgCQkJCUlPUV8oaGF2ZSktPnYudmlvX3RhaWwgPSBJ T1FfKGhhdmUpLT52LnZpb19iYXNlOworLQkJCQlJT1FfKGhhdmUpLT52LnZpb193cmFwID0gKGNo YXIgKilJT1FfKGhhdmUpLT52LnZpb19iYXNlICsgbDsKKysJCQkJSU9RXyhoYXZlKS0+di52aW9f d3JhcCA9IChjaGFyICopSU9RXyhoYXZlKS0+di52aW9fYmFzZQorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKyAobCA8IHJkbWFfeHBydC0+c21fZHIuc2VuZHN6CisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGwgOiByZG1hX3hwcnQtPnNtX2RyLnNl bmRzeik7CisgCQkJfQorIAkJfQorIAkJaWYgKCFhbGxvY2F0ZV9oZWFkZXIpCitAQCAtMTkzOCwy MSArMjA1OCwyMiBAQAorIGJvb2wKKyB4ZHJfcmRtYV9jbG50X2ZsdXNob3V0KHN0cnVjdCBycGNf cmRtYV9jYmMgKmNiYykKKyB7CistLyogRklYTUU6IGRlY2lkZSBob3cgbWFueSBidWZmZXJzIHdl IHVzZSBpbiBhcmd1bWVudCEhISEhISAqLworLSNkZWZpbmUgbnVtX2NodW5rcyAocmRtYV94cHJ0 LT54YS0+Y3JlZGl0cyAtIDEpCistCistCVJETUFYUFJUICpyZG1hX3hwcnQgPSB4X3JkbWFfeHBy dChjYmMtPnJlY3ZxLnhkcnMpOworKwlSRE1BWFBSVCAqcmRtYV94cHJ0ID0geF9yZG1hX3hwcnQo Y2JjLT5zZW5kcS54ZHJzKTsKKyAJc3RydWN0IHJwY19tc2cgKm1zZzsKKyAJc3RydWN0IHJkbWFf bXNnICpybXNnOworLQlzdHJ1Y3QgeGRyX3dyaXRlX2xpc3QgKndfYXJyYXk7CisgCXN0cnVjdCB4 ZHJfaW9xX3V2ICpoZWFkX3V2OworIAlzdHJ1Y3QgeGRyX2lvcV91diAqaG9sZF91djsKKy0Jc3Ry dWN0IHBvb2xxX2VudHJ5ICpoYXZlOworLQlpbnQgaSA9IDA7CisgCisrCS8qIGhvbGQgTkZTIHJl cXVlc3QgKi8KKyAJaG9sZF91diA9IElPUV8oVEFJTFFfRklSU1QoJmNiYy0+c2VuZHEuaW9xX3V2 LnV2cWgucWgpKTsKKysKKysJcHRocmVhZF9tdXRleF9sb2NrKCZjYmMtPnNlbmRxLmlvcV91di51 dnFoLnFtdXRleCk7CisrCVRBSUxRX1JFTU9WRSgmY2JjLT5zZW5kcS5pb3FfdXYudXZxaC5xaCwg JmhvbGRfdXYtPnV2cSwgcSk7CisrCShjYmMtPnNlbmRxLmlvcV91di51dnFoLnFjb3VudCktLTsK KysJcHRocmVhZF9tdXRleF91bmxvY2soJmNiYy0+c2VuZHEuaW9xX3V2LnV2cWgucW11dGV4KTsK KysKKyAJbXNnID0gKHN0cnVjdCBycGNfbXNnICopKGhvbGRfdXYtPnYudmlvX2hlYWQpOworLQl4 ZHJfdGFpbF91cGRhdGUoY2JjLT5yZWN2cS54ZHJzKTsKKysJeGRyX3RhaWxfdXBkYXRlKGNiYy0+ c2VuZHEueGRycyk7CisgCisgCXN3aXRjaChudG9obChtc2ctPnJtX2RpcmVjdGlvbikpIHsKKyAJ ICAgIGNhc2UgQ0FMTDoKK0BAIC0xOTcwLDE0ICsyMDkxLDExIEBACisgCQlyZXR1cm4gKGZhbHNl KTsKKyAJfQorIAorLQljYmMtPnJlY3ZxLmlvcV91di51dnFfZmV0Y2ggPSB4ZHJfcmRtYV9pb3Ff dXZfZmV0Y2hfbm90aGluZzsKKysJY2JjLT5zZW5kcS5pb3FfdXYudXZxX2ZldGNoID0geGRyX3Jk bWFfaW9xX3V2X2ZldGNoX25vdGhpbmc7CisgCistCWhlYWRfdXYgPSBJT1FfKHhkcl9yZG1hX2lv cV91dl9mZXRjaCgmY2JjLT5yZWN2cSwgJnJkbWFfeHBydC0+b3V0YnVmc19kYXRhLnV2cWgsCisr CWhlYWRfdXYgPSBJT1FfKHhkcl9yZG1hX2lvcV91dl9mZXRjaCgmY2JjLT5zZW5kcSwgJnJkbWFf eHBydC0+b3V0YnVmc19oZHIudXZxaCwKKyAJCQkJCSJjX2hlYWQgYnVmZmVyIiwgMSwgSU9RX0ZM QUdfTk9ORSkpOworIAorLQkodm9pZCl4ZHJfcmRtYV9pb3FfdXZfZmV0Y2goJmNiYy0+c2VuZHEs ICZyZG1hX3hwcnQtPmluYnVmc19kYXRhLnV2cWgsCistCQkJCSJjYWxsIGJ1ZmZlcnMiLCBudW1f Y2h1bmtzLCBJT1FfRkxBR19OT05FKTsKKy0KKyAJcm1zZyA9IG1fKGhlYWRfdXYtPnYudmlvX2hl YWQpOworIAlybXNnLT5yZG1hX3hpZCA9IG1zZy0+cm1feGlkOworIAlybXNnLT5yZG1hX3ZlcnMg PSBodG9ubChSUENSRE1BX1ZFUlNJT04pOworQEAgLTE5ODcsMzEgKzIxMDUsMjUgQEAKKyAJLyog bm8gcmVhZCwgd3JpdGUgY2h1bmtzLiAqLworIAlybXNnLT5yZG1hX2JvZHkucmRtYV9tc2cucmRt YV9yZWFkcyA9IDA7IC8qIGh0b25sKDApOyAqLworIAlybXNnLT5yZG1hX2JvZHkucmRtYV9tc2cu cmRtYV93cml0ZXMgPSAwOyAvKiBodG9ubCgwKTsgKi8KKy0KKy0JLyogcmVwbHkgY2h1bmsgKi8K Ky0Jd19hcnJheSA9ICh3bF90ICopJnJtc2ctPnJkbWFfYm9keS5yZG1hX21zZy5yZG1hX3JlcGx5 OworLQl3X2FycmF5LT5wcmVzZW50ID0gaHRvbmwoMSk7CistCXdfYXJyYXktPmVsZW1lbnRzID0g aHRvbmwobnVtX2NodW5rcyk7CistCistCVRBSUxRX0ZPUkVBQ0goaGF2ZSwgJmNiYy0+c2VuZHEu aW9xX3V2LnV2cWgucWgsIHEpIHsKKy0JCXN0cnVjdCB4ZHJfcmRtYV9zZWdtZW50ICp3X3NlZyA9 CistCQkJJndfYXJyYXktPmVudHJ5W2krK10udGFyZ2V0OworLQkJdWludDMyX3QgbGVuZ3RoID0g aW9xdXZfbGVuZ3RoKElPUV8oaGF2ZSkpOworLQorLQkJd19zZWctPmhhbmRsZSA9IGh0b25sKHJk bWFfeHBydC0+bXItPnJrZXkpOworLQkJd19zZWctPmxlbmd0aCA9IGh0b25sKGxlbmd0aCk7Cist CQl4ZHJfZW5jb2RlX2h5cGVyKCh1aW50MzJfdCopJndfc2VnLT5vZmZzZXQsCistCQkJCSAodWlu dHB0cl90KUlPUV8oaGF2ZSktPnYudmlvX2hlYWQpOworLQl9CisrCXJtc2ctPnJkbWFfYm9keS5y ZG1hX21zZy5yZG1hX3JlcGx5ID0gMDsKKyAKKyAJaGVhZF91di0+di52aW9fdGFpbCA9IGhlYWRf dXYtPnYudmlvX2hlYWQKKyAJCQkJKyB4ZHJfcmRtYV9oZWFkZXJfbGVuZ3RoKHJtc2cpOworIAor KwlwdGhyZWFkX211dGV4X2xvY2soJmNiYy0+c2VuZHEuaW9xX3V2LnV2cWgucW11dGV4KTsKKysJ VEFJTFFfSU5TRVJUX1RBSUwoJmNiYy0+c2VuZHEuaW9xX3V2LnV2cWgucWgsICZob2xkX3V2LT51 dnEsIHEpOworKwkoY2JjLT5zZW5kcS5pb3FfdXYudXZxaC5xY291bnQpKys7CisrCXB0aHJlYWRf bXV0ZXhfdW5sb2NrKCZjYmMtPnNlbmRxLmlvcV91di51dnFoLnFtdXRleCk7CisrCisgCXJwY3Jk bWFfZHVtcF9tc2coaGVhZF91diwgImNsbnRoZWFkIiwgbXNnLT5ybV94aWQpOworIAlycGNyZG1h X2R1bXBfbXNnKGhvbGRfdXYsICJjbG50Y2FsbCIsIG1zZy0+cm1feGlkKTsKKyAKKyAJLyogYWN0 dWFsIHNlbmQsIGNhbGxiYWNrIHdpbGwgdGFrZSBjYXJlIG9mIGNsZWFudXAgKi8KKy0JeGRyX3Jk bWFfYXN5bmNfc2VuZF9jYihyZG1hX3hwcnQsIGNiYywgMik7CisrCWNiYy0+aGF2ZSA9IFRBSUxR X0ZJUlNUKCZjYmMtPnNlbmRxLmlvcV91di51dnFoLnFoKTsKKysJaWYgKHJkbWFfeHBydC0+c2hh cmVkKQorKwkJeGRyX3JkbWFfYXN5bmNfc2VuZF9jYihyZG1hX3hwcnQsIGNiYywgMik7CisrCWVs c2UKKysJCXhkcl9yZG1hX3N5bmNfc2VuZF9jYihyZG1hX3hwcnQsIGNiYywgMik7CisgCXJldHVy biAodHJ1ZSk7CisgfQorIAorQEAgLTIyMTEsNiArMjMyMyw3IEBACisgCQkgKiBwcm90b2NvbHMg YW5kIFVJT19GTEFHX1JFRkVSIHdpbGwgYmUgc2V0LgorIAkJICogZmlyc3RfYnVmID0gbmZzX2hl YWRlciBidWYgKyByZG1hX3dyaXRlIGJ1ZnMgKi8KKyAJCWlmIChyZG1hX2J1Zl91c2VkKSB7Cisr CQkJLyogZGF0YV9jaHVuayBidWZmZXIgd2lsbCBiZSBzZXQgYnkgeF9wdXRidWZzIHRvIHZpb19o ZWFkICovCisgCQkJcmRtYV9idWZfYWRkciA9IGZpcnN0X3NlbmRfYnVmX3V2LT52LnZpb19oZWFk OworIAkJCXJkbWFfYnVmX2xlbiA9IGlvcXV2X2xlbmd0aChmaXJzdF9zZW5kX2J1Zl91dik7Cisg CQkJaWYgKGZpcnN0X3NlbmRfYnVmX3V2LT51LnVpb19mbGFncyAmIFVJT19GTEFHX1JFRkVSKQor QEAgLTIyNjIsOCArMjM3NSwxMyBAQAorIAkJCXVpbnQzMl90IGxlbmd0aCA9IG50b2hsKGNfc2Vn LT5sZW5ndGgpOworIAkJCXVpbnQzMl90IG5mc19oZWFkZXJfbGVuID0gaW9xdXZfbGVuZ3RoKG5m c19oZWFkZXJfdXYpOworIAorLQkJCWFzc2VydChsZW5ndGggPD0gcmRtYV94cHJ0LT5zbV9kci5z ZW5kc3opOworLQorKwkJCS8qIERvIG5vdCBhc3NlcnQsIGlmIGxlbmd0aCA+IHNlbmRzejogdGhl IGNsaWVudCBjYW4gbGVnaXRpbWF0ZWx5CisrCQkJICogcHJlLXJlZ2lzdGVyIGEgcmVwbHkgY2h1 bmsgbGFyZ2VyIHRoYW4gc2VuZHN6IChlLmcuIHdoZW4KKysJCQkgKiBtYXhjb3VudCBlcXVhbHMg c2VuZHN6IHRoZSB0b3RhbCBjaHVuayBpbmNsdWRlcyBORlMgQ09NUE9VTkQKKysJCQkgKiBvdmVy aGVhZCBwdXNoaW5nIGwgYWJvdmUgc2VuZHN6KS4gVGhlIGFjdHVhbCBSRE1BIFdSSVRFIHNpemUK KysJCQkgKiBpcyB3cml0ZV9sZW4gPSBtaW4ocmRtYV9idWZfbGVuLCBsZW5ndGgpIDw9IHNlbmRz eiwgc28gdGhlCisrCQkJICogdHJhbnNmZXIgaXMgYWx3YXlzIHdpdGhpbiB0aGUgc2VydmVyJ3Mg cmVnaXN0ZXJlZCBidWZmZXIuCisrCQkJICovCisgCQkJKndfc2VnID0gKmNfc2VnOworIAorIAkJ CV9fd2FybngoVElSUENfREVCVUdfRkxBR19YRFIsCitAQCAtMjM4Myw2ICsyNTAxLDI2IEBACisg CQl1aW9fcmVmZXItPnVpb19yZWxlYXNlKHVpb19yZWZlciwgVUlPX0ZMQUdfTk9ORSk7CisgCX0K KyAKKysJLyoKKysJICogUmVsZWFzZSB0aGUgZGVmZXJyZWQgc2VudGluZWwgcmVmIHdoZW4gdGhl IHJlcXVlc3Qgd2FzIHN1c3BlbmRlZAorKwkgKiBieSB3cmFwX2NhbGxiYWNrIChlLmcuIFFPUywg YXN5bmMgSU8pLiBJbiB0aGF0IHBhdGggQ0JDX0ZMQUdfUkVMRUFTRQorKwkgKiB3YXMgc2V0IGJ1 dCBjYmNfcmVsZWFzZV9pdCB3YXMgaW50ZW50aW9uYWxseSBza2lwcGVkIHRvIGtlZXAKKysJICog Y2JjLT5kYXRhcSBhbGl2ZS4gIE5vdyB0aGF0IGFsbCBSRE1BIG9wZXJhdGlvbnMgaGF2ZSBiZWVu IHBvc3RlZAorKwkgKiAodGFraW5nIHRoZWlyIG93biByZWZzKSwgaXQgaXMgc2FmZSB0byBkcm9w IHRoZSBzZW50aW5lbC4gIFRoZQorKwkgKiBsYXN0IFJETUEgY29tcGxldGlvbiB3aWxsIHRoZW4g c2VlIHJlZmNudD09MCB3aXRoIENCQ19GTEFHX1JFTEVBU0UKKysJICogc2V0IGFuZCB0cmlnZ2Vy IHRoZSBub3JtYWwgY2JjIGNsZWFudXAuCisrCSAqCisrCSAqIEZvciB0aGUgbm9ybWFsIChub24t c3VzcGVuZGVkKSBwYXRoIENCQ19GTEFHX1NFTlRJTkVMX1BFTkRJTkcgaXMKKysJICogbmV2ZXIg c2V0LCBzbyB0aGlzIGlzIGEgbm8tb3AuCisrCSAqLworKwlpZiAoY2JjLT5jYmNfZmxhZ3MgJiBD QkNfRkxBR19TRU5USU5FTF9QRU5ESU5HKSB7CisrCQljYmMtPmNiY19mbGFncyAmPSB+Q0JDX0ZM QUdfU0VOVElORUxfUEVORElORzsKKysJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19YRFIsCisr CQkJIiVzIHJkbWFfeHBydCAlcCBjYmMgJXAgcmVsZWFzaW5nIGRlZmVycmVkIHNlbnRpbmVsIiwK KysJCQlfX2Z1bmNfXywgcmRtYV94cHJ0LCBjYmMpOworKwkJY2JjX3JlbGVhc2VfaXQoY2JjKTsK KysJfQorKworIAlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfWERSLCAiJXM6IGNiYyAlcCByZWN2 cSAlcCAlZCBzZW5kcSAlcCAlZCByZG1hX3hwcnQgJXAiLAorIAkJX19mdW5jX18sIGNiYywgJmNi Yy0+cmVjdnEsIGNiYy0+cmVjdnEuaW9xX3V2LnV2cWgucWNvdW50LCAmY2JjLT5zZW5kcSwKKyAJ CWNiYy0+c2VuZHEuaW9xX3V2LnV2cWgucWNvdW50LCByZG1hX3hwcnQpOworZGlmZiAtdXIgbnRp cnBjLTcuMi90ZXN0cy9ycGNwaW5nLmMgbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0 N2VlMTI5NzgyNTZiZDEvdGVzdHMvcnBjcGluZy5jCistLS0gbnRpcnBjLTcuMi90ZXN0cy9ycGNw aW5nLmMJMjAyNS0wOS0yMyAxMDowNToxOS4wMDAwMDAwMDAgLTA0MDAKKysrKyBudGlycGMtNWM3 NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS90ZXN0cy9ycGNwaW5nLmMJMjAy Ni0wNS0xOCAxOTo0MDoyMC4wMDAwMDAwMDAgLTA0MDAKK0BAIC0zNCw2ICszNCw3IEBACisgI2lu Y2x1ZGUgPHJwYy9ycGMuaD4KKyAjaW5jbHVkZSA8cnBjL3N2Y19hdXRoLmg+CisgCisrCisgI2lu Y2x1ZGUgImx0dG5nL250aXJwY190cmFjZXMuaCIKKyAjaWYgZGVmaW5lZChVU0VfTFRUTkdfTlRJ UlBDKSAmJiAhZGVmaW5lZChMVFROR19QQVJTSU5HKQorICNpbmNsdWRlICJsdHRuZy9nZW5lcmF0 ZWRfdHJhY2VzL3JwY3BpbmcuaCIKK0BAIC00NCw2ICs0NSwxMSBAQAorIHN0YXRpYyB1aW50MzJf dCBycGNwaW5nX3RocmVhZHM7CisgCisgc3RhdGljIHN0cnVjdCB0aW1lc3BlYyB0byA9IHszMCwg MH07CisrdHlwZWRlZiBlbnVtIHsKKysJVENQID0gMSwKKysJUkRNQSA9IDIsCisrCVJBVyA9IDMK Kyt9IHByb3RvX3Q7CisgCisgc3RydWN0IHN0YXRlIHsKKyAJQ0xJRU5UICpoYW5kbGU7CitAQCAt NTMsNiArNTksNyBAQAorIAlzdHJ1Y3QgdGltZXNwZWMgc3RvcHBpbmc7CisgCWludCBjb3VudDsK KyAJaW50IHByb2M7CisrCXByb3RvX3QgcHJvdG87CisgCWludCBpZDsKKyAJdWludDMyX3QgZmFp bHVyZXM7CisgCXVpbnQzMl90IHJlc3BvbnNlczsKK0BAIC0xODMsOSArMTkwLDExIEBACisgCQl9 CisgCX0KKyAKKy0JcHRocmVhZF9tdXRleF9sb2NrKCZzLT5zX211dGV4KTsKKy0JcHRocmVhZF9j b25kX3dhaXQoJnMtPnNfY29uZCwgJnMtPnNfbXV0ZXgpOworLQlwdGhyZWFkX211dGV4X3VubG9j aygmcy0+c19tdXRleCk7CisrCWlmIChzLT5wcm90byAhPSBSRE1BKSB7CisrCQlwdGhyZWFkX211 dGV4X2xvY2soJnMtPnNfbXV0ZXgpOworKwkJcHRocmVhZF9jb25kX3dhaXQoJnMtPnNfY29uZCwg JnMtPnNfbXV0ZXgpOworKwkJcHRocmVhZF9tdXRleF91bmxvY2soJnMtPnNfbXV0ZXgpOworKwl9 CisgCWNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCAmcy0+c3RvcHBpbmcpOworIAorIAlp ZiAoYXRvbWljX2RlY191aW50MzJfdCgmcnBjcGluZ190aHJlYWRzKSA+IDApIHsKK0BAIC0yNTQs OSArMjYzLDEzIEBACisgCWludCBwcm9jID0gMDsKKyAJaW50IHNlbmRfc3ogPSA4MTkyOworIAlp bnQgcmVjdl9zeiA9IDgxOTI7CisrI2lmZGVmIFVTRV9SUENfUkRNQQorKwlpbnQgcGFnZV9zeiA9 IHN5c2NvbmYoX1NDX1BBR0VTSVpFKTsKKysjZW5kaWYKKyAJdW5zaWduZWQgaW50IGZhaWx1cmVz ID0gMDsKKyAJdW5zaWduZWQgaW50IHRpbWVvdXRzID0gMDsKKyAJYm9vbCBycGNiaW5kID0gZmFs c2U7CisrCXByb3RvX3QgcHJvdG9fdXNlZCA9IDA7CisgCisgCU5USVJQQ19BVVRPX1RSQUNFUE9J TlQocnBjcGluZywgdGVzdCwgVFJBQ0VfSU5GTywgIkJvbyIpOworIAorQEAgLTMzNCw3ICszNDcs OCBAQAorIAkJCQkJICAgImNsbnRfbmNyZWF0ZSBmYWlsZWQiKTsKKyAJCQkJZXhpdCgyKTsKKyAJ CQl9CistCQl9IGVsc2UgeworKwkJfSBlbHNlIGlmIChzdHJjbXAocHJvdG8sICJyZG1hIikpIHsK KysJCQlwcm90b191c2VkID0gVENQOworIAkJCS8qIGNvbm5lY3QgdG8gaG9zdDpwb3J0ICovCisg CQkJc3RydWN0IHNvY2thZGRyX3N0b3JhZ2Ugc3M7CisgCQkJc3RydWN0IG5ldGJ1ZiByYWRkciA9 IHsKK0BAIC0zNTYsNyArMzcwLDI2IEBACisgCQkJCQkgICAiY2xudF9uY3JlYXRlIGZhaWxlZCIp OworIAkJCQlleGl0KDQpOworIAkJCX0KKysJCX0gZWxzZSB7CisrCQkJcHJvdG9fdXNlZCA9IFJE TUE7CisrCQkJaW50IGZkID0gZ2V0X2Nvbm5fZmQoaG9zdCwgcG9ydCk7CisrCQkJaWYgKGZkIDw9 IDApIHsKKysJCQkJcGVycm9yKCJnZXRfY29ubl9mZCBmYWlsZWQiKTsKKysJCQkJZXhpdCgzKTsK KysJCQl9CisrI2lmZGVmIFVTRV9SUENfUkRNQQorKwkJCWNsbnQgPSBjbG50X3JkbWFfY3JlYXRl KGZkLCBob3N0LCAyMDA0OSwgcmVjdl9zeiwKKysJCQkgICAgc2VuZF9zeiwgcGFnZV9zeiwgcHJv ZywgdmVycywgQ0xOVF9DUkVBVEVfRkxBR19DTE9TRSk7CisrCQkJaWYgKENMTlRfRkFJTFVSRShj bG50KSkgeworKwkJCQlycGNfcGVycm9yKCZjbG50LT5jbF9lcnJvciwgImNsbnRfcmRtYV9jcmVh dGUgZmFpbGVkIik7CisrCQkJCWV4aXQoNCk7CisrCQkJfQorKyNlbHNlCisrCQkJcGVycm9yKCJy ZG1hIG5vdCBlbmFibGVkIik7CisrCQkJZXhpdCg0KTsKKysjZW5kaWYKKyAJCX0KKysKKyAJCXMg PSAmc3RhdGVzW2ldOworIAkJY2xudC0+Y2xfdTEgPSBzOworIAorQEAgLTM2NCw2ICszOTcsNyBA QAorIAkJcy0+aWQgPSBpOworIAkJcy0+Y291bnQgPSBjb3VudDsKKyAJCXMtPnByb2MgPSBwcm9j OworKwkJcy0+cHJvdG8gPSBwcm90b191c2VkOworIAkJcHRocmVhZF9jcmVhdGUoJnQsIE5VTEws IHdvcmtlciwgcyk7CisgCX0KKyAKCmRpZmYgLS1naXQgYS9saWJudGlycGMuc3BlYyBiL2xpYm50 aXJwYy5zcGVjCmluZGV4IDQ4MTAzMzYuLjlkMjNlMDkgMTAwNjQ0Ci0tLSBhL2xpYm50aXJwYy5z cGVjCisrKyBiL2xpYm50aXJwYy5zcGVjCkBAIC0zLDcgKzMsNyBAQAogCiBOYW1lOgkJbGlibnRp cnBjCiBWZXJzaW9uOgk3LjIKLVJlbGVhc2U6CTMlez9kZXY6JXtkZXZ9fSV7P2Rpc3R9CitSZWxl YXNlOgk0JXs/ZGV2OiV7ZGV2fX0lez9kaXN0fQogU3VtbWFyeToJTmV3IFRyYW5zcG9ydCBJbmRl cGVuZGVudCBSUEMgTGlicmFyeQogTGljZW5zZToJQlNELTMtQ2xhdXNlCiBVcmw6CQlodHRwczov L2dpdGh1Yi5jb20vbmZzLWdhbmVzaGEvbnRpcnBjCkBAIC0xMyw2ICsxMyw3IEBAIFVybDoJCWh0 dHBzOi8vZ2l0aHViLmNvbS9uZnMtZ2FuZXNoYS9udGlycGMKIFNvdXJjZTA6CWh0dHBzOi8vZ2l0 aHViLmNvbS9uZnMtZ2FuZXNoYS9udGlycGMvYXJjaGl2ZS92JXt2ZXJzaW9ufS9udGlycGMtJXt2 ZXJzaW9ufSV7P2Rldjole2Rldn19LnRhci5negogU291cmNlMToJaHR0cHM6Ly9naXRodWIuY29t L2JpYWtzL3Byb21ldGhldXMtY3BwLWxpdGUvYXJjaGl2ZS8le3Byb21ldGhfdmVyX2xvbmd9L3By b21ldGhldXMtY3BwLWxpdGUtJXtwcm9tZXRoX3Zlcl9zaG9ydH0udGFyLmd6CiBQYXRjaDoJCTAw MDEtQ01ha2VMaXN0cy50eHQucGF0Y2gKK1BhdGNoOgkJMDAwMi03LjJwbHVzLnBhdGNoCiAKIEJ1 aWxkUmVxdWlyZXM6CWNtYWtlIGdjYyBnY2MtYysrCiAlaWZhcmNoIHg4Nl82NCBhYXJjaDY0CkBA IC05Miw2ICs5MywxMCBAQCBsbiAtcyAle25hbWV9LnNvLiV7dmVyc2lvbn0gJXtidWlsZHJvb3R9 JXtfbGliZGlyfS8le25hbWV9LnNvLjcKICV7X2xpYmRpcn0vcGtnY29uZmlnL2xpYm50aXJwYy5w YwogCiAlY2hhbmdlbG9nCisqIEZyaSBKdW4gMTIgMjAyNiBLYWxlYiBTLiBLRUlUSExFWSA8a2tl aXRobGUgYXQgcmVkaGF0LmNvbT4gNy4yLTQKKy0gbnRpcnBjLTcuMiwgbnRpcnBjIGRpZCBub3Qg dGFnL3JlbGVhc2UgcmVxdWlyZWQgdXBkYXRlcyBmb3IKKyAgZ2FuZXNoYS04LjEgYW5kIGxhdGVy CisKICogV2VkIE1hciAxOCAyMDI2IEthbGViIFMuIEtFSVRITEVZIDxra2VpdGhsZSBhdCByZWRo YXQuY29tPiA3LjItMwogLSBudGlycGMtNy4yLCBlbGltaW5hdGUgbGlibnNsKiBkZXBlbmRlbmN5 CiAKCmRpZmYgLS1naXQgYS9zb3VyY2VzIGIvc291cmNlcwppbmRleCA5ZTE5NDI3Li5iMjU3NDVk IDEwMDY0NAotLS0gYS9zb3VyY2VzCisrKyBiL3NvdXJjZXMKQEAgLTEsMyArMSwyIEBACi1TSEE1 MTIgKG50aXJwYy03LjAudGFyLmd6KSA9IGI0ZTVjNjllNDY5ODgzNzRhNjZiODZmNmMzM2UyNDFi MWQ3MzI1YzI3ZWNjYTE3NGM3YjE1NjBlM2Q5Y2ExNzRhYjYzM2Y1MWIzYjNlMTg1Mjg2N2MxZTYy MTAwY2Y4NGRjOTAzMWY0OWQyMjkyYmIzNjRkMzFhY2YwYjU3MDNmCiBTSEE1MTIgKHByb21ldGhl dXMtY3BwLWxpdGUtNDhkMDljNDUudGFyLmd6KSA9IGFlNzE5OWM1Y2MyNjViZTEwYjgyMDQ2YWMx MGZhNDM4ZGIyNzk3YWQ5ODIxMTYzY2UzZjVlMmMyN2NjMDE2NTNiM2E4MjNiNTNjYjFhZWNiN2Rj YzZkMThjMGYxNjkzMzUxMDQ3N2U4Y2VlNDM3ZDBhN2EyMjQ4MjBjYTVmZWJjCiBTSEE1MTIgKG50 aXJwYy03LjIudGFyLmd6KSA9IDlkNDA3NWRiNzFhOTUxMTQzMDliZGQzM2I2MDI1YTBjOWI4MDVh ZWZiMGI5MmI4NTQ0Mzk1OTIwYmI0NDAyYTFjNWJhZWVlNjdmMzQ2NmIwNmM0NGFiYjFhZmFiMjhm ODg5YTk5ZjEwN2NhMGFkNjY3OThhMDk2YzU2NGJkNzM4CgpkaWZmIC0tZ2l0IGEvMDAwMS1DTWFr ZUxpc3RzLnR4dC5wYXRjaCBiLzAwMDEtQ01ha2VMaXN0cy50eHQucGF0Y2gKaW5kZXggZTQ4YzYy YS4uY2NhMzdjYyAxMDA2NDQKLS0tIGEvMDAwMS1DTWFrZUxpc3RzLnR4dC5wYXRjaAorKysgYi8w MDAxLUNNYWtlTGlzdHMudHh0LnBhdGNoCkBAIC0xLDUgKzEsNSBAQAotLS0tIG50aXJwYy02LjMv Q01ha2VMaXN0cy50eHQub3JpZwkyMDI1LTA3LTE2IDA4OjQ5OjU2Ljc3MTcwOTcwMyAtMDQwMAot KysrIG50aXJwYy02LjMvQ01ha2VMaXN0cy50eHQJMjAyNS0wNy0xNiAwOToxMjoxMi4yODU0Mjcw NDMgLTA0MDAKKy0tLSBudGlycGMtNy4yL0NNYWtlTGlzdHMudHh0Lm9yaWcJMjAyNi0wMy0xOCAx MToyNDowMC4xMjU3MTYwNjQgLTA0MDAKKysrKyBudGlycGMtNy4yL0NNYWtlTGlzdHMudHh0CTIw MjYtMDMtMTggMTE6NDU6NDAuMzU5NDcwNDM2IC0wNDAwCiBAQCAtMiw3ICsyLDcgQEAKICAKICAj IEN1cnJlbnQgdmVyc2lvbiBhcyBvZiBGZWRvcmEgMTYuICBOb3QgdGVzdGVkIHdpdGggZWFybGll ci4KQEAgLTksMyArOSwxOCBAQAogIAogIHNldChDTUFLRV9NT0RVTEVfUEFUSCAke0NNQUtFX01P RFVMRV9QQVRIfSAiJHtDTUFLRV9TT1VSQ0VfRElSfS9jbWFrZS9tb2R1bGVzLyIpCiAgCitAQCAt MjM3LDE0ICsyMzgsNiBAQAorICAgJHtTWVNURU1fTElCUkFSSUVTfQorICkKKyAKKy1pZiAoTk9U IEJTREJBU0VEKQorLSAgZmluZF9wYWNrYWdlKE5TTCkgIyBzb2NrZXRzCistICBzZXQoU1lTVEVN X0xJQlJBUklFUworLSAgICAke1NZU1RFTV9MSUJSQVJJRVN9CistICAgICR7TlNMX0xJQlJBUll9 CistICApCistZW5kaWYgKE5PVCBCU0RCQVNFRCkKKy0KKyBzZXQoTElCTlRJUlBDX01BUCAiJHtQ Uk9KRUNUX0JJTkFSWV9ESVJ9L3NyYy9saWJudGlycGMubWFwIikKKyAjIHN1YnN0IGZpbGVzIChu ZWVkIGFkZF9jdXN0b21fY29tbWFuZCBmb3IgZGVwZW5kZW5jeSwgZnlpKQorIGNvbmZpZ3VyZV9m aWxlKAoKZGlmZiAtLWdpdCBhL2xpYm50aXJwYy5zcGVjIGIvbGlibnRpcnBjLnNwZWMKaW5kZXgg NGIyODY5My4uOWQyM2UwOSAxMDA2NDQKLS0tIGEvbGlibnRpcnBjLnNwZWMKKysrIGIvbGlibnRp cnBjLnNwZWMKQEAgLTMsNyArMyw3IEBACiAKIE5hbWU6CQlsaWJudGlycGMKIFZlcnNpb246CTcu MgotUmVsZWFzZToJMyV7P2Rldjole2Rldn19JXs/ZGlzdH0KK1JlbGVhc2U6CTQlez9kZXY6JXtk ZXZ9fSV7P2Rpc3R9CiBTdW1tYXJ5OglOZXcgVHJhbnNwb3J0IEluZGVwZW5kZW50IFJQQyBMaWJy YXJ5CiBMaWNlbnNlOglCU0QtMy1DbGF1c2UKIFVybDoJCWh0dHBzOi8vZ2l0aHViLmNvbS9uZnMt Z2FuZXNoYS9udGlycGMKQEAgLTIzLDkgKzIzLDYgQEAgQnVpbGRSZXF1aXJlczoJbGlicmRtYWNt CiBCdWlsZFJlcXVpcmVzOglyZG1hLWNvcmUtZGV2ZWwKIEJ1aWxkUmVxdWlyZXM6CWtyYjUtZGV2 ZWwKIEJ1aWxkUmVxdWlyZXM6CXVzZXJzcGFjZS1yY3UtZGV2ZWwKLSVpZiAoIDAlez9mZWRvcmF9 ICYmIDAlez9mZWRvcmF9ID4gMjcgKQotQnVpbGRSZXF1aXJlczogIGxpYm5zbDItZGV2ZWwKLSVl bmRpZgogIyBsaWJ0aXJwYyBoYXMgL2V0Yy9uZXRjb25maWcsIG1vc3QgbWFjaGluZXMgcHJvYmFi bHkgaGF2ZSBpdCBhbnl3YXkKICMgZm9yIE5GUyBjbGllbnQKIFJlcXVpcmVzOglsaWJ0aXJwYwpA QCAtOTYsMTAgKzkzLDEzIEBAIGxuIC1zICV7bmFtZX0uc28uJXt2ZXJzaW9ufSAle2J1aWxkcm9v dH0le19saWJkaXJ9LyV7bmFtZX0uc28uNwogJXtfbGliZGlyfS9wa2djb25maWcvbGlibnRpcnBj LnBjCiAKICVjaGFuZ2Vsb2cKLSogRnJpIEp1biAxMiAyMDI2IEthbGViIFMuIEtFSVRITEVZIDxr a2VpdGhsZSBhdCByZWRoYXQuY29tPiA3LjItMworKiBGcmkgSnVuIDEyIDIwMjYgS2FsZWIgUy4g S0VJVEhMRVkgPGtrZWl0aGxlIGF0IHJlZGhhdC5jb20+IDcuMi00CiAtIG50aXJwYy03LjIsIG50 aXJwYyBkaWQgbm90IHRhZy9yZWxlYXNlIHJlcXVpcmVkIHVwZGF0ZXMgZm9yCiAgIGdhbmVzaGEt OC4xIGFuZCBsYXRlcgogCisqIFdlZCBNYXIgMTggMjAyNiBLYWxlYiBTLiBLRUlUSExFWSA8a2tl aXRobGUgYXQgcmVkaGF0LmNvbT4gNy4yLTMKKy0gbnRpcnBjLTcuMiwgZWxpbWluYXRlIGxpYm5z bCogZGVwZW5kZW5jeQorCiAqIEZyaSBKYW4gMTYgMjAyNiBGZWRvcmEgUmVsZWFzZSBFbmdpbmVl cmluZyA8cmVsZW5nQGZlZG9yYXByb2plY3Qub3JnPiAtIDcuMi0yCiAtIFJlYnVpbHQgZm9yIGh0 dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9GZWRvcmFfNDRfTWFzc19SZWJ1aWxkCiAK