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: Tomas Mraz To: git-commits@fedoraproject.org Subject: [rpms/openssl] rebase_40beta: Initial pseudo merge for dist-git setup Date: Tue, 09 Jun 2026 12:42:18 GMT Message-ID: <178100893805.1.11121734484687720592.rpms-openssl-7b95d1665fc8@fedoraproject.org> List-ID: X-Git-Repo: rpms/openssl X-Git-Branch: rebase_40beta X-Git-Rev: 7b95d1665fc888d049ad6c3aef0c9b57e552f3e0 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvb3BlbnNzbApCcmFu Y2ggOiByZWJhc2VfNDBiZXRhCkNvbW1pdCA6IDdiOTVkMTY2NWZjODg4ZDA0OWFkNmMzYWVmMGM5 YjU3ZTU1MmYzZTAKQXV0aG9yIDogVG9tYXMgTXJheiA8dG1yYXpAZmVkb3JhcHJvamVjdC5vcmc+ CkRhdGUgICA6IDIwMTAtMTEtMTZUMjE6MjU6NDErMDE6MDAKU3RhdHMgIDogKzU5MDIvLTU4MTcg aW4gMTAgZmlsZShzKQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1z L29wZW5zc2wvYy83Yjk1ZDE2NjVmYzg4OGQwNDlhZDZjM2FlZjBjOWI1N2U1NTJmM2UwP2JyYW5j aD1yZWJhc2VfNDBiZXRhCgpMb2c6CkluaXRpYWwgcHNldWRvIG1lcmdlIGZvciBkaXN0LWdpdCBz ZXR1cAoKLS0tCmRpZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIvLmdpdGlnbm9yZQppbmRleCBmNDYy M2Q3Li43ZTllMjRlIDEwMDY0NAotLS0gYS8uZ2l0aWdub3JlCisrKyBiLy5naXRpZ25vcmUKQEAg LTEgKzEsMiBAQAogb3BlbnNzbC0xLjAuMGEtdXNhLnRhci5iejIKKy9vcGVuc3NsLTEuMC4wYi11 c2EudGFyLmJ6MgoKZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4wLjAtYmV0YTQtYWVzbmkucGF0Y2gg Yi9vcGVuc3NsLTEuMC4wLWJldGE0LWFlc25pLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCBmNTc5MThiLi4wMDAwMDAwCi0tLSBhL29wZW5zc2wtMS4wLjAtYmV0YTQtYWVzbmku cGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMzg4ICswLDAgQEAKLWRpZmYgLXVwIG9wZW5zc2wt MS4wLjAtYmV0YTQvQ29uZmlndXJlLmFlc25pIG9wZW5zc2wtMS4wLjAtYmV0YTQvQ29uZmlndXJl Ci0tLS0gb3BlbnNzbC0xLjAuMC1iZXRhNC9Db25maWd1cmUuYWVzbmkJMjAxMC0wMS0wNyAyMzoz ODozMS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4wLWJldGE0L0NvbmZpZ3VyZQky MDEwLTAxLTEyIDIyOjE4OjA2LjAwMDAwMDAwMCArMDEwMAotQEAgLTEyMywxMSArMTIzLDExIEBA IG15ICR0bGliPSItbG5zbCAtbHNvY2tldCI7Ci0gbXkgJGJpdHMxPSJUSElSVFlfVFdPX0JJVCAi OwotIG15ICRiaXRzMj0iU0lYVFlfRk9VUl9CSVQgIjsKLSAKLS1teSAkeDg2X2FzbT0ieDg2Y3B1 aWQubzpibi01ODYubyBjby01ODYubyB4ODYtbW9udC5vOmRlcy01ODYubyBjcnlwdDU4Ni5vOmFl cy01ODYubzpiZi01ODYubzptZDUtNTg2Lm86c2hhMS01ODYubyBzaGEyNTYtNTg2Lm8gc2hhNTEy LTU4Ni5vOmNhc3QtNTg2Lm86cmM0LTU4Ni5vOnJtZC01ODYubzpyYzUtNTg2Lm86d3BfYmxvY2su byB3cC1tbXgubzpjbWxsLXg4Ni5vIjsKLStteSAkeDg2X2FzbT0ieDg2Y3B1aWQubzpibi01ODYu byBjby01ODYubyB4ODYtbW9udC5vOmRlcy01ODYubyBjcnlwdDU4Ni5vOmFlcy01ODYubyBhZXNu aS14ODYubzpiZi01ODYubzptZDUtNTg2Lm86c2hhMS01ODYubyBzaGEyNTYtNTg2Lm8gc2hhNTEy LTU4Ni5vOmNhc3QtNTg2Lm86cmM0LTU4Ni5vOnJtZC01ODYubzpyYzUtNTg2Lm86d3BfYmxvY2su byB3cC1tbXgubzpjbWxsLXg4Ni5vIjsKLSAKLSBteSAkeDg2X2VsZl9hc209IiR4ODZfYXNtOmVs ZiI7Ci0gCi0tbXkgJHg4Nl82NF9hc209Ing4Nl82NGNwdWlkLm86eDg2XzY0LWdjYy5vIHg4Nl82 NC1tb250Lm86OmFlcy14ODZfNjQubzo6bWQ1LXg4Nl82NC5vOnNoYTEteDg2XzY0Lm8gc2hhMjU2 LXg4Nl82NC5vIHNoYTUxMi14ODZfNjQubzo6cmM0LXg4Nl82NC5vOjo6d3AteDg2XzY0Lm86Y21s bC14ODZfNjQubyBjbWxsX21pc2MubyI7Ci0rbXkgJHg4Nl82NF9hc209Ing4Nl82NGNwdWlkLm86 eDg2XzY0LWdjYy5vIHg4Nl82NC1tb250Lm86OmFlcy14ODZfNjQubyBhZXNuaS14ODZfNjQubzo6 bWQ1LXg4Nl82NC5vOnNoYTEteDg2XzY0Lm8gc2hhMjU2LXg4Nl82NC5vIHNoYTUxMi14ODZfNjQu bzo6cmM0LXg4Nl82NC5vOjo6d3AteDg2XzY0Lm86Y21sbC14ODZfNjQubyBjbWxsX21pc2MubyI7 Ci0gbXkgJGlhNjRfYXNtPSJpYTY0Y3B1aWQubzpibi1pYTY0Lm86OmFlc19jb3JlLm8gYWVzX2Ni Yy5vIGFlcy1pYTY0Lm86Om1kNS1pYTY0Lm86c2hhMS1pYTY0Lm8gc2hhMjU2LWlhNjQubyBzaGE1 MTItaWE2NC5vOjpyYzQtaWE2NC5vIHJjNF9za2V5Lm86Ojo6OnZvaWQiOwotIG15ICRzcGFyY3Y5 X2FzbT0ic3BhcmN2OWNhcC5vIHNwYXJjY3B1aWQubzpibi1zcGFyY3Y5Lm8gc3BhcmN2OS1tb250 Lm8gc3BhcmN2OWEtbW9udC5vOmRlc19lbmMtc3BhcmMubyBmY3J5cHRfYi5vOmFlc19jb3JlLm8g YWVzX2NiYy5vIGFlcy1zcGFyY3Y5Lm86OjpzaGExLXNwYXJjdjkubyBzaGEyNTYtc3BhcmN2OS5v IHNoYTUxMi1zcGFyY3Y5Lm86Ojo6Ojo6dm9pZCI7Ci0gbXkgJHNwYXJjdjhfYXNtPSI6c3BhcmN2 OC5vOmRlc19lbmMtc3BhcmMubyBmY3J5cHRfYi5vOjo6Ojo6Ojo6Ojp2b2lkIjsKLUBAIC00OTEs NyArNDkxLDcgQEAgbXkgJXRhYmxlPSgKLSAjCi0gIyBXaW42NCB0YXJnZXRzLCBXSU42NEkgZGVu b3RlcyBJQS02NCBhbmQgV0lONjRBIC0gQU1ENjQKLSAiVkMtV0lONjRJIiwiY2w6LVczIC1HczAg LUd5IC1ub2xvZ28gLURPUEVOU1NMX1NZU05BTUVfV0lOMzIgLURXSU4zMl9MRUFOX0FORF9NRUFO IC1ETF9FTkRJQU4gLURVTklDT0RFIC1EX1VOSUNPREUgLURfQ1JUX1NFQ1VSRV9OT19ERVBSRUNB VEU6OjpXSU42NEk6OlNJWFRZX0ZPVVJfQklUIFJDNF9DSFVOS19MTCBERVNfSU5UIEVYUE9SVF9W QVJfQVNfRk46aWE2NGNwdWlkLm86aWE2NC5vOjphZXNfY29yZS5vIGFlc19jYmMubyBhZXMtaWE2 NC5vOjptZDUtaWE2NC5vOnNoYTEtaWE2NC5vIHNoYTI1Ni1pYTY0Lm8gc2hhNTEyLWlhNjQubzo6 Ojo6OjppYXM6d2luMzIiLAotLSJWQy1XSU42NEEiLCJjbDotVzMgLUdzMCAtR3kgLW5vbG9nbyAt RE9QRU5TU0xfU1lTTkFNRV9XSU4zMiAtRFdJTjMyX0xFQU5fQU5EX01FQU4gLURMX0VORElBTiAt RFVOSUNPREUgLURfVU5JQ09ERSAtRF9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTo6OldJTjY0QTo6 U0lYVFlfRk9VUl9CSVQgUkM0X0NIVU5LX0xMIERFU19JTlQgRVhQT1JUX1ZBUl9BU19GTjp4ODZf NjRjcHVpZC5vOmJuX2FzbS5vIHg4Nl82NC1tb250Lm86OmFlcy14ODZfNjQubzo6bWQ1LXg4Nl82 NC5vOnNoYTEteDg2XzY0Lm8gc2hhMjU2LXg4Nl82NC5vIHNoYTUxMi14ODZfNjQubzo6cmM0LXg4 Nl82NC5vOjo6d3AteDg2XzY0Lm86Y21sbC14ODZfNjQubyBjbWxsX21pc2MubzphdXRvOndpbjMy IiwKLSsiVkMtV0lONjRBIiwiY2w6LVczIC1HczAgLUd5IC1ub2xvZ28gLURPUEVOU1NMX1NZU05B TUVfV0lOMzIgLURXSU4zMl9MRUFOX0FORF9NRUFOIC1ETF9FTkRJQU4gLURVTklDT0RFIC1EX1VO SUNPREUgLURfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU6OjpXSU42NEE6OlNJWFRZX0ZPVVJfQklU IFJDNF9DSFVOS19MTCBERVNfSU5UIEVYUE9SVF9WQVJfQVNfRk46eDg2XzY0Y3B1aWQubzpibl9h c20ubyB4ODZfNjQtbW9udC5vOjphZXMteDg2XzY0Lm8gYWVzbmkteDg2XzY0Lm86Om1kNS14ODZf NjQubzpzaGExLXg4Nl82NC5vIHNoYTI1Ni14ODZfNjQubyBzaGE1MTIteDg2XzY0Lm86OnJjNC14 ODZfNjQubzo6OndwLXg4Nl82NC5vOmNtbGwteDg2XzY0Lm8gY21sbF9taXNjLm86YXV0bzp3aW4z MiIsCi0gIyB4ODYgV2luMzIgdGFyZ2V0IGRlZmF1bHRzIHRvIEFOU0kgQVBJLCBpZiB5b3Ugd2Fu dCBVTklDT0RFLCBjb21wbGVtZW50Ci0gIyAncGVybCBDb25maWd1cmUgVkMtV0lOMzInIHdpdGgg Jy1EVU5JQ09ERSAtRF9VTklDT0RFJwotICJWQy1XSU4zMiIsImNsOi1XMyAtV1ggLUdzMCAtR0Yg LUd5IC1ub2xvZ28gLURPUEVOU1NMX1NZU05BTUVfV0lOMzIgLURXSU4zMl9MRUFOX0FORF9NRUFO IC1ETF9FTkRJQU4gLURfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU6OjpXSU4zMjo6Qk5fTExPTkcg UkM0X0lOREVYIEVYUE9SVF9WQVJfQVNfRk4gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2FzbX06d2lu MzJuOndpbjMyIiwKLUBAIC0xNDEwLDYgKzE0MTAsNyBAQCBpZiAoJHJtZDE2MF9vYmogPX4gL1wu byQvKQotIGlmICgkYWVzX29iaiA9fiAvXC5vJC8pCi0gCXsKLSAJJGNmbGFncy49IiAtREFFU19B U00iOwotKwkkYWVzX29iaiA9fiBzL1xzKmFlc25pXC14ODZcLm8vLyBpZiAoJG5vX3NzZTIpOwot IAl9Ci0gZWxzZQl7Ci0gCSRhZXNfb2JqPSRhZXNfZW5jOwotZGlmZiAtdXAgb3BlbnNzbC0xLjAu MC1iZXRhNC9jcnlwdG8vYWVzL2FzbS9hZXNuaS14ODYucGwuYWVzbmkgb3BlbnNzbC0xLjAuMC1i ZXRhNC9jcnlwdG8vYWVzL2FzbS9hZXNuaS14ODYucGwKLS0tLSBvcGVuc3NsLTEuMC4wLWJldGE0 L2NyeXB0by9hZXMvYXNtL2Flc25pLXg4Ni5wbC5hZXNuaQkyMDEwLTAxLTEyIDIyOjE4OjA2LjAw MDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2Flcy9hc20vYWVz bmkteDg2LnBsCTIwMTAtMDEtMTIgMjI6MTg6MDYuMDAwMDAwMDAwICswMTAwCi1AQCAtMCwwICsx LDc2NSBAQAotKyMhL3Vzci9iaW4vZW52IHBlcmwKLSsKLSsjID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rIyBXcml0 dGVuIGJ5IEFuZHkgUG9seWFrb3YgPGFwcHJvQGZ5LmNoYWxtZXJzLnNlPiBmb3IgdGhlIE9wZW5T U0wKLSsjIHByb2plY3QuIFRoZSBtb2R1bGUgaXMsIGhvd2V2ZXIsIGR1YWwgbGljZW5zZWQgdW5k ZXIgT3BlblNTTCBhbmQKLSsjIENSWVBUT0dBTVMgbGljZW5zZXMgZGVwZW5kaW5nIG9uIHdoZXJl IHlvdSBvYnRhaW4gaXQuIEZvciBmdXJ0aGVyCi0rIyBkZXRhaWxzIHNlZSBodHRwOi8vd3d3Lm9w ZW5zc2wub3JnL35hcHByby9jcnlwdG9nYW1zLy4KLSsjID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rIwotKyMgVGhp cyBtb2R1bGUgaW1wbGVtZW50cyBzdXBwb3J0IGZvciBJbnRlbCBBRVMtTkkgZXh0ZW5zaW9uLiBJ bgotKyMgT3BlblNTTCBjb250ZXh0IGl0J3MgdXNlZCB3aXRoIEludGVsIGVuZ2luZSwgYnV0IGNh biBhbHNvIGJlIHVzZWQgYXMKLSsjIGRyb3AtaW4gcmVwbGFjZW1lbnQgZm9yIGNyeXB0by9hZXMv YXNtL2Flcy01ODYucGwgW3NlZSBiZWxvdyBmb3IKLSsjIGRldGFpbHNdLgotKwotKyRQUkVGSVg9 ImFlc25pIjsJIyBpZiAkUFJFRklYIGlzIHNldCB0byAiQUVTIiwgdGhlIHNjcmlwdAotKwkJCSMg Z2VuZXJhdGVzIGRyb3AtaW4gcmVwbGFjZW1lbnQgZm9yCi0rCQkJIyBjcnlwdG8vYWVzL2FzbS9h ZXMtNTg2LnBsOi0pCi0rCi0rJDAgPX4gbS8oLipbXC9cXF0pW15cL1xcXSskLzsgJGRpcj0kMTsK LStwdXNoKEBJTkMsIiR7ZGlyfSIsIiR7ZGlyfS4uLy4uL3Blcmxhc20iKTsKLStyZXF1aXJlICJ4 ODZhc20ucGwiOwotKwotKyZhc21faW5pdCgkQVJHVlswXSwkMCk7Ci0rCi0rJG1vdmVrZXkgPSBl dmFsKCRSUkVGSVggZXEgImFzZW5pIiA/ICIqbW92YXBzIiA6ICIqbW92dXBzIik7Ci0rCi0rJGxl bj0iZWF4IjsKLSskcm91bmRzPSJlY3giOwotKyRrZXk9ImVkeCI7Ci0rJGlucD0iZXNpIjsKLSsk b3V0PSJlZGkiOwotKyRyb3VuZHNfPSJlYngiOwkjIGJhY2t1cCBjb3B5IGZvciAkcm91bmRzCi0r JGtleV89ImVicCI7CSMgYmFja3VwIGNvcHkgZm9yICRrZXkKLSsKLSskaW5vdXQwPSJ4bW0wIjsK LSskaW5vdXQxPSJ4bW0xIjsKLSskaW5vdXQyPSJ4bW0yIjsKLSskcm5ka2V5MD0ieG1tMyI7Ci0r JHJuZGtleTE9InhtbTQiOwotKyRpdmVjPSJ4bW01IjsKLSskaW4wPSJ4bW02IjsKLSskaW4xPSJ4 bW03IjsJJGlub3V0Mz0ieG1tNyI7Ci0rCi0rIyBJbmxpbmUgdmVyc2lvbiBvZiBpbnRlcm5hbCBh ZXNuaV9bZW58ZGVdY3J5cHQxCi0rc3ViIGFlc25pX2lubGluZV9nZW5lcmF0ZTEKLSt7IG15ICRw PXNoaWZ0OwotKwotKyAgICAmJG1vdmVrZXkJCSgkcm5ka2V5MCwmUVdQKDAsJGtleSkpOwotKyAg ICAmJG1vdmVrZXkJCSgkcm5ka2V5MSwmUVdQKDE2LCRrZXkpKTsKLSsgICAgJmxlYQkJKCRrZXks JkRXUCgzMiwka2V5KSk7Ci0rICAgICZweG9yCQkoJGlub3V0MCwkcm5ka2V5MCk7Ci0rICAgICZz ZXRfbGFiZWwoIiR7cH0xX2xvb3AiKTsKLSsJZXZhbCImYWVzJHtwfQkoJGlub3V0MCwkcm5ka2V5 MSkiOwotKwkmZGVjCQkoJHJvdW5kcyk7Ci0rCSYkbW92ZWtleQkoJHJuZGtleTEsJlFXUCgwLCRr ZXkpKTsKLSsJJmxlYQkJKCRrZXksJkRXUCgxNiwka2V5KSk7Ci0rICAgICZqbnoJCSgmbGFiZWwo IiR7cH0xX2xvb3AiKSk7Ci0rICAgIGV2YWwiJmFlcyR7cH1sYXN0CSgkaW5vdXQwLCRybmRrZXkx KSI7Ci0rfQotKwotK3N1YiBhZXNuaV9nZW5lcmF0ZTEJIyBmdWxseSB1bnJvbGxlZCBsb29wCi0r eyBteSAkcD1zaGlmdDsKLSsKLSsgICAgJmZ1bmN0aW9uX2JlZ2luX0IoIl9hZXNuaV8ke3B9cnlw dDEiKTsKLSsJJiRtb3Zla2V5CSgkcm5ka2V5MCwmUVdQKDAsJGtleSkpOwotKwkmJG1vdmVrZXkJ KCRybmRrZXkxLCZRV1AoMHgxMCwka2V5KSk7Ci0rCSZjbXAJCSgkcm91bmRzLDExKTsKLSsJJnB4 b3IJCSgkaW5vdXQwLCRybmRrZXkwKTsKLSsJJiRtb3Zla2V5CSgkcm5ka2V5MCwmUVdQKDB4MjAs JGtleSkpOwotKwkmbGVhCQkoJGtleSwmRFdQKDB4MzAsJGtleSkpOwotKwkmamIJCSgmbGFiZWwo IiR7cH0xMjgiKSk7Ci0rCSZsZWEJCSgka2V5LCZEV1AoMHgyMCwka2V5KSk7Ci0rCSZqZQkJKCZs YWJlbCgiJHtwfTE5MiIpKTsKLSsJJmxlYQkJKCRrZXksJkRXUCgweDIwLCRrZXkpKTsKLSsJZXZh bCImYWVzJHtwfQkoJGlub3V0MCwkcm5ka2V5MSkiOwotKwkmJG1vdmVrZXkJKCRybmRrZXkxLCZR V1AoLTB4NDAsJGtleSkpOwotKwlldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkwKSI7Ci0r CSYkbW92ZWtleQkoJHJuZGtleTAsJlFXUCgtMHgzMCwka2V5KSk7Ci0rICAgICZzZXRfbGFiZWwo IiR7cH0xOTIiKTsKLSsJZXZhbCImYWVzJHtwfQkoJGlub3V0MCwkcm5ka2V5MSkiOwotKwkmJG1v dmVrZXkJKCRybmRrZXkxLCZRV1AoLTB4MjAsJGtleSkpOwotKwlldmFsIiZhZXMke3B9CSgkaW5v dXQwLCRybmRrZXkwKSI7Ci0rCSYkbW92ZWtleQkoJHJuZGtleTAsJlFXUCgtMHgxMCwka2V5KSk7 Ci0rICAgICZzZXRfbGFiZWwoIiR7cH0xMjgiKTsKLSsJZXZhbCImYWVzJHtwfQkoJGlub3V0MCwk cm5ka2V5MSkiOwotKwkmJG1vdmVrZXkJKCRybmRrZXkxLCZRV1AoMCwka2V5KSk7Ci0rCWV2YWwi JmFlcyR7cH0JKCRpbm91dDAsJHJuZGtleTApIjsKLSsJJiRtb3Zla2V5CSgkcm5ka2V5MCwmUVdQ KDB4MTAsJGtleSkpOwotKwlldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkxKSI7Ci0rCSYk bW92ZWtleQkoJHJuZGtleTEsJlFXUCgweDIwLCRrZXkpKTsKLSsJZXZhbCImYWVzJHtwfQkoJGlu b3V0MCwkcm5ka2V5MCkiOwotKwkmJG1vdmVrZXkJKCRybmRrZXkwLCZRV1AoMHgzMCwka2V5KSk7 Ci0rCWV2YWwiJmFlcyR7cH0JKCRpbm91dDAsJHJuZGtleTEpIjsKLSsJJiRtb3Zla2V5CSgkcm5k a2V5MSwmUVdQKDB4NDAsJGtleSkpOwotKwlldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkw KSI7Ci0rCSYkbW92ZWtleQkoJHJuZGtleTAsJlFXUCgweDUwLCRrZXkpKTsKLSsJZXZhbCImYWVz JHtwfQkoJGlub3V0MCwkcm5ka2V5MSkiOwotKwkmJG1vdmVrZXkJKCRybmRrZXkxLCZRV1AoMHg2 MCwka2V5KSk7Ci0rCWV2YWwiJmFlcyR7cH0JKCRpbm91dDAsJHJuZGtleTApIjsKLSsJJiRtb3Zl a2V5CSgkcm5ka2V5MCwmUVdQKDB4NzAsJGtleSkpOwotKwlldmFsIiZhZXMke3B9CSgkaW5vdXQw LCRybmRrZXkxKSI7Ci0rICAgIGV2YWwiJmFlcyR7cH1sYXN0CSgkaW5vdXQwLCRybmRrZXkwKSI7 Ci0rICAgICZyZXQoKTsKLSsgICAgJmZ1bmN0aW9uX2VuZF9CKCJfYWVzbmlfJHtwfXJ5cHQxIik7 Ci0rfQotKwotKyMgdm9pZCAkUFJFRklYX2VuY3J5cHQgKGNvbnN0IHZvaWQgKmlucCx2b2lkICpv dXQsY29uc3QgQUVTX0tFWSAqa2V5KTsKLSsjICZhZXNuaV9nZW5lcmF0ZTEoImRlYyIpOwotKyZm dW5jdGlvbl9iZWdpbl9CKCIke1BSRUZJWH1fZW5jcnlwdCIpOwotKwkmbW92CSgiZWF4Iiwmd3Bh cmFtKDApKTsKLSsJJm1vdgkoJGtleSwmd3BhcmFtKDIpKTsKLSsJJm1vdnVwcwkoJGlub3V0MCwm UVdQKDAsImVheCIpKTsKLSsJJm1vdgkoJHJvdW5kcywmRFdQKDI0MCwka2V5KSk7Ci0rCSZtb3YJ KCJlYXgiLCZ3cGFyYW0oMSkpOwotKwkmYWVzbmlfaW5saW5lX2dlbmVyYXRlMSgiZW5jIik7CSMg JmNhbGwJKCJfYWVzbmlfZW5jcnlwdDEiKTsKLSsJJm1vdnVwcwkoJlFXUCgwLCJlYXgiKSwkaW5v dXQwKTsKLSsJJnJldAkoKTsKLSsmZnVuY3Rpb25fZW5kX0IoIiR7UFJFRklYfV9lbmNyeXB0Iik7 Ci0rCi0rIyB2b2lkICRQUkVGSVhfZGVjcnlwdCAoY29uc3Qgdm9pZCAqaW5wLHZvaWQgKm91dCxj b25zdCBBRVNfS0VZICprZXkpOwotKyMgJmFlc25pX2dlbmVyYXRlMSgiZGVjIik7Ci0rJmZ1bmN0 aW9uX2JlZ2luX0IoIiR7UFJFRklYfV9kZWNyeXB0Iik7Ci0rCSZtb3YJKCJlYXgiLCZ3cGFyYW0o MCkpOwotKwkmbW92CSgka2V5LCZ3cGFyYW0oMikpOwotKwkmbW92dXBzCSgkaW5vdXQwLCZRV1Ao MCwiZWF4IikpOwotKwkmbW92CSgkcm91bmRzLCZEV1AoMjQwLCRrZXkpKTsKLSsJJm1vdgkoImVh eCIsJndwYXJhbSgxKSk7Ci0rCSZhZXNuaV9pbmxpbmVfZ2VuZXJhdGUxKCJkZWMiKTsJIyAmY2Fs bAkoIl9hZXNuaV9kZWNyeXB0MSIpOwotKwkmbW92dXBzCSgmUVdQKDAsImVheCIpLCRpbm91dDAp OwotKwkmcmV0CSgpOwotKyZmdW5jdGlvbl9lbmRfQigiJHtQUkVGSVh9X2RlY3J5cHQiKTsKLSsM Ci0rIyBfYWVzbmlfW2VufGRlXWNyeXB0WzM0XSBhcmUgcHJpdmF0ZSBpbnRlcmZhY2VzLCBOIGRl bm90ZXMgaW50ZXJsZWF2ZQotKyMgZmFjdG9yLiBXaHkgM3ggc3Vicm91dGluZSBpcyB1c2VkIGlu IGxvb3BzPyBFdmVuIHRob3VnaCBhZXNbZW5jfGRlY10KLSsjIGxhdGVuY3kgaXMgNiwgaXQgdHVy bmVkIG91dCB0aGF0IGl0IGNhbiBiZSBzY2hlZHVsZWQgb25seSBldmVyeQotKyMgKnNlY29uZCog Y3ljbGUuIFRodXMgM3ggaW50ZXJsZWF2ZSBpcyB0aGUgb25lIHByb3ZpZGluZyBvcHRpbWFsCi0r IyB1dGlsaXphdGlvbiwgaS5lLiB3aGVuIHN1YnJvdXRpbmUncyB0aHJvdWdocHV0IGlzIHZpcnR1 YWxseSBzYW1lIGFzCi0rIyBvZiBub24taW50ZXJsZWF2ZWQgc3Vicm91dGluZSBbZm9yIG51bWJl ciBvZiBpbnB1dCBibG9ja3MgdXAgdG8gM10uCi0rIyBUaGlzIGlzIHdoeSBpdCBtYWtlcyBubyBz ZW5zZSB0byBpbXBsZW1lbnQgMnggc3Vicm91dGluZS4gQXMgc29vbgotKyMgYXMvaWYgSW50ZWwg aW1wcm92ZXMgdGhyb3VnaHB1dCBieSBtYWtpbmcgaXQgcG9zc2libGUgdG8gc2NoZWR1bGUKLSsj IHRoZSBpbnN0cnVjdGlvbnMgaW4gcXVlc3Rpb24gKmV2ZXJ5KiBjeWNsZXMgSSB3b3VsZCBoYXZl IHRvCi0rIyBpbXBsZW1lbnQgNnggaW50ZXJsZWF2ZSBhbmQgdXNlIGl0IGluIGxvb3AuLi4KLStz dWIgYWVzbmlfZ2VuZXJhdGUzCi0reyBteSAkcD1zaGlmdDsKLSsKLSsgICAgJmZ1bmN0aW9uX2Jl Z2luX0IoIl9hZXNuaV8ke3B9cnlwdDMiKTsKLSsJJiRtb3Zla2V5CSgkcm5ka2V5MCwmUVdQKDAs JGtleSkpOwotKwkmc2hyCQkoJHJvdW5kcywxKTsKLSsJJiRtb3Zla2V5CSgkcm5ka2V5MSwmUVdQ KDE2LCRrZXkpKTsKLSsJJmxlYQkJKCRrZXksJkRXUCgzMiwka2V5KSk7Ci0rCSZweG9yCQkoJGlu b3V0MCwkcm5ka2V5MCk7Ci0rCSZweG9yCQkoJGlub3V0MSwkcm5ka2V5MCk7Ci0rCSZweG9yCQko JGlub3V0Miwkcm5ka2V5MCk7Ci0rCSZqbXAJCSgmbGFiZWwoIiR7cH0zX2xvb3AiKSk7Ci0rICAg ICZzZXRfbGFiZWwoIiR7cH0zX2xvb3AiLDE2KTsKLSsJZXZhbCImYWVzJHtwfQkoJGlub3V0MCwk cm5ka2V5MSkiOwotKwkmJG1vdmVrZXkJKCRybmRrZXkwLCZRV1AoMCwka2V5KSk7Ci0rCWV2YWwi JmFlcyR7cH0JKCRpbm91dDEsJHJuZGtleTEpIjsKLSsJJmRlYwkJKCRyb3VuZHMpOwotKwlldmFs IiZhZXMke3B9CSgkaW5vdXQyLCRybmRrZXkxKSI7Ci0rCSYkbW92ZWtleQkoJHJuZGtleTEsJlFX UCgxNiwka2V5KSk7Ci0rCWV2YWwiJmFlcyR7cH0JKCRpbm91dDAsJHJuZGtleTApIjsKLSsJJmxl YQkJKCRrZXksJkRXUCgzMiwka2V5KSk7Ci0rCWV2YWwiJmFlcyR7cH0JKCRpbm91dDEsJHJuZGtl eTApIjsKLSsJZXZhbCImYWVzJHtwfQkoJGlub3V0Miwkcm5ka2V5MCkiOwotKwkmam56CQkoJmxh YmVsKCIke3B9M19sb29wIikpOwotKyAgICBldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkx KSI7Ci0rICAgICYkbW92ZWtleQkJKCRybmRrZXkwLCZRV1AoMCwka2V5KSk7Ci0rICAgIGV2YWwi JmFlcyR7cH0JKCRpbm91dDEsJHJuZGtleTEpIjsKLSsgICAgZXZhbCImYWVzJHtwfQkoJGlub3V0 Miwkcm5ka2V5MSkiOwotKyAgICBldmFsIiZhZXMke3B9bGFzdAkoJGlub3V0MCwkcm5ka2V5MCki OwotKyAgICBldmFsIiZhZXMke3B9bGFzdAkoJGlub3V0MSwkcm5ka2V5MCkiOwotKyAgICBldmFs IiZhZXMke3B9bGFzdAkoJGlub3V0Miwkcm5ka2V5MCkiOwotKyAgICAmcmV0KCk7Ci0rICAgICZm dW5jdGlvbl9lbmRfQigiX2Flc25pXyR7cH1yeXB0MyIpOwotK30KLSsKLSsjIDR4IGludGVybGVh dmUgaXMgaW1wbGVtZW50ZWQgdG8gaW1wcm92ZSBzbWFsbCBibG9jayBwZXJmb3JtYW5jZSwKLSsj IG1vc3Qgbm90YWJseSBbYW5kIG5hdHVyYWxseV0gNCBibG9jayBieSB+MzAlLiBPbmUgY2FuIGFy Z3VlIHRoYXQgb25lCi0rIyBzaG91bGQgaGF2ZSBpbXBsZW1lbnRlZCA1eCBhcyB3ZWxsLCBidXQg aW1wcm92ZW1lbnQgIHdvdWxkIGJlIDwyMCUsCi0rIyBzbyBpdCdzIG5vdCB3b3J0aCBpdC4uLgot K3N1YiBhZXNuaV9nZW5lcmF0ZTQKLSt7IG15ICRwPXNoaWZ0OwotKwotKyAgICAmZnVuY3Rpb25f YmVnaW5fQigiX2Flc25pXyR7cH1yeXB0NCIpOwotKwkmJG1vdmVrZXkJKCRybmRrZXkwLCZRV1Ao MCwka2V5KSk7Ci0rCSYkbW92ZWtleQkoJHJuZGtleTEsJlFXUCgxNiwka2V5KSk7Ci0rCSZzaHIJ CSgkcm91bmRzLDEpOwotKwkmbGVhCQkoJGtleSwmRFdQKDMyLCRrZXkpKTsKLSsJJnB4b3IJCSgk aW5vdXQwLCRybmRrZXkwKTsKLSsJJnB4b3IJCSgkaW5vdXQxLCRybmRrZXkwKTsKLSsJJnB4b3IJ CSgkaW5vdXQyLCRybmRrZXkwKTsKLSsJJnB4b3IJCSgkaW5vdXQzLCRybmRrZXkwKTsKLSsJJmpt cAkJKCZsYWJlbCgiJHtwfTNfbG9vcCIpKTsKLSsgICAgJnNldF9sYWJlbCgiJHtwfTNfbG9vcCIs MTYpOwotKwlldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkxKSI7Ci0rCSYkbW92ZWtleQko JHJuZGtleTAsJlFXUCgwLCRrZXkpKTsKLSsJZXZhbCImYWVzJHtwfQkoJGlub3V0MSwkcm5ka2V5 MSkiOwotKwkmZGVjCQkoJHJvdW5kcyk7Ci0rCWV2YWwiJmFlcyR7cH0JKCRpbm91dDIsJHJuZGtl eTEpIjsKLSsJZXZhbCImYWVzJHtwfQkoJGlub3V0Mywkcm5ka2V5MSkiOwotKwkmJG1vdmVrZXkJ KCRybmRrZXkxLCZRV1AoMTYsJGtleSkpOwotKwlldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRr ZXkwKSI7Ci0rCSZsZWEJCSgka2V5LCZEV1AoMzIsJGtleSkpOwotKwlldmFsIiZhZXMke3B9CSgk aW5vdXQxLCRybmRrZXkwKSI7Ci0rCWV2YWwiJmFlcyR7cH0JKCRpbm91dDIsJHJuZGtleTApIjsK LSsJZXZhbCImYWVzJHtwfQkoJGlub3V0Mywkcm5ka2V5MCkiOwotKwkmam56CQkoJmxhYmVsKCIk e3B9M19sb29wIikpOwotKyAgICBldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkxKSI7Ci0r ICAgICYkbW92ZWtleQkJKCRybmRrZXkwLCZRV1AoMCwka2V5KSk7Ci0rICAgIGV2YWwiJmFlcyR7 cH0JKCRpbm91dDEsJHJuZGtleTEpIjsKLSsgICAgZXZhbCImYWVzJHtwfQkoJGlub3V0Miwkcm5k a2V5MSkiOwotKyAgICBldmFsIiZhZXMke3B9CSgkaW5vdXQzLCRybmRrZXkxKSI7Ci0rICAgIGV2 YWwiJmFlcyR7cH1sYXN0CSgkaW5vdXQwLCRybmRrZXkwKSI7Ci0rICAgIGV2YWwiJmFlcyR7cH1s YXN0CSgkaW5vdXQxLCRybmRrZXkwKSI7Ci0rICAgIGV2YWwiJmFlcyR7cH1sYXN0CSgkaW5vdXQy LCRybmRrZXkwKSI7Ci0rICAgIGV2YWwiJmFlcyR7cH1sYXN0CSgkaW5vdXQzLCRybmRrZXkwKSI7 Ci0rICAgICZyZXQoKTsKLSsgICAgJmZ1bmN0aW9uX2VuZF9CKCJfYWVzbmlfJHtwfXJ5cHQ0Iik7 Ci0rfQotKyZhZXNuaV9nZW5lcmF0ZTMoImVuYyIpIGlmICgkUFJFRklYIGVxICJhZXNuaSIpOwot KyZhZXNuaV9nZW5lcmF0ZTMoImRlYyIpOwotKyZhZXNuaV9nZW5lcmF0ZTQoImVuYyIpIGlmICgk UFJFRklYIGVxICJhZXNuaSIpOwotKyZhZXNuaV9nZW5lcmF0ZTQoImRlYyIpOwotKwotK2lmICgk UFJFRklYIGVxICJhZXNuaSIpIHsKLSsjIHZvaWQgYWVzbmlfZWNiX2VuY3J5cHQgKGNvbnN0IHZv aWQgKmluLCB2b2lkICpvdXQsCi0rIyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVu Z3RoLCBjb25zdCBBRVNfS0VZICprZXksCi0rIyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg ZW5jKTsKLSsmZnVuY3Rpb25fYmVnaW4oImFlc25pX2VjYl9lbmNyeXB0Iik7Ci0rCSZtb3YJKCRp bnAsJndwYXJhbSgwKSk7Ci0rCSZtb3YJKCRvdXQsJndwYXJhbSgxKSk7Ci0rCSZtb3YJKCRsZW4s JndwYXJhbSgyKSk7Ci0rCSZtb3YJKCRrZXksJndwYXJhbSgzKSk7Ci0rCSZtb3YJKCRyb3VuZHMs JndwYXJhbSg0KSk7Ci0rCSZjbXAJKCRsZW4sMTYpOwotKwkmamIJKCZsYWJlbCgiZWNiX3JldCIp KTsKLSsJJmFuZAkoJGxlbiwtMTYpOwotKwkmdGVzdAkoJHJvdW5kcywkcm91bmRzKQotKwkmbW92 CSgkcm91bmRzLCZEV1AoMjQwLCRrZXkpKTsKLSsJJm1vdgkoJGtleV8sJGtleSk7CQkjIGJhY2t1 cCAka2V5Ci0rCSZtb3YJKCRyb3VuZHNfLCRyb3VuZHMpOwkjIGJhY2t1cCAkcm91bmRzCi0rCSZq egkoJmxhYmVsKCJlY2JfZGVjcnlwdCIpKTsKLSsKLSsJJnN1YgkoJGxlbiwweDQwKTsKLSsJJmpi ZQkoJmxhYmVsKCJlY2JfZW5jX3RhaWwiKSk7Ci0rCSZqbXAJKCZsYWJlbCgiZWNiX2VuY19sb29w MyIpKTsKLSsKLSsmc2V0X2xhYmVsKCJlY2JfZW5jX2xvb3AzIiwxNik7Ci0rCSZtb3Z1cHMJKCRp bm91dDAsJlFXUCgwLCRpbnApKTsKLSsJJm1vdnVwcwkoJGlub3V0MSwmUVdQKDB4MTAsJGlucCkp OwotKwkmbW92dXBzCSgkaW5vdXQyLCZRV1AoMHgyMCwkaW5wKSk7Ci0rCSZjYWxsCSgiX2Flc25p X2VuY3J5cHQzIik7Ci0rCSZzdWIJKCRsZW4sMHgzMCk7Ci0rCSZsZWEJKCRpbnAsJkRXUCgweDMw LCRpbnApKTsKLSsJJmxlYQkoJG91dCwmRFdQKDB4MzAsJG91dCkpOwotKwkmbW92dXBzCSgmUVdQ KC0weDMwLCRvdXQpLCRpbm91dDApOwotKwkmbW92CSgka2V5LCRrZXlfKTsJCSMgcmVzdG9yZSAk a2V5Ci0rCSZtb3Z1cHMJKCZRV1AoLTB4MjAsJG91dCksJGlub3V0MSk7Ci0rCSZtb3YJKCRyb3Vu ZHMsJHJvdW5kc18pOwkjIHJlc3RvcmUgJHJvdW5kcwotKwkmbW92dXBzCSgmUVdQKC0weDEwLCRv dXQpLCRpbm91dDIpOwotKwkmamEJKCZsYWJlbCgiZWNiX2VuY19sb29wMyIpKTsKLSsKLSsmc2V0 X2xhYmVsKCJlY2JfZW5jX3RhaWwiKTsKLSsJJmFkZAkoJGxlbiwweDQwKTsKLSsJJmp6CSgmbGFi ZWwoImVjYl9yZXQiKSk7Ci0rCi0rCSZjbXAJKCRsZW4sMHgxMCk7Ci0rCSZtb3Z1cHMJKCRpbm91 dDAsJlFXUCgwLCRpbnApKTsKLSsJJmplCSgmbGFiZWwoImVjYl9lbmNfb25lIikpOwotKwkmY21w CSgkbGVuLDB4MjApOwotKwkmbW92dXBzCSgkaW5vdXQxLCZRV1AoMHgxMCwkaW5wKSk7Ci0rCSZq ZQkoJmxhYmVsKCJlY2JfZW5jX3R3byIpKTsKLSsJJmNtcAkoJGxlbiwweDMwKTsKLSsJJm1vdnVw cwkoJGlub3V0MiwmUVdQKDB4MjAsJGlucCkpOwotKwkmamUJKCZsYWJlbCgiZWNiX2VuY190aHJl ZSIpKTsKLSsJJm1vdnVwcwkoJGlub3V0MywmUVdQKDB4MzAsJGlucCkpOwotKwkmY2FsbAkoIl9h ZXNuaV9lbmNyeXB0NCIpOwotKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7Ci0rCSZt b3Z1cHMJKCZRV1AoMHgxMCwkb3V0KSwkaW5vdXQxKTsKLSsJJm1vdnVwcwkoJlFXUCgweDIwLCRv dXQpLCRpbm91dDIpOwotKwkmbW92dXBzCSgmUVdQKDB4MzAsJG91dCksJGlub3V0Myk7Ci0rCWpt cAkoJmxhYmVsKCJlY2JfcmV0IikpOwotKwotKyZzZXRfbGFiZWwoImVjYl9lbmNfb25lIiwxNik7 Ci0rCSZhZXNuaV9pbmxpbmVfZ2VuZXJhdGUxKCJlbmMiKTsJIyAmY2FsbAkoIl9hZXNuaV9lbmNy eXB0MSIpOwotKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7Ci0rCSZqbXAJKCZsYWJl bCgiZWNiX3JldCIpKTsKLSsKLSsmc2V0X2xhYmVsKCJlY2JfZW5jX3R3byIsMTYpOwotKwkmY2Fs bAkoIl9hZXNuaV9lbmNyeXB0MyIpOwotKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7 Ci0rCSZtb3Z1cHMJKCZRV1AoMHgxMCwkb3V0KSwkaW5vdXQxKTsKLSsJJmptcAkoJmxhYmVsKCJl Y2JfcmV0IikpOwotKwotKyZzZXRfbGFiZWwoImVjYl9lbmNfdGhyZWUiLDE2KTsKLSsJJmNhbGwJ KCJfYWVzbmlfZW5jcnlwdDMiKTsKLSsJJm1vdnVwcwkoJlFXUCgwLCRvdXQpLCRpbm91dDApOwot KwkmbW92dXBzCSgmUVdQKDB4MTAsJG91dCksJGlub3V0MSk7Ci0rCSZtb3Z1cHMJKCZRV1AoMHgy MCwkb3V0KSwkaW5vdXQyKTsKLSsJJmptcAkoJmxhYmVsKCJlY2JfcmV0IikpOwotKwotKyZzZXRf bGFiZWwoImVjYl9kZWNyeXB0IiwxNik7Ci0rCSZzdWIJKCRsZW4sMHg0MCk7Ci0rCSZqYmUJKCZs YWJlbCgiZWNiX2RlY190YWlsIikpOwotKwkmam1wCSgmbGFiZWwoImVjYl9kZWNfbG9vcDMiKSk7 Ci0rCi0rJnNldF9sYWJlbCgiZWNiX2RlY19sb29wMyIsMTYpOwotKwkmbW92dXBzCSgkaW5vdXQw LCZRV1AoMCwkaW5wKSk7Ci0rCSZtb3Z1cHMJKCRpbm91dDEsJlFXUCgweDEwLCRpbnApKTsKLSsJ Jm1vdnVwcwkoJGlub3V0MiwmUVdQKDB4MjAsJGlucCkpOwotKwkmY2FsbAkoIl9hZXNuaV9kZWNy eXB0MyIpOwotKwkmc3ViCSgkbGVuLDB4MzApOwotKwkmbGVhCSgkaW5wLCZEV1AoMHgzMCwkaW5w KSk7Ci0rCSZsZWEJKCRvdXQsJkRXUCgweDMwLCRvdXQpKTsKLSsJJm1vdnVwcwkoJlFXUCgtMHgz MCwkb3V0KSwkaW5vdXQwKTsKLSsJJm1vdgkoJGtleSwka2V5Xyk7CQkjIHJlc3RvcmUgJGtleQot KwkmbW92dXBzCSgmUVdQKC0weDIwLCRvdXQpLCRpbm91dDEpOwotKwkmbW92CSgkcm91bmRzLCRy b3VuZHNfKTsJIyByZXN0b3JlICRyb3VuZHMKLSsJJm1vdnVwcwkoJlFXUCgtMHgxMCwkb3V0KSwk aW5vdXQyKTsKLSsJJmphCSgmbGFiZWwoImVjYl9kZWNfbG9vcDMiKSk7Ci0rCi0rJnNldF9sYWJl bCgiZWNiX2RlY190YWlsIik7Ci0rCSZhZGQJKCRsZW4sMHg0MCk7Ci0rCSZqegkoJmxhYmVsKCJl Y2JfcmV0IikpOwotKwotKwkmY21wCSgkbGVuLDB4MTApOwotKwkmbW92dXBzCSgkaW5vdXQwLCZR V1AoMCwkaW5wKSk7Ci0rCSZqZQkoJmxhYmVsKCJlY2JfZGVjX29uZSIpKTsKLSsJJmNtcAkoJGxl biwweDIwKTsKLSsJJm1vdnVwcwkoJGlub3V0MSwmUVdQKDB4MTAsJGlucCkpOwotKwkmamUJKCZs YWJlbCgiZWNiX2RlY190d28iKSk7Ci0rCSZjbXAJKCRsZW4sMHgzMCk7Ci0rCSZtb3Z1cHMJKCRp bm91dDIsJlFXUCgweDIwLCRpbnApKTsKLSsJJmplCSgmbGFiZWwoImVjYl9kZWNfdGhyZWUiKSk7 Ci0rCSZtb3Z1cHMJKCRpbm91dDMsJlFXUCgweDMwLCRpbnApKTsKLSsJJmNhbGwJKCJfYWVzbmlf ZGVjcnlwdDQiKTsKLSsJJm1vdnVwcwkoJlFXUCgwLCRvdXQpLCRpbm91dDApOwotKwkmbW92dXBz CSgmUVdQKDB4MTAsJG91dCksJGlub3V0MSk7Ci0rCSZtb3Z1cHMJKCZRV1AoMHgyMCwkb3V0KSwk aW5vdXQyKTsKLSsJJm1vdnVwcwkoJlFXUCgweDMwLCRvdXQpLCRpbm91dDMpOwotKwkmam1wCSgm bGFiZWwoImVjYl9yZXQiKSk7Ci0rCi0rJnNldF9sYWJlbCgiZWNiX2RlY19vbmUiLDE2KTsKLSsJ JmFlc25pX2lubGluZV9nZW5lcmF0ZTEoImRlYyIpOwkjICZjYWxsCSgiX2Flc25pX2RlY3J5cHQz Iik7Ci0rCSZtb3Z1cHMJKCZRV1AoMCwkb3V0KSwkaW5vdXQwKTsKLSsJJmptcAkoJmxhYmVsKCJl Y2JfcmV0IikpOwotKwotKyZzZXRfbGFiZWwoImVjYl9kZWNfdHdvIiwxNik7Ci0rCSZjYWxsCSgi X2Flc25pX2RlY3J5cHQzIik7Ci0rCSZtb3Z1cHMJKCZRV1AoMCwkb3V0KSwkaW5vdXQwKTsKLSsJ Jm1vdnVwcwkoJlFXUCgweDEwLCRvdXQpLCRpbm91dDEpOwotKwkmam1wCSgmbGFiZWwoImVjYl9y ZXQiKSk7Ci0rCi0rJnNldF9sYWJlbCgiZWNiX2RlY190aHJlZSIsMTYpOwotKwkmY2FsbAkoIl9h ZXNuaV9kZWNyeXB0MyIpOwotKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7Ci0rCSZt b3Z1cHMJKCZRV1AoMHgxMCwkb3V0KSwkaW5vdXQxKTsKLSsJJm1vdnVwcwkoJlFXUCgweDIwLCRv dXQpLCRpbm91dDIpOwotKwotKyZzZXRfbGFiZWwoImVjYl9yZXQiKTsKLSsmZnVuY3Rpb25fZW5k KCJhZXNuaV9lY2JfZW5jcnlwdCIpOwotK30KLSsKLSsjIHZvaWQgJFBSRUZJWF9jYmNfZW5jcnlw dCAoY29uc3Qgdm9pZCAqaW5wLCB2b2lkICpvdXQsCi0rIyAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNpemVfdCBsZW5ndGgsIGNvbnN0IEFFU19LRVkgKmtleSwKLSsjICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqaXZwLGNvbnN0IGludCBlbmMpOwotKyZmdW5jdGlv bl9iZWdpbigiJHtQUkVGSVh9X2NiY19lbmNyeXB0Iik7Ci0rCSZtb3YJKCRpbnAsJndwYXJhbSgw KSk7Ci0rCSZtb3YJKCRvdXQsJndwYXJhbSgxKSk7Ci0rCSZtb3YJKCRsZW4sJndwYXJhbSgyKSk7 Ci0rCSZtb3YJKCRrZXksJndwYXJhbSgzKSk7Ci0rCSZ0ZXN0CSgkbGVuLCRsZW4pOwotKwkmbW92 CSgka2V5Xywmd3BhcmFtKDQpKTsKLSsJJmp6CSgmbGFiZWwoImNiY19yZXQiKSk7Ci0rCi0rCSZj bXAJKCZ3cGFyYW0oNSksMCk7Ci0rCSZtb3Z1cHMJKCRpdmVjLCZRV1AoMCwka2V5XykpOwkjIGxv YWQgSVYKLSsJJm1vdgkoJHJvdW5kcywmRFdQKDI0MCwka2V5KSk7Ci0rCSZtb3YJKCRrZXlfLCRr ZXkpOwkJIyBiYWNrdXAgJGtleQotKwkmbW92CSgkcm91bmRzXywkcm91bmRzKTsJIyBiYWNrdXAg JHJvdW5kcwotKwkmamUJKCZsYWJlbCgiY2JjX2RlY3J5cHQiKSk7Ci0rCi0rCSZtb3ZhcHMJKCRp bm91dDAsJGl2ZWMpOwotKwkmY21wCSgkbGVuLDE2KTsKLSsJJmpiCSgmbGFiZWwoImNiY19lbmNf dGFpbCIpKTsKLSsJJnN1YgkoJGxlbiwxNik7Ci0rCSZqbXAJKCZsYWJlbCgiY2JjX2VuY19sb29w IikpOwotKwotKyZzZXRfbGFiZWwoImNiY19lbmNfbG9vcCIsMTYpOwotKwkmbW92dXBzCSgkaXZl YywmUVdQKDAsJGlucCkpOwotKwkmbGVhCSgkaW5wLCZEV1AoMTYsJGlucCkpOwotKwkmcHhvcgko JGlub3V0MCwkaXZlYyk7Ci0rCSZhZXNuaV9pbmxpbmVfZ2VuZXJhdGUxKCJlbmMiKTsJIyAmY2Fs bAkoIl9hZXNuaV9lbmNyeXB0MyIpOwotKwkmc3ViCSgkbGVuLDE2KTsKLSsJJmxlYQkoJG91dCwm RFdQKDE2LCRvdXQpKTsKLSsJJm1vdgkoJHJvdW5kcywkcm91bmRzXyk7CSMgcmVzdG9yZSAkcm91 bmRzCi0rCSZtb3YJKCRrZXksJGtleV8pOwkJIyByZXN0b3JlICRrZXkKLSsJJm1vdnVwcwkoJlFX UCgtMTYsJG91dCksJGlub3V0MCk7Ci0rCSZqbmMJKCZsYWJlbCgiY2JjX2VuY19sb29wIikpOwot KwkmYWRkCSgkbGVuLDE2KTsKLSsJJmpuegkoJmxhYmVsKCJjYmNfZW5jX3RhaWwiKSk7Ci0rCSZt b3ZhcHMJKCRpdmVjLCRpbm91dDApOwotKwkmam1wCSgmbGFiZWwoImNiY19yZXQiKSk7Ci0rCi0r JnNldF9sYWJlbCgiY2JjX2VuY190YWlsIik7Ci0rCSZtb3YJKCJlY3giLCRsZW4pOwkJIyB6YXBz ICRyb3VuZHMKLSsJJmRhdGFfd29yZCgweEE0RjNGNjg5KTsJCSMgcmVwIG1vdnNiCi0rCSZtb3YJ KCJlY3giLDE2KTsJCSMgemVybyB0YWlsCi0rCSZzdWIJKCJlY3giLCRsZW4pOwotKwkmeG9yCSgi ZWF4IiwiZWF4Iik7CQkjIHphcHMgJGxlbgotKwkmZGF0YV93b3JkKDB4QUFGM0Y2ODkpOwkJIyBy ZXAgc3Rvc2IKLSsJJmxlYQkoJG91dCwmRFdQKC0xNiwkb3V0KSk7CSMgcmV3aW5kICRvdXQgYnkg MSBibG9jawotKwkmbW92CSgkcm91bmRzLCRyb3VuZHNfKTsJIyByZXN0b3JlICRyb3VuZHMKLSsJ Jm1vdgkoJGlucCwkb3V0KTsJCSMgJGlucCBhbmQgJG91dCBhcmUgdGhlIHNhbWUKLSsJJm1vdgko JGtleSwka2V5Xyk7CQkjIHJlc3RvcmUgJGtleQotKwkmam1wCSgmbGFiZWwoImNiY19lbmNfbG9v cCIpKTsKLSsKLSsmc2V0X2xhYmVsKCJjYmNfZGVjcnlwdCIsMTYpOwotKwkmc3ViCSgkbGVuLDB4 NDApOwotKwkmamJlCSgmbGFiZWwoImNiY19kZWNfdGFpbCIpKTsKLSsJJmptcAkoJmxhYmVsKCJj YmNfZGVjX2xvb3AzIikpOwotKwotKyZzZXRfbGFiZWwoImNiY19kZWNfbG9vcDMiLDE2KTsKLSsJ Jm1vdnVwcwkoJGlub3V0MCwmUVdQKDAsJGlucCkpOwotKwkmbW92dXBzCSgkaW5vdXQxLCZRV1Ao MHgxMCwkaW5wKSk7Ci0rCSZtb3Z1cHMJKCRpbm91dDIsJlFXUCgweDIwLCRpbnApKTsKLSsJJm1v dmFwcwkoJGluMCwkaW5vdXQwKTsKLSsJJm1vdmFwcwkoJGluMSwkaW5vdXQxKTsKLSsJJmNhbGwJ KCJfYWVzbmlfZGVjcnlwdDMiKTsKLSsJJnN1YgkoJGxlbiwweDMwKTsKLSsJJmxlYQkoJGlucCwm RFdQKDB4MzAsJGlucCkpOwotKwkmbGVhCSgkb3V0LCZEV1AoMHgzMCwkb3V0KSk7Ci0rCSZweG9y CSgkaW5vdXQwLCRpdmVjKTsKLSsJJnB4b3IJKCRpbm91dDEsJGluMCk7Ci0rCSZtb3Z1cHMJKCRp dmVjLCZRV1AoLTB4MTAsJGlucCkpOwotKwkmcHhvcgkoJGlub3V0MiwkaW4xKTsKLSsJJm1vdnVw cwkoJlFXUCgtMHgzMCwkb3V0KSwkaW5vdXQwKTsKLSsJJm1vdgkoJHJvdW5kcywkcm91bmRzXykJ IyByZXN0b3JlICRyb3VuZHMKLSsJJm1vdnVwcwkoJlFXUCgtMHgyMCwkb3V0KSwkaW5vdXQxKTsK LSsJJm1vdgkoJGtleSwka2V5Xyk7CQkjIHJlc3RvcmUgJGtleQotKwkmbW92dXBzCSgmUVdQKC0w eDEwLCRvdXQpLCRpbm91dDIpOwotKwkmamEJKCZsYWJlbCgiY2JjX2RlY19sb29wMyIpKTsKLSsK LSsmc2V0X2xhYmVsKCJjYmNfZGVjX3RhaWwiKTsKLSsJJmFkZAkoJGxlbiwweDQwKTsKLSsJJmp6 CSgmbGFiZWwoImNiY19yZXQiKSk7Ci0rCi0rCSZtb3Z1cHMJKCRpbm91dDAsJlFXUCgwLCRpbnAp KTsKLSsJJmNtcAkoJGxlbiwweDEwKTsKLSsJJm1vdmFwcwkoJGluMCwkaW5vdXQwKTsKLSsJJmpi ZQkoJmxhYmVsKCJjYmNfZGVjX29uZSIpKTsKLSsJJm1vdnVwcwkoJGlub3V0MSwmUVdQKDB4MTAs JGlucCkpOwotKwkmY21wCSgkbGVuLDB4MjApOwotKwkmbW92YXBzCSgkaW4xLCRpbm91dDEpOwot KwkmamJlCSgmbGFiZWwoImNiY19kZWNfdHdvIikpOwotKwkmbW92dXBzCSgkaW5vdXQyLCZRV1Ao MHgyMCwkaW5wKSk7Ci0rCSZjbXAJKCRsZW4sMHgzMCk7Ci0rCSZqYmUJKCZsYWJlbCgiY2JjX2Rl Y190aHJlZSIpKTsKLSsJJm1vdnVwcwkoJGlub3V0MywmUVdQKDB4MzAsJGlucCkpOwotKwkmY2Fs bAkoIl9hZXNuaV9kZWNyeXB0NCIpOwotKwkmbW92dXBzCSgkcm5ka2V5MCwmUVdQKDB4MTAsJGlu cCkpOwotKwkmbW92dXBzCSgkcm5ka2V5MSwmUVdQKDB4MjAsJGlucCkpOwotKwkmcHhvcgkoJGlu b3V0MCwkaXZlYyk7Ci0rCSZweG9yCSgkaW5vdXQxLCRpbjApOwotKwkmbW92dXBzCSgkaXZlYywm UVdQKDB4MzAsJGlucCkpOwotKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7Ci0rCSZw eG9yCSgkaW5vdXQyLCRybmRrZXkwKTsKLSsJJnB4b3IJKCRpbm91dDMsJHJuZGtleTEpOwotKwkm bW92dXBzCSgmUVdQKDB4MTAsJG91dCksJGlub3V0MSk7Ci0rCSZtb3Z1cHMJKCZRV1AoMHgyMCwk b3V0KSwkaW5vdXQyKTsKLSsJJm1vdmFwcwkoJGlub3V0MCwkaW5vdXQzKTsKLSsJJmxlYQkoJG91 dCwmRFdQKDB4MzAsJG91dCkpOwotKwkmam1wCSgmbGFiZWwoImNiY19kZWNfdGFpbF9jb2xsZWN0 ZWQiKSk7Ci0rCi0rJnNldF9sYWJlbCgiY2JjX2RlY19vbmUiKTsKLSsJJmFlc25pX2lubGluZV9n ZW5lcmF0ZTEoImRlYyIpOwkjICZjYWxsCSgiX2Flc25pX2RlY3J5cHQzIik7Ci0rCSZweG9yCSgk aW5vdXQwLCRpdmVjKTsKLSsJJm1vdmFwcwkoJGl2ZWMsJGluMCk7Ci0rCSZqbXAJKCZsYWJlbCgi Y2JjX2RlY190YWlsX2NvbGxlY3RlZCIpKTsKLSsKLSsmc2V0X2xhYmVsKCJjYmNfZGVjX3R3byIp OwotKwkmY2FsbAkoIl9hZXNuaV9kZWNyeXB0MyIpOwotKwkmcHhvcgkoJGlub3V0MCwkaXZlYyk7 Ci0rCSZweG9yCSgkaW5vdXQxLCRpbjApOwotKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0 MCk7Ci0rCSZtb3ZhcHMJKCRpbm91dDAsJGlub3V0MSk7Ci0rCSZtb3ZhcHMJKCRpdmVjLCRpbjEp OwotKwkmbGVhCSgkb3V0LCZEV1AoMHgxMCwkb3V0KSk7Ci0rCSZqbXAJKCZsYWJlbCgiY2JjX2Rl Y190YWlsX2NvbGxlY3RlZCIpKTsKLSsKLSsmc2V0X2xhYmVsKCJjYmNfZGVjX3RocmVlIik7Ci0r CSZjYWxsCSgiX2Flc25pX2RlY3J5cHQzIik7Ci0rCSZweG9yCSgkaW5vdXQwLCRpdmVjKTsKLSsJ JnB4b3IJKCRpbm91dDEsJGluMCk7Ci0rCSZweG9yCSgkaW5vdXQyLCRpbjEpOwotKwkmbW92dXBz CSgmUVdQKDAsJG91dCksJGlub3V0MCk7Ci0rCSZtb3Z1cHMJKCZRV1AoMHgxMCwkb3V0KSwkaW5v dXQxKTsKLSsJJm1vdmFwcwkoJGlub3V0MCwkaW5vdXQyKTsKLSsJJm1vdnVwcwkoJGl2ZWMsJlFX UCgweDIwLCRpbnApKTsKLSsJJmxlYQkoJG91dCwmRFdQKDB4MjAsJG91dCkpOwotKwotKyZzZXRf bGFiZWwoImNiY19kZWNfdGFpbF9jb2xsZWN0ZWQiKTsKLSsJJmFuZAkoJGxlbiwxNSk7Ci0rCSZq bnoJKCZsYWJlbCgiY2JjX2RlY190YWlsX3BhcnRpYWwiKSk7Ci0rCSZtb3Z1cHMJKCZRV1AoMCwk b3V0KSwkaW5vdXQwKTsKLSsJJmptcAkoJmxhYmVsKCJjYmNfcmV0IikpOwotKwotKyZzZXRfbGFi ZWwoImNiY19kZWNfdGFpbF9wYXJ0aWFsIik7Ci0rCSZtb3YJKCRrZXlfLCJlc3AiKTsKLSsJJnN1 YgkoImVzcCIsMTYpOwotKwkmYW5kCSgiZXNwIiwtMTYpOwotKwkmbW92YXBzCSgmUVdQKDAsImVz cCIpLCRpbm91dDApOwotKwkmbW92CSgkaW5wLCJlc3AiKTsKLSsJJm1vdgkoImVjeCIsJGxlbik7 Ci0rCSZkYXRhX3dvcmQoMHhBNEYzRjY4OSk7CQkjIHJlcCBtb3ZzYgotKwkmbW92CSgiZXNwIiwk a2V5Xyk7Ci0rCi0rJnNldF9sYWJlbCgiY2JjX3JldCIpOwotKwkmbW92CSgka2V5Xywmd3BhcmFt KDQpKTsKLSsJJm1vdnVwcwkoJlFXUCgwLCRrZXlfKSwkaXZlYyk7CSMgb3V0cHV0IElWCi0rJmZ1 bmN0aW9uX2VuZCgiJHtQUkVGSVh9X2NiY19lbmNyeXB0Iik7Ci0rCi0rIyBNZWNoYW5pY2FsIHBv cnQgZnJvbSBhZXNuaS14ODZfNjQucGwuCi0rIwotKyMgX2Flc25pX3NldF9lbmNyeXB0X2tleSBp cyBwcml2YXRlIGludGVyZmFjZSwKLSsjIGlucHV0OgotKyMJImVheCIJY29uc3QgdW5zaWduZWQg Y2hhciAqdXNlcktleQotKyMJJHJvdW5kcwlpbnQgYml0cwotKyMJJGtleQlBRVNfS0VZICprZXkK LSsjIG91dHB1dDoKLSsjCSJlYXgiCXJldHVybiBjb2RlCi0rIwkkcm91bmQJcm91bmRzCi0rCi0r JmZ1bmN0aW9uX2JlZ2luX0IoIl9hZXNuaV9zZXRfZW5jcnlwdF9rZXkiKTsKLSsJJnRlc3QJKCJl YXgiLCJlYXgiKTsKLSsJJmp6CSgmbGFiZWwoImJhZF9wb2ludGVyIikpOwotKwkmdGVzdAkoJGtl eSwka2V5KTsKLSsJJmp6CSgmbGFiZWwoImJhZF9wb2ludGVyIikpOwotKwotKwkmbW92dXBzCSgi eG1tMCIsJlFXUCgwLCJlYXgiKSk7CSMgcHVsbCBmaXJzdCAxMjggYml0cyBvZiAqdXNlcktleQot KwkmcHhvcgkoInhtbTQiLCJ4bW00Iik7CSMgbG93IGR3b3JkIG9mIHhtbTQgaXMgYXNzdW1lZCAw Ci0rCSZsZWEJKCRrZXksJkRXUCgxNiwka2V5KSk7Ci0rCSZjbXAJKCRyb3VuZHMsMjU2KTsKLSsJ JmplCSgmbGFiZWwoIjE0cm91bmRzIikpOwotKwkmY21wCSgkcm91bmRzLDE5Mik7Ci0rCSZqZQko JmxhYmVsKCIxMnJvdW5kcyIpKTsKLSsJJmNtcAkoJHJvdW5kcywxMjgpOwotKwkmam5lCSgmbGFi ZWwoImJhZF9rZXliaXRzIikpOwotKwotKyZzZXRfbGFiZWwoIjEwcm91bmRzIiwxNik7Ci0rCSZt b3YJCSgkcm91bmRzLDkpOwotKwkmJG1vdmVrZXkJKCZRV1AoLTE2LCRrZXkpLCJ4bW0wIik7CSMg cm91bmQgMAotKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMCIsMHgwMSk7CQkjIHJvdW5k IDEKLSsJJmNhbGwJCSgmbGFiZWwoImtleV8xMjhfY29sZCIpKTsKLSsJJmFlc2tleWdlbmFzc2lz dCgieG1tMSIsInhtbTAiLDB4Mik7CQkjIHJvdW5kIDIKLSsJJmNhbGwJCSgmbGFiZWwoImtleV8x MjgiKSk7Ci0rCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0wIiwweDA0KTsJCSMgcm91bmQg MwotKwkmY2FsbAkJKCZsYWJlbCgia2V5XzEyOCIpKTsKLSsJJmFlc2tleWdlbmFzc2lzdCgieG1t MSIsInhtbTAiLDB4MDgpOwkJIyByb3VuZCA0Ci0rCSZjYWxsCQkoJmxhYmVsKCJrZXlfMTI4Iikp OwotKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMCIsMHgxMCk7CQkjIHJvdW5kIDUKLSsJ JmNhbGwJCSgmbGFiZWwoImtleV8xMjgiKSk7Ci0rCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4 bW0wIiwweDIwKTsJCSMgcm91bmQgNgotKwkmY2FsbAkJKCZsYWJlbCgia2V5XzEyOCIpKTsKLSsJ JmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTAiLDB4NDApOwkJIyByb3VuZCA3Ci0rCSZjYWxs CQkoJmxhYmVsKCJrZXlfMTI4IikpOwotKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMCIs MHg4MCk7CQkjIHJvdW5kIDgKLSsJJmNhbGwJCSgmbGFiZWwoImtleV8xMjgiKSk7Ci0rCSZhZXNr ZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0wIiwweDFiKTsJCSMgcm91bmQgOQotKwkmY2FsbAkJKCZs YWJlbCgia2V5XzEyOCIpKTsKLSsJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTAiLDB4MzYp OwkJIyByb3VuZCAxMAotKwkmY2FsbAkJKCZsYWJlbCgia2V5XzEyOCIpKTsKLSsJJiRtb3Zla2V5 CSgmUVdQKDAsJGtleSksInhtbTAiKTsKLSsJJm1vdgkJKCZEV1AoODAsJGtleSksJHJvdW5kcyk7 Ci0rCSZ4b3IJCSgiZWF4IiwiZWF4Iik7Ci0rCSZyZXQoKTsKLSsKLSsmc2V0X2xhYmVsKCJrZXlf MTI4IiwxNik7Ci0rCSYkbW92ZWtleQkoJlFXUCgwLCRrZXkpLCJ4bW0wIik7Ci0rCSZsZWEJCSgk a2V5LCZEV1AoMTYsJGtleSkpOwotKyZzZXRfbGFiZWwoImtleV8xMjhfY29sZCIpOwotKwkmc2h1 ZnBzCQkoInhtbTQiLCJ4bW0wIiwwYjAwMDEwMDAwKTsKLSsJJnB4b3IJCSgieG1tMCIsInhtbTQi KTsKLSsJJnNodWZwcwkJKCJ4bW00IiwieG1tMCIsMGIxMDAwMTEwMCwpOwotKwkmcHhvcgkJKCJ4 bW0wIiwieG1tNCIpOwotKwkmcHNodWZkCQkoInhtbTEiLCJ4bW0xIiwwYjExMTExMTExKTsJIyBj cml0aWNhbCBwYXRoCi0rCSZweG9yCQkoInhtbTAiLCJ4bW0xIik7Ci0rCSZyZXQoKTsKLSsKLSsm c2V0X2xhYmVsKCIxMnJvdW5kcyIsMTYpOwotKwkmbW92cQkJKCJ4bW0yIiwmUVdQKDE2LCJlYXgi KSk7CSMgcmVtYWluaW5nIDEvMyBvZiAqdXNlcktleQotKwkmbW92CQkoJHJvdW5kcywxMSk7Ci0r CSYkbW92ZWtleQkoJlFXUCgtMTYsJGtleSksInhtbTAiKQkJIyByb3VuZCAwCi0rCSZhZXNrZXln ZW5hc3Npc3QoInhtbTEiLCJ4bW0yIiwweDAxKTsJCSMgcm91bmQgMSwyCi0rCSZjYWxsCQkoJmxh YmVsKCJrZXlfMTkyYV9jb2xkIikpOwotKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMiIs MHgwMik7CQkjIHJvdW5kIDIsMwotKwkmY2FsbAkJKCZsYWJlbCgia2V5XzE5MmIiKSk7Ci0rCSZh ZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0yIiwweDA0KTsJCSMgcm91bmQgNCw1Ci0rCSZjYWxs CQkoJmxhYmVsKCJrZXlfMTkyYSIpKTsKLSsJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTIi LDB4MDgpOwkJIyByb3VuZCA1LDYKLSsJJmNhbGwJCSgmbGFiZWwoImtleV8xOTJiIikpOwotKwkm YWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMiIsMHgxMCk7CQkjIHJvdW5kIDcsOAotKwkmY2Fs bAkJKCZsYWJlbCgia2V5XzE5MmEiKSk7Ci0rCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0y IiwweDIwKTsJCSMgcm91bmQgOCw5Ci0rCSZjYWxsCQkoJmxhYmVsKCJrZXlfMTkyYiIpKTsKLSsJ JmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4NDApOwkJIyByb3VuZCAxMCwxMQotKwkm Y2FsbAkJKCZsYWJlbCgia2V5XzE5MmEiKSk7Ci0rCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4 bW0yIiwweDgwKTsJCSMgcm91bmQgMTEsMTIKLSsJJmNhbGwJCSgmbGFiZWwoImtleV8xOTJiIikp OwotKwkmJG1vdmVrZXkJKCZRV1AoMCwka2V5KSwieG1tMCIpOwotKwkmbW92CQkoJkRXUCg0OCwk a2V5KSwkcm91bmRzKTsKLSsJJnhvcgkJKCJlYXgiLCJlYXgiKTsKLSsJJnJldCgpOwotKwotKyZz ZXRfbGFiZWwoImtleV8xOTJhIiwxNik7Ci0rCSYkbW92ZWtleQkoJlFXUCgwLCRrZXkpLCJ4bW0w Iik7Ci0rCSZsZWEJCSgka2V5LCZEV1AoMTYsJGtleSkpOwotKyZzZXRfbGFiZWwoImtleV8xOTJh X2NvbGQiLDE2KTsKLSsJJm1vdmFwcwkJKCJ4bW01IiwieG1tMiIpOwotKyZzZXRfbGFiZWwoImtl eV8xOTJiX3dhcm0iKTsKLSsJJnNodWZwcwkJKCJ4bW00IiwieG1tMCIsMGIwMDAxMDAwMCk7Ci0r CSZtb3ZhcHMJCSgieG1tMyIsInhtbTIiKTsKLSsJJnB4b3IJCSgieG1tMCIsInhtbTQiKTsKLSsJ JnNodWZwcwkJKCJ4bW00IiwieG1tMCIsMGIxMDAwMTEwMCk7Ci0rCSZwc2xsZHEJCSgieG1tMyIs NCk7Ci0rCSZweG9yCQkoInhtbTAiLCJ4bW00Iik7Ci0rCSZwc2h1ZmQJCSgieG1tMSIsInhtbTEi LDBiMDEwMTAxMDEpOwkjIGNyaXRpY2FsIHBhdGgKLSsJJnB4b3IJCSgieG1tMiIsInhtbTMiKTsK LSsJJnB4b3IJCSgieG1tMCIsInhtbTEiKTsKLSsJJnBzaHVmZAkJKCJ4bW0zIiwieG1tMCIsMGIx MTExMTExMSk7Ci0rCSZweG9yCQkoInhtbTIiLCJ4bW0zIik7Ci0rCSZyZXQoKTsKLSsKLSsmc2V0 X2xhYmVsKCJrZXlfMTkyYiIsMTYpOwotKwkmbW92YXBzCQkoInhtbTMiLCJ4bW0wIik7Ci0rCSZz aHVmcHMJCSgieG1tNSIsInhtbTAiLDBiMDEwMDAxMDApOwotKwkmJG1vdmVrZXkJKCZRV1AoMCwk a2V5KSwieG1tNSIpOwotKwkmc2h1ZnBzCQkoInhtbTMiLCJ4bW0yIiwwYjAxMDAxMTEwKTsKLSsJ JiRtb3Zla2V5CSgmUVdQKDE2LCRrZXkpLCJ4bW0zIik7Ci0rCSZsZWEJCSgka2V5LCZEV1AoMzIs JGtleSkpOwotKwkmam1wCQkoJmxhYmVsKCJrZXlfMTkyYl93YXJtIikpOwotKwotKyZzZXRfbGFi ZWwoIjE0cm91bmRzIiwxNik7Ci0rCSZtb3Z1cHMJCSgieG1tMiIsJlFXUCgxNiwiZWF4IikpOwkj IHJlbWFpbmluZyBoYWxmIG9mICp1c2VyS2V5Ci0rCSZtb3YJCSgkcm91bmRzLDEzKTsKLSsJJmxl YQkJKCRrZXksJkRXUCgxNiwka2V5KSk7Ci0rCSYkbW92ZWtleQkoJlFXUCgtMzIsJGtleSksInht bTAiKTsJIyByb3VuZCAwCi0rCSYkbW92ZWtleQkoJlFXUCgtMTYsJGtleSksInhtbTIiKTsJIyBy b3VuZCAxCi0rCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0yIiwweDAxKTsJCSMgcm91bmQg MgotKwkmY2FsbAkJKCZsYWJlbCgia2V5XzI1NmFfY29sZCIpKTsKLSsJJmFlc2tleWdlbmFzc2lz dCgieG1tMSIsInhtbTAiLDB4MDEpOwkJIyByb3VuZCAzCi0rCSZjYWxsCQkoJmxhYmVsKCJrZXlf MjU2YiIpKTsKLSsJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4MDIpOwkJIyByb3Vu ZCA0Ci0rCSZjYWxsCQkoJmxhYmVsKCJrZXlfMjU2YSIpKTsKLSsJJmFlc2tleWdlbmFzc2lzdCgi eG1tMSIsInhtbTAiLDB4MDIpOwkJIyByb3VuZCA1Ci0rCSZjYWxsCQkoJmxhYmVsKCJrZXlfMjU2 YiIpKTsKLSsJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4MDQpOwkJIyByb3VuZCA2 Ci0rCSZjYWxsCQkoJmxhYmVsKCJrZXlfMjU2YSIpKTsKLSsJJmFlc2tleWdlbmFzc2lzdCgieG1t MSIsInhtbTAiLDB4MDQpOwkJIyByb3VuZCA3Ci0rCSZjYWxsCQkoJmxhYmVsKCJrZXlfMjU2YiIp KTsKLSsJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4MDgpOwkJIyByb3VuZCA4Ci0r CSZjYWxsCQkoJmxhYmVsKCJrZXlfMjU2YSIpKTsKLSsJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIs InhtbTAiLDB4MDgpOwkJIyByb3VuZCA5Ci0rCSZjYWxsCQkoJmxhYmVsKCJrZXlfMjU2YiIpKTsK LSsJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4MTApOwkJIyByb3VuZCAxMAotKwkm Y2FsbAkJKCZsYWJlbCgia2V5XzI1NmEiKSk7Ci0rCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4 bW0wIiwweDEwKTsJCSMgcm91bmQgMTEKLSsJJmNhbGwJCSgmbGFiZWwoImtleV8yNTZiIikpOwot KwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMiIsMHgyMCk7CQkjIHJvdW5kIDEyCi0rCSZj YWxsCQkoJmxhYmVsKCJrZXlfMjU2YSIpKTsKLSsJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInht bTAiLDB4MjApOwkJIyByb3VuZCAxMwotKwkmY2FsbAkJKCZsYWJlbCgia2V5XzI1NmIiKSk7Ci0r CSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0yIiwweDQwKTsJCSMgcm91bmQgMTQKLSsJJmNh bGwJCSgmbGFiZWwoImtleV8yNTZhIikpOwotKwkmJG1vdmVrZXkJKCZRV1AoMCwka2V5KSwieG1t MCIpOwotKwkmbW92CQkoJkRXUCgxNiwka2V5KSwkcm91bmRzKTsKLSsJJnhvcgkJKCJlYXgiLCJl YXgiKTsKLSsJJnJldCgpOwotKwotKyZzZXRfbGFiZWwoImtleV8yNTZhIiwxNik7Ci0rCSYkbW92 ZWtleQkoJlFXUCgwLCRrZXkpLCJ4bW0yIik7Ci0rCSZsZWEJCSgka2V5LCZEV1AoMTYsJGtleSkp OwotKyZzZXRfbGFiZWwoImtleV8yNTZhX2NvbGQiKTsKLSsJJnNodWZwcwkJKCJ4bW00IiwieG1t MCIsMGIwMDAxMDAwMCk7Ci0rCSZweG9yCQkoInhtbTAiLCJ4bW00Iik7Ci0rCSZzaHVmcHMJCSgi eG1tNCIsInhtbTAiLDBiMTAwMDExMDApOwotKwkmcHhvcgkJKCJ4bW0wIiwieG1tNCIpOwotKwkm cHNodWZkCQkoInhtbTEiLCJ4bW0xIiwwYjExMTExMTExKTsJIyBjcml0aWNhbCBwYXRoCi0rCSZw eG9yCQkoInhtbTAiLCJ4bW0xIik7Ci0rCSZyZXQoKTsKLSsKLSsmc2V0X2xhYmVsKCJrZXlfMjU2 YiIsMTYpOwotKwkmJG1vdmVrZXkJKCZRV1AoMCwka2V5KSwieG1tMCIpOwotKwkmbGVhCQkoJGtl eSwmRFdQKDE2LCRrZXkpKTsKLSsKLSsJJnNodWZwcwkJKCJ4bW00IiwieG1tMiIsMGIwMDAxMDAw MCk7Ci0rCSZweG9yCQkoInhtbTIiLCJ4bW00Iik7Ci0rCSZzaHVmcHMJCSgieG1tNCIsInhtbTIi LDBiMTAwMDExMDApOwotKwkmcHhvcgkJKCJ4bW0yIiwieG1tNCIpOwotKwkmcHNodWZkCQkoInht bTEiLCJ4bW0xIiwwYjEwMTAxMDEwKTsJIyBjcml0aWNhbCBwYXRoCi0rCSZweG9yCQkoInhtbTIi LCJ4bW0xIik7Ci0rCSZyZXQoKTsKLSsKLSsmc2V0X2xhYmVsKCJiYWRfcG9pbnRlciIsNCk7Ci0r CSZtb3YJKCJlYXgiLC0xKTsKLSsJJnJldAkoKTsKLSsmc2V0X2xhYmVsKCJiYWRfa2V5Yml0cyIs NCk7Ci0rCSZtb3YJKCJlYXgiLC0yKTsKLSsJJnJldAkoKTsKLSsmZnVuY3Rpb25fZW5kX0IoIl9h ZXNuaV9zZXRfZW5jcnlwdF9rZXkiKTsKLSsKLSsjIGludCAkUFJFRklYX3NldF9lbmNyeXB0X2tl eSAoY29uc3QgdW5zaWduZWQgY2hhciAqdXNlcktleSwgaW50IGJpdHMsCi0rIyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEFFU19LRVkgKmtleSkKLSsmZnVuY3Rpb25fYmVnaW5fQigiJHtQ UkVGSVh9X3NldF9lbmNyeXB0X2tleSIpOwotKwkmbW92CSgiZWF4Iiwmd3BhcmFtKDApKTsKLSsJ Jm1vdgkoJHJvdW5kcywmd3BhcmFtKDEpKTsKLSsJJm1vdgkoJGtleSwmd3BhcmFtKDIpKTsKLSsJ JmNhbGwJKCJfYWVzbmlfc2V0X2VuY3J5cHRfa2V5Iik7Ci0rCSZyZXQJKCk7Ci0rJmZ1bmN0aW9u X2VuZF9CKCIke1BSRUZJWH1fc2V0X2VuY3J5cHRfa2V5Iik7Ci0rCi0rIyBpbnQgJFBSRUZJWF9z ZXRfZGVjcnlwdF9rZXkgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnVzZXJLZXksIGludCBiaXRzLAot KyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBRVNfS0VZICprZXkpCi0rJmZ1bmN0aW9u X2JlZ2luX0IoIiR7UFJFRklYfV9zZXRfZGVjcnlwdF9rZXkiKTsKLSsJJm1vdgkoImVheCIsJndw YXJhbSgwKSk7Ci0rCSZtb3YJKCRyb3VuZHMsJndwYXJhbSgxKSk7Ci0rCSZtb3YJKCRrZXksJndw YXJhbSgyKSk7Ci0rCSZjYWxsCSgiX2Flc25pX3NldF9lbmNyeXB0X2tleSIpOwotKwkmbW92CSgk a2V5LCZ3cGFyYW0oMikpOwotKwkmc2hsCSgkcm91bmRzLDQpCSMgcm91bmRzLTEgYWZ0ZXIgX2Fl c25pX3NldF9lbmNyeXB0X2tleQotKwkmdGVzdAkoImVheCIsImVheCIpOwotKwkmam56CSgmbGFi ZWwoImRlY19rZXlfcmV0IikpOwotKwkmbGVhCSgiZWF4IiwmRFdQKDE2LCRrZXksJHJvdW5kcykp OwkjIGVuZCBvZiBrZXkgc2NoZWR1bGUKLSsKLSsJJiRtb3Zla2V5CSgieG1tMCIsJlFXUCgwLCRr ZXkpKTsJIyBqdXN0IHN3YXAKLSsJJiRtb3Zla2V5CSgieG1tMSIsJlFXUCgwLCJlYXgiKSk7Ci0r CSYkbW92ZWtleQkoJlFXUCgwLCJlYXgiKSwieG1tMCIpOwotKwkmJG1vdmVrZXkJKCZRV1AoMCwk a2V5KSwieG1tMSIpOwotKwkmbGVhCQkoJGtleSwmRFdQKDE2LCRrZXkpKTsKLSsJJmxlYQkJKCJl YXgiLCZEV1AoLTE2LCJlYXgiKSk7Ci0rCi0rJnNldF9sYWJlbCgiZGVjX2tleV9pbnZlcnNlIik7 Ci0rCSYkbW92ZWtleQkoInhtbTAiLCZRV1AoMCwka2V5KSk7CSMgc3dhcCBhbmQgaW52ZXJzZQot KwkmJG1vdmVrZXkJKCJ4bW0xIiwmUVdQKDAsImVheCIpKTsKLSsJJmFlc2ltYwkJKCJ4bW0wIiwi eG1tMCIpOwotKwkmYWVzaW1jCQkoInhtbTEiLCJ4bW0xIik7Ci0rCSZsZWEJCSgka2V5LCZEV1Ao MTYsJGtleSkpOwotKwkmbGVhCQkoImVheCIsJkRXUCgtMTYsImVheCIpKTsKLSsJJmNtcAkJKCJl YXgiLCRrZXkpOwotKwkmJG1vdmVrZXkJKCZRV1AoMTYsImVheCIpLCJ4bW0wIik7Ci0rCSYkbW92 ZWtleQkoJlFXUCgtMTYsJGtleSksInhtbTEiKTsKLSsJJmphCQkoJmxhYmVsKCJkZWNfa2V5X2lu dmVyc2UiKSk7Ci0rCi0rCSYkbW92ZWtleQkoInhtbTAiLCZRV1AoMCwka2V5KSk7CSMgaW52ZXJz ZSBtaWRkbGUKLSsJJmFlc2ltYwkJKCJ4bW0wIiwieG1tMCIpOwotKwkmJG1vdmVrZXkJKCZRV1Ao MCwka2V5KSwieG1tMCIpOwotKwotKwkmeG9yCQkoImVheCIsImVheCIpOwkJIyByZXR1cm4gc3Vj Y2VzcwotKyZzZXRfbGFiZWwoImRlY19rZXlfcmV0Iik7Ci0rCSZyZXQJKCk7Ci0rJmZ1bmN0aW9u X2VuZF9CKCIke1BSRUZJWH1fc2V0X2RlY3J5cHRfa2V5Iik7Ci0rJmFzY2l6KCJBRVMgZm9yIElu dGVsIEFFUy1OSSwgQ1JZUFRPR0FNUyBieSA8YXBwcm9cQG9wZW5zc2wub3JnPiIpOwotKwotKyZh c21fZmluaXNoKCk7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9hZXMvYXNt L2Flc25pLXg4Nl82NC5wbC5hZXNuaSBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9hZXMvYXNt L2Flc25pLXg4Nl82NC5wbAotLS0tIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2Flcy9hc20v YWVzbmkteDg2XzY0LnBsLmFlc25pCTIwMTAtMDEtMTIgMjI6MTg6MDYuMDAwMDAwMDAwICswMTAw Ci0rKysgb3BlbnNzbC0xLjAuMC1iZXRhNC9jcnlwdG8vYWVzL2FzbS9hZXNuaS14ODZfNjQucGwJ MjAxMC0wMS0xMiAyMjoxODowNi4wMDAwMDAwMDAgKzAxMDAKLUBAIC0wLDAgKzEsOTkxIEBACi0r IyEvdXNyL2Jpbi9lbnYgcGVybAotKyMKLSsjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rIyBXcml0dGVuIGJ5IEFu ZHkgUG9seWFrb3YgPGFwcHJvQGZ5LmNoYWxtZXJzLnNlPiBmb3IgdGhlIE9wZW5TU0wKLSsjIHBy b2plY3QuIFRoZSBtb2R1bGUgaXMsIGhvd2V2ZXIsIGR1YWwgbGljZW5zZWQgdW5kZXIgT3BlblNT TCBhbmQKLSsjIENSWVBUT0dBTVMgbGljZW5zZXMgZGVwZW5kaW5nIG9uIHdoZXJlIHlvdSBvYnRh aW4gaXQuIEZvciBmdXJ0aGVyCi0rIyBkZXRhaWxzIHNlZSBodHRwOi8vd3d3Lm9wZW5zc2wub3Jn L35hcHByby9jcnlwdG9nYW1zLy4KLSsjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rIwotKyMgVGhpcyBtb2R1bGUg aW1wbGVtZW50cyBzdXBwb3J0IGZvciBJbnRlbCBBRVMtTkkgZXh0ZW5zaW9uLiBJbgotKyMgT3Bl blNTTCBjb250ZXh0IGl0J3MgdXNlZCB3aXRoIEludGVsIGVuZ2luZSwgYnV0IGNhbiBhbHNvIGJl IHVzZWQgYXMKLSsjIGRyb3AtaW4gcmVwbGFjZW1lbnQgZm9yIGNyeXB0by9hZXMvYXNtL2Flcy14 ODZfNjQucGwgW3NlZSBiZWxvdyBmb3IKLSsjIGRldGFpbHNdLgotKwotKyRQUkVGSVg9ImFlc25p IjsJIyBpZiAkUFJFRklYIGlzIHNldCB0byAiQUVTIiwgdGhlIHNjcmlwdAotKwkJCSMgZ2VuZXJh dGVzIGRyb3AtaW4gcmVwbGFjZW1lbnQgZm9yCi0rCQkJIyBjcnlwdG8vYWVzL2FzbS9hZXMteDg2 XzY0LnBsOi0pCi0rCi0rJGZsYXZvdXIgPSBzaGlmdDsKLSskb3V0cHV0ICA9IHNoaWZ0OwotK2lm ICgkZmxhdm91ciA9fiAvXC4vKSB7ICRvdXRwdXQgPSAkZmxhdm91cjsgdW5kZWYgJGZsYXZvdXI7 IH0KLSsKLSskd2luNjQ9MDsgJHdpbjY0PTEgaWYgKCRmbGF2b3VyID1+IC9bbm1dYXNtfG1pbmd3 NjQvIHx8ICRvdXRwdXQgPX4gL1wuYXNtJC8pOwotKwotKyQwID1+IG0vKC4qW1wvXFxdKVteXC9c XF0rJC87ICRkaXI9JDE7Ci0rKCAkeGxhdGU9IiR7ZGlyfXg4Nl82NC14bGF0ZS5wbCIgYW5kIC1m ICR4bGF0ZSApIG9yCi0rKCAkeGxhdGU9IiR7ZGlyfS4uLy4uL3Blcmxhc20veDg2XzY0LXhsYXRl LnBsIiBhbmQgLWYgJHhsYXRlKSBvcgotK2RpZSAiY2FuJ3QgbG9jYXRlIHg4Nl82NC14bGF0ZS5w bCI7Ci0rCi0rb3BlbiBTVERPVVQsInwgJF5YICR4bGF0ZSAkZmxhdm91ciAkb3V0cHV0IjsKLSsK LSskbW92a2V5ID0gJFBSRUZJWCBlcSAiYWVzbmkiID8gIm1vdmFwcyIgOiAibW92dXBzIjsKLStA XzRhcmdzPSR3aW42ND8JKCIlcmN4IiwiJXJkeCIsIiVyOCIsICIlcjkiKSA6CSMgV2luNjQgb3Jk ZXIKLSsJCSgiJXJkaSIsIiVyc2kiLCIlcmR4IiwiJXJjeCIpOwkjIFVuaXggb3JkZXIKLSsKLSsk Y29kZT0iLnRleHRcbiI7Ci0rCi0rJHJvdW5kcz0iJWVheCI7CSMgaW5wdXQgdG8gYW5kIGNoYW5n ZWQgYnkgYWVzbmlfW2VufGRlXWNyeXB0TiAhISEKLSsjIHRoaXMgaXMgbmF0dXJhbCBVbml4IGFy Z3VtZW50IG9yZGVyIGZvciBwdWJsaWMgJFBSRUZJWF9bZWNifGNiY11fZW5jcnlwdCAuLi4KLSsk aW5wPSIlcmRpIjsKLSskb3V0PSIlcnNpIjsKLSskbGVuPSIlcmR4IjsKLSska2V5PSIlcmN4IjsJ IyBpbnB1dCB0byBhbmQgY2hhbmdlZCBieSBhZXNuaV9bZW58ZGVdY3J5cHROICEhIQotKyRpdnA9 IiVyOCI7CSMgY2JjCi0rCi0rJHJuZHNfPSIlcjEwZCI7CSMgYmFja3VwIGNvcHkgZm9yICRyb3Vu ZHMKLSska2V5Xz0iJXIxMSI7CSMgYmFja3VwIGNvcHkgZm9yICRrZXkKLSsKLSsjICV4bW0gcmVn aXN0ZXIgbGF5b3V0Ci0rJGlub3V0MD0iJXhtbTAiOwkkaW5vdXQxPSIleG1tMSI7Ci0rJGlub3V0 Mj0iJXhtbTIiOwkkaW5vdXQzPSIleG1tMyI7Ci0rJHJuZGtleTA9IiV4bW00IjsJJHJuZGtleTE9 IiV4bW01IjsKLSsKLSskaXY9IiV4bW02IjsJCSRpbjA9IiV4bW03IjsJIyB1c2VkIGluIENCQyBk ZWNyeXB0Ci0rJGluMT0iJXhtbTgiOwkJJGluMj0iJXhtbTkiOwotKwwKLSsjIElubGluZSB2ZXJz aW9uIG9mIGludGVybmFsIGFlc25pX1tlbnxkZV1jcnlwdDEuCi0rIwotKyMgV2h5IGZvbGRlZCBs b29wPyBCZWNhdXNlIGFlc1tlbmN8ZGVjXSBpcyBzbG93IGVub3VnaCB0byBhY2NvbW1vZGF0ZQot KyMgY3ljbGVzIHdoaWNoIHRha2UgY2FyZSBvZiBsb29wIHZhcmlhYmxlcy4uLgotK3sgbXkgJHNu OwotK3N1YiBhZXNuaV9nZW5lcmF0ZTEgewotK215ICgkcCwka2V5LCRyb3VuZHMpPUBfOwotKysr JHNuOwotKyRjb2RlLj08PF9fXzsKLSsJJG1vdmtleQkoJGtleSksJHJuZGtleTAKLSsJJG1vdmtl eQkxNigka2V5KSwkcm5ka2V5MQotKwlsZWEJMzIoJGtleSksJGtleQotKwlweG9yCSRybmRrZXkw LCRpbm91dDAKLSsuTG9vcF8ke3B9MV8kc246Ci0rCWFlcyR7cH0JJHJuZGtleTEsJGlub3V0MAot KwlkZWMJJHJvdW5kcwotKwkkbW92a2V5CSgka2V5KSwkcm5ka2V5MQotKwlsZWEJMTYoJGtleSks JGtleQotKwlqbnoJLkxvb3BfJHtwfTFfJHNuCSMgbG9vcCBib2R5IGlzIDE2IGJ5dGVzCi0rCWFl cyR7cH1sYXN0CSRybmRrZXkxLCRpbm91dDAKLStfX18KLSt9fQotKyMgdm9pZCAkUFJFRklYX1tl bnxkZV1jcnlwdCAoY29uc3Qgdm9pZCAqaW5wLHZvaWQgKm91dCxjb25zdCBBRVNfS0VZICprZXkp OwotKyMKLSt7IG15ICgkaW5wLCRvdXQsJGtleSkgPSBAXzRhcmdzOwotKwotKyRjb2RlLj08PF9f XzsKLSsuZ2xvYmwJJHtQUkVGSVh9X2VuY3J5cHQKLSsudHlwZQkke1BSRUZJWH1fZW5jcnlwdCxc QGFiaS1vbW5pcG90ZW50Ci0rLmFsaWduCTE2Ci0rJHtQUkVGSVh9X2VuY3J5cHQ6Ci0rCW1vdnVw cwkoJGlucCksJGlub3V0MAkJIyBsb2FkIGlucHV0Ci0rCW1vdgkyNDAoJGtleSksJHJvdW5kcwkj IHB1bGwgJHJvdW5kcwotK19fXwotKwkmYWVzbmlfZ2VuZXJhdGUxKCJlbmMiLCRrZXksJHJvdW5k cyk7Ci0rJGNvZGUuPTw8X19fOwotKwltb3Z1cHMJJGlub3V0MCwoJG91dCkJCSMgb3V0cHV0Ci0r CXJldAotKy5zaXplCSR7UFJFRklYfV9lbmNyeXB0LC4tJHtQUkVGSVh9X2VuY3J5cHQKLSsKLSsu Z2xvYmwJJHtQUkVGSVh9X2RlY3J5cHQKLSsudHlwZQkke1BSRUZJWH1fZGVjcnlwdCxcQGFiaS1v bW5pcG90ZW50Ci0rLmFsaWduCTE2Ci0rJHtQUkVGSVh9X2RlY3J5cHQ6Ci0rCW1vdnVwcwkoJGlu cCksJGlub3V0MAkJIyBsb2FkIGlucHV0Ci0rCW1vdgkyNDAoJGtleSksJHJvdW5kcwkjIHB1bGwg JHJvdW5kcwotK19fXwotKwkmYWVzbmlfZ2VuZXJhdGUxKCJkZWMiLCRrZXksJHJvdW5kcyk7Ci0r JGNvZGUuPTw8X19fOwotKwltb3Z1cHMJJGlub3V0MCwoJG91dCkJCSMgb3V0cHV0Ci0rCXJldAot Ky5zaXplCSR7UFJFRklYfV9kZWNyeXB0LCAuLSR7UFJFRklYfV9kZWNyeXB0Ci0rX19fCi0rfQot KwwKLSsjIF9hZXNuaV9bZW58ZGVdY3J5cHRbMzRdIGFyZSBwcml2YXRlIGludGVyZmFjZXMsIE4g ZGVub3RlcyBpbnRlcmxlYXZlCi0rIyBmYWN0b3IuIFdoeSAzeCBzdWJyb3V0aW5lIGlzIHVzZWQg aW4gbG9vcHM/IEV2ZW4gdGhvdWdoIGFlc1tlbmN8ZGVjXQotKyMgbGF0ZW5jeSBpcyA2LCBpdCB0 dXJuZWQgb3V0IHRoYXQgaXQgY2FuIGJlIHNjaGVkdWxlZCBvbmx5IGV2ZXJ5Ci0rIyAqc2Vjb25k KiBjeWNsZS4gVGh1cyAzeCBpbnRlcmxlYXZlIGlzIHRoZSBvbmUgcHJvdmlkaW5nIG9wdGltYWwK LSsjIHV0aWxpemF0aW9uLCBpLmUuIHdoZW4gc3Vicm91dGluZSdzIHRocm91Z2hwdXQgaXMgdmly dHVhbGx5IHNhbWUgYXMKLSsjIG9mIG5vbi1pbnRlcmxlYXZlZCBzdWJyb3V0aW5lIFtmb3IgbnVt YmVyIG9mIGlucHV0IGJsb2NrcyB1cCB0byAzXS4KLSsjIFRoaXMgaXMgd2h5IGl0IG1ha2VzIG5v IHNlbnNlIHRvIGltcGxlbWVudCAyeCBzdWJyb3V0aW5lLiBBcyBzb29uCi0rIyBhcy9pZiBJbnRl bCBpbXByb3ZlcyB0aHJvdWdocHV0IGJ5IG1ha2luZyBpdCBwb3NzaWJsZSB0byBzY2hlZHVsZQot KyMgdGhlIGluc3RydWN0aW9ucyBpbiBxdWVzdGlvbiAqZXZlcnkqIGN5Y2xlcyBJIHdvdWxkIGhh dmUgdG8KLSsjIGltcGxlbWVudCA2eCBpbnRlcmxlYXZlIGFuZCB1c2UgaXQgaW4gbG9vcC4uLgot K3N1YiBhZXNuaV9nZW5lcmF0ZTMgewotK215ICRkaXI9c2hpZnQ7Ci0rIyBBcyBhbHJlYWR5IG1l bnRpb25lZCBpdCB0YWtlcyBpbiAka2V5IGFuZCAkcm91bmRzLCB3aGljaCBhcmUgKm5vdCoKLSsj IHByZXNlcnZlZC4gJGlub3V0WzAtMl0gaXMgY2lwaGVyL2NsZWFyIHRleHQuLi4KLSskY29kZS49 PDxfX187Ci0rLnR5cGUJX2Flc25pXyR7ZGlyfXJ5cHQzLFxAYWJpLW9tbmlwb3RlbnQKLSsuYWxp Z24JMTYKLStfYWVzbmlfJHtkaXJ9cnlwdDM6Ci0rCSRtb3ZrZXkJKCRrZXkpLCRybmRrZXkwCi0r CXNocglcJDEsJHJvdW5kcwotKwkkbW92a2V5CTE2KCRrZXkpLCRybmRrZXkxCi0rCWxlYQkzMigk a2V5KSwka2V5Ci0rCXB4b3IJJHJuZGtleTAsJGlub3V0MAotKwlweG9yCSRybmRrZXkwLCRpbm91 dDEKLSsJcHhvcgkkcm5ka2V5MCwkaW5vdXQyCi0rCi0rLkwke2Rpcn1fbG9vcDM6Ci0rCWFlcyR7 ZGlyfQkkcm5ka2V5MSwkaW5vdXQwCi0rCSRtb3ZrZXkJCSgka2V5KSwkcm5ka2V5MAotKwlhZXMk e2Rpcn0JJHJuZGtleTEsJGlub3V0MQotKwlkZWMJCSRyb3VuZHMKLSsJYWVzJHtkaXJ9CSRybmRr ZXkxLCRpbm91dDIKLSsJYWVzJHtkaXJ9CSRybmRrZXkwLCRpbm91dDAKLSsJJG1vdmtleQkJMTYo JGtleSksJHJuZGtleTEKLSsJYWVzJHtkaXJ9CSRybmRrZXkwLCRpbm91dDEKLSsJbGVhCQkzMigk a2V5KSwka2V5Ci0rCWFlcyR7ZGlyfQkkcm5ka2V5MCwkaW5vdXQyCi0rCWpuegkJLkwke2Rpcn1f bG9vcDMKLSsKLSsJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDAKLSsJJG1vdmtleQkJKCRrZXkp LCRybmRrZXkwCi0rCWFlcyR7ZGlyfQkkcm5ka2V5MSwkaW5vdXQxCi0rCWFlcyR7ZGlyfQkkcm5k a2V5MSwkaW5vdXQyCi0rCWFlcyR7ZGlyfWxhc3QJJHJuZGtleTAsJGlub3V0MAotKwlhZXMke2Rp cn1sYXN0CSRybmRrZXkwLCRpbm91dDEKLSsJYWVzJHtkaXJ9bGFzdAkkcm5ka2V5MCwkaW5vdXQy Ci0rCXJldAotKy5zaXplCV9hZXNuaV8ke2Rpcn1yeXB0MywuLV9hZXNuaV8ke2Rpcn1yeXB0Mwot K19fXwotK30KLSsjIDR4IGludGVybGVhdmUgaXMgaW1wbGVtZW50ZWQgdG8gaW1wcm92ZSBzbWFs bCBibG9jayBwZXJmb3JtYW5jZSwKLSsjIG1vc3Qgbm90YWJseSBbYW5kIG5hdHVyYWxseV0gNCBi bG9jayBieSB+MzAlLiBPbmUgY2FuIGFyZ3VlIHRoYXQgb25lCi0rIyBzaG91bGQgaGF2ZSBpbXBs ZW1lbnRlZCA1eCBhcyB3ZWxsLCBidXQgaW1wcm92ZW1lbnQgd291bGQgYmUgPDIwJSwKLSsjIHNv IGl0J3Mgbm90IHdvcnRoIGl0Li4uCi0rc3ViIGFlc25pX2dlbmVyYXRlNCB7Ci0rbXkgJGRpcj1z aGlmdDsKLSsjIEFzIGFscmVhZHkgbWVudGlvbmVkIGl0IHRha2VzIGluICRrZXkgYW5kICRyb3Vu ZHMsIHdoaWNoIGFyZSAqbm90KgotKyMgcHJlc2VydmVkLiAkaW5vdXRbMC0zXSBpcyBjaXBoZXIv Y2xlYXIgdGV4dC4uLgotKyRjb2RlLj08PF9fXzsKLSsudHlwZQlfYWVzbmlfJHtkaXJ9cnlwdDQs XEBhYmktb21uaXBvdGVudAotKy5hbGlnbgkxNgotK19hZXNuaV8ke2Rpcn1yeXB0NDoKLSsJJG1v dmtleQkoJGtleSksJHJuZGtleTAKLSsJc2hyCVwkMSwkcm91bmRzCi0rCSRtb3ZrZXkJMTYoJGtl eSksJHJuZGtleTEKLSsJbGVhCTMyKCRrZXkpLCRrZXkKLSsJcHhvcgkkcm5ka2V5MCwkaW5vdXQw Ci0rCXB4b3IJJHJuZGtleTAsJGlub3V0MQotKwlweG9yCSRybmRrZXkwLCRpbm91dDIKLSsJcHhv cgkkcm5ka2V5MCwkaW5vdXQzCi0rCi0rLkwke2Rpcn1fbG9vcDQ6Ci0rCWFlcyR7ZGlyfQkkcm5k a2V5MSwkaW5vdXQwCi0rCSRtb3ZrZXkJCSgka2V5KSwkcm5ka2V5MAotKwlhZXMke2Rpcn0JJHJu ZGtleTEsJGlub3V0MQotKwlkZWMJCSRyb3VuZHMKLSsJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91 dDIKLSsJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDMKLSsJYWVzJHtkaXJ9CSRybmRrZXkwLCRp bm91dDAKLSsJJG1vdmtleQkJMTYoJGtleSksJHJuZGtleTEKLSsJYWVzJHtkaXJ9CSRybmRrZXkw LCRpbm91dDEKLSsJbGVhCQkzMigka2V5KSwka2V5Ci0rCWFlcyR7ZGlyfQkkcm5ka2V5MCwkaW5v dXQyCi0rCWFlcyR7ZGlyfQkkcm5ka2V5MCwkaW5vdXQzCi0rCWpuegkJLkwke2Rpcn1fbG9vcDQK LSsKLSsJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDAKLSsJJG1vdmtleQkJKCRrZXkpLCRybmRr ZXkwCi0rCWFlcyR7ZGlyfQkkcm5ka2V5MSwkaW5vdXQxCi0rCWFlcyR7ZGlyfQkkcm5ka2V5MSwk aW5vdXQyCi0rCWFlcyR7ZGlyfQkkcm5ka2V5MSwkaW5vdXQzCi0rCWFlcyR7ZGlyfWxhc3QJJHJu ZGtleTAsJGlub3V0MAotKwlhZXMke2Rpcn1sYXN0CSRybmRrZXkwLCRpbm91dDEKLSsJYWVzJHtk aXJ9bGFzdAkkcm5ka2V5MCwkaW5vdXQyCi0rCWFlcyR7ZGlyfWxhc3QJJHJuZGtleTAsJGlub3V0 MwotKwlyZXQKLSsuc2l6ZQlfYWVzbmlfJHtkaXJ9cnlwdDQsLi1fYWVzbmlfJHtkaXJ9cnlwdDQK LStfX18KLSt9Ci0rJmFlc25pX2dlbmVyYXRlMygiZW5jIikgaWYgKCRQUkVGSVggZXEgImFlc25p Iik7Ci0rJmFlc25pX2dlbmVyYXRlMygiZGVjIik7Ci0rJmFlc25pX2dlbmVyYXRlNCgiZW5jIikg aWYgKCRQUkVGSVggZXEgImFlc25pIik7Ci0rJmFlc25pX2dlbmVyYXRlNCgiZGVjIik7Ci0rDAot K2lmICgkUFJFRklYIGVxICJhZXNuaSIpIHsKLSsjIHZvaWQgYWVzbmlfZWNiX2VuY3J5cHQgKGNv bnN0IHZvaWQgKmluLCB2b2lkICpvdXQsCi0rIwkJCSAgc2l6ZV90IGxlbmd0aCwgY29uc3QgQUVT X0tFWSAqa2V5LAotKyMJCQkgIGludCBlbmMpOwotKyRjb2RlLj08PF9fXzsKLSsuZ2xvYmwJYWVz bmlfZWNiX2VuY3J5cHQKLSsudHlwZQlhZXNuaV9lY2JfZW5jcnlwdCxcQGZ1bmN0aW9uLDUKLSsu YWxpZ24JMTYKLSthZXNuaV9lY2JfZW5jcnlwdDoKLSsJY21wCVwkMTYsJGxlbgkJIyBjaGVjayBs ZW5ndGgKLSsJamIJLkxlY2JfcmV0Ci0rCi0rCW1vdgkyNDAoJGtleSksJHJvdW5kcwkjIHB1bGwg JHJvdW5kcwotKwlhbmQJXCQtMTYsJGxlbgotKwltb3YJJGtleSwka2V5XwkJIyBiYWNrdXAgJGtl eQotKwl0ZXN0CSVyOGQsJXI4ZAkJIyA1dGggYXJndW1lbnQKLSsJbW92CSRyb3VuZHMsJHJuZHNf CQkjIGJhY2t1cCAkcm91bmRzCi0rCWp6CS5MZWNiX2RlY3J5cHQKLSsjLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tIEVDQiBFTkNSWVBUIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSMK LSsJc3ViCVwkMHg0MCwkbGVuCi0rCWpiZQkuTGVjYl9lbmNfdGFpbAotKwlqbXAJLkxlY2JfZW5j X2xvb3AzCi0rLmFsaWduIDE2Ci0rLkxlY2JfZW5jX2xvb3AzOgotKwltb3Z1cHMJKCRpbnApLCRp bm91dDAKLSsJbW92dXBzCTB4MTAoJGlucCksJGlub3V0MQotKwltb3Z1cHMJMHgyMCgkaW5wKSwk aW5vdXQyCi0rCWNhbGwJX2Flc25pX2VuY3J5cHQzCi0rCXN1YglcJDB4MzAsJGxlbgotKwlsZWEJ MHgzMCgkaW5wKSwkaW5wCi0rCWxlYQkweDMwKCRvdXQpLCRvdXQKLSsJbW92dXBzCSRpbm91dDAs LTB4MzAoJG91dCkKLSsJbW92CSRybmRzXywkcm91bmRzCQkjIHJlc3RvcmUgJHJvdW5kcwotKwlt b3Z1cHMJJGlub3V0MSwtMHgyMCgkb3V0KQotKwltb3YJJGtleV8sJGtleQkJIyByZXN0b3JlICRr ZXkKLSsJbW92dXBzCSRpbm91dDIsLTB4MTAoJG91dCkKLSsJamEJLkxlY2JfZW5jX2xvb3AzCi0r Ci0rLkxlY2JfZW5jX3RhaWw6Ci0rCWFkZAlcJDB4NDAsJGxlbgotKwlqegkuTGVjYl9yZXQKLSsK LSsJY21wCVwkMHgxMCwkbGVuCi0rCW1vdnVwcwkoJGlucCksJGlub3V0MAotKwlqZQkuTGVjYl9l bmNfb25lCi0rCWNtcAlcJDB4MjAsJGxlbgotKwltb3Z1cHMJMHgxMCgkaW5wKSwkaW5vdXQxCi0r CWplCS5MZWNiX2VuY190d28KLSsJY21wCVwkMHgzMCwkbGVuCi0rCW1vdnVwcwkweDIwKCRpbnAp LCRpbm91dDIKLSsJamUJLkxlY2JfZW5jX3RocmVlCi0rCW1vdnVwcwkweDMwKCRpbnApLCRpbm91 dDMKLSsJY2FsbAlfYWVzbmlfZW5jcnlwdDQKLSsJbW92dXBzCSRpbm91dDAsKCRvdXQpCi0rCW1v dnVwcwkkaW5vdXQxLDB4MTAoJG91dCkKLSsJbW92dXBzCSRpbm91dDIsMHgyMCgkb3V0KQotKwlt b3Z1cHMJJGlub3V0MywweDMwKCRvdXQpCi0rCWptcAkuTGVjYl9yZXQKLSsuYWxpZ24JMTYKLSsu TGVjYl9lbmNfb25lOgotK19fXwotKwkmYWVzbmlfZ2VuZXJhdGUxKCJlbmMiLCRrZXksJHJvdW5k cyk7Ci0rJGNvZGUuPTw8X19fOwotKwltb3Z1cHMJJGlub3V0MCwoJG91dCkKLSsJam1wCS5MZWNi X3JldAotKy5hbGlnbgkxNgotKy5MZWNiX2VuY190d286Ci0rCWNhbGwJX2Flc25pX2VuY3J5cHQz Ci0rCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQotKwltb3Z1cHMJJGlub3V0MSwweDEwKCRvdXQpCi0r CWptcAkuTGVjYl9yZXQKLSsuYWxpZ24JMTYKLSsuTGVjYl9lbmNfdGhyZWU6Ci0rCWNhbGwJX2Fl c25pX2VuY3J5cHQzCi0rCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQotKwltb3Z1cHMJJGlub3V0MSww eDEwKCRvdXQpCi0rCW1vdnVwcwkkaW5vdXQyLDB4MjAoJG91dCkKLSsJam1wCS5MZWNiX3JldAot KwwjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEVDQiBERUNSWVBUIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSMKLSsuYWxpZ24JMTYKLSsuTGVjYl9kZWNyeXB0OgotKwlzdWIJXCQw eDQwLCRsZW4KLSsJamJlCS5MZWNiX2RlY190YWlsCi0rCWptcAkuTGVjYl9kZWNfbG9vcDMKLSsu YWxpZ24gMTYKLSsuTGVjYl9kZWNfbG9vcDM6Ci0rCW1vdnVwcwkoJGlucCksJGlub3V0MAotKwlt b3Z1cHMJMHgxMCgkaW5wKSwkaW5vdXQxCi0rCW1vdnVwcwkweDIwKCRpbnApLCRpbm91dDIKLSsJ Y2FsbAlfYWVzbmlfZGVjcnlwdDMKLSsJc3ViCVwkMHgzMCwkbGVuCi0rCWxlYQkweDMwKCRpbnAp LCRpbnAKLSsJbGVhCTB4MzAoJG91dCksJG91dAotKwltb3Z1cHMJJGlub3V0MCwtMHgzMCgkb3V0 KQotKwltb3YJJHJuZHNfLCRyb3VuZHMJCSMgcmVzdG9yZSAkcm91bmRzCi0rCW1vdnVwcwkkaW5v dXQxLC0weDIwKCRvdXQpCi0rCW1vdgkka2V5Xywka2V5CQkjIHJlc3RvcmUgJGtleQotKwltb3Z1 cHMJJGlub3V0MiwtMHgxMCgkb3V0KQotKwlqYQkuTGVjYl9kZWNfbG9vcDMKLSsKLSsuTGVjYl9k ZWNfdGFpbDoKLSsJYWRkCVwkMHg0MCwkbGVuCi0rCWp6CS5MZWNiX3JldAotKwotKwljbXAJXCQw eDEwLCRsZW4KLSsJbW92dXBzCSgkaW5wKSwkaW5vdXQwCi0rCWplCS5MZWNiX2RlY19vbmUKLSsJ Y21wCVwkMHgyMCwkbGVuCi0rCW1vdnVwcwkweDEwKCRpbnApLCRpbm91dDEKLSsJamUJLkxlY2Jf ZGVjX3R3bwotKwljbXAJXCQweDMwLCRsZW4KLSsJbW92dXBzCTB4MjAoJGlucCksJGlub3V0Mgot KwlqZQkuTGVjYl9kZWNfdGhyZWUKLSsJbW92dXBzCTB4MzAoJGlucCksJGlub3V0MwotKwljYWxs CV9hZXNuaV9kZWNyeXB0NAotKwltb3Z1cHMJJGlub3V0MCwoJG91dCkKLSsJbW92dXBzCSRpbm91 dDEsMHgxMCgkb3V0KQotKwltb3Z1cHMJJGlub3V0MiwweDIwKCRvdXQpCi0rCW1vdnVwcwkkaW5v dXQzLDB4MzAoJG91dCkKLSsJam1wCS5MZWNiX3JldAotKy5hbGlnbgkxNgotKy5MZWNiX2RlY19v bmU6Ci0rX19fCi0rCSZhZXNuaV9nZW5lcmF0ZTEoImRlYyIsJGtleSwkcm91bmRzKTsKLSskY29k ZS49PDxfX187Ci0rCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQotKwlqbXAJLkxlY2JfcmV0Ci0rLmFs aWduCTE2Ci0rLkxlY2JfZGVjX3R3bzoKLSsJY2FsbAlfYWVzbmlfZGVjcnlwdDMKLSsJbW92dXBz CSRpbm91dDAsKCRvdXQpCi0rCW1vdnVwcwkkaW5vdXQxLDB4MTAoJG91dCkKLSsJam1wCS5MZWNi X3JldAotKy5hbGlnbgkxNgotKy5MZWNiX2RlY190aHJlZToKLSsJY2FsbAlfYWVzbmlfZGVjcnlw dDMKLSsJbW92dXBzCSRpbm91dDAsKCRvdXQpCi0rCW1vdnVwcwkkaW5vdXQxLDB4MTAoJG91dCkK LSsJbW92dXBzCSRpbm91dDIsMHgyMCgkb3V0KQotKwotKy5MZWNiX3JldDoKLSsJcmV0Ci0rLnNp emUJYWVzbmlfZWNiX2VuY3J5cHQsLi1hZXNuaV9lY2JfZW5jcnlwdAotK19fXwotK30KLSsMCi0r IyB2b2lkICRQUkVGSVhfY2JjX2VuY3J5cHQgKGNvbnN0IHZvaWQgKmlucCwgdm9pZCAqb3V0LAot KyMJCQkgICAgc2l6ZV90IGxlbmd0aCwgY29uc3QgQUVTX0tFWSAqa2V5LAotKyMJCQkgICAgdW5z aWduZWQgY2hhciAqaXZwLGNvbnN0IGludCBlbmMpOwotKyRyZXNlcnZlZCA9ICR3aW42ND8weDQw Oi0weDE4OwkjIHVzZWQgaW4gZGVjcnlwdAotKyRjb2RlLj08PF9fXzsKLSsuZ2xvYmwJJHtQUkVG SVh9X2NiY19lbmNyeXB0Ci0rLnR5cGUJJHtQUkVGSVh9X2NiY19lbmNyeXB0LFxAZnVuY3Rpb24s NgotKy5hbGlnbgkxNgotKyR7UFJFRklYfV9jYmNfZW5jcnlwdDoKLSsJdGVzdAkkbGVuLCRsZW4J CSMgY2hlY2sgbGVuZ3RoCi0rCWp6CS5MY2JjX3JldAotKwotKwltb3YJMjQwKCRrZXkpLCRybmRz XwkjIHB1bGwgJHJvdW5kcwotKwltb3YJJGtleSwka2V5XwkJIyBiYWNrdXAgJGtleQotKwl0ZXN0 CSVyOWQsJXI5ZAkJIyA2dGggYXJndW1lbnQKLSsJanoJLkxjYmNfZGVjcnlwdAotKyMtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0gQ0JDIEVOQ1JZUFQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tIwotKwltb3Z1cHMJKCRpdnApLCRpbm91dDAJCSMgbG9hZCBpdiBhcyBpbml0aWFsIHN0 YXRlCi0rCWNtcAlcJDE2LCRsZW4KLSsJbW92CSRybmRzXywkcm91bmRzCi0rCWpiCS5MY2JjX2Vu Y190YWlsCi0rCXN1YglcJDE2LCRsZW4KLSsJam1wCS5MY2JjX2VuY19sb29wCi0rLmFsaWduIDE2 Ci0rLkxjYmNfZW5jX2xvb3A6Ci0rCW1vdnVwcwkoJGlucCksJGlub3V0MQkJIyBsb2FkIGlucHV0 Ci0rCWxlYQkxNigkaW5wKSwkaW5wCi0rCXB4b3IJJGlub3V0MSwkaW5vdXQwCi0rX19fCi0rCSZh ZXNuaV9nZW5lcmF0ZTEoImVuYyIsJGtleSwkcm91bmRzKTsKLSskY29kZS49PDxfX187Ci0rCXN1 YglcJDE2LCRsZW4KLSsJbGVhCTE2KCRvdXQpLCRvdXQKLSsJbW92CSRybmRzXywkcm91bmRzCQkj IHJlc3RvcmUgJHJvdW5kcwotKwltb3YJJGtleV8sJGtleQkJIyByZXN0b3JlICRrZXkKLSsJbW92 dXBzCSRpbm91dDAsLTE2KCRvdXQpCSMgc3RvcmUgb3V0cHV0Ci0rCWpuYwkuTGNiY19lbmNfbG9v cAotKwlhZGQJXCQxNiwkbGVuCi0rCWpuegkuTGNiY19lbmNfdGFpbAotKwltb3Z1cHMJJGlub3V0 MCwoJGl2cCkKLSsJam1wCS5MY2JjX3JldAotKwotKy5MY2JjX2VuY190YWlsOgotKwltb3YJJGxl biwlcmN4CSMgemFwcyAka2V5Ci0rCXhjaGcJJGlucCwkb3V0CSMgJGlucCBpcyAlcnNpIGFuZCAk b3V0IGlzICVyZGkgbm93Ci0rCS5sb25nCTB4OTA2NkE0RjMJIyByZXAgbW92c2IKLSsJbW92CVwk MTYsJWVjeAkjIHplcm8gdGFpbAotKwlzdWIJJGxlbiwlcmN4Ci0rCXhvcgklZWF4LCVlYXgKLSsJ LmxvbmcJMHg5MDY2QUFGMwkjIHJlcCBzdG9zYgotKwlsZWEJLTE2KCVyZGkpLCVyZGkJIyByZXdp bmQgJG91dCBieSAxIGJsb2NrCi0rCW1vdgkkcm5kc18sJHJvdW5kcwkjIHJlc3RvcmUgJHJvdW5k cwotKwltb3YJJXJkaSwlcnNpCSMgJGlucCBhbmQgJG91dCBhcmUgdGhlIHNhbWUKLSsJbW92CSRr ZXlfLCRrZXkJIyByZXN0b3JlICRrZXkKLSsJeG9yCSRsZW4sJGxlbgkjIGxlbj0xNgotKwlqbXAJ LkxjYmNfZW5jX2xvb3AJIyBvbmUgbW9yZSBzcGluCi0rDCMtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0gQ0JDIERFQ1JZUFQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIwotKy5hbGln bgkxNgotKy5MY2JjX2RlY3J5cHQ6Ci0rX19fCi0rJGNvZGUuPTw8X19fIGlmICgkd2luNjQpOwot KwlsZWEJLTB4NTgoJXJzcCksJXJzcAotKwltb3ZhcHMJJXhtbTYsKCVyc3ApCi0rCW1vdmFwcwkl eG1tNywweDEwKCVyc3ApCi0rCW1vdmFwcwkleG1tOCwweDIwKCVyc3ApCi0rCW1vdmFwcwkleG1t OSwweDMwKCVyc3ApCi0rLkxjYmNfZGVjcnlwdF9ib2R5OgotK19fXwotKyRjb2RlLj08PF9fXzsK LSsJbW92dXBzCSgkaXZwKSwkaXYKLSsJc3ViCVwkMHg0MCwkbGVuCi0rCW1vdgkkcm5kc18sJHJv dW5kcwotKwlqYmUJLkxjYmNfZGVjX3RhaWwKLSsJam1wCS5MY2JjX2RlY19sb29wMwotKy5hbGln biAxNgotKy5MY2JjX2RlY19sb29wMzoKLSsJbW92dXBzCSgkaW5wKSwkaW5vdXQwCi0rCW1vdnVw cwkweDEwKCRpbnApLCRpbm91dDEKLSsJbW92dXBzCTB4MjAoJGlucCksJGlub3V0MgotKwltb3Zh cHMJJGlub3V0MCwkaW4wCi0rCW1vdmFwcwkkaW5vdXQxLCRpbjEKLSsJbW92YXBzCSRpbm91dDIs JGluMgotKwljYWxsCV9hZXNuaV9kZWNyeXB0MwotKwlzdWIJXCQweDMwLCRsZW4KLSsJbGVhCTB4 MzAoJGlucCksJGlucAotKwlsZWEJMHgzMCgkb3V0KSwkb3V0Ci0rCXB4b3IJJGl2LCRpbm91dDAK LSsJcHhvcgkkaW4wLCRpbm91dDEKLSsJbW92YXBzCSRpbjIsJGl2Ci0rCXB4b3IJJGluMSwkaW5v dXQyCi0rCW1vdnVwcwkkaW5vdXQwLC0weDMwKCRvdXQpCi0rCW1vdgkkcm5kc18sJHJvdW5kcwkj IHJlc3RvcmUgJHJvdW5kcwotKwltb3Z1cHMJJGlub3V0MSwtMHgyMCgkb3V0KQotKwltb3YJJGtl eV8sJGtleQkjIHJlc3RvcmUgJGtleQotKwltb3Z1cHMJJGlub3V0MiwtMHgxMCgkb3V0KQotKwlq YQkuTGNiY19kZWNfbG9vcDMKLSsKLSsuTGNiY19kZWNfdGFpbDoKLSsJYWRkCVwkMHg0MCwkbGVu Ci0rCW1vdnVwcwkkaXYsKCRpdnApCi0rCWp6CS5MY2JjX2RlY19yZXQKLSsKLSsJbW92dXBzCSgk aW5wKSwkaW5vdXQwCi0rCWNtcAlcJDB4MTAsJGxlbgotKwltb3ZhcHMJJGlub3V0MCwkaW4wCi0r CWpiZQkuTGNiY19kZWNfb25lCi0rCW1vdnVwcwkweDEwKCRpbnApLCRpbm91dDEKLSsJY21wCVwk MHgyMCwkbGVuCi0rCW1vdmFwcwkkaW5vdXQxLCRpbjEKLSsJamJlCS5MY2JjX2RlY190d28KLSsJ bW92dXBzCTB4MjAoJGlucCksJGlub3V0MgotKwljbXAJXCQweDMwLCRsZW4KLSsJbW92YXBzCSRp bm91dDIsJGluMgotKwlqYmUJLkxjYmNfZGVjX3RocmVlCi0rCW1vdnVwcwkweDMwKCRpbnApLCRp bm91dDMKLSsJY2FsbAlfYWVzbmlfZGVjcnlwdDQKLSsJcHhvcgkkaXYsJGlub3V0MAotKwltb3Z1 cHMJMHgzMCgkaW5wKSwkaXYKLSsJcHhvcgkkaW4wLCRpbm91dDEKLSsJbW92dXBzCSRpbm91dDAs KCRvdXQpCi0rCXB4b3IJJGluMSwkaW5vdXQyCi0rCW1vdnVwcwkkaW5vdXQxLDB4MTAoJG91dCkK LSsJcHhvcgkkaW4yLCRpbm91dDMKLSsJbW92dXBzCSRpbm91dDIsMHgyMCgkb3V0KQotKwltb3Zh cHMJJGlub3V0MywkaW5vdXQwCi0rCWxlYQkweDMwKCRvdXQpLCRvdXQKLSsJam1wCS5MY2JjX2Rl Y190YWlsX2NvbGxlY3RlZAotKy5hbGlnbgkxNgotKy5MY2JjX2RlY19vbmU6Ci0rX19fCi0rCSZh ZXNuaV9nZW5lcmF0ZTEoImRlYyIsJGtleSwkcm91bmRzKTsKLSskY29kZS49PDxfX187Ci0rCXB4 b3IJJGl2LCRpbm91dDAKLSsJbW92YXBzCSRpbjAsJGl2Ci0rCWptcAkuTGNiY19kZWNfdGFpbF9j b2xsZWN0ZWQKLSsuYWxpZ24JMTYKLSsuTGNiY19kZWNfdHdvOgotKwljYWxsCV9hZXNuaV9kZWNy eXB0MwotKwlweG9yCSRpdiwkaW5vdXQwCi0rCXB4b3IJJGluMCwkaW5vdXQxCi0rCW1vdnVwcwkk aW5vdXQwLCgkb3V0KQotKwltb3ZhcHMJJGluMSwkaXYKLSsJbW92YXBzCSRpbm91dDEsJGlub3V0 MAotKwlsZWEJMHgxMCgkb3V0KSwkb3V0Ci0rCWptcAkuTGNiY19kZWNfdGFpbF9jb2xsZWN0ZWQK LSsuYWxpZ24JMTYKLSsuTGNiY19kZWNfdGhyZWU6Ci0rCWNhbGwJX2Flc25pX2RlY3J5cHQzCi0r CXB4b3IJJGl2LCRpbm91dDAKLSsJcHhvcgkkaW4wLCRpbm91dDEKLSsJbW92dXBzCSRpbm91dDAs KCRvdXQpCi0rCXB4b3IJJGluMSwkaW5vdXQyCi0rCW1vdnVwcwkkaW5vdXQxLDB4MTAoJG91dCkK LSsJbW92YXBzCSRpbjIsJGl2Ci0rCW1vdmFwcwkkaW5vdXQyLCRpbm91dDAKLSsJbGVhCTB4MjAo JG91dCksJG91dAotKwlqbXAJLkxjYmNfZGVjX3RhaWxfY29sbGVjdGVkCi0rLmFsaWduCTE2Ci0r LkxjYmNfZGVjX3RhaWxfY29sbGVjdGVkOgotKwlhbmQJXCQxNSwkbGVuCi0rCW1vdnVwcwkkaXYs KCRpdnApCi0rCWpuegkuTGNiY19kZWNfdGFpbF9wYXJ0aWFsCi0rCW1vdnVwcwkkaW5vdXQwLCgk b3V0KQotKwlqbXAJLkxjYmNfZGVjX3JldAotKy5MY2JjX2RlY190YWlsX3BhcnRpYWw6Ci0rCW1v dmFwcwkkaW5vdXQwLCRyZXNlcnZlZCglcnNwKQotKwltb3YJJG91dCwlcmRpCi0rCW1vdgkkbGVu LCVyY3gKLSsJbGVhCSRyZXNlcnZlZCglcnNwKSwlcnNpCi0rCS5sb25nCTB4OTA2NkE0RjMJIyBy ZXAgbW92c2IKLSsKLSsuTGNiY19kZWNfcmV0OgotK19fXwotKyRjb2RlLj08PF9fXyBpZiAoJHdp bjY0KTsKLSsJbW92YXBzCSglcnNwKSwleG1tNgotKwltb3ZhcHMJMHgxMCglcnNwKSwleG1tNwot Kwltb3ZhcHMJMHgyMCglcnNwKSwleG1tOAotKwltb3ZhcHMJMHgzMCglcnNwKSwleG1tOQotKwls ZWEJMHg1OCglcnNwKSwlcnNwCi0rX19fCi0rJGNvZGUuPTw8X19fOwotKy5MY2JjX3JldDoKLSsJ cmV0Ci0rLnNpemUJJHtQUkVGSVh9X2NiY19lbmNyeXB0LC4tJHtQUkVGSVh9X2NiY19lbmNyeXB0 Ci0rX19fCi0rDAotKyMgaW50ICRQUkVGSVhfc2V0X1tlbnxkZV1jcnlwdF9rZXkgKGNvbnN0IHVu c2lnbmVkIGNoYXIgKnVzZXJLZXksCi0rIwkJCQlpbnQgYml0cywgQUVTX0tFWSAqa2V5KQotK3sg bXkgKCRpbnAsJGJpdHMsJGtleSkgPSBAXzRhcmdzOwotKyAgJGJpdHMgPX4gcy8lci8lZS87Ci0r Ci0rJGNvZGUuPTw8X19fOwotKy5nbG9ibAkke1BSRUZJWH1fc2V0X2RlY3J5cHRfa2V5Ci0rLnR5 cGUJJHtQUkVGSVh9X3NldF9kZWNyeXB0X2tleSxcQGFiaS1vbW5pcG90ZW50Ci0rLmFsaWduCTE2 Ci0rJHtQUkVGSVh9X3NldF9kZWNyeXB0X2tleToKLSsJLmJ5dGUJMHg0OCwweDgzLDB4RUMsMHgw OAkjIHN1YiByc3AsOAotKwljYWxsCV9hZXNuaV9zZXRfZW5jcnlwdF9rZXkKLSsJc2hsCVwkNCwk Yml0cwkJIyByb3VuZHMtMSBhZnRlciBfYWVzbmlfc2V0X2VuY3J5cHRfa2V5Ci0rCXRlc3QJJWVh eCwlZWF4Ci0rCWpuegkuTGRlY19rZXlfcmV0Ci0rCWxlYQkxNigka2V5LCRiaXRzKSwkaW5wCSMg cG9pbnRzIGF0IHRoZSBlbmQgb2Yga2V5IHNjaGVkdWxlCi0rCi0rCSRtb3ZrZXkJKCRrZXkpLCV4 bW0wCQkjIGp1c3Qgc3dhcAotKwkkbW92a2V5CSgkaW5wKSwleG1tMQotKwkkbW92a2V5CSV4bW0w LCgkaW5wKQotKwkkbW92a2V5CSV4bW0xLCgka2V5KQotKwlsZWEJMTYoJGtleSksJGtleQotKwls ZWEJLTE2KCRpbnApLCRpbnAKLSsKLSsuTGRlY19rZXlfaW52ZXJzZToKLSsJJG1vdmtleQkoJGtl eSksJXhtbTAJCSMgc3dhcCBhbmQgaW52ZXJzZQotKwkkbW92a2V5CSgkaW5wKSwleG1tMQotKwlh ZXNpbWMJJXhtbTAsJXhtbTAKLSsJYWVzaW1jCSV4bW0xLCV4bW0xCi0rCWxlYQkxNigka2V5KSwk a2V5Ci0rCWxlYQktMTYoJGlucCksJGlucAotKwljbXAJJGtleSwkaW5wCi0rCSRtb3ZrZXkJJXht bTAsMTYoJGlucCkKLSsJJG1vdmtleQkleG1tMSwtMTYoJGtleSkKLSsJamEJLkxkZWNfa2V5X2lu dmVyc2UKLSsKLSsJJG1vdmtleQkoJGtleSksJXhtbTAJCSMgaW52ZXJzZSBtaWRkbGUKLSsJYWVz aW1jCSV4bW0wLCV4bW0wCi0rCSRtb3ZrZXkJJXhtbTAsKCRpbnApCi0rLkxkZWNfa2V5X3JldDoK LSsJYWRkCVwkOCwlcnNwCi0rCXJldAotKy5MU0VIX2VuZF9zZXRfZGVjcnlwdF9rZXk6Ci0rLnNp emUJJHtQUkVGSVh9X3NldF9kZWNyeXB0X2tleSwuLSR7UFJFRklYfV9zZXRfZGVjcnlwdF9rZXkK LStfX18KLSsMCi0rIyBUaGlzIGlzIGJhc2VkIG9uIHN1Ym1pc3Npb24gYnkKLSsjCi0rIwlIdWFu ZyBZaW5nIDx5aW5nLmh1YW5nQGludGVsLmNvbT4KLSsjCVZpbm9kaCBHb3BhbCA8dmlub2RoLmdv cGFsQGludGVsLmNvbT4KLSsjCUthaHJhbWFuIEFrZGVtaXIKLSsjCi0rIyBBZ3Jlc3NpdmVseSBv cHRpbWl6ZWQgaW4gcmVzcGVjdCB0byBhZXNrZXlnZW5hc3Npc3QncyBjcml0aWNhbCBwYXRoCi0r IyBhbmQgaXMgY29udGFpbmVkIGluICV4bW0wLTUgdG8gbWVldCBXaW42NCBBQkkgcmVxdWlyZW1l bnQuCi0rIwotKyRjb2RlLj08PF9fXzsKLSsuZ2xvYmwJJHtQUkVGSVh9X3NldF9lbmNyeXB0X2tl eQotKy50eXBlCSR7UFJFRklYfV9zZXRfZW5jcnlwdF9rZXksXEBhYmktb21uaXBvdGVudAotKy5h bGlnbgkxNgotKyR7UFJFRklYfV9zZXRfZW5jcnlwdF9rZXk6Ci0rX2Flc25pX3NldF9lbmNyeXB0 X2tleToKLSsJLmJ5dGUJMHg0OCwweDgzLDB4RUMsMHgwOAkjIHN1YiByc3AsOAotKwl0ZXN0CSRp bnAsJGlucAotKwltb3YJXCQtMSwlcmF4Ci0rCWp6CS5MZW5jX2tleV9yZXQKLSsJdGVzdAkka2V5 LCRrZXkKLSsJanoJLkxlbmNfa2V5X3JldAotKwotKwltb3Z1cHMJKCRpbnApLCV4bW0wCQkjIHB1 bGwgZmlyc3QgMTI4IGJpdHMgb2YgKnVzZXJLZXkKLSsJcHhvcgkleG1tNCwleG1tNAkJIyBsb3cg ZHdvcmQgb2YgeG1tNCBpcyBhc3N1bWVkIDAKLSsJbGVhCTE2KCRrZXkpLCVyYXgKLSsJY21wCVwk MjU2LCRiaXRzCi0rCWplCS5MMTRyb3VuZHMKLSsJY21wCVwkMTkyLCRiaXRzCi0rCWplCS5MMTJy b3VuZHMKLSsJY21wCVwkMTI4LCRiaXRzCi0rCWpuZQkuTGJhZF9rZXliaXRzCi0rCi0rLkwxMHJv dW5kczoKLSsJbW92CVwkOSwkYml0cwkJCSMgMTAgcm91bmRzIGZvciAxMjgtYml0IGtleQotKwkk bW92a2V5CSV4bW0wLCgka2V5KQkJCSMgcm91bmQgMAotKwlhZXNrZXlnZW5hc3Npc3QJXCQweDEs JXhtbTAsJXhtbTEJIyByb3VuZCAxCi0rCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8xMjhfY29sZAot KwlhZXNrZXlnZW5hc3Npc3QJXCQweDIsJXhtbTAsJXhtbTEJIyByb3VuZCAyCi0rCWNhbGwJCS5M a2V5X2V4cGFuc2lvbl8xMjgKLSsJYWVza2V5Z2VuYXNzaXN0CVwkMHg0LCV4bW0wLCV4bW0xCSMg cm91bmQgMwotKwljYWxsCQkuTGtleV9leHBhbnNpb25fMTI4Ci0rCWFlc2tleWdlbmFzc2lzdAlc JDB4OCwleG1tMCwleG1tMQkjIHJvdW5kIDQKLSsJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzEyOAot KwlhZXNrZXlnZW5hc3Npc3QJXCQweDEwLCV4bW0wLCV4bW0xCSMgcm91bmQgNQotKwljYWxsCQku TGtleV9leHBhbnNpb25fMTI4Ci0rCWFlc2tleWdlbmFzc2lzdAlcJDB4MjAsJXhtbTAsJXhtbTEJ IyByb3VuZCA2Ci0rCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8xMjgKLSsJYWVza2V5Z2VuYXNzaXN0 CVwkMHg0MCwleG1tMCwleG1tMQkjIHJvdW5kIDcKLSsJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzEy OAotKwlhZXNrZXlnZW5hc3Npc3QJXCQweDgwLCV4bW0wLCV4bW0xCSMgcm91bmQgOAotKwljYWxs CQkuTGtleV9leHBhbnNpb25fMTI4Ci0rCWFlc2tleWdlbmFzc2lzdAlcJDB4MWIsJXhtbTAsJXht bTEJIyByb3VuZCA5Ci0rCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8xMjgKLSsJYWVza2V5Z2VuYXNz aXN0CVwkMHgzNiwleG1tMCwleG1tMQkjIHJvdW5kIDEwCi0rCWNhbGwJCS5Ma2V5X2V4cGFuc2lv bl8xMjgKLSsJJG1vdmtleQkleG1tMCwoJXJheCkKLSsJbW92CSRiaXRzLDgwKCVyYXgpCSMgMjQw KCVyZHgpCi0rCXhvcgklZWF4LCVlYXgKLSsJam1wCS5MZW5jX2tleV9yZXQKLSsKLSsuYWxpZ24J MTYKLSsuTDEycm91bmRzOgotKwltb3ZxCTE2KCRpbnApLCV4bW0yCQkJIyByZW1haW5pbmcgMS8z IG9mICp1c2VyS2V5Ci0rCW1vdglcJDExLCRiaXRzCQkJIyAxMiByb3VuZHMgZm9yIDE5MgotKwkk bW92a2V5CSV4bW0wLCgka2V5KQkJCSMgcm91bmQgMAotKwlhZXNrZXlnZW5hc3Npc3QJXCQweDEs JXhtbTIsJXhtbTEJIyByb3VuZCAxLDIKLSsJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzE5MmFfY29s ZAotKwlhZXNrZXlnZW5hc3Npc3QJXCQweDIsJXhtbTIsJXhtbTEJIyByb3VuZCAyLDMKLSsJY2Fs bAkJLkxrZXlfZXhwYW5zaW9uXzE5MmIKLSsJYWVza2V5Z2VuYXNzaXN0CVwkMHg0LCV4bW0yLCV4 bW0xCSMgcm91bmQgNCw1Ci0rCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8xOTJhCi0rCWFlc2tleWdl bmFzc2lzdAlcJDB4OCwleG1tMiwleG1tMQkjIHJvdW5kIDUsNgotKwljYWxsCQkuTGtleV9leHBh bnNpb25fMTkyYgotKwlhZXNrZXlnZW5hc3Npc3QJXCQweDEwLCV4bW0yLCV4bW0xCSMgcm91bmQg Nyw4Ci0rCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8xOTJhCi0rCWFlc2tleWdlbmFzc2lzdAlcJDB4 MjAsJXhtbTIsJXhtbTEJIyByb3VuZCA4LDkKLSsJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzE5MmIK LSsJYWVza2V5Z2VuYXNzaXN0CVwkMHg0MCwleG1tMiwleG1tMQkjIHJvdW5kIDEwLDExCi0rCWNh bGwJCS5Ma2V5X2V4cGFuc2lvbl8xOTJhCi0rCWFlc2tleWdlbmFzc2lzdAlcJDB4ODAsJXhtbTIs JXhtbTEJIyByb3VuZCAxMSwxMgotKwljYWxsCQkuTGtleV9leHBhbnNpb25fMTkyYgotKwkkbW92 a2V5CSV4bW0wLCglcmF4KQotKwltb3YJJGJpdHMsNDgoJXJheCkJIyAyNDAoJXJkeCkKLSsJeG9y CSVyYXgsICVyYXgKLSsJam1wCS5MZW5jX2tleV9yZXQKLSsKLSsuYWxpZ24JMTYKLSsuTDE0cm91 bmRzOgotKwltb3Z1cHMJMTYoJGlucCksJXhtbTIJCQkjIHJlbWFuaW5nIGhhbGYgb2YgKnVzZXJL ZXkKLSsJbW92CVwkMTMsJGJpdHMJCQkjIDE0IHJvdW5kcyBmb3IgMjU2Ci0rCWxlYQkxNiglcmF4 KSwlcmF4Ci0rCSRtb3ZrZXkJJXhtbTAsKCRrZXkpCQkJIyByb3VuZCAwCi0rCSRtb3ZrZXkJJXht bTIsMTYoJGtleSkJCQkjIHJvdW5kIDEKLSsJYWVza2V5Z2VuYXNzaXN0CVwkMHgxLCV4bW0yLCV4 bW0xCSMgcm91bmQgMgotKwljYWxsCQkuTGtleV9leHBhbnNpb25fMjU2YV9jb2xkCi0rCWFlc2tl eWdlbmFzc2lzdAlcJDB4MSwleG1tMCwleG1tMQkjIHJvdW5kIDMKLSsJY2FsbAkJLkxrZXlfZXhw YW5zaW9uXzI1NmIKLSsJYWVza2V5Z2VuYXNzaXN0CVwkMHgyLCV4bW0yLCV4bW0xCSMgcm91bmQg NAotKwljYWxsCQkuTGtleV9leHBhbnNpb25fMjU2YQotKwlhZXNrZXlnZW5hc3Npc3QJXCQweDIs JXhtbTAsJXhtbTEJIyByb3VuZCA1Ci0rCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8yNTZiCi0rCWFl c2tleWdlbmFzc2lzdAlcJDB4NCwleG1tMiwleG1tMQkjIHJvdW5kIDYKLSsJY2FsbAkJLkxrZXlf ZXhwYW5zaW9uXzI1NmEKLSsJYWVza2V5Z2VuYXNzaXN0CVwkMHg0LCV4bW0wLCV4bW0xCSMgcm91 bmQgNwotKwljYWxsCQkuTGtleV9leHBhbnNpb25fMjU2YgotKwlhZXNrZXlnZW5hc3Npc3QJXCQw eDgsJXhtbTIsJXhtbTEJIyByb3VuZCA4Ci0rCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8yNTZhCi0r CWFlc2tleWdlbmFzc2lzdAlcJDB4OCwleG1tMCwleG1tMQkjIHJvdW5kIDkKLSsJY2FsbAkJLkxr ZXlfZXhwYW5zaW9uXzI1NmIKLSsJYWVza2V5Z2VuYXNzaXN0CVwkMHgxMCwleG1tMiwleG1tMQkj IHJvdW5kIDEwCi0rCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8yNTZhCi0rCWFlc2tleWdlbmFzc2lz dAlcJDB4MTAsJXhtbTAsJXhtbTEJIyByb3VuZCAxMQotKwljYWxsCQkuTGtleV9leHBhbnNpb25f MjU2YgotKwlhZXNrZXlnZW5hc3Npc3QJXCQweDIwLCV4bW0yLCV4bW0xCSMgcm91bmQgMTIKLSsJ Y2FsbAkJLkxrZXlfZXhwYW5zaW9uXzI1NmEKLSsJYWVza2V5Z2VuYXNzaXN0CVwkMHgyMCwleG1t MCwleG1tMQkjIHJvdW5kIDEzCi0rCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8yNTZiCi0rCWFlc2tl eWdlbmFzc2lzdAlcJDB4NDAsJXhtbTIsJXhtbTEJIyByb3VuZCAxNAotKwljYWxsCQkuTGtleV9l eHBhbnNpb25fMjU2YQotKwkkbW92a2V5CSV4bW0wLCglcmF4KQotKwltb3YJJGJpdHMsMTYoJXJh eCkJIyAyNDAoJXJkeCkKLSsJeG9yCSVyYXgsJXJheAotKwlqbXAJLkxlbmNfa2V5X3JldAotKwot Ky5hbGlnbgkxNgotKy5MYmFkX2tleWJpdHM6Ci0rCW1vdglcJC0yLCVyYXgKLSsuTGVuY19rZXlf cmV0OgotKwlhZGQJXCQ4LCVyc3AKLSsJcmV0Ci0rLkxTRUhfZW5kX3NldF9lbmNyeXB0X2tleToK LSsMCi0rLmFsaWduCTE2Ci0rLkxrZXlfZXhwYW5zaW9uXzEyODoKLSsJJG1vdmtleQkleG1tMCwo JXJheCkKLSsJbGVhCTE2KCVyYXgpLCVyYXgKLSsuTGtleV9leHBhbnNpb25fMTI4X2NvbGQ6Ci0r CXNodWZwcwlcJDBiMDAwMTAwMDAsJXhtbTAsJXhtbTQKLSsJcHhvcgkleG1tNCwgJXhtbTAKLSsJ c2h1ZnBzCVwkMGIxMDAwMTEwMCwleG1tMCwleG1tNAotKwlweG9yCSV4bW00LCAleG1tMAotKwlw c2h1ZmQJXCQwYjExMTExMTExLCV4bW0xLCV4bW0xCSMgY3JpdGljYWwgcGF0aAotKwlweG9yCSV4 bW0xLCV4bW0wCi0rCXJldAotKwotKy5hbGlnbiAxNgotKy5Ma2V5X2V4cGFuc2lvbl8xOTJhOgot KwkkbW92a2V5CSV4bW0wLCglcmF4KQotKwlsZWEJMTYoJXJheCksJXJheAotKy5Ma2V5X2V4cGFu c2lvbl8xOTJhX2NvbGQ6Ci0rCW1vdmFwcwkleG1tMiwgJXhtbTUKLSsuTGtleV9leHBhbnNpb25f MTkyYl93YXJtOgotKwlzaHVmcHMJXCQwYjAwMDEwMDAwLCV4bW0wLCV4bW00Ci0rCW1vdmFwcwkl eG1tMiwleG1tMwotKwlweG9yCSV4bW00LCV4bW0wCi0rCXNodWZwcwlcJDBiMTAwMDExMDAsJXht bTAsJXhtbTQKLSsJcHNsbGRxCVwkNCwleG1tMwotKwlweG9yCSV4bW00LCV4bW0wCi0rCXBzaHVm ZAlcJDBiMDEwMTAxMDEsJXhtbTEsJXhtbTEJIyBjcml0aWNhbCBwYXRoCi0rCXB4b3IJJXhtbTMs JXhtbTIKLSsJcHhvcgkleG1tMSwleG1tMAotKwlwc2h1ZmQJXCQwYjExMTExMTExLCV4bW0wLCV4 bW0zCi0rCXB4b3IJJXhtbTMsJXhtbTIKLSsJcmV0Ci0rCi0rLmFsaWduIDE2Ci0rLkxrZXlfZXhw YW5zaW9uXzE5MmI6Ci0rCW1vdmFwcwkleG1tMCwleG1tMwotKwlzaHVmcHMJXCQwYjAxMDAwMTAw LCV4bW0wLCV4bW01Ci0rCSRtb3ZrZXkJJXhtbTUsKCVyYXgpCi0rCXNodWZwcwlcJDBiMDEwMDEx MTAsJXhtbTIsJXhtbTMKLSsJJG1vdmtleQkleG1tMywxNiglcmF4KQotKwlsZWEJMzIoJXJheCks JXJheAotKwlqbXAJLkxrZXlfZXhwYW5zaW9uXzE5MmJfd2FybQotKwotKy5hbGlnbgkxNgotKy5M a2V5X2V4cGFuc2lvbl8yNTZhOgotKwkkbW92a2V5CSV4bW0yLCglcmF4KQotKwlsZWEJMTYoJXJh eCksJXJheAotKy5Ma2V5X2V4cGFuc2lvbl8yNTZhX2NvbGQ6Ci0rCXNodWZwcwlcJDBiMDAwMTAw MDAsJXhtbTAsJXhtbTQKLSsJcHhvcgkleG1tNCwleG1tMAotKwlzaHVmcHMJXCQwYjEwMDAxMTAw LCV4bW0wLCV4bW00Ci0rCXB4b3IJJXhtbTQsJXhtbTAKLSsJcHNodWZkCVwkMGIxMTExMTExMSwl eG1tMSwleG1tMQkjIGNyaXRpY2FsIHBhdGgKLSsJcHhvcgkleG1tMSwleG1tMAotKwlyZXQKLSsK LSsuYWxpZ24gMTYKLSsuTGtleV9leHBhbnNpb25fMjU2YjoKLSsJJG1vdmtleQkleG1tMCwoJXJh eCkKLSsJbGVhCTE2KCVyYXgpLCVyYXgKLSsKLSsJc2h1ZnBzCVwkMGIwMDAxMDAwMCwleG1tMiwl eG1tNAotKwlweG9yCSV4bW00LCV4bW0yCi0rCXNodWZwcwlcJDBiMTAwMDExMDAsJXhtbTIsJXht bTQKLSsJcHhvcgkleG1tNCwleG1tMgotKwlwc2h1ZmQJXCQwYjEwMTAxMDEwLCV4bW0xLCV4bW0x CSMgY3JpdGljYWwgcGF0aAotKwlweG9yCSV4bW0xLCV4bW0yCi0rCXJldAotKy5zaXplCSR7UFJF RklYfV9zZXRfZW5jcnlwdF9rZXksLi0ke1BSRUZJWH1fc2V0X2VuY3J5cHRfa2V5Ci0rX19fCi0r fQotKwwKLSskY29kZS49PDxfX187Ci0rLmFzY2l6ICAiQUVTIGZvciBJbnRlbCBBRVMtTkksIENS WVBUT0dBTVMgYnkgPGFwcHJvXEBvcGVuc3NsLm9yZz4iCi0rLmFsaWduCTY0Ci0rX19fCi0rCi0r IyBFWENFUFRJT05fRElTUE9TSVRJT04gaGFuZGxlciAoRVhDRVBUSU9OX1JFQ09SRCAqcmVjLFVM T05HNjQgZnJhbWUsCi0rIwkJQ09OVEVYVCAqY29udGV4dCxESVNQQVRDSEVSX0NPTlRFWFQgKmRp c3ApCi0raWYgKCR3aW42NCkgewotKyRyZWM9IiVyY3giOwotKyRmcmFtZT0iJXJkeCI7Ci0rJGNv bnRleHQ9IiVyOCI7Ci0rJGRpc3A9IiVyOSI7Ci0rCi0rJGNvZGUuPTw8X19fOwotKy5leHRlcm4J X19pbXBfUnRsVmlydHVhbFVud2luZAotKy50eXBlCWNiY19zZV9oYW5kbGVyLFxAYWJpLW9tbmlw b3RlbnQKLSsuYWxpZ24JMTYKLStjYmNfc2VfaGFuZGxlcjoKLSsJcHVzaAklcnNpCi0rCXB1c2gJ JXJkaQotKwlwdXNoCSVyYngKLSsJcHVzaAklcmJwCi0rCXB1c2gJJXIxMgotKwlwdXNoCSVyMTMK LSsJcHVzaAklcjE0Ci0rCXB1c2gJJXIxNQotKwlwdXNoZnEKLSsJc3ViCVwkNjQsJXJzcAotKwot Kwltb3YJMTUyKCRjb250ZXh0KSwlcmF4CSMgcHVsbCBjb250ZXh0LT5Sc3AKLSsJbW92CTI0OCgk Y29udGV4dCksJXJieAkjIHB1bGwgY29udGV4dC0+UmlwCi0rCi0rCWxlYQkuTGNiY19kZWNyeXB0 KCVyaXApLCVyMTAKLSsJY21wCSVyMTAsJXJieAkJIyBjb250ZXh0LT5SaXA8InByb2xvZ3VlIiBs YWJlbAotKwlqYgkuTGluX3Byb2xvZ3VlCi0rCi0rCWxlYQkuTGNiY19kZWNyeXB0X2JvZHkoJXJp cCksJXIxMAotKwljbXAJJXIxMCwlcmJ4CQkjIGNvbnRleHQtPlJpcDxjYmNfZGVjcnlwdF9ib2R5 Ci0rCWpiCS5McmVzdG9yZV9yYXgKLSsKLSsJbGVhCS5MY2JjX3JldCglcmlwKSwlcjEwCi0rCWNt cAklcjEwLCVyYngJCSMgY29udGV4dC0+UmlwPj0iZXBpbG9ndWUiIGxhYmVsCi0rCWphZQkuTGlu X3Byb2xvZ3VlCi0rCi0rCWxlYQkwKCVyYXgpLCVyc2kJCSMgdG9wIG9mIHN0YWNrCi0rCWxlYQk1 MTIoJGNvbnRleHQpLCVyZGkJIyAmY29udGV4dC5YbW02Ci0rCW1vdglcJDgsJWVjeAkJIyA0KnNp emVvZigleG1tMCkvc2l6ZW9mKCVyYXgpCi0rCS5sb25nCTB4YTU0OGYzZmMJCSMgY2xkOyByZXAg bW92c3EKLSsJbGVhCTB4NTgoJXJheCksJXJheAkJIyBhZGp1c3Qgc3RhY2sgcG9pbnRlcgotKwlq bXAJLkxpbl9wcm9sb2d1ZQotKwotKy5McmVzdG9yZV9yYXg6Ci0rCW1vdgkxMjAoJGNvbnRleHQp LCVyYXgKLSsuTGluX3Byb2xvZ3VlOgotKwltb3YJOCglcmF4KSwlcmRpCi0rCW1vdgkxNiglcmF4 KSwlcnNpCi0rCW1vdgklcmF4LDE1MigkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlJzcAot Kwltb3YJJXJzaSwxNjgoJGNvbnRleHQpCSMgcmVzdG9yZSBjb250ZXh0LT5Sc2kKLSsJbW92CSVy ZGksMTc2KCRjb250ZXh0KQkjIHJlc3RvcmUgY29udGV4dC0+UmRpCi0rCi0rCWptcAkuTGNvbW1v bl9zZWhfZXhpdAotKy5zaXplCWNiY19zZV9oYW5kbGVyLC4tY2JjX3NlX2hhbmRsZXIKLSsKLSsu dHlwZQllY2Jfc2VfaGFuZGxlcixcQGFiaS1vbW5pcG90ZW50Ci0rLmFsaWduCTE2Ci0rZWNiX3Nl X2hhbmRsZXI6Ci0rCXB1c2gJJXJzaQotKwlwdXNoCSVyZGkKLSsJcHVzaAklcmJ4Ci0rCXB1c2gJ JXJicAotKwlwdXNoCSVyMTIKLSsJcHVzaAklcjEzCi0rCXB1c2gJJXIxNAotKwlwdXNoCSVyMTUK LSsJcHVzaGZxCi0rCXN1YglcJDY0LCVyc3AKLSsKLSsJbW92CTE1MigkY29udGV4dCksJXJheAkj IHB1bGwgY29udGV4dC0+UnNwCi0rCW1vdgk4KCVyYXgpLCVyZGkKLSsJbW92CTE2KCVyYXgpLCVy c2kKLSsJbW92CSVyc2ksMTY4KCRjb250ZXh0KQkjIHJlc3RvcmUgY29udGV4dC0+UnNpCi0rCW1v dgklcmRpLDE3NigkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlJkaQotKwotKy5MY29tbW9u X3NlaF9leGl0OgotKwotKwltb3YJNDAoJGRpc3ApLCVyZGkJCSMgZGlzcC0+Q29udGV4dFJlY29y ZAotKwltb3YJJGNvbnRleHQsJXJzaQkJIyBjb250ZXh0Ci0rCW1vdglcJDE1NCwlZWN4CQkjIHNp emVvZihDT05URVhUKQotKwkubG9uZwkweGE1NDhmM2ZjCQkjIGNsZDsgcmVwIG1vdnNxCi0rCi0r CW1vdgkkZGlzcCwlcnNpCi0rCXhvcgklcmN4LCVyY3gJCSMgYXJnMSwgVU5XX0ZMQUdfTkhBTkRM RVIKLSsJbW92CTgoJXJzaSksJXJkeAkJIyBhcmcyLCBkaXNwLT5JbWFnZUJhc2UKLSsJbW92CTAo JXJzaSksJXI4CQkjIGFyZzMsIGRpc3AtPkNvbnRyb2xQYwotKwltb3YJMTYoJXJzaSksJXI5CQkj IGFyZzQsIGRpc3AtPkZ1bmN0aW9uRW50cnkKLSsJbW92CTQwKCVyc2kpLCVyMTAJCSMgZGlzcC0+ Q29udGV4dFJlY29yZAotKwlsZWEJNTYoJXJzaSksJXIxMQkJIyAmZGlzcC0+SGFuZGxlckRhdGEK LSsJbGVhCTI0KCVyc2kpLCVyMTIJCSMgJmRpc3AtPkVzdGFibGlzaGVyRnJhbWUKLSsJbW92CSVy MTAsMzIoJXJzcCkJCSMgYXJnNQotKwltb3YJJXIxMSw0MCglcnNwKQkJIyBhcmc2Ci0rCW1vdgkl cjEyLDQ4KCVyc3ApCQkjIGFyZzcKLSsJbW92CSVyY3gsNTYoJXJzcCkJCSMgYXJnOCwgKE5VTEwp Ci0rCWNhbGwJKl9faW1wX1J0bFZpcnR1YWxVbndpbmQoJXJpcCkKLSsKLSsJbW92CVwkMSwlZWF4 CQkjIEV4Y2VwdGlvbkNvbnRpbnVlU2VhcmNoCi0rCWFkZAlcJDY0LCVyc3AKLSsJcG9wZnEKLSsJ cG9wCSVyMTUKLSsJcG9wCSVyMTQKLSsJcG9wCSVyMTMKLSsJcG9wCSVyMTIKLSsJcG9wCSVyYnAK LSsJcG9wCSVyYngKLSsJcG9wCSVyZGkKLSsJcG9wCSVyc2kKLSsJcmV0Ci0rLnNpemUJY2JjX3Nl X2hhbmRsZXIsLi1jYmNfc2VfaGFuZGxlcgotKwotKy5zZWN0aW9uCS5wZGF0YQotKy5hbGlnbgk0 Ci0rCS5ydmEJLkxTRUhfYmVnaW5fJHtQUkVGSVh9X2VjYl9lbmNyeXB0Ci0rCS5ydmEJLkxTRUhf ZW5kXyR7UFJFRklYfV9lY2JfZW5jcnlwdAotKwkucnZhCS5MU0VIX2luZm9fZWNiCi0rCi0rCS5y dmEJLkxTRUhfYmVnaW5fJHtQUkVGSVh9X2NiY19lbmNyeXB0Ci0rCS5ydmEJLkxTRUhfZW5kXyR7 UFJFRklYfV9jYmNfZW5jcnlwdAotKwkucnZhCS5MU0VIX2luZm9fY2JjCi0rCi0rCS5ydmEJJHtQ UkVGSVh9X3NldF9kZWNyeXB0X2tleQotKwkucnZhCS5MU0VIX2VuZF9zZXRfZGVjcnlwdF9rZXkK LSsJLnJ2YQkuTFNFSF9pbmZvX2tleQotKwotKwkucnZhCSR7UFJFRklYfV9zZXRfZW5jcnlwdF9r ZXkKLSsJLnJ2YQkuTFNFSF9lbmRfc2V0X2VuY3J5cHRfa2V5Ci0rCS5ydmEJLkxTRUhfaW5mb19r ZXkKLSsuc2VjdGlvbgkueGRhdGEKLSsuYWxpZ24JOAotKy5MU0VIX2luZm9fZWNiOgotKwkuYnl0 ZQk5LDAsMCwwCi0rCS5ydmEJZWNiX3NlX2hhbmRsZXIKLSsuTFNFSF9pbmZvX2NiYzoKLSsJLmJ5 dGUJOSwwLDAsMAotKwkucnZhCWNiY19zZV9oYW5kbGVyCi0rLkxTRUhfaW5mb19rZXk6Ci0rCS5i eXRlCTB4MDEsMHgwNCwweDAxLDB4MDAKLSsJLmJ5dGUJMHgwNCwweDAyLDB4MDAsMHgwMAotK19f XwotK30KLSsKLStzdWIgcmV4IHsKLSsgbG9jYWwgKm9wY29kZT1zaGlmdDsKLSsgbXkgKCRkc3Qs JHNyYyk9QF87Ci0rCi0rICAgaWYgKCRkc3Q+PTggfHwgJHNyYz49OCkgewotKwkkcmV4PTB4NDA7 Ci0rCSRyZXh8PTB4MDQgaWYoJGRzdD49OCk7Ci0rCSRyZXh8PTB4MDEgaWYoJHNyYz49OCk7Ci0r CXB1c2ggQG9wY29kZSwkcmV4OwotKyAgIH0KLSt9Ci0rCi0rc3ViIGFlc25pIHsKLSsgIG15ICRs aW5lPXNoaWZ0OwotKyAgbXkgQG9wY29kZT0oMHg2Nik7Ci0rCi0rICAgIGlmICgkbGluZT1+Lyhh ZXNrZXlnZW5hc3Npc3QpXHMrXCQoW3gwLTlhLWZdKyksXHMqJXhtbShbMC05XSspLFxzKiV4bW0o WzAtOV0rKS8pIHsKLSsJcmV4KFxAb3Bjb2RlLCQ0LCQzKTsKLSsJcHVzaCBAb3Bjb2RlLDB4MGYs MHgzYSwweGRmOwotKwlwdXNoIEBvcGNvZGUsMHhjMHwoJDMmNyl8KCgkNCY3KTw8Myk7CSMgTW9k Ui9NCi0rCW15ICRjPSQyOwotKwlwdXNoIEBvcGNvZGUsJGM9fi9eMC8/b2N0KCRjKTokYzsKLSsJ cmV0dXJuICIuYnl0ZVx0Ii5qb2luKCcsJyxAb3Bjb2RlKTsKLSsgICAgfQotKyAgICBlbHNpZiAo JGxpbmU9fi8oYWVzW2Etel0rKVxzKyV4bW0oWzAtOV0rKSxccyoleG1tKFswLTldKykvKSB7Ci0r CW15ICVvcGNvZGVsZXQgPSAoCi0rCQkiYWVzaW1jIiA9PiAweGRiLAotKwkJImFlc2VuYyIgPT4g MHhkYywJImFlc2VuY2xhc3QiID0+IDB4ZGQsCi0rCQkiYWVzZGVjIiA9PiAweGRlLAkiYWVzZGVj bGFzdCIgPT4gMHhkZgotKwkpOwotKwlyZXR1cm4gdW5kZWYgaWYgKCFkZWZpbmVkKCRvcGNvZGVs ZXR7JDF9KSk7Ci0rCXJleChcQG9wY29kZSwkMywkMik7Ci0rCXB1c2ggQG9wY29kZSwweDBmLDB4 MzgsJG9wY29kZWxldHskMX07Ci0rCXB1c2ggQG9wY29kZSwweGMwfCgkMiY3KXwoKCQzJjcpPDwz KTsJIyBNb2RSL00KLSsJcmV0dXJuICIuYnl0ZVx0Ii5qb2luKCcsJyxAb3Bjb2RlKTsKLSsgICAg fQotKyAgICByZXR1cm4gJGxpbmU7Ci0rfQotKwotKyRjb2RlID1+IHMvXGAoW15cYF0qKVxgL2V2 YWwoJDEpL2dlbTsKLSskY29kZSA9fiBzL1xiKGFlcy4qJXhtbVswLTldKykuKiQvYWVzbmkoJDEp L2dlbTsKLSsKLStwcmludCAkY29kZTsKLSsKLStjbG9zZSBTVERPVVQ7Ci1kaWZmIC11cCBvcGVu c3NsLTEuMC4wLWJldGE0L2NyeXB0by9hZXMvTWFrZWZpbGUuYWVzbmkgb3BlbnNzbC0xLjAuMC1i ZXRhNC9jcnlwdG8vYWVzL01ha2VmaWxlCi0tLS0gb3BlbnNzbC0xLjAuMC1iZXRhNC9jcnlwdG8v YWVzL01ha2VmaWxlLmFlc25pCTIwMDgtMTItMjMgMTI6MzM6MDAuMDAwMDAwMDAwICswMTAwCi0r Kysgb3BlbnNzbC0xLjAuMC1iZXRhNC9jcnlwdG8vYWVzL01ha2VmaWxlCTIwMTAtMDEtMTIgMjI6 MTg6MDYuMDAwMDAwMDAwICswMTAwCi1AQCAtNTAsOSArNTAsMTMgQEAgYWVzLWlhNjQuczogYXNt L2Flcy1pYTY0LlMKLSAKLSBhZXMtNTg2LnM6CWFzbS9hZXMtNTg2LnBsIC4uL3Blcmxhc20veDg2 YXNtLnBsCi0gCSQoUEVSTCkgYXNtL2Flcy01ODYucGwgJChQRVJMQVNNX1NDSEVNRSkgJChDRkxB R1MpICQoUFJPQ0VTU09SKSA+ICRACi0rYWVzbmkteDg2LnM6CWFzbS9hZXNuaS14ODYucGwgLi4v cGVybGFzbS94ODZhc20ucGwKLSsJJChQRVJMKSBhc20vYWVzbmkteDg2LnBsICQoUEVSTEFTTV9T Q0hFTUUpICQoQ0ZMQUdTKSAkKFBST0NFU1NPUikgPiAkQAotIAotIGFlcy14ODZfNjQuczogYXNt L2Flcy14ODZfNjQucGwKLSAJJChQRVJMKSBhc20vYWVzLXg4Nl82NC5wbCAkKFBFUkxBU01fU0NI RU1FKSA+ICRACi0rYWVzbmkteDg2XzY0LnM6IGFzbS9hZXNuaS14ODZfNjQucGwKLSsJJChQRVJM KSBhc20vYWVzbmkteDg2XzY0LnBsICQoUEVSTEFTTV9TQ0hFTUUpID4gJEAKLSAKLSBhZXMtc3Bh cmN2OS5zOiBhc20vYWVzLXNwYXJjdjkucGwKLSAJJChQRVJMKSBhc20vYWVzLXNwYXJjdjkucGwg JChDRkxBR1MpID4gJEAKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2VuZ2lu ZS9lbmdfYWVzbmkuYy5hZXNuaSBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9lbmdpbmUvZW5n X2Flc25pLmMKLS0tLSBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9lbmdpbmUvZW5nX2Flc25p LmMuYWVzbmkJMjAxMC0wMS0xMiAyMjoxODowNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3Ns LTEuMC4wLWJldGE0L2NyeXB0by9lbmdpbmUvZW5nX2Flc25pLmMJMjAxMC0wMS0xMiAyMjoxODow Ni4wMDAwMDAwMDAgKzAxMDAKLUBAIC0wLDAgKzEsNDEzIEBACi0rLyoKLSsgKiBTdXBwb3J0IGZv ciBJbnRlbCBBRVMtTkkgaW50cnVjdGlvbiBzZXQKLSsgKiAgIEF1dGhvcjogSHVhbmcgWWluZyA8 eWluZy5odWFuZ0BpbnRlbC5jb20+Ci0rICoKLSsgKiBJbnRlbCBBRVMtTkkgaXMgYSBuZXcgc2V0 IG9mIFNpbmdsZSBJbnN0cnVjdGlvbiBNdWx0aXBsZSBEYXRhCi0rICogKFNJTUQpIGluc3RydWN0 aW9ucyB0aGF0IGFyZSBnb2luZyB0byBiZSBpbnRyb2R1Y2VkIGluIHRoZSBuZXh0Ci0rICogZ2Vu ZXJhdGlvbiBvZiBJbnRlbCBwcm9jZXNzb3IsIGFzIG9mIDIwMDkuIFRoZXNlIGluc3RydWN0aW9u cwotKyAqIGVuYWJsZSBmYXN0IGFuZCBzZWN1cmUgZGF0YSBlbmNyeXB0aW9uIGFuZCBkZWNyeXB0 aW9uLCB1c2luZyB0aGUKLSsgKiBBZHZhbmNlZCBFbmNyeXB0aW9uIFN0YW5kYXJkIChBRVMpLCBk ZWZpbmVkIGJ5IEZJUFMgUHVibGljYXRpb24KLSsgKiBudW1iZXIgMTk3LiAgVGhlIGFyY2hpdGVj dHVyZSBpbnRyb2R1Y2VzIHNpeCBpbnN0cnVjdGlvbnMgdGhhdAotKyAqIG9mZmVyIGZ1bGwgaGFy ZHdhcmUgc3VwcG9ydCBmb3IgQUVTLiBGb3VyIG9mIHRoZW0gc3VwcG9ydCBoaWdoCi0rICogcGVy Zm9ybWFuY2UgZGF0YSBlbmNyeXB0aW9uIGFuZCBkZWNyeXB0aW9uLCBhbmQgdGhlIG90aGVyIHR3 bwotKyAqIGluc3RydWN0aW9ucyBzdXBwb3J0IHRoZSBBRVMga2V5IGV4cGFuc2lvbiBwcm9jZWR1 cmUuCi0rICoKLSsgKiBUaGUgd2hpdGUgcGFwZXIgY2FuIGJlIGRvd25sb2FkZWQgZnJvbToKLSsg KiAgIGh0dHA6Ly9zb2Z0d2FyZWNvbW11bml0eS5pbnRlbC5jb20vaXNuL2Rvd25sb2Fkcy9pbnRl bGF2eC9BRVMtSW5zdHJ1Y3Rpb25zLVNldF9XUC5wZGYKLSsgKgotKyAqIFRoaXMgZmlsZSBpcyBi YXNlZCBvbiBlbmdpbmVzL2VfcGFkbG9jay5jCi0rICovCi0rCi0rLyogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsg KiBDb3B5cmlnaHQgKGMpIDE5OTktMjAwMSBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0 cyByZXNlcnZlZC4KLSsgKgotKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKyAqIGFyZSBt ZXQ6Ci0rICoKLSsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSsgKgotKyAqIDIuIFJlZGlzdHJp YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0 Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu ZyBkaXNjbGFpbWVyIGluCi0rICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotKyAqICAgIGRpc3RyaWJ1dGlvbi4KLSsgKgotKyAq IDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ug b2YgdGhpcwotKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25v d2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxv cGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NM IFRvb2xraXQuIChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCi0rICoKLSsgKiA0LiBUaGUgbmFt ZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVz ZWQgdG8KLSsgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRo aXMgc29mdHdhcmUgd2l0aG91dAotKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9y IHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKLSsgKiAgICBsaWNlbnNpbmdAT3Bl blNTTC5vcmcuCi0rICoKLSsgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2Fy ZSBtYXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIKLSsgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBh cHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCi0rICogICAgcGVybWlz c2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0LgotKyAqCi0rICogNi4gUmVkaXN0cmlidXRpb25z IG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZwotKyAqICAg IGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUg ZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBP cGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cuT3BlblNTTC5vcmcvKSIKLSsgKgotKyAqIFRISVMg U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5E IEFOWQotKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSsgKiBQVVJQT1NFIEFSRSBESVND TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgotKyAqIElU UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF TlRBTCwKLSsgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo SU5DTFVESU5HLCBCVVQKLSsgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSsgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKLSsgKiBTVFJJQ1Qg TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0r ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW RU4gSUYgQURWSVNFRAotKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSsg KiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotKyAqCi0rICogVGhpcyBwcm9kdWN0IGluY2x1ZGVzIGNyeXB0b2dyYXBo aWMgc29mdHdhcmUgd3JpdHRlbiBieSBFcmljIFlvdW5nCi0rICogKGVheUBjcnlwdHNvZnQuY29t KS4gIFRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSB3cml0dGVuIGJ5IFRpbQotKyAqIEh1 ZHNvbiAodGpoQGNyeXB0c29mdC5jb20pLgotKyAqCi0rICovCi0rCi0rCi0rI2luY2x1ZGUgPG9w ZW5zc2wvb3BlbnNzbGNvbmYuaD4KLSsKLSsjaWYgIWRlZmluZWQoT1BFTlNTTF9OT19IVykgJiYg IWRlZmluZWQoT1BFTlNTTF9OT19IV19BRVNfTkkpICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fQUVT KQotKwotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRlICJjcnlwdGxpYi5oIgotKyNpbmNs dWRlIDxvcGVuc3NsL2Rzby5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2VuZ2luZS5oPgotKyNpbmNs dWRlIDxvcGVuc3NsL2V2cC5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2Flcy5oPgotKyNpbmNsdWRl IDxvcGVuc3NsL2Vyci5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL21vZGVzLmg+Ci0rCi0rLyogQUVT LU5JIGlzIGF2YWlsYWJsZSAqT05MWSogb24gc29tZSB4ODYgQ1BVcy4gIE5vdCBvbmx5IHRoYXQg aXQKLSsgICBkb2Vzbid0IGV4aXN0IGVsc2V3aGVyZSwgYnV0IGl0IGV2ZW4gY2FuJ3QgYmUgY29t cGlsZWQgb24gb3RoZXIKLSsgICBwbGF0Zm9ybXMhICovCi0rI3VuZGVmIENPTVBJTEVfSFdfQUVT TkkKLSsjaWYgKGRlZmluZWQoX194ODZfNjQpIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgXAot KyAgICAgZGVmaW5lZChfTV9BTUQ2NCkgfHwgZGVmaW5lZChfTV9YNjQpIHx8IFwKLSsgICAgIGRl ZmluZWQoT1BFTlNTTF9JQTMyX1NTRTIpKSAmJiAhZGVmaW5lZChPUEVOU1NMX05PX0FTTSkKLSsj ZGVmaW5lIENPTVBJTEVfSFdfQUVTTkkKLStzdGF0aWMgRU5HSU5FICpFTkdJTkVfYWVzbmkgKHZv aWQpOwotKyNlbmRpZgotKwotK3ZvaWQgRU5HSU5FX2xvYWRfYWVzbmkgKHZvaWQpCi0rewotKy8q IE9uIG5vbi14ODYgQ1BVcyBpdCBqdXN0IHJldHVybnMuICovCi0rI2lmZGVmIENPTVBJTEVfSFdf QUVTTkkKLSsJRU5HSU5FICp0b2FkZCA9IEVOR0lORV9hZXNuaSgpOwotKwlpZiAoIXRvYWRkKQot KwkJcmV0dXJuOwotKwlFTkdJTkVfYWRkICh0b2FkZCk7Ci0rCUVOR0lORV9yZWdpc3Rlcl9jb21w bGV0ZSAodG9hZGQpOwotKwlFTkdJTkVfZnJlZSAodG9hZGQpOwotKwlFUlJfY2xlYXJfZXJyb3Ig KCk7Ci0rI2VuZGlmCi0rfQotKwotKyNpZmRlZiBDT01QSUxFX0hXX0FFU05JCi0raW50IGFlc25p X3NldF9lbmNyeXB0X2tleShjb25zdCB1bnNpZ25lZCBjaGFyICp1c2VyS2V5LCBpbnQgYml0cywK LSsJCQkgICAgICBBRVNfS0VZICprZXkpOwotK2ludCBhZXNuaV9zZXRfZGVjcnlwdF9rZXkoY29u c3QgdW5zaWduZWQgY2hhciAqdXNlcktleSwgaW50IGJpdHMsCi0rCQkJICAgICAgQUVTX0tFWSAq a2V5KTsKLSsKLSt2b2lkIGFlc25pX2VuY3J5cHQoY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHVu c2lnbmVkIGNoYXIgKm91dCwKLSsJCSAgICAgICBjb25zdCBBRVNfS0VZICprZXkpOwotK3ZvaWQg YWVzbmlfZGVjcnlwdChjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgdW5zaWduZWQgY2hhciAqb3V0 LAotKwkJICAgICAgIGNvbnN0IEFFU19LRVkgKmtleSk7Ci0rCi0rdm9pZCBhZXNuaV9lY2JfZW5j cnlwdChjb25zdCB1bnNpZ25lZCBjaGFyICppbiwKLSsJCQkgICB1bnNpZ25lZCBjaGFyICpvdXQs Ci0rCQkJICAgc2l6ZV90IGxlbmd0aCwKLSsJCQkgICBjb25zdCBBRVNfS0VZICprZXksCi0rCQkJ ICAgaW50IGVuYyk7Ci0rdm9pZCBhZXNuaV9jYmNfZW5jcnlwdChjb25zdCB1bnNpZ25lZCBjaGFy ICppbiwKLSsJCQkgICB1bnNpZ25lZCBjaGFyICpvdXQsCi0rCQkJICAgc2l6ZV90IGxlbmd0aCwK LSsJCQkgICBjb25zdCBBRVNfS0VZICprZXksCi0rCQkJICAgdW5zaWduZWQgY2hhciAqaXZlYywg aW50IGVuYyk7Ci0rCi0rLyogRnVuY3Rpb24gZm9yIEVOR0lORSBkZXRlY3Rpb24gYW5kIGNvbnRy b2wgKi8KLStzdGF0aWMgaW50IGFlc25pX2luaXQoRU5HSU5FICplKTsKLSsKLSsvKiBDaXBoZXIg U3R1ZmYgKi8KLStzdGF0aWMgaW50IGFlc25pX2NpcGhlcnMoRU5HSU5FICplLCBjb25zdCBFVlBf Q0lQSEVSICoqY2lwaGVyLAotKwkJCQljb25zdCBpbnQgKipuaWRzLCBpbnQgbmlkKTsKLSsKLSsj ZGVmaW5lIEFFU05JX01JTl9BTElHTgkxNgotKyNkZWZpbmUgQUVTTklfQUxJR04oeCkgXAotKwko KHZvaWQgKikoKCh1bnNpZ25lZCBsb25nKSh4KStBRVNOSV9NSU5fQUxJR04tMSkmfihBRVNOSV9N SU5fQUxJR04tMSkpKQotKwotKy8qIEVuZ2luZSBuYW1lcyAqLwotK3N0YXRpYyBjb25zdCBjaGFy ICAgYWVzbmlfaWRbXSA9ICJhZXNuaSIsCi0rCQkgICAgYWVzbmlfbmFtZVtdID0gIkludGVsIEFF Uy1OSSBlbmdpbmUiLAotKwkJICAgIG5vX2Flc25pX25hbWVbXSA9ICJJbnRlbCBBRVMtTkkgZW5n aW5lIChuby1hZXNuaSkiOwotKwotKy8qID09PT09IEVuZ2luZSAibWFuYWdlbWVudCIgZnVuY3Rp b25zID09PT09ICovCi0rCi0rI2lmIGRlZmluZWQoX1dJTjMyKQotK3R5cGVkZWYgdW5zaWduZWQg X19pbnQ2NCBJQTMyQ0FQOwotKyNlbHNlCi0rdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgSUEz MkNBUDsKLSsjZW5kaWYKLSsKLSsvKiBQcmVwYXJlIHRoZSBFTkdJTkUgc3RydWN0dXJlIGZvciBy ZWdpc3RyYXRpb24gKi8KLStzdGF0aWMgaW50Ci0rYWVzbmlfYmluZF9oZWxwZXIoRU5HSU5FICpl KQotK3sKLSsJaW50IGVuZ2FnZTsKLSsJaWYgKHNpemVvZihPUEVOU1NMX2lhMzJjYXBfUCkgPiA0 KSB7Ci0rCQllbmdhZ2UgPSAoT1BFTlNTTF9pYTMyY2FwX1AgPj4gNTcpICYgMTsKLSsJfSBlbHNl IHsKLSsJCUlBMzJDQVAgT1BFTlNTTF9pYTMyX2NwdWlkKHZvaWQpOwotKwkJZW5nYWdlID0gKE9Q RU5TU0xfaWEzMl9jcHVpZCgpID4+IDU3KSAmIDE7Ci0rCX0KLSsKLSsJLyogUmVnaXN0ZXIgZXZl cnl0aGluZyBvciByZXR1cm4gd2l0aCBhbiBlcnJvciAqLwotKwlpZiAoIUVOR0lORV9zZXRfaWQo ZSwgYWVzbmlfaWQpIHx8Ci0rCSAgICAhRU5HSU5FX3NldF9uYW1lKGUsIGVuZ2FnZSA/IGFlc25p X25hbWUgOiBub19hZXNuaV9uYW1lKSB8fAotKwotKwkgICAgIUVOR0lORV9zZXRfaW5pdF9mdW5j dGlvbihlLCBhZXNuaV9pbml0KSB8fAotKwkgICAgKGVuZ2FnZSAmJiAhRU5HSU5FX3NldF9jaXBo ZXJzIChlLCBhZXNuaV9jaXBoZXJzKSkKLSsJICAgICkKLSsJCXJldHVybiAwOwotKwotKwkvKiBF dmVyeXRoaW5nIGxvb2tzIGdvb2QgKi8KLSsJcmV0dXJuIDE7Ci0rfQotKwotKy8qIENvbnN0cnVj dG9yICovCi0rc3RhdGljIEVOR0lORSAqCi0rRU5HSU5FX2Flc25pKHZvaWQpCi0rewotKwlFTkdJ TkUgKmVuZyA9IEVOR0lORV9uZXcoKTsKLSsKLSsJaWYgKCFlbmcpIHsKLSsJCXJldHVybiBOVUxM OwotKwl9Ci0rCi0rCWlmICghYWVzbmlfYmluZF9oZWxwZXIoZW5nKSkgewotKwkJRU5HSU5FX2Zy ZWUoZW5nKTsKLSsJCXJldHVybiBOVUxMOwotKwl9Ci0rCi0rCXJldHVybiBlbmc7Ci0rfQotKwot Ky8qIENoZWNrIGF2YWlsYWJpbGl0eSBvZiB0aGUgZW5naW5lICovCi0rc3RhdGljIGludAotK2Fl c25pX2luaXQoRU5HSU5FICplKQotK3sKLSsJcmV0dXJuIDE7Ci0rfQotKwotKyNpZiBkZWZpbmVk KE5JRF9hZXNfMTI4X2NmYjEyOCkgJiYgISBkZWZpbmVkIChOSURfYWVzXzEyOF9jZmIpCi0rI2Rl ZmluZSBOSURfYWVzXzEyOF9jZmIJTklEX2Flc18xMjhfY2ZiMTI4Ci0rI2VuZGlmCi0rCi0rI2lm IGRlZmluZWQoTklEX2Flc18xMjhfb2ZiMTI4KSAmJiAhIGRlZmluZWQgKE5JRF9hZXNfMTI4X29m YikKLSsjZGVmaW5lIE5JRF9hZXNfMTI4X29mYglOSURfYWVzXzEyOF9vZmIxMjgKLSsjZW5kaWYK LSsKLSsjaWYgZGVmaW5lZChOSURfYWVzXzE5Ml9jZmIxMjgpICYmICEgZGVmaW5lZCAoTklEX2Fl c18xOTJfY2ZiKQotKyNkZWZpbmUgTklEX2Flc18xOTJfY2ZiCU5JRF9hZXNfMTkyX2NmYjEyOAot KyNlbmRpZgotKwotKyNpZiBkZWZpbmVkKE5JRF9hZXNfMTkyX29mYjEyOCkgJiYgISBkZWZpbmVk IChOSURfYWVzXzE5Ml9vZmIpCi0rI2RlZmluZSBOSURfYWVzXzE5Ml9vZmIJTklEX2Flc18xOTJf b2ZiMTI4Ci0rI2VuZGlmCi0rCi0rI2lmIGRlZmluZWQoTklEX2Flc18yNTZfY2ZiMTI4KSAmJiAh IGRlZmluZWQgKE5JRF9hZXNfMjU2X2NmYikKLSsjZGVmaW5lIE5JRF9hZXNfMjU2X2NmYglOSURf YWVzXzI1Nl9jZmIxMjgKLSsjZW5kaWYKLSsKLSsjaWYgZGVmaW5lZChOSURfYWVzXzI1Nl9vZmIx MjgpICYmICEgZGVmaW5lZCAoTklEX2Flc18yNTZfb2ZiKQotKyNkZWZpbmUgTklEX2Flc18yNTZf b2ZiCU5JRF9hZXNfMjU2X29mYjEyOAotKyNlbmRpZgotKwotKy8qIExpc3Qgb2Ygc3VwcG9ydGVk IGNpcGhlcnMuICovCi0rc3RhdGljIGludCBhZXNuaV9jaXBoZXJfbmlkc1tdID0gewotKwlOSURf YWVzXzEyOF9lY2IsCi0rCU5JRF9hZXNfMTI4X2NiYywKLSsJTklEX2Flc18xMjhfY2ZiLAotKwlO SURfYWVzXzEyOF9vZmIsCi0rCi0rCU5JRF9hZXNfMTkyX2VjYiwKLSsJTklEX2Flc18xOTJfY2Jj LAotKwlOSURfYWVzXzE5Ml9jZmIsCi0rCU5JRF9hZXNfMTkyX29mYiwKLSsKLSsJTklEX2Flc18y NTZfZWNiLAotKwlOSURfYWVzXzI1Nl9jYmMsCi0rCU5JRF9hZXNfMjU2X2NmYiwKLSsJTklEX2Fl c18yNTZfb2ZiLAotK307Ci0rc3RhdGljIGludCBhZXNuaV9jaXBoZXJfbmlkc19udW0gPQotKwko c2l6ZW9mKGFlc25pX2NpcGhlcl9uaWRzKS9zaXplb2YoYWVzbmlfY2lwaGVyX25pZHNbMF0pKTsK LSsKLSt0eXBlZGVmIHN0cnVjdAotK3sKLSsJQUVTX0tFWSBrczsKLSsJdW5zaWduZWQgaW50IF9w YWQxWzNdOwotK30gQUVTTklfS0VZOwotKwotK3N0YXRpYyBpbnQKLSthZXNuaV9pbml0X2tleShF VlBfQ0lQSEVSX0NUWCAqY3R4LCBjb25zdCB1bnNpZ25lZCBjaGFyICp1c2VyX2tleSwKLSsJCSAg ICBjb25zdCB1bnNpZ25lZCBjaGFyICppdiwgaW50IGVuYykKLSt7Ci0rCWludCByZXQ7Ci0rCUFF U19LRVkgKmtleSA9IEFFU05JX0FMSUdOKGN0eC0+Y2lwaGVyX2RhdGEpOwotKwotKwlpZiAoKGN0 eC0+Y2lwaGVyLT5mbGFncyAmIEVWUF9DSVBIX01PREUpID09IEVWUF9DSVBIX0NGQl9NT0RFCi0r CSAgICB8fCAoY3R4LT5jaXBoZXItPmZsYWdzICYgRVZQX0NJUEhfTU9ERSkgPT0gRVZQX0NJUEhf T0ZCX01PREUKLSsJICAgIHx8IGVuYykKLSsJCXJldD1hZXNuaV9zZXRfZW5jcnlwdF9rZXkodXNl cl9rZXksIGN0eC0+a2V5X2xlbiAqIDgsIGtleSk7Ci0rCWVsc2UKLSsJCXJldD1hZXNuaV9zZXRf ZGVjcnlwdF9rZXkodXNlcl9rZXksIGN0eC0+a2V5X2xlbiAqIDgsIGtleSk7Ci0rCi0rCWlmKHJl dCA8IDApIHsKLSsJCUVWUGVycihFVlBfRl9BRVNOSV9JTklUX0tFWSxFVlBfUl9BRVNfS0VZX1NF VFVQX0ZBSUxFRCk7Ci0rCQlyZXR1cm4gMDsKLSsJfQotKwotKwlyZXR1cm4gMTsKLSt9Ci0rCi0r c3RhdGljIGludCBhZXNuaV9jaXBoZXJfZWNiKEVWUF9DSVBIRVJfQ1RYICpjdHgsIHVuc2lnbmVk IGNoYXIgKm91dCwKLSsJCSBjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgc2l6ZV90IGlubCkKLSt7 CUFFU19LRVkgKmtleSA9IEFFU05JX0FMSUdOKGN0eC0+Y2lwaGVyX2RhdGEpOwotKwlhZXNuaV9l Y2JfZW5jcnlwdChpbiwgb3V0LCBpbmwsIGtleSwgY3R4LT5lbmNyeXB0KTsKLSsJcmV0dXJuIDE7 Ci0rfQotK3N0YXRpYyBpbnQgYWVzbmlfY2lwaGVyX2NiYyhFVlBfQ0lQSEVSX0NUWCAqY3R4LCB1 bnNpZ25lZCBjaGFyICpvdXQsCi0rCQkgY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHNpemVfdCBp bmwpCi0rewlBRVNfS0VZICprZXkgPSBBRVNOSV9BTElHTihjdHgtPmNpcGhlcl9kYXRhKTsKLSsJ YWVzbmlfY2JjX2VuY3J5cHQoaW4sIG91dCwgaW5sLCBrZXksCi0rCQkJICAgICAgY3R4LT5pdiwg Y3R4LT5lbmNyeXB0KTsKLSsJcmV0dXJuIDE7Ci0rfQotK3N0YXRpYyBpbnQgYWVzbmlfY2lwaGVy X2NmYihFVlBfQ0lQSEVSX0NUWCAqY3R4LCB1bnNpZ25lZCBjaGFyICpvdXQsCi0rCQkgY29uc3Qg dW5zaWduZWQgY2hhciAqaW4sIHNpemVfdCBpbmwpCi0rewlBRVNfS0VZICprZXkgPSBBRVNOSV9B TElHTihjdHgtPmNpcGhlcl9kYXRhKTsKLSsJQ1JZUFRPX2NmYjEyOF9lbmNyeXB0KGluLCBvdXQs IGlubCwga2V5LCBjdHgtPml2LAotKwkJCQkmY3R4LT5udW0sIGN0eC0+ZW5jcnlwdCwKLSsJCQkJ KGJsb2NrMTI4X2YpYWVzbmlfZW5jcnlwdCk7Ci0rCXJldHVybiAxOwotK30KLStzdGF0aWMgaW50 IGFlc25pX2NpcGhlcl9vZmIoRVZQX0NJUEhFUl9DVFggKmN0eCwgdW5zaWduZWQgY2hhciAqb3V0 LAotKwkJIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCBzaXplX3QgaW5sKQotK3sJQUVTX0tFWSAq a2V5ID0gQUVTTklfQUxJR04oY3R4LT5jaXBoZXJfZGF0YSk7Ci0rCUNSWVBUT19vZmIxMjhfZW5j cnlwdChpbiwgb3V0LCBpbmwsIGtleSwgY3R4LT5pdiwKLSsJCQkJJmN0eC0+bnVtLCAoYmxvY2sx MjhfZilhZXNuaV9lbmNyeXB0KTsKLSsJcmV0dXJuIDE7Ci0rfQotKwotKyNkZWZpbmUgQUVTX0JM T0NLX1NJWkUJCTE2Ci0rCi0rI2RlZmluZSBFVlBfQ0lQSEVSX2Jsb2NrX3NpemVfRUNCCUFFU19C TE9DS19TSVpFCi0rI2RlZmluZSBFVlBfQ0lQSEVSX2Jsb2NrX3NpemVfQ0JDCUFFU19CTE9DS19T SVpFCi0rI2RlZmluZSBFVlBfQ0lQSEVSX2Jsb2NrX3NpemVfT0ZCCTEKLSsjZGVmaW5lIEVWUF9D SVBIRVJfYmxvY2tfc2l6ZV9DRkIJMQotKwotKy8qIERlY2xhcmluZyBzbyBtYW55IGNpcGhlcnMg YnkgaGFuZCB3b3VsZCBiZSBhIHBhaW4uCi0rICAgSW5zdGVhZCBpbnRyb2R1Y2UgYSBiaXQgb2Yg cHJlcHJvY2Vzc29yIG1hZ2ljIDotKSAqLwotKyNkZWZpbmUJREVDTEFSRV9BRVNfRVZQKGtzaXpl LGxtb2RlLHVtb2RlKQlcCi0rc3RhdGljIGNvbnN0IEVWUF9DSVBIRVIgYWVzbmlfIyNrc2l6ZSMj XyMjbG1vZGUgPSB7CVwKLSsJTklEX2Flc18jI2tzaXplIyNfIyNsbW9kZSwJCQlcCi0rCUVWUF9D SVBIRVJfYmxvY2tfc2l6ZV8jI3Vtb2RlLAkJCVwKLSsJa3NpemUgLyA4LAkJCQkJXAotKwlBRVNf QkxPQ0tfU0laRSwJCQkJCVwKLSsJMCB8IEVWUF9DSVBIXyMjdW1vZGUjI19NT0RFLAkJCVwKLSsJ YWVzbmlfaW5pdF9rZXksCQkJCVwKLSsJYWVzbmlfY2lwaGVyXyMjbG1vZGUsCQkJCVwKLSsJTlVM TCwJCQkJCQlcCi0rCXNpemVvZihBRVNOSV9LRVkpLAkJCQlcCi0rCUVWUF9DSVBIRVJfc2V0X2Fz bjFfaXYsCQkJCVwKLSsJRVZQX0NJUEhFUl9nZXRfYXNuMV9pdiwJCQkJXAotKwlOVUxMLAkJCQkJ CVwKLSsJTlVMTAkJCQkJCVwKLSt9Ci0rCi0rREVDTEFSRV9BRVNfRVZQKDEyOCxlY2IsRUNCKTsK LStERUNMQVJFX0FFU19FVlAoMTI4LGNiYyxDQkMpOwotK0RFQ0xBUkVfQUVTX0VWUCgxMjgsY2Zi LENGQik7Ci0rREVDTEFSRV9BRVNfRVZQKDEyOCxvZmIsT0ZCKTsKLSsKLStERUNMQVJFX0FFU19F VlAoMTkyLGVjYixFQ0IpOwotK0RFQ0xBUkVfQUVTX0VWUCgxOTIsY2JjLENCQyk7Ci0rREVDTEFS RV9BRVNfRVZQKDE5MixjZmIsQ0ZCKTsKLStERUNMQVJFX0FFU19FVlAoMTkyLG9mYixPRkIpOwot KwotK0RFQ0xBUkVfQUVTX0VWUCgyNTYsZWNiLEVDQik7Ci0rREVDTEFSRV9BRVNfRVZQKDI1Nixj YmMsQ0JDKTsKLStERUNMQVJFX0FFU19FVlAoMjU2LGNmYixDRkIpOwotK0RFQ0xBUkVfQUVTX0VW UCgyNTYsb2ZiLE9GQik7Ci0rCi0rc3RhdGljIGludAotK2Flc25pX2NpcGhlcnMgKEVOR0lORSAq ZSwgY29uc3QgRVZQX0NJUEhFUiAqKmNpcGhlciwKLSsJCSAgICAgIGNvbnN0IGludCAqKm5pZHMs IGludCBuaWQpCi0rewotKwkvKiBObyBzcGVjaWZpYyBjaXBoZXIgPT4gcmV0dXJuIGEgbGlzdCBv ZiBzdXBwb3J0ZWQgbmlkcyAuLi4gKi8KLSsJaWYgKCFjaXBoZXIpIHsKLSsJCSpuaWRzID0gYWVz bmlfY2lwaGVyX25pZHM7Ci0rCQlyZXR1cm4gYWVzbmlfY2lwaGVyX25pZHNfbnVtOwotKwl9Ci0r Ci0rCS8qIC4uLiBvciB0aGUgcmVxdWVzdGVkICJjaXBoZXIiIG90aGVyd2lzZSAqLwotKwlzd2l0 Y2ggKG5pZCkgewotKwljYXNlIE5JRF9hZXNfMTI4X2VjYjoKLSsJCSpjaXBoZXIgPSAmYWVzbmlf MTI4X2VjYjsKLSsJCWJyZWFrOwotKwljYXNlIE5JRF9hZXNfMTI4X2NiYzoKLSsJCSpjaXBoZXIg PSAmYWVzbmlfMTI4X2NiYzsKLSsJCWJyZWFrOwotKwljYXNlIE5JRF9hZXNfMTI4X2NmYjoKLSsJ CSpjaXBoZXIgPSAmYWVzbmlfMTI4X2NmYjsKLSsJCWJyZWFrOwotKwljYXNlIE5JRF9hZXNfMTI4 X29mYjoKLSsJCSpjaXBoZXIgPSAmYWVzbmlfMTI4X29mYjsKLSsJCWJyZWFrOwotKwotKwljYXNl IE5JRF9hZXNfMTkyX2VjYjoKLSsJCSpjaXBoZXIgPSAmYWVzbmlfMTkyX2VjYjsKLSsJCWJyZWFr OwotKwljYXNlIE5JRF9hZXNfMTkyX2NiYzoKLSsJCSpjaXBoZXIgPSAmYWVzbmlfMTkyX2NiYzsK LSsJCWJyZWFrOwotKwljYXNlIE5JRF9hZXNfMTkyX2NmYjoKLSsJCSpjaXBoZXIgPSAmYWVzbmlf MTkyX2NmYjsKLSsJCWJyZWFrOwotKwljYXNlIE5JRF9hZXNfMTkyX29mYjoKLSsJCSpjaXBoZXIg PSAmYWVzbmlfMTkyX29mYjsKLSsJCWJyZWFrOwotKwotKwljYXNlIE5JRF9hZXNfMjU2X2VjYjoK LSsJCSpjaXBoZXIgPSAmYWVzbmlfMjU2X2VjYjsKLSsJCWJyZWFrOwotKwljYXNlIE5JRF9hZXNf MjU2X2NiYzoKLSsJCSpjaXBoZXIgPSAmYWVzbmlfMjU2X2NiYzsKLSsJCWJyZWFrOwotKwljYXNl IE5JRF9hZXNfMjU2X2NmYjoKLSsJCSpjaXBoZXIgPSAmYWVzbmlfMjU2X2NmYjsKLSsJCWJyZWFr OwotKwljYXNlIE5JRF9hZXNfMjU2X29mYjoKLSsJCSpjaXBoZXIgPSAmYWVzbmlfMjU2X29mYjsK LSsJCWJyZWFrOwotKwotKwlkZWZhdWx0OgotKwkJLyogU29ycnksIHdlIGRvbid0IHN1cHBvcnQg dGhpcyBOSUQgKi8KLSsJCSpjaXBoZXIgPSBOVUxMOwotKwkJcmV0dXJuIDA7Ci0rCX0KLSsKLSsJ cmV0dXJuIDE7Ci0rfQotKwotKyNlbmRpZiAvKiBDT01QSUxFX0hXX0FFU05JICovCi0rI2VuZGlm IC8qICFkZWZpbmVkKE9QRU5TU0xfTk9fSFcpICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fSFdfQUVT TkkpICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fQUVTKSAqLwotZGlmZiAtdXAgb3BlbnNzbC0xLjAu MC1iZXRhNC9jcnlwdG8vZW5naW5lL2VuZ19hbGwuYy5hZXNuaSBvcGVuc3NsLTEuMC4wLWJldGE0 L2NyeXB0by9lbmdpbmUvZW5nX2FsbC5jCi0tLS0gb3BlbnNzbC0xLjAuMC1iZXRhNC9jcnlwdG8v ZW5naW5lL2VuZ19hbGwuYy5hZXNuaQkyMDEwLTAxLTA3IDIzOjM4OjMxLjAwMDAwMDAwMCArMDEw MAotKysrIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2VuZ2luZS9lbmdfYWxsLmMJMjAxMC0w MS0xMiAyMjoxODowNi4wMDAwMDAwMDAgKzAxMDAKLUBAIC04NSw2ICs4NSw5IEBAIHZvaWQgRU5H SU5FX2xvYWRfYnVpbHRpbl9lbmdpbmVzKHZvaWQpCi0gI2lmICFkZWZpbmVkKE9QRU5TU0xfTk9f SFcpICYmIChkZWZpbmVkKF9fT3BlbkJTRF9fKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBk ZWZpbmVkKEhBVkVfQ1JZUFRPREVWKSkKLSAJRU5HSU5FX2xvYWRfY3J5cHRvZGV2KCk7Ci0gI2Vu ZGlmCi0rI2lmICFkZWZpbmVkKE9QRU5TU0xfTk9fSFcpICYmICFkZWZpbmVkKE9QRU5TU0xfTk9f SFdfQUVTTkkpCi0rCUVOR0lORV9sb2FkX2Flc25pKCk7Ci0rI2VuZGlmCi0gCUVOR0lORV9sb2Fk X2R5bmFtaWMoKTsKLSAjaWZuZGVmIE9QRU5TU0xfTk9fU1RBVElDX0VOR0lORQotICNpZm5kZWYg T1BFTlNTTF9OT19IVwotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMC1iZXRhNC9jcnlwdG8vZW5naW5l L2VuZ2luZS5oLmFlc25pIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2VuZ2luZS9lbmdpbmUu aAotLS0tIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2VuZ2luZS9lbmdpbmUuaC5hZXNuaQky MDEwLTAxLTA3IDIzOjM4OjMwLjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjAtYmV0 YTQvY3J5cHRvL2VuZ2luZS9lbmdpbmUuaAkyMDEwLTAxLTEyIDIyOjE4OjA2LjAwMDAwMDAwMCAr MDEwMAotQEAgLTM0Miw2ICszNDIsNyBAQCB2b2lkIEVOR0lORV9sb2FkX2dvc3Qodm9pZCk7Ci0g I2VuZGlmCi0gI2VuZGlmCi0gdm9pZCBFTkdJTkVfbG9hZF9jcnlwdG9kZXYodm9pZCk7Ci0rdm9p ZCBFTkdJTkVfbG9hZF9hZXNuaSh2b2lkKTsKLSB2b2lkIEVOR0lORV9sb2FkX2J1aWx0aW5fZW5n aW5lcyh2b2lkKTsKLSAKLSAvKiBHZXQgYW5kIHNldCBnbG9iYWwgZmxhZ3MgKEVOR0lORV9UQUJM RV9GTEFHXyoqKikgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbgotZGlmZiAtdXAgb3BlbnNzbC0xLjAu MC1iZXRhNC9jcnlwdG8vZW5naW5lL01ha2VmaWxlLmFlc25pIG9wZW5zc2wtMS4wLjAtYmV0YTQv Y3J5cHRvL2VuZ2luZS9NYWtlZmlsZQotLS0tIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2Vu Z2luZS9NYWtlZmlsZS5hZXNuaQkyMDA4LTA2LTA0IDEzOjAxOjI5LjAwMDAwMDAwMCArMDIwMAot KysrIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2VuZ2luZS9NYWtlZmlsZQkyMDEwLTAxLTEy IDIyOjE4OjA2LjAwMDAwMDAwMCArMDEwMAotQEAgLTIxLDEyICsyMSwxNCBAQCBMSUJTUkM9IGVu Z19lcnIuYyBlbmdfbGliLmMgZW5nX2xpc3QuYyBlCi0gCWVuZ190YWJsZS5jIGVuZ19wa2V5LmMg ZW5nX2ZhdC5jIGVuZ19hbGwuYyBcCi0gCXRiX3JzYS5jIHRiX2RzYS5jIHRiX2VjZHNhLmMgdGJf ZGguYyB0Yl9lY2RoLmMgdGJfcmFuZC5jIHRiX3N0b3JlLmMgXAotIAl0Yl9jaXBoZXIuYyB0Yl9k aWdlc3QuYyB0Yl9wa21ldGguYyB0Yl9hc25tdGguYyBcCi0tCWVuZ19vcGVuc3NsLmMgZW5nX2Nu Zi5jIGVuZ19keW4uYyBlbmdfY3J5cHRvZGV2LmMKLSsJZW5nX29wZW5zc2wuYyBlbmdfY25mLmMg ZW5nX2R5bi5jIGVuZ19jcnlwdG9kZXYuYyBcCi0rCWVuZ19hZXNuaS5jCi0gTElCT0JKPSBlbmdf ZXJyLm8gZW5nX2xpYi5vIGVuZ19saXN0Lm8gZW5nX2luaXQubyBlbmdfY3RybC5vIFwKLSAJZW5n X3RhYmxlLm8gZW5nX3BrZXkubyBlbmdfZmF0Lm8gZW5nX2FsbC5vIFwKLSAJdGJfcnNhLm8gdGJf ZHNhLm8gdGJfZWNkc2EubyB0Yl9kaC5vIHRiX2VjZGgubyB0Yl9yYW5kLm8gdGJfc3RvcmUubyBc Ci0gCXRiX2NpcGhlci5vIHRiX2RpZ2VzdC5vIHRiX3BrbWV0aC5vIHRiX2Fzbm10aC5vIFwKLS0J ZW5nX29wZW5zc2wubyBlbmdfY25mLm8gZW5nX2R5bi5vIGVuZ19jcnlwdG9kZXYubwotKwllbmdf b3BlbnNzbC5vIGVuZ19jbmYubyBlbmdfZHluLm8gZW5nX2NyeXB0b2Rldi5vIFwKLSsJZW5nX2Fl c25pLm8KLSAKLSBTUkM9ICQoTElCU1JDKQotIAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMC1iZXRh NC9jcnlwdG8vZXZwL2V2cF9lcnIuYy5hZXNuaSBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9l dnAvZXZwX2Vyci5jCi0tLS0gb3BlbnNzbC0xLjAuMC1iZXRhNC9jcnlwdG8vZXZwL2V2cF9lcnIu Yy5hZXNuaQkyMDEwLTAxLTA3IDIzOjM4OjMxLjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wt MS4wLjAtYmV0YTQvY3J5cHRvL2V2cC9ldnBfZXJyLmMJMjAxMC0wMS0xMiAyMjoxODowNi4wMDAw MDAwMDAgKzAxMDAKLUBAIC0xLDYgKzEsNiBAQAotIC8qIGNyeXB0by9ldnAvZXZwX2Vyci5jICov Ci0gLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0gKiBDb3B5cmlnaHQgKGMpIDE5OTktMjAwOCBUaGUgT3BlblNT TCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKiBDb3B5cmlnaHQgKGMpIDE5OTkt MjAwOSBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAgKgotICAq IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg b3Igd2l0aG91dAotICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0 IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotQEAgLTcwLDYgKzcwLDcgQEAKLSAKLSBzdGF0aWMg RVJSX1NUUklOR19EQVRBIEVWUF9zdHJfZnVuY3RzW109Ci0gCXsKLSt7RVJSX0ZVTkMoRVZQX0Zf QUVTTklfSU5JVF9LRVkpLAkiQUVTTklfSU5JVF9LRVkifSwKLSB7RVJSX0ZVTkMoRVZQX0ZfQUVT X0lOSVRfS0VZKSwJIkFFU19JTklUX0tFWSJ9LAotIHtFUlJfRlVOQyhFVlBfRl9DQU1FTExJQV9J TklUX0tFWSksCSJDQU1FTExJQV9JTklUX0tFWSJ9LAotIHtFUlJfRlVOQyhFVlBfRl9EMklfUEtF WSksCSJEMklfUEtFWSJ9LAotQEAgLTg1LDcgKzg2LDcgQEAgc3RhdGljIEVSUl9TVFJJTkdfREFU QSBFVlBfc3RyX2Z1bmN0c1tdPQotIHtFUlJfRlVOQyhFVlBfRl9FVlBfRElHRVNUSU5JVF9FWCks CSJFVlBfRGlnZXN0SW5pdF9leCJ9LAotIHtFUlJfRlVOQyhFVlBfRl9FVlBfRU5DUllQVEZJTkFM X0VYKSwJIkVWUF9FbmNyeXB0RmluYWxfZXgifSwKLSB7RVJSX0ZVTkMoRVZQX0ZfRVZQX01EX0NU WF9DT1BZX0VYKSwJIkVWUF9NRF9DVFhfY29weV9leCJ9LAotLXtFUlJfRlVOQyhFVlBfRl9FVlBf TURfU0laRSksCSJFVlBfTURfU0laRSJ9LAotK3tFUlJfRlVOQyhFVlBfRl9FVlBfTURfU0laRSks CSJFVlBfTURfc2l6ZSJ9LAotIHtFUlJfRlVOQyhFVlBfRl9FVlBfT1BFTklOSVQpLAkiRVZQX09w ZW5Jbml0In0sCi0ge0VSUl9GVU5DKEVWUF9GX0VWUF9QQkVfQUxHX0FERCksCSJFVlBfUEJFX2Fs Z19hZGQifSwKLSB7RVJSX0ZVTkMoRVZQX0ZfRVZQX1BCRV9BTEdfQUREX1RZUEUpLAkiRVZQX1BC RV9hbGdfYWRkX3R5cGUifSwKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2V2 cC9ldnAuaC5hZXNuaSBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9ldnAvZXZwLmgKLS0tLSBv cGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9ldnAvZXZwLmguYWVzbmkJMjAxMC0wMS0wNyAyMzoz ODozMS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9ldnAv ZXZwLmgJMjAxMC0wMS0xMiAyMjoxODowNi4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xMTYyLDYgKzEx NjIsNyBAQCB2b2lkIEVSUl9sb2FkX0VWUF9zdHJpbmdzKHZvaWQpOwotIC8qIEVycm9yIGNvZGVz IGZvciB0aGUgRVZQIGZ1bmN0aW9ucy4gKi8KLSAKLSAvKiBGdW5jdGlvbiBjb2Rlcy4gKi8KLSsj ZGVmaW5lIEVWUF9GX0FFU05JX0lOSVRfS0VZCQkJCSAxNjMKLSAjZGVmaW5lIEVWUF9GX0FFU19J TklUX0tFWQkJCQkgMTMzCi0gI2RlZmluZSBFVlBfRl9DQU1FTExJQV9JTklUX0tFWQkJCQkgMTU5 Ci0gI2RlZmluZSBFVlBfRl9EMklfUEtFWQkJCQkJIDEwMAotZGlmZiAtdXAgb3BlbnNzbC0xLjAu MC1iZXRhNC90ZXN0L3Rlc3RfYWVzbmkuYWVzbmkgb3BlbnNzbC0xLjAuMC1iZXRhNC90ZXN0L3Rl c3RfYWVzbmkKLS0tLSBvcGVuc3NsLTEuMC4wLWJldGE0L3Rlc3QvdGVzdF9hZXNuaS5hZXNuaQky MDEwLTAxLTEyIDIyOjE4OjA2LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjAtYmV0 YTQvdGVzdC90ZXN0X2Flc25pCTIwMTAtMDEtMTIgMjI6MTg6MDYuMDAwMDAwMDAwICswMTAwCi1A QCAtMCwwICsxLDY5IEBACi0rIyEvYmluL3NoCi0rCi0rUFJPRz0kMQotKwotK2lmIFsgLXggJFBS T0cgXTsgdGhlbgotKyAgICBpZiBleHByICJ4YCRQUk9HIHZlcnNpb25gIiA6ICJ4T3BlblNTTCIg PiAvZGV2L251bGw7IHRoZW4KLSsJOgotKyAgICBlbHNlCi0rCWVjaG8gIiRQUk9HIGlzIG5vdCBP cGVuU1NMIGV4ZWN1dGFibGUiCi0rCWV4aXQgMQotKyAgICBmaQotK2Vsc2UKLSsgICAgZWNobyAi JFBST0cgaXMgbm90IGV4ZWN1dGFibGUiCi0rICAgIGV4aXQgMTsKLStmaQotKwotK2lmICRQUk9H IGVuZ2luZSBhZXNuaSB8IGdyZXAgLXYgbm8tYWVzbmk7IHRoZW4KLSsKLSsgICAgSEFTSD1gY2F0 ICRQUk9HIHwgJFBST0cgZGdzdCAtaGV4YAotKwotKyAgICBBRVNfQUxHUz0iCWFlcy0xMjgtZWNi IGFlcy0xOTItZWNiIGFlcy0yNTYtZWNiIFwKLSsJCWFlcy0xMjgtY2JjIGFlcy0xOTItY2JjIGFl cy0yNTYtY2JjIFwKLSsJCWFlcy0xMjgtY2ZiIGFlcy0xOTItY2ZiIGFlcy0yNTYtY2ZiIFwKLSsJ CWFlcy0xMjgtb2ZiIGFlcy0xOTItb2ZiIGFlcy0yNTYtb2ZiIgotKyAgICBCVUZTSVpFPSIxNiAz MiA0OCA2NCA4MCA5NiAxMjggMTQ0IDk5OSIKLSsKLSsgICAgbmVycj0wCi0rCi0rICAgIGZvciBh bGcgaW4gJEFFU19BTEdTOyBkbwotKwllY2hvICRhbGcKLSsJZm9yIGJ1ZnNpemUgaW4gJEJVRlNJ WkU7IGRvCi0rCSAgICBURVNUPWAoCWNhdCAkUFJPRyB8IFwKLSsJCSRQUk9HIGVuYyAtZSAtayAi JEhBU0giIC0kYWxnIC1idWZzaXplICRidWZzaXplIC1lbmdpbmUgYWVzbmkgfCBcCi0rCQkkUFJP RyBlbmMgLWQgLWsgIiRIQVNIIiAtJGFsZyB8IFwKLSsJCSRQUk9HIGRnc3QgLWhleCApIDI+L2Rl di9udWxsYAotKwkgICAgaWYgWyAiJFRFU1QiICE9ICIkSEFTSCIgXTsgdGhlbgotKwkJZWNobyAi LSRhbGcvJGJ1ZnNpemUgZW5jcnlwdCB0ZXN0IGZhaWxlZCIKLSsJCW5lcnI9YGV4cHIgJG5lcnIg KyAxYAotKwkgICAgZmkKLSsJZG9uZQotKwlmb3IgYnVmc2l6ZSBpbiAkQlVGU0laRTsgZG8gCi0r CSAgICBURVNUPWAoCWNhdCAkUFJPRyB8IFwKLSsJCSRQUk9HIGVuYyAtZSAtayAiJEhBU0giIC0k YWxnIHwgXAotKwkJJFBST0cgZW5jIC1kIC1rICIkSEFTSCIgLSRhbGcgLWJ1ZnNpemUgJGJ1ZnNp emUgLWVuZ2luZSBhZXNuaSB8IFwKLSsJCSRQUk9HIGRnc3QgLWhleCApIDI+L2Rldi9udWxsYAot KwkgICAgaWYgWyAiJFRFU1QiICE9ICIkSEFTSCIgXTsgdGhlbgotKwkJZWNobyAiLSRhbGcvJGJ1 ZnNpemUgZGVjcnlwdCB0ZXN0IGZhaWxlZCIKLSsJCW5lcnI9YGV4cHIgJG5lcnIgKyAxYAotKwkg ICAgZmkKLSsJZG9uZQotKwlURVNUPWAoCWNhdCAkUFJPRyB8IFwKLSsJCSRQUk9HIGVuYyAtZSAt ayAiJEhBU0giIC0kYWxnIC1lbmdpbmUgYWVzbmkgfCBcCi0rCQkkUFJPRyBlbmMgLWQgLWsgIiRI QVNIIiAtJGFsZyAtZW5naW5lIGFlc25pIHwgXAotKwkJJFBST0cgZGdzdCAtaGV4ICkgMj4vZGV2 L251bGxgCi0rCWlmIFsgIiRURVNUIiAhPSAiJEhBU0giIF07IHRoZW4KLSsJCWVjaG8gIi0kYWxn IGVuL2RlY3J5cHQgdGVzdCBmYWlsZWQiCi0rCQluZXJyPWBleHByICRuZXJyICsgMWAKLSsJZmkK LSsgICAgZG9uZQotKwotKyAgICBpZiBbICRuZXJyIC1ndCAwIF07IHRoZW4KLSsJZWNobyAiQUVT TkkgZW5naW5lIHRlc3QgZmFpbGVkLiIKLSsJZXhpdCAxOwotKyAgICBmaQotK2Vsc2UKLSsgICAg ZWNobyAiQUVTTkkgZW5naW5lIGlzIG5vdCBhdmFpbGFibGUiCi0rZmkKLSsKLStleGl0IDAKCmRp ZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4wLWJldGE1LWlwdjYtYXBwcy5wYXRjaCBiL29wZW5zc2wt MS4wLjAtYmV0YTUtaXB2Ni1hcHBzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCA0MzA0YzAxLi4wMDAwMDAwCi0tLSBhL29wZW5zc2wtMS4wLjAtYmV0YTUtaXB2Ni1hcHBzLnBh dGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDk5ICswLDAgQEAKLWRpZmYgLXVwIG9wZW5zc2wtMS4w LjAtYmV0YTUvYXBwcy9zX2FwcHMuaC5pcHY2LWFwcHMgb3BlbnNzbC0xLjAuMC1iZXRhNS9hcHBz L3NfYXBwcy5oCi0tLS0gb3BlbnNzbC0xLjAuMC1iZXRhNS9hcHBzL3NfYXBwcy5oLmlwdjYtYXBw cwkyMDEwLTAyLTAzIDA5OjQzOjQ5LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjAt YmV0YTUvYXBwcy9zX2FwcHMuaAkyMDEwLTAyLTAzIDA5OjQzOjQ5LjAwMDAwMDAwMCArMDEwMAot QEAgLTE0OCw3ICsxNDgsNyBAQCB0eXBlZGVmIGZkX21hc2sgZmRfc2V0OwotICNkZWZpbmUgUE9S VF9TVFIgICAgICAgICI0NDMzIgotICNkZWZpbmUgUFJPVE9DT0wgICAgICAgICJ0Y3AiCi0gCi0t aW50IGRvX3NlcnZlcihpbnQgcG9ydCwgaW50IHR5cGUsIGludCAqcmV0LCBpbnQgKCpjYikgKGNo YXIgKmhvc3RuYW1lLCBpbnQgcywgdW5zaWduZWQgY2hhciAqY29udGV4dCksIHVuc2lnbmVkIGNo YXIgKmNvbnRleHQpOwotK2ludCBkb19zZXJ2ZXIoY2hhciAqcG9ydCwgaW50IHR5cGUsIGludCAq cmV0LCBpbnQgKCpjYikgKGNoYXIgKmhvc3RuYW1lLCBpbnQgcywgdW5zaWduZWQgY2hhciAqY29u dGV4dCksIHVuc2lnbmVkIGNoYXIgKmNvbnRleHQpOwotICNpZmRlZiBIRUFERVJfWDUwOV9ICi0g aW50IE1TX0NBTExCQUNLIHZlcmlmeV9jYWxsYmFjayhpbnQgb2ssIFg1MDlfU1RPUkVfQ1RYICpj dHgpOwotICNlbmRpZgotQEAgLTE1NiwxMCArMTU2LDkgQEAgaW50IE1TX0NBTExCQUNLIHZlcmlm eV9jYWxsYmFjayhpbnQgb2ssIAotIGludCBzZXRfY2VydF9zdHVmZihTU0xfQ1RYICpjdHgsIGNo YXIgKmNlcnRfZmlsZSwgY2hhciAqa2V5X2ZpbGUpOwotIGludCBzZXRfY2VydF9rZXlfc3R1ZmYo U1NMX0NUWCAqY3R4LCBYNTA5ICpjZXJ0LCBFVlBfUEtFWSAqa2V5KTsKLSAjZW5kaWYKLS1pbnQg aW5pdF9jbGllbnQoaW50ICpzb2NrLCBjaGFyICpzZXJ2ZXIsIGludCBwb3J0LCBpbnQgdHlwZSk7 Ci0raW50IGluaXRfY2xpZW50KGludCAqc29jaywgY2hhciAqc2VydmVyLCBjaGFyICpwb3J0LCBp bnQgdHlwZSk7Ci0gaW50IHNob3VsZF9yZXRyeShpbnQgaSk7Ci0taW50IGV4dHJhY3RfcG9ydChj aGFyICpzdHIsIHNob3J0ICpwb3J0X3B0cik7Ci0taW50IGV4dHJhY3RfaG9zdF9wb3J0KGNoYXIg KnN0cixjaGFyICoqaG9zdF9wdHIsdW5zaWduZWQgY2hhciAqaXAsc2hvcnQgKnApOwotK2ludCBl eHRyYWN0X2hvc3RfcG9ydChjaGFyICpzdHIsY2hhciAqKmhvc3RfcHRyLGNoYXIgKipwb3J0X3B0 cik7Ci0gCi0gbG9uZyBNU19DQUxMQkFDSyBiaW9fZHVtcF9jYWxsYmFjayhCSU8gKmJpbywgaW50 IGNtZCwgY29uc3QgY2hhciAqYXJncCwKLSAJCQkJICAgaW50IGFyZ2ksIGxvbmcgYXJnbCwgbG9u ZyByZXQpOwotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMC1iZXRhNS9hcHBzL3NfY2xpZW50LmMuaXB2 Ni1hcHBzIG9wZW5zc2wtMS4wLjAtYmV0YTUvYXBwcy9zX2NsaWVudC5jCi0tLS0gb3BlbnNzbC0x LjAuMC1iZXRhNS9hcHBzL3NfY2xpZW50LmMuaXB2Ni1hcHBzCTIwMTAtMDItMDMgMDk6NDM6NDku MDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMC1iZXRhNS9hcHBzL3NfY2xpZW50LmMJ MjAxMC0wMi0wMyAwOTo0Mzo0OS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0zODksNyArMzg5LDcgQEAg aW50IE1BSU4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAlpbnQgY2J1Zl9sZW4sY2J1Zl9vZmY7 Ci0gCWludCBzYnVmX2xlbixzYnVmX29mZjsKLSAJZmRfc2V0IHJlYWRmZHMsd3JpdGVmZHM7Ci0t CXNob3J0IHBvcnQ9UE9SVDsKLSsJY2hhciAqcG9ydF9zdHIgPSBQT1JUX1NUUjsKLSAJaW50IGZ1 bGxfbG9nPTE7Ci0gCWNoYXIgKmhvc3Q9U1NMX0hPU1RfTkFNRTsKLSAJY2hhciAqY2VydF9maWxl PU5VTEwsKmtleV9maWxlPU5VTEw7Ci1AQCAtNDg4LDEzICs0ODgsMTIgQEAgaW50IE1BSU4oaW50 IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJZWxzZSBpZgkoc3RyY21wKCphcmd2LCItcG9ydCIpID09 IDApCi0gCQkJewotIAkJCWlmICgtLWFyZ2MgPCAxKSBnb3RvIGJhZDsKLS0JCQlwb3J0PWF0b2ko KigrK2FyZ3YpKTsKLS0JCQlpZiAocG9ydCA9PSAwKSBnb3RvIGJhZDsKLSsJCQlwb3J0X3N0cj0g KigrK2FyZ3YpOwotIAkJCX0KLSAJCWVsc2UgaWYgKHN0cmNtcCgqYXJndiwiLWNvbm5lY3QiKSA9 PSAwKQotIAkJCXsKLSAJCQlpZiAoLS1hcmdjIDwgMSkgZ290byBiYWQ7Ci0tCQkJaWYgKCFleHRy YWN0X2hvc3RfcG9ydCgqKCsrYXJndiksJmhvc3QsTlVMTCwmcG9ydCkpCi0rCQkJaWYgKCFleHRy YWN0X2hvc3RfcG9ydCgqKCsrYXJndiksJmhvc3QsJnBvcnRfc3RyKSkKLSAJCQkJZ290byBiYWQ7 Ci0gCQkJfQotIAkJZWxzZSBpZgkoc3RyY21wKCphcmd2LCItdmVyaWZ5IikgPT0gMCkKLUBAIC05 NjcsNyArOTY2LDcgQEAgYmFkOgotIAotIHJlX3N0YXJ0OgotIAotLQlpZiAoaW5pdF9jbGllbnQo JnMsaG9zdCxwb3J0LHNvY2tldF90eXBlKSA9PSAwKQotKwlpZiAoaW5pdF9jbGllbnQoJnMsaG9z dCxwb3J0X3N0cixzb2NrZXRfdHlwZSkgPT0gMCkKLSAJCXsKLSAJCUJJT19wcmludGYoYmlvX2Vy ciwiY29ubmVjdDplcnJubz0lZFxuIixnZXRfbGFzdF9zb2NrZXRfZXJyb3IoKSk7Ci0gCQlTSFVU RE9XTihzKTsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjAtYmV0YTUvYXBwcy9zX3NlcnZlci5jLmlw djYtYXBwcyBvcGVuc3NsLTEuMC4wLWJldGE1L2FwcHMvc19zZXJ2ZXIuYwotLS0tIG9wZW5zc2wt MS4wLjAtYmV0YTUvYXBwcy9zX3NlcnZlci5jLmlwdjYtYXBwcwkyMDEwLTAyLTAzIDA5OjQzOjQ5 LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjAtYmV0YTUvYXBwcy9zX3NlcnZlci5j CTIwMTAtMDItMDMgMDk6NDM6NDkuMDAwMDAwMDAwICswMTAwCi1AQCAtODM4LDcgKzgzOCw3IEBA IGludCBNQUlOKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCXsKLSAJWDUwOV9WRVJJRllfUEFS QU0gKnZwbSA9IE5VTEw7Ci0gCWludCBiYWRhcmcgPSAwOwotLQlzaG9ydCBwb3J0PVBPUlQ7Ci0r CWNoYXIgKnBvcnRfc3RyID0gUE9SVF9TVFI7Ci0gCWNoYXIgKkNBcGF0aD1OVUxMLCpDQWZpbGU9 TlVMTDsKLSAJdW5zaWduZWQgY2hhciAqY29udGV4dCA9IE5VTEw7Ci0gCWNoYXIgKmRoZmlsZSA9 IE5VTEw7Ci1AQCAtOTA5LDggKzkwOSw3IEBAIGludCBNQUlOKGludCBhcmdjLCBjaGFyICphcmd2 W10pCi0gCQkJIChzdHJjbXAoKmFyZ3YsIi1hY2NlcHQiKSA9PSAwKSkKLSAJCQl7Ci0gCQkJaWYg KC0tYXJnYyA8IDEpIGdvdG8gYmFkOwotLQkJCWlmICghZXh0cmFjdF9wb3J0KCooKythcmd2KSwm cG9ydCkpCi0tCQkJCWdvdG8gYmFkOwotKwkJCXBvcnRfc3RyPSAqKCsrYXJndik7Ci0gCQkJfQot IAkJZWxzZSBpZgkoc3RyY21wKCphcmd2LCItdmVyaWZ5IikgPT0gMCkKLSAJCQl7Ci1AQCAtMTcw MCw5ICsxNjk5LDkgQEAgYmFkOgotIAlCSU9fcHJpbnRmKGJpb19zX291dCwiQUNDRVBUXG4iKTsK LSAJKHZvaWQpQklPX2ZsdXNoKGJpb19zX291dCk7Ci0gCWlmICh3d3cpCi0tCQlkb19zZXJ2ZXIo cG9ydCxzb2NrZXRfdHlwZSwmYWNjZXB0X3NvY2tldCx3d3dfYm9keSwgY29udGV4dCk7Ci0rCQlk b19zZXJ2ZXIocG9ydF9zdHIsc29ja2V0X3R5cGUsJmFjY2VwdF9zb2NrZXQsd3d3X2JvZHksIGNv bnRleHQpOwotIAllbHNlCi0tCQlkb19zZXJ2ZXIocG9ydCxzb2NrZXRfdHlwZSwmYWNjZXB0X3Nv Y2tldCxzdl9ib2R5LCBjb250ZXh0KTsKLSsJCWRvX3NlcnZlcihwb3J0X3N0cixzb2NrZXRfdHlw ZSwmYWNjZXB0X3NvY2tldCxzdl9ib2R5LCBjb250ZXh0KTsKLSAJcHJpbnRfc3RhdHMoYmlvX3Nf b3V0LGN0eCk7Ci0gCXJldD0wOwotIGVuZDoKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjAtYmV0YTUv YXBwcy9zX3NvY2tldC5jLmlwdjYtYXBwcyBvcGVuc3NsLTEuMC4wLWJldGE1L2FwcHMvc19zb2Nr ZXQuYwotLS0tIG9wZW5zc2wtMS4wLjAtYmV0YTUvYXBwcy9zX3NvY2tldC5jLmlwdjYtYXBwcwky MDA5LTA4LTI2IDEzOjIxOjUwLjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjAtYmV0 YTUvYXBwcy9zX3NvY2tldC5jCTIwMTAtMDItMDMgMTA6MDA6MzAuMDAwMDAwMDAwICswMTAwCi1A QCAtMTAyLDkgKzEwMiw3IEBAIHN0YXRpYyBzdHJ1Y3QgaG9zdGVudCAqR2V0SG9zdEJ5TmFtZShj aGEKLSBzdGF0aWMgdm9pZCBzc2xfc29ja19jbGVhbnVwKHZvaWQpOwotICNlbmRpZgotIHN0YXRp YyBpbnQgc3NsX3NvY2tfaW5pdCh2b2lkKTsKLS1zdGF0aWMgaW50IGluaXRfY2xpZW50X2lwKGlu dCAqc29jayx1bnNpZ25lZCBjaGFyIGlwWzRdLCBpbnQgcG9ydCwgaW50IHR5cGUpOwotLXN0YXRp YyBpbnQgaW5pdF9zZXJ2ZXIoaW50ICpzb2NrLCBpbnQgcG9ydCwgaW50IHR5cGUpOwotLXN0YXRp YyBpbnQgaW5pdF9zZXJ2ZXJfbG9uZyhpbnQgKnNvY2ssIGludCBwb3J0LGNoYXIgKmlwLCBpbnQg dHlwZSk7Ci0rc3RhdGljIGludCBpbml0X3NlcnZlcihpbnQgKnNvY2ssIGNoYXIgKnBvcnQsIGlu dCB0eXBlKTsKLSBzdGF0aWMgaW50IGRvX2FjY2VwdChpbnQgYWNjX3NvY2ssIGludCAqc29jaywg Y2hhciAqKmhvc3QpOwotIHN0YXRpYyBpbnQgaG9zdF9pcChjaGFyICpzdHIsIHVuc2lnbmVkIGNo YXIgaXBbNF0pOwotIAotQEAgLTIzNCw1OCArMjMyLDcwIEBAIHN0YXRpYyBpbnQgc3NsX3NvY2tf aW5pdCh2b2lkKQotIAlyZXR1cm4oMSk7Ci0gCX0KLSAKLS1pbnQgaW5pdF9jbGllbnQoaW50ICpz b2NrLCBjaGFyICpob3N0LCBpbnQgcG9ydCwgaW50IHR5cGUpCi0raW50IGluaXRfY2xpZW50KGlu dCAqc29jaywgY2hhciAqaG9zdCwgY2hhciAqcG9ydCwgaW50IHR5cGUpCi0gCXsKLS0JdW5zaWdu ZWQgY2hhciBpcFs0XTsKLS0KLS0JaWYgKCFob3N0X2lwKGhvc3QsJihpcFswXSkpKQotLQkJewot LQkJcmV0dXJuKDApOwotLQkJfQotLQlyZXR1cm4oaW5pdF9jbGllbnRfaXAoc29jayxpcCxwb3J0 LHR5cGUpKTsKLS0JfQotLQotLXN0YXRpYyBpbnQgaW5pdF9jbGllbnRfaXAoaW50ICpzb2NrLCB1 bnNpZ25lZCBjaGFyIGlwWzRdLCBpbnQgcG9ydCwgaW50IHR5cGUpCi0tCXsKLS0JdW5zaWduZWQg bG9uZyBhZGRyOwotLQlzdHJ1Y3Qgc29ja2FkZHJfaW4gdGhlbTsKLS0JaW50IHMsaTsKLSsJc3Ry dWN0IGFkZHJpbmZvICpyZXMsICpyZXMwLCBoaW50czsKLSsJY2hhciAqIGZhaWxlZF9jYWxsID0g TlVMTDsKLSsJaW50IHM7Ci0rCWludCBlOwotIAotIAlpZiAoIXNzbF9zb2NrX2luaXQoKSkgcmV0 dXJuKDApOwotIAotLQltZW1zZXQoKGNoYXIgKikmdGhlbSwwLHNpemVvZih0aGVtKSk7Ci0tCXRo ZW0uc2luX2ZhbWlseT1BRl9JTkVUOwotLQl0aGVtLnNpbl9wb3J0PWh0b25zKCh1bnNpZ25lZCBz aG9ydClwb3J0KTsKLS0JYWRkcj0odW5zaWduZWQgbG9uZykKLS0JCSgodW5zaWduZWQgbG9uZylp cFswXTw8MjRMKXwKLS0JCSgodW5zaWduZWQgbG9uZylpcFsxXTw8MTZMKXwKLS0JCSgodW5zaWdu ZWQgbG9uZylpcFsyXTw8IDhMKXwKLS0JCSgodW5zaWduZWQgbG9uZylpcFszXSk7Ci0tCXRoZW0u c2luX2FkZHIuc19hZGRyPWh0b25sKGFkZHIpOwotLQotLQlpZiAodHlwZSA9PSBTT0NLX1NUUkVB TSkKLS0JCXM9c29ja2V0KEFGX0lORVQsU09DS19TVFJFQU0sU09DS0VUX1BST1RPQ09MKTsKLS0J ZWxzZSAvKiAoIHR5cGUgPT0gU09DS19ER1JBTSkgKi8KLS0JCXM9c29ja2V0KEFGX0lORVQsU09D S19ER1JBTSxJUFBST1RPX1VEUCk7Ci0tCQkJCi0tCWlmIChzID09IElOVkFMSURfU09DS0VUKSB7 IHBlcnJvcigic29ja2V0Iik7IHJldHVybigwKTsgfQotKwltZW1zZXQoJmhpbnRzLCAnXDAnLCBz aXplb2YoaGludHMpKTsKLSsJaGludHMuYWlfc29ja3R5cGUgPSB0eXBlOwotKwloaW50cy5haV9m bGFncyA9IEFJX0FERFJDT05GSUc7Ci0rCi0rCWUgPSBnZXRhZGRyaW5mbyhob3N0LCBwb3J0LCAm aGludHMsICZyZXMpOwotKwlpZiAoZSkKLSsJewotKwkJZnByaW50ZihzdGRlcnIsICJnZXRhZGRy aW5mbzogJXNcbiIsIGdhaV9zdHJlcnJvcihlKSk7Ci0rCQlpZiAoZSA9PSBFQUlfU1lTVEVNKQot KwkJCXBlcnJvcigiZ2V0YWRkcmluZm8iKTsKLSsJCXJldHVybiAoMCk7Ci0rCQl9Ci0gCi0rCXJl czAgPSByZXM7Ci0rCXdoaWxlIChyZXMpCi0rCQl7Ci0rCQlzID0gc29ja2V0KHJlcy0+YWlfZmFt aWx5LCByZXMtPmFpX3NvY2t0eXBlLCByZXMtPmFpX3Byb3RvY29sKTsKLSsJCWlmIChzID09IElO VkFMSURfU09DS0VUKQotKwkJCXsKLSsJCQlmYWlsZWRfY2FsbCA9ICJzb2NrZXQiOwotKwkJCWdv dG8gbmV4dHJlczsKLSsJCQl9Ci0gI2lmIGRlZmluZWQoU09fS0VFUEFMSVZFKSAmJiAhZGVmaW5l ZChPUEVOU1NMX1NZU19NUEUpCi0gCWlmICh0eXBlID09IFNPQ0tfU1RSRUFNKQotIAkJewotLQkJ aT0wOwotLQkJaT1zZXRzb2Nrb3B0KHMsU09MX1NPQ0tFVCxTT19LRUVQQUxJVkUsKGNoYXIgKikm aSxzaXplb2YoaSkpOwotLQkJaWYgKGkgPCAwKSB7IHBlcnJvcigia2VlcGFsaXZlIik7IHJldHVy bigwKTsgfQotKwkJCWludCBpPTA7Ci0rCQkJaT1zZXRzb2Nrb3B0KHMsU09MX1NPQ0tFVCxTT19L RUVQQUxJVkUsCi0rCQkJCShjaGFyICopJmksc2l6ZW9mKGkpKTsKLSsJCQlpZiAoaSA8IDApIHsK LSsJCQkJZmFpbGVkX2NhbGwgPSAia2VlcGFsaXZlIjsKLSsJCQkJZ290byBuZXh0cmVzOwotKwkJ CQl9Ci0gCQl9Ci0gI2VuZGlmCi0tCi0tCWlmIChjb25uZWN0KHMsKHN0cnVjdCBzb2NrYWRkciAq KSZ0aGVtLHNpemVvZih0aGVtKSkgPT0gLTEpCi0tCQl7IGNsb3Nlc29ja2V0KHMpOyBwZXJyb3Io ImNvbm5lY3QiKTsgcmV0dXJuKDApOyB9Ci0rCQlpZiAoY29ubmVjdChzLChzdHJ1Y3Qgc29ja2Fk ZHIgKilyZXMtPmFpX2FkZHIsCi0rCQkJcmVzLT5haV9hZGRybGVuKSA9PSAwKQotKwkJCXsKLSsJ CQlmcmVlYWRkcmluZm8ocmVzMCk7Ci0gCSpzb2NrPXM7Ci0gCXJldHVybigxKTsKLSAJfQotIAot LWludCBkb19zZXJ2ZXIoaW50IHBvcnQsIGludCB0eXBlLCBpbnQgKnJldCwgaW50ICgqY2IpKGNo YXIgKmhvc3RuYW1lLCBpbnQgcywgdW5zaWduZWQgY2hhciAqY29udGV4dCksIHVuc2lnbmVkIGNo YXIgKmNvbnRleHQpCi0rCQlmYWlsZWRfY2FsbCA9ICJzb2NrZXQiOwotK25leHRyZXM6Ci0rCQlp ZiAocyAhPSBJTlZBTElEX1NPQ0tFVCkKLSsJCQljbG9zZShzKTsKLSsJCXJlcyA9IHJlcy0+YWlf bmV4dDsKLSsJCX0KLSsJZnJlZWFkZHJpbmZvKHJlczApOwotKwotKwlwZXJyb3IoZmFpbGVkX2Nh bGwpOwotKwlyZXR1cm4oMCk7Ci0rCX0KLSsKLStpbnQgZG9fc2VydmVyKGNoYXIgKnBvcnQsIGlu dCB0eXBlLCBpbnQgKnJldCwgaW50ICgqY2IpKGNoYXIgKmhvc3RuYW1lLCBpbnQgcywgdW5zaWdu ZWQgY2hhciAqY29udGV4dCksIHVuc2lnbmVkIGNoYXIgKmNvbnRleHQpCi0gCXsKLSAJaW50IHNv Y2s7Ci0gCWNoYXIgKm5hbWUgPSBOVUxMOwotQEAgLTMyMywzMyArMzMzLDM4IEBAIGludCBkb19z ZXJ2ZXIoaW50IHBvcnQsIGludCB0eXBlLCBpbnQgKnIKLSAJCX0KLSAJfQotIAotLXN0YXRpYyBp bnQgaW5pdF9zZXJ2ZXJfbG9uZyhpbnQgKnNvY2ssIGludCBwb3J0LCBjaGFyICppcCwgaW50IHR5 cGUpCi0rc3RhdGljIGludCBpbml0X3NlcnZlcihpbnQgKnNvY2ssIGNoYXIgKnBvcnQsIGludCB0 eXBlKQotIAl7Ci0tCWludCByZXQ9MDsKLS0Jc3RydWN0IHNvY2thZGRyX2luIHNlcnZlcjsKLS0J aW50IHM9IC0xLGk7Ci0rCXN0cnVjdCBhZGRyaW5mbyAqcmVzLCAqcmVzMCwgaGludHM7Ci0rCWNo YXIgKiBmYWlsZWRfY2FsbCA9IE5VTEw7Ci0rCWNoYXIgcG9ydF9uYW1lWzhdOwotKwlpbnQgczsK LSsJaW50IGU7Ci0gCi0gCWlmICghc3NsX3NvY2tfaW5pdCgpKSByZXR1cm4oMCk7Ci0gCi0tCW1l bXNldCgoY2hhciAqKSZzZXJ2ZXIsMCxzaXplb2Yoc2VydmVyKSk7Ci0tCXNlcnZlci5zaW5fZmFt aWx5PUFGX0lORVQ7Ci0tCXNlcnZlci5zaW5fcG9ydD1odG9ucygodW5zaWduZWQgc2hvcnQpcG9y dCk7Ci0tCWlmIChpcCA9PSBOVUxMKQotLQkJc2VydmVyLnNpbl9hZGRyLnNfYWRkcj1JTkFERFJf QU5ZOwotLQllbHNlCi0tLyogQWRkZWQgZm9yIFQzRSwgYWRkcmVzcy1vZiBmYWlscyBvbiBiaXQg ZmllbGQgKGJlY2ttYW5AYWNsLmxhbmwuZ292KSAqLwotLSNpZm5kZWYgQklUX0ZJRUxEX0xJTUlU UwotLQkJbWVtY3B5KCZzZXJ2ZXIuc2luX2FkZHIuc19hZGRyLGlwLDQpOwotLSNlbHNlCi0tCQlt ZW1jcHkoJnNlcnZlci5zaW5fYWRkcixpcCw0KTsKLS0jZW5kaWYKLSsJbWVtc2V0KCZoaW50cywg J1wwJywgc2l6ZW9mKGhpbnRzKSk7Ci0rCWhpbnRzLmFpX3NvY2t0eXBlID0gdHlwZTsKLSsJaGlu dHMuYWlfZmxhZ3MgPSBBSV9QQVNTSVZFIHwgQUlfQUREUkNPTkZJRzsKLSAJCi0tCQlpZiAodHlw ZSA9PSBTT0NLX1NUUkVBTSkKLS0JCQlzPXNvY2tldChBRl9JTkVULFNPQ0tfU1RSRUFNLFNPQ0tF VF9QUk9UT0NPTCk7Ci0tCQllbHNlIC8qIHR5cGUgPT0gU09DS19ER1JBTSAqLwotLQkJCXM9c29j a2V0KEFGX0lORVQsIFNPQ0tfREdSQU0sSVBQUk9UT19VRFApOwotKwllID0gZ2V0YWRkcmluZm8o TlVMTCwgcG9ydCwgJmhpbnRzLCAmcmVzKTsKLSsJaWYgKGUpCi0rCQl7Ci0rCQlmcHJpbnRmKHN0 ZGVyciwgImdldGFkZHJpbmZvOiAlc1xuIiwgZ2FpX3N0cmVycm9yKGUpKTsKLSsJCWlmIChlID09 IEVBSV9TWVNURU0pCi0rCQkJcGVycm9yKCJnZXRhZGRyaW5mbyIpOwotKwkJcmV0dXJuICgwKTsK LSsJCX0KLSAKLS0JaWYgKHMgPT0gSU5WQUxJRF9TT0NLRVQpIGdvdG8gZXJyOwotKwlyZXMwID0g cmVzOwotKwl3aGlsZSAocmVzKQotKwkJewotKwkJcyA9IHNvY2tldChyZXMtPmFpX2ZhbWlseSwg cmVzLT5haV9zb2NrdHlwZSwgcmVzLT5haV9wcm90b2NvbCk7Ci0rCQlpZiAocyA9PSBJTlZBTElE X1NPQ0tFVCkKLSsJCQl7Ci0rCQkJZmFpbGVkX2NhbGwgPSAic29ja2V0IjsKLSsJCQlnb3RvIG5l eHRyZXM7Ci0rCQkJfQotICNpZiBkZWZpbmVkIFNPTF9TT0NLRVQgJiYgZGVmaW5lZCBTT19SRVVT RUFERFIKLSAJCXsKLSAJCWludCBqID0gMTsKLUBAIC0zNTcsMzYgKzM3MiwzOSBAQCBzdGF0aWMg aW50IGluaXRfc2VydmVyX2xvbmcoaW50ICpzb2NrLCBpCi0gCQkJICAgKHZvaWQgKikgJmosIHNp emVvZiBqKTsKLSAJCX0KLSAjZW5kaWYKLS0JaWYgKGJpbmQocywoc3RydWN0IHNvY2thZGRyICop JnNlcnZlcixzaXplb2Yoc2VydmVyKSkgPT0gLTEpCi0rCi0rCQlpZiAoYmluZChzLChzdHJ1Y3Qg c29ja2FkZHIgKilyZXMtPmFpX2FkZHIsIHJlcy0+YWlfYWRkcmxlbikgPT0gLTEpCi0gCQl7Ci0t I2lmbmRlZiBPUEVOU1NMX1NZU19XSU5ET1dTCi0tCQlwZXJyb3IoImJpbmQiKTsKLS0jZW5kaWYK LS0JCWdvdG8gZXJyOwotKwkJCWZhaWxlZF9jYWxsID0gImJpbmQiOwotKwkJCWdvdG8gbmV4dHJl czsKLSAJCX0KLS0JLyogTWFrZSBpdCAxMjggZm9yIGxpbnV4ICovCi0tCWlmICh0eXBlPT1TT0NL X1NUUkVBTSAmJiBsaXN0ZW4ocywxMjgpID09IC0xKSBnb3RvIGVycjsKLS0JaT0wOwotLQkqc29j az1zOwotLQlyZXQ9MTsKLS1lcnI6Ci0tCWlmICgocmV0ID09IDApICYmIChzICE9IC0xKSkKLSsJ CWlmICh0eXBlPT1TT0NLX1NUUkVBTSAmJiBsaXN0ZW4ocywxMjgpID09IC0xKQotIAkJewotLQkJ U0hVVERPV04ocyk7Ci0rCQkJZmFpbGVkX2NhbGwgPSAibGlzdGVuIjsKLSsJCQlnb3RvIG5leHRy ZXM7Ci0gCQl9Ci0tCXJldHVybihyZXQpOwotKwotKwkJKnNvY2s9czsKLSsJCXJldHVybigxKTsK LSsKLStuZXh0cmVzOgotKwkJaWYgKHMgIT0gSU5WQUxJRF9TT0NLRVQpCi0rCQkJY2xvc2Uocyk7 Ci0rCQlyZXMgPSByZXMtPmFpX25leHQ7Ci0gCX0KLSsJZnJlZWFkZHJpbmZvKHJlczApOwotIAot LXN0YXRpYyBpbnQgaW5pdF9zZXJ2ZXIoaW50ICpzb2NrLCBpbnQgcG9ydCwgaW50IHR5cGUpCi0t CXsKLS0JcmV0dXJuKGluaXRfc2VydmVyX2xvbmcoc29jaywgcG9ydCwgTlVMTCwgdHlwZSkpOwot KwlpZiAocyA9PSBJTlZBTElEX1NPQ0tFVCkgeyBwZXJyb3IoInNvY2tldCIpOyByZXR1cm4oMCk7 IH0KLSsKLSsJcGVycm9yKGZhaWxlZF9jYWxsKTsKLSsJcmV0dXJuKDApOwotIAl9Ci0gCi0gc3Rh dGljIGludCBkb19hY2NlcHQoaW50IGFjY19zb2NrLCBpbnQgKnNvY2ssIGNoYXIgKipob3N0KQot IAl7Ci0tCWludCByZXQsaTsKLS0Jc3RydWN0IGhvc3RlbnQgKmgxLCpoMjsKLS0Jc3RhdGljIHN0 cnVjdCBzb2NrYWRkcl9pbiBmcm9tOwotKwlzdGF0aWMgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2Ug ZnJvbTsKLSsJY2hhciBidWZmZXJbTklfTUFYSE9TVF07Ci0rCWludCByZXQ7Ci0gCWludCBsZW47 Ci0gLyoJc3RydWN0IGxpbmdlciBsaW5nOyAqLwotIAotQEAgLTQzMiwxMzYgKzQ1MCw1OCBAQCBy ZWRvaXQ6Ci0gKi8KLSAKLSAJaWYgKGhvc3QgPT0gTlVMTCkgZ290byBlbmQ7Ci0tI2lmbmRlZiBC SVRfRklFTERfTElNSVRTCi0tCS8qIEkgc2hvdWxkIHVzZSBXU0FBc3luY0dldEhvc3RCeU5hbWUo KSB1bmRlciB3aW5kb3dzICovCi0tCWgxPWdldGhvc3RieWFkZHIoKGNoYXIgKikmZnJvbS5zaW5f YWRkci5zX2FkZHIsCi0tCQlzaXplb2YoZnJvbS5zaW5fYWRkci5zX2FkZHIpLEFGX0lORVQpOwot LSNlbHNlCi0tCWgxPWdldGhvc3RieWFkZHIoKGNoYXIgKikmZnJvbS5zaW5fYWRkciwKLS0JCXNp emVvZihzdHJ1Y3QgaW5fYWRkciksQUZfSU5FVCk7Ci0tI2VuZGlmCi0tCWlmIChoMSA9PSBOVUxM KQotKwotKwlpZiAoZ2V0bmFtZWluZm8oKHN0cnVjdCBzb2NrYWRkciAqKSZmcm9tLCBzaXplb2Yo ZnJvbSksCi0rCQlidWZmZXIsIHNpemVvZihidWZmZXIpLAotKwkJTlVMTCwgMCwgMCkpCi0gCQl7 Ci0tCQlCSU9fcHJpbnRmKGJpb19lcnIsImJhZCBnZXRob3N0YnlhZGRyXG4iKTsKLSsJCUJJT19w cmludGYoYmlvX2VyciwiZ2V0bmFtZWluZm8gZmFpbGVkXG4iKTsKLSAJCSpob3N0PU5VTEw7Ci0g CQkvKiByZXR1cm4oMCk7ICovCi0gCQl9Ci0gCWVsc2UKLSAJCXsKLS0JCWlmICgoKmhvc3Q9KGNo YXIgKilPUEVOU1NMX21hbGxvYyhzdHJsZW4oaDEtPmhfbmFtZSkrMSkpID09IE5VTEwpCi0rCQlp ZiAoKCpob3N0PShjaGFyICopT1BFTlNTTF9tYWxsb2Moc3RybGVuKGJ1ZmZlcikrMSkpID09IE5V TEwpCi0gCQkJewotIAkJCXBlcnJvcigiT1BFTlNTTF9tYWxsb2MiKTsKLSAJCQlyZXR1cm4oMCk7 Ci0gCQkJfQotLQkJQlVGX3N0cmxjcHkoKmhvc3QsaDEtPmhfbmFtZSxzdHJsZW4oaDEtPmhfbmFt ZSkrMSk7Ci0tCi0tCQloMj1HZXRIb3N0QnlOYW1lKCpob3N0KTsKLS0JCWlmIChoMiA9PSBOVUxM KQotLQkJCXsKLS0JCQlCSU9fcHJpbnRmKGJpb19lcnIsImdldGhvc3RieW5hbWUgZmFpbHVyZVxu Iik7Ci0tCQkJcmV0dXJuKDApOwotLQkJCX0KLS0JCWk9MDsKLS0JCWlmIChoMi0+aF9hZGRydHlw ZSAhPSBBRl9JTkVUKQotLQkJCXsKLS0JCQlCSU9fcHJpbnRmKGJpb19lcnIsImdldGhvc3RieW5h bWUgYWRkciBpcyBub3QgQUZfSU5FVFxuIik7Ci0tCQkJcmV0dXJuKDApOwotLQkJCX0KLSsJCXN0 cmNweSgqaG9zdCwgYnVmZmVyKTsKLSAJCX0KLSBlbmQ6Ci0gCSpzb2NrPXJldDsKLSAJcmV0dXJu KDEpOwotIAl9Ci0gCi0taW50IGV4dHJhY3RfaG9zdF9wb3J0KGNoYXIgKnN0ciwgY2hhciAqKmhv c3RfcHRyLCB1bnNpZ25lZCBjaGFyICppcCwKLS0JICAgICBzaG9ydCAqcG9ydF9wdHIpCi0raW50 IGV4dHJhY3RfaG9zdF9wb3J0KGNoYXIgKnN0ciwgY2hhciAqKmhvc3RfcHRyLCAKLSsJICAgICBj aGFyICoqcG9ydF9wdHIpCi0gCXsKLS0JY2hhciAqaCwqcDsKLSsJY2hhciAqaCwqcCwqeDsKLSAK LS0JaD1zdHI7Ci0tCXA9c3RyY2hyKHN0ciwnOicpOwotKwl4PWg9c3RyOwotKwlpZiAoKmggPT0g J1snKQotKwkJewotKwkJaCsrOwotKwkJcD1zdHJjaHIoaCwnXScpOwotIAlpZiAocCA9PSBOVUxM KQotIAkJewotLQkJQklPX3ByaW50ZihiaW9fZXJyLCJubyBwb3J0IGRlZmluZWRcbiIpOwotKwkJ CUJJT19wcmludGYoYmlvX2Vyciwibm8gZW5kaW5nIGJyYWNrZXQgZm9yIElQdjYgYWRkcmVzc1xu Iik7Ci0gCQlyZXR1cm4oMCk7Ci0gCQl9Ci0gCSoocCsrKT0nXDAnOwotLQotLQlpZiAoKGlwICE9 IE5VTEwpICYmICFob3N0X2lwKHN0cixpcCkpCi0tCQlnb3RvIGVycjsKLS0JaWYgKGhvc3RfcHRy ICE9IE5VTEwpICpob3N0X3B0cj1oOwotLQotLQlpZiAoIWV4dHJhY3RfcG9ydChwLHBvcnRfcHRy KSkKLS0JCWdvdG8gZXJyOwotLQlyZXR1cm4oMSk7Ci0tZXJyOgotLQlyZXR1cm4oMCk7Ci0rCQl4 ID0gcDsKLSAJfQotLQotLXN0YXRpYyBpbnQgaG9zdF9pcChjaGFyICpzdHIsIHVuc2lnbmVkIGNo YXIgaXBbNF0pCi0tCXsKLS0JdW5zaWduZWQgaW50IGluWzRdOyAKLS0JaW50IGk7Ci0tCi0tCWlm IChzc2NhbmYoc3RyLCIldS4ldS4ldS4ldSIsJihpblswXSksJihpblsxXSksJihpblsyXSksJihp blszXSkpID09IDQpCi0tCQl7Ci0tCQlmb3IgKGk9MDsgaTw0OyBpKyspCi0tCQkJaWYgKGluW2ld ID4gMjU1KQotLQkJCQl7Ci0tCQkJCUJJT19wcmludGYoYmlvX2VyciwiaW52YWxpZCBJUCBhZGRy ZXNzXG4iKTsKLS0JCQkJZ290byBlcnI7Ci0tCQkJCX0KLS0JCWlwWzBdPWluWzBdOwotLQkJaXBb MV09aW5bMV07Ci0tCQlpcFsyXT1pblsyXTsKLS0JCWlwWzNdPWluWzNdOwotLQkJfQotLQllbHNl Ci0tCQl7IC8qIGRvIGEgZ2V0aG9zdGJ5bmFtZSAqLwotLQkJc3RydWN0IGhvc3RlbnQgKmhlOwot LQotLQkJaWYgKCFzc2xfc29ja19pbml0KCkpIHJldHVybigwKTsKLS0KLS0JCWhlPUdldEhvc3RC eU5hbWUoc3RyKTsKLS0JCWlmIChoZSA9PSBOVUxMKQotLQkJCXsKLS0JCQlCSU9fcHJpbnRmKGJp b19lcnIsImdldGhvc3RieW5hbWUgZmFpbHVyZVxuIik7Ci0tCQkJZ290byBlcnI7Ci0tCQkJfQot LQkJLyogY2FzdCB0byBzaG9ydCBiZWNhdXNlIG9mIHdpbjE2IHdpbnNvY2sgZGVmaW5pdGlvbiAq LwotLQkJaWYgKChzaG9ydCloZS0+aF9hZGRydHlwZSAhPSBBRl9JTkVUKQotKwlwPXN0cmNocih4 LCc6Jyk7Ci0rCWlmIChwID09IE5VTEwpCi0gCQkJewotLQkJCUJJT19wcmludGYoYmlvX2Vyciwi Z2V0aG9zdGJ5bmFtZSBhZGRyIGlzIG5vdCBBRl9JTkVUXG4iKTsKLS0JCQlyZXR1cm4oMCk7Ci0t CQkJfQotLQkJaXBbMF09aGUtPmhfYWRkcl9saXN0WzBdWzBdOwotLQkJaXBbMV09aGUtPmhfYWRk cl9saXN0WzBdWzFdOwotLQkJaXBbMl09aGUtPmhfYWRkcl9saXN0WzBdWzJdOwotLQkJaXBbM109 aGUtPmhfYWRkcl9saXN0WzBdWzNdOwotLQkJfQotLQlyZXR1cm4oMSk7Ci0tZXJyOgotKwkJQklP X3ByaW50ZihiaW9fZXJyLCJubyBwb3J0IGRlZmluZWRcbiIpOwotIAlyZXR1cm4oMCk7Ci0gCX0K LSsJKihwKyspPSdcMCc7Ci0gCi0taW50IGV4dHJhY3RfcG9ydChjaGFyICpzdHIsIHNob3J0ICpw b3J0X3B0cikKLS0JewotLQlpbnQgaTsKLS0Jc3RydWN0IHNlcnZlbnQgKnM7Ci0rCWlmIChob3N0 X3B0ciAhPSBOVUxMKSAqaG9zdF9wdHI9aDsKLSsJaWYgKHBvcnRfcHRyICE9IE5VTEwpICpwb3J0 X3B0cj1wOwotIAotLQlpPWF0b2koc3RyKTsKLS0JaWYgKGkgIT0gMCkKLS0JCSpwb3J0X3B0cj0o dW5zaWduZWQgc2hvcnQpaTsKLS0JZWxzZQotLQkJewotLQkJcz1nZXRzZXJ2YnluYW1lKHN0ciwi dGNwIik7Ci0tCQlpZiAocyA9PSBOVUxMKQotLQkJCXsKLS0JCQlCSU9fcHJpbnRmKGJpb19lcnIs ImdldHNlcnZieW5hbWUgZmFpbHVyZSBmb3IgJXNcbiIsc3RyKTsKLS0JCQlyZXR1cm4oMCk7Ci0t CQkJfQotLQkJKnBvcnRfcHRyPW50b2hzKCh1bnNpZ25lZCBzaG9ydClzLT5zX3BvcnQpOwotLQkJ fQotIAlyZXR1cm4oMSk7Ci0gCX0KLSAKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4wYS1tYW5m aXgucGF0Y2ggYi9vcGVuc3NsLTEuMC4wYS1tYW5maXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uMGQzZGMwNAotLS0gL2Rldi9udWxsCisrKyBiL29wZW5zc2wtMS4w LjBhLW1hbmZpeC5wYXRjaApAQCAtMCwwICsxLDIxIEBACitkaWZmIC11cCBvcGVuc3NsLTEuMC4w YS9kb2MvYXBwcy9vcGVuc3NsLnBvZC5tYW5maXggb3BlbnNzbC0xLjAuMGEvZG9jL2FwcHMvb3Bl bnNzbC5wb2QKKy0tLSBvcGVuc3NsLTEuMC4wYS9kb2MvYXBwcy9vcGVuc3NsLnBvZC5tYW5maXgJ MjAxMC0wMS0yMSAxOTo0NjoyOC4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4wYS9k b2MvYXBwcy9vcGVuc3NsLnBvZAkyMDEwLTA2LTMwIDE0OjI0OjUwLjAwMDAwMDAwMCArMDIwMAor QEAgLTI4Nyw4ICsyODcsNiBAQCBTSEEgRGlnZXN0CisgCisgU0hBLTEgRGlnZXN0CisgCistPWJh Y2sKKy0KKyA9aXRlbSBCPHNoYTIyND4KKyAKKyBTSEEtMjI0IERpZ2VzdAorQEAgLTMwNSw2ICsz MDMsOCBAQCBTSEEtMzg0IERpZ2VzdAorIAorIFNIQS01MTIgRGlnZXN0CisgCisrPWJhY2sKKysK KyA9aGVhZDIgRU5DT0RJTkcgQU5EIENJUEhFUiBDT01NQU5EUworIAorID1vdmVyIDEwCgpkaWZm IC0tZ2l0IGEvb3BlbnNzbC0xLjAuMGEtdmVyc2lvbi5wYXRjaCBiL29wZW5zc2wtMS4wLjBhLXZl cnNpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1YTAyMzMuLjAwMDAw MDAKLS0tIGEvb3BlbnNzbC0xLjAuMGEtdmVyc2lvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDEzICswLDAgQEAKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjBhL2NyeXB0by9vcGVuc3Nsdi5oLnZl cnNpb24gb3BlbnNzbC0xLjAuMGEvY3J5cHRvL29wZW5zc2x2LmgKLS0tLSBvcGVuc3NsLTEuMC4w YS9jcnlwdG8vb3BlbnNzbHYuaC52ZXJzaW9uCTIwMTAtMDYtMDQgMTM6Mjg6NTIuMDAwMDAwMDAw ICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMGEvY3J5cHRvL29wZW5zc2x2LmgJMjAxMC0wNi0wNCAx MzoyOTo0Mi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0yNSw3ICsyNSw4IEBACi0gICogKFByaW9yIHRv IDAuOS41YSBiZXRhMSwgYSBkaWZmZXJlbnQgc2NoZW1lIHdhcyB1c2VkOiBNTU5ORkZSQkIgZm9y Ci0gICogIG1ham9yIG1pbm9yIGZpeCBmaW5hbCBwYXRjaC9iZXRhKQotICAqLwotLSNkZWZpbmUg T1BFTlNTTF9WRVJTSU9OX05VTUJFUgkweDEwMDAwMDFmTAotKy8qIHdlIGhhdmUgdG8ga2VlcCB0 aGUgdmVyc2lvbiBudW1iZXIgdG8gbm90IGJyZWFrIHRoZSBhYmkgKi8KLSsjZGVmaW5lIE9QRU5T U0xfVkVSU0lPTl9OVU1CRVIJMHgxMDAwMDAwM0wKLSAjaWZkZWYgT1BFTlNTTF9GSVBTCi0gI2Rl ZmluZSBPUEVOU1NMX1ZFUlNJT05fVEVYVAkiT3BlblNTTCAxLjAuMGEtZmlwcyAxIEp1biAyMDEw IgotICNlbHNlCgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjAuMGItYWVzbmkucGF0Y2ggYi9vcGVu c3NsLTEuMC4wYi1hZXNuaS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li4xZGRhNmJmCi0tLSAvZGV2L251bGwKKysrIGIvb3BlbnNzbC0xLjAuMGItYWVzbmkucGF0Y2gK QEAgLTAsMCArMSwyMzg4IEBACitkaWZmIC11cCBvcGVuc3NsLTEuMC4wYi9Db25maWd1cmUuYWVz bmkgb3BlbnNzbC0xLjAuMGIvQ29uZmlndXJlCistLS0gb3BlbnNzbC0xLjAuMGIvQ29uZmlndXJl LmFlc25pCTIwMTAtMTEtMTYgMTc6MzM6MjIuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0x LjAuMGIvQ29uZmlndXJlCTIwMTAtMTEtMTYgMTc6MzU6MTUuMDAwMDAwMDAwICswMTAwCitAQCAt MTIzLDExICsxMjMsMTEgQEAgbXkgJHRsaWI9Ii1sbnNsIC1sc29ja2V0IjsKKyBteSAkYml0czE9 IlRISVJUWV9UV09fQklUICI7CisgbXkgJGJpdHMyPSJTSVhUWV9GT1VSX0JJVCAiOworIAorLW15 ICR4ODZfYXNtPSJ4ODZjcHVpZC5vOmJuLTU4Ni5vIGNvLTU4Ni5vIHg4Ni1tb250Lm86ZGVzLTU4 Ni5vIGNyeXB0NTg2Lm86YWVzLTU4Ni5vOmJmLTU4Ni5vOm1kNS01ODYubzpzaGExLTU4Ni5vIHNo YTI1Ni01ODYubyBzaGE1MTItNTg2Lm86Y2FzdC01ODYubzpyYzQtNTg2Lm86cm1kLTU4Ni5vOnJj NS01ODYubzp3cF9ibG9jay5vIHdwLW1teC5vOmNtbGwteDg2Lm8iOworK215ICR4ODZfYXNtPSJ4 ODZjcHVpZC5vOmJuLTU4Ni5vIGNvLTU4Ni5vIHg4Ni1tb250Lm86ZGVzLTU4Ni5vIGNyeXB0NTg2 Lm86YWVzLTU4Ni5vIGFlc25pLXg4Ni5vOmJmLTU4Ni5vOm1kNS01ODYubzpzaGExLTU4Ni5vIHNo YTI1Ni01ODYubyBzaGE1MTItNTg2Lm86Y2FzdC01ODYubzpyYzQtNTg2Lm86cm1kLTU4Ni5vOnJj NS01ODYubzp3cF9ibG9jay5vIHdwLW1teC5vOmNtbGwteDg2Lm8iOworIAorIG15ICR4ODZfZWxm X2FzbT0iJHg4Nl9hc206ZWxmIjsKKyAKKy1teSAkeDg2XzY0X2FzbT0ieDg2XzY0Y3B1aWQubzp4 ODZfNjQtZ2NjLm8geDg2XzY0LW1vbnQubzo6YWVzLXg4Nl82NC5vOjptZDUteDg2XzY0Lm86c2hh MS14ODZfNjQubyBzaGEyNTYteDg2XzY0Lm8gc2hhNTEyLXg4Nl82NC5vOjpyYzQteDg2XzY0Lm86 Ojp3cC14ODZfNjQubzpjbWxsLXg4Nl82NC5vIGNtbGxfbWlzYy5vIjsKKytteSAkeDg2XzY0X2Fz bT0ieDg2XzY0Y3B1aWQubzp4ODZfNjQtZ2NjLm8geDg2XzY0LW1vbnQubzo6YWVzLXg4Nl82NC5v IGFlc25pLXg4Nl82NC5vOjptZDUteDg2XzY0Lm86c2hhMS14ODZfNjQubyBzaGEyNTYteDg2XzY0 Lm8gc2hhNTEyLXg4Nl82NC5vOjpyYzQteDg2XzY0Lm86Ojp3cC14ODZfNjQubzpjbWxsLXg4Nl82 NC5vIGNtbGxfbWlzYy5vIjsKKyBteSAkaWE2NF9hc209ImlhNjRjcHVpZC5vOmJuLWlhNjQubzo6 YWVzX2NvcmUubyBhZXNfY2JjLm8gYWVzLWlhNjQubzo6bWQ1LWlhNjQubzpzaGExLWlhNjQubyBz aGEyNTYtaWE2NC5vIHNoYTUxMi1pYTY0Lm86OnJjNC1pYTY0Lm8gcmM0X3NrZXkubzo6Ojo6dm9p ZCI7CisgbXkgJHNwYXJjdjlfYXNtPSJzcGFyY3Y5Y2FwLm8gc3BhcmNjcHVpZC5vOmJuLXNwYXJj djkubyBzcGFyY3Y5LW1vbnQubyBzcGFyY3Y5YS1tb250Lm86ZGVzX2VuYy1zcGFyYy5vIGZjcnlw dF9iLm86YWVzX2NvcmUubyBhZXNfY2JjLm8gYWVzLXNwYXJjdjkubzo6OnNoYTEtc3BhcmN2OS5v IHNoYTI1Ni1zcGFyY3Y5Lm8gc2hhNTEyLXNwYXJjdjkubzo6Ojo6Ojp2b2lkIjsKKyBteSAkc3Bh cmN2OF9hc209IjpzcGFyY3Y4Lm86ZGVzX2VuYy1zcGFyYy5vIGZjcnlwdF9iLm86Ojo6Ojo6Ojo6 OnZvaWQiOworQEAgLTQ5MSw3ICs0OTEsNyBAQCBteSAldGFibGU9KAorICMKKyAjIFdpbjY0IHRh cmdldHMsIFdJTjY0SSBkZW5vdGVzIElBLTY0IGFuZCBXSU42NEEgLSBBTUQ2NAorICJWQy1XSU42 NEkiLCJjbDotVzMgLUdzMCAtR3kgLW5vbG9nbyAtRE9QRU5TU0xfU1lTTkFNRV9XSU4zMiAtRFdJ TjMyX0xFQU5fQU5EX01FQU4gLURMX0VORElBTiAtRFVOSUNPREUgLURfVU5JQ09ERSAtRF9DUlRf U0VDVVJFX05PX0RFUFJFQ0FURTo6OldJTjY0STo6U0lYVFlfRk9VUl9CSVQgUkM0X0NIVU5LX0xM IERFU19JTlQgRVhQT1JUX1ZBUl9BU19GTjppYTY0Y3B1aWQubzppYTY0Lm86OmFlc19jb3JlLm8g YWVzX2NiYy5vIGFlcy1pYTY0Lm86Om1kNS1pYTY0Lm86c2hhMS1pYTY0Lm8gc2hhMjU2LWlhNjQu byBzaGE1MTItaWE2NC5vOjo6Ojo6Omlhczp3aW4zMiIsCistIlZDLVdJTjY0QSIsImNsOi1XMyAt R3MwIC1HeSAtbm9sb2dvIC1ET1BFTlNTTF9TWVNOQU1FX1dJTjMyIC1EV0lOMzJfTEVBTl9BTkRf TUVBTiAtRExfRU5ESUFOIC1EVU5JQ09ERSAtRF9VTklDT0RFIC1EX0NSVF9TRUNVUkVfTk9fREVQ UkVDQVRFOjo6V0lONjRBOjpTSVhUWV9GT1VSX0JJVCBSQzRfQ0hVTktfTEwgREVTX0lOVCBFWFBP UlRfVkFSX0FTX0ZOOng4Nl82NGNwdWlkLm86Ym5fYXNtLm8geDg2XzY0LW1vbnQubzo6YWVzLXg4 Nl82NC5vOjptZDUteDg2XzY0Lm86c2hhMS14ODZfNjQubyBzaGEyNTYteDg2XzY0Lm8gc2hhNTEy LXg4Nl82NC5vOjpyYzQteDg2XzY0Lm86Ojp3cC14ODZfNjQubzpjbWxsLXg4Nl82NC5vIGNtbGxf bWlzYy5vOmF1dG86d2luMzIiLAorKyJWQy1XSU42NEEiLCJjbDotVzMgLUdzMCAtR3kgLW5vbG9n byAtRE9QRU5TU0xfU1lTTkFNRV9XSU4zMiAtRFdJTjMyX0xFQU5fQU5EX01FQU4gLURMX0VORElB TiAtRFVOSUNPREUgLURfVU5JQ09ERSAtRF9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTo6OldJTjY0 QTo6U0lYVFlfRk9VUl9CSVQgUkM0X0NIVU5LX0xMIERFU19JTlQgRVhQT1JUX1ZBUl9BU19GTjp4 ODZfNjRjcHVpZC5vOmJuX2FzbS5vIHg4Nl82NC1tb250Lm86OmFlcy14ODZfNjQubyBhZXNuaS14 ODZfNjQubzo6bWQ1LXg4Nl82NC5vOnNoYTEteDg2XzY0Lm8gc2hhMjU2LXg4Nl82NC5vIHNoYTUx Mi14ODZfNjQubzo6cmM0LXg4Nl82NC5vOjo6d3AteDg2XzY0Lm86Y21sbC14ODZfNjQubyBjbWxs X21pc2MubzphdXRvOndpbjMyIiwKKyAiZGVidWctVkMtV0lONjRJIiwiY2w6LVczIC1HczAgLUd5 IC1aaSAtbm9sb2dvIC1ET1BFTlNTTF9TWVNOQU1FX1dJTjMyIC1EV0lOMzJfTEVBTl9BTkRfTUVB TiAtRExfRU5ESUFOIC1EVU5JQ09ERSAtRF9VTklDT0RFIC1EX0NSVF9TRUNVUkVfTk9fREVQUkVD QVRFOjo6V0lONjRJOjpTSVhUWV9GT1VSX0JJVCBSQzRfQ0hVTktfTEwgREVTX0lOVCBFWFBPUlRf VkFSX0FTX0ZOOmlhNjRjcHVpZC5vOmlhNjQubzo6YWVzX2NvcmUubyBhZXNfY2JjLm8gYWVzLWlh NjQubzo6bWQ1LWlhNjQubzpzaGExLWlhNjQubyBzaGEyNTYtaWE2NC5vIHNoYTUxMi1pYTY0Lm86 Ojo6Ojo6aWFzOndpbjMyIiwKKyAiZGVidWctVkMtV0lONjRBIiwiY2w6LVczIC1HczAgLUd5IC1a aSAtbm9sb2dvIC1ET1BFTlNTTF9TWVNOQU1FX1dJTjMyIC1EV0lOMzJfTEVBTl9BTkRfTUVBTiAt RExfRU5ESUFOIC1EVU5JQ09ERSAtRF9VTklDT0RFIC1EX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRF Ojo6V0lONjRBOjpTSVhUWV9GT1VSX0JJVCBSQzRfQ0hVTktfTEwgREVTX0lOVCBFWFBPUlRfVkFS X0FTX0ZOOng4Nl82NGNwdWlkLm86Ym5fYXNtLm8geDg2XzY0LW1vbnQubzo6YWVzLXg4Nl82NC5v OjptZDUteDg2XzY0Lm86c2hhMS14ODZfNjQubyBzaGEyNTYteDg2XzY0Lm8gc2hhNTEyLXg4Nl82 NC5vOjpyYzQteDg2XzY0Lm86Ojp3cC14ODZfNjQubzpjbWxsLXg4Nl82NC5vIGNtbGxfbWlzYy5v OmF1dG86d2luMzIiLAorICMgeDg2IFdpbjMyIHRhcmdldCBkZWZhdWx0cyB0byBBTlNJIEFQSSwg aWYgeW91IHdhbnQgVU5JQ09ERSwgY29tcGxlbWVudAorQEAgLTE0MTksNiArMTQxOSw3IEBAIGlm ICgkcm1kMTYwX29iaiA9fiAvXC5vJC8pCisgaWYgKCRhZXNfb2JqID1+IC9cLm8kLykKKyAJewor IAkkY2ZsYWdzLj0iIC1EQUVTX0FTTSI7CisrCSRhZXNfb2JqID1+IHMvXHMqYWVzbmlcLXg4Nlwu by8vIGlmICgkbm9fc3NlMik7CisgCX0KKyBlbHNlCXsKKyAJJGFlc19vYmo9JGFlc19lbmM7Citk aWZmIC11cCBvcGVuc3NsLTEuMC4wYi9jcnlwdG8vYWVzL2FzbS9hZXNuaS14ODYucGwuYWVzbmkg b3BlbnNzbC0xLjAuMGIvY3J5cHRvL2Flcy9hc20vYWVzbmkteDg2LnBsCistLS0gb3BlbnNzbC0x LjAuMGIvY3J5cHRvL2Flcy9hc20vYWVzbmkteDg2LnBsLmFlc25pCTIwMTAtMTEtMTYgMTc6MzM6 MjMuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMGIvY3J5cHRvL2Flcy9hc20vYWVz bmkteDg2LnBsCTIwMTAtMTEtMTYgMTc6MzM6MjMuMDAwMDAwMDAwICswMTAwCitAQCAtMCwwICsx LDc2NSBAQAorKyMhL3Vzci9iaW4vZW52IHBlcmwKKysKKysjID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisrIyBXcml0 dGVuIGJ5IEFuZHkgUG9seWFrb3YgPGFwcHJvQGZ5LmNoYWxtZXJzLnNlPiBmb3IgdGhlIE9wZW5T U0wKKysjIHByb2plY3QuIFRoZSBtb2R1bGUgaXMsIGhvd2V2ZXIsIGR1YWwgbGljZW5zZWQgdW5k ZXIgT3BlblNTTCBhbmQKKysjIENSWVBUT0dBTVMgbGljZW5zZXMgZGVwZW5kaW5nIG9uIHdoZXJl IHlvdSBvYnRhaW4gaXQuIEZvciBmdXJ0aGVyCisrIyBkZXRhaWxzIHNlZSBodHRwOi8vd3d3Lm9w ZW5zc2wub3JnL35hcHByby9jcnlwdG9nYW1zLy4KKysjID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisrIworKyMgVGhp cyBtb2R1bGUgaW1wbGVtZW50cyBzdXBwb3J0IGZvciBJbnRlbCBBRVMtTkkgZXh0ZW5zaW9uLiBJ bgorKyMgT3BlblNTTCBjb250ZXh0IGl0J3MgdXNlZCB3aXRoIEludGVsIGVuZ2luZSwgYnV0IGNh biBhbHNvIGJlIHVzZWQgYXMKKysjIGRyb3AtaW4gcmVwbGFjZW1lbnQgZm9yIGNyeXB0by9hZXMv YXNtL2Flcy01ODYucGwgW3NlZSBiZWxvdyBmb3IKKysjIGRldGFpbHNdLgorKworKyRQUkVGSVg9 ImFlc25pIjsJIyBpZiAkUFJFRklYIGlzIHNldCB0byAiQUVTIiwgdGhlIHNjcmlwdAorKwkJCSMg Z2VuZXJhdGVzIGRyb3AtaW4gcmVwbGFjZW1lbnQgZm9yCisrCQkJIyBjcnlwdG8vYWVzL2FzbS9h ZXMtNTg2LnBsOi0pCisrCisrJDAgPX4gbS8oLipbXC9cXF0pW15cL1xcXSskLzsgJGRpcj0kMTsK KytwdXNoKEBJTkMsIiR7ZGlyfSIsIiR7ZGlyfS4uLy4uL3Blcmxhc20iKTsKKytyZXF1aXJlICJ4 ODZhc20ucGwiOworKworKyZhc21faW5pdCgkQVJHVlswXSwkMCk7CisrCisrJG1vdmVrZXkgPSBl dmFsKCRSUkVGSVggZXEgImFzZW5pIiA/ICIqbW92YXBzIiA6ICIqbW92dXBzIik7CisrCisrJGxl bj0iZWF4IjsKKyskcm91bmRzPSJlY3giOworKyRrZXk9ImVkeCI7CisrJGlucD0iZXNpIjsKKysk b3V0PSJlZGkiOworKyRyb3VuZHNfPSJlYngiOwkjIGJhY2t1cCBjb3B5IGZvciAkcm91bmRzCisr JGtleV89ImVicCI7CSMgYmFja3VwIGNvcHkgZm9yICRrZXkKKysKKyskaW5vdXQwPSJ4bW0wIjsK KyskaW5vdXQxPSJ4bW0xIjsKKyskaW5vdXQyPSJ4bW0yIjsKKyskcm5ka2V5MD0ieG1tMyI7Cisr JHJuZGtleTE9InhtbTQiOworKyRpdmVjPSJ4bW01IjsKKyskaW4wPSJ4bW02IjsKKyskaW4xPSJ4 bW03IjsJJGlub3V0Mz0ieG1tNyI7CisrCisrIyBJbmxpbmUgdmVyc2lvbiBvZiBpbnRlcm5hbCBh ZXNuaV9bZW58ZGVdY3J5cHQxCisrc3ViIGFlc25pX2lubGluZV9nZW5lcmF0ZTEKKyt7IG15ICRw PXNoaWZ0OworKworKyAgICAmJG1vdmVrZXkJCSgkcm5ka2V5MCwmUVdQKDAsJGtleSkpOworKyAg ICAmJG1vdmVrZXkJCSgkcm5ka2V5MSwmUVdQKDE2LCRrZXkpKTsKKysgICAgJmxlYQkJKCRrZXks JkRXUCgzMiwka2V5KSk7CisrICAgICZweG9yCQkoJGlub3V0MCwkcm5ka2V5MCk7CisrICAgICZz ZXRfbGFiZWwoIiR7cH0xX2xvb3AiKTsKKysJZXZhbCImYWVzJHtwfQkoJGlub3V0MCwkcm5ka2V5 MSkiOworKwkmZGVjCQkoJHJvdW5kcyk7CisrCSYkbW92ZWtleQkoJHJuZGtleTEsJlFXUCgwLCRr ZXkpKTsKKysJJmxlYQkJKCRrZXksJkRXUCgxNiwka2V5KSk7CisrICAgICZqbnoJCSgmbGFiZWwo IiR7cH0xX2xvb3AiKSk7CisrICAgIGV2YWwiJmFlcyR7cH1sYXN0CSgkaW5vdXQwLCRybmRrZXkx KSI7CisrfQorKworK3N1YiBhZXNuaV9nZW5lcmF0ZTEJIyBmdWxseSB1bnJvbGxlZCBsb29wCisr eyBteSAkcD1zaGlmdDsKKysKKysgICAgJmZ1bmN0aW9uX2JlZ2luX0IoIl9hZXNuaV8ke3B9cnlw dDEiKTsKKysJJiRtb3Zla2V5CSgkcm5ka2V5MCwmUVdQKDAsJGtleSkpOworKwkmJG1vdmVrZXkJ KCRybmRrZXkxLCZRV1AoMHgxMCwka2V5KSk7CisrCSZjbXAJCSgkcm91bmRzLDExKTsKKysJJnB4 b3IJCSgkaW5vdXQwLCRybmRrZXkwKTsKKysJJiRtb3Zla2V5CSgkcm5ka2V5MCwmUVdQKDB4MjAs JGtleSkpOworKwkmbGVhCQkoJGtleSwmRFdQKDB4MzAsJGtleSkpOworKwkmamIJCSgmbGFiZWwo IiR7cH0xMjgiKSk7CisrCSZsZWEJCSgka2V5LCZEV1AoMHgyMCwka2V5KSk7CisrCSZqZQkJKCZs YWJlbCgiJHtwfTE5MiIpKTsKKysJJmxlYQkJKCRrZXksJkRXUCgweDIwLCRrZXkpKTsKKysJZXZh bCImYWVzJHtwfQkoJGlub3V0MCwkcm5ka2V5MSkiOworKwkmJG1vdmVrZXkJKCRybmRrZXkxLCZR V1AoLTB4NDAsJGtleSkpOworKwlldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkwKSI7Cisr CSYkbW92ZWtleQkoJHJuZGtleTAsJlFXUCgtMHgzMCwka2V5KSk7CisrICAgICZzZXRfbGFiZWwo IiR7cH0xOTIiKTsKKysJZXZhbCImYWVzJHtwfQkoJGlub3V0MCwkcm5ka2V5MSkiOworKwkmJG1v dmVrZXkJKCRybmRrZXkxLCZRV1AoLTB4MjAsJGtleSkpOworKwlldmFsIiZhZXMke3B9CSgkaW5v dXQwLCRybmRrZXkwKSI7CisrCSYkbW92ZWtleQkoJHJuZGtleTAsJlFXUCgtMHgxMCwka2V5KSk7 CisrICAgICZzZXRfbGFiZWwoIiR7cH0xMjgiKTsKKysJZXZhbCImYWVzJHtwfQkoJGlub3V0MCwk cm5ka2V5MSkiOworKwkmJG1vdmVrZXkJKCRybmRrZXkxLCZRV1AoMCwka2V5KSk7CisrCWV2YWwi JmFlcyR7cH0JKCRpbm91dDAsJHJuZGtleTApIjsKKysJJiRtb3Zla2V5CSgkcm5ka2V5MCwmUVdQ KDB4MTAsJGtleSkpOworKwlldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkxKSI7CisrCSYk bW92ZWtleQkoJHJuZGtleTEsJlFXUCgweDIwLCRrZXkpKTsKKysJZXZhbCImYWVzJHtwfQkoJGlu b3V0MCwkcm5ka2V5MCkiOworKwkmJG1vdmVrZXkJKCRybmRrZXkwLCZRV1AoMHgzMCwka2V5KSk7 CisrCWV2YWwiJmFlcyR7cH0JKCRpbm91dDAsJHJuZGtleTEpIjsKKysJJiRtb3Zla2V5CSgkcm5k a2V5MSwmUVdQKDB4NDAsJGtleSkpOworKwlldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkw KSI7CisrCSYkbW92ZWtleQkoJHJuZGtleTAsJlFXUCgweDUwLCRrZXkpKTsKKysJZXZhbCImYWVz JHtwfQkoJGlub3V0MCwkcm5ka2V5MSkiOworKwkmJG1vdmVrZXkJKCRybmRrZXkxLCZRV1AoMHg2 MCwka2V5KSk7CisrCWV2YWwiJmFlcyR7cH0JKCRpbm91dDAsJHJuZGtleTApIjsKKysJJiRtb3Zl a2V5CSgkcm5ka2V5MCwmUVdQKDB4NzAsJGtleSkpOworKwlldmFsIiZhZXMke3B9CSgkaW5vdXQw LCRybmRrZXkxKSI7CisrICAgIGV2YWwiJmFlcyR7cH1sYXN0CSgkaW5vdXQwLCRybmRrZXkwKSI7 CisrICAgICZyZXQoKTsKKysgICAgJmZ1bmN0aW9uX2VuZF9CKCJfYWVzbmlfJHtwfXJ5cHQxIik7 CisrfQorKworKyMgdm9pZCAkUFJFRklYX2VuY3J5cHQgKGNvbnN0IHZvaWQgKmlucCx2b2lkICpv dXQsY29uc3QgQUVTX0tFWSAqa2V5KTsKKysjICZhZXNuaV9nZW5lcmF0ZTEoImRlYyIpOworKyZm dW5jdGlvbl9iZWdpbl9CKCIke1BSRUZJWH1fZW5jcnlwdCIpOworKwkmbW92CSgiZWF4Iiwmd3Bh cmFtKDApKTsKKysJJm1vdgkoJGtleSwmd3BhcmFtKDIpKTsKKysJJm1vdnVwcwkoJGlub3V0MCwm UVdQKDAsImVheCIpKTsKKysJJm1vdgkoJHJvdW5kcywmRFdQKDI0MCwka2V5KSk7CisrCSZtb3YJ KCJlYXgiLCZ3cGFyYW0oMSkpOworKwkmYWVzbmlfaW5saW5lX2dlbmVyYXRlMSgiZW5jIik7CSMg JmNhbGwJKCJfYWVzbmlfZW5jcnlwdDEiKTsKKysJJm1vdnVwcwkoJlFXUCgwLCJlYXgiKSwkaW5v dXQwKTsKKysJJnJldAkoKTsKKysmZnVuY3Rpb25fZW5kX0IoIiR7UFJFRklYfV9lbmNyeXB0Iik7 CisrCisrIyB2b2lkICRQUkVGSVhfZGVjcnlwdCAoY29uc3Qgdm9pZCAqaW5wLHZvaWQgKm91dCxj b25zdCBBRVNfS0VZICprZXkpOworKyMgJmFlc25pX2dlbmVyYXRlMSgiZGVjIik7CisrJmZ1bmN0 aW9uX2JlZ2luX0IoIiR7UFJFRklYfV9kZWNyeXB0Iik7CisrCSZtb3YJKCJlYXgiLCZ3cGFyYW0o MCkpOworKwkmbW92CSgka2V5LCZ3cGFyYW0oMikpOworKwkmbW92dXBzCSgkaW5vdXQwLCZRV1Ao MCwiZWF4IikpOworKwkmbW92CSgkcm91bmRzLCZEV1AoMjQwLCRrZXkpKTsKKysJJm1vdgkoImVh eCIsJndwYXJhbSgxKSk7CisrCSZhZXNuaV9pbmxpbmVfZ2VuZXJhdGUxKCJkZWMiKTsJIyAmY2Fs bAkoIl9hZXNuaV9kZWNyeXB0MSIpOworKwkmbW92dXBzCSgmUVdQKDAsImVheCIpLCRpbm91dDAp OworKwkmcmV0CSgpOworKyZmdW5jdGlvbl9lbmRfQigiJHtQUkVGSVh9X2RlY3J5cHQiKTsKKysM CisrIyBfYWVzbmlfW2VufGRlXWNyeXB0WzM0XSBhcmUgcHJpdmF0ZSBpbnRlcmZhY2VzLCBOIGRl bm90ZXMgaW50ZXJsZWF2ZQorKyMgZmFjdG9yLiBXaHkgM3ggc3Vicm91dGluZSBpcyB1c2VkIGlu IGxvb3BzPyBFdmVuIHRob3VnaCBhZXNbZW5jfGRlY10KKysjIGxhdGVuY3kgaXMgNiwgaXQgdHVy bmVkIG91dCB0aGF0IGl0IGNhbiBiZSBzY2hlZHVsZWQgb25seSBldmVyeQorKyMgKnNlY29uZCog Y3ljbGUuIFRodXMgM3ggaW50ZXJsZWF2ZSBpcyB0aGUgb25lIHByb3ZpZGluZyBvcHRpbWFsCisr IyB1dGlsaXphdGlvbiwgaS5lLiB3aGVuIHN1YnJvdXRpbmUncyB0aHJvdWdocHV0IGlzIHZpcnR1 YWxseSBzYW1lIGFzCisrIyBvZiBub24taW50ZXJsZWF2ZWQgc3Vicm91dGluZSBbZm9yIG51bWJl ciBvZiBpbnB1dCBibG9ja3MgdXAgdG8gM10uCisrIyBUaGlzIGlzIHdoeSBpdCBtYWtlcyBubyBz ZW5zZSB0byBpbXBsZW1lbnQgMnggc3Vicm91dGluZS4gQXMgc29vbgorKyMgYXMvaWYgSW50ZWwg aW1wcm92ZXMgdGhyb3VnaHB1dCBieSBtYWtpbmcgaXQgcG9zc2libGUgdG8gc2NoZWR1bGUKKysj IHRoZSBpbnN0cnVjdGlvbnMgaW4gcXVlc3Rpb24gKmV2ZXJ5KiBjeWNsZXMgSSB3b3VsZCBoYXZl IHRvCisrIyBpbXBsZW1lbnQgNnggaW50ZXJsZWF2ZSBhbmQgdXNlIGl0IGluIGxvb3AuLi4KKytz dWIgYWVzbmlfZ2VuZXJhdGUzCisreyBteSAkcD1zaGlmdDsKKysKKysgICAgJmZ1bmN0aW9uX2Jl Z2luX0IoIl9hZXNuaV8ke3B9cnlwdDMiKTsKKysJJiRtb3Zla2V5CSgkcm5ka2V5MCwmUVdQKDAs JGtleSkpOworKwkmc2hyCQkoJHJvdW5kcywxKTsKKysJJiRtb3Zla2V5CSgkcm5ka2V5MSwmUVdQ KDE2LCRrZXkpKTsKKysJJmxlYQkJKCRrZXksJkRXUCgzMiwka2V5KSk7CisrCSZweG9yCQkoJGlu b3V0MCwkcm5ka2V5MCk7CisrCSZweG9yCQkoJGlub3V0MSwkcm5ka2V5MCk7CisrCSZweG9yCQko JGlub3V0Miwkcm5ka2V5MCk7CisrCSZqbXAJCSgmbGFiZWwoIiR7cH0zX2xvb3AiKSk7CisrICAg ICZzZXRfbGFiZWwoIiR7cH0zX2xvb3AiLDE2KTsKKysJZXZhbCImYWVzJHtwfQkoJGlub3V0MCwk cm5ka2V5MSkiOworKwkmJG1vdmVrZXkJKCRybmRrZXkwLCZRV1AoMCwka2V5KSk7CisrCWV2YWwi JmFlcyR7cH0JKCRpbm91dDEsJHJuZGtleTEpIjsKKysJJmRlYwkJKCRyb3VuZHMpOworKwlldmFs IiZhZXMke3B9CSgkaW5vdXQyLCRybmRrZXkxKSI7CisrCSYkbW92ZWtleQkoJHJuZGtleTEsJlFX UCgxNiwka2V5KSk7CisrCWV2YWwiJmFlcyR7cH0JKCRpbm91dDAsJHJuZGtleTApIjsKKysJJmxl YQkJKCRrZXksJkRXUCgzMiwka2V5KSk7CisrCWV2YWwiJmFlcyR7cH0JKCRpbm91dDEsJHJuZGtl eTApIjsKKysJZXZhbCImYWVzJHtwfQkoJGlub3V0Miwkcm5ka2V5MCkiOworKwkmam56CQkoJmxh YmVsKCIke3B9M19sb29wIikpOworKyAgICBldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkx KSI7CisrICAgICYkbW92ZWtleQkJKCRybmRrZXkwLCZRV1AoMCwka2V5KSk7CisrICAgIGV2YWwi JmFlcyR7cH0JKCRpbm91dDEsJHJuZGtleTEpIjsKKysgICAgZXZhbCImYWVzJHtwfQkoJGlub3V0 Miwkcm5ka2V5MSkiOworKyAgICBldmFsIiZhZXMke3B9bGFzdAkoJGlub3V0MCwkcm5ka2V5MCki OworKyAgICBldmFsIiZhZXMke3B9bGFzdAkoJGlub3V0MSwkcm5ka2V5MCkiOworKyAgICBldmFs IiZhZXMke3B9bGFzdAkoJGlub3V0Miwkcm5ka2V5MCkiOworKyAgICAmcmV0KCk7CisrICAgICZm dW5jdGlvbl9lbmRfQigiX2Flc25pXyR7cH1yeXB0MyIpOworK30KKysKKysjIDR4IGludGVybGVh dmUgaXMgaW1wbGVtZW50ZWQgdG8gaW1wcm92ZSBzbWFsbCBibG9jayBwZXJmb3JtYW5jZSwKKysj IG1vc3Qgbm90YWJseSBbYW5kIG5hdHVyYWxseV0gNCBibG9jayBieSB+MzAlLiBPbmUgY2FuIGFy Z3VlIHRoYXQgb25lCisrIyBzaG91bGQgaGF2ZSBpbXBsZW1lbnRlZCA1eCBhcyB3ZWxsLCBidXQg aW1wcm92ZW1lbnQgIHdvdWxkIGJlIDwyMCUsCisrIyBzbyBpdCdzIG5vdCB3b3J0aCBpdC4uLgor K3N1YiBhZXNuaV9nZW5lcmF0ZTQKKyt7IG15ICRwPXNoaWZ0OworKworKyAgICAmZnVuY3Rpb25f YmVnaW5fQigiX2Flc25pXyR7cH1yeXB0NCIpOworKwkmJG1vdmVrZXkJKCRybmRrZXkwLCZRV1Ao MCwka2V5KSk7CisrCSYkbW92ZWtleQkoJHJuZGtleTEsJlFXUCgxNiwka2V5KSk7CisrCSZzaHIJ CSgkcm91bmRzLDEpOworKwkmbGVhCQkoJGtleSwmRFdQKDMyLCRrZXkpKTsKKysJJnB4b3IJCSgk aW5vdXQwLCRybmRrZXkwKTsKKysJJnB4b3IJCSgkaW5vdXQxLCRybmRrZXkwKTsKKysJJnB4b3IJ CSgkaW5vdXQyLCRybmRrZXkwKTsKKysJJnB4b3IJCSgkaW5vdXQzLCRybmRrZXkwKTsKKysJJmpt cAkJKCZsYWJlbCgiJHtwfTNfbG9vcCIpKTsKKysgICAgJnNldF9sYWJlbCgiJHtwfTNfbG9vcCIs MTYpOworKwlldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkxKSI7CisrCSYkbW92ZWtleQko JHJuZGtleTAsJlFXUCgwLCRrZXkpKTsKKysJZXZhbCImYWVzJHtwfQkoJGlub3V0MSwkcm5ka2V5 MSkiOworKwkmZGVjCQkoJHJvdW5kcyk7CisrCWV2YWwiJmFlcyR7cH0JKCRpbm91dDIsJHJuZGtl eTEpIjsKKysJZXZhbCImYWVzJHtwfQkoJGlub3V0Mywkcm5ka2V5MSkiOworKwkmJG1vdmVrZXkJ KCRybmRrZXkxLCZRV1AoMTYsJGtleSkpOworKwlldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRr ZXkwKSI7CisrCSZsZWEJCSgka2V5LCZEV1AoMzIsJGtleSkpOworKwlldmFsIiZhZXMke3B9CSgk aW5vdXQxLCRybmRrZXkwKSI7CisrCWV2YWwiJmFlcyR7cH0JKCRpbm91dDIsJHJuZGtleTApIjsK KysJZXZhbCImYWVzJHtwfQkoJGlub3V0Mywkcm5ka2V5MCkiOworKwkmam56CQkoJmxhYmVsKCIk e3B9M19sb29wIikpOworKyAgICBldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkxKSI7Cisr ICAgICYkbW92ZWtleQkJKCRybmRrZXkwLCZRV1AoMCwka2V5KSk7CisrICAgIGV2YWwiJmFlcyR7 cH0JKCRpbm91dDEsJHJuZGtleTEpIjsKKysgICAgZXZhbCImYWVzJHtwfQkoJGlub3V0Miwkcm5k a2V5MSkiOworKyAgICBldmFsIiZhZXMke3B9CSgkaW5vdXQzLCRybmRrZXkxKSI7CisrICAgIGV2 YWwiJmFlcyR7cH1sYXN0CSgkaW5vdXQwLCRybmRrZXkwKSI7CisrICAgIGV2YWwiJmFlcyR7cH1s YXN0CSgkaW5vdXQxLCRybmRrZXkwKSI7CisrICAgIGV2YWwiJmFlcyR7cH1sYXN0CSgkaW5vdXQy LCRybmRrZXkwKSI7CisrICAgIGV2YWwiJmFlcyR7cH1sYXN0CSgkaW5vdXQzLCRybmRrZXkwKSI7 CisrICAgICZyZXQoKTsKKysgICAgJmZ1bmN0aW9uX2VuZF9CKCJfYWVzbmlfJHtwfXJ5cHQ0Iik7 CisrfQorKyZhZXNuaV9nZW5lcmF0ZTMoImVuYyIpIGlmICgkUFJFRklYIGVxICJhZXNuaSIpOwor KyZhZXNuaV9nZW5lcmF0ZTMoImRlYyIpOworKyZhZXNuaV9nZW5lcmF0ZTQoImVuYyIpIGlmICgk UFJFRklYIGVxICJhZXNuaSIpOworKyZhZXNuaV9nZW5lcmF0ZTQoImRlYyIpOworKworK2lmICgk UFJFRklYIGVxICJhZXNuaSIpIHsKKysjIHZvaWQgYWVzbmlfZWNiX2VuY3J5cHQgKGNvbnN0IHZv aWQgKmluLCB2b2lkICpvdXQsCisrIyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVu Z3RoLCBjb25zdCBBRVNfS0VZICprZXksCisrIyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg ZW5jKTsKKysmZnVuY3Rpb25fYmVnaW4oImFlc25pX2VjYl9lbmNyeXB0Iik7CisrCSZtb3YJKCRp bnAsJndwYXJhbSgwKSk7CisrCSZtb3YJKCRvdXQsJndwYXJhbSgxKSk7CisrCSZtb3YJKCRsZW4s JndwYXJhbSgyKSk7CisrCSZtb3YJKCRrZXksJndwYXJhbSgzKSk7CisrCSZtb3YJKCRyb3VuZHMs JndwYXJhbSg0KSk7CisrCSZjbXAJKCRsZW4sMTYpOworKwkmamIJKCZsYWJlbCgiZWNiX3JldCIp KTsKKysJJmFuZAkoJGxlbiwtMTYpOworKwkmdGVzdAkoJHJvdW5kcywkcm91bmRzKQorKwkmbW92 CSgkcm91bmRzLCZEV1AoMjQwLCRrZXkpKTsKKysJJm1vdgkoJGtleV8sJGtleSk7CQkjIGJhY2t1 cCAka2V5CisrCSZtb3YJKCRyb3VuZHNfLCRyb3VuZHMpOwkjIGJhY2t1cCAkcm91bmRzCisrCSZq egkoJmxhYmVsKCJlY2JfZGVjcnlwdCIpKTsKKysKKysJJnN1YgkoJGxlbiwweDQwKTsKKysJJmpi ZQkoJmxhYmVsKCJlY2JfZW5jX3RhaWwiKSk7CisrCSZqbXAJKCZsYWJlbCgiZWNiX2VuY19sb29w MyIpKTsKKysKKysmc2V0X2xhYmVsKCJlY2JfZW5jX2xvb3AzIiwxNik7CisrCSZtb3Z1cHMJKCRp bm91dDAsJlFXUCgwLCRpbnApKTsKKysJJm1vdnVwcwkoJGlub3V0MSwmUVdQKDB4MTAsJGlucCkp OworKwkmbW92dXBzCSgkaW5vdXQyLCZRV1AoMHgyMCwkaW5wKSk7CisrCSZjYWxsCSgiX2Flc25p X2VuY3J5cHQzIik7CisrCSZzdWIJKCRsZW4sMHgzMCk7CisrCSZsZWEJKCRpbnAsJkRXUCgweDMw LCRpbnApKTsKKysJJmxlYQkoJG91dCwmRFdQKDB4MzAsJG91dCkpOworKwkmbW92dXBzCSgmUVdQ KC0weDMwLCRvdXQpLCRpbm91dDApOworKwkmbW92CSgka2V5LCRrZXlfKTsJCSMgcmVzdG9yZSAk a2V5CisrCSZtb3Z1cHMJKCZRV1AoLTB4MjAsJG91dCksJGlub3V0MSk7CisrCSZtb3YJKCRyb3Vu ZHMsJHJvdW5kc18pOwkjIHJlc3RvcmUgJHJvdW5kcworKwkmbW92dXBzCSgmUVdQKC0weDEwLCRv dXQpLCRpbm91dDIpOworKwkmamEJKCZsYWJlbCgiZWNiX2VuY19sb29wMyIpKTsKKysKKysmc2V0 X2xhYmVsKCJlY2JfZW5jX3RhaWwiKTsKKysJJmFkZAkoJGxlbiwweDQwKTsKKysJJmp6CSgmbGFi ZWwoImVjYl9yZXQiKSk7CisrCisrCSZjbXAJKCRsZW4sMHgxMCk7CisrCSZtb3Z1cHMJKCRpbm91 dDAsJlFXUCgwLCRpbnApKTsKKysJJmplCSgmbGFiZWwoImVjYl9lbmNfb25lIikpOworKwkmY21w CSgkbGVuLDB4MjApOworKwkmbW92dXBzCSgkaW5vdXQxLCZRV1AoMHgxMCwkaW5wKSk7CisrCSZq ZQkoJmxhYmVsKCJlY2JfZW5jX3R3byIpKTsKKysJJmNtcAkoJGxlbiwweDMwKTsKKysJJm1vdnVw cwkoJGlub3V0MiwmUVdQKDB4MjAsJGlucCkpOworKwkmamUJKCZsYWJlbCgiZWNiX2VuY190aHJl ZSIpKTsKKysJJm1vdnVwcwkoJGlub3V0MywmUVdQKDB4MzAsJGlucCkpOworKwkmY2FsbAkoIl9h ZXNuaV9lbmNyeXB0NCIpOworKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7CisrCSZt b3Z1cHMJKCZRV1AoMHgxMCwkb3V0KSwkaW5vdXQxKTsKKysJJm1vdnVwcwkoJlFXUCgweDIwLCRv dXQpLCRpbm91dDIpOworKwkmbW92dXBzCSgmUVdQKDB4MzAsJG91dCksJGlub3V0Myk7CisrCWpt cAkoJmxhYmVsKCJlY2JfcmV0IikpOworKworKyZzZXRfbGFiZWwoImVjYl9lbmNfb25lIiwxNik7 CisrCSZhZXNuaV9pbmxpbmVfZ2VuZXJhdGUxKCJlbmMiKTsJIyAmY2FsbAkoIl9hZXNuaV9lbmNy eXB0MSIpOworKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7CisrCSZqbXAJKCZsYWJl bCgiZWNiX3JldCIpKTsKKysKKysmc2V0X2xhYmVsKCJlY2JfZW5jX3R3byIsMTYpOworKwkmY2Fs bAkoIl9hZXNuaV9lbmNyeXB0MyIpOworKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7 CisrCSZtb3Z1cHMJKCZRV1AoMHgxMCwkb3V0KSwkaW5vdXQxKTsKKysJJmptcAkoJmxhYmVsKCJl Y2JfcmV0IikpOworKworKyZzZXRfbGFiZWwoImVjYl9lbmNfdGhyZWUiLDE2KTsKKysJJmNhbGwJ KCJfYWVzbmlfZW5jcnlwdDMiKTsKKysJJm1vdnVwcwkoJlFXUCgwLCRvdXQpLCRpbm91dDApOwor KwkmbW92dXBzCSgmUVdQKDB4MTAsJG91dCksJGlub3V0MSk7CisrCSZtb3Z1cHMJKCZRV1AoMHgy MCwkb3V0KSwkaW5vdXQyKTsKKysJJmptcAkoJmxhYmVsKCJlY2JfcmV0IikpOworKworKyZzZXRf bGFiZWwoImVjYl9kZWNyeXB0IiwxNik7CisrCSZzdWIJKCRsZW4sMHg0MCk7CisrCSZqYmUJKCZs YWJlbCgiZWNiX2RlY190YWlsIikpOworKwkmam1wCSgmbGFiZWwoImVjYl9kZWNfbG9vcDMiKSk7 CisrCisrJnNldF9sYWJlbCgiZWNiX2RlY19sb29wMyIsMTYpOworKwkmbW92dXBzCSgkaW5vdXQw LCZRV1AoMCwkaW5wKSk7CisrCSZtb3Z1cHMJKCRpbm91dDEsJlFXUCgweDEwLCRpbnApKTsKKysJ Jm1vdnVwcwkoJGlub3V0MiwmUVdQKDB4MjAsJGlucCkpOworKwkmY2FsbAkoIl9hZXNuaV9kZWNy eXB0MyIpOworKwkmc3ViCSgkbGVuLDB4MzApOworKwkmbGVhCSgkaW5wLCZEV1AoMHgzMCwkaW5w KSk7CisrCSZsZWEJKCRvdXQsJkRXUCgweDMwLCRvdXQpKTsKKysJJm1vdnVwcwkoJlFXUCgtMHgz MCwkb3V0KSwkaW5vdXQwKTsKKysJJm1vdgkoJGtleSwka2V5Xyk7CQkjIHJlc3RvcmUgJGtleQor KwkmbW92dXBzCSgmUVdQKC0weDIwLCRvdXQpLCRpbm91dDEpOworKwkmbW92CSgkcm91bmRzLCRy b3VuZHNfKTsJIyByZXN0b3JlICRyb3VuZHMKKysJJm1vdnVwcwkoJlFXUCgtMHgxMCwkb3V0KSwk aW5vdXQyKTsKKysJJmphCSgmbGFiZWwoImVjYl9kZWNfbG9vcDMiKSk7CisrCisrJnNldF9sYWJl bCgiZWNiX2RlY190YWlsIik7CisrCSZhZGQJKCRsZW4sMHg0MCk7CisrCSZqegkoJmxhYmVsKCJl Y2JfcmV0IikpOworKworKwkmY21wCSgkbGVuLDB4MTApOworKwkmbW92dXBzCSgkaW5vdXQwLCZR V1AoMCwkaW5wKSk7CisrCSZqZQkoJmxhYmVsKCJlY2JfZGVjX29uZSIpKTsKKysJJmNtcAkoJGxl biwweDIwKTsKKysJJm1vdnVwcwkoJGlub3V0MSwmUVdQKDB4MTAsJGlucCkpOworKwkmamUJKCZs YWJlbCgiZWNiX2RlY190d28iKSk7CisrCSZjbXAJKCRsZW4sMHgzMCk7CisrCSZtb3Z1cHMJKCRp bm91dDIsJlFXUCgweDIwLCRpbnApKTsKKysJJmplCSgmbGFiZWwoImVjYl9kZWNfdGhyZWUiKSk7 CisrCSZtb3Z1cHMJKCRpbm91dDMsJlFXUCgweDMwLCRpbnApKTsKKysJJmNhbGwJKCJfYWVzbmlf ZGVjcnlwdDQiKTsKKysJJm1vdnVwcwkoJlFXUCgwLCRvdXQpLCRpbm91dDApOworKwkmbW92dXBz CSgmUVdQKDB4MTAsJG91dCksJGlub3V0MSk7CisrCSZtb3Z1cHMJKCZRV1AoMHgyMCwkb3V0KSwk aW5vdXQyKTsKKysJJm1vdnVwcwkoJlFXUCgweDMwLCRvdXQpLCRpbm91dDMpOworKwkmam1wCSgm bGFiZWwoImVjYl9yZXQiKSk7CisrCisrJnNldF9sYWJlbCgiZWNiX2RlY19vbmUiLDE2KTsKKysJ JmFlc25pX2lubGluZV9nZW5lcmF0ZTEoImRlYyIpOwkjICZjYWxsCSgiX2Flc25pX2RlY3J5cHQz Iik7CisrCSZtb3Z1cHMJKCZRV1AoMCwkb3V0KSwkaW5vdXQwKTsKKysJJmptcAkoJmxhYmVsKCJl Y2JfcmV0IikpOworKworKyZzZXRfbGFiZWwoImVjYl9kZWNfdHdvIiwxNik7CisrCSZjYWxsCSgi X2Flc25pX2RlY3J5cHQzIik7CisrCSZtb3Z1cHMJKCZRV1AoMCwkb3V0KSwkaW5vdXQwKTsKKysJ Jm1vdnVwcwkoJlFXUCgweDEwLCRvdXQpLCRpbm91dDEpOworKwkmam1wCSgmbGFiZWwoImVjYl9y ZXQiKSk7CisrCisrJnNldF9sYWJlbCgiZWNiX2RlY190aHJlZSIsMTYpOworKwkmY2FsbAkoIl9h ZXNuaV9kZWNyeXB0MyIpOworKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7CisrCSZt b3Z1cHMJKCZRV1AoMHgxMCwkb3V0KSwkaW5vdXQxKTsKKysJJm1vdnVwcwkoJlFXUCgweDIwLCRv dXQpLCRpbm91dDIpOworKworKyZzZXRfbGFiZWwoImVjYl9yZXQiKTsKKysmZnVuY3Rpb25fZW5k KCJhZXNuaV9lY2JfZW5jcnlwdCIpOworK30KKysKKysjIHZvaWQgJFBSRUZJWF9jYmNfZW5jcnlw dCAoY29uc3Qgdm9pZCAqaW5wLCB2b2lkICpvdXQsCisrIyAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNpemVfdCBsZW5ndGgsIGNvbnN0IEFFU19LRVkgKmtleSwKKysjICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqaXZwLGNvbnN0IGludCBlbmMpOworKyZmdW5jdGlv bl9iZWdpbigiJHtQUkVGSVh9X2NiY19lbmNyeXB0Iik7CisrCSZtb3YJKCRpbnAsJndwYXJhbSgw KSk7CisrCSZtb3YJKCRvdXQsJndwYXJhbSgxKSk7CisrCSZtb3YJKCRsZW4sJndwYXJhbSgyKSk7 CisrCSZtb3YJKCRrZXksJndwYXJhbSgzKSk7CisrCSZ0ZXN0CSgkbGVuLCRsZW4pOworKwkmbW92 CSgka2V5Xywmd3BhcmFtKDQpKTsKKysJJmp6CSgmbGFiZWwoImNiY19yZXQiKSk7CisrCisrCSZj bXAJKCZ3cGFyYW0oNSksMCk7CisrCSZtb3Z1cHMJKCRpdmVjLCZRV1AoMCwka2V5XykpOwkjIGxv YWQgSVYKKysJJm1vdgkoJHJvdW5kcywmRFdQKDI0MCwka2V5KSk7CisrCSZtb3YJKCRrZXlfLCRr ZXkpOwkJIyBiYWNrdXAgJGtleQorKwkmbW92CSgkcm91bmRzXywkcm91bmRzKTsJIyBiYWNrdXAg JHJvdW5kcworKwkmamUJKCZsYWJlbCgiY2JjX2RlY3J5cHQiKSk7CisrCisrCSZtb3ZhcHMJKCRp bm91dDAsJGl2ZWMpOworKwkmY21wCSgkbGVuLDE2KTsKKysJJmpiCSgmbGFiZWwoImNiY19lbmNf dGFpbCIpKTsKKysJJnN1YgkoJGxlbiwxNik7CisrCSZqbXAJKCZsYWJlbCgiY2JjX2VuY19sb29w IikpOworKworKyZzZXRfbGFiZWwoImNiY19lbmNfbG9vcCIsMTYpOworKwkmbW92dXBzCSgkaXZl YywmUVdQKDAsJGlucCkpOworKwkmbGVhCSgkaW5wLCZEV1AoMTYsJGlucCkpOworKwkmcHhvcgko JGlub3V0MCwkaXZlYyk7CisrCSZhZXNuaV9pbmxpbmVfZ2VuZXJhdGUxKCJlbmMiKTsJIyAmY2Fs bAkoIl9hZXNuaV9lbmNyeXB0MyIpOworKwkmc3ViCSgkbGVuLDE2KTsKKysJJmxlYQkoJG91dCwm RFdQKDE2LCRvdXQpKTsKKysJJm1vdgkoJHJvdW5kcywkcm91bmRzXyk7CSMgcmVzdG9yZSAkcm91 bmRzCisrCSZtb3YJKCRrZXksJGtleV8pOwkJIyByZXN0b3JlICRrZXkKKysJJm1vdnVwcwkoJlFX UCgtMTYsJG91dCksJGlub3V0MCk7CisrCSZqbmMJKCZsYWJlbCgiY2JjX2VuY19sb29wIikpOwor KwkmYWRkCSgkbGVuLDE2KTsKKysJJmpuegkoJmxhYmVsKCJjYmNfZW5jX3RhaWwiKSk7CisrCSZt b3ZhcHMJKCRpdmVjLCRpbm91dDApOworKwkmam1wCSgmbGFiZWwoImNiY19yZXQiKSk7CisrCisr JnNldF9sYWJlbCgiY2JjX2VuY190YWlsIik7CisrCSZtb3YJKCJlY3giLCRsZW4pOwkJIyB6YXBz ICRyb3VuZHMKKysJJmRhdGFfd29yZCgweEE0RjNGNjg5KTsJCSMgcmVwIG1vdnNiCisrCSZtb3YJ KCJlY3giLDE2KTsJCSMgemVybyB0YWlsCisrCSZzdWIJKCJlY3giLCRsZW4pOworKwkmeG9yCSgi ZWF4IiwiZWF4Iik7CQkjIHphcHMgJGxlbgorKwkmZGF0YV93b3JkKDB4QUFGM0Y2ODkpOwkJIyBy ZXAgc3Rvc2IKKysJJmxlYQkoJG91dCwmRFdQKC0xNiwkb3V0KSk7CSMgcmV3aW5kICRvdXQgYnkg MSBibG9jaworKwkmbW92CSgkcm91bmRzLCRyb3VuZHNfKTsJIyByZXN0b3JlICRyb3VuZHMKKysJ Jm1vdgkoJGlucCwkb3V0KTsJCSMgJGlucCBhbmQgJG91dCBhcmUgdGhlIHNhbWUKKysJJm1vdgko JGtleSwka2V5Xyk7CQkjIHJlc3RvcmUgJGtleQorKwkmam1wCSgmbGFiZWwoImNiY19lbmNfbG9v cCIpKTsKKysKKysmc2V0X2xhYmVsKCJjYmNfZGVjcnlwdCIsMTYpOworKwkmc3ViCSgkbGVuLDB4 NDApOworKwkmamJlCSgmbGFiZWwoImNiY19kZWNfdGFpbCIpKTsKKysJJmptcAkoJmxhYmVsKCJj YmNfZGVjX2xvb3AzIikpOworKworKyZzZXRfbGFiZWwoImNiY19kZWNfbG9vcDMiLDE2KTsKKysJ Jm1vdnVwcwkoJGlub3V0MCwmUVdQKDAsJGlucCkpOworKwkmbW92dXBzCSgkaW5vdXQxLCZRV1Ao MHgxMCwkaW5wKSk7CisrCSZtb3Z1cHMJKCRpbm91dDIsJlFXUCgweDIwLCRpbnApKTsKKysJJm1v dmFwcwkoJGluMCwkaW5vdXQwKTsKKysJJm1vdmFwcwkoJGluMSwkaW5vdXQxKTsKKysJJmNhbGwJ KCJfYWVzbmlfZGVjcnlwdDMiKTsKKysJJnN1YgkoJGxlbiwweDMwKTsKKysJJmxlYQkoJGlucCwm RFdQKDB4MzAsJGlucCkpOworKwkmbGVhCSgkb3V0LCZEV1AoMHgzMCwkb3V0KSk7CisrCSZweG9y CSgkaW5vdXQwLCRpdmVjKTsKKysJJnB4b3IJKCRpbm91dDEsJGluMCk7CisrCSZtb3Z1cHMJKCRp dmVjLCZRV1AoLTB4MTAsJGlucCkpOworKwkmcHhvcgkoJGlub3V0MiwkaW4xKTsKKysJJm1vdnVw cwkoJlFXUCgtMHgzMCwkb3V0KSwkaW5vdXQwKTsKKysJJm1vdgkoJHJvdW5kcywkcm91bmRzXykJ IyByZXN0b3JlICRyb3VuZHMKKysJJm1vdnVwcwkoJlFXUCgtMHgyMCwkb3V0KSwkaW5vdXQxKTsK KysJJm1vdgkoJGtleSwka2V5Xyk7CQkjIHJlc3RvcmUgJGtleQorKwkmbW92dXBzCSgmUVdQKC0w eDEwLCRvdXQpLCRpbm91dDIpOworKwkmamEJKCZsYWJlbCgiY2JjX2RlY19sb29wMyIpKTsKKysK Kysmc2V0X2xhYmVsKCJjYmNfZGVjX3RhaWwiKTsKKysJJmFkZAkoJGxlbiwweDQwKTsKKysJJmp6 CSgmbGFiZWwoImNiY19yZXQiKSk7CisrCisrCSZtb3Z1cHMJKCRpbm91dDAsJlFXUCgwLCRpbnAp KTsKKysJJmNtcAkoJGxlbiwweDEwKTsKKysJJm1vdmFwcwkoJGluMCwkaW5vdXQwKTsKKysJJmpi ZQkoJmxhYmVsKCJjYmNfZGVjX29uZSIpKTsKKysJJm1vdnVwcwkoJGlub3V0MSwmUVdQKDB4MTAs JGlucCkpOworKwkmY21wCSgkbGVuLDB4MjApOworKwkmbW92YXBzCSgkaW4xLCRpbm91dDEpOwor KwkmamJlCSgmbGFiZWwoImNiY19kZWNfdHdvIikpOworKwkmbW92dXBzCSgkaW5vdXQyLCZRV1Ao MHgyMCwkaW5wKSk7CisrCSZjbXAJKCRsZW4sMHgzMCk7CisrCSZqYmUJKCZsYWJlbCgiY2JjX2Rl Y190aHJlZSIpKTsKKysJJm1vdnVwcwkoJGlub3V0MywmUVdQKDB4MzAsJGlucCkpOworKwkmY2Fs bAkoIl9hZXNuaV9kZWNyeXB0NCIpOworKwkmbW92dXBzCSgkcm5ka2V5MCwmUVdQKDB4MTAsJGlu cCkpOworKwkmbW92dXBzCSgkcm5ka2V5MSwmUVdQKDB4MjAsJGlucCkpOworKwkmcHhvcgkoJGlu b3V0MCwkaXZlYyk7CisrCSZweG9yCSgkaW5vdXQxLCRpbjApOworKwkmbW92dXBzCSgkaXZlYywm UVdQKDB4MzAsJGlucCkpOworKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7CisrCSZw eG9yCSgkaW5vdXQyLCRybmRrZXkwKTsKKysJJnB4b3IJKCRpbm91dDMsJHJuZGtleTEpOworKwkm bW92dXBzCSgmUVdQKDB4MTAsJG91dCksJGlub3V0MSk7CisrCSZtb3Z1cHMJKCZRV1AoMHgyMCwk b3V0KSwkaW5vdXQyKTsKKysJJm1vdmFwcwkoJGlub3V0MCwkaW5vdXQzKTsKKysJJmxlYQkoJG91 dCwmRFdQKDB4MzAsJG91dCkpOworKwkmam1wCSgmbGFiZWwoImNiY19kZWNfdGFpbF9jb2xsZWN0 ZWQiKSk7CisrCisrJnNldF9sYWJlbCgiY2JjX2RlY19vbmUiKTsKKysJJmFlc25pX2lubGluZV9n ZW5lcmF0ZTEoImRlYyIpOwkjICZjYWxsCSgiX2Flc25pX2RlY3J5cHQzIik7CisrCSZweG9yCSgk aW5vdXQwLCRpdmVjKTsKKysJJm1vdmFwcwkoJGl2ZWMsJGluMCk7CisrCSZqbXAJKCZsYWJlbCgi Y2JjX2RlY190YWlsX2NvbGxlY3RlZCIpKTsKKysKKysmc2V0X2xhYmVsKCJjYmNfZGVjX3R3byIp OworKwkmY2FsbAkoIl9hZXNuaV9kZWNyeXB0MyIpOworKwkmcHhvcgkoJGlub3V0MCwkaXZlYyk7 CisrCSZweG9yCSgkaW5vdXQxLCRpbjApOworKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0 MCk7CisrCSZtb3ZhcHMJKCRpbm91dDAsJGlub3V0MSk7CisrCSZtb3ZhcHMJKCRpdmVjLCRpbjEp OworKwkmbGVhCSgkb3V0LCZEV1AoMHgxMCwkb3V0KSk7CisrCSZqbXAJKCZsYWJlbCgiY2JjX2Rl Y190YWlsX2NvbGxlY3RlZCIpKTsKKysKKysmc2V0X2xhYmVsKCJjYmNfZGVjX3RocmVlIik7Cisr CSZjYWxsCSgiX2Flc25pX2RlY3J5cHQzIik7CisrCSZweG9yCSgkaW5vdXQwLCRpdmVjKTsKKysJ JnB4b3IJKCRpbm91dDEsJGluMCk7CisrCSZweG9yCSgkaW5vdXQyLCRpbjEpOworKwkmbW92dXBz CSgmUVdQKDAsJG91dCksJGlub3V0MCk7CisrCSZtb3Z1cHMJKCZRV1AoMHgxMCwkb3V0KSwkaW5v dXQxKTsKKysJJm1vdmFwcwkoJGlub3V0MCwkaW5vdXQyKTsKKysJJm1vdnVwcwkoJGl2ZWMsJlFX UCgweDIwLCRpbnApKTsKKysJJmxlYQkoJG91dCwmRFdQKDB4MjAsJG91dCkpOworKworKyZzZXRf bGFiZWwoImNiY19kZWNfdGFpbF9jb2xsZWN0ZWQiKTsKKysJJmFuZAkoJGxlbiwxNSk7CisrCSZq bnoJKCZsYWJlbCgiY2JjX2RlY190YWlsX3BhcnRpYWwiKSk7CisrCSZtb3Z1cHMJKCZRV1AoMCwk b3V0KSwkaW5vdXQwKTsKKysJJmptcAkoJmxhYmVsKCJjYmNfcmV0IikpOworKworKyZzZXRfbGFi ZWwoImNiY19kZWNfdGFpbF9wYXJ0aWFsIik7CisrCSZtb3YJKCRrZXlfLCJlc3AiKTsKKysJJnN1 YgkoImVzcCIsMTYpOworKwkmYW5kCSgiZXNwIiwtMTYpOworKwkmbW92YXBzCSgmUVdQKDAsImVz cCIpLCRpbm91dDApOworKwkmbW92CSgkaW5wLCJlc3AiKTsKKysJJm1vdgkoImVjeCIsJGxlbik7 CisrCSZkYXRhX3dvcmQoMHhBNEYzRjY4OSk7CQkjIHJlcCBtb3ZzYgorKwkmbW92CSgiZXNwIiwk a2V5Xyk7CisrCisrJnNldF9sYWJlbCgiY2JjX3JldCIpOworKwkmbW92CSgka2V5Xywmd3BhcmFt KDQpKTsKKysJJm1vdnVwcwkoJlFXUCgwLCRrZXlfKSwkaXZlYyk7CSMgb3V0cHV0IElWCisrJmZ1 bmN0aW9uX2VuZCgiJHtQUkVGSVh9X2NiY19lbmNyeXB0Iik7CisrCisrIyBNZWNoYW5pY2FsIHBv cnQgZnJvbSBhZXNuaS14ODZfNjQucGwuCisrIworKyMgX2Flc25pX3NldF9lbmNyeXB0X2tleSBp cyBwcml2YXRlIGludGVyZmFjZSwKKysjIGlucHV0OgorKyMJImVheCIJY29uc3QgdW5zaWduZWQg Y2hhciAqdXNlcktleQorKyMJJHJvdW5kcwlpbnQgYml0cworKyMJJGtleQlBRVNfS0VZICprZXkK KysjIG91dHB1dDoKKysjCSJlYXgiCXJldHVybiBjb2RlCisrIwkkcm91bmQJcm91bmRzCisrCisr JmZ1bmN0aW9uX2JlZ2luX0IoIl9hZXNuaV9zZXRfZW5jcnlwdF9rZXkiKTsKKysJJnRlc3QJKCJl YXgiLCJlYXgiKTsKKysJJmp6CSgmbGFiZWwoImJhZF9wb2ludGVyIikpOworKwkmdGVzdAkoJGtl eSwka2V5KTsKKysJJmp6CSgmbGFiZWwoImJhZF9wb2ludGVyIikpOworKworKwkmbW92dXBzCSgi eG1tMCIsJlFXUCgwLCJlYXgiKSk7CSMgcHVsbCBmaXJzdCAxMjggYml0cyBvZiAqdXNlcktleQor KwkmcHhvcgkoInhtbTQiLCJ4bW00Iik7CSMgbG93IGR3b3JkIG9mIHhtbTQgaXMgYXNzdW1lZCAw CisrCSZsZWEJKCRrZXksJkRXUCgxNiwka2V5KSk7CisrCSZjbXAJKCRyb3VuZHMsMjU2KTsKKysJ JmplCSgmbGFiZWwoIjE0cm91bmRzIikpOworKwkmY21wCSgkcm91bmRzLDE5Mik7CisrCSZqZQko JmxhYmVsKCIxMnJvdW5kcyIpKTsKKysJJmNtcAkoJHJvdW5kcywxMjgpOworKwkmam5lCSgmbGFi ZWwoImJhZF9rZXliaXRzIikpOworKworKyZzZXRfbGFiZWwoIjEwcm91bmRzIiwxNik7CisrCSZt b3YJCSgkcm91bmRzLDkpOworKwkmJG1vdmVrZXkJKCZRV1AoLTE2LCRrZXkpLCJ4bW0wIik7CSMg cm91bmQgMAorKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMCIsMHgwMSk7CQkjIHJvdW5k IDEKKysJJmNhbGwJCSgmbGFiZWwoImtleV8xMjhfY29sZCIpKTsKKysJJmFlc2tleWdlbmFzc2lz dCgieG1tMSIsInhtbTAiLDB4Mik7CQkjIHJvdW5kIDIKKysJJmNhbGwJCSgmbGFiZWwoImtleV8x MjgiKSk7CisrCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0wIiwweDA0KTsJCSMgcm91bmQg MworKwkmY2FsbAkJKCZsYWJlbCgia2V5XzEyOCIpKTsKKysJJmFlc2tleWdlbmFzc2lzdCgieG1t MSIsInhtbTAiLDB4MDgpOwkJIyByb3VuZCA0CisrCSZjYWxsCQkoJmxhYmVsKCJrZXlfMTI4Iikp OworKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMCIsMHgxMCk7CQkjIHJvdW5kIDUKKysJ JmNhbGwJCSgmbGFiZWwoImtleV8xMjgiKSk7CisrCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4 bW0wIiwweDIwKTsJCSMgcm91bmQgNgorKwkmY2FsbAkJKCZsYWJlbCgia2V5XzEyOCIpKTsKKysJ JmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTAiLDB4NDApOwkJIyByb3VuZCA3CisrCSZjYWxs CQkoJmxhYmVsKCJrZXlfMTI4IikpOworKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMCIs MHg4MCk7CQkjIHJvdW5kIDgKKysJJmNhbGwJCSgmbGFiZWwoImtleV8xMjgiKSk7CisrCSZhZXNr ZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0wIiwweDFiKTsJCSMgcm91bmQgOQorKwkmY2FsbAkJKCZs YWJlbCgia2V5XzEyOCIpKTsKKysJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTAiLDB4MzYp OwkJIyByb3VuZCAxMAorKwkmY2FsbAkJKCZsYWJlbCgia2V5XzEyOCIpKTsKKysJJiRtb3Zla2V5 CSgmUVdQKDAsJGtleSksInhtbTAiKTsKKysJJm1vdgkJKCZEV1AoODAsJGtleSksJHJvdW5kcyk7 CisrCSZ4b3IJCSgiZWF4IiwiZWF4Iik7CisrCSZyZXQoKTsKKysKKysmc2V0X2xhYmVsKCJrZXlf MTI4IiwxNik7CisrCSYkbW92ZWtleQkoJlFXUCgwLCRrZXkpLCJ4bW0wIik7CisrCSZsZWEJCSgk a2V5LCZEV1AoMTYsJGtleSkpOworKyZzZXRfbGFiZWwoImtleV8xMjhfY29sZCIpOworKwkmc2h1 ZnBzCQkoInhtbTQiLCJ4bW0wIiwwYjAwMDEwMDAwKTsKKysJJnB4b3IJCSgieG1tMCIsInhtbTQi KTsKKysJJnNodWZwcwkJKCJ4bW00IiwieG1tMCIsMGIxMDAwMTEwMCwpOworKwkmcHhvcgkJKCJ4 bW0wIiwieG1tNCIpOworKwkmcHNodWZkCQkoInhtbTEiLCJ4bW0xIiwwYjExMTExMTExKTsJIyBj cml0aWNhbCBwYXRoCisrCSZweG9yCQkoInhtbTAiLCJ4bW0xIik7CisrCSZyZXQoKTsKKysKKysm c2V0X2xhYmVsKCIxMnJvdW5kcyIsMTYpOworKwkmbW92cQkJKCJ4bW0yIiwmUVdQKDE2LCJlYXgi KSk7CSMgcmVtYWluaW5nIDEvMyBvZiAqdXNlcktleQorKwkmbW92CQkoJHJvdW5kcywxMSk7Cisr CSYkbW92ZWtleQkoJlFXUCgtMTYsJGtleSksInhtbTAiKQkJIyByb3VuZCAwCisrCSZhZXNrZXln ZW5hc3Npc3QoInhtbTEiLCJ4bW0yIiwweDAxKTsJCSMgcm91bmQgMSwyCisrCSZjYWxsCQkoJmxh YmVsKCJrZXlfMTkyYV9jb2xkIikpOworKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMiIs MHgwMik7CQkjIHJvdW5kIDIsMworKwkmY2FsbAkJKCZsYWJlbCgia2V5XzE5MmIiKSk7CisrCSZh ZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0yIiwweDA0KTsJCSMgcm91bmQgNCw1CisrCSZjYWxs CQkoJmxhYmVsKCJrZXlfMTkyYSIpKTsKKysJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTIi LDB4MDgpOwkJIyByb3VuZCA1LDYKKysJJmNhbGwJCSgmbGFiZWwoImtleV8xOTJiIikpOworKwkm YWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMiIsMHgxMCk7CQkjIHJvdW5kIDcsOAorKwkmY2Fs bAkJKCZsYWJlbCgia2V5XzE5MmEiKSk7CisrCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0y IiwweDIwKTsJCSMgcm91bmQgOCw5CisrCSZjYWxsCQkoJmxhYmVsKCJrZXlfMTkyYiIpKTsKKysJ JmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4NDApOwkJIyByb3VuZCAxMCwxMQorKwkm Y2FsbAkJKCZsYWJlbCgia2V5XzE5MmEiKSk7CisrCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4 bW0yIiwweDgwKTsJCSMgcm91bmQgMTEsMTIKKysJJmNhbGwJCSgmbGFiZWwoImtleV8xOTJiIikp OworKwkmJG1vdmVrZXkJKCZRV1AoMCwka2V5KSwieG1tMCIpOworKwkmbW92CQkoJkRXUCg0OCwk a2V5KSwkcm91bmRzKTsKKysJJnhvcgkJKCJlYXgiLCJlYXgiKTsKKysJJnJldCgpOworKworKyZz ZXRfbGFiZWwoImtleV8xOTJhIiwxNik7CisrCSYkbW92ZWtleQkoJlFXUCgwLCRrZXkpLCJ4bW0w Iik7CisrCSZsZWEJCSgka2V5LCZEV1AoMTYsJGtleSkpOworKyZzZXRfbGFiZWwoImtleV8xOTJh X2NvbGQiLDE2KTsKKysJJm1vdmFwcwkJKCJ4bW01IiwieG1tMiIpOworKyZzZXRfbGFiZWwoImtl eV8xOTJiX3dhcm0iKTsKKysJJnNodWZwcwkJKCJ4bW00IiwieG1tMCIsMGIwMDAxMDAwMCk7Cisr CSZtb3ZhcHMJCSgieG1tMyIsInhtbTIiKTsKKysJJnB4b3IJCSgieG1tMCIsInhtbTQiKTsKKysJ JnNodWZwcwkJKCJ4bW00IiwieG1tMCIsMGIxMDAwMTEwMCk7CisrCSZwc2xsZHEJCSgieG1tMyIs NCk7CisrCSZweG9yCQkoInhtbTAiLCJ4bW00Iik7CisrCSZwc2h1ZmQJCSgieG1tMSIsInhtbTEi LDBiMDEwMTAxMDEpOwkjIGNyaXRpY2FsIHBhdGgKKysJJnB4b3IJCSgieG1tMiIsInhtbTMiKTsK KysJJnB4b3IJCSgieG1tMCIsInhtbTEiKTsKKysJJnBzaHVmZAkJKCJ4bW0zIiwieG1tMCIsMGIx MTExMTExMSk7CisrCSZweG9yCQkoInhtbTIiLCJ4bW0zIik7CisrCSZyZXQoKTsKKysKKysmc2V0 X2xhYmVsKCJrZXlfMTkyYiIsMTYpOworKwkmbW92YXBzCQkoInhtbTMiLCJ4bW0wIik7CisrCSZz aHVmcHMJCSgieG1tNSIsInhtbTAiLDBiMDEwMDAxMDApOworKwkmJG1vdmVrZXkJKCZRV1AoMCwk a2V5KSwieG1tNSIpOworKwkmc2h1ZnBzCQkoInhtbTMiLCJ4bW0yIiwwYjAxMDAxMTEwKTsKKysJ JiRtb3Zla2V5CSgmUVdQKDE2LCRrZXkpLCJ4bW0zIik7CisrCSZsZWEJCSgka2V5LCZEV1AoMzIs JGtleSkpOworKwkmam1wCQkoJmxhYmVsKCJrZXlfMTkyYl93YXJtIikpOworKworKyZzZXRfbGFi ZWwoIjE0cm91bmRzIiwxNik7CisrCSZtb3Z1cHMJCSgieG1tMiIsJlFXUCgxNiwiZWF4IikpOwkj IHJlbWFpbmluZyBoYWxmIG9mICp1c2VyS2V5CisrCSZtb3YJCSgkcm91bmRzLDEzKTsKKysJJmxl YQkJKCRrZXksJkRXUCgxNiwka2V5KSk7CisrCSYkbW92ZWtleQkoJlFXUCgtMzIsJGtleSksInht bTAiKTsJIyByb3VuZCAwCisrCSYkbW92ZWtleQkoJlFXUCgtMTYsJGtleSksInhtbTIiKTsJIyBy b3VuZCAxCisrCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0yIiwweDAxKTsJCSMgcm91bmQg MgorKwkmY2FsbAkJKCZsYWJlbCgia2V5XzI1NmFfY29sZCIpKTsKKysJJmFlc2tleWdlbmFzc2lz dCgieG1tMSIsInhtbTAiLDB4MDEpOwkJIyByb3VuZCAzCisrCSZjYWxsCQkoJmxhYmVsKCJrZXlf MjU2YiIpKTsKKysJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4MDIpOwkJIyByb3Vu ZCA0CisrCSZjYWxsCQkoJmxhYmVsKCJrZXlfMjU2YSIpKTsKKysJJmFlc2tleWdlbmFzc2lzdCgi eG1tMSIsInhtbTAiLDB4MDIpOwkJIyByb3VuZCA1CisrCSZjYWxsCQkoJmxhYmVsKCJrZXlfMjU2 YiIpKTsKKysJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4MDQpOwkJIyByb3VuZCA2 CisrCSZjYWxsCQkoJmxhYmVsKCJrZXlfMjU2YSIpKTsKKysJJmFlc2tleWdlbmFzc2lzdCgieG1t MSIsInhtbTAiLDB4MDQpOwkJIyByb3VuZCA3CisrCSZjYWxsCQkoJmxhYmVsKCJrZXlfMjU2YiIp KTsKKysJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4MDgpOwkJIyByb3VuZCA4Cisr CSZjYWxsCQkoJmxhYmVsKCJrZXlfMjU2YSIpKTsKKysJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIs InhtbTAiLDB4MDgpOwkJIyByb3VuZCA5CisrCSZjYWxsCQkoJmxhYmVsKCJrZXlfMjU2YiIpKTsK KysJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4MTApOwkJIyByb3VuZCAxMAorKwkm Y2FsbAkJKCZsYWJlbCgia2V5XzI1NmEiKSk7CisrCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4 bW0wIiwweDEwKTsJCSMgcm91bmQgMTEKKysJJmNhbGwJCSgmbGFiZWwoImtleV8yNTZiIikpOwor KwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMiIsMHgyMCk7CQkjIHJvdW5kIDEyCisrCSZj YWxsCQkoJmxhYmVsKCJrZXlfMjU2YSIpKTsKKysJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInht bTAiLDB4MjApOwkJIyByb3VuZCAxMworKwkmY2FsbAkJKCZsYWJlbCgia2V5XzI1NmIiKSk7Cisr CSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0yIiwweDQwKTsJCSMgcm91bmQgMTQKKysJJmNh bGwJCSgmbGFiZWwoImtleV8yNTZhIikpOworKwkmJG1vdmVrZXkJKCZRV1AoMCwka2V5KSwieG1t MCIpOworKwkmbW92CQkoJkRXUCgxNiwka2V5KSwkcm91bmRzKTsKKysJJnhvcgkJKCJlYXgiLCJl YXgiKTsKKysJJnJldCgpOworKworKyZzZXRfbGFiZWwoImtleV8yNTZhIiwxNik7CisrCSYkbW92 ZWtleQkoJlFXUCgwLCRrZXkpLCJ4bW0yIik7CisrCSZsZWEJCSgka2V5LCZEV1AoMTYsJGtleSkp OworKyZzZXRfbGFiZWwoImtleV8yNTZhX2NvbGQiKTsKKysJJnNodWZwcwkJKCJ4bW00IiwieG1t MCIsMGIwMDAxMDAwMCk7CisrCSZweG9yCQkoInhtbTAiLCJ4bW00Iik7CisrCSZzaHVmcHMJCSgi eG1tNCIsInhtbTAiLDBiMTAwMDExMDApOworKwkmcHhvcgkJKCJ4bW0wIiwieG1tNCIpOworKwkm cHNodWZkCQkoInhtbTEiLCJ4bW0xIiwwYjExMTExMTExKTsJIyBjcml0aWNhbCBwYXRoCisrCSZw eG9yCQkoInhtbTAiLCJ4bW0xIik7CisrCSZyZXQoKTsKKysKKysmc2V0X2xhYmVsKCJrZXlfMjU2 YiIsMTYpOworKwkmJG1vdmVrZXkJKCZRV1AoMCwka2V5KSwieG1tMCIpOworKwkmbGVhCQkoJGtl eSwmRFdQKDE2LCRrZXkpKTsKKysKKysJJnNodWZwcwkJKCJ4bW00IiwieG1tMiIsMGIwMDAxMDAw MCk7CisrCSZweG9yCQkoInhtbTIiLCJ4bW00Iik7CisrCSZzaHVmcHMJCSgieG1tNCIsInhtbTIi LDBiMTAwMDExMDApOworKwkmcHhvcgkJKCJ4bW0yIiwieG1tNCIpOworKwkmcHNodWZkCQkoInht bTEiLCJ4bW0xIiwwYjEwMTAxMDEwKTsJIyBjcml0aWNhbCBwYXRoCisrCSZweG9yCQkoInhtbTIi LCJ4bW0xIik7CisrCSZyZXQoKTsKKysKKysmc2V0X2xhYmVsKCJiYWRfcG9pbnRlciIsNCk7Cisr CSZtb3YJKCJlYXgiLC0xKTsKKysJJnJldAkoKTsKKysmc2V0X2xhYmVsKCJiYWRfa2V5Yml0cyIs NCk7CisrCSZtb3YJKCJlYXgiLC0yKTsKKysJJnJldAkoKTsKKysmZnVuY3Rpb25fZW5kX0IoIl9h ZXNuaV9zZXRfZW5jcnlwdF9rZXkiKTsKKysKKysjIGludCAkUFJFRklYX3NldF9lbmNyeXB0X2tl eSAoY29uc3QgdW5zaWduZWQgY2hhciAqdXNlcktleSwgaW50IGJpdHMsCisrIyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEFFU19LRVkgKmtleSkKKysmZnVuY3Rpb25fYmVnaW5fQigiJHtQ UkVGSVh9X3NldF9lbmNyeXB0X2tleSIpOworKwkmbW92CSgiZWF4Iiwmd3BhcmFtKDApKTsKKysJ Jm1vdgkoJHJvdW5kcywmd3BhcmFtKDEpKTsKKysJJm1vdgkoJGtleSwmd3BhcmFtKDIpKTsKKysJ JmNhbGwJKCJfYWVzbmlfc2V0X2VuY3J5cHRfa2V5Iik7CisrCSZyZXQJKCk7CisrJmZ1bmN0aW9u X2VuZF9CKCIke1BSRUZJWH1fc2V0X2VuY3J5cHRfa2V5Iik7CisrCisrIyBpbnQgJFBSRUZJWF9z ZXRfZGVjcnlwdF9rZXkgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnVzZXJLZXksIGludCBiaXRzLAor KyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBRVNfS0VZICprZXkpCisrJmZ1bmN0aW9u X2JlZ2luX0IoIiR7UFJFRklYfV9zZXRfZGVjcnlwdF9rZXkiKTsKKysJJm1vdgkoImVheCIsJndw YXJhbSgwKSk7CisrCSZtb3YJKCRyb3VuZHMsJndwYXJhbSgxKSk7CisrCSZtb3YJKCRrZXksJndw YXJhbSgyKSk7CisrCSZjYWxsCSgiX2Flc25pX3NldF9lbmNyeXB0X2tleSIpOworKwkmbW92CSgk a2V5LCZ3cGFyYW0oMikpOworKwkmc2hsCSgkcm91bmRzLDQpCSMgcm91bmRzLTEgYWZ0ZXIgX2Fl c25pX3NldF9lbmNyeXB0X2tleQorKwkmdGVzdAkoImVheCIsImVheCIpOworKwkmam56CSgmbGFi ZWwoImRlY19rZXlfcmV0IikpOworKwkmbGVhCSgiZWF4IiwmRFdQKDE2LCRrZXksJHJvdW5kcykp OwkjIGVuZCBvZiBrZXkgc2NoZWR1bGUKKysKKysJJiRtb3Zla2V5CSgieG1tMCIsJlFXUCgwLCRr ZXkpKTsJIyBqdXN0IHN3YXAKKysJJiRtb3Zla2V5CSgieG1tMSIsJlFXUCgwLCJlYXgiKSk7Cisr CSYkbW92ZWtleQkoJlFXUCgwLCJlYXgiKSwieG1tMCIpOworKwkmJG1vdmVrZXkJKCZRV1AoMCwk a2V5KSwieG1tMSIpOworKwkmbGVhCQkoJGtleSwmRFdQKDE2LCRrZXkpKTsKKysJJmxlYQkJKCJl YXgiLCZEV1AoLTE2LCJlYXgiKSk7CisrCisrJnNldF9sYWJlbCgiZGVjX2tleV9pbnZlcnNlIik7 CisrCSYkbW92ZWtleQkoInhtbTAiLCZRV1AoMCwka2V5KSk7CSMgc3dhcCBhbmQgaW52ZXJzZQor KwkmJG1vdmVrZXkJKCJ4bW0xIiwmUVdQKDAsImVheCIpKTsKKysJJmFlc2ltYwkJKCJ4bW0wIiwi eG1tMCIpOworKwkmYWVzaW1jCQkoInhtbTEiLCJ4bW0xIik7CisrCSZsZWEJCSgka2V5LCZEV1Ao MTYsJGtleSkpOworKwkmbGVhCQkoImVheCIsJkRXUCgtMTYsImVheCIpKTsKKysJJmNtcAkJKCJl YXgiLCRrZXkpOworKwkmJG1vdmVrZXkJKCZRV1AoMTYsImVheCIpLCJ4bW0wIik7CisrCSYkbW92 ZWtleQkoJlFXUCgtMTYsJGtleSksInhtbTEiKTsKKysJJmphCQkoJmxhYmVsKCJkZWNfa2V5X2lu dmVyc2UiKSk7CisrCisrCSYkbW92ZWtleQkoInhtbTAiLCZRV1AoMCwka2V5KSk7CSMgaW52ZXJz ZSBtaWRkbGUKKysJJmFlc2ltYwkJKCJ4bW0wIiwieG1tMCIpOworKwkmJG1vdmVrZXkJKCZRV1Ao MCwka2V5KSwieG1tMCIpOworKworKwkmeG9yCQkoImVheCIsImVheCIpOwkJIyByZXR1cm4gc3Vj Y2VzcworKyZzZXRfbGFiZWwoImRlY19rZXlfcmV0Iik7CisrCSZyZXQJKCk7CisrJmZ1bmN0aW9u X2VuZF9CKCIke1BSRUZJWH1fc2V0X2RlY3J5cHRfa2V5Iik7CisrJmFzY2l6KCJBRVMgZm9yIElu dGVsIEFFUy1OSSwgQ1JZUFRPR0FNUyBieSA8YXBwcm9cQG9wZW5zc2wub3JnPiIpOworKworKyZh c21fZmluaXNoKCk7CitkaWZmIC11cCBvcGVuc3NsLTEuMC4wYi9jcnlwdG8vYWVzL2FzbS9hZXNu aS14ODZfNjQucGwuYWVzbmkgb3BlbnNzbC0xLjAuMGIvY3J5cHRvL2Flcy9hc20vYWVzbmkteDg2 XzY0LnBsCistLS0gb3BlbnNzbC0xLjAuMGIvY3J5cHRvL2Flcy9hc20vYWVzbmkteDg2XzY0LnBs LmFlc25pCTIwMTAtMTEtMTYgMTc6MzM6MjMuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0x LjAuMGIvY3J5cHRvL2Flcy9hc20vYWVzbmkteDg2XzY0LnBsCTIwMTAtMTEtMTYgMTc6MzM6MjMu MDAwMDAwMDAwICswMTAwCitAQCAtMCwwICsxLDk5MSBAQAorKyMhL3Vzci9iaW4vZW52IHBlcmwK KysjCisrIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorKyMgV3JpdHRlbiBieSBBbmR5IFBvbHlha292IDxhcHByb0Bm eS5jaGFsbWVycy5zZT4gZm9yIHRoZSBPcGVuU1NMCisrIyBwcm9qZWN0LiBUaGUgbW9kdWxlIGlz LCBob3dldmVyLCBkdWFsIGxpY2Vuc2VkIHVuZGVyIE9wZW5TU0wgYW5kCisrIyBDUllQVE9HQU1T IGxpY2Vuc2VzIGRlcGVuZGluZyBvbiB3aGVyZSB5b3Ugb2J0YWluIGl0LiBGb3IgZnVydGhlcgor KyMgZGV0YWlscyBzZWUgaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9+YXBwcm8vY3J5cHRvZ2Ftcy8u CisrIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorKyMKKysjIFRoaXMgbW9kdWxlIGltcGxlbWVudHMgc3VwcG9ydCBm b3IgSW50ZWwgQUVTLU5JIGV4dGVuc2lvbi4gSW4KKysjIE9wZW5TU0wgY29udGV4dCBpdCdzIHVz ZWQgd2l0aCBJbnRlbCBlbmdpbmUsIGJ1dCBjYW4gYWxzbyBiZSB1c2VkIGFzCisrIyBkcm9wLWlu IHJlcGxhY2VtZW50IGZvciBjcnlwdG8vYWVzL2FzbS9hZXMteDg2XzY0LnBsIFtzZWUgYmVsb3cg Zm9yCisrIyBkZXRhaWxzXS4KKysKKyskUFJFRklYPSJhZXNuaSI7CSMgaWYgJFBSRUZJWCBpcyBz ZXQgdG8gIkFFUyIsIHRoZSBzY3JpcHQKKysJCQkjIGdlbmVyYXRlcyBkcm9wLWluIHJlcGxhY2Vt ZW50IGZvcgorKwkJCSMgY3J5cHRvL2Flcy9hc20vYWVzLXg4Nl82NC5wbDotKQorKworKyRmbGF2 b3VyID0gc2hpZnQ7CisrJG91dHB1dCAgPSBzaGlmdDsKKytpZiAoJGZsYXZvdXIgPX4gL1wuLykg eyAkb3V0cHV0ID0gJGZsYXZvdXI7IHVuZGVmICRmbGF2b3VyOyB9CisrCisrJHdpbjY0PTA7ICR3 aW42ND0xIGlmICgkZmxhdm91ciA9fiAvW25tXWFzbXxtaW5ndzY0LyB8fCAkb3V0cHV0ID1+IC9c LmFzbSQvKTsKKysKKyskMCA9fiBtLyguKltcL1xcXSlbXlwvXFxdKyQvOyAkZGlyPSQxOworKygg JHhsYXRlPSIke2Rpcn14ODZfNjQteGxhdGUucGwiIGFuZCAtZiAkeGxhdGUgKSBvcgorKyggJHhs YXRlPSIke2Rpcn0uLi8uLi9wZXJsYXNtL3g4Nl82NC14bGF0ZS5wbCIgYW5kIC1mICR4bGF0ZSkg b3IKKytkaWUgImNhbid0IGxvY2F0ZSB4ODZfNjQteGxhdGUucGwiOworKworK29wZW4gU1RET1VU LCJ8ICReWCAkeGxhdGUgJGZsYXZvdXIgJG91dHB1dCI7CisrCisrJG1vdmtleSA9ICRQUkVGSVgg ZXEgImFlc25pIiA/ICJtb3ZhcHMiIDogIm1vdnVwcyI7CisrQF80YXJncz0kd2luNjQ/CSgiJXJj eCIsIiVyZHgiLCIlcjgiLCAiJXI5IikgOgkjIFdpbjY0IG9yZGVyCisrCQkoIiVyZGkiLCIlcnNp IiwiJXJkeCIsIiVyY3giKTsJIyBVbml4IG9yZGVyCisrCisrJGNvZGU9Ii50ZXh0XG4iOworKwor KyRyb3VuZHM9IiVlYXgiOwkjIGlucHV0IHRvIGFuZCBjaGFuZ2VkIGJ5IGFlc25pX1tlbnxkZV1j cnlwdE4gISEhCisrIyB0aGlzIGlzIG5hdHVyYWwgVW5peCBhcmd1bWVudCBvcmRlciBmb3IgcHVi bGljICRQUkVGSVhfW2VjYnxjYmNdX2VuY3J5cHQgLi4uCisrJGlucD0iJXJkaSI7CisrJG91dD0i JXJzaSI7CisrJGxlbj0iJXJkeCI7CisrJGtleT0iJXJjeCI7CSMgaW5wdXQgdG8gYW5kIGNoYW5n ZWQgYnkgYWVzbmlfW2VufGRlXWNyeXB0TiAhISEKKyskaXZwPSIlcjgiOwkjIGNiYworKworKyRy bmRzXz0iJXIxMGQiOwkjIGJhY2t1cCBjb3B5IGZvciAkcm91bmRzCisrJGtleV89IiVyMTEiOwkj IGJhY2t1cCBjb3B5IGZvciAka2V5CisrCisrIyAleG1tIHJlZ2lzdGVyIGxheW91dAorKyRpbm91 dDA9IiV4bW0wIjsJJGlub3V0MT0iJXhtbTEiOworKyRpbm91dDI9IiV4bW0yIjsJJGlub3V0Mz0i JXhtbTMiOworKyRybmRrZXkwPSIleG1tNCI7CSRybmRrZXkxPSIleG1tNSI7CisrCisrJGl2PSIl eG1tNiI7CQkkaW4wPSIleG1tNyI7CSMgdXNlZCBpbiBDQkMgZGVjcnlwdAorKyRpbjE9IiV4bW04 IjsJCSRpbjI9IiV4bW05IjsKKysMCisrIyBJbmxpbmUgdmVyc2lvbiBvZiBpbnRlcm5hbCBhZXNu aV9bZW58ZGVdY3J5cHQxLgorKyMKKysjIFdoeSBmb2xkZWQgbG9vcD8gQmVjYXVzZSBhZXNbZW5j fGRlY10gaXMgc2xvdyBlbm91Z2ggdG8gYWNjb21tb2RhdGUKKysjIGN5Y2xlcyB3aGljaCB0YWtl IGNhcmUgb2YgbG9vcCB2YXJpYWJsZXMuLi4KKyt7IG15ICRzbjsKKytzdWIgYWVzbmlfZ2VuZXJh dGUxIHsKKytteSAoJHAsJGtleSwkcm91bmRzKT1AXzsKKysrKyRzbjsKKyskY29kZS49PDxfX187 CisrCSRtb3ZrZXkJKCRrZXkpLCRybmRrZXkwCisrCSRtb3ZrZXkJMTYoJGtleSksJHJuZGtleTEK KysJbGVhCTMyKCRrZXkpLCRrZXkKKysJcHhvcgkkcm5ka2V5MCwkaW5vdXQwCisrLkxvb3BfJHtw fTFfJHNuOgorKwlhZXMke3B9CSRybmRrZXkxLCRpbm91dDAKKysJZGVjCSRyb3VuZHMKKysJJG1v dmtleQkoJGtleSksJHJuZGtleTEKKysJbGVhCTE2KCRrZXkpLCRrZXkKKysJam56CS5Mb29wXyR7 cH0xXyRzbgkjIGxvb3AgYm9keSBpcyAxNiBieXRlcworKwlhZXMke3B9bGFzdAkkcm5ka2V5MSwk aW5vdXQwCisrX19fCisrfX0KKysjIHZvaWQgJFBSRUZJWF9bZW58ZGVdY3J5cHQgKGNvbnN0IHZv aWQgKmlucCx2b2lkICpvdXQsY29uc3QgQUVTX0tFWSAqa2V5KTsKKysjCisreyBteSAoJGlucCwk b3V0LCRrZXkpID0gQF80YXJnczsKKysKKyskY29kZS49PDxfX187CisrLmdsb2JsCSR7UFJFRklY fV9lbmNyeXB0CisrLnR5cGUJJHtQUkVGSVh9X2VuY3J5cHQsXEBhYmktb21uaXBvdGVudAorKy5h bGlnbgkxNgorKyR7UFJFRklYfV9lbmNyeXB0OgorKwltb3Z1cHMJKCRpbnApLCRpbm91dDAJCSMg bG9hZCBpbnB1dAorKwltb3YJMjQwKCRrZXkpLCRyb3VuZHMJIyBwdWxsICRyb3VuZHMKKytfX18K KysJJmFlc25pX2dlbmVyYXRlMSgiZW5jIiwka2V5LCRyb3VuZHMpOworKyRjb2RlLj08PF9fXzsK KysJbW92dXBzCSRpbm91dDAsKCRvdXQpCQkjIG91dHB1dAorKwlyZXQKKysuc2l6ZQkke1BSRUZJ WH1fZW5jcnlwdCwuLSR7UFJFRklYfV9lbmNyeXB0CisrCisrLmdsb2JsCSR7UFJFRklYfV9kZWNy eXB0CisrLnR5cGUJJHtQUkVGSVh9X2RlY3J5cHQsXEBhYmktb21uaXBvdGVudAorKy5hbGlnbgkx NgorKyR7UFJFRklYfV9kZWNyeXB0OgorKwltb3Z1cHMJKCRpbnApLCRpbm91dDAJCSMgbG9hZCBp bnB1dAorKwltb3YJMjQwKCRrZXkpLCRyb3VuZHMJIyBwdWxsICRyb3VuZHMKKytfX18KKysJJmFl c25pX2dlbmVyYXRlMSgiZGVjIiwka2V5LCRyb3VuZHMpOworKyRjb2RlLj08PF9fXzsKKysJbW92 dXBzCSRpbm91dDAsKCRvdXQpCQkjIG91dHB1dAorKwlyZXQKKysuc2l6ZQkke1BSRUZJWH1fZGVj cnlwdCwgLi0ke1BSRUZJWH1fZGVjcnlwdAorK19fXworK30KKysMCisrIyBfYWVzbmlfW2VufGRl XWNyeXB0WzM0XSBhcmUgcHJpdmF0ZSBpbnRlcmZhY2VzLCBOIGRlbm90ZXMgaW50ZXJsZWF2ZQor KyMgZmFjdG9yLiBXaHkgM3ggc3Vicm91dGluZSBpcyB1c2VkIGluIGxvb3BzPyBFdmVuIHRob3Vn aCBhZXNbZW5jfGRlY10KKysjIGxhdGVuY3kgaXMgNiwgaXQgdHVybmVkIG91dCB0aGF0IGl0IGNh biBiZSBzY2hlZHVsZWQgb25seSBldmVyeQorKyMgKnNlY29uZCogY3ljbGUuIFRodXMgM3ggaW50 ZXJsZWF2ZSBpcyB0aGUgb25lIHByb3ZpZGluZyBvcHRpbWFsCisrIyB1dGlsaXphdGlvbiwgaS5l LiB3aGVuIHN1YnJvdXRpbmUncyB0aHJvdWdocHV0IGlzIHZpcnR1YWxseSBzYW1lIGFzCisrIyBv ZiBub24taW50ZXJsZWF2ZWQgc3Vicm91dGluZSBbZm9yIG51bWJlciBvZiBpbnB1dCBibG9ja3Mg dXAgdG8gM10uCisrIyBUaGlzIGlzIHdoeSBpdCBtYWtlcyBubyBzZW5zZSB0byBpbXBsZW1lbnQg Mnggc3Vicm91dGluZS4gQXMgc29vbgorKyMgYXMvaWYgSW50ZWwgaW1wcm92ZXMgdGhyb3VnaHB1 dCBieSBtYWtpbmcgaXQgcG9zc2libGUgdG8gc2NoZWR1bGUKKysjIHRoZSBpbnN0cnVjdGlvbnMg aW4gcXVlc3Rpb24gKmV2ZXJ5KiBjeWNsZXMgSSB3b3VsZCBoYXZlIHRvCisrIyBpbXBsZW1lbnQg NnggaW50ZXJsZWF2ZSBhbmQgdXNlIGl0IGluIGxvb3AuLi4KKytzdWIgYWVzbmlfZ2VuZXJhdGUz IHsKKytteSAkZGlyPXNoaWZ0OworKyMgQXMgYWxyZWFkeSBtZW50aW9uZWQgaXQgdGFrZXMgaW4g JGtleSBhbmQgJHJvdW5kcywgd2hpY2ggYXJlICpub3QqCisrIyBwcmVzZXJ2ZWQuICRpbm91dFsw LTJdIGlzIGNpcGhlci9jbGVhciB0ZXh0Li4uCisrJGNvZGUuPTw8X19fOworKy50eXBlCV9hZXNu aV8ke2Rpcn1yeXB0MyxcQGFiaS1vbW5pcG90ZW50CisrLmFsaWduCTE2CisrX2Flc25pXyR7ZGly fXJ5cHQzOgorKwkkbW92a2V5CSgka2V5KSwkcm5ka2V5MAorKwlzaHIJXCQxLCRyb3VuZHMKKysJ JG1vdmtleQkxNigka2V5KSwkcm5ka2V5MQorKwlsZWEJMzIoJGtleSksJGtleQorKwlweG9yCSRy bmRrZXkwLCRpbm91dDAKKysJcHhvcgkkcm5ka2V5MCwkaW5vdXQxCisrCXB4b3IJJHJuZGtleTAs JGlub3V0MgorKworKy5MJHtkaXJ9X2xvb3AzOgorKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0 MAorKwkkbW92a2V5CQkoJGtleSksJHJuZGtleTAKKysJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91 dDEKKysJZGVjCQkkcm91bmRzCisrCWFlcyR7ZGlyfQkkcm5ka2V5MSwkaW5vdXQyCisrCWFlcyR7 ZGlyfQkkcm5ka2V5MCwkaW5vdXQwCisrCSRtb3ZrZXkJCTE2KCRrZXkpLCRybmRrZXkxCisrCWFl cyR7ZGlyfQkkcm5ka2V5MCwkaW5vdXQxCisrCWxlYQkJMzIoJGtleSksJGtleQorKwlhZXMke2Rp cn0JJHJuZGtleTAsJGlub3V0MgorKwlqbnoJCS5MJHtkaXJ9X2xvb3AzCisrCisrCWFlcyR7ZGly fQkkcm5ka2V5MSwkaW5vdXQwCisrCSRtb3ZrZXkJCSgka2V5KSwkcm5ka2V5MAorKwlhZXMke2Rp cn0JJHJuZGtleTEsJGlub3V0MQorKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0MgorKwlhZXMk e2Rpcn1sYXN0CSRybmRrZXkwLCRpbm91dDAKKysJYWVzJHtkaXJ9bGFzdAkkcm5ka2V5MCwkaW5v dXQxCisrCWFlcyR7ZGlyfWxhc3QJJHJuZGtleTAsJGlub3V0MgorKwlyZXQKKysuc2l6ZQlfYWVz bmlfJHtkaXJ9cnlwdDMsLi1fYWVzbmlfJHtkaXJ9cnlwdDMKKytfX18KKyt9CisrIyA0eCBpbnRl cmxlYXZlIGlzIGltcGxlbWVudGVkIHRvIGltcHJvdmUgc21hbGwgYmxvY2sgcGVyZm9ybWFuY2Us CisrIyBtb3N0IG5vdGFibHkgW2FuZCBuYXR1cmFsbHldIDQgYmxvY2sgYnkgfjMwJS4gT25lIGNh biBhcmd1ZSB0aGF0IG9uZQorKyMgc2hvdWxkIGhhdmUgaW1wbGVtZW50ZWQgNXggYXMgd2VsbCwg YnV0IGltcHJvdmVtZW50IHdvdWxkIGJlIDwyMCUsCisrIyBzbyBpdCdzIG5vdCB3b3J0aCBpdC4u LgorK3N1YiBhZXNuaV9nZW5lcmF0ZTQgeworK215ICRkaXI9c2hpZnQ7CisrIyBBcyBhbHJlYWR5 IG1lbnRpb25lZCBpdCB0YWtlcyBpbiAka2V5IGFuZCAkcm91bmRzLCB3aGljaCBhcmUgKm5vdCoK KysjIHByZXNlcnZlZC4gJGlub3V0WzAtM10gaXMgY2lwaGVyL2NsZWFyIHRleHQuLi4KKyskY29k ZS49PDxfX187CisrLnR5cGUJX2Flc25pXyR7ZGlyfXJ5cHQ0LFxAYWJpLW9tbmlwb3RlbnQKKysu YWxpZ24JMTYKKytfYWVzbmlfJHtkaXJ9cnlwdDQ6CisrCSRtb3ZrZXkJKCRrZXkpLCRybmRrZXkw CisrCXNocglcJDEsJHJvdW5kcworKwkkbW92a2V5CTE2KCRrZXkpLCRybmRrZXkxCisrCWxlYQkz Migka2V5KSwka2V5CisrCXB4b3IJJHJuZGtleTAsJGlub3V0MAorKwlweG9yCSRybmRrZXkwLCRp bm91dDEKKysJcHhvcgkkcm5ka2V5MCwkaW5vdXQyCisrCXB4b3IJJHJuZGtleTAsJGlub3V0Mwor KworKy5MJHtkaXJ9X2xvb3A0OgorKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0MAorKwkkbW92 a2V5CQkoJGtleSksJHJuZGtleTAKKysJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDEKKysJZGVj CQkkcm91bmRzCisrCWFlcyR7ZGlyfQkkcm5ka2V5MSwkaW5vdXQyCisrCWFlcyR7ZGlyfQkkcm5k a2V5MSwkaW5vdXQzCisrCWFlcyR7ZGlyfQkkcm5ka2V5MCwkaW5vdXQwCisrCSRtb3ZrZXkJCTE2 KCRrZXkpLCRybmRrZXkxCisrCWFlcyR7ZGlyfQkkcm5ka2V5MCwkaW5vdXQxCisrCWxlYQkJMzIo JGtleSksJGtleQorKwlhZXMke2Rpcn0JJHJuZGtleTAsJGlub3V0MgorKwlhZXMke2Rpcn0JJHJu ZGtleTAsJGlub3V0MworKwlqbnoJCS5MJHtkaXJ9X2xvb3A0CisrCisrCWFlcyR7ZGlyfQkkcm5k a2V5MSwkaW5vdXQwCisrCSRtb3ZrZXkJCSgka2V5KSwkcm5ka2V5MAorKwlhZXMke2Rpcn0JJHJu ZGtleTEsJGlub3V0MQorKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0MgorKwlhZXMke2Rpcn0J JHJuZGtleTEsJGlub3V0MworKwlhZXMke2Rpcn1sYXN0CSRybmRrZXkwLCRpbm91dDAKKysJYWVz JHtkaXJ9bGFzdAkkcm5ka2V5MCwkaW5vdXQxCisrCWFlcyR7ZGlyfWxhc3QJJHJuZGtleTAsJGlu b3V0MgorKwlhZXMke2Rpcn1sYXN0CSRybmRrZXkwLCRpbm91dDMKKysJcmV0CisrLnNpemUJX2Fl c25pXyR7ZGlyfXJ5cHQ0LC4tX2Flc25pXyR7ZGlyfXJ5cHQ0CisrX19fCisrfQorKyZhZXNuaV9n ZW5lcmF0ZTMoImVuYyIpIGlmICgkUFJFRklYIGVxICJhZXNuaSIpOworKyZhZXNuaV9nZW5lcmF0 ZTMoImRlYyIpOworKyZhZXNuaV9nZW5lcmF0ZTQoImVuYyIpIGlmICgkUFJFRklYIGVxICJhZXNu aSIpOworKyZhZXNuaV9nZW5lcmF0ZTQoImRlYyIpOworKwwKKytpZiAoJFBSRUZJWCBlcSAiYWVz bmkiKSB7CisrIyB2b2lkIGFlc25pX2VjYl9lbmNyeXB0IChjb25zdCB2b2lkICppbiwgdm9pZCAq b3V0LAorKyMJCQkgIHNpemVfdCBsZW5ndGgsIGNvbnN0IEFFU19LRVkgKmtleSwKKysjCQkJICBp bnQgZW5jKTsKKyskY29kZS49PDxfX187CisrLmdsb2JsCWFlc25pX2VjYl9lbmNyeXB0CisrLnR5 cGUJYWVzbmlfZWNiX2VuY3J5cHQsXEBmdW5jdGlvbiw1CisrLmFsaWduCTE2CisrYWVzbmlfZWNi X2VuY3J5cHQ6CisrCWNtcAlcJDE2LCRsZW4JCSMgY2hlY2sgbGVuZ3RoCisrCWpiCS5MZWNiX3Jl dAorKworKwltb3YJMjQwKCRrZXkpLCRyb3VuZHMJIyBwdWxsICRyb3VuZHMKKysJYW5kCVwkLTE2 LCRsZW4KKysJbW92CSRrZXksJGtleV8JCSMgYmFja3VwICRrZXkKKysJdGVzdAklcjhkLCVyOGQJ CSMgNXRoIGFyZ3VtZW50CisrCW1vdgkkcm91bmRzLCRybmRzXwkJIyBiYWNrdXAgJHJvdW5kcwor KwlqegkuTGVjYl9kZWNyeXB0CisrIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFQ0IgRU5D UllQVCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0jCisrCXN1YglcJDB4NDAsJGxlbgor KwlqYmUJLkxlY2JfZW5jX3RhaWwKKysJam1wCS5MZWNiX2VuY19sb29wMworKy5hbGlnbiAxNgor Ky5MZWNiX2VuY19sb29wMzoKKysJbW92dXBzCSgkaW5wKSwkaW5vdXQwCisrCW1vdnVwcwkweDEw KCRpbnApLCRpbm91dDEKKysJbW92dXBzCTB4MjAoJGlucCksJGlub3V0MgorKwljYWxsCV9hZXNu aV9lbmNyeXB0MworKwlzdWIJXCQweDMwLCRsZW4KKysJbGVhCTB4MzAoJGlucCksJGlucAorKwls ZWEJMHgzMCgkb3V0KSwkb3V0CisrCW1vdnVwcwkkaW5vdXQwLC0weDMwKCRvdXQpCisrCW1vdgkk cm5kc18sJHJvdW5kcwkJIyByZXN0b3JlICRyb3VuZHMKKysJbW92dXBzCSRpbm91dDEsLTB4MjAo JG91dCkKKysJbW92CSRrZXlfLCRrZXkJCSMgcmVzdG9yZSAka2V5CisrCW1vdnVwcwkkaW5vdXQy LC0weDEwKCRvdXQpCisrCWphCS5MZWNiX2VuY19sb29wMworKworKy5MZWNiX2VuY190YWlsOgor KwlhZGQJXCQweDQwLCRsZW4KKysJanoJLkxlY2JfcmV0CisrCisrCWNtcAlcJDB4MTAsJGxlbgor Kwltb3Z1cHMJKCRpbnApLCRpbm91dDAKKysJamUJLkxlY2JfZW5jX29uZQorKwljbXAJXCQweDIw LCRsZW4KKysJbW92dXBzCTB4MTAoJGlucCksJGlub3V0MQorKwlqZQkuTGVjYl9lbmNfdHdvCisr CWNtcAlcJDB4MzAsJGxlbgorKwltb3Z1cHMJMHgyMCgkaW5wKSwkaW5vdXQyCisrCWplCS5MZWNi X2VuY190aHJlZQorKwltb3Z1cHMJMHgzMCgkaW5wKSwkaW5vdXQzCisrCWNhbGwJX2Flc25pX2Vu Y3J5cHQ0CisrCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQorKwltb3Z1cHMJJGlub3V0MSwweDEwKCRv dXQpCisrCW1vdnVwcwkkaW5vdXQyLDB4MjAoJG91dCkKKysJbW92dXBzCSRpbm91dDMsMHgzMCgk b3V0KQorKwlqbXAJLkxlY2JfcmV0CisrLmFsaWduCTE2CisrLkxlY2JfZW5jX29uZToKKytfX18K KysJJmFlc25pX2dlbmVyYXRlMSgiZW5jIiwka2V5LCRyb3VuZHMpOworKyRjb2RlLj08PF9fXzsK KysJbW92dXBzCSRpbm91dDAsKCRvdXQpCisrCWptcAkuTGVjYl9yZXQKKysuYWxpZ24JMTYKKysu TGVjYl9lbmNfdHdvOgorKwljYWxsCV9hZXNuaV9lbmNyeXB0MworKwltb3Z1cHMJJGlub3V0MCwo JG91dCkKKysJbW92dXBzCSRpbm91dDEsMHgxMCgkb3V0KQorKwlqbXAJLkxlY2JfcmV0CisrLmFs aWduCTE2CisrLkxlY2JfZW5jX3RocmVlOgorKwljYWxsCV9hZXNuaV9lbmNyeXB0MworKwltb3Z1 cHMJJGlub3V0MCwoJG91dCkKKysJbW92dXBzCSRpbm91dDEsMHgxMCgkb3V0KQorKwltb3Z1cHMJ JGlub3V0MiwweDIwKCRvdXQpCisrCWptcAkuTGVjYl9yZXQKKysMIy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSBFQ0IgREVDUllQVCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0jCisr LmFsaWduCTE2CisrLkxlY2JfZGVjcnlwdDoKKysJc3ViCVwkMHg0MCwkbGVuCisrCWpiZQkuTGVj Yl9kZWNfdGFpbAorKwlqbXAJLkxlY2JfZGVjX2xvb3AzCisrLmFsaWduIDE2CisrLkxlY2JfZGVj X2xvb3AzOgorKwltb3Z1cHMJKCRpbnApLCRpbm91dDAKKysJbW92dXBzCTB4MTAoJGlucCksJGlu b3V0MQorKwltb3Z1cHMJMHgyMCgkaW5wKSwkaW5vdXQyCisrCWNhbGwJX2Flc25pX2RlY3J5cHQz CisrCXN1YglcJDB4MzAsJGxlbgorKwlsZWEJMHgzMCgkaW5wKSwkaW5wCisrCWxlYQkweDMwKCRv dXQpLCRvdXQKKysJbW92dXBzCSRpbm91dDAsLTB4MzAoJG91dCkKKysJbW92CSRybmRzXywkcm91 bmRzCQkjIHJlc3RvcmUgJHJvdW5kcworKwltb3Z1cHMJJGlub3V0MSwtMHgyMCgkb3V0KQorKwlt b3YJJGtleV8sJGtleQkJIyByZXN0b3JlICRrZXkKKysJbW92dXBzCSRpbm91dDIsLTB4MTAoJG91 dCkKKysJamEJLkxlY2JfZGVjX2xvb3AzCisrCisrLkxlY2JfZGVjX3RhaWw6CisrCWFkZAlcJDB4 NDAsJGxlbgorKwlqegkuTGVjYl9yZXQKKysKKysJY21wCVwkMHgxMCwkbGVuCisrCW1vdnVwcwko JGlucCksJGlub3V0MAorKwlqZQkuTGVjYl9kZWNfb25lCisrCWNtcAlcJDB4MjAsJGxlbgorKwlt b3Z1cHMJMHgxMCgkaW5wKSwkaW5vdXQxCisrCWplCS5MZWNiX2RlY190d28KKysJY21wCVwkMHgz MCwkbGVuCisrCW1vdnVwcwkweDIwKCRpbnApLCRpbm91dDIKKysJamUJLkxlY2JfZGVjX3RocmVl CisrCW1vdnVwcwkweDMwKCRpbnApLCRpbm91dDMKKysJY2FsbAlfYWVzbmlfZGVjcnlwdDQKKysJ bW92dXBzCSRpbm91dDAsKCRvdXQpCisrCW1vdnVwcwkkaW5vdXQxLDB4MTAoJG91dCkKKysJbW92 dXBzCSRpbm91dDIsMHgyMCgkb3V0KQorKwltb3Z1cHMJJGlub3V0MywweDMwKCRvdXQpCisrCWpt cAkuTGVjYl9yZXQKKysuYWxpZ24JMTYKKysuTGVjYl9kZWNfb25lOgorK19fXworKwkmYWVzbmlf Z2VuZXJhdGUxKCJkZWMiLCRrZXksJHJvdW5kcyk7CisrJGNvZGUuPTw8X19fOworKwltb3Z1cHMJ JGlub3V0MCwoJG91dCkKKysJam1wCS5MZWNiX3JldAorKy5hbGlnbgkxNgorKy5MZWNiX2RlY190 d286CisrCWNhbGwJX2Flc25pX2RlY3J5cHQzCisrCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQorKwlt b3Z1cHMJJGlub3V0MSwweDEwKCRvdXQpCisrCWptcAkuTGVjYl9yZXQKKysuYWxpZ24JMTYKKysu TGVjYl9kZWNfdGhyZWU6CisrCWNhbGwJX2Flc25pX2RlY3J5cHQzCisrCW1vdnVwcwkkaW5vdXQw LCgkb3V0KQorKwltb3Z1cHMJJGlub3V0MSwweDEwKCRvdXQpCisrCW1vdnVwcwkkaW5vdXQyLDB4 MjAoJG91dCkKKysKKysuTGVjYl9yZXQ6CisrCXJldAorKy5zaXplCWFlc25pX2VjYl9lbmNyeXB0 LC4tYWVzbmlfZWNiX2VuY3J5cHQKKytfX18KKyt9CisrDAorKyMgdm9pZCAkUFJFRklYX2NiY19l bmNyeXB0IChjb25zdCB2b2lkICppbnAsIHZvaWQgKm91dCwKKysjCQkJICAgIHNpemVfdCBsZW5n dGgsIGNvbnN0IEFFU19LRVkgKmtleSwKKysjCQkJICAgIHVuc2lnbmVkIGNoYXIgKml2cCxjb25z dCBpbnQgZW5jKTsKKyskcmVzZXJ2ZWQgPSAkd2luNjQ/MHg0MDotMHgxODsJIyB1c2VkIGluIGRl Y3J5cHQKKyskY29kZS49PDxfX187CisrLmdsb2JsCSR7UFJFRklYfV9jYmNfZW5jcnlwdAorKy50 eXBlCSR7UFJFRklYfV9jYmNfZW5jcnlwdCxcQGZ1bmN0aW9uLDYKKysuYWxpZ24JMTYKKyske1BS RUZJWH1fY2JjX2VuY3J5cHQ6CisrCXRlc3QJJGxlbiwkbGVuCQkjIGNoZWNrIGxlbmd0aAorKwlq egkuTGNiY19yZXQKKysKKysJbW92CTI0MCgka2V5KSwkcm5kc18JIyBwdWxsICRyb3VuZHMKKysJ bW92CSRrZXksJGtleV8JCSMgYmFja3VwICRrZXkKKysJdGVzdAklcjlkLCVyOWQJCSMgNnRoIGFy Z3VtZW50CisrCWp6CS5MY2JjX2RlY3J5cHQKKysjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t IENCQyBFTkNSWVBUIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSMKKysJbW92dXBzCSgk aXZwKSwkaW5vdXQwCQkjIGxvYWQgaXYgYXMgaW5pdGlhbCBzdGF0ZQorKwljbXAJXCQxNiwkbGVu CisrCW1vdgkkcm5kc18sJHJvdW5kcworKwlqYgkuTGNiY19lbmNfdGFpbAorKwlzdWIJXCQxNiwk bGVuCisrCWptcAkuTGNiY19lbmNfbG9vcAorKy5hbGlnbiAxNgorKy5MY2JjX2VuY19sb29wOgor Kwltb3Z1cHMJKCRpbnApLCRpbm91dDEJCSMgbG9hZCBpbnB1dAorKwlsZWEJMTYoJGlucCksJGlu cAorKwlweG9yCSRpbm91dDEsJGlub3V0MAorK19fXworKwkmYWVzbmlfZ2VuZXJhdGUxKCJlbmMi LCRrZXksJHJvdW5kcyk7CisrJGNvZGUuPTw8X19fOworKwlzdWIJXCQxNiwkbGVuCisrCWxlYQkx Nigkb3V0KSwkb3V0CisrCW1vdgkkcm5kc18sJHJvdW5kcwkJIyByZXN0b3JlICRyb3VuZHMKKysJ bW92CSRrZXlfLCRrZXkJCSMgcmVzdG9yZSAka2V5CisrCW1vdnVwcwkkaW5vdXQwLC0xNigkb3V0 KQkjIHN0b3JlIG91dHB1dAorKwlqbmMJLkxjYmNfZW5jX2xvb3AKKysJYWRkCVwkMTYsJGxlbgor KwlqbnoJLkxjYmNfZW5jX3RhaWwKKysJbW92dXBzCSRpbm91dDAsKCRpdnApCisrCWptcAkuTGNi Y19yZXQKKysKKysuTGNiY19lbmNfdGFpbDoKKysJbW92CSRsZW4sJXJjeAkjIHphcHMgJGtleQor Kwl4Y2hnCSRpbnAsJG91dAkjICRpbnAgaXMgJXJzaSBhbmQgJG91dCBpcyAlcmRpIG5vdworKwku bG9uZwkweDkwNjZBNEYzCSMgcmVwIG1vdnNiCisrCW1vdglcJDE2LCVlY3gJIyB6ZXJvIHRhaWwK KysJc3ViCSRsZW4sJXJjeAorKwl4b3IJJWVheCwlZWF4CisrCS5sb25nCTB4OTA2NkFBRjMJIyBy ZXAgc3Rvc2IKKysJbGVhCS0xNiglcmRpKSwlcmRpCSMgcmV3aW5kICRvdXQgYnkgMSBibG9jawor Kwltb3YJJHJuZHNfLCRyb3VuZHMJIyByZXN0b3JlICRyb3VuZHMKKysJbW92CSVyZGksJXJzaQkj ICRpbnAgYW5kICRvdXQgYXJlIHRoZSBzYW1lCisrCW1vdgkka2V5Xywka2V5CSMgcmVzdG9yZSAk a2V5CisrCXhvcgkkbGVuLCRsZW4JIyBsZW49MTYKKysJam1wCS5MY2JjX2VuY19sb29wCSMgb25l IG1vcmUgc3BpbgorKwwjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENCQyBERUNSWVBUIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSMKKysuYWxpZ24JMTYKKysuTGNiY19kZWNyeXB0 OgorK19fXworKyRjb2RlLj08PF9fXyBpZiAoJHdpbjY0KTsKKysJbGVhCS0weDU4KCVyc3ApLCVy c3AKKysJbW92YXBzCSV4bW02LCglcnNwKQorKwltb3ZhcHMJJXhtbTcsMHgxMCglcnNwKQorKwlt b3ZhcHMJJXhtbTgsMHgyMCglcnNwKQorKwltb3ZhcHMJJXhtbTksMHgzMCglcnNwKQorKy5MY2Jj X2RlY3J5cHRfYm9keToKKytfX18KKyskY29kZS49PDxfX187CisrCW1vdnVwcwkoJGl2cCksJGl2 CisrCXN1YglcJDB4NDAsJGxlbgorKwltb3YJJHJuZHNfLCRyb3VuZHMKKysJamJlCS5MY2JjX2Rl Y190YWlsCisrCWptcAkuTGNiY19kZWNfbG9vcDMKKysuYWxpZ24gMTYKKysuTGNiY19kZWNfbG9v cDM6CisrCW1vdnVwcwkoJGlucCksJGlub3V0MAorKwltb3Z1cHMJMHgxMCgkaW5wKSwkaW5vdXQx CisrCW1vdnVwcwkweDIwKCRpbnApLCRpbm91dDIKKysJbW92YXBzCSRpbm91dDAsJGluMAorKwlt b3ZhcHMJJGlub3V0MSwkaW4xCisrCW1vdmFwcwkkaW5vdXQyLCRpbjIKKysJY2FsbAlfYWVzbmlf ZGVjcnlwdDMKKysJc3ViCVwkMHgzMCwkbGVuCisrCWxlYQkweDMwKCRpbnApLCRpbnAKKysJbGVh CTB4MzAoJG91dCksJG91dAorKwlweG9yCSRpdiwkaW5vdXQwCisrCXB4b3IJJGluMCwkaW5vdXQx CisrCW1vdmFwcwkkaW4yLCRpdgorKwlweG9yCSRpbjEsJGlub3V0MgorKwltb3Z1cHMJJGlub3V0 MCwtMHgzMCgkb3V0KQorKwltb3YJJHJuZHNfLCRyb3VuZHMJIyByZXN0b3JlICRyb3VuZHMKKysJ bW92dXBzCSRpbm91dDEsLTB4MjAoJG91dCkKKysJbW92CSRrZXlfLCRrZXkJIyByZXN0b3JlICRr ZXkKKysJbW92dXBzCSRpbm91dDIsLTB4MTAoJG91dCkKKysJamEJLkxjYmNfZGVjX2xvb3AzCisr CisrLkxjYmNfZGVjX3RhaWw6CisrCWFkZAlcJDB4NDAsJGxlbgorKwltb3Z1cHMJJGl2LCgkaXZw KQorKwlqegkuTGNiY19kZWNfcmV0CisrCisrCW1vdnVwcwkoJGlucCksJGlub3V0MAorKwljbXAJ XCQweDEwLCRsZW4KKysJbW92YXBzCSRpbm91dDAsJGluMAorKwlqYmUJLkxjYmNfZGVjX29uZQor Kwltb3Z1cHMJMHgxMCgkaW5wKSwkaW5vdXQxCisrCWNtcAlcJDB4MjAsJGxlbgorKwltb3ZhcHMJ JGlub3V0MSwkaW4xCisrCWpiZQkuTGNiY19kZWNfdHdvCisrCW1vdnVwcwkweDIwKCRpbnApLCRp bm91dDIKKysJY21wCVwkMHgzMCwkbGVuCisrCW1vdmFwcwkkaW5vdXQyLCRpbjIKKysJamJlCS5M Y2JjX2RlY190aHJlZQorKwltb3Z1cHMJMHgzMCgkaW5wKSwkaW5vdXQzCisrCWNhbGwJX2Flc25p X2RlY3J5cHQ0CisrCXB4b3IJJGl2LCRpbm91dDAKKysJbW92dXBzCTB4MzAoJGlucCksJGl2Cisr CXB4b3IJJGluMCwkaW5vdXQxCisrCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQorKwlweG9yCSRpbjEs JGlub3V0MgorKwltb3Z1cHMJJGlub3V0MSwweDEwKCRvdXQpCisrCXB4b3IJJGluMiwkaW5vdXQz CisrCW1vdnVwcwkkaW5vdXQyLDB4MjAoJG91dCkKKysJbW92YXBzCSRpbm91dDMsJGlub3V0MAor KwlsZWEJMHgzMCgkb3V0KSwkb3V0CisrCWptcAkuTGNiY19kZWNfdGFpbF9jb2xsZWN0ZWQKKysu YWxpZ24JMTYKKysuTGNiY19kZWNfb25lOgorK19fXworKwkmYWVzbmlfZ2VuZXJhdGUxKCJkZWMi LCRrZXksJHJvdW5kcyk7CisrJGNvZGUuPTw8X19fOworKwlweG9yCSRpdiwkaW5vdXQwCisrCW1v dmFwcwkkaW4wLCRpdgorKwlqbXAJLkxjYmNfZGVjX3RhaWxfY29sbGVjdGVkCisrLmFsaWduCTE2 CisrLkxjYmNfZGVjX3R3bzoKKysJY2FsbAlfYWVzbmlfZGVjcnlwdDMKKysJcHhvcgkkaXYsJGlu b3V0MAorKwlweG9yCSRpbjAsJGlub3V0MQorKwltb3Z1cHMJJGlub3V0MCwoJG91dCkKKysJbW92 YXBzCSRpbjEsJGl2CisrCW1vdmFwcwkkaW5vdXQxLCRpbm91dDAKKysJbGVhCTB4MTAoJG91dCks JG91dAorKwlqbXAJLkxjYmNfZGVjX3RhaWxfY29sbGVjdGVkCisrLmFsaWduCTE2CisrLkxjYmNf ZGVjX3RocmVlOgorKwljYWxsCV9hZXNuaV9kZWNyeXB0MworKwlweG9yCSRpdiwkaW5vdXQwCisr CXB4b3IJJGluMCwkaW5vdXQxCisrCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQorKwlweG9yCSRpbjEs JGlub3V0MgorKwltb3Z1cHMJJGlub3V0MSwweDEwKCRvdXQpCisrCW1vdmFwcwkkaW4yLCRpdgor Kwltb3ZhcHMJJGlub3V0MiwkaW5vdXQwCisrCWxlYQkweDIwKCRvdXQpLCRvdXQKKysJam1wCS5M Y2JjX2RlY190YWlsX2NvbGxlY3RlZAorKy5hbGlnbgkxNgorKy5MY2JjX2RlY190YWlsX2NvbGxl Y3RlZDoKKysJYW5kCVwkMTUsJGxlbgorKwltb3Z1cHMJJGl2LCgkaXZwKQorKwlqbnoJLkxjYmNf ZGVjX3RhaWxfcGFydGlhbAorKwltb3Z1cHMJJGlub3V0MCwoJG91dCkKKysJam1wCS5MY2JjX2Rl Y19yZXQKKysuTGNiY19kZWNfdGFpbF9wYXJ0aWFsOgorKwltb3ZhcHMJJGlub3V0MCwkcmVzZXJ2 ZWQoJXJzcCkKKysJbW92CSRvdXQsJXJkaQorKwltb3YJJGxlbiwlcmN4CisrCWxlYQkkcmVzZXJ2 ZWQoJXJzcCksJXJzaQorKwkubG9uZwkweDkwNjZBNEYzCSMgcmVwIG1vdnNiCisrCisrLkxjYmNf ZGVjX3JldDoKKytfX18KKyskY29kZS49PDxfX18gaWYgKCR3aW42NCk7CisrCW1vdmFwcwkoJXJz cCksJXhtbTYKKysJbW92YXBzCTB4MTAoJXJzcCksJXhtbTcKKysJbW92YXBzCTB4MjAoJXJzcCks JXhtbTgKKysJbW92YXBzCTB4MzAoJXJzcCksJXhtbTkKKysJbGVhCTB4NTgoJXJzcCksJXJzcAor K19fXworKyRjb2RlLj08PF9fXzsKKysuTGNiY19yZXQ6CisrCXJldAorKy5zaXplCSR7UFJFRklY fV9jYmNfZW5jcnlwdCwuLSR7UFJFRklYfV9jYmNfZW5jcnlwdAorK19fXworKwwKKysjIGludCAk UFJFRklYX3NldF9bZW58ZGVdY3J5cHRfa2V5IChjb25zdCB1bnNpZ25lZCBjaGFyICp1c2VyS2V5 LAorKyMJCQkJaW50IGJpdHMsIEFFU19LRVkgKmtleSkKKyt7IG15ICgkaW5wLCRiaXRzLCRrZXkp ID0gQF80YXJnczsKKysgICRiaXRzID1+IHMvJXIvJWUvOworKworKyRjb2RlLj08PF9fXzsKKysu Z2xvYmwJJHtQUkVGSVh9X3NldF9kZWNyeXB0X2tleQorKy50eXBlCSR7UFJFRklYfV9zZXRfZGVj cnlwdF9rZXksXEBhYmktb21uaXBvdGVudAorKy5hbGlnbgkxNgorKyR7UFJFRklYfV9zZXRfZGVj cnlwdF9rZXk6CisrCS5ieXRlCTB4NDgsMHg4MywweEVDLDB4MDgJIyBzdWIgcnNwLDgKKysJY2Fs bAlfYWVzbmlfc2V0X2VuY3J5cHRfa2V5CisrCXNobAlcJDQsJGJpdHMJCSMgcm91bmRzLTEgYWZ0 ZXIgX2Flc25pX3NldF9lbmNyeXB0X2tleQorKwl0ZXN0CSVlYXgsJWVheAorKwlqbnoJLkxkZWNf a2V5X3JldAorKwlsZWEJMTYoJGtleSwkYml0cyksJGlucAkjIHBvaW50cyBhdCB0aGUgZW5kIG9m IGtleSBzY2hlZHVsZQorKworKwkkbW92a2V5CSgka2V5KSwleG1tMAkJIyBqdXN0IHN3YXAKKysJ JG1vdmtleQkoJGlucCksJXhtbTEKKysJJG1vdmtleQkleG1tMCwoJGlucCkKKysJJG1vdmtleQkl eG1tMSwoJGtleSkKKysJbGVhCTE2KCRrZXkpLCRrZXkKKysJbGVhCS0xNigkaW5wKSwkaW5wCisr CisrLkxkZWNfa2V5X2ludmVyc2U6CisrCSRtb3ZrZXkJKCRrZXkpLCV4bW0wCQkjIHN3YXAgYW5k IGludmVyc2UKKysJJG1vdmtleQkoJGlucCksJXhtbTEKKysJYWVzaW1jCSV4bW0wLCV4bW0wCisr CWFlc2ltYwkleG1tMSwleG1tMQorKwlsZWEJMTYoJGtleSksJGtleQorKwlsZWEJLTE2KCRpbnAp LCRpbnAKKysJY21wCSRrZXksJGlucAorKwkkbW92a2V5CSV4bW0wLDE2KCRpbnApCisrCSRtb3Zr ZXkJJXhtbTEsLTE2KCRrZXkpCisrCWphCS5MZGVjX2tleV9pbnZlcnNlCisrCisrCSRtb3ZrZXkJ KCRrZXkpLCV4bW0wCQkjIGludmVyc2UgbWlkZGxlCisrCWFlc2ltYwkleG1tMCwleG1tMAorKwkk bW92a2V5CSV4bW0wLCgkaW5wKQorKy5MZGVjX2tleV9yZXQ6CisrCWFkZAlcJDgsJXJzcAorKwly ZXQKKysuTFNFSF9lbmRfc2V0X2RlY3J5cHRfa2V5OgorKy5zaXplCSR7UFJFRklYfV9zZXRfZGVj cnlwdF9rZXksLi0ke1BSRUZJWH1fc2V0X2RlY3J5cHRfa2V5CisrX19fCisrDAorKyMgVGhpcyBp cyBiYXNlZCBvbiBzdWJtaXNzaW9uIGJ5CisrIworKyMJSHVhbmcgWWluZyA8eWluZy5odWFuZ0Bp bnRlbC5jb20+CisrIwlWaW5vZGggR29wYWwgPHZpbm9kaC5nb3BhbEBpbnRlbC5jb20+CisrIwlL YWhyYW1hbiBBa2RlbWlyCisrIworKyMgQWdyZXNzaXZlbHkgb3B0aW1pemVkIGluIHJlc3BlY3Qg dG8gYWVza2V5Z2VuYXNzaXN0J3MgY3JpdGljYWwgcGF0aAorKyMgYW5kIGlzIGNvbnRhaW5lZCBp biAleG1tMC01IHRvIG1lZXQgV2luNjQgQUJJIHJlcXVpcmVtZW50LgorKyMKKyskY29kZS49PDxf X187CisrLmdsb2JsCSR7UFJFRklYfV9zZXRfZW5jcnlwdF9rZXkKKysudHlwZQkke1BSRUZJWH1f c2V0X2VuY3J5cHRfa2V5LFxAYWJpLW9tbmlwb3RlbnQKKysuYWxpZ24JMTYKKyske1BSRUZJWH1f c2V0X2VuY3J5cHRfa2V5OgorK19hZXNuaV9zZXRfZW5jcnlwdF9rZXk6CisrCS5ieXRlCTB4NDgs MHg4MywweEVDLDB4MDgJIyBzdWIgcnNwLDgKKysJdGVzdAkkaW5wLCRpbnAKKysJbW92CVwkLTEs JXJheAorKwlqegkuTGVuY19rZXlfcmV0CisrCXRlc3QJJGtleSwka2V5CisrCWp6CS5MZW5jX2tl eV9yZXQKKysKKysJbW92dXBzCSgkaW5wKSwleG1tMAkJIyBwdWxsIGZpcnN0IDEyOCBiaXRzIG9m ICp1c2VyS2V5CisrCXB4b3IJJXhtbTQsJXhtbTQJCSMgbG93IGR3b3JkIG9mIHhtbTQgaXMgYXNz dW1lZCAwCisrCWxlYQkxNigka2V5KSwlcmF4CisrCWNtcAlcJDI1NiwkYml0cworKwlqZQkuTDE0 cm91bmRzCisrCWNtcAlcJDE5MiwkYml0cworKwlqZQkuTDEycm91bmRzCisrCWNtcAlcJDEyOCwk Yml0cworKwlqbmUJLkxiYWRfa2V5Yml0cworKworKy5MMTByb3VuZHM6CisrCW1vdglcJDksJGJp dHMJCQkjIDEwIHJvdW5kcyBmb3IgMTI4LWJpdCBrZXkKKysJJG1vdmtleQkleG1tMCwoJGtleSkJ CQkjIHJvdW5kIDAKKysJYWVza2V5Z2VuYXNzaXN0CVwkMHgxLCV4bW0wLCV4bW0xCSMgcm91bmQg MQorKwljYWxsCQkuTGtleV9leHBhbnNpb25fMTI4X2NvbGQKKysJYWVza2V5Z2VuYXNzaXN0CVwk MHgyLCV4bW0wLCV4bW0xCSMgcm91bmQgMgorKwljYWxsCQkuTGtleV9leHBhbnNpb25fMTI4Cisr CWFlc2tleWdlbmFzc2lzdAlcJDB4NCwleG1tMCwleG1tMQkjIHJvdW5kIDMKKysJY2FsbAkJLkxr ZXlfZXhwYW5zaW9uXzEyOAorKwlhZXNrZXlnZW5hc3Npc3QJXCQweDgsJXhtbTAsJXhtbTEJIyBy b3VuZCA0CisrCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8xMjgKKysJYWVza2V5Z2VuYXNzaXN0CVwk MHgxMCwleG1tMCwleG1tMQkjIHJvdW5kIDUKKysJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzEyOAor KwlhZXNrZXlnZW5hc3Npc3QJXCQweDIwLCV4bW0wLCV4bW0xCSMgcm91bmQgNgorKwljYWxsCQku TGtleV9leHBhbnNpb25fMTI4CisrCWFlc2tleWdlbmFzc2lzdAlcJDB4NDAsJXhtbTAsJXhtbTEJ IyByb3VuZCA3CisrCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8xMjgKKysJYWVza2V5Z2VuYXNzaXN0 CVwkMHg4MCwleG1tMCwleG1tMQkjIHJvdW5kIDgKKysJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzEy OAorKwlhZXNrZXlnZW5hc3Npc3QJXCQweDFiLCV4bW0wLCV4bW0xCSMgcm91bmQgOQorKwljYWxs CQkuTGtleV9leHBhbnNpb25fMTI4CisrCWFlc2tleWdlbmFzc2lzdAlcJDB4MzYsJXhtbTAsJXht bTEJIyByb3VuZCAxMAorKwljYWxsCQkuTGtleV9leHBhbnNpb25fMTI4CisrCSRtb3ZrZXkJJXht bTAsKCVyYXgpCisrCW1vdgkkYml0cyw4MCglcmF4KQkjIDI0MCglcmR4KQorKwl4b3IJJWVheCwl ZWF4CisrCWptcAkuTGVuY19rZXlfcmV0CisrCisrLmFsaWduCTE2CisrLkwxMnJvdW5kczoKKysJ bW92cQkxNigkaW5wKSwleG1tMgkJCSMgcmVtYWluaW5nIDEvMyBvZiAqdXNlcktleQorKwltb3YJ XCQxMSwkYml0cwkJCSMgMTIgcm91bmRzIGZvciAxOTIKKysJJG1vdmtleQkleG1tMCwoJGtleSkJ CQkjIHJvdW5kIDAKKysJYWVza2V5Z2VuYXNzaXN0CVwkMHgxLCV4bW0yLCV4bW0xCSMgcm91bmQg MSwyCisrCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8xOTJhX2NvbGQKKysJYWVza2V5Z2VuYXNzaXN0 CVwkMHgyLCV4bW0yLCV4bW0xCSMgcm91bmQgMiwzCisrCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8x OTJiCisrCWFlc2tleWdlbmFzc2lzdAlcJDB4NCwleG1tMiwleG1tMQkjIHJvdW5kIDQsNQorKwlj YWxsCQkuTGtleV9leHBhbnNpb25fMTkyYQorKwlhZXNrZXlnZW5hc3Npc3QJXCQweDgsJXhtbTIs JXhtbTEJIyByb3VuZCA1LDYKKysJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzE5MmIKKysJYWVza2V5 Z2VuYXNzaXN0CVwkMHgxMCwleG1tMiwleG1tMQkjIHJvdW5kIDcsOAorKwljYWxsCQkuTGtleV9l eHBhbnNpb25fMTkyYQorKwlhZXNrZXlnZW5hc3Npc3QJXCQweDIwLCV4bW0yLCV4bW0xCSMgcm91 bmQgOCw5CisrCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8xOTJiCisrCWFlc2tleWdlbmFzc2lzdAlc JDB4NDAsJXhtbTIsJXhtbTEJIyByb3VuZCAxMCwxMQorKwljYWxsCQkuTGtleV9leHBhbnNpb25f MTkyYQorKwlhZXNrZXlnZW5hc3Npc3QJXCQweDgwLCV4bW0yLCV4bW0xCSMgcm91bmQgMTEsMTIK KysJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzE5MmIKKysJJG1vdmtleQkleG1tMCwoJXJheCkKKysJ bW92CSRiaXRzLDQ4KCVyYXgpCSMgMjQwKCVyZHgpCisrCXhvcgklcmF4LCAlcmF4CisrCWptcAku TGVuY19rZXlfcmV0CisrCisrLmFsaWduCTE2CisrLkwxNHJvdW5kczoKKysJbW92dXBzCTE2KCRp bnApLCV4bW0yCQkJIyByZW1hbmluZyBoYWxmIG9mICp1c2VyS2V5CisrCW1vdglcJDEzLCRiaXRz CQkJIyAxNCByb3VuZHMgZm9yIDI1NgorKwlsZWEJMTYoJXJheCksJXJheAorKwkkbW92a2V5CSV4 bW0wLCgka2V5KQkJCSMgcm91bmQgMAorKwkkbW92a2V5CSV4bW0yLDE2KCRrZXkpCQkJIyByb3Vu ZCAxCisrCWFlc2tleWdlbmFzc2lzdAlcJDB4MSwleG1tMiwleG1tMQkjIHJvdW5kIDIKKysJY2Fs bAkJLkxrZXlfZXhwYW5zaW9uXzI1NmFfY29sZAorKwlhZXNrZXlnZW5hc3Npc3QJXCQweDEsJXht bTAsJXhtbTEJIyByb3VuZCAzCisrCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8yNTZiCisrCWFlc2tl eWdlbmFzc2lzdAlcJDB4MiwleG1tMiwleG1tMQkjIHJvdW5kIDQKKysJY2FsbAkJLkxrZXlfZXhw YW5zaW9uXzI1NmEKKysJYWVza2V5Z2VuYXNzaXN0CVwkMHgyLCV4bW0wLCV4bW0xCSMgcm91bmQg NQorKwljYWxsCQkuTGtleV9leHBhbnNpb25fMjU2YgorKwlhZXNrZXlnZW5hc3Npc3QJXCQweDQs JXhtbTIsJXhtbTEJIyByb3VuZCA2CisrCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8yNTZhCisrCWFl c2tleWdlbmFzc2lzdAlcJDB4NCwleG1tMCwleG1tMQkjIHJvdW5kIDcKKysJY2FsbAkJLkxrZXlf ZXhwYW5zaW9uXzI1NmIKKysJYWVza2V5Z2VuYXNzaXN0CVwkMHg4LCV4bW0yLCV4bW0xCSMgcm91 bmQgOAorKwljYWxsCQkuTGtleV9leHBhbnNpb25fMjU2YQorKwlhZXNrZXlnZW5hc3Npc3QJXCQw eDgsJXhtbTAsJXhtbTEJIyByb3VuZCA5CisrCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8yNTZiCisr CWFlc2tleWdlbmFzc2lzdAlcJDB4MTAsJXhtbTIsJXhtbTEJIyByb3VuZCAxMAorKwljYWxsCQku TGtleV9leHBhbnNpb25fMjU2YQorKwlhZXNrZXlnZW5hc3Npc3QJXCQweDEwLCV4bW0wLCV4bW0x CSMgcm91bmQgMTEKKysJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzI1NmIKKysJYWVza2V5Z2VuYXNz aXN0CVwkMHgyMCwleG1tMiwleG1tMQkjIHJvdW5kIDEyCisrCWNhbGwJCS5Ma2V5X2V4cGFuc2lv bl8yNTZhCisrCWFlc2tleWdlbmFzc2lzdAlcJDB4MjAsJXhtbTAsJXhtbTEJIyByb3VuZCAxMwor KwljYWxsCQkuTGtleV9leHBhbnNpb25fMjU2YgorKwlhZXNrZXlnZW5hc3Npc3QJXCQweDQwLCV4 bW0yLCV4bW0xCSMgcm91bmQgMTQKKysJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzI1NmEKKysJJG1v dmtleQkleG1tMCwoJXJheCkKKysJbW92CSRiaXRzLDE2KCVyYXgpCSMgMjQwKCVyZHgpCisrCXhv cgklcmF4LCVyYXgKKysJam1wCS5MZW5jX2tleV9yZXQKKysKKysuYWxpZ24JMTYKKysuTGJhZF9r ZXliaXRzOgorKwltb3YJXCQtMiwlcmF4CisrLkxlbmNfa2V5X3JldDoKKysJYWRkCVwkOCwlcnNw CisrCXJldAorKy5MU0VIX2VuZF9zZXRfZW5jcnlwdF9rZXk6CisrDAorKy5hbGlnbgkxNgorKy5M a2V5X2V4cGFuc2lvbl8xMjg6CisrCSRtb3ZrZXkJJXhtbTAsKCVyYXgpCisrCWxlYQkxNiglcmF4 KSwlcmF4CisrLkxrZXlfZXhwYW5zaW9uXzEyOF9jb2xkOgorKwlzaHVmcHMJXCQwYjAwMDEwMDAw LCV4bW0wLCV4bW00CisrCXB4b3IJJXhtbTQsICV4bW0wCisrCXNodWZwcwlcJDBiMTAwMDExMDAs JXhtbTAsJXhtbTQKKysJcHhvcgkleG1tNCwgJXhtbTAKKysJcHNodWZkCVwkMGIxMTExMTExMSwl eG1tMSwleG1tMQkjIGNyaXRpY2FsIHBhdGgKKysJcHhvcgkleG1tMSwleG1tMAorKwlyZXQKKysK KysuYWxpZ24gMTYKKysuTGtleV9leHBhbnNpb25fMTkyYToKKysJJG1vdmtleQkleG1tMCwoJXJh eCkKKysJbGVhCTE2KCVyYXgpLCVyYXgKKysuTGtleV9leHBhbnNpb25fMTkyYV9jb2xkOgorKwlt b3ZhcHMJJXhtbTIsICV4bW01CisrLkxrZXlfZXhwYW5zaW9uXzE5MmJfd2FybToKKysJc2h1ZnBz CVwkMGIwMDAxMDAwMCwleG1tMCwleG1tNAorKwltb3ZhcHMJJXhtbTIsJXhtbTMKKysJcHhvcgkl eG1tNCwleG1tMAorKwlzaHVmcHMJXCQwYjEwMDAxMTAwLCV4bW0wLCV4bW00CisrCXBzbGxkcQlc JDQsJXhtbTMKKysJcHhvcgkleG1tNCwleG1tMAorKwlwc2h1ZmQJXCQwYjAxMDEwMTAxLCV4bW0x LCV4bW0xCSMgY3JpdGljYWwgcGF0aAorKwlweG9yCSV4bW0zLCV4bW0yCisrCXB4b3IJJXhtbTEs JXhtbTAKKysJcHNodWZkCVwkMGIxMTExMTExMSwleG1tMCwleG1tMworKwlweG9yCSV4bW0zLCV4 bW0yCisrCXJldAorKworKy5hbGlnbiAxNgorKy5Ma2V5X2V4cGFuc2lvbl8xOTJiOgorKwltb3Zh cHMJJXhtbTAsJXhtbTMKKysJc2h1ZnBzCVwkMGIwMTAwMDEwMCwleG1tMCwleG1tNQorKwkkbW92 a2V5CSV4bW01LCglcmF4KQorKwlzaHVmcHMJXCQwYjAxMDAxMTEwLCV4bW0yLCV4bW0zCisrCSRt b3ZrZXkJJXhtbTMsMTYoJXJheCkKKysJbGVhCTMyKCVyYXgpLCVyYXgKKysJam1wCS5Ma2V5X2V4 cGFuc2lvbl8xOTJiX3dhcm0KKysKKysuYWxpZ24JMTYKKysuTGtleV9leHBhbnNpb25fMjU2YToK KysJJG1vdmtleQkleG1tMiwoJXJheCkKKysJbGVhCTE2KCVyYXgpLCVyYXgKKysuTGtleV9leHBh bnNpb25fMjU2YV9jb2xkOgorKwlzaHVmcHMJXCQwYjAwMDEwMDAwLCV4bW0wLCV4bW00CisrCXB4 b3IJJXhtbTQsJXhtbTAKKysJc2h1ZnBzCVwkMGIxMDAwMTEwMCwleG1tMCwleG1tNAorKwlweG9y CSV4bW00LCV4bW0wCisrCXBzaHVmZAlcJDBiMTExMTExMTEsJXhtbTEsJXhtbTEJIyBjcml0aWNh bCBwYXRoCisrCXB4b3IJJXhtbTEsJXhtbTAKKysJcmV0CisrCisrLmFsaWduIDE2CisrLkxrZXlf ZXhwYW5zaW9uXzI1NmI6CisrCSRtb3ZrZXkJJXhtbTAsKCVyYXgpCisrCWxlYQkxNiglcmF4KSwl cmF4CisrCisrCXNodWZwcwlcJDBiMDAwMTAwMDAsJXhtbTIsJXhtbTQKKysJcHhvcgkleG1tNCwl eG1tMgorKwlzaHVmcHMJXCQwYjEwMDAxMTAwLCV4bW0yLCV4bW00CisrCXB4b3IJJXhtbTQsJXht bTIKKysJcHNodWZkCVwkMGIxMDEwMTAxMCwleG1tMSwleG1tMQkjIGNyaXRpY2FsIHBhdGgKKysJ cHhvcgkleG1tMSwleG1tMgorKwlyZXQKKysuc2l6ZQkke1BSRUZJWH1fc2V0X2VuY3J5cHRfa2V5 LC4tJHtQUkVGSVh9X3NldF9lbmNyeXB0X2tleQorK19fXworK30KKysMCisrJGNvZGUuPTw8X19f OworKy5hc2NpeiAgIkFFUyBmb3IgSW50ZWwgQUVTLU5JLCBDUllQVE9HQU1TIGJ5IDxhcHByb1xA b3BlbnNzbC5vcmc+IgorKy5hbGlnbgk2NAorK19fXworKworKyMgRVhDRVBUSU9OX0RJU1BPU0lU SU9OIGhhbmRsZXIgKEVYQ0VQVElPTl9SRUNPUkQgKnJlYyxVTE9ORzY0IGZyYW1lLAorKyMJCUNP TlRFWFQgKmNvbnRleHQsRElTUEFUQ0hFUl9DT05URVhUICpkaXNwKQorK2lmICgkd2luNjQpIHsK KyskcmVjPSIlcmN4IjsKKyskZnJhbWU9IiVyZHgiOworKyRjb250ZXh0PSIlcjgiOworKyRkaXNw PSIlcjkiOworKworKyRjb2RlLj08PF9fXzsKKysuZXh0ZXJuCV9faW1wX1J0bFZpcnR1YWxVbndp bmQKKysudHlwZQljYmNfc2VfaGFuZGxlcixcQGFiaS1vbW5pcG90ZW50CisrLmFsaWduCTE2Cisr Y2JjX3NlX2hhbmRsZXI6CisrCXB1c2gJJXJzaQorKwlwdXNoCSVyZGkKKysJcHVzaAklcmJ4Cisr CXB1c2gJJXJicAorKwlwdXNoCSVyMTIKKysJcHVzaAklcjEzCisrCXB1c2gJJXIxNAorKwlwdXNo CSVyMTUKKysJcHVzaGZxCisrCXN1YglcJDY0LCVyc3AKKysKKysJbW92CTE1MigkY29udGV4dCks JXJheAkjIHB1bGwgY29udGV4dC0+UnNwCisrCW1vdgkyNDgoJGNvbnRleHQpLCVyYngJIyBwdWxs IGNvbnRleHQtPlJpcAorKworKwlsZWEJLkxjYmNfZGVjcnlwdCglcmlwKSwlcjEwCisrCWNtcAkl cjEwLCVyYngJCSMgY29udGV4dC0+UmlwPCJwcm9sb2d1ZSIgbGFiZWwKKysJamIJLkxpbl9wcm9s b2d1ZQorKworKwlsZWEJLkxjYmNfZGVjcnlwdF9ib2R5KCVyaXApLCVyMTAKKysJY21wCSVyMTAs JXJieAkJIyBjb250ZXh0LT5SaXA8Y2JjX2RlY3J5cHRfYm9keQorKwlqYgkuTHJlc3RvcmVfcmF4 CisrCisrCWxlYQkuTGNiY19yZXQoJXJpcCksJXIxMAorKwljbXAJJXIxMCwlcmJ4CQkjIGNvbnRl eHQtPlJpcD49ImVwaWxvZ3VlIiBsYWJlbAorKwlqYWUJLkxpbl9wcm9sb2d1ZQorKworKwlsZWEJ MCglcmF4KSwlcnNpCQkjIHRvcCBvZiBzdGFjaworKwlsZWEJNTEyKCRjb250ZXh0KSwlcmRpCSMg JmNvbnRleHQuWG1tNgorKwltb3YJXCQ4LCVlY3gJCSMgNCpzaXplb2YoJXhtbTApL3NpemVvZigl cmF4KQorKwkubG9uZwkweGE1NDhmM2ZjCQkjIGNsZDsgcmVwIG1vdnNxCisrCWxlYQkweDU4KCVy YXgpLCVyYXgJCSMgYWRqdXN0IHN0YWNrIHBvaW50ZXIKKysJam1wCS5MaW5fcHJvbG9ndWUKKysK KysuTHJlc3RvcmVfcmF4OgorKwltb3YJMTIwKCRjb250ZXh0KSwlcmF4CisrLkxpbl9wcm9sb2d1 ZToKKysJbW92CTgoJXJheCksJXJkaQorKwltb3YJMTYoJXJheCksJXJzaQorKwltb3YJJXJheCwx NTIoJGNvbnRleHQpCSMgcmVzdG9yZSBjb250ZXh0LT5Sc3AKKysJbW92CSVyc2ksMTY4KCRjb250 ZXh0KQkjIHJlc3RvcmUgY29udGV4dC0+UnNpCisrCW1vdgklcmRpLDE3NigkY29udGV4dCkJIyBy ZXN0b3JlIGNvbnRleHQtPlJkaQorKworKwlqbXAJLkxjb21tb25fc2VoX2V4aXQKKysuc2l6ZQlj YmNfc2VfaGFuZGxlciwuLWNiY19zZV9oYW5kbGVyCisrCisrLnR5cGUJZWNiX3NlX2hhbmRsZXIs XEBhYmktb21uaXBvdGVudAorKy5hbGlnbgkxNgorK2VjYl9zZV9oYW5kbGVyOgorKwlwdXNoCSVy c2kKKysJcHVzaAklcmRpCisrCXB1c2gJJXJieAorKwlwdXNoCSVyYnAKKysJcHVzaAklcjEyCisr CXB1c2gJJXIxMworKwlwdXNoCSVyMTQKKysJcHVzaAklcjE1CisrCXB1c2hmcQorKwlzdWIJXCQ2 NCwlcnNwCisrCisrCW1vdgkxNTIoJGNvbnRleHQpLCVyYXgJIyBwdWxsIGNvbnRleHQtPlJzcAor Kwltb3YJOCglcmF4KSwlcmRpCisrCW1vdgkxNiglcmF4KSwlcnNpCisrCW1vdgklcnNpLDE2OCgk Y29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlJzaQorKwltb3YJJXJkaSwxNzYoJGNvbnRleHQp CSMgcmVzdG9yZSBjb250ZXh0LT5SZGkKKysKKysuTGNvbW1vbl9zZWhfZXhpdDoKKysKKysJbW92 CTQwKCRkaXNwKSwlcmRpCQkjIGRpc3AtPkNvbnRleHRSZWNvcmQKKysJbW92CSRjb250ZXh0LCVy c2kJCSMgY29udGV4dAorKwltb3YJXCQxNTQsJWVjeAkJIyBzaXplb2YoQ09OVEVYVCkKKysJLmxv bmcJMHhhNTQ4ZjNmYwkJIyBjbGQ7IHJlcCBtb3ZzcQorKworKwltb3YJJGRpc3AsJXJzaQorKwl4 b3IJJXJjeCwlcmN4CQkjIGFyZzEsIFVOV19GTEFHX05IQU5ETEVSCisrCW1vdgk4KCVyc2kpLCVy ZHgJCSMgYXJnMiwgZGlzcC0+SW1hZ2VCYXNlCisrCW1vdgkwKCVyc2kpLCVyOAkJIyBhcmczLCBk aXNwLT5Db250cm9sUGMKKysJbW92CTE2KCVyc2kpLCVyOQkJIyBhcmc0LCBkaXNwLT5GdW5jdGlv bkVudHJ5CisrCW1vdgk0MCglcnNpKSwlcjEwCQkjIGRpc3AtPkNvbnRleHRSZWNvcmQKKysJbGVh CTU2KCVyc2kpLCVyMTEJCSMgJmRpc3AtPkhhbmRsZXJEYXRhCisrCWxlYQkyNCglcnNpKSwlcjEy CQkjICZkaXNwLT5Fc3RhYmxpc2hlckZyYW1lCisrCW1vdgklcjEwLDMyKCVyc3ApCQkjIGFyZzUK KysJbW92CSVyMTEsNDAoJXJzcCkJCSMgYXJnNgorKwltb3YJJXIxMiw0OCglcnNwKQkJIyBhcmc3 CisrCW1vdgklcmN4LDU2KCVyc3ApCQkjIGFyZzgsIChOVUxMKQorKwljYWxsCSpfX2ltcF9SdGxW aXJ0dWFsVW53aW5kKCVyaXApCisrCisrCW1vdglcJDEsJWVheAkJIyBFeGNlcHRpb25Db250aW51 ZVNlYXJjaAorKwlhZGQJXCQ2NCwlcnNwCisrCXBvcGZxCisrCXBvcAklcjE1CisrCXBvcAklcjE0 CisrCXBvcAklcjEzCisrCXBvcAklcjEyCisrCXBvcAklcmJwCisrCXBvcAklcmJ4CisrCXBvcAkl cmRpCisrCXBvcAklcnNpCisrCXJldAorKy5zaXplCWNiY19zZV9oYW5kbGVyLC4tY2JjX3NlX2hh bmRsZXIKKysKKysuc2VjdGlvbgkucGRhdGEKKysuYWxpZ24JNAorKwkucnZhCS5MU0VIX2JlZ2lu XyR7UFJFRklYfV9lY2JfZW5jcnlwdAorKwkucnZhCS5MU0VIX2VuZF8ke1BSRUZJWH1fZWNiX2Vu Y3J5cHQKKysJLnJ2YQkuTFNFSF9pbmZvX2VjYgorKworKwkucnZhCS5MU0VIX2JlZ2luXyR7UFJF RklYfV9jYmNfZW5jcnlwdAorKwkucnZhCS5MU0VIX2VuZF8ke1BSRUZJWH1fY2JjX2VuY3J5cHQK KysJLnJ2YQkuTFNFSF9pbmZvX2NiYworKworKwkucnZhCSR7UFJFRklYfV9zZXRfZGVjcnlwdF9r ZXkKKysJLnJ2YQkuTFNFSF9lbmRfc2V0X2RlY3J5cHRfa2V5CisrCS5ydmEJLkxTRUhfaW5mb19r ZXkKKysKKysJLnJ2YQkke1BSRUZJWH1fc2V0X2VuY3J5cHRfa2V5CisrCS5ydmEJLkxTRUhfZW5k X3NldF9lbmNyeXB0X2tleQorKwkucnZhCS5MU0VIX2luZm9fa2V5CisrLnNlY3Rpb24JLnhkYXRh CisrLmFsaWduCTgKKysuTFNFSF9pbmZvX2VjYjoKKysJLmJ5dGUJOSwwLDAsMAorKwkucnZhCWVj Yl9zZV9oYW5kbGVyCisrLkxTRUhfaW5mb19jYmM6CisrCS5ieXRlCTksMCwwLDAKKysJLnJ2YQlj YmNfc2VfaGFuZGxlcgorKy5MU0VIX2luZm9fa2V5OgorKwkuYnl0ZQkweDAxLDB4MDQsMHgwMSww eDAwCisrCS5ieXRlCTB4MDQsMHgwMiwweDAwLDB4MDAKKytfX18KKyt9CisrCisrc3ViIHJleCB7 CisrIGxvY2FsICpvcGNvZGU9c2hpZnQ7CisrIG15ICgkZHN0LCRzcmMpPUBfOworKworKyAgIGlm ICgkZHN0Pj04IHx8ICRzcmM+PTgpIHsKKysJJHJleD0weDQwOworKwkkcmV4fD0weDA0IGlmKCRk c3Q+PTgpOworKwkkcmV4fD0weDAxIGlmKCRzcmM+PTgpOworKwlwdXNoIEBvcGNvZGUsJHJleDsK KysgICB9CisrfQorKworK3N1YiBhZXNuaSB7CisrICBteSAkbGluZT1zaGlmdDsKKysgIG15IEBv cGNvZGU9KDB4NjYpOworKworKyAgICBpZiAoJGxpbmU9fi8oYWVza2V5Z2VuYXNzaXN0KVxzK1wk KFt4MC05YS1mXSspLFxzKiV4bW0oWzAtOV0rKSxccyoleG1tKFswLTldKykvKSB7CisrCXJleChc QG9wY29kZSwkNCwkMyk7CisrCXB1c2ggQG9wY29kZSwweDBmLDB4M2EsMHhkZjsKKysJcHVzaCBA b3Bjb2RlLDB4YzB8KCQzJjcpfCgoJDQmNyk8PDMpOwkjIE1vZFIvTQorKwlteSAkYz0kMjsKKysJ cHVzaCBAb3Bjb2RlLCRjPX4vXjAvP29jdCgkYyk6JGM7CisrCXJldHVybiAiLmJ5dGVcdCIuam9p bignLCcsQG9wY29kZSk7CisrICAgIH0KKysgICAgZWxzaWYgKCRsaW5lPX4vKGFlc1thLXpdKylc cysleG1tKFswLTldKyksXHMqJXhtbShbMC05XSspLykgeworKwlteSAlb3Bjb2RlbGV0ID0gKAor KwkJImFlc2ltYyIgPT4gMHhkYiwKKysJCSJhZXNlbmMiID0+IDB4ZGMsCSJhZXNlbmNsYXN0IiA9 PiAweGRkLAorKwkJImFlc2RlYyIgPT4gMHhkZSwJImFlc2RlY2xhc3QiID0+IDB4ZGYKKysJKTsK KysJcmV0dXJuIHVuZGVmIGlmICghZGVmaW5lZCgkb3Bjb2RlbGV0eyQxfSkpOworKwlyZXgoXEBv cGNvZGUsJDMsJDIpOworKwlwdXNoIEBvcGNvZGUsMHgwZiwweDM4LCRvcGNvZGVsZXR7JDF9Owor KwlwdXNoIEBvcGNvZGUsMHhjMHwoJDImNyl8KCgkMyY3KTw8Myk7CSMgTW9kUi9NCisrCXJldHVy biAiLmJ5dGVcdCIuam9pbignLCcsQG9wY29kZSk7CisrICAgIH0KKysgICAgcmV0dXJuICRsaW5l OworK30KKysKKyskY29kZSA9fiBzL1xgKFteXGBdKilcYC9ldmFsKCQxKS9nZW07CisrJGNvZGUg PX4gcy9cYihhZXMuKiV4bW1bMC05XSspLiokL2Flc25pKCQxKS9nZW07CisrCisrcHJpbnQgJGNv ZGU7CisrCisrY2xvc2UgU1RET1VUOworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMGIvY3J5cHRvL2Fl cy9NYWtlZmlsZS5hZXNuaSBvcGVuc3NsLTEuMC4wYi9jcnlwdG8vYWVzL01ha2VmaWxlCistLS0g b3BlbnNzbC0xLjAuMGIvY3J5cHRvL2Flcy9NYWtlZmlsZS5hZXNuaQkyMDA4LTEyLTIzIDEyOjMz OjAwLjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjBiL2NyeXB0by9hZXMvTWFrZWZp bGUJMjAxMC0xMS0xNiAxNzozMzoyMy4wMDAwMDAwMDAgKzAxMDAKK0BAIC01MCw5ICs1MCwxMyBA QCBhZXMtaWE2NC5zOiBhc20vYWVzLWlhNjQuUworIAorIGFlcy01ODYuczoJYXNtL2Flcy01ODYu cGwgLi4vcGVybGFzbS94ODZhc20ucGwKKyAJJChQRVJMKSBhc20vYWVzLTU4Ni5wbCAkKFBFUkxB U01fU0NIRU1FKSAkKENGTEFHUykgJChQUk9DRVNTT1IpID4gJEAKKythZXNuaS14ODYuczoJYXNt L2Flc25pLXg4Ni5wbCAuLi9wZXJsYXNtL3g4NmFzbS5wbAorKwkkKFBFUkwpIGFzbS9hZXNuaS14 ODYucGwgJChQRVJMQVNNX1NDSEVNRSkgJChDRkxBR1MpICQoUFJPQ0VTU09SKSA+ICRACisgCisg YWVzLXg4Nl82NC5zOiBhc20vYWVzLXg4Nl82NC5wbAorIAkkKFBFUkwpIGFzbS9hZXMteDg2XzY0 LnBsICQoUEVSTEFTTV9TQ0hFTUUpID4gJEAKKythZXNuaS14ODZfNjQuczogYXNtL2Flc25pLXg4 Nl82NC5wbAorKwkkKFBFUkwpIGFzbS9hZXNuaS14ODZfNjQucGwgJChQRVJMQVNNX1NDSEVNRSkg PiAkQAorIAorIGFlcy1zcGFyY3Y5LnM6IGFzbS9hZXMtc3BhcmN2OS5wbAorIAkkKFBFUkwpIGFz bS9hZXMtc3BhcmN2OS5wbCAkKENGTEFHUykgPiAkQAorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMGIv Y3J5cHRvL2VuZ2luZS9lbmdfYWVzbmkuYy5hZXNuaSBvcGVuc3NsLTEuMC4wYi9jcnlwdG8vZW5n aW5lL2VuZ19hZXNuaS5jCistLS0gb3BlbnNzbC0xLjAuMGIvY3J5cHRvL2VuZ2luZS9lbmdfYWVz bmkuYy5hZXNuaQkyMDEwLTExLTE2IDE3OjMzOjIzLjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5z c2wtMS4wLjBiL2NyeXB0by9lbmdpbmUvZW5nX2Flc25pLmMJMjAxMC0xMS0xNiAxNzozMzoyMy4w MDAwMDAwMDAgKzAxMDAKK0BAIC0wLDAgKzEsNDEzIEBACisrLyoKKysgKiBTdXBwb3J0IGZvciBJ bnRlbCBBRVMtTkkgaW50cnVjdGlvbiBzZXQKKysgKiAgIEF1dGhvcjogSHVhbmcgWWluZyA8eWlu Zy5odWFuZ0BpbnRlbC5jb20+CisrICoKKysgKiBJbnRlbCBBRVMtTkkgaXMgYSBuZXcgc2V0IG9m IFNpbmdsZSBJbnN0cnVjdGlvbiBNdWx0aXBsZSBEYXRhCisrICogKFNJTUQpIGluc3RydWN0aW9u cyB0aGF0IGFyZSBnb2luZyB0byBiZSBpbnRyb2R1Y2VkIGluIHRoZSBuZXh0CisrICogZ2VuZXJh dGlvbiBvZiBJbnRlbCBwcm9jZXNzb3IsIGFzIG9mIDIwMDkuIFRoZXNlIGluc3RydWN0aW9ucwor KyAqIGVuYWJsZSBmYXN0IGFuZCBzZWN1cmUgZGF0YSBlbmNyeXB0aW9uIGFuZCBkZWNyeXB0aW9u LCB1c2luZyB0aGUKKysgKiBBZHZhbmNlZCBFbmNyeXB0aW9uIFN0YW5kYXJkIChBRVMpLCBkZWZp bmVkIGJ5IEZJUFMgUHVibGljYXRpb24KKysgKiBudW1iZXIgMTk3LiAgVGhlIGFyY2hpdGVjdHVy ZSBpbnRyb2R1Y2VzIHNpeCBpbnN0cnVjdGlvbnMgdGhhdAorKyAqIG9mZmVyIGZ1bGwgaGFyZHdh cmUgc3VwcG9ydCBmb3IgQUVTLiBGb3VyIG9mIHRoZW0gc3VwcG9ydCBoaWdoCisrICogcGVyZm9y bWFuY2UgZGF0YSBlbmNyeXB0aW9uIGFuZCBkZWNyeXB0aW9uLCBhbmQgdGhlIG90aGVyIHR3bwor KyAqIGluc3RydWN0aW9ucyBzdXBwb3J0IHRoZSBBRVMga2V5IGV4cGFuc2lvbiBwcm9jZWR1cmUu CisrICoKKysgKiBUaGUgd2hpdGUgcGFwZXIgY2FuIGJlIGRvd25sb2FkZWQgZnJvbToKKysgKiAg IGh0dHA6Ly9zb2Z0d2FyZWNvbW11bml0eS5pbnRlbC5jb20vaXNuL2Rvd25sb2Fkcy9pbnRlbGF2 eC9BRVMtSW5zdHJ1Y3Rpb25zLVNldF9XUC5wZGYKKysgKgorKyAqIFRoaXMgZmlsZSBpcyBiYXNl ZCBvbiBlbmdpbmVzL2VfcGFkbG9jay5jCisrICovCisrCisrLyogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysgKiBD b3B5cmlnaHQgKGMpIDE5OTktMjAwMSBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyBy ZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6 CisrICoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g dGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKysgKgorKyAqIDIuIFJlZGlzdHJpYnV0 aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisr ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk aXNjbGFpbWVyIGluCisrICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy aWFscyBwcm92aWRlZCB3aXRoIHRoZQorKyAqICAgIGRpc3RyaWJ1dGlvbi4KKysgKgorKyAqIDMu IEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2Yg dGhpcworKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xl ZGdtZW50OgorKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVk IGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKKysgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRv b2xraXQuIChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCisrICoKKysgKiA0LiBUaGUgbmFtZXMg Ik9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQg dG8KKysgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMg c29mdHdhcmUgd2l0aG91dAorKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdy aXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKKysgKiAgICBsaWNlbnNpbmdAT3BlblNT TC5vcmcuCisrICoKKysgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBt YXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIKKysgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBl YXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCisrICogICAgcGVybWlzc2lv biBvZiB0aGUgT3BlblNTTCBQcm9qZWN0LgorKyAqCisrICogNi4gUmVkaXN0cmlidXRpb25zIG9m IGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZworKyAqICAgIGFj a25vd2xlZGdtZW50OgorKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2 ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKKysgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVu U1NMIFRvb2xraXQgKGh0dHA6Ly93d3cuT3BlblNTTC5vcmcvKSIKKysgKgorKyAqIFRISVMgU09G VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFO WQorKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P VCBMSU1JVEVEIFRPLCBUSEUKKysgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKysgKiBQVVJQT1NFIEFSRSBESVNDTEFJ TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgorKyAqIElUUyBD T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB TCwKKysgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D TFVESU5HLCBCVVQKKysgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU RSBHT09EUyBPUiBTRVJWSUNFUzsKKysgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKKysgKiBTVFJJQ1QgTElB QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisrICog QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g SUYgQURWSVNFRAorKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKysgKiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorKyAqCisrICogVGhpcyBwcm9kdWN0IGluY2x1ZGVzIGNyeXB0b2dyYXBoaWMg c29mdHdhcmUgd3JpdHRlbiBieSBFcmljIFlvdW5nCisrICogKGVheUBjcnlwdHNvZnQuY29tKS4g IFRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSB3cml0dGVuIGJ5IFRpbQorKyAqIEh1ZHNv biAodGpoQGNyeXB0c29mdC5jb20pLgorKyAqCisrICovCisrCisrCisrI2luY2x1ZGUgPG9wZW5z c2wvb3BlbnNzbGNvbmYuaD4KKysKKysjaWYgIWRlZmluZWQoT1BFTlNTTF9OT19IVykgJiYgIWRl ZmluZWQoT1BFTlNTTF9OT19IV19BRVNfTkkpICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fQUVTKQor KworKyNpbmNsdWRlIDxzdGRpby5oPgorKyNpbmNsdWRlICJjcnlwdGxpYi5oIgorKyNpbmNsdWRl IDxvcGVuc3NsL2Rzby5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2VuZ2luZS5oPgorKyNpbmNsdWRl IDxvcGVuc3NsL2V2cC5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2Flcy5oPgorKyNpbmNsdWRlIDxv cGVuc3NsL2Vyci5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL21vZGVzLmg+CisrCisrLyogQUVTLU5J IGlzIGF2YWlsYWJsZSAqT05MWSogb24gc29tZSB4ODYgQ1BVcy4gIE5vdCBvbmx5IHRoYXQgaXQK KysgICBkb2Vzbid0IGV4aXN0IGVsc2V3aGVyZSwgYnV0IGl0IGV2ZW4gY2FuJ3QgYmUgY29tcGls ZWQgb24gb3RoZXIKKysgICBwbGF0Zm9ybXMhICovCisrI3VuZGVmIENPTVBJTEVfSFdfQUVTTkkK KysjaWYgKGRlZmluZWQoX194ODZfNjQpIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgXAorKyAg ICAgZGVmaW5lZChfTV9BTUQ2NCkgfHwgZGVmaW5lZChfTV9YNjQpIHx8IFwKKysgICAgIGRlZmlu ZWQoT1BFTlNTTF9JQTMyX1NTRTIpKSAmJiAhZGVmaW5lZChPUEVOU1NMX05PX0FTTSkKKysjZGVm aW5lIENPTVBJTEVfSFdfQUVTTkkKKytzdGF0aWMgRU5HSU5FICpFTkdJTkVfYWVzbmkgKHZvaWQp OworKyNlbmRpZgorKworK3ZvaWQgRU5HSU5FX2xvYWRfYWVzbmkgKHZvaWQpCisreworKy8qIE9u IG5vbi14ODYgQ1BVcyBpdCBqdXN0IHJldHVybnMuICovCisrI2lmZGVmIENPTVBJTEVfSFdfQUVT TkkKKysJRU5HSU5FICp0b2FkZCA9IEVOR0lORV9hZXNuaSgpOworKwlpZiAoIXRvYWRkKQorKwkJ cmV0dXJuOworKwlFTkdJTkVfYWRkICh0b2FkZCk7CisrCUVOR0lORV9yZWdpc3Rlcl9jb21wbGV0 ZSAodG9hZGQpOworKwlFTkdJTkVfZnJlZSAodG9hZGQpOworKwlFUlJfY2xlYXJfZXJyb3IgKCk7 CisrI2VuZGlmCisrfQorKworKyNpZmRlZiBDT01QSUxFX0hXX0FFU05JCisraW50IGFlc25pX3Nl dF9lbmNyeXB0X2tleShjb25zdCB1bnNpZ25lZCBjaGFyICp1c2VyS2V5LCBpbnQgYml0cywKKysJ CQkgICAgICBBRVNfS0VZICprZXkpOworK2ludCBhZXNuaV9zZXRfZGVjcnlwdF9rZXkoY29uc3Qg dW5zaWduZWQgY2hhciAqdXNlcktleSwgaW50IGJpdHMsCisrCQkJICAgICAgQUVTX0tFWSAqa2V5 KTsKKysKKyt2b2lkIGFlc25pX2VuY3J5cHQoY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHVuc2ln bmVkIGNoYXIgKm91dCwKKysJCSAgICAgICBjb25zdCBBRVNfS0VZICprZXkpOworK3ZvaWQgYWVz bmlfZGVjcnlwdChjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgdW5zaWduZWQgY2hhciAqb3V0LAor KwkJICAgICAgIGNvbnN0IEFFU19LRVkgKmtleSk7CisrCisrdm9pZCBhZXNuaV9lY2JfZW5jcnlw dChjb25zdCB1bnNpZ25lZCBjaGFyICppbiwKKysJCQkgICB1bnNpZ25lZCBjaGFyICpvdXQsCisr CQkJICAgc2l6ZV90IGxlbmd0aCwKKysJCQkgICBjb25zdCBBRVNfS0VZICprZXksCisrCQkJICAg aW50IGVuYyk7Cisrdm9pZCBhZXNuaV9jYmNfZW5jcnlwdChjb25zdCB1bnNpZ25lZCBjaGFyICpp biwKKysJCQkgICB1bnNpZ25lZCBjaGFyICpvdXQsCisrCQkJICAgc2l6ZV90IGxlbmd0aCwKKysJ CQkgICBjb25zdCBBRVNfS0VZICprZXksCisrCQkJICAgdW5zaWduZWQgY2hhciAqaXZlYywgaW50 IGVuYyk7CisrCisrLyogRnVuY3Rpb24gZm9yIEVOR0lORSBkZXRlY3Rpb24gYW5kIGNvbnRyb2wg Ki8KKytzdGF0aWMgaW50IGFlc25pX2luaXQoRU5HSU5FICplKTsKKysKKysvKiBDaXBoZXIgU3R1 ZmYgKi8KKytzdGF0aWMgaW50IGFlc25pX2NpcGhlcnMoRU5HSU5FICplLCBjb25zdCBFVlBfQ0lQ SEVSICoqY2lwaGVyLAorKwkJCQljb25zdCBpbnQgKipuaWRzLCBpbnQgbmlkKTsKKysKKysjZGVm aW5lIEFFU05JX01JTl9BTElHTgkxNgorKyNkZWZpbmUgQUVTTklfQUxJR04oeCkgXAorKwkoKHZv aWQgKikoKCh1bnNpZ25lZCBsb25nKSh4KStBRVNOSV9NSU5fQUxJR04tMSkmfihBRVNOSV9NSU5f QUxJR04tMSkpKQorKworKy8qIEVuZ2luZSBuYW1lcyAqLworK3N0YXRpYyBjb25zdCBjaGFyICAg YWVzbmlfaWRbXSA9ICJhZXNuaSIsCisrCQkgICAgYWVzbmlfbmFtZVtdID0gIkludGVsIEFFUy1O SSBlbmdpbmUiLAorKwkJICAgIG5vX2Flc25pX25hbWVbXSA9ICJJbnRlbCBBRVMtTkkgZW5naW5l IChuby1hZXNuaSkiOworKworKy8qID09PT09IEVuZ2luZSAibWFuYWdlbWVudCIgZnVuY3Rpb25z ID09PT09ICovCisrCisrI2lmIGRlZmluZWQoX1dJTjMyKQorK3R5cGVkZWYgdW5zaWduZWQgX19p bnQ2NCBJQTMyQ0FQOworKyNlbHNlCisrdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgSUEzMkNB UDsKKysjZW5kaWYKKysKKysvKiBQcmVwYXJlIHRoZSBFTkdJTkUgc3RydWN0dXJlIGZvciByZWdp c3RyYXRpb24gKi8KKytzdGF0aWMgaW50CisrYWVzbmlfYmluZF9oZWxwZXIoRU5HSU5FICplKQor K3sKKysJaW50IGVuZ2FnZTsKKysJaWYgKHNpemVvZihPUEVOU1NMX2lhMzJjYXBfUCkgPiA0KSB7 CisrCQllbmdhZ2UgPSAoT1BFTlNTTF9pYTMyY2FwX1AgPj4gNTcpICYgMTsKKysJfSBlbHNlIHsK KysJCUlBMzJDQVAgT1BFTlNTTF9pYTMyX2NwdWlkKHZvaWQpOworKwkJZW5nYWdlID0gKE9QRU5T U0xfaWEzMl9jcHVpZCgpID4+IDU3KSAmIDE7CisrCX0KKysKKysJLyogUmVnaXN0ZXIgZXZlcnl0 aGluZyBvciByZXR1cm4gd2l0aCBhbiBlcnJvciAqLworKwlpZiAoIUVOR0lORV9zZXRfaWQoZSwg YWVzbmlfaWQpIHx8CisrCSAgICAhRU5HSU5FX3NldF9uYW1lKGUsIGVuZ2FnZSA/IGFlc25pX25h bWUgOiBub19hZXNuaV9uYW1lKSB8fAorKworKwkgICAgIUVOR0lORV9zZXRfaW5pdF9mdW5jdGlv bihlLCBhZXNuaV9pbml0KSB8fAorKwkgICAgKGVuZ2FnZSAmJiAhRU5HSU5FX3NldF9jaXBoZXJz IChlLCBhZXNuaV9jaXBoZXJzKSkKKysJICAgICkKKysJCXJldHVybiAwOworKworKwkvKiBFdmVy eXRoaW5nIGxvb2tzIGdvb2QgKi8KKysJcmV0dXJuIDE7CisrfQorKworKy8qIENvbnN0cnVjdG9y ICovCisrc3RhdGljIEVOR0lORSAqCisrRU5HSU5FX2Flc25pKHZvaWQpCisreworKwlFTkdJTkUg KmVuZyA9IEVOR0lORV9uZXcoKTsKKysKKysJaWYgKCFlbmcpIHsKKysJCXJldHVybiBOVUxMOwor Kwl9CisrCisrCWlmICghYWVzbmlfYmluZF9oZWxwZXIoZW5nKSkgeworKwkJRU5HSU5FX2ZyZWUo ZW5nKTsKKysJCXJldHVybiBOVUxMOworKwl9CisrCisrCXJldHVybiBlbmc7CisrfQorKworKy8q IENoZWNrIGF2YWlsYWJpbGl0eSBvZiB0aGUgZW5naW5lICovCisrc3RhdGljIGludAorK2Flc25p X2luaXQoRU5HSU5FICplKQorK3sKKysJcmV0dXJuIDE7CisrfQorKworKyNpZiBkZWZpbmVkKE5J RF9hZXNfMTI4X2NmYjEyOCkgJiYgISBkZWZpbmVkIChOSURfYWVzXzEyOF9jZmIpCisrI2RlZmlu ZSBOSURfYWVzXzEyOF9jZmIJTklEX2Flc18xMjhfY2ZiMTI4CisrI2VuZGlmCisrCisrI2lmIGRl ZmluZWQoTklEX2Flc18xMjhfb2ZiMTI4KSAmJiAhIGRlZmluZWQgKE5JRF9hZXNfMTI4X29mYikK KysjZGVmaW5lIE5JRF9hZXNfMTI4X29mYglOSURfYWVzXzEyOF9vZmIxMjgKKysjZW5kaWYKKysK KysjaWYgZGVmaW5lZChOSURfYWVzXzE5Ml9jZmIxMjgpICYmICEgZGVmaW5lZCAoTklEX2Flc18x OTJfY2ZiKQorKyNkZWZpbmUgTklEX2Flc18xOTJfY2ZiCU5JRF9hZXNfMTkyX2NmYjEyOAorKyNl bmRpZgorKworKyNpZiBkZWZpbmVkKE5JRF9hZXNfMTkyX29mYjEyOCkgJiYgISBkZWZpbmVkIChO SURfYWVzXzE5Ml9vZmIpCisrI2RlZmluZSBOSURfYWVzXzE5Ml9vZmIJTklEX2Flc18xOTJfb2Zi MTI4CisrI2VuZGlmCisrCisrI2lmIGRlZmluZWQoTklEX2Flc18yNTZfY2ZiMTI4KSAmJiAhIGRl ZmluZWQgKE5JRF9hZXNfMjU2X2NmYikKKysjZGVmaW5lIE5JRF9hZXNfMjU2X2NmYglOSURfYWVz XzI1Nl9jZmIxMjgKKysjZW5kaWYKKysKKysjaWYgZGVmaW5lZChOSURfYWVzXzI1Nl9vZmIxMjgp ICYmICEgZGVmaW5lZCAoTklEX2Flc18yNTZfb2ZiKQorKyNkZWZpbmUgTklEX2Flc18yNTZfb2Zi CU5JRF9hZXNfMjU2X29mYjEyOAorKyNlbmRpZgorKworKy8qIExpc3Qgb2Ygc3VwcG9ydGVkIGNp cGhlcnMuICovCisrc3RhdGljIGludCBhZXNuaV9jaXBoZXJfbmlkc1tdID0geworKwlOSURfYWVz XzEyOF9lY2IsCisrCU5JRF9hZXNfMTI4X2NiYywKKysJTklEX2Flc18xMjhfY2ZiLAorKwlOSURf YWVzXzEyOF9vZmIsCisrCisrCU5JRF9hZXNfMTkyX2VjYiwKKysJTklEX2Flc18xOTJfY2JjLAor KwlOSURfYWVzXzE5Ml9jZmIsCisrCU5JRF9hZXNfMTkyX29mYiwKKysKKysJTklEX2Flc18yNTZf ZWNiLAorKwlOSURfYWVzXzI1Nl9jYmMsCisrCU5JRF9hZXNfMjU2X2NmYiwKKysJTklEX2Flc18y NTZfb2ZiLAorK307Cisrc3RhdGljIGludCBhZXNuaV9jaXBoZXJfbmlkc19udW0gPQorKwkoc2l6 ZW9mKGFlc25pX2NpcGhlcl9uaWRzKS9zaXplb2YoYWVzbmlfY2lwaGVyX25pZHNbMF0pKTsKKysK Kyt0eXBlZGVmIHN0cnVjdAorK3sKKysJQUVTX0tFWSBrczsKKysJdW5zaWduZWQgaW50IF9wYWQx WzNdOworK30gQUVTTklfS0VZOworKworK3N0YXRpYyBpbnQKKythZXNuaV9pbml0X2tleShFVlBf Q0lQSEVSX0NUWCAqY3R4LCBjb25zdCB1bnNpZ25lZCBjaGFyICp1c2VyX2tleSwKKysJCSAgICBj b25zdCB1bnNpZ25lZCBjaGFyICppdiwgaW50IGVuYykKKyt7CisrCWludCByZXQ7CisrCUFFU19L RVkgKmtleSA9IEFFU05JX0FMSUdOKGN0eC0+Y2lwaGVyX2RhdGEpOworKworKwlpZiAoKGN0eC0+ Y2lwaGVyLT5mbGFncyAmIEVWUF9DSVBIX01PREUpID09IEVWUF9DSVBIX0NGQl9NT0RFCisrCSAg ICB8fCAoY3R4LT5jaXBoZXItPmZsYWdzICYgRVZQX0NJUEhfTU9ERSkgPT0gRVZQX0NJUEhfT0ZC X01PREUKKysJICAgIHx8IGVuYykKKysJCXJldD1hZXNuaV9zZXRfZW5jcnlwdF9rZXkodXNlcl9r ZXksIGN0eC0+a2V5X2xlbiAqIDgsIGtleSk7CisrCWVsc2UKKysJCXJldD1hZXNuaV9zZXRfZGVj cnlwdF9rZXkodXNlcl9rZXksIGN0eC0+a2V5X2xlbiAqIDgsIGtleSk7CisrCisrCWlmKHJldCA8 IDApIHsKKysJCUVWUGVycihFVlBfRl9BRVNOSV9JTklUX0tFWSxFVlBfUl9BRVNfS0VZX1NFVFVQ X0ZBSUxFRCk7CisrCQlyZXR1cm4gMDsKKysJfQorKworKwlyZXR1cm4gMTsKKyt9CisrCisrc3Rh dGljIGludCBhZXNuaV9jaXBoZXJfZWNiKEVWUF9DSVBIRVJfQ1RYICpjdHgsIHVuc2lnbmVkIGNo YXIgKm91dCwKKysJCSBjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgc2l6ZV90IGlubCkKKyt7CUFF U19LRVkgKmtleSA9IEFFU05JX0FMSUdOKGN0eC0+Y2lwaGVyX2RhdGEpOworKwlhZXNuaV9lY2Jf ZW5jcnlwdChpbiwgb3V0LCBpbmwsIGtleSwgY3R4LT5lbmNyeXB0KTsKKysJcmV0dXJuIDE7Cisr fQorK3N0YXRpYyBpbnQgYWVzbmlfY2lwaGVyX2NiYyhFVlBfQ0lQSEVSX0NUWCAqY3R4LCB1bnNp Z25lZCBjaGFyICpvdXQsCisrCQkgY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHNpemVfdCBpbmwp CisrewlBRVNfS0VZICprZXkgPSBBRVNOSV9BTElHTihjdHgtPmNpcGhlcl9kYXRhKTsKKysJYWVz bmlfY2JjX2VuY3J5cHQoaW4sIG91dCwgaW5sLCBrZXksCisrCQkJICAgICAgY3R4LT5pdiwgY3R4 LT5lbmNyeXB0KTsKKysJcmV0dXJuIDE7CisrfQorK3N0YXRpYyBpbnQgYWVzbmlfY2lwaGVyX2Nm YihFVlBfQ0lQSEVSX0NUWCAqY3R4LCB1bnNpZ25lZCBjaGFyICpvdXQsCisrCQkgY29uc3QgdW5z aWduZWQgY2hhciAqaW4sIHNpemVfdCBpbmwpCisrewlBRVNfS0VZICprZXkgPSBBRVNOSV9BTElH TihjdHgtPmNpcGhlcl9kYXRhKTsKKysJQ1JZUFRPX2NmYjEyOF9lbmNyeXB0KGluLCBvdXQsIGlu bCwga2V5LCBjdHgtPml2LAorKwkJCQkmY3R4LT5udW0sIGN0eC0+ZW5jcnlwdCwKKysJCQkJKGJs b2NrMTI4X2YpYWVzbmlfZW5jcnlwdCk7CisrCXJldHVybiAxOworK30KKytzdGF0aWMgaW50IGFl c25pX2NpcGhlcl9vZmIoRVZQX0NJUEhFUl9DVFggKmN0eCwgdW5zaWduZWQgY2hhciAqb3V0LAor KwkJIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCBzaXplX3QgaW5sKQorK3sJQUVTX0tFWSAqa2V5 ID0gQUVTTklfQUxJR04oY3R4LT5jaXBoZXJfZGF0YSk7CisrCUNSWVBUT19vZmIxMjhfZW5jcnlw dChpbiwgb3V0LCBpbmwsIGtleSwgY3R4LT5pdiwKKysJCQkJJmN0eC0+bnVtLCAoYmxvY2sxMjhf ZilhZXNuaV9lbmNyeXB0KTsKKysJcmV0dXJuIDE7CisrfQorKworKyNkZWZpbmUgQUVTX0JMT0NL X1NJWkUJCTE2CisrCisrI2RlZmluZSBFVlBfQ0lQSEVSX2Jsb2NrX3NpemVfRUNCCUFFU19CTE9D S19TSVpFCisrI2RlZmluZSBFVlBfQ0lQSEVSX2Jsb2NrX3NpemVfQ0JDCUFFU19CTE9DS19TSVpF CisrI2RlZmluZSBFVlBfQ0lQSEVSX2Jsb2NrX3NpemVfT0ZCCTEKKysjZGVmaW5lIEVWUF9DSVBI RVJfYmxvY2tfc2l6ZV9DRkIJMQorKworKy8qIERlY2xhcmluZyBzbyBtYW55IGNpcGhlcnMgYnkg aGFuZCB3b3VsZCBiZSBhIHBhaW4uCisrICAgSW5zdGVhZCBpbnRyb2R1Y2UgYSBiaXQgb2YgcHJl cHJvY2Vzc29yIG1hZ2ljIDotKSAqLworKyNkZWZpbmUJREVDTEFSRV9BRVNfRVZQKGtzaXplLGxt b2RlLHVtb2RlKQlcCisrc3RhdGljIGNvbnN0IEVWUF9DSVBIRVIgYWVzbmlfIyNrc2l6ZSMjXyMj bG1vZGUgPSB7CVwKKysJTklEX2Flc18jI2tzaXplIyNfIyNsbW9kZSwJCQlcCisrCUVWUF9DSVBI RVJfYmxvY2tfc2l6ZV8jI3Vtb2RlLAkJCVwKKysJa3NpemUgLyA4LAkJCQkJXAorKwlBRVNfQkxP Q0tfU0laRSwJCQkJCVwKKysJMCB8IEVWUF9DSVBIXyMjdW1vZGUjI19NT0RFLAkJCVwKKysJYWVz bmlfaW5pdF9rZXksCQkJCVwKKysJYWVzbmlfY2lwaGVyXyMjbG1vZGUsCQkJCVwKKysJTlVMTCwJ CQkJCQlcCisrCXNpemVvZihBRVNOSV9LRVkpLAkJCQlcCisrCUVWUF9DSVBIRVJfc2V0X2FzbjFf aXYsCQkJCVwKKysJRVZQX0NJUEhFUl9nZXRfYXNuMV9pdiwJCQkJXAorKwlOVUxMLAkJCQkJCVwK KysJTlVMTAkJCQkJCVwKKyt9CisrCisrREVDTEFSRV9BRVNfRVZQKDEyOCxlY2IsRUNCKTsKKytE RUNMQVJFX0FFU19FVlAoMTI4LGNiYyxDQkMpOworK0RFQ0xBUkVfQUVTX0VWUCgxMjgsY2ZiLENG Qik7CisrREVDTEFSRV9BRVNfRVZQKDEyOCxvZmIsT0ZCKTsKKysKKytERUNMQVJFX0FFU19FVlAo MTkyLGVjYixFQ0IpOworK0RFQ0xBUkVfQUVTX0VWUCgxOTIsY2JjLENCQyk7CisrREVDTEFSRV9B RVNfRVZQKDE5MixjZmIsQ0ZCKTsKKytERUNMQVJFX0FFU19FVlAoMTkyLG9mYixPRkIpOworKwor K0RFQ0xBUkVfQUVTX0VWUCgyNTYsZWNiLEVDQik7CisrREVDTEFSRV9BRVNfRVZQKDI1NixjYmMs Q0JDKTsKKytERUNMQVJFX0FFU19FVlAoMjU2LGNmYixDRkIpOworK0RFQ0xBUkVfQUVTX0VWUCgy NTYsb2ZiLE9GQik7CisrCisrc3RhdGljIGludAorK2Flc25pX2NpcGhlcnMgKEVOR0lORSAqZSwg Y29uc3QgRVZQX0NJUEhFUiAqKmNpcGhlciwKKysJCSAgICAgIGNvbnN0IGludCAqKm5pZHMsIGlu dCBuaWQpCisreworKwkvKiBObyBzcGVjaWZpYyBjaXBoZXIgPT4gcmV0dXJuIGEgbGlzdCBvZiBz dXBwb3J0ZWQgbmlkcyAuLi4gKi8KKysJaWYgKCFjaXBoZXIpIHsKKysJCSpuaWRzID0gYWVzbmlf Y2lwaGVyX25pZHM7CisrCQlyZXR1cm4gYWVzbmlfY2lwaGVyX25pZHNfbnVtOworKwl9CisrCisr CS8qIC4uLiBvciB0aGUgcmVxdWVzdGVkICJjaXBoZXIiIG90aGVyd2lzZSAqLworKwlzd2l0Y2gg KG5pZCkgeworKwljYXNlIE5JRF9hZXNfMTI4X2VjYjoKKysJCSpjaXBoZXIgPSAmYWVzbmlfMTI4 X2VjYjsKKysJCWJyZWFrOworKwljYXNlIE5JRF9hZXNfMTI4X2NiYzoKKysJCSpjaXBoZXIgPSAm YWVzbmlfMTI4X2NiYzsKKysJCWJyZWFrOworKwljYXNlIE5JRF9hZXNfMTI4X2NmYjoKKysJCSpj aXBoZXIgPSAmYWVzbmlfMTI4X2NmYjsKKysJCWJyZWFrOworKwljYXNlIE5JRF9hZXNfMTI4X29m YjoKKysJCSpjaXBoZXIgPSAmYWVzbmlfMTI4X29mYjsKKysJCWJyZWFrOworKworKwljYXNlIE5J RF9hZXNfMTkyX2VjYjoKKysJCSpjaXBoZXIgPSAmYWVzbmlfMTkyX2VjYjsKKysJCWJyZWFrOwor KwljYXNlIE5JRF9hZXNfMTkyX2NiYzoKKysJCSpjaXBoZXIgPSAmYWVzbmlfMTkyX2NiYzsKKysJ CWJyZWFrOworKwljYXNlIE5JRF9hZXNfMTkyX2NmYjoKKysJCSpjaXBoZXIgPSAmYWVzbmlfMTky X2NmYjsKKysJCWJyZWFrOworKwljYXNlIE5JRF9hZXNfMTkyX29mYjoKKysJCSpjaXBoZXIgPSAm YWVzbmlfMTkyX29mYjsKKysJCWJyZWFrOworKworKwljYXNlIE5JRF9hZXNfMjU2X2VjYjoKKysJ CSpjaXBoZXIgPSAmYWVzbmlfMjU2X2VjYjsKKysJCWJyZWFrOworKwljYXNlIE5JRF9hZXNfMjU2 X2NiYzoKKysJCSpjaXBoZXIgPSAmYWVzbmlfMjU2X2NiYzsKKysJCWJyZWFrOworKwljYXNlIE5J RF9hZXNfMjU2X2NmYjoKKysJCSpjaXBoZXIgPSAmYWVzbmlfMjU2X2NmYjsKKysJCWJyZWFrOwor KwljYXNlIE5JRF9hZXNfMjU2X29mYjoKKysJCSpjaXBoZXIgPSAmYWVzbmlfMjU2X29mYjsKKysJ CWJyZWFrOworKworKwlkZWZhdWx0OgorKwkJLyogU29ycnksIHdlIGRvbid0IHN1cHBvcnQgdGhp cyBOSUQgKi8KKysJCSpjaXBoZXIgPSBOVUxMOworKwkJcmV0dXJuIDA7CisrCX0KKysKKysJcmV0 dXJuIDE7CisrfQorKworKyNlbmRpZiAvKiBDT01QSUxFX0hXX0FFU05JICovCisrI2VuZGlmIC8q ICFkZWZpbmVkKE9QRU5TU0xfTk9fSFcpICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fSFdfQUVTTkkp ICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fQUVTKSAqLworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMGIv Y3J5cHRvL2VuZ2luZS9lbmdfYWxsLmMuYWVzbmkgb3BlbnNzbC0xLjAuMGIvY3J5cHRvL2VuZ2lu ZS9lbmdfYWxsLmMKKy0tLSBvcGVuc3NsLTEuMC4wYi9jcnlwdG8vZW5naW5lL2VuZ19hbGwuYy5h ZXNuaQkyMDEwLTExLTE2IDE3OjMzOjIyLjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4w LjBiL2NyeXB0by9lbmdpbmUvZW5nX2FsbC5jCTIwMTAtMTEtMTYgMTc6MzM6MjMuMDAwMDAwMDAw ICswMTAwCitAQCAtODUsNiArODUsOSBAQCB2b2lkIEVOR0lORV9sb2FkX2J1aWx0aW5fZW5naW5l cyh2b2lkKQorICNpZiAhZGVmaW5lZChPUEVOU1NMX05PX0hXKSAmJiAoZGVmaW5lZChfX09wZW5C U0RfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChIQVZFX0NSWVBUT0RFVikp CisgCUVOR0lORV9sb2FkX2NyeXB0b2RldigpOworICNlbmRpZgorKyNpZiAhZGVmaW5lZChPUEVO U1NMX05PX0hXKSAmJiAhZGVmaW5lZChPUEVOU1NMX05PX0hXX0FFU05JKQorKwlFTkdJTkVfbG9h ZF9hZXNuaSgpOworKyNlbmRpZgorIAlFTkdJTkVfbG9hZF9keW5hbWljKCk7CisgI2lmbmRlZiBP UEVOU1NMX05PX1NUQVRJQ19FTkdJTkUKKyAjaWZuZGVmIE9QRU5TU0xfTk9fSFcKK2RpZmYgLXVw IG9wZW5zc2wtMS4wLjBiL2NyeXB0by9lbmdpbmUvZW5naW5lLmguYWVzbmkgb3BlbnNzbC0xLjAu MGIvY3J5cHRvL2VuZ2luZS9lbmdpbmUuaAorLS0tIG9wZW5zc2wtMS4wLjBiL2NyeXB0by9lbmdp bmUvZW5naW5lLmguYWVzbmkJMjAxMC0xMS0xNiAxNzozMzoyMi4wMDAwMDAwMDAgKzAxMDAKKysr KyBvcGVuc3NsLTEuMC4wYi9jcnlwdG8vZW5naW5lL2VuZ2luZS5oCTIwMTAtMTEtMTYgMTc6MzM6 MjMuMDAwMDAwMDAwICswMTAwCitAQCAtMzM4LDYgKzMzOCw3IEBAIHZvaWQgRU5HSU5FX2xvYWRf Z29zdCh2b2lkKTsKKyAjZW5kaWYKKyAjZW5kaWYKKyB2b2lkIEVOR0lORV9sb2FkX2NyeXB0b2Rl dih2b2lkKTsKKyt2b2lkIEVOR0lORV9sb2FkX2Flc25pKHZvaWQpOworIHZvaWQgRU5HSU5FX2xv YWRfYnVpbHRpbl9lbmdpbmVzKHZvaWQpOworIAorIC8qIEdldCBhbmQgc2V0IGdsb2JhbCBmbGFn cyAoRU5HSU5FX1RBQkxFX0ZMQUdfKioqKSBmb3IgdGhlIGltcGxlbWVudGF0aW9uCitkaWZmIC11 cCBvcGVuc3NsLTEuMC4wYi9jcnlwdG8vZW5naW5lL01ha2VmaWxlLmFlc25pIG9wZW5zc2wtMS4w LjBiL2NyeXB0by9lbmdpbmUvTWFrZWZpbGUKKy0tLSBvcGVuc3NsLTEuMC4wYi9jcnlwdG8vZW5n aW5lL01ha2VmaWxlLmFlc25pCTIwMTAtMTEtMTUgMTU6NDQ6NDkuMDAwMDAwMDAwICswMTAwCisr Kysgb3BlbnNzbC0xLjAuMGIvY3J5cHRvL2VuZ2luZS9NYWtlZmlsZQkyMDEwLTExLTE2IDE3OjMz OjIzLjAwMDAwMDAwMCArMDEwMAorQEAgLTIxLDEyICsyMSwxNCBAQCBMSUJTUkM9IGVuZ19lcnIu YyBlbmdfbGliLmMgZW5nX2xpc3QuYyBlCisgCWVuZ190YWJsZS5jIGVuZ19wa2V5LmMgZW5nX2Zh dC5jIGVuZ19hbGwuYyBcCisgCXRiX3JzYS5jIHRiX2RzYS5jIHRiX2VjZHNhLmMgdGJfZGguYyB0 Yl9lY2RoLmMgdGJfcmFuZC5jIHRiX3N0b3JlLmMgXAorIAl0Yl9jaXBoZXIuYyB0Yl9kaWdlc3Qu YyB0Yl9wa21ldGguYyB0Yl9hc25tdGguYyBcCistCWVuZ19vcGVuc3NsLmMgZW5nX2NuZi5jIGVu Z19keW4uYyBlbmdfY3J5cHRvZGV2LmMKKysJZW5nX29wZW5zc2wuYyBlbmdfY25mLmMgZW5nX2R5 bi5jIGVuZ19jcnlwdG9kZXYuYyBcCisrCWVuZ19hZXNuaS5jCisgTElCT0JKPSBlbmdfZXJyLm8g ZW5nX2xpYi5vIGVuZ19saXN0Lm8gZW5nX2luaXQubyBlbmdfY3RybC5vIFwKKyAJZW5nX3RhYmxl Lm8gZW5nX3BrZXkubyBlbmdfZmF0Lm8gZW5nX2FsbC5vIFwKKyAJdGJfcnNhLm8gdGJfZHNhLm8g dGJfZWNkc2EubyB0Yl9kaC5vIHRiX2VjZGgubyB0Yl9yYW5kLm8gdGJfc3RvcmUubyBcCisgCXRi X2NpcGhlci5vIHRiX2RpZ2VzdC5vIHRiX3BrbWV0aC5vIHRiX2Fzbm10aC5vIFwKKy0JZW5nX29w ZW5zc2wubyBlbmdfY25mLm8gZW5nX2R5bi5vIGVuZ19jcnlwdG9kZXYubworKwllbmdfb3BlbnNz bC5vIGVuZ19jbmYubyBlbmdfZHluLm8gZW5nX2NyeXB0b2Rldi5vIFwKKysJZW5nX2Flc25pLm8K KyAKKyBTUkM9ICQoTElCU1JDKQorIAorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMGIvY3J5cHRvL2V2 cC9ldnBfZXJyLmMuYWVzbmkgb3BlbnNzbC0xLjAuMGIvY3J5cHRvL2V2cC9ldnBfZXJyLmMKKy0t LSBvcGVuc3NsLTEuMC4wYi9jcnlwdG8vZXZwL2V2cF9lcnIuYy5hZXNuaQkyMDEwLTExLTE2IDE3 OjMzOjIyLjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjBiL2NyeXB0by9ldnAvZXZw X2Vyci5jCTIwMTAtMTEtMTYgMTc6MzM6MjMuMDAwMDAwMDAwICswMTAwCitAQCAtMSw2ICsxLDYg QEAKKyAvKiBjcnlwdG8vZXZwL2V2cF9lcnIuYyAqLworIC8qID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistICogQ29w eXJpZ2h0IChjKSAxOTk5LTIwMDggVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVz ZXJ2ZWQuCisrICogQ29weXJpZ2h0IChjKSAxOTk5LTIwMDkgVGhlIE9wZW5TU0wgUHJvamVjdC4g IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICoKKyAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAgKiBtb2RpZmljYXRp b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK K0BAIC03MCw2ICs3MCw3IEBACisgCisgc3RhdGljIEVSUl9TVFJJTkdfREFUQSBFVlBfc3RyX2Z1 bmN0c1tdPQorIAl7Cisre0VSUl9GVU5DKEVWUF9GX0FFU05JX0lOSVRfS0VZKSwJIkFFU05JX0lO SVRfS0VZIn0sCisge0VSUl9GVU5DKEVWUF9GX0FFU19JTklUX0tFWSksCSJBRVNfSU5JVF9LRVki fSwKKyB7RVJSX0ZVTkMoRVZQX0ZfQ0FNRUxMSUFfSU5JVF9LRVkpLAkiQ0FNRUxMSUFfSU5JVF9L RVkifSwKKyB7RVJSX0ZVTkMoRVZQX0ZfRDJJX1BLRVkpLAkiRDJJX1BLRVkifSwKK0BAIC04Niw3 ICs4Nyw3IEBAIHN0YXRpYyBFUlJfU1RSSU5HX0RBVEEgRVZQX3N0cl9mdW5jdHNbXT0KKyB7RVJS X0ZVTkMoRVZQX0ZfRVZQX0RJR0VTVElOSVRfRVgpLAkiRVZQX0RpZ2VzdEluaXRfZXgifSwKKyB7 RVJSX0ZVTkMoRVZQX0ZfRVZQX0VOQ1JZUFRGSU5BTF9FWCksCSJFVlBfRW5jcnlwdEZpbmFsX2V4 In0sCisge0VSUl9GVU5DKEVWUF9GX0VWUF9NRF9DVFhfQ09QWV9FWCksCSJFVlBfTURfQ1RYX2Nv cHlfZXgifSwKKy17RVJSX0ZVTkMoRVZQX0ZfRVZQX01EX1NJWkUpLAkiRVZQX01EX1NJWkUifSwK Kyt7RVJSX0ZVTkMoRVZQX0ZfRVZQX01EX1NJWkUpLAkiRVZQX01EX3NpemUifSwKKyB7RVJSX0ZV TkMoRVZQX0ZfRVZQX09QRU5JTklUKSwJIkVWUF9PcGVuSW5pdCJ9LAorIHtFUlJfRlVOQyhFVlBf Rl9FVlBfUEJFX0FMR19BREQpLAkiRVZQX1BCRV9hbGdfYWRkIn0sCisge0VSUl9GVU5DKEVWUF9G X0VWUF9QQkVfQUxHX0FERF9UWVBFKSwJIkVWUF9QQkVfYWxnX2FkZF90eXBlIn0sCitkaWZmIC11 cCBvcGVuc3NsLTEuMC4wYi9jcnlwdG8vZXZwL2V2cC5oLmFlc25pIG9wZW5zc2wtMS4wLjBiL2Ny eXB0by9ldnAvZXZwLmgKKy0tLSBvcGVuc3NsLTEuMC4wYi9jcnlwdG8vZXZwL2V2cC5oLmFlc25p CTIwMTAtMTEtMTYgMTc6MzM6MjIuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMGIv Y3J5cHRvL2V2cC9ldnAuaAkyMDEwLTExLTE2IDE3OjMzOjIzLjAwMDAwMDAwMCArMDEwMAorQEAg LTExNjcsNiArMTE2Nyw3IEBAIHZvaWQgRVJSX2xvYWRfRVZQX3N0cmluZ3Modm9pZCk7CisgLyog RXJyb3IgY29kZXMgZm9yIHRoZSBFVlAgZnVuY3Rpb25zLiAqLworIAorIC8qIEZ1bmN0aW9uIGNv ZGVzLiAqLworKyNkZWZpbmUgRVZQX0ZfQUVTTklfSU5JVF9LRVkJCQkJIDE2MworICNkZWZpbmUg RVZQX0ZfQUVTX0lOSVRfS0VZCQkJCSAxMzMKKyAjZGVmaW5lIEVWUF9GX0NBTUVMTElBX0lOSVRf S0VZCQkJCSAxNTkKKyAjZGVmaW5lIEVWUF9GX0QySV9QS0VZCQkJCQkgMTAwCitkaWZmIC11cCBv cGVuc3NsLTEuMC4wYi90ZXN0L3Rlc3RfYWVzbmkuYWVzbmkgb3BlbnNzbC0xLjAuMGIvdGVzdC90 ZXN0X2Flc25pCistLS0gb3BlbnNzbC0xLjAuMGIvdGVzdC90ZXN0X2Flc25pLmFlc25pCTIwMTAt MTEtMTYgMTc6MzM6MjMuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMGIvdGVzdC90 ZXN0X2Flc25pCTIwMTAtMTEtMTYgMTc6MzM6MjMuMDAwMDAwMDAwICswMTAwCitAQCAtMCwwICsx LDY5IEBACisrIyEvYmluL3NoCisrCisrUFJPRz0kMQorKworK2lmIFsgLXggJFBST0cgXTsgdGhl bgorKyAgICBpZiBleHByICJ4YCRQUk9HIHZlcnNpb25gIiA6ICJ4T3BlblNTTCIgPiAvZGV2L251 bGw7IHRoZW4KKysJOgorKyAgICBlbHNlCisrCWVjaG8gIiRQUk9HIGlzIG5vdCBPcGVuU1NMIGV4 ZWN1dGFibGUiCisrCWV4aXQgMQorKyAgICBmaQorK2Vsc2UKKysgICAgZWNobyAiJFBST0cgaXMg bm90IGV4ZWN1dGFibGUiCisrICAgIGV4aXQgMTsKKytmaQorKworK2lmICRQUk9HIGVuZ2luZSBh ZXNuaSB8IGdyZXAgLXYgbm8tYWVzbmk7IHRoZW4KKysKKysgICAgSEFTSD1gY2F0ICRQUk9HIHwg JFBST0cgZGdzdCAtaGV4YAorKworKyAgICBBRVNfQUxHUz0iCWFlcy0xMjgtZWNiIGFlcy0xOTIt ZWNiIGFlcy0yNTYtZWNiIFwKKysJCWFlcy0xMjgtY2JjIGFlcy0xOTItY2JjIGFlcy0yNTYtY2Jj IFwKKysJCWFlcy0xMjgtY2ZiIGFlcy0xOTItY2ZiIGFlcy0yNTYtY2ZiIFwKKysJCWFlcy0xMjgt b2ZiIGFlcy0xOTItb2ZiIGFlcy0yNTYtb2ZiIgorKyAgICBCVUZTSVpFPSIxNiAzMiA0OCA2NCA4 MCA5NiAxMjggMTQ0IDk5OSIKKysKKysgICAgbmVycj0wCisrCisrICAgIGZvciBhbGcgaW4gJEFF U19BTEdTOyBkbworKwllY2hvICRhbGcKKysJZm9yIGJ1ZnNpemUgaW4gJEJVRlNJWkU7IGRvCisr CSAgICBURVNUPWAoCWNhdCAkUFJPRyB8IFwKKysJCSRQUk9HIGVuYyAtZSAtayAiJEhBU0giIC0k YWxnIC1idWZzaXplICRidWZzaXplIC1lbmdpbmUgYWVzbmkgfCBcCisrCQkkUFJPRyBlbmMgLWQg LWsgIiRIQVNIIiAtJGFsZyB8IFwKKysJCSRQUk9HIGRnc3QgLWhleCApIDI+L2Rldi9udWxsYAor KwkgICAgaWYgWyAiJFRFU1QiICE9ICIkSEFTSCIgXTsgdGhlbgorKwkJZWNobyAiLSRhbGcvJGJ1 ZnNpemUgZW5jcnlwdCB0ZXN0IGZhaWxlZCIKKysJCW5lcnI9YGV4cHIgJG5lcnIgKyAxYAorKwkg ICAgZmkKKysJZG9uZQorKwlmb3IgYnVmc2l6ZSBpbiAkQlVGU0laRTsgZG8gCisrCSAgICBURVNU PWAoCWNhdCAkUFJPRyB8IFwKKysJCSRQUk9HIGVuYyAtZSAtayAiJEhBU0giIC0kYWxnIHwgXAor KwkJJFBST0cgZW5jIC1kIC1rICIkSEFTSCIgLSRhbGcgLWJ1ZnNpemUgJGJ1ZnNpemUgLWVuZ2lu ZSBhZXNuaSB8IFwKKysJCSRQUk9HIGRnc3QgLWhleCApIDI+L2Rldi9udWxsYAorKwkgICAgaWYg WyAiJFRFU1QiICE9ICIkSEFTSCIgXTsgdGhlbgorKwkJZWNobyAiLSRhbGcvJGJ1ZnNpemUgZGVj cnlwdCB0ZXN0IGZhaWxlZCIKKysJCW5lcnI9YGV4cHIgJG5lcnIgKyAxYAorKwkgICAgZmkKKysJ ZG9uZQorKwlURVNUPWAoCWNhdCAkUFJPRyB8IFwKKysJCSRQUk9HIGVuYyAtZSAtayAiJEhBU0gi IC0kYWxnIC1lbmdpbmUgYWVzbmkgfCBcCisrCQkkUFJPRyBlbmMgLWQgLWsgIiRIQVNIIiAtJGFs ZyAtZW5naW5lIGFlc25pIHwgXAorKwkJJFBST0cgZGdzdCAtaGV4ICkgMj4vZGV2L251bGxgCisr CWlmIFsgIiRURVNUIiAhPSAiJEhBU0giIF07IHRoZW4KKysJCWVjaG8gIi0kYWxnIGVuL2RlY3J5 cHQgdGVzdCBmYWlsZWQiCisrCQluZXJyPWBleHByICRuZXJyICsgMWAKKysJZmkKKysgICAgZG9u ZQorKworKyAgICBpZiBbICRuZXJyIC1ndCAwIF07IHRoZW4KKysJZWNobyAiQUVTTkkgZW5naW5l IHRlc3QgZmFpbGVkLiIKKysJZXhpdCAxOworKyAgICBmaQorK2Vsc2UKKysgICAgZWNobyAiQUVT TkkgZW5naW5lIGlzIG5vdCBhdmFpbGFibGUiCisrZmkKKysKKytleGl0IDAKCmRpZmYgLS1naXQg YS9vcGVuc3NsLTEuMC4wYi1pcHY2LWFwcHMucGF0Y2ggYi9vcGVuc3NsLTEuMC4wYi1pcHY2LWFw cHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjg1YTVkOAotLS0g L2Rldi9udWxsCisrKyBiL29wZW5zc2wtMS4wLjBiLWlwdjYtYXBwcy5wYXRjaApAQCAtMCwwICsx LDQ5NiBAQAorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMGIvYXBwcy9zX2FwcHMuaC5pcHY2LWFwcHMg b3BlbnNzbC0xLjAuMGIvYXBwcy9zX2FwcHMuaAorLS0tIG9wZW5zc2wtMS4wLjBiL2FwcHMvc19h cHBzLmguaXB2Ni1hcHBzCTIwMTAtMTEtMTYgMTc6MTk6MjkuMDAwMDAwMDAwICswMTAwCisrKysg b3BlbnNzbC0xLjAuMGIvYXBwcy9zX2FwcHMuaAkyMDEwLTExLTE2IDE3OjE5OjI5LjAwMDAwMDAw MCArMDEwMAorQEAgLTE0OCw3ICsxNDgsNyBAQCB0eXBlZGVmIGZkX21hc2sgZmRfc2V0OworICNk ZWZpbmUgUE9SVF9TVFIgICAgICAgICI0NDMzIgorICNkZWZpbmUgUFJPVE9DT0wgICAgICAgICJ0 Y3AiCisgCistaW50IGRvX3NlcnZlcihpbnQgcG9ydCwgaW50IHR5cGUsIGludCAqcmV0LCBpbnQg KCpjYikgKGNoYXIgKmhvc3RuYW1lLCBpbnQgcywgdW5zaWduZWQgY2hhciAqY29udGV4dCksIHVu c2lnbmVkIGNoYXIgKmNvbnRleHQpOworK2ludCBkb19zZXJ2ZXIoY2hhciAqcG9ydCwgaW50IHR5 cGUsIGludCAqcmV0LCBpbnQgKCpjYikgKGNoYXIgKmhvc3RuYW1lLCBpbnQgcywgdW5zaWduZWQg Y2hhciAqY29udGV4dCksIHVuc2lnbmVkIGNoYXIgKmNvbnRleHQpOworICNpZmRlZiBIRUFERVJf WDUwOV9ICisgaW50IE1TX0NBTExCQUNLIHZlcmlmeV9jYWxsYmFjayhpbnQgb2ssIFg1MDlfU1RP UkVfQ1RYICpjdHgpOworICNlbmRpZgorQEAgLTE1NiwxMCArMTU2LDkgQEAgaW50IE1TX0NBTExC QUNLIHZlcmlmeV9jYWxsYmFjayhpbnQgb2ssIAorIGludCBzZXRfY2VydF9zdHVmZihTU0xfQ1RY ICpjdHgsIGNoYXIgKmNlcnRfZmlsZSwgY2hhciAqa2V5X2ZpbGUpOworIGludCBzZXRfY2VydF9r ZXlfc3R1ZmYoU1NMX0NUWCAqY3R4LCBYNTA5ICpjZXJ0LCBFVlBfUEtFWSAqa2V5KTsKKyAjZW5k aWYKKy1pbnQgaW5pdF9jbGllbnQoaW50ICpzb2NrLCBjaGFyICpzZXJ2ZXIsIGludCBwb3J0LCBp bnQgdHlwZSk7CisraW50IGluaXRfY2xpZW50KGludCAqc29jaywgY2hhciAqc2VydmVyLCBjaGFy ICpwb3J0LCBpbnQgdHlwZSk7CisgaW50IHNob3VsZF9yZXRyeShpbnQgaSk7CistaW50IGV4dHJh Y3RfcG9ydChjaGFyICpzdHIsIHNob3J0ICpwb3J0X3B0cik7CistaW50IGV4dHJhY3RfaG9zdF9w b3J0KGNoYXIgKnN0cixjaGFyICoqaG9zdF9wdHIsdW5zaWduZWQgY2hhciAqaXAsc2hvcnQgKnAp OworK2ludCBleHRyYWN0X2hvc3RfcG9ydChjaGFyICpzdHIsY2hhciAqKmhvc3RfcHRyLGNoYXIg Kipwb3J0X3B0cik7CisgCisgbG9uZyBNU19DQUxMQkFDSyBiaW9fZHVtcF9jYWxsYmFjayhCSU8g KmJpbywgaW50IGNtZCwgY29uc3QgY2hhciAqYXJncCwKKyAJCQkJICAgaW50IGFyZ2ksIGxvbmcg YXJnbCwgbG9uZyByZXQpOworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMGIvYXBwcy9zX2NsaWVudC5j LmlwdjYtYXBwcyBvcGVuc3NsLTEuMC4wYi9hcHBzL3NfY2xpZW50LmMKKy0tLSBvcGVuc3NsLTEu MC4wYi9hcHBzL3NfY2xpZW50LmMuaXB2Ni1hcHBzCTIwMTAtMTEtMTYgMTc6MTk6MjkuMDAwMDAw MDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMGIvYXBwcy9zX2NsaWVudC5jCTIwMTAtMTEtMTYg MTc6MTk6MjkuMDAwMDAwMDAwICswMTAwCitAQCAtMzg5LDcgKzM4OSw3IEBAIGludCBNQUlOKGlu dCBhcmdjLCBjaGFyICoqYXJndikKKyAJaW50IGNidWZfbGVuLGNidWZfb2ZmOworIAlpbnQgc2J1 Zl9sZW4sc2J1Zl9vZmY7CisgCWZkX3NldCByZWFkZmRzLHdyaXRlZmRzOworLQlzaG9ydCBwb3J0 PVBPUlQ7CisrCWNoYXIgKnBvcnRfc3RyID0gUE9SVF9TVFI7CisgCWludCBmdWxsX2xvZz0xOwor IAljaGFyICpob3N0PVNTTF9IT1NUX05BTUU7CisgCWNoYXIgKmNlcnRfZmlsZT1OVUxMLCprZXlf ZmlsZT1OVUxMOworQEAgLTQ4OCwxMyArNDg4LDEyIEBAIGludCBNQUlOKGludCBhcmdjLCBjaGFy ICoqYXJndikKKyAJCWVsc2UgaWYJKHN0cmNtcCgqYXJndiwiLXBvcnQiKSA9PSAwKQorIAkJCXsK KyAJCQlpZiAoLS1hcmdjIDwgMSkgZ290byBiYWQ7CistCQkJcG9ydD1hdG9pKCooKythcmd2KSk7 CistCQkJaWYgKHBvcnQgPT0gMCkgZ290byBiYWQ7CisrCQkJcG9ydF9zdHI9ICooKythcmd2KTsK KyAJCQl9CisgCQllbHNlIGlmIChzdHJjbXAoKmFyZ3YsIi1jb25uZWN0IikgPT0gMCkKKyAJCQl7 CisgCQkJaWYgKC0tYXJnYyA8IDEpIGdvdG8gYmFkOworLQkJCWlmICghZXh0cmFjdF9ob3N0X3Bv cnQoKigrK2FyZ3YpLCZob3N0LE5VTEwsJnBvcnQpKQorKwkJCWlmICghZXh0cmFjdF9ob3N0X3Bv cnQoKigrK2FyZ3YpLCZob3N0LCZwb3J0X3N0cikpCisgCQkJCWdvdG8gYmFkOworIAkJCX0KKyAJ CWVsc2UgaWYJKHN0cmNtcCgqYXJndiwiLXZlcmlmeSIpID09IDApCitAQCAtOTY3LDcgKzk2Niw3 IEBAIGJhZDoKKyAKKyByZV9zdGFydDoKKyAKKy0JaWYgKGluaXRfY2xpZW50KCZzLGhvc3QscG9y dCxzb2NrZXRfdHlwZSkgPT0gMCkKKysJaWYgKGluaXRfY2xpZW50KCZzLGhvc3QscG9ydF9zdHIs c29ja2V0X3R5cGUpID09IDApCisgCQl7CisgCQlCSU9fcHJpbnRmKGJpb19lcnIsImNvbm5lY3Q6 ZXJybm89JWRcbiIsZ2V0X2xhc3Rfc29ja2V0X2Vycm9yKCkpOworIAkJU0hVVERPV04ocyk7Citk aWZmIC11cCBvcGVuc3NsLTEuMC4wYi9hcHBzL3Nfc2VydmVyLmMuaXB2Ni1hcHBzIG9wZW5zc2wt MS4wLjBiL2FwcHMvc19zZXJ2ZXIuYworLS0tIG9wZW5zc2wtMS4wLjBiL2FwcHMvc19zZXJ2ZXIu Yy5pcHY2LWFwcHMJMjAxMC0xMS0xNiAxNzoxOToyOS4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVu c3NsLTEuMC4wYi9hcHBzL3Nfc2VydmVyLmMJMjAxMC0xMS0xNiAxNzoxOToyOS4wMDAwMDAwMDAg KzAxMDAKK0BAIC04MzgsNyArODM4LDcgQEAgaW50IE1BSU4oaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb XSkKKyAJeworIAlYNTA5X1ZFUklGWV9QQVJBTSAqdnBtID0gTlVMTDsKKyAJaW50IGJhZGFyZyA9 IDA7CistCXNob3J0IHBvcnQ9UE9SVDsKKysJY2hhciAqcG9ydF9zdHIgPSBQT1JUX1NUUjsKKyAJ Y2hhciAqQ0FwYXRoPU5VTEwsKkNBZmlsZT1OVUxMOworIAl1bnNpZ25lZCBjaGFyICpjb250ZXh0 ID0gTlVMTDsKKyAJY2hhciAqZGhmaWxlID0gTlVMTDsKK0BAIC05MDksOCArOTA5LDcgQEAgaW50 IE1BSU4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJCQkgKHN0cmNtcCgqYXJndiwiLWFjY2Vw dCIpID09IDApKQorIAkJCXsKKyAJCQlpZiAoLS1hcmdjIDwgMSkgZ290byBiYWQ7CistCQkJaWYg KCFleHRyYWN0X3BvcnQoKigrK2FyZ3YpLCZwb3J0KSkKKy0JCQkJZ290byBiYWQ7CisrCQkJcG9y dF9zdHI9ICooKythcmd2KTsKKyAJCQl9CisgCQllbHNlIGlmCShzdHJjbXAoKmFyZ3YsIi12ZXJp ZnkiKSA9PSAwKQorIAkJCXsKK0BAIC0xNzAwLDkgKzE2OTksOSBAQCBiYWQ6CisgCUJJT19wcmlu dGYoYmlvX3Nfb3V0LCJBQ0NFUFRcbiIpOworIAkodm9pZClCSU9fZmx1c2goYmlvX3Nfb3V0KTsK KyAJaWYgKHd3dykKKy0JCWRvX3NlcnZlcihwb3J0LHNvY2tldF90eXBlLCZhY2NlcHRfc29ja2V0 LHd3d19ib2R5LCBjb250ZXh0KTsKKysJCWRvX3NlcnZlcihwb3J0X3N0cixzb2NrZXRfdHlwZSwm YWNjZXB0X3NvY2tldCx3d3dfYm9keSwgY29udGV4dCk7CisgCWVsc2UKKy0JCWRvX3NlcnZlcihw b3J0LHNvY2tldF90eXBlLCZhY2NlcHRfc29ja2V0LHN2X2JvZHksIGNvbnRleHQpOworKwkJZG9f c2VydmVyKHBvcnRfc3RyLHNvY2tldF90eXBlLCZhY2NlcHRfc29ja2V0LHN2X2JvZHksIGNvbnRl eHQpOworIAlwcmludF9zdGF0cyhiaW9fc19vdXQsY3R4KTsKKyAJcmV0PTA7CisgZW5kOgorZGlm ZiAtdXAgb3BlbnNzbC0xLjAuMGIvYXBwcy9zX3NvY2tldC5jLmlwdjYtYXBwcyBvcGVuc3NsLTEu MC4wYi9hcHBzL3Nfc29ja2V0LmMKKy0tLSBvcGVuc3NsLTEuMC4wYi9hcHBzL3Nfc29ja2V0LmMu aXB2Ni1hcHBzCTIwMTAtMDctMDUgMTM6MDM6MjIuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNz bC0xLjAuMGIvYXBwcy9zX3NvY2tldC5jCTIwMTAtMTEtMTYgMTc6Mjc6MTguMDAwMDAwMDAwICsw MTAwCitAQCAtMTAyLDkgKzEwMiw3IEBAIHN0YXRpYyBzdHJ1Y3QgaG9zdGVudCAqR2V0SG9zdEJ5 TmFtZShjaGEKKyBzdGF0aWMgdm9pZCBzc2xfc29ja19jbGVhbnVwKHZvaWQpOworICNlbmRpZgor IHN0YXRpYyBpbnQgc3NsX3NvY2tfaW5pdCh2b2lkKTsKKy1zdGF0aWMgaW50IGluaXRfY2xpZW50 X2lwKGludCAqc29jayx1bnNpZ25lZCBjaGFyIGlwWzRdLCBpbnQgcG9ydCwgaW50IHR5cGUpOwor LXN0YXRpYyBpbnQgaW5pdF9zZXJ2ZXIoaW50ICpzb2NrLCBpbnQgcG9ydCwgaW50IHR5cGUpOwor LXN0YXRpYyBpbnQgaW5pdF9zZXJ2ZXJfbG9uZyhpbnQgKnNvY2ssIGludCBwb3J0LGNoYXIgKmlw LCBpbnQgdHlwZSk7Cisrc3RhdGljIGludCBpbml0X3NlcnZlcihpbnQgKnNvY2ssIGNoYXIgKnBv cnQsIGludCB0eXBlKTsKKyBzdGF0aWMgaW50IGRvX2FjY2VwdChpbnQgYWNjX3NvY2ssIGludCAq c29jaywgY2hhciAqKmhvc3QpOworIHN0YXRpYyBpbnQgaG9zdF9pcChjaGFyICpzdHIsIHVuc2ln bmVkIGNoYXIgaXBbNF0pOworIAorQEAgLTIzNCw1OCArMjMyLDcwIEBAIHN0YXRpYyBpbnQgc3Ns X3NvY2tfaW5pdCh2b2lkKQorIAlyZXR1cm4oMSk7CisgCX0KKyAKKy1pbnQgaW5pdF9jbGllbnQo aW50ICpzb2NrLCBjaGFyICpob3N0LCBpbnQgcG9ydCwgaW50IHR5cGUpCisraW50IGluaXRfY2xp ZW50KGludCAqc29jaywgY2hhciAqaG9zdCwgY2hhciAqcG9ydCwgaW50IHR5cGUpCisgCXsKKy0J dW5zaWduZWQgY2hhciBpcFs0XTsKKy0KKy0JaWYgKCFob3N0X2lwKGhvc3QsJihpcFswXSkpKQor LQkJeworLQkJcmV0dXJuKDApOworLQkJfQorLQlyZXR1cm4oaW5pdF9jbGllbnRfaXAoc29jayxp cCxwb3J0LHR5cGUpKTsKKy0JfQorLQorLXN0YXRpYyBpbnQgaW5pdF9jbGllbnRfaXAoaW50ICpz b2NrLCB1bnNpZ25lZCBjaGFyIGlwWzRdLCBpbnQgcG9ydCwgaW50IHR5cGUpCistCXsKKy0JdW5z aWduZWQgbG9uZyBhZGRyOworLQlzdHJ1Y3Qgc29ja2FkZHJfaW4gdGhlbTsKKy0JaW50IHMsaTsK KysJc3RydWN0IGFkZHJpbmZvICpyZXMsICpyZXMwLCBoaW50czsKKysJY2hhciAqIGZhaWxlZF9j YWxsID0gTlVMTDsKKysJaW50IHM7CisrCWludCBlOworIAorIAlpZiAoIXNzbF9zb2NrX2luaXQo KSkgcmV0dXJuKDApOworIAorLQltZW1zZXQoKGNoYXIgKikmdGhlbSwwLHNpemVvZih0aGVtKSk7 CistCXRoZW0uc2luX2ZhbWlseT1BRl9JTkVUOworLQl0aGVtLnNpbl9wb3J0PWh0b25zKCh1bnNp Z25lZCBzaG9ydClwb3J0KTsKKy0JYWRkcj0odW5zaWduZWQgbG9uZykKKy0JCSgodW5zaWduZWQg bG9uZylpcFswXTw8MjRMKXwKKy0JCSgodW5zaWduZWQgbG9uZylpcFsxXTw8MTZMKXwKKy0JCSgo dW5zaWduZWQgbG9uZylpcFsyXTw8IDhMKXwKKy0JCSgodW5zaWduZWQgbG9uZylpcFszXSk7Cist CXRoZW0uc2luX2FkZHIuc19hZGRyPWh0b25sKGFkZHIpOworLQorLQlpZiAodHlwZSA9PSBTT0NL X1NUUkVBTSkKKy0JCXM9c29ja2V0KEFGX0lORVQsU09DS19TVFJFQU0sU09DS0VUX1BST1RPQ09M KTsKKy0JZWxzZSAvKiAoIHR5cGUgPT0gU09DS19ER1JBTSkgKi8KKy0JCXM9c29ja2V0KEFGX0lO RVQsU09DS19ER1JBTSxJUFBST1RPX1VEUCk7CistCQkJCistCWlmIChzID09IElOVkFMSURfU09D S0VUKSB7IHBlcnJvcigic29ja2V0Iik7IHJldHVybigwKTsgfQorKwltZW1zZXQoJmhpbnRzLCAn XDAnLCBzaXplb2YoaGludHMpKTsKKysJaGludHMuYWlfc29ja3R5cGUgPSB0eXBlOworKwloaW50 cy5haV9mbGFncyA9IEFJX0FERFJDT05GSUc7CisrCisrCWUgPSBnZXRhZGRyaW5mbyhob3N0LCBw b3J0LCAmaGludHMsICZyZXMpOworKwlpZiAoZSkKKysJeworKwkJZnByaW50ZihzdGRlcnIsICJn ZXRhZGRyaW5mbzogJXNcbiIsIGdhaV9zdHJlcnJvcihlKSk7CisrCQlpZiAoZSA9PSBFQUlfU1lT VEVNKQorKwkJCXBlcnJvcigiZ2V0YWRkcmluZm8iKTsKKysJCXJldHVybiAoMCk7CisrCQl9Cisg CisrCXJlczAgPSByZXM7CisrCXdoaWxlIChyZXMpCisrCQl7CisrCQlzID0gc29ja2V0KHJlcy0+ YWlfZmFtaWx5LCByZXMtPmFpX3NvY2t0eXBlLCByZXMtPmFpX3Byb3RvY29sKTsKKysJCWlmIChz ID09IElOVkFMSURfU09DS0VUKQorKwkJCXsKKysJCQlmYWlsZWRfY2FsbCA9ICJzb2NrZXQiOwor KwkJCWdvdG8gbmV4dHJlczsKKysJCQl9CisgI2lmIGRlZmluZWQoU09fS0VFUEFMSVZFKSAmJiAh ZGVmaW5lZChPUEVOU1NMX1NZU19NUEUpCisgCWlmICh0eXBlID09IFNPQ0tfU1RSRUFNKQorIAkJ eworLQkJaT0wOworLQkJaT1zZXRzb2Nrb3B0KHMsU09MX1NPQ0tFVCxTT19LRUVQQUxJVkUsKGNo YXIgKikmaSxzaXplb2YoaSkpOworLQkJaWYgKGkgPCAwKSB7IHBlcnJvcigia2VlcGFsaXZlIik7 IHJldHVybigwKTsgfQorKwkJCWludCBpPTA7CisrCQkJaT1zZXRzb2Nrb3B0KHMsU09MX1NPQ0tF VCxTT19LRUVQQUxJVkUsCisrCQkJCShjaGFyICopJmksc2l6ZW9mKGkpKTsKKysJCQlpZiAoaSA8 IDApIHsKKysJCQkJZmFpbGVkX2NhbGwgPSAia2VlcGFsaXZlIjsKKysJCQkJZ290byBuZXh0cmVz OworKwkJCQl9CisgCQl9CisgI2VuZGlmCistCistCWlmIChjb25uZWN0KHMsKHN0cnVjdCBzb2Nr YWRkciAqKSZ0aGVtLHNpemVvZih0aGVtKSkgPT0gLTEpCistCQl7IGNsb3Nlc29ja2V0KHMpOyBw ZXJyb3IoImNvbm5lY3QiKTsgcmV0dXJuKDApOyB9CisrCQlpZiAoY29ubmVjdChzLChzdHJ1Y3Qg c29ja2FkZHIgKilyZXMtPmFpX2FkZHIsCisrCQkJcmVzLT5haV9hZGRybGVuKSA9PSAwKQorKwkJ CXsKKysJCQlmcmVlYWRkcmluZm8ocmVzMCk7CisgCSpzb2NrPXM7CisgCXJldHVybigxKTsKKyAJ fQorIAorLWludCBkb19zZXJ2ZXIoaW50IHBvcnQsIGludCB0eXBlLCBpbnQgKnJldCwgaW50ICgq Y2IpKGNoYXIgKmhvc3RuYW1lLCBpbnQgcywgdW5zaWduZWQgY2hhciAqY29udGV4dCksIHVuc2ln bmVkIGNoYXIgKmNvbnRleHQpCisrCQlmYWlsZWRfY2FsbCA9ICJzb2NrZXQiOworK25leHRyZXM6 CisrCQlpZiAocyAhPSBJTlZBTElEX1NPQ0tFVCkKKysJCQljbG9zZShzKTsKKysJCXJlcyA9IHJl cy0+YWlfbmV4dDsKKysJCX0KKysJZnJlZWFkZHJpbmZvKHJlczApOworKworKwlwZXJyb3IoZmFp bGVkX2NhbGwpOworKwlyZXR1cm4oMCk7CisrCX0KKysKKytpbnQgZG9fc2VydmVyKGNoYXIgKnBv cnQsIGludCB0eXBlLCBpbnQgKnJldCwgaW50ICgqY2IpKGNoYXIgKmhvc3RuYW1lLCBpbnQgcywg dW5zaWduZWQgY2hhciAqY29udGV4dCksIHVuc2lnbmVkIGNoYXIgKmNvbnRleHQpCisgCXsKKyAJ aW50IHNvY2s7CisgCWNoYXIgKm5hbWUgPSBOVUxMOworQEAgLTMyMywzMyArMzMzLDM4IEBAIGlu dCBkb19zZXJ2ZXIoaW50IHBvcnQsIGludCB0eXBlLCBpbnQgKnIKKyAJCX0KKyAJfQorIAorLXN0 YXRpYyBpbnQgaW5pdF9zZXJ2ZXJfbG9uZyhpbnQgKnNvY2ssIGludCBwb3J0LCBjaGFyICppcCwg aW50IHR5cGUpCisrc3RhdGljIGludCBpbml0X3NlcnZlcihpbnQgKnNvY2ssIGNoYXIgKnBvcnQs IGludCB0eXBlKQorIAl7CistCWludCByZXQ9MDsKKy0Jc3RydWN0IHNvY2thZGRyX2luIHNlcnZl cjsKKy0JaW50IHM9IC0xOworKwlzdHJ1Y3QgYWRkcmluZm8gKnJlcywgKnJlczAsIGhpbnRzOwor KwljaGFyICogZmFpbGVkX2NhbGwgPSBOVUxMOworKwljaGFyIHBvcnRfbmFtZVs4XTsKKysJaW50 IHM7CisrCWludCBlOworIAorIAlpZiAoIXNzbF9zb2NrX2luaXQoKSkgcmV0dXJuKDApOworIAor LQltZW1zZXQoKGNoYXIgKikmc2VydmVyLDAsc2l6ZW9mKHNlcnZlcikpOworLQlzZXJ2ZXIuc2lu X2ZhbWlseT1BRl9JTkVUOworLQlzZXJ2ZXIuc2luX3BvcnQ9aHRvbnMoKHVuc2lnbmVkIHNob3J0 KXBvcnQpOworLQlpZiAoaXAgPT0gTlVMTCkKKy0JCXNlcnZlci5zaW5fYWRkci5zX2FkZHI9SU5B RERSX0FOWTsKKy0JZWxzZQorLS8qIEFkZGVkIGZvciBUM0UsIGFkZHJlc3Mtb2YgZmFpbHMgb24g Yml0IGZpZWxkIChiZWNrbWFuQGFjbC5sYW5sLmdvdikgKi8KKy0jaWZuZGVmIEJJVF9GSUVMRF9M SU1JVFMKKy0JCW1lbWNweSgmc2VydmVyLnNpbl9hZGRyLnNfYWRkcixpcCw0KTsKKy0jZWxzZQor LQkJbWVtY3B5KCZzZXJ2ZXIuc2luX2FkZHIsaXAsNCk7CistI2VuZGlmCisrCW1lbXNldCgmaGlu dHMsICdcMCcsIHNpemVvZihoaW50cykpOworKwloaW50cy5haV9zb2NrdHlwZSA9IHR5cGU7Cisr CWhpbnRzLmFpX2ZsYWdzID0gQUlfUEFTU0lWRSB8IEFJX0FERFJDT05GSUc7CisgCQorLQkJaWYg KHR5cGUgPT0gU09DS19TVFJFQU0pCistCQkJcz1zb2NrZXQoQUZfSU5FVCxTT0NLX1NUUkVBTSxT T0NLRVRfUFJPVE9DT0wpOworLQkJZWxzZSAvKiB0eXBlID09IFNPQ0tfREdSQU0gKi8KKy0JCQlz PXNvY2tldChBRl9JTkVULCBTT0NLX0RHUkFNLElQUFJPVE9fVURQKTsKKysJZSA9IGdldGFkZHJp bmZvKE5VTEwsIHBvcnQsICZoaW50cywgJnJlcyk7CisrCWlmIChlKQorKwkJeworKwkJZnByaW50 ZihzdGRlcnIsICJnZXRhZGRyaW5mbzogJXNcbiIsIGdhaV9zdHJlcnJvcihlKSk7CisrCQlpZiAo ZSA9PSBFQUlfU1lTVEVNKQorKwkJCXBlcnJvcigiZ2V0YWRkcmluZm8iKTsKKysJCXJldHVybiAo MCk7CisrCQl9CisgCistCWlmIChzID09IElOVkFMSURfU09DS0VUKSBnb3RvIGVycjsKKysJcmVz MCA9IHJlczsKKysJd2hpbGUgKHJlcykKKysJCXsKKysJCXMgPSBzb2NrZXQocmVzLT5haV9mYW1p bHksIHJlcy0+YWlfc29ja3R5cGUsIHJlcy0+YWlfcHJvdG9jb2wpOworKwkJaWYgKHMgPT0gSU5W QUxJRF9TT0NLRVQpCisrCQkJeworKwkJCWZhaWxlZF9jYWxsID0gInNvY2tldCI7CisrCQkJZ290 byBuZXh0cmVzOworKwkJCX0KKyAjaWYgZGVmaW5lZCBTT0xfU09DS0VUICYmIGRlZmluZWQgU09f UkVVU0VBRERSCisgCQl7CisgCQlpbnQgaiA9IDE7CitAQCAtMzU3LDM1ICszNzIsMzkgQEAgc3Rh dGljIGludCBpbml0X3NlcnZlcl9sb25nKGludCAqc29jaywgaQorIAkJCSAgICh2b2lkICopICZq LCBzaXplb2Ygaik7CisgCQl9CisgI2VuZGlmCistCWlmIChiaW5kKHMsKHN0cnVjdCBzb2NrYWRk ciAqKSZzZXJ2ZXIsc2l6ZW9mKHNlcnZlcikpID09IC0xKQorKworKwkJaWYgKGJpbmQocywoc3Ry dWN0IHNvY2thZGRyICopcmVzLT5haV9hZGRyLCByZXMtPmFpX2FkZHJsZW4pID09IC0xKQorIAkJ eworLSNpZm5kZWYgT1BFTlNTTF9TWVNfV0lORE9XUworLQkJcGVycm9yKCJiaW5kIik7CistI2Vu ZGlmCistCQlnb3RvIGVycjsKKysJCQlmYWlsZWRfY2FsbCA9ICJiaW5kIjsKKysJCQlnb3RvIG5l eHRyZXM7CisgCQl9CistCS8qIE1ha2UgaXQgMTI4IGZvciBsaW51eCAqLworLQlpZiAodHlwZT09 U09DS19TVFJFQU0gJiYgbGlzdGVuKHMsMTI4KSA9PSAtMSkgZ290byBlcnI7CistCSpzb2NrPXM7 CistCXJldD0xOworLWVycjoKKy0JaWYgKChyZXQgPT0gMCkgJiYgKHMgIT0gLTEpKQorKwkJaWYg KHR5cGU9PVNPQ0tfU1RSRUFNICYmIGxpc3RlbihzLDEyOCkgPT0gLTEpCisgCQl7CistCQlTSFVU RE9XTihzKTsKKysJCQlmYWlsZWRfY2FsbCA9ICJsaXN0ZW4iOworKwkJCWdvdG8gbmV4dHJlczsK KyAJCX0KKy0JcmV0dXJuKHJldCk7CisrCisrCQkqc29jaz1zOworKwkJcmV0dXJuKDEpOworKwor K25leHRyZXM6CisrCQlpZiAocyAhPSBJTlZBTElEX1NPQ0tFVCkKKysJCQljbG9zZShzKTsKKysJ CXJlcyA9IHJlcy0+YWlfbmV4dDsKKyAJfQorKwlmcmVlYWRkcmluZm8ocmVzMCk7CisgCistc3Rh dGljIGludCBpbml0X3NlcnZlcihpbnQgKnNvY2ssIGludCBwb3J0LCBpbnQgdHlwZSkKKy0Jewor LQlyZXR1cm4oaW5pdF9zZXJ2ZXJfbG9uZyhzb2NrLCBwb3J0LCBOVUxMLCB0eXBlKSk7CisrCWlm IChzID09IElOVkFMSURfU09DS0VUKSB7IHBlcnJvcigic29ja2V0Iik7IHJldHVybigwKTsgfQor KworKwlwZXJyb3IoZmFpbGVkX2NhbGwpOworKwlyZXR1cm4oMCk7CisgCX0KKyAKKyBzdGF0aWMg aW50IGRvX2FjY2VwdChpbnQgYWNjX3NvY2ssIGludCAqc29jaywgY2hhciAqKmhvc3QpCisgCXsK KysJc3RhdGljIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIGZyb207CisrCWNoYXIgYnVmZmVyW05J X01BWEhPU1RdOworIAlpbnQgcmV0OworLQlzdHJ1Y3QgaG9zdGVudCAqaDEsKmgyOworLQlzdGF0 aWMgc3RydWN0IHNvY2thZGRyX2luIGZyb207CisgCWludCBsZW47CisgLyoJc3RydWN0IGxpbmdl ciBsaW5nOyAqLworIAorQEAgLTQzMiwxMzUgKzQ1MSw1OCBAQCByZWRvaXQ6CisgKi8KKyAKKyAJ aWYgKGhvc3QgPT0gTlVMTCkgZ290byBlbmQ7CistI2lmbmRlZiBCSVRfRklFTERfTElNSVRTCist CS8qIEkgc2hvdWxkIHVzZSBXU0FBc3luY0dldEhvc3RCeU5hbWUoKSB1bmRlciB3aW5kb3dzICov CistCWgxPWdldGhvc3RieWFkZHIoKGNoYXIgKikmZnJvbS5zaW5fYWRkci5zX2FkZHIsCistCQlz aXplb2YoZnJvbS5zaW5fYWRkci5zX2FkZHIpLEFGX0lORVQpOworLSNlbHNlCistCWgxPWdldGhv c3RieWFkZHIoKGNoYXIgKikmZnJvbS5zaW5fYWRkciwKKy0JCXNpemVvZihzdHJ1Y3QgaW5fYWRk ciksQUZfSU5FVCk7CistI2VuZGlmCistCWlmIChoMSA9PSBOVUxMKQorKworKwlpZiAoZ2V0bmFt ZWluZm8oKHN0cnVjdCBzb2NrYWRkciAqKSZmcm9tLCBzaXplb2YoZnJvbSksCisrCQlidWZmZXIs IHNpemVvZihidWZmZXIpLAorKwkJTlVMTCwgMCwgMCkpCisgCQl7CistCQlCSU9fcHJpbnRmKGJp b19lcnIsImJhZCBnZXRob3N0YnlhZGRyXG4iKTsKKysJCUJJT19wcmludGYoYmlvX2VyciwiZ2V0 bmFtZWluZm8gZmFpbGVkXG4iKTsKKyAJCSpob3N0PU5VTEw7CisgCQkvKiByZXR1cm4oMCk7ICov CisgCQl9CisgCWVsc2UKKyAJCXsKKy0JCWlmICgoKmhvc3Q9KGNoYXIgKilPUEVOU1NMX21hbGxv YyhzdHJsZW4oaDEtPmhfbmFtZSkrMSkpID09IE5VTEwpCisrCQlpZiAoKCpob3N0PShjaGFyICop T1BFTlNTTF9tYWxsb2Moc3RybGVuKGJ1ZmZlcikrMSkpID09IE5VTEwpCisgCQkJeworIAkJCXBl cnJvcigiT1BFTlNTTF9tYWxsb2MiKTsKKyAJCQlyZXR1cm4oMCk7CisgCQkJfQorLQkJQlVGX3N0 cmxjcHkoKmhvc3QsaDEtPmhfbmFtZSxzdHJsZW4oaDEtPmhfbmFtZSkrMSk7CistCistCQloMj1H ZXRIb3N0QnlOYW1lKCpob3N0KTsKKy0JCWlmIChoMiA9PSBOVUxMKQorLQkJCXsKKy0JCQlCSU9f cHJpbnRmKGJpb19lcnIsImdldGhvc3RieW5hbWUgZmFpbHVyZVxuIik7CistCQkJcmV0dXJuKDAp OworLQkJCX0KKy0JCWlmIChoMi0+aF9hZGRydHlwZSAhPSBBRl9JTkVUKQorLQkJCXsKKy0JCQlC SU9fcHJpbnRmKGJpb19lcnIsImdldGhvc3RieW5hbWUgYWRkciBpcyBub3QgQUZfSU5FVFxuIik7 CistCQkJcmV0dXJuKDApOworLQkJCX0KKysJCXN0cmNweSgqaG9zdCwgYnVmZmVyKTsKKyAJCX0K KyBlbmQ6CisgCSpzb2NrPXJldDsKKyAJcmV0dXJuKDEpOworIAl9CisgCistaW50IGV4dHJhY3Rf aG9zdF9wb3J0KGNoYXIgKnN0ciwgY2hhciAqKmhvc3RfcHRyLCB1bnNpZ25lZCBjaGFyICppcCwK Ky0JICAgICBzaG9ydCAqcG9ydF9wdHIpCisraW50IGV4dHJhY3RfaG9zdF9wb3J0KGNoYXIgKnN0 ciwgY2hhciAqKmhvc3RfcHRyLCAKKysJICAgICBjaGFyICoqcG9ydF9wdHIpCisgCXsKKy0JY2hh ciAqaCwqcDsKKysJY2hhciAqaCwqcCwqeDsKKyAKKy0JaD1zdHI7CistCXA9c3RyY2hyKHN0ciwn OicpOworKwl4PWg9c3RyOworKwlpZiAoKmggPT0gJ1snKQorKwkJeworKwkJaCsrOworKwkJcD1z dHJjaHIoaCwnXScpOworIAlpZiAocCA9PSBOVUxMKQorIAkJeworLQkJQklPX3ByaW50ZihiaW9f ZXJyLCJubyBwb3J0IGRlZmluZWRcbiIpOworKwkJCUJJT19wcmludGYoYmlvX2Vyciwibm8gZW5k aW5nIGJyYWNrZXQgZm9yIElQdjYgYWRkcmVzc1xuIik7CisgCQlyZXR1cm4oMCk7CisgCQl9Cisg CSoocCsrKT0nXDAnOworLQorLQlpZiAoKGlwICE9IE5VTEwpICYmICFob3N0X2lwKHN0cixpcCkp CistCQlnb3RvIGVycjsKKy0JaWYgKGhvc3RfcHRyICE9IE5VTEwpICpob3N0X3B0cj1oOworLQor LQlpZiAoIWV4dHJhY3RfcG9ydChwLHBvcnRfcHRyKSkKKy0JCWdvdG8gZXJyOworLQlyZXR1cm4o MSk7CistZXJyOgorLQlyZXR1cm4oMCk7CisrCQl4ID0gcDsKKyAJfQorLQorLXN0YXRpYyBpbnQg aG9zdF9pcChjaGFyICpzdHIsIHVuc2lnbmVkIGNoYXIgaXBbNF0pCistCXsKKy0JdW5zaWduZWQg aW50IGluWzRdOyAKKy0JaW50IGk7CistCistCWlmIChzc2NhbmYoc3RyLCIldS4ldS4ldS4ldSIs JihpblswXSksJihpblsxXSksJihpblsyXSksJihpblszXSkpID09IDQpCistCQl7CistCQlmb3Ig KGk9MDsgaTw0OyBpKyspCistCQkJaWYgKGluW2ldID4gMjU1KQorLQkJCQl7CistCQkJCUJJT19w cmludGYoYmlvX2VyciwiaW52YWxpZCBJUCBhZGRyZXNzXG4iKTsKKy0JCQkJZ290byBlcnI7Cist CQkJCX0KKy0JCWlwWzBdPWluWzBdOworLQkJaXBbMV09aW5bMV07CistCQlpcFsyXT1pblsyXTsK Ky0JCWlwWzNdPWluWzNdOworLQkJfQorLQllbHNlCistCQl7IC8qIGRvIGEgZ2V0aG9zdGJ5bmFt ZSAqLworLQkJc3RydWN0IGhvc3RlbnQgKmhlOworLQorLQkJaWYgKCFzc2xfc29ja19pbml0KCkp IHJldHVybigwKTsKKy0KKy0JCWhlPUdldEhvc3RCeU5hbWUoc3RyKTsKKy0JCWlmIChoZSA9PSBO VUxMKQorLQkJCXsKKy0JCQlCSU9fcHJpbnRmKGJpb19lcnIsImdldGhvc3RieW5hbWUgZmFpbHVy ZVxuIik7CistCQkJZ290byBlcnI7CistCQkJfQorLQkJLyogY2FzdCB0byBzaG9ydCBiZWNhdXNl IG9mIHdpbjE2IHdpbnNvY2sgZGVmaW5pdGlvbiAqLworLQkJaWYgKChzaG9ydCloZS0+aF9hZGRy dHlwZSAhPSBBRl9JTkVUKQorKwlwPXN0cmNocih4LCc6Jyk7CisrCWlmIChwID09IE5VTEwpCisg CQkJeworLQkJCUJJT19wcmludGYoYmlvX2VyciwiZ2V0aG9zdGJ5bmFtZSBhZGRyIGlzIG5vdCBB Rl9JTkVUXG4iKTsKKy0JCQlyZXR1cm4oMCk7CistCQkJfQorLQkJaXBbMF09aGUtPmhfYWRkcl9s aXN0WzBdWzBdOworLQkJaXBbMV09aGUtPmhfYWRkcl9saXN0WzBdWzFdOworLQkJaXBbMl09aGUt PmhfYWRkcl9saXN0WzBdWzJdOworLQkJaXBbM109aGUtPmhfYWRkcl9saXN0WzBdWzNdOworLQkJ fQorLQlyZXR1cm4oMSk7CistZXJyOgorKwkJQklPX3ByaW50ZihiaW9fZXJyLCJubyBwb3J0IGRl ZmluZWRcbiIpOworIAlyZXR1cm4oMCk7CisgCX0KKysJKihwKyspPSdcMCc7CisgCistaW50IGV4 dHJhY3RfcG9ydChjaGFyICpzdHIsIHNob3J0ICpwb3J0X3B0cikKKy0JeworLQlpbnQgaTsKKy0J c3RydWN0IHNlcnZlbnQgKnM7CisrCWlmIChob3N0X3B0ciAhPSBOVUxMKSAqaG9zdF9wdHI9aDsK KysJaWYgKHBvcnRfcHRyICE9IE5VTEwpICpwb3J0X3B0cj1wOworIAorLQlpPWF0b2koc3RyKTsK Ky0JaWYgKGkgIT0gMCkKKy0JCSpwb3J0X3B0cj0odW5zaWduZWQgc2hvcnQpaTsKKy0JZWxzZQor LQkJeworLQkJcz1nZXRzZXJ2YnluYW1lKHN0ciwidGNwIik7CistCQlpZiAocyA9PSBOVUxMKQor LQkJCXsKKy0JCQlCSU9fcHJpbnRmKGJpb19lcnIsImdldHNlcnZieW5hbWUgZmFpbHVyZSBmb3Ig JXNcbiIsc3RyKTsKKy0JCQlyZXR1cm4oMCk7CistCQkJfQorLQkJKnBvcnRfcHRyPW50b2hzKCh1 bnNpZ25lZCBzaG9ydClzLT5zX3BvcnQpOworLQkJfQorIAlyZXR1cm4oMSk7CisgCX0KKyAKCmRp ZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4wYi12ZXJzaW9uLnBhdGNoIGIvb3BlbnNzbC0xLjAuMGIt dmVyc2lvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGI2YWI2 Ci0tLSAvZGV2L251bGwKKysrIGIvb3BlbnNzbC0xLjAuMGItdmVyc2lvbi5wYXRjaApAQCAtMCww ICsxLDIyIEBACitkaWZmIC11cCBvcGVuc3NsLTEuMC4wYi9jcnlwdG8vb3BlbnNzbHYuaC52ZXJz aW9uIG9wZW5zc2wtMS4wLjBiL2NyeXB0by9vcGVuc3Nsdi5oCistLS0gb3BlbnNzbC0xLjAuMGIv Y3J5cHRvL29wZW5zc2x2LmgudmVyc2lvbgkyMDEwLTExLTE2IDE3OjMxOjIzLjAwMDAwMDAwMCAr MDEwMAorKysrIG9wZW5zc2wtMS4wLjBiL2NyeXB0by9vcGVuc3Nsdi5oCTIwMTAtMTEtMTYgMTc6 MzI6NTkuMDAwMDAwMDAwICswMTAwCitAQCAtMjUsNyArMjUsOCBAQAorICAqIChQcmlvciB0byAw LjkuNWEgYmV0YTEsIGEgZGlmZmVyZW50IHNjaGVtZSB3YXMgdXNlZDogTU1OTkZGUkJCIGZvcgor ICAqICBtYWpvciBtaW5vciBmaXggZmluYWwgcGF0Y2gvYmV0YSkKKyAgKi8KKy0jZGVmaW5lIE9Q RU5TU0xfVkVSU0lPTl9OVU1CRVIJMHgxMDAwMDAyZgorKy8qIHdlIGhhdmUgdG8ga2VlcCB0aGUg dmVyc2lvbiBudW1iZXIgdG8gbm90IGJyZWFrIHRoZSBhYmkgKi8KKysjZGVmaW5lIE9QRU5TU0xf VkVSU0lPTl9OVU1CRVIJMHgxMDAwMDAwMworICNpZmRlZiBPUEVOU1NMX0ZJUFMKKyAjZGVmaW5l IE9QRU5TU0xfVkVSU0lPTl9URVhUCSJPcGVuU1NMIDEuMC4wYi1maXBzIDE2IE5vdiAyMDEwIgor ICNlbHNlCitAQCAtODMsNyArODQsNyBAQAorICAqIHNob3VsZCBvbmx5IGtlZXAgdGhlIHZlcnNp b25zIHRoYXQgYXJlIGJpbmFyeSBjb21wYXRpYmxlIHdpdGggdGhlIGN1cnJlbnQuCisgICovCisg I2RlZmluZSBTSExJQl9WRVJTSU9OX0hJU1RPUlkgIiIKKy0jZGVmaW5lIFNITElCX1ZFUlNJT05f TlVNQkVSICIxLjAuMCIKKysjZGVmaW5lIFNITElCX1ZFUlNJT05fTlVNQkVSICIxLjAuMGIiCisg CisgCisgI2VuZGlmIC8qIEhFQURFUl9PUEVOU1NMVl9IICovCgpkaWZmIC0tZ2l0IGEvb3BlbnNz bC5zcGVjIGIvb3BlbnNzbC5zcGVjCmluZGV4IGJkMjY4YzIuLjhlNGE5ZGUgMTAwNjQ0Ci0tLSBh L29wZW5zc2wuc3BlYworKysgYi9vcGVuc3NsLnNwZWMKQEAgLTIwLDcgKzIwLDcgQEAKIAogU3Vt bWFyeTogQSBnZW5lcmFsIHB1cnBvc2UgY3J5cHRvZ3JhcGh5IGxpYnJhcnkgd2l0aCBUTFMgaW1w bGVtZW50YXRpb24KIE5hbWU6IG9wZW5zc2wKLVZlcnNpb246IDEuMC4wYQorVmVyc2lvbjogMS4w LjBiCiBSZWxlYXNlOiAxJXs/ZGlzdH0KICMgV2UgcmVtb3ZlIGNlcnRhaW4gcGF0ZW50ZWQgYWxn b3JpdGhtcyBmcm9tIHRoZSBvcGVuc3NsIHNvdXJjZSB0YXJiYWxsCiAjIHdpdGggdGhlIGhvYmJs ZS1vcGVuc3NsIHNjcmlwdCB3aGljaCBpcyBpbmNsdWRlZCBiZWxvdy4KQEAgLTQzLDEzICs0Mywx NCBAQCBQYXRjaDc6IG9wZW5zc2wtMS4wLjAtdGltZXpvbmUucGF0Y2gKICMgQnVnIGZpeGVzCiBQ YXRjaDIzOiBvcGVuc3NsLTEuMC4wLWJldGE0LWRlZmF1bHQtcGF0aHMucGF0Y2gKIFBhdGNoMjQ6 IG9wZW5zc2wtMC45LjhqLWJhZC1taW1lLnBhdGNoCitQYXRjaDI1OiBvcGVuc3NsLTEuMC4wYS1t YW5maXgucGF0Y2gKICMgRnVuY3Rpb25hbGl0eSBjaGFuZ2VzCiBQYXRjaDMyOiBvcGVuc3NsLTAu OS44Zy1pYTY0LnBhdGNoCiBQYXRjaDMzOiBvcGVuc3NsLTEuMC4wLWJldGE0LWNhLWRpci5wYXRj aAogUGF0Y2gzNDogb3BlbnNzbC0wLjkuNi14NTA5LnBhdGNoCiBQYXRjaDM1OiBvcGVuc3NsLTAu OS44ai12ZXJzaW9uLWFkZC1lbmdpbmVzLnBhdGNoCiBQYXRjaDM4OiBvcGVuc3NsLTEuMC4wLWJl dGE1LWNpcGhlci1jaGFuZ2UucGF0Y2gKLVBhdGNoMzk6IG9wZW5zc2wtMS4wLjAtYmV0YTUtaXB2 Ni1hcHBzLnBhdGNoCitQYXRjaDM5OiBvcGVuc3NsLTEuMC4wYi1pcHY2LWFwcHMucGF0Y2gKIFBh dGNoNDA6IG9wZW5zc2wtMS4wLjBhLWZpcHMucGF0Y2gKIFBhdGNoNDE6IG9wZW5zc2wtMS4wLjAt YmV0YTMtZmlwc2NoZWNrLnBhdGNoCiBQYXRjaDQzOiBvcGVuc3NsLTEuMC4wYS1maXBzbW9kZS5w YXRjaApAQCAtNTgsOCArNTksOCBAQCBQYXRjaDQ1OiBvcGVuc3NsLTAuOS44ai1lbnYtbm96bGli LnBhdGNoCiBQYXRjaDQ3OiBvcGVuc3NsLTEuMC4wLWJldGE1LXJlYWRtZS13YXJuaW5nLnBhdGNo CiBQYXRjaDQ5OiBvcGVuc3NsLTEuMC4wLWJldGE0LWFsZ28tZG9jLnBhdGNoCiBQYXRjaDUwOiBv cGVuc3NsLTEuMC4wLWJldGE0LWR0bHMxLWFiaS5wYXRjaAotUGF0Y2g1MTogb3BlbnNzbC0xLjAu MGEtdmVyc2lvbi5wYXRjaAotUGF0Y2g1Mjogb3BlbnNzbC0xLjAuMC1iZXRhNC1hZXNuaS5wYXRj aAorUGF0Y2g1MTogb3BlbnNzbC0xLjAuMGItdmVyc2lvbi5wYXRjaAorUGF0Y2g1Mjogb3BlbnNz bC0xLjAuMGItYWVzbmkucGF0Y2gKIFBhdGNoNTM6IG9wZW5zc2wtMS4wLjAtbmFtZS1oYXNoLnBh dGNoCiAjIEJhY2twb3J0ZWQgZml4ZXMgaW5jbHVkaW5nIHNlY3VyaXR5IGZpeGVzCiAKQEAgLTEy NCw2ICsxMjUsNyBAQCBmcm9tIG90aGVyIGZvcm1hdHMgdG8gdGhlIGZvcm1hdHMgdXNlZCBieSB0 aGUgT3BlblNTTCB0b29sa2l0LgogCiAlcGF0Y2gyMyAtcDEgLWIgLmRlZmF1bHQtcGF0aHMKICVw YXRjaDI0IC1wMSAtYiAuYmFkLW1pbWUKKyVwYXRjaDI1IC1wMSAtYiAubWFuZml4CiAKICVwYXRj aDMyIC1wMSAtYiAuaWE2NAogJXBhdGNoMzMgLXAxIC1iIC5jYS1kaXIKQEAgLTIyOCw4ICsyMzAs OCBAQCBtYWtlIC1DIHRlc3QgYXBwcyB0ZXN0cwogICAgICV7P19fZGVidWdfcGFja2FnZTole19f ZGVidWdfaW5zdGFsbF9wb3N0fX0gXAogICAgICV7X19hcmNoX2luc3RhbGxfcG9zdH0gXAogICAg ICV7X19vc19pbnN0YWxsX3Bvc3R9IFwKLSAgICBjcnlwdG8vZmlwcy9maXBzX3N0YW5kYWxvbmVf c2hhMSAkUlBNX0JVSUxEX1JPT1Qle19saWJkaXJ9L2xpYmNyeXB0by5zby4le3ZlcnNpb259ID4k UlBNX0JVSUxEX1JPT1Qle19saWJkaXJ9Ly5saWJjcnlwdG8uc28uJXt2ZXJzaW9ufS5obWFjIFwK LSAgICBsbiAtc2YgLmxpYmNyeXB0by5zby4le3ZlcnNpb259LmhtYWMgJFJQTV9CVUlMRF9ST09U JXtfbGliZGlyfS8ubGliY3J5cHRvLnNvLiV7c292ZXJzaW9ufS5obWFjIFwKKyAgICBjcnlwdG8v Zmlwcy9maXBzX3N0YW5kYWxvbmVfc2hhMSAkUlBNX0JVSUxEX1JPT1QvJXtfbGlifS9saWJjcnlw dG8uc28uJXt2ZXJzaW9ufSA+JFJQTV9CVUlMRF9ST09ULyV7X2xpYn0vLmxpYmNyeXB0by5zby4l e3ZlcnNpb259LmhtYWMgXAorICAgIGxuIC1zZiAubGliY3J5cHRvLnNvLiV7dmVyc2lvbn0uaG1h YyAkUlBNX0JVSUxEX1JPT1QvJXtfbGlifS8ubGliY3J5cHRvLnNvLiV7c292ZXJzaW9ufS5obWFj IFwKICAgICBjcnlwdG8vZmlwcy9maXBzX3N0YW5kYWxvbmVfc2hhMSAkUlBNX0JVSUxEX1JPT1Ql e19saWJkaXJ9L2xpYnNzbC5zby4le3ZlcnNpb259ID4kUlBNX0JVSUxEX1JPT1Qle19saWJkaXJ9 Ly5saWJzc2wuc28uJXt2ZXJzaW9ufS5obWFjIFwKICAgICBsbiAtc2YgLmxpYnNzbC5zby4le3Zl cnNpb259LmhtYWMgJFJQTV9CVUlMRF9ST09UJXtfbGliZGlyfS8ubGlic3NsLnNvLiV7c292ZXJz aW9ufS5obWFjIFwKICV7bmlsfQpAQCAtMjQ0LDExICsyNDYsMTcgQEAgbXYgJFJQTV9CVUlMRF9S T09UJXtfbGliZGlyfS9lbmdpbmVzICRSUE1fQlVJTERfUk9PVCV7X2xpYmRpcn0vb3BlbnNzbAog bXYgJFJQTV9CVUlMRF9ST09UJXtfc3lzY29uZmRpcn0vcGtpL3Rscy9tYW4vKiAkUlBNX0JVSUxE X1JPT1Qle19tYW5kaXJ9Lwogcm1kaXIgJFJQTV9CVUlMRF9ST09UJXtfc3lzY29uZmRpcn0vcGtp L3Rscy9tYW4KIHJlbmFtZSBzby4le3NvdmVyc2lvbn0gc28uJXt2ZXJzaW9ufSAkUlBNX0JVSUxE X1JPT1Qle19saWJkaXJ9Lyouc28uJXtzb3ZlcnNpb259Citta2RpciAkUlBNX0JVSUxEX1JPT1Qv JXtfbGlifQorbXYgJFJQTV9CVUlMRF9ST09UJXtfbGliZGlyfS9saWJjcnlwdG8uc28uJXt2ZXJz aW9ufSAkUlBNX0JVSUxEX1JPT1QvJXtfbGlifQogZm9yIGxpYiBpbiAkUlBNX0JVSUxEX1JPT1Ql e19saWJkaXJ9Lyouc28uJXt2ZXJzaW9ufSA7IGRvCiAJY2htb2QgNzU1ICR7bGlifQogCWxuIC1z IC1mIGBiYXNlbmFtZSAke2xpYn1gICRSUE1fQlVJTERfUk9PVCV7X2xpYmRpcn0vYGJhc2VuYW1l ICR7bGlifSAuJXt2ZXJzaW9ufWAKIAlsbiAtcyAtZiBgYmFzZW5hbWUgJHtsaWJ9YCAkUlBNX0JV SUxEX1JPT1Qle19saWJkaXJ9L2BiYXNlbmFtZSAke2xpYn0gLiV7dmVyc2lvbn1gLiV7c292ZXJz aW9ufQotCitkb25lCitmb3IgbGliIGluICRSUE1fQlVJTERfUk9PVC8le19saWJ9Lyouc28uJXt2 ZXJzaW9ufSA7IGRvCisJY2htb2QgNzU1ICR7bGlifQorCWxuIC1zIC1mIC4uLy4uLyV7X2xpYn0v YGJhc2VuYW1lICR7bGlifWAgJFJQTV9CVUlMRF9ST09UJXtfbGliZGlyfS9gYmFzZW5hbWUgJHts aWJ9IC4le3ZlcnNpb259YAorCWxuIC1zIC1mIGBiYXNlbmFtZSAke2xpYn1gICRSUE1fQlVJTERf Uk9PVC8le19saWJ9L2BiYXNlbmFtZSAke2xpYn0gLiV7dmVyc2lvbn1gLiV7c292ZXJzaW9ufQog ZG9uZQogCiAjIEluc3RhbGwgYSBtYWtlZmlsZSBmb3IgZ2VuZXJhdGluZyBrZXlzIGFuZCBzZWxm LXNpZ25lZCBjZXJ0cywgYW5kIGEgc2NyaXB0CkBAIC0zNTEsOSArMzU5LDExIEBAIHJtIC1yZiAk UlBNX0JVSUxEX1JPT1QvJXtfbGliZGlyfS9maXBzY2FuaXN0ZXIuKgogJWNvbmZpZyhub3JlcGxh Y2UpICV7X3N5c2NvbmZkaXJ9L3BraS90bHMvb3BlbnNzbC5jbmYKIAogJWF0dHIoMDc1NSxyb290 LHJvb3QpICV7X2JpbmRpcn0vb3BlbnNzbAotJWF0dHIoMDc1NSxyb290LHJvb3QpICV7X2xpYmRp cn0vKi5zby4le3ZlcnNpb259Ci0lYXR0cigwNzU1LHJvb3Qscm9vdCkgJXtfbGliZGlyfS8qLnNv LiV7c292ZXJzaW9ufQotJWF0dHIoMDY0NCxyb290LHJvb3QpICV7X2xpYmRpcn0vLmxpYmNyeXB0 by5zby4qLmhtYWMKKyVhdHRyKDA3NTUscm9vdCxyb290KSAvJXtfbGlifS9saWJjcnlwdG8uc28u JXt2ZXJzaW9ufQorJWF0dHIoMDc1NSxyb290LHJvb3QpIC8le19saWJ9L2xpYmNyeXB0by5zby4l e3NvdmVyc2lvbn0KKyVhdHRyKDA3NTUscm9vdCxyb290KSAle19saWJkaXJ9L2xpYnNzbC5zby4l e3ZlcnNpb259CislYXR0cigwNzU1LHJvb3Qscm9vdCkgJXtfbGliZGlyfS9saWJzc2wuc28uJXtz b3ZlcnNpb259CislYXR0cigwNjQ0LHJvb3Qscm9vdCkgLyV7X2xpYn0vLmxpYmNyeXB0by5zby4q LmhtYWMKICVhdHRyKDA2NDQscm9vdCxyb290KSAle19saWJkaXJ9Ly5saWJzc2wuc28uKi5obWFj CiAlYXR0cigwNzU1LHJvb3Qscm9vdCkgJXtfbGliZGlyfS9vcGVuc3NsCiAlYXR0cigwNjQ0LHJv b3Qscm9vdCkgJXtfbWFuZGlyfS9tYW4xKi9bQUJELVphYmNkLXpdKgpAQCAtMzgzLDYgKzM5Mywx NSBAQCBybSAtcmYgJFJQTV9CVUlMRF9ST09ULyV7X2xpYmRpcn0vZmlwc2NhbmlzdGVyLioKICVw b3N0dW4gLXAgL3NiaW4vbGRjb25maWcKIAogJWNoYW5nZWxvZworKiBUdWUgTm92IDE2IDIwMTAg VG9tYXMgTXJheiA8dG1yYXpAcmVkaGF0LmNvbT4gMS4wLjBiLTEKKy0gbmV3IHVwc3RyZWFtIHZl cnNpb24gZml4aW5nIENWRS0yMDEwLTM4NjQgKCM2NDkzMDQpCisKKyogVHVlIFNlcCAgNyAyMDEw IFRvbWFzIE1yYXogPHRtcmF6QHJlZGhhdC5jb20+IDEuMC4wYS0zCistIG1ha2UgU0hMSUJfVkVS U0lPTiByZWZsZWN0IHRoZSBsaWJyYXJ5IHN1ZmZpeAorCisqIFdlZCBKdW4gMzAgMjAxMCBUb21h cyBNcmF6IDx0bXJhekByZWRoYXQuY29tPiAxLjAuMGEtMgorLSBvcGVuc3NsIG1hbiBwYWdlIGZp eCAoIzYwOTQ4NCkKKwogKiBGcmkgSnVuICA0IDIwMTAgVG9tYXMgTXJheiA8dG1yYXpAcmVkaGF0 LmNvbT4gMS4wLjBhLTEKIC0gbmV3IHVwc3RyZWFtIHBhdGNoIHJlbGVhc2UsIGZpeGVzIENWRS0y MDEwLTA3NDIgKCM1OTg3MzgpCiAgIGFuZCBDVkUtMjAxMC0xNjMzICgjNTk4NzMyKQpAQCAtMzky LDcgKzQxMSw2IEBAIHJtIC1yZiAkUlBNX0JVSUxEX1JPT1QvJXtfbGliZGlyfS9maXBzY2FuaXN0 ZXIuKgogCiAqIFR1ZSBNYXkgMTggMjAxMCBUb21hcyBNcmF6IDx0bXJhekByZWRoYXQuY29tPiAx LjAuMC00CiAtIG1ha2UgQ0EgZGlyIHJlYWRhYmxlIC0gdGhlIHByaXZhdGUga2V5cyBhcmUgaW4g cHJpdmF0ZSBzdWJkaXIgKCM1ODQ4MTApCi0tIGRvIG5vdCBtb3ZlIHRoZSBsaWJjcnlwdG8gdG8g L2xpYiBpbiB0aGUgRjEyIHBhY2thZ2UKIAogKiBGcmkgQXByICA5IDIwMTAgVG9tYXMgTXJheiA8 dG1yYXpAcmVkaGF0LmNvbT4gMS4wLjAtMwogLSBhIGZldyBmaXhlcyBmcm9tIHVwc3RyZWFtIENW UwoKZGlmZiAtLWdpdCBhL3NvdXJjZXMgYi9zb3VyY2VzCmluZGV4IGY0MmI2OGQuLmUzMTQyOWQg MTAwNjQ0Ci0tLSBhL3NvdXJjZXMKKysrIGIvc291cmNlcwpAQCAtMSArMSBAQAotMzZhOTkzNmUx NzkxNTY2YjIwNWRhYTdjYjRiZWEwNzQgIG9wZW5zc2wtMS4wLjBhLXVzYS50YXIuYnoyCiswZWZl YzViOWM4ZmMxMDM1NmY0ZDUyNzMyZjkxZjhlYSAgb3BlbnNzbC0xLjAuMGItdXNhLnRhci5iejIK CmRpZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIvLmdpdGlnbm9yZQppbmRleCBmNDYyM2Q3Li43ZTll MjRlIDEwMDY0NAotLS0gYS8uZ2l0aWdub3JlCisrKyBiLy5naXRpZ25vcmUKQEAgLTEgKzEsMiBA QAogb3BlbnNzbC0xLjAuMGEtdXNhLnRhci5iejIKKy9vcGVuc3NsLTEuMC4wYi11c2EudGFyLmJ6 MgoKZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4wLjAtYmV0YTQtYWVzbmkucGF0Y2ggYi9vcGVuc3Ns LTEuMC4wLWJldGE0LWFlc25pLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBm NTc5MThiLi4wMDAwMDAwCi0tLSBhL29wZW5zc2wtMS4wLjAtYmV0YTQtYWVzbmkucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSwyMzg4ICswLDAgQEAKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjAtYmV0 YTQvQ29uZmlndXJlLmFlc25pIG9wZW5zc2wtMS4wLjAtYmV0YTQvQ29uZmlndXJlCi0tLS0gb3Bl bnNzbC0xLjAuMC1iZXRhNC9Db25maWd1cmUuYWVzbmkJMjAxMC0wMS0wNyAyMzozODozMS4wMDAw MDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4wLWJldGE0L0NvbmZpZ3VyZQkyMDEwLTAxLTEy IDIyOjE4OjA2LjAwMDAwMDAwMCArMDEwMAotQEAgLTEyMywxMSArMTIzLDExIEBAIG15ICR0bGli PSItbG5zbCAtbHNvY2tldCI7Ci0gbXkgJGJpdHMxPSJUSElSVFlfVFdPX0JJVCAiOwotIG15ICRi aXRzMj0iU0lYVFlfRk9VUl9CSVQgIjsKLSAKLS1teSAkeDg2X2FzbT0ieDg2Y3B1aWQubzpibi01 ODYubyBjby01ODYubyB4ODYtbW9udC5vOmRlcy01ODYubyBjcnlwdDU4Ni5vOmFlcy01ODYubzpi Zi01ODYubzptZDUtNTg2Lm86c2hhMS01ODYubyBzaGEyNTYtNTg2Lm8gc2hhNTEyLTU4Ni5vOmNh c3QtNTg2Lm86cmM0LTU4Ni5vOnJtZC01ODYubzpyYzUtNTg2Lm86d3BfYmxvY2subyB3cC1tbXgu bzpjbWxsLXg4Ni5vIjsKLStteSAkeDg2X2FzbT0ieDg2Y3B1aWQubzpibi01ODYubyBjby01ODYu byB4ODYtbW9udC5vOmRlcy01ODYubyBjcnlwdDU4Ni5vOmFlcy01ODYubyBhZXNuaS14ODYubzpi Zi01ODYubzptZDUtNTg2Lm86c2hhMS01ODYubyBzaGEyNTYtNTg2Lm8gc2hhNTEyLTU4Ni5vOmNh c3QtNTg2Lm86cmM0LTU4Ni5vOnJtZC01ODYubzpyYzUtNTg2Lm86d3BfYmxvY2subyB3cC1tbXgu bzpjbWxsLXg4Ni5vIjsKLSAKLSBteSAkeDg2X2VsZl9hc209IiR4ODZfYXNtOmVsZiI7Ci0gCi0t bXkgJHg4Nl82NF9hc209Ing4Nl82NGNwdWlkLm86eDg2XzY0LWdjYy5vIHg4Nl82NC1tb250Lm86 OmFlcy14ODZfNjQubzo6bWQ1LXg4Nl82NC5vOnNoYTEteDg2XzY0Lm8gc2hhMjU2LXg4Nl82NC5v IHNoYTUxMi14ODZfNjQubzo6cmM0LXg4Nl82NC5vOjo6d3AteDg2XzY0Lm86Y21sbC14ODZfNjQu byBjbWxsX21pc2MubyI7Ci0rbXkgJHg4Nl82NF9hc209Ing4Nl82NGNwdWlkLm86eDg2XzY0LWdj Yy5vIHg4Nl82NC1tb250Lm86OmFlcy14ODZfNjQubyBhZXNuaS14ODZfNjQubzo6bWQ1LXg4Nl82 NC5vOnNoYTEteDg2XzY0Lm8gc2hhMjU2LXg4Nl82NC5vIHNoYTUxMi14ODZfNjQubzo6cmM0LXg4 Nl82NC5vOjo6d3AteDg2XzY0Lm86Y21sbC14ODZfNjQubyBjbWxsX21pc2MubyI7Ci0gbXkgJGlh NjRfYXNtPSJpYTY0Y3B1aWQubzpibi1pYTY0Lm86OmFlc19jb3JlLm8gYWVzX2NiYy5vIGFlcy1p YTY0Lm86Om1kNS1pYTY0Lm86c2hhMS1pYTY0Lm8gc2hhMjU2LWlhNjQubyBzaGE1MTItaWE2NC5v OjpyYzQtaWE2NC5vIHJjNF9za2V5Lm86Ojo6OnZvaWQiOwotIG15ICRzcGFyY3Y5X2FzbT0ic3Bh cmN2OWNhcC5vIHNwYXJjY3B1aWQubzpibi1zcGFyY3Y5Lm8gc3BhcmN2OS1tb250Lm8gc3BhcmN2 OWEtbW9udC5vOmRlc19lbmMtc3BhcmMubyBmY3J5cHRfYi5vOmFlc19jb3JlLm8gYWVzX2NiYy5v IGFlcy1zcGFyY3Y5Lm86OjpzaGExLXNwYXJjdjkubyBzaGEyNTYtc3BhcmN2OS5vIHNoYTUxMi1z cGFyY3Y5Lm86Ojo6Ojo6dm9pZCI7Ci0gbXkgJHNwYXJjdjhfYXNtPSI6c3BhcmN2OC5vOmRlc19l bmMtc3BhcmMubyBmY3J5cHRfYi5vOjo6Ojo6Ojo6Ojp2b2lkIjsKLUBAIC00OTEsNyArNDkxLDcg QEAgbXkgJXRhYmxlPSgKLSAjCi0gIyBXaW42NCB0YXJnZXRzLCBXSU42NEkgZGVub3RlcyBJQS02 NCBhbmQgV0lONjRBIC0gQU1ENjQKLSAiVkMtV0lONjRJIiwiY2w6LVczIC1HczAgLUd5IC1ub2xv Z28gLURPUEVOU1NMX1NZU05BTUVfV0lOMzIgLURXSU4zMl9MRUFOX0FORF9NRUFOIC1ETF9FTkRJ QU4gLURVTklDT0RFIC1EX1VOSUNPREUgLURfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU6OjpXSU42 NEk6OlNJWFRZX0ZPVVJfQklUIFJDNF9DSFVOS19MTCBERVNfSU5UIEVYUE9SVF9WQVJfQVNfRk46 aWE2NGNwdWlkLm86aWE2NC5vOjphZXNfY29yZS5vIGFlc19jYmMubyBhZXMtaWE2NC5vOjptZDUt aWE2NC5vOnNoYTEtaWE2NC5vIHNoYTI1Ni1pYTY0Lm8gc2hhNTEyLWlhNjQubzo6Ojo6OjppYXM6 d2luMzIiLAotLSJWQy1XSU42NEEiLCJjbDotVzMgLUdzMCAtR3kgLW5vbG9nbyAtRE9QRU5TU0xf U1lTTkFNRV9XSU4zMiAtRFdJTjMyX0xFQU5fQU5EX01FQU4gLURMX0VORElBTiAtRFVOSUNPREUg LURfVU5JQ09ERSAtRF9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTo6OldJTjY0QTo6U0lYVFlfRk9V Ul9CSVQgUkM0X0NIVU5LX0xMIERFU19JTlQgRVhQT1JUX1ZBUl9BU19GTjp4ODZfNjRjcHVpZC5v OmJuX2FzbS5vIHg4Nl82NC1tb250Lm86OmFlcy14ODZfNjQubzo6bWQ1LXg4Nl82NC5vOnNoYTEt eDg2XzY0Lm8gc2hhMjU2LXg4Nl82NC5vIHNoYTUxMi14ODZfNjQubzo6cmM0LXg4Nl82NC5vOjo6 d3AteDg2XzY0Lm86Y21sbC14ODZfNjQubyBjbWxsX21pc2MubzphdXRvOndpbjMyIiwKLSsiVkMt V0lONjRBIiwiY2w6LVczIC1HczAgLUd5IC1ub2xvZ28gLURPUEVOU1NMX1NZU05BTUVfV0lOMzIg LURXSU4zMl9MRUFOX0FORF9NRUFOIC1ETF9FTkRJQU4gLURVTklDT0RFIC1EX1VOSUNPREUgLURf Q1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU6OjpXSU42NEE6OlNJWFRZX0ZPVVJfQklUIFJDNF9DSFVO S19MTCBERVNfSU5UIEVYUE9SVF9WQVJfQVNfRk46eDg2XzY0Y3B1aWQubzpibl9hc20ubyB4ODZf NjQtbW9udC5vOjphZXMteDg2XzY0Lm8gYWVzbmkteDg2XzY0Lm86Om1kNS14ODZfNjQubzpzaGEx LXg4Nl82NC5vIHNoYTI1Ni14ODZfNjQubyBzaGE1MTIteDg2XzY0Lm86OnJjNC14ODZfNjQubzo6 OndwLXg4Nl82NC5vOmNtbGwteDg2XzY0Lm8gY21sbF9taXNjLm86YXV0bzp3aW4zMiIsCi0gIyB4 ODYgV2luMzIgdGFyZ2V0IGRlZmF1bHRzIHRvIEFOU0kgQVBJLCBpZiB5b3Ugd2FudCBVTklDT0RF LCBjb21wbGVtZW50Ci0gIyAncGVybCBDb25maWd1cmUgVkMtV0lOMzInIHdpdGggJy1EVU5JQ09E RSAtRF9VTklDT0RFJwotICJWQy1XSU4zMiIsImNsOi1XMyAtV1ggLUdzMCAtR0YgLUd5IC1ub2xv Z28gLURPUEVOU1NMX1NZU05BTUVfV0lOMzIgLURXSU4zMl9MRUFOX0FORF9NRUFOIC1ETF9FTkRJ QU4gLURfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU6OjpXSU4zMjo6Qk5fTExPTkcgUkM0X0lOREVY IEVYUE9SVF9WQVJfQVNfRk4gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2FzbX06d2luMzJuOndpbjMy IiwKLUBAIC0xNDEwLDYgKzE0MTAsNyBAQCBpZiAoJHJtZDE2MF9vYmogPX4gL1wubyQvKQotIGlm ICgkYWVzX29iaiA9fiAvXC5vJC8pCi0gCXsKLSAJJGNmbGFncy49IiAtREFFU19BU00iOwotKwkk YWVzX29iaiA9fiBzL1xzKmFlc25pXC14ODZcLm8vLyBpZiAoJG5vX3NzZTIpOwotIAl9Ci0gZWxz ZQl7Ci0gCSRhZXNfb2JqPSRhZXNfZW5jOwotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMC1iZXRhNC9j cnlwdG8vYWVzL2FzbS9hZXNuaS14ODYucGwuYWVzbmkgb3BlbnNzbC0xLjAuMC1iZXRhNC9jcnlw dG8vYWVzL2FzbS9hZXNuaS14ODYucGwKLS0tLSBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9h ZXMvYXNtL2Flc25pLXg4Ni5wbC5hZXNuaQkyMDEwLTAxLTEyIDIyOjE4OjA2LjAwMDAwMDAwMCAr MDEwMAotKysrIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2Flcy9hc20vYWVzbmkteDg2LnBs CTIwMTAtMDEtMTIgMjI6MTg6MDYuMDAwMDAwMDAwICswMTAwCi1AQCAtMCwwICsxLDc2NSBAQAot KyMhL3Vzci9iaW4vZW52IHBlcmwKLSsKLSsjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rIyBXcml0dGVuIGJ5IEFu ZHkgUG9seWFrb3YgPGFwcHJvQGZ5LmNoYWxtZXJzLnNlPiBmb3IgdGhlIE9wZW5TU0wKLSsjIHBy b2plY3QuIFRoZSBtb2R1bGUgaXMsIGhvd2V2ZXIsIGR1YWwgbGljZW5zZWQgdW5kZXIgT3BlblNT TCBhbmQKLSsjIENSWVBUT0dBTVMgbGljZW5zZXMgZGVwZW5kaW5nIG9uIHdoZXJlIHlvdSBvYnRh aW4gaXQuIEZvciBmdXJ0aGVyCi0rIyBkZXRhaWxzIHNlZSBodHRwOi8vd3d3Lm9wZW5zc2wub3Jn L35hcHByby9jcnlwdG9nYW1zLy4KLSsjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rIwotKyMgVGhpcyBtb2R1bGUg aW1wbGVtZW50cyBzdXBwb3J0IGZvciBJbnRlbCBBRVMtTkkgZXh0ZW5zaW9uLiBJbgotKyMgT3Bl blNTTCBjb250ZXh0IGl0J3MgdXNlZCB3aXRoIEludGVsIGVuZ2luZSwgYnV0IGNhbiBhbHNvIGJl IHVzZWQgYXMKLSsjIGRyb3AtaW4gcmVwbGFjZW1lbnQgZm9yIGNyeXB0by9hZXMvYXNtL2Flcy01 ODYucGwgW3NlZSBiZWxvdyBmb3IKLSsjIGRldGFpbHNdLgotKwotKyRQUkVGSVg9ImFlc25pIjsJ IyBpZiAkUFJFRklYIGlzIHNldCB0byAiQUVTIiwgdGhlIHNjcmlwdAotKwkJCSMgZ2VuZXJhdGVz IGRyb3AtaW4gcmVwbGFjZW1lbnQgZm9yCi0rCQkJIyBjcnlwdG8vYWVzL2FzbS9hZXMtNTg2LnBs Oi0pCi0rCi0rJDAgPX4gbS8oLipbXC9cXF0pW15cL1xcXSskLzsgJGRpcj0kMTsKLStwdXNoKEBJ TkMsIiR7ZGlyfSIsIiR7ZGlyfS4uLy4uL3Blcmxhc20iKTsKLStyZXF1aXJlICJ4ODZhc20ucGwi OwotKwotKyZhc21faW5pdCgkQVJHVlswXSwkMCk7Ci0rCi0rJG1vdmVrZXkgPSBldmFsKCRSUkVG SVggZXEgImFzZW5pIiA/ICIqbW92YXBzIiA6ICIqbW92dXBzIik7Ci0rCi0rJGxlbj0iZWF4IjsK LSskcm91bmRzPSJlY3giOwotKyRrZXk9ImVkeCI7Ci0rJGlucD0iZXNpIjsKLSskb3V0PSJlZGki OwotKyRyb3VuZHNfPSJlYngiOwkjIGJhY2t1cCBjb3B5IGZvciAkcm91bmRzCi0rJGtleV89ImVi cCI7CSMgYmFja3VwIGNvcHkgZm9yICRrZXkKLSsKLSskaW5vdXQwPSJ4bW0wIjsKLSskaW5vdXQx PSJ4bW0xIjsKLSskaW5vdXQyPSJ4bW0yIjsKLSskcm5ka2V5MD0ieG1tMyI7Ci0rJHJuZGtleTE9 InhtbTQiOwotKyRpdmVjPSJ4bW01IjsKLSskaW4wPSJ4bW02IjsKLSskaW4xPSJ4bW03IjsJJGlu b3V0Mz0ieG1tNyI7Ci0rCi0rIyBJbmxpbmUgdmVyc2lvbiBvZiBpbnRlcm5hbCBhZXNuaV9bZW58 ZGVdY3J5cHQxCi0rc3ViIGFlc25pX2lubGluZV9nZW5lcmF0ZTEKLSt7IG15ICRwPXNoaWZ0Owot KwotKyAgICAmJG1vdmVrZXkJCSgkcm5ka2V5MCwmUVdQKDAsJGtleSkpOwotKyAgICAmJG1vdmVr ZXkJCSgkcm5ka2V5MSwmUVdQKDE2LCRrZXkpKTsKLSsgICAgJmxlYQkJKCRrZXksJkRXUCgzMiwk a2V5KSk7Ci0rICAgICZweG9yCQkoJGlub3V0MCwkcm5ka2V5MCk7Ci0rICAgICZzZXRfbGFiZWwo IiR7cH0xX2xvb3AiKTsKLSsJZXZhbCImYWVzJHtwfQkoJGlub3V0MCwkcm5ka2V5MSkiOwotKwkm ZGVjCQkoJHJvdW5kcyk7Ci0rCSYkbW92ZWtleQkoJHJuZGtleTEsJlFXUCgwLCRrZXkpKTsKLSsJ JmxlYQkJKCRrZXksJkRXUCgxNiwka2V5KSk7Ci0rICAgICZqbnoJCSgmbGFiZWwoIiR7cH0xX2xv b3AiKSk7Ci0rICAgIGV2YWwiJmFlcyR7cH1sYXN0CSgkaW5vdXQwLCRybmRrZXkxKSI7Ci0rfQot KwotK3N1YiBhZXNuaV9nZW5lcmF0ZTEJIyBmdWxseSB1bnJvbGxlZCBsb29wCi0reyBteSAkcD1z aGlmdDsKLSsKLSsgICAgJmZ1bmN0aW9uX2JlZ2luX0IoIl9hZXNuaV8ke3B9cnlwdDEiKTsKLSsJ JiRtb3Zla2V5CSgkcm5ka2V5MCwmUVdQKDAsJGtleSkpOwotKwkmJG1vdmVrZXkJKCRybmRrZXkx LCZRV1AoMHgxMCwka2V5KSk7Ci0rCSZjbXAJCSgkcm91bmRzLDExKTsKLSsJJnB4b3IJCSgkaW5v dXQwLCRybmRrZXkwKTsKLSsJJiRtb3Zla2V5CSgkcm5ka2V5MCwmUVdQKDB4MjAsJGtleSkpOwot KwkmbGVhCQkoJGtleSwmRFdQKDB4MzAsJGtleSkpOwotKwkmamIJCSgmbGFiZWwoIiR7cH0xMjgi KSk7Ci0rCSZsZWEJCSgka2V5LCZEV1AoMHgyMCwka2V5KSk7Ci0rCSZqZQkJKCZsYWJlbCgiJHtw fTE5MiIpKTsKLSsJJmxlYQkJKCRrZXksJkRXUCgweDIwLCRrZXkpKTsKLSsJZXZhbCImYWVzJHtw fQkoJGlub3V0MCwkcm5ka2V5MSkiOwotKwkmJG1vdmVrZXkJKCRybmRrZXkxLCZRV1AoLTB4NDAs JGtleSkpOwotKwlldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkwKSI7Ci0rCSYkbW92ZWtl eQkoJHJuZGtleTAsJlFXUCgtMHgzMCwka2V5KSk7Ci0rICAgICZzZXRfbGFiZWwoIiR7cH0xOTIi KTsKLSsJZXZhbCImYWVzJHtwfQkoJGlub3V0MCwkcm5ka2V5MSkiOwotKwkmJG1vdmVrZXkJKCRy bmRrZXkxLCZRV1AoLTB4MjAsJGtleSkpOwotKwlldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRr ZXkwKSI7Ci0rCSYkbW92ZWtleQkoJHJuZGtleTAsJlFXUCgtMHgxMCwka2V5KSk7Ci0rICAgICZz ZXRfbGFiZWwoIiR7cH0xMjgiKTsKLSsJZXZhbCImYWVzJHtwfQkoJGlub3V0MCwkcm5ka2V5MSki OwotKwkmJG1vdmVrZXkJKCRybmRrZXkxLCZRV1AoMCwka2V5KSk7Ci0rCWV2YWwiJmFlcyR7cH0J KCRpbm91dDAsJHJuZGtleTApIjsKLSsJJiRtb3Zla2V5CSgkcm5ka2V5MCwmUVdQKDB4MTAsJGtl eSkpOwotKwlldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkxKSI7Ci0rCSYkbW92ZWtleQko JHJuZGtleTEsJlFXUCgweDIwLCRrZXkpKTsKLSsJZXZhbCImYWVzJHtwfQkoJGlub3V0MCwkcm5k a2V5MCkiOwotKwkmJG1vdmVrZXkJKCRybmRrZXkwLCZRV1AoMHgzMCwka2V5KSk7Ci0rCWV2YWwi JmFlcyR7cH0JKCRpbm91dDAsJHJuZGtleTEpIjsKLSsJJiRtb3Zla2V5CSgkcm5ka2V5MSwmUVdQ KDB4NDAsJGtleSkpOwotKwlldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkwKSI7Ci0rCSYk bW92ZWtleQkoJHJuZGtleTAsJlFXUCgweDUwLCRrZXkpKTsKLSsJZXZhbCImYWVzJHtwfQkoJGlu b3V0MCwkcm5ka2V5MSkiOwotKwkmJG1vdmVrZXkJKCRybmRrZXkxLCZRV1AoMHg2MCwka2V5KSk7 Ci0rCWV2YWwiJmFlcyR7cH0JKCRpbm91dDAsJHJuZGtleTApIjsKLSsJJiRtb3Zla2V5CSgkcm5k a2V5MCwmUVdQKDB4NzAsJGtleSkpOwotKwlldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkx KSI7Ci0rICAgIGV2YWwiJmFlcyR7cH1sYXN0CSgkaW5vdXQwLCRybmRrZXkwKSI7Ci0rICAgICZy ZXQoKTsKLSsgICAgJmZ1bmN0aW9uX2VuZF9CKCJfYWVzbmlfJHtwfXJ5cHQxIik7Ci0rfQotKwot KyMgdm9pZCAkUFJFRklYX2VuY3J5cHQgKGNvbnN0IHZvaWQgKmlucCx2b2lkICpvdXQsY29uc3Qg QUVTX0tFWSAqa2V5KTsKLSsjICZhZXNuaV9nZW5lcmF0ZTEoImRlYyIpOwotKyZmdW5jdGlvbl9i ZWdpbl9CKCIke1BSRUZJWH1fZW5jcnlwdCIpOwotKwkmbW92CSgiZWF4Iiwmd3BhcmFtKDApKTsK LSsJJm1vdgkoJGtleSwmd3BhcmFtKDIpKTsKLSsJJm1vdnVwcwkoJGlub3V0MCwmUVdQKDAsImVh eCIpKTsKLSsJJm1vdgkoJHJvdW5kcywmRFdQKDI0MCwka2V5KSk7Ci0rCSZtb3YJKCJlYXgiLCZ3 cGFyYW0oMSkpOwotKwkmYWVzbmlfaW5saW5lX2dlbmVyYXRlMSgiZW5jIik7CSMgJmNhbGwJKCJf YWVzbmlfZW5jcnlwdDEiKTsKLSsJJm1vdnVwcwkoJlFXUCgwLCJlYXgiKSwkaW5vdXQwKTsKLSsJ JnJldAkoKTsKLSsmZnVuY3Rpb25fZW5kX0IoIiR7UFJFRklYfV9lbmNyeXB0Iik7Ci0rCi0rIyB2 b2lkICRQUkVGSVhfZGVjcnlwdCAoY29uc3Qgdm9pZCAqaW5wLHZvaWQgKm91dCxjb25zdCBBRVNf S0VZICprZXkpOwotKyMgJmFlc25pX2dlbmVyYXRlMSgiZGVjIik7Ci0rJmZ1bmN0aW9uX2JlZ2lu X0IoIiR7UFJFRklYfV9kZWNyeXB0Iik7Ci0rCSZtb3YJKCJlYXgiLCZ3cGFyYW0oMCkpOwotKwkm bW92CSgka2V5LCZ3cGFyYW0oMikpOwotKwkmbW92dXBzCSgkaW5vdXQwLCZRV1AoMCwiZWF4Iikp OwotKwkmbW92CSgkcm91bmRzLCZEV1AoMjQwLCRrZXkpKTsKLSsJJm1vdgkoImVheCIsJndwYXJh bSgxKSk7Ci0rCSZhZXNuaV9pbmxpbmVfZ2VuZXJhdGUxKCJkZWMiKTsJIyAmY2FsbAkoIl9hZXNu aV9kZWNyeXB0MSIpOwotKwkmbW92dXBzCSgmUVdQKDAsImVheCIpLCRpbm91dDApOwotKwkmcmV0 CSgpOwotKyZmdW5jdGlvbl9lbmRfQigiJHtQUkVGSVh9X2RlY3J5cHQiKTsKLSsMCi0rIyBfYWVz bmlfW2VufGRlXWNyeXB0WzM0XSBhcmUgcHJpdmF0ZSBpbnRlcmZhY2VzLCBOIGRlbm90ZXMgaW50 ZXJsZWF2ZQotKyMgZmFjdG9yLiBXaHkgM3ggc3Vicm91dGluZSBpcyB1c2VkIGluIGxvb3BzPyBF dmVuIHRob3VnaCBhZXNbZW5jfGRlY10KLSsjIGxhdGVuY3kgaXMgNiwgaXQgdHVybmVkIG91dCB0 aGF0IGl0IGNhbiBiZSBzY2hlZHVsZWQgb25seSBldmVyeQotKyMgKnNlY29uZCogY3ljbGUuIFRo dXMgM3ggaW50ZXJsZWF2ZSBpcyB0aGUgb25lIHByb3ZpZGluZyBvcHRpbWFsCi0rIyB1dGlsaXph dGlvbiwgaS5lLiB3aGVuIHN1YnJvdXRpbmUncyB0aHJvdWdocHV0IGlzIHZpcnR1YWxseSBzYW1l IGFzCi0rIyBvZiBub24taW50ZXJsZWF2ZWQgc3Vicm91dGluZSBbZm9yIG51bWJlciBvZiBpbnB1 dCBibG9ja3MgdXAgdG8gM10uCi0rIyBUaGlzIGlzIHdoeSBpdCBtYWtlcyBubyBzZW5zZSB0byBp bXBsZW1lbnQgMnggc3Vicm91dGluZS4gQXMgc29vbgotKyMgYXMvaWYgSW50ZWwgaW1wcm92ZXMg dGhyb3VnaHB1dCBieSBtYWtpbmcgaXQgcG9zc2libGUgdG8gc2NoZWR1bGUKLSsjIHRoZSBpbnN0 cnVjdGlvbnMgaW4gcXVlc3Rpb24gKmV2ZXJ5KiBjeWNsZXMgSSB3b3VsZCBoYXZlIHRvCi0rIyBp bXBsZW1lbnQgNnggaW50ZXJsZWF2ZSBhbmQgdXNlIGl0IGluIGxvb3AuLi4KLStzdWIgYWVzbmlf Z2VuZXJhdGUzCi0reyBteSAkcD1zaGlmdDsKLSsKLSsgICAgJmZ1bmN0aW9uX2JlZ2luX0IoIl9h ZXNuaV8ke3B9cnlwdDMiKTsKLSsJJiRtb3Zla2V5CSgkcm5ka2V5MCwmUVdQKDAsJGtleSkpOwot Kwkmc2hyCQkoJHJvdW5kcywxKTsKLSsJJiRtb3Zla2V5CSgkcm5ka2V5MSwmUVdQKDE2LCRrZXkp KTsKLSsJJmxlYQkJKCRrZXksJkRXUCgzMiwka2V5KSk7Ci0rCSZweG9yCQkoJGlub3V0MCwkcm5k a2V5MCk7Ci0rCSZweG9yCQkoJGlub3V0MSwkcm5ka2V5MCk7Ci0rCSZweG9yCQkoJGlub3V0Miwk cm5ka2V5MCk7Ci0rCSZqbXAJCSgmbGFiZWwoIiR7cH0zX2xvb3AiKSk7Ci0rICAgICZzZXRfbGFi ZWwoIiR7cH0zX2xvb3AiLDE2KTsKLSsJZXZhbCImYWVzJHtwfQkoJGlub3V0MCwkcm5ka2V5MSki OwotKwkmJG1vdmVrZXkJKCRybmRrZXkwLCZRV1AoMCwka2V5KSk7Ci0rCWV2YWwiJmFlcyR7cH0J KCRpbm91dDEsJHJuZGtleTEpIjsKLSsJJmRlYwkJKCRyb3VuZHMpOwotKwlldmFsIiZhZXMke3B9 CSgkaW5vdXQyLCRybmRrZXkxKSI7Ci0rCSYkbW92ZWtleQkoJHJuZGtleTEsJlFXUCgxNiwka2V5 KSk7Ci0rCWV2YWwiJmFlcyR7cH0JKCRpbm91dDAsJHJuZGtleTApIjsKLSsJJmxlYQkJKCRrZXks JkRXUCgzMiwka2V5KSk7Ci0rCWV2YWwiJmFlcyR7cH0JKCRpbm91dDEsJHJuZGtleTApIjsKLSsJ ZXZhbCImYWVzJHtwfQkoJGlub3V0Miwkcm5ka2V5MCkiOwotKwkmam56CQkoJmxhYmVsKCIke3B9 M19sb29wIikpOwotKyAgICBldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkxKSI7Ci0rICAg ICYkbW92ZWtleQkJKCRybmRrZXkwLCZRV1AoMCwka2V5KSk7Ci0rICAgIGV2YWwiJmFlcyR7cH0J KCRpbm91dDEsJHJuZGtleTEpIjsKLSsgICAgZXZhbCImYWVzJHtwfQkoJGlub3V0Miwkcm5ka2V5 MSkiOwotKyAgICBldmFsIiZhZXMke3B9bGFzdAkoJGlub3V0MCwkcm5ka2V5MCkiOwotKyAgICBl dmFsIiZhZXMke3B9bGFzdAkoJGlub3V0MSwkcm5ka2V5MCkiOwotKyAgICBldmFsIiZhZXMke3B9 bGFzdAkoJGlub3V0Miwkcm5ka2V5MCkiOwotKyAgICAmcmV0KCk7Ci0rICAgICZmdW5jdGlvbl9l bmRfQigiX2Flc25pXyR7cH1yeXB0MyIpOwotK30KLSsKLSsjIDR4IGludGVybGVhdmUgaXMgaW1w bGVtZW50ZWQgdG8gaW1wcm92ZSBzbWFsbCBibG9jayBwZXJmb3JtYW5jZSwKLSsjIG1vc3Qgbm90 YWJseSBbYW5kIG5hdHVyYWxseV0gNCBibG9jayBieSB+MzAlLiBPbmUgY2FuIGFyZ3VlIHRoYXQg b25lCi0rIyBzaG91bGQgaGF2ZSBpbXBsZW1lbnRlZCA1eCBhcyB3ZWxsLCBidXQgaW1wcm92ZW1l bnQgIHdvdWxkIGJlIDwyMCUsCi0rIyBzbyBpdCdzIG5vdCB3b3J0aCBpdC4uLgotK3N1YiBhZXNu aV9nZW5lcmF0ZTQKLSt7IG15ICRwPXNoaWZ0OwotKwotKyAgICAmZnVuY3Rpb25fYmVnaW5fQigi X2Flc25pXyR7cH1yeXB0NCIpOwotKwkmJG1vdmVrZXkJKCRybmRrZXkwLCZRV1AoMCwka2V5KSk7 Ci0rCSYkbW92ZWtleQkoJHJuZGtleTEsJlFXUCgxNiwka2V5KSk7Ci0rCSZzaHIJCSgkcm91bmRz LDEpOwotKwkmbGVhCQkoJGtleSwmRFdQKDMyLCRrZXkpKTsKLSsJJnB4b3IJCSgkaW5vdXQwLCRy bmRrZXkwKTsKLSsJJnB4b3IJCSgkaW5vdXQxLCRybmRrZXkwKTsKLSsJJnB4b3IJCSgkaW5vdXQy LCRybmRrZXkwKTsKLSsJJnB4b3IJCSgkaW5vdXQzLCRybmRrZXkwKTsKLSsJJmptcAkJKCZsYWJl bCgiJHtwfTNfbG9vcCIpKTsKLSsgICAgJnNldF9sYWJlbCgiJHtwfTNfbG9vcCIsMTYpOwotKwll dmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkxKSI7Ci0rCSYkbW92ZWtleQkoJHJuZGtleTAs JlFXUCgwLCRrZXkpKTsKLSsJZXZhbCImYWVzJHtwfQkoJGlub3V0MSwkcm5ka2V5MSkiOwotKwkm ZGVjCQkoJHJvdW5kcyk7Ci0rCWV2YWwiJmFlcyR7cH0JKCRpbm91dDIsJHJuZGtleTEpIjsKLSsJ ZXZhbCImYWVzJHtwfQkoJGlub3V0Mywkcm5ka2V5MSkiOwotKwkmJG1vdmVrZXkJKCRybmRrZXkx LCZRV1AoMTYsJGtleSkpOwotKwlldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkwKSI7Ci0r CSZsZWEJCSgka2V5LCZEV1AoMzIsJGtleSkpOwotKwlldmFsIiZhZXMke3B9CSgkaW5vdXQxLCRy bmRrZXkwKSI7Ci0rCWV2YWwiJmFlcyR7cH0JKCRpbm91dDIsJHJuZGtleTApIjsKLSsJZXZhbCIm YWVzJHtwfQkoJGlub3V0Mywkcm5ka2V5MCkiOwotKwkmam56CQkoJmxhYmVsKCIke3B9M19sb29w IikpOwotKyAgICBldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkxKSI7Ci0rICAgICYkbW92 ZWtleQkJKCRybmRrZXkwLCZRV1AoMCwka2V5KSk7Ci0rICAgIGV2YWwiJmFlcyR7cH0JKCRpbm91 dDEsJHJuZGtleTEpIjsKLSsgICAgZXZhbCImYWVzJHtwfQkoJGlub3V0Miwkcm5ka2V5MSkiOwot KyAgICBldmFsIiZhZXMke3B9CSgkaW5vdXQzLCRybmRrZXkxKSI7Ci0rICAgIGV2YWwiJmFlcyR7 cH1sYXN0CSgkaW5vdXQwLCRybmRrZXkwKSI7Ci0rICAgIGV2YWwiJmFlcyR7cH1sYXN0CSgkaW5v dXQxLCRybmRrZXkwKSI7Ci0rICAgIGV2YWwiJmFlcyR7cH1sYXN0CSgkaW5vdXQyLCRybmRrZXkw KSI7Ci0rICAgIGV2YWwiJmFlcyR7cH1sYXN0CSgkaW5vdXQzLCRybmRrZXkwKSI7Ci0rICAgICZy ZXQoKTsKLSsgICAgJmZ1bmN0aW9uX2VuZF9CKCJfYWVzbmlfJHtwfXJ5cHQ0Iik7Ci0rfQotKyZh ZXNuaV9nZW5lcmF0ZTMoImVuYyIpIGlmICgkUFJFRklYIGVxICJhZXNuaSIpOwotKyZhZXNuaV9n ZW5lcmF0ZTMoImRlYyIpOwotKyZhZXNuaV9nZW5lcmF0ZTQoImVuYyIpIGlmICgkUFJFRklYIGVx ICJhZXNuaSIpOwotKyZhZXNuaV9nZW5lcmF0ZTQoImRlYyIpOwotKwotK2lmICgkUFJFRklYIGVx ICJhZXNuaSIpIHsKLSsjIHZvaWQgYWVzbmlfZWNiX2VuY3J5cHQgKGNvbnN0IHZvaWQgKmluLCB2 b2lkICpvdXQsCi0rIyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoLCBjb25z dCBBRVNfS0VZICprZXksCi0rIyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZW5jKTsKLSsm ZnVuY3Rpb25fYmVnaW4oImFlc25pX2VjYl9lbmNyeXB0Iik7Ci0rCSZtb3YJKCRpbnAsJndwYXJh bSgwKSk7Ci0rCSZtb3YJKCRvdXQsJndwYXJhbSgxKSk7Ci0rCSZtb3YJKCRsZW4sJndwYXJhbSgy KSk7Ci0rCSZtb3YJKCRrZXksJndwYXJhbSgzKSk7Ci0rCSZtb3YJKCRyb3VuZHMsJndwYXJhbSg0 KSk7Ci0rCSZjbXAJKCRsZW4sMTYpOwotKwkmamIJKCZsYWJlbCgiZWNiX3JldCIpKTsKLSsJJmFu ZAkoJGxlbiwtMTYpOwotKwkmdGVzdAkoJHJvdW5kcywkcm91bmRzKQotKwkmbW92CSgkcm91bmRz LCZEV1AoMjQwLCRrZXkpKTsKLSsJJm1vdgkoJGtleV8sJGtleSk7CQkjIGJhY2t1cCAka2V5Ci0r CSZtb3YJKCRyb3VuZHNfLCRyb3VuZHMpOwkjIGJhY2t1cCAkcm91bmRzCi0rCSZqegkoJmxhYmVs KCJlY2JfZGVjcnlwdCIpKTsKLSsKLSsJJnN1YgkoJGxlbiwweDQwKTsKLSsJJmpiZQkoJmxhYmVs KCJlY2JfZW5jX3RhaWwiKSk7Ci0rCSZqbXAJKCZsYWJlbCgiZWNiX2VuY19sb29wMyIpKTsKLSsK LSsmc2V0X2xhYmVsKCJlY2JfZW5jX2xvb3AzIiwxNik7Ci0rCSZtb3Z1cHMJKCRpbm91dDAsJlFX UCgwLCRpbnApKTsKLSsJJm1vdnVwcwkoJGlub3V0MSwmUVdQKDB4MTAsJGlucCkpOwotKwkmbW92 dXBzCSgkaW5vdXQyLCZRV1AoMHgyMCwkaW5wKSk7Ci0rCSZjYWxsCSgiX2Flc25pX2VuY3J5cHQz Iik7Ci0rCSZzdWIJKCRsZW4sMHgzMCk7Ci0rCSZsZWEJKCRpbnAsJkRXUCgweDMwLCRpbnApKTsK LSsJJmxlYQkoJG91dCwmRFdQKDB4MzAsJG91dCkpOwotKwkmbW92dXBzCSgmUVdQKC0weDMwLCRv dXQpLCRpbm91dDApOwotKwkmbW92CSgka2V5LCRrZXlfKTsJCSMgcmVzdG9yZSAka2V5Ci0rCSZt b3Z1cHMJKCZRV1AoLTB4MjAsJG91dCksJGlub3V0MSk7Ci0rCSZtb3YJKCRyb3VuZHMsJHJvdW5k c18pOwkjIHJlc3RvcmUgJHJvdW5kcwotKwkmbW92dXBzCSgmUVdQKC0weDEwLCRvdXQpLCRpbm91 dDIpOwotKwkmamEJKCZsYWJlbCgiZWNiX2VuY19sb29wMyIpKTsKLSsKLSsmc2V0X2xhYmVsKCJl Y2JfZW5jX3RhaWwiKTsKLSsJJmFkZAkoJGxlbiwweDQwKTsKLSsJJmp6CSgmbGFiZWwoImVjYl9y ZXQiKSk7Ci0rCi0rCSZjbXAJKCRsZW4sMHgxMCk7Ci0rCSZtb3Z1cHMJKCRpbm91dDAsJlFXUCgw LCRpbnApKTsKLSsJJmplCSgmbGFiZWwoImVjYl9lbmNfb25lIikpOwotKwkmY21wCSgkbGVuLDB4 MjApOwotKwkmbW92dXBzCSgkaW5vdXQxLCZRV1AoMHgxMCwkaW5wKSk7Ci0rCSZqZQkoJmxhYmVs KCJlY2JfZW5jX3R3byIpKTsKLSsJJmNtcAkoJGxlbiwweDMwKTsKLSsJJm1vdnVwcwkoJGlub3V0 MiwmUVdQKDB4MjAsJGlucCkpOwotKwkmamUJKCZsYWJlbCgiZWNiX2VuY190aHJlZSIpKTsKLSsJ Jm1vdnVwcwkoJGlub3V0MywmUVdQKDB4MzAsJGlucCkpOwotKwkmY2FsbAkoIl9hZXNuaV9lbmNy eXB0NCIpOwotKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7Ci0rCSZtb3Z1cHMJKCZR V1AoMHgxMCwkb3V0KSwkaW5vdXQxKTsKLSsJJm1vdnVwcwkoJlFXUCgweDIwLCRvdXQpLCRpbm91 dDIpOwotKwkmbW92dXBzCSgmUVdQKDB4MzAsJG91dCksJGlub3V0Myk7Ci0rCWptcAkoJmxhYmVs KCJlY2JfcmV0IikpOwotKwotKyZzZXRfbGFiZWwoImVjYl9lbmNfb25lIiwxNik7Ci0rCSZhZXNu aV9pbmxpbmVfZ2VuZXJhdGUxKCJlbmMiKTsJIyAmY2FsbAkoIl9hZXNuaV9lbmNyeXB0MSIpOwot KwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7Ci0rCSZqbXAJKCZsYWJlbCgiZWNiX3Jl dCIpKTsKLSsKLSsmc2V0X2xhYmVsKCJlY2JfZW5jX3R3byIsMTYpOwotKwkmY2FsbAkoIl9hZXNu aV9lbmNyeXB0MyIpOwotKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7Ci0rCSZtb3Z1 cHMJKCZRV1AoMHgxMCwkb3V0KSwkaW5vdXQxKTsKLSsJJmptcAkoJmxhYmVsKCJlY2JfcmV0Iikp OwotKwotKyZzZXRfbGFiZWwoImVjYl9lbmNfdGhyZWUiLDE2KTsKLSsJJmNhbGwJKCJfYWVzbmlf ZW5jcnlwdDMiKTsKLSsJJm1vdnVwcwkoJlFXUCgwLCRvdXQpLCRpbm91dDApOwotKwkmbW92dXBz CSgmUVdQKDB4MTAsJG91dCksJGlub3V0MSk7Ci0rCSZtb3Z1cHMJKCZRV1AoMHgyMCwkb3V0KSwk aW5vdXQyKTsKLSsJJmptcAkoJmxhYmVsKCJlY2JfcmV0IikpOwotKwotKyZzZXRfbGFiZWwoImVj Yl9kZWNyeXB0IiwxNik7Ci0rCSZzdWIJKCRsZW4sMHg0MCk7Ci0rCSZqYmUJKCZsYWJlbCgiZWNi X2RlY190YWlsIikpOwotKwkmam1wCSgmbGFiZWwoImVjYl9kZWNfbG9vcDMiKSk7Ci0rCi0rJnNl dF9sYWJlbCgiZWNiX2RlY19sb29wMyIsMTYpOwotKwkmbW92dXBzCSgkaW5vdXQwLCZRV1AoMCwk aW5wKSk7Ci0rCSZtb3Z1cHMJKCRpbm91dDEsJlFXUCgweDEwLCRpbnApKTsKLSsJJm1vdnVwcwko JGlub3V0MiwmUVdQKDB4MjAsJGlucCkpOwotKwkmY2FsbAkoIl9hZXNuaV9kZWNyeXB0MyIpOwot Kwkmc3ViCSgkbGVuLDB4MzApOwotKwkmbGVhCSgkaW5wLCZEV1AoMHgzMCwkaW5wKSk7Ci0rCSZs ZWEJKCRvdXQsJkRXUCgweDMwLCRvdXQpKTsKLSsJJm1vdnVwcwkoJlFXUCgtMHgzMCwkb3V0KSwk aW5vdXQwKTsKLSsJJm1vdgkoJGtleSwka2V5Xyk7CQkjIHJlc3RvcmUgJGtleQotKwkmbW92dXBz CSgmUVdQKC0weDIwLCRvdXQpLCRpbm91dDEpOwotKwkmbW92CSgkcm91bmRzLCRyb3VuZHNfKTsJ IyByZXN0b3JlICRyb3VuZHMKLSsJJm1vdnVwcwkoJlFXUCgtMHgxMCwkb3V0KSwkaW5vdXQyKTsK LSsJJmphCSgmbGFiZWwoImVjYl9kZWNfbG9vcDMiKSk7Ci0rCi0rJnNldF9sYWJlbCgiZWNiX2Rl Y190YWlsIik7Ci0rCSZhZGQJKCRsZW4sMHg0MCk7Ci0rCSZqegkoJmxhYmVsKCJlY2JfcmV0Iikp OwotKwotKwkmY21wCSgkbGVuLDB4MTApOwotKwkmbW92dXBzCSgkaW5vdXQwLCZRV1AoMCwkaW5w KSk7Ci0rCSZqZQkoJmxhYmVsKCJlY2JfZGVjX29uZSIpKTsKLSsJJmNtcAkoJGxlbiwweDIwKTsK LSsJJm1vdnVwcwkoJGlub3V0MSwmUVdQKDB4MTAsJGlucCkpOwotKwkmamUJKCZsYWJlbCgiZWNi X2RlY190d28iKSk7Ci0rCSZjbXAJKCRsZW4sMHgzMCk7Ci0rCSZtb3Z1cHMJKCRpbm91dDIsJlFX UCgweDIwLCRpbnApKTsKLSsJJmplCSgmbGFiZWwoImVjYl9kZWNfdGhyZWUiKSk7Ci0rCSZtb3Z1 cHMJKCRpbm91dDMsJlFXUCgweDMwLCRpbnApKTsKLSsJJmNhbGwJKCJfYWVzbmlfZGVjcnlwdDQi KTsKLSsJJm1vdnVwcwkoJlFXUCgwLCRvdXQpLCRpbm91dDApOwotKwkmbW92dXBzCSgmUVdQKDB4 MTAsJG91dCksJGlub3V0MSk7Ci0rCSZtb3Z1cHMJKCZRV1AoMHgyMCwkb3V0KSwkaW5vdXQyKTsK LSsJJm1vdnVwcwkoJlFXUCgweDMwLCRvdXQpLCRpbm91dDMpOwotKwkmam1wCSgmbGFiZWwoImVj Yl9yZXQiKSk7Ci0rCi0rJnNldF9sYWJlbCgiZWNiX2RlY19vbmUiLDE2KTsKLSsJJmFlc25pX2lu bGluZV9nZW5lcmF0ZTEoImRlYyIpOwkjICZjYWxsCSgiX2Flc25pX2RlY3J5cHQzIik7Ci0rCSZt b3Z1cHMJKCZRV1AoMCwkb3V0KSwkaW5vdXQwKTsKLSsJJmptcAkoJmxhYmVsKCJlY2JfcmV0Iikp OwotKwotKyZzZXRfbGFiZWwoImVjYl9kZWNfdHdvIiwxNik7Ci0rCSZjYWxsCSgiX2Flc25pX2Rl Y3J5cHQzIik7Ci0rCSZtb3Z1cHMJKCZRV1AoMCwkb3V0KSwkaW5vdXQwKTsKLSsJJm1vdnVwcwko JlFXUCgweDEwLCRvdXQpLCRpbm91dDEpOwotKwkmam1wCSgmbGFiZWwoImVjYl9yZXQiKSk7Ci0r Ci0rJnNldF9sYWJlbCgiZWNiX2RlY190aHJlZSIsMTYpOwotKwkmY2FsbAkoIl9hZXNuaV9kZWNy eXB0MyIpOwotKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7Ci0rCSZtb3Z1cHMJKCZR V1AoMHgxMCwkb3V0KSwkaW5vdXQxKTsKLSsJJm1vdnVwcwkoJlFXUCgweDIwLCRvdXQpLCRpbm91 dDIpOwotKwotKyZzZXRfbGFiZWwoImVjYl9yZXQiKTsKLSsmZnVuY3Rpb25fZW5kKCJhZXNuaV9l Y2JfZW5jcnlwdCIpOwotK30KLSsKLSsjIHZvaWQgJFBSRUZJWF9jYmNfZW5jcnlwdCAoY29uc3Qg dm9pZCAqaW5wLCB2b2lkICpvdXQsCi0rIyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf dCBsZW5ndGgsIGNvbnN0IEFFU19LRVkgKmtleSwKLSsjICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgY2hhciAqaXZwLGNvbnN0IGludCBlbmMpOwotKyZmdW5jdGlvbl9iZWdpbigi JHtQUkVGSVh9X2NiY19lbmNyeXB0Iik7Ci0rCSZtb3YJKCRpbnAsJndwYXJhbSgwKSk7Ci0rCSZt b3YJKCRvdXQsJndwYXJhbSgxKSk7Ci0rCSZtb3YJKCRsZW4sJndwYXJhbSgyKSk7Ci0rCSZtb3YJ KCRrZXksJndwYXJhbSgzKSk7Ci0rCSZ0ZXN0CSgkbGVuLCRsZW4pOwotKwkmbW92CSgka2V5Xywm d3BhcmFtKDQpKTsKLSsJJmp6CSgmbGFiZWwoImNiY19yZXQiKSk7Ci0rCi0rCSZjbXAJKCZ3cGFy YW0oNSksMCk7Ci0rCSZtb3Z1cHMJKCRpdmVjLCZRV1AoMCwka2V5XykpOwkjIGxvYWQgSVYKLSsJ Jm1vdgkoJHJvdW5kcywmRFdQKDI0MCwka2V5KSk7Ci0rCSZtb3YJKCRrZXlfLCRrZXkpOwkJIyBi YWNrdXAgJGtleQotKwkmbW92CSgkcm91bmRzXywkcm91bmRzKTsJIyBiYWNrdXAgJHJvdW5kcwot KwkmamUJKCZsYWJlbCgiY2JjX2RlY3J5cHQiKSk7Ci0rCi0rCSZtb3ZhcHMJKCRpbm91dDAsJGl2 ZWMpOwotKwkmY21wCSgkbGVuLDE2KTsKLSsJJmpiCSgmbGFiZWwoImNiY19lbmNfdGFpbCIpKTsK LSsJJnN1YgkoJGxlbiwxNik7Ci0rCSZqbXAJKCZsYWJlbCgiY2JjX2VuY19sb29wIikpOwotKwot KyZzZXRfbGFiZWwoImNiY19lbmNfbG9vcCIsMTYpOwotKwkmbW92dXBzCSgkaXZlYywmUVdQKDAs JGlucCkpOwotKwkmbGVhCSgkaW5wLCZEV1AoMTYsJGlucCkpOwotKwkmcHhvcgkoJGlub3V0MCwk aXZlYyk7Ci0rCSZhZXNuaV9pbmxpbmVfZ2VuZXJhdGUxKCJlbmMiKTsJIyAmY2FsbAkoIl9hZXNu aV9lbmNyeXB0MyIpOwotKwkmc3ViCSgkbGVuLDE2KTsKLSsJJmxlYQkoJG91dCwmRFdQKDE2LCRv dXQpKTsKLSsJJm1vdgkoJHJvdW5kcywkcm91bmRzXyk7CSMgcmVzdG9yZSAkcm91bmRzCi0rCSZt b3YJKCRrZXksJGtleV8pOwkJIyByZXN0b3JlICRrZXkKLSsJJm1vdnVwcwkoJlFXUCgtMTYsJG91 dCksJGlub3V0MCk7Ci0rCSZqbmMJKCZsYWJlbCgiY2JjX2VuY19sb29wIikpOwotKwkmYWRkCSgk bGVuLDE2KTsKLSsJJmpuegkoJmxhYmVsKCJjYmNfZW5jX3RhaWwiKSk7Ci0rCSZtb3ZhcHMJKCRp dmVjLCRpbm91dDApOwotKwkmam1wCSgmbGFiZWwoImNiY19yZXQiKSk7Ci0rCi0rJnNldF9sYWJl bCgiY2JjX2VuY190YWlsIik7Ci0rCSZtb3YJKCJlY3giLCRsZW4pOwkJIyB6YXBzICRyb3VuZHMK LSsJJmRhdGFfd29yZCgweEE0RjNGNjg5KTsJCSMgcmVwIG1vdnNiCi0rCSZtb3YJKCJlY3giLDE2 KTsJCSMgemVybyB0YWlsCi0rCSZzdWIJKCJlY3giLCRsZW4pOwotKwkmeG9yCSgiZWF4IiwiZWF4 Iik7CQkjIHphcHMgJGxlbgotKwkmZGF0YV93b3JkKDB4QUFGM0Y2ODkpOwkJIyByZXAgc3Rvc2IK LSsJJmxlYQkoJG91dCwmRFdQKC0xNiwkb3V0KSk7CSMgcmV3aW5kICRvdXQgYnkgMSBibG9jawot KwkmbW92CSgkcm91bmRzLCRyb3VuZHNfKTsJIyByZXN0b3JlICRyb3VuZHMKLSsJJm1vdgkoJGlu cCwkb3V0KTsJCSMgJGlucCBhbmQgJG91dCBhcmUgdGhlIHNhbWUKLSsJJm1vdgkoJGtleSwka2V5 Xyk7CQkjIHJlc3RvcmUgJGtleQotKwkmam1wCSgmbGFiZWwoImNiY19lbmNfbG9vcCIpKTsKLSsK LSsmc2V0X2xhYmVsKCJjYmNfZGVjcnlwdCIsMTYpOwotKwkmc3ViCSgkbGVuLDB4NDApOwotKwkm amJlCSgmbGFiZWwoImNiY19kZWNfdGFpbCIpKTsKLSsJJmptcAkoJmxhYmVsKCJjYmNfZGVjX2xv b3AzIikpOwotKwotKyZzZXRfbGFiZWwoImNiY19kZWNfbG9vcDMiLDE2KTsKLSsJJm1vdnVwcwko JGlub3V0MCwmUVdQKDAsJGlucCkpOwotKwkmbW92dXBzCSgkaW5vdXQxLCZRV1AoMHgxMCwkaW5w KSk7Ci0rCSZtb3Z1cHMJKCRpbm91dDIsJlFXUCgweDIwLCRpbnApKTsKLSsJJm1vdmFwcwkoJGlu MCwkaW5vdXQwKTsKLSsJJm1vdmFwcwkoJGluMSwkaW5vdXQxKTsKLSsJJmNhbGwJKCJfYWVzbmlf ZGVjcnlwdDMiKTsKLSsJJnN1YgkoJGxlbiwweDMwKTsKLSsJJmxlYQkoJGlucCwmRFdQKDB4MzAs JGlucCkpOwotKwkmbGVhCSgkb3V0LCZEV1AoMHgzMCwkb3V0KSk7Ci0rCSZweG9yCSgkaW5vdXQw LCRpdmVjKTsKLSsJJnB4b3IJKCRpbm91dDEsJGluMCk7Ci0rCSZtb3Z1cHMJKCRpdmVjLCZRV1Ao LTB4MTAsJGlucCkpOwotKwkmcHhvcgkoJGlub3V0MiwkaW4xKTsKLSsJJm1vdnVwcwkoJlFXUCgt MHgzMCwkb3V0KSwkaW5vdXQwKTsKLSsJJm1vdgkoJHJvdW5kcywkcm91bmRzXykJIyByZXN0b3Jl ICRyb3VuZHMKLSsJJm1vdnVwcwkoJlFXUCgtMHgyMCwkb3V0KSwkaW5vdXQxKTsKLSsJJm1vdgko JGtleSwka2V5Xyk7CQkjIHJlc3RvcmUgJGtleQotKwkmbW92dXBzCSgmUVdQKC0weDEwLCRvdXQp LCRpbm91dDIpOwotKwkmamEJKCZsYWJlbCgiY2JjX2RlY19sb29wMyIpKTsKLSsKLSsmc2V0X2xh YmVsKCJjYmNfZGVjX3RhaWwiKTsKLSsJJmFkZAkoJGxlbiwweDQwKTsKLSsJJmp6CSgmbGFiZWwo ImNiY19yZXQiKSk7Ci0rCi0rCSZtb3Z1cHMJKCRpbm91dDAsJlFXUCgwLCRpbnApKTsKLSsJJmNt cAkoJGxlbiwweDEwKTsKLSsJJm1vdmFwcwkoJGluMCwkaW5vdXQwKTsKLSsJJmpiZQkoJmxhYmVs KCJjYmNfZGVjX29uZSIpKTsKLSsJJm1vdnVwcwkoJGlub3V0MSwmUVdQKDB4MTAsJGlucCkpOwot KwkmY21wCSgkbGVuLDB4MjApOwotKwkmbW92YXBzCSgkaW4xLCRpbm91dDEpOwotKwkmamJlCSgm bGFiZWwoImNiY19kZWNfdHdvIikpOwotKwkmbW92dXBzCSgkaW5vdXQyLCZRV1AoMHgyMCwkaW5w KSk7Ci0rCSZjbXAJKCRsZW4sMHgzMCk7Ci0rCSZqYmUJKCZsYWJlbCgiY2JjX2RlY190aHJlZSIp KTsKLSsJJm1vdnVwcwkoJGlub3V0MywmUVdQKDB4MzAsJGlucCkpOwotKwkmY2FsbAkoIl9hZXNu aV9kZWNyeXB0NCIpOwotKwkmbW92dXBzCSgkcm5ka2V5MCwmUVdQKDB4MTAsJGlucCkpOwotKwkm bW92dXBzCSgkcm5ka2V5MSwmUVdQKDB4MjAsJGlucCkpOwotKwkmcHhvcgkoJGlub3V0MCwkaXZl Yyk7Ci0rCSZweG9yCSgkaW5vdXQxLCRpbjApOwotKwkmbW92dXBzCSgkaXZlYywmUVdQKDB4MzAs JGlucCkpOwotKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7Ci0rCSZweG9yCSgkaW5v dXQyLCRybmRrZXkwKTsKLSsJJnB4b3IJKCRpbm91dDMsJHJuZGtleTEpOwotKwkmbW92dXBzCSgm UVdQKDB4MTAsJG91dCksJGlub3V0MSk7Ci0rCSZtb3Z1cHMJKCZRV1AoMHgyMCwkb3V0KSwkaW5v dXQyKTsKLSsJJm1vdmFwcwkoJGlub3V0MCwkaW5vdXQzKTsKLSsJJmxlYQkoJG91dCwmRFdQKDB4 MzAsJG91dCkpOwotKwkmam1wCSgmbGFiZWwoImNiY19kZWNfdGFpbF9jb2xsZWN0ZWQiKSk7Ci0r Ci0rJnNldF9sYWJlbCgiY2JjX2RlY19vbmUiKTsKLSsJJmFlc25pX2lubGluZV9nZW5lcmF0ZTEo ImRlYyIpOwkjICZjYWxsCSgiX2Flc25pX2RlY3J5cHQzIik7Ci0rCSZweG9yCSgkaW5vdXQwLCRp dmVjKTsKLSsJJm1vdmFwcwkoJGl2ZWMsJGluMCk7Ci0rCSZqbXAJKCZsYWJlbCgiY2JjX2RlY190 YWlsX2NvbGxlY3RlZCIpKTsKLSsKLSsmc2V0X2xhYmVsKCJjYmNfZGVjX3R3byIpOwotKwkmY2Fs bAkoIl9hZXNuaV9kZWNyeXB0MyIpOwotKwkmcHhvcgkoJGlub3V0MCwkaXZlYyk7Ci0rCSZweG9y CSgkaW5vdXQxLCRpbjApOwotKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7Ci0rCSZt b3ZhcHMJKCRpbm91dDAsJGlub3V0MSk7Ci0rCSZtb3ZhcHMJKCRpdmVjLCRpbjEpOwotKwkmbGVh CSgkb3V0LCZEV1AoMHgxMCwkb3V0KSk7Ci0rCSZqbXAJKCZsYWJlbCgiY2JjX2RlY190YWlsX2Nv bGxlY3RlZCIpKTsKLSsKLSsmc2V0X2xhYmVsKCJjYmNfZGVjX3RocmVlIik7Ci0rCSZjYWxsCSgi X2Flc25pX2RlY3J5cHQzIik7Ci0rCSZweG9yCSgkaW5vdXQwLCRpdmVjKTsKLSsJJnB4b3IJKCRp bm91dDEsJGluMCk7Ci0rCSZweG9yCSgkaW5vdXQyLCRpbjEpOwotKwkmbW92dXBzCSgmUVdQKDAs JG91dCksJGlub3V0MCk7Ci0rCSZtb3Z1cHMJKCZRV1AoMHgxMCwkb3V0KSwkaW5vdXQxKTsKLSsJ Jm1vdmFwcwkoJGlub3V0MCwkaW5vdXQyKTsKLSsJJm1vdnVwcwkoJGl2ZWMsJlFXUCgweDIwLCRp bnApKTsKLSsJJmxlYQkoJG91dCwmRFdQKDB4MjAsJG91dCkpOwotKwotKyZzZXRfbGFiZWwoImNi Y19kZWNfdGFpbF9jb2xsZWN0ZWQiKTsKLSsJJmFuZAkoJGxlbiwxNSk7Ci0rCSZqbnoJKCZsYWJl bCgiY2JjX2RlY190YWlsX3BhcnRpYWwiKSk7Ci0rCSZtb3Z1cHMJKCZRV1AoMCwkb3V0KSwkaW5v dXQwKTsKLSsJJmptcAkoJmxhYmVsKCJjYmNfcmV0IikpOwotKwotKyZzZXRfbGFiZWwoImNiY19k ZWNfdGFpbF9wYXJ0aWFsIik7Ci0rCSZtb3YJKCRrZXlfLCJlc3AiKTsKLSsJJnN1YgkoImVzcCIs MTYpOwotKwkmYW5kCSgiZXNwIiwtMTYpOwotKwkmbW92YXBzCSgmUVdQKDAsImVzcCIpLCRpbm91 dDApOwotKwkmbW92CSgkaW5wLCJlc3AiKTsKLSsJJm1vdgkoImVjeCIsJGxlbik7Ci0rCSZkYXRh X3dvcmQoMHhBNEYzRjY4OSk7CQkjIHJlcCBtb3ZzYgotKwkmbW92CSgiZXNwIiwka2V5Xyk7Ci0r Ci0rJnNldF9sYWJlbCgiY2JjX3JldCIpOwotKwkmbW92CSgka2V5Xywmd3BhcmFtKDQpKTsKLSsJ Jm1vdnVwcwkoJlFXUCgwLCRrZXlfKSwkaXZlYyk7CSMgb3V0cHV0IElWCi0rJmZ1bmN0aW9uX2Vu ZCgiJHtQUkVGSVh9X2NiY19lbmNyeXB0Iik7Ci0rCi0rIyBNZWNoYW5pY2FsIHBvcnQgZnJvbSBh ZXNuaS14ODZfNjQucGwuCi0rIwotKyMgX2Flc25pX3NldF9lbmNyeXB0X2tleSBpcyBwcml2YXRl IGludGVyZmFjZSwKLSsjIGlucHV0OgotKyMJImVheCIJY29uc3QgdW5zaWduZWQgY2hhciAqdXNl cktleQotKyMJJHJvdW5kcwlpbnQgYml0cwotKyMJJGtleQlBRVNfS0VZICprZXkKLSsjIG91dHB1 dDoKLSsjCSJlYXgiCXJldHVybiBjb2RlCi0rIwkkcm91bmQJcm91bmRzCi0rCi0rJmZ1bmN0aW9u X2JlZ2luX0IoIl9hZXNuaV9zZXRfZW5jcnlwdF9rZXkiKTsKLSsJJnRlc3QJKCJlYXgiLCJlYXgi KTsKLSsJJmp6CSgmbGFiZWwoImJhZF9wb2ludGVyIikpOwotKwkmdGVzdAkoJGtleSwka2V5KTsK LSsJJmp6CSgmbGFiZWwoImJhZF9wb2ludGVyIikpOwotKwotKwkmbW92dXBzCSgieG1tMCIsJlFX UCgwLCJlYXgiKSk7CSMgcHVsbCBmaXJzdCAxMjggYml0cyBvZiAqdXNlcktleQotKwkmcHhvcgko InhtbTQiLCJ4bW00Iik7CSMgbG93IGR3b3JkIG9mIHhtbTQgaXMgYXNzdW1lZCAwCi0rCSZsZWEJ KCRrZXksJkRXUCgxNiwka2V5KSk7Ci0rCSZjbXAJKCRyb3VuZHMsMjU2KTsKLSsJJmplCSgmbGFi ZWwoIjE0cm91bmRzIikpOwotKwkmY21wCSgkcm91bmRzLDE5Mik7Ci0rCSZqZQkoJmxhYmVsKCIx MnJvdW5kcyIpKTsKLSsJJmNtcAkoJHJvdW5kcywxMjgpOwotKwkmam5lCSgmbGFiZWwoImJhZF9r ZXliaXRzIikpOwotKwotKyZzZXRfbGFiZWwoIjEwcm91bmRzIiwxNik7Ci0rCSZtb3YJCSgkcm91 bmRzLDkpOwotKwkmJG1vdmVrZXkJKCZRV1AoLTE2LCRrZXkpLCJ4bW0wIik7CSMgcm91bmQgMAot KwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMCIsMHgwMSk7CQkjIHJvdW5kIDEKLSsJJmNh bGwJCSgmbGFiZWwoImtleV8xMjhfY29sZCIpKTsKLSsJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIs InhtbTAiLDB4Mik7CQkjIHJvdW5kIDIKLSsJJmNhbGwJCSgmbGFiZWwoImtleV8xMjgiKSk7Ci0r CSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0wIiwweDA0KTsJCSMgcm91bmQgMwotKwkmY2Fs bAkJKCZsYWJlbCgia2V5XzEyOCIpKTsKLSsJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTAi LDB4MDgpOwkJIyByb3VuZCA0Ci0rCSZjYWxsCQkoJmxhYmVsKCJrZXlfMTI4IikpOwotKwkmYWVz a2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMCIsMHgxMCk7CQkjIHJvdW5kIDUKLSsJJmNhbGwJCSgm bGFiZWwoImtleV8xMjgiKSk7Ci0rCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0wIiwweDIw KTsJCSMgcm91bmQgNgotKwkmY2FsbAkJKCZsYWJlbCgia2V5XzEyOCIpKTsKLSsJJmFlc2tleWdl bmFzc2lzdCgieG1tMSIsInhtbTAiLDB4NDApOwkJIyByb3VuZCA3Ci0rCSZjYWxsCQkoJmxhYmVs KCJrZXlfMTI4IikpOwotKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMCIsMHg4MCk7CQkj IHJvdW5kIDgKLSsJJmNhbGwJCSgmbGFiZWwoImtleV8xMjgiKSk7Ci0rCSZhZXNrZXlnZW5hc3Np c3QoInhtbTEiLCJ4bW0wIiwweDFiKTsJCSMgcm91bmQgOQotKwkmY2FsbAkJKCZsYWJlbCgia2V5 XzEyOCIpKTsKLSsJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTAiLDB4MzYpOwkJIyByb3Vu ZCAxMAotKwkmY2FsbAkJKCZsYWJlbCgia2V5XzEyOCIpKTsKLSsJJiRtb3Zla2V5CSgmUVdQKDAs JGtleSksInhtbTAiKTsKLSsJJm1vdgkJKCZEV1AoODAsJGtleSksJHJvdW5kcyk7Ci0rCSZ4b3IJ CSgiZWF4IiwiZWF4Iik7Ci0rCSZyZXQoKTsKLSsKLSsmc2V0X2xhYmVsKCJrZXlfMTI4IiwxNik7 Ci0rCSYkbW92ZWtleQkoJlFXUCgwLCRrZXkpLCJ4bW0wIik7Ci0rCSZsZWEJCSgka2V5LCZEV1Ao MTYsJGtleSkpOwotKyZzZXRfbGFiZWwoImtleV8xMjhfY29sZCIpOwotKwkmc2h1ZnBzCQkoInht bTQiLCJ4bW0wIiwwYjAwMDEwMDAwKTsKLSsJJnB4b3IJCSgieG1tMCIsInhtbTQiKTsKLSsJJnNo dWZwcwkJKCJ4bW00IiwieG1tMCIsMGIxMDAwMTEwMCwpOwotKwkmcHhvcgkJKCJ4bW0wIiwieG1t NCIpOwotKwkmcHNodWZkCQkoInhtbTEiLCJ4bW0xIiwwYjExMTExMTExKTsJIyBjcml0aWNhbCBw YXRoCi0rCSZweG9yCQkoInhtbTAiLCJ4bW0xIik7Ci0rCSZyZXQoKTsKLSsKLSsmc2V0X2xhYmVs KCIxMnJvdW5kcyIsMTYpOwotKwkmbW92cQkJKCJ4bW0yIiwmUVdQKDE2LCJlYXgiKSk7CSMgcmVt YWluaW5nIDEvMyBvZiAqdXNlcktleQotKwkmbW92CQkoJHJvdW5kcywxMSk7Ci0rCSYkbW92ZWtl eQkoJlFXUCgtMTYsJGtleSksInhtbTAiKQkJIyByb3VuZCAwCi0rCSZhZXNrZXlnZW5hc3Npc3Qo InhtbTEiLCJ4bW0yIiwweDAxKTsJCSMgcm91bmQgMSwyCi0rCSZjYWxsCQkoJmxhYmVsKCJrZXlf MTkyYV9jb2xkIikpOwotKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMiIsMHgwMik7CQkj IHJvdW5kIDIsMwotKwkmY2FsbAkJKCZsYWJlbCgia2V5XzE5MmIiKSk7Ci0rCSZhZXNrZXlnZW5h c3Npc3QoInhtbTEiLCJ4bW0yIiwweDA0KTsJCSMgcm91bmQgNCw1Ci0rCSZjYWxsCQkoJmxhYmVs KCJrZXlfMTkyYSIpKTsKLSsJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4MDgpOwkJ IyByb3VuZCA1LDYKLSsJJmNhbGwJCSgmbGFiZWwoImtleV8xOTJiIikpOwotKwkmYWVza2V5Z2Vu YXNzaXN0KCJ4bW0xIiwieG1tMiIsMHgxMCk7CQkjIHJvdW5kIDcsOAotKwkmY2FsbAkJKCZsYWJl bCgia2V5XzE5MmEiKSk7Ci0rCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0yIiwweDIwKTsJ CSMgcm91bmQgOCw5Ci0rCSZjYWxsCQkoJmxhYmVsKCJrZXlfMTkyYiIpKTsKLSsJJmFlc2tleWdl bmFzc2lzdCgieG1tMSIsInhtbTIiLDB4NDApOwkJIyByb3VuZCAxMCwxMQotKwkmY2FsbAkJKCZs YWJlbCgia2V5XzE5MmEiKSk7Ci0rCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0yIiwweDgw KTsJCSMgcm91bmQgMTEsMTIKLSsJJmNhbGwJCSgmbGFiZWwoImtleV8xOTJiIikpOwotKwkmJG1v dmVrZXkJKCZRV1AoMCwka2V5KSwieG1tMCIpOwotKwkmbW92CQkoJkRXUCg0OCwka2V5KSwkcm91 bmRzKTsKLSsJJnhvcgkJKCJlYXgiLCJlYXgiKTsKLSsJJnJldCgpOwotKwotKyZzZXRfbGFiZWwo ImtleV8xOTJhIiwxNik7Ci0rCSYkbW92ZWtleQkoJlFXUCgwLCRrZXkpLCJ4bW0wIik7Ci0rCSZs ZWEJCSgka2V5LCZEV1AoMTYsJGtleSkpOwotKyZzZXRfbGFiZWwoImtleV8xOTJhX2NvbGQiLDE2 KTsKLSsJJm1vdmFwcwkJKCJ4bW01IiwieG1tMiIpOwotKyZzZXRfbGFiZWwoImtleV8xOTJiX3dh cm0iKTsKLSsJJnNodWZwcwkJKCJ4bW00IiwieG1tMCIsMGIwMDAxMDAwMCk7Ci0rCSZtb3ZhcHMJ CSgieG1tMyIsInhtbTIiKTsKLSsJJnB4b3IJCSgieG1tMCIsInhtbTQiKTsKLSsJJnNodWZwcwkJ KCJ4bW00IiwieG1tMCIsMGIxMDAwMTEwMCk7Ci0rCSZwc2xsZHEJCSgieG1tMyIsNCk7Ci0rCSZw eG9yCQkoInhtbTAiLCJ4bW00Iik7Ci0rCSZwc2h1ZmQJCSgieG1tMSIsInhtbTEiLDBiMDEwMTAx MDEpOwkjIGNyaXRpY2FsIHBhdGgKLSsJJnB4b3IJCSgieG1tMiIsInhtbTMiKTsKLSsJJnB4b3IJ CSgieG1tMCIsInhtbTEiKTsKLSsJJnBzaHVmZAkJKCJ4bW0zIiwieG1tMCIsMGIxMTExMTExMSk7 Ci0rCSZweG9yCQkoInhtbTIiLCJ4bW0zIik7Ci0rCSZyZXQoKTsKLSsKLSsmc2V0X2xhYmVsKCJr ZXlfMTkyYiIsMTYpOwotKwkmbW92YXBzCQkoInhtbTMiLCJ4bW0wIik7Ci0rCSZzaHVmcHMJCSgi eG1tNSIsInhtbTAiLDBiMDEwMDAxMDApOwotKwkmJG1vdmVrZXkJKCZRV1AoMCwka2V5KSwieG1t NSIpOwotKwkmc2h1ZnBzCQkoInhtbTMiLCJ4bW0yIiwwYjAxMDAxMTEwKTsKLSsJJiRtb3Zla2V5 CSgmUVdQKDE2LCRrZXkpLCJ4bW0zIik7Ci0rCSZsZWEJCSgka2V5LCZEV1AoMzIsJGtleSkpOwot Kwkmam1wCQkoJmxhYmVsKCJrZXlfMTkyYl93YXJtIikpOwotKwotKyZzZXRfbGFiZWwoIjE0cm91 bmRzIiwxNik7Ci0rCSZtb3Z1cHMJCSgieG1tMiIsJlFXUCgxNiwiZWF4IikpOwkjIHJlbWFpbmlu ZyBoYWxmIG9mICp1c2VyS2V5Ci0rCSZtb3YJCSgkcm91bmRzLDEzKTsKLSsJJmxlYQkJKCRrZXks JkRXUCgxNiwka2V5KSk7Ci0rCSYkbW92ZWtleQkoJlFXUCgtMzIsJGtleSksInhtbTAiKTsJIyBy b3VuZCAwCi0rCSYkbW92ZWtleQkoJlFXUCgtMTYsJGtleSksInhtbTIiKTsJIyByb3VuZCAxCi0r CSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0yIiwweDAxKTsJCSMgcm91bmQgMgotKwkmY2Fs bAkJKCZsYWJlbCgia2V5XzI1NmFfY29sZCIpKTsKLSsJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIs InhtbTAiLDB4MDEpOwkJIyByb3VuZCAzCi0rCSZjYWxsCQkoJmxhYmVsKCJrZXlfMjU2YiIpKTsK LSsJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4MDIpOwkJIyByb3VuZCA0Ci0rCSZj YWxsCQkoJmxhYmVsKCJrZXlfMjU2YSIpKTsKLSsJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInht bTAiLDB4MDIpOwkJIyByb3VuZCA1Ci0rCSZjYWxsCQkoJmxhYmVsKCJrZXlfMjU2YiIpKTsKLSsJ JmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4MDQpOwkJIyByb3VuZCA2Ci0rCSZjYWxs CQkoJmxhYmVsKCJrZXlfMjU2YSIpKTsKLSsJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTAi LDB4MDQpOwkJIyByb3VuZCA3Ci0rCSZjYWxsCQkoJmxhYmVsKCJrZXlfMjU2YiIpKTsKLSsJJmFl c2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4MDgpOwkJIyByb3VuZCA4Ci0rCSZjYWxsCQko JmxhYmVsKCJrZXlfMjU2YSIpKTsKLSsJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTAiLDB4 MDgpOwkJIyByb3VuZCA5Ci0rCSZjYWxsCQkoJmxhYmVsKCJrZXlfMjU2YiIpKTsKLSsJJmFlc2tl eWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4MTApOwkJIyByb3VuZCAxMAotKwkmY2FsbAkJKCZs YWJlbCgia2V5XzI1NmEiKSk7Ci0rCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0wIiwweDEw KTsJCSMgcm91bmQgMTEKLSsJJmNhbGwJCSgmbGFiZWwoImtleV8yNTZiIikpOwotKwkmYWVza2V5 Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMiIsMHgyMCk7CQkjIHJvdW5kIDEyCi0rCSZjYWxsCQkoJmxh YmVsKCJrZXlfMjU2YSIpKTsKLSsJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTAiLDB4MjAp OwkJIyByb3VuZCAxMwotKwkmY2FsbAkJKCZsYWJlbCgia2V5XzI1NmIiKSk7Ci0rCSZhZXNrZXln ZW5hc3Npc3QoInhtbTEiLCJ4bW0yIiwweDQwKTsJCSMgcm91bmQgMTQKLSsJJmNhbGwJCSgmbGFi ZWwoImtleV8yNTZhIikpOwotKwkmJG1vdmVrZXkJKCZRV1AoMCwka2V5KSwieG1tMCIpOwotKwkm bW92CQkoJkRXUCgxNiwka2V5KSwkcm91bmRzKTsKLSsJJnhvcgkJKCJlYXgiLCJlYXgiKTsKLSsJ JnJldCgpOwotKwotKyZzZXRfbGFiZWwoImtleV8yNTZhIiwxNik7Ci0rCSYkbW92ZWtleQkoJlFX UCgwLCRrZXkpLCJ4bW0yIik7Ci0rCSZsZWEJCSgka2V5LCZEV1AoMTYsJGtleSkpOwotKyZzZXRf bGFiZWwoImtleV8yNTZhX2NvbGQiKTsKLSsJJnNodWZwcwkJKCJ4bW00IiwieG1tMCIsMGIwMDAx MDAwMCk7Ci0rCSZweG9yCQkoInhtbTAiLCJ4bW00Iik7Ci0rCSZzaHVmcHMJCSgieG1tNCIsInht bTAiLDBiMTAwMDExMDApOwotKwkmcHhvcgkJKCJ4bW0wIiwieG1tNCIpOwotKwkmcHNodWZkCQko InhtbTEiLCJ4bW0xIiwwYjExMTExMTExKTsJIyBjcml0aWNhbCBwYXRoCi0rCSZweG9yCQkoInht bTAiLCJ4bW0xIik7Ci0rCSZyZXQoKTsKLSsKLSsmc2V0X2xhYmVsKCJrZXlfMjU2YiIsMTYpOwot KwkmJG1vdmVrZXkJKCZRV1AoMCwka2V5KSwieG1tMCIpOwotKwkmbGVhCQkoJGtleSwmRFdQKDE2 LCRrZXkpKTsKLSsKLSsJJnNodWZwcwkJKCJ4bW00IiwieG1tMiIsMGIwMDAxMDAwMCk7Ci0rCSZw eG9yCQkoInhtbTIiLCJ4bW00Iik7Ci0rCSZzaHVmcHMJCSgieG1tNCIsInhtbTIiLDBiMTAwMDEx MDApOwotKwkmcHhvcgkJKCJ4bW0yIiwieG1tNCIpOwotKwkmcHNodWZkCQkoInhtbTEiLCJ4bW0x IiwwYjEwMTAxMDEwKTsJIyBjcml0aWNhbCBwYXRoCi0rCSZweG9yCQkoInhtbTIiLCJ4bW0xIik7 Ci0rCSZyZXQoKTsKLSsKLSsmc2V0X2xhYmVsKCJiYWRfcG9pbnRlciIsNCk7Ci0rCSZtb3YJKCJl YXgiLC0xKTsKLSsJJnJldAkoKTsKLSsmc2V0X2xhYmVsKCJiYWRfa2V5Yml0cyIsNCk7Ci0rCSZt b3YJKCJlYXgiLC0yKTsKLSsJJnJldAkoKTsKLSsmZnVuY3Rpb25fZW5kX0IoIl9hZXNuaV9zZXRf ZW5jcnlwdF9rZXkiKTsKLSsKLSsjIGludCAkUFJFRklYX3NldF9lbmNyeXB0X2tleSAoY29uc3Qg dW5zaWduZWQgY2hhciAqdXNlcktleSwgaW50IGJpdHMsCi0rIyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEFFU19LRVkgKmtleSkKLSsmZnVuY3Rpb25fYmVnaW5fQigiJHtQUkVGSVh9X3Nl dF9lbmNyeXB0X2tleSIpOwotKwkmbW92CSgiZWF4Iiwmd3BhcmFtKDApKTsKLSsJJm1vdgkoJHJv dW5kcywmd3BhcmFtKDEpKTsKLSsJJm1vdgkoJGtleSwmd3BhcmFtKDIpKTsKLSsJJmNhbGwJKCJf YWVzbmlfc2V0X2VuY3J5cHRfa2V5Iik7Ci0rCSZyZXQJKCk7Ci0rJmZ1bmN0aW9uX2VuZF9CKCIk e1BSRUZJWH1fc2V0X2VuY3J5cHRfa2V5Iik7Ci0rCi0rIyBpbnQgJFBSRUZJWF9zZXRfZGVjcnlw dF9rZXkgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnVzZXJLZXksIGludCBiaXRzLAotKyMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBBRVNfS0VZICprZXkpCi0rJmZ1bmN0aW9uX2JlZ2luX0Io IiR7UFJFRklYfV9zZXRfZGVjcnlwdF9rZXkiKTsKLSsJJm1vdgkoImVheCIsJndwYXJhbSgwKSk7 Ci0rCSZtb3YJKCRyb3VuZHMsJndwYXJhbSgxKSk7Ci0rCSZtb3YJKCRrZXksJndwYXJhbSgyKSk7 Ci0rCSZjYWxsCSgiX2Flc25pX3NldF9lbmNyeXB0X2tleSIpOwotKwkmbW92CSgka2V5LCZ3cGFy YW0oMikpOwotKwkmc2hsCSgkcm91bmRzLDQpCSMgcm91bmRzLTEgYWZ0ZXIgX2Flc25pX3NldF9l bmNyeXB0X2tleQotKwkmdGVzdAkoImVheCIsImVheCIpOwotKwkmam56CSgmbGFiZWwoImRlY19r ZXlfcmV0IikpOwotKwkmbGVhCSgiZWF4IiwmRFdQKDE2LCRrZXksJHJvdW5kcykpOwkjIGVuZCBv ZiBrZXkgc2NoZWR1bGUKLSsKLSsJJiRtb3Zla2V5CSgieG1tMCIsJlFXUCgwLCRrZXkpKTsJIyBq dXN0IHN3YXAKLSsJJiRtb3Zla2V5CSgieG1tMSIsJlFXUCgwLCJlYXgiKSk7Ci0rCSYkbW92ZWtl eQkoJlFXUCgwLCJlYXgiKSwieG1tMCIpOwotKwkmJG1vdmVrZXkJKCZRV1AoMCwka2V5KSwieG1t MSIpOwotKwkmbGVhCQkoJGtleSwmRFdQKDE2LCRrZXkpKTsKLSsJJmxlYQkJKCJlYXgiLCZEV1Ao LTE2LCJlYXgiKSk7Ci0rCi0rJnNldF9sYWJlbCgiZGVjX2tleV9pbnZlcnNlIik7Ci0rCSYkbW92 ZWtleQkoInhtbTAiLCZRV1AoMCwka2V5KSk7CSMgc3dhcCBhbmQgaW52ZXJzZQotKwkmJG1vdmVr ZXkJKCJ4bW0xIiwmUVdQKDAsImVheCIpKTsKLSsJJmFlc2ltYwkJKCJ4bW0wIiwieG1tMCIpOwot KwkmYWVzaW1jCQkoInhtbTEiLCJ4bW0xIik7Ci0rCSZsZWEJCSgka2V5LCZEV1AoMTYsJGtleSkp OwotKwkmbGVhCQkoImVheCIsJkRXUCgtMTYsImVheCIpKTsKLSsJJmNtcAkJKCJlYXgiLCRrZXkp OwotKwkmJG1vdmVrZXkJKCZRV1AoMTYsImVheCIpLCJ4bW0wIik7Ci0rCSYkbW92ZWtleQkoJlFX UCgtMTYsJGtleSksInhtbTEiKTsKLSsJJmphCQkoJmxhYmVsKCJkZWNfa2V5X2ludmVyc2UiKSk7 Ci0rCi0rCSYkbW92ZWtleQkoInhtbTAiLCZRV1AoMCwka2V5KSk7CSMgaW52ZXJzZSBtaWRkbGUK LSsJJmFlc2ltYwkJKCJ4bW0wIiwieG1tMCIpOwotKwkmJG1vdmVrZXkJKCZRV1AoMCwka2V5KSwi eG1tMCIpOwotKwotKwkmeG9yCQkoImVheCIsImVheCIpOwkJIyByZXR1cm4gc3VjY2VzcwotKyZz ZXRfbGFiZWwoImRlY19rZXlfcmV0Iik7Ci0rCSZyZXQJKCk7Ci0rJmZ1bmN0aW9uX2VuZF9CKCIk e1BSRUZJWH1fc2V0X2RlY3J5cHRfa2V5Iik7Ci0rJmFzY2l6KCJBRVMgZm9yIEludGVsIEFFUy1O SSwgQ1JZUFRPR0FNUyBieSA8YXBwcm9cQG9wZW5zc2wub3JnPiIpOwotKwotKyZhc21fZmluaXNo KCk7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9hZXMvYXNtL2Flc25pLXg4 Nl82NC5wbC5hZXNuaSBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9hZXMvYXNtL2Flc25pLXg4 Nl82NC5wbAotLS0tIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2Flcy9hc20vYWVzbmkteDg2 XzY0LnBsLmFlc25pCTIwMTAtMDEtMTIgMjI6MTg6MDYuMDAwMDAwMDAwICswMTAwCi0rKysgb3Bl bnNzbC0xLjAuMC1iZXRhNC9jcnlwdG8vYWVzL2FzbS9hZXNuaS14ODZfNjQucGwJMjAxMC0wMS0x MiAyMjoxODowNi4wMDAwMDAwMDAgKzAxMDAKLUBAIC0wLDAgKzEsOTkxIEBACi0rIyEvdXNyL2Jp bi9lbnYgcGVybAotKyMKLSsjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rIyBXcml0dGVuIGJ5IEFuZHkgUG9seWFr b3YgPGFwcHJvQGZ5LmNoYWxtZXJzLnNlPiBmb3IgdGhlIE9wZW5TU0wKLSsjIHByb2plY3QuIFRo ZSBtb2R1bGUgaXMsIGhvd2V2ZXIsIGR1YWwgbGljZW5zZWQgdW5kZXIgT3BlblNTTCBhbmQKLSsj IENSWVBUT0dBTVMgbGljZW5zZXMgZGVwZW5kaW5nIG9uIHdoZXJlIHlvdSBvYnRhaW4gaXQuIEZv ciBmdXJ0aGVyCi0rIyBkZXRhaWxzIHNlZSBodHRwOi8vd3d3Lm9wZW5zc2wub3JnL35hcHByby9j cnlwdG9nYW1zLy4KLSsjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rIwotKyMgVGhpcyBtb2R1bGUgaW1wbGVtZW50 cyBzdXBwb3J0IGZvciBJbnRlbCBBRVMtTkkgZXh0ZW5zaW9uLiBJbgotKyMgT3BlblNTTCBjb250 ZXh0IGl0J3MgdXNlZCB3aXRoIEludGVsIGVuZ2luZSwgYnV0IGNhbiBhbHNvIGJlIHVzZWQgYXMK LSsjIGRyb3AtaW4gcmVwbGFjZW1lbnQgZm9yIGNyeXB0by9hZXMvYXNtL2Flcy14ODZfNjQucGwg W3NlZSBiZWxvdyBmb3IKLSsjIGRldGFpbHNdLgotKwotKyRQUkVGSVg9ImFlc25pIjsJIyBpZiAk UFJFRklYIGlzIHNldCB0byAiQUVTIiwgdGhlIHNjcmlwdAotKwkJCSMgZ2VuZXJhdGVzIGRyb3At aW4gcmVwbGFjZW1lbnQgZm9yCi0rCQkJIyBjcnlwdG8vYWVzL2FzbS9hZXMteDg2XzY0LnBsOi0p Ci0rCi0rJGZsYXZvdXIgPSBzaGlmdDsKLSskb3V0cHV0ICA9IHNoaWZ0OwotK2lmICgkZmxhdm91 ciA9fiAvXC4vKSB7ICRvdXRwdXQgPSAkZmxhdm91cjsgdW5kZWYgJGZsYXZvdXI7IH0KLSsKLSsk d2luNjQ9MDsgJHdpbjY0PTEgaWYgKCRmbGF2b3VyID1+IC9bbm1dYXNtfG1pbmd3NjQvIHx8ICRv dXRwdXQgPX4gL1wuYXNtJC8pOwotKwotKyQwID1+IG0vKC4qW1wvXFxdKVteXC9cXF0rJC87ICRk aXI9JDE7Ci0rKCAkeGxhdGU9IiR7ZGlyfXg4Nl82NC14bGF0ZS5wbCIgYW5kIC1mICR4bGF0ZSAp IG9yCi0rKCAkeGxhdGU9IiR7ZGlyfS4uLy4uL3Blcmxhc20veDg2XzY0LXhsYXRlLnBsIiBhbmQg LWYgJHhsYXRlKSBvcgotK2RpZSAiY2FuJ3QgbG9jYXRlIHg4Nl82NC14bGF0ZS5wbCI7Ci0rCi0r b3BlbiBTVERPVVQsInwgJF5YICR4bGF0ZSAkZmxhdm91ciAkb3V0cHV0IjsKLSsKLSskbW92a2V5 ID0gJFBSRUZJWCBlcSAiYWVzbmkiID8gIm1vdmFwcyIgOiAibW92dXBzIjsKLStAXzRhcmdzPSR3 aW42ND8JKCIlcmN4IiwiJXJkeCIsIiVyOCIsICIlcjkiKSA6CSMgV2luNjQgb3JkZXIKLSsJCSgi JXJkaSIsIiVyc2kiLCIlcmR4IiwiJXJjeCIpOwkjIFVuaXggb3JkZXIKLSsKLSskY29kZT0iLnRl eHRcbiI7Ci0rCi0rJHJvdW5kcz0iJWVheCI7CSMgaW5wdXQgdG8gYW5kIGNoYW5nZWQgYnkgYWVz bmlfW2VufGRlXWNyeXB0TiAhISEKLSsjIHRoaXMgaXMgbmF0dXJhbCBVbml4IGFyZ3VtZW50IG9y ZGVyIGZvciBwdWJsaWMgJFBSRUZJWF9bZWNifGNiY11fZW5jcnlwdCAuLi4KLSskaW5wPSIlcmRp IjsKLSskb3V0PSIlcnNpIjsKLSskbGVuPSIlcmR4IjsKLSska2V5PSIlcmN4IjsJIyBpbnB1dCB0 byBhbmQgY2hhbmdlZCBieSBhZXNuaV9bZW58ZGVdY3J5cHROICEhIQotKyRpdnA9IiVyOCI7CSMg Y2JjCi0rCi0rJHJuZHNfPSIlcjEwZCI7CSMgYmFja3VwIGNvcHkgZm9yICRyb3VuZHMKLSska2V5 Xz0iJXIxMSI7CSMgYmFja3VwIGNvcHkgZm9yICRrZXkKLSsKLSsjICV4bW0gcmVnaXN0ZXIgbGF5 b3V0Ci0rJGlub3V0MD0iJXhtbTAiOwkkaW5vdXQxPSIleG1tMSI7Ci0rJGlub3V0Mj0iJXhtbTIi OwkkaW5vdXQzPSIleG1tMyI7Ci0rJHJuZGtleTA9IiV4bW00IjsJJHJuZGtleTE9IiV4bW01IjsK LSsKLSskaXY9IiV4bW02IjsJCSRpbjA9IiV4bW03IjsJIyB1c2VkIGluIENCQyBkZWNyeXB0Ci0r JGluMT0iJXhtbTgiOwkJJGluMj0iJXhtbTkiOwotKwwKLSsjIElubGluZSB2ZXJzaW9uIG9mIGlu dGVybmFsIGFlc25pX1tlbnxkZV1jcnlwdDEuCi0rIwotKyMgV2h5IGZvbGRlZCBsb29wPyBCZWNh dXNlIGFlc1tlbmN8ZGVjXSBpcyBzbG93IGVub3VnaCB0byBhY2NvbW1vZGF0ZQotKyMgY3ljbGVz IHdoaWNoIHRha2UgY2FyZSBvZiBsb29wIHZhcmlhYmxlcy4uLgotK3sgbXkgJHNuOwotK3N1YiBh ZXNuaV9nZW5lcmF0ZTEgewotK215ICgkcCwka2V5LCRyb3VuZHMpPUBfOwotKysrJHNuOwotKyRj b2RlLj08PF9fXzsKLSsJJG1vdmtleQkoJGtleSksJHJuZGtleTAKLSsJJG1vdmtleQkxNigka2V5 KSwkcm5ka2V5MQotKwlsZWEJMzIoJGtleSksJGtleQotKwlweG9yCSRybmRrZXkwLCRpbm91dDAK LSsuTG9vcF8ke3B9MV8kc246Ci0rCWFlcyR7cH0JJHJuZGtleTEsJGlub3V0MAotKwlkZWMJJHJv dW5kcwotKwkkbW92a2V5CSgka2V5KSwkcm5ka2V5MQotKwlsZWEJMTYoJGtleSksJGtleQotKwlq bnoJLkxvb3BfJHtwfTFfJHNuCSMgbG9vcCBib2R5IGlzIDE2IGJ5dGVzCi0rCWFlcyR7cH1sYXN0 CSRybmRrZXkxLCRpbm91dDAKLStfX18KLSt9fQotKyMgdm9pZCAkUFJFRklYX1tlbnxkZV1jcnlw dCAoY29uc3Qgdm9pZCAqaW5wLHZvaWQgKm91dCxjb25zdCBBRVNfS0VZICprZXkpOwotKyMKLSt7 IG15ICgkaW5wLCRvdXQsJGtleSkgPSBAXzRhcmdzOwotKwotKyRjb2RlLj08PF9fXzsKLSsuZ2xv YmwJJHtQUkVGSVh9X2VuY3J5cHQKLSsudHlwZQkke1BSRUZJWH1fZW5jcnlwdCxcQGFiaS1vbW5p cG90ZW50Ci0rLmFsaWduCTE2Ci0rJHtQUkVGSVh9X2VuY3J5cHQ6Ci0rCW1vdnVwcwkoJGlucCks JGlub3V0MAkJIyBsb2FkIGlucHV0Ci0rCW1vdgkyNDAoJGtleSksJHJvdW5kcwkjIHB1bGwgJHJv dW5kcwotK19fXwotKwkmYWVzbmlfZ2VuZXJhdGUxKCJlbmMiLCRrZXksJHJvdW5kcyk7Ci0rJGNv ZGUuPTw8X19fOwotKwltb3Z1cHMJJGlub3V0MCwoJG91dCkJCSMgb3V0cHV0Ci0rCXJldAotKy5z aXplCSR7UFJFRklYfV9lbmNyeXB0LC4tJHtQUkVGSVh9X2VuY3J5cHQKLSsKLSsuZ2xvYmwJJHtQ UkVGSVh9X2RlY3J5cHQKLSsudHlwZQkke1BSRUZJWH1fZGVjcnlwdCxcQGFiaS1vbW5pcG90ZW50 Ci0rLmFsaWduCTE2Ci0rJHtQUkVGSVh9X2RlY3J5cHQ6Ci0rCW1vdnVwcwkoJGlucCksJGlub3V0 MAkJIyBsb2FkIGlucHV0Ci0rCW1vdgkyNDAoJGtleSksJHJvdW5kcwkjIHB1bGwgJHJvdW5kcwot K19fXwotKwkmYWVzbmlfZ2VuZXJhdGUxKCJkZWMiLCRrZXksJHJvdW5kcyk7Ci0rJGNvZGUuPTw8 X19fOwotKwltb3Z1cHMJJGlub3V0MCwoJG91dCkJCSMgb3V0cHV0Ci0rCXJldAotKy5zaXplCSR7 UFJFRklYfV9kZWNyeXB0LCAuLSR7UFJFRklYfV9kZWNyeXB0Ci0rX19fCi0rfQotKwwKLSsjIF9h ZXNuaV9bZW58ZGVdY3J5cHRbMzRdIGFyZSBwcml2YXRlIGludGVyZmFjZXMsIE4gZGVub3RlcyBp bnRlcmxlYXZlCi0rIyBmYWN0b3IuIFdoeSAzeCBzdWJyb3V0aW5lIGlzIHVzZWQgaW4gbG9vcHM/ IEV2ZW4gdGhvdWdoIGFlc1tlbmN8ZGVjXQotKyMgbGF0ZW5jeSBpcyA2LCBpdCB0dXJuZWQgb3V0 IHRoYXQgaXQgY2FuIGJlIHNjaGVkdWxlZCBvbmx5IGV2ZXJ5Ci0rIyAqc2Vjb25kKiBjeWNsZS4g VGh1cyAzeCBpbnRlcmxlYXZlIGlzIHRoZSBvbmUgcHJvdmlkaW5nIG9wdGltYWwKLSsjIHV0aWxp emF0aW9uLCBpLmUuIHdoZW4gc3Vicm91dGluZSdzIHRocm91Z2hwdXQgaXMgdmlydHVhbGx5IHNh bWUgYXMKLSsjIG9mIG5vbi1pbnRlcmxlYXZlZCBzdWJyb3V0aW5lIFtmb3IgbnVtYmVyIG9mIGlu cHV0IGJsb2NrcyB1cCB0byAzXS4KLSsjIFRoaXMgaXMgd2h5IGl0IG1ha2VzIG5vIHNlbnNlIHRv IGltcGxlbWVudCAyeCBzdWJyb3V0aW5lLiBBcyBzb29uCi0rIyBhcy9pZiBJbnRlbCBpbXByb3Zl cyB0aHJvdWdocHV0IGJ5IG1ha2luZyBpdCBwb3NzaWJsZSB0byBzY2hlZHVsZQotKyMgdGhlIGlu c3RydWN0aW9ucyBpbiBxdWVzdGlvbiAqZXZlcnkqIGN5Y2xlcyBJIHdvdWxkIGhhdmUgdG8KLSsj IGltcGxlbWVudCA2eCBpbnRlcmxlYXZlIGFuZCB1c2UgaXQgaW4gbG9vcC4uLgotK3N1YiBhZXNu aV9nZW5lcmF0ZTMgewotK215ICRkaXI9c2hpZnQ7Ci0rIyBBcyBhbHJlYWR5IG1lbnRpb25lZCBp dCB0YWtlcyBpbiAka2V5IGFuZCAkcm91bmRzLCB3aGljaCBhcmUgKm5vdCoKLSsjIHByZXNlcnZl ZC4gJGlub3V0WzAtMl0gaXMgY2lwaGVyL2NsZWFyIHRleHQuLi4KLSskY29kZS49PDxfX187Ci0r LnR5cGUJX2Flc25pXyR7ZGlyfXJ5cHQzLFxAYWJpLW9tbmlwb3RlbnQKLSsuYWxpZ24JMTYKLStf YWVzbmlfJHtkaXJ9cnlwdDM6Ci0rCSRtb3ZrZXkJKCRrZXkpLCRybmRrZXkwCi0rCXNocglcJDEs JHJvdW5kcwotKwkkbW92a2V5CTE2KCRrZXkpLCRybmRrZXkxCi0rCWxlYQkzMigka2V5KSwka2V5 Ci0rCXB4b3IJJHJuZGtleTAsJGlub3V0MAotKwlweG9yCSRybmRrZXkwLCRpbm91dDEKLSsJcHhv cgkkcm5ka2V5MCwkaW5vdXQyCi0rCi0rLkwke2Rpcn1fbG9vcDM6Ci0rCWFlcyR7ZGlyfQkkcm5k a2V5MSwkaW5vdXQwCi0rCSRtb3ZrZXkJCSgka2V5KSwkcm5ka2V5MAotKwlhZXMke2Rpcn0JJHJu ZGtleTEsJGlub3V0MQotKwlkZWMJCSRyb3VuZHMKLSsJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91 dDIKLSsJYWVzJHtkaXJ9CSRybmRrZXkwLCRpbm91dDAKLSsJJG1vdmtleQkJMTYoJGtleSksJHJu ZGtleTEKLSsJYWVzJHtkaXJ9CSRybmRrZXkwLCRpbm91dDEKLSsJbGVhCQkzMigka2V5KSwka2V5 Ci0rCWFlcyR7ZGlyfQkkcm5ka2V5MCwkaW5vdXQyCi0rCWpuegkJLkwke2Rpcn1fbG9vcDMKLSsK LSsJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDAKLSsJJG1vdmtleQkJKCRrZXkpLCRybmRrZXkw Ci0rCWFlcyR7ZGlyfQkkcm5ka2V5MSwkaW5vdXQxCi0rCWFlcyR7ZGlyfQkkcm5ka2V5MSwkaW5v dXQyCi0rCWFlcyR7ZGlyfWxhc3QJJHJuZGtleTAsJGlub3V0MAotKwlhZXMke2Rpcn1sYXN0CSRy bmRrZXkwLCRpbm91dDEKLSsJYWVzJHtkaXJ9bGFzdAkkcm5ka2V5MCwkaW5vdXQyCi0rCXJldAot Ky5zaXplCV9hZXNuaV8ke2Rpcn1yeXB0MywuLV9hZXNuaV8ke2Rpcn1yeXB0MwotK19fXwotK30K LSsjIDR4IGludGVybGVhdmUgaXMgaW1wbGVtZW50ZWQgdG8gaW1wcm92ZSBzbWFsbCBibG9jayBw ZXJmb3JtYW5jZSwKLSsjIG1vc3Qgbm90YWJseSBbYW5kIG5hdHVyYWxseV0gNCBibG9jayBieSB+ MzAlLiBPbmUgY2FuIGFyZ3VlIHRoYXQgb25lCi0rIyBzaG91bGQgaGF2ZSBpbXBsZW1lbnRlZCA1 eCBhcyB3ZWxsLCBidXQgaW1wcm92ZW1lbnQgd291bGQgYmUgPDIwJSwKLSsjIHNvIGl0J3Mgbm90 IHdvcnRoIGl0Li4uCi0rc3ViIGFlc25pX2dlbmVyYXRlNCB7Ci0rbXkgJGRpcj1zaGlmdDsKLSsj IEFzIGFscmVhZHkgbWVudGlvbmVkIGl0IHRha2VzIGluICRrZXkgYW5kICRyb3VuZHMsIHdoaWNo IGFyZSAqbm90KgotKyMgcHJlc2VydmVkLiAkaW5vdXRbMC0zXSBpcyBjaXBoZXIvY2xlYXIgdGV4 dC4uLgotKyRjb2RlLj08PF9fXzsKLSsudHlwZQlfYWVzbmlfJHtkaXJ9cnlwdDQsXEBhYmktb21u aXBvdGVudAotKy5hbGlnbgkxNgotK19hZXNuaV8ke2Rpcn1yeXB0NDoKLSsJJG1vdmtleQkoJGtl eSksJHJuZGtleTAKLSsJc2hyCVwkMSwkcm91bmRzCi0rCSRtb3ZrZXkJMTYoJGtleSksJHJuZGtl eTEKLSsJbGVhCTMyKCRrZXkpLCRrZXkKLSsJcHhvcgkkcm5ka2V5MCwkaW5vdXQwCi0rCXB4b3IJ JHJuZGtleTAsJGlub3V0MQotKwlweG9yCSRybmRrZXkwLCRpbm91dDIKLSsJcHhvcgkkcm5ka2V5 MCwkaW5vdXQzCi0rCi0rLkwke2Rpcn1fbG9vcDQ6Ci0rCWFlcyR7ZGlyfQkkcm5ka2V5MSwkaW5v dXQwCi0rCSRtb3ZrZXkJCSgka2V5KSwkcm5ka2V5MAotKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlu b3V0MQotKwlkZWMJCSRyb3VuZHMKLSsJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDIKLSsJYWVz JHtkaXJ9CSRybmRrZXkxLCRpbm91dDMKLSsJYWVzJHtkaXJ9CSRybmRrZXkwLCRpbm91dDAKLSsJ JG1vdmtleQkJMTYoJGtleSksJHJuZGtleTEKLSsJYWVzJHtkaXJ9CSRybmRrZXkwLCRpbm91dDEK LSsJbGVhCQkzMigka2V5KSwka2V5Ci0rCWFlcyR7ZGlyfQkkcm5ka2V5MCwkaW5vdXQyCi0rCWFl cyR7ZGlyfQkkcm5ka2V5MCwkaW5vdXQzCi0rCWpuegkJLkwke2Rpcn1fbG9vcDQKLSsKLSsJYWVz JHtkaXJ9CSRybmRrZXkxLCRpbm91dDAKLSsJJG1vdmtleQkJKCRrZXkpLCRybmRrZXkwCi0rCWFl cyR7ZGlyfQkkcm5ka2V5MSwkaW5vdXQxCi0rCWFlcyR7ZGlyfQkkcm5ka2V5MSwkaW5vdXQyCi0r CWFlcyR7ZGlyfQkkcm5ka2V5MSwkaW5vdXQzCi0rCWFlcyR7ZGlyfWxhc3QJJHJuZGtleTAsJGlu b3V0MAotKwlhZXMke2Rpcn1sYXN0CSRybmRrZXkwLCRpbm91dDEKLSsJYWVzJHtkaXJ9bGFzdAkk cm5ka2V5MCwkaW5vdXQyCi0rCWFlcyR7ZGlyfWxhc3QJJHJuZGtleTAsJGlub3V0MwotKwlyZXQK LSsuc2l6ZQlfYWVzbmlfJHtkaXJ9cnlwdDQsLi1fYWVzbmlfJHtkaXJ9cnlwdDQKLStfX18KLSt9 Ci0rJmFlc25pX2dlbmVyYXRlMygiZW5jIikgaWYgKCRQUkVGSVggZXEgImFlc25pIik7Ci0rJmFl c25pX2dlbmVyYXRlMygiZGVjIik7Ci0rJmFlc25pX2dlbmVyYXRlNCgiZW5jIikgaWYgKCRQUkVG SVggZXEgImFlc25pIik7Ci0rJmFlc25pX2dlbmVyYXRlNCgiZGVjIik7Ci0rDAotK2lmICgkUFJF RklYIGVxICJhZXNuaSIpIHsKLSsjIHZvaWQgYWVzbmlfZWNiX2VuY3J5cHQgKGNvbnN0IHZvaWQg KmluLCB2b2lkICpvdXQsCi0rIwkJCSAgc2l6ZV90IGxlbmd0aCwgY29uc3QgQUVTX0tFWSAqa2V5 LAotKyMJCQkgIGludCBlbmMpOwotKyRjb2RlLj08PF9fXzsKLSsuZ2xvYmwJYWVzbmlfZWNiX2Vu Y3J5cHQKLSsudHlwZQlhZXNuaV9lY2JfZW5jcnlwdCxcQGZ1bmN0aW9uLDUKLSsuYWxpZ24JMTYK LSthZXNuaV9lY2JfZW5jcnlwdDoKLSsJY21wCVwkMTYsJGxlbgkJIyBjaGVjayBsZW5ndGgKLSsJ amIJLkxlY2JfcmV0Ci0rCi0rCW1vdgkyNDAoJGtleSksJHJvdW5kcwkjIHB1bGwgJHJvdW5kcwot KwlhbmQJXCQtMTYsJGxlbgotKwltb3YJJGtleSwka2V5XwkJIyBiYWNrdXAgJGtleQotKwl0ZXN0 CSVyOGQsJXI4ZAkJIyA1dGggYXJndW1lbnQKLSsJbW92CSRyb3VuZHMsJHJuZHNfCQkjIGJhY2t1 cCAkcm91bmRzCi0rCWp6CS5MZWNiX2RlY3J5cHQKLSsjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tIEVDQiBFTkNSWVBUIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSMKLSsJc3ViCVwk MHg0MCwkbGVuCi0rCWpiZQkuTGVjYl9lbmNfdGFpbAotKwlqbXAJLkxlY2JfZW5jX2xvb3AzCi0r LmFsaWduIDE2Ci0rLkxlY2JfZW5jX2xvb3AzOgotKwltb3Z1cHMJKCRpbnApLCRpbm91dDAKLSsJ bW92dXBzCTB4MTAoJGlucCksJGlub3V0MQotKwltb3Z1cHMJMHgyMCgkaW5wKSwkaW5vdXQyCi0r CWNhbGwJX2Flc25pX2VuY3J5cHQzCi0rCXN1YglcJDB4MzAsJGxlbgotKwlsZWEJMHgzMCgkaW5w KSwkaW5wCi0rCWxlYQkweDMwKCRvdXQpLCRvdXQKLSsJbW92dXBzCSRpbm91dDAsLTB4MzAoJG91 dCkKLSsJbW92CSRybmRzXywkcm91bmRzCQkjIHJlc3RvcmUgJHJvdW5kcwotKwltb3Z1cHMJJGlu b3V0MSwtMHgyMCgkb3V0KQotKwltb3YJJGtleV8sJGtleQkJIyByZXN0b3JlICRrZXkKLSsJbW92 dXBzCSRpbm91dDIsLTB4MTAoJG91dCkKLSsJamEJLkxlY2JfZW5jX2xvb3AzCi0rCi0rLkxlY2Jf ZW5jX3RhaWw6Ci0rCWFkZAlcJDB4NDAsJGxlbgotKwlqegkuTGVjYl9yZXQKLSsKLSsJY21wCVwk MHgxMCwkbGVuCi0rCW1vdnVwcwkoJGlucCksJGlub3V0MAotKwlqZQkuTGVjYl9lbmNfb25lCi0r CWNtcAlcJDB4MjAsJGxlbgotKwltb3Z1cHMJMHgxMCgkaW5wKSwkaW5vdXQxCi0rCWplCS5MZWNi X2VuY190d28KLSsJY21wCVwkMHgzMCwkbGVuCi0rCW1vdnVwcwkweDIwKCRpbnApLCRpbm91dDIK LSsJamUJLkxlY2JfZW5jX3RocmVlCi0rCW1vdnVwcwkweDMwKCRpbnApLCRpbm91dDMKLSsJY2Fs bAlfYWVzbmlfZW5jcnlwdDQKLSsJbW92dXBzCSRpbm91dDAsKCRvdXQpCi0rCW1vdnVwcwkkaW5v dXQxLDB4MTAoJG91dCkKLSsJbW92dXBzCSRpbm91dDIsMHgyMCgkb3V0KQotKwltb3Z1cHMJJGlu b3V0MywweDMwKCRvdXQpCi0rCWptcAkuTGVjYl9yZXQKLSsuYWxpZ24JMTYKLSsuTGVjYl9lbmNf b25lOgotK19fXwotKwkmYWVzbmlfZ2VuZXJhdGUxKCJlbmMiLCRrZXksJHJvdW5kcyk7Ci0rJGNv ZGUuPTw8X19fOwotKwltb3Z1cHMJJGlub3V0MCwoJG91dCkKLSsJam1wCS5MZWNiX3JldAotKy5h bGlnbgkxNgotKy5MZWNiX2VuY190d286Ci0rCWNhbGwJX2Flc25pX2VuY3J5cHQzCi0rCW1vdnVw cwkkaW5vdXQwLCgkb3V0KQotKwltb3Z1cHMJJGlub3V0MSwweDEwKCRvdXQpCi0rCWptcAkuTGVj Yl9yZXQKLSsuYWxpZ24JMTYKLSsuTGVjYl9lbmNfdGhyZWU6Ci0rCWNhbGwJX2Flc25pX2VuY3J5 cHQzCi0rCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQotKwltb3Z1cHMJJGlub3V0MSwweDEwKCRvdXQp Ci0rCW1vdnVwcwkkaW5vdXQyLDB4MjAoJG91dCkKLSsJam1wCS5MZWNiX3JldAotKwwjLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tIEVDQiBERUNSWVBUIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSMKLSsuYWxpZ24JMTYKLSsuTGVjYl9kZWNyeXB0OgotKwlzdWIJXCQweDQwLCRsZW4K LSsJamJlCS5MZWNiX2RlY190YWlsCi0rCWptcAkuTGVjYl9kZWNfbG9vcDMKLSsuYWxpZ24gMTYK LSsuTGVjYl9kZWNfbG9vcDM6Ci0rCW1vdnVwcwkoJGlucCksJGlub3V0MAotKwltb3Z1cHMJMHgx MCgkaW5wKSwkaW5vdXQxCi0rCW1vdnVwcwkweDIwKCRpbnApLCRpbm91dDIKLSsJY2FsbAlfYWVz bmlfZGVjcnlwdDMKLSsJc3ViCVwkMHgzMCwkbGVuCi0rCWxlYQkweDMwKCRpbnApLCRpbnAKLSsJ bGVhCTB4MzAoJG91dCksJG91dAotKwltb3Z1cHMJJGlub3V0MCwtMHgzMCgkb3V0KQotKwltb3YJ JHJuZHNfLCRyb3VuZHMJCSMgcmVzdG9yZSAkcm91bmRzCi0rCW1vdnVwcwkkaW5vdXQxLC0weDIw KCRvdXQpCi0rCW1vdgkka2V5Xywka2V5CQkjIHJlc3RvcmUgJGtleQotKwltb3Z1cHMJJGlub3V0 MiwtMHgxMCgkb3V0KQotKwlqYQkuTGVjYl9kZWNfbG9vcDMKLSsKLSsuTGVjYl9kZWNfdGFpbDoK LSsJYWRkCVwkMHg0MCwkbGVuCi0rCWp6CS5MZWNiX3JldAotKwotKwljbXAJXCQweDEwLCRsZW4K LSsJbW92dXBzCSgkaW5wKSwkaW5vdXQwCi0rCWplCS5MZWNiX2RlY19vbmUKLSsJY21wCVwkMHgy MCwkbGVuCi0rCW1vdnVwcwkweDEwKCRpbnApLCRpbm91dDEKLSsJamUJLkxlY2JfZGVjX3R3bwot KwljbXAJXCQweDMwLCRsZW4KLSsJbW92dXBzCTB4MjAoJGlucCksJGlub3V0MgotKwlqZQkuTGVj Yl9kZWNfdGhyZWUKLSsJbW92dXBzCTB4MzAoJGlucCksJGlub3V0MwotKwljYWxsCV9hZXNuaV9k ZWNyeXB0NAotKwltb3Z1cHMJJGlub3V0MCwoJG91dCkKLSsJbW92dXBzCSRpbm91dDEsMHgxMCgk b3V0KQotKwltb3Z1cHMJJGlub3V0MiwweDIwKCRvdXQpCi0rCW1vdnVwcwkkaW5vdXQzLDB4MzAo JG91dCkKLSsJam1wCS5MZWNiX3JldAotKy5hbGlnbgkxNgotKy5MZWNiX2RlY19vbmU6Ci0rX19f Ci0rCSZhZXNuaV9nZW5lcmF0ZTEoImRlYyIsJGtleSwkcm91bmRzKTsKLSskY29kZS49PDxfX187 Ci0rCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQotKwlqbXAJLkxlY2JfcmV0Ci0rLmFsaWduCTE2Ci0r LkxlY2JfZGVjX3R3bzoKLSsJY2FsbAlfYWVzbmlfZGVjcnlwdDMKLSsJbW92dXBzCSRpbm91dDAs KCRvdXQpCi0rCW1vdnVwcwkkaW5vdXQxLDB4MTAoJG91dCkKLSsJam1wCS5MZWNiX3JldAotKy5h bGlnbgkxNgotKy5MZWNiX2RlY190aHJlZToKLSsJY2FsbAlfYWVzbmlfZGVjcnlwdDMKLSsJbW92 dXBzCSRpbm91dDAsKCRvdXQpCi0rCW1vdnVwcwkkaW5vdXQxLDB4MTAoJG91dCkKLSsJbW92dXBz CSRpbm91dDIsMHgyMCgkb3V0KQotKwotKy5MZWNiX3JldDoKLSsJcmV0Ci0rLnNpemUJYWVzbmlf ZWNiX2VuY3J5cHQsLi1hZXNuaV9lY2JfZW5jcnlwdAotK19fXwotK30KLSsMCi0rIyB2b2lkICRQ UkVGSVhfY2JjX2VuY3J5cHQgKGNvbnN0IHZvaWQgKmlucCwgdm9pZCAqb3V0LAotKyMJCQkgICAg c2l6ZV90IGxlbmd0aCwgY29uc3QgQUVTX0tFWSAqa2V5LAotKyMJCQkgICAgdW5zaWduZWQgY2hh ciAqaXZwLGNvbnN0IGludCBlbmMpOwotKyRyZXNlcnZlZCA9ICR3aW42ND8weDQwOi0weDE4Owkj IHVzZWQgaW4gZGVjcnlwdAotKyRjb2RlLj08PF9fXzsKLSsuZ2xvYmwJJHtQUkVGSVh9X2NiY19l bmNyeXB0Ci0rLnR5cGUJJHtQUkVGSVh9X2NiY19lbmNyeXB0LFxAZnVuY3Rpb24sNgotKy5hbGln bgkxNgotKyR7UFJFRklYfV9jYmNfZW5jcnlwdDoKLSsJdGVzdAkkbGVuLCRsZW4JCSMgY2hlY2sg bGVuZ3RoCi0rCWp6CS5MY2JjX3JldAotKwotKwltb3YJMjQwKCRrZXkpLCRybmRzXwkjIHB1bGwg JHJvdW5kcwotKwltb3YJJGtleSwka2V5XwkJIyBiYWNrdXAgJGtleQotKwl0ZXN0CSVyOWQsJXI5 ZAkJIyA2dGggYXJndW1lbnQKLSsJanoJLkxjYmNfZGVjcnlwdAotKyMtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0gQ0JDIEVOQ1JZUFQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIwot Kwltb3Z1cHMJKCRpdnApLCRpbm91dDAJCSMgbG9hZCBpdiBhcyBpbml0aWFsIHN0YXRlCi0rCWNt cAlcJDE2LCRsZW4KLSsJbW92CSRybmRzXywkcm91bmRzCi0rCWpiCS5MY2JjX2VuY190YWlsCi0r CXN1YglcJDE2LCRsZW4KLSsJam1wCS5MY2JjX2VuY19sb29wCi0rLmFsaWduIDE2Ci0rLkxjYmNf ZW5jX2xvb3A6Ci0rCW1vdnVwcwkoJGlucCksJGlub3V0MQkJIyBsb2FkIGlucHV0Ci0rCWxlYQkx NigkaW5wKSwkaW5wCi0rCXB4b3IJJGlub3V0MSwkaW5vdXQwCi0rX19fCi0rCSZhZXNuaV9nZW5l cmF0ZTEoImVuYyIsJGtleSwkcm91bmRzKTsKLSskY29kZS49PDxfX187Ci0rCXN1YglcJDE2LCRs ZW4KLSsJbGVhCTE2KCRvdXQpLCRvdXQKLSsJbW92CSRybmRzXywkcm91bmRzCQkjIHJlc3RvcmUg JHJvdW5kcwotKwltb3YJJGtleV8sJGtleQkJIyByZXN0b3JlICRrZXkKLSsJbW92dXBzCSRpbm91 dDAsLTE2KCRvdXQpCSMgc3RvcmUgb3V0cHV0Ci0rCWpuYwkuTGNiY19lbmNfbG9vcAotKwlhZGQJ XCQxNiwkbGVuCi0rCWpuegkuTGNiY19lbmNfdGFpbAotKwltb3Z1cHMJJGlub3V0MCwoJGl2cCkK LSsJam1wCS5MY2JjX3JldAotKwotKy5MY2JjX2VuY190YWlsOgotKwltb3YJJGxlbiwlcmN4CSMg emFwcyAka2V5Ci0rCXhjaGcJJGlucCwkb3V0CSMgJGlucCBpcyAlcnNpIGFuZCAkb3V0IGlzICVy ZGkgbm93Ci0rCS5sb25nCTB4OTA2NkE0RjMJIyByZXAgbW92c2IKLSsJbW92CVwkMTYsJWVjeAkj IHplcm8gdGFpbAotKwlzdWIJJGxlbiwlcmN4Ci0rCXhvcgklZWF4LCVlYXgKLSsJLmxvbmcJMHg5 MDY2QUFGMwkjIHJlcCBzdG9zYgotKwlsZWEJLTE2KCVyZGkpLCVyZGkJIyByZXdpbmQgJG91dCBi eSAxIGJsb2NrCi0rCW1vdgkkcm5kc18sJHJvdW5kcwkjIHJlc3RvcmUgJHJvdW5kcwotKwltb3YJ JXJkaSwlcnNpCSMgJGlucCBhbmQgJG91dCBhcmUgdGhlIHNhbWUKLSsJbW92CSRrZXlfLCRrZXkJ IyByZXN0b3JlICRrZXkKLSsJeG9yCSRsZW4sJGxlbgkjIGxlbj0xNgotKwlqbXAJLkxjYmNfZW5j X2xvb3AJIyBvbmUgbW9yZSBzcGluCi0rDCMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ0JD IERFQ1JZUFQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIwotKy5hbGlnbgkxNgotKy5M Y2JjX2RlY3J5cHQ6Ci0rX19fCi0rJGNvZGUuPTw8X19fIGlmICgkd2luNjQpOwotKwlsZWEJLTB4 NTgoJXJzcCksJXJzcAotKwltb3ZhcHMJJXhtbTYsKCVyc3ApCi0rCW1vdmFwcwkleG1tNywweDEw KCVyc3ApCi0rCW1vdmFwcwkleG1tOCwweDIwKCVyc3ApCi0rCW1vdmFwcwkleG1tOSwweDMwKCVy c3ApCi0rLkxjYmNfZGVjcnlwdF9ib2R5OgotK19fXwotKyRjb2RlLj08PF9fXzsKLSsJbW92dXBz CSgkaXZwKSwkaXYKLSsJc3ViCVwkMHg0MCwkbGVuCi0rCW1vdgkkcm5kc18sJHJvdW5kcwotKwlq YmUJLkxjYmNfZGVjX3RhaWwKLSsJam1wCS5MY2JjX2RlY19sb29wMwotKy5hbGlnbiAxNgotKy5M Y2JjX2RlY19sb29wMzoKLSsJbW92dXBzCSgkaW5wKSwkaW5vdXQwCi0rCW1vdnVwcwkweDEwKCRp bnApLCRpbm91dDEKLSsJbW92dXBzCTB4MjAoJGlucCksJGlub3V0MgotKwltb3ZhcHMJJGlub3V0 MCwkaW4wCi0rCW1vdmFwcwkkaW5vdXQxLCRpbjEKLSsJbW92YXBzCSRpbm91dDIsJGluMgotKwlj YWxsCV9hZXNuaV9kZWNyeXB0MwotKwlzdWIJXCQweDMwLCRsZW4KLSsJbGVhCTB4MzAoJGlucCks JGlucAotKwlsZWEJMHgzMCgkb3V0KSwkb3V0Ci0rCXB4b3IJJGl2LCRpbm91dDAKLSsJcHhvcgkk aW4wLCRpbm91dDEKLSsJbW92YXBzCSRpbjIsJGl2Ci0rCXB4b3IJJGluMSwkaW5vdXQyCi0rCW1v dnVwcwkkaW5vdXQwLC0weDMwKCRvdXQpCi0rCW1vdgkkcm5kc18sJHJvdW5kcwkjIHJlc3RvcmUg JHJvdW5kcwotKwltb3Z1cHMJJGlub3V0MSwtMHgyMCgkb3V0KQotKwltb3YJJGtleV8sJGtleQkj IHJlc3RvcmUgJGtleQotKwltb3Z1cHMJJGlub3V0MiwtMHgxMCgkb3V0KQotKwlqYQkuTGNiY19k ZWNfbG9vcDMKLSsKLSsuTGNiY19kZWNfdGFpbDoKLSsJYWRkCVwkMHg0MCwkbGVuCi0rCW1vdnVw cwkkaXYsKCRpdnApCi0rCWp6CS5MY2JjX2RlY19yZXQKLSsKLSsJbW92dXBzCSgkaW5wKSwkaW5v dXQwCi0rCWNtcAlcJDB4MTAsJGxlbgotKwltb3ZhcHMJJGlub3V0MCwkaW4wCi0rCWpiZQkuTGNi Y19kZWNfb25lCi0rCW1vdnVwcwkweDEwKCRpbnApLCRpbm91dDEKLSsJY21wCVwkMHgyMCwkbGVu Ci0rCW1vdmFwcwkkaW5vdXQxLCRpbjEKLSsJamJlCS5MY2JjX2RlY190d28KLSsJbW92dXBzCTB4 MjAoJGlucCksJGlub3V0MgotKwljbXAJXCQweDMwLCRsZW4KLSsJbW92YXBzCSRpbm91dDIsJGlu MgotKwlqYmUJLkxjYmNfZGVjX3RocmVlCi0rCW1vdnVwcwkweDMwKCRpbnApLCRpbm91dDMKLSsJ Y2FsbAlfYWVzbmlfZGVjcnlwdDQKLSsJcHhvcgkkaXYsJGlub3V0MAotKwltb3Z1cHMJMHgzMCgk aW5wKSwkaXYKLSsJcHhvcgkkaW4wLCRpbm91dDEKLSsJbW92dXBzCSRpbm91dDAsKCRvdXQpCi0r CXB4b3IJJGluMSwkaW5vdXQyCi0rCW1vdnVwcwkkaW5vdXQxLDB4MTAoJG91dCkKLSsJcHhvcgkk aW4yLCRpbm91dDMKLSsJbW92dXBzCSRpbm91dDIsMHgyMCgkb3V0KQotKwltb3ZhcHMJJGlub3V0 MywkaW5vdXQwCi0rCWxlYQkweDMwKCRvdXQpLCRvdXQKLSsJam1wCS5MY2JjX2RlY190YWlsX2Nv bGxlY3RlZAotKy5hbGlnbgkxNgotKy5MY2JjX2RlY19vbmU6Ci0rX19fCi0rCSZhZXNuaV9nZW5l cmF0ZTEoImRlYyIsJGtleSwkcm91bmRzKTsKLSskY29kZS49PDxfX187Ci0rCXB4b3IJJGl2LCRp bm91dDAKLSsJbW92YXBzCSRpbjAsJGl2Ci0rCWptcAkuTGNiY19kZWNfdGFpbF9jb2xsZWN0ZWQK LSsuYWxpZ24JMTYKLSsuTGNiY19kZWNfdHdvOgotKwljYWxsCV9hZXNuaV9kZWNyeXB0MwotKwlw eG9yCSRpdiwkaW5vdXQwCi0rCXB4b3IJJGluMCwkaW5vdXQxCi0rCW1vdnVwcwkkaW5vdXQwLCgk b3V0KQotKwltb3ZhcHMJJGluMSwkaXYKLSsJbW92YXBzCSRpbm91dDEsJGlub3V0MAotKwlsZWEJ MHgxMCgkb3V0KSwkb3V0Ci0rCWptcAkuTGNiY19kZWNfdGFpbF9jb2xsZWN0ZWQKLSsuYWxpZ24J MTYKLSsuTGNiY19kZWNfdGhyZWU6Ci0rCWNhbGwJX2Flc25pX2RlY3J5cHQzCi0rCXB4b3IJJGl2 LCRpbm91dDAKLSsJcHhvcgkkaW4wLCRpbm91dDEKLSsJbW92dXBzCSRpbm91dDAsKCRvdXQpCi0r CXB4b3IJJGluMSwkaW5vdXQyCi0rCW1vdnVwcwkkaW5vdXQxLDB4MTAoJG91dCkKLSsJbW92YXBz CSRpbjIsJGl2Ci0rCW1vdmFwcwkkaW5vdXQyLCRpbm91dDAKLSsJbGVhCTB4MjAoJG91dCksJG91 dAotKwlqbXAJLkxjYmNfZGVjX3RhaWxfY29sbGVjdGVkCi0rLmFsaWduCTE2Ci0rLkxjYmNfZGVj X3RhaWxfY29sbGVjdGVkOgotKwlhbmQJXCQxNSwkbGVuCi0rCW1vdnVwcwkkaXYsKCRpdnApCi0r CWpuegkuTGNiY19kZWNfdGFpbF9wYXJ0aWFsCi0rCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQotKwlq bXAJLkxjYmNfZGVjX3JldAotKy5MY2JjX2RlY190YWlsX3BhcnRpYWw6Ci0rCW1vdmFwcwkkaW5v dXQwLCRyZXNlcnZlZCglcnNwKQotKwltb3YJJG91dCwlcmRpCi0rCW1vdgkkbGVuLCVyY3gKLSsJ bGVhCSRyZXNlcnZlZCglcnNwKSwlcnNpCi0rCS5sb25nCTB4OTA2NkE0RjMJIyByZXAgbW92c2IK LSsKLSsuTGNiY19kZWNfcmV0OgotK19fXwotKyRjb2RlLj08PF9fXyBpZiAoJHdpbjY0KTsKLSsJ bW92YXBzCSglcnNwKSwleG1tNgotKwltb3ZhcHMJMHgxMCglcnNwKSwleG1tNwotKwltb3ZhcHMJ MHgyMCglcnNwKSwleG1tOAotKwltb3ZhcHMJMHgzMCglcnNwKSwleG1tOQotKwlsZWEJMHg1OCgl cnNwKSwlcnNwCi0rX19fCi0rJGNvZGUuPTw8X19fOwotKy5MY2JjX3JldDoKLSsJcmV0Ci0rLnNp emUJJHtQUkVGSVh9X2NiY19lbmNyeXB0LC4tJHtQUkVGSVh9X2NiY19lbmNyeXB0Ci0rX19fCi0r DAotKyMgaW50ICRQUkVGSVhfc2V0X1tlbnxkZV1jcnlwdF9rZXkgKGNvbnN0IHVuc2lnbmVkIGNo YXIgKnVzZXJLZXksCi0rIwkJCQlpbnQgYml0cywgQUVTX0tFWSAqa2V5KQotK3sgbXkgKCRpbnAs JGJpdHMsJGtleSkgPSBAXzRhcmdzOwotKyAgJGJpdHMgPX4gcy8lci8lZS87Ci0rCi0rJGNvZGUu PTw8X19fOwotKy5nbG9ibAkke1BSRUZJWH1fc2V0X2RlY3J5cHRfa2V5Ci0rLnR5cGUJJHtQUkVG SVh9X3NldF9kZWNyeXB0X2tleSxcQGFiaS1vbW5pcG90ZW50Ci0rLmFsaWduCTE2Ci0rJHtQUkVG SVh9X3NldF9kZWNyeXB0X2tleToKLSsJLmJ5dGUJMHg0OCwweDgzLDB4RUMsMHgwOAkjIHN1YiBy c3AsOAotKwljYWxsCV9hZXNuaV9zZXRfZW5jcnlwdF9rZXkKLSsJc2hsCVwkNCwkYml0cwkJIyBy b3VuZHMtMSBhZnRlciBfYWVzbmlfc2V0X2VuY3J5cHRfa2V5Ci0rCXRlc3QJJWVheCwlZWF4Ci0r CWpuegkuTGRlY19rZXlfcmV0Ci0rCWxlYQkxNigka2V5LCRiaXRzKSwkaW5wCSMgcG9pbnRzIGF0 IHRoZSBlbmQgb2Yga2V5IHNjaGVkdWxlCi0rCi0rCSRtb3ZrZXkJKCRrZXkpLCV4bW0wCQkjIGp1 c3Qgc3dhcAotKwkkbW92a2V5CSgkaW5wKSwleG1tMQotKwkkbW92a2V5CSV4bW0wLCgkaW5wKQot KwkkbW92a2V5CSV4bW0xLCgka2V5KQotKwlsZWEJMTYoJGtleSksJGtleQotKwlsZWEJLTE2KCRp bnApLCRpbnAKLSsKLSsuTGRlY19rZXlfaW52ZXJzZToKLSsJJG1vdmtleQkoJGtleSksJXhtbTAJ CSMgc3dhcCBhbmQgaW52ZXJzZQotKwkkbW92a2V5CSgkaW5wKSwleG1tMQotKwlhZXNpbWMJJXht bTAsJXhtbTAKLSsJYWVzaW1jCSV4bW0xLCV4bW0xCi0rCWxlYQkxNigka2V5KSwka2V5Ci0rCWxl YQktMTYoJGlucCksJGlucAotKwljbXAJJGtleSwkaW5wCi0rCSRtb3ZrZXkJJXhtbTAsMTYoJGlu cCkKLSsJJG1vdmtleQkleG1tMSwtMTYoJGtleSkKLSsJamEJLkxkZWNfa2V5X2ludmVyc2UKLSsK LSsJJG1vdmtleQkoJGtleSksJXhtbTAJCSMgaW52ZXJzZSBtaWRkbGUKLSsJYWVzaW1jCSV4bW0w LCV4bW0wCi0rCSRtb3ZrZXkJJXhtbTAsKCRpbnApCi0rLkxkZWNfa2V5X3JldDoKLSsJYWRkCVwk OCwlcnNwCi0rCXJldAotKy5MU0VIX2VuZF9zZXRfZGVjcnlwdF9rZXk6Ci0rLnNpemUJJHtQUkVG SVh9X3NldF9kZWNyeXB0X2tleSwuLSR7UFJFRklYfV9zZXRfZGVjcnlwdF9rZXkKLStfX18KLSsM Ci0rIyBUaGlzIGlzIGJhc2VkIG9uIHN1Ym1pc3Npb24gYnkKLSsjCi0rIwlIdWFuZyBZaW5nIDx5 aW5nLmh1YW5nQGludGVsLmNvbT4KLSsjCVZpbm9kaCBHb3BhbCA8dmlub2RoLmdvcGFsQGludGVs LmNvbT4KLSsjCUthaHJhbWFuIEFrZGVtaXIKLSsjCi0rIyBBZ3Jlc3NpdmVseSBvcHRpbWl6ZWQg aW4gcmVzcGVjdCB0byBhZXNrZXlnZW5hc3Npc3QncyBjcml0aWNhbCBwYXRoCi0rIyBhbmQgaXMg Y29udGFpbmVkIGluICV4bW0wLTUgdG8gbWVldCBXaW42NCBBQkkgcmVxdWlyZW1lbnQuCi0rIwot KyRjb2RlLj08PF9fXzsKLSsuZ2xvYmwJJHtQUkVGSVh9X3NldF9lbmNyeXB0X2tleQotKy50eXBl CSR7UFJFRklYfV9zZXRfZW5jcnlwdF9rZXksXEBhYmktb21uaXBvdGVudAotKy5hbGlnbgkxNgot KyR7UFJFRklYfV9zZXRfZW5jcnlwdF9rZXk6Ci0rX2Flc25pX3NldF9lbmNyeXB0X2tleToKLSsJ LmJ5dGUJMHg0OCwweDgzLDB4RUMsMHgwOAkjIHN1YiByc3AsOAotKwl0ZXN0CSRpbnAsJGlucAot Kwltb3YJXCQtMSwlcmF4Ci0rCWp6CS5MZW5jX2tleV9yZXQKLSsJdGVzdAkka2V5LCRrZXkKLSsJ anoJLkxlbmNfa2V5X3JldAotKwotKwltb3Z1cHMJKCRpbnApLCV4bW0wCQkjIHB1bGwgZmlyc3Qg MTI4IGJpdHMgb2YgKnVzZXJLZXkKLSsJcHhvcgkleG1tNCwleG1tNAkJIyBsb3cgZHdvcmQgb2Yg eG1tNCBpcyBhc3N1bWVkIDAKLSsJbGVhCTE2KCRrZXkpLCVyYXgKLSsJY21wCVwkMjU2LCRiaXRz Ci0rCWplCS5MMTRyb3VuZHMKLSsJY21wCVwkMTkyLCRiaXRzCi0rCWplCS5MMTJyb3VuZHMKLSsJ Y21wCVwkMTI4LCRiaXRzCi0rCWpuZQkuTGJhZF9rZXliaXRzCi0rCi0rLkwxMHJvdW5kczoKLSsJ bW92CVwkOSwkYml0cwkJCSMgMTAgcm91bmRzIGZvciAxMjgtYml0IGtleQotKwkkbW92a2V5CSV4 bW0wLCgka2V5KQkJCSMgcm91bmQgMAotKwlhZXNrZXlnZW5hc3Npc3QJXCQweDEsJXhtbTAsJXht bTEJIyByb3VuZCAxCi0rCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8xMjhfY29sZAotKwlhZXNrZXln ZW5hc3Npc3QJXCQweDIsJXhtbTAsJXhtbTEJIyByb3VuZCAyCi0rCWNhbGwJCS5Ma2V5X2V4cGFu c2lvbl8xMjgKLSsJYWVza2V5Z2VuYXNzaXN0CVwkMHg0LCV4bW0wLCV4bW0xCSMgcm91bmQgMwot KwljYWxsCQkuTGtleV9leHBhbnNpb25fMTI4Ci0rCWFlc2tleWdlbmFzc2lzdAlcJDB4OCwleG1t MCwleG1tMQkjIHJvdW5kIDQKLSsJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzEyOAotKwlhZXNrZXln ZW5hc3Npc3QJXCQweDEwLCV4bW0wLCV4bW0xCSMgcm91bmQgNQotKwljYWxsCQkuTGtleV9leHBh bnNpb25fMTI4Ci0rCWFlc2tleWdlbmFzc2lzdAlcJDB4MjAsJXhtbTAsJXhtbTEJIyByb3VuZCA2 Ci0rCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8xMjgKLSsJYWVza2V5Z2VuYXNzaXN0CVwkMHg0MCwl eG1tMCwleG1tMQkjIHJvdW5kIDcKLSsJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzEyOAotKwlhZXNr ZXlnZW5hc3Npc3QJXCQweDgwLCV4bW0wLCV4bW0xCSMgcm91bmQgOAotKwljYWxsCQkuTGtleV9l eHBhbnNpb25fMTI4Ci0rCWFlc2tleWdlbmFzc2lzdAlcJDB4MWIsJXhtbTAsJXhtbTEJIyByb3Vu ZCA5Ci0rCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8xMjgKLSsJYWVza2V5Z2VuYXNzaXN0CVwkMHgz NiwleG1tMCwleG1tMQkjIHJvdW5kIDEwCi0rCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8xMjgKLSsJ JG1vdmtleQkleG1tMCwoJXJheCkKLSsJbW92CSRiaXRzLDgwKCVyYXgpCSMgMjQwKCVyZHgpCi0r CXhvcgklZWF4LCVlYXgKLSsJam1wCS5MZW5jX2tleV9yZXQKLSsKLSsuYWxpZ24JMTYKLSsuTDEy cm91bmRzOgotKwltb3ZxCTE2KCRpbnApLCV4bW0yCQkJIyByZW1haW5pbmcgMS8zIG9mICp1c2Vy S2V5Ci0rCW1vdglcJDExLCRiaXRzCQkJIyAxMiByb3VuZHMgZm9yIDE5MgotKwkkbW92a2V5CSV4 bW0wLCgka2V5KQkJCSMgcm91bmQgMAotKwlhZXNrZXlnZW5hc3Npc3QJXCQweDEsJXhtbTIsJXht bTEJIyByb3VuZCAxLDIKLSsJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzE5MmFfY29sZAotKwlhZXNr ZXlnZW5hc3Npc3QJXCQweDIsJXhtbTIsJXhtbTEJIyByb3VuZCAyLDMKLSsJY2FsbAkJLkxrZXlf ZXhwYW5zaW9uXzE5MmIKLSsJYWVza2V5Z2VuYXNzaXN0CVwkMHg0LCV4bW0yLCV4bW0xCSMgcm91 bmQgNCw1Ci0rCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8xOTJhCi0rCWFlc2tleWdlbmFzc2lzdAlc JDB4OCwleG1tMiwleG1tMQkjIHJvdW5kIDUsNgotKwljYWxsCQkuTGtleV9leHBhbnNpb25fMTky YgotKwlhZXNrZXlnZW5hc3Npc3QJXCQweDEwLCV4bW0yLCV4bW0xCSMgcm91bmQgNyw4Ci0rCWNh bGwJCS5Ma2V5X2V4cGFuc2lvbl8xOTJhCi0rCWFlc2tleWdlbmFzc2lzdAlcJDB4MjAsJXhtbTIs JXhtbTEJIyByb3VuZCA4LDkKLSsJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzE5MmIKLSsJYWVza2V5 Z2VuYXNzaXN0CVwkMHg0MCwleG1tMiwleG1tMQkjIHJvdW5kIDEwLDExCi0rCWNhbGwJCS5Ma2V5 X2V4cGFuc2lvbl8xOTJhCi0rCWFlc2tleWdlbmFzc2lzdAlcJDB4ODAsJXhtbTIsJXhtbTEJIyBy b3VuZCAxMSwxMgotKwljYWxsCQkuTGtleV9leHBhbnNpb25fMTkyYgotKwkkbW92a2V5CSV4bW0w LCglcmF4KQotKwltb3YJJGJpdHMsNDgoJXJheCkJIyAyNDAoJXJkeCkKLSsJeG9yCSVyYXgsICVy YXgKLSsJam1wCS5MZW5jX2tleV9yZXQKLSsKLSsuYWxpZ24JMTYKLSsuTDE0cm91bmRzOgotKwlt b3Z1cHMJMTYoJGlucCksJXhtbTIJCQkjIHJlbWFuaW5nIGhhbGYgb2YgKnVzZXJLZXkKLSsJbW92 CVwkMTMsJGJpdHMJCQkjIDE0IHJvdW5kcyBmb3IgMjU2Ci0rCWxlYQkxNiglcmF4KSwlcmF4Ci0r CSRtb3ZrZXkJJXhtbTAsKCRrZXkpCQkJIyByb3VuZCAwCi0rCSRtb3ZrZXkJJXhtbTIsMTYoJGtl eSkJCQkjIHJvdW5kIDEKLSsJYWVza2V5Z2VuYXNzaXN0CVwkMHgxLCV4bW0yLCV4bW0xCSMgcm91 bmQgMgotKwljYWxsCQkuTGtleV9leHBhbnNpb25fMjU2YV9jb2xkCi0rCWFlc2tleWdlbmFzc2lz dAlcJDB4MSwleG1tMCwleG1tMQkjIHJvdW5kIDMKLSsJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzI1 NmIKLSsJYWVza2V5Z2VuYXNzaXN0CVwkMHgyLCV4bW0yLCV4bW0xCSMgcm91bmQgNAotKwljYWxs CQkuTGtleV9leHBhbnNpb25fMjU2YQotKwlhZXNrZXlnZW5hc3Npc3QJXCQweDIsJXhtbTAsJXht bTEJIyByb3VuZCA1Ci0rCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8yNTZiCi0rCWFlc2tleWdlbmFz c2lzdAlcJDB4NCwleG1tMiwleG1tMQkjIHJvdW5kIDYKLSsJY2FsbAkJLkxrZXlfZXhwYW5zaW9u XzI1NmEKLSsJYWVza2V5Z2VuYXNzaXN0CVwkMHg0LCV4bW0wLCV4bW0xCSMgcm91bmQgNwotKwlj YWxsCQkuTGtleV9leHBhbnNpb25fMjU2YgotKwlhZXNrZXlnZW5hc3Npc3QJXCQweDgsJXhtbTIs JXhtbTEJIyByb3VuZCA4Ci0rCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8yNTZhCi0rCWFlc2tleWdl bmFzc2lzdAlcJDB4OCwleG1tMCwleG1tMQkjIHJvdW5kIDkKLSsJY2FsbAkJLkxrZXlfZXhwYW5z aW9uXzI1NmIKLSsJYWVza2V5Z2VuYXNzaXN0CVwkMHgxMCwleG1tMiwleG1tMQkjIHJvdW5kIDEw Ci0rCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8yNTZhCi0rCWFlc2tleWdlbmFzc2lzdAlcJDB4MTAs JXhtbTAsJXhtbTEJIyByb3VuZCAxMQotKwljYWxsCQkuTGtleV9leHBhbnNpb25fMjU2YgotKwlh ZXNrZXlnZW5hc3Npc3QJXCQweDIwLCV4bW0yLCV4bW0xCSMgcm91bmQgMTIKLSsJY2FsbAkJLkxr ZXlfZXhwYW5zaW9uXzI1NmEKLSsJYWVza2V5Z2VuYXNzaXN0CVwkMHgyMCwleG1tMCwleG1tMQkj IHJvdW5kIDEzCi0rCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8yNTZiCi0rCWFlc2tleWdlbmFzc2lz dAlcJDB4NDAsJXhtbTIsJXhtbTEJIyByb3VuZCAxNAotKwljYWxsCQkuTGtleV9leHBhbnNpb25f MjU2YQotKwkkbW92a2V5CSV4bW0wLCglcmF4KQotKwltb3YJJGJpdHMsMTYoJXJheCkJIyAyNDAo JXJkeCkKLSsJeG9yCSVyYXgsJXJheAotKwlqbXAJLkxlbmNfa2V5X3JldAotKwotKy5hbGlnbgkx NgotKy5MYmFkX2tleWJpdHM6Ci0rCW1vdglcJC0yLCVyYXgKLSsuTGVuY19rZXlfcmV0OgotKwlh ZGQJXCQ4LCVyc3AKLSsJcmV0Ci0rLkxTRUhfZW5kX3NldF9lbmNyeXB0X2tleToKLSsMCi0rLmFs aWduCTE2Ci0rLkxrZXlfZXhwYW5zaW9uXzEyODoKLSsJJG1vdmtleQkleG1tMCwoJXJheCkKLSsJ bGVhCTE2KCVyYXgpLCVyYXgKLSsuTGtleV9leHBhbnNpb25fMTI4X2NvbGQ6Ci0rCXNodWZwcwlc JDBiMDAwMTAwMDAsJXhtbTAsJXhtbTQKLSsJcHhvcgkleG1tNCwgJXhtbTAKLSsJc2h1ZnBzCVwk MGIxMDAwMTEwMCwleG1tMCwleG1tNAotKwlweG9yCSV4bW00LCAleG1tMAotKwlwc2h1ZmQJXCQw YjExMTExMTExLCV4bW0xLCV4bW0xCSMgY3JpdGljYWwgcGF0aAotKwlweG9yCSV4bW0xLCV4bW0w Ci0rCXJldAotKwotKy5hbGlnbiAxNgotKy5Ma2V5X2V4cGFuc2lvbl8xOTJhOgotKwkkbW92a2V5 CSV4bW0wLCglcmF4KQotKwlsZWEJMTYoJXJheCksJXJheAotKy5Ma2V5X2V4cGFuc2lvbl8xOTJh X2NvbGQ6Ci0rCW1vdmFwcwkleG1tMiwgJXhtbTUKLSsuTGtleV9leHBhbnNpb25fMTkyYl93YXJt OgotKwlzaHVmcHMJXCQwYjAwMDEwMDAwLCV4bW0wLCV4bW00Ci0rCW1vdmFwcwkleG1tMiwleG1t MwotKwlweG9yCSV4bW00LCV4bW0wCi0rCXNodWZwcwlcJDBiMTAwMDExMDAsJXhtbTAsJXhtbTQK LSsJcHNsbGRxCVwkNCwleG1tMwotKwlweG9yCSV4bW00LCV4bW0wCi0rCXBzaHVmZAlcJDBiMDEw MTAxMDEsJXhtbTEsJXhtbTEJIyBjcml0aWNhbCBwYXRoCi0rCXB4b3IJJXhtbTMsJXhtbTIKLSsJ cHhvcgkleG1tMSwleG1tMAotKwlwc2h1ZmQJXCQwYjExMTExMTExLCV4bW0wLCV4bW0zCi0rCXB4 b3IJJXhtbTMsJXhtbTIKLSsJcmV0Ci0rCi0rLmFsaWduIDE2Ci0rLkxrZXlfZXhwYW5zaW9uXzE5 MmI6Ci0rCW1vdmFwcwkleG1tMCwleG1tMwotKwlzaHVmcHMJXCQwYjAxMDAwMTAwLCV4bW0wLCV4 bW01Ci0rCSRtb3ZrZXkJJXhtbTUsKCVyYXgpCi0rCXNodWZwcwlcJDBiMDEwMDExMTAsJXhtbTIs JXhtbTMKLSsJJG1vdmtleQkleG1tMywxNiglcmF4KQotKwlsZWEJMzIoJXJheCksJXJheAotKwlq bXAJLkxrZXlfZXhwYW5zaW9uXzE5MmJfd2FybQotKwotKy5hbGlnbgkxNgotKy5Ma2V5X2V4cGFu c2lvbl8yNTZhOgotKwkkbW92a2V5CSV4bW0yLCglcmF4KQotKwlsZWEJMTYoJXJheCksJXJheAot Ky5Ma2V5X2V4cGFuc2lvbl8yNTZhX2NvbGQ6Ci0rCXNodWZwcwlcJDBiMDAwMTAwMDAsJXhtbTAs JXhtbTQKLSsJcHhvcgkleG1tNCwleG1tMAotKwlzaHVmcHMJXCQwYjEwMDAxMTAwLCV4bW0wLCV4 bW00Ci0rCXB4b3IJJXhtbTQsJXhtbTAKLSsJcHNodWZkCVwkMGIxMTExMTExMSwleG1tMSwleG1t MQkjIGNyaXRpY2FsIHBhdGgKLSsJcHhvcgkleG1tMSwleG1tMAotKwlyZXQKLSsKLSsuYWxpZ24g MTYKLSsuTGtleV9leHBhbnNpb25fMjU2YjoKLSsJJG1vdmtleQkleG1tMCwoJXJheCkKLSsJbGVh CTE2KCVyYXgpLCVyYXgKLSsKLSsJc2h1ZnBzCVwkMGIwMDAxMDAwMCwleG1tMiwleG1tNAotKwlw eG9yCSV4bW00LCV4bW0yCi0rCXNodWZwcwlcJDBiMTAwMDExMDAsJXhtbTIsJXhtbTQKLSsJcHhv cgkleG1tNCwleG1tMgotKwlwc2h1ZmQJXCQwYjEwMTAxMDEwLCV4bW0xLCV4bW0xCSMgY3JpdGlj YWwgcGF0aAotKwlweG9yCSV4bW0xLCV4bW0yCi0rCXJldAotKy5zaXplCSR7UFJFRklYfV9zZXRf ZW5jcnlwdF9rZXksLi0ke1BSRUZJWH1fc2V0X2VuY3J5cHRfa2V5Ci0rX19fCi0rfQotKwwKLSsk Y29kZS49PDxfX187Ci0rLmFzY2l6ICAiQUVTIGZvciBJbnRlbCBBRVMtTkksIENSWVBUT0dBTVMg YnkgPGFwcHJvXEBvcGVuc3NsLm9yZz4iCi0rLmFsaWduCTY0Ci0rX19fCi0rCi0rIyBFWENFUFRJ T05fRElTUE9TSVRJT04gaGFuZGxlciAoRVhDRVBUSU9OX1JFQ09SRCAqcmVjLFVMT05HNjQgZnJh bWUsCi0rIwkJQ09OVEVYVCAqY29udGV4dCxESVNQQVRDSEVSX0NPTlRFWFQgKmRpc3ApCi0raWYg KCR3aW42NCkgewotKyRyZWM9IiVyY3giOwotKyRmcmFtZT0iJXJkeCI7Ci0rJGNvbnRleHQ9IiVy OCI7Ci0rJGRpc3A9IiVyOSI7Ci0rCi0rJGNvZGUuPTw8X19fOwotKy5leHRlcm4JX19pbXBfUnRs VmlydHVhbFVud2luZAotKy50eXBlCWNiY19zZV9oYW5kbGVyLFxAYWJpLW9tbmlwb3RlbnQKLSsu YWxpZ24JMTYKLStjYmNfc2VfaGFuZGxlcjoKLSsJcHVzaAklcnNpCi0rCXB1c2gJJXJkaQotKwlw dXNoCSVyYngKLSsJcHVzaAklcmJwCi0rCXB1c2gJJXIxMgotKwlwdXNoCSVyMTMKLSsJcHVzaAkl cjE0Ci0rCXB1c2gJJXIxNQotKwlwdXNoZnEKLSsJc3ViCVwkNjQsJXJzcAotKwotKwltb3YJMTUy KCRjb250ZXh0KSwlcmF4CSMgcHVsbCBjb250ZXh0LT5Sc3AKLSsJbW92CTI0OCgkY29udGV4dCks JXJieAkjIHB1bGwgY29udGV4dC0+UmlwCi0rCi0rCWxlYQkuTGNiY19kZWNyeXB0KCVyaXApLCVy MTAKLSsJY21wCSVyMTAsJXJieAkJIyBjb250ZXh0LT5SaXA8InByb2xvZ3VlIiBsYWJlbAotKwlq YgkuTGluX3Byb2xvZ3VlCi0rCi0rCWxlYQkuTGNiY19kZWNyeXB0X2JvZHkoJXJpcCksJXIxMAot KwljbXAJJXIxMCwlcmJ4CQkjIGNvbnRleHQtPlJpcDxjYmNfZGVjcnlwdF9ib2R5Ci0rCWpiCS5M cmVzdG9yZV9yYXgKLSsKLSsJbGVhCS5MY2JjX3JldCglcmlwKSwlcjEwCi0rCWNtcAklcjEwLCVy YngJCSMgY29udGV4dC0+UmlwPj0iZXBpbG9ndWUiIGxhYmVsCi0rCWphZQkuTGluX3Byb2xvZ3Vl Ci0rCi0rCWxlYQkwKCVyYXgpLCVyc2kJCSMgdG9wIG9mIHN0YWNrCi0rCWxlYQk1MTIoJGNvbnRl eHQpLCVyZGkJIyAmY29udGV4dC5YbW02Ci0rCW1vdglcJDgsJWVjeAkJIyA0KnNpemVvZigleG1t MCkvc2l6ZW9mKCVyYXgpCi0rCS5sb25nCTB4YTU0OGYzZmMJCSMgY2xkOyByZXAgbW92c3EKLSsJ bGVhCTB4NTgoJXJheCksJXJheAkJIyBhZGp1c3Qgc3RhY2sgcG9pbnRlcgotKwlqbXAJLkxpbl9w cm9sb2d1ZQotKwotKy5McmVzdG9yZV9yYXg6Ci0rCW1vdgkxMjAoJGNvbnRleHQpLCVyYXgKLSsu TGluX3Byb2xvZ3VlOgotKwltb3YJOCglcmF4KSwlcmRpCi0rCW1vdgkxNiglcmF4KSwlcnNpCi0r CW1vdgklcmF4LDE1MigkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlJzcAotKwltb3YJJXJz aSwxNjgoJGNvbnRleHQpCSMgcmVzdG9yZSBjb250ZXh0LT5Sc2kKLSsJbW92CSVyZGksMTc2KCRj b250ZXh0KQkjIHJlc3RvcmUgY29udGV4dC0+UmRpCi0rCi0rCWptcAkuTGNvbW1vbl9zZWhfZXhp dAotKy5zaXplCWNiY19zZV9oYW5kbGVyLC4tY2JjX3NlX2hhbmRsZXIKLSsKLSsudHlwZQllY2Jf c2VfaGFuZGxlcixcQGFiaS1vbW5pcG90ZW50Ci0rLmFsaWduCTE2Ci0rZWNiX3NlX2hhbmRsZXI6 Ci0rCXB1c2gJJXJzaQotKwlwdXNoCSVyZGkKLSsJcHVzaAklcmJ4Ci0rCXB1c2gJJXJicAotKwlw dXNoCSVyMTIKLSsJcHVzaAklcjEzCi0rCXB1c2gJJXIxNAotKwlwdXNoCSVyMTUKLSsJcHVzaGZx Ci0rCXN1YglcJDY0LCVyc3AKLSsKLSsJbW92CTE1MigkY29udGV4dCksJXJheAkjIHB1bGwgY29u dGV4dC0+UnNwCi0rCW1vdgk4KCVyYXgpLCVyZGkKLSsJbW92CTE2KCVyYXgpLCVyc2kKLSsJbW92 CSVyc2ksMTY4KCRjb250ZXh0KQkjIHJlc3RvcmUgY29udGV4dC0+UnNpCi0rCW1vdgklcmRpLDE3 NigkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlJkaQotKwotKy5MY29tbW9uX3NlaF9leGl0 OgotKwotKwltb3YJNDAoJGRpc3ApLCVyZGkJCSMgZGlzcC0+Q29udGV4dFJlY29yZAotKwltb3YJ JGNvbnRleHQsJXJzaQkJIyBjb250ZXh0Ci0rCW1vdglcJDE1NCwlZWN4CQkjIHNpemVvZihDT05U RVhUKQotKwkubG9uZwkweGE1NDhmM2ZjCQkjIGNsZDsgcmVwIG1vdnNxCi0rCi0rCW1vdgkkZGlz cCwlcnNpCi0rCXhvcgklcmN4LCVyY3gJCSMgYXJnMSwgVU5XX0ZMQUdfTkhBTkRMRVIKLSsJbW92 CTgoJXJzaSksJXJkeAkJIyBhcmcyLCBkaXNwLT5JbWFnZUJhc2UKLSsJbW92CTAoJXJzaSksJXI4 CQkjIGFyZzMsIGRpc3AtPkNvbnRyb2xQYwotKwltb3YJMTYoJXJzaSksJXI5CQkjIGFyZzQsIGRp c3AtPkZ1bmN0aW9uRW50cnkKLSsJbW92CTQwKCVyc2kpLCVyMTAJCSMgZGlzcC0+Q29udGV4dFJl Y29yZAotKwlsZWEJNTYoJXJzaSksJXIxMQkJIyAmZGlzcC0+SGFuZGxlckRhdGEKLSsJbGVhCTI0 KCVyc2kpLCVyMTIJCSMgJmRpc3AtPkVzdGFibGlzaGVyRnJhbWUKLSsJbW92CSVyMTAsMzIoJXJz cCkJCSMgYXJnNQotKwltb3YJJXIxMSw0MCglcnNwKQkJIyBhcmc2Ci0rCW1vdgklcjEyLDQ4KCVy c3ApCQkjIGFyZzcKLSsJbW92CSVyY3gsNTYoJXJzcCkJCSMgYXJnOCwgKE5VTEwpCi0rCWNhbGwJ Kl9faW1wX1J0bFZpcnR1YWxVbndpbmQoJXJpcCkKLSsKLSsJbW92CVwkMSwlZWF4CQkjIEV4Y2Vw dGlvbkNvbnRpbnVlU2VhcmNoCi0rCWFkZAlcJDY0LCVyc3AKLSsJcG9wZnEKLSsJcG9wCSVyMTUK LSsJcG9wCSVyMTQKLSsJcG9wCSVyMTMKLSsJcG9wCSVyMTIKLSsJcG9wCSVyYnAKLSsJcG9wCSVy YngKLSsJcG9wCSVyZGkKLSsJcG9wCSVyc2kKLSsJcmV0Ci0rLnNpemUJY2JjX3NlX2hhbmRsZXIs Li1jYmNfc2VfaGFuZGxlcgotKwotKy5zZWN0aW9uCS5wZGF0YQotKy5hbGlnbgk0Ci0rCS5ydmEJ LkxTRUhfYmVnaW5fJHtQUkVGSVh9X2VjYl9lbmNyeXB0Ci0rCS5ydmEJLkxTRUhfZW5kXyR7UFJF RklYfV9lY2JfZW5jcnlwdAotKwkucnZhCS5MU0VIX2luZm9fZWNiCi0rCi0rCS5ydmEJLkxTRUhf YmVnaW5fJHtQUkVGSVh9X2NiY19lbmNyeXB0Ci0rCS5ydmEJLkxTRUhfZW5kXyR7UFJFRklYfV9j YmNfZW5jcnlwdAotKwkucnZhCS5MU0VIX2luZm9fY2JjCi0rCi0rCS5ydmEJJHtQUkVGSVh9X3Nl dF9kZWNyeXB0X2tleQotKwkucnZhCS5MU0VIX2VuZF9zZXRfZGVjcnlwdF9rZXkKLSsJLnJ2YQku TFNFSF9pbmZvX2tleQotKwotKwkucnZhCSR7UFJFRklYfV9zZXRfZW5jcnlwdF9rZXkKLSsJLnJ2 YQkuTFNFSF9lbmRfc2V0X2VuY3J5cHRfa2V5Ci0rCS5ydmEJLkxTRUhfaW5mb19rZXkKLSsuc2Vj dGlvbgkueGRhdGEKLSsuYWxpZ24JOAotKy5MU0VIX2luZm9fZWNiOgotKwkuYnl0ZQk5LDAsMCww Ci0rCS5ydmEJZWNiX3NlX2hhbmRsZXIKLSsuTFNFSF9pbmZvX2NiYzoKLSsJLmJ5dGUJOSwwLDAs MAotKwkucnZhCWNiY19zZV9oYW5kbGVyCi0rLkxTRUhfaW5mb19rZXk6Ci0rCS5ieXRlCTB4MDEs MHgwNCwweDAxLDB4MDAKLSsJLmJ5dGUJMHgwNCwweDAyLDB4MDAsMHgwMAotK19fXwotK30KLSsK LStzdWIgcmV4IHsKLSsgbG9jYWwgKm9wY29kZT1zaGlmdDsKLSsgbXkgKCRkc3QsJHNyYyk9QF87 Ci0rCi0rICAgaWYgKCRkc3Q+PTggfHwgJHNyYz49OCkgewotKwkkcmV4PTB4NDA7Ci0rCSRyZXh8 PTB4MDQgaWYoJGRzdD49OCk7Ci0rCSRyZXh8PTB4MDEgaWYoJHNyYz49OCk7Ci0rCXB1c2ggQG9w Y29kZSwkcmV4OwotKyAgIH0KLSt9Ci0rCi0rc3ViIGFlc25pIHsKLSsgIG15ICRsaW5lPXNoaWZ0 OwotKyAgbXkgQG9wY29kZT0oMHg2Nik7Ci0rCi0rICAgIGlmICgkbGluZT1+LyhhZXNrZXlnZW5h c3Npc3QpXHMrXCQoW3gwLTlhLWZdKyksXHMqJXhtbShbMC05XSspLFxzKiV4bW0oWzAtOV0rKS8p IHsKLSsJcmV4KFxAb3Bjb2RlLCQ0LCQzKTsKLSsJcHVzaCBAb3Bjb2RlLDB4MGYsMHgzYSwweGRm OwotKwlwdXNoIEBvcGNvZGUsMHhjMHwoJDMmNyl8KCgkNCY3KTw8Myk7CSMgTW9kUi9NCi0rCW15 ICRjPSQyOwotKwlwdXNoIEBvcGNvZGUsJGM9fi9eMC8/b2N0KCRjKTokYzsKLSsJcmV0dXJuICIu Ynl0ZVx0Ii5qb2luKCcsJyxAb3Bjb2RlKTsKLSsgICAgfQotKyAgICBlbHNpZiAoJGxpbmU9fi8o YWVzW2Etel0rKVxzKyV4bW0oWzAtOV0rKSxccyoleG1tKFswLTldKykvKSB7Ci0rCW15ICVvcGNv ZGVsZXQgPSAoCi0rCQkiYWVzaW1jIiA9PiAweGRiLAotKwkJImFlc2VuYyIgPT4gMHhkYywJImFl c2VuY2xhc3QiID0+IDB4ZGQsCi0rCQkiYWVzZGVjIiA9PiAweGRlLAkiYWVzZGVjbGFzdCIgPT4g MHhkZgotKwkpOwotKwlyZXR1cm4gdW5kZWYgaWYgKCFkZWZpbmVkKCRvcGNvZGVsZXR7JDF9KSk7 Ci0rCXJleChcQG9wY29kZSwkMywkMik7Ci0rCXB1c2ggQG9wY29kZSwweDBmLDB4MzgsJG9wY29k ZWxldHskMX07Ci0rCXB1c2ggQG9wY29kZSwweGMwfCgkMiY3KXwoKCQzJjcpPDwzKTsJIyBNb2RS L00KLSsJcmV0dXJuICIuYnl0ZVx0Ii5qb2luKCcsJyxAb3Bjb2RlKTsKLSsgICAgfQotKyAgICBy ZXR1cm4gJGxpbmU7Ci0rfQotKwotKyRjb2RlID1+IHMvXGAoW15cYF0qKVxgL2V2YWwoJDEpL2dl bTsKLSskY29kZSA9fiBzL1xiKGFlcy4qJXhtbVswLTldKykuKiQvYWVzbmkoJDEpL2dlbTsKLSsK LStwcmludCAkY29kZTsKLSsKLStjbG9zZSBTVERPVVQ7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4w LWJldGE0L2NyeXB0by9hZXMvTWFrZWZpbGUuYWVzbmkgb3BlbnNzbC0xLjAuMC1iZXRhNC9jcnlw dG8vYWVzL01ha2VmaWxlCi0tLS0gb3BlbnNzbC0xLjAuMC1iZXRhNC9jcnlwdG8vYWVzL01ha2Vm aWxlLmFlc25pCTIwMDgtMTItMjMgMTI6MzM6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNz bC0xLjAuMC1iZXRhNC9jcnlwdG8vYWVzL01ha2VmaWxlCTIwMTAtMDEtMTIgMjI6MTg6MDYuMDAw MDAwMDAwICswMTAwCi1AQCAtNTAsOSArNTAsMTMgQEAgYWVzLWlhNjQuczogYXNtL2Flcy1pYTY0 LlMKLSAKLSBhZXMtNTg2LnM6CWFzbS9hZXMtNTg2LnBsIC4uL3Blcmxhc20veDg2YXNtLnBsCi0g CSQoUEVSTCkgYXNtL2Flcy01ODYucGwgJChQRVJMQVNNX1NDSEVNRSkgJChDRkxBR1MpICQoUFJP Q0VTU09SKSA+ICRACi0rYWVzbmkteDg2LnM6CWFzbS9hZXNuaS14ODYucGwgLi4vcGVybGFzbS94 ODZhc20ucGwKLSsJJChQRVJMKSBhc20vYWVzbmkteDg2LnBsICQoUEVSTEFTTV9TQ0hFTUUpICQo Q0ZMQUdTKSAkKFBST0NFU1NPUikgPiAkQAotIAotIGFlcy14ODZfNjQuczogYXNtL2Flcy14ODZf NjQucGwKLSAJJChQRVJMKSBhc20vYWVzLXg4Nl82NC5wbCAkKFBFUkxBU01fU0NIRU1FKSA+ICRA Ci0rYWVzbmkteDg2XzY0LnM6IGFzbS9hZXNuaS14ODZfNjQucGwKLSsJJChQRVJMKSBhc20vYWVz bmkteDg2XzY0LnBsICQoUEVSTEFTTV9TQ0hFTUUpID4gJEAKLSAKLSBhZXMtc3BhcmN2OS5zOiBh c20vYWVzLXNwYXJjdjkucGwKLSAJJChQRVJMKSBhc20vYWVzLXNwYXJjdjkucGwgJChDRkxBR1Mp ID4gJEAKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2VuZ2luZS9lbmdfYWVz bmkuYy5hZXNuaSBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9lbmdpbmUvZW5nX2Flc25pLmMK LS0tLSBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9lbmdpbmUvZW5nX2Flc25pLmMuYWVzbmkJ MjAxMC0wMS0xMiAyMjoxODowNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4wLWJl dGE0L2NyeXB0by9lbmdpbmUvZW5nX2Flc25pLmMJMjAxMC0wMS0xMiAyMjoxODowNi4wMDAwMDAw MDAgKzAxMDAKLUBAIC0wLDAgKzEsNDEzIEBACi0rLyoKLSsgKiBTdXBwb3J0IGZvciBJbnRlbCBB RVMtTkkgaW50cnVjdGlvbiBzZXQKLSsgKiAgIEF1dGhvcjogSHVhbmcgWWluZyA8eWluZy5odWFu Z0BpbnRlbC5jb20+Ci0rICoKLSsgKiBJbnRlbCBBRVMtTkkgaXMgYSBuZXcgc2V0IG9mIFNpbmds ZSBJbnN0cnVjdGlvbiBNdWx0aXBsZSBEYXRhCi0rICogKFNJTUQpIGluc3RydWN0aW9ucyB0aGF0 IGFyZSBnb2luZyB0byBiZSBpbnRyb2R1Y2VkIGluIHRoZSBuZXh0Ci0rICogZ2VuZXJhdGlvbiBv ZiBJbnRlbCBwcm9jZXNzb3IsIGFzIG9mIDIwMDkuIFRoZXNlIGluc3RydWN0aW9ucwotKyAqIGVu YWJsZSBmYXN0IGFuZCBzZWN1cmUgZGF0YSBlbmNyeXB0aW9uIGFuZCBkZWNyeXB0aW9uLCB1c2lu ZyB0aGUKLSsgKiBBZHZhbmNlZCBFbmNyeXB0aW9uIFN0YW5kYXJkIChBRVMpLCBkZWZpbmVkIGJ5 IEZJUFMgUHVibGljYXRpb24KLSsgKiBudW1iZXIgMTk3LiAgVGhlIGFyY2hpdGVjdHVyZSBpbnRy b2R1Y2VzIHNpeCBpbnN0cnVjdGlvbnMgdGhhdAotKyAqIG9mZmVyIGZ1bGwgaGFyZHdhcmUgc3Vw cG9ydCBmb3IgQUVTLiBGb3VyIG9mIHRoZW0gc3VwcG9ydCBoaWdoCi0rICogcGVyZm9ybWFuY2Ug ZGF0YSBlbmNyeXB0aW9uIGFuZCBkZWNyeXB0aW9uLCBhbmQgdGhlIG90aGVyIHR3bwotKyAqIGlu c3RydWN0aW9ucyBzdXBwb3J0IHRoZSBBRVMga2V5IGV4cGFuc2lvbiBwcm9jZWR1cmUuCi0rICoK LSsgKiBUaGUgd2hpdGUgcGFwZXIgY2FuIGJlIGRvd25sb2FkZWQgZnJvbToKLSsgKiAgIGh0dHA6 Ly9zb2Z0d2FyZWNvbW11bml0eS5pbnRlbC5jb20vaXNuL2Rvd25sb2Fkcy9pbnRlbGF2eC9BRVMt SW5zdHJ1Y3Rpb25zLVNldF9XUC5wZGYKLSsgKgotKyAqIFRoaXMgZmlsZSBpcyBiYXNlZCBvbiBl bmdpbmVzL2VfcGFkbG9jay5jCi0rICovCi0rCi0rLyogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsgKiBDb3B5cmln aHQgKGMpIDE5OTktMjAwMSBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZl ZC4KLSsgKgotKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKyAqIGFyZSBtZXQ6Ci0rICoK LSsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi b3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSsgKgotKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAg bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp bWVyIGluCi0rICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw cm92aWRlZCB3aXRoIHRoZQotKyAqICAgIGRpc3RyaWJ1dGlvbi4KLSsgKgotKyAqIDMuIEFsbCBh ZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcwot KyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50 OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRo ZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQu IChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCi0rICoKLSsgKiA0LiBUaGUgbmFtZXMgIk9wZW5T U0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KLSsg KiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdh cmUgd2l0aG91dAotKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4g cGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKLSsgKiAgICBsaWNlbnNpbmdAT3BlblNTTC5vcmcu Ci0rICoKLSsgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90 IGJlIGNhbGxlZCAiT3BlblNTTCIKLSsgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4g dGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCi0rICogICAgcGVybWlzc2lvbiBvZiB0 aGUgT3BlblNTTCBQcm9qZWN0LgotKyAqCi0rICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBm b3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZwotKyAqICAgIGFja25vd2xl ZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVk IGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRv b2xraXQgKGh0dHA6Ly93d3cuT3BlblNTTC5vcmcvKSIKLSsgKgotKyAqIFRISVMgU09GVFdBUkUg SVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQotKyAq IEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J VEVEIFRPLCBUSEUKLSsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSsgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg SU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgotKyAqIElUUyBDT05UUklC VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSsg KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H LCBCVVQKLSsgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E UyBPUiBTRVJWSUNFUzsKLSsgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT SU5FU1MgSU5URVJSVVBUSU9OKQotKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKLSsgKiBTVFJJQ1QgTElBQklMSVRZ LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0rICogQVJJU0lO RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW SVNFRAotKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSsgKiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotKyAqCi0rICogVGhpcyBwcm9kdWN0IGluY2x1ZGVzIGNyeXB0b2dyYXBoaWMgc29mdHdh cmUgd3JpdHRlbiBieSBFcmljIFlvdW5nCi0rICogKGVheUBjcnlwdHNvZnQuY29tKS4gIFRoaXMg cHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSB3cml0dGVuIGJ5IFRpbQotKyAqIEh1ZHNvbiAodGpo QGNyeXB0c29mdC5jb20pLgotKyAqCi0rICovCi0rCi0rCi0rI2luY2x1ZGUgPG9wZW5zc2wvb3Bl bnNzbGNvbmYuaD4KLSsKLSsjaWYgIWRlZmluZWQoT1BFTlNTTF9OT19IVykgJiYgIWRlZmluZWQo T1BFTlNTTF9OT19IV19BRVNfTkkpICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fQUVTKQotKwotKyNp bmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRlICJjcnlwdGxpYi5oIgotKyNpbmNsdWRlIDxvcGVu c3NsL2Rzby5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2VuZ2luZS5oPgotKyNpbmNsdWRlIDxvcGVu c3NsL2V2cC5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2Flcy5oPgotKyNpbmNsdWRlIDxvcGVuc3Ns L2Vyci5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL21vZGVzLmg+Ci0rCi0rLyogQUVTLU5JIGlzIGF2 YWlsYWJsZSAqT05MWSogb24gc29tZSB4ODYgQ1BVcy4gIE5vdCBvbmx5IHRoYXQgaXQKLSsgICBk b2Vzbid0IGV4aXN0IGVsc2V3aGVyZSwgYnV0IGl0IGV2ZW4gY2FuJ3QgYmUgY29tcGlsZWQgb24g b3RoZXIKLSsgICBwbGF0Zm9ybXMhICovCi0rI3VuZGVmIENPTVBJTEVfSFdfQUVTTkkKLSsjaWYg KGRlZmluZWQoX194ODZfNjQpIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgXAotKyAgICAgZGVm aW5lZChfTV9BTUQ2NCkgfHwgZGVmaW5lZChfTV9YNjQpIHx8IFwKLSsgICAgIGRlZmluZWQoT1BF TlNTTF9JQTMyX1NTRTIpKSAmJiAhZGVmaW5lZChPUEVOU1NMX05PX0FTTSkKLSsjZGVmaW5lIENP TVBJTEVfSFdfQUVTTkkKLStzdGF0aWMgRU5HSU5FICpFTkdJTkVfYWVzbmkgKHZvaWQpOwotKyNl bmRpZgotKwotK3ZvaWQgRU5HSU5FX2xvYWRfYWVzbmkgKHZvaWQpCi0rewotKy8qIE9uIG5vbi14 ODYgQ1BVcyBpdCBqdXN0IHJldHVybnMuICovCi0rI2lmZGVmIENPTVBJTEVfSFdfQUVTTkkKLSsJ RU5HSU5FICp0b2FkZCA9IEVOR0lORV9hZXNuaSgpOwotKwlpZiAoIXRvYWRkKQotKwkJcmV0dXJu OwotKwlFTkdJTkVfYWRkICh0b2FkZCk7Ci0rCUVOR0lORV9yZWdpc3Rlcl9jb21wbGV0ZSAodG9h ZGQpOwotKwlFTkdJTkVfZnJlZSAodG9hZGQpOwotKwlFUlJfY2xlYXJfZXJyb3IgKCk7Ci0rI2Vu ZGlmCi0rfQotKwotKyNpZmRlZiBDT01QSUxFX0hXX0FFU05JCi0raW50IGFlc25pX3NldF9lbmNy eXB0X2tleShjb25zdCB1bnNpZ25lZCBjaGFyICp1c2VyS2V5LCBpbnQgYml0cywKLSsJCQkgICAg ICBBRVNfS0VZICprZXkpOwotK2ludCBhZXNuaV9zZXRfZGVjcnlwdF9rZXkoY29uc3QgdW5zaWdu ZWQgY2hhciAqdXNlcktleSwgaW50IGJpdHMsCi0rCQkJICAgICAgQUVTX0tFWSAqa2V5KTsKLSsK LSt2b2lkIGFlc25pX2VuY3J5cHQoY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHVuc2lnbmVkIGNo YXIgKm91dCwKLSsJCSAgICAgICBjb25zdCBBRVNfS0VZICprZXkpOwotK3ZvaWQgYWVzbmlfZGVj cnlwdChjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgdW5zaWduZWQgY2hhciAqb3V0LAotKwkJICAg ICAgIGNvbnN0IEFFU19LRVkgKmtleSk7Ci0rCi0rdm9pZCBhZXNuaV9lY2JfZW5jcnlwdChjb25z dCB1bnNpZ25lZCBjaGFyICppbiwKLSsJCQkgICB1bnNpZ25lZCBjaGFyICpvdXQsCi0rCQkJICAg c2l6ZV90IGxlbmd0aCwKLSsJCQkgICBjb25zdCBBRVNfS0VZICprZXksCi0rCQkJICAgaW50IGVu Yyk7Ci0rdm9pZCBhZXNuaV9jYmNfZW5jcnlwdChjb25zdCB1bnNpZ25lZCBjaGFyICppbiwKLSsJ CQkgICB1bnNpZ25lZCBjaGFyICpvdXQsCi0rCQkJICAgc2l6ZV90IGxlbmd0aCwKLSsJCQkgICBj b25zdCBBRVNfS0VZICprZXksCi0rCQkJICAgdW5zaWduZWQgY2hhciAqaXZlYywgaW50IGVuYyk7 Ci0rCi0rLyogRnVuY3Rpb24gZm9yIEVOR0lORSBkZXRlY3Rpb24gYW5kIGNvbnRyb2wgKi8KLStz dGF0aWMgaW50IGFlc25pX2luaXQoRU5HSU5FICplKTsKLSsKLSsvKiBDaXBoZXIgU3R1ZmYgKi8K LStzdGF0aWMgaW50IGFlc25pX2NpcGhlcnMoRU5HSU5FICplLCBjb25zdCBFVlBfQ0lQSEVSICoq Y2lwaGVyLAotKwkJCQljb25zdCBpbnQgKipuaWRzLCBpbnQgbmlkKTsKLSsKLSsjZGVmaW5lIEFF U05JX01JTl9BTElHTgkxNgotKyNkZWZpbmUgQUVTTklfQUxJR04oeCkgXAotKwkoKHZvaWQgKiko KCh1bnNpZ25lZCBsb25nKSh4KStBRVNOSV9NSU5fQUxJR04tMSkmfihBRVNOSV9NSU5fQUxJR04t MSkpKQotKwotKy8qIEVuZ2luZSBuYW1lcyAqLwotK3N0YXRpYyBjb25zdCBjaGFyICAgYWVzbmlf aWRbXSA9ICJhZXNuaSIsCi0rCQkgICAgYWVzbmlfbmFtZVtdID0gIkludGVsIEFFUy1OSSBlbmdp bmUiLAotKwkJICAgIG5vX2Flc25pX25hbWVbXSA9ICJJbnRlbCBBRVMtTkkgZW5naW5lIChuby1h ZXNuaSkiOwotKwotKy8qID09PT09IEVuZ2luZSAibWFuYWdlbWVudCIgZnVuY3Rpb25zID09PT09 ICovCi0rCi0rI2lmIGRlZmluZWQoX1dJTjMyKQotK3R5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCBJ QTMyQ0FQOwotKyNlbHNlCi0rdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgSUEzMkNBUDsKLSsj ZW5kaWYKLSsKLSsvKiBQcmVwYXJlIHRoZSBFTkdJTkUgc3RydWN0dXJlIGZvciByZWdpc3RyYXRp b24gKi8KLStzdGF0aWMgaW50Ci0rYWVzbmlfYmluZF9oZWxwZXIoRU5HSU5FICplKQotK3sKLSsJ aW50IGVuZ2FnZTsKLSsJaWYgKHNpemVvZihPUEVOU1NMX2lhMzJjYXBfUCkgPiA0KSB7Ci0rCQll bmdhZ2UgPSAoT1BFTlNTTF9pYTMyY2FwX1AgPj4gNTcpICYgMTsKLSsJfSBlbHNlIHsKLSsJCUlB MzJDQVAgT1BFTlNTTF9pYTMyX2NwdWlkKHZvaWQpOwotKwkJZW5nYWdlID0gKE9QRU5TU0xfaWEz Ml9jcHVpZCgpID4+IDU3KSAmIDE7Ci0rCX0KLSsKLSsJLyogUmVnaXN0ZXIgZXZlcnl0aGluZyBv ciByZXR1cm4gd2l0aCBhbiBlcnJvciAqLwotKwlpZiAoIUVOR0lORV9zZXRfaWQoZSwgYWVzbmlf aWQpIHx8Ci0rCSAgICAhRU5HSU5FX3NldF9uYW1lKGUsIGVuZ2FnZSA/IGFlc25pX25hbWUgOiBu b19hZXNuaV9uYW1lKSB8fAotKwotKwkgICAgIUVOR0lORV9zZXRfaW5pdF9mdW5jdGlvbihlLCBh ZXNuaV9pbml0KSB8fAotKwkgICAgKGVuZ2FnZSAmJiAhRU5HSU5FX3NldF9jaXBoZXJzIChlLCBh ZXNuaV9jaXBoZXJzKSkKLSsJICAgICkKLSsJCXJldHVybiAwOwotKwotKwkvKiBFdmVyeXRoaW5n IGxvb2tzIGdvb2QgKi8KLSsJcmV0dXJuIDE7Ci0rfQotKwotKy8qIENvbnN0cnVjdG9yICovCi0r c3RhdGljIEVOR0lORSAqCi0rRU5HSU5FX2Flc25pKHZvaWQpCi0rewotKwlFTkdJTkUgKmVuZyA9 IEVOR0lORV9uZXcoKTsKLSsKLSsJaWYgKCFlbmcpIHsKLSsJCXJldHVybiBOVUxMOwotKwl9Ci0r Ci0rCWlmICghYWVzbmlfYmluZF9oZWxwZXIoZW5nKSkgewotKwkJRU5HSU5FX2ZyZWUoZW5nKTsK LSsJCXJldHVybiBOVUxMOwotKwl9Ci0rCi0rCXJldHVybiBlbmc7Ci0rfQotKwotKy8qIENoZWNr IGF2YWlsYWJpbGl0eSBvZiB0aGUgZW5naW5lICovCi0rc3RhdGljIGludAotK2Flc25pX2luaXQo RU5HSU5FICplKQotK3sKLSsJcmV0dXJuIDE7Ci0rfQotKwotKyNpZiBkZWZpbmVkKE5JRF9hZXNf MTI4X2NmYjEyOCkgJiYgISBkZWZpbmVkIChOSURfYWVzXzEyOF9jZmIpCi0rI2RlZmluZSBOSURf YWVzXzEyOF9jZmIJTklEX2Flc18xMjhfY2ZiMTI4Ci0rI2VuZGlmCi0rCi0rI2lmIGRlZmluZWQo TklEX2Flc18xMjhfb2ZiMTI4KSAmJiAhIGRlZmluZWQgKE5JRF9hZXNfMTI4X29mYikKLSsjZGVm aW5lIE5JRF9hZXNfMTI4X29mYglOSURfYWVzXzEyOF9vZmIxMjgKLSsjZW5kaWYKLSsKLSsjaWYg ZGVmaW5lZChOSURfYWVzXzE5Ml9jZmIxMjgpICYmICEgZGVmaW5lZCAoTklEX2Flc18xOTJfY2Zi KQotKyNkZWZpbmUgTklEX2Flc18xOTJfY2ZiCU5JRF9hZXNfMTkyX2NmYjEyOAotKyNlbmRpZgot KwotKyNpZiBkZWZpbmVkKE5JRF9hZXNfMTkyX29mYjEyOCkgJiYgISBkZWZpbmVkIChOSURfYWVz XzE5Ml9vZmIpCi0rI2RlZmluZSBOSURfYWVzXzE5Ml9vZmIJTklEX2Flc18xOTJfb2ZiMTI4Ci0r I2VuZGlmCi0rCi0rI2lmIGRlZmluZWQoTklEX2Flc18yNTZfY2ZiMTI4KSAmJiAhIGRlZmluZWQg KE5JRF9hZXNfMjU2X2NmYikKLSsjZGVmaW5lIE5JRF9hZXNfMjU2X2NmYglOSURfYWVzXzI1Nl9j ZmIxMjgKLSsjZW5kaWYKLSsKLSsjaWYgZGVmaW5lZChOSURfYWVzXzI1Nl9vZmIxMjgpICYmICEg ZGVmaW5lZCAoTklEX2Flc18yNTZfb2ZiKQotKyNkZWZpbmUgTklEX2Flc18yNTZfb2ZiCU5JRF9h ZXNfMjU2X29mYjEyOAotKyNlbmRpZgotKwotKy8qIExpc3Qgb2Ygc3VwcG9ydGVkIGNpcGhlcnMu ICovCi0rc3RhdGljIGludCBhZXNuaV9jaXBoZXJfbmlkc1tdID0gewotKwlOSURfYWVzXzEyOF9l Y2IsCi0rCU5JRF9hZXNfMTI4X2NiYywKLSsJTklEX2Flc18xMjhfY2ZiLAotKwlOSURfYWVzXzEy OF9vZmIsCi0rCi0rCU5JRF9hZXNfMTkyX2VjYiwKLSsJTklEX2Flc18xOTJfY2JjLAotKwlOSURf YWVzXzE5Ml9jZmIsCi0rCU5JRF9hZXNfMTkyX29mYiwKLSsKLSsJTklEX2Flc18yNTZfZWNiLAot KwlOSURfYWVzXzI1Nl9jYmMsCi0rCU5JRF9hZXNfMjU2X2NmYiwKLSsJTklEX2Flc18yNTZfb2Zi LAotK307Ci0rc3RhdGljIGludCBhZXNuaV9jaXBoZXJfbmlkc19udW0gPQotKwkoc2l6ZW9mKGFl c25pX2NpcGhlcl9uaWRzKS9zaXplb2YoYWVzbmlfY2lwaGVyX25pZHNbMF0pKTsKLSsKLSt0eXBl ZGVmIHN0cnVjdAotK3sKLSsJQUVTX0tFWSBrczsKLSsJdW5zaWduZWQgaW50IF9wYWQxWzNdOwot K30gQUVTTklfS0VZOwotKwotK3N0YXRpYyBpbnQKLSthZXNuaV9pbml0X2tleShFVlBfQ0lQSEVS X0NUWCAqY3R4LCBjb25zdCB1bnNpZ25lZCBjaGFyICp1c2VyX2tleSwKLSsJCSAgICBjb25zdCB1 bnNpZ25lZCBjaGFyICppdiwgaW50IGVuYykKLSt7Ci0rCWludCByZXQ7Ci0rCUFFU19LRVkgKmtl eSA9IEFFU05JX0FMSUdOKGN0eC0+Y2lwaGVyX2RhdGEpOwotKwotKwlpZiAoKGN0eC0+Y2lwaGVy LT5mbGFncyAmIEVWUF9DSVBIX01PREUpID09IEVWUF9DSVBIX0NGQl9NT0RFCi0rCSAgICB8fCAo Y3R4LT5jaXBoZXItPmZsYWdzICYgRVZQX0NJUEhfTU9ERSkgPT0gRVZQX0NJUEhfT0ZCX01PREUK LSsJICAgIHx8IGVuYykKLSsJCXJldD1hZXNuaV9zZXRfZW5jcnlwdF9rZXkodXNlcl9rZXksIGN0 eC0+a2V5X2xlbiAqIDgsIGtleSk7Ci0rCWVsc2UKLSsJCXJldD1hZXNuaV9zZXRfZGVjcnlwdF9r ZXkodXNlcl9rZXksIGN0eC0+a2V5X2xlbiAqIDgsIGtleSk7Ci0rCi0rCWlmKHJldCA8IDApIHsK LSsJCUVWUGVycihFVlBfRl9BRVNOSV9JTklUX0tFWSxFVlBfUl9BRVNfS0VZX1NFVFVQX0ZBSUxF RCk7Ci0rCQlyZXR1cm4gMDsKLSsJfQotKwotKwlyZXR1cm4gMTsKLSt9Ci0rCi0rc3RhdGljIGlu dCBhZXNuaV9jaXBoZXJfZWNiKEVWUF9DSVBIRVJfQ1RYICpjdHgsIHVuc2lnbmVkIGNoYXIgKm91 dCwKLSsJCSBjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgc2l6ZV90IGlubCkKLSt7CUFFU19LRVkg KmtleSA9IEFFU05JX0FMSUdOKGN0eC0+Y2lwaGVyX2RhdGEpOwotKwlhZXNuaV9lY2JfZW5jcnlw dChpbiwgb3V0LCBpbmwsIGtleSwgY3R4LT5lbmNyeXB0KTsKLSsJcmV0dXJuIDE7Ci0rfQotK3N0 YXRpYyBpbnQgYWVzbmlfY2lwaGVyX2NiYyhFVlBfQ0lQSEVSX0NUWCAqY3R4LCB1bnNpZ25lZCBj aGFyICpvdXQsCi0rCQkgY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHNpemVfdCBpbmwpCi0rewlB RVNfS0VZICprZXkgPSBBRVNOSV9BTElHTihjdHgtPmNpcGhlcl9kYXRhKTsKLSsJYWVzbmlfY2Jj X2VuY3J5cHQoaW4sIG91dCwgaW5sLCBrZXksCi0rCQkJICAgICAgY3R4LT5pdiwgY3R4LT5lbmNy eXB0KTsKLSsJcmV0dXJuIDE7Ci0rfQotK3N0YXRpYyBpbnQgYWVzbmlfY2lwaGVyX2NmYihFVlBf Q0lQSEVSX0NUWCAqY3R4LCB1bnNpZ25lZCBjaGFyICpvdXQsCi0rCQkgY29uc3QgdW5zaWduZWQg Y2hhciAqaW4sIHNpemVfdCBpbmwpCi0rewlBRVNfS0VZICprZXkgPSBBRVNOSV9BTElHTihjdHgt PmNpcGhlcl9kYXRhKTsKLSsJQ1JZUFRPX2NmYjEyOF9lbmNyeXB0KGluLCBvdXQsIGlubCwga2V5 LCBjdHgtPml2LAotKwkJCQkmY3R4LT5udW0sIGN0eC0+ZW5jcnlwdCwKLSsJCQkJKGJsb2NrMTI4 X2YpYWVzbmlfZW5jcnlwdCk7Ci0rCXJldHVybiAxOwotK30KLStzdGF0aWMgaW50IGFlc25pX2Np cGhlcl9vZmIoRVZQX0NJUEhFUl9DVFggKmN0eCwgdW5zaWduZWQgY2hhciAqb3V0LAotKwkJIGNv bnN0IHVuc2lnbmVkIGNoYXIgKmluLCBzaXplX3QgaW5sKQotK3sJQUVTX0tFWSAqa2V5ID0gQUVT TklfQUxJR04oY3R4LT5jaXBoZXJfZGF0YSk7Ci0rCUNSWVBUT19vZmIxMjhfZW5jcnlwdChpbiwg b3V0LCBpbmwsIGtleSwgY3R4LT5pdiwKLSsJCQkJJmN0eC0+bnVtLCAoYmxvY2sxMjhfZilhZXNu aV9lbmNyeXB0KTsKLSsJcmV0dXJuIDE7Ci0rfQotKwotKyNkZWZpbmUgQUVTX0JMT0NLX1NJWkUJ CTE2Ci0rCi0rI2RlZmluZSBFVlBfQ0lQSEVSX2Jsb2NrX3NpemVfRUNCCUFFU19CTE9DS19TSVpF Ci0rI2RlZmluZSBFVlBfQ0lQSEVSX2Jsb2NrX3NpemVfQ0JDCUFFU19CTE9DS19TSVpFCi0rI2Rl ZmluZSBFVlBfQ0lQSEVSX2Jsb2NrX3NpemVfT0ZCCTEKLSsjZGVmaW5lIEVWUF9DSVBIRVJfYmxv Y2tfc2l6ZV9DRkIJMQotKwotKy8qIERlY2xhcmluZyBzbyBtYW55IGNpcGhlcnMgYnkgaGFuZCB3 b3VsZCBiZSBhIHBhaW4uCi0rICAgSW5zdGVhZCBpbnRyb2R1Y2UgYSBiaXQgb2YgcHJlcHJvY2Vz c29yIG1hZ2ljIDotKSAqLwotKyNkZWZpbmUJREVDTEFSRV9BRVNfRVZQKGtzaXplLGxtb2RlLHVt b2RlKQlcCi0rc3RhdGljIGNvbnN0IEVWUF9DSVBIRVIgYWVzbmlfIyNrc2l6ZSMjXyMjbG1vZGUg PSB7CVwKLSsJTklEX2Flc18jI2tzaXplIyNfIyNsbW9kZSwJCQlcCi0rCUVWUF9DSVBIRVJfYmxv Y2tfc2l6ZV8jI3Vtb2RlLAkJCVwKLSsJa3NpemUgLyA4LAkJCQkJXAotKwlBRVNfQkxPQ0tfU0la RSwJCQkJCVwKLSsJMCB8IEVWUF9DSVBIXyMjdW1vZGUjI19NT0RFLAkJCVwKLSsJYWVzbmlfaW5p dF9rZXksCQkJCVwKLSsJYWVzbmlfY2lwaGVyXyMjbG1vZGUsCQkJCVwKLSsJTlVMTCwJCQkJCQlc Ci0rCXNpemVvZihBRVNOSV9LRVkpLAkJCQlcCi0rCUVWUF9DSVBIRVJfc2V0X2FzbjFfaXYsCQkJ CVwKLSsJRVZQX0NJUEhFUl9nZXRfYXNuMV9pdiwJCQkJXAotKwlOVUxMLAkJCQkJCVwKLSsJTlVM TAkJCQkJCVwKLSt9Ci0rCi0rREVDTEFSRV9BRVNfRVZQKDEyOCxlY2IsRUNCKTsKLStERUNMQVJF X0FFU19FVlAoMTI4LGNiYyxDQkMpOwotK0RFQ0xBUkVfQUVTX0VWUCgxMjgsY2ZiLENGQik7Ci0r REVDTEFSRV9BRVNfRVZQKDEyOCxvZmIsT0ZCKTsKLSsKLStERUNMQVJFX0FFU19FVlAoMTkyLGVj YixFQ0IpOwotK0RFQ0xBUkVfQUVTX0VWUCgxOTIsY2JjLENCQyk7Ci0rREVDTEFSRV9BRVNfRVZQ KDE5MixjZmIsQ0ZCKTsKLStERUNMQVJFX0FFU19FVlAoMTkyLG9mYixPRkIpOwotKwotK0RFQ0xB UkVfQUVTX0VWUCgyNTYsZWNiLEVDQik7Ci0rREVDTEFSRV9BRVNfRVZQKDI1NixjYmMsQ0JDKTsK LStERUNMQVJFX0FFU19FVlAoMjU2LGNmYixDRkIpOwotK0RFQ0xBUkVfQUVTX0VWUCgyNTYsb2Zi LE9GQik7Ci0rCi0rc3RhdGljIGludAotK2Flc25pX2NpcGhlcnMgKEVOR0lORSAqZSwgY29uc3Qg RVZQX0NJUEhFUiAqKmNpcGhlciwKLSsJCSAgICAgIGNvbnN0IGludCAqKm5pZHMsIGludCBuaWQp Ci0rewotKwkvKiBObyBzcGVjaWZpYyBjaXBoZXIgPT4gcmV0dXJuIGEgbGlzdCBvZiBzdXBwb3J0 ZWQgbmlkcyAuLi4gKi8KLSsJaWYgKCFjaXBoZXIpIHsKLSsJCSpuaWRzID0gYWVzbmlfY2lwaGVy X25pZHM7Ci0rCQlyZXR1cm4gYWVzbmlfY2lwaGVyX25pZHNfbnVtOwotKwl9Ci0rCi0rCS8qIC4u LiBvciB0aGUgcmVxdWVzdGVkICJjaXBoZXIiIG90aGVyd2lzZSAqLwotKwlzd2l0Y2ggKG5pZCkg ewotKwljYXNlIE5JRF9hZXNfMTI4X2VjYjoKLSsJCSpjaXBoZXIgPSAmYWVzbmlfMTI4X2VjYjsK LSsJCWJyZWFrOwotKwljYXNlIE5JRF9hZXNfMTI4X2NiYzoKLSsJCSpjaXBoZXIgPSAmYWVzbmlf MTI4X2NiYzsKLSsJCWJyZWFrOwotKwljYXNlIE5JRF9hZXNfMTI4X2NmYjoKLSsJCSpjaXBoZXIg PSAmYWVzbmlfMTI4X2NmYjsKLSsJCWJyZWFrOwotKwljYXNlIE5JRF9hZXNfMTI4X29mYjoKLSsJ CSpjaXBoZXIgPSAmYWVzbmlfMTI4X29mYjsKLSsJCWJyZWFrOwotKwotKwljYXNlIE5JRF9hZXNf MTkyX2VjYjoKLSsJCSpjaXBoZXIgPSAmYWVzbmlfMTkyX2VjYjsKLSsJCWJyZWFrOwotKwljYXNl IE5JRF9hZXNfMTkyX2NiYzoKLSsJCSpjaXBoZXIgPSAmYWVzbmlfMTkyX2NiYzsKLSsJCWJyZWFr OwotKwljYXNlIE5JRF9hZXNfMTkyX2NmYjoKLSsJCSpjaXBoZXIgPSAmYWVzbmlfMTkyX2NmYjsK LSsJCWJyZWFrOwotKwljYXNlIE5JRF9hZXNfMTkyX29mYjoKLSsJCSpjaXBoZXIgPSAmYWVzbmlf MTkyX29mYjsKLSsJCWJyZWFrOwotKwotKwljYXNlIE5JRF9hZXNfMjU2X2VjYjoKLSsJCSpjaXBo ZXIgPSAmYWVzbmlfMjU2X2VjYjsKLSsJCWJyZWFrOwotKwljYXNlIE5JRF9hZXNfMjU2X2NiYzoK LSsJCSpjaXBoZXIgPSAmYWVzbmlfMjU2X2NiYzsKLSsJCWJyZWFrOwotKwljYXNlIE5JRF9hZXNf MjU2X2NmYjoKLSsJCSpjaXBoZXIgPSAmYWVzbmlfMjU2X2NmYjsKLSsJCWJyZWFrOwotKwljYXNl IE5JRF9hZXNfMjU2X29mYjoKLSsJCSpjaXBoZXIgPSAmYWVzbmlfMjU2X29mYjsKLSsJCWJyZWFr OwotKwotKwlkZWZhdWx0OgotKwkJLyogU29ycnksIHdlIGRvbid0IHN1cHBvcnQgdGhpcyBOSUQg Ki8KLSsJCSpjaXBoZXIgPSBOVUxMOwotKwkJcmV0dXJuIDA7Ci0rCX0KLSsKLSsJcmV0dXJuIDE7 Ci0rfQotKwotKyNlbmRpZiAvKiBDT01QSUxFX0hXX0FFU05JICovCi0rI2VuZGlmIC8qICFkZWZp bmVkKE9QRU5TU0xfTk9fSFcpICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fSFdfQUVTTkkpICYmICFk ZWZpbmVkKE9QRU5TU0xfTk9fQUVTKSAqLwotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMC1iZXRhNC9j cnlwdG8vZW5naW5lL2VuZ19hbGwuYy5hZXNuaSBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9l bmdpbmUvZW5nX2FsbC5jCi0tLS0gb3BlbnNzbC0xLjAuMC1iZXRhNC9jcnlwdG8vZW5naW5lL2Vu Z19hbGwuYy5hZXNuaQkyMDEwLTAxLTA3IDIzOjM4OjMxLjAwMDAwMDAwMCArMDEwMAotKysrIG9w ZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2VuZ2luZS9lbmdfYWxsLmMJMjAxMC0wMS0xMiAyMjox ODowNi4wMDAwMDAwMDAgKzAxMDAKLUBAIC04NSw2ICs4NSw5IEBAIHZvaWQgRU5HSU5FX2xvYWRf YnVpbHRpbl9lbmdpbmVzKHZvaWQpCi0gI2lmICFkZWZpbmVkKE9QRU5TU0xfTk9fSFcpICYmIChk ZWZpbmVkKF9fT3BlbkJTRF9fKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKEhB VkVfQ1JZUFRPREVWKSkKLSAJRU5HSU5FX2xvYWRfY3J5cHRvZGV2KCk7Ci0gI2VuZGlmCi0rI2lm ICFkZWZpbmVkKE9QRU5TU0xfTk9fSFcpICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fSFdfQUVTTkkp Ci0rCUVOR0lORV9sb2FkX2Flc25pKCk7Ci0rI2VuZGlmCi0gCUVOR0lORV9sb2FkX2R5bmFtaWMo KTsKLSAjaWZuZGVmIE9QRU5TU0xfTk9fU1RBVElDX0VOR0lORQotICNpZm5kZWYgT1BFTlNTTF9O T19IVwotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMC1iZXRhNC9jcnlwdG8vZW5naW5lL2VuZ2luZS5o LmFlc25pIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2VuZ2luZS9lbmdpbmUuaAotLS0tIG9w ZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2VuZ2luZS9lbmdpbmUuaC5hZXNuaQkyMDEwLTAxLTA3 IDIzOjM4OjMwLjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRv L2VuZ2luZS9lbmdpbmUuaAkyMDEwLTAxLTEyIDIyOjE4OjA2LjAwMDAwMDAwMCArMDEwMAotQEAg LTM0Miw2ICszNDIsNyBAQCB2b2lkIEVOR0lORV9sb2FkX2dvc3Qodm9pZCk7Ci0gI2VuZGlmCi0g I2VuZGlmCi0gdm9pZCBFTkdJTkVfbG9hZF9jcnlwdG9kZXYodm9pZCk7Ci0rdm9pZCBFTkdJTkVf bG9hZF9hZXNuaSh2b2lkKTsKLSB2b2lkIEVOR0lORV9sb2FkX2J1aWx0aW5fZW5naW5lcyh2b2lk KTsKLSAKLSAvKiBHZXQgYW5kIHNldCBnbG9iYWwgZmxhZ3MgKEVOR0lORV9UQUJMRV9GTEFHXyoq KikgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbgotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMC1iZXRhNC9j cnlwdG8vZW5naW5lL01ha2VmaWxlLmFlc25pIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2Vu Z2luZS9NYWtlZmlsZQotLS0tIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2VuZ2luZS9NYWtl ZmlsZS5hZXNuaQkyMDA4LTA2LTA0IDEzOjAxOjI5LjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5z c2wtMS4wLjAtYmV0YTQvY3J5cHRvL2VuZ2luZS9NYWtlZmlsZQkyMDEwLTAxLTEyIDIyOjE4OjA2 LjAwMDAwMDAwMCArMDEwMAotQEAgLTIxLDEyICsyMSwxNCBAQCBMSUJTUkM9IGVuZ19lcnIuYyBl bmdfbGliLmMgZW5nX2xpc3QuYyBlCi0gCWVuZ190YWJsZS5jIGVuZ19wa2V5LmMgZW5nX2ZhdC5j IGVuZ19hbGwuYyBcCi0gCXRiX3JzYS5jIHRiX2RzYS5jIHRiX2VjZHNhLmMgdGJfZGguYyB0Yl9l Y2RoLmMgdGJfcmFuZC5jIHRiX3N0b3JlLmMgXAotIAl0Yl9jaXBoZXIuYyB0Yl9kaWdlc3QuYyB0 Yl9wa21ldGguYyB0Yl9hc25tdGguYyBcCi0tCWVuZ19vcGVuc3NsLmMgZW5nX2NuZi5jIGVuZ19k eW4uYyBlbmdfY3J5cHRvZGV2LmMKLSsJZW5nX29wZW5zc2wuYyBlbmdfY25mLmMgZW5nX2R5bi5j IGVuZ19jcnlwdG9kZXYuYyBcCi0rCWVuZ19hZXNuaS5jCi0gTElCT0JKPSBlbmdfZXJyLm8gZW5n X2xpYi5vIGVuZ19saXN0Lm8gZW5nX2luaXQubyBlbmdfY3RybC5vIFwKLSAJZW5nX3RhYmxlLm8g ZW5nX3BrZXkubyBlbmdfZmF0Lm8gZW5nX2FsbC5vIFwKLSAJdGJfcnNhLm8gdGJfZHNhLm8gdGJf ZWNkc2EubyB0Yl9kaC5vIHRiX2VjZGgubyB0Yl9yYW5kLm8gdGJfc3RvcmUubyBcCi0gCXRiX2Np cGhlci5vIHRiX2RpZ2VzdC5vIHRiX3BrbWV0aC5vIHRiX2Fzbm10aC5vIFwKLS0JZW5nX29wZW5z c2wubyBlbmdfY25mLm8gZW5nX2R5bi5vIGVuZ19jcnlwdG9kZXYubwotKwllbmdfb3BlbnNzbC5v IGVuZ19jbmYubyBlbmdfZHluLm8gZW5nX2NyeXB0b2Rldi5vIFwKLSsJZW5nX2Flc25pLm8KLSAK LSBTUkM9ICQoTElCU1JDKQotIAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMC1iZXRhNC9jcnlwdG8v ZXZwL2V2cF9lcnIuYy5hZXNuaSBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9ldnAvZXZwX2Vy ci5jCi0tLS0gb3BlbnNzbC0xLjAuMC1iZXRhNC9jcnlwdG8vZXZwL2V2cF9lcnIuYy5hZXNuaQky MDEwLTAxLTA3IDIzOjM4OjMxLjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjAtYmV0 YTQvY3J5cHRvL2V2cC9ldnBfZXJyLmMJMjAxMC0wMS0xMiAyMjoxODowNi4wMDAwMDAwMDAgKzAx MDAKLUBAIC0xLDYgKzEsNiBAQAotIC8qIGNyeXB0by9ldnAvZXZwX2Vyci5jICovCi0gLyogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0gKiBDb3B5cmlnaHQgKGMpIDE5OTktMjAwOCBUaGUgT3BlblNTTCBQcm9qZWN0 LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKiBDb3B5cmlnaHQgKGMpIDE5OTktMjAwOSBUaGUg T3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAgKgotICAqIFJlZGlzdHJp YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91 dAotICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs b3dpbmcgY29uZGl0aW9ucwotQEAgLTcwLDYgKzcwLDcgQEAKLSAKLSBzdGF0aWMgRVJSX1NUUklO R19EQVRBIEVWUF9zdHJfZnVuY3RzW109Ci0gCXsKLSt7RVJSX0ZVTkMoRVZQX0ZfQUVTTklfSU5J VF9LRVkpLAkiQUVTTklfSU5JVF9LRVkifSwKLSB7RVJSX0ZVTkMoRVZQX0ZfQUVTX0lOSVRfS0VZ KSwJIkFFU19JTklUX0tFWSJ9LAotIHtFUlJfRlVOQyhFVlBfRl9DQU1FTExJQV9JTklUX0tFWSks CSJDQU1FTExJQV9JTklUX0tFWSJ9LAotIHtFUlJfRlVOQyhFVlBfRl9EMklfUEtFWSksCSJEMklf UEtFWSJ9LAotQEAgLTg1LDcgKzg2LDcgQEAgc3RhdGljIEVSUl9TVFJJTkdfREFUQSBFVlBfc3Ry X2Z1bmN0c1tdPQotIHtFUlJfRlVOQyhFVlBfRl9FVlBfRElHRVNUSU5JVF9FWCksCSJFVlBfRGln ZXN0SW5pdF9leCJ9LAotIHtFUlJfRlVOQyhFVlBfRl9FVlBfRU5DUllQVEZJTkFMX0VYKSwJIkVW UF9FbmNyeXB0RmluYWxfZXgifSwKLSB7RVJSX0ZVTkMoRVZQX0ZfRVZQX01EX0NUWF9DT1BZX0VY KSwJIkVWUF9NRF9DVFhfY29weV9leCJ9LAotLXtFUlJfRlVOQyhFVlBfRl9FVlBfTURfU0laRSks CSJFVlBfTURfU0laRSJ9LAotK3tFUlJfRlVOQyhFVlBfRl9FVlBfTURfU0laRSksCSJFVlBfTURf c2l6ZSJ9LAotIHtFUlJfRlVOQyhFVlBfRl9FVlBfT1BFTklOSVQpLAkiRVZQX09wZW5Jbml0In0s Ci0ge0VSUl9GVU5DKEVWUF9GX0VWUF9QQkVfQUxHX0FERCksCSJFVlBfUEJFX2FsZ19hZGQifSwK LSB7RVJSX0ZVTkMoRVZQX0ZfRVZQX1BCRV9BTEdfQUREX1RZUEUpLAkiRVZQX1BCRV9hbGdfYWRk X3R5cGUifSwKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2V2cC9ldnAuaC5h ZXNuaSBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9ldnAvZXZwLmgKLS0tLSBvcGVuc3NsLTEu MC4wLWJldGE0L2NyeXB0by9ldnAvZXZwLmguYWVzbmkJMjAxMC0wMS0wNyAyMzozODozMS4wMDAw MDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9ldnAvZXZwLmgJMjAx MC0wMS0xMiAyMjoxODowNi4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xMTYyLDYgKzExNjIsNyBAQCB2 b2lkIEVSUl9sb2FkX0VWUF9zdHJpbmdzKHZvaWQpOwotIC8qIEVycm9yIGNvZGVzIGZvciB0aGUg RVZQIGZ1bmN0aW9ucy4gKi8KLSAKLSAvKiBGdW5jdGlvbiBjb2Rlcy4gKi8KLSsjZGVmaW5lIEVW UF9GX0FFU05JX0lOSVRfS0VZCQkJCSAxNjMKLSAjZGVmaW5lIEVWUF9GX0FFU19JTklUX0tFWQkJ CQkgMTMzCi0gI2RlZmluZSBFVlBfRl9DQU1FTExJQV9JTklUX0tFWQkJCQkgMTU5Ci0gI2RlZmlu ZSBFVlBfRl9EMklfUEtFWQkJCQkJIDEwMAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMC1iZXRhNC90 ZXN0L3Rlc3RfYWVzbmkuYWVzbmkgb3BlbnNzbC0xLjAuMC1iZXRhNC90ZXN0L3Rlc3RfYWVzbmkK LS0tLSBvcGVuc3NsLTEuMC4wLWJldGE0L3Rlc3QvdGVzdF9hZXNuaS5hZXNuaQkyMDEwLTAxLTEy IDIyOjE4OjA2LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjAtYmV0YTQvdGVzdC90 ZXN0X2Flc25pCTIwMTAtMDEtMTIgMjI6MTg6MDYuMDAwMDAwMDAwICswMTAwCi1AQCAtMCwwICsx LDY5IEBACi0rIyEvYmluL3NoCi0rCi0rUFJPRz0kMQotKwotK2lmIFsgLXggJFBST0cgXTsgdGhl bgotKyAgICBpZiBleHByICJ4YCRQUk9HIHZlcnNpb25gIiA6ICJ4T3BlblNTTCIgPiAvZGV2L251 bGw7IHRoZW4KLSsJOgotKyAgICBlbHNlCi0rCWVjaG8gIiRQUk9HIGlzIG5vdCBPcGVuU1NMIGV4 ZWN1dGFibGUiCi0rCWV4aXQgMQotKyAgICBmaQotK2Vsc2UKLSsgICAgZWNobyAiJFBST0cgaXMg bm90IGV4ZWN1dGFibGUiCi0rICAgIGV4aXQgMTsKLStmaQotKwotK2lmICRQUk9HIGVuZ2luZSBh ZXNuaSB8IGdyZXAgLXYgbm8tYWVzbmk7IHRoZW4KLSsKLSsgICAgSEFTSD1gY2F0ICRQUk9HIHwg JFBST0cgZGdzdCAtaGV4YAotKwotKyAgICBBRVNfQUxHUz0iCWFlcy0xMjgtZWNiIGFlcy0xOTIt ZWNiIGFlcy0yNTYtZWNiIFwKLSsJCWFlcy0xMjgtY2JjIGFlcy0xOTItY2JjIGFlcy0yNTYtY2Jj IFwKLSsJCWFlcy0xMjgtY2ZiIGFlcy0xOTItY2ZiIGFlcy0yNTYtY2ZiIFwKLSsJCWFlcy0xMjgt b2ZiIGFlcy0xOTItb2ZiIGFlcy0yNTYtb2ZiIgotKyAgICBCVUZTSVpFPSIxNiAzMiA0OCA2NCA4 MCA5NiAxMjggMTQ0IDk5OSIKLSsKLSsgICAgbmVycj0wCi0rCi0rICAgIGZvciBhbGcgaW4gJEFF U19BTEdTOyBkbwotKwllY2hvICRhbGcKLSsJZm9yIGJ1ZnNpemUgaW4gJEJVRlNJWkU7IGRvCi0r CSAgICBURVNUPWAoCWNhdCAkUFJPRyB8IFwKLSsJCSRQUk9HIGVuYyAtZSAtayAiJEhBU0giIC0k YWxnIC1idWZzaXplICRidWZzaXplIC1lbmdpbmUgYWVzbmkgfCBcCi0rCQkkUFJPRyBlbmMgLWQg LWsgIiRIQVNIIiAtJGFsZyB8IFwKLSsJCSRQUk9HIGRnc3QgLWhleCApIDI+L2Rldi9udWxsYAot KwkgICAgaWYgWyAiJFRFU1QiICE9ICIkSEFTSCIgXTsgdGhlbgotKwkJZWNobyAiLSRhbGcvJGJ1 ZnNpemUgZW5jcnlwdCB0ZXN0IGZhaWxlZCIKLSsJCW5lcnI9YGV4cHIgJG5lcnIgKyAxYAotKwkg ICAgZmkKLSsJZG9uZQotKwlmb3IgYnVmc2l6ZSBpbiAkQlVGU0laRTsgZG8gCi0rCSAgICBURVNU PWAoCWNhdCAkUFJPRyB8IFwKLSsJCSRQUk9HIGVuYyAtZSAtayAiJEhBU0giIC0kYWxnIHwgXAot KwkJJFBST0cgZW5jIC1kIC1rICIkSEFTSCIgLSRhbGcgLWJ1ZnNpemUgJGJ1ZnNpemUgLWVuZ2lu ZSBhZXNuaSB8IFwKLSsJCSRQUk9HIGRnc3QgLWhleCApIDI+L2Rldi9udWxsYAotKwkgICAgaWYg WyAiJFRFU1QiICE9ICIkSEFTSCIgXTsgdGhlbgotKwkJZWNobyAiLSRhbGcvJGJ1ZnNpemUgZGVj cnlwdCB0ZXN0IGZhaWxlZCIKLSsJCW5lcnI9YGV4cHIgJG5lcnIgKyAxYAotKwkgICAgZmkKLSsJ ZG9uZQotKwlURVNUPWAoCWNhdCAkUFJPRyB8IFwKLSsJCSRQUk9HIGVuYyAtZSAtayAiJEhBU0gi IC0kYWxnIC1lbmdpbmUgYWVzbmkgfCBcCi0rCQkkUFJPRyBlbmMgLWQgLWsgIiRIQVNIIiAtJGFs ZyAtZW5naW5lIGFlc25pIHwgXAotKwkJJFBST0cgZGdzdCAtaGV4ICkgMj4vZGV2L251bGxgCi0r CWlmIFsgIiRURVNUIiAhPSAiJEhBU0giIF07IHRoZW4KLSsJCWVjaG8gIi0kYWxnIGVuL2RlY3J5 cHQgdGVzdCBmYWlsZWQiCi0rCQluZXJyPWBleHByICRuZXJyICsgMWAKLSsJZmkKLSsgICAgZG9u ZQotKwotKyAgICBpZiBbICRuZXJyIC1ndCAwIF07IHRoZW4KLSsJZWNobyAiQUVTTkkgZW5naW5l IHRlc3QgZmFpbGVkLiIKLSsJZXhpdCAxOwotKyAgICBmaQotK2Vsc2UKLSsgICAgZWNobyAiQUVT TkkgZW5naW5lIGlzIG5vdCBhdmFpbGFibGUiCi0rZmkKLSsKLStleGl0IDAKCmRpZmYgLS1naXQg YS9vcGVuc3NsLTEuMC4wLWJldGE1LWlwdjYtYXBwcy5wYXRjaCBiL29wZW5zc2wtMS4wLjAtYmV0 YTUtaXB2Ni1hcHBzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MzA0YzAx Li4wMDAwMDAwCi0tLSBhL29wZW5zc2wtMS4wLjAtYmV0YTUtaXB2Ni1hcHBzLnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsNDk5ICswLDAgQEAKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjAtYmV0YTUv YXBwcy9zX2FwcHMuaC5pcHY2LWFwcHMgb3BlbnNzbC0xLjAuMC1iZXRhNS9hcHBzL3NfYXBwcy5o Ci0tLS0gb3BlbnNzbC0xLjAuMC1iZXRhNS9hcHBzL3NfYXBwcy5oLmlwdjYtYXBwcwkyMDEwLTAy LTAzIDA5OjQzOjQ5LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjAtYmV0YTUvYXBw cy9zX2FwcHMuaAkyMDEwLTAyLTAzIDA5OjQzOjQ5LjAwMDAwMDAwMCArMDEwMAotQEAgLTE0OCw3 ICsxNDgsNyBAQCB0eXBlZGVmIGZkX21hc2sgZmRfc2V0OwotICNkZWZpbmUgUE9SVF9TVFIgICAg ICAgICI0NDMzIgotICNkZWZpbmUgUFJPVE9DT0wgICAgICAgICJ0Y3AiCi0gCi0taW50IGRvX3Nl cnZlcihpbnQgcG9ydCwgaW50IHR5cGUsIGludCAqcmV0LCBpbnQgKCpjYikgKGNoYXIgKmhvc3Ru YW1lLCBpbnQgcywgdW5zaWduZWQgY2hhciAqY29udGV4dCksIHVuc2lnbmVkIGNoYXIgKmNvbnRl eHQpOwotK2ludCBkb19zZXJ2ZXIoY2hhciAqcG9ydCwgaW50IHR5cGUsIGludCAqcmV0LCBpbnQg KCpjYikgKGNoYXIgKmhvc3RuYW1lLCBpbnQgcywgdW5zaWduZWQgY2hhciAqY29udGV4dCksIHVu c2lnbmVkIGNoYXIgKmNvbnRleHQpOwotICNpZmRlZiBIRUFERVJfWDUwOV9ICi0gaW50IE1TX0NB TExCQUNLIHZlcmlmeV9jYWxsYmFjayhpbnQgb2ssIFg1MDlfU1RPUkVfQ1RYICpjdHgpOwotICNl bmRpZgotQEAgLTE1NiwxMCArMTU2LDkgQEAgaW50IE1TX0NBTExCQUNLIHZlcmlmeV9jYWxsYmFj ayhpbnQgb2ssIAotIGludCBzZXRfY2VydF9zdHVmZihTU0xfQ1RYICpjdHgsIGNoYXIgKmNlcnRf ZmlsZSwgY2hhciAqa2V5X2ZpbGUpOwotIGludCBzZXRfY2VydF9rZXlfc3R1ZmYoU1NMX0NUWCAq Y3R4LCBYNTA5ICpjZXJ0LCBFVlBfUEtFWSAqa2V5KTsKLSAjZW5kaWYKLS1pbnQgaW5pdF9jbGll bnQoaW50ICpzb2NrLCBjaGFyICpzZXJ2ZXIsIGludCBwb3J0LCBpbnQgdHlwZSk7Ci0raW50IGlu aXRfY2xpZW50KGludCAqc29jaywgY2hhciAqc2VydmVyLCBjaGFyICpwb3J0LCBpbnQgdHlwZSk7 Ci0gaW50IHNob3VsZF9yZXRyeShpbnQgaSk7Ci0taW50IGV4dHJhY3RfcG9ydChjaGFyICpzdHIs IHNob3J0ICpwb3J0X3B0cik7Ci0taW50IGV4dHJhY3RfaG9zdF9wb3J0KGNoYXIgKnN0cixjaGFy ICoqaG9zdF9wdHIsdW5zaWduZWQgY2hhciAqaXAsc2hvcnQgKnApOwotK2ludCBleHRyYWN0X2hv c3RfcG9ydChjaGFyICpzdHIsY2hhciAqKmhvc3RfcHRyLGNoYXIgKipwb3J0X3B0cik7Ci0gCi0g bG9uZyBNU19DQUxMQkFDSyBiaW9fZHVtcF9jYWxsYmFjayhCSU8gKmJpbywgaW50IGNtZCwgY29u c3QgY2hhciAqYXJncCwKLSAJCQkJICAgaW50IGFyZ2ksIGxvbmcgYXJnbCwgbG9uZyByZXQpOwot ZGlmZiAtdXAgb3BlbnNzbC0xLjAuMC1iZXRhNS9hcHBzL3NfY2xpZW50LmMuaXB2Ni1hcHBzIG9w ZW5zc2wtMS4wLjAtYmV0YTUvYXBwcy9zX2NsaWVudC5jCi0tLS0gb3BlbnNzbC0xLjAuMC1iZXRh NS9hcHBzL3NfY2xpZW50LmMuaXB2Ni1hcHBzCTIwMTAtMDItMDMgMDk6NDM6NDkuMDAwMDAwMDAw ICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMC1iZXRhNS9hcHBzL3NfY2xpZW50LmMJMjAxMC0wMi0w MyAwOTo0Mzo0OS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0zODksNyArMzg5LDcgQEAgaW50IE1BSU4o aW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAlpbnQgY2J1Zl9sZW4sY2J1Zl9vZmY7Ci0gCWludCBz YnVmX2xlbixzYnVmX29mZjsKLSAJZmRfc2V0IHJlYWRmZHMsd3JpdGVmZHM7Ci0tCXNob3J0IHBv cnQ9UE9SVDsKLSsJY2hhciAqcG9ydF9zdHIgPSBQT1JUX1NUUjsKLSAJaW50IGZ1bGxfbG9nPTE7 Ci0gCWNoYXIgKmhvc3Q9U1NMX0hPU1RfTkFNRTsKLSAJY2hhciAqY2VydF9maWxlPU5VTEwsKmtl eV9maWxlPU5VTEw7Ci1AQCAtNDg4LDEzICs0ODgsMTIgQEAgaW50IE1BSU4oaW50IGFyZ2MsIGNo YXIgKiphcmd2KQotIAkJZWxzZSBpZgkoc3RyY21wKCphcmd2LCItcG9ydCIpID09IDApCi0gCQkJ ewotIAkJCWlmICgtLWFyZ2MgPCAxKSBnb3RvIGJhZDsKLS0JCQlwb3J0PWF0b2koKigrK2FyZ3Yp KTsKLS0JCQlpZiAocG9ydCA9PSAwKSBnb3RvIGJhZDsKLSsJCQlwb3J0X3N0cj0gKigrK2FyZ3Yp OwotIAkJCX0KLSAJCWVsc2UgaWYgKHN0cmNtcCgqYXJndiwiLWNvbm5lY3QiKSA9PSAwKQotIAkJ CXsKLSAJCQlpZiAoLS1hcmdjIDwgMSkgZ290byBiYWQ7Ci0tCQkJaWYgKCFleHRyYWN0X2hvc3Rf cG9ydCgqKCsrYXJndiksJmhvc3QsTlVMTCwmcG9ydCkpCi0rCQkJaWYgKCFleHRyYWN0X2hvc3Rf cG9ydCgqKCsrYXJndiksJmhvc3QsJnBvcnRfc3RyKSkKLSAJCQkJZ290byBiYWQ7Ci0gCQkJfQot IAkJZWxzZSBpZgkoc3RyY21wKCphcmd2LCItdmVyaWZ5IikgPT0gMCkKLUBAIC05NjcsNyArOTY2 LDcgQEAgYmFkOgotIAotIHJlX3N0YXJ0OgotIAotLQlpZiAoaW5pdF9jbGllbnQoJnMsaG9zdCxw b3J0LHNvY2tldF90eXBlKSA9PSAwKQotKwlpZiAoaW5pdF9jbGllbnQoJnMsaG9zdCxwb3J0X3N0 cixzb2NrZXRfdHlwZSkgPT0gMCkKLSAJCXsKLSAJCUJJT19wcmludGYoYmlvX2VyciwiY29ubmVj dDplcnJubz0lZFxuIixnZXRfbGFzdF9zb2NrZXRfZXJyb3IoKSk7Ci0gCQlTSFVURE9XTihzKTsK LWRpZmYgLXVwIG9wZW5zc2wtMS4wLjAtYmV0YTUvYXBwcy9zX3NlcnZlci5jLmlwdjYtYXBwcyBv cGVuc3NsLTEuMC4wLWJldGE1L2FwcHMvc19zZXJ2ZXIuYwotLS0tIG9wZW5zc2wtMS4wLjAtYmV0 YTUvYXBwcy9zX3NlcnZlci5jLmlwdjYtYXBwcwkyMDEwLTAyLTAzIDA5OjQzOjQ5LjAwMDAwMDAw MCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjAtYmV0YTUvYXBwcy9zX3NlcnZlci5jCTIwMTAtMDIt MDMgMDk6NDM6NDkuMDAwMDAwMDAwICswMTAwCi1AQCAtODM4LDcgKzgzOCw3IEBAIGludCBNQUlO KGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCXsKLSAJWDUwOV9WRVJJRllfUEFSQU0gKnZwbSA9 IE5VTEw7Ci0gCWludCBiYWRhcmcgPSAwOwotLQlzaG9ydCBwb3J0PVBPUlQ7Ci0rCWNoYXIgKnBv cnRfc3RyID0gUE9SVF9TVFI7Ci0gCWNoYXIgKkNBcGF0aD1OVUxMLCpDQWZpbGU9TlVMTDsKLSAJ dW5zaWduZWQgY2hhciAqY29udGV4dCA9IE5VTEw7Ci0gCWNoYXIgKmRoZmlsZSA9IE5VTEw7Ci1A QCAtOTA5LDggKzkwOSw3IEBAIGludCBNQUlOKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCQkJ IChzdHJjbXAoKmFyZ3YsIi1hY2NlcHQiKSA9PSAwKSkKLSAJCQl7Ci0gCQkJaWYgKC0tYXJnYyA8 IDEpIGdvdG8gYmFkOwotLQkJCWlmICghZXh0cmFjdF9wb3J0KCooKythcmd2KSwmcG9ydCkpCi0t CQkJCWdvdG8gYmFkOwotKwkJCXBvcnRfc3RyPSAqKCsrYXJndik7Ci0gCQkJfQotIAkJZWxzZSBp Zgkoc3RyY21wKCphcmd2LCItdmVyaWZ5IikgPT0gMCkKLSAJCQl7Ci1AQCAtMTcwMCw5ICsxNjk5 LDkgQEAgYmFkOgotIAlCSU9fcHJpbnRmKGJpb19zX291dCwiQUNDRVBUXG4iKTsKLSAJKHZvaWQp QklPX2ZsdXNoKGJpb19zX291dCk7Ci0gCWlmICh3d3cpCi0tCQlkb19zZXJ2ZXIocG9ydCxzb2Nr ZXRfdHlwZSwmYWNjZXB0X3NvY2tldCx3d3dfYm9keSwgY29udGV4dCk7Ci0rCQlkb19zZXJ2ZXIo cG9ydF9zdHIsc29ja2V0X3R5cGUsJmFjY2VwdF9zb2NrZXQsd3d3X2JvZHksIGNvbnRleHQpOwot IAllbHNlCi0tCQlkb19zZXJ2ZXIocG9ydCxzb2NrZXRfdHlwZSwmYWNjZXB0X3NvY2tldCxzdl9i b2R5LCBjb250ZXh0KTsKLSsJCWRvX3NlcnZlcihwb3J0X3N0cixzb2NrZXRfdHlwZSwmYWNjZXB0 X3NvY2tldCxzdl9ib2R5LCBjb250ZXh0KTsKLSAJcHJpbnRfc3RhdHMoYmlvX3Nfb3V0LGN0eCk7 Ci0gCXJldD0wOwotIGVuZDoKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjAtYmV0YTUvYXBwcy9zX3Nv Y2tldC5jLmlwdjYtYXBwcyBvcGVuc3NsLTEuMC4wLWJldGE1L2FwcHMvc19zb2NrZXQuYwotLS0t IG9wZW5zc2wtMS4wLjAtYmV0YTUvYXBwcy9zX3NvY2tldC5jLmlwdjYtYXBwcwkyMDA5LTA4LTI2 IDEzOjIxOjUwLjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wtMS4wLjAtYmV0YTUvYXBwcy9z X3NvY2tldC5jCTIwMTAtMDItMDMgMTA6MDA6MzAuMDAwMDAwMDAwICswMTAwCi1AQCAtMTAyLDkg KzEwMiw3IEBAIHN0YXRpYyBzdHJ1Y3QgaG9zdGVudCAqR2V0SG9zdEJ5TmFtZShjaGEKLSBzdGF0 aWMgdm9pZCBzc2xfc29ja19jbGVhbnVwKHZvaWQpOwotICNlbmRpZgotIHN0YXRpYyBpbnQgc3Ns X3NvY2tfaW5pdCh2b2lkKTsKLS1zdGF0aWMgaW50IGluaXRfY2xpZW50X2lwKGludCAqc29jayx1 bnNpZ25lZCBjaGFyIGlwWzRdLCBpbnQgcG9ydCwgaW50IHR5cGUpOwotLXN0YXRpYyBpbnQgaW5p dF9zZXJ2ZXIoaW50ICpzb2NrLCBpbnQgcG9ydCwgaW50IHR5cGUpOwotLXN0YXRpYyBpbnQgaW5p dF9zZXJ2ZXJfbG9uZyhpbnQgKnNvY2ssIGludCBwb3J0LGNoYXIgKmlwLCBpbnQgdHlwZSk7Ci0r c3RhdGljIGludCBpbml0X3NlcnZlcihpbnQgKnNvY2ssIGNoYXIgKnBvcnQsIGludCB0eXBlKTsK LSBzdGF0aWMgaW50IGRvX2FjY2VwdChpbnQgYWNjX3NvY2ssIGludCAqc29jaywgY2hhciAqKmhv c3QpOwotIHN0YXRpYyBpbnQgaG9zdF9pcChjaGFyICpzdHIsIHVuc2lnbmVkIGNoYXIgaXBbNF0p OwotIAotQEAgLTIzNCw1OCArMjMyLDcwIEBAIHN0YXRpYyBpbnQgc3NsX3NvY2tfaW5pdCh2b2lk KQotIAlyZXR1cm4oMSk7Ci0gCX0KLSAKLS1pbnQgaW5pdF9jbGllbnQoaW50ICpzb2NrLCBjaGFy ICpob3N0LCBpbnQgcG9ydCwgaW50IHR5cGUpCi0raW50IGluaXRfY2xpZW50KGludCAqc29jaywg Y2hhciAqaG9zdCwgY2hhciAqcG9ydCwgaW50IHR5cGUpCi0gCXsKLS0JdW5zaWduZWQgY2hhciBp cFs0XTsKLS0KLS0JaWYgKCFob3N0X2lwKGhvc3QsJihpcFswXSkpKQotLQkJewotLQkJcmV0dXJu KDApOwotLQkJfQotLQlyZXR1cm4oaW5pdF9jbGllbnRfaXAoc29jayxpcCxwb3J0LHR5cGUpKTsK LS0JfQotLQotLXN0YXRpYyBpbnQgaW5pdF9jbGllbnRfaXAoaW50ICpzb2NrLCB1bnNpZ25lZCBj aGFyIGlwWzRdLCBpbnQgcG9ydCwgaW50IHR5cGUpCi0tCXsKLS0JdW5zaWduZWQgbG9uZyBhZGRy OwotLQlzdHJ1Y3Qgc29ja2FkZHJfaW4gdGhlbTsKLS0JaW50IHMsaTsKLSsJc3RydWN0IGFkZHJp bmZvICpyZXMsICpyZXMwLCBoaW50czsKLSsJY2hhciAqIGZhaWxlZF9jYWxsID0gTlVMTDsKLSsJ aW50IHM7Ci0rCWludCBlOwotIAotIAlpZiAoIXNzbF9zb2NrX2luaXQoKSkgcmV0dXJuKDApOwot IAotLQltZW1zZXQoKGNoYXIgKikmdGhlbSwwLHNpemVvZih0aGVtKSk7Ci0tCXRoZW0uc2luX2Zh bWlseT1BRl9JTkVUOwotLQl0aGVtLnNpbl9wb3J0PWh0b25zKCh1bnNpZ25lZCBzaG9ydClwb3J0 KTsKLS0JYWRkcj0odW5zaWduZWQgbG9uZykKLS0JCSgodW5zaWduZWQgbG9uZylpcFswXTw8MjRM KXwKLS0JCSgodW5zaWduZWQgbG9uZylpcFsxXTw8MTZMKXwKLS0JCSgodW5zaWduZWQgbG9uZylp cFsyXTw8IDhMKXwKLS0JCSgodW5zaWduZWQgbG9uZylpcFszXSk7Ci0tCXRoZW0uc2luX2FkZHIu c19hZGRyPWh0b25sKGFkZHIpOwotLQotLQlpZiAodHlwZSA9PSBTT0NLX1NUUkVBTSkKLS0JCXM9 c29ja2V0KEFGX0lORVQsU09DS19TVFJFQU0sU09DS0VUX1BST1RPQ09MKTsKLS0JZWxzZSAvKiAo IHR5cGUgPT0gU09DS19ER1JBTSkgKi8KLS0JCXM9c29ja2V0KEFGX0lORVQsU09DS19ER1JBTSxJ UFBST1RPX1VEUCk7Ci0tCQkJCi0tCWlmIChzID09IElOVkFMSURfU09DS0VUKSB7IHBlcnJvcigi c29ja2V0Iik7IHJldHVybigwKTsgfQotKwltZW1zZXQoJmhpbnRzLCAnXDAnLCBzaXplb2YoaGlu dHMpKTsKLSsJaGludHMuYWlfc29ja3R5cGUgPSB0eXBlOwotKwloaW50cy5haV9mbGFncyA9IEFJ X0FERFJDT05GSUc7Ci0rCi0rCWUgPSBnZXRhZGRyaW5mbyhob3N0LCBwb3J0LCAmaGludHMsICZy ZXMpOwotKwlpZiAoZSkKLSsJewotKwkJZnByaW50ZihzdGRlcnIsICJnZXRhZGRyaW5mbzogJXNc biIsIGdhaV9zdHJlcnJvcihlKSk7Ci0rCQlpZiAoZSA9PSBFQUlfU1lTVEVNKQotKwkJCXBlcnJv cigiZ2V0YWRkcmluZm8iKTsKLSsJCXJldHVybiAoMCk7Ci0rCQl9Ci0gCi0rCXJlczAgPSByZXM7 Ci0rCXdoaWxlIChyZXMpCi0rCQl7Ci0rCQlzID0gc29ja2V0KHJlcy0+YWlfZmFtaWx5LCByZXMt PmFpX3NvY2t0eXBlLCByZXMtPmFpX3Byb3RvY29sKTsKLSsJCWlmIChzID09IElOVkFMSURfU09D S0VUKQotKwkJCXsKLSsJCQlmYWlsZWRfY2FsbCA9ICJzb2NrZXQiOwotKwkJCWdvdG8gbmV4dHJl czsKLSsJCQl9Ci0gI2lmIGRlZmluZWQoU09fS0VFUEFMSVZFKSAmJiAhZGVmaW5lZChPUEVOU1NM X1NZU19NUEUpCi0gCWlmICh0eXBlID09IFNPQ0tfU1RSRUFNKQotIAkJewotLQkJaT0wOwotLQkJ aT1zZXRzb2Nrb3B0KHMsU09MX1NPQ0tFVCxTT19LRUVQQUxJVkUsKGNoYXIgKikmaSxzaXplb2Yo aSkpOwotLQkJaWYgKGkgPCAwKSB7IHBlcnJvcigia2VlcGFsaXZlIik7IHJldHVybigwKTsgfQot KwkJCWludCBpPTA7Ci0rCQkJaT1zZXRzb2Nrb3B0KHMsU09MX1NPQ0tFVCxTT19LRUVQQUxJVkUs Ci0rCQkJCShjaGFyICopJmksc2l6ZW9mKGkpKTsKLSsJCQlpZiAoaSA8IDApIHsKLSsJCQkJZmFp bGVkX2NhbGwgPSAia2VlcGFsaXZlIjsKLSsJCQkJZ290byBuZXh0cmVzOwotKwkJCQl9Ci0gCQl9 Ci0gI2VuZGlmCi0tCi0tCWlmIChjb25uZWN0KHMsKHN0cnVjdCBzb2NrYWRkciAqKSZ0aGVtLHNp emVvZih0aGVtKSkgPT0gLTEpCi0tCQl7IGNsb3Nlc29ja2V0KHMpOyBwZXJyb3IoImNvbm5lY3Qi KTsgcmV0dXJuKDApOyB9Ci0rCQlpZiAoY29ubmVjdChzLChzdHJ1Y3Qgc29ja2FkZHIgKilyZXMt PmFpX2FkZHIsCi0rCQkJcmVzLT5haV9hZGRybGVuKSA9PSAwKQotKwkJCXsKLSsJCQlmcmVlYWRk cmluZm8ocmVzMCk7Ci0gCSpzb2NrPXM7Ci0gCXJldHVybigxKTsKLSAJfQotIAotLWludCBkb19z ZXJ2ZXIoaW50IHBvcnQsIGludCB0eXBlLCBpbnQgKnJldCwgaW50ICgqY2IpKGNoYXIgKmhvc3Ru YW1lLCBpbnQgcywgdW5zaWduZWQgY2hhciAqY29udGV4dCksIHVuc2lnbmVkIGNoYXIgKmNvbnRl eHQpCi0rCQlmYWlsZWRfY2FsbCA9ICJzb2NrZXQiOwotK25leHRyZXM6Ci0rCQlpZiAocyAhPSBJ TlZBTElEX1NPQ0tFVCkKLSsJCQljbG9zZShzKTsKLSsJCXJlcyA9IHJlcy0+YWlfbmV4dDsKLSsJ CX0KLSsJZnJlZWFkZHJpbmZvKHJlczApOwotKwotKwlwZXJyb3IoZmFpbGVkX2NhbGwpOwotKwly ZXR1cm4oMCk7Ci0rCX0KLSsKLStpbnQgZG9fc2VydmVyKGNoYXIgKnBvcnQsIGludCB0eXBlLCBp bnQgKnJldCwgaW50ICgqY2IpKGNoYXIgKmhvc3RuYW1lLCBpbnQgcywgdW5zaWduZWQgY2hhciAq Y29udGV4dCksIHVuc2lnbmVkIGNoYXIgKmNvbnRleHQpCi0gCXsKLSAJaW50IHNvY2s7Ci0gCWNo YXIgKm5hbWUgPSBOVUxMOwotQEAgLTMyMywzMyArMzMzLDM4IEBAIGludCBkb19zZXJ2ZXIoaW50 IHBvcnQsIGludCB0eXBlLCBpbnQgKnIKLSAJCX0KLSAJfQotIAotLXN0YXRpYyBpbnQgaW5pdF9z ZXJ2ZXJfbG9uZyhpbnQgKnNvY2ssIGludCBwb3J0LCBjaGFyICppcCwgaW50IHR5cGUpCi0rc3Rh dGljIGludCBpbml0X3NlcnZlcihpbnQgKnNvY2ssIGNoYXIgKnBvcnQsIGludCB0eXBlKQotIAl7 Ci0tCWludCByZXQ9MDsKLS0Jc3RydWN0IHNvY2thZGRyX2luIHNlcnZlcjsKLS0JaW50IHM9IC0x LGk7Ci0rCXN0cnVjdCBhZGRyaW5mbyAqcmVzLCAqcmVzMCwgaGludHM7Ci0rCWNoYXIgKiBmYWls ZWRfY2FsbCA9IE5VTEw7Ci0rCWNoYXIgcG9ydF9uYW1lWzhdOwotKwlpbnQgczsKLSsJaW50IGU7 Ci0gCi0gCWlmICghc3NsX3NvY2tfaW5pdCgpKSByZXR1cm4oMCk7Ci0gCi0tCW1lbXNldCgoY2hh ciAqKSZzZXJ2ZXIsMCxzaXplb2Yoc2VydmVyKSk7Ci0tCXNlcnZlci5zaW5fZmFtaWx5PUFGX0lO RVQ7Ci0tCXNlcnZlci5zaW5fcG9ydD1odG9ucygodW5zaWduZWQgc2hvcnQpcG9ydCk7Ci0tCWlm IChpcCA9PSBOVUxMKQotLQkJc2VydmVyLnNpbl9hZGRyLnNfYWRkcj1JTkFERFJfQU5ZOwotLQll bHNlCi0tLyogQWRkZWQgZm9yIFQzRSwgYWRkcmVzcy1vZiBmYWlscyBvbiBiaXQgZmllbGQgKGJl Y2ttYW5AYWNsLmxhbmwuZ292KSAqLwotLSNpZm5kZWYgQklUX0ZJRUxEX0xJTUlUUwotLQkJbWVt Y3B5KCZzZXJ2ZXIuc2luX2FkZHIuc19hZGRyLGlwLDQpOwotLSNlbHNlCi0tCQltZW1jcHkoJnNl cnZlci5zaW5fYWRkcixpcCw0KTsKLS0jZW5kaWYKLSsJbWVtc2V0KCZoaW50cywgJ1wwJywgc2l6 ZW9mKGhpbnRzKSk7Ci0rCWhpbnRzLmFpX3NvY2t0eXBlID0gdHlwZTsKLSsJaGludHMuYWlfZmxh Z3MgPSBBSV9QQVNTSVZFIHwgQUlfQUREUkNPTkZJRzsKLSAJCi0tCQlpZiAodHlwZSA9PSBTT0NL X1NUUkVBTSkKLS0JCQlzPXNvY2tldChBRl9JTkVULFNPQ0tfU1RSRUFNLFNPQ0tFVF9QUk9UT0NP TCk7Ci0tCQllbHNlIC8qIHR5cGUgPT0gU09DS19ER1JBTSAqLwotLQkJCXM9c29ja2V0KEFGX0lO RVQsIFNPQ0tfREdSQU0sSVBQUk9UT19VRFApOwotKwllID0gZ2V0YWRkcmluZm8oTlVMTCwgcG9y dCwgJmhpbnRzLCAmcmVzKTsKLSsJaWYgKGUpCi0rCQl7Ci0rCQlmcHJpbnRmKHN0ZGVyciwgImdl dGFkZHJpbmZvOiAlc1xuIiwgZ2FpX3N0cmVycm9yKGUpKTsKLSsJCWlmIChlID09IEVBSV9TWVNU RU0pCi0rCQkJcGVycm9yKCJnZXRhZGRyaW5mbyIpOwotKwkJcmV0dXJuICgwKTsKLSsJCX0KLSAK LS0JaWYgKHMgPT0gSU5WQUxJRF9TT0NLRVQpIGdvdG8gZXJyOwotKwlyZXMwID0gcmVzOwotKwl3 aGlsZSAocmVzKQotKwkJewotKwkJcyA9IHNvY2tldChyZXMtPmFpX2ZhbWlseSwgcmVzLT5haV9z b2NrdHlwZSwgcmVzLT5haV9wcm90b2NvbCk7Ci0rCQlpZiAocyA9PSBJTlZBTElEX1NPQ0tFVCkK LSsJCQl7Ci0rCQkJZmFpbGVkX2NhbGwgPSAic29ja2V0IjsKLSsJCQlnb3RvIG5leHRyZXM7Ci0r CQkJfQotICNpZiBkZWZpbmVkIFNPTF9TT0NLRVQgJiYgZGVmaW5lZCBTT19SRVVTRUFERFIKLSAJ CXsKLSAJCWludCBqID0gMTsKLUBAIC0zNTcsMzYgKzM3MiwzOSBAQCBzdGF0aWMgaW50IGluaXRf c2VydmVyX2xvbmcoaW50ICpzb2NrLCBpCi0gCQkJICAgKHZvaWQgKikgJmosIHNpemVvZiBqKTsK LSAJCX0KLSAjZW5kaWYKLS0JaWYgKGJpbmQocywoc3RydWN0IHNvY2thZGRyICopJnNlcnZlcixz aXplb2Yoc2VydmVyKSkgPT0gLTEpCi0rCi0rCQlpZiAoYmluZChzLChzdHJ1Y3Qgc29ja2FkZHIg KilyZXMtPmFpX2FkZHIsIHJlcy0+YWlfYWRkcmxlbikgPT0gLTEpCi0gCQl7Ci0tI2lmbmRlZiBP UEVOU1NMX1NZU19XSU5ET1dTCi0tCQlwZXJyb3IoImJpbmQiKTsKLS0jZW5kaWYKLS0JCWdvdG8g ZXJyOwotKwkJCWZhaWxlZF9jYWxsID0gImJpbmQiOwotKwkJCWdvdG8gbmV4dHJlczsKLSAJCX0K LS0JLyogTWFrZSBpdCAxMjggZm9yIGxpbnV4ICovCi0tCWlmICh0eXBlPT1TT0NLX1NUUkVBTSAm JiBsaXN0ZW4ocywxMjgpID09IC0xKSBnb3RvIGVycjsKLS0JaT0wOwotLQkqc29jaz1zOwotLQly ZXQ9MTsKLS1lcnI6Ci0tCWlmICgocmV0ID09IDApICYmIChzICE9IC0xKSkKLSsJCWlmICh0eXBl PT1TT0NLX1NUUkVBTSAmJiBsaXN0ZW4ocywxMjgpID09IC0xKQotIAkJewotLQkJU0hVVERPV04o cyk7Ci0rCQkJZmFpbGVkX2NhbGwgPSAibGlzdGVuIjsKLSsJCQlnb3RvIG5leHRyZXM7Ci0gCQl9 Ci0tCXJldHVybihyZXQpOwotKwotKwkJKnNvY2s9czsKLSsJCXJldHVybigxKTsKLSsKLStuZXh0 cmVzOgotKwkJaWYgKHMgIT0gSU5WQUxJRF9TT0NLRVQpCi0rCQkJY2xvc2Uocyk7Ci0rCQlyZXMg PSByZXMtPmFpX25leHQ7Ci0gCX0KLSsJZnJlZWFkZHJpbmZvKHJlczApOwotIAotLXN0YXRpYyBp bnQgaW5pdF9zZXJ2ZXIoaW50ICpzb2NrLCBpbnQgcG9ydCwgaW50IHR5cGUpCi0tCXsKLS0JcmV0 dXJuKGluaXRfc2VydmVyX2xvbmcoc29jaywgcG9ydCwgTlVMTCwgdHlwZSkpOwotKwlpZiAocyA9 PSBJTlZBTElEX1NPQ0tFVCkgeyBwZXJyb3IoInNvY2tldCIpOyByZXR1cm4oMCk7IH0KLSsKLSsJ cGVycm9yKGZhaWxlZF9jYWxsKTsKLSsJcmV0dXJuKDApOwotIAl9Ci0gCi0gc3RhdGljIGludCBk b19hY2NlcHQoaW50IGFjY19zb2NrLCBpbnQgKnNvY2ssIGNoYXIgKipob3N0KQotIAl7Ci0tCWlu dCByZXQsaTsKLS0Jc3RydWN0IGhvc3RlbnQgKmgxLCpoMjsKLS0Jc3RhdGljIHN0cnVjdCBzb2Nr YWRkcl9pbiBmcm9tOwotKwlzdGF0aWMgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgZnJvbTsKLSsJ Y2hhciBidWZmZXJbTklfTUFYSE9TVF07Ci0rCWludCByZXQ7Ci0gCWludCBsZW47Ci0gLyoJc3Ry dWN0IGxpbmdlciBsaW5nOyAqLwotIAotQEAgLTQzMiwxMzYgKzQ1MCw1OCBAQCByZWRvaXQ6Ci0g Ki8KLSAKLSAJaWYgKGhvc3QgPT0gTlVMTCkgZ290byBlbmQ7Ci0tI2lmbmRlZiBCSVRfRklFTERf TElNSVRTCi0tCS8qIEkgc2hvdWxkIHVzZSBXU0FBc3luY0dldEhvc3RCeU5hbWUoKSB1bmRlciB3 aW5kb3dzICovCi0tCWgxPWdldGhvc3RieWFkZHIoKGNoYXIgKikmZnJvbS5zaW5fYWRkci5zX2Fk ZHIsCi0tCQlzaXplb2YoZnJvbS5zaW5fYWRkci5zX2FkZHIpLEFGX0lORVQpOwotLSNlbHNlCi0t CWgxPWdldGhvc3RieWFkZHIoKGNoYXIgKikmZnJvbS5zaW5fYWRkciwKLS0JCXNpemVvZihzdHJ1 Y3QgaW5fYWRkciksQUZfSU5FVCk7Ci0tI2VuZGlmCi0tCWlmIChoMSA9PSBOVUxMKQotKwotKwlp ZiAoZ2V0bmFtZWluZm8oKHN0cnVjdCBzb2NrYWRkciAqKSZmcm9tLCBzaXplb2YoZnJvbSksCi0r CQlidWZmZXIsIHNpemVvZihidWZmZXIpLAotKwkJTlVMTCwgMCwgMCkpCi0gCQl7Ci0tCQlCSU9f cHJpbnRmKGJpb19lcnIsImJhZCBnZXRob3N0YnlhZGRyXG4iKTsKLSsJCUJJT19wcmludGYoYmlv X2VyciwiZ2V0bmFtZWluZm8gZmFpbGVkXG4iKTsKLSAJCSpob3N0PU5VTEw7Ci0gCQkvKiByZXR1 cm4oMCk7ICovCi0gCQl9Ci0gCWVsc2UKLSAJCXsKLS0JCWlmICgoKmhvc3Q9KGNoYXIgKilPUEVO U1NMX21hbGxvYyhzdHJsZW4oaDEtPmhfbmFtZSkrMSkpID09IE5VTEwpCi0rCQlpZiAoKCpob3N0 PShjaGFyICopT1BFTlNTTF9tYWxsb2Moc3RybGVuKGJ1ZmZlcikrMSkpID09IE5VTEwpCi0gCQkJ ewotIAkJCXBlcnJvcigiT1BFTlNTTF9tYWxsb2MiKTsKLSAJCQlyZXR1cm4oMCk7Ci0gCQkJfQot LQkJQlVGX3N0cmxjcHkoKmhvc3QsaDEtPmhfbmFtZSxzdHJsZW4oaDEtPmhfbmFtZSkrMSk7Ci0t Ci0tCQloMj1HZXRIb3N0QnlOYW1lKCpob3N0KTsKLS0JCWlmIChoMiA9PSBOVUxMKQotLQkJCXsK LS0JCQlCSU9fcHJpbnRmKGJpb19lcnIsImdldGhvc3RieW5hbWUgZmFpbHVyZVxuIik7Ci0tCQkJ cmV0dXJuKDApOwotLQkJCX0KLS0JCWk9MDsKLS0JCWlmIChoMi0+aF9hZGRydHlwZSAhPSBBRl9J TkVUKQotLQkJCXsKLS0JCQlCSU9fcHJpbnRmKGJpb19lcnIsImdldGhvc3RieW5hbWUgYWRkciBp cyBub3QgQUZfSU5FVFxuIik7Ci0tCQkJcmV0dXJuKDApOwotLQkJCX0KLSsJCXN0cmNweSgqaG9z dCwgYnVmZmVyKTsKLSAJCX0KLSBlbmQ6Ci0gCSpzb2NrPXJldDsKLSAJcmV0dXJuKDEpOwotIAl9 Ci0gCi0taW50IGV4dHJhY3RfaG9zdF9wb3J0KGNoYXIgKnN0ciwgY2hhciAqKmhvc3RfcHRyLCB1 bnNpZ25lZCBjaGFyICppcCwKLS0JICAgICBzaG9ydCAqcG9ydF9wdHIpCi0raW50IGV4dHJhY3Rf aG9zdF9wb3J0KGNoYXIgKnN0ciwgY2hhciAqKmhvc3RfcHRyLCAKLSsJICAgICBjaGFyICoqcG9y dF9wdHIpCi0gCXsKLS0JY2hhciAqaCwqcDsKLSsJY2hhciAqaCwqcCwqeDsKLSAKLS0JaD1zdHI7 Ci0tCXA9c3RyY2hyKHN0ciwnOicpOwotKwl4PWg9c3RyOwotKwlpZiAoKmggPT0gJ1snKQotKwkJ ewotKwkJaCsrOwotKwkJcD1zdHJjaHIoaCwnXScpOwotIAlpZiAocCA9PSBOVUxMKQotIAkJewot LQkJQklPX3ByaW50ZihiaW9fZXJyLCJubyBwb3J0IGRlZmluZWRcbiIpOwotKwkJCUJJT19wcmlu dGYoYmlvX2Vyciwibm8gZW5kaW5nIGJyYWNrZXQgZm9yIElQdjYgYWRkcmVzc1xuIik7Ci0gCQly ZXR1cm4oMCk7Ci0gCQl9Ci0gCSoocCsrKT0nXDAnOwotLQotLQlpZiAoKGlwICE9IE5VTEwpICYm ICFob3N0X2lwKHN0cixpcCkpCi0tCQlnb3RvIGVycjsKLS0JaWYgKGhvc3RfcHRyICE9IE5VTEwp ICpob3N0X3B0cj1oOwotLQotLQlpZiAoIWV4dHJhY3RfcG9ydChwLHBvcnRfcHRyKSkKLS0JCWdv dG8gZXJyOwotLQlyZXR1cm4oMSk7Ci0tZXJyOgotLQlyZXR1cm4oMCk7Ci0rCQl4ID0gcDsKLSAJ fQotLQotLXN0YXRpYyBpbnQgaG9zdF9pcChjaGFyICpzdHIsIHVuc2lnbmVkIGNoYXIgaXBbNF0p Ci0tCXsKLS0JdW5zaWduZWQgaW50IGluWzRdOyAKLS0JaW50IGk7Ci0tCi0tCWlmIChzc2NhbmYo c3RyLCIldS4ldS4ldS4ldSIsJihpblswXSksJihpblsxXSksJihpblsyXSksJihpblszXSkpID09 IDQpCi0tCQl7Ci0tCQlmb3IgKGk9MDsgaTw0OyBpKyspCi0tCQkJaWYgKGluW2ldID4gMjU1KQot LQkJCQl7Ci0tCQkJCUJJT19wcmludGYoYmlvX2VyciwiaW52YWxpZCBJUCBhZGRyZXNzXG4iKTsK LS0JCQkJZ290byBlcnI7Ci0tCQkJCX0KLS0JCWlwWzBdPWluWzBdOwotLQkJaXBbMV09aW5bMV07 Ci0tCQlpcFsyXT1pblsyXTsKLS0JCWlwWzNdPWluWzNdOwotLQkJfQotLQllbHNlCi0tCQl7IC8q IGRvIGEgZ2V0aG9zdGJ5bmFtZSAqLwotLQkJc3RydWN0IGhvc3RlbnQgKmhlOwotLQotLQkJaWYg KCFzc2xfc29ja19pbml0KCkpIHJldHVybigwKTsKLS0KLS0JCWhlPUdldEhvc3RCeU5hbWUoc3Ry KTsKLS0JCWlmIChoZSA9PSBOVUxMKQotLQkJCXsKLS0JCQlCSU9fcHJpbnRmKGJpb19lcnIsImdl dGhvc3RieW5hbWUgZmFpbHVyZVxuIik7Ci0tCQkJZ290byBlcnI7Ci0tCQkJfQotLQkJLyogY2Fz dCB0byBzaG9ydCBiZWNhdXNlIG9mIHdpbjE2IHdpbnNvY2sgZGVmaW5pdGlvbiAqLwotLQkJaWYg KChzaG9ydCloZS0+aF9hZGRydHlwZSAhPSBBRl9JTkVUKQotKwlwPXN0cmNocih4LCc6Jyk7Ci0r CWlmIChwID09IE5VTEwpCi0gCQkJewotLQkJCUJJT19wcmludGYoYmlvX2VyciwiZ2V0aG9zdGJ5 bmFtZSBhZGRyIGlzIG5vdCBBRl9JTkVUXG4iKTsKLS0JCQlyZXR1cm4oMCk7Ci0tCQkJfQotLQkJ aXBbMF09aGUtPmhfYWRkcl9saXN0WzBdWzBdOwotLQkJaXBbMV09aGUtPmhfYWRkcl9saXN0WzBd WzFdOwotLQkJaXBbMl09aGUtPmhfYWRkcl9saXN0WzBdWzJdOwotLQkJaXBbM109aGUtPmhfYWRk cl9saXN0WzBdWzNdOwotLQkJfQotLQlyZXR1cm4oMSk7Ci0tZXJyOgotKwkJQklPX3ByaW50Zihi aW9fZXJyLCJubyBwb3J0IGRlZmluZWRcbiIpOwotIAlyZXR1cm4oMCk7Ci0gCX0KLSsJKihwKysp PSdcMCc7Ci0gCi0taW50IGV4dHJhY3RfcG9ydChjaGFyICpzdHIsIHNob3J0ICpwb3J0X3B0cikK LS0JewotLQlpbnQgaTsKLS0Jc3RydWN0IHNlcnZlbnQgKnM7Ci0rCWlmIChob3N0X3B0ciAhPSBO VUxMKSAqaG9zdF9wdHI9aDsKLSsJaWYgKHBvcnRfcHRyICE9IE5VTEwpICpwb3J0X3B0cj1wOwot IAotLQlpPWF0b2koc3RyKTsKLS0JaWYgKGkgIT0gMCkKLS0JCSpwb3J0X3B0cj0odW5zaWduZWQg c2hvcnQpaTsKLS0JZWxzZQotLQkJewotLQkJcz1nZXRzZXJ2YnluYW1lKHN0ciwidGNwIik7Ci0t CQlpZiAocyA9PSBOVUxMKQotLQkJCXsKLS0JCQlCSU9fcHJpbnRmKGJpb19lcnIsImdldHNlcnZi eW5hbWUgZmFpbHVyZSBmb3IgJXNcbiIsc3RyKTsKLS0JCQlyZXR1cm4oMCk7Ci0tCQkJfQotLQkJ KnBvcnRfcHRyPW50b2hzKCh1bnNpZ25lZCBzaG9ydClzLT5zX3BvcnQpOwotLQkJfQotIAlyZXR1 cm4oMSk7Ci0gCX0KLSAKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4wYS1tYW5maXgucGF0Y2gg Yi9vcGVuc3NsLTEuMC4wYS1tYW5maXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uMGQzZGMwNAotLS0gL2Rldi9udWxsCisrKyBiL29wZW5zc2wtMS4wLjBhLW1hbmZp eC5wYXRjaApAQCAtMCwwICsxLDIxIEBACitkaWZmIC11cCBvcGVuc3NsLTEuMC4wYS9kb2MvYXBw cy9vcGVuc3NsLnBvZC5tYW5maXggb3BlbnNzbC0xLjAuMGEvZG9jL2FwcHMvb3BlbnNzbC5wb2QK Ky0tLSBvcGVuc3NsLTEuMC4wYS9kb2MvYXBwcy9vcGVuc3NsLnBvZC5tYW5maXgJMjAxMC0wMS0y MSAxOTo0NjoyOC4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4wYS9kb2MvYXBwcy9v cGVuc3NsLnBvZAkyMDEwLTA2LTMwIDE0OjI0OjUwLjAwMDAwMDAwMCArMDIwMAorQEAgLTI4Nyw4 ICsyODcsNiBAQCBTSEEgRGlnZXN0CisgCisgU0hBLTEgRGlnZXN0CisgCistPWJhY2sKKy0KKyA9 aXRlbSBCPHNoYTIyND4KKyAKKyBTSEEtMjI0IERpZ2VzdAorQEAgLTMwNSw2ICszMDMsOCBAQCBT SEEtMzg0IERpZ2VzdAorIAorIFNIQS01MTIgRGlnZXN0CisgCisrPWJhY2sKKysKKyA9aGVhZDIg RU5DT0RJTkcgQU5EIENJUEhFUiBDT01NQU5EUworIAorID1vdmVyIDEwCgpkaWZmIC0tZ2l0IGEv b3BlbnNzbC0xLjAuMGEtdmVyc2lvbi5wYXRjaCBiL29wZW5zc2wtMS4wLjBhLXZlcnNpb24ucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1YTAyMzMuLjAwMDAwMDAKLS0tIGEv b3BlbnNzbC0xLjAuMGEtdmVyc2lvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAg QEAKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjBhL2NyeXB0by9vcGVuc3Nsdi5oLnZlcnNpb24gb3Bl bnNzbC0xLjAuMGEvY3J5cHRvL29wZW5zc2x2LmgKLS0tLSBvcGVuc3NsLTEuMC4wYS9jcnlwdG8v b3BlbnNzbHYuaC52ZXJzaW9uCTIwMTAtMDYtMDQgMTM6Mjg6NTIuMDAwMDAwMDAwICswMjAwCi0r Kysgb3BlbnNzbC0xLjAuMGEvY3J5cHRvL29wZW5zc2x2LmgJMjAxMC0wNi0wNCAxMzoyOTo0Mi4w MDAwMDAwMDAgKzAyMDAKLUBAIC0yNSw3ICsyNSw4IEBACi0gICogKFByaW9yIHRvIDAuOS41YSBi ZXRhMSwgYSBkaWZmZXJlbnQgc2NoZW1lIHdhcyB1c2VkOiBNTU5ORkZSQkIgZm9yCi0gICogIG1h am9yIG1pbm9yIGZpeCBmaW5hbCBwYXRjaC9iZXRhKQotICAqLwotLSNkZWZpbmUgT1BFTlNTTF9W RVJTSU9OX05VTUJFUgkweDEwMDAwMDFmTAotKy8qIHdlIGhhdmUgdG8ga2VlcCB0aGUgdmVyc2lv biBudW1iZXIgdG8gbm90IGJyZWFrIHRoZSBhYmkgKi8KLSsjZGVmaW5lIE9QRU5TU0xfVkVSU0lP Tl9OVU1CRVIJMHgxMDAwMDAwM0wKLSAjaWZkZWYgT1BFTlNTTF9GSVBTCi0gI2RlZmluZSBPUEVO U1NMX1ZFUlNJT05fVEVYVAkiT3BlblNTTCAxLjAuMGEtZmlwcyAxIEp1biAyMDEwIgotICNlbHNl CgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjAuMGItYWVzbmkucGF0Y2ggYi9vcGVuc3NsLTEuMC4w Yi1hZXNuaS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZGRhNmJm Ci0tLSAvZGV2L251bGwKKysrIGIvb3BlbnNzbC0xLjAuMGItYWVzbmkucGF0Y2gKQEAgLTAsMCAr MSwyMzg4IEBACitkaWZmIC11cCBvcGVuc3NsLTEuMC4wYi9Db25maWd1cmUuYWVzbmkgb3BlbnNz bC0xLjAuMGIvQ29uZmlndXJlCistLS0gb3BlbnNzbC0xLjAuMGIvQ29uZmlndXJlLmFlc25pCTIw MTAtMTEtMTYgMTc6MzM6MjIuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMGIvQ29u ZmlndXJlCTIwMTAtMTEtMTYgMTc6MzU6MTUuMDAwMDAwMDAwICswMTAwCitAQCAtMTIzLDExICsx MjMsMTEgQEAgbXkgJHRsaWI9Ii1sbnNsIC1sc29ja2V0IjsKKyBteSAkYml0czE9IlRISVJUWV9U V09fQklUICI7CisgbXkgJGJpdHMyPSJTSVhUWV9GT1VSX0JJVCAiOworIAorLW15ICR4ODZfYXNt PSJ4ODZjcHVpZC5vOmJuLTU4Ni5vIGNvLTU4Ni5vIHg4Ni1tb250Lm86ZGVzLTU4Ni5vIGNyeXB0 NTg2Lm86YWVzLTU4Ni5vOmJmLTU4Ni5vOm1kNS01ODYubzpzaGExLTU4Ni5vIHNoYTI1Ni01ODYu byBzaGE1MTItNTg2Lm86Y2FzdC01ODYubzpyYzQtNTg2Lm86cm1kLTU4Ni5vOnJjNS01ODYubzp3 cF9ibG9jay5vIHdwLW1teC5vOmNtbGwteDg2Lm8iOworK215ICR4ODZfYXNtPSJ4ODZjcHVpZC5v OmJuLTU4Ni5vIGNvLTU4Ni5vIHg4Ni1tb250Lm86ZGVzLTU4Ni5vIGNyeXB0NTg2Lm86YWVzLTU4 Ni5vIGFlc25pLXg4Ni5vOmJmLTU4Ni5vOm1kNS01ODYubzpzaGExLTU4Ni5vIHNoYTI1Ni01ODYu byBzaGE1MTItNTg2Lm86Y2FzdC01ODYubzpyYzQtNTg2Lm86cm1kLTU4Ni5vOnJjNS01ODYubzp3 cF9ibG9jay5vIHdwLW1teC5vOmNtbGwteDg2Lm8iOworIAorIG15ICR4ODZfZWxmX2FzbT0iJHg4 Nl9hc206ZWxmIjsKKyAKKy1teSAkeDg2XzY0X2FzbT0ieDg2XzY0Y3B1aWQubzp4ODZfNjQtZ2Nj Lm8geDg2XzY0LW1vbnQubzo6YWVzLXg4Nl82NC5vOjptZDUteDg2XzY0Lm86c2hhMS14ODZfNjQu byBzaGEyNTYteDg2XzY0Lm8gc2hhNTEyLXg4Nl82NC5vOjpyYzQteDg2XzY0Lm86Ojp3cC14ODZf NjQubzpjbWxsLXg4Nl82NC5vIGNtbGxfbWlzYy5vIjsKKytteSAkeDg2XzY0X2FzbT0ieDg2XzY0 Y3B1aWQubzp4ODZfNjQtZ2NjLm8geDg2XzY0LW1vbnQubzo6YWVzLXg4Nl82NC5vIGFlc25pLXg4 Nl82NC5vOjptZDUteDg2XzY0Lm86c2hhMS14ODZfNjQubyBzaGEyNTYteDg2XzY0Lm8gc2hhNTEy LXg4Nl82NC5vOjpyYzQteDg2XzY0Lm86Ojp3cC14ODZfNjQubzpjbWxsLXg4Nl82NC5vIGNtbGxf bWlzYy5vIjsKKyBteSAkaWE2NF9hc209ImlhNjRjcHVpZC5vOmJuLWlhNjQubzo6YWVzX2NvcmUu byBhZXNfY2JjLm8gYWVzLWlhNjQubzo6bWQ1LWlhNjQubzpzaGExLWlhNjQubyBzaGEyNTYtaWE2 NC5vIHNoYTUxMi1pYTY0Lm86OnJjNC1pYTY0Lm8gcmM0X3NrZXkubzo6Ojo6dm9pZCI7CisgbXkg JHNwYXJjdjlfYXNtPSJzcGFyY3Y5Y2FwLm8gc3BhcmNjcHVpZC5vOmJuLXNwYXJjdjkubyBzcGFy Y3Y5LW1vbnQubyBzcGFyY3Y5YS1tb250Lm86ZGVzX2VuYy1zcGFyYy5vIGZjcnlwdF9iLm86YWVz X2NvcmUubyBhZXNfY2JjLm8gYWVzLXNwYXJjdjkubzo6OnNoYTEtc3BhcmN2OS5vIHNoYTI1Ni1z cGFyY3Y5Lm8gc2hhNTEyLXNwYXJjdjkubzo6Ojo6Ojp2b2lkIjsKKyBteSAkc3BhcmN2OF9hc209 IjpzcGFyY3Y4Lm86ZGVzX2VuYy1zcGFyYy5vIGZjcnlwdF9iLm86Ojo6Ojo6Ojo6OnZvaWQiOwor QEAgLTQ5MSw3ICs0OTEsNyBAQCBteSAldGFibGU9KAorICMKKyAjIFdpbjY0IHRhcmdldHMsIFdJ TjY0SSBkZW5vdGVzIElBLTY0IGFuZCBXSU42NEEgLSBBTUQ2NAorICJWQy1XSU42NEkiLCJjbDot VzMgLUdzMCAtR3kgLW5vbG9nbyAtRE9QRU5TU0xfU1lTTkFNRV9XSU4zMiAtRFdJTjMyX0xFQU5f QU5EX01FQU4gLURMX0VORElBTiAtRFVOSUNPREUgLURfVU5JQ09ERSAtRF9DUlRfU0VDVVJFX05P X0RFUFJFQ0FURTo6OldJTjY0STo6U0lYVFlfRk9VUl9CSVQgUkM0X0NIVU5LX0xMIERFU19JTlQg RVhQT1JUX1ZBUl9BU19GTjppYTY0Y3B1aWQubzppYTY0Lm86OmFlc19jb3JlLm8gYWVzX2NiYy5v IGFlcy1pYTY0Lm86Om1kNS1pYTY0Lm86c2hhMS1pYTY0Lm8gc2hhMjU2LWlhNjQubyBzaGE1MTIt aWE2NC5vOjo6Ojo6Omlhczp3aW4zMiIsCistIlZDLVdJTjY0QSIsImNsOi1XMyAtR3MwIC1HeSAt bm9sb2dvIC1ET1BFTlNTTF9TWVNOQU1FX1dJTjMyIC1EV0lOMzJfTEVBTl9BTkRfTUVBTiAtRExf RU5ESUFOIC1EVU5JQ09ERSAtRF9VTklDT0RFIC1EX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFOjo6 V0lONjRBOjpTSVhUWV9GT1VSX0JJVCBSQzRfQ0hVTktfTEwgREVTX0lOVCBFWFBPUlRfVkFSX0FT X0ZOOng4Nl82NGNwdWlkLm86Ym5fYXNtLm8geDg2XzY0LW1vbnQubzo6YWVzLXg4Nl82NC5vOjpt ZDUteDg2XzY0Lm86c2hhMS14ODZfNjQubyBzaGEyNTYteDg2XzY0Lm8gc2hhNTEyLXg4Nl82NC5v OjpyYzQteDg2XzY0Lm86Ojp3cC14ODZfNjQubzpjbWxsLXg4Nl82NC5vIGNtbGxfbWlzYy5vOmF1 dG86d2luMzIiLAorKyJWQy1XSU42NEEiLCJjbDotVzMgLUdzMCAtR3kgLW5vbG9nbyAtRE9QRU5T U0xfU1lTTkFNRV9XSU4zMiAtRFdJTjMyX0xFQU5fQU5EX01FQU4gLURMX0VORElBTiAtRFVOSUNP REUgLURfVU5JQ09ERSAtRF9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTo6OldJTjY0QTo6U0lYVFlf Rk9VUl9CSVQgUkM0X0NIVU5LX0xMIERFU19JTlQgRVhQT1JUX1ZBUl9BU19GTjp4ODZfNjRjcHVp ZC5vOmJuX2FzbS5vIHg4Nl82NC1tb250Lm86OmFlcy14ODZfNjQubyBhZXNuaS14ODZfNjQubzo6 bWQ1LXg4Nl82NC5vOnNoYTEteDg2XzY0Lm8gc2hhMjU2LXg4Nl82NC5vIHNoYTUxMi14ODZfNjQu bzo6cmM0LXg4Nl82NC5vOjo6d3AteDg2XzY0Lm86Y21sbC14ODZfNjQubyBjbWxsX21pc2Mubzph dXRvOndpbjMyIiwKKyAiZGVidWctVkMtV0lONjRJIiwiY2w6LVczIC1HczAgLUd5IC1aaSAtbm9s b2dvIC1ET1BFTlNTTF9TWVNOQU1FX1dJTjMyIC1EV0lOMzJfTEVBTl9BTkRfTUVBTiAtRExfRU5E SUFOIC1EVU5JQ09ERSAtRF9VTklDT0RFIC1EX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFOjo6V0lO NjRJOjpTSVhUWV9GT1VSX0JJVCBSQzRfQ0hVTktfTEwgREVTX0lOVCBFWFBPUlRfVkFSX0FTX0ZO OmlhNjRjcHVpZC5vOmlhNjQubzo6YWVzX2NvcmUubyBhZXNfY2JjLm8gYWVzLWlhNjQubzo6bWQ1 LWlhNjQubzpzaGExLWlhNjQubyBzaGEyNTYtaWE2NC5vIHNoYTUxMi1pYTY0Lm86Ojo6Ojo6aWFz OndpbjMyIiwKKyAiZGVidWctVkMtV0lONjRBIiwiY2w6LVczIC1HczAgLUd5IC1aaSAtbm9sb2dv IC1ET1BFTlNTTF9TWVNOQU1FX1dJTjMyIC1EV0lOMzJfTEVBTl9BTkRfTUVBTiAtRExfRU5ESUFO IC1EVU5JQ09ERSAtRF9VTklDT0RFIC1EX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFOjo6V0lONjRB OjpTSVhUWV9GT1VSX0JJVCBSQzRfQ0hVTktfTEwgREVTX0lOVCBFWFBPUlRfVkFSX0FTX0ZOOng4 Nl82NGNwdWlkLm86Ym5fYXNtLm8geDg2XzY0LW1vbnQubzo6YWVzLXg4Nl82NC5vOjptZDUteDg2 XzY0Lm86c2hhMS14ODZfNjQubyBzaGEyNTYteDg2XzY0Lm8gc2hhNTEyLXg4Nl82NC5vOjpyYzQt eDg2XzY0Lm86Ojp3cC14ODZfNjQubzpjbWxsLXg4Nl82NC5vIGNtbGxfbWlzYy5vOmF1dG86d2lu MzIiLAorICMgeDg2IFdpbjMyIHRhcmdldCBkZWZhdWx0cyB0byBBTlNJIEFQSSwgaWYgeW91IHdh bnQgVU5JQ09ERSwgY29tcGxlbWVudAorQEAgLTE0MTksNiArMTQxOSw3IEBAIGlmICgkcm1kMTYw X29iaiA9fiAvXC5vJC8pCisgaWYgKCRhZXNfb2JqID1+IC9cLm8kLykKKyAJeworIAkkY2ZsYWdz Lj0iIC1EQUVTX0FTTSI7CisrCSRhZXNfb2JqID1+IHMvXHMqYWVzbmlcLXg4Nlwuby8vIGlmICgk bm9fc3NlMik7CisgCX0KKyBlbHNlCXsKKyAJJGFlc19vYmo9JGFlc19lbmM7CitkaWZmIC11cCBv cGVuc3NsLTEuMC4wYi9jcnlwdG8vYWVzL2FzbS9hZXNuaS14ODYucGwuYWVzbmkgb3BlbnNzbC0x LjAuMGIvY3J5cHRvL2Flcy9hc20vYWVzbmkteDg2LnBsCistLS0gb3BlbnNzbC0xLjAuMGIvY3J5 cHRvL2Flcy9hc20vYWVzbmkteDg2LnBsLmFlc25pCTIwMTAtMTEtMTYgMTc6MzM6MjMuMDAwMDAw MDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMGIvY3J5cHRvL2Flcy9hc20vYWVzbmkteDg2LnBs CTIwMTAtMTEtMTYgMTc6MzM6MjMuMDAwMDAwMDAwICswMTAwCitAQCAtMCwwICsxLDc2NSBAQAor KyMhL3Vzci9iaW4vZW52IHBlcmwKKysKKysjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisrIyBXcml0dGVuIGJ5IEFu ZHkgUG9seWFrb3YgPGFwcHJvQGZ5LmNoYWxtZXJzLnNlPiBmb3IgdGhlIE9wZW5TU0wKKysjIHBy b2plY3QuIFRoZSBtb2R1bGUgaXMsIGhvd2V2ZXIsIGR1YWwgbGljZW5zZWQgdW5kZXIgT3BlblNT TCBhbmQKKysjIENSWVBUT0dBTVMgbGljZW5zZXMgZGVwZW5kaW5nIG9uIHdoZXJlIHlvdSBvYnRh aW4gaXQuIEZvciBmdXJ0aGVyCisrIyBkZXRhaWxzIHNlZSBodHRwOi8vd3d3Lm9wZW5zc2wub3Jn L35hcHByby9jcnlwdG9nYW1zLy4KKysjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisrIworKyMgVGhpcyBtb2R1bGUg aW1wbGVtZW50cyBzdXBwb3J0IGZvciBJbnRlbCBBRVMtTkkgZXh0ZW5zaW9uLiBJbgorKyMgT3Bl blNTTCBjb250ZXh0IGl0J3MgdXNlZCB3aXRoIEludGVsIGVuZ2luZSwgYnV0IGNhbiBhbHNvIGJl IHVzZWQgYXMKKysjIGRyb3AtaW4gcmVwbGFjZW1lbnQgZm9yIGNyeXB0by9hZXMvYXNtL2Flcy01 ODYucGwgW3NlZSBiZWxvdyBmb3IKKysjIGRldGFpbHNdLgorKworKyRQUkVGSVg9ImFlc25pIjsJ IyBpZiAkUFJFRklYIGlzIHNldCB0byAiQUVTIiwgdGhlIHNjcmlwdAorKwkJCSMgZ2VuZXJhdGVz IGRyb3AtaW4gcmVwbGFjZW1lbnQgZm9yCisrCQkJIyBjcnlwdG8vYWVzL2FzbS9hZXMtNTg2LnBs Oi0pCisrCisrJDAgPX4gbS8oLipbXC9cXF0pW15cL1xcXSskLzsgJGRpcj0kMTsKKytwdXNoKEBJ TkMsIiR7ZGlyfSIsIiR7ZGlyfS4uLy4uL3Blcmxhc20iKTsKKytyZXF1aXJlICJ4ODZhc20ucGwi OworKworKyZhc21faW5pdCgkQVJHVlswXSwkMCk7CisrCisrJG1vdmVrZXkgPSBldmFsKCRSUkVG SVggZXEgImFzZW5pIiA/ICIqbW92YXBzIiA6ICIqbW92dXBzIik7CisrCisrJGxlbj0iZWF4IjsK Kyskcm91bmRzPSJlY3giOworKyRrZXk9ImVkeCI7CisrJGlucD0iZXNpIjsKKyskb3V0PSJlZGki OworKyRyb3VuZHNfPSJlYngiOwkjIGJhY2t1cCBjb3B5IGZvciAkcm91bmRzCisrJGtleV89ImVi cCI7CSMgYmFja3VwIGNvcHkgZm9yICRrZXkKKysKKyskaW5vdXQwPSJ4bW0wIjsKKyskaW5vdXQx PSJ4bW0xIjsKKyskaW5vdXQyPSJ4bW0yIjsKKyskcm5ka2V5MD0ieG1tMyI7CisrJHJuZGtleTE9 InhtbTQiOworKyRpdmVjPSJ4bW01IjsKKyskaW4wPSJ4bW02IjsKKyskaW4xPSJ4bW03IjsJJGlu b3V0Mz0ieG1tNyI7CisrCisrIyBJbmxpbmUgdmVyc2lvbiBvZiBpbnRlcm5hbCBhZXNuaV9bZW58 ZGVdY3J5cHQxCisrc3ViIGFlc25pX2lubGluZV9nZW5lcmF0ZTEKKyt7IG15ICRwPXNoaWZ0Owor KworKyAgICAmJG1vdmVrZXkJCSgkcm5ka2V5MCwmUVdQKDAsJGtleSkpOworKyAgICAmJG1vdmVr ZXkJCSgkcm5ka2V5MSwmUVdQKDE2LCRrZXkpKTsKKysgICAgJmxlYQkJKCRrZXksJkRXUCgzMiwk a2V5KSk7CisrICAgICZweG9yCQkoJGlub3V0MCwkcm5ka2V5MCk7CisrICAgICZzZXRfbGFiZWwo IiR7cH0xX2xvb3AiKTsKKysJZXZhbCImYWVzJHtwfQkoJGlub3V0MCwkcm5ka2V5MSkiOworKwkm ZGVjCQkoJHJvdW5kcyk7CisrCSYkbW92ZWtleQkoJHJuZGtleTEsJlFXUCgwLCRrZXkpKTsKKysJ JmxlYQkJKCRrZXksJkRXUCgxNiwka2V5KSk7CisrICAgICZqbnoJCSgmbGFiZWwoIiR7cH0xX2xv b3AiKSk7CisrICAgIGV2YWwiJmFlcyR7cH1sYXN0CSgkaW5vdXQwLCRybmRrZXkxKSI7CisrfQor KworK3N1YiBhZXNuaV9nZW5lcmF0ZTEJIyBmdWxseSB1bnJvbGxlZCBsb29wCisreyBteSAkcD1z aGlmdDsKKysKKysgICAgJmZ1bmN0aW9uX2JlZ2luX0IoIl9hZXNuaV8ke3B9cnlwdDEiKTsKKysJ JiRtb3Zla2V5CSgkcm5ka2V5MCwmUVdQKDAsJGtleSkpOworKwkmJG1vdmVrZXkJKCRybmRrZXkx LCZRV1AoMHgxMCwka2V5KSk7CisrCSZjbXAJCSgkcm91bmRzLDExKTsKKysJJnB4b3IJCSgkaW5v dXQwLCRybmRrZXkwKTsKKysJJiRtb3Zla2V5CSgkcm5ka2V5MCwmUVdQKDB4MjAsJGtleSkpOwor KwkmbGVhCQkoJGtleSwmRFdQKDB4MzAsJGtleSkpOworKwkmamIJCSgmbGFiZWwoIiR7cH0xMjgi KSk7CisrCSZsZWEJCSgka2V5LCZEV1AoMHgyMCwka2V5KSk7CisrCSZqZQkJKCZsYWJlbCgiJHtw fTE5MiIpKTsKKysJJmxlYQkJKCRrZXksJkRXUCgweDIwLCRrZXkpKTsKKysJZXZhbCImYWVzJHtw fQkoJGlub3V0MCwkcm5ka2V5MSkiOworKwkmJG1vdmVrZXkJKCRybmRrZXkxLCZRV1AoLTB4NDAs JGtleSkpOworKwlldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkwKSI7CisrCSYkbW92ZWtl eQkoJHJuZGtleTAsJlFXUCgtMHgzMCwka2V5KSk7CisrICAgICZzZXRfbGFiZWwoIiR7cH0xOTIi KTsKKysJZXZhbCImYWVzJHtwfQkoJGlub3V0MCwkcm5ka2V5MSkiOworKwkmJG1vdmVrZXkJKCRy bmRrZXkxLCZRV1AoLTB4MjAsJGtleSkpOworKwlldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRr ZXkwKSI7CisrCSYkbW92ZWtleQkoJHJuZGtleTAsJlFXUCgtMHgxMCwka2V5KSk7CisrICAgICZz ZXRfbGFiZWwoIiR7cH0xMjgiKTsKKysJZXZhbCImYWVzJHtwfQkoJGlub3V0MCwkcm5ka2V5MSki OworKwkmJG1vdmVrZXkJKCRybmRrZXkxLCZRV1AoMCwka2V5KSk7CisrCWV2YWwiJmFlcyR7cH0J KCRpbm91dDAsJHJuZGtleTApIjsKKysJJiRtb3Zla2V5CSgkcm5ka2V5MCwmUVdQKDB4MTAsJGtl eSkpOworKwlldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkxKSI7CisrCSYkbW92ZWtleQko JHJuZGtleTEsJlFXUCgweDIwLCRrZXkpKTsKKysJZXZhbCImYWVzJHtwfQkoJGlub3V0MCwkcm5k a2V5MCkiOworKwkmJG1vdmVrZXkJKCRybmRrZXkwLCZRV1AoMHgzMCwka2V5KSk7CisrCWV2YWwi JmFlcyR7cH0JKCRpbm91dDAsJHJuZGtleTEpIjsKKysJJiRtb3Zla2V5CSgkcm5ka2V5MSwmUVdQ KDB4NDAsJGtleSkpOworKwlldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkwKSI7CisrCSYk bW92ZWtleQkoJHJuZGtleTAsJlFXUCgweDUwLCRrZXkpKTsKKysJZXZhbCImYWVzJHtwfQkoJGlu b3V0MCwkcm5ka2V5MSkiOworKwkmJG1vdmVrZXkJKCRybmRrZXkxLCZRV1AoMHg2MCwka2V5KSk7 CisrCWV2YWwiJmFlcyR7cH0JKCRpbm91dDAsJHJuZGtleTApIjsKKysJJiRtb3Zla2V5CSgkcm5k a2V5MCwmUVdQKDB4NzAsJGtleSkpOworKwlldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkx KSI7CisrICAgIGV2YWwiJmFlcyR7cH1sYXN0CSgkaW5vdXQwLCRybmRrZXkwKSI7CisrICAgICZy ZXQoKTsKKysgICAgJmZ1bmN0aW9uX2VuZF9CKCJfYWVzbmlfJHtwfXJ5cHQxIik7CisrfQorKwor KyMgdm9pZCAkUFJFRklYX2VuY3J5cHQgKGNvbnN0IHZvaWQgKmlucCx2b2lkICpvdXQsY29uc3Qg QUVTX0tFWSAqa2V5KTsKKysjICZhZXNuaV9nZW5lcmF0ZTEoImRlYyIpOworKyZmdW5jdGlvbl9i ZWdpbl9CKCIke1BSRUZJWH1fZW5jcnlwdCIpOworKwkmbW92CSgiZWF4Iiwmd3BhcmFtKDApKTsK KysJJm1vdgkoJGtleSwmd3BhcmFtKDIpKTsKKysJJm1vdnVwcwkoJGlub3V0MCwmUVdQKDAsImVh eCIpKTsKKysJJm1vdgkoJHJvdW5kcywmRFdQKDI0MCwka2V5KSk7CisrCSZtb3YJKCJlYXgiLCZ3 cGFyYW0oMSkpOworKwkmYWVzbmlfaW5saW5lX2dlbmVyYXRlMSgiZW5jIik7CSMgJmNhbGwJKCJf YWVzbmlfZW5jcnlwdDEiKTsKKysJJm1vdnVwcwkoJlFXUCgwLCJlYXgiKSwkaW5vdXQwKTsKKysJ JnJldAkoKTsKKysmZnVuY3Rpb25fZW5kX0IoIiR7UFJFRklYfV9lbmNyeXB0Iik7CisrCisrIyB2 b2lkICRQUkVGSVhfZGVjcnlwdCAoY29uc3Qgdm9pZCAqaW5wLHZvaWQgKm91dCxjb25zdCBBRVNf S0VZICprZXkpOworKyMgJmFlc25pX2dlbmVyYXRlMSgiZGVjIik7CisrJmZ1bmN0aW9uX2JlZ2lu X0IoIiR7UFJFRklYfV9kZWNyeXB0Iik7CisrCSZtb3YJKCJlYXgiLCZ3cGFyYW0oMCkpOworKwkm bW92CSgka2V5LCZ3cGFyYW0oMikpOworKwkmbW92dXBzCSgkaW5vdXQwLCZRV1AoMCwiZWF4Iikp OworKwkmbW92CSgkcm91bmRzLCZEV1AoMjQwLCRrZXkpKTsKKysJJm1vdgkoImVheCIsJndwYXJh bSgxKSk7CisrCSZhZXNuaV9pbmxpbmVfZ2VuZXJhdGUxKCJkZWMiKTsJIyAmY2FsbAkoIl9hZXNu aV9kZWNyeXB0MSIpOworKwkmbW92dXBzCSgmUVdQKDAsImVheCIpLCRpbm91dDApOworKwkmcmV0 CSgpOworKyZmdW5jdGlvbl9lbmRfQigiJHtQUkVGSVh9X2RlY3J5cHQiKTsKKysMCisrIyBfYWVz bmlfW2VufGRlXWNyeXB0WzM0XSBhcmUgcHJpdmF0ZSBpbnRlcmZhY2VzLCBOIGRlbm90ZXMgaW50 ZXJsZWF2ZQorKyMgZmFjdG9yLiBXaHkgM3ggc3Vicm91dGluZSBpcyB1c2VkIGluIGxvb3BzPyBF dmVuIHRob3VnaCBhZXNbZW5jfGRlY10KKysjIGxhdGVuY3kgaXMgNiwgaXQgdHVybmVkIG91dCB0 aGF0IGl0IGNhbiBiZSBzY2hlZHVsZWQgb25seSBldmVyeQorKyMgKnNlY29uZCogY3ljbGUuIFRo dXMgM3ggaW50ZXJsZWF2ZSBpcyB0aGUgb25lIHByb3ZpZGluZyBvcHRpbWFsCisrIyB1dGlsaXph dGlvbiwgaS5lLiB3aGVuIHN1YnJvdXRpbmUncyB0aHJvdWdocHV0IGlzIHZpcnR1YWxseSBzYW1l IGFzCisrIyBvZiBub24taW50ZXJsZWF2ZWQgc3Vicm91dGluZSBbZm9yIG51bWJlciBvZiBpbnB1 dCBibG9ja3MgdXAgdG8gM10uCisrIyBUaGlzIGlzIHdoeSBpdCBtYWtlcyBubyBzZW5zZSB0byBp bXBsZW1lbnQgMnggc3Vicm91dGluZS4gQXMgc29vbgorKyMgYXMvaWYgSW50ZWwgaW1wcm92ZXMg dGhyb3VnaHB1dCBieSBtYWtpbmcgaXQgcG9zc2libGUgdG8gc2NoZWR1bGUKKysjIHRoZSBpbnN0 cnVjdGlvbnMgaW4gcXVlc3Rpb24gKmV2ZXJ5KiBjeWNsZXMgSSB3b3VsZCBoYXZlIHRvCisrIyBp bXBsZW1lbnQgNnggaW50ZXJsZWF2ZSBhbmQgdXNlIGl0IGluIGxvb3AuLi4KKytzdWIgYWVzbmlf Z2VuZXJhdGUzCisreyBteSAkcD1zaGlmdDsKKysKKysgICAgJmZ1bmN0aW9uX2JlZ2luX0IoIl9h ZXNuaV8ke3B9cnlwdDMiKTsKKysJJiRtb3Zla2V5CSgkcm5ka2V5MCwmUVdQKDAsJGtleSkpOwor Kwkmc2hyCQkoJHJvdW5kcywxKTsKKysJJiRtb3Zla2V5CSgkcm5ka2V5MSwmUVdQKDE2LCRrZXkp KTsKKysJJmxlYQkJKCRrZXksJkRXUCgzMiwka2V5KSk7CisrCSZweG9yCQkoJGlub3V0MCwkcm5k a2V5MCk7CisrCSZweG9yCQkoJGlub3V0MSwkcm5ka2V5MCk7CisrCSZweG9yCQkoJGlub3V0Miwk cm5ka2V5MCk7CisrCSZqbXAJCSgmbGFiZWwoIiR7cH0zX2xvb3AiKSk7CisrICAgICZzZXRfbGFi ZWwoIiR7cH0zX2xvb3AiLDE2KTsKKysJZXZhbCImYWVzJHtwfQkoJGlub3V0MCwkcm5ka2V5MSki OworKwkmJG1vdmVrZXkJKCRybmRrZXkwLCZRV1AoMCwka2V5KSk7CisrCWV2YWwiJmFlcyR7cH0J KCRpbm91dDEsJHJuZGtleTEpIjsKKysJJmRlYwkJKCRyb3VuZHMpOworKwlldmFsIiZhZXMke3B9 CSgkaW5vdXQyLCRybmRrZXkxKSI7CisrCSYkbW92ZWtleQkoJHJuZGtleTEsJlFXUCgxNiwka2V5 KSk7CisrCWV2YWwiJmFlcyR7cH0JKCRpbm91dDAsJHJuZGtleTApIjsKKysJJmxlYQkJKCRrZXks JkRXUCgzMiwka2V5KSk7CisrCWV2YWwiJmFlcyR7cH0JKCRpbm91dDEsJHJuZGtleTApIjsKKysJ ZXZhbCImYWVzJHtwfQkoJGlub3V0Miwkcm5ka2V5MCkiOworKwkmam56CQkoJmxhYmVsKCIke3B9 M19sb29wIikpOworKyAgICBldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkxKSI7CisrICAg ICYkbW92ZWtleQkJKCRybmRrZXkwLCZRV1AoMCwka2V5KSk7CisrICAgIGV2YWwiJmFlcyR7cH0J KCRpbm91dDEsJHJuZGtleTEpIjsKKysgICAgZXZhbCImYWVzJHtwfQkoJGlub3V0Miwkcm5ka2V5 MSkiOworKyAgICBldmFsIiZhZXMke3B9bGFzdAkoJGlub3V0MCwkcm5ka2V5MCkiOworKyAgICBl dmFsIiZhZXMke3B9bGFzdAkoJGlub3V0MSwkcm5ka2V5MCkiOworKyAgICBldmFsIiZhZXMke3B9 bGFzdAkoJGlub3V0Miwkcm5ka2V5MCkiOworKyAgICAmcmV0KCk7CisrICAgICZmdW5jdGlvbl9l bmRfQigiX2Flc25pXyR7cH1yeXB0MyIpOworK30KKysKKysjIDR4IGludGVybGVhdmUgaXMgaW1w bGVtZW50ZWQgdG8gaW1wcm92ZSBzbWFsbCBibG9jayBwZXJmb3JtYW5jZSwKKysjIG1vc3Qgbm90 YWJseSBbYW5kIG5hdHVyYWxseV0gNCBibG9jayBieSB+MzAlLiBPbmUgY2FuIGFyZ3VlIHRoYXQg b25lCisrIyBzaG91bGQgaGF2ZSBpbXBsZW1lbnRlZCA1eCBhcyB3ZWxsLCBidXQgaW1wcm92ZW1l bnQgIHdvdWxkIGJlIDwyMCUsCisrIyBzbyBpdCdzIG5vdCB3b3J0aCBpdC4uLgorK3N1YiBhZXNu aV9nZW5lcmF0ZTQKKyt7IG15ICRwPXNoaWZ0OworKworKyAgICAmZnVuY3Rpb25fYmVnaW5fQigi X2Flc25pXyR7cH1yeXB0NCIpOworKwkmJG1vdmVrZXkJKCRybmRrZXkwLCZRV1AoMCwka2V5KSk7 CisrCSYkbW92ZWtleQkoJHJuZGtleTEsJlFXUCgxNiwka2V5KSk7CisrCSZzaHIJCSgkcm91bmRz LDEpOworKwkmbGVhCQkoJGtleSwmRFdQKDMyLCRrZXkpKTsKKysJJnB4b3IJCSgkaW5vdXQwLCRy bmRrZXkwKTsKKysJJnB4b3IJCSgkaW5vdXQxLCRybmRrZXkwKTsKKysJJnB4b3IJCSgkaW5vdXQy LCRybmRrZXkwKTsKKysJJnB4b3IJCSgkaW5vdXQzLCRybmRrZXkwKTsKKysJJmptcAkJKCZsYWJl bCgiJHtwfTNfbG9vcCIpKTsKKysgICAgJnNldF9sYWJlbCgiJHtwfTNfbG9vcCIsMTYpOworKwll dmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkxKSI7CisrCSYkbW92ZWtleQkoJHJuZGtleTAs JlFXUCgwLCRrZXkpKTsKKysJZXZhbCImYWVzJHtwfQkoJGlub3V0MSwkcm5ka2V5MSkiOworKwkm ZGVjCQkoJHJvdW5kcyk7CisrCWV2YWwiJmFlcyR7cH0JKCRpbm91dDIsJHJuZGtleTEpIjsKKysJ ZXZhbCImYWVzJHtwfQkoJGlub3V0Mywkcm5ka2V5MSkiOworKwkmJG1vdmVrZXkJKCRybmRrZXkx LCZRV1AoMTYsJGtleSkpOworKwlldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkwKSI7Cisr CSZsZWEJCSgka2V5LCZEV1AoMzIsJGtleSkpOworKwlldmFsIiZhZXMke3B9CSgkaW5vdXQxLCRy bmRrZXkwKSI7CisrCWV2YWwiJmFlcyR7cH0JKCRpbm91dDIsJHJuZGtleTApIjsKKysJZXZhbCIm YWVzJHtwfQkoJGlub3V0Mywkcm5ka2V5MCkiOworKwkmam56CQkoJmxhYmVsKCIke3B9M19sb29w IikpOworKyAgICBldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkxKSI7CisrICAgICYkbW92 ZWtleQkJKCRybmRrZXkwLCZRV1AoMCwka2V5KSk7CisrICAgIGV2YWwiJmFlcyR7cH0JKCRpbm91 dDEsJHJuZGtleTEpIjsKKysgICAgZXZhbCImYWVzJHtwfQkoJGlub3V0Miwkcm5ka2V5MSkiOwor KyAgICBldmFsIiZhZXMke3B9CSgkaW5vdXQzLCRybmRrZXkxKSI7CisrICAgIGV2YWwiJmFlcyR7 cH1sYXN0CSgkaW5vdXQwLCRybmRrZXkwKSI7CisrICAgIGV2YWwiJmFlcyR7cH1sYXN0CSgkaW5v dXQxLCRybmRrZXkwKSI7CisrICAgIGV2YWwiJmFlcyR7cH1sYXN0CSgkaW5vdXQyLCRybmRrZXkw KSI7CisrICAgIGV2YWwiJmFlcyR7cH1sYXN0CSgkaW5vdXQzLCRybmRrZXkwKSI7CisrICAgICZy ZXQoKTsKKysgICAgJmZ1bmN0aW9uX2VuZF9CKCJfYWVzbmlfJHtwfXJ5cHQ0Iik7CisrfQorKyZh ZXNuaV9nZW5lcmF0ZTMoImVuYyIpIGlmICgkUFJFRklYIGVxICJhZXNuaSIpOworKyZhZXNuaV9n ZW5lcmF0ZTMoImRlYyIpOworKyZhZXNuaV9nZW5lcmF0ZTQoImVuYyIpIGlmICgkUFJFRklYIGVx ICJhZXNuaSIpOworKyZhZXNuaV9nZW5lcmF0ZTQoImRlYyIpOworKworK2lmICgkUFJFRklYIGVx ICJhZXNuaSIpIHsKKysjIHZvaWQgYWVzbmlfZWNiX2VuY3J5cHQgKGNvbnN0IHZvaWQgKmluLCB2 b2lkICpvdXQsCisrIyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoLCBjb25z dCBBRVNfS0VZICprZXksCisrIyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZW5jKTsKKysm ZnVuY3Rpb25fYmVnaW4oImFlc25pX2VjYl9lbmNyeXB0Iik7CisrCSZtb3YJKCRpbnAsJndwYXJh bSgwKSk7CisrCSZtb3YJKCRvdXQsJndwYXJhbSgxKSk7CisrCSZtb3YJKCRsZW4sJndwYXJhbSgy KSk7CisrCSZtb3YJKCRrZXksJndwYXJhbSgzKSk7CisrCSZtb3YJKCRyb3VuZHMsJndwYXJhbSg0 KSk7CisrCSZjbXAJKCRsZW4sMTYpOworKwkmamIJKCZsYWJlbCgiZWNiX3JldCIpKTsKKysJJmFu ZAkoJGxlbiwtMTYpOworKwkmdGVzdAkoJHJvdW5kcywkcm91bmRzKQorKwkmbW92CSgkcm91bmRz LCZEV1AoMjQwLCRrZXkpKTsKKysJJm1vdgkoJGtleV8sJGtleSk7CQkjIGJhY2t1cCAka2V5Cisr CSZtb3YJKCRyb3VuZHNfLCRyb3VuZHMpOwkjIGJhY2t1cCAkcm91bmRzCisrCSZqegkoJmxhYmVs KCJlY2JfZGVjcnlwdCIpKTsKKysKKysJJnN1YgkoJGxlbiwweDQwKTsKKysJJmpiZQkoJmxhYmVs KCJlY2JfZW5jX3RhaWwiKSk7CisrCSZqbXAJKCZsYWJlbCgiZWNiX2VuY19sb29wMyIpKTsKKysK Kysmc2V0X2xhYmVsKCJlY2JfZW5jX2xvb3AzIiwxNik7CisrCSZtb3Z1cHMJKCRpbm91dDAsJlFX UCgwLCRpbnApKTsKKysJJm1vdnVwcwkoJGlub3V0MSwmUVdQKDB4MTAsJGlucCkpOworKwkmbW92 dXBzCSgkaW5vdXQyLCZRV1AoMHgyMCwkaW5wKSk7CisrCSZjYWxsCSgiX2Flc25pX2VuY3J5cHQz Iik7CisrCSZzdWIJKCRsZW4sMHgzMCk7CisrCSZsZWEJKCRpbnAsJkRXUCgweDMwLCRpbnApKTsK KysJJmxlYQkoJG91dCwmRFdQKDB4MzAsJG91dCkpOworKwkmbW92dXBzCSgmUVdQKC0weDMwLCRv dXQpLCRpbm91dDApOworKwkmbW92CSgka2V5LCRrZXlfKTsJCSMgcmVzdG9yZSAka2V5CisrCSZt b3Z1cHMJKCZRV1AoLTB4MjAsJG91dCksJGlub3V0MSk7CisrCSZtb3YJKCRyb3VuZHMsJHJvdW5k c18pOwkjIHJlc3RvcmUgJHJvdW5kcworKwkmbW92dXBzCSgmUVdQKC0weDEwLCRvdXQpLCRpbm91 dDIpOworKwkmamEJKCZsYWJlbCgiZWNiX2VuY19sb29wMyIpKTsKKysKKysmc2V0X2xhYmVsKCJl Y2JfZW5jX3RhaWwiKTsKKysJJmFkZAkoJGxlbiwweDQwKTsKKysJJmp6CSgmbGFiZWwoImVjYl9y ZXQiKSk7CisrCisrCSZjbXAJKCRsZW4sMHgxMCk7CisrCSZtb3Z1cHMJKCRpbm91dDAsJlFXUCgw LCRpbnApKTsKKysJJmplCSgmbGFiZWwoImVjYl9lbmNfb25lIikpOworKwkmY21wCSgkbGVuLDB4 MjApOworKwkmbW92dXBzCSgkaW5vdXQxLCZRV1AoMHgxMCwkaW5wKSk7CisrCSZqZQkoJmxhYmVs KCJlY2JfZW5jX3R3byIpKTsKKysJJmNtcAkoJGxlbiwweDMwKTsKKysJJm1vdnVwcwkoJGlub3V0 MiwmUVdQKDB4MjAsJGlucCkpOworKwkmamUJKCZsYWJlbCgiZWNiX2VuY190aHJlZSIpKTsKKysJ Jm1vdnVwcwkoJGlub3V0MywmUVdQKDB4MzAsJGlucCkpOworKwkmY2FsbAkoIl9hZXNuaV9lbmNy eXB0NCIpOworKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7CisrCSZtb3Z1cHMJKCZR V1AoMHgxMCwkb3V0KSwkaW5vdXQxKTsKKysJJm1vdnVwcwkoJlFXUCgweDIwLCRvdXQpLCRpbm91 dDIpOworKwkmbW92dXBzCSgmUVdQKDB4MzAsJG91dCksJGlub3V0Myk7CisrCWptcAkoJmxhYmVs KCJlY2JfcmV0IikpOworKworKyZzZXRfbGFiZWwoImVjYl9lbmNfb25lIiwxNik7CisrCSZhZXNu aV9pbmxpbmVfZ2VuZXJhdGUxKCJlbmMiKTsJIyAmY2FsbAkoIl9hZXNuaV9lbmNyeXB0MSIpOwor KwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7CisrCSZqbXAJKCZsYWJlbCgiZWNiX3Jl dCIpKTsKKysKKysmc2V0X2xhYmVsKCJlY2JfZW5jX3R3byIsMTYpOworKwkmY2FsbAkoIl9hZXNu aV9lbmNyeXB0MyIpOworKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7CisrCSZtb3Z1 cHMJKCZRV1AoMHgxMCwkb3V0KSwkaW5vdXQxKTsKKysJJmptcAkoJmxhYmVsKCJlY2JfcmV0Iikp OworKworKyZzZXRfbGFiZWwoImVjYl9lbmNfdGhyZWUiLDE2KTsKKysJJmNhbGwJKCJfYWVzbmlf ZW5jcnlwdDMiKTsKKysJJm1vdnVwcwkoJlFXUCgwLCRvdXQpLCRpbm91dDApOworKwkmbW92dXBz CSgmUVdQKDB4MTAsJG91dCksJGlub3V0MSk7CisrCSZtb3Z1cHMJKCZRV1AoMHgyMCwkb3V0KSwk aW5vdXQyKTsKKysJJmptcAkoJmxhYmVsKCJlY2JfcmV0IikpOworKworKyZzZXRfbGFiZWwoImVj Yl9kZWNyeXB0IiwxNik7CisrCSZzdWIJKCRsZW4sMHg0MCk7CisrCSZqYmUJKCZsYWJlbCgiZWNi X2RlY190YWlsIikpOworKwkmam1wCSgmbGFiZWwoImVjYl9kZWNfbG9vcDMiKSk7CisrCisrJnNl dF9sYWJlbCgiZWNiX2RlY19sb29wMyIsMTYpOworKwkmbW92dXBzCSgkaW5vdXQwLCZRV1AoMCwk aW5wKSk7CisrCSZtb3Z1cHMJKCRpbm91dDEsJlFXUCgweDEwLCRpbnApKTsKKysJJm1vdnVwcwko JGlub3V0MiwmUVdQKDB4MjAsJGlucCkpOworKwkmY2FsbAkoIl9hZXNuaV9kZWNyeXB0MyIpOwor Kwkmc3ViCSgkbGVuLDB4MzApOworKwkmbGVhCSgkaW5wLCZEV1AoMHgzMCwkaW5wKSk7CisrCSZs ZWEJKCRvdXQsJkRXUCgweDMwLCRvdXQpKTsKKysJJm1vdnVwcwkoJlFXUCgtMHgzMCwkb3V0KSwk aW5vdXQwKTsKKysJJm1vdgkoJGtleSwka2V5Xyk7CQkjIHJlc3RvcmUgJGtleQorKwkmbW92dXBz CSgmUVdQKC0weDIwLCRvdXQpLCRpbm91dDEpOworKwkmbW92CSgkcm91bmRzLCRyb3VuZHNfKTsJ IyByZXN0b3JlICRyb3VuZHMKKysJJm1vdnVwcwkoJlFXUCgtMHgxMCwkb3V0KSwkaW5vdXQyKTsK KysJJmphCSgmbGFiZWwoImVjYl9kZWNfbG9vcDMiKSk7CisrCisrJnNldF9sYWJlbCgiZWNiX2Rl Y190YWlsIik7CisrCSZhZGQJKCRsZW4sMHg0MCk7CisrCSZqegkoJmxhYmVsKCJlY2JfcmV0Iikp OworKworKwkmY21wCSgkbGVuLDB4MTApOworKwkmbW92dXBzCSgkaW5vdXQwLCZRV1AoMCwkaW5w KSk7CisrCSZqZQkoJmxhYmVsKCJlY2JfZGVjX29uZSIpKTsKKysJJmNtcAkoJGxlbiwweDIwKTsK KysJJm1vdnVwcwkoJGlub3V0MSwmUVdQKDB4MTAsJGlucCkpOworKwkmamUJKCZsYWJlbCgiZWNi X2RlY190d28iKSk7CisrCSZjbXAJKCRsZW4sMHgzMCk7CisrCSZtb3Z1cHMJKCRpbm91dDIsJlFX UCgweDIwLCRpbnApKTsKKysJJmplCSgmbGFiZWwoImVjYl9kZWNfdGhyZWUiKSk7CisrCSZtb3Z1 cHMJKCRpbm91dDMsJlFXUCgweDMwLCRpbnApKTsKKysJJmNhbGwJKCJfYWVzbmlfZGVjcnlwdDQi KTsKKysJJm1vdnVwcwkoJlFXUCgwLCRvdXQpLCRpbm91dDApOworKwkmbW92dXBzCSgmUVdQKDB4 MTAsJG91dCksJGlub3V0MSk7CisrCSZtb3Z1cHMJKCZRV1AoMHgyMCwkb3V0KSwkaW5vdXQyKTsK KysJJm1vdnVwcwkoJlFXUCgweDMwLCRvdXQpLCRpbm91dDMpOworKwkmam1wCSgmbGFiZWwoImVj Yl9yZXQiKSk7CisrCisrJnNldF9sYWJlbCgiZWNiX2RlY19vbmUiLDE2KTsKKysJJmFlc25pX2lu bGluZV9nZW5lcmF0ZTEoImRlYyIpOwkjICZjYWxsCSgiX2Flc25pX2RlY3J5cHQzIik7CisrCSZt b3Z1cHMJKCZRV1AoMCwkb3V0KSwkaW5vdXQwKTsKKysJJmptcAkoJmxhYmVsKCJlY2JfcmV0Iikp OworKworKyZzZXRfbGFiZWwoImVjYl9kZWNfdHdvIiwxNik7CisrCSZjYWxsCSgiX2Flc25pX2Rl Y3J5cHQzIik7CisrCSZtb3Z1cHMJKCZRV1AoMCwkb3V0KSwkaW5vdXQwKTsKKysJJm1vdnVwcwko JlFXUCgweDEwLCRvdXQpLCRpbm91dDEpOworKwkmam1wCSgmbGFiZWwoImVjYl9yZXQiKSk7Cisr CisrJnNldF9sYWJlbCgiZWNiX2RlY190aHJlZSIsMTYpOworKwkmY2FsbAkoIl9hZXNuaV9kZWNy eXB0MyIpOworKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7CisrCSZtb3Z1cHMJKCZR V1AoMHgxMCwkb3V0KSwkaW5vdXQxKTsKKysJJm1vdnVwcwkoJlFXUCgweDIwLCRvdXQpLCRpbm91 dDIpOworKworKyZzZXRfbGFiZWwoImVjYl9yZXQiKTsKKysmZnVuY3Rpb25fZW5kKCJhZXNuaV9l Y2JfZW5jcnlwdCIpOworK30KKysKKysjIHZvaWQgJFBSRUZJWF9jYmNfZW5jcnlwdCAoY29uc3Qg dm9pZCAqaW5wLCB2b2lkICpvdXQsCisrIyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf dCBsZW5ndGgsIGNvbnN0IEFFU19LRVkgKmtleSwKKysjICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgY2hhciAqaXZwLGNvbnN0IGludCBlbmMpOworKyZmdW5jdGlvbl9iZWdpbigi JHtQUkVGSVh9X2NiY19lbmNyeXB0Iik7CisrCSZtb3YJKCRpbnAsJndwYXJhbSgwKSk7CisrCSZt b3YJKCRvdXQsJndwYXJhbSgxKSk7CisrCSZtb3YJKCRsZW4sJndwYXJhbSgyKSk7CisrCSZtb3YJ KCRrZXksJndwYXJhbSgzKSk7CisrCSZ0ZXN0CSgkbGVuLCRsZW4pOworKwkmbW92CSgka2V5Xywm d3BhcmFtKDQpKTsKKysJJmp6CSgmbGFiZWwoImNiY19yZXQiKSk7CisrCisrCSZjbXAJKCZ3cGFy YW0oNSksMCk7CisrCSZtb3Z1cHMJKCRpdmVjLCZRV1AoMCwka2V5XykpOwkjIGxvYWQgSVYKKysJ Jm1vdgkoJHJvdW5kcywmRFdQKDI0MCwka2V5KSk7CisrCSZtb3YJKCRrZXlfLCRrZXkpOwkJIyBi YWNrdXAgJGtleQorKwkmbW92CSgkcm91bmRzXywkcm91bmRzKTsJIyBiYWNrdXAgJHJvdW5kcwor KwkmamUJKCZsYWJlbCgiY2JjX2RlY3J5cHQiKSk7CisrCisrCSZtb3ZhcHMJKCRpbm91dDAsJGl2 ZWMpOworKwkmY21wCSgkbGVuLDE2KTsKKysJJmpiCSgmbGFiZWwoImNiY19lbmNfdGFpbCIpKTsK KysJJnN1YgkoJGxlbiwxNik7CisrCSZqbXAJKCZsYWJlbCgiY2JjX2VuY19sb29wIikpOworKwor KyZzZXRfbGFiZWwoImNiY19lbmNfbG9vcCIsMTYpOworKwkmbW92dXBzCSgkaXZlYywmUVdQKDAs JGlucCkpOworKwkmbGVhCSgkaW5wLCZEV1AoMTYsJGlucCkpOworKwkmcHhvcgkoJGlub3V0MCwk aXZlYyk7CisrCSZhZXNuaV9pbmxpbmVfZ2VuZXJhdGUxKCJlbmMiKTsJIyAmY2FsbAkoIl9hZXNu aV9lbmNyeXB0MyIpOworKwkmc3ViCSgkbGVuLDE2KTsKKysJJmxlYQkoJG91dCwmRFdQKDE2LCRv dXQpKTsKKysJJm1vdgkoJHJvdW5kcywkcm91bmRzXyk7CSMgcmVzdG9yZSAkcm91bmRzCisrCSZt b3YJKCRrZXksJGtleV8pOwkJIyByZXN0b3JlICRrZXkKKysJJm1vdnVwcwkoJlFXUCgtMTYsJG91 dCksJGlub3V0MCk7CisrCSZqbmMJKCZsYWJlbCgiY2JjX2VuY19sb29wIikpOworKwkmYWRkCSgk bGVuLDE2KTsKKysJJmpuegkoJmxhYmVsKCJjYmNfZW5jX3RhaWwiKSk7CisrCSZtb3ZhcHMJKCRp dmVjLCRpbm91dDApOworKwkmam1wCSgmbGFiZWwoImNiY19yZXQiKSk7CisrCisrJnNldF9sYWJl bCgiY2JjX2VuY190YWlsIik7CisrCSZtb3YJKCJlY3giLCRsZW4pOwkJIyB6YXBzICRyb3VuZHMK KysJJmRhdGFfd29yZCgweEE0RjNGNjg5KTsJCSMgcmVwIG1vdnNiCisrCSZtb3YJKCJlY3giLDE2 KTsJCSMgemVybyB0YWlsCisrCSZzdWIJKCJlY3giLCRsZW4pOworKwkmeG9yCSgiZWF4IiwiZWF4 Iik7CQkjIHphcHMgJGxlbgorKwkmZGF0YV93b3JkKDB4QUFGM0Y2ODkpOwkJIyByZXAgc3Rvc2IK KysJJmxlYQkoJG91dCwmRFdQKC0xNiwkb3V0KSk7CSMgcmV3aW5kICRvdXQgYnkgMSBibG9jawor KwkmbW92CSgkcm91bmRzLCRyb3VuZHNfKTsJIyByZXN0b3JlICRyb3VuZHMKKysJJm1vdgkoJGlu cCwkb3V0KTsJCSMgJGlucCBhbmQgJG91dCBhcmUgdGhlIHNhbWUKKysJJm1vdgkoJGtleSwka2V5 Xyk7CQkjIHJlc3RvcmUgJGtleQorKwkmam1wCSgmbGFiZWwoImNiY19lbmNfbG9vcCIpKTsKKysK Kysmc2V0X2xhYmVsKCJjYmNfZGVjcnlwdCIsMTYpOworKwkmc3ViCSgkbGVuLDB4NDApOworKwkm amJlCSgmbGFiZWwoImNiY19kZWNfdGFpbCIpKTsKKysJJmptcAkoJmxhYmVsKCJjYmNfZGVjX2xv b3AzIikpOworKworKyZzZXRfbGFiZWwoImNiY19kZWNfbG9vcDMiLDE2KTsKKysJJm1vdnVwcwko JGlub3V0MCwmUVdQKDAsJGlucCkpOworKwkmbW92dXBzCSgkaW5vdXQxLCZRV1AoMHgxMCwkaW5w KSk7CisrCSZtb3Z1cHMJKCRpbm91dDIsJlFXUCgweDIwLCRpbnApKTsKKysJJm1vdmFwcwkoJGlu MCwkaW5vdXQwKTsKKysJJm1vdmFwcwkoJGluMSwkaW5vdXQxKTsKKysJJmNhbGwJKCJfYWVzbmlf ZGVjcnlwdDMiKTsKKysJJnN1YgkoJGxlbiwweDMwKTsKKysJJmxlYQkoJGlucCwmRFdQKDB4MzAs JGlucCkpOworKwkmbGVhCSgkb3V0LCZEV1AoMHgzMCwkb3V0KSk7CisrCSZweG9yCSgkaW5vdXQw LCRpdmVjKTsKKysJJnB4b3IJKCRpbm91dDEsJGluMCk7CisrCSZtb3Z1cHMJKCRpdmVjLCZRV1Ao LTB4MTAsJGlucCkpOworKwkmcHhvcgkoJGlub3V0MiwkaW4xKTsKKysJJm1vdnVwcwkoJlFXUCgt MHgzMCwkb3V0KSwkaW5vdXQwKTsKKysJJm1vdgkoJHJvdW5kcywkcm91bmRzXykJIyByZXN0b3Jl ICRyb3VuZHMKKysJJm1vdnVwcwkoJlFXUCgtMHgyMCwkb3V0KSwkaW5vdXQxKTsKKysJJm1vdgko JGtleSwka2V5Xyk7CQkjIHJlc3RvcmUgJGtleQorKwkmbW92dXBzCSgmUVdQKC0weDEwLCRvdXQp LCRpbm91dDIpOworKwkmamEJKCZsYWJlbCgiY2JjX2RlY19sb29wMyIpKTsKKysKKysmc2V0X2xh YmVsKCJjYmNfZGVjX3RhaWwiKTsKKysJJmFkZAkoJGxlbiwweDQwKTsKKysJJmp6CSgmbGFiZWwo ImNiY19yZXQiKSk7CisrCisrCSZtb3Z1cHMJKCRpbm91dDAsJlFXUCgwLCRpbnApKTsKKysJJmNt cAkoJGxlbiwweDEwKTsKKysJJm1vdmFwcwkoJGluMCwkaW5vdXQwKTsKKysJJmpiZQkoJmxhYmVs KCJjYmNfZGVjX29uZSIpKTsKKysJJm1vdnVwcwkoJGlub3V0MSwmUVdQKDB4MTAsJGlucCkpOwor KwkmY21wCSgkbGVuLDB4MjApOworKwkmbW92YXBzCSgkaW4xLCRpbm91dDEpOworKwkmamJlCSgm bGFiZWwoImNiY19kZWNfdHdvIikpOworKwkmbW92dXBzCSgkaW5vdXQyLCZRV1AoMHgyMCwkaW5w KSk7CisrCSZjbXAJKCRsZW4sMHgzMCk7CisrCSZqYmUJKCZsYWJlbCgiY2JjX2RlY190aHJlZSIp KTsKKysJJm1vdnVwcwkoJGlub3V0MywmUVdQKDB4MzAsJGlucCkpOworKwkmY2FsbAkoIl9hZXNu aV9kZWNyeXB0NCIpOworKwkmbW92dXBzCSgkcm5ka2V5MCwmUVdQKDB4MTAsJGlucCkpOworKwkm bW92dXBzCSgkcm5ka2V5MSwmUVdQKDB4MjAsJGlucCkpOworKwkmcHhvcgkoJGlub3V0MCwkaXZl Yyk7CisrCSZweG9yCSgkaW5vdXQxLCRpbjApOworKwkmbW92dXBzCSgkaXZlYywmUVdQKDB4MzAs JGlucCkpOworKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7CisrCSZweG9yCSgkaW5v dXQyLCRybmRrZXkwKTsKKysJJnB4b3IJKCRpbm91dDMsJHJuZGtleTEpOworKwkmbW92dXBzCSgm UVdQKDB4MTAsJG91dCksJGlub3V0MSk7CisrCSZtb3Z1cHMJKCZRV1AoMHgyMCwkb3V0KSwkaW5v dXQyKTsKKysJJm1vdmFwcwkoJGlub3V0MCwkaW5vdXQzKTsKKysJJmxlYQkoJG91dCwmRFdQKDB4 MzAsJG91dCkpOworKwkmam1wCSgmbGFiZWwoImNiY19kZWNfdGFpbF9jb2xsZWN0ZWQiKSk7Cisr CisrJnNldF9sYWJlbCgiY2JjX2RlY19vbmUiKTsKKysJJmFlc25pX2lubGluZV9nZW5lcmF0ZTEo ImRlYyIpOwkjICZjYWxsCSgiX2Flc25pX2RlY3J5cHQzIik7CisrCSZweG9yCSgkaW5vdXQwLCRp dmVjKTsKKysJJm1vdmFwcwkoJGl2ZWMsJGluMCk7CisrCSZqbXAJKCZsYWJlbCgiY2JjX2RlY190 YWlsX2NvbGxlY3RlZCIpKTsKKysKKysmc2V0X2xhYmVsKCJjYmNfZGVjX3R3byIpOworKwkmY2Fs bAkoIl9hZXNuaV9kZWNyeXB0MyIpOworKwkmcHhvcgkoJGlub3V0MCwkaXZlYyk7CisrCSZweG9y CSgkaW5vdXQxLCRpbjApOworKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7CisrCSZt b3ZhcHMJKCRpbm91dDAsJGlub3V0MSk7CisrCSZtb3ZhcHMJKCRpdmVjLCRpbjEpOworKwkmbGVh CSgkb3V0LCZEV1AoMHgxMCwkb3V0KSk7CisrCSZqbXAJKCZsYWJlbCgiY2JjX2RlY190YWlsX2Nv bGxlY3RlZCIpKTsKKysKKysmc2V0X2xhYmVsKCJjYmNfZGVjX3RocmVlIik7CisrCSZjYWxsCSgi X2Flc25pX2RlY3J5cHQzIik7CisrCSZweG9yCSgkaW5vdXQwLCRpdmVjKTsKKysJJnB4b3IJKCRp bm91dDEsJGluMCk7CisrCSZweG9yCSgkaW5vdXQyLCRpbjEpOworKwkmbW92dXBzCSgmUVdQKDAs JG91dCksJGlub3V0MCk7CisrCSZtb3Z1cHMJKCZRV1AoMHgxMCwkb3V0KSwkaW5vdXQxKTsKKysJ Jm1vdmFwcwkoJGlub3V0MCwkaW5vdXQyKTsKKysJJm1vdnVwcwkoJGl2ZWMsJlFXUCgweDIwLCRp bnApKTsKKysJJmxlYQkoJG91dCwmRFdQKDB4MjAsJG91dCkpOworKworKyZzZXRfbGFiZWwoImNi Y19kZWNfdGFpbF9jb2xsZWN0ZWQiKTsKKysJJmFuZAkoJGxlbiwxNSk7CisrCSZqbnoJKCZsYWJl bCgiY2JjX2RlY190YWlsX3BhcnRpYWwiKSk7CisrCSZtb3Z1cHMJKCZRV1AoMCwkb3V0KSwkaW5v dXQwKTsKKysJJmptcAkoJmxhYmVsKCJjYmNfcmV0IikpOworKworKyZzZXRfbGFiZWwoImNiY19k ZWNfdGFpbF9wYXJ0aWFsIik7CisrCSZtb3YJKCRrZXlfLCJlc3AiKTsKKysJJnN1YgkoImVzcCIs MTYpOworKwkmYW5kCSgiZXNwIiwtMTYpOworKwkmbW92YXBzCSgmUVdQKDAsImVzcCIpLCRpbm91 dDApOworKwkmbW92CSgkaW5wLCJlc3AiKTsKKysJJm1vdgkoImVjeCIsJGxlbik7CisrCSZkYXRh X3dvcmQoMHhBNEYzRjY4OSk7CQkjIHJlcCBtb3ZzYgorKwkmbW92CSgiZXNwIiwka2V5Xyk7Cisr CisrJnNldF9sYWJlbCgiY2JjX3JldCIpOworKwkmbW92CSgka2V5Xywmd3BhcmFtKDQpKTsKKysJ Jm1vdnVwcwkoJlFXUCgwLCRrZXlfKSwkaXZlYyk7CSMgb3V0cHV0IElWCisrJmZ1bmN0aW9uX2Vu ZCgiJHtQUkVGSVh9X2NiY19lbmNyeXB0Iik7CisrCisrIyBNZWNoYW5pY2FsIHBvcnQgZnJvbSBh ZXNuaS14ODZfNjQucGwuCisrIworKyMgX2Flc25pX3NldF9lbmNyeXB0X2tleSBpcyBwcml2YXRl IGludGVyZmFjZSwKKysjIGlucHV0OgorKyMJImVheCIJY29uc3QgdW5zaWduZWQgY2hhciAqdXNl cktleQorKyMJJHJvdW5kcwlpbnQgYml0cworKyMJJGtleQlBRVNfS0VZICprZXkKKysjIG91dHB1 dDoKKysjCSJlYXgiCXJldHVybiBjb2RlCisrIwkkcm91bmQJcm91bmRzCisrCisrJmZ1bmN0aW9u X2JlZ2luX0IoIl9hZXNuaV9zZXRfZW5jcnlwdF9rZXkiKTsKKysJJnRlc3QJKCJlYXgiLCJlYXgi KTsKKysJJmp6CSgmbGFiZWwoImJhZF9wb2ludGVyIikpOworKwkmdGVzdAkoJGtleSwka2V5KTsK KysJJmp6CSgmbGFiZWwoImJhZF9wb2ludGVyIikpOworKworKwkmbW92dXBzCSgieG1tMCIsJlFX UCgwLCJlYXgiKSk7CSMgcHVsbCBmaXJzdCAxMjggYml0cyBvZiAqdXNlcktleQorKwkmcHhvcgko InhtbTQiLCJ4bW00Iik7CSMgbG93IGR3b3JkIG9mIHhtbTQgaXMgYXNzdW1lZCAwCisrCSZsZWEJ KCRrZXksJkRXUCgxNiwka2V5KSk7CisrCSZjbXAJKCRyb3VuZHMsMjU2KTsKKysJJmplCSgmbGFi ZWwoIjE0cm91bmRzIikpOworKwkmY21wCSgkcm91bmRzLDE5Mik7CisrCSZqZQkoJmxhYmVsKCIx MnJvdW5kcyIpKTsKKysJJmNtcAkoJHJvdW5kcywxMjgpOworKwkmam5lCSgmbGFiZWwoImJhZF9r ZXliaXRzIikpOworKworKyZzZXRfbGFiZWwoIjEwcm91bmRzIiwxNik7CisrCSZtb3YJCSgkcm91 bmRzLDkpOworKwkmJG1vdmVrZXkJKCZRV1AoLTE2LCRrZXkpLCJ4bW0wIik7CSMgcm91bmQgMAor KwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMCIsMHgwMSk7CQkjIHJvdW5kIDEKKysJJmNh bGwJCSgmbGFiZWwoImtleV8xMjhfY29sZCIpKTsKKysJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIs InhtbTAiLDB4Mik7CQkjIHJvdW5kIDIKKysJJmNhbGwJCSgmbGFiZWwoImtleV8xMjgiKSk7Cisr CSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0wIiwweDA0KTsJCSMgcm91bmQgMworKwkmY2Fs bAkJKCZsYWJlbCgia2V5XzEyOCIpKTsKKysJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTAi LDB4MDgpOwkJIyByb3VuZCA0CisrCSZjYWxsCQkoJmxhYmVsKCJrZXlfMTI4IikpOworKwkmYWVz a2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMCIsMHgxMCk7CQkjIHJvdW5kIDUKKysJJmNhbGwJCSgm bGFiZWwoImtleV8xMjgiKSk7CisrCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0wIiwweDIw KTsJCSMgcm91bmQgNgorKwkmY2FsbAkJKCZsYWJlbCgia2V5XzEyOCIpKTsKKysJJmFlc2tleWdl bmFzc2lzdCgieG1tMSIsInhtbTAiLDB4NDApOwkJIyByb3VuZCA3CisrCSZjYWxsCQkoJmxhYmVs KCJrZXlfMTI4IikpOworKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMCIsMHg4MCk7CQkj IHJvdW5kIDgKKysJJmNhbGwJCSgmbGFiZWwoImtleV8xMjgiKSk7CisrCSZhZXNrZXlnZW5hc3Np c3QoInhtbTEiLCJ4bW0wIiwweDFiKTsJCSMgcm91bmQgOQorKwkmY2FsbAkJKCZsYWJlbCgia2V5 XzEyOCIpKTsKKysJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTAiLDB4MzYpOwkJIyByb3Vu ZCAxMAorKwkmY2FsbAkJKCZsYWJlbCgia2V5XzEyOCIpKTsKKysJJiRtb3Zla2V5CSgmUVdQKDAs JGtleSksInhtbTAiKTsKKysJJm1vdgkJKCZEV1AoODAsJGtleSksJHJvdW5kcyk7CisrCSZ4b3IJ CSgiZWF4IiwiZWF4Iik7CisrCSZyZXQoKTsKKysKKysmc2V0X2xhYmVsKCJrZXlfMTI4IiwxNik7 CisrCSYkbW92ZWtleQkoJlFXUCgwLCRrZXkpLCJ4bW0wIik7CisrCSZsZWEJCSgka2V5LCZEV1Ao MTYsJGtleSkpOworKyZzZXRfbGFiZWwoImtleV8xMjhfY29sZCIpOworKwkmc2h1ZnBzCQkoInht bTQiLCJ4bW0wIiwwYjAwMDEwMDAwKTsKKysJJnB4b3IJCSgieG1tMCIsInhtbTQiKTsKKysJJnNo dWZwcwkJKCJ4bW00IiwieG1tMCIsMGIxMDAwMTEwMCwpOworKwkmcHhvcgkJKCJ4bW0wIiwieG1t NCIpOworKwkmcHNodWZkCQkoInhtbTEiLCJ4bW0xIiwwYjExMTExMTExKTsJIyBjcml0aWNhbCBw YXRoCisrCSZweG9yCQkoInhtbTAiLCJ4bW0xIik7CisrCSZyZXQoKTsKKysKKysmc2V0X2xhYmVs KCIxMnJvdW5kcyIsMTYpOworKwkmbW92cQkJKCJ4bW0yIiwmUVdQKDE2LCJlYXgiKSk7CSMgcmVt YWluaW5nIDEvMyBvZiAqdXNlcktleQorKwkmbW92CQkoJHJvdW5kcywxMSk7CisrCSYkbW92ZWtl eQkoJlFXUCgtMTYsJGtleSksInhtbTAiKQkJIyByb3VuZCAwCisrCSZhZXNrZXlnZW5hc3Npc3Qo InhtbTEiLCJ4bW0yIiwweDAxKTsJCSMgcm91bmQgMSwyCisrCSZjYWxsCQkoJmxhYmVsKCJrZXlf MTkyYV9jb2xkIikpOworKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMiIsMHgwMik7CQkj IHJvdW5kIDIsMworKwkmY2FsbAkJKCZsYWJlbCgia2V5XzE5MmIiKSk7CisrCSZhZXNrZXlnZW5h c3Npc3QoInhtbTEiLCJ4bW0yIiwweDA0KTsJCSMgcm91bmQgNCw1CisrCSZjYWxsCQkoJmxhYmVs KCJrZXlfMTkyYSIpKTsKKysJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4MDgpOwkJ IyByb3VuZCA1LDYKKysJJmNhbGwJCSgmbGFiZWwoImtleV8xOTJiIikpOworKwkmYWVza2V5Z2Vu YXNzaXN0KCJ4bW0xIiwieG1tMiIsMHgxMCk7CQkjIHJvdW5kIDcsOAorKwkmY2FsbAkJKCZsYWJl bCgia2V5XzE5MmEiKSk7CisrCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0yIiwweDIwKTsJ CSMgcm91bmQgOCw5CisrCSZjYWxsCQkoJmxhYmVsKCJrZXlfMTkyYiIpKTsKKysJJmFlc2tleWdl bmFzc2lzdCgieG1tMSIsInhtbTIiLDB4NDApOwkJIyByb3VuZCAxMCwxMQorKwkmY2FsbAkJKCZs YWJlbCgia2V5XzE5MmEiKSk7CisrCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0yIiwweDgw KTsJCSMgcm91bmQgMTEsMTIKKysJJmNhbGwJCSgmbGFiZWwoImtleV8xOTJiIikpOworKwkmJG1v dmVrZXkJKCZRV1AoMCwka2V5KSwieG1tMCIpOworKwkmbW92CQkoJkRXUCg0OCwka2V5KSwkcm91 bmRzKTsKKysJJnhvcgkJKCJlYXgiLCJlYXgiKTsKKysJJnJldCgpOworKworKyZzZXRfbGFiZWwo ImtleV8xOTJhIiwxNik7CisrCSYkbW92ZWtleQkoJlFXUCgwLCRrZXkpLCJ4bW0wIik7CisrCSZs ZWEJCSgka2V5LCZEV1AoMTYsJGtleSkpOworKyZzZXRfbGFiZWwoImtleV8xOTJhX2NvbGQiLDE2 KTsKKysJJm1vdmFwcwkJKCJ4bW01IiwieG1tMiIpOworKyZzZXRfbGFiZWwoImtleV8xOTJiX3dh cm0iKTsKKysJJnNodWZwcwkJKCJ4bW00IiwieG1tMCIsMGIwMDAxMDAwMCk7CisrCSZtb3ZhcHMJ CSgieG1tMyIsInhtbTIiKTsKKysJJnB4b3IJCSgieG1tMCIsInhtbTQiKTsKKysJJnNodWZwcwkJ KCJ4bW00IiwieG1tMCIsMGIxMDAwMTEwMCk7CisrCSZwc2xsZHEJCSgieG1tMyIsNCk7CisrCSZw eG9yCQkoInhtbTAiLCJ4bW00Iik7CisrCSZwc2h1ZmQJCSgieG1tMSIsInhtbTEiLDBiMDEwMTAx MDEpOwkjIGNyaXRpY2FsIHBhdGgKKysJJnB4b3IJCSgieG1tMiIsInhtbTMiKTsKKysJJnB4b3IJ CSgieG1tMCIsInhtbTEiKTsKKysJJnBzaHVmZAkJKCJ4bW0zIiwieG1tMCIsMGIxMTExMTExMSk7 CisrCSZweG9yCQkoInhtbTIiLCJ4bW0zIik7CisrCSZyZXQoKTsKKysKKysmc2V0X2xhYmVsKCJr ZXlfMTkyYiIsMTYpOworKwkmbW92YXBzCQkoInhtbTMiLCJ4bW0wIik7CisrCSZzaHVmcHMJCSgi eG1tNSIsInhtbTAiLDBiMDEwMDAxMDApOworKwkmJG1vdmVrZXkJKCZRV1AoMCwka2V5KSwieG1t NSIpOworKwkmc2h1ZnBzCQkoInhtbTMiLCJ4bW0yIiwwYjAxMDAxMTEwKTsKKysJJiRtb3Zla2V5 CSgmUVdQKDE2LCRrZXkpLCJ4bW0zIik7CisrCSZsZWEJCSgka2V5LCZEV1AoMzIsJGtleSkpOwor Kwkmam1wCQkoJmxhYmVsKCJrZXlfMTkyYl93YXJtIikpOworKworKyZzZXRfbGFiZWwoIjE0cm91 bmRzIiwxNik7CisrCSZtb3Z1cHMJCSgieG1tMiIsJlFXUCgxNiwiZWF4IikpOwkjIHJlbWFpbmlu ZyBoYWxmIG9mICp1c2VyS2V5CisrCSZtb3YJCSgkcm91bmRzLDEzKTsKKysJJmxlYQkJKCRrZXks JkRXUCgxNiwka2V5KSk7CisrCSYkbW92ZWtleQkoJlFXUCgtMzIsJGtleSksInhtbTAiKTsJIyBy b3VuZCAwCisrCSYkbW92ZWtleQkoJlFXUCgtMTYsJGtleSksInhtbTIiKTsJIyByb3VuZCAxCisr CSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0yIiwweDAxKTsJCSMgcm91bmQgMgorKwkmY2Fs bAkJKCZsYWJlbCgia2V5XzI1NmFfY29sZCIpKTsKKysJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIs InhtbTAiLDB4MDEpOwkJIyByb3VuZCAzCisrCSZjYWxsCQkoJmxhYmVsKCJrZXlfMjU2YiIpKTsK KysJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4MDIpOwkJIyByb3VuZCA0CisrCSZj YWxsCQkoJmxhYmVsKCJrZXlfMjU2YSIpKTsKKysJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInht bTAiLDB4MDIpOwkJIyByb3VuZCA1CisrCSZjYWxsCQkoJmxhYmVsKCJrZXlfMjU2YiIpKTsKKysJ JmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4MDQpOwkJIyByb3VuZCA2CisrCSZjYWxs CQkoJmxhYmVsKCJrZXlfMjU2YSIpKTsKKysJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTAi LDB4MDQpOwkJIyByb3VuZCA3CisrCSZjYWxsCQkoJmxhYmVsKCJrZXlfMjU2YiIpKTsKKysJJmFl c2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4MDgpOwkJIyByb3VuZCA4CisrCSZjYWxsCQko JmxhYmVsKCJrZXlfMjU2YSIpKTsKKysJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTAiLDB4 MDgpOwkJIyByb3VuZCA5CisrCSZjYWxsCQkoJmxhYmVsKCJrZXlfMjU2YiIpKTsKKysJJmFlc2tl eWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4MTApOwkJIyByb3VuZCAxMAorKwkmY2FsbAkJKCZs YWJlbCgia2V5XzI1NmEiKSk7CisrCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0wIiwweDEw KTsJCSMgcm91bmQgMTEKKysJJmNhbGwJCSgmbGFiZWwoImtleV8yNTZiIikpOworKwkmYWVza2V5 Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMiIsMHgyMCk7CQkjIHJvdW5kIDEyCisrCSZjYWxsCQkoJmxh YmVsKCJrZXlfMjU2YSIpKTsKKysJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTAiLDB4MjAp OwkJIyByb3VuZCAxMworKwkmY2FsbAkJKCZsYWJlbCgia2V5XzI1NmIiKSk7CisrCSZhZXNrZXln ZW5hc3Npc3QoInhtbTEiLCJ4bW0yIiwweDQwKTsJCSMgcm91bmQgMTQKKysJJmNhbGwJCSgmbGFi ZWwoImtleV8yNTZhIikpOworKwkmJG1vdmVrZXkJKCZRV1AoMCwka2V5KSwieG1tMCIpOworKwkm bW92CQkoJkRXUCgxNiwka2V5KSwkcm91bmRzKTsKKysJJnhvcgkJKCJlYXgiLCJlYXgiKTsKKysJ JnJldCgpOworKworKyZzZXRfbGFiZWwoImtleV8yNTZhIiwxNik7CisrCSYkbW92ZWtleQkoJlFX UCgwLCRrZXkpLCJ4bW0yIik7CisrCSZsZWEJCSgka2V5LCZEV1AoMTYsJGtleSkpOworKyZzZXRf bGFiZWwoImtleV8yNTZhX2NvbGQiKTsKKysJJnNodWZwcwkJKCJ4bW00IiwieG1tMCIsMGIwMDAx MDAwMCk7CisrCSZweG9yCQkoInhtbTAiLCJ4bW00Iik7CisrCSZzaHVmcHMJCSgieG1tNCIsInht bTAiLDBiMTAwMDExMDApOworKwkmcHhvcgkJKCJ4bW0wIiwieG1tNCIpOworKwkmcHNodWZkCQko InhtbTEiLCJ4bW0xIiwwYjExMTExMTExKTsJIyBjcml0aWNhbCBwYXRoCisrCSZweG9yCQkoInht bTAiLCJ4bW0xIik7CisrCSZyZXQoKTsKKysKKysmc2V0X2xhYmVsKCJrZXlfMjU2YiIsMTYpOwor KwkmJG1vdmVrZXkJKCZRV1AoMCwka2V5KSwieG1tMCIpOworKwkmbGVhCQkoJGtleSwmRFdQKDE2 LCRrZXkpKTsKKysKKysJJnNodWZwcwkJKCJ4bW00IiwieG1tMiIsMGIwMDAxMDAwMCk7CisrCSZw eG9yCQkoInhtbTIiLCJ4bW00Iik7CisrCSZzaHVmcHMJCSgieG1tNCIsInhtbTIiLDBiMTAwMDEx MDApOworKwkmcHhvcgkJKCJ4bW0yIiwieG1tNCIpOworKwkmcHNodWZkCQkoInhtbTEiLCJ4bW0x IiwwYjEwMTAxMDEwKTsJIyBjcml0aWNhbCBwYXRoCisrCSZweG9yCQkoInhtbTIiLCJ4bW0xIik7 CisrCSZyZXQoKTsKKysKKysmc2V0X2xhYmVsKCJiYWRfcG9pbnRlciIsNCk7CisrCSZtb3YJKCJl YXgiLC0xKTsKKysJJnJldAkoKTsKKysmc2V0X2xhYmVsKCJiYWRfa2V5Yml0cyIsNCk7CisrCSZt b3YJKCJlYXgiLC0yKTsKKysJJnJldAkoKTsKKysmZnVuY3Rpb25fZW5kX0IoIl9hZXNuaV9zZXRf ZW5jcnlwdF9rZXkiKTsKKysKKysjIGludCAkUFJFRklYX3NldF9lbmNyeXB0X2tleSAoY29uc3Qg dW5zaWduZWQgY2hhciAqdXNlcktleSwgaW50IGJpdHMsCisrIyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEFFU19LRVkgKmtleSkKKysmZnVuY3Rpb25fYmVnaW5fQigiJHtQUkVGSVh9X3Nl dF9lbmNyeXB0X2tleSIpOworKwkmbW92CSgiZWF4Iiwmd3BhcmFtKDApKTsKKysJJm1vdgkoJHJv dW5kcywmd3BhcmFtKDEpKTsKKysJJm1vdgkoJGtleSwmd3BhcmFtKDIpKTsKKysJJmNhbGwJKCJf YWVzbmlfc2V0X2VuY3J5cHRfa2V5Iik7CisrCSZyZXQJKCk7CisrJmZ1bmN0aW9uX2VuZF9CKCIk e1BSRUZJWH1fc2V0X2VuY3J5cHRfa2V5Iik7CisrCisrIyBpbnQgJFBSRUZJWF9zZXRfZGVjcnlw dF9rZXkgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnVzZXJLZXksIGludCBiaXRzLAorKyMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBBRVNfS0VZICprZXkpCisrJmZ1bmN0aW9uX2JlZ2luX0Io IiR7UFJFRklYfV9zZXRfZGVjcnlwdF9rZXkiKTsKKysJJm1vdgkoImVheCIsJndwYXJhbSgwKSk7 CisrCSZtb3YJKCRyb3VuZHMsJndwYXJhbSgxKSk7CisrCSZtb3YJKCRrZXksJndwYXJhbSgyKSk7 CisrCSZjYWxsCSgiX2Flc25pX3NldF9lbmNyeXB0X2tleSIpOworKwkmbW92CSgka2V5LCZ3cGFy YW0oMikpOworKwkmc2hsCSgkcm91bmRzLDQpCSMgcm91bmRzLTEgYWZ0ZXIgX2Flc25pX3NldF9l bmNyeXB0X2tleQorKwkmdGVzdAkoImVheCIsImVheCIpOworKwkmam56CSgmbGFiZWwoImRlY19r ZXlfcmV0IikpOworKwkmbGVhCSgiZWF4IiwmRFdQKDE2LCRrZXksJHJvdW5kcykpOwkjIGVuZCBv ZiBrZXkgc2NoZWR1bGUKKysKKysJJiRtb3Zla2V5CSgieG1tMCIsJlFXUCgwLCRrZXkpKTsJIyBq dXN0IHN3YXAKKysJJiRtb3Zla2V5CSgieG1tMSIsJlFXUCgwLCJlYXgiKSk7CisrCSYkbW92ZWtl eQkoJlFXUCgwLCJlYXgiKSwieG1tMCIpOworKwkmJG1vdmVrZXkJKCZRV1AoMCwka2V5KSwieG1t MSIpOworKwkmbGVhCQkoJGtleSwmRFdQKDE2LCRrZXkpKTsKKysJJmxlYQkJKCJlYXgiLCZEV1Ao LTE2LCJlYXgiKSk7CisrCisrJnNldF9sYWJlbCgiZGVjX2tleV9pbnZlcnNlIik7CisrCSYkbW92 ZWtleQkoInhtbTAiLCZRV1AoMCwka2V5KSk7CSMgc3dhcCBhbmQgaW52ZXJzZQorKwkmJG1vdmVr ZXkJKCJ4bW0xIiwmUVdQKDAsImVheCIpKTsKKysJJmFlc2ltYwkJKCJ4bW0wIiwieG1tMCIpOwor KwkmYWVzaW1jCQkoInhtbTEiLCJ4bW0xIik7CisrCSZsZWEJCSgka2V5LCZEV1AoMTYsJGtleSkp OworKwkmbGVhCQkoImVheCIsJkRXUCgtMTYsImVheCIpKTsKKysJJmNtcAkJKCJlYXgiLCRrZXkp OworKwkmJG1vdmVrZXkJKCZRV1AoMTYsImVheCIpLCJ4bW0wIik7CisrCSYkbW92ZWtleQkoJlFX UCgtMTYsJGtleSksInhtbTEiKTsKKysJJmphCQkoJmxhYmVsKCJkZWNfa2V5X2ludmVyc2UiKSk7 CisrCisrCSYkbW92ZWtleQkoInhtbTAiLCZRV1AoMCwka2V5KSk7CSMgaW52ZXJzZSBtaWRkbGUK KysJJmFlc2ltYwkJKCJ4bW0wIiwieG1tMCIpOworKwkmJG1vdmVrZXkJKCZRV1AoMCwka2V5KSwi eG1tMCIpOworKworKwkmeG9yCQkoImVheCIsImVheCIpOwkJIyByZXR1cm4gc3VjY2VzcworKyZz ZXRfbGFiZWwoImRlY19rZXlfcmV0Iik7CisrCSZyZXQJKCk7CisrJmZ1bmN0aW9uX2VuZF9CKCIk e1BSRUZJWH1fc2V0X2RlY3J5cHRfa2V5Iik7CisrJmFzY2l6KCJBRVMgZm9yIEludGVsIEFFUy1O SSwgQ1JZUFRPR0FNUyBieSA8YXBwcm9cQG9wZW5zc2wub3JnPiIpOworKworKyZhc21fZmluaXNo KCk7CitkaWZmIC11cCBvcGVuc3NsLTEuMC4wYi9jcnlwdG8vYWVzL2FzbS9hZXNuaS14ODZfNjQu cGwuYWVzbmkgb3BlbnNzbC0xLjAuMGIvY3J5cHRvL2Flcy9hc20vYWVzbmkteDg2XzY0LnBsCist LS0gb3BlbnNzbC0xLjAuMGIvY3J5cHRvL2Flcy9hc20vYWVzbmkteDg2XzY0LnBsLmFlc25pCTIw MTAtMTEtMTYgMTc6MzM6MjMuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMGIvY3J5 cHRvL2Flcy9hc20vYWVzbmkteDg2XzY0LnBsCTIwMTAtMTEtMTYgMTc6MzM6MjMuMDAwMDAwMDAw ICswMTAwCitAQCAtMCwwICsxLDk5MSBAQAorKyMhL3Vzci9iaW4vZW52IHBlcmwKKysjCisrIyA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorKyMgV3JpdHRlbiBieSBBbmR5IFBvbHlha292IDxhcHByb0BmeS5jaGFsbWVy cy5zZT4gZm9yIHRoZSBPcGVuU1NMCisrIyBwcm9qZWN0LiBUaGUgbW9kdWxlIGlzLCBob3dldmVy LCBkdWFsIGxpY2Vuc2VkIHVuZGVyIE9wZW5TU0wgYW5kCisrIyBDUllQVE9HQU1TIGxpY2Vuc2Vz IGRlcGVuZGluZyBvbiB3aGVyZSB5b3Ugb2J0YWluIGl0LiBGb3IgZnVydGhlcgorKyMgZGV0YWls cyBzZWUgaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9+YXBwcm8vY3J5cHRvZ2Ftcy8uCisrIyA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorKyMKKysjIFRoaXMgbW9kdWxlIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgSW50ZWwg QUVTLU5JIGV4dGVuc2lvbi4gSW4KKysjIE9wZW5TU0wgY29udGV4dCBpdCdzIHVzZWQgd2l0aCBJ bnRlbCBlbmdpbmUsIGJ1dCBjYW4gYWxzbyBiZSB1c2VkIGFzCisrIyBkcm9wLWluIHJlcGxhY2Vt ZW50IGZvciBjcnlwdG8vYWVzL2FzbS9hZXMteDg2XzY0LnBsIFtzZWUgYmVsb3cgZm9yCisrIyBk ZXRhaWxzXS4KKysKKyskUFJFRklYPSJhZXNuaSI7CSMgaWYgJFBSRUZJWCBpcyBzZXQgdG8gIkFF UyIsIHRoZSBzY3JpcHQKKysJCQkjIGdlbmVyYXRlcyBkcm9wLWluIHJlcGxhY2VtZW50IGZvcgor KwkJCSMgY3J5cHRvL2Flcy9hc20vYWVzLXg4Nl82NC5wbDotKQorKworKyRmbGF2b3VyID0gc2hp ZnQ7CisrJG91dHB1dCAgPSBzaGlmdDsKKytpZiAoJGZsYXZvdXIgPX4gL1wuLykgeyAkb3V0cHV0 ID0gJGZsYXZvdXI7IHVuZGVmICRmbGF2b3VyOyB9CisrCisrJHdpbjY0PTA7ICR3aW42ND0xIGlm ICgkZmxhdm91ciA9fiAvW25tXWFzbXxtaW5ndzY0LyB8fCAkb3V0cHV0ID1+IC9cLmFzbSQvKTsK KysKKyskMCA9fiBtLyguKltcL1xcXSlbXlwvXFxdKyQvOyAkZGlyPSQxOworKyggJHhsYXRlPSIk e2Rpcn14ODZfNjQteGxhdGUucGwiIGFuZCAtZiAkeGxhdGUgKSBvcgorKyggJHhsYXRlPSIke2Rp cn0uLi8uLi9wZXJsYXNtL3g4Nl82NC14bGF0ZS5wbCIgYW5kIC1mICR4bGF0ZSkgb3IKKytkaWUg ImNhbid0IGxvY2F0ZSB4ODZfNjQteGxhdGUucGwiOworKworK29wZW4gU1RET1VULCJ8ICReWCAk eGxhdGUgJGZsYXZvdXIgJG91dHB1dCI7CisrCisrJG1vdmtleSA9ICRQUkVGSVggZXEgImFlc25p IiA/ICJtb3ZhcHMiIDogIm1vdnVwcyI7CisrQF80YXJncz0kd2luNjQ/CSgiJXJjeCIsIiVyZHgi LCIlcjgiLCAiJXI5IikgOgkjIFdpbjY0IG9yZGVyCisrCQkoIiVyZGkiLCIlcnNpIiwiJXJkeCIs IiVyY3giKTsJIyBVbml4IG9yZGVyCisrCisrJGNvZGU9Ii50ZXh0XG4iOworKworKyRyb3VuZHM9 IiVlYXgiOwkjIGlucHV0IHRvIGFuZCBjaGFuZ2VkIGJ5IGFlc25pX1tlbnxkZV1jcnlwdE4gISEh CisrIyB0aGlzIGlzIG5hdHVyYWwgVW5peCBhcmd1bWVudCBvcmRlciBmb3IgcHVibGljICRQUkVG SVhfW2VjYnxjYmNdX2VuY3J5cHQgLi4uCisrJGlucD0iJXJkaSI7CisrJG91dD0iJXJzaSI7Cisr JGxlbj0iJXJkeCI7CisrJGtleT0iJXJjeCI7CSMgaW5wdXQgdG8gYW5kIGNoYW5nZWQgYnkgYWVz bmlfW2VufGRlXWNyeXB0TiAhISEKKyskaXZwPSIlcjgiOwkjIGNiYworKworKyRybmRzXz0iJXIx MGQiOwkjIGJhY2t1cCBjb3B5IGZvciAkcm91bmRzCisrJGtleV89IiVyMTEiOwkjIGJhY2t1cCBj b3B5IGZvciAka2V5CisrCisrIyAleG1tIHJlZ2lzdGVyIGxheW91dAorKyRpbm91dDA9IiV4bW0w IjsJJGlub3V0MT0iJXhtbTEiOworKyRpbm91dDI9IiV4bW0yIjsJJGlub3V0Mz0iJXhtbTMiOwor KyRybmRrZXkwPSIleG1tNCI7CSRybmRrZXkxPSIleG1tNSI7CisrCisrJGl2PSIleG1tNiI7CQkk aW4wPSIleG1tNyI7CSMgdXNlZCBpbiBDQkMgZGVjcnlwdAorKyRpbjE9IiV4bW04IjsJCSRpbjI9 IiV4bW05IjsKKysMCisrIyBJbmxpbmUgdmVyc2lvbiBvZiBpbnRlcm5hbCBhZXNuaV9bZW58ZGVd Y3J5cHQxLgorKyMKKysjIFdoeSBmb2xkZWQgbG9vcD8gQmVjYXVzZSBhZXNbZW5jfGRlY10gaXMg c2xvdyBlbm91Z2ggdG8gYWNjb21tb2RhdGUKKysjIGN5Y2xlcyB3aGljaCB0YWtlIGNhcmUgb2Yg bG9vcCB2YXJpYWJsZXMuLi4KKyt7IG15ICRzbjsKKytzdWIgYWVzbmlfZ2VuZXJhdGUxIHsKKytt eSAoJHAsJGtleSwkcm91bmRzKT1AXzsKKysrKyRzbjsKKyskY29kZS49PDxfX187CisrCSRtb3Zr ZXkJKCRrZXkpLCRybmRrZXkwCisrCSRtb3ZrZXkJMTYoJGtleSksJHJuZGtleTEKKysJbGVhCTMy KCRrZXkpLCRrZXkKKysJcHhvcgkkcm5ka2V5MCwkaW5vdXQwCisrLkxvb3BfJHtwfTFfJHNuOgor KwlhZXMke3B9CSRybmRrZXkxLCRpbm91dDAKKysJZGVjCSRyb3VuZHMKKysJJG1vdmtleQkoJGtl eSksJHJuZGtleTEKKysJbGVhCTE2KCRrZXkpLCRrZXkKKysJam56CS5Mb29wXyR7cH0xXyRzbgkj IGxvb3AgYm9keSBpcyAxNiBieXRlcworKwlhZXMke3B9bGFzdAkkcm5ka2V5MSwkaW5vdXQwCisr X19fCisrfX0KKysjIHZvaWQgJFBSRUZJWF9bZW58ZGVdY3J5cHQgKGNvbnN0IHZvaWQgKmlucCx2 b2lkICpvdXQsY29uc3QgQUVTX0tFWSAqa2V5KTsKKysjCisreyBteSAoJGlucCwkb3V0LCRrZXkp ID0gQF80YXJnczsKKysKKyskY29kZS49PDxfX187CisrLmdsb2JsCSR7UFJFRklYfV9lbmNyeXB0 CisrLnR5cGUJJHtQUkVGSVh9X2VuY3J5cHQsXEBhYmktb21uaXBvdGVudAorKy5hbGlnbgkxNgor KyR7UFJFRklYfV9lbmNyeXB0OgorKwltb3Z1cHMJKCRpbnApLCRpbm91dDAJCSMgbG9hZCBpbnB1 dAorKwltb3YJMjQwKCRrZXkpLCRyb3VuZHMJIyBwdWxsICRyb3VuZHMKKytfX18KKysJJmFlc25p X2dlbmVyYXRlMSgiZW5jIiwka2V5LCRyb3VuZHMpOworKyRjb2RlLj08PF9fXzsKKysJbW92dXBz CSRpbm91dDAsKCRvdXQpCQkjIG91dHB1dAorKwlyZXQKKysuc2l6ZQkke1BSRUZJWH1fZW5jcnlw dCwuLSR7UFJFRklYfV9lbmNyeXB0CisrCisrLmdsb2JsCSR7UFJFRklYfV9kZWNyeXB0CisrLnR5 cGUJJHtQUkVGSVh9X2RlY3J5cHQsXEBhYmktb21uaXBvdGVudAorKy5hbGlnbgkxNgorKyR7UFJF RklYfV9kZWNyeXB0OgorKwltb3Z1cHMJKCRpbnApLCRpbm91dDAJCSMgbG9hZCBpbnB1dAorKwlt b3YJMjQwKCRrZXkpLCRyb3VuZHMJIyBwdWxsICRyb3VuZHMKKytfX18KKysJJmFlc25pX2dlbmVy YXRlMSgiZGVjIiwka2V5LCRyb3VuZHMpOworKyRjb2RlLj08PF9fXzsKKysJbW92dXBzCSRpbm91 dDAsKCRvdXQpCQkjIG91dHB1dAorKwlyZXQKKysuc2l6ZQkke1BSRUZJWH1fZGVjcnlwdCwgLi0k e1BSRUZJWH1fZGVjcnlwdAorK19fXworK30KKysMCisrIyBfYWVzbmlfW2VufGRlXWNyeXB0WzM0 XSBhcmUgcHJpdmF0ZSBpbnRlcmZhY2VzLCBOIGRlbm90ZXMgaW50ZXJsZWF2ZQorKyMgZmFjdG9y LiBXaHkgM3ggc3Vicm91dGluZSBpcyB1c2VkIGluIGxvb3BzPyBFdmVuIHRob3VnaCBhZXNbZW5j fGRlY10KKysjIGxhdGVuY3kgaXMgNiwgaXQgdHVybmVkIG91dCB0aGF0IGl0IGNhbiBiZSBzY2hl ZHVsZWQgb25seSBldmVyeQorKyMgKnNlY29uZCogY3ljbGUuIFRodXMgM3ggaW50ZXJsZWF2ZSBp cyB0aGUgb25lIHByb3ZpZGluZyBvcHRpbWFsCisrIyB1dGlsaXphdGlvbiwgaS5lLiB3aGVuIHN1 YnJvdXRpbmUncyB0aHJvdWdocHV0IGlzIHZpcnR1YWxseSBzYW1lIGFzCisrIyBvZiBub24taW50 ZXJsZWF2ZWQgc3Vicm91dGluZSBbZm9yIG51bWJlciBvZiBpbnB1dCBibG9ja3MgdXAgdG8gM10u CisrIyBUaGlzIGlzIHdoeSBpdCBtYWtlcyBubyBzZW5zZSB0byBpbXBsZW1lbnQgMnggc3Vicm91 dGluZS4gQXMgc29vbgorKyMgYXMvaWYgSW50ZWwgaW1wcm92ZXMgdGhyb3VnaHB1dCBieSBtYWtp bmcgaXQgcG9zc2libGUgdG8gc2NoZWR1bGUKKysjIHRoZSBpbnN0cnVjdGlvbnMgaW4gcXVlc3Rp b24gKmV2ZXJ5KiBjeWNsZXMgSSB3b3VsZCBoYXZlIHRvCisrIyBpbXBsZW1lbnQgNnggaW50ZXJs ZWF2ZSBhbmQgdXNlIGl0IGluIGxvb3AuLi4KKytzdWIgYWVzbmlfZ2VuZXJhdGUzIHsKKytteSAk ZGlyPXNoaWZ0OworKyMgQXMgYWxyZWFkeSBtZW50aW9uZWQgaXQgdGFrZXMgaW4gJGtleSBhbmQg JHJvdW5kcywgd2hpY2ggYXJlICpub3QqCisrIyBwcmVzZXJ2ZWQuICRpbm91dFswLTJdIGlzIGNp cGhlci9jbGVhciB0ZXh0Li4uCisrJGNvZGUuPTw8X19fOworKy50eXBlCV9hZXNuaV8ke2Rpcn1y eXB0MyxcQGFiaS1vbW5pcG90ZW50CisrLmFsaWduCTE2CisrX2Flc25pXyR7ZGlyfXJ5cHQzOgor KwkkbW92a2V5CSgka2V5KSwkcm5ka2V5MAorKwlzaHIJXCQxLCRyb3VuZHMKKysJJG1vdmtleQkx Nigka2V5KSwkcm5ka2V5MQorKwlsZWEJMzIoJGtleSksJGtleQorKwlweG9yCSRybmRrZXkwLCRp bm91dDAKKysJcHhvcgkkcm5ka2V5MCwkaW5vdXQxCisrCXB4b3IJJHJuZGtleTAsJGlub3V0Mgor KworKy5MJHtkaXJ9X2xvb3AzOgorKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0MAorKwkkbW92 a2V5CQkoJGtleSksJHJuZGtleTAKKysJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDEKKysJZGVj CQkkcm91bmRzCisrCWFlcyR7ZGlyfQkkcm5ka2V5MSwkaW5vdXQyCisrCWFlcyR7ZGlyfQkkcm5k a2V5MCwkaW5vdXQwCisrCSRtb3ZrZXkJCTE2KCRrZXkpLCRybmRrZXkxCisrCWFlcyR7ZGlyfQkk cm5ka2V5MCwkaW5vdXQxCisrCWxlYQkJMzIoJGtleSksJGtleQorKwlhZXMke2Rpcn0JJHJuZGtl eTAsJGlub3V0MgorKwlqbnoJCS5MJHtkaXJ9X2xvb3AzCisrCisrCWFlcyR7ZGlyfQkkcm5ka2V5 MSwkaW5vdXQwCisrCSRtb3ZrZXkJCSgka2V5KSwkcm5ka2V5MAorKwlhZXMke2Rpcn0JJHJuZGtl eTEsJGlub3V0MQorKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0MgorKwlhZXMke2Rpcn1sYXN0 CSRybmRrZXkwLCRpbm91dDAKKysJYWVzJHtkaXJ9bGFzdAkkcm5ka2V5MCwkaW5vdXQxCisrCWFl cyR7ZGlyfWxhc3QJJHJuZGtleTAsJGlub3V0MgorKwlyZXQKKysuc2l6ZQlfYWVzbmlfJHtkaXJ9 cnlwdDMsLi1fYWVzbmlfJHtkaXJ9cnlwdDMKKytfX18KKyt9CisrIyA0eCBpbnRlcmxlYXZlIGlz IGltcGxlbWVudGVkIHRvIGltcHJvdmUgc21hbGwgYmxvY2sgcGVyZm9ybWFuY2UsCisrIyBtb3N0 IG5vdGFibHkgW2FuZCBuYXR1cmFsbHldIDQgYmxvY2sgYnkgfjMwJS4gT25lIGNhbiBhcmd1ZSB0 aGF0IG9uZQorKyMgc2hvdWxkIGhhdmUgaW1wbGVtZW50ZWQgNXggYXMgd2VsbCwgYnV0IGltcHJv dmVtZW50IHdvdWxkIGJlIDwyMCUsCisrIyBzbyBpdCdzIG5vdCB3b3J0aCBpdC4uLgorK3N1YiBh ZXNuaV9nZW5lcmF0ZTQgeworK215ICRkaXI9c2hpZnQ7CisrIyBBcyBhbHJlYWR5IG1lbnRpb25l ZCBpdCB0YWtlcyBpbiAka2V5IGFuZCAkcm91bmRzLCB3aGljaCBhcmUgKm5vdCoKKysjIHByZXNl cnZlZC4gJGlub3V0WzAtM10gaXMgY2lwaGVyL2NsZWFyIHRleHQuLi4KKyskY29kZS49PDxfX187 CisrLnR5cGUJX2Flc25pXyR7ZGlyfXJ5cHQ0LFxAYWJpLW9tbmlwb3RlbnQKKysuYWxpZ24JMTYK KytfYWVzbmlfJHtkaXJ9cnlwdDQ6CisrCSRtb3ZrZXkJKCRrZXkpLCRybmRrZXkwCisrCXNocglc JDEsJHJvdW5kcworKwkkbW92a2V5CTE2KCRrZXkpLCRybmRrZXkxCisrCWxlYQkzMigka2V5KSwk a2V5CisrCXB4b3IJJHJuZGtleTAsJGlub3V0MAorKwlweG9yCSRybmRrZXkwLCRpbm91dDEKKysJ cHhvcgkkcm5ka2V5MCwkaW5vdXQyCisrCXB4b3IJJHJuZGtleTAsJGlub3V0MworKworKy5MJHtk aXJ9X2xvb3A0OgorKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0MAorKwkkbW92a2V5CQkoJGtl eSksJHJuZGtleTAKKysJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDEKKysJZGVjCQkkcm91bmRz CisrCWFlcyR7ZGlyfQkkcm5ka2V5MSwkaW5vdXQyCisrCWFlcyR7ZGlyfQkkcm5ka2V5MSwkaW5v dXQzCisrCWFlcyR7ZGlyfQkkcm5ka2V5MCwkaW5vdXQwCisrCSRtb3ZrZXkJCTE2KCRrZXkpLCRy bmRrZXkxCisrCWFlcyR7ZGlyfQkkcm5ka2V5MCwkaW5vdXQxCisrCWxlYQkJMzIoJGtleSksJGtl eQorKwlhZXMke2Rpcn0JJHJuZGtleTAsJGlub3V0MgorKwlhZXMke2Rpcn0JJHJuZGtleTAsJGlu b3V0MworKwlqbnoJCS5MJHtkaXJ9X2xvb3A0CisrCisrCWFlcyR7ZGlyfQkkcm5ka2V5MSwkaW5v dXQwCisrCSRtb3ZrZXkJCSgka2V5KSwkcm5ka2V5MAorKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlu b3V0MQorKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0MgorKwlhZXMke2Rpcn0JJHJuZGtleTEs JGlub3V0MworKwlhZXMke2Rpcn1sYXN0CSRybmRrZXkwLCRpbm91dDAKKysJYWVzJHtkaXJ9bGFz dAkkcm5ka2V5MCwkaW5vdXQxCisrCWFlcyR7ZGlyfWxhc3QJJHJuZGtleTAsJGlub3V0MgorKwlh ZXMke2Rpcn1sYXN0CSRybmRrZXkwLCRpbm91dDMKKysJcmV0CisrLnNpemUJX2Flc25pXyR7ZGly fXJ5cHQ0LC4tX2Flc25pXyR7ZGlyfXJ5cHQ0CisrX19fCisrfQorKyZhZXNuaV9nZW5lcmF0ZTMo ImVuYyIpIGlmICgkUFJFRklYIGVxICJhZXNuaSIpOworKyZhZXNuaV9nZW5lcmF0ZTMoImRlYyIp OworKyZhZXNuaV9nZW5lcmF0ZTQoImVuYyIpIGlmICgkUFJFRklYIGVxICJhZXNuaSIpOworKyZh ZXNuaV9nZW5lcmF0ZTQoImRlYyIpOworKwwKKytpZiAoJFBSRUZJWCBlcSAiYWVzbmkiKSB7Cisr IyB2b2lkIGFlc25pX2VjYl9lbmNyeXB0IChjb25zdCB2b2lkICppbiwgdm9pZCAqb3V0LAorKyMJ CQkgIHNpemVfdCBsZW5ndGgsIGNvbnN0IEFFU19LRVkgKmtleSwKKysjCQkJICBpbnQgZW5jKTsK KyskY29kZS49PDxfX187CisrLmdsb2JsCWFlc25pX2VjYl9lbmNyeXB0CisrLnR5cGUJYWVzbmlf ZWNiX2VuY3J5cHQsXEBmdW5jdGlvbiw1CisrLmFsaWduCTE2CisrYWVzbmlfZWNiX2VuY3J5cHQ6 CisrCWNtcAlcJDE2LCRsZW4JCSMgY2hlY2sgbGVuZ3RoCisrCWpiCS5MZWNiX3JldAorKworKwlt b3YJMjQwKCRrZXkpLCRyb3VuZHMJIyBwdWxsICRyb3VuZHMKKysJYW5kCVwkLTE2LCRsZW4KKysJ bW92CSRrZXksJGtleV8JCSMgYmFja3VwICRrZXkKKysJdGVzdAklcjhkLCVyOGQJCSMgNXRoIGFy Z3VtZW50CisrCW1vdgkkcm91bmRzLCRybmRzXwkJIyBiYWNrdXAgJHJvdW5kcworKwlqegkuTGVj Yl9kZWNyeXB0CisrIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFQ0IgRU5DUllQVCAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0jCisrCXN1YglcJDB4NDAsJGxlbgorKwlqYmUJLkxl Y2JfZW5jX3RhaWwKKysJam1wCS5MZWNiX2VuY19sb29wMworKy5hbGlnbiAxNgorKy5MZWNiX2Vu Y19sb29wMzoKKysJbW92dXBzCSgkaW5wKSwkaW5vdXQwCisrCW1vdnVwcwkweDEwKCRpbnApLCRp bm91dDEKKysJbW92dXBzCTB4MjAoJGlucCksJGlub3V0MgorKwljYWxsCV9hZXNuaV9lbmNyeXB0 MworKwlzdWIJXCQweDMwLCRsZW4KKysJbGVhCTB4MzAoJGlucCksJGlucAorKwlsZWEJMHgzMCgk b3V0KSwkb3V0CisrCW1vdnVwcwkkaW5vdXQwLC0weDMwKCRvdXQpCisrCW1vdgkkcm5kc18sJHJv dW5kcwkJIyByZXN0b3JlICRyb3VuZHMKKysJbW92dXBzCSRpbm91dDEsLTB4MjAoJG91dCkKKysJ bW92CSRrZXlfLCRrZXkJCSMgcmVzdG9yZSAka2V5CisrCW1vdnVwcwkkaW5vdXQyLC0weDEwKCRv dXQpCisrCWphCS5MZWNiX2VuY19sb29wMworKworKy5MZWNiX2VuY190YWlsOgorKwlhZGQJXCQw eDQwLCRsZW4KKysJanoJLkxlY2JfcmV0CisrCisrCWNtcAlcJDB4MTAsJGxlbgorKwltb3Z1cHMJ KCRpbnApLCRpbm91dDAKKysJamUJLkxlY2JfZW5jX29uZQorKwljbXAJXCQweDIwLCRsZW4KKysJ bW92dXBzCTB4MTAoJGlucCksJGlub3V0MQorKwlqZQkuTGVjYl9lbmNfdHdvCisrCWNtcAlcJDB4 MzAsJGxlbgorKwltb3Z1cHMJMHgyMCgkaW5wKSwkaW5vdXQyCisrCWplCS5MZWNiX2VuY190aHJl ZQorKwltb3Z1cHMJMHgzMCgkaW5wKSwkaW5vdXQzCisrCWNhbGwJX2Flc25pX2VuY3J5cHQ0Cisr CW1vdnVwcwkkaW5vdXQwLCgkb3V0KQorKwltb3Z1cHMJJGlub3V0MSwweDEwKCRvdXQpCisrCW1v dnVwcwkkaW5vdXQyLDB4MjAoJG91dCkKKysJbW92dXBzCSRpbm91dDMsMHgzMCgkb3V0KQorKwlq bXAJLkxlY2JfcmV0CisrLmFsaWduCTE2CisrLkxlY2JfZW5jX29uZToKKytfX18KKysJJmFlc25p X2dlbmVyYXRlMSgiZW5jIiwka2V5LCRyb3VuZHMpOworKyRjb2RlLj08PF9fXzsKKysJbW92dXBz CSRpbm91dDAsKCRvdXQpCisrCWptcAkuTGVjYl9yZXQKKysuYWxpZ24JMTYKKysuTGVjYl9lbmNf dHdvOgorKwljYWxsCV9hZXNuaV9lbmNyeXB0MworKwltb3Z1cHMJJGlub3V0MCwoJG91dCkKKysJ bW92dXBzCSRpbm91dDEsMHgxMCgkb3V0KQorKwlqbXAJLkxlY2JfcmV0CisrLmFsaWduCTE2Cisr LkxlY2JfZW5jX3RocmVlOgorKwljYWxsCV9hZXNuaV9lbmNyeXB0MworKwltb3Z1cHMJJGlub3V0 MCwoJG91dCkKKysJbW92dXBzCSRpbm91dDEsMHgxMCgkb3V0KQorKwltb3Z1cHMJJGlub3V0Miww eDIwKCRvdXQpCisrCWptcAkuTGVjYl9yZXQKKysMIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSBFQ0IgREVDUllQVCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0jCisrLmFsaWduCTE2 CisrLkxlY2JfZGVjcnlwdDoKKysJc3ViCVwkMHg0MCwkbGVuCisrCWpiZQkuTGVjYl9kZWNfdGFp bAorKwlqbXAJLkxlY2JfZGVjX2xvb3AzCisrLmFsaWduIDE2CisrLkxlY2JfZGVjX2xvb3AzOgor Kwltb3Z1cHMJKCRpbnApLCRpbm91dDAKKysJbW92dXBzCTB4MTAoJGlucCksJGlub3V0MQorKwlt b3Z1cHMJMHgyMCgkaW5wKSwkaW5vdXQyCisrCWNhbGwJX2Flc25pX2RlY3J5cHQzCisrCXN1Yglc JDB4MzAsJGxlbgorKwlsZWEJMHgzMCgkaW5wKSwkaW5wCisrCWxlYQkweDMwKCRvdXQpLCRvdXQK KysJbW92dXBzCSRpbm91dDAsLTB4MzAoJG91dCkKKysJbW92CSRybmRzXywkcm91bmRzCQkjIHJl c3RvcmUgJHJvdW5kcworKwltb3Z1cHMJJGlub3V0MSwtMHgyMCgkb3V0KQorKwltb3YJJGtleV8s JGtleQkJIyByZXN0b3JlICRrZXkKKysJbW92dXBzCSRpbm91dDIsLTB4MTAoJG91dCkKKysJamEJ LkxlY2JfZGVjX2xvb3AzCisrCisrLkxlY2JfZGVjX3RhaWw6CisrCWFkZAlcJDB4NDAsJGxlbgor KwlqegkuTGVjYl9yZXQKKysKKysJY21wCVwkMHgxMCwkbGVuCisrCW1vdnVwcwkoJGlucCksJGlu b3V0MAorKwlqZQkuTGVjYl9kZWNfb25lCisrCWNtcAlcJDB4MjAsJGxlbgorKwltb3Z1cHMJMHgx MCgkaW5wKSwkaW5vdXQxCisrCWplCS5MZWNiX2RlY190d28KKysJY21wCVwkMHgzMCwkbGVuCisr CW1vdnVwcwkweDIwKCRpbnApLCRpbm91dDIKKysJamUJLkxlY2JfZGVjX3RocmVlCisrCW1vdnVw cwkweDMwKCRpbnApLCRpbm91dDMKKysJY2FsbAlfYWVzbmlfZGVjcnlwdDQKKysJbW92dXBzCSRp bm91dDAsKCRvdXQpCisrCW1vdnVwcwkkaW5vdXQxLDB4MTAoJG91dCkKKysJbW92dXBzCSRpbm91 dDIsMHgyMCgkb3V0KQorKwltb3Z1cHMJJGlub3V0MywweDMwKCRvdXQpCisrCWptcAkuTGVjYl9y ZXQKKysuYWxpZ24JMTYKKysuTGVjYl9kZWNfb25lOgorK19fXworKwkmYWVzbmlfZ2VuZXJhdGUx KCJkZWMiLCRrZXksJHJvdW5kcyk7CisrJGNvZGUuPTw8X19fOworKwltb3Z1cHMJJGlub3V0MCwo JG91dCkKKysJam1wCS5MZWNiX3JldAorKy5hbGlnbgkxNgorKy5MZWNiX2RlY190d286CisrCWNh bGwJX2Flc25pX2RlY3J5cHQzCisrCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQorKwltb3Z1cHMJJGlu b3V0MSwweDEwKCRvdXQpCisrCWptcAkuTGVjYl9yZXQKKysuYWxpZ24JMTYKKysuTGVjYl9kZWNf dGhyZWU6CisrCWNhbGwJX2Flc25pX2RlY3J5cHQzCisrCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQor Kwltb3Z1cHMJJGlub3V0MSwweDEwKCRvdXQpCisrCW1vdnVwcwkkaW5vdXQyLDB4MjAoJG91dCkK KysKKysuTGVjYl9yZXQ6CisrCXJldAorKy5zaXplCWFlc25pX2VjYl9lbmNyeXB0LC4tYWVzbmlf ZWNiX2VuY3J5cHQKKytfX18KKyt9CisrDAorKyMgdm9pZCAkUFJFRklYX2NiY19lbmNyeXB0IChj b25zdCB2b2lkICppbnAsIHZvaWQgKm91dCwKKysjCQkJICAgIHNpemVfdCBsZW5ndGgsIGNvbnN0 IEFFU19LRVkgKmtleSwKKysjCQkJICAgIHVuc2lnbmVkIGNoYXIgKml2cCxjb25zdCBpbnQgZW5j KTsKKyskcmVzZXJ2ZWQgPSAkd2luNjQ/MHg0MDotMHgxODsJIyB1c2VkIGluIGRlY3J5cHQKKysk Y29kZS49PDxfX187CisrLmdsb2JsCSR7UFJFRklYfV9jYmNfZW5jcnlwdAorKy50eXBlCSR7UFJF RklYfV9jYmNfZW5jcnlwdCxcQGZ1bmN0aW9uLDYKKysuYWxpZ24JMTYKKyske1BSRUZJWH1fY2Jj X2VuY3J5cHQ6CisrCXRlc3QJJGxlbiwkbGVuCQkjIGNoZWNrIGxlbmd0aAorKwlqegkuTGNiY19y ZXQKKysKKysJbW92CTI0MCgka2V5KSwkcm5kc18JIyBwdWxsICRyb3VuZHMKKysJbW92CSRrZXks JGtleV8JCSMgYmFja3VwICRrZXkKKysJdGVzdAklcjlkLCVyOWQJCSMgNnRoIGFyZ3VtZW50Cisr CWp6CS5MY2JjX2RlY3J5cHQKKysjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENCQyBFTkNS WVBUIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSMKKysJbW92dXBzCSgkaXZwKSwkaW5v dXQwCQkjIGxvYWQgaXYgYXMgaW5pdGlhbCBzdGF0ZQorKwljbXAJXCQxNiwkbGVuCisrCW1vdgkk cm5kc18sJHJvdW5kcworKwlqYgkuTGNiY19lbmNfdGFpbAorKwlzdWIJXCQxNiwkbGVuCisrCWpt cAkuTGNiY19lbmNfbG9vcAorKy5hbGlnbiAxNgorKy5MY2JjX2VuY19sb29wOgorKwltb3Z1cHMJ KCRpbnApLCRpbm91dDEJCSMgbG9hZCBpbnB1dAorKwlsZWEJMTYoJGlucCksJGlucAorKwlweG9y CSRpbm91dDEsJGlub3V0MAorK19fXworKwkmYWVzbmlfZ2VuZXJhdGUxKCJlbmMiLCRrZXksJHJv dW5kcyk7CisrJGNvZGUuPTw8X19fOworKwlzdWIJXCQxNiwkbGVuCisrCWxlYQkxNigkb3V0KSwk b3V0CisrCW1vdgkkcm5kc18sJHJvdW5kcwkJIyByZXN0b3JlICRyb3VuZHMKKysJbW92CSRrZXlf LCRrZXkJCSMgcmVzdG9yZSAka2V5CisrCW1vdnVwcwkkaW5vdXQwLC0xNigkb3V0KQkjIHN0b3Jl IG91dHB1dAorKwlqbmMJLkxjYmNfZW5jX2xvb3AKKysJYWRkCVwkMTYsJGxlbgorKwlqbnoJLkxj YmNfZW5jX3RhaWwKKysJbW92dXBzCSRpbm91dDAsKCRpdnApCisrCWptcAkuTGNiY19yZXQKKysK KysuTGNiY19lbmNfdGFpbDoKKysJbW92CSRsZW4sJXJjeAkjIHphcHMgJGtleQorKwl4Y2hnCSRp bnAsJG91dAkjICRpbnAgaXMgJXJzaSBhbmQgJG91dCBpcyAlcmRpIG5vdworKwkubG9uZwkweDkw NjZBNEYzCSMgcmVwIG1vdnNiCisrCW1vdglcJDE2LCVlY3gJIyB6ZXJvIHRhaWwKKysJc3ViCSRs ZW4sJXJjeAorKwl4b3IJJWVheCwlZWF4CisrCS5sb25nCTB4OTA2NkFBRjMJIyByZXAgc3Rvc2IK KysJbGVhCS0xNiglcmRpKSwlcmRpCSMgcmV3aW5kICRvdXQgYnkgMSBibG9jaworKwltb3YJJHJu ZHNfLCRyb3VuZHMJIyByZXN0b3JlICRyb3VuZHMKKysJbW92CSVyZGksJXJzaQkjICRpbnAgYW5k ICRvdXQgYXJlIHRoZSBzYW1lCisrCW1vdgkka2V5Xywka2V5CSMgcmVzdG9yZSAka2V5CisrCXhv cgkkbGVuLCRsZW4JIyBsZW49MTYKKysJam1wCS5MY2JjX2VuY19sb29wCSMgb25lIG1vcmUgc3Bp bgorKwwjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENCQyBERUNSWVBUIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSMKKysuYWxpZ24JMTYKKysuTGNiY19kZWNyeXB0OgorK19fXwor KyRjb2RlLj08PF9fXyBpZiAoJHdpbjY0KTsKKysJbGVhCS0weDU4KCVyc3ApLCVyc3AKKysJbW92 YXBzCSV4bW02LCglcnNwKQorKwltb3ZhcHMJJXhtbTcsMHgxMCglcnNwKQorKwltb3ZhcHMJJXht bTgsMHgyMCglcnNwKQorKwltb3ZhcHMJJXhtbTksMHgzMCglcnNwKQorKy5MY2JjX2RlY3J5cHRf Ym9keToKKytfX18KKyskY29kZS49PDxfX187CisrCW1vdnVwcwkoJGl2cCksJGl2CisrCXN1Yglc JDB4NDAsJGxlbgorKwltb3YJJHJuZHNfLCRyb3VuZHMKKysJamJlCS5MY2JjX2RlY190YWlsCisr CWptcAkuTGNiY19kZWNfbG9vcDMKKysuYWxpZ24gMTYKKysuTGNiY19kZWNfbG9vcDM6CisrCW1v dnVwcwkoJGlucCksJGlub3V0MAorKwltb3Z1cHMJMHgxMCgkaW5wKSwkaW5vdXQxCisrCW1vdnVw cwkweDIwKCRpbnApLCRpbm91dDIKKysJbW92YXBzCSRpbm91dDAsJGluMAorKwltb3ZhcHMJJGlu b3V0MSwkaW4xCisrCW1vdmFwcwkkaW5vdXQyLCRpbjIKKysJY2FsbAlfYWVzbmlfZGVjcnlwdDMK KysJc3ViCVwkMHgzMCwkbGVuCisrCWxlYQkweDMwKCRpbnApLCRpbnAKKysJbGVhCTB4MzAoJG91 dCksJG91dAorKwlweG9yCSRpdiwkaW5vdXQwCisrCXB4b3IJJGluMCwkaW5vdXQxCisrCW1vdmFw cwkkaW4yLCRpdgorKwlweG9yCSRpbjEsJGlub3V0MgorKwltb3Z1cHMJJGlub3V0MCwtMHgzMCgk b3V0KQorKwltb3YJJHJuZHNfLCRyb3VuZHMJIyByZXN0b3JlICRyb3VuZHMKKysJbW92dXBzCSRp bm91dDEsLTB4MjAoJG91dCkKKysJbW92CSRrZXlfLCRrZXkJIyByZXN0b3JlICRrZXkKKysJbW92 dXBzCSRpbm91dDIsLTB4MTAoJG91dCkKKysJamEJLkxjYmNfZGVjX2xvb3AzCisrCisrLkxjYmNf ZGVjX3RhaWw6CisrCWFkZAlcJDB4NDAsJGxlbgorKwltb3Z1cHMJJGl2LCgkaXZwKQorKwlqegku TGNiY19kZWNfcmV0CisrCisrCW1vdnVwcwkoJGlucCksJGlub3V0MAorKwljbXAJXCQweDEwLCRs ZW4KKysJbW92YXBzCSRpbm91dDAsJGluMAorKwlqYmUJLkxjYmNfZGVjX29uZQorKwltb3Z1cHMJ MHgxMCgkaW5wKSwkaW5vdXQxCisrCWNtcAlcJDB4MjAsJGxlbgorKwltb3ZhcHMJJGlub3V0MSwk aW4xCisrCWpiZQkuTGNiY19kZWNfdHdvCisrCW1vdnVwcwkweDIwKCRpbnApLCRpbm91dDIKKysJ Y21wCVwkMHgzMCwkbGVuCisrCW1vdmFwcwkkaW5vdXQyLCRpbjIKKysJamJlCS5MY2JjX2RlY190 aHJlZQorKwltb3Z1cHMJMHgzMCgkaW5wKSwkaW5vdXQzCisrCWNhbGwJX2Flc25pX2RlY3J5cHQ0 CisrCXB4b3IJJGl2LCRpbm91dDAKKysJbW92dXBzCTB4MzAoJGlucCksJGl2CisrCXB4b3IJJGlu MCwkaW5vdXQxCisrCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQorKwlweG9yCSRpbjEsJGlub3V0Mgor Kwltb3Z1cHMJJGlub3V0MSwweDEwKCRvdXQpCisrCXB4b3IJJGluMiwkaW5vdXQzCisrCW1vdnVw cwkkaW5vdXQyLDB4MjAoJG91dCkKKysJbW92YXBzCSRpbm91dDMsJGlub3V0MAorKwlsZWEJMHgz MCgkb3V0KSwkb3V0CisrCWptcAkuTGNiY19kZWNfdGFpbF9jb2xsZWN0ZWQKKysuYWxpZ24JMTYK KysuTGNiY19kZWNfb25lOgorK19fXworKwkmYWVzbmlfZ2VuZXJhdGUxKCJkZWMiLCRrZXksJHJv dW5kcyk7CisrJGNvZGUuPTw8X19fOworKwlweG9yCSRpdiwkaW5vdXQwCisrCW1vdmFwcwkkaW4w LCRpdgorKwlqbXAJLkxjYmNfZGVjX3RhaWxfY29sbGVjdGVkCisrLmFsaWduCTE2CisrLkxjYmNf ZGVjX3R3bzoKKysJY2FsbAlfYWVzbmlfZGVjcnlwdDMKKysJcHhvcgkkaXYsJGlub3V0MAorKwlw eG9yCSRpbjAsJGlub3V0MQorKwltb3Z1cHMJJGlub3V0MCwoJG91dCkKKysJbW92YXBzCSRpbjEs JGl2CisrCW1vdmFwcwkkaW5vdXQxLCRpbm91dDAKKysJbGVhCTB4MTAoJG91dCksJG91dAorKwlq bXAJLkxjYmNfZGVjX3RhaWxfY29sbGVjdGVkCisrLmFsaWduCTE2CisrLkxjYmNfZGVjX3RocmVl OgorKwljYWxsCV9hZXNuaV9kZWNyeXB0MworKwlweG9yCSRpdiwkaW5vdXQwCisrCXB4b3IJJGlu MCwkaW5vdXQxCisrCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQorKwlweG9yCSRpbjEsJGlub3V0Mgor Kwltb3Z1cHMJJGlub3V0MSwweDEwKCRvdXQpCisrCW1vdmFwcwkkaW4yLCRpdgorKwltb3ZhcHMJ JGlub3V0MiwkaW5vdXQwCisrCWxlYQkweDIwKCRvdXQpLCRvdXQKKysJam1wCS5MY2JjX2RlY190 YWlsX2NvbGxlY3RlZAorKy5hbGlnbgkxNgorKy5MY2JjX2RlY190YWlsX2NvbGxlY3RlZDoKKysJ YW5kCVwkMTUsJGxlbgorKwltb3Z1cHMJJGl2LCgkaXZwKQorKwlqbnoJLkxjYmNfZGVjX3RhaWxf cGFydGlhbAorKwltb3Z1cHMJJGlub3V0MCwoJG91dCkKKysJam1wCS5MY2JjX2RlY19yZXQKKysu TGNiY19kZWNfdGFpbF9wYXJ0aWFsOgorKwltb3ZhcHMJJGlub3V0MCwkcmVzZXJ2ZWQoJXJzcCkK KysJbW92CSRvdXQsJXJkaQorKwltb3YJJGxlbiwlcmN4CisrCWxlYQkkcmVzZXJ2ZWQoJXJzcCks JXJzaQorKwkubG9uZwkweDkwNjZBNEYzCSMgcmVwIG1vdnNiCisrCisrLkxjYmNfZGVjX3JldDoK KytfX18KKyskY29kZS49PDxfX18gaWYgKCR3aW42NCk7CisrCW1vdmFwcwkoJXJzcCksJXhtbTYK KysJbW92YXBzCTB4MTAoJXJzcCksJXhtbTcKKysJbW92YXBzCTB4MjAoJXJzcCksJXhtbTgKKysJ bW92YXBzCTB4MzAoJXJzcCksJXhtbTkKKysJbGVhCTB4NTgoJXJzcCksJXJzcAorK19fXworKyRj b2RlLj08PF9fXzsKKysuTGNiY19yZXQ6CisrCXJldAorKy5zaXplCSR7UFJFRklYfV9jYmNfZW5j cnlwdCwuLSR7UFJFRklYfV9jYmNfZW5jcnlwdAorK19fXworKwwKKysjIGludCAkUFJFRklYX3Nl dF9bZW58ZGVdY3J5cHRfa2V5IChjb25zdCB1bnNpZ25lZCBjaGFyICp1c2VyS2V5LAorKyMJCQkJ aW50IGJpdHMsIEFFU19LRVkgKmtleSkKKyt7IG15ICgkaW5wLCRiaXRzLCRrZXkpID0gQF80YXJn czsKKysgICRiaXRzID1+IHMvJXIvJWUvOworKworKyRjb2RlLj08PF9fXzsKKysuZ2xvYmwJJHtQ UkVGSVh9X3NldF9kZWNyeXB0X2tleQorKy50eXBlCSR7UFJFRklYfV9zZXRfZGVjcnlwdF9rZXks XEBhYmktb21uaXBvdGVudAorKy5hbGlnbgkxNgorKyR7UFJFRklYfV9zZXRfZGVjcnlwdF9rZXk6 CisrCS5ieXRlCTB4NDgsMHg4MywweEVDLDB4MDgJIyBzdWIgcnNwLDgKKysJY2FsbAlfYWVzbmlf c2V0X2VuY3J5cHRfa2V5CisrCXNobAlcJDQsJGJpdHMJCSMgcm91bmRzLTEgYWZ0ZXIgX2Flc25p X3NldF9lbmNyeXB0X2tleQorKwl0ZXN0CSVlYXgsJWVheAorKwlqbnoJLkxkZWNfa2V5X3JldAor KwlsZWEJMTYoJGtleSwkYml0cyksJGlucAkjIHBvaW50cyBhdCB0aGUgZW5kIG9mIGtleSBzY2hl ZHVsZQorKworKwkkbW92a2V5CSgka2V5KSwleG1tMAkJIyBqdXN0IHN3YXAKKysJJG1vdmtleQko JGlucCksJXhtbTEKKysJJG1vdmtleQkleG1tMCwoJGlucCkKKysJJG1vdmtleQkleG1tMSwoJGtl eSkKKysJbGVhCTE2KCRrZXkpLCRrZXkKKysJbGVhCS0xNigkaW5wKSwkaW5wCisrCisrLkxkZWNf a2V5X2ludmVyc2U6CisrCSRtb3ZrZXkJKCRrZXkpLCV4bW0wCQkjIHN3YXAgYW5kIGludmVyc2UK KysJJG1vdmtleQkoJGlucCksJXhtbTEKKysJYWVzaW1jCSV4bW0wLCV4bW0wCisrCWFlc2ltYwkl eG1tMSwleG1tMQorKwlsZWEJMTYoJGtleSksJGtleQorKwlsZWEJLTE2KCRpbnApLCRpbnAKKysJ Y21wCSRrZXksJGlucAorKwkkbW92a2V5CSV4bW0wLDE2KCRpbnApCisrCSRtb3ZrZXkJJXhtbTEs LTE2KCRrZXkpCisrCWphCS5MZGVjX2tleV9pbnZlcnNlCisrCisrCSRtb3ZrZXkJKCRrZXkpLCV4 bW0wCQkjIGludmVyc2UgbWlkZGxlCisrCWFlc2ltYwkleG1tMCwleG1tMAorKwkkbW92a2V5CSV4 bW0wLCgkaW5wKQorKy5MZGVjX2tleV9yZXQ6CisrCWFkZAlcJDgsJXJzcAorKwlyZXQKKysuTFNF SF9lbmRfc2V0X2RlY3J5cHRfa2V5OgorKy5zaXplCSR7UFJFRklYfV9zZXRfZGVjcnlwdF9rZXks Li0ke1BSRUZJWH1fc2V0X2RlY3J5cHRfa2V5CisrX19fCisrDAorKyMgVGhpcyBpcyBiYXNlZCBv biBzdWJtaXNzaW9uIGJ5CisrIworKyMJSHVhbmcgWWluZyA8eWluZy5odWFuZ0BpbnRlbC5jb20+ CisrIwlWaW5vZGggR29wYWwgPHZpbm9kaC5nb3BhbEBpbnRlbC5jb20+CisrIwlLYWhyYW1hbiBB a2RlbWlyCisrIworKyMgQWdyZXNzaXZlbHkgb3B0aW1pemVkIGluIHJlc3BlY3QgdG8gYWVza2V5 Z2VuYXNzaXN0J3MgY3JpdGljYWwgcGF0aAorKyMgYW5kIGlzIGNvbnRhaW5lZCBpbiAleG1tMC01 IHRvIG1lZXQgV2luNjQgQUJJIHJlcXVpcmVtZW50LgorKyMKKyskY29kZS49PDxfX187CisrLmds b2JsCSR7UFJFRklYfV9zZXRfZW5jcnlwdF9rZXkKKysudHlwZQkke1BSRUZJWH1fc2V0X2VuY3J5 cHRfa2V5LFxAYWJpLW9tbmlwb3RlbnQKKysuYWxpZ24JMTYKKyske1BSRUZJWH1fc2V0X2VuY3J5 cHRfa2V5OgorK19hZXNuaV9zZXRfZW5jcnlwdF9rZXk6CisrCS5ieXRlCTB4NDgsMHg4MywweEVD LDB4MDgJIyBzdWIgcnNwLDgKKysJdGVzdAkkaW5wLCRpbnAKKysJbW92CVwkLTEsJXJheAorKwlq egkuTGVuY19rZXlfcmV0CisrCXRlc3QJJGtleSwka2V5CisrCWp6CS5MZW5jX2tleV9yZXQKKysK KysJbW92dXBzCSgkaW5wKSwleG1tMAkJIyBwdWxsIGZpcnN0IDEyOCBiaXRzIG9mICp1c2VyS2V5 CisrCXB4b3IJJXhtbTQsJXhtbTQJCSMgbG93IGR3b3JkIG9mIHhtbTQgaXMgYXNzdW1lZCAwCisr CWxlYQkxNigka2V5KSwlcmF4CisrCWNtcAlcJDI1NiwkYml0cworKwlqZQkuTDE0cm91bmRzCisr CWNtcAlcJDE5MiwkYml0cworKwlqZQkuTDEycm91bmRzCisrCWNtcAlcJDEyOCwkYml0cworKwlq bmUJLkxiYWRfa2V5Yml0cworKworKy5MMTByb3VuZHM6CisrCW1vdglcJDksJGJpdHMJCQkjIDEw IHJvdW5kcyBmb3IgMTI4LWJpdCBrZXkKKysJJG1vdmtleQkleG1tMCwoJGtleSkJCQkjIHJvdW5k IDAKKysJYWVza2V5Z2VuYXNzaXN0CVwkMHgxLCV4bW0wLCV4bW0xCSMgcm91bmQgMQorKwljYWxs CQkuTGtleV9leHBhbnNpb25fMTI4X2NvbGQKKysJYWVza2V5Z2VuYXNzaXN0CVwkMHgyLCV4bW0w LCV4bW0xCSMgcm91bmQgMgorKwljYWxsCQkuTGtleV9leHBhbnNpb25fMTI4CisrCWFlc2tleWdl bmFzc2lzdAlcJDB4NCwleG1tMCwleG1tMQkjIHJvdW5kIDMKKysJY2FsbAkJLkxrZXlfZXhwYW5z aW9uXzEyOAorKwlhZXNrZXlnZW5hc3Npc3QJXCQweDgsJXhtbTAsJXhtbTEJIyByb3VuZCA0Cisr CWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8xMjgKKysJYWVza2V5Z2VuYXNzaXN0CVwkMHgxMCwleG1t MCwleG1tMQkjIHJvdW5kIDUKKysJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzEyOAorKwlhZXNrZXln ZW5hc3Npc3QJXCQweDIwLCV4bW0wLCV4bW0xCSMgcm91bmQgNgorKwljYWxsCQkuTGtleV9leHBh bnNpb25fMTI4CisrCWFlc2tleWdlbmFzc2lzdAlcJDB4NDAsJXhtbTAsJXhtbTEJIyByb3VuZCA3 CisrCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8xMjgKKysJYWVza2V5Z2VuYXNzaXN0CVwkMHg4MCwl eG1tMCwleG1tMQkjIHJvdW5kIDgKKysJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzEyOAorKwlhZXNr ZXlnZW5hc3Npc3QJXCQweDFiLCV4bW0wLCV4bW0xCSMgcm91bmQgOQorKwljYWxsCQkuTGtleV9l eHBhbnNpb25fMTI4CisrCWFlc2tleWdlbmFzc2lzdAlcJDB4MzYsJXhtbTAsJXhtbTEJIyByb3Vu ZCAxMAorKwljYWxsCQkuTGtleV9leHBhbnNpb25fMTI4CisrCSRtb3ZrZXkJJXhtbTAsKCVyYXgp CisrCW1vdgkkYml0cyw4MCglcmF4KQkjIDI0MCglcmR4KQorKwl4b3IJJWVheCwlZWF4CisrCWpt cAkuTGVuY19rZXlfcmV0CisrCisrLmFsaWduCTE2CisrLkwxMnJvdW5kczoKKysJbW92cQkxNigk aW5wKSwleG1tMgkJCSMgcmVtYWluaW5nIDEvMyBvZiAqdXNlcktleQorKwltb3YJXCQxMSwkYml0 cwkJCSMgMTIgcm91bmRzIGZvciAxOTIKKysJJG1vdmtleQkleG1tMCwoJGtleSkJCQkjIHJvdW5k IDAKKysJYWVza2V5Z2VuYXNzaXN0CVwkMHgxLCV4bW0yLCV4bW0xCSMgcm91bmQgMSwyCisrCWNh bGwJCS5Ma2V5X2V4cGFuc2lvbl8xOTJhX2NvbGQKKysJYWVza2V5Z2VuYXNzaXN0CVwkMHgyLCV4 bW0yLCV4bW0xCSMgcm91bmQgMiwzCisrCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8xOTJiCisrCWFl c2tleWdlbmFzc2lzdAlcJDB4NCwleG1tMiwleG1tMQkjIHJvdW5kIDQsNQorKwljYWxsCQkuTGtl eV9leHBhbnNpb25fMTkyYQorKwlhZXNrZXlnZW5hc3Npc3QJXCQweDgsJXhtbTIsJXhtbTEJIyBy b3VuZCA1LDYKKysJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzE5MmIKKysJYWVza2V5Z2VuYXNzaXN0 CVwkMHgxMCwleG1tMiwleG1tMQkjIHJvdW5kIDcsOAorKwljYWxsCQkuTGtleV9leHBhbnNpb25f MTkyYQorKwlhZXNrZXlnZW5hc3Npc3QJXCQweDIwLCV4bW0yLCV4bW0xCSMgcm91bmQgOCw5Cisr CWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8xOTJiCisrCWFlc2tleWdlbmFzc2lzdAlcJDB4NDAsJXht bTIsJXhtbTEJIyByb3VuZCAxMCwxMQorKwljYWxsCQkuTGtleV9leHBhbnNpb25fMTkyYQorKwlh ZXNrZXlnZW5hc3Npc3QJXCQweDgwLCV4bW0yLCV4bW0xCSMgcm91bmQgMTEsMTIKKysJY2FsbAkJ LkxrZXlfZXhwYW5zaW9uXzE5MmIKKysJJG1vdmtleQkleG1tMCwoJXJheCkKKysJbW92CSRiaXRz LDQ4KCVyYXgpCSMgMjQwKCVyZHgpCisrCXhvcgklcmF4LCAlcmF4CisrCWptcAkuTGVuY19rZXlf cmV0CisrCisrLmFsaWduCTE2CisrLkwxNHJvdW5kczoKKysJbW92dXBzCTE2KCRpbnApLCV4bW0y CQkJIyByZW1hbmluZyBoYWxmIG9mICp1c2VyS2V5CisrCW1vdglcJDEzLCRiaXRzCQkJIyAxNCBy b3VuZHMgZm9yIDI1NgorKwlsZWEJMTYoJXJheCksJXJheAorKwkkbW92a2V5CSV4bW0wLCgka2V5 KQkJCSMgcm91bmQgMAorKwkkbW92a2V5CSV4bW0yLDE2KCRrZXkpCQkJIyByb3VuZCAxCisrCWFl c2tleWdlbmFzc2lzdAlcJDB4MSwleG1tMiwleG1tMQkjIHJvdW5kIDIKKysJY2FsbAkJLkxrZXlf ZXhwYW5zaW9uXzI1NmFfY29sZAorKwlhZXNrZXlnZW5hc3Npc3QJXCQweDEsJXhtbTAsJXhtbTEJ IyByb3VuZCAzCisrCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8yNTZiCisrCWFlc2tleWdlbmFzc2lz dAlcJDB4MiwleG1tMiwleG1tMQkjIHJvdW5kIDQKKysJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzI1 NmEKKysJYWVza2V5Z2VuYXNzaXN0CVwkMHgyLCV4bW0wLCV4bW0xCSMgcm91bmQgNQorKwljYWxs CQkuTGtleV9leHBhbnNpb25fMjU2YgorKwlhZXNrZXlnZW5hc3Npc3QJXCQweDQsJXhtbTIsJXht bTEJIyByb3VuZCA2CisrCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8yNTZhCisrCWFlc2tleWdlbmFz c2lzdAlcJDB4NCwleG1tMCwleG1tMQkjIHJvdW5kIDcKKysJY2FsbAkJLkxrZXlfZXhwYW5zaW9u XzI1NmIKKysJYWVza2V5Z2VuYXNzaXN0CVwkMHg4LCV4bW0yLCV4bW0xCSMgcm91bmQgOAorKwlj YWxsCQkuTGtleV9leHBhbnNpb25fMjU2YQorKwlhZXNrZXlnZW5hc3Npc3QJXCQweDgsJXhtbTAs JXhtbTEJIyByb3VuZCA5CisrCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8yNTZiCisrCWFlc2tleWdl bmFzc2lzdAlcJDB4MTAsJXhtbTIsJXhtbTEJIyByb3VuZCAxMAorKwljYWxsCQkuTGtleV9leHBh bnNpb25fMjU2YQorKwlhZXNrZXlnZW5hc3Npc3QJXCQweDEwLCV4bW0wLCV4bW0xCSMgcm91bmQg MTEKKysJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzI1NmIKKysJYWVza2V5Z2VuYXNzaXN0CVwkMHgy MCwleG1tMiwleG1tMQkjIHJvdW5kIDEyCisrCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8yNTZhCisr CWFlc2tleWdlbmFzc2lzdAlcJDB4MjAsJXhtbTAsJXhtbTEJIyByb3VuZCAxMworKwljYWxsCQku TGtleV9leHBhbnNpb25fMjU2YgorKwlhZXNrZXlnZW5hc3Npc3QJXCQweDQwLCV4bW0yLCV4bW0x CSMgcm91bmQgMTQKKysJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzI1NmEKKysJJG1vdmtleQkleG1t MCwoJXJheCkKKysJbW92CSRiaXRzLDE2KCVyYXgpCSMgMjQwKCVyZHgpCisrCXhvcgklcmF4LCVy YXgKKysJam1wCS5MZW5jX2tleV9yZXQKKysKKysuYWxpZ24JMTYKKysuTGJhZF9rZXliaXRzOgor Kwltb3YJXCQtMiwlcmF4CisrLkxlbmNfa2V5X3JldDoKKysJYWRkCVwkOCwlcnNwCisrCXJldAor Ky5MU0VIX2VuZF9zZXRfZW5jcnlwdF9rZXk6CisrDAorKy5hbGlnbgkxNgorKy5Ma2V5X2V4cGFu c2lvbl8xMjg6CisrCSRtb3ZrZXkJJXhtbTAsKCVyYXgpCisrCWxlYQkxNiglcmF4KSwlcmF4Cisr LkxrZXlfZXhwYW5zaW9uXzEyOF9jb2xkOgorKwlzaHVmcHMJXCQwYjAwMDEwMDAwLCV4bW0wLCV4 bW00CisrCXB4b3IJJXhtbTQsICV4bW0wCisrCXNodWZwcwlcJDBiMTAwMDExMDAsJXhtbTAsJXht bTQKKysJcHhvcgkleG1tNCwgJXhtbTAKKysJcHNodWZkCVwkMGIxMTExMTExMSwleG1tMSwleG1t MQkjIGNyaXRpY2FsIHBhdGgKKysJcHhvcgkleG1tMSwleG1tMAorKwlyZXQKKysKKysuYWxpZ24g MTYKKysuTGtleV9leHBhbnNpb25fMTkyYToKKysJJG1vdmtleQkleG1tMCwoJXJheCkKKysJbGVh CTE2KCVyYXgpLCVyYXgKKysuTGtleV9leHBhbnNpb25fMTkyYV9jb2xkOgorKwltb3ZhcHMJJXht bTIsICV4bW01CisrLkxrZXlfZXhwYW5zaW9uXzE5MmJfd2FybToKKysJc2h1ZnBzCVwkMGIwMDAx MDAwMCwleG1tMCwleG1tNAorKwltb3ZhcHMJJXhtbTIsJXhtbTMKKysJcHhvcgkleG1tNCwleG1t MAorKwlzaHVmcHMJXCQwYjEwMDAxMTAwLCV4bW0wLCV4bW00CisrCXBzbGxkcQlcJDQsJXhtbTMK KysJcHhvcgkleG1tNCwleG1tMAorKwlwc2h1ZmQJXCQwYjAxMDEwMTAxLCV4bW0xLCV4bW0xCSMg Y3JpdGljYWwgcGF0aAorKwlweG9yCSV4bW0zLCV4bW0yCisrCXB4b3IJJXhtbTEsJXhtbTAKKysJ cHNodWZkCVwkMGIxMTExMTExMSwleG1tMCwleG1tMworKwlweG9yCSV4bW0zLCV4bW0yCisrCXJl dAorKworKy5hbGlnbiAxNgorKy5Ma2V5X2V4cGFuc2lvbl8xOTJiOgorKwltb3ZhcHMJJXhtbTAs JXhtbTMKKysJc2h1ZnBzCVwkMGIwMTAwMDEwMCwleG1tMCwleG1tNQorKwkkbW92a2V5CSV4bW01 LCglcmF4KQorKwlzaHVmcHMJXCQwYjAxMDAxMTEwLCV4bW0yLCV4bW0zCisrCSRtb3ZrZXkJJXht bTMsMTYoJXJheCkKKysJbGVhCTMyKCVyYXgpLCVyYXgKKysJam1wCS5Ma2V5X2V4cGFuc2lvbl8x OTJiX3dhcm0KKysKKysuYWxpZ24JMTYKKysuTGtleV9leHBhbnNpb25fMjU2YToKKysJJG1vdmtl eQkleG1tMiwoJXJheCkKKysJbGVhCTE2KCVyYXgpLCVyYXgKKysuTGtleV9leHBhbnNpb25fMjU2 YV9jb2xkOgorKwlzaHVmcHMJXCQwYjAwMDEwMDAwLCV4bW0wLCV4bW00CisrCXB4b3IJJXhtbTQs JXhtbTAKKysJc2h1ZnBzCVwkMGIxMDAwMTEwMCwleG1tMCwleG1tNAorKwlweG9yCSV4bW00LCV4 bW0wCisrCXBzaHVmZAlcJDBiMTExMTExMTEsJXhtbTEsJXhtbTEJIyBjcml0aWNhbCBwYXRoCisr CXB4b3IJJXhtbTEsJXhtbTAKKysJcmV0CisrCisrLmFsaWduIDE2CisrLkxrZXlfZXhwYW5zaW9u XzI1NmI6CisrCSRtb3ZrZXkJJXhtbTAsKCVyYXgpCisrCWxlYQkxNiglcmF4KSwlcmF4CisrCisr CXNodWZwcwlcJDBiMDAwMTAwMDAsJXhtbTIsJXhtbTQKKysJcHhvcgkleG1tNCwleG1tMgorKwlz aHVmcHMJXCQwYjEwMDAxMTAwLCV4bW0yLCV4bW00CisrCXB4b3IJJXhtbTQsJXhtbTIKKysJcHNo dWZkCVwkMGIxMDEwMTAxMCwleG1tMSwleG1tMQkjIGNyaXRpY2FsIHBhdGgKKysJcHhvcgkleG1t MSwleG1tMgorKwlyZXQKKysuc2l6ZQkke1BSRUZJWH1fc2V0X2VuY3J5cHRfa2V5LC4tJHtQUkVG SVh9X3NldF9lbmNyeXB0X2tleQorK19fXworK30KKysMCisrJGNvZGUuPTw8X19fOworKy5hc2Np eiAgIkFFUyBmb3IgSW50ZWwgQUVTLU5JLCBDUllQVE9HQU1TIGJ5IDxhcHByb1xAb3BlbnNzbC5v cmc+IgorKy5hbGlnbgk2NAorK19fXworKworKyMgRVhDRVBUSU9OX0RJU1BPU0lUSU9OIGhhbmRs ZXIgKEVYQ0VQVElPTl9SRUNPUkQgKnJlYyxVTE9ORzY0IGZyYW1lLAorKyMJCUNPTlRFWFQgKmNv bnRleHQsRElTUEFUQ0hFUl9DT05URVhUICpkaXNwKQorK2lmICgkd2luNjQpIHsKKyskcmVjPSIl cmN4IjsKKyskZnJhbWU9IiVyZHgiOworKyRjb250ZXh0PSIlcjgiOworKyRkaXNwPSIlcjkiOwor KworKyRjb2RlLj08PF9fXzsKKysuZXh0ZXJuCV9faW1wX1J0bFZpcnR1YWxVbndpbmQKKysudHlw ZQljYmNfc2VfaGFuZGxlcixcQGFiaS1vbW5pcG90ZW50CisrLmFsaWduCTE2CisrY2JjX3NlX2hh bmRsZXI6CisrCXB1c2gJJXJzaQorKwlwdXNoCSVyZGkKKysJcHVzaAklcmJ4CisrCXB1c2gJJXJi cAorKwlwdXNoCSVyMTIKKysJcHVzaAklcjEzCisrCXB1c2gJJXIxNAorKwlwdXNoCSVyMTUKKysJ cHVzaGZxCisrCXN1YglcJDY0LCVyc3AKKysKKysJbW92CTE1MigkY29udGV4dCksJXJheAkjIHB1 bGwgY29udGV4dC0+UnNwCisrCW1vdgkyNDgoJGNvbnRleHQpLCVyYngJIyBwdWxsIGNvbnRleHQt PlJpcAorKworKwlsZWEJLkxjYmNfZGVjcnlwdCglcmlwKSwlcjEwCisrCWNtcAklcjEwLCVyYngJ CSMgY29udGV4dC0+UmlwPCJwcm9sb2d1ZSIgbGFiZWwKKysJamIJLkxpbl9wcm9sb2d1ZQorKwor KwlsZWEJLkxjYmNfZGVjcnlwdF9ib2R5KCVyaXApLCVyMTAKKysJY21wCSVyMTAsJXJieAkJIyBj b250ZXh0LT5SaXA8Y2JjX2RlY3J5cHRfYm9keQorKwlqYgkuTHJlc3RvcmVfcmF4CisrCisrCWxl YQkuTGNiY19yZXQoJXJpcCksJXIxMAorKwljbXAJJXIxMCwlcmJ4CQkjIGNvbnRleHQtPlJpcD49 ImVwaWxvZ3VlIiBsYWJlbAorKwlqYWUJLkxpbl9wcm9sb2d1ZQorKworKwlsZWEJMCglcmF4KSwl cnNpCQkjIHRvcCBvZiBzdGFjaworKwlsZWEJNTEyKCRjb250ZXh0KSwlcmRpCSMgJmNvbnRleHQu WG1tNgorKwltb3YJXCQ4LCVlY3gJCSMgNCpzaXplb2YoJXhtbTApL3NpemVvZiglcmF4KQorKwku bG9uZwkweGE1NDhmM2ZjCQkjIGNsZDsgcmVwIG1vdnNxCisrCWxlYQkweDU4KCVyYXgpLCVyYXgJ CSMgYWRqdXN0IHN0YWNrIHBvaW50ZXIKKysJam1wCS5MaW5fcHJvbG9ndWUKKysKKysuTHJlc3Rv cmVfcmF4OgorKwltb3YJMTIwKCRjb250ZXh0KSwlcmF4CisrLkxpbl9wcm9sb2d1ZToKKysJbW92 CTgoJXJheCksJXJkaQorKwltb3YJMTYoJXJheCksJXJzaQorKwltb3YJJXJheCwxNTIoJGNvbnRl eHQpCSMgcmVzdG9yZSBjb250ZXh0LT5Sc3AKKysJbW92CSVyc2ksMTY4KCRjb250ZXh0KQkjIHJl c3RvcmUgY29udGV4dC0+UnNpCisrCW1vdgklcmRpLDE3NigkY29udGV4dCkJIyByZXN0b3JlIGNv bnRleHQtPlJkaQorKworKwlqbXAJLkxjb21tb25fc2VoX2V4aXQKKysuc2l6ZQljYmNfc2VfaGFu ZGxlciwuLWNiY19zZV9oYW5kbGVyCisrCisrLnR5cGUJZWNiX3NlX2hhbmRsZXIsXEBhYmktb21u aXBvdGVudAorKy5hbGlnbgkxNgorK2VjYl9zZV9oYW5kbGVyOgorKwlwdXNoCSVyc2kKKysJcHVz aAklcmRpCisrCXB1c2gJJXJieAorKwlwdXNoCSVyYnAKKysJcHVzaAklcjEyCisrCXB1c2gJJXIx MworKwlwdXNoCSVyMTQKKysJcHVzaAklcjE1CisrCXB1c2hmcQorKwlzdWIJXCQ2NCwlcnNwCisr CisrCW1vdgkxNTIoJGNvbnRleHQpLCVyYXgJIyBwdWxsIGNvbnRleHQtPlJzcAorKwltb3YJOCgl cmF4KSwlcmRpCisrCW1vdgkxNiglcmF4KSwlcnNpCisrCW1vdgklcnNpLDE2OCgkY29udGV4dCkJ IyByZXN0b3JlIGNvbnRleHQtPlJzaQorKwltb3YJJXJkaSwxNzYoJGNvbnRleHQpCSMgcmVzdG9y ZSBjb250ZXh0LT5SZGkKKysKKysuTGNvbW1vbl9zZWhfZXhpdDoKKysKKysJbW92CTQwKCRkaXNw KSwlcmRpCQkjIGRpc3AtPkNvbnRleHRSZWNvcmQKKysJbW92CSRjb250ZXh0LCVyc2kJCSMgY29u dGV4dAorKwltb3YJXCQxNTQsJWVjeAkJIyBzaXplb2YoQ09OVEVYVCkKKysJLmxvbmcJMHhhNTQ4 ZjNmYwkJIyBjbGQ7IHJlcCBtb3ZzcQorKworKwltb3YJJGRpc3AsJXJzaQorKwl4b3IJJXJjeCwl cmN4CQkjIGFyZzEsIFVOV19GTEFHX05IQU5ETEVSCisrCW1vdgk4KCVyc2kpLCVyZHgJCSMgYXJn MiwgZGlzcC0+SW1hZ2VCYXNlCisrCW1vdgkwKCVyc2kpLCVyOAkJIyBhcmczLCBkaXNwLT5Db250 cm9sUGMKKysJbW92CTE2KCVyc2kpLCVyOQkJIyBhcmc0LCBkaXNwLT5GdW5jdGlvbkVudHJ5Cisr CW1vdgk0MCglcnNpKSwlcjEwCQkjIGRpc3AtPkNvbnRleHRSZWNvcmQKKysJbGVhCTU2KCVyc2kp LCVyMTEJCSMgJmRpc3AtPkhhbmRsZXJEYXRhCisrCWxlYQkyNCglcnNpKSwlcjEyCQkjICZkaXNw LT5Fc3RhYmxpc2hlckZyYW1lCisrCW1vdgklcjEwLDMyKCVyc3ApCQkjIGFyZzUKKysJbW92CSVy MTEsNDAoJXJzcCkJCSMgYXJnNgorKwltb3YJJXIxMiw0OCglcnNwKQkJIyBhcmc3CisrCW1vdgkl cmN4LDU2KCVyc3ApCQkjIGFyZzgsIChOVUxMKQorKwljYWxsCSpfX2ltcF9SdGxWaXJ0dWFsVW53 aW5kKCVyaXApCisrCisrCW1vdglcJDEsJWVheAkJIyBFeGNlcHRpb25Db250aW51ZVNlYXJjaAor KwlhZGQJXCQ2NCwlcnNwCisrCXBvcGZxCisrCXBvcAklcjE1CisrCXBvcAklcjE0CisrCXBvcAkl cjEzCisrCXBvcAklcjEyCisrCXBvcAklcmJwCisrCXBvcAklcmJ4CisrCXBvcAklcmRpCisrCXBv cAklcnNpCisrCXJldAorKy5zaXplCWNiY19zZV9oYW5kbGVyLC4tY2JjX3NlX2hhbmRsZXIKKysK Kysuc2VjdGlvbgkucGRhdGEKKysuYWxpZ24JNAorKwkucnZhCS5MU0VIX2JlZ2luXyR7UFJFRklY fV9lY2JfZW5jcnlwdAorKwkucnZhCS5MU0VIX2VuZF8ke1BSRUZJWH1fZWNiX2VuY3J5cHQKKysJ LnJ2YQkuTFNFSF9pbmZvX2VjYgorKworKwkucnZhCS5MU0VIX2JlZ2luXyR7UFJFRklYfV9jYmNf ZW5jcnlwdAorKwkucnZhCS5MU0VIX2VuZF8ke1BSRUZJWH1fY2JjX2VuY3J5cHQKKysJLnJ2YQku TFNFSF9pbmZvX2NiYworKworKwkucnZhCSR7UFJFRklYfV9zZXRfZGVjcnlwdF9rZXkKKysJLnJ2 YQkuTFNFSF9lbmRfc2V0X2RlY3J5cHRfa2V5CisrCS5ydmEJLkxTRUhfaW5mb19rZXkKKysKKysJ LnJ2YQkke1BSRUZJWH1fc2V0X2VuY3J5cHRfa2V5CisrCS5ydmEJLkxTRUhfZW5kX3NldF9lbmNy eXB0X2tleQorKwkucnZhCS5MU0VIX2luZm9fa2V5CisrLnNlY3Rpb24JLnhkYXRhCisrLmFsaWdu CTgKKysuTFNFSF9pbmZvX2VjYjoKKysJLmJ5dGUJOSwwLDAsMAorKwkucnZhCWVjYl9zZV9oYW5k bGVyCisrLkxTRUhfaW5mb19jYmM6CisrCS5ieXRlCTksMCwwLDAKKysJLnJ2YQljYmNfc2VfaGFu ZGxlcgorKy5MU0VIX2luZm9fa2V5OgorKwkuYnl0ZQkweDAxLDB4MDQsMHgwMSwweDAwCisrCS5i eXRlCTB4MDQsMHgwMiwweDAwLDB4MDAKKytfX18KKyt9CisrCisrc3ViIHJleCB7CisrIGxvY2Fs ICpvcGNvZGU9c2hpZnQ7CisrIG15ICgkZHN0LCRzcmMpPUBfOworKworKyAgIGlmICgkZHN0Pj04 IHx8ICRzcmM+PTgpIHsKKysJJHJleD0weDQwOworKwkkcmV4fD0weDA0IGlmKCRkc3Q+PTgpOwor KwkkcmV4fD0weDAxIGlmKCRzcmM+PTgpOworKwlwdXNoIEBvcGNvZGUsJHJleDsKKysgICB9Cisr fQorKworK3N1YiBhZXNuaSB7CisrICBteSAkbGluZT1zaGlmdDsKKysgIG15IEBvcGNvZGU9KDB4 NjYpOworKworKyAgICBpZiAoJGxpbmU9fi8oYWVza2V5Z2VuYXNzaXN0KVxzK1wkKFt4MC05YS1m XSspLFxzKiV4bW0oWzAtOV0rKSxccyoleG1tKFswLTldKykvKSB7CisrCXJleChcQG9wY29kZSwk NCwkMyk7CisrCXB1c2ggQG9wY29kZSwweDBmLDB4M2EsMHhkZjsKKysJcHVzaCBAb3Bjb2RlLDB4 YzB8KCQzJjcpfCgoJDQmNyk8PDMpOwkjIE1vZFIvTQorKwlteSAkYz0kMjsKKysJcHVzaCBAb3Bj b2RlLCRjPX4vXjAvP29jdCgkYyk6JGM7CisrCXJldHVybiAiLmJ5dGVcdCIuam9pbignLCcsQG9w Y29kZSk7CisrICAgIH0KKysgICAgZWxzaWYgKCRsaW5lPX4vKGFlc1thLXpdKylccysleG1tKFsw LTldKyksXHMqJXhtbShbMC05XSspLykgeworKwlteSAlb3Bjb2RlbGV0ID0gKAorKwkJImFlc2lt YyIgPT4gMHhkYiwKKysJCSJhZXNlbmMiID0+IDB4ZGMsCSJhZXNlbmNsYXN0IiA9PiAweGRkLAor KwkJImFlc2RlYyIgPT4gMHhkZSwJImFlc2RlY2xhc3QiID0+IDB4ZGYKKysJKTsKKysJcmV0dXJu IHVuZGVmIGlmICghZGVmaW5lZCgkb3Bjb2RlbGV0eyQxfSkpOworKwlyZXgoXEBvcGNvZGUsJDMs JDIpOworKwlwdXNoIEBvcGNvZGUsMHgwZiwweDM4LCRvcGNvZGVsZXR7JDF9OworKwlwdXNoIEBv cGNvZGUsMHhjMHwoJDImNyl8KCgkMyY3KTw8Myk7CSMgTW9kUi9NCisrCXJldHVybiAiLmJ5dGVc dCIuam9pbignLCcsQG9wY29kZSk7CisrICAgIH0KKysgICAgcmV0dXJuICRsaW5lOworK30KKysK KyskY29kZSA9fiBzL1xgKFteXGBdKilcYC9ldmFsKCQxKS9nZW07CisrJGNvZGUgPX4gcy9cYihh ZXMuKiV4bW1bMC05XSspLiokL2Flc25pKCQxKS9nZW07CisrCisrcHJpbnQgJGNvZGU7CisrCisr Y2xvc2UgU1RET1VUOworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMGIvY3J5cHRvL2Flcy9NYWtlZmls ZS5hZXNuaSBvcGVuc3NsLTEuMC4wYi9jcnlwdG8vYWVzL01ha2VmaWxlCistLS0gb3BlbnNzbC0x LjAuMGIvY3J5cHRvL2Flcy9NYWtlZmlsZS5hZXNuaQkyMDA4LTEyLTIzIDEyOjMzOjAwLjAwMDAw MDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjBiL2NyeXB0by9hZXMvTWFrZWZpbGUJMjAxMC0x MS0xNiAxNzozMzoyMy4wMDAwMDAwMDAgKzAxMDAKK0BAIC01MCw5ICs1MCwxMyBAQCBhZXMtaWE2 NC5zOiBhc20vYWVzLWlhNjQuUworIAorIGFlcy01ODYuczoJYXNtL2Flcy01ODYucGwgLi4vcGVy bGFzbS94ODZhc20ucGwKKyAJJChQRVJMKSBhc20vYWVzLTU4Ni5wbCAkKFBFUkxBU01fU0NIRU1F KSAkKENGTEFHUykgJChQUk9DRVNTT1IpID4gJEAKKythZXNuaS14ODYuczoJYXNtL2Flc25pLXg4 Ni5wbCAuLi9wZXJsYXNtL3g4NmFzbS5wbAorKwkkKFBFUkwpIGFzbS9hZXNuaS14ODYucGwgJChQ RVJMQVNNX1NDSEVNRSkgJChDRkxBR1MpICQoUFJPQ0VTU09SKSA+ICRACisgCisgYWVzLXg4Nl82 NC5zOiBhc20vYWVzLXg4Nl82NC5wbAorIAkkKFBFUkwpIGFzbS9hZXMteDg2XzY0LnBsICQoUEVS TEFTTV9TQ0hFTUUpID4gJEAKKythZXNuaS14ODZfNjQuczogYXNtL2Flc25pLXg4Nl82NC5wbAor KwkkKFBFUkwpIGFzbS9hZXNuaS14ODZfNjQucGwgJChQRVJMQVNNX1NDSEVNRSkgPiAkQAorIAor IGFlcy1zcGFyY3Y5LnM6IGFzbS9hZXMtc3BhcmN2OS5wbAorIAkkKFBFUkwpIGFzbS9hZXMtc3Bh cmN2OS5wbCAkKENGTEFHUykgPiAkQAorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMGIvY3J5cHRvL2Vu Z2luZS9lbmdfYWVzbmkuYy5hZXNuaSBvcGVuc3NsLTEuMC4wYi9jcnlwdG8vZW5naW5lL2VuZ19h ZXNuaS5jCistLS0gb3BlbnNzbC0xLjAuMGIvY3J5cHRvL2VuZ2luZS9lbmdfYWVzbmkuYy5hZXNu aQkyMDEwLTExLTE2IDE3OjMzOjIzLjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjBi L2NyeXB0by9lbmdpbmUvZW5nX2Flc25pLmMJMjAxMC0xMS0xNiAxNzozMzoyMy4wMDAwMDAwMDAg KzAxMDAKK0BAIC0wLDAgKzEsNDEzIEBACisrLyoKKysgKiBTdXBwb3J0IGZvciBJbnRlbCBBRVMt TkkgaW50cnVjdGlvbiBzZXQKKysgKiAgIEF1dGhvcjogSHVhbmcgWWluZyA8eWluZy5odWFuZ0Bp bnRlbC5jb20+CisrICoKKysgKiBJbnRlbCBBRVMtTkkgaXMgYSBuZXcgc2V0IG9mIFNpbmdsZSBJ bnN0cnVjdGlvbiBNdWx0aXBsZSBEYXRhCisrICogKFNJTUQpIGluc3RydWN0aW9ucyB0aGF0IGFy ZSBnb2luZyB0byBiZSBpbnRyb2R1Y2VkIGluIHRoZSBuZXh0CisrICogZ2VuZXJhdGlvbiBvZiBJ bnRlbCBwcm9jZXNzb3IsIGFzIG9mIDIwMDkuIFRoZXNlIGluc3RydWN0aW9ucworKyAqIGVuYWJs ZSBmYXN0IGFuZCBzZWN1cmUgZGF0YSBlbmNyeXB0aW9uIGFuZCBkZWNyeXB0aW9uLCB1c2luZyB0 aGUKKysgKiBBZHZhbmNlZCBFbmNyeXB0aW9uIFN0YW5kYXJkIChBRVMpLCBkZWZpbmVkIGJ5IEZJ UFMgUHVibGljYXRpb24KKysgKiBudW1iZXIgMTk3LiAgVGhlIGFyY2hpdGVjdHVyZSBpbnRyb2R1 Y2VzIHNpeCBpbnN0cnVjdGlvbnMgdGhhdAorKyAqIG9mZmVyIGZ1bGwgaGFyZHdhcmUgc3VwcG9y dCBmb3IgQUVTLiBGb3VyIG9mIHRoZW0gc3VwcG9ydCBoaWdoCisrICogcGVyZm9ybWFuY2UgZGF0 YSBlbmNyeXB0aW9uIGFuZCBkZWNyeXB0aW9uLCBhbmQgdGhlIG90aGVyIHR3bworKyAqIGluc3Ry dWN0aW9ucyBzdXBwb3J0IHRoZSBBRVMga2V5IGV4cGFuc2lvbiBwcm9jZWR1cmUuCisrICoKKysg KiBUaGUgd2hpdGUgcGFwZXIgY2FuIGJlIGRvd25sb2FkZWQgZnJvbToKKysgKiAgIGh0dHA6Ly9z b2Z0d2FyZWNvbW11bml0eS5pbnRlbC5jb20vaXNuL2Rvd25sb2Fkcy9pbnRlbGF2eC9BRVMtSW5z dHJ1Y3Rpb25zLVNldF9XUC5wZGYKKysgKgorKyAqIFRoaXMgZmlsZSBpcyBiYXNlZCBvbiBlbmdp bmVzL2VfcGFkbG9jay5jCisrICovCisrCisrLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysgKiBDb3B5cmlnaHQg KGMpIDE5OTktMjAwMSBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K KysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y bXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92 aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6CisrICoKKysg KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl IGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKysgKgorKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAgbm90 aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy IGluCisrICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92 aWRlZCB3aXRoIHRoZQorKyAqICAgIGRpc3RyaWJ1dGlvbi4KKysgKgorKyAqIDMuIEFsbCBhZHZl cnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcworKyAq ICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50Ogor KyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBP cGVuU1NMIFByb2plY3QKKysgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuICho dHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCisrICoKKysgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wg VG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KKysgKiAg ICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUg d2l0aG91dAorKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVy bWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKKysgKiAgICBsaWNlbnNpbmdAT3BlblNTTC5vcmcuCisr ICoKKysgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJl IGNhbGxlZCAiT3BlblNTTCIKKysgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhl aXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCisrICogICAgcGVybWlzc2lvbiBvZiB0aGUg T3BlblNTTCBQcm9qZWN0LgorKyAqCisrICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3Jt IHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZworKyAqICAgIGFja25vd2xlZGdt ZW50OgorKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5 IHRoZSBPcGVuU1NMIFByb2plY3QKKysgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xr aXQgKGh0dHA6Ly93d3cuT3BlblNTTC5vcmcvKSIKKysgKgorKyAqIFRISVMgU09GVFdBUkUgSVMg UFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQorKyAqIEVY UFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE IFRPLCBUSEUKKysgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKysgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g Tk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgorKyAqIElUUyBDT05UUklCVVRP UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKysgKiBT UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC VVQKKysgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP UiBTRVJWSUNFUzsKKysgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F U1MgSU5URVJSVVBUSU9OKQorKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKKysgKiBTVFJJQ1QgTElBQklMSVRZLCBP UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisrICogQVJJU0lORyBJ TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF RAorKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKysgKiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorKyAqCisrICogVGhpcyBwcm9kdWN0IGluY2x1ZGVzIGNyeXB0b2dyYXBoaWMgc29mdHdhcmUg d3JpdHRlbiBieSBFcmljIFlvdW5nCisrICogKGVheUBjcnlwdHNvZnQuY29tKS4gIFRoaXMgcHJv ZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSB3cml0dGVuIGJ5IFRpbQorKyAqIEh1ZHNvbiAodGpoQGNy eXB0c29mdC5jb20pLgorKyAqCisrICovCisrCisrCisrI2luY2x1ZGUgPG9wZW5zc2wvb3BlbnNz bGNvbmYuaD4KKysKKysjaWYgIWRlZmluZWQoT1BFTlNTTF9OT19IVykgJiYgIWRlZmluZWQoT1BF TlNTTF9OT19IV19BRVNfTkkpICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fQUVTKQorKworKyNpbmNs dWRlIDxzdGRpby5oPgorKyNpbmNsdWRlICJjcnlwdGxpYi5oIgorKyNpbmNsdWRlIDxvcGVuc3Ns L2Rzby5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2VuZ2luZS5oPgorKyNpbmNsdWRlIDxvcGVuc3Ns L2V2cC5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2Flcy5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2Vy ci5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL21vZGVzLmg+CisrCisrLyogQUVTLU5JIGlzIGF2YWls YWJsZSAqT05MWSogb24gc29tZSB4ODYgQ1BVcy4gIE5vdCBvbmx5IHRoYXQgaXQKKysgICBkb2Vz bid0IGV4aXN0IGVsc2V3aGVyZSwgYnV0IGl0IGV2ZW4gY2FuJ3QgYmUgY29tcGlsZWQgb24gb3Ro ZXIKKysgICBwbGF0Zm9ybXMhICovCisrI3VuZGVmIENPTVBJTEVfSFdfQUVTTkkKKysjaWYgKGRl ZmluZWQoX194ODZfNjQpIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgXAorKyAgICAgZGVmaW5l ZChfTV9BTUQ2NCkgfHwgZGVmaW5lZChfTV9YNjQpIHx8IFwKKysgICAgIGRlZmluZWQoT1BFTlNT TF9JQTMyX1NTRTIpKSAmJiAhZGVmaW5lZChPUEVOU1NMX05PX0FTTSkKKysjZGVmaW5lIENPTVBJ TEVfSFdfQUVTTkkKKytzdGF0aWMgRU5HSU5FICpFTkdJTkVfYWVzbmkgKHZvaWQpOworKyNlbmRp ZgorKworK3ZvaWQgRU5HSU5FX2xvYWRfYWVzbmkgKHZvaWQpCisreworKy8qIE9uIG5vbi14ODYg Q1BVcyBpdCBqdXN0IHJldHVybnMuICovCisrI2lmZGVmIENPTVBJTEVfSFdfQUVTTkkKKysJRU5H SU5FICp0b2FkZCA9IEVOR0lORV9hZXNuaSgpOworKwlpZiAoIXRvYWRkKQorKwkJcmV0dXJuOwor KwlFTkdJTkVfYWRkICh0b2FkZCk7CisrCUVOR0lORV9yZWdpc3Rlcl9jb21wbGV0ZSAodG9hZGQp OworKwlFTkdJTkVfZnJlZSAodG9hZGQpOworKwlFUlJfY2xlYXJfZXJyb3IgKCk7CisrI2VuZGlm CisrfQorKworKyNpZmRlZiBDT01QSUxFX0hXX0FFU05JCisraW50IGFlc25pX3NldF9lbmNyeXB0 X2tleShjb25zdCB1bnNpZ25lZCBjaGFyICp1c2VyS2V5LCBpbnQgYml0cywKKysJCQkgICAgICBB RVNfS0VZICprZXkpOworK2ludCBhZXNuaV9zZXRfZGVjcnlwdF9rZXkoY29uc3QgdW5zaWduZWQg Y2hhciAqdXNlcktleSwgaW50IGJpdHMsCisrCQkJICAgICAgQUVTX0tFWSAqa2V5KTsKKysKKyt2 b2lkIGFlc25pX2VuY3J5cHQoY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHVuc2lnbmVkIGNoYXIg Km91dCwKKysJCSAgICAgICBjb25zdCBBRVNfS0VZICprZXkpOworK3ZvaWQgYWVzbmlfZGVjcnlw dChjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgdW5zaWduZWQgY2hhciAqb3V0LAorKwkJICAgICAg IGNvbnN0IEFFU19LRVkgKmtleSk7CisrCisrdm9pZCBhZXNuaV9lY2JfZW5jcnlwdChjb25zdCB1 bnNpZ25lZCBjaGFyICppbiwKKysJCQkgICB1bnNpZ25lZCBjaGFyICpvdXQsCisrCQkJICAgc2l6 ZV90IGxlbmd0aCwKKysJCQkgICBjb25zdCBBRVNfS0VZICprZXksCisrCQkJICAgaW50IGVuYyk7 Cisrdm9pZCBhZXNuaV9jYmNfZW5jcnlwdChjb25zdCB1bnNpZ25lZCBjaGFyICppbiwKKysJCQkg ICB1bnNpZ25lZCBjaGFyICpvdXQsCisrCQkJICAgc2l6ZV90IGxlbmd0aCwKKysJCQkgICBjb25z dCBBRVNfS0VZICprZXksCisrCQkJICAgdW5zaWduZWQgY2hhciAqaXZlYywgaW50IGVuYyk7Cisr CisrLyogRnVuY3Rpb24gZm9yIEVOR0lORSBkZXRlY3Rpb24gYW5kIGNvbnRyb2wgKi8KKytzdGF0 aWMgaW50IGFlc25pX2luaXQoRU5HSU5FICplKTsKKysKKysvKiBDaXBoZXIgU3R1ZmYgKi8KKytz dGF0aWMgaW50IGFlc25pX2NpcGhlcnMoRU5HSU5FICplLCBjb25zdCBFVlBfQ0lQSEVSICoqY2lw aGVyLAorKwkJCQljb25zdCBpbnQgKipuaWRzLCBpbnQgbmlkKTsKKysKKysjZGVmaW5lIEFFU05J X01JTl9BTElHTgkxNgorKyNkZWZpbmUgQUVTTklfQUxJR04oeCkgXAorKwkoKHZvaWQgKikoKCh1 bnNpZ25lZCBsb25nKSh4KStBRVNOSV9NSU5fQUxJR04tMSkmfihBRVNOSV9NSU5fQUxJR04tMSkp KQorKworKy8qIEVuZ2luZSBuYW1lcyAqLworK3N0YXRpYyBjb25zdCBjaGFyICAgYWVzbmlfaWRb XSA9ICJhZXNuaSIsCisrCQkgICAgYWVzbmlfbmFtZVtdID0gIkludGVsIEFFUy1OSSBlbmdpbmUi LAorKwkJICAgIG5vX2Flc25pX25hbWVbXSA9ICJJbnRlbCBBRVMtTkkgZW5naW5lIChuby1hZXNu aSkiOworKworKy8qID09PT09IEVuZ2luZSAibWFuYWdlbWVudCIgZnVuY3Rpb25zID09PT09ICov CisrCisrI2lmIGRlZmluZWQoX1dJTjMyKQorK3R5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCBJQTMy Q0FQOworKyNlbHNlCisrdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgSUEzMkNBUDsKKysjZW5k aWYKKysKKysvKiBQcmVwYXJlIHRoZSBFTkdJTkUgc3RydWN0dXJlIGZvciByZWdpc3RyYXRpb24g Ki8KKytzdGF0aWMgaW50CisrYWVzbmlfYmluZF9oZWxwZXIoRU5HSU5FICplKQorK3sKKysJaW50 IGVuZ2FnZTsKKysJaWYgKHNpemVvZihPUEVOU1NMX2lhMzJjYXBfUCkgPiA0KSB7CisrCQllbmdh Z2UgPSAoT1BFTlNTTF9pYTMyY2FwX1AgPj4gNTcpICYgMTsKKysJfSBlbHNlIHsKKysJCUlBMzJD QVAgT1BFTlNTTF9pYTMyX2NwdWlkKHZvaWQpOworKwkJZW5nYWdlID0gKE9QRU5TU0xfaWEzMl9j cHVpZCgpID4+IDU3KSAmIDE7CisrCX0KKysKKysJLyogUmVnaXN0ZXIgZXZlcnl0aGluZyBvciBy ZXR1cm4gd2l0aCBhbiBlcnJvciAqLworKwlpZiAoIUVOR0lORV9zZXRfaWQoZSwgYWVzbmlfaWQp IHx8CisrCSAgICAhRU5HSU5FX3NldF9uYW1lKGUsIGVuZ2FnZSA/IGFlc25pX25hbWUgOiBub19h ZXNuaV9uYW1lKSB8fAorKworKwkgICAgIUVOR0lORV9zZXRfaW5pdF9mdW5jdGlvbihlLCBhZXNu aV9pbml0KSB8fAorKwkgICAgKGVuZ2FnZSAmJiAhRU5HSU5FX3NldF9jaXBoZXJzIChlLCBhZXNu aV9jaXBoZXJzKSkKKysJICAgICkKKysJCXJldHVybiAwOworKworKwkvKiBFdmVyeXRoaW5nIGxv b2tzIGdvb2QgKi8KKysJcmV0dXJuIDE7CisrfQorKworKy8qIENvbnN0cnVjdG9yICovCisrc3Rh dGljIEVOR0lORSAqCisrRU5HSU5FX2Flc25pKHZvaWQpCisreworKwlFTkdJTkUgKmVuZyA9IEVO R0lORV9uZXcoKTsKKysKKysJaWYgKCFlbmcpIHsKKysJCXJldHVybiBOVUxMOworKwl9CisrCisr CWlmICghYWVzbmlfYmluZF9oZWxwZXIoZW5nKSkgeworKwkJRU5HSU5FX2ZyZWUoZW5nKTsKKysJ CXJldHVybiBOVUxMOworKwl9CisrCisrCXJldHVybiBlbmc7CisrfQorKworKy8qIENoZWNrIGF2 YWlsYWJpbGl0eSBvZiB0aGUgZW5naW5lICovCisrc3RhdGljIGludAorK2Flc25pX2luaXQoRU5H SU5FICplKQorK3sKKysJcmV0dXJuIDE7CisrfQorKworKyNpZiBkZWZpbmVkKE5JRF9hZXNfMTI4 X2NmYjEyOCkgJiYgISBkZWZpbmVkIChOSURfYWVzXzEyOF9jZmIpCisrI2RlZmluZSBOSURfYWVz XzEyOF9jZmIJTklEX2Flc18xMjhfY2ZiMTI4CisrI2VuZGlmCisrCisrI2lmIGRlZmluZWQoTklE X2Flc18xMjhfb2ZiMTI4KSAmJiAhIGRlZmluZWQgKE5JRF9hZXNfMTI4X29mYikKKysjZGVmaW5l IE5JRF9hZXNfMTI4X29mYglOSURfYWVzXzEyOF9vZmIxMjgKKysjZW5kaWYKKysKKysjaWYgZGVm aW5lZChOSURfYWVzXzE5Ml9jZmIxMjgpICYmICEgZGVmaW5lZCAoTklEX2Flc18xOTJfY2ZiKQor KyNkZWZpbmUgTklEX2Flc18xOTJfY2ZiCU5JRF9hZXNfMTkyX2NmYjEyOAorKyNlbmRpZgorKwor KyNpZiBkZWZpbmVkKE5JRF9hZXNfMTkyX29mYjEyOCkgJiYgISBkZWZpbmVkIChOSURfYWVzXzE5 Ml9vZmIpCisrI2RlZmluZSBOSURfYWVzXzE5Ml9vZmIJTklEX2Flc18xOTJfb2ZiMTI4CisrI2Vu ZGlmCisrCisrI2lmIGRlZmluZWQoTklEX2Flc18yNTZfY2ZiMTI4KSAmJiAhIGRlZmluZWQgKE5J RF9hZXNfMjU2X2NmYikKKysjZGVmaW5lIE5JRF9hZXNfMjU2X2NmYglOSURfYWVzXzI1Nl9jZmIx MjgKKysjZW5kaWYKKysKKysjaWYgZGVmaW5lZChOSURfYWVzXzI1Nl9vZmIxMjgpICYmICEgZGVm aW5lZCAoTklEX2Flc18yNTZfb2ZiKQorKyNkZWZpbmUgTklEX2Flc18yNTZfb2ZiCU5JRF9hZXNf MjU2X29mYjEyOAorKyNlbmRpZgorKworKy8qIExpc3Qgb2Ygc3VwcG9ydGVkIGNpcGhlcnMuICov Cisrc3RhdGljIGludCBhZXNuaV9jaXBoZXJfbmlkc1tdID0geworKwlOSURfYWVzXzEyOF9lY2Is CisrCU5JRF9hZXNfMTI4X2NiYywKKysJTklEX2Flc18xMjhfY2ZiLAorKwlOSURfYWVzXzEyOF9v ZmIsCisrCisrCU5JRF9hZXNfMTkyX2VjYiwKKysJTklEX2Flc18xOTJfY2JjLAorKwlOSURfYWVz XzE5Ml9jZmIsCisrCU5JRF9hZXNfMTkyX29mYiwKKysKKysJTklEX2Flc18yNTZfZWNiLAorKwlO SURfYWVzXzI1Nl9jYmMsCisrCU5JRF9hZXNfMjU2X2NmYiwKKysJTklEX2Flc18yNTZfb2ZiLAor K307Cisrc3RhdGljIGludCBhZXNuaV9jaXBoZXJfbmlkc19udW0gPQorKwkoc2l6ZW9mKGFlc25p X2NpcGhlcl9uaWRzKS9zaXplb2YoYWVzbmlfY2lwaGVyX25pZHNbMF0pKTsKKysKKyt0eXBlZGVm IHN0cnVjdAorK3sKKysJQUVTX0tFWSBrczsKKysJdW5zaWduZWQgaW50IF9wYWQxWzNdOworK30g QUVTTklfS0VZOworKworK3N0YXRpYyBpbnQKKythZXNuaV9pbml0X2tleShFVlBfQ0lQSEVSX0NU WCAqY3R4LCBjb25zdCB1bnNpZ25lZCBjaGFyICp1c2VyX2tleSwKKysJCSAgICBjb25zdCB1bnNp Z25lZCBjaGFyICppdiwgaW50IGVuYykKKyt7CisrCWludCByZXQ7CisrCUFFU19LRVkgKmtleSA9 IEFFU05JX0FMSUdOKGN0eC0+Y2lwaGVyX2RhdGEpOworKworKwlpZiAoKGN0eC0+Y2lwaGVyLT5m bGFncyAmIEVWUF9DSVBIX01PREUpID09IEVWUF9DSVBIX0NGQl9NT0RFCisrCSAgICB8fCAoY3R4 LT5jaXBoZXItPmZsYWdzICYgRVZQX0NJUEhfTU9ERSkgPT0gRVZQX0NJUEhfT0ZCX01PREUKKysJ ICAgIHx8IGVuYykKKysJCXJldD1hZXNuaV9zZXRfZW5jcnlwdF9rZXkodXNlcl9rZXksIGN0eC0+ a2V5X2xlbiAqIDgsIGtleSk7CisrCWVsc2UKKysJCXJldD1hZXNuaV9zZXRfZGVjcnlwdF9rZXko dXNlcl9rZXksIGN0eC0+a2V5X2xlbiAqIDgsIGtleSk7CisrCisrCWlmKHJldCA8IDApIHsKKysJ CUVWUGVycihFVlBfRl9BRVNOSV9JTklUX0tFWSxFVlBfUl9BRVNfS0VZX1NFVFVQX0ZBSUxFRCk7 CisrCQlyZXR1cm4gMDsKKysJfQorKworKwlyZXR1cm4gMTsKKyt9CisrCisrc3RhdGljIGludCBh ZXNuaV9jaXBoZXJfZWNiKEVWUF9DSVBIRVJfQ1RYICpjdHgsIHVuc2lnbmVkIGNoYXIgKm91dCwK KysJCSBjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgc2l6ZV90IGlubCkKKyt7CUFFU19LRVkgKmtl eSA9IEFFU05JX0FMSUdOKGN0eC0+Y2lwaGVyX2RhdGEpOworKwlhZXNuaV9lY2JfZW5jcnlwdChp biwgb3V0LCBpbmwsIGtleSwgY3R4LT5lbmNyeXB0KTsKKysJcmV0dXJuIDE7CisrfQorK3N0YXRp YyBpbnQgYWVzbmlfY2lwaGVyX2NiYyhFVlBfQ0lQSEVSX0NUWCAqY3R4LCB1bnNpZ25lZCBjaGFy ICpvdXQsCisrCQkgY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHNpemVfdCBpbmwpCisrewlBRVNf S0VZICprZXkgPSBBRVNOSV9BTElHTihjdHgtPmNpcGhlcl9kYXRhKTsKKysJYWVzbmlfY2JjX2Vu Y3J5cHQoaW4sIG91dCwgaW5sLCBrZXksCisrCQkJICAgICAgY3R4LT5pdiwgY3R4LT5lbmNyeXB0 KTsKKysJcmV0dXJuIDE7CisrfQorK3N0YXRpYyBpbnQgYWVzbmlfY2lwaGVyX2NmYihFVlBfQ0lQ SEVSX0NUWCAqY3R4LCB1bnNpZ25lZCBjaGFyICpvdXQsCisrCQkgY29uc3QgdW5zaWduZWQgY2hh ciAqaW4sIHNpemVfdCBpbmwpCisrewlBRVNfS0VZICprZXkgPSBBRVNOSV9BTElHTihjdHgtPmNp cGhlcl9kYXRhKTsKKysJQ1JZUFRPX2NmYjEyOF9lbmNyeXB0KGluLCBvdXQsIGlubCwga2V5LCBj dHgtPml2LAorKwkJCQkmY3R4LT5udW0sIGN0eC0+ZW5jcnlwdCwKKysJCQkJKGJsb2NrMTI4X2Yp YWVzbmlfZW5jcnlwdCk7CisrCXJldHVybiAxOworK30KKytzdGF0aWMgaW50IGFlc25pX2NpcGhl cl9vZmIoRVZQX0NJUEhFUl9DVFggKmN0eCwgdW5zaWduZWQgY2hhciAqb3V0LAorKwkJIGNvbnN0 IHVuc2lnbmVkIGNoYXIgKmluLCBzaXplX3QgaW5sKQorK3sJQUVTX0tFWSAqa2V5ID0gQUVTTklf QUxJR04oY3R4LT5jaXBoZXJfZGF0YSk7CisrCUNSWVBUT19vZmIxMjhfZW5jcnlwdChpbiwgb3V0 LCBpbmwsIGtleSwgY3R4LT5pdiwKKysJCQkJJmN0eC0+bnVtLCAoYmxvY2sxMjhfZilhZXNuaV9l bmNyeXB0KTsKKysJcmV0dXJuIDE7CisrfQorKworKyNkZWZpbmUgQUVTX0JMT0NLX1NJWkUJCTE2 CisrCisrI2RlZmluZSBFVlBfQ0lQSEVSX2Jsb2NrX3NpemVfRUNCCUFFU19CTE9DS19TSVpFCisr I2RlZmluZSBFVlBfQ0lQSEVSX2Jsb2NrX3NpemVfQ0JDCUFFU19CTE9DS19TSVpFCisrI2RlZmlu ZSBFVlBfQ0lQSEVSX2Jsb2NrX3NpemVfT0ZCCTEKKysjZGVmaW5lIEVWUF9DSVBIRVJfYmxvY2tf c2l6ZV9DRkIJMQorKworKy8qIERlY2xhcmluZyBzbyBtYW55IGNpcGhlcnMgYnkgaGFuZCB3b3Vs ZCBiZSBhIHBhaW4uCisrICAgSW5zdGVhZCBpbnRyb2R1Y2UgYSBiaXQgb2YgcHJlcHJvY2Vzc29y IG1hZ2ljIDotKSAqLworKyNkZWZpbmUJREVDTEFSRV9BRVNfRVZQKGtzaXplLGxtb2RlLHVtb2Rl KQlcCisrc3RhdGljIGNvbnN0IEVWUF9DSVBIRVIgYWVzbmlfIyNrc2l6ZSMjXyMjbG1vZGUgPSB7 CVwKKysJTklEX2Flc18jI2tzaXplIyNfIyNsbW9kZSwJCQlcCisrCUVWUF9DSVBIRVJfYmxvY2tf c2l6ZV8jI3Vtb2RlLAkJCVwKKysJa3NpemUgLyA4LAkJCQkJXAorKwlBRVNfQkxPQ0tfU0laRSwJ CQkJCVwKKysJMCB8IEVWUF9DSVBIXyMjdW1vZGUjI19NT0RFLAkJCVwKKysJYWVzbmlfaW5pdF9r ZXksCQkJCVwKKysJYWVzbmlfY2lwaGVyXyMjbG1vZGUsCQkJCVwKKysJTlVMTCwJCQkJCQlcCisr CXNpemVvZihBRVNOSV9LRVkpLAkJCQlcCisrCUVWUF9DSVBIRVJfc2V0X2FzbjFfaXYsCQkJCVwK KysJRVZQX0NJUEhFUl9nZXRfYXNuMV9pdiwJCQkJXAorKwlOVUxMLAkJCQkJCVwKKysJTlVMTAkJ CQkJCVwKKyt9CisrCisrREVDTEFSRV9BRVNfRVZQKDEyOCxlY2IsRUNCKTsKKytERUNMQVJFX0FF U19FVlAoMTI4LGNiYyxDQkMpOworK0RFQ0xBUkVfQUVTX0VWUCgxMjgsY2ZiLENGQik7CisrREVD TEFSRV9BRVNfRVZQKDEyOCxvZmIsT0ZCKTsKKysKKytERUNMQVJFX0FFU19FVlAoMTkyLGVjYixF Q0IpOworK0RFQ0xBUkVfQUVTX0VWUCgxOTIsY2JjLENCQyk7CisrREVDTEFSRV9BRVNfRVZQKDE5 MixjZmIsQ0ZCKTsKKytERUNMQVJFX0FFU19FVlAoMTkyLG9mYixPRkIpOworKworK0RFQ0xBUkVf QUVTX0VWUCgyNTYsZWNiLEVDQik7CisrREVDTEFSRV9BRVNfRVZQKDI1NixjYmMsQ0JDKTsKKytE RUNMQVJFX0FFU19FVlAoMjU2LGNmYixDRkIpOworK0RFQ0xBUkVfQUVTX0VWUCgyNTYsb2ZiLE9G Qik7CisrCisrc3RhdGljIGludAorK2Flc25pX2NpcGhlcnMgKEVOR0lORSAqZSwgY29uc3QgRVZQ X0NJUEhFUiAqKmNpcGhlciwKKysJCSAgICAgIGNvbnN0IGludCAqKm5pZHMsIGludCBuaWQpCisr eworKwkvKiBObyBzcGVjaWZpYyBjaXBoZXIgPT4gcmV0dXJuIGEgbGlzdCBvZiBzdXBwb3J0ZWQg bmlkcyAuLi4gKi8KKysJaWYgKCFjaXBoZXIpIHsKKysJCSpuaWRzID0gYWVzbmlfY2lwaGVyX25p ZHM7CisrCQlyZXR1cm4gYWVzbmlfY2lwaGVyX25pZHNfbnVtOworKwl9CisrCisrCS8qIC4uLiBv ciB0aGUgcmVxdWVzdGVkICJjaXBoZXIiIG90aGVyd2lzZSAqLworKwlzd2l0Y2ggKG5pZCkgewor KwljYXNlIE5JRF9hZXNfMTI4X2VjYjoKKysJCSpjaXBoZXIgPSAmYWVzbmlfMTI4X2VjYjsKKysJ CWJyZWFrOworKwljYXNlIE5JRF9hZXNfMTI4X2NiYzoKKysJCSpjaXBoZXIgPSAmYWVzbmlfMTI4 X2NiYzsKKysJCWJyZWFrOworKwljYXNlIE5JRF9hZXNfMTI4X2NmYjoKKysJCSpjaXBoZXIgPSAm YWVzbmlfMTI4X2NmYjsKKysJCWJyZWFrOworKwljYXNlIE5JRF9hZXNfMTI4X29mYjoKKysJCSpj aXBoZXIgPSAmYWVzbmlfMTI4X29mYjsKKysJCWJyZWFrOworKworKwljYXNlIE5JRF9hZXNfMTky X2VjYjoKKysJCSpjaXBoZXIgPSAmYWVzbmlfMTkyX2VjYjsKKysJCWJyZWFrOworKwljYXNlIE5J RF9hZXNfMTkyX2NiYzoKKysJCSpjaXBoZXIgPSAmYWVzbmlfMTkyX2NiYzsKKysJCWJyZWFrOwor KwljYXNlIE5JRF9hZXNfMTkyX2NmYjoKKysJCSpjaXBoZXIgPSAmYWVzbmlfMTkyX2NmYjsKKysJ CWJyZWFrOworKwljYXNlIE5JRF9hZXNfMTkyX29mYjoKKysJCSpjaXBoZXIgPSAmYWVzbmlfMTky X29mYjsKKysJCWJyZWFrOworKworKwljYXNlIE5JRF9hZXNfMjU2X2VjYjoKKysJCSpjaXBoZXIg PSAmYWVzbmlfMjU2X2VjYjsKKysJCWJyZWFrOworKwljYXNlIE5JRF9hZXNfMjU2X2NiYzoKKysJ CSpjaXBoZXIgPSAmYWVzbmlfMjU2X2NiYzsKKysJCWJyZWFrOworKwljYXNlIE5JRF9hZXNfMjU2 X2NmYjoKKysJCSpjaXBoZXIgPSAmYWVzbmlfMjU2X2NmYjsKKysJCWJyZWFrOworKwljYXNlIE5J RF9hZXNfMjU2X29mYjoKKysJCSpjaXBoZXIgPSAmYWVzbmlfMjU2X29mYjsKKysJCWJyZWFrOwor KworKwlkZWZhdWx0OgorKwkJLyogU29ycnksIHdlIGRvbid0IHN1cHBvcnQgdGhpcyBOSUQgKi8K KysJCSpjaXBoZXIgPSBOVUxMOworKwkJcmV0dXJuIDA7CisrCX0KKysKKysJcmV0dXJuIDE7Cisr fQorKworKyNlbmRpZiAvKiBDT01QSUxFX0hXX0FFU05JICovCisrI2VuZGlmIC8qICFkZWZpbmVk KE9QRU5TU0xfTk9fSFcpICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fSFdfQUVTTkkpICYmICFkZWZp bmVkKE9QRU5TU0xfTk9fQUVTKSAqLworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMGIvY3J5cHRvL2Vu Z2luZS9lbmdfYWxsLmMuYWVzbmkgb3BlbnNzbC0xLjAuMGIvY3J5cHRvL2VuZ2luZS9lbmdfYWxs LmMKKy0tLSBvcGVuc3NsLTEuMC4wYi9jcnlwdG8vZW5naW5lL2VuZ19hbGwuYy5hZXNuaQkyMDEw LTExLTE2IDE3OjMzOjIyLjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjBiL2NyeXB0 by9lbmdpbmUvZW5nX2FsbC5jCTIwMTAtMTEtMTYgMTc6MzM6MjMuMDAwMDAwMDAwICswMTAwCitA QCAtODUsNiArODUsOSBAQCB2b2lkIEVOR0lORV9sb2FkX2J1aWx0aW5fZW5naW5lcyh2b2lkKQor ICNpZiAhZGVmaW5lZChPUEVOU1NMX05PX0hXKSAmJiAoZGVmaW5lZChfX09wZW5CU0RfXykgfHwg ZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChIQVZFX0NSWVBUT0RFVikpCisgCUVOR0lO RV9sb2FkX2NyeXB0b2RldigpOworICNlbmRpZgorKyNpZiAhZGVmaW5lZChPUEVOU1NMX05PX0hX KSAmJiAhZGVmaW5lZChPUEVOU1NMX05PX0hXX0FFU05JKQorKwlFTkdJTkVfbG9hZF9hZXNuaSgp OworKyNlbmRpZgorIAlFTkdJTkVfbG9hZF9keW5hbWljKCk7CisgI2lmbmRlZiBPUEVOU1NMX05P X1NUQVRJQ19FTkdJTkUKKyAjaWZuZGVmIE9QRU5TU0xfTk9fSFcKK2RpZmYgLXVwIG9wZW5zc2wt MS4wLjBiL2NyeXB0by9lbmdpbmUvZW5naW5lLmguYWVzbmkgb3BlbnNzbC0xLjAuMGIvY3J5cHRv L2VuZ2luZS9lbmdpbmUuaAorLS0tIG9wZW5zc2wtMS4wLjBiL2NyeXB0by9lbmdpbmUvZW5naW5l LmguYWVzbmkJMjAxMC0xMS0xNiAxNzozMzoyMi4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3Ns LTEuMC4wYi9jcnlwdG8vZW5naW5lL2VuZ2luZS5oCTIwMTAtMTEtMTYgMTc6MzM6MjMuMDAwMDAw MDAwICswMTAwCitAQCAtMzM4LDYgKzMzOCw3IEBAIHZvaWQgRU5HSU5FX2xvYWRfZ29zdCh2b2lk KTsKKyAjZW5kaWYKKyAjZW5kaWYKKyB2b2lkIEVOR0lORV9sb2FkX2NyeXB0b2Rldih2b2lkKTsK Kyt2b2lkIEVOR0lORV9sb2FkX2Flc25pKHZvaWQpOworIHZvaWQgRU5HSU5FX2xvYWRfYnVpbHRp bl9lbmdpbmVzKHZvaWQpOworIAorIC8qIEdldCBhbmQgc2V0IGdsb2JhbCBmbGFncyAoRU5HSU5F X1RBQkxFX0ZMQUdfKioqKSBmb3IgdGhlIGltcGxlbWVudGF0aW9uCitkaWZmIC11cCBvcGVuc3Ns LTEuMC4wYi9jcnlwdG8vZW5naW5lL01ha2VmaWxlLmFlc25pIG9wZW5zc2wtMS4wLjBiL2NyeXB0 by9lbmdpbmUvTWFrZWZpbGUKKy0tLSBvcGVuc3NsLTEuMC4wYi9jcnlwdG8vZW5naW5lL01ha2Vm aWxlLmFlc25pCTIwMTAtMTEtMTUgMTU6NDQ6NDkuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNz bC0xLjAuMGIvY3J5cHRvL2VuZ2luZS9NYWtlZmlsZQkyMDEwLTExLTE2IDE3OjMzOjIzLjAwMDAw MDAwMCArMDEwMAorQEAgLTIxLDEyICsyMSwxNCBAQCBMSUJTUkM9IGVuZ19lcnIuYyBlbmdfbGli LmMgZW5nX2xpc3QuYyBlCisgCWVuZ190YWJsZS5jIGVuZ19wa2V5LmMgZW5nX2ZhdC5jIGVuZ19h bGwuYyBcCisgCXRiX3JzYS5jIHRiX2RzYS5jIHRiX2VjZHNhLmMgdGJfZGguYyB0Yl9lY2RoLmMg dGJfcmFuZC5jIHRiX3N0b3JlLmMgXAorIAl0Yl9jaXBoZXIuYyB0Yl9kaWdlc3QuYyB0Yl9wa21l dGguYyB0Yl9hc25tdGguYyBcCistCWVuZ19vcGVuc3NsLmMgZW5nX2NuZi5jIGVuZ19keW4uYyBl bmdfY3J5cHRvZGV2LmMKKysJZW5nX29wZW5zc2wuYyBlbmdfY25mLmMgZW5nX2R5bi5jIGVuZ19j cnlwdG9kZXYuYyBcCisrCWVuZ19hZXNuaS5jCisgTElCT0JKPSBlbmdfZXJyLm8gZW5nX2xpYi5v IGVuZ19saXN0Lm8gZW5nX2luaXQubyBlbmdfY3RybC5vIFwKKyAJZW5nX3RhYmxlLm8gZW5nX3Br ZXkubyBlbmdfZmF0Lm8gZW5nX2FsbC5vIFwKKyAJdGJfcnNhLm8gdGJfZHNhLm8gdGJfZWNkc2Eu byB0Yl9kaC5vIHRiX2VjZGgubyB0Yl9yYW5kLm8gdGJfc3RvcmUubyBcCisgCXRiX2NpcGhlci5v IHRiX2RpZ2VzdC5vIHRiX3BrbWV0aC5vIHRiX2Fzbm10aC5vIFwKKy0JZW5nX29wZW5zc2wubyBl bmdfY25mLm8gZW5nX2R5bi5vIGVuZ19jcnlwdG9kZXYubworKwllbmdfb3BlbnNzbC5vIGVuZ19j bmYubyBlbmdfZHluLm8gZW5nX2NyeXB0b2Rldi5vIFwKKysJZW5nX2Flc25pLm8KKyAKKyBTUkM9 ICQoTElCU1JDKQorIAorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMGIvY3J5cHRvL2V2cC9ldnBfZXJy LmMuYWVzbmkgb3BlbnNzbC0xLjAuMGIvY3J5cHRvL2V2cC9ldnBfZXJyLmMKKy0tLSBvcGVuc3Ns LTEuMC4wYi9jcnlwdG8vZXZwL2V2cF9lcnIuYy5hZXNuaQkyMDEwLTExLTE2IDE3OjMzOjIyLjAw MDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjBiL2NyeXB0by9ldnAvZXZwX2Vyci5jCTIw MTAtMTEtMTYgMTc6MzM6MjMuMDAwMDAwMDAwICswMTAwCitAQCAtMSw2ICsxLDYgQEAKKyAvKiBj cnlwdG8vZXZwL2V2cF9lcnIuYyAqLworIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistICogQ29weXJpZ2h0IChj KSAxOTk5LTIwMDggVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisr ICogQ29weXJpZ2h0IChjKSAxOTk5LTIwMDkgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdo dHMgcmVzZXJ2ZWQuCisgICoKKyAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAgKiBtb2RpZmljYXRpb24sIGFyZSBw ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKK0BAIC03MCw2 ICs3MCw3IEBACisgCisgc3RhdGljIEVSUl9TVFJJTkdfREFUQSBFVlBfc3RyX2Z1bmN0c1tdPQor IAl7Cisre0VSUl9GVU5DKEVWUF9GX0FFU05JX0lOSVRfS0VZKSwJIkFFU05JX0lOSVRfS0VZIn0s Cisge0VSUl9GVU5DKEVWUF9GX0FFU19JTklUX0tFWSksCSJBRVNfSU5JVF9LRVkifSwKKyB7RVJS X0ZVTkMoRVZQX0ZfQ0FNRUxMSUFfSU5JVF9LRVkpLAkiQ0FNRUxMSUFfSU5JVF9LRVkifSwKKyB7 RVJSX0ZVTkMoRVZQX0ZfRDJJX1BLRVkpLAkiRDJJX1BLRVkifSwKK0BAIC04Niw3ICs4Nyw3IEBA IHN0YXRpYyBFUlJfU1RSSU5HX0RBVEEgRVZQX3N0cl9mdW5jdHNbXT0KKyB7RVJSX0ZVTkMoRVZQ X0ZfRVZQX0RJR0VTVElOSVRfRVgpLAkiRVZQX0RpZ2VzdEluaXRfZXgifSwKKyB7RVJSX0ZVTkMo RVZQX0ZfRVZQX0VOQ1JZUFRGSU5BTF9FWCksCSJFVlBfRW5jcnlwdEZpbmFsX2V4In0sCisge0VS Ul9GVU5DKEVWUF9GX0VWUF9NRF9DVFhfQ09QWV9FWCksCSJFVlBfTURfQ1RYX2NvcHlfZXgifSwK Ky17RVJSX0ZVTkMoRVZQX0ZfRVZQX01EX1NJWkUpLAkiRVZQX01EX1NJWkUifSwKKyt7RVJSX0ZV TkMoRVZQX0ZfRVZQX01EX1NJWkUpLAkiRVZQX01EX3NpemUifSwKKyB7RVJSX0ZVTkMoRVZQX0Zf RVZQX09QRU5JTklUKSwJIkVWUF9PcGVuSW5pdCJ9LAorIHtFUlJfRlVOQyhFVlBfRl9FVlBfUEJF X0FMR19BREQpLAkiRVZQX1BCRV9hbGdfYWRkIn0sCisge0VSUl9GVU5DKEVWUF9GX0VWUF9QQkVf QUxHX0FERF9UWVBFKSwJIkVWUF9QQkVfYWxnX2FkZF90eXBlIn0sCitkaWZmIC11cCBvcGVuc3Ns LTEuMC4wYi9jcnlwdG8vZXZwL2V2cC5oLmFlc25pIG9wZW5zc2wtMS4wLjBiL2NyeXB0by9ldnAv ZXZwLmgKKy0tLSBvcGVuc3NsLTEuMC4wYi9jcnlwdG8vZXZwL2V2cC5oLmFlc25pCTIwMTAtMTEt MTYgMTc6MzM6MjIuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMGIvY3J5cHRvL2V2 cC9ldnAuaAkyMDEwLTExLTE2IDE3OjMzOjIzLjAwMDAwMDAwMCArMDEwMAorQEAgLTExNjcsNiAr MTE2Nyw3IEBAIHZvaWQgRVJSX2xvYWRfRVZQX3N0cmluZ3Modm9pZCk7CisgLyogRXJyb3IgY29k ZXMgZm9yIHRoZSBFVlAgZnVuY3Rpb25zLiAqLworIAorIC8qIEZ1bmN0aW9uIGNvZGVzLiAqLwor KyNkZWZpbmUgRVZQX0ZfQUVTTklfSU5JVF9LRVkJCQkJIDE2MworICNkZWZpbmUgRVZQX0ZfQUVT X0lOSVRfS0VZCQkJCSAxMzMKKyAjZGVmaW5lIEVWUF9GX0NBTUVMTElBX0lOSVRfS0VZCQkJCSAx NTkKKyAjZGVmaW5lIEVWUF9GX0QySV9QS0VZCQkJCQkgMTAwCitkaWZmIC11cCBvcGVuc3NsLTEu MC4wYi90ZXN0L3Rlc3RfYWVzbmkuYWVzbmkgb3BlbnNzbC0xLjAuMGIvdGVzdC90ZXN0X2Flc25p CistLS0gb3BlbnNzbC0xLjAuMGIvdGVzdC90ZXN0X2Flc25pLmFlc25pCTIwMTAtMTEtMTYgMTc6 MzM6MjMuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMGIvdGVzdC90ZXN0X2Flc25p CTIwMTAtMTEtMTYgMTc6MzM6MjMuMDAwMDAwMDAwICswMTAwCitAQCAtMCwwICsxLDY5IEBACisr IyEvYmluL3NoCisrCisrUFJPRz0kMQorKworK2lmIFsgLXggJFBST0cgXTsgdGhlbgorKyAgICBp ZiBleHByICJ4YCRQUk9HIHZlcnNpb25gIiA6ICJ4T3BlblNTTCIgPiAvZGV2L251bGw7IHRoZW4K KysJOgorKyAgICBlbHNlCisrCWVjaG8gIiRQUk9HIGlzIG5vdCBPcGVuU1NMIGV4ZWN1dGFibGUi CisrCWV4aXQgMQorKyAgICBmaQorK2Vsc2UKKysgICAgZWNobyAiJFBST0cgaXMgbm90IGV4ZWN1 dGFibGUiCisrICAgIGV4aXQgMTsKKytmaQorKworK2lmICRQUk9HIGVuZ2luZSBhZXNuaSB8IGdy ZXAgLXYgbm8tYWVzbmk7IHRoZW4KKysKKysgICAgSEFTSD1gY2F0ICRQUk9HIHwgJFBST0cgZGdz dCAtaGV4YAorKworKyAgICBBRVNfQUxHUz0iCWFlcy0xMjgtZWNiIGFlcy0xOTItZWNiIGFlcy0y NTYtZWNiIFwKKysJCWFlcy0xMjgtY2JjIGFlcy0xOTItY2JjIGFlcy0yNTYtY2JjIFwKKysJCWFl cy0xMjgtY2ZiIGFlcy0xOTItY2ZiIGFlcy0yNTYtY2ZiIFwKKysJCWFlcy0xMjgtb2ZiIGFlcy0x OTItb2ZiIGFlcy0yNTYtb2ZiIgorKyAgICBCVUZTSVpFPSIxNiAzMiA0OCA2NCA4MCA5NiAxMjgg MTQ0IDk5OSIKKysKKysgICAgbmVycj0wCisrCisrICAgIGZvciBhbGcgaW4gJEFFU19BTEdTOyBk bworKwllY2hvICRhbGcKKysJZm9yIGJ1ZnNpemUgaW4gJEJVRlNJWkU7IGRvCisrCSAgICBURVNU PWAoCWNhdCAkUFJPRyB8IFwKKysJCSRQUk9HIGVuYyAtZSAtayAiJEhBU0giIC0kYWxnIC1idWZz aXplICRidWZzaXplIC1lbmdpbmUgYWVzbmkgfCBcCisrCQkkUFJPRyBlbmMgLWQgLWsgIiRIQVNI IiAtJGFsZyB8IFwKKysJCSRQUk9HIGRnc3QgLWhleCApIDI+L2Rldi9udWxsYAorKwkgICAgaWYg WyAiJFRFU1QiICE9ICIkSEFTSCIgXTsgdGhlbgorKwkJZWNobyAiLSRhbGcvJGJ1ZnNpemUgZW5j cnlwdCB0ZXN0IGZhaWxlZCIKKysJCW5lcnI9YGV4cHIgJG5lcnIgKyAxYAorKwkgICAgZmkKKysJ ZG9uZQorKwlmb3IgYnVmc2l6ZSBpbiAkQlVGU0laRTsgZG8gCisrCSAgICBURVNUPWAoCWNhdCAk UFJPRyB8IFwKKysJCSRQUk9HIGVuYyAtZSAtayAiJEhBU0giIC0kYWxnIHwgXAorKwkJJFBST0cg ZW5jIC1kIC1rICIkSEFTSCIgLSRhbGcgLWJ1ZnNpemUgJGJ1ZnNpemUgLWVuZ2luZSBhZXNuaSB8 IFwKKysJCSRQUk9HIGRnc3QgLWhleCApIDI+L2Rldi9udWxsYAorKwkgICAgaWYgWyAiJFRFU1Qi ICE9ICIkSEFTSCIgXTsgdGhlbgorKwkJZWNobyAiLSRhbGcvJGJ1ZnNpemUgZGVjcnlwdCB0ZXN0 IGZhaWxlZCIKKysJCW5lcnI9YGV4cHIgJG5lcnIgKyAxYAorKwkgICAgZmkKKysJZG9uZQorKwlU RVNUPWAoCWNhdCAkUFJPRyB8IFwKKysJCSRQUk9HIGVuYyAtZSAtayAiJEhBU0giIC0kYWxnIC1l bmdpbmUgYWVzbmkgfCBcCisrCQkkUFJPRyBlbmMgLWQgLWsgIiRIQVNIIiAtJGFsZyAtZW5naW5l IGFlc25pIHwgXAorKwkJJFBST0cgZGdzdCAtaGV4ICkgMj4vZGV2L251bGxgCisrCWlmIFsgIiRU RVNUIiAhPSAiJEhBU0giIF07IHRoZW4KKysJCWVjaG8gIi0kYWxnIGVuL2RlY3J5cHQgdGVzdCBm YWlsZWQiCisrCQluZXJyPWBleHByICRuZXJyICsgMWAKKysJZmkKKysgICAgZG9uZQorKworKyAg ICBpZiBbICRuZXJyIC1ndCAwIF07IHRoZW4KKysJZWNobyAiQUVTTkkgZW5naW5lIHRlc3QgZmFp bGVkLiIKKysJZXhpdCAxOworKyAgICBmaQorK2Vsc2UKKysgICAgZWNobyAiQUVTTkkgZW5naW5l IGlzIG5vdCBhdmFpbGFibGUiCisrZmkKKysKKytleGl0IDAKCmRpZmYgLS1naXQgYS9vcGVuc3Ns LTEuMC4wYi1pcHY2LWFwcHMucGF0Y2ggYi9vcGVuc3NsLTEuMC4wYi1pcHY2LWFwcHMucGF0Y2gK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjg1YTVkOAotLS0gL2Rldi9udWxs CisrKyBiL29wZW5zc2wtMS4wLjBiLWlwdjYtYXBwcy5wYXRjaApAQCAtMCwwICsxLDQ5NiBAQAor ZGlmZiAtdXAgb3BlbnNzbC0xLjAuMGIvYXBwcy9zX2FwcHMuaC5pcHY2LWFwcHMgb3BlbnNzbC0x LjAuMGIvYXBwcy9zX2FwcHMuaAorLS0tIG9wZW5zc2wtMS4wLjBiL2FwcHMvc19hcHBzLmguaXB2 Ni1hcHBzCTIwMTAtMTEtMTYgMTc6MTk6MjkuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0x LjAuMGIvYXBwcy9zX2FwcHMuaAkyMDEwLTExLTE2IDE3OjE5OjI5LjAwMDAwMDAwMCArMDEwMAor QEAgLTE0OCw3ICsxNDgsNyBAQCB0eXBlZGVmIGZkX21hc2sgZmRfc2V0OworICNkZWZpbmUgUE9S VF9TVFIgICAgICAgICI0NDMzIgorICNkZWZpbmUgUFJPVE9DT0wgICAgICAgICJ0Y3AiCisgCist aW50IGRvX3NlcnZlcihpbnQgcG9ydCwgaW50IHR5cGUsIGludCAqcmV0LCBpbnQgKCpjYikgKGNo YXIgKmhvc3RuYW1lLCBpbnQgcywgdW5zaWduZWQgY2hhciAqY29udGV4dCksIHVuc2lnbmVkIGNo YXIgKmNvbnRleHQpOworK2ludCBkb19zZXJ2ZXIoY2hhciAqcG9ydCwgaW50IHR5cGUsIGludCAq cmV0LCBpbnQgKCpjYikgKGNoYXIgKmhvc3RuYW1lLCBpbnQgcywgdW5zaWduZWQgY2hhciAqY29u dGV4dCksIHVuc2lnbmVkIGNoYXIgKmNvbnRleHQpOworICNpZmRlZiBIRUFERVJfWDUwOV9ICisg aW50IE1TX0NBTExCQUNLIHZlcmlmeV9jYWxsYmFjayhpbnQgb2ssIFg1MDlfU1RPUkVfQ1RYICpj dHgpOworICNlbmRpZgorQEAgLTE1NiwxMCArMTU2LDkgQEAgaW50IE1TX0NBTExCQUNLIHZlcmlm eV9jYWxsYmFjayhpbnQgb2ssIAorIGludCBzZXRfY2VydF9zdHVmZihTU0xfQ1RYICpjdHgsIGNo YXIgKmNlcnRfZmlsZSwgY2hhciAqa2V5X2ZpbGUpOworIGludCBzZXRfY2VydF9rZXlfc3R1ZmYo U1NMX0NUWCAqY3R4LCBYNTA5ICpjZXJ0LCBFVlBfUEtFWSAqa2V5KTsKKyAjZW5kaWYKKy1pbnQg aW5pdF9jbGllbnQoaW50ICpzb2NrLCBjaGFyICpzZXJ2ZXIsIGludCBwb3J0LCBpbnQgdHlwZSk7 CisraW50IGluaXRfY2xpZW50KGludCAqc29jaywgY2hhciAqc2VydmVyLCBjaGFyICpwb3J0LCBp bnQgdHlwZSk7CisgaW50IHNob3VsZF9yZXRyeShpbnQgaSk7CistaW50IGV4dHJhY3RfcG9ydChj aGFyICpzdHIsIHNob3J0ICpwb3J0X3B0cik7CistaW50IGV4dHJhY3RfaG9zdF9wb3J0KGNoYXIg KnN0cixjaGFyICoqaG9zdF9wdHIsdW5zaWduZWQgY2hhciAqaXAsc2hvcnQgKnApOworK2ludCBl eHRyYWN0X2hvc3RfcG9ydChjaGFyICpzdHIsY2hhciAqKmhvc3RfcHRyLGNoYXIgKipwb3J0X3B0 cik7CisgCisgbG9uZyBNU19DQUxMQkFDSyBiaW9fZHVtcF9jYWxsYmFjayhCSU8gKmJpbywgaW50 IGNtZCwgY29uc3QgY2hhciAqYXJncCwKKyAJCQkJICAgaW50IGFyZ2ksIGxvbmcgYXJnbCwgbG9u ZyByZXQpOworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMGIvYXBwcy9zX2NsaWVudC5jLmlwdjYtYXBw cyBvcGVuc3NsLTEuMC4wYi9hcHBzL3NfY2xpZW50LmMKKy0tLSBvcGVuc3NsLTEuMC4wYi9hcHBz L3NfY2xpZW50LmMuaXB2Ni1hcHBzCTIwMTAtMTEtMTYgMTc6MTk6MjkuMDAwMDAwMDAwICswMTAw CisrKysgb3BlbnNzbC0xLjAuMGIvYXBwcy9zX2NsaWVudC5jCTIwMTAtMTEtMTYgMTc6MTk6Mjku MDAwMDAwMDAwICswMTAwCitAQCAtMzg5LDcgKzM4OSw3IEBAIGludCBNQUlOKGludCBhcmdjLCBj aGFyICoqYXJndikKKyAJaW50IGNidWZfbGVuLGNidWZfb2ZmOworIAlpbnQgc2J1Zl9sZW4sc2J1 Zl9vZmY7CisgCWZkX3NldCByZWFkZmRzLHdyaXRlZmRzOworLQlzaG9ydCBwb3J0PVBPUlQ7Cisr CWNoYXIgKnBvcnRfc3RyID0gUE9SVF9TVFI7CisgCWludCBmdWxsX2xvZz0xOworIAljaGFyICpo b3N0PVNTTF9IT1NUX05BTUU7CisgCWNoYXIgKmNlcnRfZmlsZT1OVUxMLCprZXlfZmlsZT1OVUxM OworQEAgLTQ4OCwxMyArNDg4LDEyIEBAIGludCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJndikK KyAJCWVsc2UgaWYJKHN0cmNtcCgqYXJndiwiLXBvcnQiKSA9PSAwKQorIAkJCXsKKyAJCQlpZiAo LS1hcmdjIDwgMSkgZ290byBiYWQ7CistCQkJcG9ydD1hdG9pKCooKythcmd2KSk7CistCQkJaWYg KHBvcnQgPT0gMCkgZ290byBiYWQ7CisrCQkJcG9ydF9zdHI9ICooKythcmd2KTsKKyAJCQl9Cisg CQllbHNlIGlmIChzdHJjbXAoKmFyZ3YsIi1jb25uZWN0IikgPT0gMCkKKyAJCQl7CisgCQkJaWYg KC0tYXJnYyA8IDEpIGdvdG8gYmFkOworLQkJCWlmICghZXh0cmFjdF9ob3N0X3BvcnQoKigrK2Fy Z3YpLCZob3N0LE5VTEwsJnBvcnQpKQorKwkJCWlmICghZXh0cmFjdF9ob3N0X3BvcnQoKigrK2Fy Z3YpLCZob3N0LCZwb3J0X3N0cikpCisgCQkJCWdvdG8gYmFkOworIAkJCX0KKyAJCWVsc2UgaWYJ KHN0cmNtcCgqYXJndiwiLXZlcmlmeSIpID09IDApCitAQCAtOTY3LDcgKzk2Niw3IEBAIGJhZDoK KyAKKyByZV9zdGFydDoKKyAKKy0JaWYgKGluaXRfY2xpZW50KCZzLGhvc3QscG9ydCxzb2NrZXRf dHlwZSkgPT0gMCkKKysJaWYgKGluaXRfY2xpZW50KCZzLGhvc3QscG9ydF9zdHIsc29ja2V0X3R5 cGUpID09IDApCisgCQl7CisgCQlCSU9fcHJpbnRmKGJpb19lcnIsImNvbm5lY3Q6ZXJybm89JWRc biIsZ2V0X2xhc3Rfc29ja2V0X2Vycm9yKCkpOworIAkJU0hVVERPV04ocyk7CitkaWZmIC11cCBv cGVuc3NsLTEuMC4wYi9hcHBzL3Nfc2VydmVyLmMuaXB2Ni1hcHBzIG9wZW5zc2wtMS4wLjBiL2Fw cHMvc19zZXJ2ZXIuYworLS0tIG9wZW5zc2wtMS4wLjBiL2FwcHMvc19zZXJ2ZXIuYy5pcHY2LWFw cHMJMjAxMC0xMS0xNiAxNzoxOToyOS4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4w Yi9hcHBzL3Nfc2VydmVyLmMJMjAxMC0xMS0xNiAxNzoxOToyOS4wMDAwMDAwMDAgKzAxMDAKK0BA IC04MzgsNyArODM4LDcgQEAgaW50IE1BSU4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJewor IAlYNTA5X1ZFUklGWV9QQVJBTSAqdnBtID0gTlVMTDsKKyAJaW50IGJhZGFyZyA9IDA7CistCXNo b3J0IHBvcnQ9UE9SVDsKKysJY2hhciAqcG9ydF9zdHIgPSBQT1JUX1NUUjsKKyAJY2hhciAqQ0Fw YXRoPU5VTEwsKkNBZmlsZT1OVUxMOworIAl1bnNpZ25lZCBjaGFyICpjb250ZXh0ID0gTlVMTDsK KyAJY2hhciAqZGhmaWxlID0gTlVMTDsKK0BAIC05MDksOCArOTA5LDcgQEAgaW50IE1BSU4oaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJCQkgKHN0cmNtcCgqYXJndiwiLWFjY2VwdCIpID09IDAp KQorIAkJCXsKKyAJCQlpZiAoLS1hcmdjIDwgMSkgZ290byBiYWQ7CistCQkJaWYgKCFleHRyYWN0 X3BvcnQoKigrK2FyZ3YpLCZwb3J0KSkKKy0JCQkJZ290byBiYWQ7CisrCQkJcG9ydF9zdHI9ICoo Kythcmd2KTsKKyAJCQl9CisgCQllbHNlIGlmCShzdHJjbXAoKmFyZ3YsIi12ZXJpZnkiKSA9PSAw KQorIAkJCXsKK0BAIC0xNzAwLDkgKzE2OTksOSBAQCBiYWQ6CisgCUJJT19wcmludGYoYmlvX3Nf b3V0LCJBQ0NFUFRcbiIpOworIAkodm9pZClCSU9fZmx1c2goYmlvX3Nfb3V0KTsKKyAJaWYgKHd3 dykKKy0JCWRvX3NlcnZlcihwb3J0LHNvY2tldF90eXBlLCZhY2NlcHRfc29ja2V0LHd3d19ib2R5 LCBjb250ZXh0KTsKKysJCWRvX3NlcnZlcihwb3J0X3N0cixzb2NrZXRfdHlwZSwmYWNjZXB0X3Nv Y2tldCx3d3dfYm9keSwgY29udGV4dCk7CisgCWVsc2UKKy0JCWRvX3NlcnZlcihwb3J0LHNvY2tl dF90eXBlLCZhY2NlcHRfc29ja2V0LHN2X2JvZHksIGNvbnRleHQpOworKwkJZG9fc2VydmVyKHBv cnRfc3RyLHNvY2tldF90eXBlLCZhY2NlcHRfc29ja2V0LHN2X2JvZHksIGNvbnRleHQpOworIAlw cmludF9zdGF0cyhiaW9fc19vdXQsY3R4KTsKKyAJcmV0PTA7CisgZW5kOgorZGlmZiAtdXAgb3Bl bnNzbC0xLjAuMGIvYXBwcy9zX3NvY2tldC5jLmlwdjYtYXBwcyBvcGVuc3NsLTEuMC4wYi9hcHBz L3Nfc29ja2V0LmMKKy0tLSBvcGVuc3NsLTEuMC4wYi9hcHBzL3Nfc29ja2V0LmMuaXB2Ni1hcHBz CTIwMTAtMDctMDUgMTM6MDM6MjIuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0xLjAuMGIv YXBwcy9zX3NvY2tldC5jCTIwMTAtMTEtMTYgMTc6Mjc6MTguMDAwMDAwMDAwICswMTAwCitAQCAt MTAyLDkgKzEwMiw3IEBAIHN0YXRpYyBzdHJ1Y3QgaG9zdGVudCAqR2V0SG9zdEJ5TmFtZShjaGEK KyBzdGF0aWMgdm9pZCBzc2xfc29ja19jbGVhbnVwKHZvaWQpOworICNlbmRpZgorIHN0YXRpYyBp bnQgc3NsX3NvY2tfaW5pdCh2b2lkKTsKKy1zdGF0aWMgaW50IGluaXRfY2xpZW50X2lwKGludCAq c29jayx1bnNpZ25lZCBjaGFyIGlwWzRdLCBpbnQgcG9ydCwgaW50IHR5cGUpOworLXN0YXRpYyBp bnQgaW5pdF9zZXJ2ZXIoaW50ICpzb2NrLCBpbnQgcG9ydCwgaW50IHR5cGUpOworLXN0YXRpYyBp bnQgaW5pdF9zZXJ2ZXJfbG9uZyhpbnQgKnNvY2ssIGludCBwb3J0LGNoYXIgKmlwLCBpbnQgdHlw ZSk7Cisrc3RhdGljIGludCBpbml0X3NlcnZlcihpbnQgKnNvY2ssIGNoYXIgKnBvcnQsIGludCB0 eXBlKTsKKyBzdGF0aWMgaW50IGRvX2FjY2VwdChpbnQgYWNjX3NvY2ssIGludCAqc29jaywgY2hh ciAqKmhvc3QpOworIHN0YXRpYyBpbnQgaG9zdF9pcChjaGFyICpzdHIsIHVuc2lnbmVkIGNoYXIg aXBbNF0pOworIAorQEAgLTIzNCw1OCArMjMyLDcwIEBAIHN0YXRpYyBpbnQgc3NsX3NvY2tfaW5p dCh2b2lkKQorIAlyZXR1cm4oMSk7CisgCX0KKyAKKy1pbnQgaW5pdF9jbGllbnQoaW50ICpzb2Nr LCBjaGFyICpob3N0LCBpbnQgcG9ydCwgaW50IHR5cGUpCisraW50IGluaXRfY2xpZW50KGludCAq c29jaywgY2hhciAqaG9zdCwgY2hhciAqcG9ydCwgaW50IHR5cGUpCisgCXsKKy0JdW5zaWduZWQg Y2hhciBpcFs0XTsKKy0KKy0JaWYgKCFob3N0X2lwKGhvc3QsJihpcFswXSkpKQorLQkJeworLQkJ cmV0dXJuKDApOworLQkJfQorLQlyZXR1cm4oaW5pdF9jbGllbnRfaXAoc29jayxpcCxwb3J0LHR5 cGUpKTsKKy0JfQorLQorLXN0YXRpYyBpbnQgaW5pdF9jbGllbnRfaXAoaW50ICpzb2NrLCB1bnNp Z25lZCBjaGFyIGlwWzRdLCBpbnQgcG9ydCwgaW50IHR5cGUpCistCXsKKy0JdW5zaWduZWQgbG9u ZyBhZGRyOworLQlzdHJ1Y3Qgc29ja2FkZHJfaW4gdGhlbTsKKy0JaW50IHMsaTsKKysJc3RydWN0 IGFkZHJpbmZvICpyZXMsICpyZXMwLCBoaW50czsKKysJY2hhciAqIGZhaWxlZF9jYWxsID0gTlVM TDsKKysJaW50IHM7CisrCWludCBlOworIAorIAlpZiAoIXNzbF9zb2NrX2luaXQoKSkgcmV0dXJu KDApOworIAorLQltZW1zZXQoKGNoYXIgKikmdGhlbSwwLHNpemVvZih0aGVtKSk7CistCXRoZW0u c2luX2ZhbWlseT1BRl9JTkVUOworLQl0aGVtLnNpbl9wb3J0PWh0b25zKCh1bnNpZ25lZCBzaG9y dClwb3J0KTsKKy0JYWRkcj0odW5zaWduZWQgbG9uZykKKy0JCSgodW5zaWduZWQgbG9uZylpcFsw XTw8MjRMKXwKKy0JCSgodW5zaWduZWQgbG9uZylpcFsxXTw8MTZMKXwKKy0JCSgodW5zaWduZWQg bG9uZylpcFsyXTw8IDhMKXwKKy0JCSgodW5zaWduZWQgbG9uZylpcFszXSk7CistCXRoZW0uc2lu X2FkZHIuc19hZGRyPWh0b25sKGFkZHIpOworLQorLQlpZiAodHlwZSA9PSBTT0NLX1NUUkVBTSkK Ky0JCXM9c29ja2V0KEFGX0lORVQsU09DS19TVFJFQU0sU09DS0VUX1BST1RPQ09MKTsKKy0JZWxz ZSAvKiAoIHR5cGUgPT0gU09DS19ER1JBTSkgKi8KKy0JCXM9c29ja2V0KEFGX0lORVQsU09DS19E R1JBTSxJUFBST1RPX1VEUCk7CistCQkJCistCWlmIChzID09IElOVkFMSURfU09DS0VUKSB7IHBl cnJvcigic29ja2V0Iik7IHJldHVybigwKTsgfQorKwltZW1zZXQoJmhpbnRzLCAnXDAnLCBzaXpl b2YoaGludHMpKTsKKysJaGludHMuYWlfc29ja3R5cGUgPSB0eXBlOworKwloaW50cy5haV9mbGFn cyA9IEFJX0FERFJDT05GSUc7CisrCisrCWUgPSBnZXRhZGRyaW5mbyhob3N0LCBwb3J0LCAmaGlu dHMsICZyZXMpOworKwlpZiAoZSkKKysJeworKwkJZnByaW50ZihzdGRlcnIsICJnZXRhZGRyaW5m bzogJXNcbiIsIGdhaV9zdHJlcnJvcihlKSk7CisrCQlpZiAoZSA9PSBFQUlfU1lTVEVNKQorKwkJ CXBlcnJvcigiZ2V0YWRkcmluZm8iKTsKKysJCXJldHVybiAoMCk7CisrCQl9CisgCisrCXJlczAg PSByZXM7CisrCXdoaWxlIChyZXMpCisrCQl7CisrCQlzID0gc29ja2V0KHJlcy0+YWlfZmFtaWx5 LCByZXMtPmFpX3NvY2t0eXBlLCByZXMtPmFpX3Byb3RvY29sKTsKKysJCWlmIChzID09IElOVkFM SURfU09DS0VUKQorKwkJCXsKKysJCQlmYWlsZWRfY2FsbCA9ICJzb2NrZXQiOworKwkJCWdvdG8g bmV4dHJlczsKKysJCQl9CisgI2lmIGRlZmluZWQoU09fS0VFUEFMSVZFKSAmJiAhZGVmaW5lZChP UEVOU1NMX1NZU19NUEUpCisgCWlmICh0eXBlID09IFNPQ0tfU1RSRUFNKQorIAkJeworLQkJaT0w OworLQkJaT1zZXRzb2Nrb3B0KHMsU09MX1NPQ0tFVCxTT19LRUVQQUxJVkUsKGNoYXIgKikmaSxz aXplb2YoaSkpOworLQkJaWYgKGkgPCAwKSB7IHBlcnJvcigia2VlcGFsaXZlIik7IHJldHVybigw KTsgfQorKwkJCWludCBpPTA7CisrCQkJaT1zZXRzb2Nrb3B0KHMsU09MX1NPQ0tFVCxTT19LRUVQ QUxJVkUsCisrCQkJCShjaGFyICopJmksc2l6ZW9mKGkpKTsKKysJCQlpZiAoaSA8IDApIHsKKysJ CQkJZmFpbGVkX2NhbGwgPSAia2VlcGFsaXZlIjsKKysJCQkJZ290byBuZXh0cmVzOworKwkJCQl9 CisgCQl9CisgI2VuZGlmCistCistCWlmIChjb25uZWN0KHMsKHN0cnVjdCBzb2NrYWRkciAqKSZ0 aGVtLHNpemVvZih0aGVtKSkgPT0gLTEpCistCQl7IGNsb3Nlc29ja2V0KHMpOyBwZXJyb3IoImNv bm5lY3QiKTsgcmV0dXJuKDApOyB9CisrCQlpZiAoY29ubmVjdChzLChzdHJ1Y3Qgc29ja2FkZHIg KilyZXMtPmFpX2FkZHIsCisrCQkJcmVzLT5haV9hZGRybGVuKSA9PSAwKQorKwkJCXsKKysJCQlm cmVlYWRkcmluZm8ocmVzMCk7CisgCSpzb2NrPXM7CisgCXJldHVybigxKTsKKyAJfQorIAorLWlu dCBkb19zZXJ2ZXIoaW50IHBvcnQsIGludCB0eXBlLCBpbnQgKnJldCwgaW50ICgqY2IpKGNoYXIg Kmhvc3RuYW1lLCBpbnQgcywgdW5zaWduZWQgY2hhciAqY29udGV4dCksIHVuc2lnbmVkIGNoYXIg KmNvbnRleHQpCisrCQlmYWlsZWRfY2FsbCA9ICJzb2NrZXQiOworK25leHRyZXM6CisrCQlpZiAo cyAhPSBJTlZBTElEX1NPQ0tFVCkKKysJCQljbG9zZShzKTsKKysJCXJlcyA9IHJlcy0+YWlfbmV4 dDsKKysJCX0KKysJZnJlZWFkZHJpbmZvKHJlczApOworKworKwlwZXJyb3IoZmFpbGVkX2NhbGwp OworKwlyZXR1cm4oMCk7CisrCX0KKysKKytpbnQgZG9fc2VydmVyKGNoYXIgKnBvcnQsIGludCB0 eXBlLCBpbnQgKnJldCwgaW50ICgqY2IpKGNoYXIgKmhvc3RuYW1lLCBpbnQgcywgdW5zaWduZWQg Y2hhciAqY29udGV4dCksIHVuc2lnbmVkIGNoYXIgKmNvbnRleHQpCisgCXsKKyAJaW50IHNvY2s7 CisgCWNoYXIgKm5hbWUgPSBOVUxMOworQEAgLTMyMywzMyArMzMzLDM4IEBAIGludCBkb19zZXJ2 ZXIoaW50IHBvcnQsIGludCB0eXBlLCBpbnQgKnIKKyAJCX0KKyAJfQorIAorLXN0YXRpYyBpbnQg aW5pdF9zZXJ2ZXJfbG9uZyhpbnQgKnNvY2ssIGludCBwb3J0LCBjaGFyICppcCwgaW50IHR5cGUp Cisrc3RhdGljIGludCBpbml0X3NlcnZlcihpbnQgKnNvY2ssIGNoYXIgKnBvcnQsIGludCB0eXBl KQorIAl7CistCWludCByZXQ9MDsKKy0Jc3RydWN0IHNvY2thZGRyX2luIHNlcnZlcjsKKy0JaW50 IHM9IC0xOworKwlzdHJ1Y3QgYWRkcmluZm8gKnJlcywgKnJlczAsIGhpbnRzOworKwljaGFyICog ZmFpbGVkX2NhbGwgPSBOVUxMOworKwljaGFyIHBvcnRfbmFtZVs4XTsKKysJaW50IHM7CisrCWlu dCBlOworIAorIAlpZiAoIXNzbF9zb2NrX2luaXQoKSkgcmV0dXJuKDApOworIAorLQltZW1zZXQo KGNoYXIgKikmc2VydmVyLDAsc2l6ZW9mKHNlcnZlcikpOworLQlzZXJ2ZXIuc2luX2ZhbWlseT1B Rl9JTkVUOworLQlzZXJ2ZXIuc2luX3BvcnQ9aHRvbnMoKHVuc2lnbmVkIHNob3J0KXBvcnQpOwor LQlpZiAoaXAgPT0gTlVMTCkKKy0JCXNlcnZlci5zaW5fYWRkci5zX2FkZHI9SU5BRERSX0FOWTsK Ky0JZWxzZQorLS8qIEFkZGVkIGZvciBUM0UsIGFkZHJlc3Mtb2YgZmFpbHMgb24gYml0IGZpZWxk IChiZWNrbWFuQGFjbC5sYW5sLmdvdikgKi8KKy0jaWZuZGVmIEJJVF9GSUVMRF9MSU1JVFMKKy0J CW1lbWNweSgmc2VydmVyLnNpbl9hZGRyLnNfYWRkcixpcCw0KTsKKy0jZWxzZQorLQkJbWVtY3B5 KCZzZXJ2ZXIuc2luX2FkZHIsaXAsNCk7CistI2VuZGlmCisrCW1lbXNldCgmaGludHMsICdcMCcs IHNpemVvZihoaW50cykpOworKwloaW50cy5haV9zb2NrdHlwZSA9IHR5cGU7CisrCWhpbnRzLmFp X2ZsYWdzID0gQUlfUEFTU0lWRSB8IEFJX0FERFJDT05GSUc7CisgCQorLQkJaWYgKHR5cGUgPT0g U09DS19TVFJFQU0pCistCQkJcz1zb2NrZXQoQUZfSU5FVCxTT0NLX1NUUkVBTSxTT0NLRVRfUFJP VE9DT0wpOworLQkJZWxzZSAvKiB0eXBlID09IFNPQ0tfREdSQU0gKi8KKy0JCQlzPXNvY2tldChB Rl9JTkVULCBTT0NLX0RHUkFNLElQUFJPVE9fVURQKTsKKysJZSA9IGdldGFkZHJpbmZvKE5VTEws IHBvcnQsICZoaW50cywgJnJlcyk7CisrCWlmIChlKQorKwkJeworKwkJZnByaW50ZihzdGRlcnIs ICJnZXRhZGRyaW5mbzogJXNcbiIsIGdhaV9zdHJlcnJvcihlKSk7CisrCQlpZiAoZSA9PSBFQUlf U1lTVEVNKQorKwkJCXBlcnJvcigiZ2V0YWRkcmluZm8iKTsKKysJCXJldHVybiAoMCk7CisrCQl9 CisgCistCWlmIChzID09IElOVkFMSURfU09DS0VUKSBnb3RvIGVycjsKKysJcmVzMCA9IHJlczsK KysJd2hpbGUgKHJlcykKKysJCXsKKysJCXMgPSBzb2NrZXQocmVzLT5haV9mYW1pbHksIHJlcy0+ YWlfc29ja3R5cGUsIHJlcy0+YWlfcHJvdG9jb2wpOworKwkJaWYgKHMgPT0gSU5WQUxJRF9TT0NL RVQpCisrCQkJeworKwkJCWZhaWxlZF9jYWxsID0gInNvY2tldCI7CisrCQkJZ290byBuZXh0cmVz OworKwkJCX0KKyAjaWYgZGVmaW5lZCBTT0xfU09DS0VUICYmIGRlZmluZWQgU09fUkVVU0VBRERS CisgCQl7CisgCQlpbnQgaiA9IDE7CitAQCAtMzU3LDM1ICszNzIsMzkgQEAgc3RhdGljIGludCBp bml0X3NlcnZlcl9sb25nKGludCAqc29jaywgaQorIAkJCSAgICh2b2lkICopICZqLCBzaXplb2Yg aik7CisgCQl9CisgI2VuZGlmCistCWlmIChiaW5kKHMsKHN0cnVjdCBzb2NrYWRkciAqKSZzZXJ2 ZXIsc2l6ZW9mKHNlcnZlcikpID09IC0xKQorKworKwkJaWYgKGJpbmQocywoc3RydWN0IHNvY2th ZGRyICopcmVzLT5haV9hZGRyLCByZXMtPmFpX2FkZHJsZW4pID09IC0xKQorIAkJeworLSNpZm5k ZWYgT1BFTlNTTF9TWVNfV0lORE9XUworLQkJcGVycm9yKCJiaW5kIik7CistI2VuZGlmCistCQln b3RvIGVycjsKKysJCQlmYWlsZWRfY2FsbCA9ICJiaW5kIjsKKysJCQlnb3RvIG5leHRyZXM7Cisg CQl9CistCS8qIE1ha2UgaXQgMTI4IGZvciBsaW51eCAqLworLQlpZiAodHlwZT09U09DS19TVFJF QU0gJiYgbGlzdGVuKHMsMTI4KSA9PSAtMSkgZ290byBlcnI7CistCSpzb2NrPXM7CistCXJldD0x OworLWVycjoKKy0JaWYgKChyZXQgPT0gMCkgJiYgKHMgIT0gLTEpKQorKwkJaWYgKHR5cGU9PVNP Q0tfU1RSRUFNICYmIGxpc3RlbihzLDEyOCkgPT0gLTEpCisgCQl7CistCQlTSFVURE9XTihzKTsK KysJCQlmYWlsZWRfY2FsbCA9ICJsaXN0ZW4iOworKwkJCWdvdG8gbmV4dHJlczsKKyAJCX0KKy0J cmV0dXJuKHJldCk7CisrCisrCQkqc29jaz1zOworKwkJcmV0dXJuKDEpOworKworK25leHRyZXM6 CisrCQlpZiAocyAhPSBJTlZBTElEX1NPQ0tFVCkKKysJCQljbG9zZShzKTsKKysJCXJlcyA9IHJl cy0+YWlfbmV4dDsKKyAJfQorKwlmcmVlYWRkcmluZm8ocmVzMCk7CisgCistc3RhdGljIGludCBp bml0X3NlcnZlcihpbnQgKnNvY2ssIGludCBwb3J0LCBpbnQgdHlwZSkKKy0JeworLQlyZXR1cm4o aW5pdF9zZXJ2ZXJfbG9uZyhzb2NrLCBwb3J0LCBOVUxMLCB0eXBlKSk7CisrCWlmIChzID09IElO VkFMSURfU09DS0VUKSB7IHBlcnJvcigic29ja2V0Iik7IHJldHVybigwKTsgfQorKworKwlwZXJy b3IoZmFpbGVkX2NhbGwpOworKwlyZXR1cm4oMCk7CisgCX0KKyAKKyBzdGF0aWMgaW50IGRvX2Fj Y2VwdChpbnQgYWNjX3NvY2ssIGludCAqc29jaywgY2hhciAqKmhvc3QpCisgCXsKKysJc3RhdGlj IHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIGZyb207CisrCWNoYXIgYnVmZmVyW05JX01BWEhPU1Rd OworIAlpbnQgcmV0OworLQlzdHJ1Y3QgaG9zdGVudCAqaDEsKmgyOworLQlzdGF0aWMgc3RydWN0 IHNvY2thZGRyX2luIGZyb207CisgCWludCBsZW47CisgLyoJc3RydWN0IGxpbmdlciBsaW5nOyAq LworIAorQEAgLTQzMiwxMzUgKzQ1MSw1OCBAQCByZWRvaXQ6CisgKi8KKyAKKyAJaWYgKGhvc3Qg PT0gTlVMTCkgZ290byBlbmQ7CistI2lmbmRlZiBCSVRfRklFTERfTElNSVRTCistCS8qIEkgc2hv dWxkIHVzZSBXU0FBc3luY0dldEhvc3RCeU5hbWUoKSB1bmRlciB3aW5kb3dzICovCistCWgxPWdl dGhvc3RieWFkZHIoKGNoYXIgKikmZnJvbS5zaW5fYWRkci5zX2FkZHIsCistCQlzaXplb2YoZnJv bS5zaW5fYWRkci5zX2FkZHIpLEFGX0lORVQpOworLSNlbHNlCistCWgxPWdldGhvc3RieWFkZHIo KGNoYXIgKikmZnJvbS5zaW5fYWRkciwKKy0JCXNpemVvZihzdHJ1Y3QgaW5fYWRkciksQUZfSU5F VCk7CistI2VuZGlmCistCWlmIChoMSA9PSBOVUxMKQorKworKwlpZiAoZ2V0bmFtZWluZm8oKHN0 cnVjdCBzb2NrYWRkciAqKSZmcm9tLCBzaXplb2YoZnJvbSksCisrCQlidWZmZXIsIHNpemVvZihi dWZmZXIpLAorKwkJTlVMTCwgMCwgMCkpCisgCQl7CistCQlCSU9fcHJpbnRmKGJpb19lcnIsImJh ZCBnZXRob3N0YnlhZGRyXG4iKTsKKysJCUJJT19wcmludGYoYmlvX2VyciwiZ2V0bmFtZWluZm8g ZmFpbGVkXG4iKTsKKyAJCSpob3N0PU5VTEw7CisgCQkvKiByZXR1cm4oMCk7ICovCisgCQl9Cisg CWVsc2UKKyAJCXsKKy0JCWlmICgoKmhvc3Q9KGNoYXIgKilPUEVOU1NMX21hbGxvYyhzdHJsZW4o aDEtPmhfbmFtZSkrMSkpID09IE5VTEwpCisrCQlpZiAoKCpob3N0PShjaGFyICopT1BFTlNTTF9t YWxsb2Moc3RybGVuKGJ1ZmZlcikrMSkpID09IE5VTEwpCisgCQkJeworIAkJCXBlcnJvcigiT1BF TlNTTF9tYWxsb2MiKTsKKyAJCQlyZXR1cm4oMCk7CisgCQkJfQorLQkJQlVGX3N0cmxjcHkoKmhv c3QsaDEtPmhfbmFtZSxzdHJsZW4oaDEtPmhfbmFtZSkrMSk7CistCistCQloMj1HZXRIb3N0QnlO YW1lKCpob3N0KTsKKy0JCWlmIChoMiA9PSBOVUxMKQorLQkJCXsKKy0JCQlCSU9fcHJpbnRmKGJp b19lcnIsImdldGhvc3RieW5hbWUgZmFpbHVyZVxuIik7CistCQkJcmV0dXJuKDApOworLQkJCX0K Ky0JCWlmIChoMi0+aF9hZGRydHlwZSAhPSBBRl9JTkVUKQorLQkJCXsKKy0JCQlCSU9fcHJpbnRm KGJpb19lcnIsImdldGhvc3RieW5hbWUgYWRkciBpcyBub3QgQUZfSU5FVFxuIik7CistCQkJcmV0 dXJuKDApOworLQkJCX0KKysJCXN0cmNweSgqaG9zdCwgYnVmZmVyKTsKKyAJCX0KKyBlbmQ6Cisg CSpzb2NrPXJldDsKKyAJcmV0dXJuKDEpOworIAl9CisgCistaW50IGV4dHJhY3RfaG9zdF9wb3J0 KGNoYXIgKnN0ciwgY2hhciAqKmhvc3RfcHRyLCB1bnNpZ25lZCBjaGFyICppcCwKKy0JICAgICBz aG9ydCAqcG9ydF9wdHIpCisraW50IGV4dHJhY3RfaG9zdF9wb3J0KGNoYXIgKnN0ciwgY2hhciAq Kmhvc3RfcHRyLCAKKysJICAgICBjaGFyICoqcG9ydF9wdHIpCisgCXsKKy0JY2hhciAqaCwqcDsK KysJY2hhciAqaCwqcCwqeDsKKyAKKy0JaD1zdHI7CistCXA9c3RyY2hyKHN0ciwnOicpOworKwl4 PWg9c3RyOworKwlpZiAoKmggPT0gJ1snKQorKwkJeworKwkJaCsrOworKwkJcD1zdHJjaHIoaCwn XScpOworIAlpZiAocCA9PSBOVUxMKQorIAkJeworLQkJQklPX3ByaW50ZihiaW9fZXJyLCJubyBw b3J0IGRlZmluZWRcbiIpOworKwkJCUJJT19wcmludGYoYmlvX2Vyciwibm8gZW5kaW5nIGJyYWNr ZXQgZm9yIElQdjYgYWRkcmVzc1xuIik7CisgCQlyZXR1cm4oMCk7CisgCQl9CisgCSoocCsrKT0n XDAnOworLQorLQlpZiAoKGlwICE9IE5VTEwpICYmICFob3N0X2lwKHN0cixpcCkpCistCQlnb3Rv IGVycjsKKy0JaWYgKGhvc3RfcHRyICE9IE5VTEwpICpob3N0X3B0cj1oOworLQorLQlpZiAoIWV4 dHJhY3RfcG9ydChwLHBvcnRfcHRyKSkKKy0JCWdvdG8gZXJyOworLQlyZXR1cm4oMSk7CistZXJy OgorLQlyZXR1cm4oMCk7CisrCQl4ID0gcDsKKyAJfQorLQorLXN0YXRpYyBpbnQgaG9zdF9pcChj aGFyICpzdHIsIHVuc2lnbmVkIGNoYXIgaXBbNF0pCistCXsKKy0JdW5zaWduZWQgaW50IGluWzRd OyAKKy0JaW50IGk7CistCistCWlmIChzc2NhbmYoc3RyLCIldS4ldS4ldS4ldSIsJihpblswXSks JihpblsxXSksJihpblsyXSksJihpblszXSkpID09IDQpCistCQl7CistCQlmb3IgKGk9MDsgaTw0 OyBpKyspCistCQkJaWYgKGluW2ldID4gMjU1KQorLQkJCQl7CistCQkJCUJJT19wcmludGYoYmlv X2VyciwiaW52YWxpZCBJUCBhZGRyZXNzXG4iKTsKKy0JCQkJZ290byBlcnI7CistCQkJCX0KKy0J CWlwWzBdPWluWzBdOworLQkJaXBbMV09aW5bMV07CistCQlpcFsyXT1pblsyXTsKKy0JCWlwWzNd PWluWzNdOworLQkJfQorLQllbHNlCistCQl7IC8qIGRvIGEgZ2V0aG9zdGJ5bmFtZSAqLworLQkJ c3RydWN0IGhvc3RlbnQgKmhlOworLQorLQkJaWYgKCFzc2xfc29ja19pbml0KCkpIHJldHVybigw KTsKKy0KKy0JCWhlPUdldEhvc3RCeU5hbWUoc3RyKTsKKy0JCWlmIChoZSA9PSBOVUxMKQorLQkJ CXsKKy0JCQlCSU9fcHJpbnRmKGJpb19lcnIsImdldGhvc3RieW5hbWUgZmFpbHVyZVxuIik7Cist CQkJZ290byBlcnI7CistCQkJfQorLQkJLyogY2FzdCB0byBzaG9ydCBiZWNhdXNlIG9mIHdpbjE2 IHdpbnNvY2sgZGVmaW5pdGlvbiAqLworLQkJaWYgKChzaG9ydCloZS0+aF9hZGRydHlwZSAhPSBB Rl9JTkVUKQorKwlwPXN0cmNocih4LCc6Jyk7CisrCWlmIChwID09IE5VTEwpCisgCQkJeworLQkJ CUJJT19wcmludGYoYmlvX2VyciwiZ2V0aG9zdGJ5bmFtZSBhZGRyIGlzIG5vdCBBRl9JTkVUXG4i KTsKKy0JCQlyZXR1cm4oMCk7CistCQkJfQorLQkJaXBbMF09aGUtPmhfYWRkcl9saXN0WzBdWzBd OworLQkJaXBbMV09aGUtPmhfYWRkcl9saXN0WzBdWzFdOworLQkJaXBbMl09aGUtPmhfYWRkcl9s aXN0WzBdWzJdOworLQkJaXBbM109aGUtPmhfYWRkcl9saXN0WzBdWzNdOworLQkJfQorLQlyZXR1 cm4oMSk7CistZXJyOgorKwkJQklPX3ByaW50ZihiaW9fZXJyLCJubyBwb3J0IGRlZmluZWRcbiIp OworIAlyZXR1cm4oMCk7CisgCX0KKysJKihwKyspPSdcMCc7CisgCistaW50IGV4dHJhY3RfcG9y dChjaGFyICpzdHIsIHNob3J0ICpwb3J0X3B0cikKKy0JeworLQlpbnQgaTsKKy0Jc3RydWN0IHNl cnZlbnQgKnM7CisrCWlmIChob3N0X3B0ciAhPSBOVUxMKSAqaG9zdF9wdHI9aDsKKysJaWYgKHBv cnRfcHRyICE9IE5VTEwpICpwb3J0X3B0cj1wOworIAorLQlpPWF0b2koc3RyKTsKKy0JaWYgKGkg IT0gMCkKKy0JCSpwb3J0X3B0cj0odW5zaWduZWQgc2hvcnQpaTsKKy0JZWxzZQorLQkJeworLQkJ cz1nZXRzZXJ2YnluYW1lKHN0ciwidGNwIik7CistCQlpZiAocyA9PSBOVUxMKQorLQkJCXsKKy0J CQlCSU9fcHJpbnRmKGJpb19lcnIsImdldHNlcnZieW5hbWUgZmFpbHVyZSBmb3IgJXNcbiIsc3Ry KTsKKy0JCQlyZXR1cm4oMCk7CistCQkJfQorLQkJKnBvcnRfcHRyPW50b2hzKCh1bnNpZ25lZCBz aG9ydClzLT5zX3BvcnQpOworLQkJfQorIAlyZXR1cm4oMSk7CisgCX0KKyAKCmRpZmYgLS1naXQg YS9vcGVuc3NsLTEuMC4wYi12ZXJzaW9uLnBhdGNoIGIvb3BlbnNzbC0xLjAuMGItdmVyc2lvbi5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGI2YWI2Ci0tLSAvZGV2 L251bGwKKysrIGIvb3BlbnNzbC0xLjAuMGItdmVyc2lvbi5wYXRjaApAQCAtMCwwICsxLDIyIEBA CitkaWZmIC11cCBvcGVuc3NsLTEuMC4wYi9jcnlwdG8vb3BlbnNzbHYuaC52ZXJzaW9uIG9wZW5z c2wtMS4wLjBiL2NyeXB0by9vcGVuc3Nsdi5oCistLS0gb3BlbnNzbC0xLjAuMGIvY3J5cHRvL29w ZW5zc2x2LmgudmVyc2lvbgkyMDEwLTExLTE2IDE3OjMxOjIzLjAwMDAwMDAwMCArMDEwMAorKysr IG9wZW5zc2wtMS4wLjBiL2NyeXB0by9vcGVuc3Nsdi5oCTIwMTAtMTEtMTYgMTc6MzI6NTkuMDAw MDAwMDAwICswMTAwCitAQCAtMjUsNyArMjUsOCBAQAorICAqIChQcmlvciB0byAwLjkuNWEgYmV0 YTEsIGEgZGlmZmVyZW50IHNjaGVtZSB3YXMgdXNlZDogTU1OTkZGUkJCIGZvcgorICAqICBtYWpv ciBtaW5vciBmaXggZmluYWwgcGF0Y2gvYmV0YSkKKyAgKi8KKy0jZGVmaW5lIE9QRU5TU0xfVkVS U0lPTl9OVU1CRVIJMHgxMDAwMDAyZgorKy8qIHdlIGhhdmUgdG8ga2VlcCB0aGUgdmVyc2lvbiBu dW1iZXIgdG8gbm90IGJyZWFrIHRoZSBhYmkgKi8KKysjZGVmaW5lIE9QRU5TU0xfVkVSU0lPTl9O VU1CRVIJMHgxMDAwMDAwMworICNpZmRlZiBPUEVOU1NMX0ZJUFMKKyAjZGVmaW5lIE9QRU5TU0xf VkVSU0lPTl9URVhUCSJPcGVuU1NMIDEuMC4wYi1maXBzIDE2IE5vdiAyMDEwIgorICNlbHNlCitA QCAtODMsNyArODQsNyBAQAorICAqIHNob3VsZCBvbmx5IGtlZXAgdGhlIHZlcnNpb25zIHRoYXQg YXJlIGJpbmFyeSBjb21wYXRpYmxlIHdpdGggdGhlIGN1cnJlbnQuCisgICovCisgI2RlZmluZSBT SExJQl9WRVJTSU9OX0hJU1RPUlkgIiIKKy0jZGVmaW5lIFNITElCX1ZFUlNJT05fTlVNQkVSICIx LjAuMCIKKysjZGVmaW5lIFNITElCX1ZFUlNJT05fTlVNQkVSICIxLjAuMGIiCisgCisgCisgI2Vu ZGlmIC8qIEhFQURFUl9PUEVOU1NMVl9IICovCgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC5zcGVjIGIv b3BlbnNzbC5zcGVjCmluZGV4IDBjN2I4ODguLjhlNGE5ZGUgMTAwNjQ0Ci0tLSBhL29wZW5zc2wu c3BlYworKysgYi9vcGVuc3NsLnNwZWMKQEAgLTIwLDcgKzIwLDcgQEAKIAogU3VtbWFyeTogQSBn ZW5lcmFsIHB1cnBvc2UgY3J5cHRvZ3JhcGh5IGxpYnJhcnkgd2l0aCBUTFMgaW1wbGVtZW50YXRp b24KIE5hbWU6IG9wZW5zc2wKLVZlcnNpb246IDEuMC4wYQorVmVyc2lvbjogMS4wLjBiCiBSZWxl YXNlOiAxJXs/ZGlzdH0KICMgV2UgcmVtb3ZlIGNlcnRhaW4gcGF0ZW50ZWQgYWxnb3JpdGhtcyBm cm9tIHRoZSBvcGVuc3NsIHNvdXJjZSB0YXJiYWxsCiAjIHdpdGggdGhlIGhvYmJsZS1vcGVuc3Ns IHNjcmlwdCB3aGljaCBpcyBpbmNsdWRlZCBiZWxvdy4KQEAgLTQzLDEzICs0MywxNCBAQCBQYXRj aDc6IG9wZW5zc2wtMS4wLjAtdGltZXpvbmUucGF0Y2gKICMgQnVnIGZpeGVzCiBQYXRjaDIzOiBv cGVuc3NsLTEuMC4wLWJldGE0LWRlZmF1bHQtcGF0aHMucGF0Y2gKIFBhdGNoMjQ6IG9wZW5zc2wt MC45LjhqLWJhZC1taW1lLnBhdGNoCitQYXRjaDI1OiBvcGVuc3NsLTEuMC4wYS1tYW5maXgucGF0 Y2gKICMgRnVuY3Rpb25hbGl0eSBjaGFuZ2VzCiBQYXRjaDMyOiBvcGVuc3NsLTAuOS44Zy1pYTY0 LnBhdGNoCiBQYXRjaDMzOiBvcGVuc3NsLTEuMC4wLWJldGE0LWNhLWRpci5wYXRjaAogUGF0Y2gz NDogb3BlbnNzbC0wLjkuNi14NTA5LnBhdGNoCiBQYXRjaDM1OiBvcGVuc3NsLTAuOS44ai12ZXJz aW9uLWFkZC1lbmdpbmVzLnBhdGNoCiBQYXRjaDM4OiBvcGVuc3NsLTEuMC4wLWJldGE1LWNpcGhl ci1jaGFuZ2UucGF0Y2gKLVBhdGNoMzk6IG9wZW5zc2wtMS4wLjAtYmV0YTUtaXB2Ni1hcHBzLnBh dGNoCitQYXRjaDM5OiBvcGVuc3NsLTEuMC4wYi1pcHY2LWFwcHMucGF0Y2gKIFBhdGNoNDA6IG9w ZW5zc2wtMS4wLjBhLWZpcHMucGF0Y2gKIFBhdGNoNDE6IG9wZW5zc2wtMS4wLjAtYmV0YTMtZmlw c2NoZWNrLnBhdGNoCiBQYXRjaDQzOiBvcGVuc3NsLTEuMC4wYS1maXBzbW9kZS5wYXRjaApAQCAt NTgsOCArNTksOCBAQCBQYXRjaDQ1OiBvcGVuc3NsLTAuOS44ai1lbnYtbm96bGliLnBhdGNoCiBQ YXRjaDQ3OiBvcGVuc3NsLTEuMC4wLWJldGE1LXJlYWRtZS13YXJuaW5nLnBhdGNoCiBQYXRjaDQ5 OiBvcGVuc3NsLTEuMC4wLWJldGE0LWFsZ28tZG9jLnBhdGNoCiBQYXRjaDUwOiBvcGVuc3NsLTEu MC4wLWJldGE0LWR0bHMxLWFiaS5wYXRjaAotUGF0Y2g1MTogb3BlbnNzbC0xLjAuMGEtdmVyc2lv bi5wYXRjaAotUGF0Y2g1Mjogb3BlbnNzbC0xLjAuMC1iZXRhNC1hZXNuaS5wYXRjaAorUGF0Y2g1 MTogb3BlbnNzbC0xLjAuMGItdmVyc2lvbi5wYXRjaAorUGF0Y2g1Mjogb3BlbnNzbC0xLjAuMGIt YWVzbmkucGF0Y2gKIFBhdGNoNTM6IG9wZW5zc2wtMS4wLjAtbmFtZS1oYXNoLnBhdGNoCiAjIEJh Y2twb3J0ZWQgZml4ZXMgaW5jbHVkaW5nIHNlY3VyaXR5IGZpeGVzCiAKQEAgLTEyNCw2ICsxMjUs NyBAQCBmcm9tIG90aGVyIGZvcm1hdHMgdG8gdGhlIGZvcm1hdHMgdXNlZCBieSB0aGUgT3BlblNT TCB0b29sa2l0LgogCiAlcGF0Y2gyMyAtcDEgLWIgLmRlZmF1bHQtcGF0aHMKICVwYXRjaDI0IC1w MSAtYiAuYmFkLW1pbWUKKyVwYXRjaDI1IC1wMSAtYiAubWFuZml4CiAKICVwYXRjaDMyIC1wMSAt YiAuaWE2NAogJXBhdGNoMzMgLXAxIC1iIC5jYS1kaXIKQEAgLTM5MSw2ICszOTMsMTUgQEAgcm0g LXJmICRSUE1fQlVJTERfUk9PVC8le19saWJkaXJ9L2ZpcHNjYW5pc3Rlci4qCiAlcG9zdHVuIC1w IC9zYmluL2xkY29uZmlnCiAKICVjaGFuZ2Vsb2cKKyogVHVlIE5vdiAxNiAyMDEwIFRvbWFzIE1y YXogPHRtcmF6QHJlZGhhdC5jb20+IDEuMC4wYi0xCistIG5ldyB1cHN0cmVhbSB2ZXJzaW9uIGZp eGluZyBDVkUtMjAxMC0zODY0ICgjNjQ5MzA0KQorCisqIFR1ZSBTZXAgIDcgMjAxMCBUb21hcyBN cmF6IDx0bXJhekByZWRoYXQuY29tPiAxLjAuMGEtMworLSBtYWtlIFNITElCX1ZFUlNJT04gcmVm bGVjdCB0aGUgbGlicmFyeSBzdWZmaXgKKworKiBXZWQgSnVuIDMwIDIwMTAgVG9tYXMgTXJheiA8 dG1yYXpAcmVkaGF0LmNvbT4gMS4wLjBhLTIKKy0gb3BlbnNzbCBtYW4gcGFnZSBmaXggKCM2MDk0 ODQpCisKICogRnJpIEp1biAgNCAyMDEwIFRvbWFzIE1yYXogPHRtcmF6QHJlZGhhdC5jb20+IDEu MC4wYS0xCiAtIG5ldyB1cHN0cmVhbSBwYXRjaCByZWxlYXNlLCBmaXhlcyBDVkUtMjAxMC0wNzQy ICgjNTk4NzM4KQogICBhbmQgQ1ZFLTIwMTAtMTYzMyAoIzU5ODczMikKCmRpZmYgLS1naXQgYS9z b3VyY2VzIGIvc291cmNlcwppbmRleCBmNDJiNjhkLi5lMzE0MjlkIDEwMDY0NAotLS0gYS9zb3Vy Y2VzCisrKyBiL3NvdXJjZXMKQEAgLTEgKzEgQEAKLTM2YTk5MzZlMTc5MTU2NmIyMDVkYWE3Y2I0 YmVhMDc0ICBvcGVuc3NsLTEuMC4wYS11c2EudGFyLmJ6MgorMGVmZWM1YjljOGZjMTAzNTZmNGQ1 MjczMmY5MWY4ZWEgIG9wZW5zc2wtMS4wLjBiLXVzYS50YXIuYnoyCg==