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: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] gdb-17.2-rebase-f44: Security fix for loading untrusted inferiors, see "set auto-load" (BZ 756117). Date: Sat, 27 Jun 2026 23:55:36 GMT Message-ID: <178260453640.1.9925130428253575709.rpms-gdb-08451779f969@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: 08451779f969455df3b5f16e872f5e698ca794f9 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2RiCkJyYW5jaCA6 IGdkYi0xNy4yLXJlYmFzZS1mNDQKQ29tbWl0IDogMDg0NTE3NzlmOTY5NDU1ZGYzYjVmMTZlODcy ZjVlNjk4Y2E3OTRmOQpBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4KRGF0ZSAgIDogMjAxMi0wNC0xOFQwMjoxNzoyOCswMjowMApTdGF0cyAgOiArNTA3 MS8tMjQ5IGluIDE0IGZpbGUocykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5v cmcvcnBtcy9nZGIvYy8wODQ1MTc3OWY5Njk0NTVkZjNiNWYxNmU4NzJmNWU2OThjYTc5NGY5P2Jy YW5jaD1nZGItMTcuMi1yZWJhc2UtZjQ0CgpMb2c6ClNlY3VyaXR5IGZpeCBmb3IgbG9hZGluZyB1 bnRydXN0ZWQgaW5mZXJpb3JzLCBzZWUgInNldCBhdXRvLWxvYWQiIChCWiA3NTYxMTcpLgoKLS0t CmRpZmYgLS1naXQgYS9nZGItNi4zLXNlY3VyaXR5LWVycmF0YS0yMDA1MDYxMC5wYXRjaCBiL2dk Yi02LjMtc2VjdXJpdHktZXJyYXRhLTIwMDUwNjEwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCA4ZTA0OGQ4Li4wMDAwMDAwCi0tLSBhL2dkYi02LjMtc2VjdXJpdHktZXJyYXRh LTIwMDUwNjEwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQzICswLDAgQEAKLWh0dHA6Ly9z b3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDA1LTA1L3RocmVhZHMuaHRtbCMwMDYzNwot UHJvcG9zZWQgdXBzdHJlYW0gYnV0IG5ldmVyIGNvbW1pdHRlZCB1cHN0cmVhbS4KLQotMjAwNS0w Ni0wOSAgSmVmZiBKb2huc3RvbiAgPGpqb2huc3RuQHJlZGhhdC5jb20+Ci0KLSAgICAgICAgKiBn ZGIuYmFzZS9nZGJpbml0LmV4cDogTmV3IHRlc3RjYXNlLgotICAgICAgICAqIGdkYi5iYXNlL2dk YmluaXQuc2FtcGxlOiBTYW1wbGUgLmdkYmluaXQgZm9yIGdkYmluaXQuZXhwLgotCi0yMDA1LTA2 LTA4ICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRhbkBjb2Rlc291cmNlcnkuY29tPgotICAgICAgICAg ICAgSmVmZiBKb2huc3RvbiAgPGpqb2huc3RuQHJlZGhhdC5jb20+Ci0KLSAgICAgICAgKiBNYWtl ZmlsZS5pbiAoY2xpLWNtZHMubyk6IFVwZGF0ZS4KLSAgICAgICAgKiBjb25maWd1cmUuaW46IEFk ZCBjaGVjayBmb3IgZ2V0dWlkLgotICAgICAgICAqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCi0g ICAgICAgICogY29uZmlnLmluOiBEaXR0by4KLSAgICAgICAgKiBtYWluLmMgKGNhcHR1cmVkX21h aW4pOiBQYXNzIC0xIHRvIHNvdXJjZV9jb21tYW5kIHdoZW4gbG9hZGluZwotICAgICAgICBnZGJp bml0IGZpbGVzLgotICAgICAgICAqIGNsaS9jbGktY21kcy5jOiBJbmNsdWRlICJnZGJfc3RhdC5o IiBhbmQgPGZjbnRsLmg+LgotICAgICAgICAoc291cmNlX2NvbW1hbmQpOiBVcGRhdGUgZG9jdW1l bnRhdGlvbi4gIENoZWNrIHBlcm1pc3Npb25zIGlmCi0gICAgICAgIEZST01fVFRZIGlzIC0xLgot Ci1JbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvY2xpL2NsaS1jbWRzLmMKLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL2NsaS9jbGktY21kcy5jCTIwMTEt MTItMTYgMjI6MTc6NDIuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDExMTIxOC9n ZGIvY2xpL2NsaS1jbWRzLmMJMjAxMS0xMi0xOSAwMDoyNzoxNi41NzI0Njg5MjYgKzAxMDAKLUBA IC00MCw2ICs0MCw3IEBACi0gI2luY2x1ZGUgInNvdXJjZS5oIgotICNpbmNsdWRlICJkaXNhc20u aCIKLSAjaW5jbHVkZSAidHJhY2Vwb2ludC5oIgotKyNpbmNsdWRlICJnZGJfc3RhdC5oIgotIAot ICNpbmNsdWRlICJ1aS1vdXQuaCIKLSAKLUBAIC00ODUsNyArNDg2LDcgQEAgc2hvd19zY3JpcHRf ZXh0X21vZGUgKHN0cnVjdCB1aV9maWxlICpmaQotIAotIGludAotIGZpbmRfYW5kX29wZW5fc2Ny aXB0IChjb25zdCBjaGFyICpzY3JpcHRfZmlsZSwgaW50IHNlYXJjaF9wYXRoLAotLQkJICAgICAg RklMRSAqKnN0cmVhbXAsIGNoYXIgKipmdWxsX3BhdGhwKQotKwkJICAgICAgRklMRSAqKnN0cmVh bXAsIGNoYXIgKipmdWxsX3BhdGhwLCBpbnQgZnJvbV90dHkpCi0gewotICAgY2hhciAqZmlsZTsK LSAgIGludCBmZDsKLUBAIC01MTEsNiArNTEyLDMyIEBAIGZpbmRfYW5kX29wZW5fc2NyaXB0IChj b25zdCBjaGFyICpzY3JpcHQKLSAgICAgICByZXR1cm4gMDsKLSAgICAgfQotIAotKyNpZmRlZiBI QVZFX0dFVFVJRAotKyAgaWYgKGZyb21fdHR5ID09IC0xKQotKyAgICB7Ci0rICAgICAgc3RydWN0 IHN0YXQgc3RhdGJ1ZjsKLSsKLSsgICAgICBpZiAoZnN0YXQgKGZkLCAmc3RhdGJ1ZikgPCAwKQot Kwl7Ci0rCSAgaW50IHNhdmVfZXJybm8gPSBlcnJubzsKLSsKLSsJICBjbG9zZSAoZmQpOwotKwkg IGRvX2NsZWFudXBzIChvbGRfY2xlYW51cHMpOwotKwkgIGVycm5vID0gc2F2ZV9lcnJubzsKLSsJ ICByZXR1cm4gMDsKLSsJfQotKyAgICAgIGlmIChzdGF0YnVmLnN0X3VpZCAhPSBnZXR1aWQgKCkg fHwgKHN0YXRidWYuc3RfbW9kZSAmIFNfSVdPVEgpKQotKwl7Ci0rCSAgLyogRklMRSBnZXRzIGZy ZWVkIGJ5IGRvX2NsZWFudXBzIChvbGRfY2xlYW51cHMpLiAgKi8KLSsJICB3YXJuaW5nIChfKCJu b3QgdXNpbmcgdW50cnVzdGVkIGZpbGUgXCIlc1wiIiksIGZpbGUpOwotKwkgIGNsb3NlIChmZCk7 Ci0rCSAgZG9fY2xlYW51cHMgKG9sZF9jbGVhbnVwcyk7Ci0rCSAgZXJybm8gPSBFUEVSTTsKLSsJ ICByZXR1cm4gMDsKLSsJfQotKyAgICB9Ci0rI2VuZGlmCi0rCi0gICBkb19jbGVhbnVwcyAob2xk X2NsZWFudXBzKTsKLSAKLSAgICpzdHJlYW1wID0gZmRvcGVuIChmZCwgRk9QRU5fUlQpOwotQEAg LTU3MiwxMyArNTk5LDE0IEBAIHNvdXJjZV9zY3JpcHRfd2l0aF9zZWFyY2ggKGNvbnN0IGNoYXIg KmYKLSAgIGlmIChmaWxlID09IE5VTEwgfHwgKmZpbGUgPT0gMCkKLSAgICAgZXJyb3IgKF8oInNv dXJjZSBjb21tYW5kIHJlcXVpcmVzIGZpbGUgbmFtZSBvZiBmaWxlIHRvIHNvdXJjZS4iKSk7Ci0g Ci0tICBpZiAoIWZpbmRfYW5kX29wZW5fc2NyaXB0IChmaWxlLCBzZWFyY2hfcGF0aCwgJnN0cmVh bSwgJmZ1bGxfcGF0aCkpCi0rICBpZiAoIWZpbmRfYW5kX29wZW5fc2NyaXB0IChmaWxlLCBzZWFy Y2hfcGF0aCwgJnN0cmVhbSwgJmZ1bGxfcGF0aCwKLSsJCQkgICAgIGZyb21fdHR5KSkKLSAgICAg ewotICAgICAgIC8qIFRoZSBzY3JpcHQgd2Fzbid0IGZvdW5kLCBvciB3YXMgb3RoZXJ3aXNlIGlu YWNjZXNzaWJsZS4KLSAgICAgICAgICBJZiB0aGUgc291cmNlIGNvbW1hbmQgd2FzIGludm9rZWQg aW50ZXJhY3RpdmVseSwgdGhyb3cgYW4KLSAJIGVycm9yLiAgT3RoZXJ3aXNlIChlLmcuIGlmIGl0 IHdhcyBpbnZva2VkIGJ5IGEgc2NyaXB0KSwKLSAJIHNpbGVudGx5IGlnbm9yZSB0aGUgZXJyb3Iu ICAqLwotLSAgICAgIGlmIChmcm9tX3R0eSkKLSsgICAgICBpZiAoZnJvbV90dHkgPiAwKQotIAlw ZXJyb3Jfd2l0aF9uYW1lIChmaWxlKTsKLSAgICAgICBlbHNlCi0gCXJldHVybjsKLUluZGV4OiBn ZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2RiaW5pdC5leHAKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAw MDAKLSsrKyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2RiaW5p dC5leHAJMjAxMS0xMi0xOSAwMDoyNToyNi4wNzk4OTE5NTQgKzAxMDAKLUBAIC0wLDAgKzEsOTEg QEAKLSsjICAgQ29weXJpZ2h0IDIwMDUKLSsjICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMgCi0rIyBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgotKyMgCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5v dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRl bXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rCi0r IyBQbGVhc2UgZW1haWwgYW55IGJ1Z3MsIGNvbW1lbnRzLCBhbmQvb3IgYWRkaXRpb25zIHRvIHRo aXMgZmlsZSB0bzoKLSsjIGJ1Zy1nZGJAcHJlcC5haS5taXQuZWR1Ci0rCi0rIyBUaGlzIGZpbGUg d2FzIHdyaXR0ZW4gYnkgSmVmZiBKb2huc3RvbiA8ampvaG5zdG5AcmVkaGF0LmNvbT4uCi0rCi0r IyBhcmUgd2Ugb24gYSB0YXJnZXQgYm9hcmQKLStpZiBbaXNfcmVtb3RlIHRhcmdldF0gewotKyAg ICByZXR1cm4KLSt9Ci0rCi0rCi0rZ2xvYmFsIHZlcmJvc2UKLStnbG9iYWwgR0RCCi0rZ2xvYmFs IEdEQkZMQUdTCi0rZ2xvYmFsIGdkYl9wcm9tcHQKLStnbG9iYWwgdGltZW91dAotK2dsb2JhbCBn ZGJfc3Bhd25faWQ7Ci0rCi0rZ2RiX3N0b3Bfc3VwcHJlc3NpbmdfdGVzdHM7Ci0rCi0rdmVyYm9z ZSAiU3Bhd25pbmcgJEdEQiAtbnciCi0rCi0raWYgW2luZm8gZXhpc3RzIGdkYl9zcGF3bl9pZF0g ewotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0raWYgIVtpc19yZW1vdGUgaG9zdF0gewotKyAgIGlm IHsgW3doaWNoICRHREJdID09IDAgfSB0aGVuIHsKLSsgICAgICAgIHBlcnJvciAiJEdEQiBkb2Vz IG5vdCBleGlzdC4iCi0rICAgICAgICBleGl0IDEKLSsgICAgfQotK30KLSsKLStzZXQgZW52KEhP TUUpIFtwd2RdCi0rcmVtb3RlX2V4ZWMgYnVpbGQgInJtIC5nZGJpbml0IgotK3JlbW90ZV9leGVj IGJ1aWxkICJjcCAke3NyY2Rpcn0vJHtzdWJkaXJ9L2dkYmluaXQuc2FtcGxlIC5nZGJpbml0Igot K3JlbW90ZV9leGVjIGJ1aWxkICJjaG1vZCA2NDYgLmdkYmluaXQiCi0rCi0rc2V0IHJlcyBbcmVt b3RlX3NwYXduIGhvc3QgIiRHREIgLW53IFtob3N0X2luZm8gZ2RiX29wdHNdIl07Ci0raWYgeyAk cmVzIDwgMCB8fCAkcmVzID09ICIiIH0gewotKyAgICBwZXJyb3IgIlNwYXduaW5nICRHREIgZmFp bGVkLiIKLSsgICAgcmV0dXJuIDE7Ci0rfQotK2dkYl9leHBlY3QgMzYwIHsKLSsgICAgLXJlICJ3 YXJuaW5nOiBub3QgdXNpbmcgdW50cnVzdGVkIGZpbGUuKlwuZ2RiaW5pdC4qXFtcclxuXF0kZ2Ri X3Byb21wdCAkIiB7Ci0rICAgICAgICBwYXNzICJ1bnRydXN0ZWQgLmdkYmluaXQgY2F1Z2h0LiIK LSsgICAgfQotKyAgICAtcmUgIiRnZGJfcHJvbXB0ICQiICAgICB7Ci0rICAgICAgICBmYWlsICJ1 bnRydXN0ZWQgLmdkYmluaXQgY2F1Z2h0LiIKLSsgICAgfQotKyAgICB0aW1lb3V0IHsKLSsgICAg ICAgIGZhaWwgIih0aW1lb3V0KSB1bnRydXN0ZWQgLmdkYmluaXQgY2F1Z2h0LiIKLSsgICAgfQot K30KLSsKLStyZW1vdGVfZXhlYyBidWlsZCAiY2htb2QgNjQ0IC5nZGJpbml0IgotK3NldCByZXMg W3JlbW90ZV9zcGF3biBob3N0ICIkR0RCIC1udyBbaG9zdF9pbmZvIGdkYl9vcHRzXSJdOwotK2lm IHsgJHJlcyA8IDAgfHwgJHJlcyA9PSAiIiB9IHsKLSsgICAgcGVycm9yICJTcGF3bmluZyAkR0RC IGZhaWxlZC4iCi0rICAgIHJldHVybiAxOwotK30KLStnZGJfZXhwZWN0IDM2MCB7Ci0rICAgIC1y ZSAid2FybmluZzogbm90IHVzaW5nIHVudHJ1c3RlZCBmaWxlLipcLmdkYmluaXQuKlxbXHJcblxd JGdkYl9wcm9tcHQgJCIgewotKyAgICAgICAgZmFpbCAidHJ1c3RlZCAuZ2RiaW5pdCBhbGxvd2Vk LiIKLSsgICAgfQotKyAgICAtcmUgImluIGdkYmluaXQuKiRnZGJfcHJvbXB0ICQiICAgICB7Ci0r ICAgICAgICBwYXNzICJ0cnVzdGVkIC5nZGJpbml0IGFsbG93ZWQuIgotKyAgICB9Ci0rICAgIHRp bWVvdXQgewotKyAgICAgICAgZmFpbCAiKHRpbWVvdXQpIHRydXN0ZWQgLmdkYmluaXQgYWxsb3dl ZC4iCi0rICAgIH0KLSt9Ci0rCi0rcmVtb3RlX2V4ZWMgYnVpbGQgInJtIC5nZGJpbml0IgotSW5k ZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nZGJpbml0LnNh bXBsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAw MDAwMCArMDAwMAotKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9nZGJpbml0LnNhbXBsZQkyMDExLTEyLTE5IDAwOjI1OjI2LjA3OTg5MTk1NCArMDEwMAotQEAg LTAsMCArMSBAQAotK2VjaG8gIlxuaW4gZ2RiaW5pdCIKLUluZGV4OiBnZGItNy40LjUwLjIwMTEx MjE4L2dkYi9tYWluLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcv Z2RiL21haW4uYwkyMDExLTExLTA1IDE4OjA4OjMwLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjQuNTAuMjAxMTEyMTgvZ2RiL21haW4uYwkyMDExLTEyLTE5IDAwOjI1OjI2LjA4MDg5MTk1MCAr MDEwMAotQEAgLTgyMiw3ICs4MjIsNyBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQotICAg ICAgZGVidWdnaW5nIG9yIHdoYXQgZGlyZWN0b3J5IHlvdSBhcmUgaW4uICAqLwotIAotICAgaWYg KGhvbWVfZ2RiaW5pdCAmJiAhaW5oaWJpdF9nZGJpbml0KQotLSAgICBjYXRjaF9jb21tYW5kX2Vy cm9ycyAoc291cmNlX3NjcmlwdCwgaG9tZV9nZGJpbml0LCAwLCBSRVRVUk5fTUFTS19BTEwpOwot KyAgICBjYXRjaF9jb21tYW5kX2Vycm9ycyAoc291cmNlX3NjcmlwdCwgaG9tZV9nZGJpbml0LCAt MSwgUkVUVVJOX01BU0tfQUxMKTsKLSAKLSAgIC8qIE5vdyBwZXJmb3JtIGFsbCB0aGUgYWN0aW9u cyBpbmRpY2F0ZWQgYnkgdGhlIGFyZ3VtZW50cy4gICovCi0gICBpZiAoY2RhcmcgIT0gTlVMTCkK LUBAIC05MDEsNyArOTAxLDcgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKLSAgIC8qIFJl YWQgdGhlIC5nZGJpbml0IGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LCAqaWYqIGl0IGlz bid0Ci0gICAgICB0aGUgc2FtZSBhcyB0aGUgJEhPTUUvLmdkYmluaXQgZmlsZSAoaXQgc2hvdWxk IGV4aXN0LCBhbHNvKS4gICovCi0gICBpZiAobG9jYWxfZ2RiaW5pdCAmJiAhaW5oaWJpdF9nZGJp bml0KQotLSAgICBjYXRjaF9jb21tYW5kX2Vycm9ycyAoc291cmNlX3NjcmlwdCwgbG9jYWxfZ2Ri aW5pdCwgMCwgUkVUVVJOX01BU0tfQUxMKTsKLSsgICAgY2F0Y2hfY29tbWFuZF9lcnJvcnMgKHNv dXJjZV9zY3JpcHQsIGxvY2FsX2dkYmluaXQsIC0xLCBSRVRVUk5fTUFTS19BTEwpOwotIAotICAg LyogTm93IHRoYXQgYWxsIC5nZGJpbml0J3MgaGF2ZSBiZWVuIHJlYWQgYW5kIGFsbCAtZCBvcHRp b25zIGhhdmUgYmVlbgotICAgICAgcHJvY2Vzc2VkLCB3ZSBjYW4gcmVhZCBhbnkgc2NyaXB0cyBt ZW50aW9uZWQgaW4gU1lNQVJHLgotSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3B5dGhv bi9weS1hdXRvLWxvYWQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3Jp Zy9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTEtMTItMTAgMjM6NTE6NDcuMDAwMDAwMDAw ICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5j CTIwMTEtMTItMTkgMDA6MjU6MjYuMDgwODkxOTUwICswMTAwCi1AQCAtMjg0LDcgKzI4NCw3IEBA IHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMgKHN0cnVjdCBvYmpmaWxlICoKLSAJfQotIAotICAgICAg IG9wZW5lZCA9IGZpbmRfYW5kX29wZW5fc2NyaXB0IChmaWxlLCAxIC8qc2VhcmNoX3BhdGgqLywK LS0JCQkJICAgICAmc3RyZWFtLCAmZnVsbF9wYXRoKTsKLSsJCQkJICAgICAmc3RyZWFtLCAmZnVs bF9wYXRoLCAxIC8qIGZyb21fdHR5ICovKTsKLSAKLSAgICAgICAvKiBJZiBvbmUgc2NyaXB0IGlz bid0IGZvdW5kIGl0J3Mgbm90IHVuY29tbW9uIGZvciBtb3JlIHRvIG5vdCBiZQotIAkgZm91bmQg ZWl0aGVyLiAgV2UgZG9uJ3Qgd2FudCB0byBwcmludCBhbiBlcnJvciBtZXNzYWdlIGZvciBlYWNo Ci1JbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvY2xpL2NsaS1jbWRzLmgKLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL2NsaS9jbGktY21kcy5oCTIwMTEt MTEtMDEgMTU6NTE6MjMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDExMTIxOC9n ZGIvY2xpL2NsaS1jbWRzLmgJMjAxMS0xMi0xOSAwMDoyNToyNi4wODA4OTE5NTAgKzAxMDAKLUBA IC0xMjksNyArMTI5LDggQEAgZXh0ZXJuIHZvaWQgc291cmNlX3NjcmlwdCAoY2hhciAqLCBpbnQp OwotIC8qIEV4cG9ydGVkIHRvIG9iamZpbGVzLmMuICAqLwotIAotIGV4dGVybiBpbnQgZmluZF9h bmRfb3Blbl9zY3JpcHQgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBzZWFyY2hfcGF0aCwKLS0JCQkJ IEZJTEUgKipzdHJlYW1wLCBjaGFyICoqZnVsbF9wYXRoKTsKLSsJCQkJIEZJTEUgKipzdHJlYW1w LCBjaGFyICoqZnVsbF9wYXRoLAotKwkJCQkgaW50IGZyb21fdHR5KTsKLSAKLSAvKiBDb21tYW5k IHRyYWNpbmcgc3RhdGUuICAqLwotIAoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0wMW9mMTIu cGF0Y2ggYi9nZGItYXV0b2xvYWQtMDFvZjEyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmQzMmIyMWYKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYXV0b2xvYWQtMDFv ZjEyLnBhdGNoCkBAIC0wLDAgKzEsNjUgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGIt Y3ZzLzIwMTItMDEvbXNnMDAyMDIuaHRtbAorCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8w MS8yNCAxOToxMjozMQkxLjEzNzcxCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMS8yNCAy MDo1NjozMwkxLjEzNzcyCisjIyAtMSwzICsxLDEyIEBACisrMjAxMi0wMS0yNCAgSmFuIEtyYXRv Y2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorKworKwlDb2RlIGNsZWFudXAuCisr CSogY2xpL2NsaS1jbWRzLmMgKHNvdXJjZV9zY3JpcHRfZnJvbV9zdHJlYW0pOiBOZXZlciBmY2xv c2UgU1RSRUFNLgorKwlVcGRhdGUgdGhlIGZ1bmN0aW9uIGNvbW1lbnQgZm9yIGl0LgorKwkoc291 cmNlX3NjcmlwdF93aXRoX3NlYXJjaCk6IENhbGwgbWFrZV9jbGVhbnVwX2ZjbG9zZSBmb3IgU1RS RUFNLgorKwkqIGNsaS9jbGktc2NyaXB0LmMgKHNjcmlwdF9mcm9tX2ZpbGUpOiBEbyBub3QgY2Fs bCBtYWtlX2NsZWFudXBfZmNsb3NlCisrCWZvciBTVFJFQU0uCisrCisgMjAxMi0wMS0yNCAgUGVk cm8gQWx2ZXMgIDxwYWx2ZXNAcmVkaGF0LmNvbT4KKyAKKyAJKiBicmVha3BvaW50LmMgKGJwc3Rh dF9zdG9wX3N0YXR1cyk6IE1vdmluZyBjbGVhcmluZyBwcmludF9pdAorLS0tIHNyYy9nZGIvY2xp L2NsaS1jbWRzLmMJMjAxMi8wMS8yMyAxNjozNzowMwkxLjEyMworKysrIHNyYy9nZGIvY2xpL2Ns aS1jbWRzLmMJMjAxMi8wMS8yNCAyMDo1NjozMwkxLjEyNAorQEAgLTUyNyw4ICs1MjcsNyBAQAor ICAgcmV0dXJuIDE7CisgfQorIAorLS8qIExvYWQgc2NyaXB0IEZJTEUsIHdoaWNoIGhhcyBhbHJl YWR5IGJlZW4gb3BlbmVkIGFzIFNUUkVBTS4KKy0gICBTVFJFQU0gaXMgY2xvc2VkIGJlZm9yZSB3 ZSByZXR1cm4uICAqLworKy8qIExvYWQgc2NyaXB0IEZJTEUsIHdoaWNoIGhhcyBhbHJlYWR5IGJl ZW4gb3BlbmVkIGFzIFNUUkVBTS4gICovCisgCisgc3RhdGljIHZvaWQKKyBzb3VyY2Vfc2NyaXB0 X2Zyb21fc3RyZWFtIChGSUxFICpzdHJlYW0sIGNvbnN0IGNoYXIgKmZpbGUpCitAQCAtNTU2LDEy ICs1NTUsOSBAQAorIAkgIGVsc2UKKyAJICAgIHsKKyAJICAgICAgLyogTm9wZSwganVzdCBwdW50 LiAgKi8KKy0JICAgICAgZmNsb3NlIChzdHJlYW0pOworIAkgICAgICB0aHJvd19leGNlcHRpb24g KGUpOworIAkgICAgfQorIAl9CistICAgICAgZWxzZQorLQlmY2xvc2UgKHN0cmVhbSk7CisgICAg IH0KKyAgIGVsc2UKKyAgICAgc2NyaXB0X2Zyb21fZmlsZSAoc3RyZWFtLCBmaWxlKTsKK0BAIC01 OTUsNiArNTkxLDcgQEAKKyAgICAgfQorIAorICAgb2xkX2NsZWFudXBzID0gbWFrZV9jbGVhbnVw ICh4ZnJlZSwgZnVsbF9wYXRoKTsKKysgIG1ha2VfY2xlYW51cF9mY2xvc2UgKHN0cmVhbSk7Cisg ICAvKiBUaGUgcHl0aG9uIHN1cHBvcnQgcmVvcGVucyB0aGUgZmlsZSwgc28gd2UgbmVlZCB0byBw YXNzIGZ1bGxfcGF0aCBoZXJlCisgICAgICBpbiBjYXNlIHRoZSBmaWxlIHdhcyBmb3VuZCBvbiB0 aGUgc2VhcmNoIHBhdGguICBJdCdzIHVzZWZ1bCB0byBkbyB0aGlzCisgICAgICBhbnl3YXkgc28g dGhhdCBlcnJvciBtZXNzYWdlcyBzaG93IHRoZSBhY3R1YWwgZmlsZSB1c2VkLiAgQnV0IG9ubHkg ZG8KKy0tLSBzcmMvZ2RiL2NsaS9jbGktc2NyaXB0LmMJMjAxMi8wMS8wNCAwODoxNzoxNwkxLjcz CisrKysgc3JjL2dkYi9jbGkvY2xpLXNjcmlwdC5jCTIwMTIvMDEvMjQgMjA6NTY6MzMJMS43NAor QEAgLTE2MTQsMTEgKzE2MTQsOSBAQAorICAgaWYgKHN0cmVhbSA9PSBOVUxMKQorICAgICBpbnRl cm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLCBfKCJjYWxsZWQgd2l0aCBOVUxMIGZpbGUg cG9pbnRlciEiKSk7CisgCistICBvbGRfY2xlYW51cHMgPSBtYWtlX2NsZWFudXBfZmNsb3NlIChz dHJlYW0pOworLQorICAgb2xkX2xpbmVzLm9sZF9saW5lID0gc291cmNlX2xpbmVfbnVtYmVyOwor ICAgb2xkX2xpbmVzLm9sZF9maWxlID0gc291cmNlX2ZpbGVfbmFtZTsKKy0gIG1ha2VfY2xlYW51 cCAoc291cmNlX2NsZWFudXBfbGluZXMsICZvbGRfbGluZXMpOworKyAgb2xkX2NsZWFudXBzID0g bWFrZV9jbGVhbnVwIChzb3VyY2VfY2xlYW51cF9saW5lcywgJm9sZF9saW5lcyk7CisgICBzb3Vy Y2VfbGluZV9udW1iZXIgPSAwOworICAgc291cmNlX2ZpbGVfbmFtZSA9IGZpbGU7CisgICAvKiBU aGlzIHdpbGwgZ2V0IHNldCBldmVyeSB0aW1lIHdlIHJlYWQgYSBsaW5lLiAgU28gaXQgd29uJ3Qg c3RheSAiIgoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0wMm9mMTIucGF0Y2ggYi9nZGItYXV0 b2xvYWQtMDJvZjEyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0 NGM5YmIKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYXV0b2xvYWQtMDJvZjEyLnBhdGNoCkBAIC0w LDAgKzEsMTAzIEBACitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTAxL21z ZzAwMjA1Lmh0bWwKKworLS0tIHNyYy9nZGIvZ2RiX3ZlY3MuaAorKysrIHNyYy9nZGIvZ2RiX3Zl Y3MuaAkyMDEyLTA0LTE3IDIyOjA0OjIzLjgxODY2NjAwMCArMDAwMAorQEAgLTAsMCArMSwyOCBA QAorKy8qIFNvbWUgY29tbW9ubHktdXNlZCBWRUMgdHlwZXMuCisrCisrICAgQ29weXJpZ2h0IChD KSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIEdEQi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAg IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4g ICovCisrCisrCisrI2lmbmRlZiBHREJfVkVDU19ICisrI2RlZmluZSBHREJfVkVDU19ICisrCisr I2luY2x1ZGUgInZlYy5oIgorKworK0RFRl9WRUNfUCAoY2hhcl9wdHIpOworKworKyNlbmRpZiAv KiBHREJfVkVDU19IICovCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMS8yNCAyMTozMjo1 NgkxLjEzNzc0CisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMS8yNCAyMTozNjozNwkxLjEz Nzc1CisjIyAtMSwzICsxLDEwIEBACisrMjAxMi0wMS0yNCAgVG9tIFRyb21leSAgPHRyb21leUBy ZWRoYXQuY29tPgorKworKwkqIGFkYS1sYW5nLmM6IEluY2x1ZGUgZ2RiX3ZlY3MuaC4KKysJKiBj aGFyc2V0LmM6IEluY2x1ZGUgZ2RiX3ZlY3MuaC4KKysJKiB0cmFjZXBvaW50Lmg6IEluY2x1ZGUg Z2RiX3ZlY3MuaC4KKysJKiBnZGJfdmVjcy5oOiBOZXcgZmlsZS4KKysKKyAyMDEyLTAxLTI0ICBQ ZWRybyBBbHZlcyAgPHBlZHJvQGNvZGVzb3VyY2VyeS5jb20+CisgCisgCSogYnJlYWtwb2ludC5j IChicmVha3BvaW50X2hpdF9jYXRjaF9mb3JrKQorLS0tIHNyYy9nZGIvYWRhLWxhbmcuYwkyMDEy LzAxLzA2IDAzOjM0OjQ1CTEuMzMwCisrKysgc3JjL2dkYi9hZGEtbGFuZy5jCTIwMTIvMDEvMjQg MjE6MzY6MzcJMS4zMzEKK0BAIC01Nyw2ICs1Nyw3IEBACisgI2luY2x1ZGUgIm9ic2VydmVyLmgi CisgI2luY2x1ZGUgInZlYy5oIgorICNpbmNsdWRlICJzdGFjay5oIgorKyNpbmNsdWRlICJnZGJf dmVjcy5oIgorIAorICNpbmNsdWRlICJwc3ltdGFiLmgiCisgI2luY2x1ZGUgInZhbHVlLmgiCitA QCAtNTYyOCw4ICs1NjI5LDYgQEAKKyAgIHJldHVybiBzeW1fbmFtZTsKKyB9CisgCistREVGX1ZF Q19QIChjaGFyX3B0cik7CistCisgLyogQSBjb21wYW5pb24gZnVuY3Rpb24gdG8gYWRhX21ha2Vf c3ltYm9sX2NvbXBsZXRpb25fbGlzdCgpLgorICAgIENoZWNrIGlmIFNZTV9OQU1FIHJlcHJlc2Vu dHMgYSBzeW1ib2wgd2hpY2ggbmFtZSB3b3VsZCBiZSBzdWl0YWJsZQorICAgIHRvIGNvbXBsZXRl IFRFWFQgKFRFWFRfTEVOIGlzIHRoZSBsZW5ndGggb2YgVEVYVCksIGluIHdoaWNoIGNhc2UKKy0t LSBzcmMvZ2RiL2NoYXJzZXQuYwkyMDEyLzAxLzA0IDA4OjE3OjAwCTEuNDYKKysrKyBzcmMvZ2Ri L2NoYXJzZXQuYwkyMDEyLzAxLzI0IDIxOjM2OjM3CTEuNDcKK0BAIC0yNyw2ICsyNyw3IEBACisg I2luY2x1ZGUgInZlYy5oIgorICNpbmNsdWRlICJlbnZpcm9uLmgiCisgI2luY2x1ZGUgImFyY2gt dXRpbHMuaCIKKysjaW5jbHVkZSAiZ2RiX3ZlY3MuaCIKKyAKKyAjaW5jbHVkZSA8c3RkZGVmLmg+ CisgI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKK0BAIC03MTcsOCArNzE4LDYgQEAKKyAKKyBleHRl cm4gaW5pdGlhbGl6ZV9maWxlX2Z0eXBlIF9pbml0aWFsaXplX2NoYXJzZXQ7IC8qIC1XbWlzc2lu Zy1wcm90b3R5cGUgKi8KKyAKKy1ERUZfVkVDX1AgKGNoYXJfcHRyKTsKKy0KKyBzdGF0aWMgVkVD IChjaGFyX3B0cikgKmNoYXJzZXRzOworIAorICNpZmRlZiBQSE9OWV9JQ09OVgorLS0tIHNyYy9n ZGIvdHJhY2Vwb2ludC5oCTIwMTIvMDEvMDQgMDg6Mjc6NTcJMS40NgorKysrIHNyYy9nZGIvdHJh Y2Vwb2ludC5oCTIwMTIvMDEvMjQgMjE6MzY6MzcJMS40NworQEAgLTIyLDYgKzIyLDcgQEAKKyAj aW5jbHVkZSAiYnJlYWtwb2ludC5oIgorICNpbmNsdWRlICJ0YXJnZXQuaCIKKyAjaW5jbHVkZSAi bWVtcmFuZ2UuaCIKKysjaW5jbHVkZSAiZ2RiX3ZlY3MuaCIKKyAKKyAvKiBBIHRyYWNlIHN0YXRl IHZhcmlhYmxlIGlzIGEgdmFsdWUgbWFuYWdlZCBieSBhIHRhcmdldCBiZWluZworICAgIHRyYWNl ZC4gIEEgdHJhY2Ugc3RhdGUgdmFyaWFibGUgKG9yIHRzdiBmb3Igc2hvcnQpIGNhbiBiZSBhY2Nl c3NlZAorQEAgLTE0Myw4ICsxNDQsNiBAQAorIAorIC8qIFN0cnVjdCB0byBjb2xsZWN0IHJhbmRv bSBpbmZvIGFib3V0IHRyYWNlcG9pbnRzIG9uIHRoZSB0YXJnZXQuICAqLworIAorLURFRl9WRUNf UCAoY2hhcl9wdHIpOworLQorIHN0cnVjdCB1cGxvYWRlZF90cAorIHsKKyAgIGludCBudW1iZXI7 CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTAzb2YxMi5wYXRjaCBiL2dkYi1hdXRvbG9hZC0w M29mMTIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBlZmM4Ywot LS0gL2Rldi9udWxsCisrKyBiL2dkYi1hdXRvbG9hZC0wM29mMTIucGF0Y2gKQEAgLTAsMCArMSwy MTUgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDEvbXNnMDAyMTku aHRtbAorCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMS8yNiAxNjo0NDoyOQkxLjEzNzgw CisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMS8yNiAyMTo1NDo0MgkxLjEzNzgxCisjIyAt MSwzICsxLDIyIEBACisrMjAxMi0wMS0yNiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPgorKworKwlEbyBub3Qgb3BlbiBzY3JpcHQgZmlsZW5hbWVzIHR3aWNlLgor KwkqIGNsaS9jbGktY21kcy5jIChzb3VyY2Vfc2NyaXB0X2Zyb21fc3RyZWFtKTogUGFzcyB0bwor Kwlzb3VyY2VfcHl0aG9uX3NjcmlwdCBhbHNvIFNUUkVBTS4KKysJKiBweXRob24vcHktYXV0by1s b2FkLmMgKHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMpOiBQYXNzIHRvCisrCXNvdXJjZV9weXRob25f c2NyaXB0X2Zvcl9vYmpmaWxlIGFsc28gU1RSRUFNLgorKwkoYXV0b19sb2FkX29iamZpbGVfc2Ny aXB0KTogUGFzcyB0byBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZQorKwlhbHNvIElO UFVULgorKwkqIHB5dGhvbi9weXRob24taW50ZXJuYWwuaCAoc291cmNlX3B5dGhvbl9zY3JpcHRf Zm9yX29iamZpbGUpOiBOZXcKKysJcGFyYW1ldGVyIGZpbGUsIHJlbmFtZSBwYXJhbWV0ZXIgZmls ZSB0byBmaWxlbmFtZS4KKysJKiBweXRob24vcHl0aG9uLmMgKHB5dGhvbl9ydW5fc2ltcGxlX2Zp bGUpOiBDYWxsIFB5UnVuX1NpbXBsZUZpbGUKKysJaW5zdGVhZCBpZiAhX1dJTjMyLiAgVXBkYXRl IHRoZSBmdW5jdGlvbiBjb21tZW50LgorKwkoc291cmNlX3B5dGhvbl9zY3JpcHQsIHNvdXJjZV9w eXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlKQorKwkoc291cmNlX3B5dGhvbl9zY3JpcHQpOiBOZXcg cGFyYW1ldGVyIGZpbGUsIHJlbmFtZSBwYXJhbWV0ZXIgZmlsZSB0bworKwlmaWxlbmFtZS4gIFBh c3MgRklMRU5BTUUgdG8gcHl0aG9uX3J1bl9zaW1wbGVfZmlsZS4KKysJKiBweXRob24vcHl0aG9u LmggKHNvdXJjZV9weXRob25fc2NyaXB0KTogTmV3IHBhcmFtZXRlciBmaWxlLCByZW5hbWUKKysJ cGFyYW1ldGVyIGZpbGUgdG8gZmlsZW5hbWUuCisrCisgMjAxMi0wMS0yNiAgUGVkcm8gQWx2ZXMg IDxwYWx2ZXNAcmVkaGF0LmNvbT4KKyAKKyAJKiBjb3JlbG93LmMgKGNvcmVfaGFzX2Zha2VfcGlk KTogRGVsZXRlLgorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NsaS9jbGktY21kcy5j Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jbGkvY2xpLWNt ZHMuYwkyMDEyLTAxLTA0IDA5OjE3OjE2LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL2NsaS9jbGktY21kcy5jCTIwMTItMDQtMTggMDA6NDE6NDIuNjk2ODU1NDMw ICswMjAwCitAQCAtNTI5LDkgKzUyOSw3IEBAIHNvdXJjZV9zY3JpcHRfZnJvbV9zdHJlYW0gKEZJ TEUgKnN0cmVhbSwKKyAKKyAgICAgICBUUllfQ0FUQ0ggKGUsIFJFVFVSTl9NQVNLX0VSUk9SKQor IAl7CistICAgICAgICAgIC8qIFRoZSBweXRob24gc3VwcG9ydCByZW9wZW5zIHRoZSBmaWxlIHVz aW5nIHB5dGhvbiBmdW5jdGlvbnMsCistICAgICAgICAgICAgIHNvIHRoZXJlJ3Mgbm8gcG9pbnQg aW4gcGFzc2luZyBTVFJFQU0gaGVyZS4gICovCistCSAgc291cmNlX3B5dGhvbl9zY3JpcHQgKGZp bGUpOworKwkgIHNvdXJjZV9weXRob25fc2NyaXB0IChzdHJlYW0sIGZpbGUpOworIAl9CisgICAg ICAgaWYgKGUucmVhc29uIDwgMCkKKyAJeworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L3B5dGhvbi9weS1hdXRvLWxvYWQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAx MjAub3JpZy9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTItMDEtMDQgMDk6MTc6MjUuMDAw MDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5LWF1dG8t bG9hZC5jCTIwMTItMDQtMTggMDA6NDE6NDIuNjk2ODU1NDMwICswMjAwCitAQCAtMzEyLDcgKzMx Miw3IEBAIFVzZSBgaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyBbUkVHRVhQXScgdG8KKyAJeworIAkg IC8qIElmIHRoaXMgZmlsZSBpcyBub3QgY3VycmVudGx5IGxvYWRlZCwgbG9hZCBpdC4gICovCisg CSAgaWYgKCEgaW5faGFzaF90YWJsZSkKKy0JICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9v YmpmaWxlIChvYmpmaWxlLCBmdWxsX3BhdGgpOworKwkgICAgc291cmNlX3B5dGhvbl9zY3JpcHRf Zm9yX29iamZpbGUgKG9iamZpbGUsIHN0cmVhbSwgZnVsbF9wYXRoKTsKKyAJICBmY2xvc2UgKHN0 cmVhbSk7CisgCSAgeGZyZWUgKGZ1bGxfcGF0aCk7CisgCX0KK0BAIC00MzEsNyArNDMxLDcgQEAg YXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZQorIAkgSXQncyBoaWdobHkg dW5saWtlbHkgdGhhdCB3ZSdkIGV2ZXIgbG9hZCBpdCB0d2ljZSwKKyAJIGFuZCB0aGVzZSBzY3Jp cHRzIGFyZSByZXF1aXJlZCB0byBiZSBpZGVtcG90ZW50IHVuZGVyIG11bHRpcGxlCisgCSBsb2Fk cyBhbnl3YXkuICAqLworLSAgICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChv YmpmaWxlLCBkZWJ1Z2ZpbGUpOworKyAgICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpm aWxlIChvYmpmaWxlLCBpbnB1dCwgZGVidWdmaWxlKTsKKyAgICAgICBmY2xvc2UgKGlucHV0KTsK KyAgICAgfQorIAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weXRob24t aW50ZXJuYWwuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIv cHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oCTIwMTItMDEtMDQgMDk6MTc6MjUuMDAwMDAwMDAwICsw MTAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5o CTIwMTItMDQtMTggMDA6NDE6NDIuNjk2ODU1NDMwICswMjAwCitAQCAtMjg5LDggKzI4OSw4IEBA IGV4dGVybiBjb25zdCBzdHJ1Y3QgbGFuZ3VhZ2VfZGVmbiAqcHl0aG8KKyAKKyB2b2lkIGdkYnB5 X3ByaW50X3N0YWNrICh2b2lkKTsKKyAKKy12b2lkIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9v YmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKy0JCQkJICAgICAgIGNvbnN0IGNoYXIg KmZpbGUpOworK3ZvaWQgc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLCBGSUxFICpmaWxlLAorKwkJCQkgICAgICAgY29uc3QgY2hhciAqZmls ZW5hbWUpOworIAorIFB5T2JqZWN0ICpweXRob25fc3RyaW5nX3RvX3VuaWNvZGUgKFB5T2JqZWN0 ICpvYmopOworIGNoYXIgKnVuaWNvZGVfdG9fdGFyZ2V0X3N0cmluZyAoUHlPYmplY3QgKnVuaWNv ZGVfc3RyKTsKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0aG9uLmMK Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weXRo b24uYwkyMDEyLTA0LTE4IDAwOjQxOjMwLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL3B5dGhvbi9weXRob24uYwkyMDEyLTA0LTE4IDAwOjQxOjQyLjY5Njg1NTQz MCArMDIwMAorQEAgLTE1NCwzNCArMTU0LDMxIEBAIGVuc3VyZV9weXRob25fZW52IChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXIKKyAgIHJldHVybiBtYWtlX2NsZWFudXAgKHJlc3RvcmVfcHl0aG9uX2Vu diwgZW52KTsKKyB9CisgCistLyogQSB3cmFwcGVyIGFyb3VuZCBQeVJ1bl9TaW1wbGVGaWxlLiAg RklMRU5BTUUgaXMgdGhlIG5hbWUgb2YKKy0gICB0aGUgUHl0aG9uIHNjcmlwdCB0byBydW4uCisr LyogQSB3cmFwcGVyIGFyb3VuZCBQeVJ1bl9TaW1wbGVGaWxlLiAgRklMRSBpcyB0aGUgUHl0aG9u IHNjcmlwdCB0byBydW4KKysgICBuYW1lZCBGSUxFTkFNRS4KKyAKKy0gICBPbmUgb2YgdGhlIHBh cmFtZXRlcnMgb2YgUHlSdW5fU2ltcGxlRmlsZSBpcyBhIEZJTEUgKi4KKy0gICBUaGUgcHJvYmxl bSBpcyB0aGF0IHR5cGUgRklMRSBpcyBleHRyZW1lbHkgc3lzdGVtIGFuZCBjb21waWxlcgorLSAg IGRlcGVuZGVudC4gIFNvLCB1bmxlc3MgdGhlIFB5dGhvbiBsaWJyYXJ5IGhhcyBiZWVuIGNvbXBp bGVkIHVzaW5nCistICAgdGhlIHNhbWUgYnVpbGQgZW52aXJvbm1lbnQgYXMgR0RCLCB3ZSBydW4g dGhlIHJpc2sgb2YgZ2V0dGluZworLSAgIGEgY3Jhc2ggZHVlIHRvIGluY29uc2lzdGVuY2llcyBi ZXR3ZWVuIHRoZSBkZWZpbml0aW9uIHVzZWQgYnkgR0RCLAorLSAgIGFuZCB0aGUgZGVmaW5pdGlv biB1c2VkIGJ5IFB5dGhvbi4gIEEgbWlzbWF0Y2ggY2FuIHZlcnkgbGlrZWx5CistICAgbGVhZCB0 byBhIGNyYXNoLgorLQorLSAgIFRoZXJlIGlzIGFsc28gdGhlIHNpdHVhdGlvbiB3aGVyZSB0aGUg UHl0aG9uIGxpYnJhcnkgYW5kIEdEQgorLSAgIGFyZSB1c2luZyB0d28gZGlmZmVyZW50IHZlcnNp b25zIG9mIHRoZSBDIHJ1bnRpbWUgbGlicmFyeS4KKy0gICBUaGlzIGlzIHBhcnRpY3VsYXJseSB2 aXNpYmxlIG9uIFdpbmRvd3MsIHdoZXJlIGZldyB1c2VycyB3b3VsZAorLSAgIGJ1aWxkIFB5dGhv biB0aGVtc2VsdmVzICh0aGlzIGlzIG5vIHRyaXZpYWwgdGFzayBvbiB0aGlzIHBsYXRmb3JtKSwK Ky0gICBhbmQgdGh1cyB1c2UgYmluYXJpZXMgYnVpbHQgYnkgc29tZW9uZSBlbHNlIGluc3RlYWQu IFB5dGhvbiwKKy0gICBiZWluZyBidWlsdCB3aXRoIFZDLCB3b3VsZCB1c2Ugb25lIHZlcnNpb24g b2YgdGhlIG1zdmNyIERMTAorLSAgIChFZy4gbXN2Y3IxMDAuZGxsKSwgd2hpbGUgTWluR1cgdXNl cyBtc3ZjcnQuZGxsLiAgQSBGSUxFICoKKy0gICBmcm9tIG9uZSBydW50aW1lIGRvZXMgbm90IG5l Y2Vzc2FyaWx5IG9wZXJhdGUgY29ycmVjdGx5IGluCisrICAgT24gV2luZG93cyBob3N0cyBmZXcg dXNlcnMgd291bGQgYnVpbGQgUHl0aG9uIHRoZW1zZWx2ZXMgKHRoaXMgaXMgbm8KKysgICB0cml2 aWFsIHRhc2sgb24gdGhpcyBwbGF0Zm9ybSksIGFuZCB0aHVzIHVzZSBiaW5hcmllcyBidWlsdCBi eQorKyAgIHNvbWVvbmUgZWxzZSBpbnN0ZWFkLiAgVGhlcmUgbWF5IGhhcHBlbiBzaXR1YXRpb24g d2hlcmUgdGhlIFB5dGhvbgorKyAgIGxpYnJhcnkgYW5kIEdEQiBhcmUgdXNpbmcgdHdvIGRpZmZl cmVudCB2ZXJzaW9ucyBvZiB0aGUgQyBydW50aW1lCisrICAgbGlicmFyeS4gIFB5dGhvbiwgYmVp bmcgYnVpbHQgd2l0aCBWQywgd291bGQgdXNlIG9uZSB2ZXJzaW9uIG9mIHRoZQorKyAgIG1zdmNy IERMTCAoRWcuIG1zdmNyMTAwLmRsbCksIHdoaWxlIE1pbkdXIHVzZXMgbXN2Y3J0LmRsbC4KKysg ICBBIEZJTEUgKiBmcm9tIG9uZSBydW50aW1lIGRvZXMgbm90IG5lY2Vzc2FyaWx5IG9wZXJhdGUg Y29ycmVjdGx5IGluCisgICAgdGhlIG90aGVyIHJ1bnRpbWUuCisgCistICAgVG8gd29yayBhcm91 bmQgdGhpcyBwb3RlbnRpYWwgaXNzdWUsIHdlIGNyZWF0ZSB0aGUgRklMRSBvYmplY3QKKy0gICB1 c2luZyBQeXRob24gcm91dGluZXMsIHRodXMgbWFraW5nIHN1cmUgdGhhdCBpdCBpcyBjb21wYXRp YmxlCistICAgd2l0aCB0aGUgUHl0aG9uIGxpYnJhcnkuICAqLworKyAgIFRvIHdvcmsgYXJvdW5k IHRoaXMgcG90ZW50aWFsIGlzc3VlLCB3ZSBjcmVhdGUgb24gV2luZG93cyBob3N0cyB0aGUKKysg ICBGSUxFIG9iamVjdCB1c2luZyBQeXRob24gcm91dGluZXMsIHRodXMgbWFraW5nIHN1cmUgdGhh dCBpdCBpcworKyAgIGNvbXBhdGlibGUgd2l0aCB0aGUgUHl0aG9uIGxpYnJhcnkuICAqLworIAor IHN0YXRpYyB2b2lkCistcHl0aG9uX3J1bl9zaW1wbGVfZmlsZSAoY29uc3QgY2hhciAqZmlsZW5h bWUpCisrcHl0aG9uX3J1bl9zaW1wbGVfZmlsZSAoRklMRSAqZmlsZSwgY29uc3QgY2hhciAqZmls ZW5hbWUpCisgeworKyNpZm5kZWYgX1dJTjMyCisrCisrICBQeVJ1bl9TaW1wbGVGaWxlIChmaWxl LCBmaWxlbmFtZSk7CisrCisrI2Vsc2UgLyogX1dJTjMyICovCisrCisgICBjaGFyICpmdWxsX3Bh dGg7CisgICBQeU9iamVjdCAqcHl0aG9uX2ZpbGU7CisgICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51 cDsKK0BAIC0yMDEsNiArMTk4LDggQEAgcHl0aG9uX3J1bl9zaW1wbGVfZmlsZSAoY29uc3QgY2hh ciAqZmlsZQorICAgbWFrZV9jbGVhbnVwX3B5X2RlY3JlZiAocHl0aG9uX2ZpbGUpOworICAgUHlS dW5fU2ltcGxlRmlsZSAoUHlGaWxlX0FzRmlsZSAocHl0aG9uX2ZpbGUpLCBmaWxlbmFtZSk7Cisg ICBkb19jbGVhbnVwcyAoY2xlYW51cCk7CisrCisrI2VuZGlmIC8qIF9XSU4zMiAqLworIH0KKyAK KyAvKiBHaXZlbiBhIGNvbW1hbmRfbGluZSwgcmV0dXJuIGEgY29tbWFuZCBzdHJpbmcgc3VpdGFi bGUgZm9yIHBhc3NpbmcKK0BAIC02MjMsMTcgKzYyMiwxNyBAQCBnZGJweV9wYXJzZV9hbmRfZXZh bCAoUHlPYmplY3QgKnNlbGYsIFB5CisgfQorIAorIC8qIFJlYWQgYSBmaWxlIGFzIFB5dGhvbiBj b2RlLgorLSAgIEZJTEUgaXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUuCisrICAgRklMRSBpcyB0aGUg ZmlsZSB0byBydW4uICBGSUxFTkFNRSBpcyBuYW1lIG9mIHRoZSBmaWxlIEZJTEUuCisgICAgVGhp cyBkb2VzIG5vdCB0aHJvdyBhbnkgZXJyb3JzLiAgSWYgYW4gZXhjZXB0aW9uIG9jY3VycyBweXRo b24gd2lsbCBwcmludAorICAgIHRoZSB0cmFjZWJhY2sgYW5kIGNsZWFyIHRoZSBlcnJvciBpbmRp Y2F0b3IuICAqLworIAorIHZvaWQKKy1zb3VyY2VfcHl0aG9uX3NjcmlwdCAoY29uc3QgY2hhciAq ZmlsZSkKKytzb3VyY2VfcHl0aG9uX3NjcmlwdCAoRklMRSAqZmlsZSwgY29uc3QgY2hhciAqZmls ZW5hbWUpCisgeworICAgc3RydWN0IGNsZWFudXAgKmNsZWFudXA7CisgCisgICBjbGVhbnVwID0g ZW5zdXJlX3B5dGhvbl9lbnYgKGdldF9jdXJyZW50X2FyY2ggKCksIGN1cnJlbnRfbGFuZ3VhZ2Up OworLSAgcHl0aG9uX3J1bl9zaW1wbGVfZmlsZSAoZmlsZSk7CisrICBweXRob25fcnVuX3NpbXBs ZV9maWxlIChmaWxlLCBmaWxlbmFtZSk7CisgICBkb19jbGVhbnVwcyAoY2xlYW51cCk7CisgfQor IAorQEAgLTEwNDEsMTkgKzEwNDAsMjAgQEAgZ2RicHlfcHJvZ3NwYWNlcyAoUHlPYmplY3QgKnVu dXNlZDEsIFB5TworICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlOyBpdCBpcyBO VUxMIGF0IG90aGVyIHRpbWVzLiAgKi8KKyBzdGF0aWMgc3RydWN0IG9iamZpbGUgKmdkYnB5X2N1 cnJlbnRfb2JqZmlsZTsKKyAKKy0vKiBTZXQgdGhlIGN1cnJlbnQgb2JqZmlsZSB0byBPQkpGSUxF IGFuZCB0aGVuIHJlYWQgRklMRSBhcyBQeXRob24gY29kZS4KKy0gICBUaGlzIGRvZXMgbm90IHRo cm93IGFueSBlcnJvcnMuICBJZiBhbiBleGNlcHRpb24gb2NjdXJzIHB5dGhvbiB3aWxsIHByaW50 CistICAgdGhlIHRyYWNlYmFjayBhbmQgY2xlYXIgdGhlIGVycm9yIGluZGljYXRvci4gICovCisr LyogU2V0IHRoZSBjdXJyZW50IG9iamZpbGUgdG8gT0JKRklMRSBhbmQgdGhlbiByZWFkIEZJTEUg bmFtZWQgRklMRU5BTUUKKysgICBhcyBQeXRob24gY29kZS4gIFRoaXMgZG9lcyBub3QgdGhyb3cg YW55IGVycm9ycy4gIElmIGFuIGV4Y2VwdGlvbgorKyAgIG9jY3VycyBweXRob24gd2lsbCBwcmlu dCB0aGUgdHJhY2ViYWNrIGFuZCBjbGVhciB0aGUgZXJyb3IgaW5kaWNhdG9yLiAgKi8KKyAKKyB2 b2lkCistc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLCBjb25zdCBjaGFyICpmaWxlKQorK3NvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpm aWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUpCisgeworICAgc3RydWN0 IGNsZWFudXAgKmNsZWFudXBzOworIAorICAgY2xlYW51cHMgPSBlbnN1cmVfcHl0aG9uX2VudiAo Z2V0X29iamZpbGVfYXJjaCAob2JqZmlsZSksIGN1cnJlbnRfbGFuZ3VhZ2UpOworICAgZ2RicHlf Y3VycmVudF9vYmpmaWxlID0gb2JqZmlsZTsKKyAKKy0gIHB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUg KGZpbGUpOworKyAgcHl0aG9uX3J1bl9zaW1wbGVfZmlsZSAoZmlsZSwgZmlsZW5hbWUpOworIAor ICAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKKyAgIGdkYnB5X2N1cnJlbnRfb2JqZmlsZSA9IE5V TEw7CitAQCAtMTEyOSw3ICsxMTI5LDcgQEAgZXZhbF9weXRob25fZnJvbV9jb250cm9sX2NvbW1h bmQgKHN0cnVjdAorIH0KKyAKKyB2b2lkCistc291cmNlX3B5dGhvbl9zY3JpcHQgKGNvbnN0IGNo YXIgKmZpbGUpCisrc291cmNlX3B5dGhvbl9zY3JpcHQgKEZJTEUgKmZpbGUsIGNvbnN0IGNoYXIg KmZpbGVuYW1lKQorIHsKKyAgIHRocm93X2Vycm9yIChVTlNVUFBPUlRFRF9FUlJPUiwKKyAJICAg ICAgIF8oIlB5dGhvbiBzY3JpcHRpbmcgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGNvcHkgb2Yg R0RCLiIpKTsKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0aG9uLmgK Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weXRo b24uaAkyMDEyLTA0LTE4IDAwOjQxOjMwLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL3B5dGhvbi9weXRob24uaAkyMDEyLTA0LTE4IDAwOjQxOjQyLjY5Nzg1NTQy NyArMDIwMAorQEAgLTMwLDcgKzMwLDcgQEAgZXh0ZXJuIHZvaWQgZmluaXNoX3B5dGhvbl9pbml0 aWFsaXphdGlvbgorIAorIHZvaWQgZXZhbF9weXRob25fZnJvbV9jb250cm9sX2NvbW1hbmQgKHN0 cnVjdCBjb21tYW5kX2xpbmUgKik7CisgCistdm9pZCBzb3VyY2VfcHl0aG9uX3NjcmlwdCAoY29u c3QgY2hhciAqZmlsZSk7Cisrdm9pZCBzb3VyY2VfcHl0aG9uX3NjcmlwdCAoRklMRSAqZmlsZSwg Y29uc3QgY2hhciAqZmlsZW5hbWUpOworIAorIHZvaWQgcnVuX3B5dGhvbl9zY3JpcHQgKGludCBh cmdjLCBjaGFyICoqYXJndik7CisgCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTA0b2YxMi5w YXRjaCBiL2dkYi1hdXRvbG9hZC0wNG9mMTIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uNjQ1YWM4NwotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1hdXRvbG9hZC0wNG9m MTIucGF0Y2gKQEAgLTAsMCArMSwxNDEgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGIt Y3ZzLzIwMTItMDMvbXNnMDAyMzQuaHRtbAorCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8w My8xOSAxODoxMzozOQkxLjE0MDI1CisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMy8xOSAx ODoxNjoxNwkxLjE0MDI2CisjIyAtMSwzICsxLDE0IEBACisrMjAxMi0wMy0xOSAgSmFuIEtyYXRv Y2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorKworKwlDb2RlIGNsZWFudXAuCisr CSogbWFpbi5jIChzdHJ1Y3QgY21kYXJnKTogTW92ZSBpdCBoZXJlIGZyb20gbWFpbi4gIEFkZCBt b3JlIGNvbW1lbnRzLgorKwkoY21kYXJnX3MsIFZFQyAoY21kYXJnX3MpKTogTmV3LgorKwkobWFp bik6IE1vdmUgc3RydWN0IGNtZGFyZyBmcm9tIGhlcmUuICBOZXcgdmFyaWFibGVzIGNtZGFyZ192 ZWMgYW5kCisrCWNtZGFyZ19wLiAgUmVtb3ZlIHZhcmlhYmxlcyBjbWRzaXplIGFuZCBuY21kIGFu ZCB0aGVpciBpbml0aWFsaXphdGlvbi4KKysJSW5zdGFsbCBjbGVhbnVwIGZvciBjbWRhcmdfdmVj LiAgVXBkYXRlIGZpbGxpbmcgZm9yIG9wdGlvbnMgJ3gnIGFuZAorKwknWCcuICBSZXBsYWNlIGNt ZGFyZyBwcm9jZXNzaW5nIGJ5IGNtZGFyZ192ZWMgcHJvY2Vzc2luZy4gIFJlbW92ZSB4ZnJlZQor KwlvZiBDTURBUkcuCisrCisgMjAxMi0wMy0xOSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQu Y29tPgorIAorIAkqIGdudS12My1hYmkuYyAoZ251djNfcHJpbnRfdnRhYmxlKTogSW5pdGlhbGl6 ZSAncmVzdWx0X3ZlYycuCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbWFpbi5jCis9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9tYWluLmMJMjAxMi0w NC0xOCAwMDo0MTozMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9tYWluLmMJMjAxMi0wNC0xOCAwMDo0MjoxNS4zNTQ3NzIzMzcgKzAyMDAKK0BAIC0yNzcsNiAr Mjc3LDI1IEBAIGV4ZWNfb3JfY29yZV9maWxlX2F0dGFjaCAoY2hhciAqZmlsZW5hbWUKKyAgICAg fQorIH0KKyAKKysvKiBBcmd1bWVudHMgb2YgLS1jb21tYW5kIG9wdGlvbiBhbmQgaXRzIGNvdW50 ZXJwYXJ0LiAgKi8KKyt0eXBlZGVmIHN0cnVjdCBjbWRhcmcgeworKyAgLyogVHlwZSBvZiB0aGlz IG9wdGlvbi4gICovCisrICBlbnVtIHsKKysgICAgLyogT3B0aW9uIHR5cGUgLXguICAqLworKyAg ICBDTURBUkdfRklMRSwKKysKKysgICAgLyogT3B0aW9uIHR5cGUgLWV4LiAgKi8KKysgICAgQ01E QVJHX0NPTU1BTkQKKysgIH0gdHlwZTsKKysKKysgIC8qIFZhbHVlIG9mIHRoaXMgb3B0aW9uIC0g ZmlsZW5hbWUgb3IgdGhlIEdEQiBjb21tYW5kIGl0c2VsZi4gIFN0cmluZyBtZW1vcnkKKysgICAg IGlzIG5vdCBvd25lZCBieSB0aGlzIHN0cnVjdHVyZSBkZXNwaXRlIGl0IGlzICdjb25zdCcuICAq LworKyAgY2hhciAqc3RyaW5nOworK30gY21kYXJnX3M7CisrCisrLyogRGVmaW5lIHR5cGUgVkVD IChjbWRhcmdfcykuICAqLworK0RFRl9WRUNfTyAoY21kYXJnX3MpOworKworIHN0YXRpYyBpbnQK KyBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQorIHsKK0BAIC0zMDMsMTcgKzMyMiw4IEBAIGNh cHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCisgICBzdGF0aWMgaW50IHByaW50X3ZlcnNpb247Cisg CisgICAvKiBQb2ludGVycyB0byBhbGwgYXJndW1lbnRzIG9mIC0tY29tbWFuZCBvcHRpb24uICAq LworLSAgc3RydWN0IGNtZGFyZyB7CistICAgIGVudW0geworLSAgICAgIENNREFSR19GSUxFLAor LSAgICAgIENNREFSR19DT01NQU5ECistICAgIH0gdHlwZTsKKy0gICAgY2hhciAqc3RyaW5nOwor LSAgfSAqY21kYXJnOworLSAgLyogQWxsb2NhdGVkIHNpemUgb2YgY21kYXJnLiAgKi8KKy0gIGlu dCBjbWRzaXplOworLSAgLyogTnVtYmVyIG9mIGVsZW1lbnRzIG9mIGNtZGFyZyB1c2VkLiAgKi8K Ky0gIGludCBuY21kOworKyAgVkVDIChjbWRhcmdfcykgKmNtZGFyZ192ZWMgPSBOVUxMOworKyAg c3RydWN0IGNtZGFyZyAqY21kYXJnX3A7CisgCisgICAvKiBJbmRpY2VzIG9mIGFsbCBhcmd1bWVu dHMgb2YgLS1kaXJlY3Rvcnkgb3B0aW9uLiAgKi8KKyAgIGNoYXIgKipkaXJhcmc7CitAQCAtMzQ5 LDkgKzM1OSw3IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCisgICBiaW5kdGV4dGRvbWFp biAoUEFDS0FHRSwgTE9DQUxFRElSKTsKKyAgIHRleHRkb21haW4gKFBBQ0tBR0UpOworIAorLSAg Y21kc2l6ZSA9IDE7CistICBjbWRhcmcgPSAoc3RydWN0IGNtZGFyZyAqKSB4bWFsbG9jIChjbWRz aXplICogc2l6ZW9mICgqY21kYXJnKSk7CistICBuY21kID0gMDsKKysgIG1ha2VfY2xlYW51cCAo VkVDX2NsZWFudXAgKGNtZGFyZ19zKSwgJmNtZGFyZ192ZWMpOworICAgZGlyc2l6ZSA9IDE7Cisg ICBkaXJhcmcgPSAoY2hhciAqKikgeG1hbGxvYyAoZGlyc2l6ZSAqIHNpemVvZiAoKmRpcmFyZykp OworICAgbmRpciA9IDA7CitAQCAtNTgyLDI0ICs1OTAsMTkgQEAgY2FwdHVyZWRfbWFpbiAodm9p ZCAqZGF0YSkKKyAJICAgIHBpZGFyZyA9IG9wdGFyZzsKKyAJICAgIGJyZWFrOworIAkgIGNhc2Ug J3gnOgorLQkgICAgY21kYXJnW25jbWRdLnR5cGUgPSBDTURBUkdfRklMRTsKKy0JICAgIGNtZGFy Z1tuY21kKytdLnN0cmluZyA9IG9wdGFyZzsKKy0JICAgIGlmIChuY21kID49IGNtZHNpemUpCist CSAgICAgIHsKKy0JCWNtZHNpemUgKj0gMjsKKy0JCWNtZGFyZyA9IHhyZWFsbG9jICgoY2hhciAq KSBjbWRhcmcsCistCQkJCSAgIGNtZHNpemUgKiBzaXplb2YgKCpjbWRhcmcpKTsKKy0JICAgICAg fQorKwkgICAgeworKwkgICAgICBzdHJ1Y3QgY21kYXJnIGNtZGFyZyA9IHsgQ01EQVJHX0ZJTEUs IG9wdGFyZyB9OworKworKwkgICAgICBWRUNfc2FmZV9wdXNoIChjbWRhcmdfcywgY21kYXJnX3Zl YywgJmNtZGFyZyk7CisrCSAgICB9CisgCSAgICBicmVhazsKKyAJICBjYXNlICdYJzoKKy0JICAg IGNtZGFyZ1tuY21kXS50eXBlID0gQ01EQVJHX0NPTU1BTkQ7CistCSAgICBjbWRhcmdbbmNtZCsr XS5zdHJpbmcgPSBvcHRhcmc7CistCSAgICBpZiAobmNtZCA+PSBjbWRzaXplKQorLQkgICAgICB7 CistCQljbWRzaXplICo9IDI7CistCQljbWRhcmcgPSB4cmVhbGxvYyAoKGNoYXIgKikgY21kYXJn LAorLQkJCQkgICBjbWRzaXplICogc2l6ZW9mICgqY21kYXJnKSk7CistCSAgICAgIH0KKysJICAg IHsKKysJICAgICAgc3RydWN0IGNtZGFyZyBjbWRhcmcgPSB7IENNREFSR19DT01NQU5ELCBvcHRh cmcgfTsKKysKKysJICAgICAgVkVDX3NhZmVfcHVzaCAoY21kYXJnX3MsIGNtZGFyZ192ZWMsICZj bWRhcmcpOworKwkgICAgfQorKwkgICAgYnJlYWs7CisgCSAgICBicmVhazsKKyAJICBjYXNlICdC JzoKKyAJICAgIGJhdGNoX2ZsYWcgPSBiYXRjaF9zaWxlbnQgPSAxOworQEAgLTk5MCwxNiArOTkz LDE4IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCisgICBBTExfT0JKRklMRVMgKG9iamZp bGUpCisgICAgIGxvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChvYmpmaWxlKTsKKyAKKy0g IGZvciAoaSA9IDA7IGkgPCBuY21kOyBpKyspCisrICBmb3IgKGkgPSAwOyBWRUNfaXRlcmF0ZSAo Y21kYXJnX3MsIGNtZGFyZ192ZWMsIGksIGNtZGFyZ19wKTsgaSsrKQorKyAgICBzd2l0Y2ggKGNt ZGFyZ19wLT50eXBlKQorICAgICB7CistICAgICAgaWYgKGNtZGFyZ1tpXS50eXBlID09IENNREFS R19GSUxFKQorLSAgICAgICAgY2F0Y2hfY29tbWFuZF9lcnJvcnMgKHNvdXJjZV9zY3JpcHQsIGNt ZGFyZ1tpXS5zdHJpbmcsCisrICAgICAgY2FzZSBDTURBUkdfRklMRToKKysgICAgICAgIGNhdGNo X2NvbW1hbmRfZXJyb3JzIChzb3VyY2Vfc2NyaXB0LCBjbWRhcmdfcC0+c3RyaW5nLAorIAkJCSAg ICAgICFiYXRjaF9mbGFnLCBSRVRVUk5fTUFTS19BTEwpOworLSAgICAgIGVsc2UgIC8qIGNtZGFy Z1tpXS50eXBlID09IENNREFSR19DT01NQU5EICovCistICAgICAgICBjYXRjaF9jb21tYW5kX2Vy cm9ycyAoZXhlY3V0ZV9jb21tYW5kLCBjbWRhcmdbaV0uc3RyaW5nLAorKwlicmVhazsKKysgICAg ICBjYXNlIENNREFSR19DT01NQU5EOgorKyAgICAgICAgY2F0Y2hfY29tbWFuZF9lcnJvcnMgKGV4 ZWN1dGVfY29tbWFuZCwgY21kYXJnX3AtPnN0cmluZywKKyAJCQkgICAgICAhYmF0Y2hfZmxhZywg UkVUVVJOX01BU0tfQUxMKTsKKysJYnJlYWs7CisgICAgIH0KKy0gIHhmcmVlIChjbWRhcmcpOwor IAorICAgLyogUmVhZCBpbiB0aGUgb2xkIGhpc3RvcnkgYWZ0ZXIgYWxsIHRoZSBjb21tYW5kIGZp bGVzIGhhdmUgYmVlbgorICAgICAgcmVhZC4gICovCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2Fk LTA1b2YxMi5wYXRjaCBiL2dkYi1hdXRvbG9hZC0wNW9mMTIucGF0Y2gKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uOGRkOGNjMwotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1hdXRv bG9hZC0wNW9mMTIucGF0Y2gKQEAgLTAsMCArMSwyNDQgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9y Zy9tbC9nZGItY3ZzLzIwMTItMDMvbXNnMDAyMzUuaHRtbAorCisjIyMgc3JjL2dkYi9DaGFuZ2VM b2cJMjAxMi8wMy8xOSAxODoxNjoxNwkxLjE0MDI2CisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAx Mi8wMy8xOSAxODoxOToyMwkxLjE0MDI3CisjIyAtMSw1ICsxLDE4IEBACisgMjAxMi0wMy0xOSAg SmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorIAorKwkqIE5FV1M6 IERlc2NyaWJlIG5ldyBvcHRpb25zIC0taW5pdC1jb21tYW5kPUZJTEUsIC1peCBhbmQKKysJLS1p bml0LWV2YWwtY29tbWFuZD1DT01NQU5ELCAtaWV4LgorKwkqIG1haW4uYyAoc3RydWN0IGNtZGFy Zyk6IE5ldyBlbnVtIGl0ZW1zIENNREFSR19JTklUX0ZJTEUgYW5kCisrCUNNREFSR19JTklUX0NP TU1BTkQuCisrCShjYXB0dXJlZF9tYWluKTogTmV3IGVudW0gaXRlbXMgT1BUX0lYIGFuZCBPUFRf SUVYLiAgQWRkCisrCSJpbml0LWNvbW1hbmQiLCAiaW5pdC1ldmFsLWNvbW1hbmQiLCAiaXgiIGFu ZCAiaWV4IiB0byB0aGUgdmFyaWFibGUKKysJbG9uZ19vcHRpb25zLiAgSGFuZGxlIE9QVF9JWCBh bmQgT1BUX0lFWC4gIFByb2Nlc3MgdGhlbSBmcm9tIENNREFSR19WRUMuCisrCU5ldyBjb21tZW50 IGZvciBDTURBUkdfRklMRSBhbmQgQ01EQVJHX0NPTU1BTkQgcHJvY2Vzc2luZy4KKysJKHByaW50 X2dkYl9oZWxwKTogRGVzY3JpYmUgLS1pbml0LWNvbW1hbmQ9RklMRSwgLWl4IGFuZAorKwktLWlu aXQtZXZhbC1jb21tYW5kPUNPTU1BTkQsIC1pZXguCisrCisrMjAxMi0wMy0xOSAgSmFuIEtyYXRv Y2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorKworIAlDb2RlIGNsZWFudXAuCisg CSogbWFpbi5jIChzdHJ1Y3QgY21kYXJnKTogTW92ZSBpdCBoZXJlIGZyb20gbWFpbi4gIEFkZCBt b3JlIGNvbW1lbnRzLgorIAkoY21kYXJnX3MsIFZFQyAoY21kYXJnX3MpKTogTmV3LgorSW5kZXg6 IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL05FV1MKKz09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUw LjIwMTIwMTIwLm9yaWcvZ2RiL05FV1MJMjAxMi0wNC0xOCAwMDo0MTozMC4wMDAwMDAwMDAgKzAy MDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9ORVdTCTIwMTItMDQtMTggMDA6NDI6NTEu MjI2NjgxMDY4ICswMjAwCitAQCAtMjgsNiArMjgsMTMgQEAKKyAgIG5vdyBzZXQgYSBicmVha3Bv aW50IGluIGJ1aWxkL2djYy9leHByLmMsIGJ1dCBub3QKKyAgIGJ1aWxkL2xpYmNwcC9leHByLmMu CisgCisrKiBOZXcgY29tbWFuZCBsaW5lIG9wdGlvbnMKKysKKystLWluaXQtY29tbWFuZD1GSUxF LCAtaXggICAgICAgICAgTGlrZSAtLWNvbW1hbmQsIC14IGJ1dCBleGVjdXRlIGl0CisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZSBsb2FkaW5nIGluZmVyaW9yLgorKy0t aW5pdC1ldmFsLWNvbW1hbmQ9Q09NTUFORCwgLWlleCBMaWtlIC0tZXZhbC1jb21tYW5kPUNPTU1B TkQsIC1leCBidXQKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZSBp dCBiZWZvcmUgbG9hZGluZyBpbmZlcmlvci4KKysKKyAqKiogQ2hhbmdlcyBpbiBHREIgNy40Cisg CisgKiBHREIgbm93IGhhbmRsZXMgYW1iaWd1b3VzIGxpbmVzcGVjcyBtb3JlIGNvbnNpc3RlbnRs eTsgdGhlIGV4aXN0aW5nCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbWFpbi5jCis9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9tYWluLmMJMjAxMi0w NC0xOCAwMDo0MjoxNS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9tYWluLmMJMjAxMi0wNC0xOCAwMDo0Mjo1MS4yMjY2ODEwNjggKzAyMDAKK0BAIC0yODUsNyAr Mjg1LDEzIEBAIHR5cGVkZWYgc3RydWN0IGNtZGFyZyB7CisgICAgIENNREFSR19GSUxFLAorIAor ICAgICAvKiBPcHRpb24gdHlwZSAtZXguICAqLworLSAgICBDTURBUkdfQ09NTUFORAorKyAgICBD TURBUkdfQ09NTUFORCwKKysKKysgICAgLyogT3B0aW9uIHR5cGUgLWl4LiAgKi8KKysgICAgQ01E QVJHX0lOSVRfRklMRSwKKysgICAgCisrICAgIC8qIE9wdGlvbiB0eXBlIC1pZXguICAqLworKyAg ICBDTURBUkdfSU5JVF9DT01NQU5ECisgICB9IHR5cGU7CisgCisgICAvKiBWYWx1ZSBvZiB0aGlz IG9wdGlvbiAtIGZpbGVuYW1lIG9yIHRoZSBHREIgY29tbWFuZCBpdHNlbGYuICBTdHJpbmcgbWVt b3J5CitAQCAtNDM0LDcgKzQ0MCw5IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCisgICAg ICAgT1BUX1NUQVRJU1RJQ1MsCisgICAgICAgT1BUX1RVSSwKKyAgICAgICBPUFRfTk9XSU5ET1dT LAorLSAgICAgIE9QVF9XSU5ET1dTCisrICAgICAgT1BUX1dJTkRPV1MsCisrICAgICAgT1BUX0lY LAorKyAgICAgIE9QVF9JRVgKKyAgICAgfTsKKyAgICAgc3RhdGljIHN0cnVjdCBvcHRpb24gbG9u Z19vcHRpb25zW10gPQorICAgICB7CitAQCAtNDc1LDYgKzQ4MywxMCBAQCBjYXB0dXJlZF9tYWlu ICh2b2lkICpkYXRhKQorICAgICAgIHsidmVyc2lvbiIsIG5vX2FyZ3VtZW50LCAmcHJpbnRfdmVy c2lvbiwgMX0sCisgICAgICAgeyJ4IiwgcmVxdWlyZWRfYXJndW1lbnQsIDAsICd4J30sCisgICAg ICAgeyJleCIsIHJlcXVpcmVkX2FyZ3VtZW50LCAwLCAnWCd9LAorKyAgICAgIHsiaW5pdC1jb21t YW5kIiwgcmVxdWlyZWRfYXJndW1lbnQsIDAsIE9QVF9JWH0sCisrICAgICAgeyJpbml0LWV2YWwt Y29tbWFuZCIsIHJlcXVpcmVkX2FyZ3VtZW50LCAwLCBPUFRfSUVYfSwKKysgICAgICB7Iml4Iiwg cmVxdWlyZWRfYXJndW1lbnQsIDAsIE9QVF9JWH0sCisrICAgICAgeyJpZXgiLCByZXF1aXJlZF9h cmd1bWVudCwgMCwgT1BUX0lFWH0sCisgI2lmZGVmIEdEQlRLCisgICAgICAgeyJ0Y2xjb21tYW5k IiwgcmVxdWlyZWRfYXJndW1lbnQsIDAsICd6J30sCisgICAgICAgeyJlbmFibGUtZXh0ZXJuYWwt ZWRpdG9yIiwgbm9fYXJndW1lbnQsIDAsICd5J30sCitAQCAtNjAzLDYgKzYxNSwxOSBAQCBjYXB0 dXJlZF9tYWluICh2b2lkICpkYXRhKQorIAkgICAgICBWRUNfc2FmZV9wdXNoIChjbWRhcmdfcywg Y21kYXJnX3ZlYywgJmNtZGFyZyk7CisgCSAgICB9CisgCSAgICBicmVhazsKKysJICBjYXNlIE9Q VF9JWDoKKysJICAgIHsKKysJICAgICAgc3RydWN0IGNtZGFyZyBjbWRhcmcgPSB7IENNREFSR19J TklUX0ZJTEUsIG9wdGFyZyB9OworKworKwkgICAgICBWRUNfc2FmZV9wdXNoIChjbWRhcmdfcywg Y21kYXJnX3ZlYywgJmNtZGFyZyk7CisrCSAgICB9CisrCSAgICBicmVhazsKKysJICBjYXNlIE9Q VF9JRVg6CisrCSAgICB7CisrCSAgICAgIHN0cnVjdCBjbWRhcmcgY21kYXJnID0geyBDTURBUkdf SU5JVF9DT01NQU5ELCBvcHRhcmcgfTsKKysKKysJICAgICAgVkVDX3NhZmVfcHVzaCAoY21kYXJn X3MsIGNtZGFyZ192ZWMsICZjbWRhcmcpOworKwkgICAgfQorIAkgICAgYnJlYWs7CisgCSAgY2Fz ZSAnQic6CisgCSAgICBiYXRjaF9mbGFnID0gYmF0Y2hfc2lsZW50ID0gMTsKK0BAIC04NzcsNiAr OTAyLDIwIEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCisgICBxdWl0X3ByZV9wcmludCA9 IGVycm9yX3ByZV9wcmludDsKKyAgIHdhcm5pbmdfcHJlX3ByaW50ID0gXygiXG53YXJuaW5nOiAi KTsKKyAKKysgIC8qIFByb2Nlc3MgJy1peCcgYW5kICctaWV4JyBvcHRpb25zIGVhcmx5LiAgKi8K KysgIGZvciAoaSA9IDA7IFZFQ19pdGVyYXRlIChjbWRhcmdfcywgY21kYXJnX3ZlYywgaSwgY21k YXJnX3ApOyBpKyspCisrICAgIHN3aXRjaCAoY21kYXJnX3AtPnR5cGUpCisrICAgIHsKKysgICAg ICBjYXNlIENNREFSR19JTklUX0ZJTEU6CisrICAgICAgICBjYXRjaF9jb21tYW5kX2Vycm9ycyAo c291cmNlX3NjcmlwdCwgY21kYXJnX3AtPnN0cmluZywKKysJCQkgICAgICAhYmF0Y2hfZmxhZywg UkVUVVJOX01BU0tfQUxMKTsKKysJYnJlYWs7CisrICAgICAgY2FzZSBDTURBUkdfSU5JVF9DT01N QU5EOgorKyAgICAgICAgY2F0Y2hfY29tbWFuZF9lcnJvcnMgKGV4ZWN1dGVfY29tbWFuZCwgY21k YXJnX3AtPnN0cmluZywKKysJCQkgICAgICAhYmF0Y2hfZmxhZywgUkVUVVJOX01BU0tfQUxMKTsK KysJYnJlYWs7CisrICAgIH0KKysKKyAgIC8qIFJlYWQgYW5kIGV4ZWN1dGUgdGhlIHN5c3RlbS13 aWRlIGdkYmluaXQgZmlsZSwgaWYgaXQgZXhpc3RzLgorICAgICAgVGhpcyBpcyBkb25lICpiZWZv cmUqIGFsbCB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBhcmUKKyAgICAgIHByb2Nlc3NlZDsg aXQgc2V0cyBnbG9iYWwgcGFyYW1ldGVycywgd2hpY2ggYXJlIGluZGVwZW5kZW50IG9mCitAQCAt OTkzLDYgKzEwMzIsNyBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQorICAgQUxMX09CSkZJ TEVTIChvYmpmaWxlKQorICAgICBsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAob2JqZmls ZSk7CisgCisrICAvKiBQcm9jZXNzICcteCcgYW5kICctZXgnIG9wdGlvbnMuICAqLworICAgZm9y IChpID0gMDsgVkVDX2l0ZXJhdGUgKGNtZGFyZ19zLCBjbWRhcmdfdmVjLCBpLCBjbWRhcmdfcCk7 IGkrKykKKyAgICAgc3dpdGNoIChjbWRhcmdfcC0+dHlwZSkKKyAgICAgeworQEAgLTEwOTMsNiAr MTEzMyw4IEBAIE9wdGlvbnM6XG5cblwKKyAgICAgICAgICAgICAgICAgICAgICBFeGVjdXRlIGEg c2luZ2xlIEdEQiBjb21tYW5kLlxuXAorICAgICAgICAgICAgICAgICAgICAgIE1heSBiZSB1c2Vk IG11bHRpcGxlIHRpbWVzIGFuZCBpbiBjb25qdW5jdGlvblxuXAorICAgICAgICAgICAgICAgICAg ICAgIHdpdGggLS1jb21tYW5kLlxuXAorKyAgLS1pbml0LWNvbW1hbmQ9RklMRSwgLWl4IExpa2Ug LXggYnV0IGV4ZWN1dGUgaXQgYmVmb3JlIGxvYWRpbmcgaW5mZXJpb3IuXG5cCisrICAtLWluaXQt ZXZhbC1jb21tYW5kPUNPTU1BTkQsIC1pZXggTGlrZSAtZXggYnV0IGJlZm9yZSBsb2FkaW5nIGlu ZmVyaW9yLlxuXAorICAgLS1jb3JlPUNPUkVGSUxFICAgIEFuYWx5emUgdGhlIGNvcmUgZHVtcCBD T1JFRklMRS5cblwKKyAgIC0tcGlkPVBJRCAgICAgICAgICBBdHRhY2ggdG8gcnVubmluZyBwcm9j ZXNzIFBJRC5cblwKKyAiKSwgc3RyZWFtKTsKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9kb2MvZ2RiLnRleGluZm8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9y aWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLTA0LTE4IDAwOjQxOjMxLjAwMDAwMDAwMCArMDIw MAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLTA0LTE4 IDAwOjQyOjUxLjIzMjY4MTA1MiArMDIwMAorQEAgLTk4OSw2ICs5ODksMjIgQEAgYWxzbyBiZSBp bnRlcmxlYXZlZCB3aXRoIEBzYW1wey1jb21tYW5kfQorICAgIC14IHNldGJyZWFrcG9pbnRzIC1l eCAncnVuJyBhLm91dAorIEBlbmQgc21hbGxleGFtcGxlCisgCisrQGl0ZW0gLWluaXQtY29tbWFu ZCBAdmFye2ZpbGV9CisrQGl0ZW14IC1peCBAdmFye2ZpbGV9CisrQGNpbmRleCBAY29kZXstLWlu aXQtY29tbWFuZH0KKytAY2luZGV4IEBjb2Rley1peH0KKytFeGVjdXRlIGNvbW1hbmRzIGZyb20g ZmlsZSBAdmFye2ZpbGV9IGJlZm9yZSBsb2FkaW5nIGdkYmluaXQgZmlsZXMgb3IgdGhlCisraW5m ZXJpb3IuCisrQHhyZWZ7U3RhcnR1cH0uCisrCisrQGl0ZW0gLWluaXQtZXZhbC1jb21tYW5kIEB2 YXJ7Y29tbWFuZH0KKytAaXRlbXggLWlleCBAdmFye2NvbW1hbmR9CisrQGNpbmRleCBAY29kZXst LWluaXQtZXZhbC1jb21tYW5kfQorK0BjaW5kZXggQGNvZGV7LWlleH0KKytFeGVjdXRlIGEgc2lu Z2xlIEB2YWx1ZXtHREJOfSBjb21tYW5kIGJlZm9yZSBsb2FkaW5nIGdkYmluaXQgZmlsZXMgb3Ig dGhlCisraW5mZXJpb3IuCisrQHhyZWZ7U3RhcnR1cH0uCisrCisgQGl0ZW0gLWRpcmVjdG9yeSBA dmFye2RpcmVjdG9yeX0KKyBAaXRlbXggLWQgQHZhcntkaXJlY3Rvcnl9CisgQGNpbmRleCBAY29k ZXstLWRpcmVjdG9yeX0KK0BAIC0xMjUwLDYgKzEyNjYsMTMgQEAgU2V0cyB1cCB0aGUgY29tbWFu ZCBpbnRlcnByZXRlciBhcyBzcGVjaQorIChAcHhyZWZ7TW9kZSBPcHRpb25zLCBpbnRlcnByZXRl cn0pLgorIAorIEBpdGVtCisrRXhlY3V0ZXMgY29tbWFuZHMgYW5kIGNvbW1hbmQgZmlsZXMgc3Bl Y2lmaWVkIGJ5IHRoZSBAc2FtcHstaWV4fSBhbmQKKytAc2FtcHstaXh9IG9wdGlvbnMgaW4gdGhl aXIgc3BlY2lmaWVkIG9yZGVyLiAgVXN1YWxseSB5b3Ugc2hvdWxkIHVzZSB0aGUKKytAc2FtcHst ZXh9IGFuZCBAc2FtcHsteH0gb3B0aW9ucyBpbnN0ZWFkLCBidXQgdGhpcyB3YXkgeW91IGNhbiBh cHBseQorK3NldHRpbmdzIGJlZm9yZSBAdmFsdWV7R0RCTn0gaW5pdCBmaWxlcyBnZXQgZXhlY3V0 ZWQgYW5kIGJlZm9yZSBpbmZlcmlvcgorK2dldHMgbG9hZGVkLgorKworK0BpdGVtCisgQGNpbmRl eCBpbml0IGZpbGUKKyBSZWFkcyB0aGUgc3lzdGVtLXdpZGUgQGRmbntpbml0IGZpbGV9IChpZiBA b3B0aW9uey0td2l0aC1zeXN0ZW0tZ2RiaW5pdH0gd2FzCisgdXNlZCB3aGVuIGJ1aWxkaW5nIEB2 YWx1ZXtHREJOfTsgQHB4cmVme1N5c3RlbS13aWRlIGNvbmZpZ3VyYXRpb24sCitAQCAtMTI4Mywx NCArMTMwNiwxMSBAQCBJZiB5b3Ugd2lzaCB0byBkaXNhYmxlIHRoZSBhdXRvLWxvYWRpbmcKKyB5 b3UgbXVzdCBkbyBzb21ldGhpbmcgbGlrZSB0aGUgZm9sbG93aW5nOgorIAorIEBzbWFsbGV4YW1w bGUKKy0kIGdkYiAtZXggInNldCBhdXRvLWxvYWQtc2NyaXB0cyBvZmYiIC1leCAiZmlsZSBteXBy b2dyYW0iCisrJCBnZGIgLWlleCAic2V0IGF1dG8tbG9hZC1zY3JpcHRzIG9mZiIgbXlwcm9ncmFt CisgQGVuZCBzbWFsbGV4YW1wbGUKKyAKKy1UaGUgZm9sbG93aW5nIGRvZXMgbm90IHdvcmsgYmVj YXVzZSB0aGUgYXV0by1sb2FkaW5nIGlzIHR1cm5lZCBvZmYgdG9vIGxhdGU6CistCistQHNtYWxs ZXhhbXBsZQorLSQgZ2RiIC1leCAic2V0IGF1dG8tbG9hZC1zY3JpcHRzIG9mZiIgbXlwcm9ncmFt CistQGVuZCBzbWFsbGV4YW1wbGUKKytPcHRpb24gQHNhbXB7LWV4fSBkb2VzIG5vdCB3b3JrIGJl Y2F1c2UgdGhlIGF1dG8tbG9hZGluZyBpcyB0aGVuIHR1cm5lZAorK29mZiB0b28gbGF0ZS4KKyAK KyBAaXRlbQorIFJlYWRzIGNvbW1hbmQgZmlsZXMgc3BlY2lmaWVkIGJ5IHRoZSBAc2FtcHsteH0g b3B0aW9uLiAgQHhyZWZ7Q29tbWFuZAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rl c3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAu MjAxMjAxMjAub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwCTIwMTItMDQt MTggMDA6NDE6MzEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv dGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwCTIwMTItMDQtMTggMDA6NDI6NTEuMjMyNjgx MDUyICswMjAwCitAQCAtOTIsNiArOTIsMTAgQEAgcHJvYyBkb19zdGVwc19hbmRfbmV4dHMge30g eworIAkJc2V0IGRlc2NyaXB0aW9uICJzdGVwIG92ZXIgcHl0aG9uX3NjcmlwdCBpbml0aWFsaXph dGlvbiIKKyAJCXNldCBjb21tYW5kICJzdGVwIgorIAkgICAgfQorKwkgICAgLXJlICIuKmNtZGFy Z192ZWMgPSBOVUxMLiokZ2RiX3Byb21wdCAkIiB7CisrCQlzZXQgZGVzY3JpcHRpb24gInN0ZXAg b3ZlciBjbWRhcmdfdmVjIGluaXRpYWxpemF0aW9uIgorKwkJc2V0IGNvbW1hbmQgInN0ZXAiCisr CSAgICB9CisgCSAgICAtcmUgIi4qcHJlX3N0YXRfY2hhaW4gPSBtYWtlX2NvbW1hbmRfc3RhdHNf Y2xlYW51cC4qJGdkYl9wcm9tcHQgJCIgeworIAkJc2V0IGRlc2NyaXB0aW9uICJuZXh0IG92ZXIg bWFrZV9jb21tYW5kX3N0YXRzX2NsZWFudXAgYW5kIGV2ZXJ5dGhpbmcgaXQgY2FsbHMiCisgCQlz ZXQgY29tbWFuZCAibmV4dCIKK0BAIC0xMjgsMTggKzEzMiw2IEBAIHByb2MgZG9fc3RlcHNfYW5k X25leHRzIHt9IHsKKyAJCXNldCBkZXNjcmlwdGlvbiAibmV4dCBvdmVyIGNvbmRpdGlvbmFsIHN0 YWNrIGFsaWdubWVudCBhbGxvY2EiCisgCQlzZXQgY29tbWFuZCAibmV4dCIKKyAJICAgIH0KKy0J ICAgIC1yZSAiLipjbWRzaXplID0gMS4qJGdkYl9wcm9tcHQgJCIgeworLQkJc2V0IGRlc2NyaXB0 aW9uICJzdGVwIG92ZXIgY21kc2l6ZSBpbml0aWFsaXphdGlvbiIKKy0JCXNldCBjb21tYW5kICJu ZXh0IgorLQkgICAgfQorLQkgICAgLXJlICIuKmNtZGFyZyA9IC4qIHhtYWxsb2MuKiRnZGJfcHJv bXB0ICQiIHsKKy0JCXNldCBkZXNjcmlwdGlvbiAibmV4dCBvdmVyIGNtZGFyZyBpbml0aWFsaXph dGlvbiB2aWEgeG1hbGxvYyIKKy0JCXNldCBjb21tYW5kICJuZXh0IgorLQkgICAgfQorLQkgICAg LXJlICIuKm5jbWQgPSAwLiokZ2RiX3Byb21wdCAkIiB7CistCQlzZXQgZGVzY3JpcHRpb24gIm5l eHQgb3ZlciBuY21kIGluaXRpYWxpemF0aW9uIgorLQkJc2V0IGNvbW1hbmQgIm5leHQiCistCSAg ICB9CisgCSAgICAtcmUgIi4qZGlyc2l6ZSA9IDEuKiRnZGJfcHJvbXB0ICQiIHsKKyAJCXNldCBk ZXNjcmlwdGlvbiAibmV4dCBvdmVyIGRpcnNpemUgaW5pdGlhbGl6YXRpb24iCisgCQlzZXQgY29t bWFuZCAibmV4dCIKK0BAIC0xNjMsNiArMTU1LDEwIEBAIHByb2MgZG9fc3RlcHNfYW5kX25leHRz IHt9IHsKKyAJCXNldCBkZXNjcmlwdGlvbiAibmV4dCBvdmVyIHRleHRkb21haW4gUEFDS0FHRSIK KyAJCXNldCBjb21tYW5kICJuZXh0IgorIAkgICAgfQorKwkgICAgLXJlICIuKlZFQ19jbGVhbnVw IC5jbWRhcmdfcy4qJGdkYl9wcm9tcHQgJCIgeworKwkJc2V0IGRlc2NyaXB0aW9uICJuZXh0IG92 ZXIgY21kYXJnX3MgVkVDX2NsZWFudXAiCisrCQlzZXQgY29tbWFuZCAibmV4dCIKKysJICAgIH0K KyAJICAgIC1yZSAiXFswLTlcXStcW1x0IFxdK1x7XHJcbiRnZGJfcHJvbXB0ICQiIHsKKyAJCXNl dCBkZXNjcmlwdGlvbiAic3RlcCBvdmVyIGluaXRpYWwgYnJhY2UiCisgCQlzZXQgY29tbWFuZCAi c3RlcCIKCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMDZvZjEyLnBhdGNoIGIvZ2RiLWF1dG9s b2FkLTA2b2YxMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTEy MWVmCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWF1dG9sb2FkLTA2b2YxMi5wYXRjaApAQCAtMCww ICsxLDcxIEBACitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTAzL21zZzAw MjM2Lmh0bWwKKworIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDMvMTkgMTg6MTk6MjMJMS4x NDAyNworIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDMvMTkgMTg6MjM6NTEJMS4xNDAyOAor IyMgLTEsNSArMSwxMyBAQAorIDIwMTItMDMtMTkgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRv Y2h2aWxAcmVkaGF0LmNvbT4KKyAKKysJQ29kZSBjbGVhbnVwLgorKwkqIHB5dGhvbi9weS1hdXRv LWxvYWQuYyAoc291cmNlX3NlY3Rpb25fc2NyaXB0cyk6IE5ldyB2YXJpYWJsZSBiYWNrX3RvLgor KwlUdXJuIGZjbG9zZSBhbmQgeGZyZWUgY2FsbHMgaW50byBtYWtlX2NsZWFudXBfZmNsb3NlIGFu ZCBtYWtlX2NsZWFudXAKKysJd2l0aCB4ZnJlZS4KKysJKGF1dG9fbG9hZF9vYmpmaWxlX3Njcmlw dCk6IFR1cm4gZmNsb3NlIGludG8gbWFrZV9jbGVhbnVwX2ZjbG9zZS4KKysKKysyMDEyLTAzLTE5 ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisrCisgCSogTkVX UzogRGVzY3JpYmUgbmV3IG9wdGlvbnMgLS1pbml0LWNvbW1hbmQ9RklMRSwgLWl4IGFuZAorIAkt LWluaXQtZXZhbC1jb21tYW5kPUNPTU1BTkQsIC1pZXguCisgCSogbWFpbi5jIChzdHJ1Y3QgY21k YXJnKTogTmV3IGVudW0gaXRlbXMgQ01EQVJHX0lOSVRfRklMRSBhbmQKKy0tLSBzcmMvZ2RiL3B5 dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLzAxLzI2IDIxOjU0OjQ1CTEuMTgKKysrKyBzcmMvZ2Ri L3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLzAzLzE5IDE4OjIzOjUyCTEuMTkKK0BAIC0yNTQs NiArMjU0LDcgQEAKKyAgICAgICBGSUxFICpzdHJlYW07CisgICAgICAgY2hhciAqZnVsbF9wYXRo OworICAgICAgIGludCBvcGVuZWQsIGluX2hhc2hfdGFibGU7CisrICAgICAgc3RydWN0IGNsZWFu dXAgKmJhY2tfdG87CisgCisgICAgICAgaWYgKCpwICE9IDEpCisgCXsKK0BAIC0yODYsNiArMjg3 LDEzIEBACisgICAgICAgb3BlbmVkID0gZmluZF9hbmRfb3Blbl9zY3JpcHQgKGZpbGUsIDEgLypz ZWFyY2hfcGF0aCovLAorIAkJCQkgICAgICZzdHJlYW0sICZmdWxsX3BhdGgpOworIAorKyAgICAg IGJhY2tfdG8gPSBtYWtlX2NsZWFudXAgKG51bGxfY2xlYW51cCwgTlVMTCk7CisrICAgICAgaWYg KG9wZW5lZCkKKysJeworKwkgIG1ha2VfY2xlYW51cF9mY2xvc2UgKHN0cmVhbSk7CisrCSAgbWFr ZV9jbGVhbnVwICh4ZnJlZSwgZnVsbF9wYXRoKTsKKysJfQorKworICAgICAgIC8qIElmIG9uZSBz Y3JpcHQgaXNuJ3QgZm91bmQgaXQncyBub3QgdW5jb21tb24gZm9yIG1vcmUgdG8gbm90IGJlCisg CSBmb3VuZCBlaXRoZXIuICBXZSBkb24ndCB3YW50IHRvIHByaW50IGFuIGVycm9yIG1lc3NhZ2Ug Zm9yIGVhY2gKKyAJIHNjcmlwdCwgdG9vIG11Y2ggbm9pc2UuICBJbnN0ZWFkLCB3ZSBwcmludCB0 aGUgd2FybmluZyBvbmNlIGFuZCB0ZWxsCitAQCAtMzEzLDkgKzMyMSw5IEBACisgCSAgLyogSWYg dGhpcyBmaWxlIGlzIG5vdCBjdXJyZW50bHkgbG9hZGVkLCBsb2FkIGl0LiAgKi8KKyAJICBpZiAo ISBpbl9oYXNoX3RhYmxlKQorIAkgICAgc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUg KG9iamZpbGUsIHN0cmVhbSwgZnVsbF9wYXRoKTsKKy0JICBmY2xvc2UgKHN0cmVhbSk7CistCSAg eGZyZWUgKGZ1bGxfcGF0aCk7CisgCX0KKysKKysgICAgICBkb19jbGVhbnVwcyAoYmFja190byk7 CisgICAgIH0KKyB9CisgCitAQCAtNDIwLDYgKzQyOCw4IEBACisgICAgIHsKKyAgICAgICBzdHJ1 Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKKyAKKysgICAgICBtYWtlX2Ns ZWFudXBfZmNsb3NlIChpbnB1dCk7CisrCisgICAgICAgLyogQWRkIHRoaXMgc2NyaXB0IHRvIHRo ZSBoYXNoIHRhYmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIKKyAJIGNhbiBwcmlu dCBpdC4gICovCisgICAgICAgcHNwYWNlX2luZm8gPQorQEAgLTQzMiw3ICs0NDIsNiBAQAorIAkg YW5kIHRoZXNlIHNjcmlwdHMgYXJlIHJlcXVpcmVkIHRvIGJlIGlkZW1wb3RlbnQgdW5kZXIgbXVs dGlwbGUKKyAJIGxvYWRzIGFueXdheS4gICovCisgICAgICAgc291cmNlX3B5dGhvbl9zY3JpcHRf Zm9yX29iamZpbGUgKG9iamZpbGUsIGlucHV0LCBkZWJ1Z2ZpbGUpOworLSAgICAgIGZjbG9zZSAo aW5wdXQpOworICAgICB9CisgCisgICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOwoKZGlmZiAtLWdp dCBhL2dkYi1hdXRvbG9hZC0wN29mMTIucGF0Y2ggYi9nZGItYXV0b2xvYWQtMDdvZjEyLnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxZDEyOWUKLS0tIC9kZXYvbnVs bAorKysgYi9nZGItYXV0b2xvYWQtMDdvZjEyLnBhdGNoCkBAIC0wLDAgKzEsNTcgQEAKK2h0dHA6 Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDMvbXNnMDAyOTYuaHRtbAorCisjIyMg c3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDMvMjIgMDg6MTA6NDEJMS4xMjg5CisjIyMgc3Jj L2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDMvMjcgMjA6MTU6MjAJMS4xMjkwCisjIyAtMSwzICsx LDEyIEBACisrMjAxMi0wMy0yNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRo YXQuY29tPgorKworKwkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcpOiBSZW5hbWUgbm9kZSBy ZWZlcmVuY2UKKysJJy5kZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9uJyB0byAnZG90ZGVidWdfZ2Ri X3NjcmlwdHMgc2VjdGlvbicuCisrCVR3aWNlLgorKwkoLmRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rp b24pOiBSZW5hbWUgdGhlIG5vZGUgLi4uCisrCShkb3RkZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9u KTogLi4uIGhlcmUuCisrCShNYWludGVuYW5jZSBDb21tYW5kcyk6IEFsc28gcmVuYW1lIHRoaXMg bm9kZSByZWZlcmVuY2UuCisrCisgMjAxMi0wMy0yMiAgU2l2YSBDaGFuZHJhIFJlZGR5ICA8c2l2 YWNoYW5kcmFAZ29vZ2xlLmNvbT4KKyAKKyAJKiBnZGIudGV4aW5mbyAoUHl0aG9uIEFQSS9WYWx1 ZXMgRnJvbSBJbmZlcmlvcik6IEFkZCBkZXNjcmlwdGlvbgorLS0tIHNyYy9nZGIvZG9jL2dkYi50 ZXhpbmZvCTIwMTIvMDMvMjIgMDg6MTA6NDEJMS45MzYKKysrKyBzcmMvZ2RiL2RvYy9nZGIudGV4 aW5mbwkyMDEyLzAzLzI3IDIwOjE1OjIwCTEuOTM3CitAQCAtMjQ3MTcsOCArMjQ3MTcsOCBAQAor IEBmaWxle0B2YXJ7b2JqZmlsZX0tZ2RiLnB5fSBhbmQgQGNvZGV7LmRlYnVnX2dkYl9zY3JpcHRz fSBzZWN0aW9uLgorIAorIEBtZW51CistKiBvYmpmaWxlLWdkYi5weSBmaWxlOjogICAgICAgICBU aGUgQGZpbGV7QHZhcntvYmpmaWxlfS1nZGIucHl9IGZpbGUKKy0qIC5kZWJ1Z19nZGJfc2NyaXB0 cyBzZWN0aW9uOjogIFRoZSBAY29kZXsuZGVidWdfZ2RiX3NjcmlwdHN9IHNlY3Rpb24KKysqIG9i amZpbGUtZ2RiLnB5IGZpbGU6OiAgICAgICAgICBUaGUgQGZpbGV7QHZhcntvYmpmaWxlfS1nZGIu cHl9IGZpbGUKKysqIGRvdGRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb246OiBUaGUgQGNvZGV7LmRl YnVnX2dkYl9zY3JpcHRzfSBzZWN0aW9uCisgKiBXaGljaCBmbGF2b3IgdG8gY2hvb3NlPzo6Cisg QGVuZCBtZW51CisgCitAQCAtMjQ3NDQsNyArMjQ3NDQsNyBAQAorIAorIEFsc28gcHJpbnRlZCBp cyB0aGUgbGlzdCBvZiBzY3JpcHRzIHRoYXQgd2VyZSBtZW50aW9uZWQgaW4KKyB0aGUgQGNvZGV7 LmRlYnVnX2dkYl9zY3JpcHRzfSBzZWN0aW9uIGFuZCB3ZXJlIG5vdCBmb3VuZAorLShAcHhyZWZ7 LmRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb259KS4KKysoQHB4cmVme2RvdGRlYnVnX2dkYl9zY3Jp cHRzIHNlY3Rpb259KS4KKyBUaGlzIGlzIHVzZWZ1bCBiZWNhdXNlIHRoZWlyIG5hbWVzIGFyZSBu b3QgcHJpbnRlZCB3aGVuIEB2YWx1ZXtHREJOfQorIHRyaWVzIHRvIGxvYWQgdGhlbSBhbmQgZmFp bHMuICBUaGVyZSBtYXkgYmUgbWFueSBvZiB0aGVtLCBhbmQgcHJpbnRpbmcKKyBhbiBlcnJvciBt ZXNzYWdlIGZvciBlYWNoIG9uZSBpcyBwcm9ibGVtYXRpYy4KK0BAIC0yNDc5NSw3ICsyNDc5NSw3 IEBACisgU28geW91ciBAZmlsZXstZ2RiLnB5fSBmaWxlIHNob3VsZCBiZSBjYXJlZnVsIHRvIGF2 b2lkIGVycm9ycyBpZiBpdAorIGlzIGV2YWx1YXRlZCBtb3JlIHRoYW4gb25jZS4KKyAKKy1Abm9k ZSAuZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbgorK0Bub2RlIGRvdGRlYnVnX2dkYl9zY3JpcHRz IHNlY3Rpb24KKyBAc3Vic3Vic2VjdGlvbiBUaGUgQGNvZGV7LmRlYnVnX2dkYl9zY3JpcHRzfSBz ZWN0aW9uCisgQGNpbmRleCBAY29kZXsuZGVidWdfZ2RiX3NjcmlwdHN9IHNlY3Rpb24KKyAKK0BA IC0zMzQ3NSw3ICszMzQ3NSw3IEBACisgbWF0Y2hpbmcgQHZhcntyZWdleHB9LgorIEZvciBlYWNo IHNjcmlwdCwgdGhpcyBjb21tYW5kIHByaW50cyBpdHMgbmFtZSBhcyBzcGVjaWZpZWQgaW4gdGhl IG9iamZpbGUsCisgYW5kIHRoZSBmdWxsIHBhdGggaWYga25vd24uCistQHhyZWZ7LmRlYnVnX2dk Yl9zY3JpcHRzIHNlY3Rpb259LgorK0B4cmVme2RvdGRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb259 LgorIAorIEBraW5kZXggbWFpbnQgcHJpbnQgc3RhdGlzdGljcworIEBjaW5kZXggYmNhY2hlIHN0 YXRpc3RpY3MKCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMDhvZjEyLnBhdGNoIGIvZ2RiLWF1 dG9sb2FkLTA4b2YxMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5i NDhiZmMxCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWF1dG9sb2FkLTA4b2YxMi5wYXRjaApAQCAt MCwwICsxLDE3MSBAQAorW3BhdGNoIzQgMi84XSBDb2RlIGNsZWFudXA6IG5ldyBwYXRoIHRvIFZF QyBpbiB1dGlscy5jCitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMi0w NC9tc2cwMDA4Ni5odG1sCitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA0 L21zZzAwMTExLmh0bWwKKyAtIHJlZHVjZWQgZm9yIHRoZSBiYWNrcG9ydAorCisjIyMgc3JjL2dk Yi9DaGFuZ2VMb2cJMjAxMi8wNC8xNyAxNTo0NTowNQkxLjE0MTEwCisjIyMgc3JjL2dkYi9DaGFu Z2VMb2cJMjAxMi8wNC8xNyAxNTo0NzowOAkxLjE0MTExCisjIyAtMSw2ICsxLDM0IEBACisgMjAx Mi0wNC0xNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorIAor IAlDb2RlIGNsZWFudXAuCisrCSogY2hhcnNldC5jIChmaW5kX2NoYXJzZXRfbmFtZXMpOiBSZW1v dmUgdmFyaWFibGVzIGl4IGFuZCBlbHQuCisrCVVzZSBmcmVlX2NoYXJfcHRyX3ZlYy4KKysJKiBl bGZyZWFkLmMgKGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1lKTogTmV3IHZhcmlhYmxlcyBkZWJ1 Z2Rpcl92ZWMsCisrCWJhY2tfdG8gYW5kIGl4LiAgVXNlIGRpcm5hbWVzX3RvX2NoYXJfcHRyX3Zl Yy4gIFJlbW92ZSB2YXJpYWJsZQorKwlkZWJ1Z2Rpcl9lbmQuICBOZXcgdmFyaWFibGUgZGVidWdk aXJfbGVuLgorKwkqIGdkYl92ZWNzLmggKGZyZWVfY2hhcl9wdHJfdmVjLCBtYWtlX2NsZWFudXBf ZnJlZV9jaGFyX3B0cl92ZWMpCisrCShkaXJuYW1lc190b19jaGFyX3B0cl92ZWNfYXBwZW5kLCBk aXJuYW1lc190b19jaGFyX3B0cl92ZWMpOiBOZXcKKysJZGVjbGFyYXRpb25zLgorKwkqIHByb2dz cGFjZS5jIChjbGVhcl9wcm9ncmFtX3NwYWNlX3NvbGliX2NhY2hlKTogUmVtb3ZlIHZhcmlhYmxl cyBpeAorKwlhbmQgZWx0LiAgVXNlIGZyZWVfY2hhcl9wdHJfdmVjLgorKwkqIHNvdXJjZS5jIChh ZGRfcGF0aCk6IFJlbW92ZSB2YXJpYWJsZXMgYXJndiwgYXJnIGFuZCBhcmd2X2luZGV4LgorKwlO ZXcgdmFyaWFibGVzIGRpcl92ZWMsIGJhY2tfdG8sIGl4IGFuZCBuYW1lLgorKwlVc2UgZGlybmFt ZXNfdG9fY2hhcl9wdHJfdmVjX2FwcGVuZC4gIFVzZSBmcmVlYXJndiBpbnN0ZWFkIG9mCisrCW1h a2VfY2xlYW51cF9mcmVlYXJndi4gIFJlbW92ZSB2YXJpYWJsZSBzZXBhcmF0b3IuICBTaW1wbGlm eSB0aGUgY29kZQorKwlubyBsb25nZXIgZXhwZWN0aW5nIERJUk5BTUVfU0VQQVJBVE9SLgorKwko b3BlbnApOiBSZW1vdmUgdmFyaWFibGUgcCwgcDEgYW5kIGxlbi4gIE5ldyB2YXJpYWJsZXMgZGly X3ZlYywKKysJYmFja190bywgaXggYW5kIGRpci4gIFVzZSBkaXJuYW1lc190b19jaGFyX3B0cl92 ZWMuICBTaW1wbGlmeSB0aGUgY29kZQorKwlubyBsb25nZXIgZXhwZWN0aW5nIERJUk5BTUVfU0VQ QVJBVE9SLgorKwkqIHN5bWZpbGUuYyAoZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlKTogTmV3IHZh cmlhYmxlcyBkZWJ1Z2Rpcl92ZWMsCisrCWJhY2tfdG8gYW5kIGl4LiAgVXNlIGRpcm5hbWVzX3Rv X2NoYXJfcHRyX3ZlYy4gIFJlbW92ZSB2YXJpYWJsZQorKwlkZWJ1Z2Rpcl9lbmQuCisrCSogdXRp bHMuYyAoZnJlZV9jaGFyX3B0cl92ZWMsIGRvX2ZyZWVfY2hhcl9wdHJfdmVjKQorKwkobWFrZV9j bGVhbnVwX2ZyZWVfY2hhcl9wdHJfdmVjLCBkaXJuYW1lc190b19jaGFyX3B0cl92ZWNfYXBwZW5k KQorKwkoZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjKTogTmV3IGZ1bmN0aW9ucy4KKysKKysyMDEy LTA0LTE3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisrCisr CUNvZGUgY2xlYW51cC4KKyAJKiBzb3VyY2UuYyAoYWRkX3BhdGgpOiBSZW1vdmUgYWx3YXlzIHRy dWUgY29uZGl0aW9uYWwgJ3AgPT0gMCcgYW5kCisgCXVuaW5kZW50IGl0cyBjb2RlIGJsb2NrLgor IAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2dkYl92ZWNzLmgKKz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2dkYl92ZWNzLmgJMjAxMi0wNC0xOCAw MDo0MDoxMi4wNjcwODYwMTYgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9nZGJf dmVjcy5oCTIwMTItMDQtMTggMDA6NDA6MjMuNDc0MDU2OTkzICswMjAwCitAQCAtMjUsNCArMjUs MTYgQEAKKyAKKyBERUZfVkVDX1AgKGNoYXJfcHRyKTsKKyAKKysvKiBGcm9tIHV0aWxzLmM6ICov CisrCisrZXh0ZXJuIHZvaWQgZnJlZV9jaGFyX3B0cl92ZWMgKFZFQyAoY2hhcl9wdHIpICpjaGFy X3B0cl92ZWMpOworKworK2V4dGVybiBzdHJ1Y3QgY2xlYW51cCAqCisrICBtYWtlX2NsZWFudXBf ZnJlZV9jaGFyX3B0cl92ZWMgKFZFQyAoY2hhcl9wdHIpICpjaGFyX3B0cl92ZWMpOworKworK2V4 dGVybiB2b2lkIGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlY19hcHBlbmQgKFZFQyAoY2hhcl9wdHIp ICoqdmVjcCwKKysJCQkJCSAgICAgY29uc3QgY2hhciAqZGlybmFtZXMpOworKworK2V4dGVybiBW RUMgKGNoYXJfcHRyKSAqZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjIChjb25zdCBjaGFyICpkaXJu YW1lcyk7CisrCisgI2VuZGlmIC8qIEdEQl9WRUNTX0ggKi8KK0luZGV4OiBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi91dGlscy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5v cmlnL2dkYi91dGlscy5jCTIwMTItMDQtMTggMDA6NDA6MTIuMDY4MDg2MDEzICswMjAwCisrKysg Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdXRpbHMuYwkyMDEyLTA0LTE4IDAwOjQwOjQ5Ljg2Mjk4 OTg1NSArMDIwMAorQEAgLTI5LDYgKzI5LDcgQEAKKyAjaWZkZWYgSEFWRV9TWVNfUkVTT1VSQ0Vf SAorICNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KKyAjZW5kaWYgLyogSEFWRV9TWVNfUkVTT1VS Q0VfSCAqLworKyNpbmNsdWRlICJnZGJfdmVjcy5oIgorIAorICNpZmRlZiBUVUkKKyAjaW5jbHVk ZSAidHVpL3R1aS5oIgkJLyogRm9yIHR1aV9nZXRfY29tbWFuZF9kaW1lbnNpb24uICAgKi8KK0BA IC0zODM1LDYgKzM4MzYsOTUgQEAgcHJvZHVjZXJfaXNfZ2NjX2dlXzQgKGNvbnN0IGNoYXIgKnBy b2R1YworICAgcmV0dXJuIG1pbm9yOworIH0KKyAKKysvKiBDYWxsIHhmcmVlIGZvciBlYWNoIGVs ZW1lbnQgb2YgQ0hBUl9QVFJfVkVDIGFuZCBmaW5hbCBWRUNfZnJlZSBmb3IKKysgICBDSEFSX1BU Ul9WRUMgaXRzZWxmLgorKworKyAgIFlvdSBtdXN0IG5vdCBtb2RpZnkgQ0hBUl9QVFJfVkVDIGFm dGVyIGl0IGdvdCByZWdpc3RlcmVkIHdpdGggdGhpcyBmdW5jdGlvbgorKyAgIGJ5IG1ha2VfY2xl YW51cCBhcyB0aGUgQ0hBUl9QVFJfVkVDIGJhc2UgYWRkcmVzcyBtYXkgY2hhbmdlIG9uIGl0cyB1 cGRhdGVzLgorKyAgIENvbnRyYXJ5IHRvIFZFQ19mcmVlIHRoaXMgZnVuY3Rpb24gZG9lcyBub3Qg KGNhbm5vdCkgY2xlYXIgdGhlIHBvaW50ZXIuICAqLworKworK3ZvaWQKKytmcmVlX2NoYXJfcHRy X3ZlYyAoVkVDIChjaGFyX3B0cikgKmNoYXJfcHRyX3ZlYykKKyt7CisrICBpbnQgaXg7CisrICBj aGFyICpuYW1lOworKworKyAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChjaGFyX3B0ciwgY2hh cl9wdHJfdmVjLCBpeCwgbmFtZSk7ICsraXgpCisrICAgIHhmcmVlIChuYW1lKTsKKysgIFZFQ19m cmVlIChjaGFyX3B0ciwgY2hhcl9wdHJfdmVjKTsKKyt9CisrCisrLyogSGVscGVyIGZvciBtYWtl X2NsZWFudXBfZnJlZV9jaGFyX3B0cl92ZWMuICAqLworKworK3N0YXRpYyB2b2lkCisrZG9fZnJl ZV9jaGFyX3B0cl92ZWMgKHZvaWQgKmFyZykKKyt7CisrICBWRUMgKGNoYXJfcHRyKSAqY2hhcl9w dHJfdmVjID0gYXJnOworKworKyAgZnJlZV9jaGFyX3B0cl92ZWMgKGNoYXJfcHRyX3ZlYyk7Cisr fQorKworKy8qIE1ha2UgY2xlYW51cCBoYW5kbGVyIGNhbGxpbmcgeGZyZWUgZm9yIGVhY2ggZWxl bWVudCBvZiBDSEFSX1BUUl9WRUMgYW5kCisrICAgZmluYWwgVkVDX2ZyZWUgZm9yIENIQVJfUFRS X1ZFQyBpdHNlbGYuCisrCisrICAgWW91IG11c3Qgbm90IG1vZGlmeSBDSEFSX1BUUl9WRUMgYWZ0 ZXIgdGhpcyBjbGVhbnVwIHJlZ2lzdHJhdGlvbiBhcyB0aGUKKysgICBDSEFSX1BUUl9WRUMgYmFz ZSBhZGRyZXNzIG1heSBjaGFuZ2Ugb24gaXRzIHVwZGF0ZXMuICBDb250cmFyeSB0byBWRUNfZnJl ZQorKyAgIHRoaXMgZnVuY3Rpb24gZG9lcyBub3QgKGNhbm5vdCkgY2xlYXIgdGhlIHBvaW50ZXIu ICAqLworKworK3N0cnVjdCBjbGVhbnVwICoKKyttYWtlX2NsZWFudXBfZnJlZV9jaGFyX3B0cl92 ZWMgKFZFQyAoY2hhcl9wdHIpICpjaGFyX3B0cl92ZWMpCisreworKyAgcmV0dXJuIG1ha2VfY2xl YW51cCAoZG9fZnJlZV9jaGFyX3B0cl92ZWMsIGNoYXJfcHRyX3ZlYyk7CisrfQorKworKy8qIEV4 dGVuZGVkIHZlcnNpb24gb2YgZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjIC0gYWRkaXRpb25hbGx5 IGlmICpWRUNQIGlzCisrICAgbm9uLU5VTEwgdGhlIG5ldyBsaXN0IGVsZW1lbnRzIGZyb20gRElS TkFNRVMgYXJlIGFwcGVuZGVkIHRvIHRoZSBleGlzdGluZworKyAgICpWRUNQIGxpc3Qgb2YgZW50 cmllcy4gICpWRUNQIGFkZHJlc3Mgd2lsbCBiZSB1cGRhdGVkIGJ5IHRoaXMgY2FsbC4gICovCisr Cisrdm9pZAorK2Rpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlY19hcHBlbmQgKFZFQyAoY2hhcl9wdHIp ICoqdmVjcCwgY29uc3QgY2hhciAqZGlybmFtZXMpCisreworKyAgZG8KKysgICAgeworKyAgICAg IHNpemVfdCB0aGlzX2xlbjsKKysgICAgICBjaGFyICpuZXh0X2RpciwgKnRoaXNfZGlyOworKwor KyAgICAgIG5leHRfZGlyID0gc3RyY2hyIChkaXJuYW1lcywgRElSTkFNRV9TRVBBUkFUT1IpOwor KyAgICAgIGlmIChuZXh0X2RpciA9PSBOVUxMKQorKwl0aGlzX2xlbiA9IHN0cmxlbiAoZGlybmFt ZXMpOworKyAgICAgIGVsc2UKKysJeworKwkgIHRoaXNfbGVuID0gbmV4dF9kaXIgLSBkaXJuYW1l czsKKysJICBuZXh0X2RpcisrOworKwl9CisrCisrICAgICAgdGhpc19kaXIgPSB4bWFsbG9jICh0 aGlzX2xlbiArIDEpOworKyAgICAgIG1lbWNweSAodGhpc19kaXIsIGRpcm5hbWVzLCB0aGlzX2xl bik7CisrICAgICAgdGhpc19kaXJbdGhpc19sZW5dID0gJ1wwJzsKKysgICAgICBWRUNfc2FmZV9w dXNoIChjaGFyX3B0ciwgKnZlY3AsIHRoaXNfZGlyKTsKKysKKysgICAgICBkaXJuYW1lcyA9IG5l eHRfZGlyOworKyAgICB9CisrICB3aGlsZSAoZGlybmFtZXMgIT0gTlVMTCk7CisrfQorKworKy8q IFNwbGl0IERJUk5BTUVTIGJ5IERJUk5BTUVfU0VQQVJBVE9SIGRlbGltaXRlciBhbmQgcmV0dXJu IGEgbGlzdCBvZiBhbGwgdGhlCisrICAgZWxlbWVudHMgaW4gdGhlaXIgb3JpZ2luYWwgb3JkZXIu ICBGb3IgZW1wdHkgc3RyaW5nICgiIikgRElSTkFNRVMgcmV0dXJuCisrICAgbGlzdCBvZiBvbmUg ZW1wdHkgc3RyaW5nICgiIikgZWxlbWVudC4KKysgICAKKysgICBZb3UgbWF5IG1vZGlmeSB0aGUg cmV0dXJuZWQgc3RyaW5ncy4KKysgICBSZWFkIGZyZWVfY2hhcl9wdHJfdmVjIGZvciBpdHMgY2xl YW51cC4gICovCisrCisrVkVDIChjaGFyX3B0cikgKgorK2Rpcm5hbWVzX3RvX2NoYXJfcHRyX3Zl YyAoY29uc3QgY2hhciAqZGlybmFtZXMpCisreworKyAgVkVDIChjaGFyX3B0cikgKnJldHZhbCA9 IE5VTEw7CisrICAKKysgIGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlY19hcHBlbmQgKCZyZXR2YWws IGRpcm5hbWVzKTsKKysKKysgIHJldHVybiByZXR2YWw7CisrfQorKworICNpZmRlZiBIQVZFX1dB SVRQSUQKKyAKKyAjaWZkZWYgU0lHQUxSTQoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0wOW9m MTIucGF0Y2ggYi9nZGItYXV0b2xvYWQtMDlvZjEyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjEyNDRjZmYKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYXV0b2xvYWQt MDlvZjEyLnBhdGNoCkBAIC0wLDAgKzEsMTE2OCBAQAorW3BhdGNoIzQgMy84XSBhdXRvLWxvYWQ6 IHJlc2h1ZmZsZSBjb2RlCitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAx Mi0wNC9tc2cwMDA4Ny5odG1sCitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEy LTA0L21zZzAwMTEyLmh0bWwKKworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8t bG9hZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAw MDAwMDAwICswMDAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmMJMjAx Mi0wNC0xOCAwMDoyNjoyOS4wNDkxMjAyMTIgKzAyMDAKK0BAIC0wLDAgKzEsNDcyIEBACisrLyog R0RCIHJvdXRpbmVzIGZvciBzdXBwb3J0aW5nIGF1dG8tbG9hZGVkIHNjcmlwdHMuCisrCisrICAg Q29weXJpZ2h0IChDKSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAg IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4gICovCisrCisrI2luY2x1ZGUgImRlZnMuaCIKKysjaW5jbHVkZSAiYXV0by1s b2FkLmgiCisrI2luY2x1ZGUgInByb2dzcGFjZS5oIgorKyNpbmNsdWRlICJweXRob24vcHl0aG9u LmgiCisrI2luY2x1ZGUgImdkYl9yZWdleC5oIgorKyNpbmNsdWRlICJ1aS1vdXQuaCIKKysjaW5j bHVkZSAiZmlsZW5hbWVzLmgiCisrI2luY2x1ZGUgImNvbW1hbmQuaCIKKysjaW5jbHVkZSAib2Jz ZXJ2ZXIuaCIKKysjaW5jbHVkZSAib2JqZmlsZXMuaCIKKysjaW5jbHVkZSAicHl0aG9uL3B5dGhv bi1pbnRlcm5hbC5oIgorKworKy8qIEludGVybmFsLXVzZSBmbGFnIHRvIGVuYWJsZS9kaXNhYmxl IGF1dG8tbG9hZGluZy4KKysgICBUaGlzIGlzIHRydWUgaWYgd2Ugc2hvdWxkIGF1dG8tbG9hZCBw eXRob24gY29kZSB3aGVuIGFuIG9iamZpbGUgaXMgb3BlbmVkLAorKyAgIGZhbHNlIG90aGVyd2lz ZS4KKysKKysgICBCb3RoIGF1dG9fbG9hZF9zY3JpcHRzICYmIGdkYnB5X2dsb2JhbF9hdXRvX2xv YWQgbXVzdCBiZSB0cnVlIHRvIGVuYWJsZQorKyAgIGF1dG8tbG9hZGluZy4KKysKKysgICBUaGlz IGZsYWcgZXhpc3RzIHRvIGZhY2lsaXRhdGUgZGVmZXJyaW5nIGF1dG8tbG9hZGluZyBkdXJpbmcg c3RhcnQtdXAKKysgICB1bnRpbCBhZnRlciAuLy5nZGJpbml0IGhhcyBiZWVuIHJlYWQ7IGl0IG1h eSBhdWdtZW50IHRoZSBzZWFyY2ggZGlyZWN0b3JpZXMKKysgICB1c2VkIHRvIGZpbmQgdGhlIHNj cmlwdHMuICAqLworK2ludCBnZGJweV9nbG9iYWxfYXV0b19sb2FkID0gMTsKKysKKysvKiBGb3Ig c2NyaXB0cyBzcGVjaWZpZWQgaW4gLmRlYnVnX2dkYl9zY3JpcHRzLCBtdWx0aXBsZSBvYmpmaWxl cyBtYXkgbG9hZAorKyAgIHRoZSBzYW1lIHNjcmlwdC4gIFRoZXJlJ3Mgbm8gcG9pbnQgaW4gbG9h ZGluZyB0aGUgc2NyaXB0IG11bHRpcGxlIHRpbWVzLAorKyAgIGFuZCB0aGVyZSBjYW4gYmUgYSBs b3Qgb2Ygb2JqZmlsZXMgYW5kIHNjcmlwdHMsIHNvIHdlIGtlZXAgdHJhY2sgb2Ygc2NyaXB0cwor KyAgIGxvYWRlZCB0aGlzIHdheS4gICovCisrCisrc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5m bworK3sKKysgIC8qIEZvciBlYWNoIHByb2dyYW0gc3BhY2Ugd2Uga2VlcCB0cmFjayBvZiBsb2Fk ZWQgc2NyaXB0cy4gICovCisrICBzdHJ1Y3QgaHRhYiAqbG9hZGVkX3NjcmlwdHM7CisrCisrICAv KiBOb24temVybyBpZiB3ZSd2ZSBpc3N1ZWQgdGhlIHdhcm5pbmcgYWJvdXQgYW4gYXV0by1sb2Fk IHNjcmlwdCBub3QgYmVpbmcKKysgICAgIGZvdW5kLiAgV2Ugb25seSB3YW50IHRvIGlzc3VlIHRo aXMgd2FybmluZyBvbmNlLiAgKi8KKysgIGludCBzY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJp bnRlZDsKKyt9OworKworKy8qIE9iamVjdHMgb2YgdGhpcyB0eXBlIGFyZSBzdG9yZWQgaW4gdGhl IGxvYWRlZCBzY3JpcHQgaGFzaCB0YWJsZS4gICovCisrCisrc3RydWN0IGxvYWRlZF9zY3JpcHQK Kyt7CisrICAvKiBOYW1lIGFzIHByb3ZpZGVkIGJ5IHRoZSBvYmpmaWxlLiAgKi8KKysgIGNvbnN0 IGNoYXIgKm5hbWU7CisrICAvKiBGdWxsIHBhdGggbmFtZSBvciBOVUxMIGlmIHNjcmlwdCB3YXNu J3QgZm91bmQgKG9yIHdhcyBvdGhlcndpc2UKKysgICAgIGluYWNjZXNzaWJsZSkuICAqLworKyAg Y29uc3QgY2hhciAqZnVsbF9wYXRoOworK307CisrCisrLyogUGVyLXByb2dyYW0tc3BhY2UgZGF0 YSBrZXkuICAqLworK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvZ3JhbV9zcGFjZV9kYXRhICphdXRv X2xvYWRfcHNwYWNlX2RhdGE7CisrCisrc3RhdGljIHZvaWQKKythdXRvX2xvYWRfcHNwYWNlX2Rh dGFfY2xlYW51cCAoc3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSwgdm9pZCAqYXJnKQorK3sK KysgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKmluZm87CisrCisrICBpbmZvID0gcHJv Z3JhbV9zcGFjZV9kYXRhIChwc3BhY2UsIGF1dG9fbG9hZF9wc3BhY2VfZGF0YSk7CisrICBpZiAo aW5mbyAhPSBOVUxMKQorKyAgICB7CisrICAgICAgaWYgKGluZm8tPmxvYWRlZF9zY3JpcHRzKQor KwlodGFiX2RlbGV0ZSAoaW5mby0+bG9hZGVkX3NjcmlwdHMpOworKyAgICAgIHhmcmVlIChpbmZv KTsKKysgICAgfQorK30KKysKKysvKiBHZXQgdGhlIGN1cnJlbnQgYXV0b2xvYWQgZGF0YS4gIElm IG5vbmUgaXMgZm91bmQgeWV0LCBhZGQgaXQgbm93LiAgVGhpcworKyAgIGZ1bmN0aW9uIGFsd2F5 cyByZXR1cm5zIGEgdmFsaWQgb2JqZWN0LiAgKi8KKysKKytzdGF0aWMgc3RydWN0IGF1dG9fbG9h ZF9wc3BhY2VfaW5mbyAqCisrZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YSAoc3RydWN0IHByb2dy YW1fc3BhY2UgKnBzcGFjZSkKKyt7CisrICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpp bmZvOworKworKyAgaW5mbyA9IHByb2dyYW1fc3BhY2VfZGF0YSAocHNwYWNlLCBhdXRvX2xvYWRf cHNwYWNlX2RhdGEpOworKyAgaWYgKGluZm8gPT0gTlVMTCkKKysgICAgeworKyAgICAgIGluZm8g PSBYWkFMTE9DIChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvKTsKKysgICAgICBzZXRfcHJv Z3JhbV9zcGFjZV9kYXRhIChwc3BhY2UsIGF1dG9fbG9hZF9wc3BhY2VfZGF0YSwgaW5mbyk7Cisr ICAgIH0KKysKKysgIHJldHVybiBpbmZvOworK30KKysKKysvKiBIYXNoIGZ1bmN0aW9uIGZvciB0 aGUgbG9hZGVkIHNjcmlwdCBoYXNoLiAgKi8KKysKKytzdGF0aWMgaGFzaHZhbF90CisraGFzaF9s b2FkZWRfc2NyaXB0X2VudHJ5IChjb25zdCB2b2lkICpkYXRhKQorK3sKKysgIGNvbnN0IHN0cnVj dCBsb2FkZWRfc2NyaXB0ICplID0gZGF0YTsKKysKKysgIHJldHVybiBodGFiX2hhc2hfc3RyaW5n IChlLT5uYW1lKTsKKyt9CisrCisrLyogRXF1YWxpdHkgZnVuY3Rpb24gZm9yIHRoZSBsb2FkZWQg c2NyaXB0IGhhc2guICAqLworKworK3N0YXRpYyBpbnQKKytlcV9sb2FkZWRfc2NyaXB0X2VudHJ5 IChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQorK3sKKysgIGNvbnN0IHN0cnVjdCBsb2Fk ZWRfc2NyaXB0ICplYSA9IGE7CisrICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqZWIgPSBi OworKworKyAgcmV0dXJuIHN0cmNtcCAoZWEtPm5hbWUsIGViLT5uYW1lKSA9PSAwOworK30KKysK KysvKiBJbml0aWFsaXplIHRoZSB0YWJsZSB0byB0cmFjayBsb2FkZWQgc2NyaXB0cy4KKysgICBF YWNoIGVudHJ5IGlzIGhhc2hlZCBieSB0aGUgZnVsbCBwYXRoIG5hbWUuICAqLworKworK3N0YXRp YyB2b2lkCisraW5pdF9sb2FkZWRfc2NyaXB0c19pbmZvIChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFj ZV9pbmZvICpwc3BhY2VfaW5mbykKKyt7CisrICAvKiBDaG9vc2UgMzEgYXMgdGhlIHN0YXJ0aW5n IHNpemUgb2YgdGhlIGhhc2ggdGFibGUsIHNvbWV3aGF0IGFyYml0cmFyaWx5LgorKyAgICAgU3Bh Y2UgZm9yIGVhY2ggZW50cnkgaXMgb2J0YWluZWQgd2l0aCBvbmUgbWFsbG9jIHNvIHdlIGNhbiBm cmVlIHRoZW0KKysgICAgIGVhc2lseS4gICovCisrCisrICBwc3BhY2VfaW5mby0+bG9hZGVkX3Nj cmlwdHMgPSBodGFiX2NyZWF0ZSAoMzEsCisrCQkJCQkgICAgIGhhc2hfbG9hZGVkX3NjcmlwdF9l bnRyeSwKKysJCQkJCSAgICAgZXFfbG9hZGVkX3NjcmlwdF9lbnRyeSwKKysJCQkJCSAgICAgeGZy ZWUpOworKworKyAgcHNwYWNlX2luZm8tPnNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludGVk ID0gRkFMU0U7CisrfQorKworKy8qIFdyYXBwZXIgb24gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0 YSB0byBhbHNvIGFsbG9jYXRlIHRoZSBoYXNoIHRhYmxlCisrICAgZm9yIGxvYWRpbmcgc2NyaXB0 cy4gICovCisrCisrc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqCisrZ2V0X2F1dG9fbG9h ZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGluZyAoc3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSkK Kyt7CisrICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICppbmZvOworKworKyAgaW5mbyA9 IGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGEgKHBzcGFjZSk7CisrICBpZiAoaW5mby0+bG9hZGVk X3NjcmlwdHMgPT0gTlVMTCkKKysgICAgaW5pdF9sb2FkZWRfc2NyaXB0c19pbmZvIChpbmZvKTsK KysKKysgIHJldHVybiBpbmZvOworK30KKysKKysvKiBBZGQgc2NyaXB0IE5BTUUgdG8gaGFzaCB0 YWJsZSBvZiBQU1BBQ0VfSU5GTy4KKysgICBGVUxMX1BBVEggaXMgTlVMTCBpZiB0aGUgc2NyaXB0 IHdhc24ndCBmb3VuZC4KKysgICBUaGUgcmVzdWx0IGlzIHRydWUgaWYgdGhlIHNjcmlwdCB3YXMg YWxyZWFkeSBpbiB0aGUgaGFzaCB0YWJsZS4gICovCisrCisraW50CisrbWF5YmVfYWRkX3Njcmlw dCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm8sIGNvbnN0IGNoYXIg Km5hbWUsCisrCQkgIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aCkKKyt7CisrICBzdHJ1Y3QgaHRhYiAq aHRhYiA9IHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0czsKKysgIHN0cnVjdCBsb2FkZWRfc2Ny aXB0ICoqc2xvdCwgZW50cnk7CisrICBpbnQgaW5faGFzaF90YWJsZTsKKysKKysgIGVudHJ5Lm5h bWUgPSBuYW1lOworKyAgZW50cnkuZnVsbF9wYXRoID0gZnVsbF9wYXRoOworKyAgc2xvdCA9IChz dHJ1Y3QgbG9hZGVkX3NjcmlwdCAqKikgaHRhYl9maW5kX3Nsb3QgKGh0YWIsICZlbnRyeSwgSU5T RVJUKTsKKysgIGluX2hhc2hfdGFibGUgPSAqc2xvdCAhPSBOVUxMOworKworKyAgLyogSWYgdGhp cyBzY3JpcHQgaXMgbm90IGluIHRoZSBoYXNoIHRhYmxlLCBhZGQgaXQuICAqLworKworKyAgaWYg KCEgaW5faGFzaF90YWJsZSkKKysgICAgeworKyAgICAgIGNoYXIgKnA7CisrCisrICAgICAgLyog QWxsb2NhdGUgYWxsIHNwYWNlIGluIG9uZSBjaHVuayBzbyBpdCdzIGVhc2llciB0byBmcmVlLiAg Ki8KKysgICAgICAqc2xvdCA9IHhtYWxsb2MgKHNpemVvZiAoKipzbG90KQorKwkJICAgICAgICsg c3RybGVuIChuYW1lKSArIDEKKysJCSAgICAgICArIChmdWxsX3BhdGggIT0gTlVMTCA/IChzdHJs ZW4gKGZ1bGxfcGF0aCkgKyAxKSA6IDApKTsKKysgICAgICBwID0gKChjaGFyKikgKnNsb3QpICsg c2l6ZW9mICgqKnNsb3QpOworKyAgICAgIHN0cmNweSAocCwgbmFtZSk7CisrICAgICAgKCpzbG90 KS0+bmFtZSA9IHA7CisrICAgICAgaWYgKGZ1bGxfcGF0aCAhPSBOVUxMKQorKwl7CisrCSAgcCAr PSBzdHJsZW4gKHApICsgMTsKKysJICBzdHJjcHkgKHAsIGZ1bGxfcGF0aCk7CisrCSAgKCpzbG90 KS0+ZnVsbF9wYXRoID0gcDsKKysJfQorKyAgICAgIGVsc2UKKysJKCpzbG90KS0+ZnVsbF9wYXRo ID0gTlVMTDsKKysgICAgfQorKworKyAgcmV0dXJuIGluX2hhc2hfdGFibGU7CisrfQorKworKy8q IENsZWFyIHRoZSB0YWJsZSBvZiBsb2FkZWQgc2VjdGlvbiBzY3JpcHRzLiAgKi8KKysKKytzdGF0 aWMgdm9pZAorK2NsZWFyX3NlY3Rpb25fc2NyaXB0cyAodm9pZCkKKyt7CisrICBzdHJ1Y3QgcHJv Z3JhbV9zcGFjZSAqcHNwYWNlID0gY3VycmVudF9wcm9ncmFtX3NwYWNlOworKyAgc3RydWN0IGF1 dG9fbG9hZF9wc3BhY2VfaW5mbyAqaW5mbzsKKysKKysgIGluZm8gPSBwcm9ncmFtX3NwYWNlX2Rh dGEgKHBzcGFjZSwgYXV0b19sb2FkX3BzcGFjZV9kYXRhKTsKKysgIGlmIChpbmZvICE9IE5VTEwg JiYgaW5mby0+bG9hZGVkX3NjcmlwdHMgIT0gTlVMTCkKKysgICAgeworKyAgICAgIGh0YWJfZGVs ZXRlIChpbmZvLT5sb2FkZWRfc2NyaXB0cyk7CisrICAgICAgaW5mby0+bG9hZGVkX3NjcmlwdHMg PSBOVUxMOworKyAgICAgIGluZm8tPnNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludGVkID0g RkFMU0U7CisrICAgIH0KKyt9CisrCisrLyogTG9vayBmb3IgdGhlIGF1dG8tbG9hZCBzY3JpcHQg YXNzb2NpYXRlZCB3aXRoIE9CSkZJTEUgYW5kIGxvYWQgaXQuICAqLworKworK3ZvaWQKKythdXRv X2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBjb25zdCBjaGFy ICpzdWZmaXgpCisreworKyAgY2hhciAqcmVhbG5hbWU7CisrICBjaGFyICpmaWxlbmFtZSwgKmRl YnVnZmlsZTsKKysgIGludCBsZW47CisrICBGSUxFICppbnB1dDsKKysgIHN0cnVjdCBjbGVhbnVw ICpjbGVhbnVwczsKKysKKysgIHJlYWxuYW1lID0gZ2RiX3JlYWxwYXRoIChvYmpmaWxlLT5uYW1l KTsKKysgIGxlbiA9IHN0cmxlbiAocmVhbG5hbWUpOworKyAgZmlsZW5hbWUgPSB4bWFsbG9jIChs ZW4gKyBzdHJsZW4gKHN1ZmZpeCkgKyAxKTsKKysgIG1lbWNweSAoZmlsZW5hbWUsIHJlYWxuYW1l LCBsZW4pOworKyAgc3RyY3B5IChmaWxlbmFtZSArIGxlbiwgc3VmZml4KTsKKysKKysgIGNsZWFu dXBzID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwgZmlsZW5hbWUpOworKyAgbWFrZV9jbGVhbnVwICh4 ZnJlZSwgcmVhbG5hbWUpOworKworKyAgaW5wdXQgPSBmb3BlbiAoZmlsZW5hbWUsICJyIik7Cisr ICBkZWJ1Z2ZpbGUgPSBmaWxlbmFtZTsKKysKKysgIGlmICghaW5wdXQgJiYgZGVidWdfZmlsZV9k aXJlY3RvcnkpCisrICAgIHsKKysgICAgICAvKiBBbHNvIHRyeSB0aGUgc2FtZSBmaWxlIGluIHRo ZSBzZXBhcmF0ZSBkZWJ1ZyBpbmZvIGRpcmVjdG9yeS4gICovCisrICAgICAgZGVidWdmaWxlID0g eG1hbGxvYyAoc3RybGVuIChmaWxlbmFtZSkKKysJCQkgICArIHN0cmxlbiAoZGVidWdfZmlsZV9k aXJlY3RvcnkpICsgMSk7CisrICAgICAgc3RyY3B5IChkZWJ1Z2ZpbGUsIGRlYnVnX2ZpbGVfZGly ZWN0b3J5KTsKKysgICAgICAvKiBGSUxFTkFNRSBpcyBhYnNvbHV0ZSwgc28gd2UgZG9uJ3QgbmVl ZCBhICIvIiBoZXJlLiAgKi8KKysgICAgICBzdHJjYXQgKGRlYnVnZmlsZSwgZmlsZW5hbWUpOwor KworKyAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGRlYnVnZmlsZSk7CisrICAgICAgaW5wdXQg PSBmb3BlbiAoZGVidWdmaWxlLCAiciIpOworKyAgICB9CisrCisrICBpZiAoIWlucHV0ICYmIGdk Yl9kYXRhZGlyKQorKyAgICB7CisrICAgICAgLyogQWxzbyB0cnkgdGhlIHNhbWUgZmlsZSBpbiBh IHN1YmRpcmVjdG9yeSBvZiBnZGIncyBkYXRhCisrCSBkaXJlY3RvcnkuICAqLworKyAgICAgIGRl YnVnZmlsZSA9IHhtYWxsb2MgKHN0cmxlbiAoZ2RiX2RhdGFkaXIpICsgc3RybGVuIChmaWxlbmFt ZSkKKysJCQkgICArIHN0cmxlbiAoIi9hdXRvLWxvYWQiKSArIDEpOworKyAgICAgIHN0cmNweSAo ZGVidWdmaWxlLCBnZGJfZGF0YWRpcik7CisrICAgICAgc3RyY2F0IChkZWJ1Z2ZpbGUsICIvYXV0 by1sb2FkIik7CisrICAgICAgLyogRklMRU5BTUUgaXMgYWJzb2x1dGUsIHNvIHdlIGRvbid0IG5l ZWQgYSAiLyIgaGVyZS4gICovCisrICAgICAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGZpbGVuYW1lKTsK KysKKysgICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCBkZWJ1Z2ZpbGUpOworKyAgICAgIGlucHV0 ID0gZm9wZW4gKGRlYnVnZmlsZSwgInIiKTsKKysgICAgfQorKworKyAgaWYgKGlucHV0KQorKyAg ICB7CisrICAgICAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87Cisr CisrICAgICAgbWFrZV9jbGVhbnVwX2ZjbG9zZSAoaW5wdXQpOworKworKyAgICAgIC8qIEFkZCB0 aGlzIHNjcmlwdCB0byB0aGUgaGFzaCB0YWJsZSB0b28gc28gImluZm8gYXV0by1sb2FkLXNjcmlw dHMiCisrCSBjYW4gcHJpbnQgaXQuICAqLworKyAgICAgIHBzcGFjZV9pbmZvID0KKysJZ2V0X2F1 dG9fbG9hZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGluZyAoY3VycmVudF9wcm9ncmFtX3NwYWNlKTsK KysgICAgICBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5mbywgZGVidWdmaWxlLCBkZWJ1Z2Zp bGUpOworKworKyAgICAgIC8qIFRvIHByZXNlcnZlIGV4aXN0aW5nIGJlaGF2aW91ciB3ZSBkb24n dCBjaGVjayBmb3Igd2hldGhlciB0aGUKKysJIHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0aGUgdGFi bGUsIGFuZCBhbHdheXMgbG9hZCBpdC4KKysJIEl0J3MgaGlnaGx5IHVubGlrZWx5IHRoYXQgd2Un ZCBldmVyIGxvYWQgaXQgdHdpY2UsCisrCSBhbmQgdGhlc2Ugc2NyaXB0cyBhcmUgcmVxdWlyZWQg dG8gYmUgaWRlbXBvdGVudCB1bmRlciBtdWx0aXBsZQorKwkgbG9hZHMgYW55d2F5LiAgKi8KKysg ICAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgaW5wdXQsIGRl YnVnZmlsZSk7CisrICAgIH0KKysKKysgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7CisrfQorKwor Ky8qIFRoaXMgaXMgYSBuZXdfb2JqZmlsZSBvYnNlcnZlciBjYWxsYmFjayB0byBhdXRvLWxvYWQg c2NyaXB0cy4KKysKKysgICBUd28gZmxhdm9ycyBvZiBhdXRvLWxvYWRlZCBzY3JpcHRzIGFyZSBz dXBwb3J0ZWQuCisrICAgMSkgYmFzZWQgb24gdGhlIHBhdGggdG8gdGhlIG9iamZpbGUKKysgICAy KSBmcm9tIC5kZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9uICAqLworKworK3N0YXRpYyB2b2lkCisr YXV0b19sb2FkX25ld19vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyt7CisrICBp ZiAoIW9iamZpbGUpCisrICAgIHsKKysgICAgICAvKiBPQkpGSUxFIGlzIE5VTEwgd2hlbiBsb2Fk aW5nIGEgbmV3ICJtYWluIiBzeW1ib2wtZmlsZS4gICovCisrICAgICAgY2xlYXJfc2VjdGlvbl9z Y3JpcHRzICgpOworKyAgICAgIHJldHVybjsKKysgICAgfQorKworKyAgbG9hZF9hdXRvX3Njcmlw dHNfZm9yX29iamZpbGUgKG9iamZpbGUpOworK30KKysKKysvKiBDb2xsZWN0IHNjcmlwdHMgdG8g YmUgcHJpbnRlZCBpbiBhIHZlYy4gICovCisrCisrdHlwZWRlZiBzdHJ1Y3QgbG9hZGVkX3Njcmlw dCAqbG9hZGVkX3NjcmlwdF9wdHI7CisrREVGX1ZFQ19QIChsb2FkZWRfc2NyaXB0X3B0cik7Cisr CisrLyogVHJhdmVyc2FsIGZ1bmN0aW9uIGZvciBodGFiX3RyYXZlcnNlLgorKyAgIENvbGxlY3Qg dGhlIGVudHJ5IGlmIGl0IG1hdGNoZXMgdGhlIHJlZ2V4cC4gICovCisrCisrc3RhdGljIGludAor K2NvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0cyAodm9pZCAqKnNsb3QsIHZvaWQgKmluZm8pCisrewor KyAgc3RydWN0IGxvYWRlZF9zY3JpcHQgKnNjcmlwdCA9ICpzbG90OworKyAgVkVDIChsb2FkZWRf c2NyaXB0X3B0cikgKipzY3JpcHRzX3B0ciA9IGluZm87CisrCisrICBpZiAocmVfZXhlYyAoc2Ny aXB0LT5uYW1lKSkKKysgICAgVkVDX3NhZmVfcHVzaCAobG9hZGVkX3NjcmlwdF9wdHIsICpzY3Jp cHRzX3B0ciwgc2NyaXB0KTsKKysKKysgIHJldHVybiAxOworK30KKysKKysvKiBQcmludCBTQ1JJ UFQuICAqLworKworK3N0YXRpYyB2b2lkCisrcHJpbnRfc2NyaXB0IChzdHJ1Y3QgbG9hZGVkX3Nj cmlwdCAqc2NyaXB0KQorK3sKKysgIHN0cnVjdCB1aV9vdXQgKnVpb3V0ID0gY3VycmVudF91aW91 dDsKKysgIHN0cnVjdCBjbGVhbnVwICpjaGFpbjsKKysKKysgIGNoYWluID0gbWFrZV9jbGVhbnVw X3VpX291dF90dXBsZV9iZWdpbl9lbmQgKHVpb3V0LCBOVUxMKTsKKysKKysgIHVpX291dF9maWVs ZF9zdHJpbmcgKHVpb3V0LCAibG9hZGVkIiwgc2NyaXB0LT5mdWxsX3BhdGggPyAiWWVzIiA6ICJN aXNzaW5nIik7CisrICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgInNjcmlwdCIsIHNjcmlw dC0+bmFtZSk7CisrICB1aV9vdXRfdGV4dCAodWlvdXQsICJcbiIpOworKworKyAgLyogSWYgdGhl IG5hbWUgaXNuJ3QgdGhlIGZ1bGwgcGF0aCwgcHJpbnQgaXQgdG9vLiAgKi8KKysgIGlmIChzY3Jp cHQtPmZ1bGxfcGF0aCAhPSBOVUxMCisrICAgICAgJiYgc3RyY21wIChzY3JpcHQtPm5hbWUsIHNj cmlwdC0+ZnVsbF9wYXRoKSAhPSAwKQorKyAgICB7CisrICAgICAgdWlfb3V0X3RleHQgKHVpb3V0 LCAiXHRmdWxsIG5hbWU6ICIpOworKyAgICAgIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAi ZnVsbF9wYXRoIiwgc2NyaXB0LT5mdWxsX3BhdGgpOworKyAgICAgIHVpX291dF90ZXh0ICh1aW91 dCwgIlxuIik7CisrICAgIH0KKysKKysgIGRvX2NsZWFudXBzIChjaGFpbik7CisrfQorKworKy8q IEhlbHBlciBmb3IgaW5mb19hdXRvX2xvYWRfc2NyaXB0cyB0byBzb3J0IHRoZSBzY3JpcHRzIGJ5 IG5hbWUuICAqLworKworK3N0YXRpYyBpbnQKKytzb3J0X3NjcmlwdHNfYnlfbmFtZSAoY29uc3Qg dm9pZCAqYXAsIGNvbnN0IHZvaWQgKmJwKQorK3sKKysgIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2Ny aXB0ICphID0gKihjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqKikgYXA7CisrICBjb25zdCBz dHJ1Y3QgbG9hZGVkX3NjcmlwdCAqYiA9ICooY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKiop IGJwOworKworKyAgcmV0dXJuIEZJTEVOQU1FX0NNUCAoYS0+bmFtZSwgYi0+bmFtZSk7CisrfQor KworKy8qICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIiBjb21tYW5kLiAgKi8KKysKKytzdGF0aWMg dm9pZAorK2luZm9fYXV0b19sb2FkX3NjcmlwdHMgKGNoYXIgKnBhdHRlcm4sIGludCBmcm9tX3R0 eSkKKyt7CisrICBzdHJ1Y3QgdWlfb3V0ICp1aW91dCA9IGN1cnJlbnRfdWlvdXQ7CisrICBzdHJ1 Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKKysgIHN0cnVjdCBjbGVhbnVw ICpzY3JpcHRfY2hhaW47CisrICBWRUMgKGxvYWRlZF9zY3JpcHRfcHRyKSAqc2NyaXB0czsKKysg IGludCBucl9zY3JpcHRzOworKworKyAgZG9udF9yZXBlYXQgKCk7CisrCisrICBwc3BhY2VfaW5m byA9IGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGEgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7Cisr CisrICBpZiAocGF0dGVybiAmJiAqcGF0dGVybikKKysgICAgeworKyAgICAgIGNoYXIgKnJlX2Vy ciA9IHJlX2NvbXAgKHBhdHRlcm4pOworKworKyAgICAgIGlmIChyZV9lcnIpCisrCWVycm9yIChf KCJJbnZhbGlkIHJlZ2V4cDogJXMiKSwgcmVfZXJyKTsKKysgICAgfQorKyAgZWxzZQorKyAgICB7 CisrICAgICAgcmVfY29tcCAoIiIpOworKyAgICB9CisrCisrICAvKiBXZSBuZWVkIHRvIGtub3cg dGhlIG51bWJlciBvZiByb3dzIGJlZm9yZSB3ZSBidWlsZCB0aGUgdGFibGUuCisrICAgICBQbHVz IHdlIHdhbnQgdG8gc29ydCB0aGUgc2NyaXB0cyBieSBuYW1lLgorKyAgICAgU28gZmlyc3QgdHJh dmVyc2UgdGhlIGhhc2ggdGFibGUgY29sbGVjdGluZyB0aGUgbWF0Y2hpbmcgc2NyaXB0cy4gICov CisrCisrICBzY3JpcHRzID0gVkVDX2FsbG9jIChsb2FkZWRfc2NyaXB0X3B0ciwgMTApOworKyAg c2NyaXB0X2NoYWluID0gbWFrZV9jbGVhbnVwIChWRUNfY2xlYW51cCAobG9hZGVkX3NjcmlwdF9w dHIpLCAmc2NyaXB0cyk7CisrCisrICBpZiAocHNwYWNlX2luZm8gIT0gTlVMTCAmJiBwc3BhY2Vf aW5mby0+bG9hZGVkX3NjcmlwdHMgIT0gTlVMTCkKKysgICAgeworKyAgICAgIGltbWVkaWF0ZV9x dWl0Kys7CisrICAgICAgLyogUGFzcyBhIHBvaW50ZXIgdG8gc2NyaXB0cyBhcyBWRUNfc2FmZV9w dXNoIGNhbiByZWFsbG9jIHNwYWNlLiAgKi8KKysgICAgICBodGFiX3RyYXZlcnNlX25vcmVzaXpl IChwc3BhY2VfaW5mby0+bG9hZGVkX3NjcmlwdHMsCisrCQkJICAgICAgY29sbGVjdF9tYXRjaGlu Z19zY3JpcHRzLCAmc2NyaXB0cyk7CisrICAgICAgaW1tZWRpYXRlX3F1aXQtLTsKKysgICAgfQor KworKyAgbnJfc2NyaXB0cyA9IFZFQ19sZW5ndGggKGxvYWRlZF9zY3JpcHRfcHRyLCBzY3JpcHRz KTsKKysgIG1ha2VfY2xlYW51cF91aV9vdXRfdGFibGVfYmVnaW5fZW5kICh1aW91dCwgMiwgbnJf c2NyaXB0cywKKysJCQkJICAgICAgICJBdXRvTG9hZGVkU2NyaXB0c1RhYmxlIik7CisrCisrICB1 aV9vdXRfdGFibGVfaGVhZGVyICh1aW91dCwgNywgdWlfbGVmdCwgImxvYWRlZCIsICJMb2FkZWQi KTsKKysgIHVpX291dF90YWJsZV9oZWFkZXIgKHVpb3V0LCA3MCwgdWlfbGVmdCwgInNjcmlwdCIs ICJTY3JpcHQiKTsKKysgIHVpX291dF90YWJsZV9ib2R5ICh1aW91dCk7CisrCisrICBpZiAobnJf c2NyaXB0cyA+IDApCisrICAgIHsKKysgICAgICBpbnQgaTsKKysgICAgICBsb2FkZWRfc2NyaXB0 X3B0ciBzY3JpcHQ7CisrCisrICAgICAgcXNvcnQgKFZFQ19hZGRyZXNzIChsb2FkZWRfc2NyaXB0 X3B0ciwgc2NyaXB0cyksCisrCSAgICAgVkVDX2xlbmd0aCAobG9hZGVkX3NjcmlwdF9wdHIsIHNj cmlwdHMpLAorKwkgICAgIHNpemVvZiAobG9hZGVkX3NjcmlwdF9wdHIpLCBzb3J0X3NjcmlwdHNf YnlfbmFtZSk7CisrICAgICAgZm9yIChpID0gMDsgVkVDX2l0ZXJhdGUgKGxvYWRlZF9zY3JpcHRf cHRyLCBzY3JpcHRzLCBpLCBzY3JpcHQpOyArK2kpCisrCXByaW50X3NjcmlwdCAoc2NyaXB0KTsK KysgICAgfQorKworKyAgZG9fY2xlYW51cHMgKHNjcmlwdF9jaGFpbik7CisrCisrICBpZiAobnJf c2NyaXB0cyA9PSAwKQorKyAgICB7CisrICAgICAgaWYgKHBhdHRlcm4gJiYgKnBhdHRlcm4pCisr CXVpX291dF9tZXNzYWdlICh1aW91dCwgMCwgIk5vIGF1dG8tbG9hZCBzY3JpcHRzIG1hdGNoaW5n ICVzLlxuIiwKKysJCQlwYXR0ZXJuKTsKKysgICAgICBlbHNlCisrCXVpX291dF9tZXNzYWdlICh1 aW91dCwgMCwgIk5vIGF1dG8tbG9hZCBzY3JpcHRzLlxuIik7CisrICAgIH0KKyt9CisrCisrLyog UmV0dXJuIG5vbi16ZXJvIGlmIFNDUklQVF9OT1RfRk9VTkRfV0FSTklOR19QUklOVEVEIG9mIFBT UEFDRV9JTkZPIHdhcyB1bnNldAorKyAgIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uICBB bHdheXMgc2V0IFNDUklQVF9OT1RfRk9VTkRfV0FSTklOR19QUklOVEVECisrICAgb2YgUFNQQUNF X0lORk8uICAqLworKworK2ludAorK3NjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludCAoc3Ry dWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm8pCisreworKyAgaW50IHJldHZh bCA9ICFwc3BhY2VfaW5mby0+c2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50ZWQ7CisrCisr ICBwc3BhY2VfaW5mby0+c2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50ZWQgPSAxOworKwor KyAgcmV0dXJuIHJldHZhbDsKKyt9CisrCisrdm9pZCBfaW5pdGlhbGl6ZV9hdXRvX2xvYWQgKHZv aWQpOworKworK3ZvaWQKKytfaW5pdGlhbGl6ZV9hdXRvX2xvYWQgKHZvaWQpCisreworKyAgYXV0 b19sb2FkX3BzcGFjZV9kYXRhCisrICAgID0gcmVnaXN0ZXJfcHJvZ3JhbV9zcGFjZV9kYXRhX3dp dGhfY2xlYW51cCAoYXV0b19sb2FkX3BzcGFjZV9kYXRhX2NsZWFudXApOworKworKyAgb2JzZXJ2 ZXJfYXR0YWNoX25ld19vYmpmaWxlIChhdXRvX2xvYWRfbmV3X29iamZpbGUpOworKworKyAgYWRk X2luZm8gKCJhdXRvLWxvYWQtc2NyaXB0cyIsCisrCSAgICBpbmZvX2F1dG9fbG9hZF9zY3JpcHRz LAorKwkgICAgXygiUHJpbnQgdGhlIGxpc3Qgb2YgYXV0b21hdGljYWxseSBsb2FkZWQgc2NyaXB0 cy5cblwKKytVc2FnZTogaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyBbUkVHRVhQXSIpKTsKKyt9CitJ bmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmgKKz09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t LSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuaAkyMDEyLTA0LTE4IDAwOjI2OjI5LjA0OTEy MDIxMiArMDIwMAorQEAgLTAsMCArMSwzNiBAQAorKy8qIEdEQiByb3V0aW5lcyBmb3Igc3VwcG9y dGluZyBhdXRvLWxvYWRlZCBzY3JpcHRzLgorKworKyAgIENvcHlyaWdodCAoQykgMjAxMiBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBH REIuCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisr ICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysg ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworKyNp Zm5kZWYgQVVUT19MT0FEX0gKKysjZGVmaW5lIEFVVE9fTE9BRF9IIDEKKysKKytzdHJ1Y3QgcHJv Z3JhbV9zcGFjZTsKKysKKytleHRlcm4gaW50IGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQ7CisrCisr ZXh0ZXJuIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKgorKyAgZ2V0X2F1dG9fbG9hZF9w c3BhY2VfZGF0YV9mb3JfbG9hZGluZyAoc3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSk7Cisr ZXh0ZXJuIGludCBtYXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZv ICpwc3BhY2VfaW5mbywKKysJCQkgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmZ1 bGxfcGF0aCk7CisrZXh0ZXJuIHZvaWQgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwKKysJCQkJICAgICAgY29uc3QgY2hhciAqc3VmZml4KTsKKytleHRl cm4gaW50CisrICBzY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnQgKHN0cnVjdCBhdXRvX2xv YWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvKTsKKysKKysjZW5kaWYgLyogQVVUT19MT0FEX0gg Ki8KK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9nZGItZ2RiLmdkYi5pbgorPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAor KysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2dkYi1nZGIuZ2RiLmluCTIwMTItMDQtMTggMDA6 MjY6MjkuMDQ5MTIwMjEyICswMjAwCitAQCAtMCwwICsxLDM0IEBACisrZWNobyBTZXR0aW5nIHVw IHRoZSBlbnZpcm9ubWVudCBmb3IgZGVidWdnaW5nIGdkYi5cbgorKworK3NldCBjb21wbGFpbnRz IDEKKysKKytiIGludGVybmFsX2Vycm9yCisrCisrYiBpbmZvX2NvbW1hbmQKKytjb21tYW5kcwor KwlzaWxlbnQKKysJcmV0dXJuCisrZW5kCisrCisrZGlyIEBzcmNkaXJALy4uL2xpYmliZXJ0eQor K2RpciBAc3JjZGlyQC8uLi9iZmQKKytkaXIgQHNyY2RpckAKKytkaXIgLgorK3NldCBwcm9tcHQg KHRvcC1nZGIpIAorKworK2RlZmluZSBwZGllCisrICBpZiAkYXJnYyA9PSAxCisrICAgIGNhbGwg ZHVtcF9kaWUgKCRhcmcwLCAxKQorKyAgZWxzZQorKyAgICBpZiAkYXJnYyA9PSAyCisrICAgICAg Y2FsbCBkdW1wX2RpZSAoJGFyZzAsICRhcmcxKQorKyAgICBlbHNlCisrICAgICAgcHJpbnRmICJT eW50YXg6IHBkaWUgZGllIFtkZXB0aF1cbiIKKysgICAgZW5kCisrICBlbmQKKytlbmQKKysKKytk b2N1bWVudCBwZGllCisrUHJldHR5IHByaW50IGEgRFdBUkYgRElFLgorK1N5bnRheDogcGRpZSBk aWUgW2RlcHRoXQorK2VuZAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL01ha2VmaWxl LmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9NYWtlZmls ZS5pbgkyMDEyLTA0LTE4IDAwOjI2OjE0LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL01ha2VmaWxlLmluCTIwMTItMDQtMTggMDA6MjY6NTMuNDU1MDU4MDM3ICsw MjAwCitAQCAtNjgwLDcgKzY4MCw3IEBAIFRBUkdFVF9GTEFHU19UT19QQVNTID0gXAorICMgU0ZJ TEVTIGlzIHVzZWQgaW4gYnVpbGRpbmcgdGhlIGRpc3RyaWJ1dGlvbiBhcmNoaXZlLgorIAorIFNG SUxFUyA9IGFkYS1leHAueSBhZGEtbGFuZy5jIGFkYS10eXBlcHJpbnQuYyBhZGEtdmFscHJpbnQu YyBhZGEtdGFza3MuYyBcCistCWFkZHJtYXAuYyBcCisrCWFkZHJtYXAuYyBhdXRvLWxvYWQuYyBc CisgCWF1eHYuYyBheC1nZW5lcmFsLmMgYXgtZ2RiLmMgXAorIAliY2FjaGUuYyBcCisgCWJmZC10 YXJnZXQuYyBcCitAQCAtODE5LDcgKzgxOSw3IEBAIHNvbGliLWRhcndpbi5oIHNvbGliLWlhNjQt aHB1eC5oIHNvbGliLXMKKyBnbnVsaWIvZXh0cmEvYXJnLW5vbm51bGwuaCBnbnVsaWIvZXh0cmEv YysrZGVmcy5oIGdudWxpYi9leHRyYS93YXJuLW9uLXVzZS5oIFwKKyBnbnVsaWIvc3RkZGVmLmlu LmggaW5saW5lLWZyYW1lLmggc2tpcC5oIHN0YXAtcHJvYmUuaCBcCisgY29tbW9uL2NvbW1vbi11 dGlscy5oIGNvbW1vbi94bWwtdXRpbHMuaCBjb21tb24vYnVmZmVyLmggY29tbW9uL3B0aWQuaCBc CistY29tbW9uL2xpbnV4LW9zZGF0YS5oIGdkYi1kbGZjbi5oCisrY29tbW9uL2xpbnV4LW9zZGF0 YS5oIGdkYi1kbGZjbi5oIGF1dG8tbG9hZC5oCisgCisgIyBIZWFkZXIgZmlsZXMgdGhhdCBhbHJl YWR5IGhhdmUgc3JjZGlyIGluIHRoZW0sIG9yIHdoaWNoIGFyZSBpbiBvYmpkaXIuCisgCitAQCAt ODUxLDcgKzg1MSw3IEBAIENPTU1PTl9PQlMgPSAkKERFUEZJTEVTKSAkKENPTkZJR19PQlMpICQK KyAJdmVyc2lvbi5vIFwKKyAJYW5ub3RhdGUubyBcCisgCWFkZHJtYXAubyBcCistCWF1eHYubyBc CisrCWF1dG8tbG9hZC5vIGF1eHYubyBcCisgCWJmZC10YXJnZXQubyBcCisgCWJsb2NrZnJhbWUu byBicmVha3BvaW50Lm8gZmluZHZhci5vIHJlZ2NhY2hlLm8gXAorIAljaGFyc2V0Lm8gY29udGlu dWF0aW9ucy5vIGNvcmVsb3cubyBkaXNhc20ubyBkdW1teS1mcmFtZS5vIGRmcC5vIFwKK0BAIC0x MjU1LDcgKzEyNTUsNyBAQCBkaXN0Y2xlYW46IGNsZWFuCisgCXJtIC1mIGdkYnNlcnZlci9jb25m aWcuc3RhdHVzIGdkYnNlcnZlci9jb25maWcubG9nCisgCXJtIC1mIGdkYnNlcnZlci90bS5oIGdk YnNlcnZlci94bS5oIGdkYnNlcnZlci9ubS5oCisgCXJtIC1mIGdkYnNlcnZlci9NYWtlZmlsZSBn ZGJzZXJ2ZXIvY29uZmlnLmNhY2hlCistCXJtIC1mIG5tLmggY29uZmlnLnN0YXR1cyBjb25maWcu aCBzdGFtcC1oIC5nZGJpbml0IGppdC1yZWFkZXIuaAorKwlybSAtZiBubS5oIGNvbmZpZy5zdGF0 dXMgY29uZmlnLmggc3RhbXAtaCBnZGItZ2RiLmdkYiBqaXQtcmVhZGVyLmgKKyAJcm0gLWYgeS5v dXRwdXQgeWFjYy5hY3RzIHlhY2MudG1wIHkudGFiLmgKKyAJcm0gLWYgY29uZmlnLmxvZyBjb25m aWcuY2FjaGUKKyAJcm0gLWYgTWFrZWZpbGUKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9jb25maWd1cmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2Ri L2NvbmZpZ3VyZQkyMDEyLTA0LTE4IDAwOjI2OjE0LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZQkyMDEyLTA0LTE4IDAwOjI2OjI5LjA1MzEyMDIw MiArMDIwMAorQEAgLTE2ODM5LDcgKzE2ODM5LDcgQEAgYWNfY29uZmlnX2xpbmtzPSIkYWNfY29u ZmlnX2xpbmtzICRhY19jbworICRhc19lY2hvICIjZGVmaW5lIEdEQl9ERUZBVUxUX0hPU1RfQ0hB UlNFVCBcIlVURi04XCIiID4+Y29uZmRlZnMuaAorIAorIAorLWFjX2NvbmZpZ19maWxlcz0iJGFj X2NvbmZpZ19maWxlcyBNYWtlZmlsZSAuZ2RiaW5pdDpnZGJpbml0LmluIGRvYy9NYWtlZmlsZSBn bnVsaWIvTWFrZWZpbGUgZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUiCisrYWNfY29uZmlnX2ZpbGVz PSIkYWNfY29uZmlnX2ZpbGVzIE1ha2VmaWxlIGdkYi1nZGIuZ2RiIGRvYy9NYWtlZmlsZSBnbnVs aWIvTWFrZWZpbGUgZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUiCisgCisgYWNfY29uZmlnX2NvbW1h bmRzPSIkYWNfY29uZmlnX2NvbW1hbmRzIGRlZmF1bHQiCisgCitAQCAtMTc2MDUsNyArMTc2MDUs NyBAQCBkbworICAgICAiaml0LXJlYWRlci5oIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVT IGppdC1yZWFkZXIuaDpqaXQtcmVhZGVyLmluIiA7OworICAgICAiJGFjX2NvbmZpZ19saW5rc18x IikgQ09ORklHX0xJTktTPSIkQ09ORklHX0xJTktTICRhY19jb25maWdfbGlua3NfMSIgOzsKKyAg ICAgIk1ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIE1ha2VmaWxlIiA7Owor LSAgICAiLmdkYmluaXQiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgLmdkYmluaXQ6Z2Ri aW5pdC5pbiIgOzsKKysgICAgImdkYi1nZGIuZ2RiIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJ TEVTIGdkYi1nZGIuZ2RiIiA7OworICAgICAiZG9jL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIk Q09ORklHX0ZJTEVTIGRvYy9NYWtlZmlsZSIgOzsKKyAgICAgImdudWxpYi9NYWtlZmlsZSIpIENP TkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnbnVsaWIvTWFrZWZpbGUiIDs7CisgICAgICJkYXRh LWRpcmVjdG9yeS9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBkYXRhLWRp cmVjdG9yeS9NYWtlZmlsZSIgOzsKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25m aWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2Nv bmZpZ3VyZS5hYwkyMDEyLTA0LTE4IDAwOjI2OjE0LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEyLTA0LTE4IDAwOjI2OjI5LjA1MzEy MDIwMiArMDIwMAorQEAgLTI0MjIsNyArMjQyMiw3IEBAIGRubCAgQXQgdGhlIG1vbWVudCwgd2Ug anVzdCBhc3N1bWUgaXQncworIEFDX0RFRklORShHREJfREVGQVVMVF9IT1NUX0NIQVJTRVQsICJV VEYtOCIsCisgICAgICAgICAgIFtEZWZpbmUgdG8gYmUgYSBzdHJpbmcgbmFtaW5nIHRoZSBkZWZh dWx0IGhvc3QgY2hhcmFjdGVyIHNldC5dKQorIAorLUFDX09VVFBVVChNYWtlZmlsZSAuZ2RiaW5p dDpnZGJpbml0LmluIGRvYy9NYWtlZmlsZSBnbnVsaWIvTWFrZWZpbGUgZGF0YS1kaXJlY3Rvcnkv TWFrZWZpbGUsCisrQUNfT1VUUFVUKE1ha2VmaWxlIGdkYi1nZGIuZ2RiIGRvYy9NYWtlZmlsZSBn bnVsaWIvTWFrZWZpbGUgZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUsCisgWworIGNhc2UgeCRDT05G SUdfSEVBREVSUyBpbgorIHhjb25maWcuaDpjb25maWcuaW4pCitJbmRleDogZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvbWFpbi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5v cmlnL2dkYi9tYWluLmMJMjAxMi0wNC0xOCAwMDoyNjoxNC4wMDAwMDAwMDAgKzAyMDAKKysrKyBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMJMjAxMi0wNC0xOCAwMDoyNjoyOS4wNTQxMjAx OTkgKzAyMDAKK0BAIC00Miw2ICs0Miw3IEBACisgI2luY2x1ZGUgImNsaS9jbGktY21kcy5oIgor ICNpbmNsdWRlICJweXRob24vcHl0aG9uLmgiCisgI2luY2x1ZGUgIm9iamZpbGVzLmgiCisrI2lu Y2x1ZGUgImF1dG8tbG9hZC5oIgorIAorIC8qIFRoZSBzZWxlY3RlZCBpbnRlcnByZXRlci4gIFRo aXMgd2lsbCBiZSB1c2VkIGFzIGEgc2V0IGNvbW1hbmQKKyAgICB2YXJpYWJsZSwgc28gaXQgc2hv dWxkIGFsd2F5cyBiZSBtYWxsb2MnZWQgLSBzaW5jZQorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAu MjAxMjAxMjAub3JpZy9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6MjY6 MTQuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5 LWF1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6MjY6MjkuMDU0MTIwMTk5ICswMjAwCitAQCAtMTgs MzAgKzE4LDE0IEBACisgICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworIAorICNpbmNsdWRlICJkZWZzLmgi CistI2luY2x1ZGUgImZpbGVuYW1lcy5oIgorICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCistI2lu Y2x1ZGUgImdkYl9yZWdleC5oIgorICNpbmNsdWRlICJ0b3AuaCIKKyAjaW5jbHVkZSAiZXhjZXB0 aW9ucy5oIgorLSNpbmNsdWRlICJjb21tYW5kLmgiCisgI2luY2x1ZGUgImdkYmNtZC5oIgorLSNp bmNsdWRlICJvYnNlcnZlci5oIgorLSNpbmNsdWRlICJwcm9nc3BhY2UuaCIKKyAjaW5jbHVkZSAi b2JqZmlsZXMuaCIKKyAjaW5jbHVkZSAicHl0aG9uLmgiCisgI2luY2x1ZGUgImNsaS9jbGktY21k cy5oIgorLQorLS8qIEludGVybmFsLXVzZSBmbGFnIHRvIGVuYWJsZS9kaXNhYmxlIGF1dG8tbG9h ZGluZy4KKy0gICBUaGlzIGlzIHRydWUgaWYgd2Ugc2hvdWxkIGF1dG8tbG9hZCBweXRob24gY29k ZSB3aGVuIGFuIG9iamZpbGUgaXMgb3BlbmVkLAorLSAgIGZhbHNlIG90aGVyd2lzZS4KKy0KKy0g ICBCb3RoIGF1dG9fbG9hZF9zY3JpcHRzICYmIGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQgbXVzdCBi ZSB0cnVlIHRvIGVuYWJsZQorLSAgIGF1dG8tbG9hZGluZy4KKy0KKy0gICBUaGlzIGZsYWcgZXhp c3RzIHRvIGZhY2lsaXRhdGUgZGVmZXJyaW5nIGF1dG8tbG9hZGluZyBkdXJpbmcgc3RhcnQtdXAK Ky0gICB1bnRpbCBhZnRlciAuLy5nZGJpbml0IGhhcyBiZWVuIHJlYWQ7IGl0IG1heSBhdWdtZW50 IHRoZSBzZWFyY2ggZGlyZWN0b3JpZXMKKy0gICB1c2VkIHRvIGZpbmQgdGhlIHNjcmlwdHMuICAq LworLWludCBnZGJweV9nbG9iYWxfYXV0b19sb2FkID0gMTsKKysjaW5jbHVkZSAiYXV0by1sb2Fk LmgiCisgCisgI2lmZGVmIEhBVkVfUFlUSE9OCisgCitAQCAtNjAsMzIgKzQ0LDYgQEAgaW50IGdk YnB5X2dsb2JhbF9hdXRvX2xvYWQgPSAxOworICAgIFRoZSBsZWFkaW5nIGJ5dGUgaXMgdG8gYWxs b3cgdXB3YXJkIGNvbXBhdGlibGUgZXh0ZW5zaW9ucy4gICovCisgI2RlZmluZSBHREJQWV9BVVRP X1NFQ1RJT05fTkFNRSAiLmRlYnVnX2dkYl9zY3JpcHRzIgorIAorLS8qIEZvciBzY3JpcHRzIHNw ZWNpZmllZCBpbiAuZGVidWdfZ2RiX3NjcmlwdHMsIG11bHRpcGxlIG9iamZpbGVzIG1heSBsb2Fk CistICAgdGhlIHNhbWUgc2NyaXB0LiAgVGhlcmUncyBubyBwb2ludCBpbiBsb2FkaW5nIHRoZSBz Y3JpcHQgbXVsdGlwbGUgdGltZXMsCistICAgYW5kIHRoZXJlIGNhbiBiZSBhIGxvdCBvZiBvYmpm aWxlcyBhbmQgc2NyaXB0cywgc28gd2Uga2VlcCB0cmFjayBvZiBzY3JpcHRzCistICAgbG9hZGVk IHRoaXMgd2F5LiAgKi8KKy0KKy1zdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvCisteworLSAg LyogRm9yIGVhY2ggcHJvZ3JhbSBzcGFjZSB3ZSBrZWVwIHRyYWNrIG9mIGxvYWRlZCBzY3JpcHRz LiAgKi8KKy0gIHN0cnVjdCBodGFiICpsb2FkZWRfc2NyaXB0czsKKy0KKy0gIC8qIE5vbi16ZXJv IGlmIHdlJ3ZlIGlzc3VlZCB0aGUgd2FybmluZyBhYm91dCBhbiBhdXRvLWxvYWQgc2NyaXB0IG5v dCBiZWluZworLSAgICAgZm91bmQuICBXZSBvbmx5IHdhbnQgdG8gaXNzdWUgdGhpcyB3YXJuaW5n IG9uY2UuICAqLworLSAgaW50IHNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludGVkOworLX07 CistCistLyogT2JqZWN0cyBvZiB0aGlzIHR5cGUgYXJlIHN0b3JlZCBpbiB0aGUgbG9hZGVkIHNj cmlwdCBoYXNoIHRhYmxlLiAgKi8KKy0KKy1zdHJ1Y3QgbG9hZGVkX3NjcmlwdAorLXsKKy0gIC8q IE5hbWUgYXMgcHJvdmlkZWQgYnkgdGhlIG9iamZpbGUuICAqLworLSAgY29uc3QgY2hhciAqbmFt ZTsKKy0gIC8qIEZ1bGwgcGF0aCBuYW1lIG9yIE5VTEwgaWYgc2NyaXB0IHdhc24ndCBmb3VuZCAo b3Igd2FzIG90aGVyd2lzZQorLSAgICAgaW5hY2Nlc3NpYmxlKS4gICovCistICBjb25zdCBjaGFy ICpmdWxsX3BhdGg7CistfTsKKy0KKyAvKiBVc2VyLXNldHRhYmxlIG9wdGlvbiB0byBlbmFibGUv ZGlzYWJsZSBhdXRvLWxvYWRpbmc6CisgICAgc2V0IGF1dG8tbG9hZC1zY3JpcHRzIG9ufG9mZgor ICAgIFRoaXMgaXMgdHJ1ZSBpZiB3ZSBzaG91bGQgYXV0by1sb2FkIGFzc29jaWF0ZWQgc2NyaXB0 cyB3aGVuIGFuIG9iamZpbGUKK0BAIC05NywxMzYgKzU1LDYgQEAgc3RydWN0IGxvYWRlZF9zY3Jp cHQKKyAgICBUaGUgZmFjdCB0aGF0IGl0IGxpdmVzIGhlcmUgaXMganVzdCBhbiBpbXBsZW1lbnRh dGlvbiBkZXRhaWwuICAqLworIHN0YXRpYyBpbnQgYXV0b19sb2FkX3NjcmlwdHMgPSAxOworIAor LS8qIFBlci1wcm9ncmFtLXNwYWNlIGRhdGEga2V5LiAgKi8KKy1zdGF0aWMgY29uc3Qgc3RydWN0 IHByb2dyYW1fc3BhY2VfZGF0YSAqYXV0b19sb2FkX3BzcGFjZV9kYXRhOworLQorLXN0YXRpYyB2 b2lkCistYXV0b19sb2FkX3BzcGFjZV9kYXRhX2NsZWFudXAgKHN0cnVjdCBwcm9ncmFtX3NwYWNl ICpwc3BhY2UsIHZvaWQgKmFyZykKKy17CistICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZv ICppbmZvOworLQorLSAgaW5mbyA9IHByb2dyYW1fc3BhY2VfZGF0YSAocHNwYWNlLCBhdXRvX2xv YWRfcHNwYWNlX2RhdGEpOworLSAgaWYgKGluZm8gIT0gTlVMTCkKKy0gICAgeworLSAgICAgIGlm IChpbmZvLT5sb2FkZWRfc2NyaXB0cykKKy0JaHRhYl9kZWxldGUgKGluZm8tPmxvYWRlZF9zY3Jp cHRzKTsKKy0gICAgICB4ZnJlZSAoaW5mbyk7CistICAgIH0KKy19CistCistLyogR2V0IHRoZSBj dXJyZW50IGF1dG9sb2FkIGRhdGEuICBJZiBub25lIGlzIGZvdW5kIHlldCwgYWRkIGl0IG5vdy4g IFRoaXMKKy0gICBmdW5jdGlvbiBhbHdheXMgcmV0dXJucyBhIHZhbGlkIG9iamVjdC4gICovCist Cistc3RhdGljIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKgorLWdldF9hdXRvX2xvYWRf cHNwYWNlX2RhdGEgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UpCisteworLSAgc3RydWN0 IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqaW5mbzsKKy0KKy0gIGluZm8gPSBwcm9ncmFtX3NwYWNl X2RhdGEgKHBzcGFjZSwgYXV0b19sb2FkX3BzcGFjZV9kYXRhKTsKKy0gIGlmIChpbmZvID09IE5V TEwpCistICAgIHsKKy0gICAgICBpbmZvID0gWFpBTExPQyAoc3RydWN0IGF1dG9fbG9hZF9wc3Bh Y2VfaW5mbyk7CistICAgICAgc2V0X3Byb2dyYW1fc3BhY2VfZGF0YSAocHNwYWNlLCBhdXRvX2xv YWRfcHNwYWNlX2RhdGEsIGluZm8pOworLSAgICB9CistCistICByZXR1cm4gaW5mbzsKKy19Cist CistLyogSGFzaCBmdW5jdGlvbiBmb3IgdGhlIGxvYWRlZCBzY3JpcHQgaGFzaC4gICovCistCist c3RhdGljIGhhc2h2YWxfdAorLWhhc2hfbG9hZGVkX3NjcmlwdF9lbnRyeSAoY29uc3Qgdm9pZCAq ZGF0YSkKKy17CistICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqZSA9IGRhdGE7CistCist ICByZXR1cm4gaHRhYl9oYXNoX3N0cmluZyAoZS0+bmFtZSk7CistfQorLQorLS8qIEVxdWFsaXR5 IGZ1bmN0aW9uIGZvciB0aGUgbG9hZGVkIHNjcmlwdCBoYXNoLiAgKi8KKy0KKy1zdGF0aWMgaW50 CistZXFfbG9hZGVkX3NjcmlwdF9lbnRyeSAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikK Ky17CistICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqZWEgPSBhOworLSAgY29uc3Qgc3Ry dWN0IGxvYWRlZF9zY3JpcHQgKmViID0gYjsKKy0KKy0gIHJldHVybiBzdHJjbXAgKGVhLT5uYW1l LCBlYi0+bmFtZSkgPT0gMDsKKy19CistCistLyogSW5pdGlhbGl6ZSB0aGUgdGFibGUgdG8gdHJh Y2sgbG9hZGVkIHNjcmlwdHMuCistICAgRWFjaCBlbnRyeSBpcyBoYXNoZWQgYnkgdGhlIGZ1bGwg cGF0aCBuYW1lLiAgKi8KKy0KKy1zdGF0aWMgdm9pZAorLWluaXRfbG9hZGVkX3NjcmlwdHNfaW5m byAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm8pCisteworLSAgLyog Q2hvb3NlIDMxIGFzIHRoZSBzdGFydGluZyBzaXplIG9mIHRoZSBoYXNoIHRhYmxlLCBzb21ld2hh dCBhcmJpdHJhcmlseS4KKy0gICAgIFNwYWNlIGZvciBlYWNoIGVudHJ5IGlzIG9idGFpbmVkIHdp dGggb25lIG1hbGxvYyBzbyB3ZSBjYW4gZnJlZSB0aGVtCistICAgICBlYXNpbHkuICAqLworLQor LSAgcHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRzID0gaHRhYl9jcmVhdGUgKDMxLAorLQkJCQkJ ICAgICBoYXNoX2xvYWRlZF9zY3JpcHRfZW50cnksCistCQkJCQkgICAgIGVxX2xvYWRlZF9zY3Jp cHRfZW50cnksCistCQkJCQkgICAgIHhmcmVlKTsKKy0KKy0gIHBzcGFjZV9pbmZvLT5zY3JpcHRf bm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZCA9IEZBTFNFOworLX0KKy0KKy0vKiBXcmFwcGVyIG9u IGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGEgdG8gYWxzbyBhbGxvY2F0ZSB0aGUgaGFzaCB0YWJs ZQorLSAgIGZvciBsb2FkaW5nIHNjcmlwdHMuICAqLworLQorLXN0YXRpYyBzdHJ1Y3QgYXV0b19s b2FkX3BzcGFjZV9pbmZvICoKKy1nZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5n IChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlKQorLXsKKy0gIHN0cnVjdCBhdXRvX2xvYWRf cHNwYWNlX2luZm8gKmluZm87CistCistICBpbmZvID0gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0 YSAocHNwYWNlKTsKKy0gIGlmIChpbmZvLT5sb2FkZWRfc2NyaXB0cyA9PSBOVUxMKQorLSAgICBp bml0X2xvYWRlZF9zY3JpcHRzX2luZm8gKGluZm8pOworLQorLSAgcmV0dXJuIGluZm87CistfQor LQorLS8qIEFkZCBzY3JpcHQgTkFNRSB0byBoYXNoIHRhYmxlIEhUQUIuCistICAgRlVMTF9QQVRI IGlzIE5VTEwgaWYgdGhlIHNjcmlwdCB3YXNuJ3QgZm91bmQuCistICAgVGhlIHJlc3VsdCBpcyB0 cnVlIGlmIHRoZSBzY3JpcHQgd2FzIGFscmVhZHkgaW4gdGhlIGhhc2ggdGFibGUuICAqLworLQor LXN0YXRpYyBpbnQKKy1tYXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgaHRhYiAqaHRhYiwgY29uc3Qg Y2hhciAqbmFtZSwgY29uc3QgY2hhciAqZnVsbF9wYXRoKQorLXsKKy0gIHN0cnVjdCBsb2FkZWRf c2NyaXB0ICoqc2xvdCwgZW50cnk7CistICBpbnQgaW5faGFzaF90YWJsZTsKKy0KKy0gIGVudHJ5 Lm5hbWUgPSBuYW1lOworLSAgZW50cnkuZnVsbF9wYXRoID0gZnVsbF9wYXRoOworLSAgc2xvdCA9 IChzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqKikgaHRhYl9maW5kX3Nsb3QgKGh0YWIsICZlbnRyeSwg SU5TRVJUKTsKKy0gIGluX2hhc2hfdGFibGUgPSAqc2xvdCAhPSBOVUxMOworLQorLSAgLyogSWYg dGhpcyBzY3JpcHQgaXMgbm90IGluIHRoZSBoYXNoIHRhYmxlLCBhZGQgaXQuICAqLworLQorLSAg aWYgKCEgaW5faGFzaF90YWJsZSkKKy0gICAgeworLSAgICAgIGNoYXIgKnA7CistCistICAgICAg LyogQWxsb2NhdGUgYWxsIHNwYWNlIGluIG9uZSBjaHVuayBzbyBpdCdzIGVhc2llciB0byBmcmVl LiAgKi8KKy0gICAgICAqc2xvdCA9IHhtYWxsb2MgKHNpemVvZiAoKipzbG90KQorLQkJICAgICAg ICsgc3RybGVuIChuYW1lKSArIDEKKy0JCSAgICAgICArIChmdWxsX3BhdGggIT0gTlVMTCA/IChz dHJsZW4gKGZ1bGxfcGF0aCkgKyAxKSA6IDApKTsKKy0gICAgICBwID0gKChjaGFyKikgKnNsb3Qp ICsgc2l6ZW9mICgqKnNsb3QpOworLSAgICAgIHN0cmNweSAocCwgbmFtZSk7CistICAgICAgKCpz bG90KS0+bmFtZSA9IHA7CistICAgICAgaWYgKGZ1bGxfcGF0aCAhPSBOVUxMKQorLQl7CistCSAg cCArPSBzdHJsZW4gKHApICsgMTsKKy0JICBzdHJjcHkgKHAsIGZ1bGxfcGF0aCk7CistCSAgKCpz bG90KS0+ZnVsbF9wYXRoID0gcDsKKy0JfQorLSAgICAgIGVsc2UKKy0JKCpzbG90KS0+ZnVsbF9w YXRoID0gTlVMTDsKKy0gICAgfQorLQorLSAgcmV0dXJuIGluX2hhc2hfdGFibGU7CistfQorLQor IC8qIExvYWQgc2NyaXB0cyBzcGVjaWZpZWQgaW4gT0JKRklMRS4KKyAgICBTVEFSVCxFTkQgZGVs aW1pdCBhIGJ1ZmZlciBjb250YWluaW5nIGEgbGlzdCBvZiBudWwtdGVybWluYXRlZAorICAgIGZp bGUgbmFtZXMuCitAQCAtMzAxLDIwICsxMjksMTcgQEAgc291cmNlX3NlY3Rpb25fc2NyaXB0cyAo c3RydWN0IG9iamZpbGUgKgorIAorIAkgSVdCTiBpZiBjb21wbGFpbnRzLmMgd2VyZSBtb3JlIGdl bmVyYWwtcHVycG9zZS4gICovCisgCistICAgICAgaW5faGFzaF90YWJsZSA9IG1heWJlX2FkZF9z Y3JpcHQgKHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cywgZmlsZSwKKysgICAgICBpbl9oYXNo X3RhYmxlID0gbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGZpbGUsCisgCQkJCQlvcGVu ZWQgPyBmdWxsX3BhdGggOiBOVUxMKTsKKyAKKyAgICAgICBpZiAoISBvcGVuZWQpCisgCXsKKyAJ ICAvKiBXZSBkb24ndCB0aHJvdyBhbiBlcnJvciwgdGhlIHByb2dyYW0gaXMgc3RpbGwgZGVidWdn YWJsZS4gICovCistCSAgaWYgKCEgcHNwYWNlX2luZm8tPnNjcmlwdF9ub3RfZm91bmRfd2Fybmlu Z19wcmludGVkKQorLQkgICAgeworLQkgICAgICB3YXJuaW5nIChfKCJNaXNzaW5nIGF1dG8tbG9h ZCBzY3JpcHRzIHJlZmVyZW5jZWQgaW4gc2VjdGlvbiAlc1xuXAorKwkgIGlmIChzY3JpcHRfbm90 X2ZvdW5kX3dhcm5pbmdfcHJpbnQgKHBzcGFjZV9pbmZvKSkKKysJICAgIHdhcm5pbmcgKF8oIk1p c3NpbmcgYXV0by1sb2FkIHNjcmlwdHMgcmVmZXJlbmNlZCBpbiBzZWN0aW9uICVzXG5cCisgb2Yg ZmlsZSAlc1xuXAorIFVzZSBgaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyBbUkVHRVhQXScgdG8gbGlz dCB0aGVtLiIpLAorLQkJICAgICAgIEdEQlBZX0FVVE9fU0VDVElPTl9OQU1FLCBvYmpmaWxlLT5u YW1lKTsKKy0JICAgICAgcHNwYWNlX2luZm8tPnNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmlu dGVkID0gVFJVRTsKKy0JICAgIH0KKysJCSAgICAgR0RCUFlfQVVUT19TRUNUSU9OX05BTUUsIG9i amZpbGUtPm5hbWUpOworIAl9CisgICAgICAgZWxzZQorIAl7CitAQCAtMzU2LDExNiArMTgxLDYg QEAgYXV0b19sb2FkX3NlY3Rpb25fc2NyaXB0cyAoc3RydWN0IG9iamZpbAorICAgZG9fY2xlYW51 cHMgKGNsZWFudXBzKTsKKyB9CisgCistLyogQ2xlYXIgdGhlIHRhYmxlIG9mIGxvYWRlZCBzZWN0 aW9uIHNjcmlwdHMuICAqLworLQorLXN0YXRpYyB2b2lkCistY2xlYXJfc2VjdGlvbl9zY3JpcHRz ICh2b2lkKQorLXsKKy0gIHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UgPSBjdXJyZW50X3By b2dyYW1fc3BhY2U7CistICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICppbmZvOworLQor LSAgaW5mbyA9IHByb2dyYW1fc3BhY2VfZGF0YSAocHNwYWNlLCBhdXRvX2xvYWRfcHNwYWNlX2Rh dGEpOworLSAgaWYgKGluZm8gIT0gTlVMTCAmJiBpbmZvLT5sb2FkZWRfc2NyaXB0cyAhPSBOVUxM KQorLSAgICB7CistICAgICAgaHRhYl9kZWxldGUgKGluZm8tPmxvYWRlZF9zY3JpcHRzKTsKKy0g ICAgICBpbmZvLT5sb2FkZWRfc2NyaXB0cyA9IE5VTEw7CistICAgICAgaW5mby0+c2NyaXB0X25v dF9mb3VuZF93YXJuaW5nX3ByaW50ZWQgPSBGQUxTRTsKKy0gICAgfQorLX0KKy0KKy0vKiBMb29r IGZvciB0aGUgYXV0by1sb2FkIHNjcmlwdCBhc3NvY2lhdGVkIHdpdGggT0JKRklMRSBhbmQgbG9h ZCBpdC4gICovCistCistc3RhdGljIHZvaWQKKy1hdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBjb25zdCBjaGFyICpzdWZmaXgpCisteworLSAgY2hhciAq cmVhbG5hbWU7CistICBjaGFyICpmaWxlbmFtZSwgKmRlYnVnZmlsZTsKKy0gIGludCBsZW47Cist ICBGSUxFICppbnB1dDsKKy0gIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwczsKKy0KKy0gIHJlYWxu YW1lID0gZ2RiX3JlYWxwYXRoIChvYmpmaWxlLT5uYW1lKTsKKy0gIGxlbiA9IHN0cmxlbiAocmVh bG5hbWUpOworLSAgZmlsZW5hbWUgPSB4bWFsbG9jIChsZW4gKyBzdHJsZW4gKHN1ZmZpeCkgKyAx KTsKKy0gIG1lbWNweSAoZmlsZW5hbWUsIHJlYWxuYW1lLCBsZW4pOworLSAgc3RyY3B5IChmaWxl bmFtZSArIGxlbiwgc3VmZml4KTsKKy0KKy0gIGNsZWFudXBzID0gbWFrZV9jbGVhbnVwICh4ZnJl ZSwgZmlsZW5hbWUpOworLSAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgcmVhbG5hbWUpOworLQorLSAg aW5wdXQgPSBmb3BlbiAoZmlsZW5hbWUsICJyIik7CistICBkZWJ1Z2ZpbGUgPSBmaWxlbmFtZTsK Ky0KKy0gIGlmICghaW5wdXQgJiYgZGVidWdfZmlsZV9kaXJlY3RvcnkpCistICAgIHsKKy0gICAg ICAvKiBBbHNvIHRyeSB0aGUgc2FtZSBmaWxlIGluIHRoZSBzZXBhcmF0ZSBkZWJ1ZyBpbmZvIGRp cmVjdG9yeS4gICovCistICAgICAgZGVidWdmaWxlID0geG1hbGxvYyAoc3RybGVuIChmaWxlbmFt ZSkKKy0JCQkgICArIHN0cmxlbiAoZGVidWdfZmlsZV9kaXJlY3RvcnkpICsgMSk7CistICAgICAg c3RyY3B5IChkZWJ1Z2ZpbGUsIGRlYnVnX2ZpbGVfZGlyZWN0b3J5KTsKKy0gICAgICAvKiBGSUxF TkFNRSBpcyBhYnNvbHV0ZSwgc28gd2UgZG9uJ3QgbmVlZCBhICIvIiBoZXJlLiAgKi8KKy0gICAg ICBzdHJjYXQgKGRlYnVnZmlsZSwgZmlsZW5hbWUpOworLQorLSAgICAgIG1ha2VfY2xlYW51cCAo eGZyZWUsIGRlYnVnZmlsZSk7CistICAgICAgaW5wdXQgPSBmb3BlbiAoZGVidWdmaWxlLCAiciIp OworLSAgICB9CistCistICBpZiAoIWlucHV0ICYmIGdkYl9kYXRhZGlyKQorLSAgICB7CistICAg ICAgLyogQWxzbyB0cnkgdGhlIHNhbWUgZmlsZSBpbiBhIHN1YmRpcmVjdG9yeSBvZiBnZGIncyBk YXRhCistCSBkaXJlY3RvcnkuICAqLworLSAgICAgIGRlYnVnZmlsZSA9IHhtYWxsb2MgKHN0cmxl biAoZ2RiX2RhdGFkaXIpICsgc3RybGVuIChmaWxlbmFtZSkKKy0JCQkgICArIHN0cmxlbiAoIi9h dXRvLWxvYWQiKSArIDEpOworLSAgICAgIHN0cmNweSAoZGVidWdmaWxlLCBnZGJfZGF0YWRpcik7 CistICAgICAgc3RyY2F0IChkZWJ1Z2ZpbGUsICIvYXV0by1sb2FkIik7CistICAgICAgLyogRklM RU5BTUUgaXMgYWJzb2x1dGUsIHNvIHdlIGRvbid0IG5lZWQgYSAiLyIgaGVyZS4gICovCistICAg ICAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGZpbGVuYW1lKTsKKy0KKy0gICAgICBtYWtlX2NsZWFudXAg KHhmcmVlLCBkZWJ1Z2ZpbGUpOworLSAgICAgIGlucHV0ID0gZm9wZW4gKGRlYnVnZmlsZSwgInIi KTsKKy0gICAgfQorLQorLSAgaWYgKGlucHV0KQorLSAgICB7CistICAgICAgc3RydWN0IGF1dG9f bG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87CistCistICAgICAgbWFrZV9jbGVhbnVwX2Zj bG9zZSAoaW5wdXQpOworLQorLSAgICAgIC8qIEFkZCB0aGlzIHNjcmlwdCB0byB0aGUgaGFzaCB0 YWJsZSB0b28gc28gImluZm8gYXV0by1sb2FkLXNjcmlwdHMiCistCSBjYW4gcHJpbnQgaXQuICAq LworLSAgICAgIHBzcGFjZV9pbmZvID0KKy0JZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9mb3Jf bG9hZGluZyAoY3VycmVudF9wcm9ncmFtX3NwYWNlKTsKKy0gICAgICBtYXliZV9hZGRfc2NyaXB0 IChwc3BhY2VfaW5mby0+bG9hZGVkX3NjcmlwdHMsIGRlYnVnZmlsZSwgZGVidWdmaWxlKTsKKy0K Ky0gICAgICAvKiBUbyBwcmVzZXJ2ZSBleGlzdGluZyBiZWhhdmlvdXIgd2UgZG9uJ3QgY2hlY2sg Zm9yIHdoZXRoZXIgdGhlCistCSBzY3JpcHQgd2FzIGFscmVhZHkgaW4gdGhlIHRhYmxlLCBhbmQg YWx3YXlzIGxvYWQgaXQuCistCSBJdCdzIGhpZ2hseSB1bmxpa2VseSB0aGF0IHdlJ2QgZXZlciBs b2FkIGl0IHR3aWNlLAorLQkgYW5kIHRoZXNlIHNjcmlwdHMgYXJlIHJlcXVpcmVkIHRvIGJlIGlk ZW1wb3RlbnQgdW5kZXIgbXVsdGlwbGUKKy0JIGxvYWRzIGFueXdheS4gICovCistICAgICAgc291 cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUsIGlucHV0LCBkZWJ1Z2ZpbGUp OworLSAgICB9CistCistICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOworLX0KKy0KKy0vKiBUaGlz IGlzIGEgbmV3X29iamZpbGUgb2JzZXJ2ZXIgY2FsbGJhY2sgdG8gYXV0by1sb2FkIHNjcmlwdHMu CistCistICAgVHdvIGZsYXZvcnMgb2YgYXV0by1sb2FkZWQgc2NyaXB0cyBhcmUgc3VwcG9ydGVk LgorLSAgIDEpIGJhc2VkIG9uIHRoZSBwYXRoIHRvIHRoZSBvYmpmaWxlCistICAgMikgZnJvbSAu ZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbiAgKi8KKy0KKy1zdGF0aWMgdm9pZAorLWF1dG9fbG9h ZF9uZXdfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCisteworLSAgaWYgKCFvYmpm aWxlKQorLSAgICB7CistICAgICAgLyogT0JKRklMRSBpcyBOVUxMIHdoZW4gbG9hZGluZyBhIG5l dyAibWFpbiIgc3ltYm9sLWZpbGUuICAqLworLSAgICAgIGNsZWFyX3NlY3Rpb25fc2NyaXB0cyAo KTsKKy0gICAgICByZXR1cm47CistICAgIH0KKy0KKy0gIGxvYWRfYXV0b19zY3JpcHRzX2Zvcl9v YmpmaWxlIChvYmpmaWxlKTsKKy19CistCisgLyogTG9hZCBhbnkgYXV0by1sb2FkZWQgc2NyaXB0 cyBmb3IgT0JKRklMRS4gICovCisgCisgdm9pZAorQEAgLTQ3OCwxNDYgKzE5Myw5IEBAIGxvYWRf YXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2IKKyAgICAgfQorIH0KKyAMCistLyog Q29sbGVjdCBzY3JpcHRzIHRvIGJlIHByaW50ZWQgaW4gYSB2ZWMuICAqLworLQorLXR5cGVkZWYg c3RydWN0IGxvYWRlZF9zY3JpcHQgKmxvYWRlZF9zY3JpcHRfcHRyOworLURFRl9WRUNfUCAobG9h ZGVkX3NjcmlwdF9wdHIpOworLQorLS8qIFRyYXZlcnNhbCBmdW5jdGlvbiBmb3IgaHRhYl90cmF2 ZXJzZS4KKy0gICBDb2xsZWN0IHRoZSBlbnRyeSBpZiBpdCBtYXRjaGVzIHRoZSByZWdleHAuICAq LworLQorLXN0YXRpYyBpbnQKKy1jb2xsZWN0X21hdGNoaW5nX3NjcmlwdHMgKHZvaWQgKipzbG90 LCB2b2lkICppbmZvKQorLXsKKy0gIHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpzY3JpcHQgPSAqc2xv dDsKKy0gIFZFQyAobG9hZGVkX3NjcmlwdF9wdHIpICoqc2NyaXB0c19wdHIgPSBpbmZvOworLQor LSAgaWYgKHJlX2V4ZWMgKHNjcmlwdC0+bmFtZSkpCistICAgIFZFQ19zYWZlX3B1c2ggKGxvYWRl ZF9zY3JpcHRfcHRyLCAqc2NyaXB0c19wdHIsIHNjcmlwdCk7CistCistICByZXR1cm4gMTsKKy19 CistCistLyogUHJpbnQgU0NSSVBULiAgKi8KKy0KKy1zdGF0aWMgdm9pZAorLXByaW50X3Njcmlw dCAoc3RydWN0IGxvYWRlZF9zY3JpcHQgKnNjcmlwdCkKKy17CistICBzdHJ1Y3QgdWlfb3V0ICp1 aW91dCA9IGN1cnJlbnRfdWlvdXQ7CistICBzdHJ1Y3QgY2xlYW51cCAqY2hhaW47CistCistICBj aGFpbiA9IG1ha2VfY2xlYW51cF91aV9vdXRfdHVwbGVfYmVnaW5fZW5kICh1aW91dCwgTlVMTCk7 CistCistICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgImxvYWRlZCIsIHNjcmlwdC0+ZnVs bF9wYXRoID8gIlllcyIgOiAiTWlzc2luZyIpOworLSAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlv dXQsICJzY3JpcHQiLCBzY3JpcHQtPm5hbWUpOworLSAgdWlfb3V0X3RleHQgKHVpb3V0LCAiXG4i KTsKKy0KKy0gIC8qIElmIHRoZSBuYW1lIGlzbid0IHRoZSBmdWxsIHBhdGgsIHByaW50IGl0IHRv by4gICovCistICBpZiAoc2NyaXB0LT5mdWxsX3BhdGggIT0gTlVMTAorLSAgICAgICYmIHN0cmNt cCAoc2NyaXB0LT5uYW1lLCBzY3JpcHQtPmZ1bGxfcGF0aCkgIT0gMCkKKy0gICAgeworLSAgICAg IHVpX291dF90ZXh0ICh1aW91dCwgIlx0ZnVsbCBuYW1lOiAiKTsKKy0gICAgICB1aV9vdXRfZmll bGRfc3RyaW5nICh1aW91dCwgImZ1bGxfcGF0aCIsIHNjcmlwdC0+ZnVsbF9wYXRoKTsKKy0gICAg ICB1aV9vdXRfdGV4dCAodWlvdXQsICJcbiIpOworLSAgICB9CistCistICBkb19jbGVhbnVwcyAo Y2hhaW4pOworLX0KKy0KKy0vKiBIZWxwZXIgZm9yIGluZm9fYXV0b19sb2FkX3NjcmlwdHMgdG8g c29ydCB0aGUgc2NyaXB0cyBieSBuYW1lLiAgKi8KKy0KKy1zdGF0aWMgaW50Cistc29ydF9zY3Jp cHRzX2J5X25hbWUgKGNvbnN0IHZvaWQgKmFwLCBjb25zdCB2b2lkICpicCkKKy17CistICBjb25z dCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqYSA9ICooY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQg KiopIGFwOworLSAgY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmIgPSAqKGNvbnN0IHN0cnVj dCBsb2FkZWRfc2NyaXB0ICoqKSBicDsKKy0KKy0gIHJldHVybiBGSUxFTkFNRV9DTVAgKGEtPm5h bWUsIGItPm5hbWUpOworLX0KKy0KKy0vKiAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIgY29tbWFu ZC4gICovCistCistc3RhdGljIHZvaWQKKy1pbmZvX2F1dG9fbG9hZF9zY3JpcHRzIChjaGFyICpw YXR0ZXJuLCBpbnQgZnJvbV90dHkpCisteworLSAgc3RydWN0IHVpX291dCAqdWlvdXQgPSBjdXJy ZW50X3Vpb3V0OworLSAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87 CistICBzdHJ1Y3QgY2xlYW51cCAqc2NyaXB0X2NoYWluOworLSAgVkVDIChsb2FkZWRfc2NyaXB0 X3B0cikgKnNjcmlwdHM7CistICBpbnQgbnJfc2NyaXB0czsKKy0KKy0gIGRvbnRfcmVwZWF0ICgp OworLQorLSAgcHNwYWNlX2luZm8gPSBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhIChjdXJyZW50 X3Byb2dyYW1fc3BhY2UpOworLQorLSAgaWYgKHBhdHRlcm4gJiYgKnBhdHRlcm4pCistICAgIHsK Ky0gICAgICBjaGFyICpyZV9lcnIgPSByZV9jb21wIChwYXR0ZXJuKTsKKy0KKy0gICAgICBpZiAo cmVfZXJyKQorLQllcnJvciAoXygiSW52YWxpZCByZWdleHA6ICVzIiksIHJlX2Vycik7CistICAg IH0KKy0gIGVsc2UKKy0gICAgeworLSAgICAgIHJlX2NvbXAgKCIiKTsKKy0gICAgfQorLQorLSAg LyogV2UgbmVlZCB0byBrbm93IHRoZSBudW1iZXIgb2Ygcm93cyBiZWZvcmUgd2UgYnVpbGQgdGhl IHRhYmxlLgorLSAgICAgUGx1cyB3ZSB3YW50IHRvIHNvcnQgdGhlIHNjcmlwdHMgYnkgbmFtZS4K Ky0gICAgIFNvIGZpcnN0IHRyYXZlcnNlIHRoZSBoYXNoIHRhYmxlIGNvbGxlY3RpbmcgdGhlIG1h dGNoaW5nIHNjcmlwdHMuICAqLworLQorLSAgc2NyaXB0cyA9IFZFQ19hbGxvYyAobG9hZGVkX3Nj cmlwdF9wdHIsIDEwKTsKKy0gIHNjcmlwdF9jaGFpbiA9IG1ha2VfY2xlYW51cCAoVkVDX2NsZWFu dXAgKGxvYWRlZF9zY3JpcHRfcHRyKSwgJnNjcmlwdHMpOworLQorLSAgaWYgKHBzcGFjZV9pbmZv ICE9IE5VTEwgJiYgcHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRzICE9IE5VTEwpCistICAgIHsK Ky0gICAgICBpbW1lZGlhdGVfcXVpdCsrOworLSAgICAgIC8qIFBhc3MgYSBwb2ludGVyIHRvIHNj cmlwdHMgYXMgVkVDX3NhZmVfcHVzaCBjYW4gcmVhbGxvYyBzcGFjZS4gICovCistICAgICAgaHRh Yl90cmF2ZXJzZV9ub3Jlc2l6ZSAocHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRzLAorLQkJCSAg ICAgIGNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0cywgJnNjcmlwdHMpOworLSAgICAgIGltbWVkaWF0 ZV9xdWl0LS07CistICAgIH0KKy0KKy0gIG5yX3NjcmlwdHMgPSBWRUNfbGVuZ3RoIChsb2FkZWRf c2NyaXB0X3B0ciwgc2NyaXB0cyk7CistICBtYWtlX2NsZWFudXBfdWlfb3V0X3RhYmxlX2JlZ2lu X2VuZCAodWlvdXQsIDIsIG5yX3NjcmlwdHMsCistCQkJCSAgICAgICAiQXV0b0xvYWRlZFNjcmlw dHNUYWJsZSIpOworLQorLSAgdWlfb3V0X3RhYmxlX2hlYWRlciAodWlvdXQsIDcsIHVpX2xlZnQs ICJsb2FkZWQiLCAiTG9hZGVkIik7CistICB1aV9vdXRfdGFibGVfaGVhZGVyICh1aW91dCwgNzAs IHVpX2xlZnQsICJzY3JpcHQiLCAiU2NyaXB0Iik7CistICB1aV9vdXRfdGFibGVfYm9keSAodWlv dXQpOworLQorLSAgaWYgKG5yX3NjcmlwdHMgPiAwKQorLSAgICB7CistICAgICAgaW50IGk7Cist ICAgICAgbG9hZGVkX3NjcmlwdF9wdHIgc2NyaXB0OworLQorLSAgICAgIHFzb3J0IChWRUNfYWRk cmVzcyAobG9hZGVkX3NjcmlwdF9wdHIsIHNjcmlwdHMpLAorLQkgICAgIFZFQ19sZW5ndGggKGxv YWRlZF9zY3JpcHRfcHRyLCBzY3JpcHRzKSwKKy0JICAgICBzaXplb2YgKGxvYWRlZF9zY3JpcHRf cHRyKSwgc29ydF9zY3JpcHRzX2J5X25hbWUpOworLSAgICAgIGZvciAoaSA9IDA7IFZFQ19pdGVy YXRlIChsb2FkZWRfc2NyaXB0X3B0ciwgc2NyaXB0cywgaSwgc2NyaXB0KTsgKytpKQorLQlwcmlu dF9zY3JpcHQgKHNjcmlwdCk7CistICAgIH0KKy0KKy0gIGRvX2NsZWFudXBzIChzY3JpcHRfY2hh aW4pOworLQorLSAgaWYgKG5yX3NjcmlwdHMgPT0gMCkKKy0gICAgeworLSAgICAgIGlmIChwYXR0 ZXJuICYmICpwYXR0ZXJuKQorLQl1aV9vdXRfbWVzc2FnZSAodWlvdXQsIDAsICJObyBhdXRvLWxv YWQgc2NyaXB0cyBtYXRjaGluZyAlcy5cbiIsCistCQkJcGF0dGVybik7CistICAgICAgZWxzZQor LQl1aV9vdXRfbWVzc2FnZSAodWlvdXQsIDAsICJObyBhdXRvLWxvYWQgc2NyaXB0cy5cbiIpOwor LSAgICB9CistfQorLQwKKyB2b2lkCisgZ2RicHlfaW5pdGlhbGl6ZV9hdXRvX2xvYWQgKHZvaWQp CisgeworLSAgYXV0b19sb2FkX3BzcGFjZV9kYXRhCistICAgID0gcmVnaXN0ZXJfcHJvZ3JhbV9z cGFjZV9kYXRhX3dpdGhfY2xlYW51cCAoYXV0b19sb2FkX3BzcGFjZV9kYXRhX2NsZWFudXApOwor LQorLSAgb2JzZXJ2ZXJfYXR0YWNoX25ld19vYmpmaWxlIChhdXRvX2xvYWRfbmV3X29iamZpbGUp OworLQorICAgYWRkX3NldHNob3dfYm9vbGVhbl9jbWQgKCJhdXRvLWxvYWQtc2NyaXB0cyIsIGNs YXNzX3N1cHBvcnQsCisgCQkJICAgJmF1dG9fbG9hZF9zY3JpcHRzLCBfKCJcCisgU2V0IHRoZSBk ZWJ1Z2dlcidzIGJlaGF2aW91ciByZWdhcmRpbmcgYXV0by1sb2FkZWQgc2NyaXB0cy4iKSwgXygi XAorQEAgLTYyNywxMSArMjA1LDYgQEAgYW4gZXhlY3V0YWJsZSBvciBzaGFyZWQgbGlicmFyeS4i KSwKKyAJCQkgICBOVUxMLCBOVUxMLAorIAkJCSAgICZzZXRsaXN0LAorIAkJCSAgICZzaG93bGlz dCk7CistCistICBhZGRfaW5mbyAoImF1dG8tbG9hZC1zY3JpcHRzIiwKKy0JICAgIGluZm9fYXV0 b19sb2FkX3NjcmlwdHMsCistCSAgICBfKCJQcmludCB0aGUgbGlzdCBvZiBhdXRvbWF0aWNhbGx5 IGxvYWRlZCBzY3JpcHRzLlxuXAorLVVzYWdlOiBpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIFtSRUdF WFBdIikpOworIH0KKyAKKyAjZWxzZSAvKiAhIEhBVkVfUFlUSE9OICovCitJbmRleDogZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5dGhvbi5oCis9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcu NC41MC4yMDEyMDEyMC5vcmlnL2dkYi9weXRob24vcHl0aG9uLmgJMjAxMi0wNC0xOCAwMDoyNjox NC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0 aG9uLmgJMjAxMi0wNC0xOCAwMDoyNjoyOS4wNTQxMjAxOTkgKzAyMDAKK0BAIC0yNCw4ICsyNCw2 IEBACisgCisgc3RydWN0IGJyZWFrcG9pbnRfb2JqZWN0OworIAorLWV4dGVybiBpbnQgZ2RicHlf Z2xvYmFsX2F1dG9fbG9hZDsKKy0KKyBleHRlcm4gdm9pZCBmaW5pc2hfcHl0aG9uX2luaXRpYWxp emF0aW9uICh2b2lkKTsKKyAKKyB2b2lkIGV2YWxfcHl0aG9uX2Zyb21fY29udHJvbF9jb21tYW5k IChzdHJ1Y3QgY29tbWFuZF9saW5lICopOwoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0xMG9m MTIucGF0Y2ggYi9nZGItYXV0b2xvYWQtMTBvZjEyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLmM1OTY5ODIKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYXV0b2xvYWQt MTBvZjEyLnBhdGNoCkBAIC0wLDAgKzEsMTcwNCBAQAorW3BhdGNoIzQgNC84XSBzZXQgYXV0by1s b2FkICogbWFpbiBwYXJ0CitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAx Mi0wNC9tc2cwMDA4OC5odG1sCitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEy LTA0L21zZzAwMTEzLmh0bWwKKworIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDQvMTcgMTU6 NDk6MTEJMS4xNDExMgorIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDQvMTcgMTU6NTE6NDEJ MS4xNDExMworIyMgLTEsNSArMSwxMDEgQEAKKyAyMDEyLTA0LTE3ICBKYW4gS3JhdG9jaHZpbCAg PGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisgCisrCWF1dG8tbG9hZDogSW1wbGVtZW50YXRp b24uCisrCSogTkVXUzogTmV3IGRlc2NyaXB0aW9ucyBmb3IgImluZm8gYXV0by1sb2FkIiwKKysJ ImluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzIiwgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3Jp cHRzIiwKKysJImluZm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXQiIGFuZCAiaW5mbyBhdXRvLWxv YWQgbGlidGhyZWFkLWRiIi4KKysJRGVwcmVjYXRlICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIiwg InNldCBhdXRvLWxvYWQtc2NyaXB0cyBvbnxvZmYiCisrCWFuZCAic2hvdyBhdXRvLWxvYWQtc2Ny aXB0cyIuICBOZXcgZGVzY3JpcHRpb24gZm9yICJzZXQgYXV0by1sb2FkIiwKKysJInNob3cgYXV0 by1sb2FkIiwgInNldCBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiLAorKwkic2hvdyBhdXRvLWxvYWQg Z2RiLXNjcmlwdHMiLCAic2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIsCisrCSJzaG93IGF1 dG8tbG9hZCBweXRob24tc2NyaXB0cyIsICJzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQiLAor Kwkic2hvdyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIsICJzZXQgYXV0by1sb2FkIGxpYnRocmVh ZC1kYiIgYW5kCisrCSJzaG93IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIiLgorKwkqIGF1dG8tbG9h ZC5jOiBSZW1vdmUgaW5jbHVkZSBweXRob24vcHl0aG9uLWludGVybmFsLmguICBBZGQgaW5jbHVk ZXMKKysJZXhjZXB0aW9ucy5oLCBjbGkvY2xpLXNjcmlwdC5oLCBnZGJjbWQuaCwgY2xpL2NsaS1k ZWNvZGUuaCBhbmQKKysJY2xpL2NsaS1zZXRzaG93LmguCisrCShHREJfQVVUT19GSUxFX05BTUUs IHNvdXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpmaWxlKQorKwkoYXV0b19sb2FkX2dkYl9zY3JpcHRz LCBzaG93X2F1dG9fbG9hZF9nZGJfc2NyaXB0cyk6IE5ldy4KKysJKGdkYnB5X2dsb2JhbF9hdXRv X2xvYWQpOiBSZW5hbWUgdG8gLi4uCisrCShnbG9iYWxfYXV0b19sb2FkKTogLi4uIGhlcmUuCisr CShhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCwgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfcGF0aG5h bWUpCisrCShhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9sb2FkZWQsIHNob3dfYXV0b19sb2FkX2xv Y2FsX2dkYmluaXQpCisrCShzY3JpcHRfbGFuZ3VhZ2VfZ2RiLCBzb3VyY2VfZ2RiX3NjcmlwdF9m b3Jfb2JqZmlsZSk6IE5ldy4KKysJKHN0cnVjdCBsb2FkZWRfc2NyaXB0KTogTmV3IGZpZWxkIGxh bmd1YWdlLgorKwkoaGFzaF9sb2FkZWRfc2NyaXB0X2VudHJ5LCBlcV9sb2FkZWRfc2NyaXB0X2Vu dHJ5KTogQ2FsY3VsYXRlIGFsc28KKysJTEFOR1VBR0UuCisrCShtYXliZV9hZGRfc2NyaXB0KTog QWRkIHBhcmFtZXRlciBsYW5ndWFnZS4gIERyb3AgcmVkdW5kYW50CisrCWVudHJ5LmZ1bGxfcGF0 aCBpbml0aWFsaXphdGlvbi4gIEluaXRpYWxpemUgZW50cnkubGFuZ3VhZ2UgYW5kCisrCSgqc2xv dCktPmxhbmd1YWdlLgorKwkoYXV0b19sb2FkX29iamZpbGVfc2NyaXB0KTogQ2hhbmdlIHBhcmFt ZXRlciBzdWZmaXggdG8gbGFuZ3VhZ2UuCisrCVJlbW92ZSB0aGUgY2FsbCBvZiBtYXliZV9hZGRf c2NyaXB0LgorKwlDYWxsIGxhbmd1YWdlLT5zb3VyY2Vfc2NyaXB0X2Zvcl9vYmpmaWxlLgorKwko bG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUsIHN0cnVjdCBjb2xsZWN0X21hdGNoaW5nX3Nj cmlwdHNfZGF0YSk6CisrCU5ldy4KKysJKGNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0cyk6IEFkanVz dCBpdCBmb3IKKysJc3RydWN0IGNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0c19kYXRhLgorKwkoYXV0 b19sb2FkX2luZm9fc2NyaXB0c19wYXR0ZXJuX25sKTogTmV3IHZhcmlhYmxlLgorKwkoaW5mb19h dXRvX2xvYWRfc2NyaXB0cyk6IFJlbmFtZSB0byAuLi4KKysJKGF1dG9fbG9hZF9pbmZvX3Njcmlw dHMpOiAuLi4gaGVyZSwgYWRkIHBhcmFtZXRlciBsYW5ndWFnZS4gIEFkanVzdCBpdAorKwlmb3Ig c3RydWN0IGNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0c19kYXRhLgorKwkoaW5mb19hdXRvX2xvYWRf Z2RiX3NjcmlwdHMsIGluZm9fYXV0b19sb2FkX2xvY2FsX2dkYmluaXQpCisrCShzZXRfYXV0b19s b2FkX2NtZCwgYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCwgc2hvd19hdXRvX2xvYWRfY21kKQor KwkoYXV0b19sb2FkX3Nob3dfY21kbGlzdF9nZXQsIGluZm9fYXV0b19sb2FkX2NtZCkKKysJKGF1 dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0KTogTmV3LgorKwkoX2luaXRpYWxpemVfYXV0b19sb2Fk KTogTW92ZSBhZGRfaW5mbyBvZiAiYXV0by1sb2FkLXNjcmlwdHMiIHRvCisrCXB5dGhvbi9weS1h dXRvLWxvYWQuYy4gIE5ldyBpbnN0YWxsbWVudCBmb3IgInNldCBhdXRvLWxvYWQgZ2RiLXNjcmlw dHMiLAorKwkiaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiLCAic2V0IGF1dG8tbG9hZCBsb2Nh bC1nZGJpbml0IiBhbmQKKysJImluZm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXQiLgorKwkqIGF1 dG8tbG9hZC5oIChzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlKTogTmV3LgorKwkoZ2RicHlfZ2xvYmFs X2F1dG9fbG9hZCk6IFJlbmFtZSB0byAuLi4KKysJKGdsb2JhbF9hdXRvX2xvYWQpOiAuLi4gaGVy ZS4KKysJKGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0LCBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9w YXRobmFtZSkKKysJKGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X2xvYWRlZCk6IE5ldyBkZWNsYXJh dGlvbnMuCisrCShtYXliZV9hZGRfc2NyaXB0KTogTmV3IHBhcmFtZXRlciBsYW5ndWFnZS4KKysJ KGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCk6IENoYW5nZSBwYXJhbWV0ZXIgc3VmZml4IHRvIGxh bmd1YWdlLgorKwkobG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUsIGF1dG9fbG9hZF9pbmZv X3NjcmlwdHNfcGF0dGVybl9ubCkKKysJKGF1dG9fbG9hZF9pbmZvX3NjcmlwdHMsIGF1dG9fbG9h ZF9zZXRfY21kbGlzdF9nZXQpCisrCShhdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCwgYXV0b19s b2FkX2luZm9fY21kbGlzdF9nZXQpOiBOZXcKKysJZGVjbGFyYXRpb25zLgorKwkqIGxpbnV4LXRo cmVhZC1kYi5jOiBJbmNsdWRlIGF1dG8tbG9hZC5oIGFuZCBjdHlwZS5oLgorKwkoYXV0b19sb2Fk X3RocmVhZF9kYiwgc2hvd19hdXRvX2xvYWRfdGhyZWFkX2RiKTogTmV3LgorKwkoc3RydWN0IHRo cmVhZF9kYl9pbmZvKTogTmV3IGZpZWxkIGZpbGVuYW1lLgorKwkoZGVsZXRlX3RocmVhZF9kYl9p bmZvKTogQ2FsbCB4ZnJlZSBmb3IgRklMRU5BTUUuCisrCSh0cnlfdGhyZWFkX2RiX2xvYWQpOiBJ bml0aWFsaXplIEZJTEVOQU1FLgorKwkodHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21fcGRpciwgdHJ5 X3RocmVhZF9kYl9sb2FkX2Zyb21fZGlyKTogUmV0dXJuCisrCWlmICFBVVRPX0xPQURfVEhSRUFE X0RCLgorKwkoaW5mb19hdXRvX2xvYWRfbGlidGhyZWFkX2RiX2NvbXBhcmUsIGluZm9fYXV0b19s b2FkX2xpYnRocmVhZF9kYik6IE5ldy4KKysJKF9pbml0aWFsaXplX3RocmVhZF9kYik6IEluc3Rh bGwgYXV0b19sb2FkX3RocmVhZF9kYgorKwlhcyAic2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIi IGFuZCBpbnN0YWxsIGluZm9fYXV0b19sb2FkX2xpYnRocmVhZF9kYgorKwlhcyAiaW5mbyBhdXRv LWxvYWQgbGlidGhyZWFkLWRiIi4KKysJKiBtYWluLmMgKGNhcHR1cmVkX21haW4pOiBSZW5hbWUg Z2RicHlfZ2xvYmFsX2F1dG9fbG9hZCB0bworKwlnbG9iYWxfYXV0b19sb2FkLiAgSW5pdGlhbGl6 ZSBBVVRPX0xPQURfTE9DQUxfR0RCSU5JVF9QQVRITkFNRSBhbmQKKysJQVVUT19MT0FEX0xPQ0FM X0dEQklOSVRfTE9BREVELgorKwkocHJpbnRfZ2RiX2hlbHApOiBFeHRlbmQgdGhlIGhlbHAgZm9y ICdsb2NhbCBpbml0IGZpbGUnLgorKwkqIHB5dGhvbi9weS1hdXRvLWxvYWQuYzogUmVtb3ZlIGEg Y29tbWVudCBhYm91dCBnZGIgc2NyaXB0cyBleHRlbnNpb24uCisrCShHREJQWV9BVVRPX1NFQ1RJ T05fTkFNRSk6IEV4dGVuZCB0aGUgY29tbWVudCBpdCBpcyBQeXRob24gc3BlY2lmaWMuCisrCShh dXRvX2xvYWRfc2NyaXB0cyk6IFJlbmFtZSB0byAuLi4KKysJKGF1dG9fbG9hZF9weXRob25fc2Ny aXB0cyk6IC4uLiBoZXJlLCB1cGRhdGUgdGhlIGNvbW1lbnQuCisrCShnZGJweV9sb2FkX2F1dG9f c2NyaXB0X2Zvcl9vYmpmaWxlKTogTmV3IGRlY2xhcmF0aW9uLgorKwkoc2hvd19hdXRvX2xvYWRf cHl0aG9uX3NjcmlwdHMsIHNjcmlwdF9sYW5ndWFnZV9weXRob24pCisrCShnZGJweV9sb2FkX2F1 dG9fc2NyaXB0X2Zvcl9vYmpmaWxlKTogTmV3LgorKwkoc291cmNlX3NlY3Rpb25fc2NyaXB0cyk6 IFJlZmFjdG9yIHRoZSBjb2RlLgorKwkobG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUpOiBS ZW5hbWUgdG8gLi4uCisrCShnZGJweV9sb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSk6IC4u LiBoZXJlLCB1cGRhdGUgdGhlCisrCWF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCBjYWxsZXIsIGRy b3AgR0RCUFlfR0xPQkFMX0FVVE9fTE9BRCBjaGVja2luZy4KKysJKGluZm9fYXV0b19sb2FkX3B5 dGhvbl9zY3JpcHRzKTogTmV3LgorKwkoZ2RicHlfaW5pdGlhbGl6ZV9hdXRvX2xvYWQpOiBOZXcg dmFyaWFibGVzIGNtZCBhbmQgY21kX25hbWUuCisrCVJlbmFtZSAic2V0IGF1dG8tbG9hZC1zY3Jp cHRzIiB0byAic2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIuCisrCVJlZ2lzdGVyICJzZXQg YXV0by1sb2FkLXNjcmlwdHMiIGFzIGl0cyBkZXByZWNhdGVkIGFsaWFzLiAgUmVnaXN0ZXIKKysJ ImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIi4gIFJlZ2lzdGVyICJpbmZvIGF1dG8tbG9h ZC1zY3JpcHRzIiBhcworKwlpdHMgZGVwcmVjYXRlZCBhbGlhcy4KKysJKGxvYWRfYXV0b19zY3Jp cHRzX2Zvcl9vYmpmaWxlKTogUmVuYW1lIHRvIC4uLgorKwkoZ2RicHlfbG9hZF9hdXRvX3Njcmlw dHNfZm9yX29iamZpbGUpOiAuLi4gaGVyZS4KKysJKiBweXRob24vcHl0aG9uLmggKGxvYWRfYXV0 b19zY3JpcHRzX2Zvcl9vYmpmaWxlKTogUmVuYW1lIHRvIC4uLgorKwkoZ2RicHlfbG9hZF9hdXRv X3NjcmlwdHNfZm9yX29iamZpbGUpOiAuLi4gaGVyZS4KKysKKysyMDEyLTA0LTE3ICBKYW4gS3Jh dG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisrCisgCWF1dG8tbG9hZDogTW92 ZSBmaWxlcy4KKyAJKiBNYWtlZmlsZS5pbiAoU0ZJTEVTKTogQWRkIGF1dG8tbG9hZC5jLgorIAko SEZJTEVTX05PX1NSQ0RJUik6IEFkZCBhdXRvLWxvYWQuaC4KK0luZGV4OiBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9ORVdTCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmln L2dkYi9ORVdTCTIwMTItMDQtMTggMDA6NDI6NTEuMjI2NjgxMDY4ICswMjAwCisrKysgZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvTkVXUwkyMDEyLTA0LTE4IDAwOjQ5OjAyLjAzNTczNzY0NCArMDIw MAorQEAgLTI4LDYgKzI4LDQ1IEBACisgICBub3cgc2V0IGEgYnJlYWtwb2ludCBpbiBidWlsZC9n Y2MvZXhwci5jLCBidXQgbm90CisgICBidWlsZC9saWJjcHAvZXhwci5jLgorIAorKyogTmV3IGNv bW1hbmRzCisrCisrICAqKiAiaW5mbyBhdXRvLWxvYWQiIHNob3dzIHN0YXR1cyBvZiBhbGwga2lu ZHMgb2YgYXV0by1sb2FkZWQgZmlsZXMsCisrICAgICAiaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlw dHMiIHNob3dzIHN0YXR1cyBvZiBhdXRvLWxvYWRpbmcgR0RCIGNhbm5lZAorKyAgICAgc2VxdWVu Y2VzIG9mIGNvbW1hbmRzIGZpbGVzLCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiCisr ICAgICBzaG93cyBzdGF0dXMgb2YgYXV0by1sb2FkaW5nIFB5dGhvbiBzY3JpcHQgZmlsZXMsCisr ICAgICAiaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIgc2hvd3Mgc3RhdHVzIG9mIGxvYWRp bmcgaW5pdCBmaWxlCisrICAgICAoLmdkYmluaXQpIGZyb20gY3VycmVudCBkaXJlY3RvcnkgYW5k ICJpbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIiIHNob3dzCisrICAgICBzdGF0dXMgb2YgaW5m ZXJpb3Igc3BlY2lmaWMgdGhyZWFkIGRlYnVnZ2luZyBzaGFyZWQgbGlicmFyeSBsb2FkaW5nLgor KworKyAgKiogImluZm8gYXV0by1sb2FkLXNjcmlwdHMiLCAic2V0IGF1dG8tbG9hZC1zY3JpcHRz IG9ufG9mZiIKKysgICAgIGFuZCAic2hvdyBhdXRvLWxvYWQtc2NyaXB0cyIgY29tbWFuZHMgaGF2 ZSBiZWVuIGRlcHJlY2F0ZWQsIHVzZSB0aGVpcgorKyAgICAgImluZm8gYXV0by1sb2FkIHB5dGhv bi1zY3JpcHRzIiwgInNldCBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMgb258b2ZmIgorKyAgICAg YW5kICJzaG93IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIgY291bnRlcnBhcnRzIGluc3RlYWQu CisrCisrKiBOZXcgb3B0aW9ucworKworK3NldCBhdXRvLWxvYWQgb2ZmCisrICBEaXNhYmxlIGF1 dG8tbG9hZGluZyBnbG9iYWxseS4KKysKKytzaG93IGF1dG8tbG9hZAorKyAgU2hvdyBhdXRvLWxv YWRpbmcgc2V0dGluZyBvZiBhbGwga2luZHMgb2YgYXV0by1sb2FkZWQgZmlsZXMuCisrCisrc2V0 IGF1dG8tbG9hZCBnZGItc2NyaXB0cyBvbnxvZmYKKytzaG93IGF1dG8tbG9hZCBnZGItc2NyaXB0 cworKyAgQ29udHJvbCBhdXRvLWxvYWRpbmcgb2YgR0RCIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29t bWFuZHMgZmlsZXMuCisrCisrc2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyBvbnxvZmYKKytz aG93IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cworKyAgQ29udHJvbCBhdXRvLWxvYWRpbmcgb2Yg UHl0aG9uIHNjcmlwdCBmaWxlcy4KKysKKytzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQgb258 b2ZmCisrc2hvdyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdAorKyAgQ29udHJvbCBsb2FkaW5nIG9m IGluaXQgZmlsZSAoLmdkYmluaXQpIGZyb20gY3VycmVudCBkaXJlY3RvcnkuCisrCisrc2V0IGF1 dG8tbG9hZCBsaWJ0aHJlYWQtZGIgb258b2ZmCisrc2hvdyBhdXRvLWxvYWQgbGlidGhyZWFkLWRi CisrICBDb250cm9sIGF1dG8tbG9hZGluZyBvZiBpbmZlcmlvciBzcGVjaWZpYyB0aHJlYWQgZGVi dWdnaW5nIHNoYXJlZCBsaWJyYXJ5LgorKworICogTmV3IGNvbW1hbmQgbGluZSBvcHRpb25zCisg CisgLS1pbml0LWNvbW1hbmQ9RklMRSwgLWl4ICAgICAgICAgIExpa2UgLS1jb21tYW5kLCAteCBi dXQgZXhlY3V0ZSBpdAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5j Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9hdXRvLWxvYWQu YwkyMDEyLTA0LTE4IDAwOjQ0OjI2Ljk1MDQzNzUyMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL2F1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6NDY6NDcuNTU2MDc5NzgwICswMjAw CitAQCAtMjcsMTkgKzI3LDkyIEBACisgI2luY2x1ZGUgImNvbW1hbmQuaCIKKyAjaW5jbHVkZSAi b2JzZXJ2ZXIuaCIKKyAjaW5jbHVkZSAib2JqZmlsZXMuaCIKKy0jaW5jbHVkZSAicHl0aG9uL3B5 dGhvbi1pbnRlcm5hbC5oIgorKyNpbmNsdWRlICJleGNlcHRpb25zLmgiCisrI2luY2x1ZGUgImNs aS9jbGktc2NyaXB0LmgiCisrI2luY2x1ZGUgImdkYmNtZC5oIgorKyNpbmNsdWRlICJjbGkvY2xp LWRlY29kZS5oIgorKyNpbmNsdWRlICJjbGkvY2xpLXNldHNob3cuaCIKKysKKysvKiBUaGUgc3Vm Zml4IG9mIHBlci1vYmpmaWxlIHNjcmlwdHMgdG8gYXV0by1sb2FkIGFzIG5vbi1QeXRob24gY29t bWFuZCBmaWxlcy4KKysgICBFLmcuIFdoZW4gdGhlIHByb2dyYW0gbG9hZHMgbGliZm9vLnNvLCBs b29rIGZvciBsaWJmb28tZ2RiLmdkYi4gICovCisrI2RlZmluZSBHREJfQVVUT19GSUxFX05BTUUg Ii1nZGIuZ2RiIgorKworK3N0YXRpYyB2b2lkIHNvdXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpmaWxl IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwKKysJCQkJCSAgIGNvbnN0IGNo YXIgKmZpbGVuYW1lKTsKKysKKysvKiBVc2VyLXNldHRhYmxlIG9wdGlvbiB0byBlbmFibGUvZGlz YWJsZSBhdXRvLWxvYWRpbmcgb2YgR0RCX0FVVE9fRklMRV9OQU1FCisrICAgc2NyaXB0czoKKysg ICBzZXQgYXV0by1sb2FkIGdkYi1zY3JpcHRzIG9ufG9mZgorKyAgIFRoaXMgaXMgdHJ1ZSBpZiB3 ZSBzaG91bGQgYXV0by1sb2FkIGFzc29jaWF0ZWQgc2NyaXB0cyB3aGVuIGFuIG9iamZpbGUKKysg ICBpcyBvcGVuZWQsIGZhbHNlIG90aGVyd2lzZS4gICovCisrc3RhdGljIGludCBhdXRvX2xvYWRf Z2RiX3NjcmlwdHMgPSAxOworKworKy8qICJzaG93IiBjb21tYW5kIGZvciB0aGUgYXV0b19sb2Fk X2dkYl9zY3JpcHRzIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuICAqLworKworK3N0YXRpYyB2b2lk Cisrc2hvd19hdXRvX2xvYWRfZ2RiX3NjcmlwdHMgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQg ZnJvbV90dHksCisrCQkJICAgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjLCBjb25zdCBjaGFy ICp2YWx1ZSkKKyt7CisrICBmcHJpbnRmX2ZpbHRlcmVkIChmaWxlLCBfKCJBdXRvLWxvYWRpbmcg b2YgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyAiCisrCQkJICAgICJzY3JpcHRzIGlzICVz LlxuIiksCisrCQkgICAgdmFsdWUpOworK30KKyAKKyAvKiBJbnRlcm5hbC11c2UgZmxhZyB0byBl bmFibGUvZGlzYWJsZSBhdXRvLWxvYWRpbmcuCisgICAgVGhpcyBpcyB0cnVlIGlmIHdlIHNob3Vs ZCBhdXRvLWxvYWQgcHl0aG9uIGNvZGUgd2hlbiBhbiBvYmpmaWxlIGlzIG9wZW5lZCwKKyAgICBm YWxzZSBvdGhlcndpc2UuCisgCistICAgQm90aCBhdXRvX2xvYWRfc2NyaXB0cyAmJiBnZGJweV9n bG9iYWxfYXV0b19sb2FkIG11c3QgYmUgdHJ1ZSB0byBlbmFibGUKKysgICBCb3RoIGF1dG9fbG9h ZF9zY3JpcHRzICYmIGdsb2JhbF9hdXRvX2xvYWQgbXVzdCBiZSB0cnVlIHRvIGVuYWJsZQorICAg IGF1dG8tbG9hZGluZy4KKyAKKyAgICBUaGlzIGZsYWcgZXhpc3RzIHRvIGZhY2lsaXRhdGUgZGVm ZXJyaW5nIGF1dG8tbG9hZGluZyBkdXJpbmcgc3RhcnQtdXAKKyAgICB1bnRpbCBhZnRlciAuLy5n ZGJpbml0IGhhcyBiZWVuIHJlYWQ7IGl0IG1heSBhdWdtZW50IHRoZSBzZWFyY2ggZGlyZWN0b3Jp ZXMKKyAgICB1c2VkIHRvIGZpbmQgdGhlIHNjcmlwdHMuICAqLworLWludCBnZGJweV9nbG9iYWxf YXV0b19sb2FkID0gMTsKKytpbnQgZ2xvYmFsX2F1dG9fbG9hZCA9IDE7CisrCisrLyogQXV0by1s b2FkIC5nZGJpbml0IGZpbGUgZnJvbSB0aGUgY3VycmVudCBkaXJlY3Rvcnk/ICAqLworK2ludCBh dXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCA9IDE7CisrCisrLyogQWJzb2x1dGUgcGF0aG5hbWUgdG8g dGhlIGN1cnJlbnQgZGlyZWN0b3J5IC5nZGJpbml0LCBpZiBpdCBleGlzdHMuICAqLworK2NoYXIg KmF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1lID0gTlVMTDsKKysKKysvKiBCb29sZWFu IHZhbHVlIGlmIEFVVE9fTE9BRF9MT0NBTF9HREJJTklUX1BBVEhOQU1FIGhhcyBiZWVuIGxvYWRl ZC4gICovCisraW50IGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X2xvYWRlZCA9IDA7CisrCisrLyog InNob3ciIGNvbW1hbmQgZm9yIHRoZSBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCBjb25maWd1cmF0 aW9uIHZhcmlhYmxlLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3Nob3dfYXV0b19sb2FkX2xvY2Fs X2dkYmluaXQgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCisrCQkJICAgICAg c3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQorK3sKKysgIGZw cmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIkF1dG8tbG9hZGluZyBvZiAuZ2RiaW5pdCBzY3JpcHQg ZnJvbSBjdXJyZW50ICIKKysJCQkgICAgImRpcmVjdG9yeSBpcyAlcy5cbiIpLAorKwkJICAgIHZh bHVlKTsKKyt9CisrCisrLyogRGVmaW5pdGlvbiBvZiBzY3JpcHQgbGFuZ3VhZ2UgZm9yIEdEQiBj YW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzLiAgKi8KKysKKytzdGF0aWMgY29uc3Qgc3RydWN0 IHNjcmlwdF9sYW5ndWFnZSBzY3JpcHRfbGFuZ3VhZ2VfZ2RiCisrICA9IHsgR0RCX0FVVE9fRklM RV9OQU1FLCBzb3VyY2VfZ2RiX3NjcmlwdF9mb3Jfb2JqZmlsZSB9OworKworK3N0YXRpYyB2b2lk Cisrc291cmNlX2dkYl9zY3JpcHRfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl LCBGSUxFICpmaWxlLAorKwkJCSAgICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSkKKyt7CisrICBz dHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKKysgIHZvbGF0aWxlIHN0 cnVjdCBnZGJfZXhjZXB0aW9uIGU7CisrCisrICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhh c2ggdGFibGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyIKKysgICAgIGNhbiBw cmludCBpdC4gICovCisrICBwc3BhY2VfaW5mbyA9IGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFf Zm9yX2xvYWRpbmcgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7CisrICBtYXliZV9hZGRfc2NyaXB0 IChwc3BhY2VfaW5mbywgZmlsZW5hbWUsIGZpbGVuYW1lLCAmc2NyaXB0X2xhbmd1YWdlX2dkYik7 CisrCisrICBUUllfQ0FUQ0ggKGUsIFJFVFVSTl9NQVNLX0FMTCkKKysgICAgeworKyAgICAgIHNj cmlwdF9mcm9tX2ZpbGUgKGZpbGUsIGZpbGVuYW1lKTsKKysgICAgfQorKyAgZXhjZXB0aW9uX3By aW50IChnZGJfc3RkZXJyLCBlKTsKKyt9CisgCisgLyogRm9yIHNjcmlwdHMgc3BlY2lmaWVkIGlu IC5kZWJ1Z19nZGJfc2NyaXB0cywgbXVsdGlwbGUgb2JqZmlsZXMgbWF5IGxvYWQKKyAgICB0aGUg c2FtZSBzY3JpcHQuICBUaGVyZSdzIG5vIHBvaW50IGluIGxvYWRpbmcgdGhlIHNjcmlwdCBtdWx0 aXBsZSB0aW1lcywKK0BAIC02Miw5ICsxMzUsMTIgQEAgc3RydWN0IGxvYWRlZF9zY3JpcHQKKyB7 CisgICAvKiBOYW1lIGFzIHByb3ZpZGVkIGJ5IHRoZSBvYmpmaWxlLiAgKi8KKyAgIGNvbnN0IGNo YXIgKm5hbWU7CisrCisgICAvKiBGdWxsIHBhdGggbmFtZSBvciBOVUxMIGlmIHNjcmlwdCB3YXNu J3QgZm91bmQgKG9yIHdhcyBvdGhlcndpc2UKKyAgICAgIGluYWNjZXNzaWJsZSkuICAqLworICAg Y29uc3QgY2hhciAqZnVsbF9wYXRoOworKworKyAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFn ZSAqbGFuZ3VhZ2U7CisgfTsKKyAKKyAvKiBQZXItcHJvZ3JhbS1zcGFjZSBkYXRhIGtleS4gICov CitAQCAtMTA5LDcgKzE4NSw3IEBAIGhhc2hfbG9hZGVkX3NjcmlwdF9lbnRyeSAoY29uc3Qgdm9p ZCAqZGEKKyB7CisgICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqZSA9IGRhdGE7CisgCist ICByZXR1cm4gaHRhYl9oYXNoX3N0cmluZyAoZS0+bmFtZSk7CisrICByZXR1cm4gaHRhYl9oYXNo X3N0cmluZyAoZS0+bmFtZSkgXiBodGFiX2hhc2hfcG9pbnRlciAoZS0+bGFuZ3VhZ2UpOworIH0K KyAKKyAvKiBFcXVhbGl0eSBmdW5jdGlvbiBmb3IgdGhlIGxvYWRlZCBzY3JpcHQgaGFzaC4gICov CitAQCAtMTIwLDcgKzE5Niw3IEBAIGVxX2xvYWRlZF9zY3JpcHRfZW50cnkgKGNvbnN0IHZvaWQg KmEsIGMKKyAgIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICplYSA9IGE7CisgICBjb25zdCBz dHJ1Y3QgbG9hZGVkX3NjcmlwdCAqZWIgPSBiOworIAorLSAgcmV0dXJuIHN0cmNtcCAoZWEtPm5h bWUsIGViLT5uYW1lKSA9PSAwOworKyAgcmV0dXJuIHN0cmNtcCAoZWEtPm5hbWUsIGViLT5uYW1l KSA9PSAwICYmIGVhLT5sYW5ndWFnZSA9PSBlYi0+bGFuZ3VhZ2U7CisgfQorIAorIC8qIEluaXRp YWxpemUgdGhlIHRhYmxlIHRvIHRyYWNrIGxvYWRlZCBzY3JpcHRzLgorQEAgLTE1NiwyMCArMjMy LDIxIEBAIGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKHMKKyAgIHJldHVy biBpbmZvOworIH0KKyAKKy0vKiBBZGQgc2NyaXB0IE5BTUUgdG8gaGFzaCB0YWJsZSBvZiBQU1BB Q0VfSU5GTy4KKy0gICBGVUxMX1BBVEggaXMgTlVMTCBpZiB0aGUgc2NyaXB0IHdhc24ndCBmb3Vu ZC4KKy0gICBUaGUgcmVzdWx0IGlzIHRydWUgaWYgdGhlIHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0 aGUgaGFzaCB0YWJsZS4gICovCisrLyogQWRkIHNjcmlwdCBOQU1FIGluIExBTkdVQUdFIHRvIGhh c2ggdGFibGUgb2YgUFNQQUNFX0lORk8uCisrICAgRlVMTF9QQVRIIGlzIE5VTEwgaWYgdGhlIHNj cmlwdCB3YXNuJ3QgZm91bmQuICBUaGUgcmVzdWx0IGlzCisrICAgdHJ1ZSBpZiB0aGUgc2NyaXB0 IHdhcyBhbHJlYWR5IGluIHRoZSBoYXNoIHRhYmxlLiAgKi8KKyAKKyBpbnQKKy1tYXliZV9hZGRf c2NyaXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbywgY29uc3Qg Y2hhciAqbmFtZSwKKy0JCSAgY29uc3QgY2hhciAqZnVsbF9wYXRoKQorK21heWJlX2FkZF9zY3Jp cHQgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvLAorKwkJICBjb25z dCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpmdWxsX3BhdGgsCisrCQkgIGNvbnN0IHN0cnVjdCBz Y3JpcHRfbGFuZ3VhZ2UgKmxhbmd1YWdlKQorIHsKKyAgIHN0cnVjdCBodGFiICpodGFiID0gcHNw YWNlX2luZm8tPmxvYWRlZF9zY3JpcHRzOworICAgc3RydWN0IGxvYWRlZF9zY3JpcHQgKipzbG90 LCBlbnRyeTsKKyAgIGludCBpbl9oYXNoX3RhYmxlOworIAorICAgZW50cnkubmFtZSA9IG5hbWU7 CistICBlbnRyeS5mdWxsX3BhdGggPSBmdWxsX3BhdGg7CisrICBlbnRyeS5sYW5ndWFnZSA9IGxh bmd1YWdlOworICAgc2xvdCA9IChzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqKikgaHRhYl9maW5kX3Ns b3QgKGh0YWIsICZlbnRyeSwgSU5TRVJUKTsKKyAgIGluX2hhc2hfdGFibGUgPSAqc2xvdCAhPSBO VUxMOworIAorQEAgLTE5NCw2ICsyNzEsNyBAQCBtYXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0 b19sb2FkX3BzcGFjCisgCX0KKyAgICAgICBlbHNlCisgCSgqc2xvdCktPmZ1bGxfcGF0aCA9IE5V TEw7CisrICAgICAgKCpzbG90KS0+bGFuZ3VhZ2UgPSBsYW5ndWFnZTsKKyAgICAgfQorIAorICAg cmV0dXJuIGluX2hhc2hfdGFibGU7CitAQCAtMjE2LDEwICsyOTQsMTIgQEAgY2xlYXJfc2VjdGlv bl9zY3JpcHRzICh2b2lkKQorICAgICB9CisgfQorIAorLS8qIExvb2sgZm9yIHRoZSBhdXRvLWxv YWQgc2NyaXB0IGFzc29jaWF0ZWQgd2l0aCBPQkpGSUxFIGFuZCBsb2FkIGl0LiAgKi8KKysvKiBM b29rIGZvciB0aGUgYXV0by1sb2FkIHNjcmlwdCBpbiBMQU5HVUFHRSBhc3NvY2lhdGVkIHdpdGgg T0JKRklMRSBhbmQgbG9hZAorKyAgIGl0LiAgKi8KKyAKKyB2b2lkCistYXV0b19sb2FkX29iamZp bGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqc3VmZml4KQor K2F1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisrCQkJ ICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZSkKKyB7CisgICBjaGFyICpy ZWFsbmFtZTsKKyAgIGNoYXIgKmZpbGVuYW1lLCAqZGVidWdmaWxlOworQEAgLTIyOSw5ICszMDks OSBAQCBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxlCisgCisgICByZWFs bmFtZSA9IGdkYl9yZWFscGF0aCAob2JqZmlsZS0+bmFtZSk7CisgICBsZW4gPSBzdHJsZW4gKHJl YWxuYW1lKTsKKy0gIGZpbGVuYW1lID0geG1hbGxvYyAobGVuICsgc3RybGVuIChzdWZmaXgpICsg MSk7CisrICBmaWxlbmFtZSA9IHhtYWxsb2MgKGxlbiArIHN0cmxlbiAobGFuZ3VhZ2UtPnN1ZmZp eCkgKyAxKTsKKyAgIG1lbWNweSAoZmlsZW5hbWUsIHJlYWxuYW1lLCBsZW4pOworLSAgc3RyY3B5 IChmaWxlbmFtZSArIGxlbiwgc3VmZml4KTsKKysgIHN0cmNweSAoZmlsZW5hbWUgKyBsZW4sIGxh bmd1YWdlLT5zdWZmaXgpOworIAorICAgY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBm aWxlbmFtZSk7CisgICBtYWtlX2NsZWFudXAgKHhmcmVlLCByZWFsbmFtZSk7CitAQCAtMjY5LDI3 ICszNDksMzMgQEAgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZQorIAor ICAgaWYgKGlucHV0KQorICAgICB7CistICAgICAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5m byAqcHNwYWNlX2luZm87CistCisgICAgICAgbWFrZV9jbGVhbnVwX2ZjbG9zZSAoaW5wdXQpOwor IAorLSAgICAgIC8qIEFkZCB0aGlzIHNjcmlwdCB0byB0aGUgaGFzaCB0YWJsZSB0b28gc28gImlu Zm8gYXV0by1sb2FkLXNjcmlwdHMiCistCSBjYW4gcHJpbnQgaXQuICAqLworLSAgICAgIHBzcGFj ZV9pbmZvID0KKy0JZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGluZyAoY3VycmVu dF9wcm9ncmFtX3NwYWNlKTsKKy0gICAgICBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5mbywg ZGVidWdmaWxlLCBkZWJ1Z2ZpbGUpOworLQorICAgICAgIC8qIFRvIHByZXNlcnZlIGV4aXN0aW5n IGJlaGF2aW91ciB3ZSBkb24ndCBjaGVjayBmb3Igd2hldGhlciB0aGUKKyAJIHNjcmlwdCB3YXMg YWxyZWFkeSBpbiB0aGUgdGFibGUsIGFuZCBhbHdheXMgbG9hZCBpdC4KKyAJIEl0J3MgaGlnaGx5 IHVubGlrZWx5IHRoYXQgd2UnZCBldmVyIGxvYWQgaXQgdHdpY2UsCisgCSBhbmQgdGhlc2Ugc2Ny aXB0cyBhcmUgcmVxdWlyZWQgdG8gYmUgaWRlbXBvdGVudCB1bmRlciBtdWx0aXBsZQorIAkgbG9h ZHMgYW55d2F5LiAgKi8KKy0gICAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAo b2JqZmlsZSwgaW5wdXQsIGRlYnVnZmlsZSk7CisrICAgICAgbGFuZ3VhZ2UtPnNvdXJjZV9zY3Jp cHRfZm9yX29iamZpbGUgKG9iamZpbGUsIGlucHV0LCBkZWJ1Z2ZpbGUpOworICAgICB9CisgCisg ICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOworIH0KKyAKKysvKiBMb2FkIGFueSBhdXRvLWxvYWRl ZCBzY3JpcHRzIGZvciBPQkpGSUxFLiAgKi8KKysKKyt2b2lkCisrbG9hZF9hdXRvX3NjcmlwdHNf Zm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorK3sKKysgIGlmICghZ2xvYmFs X2F1dG9fbG9hZCkKKysgICAgcmV0dXJuOworKworKyAgaWYgKGF1dG9fbG9hZF9nZGJfc2NyaXB0 cykKKysgICAgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChvYmpmaWxlLCAmc2NyaXB0X2xhbmd1 YWdlX2dkYik7CisrCisrICBnZGJweV9sb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAob2Jq ZmlsZSk7CisrfQorKworIC8qIFRoaXMgaXMgYSBuZXdfb2JqZmlsZSBvYnNlcnZlciBjYWxsYmFj ayB0byBhdXRvLWxvYWQgc2NyaXB0cy4KKyAKKyAgICBUd28gZmxhdm9ycyBvZiBhdXRvLWxvYWRl ZCBzY3JpcHRzIGFyZSBzdXBwb3J0ZWQuCitAQCAtMzE0LDYgKzQwMCwxMyBAQCBhdXRvX2xvYWRf bmV3X29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvCisgdHlwZWRlZiBzdHJ1Y3QgbG9hZGVkX3Nj cmlwdCAqbG9hZGVkX3NjcmlwdF9wdHI7CisgREVGX1ZFQ19QIChsb2FkZWRfc2NyaXB0X3B0cik7 CisgCisrc3RydWN0IGNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0c19kYXRhCisreworKyAgVkVDIChs b2FkZWRfc2NyaXB0X3B0cikgKipzY3JpcHRzX3A7CisrCisrICBjb25zdCBzdHJ1Y3Qgc2NyaXB0 X2xhbmd1YWdlICpsYW5ndWFnZTsKKyt9OworKworIC8qIFRyYXZlcnNhbCBmdW5jdGlvbiBmb3Ig aHRhYl90cmF2ZXJzZS4KKyAgICBDb2xsZWN0IHRoZSBlbnRyeSBpZiBpdCBtYXRjaGVzIHRoZSBy ZWdleHAuICAqLworIAorQEAgLTMyMSwxMCArNDE0LDEwIEBAIHN0YXRpYyBpbnQKKyBjb2xsZWN0 X21hdGNoaW5nX3NjcmlwdHMgKHZvaWQgKipzbG90LCB2b2lkICppbmZvKQorIHsKKyAgIHN0cnVj dCBsb2FkZWRfc2NyaXB0ICpzY3JpcHQgPSAqc2xvdDsKKy0gIFZFQyAobG9hZGVkX3NjcmlwdF9w dHIpICoqc2NyaXB0c19wdHIgPSBpbmZvOworKyAgc3RydWN0IGNvbGxlY3RfbWF0Y2hpbmdfc2Ny aXB0c19kYXRhICpkYXRhID0gaW5mbzsKKyAKKy0gIGlmIChyZV9leGVjIChzY3JpcHQtPm5hbWUp KQorLSAgICBWRUNfc2FmZV9wdXNoIChsb2FkZWRfc2NyaXB0X3B0ciwgKnNjcmlwdHNfcHRyLCBz Y3JpcHQpOworKyAgaWYgKHNjcmlwdC0+bGFuZ3VhZ2UgPT0gZGF0YS0+bGFuZ3VhZ2UgJiYgcmVf ZXhlYyAoc2NyaXB0LT5uYW1lKSkKKysgICAgVkVDX3NhZmVfcHVzaCAobG9hZGVkX3NjcmlwdF9w dHIsICpkYXRhLT5zY3JpcHRzX3AsIHNjcmlwdCk7CisgCisgICByZXR1cm4gMTsKKyB9CitAQCAt MzY2LDEwICs0NTksMTggQEAgc29ydF9zY3JpcHRzX2J5X25hbWUgKGNvbnN0IHZvaWQgKmFwLCBj bworICAgcmV0dXJuIEZJTEVOQU1FX0NNUCAoYS0+bmFtZSwgYi0+bmFtZSk7CisgfQorIAorLS8q ICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIiBjb21tYW5kLiAgKi8KKysvKiBTcGVjaWFsIGludGVy bmFsIEdEQiB2YWx1ZSBvZiBhdXRvX2xvYWRfaW5mb19zY3JpcHRzJ3MgUEFUVEVSTiBpZGVudGlm eQorKyAgIHRoZSAiaW5mbyBhdXRvLWxvYWQgWFhYIiBjb21tYW5kIGhhcyBiZWVuIGV4ZWN1dGVk IHRocm91Z2ggdGhlIGdlbmVyYWwKKysgICAiaW5mbyBhdXRvLWxvYWQiIGludm9jYXRpb24uICBF eHRyYSBuZXdsaW5lIHdpbGwgYmUgcHJpbnRlZCBpZiBuZWVkZWQuICAqLworK2NoYXIgYXV0b19s b2FkX2luZm9fc2NyaXB0c19wYXR0ZXJuX25sW10gPSAiIjsKKysKKysvKiBJbXBsZW1lbnRhdGlv biBmb3IgImluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzIgorKyAgIChhbmQgImluZm8gYXV0by1s b2FkIHB5dGhvbi1zY3JpcHRzIikuICBMaXN0IHNjcmlwdHMgaW4gTEFOR1VBR0UgbWF0Y2hpbmcK KysgICBQQVRURVJOLiAgRlJPTV9UVFkgaXMgdGhlIHVzdWFsIEdEQiBib29sZWFuIGZvciB1c2Vy IGludGVyYWN0aXZpdHkuICAqLworIAorLXN0YXRpYyB2b2lkCistaW5mb19hdXRvX2xvYWRfc2Ny aXB0cyAoY2hhciAqcGF0dGVybiwgaW50IGZyb21fdHR5KQorK3ZvaWQKKythdXRvX2xvYWRfaW5m b19zY3JpcHRzIChjaGFyICpwYXR0ZXJuLCBpbnQgZnJvbV90dHksCisrCQkJY29uc3Qgc3RydWN0 IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2UpCisgeworICAgc3RydWN0IHVpX291dCAqdWlvdXQg PSBjdXJyZW50X3Vpb3V0OworICAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNl X2luZm87CitAQCAtNDAyLDE0ICs1MDMsMjIgQEAgaW5mb19hdXRvX2xvYWRfc2NyaXB0cyAoY2hh ciAqcGF0dGVybiwgaQorIAorICAgaWYgKHBzcGFjZV9pbmZvICE9IE5VTEwgJiYgcHNwYWNlX2lu Zm8tPmxvYWRlZF9zY3JpcHRzICE9IE5VTEwpCisgICAgIHsKKysgICAgICBzdHJ1Y3QgY29sbGVj dF9tYXRjaGluZ19zY3JpcHRzX2RhdGEgZGF0YSA9IHsgJnNjcmlwdHMsIGxhbmd1YWdlIH07Cisr CisgICAgICAgaW1tZWRpYXRlX3F1aXQrKzsKKyAgICAgICAvKiBQYXNzIGEgcG9pbnRlciB0byBz Y3JpcHRzIGFzIFZFQ19zYWZlX3B1c2ggY2FuIHJlYWxsb2Mgc3BhY2UuICAqLworICAgICAgIGh0 YWJfdHJhdmVyc2Vfbm9yZXNpemUgKHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cywKKy0JCQkg ICAgICBjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHMsICZzY3JpcHRzKTsKKysJCQkgICAgICBjb2xs ZWN0X21hdGNoaW5nX3NjcmlwdHMsICZkYXRhKTsKKyAgICAgICBpbW1lZGlhdGVfcXVpdC0tOwor ICAgICB9CisgCisgICBucl9zY3JpcHRzID0gVkVDX2xlbmd0aCAobG9hZGVkX3NjcmlwdF9wdHIs IHNjcmlwdHMpOworKworKyAgLyogVGFibGUgaGVhZGVyIHNoaWZ0ZWQgcmlnaHQgYnkgcHJlY2Vk aW5nICJnZGItc2NyaXB0czogICIgd291bGQgbm90IG1hdGNoCisrICAgICBpdHMgY29sdW1ucy4g ICovCisrICBpZiAobnJfc2NyaXB0cyA+IDAgJiYgcGF0dGVybiA9PSBhdXRvX2xvYWRfaW5mb19z Y3JpcHRzX3BhdHRlcm5fbmwpCisrICAgIHVpX291dF90ZXh0ICh1aW91dCwgIlxuIik7CisrCisg ICBtYWtlX2NsZWFudXBfdWlfb3V0X3RhYmxlX2JlZ2luX2VuZCAodWlvdXQsIDIsIG5yX3Njcmlw dHMsCisgCQkJCSAgICAgICAiQXV0b0xvYWRlZFNjcmlwdHNUYWJsZSIpOworIAorQEAgLTQ0MSw2 ICs1NTAsMjkgQEAgaW5mb19hdXRvX2xvYWRfc2NyaXB0cyAoY2hhciAqcGF0dGVybiwgaQorICAg ICB9CisgfQorIAorKy8qIFdyYXBwZXIgZm9yICJpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyIu ICAqLworKworK3N0YXRpYyB2b2lkCisraW5mb19hdXRvX2xvYWRfZ2RiX3NjcmlwdHMgKGNoYXIg KnBhdHRlcm4sIGludCBmcm9tX3R0eSkKKyt7CisrICBhdXRvX2xvYWRfaW5mb19zY3JpcHRzIChw YXR0ZXJuLCBmcm9tX3R0eSwgJnNjcmlwdF9sYW5ndWFnZV9nZGIpOworK30KKysKKysvKiBJbXBs ZW1lbnQgJ2luZm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXQnLiAgKi8KKysKKytzdGF0aWMgdm9p ZAorK2luZm9fYXV0b19sb2FkX2xvY2FsX2dkYmluaXQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0 eSkKKyt7CisrICBpZiAoYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfcGF0aG5hbWUgPT0gTlVMTCkK KysgICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJMb2NhbCAuZ2RiaW5pdCBmaWxlIHdhcyBub3QgZm91 bmQuXG4iKSk7CisrICBlbHNlIGlmIChhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9sb2FkZWQpCisr ICAgIHByaW50Zl9maWx0ZXJlZCAoXygiTG9jYWwgLmdkYmluaXQgZmlsZSBcIiVzXCIgaGFzIGJl ZW4gbG9hZGVkLlxuIiksCisrCQkgICAgIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1l KTsKKysgIGVsc2UKKysgICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJMb2NhbCAuZ2RiaW5pdCBmaWxl IFwiJXNcIiBoYXMgbm90IGJlZW4gbG9hZGVkLlxuIiksCisrCQkgICAgIGF1dG9fbG9hZF9sb2Nh bF9nZGJpbml0X3BhdGhuYW1lKTsKKyt9CisrCisgLyogUmV0dXJuIG5vbi16ZXJvIGlmIFNDUklQ VF9OT1RfRk9VTkRfV0FSTklOR19QUklOVEVEIG9mIFBTUEFDRV9JTkZPIHdhcyB1bnNldAorICAg IGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uICBBbHdheXMgc2V0IFNDUklQVF9OT1RfRk9V TkRfV0FSTklOR19QUklOVEVECisgICAgb2YgUFNQQUNFX0lORk8uICAqLworQEAgLTQ1NSw2ICs1 ODcsMTMyIEBAIHNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludCAoc3RydWN0IGEKKyAgIHJl dHVybiByZXR2YWw7CisgfQorIAorKy8qIFRoZSBvbmx5IHZhbGlkICJzZXQgYXV0by1sb2FkIiBh cmd1bWVudCBpcyBvZmZ8MHxub3xkaXNhYmxlLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3NldF9h dXRvX2xvYWRfY21kIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCisreworKyAgc3RydWN0IGNt ZF9saXN0X2VsZW1lbnQgKmxpc3Q7CisrICBzaXplX3QgbGVuZ3RoOworKworKyAgLyogU2VlIHBh cnNlX2JpbmFyeV9vcGVyYXRpb24gaW4gdXNlIGJ5IHRoZSBzdWItY29tbWFuZHMuICAqLworKwor KyAgbGVuZ3RoID0gYXJncyA/IHN0cmxlbiAoYXJncykgOiAwOworKworKyAgd2hpbGUgKGxlbmd0 aCA+IDAgJiYgKGFyZ3NbbGVuZ3RoIC0gMV0gPT0gJyAnIHx8IGFyZ3NbbGVuZ3RoIC0gMV0gPT0g J1x0JykpCisrICAgIGxlbmd0aC0tOworKworKyAgaWYgKGxlbmd0aCA9PSAwIHx8IChzdHJuY21w IChhcmdzLCAib2ZmIiwgbGVuZ3RoKSAhPSAwCisrCQkgICAgICAmJiBzdHJuY21wIChhcmdzLCAi MCIsIGxlbmd0aCkgIT0gMAorKwkJICAgICAgJiYgc3RybmNtcCAoYXJncywgIm5vIiwgbGVuZ3Ro KSAhPSAwCisrCQkgICAgICAmJiBzdHJuY21wIChhcmdzLCAiZGlzYWJsZSIsIGxlbmd0aCkgIT0g MCkpCisrICAgIGVycm9yIChfKCJWYWxpZCBpcyBvbmx5IGdsb2JhbCAnc2V0IGF1dG8tbG9hZCBu byc7ICIKKysJICAgICAib3RoZXJ3aXNlIGNoZWNrIHRoZSBhdXRvLWxvYWQgc3ViLWNvbW1hbmRz LiIpKTsKKysKKysgIGZvciAobGlzdCA9ICphdXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0ICgpOyBs aXN0ICE9IE5VTEw7IGxpc3QgPSBsaXN0LT5uZXh0KQorKyAgICBpZiAobGlzdC0+dmFyX3R5cGUg PT0gdmFyX2Jvb2xlYW4pCisrICAgICAgeworKwlnZGJfYXNzZXJ0IChsaXN0LT50eXBlID09IHNl dF9jbWQpOworKwlkb19zZXRzaG93X2NvbW1hbmQgKGFyZ3MsIGZyb21fdHR5LCBsaXN0KTsKKysg ICAgICB9CisrfQorKworKy8qIEluaXRpYWxpemUgInNldCBhdXRvLWxvYWQgIiBjb21tYW5kcyBw cmVmaXggYW5kIHJldHVybiBpdC4gICovCisrCisrc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKioK KythdXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0ICh2b2lkKQorK3sKKysgIHN0YXRpYyBzdHJ1Y3Qg Y21kX2xpc3RfZWxlbWVudCAqcmV0dmFsOworKworKyAgaWYgKHJldHZhbCA9PSBOVUxMKQorKyAg ICBhZGRfcHJlZml4X2NtZCAoImF1dG8tbG9hZCIsIGNsYXNzX21haW50ZW5hbmNlLCBzZXRfYXV0 b19sb2FkX2NtZCwgXygiXAorK0F1dG8tbG9hZGluZyBzcGVjaWZpYyBzZXR0aW5ncy5cblwKKytD b25maWd1cmUgdmFyaW91cyBhdXRvLWxvYWQtc3BlY2lmaWMgdmFyaWFibGVzIHN1Y2ggYXNcblwK KythdXRvbWF0aWMgbG9hZGluZyBvZiBQeXRob24gc2NyaXB0cy4iKSwKKysJCSAgICAmcmV0dmFs LCAic2V0IGF1dG8tbG9hZCAiLAorKwkJICAgIDEvKmFsbG93LXVua25vd24qLywgJnNldGxpc3Qp OworKworKyAgcmV0dXJuICZyZXR2YWw7CisrfQorKworKy8qIENvbW1hbmQgInNob3cgYXV0by1s b2FkIiBkaXNwbGF5cyBzdW1tYXJ5IG9mIGFsbCB0aGUgY3VycmVudAorKyAgICJzaG93IGF1dG8t bG9hZCAiIHNldHRpbmdzLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3Nob3dfYXV0b19sb2FkX2Nt ZCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQorK3sKKysgIGNtZF9zaG93X2xpc3QgKCphdXRv X2xvYWRfc2hvd19jbWRsaXN0X2dldCAoKSwgZnJvbV90dHksICIiKTsKKyt9CisrCisrLyogSW5p dGlhbGl6ZSAic2hvdyBhdXRvLWxvYWQgIiBjb21tYW5kcyBwcmVmaXggYW5kIHJldHVybiBpdC4g ICovCisrCisrc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKioKKythdXRvX2xvYWRfc2hvd19jbWRs aXN0X2dldCAodm9pZCkKKyt7CisrICBzdGF0aWMgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKnJl dHZhbDsKKysKKysgIGlmIChyZXR2YWwgPT0gTlVMTCkKKysgICAgYWRkX3ByZWZpeF9jbWQgKCJh dXRvLWxvYWQiLCBjbGFzc19tYWludGVuYW5jZSwgc2hvd19hdXRvX2xvYWRfY21kLCBfKCJcCisr U2hvdyBhdXRvLWxvYWRpbmcgc3BlY2lmaWMgc2V0dGluZ3MuXG5cCisrU2hvdyBjb25maWd1cmF0 aW9uIG9mIHZhcmlvdXMgYXV0by1sb2FkLXNwZWNpZmljIHZhcmlhYmxlcyBzdWNoIGFzXG5cCisr YXV0b21hdGljIGxvYWRpbmcgb2YgUHl0aG9uIHNjcmlwdHMuIiksCisrCQkgICAgJnJldHZhbCwg InNob3cgYXV0by1sb2FkICIsCisrCQkgICAgMC8qYWxsb3ctdW5rbm93biovLCAmc2hvd2xpc3Qp OworKworKyAgcmV0dXJuICZyZXR2YWw7CisrfQorKworKy8qIENvbW1hbmQgImluZm8gYXV0by1s b2FkIiBkaXNwbGF5cyB3aGV0aGVyIHRoZSB2YXJpb3VzIGF1dG8tbG9hZCBmaWxlcyBoYXZlCisr ICAgYmVlbiBsb2FkZWQuICBUaGlzIGlzIHJlaW1wbGVtZW50YXRpb24gb2YgY21kX3Nob3dfbGlz dCB3aGljaCBpbnNlcnRzCisrICAgbmV3bGluZXMgYXQgcHJvcGVyIHBsYWNlcy4gICovCisrCisr c3RhdGljIHZvaWQKKytpbmZvX2F1dG9fbG9hZF9jbWQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0 eSkKKyt7CisrICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqbGlzdDsKKysgIHN0cnVjdCBjbGVh bnVwICppbmZvbGlzdF9jaGFpbjsKKysgIHN0cnVjdCB1aV9vdXQgKnVpb3V0ID0gY3VycmVudF91 aW91dDsKKysKKysgIGluZm9saXN0X2NoYWluID0gbWFrZV9jbGVhbnVwX3VpX291dF90dXBsZV9i ZWdpbl9lbmQgKHVpb3V0LCAiaW5mb2xpc3QiKTsKKysKKysgIGZvciAobGlzdCA9ICphdXRvX2xv YWRfaW5mb19jbWRsaXN0X2dldCAoKTsgbGlzdCAhPSBOVUxMOyBsaXN0ID0gbGlzdC0+bmV4dCkK KysgICAgeworKyAgICAgIHN0cnVjdCBjbGVhbnVwICpvcHRpb25fY2hhaW4KKysJPSBtYWtlX2Ns ZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAodWlvdXQsICJvcHRpb24iKTsKKysKKysgICAg ICBnZGJfYXNzZXJ0ICghbGlzdC0+cHJlZml4bGlzdCk7CisrICAgICAgZ2RiX2Fzc2VydCAobGlz dC0+dHlwZSA9PSBub3Rfc2V0X2NtZCk7CisrCisrICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAo dWlvdXQsICJuYW1lIiwgbGlzdC0+bmFtZSk7CisrICAgICAgdWlfb3V0X3RleHQgKHVpb3V0LCAi OiAgIik7CisrICAgICAgY21kX2Z1bmMgKGxpc3QsIGF1dG9fbG9hZF9pbmZvX3NjcmlwdHNfcGF0 dGVybl9ubCwgZnJvbV90dHkpOworKworKyAgICAgIC8qIENsb3NlIHRoZSB0dXBsZS4gICovCisr ICAgICAgZG9fY2xlYW51cHMgKG9wdGlvbl9jaGFpbik7CisrICAgIH0KKysKKysgIC8qIENsb3Nl IHRoZSB0dXBsZS4gICovCisrICBkb19jbGVhbnVwcyAoaW5mb2xpc3RfY2hhaW4pOworK30KKysK KysvKiBJbml0aWFsaXplICJpbmZvIGF1dG8tbG9hZCAiIGNvbW1hbmRzIHByZWZpeCBhbmQgcmV0 dXJuIGl0LiAgKi8KKysKKytzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKgorK2F1dG9fbG9hZF9p bmZvX2NtZGxpc3RfZ2V0ICh2b2lkKQorK3sKKysgIHN0YXRpYyBzdHJ1Y3QgY21kX2xpc3RfZWxl bWVudCAqcmV0dmFsOworKworKyAgaWYgKHJldHZhbCA9PSBOVUxMKQorKyAgICBhZGRfcHJlZml4 X2NtZCAoImF1dG8tbG9hZCIsIGNsYXNzX2luZm8sIGluZm9fYXV0b19sb2FkX2NtZCwgXygiXAor K1ByaW50IGN1cnJlbnQgc3RhdHVzIG9mIGF1dG8tbG9hZGVkIGZpbGVzLlxuXAorK1ByaW50IHdo ZXRoZXIgdmFyaW91cyBmaWxlcyBsaWtlIFB5dGhvbiBzY3JpcHRzIG9yIC5nZGJpbml0IGZpbGVz IGhhdmUgYmVlblxuXAorK2ZvdW5kIGFuZC9vciBsb2FkZWQuIiksCisrCQkgICAgJnJldHZhbCwg ImluZm8gYXV0by1sb2FkICIsCisrCQkgICAgMC8qYWxsb3ctdW5rbm93biovLCAmaW5mb2xpc3Qp OworKworKyAgcmV0dXJuICZyZXR2YWw7CisrfQorKworIHZvaWQgX2luaXRpYWxpemVfYXV0b19s b2FkICh2b2lkKTsKKyAKKyB2b2lkCitAQCAtNDY1LDggKzcyMywzOCBAQCBfaW5pdGlhbGl6ZV9h dXRvX2xvYWQgKHZvaWQpCisgCisgICBvYnNlcnZlcl9hdHRhY2hfbmV3X29iamZpbGUgKGF1dG9f bG9hZF9uZXdfb2JqZmlsZSk7CisgCistICBhZGRfaW5mbyAoImF1dG8tbG9hZC1zY3JpcHRzIiwK Ky0JICAgIGluZm9fYXV0b19sb2FkX3NjcmlwdHMsCistCSAgICBfKCJQcmludCB0aGUgbGlzdCBv ZiBhdXRvbWF0aWNhbGx5IGxvYWRlZCBzY3JpcHRzLlxuXAorLVVzYWdlOiBpbmZvIGF1dG8tbG9h ZC1zY3JpcHRzIFtSRUdFWFBdIikpOworKyAgYWRkX3NldHNob3dfYm9vbGVhbl9jbWQgKCJnZGIt c2NyaXB0cyIsIGNsYXNzX3N1cHBvcnQsCisrCQkJICAgJmF1dG9fbG9hZF9nZGJfc2NyaXB0cywg XygiXAorK0VuYWJsZSBvciBkaXNhYmxlIGF1dG8tbG9hZGluZyBvZiBjYW5uZWQgc2VxdWVuY2Vz IG9mIGNvbW1hbmRzIHNjcmlwdHMuIiksIF8oIlwKKytTaG93IHdoZXRoZXIgYXV0by1sb2FkaW5n IG9mIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cyBpcyBlbmFibGVkLiIpLAor KwkJCSAgIF8oIlwKKytJZiBlbmFibGVkLCBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIGFy ZSBsb2FkZWQgd2hlbiB0aGUgZGVidWdnZXIgcmVhZHNcblwKKythbiBleGVjdXRhYmxlIG9yIHNo YXJlZCBsaWJyYXJ5LlxuXAorK1RoaXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGljYXRpb25z IGZvciB1bnRydXN0ZWQgaW5mZXJpb3JzLiIpLAorKwkJCSAgIE5VTEwsIHNob3dfYXV0b19sb2Fk X2dkYl9zY3JpcHRzLAorKwkJCSAgIGF1dG9fbG9hZF9zZXRfY21kbGlzdF9nZXQgKCksCisrCQkJ ICAgYXV0b19sb2FkX3Nob3dfY21kbGlzdF9nZXQgKCkpOworKworKyAgYWRkX2NtZCAoImdkYi1z Y3JpcHRzIiwgY2xhc3NfaW5mbywgaW5mb19hdXRvX2xvYWRfZ2RiX3NjcmlwdHMsCisrCSAgIF8o IlByaW50IHRoZSBsaXN0IG9mIGF1dG9tYXRpY2FsbHkgbG9hZGVkIHNlcXVlbmNlcyBvZiBjb21t YW5kcy5cblwKKytVc2FnZTogaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMgW1JFR0VYUF0iKSwK KysJICAgYXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQgKCkpOworKworKyAgYWRkX3NldHNob3df Ym9vbGVhbl9jbWQgKCJsb2NhbC1nZGJpbml0IiwgY2xhc3Nfc3VwcG9ydCwKKysJCQkgICAmYXV0 b19sb2FkX2xvY2FsX2dkYmluaXQsIF8oIlwKKytFbmFibGUgb3IgZGlzYWJsZSBhdXRvLWxvYWRp bmcgb2YgLmdkYmluaXQgc2NyaXB0IGluIGN1cnJlbnQgZGlyZWN0b3J5LiIpLCBfKCJcCisrU2hv dyB3aGV0aGVyIGF1dG8tbG9hZGluZyAuZ2RiaW5pdCBzY3JpcHQgaW4gY3VycmVudCBkaXJlY3Rv cnkgaXMgZW5hYmxlZC4iKSwKKysJCQkgICBfKCJcCisrSWYgZW5hYmxlZCwgY2FubmVkIHNlcXVl bmNlcyBvZiBjb21tYW5kcyBhcmUgbG9hZGVkIHdoZW4gZGVidWdnZXIgc3RhcnRzXG5cCisrZnJv bSAuZ2RiaW5pdCBmaWxlIGluIGN1cnJlbnQgZGlyZWN0b3J5LiAgU3VjaCBmaWxlcyBhcmUgZGVw cmVjYXRlZCxcblwKKyt1c2UgYSBzY3JpcHQgYXNzb2NpYXRlZCB3aXRoIGluZmVyaW9yIGV4ZWN1 dGFibGUgZmlsZSBpbnN0ZWFkLlxuXAorK1RoaXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGlj YXRpb25zIGZvciB1bnRydXN0ZWQgaW5mZXJpb3JzLiIpLAorKwkJCSAgIE5VTEwsIHNob3dfYXV0 b19sb2FkX2xvY2FsX2dkYmluaXQsCisrCQkJICAgYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCAo KSwKKysJCQkgICBhdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAoKSk7CisrCisrICBhZGRfY21k ICgibG9jYWwtZ2RiaW5pdCIsIGNsYXNzX2luZm8sIGluZm9fYXV0b19sb2FkX2xvY2FsX2dkYmlu aXQsCisrCSAgIF8oIlByaW50IHdoZXRoZXIgY3VycmVudCBkaXJlY3RvcnkgLmdkYmluaXQgZmls ZSBoYXMgYmVlbiBsb2FkZWQuXG5cCisrVXNhZ2U6IGluZm8gYXV0by1sb2FkIGxvY2FsLWdkYmlu aXQiKSwKKysJICAgYXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQgKCkpOworIH0KK0luZGV4OiBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuaAorPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03 LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvYXV0by1sb2FkLmgJMjAxMi0wNC0xOCAwMDo0NDoyNi45 NTE0Mzc1MTcgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuaAky MDEyLTA0LTE4IDAwOjQ2OjQ3LjU1NjA3OTc4MCArMDIwMAorQEAgLTIyLDE1ICsyMiwzNiBAQAor IAorIHN0cnVjdCBwcm9ncmFtX3NwYWNlOworIAorLWV4dGVybiBpbnQgZ2RicHlfZ2xvYmFsX2F1 dG9fbG9hZDsKKytzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlCisreworKyAgY29uc3QgY2hhciAqc3Vm Zml4OworKworKyAgdm9pZCAoKnNvdXJjZV9zY3JpcHRfZm9yX29iamZpbGUpIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwKKysJCQkJICAgICBjb25zdCBjaGFyICpmaWxlbmFt ZSk7CisrfTsKKysKKytleHRlcm4gaW50IGdsb2JhbF9hdXRvX2xvYWQ7CisrCisrZXh0ZXJuIGlu dCBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdDsKKytleHRlcm4gY2hhciAqYXV0b19sb2FkX2xvY2Fs X2dkYmluaXRfcGF0aG5hbWU7CisrZXh0ZXJuIGludCBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9s b2FkZWQ7CisgCisgZXh0ZXJuIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKgorICAgZ2V0 X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGluZyAoc3RydWN0IHByb2dyYW1fc3BhY2Ug KnBzcGFjZSk7CisgZXh0ZXJuIGludCBtYXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19sb2Fk X3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbywKKy0JCQkgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGNv bnN0IGNoYXIgKmZ1bGxfcGF0aCk7CisrCQkJICAgICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBj aGFyICpmdWxsX3BhdGgsCisrCQkJICAgICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICps YW5ndWFnZSk7CisgZXh0ZXJuIHZvaWQgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwKKy0JCQkJICAgICAgY29uc3QgY2hhciAqc3VmZml4KTsKKysJCQkJ ICAgICAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2UpOworK2V4dGVybiB2 b2lkIGxvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSk7CisgZXh0ZXJuIGludAorICAgc2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50IChzdHJ1 Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbyk7CisrZXh0ZXJuIGNoYXIgYXV0 b19sb2FkX2luZm9fc2NyaXB0c19wYXR0ZXJuX25sW107CisrZXh0ZXJuIHZvaWQgYXV0b19sb2Fk X2luZm9fc2NyaXB0cyAoY2hhciAqcGF0dGVybiwgaW50IGZyb21fdHR5LAorKwkJCQkgICAgY29u c3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2UpOworKworK2V4dGVybiBzdHJ1Y3Qg Y21kX2xpc3RfZWxlbWVudCAqKmF1dG9fbG9hZF9zZXRfY21kbGlzdF9nZXQgKHZvaWQpOworK2V4 dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKmF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0 ICh2b2lkKTsKKytleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKiphdXRvX2xvYWRfaW5m b19jbWRsaXN0X2dldCAodm9pZCk7CisgCisgI2VuZGlmIC8qIEFVVE9fTE9BRF9IICovCitJbmRl eDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbGludXgtdGhyZWFkLWRiLmMKKz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2xpbnV4LXRocmVhZC1kYi5jCTIwMTIt MDEtMDQgMDk6MTc6MDUuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9n ZGIvbGludXgtdGhyZWFkLWRiLmMJMjAxMi0wNC0xOCAwMDo0Njo0Ny41NTcwNzk3NzcgKzAyMDAK K0BAIC00MCw4ICs0MCwxMCBAQAorICNpbmNsdWRlICJvYnNlcnZlci5oIgorICNpbmNsdWRlICJs aW51eC1uYXQuaCIKKyAjaW5jbHVkZSAibGludXgtcHJvY2ZzLmgiCisrI2luY2x1ZGUgImF1dG8t bG9hZC5oIgorIAorICNpbmNsdWRlIDxzaWduYWwuaD4KKysjaW5jbHVkZSA8Y3R5cGUuaD4KKyAK KyAjaWZkZWYgSEFWRV9HTlVfTElCQ19WRVJTSU9OX0gKKyAjaW5jbHVkZSA8Z251L2xpYmMtdmVy c2lvbi5oPgorQEAgLTc1LDYgKzc3LDIxIEBACisgCisgc3RhdGljIGNoYXIgKmxpYnRocmVhZF9k Yl9zZWFyY2hfcGF0aDsKKyAKKysvKiBTZXQgdG8gbm9uLXplcm8gaWYgdGhyZWFkX2RiIGF1dG8t bG9hZGluZyBpcyBlbmFibGVkCisrICAgYnkgdGhlICJzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1k YiIgY29tbWFuZC4gICovCisrc3RhdGljIGludCBhdXRvX2xvYWRfdGhyZWFkX2RiID0gMTsKKysK KysvKiAic2hvdyIgY29tbWFuZCBmb3IgdGhlIGF1dG9fbG9hZF90aHJlYWRfZGIgY29uZmlndXJh dGlvbiB2YXJpYWJsZS4gICovCisrCisrc3RhdGljIHZvaWQKKytzaG93X2F1dG9fbG9hZF90aHJl YWRfZGIgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCisrCQkJICBzdHJ1Y3Qg Y21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCisreworKyAgZnByaW50Zl9m aWx0ZXJlZCAoZmlsZSwgXygiQXV0by1sb2FkaW5nIG9mIGluZmVyaW9yIHNwZWNpZmljIGxpYnRo cmVhZF9kYiAiCisrCQkJICAgICJpcyAlcy5cbiIpLAorKwkJICAgIHZhbHVlKTsKKyt9CisrCisg c3RhdGljIHZvaWQKKyBzZXRfbGlidGhyZWFkX2RiX3NlYXJjaF9wYXRoIChjaGFyICppZ25vcmVk LCBpbnQgZnJvbV90dHksCisgCQkJICAgICAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMpCitA QCAtMTE5LDYgKzEzNiwxMCBAQCBzdHJ1Y3QgdGhyZWFkX2RiX2luZm8KKyAgIC8qIEhhbmRsZSBm cm9tIGRsb3BlbiBmb3IgbGlidGhyZWFkX2RiLnNvLiAgKi8KKyAgIHZvaWQgKmhhbmRsZTsKKyAK KysgIC8qIEFic29sdXRlIHBhdGhuYW1lIGZyb20gZ2RiX3JlYWxwYXRoIHRvIGRpc2sgZmlsZSB1 c2VkIGZvciBkbG9wZW4taW5nCisrICAgICBIQU5ETEUuICBJdCBtYXkgYmUgTlVMTCBmb3Igc3lz dGVtIGxpYnJhcnkuICAqLworKyAgY2hhciAqZmlsZW5hbWU7CisrCisgICAvKiBTdHJ1Y3R1cmUg dGhhdCBpZGVudGlmaWVzIHRoZSBjaGlsZCBwcm9jZXNzIGZvciB0aGUKKyAgICAgIDxwcm9jX3Nl cnZpY2UuaD4gaW50ZXJmYWNlLiAgKi8KKyAgIHN0cnVjdCBwc19wcm9jaGFuZGxlIHByb2NfaGFu ZGxlOworQEAgLTI0OCw2ICsyNjksOCBAQCBkZWxldGVfdGhyZWFkX2RiX2luZm8gKGludCBwaWQp CisgICBpZiAoaW5mby0+aGFuZGxlICE9IE5VTEwpCisgICAgIGRsY2xvc2UgKGluZm8tPmhhbmRs ZSk7CisgCisrICB4ZnJlZSAoaW5mby0+ZmlsZW5hbWUpOworKworICAgaWYgKGluZm9fcHJldikK KyAgICAgaW5mb19wcmV2LT5uZXh0ID0gaW5mby0+bmV4dDsKKyAgIGVsc2UKK0BAIC04MDcsNiAr ODMwLDEwIEBAIHRyeV90aHJlYWRfZGJfbG9hZCAoY29uc3QgY2hhciAqbGlicmFyeSkKKyAKKyAg IGluZm8gPSBhZGRfdGhyZWFkX2RiX2luZm8gKGhhbmRsZSk7CisgCisrICAvKiBEbyBub3Qgc2F2 ZSBzeXN0ZW0gbGlicmFyeSBuYW1lLCB0aGF0IG9uZSBpcyBhbHdheXMgdHJ1c3RlZC4gICovCisr ICBpZiAoc3RyY2hyIChsaWJyYXJ5LCAnLycpICE9IE5VTEwpCisrICAgIGluZm8tPmZpbGVuYW1l ID0gZ2RiX3JlYWxwYXRoIChsaWJyYXJ5KTsKKysKKyAgIGlmICh0cnlfdGhyZWFkX2RiX2xvYWRf MSAoaW5mbykpCisgICAgIHJldHVybiAxOworIAorQEAgLTg1Niw2ICs4ODMsOSBAQCB0cnlfdGhy ZWFkX2RiX2xvYWRfZnJvbV9wZGlyICh2b2lkKQorIHsKKyAgIHN0cnVjdCBvYmpmaWxlICpvYmo7 CisgCisrICBpZiAoIWF1dG9fbG9hZF90aHJlYWRfZGIpCisrICAgIHJldHVybiAwOworKworICAg QUxMX09CSkZJTEVTIChvYmopCisgICAgIGlmIChsaWJwdGhyZWFkX25hbWVfcCAob2JqLT5uYW1l KSkKKyAgICAgICB7CitAQCAtODk1LDYgKzkyNSw5IEBAIHRyeV90aHJlYWRfZGJfbG9hZF9mcm9t X2RpciAoY29uc3QgY2hhcgorICAgY2hhciAqcGF0aDsKKyAgIGludCByZXN1bHQ7CisgCisrICBp ZiAoIWF1dG9fbG9hZF90aHJlYWRfZGIpCisrICAgIHJldHVybiAwOworKworICAgcGF0aCA9IHht YWxsb2MgKGRpcl9sZW4gKyAxICsgc3RybGVuIChMSUJUSFJFQURfREJfU08pICsgMSk7CisgICBj bGVhbnVwID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwgcGF0aCk7CisgCitAQCAtMTgwMiw2ICsxODM1 LDE1MCBAQCB0aHJlYWRfZGJfcmVzdW1lIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzCisgICBiZW5l YXRoLT50b19yZXN1bWUgKGJlbmVhdGgsIHB0aWQsIHN0ZXAsIHNpZ25vKTsKKyB9CisgCisrLyog cXNvcnQgaGVscGVyIGZ1bmN0aW9uIGZvciBpbmZvX2F1dG9fbG9hZF9saWJ0aHJlYWRfZGIsIHNv cnQgdGhlCisrICAgdGhyZWFkX2RiX2luZm8gcG9pbnRlcnMgcHJpbWFyaWx5IGJ5IHRoZWlyIEZJ TEVOQU1FIGFuZCBzZWNvbmRhcmlseSBieSB0aGVpcgorKyAgIFBJRCwgYm90aCBpbiBhc2NlbmRp bmcgb3JkZXIuICAqLworKworK3N0YXRpYyBpbnQKKytpbmZvX2F1dG9fbG9hZF9saWJ0aHJlYWRf ZGJfY29tcGFyZSAoY29uc3Qgdm9pZCAqYXAsIGNvbnN0IHZvaWQgKmJwKQorK3sKKysgIHN0cnVj dCB0aHJlYWRfZGJfaW5mbyAqYSA9ICooc3RydWN0IHRocmVhZF9kYl9pbmZvICoqKSBhcDsKKysg IHN0cnVjdCB0aHJlYWRfZGJfaW5mbyAqYiA9ICooc3RydWN0IHRocmVhZF9kYl9pbmZvICoqKSBi cDsKKysgIGludCByZXR2YWw7CisrCisrICByZXR2YWwgPSBzdHJjbXAgKGEtPmZpbGVuYW1lLCBi LT5maWxlbmFtZSk7CisrICBpZiAocmV0dmFsKQorKyAgICByZXR1cm4gcmV0dmFsOworKworKyAg cmV0dXJuIChhLT5waWQgPiBiLT5waWQpIC0gKGEtPnBpZCAtIGItPnBpZCk7CisrfQorKworKy8q IEltcGxlbWVudCAnaW5mbyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiJy4gICovCisrCisrc3RhdGlj IHZvaWQKKytpbmZvX2F1dG9fbG9hZF9saWJ0aHJlYWRfZGIgKGNoYXIgKmFyZ3MsIGludCBmcm9t X3R0eSkKKyt7CisrICBzdHJ1Y3QgdWlfb3V0ICp1aW91dCA9IGN1cnJlbnRfdWlvdXQ7CisrICBj b25zdCBjaGFyICpjcyA9IGFyZ3MgPyBhcmdzIDogIiI7CisrICBzdHJ1Y3QgdGhyZWFkX2RiX2lu Zm8gKmluZm8sICoqYXJyYXk7CisrICB1bnNpZ25lZCBpbmZvX2NvdW50LCB1bmlxdWVfZmlsZW5h bWVzOworKyAgc2l6ZV90IG1heF9maWxlbmFtZV9sZW4sIG1heF9waWRzX2xlbiwgcGlkc19sZW47 CisrICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKKysgIGNoYXIgKnBpZHM7CisrICBpbnQgaTsK KysKKysgIHdoaWxlIChpc3NwYWNlICgqY3MpKQorKyAgICBjcysrOworKyAgaWYgKCpjcykKKysg ICAgZXJyb3IgKF8oIidpbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGInIGRvZXMgbm90IGFjY2Vw dCBhbnkgcGFyYW1ldGVycyIpKTsKKysKKysgIGluZm9fY291bnQgPSAwOworKyAgZm9yIChpbmZv ID0gdGhyZWFkX2RiX2xpc3Q7IGluZm87IGluZm8gPSBpbmZvLT5uZXh0KQorKyAgICBpZiAoaW5m by0+ZmlsZW5hbWUgIT0gTlVMTCkKKysgICAgICBpbmZvX2NvdW50Kys7CisrCisrICBhcnJheSA9 IHhtYWxsb2MgKHNpemVvZiAoKmFycmF5KSAqIGluZm9fY291bnQpOworKyAgYmFja190byA9IG1h a2VfY2xlYW51cCAoeGZyZWUsIGFycmF5KTsKKysKKysgIGluZm9fY291bnQgPSAwOworKyAgZm9y IChpbmZvID0gdGhyZWFkX2RiX2xpc3Q7IGluZm87IGluZm8gPSBpbmZvLT5uZXh0KQorKyAgICBp ZiAoaW5mby0+ZmlsZW5hbWUgIT0gTlVMTCkKKysgICAgICBhcnJheVtpbmZvX2NvdW50KytdID0g aW5mbzsKKysKKysgIC8qIFNvcnQgQVJSQVkgYnkgZmlsZW5hbWVzIGFuZCBQSURzLiAgKi8KKysK KysgIHFzb3J0IChhcnJheSwgaW5mb19jb3VudCwgc2l6ZW9mICgqYXJyYXkpLAorKwkgaW5mb19h dXRvX2xvYWRfbGlidGhyZWFkX2RiX2NvbXBhcmUpOworKworKyAgLyogQ2FsY3VsYXRlIHRoZSBu dW1iZXIgb2YgdW5pcXVlIGZpbGVuYW1lcyAocm93cykgYW5kIHRoZSBtYXhpbXVtIHN0cmluZwor KyAgICAgbGVuZ3RoIG9mIFBJRHMgbGlzdCBmb3IgdGhlIHVuaXF1ZSBmaWxlbmFtZXMgKGNvbHVt bnMpLiAgKi8KKysKKysgIHVuaXF1ZV9maWxlbmFtZXMgPSAwOworKyAgbWF4X2ZpbGVuYW1lX2xl biA9IDA7CisrICBtYXhfcGlkc19sZW4gPSAwOworKyAgcGlkc19sZW4gPSAwOworKyAgZm9yIChp ID0gMDsgaSA8IGluZm9fY291bnQ7IGkrKykKKysgICAgeworKyAgICAgIGludCBwaWQgPSBhcnJh eVtpXS0+cGlkOworKyAgICAgIHNpemVfdCB0aGlzX3BpZF9sZW47CisrCisrICAgICAgZm9yICh0 aGlzX3BpZF9sZW4gPSAwOyBwaWQgIT0gMDsgcGlkIC89IDEwKQorKwl0aGlzX3BpZF9sZW4rKzsK KysKKysgICAgICBpZiAoaSA9PSAwIHx8IHN0cmNtcCAoYXJyYXlbaSAtIDFdLT5maWxlbmFtZSwg YXJyYXlbaV0tPmZpbGVuYW1lKSAhPSAwKQorKwl7CisrCSAgdW5pcXVlX2ZpbGVuYW1lcysrOwor KwkgIG1heF9maWxlbmFtZV9sZW4gPSBtYXggKG1heF9maWxlbmFtZV9sZW4sCisrCQkJCSAgc3Ry bGVuIChhcnJheVtpXS0+ZmlsZW5hbWUpKTsKKysKKysJICBpZiAoaSA+IDApCisrCSAgICB7Cisr CSAgICAgIHBpZHNfbGVuIC09IHN0cmxlbiAoIiwgIik7CisrCSAgICAgIG1heF9waWRzX2xlbiA9 IG1heCAobWF4X3BpZHNfbGVuLCBwaWRzX2xlbik7CisrCSAgICB9CisrCSAgcGlkc19sZW4gPSAw OworKwl9CisrICAgICAgcGlkc19sZW4gKz0gdGhpc19waWRfbGVuICsgc3RybGVuICgiLCAiKTsK KysgICAgfQorKyAgaWYgKGkpCisrICAgIHsKKysgICAgICBwaWRzX2xlbiAtPSBzdHJsZW4gKCIs ICIpOworKyAgICAgIG1heF9waWRzX2xlbiA9IG1heCAobWF4X3BpZHNfbGVuLCBwaWRzX2xlbik7 CisrICAgIH0KKysKKysgIC8qIFRhYmxlIGhlYWRlciBzaGlmdGVkIHJpZ2h0IGJ5IHByZWNlZGlu ZyAibGlidGhyZWFkLWRiOiAgIiB3b3VsZCBub3QgbWF0Y2gKKysgICAgIGl0cyBjb2x1bW5zLiAg Ki8KKysgIGlmIChpbmZvX2NvdW50ID4gMCAmJiBhcmdzID09IGF1dG9fbG9hZF9pbmZvX3Njcmlw dHNfcGF0dGVybl9ubCkKKysgICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiXG4iKTsKKysKKysgIG1h a2VfY2xlYW51cF91aV9vdXRfdGFibGVfYmVnaW5fZW5kICh1aW91dCwgMiwgdW5pcXVlX2ZpbGVu YW1lcywKKysJCQkJICAgICAgICJMaW51eFRocmVhZERiVGFibGUiKTsKKysKKysgIHVpX291dF90 YWJsZV9oZWFkZXIgKHVpb3V0LCBtYXhfZmlsZW5hbWVfbGVuLCB1aV9sZWZ0LCAiZmlsZW5hbWUi LAorKwkJICAgICAgICJGaWxlbmFtZSIpOworKyAgdWlfb3V0X3RhYmxlX2hlYWRlciAodWlvdXQs IHBpZHNfbGVuLCB1aV9sZWZ0LCAiUElEcyIsICJQaWRzIik7CisrICB1aV9vdXRfdGFibGVfYm9k eSAodWlvdXQpOworKworKyAgcGlkcyA9IHhtYWxsb2MgKG1heF9waWRzX2xlbiArIDEpOworKyAg bWFrZV9jbGVhbnVwICh4ZnJlZSwgcGlkcyk7CisrCisrICAvKiBOb3RlIEkgaXMgaW5jcmVtZW50 ZWQgaW5zaWRlIHRoZSBjeWNsZSwgbm90IGF0IGl0cyBlbmQuICAqLworKyAgZm9yIChpID0gMDsg aSA8IGluZm9fY291bnQ7KQorKyAgICB7CisrICAgICAgc3RydWN0IGNsZWFudXAgKmNoYWluID0g bWFrZV9jbGVhbnVwX3VpX291dF90dXBsZV9iZWdpbl9lbmQgKHVpb3V0LCBOVUxMKTsKKysgICAg ICBjaGFyICpwaWRzX2VuZDsKKysKKysgICAgICBpbmZvID0gYXJyYXlbaV07CisrICAgICAgdWlf b3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJmaWxlbmFtZSIsIGluZm8tPmZpbGVuYW1lKTsKKysg ICAgICBwaWRzX2VuZCA9IHBpZHM7CisrCisrICAgICAgd2hpbGUgKGkgPCBpbmZvX2NvdW50ICYm IHN0cmNtcCAoaW5mby0+ZmlsZW5hbWUsIGFycmF5W2ldLT5maWxlbmFtZSkgPT0gMCkKKysJewor KwkgIGlmIChwaWRzX2VuZCAhPSBwaWRzKQorKwkgICAgeworKwkgICAgICAqcGlkc19lbmQrKyA9 ICcsJzsKKysJICAgICAgKnBpZHNfZW5kKysgPSAnICc7CisrCSAgICB9CisrCSAgcGlkc19lbmQg Kz0geHNucHJpbnRmIChwaWRzX2VuZCwgJnBpZHNbbWF4X3BpZHNfbGVuICsgMV0gLSBwaWRzX2Vu ZCwKKysJCQkJICIldSIsIGFycmF5W2ldLT5waWQpOworKwkgIGdkYl9hc3NlcnQgKHBpZHNfZW5k IDwgJnBpZHNbbWF4X3BpZHNfbGVuICsgMV0pOworKworKwkgIGkrKzsKKysJfQorKyAgICAgICpw aWRzX2VuZCA9ICdcMCc7CisrCisrICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJw aWRzIiwgcGlkcyk7CisrCisrICAgICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiXG4iKTsKKysgICAg ICBkb19jbGVhbnVwcyAoY2hhaW4pOworKyAgICB9CisrCisrICBkb19jbGVhbnVwcyAoYmFja190 byk7CisrCisrICBpZiAoaW5mb19jb3VudCA9PSAwKQorKyAgICB1aV9vdXRfbWVzc2FnZSAodWlv dXQsIDAsIF8oIk5vIGF1dG8tbG9hZGVkIGxpYnRocmVhZC1kYi5cbiIpKTsKKyt9CisrCisgc3Rh dGljIHZvaWQKKyBpbml0X3RocmVhZF9kYl9vcHMgKHZvaWQpCisgeworQEAgLTE4NjMsNiArMjA0 MCwyMyBAQCBXaGVuIG5vbi16ZXJvLCBsaWJ0aHJlYWQtZGIgZGVidWdnaW5nIGlzCisgCQkJICAg IHNob3dfbGlidGhyZWFkX2RiX2RlYnVnLAorIAkJCSAgICAmc2V0ZGVidWdsaXN0LCAmc2hvd2Rl YnVnbGlzdCk7CisgCisrICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoImxpYnRocmVhZC1kYiIs IGNsYXNzX3N1cHBvcnQsCisrCQkJICAgJmF1dG9fbG9hZF90aHJlYWRfZGIsIF8oIlwKKytFbmFi bGUgb3IgZGlzYWJsZSBhdXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMgbGlidGhyZWFk X2RiLiIpLCBfKCJcCisrU2hvdyB3aGV0aGVyIGF1dG8tbG9hZGluZyBpbmZlcmlvciBzcGVjaWZp YyBsaWJ0aHJlYWRfZGIgaXMgZW5hYmxlZC4iKSwgXygiXAorK0lmIGVuYWJsZWQsIGxpYnRocmVh ZF9kYiB3aWxsIGJlIHNlYXJjaGVkIGluICdzZXQgbGlidGhyZWFkLWRiLXNlYXJjaC1wYXRoJ1xu XAorK2xvY2F0aW9ucyB0byBsb2FkIGxpYnRocmVhZF9kYiBjb21wYXRpYmxlIHdpdGggdGhlIGlu ZmVyaW9yLlxuXAorK1N0YW5kYXJkIHN5c3RlbSBsaWJ0aHJlYWRfZGIgc3RpbGwgZ2V0cyBsb2Fk ZWQgZXZlbiB3aXRoIHRoaXMgb3B0aW9uIG9mZi5cblwKKytUaGlzIG9wdGlvbnMgaGFzIHNlY3Vy aXR5IGltcGxpY2F0aW9ucyBmb3IgdW50cnVzdGVkIGluZmVyaW9ycy4iKSwKKysJCQkgICBOVUxM LCBzaG93X2F1dG9fbG9hZF90aHJlYWRfZGIsCisrCQkJICAgYXV0b19sb2FkX3NldF9jbWRsaXN0 X2dldCAoKSwKKysJCQkgICBhdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAoKSk7CisrCisrICBh ZGRfY21kICgibGlidGhyZWFkLWRiIiwgY2xhc3NfaW5mbywgaW5mb19hdXRvX2xvYWRfbGlidGhy ZWFkX2RiLAorKwkgICBfKCJQcmludCB0aGUgbGlzdCBvZiBsb2FkZWQgaW5mZXJpb3Igc3BlY2lm aWMgbGlidGhyZWFkX2RiLlxuXAorK1VzYWdlOiBpbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIi KSwKKysJICAgYXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQgKCkpOworKworICAgLyogQWRkIG91 cnNlbHZlcyB0byBvYmpmaWxlIGV2ZW50IGNoYWluLiAgKi8KKyAgIG9ic2VydmVyX2F0dGFjaF9u ZXdfb2JqZmlsZSAodGhyZWFkX2RiX25ld19vYmpmaWxlKTsKKyAKK0luZGV4OiBnZGItNy40LjUw LjIwMTIwMTIwL2dkYi9tYWluLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIw Lm9yaWcvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQ0OjI2Ljk1NzQzNzUwMyArMDIwMAorKysr IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjU1NzA3 OTc3NyArMDIwMAorQEAgLTk0NSw4ICs5NDUsOCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRh KQorICAgLyogU2tpcCBhdXRvLWxvYWRpbmcgc2VjdGlvbi1zcGVjaWZpZWQgc2NyaXB0cyB1bnRp bCB3ZSd2ZSBzb3VyY2VkCisgICAgICBsb2NhbF9nZGJpbml0ICh3aGljaCBpcyBvZnRlbiB1c2Vk IHRvIGF1Z21lbnQgdGhlIHNvdXJjZSBzZWFyY2gKKyAgICAgIHBhdGgpLiAgKi8KKy0gIHNhdmVf YXV0b19sb2FkID0gZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZDsKKy0gIGdkYnB5X2dsb2JhbF9hdXRv X2xvYWQgPSAwOworKyAgc2F2ZV9hdXRvX2xvYWQgPSBnbG9iYWxfYXV0b19sb2FkOworKyAgZ2xv YmFsX2F1dG9fbG9hZCA9IDA7CisgCisgICBpZiAoZXhlY2FyZyAhPSBOVUxMCisgICAgICAgJiYg c3ltYXJnICE9IE5VTEwKK0BAIC0xMDIyLDE0ICsxMDIyLDI0IEBAIGNhcHR1cmVkX21haW4gKHZv aWQgKmRhdGEpCisgCisgICAvKiBSZWFkIHRoZSAuZ2RiaW5pdCBmaWxlIGluIHRoZSBjdXJyZW50 IGRpcmVjdG9yeSwgKmlmKiBpdCBpc24ndAorICAgICAgdGhlIHNhbWUgYXMgdGhlICRIT01FLy5n ZGJpbml0IGZpbGUgKGl0IHNob3VsZCBleGlzdCwgYWxzbykuICAqLworLSAgaWYgKGxvY2FsX2dk YmluaXQgJiYgIWluaGliaXRfZ2RiaW5pdCkKKy0gICAgY2F0Y2hfY29tbWFuZF9lcnJvcnMgKHNv dXJjZV9zY3JpcHQsIGxvY2FsX2dkYmluaXQsIDAsIFJFVFVSTl9NQVNLX0FMTCk7CisrICBpZiAo bG9jYWxfZ2RiaW5pdCkKKysgICAgeworKyAgICAgIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X3Bh dGhuYW1lID0gZ2RiX3JlYWxwYXRoIChsb2NhbF9nZGJpbml0KTsKKysKKysgICAgICBpZiAoIWlu aGliaXRfZ2RiaW5pdCAmJiBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCkKKysJeworKwkgIGF1dG9f bG9hZF9sb2NhbF9nZGJpbml0X2xvYWRlZCA9IDE7CisrCisrCSAgY2F0Y2hfY29tbWFuZF9lcnJv cnMgKHNvdXJjZV9zY3JpcHQsIGxvY2FsX2dkYmluaXQsIDAsCisrCQkJCVJFVFVSTl9NQVNLX0FM TCk7CisrCX0KKysgICAgfQorIAorICAgLyogTm93IHRoYXQgYWxsIC5nZGJpbml0J3MgaGF2ZSBi ZWVuIHJlYWQgYW5kIGFsbCAtZCBvcHRpb25zIGhhdmUgYmVlbgorICAgICAgcHJvY2Vzc2VkLCB3 ZSBjYW4gcmVhZCBhbnkgc2NyaXB0cyBtZW50aW9uZWQgaW4gU1lNQVJHLgorICAgICAgV2Ugd2Fp dCB1bnRpbCBub3cgYmVjYXVzZSBpdCBpcyBjb21tb24gdG8gYWRkIHRvIHRoZSBzb3VyY2Ugc2Vh cmNoCisgICAgICBwYXRoIGluIGxvY2FsX2dkYmluaXQuICAqLworLSAgZ2RicHlfZ2xvYmFsX2F1 dG9fbG9hZCA9IHNhdmVfYXV0b19sb2FkOworKyAgZ2xvYmFsX2F1dG9fbG9hZCA9IHNhdmVfYXV0 b19sb2FkOworICAgQUxMX09CSkZJTEVTIChvYmpmaWxlKQorICAgICBsb2FkX2F1dG9fc2NyaXB0 c19mb3Jfb2JqZmlsZSAob2JqZmlsZSk7CisgCitAQCAtMTE5Niw3ICsxMjA2LDcgQEAgQXQgc3Rh cnR1cCwgR0RCIHJlYWRzIHRoZSBmb2xsb3dpbmcgaW5pdAorICIpLCBob21lX2dkYmluaXQpOwor ICAgaWYgKGxvY2FsX2dkYmluaXQpCisgICAgIGZwcmludGZfdW5maWx0ZXJlZCAoc3RyZWFtLCBf KCJcCistICAgKiBsb2NhbCBpbml0IGZpbGU6IC4vJXNcblwKKysgICAqIGxvY2FsIGluaXQgZmls ZSAoc2VlIGFsc28gJ3NldCBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCcpOiAuLyVzXG5cCisgIiks IGxvY2FsX2dkYmluaXQpOworICAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXG5cCisgRm9yIG1vcmUg aW5mb3JtYXRpb24sIHR5cGUgXCJoZWxwXCIgZnJvbSB3aXRoaW4gR0RCLCBvciBjb25zdWx0IHRo ZVxuXAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbworPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZv CTIwMTItMDQtMTggMDA6NDQ6MjYuOTI4NDM3NTc3ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEy MDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDQtMTggMDA6NDY6NDcuNTU4MDc5Nzc0ICsw MjAwCitAQCAtMTAzNCw2ICsxMDM0LDcgQEAgWW91IGNhbiBydW4gQHZhbHVle0dEQk59IGluIHZh cmlvdXMgYWx0ZQorIGJhdGNoIG1vZGUgb3IgcXVpZXQgbW9kZS4KKyAKKyBAdGFibGUgQGNvZGUK KytAYW5jaG9yey1ueH0KKyBAaXRlbSAtbngKKyBAaXRlbXggLW4KKyBAY2luZGV4IEBjb2Rley0t bnh9CitAQCAtMTI2NSw2ICsxMjY2LDcgQEAgSGVyZSdzIHRoZSBkZXNjcmlwdGlvbiBvZiB3aGF0 IEB2YWx1ZXtHRAorIFNldHMgdXAgdGhlIGNvbW1hbmQgaW50ZXJwcmV0ZXIgYXMgc3BlY2lmaWVk IGJ5IHRoZSBjb21tYW5kIGxpbmUKKyAoQHB4cmVme01vZGUgT3B0aW9ucywgaW50ZXJwcmV0ZXJ9 KS4KKyAKKytAYW5jaG9ye09wdGlvbiAtaW5pdC1ldmFsLWNvbW1hbmR9CisgQGl0ZW0KKyBFeGVj dXRlcyBjb21tYW5kcyBhbmQgY29tbWFuZCBmaWxlcyBzcGVjaWZpZWQgYnkgdGhlIEBzYW1wey1p ZXh9IGFuZAorIEBzYW1wey1peH0gb3B0aW9ucyBpbiB0aGVpciBzcGVjaWZpZWQgb3JkZXIuICBV c3VhbGx5IHlvdSBzaG91bGQgdXNlIHRoZQorQEAgLTEyNzksNiArMTI4MSw3IEBAIHVzZWQgd2hl biBidWlsZGluZyBAdmFsdWV7R0RCTn07IEBweHJlZnsKKyAgLFN5c3RlbS13aWRlIGNvbmZpZ3Vy YXRpb24gYW5kIHNldHRpbmdzfSkgYW5kIGV4ZWN1dGVzIGFsbCB0aGUgY29tbWFuZHMgaW4KKyB0 aGF0IGZpbGUuCisgCisrQGFuY2hvcntIb21lIERpcmVjdG9yeSBJbml0IEZpbGV9CisgQGl0ZW0K KyBSZWFkcyB0aGUgaW5pdCBmaWxlIChpZiBhbnkpIGluIHlvdXIgaG9tZSBkaXJlY3RvcnlAZm9v dG5vdGV7T24KKyBET1MvV2luZG93cyBzeXN0ZW1zLCB0aGUgaG9tZSBkaXJlY3RvcnkgaXMgdGhl IG9uZSBwb2ludGVkIHRvIGJ5IHRoZQorQEAgLTEyODgsOSArMTI5MSwxMiBAQCB0aGF0IGZpbGUu CisgQGl0ZW0KKyBQcm9jZXNzZXMgY29tbWFuZCBsaW5lIG9wdGlvbnMgYW5kIG9wZXJhbmRzLgor IAorK0BhbmNob3J7SW5pdCBGaWxlIGluIHRoZSBDdXJyZW50IERpcmVjdG9yeSBkdXJpbmcgU3Rh cnR1cH0KKyBAaXRlbQorIFJlYWRzIGFuZCBleGVjdXRlcyB0aGUgY29tbWFuZHMgZnJvbSBpbml0 IGZpbGUgKGlmIGFueSkgaW4gdGhlIGN1cnJlbnQKKy13b3JraW5nIGRpcmVjdG9yeS4gIFRoaXMg aXMgb25seSBkb25lIGlmIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBpcworK3dvcmtpbmcgZGlyZWN0 b3J5IGFzIGxvbmcgYXMgQHNhbXB7c2V0IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fSBpcyBzZXQg dG8KKytAc2FtcHtvbn0gKEBweHJlZntJbml0IEZpbGUgaW4gdGhlIEN1cnJlbnQgRGlyZWN0b3J5 fSkuCisrVGhpcyBpcyBvbmx5IGRvbmUgaWYgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGlzCisgZGlm ZmVyZW50IGZyb20geW91ciBob21lIGRpcmVjdG9yeS4gIFRodXMsIHlvdSBjYW4gaGF2ZSBtb3Jl IHRoYW4gb25lCisgaW5pdCBmaWxlLCBvbmUgZ2VuZXJpYyBpbiB5b3VyIGhvbWUgZGlyZWN0b3J5 LCBhbmQgYW5vdGhlciwgc3BlY2lmaWMKKyB0byB0aGUgcHJvZ3JhbSB5b3UgYXJlIGRlYnVnZ2lu ZywgaW4gdGhlIGRpcmVjdG9yeSB3aGVyZSB5b3UgaW52b2tlCitAQCAtMTMwNiw3ICsxMzEyLDcg QEAgSWYgeW91IHdpc2ggdG8gZGlzYWJsZSB0aGUgYXV0by1sb2FkaW5nCisgeW91IG11c3QgZG8g c29tZXRoaW5nIGxpa2UgdGhlIGZvbGxvd2luZzoKKyAKKyBAc21hbGxleGFtcGxlCistJCBnZGIg LWlleCAic2V0IGF1dG8tbG9hZC1zY3JpcHRzIG9mZiIgbXlwcm9ncmFtCisrJCBnZGIgLWlleCAi c2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyBvZmYiIG15cHJvZ3JhbQorIEBlbmQgc21hbGxl eGFtcGxlCisgCisgT3B0aW9uIEBzYW1wey1leH0gZG9lcyBub3Qgd29yayBiZWNhdXNlIHRoZSBh dXRvLWxvYWRpbmcgaXMgdGhlbiB0dXJuZWQKK0BAIC0yODkxLDYgKzI4OTcsNyBAQCBwcm9ncmFt cyB3aXRoIG11bHRpcGxlIHRocmVhZHMuCisgQHhyZWZ7U2V0IFdhdGNocG9pbnRzLCxTZXR0aW5n IFdhdGNocG9pbnRzfSwgZm9yIGluZm9ybWF0aW9uIGFib3V0Cisgd2F0Y2hwb2ludHMgaW4gcHJv Z3JhbXMgd2l0aCBtdWx0aXBsZSB0aHJlYWRzLgorIAorK0BhbmNob3J7c2V0IGxpYnRocmVhZC1k Yi1zZWFyY2gtcGF0aH0KKyBAdGFibGUgQGNvZGUKKyBAa2luZGV4IHNldCBsaWJ0aHJlYWQtZGIt c2VhcmNoLXBhdGgKKyBAY2luZGV4IHNlYXJjaCBwYXRoIGZvciBAY29kZXtsaWJ0aHJlYWRfZGJ9 CitAQCAtMjkwNSwxMSArMjkxMiwxNSBAQCBtYWNyby4KKyBPbiBAc2N7Z251fS9MaW51eCBhbmQg U29sYXJpcyBzeXN0ZW1zLCBAdmFsdWV7R0RCTn0gdXNlcyBhIGBgaGVscGVyJycKKyBAY29kZXts aWJ0aHJlYWRfZGJ9IGxpYnJhcnkgdG8gb2J0YWluIGluZm9ybWF0aW9uIGFib3V0IHRocmVhZHMg aW4gdGhlCisgaW5mZXJpb3IgcHJvY2Vzcy4gIEB2YWx1ZXtHREJOfSB3aWxsIHVzZSBAc2FtcHts aWJ0aHJlYWQtZGItc2VhcmNoLXBhdGh9CistdG8gZmluZCBAY29kZXtsaWJ0aHJlYWRfZGJ9Lgor K3RvIGZpbmQgQGNvZGV7bGlidGhyZWFkX2RifS4gIEB2YWx1ZXtHREJOfSBhbHNvIGNvbnN1bHRz IGZpcnN0IGlmIGluZmVyaW9yCisrc3BlY2lmaWMgdGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJ5IGxv YWRpbmcgaXMgZW5hYmxlZAorK2J5IEBzYW1we3NldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRifSAo QHB4cmVme2xpYnRocmVhZF9kYi5zby4xIGZpbGV9KS4KKyAKKyBBIHNwZWNpYWwgZW50cnkgQHNh bXB7JHNkaXJ9IGZvciBAc2FtcHtsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGh9CisgcmVmZXJzIHRv IHRoZSBkZWZhdWx0IHN5c3RlbSBkaXJlY3RvcmllcyB0aGF0IGFyZQorLW5vcm1hbGx5IHNlYXJj aGVkIGZvciBsb2FkaW5nIHNoYXJlZCBsaWJyYXJpZXMuCisrbm9ybWFsbHkgc2VhcmNoZWQgZm9y IGxvYWRpbmcgc2hhcmVkIGxpYnJhcmllcy4gIFRoZSBAc2FtcHskc2Rpcn0gZW50cnkKKytpcyB0 aGUgb25seSBraW5kIG5vdCBuZWVkaW5nIHRvIGJlIGVuYWJsZWQgYnkgQHNhbXB7c2V0IGF1dG8t bG9hZCBsaWJ0aHJlYWQtZGJ9CisrKEBweHJlZntsaWJ0aHJlYWRfZGIuc28uMSBmaWxlfSkuCisg CisgQSBzcGVjaWFsIGVudHJ5IEBzYW1weyRwZGlyfSBmb3IgQHNhbXB7bGlidGhyZWFkLWRiLXNl YXJjaC1wYXRofQorIHJlZmVycyB0byB0aGUgZGlyZWN0b3J5IGZyb20gd2hpY2ggQGNvZGV7bGli cHRocmVhZH0KK0BAIC0yMDMyMCw2ICsyMDMzMSw3IEBAIGRlc2NyaWJlZCBoZXJlLgorICogU2Ny ZWVuIFNpemU6OiAgICAgICAgICAgICAgICAgU2NyZWVuIHNpemUKKyAqIE51bWJlcnM6OiAgICAg ICAgICAgICAgICAgICAgIE51bWJlcnMKKyAqIEFCSTo6ICAgICAgICAgICAgICAgICAgICAgICAg IENvbmZpZ3VyaW5nIHRoZSBjdXJyZW50IEFCSQorKyogQXV0by1sb2FkaW5nOjogICAgICAgICAg ICAgICAgQXV0b21hdGljYWxseSBsb2FkaW5nIGFzc29jaWF0ZWQgZmlsZXMKKyAqIE1lc3NhZ2Vz L1dhcm5pbmdzOjogICAgICAgICAgIE9wdGlvbmFsIHdhcm5pbmdzIGFuZCBtZXNzYWdlcworICog RGVidWdnaW5nIE91dHB1dDo6ICAgICAgICAgICAgT3B0aW9uYWwgbWVzc2FnZXMgYWJvdXQgaW50 ZXJuYWwgaGFwcGVuaW5ncworICogT3RoZXIgTWlzYyBTZXR0aW5nczo6ICAgICAgICAgT3RoZXIg TWlzY2VsbGFuZW91cyBTZXR0aW5ncworQEAgLTIwNzQ1LDYgKzIwNzU3LDIyNyBAQCBXaXRoIG5v IGFyZ3VtZW50LCBzaG93IHRoZSBsaXN0IG9mIHN1cHBvCisgU2V0IHRoZSBjdXJyZW50IENAdHsr K30gQUJJIHRvIEB2YXJ7YWJpfSwgb3IgcmV0dXJuIHRvIGF1dG9tYXRpYyBkZXRlY3Rpb24uCisg QGVuZCB0YWJsZQorIAorK0Bub2RlIEF1dG8tbG9hZGluZworK0BzZWN0aW9uIEF1dG9tYXRpY2Fs bHkgbG9hZGluZyBhc3NvY2lhdGVkIGZpbGVzCisrQGNpbmRleCBhdXRvLWxvYWRpbmcKKysKKytA dmFsdWV7R0RCTn0gc29tZXRpbWVzIHJlYWRzIGZpbGVzIHdpdGggY29tbWFuZHMgYW5kIHNldHRp bmdzIGF1dG9tYXRpY2FsbHksCisrd2l0aG91dCBiZWluZyBleHBsaWNpdGx5IHRvbGQgc28gYnkg dGhlIHVzZXIuICBXZSBjYWxsIHRoaXMgZmVhdHVyZQorK0BkZm57YXV0by1sb2FkaW5nfS4gIFdo aWxlIGF1dG8tbG9hZGluZyBpcyB1c2VmdWwgZm9yIGF1dG9tYXRpY2FsbHkgYWRhcHRpbmcKKytA dmFsdWV7R0RCTn0gdG8gdGhlIG5lZWRzIG9mIHlvdXIgcHJvamVjdCwgaXQgY2FuIHNvbWV0aW1l cyBwcm9kdWNlIHVuZXhwZWN0ZWQKKytyZXN1bHRzIG9yIGludHJvZHVjZSBzZWN1cml0eSByaXNr cyAoZS5nLiwgaWYgdGhlIGZpbGUgY29tZXMgZnJvbSB1bnRydXN0ZWQKKytzb3VyY2VzKS4KKysK KytGb3IgdGhlc2UgcmVhc29ucywgQHZhbHVle0dEQk59IGluY2x1ZGVzIGNvbW1hbmRzIGFuZCBv cHRpb25zIHRvIGxldCB5b3UKKytjb250cm9sIHdoZW4gdG8gYXV0by1sb2FkIGZpbGVzIGFuZCB3 aGljaCBmaWxlcyBzaG91bGQgYmUgYXV0by1sb2FkZWQuCisrCisrQHRhYmxlIEBjb2RlCisrQGFu Y2hvcntzZXQgYXV0by1sb2FkIG9mZn0KKytAa2luZGV4IHNldCBhdXRvLWxvYWQgb2ZmCisrQGl0 ZW0gc2V0IGF1dG8tbG9hZCBvZmYKKytHbG9iYWxseSBkaXNhYmxlIGxvYWRpbmcgb2YgYWxsIGF1 dG8tbG9hZGVkIGZpbGVzLgorK1lvdSBtYXkgd2FudCB0byB1c2UgdGhpcyBjb21tYW5kIHdpdGgg dGhlIEBzYW1wey1pZXh9IG9wdGlvbgorKyhAcHhyZWZ7T3B0aW9uIC1pbml0LWV2YWwtY29tbWFu ZH0pIHN1Y2ggYXM6CisrQHNtYWxsZXhhbXBsZQorKyQgQGtiZHtnZGIgLWlleCAic2V0IGF1dG8t bG9hZCBvZmYiIHVudHJ1c3RlZC1leGVjdXRhYmxlIGNvcmVmaWxlfQorK0BlbmQgc21hbGxleGFt cGxlCisrCisrQmUgYXdhcmUgdGhhdCBzeXN0ZW0gaW5pdCBmaWxlIChAcHhyZWZ7U3lzdGVtLXdp ZGUgY29uZmlndXJhdGlvbn0pCisrYW5kIGluaXQgZmlsZXMgZnJvbSB5b3VyIGhvbWUgZGlyZWN0 b3J5IChAcHhyZWZ7SG9tZSBEaXJlY3RvcnkgSW5pdCBGaWxlfSkKKytzdGlsbCBnZXQgcmVhZCAo YXMgdGhleSBjb21lIGZyb20gZ2VuZXJhbGx5IHRydXN0ZWQgZGlyZWN0b3JpZXMpLgorK1RvIHBy ZXZlbnQgQHZhbHVle0dEQk59IGZyb20gYXV0by1sb2FkaW5nIGV2ZW4gdGhvc2UgaW5pdCBmaWxl cywgdXNlIHRoZQorK0BvcHRpb257LW54fSBvcHRpb24gKEBweHJlZntNb2RlIE9wdGlvbnN9KSwg aW4gYWRkaXRpb24gdG8KKytAY29kZXtzZXQgYXV0by1sb2FkIG5vfS4KKysKKytAYW5jaG9ye3No b3cgYXV0by1sb2FkfQorK0BraW5kZXggc2hvdyBhdXRvLWxvYWQKKytAaXRlbSBzaG93IGF1dG8t bG9hZAorK1Nob3cgd2hldGhlciBhdXRvLWxvYWRpbmcgb2YgZWFjaCBzcGVjaWZpYyBAc2FtcHth dXRvLWxvYWR9IGZpbGUocykgaXMgZW5hYmxlZAorK29yIGRpc2FibGVkLgorKworK0BzbWFsbGV4 YW1wbGUKKysoZ2RiKSBzaG93IGF1dG8tbG9hZAorK2dkYi1zY3JpcHRzOiAgQXV0by1sb2FkaW5n IG9mIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cyBpcyBvbi4KKytsaWJ0aHJl YWQtZGI6ICBBdXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMgbGlidGhyZWFkX2RiIGlz IG9uLgorK2xvY2FsLWdkYmluaXQ6ICBBdXRvLWxvYWRpbmcgb2YgLmdkYmluaXQgc2NyaXB0IGZy b20gY3VycmVudCBkaXJlY3RvcnkgaXMgb24uCisrcHl0aG9uLXNjcmlwdHM6ICBBdXRvLWxvYWRp bmcgb2YgUHl0aG9uIHNjcmlwdHMgaXMgb24uCisrQGVuZCBzbWFsbGV4YW1wbGUKKysKKytAYW5j aG9ye2luZm8gYXV0by1sb2FkfQorK0BraW5kZXggaW5mbyBhdXRvLWxvYWQKKytAaXRlbSBpbmZv IGF1dG8tbG9hZAorK1ByaW50IHdoZXRoZXIgZWFjaCBzcGVjaWZpYyBAc2FtcHthdXRvLWxvYWR9 IGZpbGUocykgaGF2ZSBiZWVuIGF1dG8tbG9hZGVkIG9yCisrbm90LgorKworK0BzbWFsbGV4YW1w bGUKKysoZ2RiKSBpbmZvIGF1dG8tbG9hZAorK2dkYi1zY3JpcHRzOgorK0xvYWRlZCAgU2NyaXB0 CisrWWVzICAgICAvaG9tZS91c2VyL2dkYi9nZGItZ2RiLmdkYgorK2xpYnRocmVhZC1kYjogIE5v IGF1dG8tbG9hZGVkIGxpYnRocmVhZC1kYi4KKytsb2NhbC1nZGJpbml0OiAgTG9jYWwgLmdkYmlu aXQgZmlsZSAiL2hvbWUvdXNlci9nZGIvLmdkYmluaXQiIGhhcyBiZWVuIGxvYWRlZC4KKytweXRo b24tc2NyaXB0czoKKytMb2FkZWQgIFNjcmlwdAorK1llcyAgICAgL2hvbWUvdXNlci9nZGIvZ2Ri LWdkYi5weQorK0BlbmQgc21hbGxleGFtcGxlCisrQGVuZCB0YWJsZQorKworK1RoZXNlIGFyZSB2 YXJpb3VzIGtpbmRzIG9mIGZpbGVzIEB2YWx1ZXtHREJOfSBjYW4gYXV0b21hdGljYWxseSBsb2Fk OgorKworK0BpdGVtaXplIEBidWxsZXQKKytAaXRlbQorK0B4cmVme29iamZpbGUtZ2RiLnB5IGZp bGV9LCBjb250cm9sbGVkIGJ5IEByZWZ7c2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0c30uCisr QGl0ZW0KKytAeHJlZntvYmpmaWxlLWdkYi5nZGIgZmlsZX0sIGNvbnRyb2xsZWQgYnkgQHJlZntz ZXQgYXV0by1sb2FkIGdkYi1zY3JpcHRzfS4KKytAaXRlbQorK0B4cmVme2RvdGRlYnVnX2dkYl9z Y3JpcHRzIHNlY3Rpb259LAorK2NvbnRyb2xsZWQgYnkgQHJlZntzZXQgYXV0by1sb2FkIHB5dGhv bi1zY3JpcHRzfS4KKytAaXRlbQorK0B4cmVme0luaXQgRmlsZSBpbiB0aGUgQ3VycmVudCBEaXJl Y3Rvcnl9LAorK2NvbnRyb2xsZWQgYnkgQHJlZntzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9 LgorK0BpdGVtCisrQHhyZWZ7bGlidGhyZWFkX2RiLnNvLjEgZmlsZX0sIGNvbnRyb2xsZWQgYnkg QHJlZntzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYn0uCisrQGVuZCBpdGVtaXplCisrCisrVGhl c2UgYXJlIEB2YWx1ZXtHREJOfSBjb250cm9sIGNvbW1hbmRzIGZvciB0aGUgYXV0by1sb2FkaW5n OgorKworK0BtdWx0aXRhYmxlIEBjb2x1bW5mcmFjdGlvbnMgLjUgLjUKKytAaXRlbSBAeHJlZntz ZXQgYXV0by1sb2FkIG9mZn0uCisrQHRhYiBEaXNhYmxlIGF1dG8tbG9hZGluZyBnbG9iYWxseS4K KytAaXRlbSBAeHJlZntzaG93IGF1dG8tbG9hZH0uCisrQHRhYiBTaG93IHNldHRpbmcgb2YgYWxs IGtpbmRzIG9mIGZpbGVzLgorK0BpdGVtIEB4cmVme2luZm8gYXV0by1sb2FkfS4KKytAdGFiIFNo b3cgc3RhdGUgb2YgYWxsIGtpbmRzIG9mIGZpbGVzLgorK0BpdGVtIEB4cmVme3NldCBhdXRvLWxv YWQgZ2RiLXNjcmlwdHN9LgorK0B0YWIgQ29udHJvbCBmb3IgQHZhbHVle0dEQk59IGNvbW1hbmQg c2NyaXB0cy4KKytAaXRlbSBAeHJlZntzaG93IGF1dG8tbG9hZCBnZGItc2NyaXB0c30uCisrQHRh YiBTaG93IHNldHRpbmcgb2YgQHZhbHVle0dEQk59IGNvbW1hbmQgc2NyaXB0cy4KKytAaXRlbSBA eHJlZntpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0c30uCisrQHRhYiBTaG93IHN0YXRlIG9mIEB2 YWx1ZXtHREJOfSBjb21tYW5kIHNjcmlwdHMuCisrQGl0ZW0gQHhyZWZ7c2V0IGF1dG8tbG9hZCBw eXRob24tc2NyaXB0c30uCisrQHRhYiBDb250cm9sIGZvciBAdmFsdWV7R0RCTn0gUHl0aG9uIHNj cmlwdHMuCisrQGl0ZW0gQHhyZWZ7c2hvdyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHN9LgorK0B0 YWIgU2hvdyBzZXR0aW5nIG9mIEB2YWx1ZXtHREJOfSBQeXRob24gc2NyaXB0cy4KKytAaXRlbSBA eHJlZntpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0c30uCisrQHRhYiBTaG93IHN0YXRlIG9m IEB2YWx1ZXtHREJOfSBQeXRob24gc2NyaXB0cy4KKytAaXRlbSBAeHJlZntzZXQgYXV0by1sb2Fk IGxvY2FsLWdkYmluaXR9LgorK0B0YWIgQ29udHJvbCBmb3IgaW5pdCBmaWxlIGluIHRoZSBjdXJy ZW50IGRpcmVjdG9yeS4KKytAaXRlbSBAeHJlZntzaG93IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0 fS4KKytAdGFiIFNob3cgc2V0dGluZyBvZiBpbml0IGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0 b3J5LgorK0BpdGVtIEB4cmVme2luZm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9LgorK0B0YWIg U2hvdyBzdGF0ZSBvZiBpbml0IGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgorK0BpdGVt IEB4cmVme3NldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRifS4KKytAdGFiIENvbnRyb2wgZm9yIHRo cmVhZCBkZWJ1Z2dpbmcgbGlicmFyeS4KKytAaXRlbSBAeHJlZntzaG93IGF1dG8tbG9hZCBsaWJ0 aHJlYWQtZGJ9LgorK0B0YWIgU2hvdyBzZXR0aW5nIG9mIHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFy eS4KKytAaXRlbSBAeHJlZntpbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9LgorK0B0YWIgU2hv dyBzdGF0ZSBvZiB0aHJlYWQgZGVidWdnaW5nIGxpYnJhcnkuCisrQGVuZCBtdWx0aXRhYmxlCisr CisrQG1lbnUKKysqIEluaXQgRmlsZSBpbiB0aGUgQ3VycmVudCBEaXJlY3Rvcnk6OiBAc2FtcHtz ZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fQorKyogbGlidGhyZWFkX2RiLnNv LjEgZmlsZTo6ICAgICAgICAgICAgIEBzYW1we3NldC9zaG93L2luZm8gYXV0by1sb2FkIGxpYnRo cmVhZC1kYn0KKysqIG9iamZpbGUtZ2RiLmdkYiBmaWxlOjogICAgICAgICAgICAgICBAc2FtcHtz ZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0fQorK0B4cmVme1B5dGhvbiBBdXRvLWxv YWRpbmd9LgorK0BlbmQgbWVudQorKworK0Bub2RlIEluaXQgRmlsZSBpbiB0aGUgQ3VycmVudCBE aXJlY3RvcnkKKytAc3Vic2VjdGlvbiBBdXRvbWF0aWNhbGx5IGxvYWRpbmcgaW5pdCBmaWxlIGlu IHRoZSBjdXJyZW50IGRpcmVjdG9yeQorK0BjaW5kZXggYXV0by1sb2FkaW5nIGluaXQgZmlsZSBp biB0aGUgY3VycmVudCBkaXJlY3RvcnkKKysKKytCeSBkZWZhdWx0LCBAdmFsdWV7R0RCTn0gcmVh ZHMgYW5kIGV4ZWN1dGVzIHRoZSBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzCisrZnJvbSBp bml0IGZpbGUgKGlmIGFueSkgaW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnksCisrc2Vl IEByZWZ7SW5pdCBGaWxlIGluIHRoZSBDdXJyZW50IERpcmVjdG9yeSBkdXJpbmcgU3RhcnR1cH0u CisrCisrQHRhYmxlIEBjb2RlCisrQGFuY2hvcntzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9 CisrQGtpbmRleCBzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQKKytAaXRlbSBzZXQgYXV0by1s b2FkIGxvY2FsLWdkYmluaXQgW29ufG9mZl0KKytFbmFibGUgb3IgZGlzYWJsZSB0aGUgYXV0by1s b2FkaW5nIG9mIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMKKysoQHB4cmVme1NlcXVlbmNl c30pIGZvdW5kIGluIGluaXQgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCisrCisrQGFu Y2hvcntzaG93IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fQorK0BraW5kZXggc2hvdyBhdXRvLWxv YWQgbG9jYWwtZ2RiaW5pdAorK0BpdGVtIHNob3cgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQKKytT aG93IHdoZXRoZXIgYXV0by1sb2FkaW5nIG9mIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMg ZnJvbSBpbml0IGZpbGUgaW4gdGhlCisrY3VycmVudCBkaXJlY3RvcnkgaXMgZW5hYmxlZCBvciBk aXNhYmxlZC4KKysKKytAYW5jaG9ye2luZm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9CisrQGtp bmRleCBpbmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0CisrQGl0ZW0gaW5mbyBhdXRvLWxvYWQg bG9jYWwtZ2RiaW5pdAorK1ByaW50IHdoZXRoZXIgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5k cyBmcm9tIGluaXQgZmlsZSBpbiB0aGUKKytjdXJyZW50IGRpcmVjdG9yeSBoYXZlIGJlZW4gYXV0 by1sb2FkZWQuCisrQGVuZCB0YWJsZQorKworK0Bub2RlIGxpYnRocmVhZF9kYi5zby4xIGZpbGUK KytAc3Vic2VjdGlvbiBBdXRvbWF0aWNhbGx5IGxvYWRpbmcgdGhyZWFkIGRlYnVnZ2luZyBsaWJy YXJ5CisrQGNpbmRleCBhdXRvLWxvYWRpbmcgbGlidGhyZWFkX2RiLnNvLjEKKysKKytUaGlzIGZl YXR1cmUgaXMgY3VycmVudGx5IHByZXNlbnQgb25seSBvbiBAc2N7Z251fS9MaW51eCBuYXRpdmUg aG9zdHMuCisrCisrQHZhbHVle0dEQk59IHJlYWRzIGluIHNvbWUgY2FzZXMgdGhyZWFkIGRlYnVn Z2luZyBsaWJyYXJ5IGZyb20gcGxhY2VzIHNwZWNpZmljCisrdG8gdGhlIGluZmVyaW9yIChAcHhy ZWZ7c2V0IGxpYnRocmVhZC1kYi1zZWFyY2gtcGF0aH0pLgorKworK1RoZSBzcGVjaWFsIEBzYW1w e2xpYnRocmVhZC1kYi1zZWFyY2gtcGF0aH0gZW50cnkgQHNhbXB7JHNkaXJ9IGlzIHByb2Nlc3Nl ZAorK3dpdGhvdXQgY2hlY2tpbmcgdGhpcyBAc2FtcHtzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1k Yn0gc3dpdGNoIGFzIHN5c3RlbQorK2xpYnJhcmllcyBoYXZlIHRvIGJlIHRydXN0ZWQgaW4gZ2Vu ZXJhbC4gIEluIGFsbCBvdGhlciBjYXNlcyBvZgorK0BzYW1we2xpYnRocmVhZC1kYi1zZWFyY2gt cGF0aH0gZW50cmllcyBAdmFsdWV7R0RCTn0gY2hlY2tzIGZpcnN0IGlmIEBzYW1we3NldAorK2F1 dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9IGlzIGVuYWJsZWQgYmVmb3JlIHRyeWluZyB0byBvcGVuIHN1 Y2ggdGhyZWFkIGRlYnVnZ2luZworK2xpYnJhcnkuCisrCisrQHRhYmxlIEBjb2RlCisrQGFuY2hv cntzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYn0KKytAa2luZGV4IHNldCBhdXRvLWxvYWQgbGli dGhyZWFkLWRiCisrQGl0ZW0gc2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIgW29ufG9mZl0KKytF bmFibGUgb3IgZGlzYWJsZSB0aGUgYXV0by1sb2FkaW5nIG9mIGluZmVyaW9yIHNwZWNpZmljIHRo cmVhZCBkZWJ1Z2dpbmcgbGlicmFyeS4KKysKKytAYW5jaG9ye3Nob3cgYXV0by1sb2FkIGxpYnRo cmVhZC1kYn0KKytAa2luZGV4IHNob3cgYXV0by1sb2FkIGxpYnRocmVhZC1kYgorK0BpdGVtIHNo b3cgYXV0by1sb2FkIGxpYnRocmVhZC1kYgorK1Nob3cgd2hldGhlciBhdXRvLWxvYWRpbmcgb2Yg aW5mZXJpb3Igc3BlY2lmaWMgdGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJ5IGlzCisrZW5hYmxlZCBv ciBkaXNhYmxlZC4KKysKKytAYW5jaG9ye2luZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYn0KKytA a2luZGV4IGluZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYgorK0BpdGVtIGluZm8gYXV0by1sb2Fk IGxpYnRocmVhZC1kYgorK1ByaW50IHRoZSBsaXN0IG9mIGFsbCBsb2FkZWQgaW5mZXJpb3Igc3Bl Y2lmaWMgdGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJpZXMgYW5kCisrZm9yIGVhY2ggc3VjaCBsaWJy YXJ5IHByaW50IGxpc3Qgb2YgaW5mZXJpb3IgQHZhcntwaWR9cyB1c2luZyBpdC4KKytAZW5kIHRh YmxlCisrCisrQG5vZGUgb2JqZmlsZS1nZGIuZ2RiIGZpbGUKKytAc3Vic2VjdGlvbiBUaGUgQGZp bGV7QHZhcntvYmpmaWxlfS1nZGIuZ2RifSBmaWxlCisrQGNpbmRleCBhdXRvLWxvYWRpbmcgQGZp bGV7QHZhcntvYmpmaWxlfS1nZGIuZ2RifQorKworK0B2YWx1ZXtHREJOfSB0cmllcyB0byBsb2Fk IGFuIEBmaWxle0B2YXJ7b2JqZmlsZX0tZ2RiLmdkYn0gZmlsZSBjb250YWluaW5nCisrY2FubmVk IHNlcXVlbmNlcyBvZiBjb21tYW5kcyAoQHB4cmVme1NlcXVlbmNlc30pLCBhcyBsb25nIGFzIEBz YW1we3NldAorK2F1dG8tbG9hZCBnZGItc2NyaXB0c30gaXMgc2V0IHRvIEBzYW1we29ufS4KKysK KytGb3IgbW9yZSBiYWNrZ3JvdW5kIHJlZmVyIHRvIHRoZSBzaW1pbGFyIFB5dGhvbiBzY3JpcHRz IGF1dG8tbG9hZGluZworK2Rlc2NyaXB0aW9uIChAcHhyZWZ7b2JqZmlsZS1nZGIucHkgZmlsZX0p LgorKworK0B0YWJsZSBAY29kZQorK0BhbmNob3J7c2V0IGF1dG8tbG9hZCBnZGItc2NyaXB0c30K KytAa2luZGV4IHNldCBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMKKytAaXRlbSBzZXQgYXV0by1sb2Fk IGdkYi1zY3JpcHRzIFtvbnxvZmZdCisrRW5hYmxlIG9yIGRpc2FibGUgdGhlIGF1dG8tbG9hZGlu ZyBvZiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlwdHMuCisrCisrQGFuY2hvcntz aG93IGF1dG8tbG9hZCBnZGItc2NyaXB0c30KKytAa2luZGV4IHNob3cgYXV0by1sb2FkIGdkYi1z Y3JpcHRzCisrQGl0ZW0gc2hvdyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMKKytTaG93IHdoZXRoZXIg YXV0by1sb2FkaW5nIG9mIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cyBpcyBl bmFibGVkIG9yCisrZGlzYWJsZWQuCisrCisrQGFuY2hvcntpbmZvIGF1dG8tbG9hZCBnZGItc2Ny aXB0c30KKytAa2luZGV4IGluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzCisrQGNpbmRleCBwcmlu dCBsaXN0IG9mIGF1dG8tbG9hZGVkIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0 cworK0BpdGVtIGluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzIFtAdmFye3JlZ2V4cH1dCisrUHJp bnQgdGhlIGxpc3Qgb2YgYWxsIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cyB0 aGF0IEB2YWx1ZXtHREJOfQorK2F1dG8tbG9hZGVkLgorK0BlbmQgdGFibGUKKysKKytJZiBAdmFy e3JlZ2V4cH0gaXMgc3VwcGxpZWQgb25seSBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNj cmlwdHMgd2l0aAorK21hdGNoaW5nIG5hbWVzIGFyZSBwcmludGVkLgorKworIEBub2RlIE1lc3Nh Z2VzL1dhcm5pbmdzCisgQHNlY3Rpb24gT3B0aW9uYWwgV2FybmluZ3MgYW5kIE1lc3NhZ2VzCisg CitAQCAtMjE2MTYsNyArMjE4NDksNyBAQCBhdXRvbWF0aWNhbGx5IGltcG9ydGVkIHdoZW4gQHZh bHVle0dEQk59CisgQG1lbnUKKyAqIFB5dGhvbiBDb21tYW5kczo6ICAgICAgICAgICAgIEFjY2Vz c2luZyBQeXRob24gZnJvbSBAdmFsdWV7R0RCTn0uCisgKiBQeXRob24gQVBJOjogICAgICAgICAg ICAgICAgICBBY2Nlc3NpbmcgQHZhbHVle0dEQk59IGZyb20gUHl0aG9uLgorLSogQXV0by1sb2Fk aW5nOjogICAgICAgICAgICAgICAgQXV0b21hdGljYWxseSBsb2FkaW5nIFB5dGhvbiBjb2RlLgor KyogUHl0aG9uIEF1dG8tbG9hZGluZzo6ICAgICAgICAgQXV0b21hdGljYWxseSBsb2FkaW5nIFB5 dGhvbiBjb2RlLgorICogUHl0aG9uIG1vZHVsZXM6OiAgICAgICAgICAgICAgUHl0aG9uIG1vZHVs ZXMgcHJvdmlkZWQgYnkgQHZhbHVle0dEQk59LgorIEBlbmQgbWVudQorIAorQEAgLTIyNzk5LDcg KzIzMDMyLDcgQEAgVGhpcyBwcmFjdGljZSB3aWxsIGVuYWJsZSBAdmFsdWV7R0RCTn0gdAorIHlv dXIgcHJldHR5LXByaW50ZXJzIGF0IHRoZSBzYW1lIHRpbWUsIGJlY2F1c2UgdGhleSB3aWxsIGhh dmUKKyBkaWZmZXJlbnQgbmFtZXMuCisgCistWW91IHNob3VsZCB3cml0ZSBhdXRvLWxvYWRlZCBj b2RlIChAcHhyZWZ7QXV0by1sb2FkaW5nfSkgc3VjaCB0aGF0IGl0CisrWW91IHNob3VsZCB3cml0 ZSBhdXRvLWxvYWRlZCBjb2RlIChAcHhyZWZ7UHl0aG9uIEF1dG8tbG9hZGluZ30pIHN1Y2ggdGhh dCBpdAorIGNhbiBiZSBldmFsdWF0ZWQgbXVsdGlwbGUgdGltZXMgd2l0aG91dCBjaGFuZ2luZyBp dHMgbWVhbmluZy4gIEFuCisgaWRlYWwgYXV0by1sb2FkIGZpbGUgd2lsbCBjb25zaXN0IHNvbGVs eSBvZiBAY29kZXtpbXBvcnR9cyBvZiB5b3VyCisgcHJpbnRlciBtb2R1bGVzLCBmb2xsb3dlZCBi eSBhIGNhbGwgdG8gYSByZWdpc3RlciBwcmV0dHktcHJpbnRlcnMgd2l0aAorQEAgLTIzNzYwLDcg KzIzOTkzLDcgQEAgVGhlIGZvbGxvd2luZyBvYmpmaWxlLXJlbGF0ZWQgZnVuY3Rpb25zCisgCisg QGZpbmRleCBnZGIuY3VycmVudF9vYmpmaWxlCisgQGRlZnVuIGdkYi5jdXJyZW50X29iamZpbGUg KCkKKy1XaGVuIGF1dG8tbG9hZGluZyBhIFB5dGhvbiBzY3JpcHQgKEBweHJlZntBdXRvLWxvYWRp bmd9KSwgQHZhbHVle0dEQk59CisrV2hlbiBhdXRvLWxvYWRpbmcgYSBQeXRob24gc2NyaXB0IChA cHhyZWZ7UHl0aG9uIEF1dG8tbG9hZGluZ30pLCBAdmFsdWV7R0RCTn0KKyBzZXRzIHRoZSBgYGN1 cnJlbnQgb2JqZmlsZScnIHRvIHRoZSBjb3JyZXNwb25kaW5nIG9iamZpbGUuICBUaGlzCisgZnVu Y3Rpb24gcmV0dXJucyB0aGUgY3VycmVudCBvYmpmaWxlLiAgSWYgdGhlcmUgaXMgbm8gY3VycmVu dCBvYmpmaWxlLAorIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBAY29kZXtOb25lfS4KK0BAIC0yNDY3 MSw5ICsyNDkwNCw5IEBAIHJlc29sdmUgdGhpcyB0byB0aGUgbGF6eSBzdHJpbmcncyBjaGFyYWMK KyB3cml0YWJsZS4KKyBAZW5kIGRlZnZhcgorIAorLUBub2RlIEF1dG8tbG9hZGluZworLUBzdWJz ZWN0aW9uIEF1dG8tbG9hZGluZworLUBjaW5kZXggYXV0by1sb2FkaW5nLCBQeXRob24KKytAbm9k ZSBQeXRob24gQXV0by1sb2FkaW5nCisrQHN1YnNlY3Rpb24gUHl0aG9uIEF1dG8tbG9hZGluZwor K0BjaW5kZXggUHl0aG9uIGF1dG8tbG9hZGluZworIAorIFdoZW4gYSBuZXcgb2JqZWN0IGZpbGUg aXMgcmVhZCAoZm9yIGV4YW1wbGUsIGR1ZSB0byB0aGUgQGNvZGV7ZmlsZX0KKyBjb21tYW5kLCBv ciBiZWNhdXNlIHRoZSBpbmZlcmlvciBoYXMgbG9hZGVkIGEgc2hhcmVkIGxpYnJhcnkpLAorQEAg LTI0NjkzLDMyICsyNDkyNiwzNSBAQCBBdXRvLWxvYWRpbmcgY2FuIGJlIGVuYWJsZWQgb3IgZGlz YWJsZWQsCisgYW5kIHRoZSBsaXN0IG9mIGF1dG8tbG9hZGVkIHNjcmlwdHMgY2FuIGJlIHByaW50 ZWQuCisgCisgQHRhYmxlIEBjb2RlCistQGtpbmRleCBzZXQgYXV0by1sb2FkLXNjcmlwdHMKKy1A aXRlbSBzZXQgYXV0by1sb2FkLXNjcmlwdHMgW3llc3xub10KKytAYW5jaG9ye3NldCBhdXRvLWxv YWQgcHl0aG9uLXNjcmlwdHN9CisrQGtpbmRleCBzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRz CisrQGl0ZW0gc2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyBbb258b2ZmXQorIEVuYWJsZSBv ciBkaXNhYmxlIHRoZSBhdXRvLWxvYWRpbmcgb2YgUHl0aG9uIHNjcmlwdHMuCisgCistQGtpbmRl eCBzaG93IGF1dG8tbG9hZC1zY3JpcHRzCistQGl0ZW0gc2hvdyBhdXRvLWxvYWQtc2NyaXB0cwor K0BhbmNob3J7c2hvdyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHN9CisrQGtpbmRleCBzaG93IGF1 dG8tbG9hZCBweXRob24tc2NyaXB0cworK0BpdGVtIHNob3cgYXV0by1sb2FkIHB5dGhvbi1zY3Jp cHRzCisgU2hvdyB3aGV0aGVyIGF1dG8tbG9hZGluZyBvZiBQeXRob24gc2NyaXB0cyBpcyBlbmFi bGVkIG9yIGRpc2FibGVkLgorIAorLUBraW5kZXggaW5mbyBhdXRvLWxvYWQtc2NyaXB0cworLUBj aW5kZXggcHJpbnQgbGlzdCBvZiBhdXRvLWxvYWRlZCBzY3JpcHRzCistQGl0ZW0gaW5mbyBhdXRv LWxvYWQtc2NyaXB0cyBbQHZhcntyZWdleHB9XQorLVByaW50IHRoZSBsaXN0IG9mIGFsbCBzY3Jp cHRzIHRoYXQgQHZhbHVle0dEQk59IGF1dG8tbG9hZGVkLgorK0BhbmNob3J7aW5mbyBhdXRvLWxv YWQgcHl0aG9uLXNjcmlwdHN9CisrQGtpbmRleCBpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0 cworK0BjaW5kZXggcHJpbnQgbGlzdCBvZiBhdXRvLWxvYWRlZCBQeXRob24gc2NyaXB0cworK0Bp dGVtIGluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIFtAdmFye3JlZ2V4cH1dCisrUHJpbnQg dGhlIGxpc3Qgb2YgYWxsIFB5dGhvbiBzY3JpcHRzIHRoYXQgQHZhbHVle0dEQk59IGF1dG8tbG9h ZGVkLgorIAorLUFsc28gcHJpbnRlZCBpcyB0aGUgbGlzdCBvZiBzY3JpcHRzIHRoYXQgd2VyZSBt ZW50aW9uZWQgaW4KKytBbHNvIHByaW50ZWQgaXMgdGhlIGxpc3Qgb2YgUHl0aG9uIHNjcmlwdHMg dGhhdCB3ZXJlIG1lbnRpb25lZCBpbgorIHRoZSBAY29kZXsuZGVidWdfZ2RiX3NjcmlwdHN9IHNl Y3Rpb24gYW5kIHdlcmUgbm90IGZvdW5kCisgKEBweHJlZntkb3RkZWJ1Z19nZGJfc2NyaXB0cyBz ZWN0aW9ufSkuCisgVGhpcyBpcyB1c2VmdWwgYmVjYXVzZSB0aGVpciBuYW1lcyBhcmUgbm90IHBy aW50ZWQgd2hlbiBAdmFsdWV7R0RCTn0KKyB0cmllcyB0byBsb2FkIHRoZW0gYW5kIGZhaWxzLiAg VGhlcmUgbWF5IGJlIG1hbnkgb2YgdGhlbSwgYW5kIHByaW50aW5nCisgYW4gZXJyb3IgbWVzc2Fn ZSBmb3IgZWFjaCBvbmUgaXMgcHJvYmxlbWF0aWMuCisgCistSWYgQHZhcntyZWdleHB9IGlzIHN1 cHBsaWVkIG9ubHkgc2NyaXB0cyB3aXRoIG1hdGNoaW5nIG5hbWVzIGFyZSBwcmludGVkLgorK0lm IEB2YXJ7cmVnZXhwfSBpcyBzdXBwbGllZCBvbmx5IFB5dGhvbiBzY3JpcHRzIHdpdGggbWF0Y2hp bmcgbmFtZXMgYXJlIHByaW50ZWQuCisgCisgRXhhbXBsZToKKyAKKyBAc21hbGxleGFtcGxlCist KGdkYikgaW5mbyBhdXRvLWxvYWQtc2NyaXB0cworKyhnZGIpIGluZm8gYXV0by1sb2FkIHB5dGhv bi1zY3JpcHRzCisgTG9hZGVkICBTY3JpcHQKKyBZZXMgICAgIHB5LXNlY3Rpb24tc2NyaXB0LnB5 CisgICAgICAgICBmdWxsIG5hbWU6IC90bXAvcHktc2VjdGlvbi1zY3JpcHQucHkKK0luZGV4OiBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMKKz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwky MDEyLTA0LTE4IDAwOjQ0OjI2Ljk1ODQzNzUwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjU1ODA3OTc3 NCArMDIwMAorQEAgLTMxLDI5ICszMSw1NiBAQAorIAorICNpbmNsdWRlICJweXRob24taW50ZXJu YWwuaCIKKyAKKy0vKiBOT1RFOiBJdCdzIHRyaXZpYWwgdG8gYWxzbyBzdXBwb3J0IGF1dG8tbG9h ZGluZyBub3JtYWwgZ2RiIHNjcmlwdHMuCistICAgVGhlcmUgaGFzIHlldCB0byBiZSBhIG5lZWQg c28gaXQncyBub3QgaW1wbGVtZW50ZWQuICAqLworLQorIC8qIFRoZSBzdWZmaXggb2YgcGVyLW9i amZpbGUgc2NyaXB0cyB0byBhdXRvLWxvYWQuCisgICAgRS5nLiBXaGVuIHRoZSBwcm9ncmFtIGxv YWRzIGxpYmZvby5zbywgbG9vayBmb3IgbGliZm9vLWdkYi5weS4gICovCisgI2RlZmluZSBHREJQ WV9BVVRPX0ZJTEVfTkFNRSAiLWdkYi5weSIKKyAKKy0vKiBUaGUgc2VjdGlvbiB0byBsb29rIGZv ciBzY3JpcHRzIChpbiBmaWxlIGZvcm1hdHMgdGhhdCBzdXBwb3J0IHNlY3Rpb25zKS4KKysvKiBU aGUgc2VjdGlvbiB0byBsb29rIGZvciBQeXRob24gYXV0by1sb2FkZWQgc2NyaXB0cyAoaW4gZmls ZSBmb3JtYXRzIHRoYXQKKysgICBzdXBwb3J0IHNlY3Rpb25zKS4KKyAgICBFYWNoIGVudHJ5IGlu IHRoaXMgc2VjdGlvbiBpcyBhIGJ5dGUgb2YgdmFsdWUgMSwgYW5kIHRoZW4gdGhlIG51bC10ZXJt aW5hdGVkCisgICAgbmFtZSBvZiB0aGUgc2NyaXB0LiAgVGhlIHNjcmlwdCBuYW1lIG1heSBpbmNs dWRlIGEgZGlyZWN0b3J5LgorICAgIFRoZSBsZWFkaW5nIGJ5dGUgaXMgdG8gYWxsb3cgdXB3YXJk IGNvbXBhdGlibGUgZXh0ZW5zaW9ucy4gICovCisgI2RlZmluZSBHREJQWV9BVVRPX1NFQ1RJT05f TkFNRSAiLmRlYnVnX2dkYl9zY3JpcHRzIgorIAorLS8qIFVzZXItc2V0dGFibGUgb3B0aW9uIHRv IGVuYWJsZS9kaXNhYmxlIGF1dG8tbG9hZGluZzoKKy0gICBzZXQgYXV0by1sb2FkLXNjcmlwdHMg b258b2ZmCistICAgVGhpcyBpcyB0cnVlIGlmIHdlIHNob3VsZCBhdXRvLWxvYWQgYXNzb2NpYXRl ZCBzY3JpcHRzIHdoZW4gYW4gb2JqZmlsZQorLSAgIGlzIG9wZW5lZCwgZmFsc2Ugb3RoZXJ3aXNl LgorLSAgIEF0IHRoZSBtb21lbnQsIHRoaXMgb25seSBhZmZlY3RzIHB5dGhvbiBzY3JpcHRzLCBi dXQgdGhlcmUncyBubyByZWFzb24KKy0gICBvbmUgY291bGRuJ3QgYWxzbyBoYXZlIG90aGVyIGtp bmRzIG9mIGF1dG8tbG9hZGVkIHNjcmlwdHMsIGFuZCB0aGVyZSdzCistICAgbm8gcmVhc29uIHRv IGhhdmUgdGhlbSBlYWNoIGNvbnRyb2xsZWQgYnkgYSBzZXBhcmF0ZSBmbGFnLgorLSAgIFNvIHdl IGVsaWRlICJweXRob24iIGZyb20gdGhlIG5hbWUgaGVyZSBhbmQgaW4gdGhlIG9wdGlvbi4KKy0g ICBUaGUgZmFjdCB0aGF0IGl0IGxpdmVzIGhlcmUgaXMganVzdCBhbiBpbXBsZW1lbnRhdGlvbiBk ZXRhaWwuICAqLworLXN0YXRpYyBpbnQgYXV0b19sb2FkX3NjcmlwdHMgPSAxOworKy8qIFVzZXIt c2V0dGFibGUgb3B0aW9uIHRvIGVuYWJsZS9kaXNhYmxlIGF1dG8tbG9hZGluZyBvZiBQeXRob24g c2NyaXB0czoKKysgICBzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIG9ufG9mZgorKyAgIFRo aXMgaXMgdHJ1ZSBpZiB3ZSBzaG91bGQgYXV0by1sb2FkIGFzc29jaWF0ZWQgUHl0aG9uIHNjcmlw dHMgd2hlbiBhbgorKyAgIG9iamZpbGUgaXMgb3BlbmVkLCBmYWxzZSBvdGhlcndpc2UuICAqLwor K3N0YXRpYyBpbnQgYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzID0gMTsKKysKKytzdGF0aWMgdm9p ZCBnZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwKKysJCQkJCQlGSUxFICpmaWxlLAorKwkJCQkJCWNvbnN0IGNoYXIgKmZpbGVuYW1lKTsK KysKKysvKiAic2hvdyIgY29tbWFuZCBmb3IgdGhlIGF1dG9fbG9hZF9weXRob25fc2NyaXB0cyBj b25maWd1cmF0aW9uIHZhcmlhYmxlLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3Nob3dfYXV0b19s b2FkX3B5dGhvbl9zY3JpcHRzIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAor KwkJCSAgICAgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUp CisreworKyAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiQXV0by1sb2FkaW5nIG9mIFB5dGhv biBzY3JpcHRzIGlzICVzLlxuIiksIHZhbHVlKTsKKyt9CisrCisrLyogRGVmaW5pdGlvbiBvZiBz Y3JpcHQgbGFuZ3VhZ2UgZm9yIFB5dGhvbiBzY3JpcHRzLiAgKi8KKysKKytzdGF0aWMgY29uc3Qg c3RydWN0IHNjcmlwdF9sYW5ndWFnZSBzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9uCisrICA9IHsgR0RC UFlfQVVUT19GSUxFX05BTUUsIGdkYnB5X2xvYWRfYXV0b19zY3JpcHRfZm9yX29iamZpbGUgfTsK KysKKysvKiBXcmFwcGVyIG9mIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIGZvciBz Y3JpcHRfbGFuZ3VhZ2VfcHl0aG9uLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2dkYnB5X2xvYWRf YXV0b19zY3JpcHRfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBGSUxFICpm aWxlLAorKwkJCQkgICAgY29uc3QgY2hhciAqZmlsZW5hbWUpCisreworKyAgc3RydWN0IGF1dG9f bG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87CisrCisrICAvKiBBZGQgdGhpcyBzY3JpcHQg dG8gdGhlIGhhc2ggdGFibGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIK KysgICAgIGNhbiBwcmludCBpdC4gICovCisrICBwc3BhY2VfaW5mbyA9IGdldF9hdXRvX2xvYWRf cHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7CisrICBtYXli ZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5mbywgZmlsZW5hbWUsIGZpbGVuYW1lLCAmc2NyaXB0X2xh bmd1YWdlX3B5dGhvbik7CisrCisrICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAo b2JqZmlsZSwgZmlsZSwgZmlsZW5hbWUpOworK30KKyAKKyAvKiBMb2FkIHNjcmlwdHMgc3BlY2lm aWVkIGluIE9CSkZJTEUuCisgICAgU1RBUlQsRU5EIGRlbGltaXQgYSBidWZmZXIgY29udGFpbmlu ZyBhIGxpc3Qgb2YgbnVsLXRlcm1pbmF0ZWQKK0BAIC0xMjEsNiArMTQ4LDE3IEBAIHNvdXJjZV9z ZWN0aW9uX3NjcmlwdHMgKHN0cnVjdCBvYmpmaWxlICoKKyAJICBtYWtlX2NsZWFudXBfZmNsb3Nl IChzdHJlYW0pOworIAkgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGZ1bGxfcGF0aCk7CisgCX0KKysg ICAgICBlbHNlCisrCXsKKysJICBmdWxsX3BhdGggPSBOVUxMOworKworKwkgIC8qIFdlIGRvbid0 IHRocm93IGFuIGVycm9yLCB0aGUgcHJvZ3JhbSBpcyBzdGlsbCBkZWJ1Z2dhYmxlLiAgKi8KKysJ ICBpZiAoc2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50IChwc3BhY2VfaW5mbykpCisrCSAg ICB3YXJuaW5nIChfKCJNaXNzaW5nIGF1dG8tbG9hZCBzY3JpcHRzIHJlZmVyZW5jZWQgaW4gc2Vj dGlvbiAlc1xuXAorK29mIGZpbGUgJXNcblwKKytVc2UgYGluZm8gYXV0by1sb2FkIHB5dGhvbiBb UkVHRVhQXScgdG8gbGlzdCB0aGVtLiIpLAorKwkJICAgICBHREJQWV9BVVRPX1NFQ1RJT05fTkFN RSwgb2JqZmlsZS0+bmFtZSk7CisrCX0KKyAKKyAgICAgICAvKiBJZiBvbmUgc2NyaXB0IGlzbid0 IGZvdW5kIGl0J3Mgbm90IHVuY29tbW9uIGZvciBtb3JlIHRvIG5vdCBiZQorIAkgZm91bmQgZWl0 aGVyLiAgV2UgZG9uJ3Qgd2FudCB0byBwcmludCBhbiBlcnJvciBtZXNzYWdlIGZvciBlYWNoCitA QCAtMTI5LDI0ICsxNjcsMTIgQEAgc291cmNlX3NlY3Rpb25fc2NyaXB0cyAoc3RydWN0IG9iamZp bGUgKgorIAorIAkgSVdCTiBpZiBjb21wbGFpbnRzLmMgd2VyZSBtb3JlIGdlbmVyYWwtcHVycG9z ZS4gICovCisgCistICAgICAgaW5faGFzaF90YWJsZSA9IG1heWJlX2FkZF9zY3JpcHQgKHBzcGFj ZV9pbmZvLCBmaWxlLAorLQkJCQkJb3BlbmVkID8gZnVsbF9wYXRoIDogTlVMTCk7CisrICAgICAg aW5faGFzaF90YWJsZSA9IG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBmaWxlLCBmdWxs X3BhdGgsCisrCQkJCQkmc2NyaXB0X2xhbmd1YWdlX3B5dGhvbik7CisgCistICAgICAgaWYgKCEg b3BlbmVkKQorLQl7CistCSAgLyogV2UgZG9uJ3QgdGhyb3cgYW4gZXJyb3IsIHRoZSBwcm9ncmFt IGlzIHN0aWxsIGRlYnVnZ2FibGUuICAqLworLQkgIGlmIChzY3JpcHRfbm90X2ZvdW5kX3dhcm5p bmdfcHJpbnQgKHBzcGFjZV9pbmZvKSkKKy0JICAgIHdhcm5pbmcgKF8oIk1pc3NpbmcgYXV0by1s b2FkIHNjcmlwdHMgcmVmZXJlbmNlZCBpbiBzZWN0aW9uICVzXG5cCistb2YgZmlsZSAlc1xuXAor LVVzZSBgaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyBbUkVHRVhQXScgdG8gbGlzdCB0aGVtLiIpLAor LQkJICAgICBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSwgb2JqZmlsZS0+bmFtZSk7CistCX0KKy0g ICAgICBlbHNlCistCXsKKy0JICAvKiBJZiB0aGlzIGZpbGUgaXMgbm90IGN1cnJlbnRseSBsb2Fk ZWQsIGxvYWQgaXQuICAqLworLQkgIGlmICghIGluX2hhc2hfdGFibGUpCistCSAgICBzb3VyY2Vf cHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgc3RyZWFtLCBmdWxsX3BhdGgpOwor LQl9CisrICAgICAgLyogSWYgdGhpcyBmaWxlIGlzIG5vdCBjdXJyZW50bHkgbG9hZGVkLCBsb2Fk IGl0LiAgKi8KKysgICAgICBpZiAob3BlbmVkICYmICFpbl9oYXNoX3RhYmxlKQorKwlzb3VyY2Vf cHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgc3RyZWFtLCBmdWxsX3BhdGgpOwor IAorICAgICAgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKKyAgICAgfQorQEAgLTE4MSwzNiArMjA3 LDc1IEBAIGF1dG9fbG9hZF9zZWN0aW9uX3NjcmlwdHMgKHN0cnVjdCBvYmpmaWwKKyAgIGRvX2Ns ZWFudXBzIChjbGVhbnVwcyk7CisgfQorIAorLS8qIExvYWQgYW55IGF1dG8tbG9hZGVkIHNjcmlw dHMgZm9yIE9CSkZJTEUuICAqLworKy8qIExvYWQgYW55IFB5dGhvbiBhdXRvLWxvYWRlZCBzY3Jp cHRzIGZvciBPQkpGSUxFLiAgKi8KKyAKKyB2b2lkCistbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29i amZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorK2dkYnB5X2xvYWRfYXV0b19zY3JpcHRz X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyB7CistICBpZiAoYXV0b19s b2FkX3NjcmlwdHMgJiYgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCkKKysgIGlmIChhdXRvX2xvYWRf cHl0aG9uX3NjcmlwdHMpCisgICAgIHsKKy0gICAgICBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQg KG9iamZpbGUsIEdEQlBZX0FVVE9fRklMRV9OQU1FKTsKKysgICAgICBhdXRvX2xvYWRfb2JqZmls ZV9zY3JpcHQgKG9iamZpbGUsICZzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9uKTsKKyAgICAgICBhdXRv X2xvYWRfc2VjdGlvbl9zY3JpcHRzIChvYmpmaWxlLCBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSk7 CisgICAgIH0KKyB9CisrCisrLyogV3JhcHBlciBmb3IgImluZm8gYXV0by1sb2FkIHB5dGhvbi1z Y3JpcHRzIi4gICovCisrCisrc3RhdGljIHZvaWQKKytpbmZvX2F1dG9fbG9hZF9weXRob25fc2Ny aXB0cyAoY2hhciAqcGF0dGVybiwgaW50IGZyb21fdHR5KQorK3sKKysgIGF1dG9fbG9hZF9pbmZv X3NjcmlwdHMgKHBhdHRlcm4sIGZyb21fdHR5LCAmc2NyaXB0X2xhbmd1YWdlX3B5dGhvbik7Cisr fQorIAwKKyB2b2lkCisgZ2RicHlfaW5pdGlhbGl6ZV9hdXRvX2xvYWQgKHZvaWQpCisgeworKyAg c3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmNtZDsKKysgIGNoYXIgKmNtZF9uYW1lOworKworKyAg YWRkX3NldHNob3dfYm9vbGVhbl9jbWQgKCJweXRob24tc2NyaXB0cyIsIGNsYXNzX3N1cHBvcnQs CisrCQkJICAgJmF1dG9fbG9hZF9weXRob25fc2NyaXB0cywgXygiXAorK1NldCB0aGUgZGVidWdn ZXIncyBiZWhhdmlvdXIgcmVnYXJkaW5nIGF1dG8tbG9hZGVkIFB5dGhvbiBzY3JpcHRzLiIpLCBf KCJcCisrU2hvdyB0aGUgZGVidWdnZXIncyBiZWhhdmlvdXIgcmVnYXJkaW5nIGF1dG8tbG9hZGVk IFB5dGhvbiBzY3JpcHRzLiIpLCBfKCJcCisrSWYgZW5hYmxlZCwgYXV0by1sb2FkZWQgUHl0aG9u IHNjcmlwdHMgYXJlIGxvYWRlZCB3aGVuIHRoZSBkZWJ1Z2dlciByZWFkc1xuXAorK2FuIGV4ZWN1 dGFibGUgb3Igc2hhcmVkIGxpYnJhcnkuXG5cCisrVGhpcyBvcHRpb25zIGhhcyBzZWN1cml0eSBp bXBsaWNhdGlvbnMgZm9yIHVudHJ1c3RlZCBpbmZlcmlvcnMuIiksCisrCQkJICAgTlVMTCwgc2hv d19hdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMsCisrCQkJICAgYXV0b19sb2FkX3NldF9jbWRsaXN0 X2dldCAoKSwKKysJCQkgICBhdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAoKSk7CisrCisgICBh ZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoImF1dG8tbG9hZC1zY3JpcHRzIiwgY2xhc3Nfc3VwcG9y dCwKKy0JCQkgICAmYXV0b19sb2FkX3NjcmlwdHMsIF8oIlwKKy1TZXQgdGhlIGRlYnVnZ2VyJ3Mg YmVoYXZpb3VyIHJlZ2FyZGluZyBhdXRvLWxvYWRlZCBzY3JpcHRzLiIpLCBfKCJcCistU2hvdyB0 aGUgZGVidWdnZXIncyBiZWhhdmlvdXIgcmVnYXJkaW5nIGF1dG8tbG9hZGVkIHNjcmlwdHMuIiks IF8oIlwKKy1JZiBlbmFibGVkLCBhdXRvLWxvYWRlZCBzY3JpcHRzIGFyZSBsb2FkZWQgd2hlbiB0 aGUgZGVidWdnZXIgcmVhZHNcblwKKy1hbiBleGVjdXRhYmxlIG9yIHNoYXJlZCBsaWJyYXJ5LiIp LAorLQkJCSAgIE5VTEwsIE5VTEwsCistCQkJICAgJnNldGxpc3QsCistCQkJICAgJnNob3dsaXN0 KTsKKysJCQkgICAmYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzLCBfKCJcCisrU2V0IHRoZSBkZWJ1 Z2dlcidzIGJlaGF2aW91ciByZWdhcmRpbmcgYXV0by1sb2FkZWQgUHl0aG9uIHNjcmlwdHMsICIK KysJCQkJCQkJCSAiZGVwcmVjYXRlZC4iKSwKKysJCQkgICBfKCJcCisrU2hvdyB0aGUgZGVidWdn ZXIncyBiZWhhdmlvdXIgcmVnYXJkaW5nIGF1dG8tbG9hZGVkIFB5dGhvbiBzY3JpcHRzLCAiCisr CQkJCQkJCQkgImRlcHJlY2F0ZWQuIiksCisrCQkJICAgTlVMTCwgTlVMTCwgc2hvd19hdXRvX2xv YWRfcHl0aG9uX3NjcmlwdHMsCisrCQkJICAgJnNldGxpc3QsICZzaG93bGlzdCk7CisrICBjbWRf bmFtZSA9ICJhdXRvLWxvYWQtc2NyaXB0cyI7CisrICBjbWQgPSBsb29rdXBfY21kICgmY21kX25h bWUsIHNldGxpc3QsICIiLCAtMSwgMSk7CisrICBkZXByZWNhdGVfY21kIChjbWQsICJzZXQgYXV0 by1sb2FkIHB5dGhvbi1zY3JpcHRzIik7CisrCisrICAvKiBJdCBpcyBuZWVkZWQgYmVjYXVzZSBs b29rdXBfY21kIHVwZGF0ZXMgdGhlIENNRF9OQU1FIHBvaW50ZXIuICAqLworKyAgY21kX25hbWUg PSAiYXV0by1sb2FkLXNjcmlwdHMiOworKyAgY21kID0gbG9va3VwX2NtZCAoJmNtZF9uYW1lLCBz aG93bGlzdCwgIiIsIC0xLCAxKTsKKysgIGRlcHJlY2F0ZV9jbWQgKGNtZCwgInNob3cgYXV0by1s b2FkIHB5dGhvbi1zY3JpcHRzIik7CisrCisrICBhZGRfY21kICgicHl0aG9uLXNjcmlwdHMiLCBj bGFzc19pbmZvLCBpbmZvX2F1dG9fbG9hZF9weXRob25fc2NyaXB0cywKKysJICAgXygiUHJpbnQg dGhlIGxpc3Qgb2YgYXV0b21hdGljYWxseSBsb2FkZWQgUHl0aG9uIHNjcmlwdHMuXG5cCisrVXNh Z2U6IGluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIFtSRUdFWFBdIiksCisrCSAgIGF1dG9f bG9hZF9pbmZvX2NtZGxpc3RfZ2V0ICgpKTsKKysKKysgIGNtZCA9IGFkZF9pbmZvICgiYXV0by1s b2FkLXNjcmlwdHMiLCBpbmZvX2F1dG9fbG9hZF9weXRob25fc2NyaXB0cywgXygiXAorK1ByaW50 IHRoZSBsaXN0IG9mIGF1dG9tYXRpY2FsbHkgbG9hZGVkIFB5dGhvbiBzY3JpcHRzLCBkZXByZWNh dGVkLiIpKTsKKysgIGRlcHJlY2F0ZV9jbWQgKGNtZCwgImluZm8gYXV0by1sb2FkIHB5dGhvbi1z Y3JpcHRzIik7CisgfQorIAorICNlbHNlIC8qICEgSEFWRV9QWVRIT04gKi8KKyAKKyB2b2lkCist bG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQor K2dkYnB5X2xvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSkKKyB7CisgfQorIAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9w eXRob24uaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvcHl0 aG9uL3B5dGhvbi5oCTIwMTItMDQtMTggMDA6NDQ6MjYuOTU4NDM3NTAwICswMjAwCisrKysgZ2Ri LTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5dGhvbi5oCTIwMTItMDQtMTggMDA6NDQ6MjYu OTc5NDM3NDQ2ICswMjAwCitAQCAtNDEsNyArNDEsNyBAQCBpbnQgYXBwbHlfdmFsX3ByZXR0eV9w cmludGVyIChzdHJ1Y3QgdHlwCisgCisgdm9pZCBwcmVzZXJ2ZV9weXRob25fdmFsdWVzIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgaHRhYl90IGNvcGllZF90eXBlcyk7CisgCistdm9pZCBsb2Fk X2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOworK3Zv aWQgZ2RicHlfbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlKTsKKyAKKyBpbnQgZ2RicHlfc2hvdWxkX3N0b3AgKHN0cnVjdCBicmVha3BvaW50X29i amVjdCAqYnBfb2JqKTsKKyAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvaGVscC5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIw Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9oZWxwLmV4cAkyMDEyLTAxLTA0IDA5OjE3OjQ1 LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9oZWxwLmV4cAkyMDEyLTA0LTE4IDAwOjQ0OjI2Ljk4MDQzNzQ0NCArMDIwMAorQEAg LTI0LDcgKzI0LDcgQEAKKyBnZGJfc3RhcnQKKyAKKyAjIGZvcmNlIHRoZSBoZWlnaHQgb2YgdGhl IGRlYnVnZ2VyIHRvIGJlIHByZXR0eSBsYXJnZSBzbyBubyBwYWdlcnMgZ2V0IHVzZWQKKy1nZGJf dGVzdF9ub19vdXRwdXQgInNldCBoZWlnaHQgNDAwIiAidGVzdCBzZXQgaGVpZ2h0IgorK2dkYl90 ZXN0X25vX291dHB1dCAic2V0IGhlaWdodCA1MDAiICJ0ZXN0IHNldCBoZWlnaHQiCisgCisgIyB1 c2UgYSBsYXJnZXIgZXhwZWN0IGlucHV0IGJ1ZmZlciBmb3IgbG9uZyBoZWxwIG91dHB1dHMuCisg IyB0ZXN0IGhlbHAgYWRkLXN5bWJvbC1maWxlCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9n ZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktb2JqZmlsZS1zY3JpcHQuZXhwCis9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9w eS1vYmpmaWxlLXNjcmlwdC5leHAJMjAxMi0wMS0xNiAxNzoyMTo1Mi4wMDAwMDAwMDAgKzAxMDAK KysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1vYmpm aWxlLXNjcmlwdC5leHAJMjAxMi0wNC0xOCAwMDo0Njo0Ny41NTgwNzk3NzQgKzAyMDAKK0BAIC00 MCw3ICs0MCw3IEBAIGdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgorIGdkYl9s b2FkICR7YmluZmlsZX0KKyAKKyAjIFZlcmlmeSBnZGIgbG9hZGVkIHRoZSBzY3JpcHQuCistZ2Ri X3Rlc3QgImluZm8gYXV0by1sb2FkLXNjcmlwdHMiICJZZXMuKi8ke3Rlc3RmaWxlfS1nZGIucHku KiIKKytnZGJfdGVzdCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiICJZZXMuKi8ke3Rl c3RmaWxlfS1nZGIucHkuKiIKKyAKKyBpZiAhW3J1bnRvX21haW5dIHsKKyAgICAgcGVycm9yICJj b3VsZG4ndCBydW4gdG8gbWFpbiIKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0 c3VpdGUvZ2RiLnB5dGhvbi9weS1zZWN0aW9uLXNjcmlwdC5leHAKKz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBn ZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXNlY3Rp b24tc2NyaXB0LmV4cAkyMDEyLTAxLTE2IDE3OjIxOjUyLjAwMDAwMDAwMCArMDEwMAorKysrIGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXNlY3Rpb24tc2Ny aXB0LmV4cAkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjU1ODA3OTc3NCArMDIwMAorQEAgLTUyLDExICs1 MiwxMSBAQCBnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKyBnZGJfbG9hZCAk e2JpbmZpbGV9CisgCisgIyBWZXJpZnkgZ2RiIGxvYWRlZCB0aGUgc2NyaXB0LgorLWdkYl90ZXN0 ICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIiAiWWVzLioke3Rlc3RmaWxlfS5weS4qZnVsbCBuYW1l OiAuKi8ke3Rlc3RmaWxlfS5weS4qIgorK2dkYl90ZXN0ICJpbmZvIGF1dG8tbG9hZCBweXRob24t c2NyaXB0cyIgIlllcy4qJHt0ZXN0ZmlsZX0ucHkuKmZ1bGwgbmFtZTogLiovJHt0ZXN0ZmlsZX0u cHkuKiIKKyAjIEFnYWluLCB3aXRoIGEgcmVnZXhwIHRoaXMgdGltZS4KKy1nZGJfdGVzdCAiaW5m byBhdXRvLWxvYWQtc2NyaXB0cyAke3Rlc3RmaWxlfSIgIlllcy4qJHt0ZXN0ZmlsZX0ucHkuKmZ1 bGwgbmFtZTogLiovJHt0ZXN0ZmlsZX0ucHkuKiIKKytnZGJfdGVzdCAiaW5mbyBhdXRvLWxvYWQg cHl0aG9uLXNjcmlwdHMgJHt0ZXN0ZmlsZX0iICJZZXMuKiR7dGVzdGZpbGV9LnB5LipmdWxsIG5h bWU6IC4qLyR7dGVzdGZpbGV9LnB5LioiCisgIyBBZ2Fpbiwgd2l0aCBhIHJlZ2V4cCB0aGF0IG1h dGNoZXMgbm8gc2NyaXB0cy4KKy1nZGJfdGVzdCAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyBuby1z Y3JpcHQtbWF0Y2hlcy10aGlzIiBcCisrZ2RiX3Rlc3QgImluZm8gYXV0by1sb2FkIHB5dGhvbi1z Y3JpcHRzIG5vLXNjcmlwdC1tYXRjaGVzLXRoaXMiIFwKKyAgICJObyBhdXRvLWxvYWQgc2NyaXB0 cyBtYXRjaGluZyBuby1zY3JpcHQtbWF0Y2hlcy10aGlzLiIKKyAKKyBpZiAhW3J1bnRvX21haW5d IHsKCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMTFvZjEyLnBhdGNoIGIvZ2RiLWF1dG9sb2Fk LTExb2YxMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWM2OGIw Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWF1dG9sb2FkLTExb2YxMi5wYXRjaApAQCAtMCwwICsx LDc0NCBAQAorW3BhdGNoIzQgNS84XSBzZXQgYXV0by1sb2FkIHNhZmUtcGF0aAoraHR0cDovL3Nv dXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTItMDQvbXNnMDAwOTIuaHRtbAoraHR0cDov L3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNC9tc2cwMDExNC5odG1sCisKKyMjIyBz cmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA0LzE3IDE1OjUxOjQxCTEuMTQxMTMKKyMjIyBzcmMvZ2Ri L0NoYW5nZUxvZwkyMDEyLzA0LzE3IDE1OjU0OjI4CTEuMTQxMTQKKyMjIC0xLDUgKzEsMzkgQEAK KyAyMDEyLTA0LTE3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ CisgCisrCU5ldyBvcHRpb24gInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIi4KKysJKiBORVdTOiBO ZXcgY29tbWFuZHMgInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIgorKwlhbmQgInNob3cgYXV0by1s b2FkIHNhZmUtcGF0aCIuCisrCSogYXV0by1sb2FkLmM6IEluY2x1ZGUgZ2RiX3ZlY3MuaCwgcmVh ZGxpbmUvdGlsZGUuaCBhbmQgY29tcGxldGVyLmguCisrCShhdXRvX2xvYWRfc2FmZV9wYXRoLCBh dXRvX2xvYWRfc2FmZV9wYXRoX3ZlYykKKysJKGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0 ZSwgc2V0X2F1dG9fbG9hZF9zYWZlX3BhdGgpCisrCShzaG93X2F1dG9fbG9hZF9zYWZlX3BhdGgs IGFkZF9hdXRvX2xvYWRfc2FmZV9wYXRoLCBmaWxlbmFtZV9pc19pbl9kaXIpCisrCShmaWxlbmFt ZV9pc19pbl9hdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSk6 IE5ldy4KKysJKHNvdXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpmaWxlKTogTmV3IHZhcmlhYmxlIGlz X3NhZmUuICBDYWxsCisrCWZpbGVfaXNfYXV0b19sb2FkX3NhZmUuICBSZXR1cm4gaWYgaXQgaXMg bm90LgorKwkoc3RydWN0IGxvYWRlZF9zY3JpcHQpOiBOZXcgZmllbGQgbG9hZGVkLgorKwkobWF5 YmVfYWRkX3NjcmlwdCk6IEFkZCBwYXJhbWV0ZXIgbG9hZGVkLiAgSW5pdGlhbGl6ZSBTTE9UIHdp dGggaXQuCisrCShwcmludF9zY3JpcHQpOiBVc2UgTE9BREVEIGluZGljYXRvciBpbnN0ZWFkIG9m IEZVTExfUEFUSC4gIENoYW5nZQorKwlvdXRwdXQgIk1pc3NpbmciIHRvICJObyIuCisrCShfaW5p dGlhbGl6ZV9hdXRvX2xvYWQpOiBOZXcgdmFyaWFibGUgY21kLiAgSW5pdGlhbGl6ZQorKwlhdXRv X2xvYWRfc2FmZV9wYXRoLiAgUmVnaXN0ZXIgInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIiwKKysJ InNob3cgYXV0by1sb2FkIHNhZmUtcGF0aCIgYW5kICJhZGQtYXV0by1sb2FkLXNhZmUtcGF0aCIu CisrCSogYXV0by1sb2FkLmggKG1heWJlX2FkZF9zY3JpcHQpOiBBZGQgcGFyYW1ldGVyIGxvYWRl ZC4KKysJKGZpbGVfaXNfYXV0b19sb2FkX3NhZmUpOiBOZXcgZGVjbGFyYXRpb24uCisrCSogY29u ZmlnLmluOiBSZWdlbmVyYXRlLgorKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KKysJKiBjb25m aWd1cmUuYWM6IE5ldyBwYXJhbWV0ZXJzIC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoCisrCWFu ZCAtLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aC4KKysJKiBsaW51eC10aHJlYWQtZGIuYyAo dHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21fcGRpcl8xKQorKwkodHJ5X3RocmVhZF9kYl9sb2FkX2Zy b21fZGlyKTogQ2hlY2sgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSBmaXJzdC4KKysJKiBtYWluLmMg KGNhcHR1cmVkX21haW4pOiBDaGVjayBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIGZvcgorKwlMT0NB TF9HREJJTklULgorKwkqIHB5dGhvbi9weS1hdXRvLWxvYWQuYyAoZ2RicHlfbG9hZF9hdXRvX3Nj cmlwdF9mb3Jfb2JqZmlsZSk6IE5ldworKwl2YXJpYWJsZSBpc19zYWZlLiAgQ2FsbCBmaWxlX2lz X2F1dG9fbG9hZF9zYWZlLiAgUmV0dXJuIGlmIGl0IGlzIG5vdC4KKysJKHNvdXJjZV9zZWN0aW9u X3NjcmlwdHMpOiBDYWxsIGZpbGVfaXNfYXV0b19sb2FkX3NhZmUuICBSZXR1cm4gaWYgaXQgaXMK KysJbm90LgorKworKzIwMTItMDQtMTcgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4KKysKKyAJYXV0by1sb2FkOiBJbXBsZW1lbnRhdGlvbi4KKyAJKiBORVdTOiBO ZXcgZGVzY3JpcHRpb25zIGZvciAiaW5mbyBhdXRvLWxvYWQiLAorIAkiaW5mbyBhdXRvLWxvYWQg Z2RiLXNjcmlwdHMiLCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiLAorSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL05FV1MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIw MTIwMTIwLm9yaWcvZ2RiL05FV1MJMjAxMi0wNC0xOCAwMDo0OTowMi4wMDAwMDAwMDAgKzAyMDAK KysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9ORVdTCTIwMTItMDQtMTggMDA6NDk6MzMuMjgy NzA2MzE5ICswMjAwCitAQCAtNjcsNiArNjcsMTEgQEAgc2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQt ZGIgb258b2ZmCisgc2hvdyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiCisgICBDb250cm9sIGF1dG8t bG9hZGluZyBvZiBpbmZlcmlvciBzcGVjaWZpYyB0aHJlYWQgZGVidWdnaW5nIHNoYXJlZCBsaWJy YXJ5LgorIAorK3NldCBhdXRvLWxvYWQgc2FmZS1wYXRoIDxkaXIxPls6PGRpcjI+Li4uXQorK3No b3cgYXV0by1sb2FkIHNhZmUtcGF0aAorKyAgU2V0IGEgbGlzdCBvZiBkaXJlY3RvcmllcyBmcm9t IHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzLgorKyAgVGhlIGRlbGltaXRlciAo JzonIGFib3ZlKSBtYXkgZGlmZmVyIGFjY29yZGluZyB0byB0aGUgaG9zdCBwbGF0Zm9ybS4KKysK KyAqIE5ldyBjb21tYW5kIGxpbmUgb3B0aW9ucworIAorIC0taW5pdC1jb21tYW5kPUZJTEUsIC1p eCAgICAgICAgICBMaWtlIC0tY29tbWFuZCwgLXggYnV0IGV4ZWN1dGUgaXQKK0luZGV4OiBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYworPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQu NTAuMjAxMjAxMjAub3JpZy9nZGIvYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAw MDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYwkyMDEy LTA0LTE4IDAwOjQ5OjIxLjYwNzczNjAyMCArMDIwMAorQEAgLTMyLDYgKzMyLDkgQEAKKyAjaW5j bHVkZSAiZ2RiY21kLmgiCisgI2luY2x1ZGUgImNsaS9jbGktZGVjb2RlLmgiCisgI2luY2x1ZGUg ImNsaS9jbGktc2V0c2hvdy5oIgorKyNpbmNsdWRlICJnZGJfdmVjcy5oIgorKyNpbmNsdWRlICJy ZWFkbGluZS90aWxkZS5oIgorKyNpbmNsdWRlICJjb21wbGV0ZXIuaCIKKyAKKyAvKiBUaGUgc3Vm Zml4IG9mIHBlci1vYmpmaWxlIHNjcmlwdHMgdG8gYXV0by1sb2FkIGFzIG5vbi1QeXRob24gY29t bWFuZCBmaWxlcy4KKyAgICBFLmcuIFdoZW4gdGhlIHByb2dyYW0gbG9hZHMgbGliZm9vLnNvLCBs b29rIGZvciBsaWJmb28tZ2RiLmdkYi4gICovCitAQCAtOTAsNiArOTMsMTgxIEBAIHNob3dfYXV0 b19sb2FkX2xvY2FsX2dkYmluaXQgKHN0cnVjdCB1aV8KKyAJCSAgICB2YWx1ZSk7CisgfQorIAor Ky8qIERpcmVjdG9yeSBsaXN0IHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcy4gIEl0IGlz IG5vdCBjaGVja2VkIGZvcgorKyAgIGFic29sdXRlIHBhdGhzIGJ1dCB0aGV5IGFyZSBzdHJvbmds eSByZWNvbW1lbmRlZC4gIEl0IGlzIGluaXRpYWxpemVkIGJ5CisrICAgX2luaXRpYWxpemVfYXV0 b19sb2FkLiAgKi8KKytzdGF0aWMgY2hhciAqYXV0b19sb2FkX3NhZmVfcGF0aDsKKysKKysvKiBW ZWN0b3Igb2YgZGlyZWN0b3J5IGVsZW1lbnRzIG9mIEFVVE9fTE9BRF9TQUZFX1BBVEggd2l0aCBl YWNoIG9uZSBub3JtYWxpemVkCisrICAgYnkgdGlsZGVfZXhwYW5kIGFuZCBwb3NzaWJseSBlYWNo IGVudHJpZXMgaGFzIGFkZGVkIGl0cyBnZGJfcmVhbHBhdGgKKysgICBjb3VudGVycGFydC4gICov Cisrc3RhdGljIFZFQyAoY2hhcl9wdHIpICphdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYzsKKysKKysv KiBVcGRhdGUgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMgZnJvbSBjdXJyZW50IEFVVE9fTE9BRF9T QUZFX1BBVEguICAqLworKworK3N0YXRpYyB2b2lkCisrYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNf dXBkYXRlICh2b2lkKQorK3sKKysgIFZFQyAoY2hhcl9wdHIpICpkaXJfdmVjID0gTlVMTDsKKysg IHVuc2lnbmVkIGxlbjsKKysgIGludCBpeDsKKysKKysgIGZyZWVfY2hhcl9wdHJfdmVjIChhdXRv X2xvYWRfc2FmZV9wYXRoX3ZlYyk7CisrCisrICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyA9IGRp cm5hbWVzX3RvX2NoYXJfcHRyX3ZlYyAoYXV0b19sb2FkX3NhZmVfcGF0aCk7CisrICBsZW4gPSBW RUNfbGVuZ3RoIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMpOworKworKyAgLyog QXBwbHkgdGlsZGVfZXhwYW5kIGFuZCBnZGJfcmVhbHBhdGggdG8gZWFjaCBBVVRPX0xPQURfU0FG RV9QQVRIX1ZFQworKyAgICAgZWxlbWVudC4gICovCisrICBmb3IgKGl4ID0gMDsgaXggPCBsZW47 IGl4KyspCisrICAgIHsKKysgICAgICBjaGFyICpkaXIgPSBWRUNfaW5kZXggKGNoYXJfcHRyLCBh dXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgaXgpOworKyAgICAgIGNoYXIgKmV4cGFuZGVkID0gdGls ZGVfZXhwYW5kIChkaXIpOworKyAgICAgIGNoYXIgKnJlYWxfcGF0aCA9IGdkYl9yZWFscGF0aCAo ZXhwYW5kZWQpOworKworKyAgICAgIC8qIEVuc3VyZSB0aGUgY3VycmVudCBlbnRyeSBpcyBhdCBs ZWFzdCB0aWxkZV9leHBhbmQtZWQuICAqLworKyAgICAgIHhmcmVlIChkaXIpOworKyAgICAgIFZF Q19yZXBsYWNlIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMsIGl4LCBleHBhbmRl ZCk7CisrCisrICAgICAgLyogSWYgZ2RiX3JlYWxwYXRoIHJldHVybnMgYSBkaWZmZXJlbnQgY29u dGVudCwgYXBwZW5kIGl0LiAgKi8KKysgICAgICBpZiAoc3RyY21wIChyZWFsX3BhdGgsIGV4cGFu ZGVkKSA9PSAwKQorKwl4ZnJlZSAocmVhbF9wYXRoKTsKKysgICAgICBlbHNlCisrCVZFQ19zYWZl X3B1c2ggKGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgcmVhbF9wYXRoKTsKKysg ICAgfQorK30KKysKKysvKiAic2V0IiBjb21tYW5kIGZvciB0aGUgYXV0b19sb2FkX3NhZmVfcGF0 aCBjb25maWd1cmF0aW9uIHZhcmlhYmxlLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3NldF9hdXRv X2xvYWRfc2FmZV9wYXRoIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHksIHN0cnVjdCBjbWRfbGlz dF9lbGVtZW50ICpjKQorK3sKKysgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAoKTsK Kyt9CisrCisrLyogInNob3ciIGNvbW1hbmQgZm9yIHRoZSBhdXRvX2xvYWRfc2FmZV9wYXRoIGNv bmZpZ3VyYXRpb24gdmFyaWFibGUuICAqLworKworK3N0YXRpYyB2b2lkCisrc2hvd19hdXRvX2xv YWRfc2FmZV9wYXRoIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAorKwkJCSAg c3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQorK3sKKysgIGlm ICgqdmFsdWUgPT0gMCkKKysgICAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiQXV0by1sb2Fk IGZpbGVzIGFyZSBzYWZlIHRvIGxvYWQgZnJvbSBhbnkgIgorKwkJCSAgICAgICJkaXJlY3Rvcnku XG4iKSk7CisrICBlbHNlCisrICAgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIkxpc3Qgb2Yg ZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZlIHRvICIKKysJCQkgICAgICAiYXV0by1s b2FkIGZpbGVzIGlzICVzLlxuIiksCisrCQkgICAgICB2YWx1ZSk7CisrfQorKworKy8qICJhZGQt YXV0by1sb2FkLXNhZmUtcGF0aCIgY29tbWFuZCBmb3IgdGhlIGF1dG9fbG9hZF9zYWZlX3BhdGgg Y29uZmlndXJhdGlvbgorKyAgIHZhcmlhYmxlLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2FkZF9h dXRvX2xvYWRfc2FmZV9wYXRoIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCisreworKyAgY2hh ciAqczsKKysKKysgIGlmIChhcmdzID09IE5VTEwgfHwgKmFyZ3MgPT0gMCkKKysgICAgZXJyb3Ig KF8oIlwKKytBZGRpbmcgZW1wdHkgZGlyZWN0b3J5IGVsZW1lbnQgZGlzYWJsZXMgdGhlIGF1dG8t bG9hZCBzYWZlLXBhdGggc2VjdXJpdHkuICBcCisrVXNlICdzZXQgYXV0by1sb2FkIHNhZmUtcGF0 aCcgaW5zdGVhZCBpZiB5b3UgbWVhbiB0aGF0LiIpKTsKKysKKysgIHMgPSB4c3RycHJpbnRmICgi JXMlYyVzIiwgYXV0b19sb2FkX3NhZmVfcGF0aCwgRElSTkFNRV9TRVBBUkFUT1IsIGFyZ3MpOwor KyAgeGZyZWUgKGF1dG9fbG9hZF9zYWZlX3BhdGgpOworKyAgYXV0b19sb2FkX3NhZmVfcGF0aCA9 IHM7CisrCisrICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKCk7CisrfQorKworKy8q IFJldHVybiAxIGlmIEZJTEVOQU1FIGlzIGVxdWFsIHRvIERJUiBvciBpZiBGSUxFTkFNRSBiZWxv bmdzIHRvIHRoZQorKyAgIHN1YmRpcmVjdG9yeSBESVIuICBSZXR1cm4gMCBvdGhlcndpc2UuICBn ZGJfcmVhbHBhdGggbm9ybWFsaXphdGlvbiBpcyBuZXZlcgorKyAgIGRvbmUgaGVyZS4gICovCisr Cisrc3RhdGljIEFUVFJJQlVURV9QVVJFIGludAorK2ZpbGVuYW1lX2lzX2luX2RpciAoY29uc3Qg Y2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKmRpcikKKyt7CisrICBzaXplX3QgZGlyX2xlbiA9 IHN0cmxlbiAoZGlyKTsKKysKKysgIHdoaWxlIChkaXJfbGVuICYmIElTX0RJUl9TRVBBUkFUT1Ig KGRpcltkaXJfbGVuIC0gMV0pKQorKyAgICBkaXJfbGVuLS07CisrCisrICByZXR1cm4gKGZpbGVu YW1lX25jbXAgKGRpciwgZmlsZW5hbWUsIGRpcl9sZW4pID09IDAKKysJICAmJiAoSVNfRElSX1NF UEFSQVRPUiAoZmlsZW5hbWVbZGlyX2xlbl0pCisrCSAgICAgIHx8IGZpbGVuYW1lW2Rpcl9sZW5d ID09ICdcMCcpKTsKKyt9CisrCisrLyogUmV0dXJuIDEgaWYgRklMRU5BTUUgYmVsb25ncyB0byBv bmUgb2YgZGlyZWN0b3J5IGNvbXBvbmVudHMgb2YKKysgICBBVVRPX0xPQURfU0FGRV9QQVRIX1ZF Qy4gIFJldHVybiAwIG90aGVyd2lzZS4KKysgICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRh dGUgaXMgbmV2ZXIgY2FsbGVkLgorKyAgICpGSUxFTkFNRV9SRUFMUCBtYXkgYmUgdXBkYXRlZCBi eSBnZGJfcmVhbHBhdGggb2YgRklMRU5BTUUgLSBpdCBoYXMgdG8gYmUKKysgICBmcmVlZCBieSB0 aGUgY2FsbGVyLiAgKi8KKysKKytzdGF0aWMgaW50CisrZmlsZW5hbWVfaXNfaW5fYXV0b19sb2Fk X3NhZmVfcGF0aF92ZWMgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLAorKwkJCQkJY2hhciAqKmZpbGVu YW1lX3JlYWxwKQorK3sKKysgIGNoYXIgKmRpcjsKKysgIGludCBpeDsKKysKKysgIGZvciAoaXgg PSAwOyBWRUNfaXRlcmF0ZSAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCBpeCwg ZGlyKTsgKytpeCkKKysgICAgaWYgKCpmaWxlbmFtZV9yZWFscCA9PSBOVUxMICYmIGZpbGVuYW1l X2lzX2luX2RpciAoZmlsZW5hbWUsIGRpcikpCisrICAgICAgYnJlYWs7CisrICAKKysgIGlmIChk aXIgPT0gTlVMTCkKKysgICAgeworKyAgICAgIGlmICgqZmlsZW5hbWVfcmVhbHAgPT0gTlVMTCkK KysJKmZpbGVuYW1lX3JlYWxwID0gZ2RiX3JlYWxwYXRoIChmaWxlbmFtZSk7CisrCisrICAgICAg Zm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92 ZWMsIGl4LCBkaXIpOworKwkgICArK2l4KQorKwlpZiAoZmlsZW5hbWVfaXNfaW5fZGlyICgqZmls ZW5hbWVfcmVhbHAsIGRpcikpCisrCSAgYnJlYWs7CisrICAgIH0KKysKKysgIGlmIChkaXIgIT0g TlVMTCkKKysgICAgcmV0dXJuIDE7CisrCisrICByZXR1cm4gMDsKKyt9CisrCisrLyogUmV0dXJu IDEgaWYgRklMRU5BTUUgaXMgbG9jYXRlZCBpbiBvbmUgb2YgdGhlIGRpcmVjdG9yaWVzIG9mCisr ICAgQVVUT19MT0FEX1NBRkVfUEFUSC4gIE90aGVyd2lzZSBjYWxsIHdhcm5pbmcgYW5kIHJldHVy biAwLiAgRklMRU5BTUUgZG9lcworKyAgIG5vdCBoYXZlIHRvIGJlIGFuIGFic29sdXRlIHBhdGgu CisrCisrICAgRXhpc3RlbmNlIG9mIEZJTEVOQU1FIGlzIG5vdCBjaGVja2VkLiAgRnVuY3Rpb24g d2lsbCBzdGlsbCBnaXZlIGEgd2FybmluZworKyAgIGV2ZW4gaWYgdGhlIGNhbGxlciB3b3VsZCBx dWlldGx5IHNraXAgbm9uLWV4aXN0aW5nIGZpbGUgaW4gdW5zYWZlCisrICAgZGlyZWN0b3J5LiAg Ki8KKysKKytpbnQKKytmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChjb25zdCBjaGFyICpmaWxlbmFt ZSkKKyt7CisrICBjaGFyICpmaWxlbmFtZV9yZWFsID0gTlVMTDsKKysgIHN0cnVjdCBjbGVhbnVw ICpiYWNrX3RvOworKworKyAgYmFja190byA9IG1ha2VfY2xlYW51cCAoZnJlZV9jdXJyZW50X2Nv bnRlbnRzLCAmZmlsZW5hbWVfcmVhbCk7CisrCisrICBpZiAoZmlsZW5hbWVfaXNfaW5fYXV0b19s b2FkX3NhZmVfcGF0aF92ZWMgKGZpbGVuYW1lLCAmZmlsZW5hbWVfcmVhbCkpCisrICAgIHsKKysg ICAgICBkb19jbGVhbnVwcyAoYmFja190byk7CisrICAgICAgcmV0dXJuIDE7CisrICAgIH0KKysK KysgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAoKTsKKysgIGlmIChmaWxlbmFtZV9p c19pbl9hdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyAoZmlsZW5hbWUsICZmaWxlbmFtZV9yZWFsKSkK KysgICAgeworKyAgICAgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKKysgICAgICByZXR1cm4gMTsK KysgICAgfQorKworKyAgd2FybmluZyAoXygiRmlsZSBcIiVzXCIgYXV0by1sb2FkaW5nIGhhcyBi ZWVuIGRlY2xpbmVkIGJ5IHlvdXIgIgorKwkgICAgICJgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0 IHRvIFwiJXNcIi4iKSwKKysJICAgZmlsZW5hbWVfcmVhbCwgYXV0b19sb2FkX3NhZmVfcGF0aCk7 CisrCisrICBkb19jbGVhbnVwcyAoYmFja190byk7CisrICByZXR1cm4gMDsKKyt9CisrCisgLyog RGVmaW5pdGlvbiBvZiBzY3JpcHQgbGFuZ3VhZ2UgZm9yIEdEQiBjYW5uZWQgc2VxdWVuY2VzIG9m IGNvbW1hbmRzLiAgKi8KKyAKKyBzdGF0aWMgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSBz Y3JpcHRfbGFuZ3VhZ2VfZ2RiCitAQCAtOTksMTMgKzI3NywyMCBAQCBzdGF0aWMgdm9pZAorIHNv dXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgRklM RSAqZmlsZSwKKyAJCQkgICAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUpCisgeworKyAgaW50IGlz X3NhZmU7CisgICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKKyAg IHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGU7CisgCisrICBpc19zYWZlID0gZmlsZV9p c19hdXRvX2xvYWRfc2FmZSAoZmlsZW5hbWUpOworKworICAgLyogQWRkIHRoaXMgc2NyaXB0IHRv IHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiCisgICAg ICBjYW4gcHJpbnQgaXQuICAqLworICAgcHNwYWNlX2luZm8gPSBnZXRfYXV0b19sb2FkX3BzcGFj ZV9kYXRhX2Zvcl9sb2FkaW5nIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpOworLSAgbWF5YmVfYWRk X3NjcmlwdCAocHNwYWNlX2luZm8sIGZpbGVuYW1lLCBmaWxlbmFtZSwgJnNjcmlwdF9sYW5ndWFn ZV9nZGIpOworKyAgbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGlzX3NhZmUsIGZpbGVu YW1lLCBmaWxlbmFtZSwKKysJCSAgICAmc2NyaXB0X2xhbmd1YWdlX2dkYik7CisrCisrICBpZiAo IWlzX3NhZmUpCisrICAgIHJldHVybjsKKyAKKyAgIFRSWV9DQVRDSCAoZSwgUkVUVVJOX01BU0tf QUxMKQorICAgICB7CitAQCAtMTQwLDYgKzMyNSw5IEBAIHN0cnVjdCBsb2FkZWRfc2NyaXB0Cisg ICAgICBpbmFjY2Vzc2libGUpLiAgKi8KKyAgIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aDsKKyAKKysg IC8qIE5vbi16ZXJvIGlmIHRoaXMgc2NyaXB0IGhhcyBiZWVuIGxvYWRlZC4gICovCisrICBpbnQg bG9hZGVkOworKworICAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2U7Cisg fTsKKyAKK0BAIC0yMzIsMTIgKzQyMCwxMyBAQCBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zv cl9sb2FkaW5nIChzCisgICByZXR1cm4gaW5mbzsKKyB9CisgCistLyogQWRkIHNjcmlwdCBOQU1F IGluIExBTkdVQUdFIHRvIGhhc2ggdGFibGUgb2YgUFNQQUNFX0lORk8uCistICAgRlVMTF9QQVRI IGlzIE5VTEwgaWYgdGhlIHNjcmlwdCB3YXNuJ3QgZm91bmQuICBUaGUgcmVzdWx0IGlzCisrLyog QWRkIHNjcmlwdCBOQU1FIGluIExBTkdVQUdFIHRvIGhhc2ggdGFibGUgb2YgUFNQQUNFX0lORk8u ICBMT0FERUQgMSBpZiB0aGUKKysgICBzY3JpcHQgaGFzIGJlZW4gKGlzIGdvaW5nIHRvKSBiZSBs b2FkZWQsIDAgb3RoZXJ3aXNlIChzdWNoIGFzIGlmIGl0IGhhcyBub3QKKysgICBiZWVuIGZvdW5k KS4gIEZVTExfUEFUSCBpcyBOVUxMIGlmIHRoZSBzY3JpcHQgd2Fzbid0IGZvdW5kLiAgVGhlIHJl c3VsdCBpcworICAgIHRydWUgaWYgdGhlIHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0aGUgaGFzaCB0 YWJsZS4gICovCisgCisgaW50CistbWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0IGF1dG9fbG9hZF9w c3BhY2VfaW5mbyAqcHNwYWNlX2luZm8sCisrbWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0IGF1dG9f bG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm8sIGludCBsb2FkZWQsCisgCQkgIGNvbnN0IGNo YXIgKm5hbWUsIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aCwKKyAJCSAgY29uc3Qgc3RydWN0IHNjcmlw dF9sYW5ndWFnZSAqbGFuZ3VhZ2UpCisgeworQEAgLTI3MSw2ICs0NjAsNyBAQCBtYXliZV9hZGRf c2NyaXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjCisgCX0KKyAgICAgICBlbHNlCisgCSgqc2xv dCktPmZ1bGxfcGF0aCA9IE5VTEw7CisrICAgICAgKCpzbG90KS0+bG9hZGVkID0gbG9hZGVkOwor ICAgICAgICgqc2xvdCktPmxhbmd1YWdlID0gbGFuZ3VhZ2U7CisgICAgIH0KKyAKK0BAIC00MzIs NyArNjIyLDcgQEAgcHJpbnRfc2NyaXB0IChzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqc2NyaQorIAor ICAgY2hhaW4gPSBtYWtlX2NsZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAodWlvdXQsIE5V TEwpOworIAorLSAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJsb2FkZWQiLCBzY3JpcHQt PmZ1bGxfcGF0aCA/ICJZZXMiIDogIk1pc3NpbmciKTsKKysgIHVpX291dF9maWVsZF9zdHJpbmcg KHVpb3V0LCAibG9hZGVkIiwgc2NyaXB0LT5sb2FkZWQgPyAiWWVzIiA6ICJObyIpOworICAgdWlf b3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJzY3JpcHQiLCBzY3JpcHQtPm5hbWUpOworICAgdWlf b3V0X3RleHQgKHVpb3V0LCAiXG4iKTsKKyAKK0BAIC03MTgsNiArOTA4LDggQEAgdm9pZCBfaW5p dGlhbGl6ZV9hdXRvX2xvYWQgKHZvaWQpOworIHZvaWQKKyBfaW5pdGlhbGl6ZV9hdXRvX2xvYWQg KHZvaWQpCisgeworKyAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmNtZDsKKysKKyAgIGF1dG9f bG9hZF9wc3BhY2VfZGF0YQorICAgICA9IHJlZ2lzdGVyX3Byb2dyYW1fc3BhY2VfZGF0YV93aXRo X2NsZWFudXAgKGF1dG9fbG9hZF9wc3BhY2VfZGF0YV9jbGVhbnVwKTsKKyAKK0BAIC03NTcsNCAr OTQ5LDMwIEBAIFRoaXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGljYXRpb25zIGYKKyAJICAg XygiUHJpbnQgd2hldGhlciBjdXJyZW50IGRpcmVjdG9yeSAuZ2RiaW5pdCBmaWxlIGhhcyBiZWVu IGxvYWRlZC5cblwKKyBVc2FnZTogaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIpLAorIAkg ICBhdXRvX2xvYWRfaW5mb19jbWRsaXN0X2dldCAoKSk7CisrCisrICBhdXRvX2xvYWRfc2FmZV9w YXRoID0geHN0cmR1cCAoREVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRIKTsKKysgIGF1dG9fbG9h ZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAoKTsKKysgIGFkZF9zZXRzaG93X29wdGlvbmFsX2ZpbGVu YW1lX2NtZCAoInNhZmUtcGF0aCIsIGNsYXNzX3N1cHBvcnQsCisrCQkJCSAgICAgJmF1dG9fbG9h ZF9zYWZlX3BhdGgsIF8oIlwKKytTZXQgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGlj aCBpdCBpcyBzYWZlIHRvIGF1dG8tbG9hZCBmaWxlcy4iKSwgXygiXAorK1Nob3cgdGhlIGxpc3Qg b2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZlIHRvIGF1dG8tbG9hZCBmaWxlcy4i KSwgXygiXAorK1ZhcmlvdXMgZmlsZXMgbG9hZGVkIGF1dG9tYXRpY2FsbHkgZm9yIHRoZSAnc2V0 IGF1dG8tbG9hZCAuLi4nIG9wdGlvbnMgbXVzdFxuXAorK2JlIGxvY2F0ZWQgaW4gb25lIG9mIHRo ZSBkaXJlY3RvcmllcyBsaXN0ZWQgYnkgdGhpcyBvcHRpb24uICBXYXJuaW5nIHdpbGwgYmVcblwK KytwcmludGVkIGFuZCBmaWxlIHdpbGwgbm90IGJlIHVzZWQgb3RoZXJ3aXNlLiAgVXNlIGVtcHR5 IHN0cmluZyAob3IgZXZlblxuXAorK2VtcHR5IGRpcmVjdG9yeSBlbnRyeSkgdG8gYWxsb3cgYW55 IGZpbGUgZm9yIHRoZSAnc2V0IGF1dG8tbG9hZCAuLi4nIG9wdGlvbnMuXG5cCisrVGhpcyBvcHRp b24gaXMgaWdub3JlZCBmb3IgdGhlIGtpbmRzIG9mIGZpbGVzIGhhdmluZyAnc2V0IGF1dG8tbG9h ZCAuLi4gb2ZmJy5cblwKKytUaGlzIG9wdGlvbnMgaGFzIHNlY3VyaXR5IGltcGxpY2F0aW9ucyBm b3IgdW50cnVzdGVkIGluZmVyaW9ycy4iKSwKKysJCQkJICAgICBzZXRfYXV0b19sb2FkX3NhZmVf cGF0aCwKKysJCQkJICAgICBzaG93X2F1dG9fbG9hZF9zYWZlX3BhdGgsCisrCQkJCSAgICAgYXV0 b19sb2FkX3NldF9jbWRsaXN0X2dldCAoKSwKKysJCQkJICAgICBhdXRvX2xvYWRfc2hvd19jbWRs aXN0X2dldCAoKSk7CisrCisrICBjbWQgPSBhZGRfY21kICgiYWRkLWF1dG8tbG9hZC1zYWZlLXBh dGgiLCBjbGFzc19zdXBwb3J0LAorKwkJIGFkZF9hdXRvX2xvYWRfc2FmZV9wYXRoLAorKwkJIF8o IkFkZCBlbnRyaWVzIHRvIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggaXQgaXMg c2FmZSAiCisrCQkgICAidG8gYXV0by1sb2FkIGZpbGVzLlxuXAorK1NlZSB0aGUgY29tbWFuZHMg J3NldCBhdXRvLWxvYWQgc2FmZS1wYXRoJyBhbmQgJ3Nob3cgYXV0by1sb2FkIHNhZmUtcGF0aCcg dG9cblwKKythY2Nlc3MgdGhlIGN1cnJlbnQgZnVsbCBsaXN0IHNldHRpbmcuIiksCisrCQkgJmNt ZGxpc3QpOworKyAgc2V0X2NtZF9jb21wbGV0ZXIgKGNtZCwgZmlsZW5hbWVfY29tcGxldGVyKTsK KyB9CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmgKKz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2F1dG8tbG9hZC5oCTIwMTItMDQt MTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv YXV0by1sb2FkLmgJMjAxMi0wNC0xOCAwMDo0OToyMS42MDc3MzYwMjAgKzAyMDAKK0BAIC0zOSw3 ICszOSw4IEBAIGV4dGVybiBpbnQgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfbG9hZGUKKyBleHRl cm4gc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqCisgICBnZXRfYXV0b19sb2FkX3BzcGFj ZV9kYXRhX2Zvcl9sb2FkaW5nIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlKTsKKyBleHRl cm4gaW50IG1heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBz cGFjZV9pbmZvLAorLQkJCSAgICAgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqZnVsbF9w YXRoLAorKwkJCSAgICAgaW50IGxvYWRlZCwgY29uc3QgY2hhciAqbmFtZSwKKysJCQkgICAgIGNv bnN0IGNoYXIgKmZ1bGxfcGF0aCwKKyAJCQkgICAgIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3Vh Z2UgKmxhbmd1YWdlKTsKKyBleHRlcm4gdm9pZCBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorIAkJCQkgICAgICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xh bmd1YWdlICpsYW5ndWFnZSk7CitAQCAtNTQsNCArNTUsNiBAQCBleHRlcm4gc3RydWN0IGNtZF9s aXN0X2VsZW1lbnQgKiphdXRvX2xvCisgZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoq YXV0b19sb2FkX3Nob3dfY21kbGlzdF9nZXQgKHZvaWQpOworIGV4dGVybiBzdHJ1Y3QgY21kX2xp c3RfZWxlbWVudCAqKmF1dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0ICh2b2lkKTsKKyAKKytleHRl cm4gaW50IGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKKysK KyAjZW5kaWYgLyogQVVUT19MT0FEX0ggKi8KK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9jb25maWcuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2Ri L2NvbmZpZy5pbgkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZy5pbgkyMDEyLTA0LTE4IDAwOjQ5OjIxLjYwNzczNjAy MCArMDIwMAorQEAgLTQzLDYgKzQzLDkgQEAKKyAgICBtb3ZlZC4gKi8KKyAjdW5kZWYgREVCVUdE SVJfUkVMT0NBVEFCTEUKKyAKKysvKiBEaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2Fk ZWQgZmlsZXMuICovCisrI3VuZGVmIERFRkFVTFRfQVVUT19MT0FEX1NBRkVfUEFUSAorKworIC8q IERlZmluZSB0byBCRkQncyBkZWZhdWx0IGFyY2hpdGVjdHVyZS4gKi8KKyAjdW5kZWYgREVGQVVM VF9CRkRfQVJDSAorIAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZQor PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlndXJlCTIw MTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvY29uZmlndXJlCTIwMTItMDQtMTggMDA6NDk6MjEuNjExNzM2MDEwICswMjAwCitAQCAt OTU1LDYgKzk1NSw3IEBAIHdpdGhfc2VwYXJhdGVfZGVidWdfZGlyCisgd2l0aF9nZGJfZGF0YWRp cgorIHdpdGhfcmVsb2NhdGVkX3NvdXJjZXMKKyB3aXRoX3JwbQorK3dpdGhfYXV0b19sb2FkX3Nh ZmVfcGF0aAorIGVuYWJsZV90YXJnZXRzCisgZW5hYmxlXzY0X2JpdF9iZmQKKyBlbmFibGVfZ2Ri Y2xpCitAQCAtMTY2Niw2ICsxNjY3LDEwIEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseSByZWxvY2F0ZSB0aGlzIHBhdGggZm9yIHNv dXJjZSBmaWxlcworICAgLS13aXRoLXJwbSAgICAgICAgICAgICAgcXVlcnkgcnBtIGRhdGFiYXNl IGZvciBtaXNzaW5nIGRlYnVnaW5mb3MgKHllcy9ubywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRlZi4gYXV0bz1saWJycG0uc28pCisrICAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aD1Q QVRICisrICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQg YXV0by1sb2FkZWQgZmlsZXMKKysgIC0td2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRoCisrICAg ICAgICAgICAgICAgICAgICAgICAgICBkbyBub3QgcmVzdHJpY3QgYXV0by1sb2FkZWQgZmlsZXMg bG9jYXRpb25zCisgICAtLXdpdGgtbGlidW53aW5kICAgICAgICB1c2UgbGlidW53aW5kIGZyYW1l IHVud2luZGluZyBzdXBwb3J0CisgICAtLXdpdGgtY3Vyc2VzICAgICAgICAgICB1c2UgdGhlIGN1 cnNlcyBsaWJyYXJ5IGluc3RlYWQgb2YgdGhlIHRlcm1jYXAKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxpYnJhcnkKK0BAIC04NDc3LDYgKzg0ODIsMzIgQEAgJGFzX2VjaG8gIiRhc19tZTog V0FSTklORzogJFJQTV9QS0dfRVJSTworICAgZmkKKyBmaQorIAorK3sgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGRlZmF1bHQgYXV0by1sb2FkIHNh ZmUtcGF0aCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGRlZmF1bHQgYXV0by1sb2Fk IHNhZmUtcGF0aC4uLiAiID4mNjsgfQorKworKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtYXV0by1s b2FkLXNhZmUtcGF0aCB3YXMgZ2l2ZW4uCisraWYgdGVzdCAiJHt3aXRoX2F1dG9fbG9hZF9zYWZl X3BhdGgrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgd2l0aHZhbD0kd2l0aF9hdXRvX2xvYWRfc2Fm ZV9wYXRoOyBpZiB0ZXN0ICIkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIiA9ICJubyI7IHRoZW4K KysgICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiIKKysgZmkKKytlbHNlCisrICB3aXRoX2F1 dG9fbG9hZF9zYWZlX3BhdGg9IiRwcmVmaXgiCisrZmkKKysKKysKKysgIHRlc3QgIngkcHJlZml4 IiA9IHhOT05FICYmIHByZWZpeD0iJGFjX2RlZmF1bHRfcHJlZml4IgorKyAgdGVzdCAieCRleGVj X3ByZWZpeCIgPSB4Tk9ORSAmJiBleGVjX3ByZWZpeD0nJHtwcmVmaXh9JworKyAgYWNfZGVmaW5l X2Rpcj1gZXZhbCBlY2hvICR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGhgCisrICBhY19kZWZpbmVf ZGlyPWBldmFsIGVjaG8gJGFjX2RlZmluZV9kaXJgCisrCisrY2F0ID4+Y29uZmRlZnMuaCA8PF9B Q0VPRgorKyNkZWZpbmUgREVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRIICIkYWNfZGVmaW5lX2Rp ciIKKytfQUNFT0YKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IHJlc3VsdDogJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCIgPiY1CisrJGFzX2VjaG8gIiR3 aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgiID4mNjsgfQorKworIAorIAorIHN1YmRpcnM9IiRzdWJk aXJzIHRlc3RzdWl0ZSIKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUu YWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZpZ3Vy ZS5hYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEyLTA0LTE4IDAwOjQ5OjIxLjYxMTczNjAxMCAr MDIwMAorQEAgLTMzOSw2ICszMzksMTggQEAgZXh0ZXJuIHJwbWRiTWF0Y2hJdGVyYXRvciBycG10 c0luaXRJdGVyYQorICAgZmkKKyBmaQorICAKKytBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBkZWZhdWx0 IGF1dG8tbG9hZCBzYWZlLXBhdGhdKQorK0FDX0FSR19XSVRIKGF1dG8tbG9hZC1zYWZlLXBhdGgs CisrQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoPVBBVEhdLCBbZGly ZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzXSkKKytBU19IRUxQX1NUUklO RyhbLS13aXRob3V0LWF1dG8tbG9hZC1zYWZlLXBhdGhdLCBbZG8gbm90IHJlc3RyaWN0IGF1dG8t bG9hZGVkIGZpbGVzIGxvY2F0aW9uc10pLAorK1tpZiB0ZXN0ICIkd2l0aF9hdXRvX2xvYWRfc2Fm ZV9wYXRoIiA9ICJubyI7IHRoZW4KKysgICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiIKKysg ZmldLAorK1t3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiRwcmVmaXgiXSkKKytBQ19ERUZJTkVf RElSKERFRkFVTFRfQVVUT19MT0FEX1NBRkVfUEFUSCwgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRo LAorKwkgICAgICBbRGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzLl0p CisrQUNfTVNHX1JFU1VMVChbJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aF0pCisrCisgQUNfQ09O RklHX1NVQkRJUlModGVzdHN1aXRlKQorIAorICMgQ2hlY2sgd2hldGhlciB0byBzdXBwb3J0IGFs dGVybmF0aXZlIHRhcmdldCBjb25maWd1cmF0aW9ucworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL2xpbnV4LXRocmVhZC1kYi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEy MDEyMC5vcmlnL2dkYi9saW51eC10aHJlYWQtZGIuYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAw MDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2xpbnV4LXRocmVhZC1kYi5j CTIwMTItMDQtMTggMDA6NDk6MjEuNjEyNzM2MDA3ICswMjAwCitAQCAtODY4LDcgKzg2OCwxMSBA QCB0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9wZGlyXzEgKHN0cnVjdCBvCisgICAvKiBUaGlzIHNo b3VsZCBhdCBtaW5pbXVtIGhpdCB0aGUgZmlyc3QgY2hhcmFjdGVyLiAgKi8KKyAgIGdkYl9hc3Nl cnQgKGNwICE9IE5VTEwpOworICAgc3RyY3B5IChjcCArIDEsIExJQlRIUkVBRF9EQl9TTyk7Cist ICByZXN1bHQgPSB0cnlfdGhyZWFkX2RiX2xvYWQgKHBhdGgpOworKworKyAgaWYgKCFmaWxlX2lz X2F1dG9fbG9hZF9zYWZlIChwYXRoKSkKKysgICAgcmVzdWx0ID0gMDsKKysgIGVsc2UKKysgICAg cmVzdWx0ID0gdHJ5X3RocmVhZF9kYl9sb2FkIChwYXRoKTsKKyAKKyAgIGRvX2NsZWFudXBzIChj bGVhbnVwKTsKKyAgIHJldHVybiByZXN1bHQ7CitAQCAtOTM0LDcgKzkzOCwxMSBAQCB0cnlfdGhy ZWFkX2RiX2xvYWRfZnJvbV9kaXIgKGNvbnN0IGNoYXIKKyAgIG1lbWNweSAocGF0aCwgZGlyLCBk aXJfbGVuKTsKKyAgIHBhdGhbZGlyX2xlbl0gPSAnLyc7CisgICBzdHJjcHkgKHBhdGggKyBkaXJf bGVuICsgMSwgTElCVEhSRUFEX0RCX1NPKTsKKy0gIHJlc3VsdCA9IHRyeV90aHJlYWRfZGJfbG9h ZCAocGF0aCk7CisrCisrICBpZiAoIWZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKHBhdGgpKQorKyAg ICByZXN1bHQgPSAwOworKyAgZWxzZQorKyAgICByZXN1bHQgPSB0cnlfdGhyZWFkX2RiX2xvYWQg KHBhdGgpOworIAorICAgZG9fY2xlYW51cHMgKGNsZWFudXApOworICAgcmV0dXJuIHJlc3VsdDsK K0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMKKz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBn ZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAw MDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYwkyMDEyLTA0 LTE4IDAwOjQ5OjIxLjYxMjczNjAwNyArMDIwMAorQEAgLTEwMjYsNyArMTAyNiw4IEBAIGNhcHR1 cmVkX21haW4gKHZvaWQgKmRhdGEpCisgICAgIHsKKyAgICAgICBhdXRvX2xvYWRfbG9jYWxfZ2Ri aW5pdF9wYXRobmFtZSA9IGdkYl9yZWFscGF0aCAobG9jYWxfZ2RiaW5pdCk7CisgCistICAgICAg aWYgKCFpbmhpYml0X2dkYmluaXQgJiYgYXV0b19sb2FkX2xvY2FsX2dkYmluaXQpCisrICAgICAg aWYgKCFpbmhpYml0X2dkYmluaXQgJiYgYXV0b19sb2FkX2xvY2FsX2dkYmluaXQKKysJICAmJiBm aWxlX2lzX2F1dG9fbG9hZF9zYWZlIChsb2NhbF9nZGJpbml0KSkKKyAJeworIAkgIGF1dG9fbG9h ZF9sb2NhbF9nZGJpbml0X2xvYWRlZCA9IDE7CisgCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvZG9jL2dkYi50ZXhpbmZvCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEy MC5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAwMDAwMDAg KzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0w NC0xOCAwMDo0OToyMS42MjA3MzU5ODcgKzAyMDAKK0BAIC0yMDgwMSw2ICsyMDgwMSw4IEBAIGdk Yi1zY3JpcHRzOiAgQXV0by1sb2FkaW5nIG9mIGNhbm5lZCBzZXEKKyBsaWJ0aHJlYWQtZGI6ICBB dXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMgbGlidGhyZWFkX2RiIGlzIG9uLgorIGxv Y2FsLWdkYmluaXQ6ICBBdXRvLWxvYWRpbmcgb2YgLmdkYmluaXQgc2NyaXB0IGZyb20gY3VycmVu dCBkaXJlY3RvcnkgaXMgb24uCisgcHl0aG9uLXNjcmlwdHM6ICBBdXRvLWxvYWRpbmcgb2YgUHl0 aG9uIHNjcmlwdHMgaXMgb24uCisrc2FmZS1wYXRoOiAgTGlzdCBvZiBkaXJlY3RvcmllcyBmcm9t IHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzCisrICAgICAgICAgICAgaXMgL3Vz ci9sb2NhbC4KKyBAZW5kIHNtYWxsZXhhbXBsZQorIAorIEBhbmNob3J7aW5mbyBhdXRvLWxvYWR9 CitAQCAtMjA4NzIsMTIgKzIwODc0LDE5IEBAIFRoZXNlIGFyZSBAdmFsdWV7R0RCTn0gY29udHJv bCBjb21tYW5kcworIEB0YWIgU2hvdyBzZXR0aW5nIG9mIHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFy eS4KKyBAaXRlbSBAeHJlZntpbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9LgorIEB0YWIgU2hv dyBzdGF0ZSBvZiB0aHJlYWQgZGVidWdnaW5nIGxpYnJhcnkuCisrQGl0ZW0gQHhyZWZ7c2V0IGF1 dG8tbG9hZCBzYWZlLXBhdGh9LgorK0B0YWIgQ29udHJvbCBkaXJlY3RvcmllcyB0cnVzdGVkIGZv ciBhdXRvbWF0aWMgbG9hZGluZy4KKytAaXRlbSBAeHJlZntzaG93IGF1dG8tbG9hZCBzYWZlLXBh dGh9LgorK0B0YWIgU2hvdyBkaXJlY3RvcmllcyB0cnVzdGVkIGZvciBhdXRvbWF0aWMgbG9hZGlu Zy4KKytAaXRlbSBAeHJlZnthZGQtYXV0by1sb2FkLXNhZmUtcGF0aH0uCisrQHRhYiBBZGQgZGly ZWN0b3J5IHRydXN0ZWQgZm9yIGF1dG9tYXRpYyBsb2FkaW5nLgorIEBlbmQgbXVsdGl0YWJsZQor IAorIEBtZW51CisgKiBJbml0IEZpbGUgaW4gdGhlIEN1cnJlbnQgRGlyZWN0b3J5OjogQHNhbXB7 c2V0L3Nob3cvaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdH0KKyAqIGxpYnRocmVhZF9kYi5z by4xIGZpbGU6OiAgICAgICAgICAgICBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBsaWJ0 aHJlYWQtZGJ9CisgKiBvYmpmaWxlLWdkYi5nZGIgZmlsZTo6ICAgICAgICAgICAgICAgQHNhbXB7 c2V0L3Nob3cvaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdH0KKysqIEF1dG8tbG9hZGluZyBzYWZl IHBhdGg6OiAgICAgICAgICAgICBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBzYWZlLXBh dGh9CisgQHhyZWZ7UHl0aG9uIEF1dG8tbG9hZGluZ30uCisgQGVuZCBtZW51CisgCitAQCAtMjA5 NzgsNiArMjA5ODcsMTA0IEBAIGF1dG8tbG9hZGVkLgorIElmIEB2YXJ7cmVnZXhwfSBpcyBzdXBw bGllZCBvbmx5IGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cyB3aXRoCisgbWF0 Y2hpbmcgbmFtZXMgYXJlIHByaW50ZWQuCisgCisrQG5vZGUgQXV0by1sb2FkaW5nIHNhZmUgcGF0 aAorK0BzdWJzZWN0aW9uIFNlY3VyaXR5IHJlc3RyaWN0aW9uIGZvciBhdXRvLWxvYWRpbmcKKytA Y2luZGV4IGF1dG8tbG9hZGluZyBzYWZlLXBhdGgKKysKKytBcyB0aGUgZmlsZXMgb2YgaW5mZXJp b3IgY2FuIGNvbWUgZnJvbSB1bnRydXN0ZWQgc291cmNlIChzdWNoIGFzIHN1Ym1pdHRlZCBieQor K2FuIGFwcGxpY2F0aW9uIHVzZXIpIEB2YWx1ZXtHREJOfSBkb2VzIG5vdCBhbHdheXMgbG9hZCBh bnkgZmlsZXMgYXV0b21hdGljYWxseS4KKytAdmFsdWV7R0RCTn0gcHJvdmlkZXMgdGhlIEBzYW1w e3NldCBhdXRvLWxvYWQgc2FmZS1wYXRofSBzZXR0aW5nIHRvIGxpc3QKKytkaXJlY3RvcmllcyB0 cnVzdGVkIGZvciBsb2FkaW5nIGZpbGVzIG5vdCBleHBsaWNpdGx5IHJlcXVlc3RlZCBieSB1c2Vy LgorKworK0lmIHRoZSBwYXRoIGlzIG5vdCBzZXQgcHJvcGVybHkgeW91IHdpbGwgc2VlIGEgd2Fy bmluZyBhbmQgdGhlIGZpbGUgd2lsbCBub3QKKytnZXQgbG9hZGVkOgorKworK0BzbWFsbGV4YW1w bGUKKyskIC4vZ2RiIC1xIC4vZ2RiCisrUmVhZGluZyBzeW1ib2xzIGZyb20gL2hvbWUvdXNlci9n ZGIvZ2RiLi4uZG9uZS4KKyt3YXJuaW5nOiBGaWxlICIvaG9tZS91c2VyL2dkYi9nZGItZ2RiLmdk YiIgYXV0by1sb2FkaW5nIGhhcyBiZWVuCisrICAgICAgICAgZGVjbGluZWQgYnkgeW91ciBgYXV0 by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvICIvdXNyL2xvY2FsIi4KKyt3YXJuaW5nOiBGaWxlICIv aG9tZS91c2VyL2dkYi9nZGItZ2RiLnB5IiBhdXRvLWxvYWRpbmcgaGFzIGJlZW4KKysgICAgICAg ICBkZWNsaW5lZCBieSB5b3VyIGBhdXRvLWxvYWQgc2FmZS1wYXRoJyBzZXQgdG8gIi91c3IvbG9j YWwiLgorK0BlbmQgc21hbGxleGFtcGxlCisrCisrVGhlIGxpc3Qgb2YgdHJ1c3RlZCBkaXJlY3Rv cmllcyBpcyBjb250cm9sbGVkIGJ5IHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6CisrCisrQHRhYmxl IEBjb2RlCisrQGFuY2hvcntzZXQgYXV0by1sb2FkIHNhZmUtcGF0aH0KKytAa2luZGV4IHNldCBh dXRvLWxvYWQgc2FmZS1wYXRoCisrQGl0ZW0gc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggQHZhcntk aXJlY3Rvcmllc30KKytTZXQgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgKGFuZCB0aGVpciBzdWJk aXJlY3RvcmllcykgdHJ1c3RlZCBmb3IgYXV0b21hdGljCisrbG9hZGluZyBhbmQgZXhlY3V0aW9u IG9mIHNjcmlwdHMuICBZb3UgY2FuIGFsc28gZW50ZXIgYSBzcGVjaWZpYyB0cnVzdGVkIGZpbGUu CisrVGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdXNlcyBkaXJlY3Rvcnkgc2VwYXJhdG9yIChAc2Ft cHs6fSBvbiBHTlUgYW5kIFVuaXgKKytzeXN0ZW1zLCBAc2FtcHs7fSBvbiBNUy1XaW5kb3dzIGFu ZCBNUy1ET1MpIHRvIHNlcGFyYXRlIGRpcmVjdG9yaWVzLCBzaW1pbGFybHkKKyt0byB0aGUgQGVu dntQQVRIfSBlbnZpcm9ubWVudCB2YXJpYWJsZS4KKysKKytAYW5jaG9ye3Nob3cgYXV0by1sb2Fk IHNhZmUtcGF0aH0KKytAa2luZGV4IHNob3cgYXV0by1sb2FkIHNhZmUtcGF0aAorK0BpdGVtIHNo b3cgYXV0by1sb2FkIHNhZmUtcGF0aAorK1Nob3cgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdHJ1 c3RlZCBmb3IgYXV0b21hdGljIGxvYWRpbmcgYW5kIGV4ZWN1dGlvbiBvZgorK3NjcmlwdHMuCisr CisrQGFuY2hvcnthZGQtYXV0by1sb2FkLXNhZmUtcGF0aH0KKytAa2luZGV4IGFkZC1hdXRvLWxv YWQtc2FmZS1wYXRoCisrQGl0ZW0gYWRkLWF1dG8tbG9hZC1zYWZlLXBhdGgKKytBZGQgYW4gZW50 cnkgKG9yIGxpc3Qgb2YgZW50cmllcykgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdHJ1c3RlZCBm b3IgYXV0b21hdGljCisrbG9hZGluZyBhbmQgZXhlY3V0aW9uIG9mIHNjcmlwdHMuICBNdWx0aXBs ZSBlbnRyaWVzIG1heSBiZSBkZWxpbWl0ZWQgYnkgdGhlCisraG9zdCBwbGF0Zm9ybSBkaXJlY3Rv cnkgc2VwYXJhdG9yIGluIHVzZS4KKytAZW5kIHRhYmxlCisrCisrU2V0dGluZyB0aGlzIHZhcmlh YmxlIHRvIGFuIGVtcHR5IHN0cmluZyBkaXNhYmxlcyB0aGlzIHNlY3VyaXR5IHByb3RlY3Rpb24u CisrVGhpcyB2YXJpYWJsZSBpcyBzdXBwb3NlZCB0byBiZSBzZXQgdG8gdGhlIHN5c3RlbSBkaXJl Y3RvcmllcyB3cml0YWJsZSBieSB0aGUKKytzeXN0ZW0gc3VwZXJ1c2VyIG9ubHkuICBVc2VycyBj YW4gYWRkIHRoZWlyIHNvdXJjZSBkaXJlY3RvcmllcyBpbiBpbml0IGZpbGVzIGluCisrdGhlaXIg aG9tZSBkaXJlY3RvcmllcyAoQHB4cmVme0hvbWUgRGlyZWN0b3J5IEluaXQgRmlsZX0pLiAgU2Vl IGFsc28gZGVwcmVjYXRlZAorK2luaXQgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkKKyso QHB4cmVme0luaXQgRmlsZSBpbiB0aGUgQ3VycmVudCBEaXJlY3RvcnkgZHVyaW5nIFN0YXJ0dXB9 KS4KKysKKytUbyBmb3JjZSBAdmFsdWV7R0RCTn0gdG8gbG9hZCB0aGUgZmlsZXMgaXQgZGVjbGlu ZWQgdG8gbG9hZCBpbiB0aGUgcHJldmlvdXMKKytleGFtcGxlLCB5b3UgY291bGQgdXNlIG9uZSBv ZiB0aGUgZm9sbG93aW5nIHdheXM6CisrCisrQGl0ZW1pemUgQGJ1bGxldAorK0BpdGVtIH4vLmdk YmluaXQ6IGFkZC1hdXRvLWxvYWQtc2FmZS1wYXRoIH4vc3JjL2dkYgorK1NwZWNpZnkgdGhpcyB0 cnVzdGVkIGRpcmVjdG9yeSAob3IgYSBmaWxlKSBhcyBhZGRpdGlvbmFsIGNvbXBvbmVudCBvZiB0 aGUgbGlzdC4KKytZb3UgaGF2ZSB0byBzcGVjaWZ5IGFsc28gYW55IGV4aXN0aW5nIGRpcmVjdG9y aWVzIGRpc3BsYXllZCBieQorK2J5IEBzYW1we3Nob3cgYXV0by1sb2FkIHNhZmUtcGF0aH0gKHN1 Y2ggYXMgQHNhbXB7L3VzcjovYmlufSBpbiB0aGlzIGV4YW1wbGUpLgorKworK0BpdGVtIEBrYmR7 Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIC91c3I6L2Jpbjp+L3NyYy9nZGIiIFtA ZG90c3t9XX0KKytTcGVjaWZ5IHRoaXMgZGlyZWN0b3J5IGFzIGluIHRoZSBwcmV2aW91cyBjYXNl IGJ1dCBqdXN0IGZvciBhIHNpbmdsZQorK0B2YWx1ZXtHREJOfSBzZXNzaW9uLgorKworK0BpdGVt IEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIiBbQGRvdHN7fV19CisrRGlz YWJsZSBhdXRvLWxvYWRpbmcgc2FmZXR5IGZvciBhIHNpbmdsZSBAdmFsdWV7R0RCTn0gc2Vzc2lv bi4KKytUaGlzIGFzc3VtZXMgYWxsIHRoZSBmaWxlcyB5b3UgZGVidWcgZHVyaW5nIHRoaXMgQHZh bHVle0dEQk59IHNlc3Npb24gd2lsbCBjb21lCisrZnJvbSB0cnVzdGVkIHNvdXJjZXMuCisrCisr QGl0ZW0gQGtiZHsuL2NvbmZpZ3VyZSAtLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aH0KKytE dXJpbmcgY29tcGlsYXRpb24gb2YgQHZhbHVle0dEQk59IHlvdSBtYXkgZGlzYWJsZSBhbnkgYXV0 by1sb2FkaW5nIHNhZmV0eS4KKytUaGlzIGFzc3VtZXMgYWxsIHRoZSBmaWxlcyB5b3Ugd2lsbCBl dmVyIGRlYnVnIHdpdGggdGhpcyBAdmFsdWV7R0RCTn0gY29tZSBmcm9tCisrdHJ1c3RlZCBzb3Vy Y2VzLgorK0BlbmQgaXRlbWl6ZQorKworK09uIHRoZSBvdGhlciBoYW5kIHlvdSBjYW4gYWxzbyBl eHBsaWNpdGx5IGZvcmJpZCBhdXRvbWF0aWMgZmlsZXMgbG9hZGluZyB3aGljaAorK2Fsc28gc3Vw cHJlc3NlcyBhbnkgc3VjaCB3YXJuaW5nIG1lc3NhZ2VzOgorKworK0BpdGVtaXplIEBidWxsZXQK KytAaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIG5vIiBbQGRvdHN7fV19CisrWW91 IGNhbiB1c2UgQHZhbHVle0dEQk59IGNvbW1hbmQtbGluZSBvcHRpb24gZm9yIGEgc2luZ2xlIEB2 YWx1ZXtHREJOfSBzZXNzaW9uLgorKworK0BpdGVtIEBzYW1we34vLmdkYmluaXR9OiBAc2FtcHtz ZXQgYXV0by1sb2FkIG5vfQorK0Rpc2FibGUgYXV0by1sb2FkaW5nIGdsb2JhbGx5IGZvciB0aGUg dXNlcgorKyhAcHhyZWZ7SG9tZSBEaXJlY3RvcnkgSW5pdCBGaWxlfSkuICBXaGlsZSBpdCBpcyBp bXByb2JhYmxlLCB5b3UgY291bGQgYWxzbworK3VzZSBzeXN0ZW0gaW5pdCBmaWxlIGluc3RlYWQg KEBweHJlZntTeXN0ZW0td2lkZSBjb25maWd1cmF0aW9ufSkuCisrQGVuZCBpdGVtaXplCisrCisr VGhpcyBzZXR0aW5nIGFwcGxpZXMgdG8gdGhlIGZpbGUgbmFtZXMgYXMgZW50ZXJlZCBieSB1c2Vy LiAgSWYgbm8gZW50cnkgbWF0Y2hlcworK0B2YWx1ZXtHREJOfSB0cmllcyBhcyBhIGxhc3QgcmVz b3J0IHRvIGFsc28gcmVzb2x2ZSBhbGwgdGhlIGZpbGUgbmFtZXMgaW50bworK3RoZWlyIGNhbm9u aWNhbCBmb3JtICh0eXBpY2FsbHkgcmVzb2x2aW5nIHN5bWJvbGljIGxpbmtzKSBhbmQgY29tcGFy ZSB0aGUKKytlbnRyaWVzIGFnYWluLiAgQHZhbHVle0dEQk59IGFscmVhZHkgY2Fub25pY2FsaXpl cyBtb3N0IG9mIHRoZSBmaWxlbmFtZXMgb24gaXRzCisrb3duIGJlZm9yZSBzdGFydGluZyB0aGUg Y29tcGFyaXNvbiBzbyBhIGNhbm9uaWNhbCBmb3JtIG9mIGRpcmVjdG9yaWVzIGlzCisrcmVjb21t ZW5kZWQgdG8gYmUgZW50ZXJlZC4KKysKKyBAbm9kZSBNZXNzYWdlcy9XYXJuaW5ncworIEBzZWN0 aW9uIE9wdGlvbmFsIFdhcm5pbmdzIGFuZCBNZXNzYWdlcworIAorQEAgLTI0OTU1LDEwICsyNTA2 MiwxMCBAQCBFeGFtcGxlOgorIAorIEBzbWFsbGV4YW1wbGUKKyAoZ2RiKSBpbmZvIGF1dG8tbG9h ZCBweXRob24tc2NyaXB0cworLUxvYWRlZCAgU2NyaXB0CistWWVzICAgICBweS1zZWN0aW9uLXNj cmlwdC5weQorLSAgICAgICAgZnVsbCBuYW1lOiAvdG1wL3B5LXNlY3Rpb24tc2NyaXB0LnB5Cist TWlzc2luZyBteS1mb28tcHJldHR5LXByaW50ZXJzLnB5CisrTG9hZGVkIFNjcmlwdAorK1llcyAg ICBweS1zZWN0aW9uLXNjcmlwdC5weQorKyAgICAgICBmdWxsIG5hbWU6IC90bXAvcHktc2VjdGlv bi1zY3JpcHQucHkKKytObyAgICAgbXktZm9vLXByZXR0eS1wcmludGVycy5weQorIEBlbmQgc21h bGxleGFtcGxlCisgQGVuZCB0YWJsZQorIAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L3B5dGhvbi9weS1hdXRvLWxvYWQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAx MjAub3JpZy9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6NDY6NDcuMDAw MDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5LWF1dG8t bG9hZC5jCTIwMTItMDQtMTggMDA6NDk6MjEuNjIxNzM1OTg1ICswMjAwCitAQCAtNzIsMTQgKzcy LDE5IEBAIHN0YXRpYyB2b2lkCisgZ2RicHlfbG9hZF9hdXRvX3NjcmlwdF9mb3Jfb2JqZmlsZSAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUsIEZJTEUgKmZpbGUsCisgCQkJCSAgICBjb25zdCBjaGFy ICpmaWxlbmFtZSkKKyB7CisrICBpbnQgaXNfc2FmZTsKKyAgIHN0cnVjdCBhdXRvX2xvYWRfcHNw YWNlX2luZm8gKnBzcGFjZV9pbmZvOworIAorKyAgaXNfc2FmZSA9IGZpbGVfaXNfYXV0b19sb2Fk X3NhZmUgKGZpbGVuYW1lKTsKKysKKyAgIC8qIEFkZCB0aGlzIHNjcmlwdCB0byB0aGUgaGFzaCB0 YWJsZSB0b28gc28gImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIgorICAgICAgY2FuIHBy aW50IGl0LiAgKi8KKyAgIHBzcGFjZV9pbmZvID0gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9m b3JfbG9hZGluZyAoY3VycmVudF9wcm9ncmFtX3NwYWNlKTsKKy0gIG1heWJlX2FkZF9zY3JpcHQg KHBzcGFjZV9pbmZvLCBmaWxlbmFtZSwgZmlsZW5hbWUsICZzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9u KTsKKysgIG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBpc19zYWZlLCBmaWxlbmFtZSwg ZmlsZW5hbWUsCisrCQkgICAgJnNjcmlwdF9sYW5ndWFnZV9weXRob24pOworIAorLSAgc291cmNl X3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUsIGZpbGUsIGZpbGVuYW1lKTsKKysg IGlmIChpc19zYWZlKQorKyAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2Jq ZmlsZSwgZmlsZSwgZmlsZW5hbWUpOworIH0KKyAKKyAvKiBMb2FkIHNjcmlwdHMgc3BlY2lmaWVk IGluIE9CSkZJTEUuCitAQCAtMTQ3LDYgKzE1Miw5IEBAIHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMg KHN0cnVjdCBvYmpmaWxlICoKKyAJeworIAkgIG1ha2VfY2xlYW51cF9mY2xvc2UgKHN0cmVhbSk7 CisgCSAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZnVsbF9wYXRoKTsKKysKKysJICBpZiAoIWZpbGVf aXNfYXV0b19sb2FkX3NhZmUgKGZ1bGxfcGF0aCkpCisrCSAgICBvcGVuZWQgPSAwOworIAl9Cisg ICAgICAgZWxzZQorIAl7CitAQCAtMTY3LDcgKzE3NSw3IEBAIFVzZSBgaW5mbyBhdXRvLWxvYWQg cHl0aG9uIFtSRUdFWFBdJyB0bworIAorIAkgSVdCTiBpZiBjb21wbGFpbnRzLmMgd2VyZSBtb3Jl IGdlbmVyYWwtcHVycG9zZS4gICovCisgCistICAgICAgaW5faGFzaF90YWJsZSA9IG1heWJlX2Fk ZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBmaWxlLCBmdWxsX3BhdGgsCisrICAgICAgaW5faGFzaF90 YWJsZSA9IG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBvcGVuZWQsIGZpbGUsIGZ1bGxf cGF0aCwKKyAJCQkJCSZzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9uKTsKKyAKKyAgICAgICAvKiBJZiB0 aGlzIGZpbGUgaXMgbm90IGN1cnJlbnRseSBsb2FkZWQsIGxvYWQgaXQuICAqLworSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW9iamZpbGUtc2Ny aXB0LmV4cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvdGVz dHN1aXRlL2dkYi5weXRob24vcHktb2JqZmlsZS1zY3JpcHQuZXhwCTIwMTItMDQtMTggMDA6NDY6 NDcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRl L2dkYi5weXRob24vcHktb2JqZmlsZS1zY3JpcHQuZXhwCTIwMTItMDQtMTggMDA6NDk6MjEuNjIx NzM1OTg1ICswMjAwCitAQCAtMzcsNiArMzcsNyBAQCBpZiB7IFtza2lwX3B5dGhvbl90ZXN0c10g fSB7IGNvbnRpbnVlIH0KKyBzZXQgcmVtb3RlX3B5dGhvbl9maWxlIFtyZW1vdGVfZG93bmxvYWQg aG9zdCAke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LWdkYi5weS5pbiAke3N1YmRpcn0v JHt0ZXN0ZmlsZX0tZ2RiLnB5XQorIAorIGdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1 YmRpcgorK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggJHtyZW1v dGVfcHl0aG9uX2ZpbGV9IiAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiCisgZ2RiX2xvYWQgJHti aW5maWxlfQorIAorICMgVmVyaWZ5IGdkYiBsb2FkZWQgdGhlIHNjcmlwdC4KK0luZGV4OiBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1zZWN0aW9uLXNjcmlw dC5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3Rlc3Rz dWl0ZS9nZGIucHl0aG9uL3B5LXNlY3Rpb24tc2NyaXB0LmV4cAkyMDEyLTA0LTE4IDAwOjQ2OjQ3 LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9n ZGIucHl0aG9uL3B5LXNlY3Rpb24tc2NyaXB0LmV4cAkyMDEyLTA0LTE4IDAwOjQ5OjIxLjYyMTcz NTk4NSArMDIwMAorQEAgLTQ5LDYgKzQ5LDcgQEAgaWYgeyBbc2tpcF9weXRob25fdGVzdHNdIH0g eyBjb250aW51ZSB9Cisgc2V0IHJlbW90ZV9weXRob25fZmlsZSBbcmVtb3RlX2Rvd25sb2FkIGhv c3QgJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS5weV0KKyAKKyBnZGJfcmVpbml0aWFs aXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKytnZGJfdGVzdF9ub19vdXRwdXQgInNldCBhdXRvLWxv YWQgc2FmZS1wYXRoICR7cmVtb3RlX3B5dGhvbl9maWxlfSIgInNldCBhdXRvLWxvYWQgc2FmZS1w YXRoIgorIGdkYl9sb2FkICR7YmluZmlsZX0KKyAKKyAjIFZlcmlmeSBnZGIgbG9hZGVkIHRoZSBz Y3JpcHQuCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTEyb2YxMi5wYXRjaCBiL2dkYi1hdXRv bG9hZC0xMm9mMTIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzky YmRiYwotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1hdXRvbG9hZC0xMm9mMTIucGF0Y2gKQEAgLTAs MCArMSwzNTIgQEAKK1twYXRjaCM0IDYvOF0gc2V0IGRlYnVnIGF1dG8tbG9hZAoraHR0cDovL3Nv dXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTItMDQvbXNnMDAwODkuaHRtbAoraHR0cDov L3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNC9tc2cwMDExNS5odG1sCisKKyMjIyBz cmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA0LzE3IDE1OjU0OjI4CTEuMTQxMTQKKyMjIyBzcmMvZ2Ri L0NoYW5nZUxvZwkyMDEyLzA0LzE3IDE1OjU2OjIwCTEuMTQxMTUKKyMjIC0xLDUgKzEsMjcgQEAK KyAyMDEyLTA0LTE3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ CisgCisrCU5ldyBvcHRpb24gInNldCBkZWJ1ZyBhdXRvLWxvYWQiLgorKwkqIE5FV1M6IE5ldyBj b21tYW5kcyAic2V0IGRlYnVnIGF1dG8tbG9hZCIgYW5kICJzaG93IGRlYnVnIGF1dG8tbG9hZCIu CisrCSogYXV0by1sb2FkLmMgKGRlYnVnX2F1dG9fbG9hZCwgc2hvd19kZWJ1Z19hdXRvX2xvYWQ6 IE5ldy4KKysJKGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSkKKysJKGZpbGVuYW1lX2lz X2luX2F1dG9fbG9hZF9zYWZlX3BhdGhfdmVjKTogQ2FsbCBmcHJpbnRmX3VuZmlsdGVyZWQKKysJ aWYgREVCVUdfQVVUT19MT0FELgorKwkoZmlsZV9pc19hdXRvX2xvYWRfc2FmZSk6IE5ldyBwYXJh bWV0ZXJzIGRlYnVnX2ZtdCBhbmQgLi4uLgorKwlDYWxsIGZwcmludGZfdW5maWx0ZXJlZCBpZiBE RUJVR19BVVRPX0xPQUQuCisrCShzb3VyY2VfZ2RiX3NjcmlwdF9mb3Jfb2JqZmlsZSk6IEV4dGVu ZCB0aGUgZmlsZV9pc19hdXRvX2xvYWRfc2FmZQorKwljYWxsZXIgYnkgZXhwbGFuYXRvcnkgc3Ry aW5nLgorKwkoX2luaXRpYWxpemVfYXV0b19sb2FkKTogUmVnaXN0ZXIgInNldCBkZWJ1ZyBhdXRv LWxvYWQiLgorKwkqIGF1dG8tbG9hZC5oIChmaWxlX2lzX2F1dG9fbG9hZF9zYWZlKTogTmV3IHBh cmFtZXRlcnMgZGVidWdfZm10CisrCWFuZCAuLi4uCisrCSogbGludXgtdGhyZWFkLWRiLmMgKHRy eV90aHJlYWRfZGJfbG9hZF9mcm9tX3BkaXJfMSkKKysJKHRyeV90aHJlYWRfZGJfbG9hZF9mcm9t X2Rpcik6IEV4dGVuZCB0aGUgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSBjYWxsZXIKKysJYnkgZXhw bGFuYXRvcnkgc3RyaW5nLgorKwkqIG1haW4uYyAoY2FwdHVyZWRfbWFpbik6IExpa2V3aXNlLgor KwkqIHB5dGhvbi9weS1hdXRvLWxvYWQuYyAoZ2RicHlfbG9hZF9hdXRvX3NjcmlwdF9mb3Jfb2Jq ZmlsZSkKKysJKHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMpOiBMaWtld2lzZS4KKysKKysyMDEyLTA0 LTE3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisrCisgCU5l dyBvcHRpb24gInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIi4KKyAJKiBORVdTOiBOZXcgY29tbWFu ZHMgInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIgorIAlhbmQgInNob3cgYXV0by1sb2FkIHNhZmUt cGF0aCIuCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTkVXUworPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvTkVXUwkyMDEyLTA0LTE4IDAwOjQ5OjMz LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL05FV1MJMjAxMi0w NC0xOCAwMDo1MDoxNS4wMTg2MDAyODIgKzAyMDAKK0BAIC03Miw2ICs3MiwxMCBAQCBzaG93IGF1 dG8tbG9hZCBzYWZlLXBhdGgKKyAgIFNldCBhIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGlj aCBpdCBpcyBzYWZlIHRvIGF1dG8tbG9hZCBmaWxlcy4KKyAgIFRoZSBkZWxpbWl0ZXIgKCc6JyBh Ym92ZSkgbWF5IGRpZmZlciBhY2NvcmRpbmcgdG8gdGhlIGhvc3QgcGxhdGZvcm0uCisgCisrc2V0 IGRlYnVnIGF1dG8tbG9hZCBvbnxvZmYKKytzaG93IGRlYnVnIGF1dG8tbG9hZAorKyAgQ29udHJv bCBkaXNwbGF5IG9mIGRlYnVnZ2luZyBpbmZvIGZvciBhdXRvLWxvYWRpbmcgdGhlIGZpbGVzIGFi b3ZlLgorKworICogTmV3IGNvbW1hbmQgbGluZSBvcHRpb25zCisgCisgLS1pbml0LWNvbW1hbmQ9 RklMRSwgLWl4ICAgICAgICAgIExpa2UgLS1jb21tYW5kLCAteCBidXQgZXhlY3V0ZSBpdAorSW5k ZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCis9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0g Z2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQ5 OjIxLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9h ZC5jCTIwMTItMDQtMTggMDA6NTA6MDQuODAxNjI2MjM1ICswMjAwCitAQCAtNDMsNiArNDMsMjAg QEAKKyBzdGF0aWMgdm9pZCBzb3VyY2VfZ2RiX3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUsIEZJTEUgKmZpbGUsCisgCQkJCQkgICBjb25zdCBjaGFyICpmaWxlbmFt ZSk7CisgCisrLyogVmFsdWUgb2YgdGhlICdzZXQgZGVidWcgYXV0by1sb2FkJyBjb25maWd1cmF0 aW9uIHZhcmlhYmxlLiAgKi8KKytzdGF0aWMgaW50IGRlYnVnX2F1dG9fbG9hZCA9IDA7CisrCisr LyogInNob3ciIGNvbW1hbmQgZm9yIHRoZSBkZWJ1Z19hdXRvX2xvYWQgY29uZmlndXJhdGlvbiB2 YXJpYWJsZS4gICovCisrCisrc3RhdGljIHZvaWQKKytzaG93X2RlYnVnX2F1dG9fbG9hZCAoc3Ry dWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKKysJCSAgICAgIHN0cnVjdCBjbWRfbGlz dF9lbGVtZW50ICpjLCBjb25zdCBjaGFyICp2YWx1ZSkKKyt7CisrICBmcHJpbnRmX2ZpbHRlcmVk IChmaWxlLCBfKCJEZWJ1Z2dpbmcgb3V0cHV0IGZvciBmaWxlcyAiCisrCQkJICAgICJvZiAnc2V0 IGF1dG8tbG9hZCAuLi4nIGlzICVzLlxuIiksCisrCQkgICAgdmFsdWUpOworK30KKysKKyAvKiBV c2VyLXNldHRhYmxlIG9wdGlvbiB0byBlbmFibGUvZGlzYWJsZSBhdXRvLWxvYWRpbmcgb2YgR0RC X0FVVE9fRklMRV9OQU1FCisgICAgc2NyaXB0czoKKyAgICBzZXQgYXV0by1sb2FkIGdkYi1zY3Jp cHRzIG9ufG9mZgorQEAgLTExMiw2ICsxMjYsMTEgQEAgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNf dXBkYXRlICh2b2lkKQorICAgdW5zaWduZWQgbGVuOworICAgaW50IGl4OworIAorKyAgaWYgKGRl YnVnX2F1dG9fbG9hZCkKKysgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAorKwkJ CV8oImF1dG8tbG9hZDogVXBkYXRpbmcgZGlyZWN0b3JpZXMgb2YgXCIlc1wiLlxuIiksCisrCQkJ YXV0b19sb2FkX3NhZmVfcGF0aCk7CisrCisgICBmcmVlX2NoYXJfcHRyX3ZlYyAoYXV0b19sb2Fk X3NhZmVfcGF0aF92ZWMpOworIAorICAgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMgPSBkaXJuYW1l c190b19jaGFyX3B0cl92ZWMgKGF1dG9fbG9hZF9zYWZlX3BhdGgpOworQEAgLTEyNiwxNCArMTQ1 LDM0IEBAIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAodm9pZCkKKyAgICAgICBjaGFy ICpyZWFsX3BhdGggPSBnZGJfcmVhbHBhdGggKGV4cGFuZGVkKTsKKyAKKyAgICAgICAvKiBFbnN1 cmUgdGhlIGN1cnJlbnQgZW50cnkgaXMgYXQgbGVhc3QgdGlsZGVfZXhwYW5kLWVkLiAgKi8KKy0g ICAgICB4ZnJlZSAoZGlyKTsKKyAgICAgICBWRUNfcmVwbGFjZSAoY2hhcl9wdHIsIGF1dG9fbG9h ZF9zYWZlX3BhdGhfdmVjLCBpeCwgZXhwYW5kZWQpOworIAorKyAgICAgIGlmIChkZWJ1Z19hdXRv X2xvYWQpCisrCXsKKysJICBpZiAoc3RyY21wIChleHBhbmRlZCwgZGlyKSA9PSAwKQorKwkgICAg ZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAorKwkJCQlfKCJhdXRvLWxvYWQ6IFVzaW5n IGRpcmVjdG9yeSBcIiVzXCIuXG4iKSwKKysJCQkJZXhwYW5kZWQpOworKwkgIGVsc2UKKysJICAg IGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKKysJCQkJXygiYXV0by1sb2FkOiBSZXNv bHZlZCBkaXJlY3RvcnkgXCIlc1wiICIKKysJCQkJICAiYXMgXCIlc1wiLlxuIiksCisrCQkJCWRp ciwgZXhwYW5kZWQpOworKwl9CisrICAgICAgeGZyZWUgKGRpcik7CisrCisgICAgICAgLyogSWYg Z2RiX3JlYWxwYXRoIHJldHVybnMgYSBkaWZmZXJlbnQgY29udGVudCwgYXBwZW5kIGl0LiAgKi8K KyAgICAgICBpZiAoc3RyY21wIChyZWFsX3BhdGgsIGV4cGFuZGVkKSA9PSAwKQorIAl4ZnJlZSAo cmVhbF9wYXRoKTsKKyAgICAgICBlbHNlCistCVZFQ19zYWZlX3B1c2ggKGNoYXJfcHRyLCBhdXRv X2xvYWRfc2FmZV9wYXRoX3ZlYywgcmVhbF9wYXRoKTsKKysJeworKwkgIFZFQ19zYWZlX3B1c2gg KGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgcmVhbF9wYXRoKTsKKysKKysJICBp ZiAoZGVidWdfYXV0b19sb2FkKQorKwkgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9n LAorKwkJCQlfKCJhdXRvLWxvYWQ6IEFuZCBjYW5vbmljYWxpemVkIGFzIFwiJXNcIi5cbiIpLAor KwkJCQlyZWFsX3BhdGgpOworKwl9CisgICAgIH0KKyB9CisgCitAQCAtMjE3LDE2ICsyNTYsMzAg QEAgZmlsZW5hbWVfaXNfaW5fYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMgKAorICAgaWYgKGRpciA9 PSBOVUxMKQorICAgICB7CisgICAgICAgaWYgKCpmaWxlbmFtZV9yZWFscCA9PSBOVUxMKQorLQkq ZmlsZW5hbWVfcmVhbHAgPSBnZGJfcmVhbHBhdGggKGZpbGVuYW1lKTsKKysJeworKwkgICpmaWxl bmFtZV9yZWFscCA9IGdkYl9yZWFscGF0aCAoZmlsZW5hbWUpOworKwkgIGlmIChkZWJ1Z19hdXRv X2xvYWQgJiYgc3RyY21wICgqZmlsZW5hbWVfcmVhbHAsIGZpbGVuYW1lKSAhPSAwKQorKwkgICAg ZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAorKwkJCQlfKCJhdXRvLWxvYWQ6IFJlc29s dmVkICIKKysJCQkJICAiZmlsZSBcIiVzXCIgYXMgXCIlc1wiLlxuIiksCisrCQkJCWZpbGVuYW1l LCAqZmlsZW5hbWVfcmVhbHApOworKwl9CisgCistICAgICAgZm9yIChpeCA9IDA7IFZFQ19pdGVy YXRlIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMsIGl4LCBkaXIpOworLQkgICAr K2l4KQorLQlpZiAoZmlsZW5hbWVfaXNfaW5fZGlyICgqZmlsZW5hbWVfcmVhbHAsIGRpcikpCist CSAgYnJlYWs7CisrICAgICAgaWYgKHN0cmNtcCAoKmZpbGVuYW1lX3JlYWxwLCBmaWxlbmFtZSkg IT0gMCkKKysJZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChjaGFyX3B0ciwgYXV0b19sb2FkX3Nh ZmVfcGF0aF92ZWMsIGl4LCBkaXIpOworKwkgICAgICsraXgpCisrCSAgaWYgKGZpbGVuYW1lX2lz X2luX2RpciAoKmZpbGVuYW1lX3JlYWxwLCBkaXIpKQorKwkgICAgYnJlYWs7CisgICAgIH0KKyAK KyAgIGlmIChkaXIgIT0gTlVMTCkKKy0gICAgcmV0dXJuIDE7CisrICAgIHsKKysgICAgICBpZiAo ZGVidWdfYXV0b19sb2FkKQorKwlmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csIF8oImF1 dG8tbG9hZDogRmlsZSBcIiVzXCIgbWF0Y2hlcyAiCisrCQkJCQkgICJkaXJlY3RvcnkgXCIlc1wi LlxuIiksCisrCQkJICAgIGZpbGVuYW1lLCBkaXIpOworKyAgICAgIHJldHVybiAxOworKyAgICB9 CisgCisgICByZXR1cm4gMDsKKyB9CitAQCAtMjQwLDExICsyOTMsMjAgQEAgZmlsZW5hbWVfaXNf aW5fYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMgKAorICAgIGRpcmVjdG9yeS4gICovCisgCisgaW50 CistZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoY29uc3QgY2hhciAqZmlsZW5hbWUpCisrZmlsZV9p c19hdXRvX2xvYWRfc2FmZSAoY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKmRlYnVn X2ZtdCwgLi4uKQorIHsKKyAgIGNoYXIgKmZpbGVuYW1lX3JlYWwgPSBOVUxMOworICAgc3RydWN0 IGNsZWFudXAgKmJhY2tfdG87CisgCisrICBpZiAoZGVidWdfYXV0b19sb2FkKQorKyAgICB7Cisr ICAgICAgdmFfbGlzdCBkZWJ1Z19hcmdzOworKworKyAgICAgIHZhX3N0YXJ0IChkZWJ1Z19hcmdz LCBkZWJ1Z19mbXQpOworKyAgICAgIHZmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csIGRl YnVnX2ZtdCwgZGVidWdfYXJncyk7CisrICAgICAgdmFfZW5kIChkZWJ1Z19hcmdzKTsKKysgICAg fQorKworICAgYmFja190byA9IG1ha2VfY2xlYW51cCAoZnJlZV9jdXJyZW50X2NvbnRlbnRzLCAm ZmlsZW5hbWVfcmVhbCk7CisgCisgICBpZiAoZmlsZW5hbWVfaXNfaW5fYXV0b19sb2FkX3NhZmVf cGF0aF92ZWMgKGZpbGVuYW1lLCAmZmlsZW5hbWVfcmVhbCkpCitAQCAtMjgxLDcgKzM0MywxMCBA QCBzb3VyY2VfZ2RiX3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9iCisgICBzdHJ1Y3QgYXV0 b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKKyAgIHZvbGF0aWxlIHN0cnVjdCBnZGJf ZXhjZXB0aW9uIGU7CisgCistICBpc19zYWZlID0gZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoZmls ZW5hbWUpOworKyAgaXNfc2FmZSA9IGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGZpbGVuYW1lLCBf KCJhdXRvLWxvYWQ6IExvYWRpbmcgY2FubmVkICIKKysJCQkJCQkic2VxdWVuY2VzIG9mIGNvbW1h bmRzIHNjcmlwdCAiCisrCQkJCQkJIlwiJXNcIiBmb3Igb2JqZmlsZSBcIiVzXCIuXG4iKSwKKysJ CQkJICAgIGZpbGVuYW1lLCBvYmpmaWxlLT5uYW1lKTsKKyAKKyAgIC8qIEFkZCB0aGlzIHNjcmlw dCB0byB0aGUgaGFzaCB0YWJsZSB0b28gc28gImluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzIgor ICAgICAgY2FuIHByaW50IGl0LiAgKi8KK0BAIC05NzUsNCArMTA0MCwxMyBAQCBTZWUgdGhlIGNv bW1hbmRzICdzZXQgYXV0by1sb2FkIHNhZmUtcGF0CisgYWNjZXNzIHRoZSBjdXJyZW50IGZ1bGwg bGlzdCBzZXR0aW5nLiIpLAorIAkJICZjbWRsaXN0KTsKKyAgIHNldF9jbWRfY29tcGxldGVyIChj bWQsIGZpbGVuYW1lX2NvbXBsZXRlcik7CisrCisrICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAo ImF1dG8tbG9hZCIsIGNsYXNzX21haW50ZW5hbmNlLAorKwkJCSAgICZkZWJ1Z19hdXRvX2xvYWQs IF8oIlwKKytTZXQgYXV0by1sb2FkIHZlcmlmaWNhdGlvbnMgZGVidWdnaW5nLiIpLCBfKCJcCisr U2hvdyBhdXRvLWxvYWQgdmVyaWZpY2F0aW9ucyBkZWJ1Z2dpbmcuIiksIF8oIlwKKytXaGVuIG5v bi16ZXJvLCBkZWJ1Z2dpbmcgb3V0cHV0IGZvciBmaWxlcyBvZiAnc2V0IGF1dG8tbG9hZCAuLi4n XG5cCisraXMgZGlzcGxheWVkLiIpLAorKwkJCSAgICBOVUxMLCBzaG93X2RlYnVnX2F1dG9fbG9h ZCwKKysJCQkgICAgJnNldGRlYnVnbGlzdCwgJnNob3dkZWJ1Z2xpc3QpOworIH0KK0luZGV4OiBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuaAorPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03 LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvYXV0by1sb2FkLmgJMjAxMi0wNC0xOCAwMDo0OToyMS4w MDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuaAky MDEyLTA0LTE4IDAwOjUwOjA0LjgwMTYyNjIzNSArMDIwMAorQEAgLTU1LDYgKzU1LDcgQEAgZXh0 ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqYXV0b19sbworIGV4dGVybiBzdHJ1Y3QgY21k X2xpc3RfZWxlbWVudCAqKmF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICh2b2lkKTsKKyBleHRl cm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKiphdXRvX2xvYWRfaW5mb19jbWRsaXN0X2dldCAo dm9pZCk7CisgCistZXh0ZXJuIGludCBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChjb25zdCBjaGFy ICpmaWxlbmFtZSk7CisrZXh0ZXJuIGludCBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChjb25zdCBj aGFyICpmaWxlbmFtZSwKKysJCQkJICAgY29uc3QgY2hhciAqZGVidWdfZm10LCAuLi4pOworIAor ICNlbmRpZiAvKiBBVVRPX0xPQURfSCAqLworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L2xpbnV4LXRocmVhZC1kYi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5v cmlnL2dkYi9saW51eC10aHJlYWQtZGIuYwkyMDEyLTA0LTE4IDAwOjQ5OjIxLjAwMDAwMDAwMCAr MDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2xpbnV4LXRocmVhZC1kYi5jCTIwMTIt MDQtMTggMDA6NTA6MDQuODAxNjI2MjM1ICswMjAwCitAQCAtODY5LDcgKzg2OSw5IEBAIHRyeV90 aHJlYWRfZGJfbG9hZF9mcm9tX3BkaXJfMSAoc3RydWN0IG8KKyAgIGdkYl9hc3NlcnQgKGNwICE9 IE5VTEwpOworICAgc3RyY3B5IChjcCArIDEsIExJQlRIUkVBRF9EQl9TTyk7CisgCistICBpZiAo IWZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKHBhdGgpKQorKyAgaWYgKCFmaWxlX2lzX2F1dG9fbG9h ZF9zYWZlIChwYXRoLCBfKCJhdXRvLWxvYWQ6IExvYWRpbmcgbGlidGhyZWFkLWRiICIKKysJCQkJ ICAgICAgICJsaWJyYXJ5IFwiJXNcIiBmcm9tICRwZGlyLlxuIiksCisrCQkJICAgICAgIHBhdGgp KQorICAgICByZXN1bHQgPSAwOworICAgZWxzZQorICAgICByZXN1bHQgPSB0cnlfdGhyZWFkX2Ri X2xvYWQgKHBhdGgpOworQEAgLTkzOSw3ICs5NDEsMTAgQEAgdHJ5X3RocmVhZF9kYl9sb2FkX2Zy b21fZGlyIChjb25zdCBjaGFyCisgICBwYXRoW2Rpcl9sZW5dID0gJy8nOworICAgc3RyY3B5IChw YXRoICsgZGlyX2xlbiArIDEsIExJQlRIUkVBRF9EQl9TTyk7CisgCistICBpZiAoIWZpbGVfaXNf YXV0b19sb2FkX3NhZmUgKHBhdGgpKQorKyAgaWYgKCFmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChw YXRoLCBfKCJhdXRvLWxvYWQ6IExvYWRpbmcgbGlidGhyZWFkLWRiICIKKysJCQkJICAgICAgICJs aWJyYXJ5IFwiJXNcIiBmcm9tIGV4cGxpY2l0ICIKKysJCQkJICAgICAgICJkaXJlY3RvcnkuXG4i KSwKKysJCQkgICAgICAgcGF0aCkpCisgICAgIHJlc3VsdCA9IDA7CisgICBlbHNlCisgICAgIHJl c3VsdCA9IHRyeV90aHJlYWRfZGJfbG9hZCAocGF0aCk7CitJbmRleDogZ2RiLTcuNC41MC4yMDEy MDEyMC9nZGIvbWFpbi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmln L2dkYi9tYWluLmMJMjAxMi0wNC0xOCAwMDo0OToyMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMJMjAxMi0wNC0xOCAwMDo1MDowNC44MDE2MjYyMzUg KzAyMDAKK0BAIC0xMDI3LDcgKzEwMjcsMTAgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkK KyAgICAgICBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9wYXRobmFtZSA9IGdkYl9yZWFscGF0aCAo bG9jYWxfZ2RiaW5pdCk7CisgCisgICAgICAgaWYgKCFpbmhpYml0X2dkYmluaXQgJiYgYXV0b19s b2FkX2xvY2FsX2dkYmluaXQKKy0JICAmJiBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChsb2NhbF9n ZGJpbml0KSkKKysJICAmJiBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChsb2NhbF9nZGJpbml0LAor KwkJCQkgICAgIF8oImF1dG8tbG9hZDogTG9hZGluZyAuZ2RiaW5pdCAiCisrCQkJCSAgICAgICAi ZmlsZSBcIiVzXCIuXG4iKSwKKysJCQkJICAgICBsb2NhbF9nZGJpbml0KSkKKyAJeworIAkgIGF1 dG9fbG9hZF9sb2NhbF9nZGJpbml0X2xvYWRlZCA9IDE7CisgCitJbmRleDogZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4y MDEyMDEyMC5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNC0xOCAwMDo0OToyMS4wMDAw MDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2MvZ2RiLnRleGluZm8J MjAxMi0wNC0xOCAwMDo1MDowNC44MDk2MjYyMTUgKzAyMDAKK0BAIC0yMDg4Nyw2ICsyMDg4Nyw3 IEBAIFRoZXNlIGFyZSBAdmFsdWV7R0RCTn0gY29udHJvbCBjb21tYW5kcworICogbGlidGhyZWFk X2RiLnNvLjEgZmlsZTo6ICAgICAgICAgICAgIEBzYW1we3NldC9zaG93L2luZm8gYXV0by1sb2Fk IGxpYnRocmVhZC1kYn0KKyAqIG9iamZpbGUtZ2RiLmdkYiBmaWxlOjogICAgICAgICAgICAgICBA c2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0fQorICogQXV0by1sb2FkaW5n IHNhZmUgcGF0aDo6ICAgICAgICAgICAgIEBzYW1we3NldC9zaG93L2luZm8gYXV0by1sb2FkIHNh ZmUtcGF0aH0KKysqIEF1dG8tbG9hZGluZyB2ZXJib3NlIG1vZGU6OiAgICAgICAgICBAc2FtcHtz ZXQvc2hvdyBkZWJ1ZyBhdXRvLWxvYWR9CisgQHhyZWZ7UHl0aG9uIEF1dG8tbG9hZGluZ30uCisg QGVuZCBtZW51CisgCitAQCAtMjEwODUsNiArMjEwODYsNDUgQEAgZW50cmllcyBhZ2Fpbi4gIEB2 YWx1ZXtHREJOfSBhbHJlYWR5IGNhbgorIG93biBiZWZvcmUgc3RhcnRpbmcgdGhlIGNvbXBhcmlz b24gc28gYSBjYW5vbmljYWwgZm9ybSBvZiBkaXJlY3RvcmllcyBpcworIHJlY29tbWVuZGVkIHRv IGJlIGVudGVyZWQuCisgCisrQG5vZGUgQXV0by1sb2FkaW5nIHZlcmJvc2UgbW9kZQorK0BzdWJz ZWN0aW9uIERpc3BsYXlpbmcgZmlsZXMgdHJpZWQgZm9yIGF1dG8tbG9hZAorK0BjaW5kZXggYXV0 by1sb2FkaW5nIHZlcmJvc2UgbW9kZQorKworK0ZvciBiZXR0ZXIgdmlzaWJpbGl0eSBvZiBhbGwg dGhlIGZpbGUgbG9jYXRpb25zIHdoZXJlIHlvdSBjYW4gcGxhY2Ugc2NyaXB0cyB0bworK2JlIGF1 dG8tbG9hZGVkIHdpdGggaW5mZXJpb3IgLS0tIG9yIHRvIHByb3RlY3QgeW91cnNlbGYgYWdhaW5z dCBhY2NpZGVudGFsCisrZXhlY3V0aW9uIG9mIHVudHJ1c3RlZCBzY3JpcHRzIC0tLSBAdmFsdWV7 R0RCTn0gcHJvdmlkZXMgYSBmZWF0dXJlIGZvciBwcmludGluZworK2FsbCB0aGUgZmlsZXMgYXR0 ZW1wdGVkIHRvIGJlIGxvYWRlZC4gIEJvdGggZXhpc3RpbmcgYW5kIG5vbi1leGlzdGluZyBmaWxl cyBtYXkKKytiZSBwcmludGVkLgorKworK0ZvciBleGFtcGxlIHRoZSBsaXN0IG9mIGRpcmVjdG9y aWVzIGZyb20gd2hpY2ggaXQgaXMgc2FmZSB0byBhdXRvLWxvYWQgZmlsZXMKKysoQHB4cmVme0F1 dG8tbG9hZGluZyBzYWZlIHBhdGh9KSBhcHBsaWVzIGFsc28gdG8gY2Fub25pY2FsaXplZCBmaWxl bmFtZXMgd2hpY2gKKyttYXkgbm90IGJlIHRvbyBvYnZpb3VzIHdoaWxlIHNldHRpbmcgaXQgdXAu CisrCisrQHNtYWxsZXhhbXBsZQorKyhnZGIpIHNldCBkZWJ1ZyBhdXRvLWxvYWQgdWVzCisrKGdk YikgZmlsZSB+L3NyYy90L3RydWUKKythdXRvLWxvYWQ6IExvYWRpbmcgY2FubmVkIHNlcXVlbmNl cyBvZiBjb21tYW5kcyBzY3JpcHQgIi90bXAvdHJ1ZS1nZGIuZ2RiIgorKyAgICAgICAgICAgZm9y IG9iamZpbGUgIi90bXAvdHJ1ZSIuCisrYXV0by1sb2FkOiBVcGRhdGluZyBkaXJlY3RvcmllcyBv ZiAiL3Vzcjovb3B0Ii4KKythdXRvLWxvYWQ6IFVzaW5nIGRpcmVjdG9yeSAiL3VzciIuCisrYXV0 by1sb2FkOiBVc2luZyBkaXJlY3RvcnkgIi9vcHQiLgorK3dhcm5pbmc6IEZpbGUgIi90bXAvdHJ1 ZS1nZGIuZ2RiIiBhdXRvLWxvYWRpbmcgaGFzIGJlZW4gZGVjbGluZWQKKysgICAgICAgICBieSB5 b3VyIGBhdXRvLWxvYWQgc2FmZS1wYXRoJyBzZXQgdG8gIi91c3I6L29wdCIuCisrQGVuZCBzbWFs bGV4YW1wbGUKKysKKytAdGFibGUgQGNvZGUKKytAYW5jaG9ye3NldCBkZWJ1ZyBhdXRvLWxvYWR9 CisrQGtpbmRleCBzZXQgZGVidWcgYXV0by1sb2FkCisrQGl0ZW0gc2V0IGRlYnVnIGF1dG8tbG9h ZCBbb258b2ZmXQorK1NldCB3aGV0aGVyIHRvIHByaW50IHRoZSBmaWxlbmFtZXMgYXR0ZW1wdGVk IHRvIGJlIGF1dG8tbG9hZGVkLgorKworK0BhbmNob3J7c2hvdyBkZWJ1ZyBhdXRvLWxvYWR9Cisr QGtpbmRleCBzaG93IGRlYnVnIGF1dG8tbG9hZAorK0BpdGVtIHNob3cgZGVidWcgYXV0by1sb2Fk CisrU2hvdyB3aGV0aGVyIHByaW50aW5nIG9mIHRoZSBmaWxlbmFtZXMgYXR0ZW1wdGVkIHRvIGJl IGF1dG8tbG9hZGVkIGlzIHR1cm5lZAorK29uIG9yIG9mZi4KKytAZW5kIHRhYmxlCisrCisgQG5v ZGUgTWVzc2FnZXMvV2FybmluZ3MKKyBAc2VjdGlvbiBPcHRpb25hbCBXYXJuaW5ncyBhbmQgTWVz c2FnZXMKKyAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHktYXV0by1s b2FkLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhv bi9weS1hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQ5OjIxLjAwMDAwMDAwMCArMDIwMAorKysr IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLTA0LTE4 IDAwOjUwOjA0LjgxMDYyNjIxMiArMDIwMAorQEAgLTc1LDcgKzc1LDEwIEBAIGdkYnB5X2xvYWRf YXV0b19zY3JpcHRfZm9yX29iamZpbGUgKHN0cnUKKyAgIGludCBpc19zYWZlOworICAgc3RydWN0 IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87CisgCistICBpc19zYWZlID0gZmls ZV9pc19hdXRvX2xvYWRfc2FmZSAoZmlsZW5hbWUpOworKyAgaXNfc2FmZSA9IGZpbGVfaXNfYXV0 b19sb2FkX3NhZmUgKGZpbGVuYW1lLAorKwkJCQkgICAgXygiYXV0by1sb2FkOiBMb2FkaW5nIFB5 dGhvbiBzY3JpcHQgXCIlc1wiICIKKysJCQkJICAgICAgImJ5IGV4dGVuc2lvbiBmb3Igb2JqZmls ZSBcIiVzXCIuXG4iKSwKKysJCQkJICAgIGZpbGVuYW1lLCBvYmpmaWxlLT5uYW1lKTsKKyAKKyAg IC8qIEFkZCB0aGlzIHNjcmlwdCB0byB0aGUgaGFzaCB0YWJsZSB0b28gc28gImluZm8gYXV0by1s b2FkIHB5dGhvbi1zY3JpcHRzIgorICAgICAgY2FuIHByaW50IGl0LiAgKi8KK0BAIC0xNTMsNyAr MTU2LDEyIEBAIHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMgKHN0cnVjdCBvYmpmaWxlICoKKyAJICBt YWtlX2NsZWFudXBfZmNsb3NlIChzdHJlYW0pOworIAkgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGZ1 bGxfcGF0aCk7CisgCistCSAgaWYgKCFmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChmdWxsX3BhdGgp KQorKwkgIGlmICghZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoZnVsbF9wYXRoLAorKwkJCQkgICAg ICAgXygiYXV0by1sb2FkOiBMb2FkaW5nIFB5dGhvbiBzY3JpcHQgIgorKwkJCQkJICJcIiVzXCIg ZnJvbSBzZWN0aW9uIFwiJXNcIiBvZiAiCisrCQkJCQkgIm9iamZpbGUgXCIlc1wiLlxuIiksCisr CQkJCSAgICAgICBmdWxsX3BhdGgsIEdEQlBZX0FVVE9fU0VDVElPTl9OQU1FLAorKwkJCQkgICAg ICAgb2JqZmlsZS0+bmFtZSkpCisgCSAgICBvcGVuZWQgPSAwOworIAl9CisgICAgICAgZWxzZQoK ZGlmZiAtLWdpdCBhL2dkYi5zcGVjIGIvZ2RiLnNwZWMKaW5kZXggMjc0ZmFlMC4uNjY3ZDVkZiAx MDA2NDQKLS0tIGEvZ2RiLnNwZWMKKysrIGIvZ2RiLnNwZWMKQEAgLTMzLDcgKzMzLDcgQEAgVmVy c2lvbjogNy40LjUwLiV7c25hcH0KIAogIyBUaGUgcmVsZWFzZSBhbHdheXMgY29udGFpbnMgYSBs ZWFkaW5nIHJlc2VydmVkIG51bWJlciwgc3RhcnQgaXQgYXQgMS4KICMgYHVwc3RyZWFtJyBpcyBu b3QgYSBwYXJ0IG9mIGBuYW1lJyB0byBzdGF5IGZ1bGx5IHJwbSBkZXBlbmRlbmNpZXMgY29tcGF0 aWJsZSBmb3IgdGhlIHRlc3RpbmcuCi1SZWxlYXNlOiAzOSV7P2Rpc3R9CitSZWxlYXNlOiA0MCV7 P2Rpc3R9CiAKIExpY2Vuc2U6IEdQTHYzKyBhbmQgR1BMdjMrIHdpdGggZXhjZXB0aW9ucyBhbmQg R1BMdjIrIGFuZCBHUEx2Misgd2l0aCBleGNlcHRpb25zIGFuZCBHUEwrIGFuZCBMR1BMdjIrIGFu ZCBCU0QgYW5kIFB1YmxpYyBEb21haW4KIEdyb3VwOiBEZXZlbG9wbWVudC9EZWJ1Z2dlcnMKQEAg LTE3NCwxMCArMTc0LDYgQEAgUGF0Y2gxNDU6IGdkYi02LjMtdGhyZWFkZWQtd2F0Y2hwb2ludHMy LTIwMDUwMjI1LnBhdGNoCiAjPWlhNjQKIFBhdGNoMTUzOiBnZGItNi4zLWlhNjQtZ2NvcmUtcGFn ZTAtMjAwNTA0MjEucGF0Y2gKIAotIyBTZWN1cml0eSBlcnJhdGEgZm9yIHVudHJ1c3RlZCAuZ2Ri aW5pdAotIz1wdXNoCi1QYXRjaDE1NzogZ2RiLTYuMy1zZWN1cml0eS1lcnJhdGEtMjAwNTA2MTAu cGF0Y2gKLQogIyBJQTY0IHNpZ3RyYW1wIHByZXYgcmVnaXN0ZXIgcGF0Y2gKICM9aWE2NAogUGF0 Y2gxNTg6IGdkYi02LjMtaWE2NC1zaWd0cmFtcC1mcmFtZS0yMDA1MDcwOC5wYXRjaApAQCAtNTY5 LDE5ICs1NjUsMzggQEAgUGF0Y2g2NTM6IGdkYi1hdHRhY2gtZmFpbC1yZWFzb25zLTVvZjUucGF0 Y2gKIFBhdGNoNjU3OiBnZGItYXR0YWNoLWZhaWwtcmVhc29ucy01b2Y1Y29uZmlndXJlLnBhdGNo CiAKICMgRml4IGluZmVyaW9yIGNhbGxzLCBwYXJ0aWN1bGFybHkgdW5jYXVnaHQgdGhyb3duIGV4 Y2VwdGlvbnMgKEJaIDc5OTUzMSkuCisjPXB1c2grd29yawogUGF0Y2g2NTQ6IGdkYi14ODYtb25z dGFjay0xb2YyLnBhdGNoCiBQYXRjaDY1ODogZ2RiLXg4Ni1vbnN0YWNrLTJvZjIucGF0Y2gKIAog IyBGaXggRFdBUkYgRElFcyBDVSB2cy4gc2VjdGlvbiByZWxhdGl2ZSBvZmZzZXRzIChKb2VsIEJy b2JlY2tlciwgbWUpLgorIz1wdXNoCiBQYXRjaDY1NTogZ2RiLWRpZS1jdS1vZmZzZXQtMW9mMi5w YXRjaAogUGF0Y2g2NTY6IGdkYi1kaWUtY3Utb2Zmc2V0LTJvZjIucGF0Y2gKIAogIyBbdmxhXSBG aXggcmVncmVzc2lvbiBvbiBubyB0eXBlIGZvciBzdWJyYW5nZSBmcm9tIElCTSBYTEYgRm9ydHJh biAoQlogODA2OTIwKS4KKyM9cHVzaAogUGF0Y2g2NjA6IGdkYi1zdWJyYW5nZS1uby10eXBlLnBh dGNoCiAKICMgV29ya2Fyb3VuZCBjcmFzaGVzIGZyb20gc3RhbGUgZnJhbWVfaW5mbyBwb2ludGVy IChCWiA4MDQyNTYpLgorIz1wdXNoK3dvcmsKIFBhdGNoNjYxOiBnZGItc3RhbGUtZnJhbWVfaW5m by5wYXRjaAogCisjIFNlY3VyaXR5IGZpeCBmb3IgbG9hZGluZyB1bnRydXN0ZWQgaW5mZXJpb3Jz LCBzZWUgInNldCBhdXRvLWxvYWQiIChCWiA3NTYxMTcpLgorIz1wdXNoCitQYXRjaDY2MjogZ2Ri LWF1dG9sb2FkLTAxb2YxMi5wYXRjaAorUGF0Y2g2NjM6IGdkYi1hdXRvbG9hZC0wMm9mMTIucGF0 Y2gKK1BhdGNoNjY0OiBnZGItYXV0b2xvYWQtMDNvZjEyLnBhdGNoCitQYXRjaDY2NTogZ2RiLWF1 dG9sb2FkLTA0b2YxMi5wYXRjaAorUGF0Y2g2NjY6IGdkYi1hdXRvbG9hZC0wNW9mMTIucGF0Y2gK K1BhdGNoNjY3OiBnZGItYXV0b2xvYWQtMDZvZjEyLnBhdGNoCitQYXRjaDY2ODogZ2RiLWF1dG9s b2FkLTA3b2YxMi5wYXRjaAorUGF0Y2g2Njk6IGdkYi1hdXRvbG9hZC0wOG9mMTIucGF0Y2gKK1Bh dGNoNjcwOiBnZGItYXV0b2xvYWQtMDlvZjEyLnBhdGNoCitQYXRjaDY3MTogZ2RiLWF1dG9sb2Fk LTEwb2YxMi5wYXRjaAorUGF0Y2g2NzI6IGdkYi1hdXRvbG9hZC0xMW9mMTIucGF0Y2gKK1BhdGNo NjczOiBnZGItYXV0b2xvYWQtMTJvZjEyLnBhdGNoCisKICVpZiAwJXshP3JoZWw6MX0gfHwgMCV7 P3JoZWx9ID4gNgogIyBSTF9TVEFURV9GRURPUkFfR0RCIHdvdWxkIG5vdCBiZSBmb3VuZCBmb3I6 CiAjIFBhdGNoNjQyOiBnZGItcmVhZGxpbmU2Mi1hc2stbW9yZS1yaC5wYXRjaApAQCAtNzY4LDcg Kzc4Myw2IEBAIHJtIC1mIGdkYi9qdi1leHAuYyBnZGIvbTItZXhwLmMgZ2RiL29iamMtZXhwLmMg Z2RiL3AtZXhwLmMKICVwYXRjaDE0MCAtcDEKICVwYXRjaDE0NSAtcDEKICVwYXRjaDE1MyAtcDEK LSVwYXRjaDE1NyAtcDEKICVwYXRjaDE1OCAtcDEKICVwYXRjaDE2MCAtcDEKICVwYXRjaDE2MSAt cDEKQEAgLTg3Myw2ICs4ODcsMTggQEAgcm0gLWYgZ2RiL2p2LWV4cC5jIGdkYi9tMi1leHAuYyBn ZGIvb2JqYy1leHAuYyBnZGIvcC1leHAuYwogJXBhdGNoNjU2IC1wMQogJXBhdGNoNjYwIC1wMQog JXBhdGNoNjYxIC1wMQorJXBhdGNoNjYyIC1wMQorJXBhdGNoNjYzIC1wMQorJXBhdGNoNjY0IC1w MQorJXBhdGNoNjY1IC1wMQorJXBhdGNoNjY2IC1wMQorJXBhdGNoNjY3IC1wMQorJXBhdGNoNjY4 IC1wMQorJXBhdGNoNjY5IC1wMQorJXBhdGNoNjcwIC1wMQorJXBhdGNoNjcxIC1wMQorJXBhdGNo NjcyIC1wMQorJXBhdGNoNjczIC1wMQogCiAlcGF0Y2gzOTMgLXAxCiAlaWYgMCV7IT9lbDU6MX0g fHwgMCV7P3NjbDoxfQpAQCAtOTkyLDYgKzEwMTgsNyBAQCAkKDogUkhFTC01IGxpYnJwbSBoYXMg aW5jb21wYXRpYmxlIEFQSS4gKQkJCVwKICVlbHNlICMgISV7aGF2ZV9pbnByb2N0cmFjZX0KIAkt LWRpc2FibGUtaW5wcm9jZXNzLWFnZW50CQkJCVwKICVlbmRpZiAjICEle2hhdmVfaW5wcm9jdHJh Y2V9CisJLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGg9JXtfcHJlZml4fQkJCVwKICVpZmFyY2gg c3BhcmMgc3BhcmN2OQogCXNwYXJjLSV7X3ZlbmRvcn0tJXtfdGFyZ2V0X29zfSV7P19nbnV9CiAl ZWxzZQpAQCAtMTM1Miw2ICsxMzc5LDkgQEAgZmkKICVlbmRpZiAjIDAleyE/ZWw1OjF9IHx8ICIl e190YXJnZXRfY3B1fSIgPT0gIm5vYXJjaCIKIAogJWNoYW5nZWxvZworKiBXZWQgQXByIDE4IDIw MTIgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy40LjUwLjIw MTIwMTIwLTQwLmZjMTcKKy0gU2VjdXJpdHkgZml4IGZvciBsb2FkaW5nIHVudHJ1c3RlZCBpbmZl cmlvcnMsIHNlZSAic2V0IGF1dG8tbG9hZCIgKEJaIDc1NjExNykuCisKICogRnJpIEFwciAxMyAy MDEyIEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcuNC41MC4y MDEyMDEyMC0zOS5mYzE3CiAtIFtSSEVMN10gRml4L3JlbW92ZSByZWFkbGluZS1kZXZlbCBCdWls ZFJlcXVpcmVzIHJlZHVuZGFudCBkaXN0cm8gc3VmZmljIC5mYzE3LgogCg==