From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] fix-dup-patch: Rebase to FSF GDB 7.4.50.20120103. Date: Thu, 23 Jul 2026 18:30:06 GMT Message-ID: <178483140607.1.2083667582591407534.rpms-gdb-254f0e90bc5a@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: 254f0e90bc5a80ad4cd63c81f50dad5dffc91ee0 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2RiCkJyYW5jaCA6 IGZpeC1kdXAtcGF0Y2gKQ29tbWl0IDogMjU0ZjBlOTBiYzVhODBhZDRjZDYzYzgxZjUwZGFkNWRm ZmM5MWVlMApBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4KRGF0ZSAgIDogMjAxMi0wMS0wM1QxNjowMDoxMiswMTowMApTdGF0cyAgOiArNTM2Ny8tNzkz NSBpbiA0MiBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3Jw bXMvZ2RiL2MvMjU0ZjBlOTBiYzVhODBhZDRjZDYzYzgxZjUwZGFkNWRmZmM5MWVlMD9icmFuY2g9 Zml4LWR1cC1wYXRjaAoKTG9nOgpSZWJhc2UgdG8gRlNGIEdEQiA3LjQuNTAuMjAxMjAxMDMuCgot LS0KZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IDU5Zjc3MDkuLjk2 N2E1OWIgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMSwyICsx LDIgQEAKIC9saWJzdGRjKystdjMtcHl0aG9uLXIxNTU5NzgudGFyLmJ6MgotL2dkYi03LjMuNTAu MjAxMTA3MjIudGFyLmJ6MgorL2dkYi03LjQuNTAuMjAxMjAxMDMudGFyLmJ6MgoKZGlmZiAtLWdp dCBhL2dkYi02LjMtYnoyMzE4MzItb2JzdGFjay0yZ2IucGF0Y2ggYi9nZGItNi4zLWJ6MjMxODMy LW9ic3RhY2stMmdiLnBhdGNoCmluZGV4IDM4NzQyY2QuLjBiMDhjZWUgMTAwNjQ0Ci0tLSBhL2dk Yi02LjMtYnoyMzE4MzItb2JzdGFjay0yZ2IucGF0Y2gKKysrIGIvZ2RiLTYuMy1iejIzMTgzMi1v YnN0YWNrLTJnYi5wYXRjaApAQCAtMSwxMSArMSwxMSBAQAogaHR0cHM6Ly9idWd6aWxsYS5yZWRo YXQuY29tL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yMzE4MzIKIAogCi1JbmRleDogZ2RiLTcu Mi41MC4yMDEwMTExNi9nZGIvc3ltbWlzYy5jCitJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9n ZGIvc3ltbWlzYy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dk Yi9zeW1taXNjLmMJMjAxMC0xMS0xNiAwNzo1Mzo1OS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGIt Ny4yLjUwLjIwMTAxMTE2L2dkYi9zeW1taXNjLmMJMjAxMC0xMS0xNiAwODowMzowOC4wMDAwMDAw MDAgKzAxMDAKLUBAIC0xODYsOCArMTg2LDggQEAgcHJpbnRfb2JqZmlsZV9zdGF0aXN0aWNzICh2 b2lkKQorLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvc3ltbWlzYy5jCTIwMTEtMDQt MDQgMTc6MTk6NTkuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIv c3ltbWlzYy5jCTIwMTEtMTItMTkgMDA6Mjg6MTguMTg5MjMyMDE0ICswMTAwCitAQCAtMTQ3LDgg KzE0Nyw4IEBAIHByaW50X29iamZpbGVfc3RhdGlzdGljcyAodm9pZCkKICAgICAgaWYgKE9CSlNU QVQgKG9iamZpbGUsIHN6X3N0cnRhYikgPiAwKQogICAgICAgIHByaW50Zl9maWx0ZXJlZCAoXygi ICBTcGFjZSB1c2VkIGJ5IGEub3V0IHN0cmluZyB0YWJsZXM6ICVkXG4iKSwKICAJCSAgICAgICBP QkpTVEFUIChvYmpmaWxlLCBzel9zdHJ0YWIpKTsKQEAgLTE2LDEwICsxNiwxMCBAQCBJbmRleDog Z2RiLTcuMi41MC4yMDEwMTExNi9nZGIvc3ltbWlzYy5jCiAgICAgIHByaW50Zl9maWx0ZXJlZCAo XygiICBUb3RhbCBtZW1vcnkgdXNlZCBmb3IgcHN5bWJvbCBjYWNoZTogJWRcbiIpLAogIAkJICAg ICBiY2FjaGVfbWVtb3J5X3VzZWQgKHBzeW1ib2xfYmNhY2hlX2dldF9iY2FjaGUKICAJCSAgICAg ICAgICAgICAgICAgICAgICAgICAgKG9iamZpbGUtPnBzeW1ib2xfY2FjaGUpKSk7Ci1JbmRleDog Z2RiLTcuMi41MC4yMDEwMTExNi9pbmNsdWRlL29ic3RhY2suaAorSW5kZXg6IGdkYi03LjQuNTAu MjAxMTEyMTgvaW5jbHVkZS9vYnN0YWNrLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIw MTAxMTE2Lm9yaWcvaW5jbHVkZS9vYnN0YWNrLmgJMjAwOC0xMC0yMSAwMTowMzozMS4wMDAwMDAw MDAgKzAyMDAKLSsrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2luY2x1ZGUvb2JzdGFjay5oCTIwMTAt MTEtMTYgMDg6MDI6MzcuMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5v cmlnL2luY2x1ZGUvb2JzdGFjay5oCTIwMTEtMTAtMjIgMDM6MzU6MjkuMDAwMDAwMDAwICswMjAw CisrKysgZ2RiLTcuNC41MC4yMDExMTIxOC9pbmNsdWRlL29ic3RhY2suaAkyMDExLTEyLTE5IDAw OjI4OjE4LjE4OTIzMjAxNCArMDEwMAogQEAgLTE4OCwzMSArMTg4LDMxIEBAIHN0cnVjdCBvYnN0 YWNrCQkvKiBjb250cm9sIGN1cnJlbnQgb2JqZWMKICAKICAvKiBEZWNsYXJlIHRoZSBleHRlcm5h bCBmdW5jdGlvbnMgd2UgdXNlOyB0aGV5IGFyZSBpbiBvYnN0YWNrLmMuICAqLwpAQCAtMTI1LDE5 ICsxMjUsMTAgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvaW5jbHVkZS9vYnN0YWNrLmgK ICAgICBpZiAoX19vLT5jaHVua19saW1pdCAtIF9fby0+bmV4dF9mcmVlIDwgX19sZW4pCQkJXAog ICAgICAgX29ic3RhY2tfbmV3Y2h1bmsgKF9fbywgX19sZW4pOwkJCQkJXAogICAgIG9ic3RhY2tf YmxhbmtfZmFzdCAoX19vLCBfX2xlbik7CQkJCQlcCi1AQCAtNTMyLDcgKzUzMiw3IEBAIF9fZXh0 ZW5zaW9uX18JCQkJCQkJCVwKLSAjIGRlZmluZSBvYnN0YWNrX2ZyZWUoaCxvYmopCQkJCQkJXAot ICggKGgpLT50ZW1wID0gKGNoYXIgKikgKG9iaikgLSAoY2hhciAqKSAoaCktPmNodW5rLAkJCVwK LSAgICgoKGgpLT50ZW1wID4gMCAmJiAoaCktPnRlbXAgPCAoaCktPmNodW5rX2xpbWl0IC0gKGNo YXIgKikgKGgpLT5jaHVuaylcCi0tICAgPyAoaW50KSAoKGgpLT5uZXh0X2ZyZWUgPSAoaCktPm9i amVjdF9iYXNlCQkJCVwKLSsgICA/IChQVFJfSU5UX1RZUEUpICgoaCktPm5leHRfZnJlZSA9ICho KS0+b2JqZWN0X2Jhc2UJCQlcCi0gCSAgICA9IChoKS0+dGVtcCArIChjaGFyICopIChoKS0+Y2h1 bmspCQkJCVwKLSAgICA6ICgoKG9ic3RhY2tfZnJlZSkgKChoKSwgKGgpLT50ZW1wICsgKGNoYXIg KikgKGgpLT5jaHVuayksIDApLCAwKSkpCi0gCi1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9s aWJpYmVydHkvb2JzdGFjay5jCitJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9saWJpYmVydHkv b2JzdGFjay5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2xpYmli ZXJ0eS9vYnN0YWNrLmMJMjAwNS0wNS0xMCAxNzozMzozMy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNy4yLjUwLjIwMTAxMTE2L2xpYmliZXJ0eS9vYnN0YWNrLmMJMjAxMC0xMS0xNiAwODowMjoz Ny4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvbGliaWJlcnR5 L29ic3RhY2suYwkyMDA1LTA1LTEwIDE3OjMzOjMzLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03 LjQuNTAuMjAxMTEyMTgvbGliaWJlcnR5L29ic3RhY2suYwkyMDExLTEyLTE5IDAwOjI4OjE4LjE5 MTIzMjAwNiArMDEwMAogQEAgLTQ0LDkgKzQ0LDExIEBACiAgI2lmICFkZWZpbmVkIChfTElCQykg JiYgZGVmaW5lZCAoX19HTlVfTElCUkFSWV9fKSAmJiBfX0dOVV9MSUJSQVJZX18gPiAxCiAgI2lu Y2x1ZGUgPGdudS12ZXJzaW9ucy5oPgoKZGlmZiAtLWdpdCBhL2dkYi02LjMtZ3N0YWNrLTIwMDUw NDExLnBhdGNoIGIvZ2RiLTYuMy1nc3RhY2stMjAwNTA0MTEucGF0Y2gKaW5kZXggOThkNWJiMC4u OTYwODg5YSAxMDA2NDQKLS0tIGEvZ2RiLTYuMy1nc3RhY2stMjAwNTA0MTEucGF0Y2gKKysrIGIv Z2RiLTYuMy1nc3RhY2stMjAwNTA0MTEucGF0Y2gKQEAgLTQsMTEgKzQsMTEgQEAKIAl0byBpbnN0 YWxsIGFuZCB1bmluc3RhbGwuCiAJKiBnc3RhY2suc2gsIGdzdGFjay4xOiBOZXcgZmlsZXMuCiAK LUluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9NYWtlZmlsZS5pbgorSW5kZXg6IGdkYi03 LjQuNTAuMjAxMjAxMDMvZ2RiL01ha2VmaWxlLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41 MC4yMDEwMTExNi5vcmlnL2dkYi9NYWtlZmlsZS5pbgkyMDEwLTExLTA1IDE1OjMxOjI1LjAwMDAw MDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL01ha2VmaWxlLmluCTIwMTAt MTEtMTYgMDc6NTY6MTAuMDAwMDAwMDAwICswMTAwCi1AQCAtOTcyLDcgKzk3Miw3IEBAIGdkYi56 OmdkYi4xCistLS0gZ2RiLTcuNC41MC4yMDEyMDEwMy5vcmlnL2dkYi9NYWtlZmlsZS5pbgkyMDEy LTAxLTAzIDA1OjUyOjE1LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMDMv Z2RiL01ha2VmaWxlLmluCTIwMTItMDEtMDMgMDU6NTM6MjUuOTc0MjEwMjMwICswMTAwCitAQCAt MTAxNyw3ICsxMDE3LDcgQEAgZ2RiLno6Z2RiLjEKICBpbnN0YWxsOiBhbGwKICAJQCQoTUFLRSkg JChGTEFHU19UT19QQVNTKSBpbnN0YWxsLW9ubHkKICAKQEAgLTE3LDcgKzE3LDcgQEAgSW5kZXg6 IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL01ha2VmaWxlLmluCiAgCXRyYW5zZm9ybWVkX25hbWU9 YHQ9JyQocHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSknOyBcCiAgCQkJICBlY2hvIGdkYiB8IHNlZCAt ZSAiJCR0ImAgOyBcCiAgCQlpZiB0ZXN0ICJ4JCR0cmFuc2Zvcm1lZF9uYW1lIiA9IHg7IHRoZW4g XAotQEAgLTEwMDgsNyArMTAwOCwyNSBAQCBpbnN0YWxsLXR1aToKK0BAIC0xMDM5LDcgKzEwMzks MjUgQEAgaW5zdGFsbC1vbmx5OiAkKENPTkZJR19JTlNUQUxMKQogIGluc3RhbGwtcHl0aG9uOgog IAkkKFNIRUxMKSAkKHNyY2RpcikvLi4vbWtpbnN0YWxsZGlycyAkKERFU1RESVIpJChHREJfREFU QURJUikvcHl0aG9uL2dkYgogIApAQCAtNDQsMTAgKzQ0LDEwIEBAIEluZGV4OiBnZGItNy4yLjUw LjIwMTAxMTE2L2dkYi9NYWtlZmlsZS5pbgogIAl0cmFuc2Zvcm1lZF9uYW1lPWB0PSckKHByb2dy YW1fdHJhbnNmb3JtX25hbWUpJzsgXAogIAkJCSAgZWNobyBnZGIgfCBzZWQgLWUgJCR0YCA7IFwK ICAJCWlmIHRlc3QgIngkJHRyYW5zZm9ybWVkX25hbWUiID0geDsgdGhlbiBcCi1AQCAtMTAzMCw2 ICsxMDQ4LDE3IEBAIHVuaW5zdGFsbC10dWk6Ci0gCQlmaSA7IFwKLSAJCXJtIC1mICQoREVTVERJ UikkKGJpbmRpcikvJCR0cmFuc2Zvcm1lZF9uYW1lJChFWEVFWFQpIFwKK0BAIC0xMDUxLDYgKzEw NjksMTggQEAgdW5pbnN0YWxsOiBmb3JjZSAkKENPTkZJR19VTklOU1RBTEwpCiAgCQkgICAgICAk KERFU1RESVIpJChtYW4xZGlyKS8kJHRyYW5zZm9ybWVkX25hbWUuMQorIAlAJChNQUtFKSBETz11 bmluc3RhbGwgIkRPRElSUz0kKFNVQkRJUlMpIiAkKEZMQUdTX1RPX1BBU1MpIHN1YmRpcl9kbwor IAogKy5QSE9OWTogdW5pbnN0YWxsLWdzdGFjawogK3VuaW5zdGFsbC1nc3RhY2s6CiArCXRyYW5z Zm9ybWVkX25hbWU9YHQ9JyQocHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSknOyBcCkBAIC01OSwxMyAr NTksMTQgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL01ha2VmaWxlLmluCiArCQlm aSA7IFwKICsJCXJtIC1mICQoREVTVERJUikkKGJpbmRpcikvJCR0cmFuc2Zvcm1lZF9uYW1lJChF WEVFWFQpIFwKICsJCSAgICAgICQoREVTVERJUikkKG1hbjFkaXIpLyQkdHJhbnNmb3JtZWRfbmFt ZS4xCi0gCisrIAogICMgVGhlIEMrKyBuYW1lIHBhcnNlciBjYW4gYmUgYnVpbHQgc3RhbmRhbG9u ZSBmb3IgdGVzdGluZy4KICB0ZXN0LWNwLW5hbWUtcGFyc2VyLm86IGNwLW5hbWUtcGFyc2VyLmMK LUluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9nc3RhY2suc2gKKyAJJChDT01QSUxFKSAt RFRFU1RfQ1BOQU1FUyBjcC1uYW1lLXBhcnNlci5jCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEw My9nZGIvZ3N0YWNrLnNoCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6 MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvZ3N0YWNr LnNoCTIwMTAtMTEtMTYgMDc6NTU6NDcuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4y MDEyMDEwMy9nZGIvZ3N0YWNrLnNoCTIwMTItMDEtMDMgMDU6NTI6MzcuMjc4Mzg1NjMyICswMTAw CiBAQCAtMCwwICsxLDQ4IEBACiArIyEvYmluL3NoCiArCkBAIC0xMTUsMTAgKzExNiwxMCBAQCBJ bmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvZ3N0YWNrLnNoCiArICAgIC1lICdzL15cKChn ZGIpIFwpKi8vJyBcCiArICAgIC1lICcvXiMvcCcgXAogKyAgICAtZSAnL15UaHJlYWQvcCcKLUlu ZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ3N0YWNrLmV4 cAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nc3Rh Y2suZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAw MDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2dzdGFjay5leHAJMjAxMC0xMS0xNiAwNzo1NTo0Ny4wMDAwMDAwMDAgKzAxMDAKKysrKyBn ZGItNy40LjUwLjIwMTIwMTAzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ3N0YWNrLmV4cAkyMDEy LTAxLTAzIDA1OjUyOjM3LjI3OTM4NTYyOSArMDEwMAogQEAgLTAsMCArMSw3MSBAQAogKyMgQ29w eXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwpAQCAtMTkx LDEwICsxOTIsMTAgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9nc3RhY2suZXhwCiArZ2RiX2V4aXQKICsKICtyZW1vdGVfZXhlYyBob3N0ICJraWxs IC05ICRwaWQiCi1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2dzdGFjay5jCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEwMy9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2dzdGFjay5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6 MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2dzdGFjay5jCTIwMTAtMTEtMTYgMDc6NTU6NDcuMDAwMDAwMDAwICswMTAw CisrKysgZ2RiLTcuNC41MC4yMDEyMDEwMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dzdGFjay5j CTIwMTItMDEtMDMgMDU6NTI6MzcuMjc5Mzg1NjI5ICswMTAwCiBAQCAtMCwwICsxLDQzIEBACiAr LyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKCmRp ZmYgLS1naXQgYS9nZGItNi4zLXBwY2RvdHNvbGliLTIwMDQxMDIyLnBhdGNoIGIvZ2RiLTYuMy1w cGNkb3Rzb2xpYi0yMDA0MTAyMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg NzIyNmMwZC4uMDAwMDAwMAotLS0gYS9nZGItNi4zLXBwY2RvdHNvbGliLTIwMDQxMDIyLnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotMjAwNC0xMC0yMiAgQW5kcmV3IENhZ25l eSAgPGNhZ25leUBnbnUub3JnPgotIAotIAkqIHNvbGliLXN2cjQuYyAoZW5hYmxlX2JyZWFrKTog Q29udmVydCBhIHN5bWJvbCBkZXNjcmlwdG9yIGludG8KLSAJdGhlIGNvcnJlc3BvbmRpbmcgZnVu Y3Rpb24gZW50cnkgcG9pbnQuCi0gCShzb2xpYl9icmVha19uYW1lcyk6IERlbGV0ZSAiLl9kbF9k ZWJ1Z19zdGF0ZSIsIG5vIGxvbmdlciBuZWVkZWQuCi0KLTIwMDctMTAtMTIgIEphbiBLcmF0b2No dmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCVBvcnQgdG8gR0RCLTYuNy4KLSAJ Ci1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDgwMi9nZGIvc29saWItc3ZyNC5jCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDgwMi5vcmlnL2dkYi9zb2xpYi1zdnI0LmMJMjAwOS0wOC0w MyAxMDowMzozNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwODAyL2dkYi9z b2xpYi1zdnI0LmMJMjAwOS0wOC0wMyAxMDo1MToxNS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xNDMx LDcgKzE0MzEsMTUgQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvKQotIAl7 Ci0gCSAgc3ltX2FkZHIgPSBiZmRfbG9va3VwX3N5bWJvbCAodG1wX2JmZCwgKmJrcHRfbmFtZXAp OwotIAkgIGlmIChzeW1fYWRkciAhPSAwKQotLQkgICAgYnJlYWs7Ci0rCSAgICB7Ci0rCSAgICAg IC8qIFRoZSBzeW1ib2wgbWlnaHQgYmUgYSBkZXNjcmlwdG9yLCBjb252ZXJ0IHRvIGludG8gdGhl Ci0rCQkgY29ycmVzcG9uZGluZyBjb2RlIGFkZHJlc3MuICAqLwotKwkgICAgICBzeW1fYWRkciA9 IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKHRhcmdldF9nZGJhcmNoLAotKwkJ CQkJCQkgICAgIHN5bV9hZGRyLAotKwkJCQkJCQkgICAgIHRtcF9iZmRfdGFyZ2V0KTsKLSsJICAg ICAgaWYgKHN5bV9hZGRyICE9IDApCi0rCQlicmVhazsKLSsJICAgIH0KLSAJfQotIAotICAgICAg IGlmIChzeW1fYWRkciAhPSAwKQoKZGlmZiAtLWdpdCBhL2dkYi02LjMtcmVhZG5ldmVyLTIwMDUw OTA3LnBhdGNoIGIvZ2RiLTYuMy1yZWFkbmV2ZXItMjAwNTA5MDcucGF0Y2gKaW5kZXggZjMyNzA1 MS4uOWY3MTJhNyAxMDA2NDQKLS0tIGEvZ2RiLTYuMy1yZWFkbmV2ZXItMjAwNTA5MDcucGF0Y2gK KysrIGIvZ2RiLTYuMy1yZWFkbmV2ZXItMjAwNTA5MDcucGF0Y2gKQEAgLTExLDEwICsxMSwxMCBA QAogCiAgICAgICAgICogZ2RiLnRleGluZm8gKEZpbGUgT3B0aW9ucyk6IERvY3VtZW50IC0tcmVh ZG5ldmVyLgogCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZG9jL2dkYi50ZXhpbmZv CitJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvZG9jL2dkYi50ZXhpbmZvCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAx MS0wNy0yMiAxOTowODoxOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMS0wNy0yMiAxOToxNToxMy4wMDAwMDAwMDAgKzAyMDAK Ky0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDExLTEy LTE5IDAyOjUyOjIzLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2Ri L2RvYy9nZGIudGV4aW5mbwkyMDExLTEyLTE5IDAyOjUyOjI1Ljc2NTQwNzQzNCArMDEwMAogQEAg LTEwMDUsNiArMTAwNSwxMiBAQCBSZWFkIGVhY2ggc3ltYm9sIGZpbGUncyBlbnRpcmUgc3ltYm9s IHRhCiAgdGhlIGRlZmF1bHQsIHdoaWNoIGlzIHRvIHJlYWQgaXQgaW5jcmVtZW50YWxseSBhcyBp dCBpcyBuZWVkZWQuCiAgVGhpcyBtYWtlcyBzdGFydHVwIHNsb3dlciwgYnV0IG1ha2VzIGZ1dHVy ZSBvcGVyYXRpb25zIGZhc3Rlci4KQEAgLTI4LDExICsyOCwxMSBAQCBJbmRleDogZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvZG9jL2dkYi50ZXhpbmZvCiAgQGVuZCB0YWJsZQogIAogIEBub2RlIE1v ZGUgT3B0aW9ucwotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL21haW4uYworSW5kZXg6 IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL21haW4uYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMu NTAuMjAxMTA3MjIub3JpZy9nZGIvbWFpbi5jCTIwMTEtMDctMjIgMTk6MTQ6MjUuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvbWFpbi5jCTIwMTEtMDctMjIgMTk6 MTU6MTMuMDAwMDAwMDAwICswMjAwCi1AQCAtMzk5LDYgKzM5OSw3IEBAIGNhcHR1cmVkX21haW4g KHZvaWQgKmRhdGEpCistLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi9tYWluLmMJMjAx MS0xMi0xOSAwMjo1MjoyMy4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTExMjE4 L2dkYi9tYWluLmMJMjAxMS0xMi0xOSAwMjo1MjozNi45MjUzNjQ0MzggKzAxMDAKK0BAIC00MDYs NiArNDA2LDcgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKICAgICAgICB7InhkYiIsIG5v X2FyZ3VtZW50LCAmeGRiX2NvbW1hbmRzLCAxfSwKICAgICAgICB7ImRieCIsIG5vX2FyZ3VtZW50 LCAmZGJ4X2NvbW1hbmRzLCAxfSwKICAgICAgICB7InJlYWRub3ciLCBub19hcmd1bWVudCwgJnJl YWRub3dfc3ltYm9sX2ZpbGVzLCAxfSwKQEAgLTQwLDcgKzQwLDcgQEAgSW5kZXg6IGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL21haW4uYwogICAgICAgIHsiciIsIG5vX2FyZ3VtZW50LCAmcmVhZG5v d19zeW1ib2xfZmlsZXMsIDF9LAogICAgICAgIHsicXVpZXQiLCBub19hcmd1bWVudCwgJnF1aWV0 LCAxfSwKICAgICAgICB7InEiLCBub19hcmd1bWVudCwgJnF1aWV0LCAxfSwKLUBAIC0xMDY1LDYg KzEwNjYsNyBAQCBPcHRpb25zOlxuXG5cCitAQCAtMTA3Miw2ICsxMDczLDcgQEAgT3B0aW9uczpc blxuXAogICAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXAogICAgLS1xdWlldCAgICAgICAgICAgIERv IG5vdCBwcmludCB2ZXJzaW9uIG51bWJlciBvbiBzdGFydHVwLlxuXAogICAgLS1yZWFkbm93ICAg ICAgICAgIEZ1bGx5IHJlYWQgc3ltYm9sIGZpbGVzIG9uIGZpcnN0IGFjY2Vzcy5cblwKQEAgLTQ4 LDExICs0OCwxMSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvbWFpbi5jCiAgIiks IHN0cmVhbSk7CiAgICBmcHV0c191bmZpbHRlcmVkIChfKCJcCiAgICAtLXNlPUZJTEUgICAgICAg ICAgVXNlIEZJTEUgYXMgc3ltYm9sIGZpbGUgYW5kIGV4ZWN1dGFibGUgZmlsZS5cblwKLUluZGV4 OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zeW1maWxlLmMKK0luZGV4OiBnZGItNy40LjUwLjIw MTExMjE4L2dkYi9zeW1maWxlLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIy Lm9yaWcvZ2RiL3N5bWZpbGUuYwkyMDExLTA1LTExIDA2OjU2OjA3LjAwMDAwMDAwMCArMDIwMAot KysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3N5bWZpbGUuYwkyMDExLTA3LTIyIDE5OjE1OjEz LjAwMDAwMDAwMCArMDIwMAotQEAgLTgxLDYgKzgxLDcgQEAgc3RhdGljIHZvaWQgY2xlYXJfc3lt dGFiX3VzZXJzX2NsZWFudXAgKAorLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvc3lt ZmlsZS5jCTIwMTEtMTItMTUgMTY6MzY6NTUuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41 MC4yMDExMTIxOC9nZGIvc3ltZmlsZS5jCTIwMTEtMTItMTkgMDI6NTI6MjUuNzY3NDA3NDI2ICsw MTAwCitAQCAtODIsNiArODIsNyBAQCBzdGF0aWMgdm9pZCBjbGVhcl9zeW10YWJfdXNlcnNfY2xl YW51cCAoCiAgCiAgLyogR2xvYmFsIHZhcmlhYmxlcyBvd25lZCBieSB0aGlzIGZpbGUuICAqLwog IGludCByZWFkbm93X3N5bWJvbF9maWxlczsJLyogUmVhZCBmdWxsIHN5bWJvbHMgaW1tZWRpYXRl bHkuICAqLwpAQCAtNjAsMTEgKzYwLDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi9zeW1maWxlLmMKICAKICAvKiBFeHRlcm5hbCB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucyByZWZl cmVuY2VkLiAgKi8KICAKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJyZWFk LmMKK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9kd2FyZjJyZWFkLmMKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDExLTA3 LTIyIDE5OjA4OjE5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L2R3YXJmMnJlYWQuYwkyMDExLTA3LTIyIDE5OjE1OjQxLjAwMDAwMDAwMCArMDIwMAotQEAgLTU4 LDYgKzU4LDcgQEAKKy0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL2R3YXJmMnJlYWQu YwkyMDExLTEyLTE5IDAyOjUyOjIzLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAx MTEyMTgvZ2RiL2R3YXJmMnJlYWQuYwkyMDExLTEyLTE5IDAyOjUyOjI1Ljc2OTQwNzQxOCArMDEw MAorQEAgLTU5LDYgKzU5LDcgQEAKICAjaW5jbHVkZSAiYy1sYW5nLmgiCiAgI2luY2x1ZGUgInZh bHByaW50LmgiCiAgI2luY2x1ZGUgPGN0eXBlLmg+CkBAIC03Miw3ICs3Miw3IEBAIEluZGV4OiBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJyZWFkLmMKICAKICAjaW5jbHVkZSA8ZmNudGwu aD4KICAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgotQEAgLTEzODgsOCArMTM4OSw5IEBAIGR3YXJm Ml9oYXNfaW5mbyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUKK0BAIC0xNDA1LDggKzE0MDYsOSBA QCBkd2FyZjJfaGFzX2luZm8gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAodm9pZCAqKSBuYW1lcyk7CiAgICAgICAgZHdhcmYyX3Blcl9vYmpm aWxlLT5vYmpmaWxlID0gb2JqZmlsZTsKICAgICAgfQpAQCAtODQsMTEgKzg0LDExIEBAIEluZGV4 OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJyZWFkLmMKICB9CiAgCiAgLyogV2hlbiBs b2FkaW5nIHNlY3Rpb25zLCB3ZSBsb29rIGVpdGhlciBmb3IgdW5jb21wcmVzc2VkIHNlY3Rpb24g b3IgZm9yCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdG9wLmgKK0luZGV4OiBnZGIt Ny40LjUwLjIwMTExMjE4L2dkYi90b3AuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAx MTA3MjIub3JpZy9nZGIvdG9wLmgJMjAxMS0wNy0yMSAxMzowMzo0NS4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90b3AuaAkyMDExLTA3LTIyIDE5OjE1OjEzLjAw MDAwMDAwMCArMDIwMAotQEAgLTU5LDYgKzU5LDcgQEAgZXh0ZXJuIHZvaWQgc2V0X3Byb21wdCAo Y29uc3QgY2hhciAqKTsKKy0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL3RvcC5oCTIw MTEtMTItMTYgMjE6Mjk6MjguMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDExMTIx OC9nZGIvdG9wLmgJMjAxMS0xMi0xOSAwMjo1MjoyNS43Njk0MDc0MTggKzAxMDAKK0BAIC02MSw2 ICs2MSw3IEBAIGV4dGVybiB2b2lkIHNldF9wcm9tcHQgKGNvbnN0IGNoYXIgKnMpOwogIAogIC8q IEZyb20gcmFuZG9tIHBsYWNlcy4gICovCiAgZXh0ZXJuIGludCByZWFkbm93X3N5bWJvbF9maWxl czsKCmRpZmYgLS1naXQgYS9nZGItNi4zLXNlY3VyaXR5LWVycmF0YS0yMDA1MDYxMC5wYXRjaCBi L2dkYi02LjMtc2VjdXJpdHktZXJyYXRhLTIwMDUwNjEwLnBhdGNoCmluZGV4IDM3NjMzMzIuLjhl MDQ4ZDggMTAwNjQ0Ci0tLSBhL2dkYi02LjMtc2VjdXJpdHktZXJyYXRhLTIwMDUwNjEwLnBhdGNo CisrKyBiL2dkYi02LjMtc2VjdXJpdHktZXJyYXRhLTIwMDUwNjEwLnBhdGNoCkBAIC0xOSwxMSAr MTksMTEgQEAgUHJvcG9zZWQgdXBzdHJlYW0gYnV0IG5ldmVyIGNvbW1pdHRlZCB1cHN0cmVhbS4K ICAgICAgICAgKHNvdXJjZV9jb21tYW5kKTogVXBkYXRlIGRvY3VtZW50YXRpb24uICBDaGVjayBw ZXJtaXNzaW9ucyBpZgogICAgICAgICBGUk9NX1RUWSBpcyAtMS4KIAotSW5kZXg6IGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL2NsaS9jbGktY21kcy5jCitJbmRleDogZ2RiLTcuNC41MC4yMDExMTIx OC9nZGIvY2xpL2NsaS1jbWRzLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIy Lm9yaWcvZ2RiL2NsaS9jbGktY21kcy5jCTIwMTEtMDYtMDcgMTk6MjY6NDYuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvY2xpL2NsaS1jbWRzLmMJMjAxMS0wNy0y MiAxOToxNDoyNS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0zOSw2ICszOSw3IEBACistLS0gZ2RiLTcu NC41MC4yMDExMTIxOC5vcmlnL2dkYi9jbGkvY2xpLWNtZHMuYwkyMDExLTEyLTE2IDIyOjE3OjQy LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2NsaS9jbGktY21k cy5jCTIwMTEtMTItMTkgMDA6Mjc6MTYuNTcyNDY4OTI2ICswMTAwCitAQCAtNDAsNiArNDAsNyBA QAogICNpbmNsdWRlICJzb3VyY2UuaCIKICAjaW5jbHVkZSAiZGlzYXNtLmgiCiAgI2luY2x1ZGUg InRyYWNlcG9pbnQuaCIKQEAgLTMxLDcgKzMxLDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL2NsaS9jbGktY21kcy5jCiAgCiAgI2luY2x1ZGUgInVpLW91dC5oIgogIAotQEAgLTQ4 OSw3ICs0OTAsNyBAQCBzaG93X3NjcmlwdF9leHRfbW9kZSAoc3RydWN0IHVpX2ZpbGUgKmZpCitA QCAtNDg1LDcgKzQ4Niw3IEBAIHNob3dfc2NyaXB0X2V4dF9tb2RlIChzdHJ1Y3QgdWlfZmlsZSAq ZmkKICAKICBpbnQKICBmaW5kX2FuZF9vcGVuX3NjcmlwdCAoY29uc3QgY2hhciAqc2NyaXB0X2Zp bGUsIGludCBzZWFyY2hfcGF0aCwKQEAgLTQwLDcgKzQwLDcgQEAgSW5kZXg6IGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL2NsaS9jbGktY21kcy5jCiAgewogICAgY2hhciAqZmlsZTsKICAgIGludCBm ZDsKLUBAIC01MTUsNiArNTE2LDMyIEBAIGZpbmRfYW5kX29wZW5fc2NyaXB0IChjb25zdCBjaGFy ICpzY3JpcHQKK0BAIC01MTEsNiArNTEyLDMyIEBAIGZpbmRfYW5kX29wZW5fc2NyaXB0IChjb25z dCBjaGFyICpzY3JpcHQKICAgICAgICByZXR1cm4gMDsKICAgICAgfQogIApAQCAtNzMsNyArNzMs NyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvY2xpL2NsaS1jbWRzLmMKICAgIGRv X2NsZWFudXBzIChvbGRfY2xlYW51cHMpOwogIAogICAgKnN0cmVhbXAgPSBmZG9wZW4gKGZkLCBG T1BFTl9SVCk7Ci1AQCAtNTc0LDEzICs2MDEsMTQgQEAgc291cmNlX3NjcmlwdF93aXRoX3NlYXJj aCAoY29uc3QgY2hhciAqZgorQEAgLTU3MiwxMyArNTk5LDE0IEBAIHNvdXJjZV9zY3JpcHRfd2l0 aF9zZWFyY2ggKGNvbnN0IGNoYXIgKmYKICAgIGlmIChmaWxlID09IE5VTEwgfHwgKmZpbGUgPT0g MCkKICAgICAgZXJyb3IgKF8oInNvdXJjZSBjb21tYW5kIHJlcXVpcmVzIGZpbGUgbmFtZSBvZiBm aWxlIHRvIHNvdXJjZS4iKSk7CiAgCkBAIC04MSw3ICs4MSw3IEBAIEluZGV4OiBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi9jbGkvY2xpLWNtZHMuYwogKyAgaWYgKCFmaW5kX2FuZF9vcGVuX3Njcmlw dCAoZmlsZSwgc2VhcmNoX3BhdGgsICZzdHJlYW0sICZmdWxsX3BhdGgsCiArCQkJICAgICBmcm9t X3R0eSkpCiAgICAgIHsKLSAgICAgICAvKiBUaGUgc2NyaXB0IHdhc24ndCBmb3VuZCwgb3Igd2Fz IG90aGVyd2lzZSBpbmFjY2Vzc2libGUuICAKKyAgICAgICAvKiBUaGUgc2NyaXB0IHdhc24ndCBm b3VuZCwgb3Igd2FzIG90aGVyd2lzZSBpbmFjY2Vzc2libGUuCiAgICAgICAgICAgSWYgdGhlIHNv dXJjZSBjb21tYW5kIHdhcyBpbnZva2VkIGludGVyYWN0aXZlbHksIHRocm93IGFuCiAgCSBlcnJv ci4gIE90aGVyd2lzZSAoZS5nLiBpZiBpdCB3YXMgaW52b2tlZCBieSBhIHNjcmlwdCksCiAgCSBz aWxlbnRseSBpZ25vcmUgdGhlIGVycm9yLiAgKi8KQEAgLTkwLDEwICs5MCwxMCBAQCBJbmRleDog Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvY2xpL2NsaS1jbWRzLmMKICAJcGVycm9yX3dpdGhfbmFt ZSAoZmlsZSk7CiAgICAgICAgZWxzZQogIAlyZXR1cm47Ci1JbmRleDogZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuZXhwCitJbmRleDogZ2RiLTcuNC41 MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuZXhwCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysg Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuZXhwCTIw MTEtMDctMjIgMTk6MTQ6MjUuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDExMTIx OC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuZXhwCTIwMTEtMTItMTkgMDA6MjU6MjYu MDc5ODkxOTU0ICswMTAwCiBAQCAtMCwwICsxLDkxIEBACiArIyAgIENvcHlyaWdodCAyMDA1CiAr IyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpAQCAtMTg2LDE3ICsxODYsMTcgQEAg SW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nZGJpbml0 LmV4cAogK30KICsKICtyZW1vdGVfZXhlYyBidWlsZCAicm0gLmdkYmluaXQiCi1JbmRleDogZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuc2FtcGxlCitJ bmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQu c2FtcGxlCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAw MDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2dkYmluaXQuc2FtcGxlCTIwMTEtMDctMjIgMTk6MTQ6MjUuMDAwMDAwMDAwICswMjAwCisr KysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuc2Ft cGxlCTIwMTEtMTItMTkgMDA6MjU6MjYuMDc5ODkxOTU0ICswMTAwCiBAQCAtMCwwICsxIEBACiAr ZWNobyAiXG5pbiBnZGJpbml0IgotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL21haW4u YworSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL21haW4uYwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvbWFpbi5jCTIwMTEtMDctMjIgMTk6MDg6MTku MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvbWFpbi5jCTIwMTEt MDctMjIgMTk6MTQ6MjUuMDAwMDAwMDAwICswMjAwCi1AQCAtODQ5LDcgKzg0OSw3IEBAIGNhcHR1 cmVkX21haW4gKHZvaWQgKmRhdGEpCistLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi9t YWluLmMJMjAxMS0xMS0wNSAxODowODozMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUw LjIwMTExMjE4L2dkYi9tYWluLmMJMjAxMS0xMi0xOSAwMDoyNToyNi4wODA4OTE5NTAgKzAxMDAK K0BAIC04MjIsNyArODIyLDcgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKICAgICAgIGRl YnVnZ2luZyBvciB3aGF0IGRpcmVjdG9yeSB5b3UgYXJlIGluLiAgKi8KICAKICAgIGlmIChob21l X2dkYmluaXQgJiYgIWluaGliaXRfZ2RiaW5pdCkKQEAgLTIwNSw3ICsyMDUsNyBAQCBJbmRleDog Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvbWFpbi5jCiAgCiAgICAvKiBOb3cgcGVyZm9ybSBhbGwg dGhlIGFjdGlvbnMgaW5kaWNhdGVkIGJ5IHRoZSBhcmd1bWVudHMuICAqLwogICAgaWYgKGNkYXJn ICE9IE5VTEwpCi1AQCAtOTI4LDcgKzkyOCw3IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEp CitAQCAtOTAxLDcgKzkwMSw3IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCiAgICAvKiBS ZWFkIHRoZSAuZ2RiaW5pdCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSwgKmlmKiBpdCBp c24ndAogICAgICAgdGhlIHNhbWUgYXMgdGhlICRIT01FLy5nZGJpbml0IGZpbGUgKGl0IHNob3Vs ZCBleGlzdCwgYWxzbykuICAqLwogICAgaWYgKGxvY2FsX2dkYmluaXQgJiYgIWluaGliaXRfZ2Ri aW5pdCkKQEAgLTIxNCwxMCArMjE0LDEwIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi9tYWluLmMKICAKICAgIC8qIE5vdyB0aGF0IGFsbCAuZ2RiaW5pdCdzIGhhdmUgYmVlbiByZWFk IGFuZCBhbGwgLWQgb3B0aW9ucyBoYXZlIGJlZW4KICAgICAgIHByb2Nlc3NlZCwgd2UgY2FuIHJl YWQgYW55IHNjcmlwdHMgbWVudGlvbmVkIGluIFNZTUFSRy4KLUluZGV4OiBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMKK0luZGV4OiBnZGItNy40LjUwLjIwMTEx MjE4L2dkYi9weXRob24vcHktYXV0by1sb2FkLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUw LjIwMTEwNzIyLm9yaWcvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDExLTA1LTE2IDE4OjMz OjU3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3B5dGhvbi9w eS1hdXRvLWxvYWQuYwkyMDExLTA3LTIyIDE5OjE0OjU0LjAwMDAwMDAwMCArMDIwMAorLS0tIGdk Yi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTEtMTIt MTAgMjM6NTE6NDcuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIv cHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTEtMTItMTkgMDA6MjU6MjYuMDgwODkxOTUwICswMTAw CiBAQCAtMjg0LDcgKzI4NCw3IEBAIHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMgKHN0cnVjdCBvYmpm aWxlICoKICAJfQogIApAQCAtMjI3LDExICsyMjcsMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwogIAogICAgICAgIC8qIElmIG9uZSBzY3Jp cHQgaXNuJ3QgZm91bmQgaXQncyBub3QgdW5jb21tb24gZm9yIG1vcmUgdG8gbm90IGJlCiAgCSBm b3VuZCBlaXRoZXIuICBXZSBkb24ndCB3YW50IHRvIHByaW50IGFuIGVycm9yIG1lc3NhZ2UgZm9y IGVhY2gKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jbGkvY2xpLWNtZHMuaAorSW5k ZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2NsaS9jbGktY21kcy5oCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9jbGkvY2xpLWNtZHMuaAkyMDExLTAxLTAx IDE2OjMzOjIwLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2Ns aS9jbGktY21kcy5oCTIwMTEtMDctMjIgMTk6MTQ6MjUuMDAwMDAwMDAwICswMjAwCi1AQCAtMTI3 LDcgKzEyNyw4IEBAIGV4dGVybiB2b2lkIHNvdXJjZV9zY3JpcHQgKGNoYXIgKiwgaW50KTsKKy0t LSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL2NsaS9jbGktY21kcy5oCTIwMTEtMTEtMDEg MTU6NTE6MjMuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvY2xp L2NsaS1jbWRzLmgJMjAxMS0xMi0xOSAwMDoyNToyNi4wODA4OTE5NTAgKzAxMDAKK0BAIC0xMjks NyArMTI5LDggQEAgZXh0ZXJuIHZvaWQgc291cmNlX3NjcmlwdCAoY2hhciAqLCBpbnQpOwogIC8q IEV4cG9ydGVkIHRvIG9iamZpbGVzLmMuICAqLwogIAogIGV4dGVybiBpbnQgZmluZF9hbmRfb3Bl bl9zY3JpcHQgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBzZWFyY2hfcGF0aCwKCmRpZmYgLS1naXQg YS9nZGItNi4zLXN0ZXAtdGhyZWFkLWV4aXQtMjAwNTAyMTEtdGVzdC5wYXRjaCBiL2dkYi02LjMt c3RlcC10aHJlYWQtZXhpdC0yMDA1MDIxMS10ZXN0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAxMWMyYTQ0Li4wMDAwMDAwCi0tLSBhL2dkYi02LjMtc3RlcC10aHJlYWQtZXhp dC0yMDA1MDIxMS10ZXN0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTg4ICswLDAgQEAKLTIw MDUtMDItMTEgIEplZmYgSm9obnN0b24gIDxqam9obnN0bkByZWRoYXQuY29tPgotCi0JKiB0ZXN0 c3VpdGUvZ2RiLnRocmVhZHMvc3RlcC10aHJlYWQtZXhpdC5jOiBOZXcgdGVzdGNhc2UuCi0JKiB0 ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc3RlcC10aHJlYWQtZXhpdC5leHA6IERpdHRvLgotCQotSW5k ZXg6IGdkYi02LjguNTAuMjAwODExMjgvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zdGVwLXRo cmVhZC1leGl0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDow MC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNi44LjUwLjIwMDgxMTI4L2dkYi90ZXN0c3VpdGUv Z2RiLnRocmVhZHMvc3RlcC10aHJlYWQtZXhpdC5jCTIwMDgtMTItMDggMjI6MjE6MjYuMDAwMDAw MDAwICswMTAwCi1AQCAtMCwwICsxLDUwIEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9m IEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAwNSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0 aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot KwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAg IEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSsgICBCb3N0 b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCi0rCi0rI2luY2x1ZGUgPHB0aHJlYWQuaD4KLSsj aW5jbHVkZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPHVuaXN0 ZC5oPgotKwotK3ZvaWQgKnRocmVhZF9mdW5jdGlvbiAodm9pZCAqcHRyKQotK3sKLSsgIGludCAq eCA9IChpbnQgKilwdHI7Ci0rICBwcmludGYoIkluIHRocmVhZF9mdW5jdGlvbiwgKnggaXMgJWRc biIsICp4KTsKLSt9IC8qIHRocmVhZF9mdW5jdGlvbl9lbmQgKi8KLSsKLSt2b2xhdGlsZSBpbnQg cmVwZWF0ID0gMDsKLSsKLSttYWluKCkKLSt7Ci0rICBpbnQgcmV0OwotKyAgcHRocmVhZF90IHRo OwotKyAgaW50IGkgPSAzOwotKwotKyAgcmV0ID0gcHRocmVhZF9jcmVhdGUgKCZ0aCwgTlVMTCwg dGhyZWFkX2Z1bmN0aW9uLCAmaSk7Ci0rICBkbwotKyAgICB7Ci0rICAgICAgcmVwZWF0ID0gMDsK LSsgICAgICBzbGVlcCAoMyk7ICAvKiBzbGVlcCAqLwotKyAgICB9Ci0rICB3aGlsZSAocmVwZWF0 KTsKLSsgIHB0aHJlYWRfam9pbiAodGgsIE5VTEwpOwotKyAgcmV0dXJuIDA7Ci0rfQotKwotKwot SW5kZXg6IGdkYi02LjguNTAuMjAwODExMjgvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zdGVw LXRocmVhZC1leGl0LmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAw OjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi02LjguNTAuMjAwODExMjgvZ2RiL3Rlc3Rz dWl0ZS9nZGIudGhyZWFkcy9zdGVwLXRocmVhZC1leGl0LmV4cAkyMDA4LTEyLTA4IDIyOjIyOjE0 LjAwMDAwMDAwMCArMDEwMAotQEAgLTAsMCArMSwxMjMgQEAKLSsjIFRoaXMgdGVzdGNhc2UgaXMg cGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rIyBDb3B5cmlnaHQgMjAwNSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBv ZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Ci0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsjIEZv dW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAw MjExMS0xMzA3LCBVU0EuICAKLSsKLSsjIENoZWNrIHRoYXQgR0RCIGNhbiBzdGVwIG92ZXIgYSB0 aHJlYWQgZXhpdC4KLSsKLStzZXQgdGVzdGZpbGUgInN0ZXAtdGhyZWFkLWV4aXQiCi0rc2V0IHNy Y2ZpbGUgJHt0ZXN0ZmlsZX0uYwotK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0 ZXN0ZmlsZX0KLStpZiB7W2dkYl9jb21waWxlX3B0aHJlYWRzICIke3NyY2Rpcn0vJHtzdWJkaXJ9 LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIFtsaXN0IGRlYnVnICJpbmNkaXI9 JHtvYmpkaXJ9Il1dICE9ICIiIH0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rZ2RiX2V4aXQK LStnZGJfc3RhcnQKLStnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLStnZGJf bG9hZCAke2JpbmZpbGV9Ci0rCi0rIyBSZXNldCB0aGUgZGVidWcgZmlsZSBkaXJlY3Rvcnkgc28g d2UgY2FuJ3QgZGVidWcgd2l0aGluIHRoZSBDIGxpYnJhcnkKLStnZGJfdGVzdCAic2V0IGRlYnVn LWZpbGUtZGlyZWN0b3J5IC4iICIiICIiCi0rCi0rIwotKyMgUnVuIHRvIGBtYWluJyB3aGVyZSB3 ZSBiZWdpbiBvdXIgdGVzdHMuCi0rIwotKwotK2lmICFbcnVudG9fbWFpbl0gdGhlbiB7Ci0rICAg IGdkYl9zdXBwcmVzc190ZXN0cwotK30KLSsKLSsjIEZJWE1FOiBDdXJyZW50bHkgdGhlIG1haW4g dGhyZWFkIHdpbGwgZXNjYXBlL2V4aXQgYmVmb3JlIG91ciB0aHJlYWQgZmluaXNoZXMKLSsjIHdp dGhvdXQgdGhpcyBzZXR0aW5nLgotK2dkYl90ZXN0ICJzZXQgc2NoZWR1bGVyLWxvY2tpbmcgc3Rl cCIKLStnZGJfdGVzdCAic2hvdyBzY2hlZHVsZXItbG9ja2luZyIgIk1vZGUgZm9yIGxvY2tpbmcg c2NoZWR1bGVyIGR1cmluZyBleGVjdXRpb24gaXMgXCJzdGVwXCIuIiAiY2hlY2sgc2NoZWR1bGVy LWxvY2tpbmcgZmlyc3QiCi0rCi0rc2V0IHNsZWVwX2xpbmUgW2V4cHIgW2dkYl9nZXRfbGluZV9u dW1iZXIgInNsZWVwIl1dCi0rc2V0IGVuZF9saW5lIFtleHByIFtnZGJfZ2V0X2xpbmVfbnVtYmVy ICJ0aHJlYWRfZnVuY3Rpb25fZW5kIl1dCi0rCi0rZ2RiX2JyZWFrcG9pbnQgIiRlbmRfbGluZSIK LStnZGJfdGVzdCAiY29udGludWUiICJCcmVhay4qdGhyZWFkX2Z1bmN0aW9uLioiICJjb250aW51 ZSB0byB0aHJlYWRfZnVuY3Rpb24gMSIKLSsKLSsjIEtlZXAgbmV4dGluZyB1bnRpbCB3ZSBjYXVz ZSB0aGUgdGhyZWFkIHRvIGV4aXQuICBXZSBleHBlY3QgdGhlIG1haW4KLSsjIHRocmVhZCB0byBi ZSBzdG9wcGVkIGFuZCBhIG1lc3NhZ2UgcHJpbnRlZCB0byB0ZWxsIHVzIHdlIGhhdmUgc3RlcHBl ZAotKyMgb3ZlciB0aGUgdGhyZWFkIGV4aXQuCi0rc2V0IHRlc3QgInN0ZXAgb3ZlciB0aHJlYWQg ZXhpdCAxIgotK2dkYl90ZXN0X211bHRpcGxlICJuZXh0IiAiJHRlc3QiIHsKLSsgIC1yZSAiXH0u KiRnZGJfcHJvbXB0ICQiIHsKLSsgICAgIHNlbmRfZ2RiICJuZXh0XG4iCi0rICAgICBleHBfY29u dGludWUKLSsgIH0KLSsgIC1yZSAiXFtUaHJlYWQgLiogZXhpdGVkXF0uKlByb2dyYW0gcmVjZWl2 ZWQgc2lnbmFsIFNJR1NUT1AuKiRnZGJfcHJvbXB0ICQiIHsKLSsgICAgIHBhc3MgIiR0ZXN0Igot KyAgfQotKyAgLXJlICJzdGFydF90aHJlYWQuKiRnZGJfcHJvbXB0ICQiIHsKLSsgICAgIHNlbmRf Z2RiICJuZXh0XG4iCi0rICAgICBleHBfY29udGludWUKLSsgIH0KLSt9Ci0rCi0rIyBXaXRob3V0 IHRoaXMgZml4dXAgd2UgY291bGQgZW5kIHVwIGluOgotKyMgIzAgIDB4MDAxMTA0MTYgaW4gX19r ZXJuZWxfdnN5c2NhbGwgKCkKLSsjICMxICAweDAwMTFkZTI2IGluIF9fbGxsX3VubG9ja193YWtl X3ByaXZhdGUgKCkgZnJvbSAvbGliL2xpYnB0aHJlYWQuc28uMAotKyMgIzIgIDB4MDAxMTc5ZjQg aW4gX0xfdW5sb2NrXzMxNjQgKCkgZnJvbSAvbGliL2xpYnB0aHJlYWQuc28uMAotKyMgIzMgIDB4 MDAxMTZmMDEgaW4gcHRocmVhZF9jcmVhdGVAQEdMSUJDXzIuMSAoKSBmcm9tIC9saWIvbGlicHRo cmVhZC5zby4wCi0rIyAjNCAgMHgwODA0ODUzMSBpbiBtYWluICgpIGF0IC4uLy4uLy4vZ2RiL3Rl c3RzdWl0ZS9nZGIudGhyZWFkcy9zdGVwLXRocmVhZC1leGl0LmM6MzkKLStnZGJfYnJlYWtwb2lu dCAiJHNsZWVwX2xpbmUiCi0rZ2RiX3Rlc3QgInNldCByZXBlYXQ9MSIgIiIgIkdldCB0byB0aGUg c2xlZXAgZnVuY3Rpb24gcHJlcGFyZSAxIgotK2dkYl90ZXN0ICJjb250aW51ZSIgIkJyZWFrLiok c2xlZXBfbGluZS4qIiAiR2V0IHRvIHRoZSBzbGVlcCBmdW5jdGlvbiAxIgotKwotK2dkYl90ZXN0 ICJidCIgIm1haW4uKiRzbGVlcF9saW5lLioiICJiYWNrdHJhY2UgYWZ0ZXIgc3RlcCAxIgotKwot K3J1bnRvX21haW4KLStnZGJfdGVzdCAic2hvdyBzY2hlZHVsZXItbG9ja2luZyIgIk1vZGUgZm9y IGxvY2tpbmcgc2NoZWR1bGVyIGR1cmluZyBleGVjdXRpb24gaXMgXCJzdGVwXCIuIiAiY2hlY2sg c2NoZWR1bGVyLWxvY2tpbmcgc2Vjb25kIgotKwotK2dkYl9icmVha3BvaW50ICIkc2xlZXBfbGlu ZSIKLStnZGJfYnJlYWtwb2ludCAiJGVuZF9saW5lIgotK3NldCB0ZXN0ICJjb250aW51ZSB0byB0 aHJlYWRfZnVuY3Rpb24gMiIKLStnZGJfdGVzdF9tdWx0aXBsZSAiY29udGludWUiICIkdGVzdCIg ewotKyAgICAtcmUgIkJyZWFrLip0aHJlYWRfZnVuY3Rpb24uKiRnZGJfcHJvbXB0ICQiIHsKLSsJ cGFzcyAkdGVzdAotKyAgICB9Ci0rICAgIC1yZSAiQnJlYWsuKiRzbGVlcF9saW5lLiokZ2RiX3By b21wdCAkIiB7Ci0rCWdkYl90ZXN0ICJzZXQgcmVwZWF0PTEiICIiICIiCi0rCXNlbmRfZ2RiICJj b250aW51ZVxuIgotKwlleHBfY29udGludWUKLSsgICAgfQotK30KLSsKLSsjIEtlZXAgbmV4dGlu ZyB1bnRpbCB3ZSBjYXVzZSB0aGUgdGhyZWFkIHRvIGV4aXQuICBJbiB0aGlzIGNhc2UsIHdlCi0r IyBleHBlY3QgdGhlIGJyZWFrcG9pbnQgaW4gdGhlIG1haW4gdGhyZWFkIHRvIGhhdmUgYWxyZWFk eSB0cmlnZ2VyZWQKLSsjIGFuZCBzbyB3ZSBzaG91bGQgc3RvcCB0aGVyZSB3aXRoIGEgbWVzc2Fn ZSB0aGF0IHdlIHN0ZXBwZWQgb3ZlcgotKyMgdGhlIHRocmVhZCBleGl0LgotK3NldCB0ZXN0ICJz dGVwIG92ZXIgdGhyZWFkIGV4aXQgMiIKLStnZGJfdGVzdF9tdWx0aXBsZSAibmV4dCIgIiR0ZXN0 IiB7Ci0rICAtcmUgIlx9LiokZ2RiX3Byb21wdCAkIiB7Ci0rICAgICBzZW5kX2dkYiAibmV4dFxu IgotKyAgICAgZXhwX2NvbnRpbnVlCi0rICB9Ci0rICAtcmUgIlxbVGhyZWFkIC4qIGV4aXRlZFxd LipCcmVhay4qJHNsZWVwX2xpbmUuKiRnZGJfcHJvbXB0ICQiIHsKLSsgICAgIHBhc3MgIiR0ZXN0 IChicmVha3BvaW50IGhpdCkiCi0rICB9Ci0rICAtcmUgIlxbVGhyZWFkIC4qIGV4aXRlZFxdLiok Z2RiX3Byb21wdCAkIiB7Ci0rICAgICBwYXNzICIkdGVzdCAoYnJlYWtwb2ludCBub3QgaGl0KSIK LSsgIH0KLSsgIC1yZSAic3RhcnRfdGhyZWFkLiokZ2RiX3Byb21wdCAkIiB7Ci0rICAgICBzZW5k X2dkYiAibmV4dFxuIgotKyAgICAgZXhwX2NvbnRpbnVlCi0rICB9Ci0rfQotKwoKZGlmZiAtLWdp dCBhL2dkYi02LjMtdGVzdC1kdG9yZml4LTIwMDUwMTIxLnBhdGNoIGIvZ2RiLTYuMy10ZXN0LWR0 b3JmaXgtMjAwNTAxMjEucGF0Y2gKaW5kZXggNTEzMDhiYy4uYThhMDI2NiAxMDA2NDQKLS0tIGEv Z2RiLTYuMy10ZXN0LWR0b3JmaXgtMjAwNTAxMjEucGF0Y2gKKysrIGIvZ2RiLTYuMy10ZXN0LWR0 b3JmaXgtMjAwNTAxMjEucGF0Y2gKQEAgLTEsMzIgKzEsNyBAQAotSW5kZXg6IGdkYi90ZXN0c3Vp dGUvQ2hhbmdlTG9nCi0yMDA1LTAxLTIxICBKZWZmIEpvaG5zdG9uICA8ampvaG5zdG5AcmVkaGF0 LmNvbT4KLQotCSogZ2RiLmNwL2NvbnN0cnVjdG9ydGVzdC5leHA6IE5ldyB0ZXN0LgotCSogZ2Ri LmNwL2NvbnN0cnVjdG9ydGVzdC5jYzogRGl0dG8uCi0JKiBnZGIuY3AvdGVtcGxhdGVzLmV4cDog Q2hhbmdlIGJyZWFrIG9mIGR0b3IgdG8JYmUgZnVsbHkgcXVvdGVkLgotCi0yMDA3LTA5LTIyICBK YW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCSogZ2RiLmNwL2Nv bnN0cnVjdG9ydGVzdC5leHAsIGdkYi5jcC9jb25zdHJ1Y3RvcnRlc3QuY2M6IFRlc3QgYWxzbyB0 aGUKLQlgJGRlbGV0ZScgZGVzdHJ1Y3RvciB2YXJpYW50LgotCi0yMDA3LTA5LTI1ICBKYW4gS3Jh dG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCSogZ2RiLmNwL2NvbnN0cnVj dG9ydGVzdC5leHA6IERlbGV0ZSB0aGUgRklYTUUgd29ya2Fyb3VuZCBvZiByZXN0YXJ0aW5nCi0J dGhlIHdob2xlIEdEQi4KLQotMjAwNy0xMC0wNSAgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+Ci0KLQkqIGdkYi5jcC9jb25zdHJ1Y3RvcnRlc3QuZXhwOiBUZXN0IEJS RUFLUE9JTlRfUkVfU0VUIGZvciBtdWx0aXBsZSBQQ3MKLQlieSBQSUUuCi0JKiBnZGIuY3AvY29u c3RydWN0b3J0ZXN0LmV4cDogSGFuZGxlIHRoZSBjaGFuZ2Ugb2Ygc2V0dGluZ3MgYnJlYWtwb2lu dHMKLQlhbHdheXMgYXQgYWxsIHRoZSBjdG9yL2R0b3IgdmFyaWFudHMuCi0KLVsgUmVtb3ZlZCB0 aGUgYGdkYi5jcC90ZW1wbGF0ZXMuZXhwJyBwYXRjaC4gIF0KLVsgVXBkYXRlZCB0aGUgcGF0Y2gg Zm9yICIoWCBsb2NhdGlvbiIpIG9mIEdEQi02LjgrLiAgXQotCi0tLS0gZ2RiLTYuMy9nZGIvdGVz dHN1aXRlL2dkYi5jcC9jb25zdHJ1Y3RvcnRlc3QuY2MuZml4CUZyaSBKYW4gMjEgMTc6MDY6NTYg MjAwNQotKysrIGdkYi02LjMvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvY29uc3RydWN0b3J0ZXN0LmNj CUZyaSBKYW4gMjEgMTc6MDU6MTggMjAwNQorSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTkvZ2Ri L3Rlc3RzdWl0ZS9nZGIuY3AvY29uc3RydWN0b3J0ZXN0LmNjCis9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rl di9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2RiLTcuNC41 MC4yMDExMTIxOS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9jb25zdHJ1Y3RvcnRlc3QuY2MJMjAxMS0x Mi0xOSAyMjowNTowMi44MjU0MzE3MzUgKzAxMDAKIEBAIC0wLDAgKzEsOTkgQEAKICsvKiBUaGlz IHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwpAQCAtMTI3LDgg KzEwMiwxMCBAQCBJbmRleDogZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKICt7CiArICAgeSA9IDI7 IC8qIEZpcnN0IGxpbmUgRCAqLwogK30KLS0tLSBnZGItNi4zL2dkYi90ZXN0c3VpdGUvZ2RiLmNw L2NvbnN0cnVjdG9ydGVzdC5leHAuZml4CUZyaSBKYW4gMjEgMTc6MDc6MDIgMjAwNQotKysrIGdk Yi02LjMvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvY29uc3RydWN0b3J0ZXN0LmV4cAlGcmkgSmFuIDIx IDE3OjA1OjI5IDIwMDUKK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUv Z2RiLmNwL2NvbnN0cnVjdG9ydGVzdC5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3 MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy40LjUwLjIwMTExMjE5 L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2NvbnN0cnVjdG9ydGVzdC5leHAJMjAxMS0xMi0xOSAyMzow NzoyNC4xNDgyOTA4OTMgKzAxMDAKIEBAIC0wLDAgKzEsMTMwIEBACiArIyBUaGlzIHRlc3RjYXNl IGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwpAQCAtMjMyLDcgKzIwOSw3IEBA IEluZGV4OiBnZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwogK3NldCBkZWZpbmVfbGluZV9kdG9yIFtn ZGJfZ2V0X2xpbmVfbnVtYmVyICJEZXN0cnVjdG9yIEMiXQogKyMgQnJlYWsgb24gdGhlIHZhcmlv dXMgZm9ybXMgb2YgdGhlIEM6On5DIGRlc3RydWN0b3IKICsjICIgKFsyM10gbG9jYXRpb25zKSIg aXMgZGlzcGxheWVkIGRlcGVuZGluZyBvbiBHKysgdmVyc2lvbi4KLStnZGJfdGVzdCAiYnJlYWsg Q1w6XDp+QyIgIkJyZWFrcG9pbnQgLiosIGxpbmUgKCRkZWZpbmVfbGluZV9kdG9yfCRkZWZpbmVf bGluZV9kdG9yKVxcLi4qIiAiYnJlYWtpbmcgb24gQzo6fkMiCisrZ2RiX3Rlc3QgImJyZWFrIENc Olw6fkMiICJCcmVha3BvaW50IC4qOiBDOjp+Q1xcLiBcXCgyIGxvY2F0aW9uc1xcKSIgImJyZWFr aW5nIG9uIEM6On5DIgogK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJGaXJzdCBsaW5lIH5D IgogKwogKyMgVmVyaWZ5IHRoYXQgd2UgY2FuIGJyZWFrIGJ5IGxpbmUgbnVtYmVyIGluIGEgZGVz dHJ1Y3RvciBhbmQgZmluZAoKZGlmZiAtLWdpdCBhL2dkYi02LjMtdGVzdC1waWUtMjAwNTAxMDcu cGF0Y2ggYi9nZGItNi4zLXRlc3QtcGllLTIwMDUwMTA3LnBhdGNoCmluZGV4IDBiNGEyZGIuLjYx MTE1NDEgMTAwNjQ0Ci0tLSBhL2dkYi02LjMtdGVzdC1waWUtMjAwNTAxMDcucGF0Y2gKKysrIGIv Z2RiLTYuMy10ZXN0LXBpZS0yMDA1MDEwNy5wYXRjaApAQCAtMSwyOSArMSwyOSBAQAotSW5kZXg6 IGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUuYWMKK0luZGV4OiBn ZGItNy40LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvY29uZmlndXJlLmFjCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDMyMC5vcmlnL2dkYi90ZXN0c3VpdGUvY29uZmlndXJlLmFj CTIwMTEtMDMtMDMgMTc6NTc6NTUuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDEx MDMyMC9nZGIvdGVzdHN1aXRlL2NvbmZpZ3VyZS5hYwkyMDExLTAzLTIwIDIwOjIxOjQzLjAwMDAw MDAwMCArMDEwMAorLS0tIGdkYi03LjQuNTAuMjAxMTEyMTkub3JpZy9nZGIvdGVzdHN1aXRlL2Nv bmZpZ3VyZS5hYwkyMDExLTEyLTE5IDIxOjA3OjAyLjE3ODQ3MjE1NyArMDEwMAorKysrIGdkYi03 LjQuNTAuMjAxMTEyMTkvZ2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUuYWMJMjAxMS0xMi0xOSAyMjow NTowMi43MDQ0MzIyMTMgKzAxMDAKIEBAIC05Nyw2ICs5Nyw2IEBAIEFDX09VVFBVVChbTWFrZWZp bGUgXAogICAgZ2RiLmhwL2dkYi5hQ0MvTWFrZWZpbGUgZ2RiLmhwL2dkYi5jb21wYXQvTWFrZWZp bGUgXAotICAgZ2RiLmhwL2dkYi5kZWZlY3RzL01ha2VmaWxlIFwKKyAgIGdkYi5ocC9nZGIuZGVm ZWN0cy9NYWtlZmlsZSBnZGIubGluZXNwZWMvTWFrZWZpbGUgXAogICAgZ2RiLm1pL01ha2VmaWxl IGdkYi5tb2R1bGEyL01ha2VmaWxlIGdkYi5tdWx0aS9NYWtlZmlsZSBcCiAtICBnZGIub2JqYy9N YWtlZmlsZSBnZGIub3BlbmNsL01ha2VmaWxlIGdkYi5vcHQvTWFrZWZpbGUgZ2RiLnBhc2NhbC9N YWtlZmlsZSBcCiArICBnZGIub2JqYy9NYWtlZmlsZSBnZGIub3BlbmNsL01ha2VmaWxlIGdkYi5v cHQvTWFrZWZpbGUgZ2RiLnBhc2NhbC9NYWtlZmlsZSBnZGIucGllL01ha2VmaWxlIFwKICAgIGdk Yi5weXRob24vTWFrZWZpbGUgZ2RiLnJldmVyc2UvTWFrZWZpbGUgZ2RiLnN0YWJzL01ha2VmaWxl IFwKICAgIGdkYi50aHJlYWRzL01ha2VmaWxlIGdkYi50cmFjZS9NYWtlZmlsZSBnZGIueG1sL01h a2VmaWxlXSkKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUvY29uZmln dXJlCitJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOS9nZGIvdGVzdHN1aXRlL2NvbmZpZ3VyZQog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMTAzMjAub3JpZy9nZGIvdGVzdHN1aXRlL2Nv bmZpZ3VyZQkyMDExLTAzLTAzIDE3OjU3OjU1LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIu NTAuMjAxMTAzMjAvZ2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUJMjAxMS0wMy0yMCAyMDoyMTo0My4w MDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy40LjUwLjIwMTExMjE5Lm9yaWcvZ2RiL3Rlc3RzdWl0 ZS9jb25maWd1cmUJMjAxMS0xMi0xOSAyMTowNzowMi4xNzk0NzIxNTMgKzAxMDAKKysrKyBnZGIt Ny40LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvY29uZmlndXJlCTIwMTEtMTItMTkgMjI6MDU6 MDIuNzM1NDMyMDkwICswMTAwCiBAQCAtMzQ0OCw3ICszNDQ4LDcgQEAgZG9uZQogIAogIAogIAot LWFjX2NvbmZpZ19maWxlcz0iJGFjX2NvbmZpZ19maWxlcyBNYWtlZmlsZSBnZGIuYWRhL01ha2Vm aWxlIGdkYi5hcmNoL01ha2VmaWxlIGdkYi5hc20vTWFrZWZpbGUgZ2RiLmJhc2UvTWFrZWZpbGUg Z2RiLmNlbGwvTWFrZWZpbGUgZ2RiLmNwL01ha2VmaWxlIGdkYi5kaXNhc20vTWFrZWZpbGUgZ2Ri LmR3YXJmMi9NYWtlZmlsZSBnZGIuZm9ydHJhbi9NYWtlZmlsZSBnZGIuc2VydmVyL01ha2VmaWxl IGdkYi5qYXZhL01ha2VmaWxlIGdkYi5ocC9NYWtlZmlsZSBnZGIuaHAvZ2RiLm9iamRiZy9NYWtl ZmlsZSBnZGIuaHAvZ2RiLmJhc2UtaHAvTWFrZWZpbGUgZ2RiLmhwL2dkYi5hQ0MvTWFrZWZpbGUg Z2RiLmhwL2dkYi5jb21wYXQvTWFrZWZpbGUgZ2RiLmhwL2dkYi5kZWZlY3RzL01ha2VmaWxlIGdk Yi5taS9NYWtlZmlsZSBnZGIubW9kdWxhMi9NYWtlZmlsZSBnZGIubXVsdGkvTWFrZWZpbGUgZ2Ri Lm9iamMvTWFrZWZpbGUgZ2RiLm9wZW5jbC9NYWtlZmlsZSBnZGIub3B0L01ha2VmaWxlIGdkYi5w YXNjYWwvTWFrZWZpbGUgZ2RiLnB5dGhvbi9NYWtlZmlsZSBnZGIucmV2ZXJzZS9NYWtlZmlsZSBn ZGIuc3RhYnMvTWFrZWZpbGUgZ2RiLnRocmVhZHMvTWFrZWZpbGUgZ2RiLnRyYWNlL01ha2VmaWxl IGdkYi54bWwvTWFrZWZpbGUiCi0rYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIE1h a2VmaWxlIGdkYi5hZGEvTWFrZWZpbGUgZ2RiLmFyY2gvTWFrZWZpbGUgZ2RiLmFzbS9NYWtlZmls ZSBnZGIuYmFzZS9NYWtlZmlsZSBnZGIuY2VsbC9NYWtlZmlsZSBnZGIuY3AvTWFrZWZpbGUgZ2Ri LmRpc2FzbS9NYWtlZmlsZSBnZGIuZHdhcmYyL01ha2VmaWxlIGdkYi5mb3J0cmFuL01ha2VmaWxl IGdkYi5zZXJ2ZXIvTWFrZWZpbGUgZ2RiLmphdmEvTWFrZWZpbGUgZ2RiLmhwL01ha2VmaWxlIGdk Yi5ocC9nZGIub2JqZGJnL01ha2VmaWxlIGdkYi5ocC9nZGIuYmFzZS1ocC9NYWtlZmlsZSBnZGIu aHAvZ2RiLmFDQy9NYWtlZmlsZSBnZGIuaHAvZ2RiLmNvbXBhdC9NYWtlZmlsZSBnZGIuaHAvZ2Ri LmRlZmVjdHMvTWFrZWZpbGUgZ2RiLm1pL01ha2VmaWxlIGdkYi5tb2R1bGEyL01ha2VmaWxlIGdk Yi5tdWx0aS9NYWtlZmlsZSBnZGIub2JqYy9NYWtlZmlsZSBnZGIub3BlbmNsL01ha2VmaWxlIGdk Yi5vcHQvTWFrZWZpbGUgZ2RiLnBhc2NhbC9NYWtlZmlsZSBnZGIucGllL01ha2VmaWxlIGdkYi5w eXRob24vTWFrZWZpbGUgZ2RiLnJldmVyc2UvTWFrZWZpbGUgZ2RiLnN0YWJzL01ha2VmaWxlIGdk Yi50aHJlYWRzL01ha2VmaWxlIGdkYi50cmFjZS9NYWtlZmlsZSBnZGIueG1sL01ha2VmaWxlIgor LWFjX2NvbmZpZ19maWxlcz0iJGFjX2NvbmZpZ19maWxlcyBNYWtlZmlsZSBnZGIuYWRhL01ha2Vm aWxlIGdkYi5hcmNoL01ha2VmaWxlIGdkYi5hc20vTWFrZWZpbGUgZ2RiLmJhc2UvTWFrZWZpbGUg Z2RiLmNlbGwvTWFrZWZpbGUgZ2RiLmNwL01ha2VmaWxlIGdkYi5kaXNhc20vTWFrZWZpbGUgZ2Ri LmR3YXJmMi9NYWtlZmlsZSBnZGIuZm9ydHJhbi9NYWtlZmlsZSBnZGIuc2VydmVyL01ha2VmaWxl IGdkYi5qYXZhL01ha2VmaWxlIGdkYi5ocC9NYWtlZmlsZSBnZGIuaHAvZ2RiLm9iamRiZy9NYWtl ZmlsZSBnZGIuaHAvZ2RiLmJhc2UtaHAvTWFrZWZpbGUgZ2RiLmhwL2dkYi5hQ0MvTWFrZWZpbGUg Z2RiLmhwL2dkYi5jb21wYXQvTWFrZWZpbGUgZ2RiLmhwL2dkYi5kZWZlY3RzL01ha2VmaWxlIGdk Yi5saW5lc3BlYy9NYWtlZmlsZSBnZGIubWkvTWFrZWZpbGUgZ2RiLm1vZHVsYTIvTWFrZWZpbGUg Z2RiLm11bHRpL01ha2VmaWxlIGdkYi5vYmpjL01ha2VmaWxlIGdkYi5vcGVuY2wvTWFrZWZpbGUg Z2RiLm9wdC9NYWtlZmlsZSBnZGIucGFzY2FsL01ha2VmaWxlIGdkYi5weXRob24vTWFrZWZpbGUg Z2RiLnJldmVyc2UvTWFrZWZpbGUgZ2RiLnN0YWJzL01ha2VmaWxlIGdkYi50aHJlYWRzL01ha2Vm aWxlIGdkYi50cmFjZS9NYWtlZmlsZSBnZGIueG1sL01ha2VmaWxlIgorK2FjX2NvbmZpZ19maWxl cz0iJGFjX2NvbmZpZ19maWxlcyBNYWtlZmlsZSBnZGIuYWRhL01ha2VmaWxlIGdkYi5hcmNoL01h a2VmaWxlIGdkYi5hc20vTWFrZWZpbGUgZ2RiLmJhc2UvTWFrZWZpbGUgZ2RiLmNlbGwvTWFrZWZp bGUgZ2RiLmNwL01ha2VmaWxlIGdkYi5kaXNhc20vTWFrZWZpbGUgZ2RiLmR3YXJmMi9NYWtlZmls ZSBnZGIuZm9ydHJhbi9NYWtlZmlsZSBnZGIuc2VydmVyL01ha2VmaWxlIGdkYi5qYXZhL01ha2Vm aWxlIGdkYi5ocC9NYWtlZmlsZSBnZGIuaHAvZ2RiLm9iamRiZy9NYWtlZmlsZSBnZGIuaHAvZ2Ri LmJhc2UtaHAvTWFrZWZpbGUgZ2RiLmhwL2dkYi5hQ0MvTWFrZWZpbGUgZ2RiLmhwL2dkYi5jb21w YXQvTWFrZWZpbGUgZ2RiLmhwL2dkYi5kZWZlY3RzL01ha2VmaWxlIGdkYi5saW5lc3BlYy9NYWtl ZmlsZSBnZGIubWkvTWFrZWZpbGUgZ2RiLm1vZHVsYTIvTWFrZWZpbGUgZ2RiLm11bHRpL01ha2Vm aWxlIGdkYi5vYmpjL01ha2VmaWxlIGdkYi5vcGVuY2wvTWFrZWZpbGUgZ2RiLm9wdC9NYWtlZmls ZSBnZGIucGFzY2FsL01ha2VmaWxlIGdkYi5waWUvTWFrZWZpbGUgZ2RiLnB5dGhvbi9NYWtlZmls ZSBnZGIucmV2ZXJzZS9NYWtlZmlsZSBnZGIuc3RhYnMvTWFrZWZpbGUgZ2RiLnRocmVhZHMvTWFr ZWZpbGUgZ2RiLnRyYWNlL01ha2VmaWxlIGdkYi54bWwvTWFrZWZpbGUiCiAgCiAgY2F0ID5jb25m Y2FjaGUgPDxcX0FDRU9GCiAgIyBUaGlzIGZpbGUgaXMgYSBzaGVsbCBzY3JpcHQgdGhhdCBjYWNo ZXMgdGhlIHJlc3VsdHMgb2YgY29uZmlndXJlCi1AQCAtNDE3Myw2ICs0MTczLDcgQEAgZG8KK0BA IC00MTc0LDYgKzQxNzQsNyBAQCBkbwogICAgICAiZ2RiLm9wZW5jbC9NYWtlZmlsZSIpIENPTkZJ R19GSUxFUz0iJENPTkZJR19GSUxFUyBnZGIub3BlbmNsL01ha2VmaWxlIiA7OwogICAgICAiZ2Ri Lm9wdC9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnZGIub3B0L01ha2Vm aWxlIiA7OwogICAgICAiZ2RiLnBhc2NhbC9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJ R19GSUxFUyBnZGIucGFzY2FsL01ha2VmaWxlIiA7OwpAQCAtMzEsMTAgKzMxLDEwIEBAIEluZGV4 OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUvY29uZmlndXJlCiAgICAgICJnZGIu cHl0aG9uL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGdkYi5weXRob24v TWFrZWZpbGUiIDs7CiAgICAgICJnZGIucmV2ZXJzZS9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0i JENPTkZJR19GSUxFUyBnZGIucmV2ZXJzZS9NYWtlZmlsZSIgOzsKICAgICAgImdkYi5zdGFicy9N YWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnZGIuc3RhYnMvTWFrZWZpbGUi IDs7Ci1JbmRleDogZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0 YWNoLmMKK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9h dHRhY2guYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAw MDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIu cGllL2F0dGFjaC5jCTIwMTEtMDMtMjAgMjA6MjE6NDMuMDAwMDAwMDAwICswMTAwCisrKysgZ2Ri LTcuNC41MC4yMDExMTIxOS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoLmMJMjAxMS0xMi0x OSAyMjowNTowMi43ODI0MzE5MDUgKzAxMDAKIEBAIC0wLDAgKzEsMjAgQEAKICsvKiBUaGlzIHBy b2dyYW0gaXMgaW50ZW5kZWQgdG8gYmUgc3RhcnRlZCBvdXRzaWRlIG9mIGdkYiwgYW5kIHRoZW4K ICsgICBhdHRhY2hlZCB0byBieSBnZGIuICBUaHVzLCBpdCBzaW1wbHkgc3BpbnMgaW4gYSBsb29w LiAgVGhlIGxvb3AKQEAgLTU2LDEwICs1NiwxMCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDMy MC9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoLmMKICsgICAgfQogKyAgcmV0dXJuIDA7CiAr fQotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFj aDIuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTkvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0 dGFjaDIuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAw MDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIu cGllL2F0dGFjaDIuYwkyMDExLTAzLTIwIDIwOjIxOjQzLjAwMDAwMDAwMCArMDEwMAorKysrIGdk Yi03LjQuNTAuMjAxMTEyMTkvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFjaDIuYwkyMDExLTEy LTE5IDIyOjA1OjAyLjc4NjQzMTg4OSArMDEwMAogQEAgLTAsMCArMSwyNCBAQAogKy8qIFRoaXMg cHJvZ3JhbSBpcyBpbnRlbmRlZCB0byBiZSBzdGFydGVkIG91dHNpZGUgb2YgZ2RiLCBhbmQgdGhl bgogKyAgIGF0dGFjaGVkIHRvIGJ5IGdkYi4gIFRodXMsIGl0IHNpbXBseSBzcGlucyBpbiBhIGxv b3AuICBUaGUgbG9vcApAQCAtODUsMTAgKzg1LDEwIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEw MzIwL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9hdHRhY2gyLmMKICsgICAgfQogKyAgcmV0dXJuICgw KTsKICt9Ci1JbmRleDogZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvdGVzdHN1aXRlL2dkYi5waWUv YnJlYWsuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTkvZ2RiL3Rlc3RzdWl0ZS9nZGIucGll L2JyZWFrLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4w MDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUvZ2Ri LnBpZS9icmVhay5jCTIwMTEtMDMtMjAgMjA6MjE6NDMuMDAwMDAwMDAwICswMTAwCisrKysgZ2Ri LTcuNC41MC4yMDExMTIxOS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYnJlYWsuYwkyMDExLTEyLTE5 IDIyOjA1OjAyLjc4NzQzMTg4NSArMDEwMAogQEAgLTAsMCArMSwxNDYgQEAKICsvKiBUaGlzIHRl c3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwpAQCAtMjM2LDEwICsy MzYsMTAgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucGll L2JyZWFrLmMKICsgICAgfQogKyAgcmV0dXJuIDA7CiArfQotSW5kZXg6IGdkYi03LjIuNTAuMjAx MTAzMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2JyZWFrMS5jCitJbmRleDogZ2RiLTcuNC41MC4y MDExMTIxOS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYnJlYWsxLmMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAv ZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4y LjUwLjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhazEuYwkyMDExLTAzLTIwIDIw OjIxOjQzLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTkvZ2RiL3Rlc3Rz dWl0ZS9nZGIucGllL2JyZWFrMS5jCTIwMTEtMTItMTkgMjI6MDU6MDIuNzg3NDMxODg1ICswMTAw CiBAQCAtMCwwICsxLDQ0IEBACiArLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhl IEdOVSBkZWJ1Z2dlci4KICsKQEAgLTI4NSwxMCArMjg1LDEwIEBAIEluZGV4OiBnZGItNy4yLjUw LjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhazEuYwogK3ZvaWQgbWFya2VyMyAo YSwgYikgY2hhciAqYSwgKmI7IHt9CS8qIHNldCBicmVha3BvaW50IDE4IGhlcmUgKi8KICt2b2lk IG1hcmtlcjQgKGQpIGxvbmcgZDsge30JCS8qIHNldCBicmVha3BvaW50IDEzIGhlcmUgKi8KICsj ZW5kaWYKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9j b3JlbWFrZXIuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTkvZ2RiL3Rlc3RzdWl0ZS9nZGIu cGllL2NvcmVtYWtlci5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6 MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvdGVzdHN1 aXRlL2dkYi5waWUvY29yZW1ha2VyLmMJMjAxMS0wMy0yMCAyMDoyMTo0My4wMDAwMDAwMDAgKzAx MDAKKysrKyBnZGItNy40LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9jb3JlbWFr ZXIuYwkyMDExLTEyLTE5IDIyOjA1OjAyLjc4NzQzMTg4NSArMDEwMAogQEAgLTAsMCArMSwxNDIg QEAKICsvKiBDb3B5cmlnaHQgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5OQogKyAg IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpAQCAtNDMyLDEwICs0MzIsMTAgQEAgSW5k ZXg6IGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2NvcmVtYWtlci5j CiArICByZXR1cm4gMDsKICt9CiArCi1JbmRleDogZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvdGVz dHN1aXRlL2dkYi5waWUvYXR0YWNoLmV4cAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTkvZ2Ri L3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFjaC5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJ MTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEw MzIwL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9hdHRhY2guZXhwCTIwMTEtMDMtMjAgMjA6MjU6NTMu MDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDExMTIxOS9nZGIvdGVzdHN1aXRlL2dk Yi5waWUvYXR0YWNoLmV4cAkyMDExLTEyLTE5IDIyOjA1OjAyLjc4NzQzMTg4NSArMDEwMAogQEAg LTAsMCArMSw0MTcgQEAKICsjICAgQ29weXJpZ2h0IDE5OTcsIDE5OTksIDIwMDIgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCkBAIC04NTQsMTEgKzg1NCwxMSBAQCBJbmRleDogZ2Ri LTcuMi41MC4yMDExMDMyMC9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoLmV4cAogK2RvX2Nh bGxfYXR0YWNoX3Rlc3RzCiArCiArcmV0dXJuIDAKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIw L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTEx MjE5L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5leHAKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2 L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjUw LjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5leHAJMjAxMS0wMy0yMCAyMDoy MTo0My4wMDAwMDAwMDAgKzAxMDAKLUBAIC0wLDAgKzEsOTY2IEBACisrKysgZ2RiLTcuNC41MC4y MDExMTIxOS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYnJlYWsuZXhwCTIwMTEtMTItMTkgMjM6MTE6 NTEuMDkyMzMzMDgwICswMTAwCitAQCAtMCwwICsxLDk2MiBAQAogKyMgICBDb3B5cmlnaHQgMTk4 OCwgMTk5MCwgMTk5MSwgMTk5MiwgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwK ICsjICAgMjAwMCwgMjAwMiwgMjAwMywgMjAwNAogKyMgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KQEAgLTEyNDYsMTQgKzEyNDYsMTAgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAz MjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2JyZWFrLmV4cAogKyMgVmVyaWZ5IHRoYXQgR0RCIHJl c3BvbmRzIGdyYWNlZnVsbHkgd2hlbiBhc2tlZCB0byBzZXQgYSBicmVha3BvaW50CiArIyBvbiBh IG5vbmV4aXN0ZW50IHNvdXJjZSBsaW5lLgogKyMKLStzZW5kX2dkYiAiYnJlYWsgOTk5XG4iCi0r Z2RiX2V4cGVjdCB7Ci0rICAtcmUgIk5vIGxpbmUgOTk5IGluIGZpbGUgLiokZ2RiX3Byb21wdCAk IlwKLSsgICAgICAgICAge3Bhc3MgImJyZWFrIG9uIG5vbi1leGlzdGVudCBzb3VyY2UgbGluZSJ9 Ci0rICAtcmUgIiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICB7ZmFpbCAiYnJlYWsgb24gbm9u LWV4aXN0ZW50IHNvdXJjZSBsaW5lIn0KLSsgIHRpbWVvdXQge2ZhaWwgIih0aW1lb3V0KSBicmVh ayBvbiBub24tZXhpc3RlbnQgc291cmNlIGxpbmUifQotK30KKytnZGJfdGVzdF9ub19vdXRwdXQg InNldCBicmVha3BvaW50IHBlbmRpbmcgb2ZmIgorK2dkYl90ZXN0ICJicmVhayA5OTkiIFwKKysg ICAgIk5vIGxpbmUgOTk5IGluIHRoZSBjdXJyZW50IGZpbGUuIiBcCisrICAgICJicmVhayBvbiBu b24tZXhpc3RlbnQgc291cmNlIGxpbmUiCiArCiArIyBSdW4gdG8gdGhlIGRlc2lyZWQgZGVmYXVs dCBsb2NhdGlvbi4gSWYgbm90IHBvc2l0aW9uZWQgaGVyZSwgdGhlCiArIyB0ZXN0cyBiZWxvdyBk b24ndCB3b3JrLgpAQCAtMTgyNSwxMCArMTgyMSwxMCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEx MDMyMC9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYnJlYWsuZXhwCiArICAgIHNlbmRfZ2RiICJzZXQg YXJncyBtYWluXG4iCiArICAgIGdkYl9leHBlY3QgLXJlICIuKiRnZGJfcHJvbXB0ICQiIHt9CiAr fQotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2NvcmVm aWxlLmV4cAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTkvZ2RiL3Rlc3RzdWl0ZS9nZGIucGll L2NvcmVmaWxlLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAw OjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL3Rlc3RzdWl0 ZS9nZGIucGllL2NvcmVmaWxlLmV4cAkyMDExLTAzLTIwIDIwOjIxOjQzLjAwMDAwMDAwMCArMDEw MAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTkvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2NvcmVmaWxl LmV4cAkyMDExLTEyLTE5IDIyOjA1OjAyLjc4ODQzMTg4MSArMDEwMAogQEAgLTAsMCArMSwyMzMg QEAKICsjIENvcHlyaWdodCAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4 LCAxOTk5LCAyMDAwCiArIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KQEAgLTIwNjMs MTAgKzIwNTksMTAgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL3Rlc3RzdWl0ZS9n ZGIucGllL2NvcmVmaWxlLmV4cAogK2dkYl90ZXN0ICJ1cCIgIiNcWzAtOVxdKiAqXFswLTl4YS1m SCdcXSogaW4gLiogXFwoLipcXCkuKiIgInVwIGluIGNvcmVmaWxlLmV4cCAocmVpbml0KSIKICsK ICtnZGJfdGVzdCAiY29yZSIgIk5vIGNvcmUgZmlsZSBub3cuIgotSW5kZXg6IGdkYi03LjIuNTAu MjAxMTAzMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL01ha2VmaWxlLmluCitJbmRleDogZ2RiLTcu NC41MC4yMDExMTIxOS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvTWFrZWZpbGUuaW4KID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsr KyBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9NYWtlZmlsZS5pbgky MDExLTAzLTIwIDIwOjIxOjQzLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMTEy MTkvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL01ha2VmaWxlLmluCTIwMTEtMTItMTkgMjI6MDU6MDIu Nzg4NDMxODgxICswMTAwCiBAQCAtMCwwICsxLDE5IEBACiArVlBBVEggPSBAc3JjZGlyQAogK3Ny Y2RpciA9IEBzcmNkaXJACgpkaWZmIC0tZ2l0IGEvZ2RiLTYuMy10aHJlYWRlZC13YXRjaHBvaW50 czItMjAwNTAyMjUucGF0Y2ggYi9nZGItNi4zLXRocmVhZGVkLXdhdGNocG9pbnRzMi0yMDA1MDIy NS5wYXRjaAppbmRleCAxODdhMzNlLi5hMjRjNDQ4IDEwMDY0NAotLS0gYS9nZGItNi4zLXRocmVh ZGVkLXdhdGNocG9pbnRzMi0yMDA1MDIyNS5wYXRjaAorKysgYi9nZGItNi4zLXRocmVhZGVkLXdh dGNocG9pbnRzMi0yMDA1MDIyNS5wYXRjaApAQCAtMzIsMTcgKzMyLDIwIEBACiAJKGFtZDY0X2xp bnV4X2h3X2JyZWFrcG9pbnQsIGFtZDY0X2xpbnV4X3JlbW92ZV9od19icmVha3BvaW50KTogRGl0 dG8uCiAJKGFtZDY0X2xpbnV4X25ld190aHJlYWQpOiBEaXR0by4KIAkoX2luaXRpYWxpemVfYW1k NjRfbGludXhfbmF0KTogUmVnaXN0ZXIgbGludXggbmV3IHRocmVhZCBvYnNlcnZlci4KLQkqIHRl c3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHRocmVhZHMyLmM6IE5ldyB0ZXN0IGNhc2UuCi0JKiB0 ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2h0aHJlYWRzMi5leHA6IERpdHRvLgorCSogdGVzdHN1 aXRlL2dkYi50aHJlYWRzL3dhdGNodGhyZWFkcy10aHJlYWRlZC5jOiBOZXcgdGVzdCBjYXNlLgor CSogdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNodGhyZWFkcy10aHJlYWRlZC5leHA6IERpdHRv LgogCiBbIFdpdGggcmVjZW50IHVwc3RyZWFtIEdEQiAoNi44KSByZWR1Y2VkIG9ubHkgdG8gdGhl IHRlc3RjYXNlLiAgXQogCitbIEl0IHdhcyBjYWxsZWQgd2F0Y2h0aHJlYWRzMi57ZXhwLGN9IGJl Zm9yZSBidXQgaXQgY29uZmxpY3RlZCB3aXRoIEZTRiBHREIgbmV3CisgIHRlc3RjYXNlIG9mIHRo ZSBzYW1lIG5hbWUuICBdCisKIEZJWE1FOiBUaGUgdGVzdGNhc2UgZG9lcyBub3QgZXhwZWN0cyBt dWx0aXBsZSB3YXRjaHBvaW50cyBoaXRzIHBlciBvbmUgc3RvcC4KIAotSW5kZXg6IGdkYi02LjUv Z2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHRocmVhZHMyLmMKK0luZGV4OiBnZGItNy40 LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2h0aHJlYWRzLXRocmVh ZGVkLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAw MDAwMDAgKzAwMDAKLSsrKyBnZGItNi41L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2h0 aHJlYWRzLXRocmVhZGVkLmMJMjAwNi0wNy0xMiAwMTo1NDoyOS4wMDAwMDAwMDAgLTAzMDAKKysr KyBnZGItNy40LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2h0aHJl YWRzLXRocmVhZGVkLmMJMjAxMS0xMi0xOSAyMjowNTowMi44Njc0MzE1NzAgKzAxMDAKIEBAIC0w LDAgKzEsNjYgQEAKICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRl YnVnZ2VyLgogKwpAQCAtMTEwLDEwICsxMTMsMTAgQEAgSW5kZXg6IGdkYi02LjUvZ2RiL3Rlc3Rz dWl0ZS9nZGIudGhyZWFkcy93YXRjaHRocmVhZHMyLmMKICsgICAgcHRocmVhZF9leGl0KE5VTEwp OwogK30KICsKLUluZGV4OiBnZGItNi41L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2h0 aHJlYWRzMi5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvZ2Ri LnRocmVhZHMvd2F0Y2h0aHJlYWRzLXRocmVhZGVkLmV4cAogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYv bnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi02LjUvZ2Ri L3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHRocmVhZHMtdGhyZWFkZWQuZXhwCTIwMDYtMDct MTIgMDE6NTQ6MjkuMDAwMDAwMDAwIC0wMzAwCisrKysgZ2RiLTcuNC41MC4yMDExMTIxOS9nZGIv dGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNodGhyZWFkcy10aHJlYWRlZC5leHAJMjAxMS0xMi0x OSAyMjoyODozMy4yOTQ5MTE5ODIgKzAxMDAKIEBAIC0wLDAgKzEsMTI2IEBACiArIyBUaGlzIHRl c3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwpAQCAtMTQxLDcgKzE0 NCw3IEBAIEluZGV4OiBnZGItNi41L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2h0aHJl YWRzMi5leHAKICsgICAgcmV0dXJuIDA7CiArfQogKwotK3NldCB0ZXN0ZmlsZSAid2F0Y2h0aHJl YWRzMiIKKytzZXQgdGVzdGZpbGUgIndhdGNodGhyZWFkcy10aHJlYWRlZCIKICtzZXQgc3JjZmls ZSAke3Rlc3RmaWxlfS5jCiArc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3Rm aWxlfQogK2lmIHtbZ2RiX2NvbXBpbGVfcHRocmVhZHMgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtz cmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUgW2xpc3QgZGVidWcgImluY2Rpcj0ke29i amRpcn0iXV0gIT0gIiIgfSB7CkBAIC0xOTgsMTMgKzIwMSwxMyBAQCBJbmRleDogZ2RiLTYuNS9n ZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNodGhyZWFkczIuZXhwCiArZm9yIHtzZXQgaSAw fSB7JGkgPCAzMH0ge2luY3IgaX0gewogKyAgc2V0IHRlc3RfZmxhZyAwCiArICBnZGJfdGVzdF9t dWx0aXBsZSAiY29udGludWUiICJ0aHJlYWRlZCB3YXRjaCBsb29wIiB7Ci0rICAgIC1yZSAiSGFy ZHdhcmUgd2F0Y2hwb2ludCAzOiBhcmdzXFxcWzJcXFxdLipPbGQgdmFsdWUgPSAwLipOZXcgdmFs dWUgPSAxLiptYWluIFxcXChcXFwpIGF0IC4qd2F0Y2h0aHJlYWRzMi5jOiRpbml0X2xpbmUuKiRn ZGJfcHJvbXB0ICQiCisrICAgIC1yZSAiSGFyZHdhcmUgd2F0Y2hwb2ludCAzOiBhcmdzXFxcWzJc XFxdLipPbGQgdmFsdWUgPSAwLipOZXcgdmFsdWUgPSAxLiptYWluIFxcXChcXFwpIGF0IC4qd2F0 Y2h0aHJlYWRzLXRocmVhZGVkLmM6JGluaXRfbGluZS4qJGdkYl9wcm9tcHQgJCIKICsgICAgICAg eyBzZXQgYXJnc18yIDE7IHNldCB0ZXN0X2ZsYWcgMSB9Ci0rICAgIC1yZSAiSGFyZHdhcmUgd2F0 Y2hwb2ludCA0OiBhcmdzXFxcWzNcXFxdLipPbGQgdmFsdWUgPSAwLipOZXcgdmFsdWUgPSAxLipt YWluIFxcXChcXFwpIGF0IC4qd2F0Y2h0aHJlYWRzMi5jOiRpbml0X2xpbmUuKiRnZGJfcHJvbXB0 ICQiCisrICAgIC1yZSAiSGFyZHdhcmUgd2F0Y2hwb2ludCA0OiBhcmdzXFxcWzNcXFxdLipPbGQg dmFsdWUgPSAwLipOZXcgdmFsdWUgPSAxLiptYWluIFxcXChcXFwpIGF0IC4qd2F0Y2h0aHJlYWRz LXRocmVhZGVkLmM6JGluaXRfbGluZS4qJGdkYl9wcm9tcHQgJCIKICsgICAgICAgeyBzZXQgYXJn c18zIDE7IHNldCB0ZXN0X2ZsYWcgMSB9Ci0rICAgIC1yZSAiSGFyZHdhcmUgd2F0Y2hwb2ludCAz OiBhcmdzXFxcWzJcXFxdLipPbGQgdmFsdWUgPSAkYXJnc18yLipOZXcgdmFsdWUgPSBbZXhwciAk YXJnc18yKzFdLippbiB0aHJlYWRfZnVuY3Rpb24gXFxcKGFyZz0weDJcXFwpIGF0IC4qd2F0Y2h0 aHJlYWRzMi5jOiRpbmNfbGluZS4qJGdkYl9wcm9tcHQgJCIKKysgICAgLXJlICJIYXJkd2FyZSB3 YXRjaHBvaW50IDM6IGFyZ3NcXFxbMlxcXF0uKk9sZCB2YWx1ZSA9ICRhcmdzXzIuKk5ldyB2YWx1 ZSA9IFtleHByICRhcmdzXzIrMV0uKmluIHRocmVhZF9mdW5jdGlvbiBcXFwoYXJnPTB4MlxcXCkg YXQgLip3YXRjaHRocmVhZHMtdGhyZWFkZWQuYzokaW5jX2xpbmUuKiRnZGJfcHJvbXB0ICQiCiAr ICAgICAgIHsgc2V0IGFyZ3NfMiBbZXhwciAkYXJnc18yKzFdOyBzZXQgdGVzdF9mbGFnIDEgfQot KyAgICAtcmUgIkhhcmR3YXJlIHdhdGNocG9pbnQgNDogYXJnc1xcXFszXFxcXS4qT2xkIHZhbHVl ID0gJGFyZ3NfMy4qTmV3IHZhbHVlID0gW2V4cHIgJGFyZ3NfMysxXS4qaW4gdGhyZWFkX2Z1bmN0 aW9uIFxcXChhcmc9MHgzXFxcKSBhdCAuKndhdGNodGhyZWFkczIuYzokaW5jX2xpbmUuKiRnZGJf cHJvbXB0ICQiCisrICAgIC1yZSAiSGFyZHdhcmUgd2F0Y2hwb2ludCA0OiBhcmdzXFxcWzNcXFxd LipPbGQgdmFsdWUgPSAkYXJnc18zLipOZXcgdmFsdWUgPSBbZXhwciAkYXJnc18zKzFdLippbiB0 aHJlYWRfZnVuY3Rpb24gXFxcKGFyZz0weDNcXFwpIGF0IC4qd2F0Y2h0aHJlYWRzLXRocmVhZGVk LmM6JGluY19saW5lLiokZ2RiX3Byb21wdCAkIgogKyAgICAgICB7IHNldCBhcmdzXzMgW2V4cHIg JGFyZ3NfMysxXTsgc2V0IHRlc3RfZmxhZyAxIH0KICsgIH0KICsgICMgSWYgd2UgZmFpbCBhYm92 ZSwgZG9uJ3QgYm90aGVyIGNvbnRpbnVpbmcgbG9vcAoKZGlmZiAtLWdpdCBhL2dkYi02LjYtYnVp bGRpZC1sb2NhdGUtY29yZS1hcy1hcmcucGF0Y2ggYi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLWNv cmUtYXMtYXJnLnBhdGNoCmluZGV4IGI5ZDExMzQuLmRlMWNjYWQgMTAwNjQ0Ci0tLSBhL2dkYi02 LjYtYnVpbGRpZC1sb2NhdGUtY29yZS1hcy1hcmcucGF0Y2gKKysrIGIvZ2RiLTYuNi1idWlsZGlk LWxvY2F0ZS1jb3JlLWFzLWFyZy5wYXRjaApAQCAtNTgsMTMgKzU4LDEzIEBAIEh0dHA6Ly9zb3Vy Y2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTAxL21zZzAwNTE3Lmh0bWwKIAkqIGV4ZWMu YyAoZXhlY19maWxlX2F0dGFjaCk6IFByaW50IGEgbW9yZSB1c2VmdWwgZXJyb3IgbWVzc2FnZSBp ZiB0aGUKIAl1c2VyIGRpZCAiZ2RiIGNvcmUiLgogCi1JbmRleDogZ2RiLTcuMi41MC4yMDExMDIx OC9nZGIvZXhjZXB0aW9ucy5oCitJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvZXhjZXB0 aW9ucy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDIxOC5vcmlnL2dkYi9leGNl cHRpb25zLmgJMjAxMS0wMi0xNCAxMjozNTo0NC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4y LjUwLjIwMTEwMjE4L2dkYi9leGNlcHRpb25zLmgJMjAxMS0wMi0xOCAxMDo0NTozMS4wMDAwMDAw MDAgKzAxMDAKLUBAIC04NSw2ICs4NSw5IEBAIGVudW0gZXJyb3JzIHsKLSAgICAgIHRyYWNlZnJh bWUuICAqLwotICAgTk9UX0FWQUlMQUJMRV9FUlJPUiwKKy0tLSBnZGItNy40LjUwLjIwMTExMjE4 Lm9yaWcvZ2RiL2V4Y2VwdGlvbnMuaAkyMDExLTEwLTA5IDIxOjIxOjM4LjAwMDAwMDAwMCArMDIw MAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2V4Y2VwdGlvbnMuaAkyMDExLTEyLTE5IDAx OjQxOjIwLjkwMDUwOTM0NyArMDEwMAorQEAgLTg4LDYgKzg4LDkgQEAgZW51bSBlcnJvcnMgewor ICAgLyogRFdfT1BfR05VX2VudHJ5X3ZhbHVlIHJlc29sdmluZyBmYWlsZWQuICAqLworICAgTk9f RU5UUllfVkFMVUVfRVJST1IsCiAgCiArICAvKiBBdHRlbXB0IHRvIGxvYWQgYSBjb3JlIGZpbGUg YXMgZXhlY3V0YWJsZS4gICovCiArICBJU19DT1JFX0VSUk9SLApAQCAtNzIsMTEgKzcyLDExIEBA IEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMjE4L2dkYi9leGNlcHRpb25zLmgKICAgIC8qIEFkZCBt b3JlIGVycm9ycyBoZXJlLiAgKi8KICAgIE5SX0VSUk9SUwogIH07Ci1JbmRleDogZ2RiLTcuMi41 MC4yMDExMDIxOC9nZGIvZXhlYy5jCitJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvZXhl Yy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDIxOC5vcmlnL2dkYi9leGVjLmMJ MjAxMS0wMi0xNCAyMzowODo0OC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEw MjE4L2dkYi9leGVjLmMJMjAxMS0wMi0xOCAxMDo0NToxNi4wMDAwMDAwMDAgKzAxMDAKLUBAIC0z NCw2ICszNCw3IEBACistLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi9leGVjLmMJMjAx MS0wMy0yMyAxOToyMzo1NC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTExMjE4 L2dkYi9leGVjLmMJMjAxMS0xMi0xOSAwMTo0MTowNC44NjM1Njg4NDYgKzAxMDAKK0BAIC0zNSw2 ICszNSw3IEBACiAgI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKICAjaW5jbHVkZSAiZ2RidGhyZWFk LmgiCiAgI2luY2x1ZGUgInByb2dzcGFjZS5oIgpAQCAtODQsNyArODQsNyBAQCBJbmRleDogZ2Ri LTcuMi41MC4yMDExMDIxOC9nZGIvZXhlYy5jCiAgCiAgI2luY2x1ZGUgPGZjbnRsLmg+CiAgI2lu Y2x1ZGUgInJlYWRsaW5lL3JlYWRsaW5lLmgiCi1AQCAtMjUzLDEyICsyNTQsMjcgQEAgZXhlY19m aWxlX2F0dGFjaCAoY2hhciAqZmlsZW5hbWUsIGludCBmcgorQEAgLTI1NCwxMiArMjU1LDI3IEBA IGV4ZWNfZmlsZV9hdHRhY2ggKGNoYXIgKmZpbGVuYW1lLCBpbnQgZnIKICAKICAgICAgICBpZiAo IWJmZF9jaGVja19mb3JtYXRfbWF0Y2hlcyAoZXhlY19iZmQsIGJmZF9vYmplY3QsICZtYXRjaGlu ZykpCiAgCXsKQEAgLTExNSwxMSArMTE1LDExIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMjE4 L2dkYi9leGVjLmMKICAJfQogIAogICAgICAgIC8qIEZJWE1FIC0gVGhpcyBzaG91bGQgb25seSBi ZSBydW4gZm9yIFJTNjAwMCwgYnV0IHRoZSBpZmRlZiBpcyBhIHBvb3IKLUluZGV4OiBnZGItNy4y LjUwLjIwMTEwMjE4L2dkYi9tYWluLmMKK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9t YWluLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMjE4Lm9yaWcvZ2RiL21haW4u YwkyMDExLTAyLTE4IDEwOjQ0OjE3LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAx MTAyMTgvZ2RiL21haW4uYwkyMDExLTAyLTE4IDEwOjQ1OjE2LjAwMDAwMDAwMCArMDEwMAotQEAg LTI0Myw2ICsyNDMsMzYgQEAgY2FwdHVyZWRfY29tbWFuZF9sb29wICh2b2lkICpkYXRhKQorLS0t IGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvbWFpbi5jCTIwMTEtMTItMTkgMDA6Mjg6MDEu MDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvbWFpbi5jCTIwMTEt MTItMTkgMDE6NDE6MDQuODYzNTY4ODQ2ICswMTAwCitAQCAtMjQ4LDYgKzI0OCwzNiBAQCBjYXB0 dXJlZF9jb21tYW5kX2xvb3AgKHZvaWQgKmRhdGEpCiAgICByZXR1cm4gMTsKICB9CiAgCkBAIC0x NTYsNyArMTU2LDcgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAyMTgvZ2RiL21haW4uYwogIHN0 YXRpYyBpbnQKICBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQogIHsKLUBAIC03MjcsNiArNzU3 LDggQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKK0BAIC03MDQsNiArNzM0LDggQEAgY2Fw dHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKICAJewogIAkgIHN5bWFyZyA9IGFyZ3Zbb3B0aW5kXTsK ICAJICBleGVjYXJnID0gYXJndltvcHRpbmRdOwpAQCAtMTY1LDcgKzE2NSw3IEBAIEluZGV4OiBn ZGItNy4yLjUwLjIwMTEwMjE4L2dkYi9tYWluLmMKICAJICBvcHRpbmQrKzsKICAJfQogIAotQEAg LTg2OCwxMSArOTAwLDI1IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCitAQCAtODQ1LDEx ICs4NzcsMjUgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKICAgICAgICAmJiBzeW1hcmcg IT0gTlVMTAogICAgICAgICYmIHN0cmNtcCAoZXhlY2FyZywgc3ltYXJnKSA9PSAwKQogICAgICB7 CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0ucGF0Y2ggYi9nZGItNi42 LWJ1aWxkaWQtbG9jYXRlLXJwbS5wYXRjaAppbmRleCA4MjEwZDE4Li40NDkwZGYzIDEwMDY0NAot LS0gYS9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS5wYXRjaAorKysgYi9nZGItNi42LWJ1aWxk aWQtbG9jYXRlLXJwbS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUluZGV4OiBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi9ldmVudC10b3AuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2V2 ZW50LXRvcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9l dmVudC10b3AuYwkyMDExLTA3LTIxIDEzOjAzOjQ1LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL2V2ZW50LXRvcC5jCTIwMTEtMDctMjIgMTk6Mjg6NDkuMDAwMDAw MDAwICswMjAwCistLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi9ldmVudC10b3AuYwky MDExLTA5LTIxIDE3OjIxOjI4LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMTEy MTgvZ2RiL2V2ZW50LXRvcC5jCTIwMTEtMTItMTkgMDE6MTg6NTYuMDg3NTM5MjUxICswMTAwCiBA QCAtMzYsNiArMzYsNyBAQAogICNpbmNsdWRlICJvYnNlcnZlci5oIgogICNpbmNsdWRlICJjb250 aW51YXRpb25zLmgiCkBAIC0xMCwxNiArMTAsMTYgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL2V2ZW50LXRvcC5jCiAgCiAgLyogcmVhZGxpbmUgaW5jbHVkZSBmaWxlcy4gICovCiAg I2luY2x1ZGUgInJlYWRsaW5lL3JlYWRsaW5lLmgiCi1AQCAtMTkzLDYgKzE5NCw4IEBAIGNsaV9j b21tYW5kX2xvb3AgKHZvaWQpCi0gICAgICAgY2hhciAqYV9wcm9tcHQ7Ci0gICAgICAgY2hhciAq Z2RiX3Byb21wdCA9IGdldF9wcm9tcHQgKCk7Ci0gCi0rICAgICAgZGVidWdfZmx1c2hfbWlzc2lu ZyAoKTsKK0BAIC0xNzYsNiArMTc3LDggQEAgcmxfY2FsbGJhY2tfcmVhZF9jaGFyX3dyYXBwZXIg KGdkYl9jbGllbgorIHZvaWQKKyBjbGlfY29tbWFuZF9sb29wICh2b2lkKQorIHsKKysgIGRlYnVn X2ZsdXNoX21pc3NpbmcgKCk7CiArCi0gICAgICAgLyogVGVsbCByZWFkbGluZSB3aGF0IHRoZSBw cm9tcHQgdG8gZGlzcGxheSBpcyBhbmQgd2hhdCBmdW5jdGlvbgotICAgICAgICAgIGl0IHdpbGwg bmVlZCB0byBjYWxsIGFmdGVyIGEgd2hvbGUgbGluZSBpcyByZWFkLiAgVGhpcyBhbHNvCi0gICAg ICAgICAgZGlzcGxheXMgdGhlIGZpcnN0IHByb21wdC4gICovCi1AQCAtMjY0LDYgKzI2Nyw4IEBA IGRpc3BsYXlfZ2RiX3Byb21wdCAoY2hhciAqbmV3X3Byb21wdCkKKyAgIGRpc3BsYXlfZ2RiX3By b21wdCAoMCk7CisgCisgICAvKiBOb3cgaXQncyB0aW1lIHRvIHN0YXJ0IHRoZSBldmVudCBsb29w LiAgKi8KK0BAIC0yNDEsNiArMjQ0LDggQEAgZGlzcGxheV9nZGJfcHJvbXB0IChjaGFyICpuZXdf cHJvbXB0KQogICAgLyogUmVzZXQgdGhlIG5lc3RpbmcgZGVwdGggdXNlZCB3aGVuIHRyYWNlLWNv bW1hbmRzIGlzIHNldC4gICovCiAgICByZXNldF9jb21tYW5kX25lc3RfZGVwdGggKCk7CiAgCkBA IC0yOCwxMSArMjgsMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2V2ZW50LXRv cC5jCiAgICAvKiBFYWNoIGludGVycHJldGVyIGhhcyBpdHMgb3duIHJ1bGVzIG9uIGRpc3BsYXlp bmcgdGhlIGNvbW1hbmQKICAgICAgIHByb21wdC4gICovCiAgICBpZiAoIWN1cnJlbnRfaW50ZXJw X2Rpc3BsYXlfcHJvbXB0X3AgKCkpCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZWxm cmVhZC5jCitJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvZWxmcmVhZC5jCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9lbGZyZWFkLmMJMjAxMS0wNy0y MiAxOToyNjo0Ni4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9l bGZyZWFkLmMJMjAxMS0wNy0yMiAxOToyODozNC4wMDAwMDAwMDAgKzAyMDAKLUBAIC00OSw2ICs0 OSw3IEBACistLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi9lbGZyZWFkLmMJMjAxMS0x Mi0xOSAwMDo1NDowOS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTExMjE4L2dk Yi9lbGZyZWFkLmMJMjAxMS0xMi0xOSAwMToxNjoxNS4yNDg0NTU4OTcgKzAxMDAKK0BAIC00Nyw2 ICs0Nyw3IEBACiAgI2luY2x1ZGUgImdkYmNvcmUuaCIKICAjaW5jbHVkZSAiZ2RiY21kLmgiCiAg I2luY2x1ZGUgIm9ic2VydmVyLmgiCkBAIC00MCw3ICs0MCw3IEBAIEluZGV4OiBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi9lbGZyZWFkLmMKICAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICAKICBleHRl cm4gdm9pZCBfaW5pdGlhbGl6ZV9lbGZyZWFkICh2b2lkKTsKLUBAIC0xNjUyLDggKzE2NTMsMzYx IEBAIGJ1aWxkX2lkX3RvX2ZpbGVuYW1lIChzdHJ1Y3QgYnVpbGRfaWQgKmIKK0BAIC0xNjIyLDgg KzE2MjMsMzYxIEBAIGJ1aWxkX2lkX3RvX2ZpbGVuYW1lIChzdHJ1Y3QgYnVpbGRfaWQgKmIKICAg IHJldHVybiByZXR2YWw7CiAgfQogIApAQCAtNDAzLDcgKzQwMyw3IEBAIEluZGV4OiBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi9lbGZyZWFkLmMKICAgICBhdm9pZGFuY2UuICAqLwogIAogIHN0cnVj dCBtaXNzaW5nX2ZpbGVwYWlyCi1AQCAtMTcwNywxMSArMjA2MSwxNyBAQCBtaXNzaW5nX2ZpbGVw YWlyX2NoYW5nZSAodm9pZCkKK0BAIC0xNjc3LDExICsyMDMxLDE3IEBAIG1pc3NpbmdfZmlsZXBh aXJfY2hhbmdlICh2b2lkKQogICAgICAgIC8qIEFsbCB0aGVpciBtZW1vcnkgY2FtZSBqdXN0IGZy b20gbWlzc2luZ19maWxlcGFpcl9PQlNUQUNLLiAgKi8KICAgICAgICBtaXNzaW5nX2ZpbGVwYWly X2hhc2ggPSBOVUxMOwogICAgICB9CkBAIC00MjEsNyArNDIxLDcgQEAgSW5kZXg6IGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL2VsZnJlYWQuYwogICAgbWlzc2luZ19maWxlcGFpcl9jaGFuZ2UgKCk7 CiAgfQogIAotQEAgLTE3NzgsMTQgKzIxMzgsMzUgQEAgZGVidWdfcHJpbnRfbWlzc2luZyAoY29u c3QgY2hhciAqYmluYXJ5LAorQEAgLTE3NDgsMTQgKzIxMDgsMzUgQEAgZGVidWdfcHJpbnRfbWlz c2luZyAoY29uc3QgY2hhciAqYmluYXJ5LAogIAogICAgKnNsb3QgPSBtaXNzaW5nX2ZpbGVwYWly OwogIApAQCAtNDY0LDExICs0NjQsMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L2VsZnJlYWQuYwogIH0KICAKICBzdGF0aWMgY2hhciAqCi1JbmRleDogZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvc3ltZmlsZS5oCitJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvc3ltZmls ZS5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9zeW1maWxl LmgJMjAxMS0wNy0yMiAxOToyNzowNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi9zeW1maWxlLmgJMjAxMS0wNy0yMiAxOToyODozNC4wMDAwMDAwMDAgKzAyMDAK LUBAIC02MTUsNiArNjE1LDggQEAgZXh0ZXJuIHN0cnVjdCBidWlsZF9pZCAqYnVpbGRfaWRfYWRk cl9nZQorLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvc3ltZmlsZS5oCTIwMTEtMTIt MTkgMDA6NTQ6MDkuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIv c3ltZmlsZS5oCTIwMTEtMTItMTkgMDE6MTY6MTUuMjQ5NDU1ODkzICswMTAwCitAQCAtNTY4LDYg KzU2OCw4IEBAIGV4dGVybiBzdHJ1Y3QgYnVpbGRfaWQgKmJ1aWxkX2lkX2FkZHJfZ2UKICBleHRl cm4gY2hhciAqYnVpbGRfaWRfdG9fZmlsZW5hbWUgKHN0cnVjdCBidWlsZF9pZCAqYnVpbGRfaWQs CiAgCQkJCSAgIGNoYXIgKipsaW5rX3JldHVybiwgaW50IGFkZF9kZWJ1Z19zdWZmaXgpOwogIGV4 dGVybiB2b2lkIGRlYnVnX3ByaW50X21pc3NpbmcgKGNvbnN0IGNoYXIgKmJpbmFyeSwgY29uc3Qg Y2hhciAqZGVidWcpOwpAQCAtNDc3LDExICs0NzcsMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL3N5bWZpbGUuaAogIAogIC8qIEZyb20gZHdhcmYycmVhZC5jICovCiAgCi1JbmRl eDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCitJbmRleDog Z2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJ MjAxMS0wNy0yMiAxOToyNjo0Ni4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAxMS0wNy0yMiAxOToyODozNC4wMDAwMDAw MDAgKzAyMDAKLUBAIC0xMzkwLDcgKzEzOTAsNyBAQCBwcm9jIGRlZmF1bHRfZ2RiX3N0YXJ0IHsg fSB7CistLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5l eHAJMjAxMS0xMi0xOSAwMDo1NDowOS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIw MTExMjE4L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAxMS0xMi0xOSAwMToxNjoxNS4yNTA0 NTU4ODkgKzAxMDAKK0BAIC0xMzg3LDcgKzEzODcsNyBAQCBwcm9jIGRlZmF1bHRfZ2RiX3N0YXJ0 IHsgfSB7CiAgCSAgICB3YXJuaW5nICJDb3VsZG4ndCBzZXQgdGhlIHdpZHRoIHRvIDAuIgogIAl9 CiAgICAgIH0KQEAgLTQ5MCwyMyArNDkwLDIzIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKICAgICAgc2VuZF9nZGIgInNldCBidWlsZC1pZC12 ZXJib3NlIDBcbiIKICAgICAgZ2RiX2V4cGVjdCAxMCB7CiAgCS1yZSAiJGdkYl9wcm9tcHQgJCIg ewotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9y dC5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvbGliL21pLXN1 cHBvcnQuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi90 ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTEtMDctMjIgMTk6MjY6NDYuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBw b3J0LmV4cAkyMDExLTA3LTIyIDE5OjI4OjM0LjAwMDAwMDAwMCArMDIwMAotQEAgLTIyMiw3ICsy MjIsNyBAQCBwcm9jIGRlZmF1bHRfbWlfZ2RiX3N0YXJ0IHsgYXJncyB9IHsKLSAJICAgIH0KLSAg ICAgCX0KKy0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvbWkt c3VwcG9ydC5leHAJMjAxMS0xMi0xOSAwMDo1NDo0OS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGIt Ny40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTEtMTIt MTkgMDE6MjA6MzQuOTIxMTYzOTc3ICswMTAwCitAQCAtMjEyLDcgKzIxMiw3IEBAIHByb2MgZGVm YXVsdF9taV9nZGJfc3RhcnQgeyBhcmdzIH0geworIAkgICAgd2FybmluZyAiQ291bGRuJ3Qgc2V0 IHRoZSB3aWR0aCB0byAwLiIKKyAJfQogICAgICB9CiAtICAgICMgVHVybiBvZmYgdGhlIG1pc3Np bmcgd2FybmluZ3MgYXMgdGhlIHRlc3RzdWl0ZSBkb2VzIG5vdCBleHBlY3QgaXQuCiArICAgICMg VHVybiBvZmYgdGhlIG1pc3NpbmcgUlBNcyB3YXJuaW5ncyBhcyB0aGUgdGVzdHN1aXRlIGRvZXMg bm90IGV4cGVjdCBpdC4KICAgICAgc2VuZF9nZGIgIjE5MC1nZGItc2V0IGJ1aWxkLWlkLXZlcmJv c2UgMFxuIgogICAgICBnZGJfZXhwZWN0IDEwIHsKICAJLXJlICIuKjE5MC1nZGItc2V0IGJ1aWxk LWlkLXZlcmJvc2UgMFxyXG4xOTBcXFxeZG9uZVxyXG4kbWlfZ2RiX3Byb21wdCQiIHsKLUluZGV4 OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90dWkvdHVpLWludGVycC5jCitJbmRleDogZ2RiLTcu NC41MC4yMDExMTIxOC9nZGIvdHVpL3R1aS1pbnRlcnAuYwogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvdHVpL3R1aS1pbnRlcnAuYwkyMDExLTAxLTAxIDE2OjMz OjUyLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3R1aS90dWkt aW50ZXJwLmMJMjAxMS0wNy0yMiAxOToyODozNC4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy40 LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL3R1aS90dWktaW50ZXJwLmMJMjAxMS0wOS0xMiAyMzoyNDo1 MS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90dWkvdHVpLWlu dGVycC5jCTIwMTEtMTItMTkgMDE6MTY6MTUuMjUyNDU1ODgzICswMTAwCiBAQCAtMzEsNiArMzEs NyBAQAogICNpbmNsdWRlICJ0dWkvdHVpLmgiCiAgI2luY2x1ZGUgInR1aS90dWktaW8uaCIKQEAg LTUxNSwxOSArNTE1LDEwIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90dWkvdHVp LWludGVycC5jCiAgCiAgLyogU2V0IHRvIDEgd2hlbiB0aGUgVFVJIG1vZGUgbXVzdCBiZSBhY3Rp dmF0ZWQgd2hlbiB3ZSBmaXJzdCBzdGFydAogICAgIGdkYi4gICovCi1AQCAtMTQ3LDYgKzE0OCw4 IEBAIHR1aV9jb21tYW5kX2xvb3AgKHZvaWQgKmRhdGEpCi0gICAgICAgY2hhciAqYV9wcm9tcHQ7 Ci0gICAgICAgY2hhciAqZ2RiX3Byb21wdCA9IGdldF9wcm9tcHQgKCk7Ci0gCi0rICAgICAgZGVi dWdfZmx1c2hfbWlzc2luZyAoKTsKLSsKLSAgICAgICAvKiBUZWxsIHJlYWRsaW5lIHdoYXQgdGhl IHByb21wdCB0byBkaXNwbGF5IGlzIGFuZCB3aGF0IGZ1bmN0aW9uCi0gICAgICAgICAgaXQgd2ls bCBuZWVkIHRvIGNhbGwgYWZ0ZXIgYSB3aG9sZSBsaW5lIGlzIHJlYWQuIFRoaXMgYWxzbwotICAg ICAgICAgIGRpc3BsYXlzIHRoZSBmaXJzdCBwcm9tcHQuICAqLwotSW5kZXg6IGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL2FjbG9jYWwubTQKK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9h Y2xvY2FsLm00CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9h Y2xvY2FsLm00CTIwMTEtMDItMTUgMjI6MDU6NTMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvYWNsb2NhbC5tNAkyMDExLTA3LTIyIDE5OjI4OjM0LjAwMDAwMDAw MCArMDIwMAorLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvYWNsb2NhbC5tNAkyMDEx LTAyLTE1IDIyOjA1OjUzLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTgv Z2RiL2FjbG9jYWwubTQJMjAxMS0xMi0xOSAwMToxNjoxNS4yNTI0NTU4ODMgKzAxMDAKIEBAIC0x OSw2ICsxOSwxNjIgQEAgWW91IGhhdmUgYW5vdGhlciB2ZXJzaW9uIG9mIGF1dG9jb25mLiAgSQog IElmIHlvdSBoYXZlIHByb2JsZW1zLCB5b3UgbWF5IG5lZWQgdG8gcmVnZW5lcmF0ZSB0aGUgYnVp bGQgc3lzdGVtIGVudGlyZWx5LgogIFRvIGRvIHNvLCB1c2UgdGhlIHByb2NlZHVyZSBkb2N1bWVu dGVkIGJ5IHRoZSBwYWNrYWdlLCB0eXBpY2FsbHkgYGF1dG9yZWNvbmYnLl0pXSkKQEAgLTY5MSwx MCArNjgyLDEwIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9hY2xvY2FsLm00CiAg IyBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDMsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICMKICAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3 YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi1JbmRleDogZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvY29uZmlnLmluCitJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvY29uZmln LmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9jb25maWcu aW4JMjAxMS0wNS0xMiAwMTozODozOC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi9jb25maWcuaW4JMjAxMS0wNy0yMiAxOToyODozNC4wMDAwMDAwMDAgKzAyMDAK Ky0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL2NvbmZpZy5pbgkyMDExLTExLTIwIDA5 OjU5OjU2LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2NvbmZp Zy5pbgkyMDExLTEyLTE5IDAxOjE2OjE1LjI1MzQ1NTg3OSArMDEwMAogQEAgLTQ2LDYgKzQ2LDkg QEAKICAvKiBEZWZpbmUgdG8gQkZEJ3MgZGVmYXVsdCB0YXJnZXQgdmVjdG9yLiAqLwogICN1bmRl ZiBERUZBVUxUX0JGRF9WRUMKQEAgLTcxNSwxMSArNzA2LDExIEBAIEluZGV4OiBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi9jb25maWcuaW4KICAvKiBEZWZpbmUgaWYgbGlidW53aW5kIGxpYnJhcnkg aXMgYmVpbmcgdXNlZC4gKi8KICAjdW5kZWYgSEFWRV9MSUJVTldJTkQKICAKLUluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi9jb25maWd1cmUKK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE4 L2dkYi9jb25maWd1cmUKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcv Z2RiL2NvbmZpZ3VyZQkyMDExLTA1LTEyIDAxOjM4OjM4LjAwMDAwMDAwMCArMDIwMAotKysrIGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL2NvbmZpZ3VyZQkyMDExLTA3LTIyIDE5OjI4OjM0LjAwMDAw MDAwMCArMDIwMAotQEAgLTY4Miw2ICs2ODIsOSBAQCBSRVBPUlRfQlVHU19UTworLS0tIGdkYi03 LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvY29uZmlndXJlCTIwMTEtMTEtMjAgMDk6NTk6NTYuMDAw MDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvY29uZmlndXJlCTIwMTEt MTItMTkgMDE6MTY6MTUuMjU2NDU1ODY3ICswMTAwCitAQCAtNjg0LDYgKzY4NCw5IEBAIFJFUE9S VF9CVUdTX1RPCiAgUEtHVkVSU0lPTgogIFRBUkdFVF9PQlMKICBzdWJkaXJzCkBAIC03MjksNyAr NzIwLDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2NvbmZpZ3VyZQogIEdEQl9E QVRBRElSCiAgREVCVUdESVIKICBhbV9fZmFzdGRlcENDX0ZBTFNFCi1AQCAtOTQ4LDYgKzk1MSw3 IEBAIGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nCitAQCAtOTUyLDYgKzk1NSw3IEBAIGVuYWJs ZV9kZXBlbmRlbmN5X3RyYWNraW5nCiAgd2l0aF9zZXBhcmF0ZV9kZWJ1Z19kaXIKICB3aXRoX2dk Yl9kYXRhZGlyCiAgd2l0aF9yZWxvY2F0ZWRfc291cmNlcwpAQCAtNzM3LDcgKzcyOCw3IEBAIElu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jb25maWd1cmUKICBlbmFibGVfdGFyZ2V0cwog IGVuYWJsZV82NF9iaXRfYmZkCiAgZW5hYmxlX2dkYmNsaQotQEAgLTk5MCw2ICs5OTQsOSBAQCBM REZMQUdTCitAQCAtOTk1LDYgKzk5OSw5IEBAIExERkxBR1MKICBMSUJTCiAgQ1BQRkxBR1MKICBD UFAKQEAgLTc0Nyw3ICs3MzgsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvY29u ZmlndXJlCiAgWUFDQwogIFlGTEFHUwogIFhNS01GJwotQEAgLTE2NTMsNiArMTY2MCw4IEBAIE9w dGlvbmFsIFBhY2thZ2VzOgorQEAgLTE2NTgsNiArMTY2NSw4IEBAIE9wdGlvbmFsIFBhY2thZ2Vz OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgW0RBVEFESVIvZ2RiXQogICAgLS13aXRoLXJl bG9jYXRlZC1zb3VyY2VzPVBBVEgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9tYXRp Y2FsbHkgcmVsb2NhdGUgdGhpcyBwYXRoIGZvciBzb3VyY2UgZmlsZXMKQEAgLTc1Niw3ICs3NDcs NyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvY29uZmlndXJlCiAgICAtLXdpdGgt bGlidW53aW5kICAgICAgICB1c2UgbGlidW53aW5kIGZyYW1lIHVud2luZGluZyBzdXBwb3J0CiAg ICAtLXdpdGgtY3Vyc2VzICAgICAgICAgICB1c2UgdGhlIGN1cnNlcyBsaWJyYXJ5IGluc3RlYWQg b2YgdGhlIHRlcm1jYXAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnkKLUBAIC0x Njg5LDYgKzE2OTgsOSBAQCBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoK K0BAIC0xNjk2LDYgKzE3MDUsOSBAQCBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlh YmxlczoKICAgIENQUEZMQUdTICAgIEMvQysrL09iamVjdGl2ZSBDIHByZXByb2Nlc3NvciBmbGFn cywgZS5nLiAtSTxpbmNsdWRlIGRpcj4gaWYKICAgICAgICAgICAgICAgIHlvdSBoYXZlIGhlYWRl cnMgaW4gYSBub25zdGFuZGFyZCBkaXJlY3RvcnkgPGluY2x1ZGUgZGlyPgogICAgQ1BQICAgICAg ICAgQyBwcmVwcm9jZXNzb3IKQEAgLTc2Niw3ICs3NTcsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvY29uZmlndXJlCiAgICBZQUNDICAgICAgICBUaGUgYFlldCBBbm90aGVyIEMg Q29tcGlsZXInIGltcGxlbWVudGF0aW9uIHRvIHVzZS4gRGVmYXVsdHMgdG8KICAgICAgICAgICAg ICAgIHRoZSBmaXJzdCBwcm9ncmFtIGZvdW5kIG91dCBvZjogYGJpc29uIC15JywgYGJ5YWNjJywg YHlhY2MnLgogICAgWUZMQUdTICAgICAgVGhlIGxpc3Qgb2YgYXJndW1lbnRzIHRoYXQgd2lsbCBi ZSBwYXNzZWQgYnkgZGVmYXVsdCB0byAkWUFDQy4KLUBAIC03ODg2LDYgKzc4OTgsNDg2IEBAIF9B Q0VPRgorQEAgLTc5NjgsNiArNzk4MCw0ODYgQEAgX0FDRU9GCiAgZmkKICAKICAKQEAgLTEyNTMs MTEgKzEyNDQsMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2NvbmZpZ3VyZQog IAogIAogIHN1YmRpcnM9IiRzdWJkaXJzIHRlc3RzdWl0ZSIKLUluZGV4OiBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi9jb25maWd1cmUuYWMKK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9j b25maWd1cmUuYWMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2Ri L2NvbmZpZ3VyZS5hYwkyMDExLTA1LTEyIDAxOjM4OjM4LjAwMDAwMDAwMCArMDIwMAotKysrIGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL2NvbmZpZ3VyZS5hYwkyMDExLTA3LTIyIDE5OjI4OjM0LjAw MDAwMDAwMCArMDIwMAotQEAgLTEwOCw2ICsxMDgsMTk5IEBAIEFTX0hFTFBfU1RSSU5HKFstLXdp dGgtcmVsb2NhdGVkLXNvdXJjZXMKKy0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL2Nv bmZpZ3VyZS5hYwkyMDExLTExLTIwIDA5OjU5OjU2LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03 LjQuNTAuMjAxMTEyMTgvZ2RiL2NvbmZpZ3VyZS5hYwkyMDExLTEyLTE5IDAxOjE2OjE1LjI1NzQ1 NTg2MyArMDEwMAorQEAgLTE0MCw2ICsxNDAsMTk5IEBAIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgt cmVsb2NhdGVkLXNvdXJjZXMKICAgICAgICAgICAgICAgIFtSZWxvY2F0ZWQgZGlyZWN0b3J5IGZv ciBzb3VyY2UgZmlsZXMuIF0pCiAgXSkKICAKQEAgLTE0NTcsMTAgKzE0NDgsMTAgQEAgSW5kZXg6 IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2NvbmZpZ3VyZS5hYwogIEFDX0NPTkZJR19TVUJESVJT KHRlc3RzdWl0ZSkKICAKICAjIENoZWNrIHdoZXRoZXIgdG8gc3VwcG9ydCBhbHRlcm5hdGl2ZSB0 YXJnZXQgY29uZmlndXJhdGlvbnMKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9hY2lu Y2x1ZGUubTQKK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9hY2luY2x1ZGUubTQKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2FjaW5jbHVkZS5tNAky MDEwLTA1LTI3IDA1OjQwOjQ1LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL2FjaW5jbHVkZS5tNAkyMDExLTA3LTIyIDE5OjI4OjM0LjAwMDAwMDAwMCArMDIwMAor LS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvYWNpbmNsdWRlLm00CTIwMTAtMDUtMjcg MDU6NDA6NDUuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvYWNp bmNsdWRlLm00CTIwMTEtMTItMTkgMDE6MTY6MTUuMjU3NDU1ODYzICswMTAwCiBAQCAtMSwzICsx LDUgQEAKICsjIHNlcmlhbCAxCiArCkBAIC0xNDc2LDEwICsxNDY3LDEwIEBAIEluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi9hY2luY2x1ZGUubTQKICAjIEBkZWZtYWMgQUNfUFJPR19DQ19T VERDCiAgIyBAbWFpbmRleCBQUk9HX0NDX1NUREMKICAjIEBvdmluZGV4IENDCi1JbmRleDogZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvY29yZWxvdy5jCitJbmRleDogZ2RiLTcuNC41MC4yMDExMTIx OC9nZGIvY29yZWxvdy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmln L2dkYi9jb3JlbG93LmMJMjAxMS0wNy0yMiAxOToyNzoyNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jb3JlbG93LmMJMjAxMS0wNy0yMiAxOToyODozNC4wMDAw MDAwMDAgKzAyMDAKKy0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL2NvcmVsb3cuYwky MDExLTEyLTE5IDAwOjU0OjA5LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMTEy MTgvZ2RiL2NvcmVsb3cuYwkyMDExLTEyLTE5IDAxOjE2OjE1LjI1ODQ1NTg1OSArMDEwMAogQEAg LTMyMSw3ICszMjEsNyBAQCBidWlsZF9pZF9sb2NhdGVfZXhlYyAoaW50IGZyb21fdHR5KQogICAg ICAgICAgc3ltZmlsZV9vYmpmaWxlLT5mbGFncyB8PSBPQkpGX0JVSUxEX0lEX0NPUkVfTE9BREVE OwogICAgICB9CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS5wYXRjaCBiL2dk Yi02LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2gKaW5kZXggMDIyZDBjYS4uN2E3MmQ4NiAxMDA2NDQK LS0tIGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS5wYXRjaAorKysgYi9nZGItNi42LWJ1aWxkaWQt bG9jYXRlLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL2NvcmVsb3cuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMDMvZ2RiL2NvcmVsb3cuYwog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvY29yZWxvdy5jCTIw MTEtMDctMjIgMjA6MTI6NDAuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvY29yZWxvdy5jCTIwMTEtMDctMjIgMjA6MTM6MDAuMDAwMDAwMDAwICswMjAwCistLS0g Z2RiLTcuNC41MC4yMDEyMDEwMy5vcmlnL2dkYi9jb3JlbG93LmMJMjAxMS0wNC0xNyAyMToxMjoy MC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi9jb3JlbG93LmMJ MjAxMi0wMS0wMyAxNToyMDo1NC45MDU4NTE0NTYgKzAxMDAKIEBAIC00OCw2ICs0OCw5IEBACiAg I2luY2x1ZGUgInByb2dzcGFjZS5oIgogICNpbmNsdWRlICJvYmpmaWxlcy5oIgpAQCAtMTIsNyAr MTIsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvY29yZWxvdy5jCiAgCiAgCiAg I2lmbmRlZiBPX0xBUkdFRklMRQotQEAgLTI3OSw2ICsyODIsNTIgQEAgYWRkX3RvX3RocmVhZF9s aXN0IChiZmQgKmFiZmQsIGFzZWN0aW9uIAorQEAgLTI3OSw2ICsyODIsNTIgQEAgYWRkX3RvX3Ro cmVhZF9saXN0IChiZmQgKmFiZmQsIGFzZWN0aW9uCiAgICAgIGluZmVyaW9yX3B0aWQgPSBwdGlk OwkJCS8qIFllcywgbWFrZSBpdCBjdXJyZW50LiAgKi8KICB9CiAgCkBAIC05MCwxMSArOTAsMTEg QEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2NvcmVsb3cuYwogKwkJCSAgIE5VTEws IE5VTEwsIE5VTEwsCiArCQkJICAgJnNldGxpc3QsICZzaG93bGlzdCk7CiAgfQotSW5kZXg6IGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL2RvYy9nZGIudGV4aW5mbworSW5kZXg6IGdkYi03LjQuNTAu MjAxMjAxMDMvZ2RiL2RvYy9nZGIudGV4aW5mbwogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAu MjAxMTA3MjIub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTEtMDctMjIgMjA6MTI6NDAuMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZG9jL2dkYi50ZXhpbmZv CTIwMTEtMDctMjIgMjA6MTM6MDAuMDAwMDAwMDAwICswMjAwCi1AQCAtMTU0MDIsNiArMTU0MDIs MjcgQEAgaW5mb3JtYXRpb24gZmlsZXMuCistLS0gZ2RiLTcuNC41MC4yMDEyMDEwMy5vcmlnL2dk Yi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wMS0wMyAwNTo1Mzo0MS4wMDAwMDAwMDAgKzAxMDAKKysr KyBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wMS0wMyAxNToy MDo1NC45MTA4NTE0MzYgKzAxMDAKK0BAIC0xNTk3MSw2ICsxNTk3MSwyNyBAQCBpbmZvcm1hdGlv biBmaWxlcy4KICAKICBAZW5kIHRhYmxlCiAgCkBAIC0xMjIsNzEgKzEyMiw3NCBAQCBJbmRleDog Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZG9jL2dkYi50ZXhpbmZvCiAgQGNpbmRleCBAY29kZXsu Z251X2RlYnVnbGlua30gc2VjdGlvbnMKICBAY2luZGV4IGRlYnVnIGxpbmsgc2VjdGlvbnMKICBB IGRlYnVnIGxpbmsgaXMgYSBzcGVjaWFsIHNlY3Rpb24gb2YgdGhlIGV4ZWN1dGFibGUgZmlsZSBu YW1lZAotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3NvbGliLXN2cjQuYworSW5kZXg6 IGdkYi03LjQuNTAuMjAxMjAxMDMvZ2RiL3NvbGliLXN2cjQuYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvc29saWItc3ZyNC5jCTIwMTEtMDctMjIgMjA6MTI6 NDAuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc29saWItc3Zy NC5jCTIwMTEtMDctMjIgMjA6MTY6MTAuMDAwMDAwMDAwICswMjAwCi1AQCAtMTIwMSw5ICsxMjAx LDQ5IEBAIHN2cjRfY3VycmVudF9zb3MgKHZvaWQpCi0gCQkgICAgIHNhZmVfc3RyZXJyb3IgKGVy cmNvZGUpKTsKLSAJICBlbHNlCi0gCSAgICB7Ci0tCSAgICAgIHN0cm5jcHkgKG5ldy0+c29fbmFt ZSwgYnVmZmVyLCBTT19OQU1FX01BWF9QQVRIX1NJWkUgLSAxKTsKLS0JICAgICAgbmV3LT5zb19u YW1lW1NPX05BTUVfTUFYX1BBVEhfU0laRSAtIDFdID0gJ1wwJzsKLS0JICAgICAgc3RyY3B5IChu ZXctPnNvX29yaWdpbmFsX25hbWUsIG5ldy0+c29fbmFtZSk7Ci0rCSAgICAgIHN0cnVjdCBidWls ZF9pZCAqYnVpbGRfaWQ7Ci0rCi0rCSAgICAgIHN0cm5jcHkgKG5ldy0+c29fb3JpZ2luYWxfbmFt ZSwgYnVmZmVyLCBTT19OQU1FX01BWF9QQVRIX1NJWkUgLSAxKTsKLSsJICAgICAgbmV3LT5zb19v cmlnaW5hbF9uYW1lW1NPX05BTUVfTUFYX1BBVEhfU0laRSAtIDFdID0gJ1wwJzsKLSsJICAgICAg LyogTWF5IGdldCBvdmVyd3JpdHRlbiBiZWxvdy4gICovCi0rCSAgICAgIHN0cmNweSAobmV3LT5z b19uYW1lLCBuZXctPnNvX29yaWdpbmFsX25hbWUpOwotKwotKwkgICAgICBidWlsZF9pZCA9IGJ1 aWxkX2lkX2FkZHJfZ2V0IChsbV9keW5hbWljX2Zyb21fbGlua19tYXAgKG5ldykpOwotKwkgICAg ICBpZiAoYnVpbGRfaWQgIT0gTlVMTCkKLSsJCXsKLSsJCSAgY2hhciAqbmFtZSwgKmJ1aWxkX2lk X2ZpbGVuYW1lOwotKwotKwkJICAvKiBNaXNzaW5nIHRoZSBidWlsZC1pZCBtYXRjaGluZyBzZXBh cmF0ZSBkZWJ1ZyBpbmZvIGZpbGUKLSsJCSAgICAgd291bGQgYmUgaGFuZGxlZCB3aGlsZSBTT19O QU1FIGdldHMgbG9hZGVkLiAgKi8KLSsJCSAgbmFtZSA9IGJ1aWxkX2lkX3RvX2ZpbGVuYW1lIChi dWlsZF9pZCwgJmJ1aWxkX2lkX2ZpbGVuYW1lLCAwKTsKLSsJCSAgaWYgKG5hbWUgIT0gTlVMTCkK LSsJCSAgICB7Ci0rCQkgICAgICBzdHJuY3B5IChuZXctPnNvX25hbWUsIG5hbWUsIFNPX05BTUVf TUFYX1BBVEhfU0laRSAtIDEpOwotKwkJICAgICAgbmV3LT5zb19uYW1lW1NPX05BTUVfTUFYX1BB VEhfU0laRSAtIDFdID0gJ1wwJzsKLSsJCSAgICAgIHhmcmVlIChuYW1lKTsKLSsJCSAgICB9Ci0r CQkgIGVsc2UKLSsJCSAgICB7Ci0rCQkgICAgICBkZWJ1Z19wcmludF9taXNzaW5nIChuZXctPnNv X25hbWUsIGJ1aWxkX2lkX2ZpbGVuYW1lKTsKLSsKLSsJCSAgICAgIC8qIEluIHRoZSBjYXNlIHRo ZSBtYWluIGV4ZWN1dGFibGUgd2FzIGZvdW5kIGFjY29yZGluZyB0bwotKwkJCSBpdHMgYnVpbGQt aWQgKGZyb20gYSBjb3JlIGZpbGUpIHByZXZlbnQgbG9hZGluZwotKwkJCSBhIGRpZmZlcmVudCBi dWlsZCBvZiBhIGxpYnJhcnkgd2l0aCBhY2NpZGVudGFsbHkgdGhlCi0rCQkJIHNhbWUgU09fTkFN RS4KLSsKLSsJCQkgSXQgc3VwcHJlc3NlcyBib2d1cyBiYWNrdHJhY2VzIChhbmQgcHJpbnRzICI/ PyIgdGhlcmUKLSsJCQkgaW5zdGVhZCkgaWYgdGhlIG9uLWRpc2sgZmlsZXMgbm8gbG9uZ2VyIG1h dGNoIHRoZQotKwkJCSBydW5uaW5nIHByb2dyYW0gdmVyc2lvbi4gICovCi0rCi0rCQkgICAgICBp ZiAoc3ltZmlsZV9vYmpmaWxlICE9IE5VTEwKLSsJCQkgICYmIChzeW1maWxlX29iamZpbGUtPmZs YWdzCi0rCQkJICAgICAgJiBPQkpGX0JVSUxEX0lEX0NPUkVfTE9BREVEKSAhPSAwKQotKwkJCW5l dy0+c29fbmFtZVswXSA9IDA7Ci0rCQkgICAgfQotKwotKwkJICB4ZnJlZSAoYnVpbGRfaWRfZmls ZW5hbWUpOwotKwkJICB4ZnJlZSAoYnVpbGRfaWQpOwotKwkJfQotIAkgICAgfQotIAkgIHhmcmVl IChidWZmZXIpOworLS0tIGdkYi03LjQuNTAuMjAxMjAxMDMub3JpZy9nZGIvc29saWItc3ZyNC5j CTIwMTEtMTItMDMgMTk6MzI6MjkuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDEy MDEwMy9nZGIvc29saWItc3ZyNC5jCTIwMTItMDEtMDMgMTU6MjA6NTQuOTExODUxNDMyICswMTAw CitAQCAtMTIyOCw5ICsxMjI4LDUyIEBAIHN2cjRfcmVhZF9zb19saXN0IChDT1JFX0FERFIgbG0s IHN0cnVjdAorIAkgIGNvbnRpbnVlOworIAl9CiAgCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvZWxmcmVhZC5jCistICAgICAgc3RybmNweSAobmV3LT5zb19uYW1lLCBidWZmZXIsIFNP X05BTUVfTUFYX1BBVEhfU0laRSAtIDEpOworLSAgICAgIG5ldy0+c29fbmFtZVtTT19OQU1FX01B WF9QQVRIX1NJWkUgLSAxXSA9ICdcMCc7CistICAgICAgc3RyY3B5IChuZXctPnNvX29yaWdpbmFs X25hbWUsIG5ldy0+c29fbmFtZSk7CisrICAgICAgeworKwlzdHJ1Y3QgYnVpbGRfaWQgKmJ1aWxk X2lkOworKworKwlzdHJuY3B5IChuZXctPnNvX29yaWdpbmFsX25hbWUsIGJ1ZmZlciwgU09fTkFN RV9NQVhfUEFUSF9TSVpFIC0gMSk7CisrCW5ldy0+c29fb3JpZ2luYWxfbmFtZVtTT19OQU1FX01B WF9QQVRIX1NJWkUgLSAxXSA9ICdcMCc7CisrCS8qIE1heSBnZXQgb3ZlcndyaXR0ZW4gYmVsb3cu ICAqLworKwlzdHJjcHkgKG5ldy0+c29fbmFtZSwgbmV3LT5zb19vcmlnaW5hbF9uYW1lKTsKKysK KysJYnVpbGRfaWQgPSBidWlsZF9pZF9hZGRyX2dldCAobmV3LT5sbV9pbmZvLT5sX2xkKTsKKysJ aWYgKGJ1aWxkX2lkICE9IE5VTEwpCisrCSAgeworKwkgICAgY2hhciAqbmFtZSwgKmJ1aWxkX2lk X2ZpbGVuYW1lOworKworKwkgICAgLyogTWlzc2luZyB0aGUgYnVpbGQtaWQgbWF0Y2hpbmcgc2Vw YXJhdGUgZGVidWcgaW5mbyBmaWxlCisrCSAgICAgICB3b3VsZCBiZSBoYW5kbGVkIHdoaWxlIFNP X05BTUUgZ2V0cyBsb2FkZWQuICAqLworKwkgICAgbmFtZSA9IGJ1aWxkX2lkX3RvX2ZpbGVuYW1l IChidWlsZF9pZCwgJmJ1aWxkX2lkX2ZpbGVuYW1lLCAwKTsKKysJICAgIGlmIChuYW1lICE9IE5V TEwpCisrCSAgICAgIHsKKysJCXN0cm5jcHkgKG5ldy0+c29fbmFtZSwgbmFtZSwgU09fTkFNRV9N QVhfUEFUSF9TSVpFIC0gMSk7CisrCQluZXctPnNvX25hbWVbU09fTkFNRV9NQVhfUEFUSF9TSVpF IC0gMV0gPSAnXDAnOworKwkJeGZyZWUgKG5hbWUpOworKwkgICAgICB9CisrCSAgICBlbHNlCisr CSAgICAgIHsKKysJCWRlYnVnX3ByaW50X21pc3NpbmcgKG5ldy0+c29fbmFtZSwgYnVpbGRfaWRf ZmlsZW5hbWUpOworKworKwkJLyogSW4gdGhlIGNhc2UgdGhlIG1haW4gZXhlY3V0YWJsZSB3YXMg Zm91bmQgYWNjb3JkaW5nIHRvCisrCQkgICBpdHMgYnVpbGQtaWQgKGZyb20gYSBjb3JlIGZpbGUp IHByZXZlbnQgbG9hZGluZworKwkJICAgYSBkaWZmZXJlbnQgYnVpbGQgb2YgYSBsaWJyYXJ5IHdp dGggYWNjaWRlbnRhbGx5IHRoZQorKwkJICAgc2FtZSBTT19OQU1FLgorKworKwkJICAgSXQgc3Vw cHJlc3NlcyBib2d1cyBiYWNrdHJhY2VzIChhbmQgcHJpbnRzICI/PyIgdGhlcmUKKysJCSAgIGlu c3RlYWQpIGlmIHRoZSBvbi1kaXNrIGZpbGVzIG5vIGxvbmdlciBtYXRjaCB0aGUKKysJCSAgIHJ1 bm5pbmcgcHJvZ3JhbSB2ZXJzaW9uLiAgKi8KKysKKysJCWlmIChzeW1maWxlX29iamZpbGUgIT0g TlVMTAorKwkJICAgICYmIChzeW1maWxlX29iamZpbGUtPmZsYWdzCisrCQkJJiBPQkpGX0JVSUxE X0lEX0NPUkVfTE9BREVEKSAhPSAwKQorKwkJICBuZXctPnNvX25hbWVbMF0gPSAwOworKwkgICAg ICB9CisrCisrCSAgICB4ZnJlZSAoYnVpbGRfaWRfZmlsZW5hbWUpOworKwkgICAgeGZyZWUgKGJ1 aWxkX2lkKTsKKysJICB9CisrICAgICAgfQorKworICAgICAgIHhmcmVlIChidWZmZXIpOworIAor ICAgICAgIC8qIElmIHRoaXMgZW50cnkgaGFzIG5vIG5hbWUsIG9yIGl0cyBuYW1lIG1hdGNoZXMg dGhlIG5hbWUKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi9lbGZyZWFkLmMKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDExLTA3 LTIyIDIwOjEyOjQwLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L2VsZnJlYWQuYwkyMDExLTA3LTIyIDIwOjEzOjAwLjAwMDAwMDAwMCArMDIwMAotQEAgLTQ1LDYg KzQ1LDExIEBACi0gI2luY2x1ZGUgImluZmNhbGwuaCIKKy0tLSBnZGItNy40LjUwLjIwMTIwMTAz Lm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDEyLTAxLTAzIDA1OjUyOjE1LjAwMDAwMDAwMCArMDEwMAor KysrIGdkYi03LjQuNTAuMjAxMjAxMDMvZ2RiL2VsZnJlYWQuYwkyMDEyLTAxLTAzIDE1OjIxOjA5 LjkzMzc5NjE2OCArMDEwMAorQEAgLTQ2LDYgKzQ2LDExIEBACiAgI2luY2x1ZGUgImdkYnRocmVh ZC5oIgogICNpbmNsdWRlICJyZWdjYWNoZS5oIgorICNpbmNsdWRlICJiY2FjaGUuaCIKICsjaW5j bHVkZSAibGliYmZkLmgiCiArI2luY2x1ZGUgImdkYmNvcmUuaCIKICsjaW5jbHVkZSAiZ2RiY21k LmgiCkBAIC0xOTUsNyArMTk4LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2Vs ZnJlYWQuYwogIAogIGV4dGVybiB2b2lkIF9pbml0aWFsaXplX2VsZnJlYWQgKHZvaWQpOwogIAot QEAgLTEwNzQsMTYgKzEwNzksNjUgQEAgZWxmX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm5fc3Rv cCAoc3RydQorQEAgLTEwNzgsMTYgKzEwODMsNjUgQEAgZWxmX2dudV9pZnVuY19yZXNvbHZlcl9y ZXR1cm5fc3RvcCAoc3RydQogICAgdXBkYXRlX2JyZWFrcG9pbnRfbG9jYXRpb25zIChiLCBzYWxz LCBzYWxzX2VuZCk7CiAgfQogIApAQCAtMjYzLDcgKzI2Niw3IEBAIEluZGV4OiBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi9lbGZyZWFkLmMKICB7CiAgICBzdHJ1Y3QgYnVpbGRfaWQgKnJldHZhbDsK ICAKLUBAIC0xMDk5LDYgKzExNTMsMzQ4IEBAIGJ1aWxkX2lkX2JmZF9nZXQgKGJmZCAqYWJmZCkK K0BAIC0xMTAzLDYgKzExNTcsMzQ4IEBAIGJ1aWxkX2lkX2JmZF9nZXQgKGJmZCAqYWJmZCkKICAg IHJldHVybiByZXR2YWw7CiAgfQogIApAQCAtNjEyLDcgKzYxNSw3IEBAIEluZGV4OiBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi9lbGZyZWFkLmMKICAvKiBSZXR1cm4gaWYgRklMRU5BTUUgaGFzIE5U X0dOVV9CVUlMRF9JRCBtYXRjaGluZyB0aGUgQ0hFQ0sgdmFsdWUuICAqLwogIAogIHN0YXRpYyBp bnQKLUBAIC0xMTEzLDcgKzE1MDksNyBAQCBidWlsZF9pZF92ZXJpZnkgKGNvbnN0IGNoYXIgKmZp bGVuYW1lLCBzCitAQCAtMTExNyw3ICsxNTEzLDcgQEAgYnVpbGRfaWRfdmVyaWZ5IChjb25zdCBj aGFyICpmaWxlbmFtZSwgcwogICAgaWYgKGFiZmQgPT0gTlVMTCkKICAgICAgcmV0dXJuIDA7CiAg CkBAIC02MjEsNyArNjI0LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2VsZnJl YWQuYwogIAogICAgaWYgKGZvdW5kID09IE5VTEwpCiAgICAgIHdhcm5pbmcgKF8oIkZpbGUgXCIl c1wiIGhhcyBubyBidWlsZC1pZCwgZmlsZSBza2lwcGVkIiksIGZpbGVuYW1lKTsKLUBAIC0xMTMx LDE0ICsxNTI3LDE1IEBAIGJ1aWxkX2lkX3ZlcmlmeSAoY29uc3QgY2hhciAqZmlsZW5hbWUsIHMK K0BAIC0xMTM1LDE0ICsxNTMxLDE1IEBAIGJ1aWxkX2lkX3ZlcmlmeSAoY29uc3QgY2hhciAqZmls ZW5hbWUsIHMKICAgIHJldHVybiByZXR2YWw7CiAgfQogIApAQCAtNjQxLDcgKzY0NCw3IEBAIElu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9lbGZyZWFkLmMKICAKICAgIC8qIEtlZXAgYmFj a3dhcmQgY29tcGF0aWJpbGl0eSBzbyB0aGF0IERFQlVHX0ZJTEVfRElSRUNUT1JZIGJlaW5nICIi IHdpbGwKICAgICAgIGNhdXNlICIvLmJ1aWxkLWlkLy4uLiIgbG9va3Vwcy4gICovCi1AQCAtMTE0 OSw2ICsxNTQ2LDggQEAgYnVpbGRfaWRfdG9fZGVidWdfZmlsZW5hbWUgKHN0cnVjdCBidWlsZAor QEAgLTExNTMsNiArMTU1MCw4IEBAIGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1lIChzdHJ1Y3Qg YnVpbGQKICAgICAgICBjaGFyICpzLCAqZGVidWdkaXJfZW5kOwogICAgICAgIGdkYl9ieXRlICpk YXRhID0gYnVpbGRfaWQtPmRhdGE7CiAgICAgICAgc2l6ZV90IHNpemUgPSBidWlsZF9pZC0+c2l6 ZTsKQEAgLTY1MCw3ICs2NTMsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZWxm cmVhZC5jCiAgCiAgICAgICAgd2hpbGUgKCpkZWJ1Z2RpciA9PSBESVJOQU1FX1NFUEFSQVRPUikK ICAJZGVidWdkaXIrKzsKLUBAIC0xMTY5LDM5ICsxNTY4LDI0MiBAQCBidWlsZF9pZF90b19kZWJ1 Z19maWxlbmFtZSAoc3RydWN0IGJ1aWxkCitAQCAtMTE3MywzOSArMTU3MiwyNDIgQEAgYnVpbGRf aWRfdG9fZGVidWdfZmlsZW5hbWUgKHN0cnVjdCBidWlsZAogIAkqcysrID0gJy8nOwogICAgICAg IHdoaWxlIChzaXplLS0gPiAwKQogIAlzICs9IHNwcmludGYgKHMsICIlMDJ4IiwgKHVuc2lnbmVk KSAqZGF0YSsrKTsKQEAgLTkwNSw3ICs5MDgsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvZWxmcmVhZC5jCiAgICAgICAgeGZyZWUgKGJ1aWxkX2lkKTsKICAgICAgICAvKiBQcmV2 ZW50IGxvb3Bpbmcgb24gYSBzdHJpcHBlZCAuZGVidWcgZmlsZS4gICovCiAgICAgICAgaWYgKGJ1 aWxkX2lkX25hbWUgIT0gTlVMTAotQEAgLTEyMTIsNyArMTgxNCw3IEBAIGZpbmRfc2VwYXJhdGVf ZGVidWdfZmlsZV9ieV9idWlsZGlkIChzdHIKK0BAIC0xMjE2LDcgKzE4MTgsNyBAQCBmaW5kX3Nl cGFyYXRlX2RlYnVnX2ZpbGVfYnlfYnVpbGRpZCAoc3RyCiAgCSAgeGZyZWUgKGJ1aWxkX2lkX25h bWUpOwogIAl9CiAgICAgICAgZWxzZSBpZiAoYnVpbGRfaWRfbmFtZSAhPSBOVUxMKQpAQCAtOTE0 LDcgKzkxNyw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9lbGZyZWFkLmMKICAg ICAgfQogICAgcmV0dXJuIE5VTEw7CiAgfQotQEAgLTE0MzIsOSArMjAzNCwxMCBAQCBlbGZfc3lt ZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsCitAQCAtMTQzNiw5ICsyMDM4LDEwIEBA IGVsZl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWwKICAgICAgIGAubm90ZS5n bnUuYnVpbGQtaWQnLiAgKi8KICAgIGVsc2UgaWYgKCFvYmpmaWxlX2hhc19wYXJ0aWFsX3N5bWJv bHMgKG9iamZpbGUpKQogICAgICB7CkBAIC05MjcsNyArOTMwLDcgQEAgSW5kZXg6IGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL2VsZnJlYWQuYwogIAogICAgICAgIGlmIChkZWJ1Z2ZpbGUgPT0gTlVM TCkKICAJZGVidWdmaWxlID0gZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlX2J5X2RlYnVnbGluayAo b2JqZmlsZSk7Ci1AQCAtMTQ0Niw2ICsyMDQ5LDEyIEBAIGVsZl9zeW1maWxlX3JlYWQgKHN0cnVj dCBvYmpmaWxlICpvYmpmaWwKK0BAIC0xNDUwLDYgKzIwNTMsMTIgQEAgZWxmX3N5bWZpbGVfcmVh ZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbAogIAkgIHN5bWJvbF9maWxlX2FkZF9zZXBhcmF0ZSAo YWJmZCwgc3ltZmlsZV9mbGFncywgb2JqZmlsZSk7CiAgCSAgeGZyZWUgKGRlYnVnZmlsZSk7CiAg CX0KQEAgLTk0MCw3ICs5NDMsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZWxm cmVhZC5jCiAgICAgIH0KICB9CiAgCi1AQCAtMTkyNSw0ICsyNTM0LDE2IEBAIF9pbml0aWFsaXpl X2VsZnJlYWQgKHZvaWQpCitAQCAtMTkzMyw0ICsyNTQyLDE2IEBAIF9pbml0aWFsaXplX2VsZnJl YWQgKHZvaWQpCiAgCiAgICBlbGZfb2JqZmlsZV9nbnVfaWZ1bmNfY2FjaGVfZGF0YSA9IHJlZ2lz dGVyX29iamZpbGVfZGF0YSAoKTsKICAgIGdudV9pZnVuY19mbnNfcCA9ICZlbGZfZ251X2lmdW5j X2ZuczsKQEAgLTk1NywxMSArOTYwLDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi9lbGZyZWFkLmMKICsKICsgIG9ic2VydmVyX2F0dGFjaF9leGVjdXRhYmxlX2NoYW5nZWQgKGRl YnVnX3ByaW50X2V4ZWN1dGFibGVfY2hhbmdlZCk7CiAgfQotSW5kZXg6IGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL3N5bWZpbGUuaAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMDMvZ2RiL3N5bWZp bGUuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvc3ltZmls ZS5oCTIwMTEtMDctMjIgMjA6MTI6NDAuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvc3ltZmlsZS5oCTIwMTEtMDctMjIgMjA6MTM6MDAuMDAwMDAwMDAwICswMjAw Ci1AQCAtNjA5LDYgKzYwOSwxMyBAQCB2b2lkIGZyZWVfc3ltZmlsZV9zZWdtZW50X2RhdGEgKHN0 cnVjdCBzCistLS0gZ2RiLTcuNC41MC4yMDEyMDEwMy5vcmlnL2dkYi9zeW1maWxlLmgJMjAxMi0w MS0wMyAwNTo1MjoxNS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTAzL2dk Yi9zeW1maWxlLmgJMjAxMi0wMS0wMyAxNToyMDo1NC45MTQ4NTE0MjIgKzAxMDAKK0BAIC02MTYs NiArNjE2LDEzIEBAIHZvaWQgZnJlZV9zeW1maWxlX3NlZ21lbnRfZGF0YSAoc3RydWN0IHMKICAK ICBleHRlcm4gc3RydWN0IGNsZWFudXAgKmluY3JlbWVudF9yZWFkaW5nX3N5bXRhYiAodm9pZCk7 CiAgCkBAIC05NzUsMTEgKzk3OCwxMSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv c3ltZmlsZS5oCiAgLyogRnJvbSBkd2FyZjJyZWFkLmMgKi8KICAKICAvKiBOYW1lcyBmb3IgYSBk d2FyZjIgZGVidWdnaW5nIHNlY3Rpb24uICBUaGUgZmllbGQgTk9STUFMIGlzIHRoZSBub3JtYWwK LUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKK0lu ZGV4OiBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2Ri LmV4cAkyMDExLTA3LTIyIDIwOjEyOjQwLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDExLTA3LTIyIDIwOjEzOjAwLjAw MDAwMDAwMCArMDIwMAotQEAgLTEzOTAsNiArMTM5MCwxNiBAQCBwcm9jIGRlZmF1bHRfZ2RiX3N0 YXJ0IHsgfSB7CistLS0gZ2RiLTcuNC41MC4yMDEyMDEwMy5vcmlnL2dkYi90ZXN0c3VpdGUvbGli L2dkYi5leHAJMjAxMi0wMS0wMyAwNTo1MjoxNS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40 LjUwLjIwMTIwMTAzL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAxMi0wMS0wMyAxNToyMDo1 NC45MTQ4NTE0MjIgKzAxMDAKK0BAIC0xMzg3LDYgKzEzODcsMTYgQEAgcHJvYyBkZWZhdWx0X2dk Yl9zdGFydCB7IH0gewogIAkgICAgd2FybmluZyAiQ291bGRuJ3Qgc2V0IHRoZSB3aWR0aCB0byAw LiIKICAJfQogICAgICB9CkBAIC05OTYsMTMgKzk5OSwxMyBAQCBJbmRleDogZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCiAgICAgIHJldHVybiAwOwogIH0KICAK LUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQu ZXhwCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEwMy9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBw b3J0LmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvdGVz dHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAkyMDExLTA3LTIyIDIwOjEyOjQwLjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9y dC5leHAJMjAxMS0wNy0yMiAyMDoxMzowMC4wMDAwMDAwMDAgKzAyMDAKLUBAIC0yMjIsNiArMjIy LDE2IEBAIHByb2MgZGVmYXVsdF9taV9nZGJfc3RhcnQgeyBhcmdzIH0gewotIAkgICAgfQotICAg ICAJfQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMDMub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9taS1z dXBwb3J0LmV4cAkyMDExLTEyLTAzIDIxOjIwOjI5LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03 LjQuNTAuMjAxMjAxMDMvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAxMi0wMS0w MyAxNToyMDo1NC45MTU4NTE0MTkgKzAxMDAKK0BAIC0yMTIsNiArMjEyLDE2IEBAIHByb2MgZGVm YXVsdF9taV9nZGJfc3RhcnQgeyBhcmdzIH0geworIAkgICAgd2FybmluZyAiQ291bGRuJ3Qgc2V0 IHRoZSB3aWR0aCB0byAwLiIKKyAJfQogICAgICB9CiArICAgICMgVHVybiBvZmYgdGhlIG1pc3Np bmcgd2FybmluZ3MgYXMgdGhlIHRlc3RzdWl0ZSBkb2VzIG5vdCBleHBlY3QgaXQuCiArICAgIHNl bmRfZ2RiICIxOTAtZ2RiLXNldCBidWlsZC1pZC12ZXJib3NlIDBcbiIKQEAgLTEwMTQsMTYgKzEw MTcsMTYgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9saWIvbWkt c3VwcG9ydC5leHAKICsJICAgIHdhcm5pbmcgIkNvdWxkIG5vdCBkaXNhYmxlIHRoZSBtaXNzaW5n IGRlYnVnIGluZm9zIHdhcm5pbmdzLi4iCiArCX0KICsgICAgfQotIAotICAgICBkZXRlY3RfYXN5 bmMKLSAKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9vYmpmaWxlcy5oCisgICAgICMg SWYgYWxsb3dpbmcgdGhlIGluZmVyaW9yIHRvIGhhdmUgaXRzIG93biBQVFkgdGhlbiBhc3NpZ24g dGhlIGluZmVyaW9yCisgICAgICMgaXRzIG93biB0ZXJtaW5hbCBkZXZpY2UgaGVyZS4KKyAgICAg aWYgeyAkc2VwYXJhdGVfaW5mZXJpb3JfcHR5IH0geworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAx MDMvZ2RiL29iamZpbGVzLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9y aWcvZ2RiL29iamZpbGVzLmgJMjAxMS0wNy0yMiAyMDoxMjo0MC4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9vYmpmaWxlcy5oCTIwMTEtMDctMjIgMjA6MTM6MDAu MDAwMDAwMDAwICswMjAwCi1AQCAtNDM0LDYgKzQzNCwxMCBAQCBzdHJ1Y3Qgb2JqZmlsZQorLS0t IGdkYi03LjQuNTAuMjAxMjAxMDMub3JpZy9nZGIvb2JqZmlsZXMuaAkyMDExLTEyLTA4IDE5OjA4 OjEyLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMDMvZ2RiL29iamZpbGVz LmgJMjAxMi0wMS0wMyAxNToyMDo1NC45MTU4NTE0MTkgKzAxMDAKK0BAIC00MzUsNiArNDM1LDEw IEBAIHN0cnVjdCBvYmpmaWxlCiAgCi0gI2RlZmluZSBPQkpGX1BTWU1UQUJTX1JFQUQgKDEgPDwg NCkKKyAjZGVmaW5lIE9CSkZfTUFJTkxJTkUgKDEgPDwgNSkKICAKICsvKiBUaGlzIGZpbGUgd2Fz IGxvYWRlZCBhY2NvcmRpbmcgdG8gdGhlIEJVSUxEX0lEX0NPUkVfTE9BRFMgcnVsZXMuICAqLwog KwoKZGlmZiAtLWdpdCBhL2dkYi02LjYtc2NoZWR1bGVyX2xvY2tpbmctc3RlcC1zdy13YXRjaHBv aW50czIucGF0Y2ggYi9nZGItNi42LXNjaGVkdWxlcl9sb2NraW5nLXN0ZXAtc3ctd2F0Y2hwb2lu dHMyLnBhdGNoCmluZGV4IDY3MWI0NTcuLmM3ZjBkMzMgMTAwNjQ0Ci0tLSBhL2dkYi02LjYtc2No ZWR1bGVyX2xvY2tpbmctc3RlcC1zdy13YXRjaHBvaW50czIucGF0Y2gKKysrIGIvZ2RiLTYuNi1z Y2hlZHVsZXJfbG9ja2luZy1zdGVwLXN3LXdhdGNocG9pbnRzMi5wYXRjaApAQCAtMjEsMTEgKzIx LDExIEBACiAKIAlQb3J0IHRvIEdEQi02LjhwcmUuCiAKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi9pbmZlcmlvci5oCitJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvaW5mZXJp b3IuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvaW5mZXJp b3IuaAkyMDExLTA3LTIyIDAxOjQ2OjA4LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL2luZmVyaW9yLmgJMjAxMS0wNy0yMiAxOToxMzozMC4wMDAwMDAwMDAgKzAy MDAKLUBAIC0xNTgsNyArMTU4LDE1IEBAIGV4dGVybiB2b2lkIHJlb3Blbl9leGVjX2ZpbGUgKHZv aWQpOworLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvaW5mZXJpb3IuaAkyMDExLTEw LTA3IDE0OjA2OjQ2LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2Ri L2luZmVyaW9yLmgJMjAxMS0xMi0xOCAyMzo0MDo1OS4yNTczMDA0NTEgKzAxMDAKK0BAIC0xNjIs NyArMTYyLDE1IEBAIGV4dGVybiB2b2lkIHJlb3Blbl9leGVjX2ZpbGUgKHZvaWQpOwogIC8qIFRo ZSBgcmVzdW1lJyByb3V0aW5lIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpbiBzcGVjaWFsIGNpcmN1 bXN0YW5jZXMuCiAgICAgTm9ybWFsbHksIHVzZSBgcHJvY2VlZCcsIHdoaWNoIGhhbmRsZXMgYSBs b3Qgb2YgYm9va2tlZXBpbmcuICAqLwogIApAQCAtNDIsMTAgKzQyLDEwIEBAIEluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi9pbmZlcmlvci5oCiAgCiAgZXh0ZXJuIHB0aWRfdCB1c2VyX3Zp c2libGVfcmVzdW1lX3B0aWQgKGludCBzdGVwKTsKICAKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi9pbmZydW4uYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2luZnJ1bi5j CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9pbmZydW4uYwky MDExLTA3LTIyIDE5OjA4OjE5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL2luZnJ1bi5jCTIwMTEtMDctMjIgMTk6MTI6NTYuMDAwMDAwMDAwICswMjAwCistLS0g Z2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi9pbmZydW4uYwkyMDExLTExLTIyIDIyOjI1OjE3 LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2luZnJ1bi5jCTIw MTEtMTItMTkgMDA6MTI6MzQuNDcwODU0MjE4ICswMTAwCiBAQCAtNzksNyArNzksNyBAQCBzdGF0 aWMgaW50IGZvbGxvd19mb3JrICh2b2lkKTsKICBzdGF0aWMgdm9pZCBzZXRfc2NoZWRsb2NrX2Z1 bmMgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSwKICAJCQkJc3RydWN0IGNtZF9saXN0X2VsZW1l bnQgKmMpOwpAQCAtNTUsNyArNTUsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv aW5mcnVuLmMKICAKICBzdGF0aWMgaW50IGN1cnJlbnRseV9zdGVwcGluZ19vcl9uZXh0aW5nX2Nh bGxiYWNrIChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwLAogIAkJCQkJCSAgIHZvaWQgKmRhdGEpOwot QEAgLTE2MzAsNyArMTYzMCw4IEBAIHVzZXJfdmlzaWJsZV9yZXN1bWVfcHRpZCAoaW50IHN0ZXAp CitAQCAtMTY2OCw3ICsxNjY4LDggQEAgdXNlcl92aXNpYmxlX3Jlc3VtZV9wdGlkIChpbnQgc3Rl cCkKICAgICAgfQogICAgZWxzZSBpZiAoKHNjaGVkdWxlcl9tb2RlID09IHNjaGVkbG9ja19vbikK ICAJICAgfHwgKHNjaGVkdWxlcl9tb2RlID09IHNjaGVkbG9ja19zdGVwCkBAIC02NSw3ICs2NSw3 IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9pbmZydW4uYwogICAgICB7CiAgICAg ICAgLyogVXNlci1zZXR0YWJsZSAnc2NoZWR1bGVyJyBtb2RlIHJlcXVpcmVzIHNvbG8gdGhyZWFk IHJlc3VtZS4gICovCiAgICAgICAgcmVzdW1lX3B0aWQgPSBpbmZlcmlvcl9wdGlkOwotQEAgLTE2 NDgsNyArMTY0OSw3IEBAIHVzZXJfdmlzaWJsZV9yZXN1bWVfcHRpZCAoaW50IHN0ZXApCitAQCAt MTY4Niw3ICsxNjg3LDcgQEAgdXNlcl92aXNpYmxlX3Jlc3VtZV9wdGlkIChpbnQgc3RlcCkKICAg ICBTVEVQIG5vbnplcm8gaWYgd2Ugc2hvdWxkIHN0ZXAgKHplcm8gdG8gY29udGludWUgaW5zdGVh ZCkuCiAgICAgU0lHIGlzIHRoZSBzaWduYWwgdG8gZ2l2ZSB0aGUgaW5mZXJpb3IgKHplcm8gZm9y IG5vbmUpLiAgKi8KICB2b2lkCkBAIC03NCw3ICs3NCw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi9pbmZydW4uYwogIHsKICAgIGludCBzaG91bGRfcmVzdW1lID0gMTsKICAgIHN0 cnVjdCBjbGVhbnVwICpvbGRfY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHJlc3VtZV9jbGVhbnVw cywgMCk7Ci1AQCAtMTY4MSw5ICsxNjgyLDEzIEBAIHJlc3VtZSAoaW50IHN0ZXAsIGVudW0gdGFy Z2V0X3NpZ25hbCBzaWcKK0BAIC0xNzE5LDkgKzE3MjAsMTMgQEAgcmVzdW1lIChpbnQgc3RlcCwg ZW51bSB0YXJnZXRfc2lnbmFsIHNpZwogIAogICAgaWYgKGRlYnVnX2luZnJ1bikKICAgICAgZnBy aW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLApAQCAtOTAsNyArOTAsNyBAQCBJbmRleDogZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvaW5mcnVuLmMKICAJCQl0YXJnZXRfcGlkX3RvX3N0ciAoaW5m ZXJpb3JfcHRpZCksCiAgCQkJcGFkZHJlc3MgKGdkYmFyY2gsIHBjKSk7CiAgCi1AQCAtMjA1Niw3 ICsyMDYxLDcgQEAgcHJvY2VlZCAoQ09SRV9BRERSIGFkZHIsIGVudW0gdGFyZ2V0X3NpZworQEAg LTIwOTQsNyArMjA5OSw3IEBAIHByb2NlZWQgKENPUkVfQUREUiBhZGRyLCBlbnVtIHRhcmdldF9z aWcKICAgIHN0cnVjdCB0aHJlYWRfaW5mbyAqdHA7CiAgICBDT1JFX0FERFIgcGM7CiAgICBzdHJ1 Y3QgYWRkcmVzc19zcGFjZSAqYXNwYWNlOwpAQCAtOTksNyArOTksNyBAQCBJbmRleDogZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvaW5mcnVuLmMKICAKICAgIC8qIElmIHdlJ3JlIHN0b3BwZWQgYXQg YSBmb3JrL3Zmb3JrLCBmb2xsb3cgdGhlIGJyYW5jaCBzZXQgYnkgdGhlCiAgICAgICAic2V0IGZv bGxvdy1mb3JrLW1vZGUiIGNvbW1hbmQ7IG90aGVyd2lzZSwgd2UnbGwganVzdCBwcm9jZWVkCi1A QCAtMjA5NiwxMyArMjEwMSwxMyBAQCBwcm9jZWVkIChDT1JFX0FERFIgYWRkciwgZW51bSB0YXJn ZXRfc2lnCitAQCAtMjEzNCwxMyArMjEzOSwxMyBAQCBwcm9jZWVkIChDT1JFX0FERFIgYWRkciwg ZW51bSB0YXJnZXRfc2lnCiAgCSAgIGFjdHVhbGx5IGJlIGV4ZWN1dGluZyB0aGUgYnJlYWtwb2lu dCBpbnNuIGFueXdheS4KICAJICAgV2UnbGwgYmUgKHVuLSlleGVjdXRpbmcgdGhlIHByZXZpb3Vz IGluc3RydWN0aW9uLiAgKi8KICAKQEAgLTExNSw3ICsxMTUsNyBAQCBJbmRleDogZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvaW5mcnVuLmMKICAgICAgfQogICAgZWxzZQogICAgICB7Ci1AQCAtMjEz MywxMyArMjEzOCwxMyBAQCBwcm9jZWVkIChDT1JFX0FERFIgYWRkciwgZW51bSB0YXJnZXRfc2ln CitAQCAtMjE3MSwxMyArMjE3NiwxMyBAQCBwcm9jZWVkIChDT1JFX0FERFIgYWRkciwgZW51bSB0 YXJnZXRfc2lnCiAgCSBpcyByZXF1aXJlZCBpdCByZXR1cm5zIFRSVUUgYW5kIHNldHMgdGhlIGN1 cnJlbnQgdGhyZWFkIHRvCiAgCSB0aGUgb2xkIHRocmVhZC4gICovCiAgICAgICAgaWYgKHByZXBh cmVfdG9fcHJvY2VlZCAoc3RlcCkpCkBAIC0xMzEsNyArMTMxLDcgQEAgSW5kZXg6IGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL2luZnJ1bi5jCiAgICAgIHsKICAgICAgICB0cC0+Y29udHJvbC50cmFw X2V4cGVjdGVkID0gMTsKICAgICAgICAvKiBJZiBkaXNwbGFjZWQgc3RlcHBpbmcgaXMgZW5hYmxl ZCwgd2UgY2FuIHN0ZXAgb3ZlciB0aGUKLUBAIC0yMjI2LDggKzIyMzEsMTMgQEAgcHJvY2VlZCAo Q09SRV9BRERSIGFkZHIsIGVudW0gdGFyZ2V0X3NpZworQEAgLTIyNjQsOCArMjI2OSwxMyBAQCBw cm9jZWVkIChDT1JFX0FERFIgYWRkciwgZW51bSB0YXJnZXRfc2lnCiAgICAvKiBSZXNldCB0byBu b3JtYWwgc3RhdGUuICAqLwogICAgaW5pdF9pbmZ3YWl0X3N0YXRlICgpOwogIApAQCAtMTQ2LDcg KzE0Niw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9pbmZydW4uYwogIAogICAg LyogV2FpdCBmb3IgaXQgdG8gc3RvcCAoaWYgbm90IHN0YW5kYWxvbmUpCiAgICAgICBhbmQgaW4g YW55IGNhc2UgZGVjb2RlIHdoeSBpdCBzdG9wcGVkLCBhbmQgYWN0IGFjY29yZGluZ2x5LiAgKi8K LUBAIC01MTIzLDE0ICs1MTMzLDE5IEBAIHByb2Nlc3NfZXZlbnRfc3RvcF90ZXN0OgorQEAgLTUy MjMsMTMgKzUyMzMsMTggQEAgcHJvY2Vzc19ldmVudF9zdG9wX3Rlc3Q6CiAgCiAgLyogSXMgdGhy ZWFkIFRQIGluIHRoZSBtaWRkbGUgb2Ygc2luZ2xlLXN0ZXBwaW5nPyAgKi8KICAKQEAgLTE1Nywx MiArMTU3LDEwIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9pbmZydW4uYwogLSAg cmV0dXJuICgodHAtPmNvbnRyb2wuc3RlcF9yYW5nZV9lbmQKIC0JICAgJiYgdHAtPmNvbnRyb2wu c3RlcF9yZXN1bWVfYnJlYWtwb2ludCA9PSBOVUxMKQogLQkgIHx8IHRwLT5jb250cm9sLnRyYXBf ZXhwZWN0ZWQKLS0JICB8fCB0cC0+c3RlcHBpbmdfdGhyb3VnaF9zb2xpYl9hZnRlcl9jYXRjaAog LQkgIHx8IGJwc3RhdF9zaG91bGRfc3RlcCAoKSk7CiArICBpZiAoKHRwLT5jb250cm9sLnN0ZXBf cmFuZ2VfZW5kCiArICAgICAgICYmIHRwLT5jb250cm9sLnN0ZXBfcmVzdW1lX2JyZWFrcG9pbnQg PT0gTlVMTCkKLSsgICAgICB8fCB0cC0+Y29udHJvbC50cmFwX2V4cGVjdGVkCi0rICAgICAgfHwg dHAtPnN0ZXBwaW5nX3Rocm91Z2hfc29saWJfYWZ0ZXJfY2F0Y2gpCisrICAgICAgfHwgdHAtPmNv bnRyb2wudHJhcF9leHBlY3RlZCkKICsgICAgcmV0dXJuIFJFU1VNRV9TVEVQX1VTRVI7CiArCiAr ICBpZiAoYnBzdGF0X3Nob3VsZF9zdGVwICgpKQpAQCAtMTcyLDI3ICsxNzAsMjggQEAgSW5kZXg6 IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2luZnJ1bi5jCiAgfQogIAogIC8qIFJldHVybnMgdHJ1 ZSBpZiBhbnkgdGhyZWFkICpidXQqIHRoZSBvbmUgcGFzc2VkIGluICJkYXRhIiBpcyBpbiB0aGUK LUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9saW51eC1uYXQuYworSW5kZXg6IGdkYi03 LjQuNTAuMjAxMTEyMTgvZ2RiL2xpbnV4LW5hdC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41 MC4yMDExMDcyMi5vcmlnL2dkYi9saW51eC1uYXQuYwkyMDExLTA3LTIyIDE5OjA4OjE5LjAwMDAw MDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2xpbnV4LW5hdC5jCTIwMTEt MDctMjIgMTk6MTA6MjQuMDAwMDAwMDAwICswMjAwCi1AQCAtMjk4Niw3ICsyOTg2LDEwIEBAIGNv dW50X2V2ZW50c19jYWxsYmFjayAoc3RydWN0IGx3cF9pbmZvICoKLSBzdGF0aWMgaW50CistLS0g Z2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi9saW51eC1uYXQuYwkyMDExLTEyLTE4IDIzOjM1 OjIzLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2xpbnV4LW5h dC5jCTIwMTEtMTItMTkgMDA6MDg6NDEuODI0ODU1MzUzICswMTAwCitAQCAtMzAzNiw3ICszMDM2 LDExIEBAIHN0YXRpYyBpbnQKICBzZWxlY3Rfc2luZ2xlc3RlcF9sd3BfY2FsbGJhY2sgKHN0cnVj dCBsd3BfaW5mbyAqbHAsIHZvaWQgKmRhdGEpCiAgewotLSAgaWYgKGxwLT5zdGVwICYmIGxwLT5z dGF0dXMgIT0gMCkKLSsgIC8qIFdlIGRvIG5vdCBmb2N1cyBvbiBzb2Z0d2FyZSB3YXRjaHBvaW50 cyBhcyB3ZSB3b3VsZCBub3QgY2F0Y2gKLSsgICAgIFNURVBQSU5HX1BBU1RfU0lOR0xFU1RFUF9C UkVBS1BPSU5UIGJyZWFrcG9pbnRzIGluIHNvbWUgb3RoZXIgdGhyZWFkCi0rICAgICBhcyB0aGV5 IHdvdWxkIHJlbWFpbiBwZW5kaW5nIGR1ZSB0byBgUHVzaCBiYWNrIGJyZWFrcG9pbnQgZm9yICVz Jy4gICovCi0rICBpZiAobHAtPnN0ZXAgPT0gUkVTVU1FX1NURVBfVVNFUiAmJiBscC0+c3RhdHVz ICE9IDApCisgICBpZiAobHAtPmxhc3RfcmVzdW1lX2tpbmQgPT0gcmVzdW1lX3N0ZXAKKy0gICAg ICAmJiBscC0+c3RhdHVzICE9IDApCisrICAgICAgJiYgbHAtPnN0YXR1cyAhPSAwCisrICAgICAg LyogV2UgZG8gbm90IGZvY3VzIG9uIHNvZnR3YXJlIHdhdGNocG9pbnRzIGFzIHdlIHdvdWxkIG5v dCBjYXRjaAorKwkgU1RFUFBJTkdfUEFTVF9TSU5HTEVTVEVQX0JSRUFLUE9JTlQgYnJlYWtwb2lu dHMgaW4gc29tZSBvdGhlciB0aHJlYWQKKysJIGFzIHRoZXkgd291bGQgcmVtYWluIHBlbmRpbmcg ZHVlIHRvIGBQdXNoIGJhY2sgYnJlYWtwb2ludCBmb3IgJXMnLiAgKi8KKysgICAgICAmJiBscC0+ c3RlcCA9PSBSRVNVTUVfU1RFUF9VU0VSKQogICAgICByZXR1cm4gMTsKICAgIGVsc2UKICAgICAg cmV0dXJuIDA7Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvbGludXgtbmF0LmgKK0lu ZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9saW51eC1uYXQuaAogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvbGludXgtbmF0LmgJMjAxMS0wNy0yMiAxOTow ODoxOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9saW51eC1u YXQuaAkyMDExLTA3LTIyIDE5OjEwOjI0LjAwMDAwMDAwMCArMDIwMAotQEAgLTU1LDggKzU1LDgg QEAgc3RydWN0IGx3cF9pbmZvCistLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi9saW51 eC1uYXQuaAkyMDExLTEyLTE4IDIzOjM1OjIzLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQu NTAuMjAxMTEyMTgvZ2RiL2xpbnV4LW5hdC5oCTIwMTEtMTItMTggMjM6NDA6NTkuMjYyMzAwNDMx ICswMTAwCitAQCAtNzQsOCArNzQsOCBAQCBzdHJ1Y3QgbHdwX2luZm8KICAgIC8qIElmIG5vbi16 ZXJvLCBhIHBlbmRpbmcgd2FpdCBzdGF0dXMuICAqLwogICAgaW50IHN0YXR1czsKICAKCmRpZmYg LS1naXQgYS9nZGItNi42LXN0ZXAtdGhyZWFkLWV4aXQucGF0Y2ggYi9nZGItNi42LXN0ZXAtdGhy ZWFkLWV4aXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyYWZiZWEuLjAw MDAwMDAKLS0tIGEvZ2RiLTYuNi1zdGVwLXRocmVhZC1leGl0LnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsNjAgKzAsMCBAQAotSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2xpbnV4LW5h dC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9saW51eC1u YXQuYwkyMDEwLTExLTE2IDA3OjU4OjE1LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAu MjAxMDExMTYvZ2RiL2xpbnV4LW5hdC5jCTIwMTAtMTEtMTYgMDc6NTk6MDYuMDAwMDAwMDAwICsw MTAwCi1AQCAtMTg2MywxNiArMTg2MywxOCBAQCByZXN1bWVfc2V0X2NhbGxiYWNrIChzdHJ1Y3Qg bHdwX2luZm8gKmxwCi0gCi0gc3RhdGljIHZvaWQKLSBsaW51eF9uYXRfcmVzdW1lIChzdHJ1Y3Qg dGFyZ2V0X29wcyAqb3BzLAotLQkJICBwdGlkX3QgcHRpZCwgaW50IHN0ZXAsIGVudW0gdGFyZ2V0 X3NpZ25hbCBzaWdubykKLSsJCSAgcHRpZF90IHB0aWQsIGludCBzdGVwX2ludCwgZW51bSB0YXJn ZXRfc2lnbmFsIHNpZ25vKQotIHsKLSAgIHNpZ3NldF90IHByZXZfbWFzazsKLSAgIHN0cnVjdCBs d3BfaW5mbyAqbHA7Ci0gICBpbnQgcmVzdW1lX21hbnk7Ci0rICBlbnVtIHJlc3VtZV9zdGVwIHN0 ZXAgPSBzdGVwX2ludDsKLSAKLSAgIGlmIChkZWJ1Z19saW51eF9uYXQpCi0gICAgIGZwcmludGZf dW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSAJCQkiTExSOiBQcmVwYXJpbmcgdG8gJXMgJXMsICVz LCBpbmZlcmlvcl9wdGlkICVzXG4iLAotLQkJCXN0ZXAgPyAic3RlcCIgOiAicmVzdW1lIiwKLSsJ CQkoc3RlcCA9PSBSRVNVTUVfU1RFUF9ORUVERUQKLSsJCQkgPyAibmVlZGVkIiA6IChzdGVwID8g InN0ZXAiIDogInJlc3VtZSIpKSwKLSAJCQl0YXJnZXRfcGlkX3RvX3N0ciAocHRpZCksCi0gCQkJ KHNpZ25vICE9IFRBUkdFVF9TSUdOQUxfMAotIAkJCSA/IHN0cnNpZ25hbCAodGFyZ2V0X3NpZ25h bF90b19ob3N0IChzaWdubykpIDogIjAiKSwKLUBAIC0zMTcxLDEwICszMTczLDM0IEBAIGxpbnV4 X25hdF9maWx0ZXJfZXZlbnQgKGludCBsd3BpZCwgaW50IHMKLSAKLSAgICAgICBpZiAobnVtX2x3 cHMgKEdFVF9QSUQgKGxwLT5wdGlkKSkgPiAxKQotICAgICAgICB7Ci0rCWVudW0gcmVzdW1lX3N0 ZXAgc3RlcCA9IGxwLT5zdGVwOwotKwlwaWRfdCBwaWQgPSBHRVRfUElEIChscC0+cHRpZCk7Ci0r Ci0gCSAvKiBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgbW9yZSBMV1AsIHRoZW4gdGhlIGV4aXQg c2lnbmFsCi0gCSAgICB3YXMgbm90IHRoZSBlbmQgb2YgdGhlIGRlYnVnZ2VkIGFwcGxpY2F0aW9u IGFuZCBzaG91bGQgYmUKLSAJICAgIGlnbm9yZWQuICAqLwotIAkgZXhpdF9sd3AgKGxwKTsKLSsK LSsJaWYgKHN0ZXAgPT0gUkVTVU1FX1NURVBfVVNFUikKLSsJICB7Ci0rCSAgICAvKiBOb3cgc3Rv cCB0aGUgY2xvc2VzdCBMV1AncyAuLi4gICovCi0rCSAgICBscCA9IGZpbmRfbHdwX3BpZCAocGlk X3RvX3B0aWQgKHBpZCkpOwotKwkgICAgaWYgKCFscCkKLSsJICAgICAgbHAgPSBsd3BfbGlzdDsK LSsJICAgIGdkYl9hc3NlcnQgKGxwICE9IE5VTEwpOwotKwkgICAgZXJybm8gPSAwOwotKwkgICAg cHRyYWNlIChQVFJBQ0VfQ09OVCwgR0VUX0xXUCAobHAtPnB0aWQpLCAwLAotKwkJICAgICh2b2lk ICopICh1bnNpZ25lZCBsb25nKSBTSUdTVE9QKTsKLSsJICAgIGlmIChkZWJ1Z19saW51eF9uYXQp Ci0rCSAgICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSsJCQkJICAiUFRSQUNF X0NPTlQgJXMsIDAsIDAgKCVzKVxuIiwKLSsJCQkJICB0YXJnZXRfcGlkX3RvX3N0ciAobHAtPnB0 aWQpLAotKwkJCQkgIGVycm5vID8gc2FmZV9zdHJlcnJvciAoZXJybm8pCi0rCQkJCQk6ICJPSyIp OwotKwkgICAgLyogQXZvaWQgdGhlIHNpbGVudCBgZGVsYXllZCBTSUdTVE9QJyBoYW5kbGluZy4g ICovCi0rCSAgICBscC0+c2lnbmFsbGVkID0gMDsKLSsJICB9Ci0rCi0gCSByZXR1cm4gTlVMTDsK LSAgICAgICAgfQotICAgICB9CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNi10ZXN0c3VpdGUtdGltZW91 dHMucGF0Y2ggYi9nZGItNi42LXRlc3RzdWl0ZS10aW1lb3V0cy5wYXRjaAppbmRleCAxMTY2ZWYw Li43ZTY5NzQwIDEwMDY0NAotLS0gYS9nZGItNi42LXRlc3RzdWl0ZS10aW1lb3V0cy5wYXRjaAor KysgYi9nZGItNi42LXRlc3RzdWl0ZS10aW1lb3V0cy5wYXRjaApAQCAtMSw0MiArMSwyNiBAQAot LS0tIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGExLmV4cAkxMCBKYW4gMjAwNyAwMzoy MzowNCAtMDAwMAkxLjIzCi0rKysgLi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTEuZXhw CTEwIE1heSAyMDA3IDEyOjU0OjExIC0wMDAwCi1AQCAtNTcsNiArNTcsOCBAQCBpZiBbdGFyZ2V0 X2luZm8gZXhpc3RzIGdkYl9zdHViXSB7Ci0gICAgIGdkYl9zdGVwX2Zvcl9zdHViOwotIH0KK0lu ZGV4OiBnZGItNy40LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMS5l eHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTExMjE5Lm9yaWcvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9hbm5vdGExLmV4cAkyMDExLTEyLTEzIDE4OjIyOjA4LjAwMDAwMDAwMCArMDEw MAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTkvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGEx LmV4cAkyMDExLTEyLTIwIDAwOjAxOjM2LjUxODg0NzAzMyArMDEwMAorQEAgLTUwLDYgKzUwLDgg QEAgZ2RiX3N0YXJ0CisgZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisgZ2Ri X2xvYWQgJHtiaW5maWxlfQogIAogK2dkYl90ZXN0ICJzZXQgYnJlYWtwb2ludCBwZW5kaW5nIG9m ZiIgIiIgIkF2b2lkIGxvY2t1cCBvbiBub25leGlzdGluZyBmdW5jdGlvbnMiCiArCiAgIwogICMg dGhlIGxpbmUgYXQgd2hpY2ggYnJlYWsgbWFpbiB3aWxsIHB1dCB0aGUgYnJlYWtwb2ludAogICMK LS0tLSAuL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMy5leHAJOSBKYW4gMjAwNyAxNzo1 OTowOSAtMDAwMAkxLjEyCi0rKysgLi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTMuZXhw CTEwIE1heSAyMDA3IDEyOjU0OjExIC0wMDAwCi1AQCAtNTYsNiArNTYsOCBAQCBpZiBbdGFyZ2V0 X2luZm8gZXhpc3RzIGdkYl9zdHViXSB7Ci0gICAgIGdkYl9zdGVwX2Zvcl9zdHViOwotIH0KK0lu ZGV4OiBnZGItNy40LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMy5l eHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTExMjE5Lm9yaWcvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9hbm5vdGEzLmV4cAkyMDExLTEyLTEzIDE4OjIyOjA4LjAwMDAwMDAwMCArMDEw MAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTkvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGEz LmV4cAkyMDExLTEyLTIwIDAwOjAxOjM2LjUxODg0NzAzMyArMDEwMAorQEAgLTUwLDYgKzUwLDgg QEAgZ2RiX3N0YXJ0CisgZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisgZ2Ri X2xvYWQgJHtiaW5maWxlfQogIAogK2dkYl90ZXN0ICJzZXQgYnJlYWtwb2ludCBwZW5kaW5nIG9m ZiIgIiIgIkF2b2lkIGxvY2t1cCBvbiBub25leGlzdGluZyBmdW5jdGlvbnMiCiArCiAgIwogICMg dGhlIGxpbmUgYXQgd2hpY2ggYnJlYWsgbWFpbiB3aWxsIHB1dCB0aGUgYnJlYWtwb2ludAogICMK LS0tLSBnZGItNi42L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc3RlcC10aHJlYWQtZXhpdC5l eHAtb3JpZwkyMDA3LTA1LTEwIDE1OjAzOjE1LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjYv Z2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zdGVwLXRocmVhZC1leGl0LmV4cAkyMDA3LTA1LTEw IDE1OjA0OjI0LjAwMDAwMDAwMCArMDIwMAotQEAgLTU4LDYgKzU4LDkgQEAgZ2RiX3Rlc3QgImNv bnRpbnVlIiAiQnJlYWsuKnRocmVhZF9mdW5jdAotICMgdGhyZWFkIHRvIGJlIHN0b3BwZWQgYW5k IGEgbWVzc2FnZSBwcmludGVkIHRvIHRlbGwgdXMgd2UgaGF2ZSBzdGVwcGVkCi0gIyBvdmVyIHRo ZSB0aHJlYWQgZXhpdC4KLSBzZXQgdGVzdCAic3RlcCBvdmVyIHRocmVhZCBleGl0IDEiCi0rIyBw cGM2NCBpcyBjdXJyZW50bHkgZmFpbGluZzoKLStzZXQgdGltZW91dF9vbGQgJHRpbWVvdXQKLStz ZXQgdGltZW91dCA2MAotIGdkYl90ZXN0X211bHRpcGxlICJuZXh0IiAiJHRlc3QiIHsKLSAgIC1y ZSAiXH0uKiRnZGJfcHJvbXB0ICQiIHsKLSAgICAgIHNlbmRfZ2RiICJuZXh0XG4iCi1AQCAtNzEs NiArNzQsNyBAQCBnZGJfdGVzdF9tdWx0aXBsZSAibmV4dCIgIiR0ZXN0IiB7Ci0gICAgICBleHBf Y29udGludWUKLSAgIH0KLSB9Ci0rc2V0IHRpbWVvdXQgJHRpbWVvdXRfb2xkCi0gCi0gIyBXaXRo b3V0IHRoaXMgZml4dXAgd2UgY291bGQgZW5kIHVwIGluOgotICMgIzAgIDB4MDAxMTA0MTYgaW4g X19rZXJuZWxfdnN5c2NhbGwgKCkKCmRpZmYgLS1naXQgYS9nZGItNi42LXRocmVhZHMtc3RhdGlj LXRlc3QucGF0Y2ggYi9nZGItNi42LXRocmVhZHMtc3RhdGljLXRlc3QucGF0Y2gKaW5kZXggMmJh YzcyMi4uM2Y4ZDE2ZSAxMDA2NDQKLS0tIGEvZ2RiLTYuNi10aHJlYWRzLXN0YXRpYy10ZXN0LnBh dGNoCisrKyBiL2dkYi02LjYtdGhyZWFkcy1zdGF0aWMtdGVzdC5wYXRjaApAQCAtMSw4ICsxLDgg QEAKLUluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMv c3RhdGljdGhyZWFkcy5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE5L2dkYi90ZXN0c3Vp dGUvZ2RiLnRocmVhZHMvc3RhdGljdGhyZWFkcy5leHAKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4x LjkwLjIwMTAwNzExLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zdGF0aWN0aHJlYWRz LmV4cAkyMDEwLTA2LTAyIDIzOjUzOjI4LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEuOTAu MjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zdGF0aWN0aHJlYWRzLmV4cAkyMDEw LTA3LTEyIDExOjQzOjI2LjAwMDAwMDAwMCArMDIwMAotQEAgLTQ0LDYgKzQ0LDE4IEBAIGdkYl90 ZXN0X25vX291dHB1dCAic2V0IHByaW50IHNldmVuYml0LXMKKy0tLSBnZGItNy40LjUwLjIwMTEx MjE5Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zdGF0aWN0aHJlYWRzLmV4cAkyMDEx LTEyLTE5IDIxOjA3OjAxLjQzNjQ3NTIwMSArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTkv Z2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zdGF0aWN0aHJlYWRzLmV4cAkyMDExLTEyLTE5IDIy OjA4OjU1LjQ0NDUxNDEyNyArMDEwMAorQEAgLTQ1LDYgKzQ1LDEzIEBAIGdkYl90ZXN0X25vX291 dHB1dCAic2V0IHByaW50IHNldmVuYml0LXMKICAjIFNlZSBpZiB0aGUgc3RhdGljIG11bHRpLXRo cmVhZGVkIHByb2dyYW0gcnVucy4KICAKICBydW50b19tYWluCkBAIC0xMSwxMiArMTEsNyBAQCBJ bmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3N0YXRp Y3RocmVhZHMuZXhwCiArIyAqIDIgVGhyZWFkIDEzNTY2MTY2NCAoTFdQIDM4NTYpICBtYWluICgp IGF0IHRocmVhZGxvb3AuYzo0MQogKyMgICAxIHByb2Nlc3MgMzg1NiAgbWFpbiAoKSBhdCB0aHJl YWRsb29wLmM6NDEKICsKLStzZXQgdGVzdCAiaW5mbyB0aHJlYWRzIG9uIHN0YXJ0IgotK2dkYl90 ZXN0X211bHRpcGxlICJpbmZvIHRocmVhZHMiICIkdGVzdCIgewotKyAgICAtcmUgIl5pbmZvIHRo cmVhZHNccj9cblxbXlxyXG5cXSogVGhyZWFkIFxbXlxyXG5cXSpccj9cbiRnZGJfcHJvbXB0IiB7 Ci0rCXBhc3MgIiR0ZXN0IgotKyAgICB9Ci0rfQorK2dkYl90ZXN0ICJpbmZvIHRocmVhZHMiICJe aW5mbyB0aHJlYWRzXHJcblxbIFx0XF0qSWRcWyBcdFxdK1RhcmdldCBJZFxbIFx0XF0rRnJhbWVc WyBcdFxdKlxyXG5cW15cclxuXF0qIFRocmVhZCBcW15cclxuXF0qIiAiaW5mbyB0aHJlYWRzIG9u IHN0YXJ0IgogKwogIGdkYl90ZXN0ICJicmVhayBzZW1fcG9zdCIKICBzZXQgdGVzdCAiQ29udGlu dWUgdG8gbWFpbidzIGNhbGwgb2Ygc2VtX3Bvc3QiCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNy10ZXN0 c3VpdGUtc3RhYmxlLXJlc3VsdHMucGF0Y2ggYi9nZGItNi43LXRlc3RzdWl0ZS1zdGFibGUtcmVz dWx0cy5wYXRjaAppbmRleCBhNGMxOTVjLi43ZTJmYjM5IDEwMDY0NAotLS0gYS9nZGItNi43LXRl c3RzdWl0ZS1zdGFibGUtcmVzdWx0cy5wYXRjaAorKysgYi9nZGItNi43LXRlc3RzdWl0ZS1zdGFi bGUtcmVzdWx0cy5wYXRjaApAQCAtMjAsMTAgKzIwLDEwIEBAIHJhbmRvbSBGQUlMOiBnZGIuYmFz ZS9hdXh2LmV4cDogbWF0Y2hpbmcgYXV4diBkYXRhIGZyb20gbGl2ZSBhbmQgZ2NvcmUKIGdkYi02 LjguNTAuMjAwOTAyMDkvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGExLmV4cDoKIGZyYW1l cy1pbnZhbGlkIGNhbiBoYXBwZW4gYXN5bmNocm9ub3VzbHkuCiAKLUluZGV4OiBnZGItNy4xLjkw LjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZmlsZWlvLmMKK0luZGV4OiBnZGItNy40 LjUwLjIwMTIwMTAzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZmlsZWlvLmMKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9maWxl aW8uYwkyMDA5LTEwLTAxIDE3OjM5OjEzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEuOTAu MjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9maWxlaW8uYwkyMDEwLTA3LTEyIDExOjQx OjQzLjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjQuNTAuMjAxMjAxMDMub3JpZy9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL2ZpbGVpby5jCTIwMDktMTAtMDEgMTc6Mzk6MTMuMDAwMDAwMDAwICsw MjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEwMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ZpbGVp by5jCTIwMTItMDEtMDMgMTU6MjE6MjguMTIyNzI5MjQ5ICswMTAwCiBAQCAtNTgsNiArNTgsOCBA QCBzeXN0ZW0gKGNvbnN0IGNoYXIgKiBzdHJpbmcpOwogIDEpIEludmFsaWQgc3RyaW5nL2NvbW1h bmQuIC0gIHJldHVybnMgMTI3LiAgKi8KICBzdGF0aWMgY29uc3QgY2hhciAqc3RyZXJybm8gKGlu dCBlcnIpOwpAQCAtNzEsMTAgKzcxLDEwIEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvZmlsZWlvLmMKICAgIC8qIERvbid0IGNoYW5nZSB0aGUgb3Jk ZXIgb2YgdGhlIGNhbGxzLiAgVGhleSBwYXJ0bHkgZGVwZW5kIG9uIGVhY2ggb3RoZXIgKi8KICAg IHRlc3Rfb3BlbiAoKTsKICAgIHRlc3Rfd3JpdGUgKCk7Ci1JbmRleDogZ2RiLTcuMS45MC4yMDEw MDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ZpbGVpby5leHAKK0luZGV4OiBnZGItNy40LjUw LjIwMTIwMTAzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZmlsZWlvLmV4cAogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ZpbGVp by5leHAJMjAxMC0wNi0wOSAwMDo1ODowMy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkw LjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZmlsZWlvLmV4cAkyMDEwLTA3LTEyIDEx OjQyOjA3LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjQuNTAuMjAxMjAxMDMub3JpZy9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2ZpbGVpby5leHAJMjAxMS0xMi0yNiAxMjoyNDo1NS4wMDAwMDAw MDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv ZmlsZWlvLmV4cAkyMDEyLTAxLTAzIDE1OjIyOjAyLjcxNjYwMTk1NiArMDEwMAogQEAgLTQyLDgg KzQyLDggQEAgaWYgW2dldF9jb21waWxlcl9pbmZvICR7YmluZmlsZX1dIHsKICAgICAgcmV0dXJu IC0xOwogIH0KQEAgLTk1LDkgKzk1LDkgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9maWxlaW8uZXhwCiAgCiAgZ2RiX3Rlc3QgY29udGludWUgXAog ICJDb250aW51aW5nXFwuLipvcGVuIDU6LipFQUNDRVMkc3RvcF9tc2ciIFwKLUBAIC0yNTAsOCAr MjUwLDggQEAgZ2RiX3Rlc3QgY29udGludWUgXAotIHNlbmRfZ2RiICJxdWl0XG4iCi0gc2VuZF9n ZGIgInlcbiIKK0BAIC0yNTEsOCArMjUxLDggQEAgZ2RiX2V4aXQKKyAjIFdhaXQgdGlsbCBHREIg cmVhbGx5IGV4aXRzLgorIHNsZWVwIDEKICAKIC1yZW1vdGVfZXhlYyBidWlsZCB7c2ggLXhjIHRl c3RcIC1yXCBkaXIyLmZpbGVpby50ZXN0XCAmJlwgY2htb2RcIC1mXCArd1wgZGlyMi5maWxlaW8u dGVzdH0KIC1yZW1vdGVfZXhlYyBidWlsZCB7c2ggLXhjIHJtXCAtcmZcICouZmlsZWlvLnRlc3R9 CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuOC1hdHRhY2gtc2lnbmFsbGVkLWRldGFjaC1zdG9wcGVkLnBh dGNoIGIvZ2RiLTYuOC1hdHRhY2gtc2lnbmFsbGVkLWRldGFjaC1zdG9wcGVkLnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTE4MTIyLi4wMDAwMDAwCi0tLSBhL2dkYi02Ljgt YXR0YWNoLXNpZ25hbGxlZC1kZXRhY2gtc3RvcHBlZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDE4MyArMCwwIEBACi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvbGludXgtbmF0LmMK LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2xpbnV4LW5hdC5j CTIwMTAtMDEtMTUgMTE6NTM6MzQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEw MDExNS9nZGIvbGludXgtbmF0LmMJMjAxMC0wMS0xNSAxMjoxMzo1My4wMDAwMDAwMDAgKzAxMDAK LUBAIC0yMDgsNiArMjA4LDkgQEAgYmxvY2tlZC4gICovCi0gc3RhdGljIHN0cnVjdCB0YXJnZXRf b3BzICpsaW51eF9vcHM7Ci0gc3RhdGljIHN0cnVjdCB0YXJnZXRfb3BzIGxpbnV4X29wc19zYXZl ZDsKLSAKLSsvKiBQSUQgb2YgdGhlIGluZmVyaW9yIHN0b3BwZWQgYnkgU0lHU1RPUCBiZWZvcmUg YXR0YWNoaW5nIChvciB6ZXJvKS4gICovCi0rc3RhdGljIHBpZF90IHBpZF93YXNfc3RvcHBlZDsK LSsKLSAvKiBUaGUgbWV0aG9kIHRvIGNhbGwsIGlmIGFueSwgd2hlbiBhIG5ldyB0aHJlYWQgaXMg YXR0YWNoZWQuICAqLwotIHN0YXRpYyB2b2lkICgqbGludXhfbmF0X25ld190aHJlYWQpIChwdGlk X3QpOwotIAotQEAgLTkzMyw3ICs5MzYsMTQgQEAgQXR0YWNoaW5nIGFmdGVyIHByb2Nlc3MgJWQg Zm9yayB0byBjaGlsZAotIAkgIHBhcmVudF9pbmYtPndhaXRpbmdfZm9yX3Zmb3JrX2RvbmUgPSAw OwotIAl9Ci0gICAgICAgZWxzZSBpZiAoZGV0YWNoX2ZvcmspCi0tCXRhcmdldF9kZXRhY2ggKE5V TEwsIDApOwotKwl7Ci0rCSAgLyogV2Ugc2hvdWxkIGNoZWNrIFBJRF9XQVNfU1RPUFBFRCBhbmQg ZGV0YWNoIGl0IHN0b3BwZWQgYWNjb3JkaW5nbHkuCi0rCSAgICAgSW4gdGhpcyBwb2ludCBvZiBj b2RlIGl0IGNhbm5vdCBiZSAxIGFzIHdlIHdvdWxkIG5vdCBnZXQgRk9SSwotKwkgICAgIGV4ZWN1 dGVkIHdpdGhvdXQgQ09OVElOVUUgZmlyc3Qgd2hpY2ggcmVzZXRzIFBJRF9XQVNfU1RPUFBFRC4K LSsJICAgICBXZSB3b3VsZCBoYXZlIHRvIGZpcnN0IFRBUkdFVF9TVE9QIGFuZCBXQUlUUElEIGl0 IGFzIHdpdGggcnVubmluZwotKwkgICAgIGluZmVyaW9yIFBUUkFDRV9ERVRBQ0gsIFNJR1NUT1Ag d2lsbCBpZ25vcmUgdGhlIHNpZ25hbC4gICovCi0rCSAgdGFyZ2V0X2RldGFjaCAoTlVMTCwgMCk7 Ci0rCX0KLSAKLSAgICAgICAvKiBOb3RlIHRoYXQgdGhlIGRldGFjaCBhYm92ZSBtYWtlcyBQQVJF TlRfSU5GIGRhbmdsaW5nLiAgKi8KLSAKLUBAIC0xNDI3LDYgKzE0MzcsNyBAQCBsaW51eF9uYXRf cG9zdF9hdHRhY2hfd2FpdCAocHRpZF90IHB0aWQsCi0gICAgICAgaWYgKGRlYnVnX2xpbnV4X25h dCkKLSAJZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotIAkJCSAgICAiTE5QQVc6IEF0 dGFjaGluZyB0byBhIHN0b3BwZWQgcHJvY2Vzc1xuIik7Ci0rICAgICAgcGlkX3dhc19zdG9wcGVk ID0gR0VUX1BJRCAocHRpZCk7Ci0gCi0gICAgICAgLyogVGhlIHByb2Nlc3MgaXMgZGVmaW5pdGVs eSBzdG9wcGVkLiAgSXQgaXMgaW4gYSBqb2IgY29udHJvbAotIAkgc3RvcCwgdW5sZXNzIHRoZSBr ZXJuZWwgcHJlZGF0ZXMgdGhlIFRBU0tfU1RPUFBFRCAvCi1AQCAtMTc1Nyw2ICsxNzY4LDkgQEAg R1BUOiBsd3AgJXMgaGFkIHNpZ25hbCAlcywgYnV0IGl0IGlzIGluIAotIAkJCSAgICB0YXJnZXRf c2lnbmFsX3RvX3N0cmluZyAoc2lnbm8pKTsKLSAgICAgfQotIAotKyAgaWYgKCpzdGF0dXMgPT0g MCAmJiBHRVRfUElEIChscC0+cHRpZCkgPT0gcGlkX3dhc19zdG9wcGVkKQotKyAgICAqc3RhdHVz ID0gV19TVE9QQ09ERSAoU0lHU1RPUCk7Ci0rCi0gICByZXR1cm4gMDsKLSB9Ci0gCi1AQCAtMTg2 Niw2ICsxODgwLDggQEAgbGludXhfbmF0X2RldGFjaCAoc3RydWN0IHRhcmdldF9vcHMgKm9wcwot ICAgICB9Ci0gICBlbHNlCi0gICAgIGxpbnV4X29wcy0+dG9fZGV0YWNoIChvcHMsIGFyZ3MsIGZy b21fdHR5KTsKLSsKLSsgIHBpZF93YXNfc3RvcHBlZCA9IDA7Ci0gfQotIAotIC8qIFJlc3VtZSBM UC4gICovCi1AQCAtMjAzMSw2ICsyMDQ3LDE0IEBAIGxpbnV4X25hdF9yZXN1bWUgKHN0cnVjdCB0 YXJnZXRfb3BzICpvcHMKLSAgICAgIHJlc3VtZV9jYWxsYmFjay4gICovCi0gICBscC0+c3RvcHBl ZCA9IDA7Ci0gCi0rICAvKiBBdCB0aGlzIHBvaW50LCB3ZSBhcmUgZ29pbmcgdG8gcmVzdW1lIHRo ZSBpbmZlcmlvciBhbmQgaWYgd2UKLSsgICAgIGhhdmUgYXR0YWNoZWQgdG8gYSBzdG9wcGVkIHBy b2Nlc3MsIHdlIG5vIGxvbmdlciBzaG91bGQgbGVhdmUKLSsgICAgIGl0IGFzIHN0b3BwZWQgaWYg dGhlIHVzZXIgZGV0YWNoZXMuICBQVElEIHZhcmlhYmxlIGhhcyBQSUQgc2V0IHRvIExXUAotKyAg ICAgd2hpbGUgd2UgbmVlZCB0byBjaGVjayB0aGUgcmVhbCBQSUQgaGVyZS4gICovCi0rCi0rICBp ZiAoIXN0ZXAgJiYgbHAgJiYgcGlkX3dhc19zdG9wcGVkID09IEdFVF9QSUQgKGxwLT5wdGlkKSkK LSsgICAgcGlkX3dhc19zdG9wcGVkID0gMDsKLSsKLSAgIGlmIChyZXN1bWVfbWFueSkKLSAgICAg aXRlcmF0ZV9vdmVyX2x3cHMgKHB0aWQsIHJlc3VtZV9jYWxsYmFjaywgTlVMTCk7Ci0gCi1AQCAt MzkyMyw2ICszOTQ3LDggQEAgbGludXhfbmF0X21vdXJuX2luZmVyaW9yIChzdHJ1Y3QgdGFyZ2V0 XwotICAgICAgICB0aGVyZSBhcmUgb3RoZXIgdmlhYmxlIGZvcmtzIHRvIGRlYnVnLiAgRGVsZXRl IHRoZSBleGl0aW5nCi0gICAgICAgIG9uZSBhbmQgY29udGV4dC1zd2l0Y2ggdG8gdGhlIGZpcnN0 IGF2YWlsYWJsZS4gICovCi0gICAgIGxpbnV4X2ZvcmtfbW91cm5faW5mZXJpb3IgKCk7Ci0rCi0r ICBwaWRfd2FzX3N0b3BwZWQgPSAwOwotIH0KLSAKLSAvKiBDb252ZXJ0IGEgbmF0aXZlL2hvc3Qg c2lnaW5mbyBvYmplY3QsIGludG8vZnJvbSB0aGUgc2lnaW5mbyBpbiB0aGUKLUluZGV4OiBnZGIt Ny4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvYXR0YWNoLXN0b3BwZWQu ZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi90ZXN0c3Vp dGUvZ2RiLnRocmVhZHMvYXR0YWNoLXN0b3BwZWQuZXhwCTIwMTAtMDEtMDEgMDg6MzI6MDYuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi50 aHJlYWRzL2F0dGFjaC1zdG9wcGVkLmV4cAkyMDEwLTAxLTE1IDExOjU0OjU3LjAwMDAwMDAwMCAr MDEwMAotQEAgLTYyLDcgKzYyLDY1IEBAIHByb2MgY29yZWZ1bmMgeyB0aHJlYWR0eXBlIH0gewot ICAgICBnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLSAgICAgZ2RiX2xvYWQg JHtiaW5maWxlfQotIAotLSAgICAjIFZlcmlmeSB0aGF0IHdlIGNhbiBhdHRhY2ggdG8gdGhlIHN0 b3BwZWQgcHJvY2Vzcy4KLSsgICAgIyBWZXJpZnkgdGhhdCB3ZSBjYW4gYXR0YWNoIHRvIHRoZSBw cm9jZXNzIGJ5IGZpcnN0IGdpdmluZyBpdHMKLSsgICAgIyBleGVjdXRhYmxlIG5hbWUgdmlhIHRo ZSBmaWxlIGNvbW1hbmQsIGFuZCB1c2luZyBhdHRhY2ggd2l0aCB0aGUKLSsgICAgIyBwcm9jZXNz IElELgotKwotKyAgICBzZXQgdGVzdCAiJHRocmVhZHR5cGU6IHNldCBmaWxlLCBiZWZvcmUgYXR0 YWNoMSB0byBzdG9wcGVkIHByb2Nlc3MiCi0rICAgIGdkYl90ZXN0X211bHRpcGxlICJmaWxlICRi aW5maWxlIiAiJHRlc3QiIHsKLSsgICAgICAgLXJlICJMb2FkIG5ldyBzeW1ib2wgdGFibGUgZnJv bS4qeSBvciBuLiAkIiB7Ci0rCSAgICBnZGJfdGVzdCAieSIgIlJlYWRpbmcgc3ltYm9scyBmcm9t ICRlc2NhcGVkYmluZmlsZVwuXC5cLipkb25lLiIgXAotKwkJICAgICIkdGVzdCAocmUtcmVhZCki Ci0rCX0KLSsJLXJlICJSZWFkaW5nIHN5bWJvbHMgZnJvbSAkZXNjYXBlZGJpbmZpbGVcLlwuXC4q ZG9uZS4qJGdkYl9wcm9tcHQgJCIgewotKwkgICAgcGFzcyAiJHRlc3QiCi0rCX0KLSsgICAgfQot KwotKyAgICBzZXQgdGVzdCAiJHRocmVhZHR5cGU6IGF0dGFjaDEgdG8gc3RvcHBlZCwgYWZ0ZXIg c2V0dGluZyBmaWxlIgotKyAgICBnZGJfdGVzdF9tdWx0aXBsZSAiYXR0YWNoICR0ZXN0cGlkIiAi JHRlc3QiIHsKLSsJLXJlICJBdHRhY2hpbmcgdG8gcHJvZ3JhbS4qYD8kZXNjYXBlZGJpbmZpbGUn PywgcHJvY2VzcyAkdGVzdHBpZC4qJGdkYl9wcm9tcHQgJCIgewotKwkgICAgcGFzcyAiJHRlc3Qi Ci0rCX0KLSsgICAgfQotKwotKyAgICAjICIuKnNsZWVwLipjbG9uZS4qIiB3b3VsZCBmYWlsIG9u IHMzOTB4IGFzIGJ0IHN0b3BzIGF0IFNUQVJUX1RIUkVBRCB0aGVyZS4KLSsgICAgaWYge1tzdHJp bmcgZXF1YWwgJHRocmVhZHR5cGUgdGhyZWFkZWRdfSB7Ci0rCWdkYl90ZXN0ICJ0aHJlYWQgYXBw bHkgYWxsIGJ0IiAiLipzbGVlcC4qc3RhcnRfdGhyZWFkLioiICIkdGhyZWFkdHlwZTogYXR0YWNo MSB0byBzdG9wcGVkIGJ0IgotKyAgICB9IGVsc2UgewotKwlnZGJfdGVzdCAiYnQiICIuKnNsZWVw LiptYWluLioiICIkdGhyZWFkdHlwZTogYXR0YWNoMSB0byBzdG9wcGVkIGJ0IgotKyAgICB9Ci0r Ci0rICAgICMgRXhpdCBhbmQgZGV0YWNoIHRoZSBwcm9jZXNzLgotKyAgICAgICAKLSsgICAgZ2Ri X2V4aXQKLSsKLSsgICAgIyBBdm9pZCBzb21lIHJhY2U6Ci0rICAgIHNsZWVwIDIKLSsKLSsgICAg aWYgW2NhdGNoIHtvcGVuIC9wcm9jLyR7dGVzdHBpZH0vc3RhdHVzIHJ9IGZpbGVpZF0gewotKwlz ZXQgbGluZTIgIk5PVEZPVU5EIgotKyAgICB9IGVsc2UgewotKwlnZXRzICRmaWxlaWQgbGluZTE7 Ci0rCWdldHMgJGZpbGVpZCBsaW5lMjsKLSsJY2xvc2UgJGZpbGVpZDsKLSsgICAgfQotKwotKyAg ICBzZXQgdGVzdCAiJHRocmVhZHR5cGU6IGF0dGFjaDEsIGV4aXQgbGVhdmVzIHByb2Nlc3Mgc3Rv cHBlZCIKLSsgICAgaWYge1tzdHJpbmcgbWF0Y2ggIiooc3RvcHBlZCkqIiAkbGluZTJdfSB7Ci0r ICAgICAgcGFzcyAkdGVzdAotKyAgICB9IGVsc2UgewotKyAgICAgIGZhaWwgJHRlc3QKLSsgICAg fQotKwotKyAgICAjIEF0IHRoaXMgcG9pbnQsIHRoZSBwcm9jZXNzIHNob3VsZCBzdGlsbCBiZSBz dG9wcGVkCi0rCi0rICAgIGdkYl9zdGFydAotKyAgICBnZGJfcmVpbml0aWFsaXplX2RpciAkc3Jj ZGlyLyRzdWJkaXIKLSsgICAgZ2RiX2xvYWQgJHtiaW5maWxlfQotKwotKyAgICAjIFZlcmlmeSB0 aGF0IHdlIGNhbiBhdHRhY2ggdG8gdGhlIHByb2Nlc3MganVzdCBieSBnaXZpbmcgdGhlCi0rICAg ICMgcHJvY2VzcyBJRC4KLSAgICAgICAgCi0gICAgIHNldCB0ZXN0ICIkdGhyZWFkdHlwZTogYXR0 YWNoMiB0byBzdG9wcGVkLCBhZnRlciBzZXR0aW5nIGZpbGUiCi0gICAgIGdkYl90ZXN0X211bHRp cGxlICJhdHRhY2ggJHRlc3RwaWQiICIkdGVzdCIgewotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAx MTUvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9hdHRhY2hzdG9wLW10LmV4cAotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRz L2F0dGFjaHN0b3AtbXQuZXhwCTIwMTAtMDEtMDEgMDg6MzI6MDYuMDAwMDAwMDAwICswMTAwCi0r KysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2F0dGFjaHN0 b3AtbXQuZXhwCTIwMTAtMDEtMTUgMTE6NTQ6NTcuMDAwMDAwMDAwICswMTAwCi1AQCAtMTc2LDEy ICsxNzYsMjMgQEAgZ2RiX3Rlc3QgImJ0IiAiLipzbGVlcC4qKGZ1bmN8bWFpbikuKiIgIgotICMg RXhpdCBhbmQgZGV0YWNoIHRoZSBwcm9jZXNzLgotIGdkYl9leGl0Ci0gCi0tIyBTdG9wIHRoZSBw cm9ncmFtIAotLXJlbW90ZV9leGVjIGJ1aWxkICJraWxsIC1zIFNUT1AgJHt0ZXN0cGlkfSIKLS0K LSAjIE5vIHJhY2UKLSBzbGVlcCAyCi0gCi0rc2V0IGZpbGVpZDMgW29wZW4gJHN0YXR1czIgcl07 Ci0rZ2V0cyAkZmlsZWlkMyBsaW5lMTsKLStnZXRzICRmaWxlaWQzIGxpbmUyOwotK2Nsb3NlICRm aWxlaWQzOwotKwotK3NldCB0ZXN0ICJhdHRhY2gzLCBleGl0IGxlYXZlcyBwcm9jZXNzIHN0b3Bw ZWQiCi0raWYge1tzdHJpbmcgbWF0Y2ggIiooc3RvcHBlZCkqIiAkbGluZTJdfSB7Ci0rICBwYXNz ICR0ZXN0Ci0rfSBlbHNlIHsKLSsgIGZhaWwgJHRlc3QKLSt9Ci0rCi0rIyBBdCB0aGlzIHBvaW50 LCB0aGUgcHJvY2VzcyBzaG91bGQgc3RpbGwgYmUgc3RvcHBlZAotKwotICMgQ29udGludWUgdGhl IHRlc3QgYXMgd2Ugd291bGQgaGl0IGFub3RoZXIgZXhwZWN0ZWQgYnVnIHJlZ2FyZGluZwotICMg CVByb2dyYW0gcmVjZWl2ZWQgc2lnbmFsIFNJR1NUT1AsIFN0b3BwZWQgKHNpZ25hbCkuCi0gIyBh Y3Jvc3MgTlBUTCB0aHJlYWRzLgoKZGlmZiAtLWdpdCBhL2dkYi02Ljgtc3BhcmM2NC1zaWxlbmNl LW1lbWNweS1jaGVjay5wYXRjaCBiL2dkYi02Ljgtc3BhcmM2NC1zaWxlbmNlLW1lbWNweS1jaGVj ay5wYXRjaAppbmRleCBhOWQzMGNlLi42ZGY4YzlhIDEwMDY0NAotLS0gYS9nZGItNi44LXNwYXJj NjQtc2lsZW5jZS1tZW1jcHktY2hlY2sucGF0Y2gKKysrIGIvZ2RiLTYuOC1zcGFyYzY0LXNpbGVu Y2UtbWVtY3B5LWNoZWNrLnBhdGNoCkBAIC0xLDggKzEsOSBAQAotZGlmZiAtdXAgZ2RiLTYuOC9n ZGIvc3BhcmMtdGRlcC5jLkJBRCBnZGItNi44L2dkYi9zcGFyYy10ZGVwLmMKLS0tLSBnZGItNi44 L2dkYi9zcGFyYy10ZGVwLmMuQkFECTIwMDgtMDUtMTUgMTY6MTI6NTguMDAwMDAwMDAwIC0wNTAw Ci0rKysgZ2RiLTYuOC9nZGIvc3BhcmMtdGRlcC5jCTIwMDgtMDUtMTUgMTY6MTM6NDEuMDAwMDAw MDAwIC0wNTAwCi1AQCAtMTEyMiw2ICsxMTIyLDcgQEAgc3BhcmMzMl9zdG9yZV9yZXR1cm5fdmFs dWUgKHN0cnVjdCB0eXBlIAotICAgaWYgKHNwYXJjX2Zsb2F0aW5nX3AgKHR5cGUpKQorSW5kZXg6 IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3NwYXJjLXRkZXAuYworPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdk Yi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvc3BhcmMtdGRlcC5jCTIwMTEtMDktMjggMTk6NTk6 NDIuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvc3BhcmMtdGRl cC5jCTIwMTEtMTItMTkgMDE6MjU6MjkuMjk0MDQ2MTk5ICswMTAwCitAQCAtMTMxNiw2ICsxMzE2 LDcgQEAgc3BhcmMzMl9zdG9yZV9yZXR1cm5fdmFsdWUgKHN0cnVjdCB0eXBlCisgICBpZiAoc3Bh cmNfZmxvYXRpbmdfcCAodHlwZSkgfHwgc3BhcmNfY29tcGxleF9mbG9hdGluZ19wICh0eXBlKSkK ICAgICAgewogICAgICAgIC8qIEZsb2F0aW5nIHJldHVybiB2YWx1ZXMuICAqLwogKyAgICAgIGxl biA9IChsZW4gPD0gOCkgPyBsZW4gOiA4OwoKZGlmZiAtLWdpdCBhL2dkYi02LjgtdHVpLXNpbmds ZWJpbmFyeS5wYXRjaCBiL2dkYi02LjgtdHVpLXNpbmdsZWJpbmFyeS5wYXRjaApkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggY2IwYmU0NS4uMDAwMDAwMAotLS0gYS9nZGItNi44LXR1aS1z aW5nbGViaW5hcnkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1Qcm92aWRl IGBnZGIgLS10dWknIGZ1bmN0aW9uYWxpdHkgZm9yIHRoZSBoYXJkbGluayBgZ2RidHVpJy4KLQot LS0tIC4vZ2RiL2dkYi5jCTEgSmFuIDIwMDggMjI6NTM6MDkgLTAwMDAJMS42Ci0rKysgLi9nZGIv Z2RiLmMJMjAgSnVuIDIwMDggMDg6MDI6NTcgLTAwMDAKLUBAIC0zMCw1ICszMCwxOSBAQCBtYWlu IChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICBhcmdzLmFyZ3YgPSBhcmd2OwotICAgYXJncy51 c2Vfd2luZG93cyA9IDA7Ci0gICBhcmdzLmludGVycHJldGVyX3AgPSBJTlRFUlBfQ09OU09MRTsK LSsKLSsgIGlmIChhcmd2WzBdKQotKyAgICB7Ci0rICAgICAgY2hhciAqczsKLSsKLSsgICAgICBz ID0gc3RycmNociAoYXJndlswXSwgJy8nKTsKLSsgICAgICBpZiAocykKLSsJcysrOwotKyAgICAg IGVsc2UKLSsJcyA9IGFyZ3ZbMF07Ci0rICAgICAgaWYgKHN0cmNtcCAocywgImdkYnR1aSIpID09 IDApCi0rCWFyZ3MuaW50ZXJwcmV0ZXJfcCA9IElOVEVSUF9UVUk7Ci0rICAgIH0KLSsKLSAgIHJl dHVybiBnZGJfbWFpbiAoJmFyZ3MpOwotIH0KCmRpZmYgLS1naXQgYS9nZGItYXJjaGVyLXBpZS1h ZGRvbnMta2VlcC1kaXNhYmxlZC5wYXRjaCBiL2dkYi1hcmNoZXItcGllLWFkZG9ucy1rZWVwLWRp c2FibGVkLnBhdGNoCmluZGV4IGQyYjZjNzEuLjgzYWE4ZGEgMTAwNjQ0Ci0tLSBhL2dkYi1hcmNo ZXItcGllLWFkZG9ucy1rZWVwLWRpc2FibGVkLnBhdGNoCisrKyBiL2dkYi1hcmNoZXItcGllLWFk ZG9ucy1rZWVwLWRpc2FibGVkLnBhdGNoCkBAIC0xLDEzICsxLDExIEBACi1JbmRleDogZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvYnJlYWtwb2ludC5jCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEw My9nZGIvYnJlYWtwb2ludC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5v cmlnL2dkYi9icmVha3BvaW50LmMJMjAxMS0wNy0yMiAxOTowODoxOS4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9icmVha3BvaW50LmMJMjAxMS0wNy0yMiAxOToz MjowNC4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xMzE5NSw2ICsxMzE5NSw1MCBAQCBpdGVyYXRlX292 ZXJfYnJlYWtwb2ludHMgKGludCAoKmNhbGxiYWNrCi0gCi0gICByZXR1cm4gTlVMTDsKKy0tLSBn ZGItNy40LjUwLjIwMTIwMTAzLm9yaWcvZ2RiL2JyZWFrcG9pbnQuYwkyMDEyLTAxLTAzIDA1OjUy OjE1LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMDMvZ2RiL2JyZWFrcG9p bnQuYwkyMDEyLTAxLTAzIDE1OjIyOjU2LjEwNTQwNTU1OSArMDEwMAorQEAgLTEzNzI0LDYgKzEz NzI0LDUwIEBAIGluaXRpYWxpemVfYnJlYWtwb2ludF9vcHMgKHZvaWQpCiAgfQotKyAKLSt2b2lk CisgCisgdm9pZAogK2JyZWFrcG9pbnRzX3JlbG9jYXRlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwgc3RydWN0IHNlY3Rpb25fb2Zmc2V0cyAqZGVsdGEpCiArewogKyAgc3RydWN0IGJwX2xvY2F0 aW9uICpibCwgKipibHBfdG1wOwpAQCAtNTAsMTQgKzQ4LDE2IEBAIEluZGV4OiBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi9icmVha3BvaW50LmMKICsgICAgcXNvcnQgKGJwX2xvY2F0aW9uLCBicF9s b2NhdGlvbl9jb3VudCwgc2l6ZW9mICgqYnBfbG9jYXRpb24pLAogKwkgICBicF9sb2NhdGlvbl9j b21wYXJlKTsKICt9Ci0gCi0gdm9pZAorKworK3ZvaWQKICBfaW5pdGlhbGl6ZV9icmVha3BvaW50 ICh2b2lkKQotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2JyZWFrcG9pbnQuaAorIHsK KyAgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjOworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAx MDMvZ2RiL2JyZWFrcG9pbnQuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIu b3JpZy9nZGIvYnJlYWtwb2ludC5oCTIwMTEtMDctMjIgMTk6MDg6MTkuMDAwMDAwMDAwICswMjAw Ci0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvYnJlYWtwb2ludC5oCTIwMTEtMDctMjIgMTk6 MzE6MjIuMDAwMDAwMDAwICswMjAwCi1AQCAtMTMyOCw0ICsxMzI4LDcgQEAgZXh0ZXJuIGludCB1 c2VyX2JyZWFrcG9pbnRfcCAoc3RydWN0IGJyZQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMDMub3Jp Zy9nZGIvYnJlYWtwb2ludC5oCTIwMTItMDEtMDMgMDU6NTI6MTUuMDAwMDAwMDAwICswMTAwCisr KysgZ2RiLTcuNC41MC4yMDEyMDEwMy9nZGIvYnJlYWtwb2ludC5oCTIwMTItMDEtMDMgMTU6MjM6 MDkuNDQ0MzU2NDg0ICswMTAwCitAQCAtMTM5Myw0ICsxMzkzLDcgQEAgZXh0ZXJuIHN0cnVjdCBn ZGJhcmNoICpnZXRfc2FsX2FyY2ggKHN0cgogIAogIGV4dGVybiB2b2lkIG1vZGlmeV9zZW1hcGhv cmUgKHN0cnVjdCBicF9sb2NhdGlvbiAqbG9jYXRpb24sIGludCBzZXQpOwogIApAQCAtNjUsMTEg KzY1LDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9icmVha3BvaW50LmgKICsJ CQkJICBzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzICpkZWx0YSk7CiArCiAgI2VuZGlmIC8qICFkZWZp bmVkIChCUkVBS1BPSU5UX0gpICovCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvb2Jq ZmlsZXMuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMDMvZ2RiL29iamZpbGVzLmMKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL29iamZpbGVzLmMJMjAxMS0w Ny0yMiAxOTowODoxOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi9vYmpmaWxlcy5jCTIwMTEtMDctMjIgMTk6MzE6MjIuMDAwMDAwMDAwICswMjAwCi1AQCAtODQ3 LDYgKzg0NywxMSBAQCBvYmpmaWxlX3JlbG9jYXRlMSAoc3RydWN0IG9iamZpbGUgKm9iamZpCist LS0gZ2RiLTcuNC41MC4yMDEyMDEwMy5vcmlnL2dkYi9vYmpmaWxlcy5jCTIwMTItMDEtMDMgMDU6 NTI6MTUuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEwMy9nZGIvb2JqZmls ZXMuYwkyMDEyLTAxLTAzIDE1OjIzOjI4LjE0MTI4NzY5NyArMDEwMAorQEAgLTgxOCw2ICs4MTgs MTEgQEAgb2JqZmlsZV9yZWxvY2F0ZTEgKHN0cnVjdCBvYmpmaWxlICpvYmpmaQogICAgICBvYmpm aWxlLT5zZi0+c3ltX3Byb2JlX2Zucy0+c3ltX3JlbG9jYXRlX3Byb2JlIChvYmpmaWxlLAogIAkJ CQkJCSAgICBuZXdfb2Zmc2V0cywgZGVsdGEpOwogIAoKZGlmZiAtLWdpdCBhL2dkYi1hcmNoZXIt cGllLWFkZG9ucy5wYXRjaCBiL2dkYi1hcmNoZXItcGllLWFkZG9ucy5wYXRjaAppbmRleCAzNmRj ODFhLi5iMThhMDYwIDEwMDY0NAotLS0gYS9nZGItYXJjaGVyLXBpZS1hZGRvbnMucGF0Y2gKKysr IGIvZ2RiLWFyY2hlci1waWUtYWRkb25zLnBhdGNoCkBAIC0xLDggKzEsOCBAQAotSW5kZXg6IGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJmMnJlYWQuYworSW5kZXg6IGdkYi03LjQuNTAuMjAx MTEyMTgvZ2RiL2R3YXJmMnJlYWQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3 MjIub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTEtMDctMjIgMTk6MzA6MTEuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZHdhcmYycmVhZC5jCTIwMTEtMDctMjIg MTk6MzA6NDQuMDAwMDAwMDAwICswMjAwCi1AQCAtNzk3OSw3ICs3OTc5LDEyIEBAIHJlYWRfY29t bW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKKy0tLSBnZGItNy40LjUwLjIwMTExMjE4 Lm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDExLTEyLTE5IDAxOjMxOjI0LjAwMDAwMDAwMCArMDEw MAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2R3YXJmMnJlYWQuYwkyMDExLTEyLTE5IDAx OjMzOjI1LjI2MzIzODk3MiArMDEwMAorQEAgLTgzNDcsNyArODM0NywxMiBAQCByZWFkX2NvbW1v bl9ibG9jayAoc3RydWN0IGRpZV9pbmZvICpkaWUsCiAgewogICAgc3RydWN0IGF0dHJpYnV0ZSAq YXR0cjsKICAgIHN0cnVjdCBzeW1ib2wgKnN5bTsKQEAgLTE2LDcgKzE2LDcgQEAgSW5kZXg6IGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJmMnJlYWQuYwogIAogICAgYXR0ciA9IGR3YXJmMl9h dHRyIChkaWUsIERXX0FUX2xvY2F0aW9uLCBjdSk7CiAgICBpZiAoYXR0cikKLUBAIC03OTg4LDYg Kzc5OTMsNyBAQCByZWFkX2NvbW1vbl9ibG9jayAoc3RydWN0IGRpZV9pbmZvICpkaWUsCitAQCAt ODM1Niw2ICs4MzYxLDcgQEAgcmVhZF9jb21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqZGll LAogICAgICAgIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQogICAgICAgICAgewogICAg ICAgICAgICBiYXNlID0gZGVjb2RlX2xvY2Rlc2MgKERXX0JMT0NLIChhdHRyKSwgY3UpOwpAQCAt MjQsNyArMjQsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZHdhcmYycmVhZC5j CiAgICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoYXR0cl9mb3JtX2lzX3NlY3Rpb25fb2Zmc2V0 IChhdHRyKSkKICAgICAgICAgIHsKLUBAIC04MDQwLDEyICs4MDQ2LDE1IEBAIHJlYWRfY29tbW9u X2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKK0BAIC04NDA4LDEyICs4NDE0LDE1IEBAIHJl YWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKICAJICBpZiAoc3ltICE9IE5V TEwKICAJICAgICAgJiYgaGFuZGxlX2RhdGFfbWVtYmVyX2xvY2F0aW9uIChjaGlsZF9kaWUsIGN1 LCAmb2Zmc2V0KSkKICAJICAgIHsKQEAgLTQyLDcgKzQyLDcgQEAgSW5kZXg6IGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL2R3YXJmMnJlYWQuYwogIAkgIGVsc2UKICAJICAgIFNFVF9GSUVMRF9QSFlT TkFNRSAoKmZpZWxkLCBTWU1CT0xfTElOS0FHRV9OQU1FIChzeW0pKTsKICAJICBGSUVMRF9UWVBF ICgqZmllbGQpID0gU1lNQk9MX1RZUEUgKHN5bSk7Ci1AQCAtODA1OSw3ICs4MDY4LDcgQEAgcmVh ZF9jb21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqZGllLAorQEAgLTg0MjcsNyArODQzNiw3 IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKICAKICAgICAgICBz eW0gPSBuZXdfc3ltYm9sIChkaWUsIHR5cGUsIGN1KTsKICAgICAgICAvKiBTWU1CT0xfVkFMVUVf QUREUkVTUyBuZXZlciBnZXRzIHVzZWQgYXMgYWxsIGl0cyBmaWVsZHMgYXJlIHN0YXRpYy4gICov CkBAIC01MSwzNSArNTEsMzUgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJm MnJlYWQuYwogIAogICAgICAgIHNldF9kaWVfdHlwZSAoZGllLCB0eXBlLCBjdSk7CiAgICAgIH0K LUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9nZGJ0eXBlcy5oCitJbmRleDogZ2RiLTcu NC41MC4yMDExMTIxOC9nZGIvZ2RidHlwZXMuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAu MjAxMTA3MjIub3JpZy9nZGIvZ2RidHlwZXMuaAkyMDExLTA3LTIyIDE5OjA4OjE5LjAwMDAwMDAw MCArMDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2dkYnR5cGVzLmgJMjAxMS0wNy0y MiAxOTozMTowOC4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcv Z2RiL2dkYnR5cGVzLmgJMjAxMS0xMi0xOCAyMzozNToyMy4wMDAwMDAwMDAgKzAxMDAKKysrKyBn ZGItNy40LjUwLjIwMTExMjE4L2dkYi9nZGJ0eXBlcy5oCTIwMTEtMTItMTkgMDE6MzQ6MjEuNDQ4 MDI1NjIwICswMTAwCiBAQCAtMzk2LDYgKzM5Niw3IEBAIGVudW0gdHlwZV9pbnN0YW5jZV9mbGFn X3ZhbHVlCiAgZW51bSBmaWVsZF9sb2Nfa2luZAogICAgewogICAgICBGSUVMRF9MT0NfS0lORF9C SVRQT1MsCS8qIGJpdHBvcyAqLwogKyAgICAvKiBUaGlzIGFkZHJlc3MgaXMgdW5yZWxvY2F0ZWQg YnkgdGhlIG9iamZpbGUncyBBTk9GRlNFVC4gICovCiAgICAgIEZJRUxEX0xPQ19LSU5EX1BIWVNB RERSLAkvKiBwaHlzYWRkciAqLwotICAgICBGSUVMRF9MT0NfS0lORF9QSFlTTkFNRQkvKiBwaHlz bmFtZSAqLwotICAgfTsKLUBAIC01ODAsNiArNTgxLDcgQEAgc3RydWN0IG1haW5fdHlwZQorICAg ICBGSUVMRF9MT0NfS0lORF9QSFlTTkFNRSwJLyogcGh5c25hbWUgKi8KKyAgICAgRklFTERfTE9D X0tJTkRfRFdBUkZfQkxPQ0sJLyogZHdhcmZfYmxvY2sgKi8KK0BAIC01ODEsNiArNTgyLDcgQEAg c3RydWN0IG1haW5fdHlwZQogIAkgICBpcyB0aGUgbG9jYXRpb24gKGluIHRoZSB0YXJnZXQpIG9m IHRoZSBzdGF0aWMgZmllbGQuCiAgCSAgIE90aGVyd2lzZSwgcGh5c25hbWUgaXMgdGhlIG1hbmds ZWQgbGFiZWwgb2YgdGhlIHN0YXRpYyBmaWVsZC4gICovCiAgCiArCS8qIFRoaXMgYWRkcmVzcyBp cyB1bnJlbG9jYXRlZCBieSB0aGUgb2JqZmlsZSdzIEFOT0ZGU0VULiAgKi8KICAJQ09SRV9BRERS IHBoeXNhZGRyOwogIAljb25zdCBjaGFyICpwaHlzbmFtZTsKLSAgICAgICB9Ci1AQCAtMTExMCw2 ICsxMTEyLDcgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydQorIAor QEAgLTExOTQsNiArMTE5Niw3IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUg KHN0cnUKICAjZGVmaW5lIEZJRUxEX0xPQ19LSU5EKHRoaXNmbGQpICgodGhpc2ZsZCkubG9jX2tp bmQpCiAgI2RlZmluZSBGSUVMRF9CSVRQT1ModGhpc2ZsZCkgKCh0aGlzZmxkKS5sb2MuYml0cG9z KQogICNkZWZpbmUgRklFTERfU1RBVElDX1BIWVNOQU1FKHRoaXNmbGQpICgodGhpc2ZsZCkubG9j LnBoeXNuYW1lKQogKy8qIFRoaXMgYWRkcmVzcyBpcyB1bnJlbG9jYXRlZCBieSB0aGUgb2JqZmls ZSdzIEFOT0ZGU0VULiAgKi8KICAjZGVmaW5lIEZJRUxEX1NUQVRJQ19QSFlTQUREUih0aGlzZmxk KSAoKHRoaXNmbGQpLmxvYy5waHlzYWRkcikKKyAjZGVmaW5lIEZJRUxEX0RXQVJGX0JMT0NLKHRo aXNmbGQpICgodGhpc2ZsZCkubG9jLmR3YXJmX2Jsb2NrKQogICNkZWZpbmUgU0VUX0ZJRUxEX0JJ VFBPUyh0aGlzZmxkLCBiaXRwb3MpCQkJXAotICAgKEZJRUxEX0xPQ19LSU5EICh0aGlzZmxkKSA9 IEZJRUxEX0xPQ19LSU5EX0JJVFBPUywJCVwKLUBAIC0xMTE3LDYgKzExMjAsNyBAQCBleHRlcm4g dm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1CitAQCAtMTIwMiw2ICsxMjA1LDcgQEAg ZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydQogICNkZWZpbmUgU0VUX0ZJ RUxEX1BIWVNOQU1FKHRoaXNmbGQsIG5hbWUpCQkJXAogICAgKEZJRUxEX0xPQ19LSU5EICh0aGlz ZmxkKSA9IEZJRUxEX0xPQ19LSU5EX1BIWVNOQU1FLAkJXAogICAgIEZJRUxEX1NUQVRJQ19QSFlT TkFNRSAodGhpc2ZsZCkgPSAobmFtZSkpCkBAIC04NywxOCArODcsMTggQEAgSW5kZXg6IGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL2dkYnR5cGVzLmgKICAjZGVmaW5lIFNFVF9GSUVMRF9QSFlTQURE Uih0aGlzZmxkLCBhZGRyKQkJCVwKICAgIChGSUVMRF9MT0NfS0lORCAodGhpc2ZsZCkgPSBGSUVM RF9MT0NfS0lORF9QSFlTQUREUiwJCVwKICAgICBGSUVMRF9TVEFUSUNfUEhZU0FERFIgKHRoaXNm bGQpID0gKGFkZHIpKQotQEAgLTExMjksNiArMTEzMyw3IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRl X2duYXRfYXV4X3R5cGUgKHN0cnUKK0BAIC0xMjE3LDYgKzEyMjEsNyBAQCBleHRlcm4gdm9pZCBh bGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1CiAgI2RlZmluZSBUWVBFX0ZJRUxEX0xPQ19LSU5E KHRoaXN0eXBlLCBuKSBGSUVMRF9MT0NfS0lORCAoVFlQRV9GSUVMRCAodGhpc3R5cGUsIG4pKQog ICNkZWZpbmUgVFlQRV9GSUVMRF9CSVRQT1ModGhpc3R5cGUsIG4pIEZJRUxEX0JJVFBPUyAoVFlQ RV9GSUVMRCAodGhpc3R5cGUsIG4pKQogICNkZWZpbmUgVFlQRV9GSUVMRF9TVEFUSUNfUEhZU05B TUUodGhpc3R5cGUsIG4pIEZJRUxEX1NUQVRJQ19QSFlTTkFNRSAoVFlQRV9GSUVMRCAodGhpc3R5 cGUsIG4pKQogKy8qIFRoaXMgYWRkcmVzcyBpcyB1bnJlbG9jYXRlZCBieSB0aGUgb2JqZmlsZSdz IEFOT0ZGU0VULiAgKi8KICAjZGVmaW5lIFRZUEVfRklFTERfU1RBVElDX1BIWVNBRERSKHRoaXN0 eXBlLCBuKSBGSUVMRF9TVEFUSUNfUEhZU0FERFIgKFRZUEVfRklFTEQgKHRoaXN0eXBlLCBuKSkK KyAjZGVmaW5lIFRZUEVfRklFTERfRFdBUkZfQkxPQ0sodGhpc3R5cGUsIG4pIEZJRUxEX0RXQVJG X0JMT0NLIChUWVBFX0ZJRUxEICh0aGlzdHlwZSwgbikpCiAgI2RlZmluZSBUWVBFX0ZJRUxEX0FS VElGSUNJQUwodGhpc3R5cGUsIG4pIEZJRUxEX0FSVElGSUNJQUwoVFlQRV9GSUVMRCh0aGlzdHlw ZSxuKSkKLSAjZGVmaW5lIFRZUEVfRklFTERfQklUU0laRSh0aGlzdHlwZSwgbikgRklFTERfQklU U0laRShUWVBFX0ZJRUxEKHRoaXN0eXBlLG4pKQotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL2p2LWxhbmcuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2p2LWxhbmcuYwog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvanYtbGFuZy5jCTIw MTEtMDctMDEgMjA6Mjg6NTIuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvanYtbGFuZy5jCTIwMTEtMDctMjIgMTk6MzA6NDQuMDAwMDAwMDAwICswMjAwCistLS0g Z2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi9qdi1sYW5nLmMJMjAxMS0xMi0wNiAxOTo1NDoz OS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9qdi1sYW5nLmMJ MjAxMS0xMi0xOSAwMTozMzoyNS4yODAyMzg5MDggKzAxMDAKIEBAIC00MzAsNyArNDMwLDggQEAg amF2YV9saW5rX2NsYXNzX3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZAogIAogICAgZmllbGRzID0g TlVMTDsKQEAgLTExOSwxMSArMTE5LDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi9qdi1sYW5nLmMKICAgICAgICBlbHNlCiAgCVRZUEVfRklFTERfQklUUE9TICh0eXBlLCBpKSA9 IDggKiBib2Zmc2V0OwogICAgICAgIGlmIChhY2NmbGFncyAmIDB4ODAwMCkJLyogRklFTERfVU5S RVNPTFZFRF9GTEFHICovCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdmFsdWUuYwor SW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3ZhbHVlLmMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3ZhbHVlLmMJMjAxMS0wNy0yMiAxOTowODoxOS4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi92YWx1ZS5jCTIwMTEt MDctMjIgMTk6MzA6NDQuMDAwMDAwMDAwICswMjAwCi1AQCAtMjUwNyw3ICsyNTA3LDggQEAgdmFs dWVfc3RhdGljX2ZpZWxkIChzdHJ1Y3QgdHlwZSAqdHlwZSwgaQorLS0tIGdkYi03LjQuNTAuMjAx MTEyMTgub3JpZy9nZGIvdmFsdWUuYwkyMDExLTEyLTE4IDIzOjM1OjIzLjAwMDAwMDAwMCArMDEw MAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3ZhbHVlLmMJMjAxMS0xMi0xOSAwMTozMzoy NS4yODMyMzg4OTYgKzAxMDAKK0BAIC0yNDgxLDcgKzI0ODEsOCBAQCB2YWx1ZV9zdGF0aWNfZmll bGQgKHN0cnVjdCB0eXBlICp0eXBlLCBpCiAgICAgIHsKICAgICAgY2FzZSBGSUVMRF9MT0NfS0lO RF9QSFlTQUREUjoKICAgICAgICByZXR2YWwgPSB2YWx1ZV9hdF9sYXp5IChUWVBFX0ZJRUxEX1RZ UEUgKHR5cGUsIGZpZWxkbm8pLAoKZGlmZiAtLWdpdCBhL2dkYi1hcmNoZXIucGF0Y2ggYi9nZGIt YXJjaGVyLnBhdGNoCmluZGV4IDVkMzQ2ZDUuLmZiODQ3NDIgMTAwNjQ0Ci0tLSBhL2dkYi1hcmNo ZXIucGF0Y2gKKysrIGIvZ2RiLWFyY2hlci5wYXRjaApAQCAtMiwyMiArMiwyMiBAQCBodHRwOi8v c291cmNld2FyZS5vcmcvZ2RiL3dpa2kvUHJvamVjdEFyY2hlcgogaHR0cDovL3NvdXJjZXdhcmUu b3JnL2dkYi93aWtpL0FyY2hlckJyYW5jaE1hbmFnZW1lbnQKIAogR0lUIHNuYXBzaG90OgotY29t bWl0IDA2OWFhYzMzMjU3NjQ3OTNhMmQ1N2Y4YjJmMDkzM2EzMjZjNmI3YTMKK2NvbW1pdCAxYjk0 YTJkYjI0Zjc2ZWZlODcxZjYzM2ViZTJjNzBlMzdmMDcxZjlkCiAKIGJyYW5jaCBgYXJjaGVyJyAt IHRoZSBtZXJnZSBvZiBicmFuY2hlczoKIGFyY2hlci1qYW5rcmF0b2NodmlsLXZsYQogYXJjaGVy LWphbmtyYXRvY2h2aWwtd2F0Y2hwb2ludDMKIGFyY2hlci10cm9tZXktcHl0aG9uCi1hcmNoZXIt c2VyZ2lvZGotc3RhcC1wYXRjaC1zcGxpdAorYXJjaGVyLXNlcmdpb2RqLXN0YXAKIAogCi1JbmRl eDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvTWFrZWZpbGUuaW4KLT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL01ha2VmaWxlLmluCTIwMTEtMDctMjIgMDE6NDY6 MDguMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvTWFrZWZpbGUu aW4JMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC03MjAsOCArNzIwLDgg QEAgU0ZJTEVTID0gYWRhLWV4cC55IGFkYS1sYW5nLmMgYWRhLXR5cGVwcgorZGlmZiAtLWdpdCBh L2dkYi9NYWtlZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5pbgoraW5kZXggODk3NzZiOS4uYTQ0NGM5 OCAxMDA2NDQKKy0tLSBhL2dkYi9NYWtlZmlsZS5pbgorKysrIGIvZ2RiL01ha2VmaWxlLmluCitA QCAtNzI3LDggKzcyNyw4IEBAIFNGSUxFUyA9IGFkYS1leHAueSBhZGEtbGFuZy5jIGFkYS10eXBl cHJpbnQuYyBhZGEtdmFscHJpbnQuYyBhZGEtdGFza3MuYyBcCiAgCXNlbnRpbmVsLWZyYW1lLmMg XAotIAlzZXJpYWwuYyBzZXItYmFzZS5jIHNlci11bml4LmMgXAorIAlzZXJpYWwuYyBzZXItYmFz ZS5jIHNlci11bml4LmMgc2tpcC5jIFwKICAJc29saWIuYyBzb2xpYi10YXJnZXQuYyBzb3VyY2Uu YyBcCiAtCXN0YWJzcmVhZC5jIHN0YWNrLmMgc3RkLXJlZ3MuYyBzeW1maWxlLmMgc3ltZmlsZS1t ZW0uYyBzeW1taXNjLmMgXAogLQlzeW10YWIuYyBcCkBAIC0yNiwyNSArMjYsMjUgQEAgSW5kZXg6 IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL01ha2VmaWxlLmluCiAgCXRhcmdldC5jIHRhcmdldC1k ZXNjcmlwdGlvbnMuYyB0YXJnZXQtbWVtb3J5LmMgXAogIAl0aHJlYWQuYyB0b3AuYyB0cmFjZXBv aW50LmMgXAogIAl0cmFkLWZyYW1lLmMgXAotQEAgLTgxOCw3ICs4MTgsNyBAQCBvc2RhdGEuaCBw cm9jZnMuaCBweXRob24vcHktZXZlbnQuaCBweXRoCitAQCAtODI1LDcgKzgyNSw3IEBAIG9zZGF0 YS5oIHByb2Nmcy5oIHB5dGhvbi9weS1ldmVudC5oIHB5dGhvbi9weS1ldmVudHMuaCBweXRob24v cHktc3RvcGV2ZW50LmggXAogIHB5dGhvbi9weXRob24taW50ZXJuYWwuaCBweXRob24vcHl0aG9u LmggcmF2ZW5zY2FyLXRocmVhZC5oIHJlY29yZC5oIFwKICBzb2xpYi1kYXJ3aW4uaCBzb2xpYi1p YTY0LWhwdXguaCBzb2xpYi1zcHUuaCB3aW5kb3dzLW5hdC5oIHhjb2ZmcmVhZC5oIFwKICBnbnVs aWIvZXh0cmEvYXJnLW5vbm51bGwuaCBnbnVsaWIvZXh0cmEvYysrZGVmcy5oIGdudWxpYi9leHRy YS93YXJuLW9uLXVzZS5oIFwKLS1nbnVsaWIvc3RkZGVmLmluLmggaW5saW5lLWZyYW1lLmggXAot K2dudWxpYi9zdGRkZWYuaW4uaCBpbmxpbmUtZnJhbWUuaCBzdGFwLXByb2JlLmggXAorLWdudWxp Yi9zdGRkZWYuaW4uaCBpbmxpbmUtZnJhbWUuaCBza2lwLmggXAorK2dudWxpYi9zdGRkZWYuaW4u aCBpbmxpbmUtZnJhbWUuaCBza2lwLmggc3RhcC1wcm9iZS5oIFwKICBjb21tb24vY29tbW9uLXV0 aWxzLmggY29tbW9uL3htbC11dGlscy5oIGNvbW1vbi9idWZmZXIuaCBjb21tb24vcHRpZC5oIFwK LSBjb21tb24vbGludXgtb3NkYXRhLmgKKyBjb21tb24vbGludXgtb3NkYXRhLmggZ2RiLWRsZmNu LmgKICAKLUBAIC05MDYsNyArOTA2LDcgQEAgQ09NTU9OX09CUyA9ICQoREVQRklMRVMpICQoQ09O RklHX09CUykgJAorQEAgLTkxMyw3ICs5MTMsNyBAQCBDT01NT05fT0JTID0gJChERVBGSUxFUykg JChDT05GSUdfT0JTKSAkKFlZT0JKKSBcCiAgCXhtbC1zdXBwb3J0Lm8geG1sLXN5c2NhbGwubyB4 bWwtdXRpbHMubyBcCiAgCXRhcmdldC1kZXNjcmlwdGlvbnMubyB0YXJnZXQtbWVtb3J5Lm8geG1s LXRkZXNjLm8geG1sLWJ1aWx0aW4ubyBcCiAgCWluZmVyaW9yLm8gb3NkYXRhLm8gZ2RiX3VzbGVl cC5vIHJlY29yZC5vIGdjb3JlLm8gXAotLQlqaXQubyBwcm9nc3BhY2UubyBcCi0rCWppdC5vIHBy b2dzcGFjZS5vIHN0YXAtcHJvYmUubyBcCi0gCWNvbW1vbi11dGlscy5vIGJ1ZmZlci5vIHB0aWQu bworLQlqaXQubyBwcm9nc3BhY2UubyBza2lwLm8gXAorKwlqaXQubyBwcm9nc3BhY2UubyBza2lw Lm8gc3RhcC1wcm9iZS5vIFwKKyAJY29tbW9uLXV0aWxzLm8gYnVmZmVyLm8gcHRpZC5vIGdkYi1k bGZjbi5vCiAgCiAgVFNPQlMgPSBpbmZsb3cubwotQEAgLTEzMjgsNiArMTMyOCwxMiBAQCBzdGFt cC1oOiAkKHNyY2RpcikvY29uZmlnLmluIGNvbmZpZy5zdGF0CitAQCAtMTMwMSw2ICsxMzAxLDEy IEBAIHN0YW1wLWg6ICQoc3JjZGlyKS9jb25maWcuaW4gY29uZmlnLnN0YXR1cwogIAkgIENPTkZJ R19MSU5LUz0gXAogIAkgICQoU0hFTEwpIGNvbmZpZy5zdGF0dXMKICAKQEAgLTU3LDExICs1Nywx MSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvTWFrZWZpbGUuaW4KICBjb25maWcu c3RhdHVzOiAkKHNyY2RpcikvY29uZmlndXJlIGNvbmZpZ3VyZS50Z3QgY29uZmlndXJlLmhvc3QK ICAJJChTSEVMTCkgY29uZmlnLnN0YXR1cyAtLXJlY2hlY2sKICAKLUluZGV4OiBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi9ORVdTCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5v cmlnL2dkYi9ORVdTCTIwMTEtMDctMjEgMTk6MjM6NTUuMDAwMDAwMDAwICswMjAwCi0rKysgZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvTkVXUwkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCAr MDIwMAotQEAgLTEwOSw2ICsxMDksMTAgQEAgUVREaXNhYmxlCitkaWZmIC0tZ2l0IGEvZ2RiL05F V1MgYi9nZGIvTkVXUworaW5kZXggYTlhNzg1OS4uNzVkYzk2NCAxMDA2NDQKKy0tLSBhL2dkYi9O RVdTCisrKysgYi9nZGIvTkVXUworQEAgLTMwNSw2ICszMDUsMTAgQEAgUmVuZXNhcyBSTDc4CQkJ CXJsNzgtKi1lbGYKICAgIEluaXRpYWwgc3VwcG9ydCBmb3IgdGhlIE9wZW5DTCBDIGxhbmd1YWdl IChodHRwOi8vd3d3Lmtocm9ub3Mub3JnL29wZW5jbCkKICAgIGhhcyBiZWVuIGludGVncmF0ZWQg aW50byBHREIuCiAgCkBAIC03MiwxMSArNzIsMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL05FV1MKICAqIFB5dGhvbiBzY3JpcHRpbmcKICAKICAgICoqIFRoZSBmdW5jdGlvbiBn ZGIuV3JpdGUgbm93IGFjY2VwdHMgYW4gb3B0aW9uYWwga2V5d29yZCAnc3RyZWFtJy4KLUluZGV4 OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9hZGEtbGFuZy5jCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9hZGEtbGFuZy5jCTIwMTEtMDctMDUgMDY6MzQ6NTUu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvYWRhLWxhbmcuYwky MDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAotQEAgLTExODYyLDYgKzExODYyLDcg QEAgYWRhX29wZXJhdG9yX2xlbmd0aCAoY29uc3Qgc3RydWN0IGV4cHJlcworZGlmZiAtLWdpdCBh L2dkYi9hZGEtbGFuZy5jIGIvZ2RiL2FkYS1sYW5nLmMKK2luZGV4IGM0YmY2ZTkuLjhjM2FmMTQg MTAwNjQ0CistLS0gYS9nZGIvYWRhLWxhbmcuYworKysrIGIvZ2RiL2FkYS1sYW5nLmMKK0BAIC0x MTkwNCw2ICsxMTkwNCw3IEBAIGFkYV9vcGVyYXRvcl9sZW5ndGggKGNvbnN0IHN0cnVjdCBleHBy ZXNzaW9uICpleHAsIGludCBwYywgaW50ICpvcGxlbnAsCiAgCiAgc3RhdGljIGludAogIGFkYV9v cGVyYXRvcl9jaGVjayAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKQEAgLTg0LDcg Kzg0LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2FkYS1sYW5nLmMKICAJCSAg ICBpbnQgKCpvYmpmaWxlX2Z1bmMpIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdm9pZCAqZGF0 YSksCiAgCQkgICAgdm9pZCAqZGF0YSkKICB7Ci1AQCAtMTE4NzYsMTIgKzExODc3LDE1IEBAIGFk YV9vcGVyYXRvcl9jaGVjayAoc3RydWN0IGV4cHJlc3Npb24gKmUKK0BAIC0xMTkxOCwxMiArMTE5 MTksMTUgQEAgYWRhX29wZXJhdG9yX2NoZWNrIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQg cG9zLAogIAlicmVhazsKICAKICAgICAgICBkZWZhdWx0OgpAQCAtMTAyLDIzMyArMTAyLDI3MiBA QCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvYWRhLWxhbmcuYwogICAgICAgICYmICgq b2JqZmlsZV9mdW5jKSAoVFlQRV9PQkpGSUxFICh0eXBlKSwgZGF0YSkpCiAgICAgIHJldHVybiAx OwogIAotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2FtZDY0LWxpbnV4LW5hdC5jCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9hbWQ2NC1saW51eC1u YXQuYwkyMDExLTAxLTA3IDIwOjM2OjE1LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL2FtZDY0LWxpbnV4LW5hdC5jCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAw MDAwICswMjAwCi1AQCAtMjY1LDE4ICsyNjUsMTEgQEAgYW1kNjRfbGludXhfc3RvcmVfaW5mZXJp b3JfcmVnaXN0ZXJzIChzdAotIAwKLSAvKiBTdXBwb3J0IGZvciBkZWJ1ZyByZWdpc3RlcnMuICAq LwotIAotLXN0YXRpYyB1bnNpZ25lZCBsb25nIGFtZDY0X2xpbnV4X2RyW0RSX0NPTlRST0wgKyAx XTsKLS0KLSBzdGF0aWMgdW5zaWduZWQgbG9uZwotLWFtZDY0X2xpbnV4X2RyX2dldCAocHRpZF90 IHB0aWQsIGludCByZWdudW0pCi0rYW1kNjRfbGludXhfZHJfZ2V0IChpbnQgdGlkLCBpbnQgcmVn bnVtKQotIHsKLS0gIGludCB0aWQ7Ci0gICB1bnNpZ25lZCBsb25nIHZhbHVlOworZGlmZiAtLWdp dCBhL2dkYi9hbWQ2NC1saW51eC1uYXQuYyBiL2dkYi9hbWQ2NC1saW51eC1uYXQuYworaW5kZXgg ZDU5ODM4OS4uNmJmNzk0YiAxMDA2NDQKKy0tLSBhL2dkYi9hbWQ2NC1saW51eC1uYXQuYworKysr IGIvZ2RiL2FtZDY0LWxpbnV4LW5hdC5jCitAQCAtMzM3LDggKzMzNyw4IEBAIGFtZDY0X2xpbnV4 X2RyX2dldF9zdGF0dXMgKHZvaWQpCisgICByZXR1cm4gYW1kNjRfbGludXhfZHJfZ2V0IChpbmZl cmlvcl9wdGlkLCBEUl9TVEFUVVMpOworIH0KICAKLS0gIHRpZCA9IFRJREdFVCAocHRpZCk7Ci0t ICBpZiAodGlkID09IDApCi0tICAgIHRpZCA9IFBJREdFVCAocHRpZCk7Ci0tCi0gICAvKiBGSVhN RToga2V0dGVuaXMvMjAwMS0wMy0yNzogQ2FsbGluZyBwZXJyb3Jfd2l0aF9uYW1lIGlmIHRoZQot ICAgICAgcHRyYWNlIGNhbGwgZmFpbHMgYnJlYWtzIGRlYnVnZ2luZyByZW1vdGUgdGFyZ2V0cy4g IFRoZSBjb3JyZWN0Ci0gICAgICB3YXkgdG8gZml4IHRoaXMgaXMgdG8gYWRkIHRoZSBoYXJkd2Fy ZSBicmVha3BvaW50IGFuZCB3YXRjaHBvaW50Ci1AQCAtMjk4LDE0ICsyOTEsOCBAQCBhbWQ2NF9s aW51eF9kcl9nZXQgKHB0aWRfdCBwdGlkLCBpbnQgcmVnCi0gLyogU2V0IGRlYnVnIHJlZ2lzdGVy IFJFR05VTSB0byBWQUxVRSBpbiBvbmx5IHRoZSBvbmUgTFdQIG9mIFBUSUQuICAqLworLS8qIENh bGxiYWNrIGZvciBpdGVyYXRlX292ZXJfbHdwcy4gIFVwZGF0ZSB0aGUgZGVidWcgcmVnaXN0ZXJz IG9mCistICAgTFdQLiAgKi8KKysvKiBDYWxsYmFjayBmb3IgbGludXhfbmF0X2l0ZXJhdGVfd2F0 Y2hwb2ludF9sd3BzLiAgVXBkYXRlIHRoZSBkZWJ1ZyByZWdpc3RlcnMKKysgICBvZiBMV1AuICAq LwogIAorIHN0YXRpYyBpbnQKKyB1cGRhdGVfZGVidWdfcmVnaXN0ZXJzX2NhbGxiYWNrIChzdHJ1 Y3QgbHdwX2luZm8gKmx3cCwgdm9pZCAqYXJnKQorQEAgLTM2NCw5ICszNjQsNyBAQCB1cGRhdGVf ZGVidWdfcmVnaXN0ZXJzX2NhbGxiYWNrIChzdHJ1Y3QgbHdwX2luZm8gKmx3cCwgdm9pZCAqYXJn KQogIHN0YXRpYyB2b2lkCi0tYW1kNjRfbGludXhfZHJfc2V0IChwdGlkX3QgcHRpZCwgaW50IHJl Z251bSwgdW5zaWduZWQgbG9uZyB2YWx1ZSkKLSthbWQ2NF9saW51eF9kcl9zZXQgKGludCB0aWQs IGludCByZWdudW0sIHVuc2lnbmVkIGxvbmcgdmFsdWUpCisgYW1kNjRfbGludXhfZHJfc2V0X2Nv bnRyb2wgKHVuc2lnbmVkIGxvbmcgY29udHJvbCkKICB7Ci0tICBpbnQgdGlkOwotLQotLSAgdGlk ID0gVElER0VUIChwdGlkKTsKLS0gIGlmICh0aWQgPT0gMCkKLS0gICAgdGlkID0gUElER0VUIChw dGlkKTsKKy0gIHB0aWRfdCBwaWRfcHRpZCA9IHBpZF90b19wdGlkIChwdGlkX2dldF9waWQgKGlu ZmVyaW9yX3B0aWQpKTsKIC0KLSAgIGVycm5vID0gMDsKLSAgIHB0cmFjZSAoUFRSQUNFX1BPS0VV U0VSLCB0aWQsCi0gCSAgb2Zmc2V0b2YgKHN0cnVjdCB1c2VyLCB1X2RlYnVncmVnW3JlZ251bV0p LCB2YWx1ZSk7Ci1AQCAtMzEzLDM1ICszMDAsOTYgQEAgYW1kNjRfbGludXhfZHJfc2V0IChwdGlk X3QgcHRpZCwgaW50IHJlZwotICAgICBwZXJyb3Jfd2l0aF9uYW1lIChfKCJDb3VsZG4ndCB3cml0 ZSBkZWJ1ZyByZWdpc3RlciIpKTsKKy0gIGl0ZXJhdGVfb3Zlcl9sd3BzIChwaWRfcHRpZCwgdXBk YXRlX2RlYnVnX3JlZ2lzdGVyc19jYWxsYmFjaywgTlVMTCk7CisrICBsaW51eF9uYXRfaXRlcmF0 ZV93YXRjaHBvaW50X2x3cHMgKHVwZGF0ZV9kZWJ1Z19yZWdpc3RlcnNfY2FsbGJhY2ssIE5VTEwp OworIH0KKyAKKyAvKiBTZXQgYWRkcmVzcyBSRUdOVU0gKHplcm8gYmFzZWQpIHRvIEFERFIgaW4g YWxsIExXUHMgb2YgdGhlIGN1cnJlbnQKK0BAIC0zNzksNyArMzc3LDcgQEAgYW1kNjRfbGludXhf ZHJfc2V0X2FkZHIgKGludCByZWdudW0sIENPUkVfQUREUiBhZGRyKQorIAorICAgZ2RiX2Fzc2Vy dCAocmVnbnVtID49IDAgJiYgcmVnbnVtIDw9IERSX0xBU1RBRERSIC0gRFJfRklSU1RBRERSKTsK KyAKKy0gIGl0ZXJhdGVfb3Zlcl9sd3BzIChwaWRfcHRpZCwgdXBkYXRlX2RlYnVnX3JlZ2lzdGVy c19jYWxsYmFjaywgTlVMTCk7CisrICBsaW51eF9uYXRfaXRlcmF0ZV93YXRjaHBvaW50X2x3cHMg KHVwZGF0ZV9kZWJ1Z19yZWdpc3RlcnNfY2FsbGJhY2ssIE5VTEwpOwogIH0KICAKLS0vKiBTZXQg RFJfQ09OVFJPTCB0byBBRERSIGluIGFsbCBMV1BzIG9mIExXUF9MSVNULiAgKi8KLSsvKiBIZWxw ZXIgZm9yIGFtZDY0X2xpbnV4X2RyX3NldF9jb250cm9sLiAgKi8KKyAvKiBDYWxsZWQgd2hlbiBy ZXN1bWluZyBhIHRocmVhZC4KK0BAIC00MDEsNiArMzk5LDEzIEBAIGFtZDY0X2xpbnV4X3ByZXBh cmVfdG9fcmVzdW1lIChzdHJ1Y3QgbHdwX2luZm8gKmx3cCkKKyAgICAgICBzdHJ1Y3QgaTM4Nl9k ZWJ1Z19yZWdfc3RhdGUgKnN0YXRlID0gaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKCk7CisgICAgICAg aW50IGk7CisgCisrICAgICAgLyogT24gTGludXgga2VybmVsIGJlZm9yZSAyLjYuMzMgY29tbWl0 CisrCSA3MmY2NzRkMjAzY2QyMzA0MjY0MzdjZGNmN2RkNmY2ODFkYWQ4YjBkCisrCSBpZiB5b3Ug ZW5hYmxlIGEgYnJlYWtwb2ludCBieSB0aGUgRFJfQ09OVFJPTCBiaXRzIHlvdSBuZWVkIHRvIGhh dmUKKysJIGFscmVhZHkgd3JpdHRlbiB0aGUgY29ycmVzcG9uZGluZyBEUl9GSVJTVEFERFIuLi5E Ul9MQVNUQUREUiByZWdpc3RlcnMuCiArCi0rc3RhdGljIHZvaWQKLSthbWQ2NF9saW51eF9kcl9z ZXRfY29udHJvbF9jYWxsYmFjayAoaW50IHRpZCwgdm9pZCAqY29udHJvbF92b2lkcCkKLSt7Ci0r ICB1bnNpZ25lZCBsb25nIGNvbnRyb2wgPSAqKHVuc2lnbmVkIGxvbmcgKikgY29udHJvbF92b2lk cDsKKysJIEVuc3VyZSBEUl9DT05UUk9MIGdldHMgd3JpdHRlbiBhcyB0aGUgdmVyeSBsYXN0IHJl Z2lzdGVyIGhlcmUuICAqLworKworICAgICAgIGZvciAoaSA9IERSX0ZJUlNUQUREUjsgaSA8PSBE Ul9MQVNUQUREUjsgaSsrKQorIAlpZiAoc3RhdGUtPmRyX3JlZl9jb3VudFtpXSA+IDApCisgCSAg eworZGlmZiAtLWdpdCBhL2dkYi9hbWQ2NC1saW51eC10ZGVwLmMgYi9nZGIvYW1kNjQtbGludXgt dGRlcC5jCitpbmRleCA4NGI1OGEwLi42MmVkOTY0IDEwMDY0NAorLS0tIGEvZ2RiL2FtZDY0LWxp bnV4LXRkZXAuYworKysrIGIvZ2RiL2FtZDY0LWxpbnV4LXRkZXAuYworQEAgLTEzNjMsNiArMTM2 MywxNSBAQCBhbWQ2NF9saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKKyAgIHNldF9nZGJhcmNoX3Byb2Nlc3NfcmVjb3JkIChn ZGJhcmNoLCBpMzg2X3Byb2Nlc3NfcmVjb3JkKTsKKyAgIHNldF9nZGJhcmNoX3Byb2Nlc3NfcmVj b3JkX3NpZ25hbCAoZ2RiYXJjaCwgYW1kNjRfbGludXhfcmVjb3JkX3NpZ25hbCk7CisgCisrICAv KiBTeXN0ZW1UYXAgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMuICAqLworKyAgc2V0X2dkYmFyY2hf c3RhcF9pbnRlZ2VyX3ByZWZpeCAoZ2RiYXJjaCwgIiQiKTsKKysgIHNldF9nZGJhcmNoX3N0YXBf cmVnaXN0ZXJfcHJlZml4IChnZGJhcmNoLCAiJSIpOworKyAgc2V0X2dkYmFyY2hfc3RhcF9yZWdp c3Rlcl9pbmRpcmVjdGlvbl9wcmVmaXggKGdkYmFyY2gsICIoIik7CisrICBzZXRfZ2RiYXJjaF9z dGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3N1Zml4IChnZGJhcmNoLCAiKSIpOworKyAgc2V0X2dk YmFyY2hfc3RhcF9pc19zaW5nbGVfb3BlcmFuZCAoZ2RiYXJjaCwgaTM4Nl9zdGFwX2lzX3Npbmds ZV9vcGVyYW5kKTsKKysgIHNldF9nZGJhcmNoX3N0YXBfcGFyc2Vfc3BlY2lhbF90b2tlbiAoZ2Ri YXJjaCwKKysJCQkJCWkzODZfc3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuKTsKKysKKyAgIC8qIElu aXRpYWxpemUgdGhlIGFtZDY0X2xpbnV4X3JlY29yZF90ZGVwLiAgKi8KKyAgIC8qIFRoZXNlIHZh bHVlcyBhcmUgdGhlIHNpemUgb2YgdGhlIHR5cGUgdGhhdCB3aWxsIGJlIHVzZWQgaW4gYSBzeXN0 ZW0KKyAgICAgIGNhbGwuICBUaGV5IGFyZSBvYnRhaW5lZCBmcm9tIExpbnV4IEtlcm5lbCBzb3Vy Y2UuICAqLworZGlmZiAtLWdpdCBhL2dkYi9hcm0tbGludXgtdGRlcC5jIGIvZ2RiL2FybS1saW51 eC10ZGVwLmMKK2luZGV4IGJlZTMzZTQuLjRkZjZiZmEgMTAwNjQ0CistLS0gYS9nZGIvYXJtLWxp bnV4LXRkZXAuYworKysrIGIvZ2RiL2FybS1saW51eC10ZGVwLmMKK0BAIC00NCw2ICs0NCwxMiBA QAorICNpbmNsdWRlICJnZGJ0aHJlYWQuaCIKKyAjaW5jbHVkZSAic3ltZmlsZS5oIgorIAorKyNp bmNsdWRlICJjbGkvY2xpLXV0aWxzLmgiCisrI2luY2x1ZGUgInN0YXAtcHJvYmUuaCIKKysjaW5j bHVkZSAicGFyc2VyLWRlZnMuaCIKKysjaW5jbHVkZSAidXNlci1yZWdzLmgiCisrI2luY2x1ZGUg PGN0eXBlLmg+CiArCi0rICBhbWQ2NF9saW51eF9kcl9zZXQgKHRpZCwgRFJfQ09OVFJPTCwgY29u dHJvbCk7CisgI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKKyAKKyAvKiBUaGlzIGlzIGRlZmluZWQg aW4gPGVsZi5oPiBvbiBBUk0gR05VL0xpbnV4IHN5c3RlbXMuICAqLworQEAgLTEwNTQsNiArMTA2 MCwxMjIgQEAgYXJtX2xpbnV4X2Rpc3BsYWNlZF9zdGVwX2NvcHlfaW5zbiAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gsCisgICByZXR1cm4gZHNjOworIH0KKyAKKytzdGF0aWMgaW50CisrYXJtX3N0 YXBfaXNfc2luZ2xlX29wZXJhbmQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBjb25zdCBjaGFy ICpzKQorK3sKKysgIHJldHVybiAoKnMgPT0gJyMnIC8qIExpdGVyYWwgbnVtYmVyLiAgKi8KKysJ ICB8fCAqcyA9PSAnWycgLyogUmVnaXN0ZXIgaW5kaXJlY3Rpb24gb3IKKysJCQkgIGRpc3BsYWNl bWVudC4gICovCisrCSAgfHwgaXNhbHBoYSAoKnMpKTsgLyogUmVnaXN0ZXIgdmFsdWUuICAqLwog K30KICsKLStzdGF0aWMgdm9pZCBhbWQ2NF9saW51eF9kcl9zZXRfYWRkciAoaW50IHJlZ251bSwg Q09SRV9BRERSIGFkZHIpOworKy8qIFRoaXMgcm91dGluZSBpcyB1c2VkIHRvIHBhcnNlIGEgc3Bl Y2lhbCB0b2tlbiBpbiBBUk0ncyBhc3NlbWJseS4KICsKLSsvKiBTZXQgRFJfQ09OVFJPTCB0byBB RERSIGluIGFsbCBMV1BzIG9mIENVUlJFTlRfSU5GRVJJT1IuICAqLwotIAotIHN0YXRpYyB2b2lk Ci0gYW1kNjRfbGludXhfZHJfc2V0X2NvbnRyb2wgKHVuc2lnbmVkIGxvbmcgY29udHJvbCkKLSB7 Ci0tICBzdHJ1Y3QgbHdwX2luZm8gKmxwOwotLSAgcHRpZF90IHB0aWQ7Ci0rICBpbnQgaW5mZXJp b3JfcGlkID0gcHRpZF9nZXRfcGlkIChpbmZlcmlvcl9wdGlkKTsKLSsgIHN0cnVjdCBpbmZlcmlv ciAqaW5mID0gY3VycmVudF9pbmZlcmlvciAoKTsKKysgICBUaGUgc3BlY2lhbCB0b2tlbnMgcGFy c2VkIGJ5IGl0IGFyZToKICsKLSsgIC8qIEFyZSB3ZSBkZXRhY2hpbmcgYnJlYWtwb2ludHMgZnJv bSBhIGZvcmstZWQgY2hpbGQ/Ci0rICAgICBTZWUgbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2lu dF9sd3BzIGZvciB0aGUgZm9yay1lZCBjaGlsZCBkZXNjcmlwdGlvbi4KLSsgICAgIFRoZSBpMzg2 IGNvdW50ZXJwYXJ0IGlzIGkzODZfbGludXhfZHJfc2V0X2NvbnRyb2wuICAqLwotKyAgaWYgKGlu Zi0+cGlkICE9IGluZmVyaW9yX3BpZCkKLSsgICAgewotKyAgICAgIHN0cnVjdCBpMzg2X2RyX21p cnJvciAqZHJfbWlycm9yID0gaTM4Nl9kcl9taXJyb3JfZ2V0ICgpOwotKyAgICAgIGludCBpOwor KyAgICAgIC0gUmVnaXN0ZXIgZGlzcGxhY2VtZW50IChlLmcsIFtmcCwgIy04XSkKICsKLSsgICAg ICAvKiBUaGVyZSB3ZXJlIHR3byBjaGFuZ2VzIGluIExpbnV4IGtlcm5lbCAyLjYuMzMgYnkgdGhl IGNvbW1pdDoKLSsgICAgICAgICA3MmY2NzRkMjAzY2QyMzA0MjY0MzdjZGNmN2RkNmY2ODFkYWQ4 YjBkCisrICAgSXQgcmV0dXJucyBvbmUgaWYgdGhlIHNwZWNpYWwgdG9rZW4gaGFzIGJlZW4gcGFy c2VkIHN1Y2Nlc3NmdWxseSwKKysgICBvciB6ZXJvIGlmIHRoZSBjdXJyZW50IHRva2VuIGlzIG5v dCBjb25zaWRlcmVkIHNwZWNpYWwuICAqLworKworK3N0YXRpYyBpbnQKKythcm1fc3RhcF9wYXJz ZV9zcGVjaWFsX3Rva2VuIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKysJCQkgICAgICBzdHJ1 Y3Qgc3RhcF9wYXJzZV9pbmZvICpwKQorK3sKKysgIGlmICgqcC0+YXJnID09ICdbJykKKysgICAg eworKyAgICAgIC8qIFRlbXBvcmFyeSBob2xkZXIgZm9yIGxvb2thaGVhZC4gICovCisrICAgICAg Y29uc3QgY2hhciAqdG1wID0gcC0+YXJnOworKyAgICAgIC8qIFVzZWQgdG8gc2F2ZSB0aGUgcmVn aXN0ZXIgbmFtZS4gICovCisrICAgICAgY29uc3QgY2hhciAqc3RhcnQ7CisrICAgICAgY2hhciAq cmVnbmFtZTsKKysgICAgICBpbnQgbGVuLCBvZmZzZXQ7CisrICAgICAgaW50IGdvdF9taW51cyA9 IDA7CisrICAgICAgbG9uZyBkaXNwbGFjZW1lbnQ7CisrICAgICAgc3RydWN0IHN0b2tlbiBzdHI7 CisrCisrICAgICAgKyt0bXA7CisrICAgICAgc3RhcnQgPSB0bXA7CisrCisrICAgICAgLyogUmVn aXN0ZXIgbmFtZS4gICovCisrICAgICAgd2hpbGUgKGlzYWxudW0gKCp0bXApKQorKwkrK3RtcDsK KysKKysgICAgICBpZiAoKnRtcCAhPSAnLCcpCisrCXJldHVybiAwOworKworKyAgICAgIGxlbiA9 IHRtcCAtIHN0YXJ0OworKyAgICAgIHJlZ25hbWUgPSBhbGxvY2EgKGxlbiArIDIpOworKworKyAg ICAgIG9mZnNldCA9IDA7CisrICAgICAgaWYgKGlzZGlnaXQgKCpzdGFydCkpCisrCXsKKysJICAv KiBJZiB3ZSBhcmUgZGVhbGluZyB3aXRoIGEgcmVnaXN0ZXIgd2hvc2UgbmFtZSBiZWdpbnMgd2l0 aCBhCisrCSAgICAgZGlnaXQsIGl0IG1lYW5zIHdlIHNob3VsZCBwcmVmaXggdGhlIG5hbWUgd2l0 aCB0aGUgbGV0dGVyCisrCSAgICAgYHInLCBiZWNhdXNlIEdEQiBleHBlY3RzIHRoaXMgbmFtZSBw YXR0ZXJuLiAgT3RoZXJ3aXNlIChlLmcuLAorKwkgICAgIHdlIGFyZSBkZWFsaW5nIHdpdGggdGhl IHJlZ2lzdGVyIGBmcCcpLCB3ZSBkb24ndCBuZWVkIHRvCisrCSAgICAgYWRkIHN1Y2ggYSBwcmVm aXguICAqLworKwkgIHJlZ25hbWVbMF0gPSAncic7CisrCSAgb2Zmc2V0ID0gMTsKKysJfQogKwot KyAgICAgICAgICgxKSBBZnRlciBmb3JrL3Zmb3JrL2Nsb25lIHRoZSBuZXcgdGFzayBubyBsb25n ZXIgaW5oZXJpdHMgdGhlIGRlYnVnCi0rCSByZWdpc3RlcnMuICBJdCBoYXMgdGhlbSB6ZXJvZWQg aW5zdGVhZC4gIEVpdGhlciBjYXNlIGlzIE9LIGZvciBHREIgYXMKLSsJIEdEQiBhbHJlYWR5IHJl Z2lzdGVycyBhIGZpeCB1cCBieSBsaW51eF9uYXRfc2V0X25ld190aHJlYWQuCisrICAgICAgc3Ry bmNweSAocmVnbmFtZSArIG9mZnNldCwgc3RhcnQsIGxlbik7CisrICAgICAgbGVuICs9IG9mZnNl dDsKKysgICAgICByZWduYW1lW2xlbl0gPSAnXDAnOwogKwotKwkgKDIpIElmIHlvdSBlbmFibGUg YSBicmVha3BvaW50IGJ5IHRoZSBDT05UUk9MIGJpdHMgeW91IGhhdmUgYWxyZWFkeQotKwkgd3Jp dHRlbiBpdHMgQUREUkVTUy4gIE90aGVyd2lzZSBMaW51eCBrZXJuZWwgd2lsbCByZXBvcnQgRUlO VkFMLgotKwkgRm9yIHRoaXMgY2FzZSB0aGUgd29ya2Fyb3VuZCBoZXJlIGVuc3VyZXMgdGhhdCBk dXJpbmcgcmVzZXR0aW5nCi0rCSAoZGV0YWNoaW5nKSB3YXRjaHBvaW50cyBmb3IgYSBmb3JrLWVk IGNoaWxkIHdlIGNhbiBzZXQgQ09OVFJPTAotKwkgYXJiaXRyYXJpbHkgYXMgdGhlIGFkZHJlc3Nl cyBnZXQgcHJlLXNldCBoZXJlIGp1c3QgdG8gYmUgc3VyZS4KKysgICAgICBpZiAodXNlcl9yZWdf bWFwX25hbWVfdG9fcmVnbnVtIChnZGJhcmNoLCByZWduYW1lLCBsZW4pID09IC0xKQorKwllcnJv ciAoXygiSW52YWxpZCByZWdpc3RlciBuYW1lIGAlcycgb24gZXhwcmVzc2lvbiBgJXMnLiIpLAor KwkgICAgICAgcmVnbmFtZSwgcC0+c2F2ZWRfYXJnKTsKICsKLSsJIFRoZSBzZWNvbmQgaXNzdWUg aXMgaG9wZWZ1bGx5IGdvaW5nIHRvIGJlIGZpeGVkIGluIExpbnV4IGtlcm5lbDoKLSsJIGh0dHBz Oi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NjYwMjA0ICAqLworKyAgICAg ICsrdG1wOworKyAgICAgIHRtcCA9IHNraXBfc3BhY2VzX2NvbnN0ICh0bXApOworKyAgICAgIGlm ICgqdG1wKysgIT0gJyMnKQorKwlyZXR1cm4gMDsKICsKLSsgICAgICBpZiAoIWRyX21pcnJvci0+ YWRkcl9wcmVzZXQpCisrICAgICAgaWYgKCp0bXAgPT0gJy0nKQogKwl7Ci0rCSAgZHJfbWlycm9y LT5hZGRyX3ByZXNldCA9IDE7Ci0rCi0rCSAgZm9yIChpID0gMDsgaSA8IERSX0xBU1RBRERSIC0g RFJfRklSU1RBRERSOyBpKyspCi0rCSAgICBhbWQ2NF9saW51eF9kcl9zZXRfYWRkciAoaSwgZHJf bWlycm9yLT5hZGRyW2ldKTsKKysJICArK3RtcDsKKysJICBnb3RfbWludXMgPSAxOwogKwl9Ci0r ICAgIH0KICsKLSsgIGxpbnV4X25hdF9pdGVyYXRlX3dhdGNocG9pbnRfbHdwcyAoYW1kNjRfbGlu dXhfZHJfc2V0X2NvbnRyb2xfY2FsbGJhY2ssCi0rCQkJCSAgICAgJmNvbnRyb2wpOwotK30KKysg ICAgICBkaXNwbGFjZW1lbnQgPSBzdHJ0b2wgKHRtcCwgKGNoYXIgKiopICZ0bXAsIDEwKTsKICsK LSsvKiBIZWxwZXIgZm9yIGFtZDY0X2xpbnV4X2RyX3NldF9hZGRyLiAgKi8KKysgICAgICAvKiBT a2lwcGluZyBsYXN0IGBdJy4gICovCisrICAgICAgaWYgKCp0bXArKyAhPSAnXScpCisrCXJldHVy biAwOwogKwotK3N0cnVjdCBhbWQ2NF9saW51eF9kcl9zZXRfYWRkcl9kYXRhCi0rICB7Ci0rICAg IGludCByZWdudW07Ci0rICAgIENPUkVfQUREUiBhZGRyOwotKyAgfTsKKysgICAgICAvKiBUaGUg ZGlzcGxhY2VtZW50LiAgKi8KKysgICAgICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfTE9ORyk7 CisrICAgICAgd3JpdGVfZXhwX2VsdF90eXBlIChidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWls dGluX2xvbmcpOworKyAgICAgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAoZGlzcGxhY2VtZW50KTsK KysgICAgICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfTE9ORyk7CisrICAgICAgaWYgKGdvdF9t aW51cykKKysJd3JpdGVfZXhwX2VsdF9vcGNvZGUgKFVOT1BfTkVHKTsKICsKLStzdGF0aWMgdm9p ZAotK2FtZDY0X2xpbnV4X2RyX3NldF9hZGRyX2NhbGxiYWNrIChpbnQgdGlkLCB2b2lkICpkYXRh cF92b2lkcCkKLSt7Ci0rICBjb25zdCBzdHJ1Y3QgYW1kNjRfbGludXhfZHJfc2V0X2FkZHJfZGF0 YSAqZGF0YXAgPSBkYXRhcF92b2lkcDsKLSAKLS0gIGFtZDY0X2xpbnV4X2RyW0RSX0NPTlRST0xd ID0gY29udHJvbDsKLS0gIEFMTF9MV1BTIChscCwgcHRpZCkKLS0gICAgYW1kNjRfbGludXhfZHJf c2V0IChwdGlkLCBEUl9DT05UUk9MLCBjb250cm9sKTsKLSsgIGFtZDY0X2xpbnV4X2RyX3NldCAo dGlkLCBEUl9GSVJTVEFERFIgKyBkYXRhcC0+cmVnbnVtLCBkYXRhcC0+YWRkcik7Ci0gfQotIAot LS8qIFNldCBhZGRyZXNzIFJFR05VTSAoemVybyBiYXNlZCkgdG8gQUREUiBpbiBhbGwgTFdQcyBv ZiBMV1BfTElTVC4gICovCi0rLyogU2V0IGFkZHJlc3MgUkVHTlVNICh6ZXJvIGJhc2VkKSB0byBB RERSIGluIGFsbCBMV1BzIG9mIENVUlJFTlRfSU5GRVJJT1IuCi0rICAgKi8KLSAKLSBzdGF0aWMg dm9pZAotIGFtZDY0X2xpbnV4X2RyX3NldF9hZGRyIChpbnQgcmVnbnVtLCBDT1JFX0FERFIgYWRk cikKLSB7Ci0tICBzdHJ1Y3QgbHdwX2luZm8gKmxwOwotLSAgcHRpZF90IHB0aWQ7Ci0rICBzdHJ1 Y3QgYW1kNjRfbGludXhfZHJfc2V0X2FkZHJfZGF0YSBkYXRhOwotIAotICAgZ2RiX2Fzc2VydCAo cmVnbnVtID49IDAgJiYgcmVnbnVtIDw9IERSX0xBU1RBRERSIC0gRFJfRklSU1RBRERSKTsKLSAK LS0gIGFtZDY0X2xpbnV4X2RyW0RSX0ZJUlNUQUREUiArIHJlZ251bV0gPSBhZGRyOwotLSAgQUxM X0xXUFMgKGxwLCBwdGlkKQotLSAgICBhbWQ2NF9saW51eF9kcl9zZXQgKHB0aWQsIERSX0ZJUlNU QUREUiArIHJlZ251bSwgYWRkcik7Ci0rICBkYXRhLnJlZ251bSA9IHJlZ251bTsKLSsgIGRhdGEu YWRkciA9IGFkZHI7Ci0rICBsaW51eF9uYXRfaXRlcmF0ZV93YXRjaHBvaW50X2x3cHMgKGFtZDY0 X2xpbnV4X2RyX3NldF9hZGRyX2NhbGxiYWNrLCAmZGF0YSk7Ci0gfQotIAotLS8qIFNldCBhZGRy ZXNzIFJFR05VTSAoemVybyBiYXNlZCkgdG8gemVybyBpbiBhbGwgTFdQcyBvZiBMV1BfTElTVC4g ICovCi0rLyogU2V0IGFkZHJlc3MgUkVHTlVNICh6ZXJvIGJhc2VkKSB0byB6ZXJvIGluIGFsbCBM V1BzIG9mIENVUlJFTlRfSU5GRVJJT1IuCi0rICAgKi8KLSAKLSBzdGF0aWMgdm9pZAotIGFtZDY0 X2xpbnV4X2RyX3Jlc2V0X2FkZHIgKGludCByZWdudW0pCi1AQCAtMzU0LDM3ICs0MDIsNTQgQEAg YW1kNjRfbGludXhfZHJfcmVzZXRfYWRkciAoaW50IHJlZ251bSkKLSBzdGF0aWMgdW5zaWduZWQg bG9uZwotIGFtZDY0X2xpbnV4X2RyX2dldF9zdGF0dXMgKHZvaWQpCi0gewotLSAgcmV0dXJuIGFt ZDY0X2xpbnV4X2RyX2dldCAoaW5mZXJpb3JfcHRpZCwgRFJfU1RBVFVTKTsKLSsgIGludCB0aWQ7 CisrICAgICAgLyogVGhlIHJlZ2lzdGVyIG5hbWUuICAqLworKyAgICAgIHdyaXRlX2V4cF9lbHRf b3Bjb2RlIChPUF9SRUdJU1RFUik7CisrICAgICAgc3RyLnB0ciA9IHJlZ25hbWU7CisrICAgICAg c3RyLmxlbmd0aCA9IGxlbjsKKysgICAgICB3cml0ZV9leHBfc3RyaW5nIChzdHIpOworKyAgICAg IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9SRUdJU1RFUik7CiArCi0rICB0aWQgPSBUSURHRVQg KGluZmVyaW9yX3B0aWQpOwotKyAgaWYgKHRpZCA9PSAwKQotKyAgICB0aWQgPSBQSURHRVQgKGlu ZmVyaW9yX3B0aWQpOworKyAgICAgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChCSU5PUF9BREQpOwog KwotKyAgcmV0dXJuIGFtZDY0X2xpbnV4X2RyX2dldCAodGlkLCBEUl9TVEFUVVMpOwotIH0KLSAK LS0vKiBVbnNldCBNQVNLIGJpdHMgaW4gRFJfU1RBVFVTIGluIGFsbCBMV1BzIG9mIExXUF9MSVNU LiAgKi8KLSsvKiBIZWxwZXIgZm9yIGFtZDY0X2xpbnV4X2RyX3Vuc2V0X3N0YXR1cy4gICovCi0g Ci0gc3RhdGljIHZvaWQKLS1hbWQ2NF9saW51eF9kcl91bnNldF9zdGF0dXMgKHVuc2lnbmVkIGxv bmcgbWFzaykKLSthbWQ2NF9saW51eF9kcl91bnNldF9zdGF0dXNfY2FsbGJhY2sgKGludCB0aWQs IHZvaWQgKm1hc2tfdm9pZHApCi0gewotLSAgc3RydWN0IGx3cF9pbmZvICpscDsKLS0gIHB0aWRf dCBwdGlkOwotLQotLSAgQUxMX0xXUFMgKGxwLCBwdGlkKQotLSAgICB7Ci0tICAgICAgdW5zaWdu ZWQgbG9uZyB2YWx1ZTsKLSsgIHVuc2lnbmVkIGxvbmcgbWFzayA9ICoodW5zaWduZWQgbG9uZyAq KSBtYXNrX3ZvaWRwOwotKyAgdW5zaWduZWQgbG9uZyB2YWx1ZTsKLSAgICAgICAKLS0gICAgICB2 YWx1ZSA9IGFtZDY0X2xpbnV4X2RyX2dldCAocHRpZCwgRFJfU1RBVFVTKTsKLS0gICAgICB2YWx1 ZSAmPSB+bWFzazsKLS0gICAgICBhbWQ2NF9saW51eF9kcl9zZXQgKHB0aWQsIERSX1NUQVRVUywg dmFsdWUpOwotLSAgICB9Ci0rICB2YWx1ZSA9IGFtZDY0X2xpbnV4X2RyX2dldCAodGlkLCBEUl9T VEFUVVMpOwotKyAgdmFsdWUgJj0gfm1hc2s7Ci0rICBhbWQ2NF9saW51eF9kcl9zZXQgKHRpZCwg RFJfU1RBVFVTLCB2YWx1ZSk7Ci0gfQotIAotKy8qIFVuc2V0IE1BU0sgYml0cyBpbiBEUl9TVEFU VVMgaW4gYWxsIExXUHMgb2YgQ1VSUkVOVF9JTkZFUklPUi4gICovCisrICAgICAgLyogQ2FzdGlu ZyB0byB0aGUgZXhwZWN0ZWQgdHlwZS4gICovCisrICAgICAgd3JpdGVfZXhwX2VsdF9vcGNvZGUg KFVOT1BfQ0FTVCk7CisrICAgICAgd3JpdGVfZXhwX2VsdF90eXBlIChsb29rdXBfcG9pbnRlcl90 eXBlIChwLT5hcmdfdHlwZSkpOworKyAgICAgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChVTk9QX0NB U1QpOwogKwotK3N0YXRpYyB2b2lkCi0rYW1kNjRfbGludXhfZHJfdW5zZXRfc3RhdHVzICh1bnNp Z25lZCBsb25nIG1hc2spCi0rewotKyAgbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3Bz IChhbWQ2NF9saW51eF9kcl91bnNldF9zdGF0dXNfY2FsbGJhY2ssCi0rCQkJCSAgICAgJm1hc2sp OwotK30KLSAKLSBzdGF0aWMgdm9pZAotIGFtZDY0X2xpbnV4X25ld190aHJlYWQgKHB0aWRfdCBw dGlkKQotIHsKLS0gIGludCBpOwotKyAgc3RydWN0IGkzODZfZHJfbWlycm9yICpkcl9taXJyb3Ig PSBpMzg2X2RyX21pcnJvcl9nZXQgKCk7Ci0rICBpbnQgaSwgdGlkOworKyAgICAgIHdyaXRlX2V4 cF9lbHRfb3Bjb2RlIChVTk9QX0lORCk7CiArCi0rICAvKiBWZXJpZnkgRFJfTUlSUk9SIGlzIHZh bGlkLiAgKi8KLSsgIGdkYl9hc3NlcnQgKFBJREdFVCAocHRpZCkgPT0gUElER0VUIChpbmZlcmlv cl9wdGlkKSk7CisrICAgICAgcC0+YXJnID0gdG1wOworKyAgICB9CisrICBlbHNlCisrICAgIHJl dHVybiAwOwogKwotKyAgdGlkID0gVElER0VUIChwdGlkKTsKLSsgIGlmICh0aWQgPT0gMCkKLSsg ICAgdGlkID0gUElER0VUIChwdGlkKTsKLSAKLS0gIGZvciAoaSA9IERSX0ZJUlNUQUREUjsgaSA8 PSBEUl9MQVNUQUREUjsgaSsrKQotLSAgICBhbWQ2NF9saW51eF9kcl9zZXQgKHB0aWQsIGksIGFt ZDY0X2xpbnV4X2RyW2ldKTsKLSsgIGZvciAoaSA9IDA7IGkgPCBEUl9MQVNUQUREUiAtIERSX0ZJ UlNUQUREUjsgaSsrKQotKyAgICBhbWQ2NF9saW51eF9kcl9zZXQgKHRpZCwgRFJfRklSU1RBRERS ICsgaSwgZHJfbWlycm9yLT5hZGRyW2ldKTsKLSAKLS0gIGFtZDY0X2xpbnV4X2RyX3NldCAocHRp ZCwgRFJfQ09OVFJPTCwgYW1kNjRfbGludXhfZHJbRFJfQ09OVFJPTF0pOwotKyAgYW1kNjRfbGlu dXhfZHJfc2V0ICh0aWQsIERSX0NPTlRST0wsIGRyX21pcnJvci0+Y29udHJvbCk7CisrICByZXR1 cm4gMTsKKyt9CisrCisgc3RhdGljIHZvaWQKKyBhcm1fbGludXhfaW5pdF9hYmkgKHN0cnVjdCBn ZGJhcmNoX2luZm8gaW5mbywKKyAJCSAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKK0BAIC0x MTUzLDYgKzEyNzUsMTUgQEAgYXJtX2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZv IGluZm8sCisgCQkJCQkgICBzaW1wbGVfZGlzcGxhY2VkX3N0ZXBfZnJlZV9jbG9zdXJlKTsKKyAg IHNldF9nZGJhcmNoX2Rpc3BsYWNlZF9zdGVwX2xvY2F0aW9uIChnZGJhcmNoLCBkaXNwbGFjZWRf c3RlcF9hdF9lbnRyeV9wb2ludCk7CisgCisrICAvKiBTeXN0ZW1UYXAgZnVuY3Rpb25zLiAgKi8K KysgIHNldF9nZGJhcmNoX3N0YXBfaW50ZWdlcl9wcmVmaXggKGdkYmFyY2gsICIjIik7CisrICBz ZXRfZ2RiYXJjaF9zdGFwX3JlZ2lzdGVyX3ByZWZpeCAoZ2RiYXJjaCwgInIiKTsKKysgIHNldF9n ZGJhcmNoX3N0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fcHJlZml4IChnZGJhcmNoLCAiWyIpOwor KyAgc2V0X2dkYmFyY2hfc3RhcF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9zdWZpeCAoZ2RiYXJjaCwg Il0iKTsKKysgIHNldF9nZGJhcmNoX3N0YXBfZ2RiX3JlZ2lzdGVyX3ByZWZpeCAoZ2RiYXJjaCwg InIiKTsKKysgIHNldF9nZGJhcmNoX3N0YXBfaXNfc2luZ2xlX29wZXJhbmQgKGdkYmFyY2gsIGFy bV9zdGFwX2lzX3NpbmdsZV9vcGVyYW5kKTsKKysgIHNldF9nZGJhcmNoX3N0YXBfcGFyc2Vfc3Bl Y2lhbF90b2tlbiAoZ2RiYXJjaCwKKysJCQkJCWFybV9zdGFwX3BhcnNlX3NwZWNpYWxfdG9rZW4p OworIAorICAgdGRlcC0+c3lzY2FsbF9uZXh0X3BjID0gYXJtX2xpbnV4X3N5c2NhbGxfbmV4dF9w YzsKICB9Ci0gDAorZGlmZiAtLWdpdCBhL2dkYi9heC1nZGIuYyBiL2dkYi9heC1nZGIuYworaW5k ZXggZTU5YzczNS4uZTFiMGY4NSAxMDA2NDQKKy0tLSBhL2dkYi9heC1nZGIuYworKysrIGIvZ2Ri L2F4LWdkYi5jCitAQCAtOTUsOCArOTUsNiBAQCBzdGF0aWMgdm9pZCBnZW5faW50X2xpdGVyYWwg KHN0cnVjdCBhZ2VudF9leHByICpheCwKKyAJCQkgICAgIHN0cnVjdCBheHNfdmFsdWUgKnZhbHVl LAorIAkJCSAgICAgTE9OR0VTVCBrLCBzdHJ1Y3QgdHlwZSAqdHlwZSk7CiAgCi1JbmRleDogZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvYXgtZ2RiLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUw LjIwMTEwNzIyLm9yaWcvZ2RiL2F4LWdkYi5jCTIwMTEtMDYtMTcgMjI6NDY6NDcuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvYXgtZ2RiLmMJMjAxMS0wNy0yOSAy Mjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0yMDAxLDcgKzIwMDEsOCBAQCBnZW5fZXhwciAo c3RydWN0IGV4cHJlc3Npb24gKmV4cCwgdW5pb24KKy0KKy1zdGF0aWMgdm9pZCByZXF1aXJlX3J2 YWx1ZSAoc3RydWN0IGFnZW50X2V4cHIgKmF4LCBzdHJ1Y3QgYXhzX3ZhbHVlICp2YWx1ZSk7Cisg c3RhdGljIHZvaWQgZ2VuX3VzdWFsX3VuYXJ5IChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBzdHJ1 Y3QgYWdlbnRfZXhwciAqYXgsCisgCQkJICAgICBzdHJ1Y3QgYXhzX3ZhbHVlICp2YWx1ZSk7Cisg c3RhdGljIGludCB0eXBlX3dpZGVyX3RoYW4gKHN0cnVjdCB0eXBlICp0eXBlMSwgc3RydWN0IHR5 cGUgKnR5cGUyKTsKK0BAIC0xNTcsOCArMTU1LDYgQEAgc3RhdGljIHZvaWQgZ2VuX3JlcGVhdCAo c3RydWN0IGV4cHJlc3Npb24gKmV4cCwgdW5pb24gZXhwX2VsZW1lbnQgKipwYywKKyBzdGF0aWMg dm9pZCBnZW5fc2l6ZW9mIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCB1bmlvbiBleHBfZWxlbWVu dCAqKnBjLAorIAkJCXN0cnVjdCBhZ2VudF9leHByICpheCwgc3RydWN0IGF4c192YWx1ZSAqdmFs dWUsCisgCQkJc3RydWN0IHR5cGUgKnNpemVfdHlwZSk7Cistc3RhdGljIHZvaWQgZ2VuX2V4cHIg KHN0cnVjdCBleHByZXNzaW9uICpleHAsIHVuaW9uIGV4cF9lbGVtZW50ICoqcGMsCistCQkgICAg ICBzdHJ1Y3QgYWdlbnRfZXhwciAqYXgsIHN0cnVjdCBheHNfdmFsdWUgKnZhbHVlKTsKKyBzdGF0 aWMgdm9pZCBnZW5fZXhwcl9iaW5vcF9yZXN0IChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAorIAkJ CQkgZW51bSBleHBfb3Bjb2RlIG9wLCB1bmlvbiBleHBfZWxlbWVudCAqKnBjLAorIAkJCQkgc3Ry dWN0IGFnZW50X2V4cHIgKmF4LAorQEAgLTc4OSw3ICs3ODUsNyBAQCBnZW5faW50X2xpdGVyYWwg KHN0cnVjdCBhZ2VudF9leHByICpheCwgc3RydWN0IGF4c192YWx1ZSAqdmFsdWUsIExPTkdFU1Qg aywKKyAvKiBUYWtlIHdoYXQncyBvbiB0aGUgdG9wIG9mIHRoZSBzdGFjayAoYXMgZGVzY3JpYmVk IGJ5IFZBTFVFKSwgYW5kCisgICAgdHJ5IHRvIG1ha2UgYW4gcnZhbHVlIG91dCBvZiBpdC4gIFNp Z25hbCBhbiBlcnJvciBpZiB3ZSBjYW4ndCBkbworICAgIHRoYXQuICAqLworLXN0YXRpYyB2b2lk Cisrdm9pZAorIHJlcXVpcmVfcnZhbHVlIChzdHJ1Y3QgYWdlbnRfZXhwciAqYXgsIHN0cnVjdCBh eHNfdmFsdWUgKnZhbHVlKQorIHsKKyAgIC8qIE9ubHkgZGVhbCB3aXRoIHNjYWxhcnMsIHN0cnVj dHMgYW5kIHN1Y2ggbWF5IGJlIHRvbyBsYXJnZQorQEAgLTE4MDcsNyArMTgwMyw3IEBAIGdlbl9z aXplb2YgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIHVuaW9uIGV4cF9lbGVtZW50ICoqcGMsCisg LyogWFhYOiBpMThuICovCisgLyogQSBnZW5fZXhwciBmdW5jdGlvbiB3cml0dGVuIGJ5IGEgR2Vu LVgnZXIgZ3V5LgorICAgIEFwcGVuZCBjb2RlIGZvciB0aGUgc3ViZXhwcmVzc2lvbiBvZiBFWFBS IHN0YXJ0aW5nIGF0ICpQT1NfUCB0byBBWC4gICovCistc3RhdGljIHZvaWQKKyt2b2lkCisgZ2Vu X2V4cHIgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIHVuaW9uIGV4cF9lbGVtZW50ICoqcGMsCisg CSAgc3RydWN0IGFnZW50X2V4cHIgKmF4LCBzdHJ1Y3QgYXhzX3ZhbHVlICp2YWx1ZSkKKyB7CitA QCAtMjA0Miw3ICsyMDM4LDggQEAgZ2VuX2V4cHIgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIHVu aW9uIGV4cF9lbGVtZW50ICoqcGMsCiAgCiAgICAgIGNhc2UgT1BfSU5URVJOQUxWQVI6CiAgICAg ICAgewpAQCAtMzM4LDcgKzM3Nyw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9h eC1nZGIuYwogIAlzdHJ1Y3QgdHJhY2Vfc3RhdGVfdmFyaWFibGUgKnRzdjsKICAKICAJKCpwYykg Kz0gMzsKLUBAIC0yMDE1LDcgKzIwMTYsNyBAQCBnZW5fZXhwciAoc3RydWN0IGV4cHJlc3Npb24g KmV4cCwgdW5pb24KK0BAIC0yMDU2LDcgKzIwNTMsNyBAQCBnZW5fZXhwciAoc3RydWN0IGV4cHJl c3Npb24gKmV4cCwgdW5pb24gZXhwX2VsZW1lbnQgKipwYywKICAJICAgIHZhbHVlLT5raW5kID0g YXhzX3J2YWx1ZTsKICAJICAgIHZhbHVlLT50eXBlID0gYnVpbHRpbl90eXBlIChleHAtPmdkYmFy Y2gpLT5idWlsdGluX2xvbmdfbG9uZzsKICAJICB9CkBAIC0zNDcsMTEgKzM4NiwyNyBAQCBJbmRl eDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvYXgtZ2RiLmMKICAJICBlcnJvciAoXygiJCVzIGlz IG5vdCBhIHRyYWNlIHN0YXRlIHZhcmlhYmxlOyBHREIgYWdlbnQgIgogIAkJICAgImV4cHJlc3Np b25zIGNhbm5vdCB1c2UgY29udmVuaWVuY2UgdmFyaWFibGVzLiIpLCBuYW1lKTsKICAgICAgICB9 Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvYmxvY2suYwotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvYmxvY2suYwkyMDExLTAxLTAxIDE2OjMyOjU3 LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2Jsb2NrLmMJMjAx MS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0zMjIsMyArMzIyLDIxIEBAIGFs bG9jYXRlX2Jsb2NrIChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaykKK2RpZmYgLS1naXQgYS9nZGIv YXgtZ2RiLmggYi9nZGIvYXgtZ2RiLmgKK2luZGV4IDk1MWVjMWYuLjZjZGNkYTIgMTAwNjQ0Cist LS0gYS9nZGIvYXgtZ2RiLmgKKysrKyBiL2dkYi9heC1nZGIuaAorQEAgLTExMSw2ICsxMTEsMTEg QEAgZXh0ZXJuIHN0cnVjdCBhZ2VudF9leHByICpnZW5fdHJhY2VfZm9yX3JldHVybl9hZGRyZXNz IChDT1JFX0FERFIsCisgCisgZXh0ZXJuIHN0cnVjdCBhZ2VudF9leHByICpnZW5fZXZhbF9mb3Jf ZXhwciAoQ09SRV9BRERSLCBzdHJ1Y3QgZXhwcmVzc2lvbiAqKTsKKyAKKytleHRlcm4gdm9pZCBn ZW5fZXhwciAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgdW5pb24gZXhwX2VsZW1lbnQgKipwYywK KysJCSAgICAgIHN0cnVjdCBhZ2VudF9leHByICpheCwgc3RydWN0IGF4c192YWx1ZSAqdmFsdWUp OworKworK2V4dGVybiB2b2lkIHJlcXVpcmVfcnZhbHVlIChzdHJ1Y3QgYWdlbnRfZXhwciAqYXgs IHN0cnVjdCBheHNfdmFsdWUgKnZhbHVlKTsKKysKKyBleHRlcm4gaW50IHRyYWNlX2tsdWRnZTsK KyBleHRlcm4gaW50IHRyYWNlX3N0cmluZ19rbHVkZ2U7CisgCitkaWZmIC0tZ2l0IGEvZ2RiL2Js b2NrLmMgYi9nZGIvYmxvY2suYworaW5kZXggMWZhMzY4OC4uNzY0NTdiYSAxMDA2NDQKKy0tLSBh L2dkYi9ibG9jay5jCisrKysgYi9nZGIvYmxvY2suYworQEAgLTM3MCwzICszNzAsMjEgQEAgYWxs b2NhdGVfYmxvY2sgKHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrKQogIAogICAgcmV0dXJuIGJsOwog IH0KQEAgLTM3MywyMSArNDI4LDIxIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9i bG9jay5jCiArCiArICByZXR1cm4gU1lNQk9MX1NZTVRBQiAoZnVuYyktPm9iamZpbGU7CiArfQot SW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2Jsb2NrLmgKLT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2Jsb2NrLmgJMjAxMS0wNC0wNCAxNjoxMDoxMi4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9ibG9jay5oCTIwMTEt MDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCi1AQCAtMTYzLDQgKzE2Myw2IEBAIGV4dGVy biBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrX2dsb2JhbF8KK2RpZmYgLS1naXQgYS9nZGIvYmxv Y2suaCBiL2dkYi9ibG9jay5oCitpbmRleCA2M2IxOGE2Li44MDhhMTlhIDEwMDY0NAorLS0tIGEv Z2RiL2Jsb2NrLmgKKysrKyBiL2dkYi9ibG9jay5oCitAQCAtMTY4LDQgKzE2OCw2IEBAIGV4dGVy biBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrX2dsb2JhbF9ibG9jayAoY29uc3Qgc3RydWN0IGJs b2NrICpibG9jayk7CiAgCiAgZXh0ZXJuIHN0cnVjdCBibG9jayAqYWxsb2NhdGVfYmxvY2sgKHN0 cnVjdCBvYnN0YWNrICpvYnN0YWNrKTsKICAKICtleHRlcm4gc3RydWN0IG9iamZpbGUgKmJsb2Nr X29iamZpbGUgKGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2spOwogKwogICNlbmRpZiAvKiBCTE9D S19IICovCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvYnJlYWtwb2ludC5jCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9icmVha3BvaW50LmMJMjAx MS0wNy0wNSAwNjozNDo1NS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi9icmVha3BvaW50LmMJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKK2Rp ZmYgLS1naXQgYS9nZGIvYnJlYWtwb2ludC5jIGIvZ2RiL2JyZWFrcG9pbnQuYworaW5kZXggMTcy ZTQxOS4uNzQzMjRjNCAxMDA2NDQKKy0tLSBhL2dkYi9icmVha3BvaW50LmMKKysrKyBiL2dkYi9i cmVha3BvaW50LmMKIEBAIC02Myw2ICs2Myw4IEBACiAgI2luY2x1ZGUgImppdC5oIgogICNpbmNs dWRlICJ4bWwtc3lzY2FsbC5oIgpAQCAtMzk2LDE5ICs0NTEsMjMgQEAgSW5kZXg6IGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL2JyZWFrcG9pbnQuYwogKyNpbmNsdWRlICJzdGFwLXByb2JlLmgiCiAg I2luY2x1ZGUgImNsaS9jbGktdXRpbHMuaCIKICAjaW5jbHVkZSAiY29udGludWF0aW9ucy5oIgor ICNpbmNsdWRlICJzdGFjay5oIgorQEAgLTEyMjUsOSArMTIyNywxMCBAQCBpc193YXRjaHBvaW50 IChjb25zdCBzdHJ1Y3QgYnJlYWtwb2ludCAqYnB0KQorIHN0YXRpYyBpbnQKKyB3YXRjaHBvaW50 X2luX3RocmVhZF9zY29wZSAoc3RydWN0IHdhdGNocG9pbnQgKmIpCisgeworLSAgcmV0dXJuIChw dGlkX2VxdWFsIChiLT53YXRjaHBvaW50X3RocmVhZCwgbnVsbF9wdGlkKQorLQkgIHx8IChwdGlk X2VxdWFsIChpbmZlcmlvcl9wdGlkLCBiLT53YXRjaHBvaW50X3RocmVhZCkKKy0JICAgICAgJiYg IWlzX2V4ZWN1dGluZyAoaW5mZXJpb3JfcHRpZCkpKTsKKysgIHJldHVybiAoYi0+YmFzZS5wc3Bh Y2UgPT0gY3VycmVudF9wcm9ncmFtX3NwYWNlCisrCSAgJiYgKHB0aWRfZXF1YWwgKGItPndhdGNo cG9pbnRfdGhyZWFkLCBudWxsX3B0aWQpCisrCSAgICAgIHx8IChwdGlkX2VxdWFsIChpbmZlcmlv cl9wdGlkLCBiLT53YXRjaHBvaW50X3RocmVhZCkKKysJCSAgJiYgIWlzX2V4ZWN1dGluZyAoaW5m ZXJpb3JfcHRpZCkpKSk7CisgfQogIAotQEAgLTEyNDgsNiArMTI1MCw5IEBAIHVwZGF0ZV93YXRj aHBvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKLSAgIGlmICghd2F0Y2hwb2ludF9pbl90aHJl YWRfc2NvcGUgKGIpKQotICAgICByZXR1cm47Ci0gCi0rICBpZiAoYi0+cHNwYWNlICE9IGN1cnJl bnRfcHJvZ3JhbV9zcGFjZSkKLSsgICAgcmV0dXJuOwotKwotICAgaWYgKGItPmRpc3Bvc2l0aW9u ID09IGRpc3BfZGVsX2F0X25leHRfc3RvcCkKLSAgICAgcmV0dXJuOwotICAKLUBAIC0xNTMyLDYg KzE1MzcsNDAgQEAgc2hvdWxkX2JlX2luc2VydGVkIChzdHJ1Y3QgYnBfbG9jYXRpb24gKgotICAg cmV0dXJuIDE7CisgLyogU2V0IHdhdGNocG9pbnQgQiB0byBkaXNwX2RlbF9hdF9uZXh0X3N0b3As IGV2ZW4gaW5jbHVkaW5nIGl0cyBwb3NzaWJsZQorQEAgLTE2MzQsNiArMTYzNyw0MCBAQCB1bmR1 cGxpY2F0ZWRfc2hvdWxkX2JlX2luc2VydGVkIChzdHJ1Y3QgYnBfbG9jYXRpb24gKmJsKQorICAg cmV0dXJuIHJlc3VsdDsKICB9CiAgCiArLyogU2VlIHRoZSBjb21tZW50IGluIGJyZWFrcG9pbnQu aC4gICovCkBAIC00NDgsNjYgKzUwNywxNiBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvYnJlYWtwb2ludC5jCiAgLyogSW5zZXJ0IGEgbG93LWxldmVsICJicmVha3BvaW50IiBvZiBz b21lIHR5cGUuICBCTCBpcyB0aGUgYnJlYWtwb2ludAogICAgIGxvY2F0aW9uLiAgQW55IGVycm9y IG1lc3NhZ2VzIGFyZSBwcmludGVkIHRvIFRNUF9FUlJPUl9TVFJFQU07IGFuZAogICAgIERJU0FC TEVEX0JSRUFLUywgYW5kIEhXX0JSRUFLUE9JTlRfRVJST1IgYXJlIHVzZWQgdG8gcmVwb3J0IHBy b2JsZW1zLgotQEAgLTE2MjgsNiArMTY2Nyw4IEBAIGluc2VydF9icF9sb2NhdGlvbiAoc3RydWN0 IGJwX2xvY2F0aW9uICoKLSAJICBlbHNlCi0gCSAgICB2YWwgPSB0YXJnZXRfaW5zZXJ0X2JyZWFr cG9pbnQgKGJsLT5nZGJhcmNoLAotIAkJCQkJICAgICZibC0+dGFyZ2V0X2luZm8pOworQEAgLTE3 MjcsNiArMTc2NCw4IEBAIGluc2VydF9icF9sb2NhdGlvbiAoc3RydWN0IGJwX2xvY2F0aW9uICpi bCwKKyAJICAvKiBObyBvdmVybGF5IGhhbmRsaW5nOiBqdXN0IHNldCB0aGUgYnJlYWtwb2ludC4g ICovCisgCisgCSAgdmFsID0gYmwtPm93bmVyLT5vcHMtPmluc2VydF9sb2NhdGlvbiAoYmwpOwog KwogKwkgIG1vZGlmeV9zZW1hcGhvcmUgKGJsLCAxKTsKICAJfQogICAgICAgIGVsc2UKICAJewot QEAgLTE4ODMsNiArMTkyNCw3IEBAIGluc2VydF9icmVha3BvaW50X2xvY2F0aW9ucyAodm9pZCkK LSAgIGludCB2YWwgPSAwOwotICAgaW50IGRpc2FibGVkX2JyZWFrcyA9IDA7Ci0gICBpbnQgaHdf YnJlYWtwb2ludF9lcnJvciA9IDA7Ci0rICBzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqc2F2ZWRfY3Vy cmVudF9wcm9ncmFtX3NwYWNlID0gY3VycmVudF9wcm9ncmFtX3NwYWNlOwotIAotICAgc3RydWN0 IHVpX2ZpbGUgKnRtcF9lcnJvcl9zdHJlYW0gPSBtZW1fZmlsZW9wZW4gKCk7Ci0gICBzdHJ1Y3Qg Y2xlYW51cCAqY2xlYW51cHMgPSBtYWtlX2NsZWFudXBfdWlfZmlsZV9kZWxldGUgKHRtcF9lcnJv cl9zdHJlYW0pOwotQEAgLTE5MTAsOSArMTk1MiwxMyBAQCBpbnNlcnRfYnJlYWtwb2ludF9sb2Nh dGlvbnMgKHZvaWQpCi0gICAgICAgLyogRm9yIHRhcmdldHMgdGhhdCBzdXBwb3J0IGdsb2JhbCBi cmVha3BvaW50cywgdGhlcmUncyBubyBuZWVkCi0gCSB0byBzZWxlY3QgYW4gaW5mZXJpb3IgdG8g aW5zZXJ0IGJyZWFrcG9pbnQgdG8uICBJbiBmYWN0LCBldmVuCi0gCSBpZiB3ZSBhcmVuJ3QgYXR0 YWNoZWQgdG8gYW55IHByb2Nlc3MgeWV0LCB3ZSBzaG91bGQgc3RpbGwKLS0JIGluc2VydCBicmVh a3BvaW50cy4gICovCi0rCSBpbnNlcnQgYnJlYWtwb2ludHMuCi0rCi0rCSBBbHNvIGluc2VydGlu ZyBicmVha3BvaW50cyBpbnRvIGluYXBwcm9wcmlhdGUgaW5mZXJpb3IgbXVzdCBiZQotKwkgcHJl dmVudGVkLiAgKi8KLSAgICAgICBpZiAoIWdkYmFyY2hfaGFzX2dsb2JhbF9icmVha3BvaW50cyAo dGFyZ2V0X2dkYmFyY2gpCi0tCSAgJiYgcHRpZF9lcXVhbCAoaW5mZXJpb3JfcHRpZCwgbnVsbF9w dGlkKSkKLSsJICAmJiAocHRpZF9lcXVhbCAoaW5mZXJpb3JfcHRpZCwgbnVsbF9wdGlkKQotKwkg ICAgICB8fCBibC0+cHNwYWNlICE9IHNhdmVkX2N1cnJlbnRfcHJvZ3JhbV9zcGFjZSkpCi0gCWNv bnRpbnVlOwotIAotICAgICAgIHZhbCA9IGluc2VydF9icF9sb2NhdGlvbiAoYmwsIHRtcF9lcnJv cl9zdHJlYW0sICZkaXNhYmxlZF9icmVha3MsCi1AQCAtMTkzNiwxMyArMTk4MiwxOSBAQCBpbnNl cnRfYnJlYWtwb2ludF9sb2NhdGlvbnMgKHZvaWQpCi0gCi0gICAgICAgaWYgKGJwdC0+ZGlzcG9z aXRpb24gPT0gZGlzcF9kZWxfYXRfbmV4dF9zdG9wKQotIAljb250aW51ZTsKLS0gICAgICAKLSsK LSAgICAgICBmb3IgKGxvYyA9IGJwdC0+bG9jOyBsb2M7IGxvYyA9IGxvYy0+bmV4dCkKLS0JaWYg KCFsb2MtPmluc2VydGVkICYmIHNob3VsZF9iZV9pbnNlcnRlZCAobG9jKSkKLS0JICB7Ci0tCSAg ICBzb21lX2ZhaWxlZCA9IDE7Ci0tCSAgICBicmVhazsKLS0JICB9Ci0rCXsKLSsJICAvKiBWZXJp ZnkgdGhlIGZpcnN0IGxvb3AgYWJvdmUgcmVhbGx5IHRyaWVkIHRvIGluc2VydCB0aGlzIExPQy4g ICovCi0rCSAgaWYgKCFsb2MtPmluc2VydGVkICYmIHNob3VsZF9iZV9pbnNlcnRlZCAobG9jKQot KwkgICAgICAmJiAoZ2RiYXJjaF9oYXNfZ2xvYmFsX2JyZWFrcG9pbnRzICh0YXJnZXRfZ2RiYXJj aCkKLSsJCSAgfHwgKCFwdGlkX2VxdWFsIChpbmZlcmlvcl9wdGlkLCBudWxsX3B0aWQpCi0rCQkg ICAgICAmJiBsb2MtPnBzcGFjZSA9PSBzYXZlZF9jdXJyZW50X3Byb2dyYW1fc3BhY2UpKSkKLSsJ ICAgIHsKLSsJICAgICAgc29tZV9mYWlsZWQgPSAxOwotKwkgICAgICBicmVhazsKLSsJICAgIH0K LSsJfQotICAgICAgIGlmIChzb21lX2ZhaWxlZCkKLSAJewotIAkgIGZvciAobG9jID0gYnB0LT5s b2M7IGxvYzsgbG9jID0gbG9jLT5uZXh0KQotQEAgLTIxMTAsMTEgKzIxNjIsMjMgQEAgc3RydWN0 IGJyZWFrcG9pbnRfb2JqZmlsZV9kYXRhCitAQCAtMjIxMCwxMSArMjI0OSwyMyBAQCBzdHJ1Y3Qg YnJlYWtwb2ludF9vYmpmaWxlX2RhdGEKICAgIC8qIE1pbmltYWwgc3ltYm9sKHMpIGZvciAibG9u Z2ptcCIsICJzaWdsb25nam1wIiwgZXRjLiAoaWYgYW55KS4gICovCiAgICBzdHJ1Y3QgbWluaW1h bF9zeW1ib2wgKmxvbmdqbXBfbXN5bVtOVU1fTE9OR0pNUF9OQU1FU107CiAgCkBAIC01MzEsNyAr NTQwLDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2JyZWFrcG9pbnQuYwogIH07 CiAgCiAgc3RhdGljIGNvbnN0IHN0cnVjdCBvYmpmaWxlX2RhdGEgKmJyZWFrcG9pbnRfb2JqZmls ZV9rZXk7Ci1AQCAtMjE1MSw2ICsyMjE1LDE1IEBAIGdldF9icmVha3BvaW50X29iamZpbGVfZGF0 YSAoc3RydWN0IG9iamYKK0BAIC0yMjUxLDYgKzIzMDIsMTUgQEAgZ2V0X2JyZWFrcG9pbnRfb2Jq ZmlsZV9kYXRhIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKICB9CiAgCiAgc3RhdGljIHZvaWQK QEAgLTU0Nyw3ICs1NTYsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvYnJlYWtw b2ludC5jCiAgY3JlYXRlX292ZXJsYXlfZXZlbnRfYnJlYWtwb2ludCAodm9pZCkKICB7CiAgICBz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKLUBAIC0yMjI2LDYgKzIyOTksMzYgQEAgY3JlYXRlX2xv bmdqbXBfbWFzdGVyX2JyZWFrcG9pbnQgKHZvaWQpCitAQCAtMjMyNyw2ICsyMzg3LDM3IEBAIGNy ZWF0ZV9sb25nam1wX21hc3Rlcl9icmVha3BvaW50ICh2b2lkKQogIAogICAgICAgIGJwX29iamZp bGVfZGF0YSA9IGdldF9icmVha3BvaW50X29iamZpbGVfZGF0YSAob2JqZmlsZSk7CiAgCkBAIC01 NjEsNyArNTcwLDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2JyZWFrcG9pbnQu YwogKyAgICAgIGlmIChicF9vYmpmaWxlX2RhdGEtPmxvbmdqbXBfcHJvYmVzICE9IE5VTEwpCiAr CXsKICsJICBpbnQgaTsKLSsJICBjb25zdCBzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmU7CisrCSAg c3RydWN0IHN0YXBfcHJvYmUgKnByb2JlOwogKwkgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0g Z2V0X29iamZpbGVfYXJjaCAob2JqZmlsZSk7CiArCiArCSAgZm9yIChpID0gMDsKQEAgLTU3Myw4 ICs1ODIsOSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvYnJlYWtwb2ludC5jCiAr CSAgICAgIHN0cnVjdCBicmVha3BvaW50ICpiOwogKwkgICAgICAgCiArCSAgICAgIGIgPSBjcmVh dGVfaW50ZXJuYWxfYnJlYWtwb2ludCAoZ2RiYXJjaCwgcHJvYmUtPmFkZHJlc3MsCi0rCQkJCQkg ICAgICBicF9sb25nam1wX21hc3Rlcik7Ci0rCSAgICAgIGItPmFkZHJfc3RyaW5nID0geHN0cmR1 cCAoInByb2JlOmxpYmM6bG9uZ2ptcCIpOworKwkJCQkJICAgICAgYnBfbG9uZ2ptcF9tYXN0ZXIs CisrCQkJCQkgICAgICAmaW50ZXJuYWxfYnJlYWtwb2ludF9vcHMpOworKwkgICAgICBiLT5hZGRy X3N0cmluZyA9IHhzdHJkdXAgKCItcCBsaWJjOmxvbmdqbXAiKTsKICsJICAgICAgYi0+ZW5hYmxl X3N0YXRlID0gYnBfZGlzYWJsZWQ7CiArCSAgICB9CiArCkBAIC01ODQsNyArNTk0LDcgQEAgSW5k ZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2JyZWFrcG9pbnQuYwogICAgICAgIGZvciAoaSA9 IDA7IGkgPCBOVU1fTE9OR0pNUF9OQU1FUzsgaSsrKQogIAl7CiAgCSAgc3RydWN0IGJyZWFrcG9p bnQgKmI7Ci1AQCAtMjMzNCw2ICsyNDM3LDM5IEBAIGNyZWF0ZV9leGNlcHRpb25fbWFzdGVyX2Jy ZWFrcG9pbnQgKHZvaWQKK0BAIC0yNDM3LDYgKzI1MjgsNDAgQEAgY3JlYXRlX2V4Y2VwdGlvbl9t YXN0ZXJfYnJlYWtwb2ludCAodm9pZCkKICAKICAgICAgICBicF9vYmpmaWxlX2RhdGEgPSBnZXRf YnJlYWtwb2ludF9vYmpmaWxlX2RhdGEgKG9iamZpbGUpOwogIApAQCAtNjAwLDcgKzYxMCw3IEBA IEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9icmVha3BvaW50LmMKICsJewogKwkgIHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAob2JqZmlsZSk7CiArCSAg aW50IGk7Ci0rCSAgY29uc3Qgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlOworKwkgIHN0cnVjdCBz dGFwX3Byb2JlICpwcm9iZTsKICsKICsJICBmb3IgKGkgPSAwOwogKwkgICAgICAgVkVDX2l0ZXJh dGUgKHN0YXBfcHJvYmVfcCwKQEAgLTYxMSw4ICs2MjEsOSBAQCBJbmRleDogZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvYnJlYWtwb2ludC5jCiArCSAgICAgIHN0cnVjdCBicmVha3BvaW50ICpiOwog KwogKwkgICAgICBiID0gY3JlYXRlX2ludGVybmFsX2JyZWFrcG9pbnQgKGdkYmFyY2gsIHByb2Jl LT5hZGRyZXNzLAotKwkJCQkJICAgICAgYnBfZXhjZXB0aW9uX21hc3Rlcik7Ci0rCSAgICAgIGIt PmFkZHJfc3RyaW5nID0geHN0cmR1cCAoInByb2JlOmxpYmdjYzp1bndpbmQiKTsKKysJCQkJCSAg ICAgIGJwX2V4Y2VwdGlvbl9tYXN0ZXIsCisrCQkJCQkgICAgICAmaW50ZXJuYWxfYnJlYWtwb2lu dF9vcHMpOworKwkgICAgICBiLT5hZGRyX3N0cmluZyA9IHhzdHJkdXAgKCItcCBsaWJnY2M6dW53 aW5kIik7CiArCSAgICAgIGItPmVuYWJsZV9zdGF0ZSA9IGJwX2Rpc2FibGVkOwogKwkgICAgfQog KwpAQCAtNjI0LDE2NCArNjM1LDMyIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9i cmVha3BvaW50LmMKICAgICAgICBpZiAobXN5bV9ub3RfZm91bmRfcCAoYnBfb2JqZmlsZV9kYXRh LT5leGNlcHRpb25fbXN5bSkpCiAgCWNvbnRpbnVlOwogIAotQEAgLTI1NTIsNiArMjY4OCw4IEBA IHJlbW92ZV9icmVha3BvaW50XzEgKHN0cnVjdCBicF9sb2NhdGlvbgotIAkgICAgdmFsID0gdGFy Z2V0X3JlbW92ZV9od19icmVha3BvaW50IChibC0+Z2RiYXJjaCwgJmJsLT50YXJnZXRfaW5mbyk7 Ci0gCSAgZWxzZQotIAkgICAgdmFsID0gdGFyZ2V0X3JlbW92ZV9icmVha3BvaW50IChibC0+Z2Ri YXJjaCwgJmJsLT50YXJnZXRfaW5mbyk7CitAQCAtMjY1Miw2ICsyNzc3LDggQEAgcmVtb3ZlX2Jy ZWFrcG9pbnRfMSAoc3RydWN0IGJwX2xvY2F0aW9uICpibCwgaW5zZXJ0aW9uX3N0YXRlX3QgaXMp CisgCXsKKyAJICAvKiBObyBvdmVybGF5IGhhbmRsaW5nOiBqdXN0IHJlbW92ZSB0aGUgYnJlYWtw b2ludC4gICovCisgCSAgdmFsID0gYmwtPm93bmVyLT5vcHMtPnJlbW92ZV9sb2NhdGlvbiAoYmwp OwogKwogKwkgIG1vZGlmeV9zZW1hcGhvcmUgKGJsLCAwKTsKICAJfQogICAgICAgIGVsc2UKICAJ ewotQEAgLTU5NTcsNiArNjA5NSw3IEBAIGluaXRfcmF3X2JyZWFrcG9pbnQgKHN0cnVjdCBicmVh a3BvaW50ICoKLSAgIGItPmxvYy0+cmVxdWVzdGVkX2FkZHJlc3MgPSBzYWwucGM7Ci0gICBiLT5s b2MtPmFkZHJlc3MgPSBhZGp1c3RlZF9hZGRyZXNzOwotICAgYi0+bG9jLT5wc3BhY2UgPSBzYWwu cHNwYWNlOwotKyAgYi0+bG9jLT5zZW1hcGhvcmUgPSBzYWwuc2VtYXBob3JlOwotIAotICAgLyog U3RvcmUgdGhlIHByb2dyYW0gc3BhY2UgdGhhdCB3YXMgdXNlZCB0byBzZXQgdGhlIGJyZWFrcG9p bnQsIGZvcgotICAgICAgYnJlYWtwb2ludCByZXNldHRpbmcuICAqLwotQEAgLTcyMjYsNiArNzM2 NSw3IEBAIGNsb25lX21vbWVudGFyeV9icmVha3BvaW50IChzdHJ1Y3QgYnJlYWsKK0BAIC03MDk3 LDYgKzcyMjQsNyBAQCBtb21lbnRhcnlfYnJlYWtwb2ludF9mcm9tX21hc3RlciAoc3RydWN0IGJy ZWFrcG9pbnQgKm9yaWcsCiAgICBjb3B5LT5sb2MtPmFkZHJlc3MgPSBvcmlnLT5sb2MtPmFkZHJl c3M7CiAgICBjb3B5LT5sb2MtPnNlY3Rpb24gPSBvcmlnLT5sb2MtPnNlY3Rpb247CiAgICBjb3B5 LT5sb2MtPnBzcGFjZSA9IG9yaWctPmxvYy0+cHNwYWNlOwogKyAgY29weS0+bG9jLT5zZW1hcGhv cmUgPSBvcmlnLT5sb2MtPnNlbWFwaG9yZTsKICAKLSAgIGlmIChvcmlnLT5zb3VyY2VfZmlsZSA9 PSBOVUxMKQotICAgICBjb3B5LT5zb3VyY2VfZmlsZSA9IE5VTEw7Ci1AQCAtNzQ0NCw2ICs3NTg0 LDcgQEAgYWRkX2xvY2F0aW9uX3RvX2JyZWFrcG9pbnQgKHN0cnVjdCBicmVhawotICAgbG9jLT5h ZGRyZXNzID0gYWRqdXN0X2JyZWFrcG9pbnRfYWRkcmVzcyAobG9jLT5nZGJhcmNoLAotIAkJCQkJ ICAgIGxvYy0+cmVxdWVzdGVkX2FkZHJlc3MsIGItPnR5cGUpOworICAgaWYgKG9yaWctPmxvYy0+ c291cmNlX2ZpbGUgIT0gTlVMTCkKKyAgICAgY29weS0+bG9jLT5zb3VyY2VfZmlsZSA9IHhzdHJk dXAgKG9yaWctPmxvYy0+c291cmNlX2ZpbGUpOworQEAgLTcxODIsNiArNzMxMCw3IEBAIGFkZF9s b2NhdGlvbl90b19icmVha3BvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKKyAgIGxvYy0+cmVx dWVzdGVkX2FkZHJlc3MgPSBzYWwtPnBjOworICAgbG9jLT5hZGRyZXNzID0gYWRqdXN0ZWRfYWRk cmVzczsKICAgIGxvYy0+cHNwYWNlID0gc2FsLT5wc3BhY2U7CiArICBsb2MtPnNlbWFwaG9yZSA9 IHNhbC0+c2VtYXBob3JlOwogICAgZ2RiX2Fzc2VydCAobG9jLT5wc3BhY2UgIT0gTlVMTCk7CiAg ICBsb2MtPnNlY3Rpb24gPSBzYWwtPnNlY3Rpb247Ci0gCi1AQCAtNzc5Miw2ICs3OTMzLDE2IEBA IGNyZWF0ZV9icmVha3BvaW50c19zYWwgKHN0cnVjdCBnZGJhcmNoICoKLSB7Ci0gICBpbnQgaTsK LSAKLSsgIGlmIChjYW5vbmljYWwtPnByZV9leHBhbmRlZCkKLSsgICAgewotKyAgICAgIGNyZWF0 ZV9icmVha3BvaW50X3NhbCAoZ2RiYXJjaCwgc2FscywgY2Fub25pY2FsLT5jYW5vbmljYWxbMF0s Ci0rCQkJICAgICBjb25kX3N0cmluZywgdHlwZSwgZGlzcG9zaXRpb24sCi0rCQkJICAgICB0aHJl YWQsIHRhc2ssIGlnbm9yZV9jb3VudCwgb3BzLAotKwkJCSAgICAgZnJvbV90dHksIGVuYWJsZWQs IGludGVybmFsLAotKwkJCSAgICAgY2Fub25pY2FsLT5zcGVjaWFsX2Rpc3BsYXkpOwotKyAgICAg IHJldHVybjsKLSsgICAgfQotKwotICAgZm9yIChpID0gMDsgaSA8IHNhbHMubmVsdHM7ICsraSkK LSAgICAgewotICAgICAgIHN0cnVjdCBzeW10YWJzX2FuZF9saW5lcyBleHBhbmRlZCA9IAotQEAg LTgzMDAsNyArODQ1MSw3IEBAIGNyZWF0ZV9icmVha3BvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2Ri YXIKLSAgICAgICBvYnNlcnZlcl9ub3RpZnlfYnJlYWtwb2ludF9jcmVhdGVkIChiKTsKLSAgICAg fQotICAgCi0tICBpZiAoc2Fscy5uZWx0cyA+IDEpCi0rICBpZiAoc2Fscy5uZWx0cyA+IDEgJiYg IWNhbm9uaWNhbC5wcmVfZXhwYW5kZWQpCi0gICAgIHsKLSAgICAgICB3YXJuaW5nIChfKCJNdWx0 aXBsZSBicmVha3BvaW50cyB3ZXJlIHNldC5cblVzZSB0aGUgIgotIAkJICJcImRlbGV0ZVwiIGNv bW1hbmQgdG8gZGVsZXRlIHVud2FudGVkIGJyZWFrcG9pbnRzLiIpKTsKLUBAIC05Mzk0LDYgKzk1 NDUsNyBAQCB3YXRjaF9jb21tYW5kXzEgKGNoYXIgKmFyZywgaW50IGFjY2Vzc2ZsCi0gICAvKiBO b3cgc2V0IHVwIHRoZSBicmVha3BvaW50LiAgKi8KLSAgIGIgPSBzZXRfcmF3X2JyZWFrcG9pbnRf d2l0aG91dF9sb2NhdGlvbiAoTlVMTCwgYnBfdHlwZSk7Ci0gICBiLT50aHJlYWQgPSB0aHJlYWQ7 Ci0rICBiLT5wc3BhY2UgPSBjdXJyZW50X3Byb2dyYW1fc3BhY2U7Ci0gICBiLT5kaXNwb3NpdGlv biA9IGRpc3BfZG9udHRvdWNoOwotICAgYi0+ZXhwID0gZXhwOwotICAgYi0+ZXhwX3ZhbGlkX2Js b2NrID0gZXhwX3ZhbGlkX2Jsb2NrOwotQEAgLTEwNTEyLDYgKzEwNjY0LDkgQEAgdXBkYXRlX2ds b2JhbF9sb2NhdGlvbl9saXN0IChpbnQgc2hvdWxkXwotICAgICAgIGludCBrZWVwX2luX3Rhcmdl dCA9IDA7Ci0gICAgICAgaW50IHJlbW92ZWQgPSAwOwotIAotKyAgICAgIGlmIChvbGRfbG9jLT5w c3BhY2UgIT0gY3VycmVudF9wcm9ncmFtX3NwYWNlKQotKwljb250aW51ZTsKLSsKLSAgICAgICAv KiBTa2lwIExPQ1AgZW50cmllcyB3aGljaCB3aWxsIGRlZmluaXRlbHkgbmV2ZXIgYmUgbmVlZGVk LgotIAkgU3RvcCBlaXRoZXIgYXQgb3IgYmVpbmcgdGhlIG9uZSBtYXRjaGluZyBPTERfTE9DLiAg Ki8KLSAgICAgICB3aGlsZSAobG9jcCA8IGJwX2xvY2F0aW9uICsgYnBfbG9jYXRpb25fY291bnQK LUBAIC0xMTMzMywxMiArMTE0ODgsMTQgQEAgdXBkYXRlX2JyZWFrcG9pbnRfbG9jYXRpb25zIChz dHJ1Y3QgYnJlYQotICAgIE9uIHJldHVybiwgRk9VTkQgd2lsbCBiZSAxIGlmIGFueSBTYUwgd2Fz IGZvdW5kLCB6ZXJvIG90aGVyd2lzZS4gICovCi0gCi0gc3RhdGljIHN0cnVjdCBzeW10YWJzX2Fu ZF9saW5lcwotLWFkZHJfc3RyaW5nX3RvX3NhbHMgKHN0cnVjdCBicmVha3BvaW50ICpiLCBjaGFy ICphZGRyX3N0cmluZywgaW50ICpmb3VuZCkKLSthZGRyX3N0cmluZ190b19zYWxzIChzdHJ1Y3Qg YnJlYWtwb2ludCAqYiwgY2hhciAqYWRkcl9zdHJpbmcsIGludCAqZm91bmQsCi0rCQkgICAgIGlu dCAqcHJlX2V4cGFuZGVkKQotIHsKLSAgIGNoYXIgKnM7Ci0gICBpbnQgbWFya2VyX3NwZWM7Ci0g ICBzdHJ1Y3Qgc3ltdGFic19hbmRfbGluZXMgc2FscyA9IHswfTsKLSAgIHN0cnVjdCBnZGJfZXhj ZXB0aW9uIGU7Ci0rICBpbnQgbXlfcHJlX2V4cGFuZGVkID0gMDsKLSAKLSAgIHMgPSBhZGRyX3N0 cmluZzsKLSAgIG1hcmtlcl9zcGVjID0gYi0+dHlwZSA9PSBicF9zdGF0aWNfdHJhY2Vwb2ludCAm JiBpc19tYXJrZXJfc3BlYyAocyk7Ci1AQCAtMTEzNTcsNyArMTE1MTQsMjcgQEAgYWRkcl9zdHJp bmdfdG9fc2FscyAoc3RydWN0IGJyZWFrcG9pbnQgKgotIAkgICAgZXJyb3IgKF8oIm1hcmtlciAl cyBub3QgZm91bmQiKSwgYi0+c3RhdGljX3RyYWNlX21hcmtlcl9pZCk7Ci0gCX0KLSAgICAgICBl bHNlCi0tCXNhbHMgPSBkZWNvZGVfbGluZV8xICgmcywgMSwgKHN0cnVjdCBzeW10YWIgKikgTlVM TCwgMCwgTlVMTCk7Ci0rCXsKLSsJICBzdHJ1Y3QgbGluZXNwZWNfcmVzdWx0IGNhbm9uaWNhbDsK LSsKLSsJICBpbml0X2xpbmVzcGVjX3Jlc3VsdCAoJmNhbm9uaWNhbCk7Ci0rCSAgc2FscyA9IGRl Y29kZV9saW5lXzEgKCZzLCAxLCAoc3RydWN0IHN5bXRhYiAqKSBOVUxMLCAwLAotKwkJCQkmY2Fu b25pY2FsKTsKLSsKLSsJICAvKiBXZSBkb24ndCBuZWVkIHRoZSBjb250ZW50cy4gICovCi0rCSAg aWYgKGNhbm9uaWNhbC5jYW5vbmljYWwpCi0rCSAgICB7Ci0rCSAgICAgIGludCBpOwotKwotKwkg ICAgICBmb3IgKGkgPSAwOyBpIDwgc2Fscy5uZWx0czsgKytpKQotKwkJeGZyZWUgKGNhbm9uaWNh bC5jYW5vbmljYWxbaV0pOwotKwkgICAgICB4ZnJlZSAoY2Fub25pY2FsLmNhbm9uaWNhbCk7Ci0r CSAgICB9Ci0rCi0rCSAgbXlfcHJlX2V4cGFuZGVkID0gY2Fub25pY2FsLnByZV9leHBhbmRlZDsK LSsJICBpZiAocHJlX2V4cGFuZGVkKQotKwkgICAgKnByZV9leHBhbmRlZCA9IG15X3ByZV9leHBh bmRlZDsKLSsJfQotICAgICB9Ci0gICBpZiAoZS5yZWFzb24gPCAwKQotICAgICB7Ci1AQCAtMTEz OTAsNyArMTE1NjcsNyBAQCBhZGRyX3N0cmluZ190b19zYWxzIChzdHJ1Y3QgYnJlYWtwb2ludCAq Ci0gCi0gICBpZiAoZS5yZWFzb24gPT0gMCB8fCBlLmVycm9yICE9IE5PVF9GT1VORF9FUlJPUikK LSAgICAgewotLSAgICAgIGdkYl9hc3NlcnQgKHNhbHMubmVsdHMgPT0gMSk7Ci0rICAgICAgZ2Ri X2Fzc2VydCAobXlfcHJlX2V4cGFuZGVkIHx8IHNhbHMubmVsdHMgPT0gMSk7Ci0gCi0gICAgICAg cmVzb2x2ZV9zYWxfcGMgKCZzYWxzLnNhbHNbMF0pOwotICAgICAgIGlmIChiLT5jb25kaXRpb25f bm90X3BhcnNlZCAmJiBzICYmIHNbMF0pCi1AQCAtMTE0MjYsMTcgKzExNjAzLDIyIEBAIGJyZWFr cG9pbnRfcmVfc2V0X2RlZmF1bHQgKHN0cnVjdCBicmVha3AKLSAgIHN0cnVjdCBzeW10YWJzX2Fu ZF9saW5lcyBzYWxzLCBzYWxzX2VuZDsKLSAgIHN0cnVjdCBzeW10YWJzX2FuZF9saW5lcyBleHBh bmRlZCA9IHswfTsKLSAgIHN0cnVjdCBzeW10YWJzX2FuZF9saW5lcyBleHBhbmRlZF9lbmQgPSB7 MH07Ci0rICBpbnQgcHJlX2V4cGFuZGVkID0gMDsKLSAKLS0gIHNhbHMgPSBhZGRyX3N0cmluZ190 b19zYWxzIChiLCBiLT5hZGRyX3N0cmluZywgJmZvdW5kKTsKLSsgIHNhbHMgPSBhZGRyX3N0cmlu Z190b19zYWxzIChiLCBiLT5hZGRyX3N0cmluZywgJmZvdW5kLCAmcHJlX2V4cGFuZGVkKTsKLSAg IGlmIChmb3VuZCkKLSAgICAgewotICAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIHNhbHMuc2Fs cyk7Ci0tICAgICAgZXhwYW5kZWQgPSBleHBhbmRfbGluZV9zYWxfbWF5YmUgKHNhbHMuc2Fsc1sw XSk7Ci0rICAgICAgaWYgKHByZV9leHBhbmRlZCkKLSsJZXhwYW5kZWQgPSBzYWxzOwotKyAgICAg IGVsc2UKLSsJZXhwYW5kZWQgPSBleHBhbmRfbGluZV9zYWxfbWF5YmUgKHNhbHMuc2Fsc1swXSk7 Ci0gICAgIH0KLSAKLSAgIGlmIChiLT5hZGRyX3N0cmluZ19yYW5nZV9lbmQpCi0gICAgIHsKLS0g ICAgICBzYWxzX2VuZCA9IGFkZHJfc3RyaW5nX3RvX3NhbHMgKGIsIGItPmFkZHJfc3RyaW5nX3Jh bmdlX2VuZCwgJmZvdW5kKTsKLSsgICAgICBzYWxzX2VuZCA9IGFkZHJfc3RyaW5nX3RvX3NhbHMg KGIsIGItPmFkZHJfc3RyaW5nX3JhbmdlX2VuZCwgJmZvdW5kLAotKwkJCQkgICAgICBOVUxMKTsK LSAgICAgICBpZiAoZm91bmQpCi0gCXsKLSAJICBtYWtlX2NsZWFudXAgKHhmcmVlLCBzYWxzX2Vu ZC5zYWxzKTsKLUBAIC0xMjkxMyw2ICsxMzA5NSwyNCBAQCBhbGxfdHJhY2Vwb2ludHMgKHZvaWQp CisgICBsb2MtPmdkYmFyY2ggPSBsb2NfZ2RiYXJjaDsKK0BAIC0xMzMwNiw2ICsxMzQzNSwyNCBA QCBhbGxfdHJhY2Vwb2ludHMgKHZvaWQpCiAgICByZXR1cm4gdHBfdmVjOwogIH0KICAKQEAgLTgw Niw3ICs2ODUsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvYnJlYWtwb2ludC5j CiAgDAogIC8qIFRoaXMgaGVscCBzdHJpbmcgaXMgdXNlZCBmb3IgdGhlIGJyZWFrLCBoYnJlYWss IHRicmVhayBhbmQgdGhicmVhawogICAgIGNvbW1hbmRzLiAgSXQgaXMgZGVmaW5lZCBhcyBhIG1h Y3JvIHRvIHByZXZlbnQgZHVwbGljYXRpb24uCi1AQCAtMTMwMDUsNyArMTMyMDUsOCBAQCBfaW5p dGlhbGl6ZV9icmVha3BvaW50ICh2b2lkKQorQEAgLTEzNTg3LDcgKzEzNzM0LDggQEAgX2luaXRp YWxpemVfYnJlYWtwb2ludCAodm9pZCkKICAgIG9ic2VydmVyX2F0dGFjaF9pbmZlcmlvcl9leGl0 IChjbGVhcl9zeXNjYWxsX2NvdW50cyk7CiAgICBvYnNlcnZlcl9hdHRhY2hfbWVtb3J5X2NoYW5n ZWQgKGludmFsaWRhdGVfYnBfdmFsdWVfb25fbWVtb3J5X2NoYW5nZSk7CiAgCkBAIC04MTYsNyAr Njk1LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2JyZWFrcG9pbnQuYwogIAog ICAgYnJlYWtwb2ludF9jaGFpbiA9IDA7CiAgICAvKiBEb24ndCBib3RoZXIgdG8gY2FsbCBzZXRf YnJlYWtwb2ludF9jb3VudC4gICRicG51bSBpc24ndCB1c2VmdWwKLUBAIC0xMzUzMiw0ICsxMzcz Myw3IEBAIHJhbmdlIChpbmNsdWRpbmcgU1RBUlQtTE9DQVRJT04gYW5kIEVORC0KK0BAIC0xNDEx NCw0ICsxNDI2Miw3IEBAIHJhbmdlIChpbmNsdWRpbmcgU1RBUlQtTE9DQVRJT04gYW5kIEVORC1M T0NBVElPTikuIikpOwogICAgYXV0b21hdGljX2hhcmR3YXJlX2JyZWFrcG9pbnRzID0gMTsKICAK ICAgIG9ic2VydmVyX2F0dGFjaF9hYm91dF90b19wcm9jZWVkIChicmVha3BvaW50X2Fib3V0X3Rv X3Byb2NlZWQpOwpAQCAtODI0LDExICs3MDMsMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL2JyZWFrcG9pbnQuYwogKyAgb2JzZXJ2ZXJfYXR0YWNoX21hcmtfdXNlZCAoYnJlYWtw b2ludF90eXBlc19tYXJrX3VzZWQpOwogKyNlbmRpZgogIH0KLUluZGV4OiBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi9icmVha3BvaW50LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEw NzIyLm9yaWcvZ2RiL2JyZWFrcG9pbnQuaAkyMDExLTA2LTIyIDE5OjUzOjQ0LjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2JyZWFrcG9pbnQuaAkyMDExLTA3LTI5 IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAotQEAgLTM4Myw2ICszODMsMTEgQEAgc3RydWN0IGJw X2xvY2F0aW9uCitkaWZmIC0tZ2l0IGEvZ2RiL2JyZWFrcG9pbnQuaCBiL2dkYi9icmVha3BvaW50 LmgKK2luZGV4IGQyMmU1NjQuLjllYTY2Y2UgMTAwNjQ0CistLS0gYS9nZGIvYnJlYWtwb2ludC5o CisrKysgYi9nZGIvYnJlYWtwb2ludC5oCitAQCAtMzc5LDYgKzM3OSwxMSBAQCBzdHJ1Y3QgYnBf bG9jYXRpb24KICAgICAgIHByb2Nlc3NvcidzIGFyY2hpdGVjdHVhbCBjb25zdHJhaW50cy4gICov CiAgICBDT1JFX0FERFIgcmVxdWVzdGVkX2FkZHJlc3M7CiAgCkBAIC04NDAsOSArNzE5LDkgQEAg SW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2JyZWFrcG9pbnQuaAogICAgY2hhciAqZnVu Y3Rpb25fbmFtZTsKICAKICAgIC8qIERldGFpbHMgb2YgdGhlIHBsYWNlZCBicmVha3BvaW50LCB3 aGVuIGluc2VydGVkLiAgKi8KLUBAIC0xMzE2LDQgKzEzMjEsMTEgQEAgZXh0ZXJuIHN0cnVjdCBi cmVha3BvaW50ICppdGVyYXRlX292ZXJfYgotIAotIGV4dGVybiBpbnQgdXNlcl9icmVha3BvaW50 X3AgKHN0cnVjdCBicmVha3BvaW50ICopOworQEAgLTEzODEsNCArMTM4NiwxMSBAQCBleHRlcm4g aW50IHVzZXJfYnJlYWtwb2ludF9wIChzdHJ1Y3QgYnJlYWtwb2ludCAqKTsKKyAvKiBBdHRlbXB0 IHRvIGRldGVybWluZSBhcmNoaXRlY3R1cmUgb2YgbG9jYXRpb24gaWRlbnRpZmllZCBieSBTQUwu ICAqLworIGV4dGVybiBzdHJ1Y3QgZ2RiYXJjaCAqZ2V0X3NhbF9hcmNoIChzdHJ1Y3Qgc3ltdGFi X2FuZF9saW5lIHNhbCk7CiAgCiArLyogU2V0IG9yIGNsZWFyIGEgU3lzdGVtVGFwIHNlbWFwaG9y ZS4gIExPQyBpcyB0aGUgbG9jYXRpb24gd2hpY2ggbWF5CiArICAgaG9sZCBhIHNlbWFwaG9yZS4g IFNFVCBpcyBub24temVybyBpZiB0aGUgc2VtYXBob3JlIHNob3VsZCBiZSBzZXQsCkBAIC04NTIs MTEgKzczMSwxMSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvYnJlYWtwb2ludC5o CiArZXh0ZXJuIHZvaWQgbW9kaWZ5X3NlbWFwaG9yZSAoc3RydWN0IGJwX2xvY2F0aW9uICpsb2Nh dGlvbiwgaW50IHNldCk7CiArCiAgI2VuZGlmIC8qICFkZWZpbmVkIChCUkVBS1BPSU5UX0gpICov Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvYy10eXBlcHJpbnQuYwotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvYy10eXBlcHJpbnQuYwkyMDExLTA1 LTE4IDE4OjMwOjM0LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L2MtdHlwZXByaW50LmMJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC02 MjUsOSArNjI1LDE0IEBAIGNfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoc3RydWN0IHR5cGUK K2RpZmYgLS1naXQgYS9nZGIvYy10eXBlcHJpbnQuYyBiL2dkYi9jLXR5cGVwcmludC5jCitpbmRl eCAwMjEyMjMyLi5kOWRkZmY4IDEwMDY0NAorLS0tIGEvZ2RiL2MtdHlwZXByaW50LmMKKysrKyBi L2dkYi9jLXR5cGVwcmludC5jCitAQCAtNjI1LDkgKzYyNSwxNCBAQCBjX3R5cGVfcHJpbnRfdmFy c3BlY19zdWZmaXggKHN0cnVjdCB0eXBlICp0eXBlLAogIAkgIGZwcmludGZfZmlsdGVyZWQgKHN0 cmVhbSwgIikiKTsKICAKICAJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiWyIpOwpAQCAtODc0 LDExICs3NTMsMzAgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2MtdHlwZXByaW50 LmMKICAJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiXSIpOwogIAogIAljX3R5cGVfcHJpbnRf dmFyc3BlY19zdWZmaXggKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLCBzdHJlYW0sCi1JbmRleDog Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvY2xpL2NsaS11dGlscy5jCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9jbGkvY2xpLXV0aWxzLmMJMjAxMS0wMy0xNiAy MjoxMjoxMi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jbGkv Y2xpLXV0aWxzLmMJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0yNDUs MyArMjQ1LDMyIEBAIHJlbW92ZV90cmFpbGluZ193aGl0ZXNwYWNlIChjb25zdCBjaGFyICoKK2Rp ZmYgLS1naXQgYS9nZGIvY2xpL2NsaS11dGlscy5jIGIvZ2RiL2NsaS9jbGktdXRpbHMuYworaW5k ZXggNjJhMmYxMi4uY2Q1ZmFiNSAxMDA2NDQKKy0tLSBhL2dkYi9jbGkvY2xpLXV0aWxzLmMKKysr KyBiL2dkYi9jbGkvY2xpLXV0aWxzLmMKK0BAIC0yMjMsNiArMjIzLDE4IEBAIHNraXBfc3BhY2Vz IChjaGFyICpjaHApCisgICByZXR1cm4gY2hwOworIH0KKyAKKysvKiBBIGNvbnN0LWNvcnJlY3Qg dmVyc2lvbiBvZiB0aGUgYWJvdmUuICAqLworKworK2NvbnN0IGNoYXIgKgorK3NraXBfc3BhY2Vz X2NvbnN0IChjb25zdCBjaGFyICpjaHApCisreworKyAgaWYgKGNocCA9PSBOVUxMKQorKyAgICBy ZXR1cm4gTlVMTDsKKysgIHdoaWxlICgqY2hwICYmIGlzc3BhY2UgKCpjaHApKQorKyAgICBjaHAr KzsKKysgIHJldHVybiBjaHA7CisrfQorKworIC8qIFNlZSBkb2N1bWVudGF0aW9uIGluIGNsaS11 dGlscy5oLiAgKi8KKyAKKyBjaGFyICoKK0BAIC0yNDUsMyArMjU3LDMyIEBAIHJlbW92ZV90cmFp bGluZ193aGl0ZXNwYWNlIChjb25zdCBjaGFyICpzdGFydCwgY2hhciAqcykKICAKICAgIHJldHVy biBzOwogIH0KQEAgLTkxMSwxMSArODA5LDIyIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi9jbGkvY2xpLXV0aWxzLmMKICsKICsgIHJldHVybiBjb3B5OwogK30KLUluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi9jbGkvY2xpLXV0aWxzLmgKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2NsaS9jbGktdXRpbHMuaAkyMDExLTAzLTE2IDIyOjEy OjEyLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2NsaS9jbGkt dXRpbHMuaAkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAotQEAgLTEwMyw0ICsx MDMsMTEgQEAgZXh0ZXJuIGNoYXIgKnNraXBfdG9fc3BhY2UgKGNoYXIgKmlucCk7CitkaWZmIC0t Z2l0IGEvZ2RiL2NsaS9jbGktdXRpbHMuaCBiL2dkYi9jbGkvY2xpLXV0aWxzLmgKK2luZGV4IDhh NmU1YjMuLjY1ODExNTEgMTAwNjQ0CistLS0gYS9nZGIvY2xpL2NsaS11dGlscy5oCisrKysgYi9n ZGIvY2xpL2NsaS11dGlscy5oCitAQCAtOTQsNiArOTQsMTAgQEAgZXh0ZXJuIGludCBudW1iZXJf aXNfaW5fbGlzdCAoY2hhciAqbGlzdCwgaW50IG51bWJlcik7CisgCisgZXh0ZXJuIGNoYXIgKnNr aXBfc3BhY2VzIChjaGFyICppbnApOworIAorKy8qIEEgY29uc3QtY29ycmVjdCB2ZXJzaW9uIG9m IHRoZSBhYm92ZS4gICovCisrCisrZXh0ZXJuIGNvbnN0IGNoYXIgKnNraXBfc3BhY2VzX2NvbnN0 IChjb25zdCBjaGFyICppbnApOworKworIC8qIFNraXAgbGVhZGluZyBub24td2hpdGVzcGFjZSBj aGFyYWN0ZXJzIGluIElOUCwgcmV0dXJuaW5nIGFuIHVwZGF0ZWQKKyAgICBwb2ludGVyLiAgSWYg SU5QIGlzIE5VTEwsIHJldHVybiBOVUxMLiAgKi8KKyAKK0BAIC0xMDMsNCArMTA3LDExIEBAIGV4 dGVybiBjaGFyICpza2lwX3RvX3NwYWNlIChjaGFyICppbnApOwogICAgIFNUQVJULiAgKi8KICAK ICBleHRlcm4gY2hhciAqcmVtb3ZlX3RyYWlsaW5nX3doaXRlc3BhY2UgKGNvbnN0IGNoYXIgKnN0 YXJ0LCBjaGFyICpzKTsKQEAgLTkyNywxMSArODM2LDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi9jbGkvY2xpLXV0aWxzLmgKICtleHRlcm4gY2hhciAqZXh0cmFjdF9hcmcgKGNo YXIgKiphcmcpOwogKwogICNlbmRpZiAvKiBDTElfVVRJTFNfSCAqLwotSW5kZXg6IGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL2NvZmZyZWFkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIw MTEwNzIyLm9yaWcvZ2RiL2NvZmZyZWFkLmMJMjAxMS0wNi0xNCAyMDo1MzoxMy4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jb2ZmcmVhZC5jCTIwMTEtMDctMjkg MjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCi1AQCAtMjE5Nyw2ICsyMTk3LDcgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBzeW1fZm5zIGNvZmZfc3ltX2ZucworZGlmZiAtLWdpdCBhL2dkYi9jb2ZmcmVh ZC5jIGIvZ2RiL2NvZmZyZWFkLmMKK2luZGV4IGNmOGZiNTQuLmYxN2VhZDkgMTAwNjQ0CistLS0g YS9nZGIvY29mZnJlYWQuYworKysrIGIvZ2RiL2NvZmZyZWFkLmMKK0BAIC0yMTk3LDYgKzIxOTcs NyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHN5bV9mbnMgY29mZl9zeW1fZm5zID0KICAKICAgIGRl ZmF1bHRfc3ltZmlsZV9yZWxvY2F0ZSwJLyogc3ltX3JlbG9jYXRlOiBSZWxvY2F0ZSBhIGRlYnVn CiAgCQkJCSAgIHNlY3Rpb24uICAqLwpAQCAtOTM5LDExICs4NDgsMTEgQEAgSW5kZXg6IGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL2NvZmZyZWFkLmMKICAgICZwc3ltX2Z1bmN0aW9ucwogIH07CiAg Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUu aW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2RhdGEtZGly ZWN0b3J5L01ha2VmaWxlLmluCTIwMTEtMDItMDQgMTk6MzQ6NDEuMDAwMDAwMDAwICswMTAwCi0r KysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUuaW4JMjAx MS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC01MiwxMSArNTIsMjMgQEAgU1lT Q0FMTFNfRklMRVMgPSBcCitkaWZmIC0tZ2l0IGEvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxl LmluIGIvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCitpbmRleCBjMDRhZWE0Li5mMDZi NmRhIDEwMDY0NAorLS0tIGEvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCisrKysgYi9n ZGIvZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUuaW4KK0BAIC01MiwxMyArNTIsMjQgQEAgU1lTQ0FM TFNfRklMRVMgPSBcCiAgUFlUSE9OX0RJUiA9IHB5dGhvbgogIFBZVEhPTl9JTlNUQUxMX0RJUiA9 ICQoREVTVERJUikkKEdEQl9EQVRBRElSKS8kKFBZVEhPTl9ESVIpCiAgUFlUSE9OX0ZJTEVTID0g XApAQCAtOTUyLDI5ICs4NjEsMzEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2Rh dGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCiAgCWdkYi9fX2luaXRfXy5weSBcCiAtCWdkYi90eXBl cy5weSBcCiAtCWdkYi9wcmludGluZy5weSBcCistCWdkYi9wcm9tcHQucHkgXAogKwlnZGIvYmFj a3RyYWNlLnB5IFwKICAJZ2RiL2NvbW1hbmQvX19pbml0X18ucHkgXAotLQlnZGIvY29tbWFuZC9w cmV0dHlfcHJpbnRlcnMucHkKLSsJZ2RiL2NvbW1hbmQvYWxpYXMucHkgXAogKwlnZGIvY29tbWFu ZC9iYWNrdHJhY2UucHkgXAogKwlnZGIvY29tbWFuZC9pZ25vcmVfZXJyb3JzLnB5IFwKICsJZ2Ri L2NvbW1hbmQvcGFob2xlLnB5IFwKLSsJZ2RiL2NvbW1hbmQvcHJldHR5X3ByaW50ZXJzLnB5IFwK KyAJZ2RiL2NvbW1hbmQvcHJldHR5X3ByaW50ZXJzLnB5IFwKKy0JZ2RiL2NvbW1hbmQvcHJvbXB0 LnB5CisrCWdkYi9jb21tYW5kL3Byb21wdC5weSBcCiArCWdkYi9jb21tYW5kL3JlcXVpcmUucHkg XAogKwlnZGIvY29tbWFuZC91cHRvLnB5IFwKICsJZ2RiL2Z1bmN0aW9uL19faW5pdF9fLnB5IFwK ICsJZ2RiL2Z1bmN0aW9uL2NhbGxlcl9pcy5weSBcCiArCWdkYi9mdW5jdGlvbi9pbl9zY29wZS5w eSBcCiArCWdkYi9wcmludGluZy5weSBcCisrCWdkYi9wcm9tcHQucHkgXAogKwlnZGIvdHlwZXMu cHkKICAKICBGTEFHU19UT19QQVNTID0gXAogIAkicHJlZml4PSQocHJlZml4KSIgXAotSW5kZXg6 IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2RieHJlYWQuYwotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvZGJ4cmVhZC5jCTIwMTEtMDYtMjcgMjE6MjE6NTAuMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZGJ4cmVhZC5jCTIwMTEt MDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCi1AQCAtMzU5MCw2ICszNTkwLDcgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBzeW1fZm5zIGFvdXRfc3ltX2ZucworZGlmZiAtLWdpdCBhL2dkYi9k YnhyZWFkLmMgYi9nZGIvZGJ4cmVhZC5jCitpbmRleCAyMjEwYWYyLi41ZGUzMDc4IDEwMDY0NAor LS0tIGEvZ2RiL2RieHJlYWQuYworKysrIGIvZ2RiL2RieHJlYWQuYworQEAgLTM1OTAsNiArMzU5 MCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3ltX2ZucyBhb3V0X3N5bV9mbnMgPQogICAgZGVm YXVsdF9zeW1maWxlX3NlZ21lbnRzLAkvKiBHZXQgc2VnbWVudCBpbmZvcm1hdGlvbiBmcm9tIGEg ZmlsZS4gICovCiAgICBOVUxMLAogICAgZGVmYXVsdF9zeW1maWxlX3JlbG9jYXRlLAkvKiBSZWxv Y2F0ZSBhIGRlYnVnIHNlY3Rpb24uICAqLwpAQCAtOTgyLDExICs4OTMsMTEgQEAgSW5kZXg6IGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL2RieHJlYWQuYwogICAgJnBzeW1fZnVuY3Rpb25zCiAgfTsK ICAKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kZWZzLmgKLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2RlZnMuaAkyMDExLTA3LTIyIDAxOjQ2OjA4 LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2RlZnMuaAkyMDEx LTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAotQEAgLTQwNiw2ICs0MDYsOCBAQCBleHRl cm4gc3RydWN0IGNsZWFudXAgKm1ha2VfY2xlYW51cF9yZXN0CitkaWZmIC0tZ2l0IGEvZ2RiL2Rl ZnMuaCBiL2dkYi9kZWZzLmgKK2luZGV4IDdmOGEzMzAuLjhiN2E5NDYgMTAwNjQ0CistLS0gYS9n ZGIvZGVmcy5oCisrKysgYi9nZGIvZGVmcy5oCitAQCAtNDEyLDYgKzQxMiw4IEBAIGV4dGVybiBz dHJ1Y3QgY2xlYW51cCAqbWFrZV9jbGVhbnVwX3Jlc3RvcmVfcGFnZV9pbmZvICh2b2lkKTsKICBl eHRlcm4gc3RydWN0IGNsZWFudXAgKgogICAgc2V0X2JhdGNoX2ZsYWdfYW5kX21ha2VfY2xlYW51 cF9yZXN0b3JlX3BhZ2VfaW5mbyAodm9pZCk7CiAgCkBAIC05OTUsMTAgKzkwNiwxMCBAQCBJbmRl eDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZGVmcy5oCiAgZXh0ZXJuIGNoYXIgKmdkYl9yZWFs cGF0aCAoY29uc3QgY2hhciAqKTsKICBleHRlcm4gY2hhciAqeGZ1bGxwYXRoIChjb25zdCBjaGFy ICopOwogIAotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2RvYy9nZGIudGV4aW5mbwot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvZG9jL2dkYi50ZXhp bmZvCTIwMTEtMDctMjEgMTc6MTM6MjkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAw ICswMjAwCitkaWZmIC0tZ2l0IGEvZ2RiL2RvYy9nZGIudGV4aW5mbyBiL2dkYi9kb2MvZ2RiLnRl eGluZm8KK2luZGV4IGQ2MGE4N2IuLmIwNjE4ZjYgMTAwNjQ0CistLS0gYS9nZGIvZG9jL2dkYi50 ZXhpbmZvCisrKysgYi9nZGIvZG9jL2dkYi50ZXhpbmZvCiBAQCAtMTE3NSw2ICsxMTc1LDE2IEBA IGZvciByZW1vdGUgZGVidWdnaW5nLgogIFJ1biB1c2luZyBAdmFye2RldmljZX0gZm9yIHlvdXIg cHJvZ3JhbSdzIHN0YW5kYXJkIGlucHV0IGFuZCBvdXRwdXQuCiAgQGMgRklYTUU6IGtpbmdkb24g dGhpbmtzIHRoZXJlIGlzIG1vcmUgdG8gLXR0eS4gIEludmVzdGlnYXRlLgpAQCAtMTAxNiw3ICs5 MjcsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZG9jL2dkYi50ZXhpbmZvCiAg QGMgcmVzb2x2ZSB0aGUgc2l0dWF0aW9uIG9mIHRoZXNlIGV2ZW50dWFsbHkKICBAaXRlbSAtdHVp CiAgQGNpbmRleCBAY29kZXstLXR1aX0KLUBAIC0zMjk1LDYgKzMzMDUsNyBAQCBhbGwgYnJlYWtw b2ludHMgaW4gdGhhdCByYW5nZSBhcmUgb3BlcmF0CitAQCAtMzMwMyw2ICszMzEzLDcgQEAgYWxs IGJyZWFrcG9pbnRzIGluIHRoYXQgcmFuZ2UgYXJlIG9wZXJhdGVkIG9uLgogICogQ29uZGl0aW9u czo6ICAgICAgICAgICAgICAgICAgQnJlYWsgY29uZGl0aW9ucwogICogQnJlYWsgQ29tbWFuZHM6 OiAgICAgICAgICAgICAgQnJlYWtwb2ludCBjb21tYW5kIGxpc3RzCiAgKiBTYXZlIEJyZWFrcG9p bnRzOjogICAgICAgICAgICBIb3cgdG8gc2F2ZSBicmVha3BvaW50cyBpbiBhIGZpbGUKQEAgLTEw MjQsNyArOTM1LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2RvYy9nZGIudGV4 aW5mbwogICogRXJyb3IgaW4gQnJlYWtwb2ludHM6OiAgICAgICAgYGBDYW5ub3QgaW5zZXJ0IGJy ZWFrcG9pbnRzJycKICAqIEJyZWFrcG9pbnQtcmVsYXRlZCBXYXJuaW5nczo6IGBgQnJlYWtwb2lu dCBhZGRyZXNzIGFkanVzdGVkLi4uJycKICBAZW5kIG1lbnUKLUBAIC00NTI1LDYgKzQ1MzYsNTAg QEAgYW5kIHJlbW92ZSB0aGUgYnJlYWtwb2ludCBkZWZpbml0aW9ucyB5bworQEAgLTQ1MzIsNiAr NDU0Myw1MCBAQCBhbmQgcmVtb3ZlIHRoZSBicmVha3BvaW50IGRlZmluaXRpb25zIHlvdSdyZSBu b3QgaW50ZXJlc3RlZCBpbiwgb3IKICB0aGF0IGNhbiBubyBsb25nZXIgYmUgcmVjcmVhdGVkLgog IEBlbmQgdGFibGUKICAKQEAgLTEwNjIsNyArOTczLDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL2RvYy9nZGIudGV4aW5mbwogK3BvaW50IGF0IHdoaWNoIHRoZSBwcm9iZSBpcyBk ZWZpbmVkLS0tdGhhdCBpcywgd2hlbiB0aGUgY3VycmVudCBQQyBpcwogK2F0IHRoZSBwcm9iZSdz IGxvY2F0aW9uLiAgVGhlIGFyZ3VtZW50cyBhcmUgYXZhaWxhYmxlIHVzaW5nIHRoZQogK2NvbnZl bmllbmNlIHZhcmlhYmxlcyAoQHB4cmVme0NvbnZlbmllbmNlIFZhcnN9KQotK0Bjb2RleyRfcHJv YmVfYXJnMH1AZG90c3t9QGNvZGV7JF9wcm9iZV9hcmc5fS4gIEVhY2ggcHJvYmUgYXJndW1lbnQg aXMKKytAY29kZXskX3Byb2JlX2FyZzB9QGRvdHN7fUBjb2RleyRfcHJvYmVfYXJnMTF9LiAgRWFj aCBwcm9iZSBhcmd1bWVudCBpcwogK2FuIGludGVnZXIgb2YgdGhlIGFwcHJvcHJpYXRlIHNpemU7 IHR5cGVzIGFyZSBub3QgcHJlc2VydmVkLiAgVGhlCiArY29udmVuaWVuY2UgdmFyaWFibGUgQGNv ZGV7JF9wcm9iZV9hcmdjfSBob2xkcyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cwogK2F0IHRoZSBj dXJyZW50IHByb2JlIHBvaW50LgpAQCAtMTA3NSwxMiArOTg2LDEyIEBAIEluZGV4OiBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi9kb2MvZ2RiLnRleGluZm8KICBAYyAgQGlmY2xlYXIgQkFSRVRBUkdF VAogIEBub2RlIEVycm9yIGluIEJyZWFrcG9pbnRzCiAgQHN1YnNlY3Rpb24gYGBDYW5ub3QgaW5z ZXJ0IGJyZWFrcG9pbnRzJycKLUBAIC02NDQwLDYgKzY0OTUsMjkgQEAgc3BlY2lmeSB0aGUgZnVu Y3Rpb24gdW5hbWJpZ3VvdXNseSwgZS5nLgorQEAgLTY1NTIsNiArNjYwNywyOSBAQCBzcGVjaWZ5 IHRoZSBmdW5jdGlvbiB1bmFtYmlndW91c2x5LCBlLmcuLCBpZiB0aGVyZSBhcmUgc2V2ZXJhbAog IGZ1bmN0aW9ucyB3aXRoIGlkZW50aWNhbCBuYW1lcyBpbiBkaWZmZXJlbnQgc291cmNlIGZpbGVz LgogIEBlbmQgdGFibGUKICAKICtAY2luZGV4IFN5c3RlbVRhcCBzdGF0aWMgcHJvYmUgcG9pbnQK LStAaXRlbSBwcm9iZTpAcntbfUB2YXJ7b2JqZmlsZX06QHJ7XX1AcntbfUB2YXJ7cHJvdmlkZXJ9 OkBye119QHZhcntuYW1lfQorK0BpdGVtIC1wIEBye1t9QHZhcntvYmpmaWxlfTpAcntdfUBye1t9 QHZhcntwcm92aWRlcn06QHJ7XX1AdmFye25hbWV9CiArVGhlIEBzY3tnbnV9L0xpbnV4IHRvb2wg QGNvZGV7U3lzdGVtVGFwfSBwcm92aWRlcyBhIHdheSBmb3IKICthcHBsaWNhdGlvbnMgdG8gZW1i ZWQgc3RhdGljIHByb2Jlcy4gIFRoaXMgZm9ybSBvZiBsaW5lc3BlYyBzcGVjaWZpZXMKICt0aGUg bG9jYXRpb24gb2Ygc3VjaCBhIHN0YXRpYyBwcm9iZS4gIFNlZQpAQCAtMTA5OCw0MiArMTAwOSw0 MiBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZG9jL2dkYi50ZXhpbmZvCiAraGFw cGVucyBhdXRvbWF0aWNhbGx5IGlmIHlvdSBkZWZpbmVkIHlvdXIgcHJvYmUgdXNpbmcgYSBEVHJh Y2Utc3R5bGUKICtAZmlsZXsuZH0gZmlsZS4gIElmIHlvdXIgcHJvYmUgaGFzIGEgc2VtYXBob3Jl LCBAdmFsdWV7R0RCTn0gd2lsbAogK2F1dG9tYXRpY2FsbHkgZW5hYmxlIGl0IHdoZW4geW91IHNw ZWNpZnkgYSBicmVha3BvaW50IHVzaW5nIHRoZQotK0BzYW1we3Byb2JlOn0gbm90YXRpb24uICBC dXQsIGlmIHlvdSBwdXQgYSBicmVha3BvaW50IGF0IGEgcHJvYmUncworK0BzYW1wey1wfSBub3Rh dGlvbi4gIEJ1dCwgaWYgeW91IHB1dCBhIGJyZWFrcG9pbnQgYXQgYSBwcm9iZSdzCiArbG9jYXRp b24gYnkgc29tZSBvdGhlciBtZXRob2QgKGUuZy4sIEBjb2Rle2JyZWFrIGZpbGU6bGluZX0pLCB0 aGVuCiArQHZhbHVle0dEQk59IHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgc2V0IHRoZSBzZW1hcGhv cmUuCiArCiAgQGVuZCB0YWJsZQogIAogIAotQEAgLTg1MjYsNiArODYwNCwxMCBAQCB0byBtYXRj aCB0aGUgZm9ybWF0IGluIHdoaWNoIHRoZSBkYXRhIHdhCitAQCAtODc2Nyw2ICs4ODQ1LDEwIEBA IHRvIG1hdGNoIHRoZSBmb3JtYXQgaW4gd2hpY2ggdGhlIGRhdGEgd2FzIHByaW50ZWQuCiAgVGhl IHZhcmlhYmxlIEBjb2RleyRfZXhpdGNvZGV9IGlzIGF1dG9tYXRpY2FsbHkgc2V0IHRvIHRoZSBl eGl0IGNvZGUgd2hlbgogIHRoZSBwcm9ncmFtIGJlaW5nIGRlYnVnZ2VkIHRlcm1pbmF0ZXMuCiAg CiArQGl0ZW0gJF9wcm9iZV9hcmdjCi0rQGl0ZW14ICRfcHJvYmVfYXJnMEBkb3Rze30kX3Byb2Jl X2FyZzkKKytAaXRlbXggJF9wcm9iZV9hcmcwQGRvdHN7fSRfcHJvYmVfYXJnMTEKICtBcmd1bWVu dHMgdG8gYSBTeXN0ZW1UYXAgc3RhdGljIHByb2JlLiAgQHhyZWZ7U3RhdGljIFByb2JlIFBvaW50 c30uCiArCiAgQGl0ZW0gJF9zZGF0YQogIEB2aW5kZXggJF9zZGF0YUByeywgaW5zcGVjdCwgY29u dmVuaWVuY2UgdmFyaWFibGV9CiAgVGhlIHZhcmlhYmxlIEBjb2RleyRfc2RhdGF9IGNvbnRhaW5z IGV4dHJhIGNvbGxlY3RlZCBzdGF0aWMgdHJhY2Vwb2ludAotQEAgLTEwMjY0LDYgKzEwMzQ2LDE2 IEBAIENvbGxlY3QgYWxsIGZ1bmN0aW9uIGFyZ3VtZW50cy4KLSBAaXRlbSAkbG9jYWxzCi0gQ29s bGVjdCBhbGwgbG9jYWwgdmFyaWFibGVzLgorQEAgLTEwNzE5LDYgKzEwODAxLDE2IEBAIENvbGxl Y3QgYWxsIGxvY2FsIHZhcmlhYmxlcy4KKyBDb2xsZWN0IHRoZSByZXR1cm4gYWRkcmVzcy4gIFRo aXMgaXMgaGVscGZ1bCBpZiB5b3Ugd2FudCB0byBzZWUgbW9yZQorIG9mIGEgYmFja3RyYWNlLgog IAogK0BpdGVtICRfcHJvYmVfYXJnYwogK0NvbGxlY3RzIHRoZSBudW1iZXIgb2YgYXJndW1lbnRz IGZyb20gdGhlIEBjb2Rle1N5c3RlbVRhcH0gcHJvYmUgYXQKICt3aGljaCB0aGUgdHJhY2Vwb2lu dCBpcyBsb2NhdGVkLgotK0B4cmVme1N0YXRpYyBQcm9iZSBQb2ludHMsLFN0YXRpYyBQcm9iZSBQ b2ludHN9CisrQHhyZWZ7U3RhdGljIFByb2JlIFBvaW50cywsU3RhdGljIFByb2JlIFBvaW50c30u CiArCiArQGl0ZW0gJF9wcm9iZV9hcmdAdmFye059Ci0rV2hlcmUgQHZhcntOfSB2YXJpZXMgZnJv bSAwIHRvIDkuICBDb2xsZWN0cyB0aGUgQHZhcntOfXRoIGFyZ3VtZW50CisrV2hlcmUgQHZhcntO fSB2YXJpZXMgZnJvbSAwIHRvIDExLiAgQ29sbGVjdHMgdGhlIEB2YXJ7Tn10aCBhcmd1bWVudAog K2Zyb20gdGhlIEBjb2Rle1N5c3RlbVRhcH0gcHJvYmUgYXQgd2hpY2ggdGhlIHRyYWNlcG9pbnQg aXMgbG9jYXRlZC4KLStAeHJlZntTdGF0aWMgUHJvYmUgUG9pbnRzLCxTdGF0aWMgUHJvYmUgUG9p bnRzfQorK0B4cmVme1N0YXRpYyBQcm9iZSBQb2ludHMsLFN0YXRpYyBQcm9iZSBQb2ludHN9Lgog KwogIEBpdGVtICRfc2RhdGEKICBAdmluZGV4ICRfc2RhdGFAcnssIGNvbGxlY3R9CiAgQ29sbGVj dCBzdGF0aWMgdHJhY2Vwb2ludCBtYXJrZXIgc3BlY2lmaWMgZGF0YS4gIE9ubHkgYXZhaWxhYmxl IGZvcgotQEAgLTIwODA1LDggKzIwODk3LDYgQEAgY29udGFpbmluZyBAY29kZXtlbmR9LiAgRm9y IGV4YW1wbGU6CitAQCAtMjE0NTgsOCArMjE1NTAsNiBAQCBjb250YWluaW5nIEBjb2Rle2VuZH0u ICBGb3IgZXhhbXBsZToKICAKICBAc21hbGxleGFtcGxlCiAgKEB2YWx1ZXtHREJQfSkgcHl0aG9u CkBAIC0xMTQyLDEwICsxMDUzLDEwIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9k b2MvZ2RiLnRleGluZm8KICA+cHJpbnQgMjMKICA+ZW5kCiAgMjMKLUBAIC0yMDgyNCw2ICsyMDkx NCwxNCBAQCBvY2N1cnMgaW4gYSBQeXRob24gc2NyaXB0LiAgVGhpcyBjYW4gYmUKLSBweXRob24g cHJpbnQtc3RhY2t9OiBpZiBAY29kZXtvbn0sIHRoZW4gUHl0aG9uIHN0YWNrIHByaW50aW5nIGlz Ci0gZW5hYmxlZDsgaWYgQGNvZGV7b2ZmfSwgdGhlIGRlZmF1bHQsIHRoZW4gUHl0aG9uIHN0YWNr IHByaW50aW5nIGlzCi0gZGlzYWJsZWQuCitAQCAtMjE0NzMsNiArMjE1NjMsMTQgQEAgY29udHJv bGxlZCB1c2luZyBAY29kZXtzZXQgcHl0aG9uIHByaW50LXN0YWNrfTogaWYgQGNvZGV7ZnVsbH0s IHRoZW4KKyBmdWxsIFB5dGhvbiBzdGFjayBwcmludGluZyBpcyBlbmFibGVkOyBpZiBAY29kZXtu b25lfSwgdGhlbiBQeXRob24gc3RhY2sKKyBhbmQgbWVzc2FnZSBwcmludGluZyBpcyBkaXNhYmxl ZDsgaWYgQGNvZGV7bWVzc2FnZX0sIHRoZSBkZWZhdWx0LCBvbmx5CisgdGhlIG1lc3NhZ2UgY29t cG9uZW50IG9mIHRoZSBlcnJvciBpcyBwcmludGVkLgogKwogK0BraW5kZXggbWFpbnQgc2V0IHB5 dGhvbiBhdXRvLWxvYWQKICtAaXRlbSBtYWludCBzZXQgcHl0aG9uIGF1dG8tbG9hZApAQCAtMTE1 Nyw3ICsxMDY4LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2RvYy9nZGIudGV4 aW5mbwogIEBlbmQgdGFibGUKICAKICBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGV4ZWN1dGUgYSBQ eXRob24gc2NyaXB0IGZyb20gdGhlIEB2YWx1ZXtHREJOfQotQEAgLTIwODQ1LDYgKzIwOTQzLDE0 IEBAIGFuZCB0aHVzIGlzIGFsd2F5cyBhdmFpbGFibGUuCitAQCAtMjE0OTQsNiArMjE1OTIsMTQg QEAgYW5kIHRodXMgaXMgYWx3YXlzIGF2YWlsYWJsZS4KICBAY2luZGV4IHB5dGhvbiBhcGkKICBA Y2luZGV4IHByb2dyYW1taW5nIGluIHB5dGhvbgogIApAQCAtMTE3MiwxMSArMTA4MywxMSBAQCBJ bmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZG9jL2dkYi50ZXhpbmZvCiAgQGNpbmRleCBw eXRob24gc3Rkb3V0CiAgQGNpbmRleCBweXRob24gcGFnaW5hdGlvbgogIEF0IHN0YXJ0dXAsIEB2 YWx1ZXtHREJOfSBvdmVycmlkZXMgUHl0aG9uJ3MgQGNvZGV7c3lzLnN0ZG91dH0gYW5kCi1JbmRl eDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZG9jL2dkYmludC50ZXhpbmZvCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9kb2MvZ2RiaW50LnRleGluZm8JMjAx MS0wNC0xOSAyMDowNDowOC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi9kb2MvZ2RiaW50LnRleGluZm8JMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAy MDAKLUBAIC0yMTA0LDYgKzIxMDQsMTggQEAgdGltZSwgYW5kIHNvIHdlIGF0dGVtcHQgdG8gaGFu ZGxlIHN5bWJvbAorZGlmZiAtLWdpdCBhL2dkYi9kb2MvZ2RiaW50LnRleGluZm8gYi9nZGIvZG9j L2dkYmludC50ZXhpbmZvCitpbmRleCAzNGVlZTkxLi4wNmE3YWRhIDEwMDY0NAorLS0tIGEvZ2Ri L2RvYy9nZGJpbnQudGV4aW5mbworKysrIGIvZ2RiL2RvYy9nZGJpbnQudGV4aW5mbworQEAgLTIx MDQsNiArMjEwNCwxOCBAQCB0aW1lLCBhbmQgc28gd2UgYXR0ZW1wdCB0byBoYW5kbGUgc3ltYm9s cyBpbmNyZW1lbnRhbGx5LiAgRm9yIGluc3RhbmNlLAogIHdlIGNyZWF0ZSBAZGZue3BhcnRpYWwg c3ltYm9sIHRhYmxlc30gY29uc2lzdGluZyBvZiBvbmx5IHNlbGVjdGVkCiAgc3ltYm9scywgYW5k IG9ubHkgZXhwYW5kIHRoZW0gdG8gZnVsbCBzeW1ib2wgdGFibGVzIHdoZW4gbmVjZXNzYXJ5Lgog IApAQCAtMTE5NSw3ICsxMTA2LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2Rv Yy9nZGJpbnQudGV4aW5mbwogIEBzZWN0aW9uIFN5bWJvbCBSZWFkaW5nCiAgCiAgQGNpbmRleCBz eW1ib2wgcmVhZGluZwotQEAgLTIxOTYsNiArMjIwOCw3IEBAIHN5bXRhYi4gIFVwb24gcmV0dXJu LCBAY29kZXtwc3QtPnJlYWRpbn0KK0BAIC0yMTk2LDYgKzIyMDgsNyBAQCBzeW10YWIuICBVcG9u IHJldHVybiwgQGNvZGV7cHN0LT5yZWFkaW59IHNob3VsZCBoYXZlIGJlZW4gc2V0IHRvIDEsIGFu ZAogIHplcm8gaWYgdGhlcmUgd2VyZSBubyBzeW1ib2xzIGluIHRoYXQgcGFydCBvZiB0aGUgc3lt Ym9sIGZpbGUuCiAgQGVuZCB0YWJsZQogIApAQCAtMTIwMyw3ICsxMTE0LDcgQEAgSW5kZXg6IGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL2RvYy9nZGJpbnQudGV4aW5mbwogIEBzZWN0aW9uIFBhcnRp YWwgU3ltYm9sIFRhYmxlcwogIAogIEB2YWx1ZXtHREJOfSBoYXMgdGhyZWUgdHlwZXMgb2Ygc3lt Ym9sIHRhYmxlczoKLUBAIC0yMjk3LDYgKzIzMTAsNyBAQCBhbmQgcGFydGlhbCBzeW1ib2wgdGFi bGVzIGJlaGluZCBhIHNldCBvCitAQCAtMjI5Nyw2ICsyMzEwLDcgQEAgYW5kIHBhcnRpYWwgc3lt Ym9sIHRhYmxlcyBiZWhpbmQgYSBzZXQgb2YgZnVuY3Rpb24gcG9pbnRlcnMga25vd24gYXMKICB0 aGUgQGRmbntxdWljayBzeW1ib2wgZnVuY3Rpb25zfS4gIFRoZXNlIGFyZSBkb2N1bWVudGVkIGlu CiAgQGZpbGV7c3ltZmlsZS5ofS4KICAKQEAgLTEyMTEsNyArMTEyMiw3IEBAIEluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi9kb2MvZ2RiaW50LnRleGluZm8KICBAc2VjdGlvbiBUeXBlcwog IAogIEB1bm51bWJlcmVkc3Vic2VjIEZ1bmRhbWVudGFsIFR5cGVzIChlLmcuLCBAY29kZXtGVF9W T0lEfSwgQGNvZGV7RlRfQk9PTEVBTn0pLgotQEAgLTIzMTksNiArMjMzMyw3IEBAIHR5cGVzIG1h cCB0byBvbmUgQGNvZGV7VFlQRV9DT0RFXyp9IHR5cGUKK0BAIC0yMzE5LDYgKzIzMzMsNyBAQCB0 eXBlcyBtYXAgdG8gb25lIEBjb2Rle1RZUEVfQ09ERV8qfSB0eXBlLCBhbmQgYXJlIGRpc3Rpbmd1 aXNoZWQgYnkKICBvdGhlciBtZW1iZXJzIG9mIHRoZSB0eXBlIHN0cnVjdCwgc3VjaCBhcyB3aGV0 aGVyIHRoZSB0eXBlIGlzIHNpZ25lZAogIG9yIHVuc2lnbmVkLCBhbmQgaG93IG1hbnkgYml0cyBp dCB1c2VzLgogIApAQCAtMTIxOSw3ICsxMTMwLDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL2RvYy9nZGJpbnQudGV4aW5mbwogIEB1bm51bWJlcmVkc3Vic2VjIEJ1aWx0aW4gVHlw ZXMgKGUuZy4sIEBjb2Rle2J1aWx0aW5fdHlwZV92b2lkfSwgQGNvZGV7YnVpbHRpbl90eXBlX2No YXJ9KS4KICAKICBUaGVzZSBhcmUgaW5zdGFuY2VzIG9mIHR5cGUgc3RydWN0cyB0aGF0IHJvdWdo bHkgY29ycmVzcG9uZCB0bwotQEAgLTIzMzMsNiArMjM0OCw3IEBAIG9ubHkgb25lIGluc3RhbmNl IGV4aXN0cywgd2hpbGUgQGZpbGV7Yy0KK0BAIC0yMzMzLDYgKzIzNDgsNyBAQCBvbmx5IG9uZSBp bnN0YW5jZSBleGlzdHMsIHdoaWxlIEBmaWxle2MtbGFuZy5jfSBidWlsZHMgYXMgbWFueQogIEBj b2Rle1RZUEVfQ09ERV9JTlR9IHR5cGVzIGFzIG5lZWRlZCwgd2l0aCBlYWNoIG9uZSBhc3NvY2lh dGVkIHdpdGgKICBzb21lIHBhcnRpY3VsYXIgb2JqZmlsZS4KICAKQEAgLTEyMzUsNyArMTE0Niw3 IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kb2MvZ2RiaW50LnRleGluZm8KICBA c2VjdGlvbiBEZWJ1Z2dpbmcgRmlsZSBGb3JtYXRzCiAgCiAgVGhpcyBzZWN0aW9uIGRlc2NyaWJl cyBjaGFyYWN0ZXJpc3RpY3Mgb2YgZGVidWdnaW5nIGluZm9ybWF0aW9uIHRoYXQKLUBAIC0yNDg5 LDYgKzI1MDYsNyBAQCBEV0FSRiAzIGlzIGFuIGltcHJvdmVkIHZlcnNpb24gb2YgRFdBUkYKK0BA IC0yNDg5LDYgKzI1MDYsNyBAQCBEV0FSRiAzIGlzIGFuIGltcHJvdmVkIHZlcnNpb24gb2YgRFdB UkYgMi4KICBAY2luZGV4IFNPTSBkZWJ1Z2dpbmcgaW5mbwogIExpa2UgQ09GRiwgdGhlIFNPTSBk ZWZpbml0aW9uIGluY2x1ZGVzIGRlYnVnZ2luZyBpbmZvcm1hdGlvbi4KICAKQEAgLTEyNDMsNyAr MTE1NCw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kb2MvZ2RiaW50LnRleGlu Zm8KICBAc2VjdGlvbiBBZGRpbmcgYSBOZXcgU3ltYm9sIFJlYWRlciB0byBAdmFsdWV7R0RCTn0K ICAKICBAY2luZGV4IGFkZGluZyBkZWJ1Z2dpbmcgaW5mbyByZWFkZXIKLUBAIC0yNTExLDYgKzI1 MjksNyBAQCB3aWxsIG9ubHkgZXZlciBiZSBpbXBsZW1lbnRlZCBieSBvbmUgb2JqCitAQCAtMjUx MSw2ICsyNTI5LDcgQEAgd2lsbCBvbmx5IGV2ZXIgYmUgaW1wbGVtZW50ZWQgYnkgb25lIG9iamVj dCBmaWxlIGZvcm1hdCBtYXkgYmUgY2FsbGVkCiAgZGlyZWN0bHkuICBUaGlzIGludGVyZmFjZSBz aG91bGQgYmUgZGVzY3JpYmVkIGluIGEgZmlsZQogIEBmaWxle2JmZC9saWJAdmFye3h5en0uaH0s IHdoaWNoIGlzIGluY2x1ZGVkIGJ5IEB2YWx1ZXtHREJOfS4KICAKQEAgLTEyNTEsNyArMTE2Miw3 IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kb2MvZ2RiaW50LnRleGluZm8KICBA c2VjdGlvbiBNZW1vcnkgTWFuYWdlbWVudCBmb3IgU3ltYm9sIEZpbGVzCiAgCiAgTW9zdCBtZW1v cnkgYXNzb2NpYXRlZCB3aXRoIGEgbG9hZGVkIHN5bWJvbCBmaWxlIGlzIHN0b3JlZCBvbgotQEAg LTI1MjIsMTAgKzI1NDEsNDUgQEAgcmVsZWFzZWQgd2hlbiB0aGUgb2JqZmlsZSBpcyB1bmxvYWRl ZCBvcgorQEAgLTI1MjIsMTAgKzI1NDEsNDUgQEAgcmVsZWFzZWQgd2hlbiB0aGUgb2JqZmlsZSBp cyB1bmxvYWRlZCBvciByZWxvYWRlZC4gIFRoZXJlZm9yZSBvbmUKICBvYmpmaWxlIG11c3Qgbm90 IHJlZmVyZW5jZSBzeW1ib2wgb3IgdHlwZSBkYXRhIGZyb20gYW5vdGhlciBvYmpmaWxlOwogIHRo ZXkgY291bGQgYmUgdW5sb2FkZWQgYXQgZGlmZmVyZW50IHRpbWVzLgogIApAQCAtMTMwMSwxMSAr MTIxMiwxMSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZG9jL2dkYmludC50ZXhp bmZvCiAgCiAgCiAgQG5vZGUgTGFuZ3VhZ2UgU3VwcG9ydAotSW5kZXg6IGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL2RvYy9vYnNlcnZlci50ZXhpCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4y MDExMDcyMi5vcmlnL2dkYi9kb2Mvb2JzZXJ2ZXIudGV4aQkyMDExLTA3LTIxIDEzOjAzOjQ3LjAw MDAwMDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2RvYy9vYnNlcnZlci50 ZXhpCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCi1AQCAtMjI3LDYgKzIyNywx MSBAQCBDYWxsZWQgYmVmb3JlIGEgdG9wLWxldmVsIHByb21wdCBpcyBkaXNwCitkaWZmIC0tZ2l0 IGEvZ2RiL2RvYy9vYnNlcnZlci50ZXhpIGIvZ2RiL2RvYy9vYnNlcnZlci50ZXhpCitpbmRleCA2 ODliMzAzLi4yZjQ2YjkzIDEwMDY0NAorLS0tIGEvZ2RiL2RvYy9vYnNlcnZlci50ZXhpCisrKysg Yi9nZGIvZG9jL29ic2VydmVyLnRleGkKK0BAIC0yMjcsNiArMjI3LDExIEBAIENhbGxlZCBiZWZv cmUgYSB0b3AtbGV2ZWwgcHJvbXB0IGlzIGRpc3BsYXllZC4gIEB2YXJ7Y3VycmVudF9wcm9tcHR9 IGlzCiAgdGhlIGN1cnJlbnQgdG9wLWxldmVsIHByb21wdC4KICBAZW5kIGRlZnR5cGVmdW4KICAK QEAgLTEzMTcsMTEgKzEyMjgsMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2Rv Yy9vYnNlcnZlci50ZXhpCiAgQGRlZnR5cGVmdW4gdm9pZCB0ZXN0X25vdGlmaWNhdGlvbiAoaW50 IEB2YXJ7c29tZWFyZ30pCiAgVGhpcyBvYnNlcnZlciBpcyB1c2VkIGZvciBpbnRlcm5hbCB0ZXN0 aW5nLiAgRG8gbm90IHVzZS4gIAogIFNlZSB0ZXN0c3VpdGUvZ2RiLmdkYi9vYnNlcnZlci5leHAu Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZHdhcmYyZXhwci5jCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9kd2FyZjJleHByLmMJMjAxMS0wNy0x NSAyMjo1NDozMi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9k d2FyZjJleHByLmMJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xMjU4 LDYgKzEyNTgsMTQgQEAgZXhlY3V0ZV9zdGFja19vcCAoc3RydWN0IGR3YXJmX2V4cHJfY29udAor ZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJleHByLmMgYi9nZGIvZHdhcmYyZXhwci5jCitpbmRleCAw NDc3OWE4Li5jNmE2NGU1IDEwMDY0NAorLS0tIGEvZ2RiL2R3YXJmMmV4cHIuYworKysrIGIvZ2Ri L2R3YXJmMmV4cHIuYworQEAgLTE0NDksNiArMTQ0OSwxNCBAQCBleGVjdXRlX3N0YWNrX29wIChz dHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsCiAgCSAgfQogIAkgIGJyZWFrOwogIApAQCAt MTMzNiwxMyArMTI0NywxMyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZHdhcmYy ZXhwci5jCiAgCWRlZmF1bHQ6CiAgCSAgZXJyb3IgKF8oIlVuaGFuZGxlZCBkd2FyZiBleHByZXNz aW9uIG9wY29kZSAweCV4IiksIG9wKTsKICAJfQotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL2R3YXJmMmV4cHIuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3Jp Zy9nZGIvZHdhcmYyZXhwci5oCTIwMTEtMDctMTUgMjI6NTQ6MzIuMDAwMDAwMDAwICswMjAwCi0r KysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZHdhcmYyZXhwci5oCTIwMTEtMDctMjkgMjI6NTI6 MDIuMDAwMDAwMDAwICswMjAwCi1AQCAtNjIsMTIgKzYyLDEwIEBAIHN0cnVjdCBkd2FyZl9leHBy X2NvbnRleHRfZnVuY3MKLSAgICAgIG1lYW5pbmdmdWwgdG8gc3Vic3RpdHV0ZSBhIHN0dWIgdHlw ZSBvZiB0aGUgY29ycmVjdCBzaXplLiAgKi8KLSAgIHN0cnVjdCB0eXBlICooKmdldF9iYXNlX3R5 cGUpIChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsIHNpemVfdCBkaWUpOworZGlmZiAt LWdpdCBhL2dkYi9kd2FyZjJleHByLmggYi9nZGIvZHdhcmYyZXhwci5oCitpbmRleCAyYzFkYTI2 Li5kZWFmYmU4IDEwMDY0NAorLS0tIGEvZ2RiL2R3YXJmMmV4cHIuaAorKysrIGIvZ2RiL2R3YXJm MmV4cHIuaAorQEAgLTczLDEyICs3MywxMCBAQCBzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0X2Z1 bmNzCisgCQkJCSAgICAgIGludCBkd2FyZl9yZWcsIENPUkVfQUREUiBmYl9vZmZzZXQsCisgCQkJ CSAgICAgIGludCBkZXJlZl9zaXplKTsKICAKIC0jaWYgMAogICAgLyogTm90IHlldCBpbXBsZW1l bnRlZC4gICovCkBAIC0xMzUzLDExICsxMjY0LDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi9kd2FyZjJleHByLmgKICB9OwogIAogIC8qIFRoZSBsb2NhdGlvbiBvZiBhIHZhbHVl LiAgKi8KLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJsb2MuYwotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvZHdhcmYybG9jLmMJMjAxMS0w Ny0xOSAyMjoyODo1Mi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi9kd2FyZjJsb2MuYwkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAotQEAgLTEz NCw2ICsxMzQsOSBAQCBzdHJ1Y3QgZHdhcmZfZXhwcl9iYXRvbgorZGlmZiAtLWdpdCBhL2dkYi9k d2FyZjJsb2MuYyBiL2dkYi9kd2FyZjJsb2MuYworaW5kZXggNzU0N2E0MC4uYmM4MDE1YyAxMDA2 NDQKKy0tLSBhL2dkYi9kd2FyZjJsb2MuYworKysrIGIvZ2RiL2R3YXJmMmxvYy5jCitAQCAtMTU4 LDYgKzE1OCw5IEBAIHN0cnVjdCBkd2FyZl9leHByX2JhdG9uCiAgewogICAgc3RydWN0IGZyYW1l X2luZm8gKmZyYW1lOwogICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1OwpAQCAt MTM2Nyw3ICsxMjc4LDE3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJs b2MuYwogIH07CiAgCiAgLyogSGVscGVyIGZ1bmN0aW9ucyBmb3IgZHdhcmYyX2V2YWx1YXRlX2xv Y19kZXNjLiAgKi8KLUBAIC0yMDIsMjMgKzIwNSwzMyBAQCBkd2FyZl9leHByX2ZyYW1lX2Jhc2Vf MSAoc3RydWN0IHN5bWJvbCAqCitAQCAtMjE3LDE2ICsyMjAsMTQgQEAgc3RhdGljIHZvaWQKKyBk d2FyZl9leHByX2ZyYW1lX2Jhc2VfMSAoc3RydWN0IHN5bWJvbCAqZnJhbWVmdW5jLCBDT1JFX0FE RFIgcGMsCisgCQkJIGNvbnN0IGdkYl9ieXRlICoqc3RhcnQsIHNpemVfdCAqbGVuZ3RoKQorIHsK Ky0gIGlmIChTWU1CT0xfTE9DQVRJT05fQkFUT04gKGZyYW1lZnVuYykgPT0gTlVMTCkKKy0gICAg Kmxlbmd0aCA9IDA7CistICBlbHNlIGlmIChTWU1CT0xfQ09NUFVURURfT1BTIChmcmFtZWZ1bmMp ID09ICZkd2FyZjJfbG9jbGlzdF9mdW5jcykKKysgIGlmIChTWU1CT0xfQ09NUFVURURfT1BTIChm cmFtZWZ1bmMpID09ICZkd2FyZjJfbG9jbGlzdF9mdW5jcykKKyAgICAgeworICAgICAgIHN0cnVj dCBkd2FyZjJfbG9jbGlzdF9iYXRvbiAqc3ltYmF0b247CisgCiAgICAgICAgc3ltYmF0b24gPSBT WU1CT0xfTE9DQVRJT05fQkFUT04gKGZyYW1lZnVuYyk7CiAgICAgICAgKnN0YXJ0ID0gZHdhcmYy X2ZpbmRfbG9jYXRpb25fZXhwcmVzc2lvbiAoc3ltYmF0b24sIGxlbmd0aCwgcGMpOwogICAgICB9 CkBAIC0xMzc2LDE3ICsxMjk3LDkgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2R3 YXJmMmxvYy5jCiAgICAgIHsKICAgICAgICBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKnN5 bWJhdG9uOwogIAotICAgICAgIHN5bWJhdG9uID0gU1lNQk9MX0xPQ0FUSU9OX0JBVE9OIChmcmFt ZWZ1bmMpOwotLSAgICAgIGlmIChzeW1iYXRvbiAhPSBOVUxMKQotLQl7Ci0tCSAgKmxlbmd0aCA9 IHN5bWJhdG9uLT5zaXplOwotLQkgICpzdGFydCA9IHN5bWJhdG9uLT5kYXRhOwotLQl9Ci0tICAg ICAgZWxzZQotLQkqc3RhcnQgPSBOVUxMOwotKyAgICAgIGdkYl9hc3NlcnQgKHN5bWJhdG9uICE9 IE5VTEwpOwotKyAgICAgICpzdGFydCA9IHN5bWJhdG9uLT5kYXRhOwotKyAgICAgICpsZW5ndGgg PSBzeW1iYXRvbi0+c2l6ZTsKK0BAIC0yMzksMTAgKzI0MCwyMyBAQCBkd2FyZl9leHByX2ZyYW1l X2Jhc2VfMSAoc3RydWN0IHN5bWJvbCAqZnJhbWVmdW5jLCBDT1JFX0FERFIgcGMsCisgICAgICAg ZWxzZQorIAkqbGVuZ3RoID0gMDsKICAgICAgfQogKyAgZWxzZSBpZiAoU1lNQk9MX0NPTVBVVEVE X09QUyAoZnJhbWVmdW5jKSA9PSAmZHdhcmYyX21pc3NpbmdfZnVuY3MpCiArICAgIHsKQEAgLTEz OTQsOCArMTMwNyw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJsb2Mu YwogKwogKyAgICAgIHN5bWJhdG9uID0gU1lNQk9MX0xPQ0FUSU9OX0JBVE9OIChmcmFtZWZ1bmMp OwogKyAgICAgIGdkYl9hc3NlcnQgKHN5bWJhdG9uID09IE5VTEwpOwotKyAgICAgICpzdGFydCA9 IE5VTEw7Ci0rICAgICAgKmxlbmd0aCA9IDA7CS8qIHVudXNlZCAqLworKyAgICAgICpsZW5ndGgg PSAwOwogKyAgICB9CiArICBlbHNlCiArICAgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19M SU5FX18sCkBAIC0xNDAzLDE0ICsxMzE1LDE0IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi9kd2FyZjJsb2MuYwogKwkJICAgIFNZTUJPTF9DT01QVVRFRF9PUFMgKGZyYW1lZnVuYyks CiArCQkgICAgU1lNQk9MX1BSSU5UX05BTUUgKGZyYW1lZnVuYykpOwogIAotICAgaWYgKCpzdGFy dCA9PSBOVUxMKQorICAgaWYgKCpsZW5ndGggPT0gMCkKICAgICAgZXJyb3IgKF8oIkNvdWxkIG5v dCBmaW5kIHRoZSBmcmFtZSBiYXNlIGZvciBcIiVzXCIuIiksCiAtCSAgIFNZTUJPTF9OQVRVUkFM X05BTUUgKGZyYW1lZnVuYykpOwogKwkgICBTWU1CT0xfUFJJTlRfTkFNRSAoZnJhbWVmdW5jKSk7 CiAgfQogIAogIC8qIEhlbHBlciBmdW5jdGlvbiBmb3IgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNj LiAgQ29tcHV0ZXMgdGhlIENGQSBmb3IKLUBAIC0yOTEsNiArMzA0LDg1IEBAIGR3YXJmX2V4cHJf ZHdhcmZfY2FsbCAoc3RydWN0IGR3YXJmX2V4cHIKK0BAIC0zMTAsNiArMzI0LDg1IEBAIGR3YXJm X2V4cHJfZHdhcmZfY2FsbCAoc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4LCBzaXplX3Qg ZGllX29mZnNldCkKICAJCSAgICAgY3R4LT5mdW5jcy0+Z2V0X2ZyYW1lX3BjLCBjdHgtPmJhdG9u KTsKICB9CiAgCkBAIC0xNDk2LDggKzE0MDgsMjYgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL2R3YXJmMmxvYy5jCiAgLyogQ2FsbGJhY2sgZnVuY3Rpb24gZm9yIGR3YXJmMl9ldmFs dWF0ZV9sb2NfZGVzYy4gICovCiAgCiAgc3RhdGljIHN0cnVjdCB0eXBlICoKLUBAIC0zMDEsNiAr MzkzLDg1IEBAIGR3YXJmX2V4cHJfZ2V0X2Jhc2VfdHlwZSAoc3RydWN0IGR3YXJmX2UKLSAgIHJl dHVybiBkd2FyZjJfZ2V0X2RpZV90eXBlIChkaWVfb2Zmc2V0LCBkZWJhdG9uLT5wZXJfY3UpOwor QEAgLTk5MSwxMCArMTA4NCwxMiBAQCBkd2FyZl9leHByX3B1c2hfZHdhcmZfcmVnX2VudHJ5X3Zh bHVlIChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsCisgCisgICBzYXZlZF9jdHguZ2Ri YXJjaCA9IGN0eC0+Z2RiYXJjaDsKKyAgIHNhdmVkX2N0eC5hZGRyX3NpemUgPSBjdHgtPmFkZHJf c2l6ZTsKKysgIHNhdmVkX2N0eC5yZWZfYWRkcl9zaXplID0gY3R4LT5yZWZfYWRkcl9zaXplOwor ICAgc2F2ZWRfY3R4Lm9mZnNldCA9IGN0eC0+b2Zmc2V0OworICAgc2F2ZWRfY3R4LmJhdG9uID0g Y3R4LT5iYXRvbjsKKyAgIGN0eC0+Z2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKGR3YXJmMl9w ZXJfY3Vfb2JqZmlsZSAoYmF0b25fbG9jYWwucGVyX2N1KSk7CisgICBjdHgtPmFkZHJfc2l6ZSA9 IGR3YXJmMl9wZXJfY3VfYWRkcl9zaXplIChiYXRvbl9sb2NhbC5wZXJfY3UpOworKyAgY3R4LT5y ZWZfYWRkcl9zaXplID0gZHdhcmYyX3Blcl9jdV9yZWZfYWRkcl9zaXplIChiYXRvbl9sb2NhbC5w ZXJfY3UpOworICAgY3R4LT5vZmZzZXQgPSBkd2FyZjJfcGVyX2N1X3RleHRfb2Zmc2V0IChiYXRv bl9sb2NhbC5wZXJfY3UpOworICAgY3R4LT5iYXRvbiA9ICZiYXRvbl9sb2NhbDsKKyAKK0BAIC0x MDAyLDEwICsxMDk3LDkyIEBAIGR3YXJmX2V4cHJfcHVzaF9kd2FyZl9yZWdfZW50cnlfdmFsdWUg KHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwKKyAKKyAgIGN0eC0+Z2RiYXJjaCA9IHNh dmVkX2N0eC5nZGJhcmNoOworICAgY3R4LT5hZGRyX3NpemUgPSBzYXZlZF9jdHguYWRkcl9zaXpl OworKyAgY3R4LT5yZWZfYWRkcl9zaXplID0gc2F2ZWRfY3R4LnJlZl9hZGRyX3NpemU7CisgICBj dHgtPm9mZnNldCA9IHNhdmVkX2N0eC5vZmZzZXQ7CisgICBjdHgtPmJhdG9uID0gc2F2ZWRfY3R4 LmJhdG9uOwogIH0KICAKICsvKiBWaXJ0dWFsIG1ldGhvZCB0YWJsZSBmb3IgZHdhcmYyX2V2YWx1 YXRlX2xvY19kZXNjX2Z1bGwgYmVsb3cuICAqLwpAQCAtMTUxMiw2ICsxNDQyLDcgQEAgSW5kZXg6 IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJmMmxvYy5jCiArICBkd2FyZl9leHByX3Rsc19h ZGRyZXNzLAogKyAgZHdhcmZfZXhwcl9kd2FyZl9jYWxsLAogKyAgZHdhcmZfZXhwcl9nZXRfYmFz ZV90eXBlLAorKyAgZHdhcmZfZXhwcl9wdXNoX2R3YXJmX3JlZ19lbnRyeV92YWx1ZSwKICsgIGR3 YXJmX2V4cHJfb2JqZWN0X2FkZHJlc3MKICt9OwogKwpAQCAtMTUzNSw2ICsxNDY2LDcgQEAgSW5k ZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJmMmxvYy5jCiArCiArICBjdHgtPmdkYmFy Y2ggPSBnZXRfb2JqZmlsZV9hcmNoIChvYmpmaWxlKTsKICsgIGN0eC0+YWRkcl9zaXplID0gZHdh cmYyX3Blcl9jdV9hZGRyX3NpemUgKHBlcl9jdSk7CisrICBjdHgtPnJlZl9hZGRyX3NpemUgPSBk d2FyZjJfcGVyX2N1X3JlZl9hZGRyX3NpemUgKHBlcl9jdSk7CiArICBjdHgtPm9mZnNldCA9IGR3 YXJmMl9wZXJfY3VfdGV4dF9vZmZzZXQgKHBlcl9jdSk7CiArICBjdHgtPmJhdG9uID0gJmJhdG9u OwogKyAgY3R4LT5mdW5jcyA9ICZkd2FyZl9leHByX2N0eF9mdW5jczsKQEAgLTE1NzksMTAgKzE1 MTEsMTAgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJmMmxvYy5jCiArICBy ZXR1cm4gcmV0dmFsOwogK30KICsKLSBzdHJ1Y3QgcGllY2VfY2xvc3VyZQotIHsKLSAgIC8qIFJl ZmVyZW5jZSBjb3VudC4gICovCi1AQCAtMTA4MiwyMCArMTI1Myw2IEBAIGludmFsaWRfc3ludGhl dGljX3BvaW50ZXIgKHZvaWQpCisgLyogVkFMVUUgbXVzdCBiZSBvZiB0eXBlIGx2YWxfY29tcHV0 ZWQgd2l0aCBlbnRyeV9kYXRhX3ZhbHVlX2Z1bmNzLiAgUGVyZm9ybQorICAgIHRoZSBpbmRpcmVj dCBtZXRob2Qgb24gaXQsIHRoYXQgaXMgdXNlIGl0cyBzdG9yZWQgdGFyZ2V0IHZhbHVlLCB0aGUg c29sZQorICAgIHB1cnBvc2Ugb2YgZW50cnlfZGF0YV92YWx1ZV9mdW5jcy4uICAqLworQEAgLTE5 MjgsMjEgKzIxMDUsNiBAQCBpbnZhbGlkX3N5bnRoZXRpY19wb2ludGVyICh2b2lkKQogIAkgICAi cmVmZXJlbmNlZCB2aWEgc3ludGhldGljIHBvaW50ZXIiKSk7CiAgfQogIApAQCAtMTU5NywyNCAr MTUyOSwyMiBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZHdhcmYybG9jLmMKIC0g IGR3YXJmX2V4cHJfZnJhbWVfcGMsCiAtICBkd2FyZl9leHByX3Rsc19hZGRyZXNzLAogLSAgZHdh cmZfZXhwcl9kd2FyZl9jYWxsLAotLSAgZHdhcmZfZXhwcl9nZXRfYmFzZV90eXBlCistICBkd2Fy Zl9leHByX2dldF9iYXNlX3R5cGUsCistICBkd2FyZl9leHByX3B1c2hfZHdhcmZfcmVnX2VudHJ5 X3ZhbHVlCiAtfTsKIC0KICAvKiBFdmFsdWF0ZSBhIGxvY2F0aW9uIGRlc2NyaXB0aW9uLCBzdGFy dGluZyBhdCBEQVRBIGFuZCB3aXRoIGxlbmd0aAogICAgIFNJWkUsIHRvIGZpbmQgdGhlIGN1cnJl bnQgbG9jYXRpb24gb2YgdmFyaWFibGUgb2YgVFlQRSBpbiB0aGUKICAgICBjb250ZXh0IG9mIEZS QU1FLiAgQllURV9PRkZTRVQgaXMgYXBwbGllZCBhZnRlciB0aGUgY29udGVudHMgYXJlCi1AQCAt MTEwOCwxMCArMTI2NSw4IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzY19mdWxsIChzdHJ1Y3Qg dHkKK0BAIC0xOTU1LDcgKzIxMTcsNiBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2NfZnVsbCAo c3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKICAJCQkgICAgICAg TE9OR0VTVCBieXRlX29mZnNldCkKICB7CiAgICBzdHJ1Y3QgdmFsdWUgKnJldHZhbDsKIC0gIHN0 cnVjdCBkd2FyZl9leHByX2JhdG9uIGJhdG9uOwogICAgc3RydWN0IGR3YXJmX2V4cHJfY29udGV4 dCAqY3R4OwogICAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbiwgKnZhbHVlX2NoYWluOwotLSAg c3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBkd2FyZjJfcGVyX2N1X29iamZpbGUgKHBlcl9jdSk7 Ci0gICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBleDsKLSAKLSAgIGlmIChieXRlX29m ZnNldCA8IDApCi1AQCAtMTEyMCwyOCArMTI3NSwxOCBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rl c2NfZnVsbCAoc3RydWN0IHR5CisgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IGR3YXJmMl9w ZXJfY3Vfb2JqZmlsZSAocGVyX2N1KTsKK0BAIC0xOTY3LDI5ICsyMTI4LDE4IEBAIGR3YXJmMl9l dmFsdWF0ZV9sb2NfZGVzY19mdWxsIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGZyYW1lX2lu Zm8gKmZyYW1lLAogICAgaWYgKHNpemUgPT0gMCkKICAgICAgcmV0dXJuIGFsbG9jYXRlX29wdGlt aXplZF9vdXRfdmFsdWUgKHR5cGUpOwogIApAQCAtMTYyNyw2ICsxNTU3LDcgQEAgSW5kZXg6IGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJmMmxvYy5jCiAgCiAtICBjdHgtPmdkYmFyY2ggPSBn ZXRfb2JqZmlsZV9hcmNoIChvYmpmaWxlKTsKIC0gIGN0eC0+YWRkcl9zaXplID0gZHdhcmYyX3Bl cl9jdV9hZGRyX3NpemUgKHBlcl9jdSk7CistICBjdHgtPnJlZl9hZGRyX3NpemUgPSBkd2FyZjJf cGVyX2N1X3JlZl9hZGRyX3NpemUgKHBlcl9jdSk7CiAtICBjdHgtPm9mZnNldCA9IGR3YXJmMl9w ZXJfY3VfdGV4dF9vZmZzZXQgKHBlcl9jdSk7CiAtICBjdHgtPmJhdG9uID0gJmJhdG9uOwogLSAg Y3R4LT5mdW5jcyA9ICZkd2FyZl9leHByX2N0eF9mdW5jczsKQEAgLTE2NDQsNyArMTU3NSw3IEBA IEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJsb2MuYwogIAkgIHJldHZhbCA9 IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsKICAJICBtYXJrX3ZhbHVlX2J5dGVzX3VuYXZhaWxhYmxl IChyZXR2YWwsIDAsIFRZUEVfTEVOR1RIICh0eXBlKSk7CiAgCSAgcmV0dXJuIHJldHZhbDsKLUBA IC0xMTk4LDYgKzEzNDMsMTYgQEAgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1bGwgKHN0cnVj dCB0eQorQEAgLTIwNTMsNiArMjIwMywxNiBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2NfZnVs bCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKICAJICAgIGlu dCBpbl9zdGFja19tZW1vcnkgPSBkd2FyZl9leHByX2ZldGNoX2luX3N0YWNrX21lbW9yeSAoY3R4 LCAwKTsKICAKICAJICAgIGRvX2NsZWFudXBzICh2YWx1ZV9jaGFpbik7CkBAIC0xNjYxLDcgKzE1 OTIsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZHdhcmYybG9jLmMKICAJICAg IHJldHZhbCA9IGFsbG9jYXRlX3ZhbHVlX2xhenkgKHR5cGUpOwogIAkgICAgVkFMVUVfTFZBTCAo cmV0dmFsKSA9IGx2YWxfbWVtb3J5OwogIAkgICAgaWYgKGluX3N0YWNrX21lbW9yeSkKLUBAIC0y OTc0LDExICszMTI5LDUxIEBAIGxvY2xpc3RfdHJhY2Vwb2ludF92YXJfcmVmIChzdHJ1Y3Qgc3lt Ym8KK0BAIC0zODk3LDggKzQwNTcsNyBAQCBsb2NsaXN0X3RyYWNlcG9pbnRfdmFyX3JlZiAoc3Ry dWN0IHN5bWJvbCAqc3ltYm9sLCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKICAJCQkgICAgICAg ZGxiYXRvbi0+cGVyX2N1KTsKICB9CiAgCkBAIC0xNjcwLDExICsxNjAxLDExIEBAIEluZGV4OiBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJsb2MuYwogKy8qIFRoZSBzZXQgb2YgbG9jYXRp b24gZnVuY3Rpb25zIHVzZWQgd2l0aCB0aGUgRFdBUkYtMiBsb2NhdGlvbiBsaXN0cy4gICovCiAg Y29uc3Qgc3RydWN0IHN5bWJvbF9jb21wdXRlZF9vcHMgZHdhcmYyX2xvY2xpc3RfZnVuY3MgPSB7 CiAgICBsb2NsaXN0X3JlYWRfdmFyaWFibGUsCi0gICBsb2NsaXN0X3JlYWRfbmVlZHNfZnJhbWUs Ci0gICBsb2NsaXN0X2Rlc2NyaWJlX2xvY2F0aW9uLAorICAgbG9jbGlzdF9yZWFkX3ZhcmlhYmxl X2F0X2VudHJ5LAorQEAgLTM5MDcsNiArNDA2Niw0OCBAQCBjb25zdCBzdHJ1Y3Qgc3ltYm9sX2Nv bXB1dGVkX29wcyBkd2FyZjJfbG9jbGlzdF9mdW5jcyA9IHsKICAgIGxvY2xpc3RfdHJhY2Vwb2lu dF92YXJfcmVmCiAgfTsKLSsKKyAKICtzdGF0aWMgc3RydWN0IHZhbHVlICoKICttaXNzaW5nX3Jl YWRfdmFyaWFibGUgKHN0cnVjdCBzeW1ib2wgKnN5bWJvbCwgc3RydWN0IGZyYW1lX2luZm8gKmZy YW1lKQogK3sKQEAgLTE3MTEsMTUgKzE2NDIsMjAgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL2R3YXJmMmxvYy5jCiArICAgdW5hYmxlIHRvIHJlc29sdmUgdGhlIHN5bWJvbHMuICAq LwogK2NvbnN0IHN0cnVjdCBzeW1ib2xfY29tcHV0ZWRfb3BzIGR3YXJmMl9taXNzaW5nX2Z1bmNz ID0gewogKyAgbWlzc2luZ19yZWFkX3ZhcmlhYmxlLAorKyAgbWlzc2luZ19yZWFkX3ZhcmlhYmxl LAkvKiByZWFkX3ZhcmlhYmxlX2F0X2VudHJ5ICovCiArICBtaXNzaW5nX3JlYWRfbmVlZHNfZnJh bWUsCiArICBtaXNzaW5nX2Rlc2NyaWJlX2xvY2F0aW9uLAogKyAgbWlzc2luZ190cmFjZXBvaW50 X3Zhcl9yZWYKICt9OwotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJmMmxvYy5o Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9kd2FyZjJsb2Mu aAkyMDExLTA1LTEyIDE5OjQwOjU0LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL2R3YXJmMmxvYy5oCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAw Ci1AQCAtMTEwLDYgKzExMCwxNSBAQCBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24KKysKKyB2 b2lkCisgX2luaXRpYWxpemVfZHdhcmYybG9jICh2b2lkKQorIHsKK2RpZmYgLS1naXQgYS9nZGIv ZHdhcmYybG9jLmggYi9nZGIvZHdhcmYybG9jLmgKK2luZGV4IDgxOTY3OTEuLmRmMjU3MGQgMTAw NjQ0CistLS0gYS9nZGIvZHdhcmYybG9jLmgKKysrKyBiL2dkYi9kd2FyZjJsb2MuaAorQEAgLTEx OSw2ICsxMTksMTUgQEAgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uCiAgCiAgZXh0ZXJuIGNv bnN0IHN0cnVjdCBzeW1ib2xfY29tcHV0ZWRfb3BzIGR3YXJmMl9sb2NleHByX2Z1bmNzOwogIGV4 dGVybiBjb25zdCBzdHJ1Y3Qgc3ltYm9sX2NvbXB1dGVkX29wcyBkd2FyZjJfbG9jbGlzdF9mdW5j czsKQEAgLTE3MzUsMTEgKzE2NzEsMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L2R3YXJmMmxvYy5oCiAgCiAgLyogQ29tcGlsZSBhIERXQVJGIGxvY2F0aW9uIGV4cHJlc3Npb24g dG8gYW4gYWdlbnQgZXhwcmVzc2lvbi4KICAgICAKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi9kd2FyZjJyZWFkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9y aWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDExLTA3LTI5IDIyOjUyOjAwLjAwMDAwMDAwMCArMDIwMAot KysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJmMnJlYWQuYwkyMDExLTA3LTI5IDIyOjUy OjAyLjAwMDAwMDAwMCArMDIwMAotQEAgLTEyNTEsNiArMTI1MSw5IEBAIHN0YXRpYyB2b2lkIGZp bGxfaW5fbG9jbGlzdF9iYXRvbiAoc3RydWMKK2RpZmYgLS1naXQgYS9nZGIvZHdhcmYycmVhZC5j IGIvZ2RiL2R3YXJmMnJlYWQuYworaW5kZXggODA3Mjg1OS4uOWFkYTVjNSAxMDA2NDQKKy0tLSBh L2dkYi9kd2FyZjJyZWFkLmMKKysrKyBiL2dkYi9kd2FyZjJyZWFkLmMKK0BAIC0xMjUwLDYgKzEy NTAsOSBAQCBzdGF0aWMgdm9pZCBmaWxsX2luX2xvY2xpc3RfYmF0b24gKHN0cnVjdCBkd2FyZjJf Y3UgKmN1LAogIAkJCQkgICBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKmJhdG9uLAogIAkJ CQkgICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyKTsKICAKQEAgLTE3NDksNyArMTY4NSw3IEBAIElu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJyZWFkLmMKICBzdGF0aWMgdm9pZCBk d2FyZjJfc3ltYm9sX21hcmtfY29tcHV0ZWQgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsCiAgCQkJ CQkgc3RydWN0IHN5bWJvbCAqc3ltLAogIAkJCQkJIHN0cnVjdCBkd2FyZjJfY3UgKmN1KTsKLUBA IC0xMjg1LDYgKzEyODgsOSBAQCBzdGF0aWMgdm9pZCBhZ2VfY2FjaGVkX2NvbXBfdW5pdHMgKHZv aWQpCitAQCAtMTI4NCw2ICsxMjg3LDkgQEAgc3RhdGljIHZvaWQgYWdlX2NhY2hlZF9jb21wX3Vu aXRzICh2b2lkKTsKICAKICBzdGF0aWMgdm9pZCBmcmVlX29uZV9jYWNoZWRfY29tcF91bml0ICh2 b2lkICopOwogIApAQCAtMTc1OSw3ICsxNjk1LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL2R3YXJmMnJlYWQuYwogIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqc2V0X2RpZV90eXBlIChz dHJ1Y3QgZGllX2luZm8gKiwgc3RydWN0IHR5cGUgKiwKICAJCQkJICBzdHJ1Y3QgZHdhcmYyX2N1 ICopOwogIAotQEAgLTEzMDksNiArMTMxNSw5IEBAIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqZ2V0X2Rp ZV90eXBlX2F0X29mZnMKK0BAIC0xMzA3LDYgKzEzMTMsOSBAQCBzdGF0aWMgc3RydWN0IHR5cGUg KmdldF9kaWVfdHlwZV9hdF9vZmZzZXQgKHVuc2lnbmVkIGludCwKICAKICBzdGF0aWMgc3RydWN0 IHR5cGUgKmdldF9kaWVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJf Y3UgKmN1KTsKICAKQEAgLTE3NjgsOCArMTcwNCw4IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi9kd2FyZjJyZWFkLmMKICsKICBzdGF0aWMgdm9pZCBkd2FyZjJfcmVsZWFzZV9xdWV1 ZSAodm9pZCAqZHVtbXkpOwogIAotIHN0YXRpYyB2b2lkIHF1ZXVlX2NvbXBfdW5pdCAoc3RydWN0 IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1LAotQEAgLTc3ODUsNiArNzc5NCwyOSBAQCBwcm9j ZXNzX2VudW1lcmF0aW9uX3Njb3BlIChzdHJ1Y3QgZGllX2luCisgc3RhdGljIHZvaWQgcXVldWVf Y29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UpOworQEAgLTgwODMs NiArODA5MiwyOSBAQCBwcm9jZXNzX2VudW1lcmF0aW9uX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8g KmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICBuZXdfc3ltYm9sIChkaWUsIHRoaXNfdHlw ZSwgY3UpOwogIH0KICAKQEAgLTE3OTksNyArMTczNSw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi9kd2FyZjJyZWFkLmMKICAvKiBFeHRyYWN0IGFsbCBpbmZvcm1hdGlvbiBmcm9t IGEgRFdfVEFHX2FycmF5X3R5cGUgRElFIGFuZCBwdXQgaXQgaW4KICAgICB0aGUgRElFJ3MgdHlw ZSBmaWVsZC4gIEZvciBub3csIHRoaXMgb25seSBoYW5kbGVzIG9uZSBkaW1lbnNpb25hbAogICAg IGFycmF5cy4gICovCi1AQCAtNzc5OCw3ICs3ODMwLDcgQEAgcmVhZF9hcnJheV90eXBlIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgcworQEAgLTgwOTYsNyArODEyOCw3IEBAIHJlYWRfYXJyYXlfdHlw ZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgc3RydWN0 IHR5cGUgKmVsZW1lbnRfdHlwZSwgKnJhbmdlX3R5cGUsICppbmRleF90eXBlOwogICAgc3RydWN0 IHR5cGUgKipyYW5nZV90eXBlcyA9IE5VTEw7CiAgICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwpA QCAtMTgwOCw3ICsxNzQ0LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJm MnJlYWQuYwogICAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87CiAgICBjaGFyICpuYW1lOwogIAot QEAgLTc4NTEsMTcgKzc4ODMsMTkgQEAgcmVhZF9hcnJheV90eXBlIChzdHJ1Y3QgZGllX2luZm8g KmRpZSwgcworQEAgLTgxNDksMTcgKzgxODEsMTkgQEAgcmVhZF9hcnJheV90eXBlIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICB0eXBlID0gZWxlbWVudF90 eXBlOwogIAogICAgaWYgKHJlYWRfYXJyYXlfb3JkZXIgKGRpZSwgY3UpID09IERXX09SRF9jb2xf bWFqb3IpCkBAIC0xODM5LDcgKzE3NzUsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvZHdhcmYycmVhZC5jCiAgCiAgICAvKiBVbmRlcnN0YW5kIER3YXJmMiBzdXBwb3J0IGZvciB2 ZWN0b3IgdHlwZXMgKGxpa2UgdGhleSBvY2N1ciBvbgogICAgICAgdGhlIFBvd2VyUEMgdy8gQWx0 aVZlYykuICBHY2MganVzdCBhZGRzIGFub3RoZXIgYXR0cmlidXRlIHRvIHRoZQotQEAgLTgzNDUs MjkgKzgzNzksMTE0IEBAIHJlYWRfdGFnX3N0cmluZ190eXBlIChzdHJ1Y3QgZGllX2luZm8gKmQK K0BAIC04NjQzLDI5ICs4Njc3LDExNCBAQCByZWFkX3RhZ19zdHJpbmdfdHlwZSAoc3RydWN0IGRp ZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgc3RydWN0IGdkYmFyY2ggKmdk YmFyY2ggPSBnZXRfb2JqZmlsZV9hcmNoIChvYmpmaWxlKTsKICAgIHN0cnVjdCB0eXBlICp0eXBl LCAqcmFuZ2VfdHlwZSwgKmluZGV4X3R5cGUsICpjaGFyX3R5cGU7CiAgICBzdHJ1Y3QgYXR0cmli dXRlICphdHRyOwpAQCAtMTk2Nyw3ICsxOTAzLDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL2R3YXJmMnJlYWQuYwogICAgY2hhcl90eXBlID0gbGFuZ3VhZ2Vfc3RyaW5nX2NoYXJf dHlwZSAoY3UtPmxhbmd1YWdlX2RlZm4sIGdkYmFyY2gpOwogICAgdHlwZSA9IGNyZWF0ZV9zdHJp bmdfdHlwZSAoTlVMTCwgY2hhcl90eXBlLCByYW5nZV90eXBlKTsKICAKLUBAIC04NjU4LDggKzg3 NzcsNyBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllCitAQCAtODk2 OSw4ICs5MDg4LDcgQEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwg c3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICBzdHJ1Y3QgdHlwZSAqYmFzZV90eXBlOwogICAgc3Ry dWN0IHR5cGUgKnJhbmdlX3R5cGU7CiAgICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwpAQCAtMTk3 Nyw3ICsxOTEzLDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJmMnJlYWQu YwogICAgY2hhciAqbmFtZTsKICAgIExPTkdFU1QgbmVnYXRpdmVfbWFzazsKICAKLUBAIC04Njcy LDUzICs4NzkwLDEyNiBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGll CitAQCAtODk4Myw1MyArOTEwMSwxMjYgQEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGll X2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICBpZiAocmFuZ2VfdHlwZSkKICAg ICAgcmV0dXJuIHJhbmdlX3R5cGU7CiAgCkBAIC0xOTg5LDQzICsxOTI1LDIzIEBAIEluZGV4OiBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJyZWFkLmMKICsgIC8qIExPV19CT1VORCBhbmQg SElHSF9CT1VORCBhcmUgc2V0IGZvciByZWFsIGJlbG93LiAgKi8KICsgIHJhbmdlX3R5cGUgPSBj cmVhdGVfcmFuZ2VfdHlwZSAoTlVMTCwgYmFzZV90eXBlLCAwLCAtMSk7CiArICBUWVBFX1VOU0lH TkVEIChyYW5nZV90eXBlKSA9IDA7Ci0gCi0tICAvKiBGSVhNRTogRm9yIHZhcmlhYmxlIHNpemVk IGFycmF5cyBlaXRoZXIgb2YgdGhlc2UgY291bGQgYmUKLS0gICAgIGEgdmFyaWFibGUgcmF0aGVy IHRoYW4gYSBjb25zdGFudCB2YWx1ZS4gIFdlJ2xsIGFsbG93IGl0LAotLSAgICAgYnV0IHdlIGRv bid0IGtub3cgaG93IHRvIGhhbmRsZSBpdC4gICovCi0tICBhdHRyID0gZHdhcmYyX2F0dHIgKGRp ZSwgRFdfQVRfbG93ZXJfYm91bmQsIGN1KTsKLS0gIGlmIChhdHRyKQotLSAgICBsb3cgPSBkd2Fy ZjJfZ2V0X2F0dHJfY29uc3RhbnRfdmFsdWUgKGF0dHIsIDApOworKwogKyAgbmVnYXRpdmVfbWFz ayA9IAogKyAgICAoTE9OR0VTVCkgLTEgPDwgKFRZUEVfTEVOR1RIIChiYXNlX3R5cGUpICogVEFS R0VUX0NIQVJfQklUIC0gMSk7Ci0gCi0tICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRf dXBwZXJfYm91bmQsIGN1KTsKLS0gIGlmIChhdHRyKQorKwogKyAgLyogRXhjbHVkZSBsYW5ndWFn ZV9hZGEgZnJvbSBhbnkgVFlQRV9EWU5BTUlDIGNvbnN0cnVjdHMgYmVsb3cuICBHREIgQWRhCiAr ICAgICBzdXBwb3J0cyBpbXBsZW1lbnRzIHRoZSBkeW5hbWljIGJvdW5kcyBpbiBhIG5vbi1EV0FS RiB3YXkgYW5kIHRoZQogKyAgICAgZXhpc3RpbmcgRFdBUkYgZHluYW1pYyBib3VuZHMgYXJlIGlu dmFsaWQsIGxlYWRpbmcgdG8gbWVtb3J5IGFjY2VzcwogKyAgICAgZXJyb3JzLiAgKi8KLSsKLSsg IGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9sb3dlcl9ib3VuZCwgY3UpOworIAorLSAg LyogRklYTUU6IEZvciB2YXJpYWJsZSBzaXplZCBhcnJheXMgZWl0aGVyIG9mIHRoZXNlIGNvdWxk IGJlCistICAgICBhIHZhcmlhYmxlIHJhdGhlciB0aGFuIGEgY29uc3RhbnQgdmFsdWUuICBXZSds bCBhbGxvdyBpdCwKKy0gICAgIGJ1dCB3ZSBkb24ndCBrbm93IGhvdyB0byBoYW5kbGUgaXQuICAq LworICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2xvd2VyX2JvdW5kLCBjdSk7Cist ICBpZiAoYXR0cikKKy0gICAgbG93ID0gZHdhcmYyX2dldF9hdHRyX2NvbnN0YW50X3ZhbHVlIChh dHRyLCAwKTsKICsgIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikgJiYgY3Ut Pmxhbmd1YWdlICE9IGxhbmd1YWdlX2FkYSkKLSAgICAgewotLSAgICAgIGlmIChhdHRyX2Zvcm1f aXNfYmxvY2sgKGF0dHIpIHx8IGlzX3JlZl9hdHRyIChhdHRyKSkKLS0gICAgICAgIHsKLS0gICAg ICAgICAgLyogR0NDIGVuY29kZXMgYXJyYXlzIHdpdGggdW5zcGVjaWZpZWQgb3IgZHluYW1pYyBs ZW5ndGgKLS0gICAgICAgICAgICAgd2l0aCBhIERXX0ZPUk1fYmxvY2sxIGF0dHJpYnV0ZSBvciBh IHJlZmVyZW5jZSBhdHRyaWJ1dGUuCi0tICAgICAgICAgICAgIEZJWE1FOiBHREIgZG9lcyBub3Qg eWV0IGtub3cgaG93IHRvIGhhbmRsZSBkeW5hbWljCi0tICAgICAgICAgICAgIGFycmF5cyBwcm9w ZXJseSwgdHJlYXQgdGhlbSBhcyBhcnJheXMgd2l0aCB1bnNwZWNpZmllZAotLSAgICAgICAgICAg ICBsZW5ndGggZm9yIG5vdy4KLS0KLS0gICAgICAgICAgICAgRklYTUU6IGppbWIvMjAwMy0wOS0y MjogR0RCIGRvZXMgbm90IHJlYWxseSBrbm93Ci0tICAgICAgICAgICAgIGhvdyB0byBoYW5kbGUg YXJyYXlzIG9mIHVuc3BlY2lmaWVkIGxlbmd0aAotLSAgICAgICAgICAgICBlaXRoZXI7IHdlIGp1 c3QgcmVwcmVzZW50IHRoZW0gYXMgemVyby1sZW5ndGgKLS0gICAgICAgICAgICAgYXJyYXlzLiAg Q2hvb3NlIGFuIGFwcHJvcHJpYXRlIHVwcGVyIGJvdW5kIGdpdmVuCi0tICAgICAgICAgICAgIHRo ZSBsb3dlciBib3VuZCB3ZSd2ZSBjb21wdXRlZCBhYm92ZS4gICovCi0tICAgICAgICAgIGhpZ2gg PSBsb3cgLSAxOwotLSAgICAgICAgfQotLSAgICAgIGVsc2UKLS0gICAgICAgIGhpZ2ggPSBkd2Fy ZjJfZ2V0X2F0dHJfY29uc3RhbnRfdmFsdWUgKGF0dHIsIDEpOworKyAgICB7CiArICAgICAgVFlQ RV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+bG93LmtpbmQgPSBSQU5HRV9CT1VORF9LSU5EX0RX QVJGX0JMT0NLOwogKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmxvdy51LmR3 YXJmX2Jsb2NrID0KICsJCQkJCWR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1 KTsKQEAgLTIwMzgsNyArMTk1NCw5IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9k d2FyZjJyZWFkLmMKICsgICAgICBzdHJ1Y3QgZGllX2luZm8gKnRhcmdldF9kaWU7CiArICAgICAg c3RydWN0IGR3YXJmMl9jdSAqdGFyZ2V0X2N1ID0gY3U7CiArICAgICAgc3RydWN0IGF0dHJpYnV0 ZSAqdGFyZ2V0X2xvY19hdHRyOwotKworIAorLSAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERX X0FUX3VwcGVyX2JvdW5kLCBjdSk7CistICBpZiAoYXR0cikKICsgICAgICB0YXJnZXRfZGllID0g Zm9sbG93X2RpZV9yZWZfb3Jfc2lnIChkaWUsIGF0dHIsICZ0YXJnZXRfY3UpOwogKyAgICAgIGdk Yl9hc3NlcnQgKHRhcmdldF9jdS0+b2JqZmlsZSA9PSBjdS0+b2JqZmlsZSk7CiArICAgICAgdGFy Z2V0X2xvY19hdHRyID0gZHdhcmYyX2F0dHIgKHRhcmdldF9kaWUsIERXX0FUX2xvY2F0aW9uLCB0 YXJnZXRfY3UpOwpAQCAtMjA1MSwxNyArMTk2OSwyOSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvZHdhcmYycmVhZC5jCiArICAgICAgVFlQRV9EWU5BTUlDIChyYW5nZV90eXBlKSA9 IDE7CiArICAgICAgLyogRm9yIHNldHRpbmcgYSBkZWZhdWx0IGlmIERXX0FUX1VQUEVSX0JPVU5E IHdvdWxkIGJlIG1pc3NpbmcuICAqLwogKyAgICAgIGxvdyA9IDA7Ci0gICAgIH0KLSAgIGVsc2UK KysgICAgfQorKyAgZWxzZQogICAgICB7Ci0tICAgICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUs IERXX0FUX2NvdW50LCBjdSk7Ci0tICAgICAgaWYgKGF0dHIpCi0rICAgICAgaWYgKGF0dHIgJiYg YXR0cl9mb3JtX2lzX2NvbnN0YW50IChhdHRyKSkKLSsJbG93ID0gZHdhcmYyX2dldF9hdHRyX2Nv bnN0YW50X3ZhbHVlIChhdHRyLCAwKTsKLSsgICAgICBlbHNlCi0gCXsKLS0JICBpbnQgY291bnQg PSBkd2FyZjJfZ2V0X2F0dHJfY29uc3RhbnRfdmFsdWUgKGF0dHIsIDEpOwotLQkgIGhpZ2ggPSBs b3cgKyBjb3VudCAtIDE7CistICAgICAgaWYgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikgfHwg aXNfcmVmX2F0dHIgKGF0dHIpKQorLSAgICAgICAgeworLSAgICAgICAgICAvKiBHQ0MgZW5jb2Rl cyBhcnJheXMgd2l0aCB1bnNwZWNpZmllZCBvciBkeW5hbWljIGxlbmd0aAorLSAgICAgICAgICAg ICB3aXRoIGEgRFdfRk9STV9ibG9jazEgYXR0cmlidXRlIG9yIGEgcmVmZXJlbmNlIGF0dHJpYnV0 ZS4KKy0gICAgICAgICAgICAgRklYTUU6IEdEQiBkb2VzIG5vdCB5ZXQga25vdyBob3cgdG8gaGFu ZGxlIGR5bmFtaWMKKy0gICAgICAgICAgICAgYXJyYXlzIHByb3Blcmx5LCB0cmVhdCB0aGVtIGFz IGFycmF5cyB3aXRoIHVuc3BlY2lmaWVkCistICAgICAgICAgICAgIGxlbmd0aCBmb3Igbm93Lgor LQorLSAgICAgICAgICAgICBGSVhNRTogamltYi8yMDAzLTA5LTIyOiBHREIgZG9lcyBub3QgcmVh bGx5IGtub3cKKy0gICAgICAgICAgICAgaG93IHRvIGhhbmRsZSBhcnJheXMgb2YgdW5zcGVjaWZp ZWQgbGVuZ3RoCistICAgICAgICAgICAgIGVpdGhlcjsgd2UganVzdCByZXByZXNlbnQgdGhlbSBh cyB6ZXJvLWxlbmd0aAorLSAgICAgICAgICAgICBhcnJheXMuICBDaG9vc2UgYW4gYXBwcm9wcmlh dGUgdXBwZXIgYm91bmQgZ2l2ZW4KKy0gICAgICAgICAgICAgdGhlIGxvd2VyIGJvdW5kIHdlJ3Zl IGNvbXB1dGVkIGFib3ZlLiAgKi8KKy0gICAgICAgICAgaGlnaCA9IGxvdyAtIDE7CistICAgICAg ICB9CisrICAgICAgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChhdHRyKSkKKysJ bG93ID0gZHdhcmYyX2dldF9hdHRyX2NvbnN0YW50X3ZhbHVlIChhdHRyLCAwKTsKKyAgICAgICBl bHNlCistICAgICAgICBoaWdoID0gZHdhcmYyX2dldF9hdHRyX2NvbnN0YW50X3ZhbHVlIChhdHRy LCAxKTsKKysJewogKwkgIGlmIChjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfZm9ydHJhbikKICsJ ICAgIHsKICsJICAgICAgLyogRk9SVFJBTiBpbXBsaWVzIGEgbG93ZXIgYm91bmQgb2YgMSwgaWYg bm90IGdpdmVuLiAgKi8KQEAgLTIwNzMsMjUgKzIwMDMsMzAgQEAgSW5kZXg6IGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL2R3YXJmMnJlYWQuYwogKwkJIExBTkdVQUdFX0MgYW5kIExBTkdVQUdFX0NQ TFVTLiAgKi8KICsJICAgICAgbG93ID0gMDsKICsJICAgIH0KLSAJfQorKwl9CiArICAgICAgaWYg KCFUWVBFX1VOU0lHTkVEIChiYXNlX3R5cGUpICYmIChsb3cgJiBuZWdhdGl2ZV9tYXNrKSkKICsJ bG93IHw9IG5lZ2F0aXZlX21hc2s7CiArICAgICAgVFlQRV9MT1dfQk9VTkQgKHJhbmdlX3R5cGUp ID0gbG93OwogKyAgICAgIGlmIChsb3cgPj0gMCkKICsJVFlQRV9VTlNJR05FRCAocmFuZ2VfdHlw ZSkgPSAxOwotKyAgICB9CisgICAgIH0KKy0gIGVsc2UKICsKICsgIGF0dHIgPSBkd2FyZjJfYXR0 ciAoZGllLCBEV19BVF91cHBlcl9ib3VuZCwgY3UpOwogKyAgaWYgKCFhdHRyIHx8ICghYXR0cl9m b3JtX2lzX2Jsb2NrIChhdHRyKSAmJiAhYXR0cl9mb3JtX2lzX2NvbnN0YW50IChhdHRyKQogKwkJ JiYgIWlzX3JlZl9hdHRyIChhdHRyKSkpCi0rICAgIHsKLSsgICAgICBhdHRyID0gZHdhcmYyX2F0 dHIgKGRpZSwgRFdfQVRfY291bnQsIGN1KTsKKyAgICAgeworICAgICAgIGF0dHIgPSBkd2FyZjJf YXR0ciAoZGllLCBEV19BVF9jb3VudCwgY3UpOworLSAgICAgIGlmIChhdHRyKQorLQl7CistCSAg aW50IGNvdW50ID0gZHdhcmYyX2dldF9hdHRyX2NvbnN0YW50X3ZhbHVlIChhdHRyLCAxKTsKKy0J ICBoaWdoID0gbG93ICsgY291bnQgLSAxOwogKyAgICAgIC8qIEl0IGRvZXMgbm90IGh1cnQgYnV0 IGl0IGlzIG5lZWRsZXNzbHkgaW5lZmZlY3RpdmUgaW4gY2hlY2tfdHlwZWRlZi4gICovCiArICAg ICAgaWYgKGF0dHIgJiYgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikgfHwgYXR0cl9mb3JtX2lz X2NvbnN0YW50IChhdHRyKSkpCiArICAgICAgCXsKICsJICBUWVBFX1JBTkdFX0hJR0hfQk9VTkRf SVNfQ09VTlQgKHJhbmdlX3R5cGUpID0gMTsKICsJICBUWVBFX0RZTkFNSUMgKHJhbmdlX3R5cGUp ID0gMTsKLSsJfQorIAl9CiArICAgICAgLyogUGFzcyBpdCBub3cgYXMgdGhlIHJlZ3VsYXIgRFdf QVRfdXBwZXJfYm91bmQuICAqLwogKyAgICB9CiArCkBAIC0yMTM5LDcgKzIwNzQsNyBAQCBJbmRl eDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZHdhcmYycmVhZC5jCiAgICAgIH0KICAKICAgIC8q IER3YXJmLTIgc3BlY2lmaWNhdGlvbnMgZXhwbGljaXRseSBhbGxvd3MgdG8gY3JlYXRlIHN1YnJh bmdlIHR5cGVzCi1AQCAtODc1OSwyNCArODk1MCw0MSBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0 cnVjdCBkaWVfaW5mbyAqZGllCitAQCAtOTA3MCwyNCArOTI2MSw0MSBAQCByZWFkX3N1YnJhbmdl X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAJfQog ICAgICB9CiAgCkBAIC0yMTUxLDE2ICsyMDg2LDYgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL2R3YXJmMnJlYWQuYwogLSAgICBoaWdoIHw9IG5lZ2F0aXZlX21hc2s7CiAtCiAtICBy YW5nZV90eXBlID0gY3JlYXRlX3JhbmdlX3R5cGUgKE5VTEwsIGJhc2VfdHlwZSwgbG93LCBoaWdo KTsKLS0KLS0gIC8qIE1hcmsgYXJyYXlzIHdpdGggZHluYW1pYyBsZW5ndGggYXQgbGVhc3QgYXMg YW4gYXJyYXkgb2YgdW5zcGVjaWZpZWQKLS0gICAgIGxlbmd0aC4gIEdEQiBjb3VsZCBjaGVjayB0 aGUgYm91bmRhcnkgYnV0IGJlZm9yZSBpdCBnZXRzIGltcGxlbWVudGVkIGF0Ci0tICAgICBsZWFz dCBhbGxvdyBhY2Nlc3NpbmcgdGhlIGFycmF5IGVsZW1lbnRzLiAgKi8KLS0gIGlmIChhdHRyICYm IGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCi0tICAgIFRZUEVfSElHSF9CT1VORF9VTkRFRklO RUQgKHJhbmdlX3R5cGUpID0gMTsKLS0KLS0gIC8qIEFkYSBleHBlY3RzIGFuIGVtcHR5IGFycmF5 IG9uIG5vIGJvdW5kYXJ5IGF0dHJpYnV0ZXMuICAqLwotLSAgaWYgKGF0dHIgPT0gTlVMTCAmJiBj dS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfYWRhKQotLSAgICBUWVBFX0hJR0hfQk9VTkRfVU5ERUZJ TkVEIChyYW5nZV90eXBlKSA9IDE7CiArICAvKiBEV19BVF9iaXRfc3RyaWRlIGlzIGN1cnJlbnRs eSB1bnN1cHBvcnRlZCBhcyB3ZSBjb3VudCBpbiBieXRlcy4gICovCiArICBhdHRyID0gZHdhcmYy X2F0dHIgKGRpZSwgRFdfQVRfYnl0ZV9zdHJpZGUsIGN1KTsKICsgIGlmIChhdHRyICYmIGF0dHJf Zm9ybV9pc19ibG9jayAoYXR0cikgJiYgY3UtPmxhbmd1YWdlICE9IGxhbmd1YWdlX2FkYSkKQEAg LTIxNzYsMTEgKzIxMDEsMTkgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJm MnJlYWQuYwogKyAgICAgIHN0cnVjdCBkaWVfaW5mbyAqdGFyZ2V0X2RpZTsKICsgICAgICBzdHJ1 Y3QgZHdhcmYyX2N1ICp0YXJnZXRfY3UgPSBjdTsKICsgICAgICBzdHJ1Y3QgYXR0cmlidXRlICp0 YXJnZXRfbG9jX2F0dHI7Ci0rCisgCistICAvKiBNYXJrIGFycmF5cyB3aXRoIGR5bmFtaWMgbGVu Z3RoIGF0IGxlYXN0IGFzIGFuIGFycmF5IG9mIHVuc3BlY2lmaWVkCistICAgICBsZW5ndGguICBH REIgY291bGQgY2hlY2sgdGhlIGJvdW5kYXJ5IGJ1dCBiZWZvcmUgaXQgZ2V0cyBpbXBsZW1lbnRl ZCBhdAorLSAgICAgbGVhc3QgYWxsb3cgYWNjZXNzaW5nIHRoZSBhcnJheSBlbGVtZW50cy4gICov CistICBpZiAoYXR0ciAmJiBhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQorLSAgICBUWVBFX0hJ R0hfQk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBlKSA9IDE7CiArICAgICAgdGFyZ2V0X2RpZSA9 IGZvbGxvd19kaWVfcmVmX29yX3NpZyAoZGllLCBhdHRyLCAmdGFyZ2V0X2N1KTsKICsgICAgICBn ZGJfYXNzZXJ0ICh0YXJnZXRfY3UtPm9iamZpbGUgPT0gY3UtPm9iamZpbGUpOwogKyAgICAgIHRh cmdldF9sb2NfYXR0ciA9IGR3YXJmMl9hdHRyICh0YXJnZXRfZGllLCBEV19BVF9sb2NhdGlvbiwg dGFyZ2V0X2N1KTsKLSsKKyAKKy0gIC8qIEFkYSBleHBlY3RzIGFuIGVtcHR5IGFycmF5IG9uIG5v IGJvdW5kYXJ5IGF0dHJpYnV0ZXMuICAqLworLSAgaWYgKGF0dHIgPT0gTlVMTCAmJiBjdS0+bGFu Z3VhZ2UgIT0gbGFuZ3VhZ2VfYWRhKQorLSAgICBUWVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEIChy YW5nZV90eXBlKSA9IDE7CiArICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+Ynl0 ZV9zdHJpZGUua2luZAogKyAgICAgICAgPSBSQU5HRV9CT1VORF9LSU5EX0RXQVJGX0xPQ0xJU1Q7 CiArICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+Ynl0ZV9zdHJpZGUudS5kd2Fy Zl9sb2NsaXN0LmxvY2xpc3QKQEAgLTIxOTksNyArMjEzMiw3IEBAIEluZGV4OiBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi9kd2FyZjJyZWFkLmMKICAKICAgIG5hbWUgPSBkd2FyZjJfbmFtZSAoZGll LCBjdSk7CiAgICBpZiAobmFtZSkKLUBAIC0xMTMzMywxMCArMTE1NDEsMTIgQEAgdmFyX2RlY29k ZV9sb2NhdGlvbiAoc3RydWN0IGF0dHJpYnV0ZSAqYQorQEAgLTExNjEwLDEwICsxMTgxOCwxMiBA QCB2YXJfZGVjb2RlX2xvY2F0aW9uIChzdHJ1Y3QgYXR0cmlidXRlICphdHRyLCBzdHJ1Y3Qgc3lt Ym9sICpzeW0sCiAgICAgICAoaS5lLiB3aGVuIHRoZSB2YWx1ZSBvZiBhIHJlZ2lzdGVyIG9yIG1l bW9yeSBsb2NhdGlvbiBpcwogICAgICAgcmVmZXJlbmNlZCwgb3IgYSB0aHJlYWQtbG9jYWwgYmxv Y2ssIGV0Yy4pLiAgVGhlbiBhZ2FpbiwgaXQgbWlnaHQKICAgICAgIG5vdCBiZSB3b3J0aHdoaWxl LiAgSSdtIGFzc3VtaW5nIHRoYXQgaXQgaXNuJ3QgdW5sZXNzIHBlcmZvcm1hbmNlCkBAIC0yMjE0 LDcgKzIxNDcsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZHdhcmYycmVhZC5j CiAgCiAgICBpZiAoU1lNQk9MX0NPTVBVVEVEX09QUyAoc3ltKSA9PSAmZHdhcmYyX2xvY2xpc3Rf ZnVuY3MpCiAgICAgIGN1LT5oYXNfbG9jbGlzdCA9IDE7Ci1AQCAtMTEzNzcsNiArMTE1ODcsOCBA QCBuZXdfc3ltYm9sX2Z1bGwgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzCitAQCAtMTE2NTQsNiAr MTE4NjQsOCBAQCBuZXdfc3ltYm9sX2Z1bGwgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3Qg dHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UsCiAgICAgICAgZWxzZQogIAlzeW0gPSBP QlNUQUNLX1pBTExPQyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywgc3RydWN0IHN5bWJvbCk7 CiAgICAgICAgT0JKU1RBVCAob2JqZmlsZSwgbl9zeW1zKyspOwpAQCAtMjIyMyw3ICsyMTU2LDcg QEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJmMnJlYWQuYwogIAogICAgICAg IC8qIENhY2hlIHRoaXMgc3ltYm9sJ3MgbmFtZSBhbmQgdGhlIG5hbWUncyBkZW1hbmdsZWQgZm9y bSAoaWYgYW55KS4gICovCiAgICAgICAgU1lNQk9MX1NFVF9MQU5HVUFHRSAoc3ltLCBjdS0+bGFu Z3VhZ2UpOwotQEAgLTEyMTQ5LDYgKzEyMzYxLDkgQEAgcmVhZF90eXBlX2RpZV8xIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgcworQEAgLTEyNDE5LDYgKzEyNjMxLDkgQEAgcmVhZF90eXBlX2RpZV8x IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICAgICAgYnJl YWs7CiAgICAgIH0KICAKQEAgLTIyMzMsNyArMjE2Niw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi9kd2FyZjJyZWFkLmMKICAgIHJldHVybiB0aGlzX3R5cGU7CiAgfQogIAotQEAg LTE1MzI0LDYxICsxNTUzOSw5OSBAQCBmaWxsX2luX2xvY2xpc3RfYmF0b24gKHN0cnVjdCBkd2Fy ZjJfY3UKK0BAIC0xNTY1Myw2MiArMTU4NjgsMTAwIEBAIGZpbGxfaW5fbG9jbGlzdF9iYXRvbiAo c3RydWN0IGR3YXJmMl9jdSAqY3UsCiAgICBiYXRvbi0+YmFzZV9hZGRyZXNzID0gY3UtPmJhc2Vf YWRkcmVzczsKICB9CiAgCkBAIC0yMjQ2LDI5ICsyMTc5LDI1IEBAIEluZGV4OiBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi9kd2FyZjJyZWFkLmMKICtzdGF0aWMgc3RydWN0IGR3YXJmMl9sb2NleHBy X2JhdG9uICoKICtkd2FyZjJfYXR0cl90b19sb2NleHByX2JhdG9uIChzdHJ1Y3QgYXR0cmlidXRl ICphdHRyLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICB7CisgICBzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmlsZTsKKysgIHN0cnVjdCBkd2FyZjJfbG9j ZXhwcl9iYXRvbiAqYmF0b247CisgCiAtICBpZiAoYXR0cl9mb3JtX2lzX3NlY3Rpb25fb2Zmc2V0 IChhdHRyKQogLSAgICAgIC8qICIuZGVidWdfbG9jIiBtYXkgbm90IGV4aXN0IGF0IGFsbCwgb3Ig dGhlIG9mZnNldCBtYXkgYmUgb3V0c2lkZQogLQkgdGhlIHNlY3Rpb24uICBJZiBzbywgZmFsbCB0 aHJvdWdoIHRvIHRoZSBjb21wbGFpbnQgaW4gdGhlCiAtCSBvdGhlciBicmFuY2guICAqLwotLSAg ICAgICYmIERXX1VOU05EIChhdHRyKSA8IGR3YXJmMl9zZWN0aW9uX3NpemUgKGR3YXJmMl9wZXJf b2JqZmlsZS0+b2JqZmlsZSwKKy0gICAgICAmJiBEV19VTlNORCAoYXR0cikgPCBkd2FyZjJfc2Vj dGlvbl9zaXplIChvYmpmaWxlLAogLQkJCQkJCSZkd2FyZjJfcGVyX29iamZpbGUtPmxvYykpCiAt ICAgIHsKIC0gICAgICBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKmJhdG9uOwotKyAgc3Ry dWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICpiYXRvbjsKLSAKLS0gICAgICBiYXRvbiA9IG9ic3Rh Y2tfYWxsb2MgKCZjdS0+b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAotLQkJCSAgICAgc2l6ZW9m IChzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24pKTsKICsgIGdkYl9hc3NlcnQgKGF0dHJfZm9y bV9pc19ibG9jayAoYXR0cikpOwotIAotLSAgICAgIGZpbGxfaW5fbG9jbGlzdF9iYXRvbiAoY3Us IGJhdG9uLCBhdHRyKTsKLSsgIGJhdG9uID0gb2JzdGFja19hbGxvYyAoJmN1LT5vYmpmaWxlLT5v YmpmaWxlX29ic3RhY2ssIHNpemVvZiAoKmJhdG9uKSk7CisrCisrICBiYXRvbiA9IG9ic3RhY2tf YWxsb2MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHNpemVvZiAoKmJhdG9uKSk7CiArICBi YXRvbi0+cGVyX2N1ID0gY3UtPnBlcl9jdTsKICsgIGdkYl9hc3NlcnQgKGJhdG9uLT5wZXJfY3Up OwogIAotLSAgICAgIGlmIChjdS0+YmFzZV9rbm93biA9PSAwKQotLQljb21wbGFpbnQgKCZzeW1m aWxlX2NvbXBsYWludHMsCi0tCQkgICBfKCJMb2NhdGlvbiBsaXN0IHVzZWQgd2l0aG91dCAiCi0t CQkgICAgICJzcGVjaWZ5aW5nIHRoZSBDVSBiYXNlIGFkZHJlc3MuIikpOworLSAgICAgIGJhdG9u ID0gb2JzdGFja19hbGxvYyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKKy0JCQkgICAgIHNp emVvZiAoc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uKSk7CiArICAvKiBOb3RlIHRoYXQgd2Un cmUganVzdCBjb3B5aW5nIHRoZSBibG9jaydzIGRhdGEgcG9pbnRlcgogKyAgICAgaGVyZSwgbm90 IHRoZSBhY3R1YWwgZGF0YS4gIFdlJ3JlIHN0aWxsIHBvaW50aW5nIGludG8gdGhlCiArICAgICBp bmZvX2J1ZmZlciBmb3IgU1lNJ3Mgb2JqZmlsZTsgcmlnaHQgbm93IHdlIG5ldmVyIHJlbGVhc2UK QEAgLTIyNzgsOSArMjIwNywxNCBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZHdh cmYycmVhZC5jCiArICBiYXRvbi0+ZGF0YSA9IERXX0JMT0NLIChhdHRyKS0+ZGF0YTsKICsgIGdk Yl9hc3NlcnQgKGJhdG9uLT5zaXplID09IDAgfHwgYmF0b24tPmRhdGEgIT0gTlVMTCk7CiAgCist ICAgICAgZmlsbF9pbl9sb2NsaXN0X2JhdG9uIChjdSwgYmF0b24sIGF0dHIpOwogKyAgcmV0dXJu IGJhdG9uOwogK30KLSsKKyAKKy0gICAgICBpZiAoY3UtPmJhc2Vfa25vd24gPT0gMCkKKy0JY29t cGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAorLQkJICAgXygiTG9jYXRpb24gbGlzdCB1c2Vk IHdpdGhvdXQgIgorLQkJICAgICAic3BlY2lmeWluZyB0aGUgQ1UgYmFzZSBhZGRyZXNzLiIpKTsK ICtzdGF0aWMgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uICoKICtkd2FyZjJfYXR0cl90b19s b2NsaXN0X2JhdG9uIChzdHJ1Y3QgYXR0cmlidXRlICphdHRyLCBzdHJ1Y3QgZHdhcmYyX2N1ICpj dSkKICt7CkBAIC0yMzExLDcgKzIyNDUsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvZHdhcmYycmVhZC5jCiArICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKICsJ ICAgICAgIF8oIkxvY2F0aW9uIGxpc3QgdXNlZCB3aXRob3V0ICIKICsJCSAic3BlY2lmeWluZyB0 aGUgQ1UgYmFzZSBhZGRyZXNzLiIpKTsKLSsKKyAKICsgIHJldHVybiBiYXRvbjsKICt9CiArCkBA IC0yMzQxLDcgKzIyNzUsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZHdhcmYy cmVhZC5jCiArICAgICAgZHdhcmYyX2ludmFsaWRfYXR0cmliX2NsYXNzX2NvbXBsYWludCAoImxv Y2F0aW9uIGRlc2NyaXB0aW9uIiwKICsJCQkJCSAgICAgU1lNQk9MX05BVFVSQUxfTkFNRSAoc3lt KSk7CiAgCi0tICAgICAgYmF0b24gPSBvYnN0YWNrX2FsbG9jICgmY3UtPm9iamZpbGUtPm9iamZp bGVfb2JzdGFjaywKKy0gICAgICBiYXRvbiA9IG9ic3RhY2tfYWxsb2MgKCZvYmpmaWxlLT5vYmpm aWxlX29ic3RhY2ssCiAtCQkJICAgICBzaXplb2YgKHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRv bikpOwogLSAgICAgIGJhdG9uLT5wZXJfY3UgPSBjdS0+cGVyX2N1OwogLSAgICAgIGdkYl9hc3Nl cnQgKGJhdG9uLT5wZXJfY3UpOwpAQCAtMjM2Miw3ICsyMjk2LDYgQEAgSW5kZXg6IGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL2R3YXJmMnJlYWQuYwogLQkgIGR3YXJmMl9pbnZhbGlkX2F0dHJpYl9j bGFzc19jb21wbGFpbnQgKCJsb2NhdGlvbiBkZXNjcmlwdGlvbiIsCiAtCQkJCQkJIFNZTUJPTF9O QVRVUkFMX05BTUUgKHN5bSkpOwogLQkgIGJhdG9uLT5zaXplID0gMDsKLS0JICBiYXRvbi0+ZGF0 YSA9IE5VTEw7CiAtCX0KICsgICAgICBTWU1CT0xfQ09NUFVURURfT1BTIChzeW0pID0gJmR3YXJm Ml9taXNzaW5nX2Z1bmNzOwogKyAgICAgIFNZTUJPTF9MT0NBVElPTl9CQVRPTiAoc3ltKSA9IE5V TEw7CkBAIC0yMzc2LDcgKzIzMDksNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv ZHdhcmYycmVhZC5jCiAgICAgIH0KICB9CiAgCi1AQCAtMTU3MjcsNiArMTU5ODAsMjUgQEAgb2Zm c2V0X2FuZF90eXBlX2VxIChjb25zdCB2b2lkICppdGVtX2xocworQEAgLTE2MDgwLDYgKzE2MzMz LDI1IEBAIG9mZnNldF9hbmRfdHlwZV9lcSAoY29uc3Qgdm9pZCAqaXRlbV9saHMsIGNvbnN0IHZv aWQgKml0ZW1fcmhzKQogICAgcmV0dXJuIG9mc19saHMtPm9mZnNldCA9PSBvZnNfcmhzLT5vZmZz ZXQ7CiAgfQogIApAQCAtMjQwMiw3ICsyMzM1LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL2R3YXJmMnJlYWQuYwogIC8qIFNldCB0aGUgdHlwZSBhc3NvY2lhdGVkIHdpdGggRElF IHRvIFRZUEUuICBTYXZlIGl0IGluIENVJ3MgaGFzaAogICAgIHRhYmxlIGlmIG5lY2Vzc2FyeS4g IEZvciBjb252ZW5pZW5jZSwgcmV0dXJuIFRZUEUuCiAgCi1AQCAtMTU3NTIsNiArMTYwMjQsOCBA QCBzZXRfZGllX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1CitAQCAtMTYxMDUsNiAr MTYzNzcsOCBAQCBzZXRfZGllX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlw ZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSA9IGN1LT5vYmpmaWxlOwogICAgaHRhYl90ICp0eXBlX2hhc2hfcHRyOwogIApAQCAtMjQxMSwx MCArMjM0NCwxMCBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZHdhcmYycmVhZC5j CiAgICAvKiBGb3IgQWRhIHR5cGVzLCBtYWtlIHN1cmUgdGhhdCB0aGUgZ25hdC1zcGVjaWZpYyBk YXRhIGlzIGFsd2F5cwogICAgICAgaW5pdGlhbGl6ZWQgKGlmIG5vdCBhbHJlYWR5IHNldCkuICBU aGVyZSBhcmUgYSBmZXcgdHlwZXMgd2hlcmUKICAgICAgIHdlIHNob3VsZCBub3QgYmUgZG9pbmcg c28sIGJlY2F1c2UgdGhlIHR5cGUtc3BlY2lmaWMgYXJlYSBpcwotSW5kZXg6IGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL2VsZnJlYWQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3 MjIub3JpZy9nZGIvZWxmcmVhZC5jCTIwMTEtMDUtMjYgMDk6NDc6MTAuMDAwMDAwMDAwICswMjAw Ci0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZWxmcmVhZC5jCTIwMTEtMDctMjkgMjI6NTI6 MDIuMDAwMDAwMDAwICswMjAwCitkaWZmIC0tZ2l0IGEvZ2RiL2VsZnJlYWQuYyBiL2dkYi9lbGZy ZWFkLmMKK2luZGV4IDRjZWIzMWIuLmJmZDZhYzIgMTAwNjQ0CistLS0gYS9nZGIvZWxmcmVhZC5j CisrKysgYi9nZGIvZWxmcmVhZC5jCiBAQCAtMzgsNiArMzgsOCBAQAogICNpbmNsdWRlICJkZW1h bmdsZS5oIgogICNpbmNsdWRlICJwc3ltcHJpdi5oIgpAQCAtMjQyNCw3ICsyMzU3LDcgQEAgSW5k ZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2VsZnJlYWQuYwogICNpbmNsdWRlICJnZGJ0eXBl cy5oIgogICNpbmNsdWRlICJ2YWx1ZS5oIgogICNpbmNsdWRlICJpbmZjYWxsLmgiCi1AQCAtNjEs NiArNjMsMjEgQEAgc3RydWN0IGVsZmluZm8KK0BAIC02Miw2ICs2NCwyMSBAQCBzdHJ1Y3QgZWxm aW5mbwogICAgICBhc2VjdGlvbiAqbWRlYnVnc2VjdDsJLyogU2VjdGlvbiBwb2ludGVyIGZvciAu bWRlYnVnIHNlY3Rpb24gKi8KICAgIH07CiAgCkBAIC0yNDQ2LDcgKzIzNzksNyBAQCBJbmRleDog Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZWxmcmVhZC5jCiAgc3RhdGljIHZvaWQgZnJlZV9lbGZp bmZvICh2b2lkICopOwogIAogIC8qIE1pbmltYWwgc3ltYm9scyBsb2NhdGVkIGF0IHRoZSBHT1Qg ZW50cmllcyBmb3IgLnBsdCAtIHRoYXQgaXMgdGhlIHJlYWwKLUBAIC0xNTc0LDcgKzE1OTEsMjY2 IEBAIGVsZnN0YWJfb2Zmc2V0X3NlY3Rpb25zIChzdHJ1Y3Qgb2JqZmlsZQorQEAgLTE1NzgsNyAr MTU5NSwyNzAgQEAgZWxmc3RhYl9vZmZzZXRfc2VjdGlvbnMgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLCBzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBzdCkKICAgICAgY29tcGxhaW50ICgmc3ltZmls ZV9jb21wbGFpbnRzLAogIAkgICAgICAgXygiZWxmL3N0YWIgc2VjdGlvbiBpbmZvcm1hdGlvbiBt aXNzaW5nIGZvciAlcyIpLCBmaWxlbmFtZSk7CiAgfQpAQCAtMjQ3Miw2ICsyNDA1LDggQEAgSW5k ZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2VsZnJlYWQuYwogKyAgc3RydWN0IHR5cGUgKnB0 cl90eXBlID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9kYXRhX3B0cjsKICsgIENP UkVfQUREUiBiYXNlX3JlZjsKICsKKysgIHJldC0+Z2RiYXJjaCA9IGdkYmFyY2g7CisrCiArICAv KiBQcm92aWRlciBhbmQgdGhlIG5hbWUgb2YgdGhlIHByb2JlLiAgKi8KICsgIHJldC0+cHJvdmlk ZXIgPSAoY29uc3QgY2hhciAqKSAmZWwtPmRhdGFbMyAqIHNpemVdOwogKyAgcmV0LT5uYW1lID0g bWVtY2hyIChyZXQtPnByb3ZpZGVyLCAnXDAnLApAQCAtMjUxMCwxMCArMjQ0NSwxMiBAQCBJbmRl eDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZWxmcmVhZC5jCiArCQkJICAodW5zaWduZWQgbG9u ZyAqKSBlbC0+ZGF0YQogKwkJCSAgKyBlbC0+c2l6ZSAtICh1bnNpZ25lZCBsb25nICopIHJldC0+ bmFtZSk7CiArCi0rICAgICAgaWYgKHJldC0+YXJncysrICE9IE5VTEwKLSsJICB8fCBtZW1jaHIg KHJldC0+YXJncywgJ1wwJywgKHVuc2lnbmVkIGxvbmcgKikgZWwtPmRhdGEKLSsJCSAgICAgKyBl bC0+c2l6ZSAtICh1bnNpZ25lZCBsb25nICopIHJldC0+bmFtZSkKLSsJICAhPSBlbC0+ZGF0YSAr IGVsLT5zaXplIC0gMSkKKysgICAgICBpZiAocmV0LT5hcmdzICE9IE5VTEwpCisrCSsrcmV0LT5h cmdzOworKyAgICAgIGlmIChyZXQtPmFyZ3MgPT0gTlVMTAorKwkgIHx8IChtZW1jaHIgKHJldC0+ YXJncywgJ1wwJywgKHVuc2lnbmVkIGxvbmcgKikgZWwtPmRhdGEKKysJCSAgICAgICsgZWwtPnNp emUgLSAodW5zaWduZWQgbG9uZyAqKSByZXQtPm5hbWUpCisrCSAgICAgICE9IGVsLT5kYXRhICsg ZWwtPnNpemUgLSAxKSkKICsJY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBfKCJjb3Jy dXB0IHByb2JlIHdoZW4gcmVhZGluZyBgJXMnIiksCiArCQkgICBvYmpmaWxlLT5uYW1lKTsKICsg ICAgfQpAQCAtMjU1Niw3ICsyNDkzLDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L2VsZnJlYWQuYwogKwogKy8qIEltcGxlbWVudGF0aW9uIG9mIGBzeW1fZ2V0X3Byb2JlcycsIGFz IGRvY3VtZW50ZWQgaW4gc3ltZmlsZS5oLiAgKi8KICsKLStzdGF0aWMgY29uc3Qgc3RydWN0IHN0 YXBfcHJvYmUgKgorK3N0YXRpYyBzdHJ1Y3Qgc3RhcF9wcm9iZSAqCiArZWxmX2dldF9wcm9iZXMg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBpbnQgKm51bV9wcm9iZXMpCiArewogKyAgc3RydWN0 IHN0YXBfcHJvYmUgKnJldCA9IE5VTEw7CkBAIC0yNjIzLDcgKzI1NjAsNyBAQCBJbmRleDogZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvZWxmcmVhZC5jCiArCiArc3RhdGljIGludAogK2VsZl9nZXRf cHJvYmVfYXJndW1lbnRfY291bnQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotKwkJCSAgICAg IGNvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSkKKysJCQkgICAgICBzdHJ1Y3Qgc3RhcF9w cm9iZSAqcHJvYmUpCiArewogKyAgY29uc3QgY2hhciAqcGFyZ3MgPSBwcm9iZS0+YXJnczsKICsK QEAgLTI2MzksNyArMjU3Niw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9lbGZy ZWFkLmMKICsKICtzdGF0aWMgc3RydWN0IHZhbHVlICoKICtlbGZfZXZhbHVhdGVfcHJvYmVfYXJn dW1lbnQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotKwkJCSAgICAgY29uc3Qgc3RydWN0IHN0 YXBfcHJvYmUgKnByb2JlLAorKwkJCSAgICAgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlLAogKwkJ CSAgICAgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAogKwkJCSAgICAgaW50IG4pCiArewpAQCAt MjY1MCw3ICsyNTg3LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2VsZnJlYWQu YwogKwogK3N0YXRpYyB2b2lkCiArZWxmX2NvbXBpbGVfdG9fYXggKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLAotKwkJICAgY29uc3Qgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlLAorKwkJICAgc3Ry dWN0IHN0YXBfcHJvYmUgKnByb2JlLAogKwkJICAgc3RydWN0IGFnZW50X2V4cHIgKmV4cHIsCiAr CQkgICBzdHJ1Y3QgYXhzX3ZhbHVlICp2YWx1ZSwKICsJCSAgIGludCBuKQpAQCAtMjcxMyw3ICsy NjUwLDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2VsZnJlYWQuYwogIC8qIFJl Z2lzdGVyIHRoYXQgd2UgYXJlIGFibGUgdG8gaGFuZGxlIEVMRiBvYmplY3QgZmlsZSBmb3JtYXRz LiAgKi8KICAKICBzdGF0aWMgY29uc3Qgc3RydWN0IHN5bV9mbnMgZWxmX3N5bV9mbnMgPQotQEAg LTE1ODksNiArMTg2NSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3ltX2ZucyBlbGZfc3ltX2Zu cworQEAgLTE1OTMsNiArMTg3Myw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3ltX2ZucyBlbGZf c3ltX2ZucyA9CiAgICBlbGZfc3ltZmlsZV9zZWdtZW50cywJCS8qIEdldCBzZWdtZW50IGluZm9y bWF0aW9uIGZyb20gYSBmaWxlLiAgKi8KICAgIE5VTEwsCiAgICBkZWZhdWx0X3N5bWZpbGVfcmVs b2NhdGUsCS8qIFJlbG9jYXRlIGEgZGVidWcgc2VjdGlvbi4gICovCkBAIC0yNzIxLDcgKzI2NTgs NyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZWxmcmVhZC5jCiAgICAmcHN5bV9m dW5jdGlvbnMKICB9OwogIAotQEAgLTE2MDcsNiArMTg4NCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3Qgc3ltX2ZucyBlbGZfc3ltX2Zuc18KK0BAIC0xNjExLDYgKzE4OTIsNyBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IHN5bV9mbnMgZWxmX3N5bV9mbnNfbGF6eV9wc3ltcyA9CiAgICBlbGZfc3ltZmls ZV9zZWdtZW50cywJCS8qIEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20gYSBmaWxlLiAgKi8K ICAgIE5VTEwsCiAgICBkZWZhdWx0X3N5bWZpbGVfcmVsb2NhdGUsCS8qIFJlbG9jYXRlIGEgZGVi dWcgc2VjdGlvbi4gICovCkBAIC0yNzI5LDcgKzI2NjYsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvZWxmcmVhZC5jCiAgICAmcHN5bV9mdW5jdGlvbnMKICB9OwogIAotQEAgLTE2 MjQsNiArMTkwMiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3ltX2ZucyBlbGZfc3ltX2Zuc18K K0BAIC0xNjI4LDYgKzE5MTAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHN5bV9mbnMgZWxmX3N5 bV9mbnNfZ2RiX2luZGV4ID0KICAgIGVsZl9zeW1maWxlX3NlZ21lbnRzLAkJLyogR2V0IHNlZ21l bnQgaW5mb3JtYXRpb24gZnJvbSBhIGZpbGUuICAqLwogICAgTlVMTCwKICAgIGRlZmF1bHRfc3lt ZmlsZV9yZWxvY2F0ZSwJLyogUmVsb2NhdGUgYSBkZWJ1ZyBzZWN0aW9uLiAgKi8KQEAgLTI3Mzcs NyArMjY3NCw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9lbGZyZWFkLmMKICAg ICZkd2FyZjJfZ2RiX2luZGV4X2Z1bmN0aW9ucwogIH07CiAgCi1AQCAtMTY0MCw2ICsxOTE5LDgg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBnbnVfaWZ1bmNfZm5zIGVsZl9nbgorQEAgLTE2NDQsNiAr MTkyNyw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZ251X2lmdW5jX2ZucyBlbGZfZ251X2lmdW5j X2ZucyA9CiAgdm9pZAogIF9pbml0aWFsaXplX2VsZnJlYWQgKHZvaWQpCiAgewpAQCAtMjc0Niwx MCArMjY4MywxMCBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZWxmcmVhZC5jCiAg ICBhZGRfc3ltdGFiX2ZucyAoJmVsZl9zeW1fZm5zKTsKICAKICAgIGVsZl9vYmpmaWxlX2dudV9p ZnVuY19jYWNoZV9kYXRhID0gcmVnaXN0ZXJfb2JqZmlsZV9kYXRhICgpOwotSW5kZXg6IGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL2V2YWwuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAx MTA3MjIub3JpZy9nZGIvZXZhbC5jCTIwMTEtMDYtMTcgMjI6MzU6MDkuMDAwMDAwMDAwICswMjAw Ci0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZXZhbC5jCTIwMTEtMDctMjkgMjI6NTI6MDIu MDAwMDAwMDAwICswMjAwCitkaWZmIC0tZ2l0IGEvZ2RiL2V2YWwuYyBiL2dkYi9ldmFsLmMKK2lu ZGV4IDVkNzU4ZDEuLmI0YzE3OTkgMTAwNjQ0CistLS0gYS9nZGIvZXZhbC5jCisrKysgYi9nZGIv ZXZhbC5jCiBAQCAtNDQsNiArNDQsNyBAQAogICNpbmNsdWRlICJvYmpmaWxlcy5oIgogICNpbmNs dWRlICJweXRob24vcHl0aG9uLmgiCkBAIC0yNzU4LDcgKzI2OTUsNyBAQCBJbmRleDogZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvZXZhbC5jCiAgCiAgI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKICAK LUBAIC00ODksMjcgKzQ5MCwyMTcgQEAgaW5pdF9hcnJheV9lbGVtZW50IChzdHJ1Y3QgdmFsdWUg KmFycmF5LAorQEAgLTQ4OSwyNyArNDkwLDIxNyBAQCBpbml0X2FycmF5X2VsZW1lbnQgKHN0cnVj dCB2YWx1ZSAqYXJyYXksIHN0cnVjdCB2YWx1ZSAqZWxlbWVudCwKICB9CiAgCiAgc3RhdGljIHN0 cnVjdCB2YWx1ZSAqCkBAIC0yNzczLDExICsyNzEwLDEyIEBAIEluZGV4OiBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi9ldmFsLmMKIC0gIGVudW0gZjkwX3JhbmdlX3R5cGUgcmFuZ2VfdHlwZSA9IGxv bmdlc3RfdG9faW50IChleHAtPmVsdHNbcGNdLmxvbmdjb25zdCk7CiAtIAogLSAgKnBvcyArPSAz OwotKyAgLyogVHlwZSB0byB1c2UgZm9yIHRoZSBuZXdseSBhbGxvY2F0ZWQgdmFsdWUgQVJSQVku ICAqLwotKyAgc3RydWN0IHR5cGUgKm5ld19hcnJheV90eXBlOwotIAorLQogLSAgaWYgKHJhbmdl X3R5cGUgPT0gTE9XX0JPVU5EX0RFRkFVTFQgfHwgcmFuZ2VfdHlwZSA9PSBCT1RIX0JPVU5EX0RF RkFVTFQpCiAtICAgIGxvd19ib3VuZCA9IFRZUEVfTE9XX0JPVU5EIChyYW5nZSk7CisrICAvKiBU eXBlIHRvIHVzZSBmb3IgdGhlIG5ld2x5IGFsbG9jYXRlZCB2YWx1ZSBBUlJBWS4gICovCisrICBz dHJ1Y3QgdHlwZSAqbmV3X2FycmF5X3R5cGU7CisrCiArICAvKiBUeXBlIGJlaW5nIGl0ZXJhdGVk IGZvciBlYWNoIGRpbWVuc2lvbi4gICovCiArICBzdHJ1Y3QgdHlwZSAqdHlwZSwgKnR5cGVfbGFz dF90YXJnZXQ7CiArCkBAIC0yOTc0LDEzICsyOTEyLDEzIEBAIEluZGV4OiBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi9ldmFsLmMKICsgIFZBTFVFX0ZSQU1FX0lEIChhcnJheSkgPSBWQUxVRV9GUkFN RV9JRCAoc2F2ZWRfYXJyYXkpOwogKyAgaWYgKFZBTFVFX0xWQUwgKGFycmF5KSAhPSBsdmFsX2lu dGVybmFsdmFyKQogKyAgICBzZXRfdmFsdWVfYWRkcmVzcyAoYXJyYXksIHZhbHVlX2J5dGVfYWRk cmVzcyArIHZhbHVlX2J5dGVfb2Zmc2V0KTsKLSAKLS0gIHJldHVybiB2YWx1ZV9zbGljZSAoYXJy YXksIGxvd19ib3VuZCwgaGlnaF9ib3VuZCAtIGxvd19ib3VuZCArIDEpOworKwogKyAgaWYgKCF2 YWx1ZV9sYXp5IChzYXZlZF9hcnJheSkpCiArICAgIHsKICsgICAgICBhbGxvY2F0ZV92YWx1ZV9j b250ZW50cyAoYXJyYXkpOwogKyAgICAgIHNldF92YWx1ZV9sYXp5IChhcnJheSwgMCk7Ci0rCisg CistICByZXR1cm4gdmFsdWVfc2xpY2UgKGFycmF5LCBsb3dfYm91bmQsIGhpZ2hfYm91bmQgLSBs b3dfYm91bmQgKyAxKTsKICsgICAgICBtZW1jcHkgKHZhbHVlX2NvbnRlbnRzX3dyaXRlYWJsZSAo YXJyYXkpLAogKwkgICAgICB2YWx1ZV9jb250ZW50cyAoc2F2ZWRfYXJyYXkpICsgdmFsdWVfYnl0 ZV9vZmZzZXQsCiArCSAgICAgIFRZUEVfTEVOR1RIIChuZXdfYXJyYXlfdHlwZSkpOwpAQCAtMjk5 MSw3ICsyOTI5LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2V2YWwuYwogIH0K ICAKICAKLUBAIC03OTAsNiArOTgxLDcgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1 Y3QgdHlwZSAqZQorQEAgLTc5MCw2ICs5ODEsNyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQg KHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKICAgIGludCBzYXZlX3BvczE7CiAgICBzdHJ1Y3Qg c3ltYm9sICpmdW5jdGlvbiA9IE5VTEw7CiAgICBjaGFyICpmdW5jdGlvbl9uYW1lID0gTlVMTDsK QEAgLTI5OTksNyArMjkzNyw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9ldmFs LmMKICAKICAgIHBjID0gKCpwb3MpKys7CiAgICBvcCA9IGV4cC0+ZWx0c1twY10ub3Bjb2RlOwot QEAgLTE4NjIsNiArMjA1NCw4IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5 cGUgKmUKK0BAIC0xODY1LDYgKzIwNTcsOCBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0 cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKICAKICAgICAgICAvKiBGaXJzdCBkZXRlcm1pbmUgdGhl IHR5cGUgY29kZSB3ZSBhcmUgZGVhbGluZyB3aXRoLiAgKi8KICAgICAgICBhcmcxID0gZXZhbHVh dGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4cCwgcG9zLCBub3NpZGUpOwpAQCAtMzAwOCw3ICsyOTQ2 LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2V2YWwuYwogICAgICAgIHR5cGUg PSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcxKSk7CiAgICAgICAgY29kZSA9IFRZUEVf Q09ERSAodHlwZSk7CiAgCi1AQCAtMTg4MiwyMyArMjA3NiwxMyBAQCBldmFsdWF0ZV9zdWJleHBf c3RhbmRhcmQgKHN0cnVjdCB0eXBlICplCitAQCAtMTg4NSwyMyArMjA3OSwxMyBAQCBldmFsdWF0 ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKICAJICAgICAgY29k ZSA9IFRZUEVfQ09ERSAodHlwZSk7CiAgCSAgICB9CiAgCX0gCkBAIC0zMDM0LDcgKzI5NzIsNyBA QCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZXZhbC5jCiAgCiAgCWNhc2UgVFlQRV9D T0RFX1BUUjoKICAJY2FzZSBUWVBFX0NPREVfRlVOQzoKLUBAIC0yMzM3LDQ5ICsyNTIxLDYgQEAg ZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZQorQEAgLTIzNDAsNDkgKzI1 MjQsNiBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlw ZSwKICAJfQogICAgICAgIHJldHVybiAoYXJnMSk7CiAgCkBAIC0zMDg0LDcgKzMwMjIsNyBAQCBJ bmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZXZhbC5jCiAgICAgIGNhc2UgQklOT1BfTE9H SUNBTF9BTkQ6CiAgICAgICAgYXJnMSA9IGV2YWx1YXRlX3N1YmV4cCAoTlVMTF9UWVBFLCBleHAs IHBvcywgbm9zaWRlKTsKICAgICAgICBpZiAobm9zaWRlID09IEVWQUxfU0tJUCkKLUBAIC0yNjEx LDE1ICsyNzUyLDIzIEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmUK K0BAIC0yNjE0LDE1ICsyNzU1LDIzIEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0 IHR5cGUgKmV4cGVjdF90eXBlLAogICAgICAgIGlmIChleHBlY3RfdHlwZSAmJiBUWVBFX0NPREUg KGV4cGVjdF90eXBlKSA9PSBUWVBFX0NPREVfUFRSKQogIAlleHBlY3RfdHlwZSA9IFRZUEVfVEFS R0VUX1RZUEUgKGNoZWNrX3R5cGVkZWYgKGV4cGVjdF90eXBlKSk7CiAgICAgICAgYXJnMSA9IGV2 YWx1YXRlX3N1YmV4cCAoZXhwZWN0X3R5cGUsIGV4cCwgcG9zLCBub3NpZGUpOwpAQCAtMzExMCw3 ICszMDQ4LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2V2YWwuYwogICAgICAg IGVsc2UgaWYgKG5vc2lkZSA9PSBFVkFMX0FWT0lEX1NJREVfRUZGRUNUUykKICAJewogIAkgIHR5 cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcxKSk7Ci1AQCAtMjYyOCwxMiArMjc3 NywxOCBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICplCitAQCAtMjYz MSwxMiArMjc4MCwxOCBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpl eHBlY3RfdHlwZSwKICAJICAvKiBJbiBDIHlvdSBjYW4gZGVyZWZlcmVuY2UgYW4gYXJyYXkgdG8g Z2V0IHRoZSAxc3QgZWx0LiAgKi8KICAJICAgICAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBF X0NPREVfQVJSQVkKICAJICAgICkKQEAgLTMxMzQsNyArMzA3Miw3IEBAIEluZGV4OiBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi9ldmFsLmMKICAJICBlbHNlCiAgCSAgICBlcnJvciAoXygiQXR0ZW1w dCB0byB0YWtlIGNvbnRlbnRzIG9mIGEgbm9uLXBvaW50ZXIgdmFsdWUuIikpOwogIAl9Ci1AQCAt MjY0Myw5ICsyNzk4LDE0IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUg KmUKK0BAIC0yNjQ2LDkgKzI4MDEsMTQgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1 Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCiAgCSBkby4gICJsb25nIGxvbmciIHZhcmlhYmxlcyBhcmUg cmFyZSBlbm91Z2ggdGhhdAogIAkgQlVJTFRJTl9UWVBFX0xPTkdFU1Qgd291bGQgc2VlbSB0byBi ZSBhIG1pc3Rha2UuICAqLwogICAgICAgIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09E RV9JTlQpCkBAIC0zMTUyLDcgKzMwOTAsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvZXZhbC5jCiAgCiAgICAgIGNhc2UgVU5PUF9BRERSOgogICAgICAgIC8qIEMrKzogY2hlY2sg Zm9yIGFuZCBoYW5kbGUgcG9pbnRlciB0byBtZW1iZXJzLiAgKi8KLUBAIC0yOTg3LDcgKzMxNDcs NyBAQCBldmFsdWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAoc3RydWN0IGV4CitAQCAtMjk5MCw3 ICszMTUwLDcgQEAgZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24gKHN0cnVjdCBleHByZXNz aW9uICpleHAsCiAgewogICAgZW51bSBleHBfb3Bjb2RlIG9wOwogICAgaW50IHBjOwpAQCAtMzE2 MSw3ICszMDk5LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2V2YWwuYwogICAg c3RydWN0IHN5bWJvbCAqdmFyOwogICAgc3RydWN0IHR5cGUgKnR5cGU7CiAgCi1AQCAtMjk5OCwx MyArMzE1OCwxOCBAQCBldmFsdWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAoc3RydWN0IGV4CitA QCAtMzAwMSwxMyArMzE2MSwxOCBAQCBldmFsdWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAoc3Ry dWN0IGV4cHJlc3Npb24gKmV4cCwKICAgICAgewogICAgICBjYXNlIE9QX1ZBUl9WQUxVRToKICAg ICAgICB2YXIgPSBleHAtPmVsdHNbcGMgKyAyXS5zeW1ib2w7CkBAIC0zMTgxLDcgKzMxMTksNyBA QCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZXZhbC5jCiAgCSAgcmV0dXJuIHZhbHVl X2Nhc3QgKGxvb2t1cF9wb2ludGVyX3R5cGUgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKSwKICAJ CQkgICAgIHZhbCk7CiAgCX0KLUBAIC0zMDU2LDkgKzMyMjEsMTMgQEAgZXZhbHVhdGVfc3ViZXhw X2Zvcl9zaXplb2YgKHN0cnVjdCBleHByZQorQEAgLTMwNTksOSArMzIyNCwxMyBAQCBldmFsdWF0 ZV9zdWJleHBfZm9yX3NpemVvZiAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MpCiAg CiAgICAgIGNhc2UgT1BfVkFSX1ZBTFVFOgogICAgICAgICgqcG9zKSArPSA0OwpAQCAtMzE5OCw3 ICszMTM2LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2V2YWwuYwogIAogICAg ICBkZWZhdWx0OgogICAgICAgIHZhbCA9IGV2YWx1YXRlX3N1YmV4cCAoTlVMTF9UWVBFLCBleHAs IHBvcywgRVZBTF9BVk9JRF9TSURFX0VGRkVDVFMpOwotQEAgLTMwODksMTggKzMyNTgsMjUgQEAg cGFyc2VfYW5kX2V2YWxfdHlwZSAoY2hhciAqcCwgaW50IGxlbmd0aAorQEAgLTMwOTIsMTggKzMy NjEsMjUgQEAgcGFyc2VfYW5kX2V2YWxfdHlwZSAoY2hhciAqcCwgaW50IGxlbmd0aCkKICBpbnQK ICBjYWxjX2Y3N19hcnJheV9kaW1zIChzdHJ1Y3QgdHlwZSAqYXJyYXlfdHlwZSkKICB7CkBAIC0z MjM0LDEwICszMTcyLDEwIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9ldmFsLmMK IC0gIHJldHVybiBuZGltZW47CiArCiAgfQotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L2YtZXhwLnkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2Yt ZXhwLnkJMjAxMS0wNC0xOSAyMDowNDowNy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi9mLWV4cC55CTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAw CitkaWZmIC0tZ2l0IGEvZ2RiL2YtZXhwLnkgYi9nZGIvZi1leHAueQoraW5kZXggNzQ5MzdkNy4u MDkzZmZlMCAxMDA2NDQKKy0tLSBhL2dkYi9mLWV4cC55CisrKysgYi9nZGIvZi1leHAueQogQEAg LTI5Myw3ICsyOTMsOSBAQCBhcmdsaXN0IDoJc3VicmFuZ2UKICAJCQl7IGFyZ2xpc3RfbGVuID0g MTsgfQogIAk7CkBAIC0zMjQ5LDExICszMTg3LDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi9mLWV4cC55CiAgCQkJeyBhcmdsaXN0X2xlbisrOyB9CiAgCTsKICAKLUluZGV4OiBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9mLWxhbmcuaAotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMu NTAuMjAxMTA3MjIub3JpZy9nZGIvZi1sYW5nLmgJMjAxMS0wMS0wNyAyMDozNjoxNi4wMDAwMDAw MDAgKzAxMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9mLWxhbmcuaAkyMDExLTA3LTI5 IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAotQEAgLTI4LDYgKzI4LDEwIEBAIGV4dGVybiB2b2lk IGZfZXJyb3IgKGNoYXIgKik7CS8qIERlZmluZWQKK2RpZmYgLS1naXQgYS9nZGIvZi1sYW5nLmgg Yi9nZGIvZi1sYW5nLmgKK2luZGV4IDgwNDM1NzcuLjk0YTVmMzEgMTAwNjQ0CistLS0gYS9nZGIv Zi1sYW5nLmgKKysrKyBiL2dkYi9mLWxhbmcuaAorQEAgLTI4LDYgKzI4LDEwIEBAIGV4dGVybiB2 b2lkIGZfZXJyb3IgKGNoYXIgKik7CS8qIERlZmluZWQgaW4gZi1leHAueSAqLwogIGV4dGVybiB2 b2lkIGZfcHJpbnRfdHlwZSAoc3RydWN0IHR5cGUgKiwgY29uc3QgY2hhciAqLCBzdHJ1Y3QgdWlf ZmlsZSAqLCBpbnQsCiAgCQkJICBpbnQpOwogIApAQCAtMzI2NCwxMCArMzIwMiwxMCBAQCBJbmRl eDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZi1sYW5nLmgKICBleHRlcm4gaW50IGZfdmFsX3By aW50IChzdHJ1Y3QgdHlwZSAqLCBjb25zdCBnZGJfYnl0ZSAqLCBpbnQsIENPUkVfQUREUiwKICAJ CQlzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsCiAgCQkJY29uc3Qgc3RydWN0IHZhbHVlICosCi1JbmRl eDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZi10eXBlcHJpbnQuYwotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvZi10eXBlcHJpbnQuYwkyMDExLTA2LTI5IDE3 OjMyOjM5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2YtdHlw ZXByaW50LmMJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKK2RpZmYgLS1naXQg YS9nZGIvZi10eXBlcHJpbnQuYyBiL2dkYi9mLXR5cGVwcmludC5jCitpbmRleCA2ZDllNmVjLi5j YzRjMDJhIDEwMDY0NAorLS0tIGEvZ2RiL2YtdHlwZXByaW50LmMKKysrKyBiL2dkYi9mLXR5cGVw cmludC5jCiBAQCAtMzIsNyArMzIsNyBAQAogICNpbmNsdWRlICJnZGJjb3JlLmgiCiAgI2luY2x1 ZGUgInRhcmdldC5oIgpAQCAtMzI3Nyw3ICszMjE1LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL2YtdHlwZXByaW50LmMKICAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgogICNpbmNs dWRlIDxlcnJuby5oPgogIAotQEAgLTQ5LDYgKzQ5LDM0IEBAIHZvaWQgZl90eXBlX3ByaW50X3Zh cnNwZWNfcHJlZml4IChzdHJ1Y3QKK0BAIC00OSw2ICs0OSwzNCBAQCB2b2lkIGZfdHlwZV9wcmlu dF92YXJzcGVjX3ByZWZpeCAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHVpX2ZpbGUgKiwKICB2b2lk IGZfdHlwZV9wcmludF9iYXNlIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQs IGludCk7CiAgDAogIApAQCAtMzMxMiw3ICszMjUwLDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL2YtdHlwZXByaW50LmMKICAvKiBMRVZFTCBpcyB0aGUgZGVwdGggdG8gaW5kZW50 IGxpbmVzIGJ5LiAgKi8KICAKICB2b2lkCi1AQCAtNTgsNiArODYsOSBAQCBmX3ByaW50X3R5cGUg KHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBjCitAQCAtNTgsNiArODYsOSBAQCBmX3ByaW50X3R5 cGUgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBjaGFyICp2YXJzdHJpbmcsIHN0cnVjdCB1aV9m aWxlICpzdHJlYW0sCiAgICBlbnVtIHR5cGVfY29kZSBjb2RlOwogICAgaW50IGRlbWFuZ2xlZF9h cmdzOwogIApAQCAtMzMyMiw3ICszMjYwLDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL2YtdHlwZXByaW50LmMKICAgIGZfdHlwZV9wcmludF9iYXNlICh0eXBlLCBzdHJlYW0sIHNo b3csIGxldmVsKTsKICAgIGNvZGUgPSBUWVBFX0NPREUgKHR5cGUpOwogICAgaWYgKCh2YXJzdHJp bmcgIT0gTlVMTCAmJiAqdmFyc3RyaW5nICE9ICdcMCcpCi1AQCAtMTY1LDYgKzE5Niw5IEBAIGZf dHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoc3RydWN0IHR5cGUKK0BAIC0xNjUsNiArMTk2LDkg QEAgZl90eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0 IHVpX2ZpbGUgKnN0cmVhbSwKICAKICAgIFFVSVQ7CiAgCkBAIC0zMzMyLDExICszMjcwLDExIEBA IEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9mLXR5cGVwcmludC5jCiAgICBzd2l0Y2gg KFRZUEVfQ09ERSAodHlwZSkpCiAgICAgIHsKICAgICAgY2FzZSBUWVBFX0NPREVfQVJSQVk6Ci1J bmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZi12YWxwcmludC5jCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9mLXZhbHByaW50LmMJMjAxMS0wNi0yOSAx NzozMjozOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9mLXZh bHByaW50LmMJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC01NCwxNSAr NTQsMTcgQEAgaW50IGY3N19hcnJheV9vZmZzZXRfdGJsW01BWF9GT1JUUkFOX0RJTQorZGlmZiAt LWdpdCBhL2dkYi9mLXZhbHByaW50LmMgYi9nZGIvZi12YWxwcmludC5jCitpbmRleCBiODAwZDg5 Li4wZjYxNmUwIDEwMDY0NAorLS0tIGEvZ2RiL2YtdmFscHJpbnQuYworKysrIGIvZ2RiL2YtdmFs cHJpbnQuYworQEAgLTU0LDE1ICs1NCwxNyBAQCBpbnQgZjc3X2FycmF5X29mZnNldF90YmxbTUFY X0ZPUlRSQU5fRElNUyArIDFdWzJdOwogIC8qIFRoZSBmb2xsb3dpbmcgbWFjcm8gZ2l2ZXMgdXMg dGhlIHNpemUgb2YgdGhlIG50aCBkaW1lbnNpb24sIFdoZXJlIAogICAgIG4gaXMgMSBiYXNlZC4g ICovCiAgCkBAIC0zMzgwLDcgKzMzMTgsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvZi12YWxwcmludC5jCiAgICAgIH0KICAKICAgIHJldHVybiBUWVBFX0FSUkFZX1VQUEVSX0JP VU5EX1ZBTFVFICh0eXBlKTsKLUBAIC0xMzUsMjQgKzE0MCwyOSBAQCBmNzdfY3JlYXRlX2FycmF5 cHJpbnRfb2Zmc2V0X3RibCAoc3RydWN0CitAQCAtMTM1LDI0ICsxNDAsMjkgQEAgZjc3X2NyZWF0 ZV9hcnJheXByaW50X29mZnNldF90YmwgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdWlfZmls ZSAqc3RyZWFtKQogICAgICAgIHVwcGVyID0gZjc3X2dldF91cHBlcmJvdW5kICh0bXBfdHlwZSk7 CiAgICAgICAgbG93ZXIgPSBmNzdfZ2V0X2xvd2VyYm91bmQgKHRtcF90eXBlKTsKICAKQEAgLTM0 MTYsNyArMzM1NCw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9mLXZhbHByaW50 LmMKICAgICAgfQogIH0KICAKLUBAIC0xNzQsMzcgKzE4NCwzNSBAQCBmNzdfcHJpbnRfYXJyYXlf MSAoaW50IG5zcywgaW50IG5kaW1lbnNpCitAQCAtMTc0LDM3ICsxODQsMzUgQEAgZjc3X3ByaW50 X2FycmF5XzEgKGludCBuc3MsIGludCBuZGltZW5zaW9ucywgc3RydWN0IHR5cGUgKnR5cGUsCiAg CiAgICBpZiAobnNzICE9IG5kaW1lbnNpb25zKQogICAgICB7CkBAIC0zNDYxLDcgKzMzOTksNyBA QCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZi12YWxwcmludC5jCiAgCSAgICBmcHJp bnRmX2ZpbHRlcmVkIChzdHJlYW0sICIuLi4iKTsKICAJfQogICAgICB9Ci1AQCAtMjYwLDYgKzI2 OCw5IEBAIGZfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2QKK0BAIC0yNjAs NiArMjY4LDkgQEAgZl92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0 ZSAqdmFsYWRkciwgaW50IGVtYmVkZGVkX29mZnNldCwKICAgIENPUkVfQUREUiBhZGRyOwogICAg aW50IGluZGV4OwogIApAQCAtMzQ3MSwxMCArMzQwOSwxMCBAQCBJbmRleDogZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvZi12YWxwcmludC5jCiAgICBDSEVDS19UWVBFREVGICh0eXBlKTsKICAgIHN3 aXRjaCAoVFlQRV9DT0RFICh0eXBlKSkKICAgICAgewotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL2ZpbmR2YXIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3Jp Zy9nZGIvZmluZHZhci5jCTIwMTEtMDctMTIgMjM6MTY6NDguMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZmluZHZhci5jCTIwMTEtMDctMjkgMjI6NTI6NDQuMDAw MDAwMDAwICswMjAwCitkaWZmIC0tZ2l0IGEvZ2RiL2ZpbmR2YXIuYyBiL2dkYi9maW5kdmFyLmMK K2luZGV4IDMzMzMyYzYuLmQ4ZGEzNGEgMTAwNjQ0CistLS0gYS9nZGIvZmluZHZhci5jCisrKysg Yi9nZGIvZmluZHZhci5jCiBAQCAtMzUsNiArMzUsNyBAQAogICNpbmNsdWRlICJ1c2VyLXJlZ3Mu aCIKICAjaW5jbHVkZSAiYmxvY2suaCIKQEAgLTM0ODMsMjEgKzM0MjEsMjEgQEAgSW5kZXg6IGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL2ZpbmR2YXIuYwogIAogIC8qIEJhc2ljIGJ5dGUtc3dhcHBp bmcgcm91dGluZXMuICBBbGwgJ2V4dHJhY3QnIGZ1bmN0aW9ucyByZXR1cm4gYQogICAgIGhvc3Qt Zm9ybWF0IGludGVnZXIgZnJvbSBhIHRhcmdldC1mb3JtYXQgaW50ZWdlciBhdCBBRERSIHdoaWNo IGlzCi1AQCAtNDA4LDggKzQwOSwxMSBAQCBzeW1ib2xfcmVhZF9uZWVkc19mcmFtZSAoc3RydWN0 IHN5bWJvbCAqCitAQCAtNDA4LDggKzQwOSwxMSBAQCBzeW1ib2xfcmVhZF9uZWVkc19mcmFtZSAo c3RydWN0IHN5bWJvbCAqc3ltKQogIAogIC8qIEdpdmVuIGEgc3RydWN0IHN5bWJvbCBmb3IgYSB2 YXJpYWJsZSwKICAgICBhbmQgYSBzdGFjayBmcmFtZSBpZCwgcmVhZCB0aGUgdmFsdWUgb2YgdGhl IHZhcmlhYmxlCiAtICAgYW5kIHJldHVybiBhIChwb2ludGVyIHRvIGEpIHN0cnVjdCB2YWx1ZSBj b250YWluaW5nIHRoZSB2YWx1ZS4KLS0gICBJZiB0aGUgdmFyaWFibGUgY2Fubm90IGJlIGZvdW5k LCByZXR1cm4gYSB6ZXJvIHBvaW50ZXIuICAqLworLSAgIElmIHRoZSB2YXJpYWJsZSBjYW5ub3Qg YmUgZm91bmQsIHRocm93IGVycm9yLiAgKi8KICsgICBhbmQgcmV0dXJuIGEgKHBvaW50ZXIgdG8g YSkgc3RydWN0IHZhbHVlIGNvbnRhaW5pbmcgdGhlIHZhbHVlLiAKLSsgICBJZiB0aGUgdmFyaWFi bGUgY2Fubm90IGJlIGZvdW5kLCByZXR1cm4gYSB6ZXJvIHBvaW50ZXIuCisrICAgSWYgdGhlIHZh cmlhYmxlIGNhbm5vdCBiZSBmb3VuZCwgdGhyb3cgZXJyb3IuCiArICAgV2UgaGF2ZSB0byBmaXJz dCBmaW5kIHRoZSBhZGRyZXNzIG9mIHRoZSB2YXJpYWJsZSBiZWZvcmUgYWxsb2NhdGluZyBzdHJ1 Y3QKLSsgICB2YWx1ZSB0byByZXR1cm4gYXMgaXRzIHNpemUgbWF5IGRlcGVuZCBvbiBEV19PUF9Q VVNIX09CSkVDVF9BRERSRVNTIHBvc3NpYmx5CisrICAgdmFsdWUgdG8gcmV0dXJuIGFzIGl0cyBz aXplIG1heSBkZXBlbmQgb24gRFdfT1BfUFVTSF9PQkpFQ1RfQUREUkVTUyBwb3NzaWJseSAKICsg ICB1c2VkIGJ5IGl0cyB0eXBlLiAgKi8KICAKICBzdHJ1Y3QgdmFsdWUgKgogIHJlYWRfdmFyX3Zh bHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKLUBAIC00 MTcsMTYgKzQyMSw2IEBAIHJlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnUK K0BAIC00MTcsMTYgKzQyMSw2IEBAIHJlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIs IHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKICAgIHN0cnVjdCB2YWx1ZSAqdjsKICAgIHN0cnVj dCB0eXBlICp0eXBlID0gU1lNQk9MX1RZUEUgKHZhcik7CiAgICBDT1JFX0FERFIgYWRkcjsKQEAg LTM1MTQsNyArMzQ1Miw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9maW5kdmFy LmMKICAKICAgIGlmIChzeW1ib2xfcmVhZF9uZWVkc19mcmFtZSAodmFyKSkKICAgICAgZ2RiX2Fz c2VydCAoZnJhbWUpOwotQEAgLTQzNiw3ICs0MzAsNyBAQCByZWFkX3Zhcl92YWx1ZSAoc3RydWN0 IHN5bWJvbCAqdmFyLCBzdHJ1CitAQCAtNDM2LDcgKzQzMCw3IEBAIHJlYWRfdmFyX3ZhbHVlIChz dHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKICAgICAgY2FzZSBM T0NfQ09OU1Q6CiAgICAgICAgLyogUHV0IHRoZSBjb25zdGFudCBiYWNrIGluIHRhcmdldCBmb3Jt YXQuICAqLwogICAgICAgIHYgPSBhbGxvY2F0ZV92YWx1ZSAodHlwZSk7CkBAIC0zNTIzLDcgKzM0 NjEsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZmluZHZhci5jCiAgCQkJICAg IGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2V0X3R5cGVfYXJjaCAodHlwZSkpLAogIAkJCSAgICAoTE9O R0VTVCkgU1lNQk9MX1ZBTFVFICh2YXIpKTsKICAgICAgICBWQUxVRV9MVkFMICh2KSA9IG5vdF9s dmFsOwotQEAgLTQ2MSwxMiArNDU1LDEyIEBAIHJlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9s ICp2YXIsIHN0cnUKK0BAIC00NjEsMTIgKzQ1NSwxMiBAQCByZWFkX3Zhcl92YWx1ZSAoc3RydWN0 IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCiAgCiAgICAgIGNhc2UgTE9D X0NPTlNUX0JZVEVTOgogICAgICAgIHYgPSBhbGxvY2F0ZV92YWx1ZSAodHlwZSk7CkBAIC0zNTM4 LDE1ICszNDc2LDE1IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9maW5kdmFyLmMK ICAgICAgICBpZiAob3ZlcmxheV9kZWJ1Z2dpbmcpCiAgCWFkZHIgPSBzeW1ib2xfb3ZlcmxheWVk X2FkZHJlc3MgKFNZTUJPTF9WQUxVRV9BRERSRVNTICh2YXIpLAogIAkJCQkJIFNZTUJPTF9PQkpf U0VDVElPTiAodmFyKSk7Ci1AQCAtNDc5LDcgKzQ3Myw2IEBAIHJlYWRfdmFyX3ZhbHVlIChzdHJ1 Y3Qgc3ltYm9sICp2YXIsIHN0cnUKLSAgICAgICBpZiAoIWFkZHIpCi0gCXJldHVybiAwOworQEAg LTQ4MCw3ICs0NzQsNiBAQCByZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1 Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCisgCWVycm9yIChfKCJVbmtub3duIGFyZ3VtZW50IGxpc3Qg YWRkcmVzcyBmb3IgYCVzJy4iKSwKKyAJICAgICAgIFNZTUJPTF9QUklOVF9OQU1FICh2YXIpKTsK ICAgICAgICBhZGRyICs9IFNZTUJPTF9WQUxVRSAodmFyKTsKIC0gICAgICB2ID0gYWxsb2NhdGVf dmFsdWVfbGF6eSAodHlwZSk7CiAgICAgICAgYnJlYWs7CiAgCiAgICAgIGNhc2UgTE9DX1JFRl9B Ukc6Ci1AQCAtNDkzLDE0ICs0ODYsMTIgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wg KnZhciwgc3RydQorQEAgLTQ5NSwxNCArNDg4LDEyIEBAIHJlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qg c3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKICAJYXJncmVmICs9IFNZTUJP TF9WQUxVRSAodmFyKTsKICAJcmVmID0gdmFsdWVfYXQgKGxvb2t1cF9wb2ludGVyX3R5cGUgKHR5 cGUpLCBhcmdyZWYpOwogIAlhZGRyID0gdmFsdWVfYXNfYWRkcmVzcyAocmVmKTsKQEAgLTM1NjEs NyArMzQ5OSw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9maW5kdmFyLmMKICAg ICAgICBicmVhazsKICAKICAgICAgY2FzZSBMT0NfVFlQRURFRjoKLUBAIC01MDgsNyArNDk5LDYg QEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydQorQEAgLTUxMSw3ICs1 MDIsNiBAQCByZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVf aW5mbyAqZnJhbWUpCiAgICAgICAgYnJlYWs7CiAgCiAgICAgIGNhc2UgTE9DX0JMT0NLOgpAQCAt MzU2OSwxNSArMzUwNywxNSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZmluZHZh ci5jCiAgICAgICAgaWYgKG92ZXJsYXlfZGVidWdnaW5nKQogIAlhZGRyID0gc3ltYm9sX292ZXJs YXllZF9hZGRyZXNzCiAgCSAgKEJMT0NLX1NUQVJUIChTWU1CT0xfQkxPQ0tfVkFMVUUgKHZhcikp LCBTWU1CT0xfT0JKX1NFQ1RJT04gKHZhcikpOwotQEAgLTUzMyw3ICs1MjMsNiBAQCByZWFkX3Zh cl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Ci0gCSAgICAgIGVycm9yIChfKCJWYWx1 ZSBvZiByZWdpc3RlciB2YXJpYWJsZSBub3QgYXZhaWxhYmxlLiIpKTsKK0BAIC01MzcsNyArNTI3 LDYgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2lu Zm8gKmZyYW1lKQorIAkgICAgICAgICAgICAgU1lNQk9MX1BSSU5UX05BTUUgKHZhcikpOwogIAog IAkgICAgYWRkciA9IHZhbHVlX2FzX2FkZHJlc3MgKHJlZ3ZhbCk7CiAtCSAgICB2ID0gYWxsb2Nh dGVfdmFsdWVfbGF6eSAodHlwZSk7CiAgCSAgfQogIAllbHNlCiAgCSAgewotQEAgLTU3Miw3ICs1 NjEsNiBAQCByZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1CitAQCAtNTc3 LDcgKzU2Niw2IEBAIHJlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBm cmFtZV9pbmZvICpmcmFtZSkKICAJaWYgKG9ial9zZWN0aW9uCiAgCSAgICAmJiAob2JqX3NlY3Rp b24tPnRoZV9iZmRfc2VjdGlvbi0+ZmxhZ3MgJiBTRUNfVEhSRUFEX0xPQ0FMKSAhPSAwKQogIAkg IGFkZHIgPSB0YXJnZXRfdHJhbnNsYXRlX3Rsc19hZGRyZXNzIChvYmpfc2VjdGlvbi0+b2JqZmls ZSwgYWRkcik7CkBAIC0zNTg1LDcgKzM1MjMsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvZmluZHZhci5jCiAgICAgICAgfQogICAgICAgIGJyZWFrOwogIAotQEAgLTU4NCw2ICs1 NzIsMTAgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydQorQEAgLTU5 MCw2ICs1NzgsMTAgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0 IGZyYW1lX2luZm8gKmZyYW1lKQogICAgICAgIGJyZWFrOwogICAgICB9CiAgCkBAIC0zNTk2LDIy ICszNTM0LDIxIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9maW5kdmFyLmMKICAg IFZBTFVFX0xWQUwgKHYpID0gbHZhbF9tZW1vcnk7CiAgICBzZXRfdmFsdWVfYWRkcmVzcyAodiwg YWRkcik7CiAgICByZXR1cm4gdjsKLUBAIC02MjMsMTEgKzYxNSwxMiBAQCBzdHJ1Y3QgdmFsdWUg KgorQEAgLTY3MiwxMCArNjY0LDExIEBAIHN0cnVjdCB2YWx1ZSAqCiAgdmFsdWVfZnJvbV9yZWdp c3RlciAoc3RydWN0IHR5cGUgKnR5cGUsIGludCByZWdudW0sIHN0cnVjdCBmcmFtZV9pbmZvICpm cmFtZSkKICB7CiAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoIChm cmFtZSk7CiAtICBzdHJ1Y3QgdHlwZSAqdHlwZTEgPSBjaGVja190eXBlZGVmICh0eXBlKTsKICAg IHN0cnVjdCB2YWx1ZSAqdjsKLSAgIGludCBvcHRpbSwgdW5hdmFpbCwgb2s7CiAgCiAtICBpZiAo Z2RiYXJjaF9jb252ZXJ0X3JlZ2lzdGVyX3AgKGdkYmFyY2gsIHJlZ251bSwgdHlwZTEpKQogKyAg dHlwZSA9IGNoZWNrX3R5cGVkZWYgKHR5cGUpOwogKwogKyAgaWYgKGdkYmFyY2hfY29udmVydF9y ZWdpc3Rlcl9wIChnZGJhcmNoLCByZWdudW0sIHR5cGUpKQogICAgICB7Ci0gICAgICAgLyogVGhl IElTQS9BQkkgbmVlZCB0byBzb21ldGhpbmcgd2VpcmQgd2hlbiBvYnRhaW5pbmcgdGhlCi0gICAg ICAgICAgc3BlY2lmaWVkIHZhbHVlIGZyb20gdGhpcyByZWdpc3Rlci4gIEl0IG1pZ2h0IG5lZWQg dG8KLUBAIC02NDAsNyArNjMzLDcgQEAgdmFsdWVfZnJvbV9yZWdpc3RlciAoc3RydWN0IHR5cGUg KnR5cGUsCisgICAgICAgaW50IG9wdGltLCB1bmF2YWlsLCBvazsKKyAKK0BAIC02OTAsNyArNjgz LDcgQEAgdmFsdWVfZnJvbV9yZWdpc3RlciAoc3RydWN0IHR5cGUgKnR5cGUsIGludCByZWdudW0s IHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKICAgICAgICBWQUxVRV9MVkFMICh2KSA9IGx2YWxf cmVnaXN0ZXI7CiAgICAgICAgVkFMVUVfRlJBTUVfSUQgKHYpID0gZ2V0X2ZyYW1lX2lkIChmcmFt ZSk7CiAgICAgICAgVkFMVUVfUkVHTlVNICh2KSA9IHJlZ251bTsKQEAgLTM2MTksMTIxICszNTU2 LDY2MiBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZmluZHZhci5jCiArICAgICAg b2sgPSBnZGJhcmNoX3JlZ2lzdGVyX3RvX3ZhbHVlIChnZGJhcmNoLCBmcmFtZSwgcmVnbnVtLCB0 eXBlLAogIAkJCQkgICAgICB2YWx1ZV9jb250ZW50c19yYXcgKHYpLCAmb3B0aW0sCiAgCQkJCSAg ICAgICZ1bmF2YWlsKTsKLSAgICAgfQotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2dk YmluaXQuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2dk YmluaXQuaW4JMjAwOS0xMC0wNSAxNTo0Njo1Mi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi9nZGJpbml0LmluCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAw ICswMjAwCi1AQCAtMSw1ICsxLDE1IEBACi0gZWNobyBTZXR0aW5nIHVwIHRoZSBlbnZpcm9ubWVu dCBmb3IgZGVidWdnaW5nIGdkYi5cbgotIAotKyMgU2V0IHVwIHRoZSBQeXRob24gbGlicmFyeSBh bmQgInJlcXVpcmUiIGNvbW1hbmQuCi0rcHl0aG9uCi0rZnJvbSBvcy5wYXRoIGltcG9ydCBhYnNw YXRoCi0rZ2RiLmRhdGFkaXIgPSBhYnNwYXRoICgnQHNyY2RpckAvcHl0aG9uL2xpYicpCi0rZ2Ri LnB5dGhvbmxpYmRpciA9IGdkYi5kYXRhZGlyCi0rZ2RiLl9fcGF0aF9fID0gW2dkYi5kYXRhZGly ICsgJy9nZGInXQotK3N5cy5wYXRoLmluc2VydCgwLCBnZGIuZGF0YWRpcikKLStlbmQKLStzb3Vy Y2UgQHNyY2RpckAvcHl0aG9uL2xpYi9nZGIvX19pbml0X18ucHkKLSsKLSBzZXQgY29tcGxhaW50 cyAxCi0gCi0gYiBpbnRlcm5hbF9lcnJvcgotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L2dkYnR5cGVzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2Ri L2dkYnR5cGVzLmMJMjAxMS0wNi0yNCAyMTo0NzozNy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi9nZGJ0eXBlcy5jCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAw MDAwICswMjAwCi1AQCAtMzksNiArMzksOSBAQAotICNpbmNsdWRlICJjcC1hYmkuaCIKLSAjaW5j bHVkZSAiZ2RiX2Fzc2VydC5oIgotICNpbmNsdWRlICJoYXNodGFiLmgiCi0rI2luY2x1ZGUgIm9i c2VydmVyLmgiCi0rI2luY2x1ZGUgImR3YXJmMmV4cHIuaCIKLSsjaW5jbHVkZSAiZHdhcmYybG9j LmgiCi0gCi0gCi0gLyogSW5pdGlhbGl6ZSBCQURORVNTIGNvbnN0YW50cy4gICovCi1AQCAtMTQ0 LDcgKzE0NywxNiBAQCBzdGF0aWMgdm9pZCBwcmludF9iaXRfdmVjdG9yIChCX1RZUEUgKiwKLSBz dGF0aWMgdm9pZCBwcmludF9hcmdfdHlwZXMgKHN0cnVjdCBmaWVsZCAqLCBpbnQsIGludCk7Ci0g c3RhdGljIHZvaWQgZHVtcF9mbl9maWVsZGxpc3RzIChzdHJ1Y3QgdHlwZSAqLCBpbnQpOwotIHN0 YXRpYyB2b2lkIHByaW50X2NwbHVzX3N0dWZmIChzdHJ1Y3QgdHlwZSAqLCBpbnQpOwotK3N0YXRp YyBMT05HRVNUIHR5cGVfbGVuZ3RoX2dldCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB0eXBl ICp0YXJnZXRfdHlwZSwKLSsJCQkJaW50IGZ1bGxfc3Bhbik7Ci0gCi0rI2lmIDAKLSsvKiBUaGUg aGFzaCB0YWJsZSBob2xkaW5nIGFsbCBkaXNjYXJkYWJsZSBgc3RydWN0IHR5cGUgKicgcmVmZXJl bmNlcy4gICovCi0rc3RhdGljIGh0YWJfdCB0eXBlX2Rpc2NhcmRhYmxlX3RhYmxlOwotKwotKy8q IEN1cnJlbnQgdHlwZV9kaXNjYXJkYWJsZV9jaGVjayBwYXNzIHVzZWQgZm9yIFRZUEVfRElTQ0FS REFCTEVfQUdFLiAgKi8KLStzdGF0aWMgaW50IHR5cGVfZGlzY2FyZGFibGVfYWdlX2N1cnJlbnQ7 Ci0rI2VuZGlmCiAgCi0gLyogQWxsb2NhdGUgYSBuZXcgT0JKRklMRS1hc3NvY2lhdGVkIHR5cGUg c3RydWN0dXJlIGFuZCBmaWxsIGl0Ci0gICAgd2l0aCBzb21lIGRlZmF1bHRzLiAgU3BhY2UgZm9y IHRoZSB0eXBlIHN0cnVjdHVyZSBpcyBhbGxvY2F0ZWQKLUBAIC0xNzUsNiArMTg3LDQzIEBAIGFs bG9jX3R5cGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotICAgcmV0dXJuIHR5cGU7CitkaWZm IC0tZ2l0IGEvZ2RiL2dkYmFyY2guYyBiL2dkYi9nZGJhcmNoLmMKK2luZGV4IDFhZGE1MDQuLmVj MWVmNDYgMTAwNjQ0CistLS0gYS9nZGIvZ2RiYXJjaC5jCisrKysgYi9nZGIvZ2RiYXJjaC5jCitA QCAtMjYzLDYgKzI2MywxNiBAQCBzdHJ1Y3QgZ2RiYXJjaAorICAgZ2RiYXJjaF9nZXRfc2lnaW5m b190eXBlX2Z0eXBlICpnZXRfc2lnaW5mb190eXBlOworICAgZ2RiYXJjaF9yZWNvcmRfc3BlY2lh bF9zeW1ib2xfZnR5cGUgKnJlY29yZF9zcGVjaWFsX3N5bWJvbDsKKyAgIGdkYmFyY2hfZ2V0X3N5 c2NhbGxfbnVtYmVyX2Z0eXBlICpnZXRfc3lzY2FsbF9udW1iZXI7CisrICBjb25zdCBjaGFyICog c3RhcF9pbnRlZ2VyX3ByZWZpeDsKKysgIGNvbnN0IGNoYXIgKiBzdGFwX2ludGVnZXJfc3VmaXg7 CisrICBjb25zdCBjaGFyICogc3RhcF9yZWdpc3Rlcl9wcmVmaXg7CisrICBjb25zdCBjaGFyICog c3RhcF9yZWdpc3Rlcl9zdWZpeDsKKysgIGNvbnN0IGNoYXIgKiBzdGFwX3JlZ2lzdGVyX2luZGly ZWN0aW9uX3ByZWZpeDsKKysgIGNvbnN0IGNoYXIgKiBzdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9u X3N1Zml4OworKyAgY29uc3QgY2hhciAqIHN0YXBfZ2RiX3JlZ2lzdGVyX3ByZWZpeDsKKysgIGNv bnN0IGNoYXIgKiBzdGFwX2dkYl9yZWdpc3Rlcl9zdWZpeDsKKysgIGdkYmFyY2hfc3RhcF9pc19z aW5nbGVfb3BlcmFuZF9mdHlwZSAqc3RhcF9pc19zaW5nbGVfb3BlcmFuZDsKKysgIGdkYmFyY2hf c3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuX2Z0eXBlICpzdGFwX3BhcnNlX3NwZWNpYWxfdG9rZW47 CisgICBpbnQgaGFzX2dsb2JhbF9zb2xpc3Q7CisgICBpbnQgaGFzX2dsb2JhbF9icmVha3BvaW50 czsKKyAgIGdkYmFyY2hfaGFzX3NoYXJlZF9hZGRyZXNzX3NwYWNlX2Z0eXBlICpoYXNfc2hhcmVk X2FkZHJlc3Nfc3BhY2U7CitAQCAtNDE4LDYgKzQyOCwxNiBAQCBzdHJ1Y3QgZ2RiYXJjaCBzdGFy dHVwX2dkYmFyY2ggPQorICAgMCwgIC8qIGdldF9zaWdpbmZvX3R5cGUgKi8KKyAgIDAsICAvKiBy ZWNvcmRfc3BlY2lhbF9zeW1ib2wgKi8KKyAgIDAsICAvKiBnZXRfc3lzY2FsbF9udW1iZXIgKi8K KysgIDAsICAvKiBzdGFwX2ludGVnZXJfcHJlZml4ICovCisrICAwLCAgLyogc3RhcF9pbnRlZ2Vy X3N1Zml4ICovCisrICAwLCAgLyogc3RhcF9yZWdpc3Rlcl9wcmVmaXggKi8KKysgIDAsICAvKiBz dGFwX3JlZ2lzdGVyX3N1Zml4ICovCisrICAwLCAgLyogc3RhcF9yZWdpc3Rlcl9pbmRpcmVjdGlv bl9wcmVmaXggKi8KKysgIDAsICAvKiBzdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3N1Zml4ICov CisrICAwLCAgLyogc3RhcF9nZGJfcmVnaXN0ZXJfcHJlZml4ICovCisrICAwLCAgLyogc3RhcF9n ZGJfcmVnaXN0ZXJfc3VmaXggKi8KKysgIDAsICAvKiBzdGFwX2lzX3NpbmdsZV9vcGVyYW5kICov CisrICAwLCAgLyogc3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuICovCisgICAwLCAgLyogaGFzX2ds b2JhbF9zb2xpc3QgKi8KKyAgIDAsICAvKiBoYXNfZ2xvYmFsX2JyZWFrcG9pbnRzICovCisgICBk ZWZhdWx0X2hhc19zaGFyZWRfYWRkcmVzc19zcGFjZSwgIC8qIGhhc19zaGFyZWRfYWRkcmVzc19z cGFjZSAqLworQEAgLTcwNyw2ICs3MjcsMTYgQEAgdmVyaWZ5X2dkYmFyY2ggKHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoKQorICAgLyogU2tpcCB2ZXJpZnkgb2YgZ2V0X3NpZ2luZm9fdHlwZSwgaGFz IHByZWRpY2F0ZS4gICovCisgICAvKiBTa2lwIHZlcmlmeSBvZiByZWNvcmRfc3BlY2lhbF9zeW1i b2wsIGhhcyBwcmVkaWNhdGUuICAqLworICAgLyogU2tpcCB2ZXJpZnkgb2YgZ2V0X3N5c2NhbGxf bnVtYmVyLCBoYXMgcHJlZGljYXRlLiAgKi8KKysgIC8qIFNraXAgdmVyaWZ5IG9mIHN0YXBfaW50 ZWdlcl9wcmVmaXgsIGludmFsaWRfcCA9PSAwICovCisrICAvKiBTa2lwIHZlcmlmeSBvZiBzdGFw X2ludGVnZXJfc3VmaXgsIGludmFsaWRfcCA9PSAwICovCisrICAvKiBTa2lwIHZlcmlmeSBvZiBz dGFwX3JlZ2lzdGVyX3ByZWZpeCwgaW52YWxpZF9wID09IDAgKi8KKysgIC8qIFNraXAgdmVyaWZ5 IG9mIHN0YXBfcmVnaXN0ZXJfc3VmaXgsIGludmFsaWRfcCA9PSAwICovCisrICAvKiBTa2lwIHZl cmlmeSBvZiBzdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3ByZWZpeCwgaW52YWxpZF9wID09IDAg Ki8KKysgIC8qIFNraXAgdmVyaWZ5IG9mIHN0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fc3VmaXgs IGludmFsaWRfcCA9PSAwICovCisrICAvKiBTa2lwIHZlcmlmeSBvZiBzdGFwX2dkYl9yZWdpc3Rl cl9wcmVmaXgsIGludmFsaWRfcCA9PSAwICovCisrICAvKiBTa2lwIHZlcmlmeSBvZiBzdGFwX2dk Yl9yZWdpc3Rlcl9zdWZpeCwgaW52YWxpZF9wID09IDAgKi8KKysgIC8qIFNraXAgdmVyaWZ5IG9m IHN0YXBfaXNfc2luZ2xlX29wZXJhbmQsIGhhcyBwcmVkaWNhdGUuICAqLworKyAgLyogU2tpcCB2 ZXJpZnkgb2Ygc3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuLCBoYXMgcHJlZGljYXRlLiAgKi8KKyAg IC8qIFNraXAgdmVyaWZ5IG9mIGhhc19nbG9iYWxfc29saXN0LCBpbnZhbGlkX3AgPT0gMCAqLwor ICAgLyogU2tpcCB2ZXJpZnkgb2YgaGFzX2dsb2JhbF9icmVha3BvaW50cywgaW52YWxpZF9wID09 IDAgKi8KKyAgIC8qIFNraXAgdmVyaWZ5IG9mIGhhc19zaGFyZWRfYWRkcmVzc19zcGFjZSwgaW52 YWxpZF9wID09IDAgKi8KK0BAIC0xMjQwLDYgKzEyNzAsNDIgQEAgZ2RiYXJjaF9kdW1wIChzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHVpX2ZpbGUgKmZpbGUpCisgICAgICAgICAgICAg ICAgICAgICAgICJnZGJhcmNoX2R1bXA6IHN0YWJzX2FyZ3VtZW50X2hhc19hZGRyID0gPCVzPlxu IiwKKyAgICAgICAgICAgICAgICAgICAgICAgaG9zdF9hZGRyZXNzX3RvX3N0cmluZyAoZ2RiYXJj aC0+c3RhYnNfYXJndW1lbnRfaGFzX2FkZHIpKTsKKyAgIGZwcmludGZfdW5maWx0ZXJlZCAoZmls ZSwKKysgICAgICAgICAgICAgICAgICAgICAgImdkYmFyY2hfZHVtcDogc3RhcF9nZGJfcmVnaXN0 ZXJfcHJlZml4ID0gJXNcbiIsCisrICAgICAgICAgICAgICAgICAgICAgIGdkYmFyY2gtPnN0YXBf Z2RiX3JlZ2lzdGVyX3ByZWZpeCk7CisrICBmcHJpbnRmX3VuZmlsdGVyZWQgKGZpbGUsCisrICAg ICAgICAgICAgICAgICAgICAgICJnZGJhcmNoX2R1bXA6IHN0YXBfZ2RiX3JlZ2lzdGVyX3N1Zml4 ID0gJXNcbiIsCisrICAgICAgICAgICAgICAgICAgICAgIGdkYmFyY2gtPnN0YXBfZ2RiX3JlZ2lz dGVyX3N1Zml4KTsKKysgIGZwcmludGZfdW5maWx0ZXJlZCAoZmlsZSwKKysgICAgICAgICAgICAg ICAgICAgICAgImdkYmFyY2hfZHVtcDogc3RhcF9pbnRlZ2VyX3ByZWZpeCA9ICVzXG4iLAorKyAg ICAgICAgICAgICAgICAgICAgICBnZGJhcmNoLT5zdGFwX2ludGVnZXJfcHJlZml4KTsKKysgIGZw cmludGZfdW5maWx0ZXJlZCAoZmlsZSwKKysgICAgICAgICAgICAgICAgICAgICAgImdkYmFyY2hf ZHVtcDogc3RhcF9pbnRlZ2VyX3N1Zml4ID0gJXNcbiIsCisrICAgICAgICAgICAgICAgICAgICAg IGdkYmFyY2gtPnN0YXBfaW50ZWdlcl9zdWZpeCk7CisrICBmcHJpbnRmX3VuZmlsdGVyZWQgKGZp bGUsCisrICAgICAgICAgICAgICAgICAgICAgICJnZGJhcmNoX2R1bXA6IGdkYmFyY2hfc3RhcF9p c19zaW5nbGVfb3BlcmFuZF9wKCkgPSAlZFxuIiwKKysgICAgICAgICAgICAgICAgICAgICAgZ2Ri YXJjaF9zdGFwX2lzX3NpbmdsZV9vcGVyYW5kX3AgKGdkYmFyY2gpKTsKKysgIGZwcmludGZfdW5m aWx0ZXJlZCAoZmlsZSwKKysgICAgICAgICAgICAgICAgICAgICAgImdkYmFyY2hfZHVtcDogc3Rh cF9pc19zaW5nbGVfb3BlcmFuZCA9IDwlcz5cbiIsCisrICAgICAgICAgICAgICAgICAgICAgIGhv c3RfYWRkcmVzc190b19zdHJpbmcgKGdkYmFyY2gtPnN0YXBfaXNfc2luZ2xlX29wZXJhbmQpKTsK KysgIGZwcmludGZfdW5maWx0ZXJlZCAoZmlsZSwKKysgICAgICAgICAgICAgICAgICAgICAgImdk YmFyY2hfZHVtcDogZ2RiYXJjaF9zdGFwX3BhcnNlX3NwZWNpYWxfdG9rZW5fcCgpID0gJWRcbiIs CisrICAgICAgICAgICAgICAgICAgICAgIGdkYmFyY2hfc3RhcF9wYXJzZV9zcGVjaWFsX3Rva2Vu X3AgKGdkYmFyY2gpKTsKKysgIGZwcmludGZfdW5maWx0ZXJlZCAoZmlsZSwKKysgICAgICAgICAg ICAgICAgICAgICAgImdkYmFyY2hfZHVtcDogc3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuID0gPCVz PlxuIiwKKysgICAgICAgICAgICAgICAgICAgICAgaG9zdF9hZGRyZXNzX3RvX3N0cmluZyAoZ2Ri YXJjaC0+c3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuKSk7CisrICBmcHJpbnRmX3VuZmlsdGVyZWQg KGZpbGUsCisrICAgICAgICAgICAgICAgICAgICAgICJnZGJhcmNoX2R1bXA6IHN0YXBfcmVnaXN0 ZXJfaW5kaXJlY3Rpb25fcHJlZml4ID0gJXNcbiIsCisrICAgICAgICAgICAgICAgICAgICAgIGdk YmFyY2gtPnN0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fcHJlZml4KTsKKysgIGZwcmludGZfdW5m aWx0ZXJlZCAoZmlsZSwKKysgICAgICAgICAgICAgICAgICAgICAgImdkYmFyY2hfZHVtcDogc3Rh cF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9zdWZpeCA9ICVzXG4iLAorKyAgICAgICAgICAgICAgICAg ICAgICBnZGJhcmNoLT5zdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3N1Zml4KTsKKysgIGZwcmlu dGZfdW5maWx0ZXJlZCAoZmlsZSwKKysgICAgICAgICAgICAgICAgICAgICAgImdkYmFyY2hfZHVt cDogc3RhcF9yZWdpc3Rlcl9wcmVmaXggPSAlc1xuIiwKKysgICAgICAgICAgICAgICAgICAgICAg Z2RiYXJjaC0+c3RhcF9yZWdpc3Rlcl9wcmVmaXgpOworKyAgZnByaW50Zl91bmZpbHRlcmVkIChm aWxlLAorKyAgICAgICAgICAgICAgICAgICAgICAiZ2RiYXJjaF9kdW1wOiBzdGFwX3JlZ2lzdGVy X3N1Zml4ID0gJXNcbiIsCisrICAgICAgICAgICAgICAgICAgICAgIGdkYmFyY2gtPnN0YXBfcmVn aXN0ZXJfc3VmaXgpOworKyAgZnByaW50Zl91bmZpbHRlcmVkIChmaWxlLAorICAgICAgICAgICAg ICAgICAgICAgICAiZ2RiYXJjaF9kdW1wOiBnZGJhcmNoX3N0YXRpY190cmFuc2Zvcm1fbmFtZV9w KCkgPSAlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgZ2RiYXJjaF9zdGF0aWNfdHJhbnNm b3JtX25hbWVfcCAoZ2RiYXJjaCkpOworICAgZnByaW50Zl91bmZpbHRlcmVkIChmaWxlLAorQEAg LTM3NTksNiArMzgyNSwxOTAgQEAgc2V0X2dkYmFyY2hfZ2V0X3N5c2NhbGxfbnVtYmVyIChzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKyAgIGdkYmFyY2gtPmdldF9zeXNjYWxsX251bWJlciA9IGdl dF9zeXNjYWxsX251bWJlcjsKICB9CiAgCi0rI2lmIDAKLSsvKiBEZWNsYXJlIFRZUEUgYXMgZGlz Y2FyZGFibGUgb24gbmV4dCBnYXJiYWdlIGNvbGxlY3Rpb24gYnkgZnJlZV9hbGxfdHlwZXMuCi0r ICAgWW91IG11c3QgY2FsbCB0eXBlX21hcmtfdXNlZCBkdXJpbmcgZWFjaCBmcmVlX2FsbF90eXBl cyB0byBwcm90ZWN0IFRZUEUgZnJvbQotKyAgIGJlaW5nIGRlYWxsb2NhdGVkLiAgKi8KKytjb25z dCBjaGFyICoKKytnZGJhcmNoX3N0YXBfaW50ZWdlcl9wcmVmaXggKHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoKQorK3sKKysgIGdkYl9hc3NlcnQgKGdkYmFyY2ggIT0gTlVMTCk7CisrICAvKiBTa2lw IHZlcmlmeSBvZiBzdGFwX2ludGVnZXJfcHJlZml4LCBpbnZhbGlkX3AgPT0gMCAqLworKyAgaWYg KGdkYmFyY2hfZGVidWcgPj0gMikKKysgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9n LCAiZ2RiYXJjaF9zdGFwX2ludGVnZXJfcHJlZml4IGNhbGxlZFxuIik7CisrICByZXR1cm4gZ2Ri YXJjaC0+c3RhcF9pbnRlZ2VyX3ByZWZpeDsKKyt9CiArCi0rc3RhdGljIHZvaWQKLStzZXRfdHlw ZV9hc19kaXNjYXJkYWJsZSAoc3RydWN0IHR5cGUgKnR5cGUpCisrdm9pZAorK3NldF9nZGJhcmNo X3N0YXBfaW50ZWdlcl9wcmVmaXggKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBzdGFwX2ludGVnZXJfcHJlZml4 KQogK3sKLSsgIHZvaWQgKipzbG90OworKyAgZ2RiYXJjaC0+c3RhcF9pbnRlZ2VyX3ByZWZpeCA9 IHN0YXBfaW50ZWdlcl9wcmVmaXg7CisrfQogKwotKyAgZ2RiX2Fzc2VydCAoIVRZUEVfRElTQ0FS REFCTEUgKHR5cGUpKTsKKytjb25zdCBjaGFyICoKKytnZGJhcmNoX3N0YXBfaW50ZWdlcl9zdWZp eCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCisreworKyAgZ2RiX2Fzc2VydCAoZ2RiYXJjaCAh PSBOVUxMKTsKKysgIC8qIFNraXAgdmVyaWZ5IG9mIHN0YXBfaW50ZWdlcl9zdWZpeCwgaW52YWxp ZF9wID09IDAgKi8KKysgIGlmIChnZGJhcmNoX2RlYnVnID49IDIpCisrICAgIGZwcmludGZfdW5m aWx0ZXJlZCAoZ2RiX3N0ZGxvZywgImdkYmFyY2hfc3RhcF9pbnRlZ2VyX3N1Zml4IGNhbGxlZFxu Iik7CisrICByZXR1cm4gZ2RiYXJjaC0+c3RhcF9pbnRlZ2VyX3N1Zml4OworK30KICsKLSsgIFRZ UEVfRElTQ0FSREFCTEUgKHR5cGUpID0gMTsKLSsgIFRZUEVfRElTQ0FSREFCTEVfQUdFICh0eXBl KSA9IHR5cGVfZGlzY2FyZGFibGVfYWdlX2N1cnJlbnQ7Cisrdm9pZAorK3NldF9nZGJhcmNoX3N0 YXBfaW50ZWdlcl9zdWZpeCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICogc3RhcF9pbnRlZ2VyX3N1Zml4KQorK3sK KysgIGdkYmFyY2gtPnN0YXBfaW50ZWdlcl9zdWZpeCA9IHN0YXBfaW50ZWdlcl9zdWZpeDsKKyt9 CiArCi0rICBzbG90ID0gaHRhYl9maW5kX3Nsb3QgKHR5cGVfZGlzY2FyZGFibGVfdGFibGUsIHR5 cGUsIElOU0VSVCk7Ci0rICBnZGJfYXNzZXJ0ICghKnNsb3QpOwotKyAgKnNsb3QgPSB0eXBlOwor K2NvbnN0IGNoYXIgKgorK2dkYmFyY2hfc3RhcF9yZWdpc3Rlcl9wcmVmaXggKHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoKQorK3sKKysgIGdkYl9hc3NlcnQgKGdkYmFyY2ggIT0gTlVMTCk7CisrICAv KiBTa2lwIHZlcmlmeSBvZiBzdGFwX3JlZ2lzdGVyX3ByZWZpeCwgaW52YWxpZF9wID09IDAgKi8K KysgIGlmIChnZGJhcmNoX2RlYnVnID49IDIpCisrICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2Ri X3N0ZGxvZywgImdkYmFyY2hfc3RhcF9yZWdpc3Rlcl9wcmVmaXggY2FsbGVkXG4iKTsKKysgIHJl dHVybiBnZGJhcmNoLT5zdGFwX3JlZ2lzdGVyX3ByZWZpeDsKICt9Ci0rI2VuZGlmCiArCi0rLyog QWxsb2NhdGUgYSBuZXcgdHlwZSBsaWtlIGFsbG9jX3R5cGUgYnV0IHByZXNlcnZlIGZvciBpdCB0 aGUgZGlzY2FyZGFiaWxpdHkKLSsgICBzdGF0ZSBvZiBQQVJFTlRfVFlQRS4gICovCisrdm9pZAor K3NldF9nZGJhcmNoX3N0YXBfcmVnaXN0ZXJfcHJlZml4IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIHN0YXBf cmVnaXN0ZXJfcHJlZml4KQorK3sKKysgIGdkYmFyY2gtPnN0YXBfcmVnaXN0ZXJfcHJlZml4ID0g c3RhcF9yZWdpc3Rlcl9wcmVmaXg7CisrfQogKwotK3N0YXRpYyBzdHJ1Y3QgdHlwZSAqCi0rYWxs b2NfdHlwZV9hc19wYXJlbnQgKHN0cnVjdCB0eXBlICpwYXJlbnRfdHlwZSkKKytjb25zdCBjaGFy ICoKKytnZGJhcmNoX3N0YXBfcmVnaXN0ZXJfc3VmaXggKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo KQogK3sKLSsgIHN0cnVjdCB0eXBlICpuZXdfdHlwZSA9IGFsbG9jX3R5cGVfY29weSAocGFyZW50 X3R5cGUpOworKyAgZ2RiX2Fzc2VydCAoZ2RiYXJjaCAhPSBOVUxMKTsKKysgIC8qIFNraXAgdmVy aWZ5IG9mIHN0YXBfcmVnaXN0ZXJfc3VmaXgsIGludmFsaWRfcCA9PSAwICovCisrICBpZiAoZ2Ri YXJjaF9kZWJ1ZyA+PSAyKQorKyAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJn ZGJhcmNoX3N0YXBfcmVnaXN0ZXJfc3VmaXggY2FsbGVkXG4iKTsKKysgIHJldHVybiBnZGJhcmNo LT5zdGFwX3JlZ2lzdGVyX3N1Zml4OworK30KICsKLSsjaWYgMAotKyAgaWYgKFRZUEVfRElTQ0FS REFCTEUgKHBhcmVudF90eXBlKSkKLSsgICAgc2V0X3R5cGVfYXNfZGlzY2FyZGFibGUgKG5ld190 eXBlKTsKLSsjZW5kaWYKKyt2b2lkCisrc2V0X2dkYmFyY2hfc3RhcF9yZWdpc3Rlcl9zdWZpeCAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgY2hhciAqIHN0YXBfcmVnaXN0ZXJfc3VmaXgpCisreworKyAgZ2RiYXJjaC0+c3Rh cF9yZWdpc3Rlcl9zdWZpeCA9IHN0YXBfcmVnaXN0ZXJfc3VmaXg7CisrfQogKwotKyAgcmV0dXJu IG5ld190eXBlOworK2NvbnN0IGNoYXIgKgorK2dkYmFyY2hfc3RhcF9yZWdpc3Rlcl9pbmRpcmVj dGlvbl9wcmVmaXggKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQorK3sKKysgIGdkYl9hc3NlcnQg KGdkYmFyY2ggIT0gTlVMTCk7CisrICAvKiBTa2lwIHZlcmlmeSBvZiBzdGFwX3JlZ2lzdGVyX2lu ZGlyZWN0aW9uX3ByZWZpeCwgaW52YWxpZF9wID09IDAgKi8KKysgIGlmIChnZGJhcmNoX2RlYnVn ID49IDIpCisrICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgImdkYmFyY2hfc3Rh cF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9wcmVmaXggY2FsbGVkXG4iKTsKKysgIHJldHVybiBnZGJh cmNoLT5zdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3ByZWZpeDsKICt9CiArCi0gLyogQWxsb2Nh dGUgYSBuZXcgR0RCQVJDSC1hc3NvY2lhdGVkIHR5cGUgc3RydWN0dXJlIGFuZCBmaWxsIGl0Ci0g ICAgd2l0aCBzb21lIGRlZmF1bHRzLiAgU3BhY2UgZm9yIHRoZSB0eXBlIHN0cnVjdHVyZSBpcyBh bGxvY2F0ZWQKLSAgICBvbiB0aGUgaGVhcC4gICovCi1AQCAtMzAwLDcgKzM0OSw3IEBAIG1ha2Vf cG9pbnRlcl90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3QKLSAKLSAgIGlmICh0eXBlcHRyID09 IDAgfHwgKnR5cGVwdHIgPT0gMCkJLyogV2UnbGwgbmVlZCB0byBhbGxvY2F0ZSBvbmUuICAqLwot ICAgICB7Ci0tICAgICAgbnR5cGUgPSBhbGxvY190eXBlX2NvcHkgKHR5cGUpOwotKyAgICAgIG50 eXBlID0gYWxsb2NfdHlwZV9hc19wYXJlbnQgKHR5cGUpOwotICAgICAgIGlmICh0eXBlcHRyKQot IAkqdHlwZXB0ciA9IG50eXBlOwotICAgICB9Ci1AQCAtMzc3LDcgKzQyNiw3IEBAIG1ha2VfcmVm ZXJlbmNlX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLAorK3ZvaWQKKytzZXRfZ2RiYXJjaF9zdGFw X3JlZ2lzdGVyX2luZGlyZWN0aW9uX3ByZWZpeCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg KiBzdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3ByZWZpeCkKKyt7CisrICBnZGJhcmNoLT5zdGFw X3JlZ2lzdGVyX2luZGlyZWN0aW9uX3ByZWZpeCA9IHN0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25f cHJlZml4OworK30KKysKKytjb25zdCBjaGFyICoKKytnZGJhcmNoX3N0YXBfcmVnaXN0ZXJfaW5k aXJlY3Rpb25fc3VmaXggKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQorK3sKKysgIGdkYl9hc3Nl cnQgKGdkYmFyY2ggIT0gTlVMTCk7CisrICAvKiBTa2lwIHZlcmlmeSBvZiBzdGFwX3JlZ2lzdGVy X2luZGlyZWN0aW9uX3N1Zml4LCBpbnZhbGlkX3AgPT0gMCAqLworKyAgaWYgKGdkYmFyY2hfZGVi dWcgPj0gMikKKysgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiZ2RiYXJjaF9z dGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3N1Zml4IGNhbGxlZFxuIik7CisrICByZXR1cm4gZ2Ri YXJjaC0+c3RhcF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9zdWZpeDsKKyt9CisrCisrdm9pZAorK3Nl dF9nZGJhcmNoX3N0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fc3VmaXggKHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGNoYXIgKiBzdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3N1Zml4KQorK3sKKysgIGdk YmFyY2gtPnN0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fc3VmaXggPSBzdGFwX3JlZ2lzdGVyX2lu ZGlyZWN0aW9uX3N1Zml4OworK30KKysKKytjb25zdCBjaGFyICoKKytnZGJhcmNoX3N0YXBfZ2Ri X3JlZ2lzdGVyX3ByZWZpeCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCisreworKyAgZ2RiX2Fz c2VydCAoZ2RiYXJjaCAhPSBOVUxMKTsKKysgIC8qIFNraXAgdmVyaWZ5IG9mIHN0YXBfZ2RiX3Jl Z2lzdGVyX3ByZWZpeCwgaW52YWxpZF9wID09IDAgKi8KKysgIGlmIChnZGJhcmNoX2RlYnVnID49 IDIpCisrICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgImdkYmFyY2hfc3RhcF9n ZGJfcmVnaXN0ZXJfcHJlZml4IGNhbGxlZFxuIik7CisrICByZXR1cm4gZ2RiYXJjaC0+c3RhcF9n ZGJfcmVnaXN0ZXJfcHJlZml4OworK30KKysKKyt2b2lkCisrc2V0X2dkYmFyY2hfc3RhcF9nZGJf cmVnaXN0ZXJfcHJlZml4IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBzdGFwX2dkYl9yZWdpc3Rlcl9w cmVmaXgpCisreworKyAgZ2RiYXJjaC0+c3RhcF9nZGJfcmVnaXN0ZXJfcHJlZml4ID0gc3RhcF9n ZGJfcmVnaXN0ZXJfcHJlZml4OworK30KKysKKytjb25zdCBjaGFyICoKKytnZGJhcmNoX3N0YXBf Z2RiX3JlZ2lzdGVyX3N1Zml4IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKKyt7CisrICBnZGJf YXNzZXJ0IChnZGJhcmNoICE9IE5VTEwpOworKyAgLyogU2tpcCB2ZXJpZnkgb2Ygc3RhcF9nZGJf cmVnaXN0ZXJfc3VmaXgsIGludmFsaWRfcCA9PSAwICovCisrICBpZiAoZ2RiYXJjaF9kZWJ1ZyA+ PSAyKQorKyAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJnZGJhcmNoX3N0YXBf Z2RiX3JlZ2lzdGVyX3N1Zml4IGNhbGxlZFxuIik7CisrICByZXR1cm4gZ2RiYXJjaC0+c3RhcF9n ZGJfcmVnaXN0ZXJfc3VmaXg7CisrfQorKworK3ZvaWQKKytzZXRfZ2RiYXJjaF9zdGFwX2dkYl9y ZWdpc3Rlcl9zdWZpeCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBzdGFwX2dkYl9yZWdpc3Rlcl9zdWZp eCkKKyt7CisrICBnZGJhcmNoLT5zdGFwX2dkYl9yZWdpc3Rlcl9zdWZpeCA9IHN0YXBfZ2RiX3Jl Z2lzdGVyX3N1Zml4OworK30KKysKKytpbnQKKytnZGJhcmNoX3N0YXBfaXNfc2luZ2xlX29wZXJh bmRfcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCisreworKyAgZ2RiX2Fzc2VydCAoZ2RiYXJj aCAhPSBOVUxMKTsKKysgIHJldHVybiBnZGJhcmNoLT5zdGFwX2lzX3NpbmdsZV9vcGVyYW5kICE9 IE5VTEw7CisrfQorKworK2ludAorK2dkYmFyY2hfc3RhcF9pc19zaW5nbGVfb3BlcmFuZCAoc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2gsIGNvbnN0IGNoYXIgKnMpCisreworKyAgZ2RiX2Fzc2VydCAo Z2RiYXJjaCAhPSBOVUxMKTsKKysgIGdkYl9hc3NlcnQgKGdkYmFyY2gtPnN0YXBfaXNfc2luZ2xl X29wZXJhbmQgIT0gTlVMTCk7CisrICBpZiAoZ2RiYXJjaF9kZWJ1ZyA+PSAyKQorKyAgICBmcHJp bnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJnZGJhcmNoX3N0YXBfaXNfc2luZ2xlX29wZXJh bmQgY2FsbGVkXG4iKTsKKysgIHJldHVybiBnZGJhcmNoLT5zdGFwX2lzX3NpbmdsZV9vcGVyYW5k IChnZGJhcmNoLCBzKTsKKyt9CisrCisrdm9pZAorK3NldF9nZGJhcmNoX3N0YXBfaXNfc2luZ2xl X29wZXJhbmQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGdkYmFyY2hfc3RhcF9pc19zaW5nbGVfb3BlcmFuZF9mdHlwZSBzdGFw X2lzX3NpbmdsZV9vcGVyYW5kKQorK3sKKysgIGdkYmFyY2gtPnN0YXBfaXNfc2luZ2xlX29wZXJh bmQgPSBzdGFwX2lzX3NpbmdsZV9vcGVyYW5kOworK30KKysKKytpbnQKKytnZGJhcmNoX3N0YXBf cGFyc2Vfc3BlY2lhbF90b2tlbl9wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKKyt7CisrICBn ZGJfYXNzZXJ0IChnZGJhcmNoICE9IE5VTEwpOworKyAgcmV0dXJuIGdkYmFyY2gtPnN0YXBfcGFy c2Vfc3BlY2lhbF90b2tlbiAhPSBOVUxMOworK30KKysKKytpbnQKKytnZGJhcmNoX3N0YXBfcGFy c2Vfc3BlY2lhbF90b2tlbiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCBzdGFwX3Bh cnNlX2luZm8gKnApCisreworKyAgZ2RiX2Fzc2VydCAoZ2RiYXJjaCAhPSBOVUxMKTsKKysgIGdk Yl9hc3NlcnQgKGdkYmFyY2gtPnN0YXBfcGFyc2Vfc3BlY2lhbF90b2tlbiAhPSBOVUxMKTsKKysg IGlmIChnZGJhcmNoX2RlYnVnID49IDIpCisrICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0 ZGxvZywgImdkYmFyY2hfc3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuIGNhbGxlZFxuIik7CisrICBy ZXR1cm4gZ2RiYXJjaC0+c3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuIChnZGJhcmNoLCBwKTsKKyt9 CisrCisrdm9pZAorK3NldF9nZGJhcmNoX3N0YXBfcGFyc2Vfc3BlY2lhbF90b2tlbiAoc3RydWN0 IGdkYmFyY2ggKmdkYmFyY2gsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBnZGJhcmNoX3N0YXBfcGFyc2Vfc3BlY2lhbF90b2tlbl9mdHlwZSBzdGFwX3BhcnNlX3NwZWNp YWxfdG9rZW4pCisreworKyAgZ2RiYXJjaC0+c3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuID0gc3Rh cF9wYXJzZV9zcGVjaWFsX3Rva2VuOworK30KKysKKyBpbnQKKyBnZGJhcmNoX2hhc19nbG9iYWxf c29saXN0IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKKyB7CitkaWZmIC0tZ2l0IGEvZ2RiL2dk YmFyY2guaCBiL2dkYi9nZGJhcmNoLmgKK2luZGV4IGMyNTdjNjMuLmVlYjhlNjIgMTAwNjQ0Cist LS0gYS9nZGIvZ2RiYXJjaC5oCisrKysgYi9nZGIvZ2RiYXJjaC5oCitAQCAtNTUsNiArNTUsNyBA QCBzdHJ1Y3QgY29yZV9yZWdzZXRfc2VjdGlvbjsKKyBzdHJ1Y3Qgc3lzY2FsbDsKKyBzdHJ1Y3Qg YWdlbnRfZXhwcjsKKyBzdHJ1Y3QgYXhzX3ZhbHVlOworK3N0cnVjdCBzdGFwX3BhcnNlX2luZm87 CisgCisgLyogVGhlIGFyY2hpdGVjdHVyZSBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbm5lY3Rpb24g dG8gdGhlIHRhcmdldC4KKyAgCitAQCAtOTYzLDYgKzk2NCwxMjUgQEAgdHlwZWRlZiBMT05HRVNU IChnZGJhcmNoX2dldF9zeXNjYWxsX251bWJlcl9mdHlwZSkgKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLCBwdGkKKyBleHRlcm4gTE9OR0VTVCBnZGJhcmNoX2dldF9zeXNjYWxsX251bWJlciAoc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2gsIHB0aWRfdCBwdGlkKTsKKyBleHRlcm4gdm9pZCBzZXRfZ2Ri YXJjaF9nZXRfc3lzY2FsbF9udW1iZXIgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBnZGJhcmNo X2dldF9zeXNjYWxsX251bWJlcl9mdHlwZSAqZ2V0X3N5c2NhbGxfbnVtYmVyKTsKICAKLSAgIGlm ICh0eXBlcHRyID09IDAgfHwgKnR5cGVwdHIgPT0gMCkJLyogV2UnbGwgbmVlZCB0byBhbGxvY2F0 ZSBvbmUuICAqLwotICAgICB7Ci0tICAgICAgbnR5cGUgPSBhbGxvY190eXBlX2NvcHkgKHR5cGUp OwotKyAgICAgIG50eXBlID0gYWxsb2NfdHlwZV9hc19wYXJlbnQgKHR5cGUpOworKy8qIFN5c3Rl bVRhcCByZWxhdGVkIGZpZWxkcyBhbmQgZnVuY3Rpb25zLgorKyAgIFByZWZpeCB1c2VkIHRvIG1h cmsgYW4gaW50ZWdlciBjb25zdGFudCBvbiB0aGUgYXJjaGl0ZWN0dXJlJ3MgYXNzZW1ibHkKKysg ICBGb3IgZXhhbXBsZSwgb24geDg2IGludGVnZXIgY29uc3RhbnRzIGFyZSB3cml0dGVuIGFzOgor KyAgCisrICAgICQxMCA7OyBpbnRlZ2VyIGNvbnN0YW50IDEwCisrICAKKysgICBpbiB0aGlzIGNh c2UsIHRoaXMgcHJlZml4IHdvdWxkIGJlIHRoZSBjaGFyYWN0ZXIgYCQnLiAqLworKworK2V4dGVy biBjb25zdCBjaGFyICogZ2RiYXJjaF9zdGFwX2ludGVnZXJfcHJlZml4IChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCk7CisrZXh0ZXJuIHZvaWQgc2V0X2dkYmFyY2hfc3RhcF9pbnRlZ2VyX3ByZWZp eCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGNvbnN0IGNoYXIgKiBzdGFwX2ludGVnZXJfcHJl Zml4KTsKKysKKysvKiBTdWZpeCB1c2VkIHRvIG1hcmsgYW4gaW50ZWdlciBjb25zdGFudCBvbiB0 aGUgYXJjaGl0ZWN0dXJlJ3MgYXNzZW1ibHkuICovCisrCisrZXh0ZXJuIGNvbnN0IGNoYXIgKiBn ZGJhcmNoX3N0YXBfaW50ZWdlcl9zdWZpeCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpOworK2V4 dGVybiB2b2lkIHNldF9nZGJhcmNoX3N0YXBfaW50ZWdlcl9zdWZpeCAoc3RydWN0IGdkYmFyY2gg KmdkYmFyY2gsIGNvbnN0IGNoYXIgKiBzdGFwX2ludGVnZXJfc3VmaXgpOworKworKy8qIFByZWZp eCB1c2VkIHRvIG1hcmsgYSByZWdpc3RlciBuYW1lIG9uIHRoZSBhcmNoaXRlY3R1cmUncyBhc3Nl bWJseS4KKysgICBGb3IgZXhhbXBsZSwgb24geDg2IHRoZSByZWdpc3RlciBuYW1lIGlzIHdyaXR0 ZW4gYXM6CisrICAKKysgICAgJWVheCA7OyByZWdpc3RlciBlYXgKKysgIAorKyAgIGluIHRoaXMg Y2FzZSwgdGhpcyBwcmVmaXggd291bGQgYmUgdGhlIGNoYXJhY3RlciBgJScuICovCisrCisrZXh0 ZXJuIGNvbnN0IGNoYXIgKiBnZGJhcmNoX3N0YXBfcmVnaXN0ZXJfcHJlZml4IChzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCk7CisrZXh0ZXJuIHZvaWQgc2V0X2dkYmFyY2hfc3RhcF9yZWdpc3Rlcl9w cmVmaXggKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBjb25zdCBjaGFyICogc3RhcF9yZWdpc3Rl cl9wcmVmaXgpOworKworKy8qIFN1Zml4IHVzZWQgdG8gbWFyayBhIHJlZ2lzdGVyIG5hbWUgb24g dGhlIGFyY2hpdGVjdHVyZSdzIGFzc2VtYmx5ICovCisrCisrZXh0ZXJuIGNvbnN0IGNoYXIgKiBn ZGJhcmNoX3N0YXBfcmVnaXN0ZXJfc3VmaXggKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKTsKKytl eHRlcm4gdm9pZCBzZXRfZ2RiYXJjaF9zdGFwX3JlZ2lzdGVyX3N1Zml4IChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCwgY29uc3QgY2hhciAqIHN0YXBfcmVnaXN0ZXJfc3VmaXgpOworKworKy8qIFBy ZWZpeCB1c2VkIHRvIG1hcmsgYSByZWdpc3RlciBpbmRpcmVjdGlvbiBvbiB0aGUgYXJjaGl0ZWN0 dXJlJ3MgYXNzZW1ibHkuCisrICAgRm9yIGV4YW1wbGUsIG9uIHg4NiB0aGUgcmVnaXN0ZXIgaW5k aXJlY3Rpb24gaXMgd3JpdHRlbiBhczoKKysgIAorKyAgICAoJWVheCkgOzsgaW5kaXJlY3Rpbmcg ZWF4CisrICAKKysgICBpbiB0aGlzIGNhc2UsIHRoaXMgcHJlZml4IHdvdWxkIGJlIHRoZSBjaGFy YXRlciBgKCcuCisrICAKKysgICBQbGVhc2Ugbm90ZSB0aGF0IHdlIHVzZSB0aGUgaW5kaXJlY3Rp b24gcHJlZml4IGFsc28gZm9yIHJlZ2lzdGVyCisrICAgZGlzcGxhY2VtZW50LCBlLmcuLCBgNCgl ZWF4KScgb24geDg2LiAqLworKworK2V4dGVybiBjb25zdCBjaGFyICogZ2RiYXJjaF9zdGFwX3Jl Z2lzdGVyX2luZGlyZWN0aW9uX3ByZWZpeCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpOworK2V4 dGVybiB2b2lkIHNldF9nZGJhcmNoX3N0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fcHJlZml4IChz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgY29uc3QgY2hhciAqIHN0YXBfcmVnaXN0ZXJfaW5kaXJl Y3Rpb25fcHJlZml4KTsKKysKKysvKiBTdWZpeCB1c2VkIHRvIG1hcmsgYSByZWdpc3RlciBpbmRp cmVjdGlvbiBvbiB0aGUgYXJjaGl0ZWN0dXJlJ3MgYXNzZW1ibHkuCisrICAgRm9yIGV4YW1wbGUs IG9uIHg4NiB0aGUgcmVnaXN0ZXIgaW5kaXJlY3Rpb24gaXMgd3JpdHRlbiBhczoKKysgIAorKyAg ICAoJWVheCkgOzsgaW5kaXJlY3RpbmcgZWF4CisrICAKKysgICBpbiB0aGlzIGNhc2UsIHRoaXMg cHJlZml4IHdvdWxkIGJlIHRoZSBjaGFyYXRlciBgKScuCisrICAKKysgICBQbGVhc2Ugbm90ZSB0 aGF0IHdlIHVzZSB0aGUgaW5kaXJlY3Rpb24gc3VmaXggYWxzbyBmb3IgcmVnaXN0ZXIKKysgICBk aXNwbGFjZW1lbnQsIGUuZy4sIGA0KCVlYXgpJyBvbiB4ODYuICovCisrCisrZXh0ZXJuIGNvbnN0 IGNoYXIgKiBnZGJhcmNoX3N0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fc3VmaXggKHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoKTsKKytleHRlcm4gdm9pZCBzZXRfZ2RiYXJjaF9zdGFwX3JlZ2lzdGVy X2luZGlyZWN0aW9uX3N1Zml4IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgY29uc3QgY2hhciAq IHN0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fc3VmaXgpOworKworKy8qIFByZWZpeCB1c2VkIHRv IG5hbWUgYSByZWdpc3RlciB1c2luZyBHREIncyBub21lbmNsYXR1cmUuCisrICAKKysgICBGb3Ig ZXhhbXBsZSwgb24gUFBDIGEgcmVnaXN0ZXIgaXMgcmVwcmVzZW50ZWQgYnkgYSBudW1iZXIgaW4g dGhlIGFzc2VtYmx5CisrICAgbGFuZ3VhZ2UgKGUuZy4sIGAxMCcgaXMgdGhlIDEwdGggZ2VuZXJh bC1wdXJwb3NlIHJlZ2lzdGVyKS4gIEhvd2V2ZXIsCisrICAgaW5zaWRlIEdEQiB0aGlzIHNhbWUg cmVnaXN0ZXIgaGFzIGFuIGByJyBhcHBlbmRlZCB0byBpdHMgbmFtZSwgc28gdGhlIDEwdGgKKysg ICByZWdpc3RlciB3b3VsZCBiZSByZXByZXNlbnRlZCBhcyBgcjEwJyBpbnRlcm5hbGx5LiAqLwor KworK2V4dGVybiBjb25zdCBjaGFyICogZ2RiYXJjaF9zdGFwX2dkYl9yZWdpc3Rlcl9wcmVmaXgg KHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKTsKKytleHRlcm4gdm9pZCBzZXRfZ2RiYXJjaF9zdGFw X2dkYl9yZWdpc3Rlcl9wcmVmaXggKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBjb25zdCBjaGFy ICogc3RhcF9nZGJfcmVnaXN0ZXJfcHJlZml4KTsKKysKKysvKiBTdWZpeCB1c2VkIHRvIG5hbWUg YSByZWdpc3RlciB1c2luZyBHREIncyBub21lbmNsYXR1cmUuICovCisrCisrZXh0ZXJuIGNvbnN0 IGNoYXIgKiBnZGJhcmNoX3N0YXBfZ2RiX3JlZ2lzdGVyX3N1Zml4IChzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCk7CisrZXh0ZXJuIHZvaWQgc2V0X2dkYmFyY2hfc3RhcF9nZGJfcmVnaXN0ZXJfc3Vm aXggKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBjb25zdCBjaGFyICogc3RhcF9nZGJfcmVnaXN0 ZXJfc3VmaXgpOworKworKy8qIENoZWNrIGlmIFMgaXMgYSBzaW5nbGUgb3BlcmFuZC4KKysgIAor KyAgIFNpbmdsZSBvcGVyYW5kcyBjYW4gYmU6CisrICAgIC0gTGl0ZXJhbCBpbnRlZ2VycywgZS5n LiBgJDEwJyBvbiB4ODYKKysgICAgLSBSZWdpc3RlciBhY2Nlc3MsIGUuZy4gYCVlYXgnIG9uIHg4 NgorKyAgICAtIFJlZ2lzdGVyIGluZGlyZWN0aW9uLCBlLmcuIGAoJWVheCknIG9uIHg4NgorKyAg ICAtIFJlZ2lzdGVyIGRpc3BsYWNlbWVudCwgZS5nLiBgNCglZWF4KScgb24geDg2CisrICAKKysg ICBUaGlzIGZ1bmN0aW9uIHNob3VsZCBjaGVjayBmb3IgdGhlc2UgcGF0dGVybnMgb24gdGhlIHN0 cmluZworKyAgIGFuZCByZXR1cm4gMSBpZiBzb21lIHdlcmUgZm91bmQsIG9yIHplcm8gb3RoZXJ3 aXNlLiAgUGxlYXNlIHRyeSB0byBtYXRjaAorKyAgIGFzIG11Y2ggaW5mbyBhcyB5b3UgY2FuIGZy b20gdGhlIHN0cmluZywgaS5lLiwgaWYgeW91IGhhdmUgdG8gbWF0Y2gKKysgICBzb21ldGhpbmcg bGlrZSBgKCUnLCBkbyBub3QgbWF0Y2gganVzdCB0aGUgYCgnLiAqLworKworK2V4dGVybiBpbnQg Z2RiYXJjaF9zdGFwX2lzX3NpbmdsZV9vcGVyYW5kX3AgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo KTsKKysKKyt0eXBlZGVmIGludCAoZ2RiYXJjaF9zdGFwX2lzX3NpbmdsZV9vcGVyYW5kX2Z0eXBl KSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGNvbnN0IGNoYXIgKnMpOworK2V4dGVybiBpbnQg Z2RiYXJjaF9zdGFwX2lzX3NpbmdsZV9vcGVyYW5kIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwg Y29uc3QgY2hhciAqcyk7CisrZXh0ZXJuIHZvaWQgc2V0X2dkYmFyY2hfc3RhcF9pc19zaW5nbGVf b3BlcmFuZCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGdkYmFyY2hfc3RhcF9pc19zaW5nbGVf b3BlcmFuZF9mdHlwZSAqc3RhcF9pc19zaW5nbGVfb3BlcmFuZCk7CisrCisrLyogRnVuY3Rpb24g dXNlZCB0byBoYW5kbGUgYSAic3BlY2lhbCBjYXNlIiBpbiB0aGUgcGFyc2VyLgorKyAgCisrICAg QSAic3BlY2lhbCBjYXNlIiBpcyBjb25zaWRlcmVkIHRvIGJlIGFuIHVua25vd24gdG9rZW4sIGku ZS4sIGEgdG9rZW4KKysgICB0aGF0IHRoZSBwYXJzZXIgZG9lcyBub3Qga25vdyBob3cgdG8gcGFy c2UuICBBIGdvb2QgZXhhbXBsZSBvZiBzcGVjaWFsCisrICAgY2FzZSB3b3VsZCBiZSBBUk0ncyBy ZWdpc3RlciBkaXNwbGFjZW1lbnQgc3ludGF4OgorKyAgCisrICAgIFtSMCwgIzRdICA7OyBkaXNw bGFjaW5nIFIwIGJ5IDQKKysgIAorKyAgIFNpbmNlIHRoZSBwYXJzZXIgYXNzdW1lcyB0aGF0IGEg cmVnaXN0ZXIgZGlzcGxhY2VtZW50IGlzIG9mIHRoZSBmb3JtOgorKyAgCisrICAgIDxudW1iZXI+ IDxpbmRpcmVjdGlvbl9wcmVmaXg+IDxyZWdpc3Rlcl9uYW1lPiA8aW5kaXJlY3Rpb25fc3VmaXg+ CisrICAKKysgICBpdCBtZWFucyB0aGF0IGl0IHdpbGwgbm90IGJlIGFibGUgdG8gcmVjb2duaXpl IGFuZCBwYXJzZSB0aGlzIG9kZCBzeW50YXguCisrICAgVGhlcmVmb3JlLCB3ZSBzaG91bGQgYWRk IGEgc3BlY2lhbCBjYXNlIGZ1bmN0aW9uIHRoYXQgd2lsbCBoYW5kbGUgdGhpcyB0b2tlbi4KKysg IAorKyAgIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGdlbmVyYXRlIHRoZSBwcm9wZXIgZXhwcmVzc2lv biBmb3JtIG9mIHRoZSBleHByZXNzaW9uCisrICAgdXNpbmcgR0RCJ3MgaW50ZXJuYWwgZXhwcmVz c2lvbiBtZWNoYW5pc20gKGUuZy4sIGB3cml0ZV9leHBfZWx0X29wY29kZScKKysgICBhbmQgc28g b24pLiAgSXQgc2hvdWxkIGFsc28gcmV0dXJuIDEgaWYgdGhlIHBhcnNpbmcgd2FzIHN1Y2Nlc3Nm dWwsIG9yIHplcm8KKysgICBpZiB0aGUgdG9rZW4gd2FzIG5vdCByZWNvZ25pemVkIGFzIGEgc3Bl Y2lhbCB0b2tlbiAoaW4gdGhpcyBjYXNlLCByZXR1cm5pbmcKKysgICB6ZXJvIG1lYW5zIHRoYXQg dGhlIHNwZWNpYWwgcGFyc2VyIGlzIGRlZmVycmluZyB0aGUgcGFyc2luZyB0byB0aGUgZ2VuZXJp YworKyAgIHBhcnNlciksIGFuZCBzaG91bGQgYWR2YW5jZSB0aGUgYnVmZmVyIHBvaW50ZXIgKHAt PmFyZykuICovCisrCisrZXh0ZXJuIGludCBnZGJhcmNoX3N0YXBfcGFyc2Vfc3BlY2lhbF90b2tl bl9wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCk7CisrCisrdHlwZWRlZiBpbnQgKGdkYmFyY2hf c3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuX2Z0eXBlKSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gs IHN0cnVjdCBzdGFwX3BhcnNlX2luZm8gKnApOworK2V4dGVybiBpbnQgZ2RiYXJjaF9zdGFwX3Bh cnNlX3NwZWNpYWxfdG9rZW4gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3Qgc3RhcF9w YXJzZV9pbmZvICpwKTsKKytleHRlcm4gdm9pZCBzZXRfZ2RiYXJjaF9zdGFwX3BhcnNlX3NwZWNp YWxfdG9rZW4gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBnZGJhcmNoX3N0YXBfcGFyc2Vfc3Bl Y2lhbF90b2tlbl9mdHlwZSAqc3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuKTsKKysKKyAvKiBUcnVl IGlmIHRoZSBsaXN0IG9mIHNoYXJlZCBsaWJyYXJpZXMgaXMgb25lIGFuZCBvbmx5IGZvciBhbGwK KyAgICBwcm9jZXNzZXMsIGFzIG9wcG9zZWQgdG8gYSBsaXN0IG9mIHNoYXJlZCBsaWJyYXJpZXMg cGVyIGluZmVyaW9yLgorICAgIFRoaXMgdXN1YWxseSBtZWFucyB0aGF0IGFsbCBwcm9jZXNzZXMs IGFsdGhvdWdoIG1heSBvciBtYXkgbm90IHNoYXJlCitkaWZmIC0tZ2l0IGEvZ2RiL2dkYmFyY2gu c2ggYi9nZGIvZ2RiYXJjaC5zaAoraW5kZXggMGMzMzQ0Zi4uNTM0M2FjZSAxMDA3NTUKKy0tLSBh L2dkYi9nZGJhcmNoLnNoCisrKysgYi9nZGIvZ2RiYXJjaC5zaAorQEAgLTc4Nyw2ICs3ODcsMTAx IEBAIE06dm9pZDpyZWNvcmRfc3BlY2lhbF9zeW1ib2w6c3RydWN0IG9iamZpbGUgKm9iamZpbGUs IGFzeW1ib2wgKnN5bTpvYmpmaWxlLCBzeW0KKyAjIEdldCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMg c3lzdGVtIGNhbGxzIGluZm9ybWF0aW9uIGZyb20gcmVnaXN0ZXJzLgorIE06TE9OR0VTVDpnZXRf c3lzY2FsbF9udW1iZXI6cHRpZF90IHB0aWQ6cHRpZAorIAorKyMgU3lzdGVtVGFwIHJlbGF0ZWQg ZmllbGRzIGFuZCBmdW5jdGlvbnMuCisrCisrIyBQcmVmaXggdXNlZCB0byBtYXJrIGFuIGludGVn ZXIgY29uc3RhbnQgb24gdGhlIGFyY2hpdGVjdHVyZSdzIGFzc2VtYmx5CisrIyBGb3IgZXhhbXBs ZSwgb24geDg2IGludGVnZXIgY29uc3RhbnRzIGFyZSB3cml0dGVuIGFzOgorKyMKKysjICBcJDEw IDs7IGludGVnZXIgY29uc3RhbnQgMTAKKysjCisrIyBpbiB0aGlzIGNhc2UsIHRoaXMgcHJlZml4 IHdvdWxkIGJlIHRoZSBjaGFyYWN0ZXIgXGBcJFwnLgorK3Y6Y29uc3QgY2hhciAqOnN0YXBfaW50 ZWdlcl9wcmVmaXg6OjowOjA6OjA6Z2RiYXJjaC0+c3RhcF9pbnRlZ2VyX3ByZWZpeAorKworKyMg U3VmaXggdXNlZCB0byBtYXJrIGFuIGludGVnZXIgY29uc3RhbnQgb24gdGhlIGFyY2hpdGVjdHVy ZSdzIGFzc2VtYmx5LgorK3Y6Y29uc3QgY2hhciAqOnN0YXBfaW50ZWdlcl9zdWZpeDo6OjA6MDo6 MDpnZGJhcmNoLT5zdGFwX2ludGVnZXJfc3VmaXgKKysKKysjIFByZWZpeCB1c2VkIHRvIG1hcmsg YSByZWdpc3RlciBuYW1lIG9uIHRoZSBhcmNoaXRlY3R1cmUncyBhc3NlbWJseS4KKysjIEZvciBl eGFtcGxlLCBvbiB4ODYgdGhlIHJlZ2lzdGVyIG5hbWUgaXMgd3JpdHRlbiBhczoKKysjCisrIyAg XCVlYXggOzsgcmVnaXN0ZXIgZWF4CisrIworKyMgaW4gdGhpcyBjYXNlLCB0aGlzIHByZWZpeCB3 b3VsZCBiZSB0aGUgY2hhcmFjdGVyIFxgXCVcJy4KKyt2OmNvbnN0IGNoYXIgKjpzdGFwX3JlZ2lz dGVyX3ByZWZpeDo6OjA6MDo6MDpnZGJhcmNoLT5zdGFwX3JlZ2lzdGVyX3ByZWZpeAorKworKyMg U3VmaXggdXNlZCB0byBtYXJrIGEgcmVnaXN0ZXIgbmFtZSBvbiB0aGUgYXJjaGl0ZWN0dXJlJ3Mg YXNzZW1ibHkKKyt2OmNvbnN0IGNoYXIgKjpzdGFwX3JlZ2lzdGVyX3N1Zml4Ojo6MDowOjowOmdk YmFyY2gtPnN0YXBfcmVnaXN0ZXJfc3VmaXgKKysKKysjIFByZWZpeCB1c2VkIHRvIG1hcmsgYSBy ZWdpc3RlciBpbmRpcmVjdGlvbiBvbiB0aGUgYXJjaGl0ZWN0dXJlJ3MgYXNzZW1ibHkuCisrIyBG b3IgZXhhbXBsZSwgb24geDg2IHRoZSByZWdpc3RlciBpbmRpcmVjdGlvbiBpcyB3cml0dGVuIGFz OgorKyMKKysjICBcKFwlZWF4XCkgOzsgaW5kaXJlY3RpbmcgZWF4CisrIworKyMgaW4gdGhpcyBj YXNlLCB0aGlzIHByZWZpeCB3b3VsZCBiZSB0aGUgY2hhcmF0ZXIgXGBcKFwnLgorKyMKKysjIFBs ZWFzZSBub3RlIHRoYXQgd2UgdXNlIHRoZSBpbmRpcmVjdGlvbiBwcmVmaXggYWxzbyBmb3IgcmVn aXN0ZXIKKysjIGRpc3BsYWNlbWVudCwgZS5nLiwgXGA0XChcJWVheFwpXCcgb24geDg2LgorK3Y6 Y29uc3QgY2hhciAqOnN0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fcHJlZml4Ojo6MDowOjowOmdk YmFyY2gtPnN0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fcHJlZml4CisrCisrIyBTdWZpeCB1c2Vk IHRvIG1hcmsgYSByZWdpc3RlciBpbmRpcmVjdGlvbiBvbiB0aGUgYXJjaGl0ZWN0dXJlJ3MgYXNz ZW1ibHkuCisrIyBGb3IgZXhhbXBsZSwgb24geDg2IHRoZSByZWdpc3RlciBpbmRpcmVjdGlvbiBp cyB3cml0dGVuIGFzOgorKyMKKysjICBcKFwlZWF4XCkgOzsgaW5kaXJlY3RpbmcgZWF4CisrIwor KyMgaW4gdGhpcyBjYXNlLCB0aGlzIHByZWZpeCB3b3VsZCBiZSB0aGUgY2hhcmF0ZXIgXGBcKVwn LgorKyMKKysjIFBsZWFzZSBub3RlIHRoYXQgd2UgdXNlIHRoZSBpbmRpcmVjdGlvbiBzdWZpeCBh bHNvIGZvciByZWdpc3RlcgorKyMgZGlzcGxhY2VtZW50LCBlLmcuLCBcYDRcKFwlZWF4XClcJyBv biB4ODYuCisrdjpjb25zdCBjaGFyICo6c3RhcF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9zdWZpeDo6 OjA6MDo6MDpnZGJhcmNoLT5zdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3N1Zml4CisrCisrIyBQ cmVmaXggdXNlZCB0byBuYW1lIGEgcmVnaXN0ZXIgdXNpbmcgR0RCJ3Mgbm9tZW5jbGF0dXJlLgor KyMKKysjIEZvciBleGFtcGxlLCBvbiBQUEMgYSByZWdpc3RlciBpcyByZXByZXNlbnRlZCBieSBh IG51bWJlciBpbiB0aGUgYXNzZW1ibHkKKysjIGxhbmd1YWdlIChlLmcuLCBcYDEwXCcgaXMgdGhl IDEwdGggZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyKS4gIEhvd2V2ZXIsCisrIyBpbnNpZGUgR0RC IHRoaXMgc2FtZSByZWdpc3RlciBoYXMgYW4gXGByXCcgYXBwZW5kZWQgdG8gaXRzIG5hbWUsIHNv IHRoZSAxMHRoCisrIyByZWdpc3RlciB3b3VsZCBiZSByZXByZXNlbnRlZCBhcyBcYHIxMFwnIGlu dGVybmFsbHkuCisrdjpjb25zdCBjaGFyICo6c3RhcF9nZGJfcmVnaXN0ZXJfcHJlZml4Ojo6MDow OjowOmdkYmFyY2gtPnN0YXBfZ2RiX3JlZ2lzdGVyX3ByZWZpeAorKworKyMgU3VmaXggdXNlZCB0 byBuYW1lIGEgcmVnaXN0ZXIgdXNpbmcgR0RCJ3Mgbm9tZW5jbGF0dXJlLgorK3Y6Y29uc3QgY2hh ciAqOnN0YXBfZ2RiX3JlZ2lzdGVyX3N1Zml4Ojo6MDowOjowOmdkYmFyY2gtPnN0YXBfZ2RiX3Jl Z2lzdGVyX3N1Zml4CisrCisrIyBDaGVjayBpZiBTIGlzIGEgc2luZ2xlIG9wZXJhbmQuCisrIwor KyMgU2luZ2xlIG9wZXJhbmRzIGNhbiBiZToKKysjICBcLSBMaXRlcmFsIGludGVnZXJzLCBlLmcu IFxgXCQxMFwnIG9uIHg4NgorKyMgIFwtIFJlZ2lzdGVyIGFjY2VzcywgZS5nLiBcYFwlZWF4XCcg b24geDg2CisrIyAgXC0gUmVnaXN0ZXIgaW5kaXJlY3Rpb24sIGUuZy4gXGBcKFwlZWF4XClcJyBv biB4ODYKKysjICBcLSBSZWdpc3RlciBkaXNwbGFjZW1lbnQsIGUuZy4gXGA0XChcJWVheFwpXCcg b24geDg2CisrIworKyMgVGhpcyBmdW5jdGlvbiBzaG91bGQgY2hlY2sgZm9yIHRoZXNlIHBhdHRl cm5zIG9uIHRoZSBzdHJpbmcKKysjIGFuZCByZXR1cm4gMSBpZiBzb21lIHdlcmUgZm91bmQsIG9y IHplcm8gb3RoZXJ3aXNlLiAgUGxlYXNlIHRyeSB0byBtYXRjaAorKyMgYXMgbXVjaCBpbmZvIGFz IHlvdSBjYW4gZnJvbSB0aGUgc3RyaW5nLCBpLmUuLCBpZiB5b3UgaGF2ZSB0byBtYXRjaAorKyMg c29tZXRoaW5nIGxpa2UgXGBcKFwlXCcsIGRvIG5vdCBtYXRjaCBqdXN0IHRoZSBcYFwoXCcuCisr TTppbnQ6c3RhcF9pc19zaW5nbGVfb3BlcmFuZDpjb25zdCBjaGFyICpzOnMKKysKKysjIEZ1bmN0 aW9uIHVzZWQgdG8gaGFuZGxlIGEgInNwZWNpYWwgY2FzZSIgaW4gdGhlIHBhcnNlci4KKysjCisr IyBBICJzcGVjaWFsIGNhc2UiIGlzIGNvbnNpZGVyZWQgdG8gYmUgYW4gdW5rbm93biB0b2tlbiwg aS5lLiwgYSB0b2tlbgorKyMgdGhhdCB0aGUgcGFyc2VyIGRvZXMgbm90IGtub3cgaG93IHRvIHBh cnNlLiAgQSBnb29kIGV4YW1wbGUgb2Ygc3BlY2lhbAorKyMgY2FzZSB3b3VsZCBiZSBBUk0ncyBy ZWdpc3RlciBkaXNwbGFjZW1lbnQgc3ludGF4OgorKyMKKysjICBbUjAsICM0XSAgOzsgZGlzcGxh Y2luZyBSMCBieSA0CisrIworKyMgU2luY2UgdGhlIHBhcnNlciBhc3N1bWVzIHRoYXQgYSByZWdp c3RlciBkaXNwbGFjZW1lbnQgaXMgb2YgdGhlIGZvcm06CisrIworKyMgIDxudW1iZXI+IDxpbmRp cmVjdGlvbl9wcmVmaXg+IDxyZWdpc3Rlcl9uYW1lPiA8aW5kaXJlY3Rpb25fc3VmaXg+CisrIwor KyMgaXQgbWVhbnMgdGhhdCBpdCB3aWxsIG5vdCBiZSBhYmxlIHRvIHJlY29nbml6ZSBhbmQgcGFy c2UgdGhpcyBvZGQgc3ludGF4LgorKyMgVGhlcmVmb3JlLCB3ZSBzaG91bGQgYWRkIGEgc3BlY2lh bCBjYXNlIGZ1bmN0aW9uIHRoYXQgd2lsbCBoYW5kbGUgdGhpcyB0b2tlbi4KKysjCisrIyBUaGlz IGZ1bmN0aW9uIHNob3VsZCBnZW5lcmF0ZSB0aGUgcHJvcGVyIGV4cHJlc3Npb24gZm9ybSBvZiB0 aGUgZXhwcmVzc2lvbgorKyMgdXNpbmcgR0RCXCdzIGludGVybmFsIGV4cHJlc3Npb24gbWVjaGFu aXNtIChlLmcuLCBcYHdyaXRlX2V4cF9lbHRfb3Bjb2RlXCcKKysjIGFuZCBzbyBvbikuICBJdCBz aG91bGQgYWxzbyByZXR1cm4gMSBpZiB0aGUgcGFyc2luZyB3YXMgc3VjY2Vzc2Z1bCwgb3IgemVy bworKyMgaWYgdGhlIHRva2VuIHdhcyBub3QgcmVjb2duaXplZCBhcyBhIHNwZWNpYWwgdG9rZW4g KGluIHRoaXMgY2FzZSwgcmV0dXJuaW5nCisrIyB6ZXJvIG1lYW5zIHRoYXQgdGhlIHNwZWNpYWwg cGFyc2VyIGlzIGRlZmVycmluZyB0aGUgcGFyc2luZyB0byB0aGUgZ2VuZXJpYworKyMgcGFyc2Vy KSwgYW5kIHNob3VsZCBhZHZhbmNlIHRoZSBidWZmZXIgcG9pbnRlciAocC0+YXJnKS4KKytNOmlu dDpzdGFwX3BhcnNlX3NwZWNpYWxfdG9rZW46c3RydWN0IHN0YXBfcGFyc2VfaW5mbyAqcDpwCisr CisrCisgIyBUcnVlIGlmIHRoZSBsaXN0IG9mIHNoYXJlZCBsaWJyYXJpZXMgaXMgb25lIGFuZCBv bmx5IGZvciBhbGwKKyAjIHByb2Nlc3NlcywgYXMgb3Bwb3NlZCB0byBhIGxpc3Qgb2Ygc2hhcmVk IGxpYnJhcmllcyBwZXIgaW5mZXJpb3IuCisgIyBUaGlzIHVzdWFsbHkgbWVhbnMgdGhhdCBhbGwg cHJvY2Vzc2VzLCBhbHRob3VnaCBtYXkgb3IgbWF5IG5vdCBzaGFyZQorQEAgLTk0Niw2ICsxMDQx LDcgQEAgc3RydWN0IGNvcmVfcmVnc2V0X3NlY3Rpb247Cisgc3RydWN0IHN5c2NhbGw7Cisgc3Ry dWN0IGFnZW50X2V4cHI7Cisgc3RydWN0IGF4c192YWx1ZTsKKytzdHJ1Y3Qgc3RhcF9wYXJzZV9p bmZvOworIAorIC8qIFRoZSBhcmNoaXRlY3R1cmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb25uZWN0 aW9uIHRvIHRoZSB0YXJnZXQuCisgIAorZGlmZiAtLWdpdCBhL2dkYi9nZGJpbml0LmluIGIvZ2Ri L2dkYmluaXQuaW4KK2luZGV4IGZmYjdmNTMuLmEyZTdlOTQgMTAwNjQ0CistLS0gYS9nZGIvZ2Ri aW5pdC5pbgorKysrIGIvZ2RiL2dkYmluaXQuaW4KK0BAIC0xLDUgKzEsMTUgQEAKKyBlY2hvIFNl dHRpbmcgdXAgdGhlIGVudmlyb25tZW50IGZvciBkZWJ1Z2dpbmcgZ2RiLlxuCisgCisrIyBTZXQg dXAgdGhlIFB5dGhvbiBsaWJyYXJ5IGFuZCAicmVxdWlyZSIgY29tbWFuZC4KKytweXRob24KKytm cm9tIG9zLnBhdGggaW1wb3J0IGFic3BhdGgKKytnZGIuZGF0YWRpciA9IGFic3BhdGggKCdAc3Jj ZGlyQC9weXRob24vbGliJykKKytnZGIucHl0aG9ubGliZGlyID0gZ2RiLmRhdGFkaXIKKytnZGIu X19wYXRoX18gPSBbZ2RiLmRhdGFkaXIgKyAnL2dkYiddCisrc3lzLnBhdGguaW5zZXJ0KDAsIGdk Yi5kYXRhZGlyKQorK2VuZAorK3NvdXJjZSBAc3JjZGlyQC9weXRob24vbGliL2dkYi9fX2luaXRf Xy5weQorKworIHNldCBjb21wbGFpbnRzIDEKKyAKKyBiIGludGVybmFsX2Vycm9yCitkaWZmIC0t Z2l0IGEvZ2RiL2dkYnR5cGVzLmMgYi9nZGIvZ2RidHlwZXMuYworaW5kZXggZDBjYjY3OC4uOGI4 YjAzZCAxMDA2NDQKKy0tLSBhL2dkYi9nZGJ0eXBlcy5jCisrKysgYi9nZGIvZ2RidHlwZXMuYwor QEAgLTM5LDYgKzM5LDkgQEAKKyAjaW5jbHVkZSAiY3AtYWJpLmgiCisgI2luY2x1ZGUgImdkYl9h c3NlcnQuaCIKKyAjaW5jbHVkZSAiaGFzaHRhYi5oIgorKyNpbmNsdWRlICJvYnNlcnZlci5oIgor KyNpbmNsdWRlICJkd2FyZjJleHByLmgiCisrI2luY2x1ZGUgImR3YXJmMmxvYy5oIgorIAorIAor IC8qIEluaXRpYWxpemUgQkFETkVTUyBjb25zdGFudHMuICAqLworQEAgLTE0NCw3ICsxNDcsMTYg QEAgc3RhdGljIHZvaWQgcHJpbnRfYml0X3ZlY3RvciAoQl9UWVBFICosIGludCk7Cisgc3RhdGlj IHZvaWQgcHJpbnRfYXJnX3R5cGVzIChzdHJ1Y3QgZmllbGQgKiwgaW50LCBpbnQpOworIHN0YXRp YyB2b2lkIGR1bXBfZm5fZmllbGRsaXN0cyAoc3RydWN0IHR5cGUgKiwgaW50KTsKKyBzdGF0aWMg dm9pZCBwcmludF9jcGx1c19zdHVmZiAoc3RydWN0IHR5cGUgKiwgaW50KTsKKytzdGF0aWMgTE9O R0VTVCB0eXBlX2xlbmd0aF9nZXQgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlwZSAqdGFy Z2V0X3R5cGUsCisrCQkJCWludCBmdWxsX3NwYW4pOworIAorKyNpZiAwCisrLyogVGhlIGhhc2gg dGFibGUgaG9sZGluZyBhbGwgZGlzY2FyZGFibGUgYHN0cnVjdCB0eXBlIConIHJlZmVyZW5jZXMu ICAqLworK3N0YXRpYyBodGFiX3QgdHlwZV9kaXNjYXJkYWJsZV90YWJsZTsKKysKKysvKiBDdXJy ZW50IHR5cGVfZGlzY2FyZGFibGVfY2hlY2sgcGFzcyB1c2VkIGZvciBUWVBFX0RJU0NBUkRBQkxF X0FHRS4gICovCisrc3RhdGljIGludCB0eXBlX2Rpc2NhcmRhYmxlX2FnZV9jdXJyZW50OworKyNl bmRpZgorIAorIC8qIEFsbG9jYXRlIGEgbmV3IE9CSkZJTEUtYXNzb2NpYXRlZCB0eXBlIHN0cnVj dHVyZSBhbmQgZmlsbCBpdAorICAgIHdpdGggc29tZSBkZWZhdWx0cy4gIFNwYWNlIGZvciB0aGUg dHlwZSBzdHJ1Y3R1cmUgaXMgYWxsb2NhdGVkCitAQCAtMTc1LDYgKzE4Nyw0MyBAQCBhbGxvY190 eXBlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyAgIHJldHVybiB0eXBlOworIH0KKyAKKysj aWYgMAorKy8qIERlY2xhcmUgVFlQRSBhcyBkaXNjYXJkYWJsZSBvbiBuZXh0IGdhcmJhZ2UgY29s bGVjdGlvbiBieSBmcmVlX2FsbF90eXBlcy4KKysgICBZb3UgbXVzdCBjYWxsIHR5cGVfbWFya191 c2VkIGR1cmluZyBlYWNoIGZyZWVfYWxsX3R5cGVzIHRvIHByb3RlY3QgVFlQRSBmcm9tCisrICAg YmVpbmcgZGVhbGxvY2F0ZWQuICAqLworKworK3N0YXRpYyB2b2lkCisrc2V0X3R5cGVfYXNfZGlz Y2FyZGFibGUgKHN0cnVjdCB0eXBlICp0eXBlKQorK3sKKysgIHZvaWQgKipzbG90OworKworKyAg Z2RiX2Fzc2VydCAoIVRZUEVfRElTQ0FSREFCTEUgKHR5cGUpKTsKKysKKysgIFRZUEVfRElTQ0FS REFCTEUgKHR5cGUpID0gMTsKKysgIFRZUEVfRElTQ0FSREFCTEVfQUdFICh0eXBlKSA9IHR5cGVf ZGlzY2FyZGFibGVfYWdlX2N1cnJlbnQ7CisrCisrICBzbG90ID0gaHRhYl9maW5kX3Nsb3QgKHR5 cGVfZGlzY2FyZGFibGVfdGFibGUsIHR5cGUsIElOU0VSVCk7CisrICBnZGJfYXNzZXJ0ICghKnNs b3QpOworKyAgKnNsb3QgPSB0eXBlOworK30KKysjZW5kaWYKKysKKysvKiBBbGxvY2F0ZSBhIG5l dyB0eXBlIGxpa2UgYWxsb2NfdHlwZSBidXQgcHJlc2VydmUgZm9yIGl0IHRoZSBkaXNjYXJkYWJp bGl0eQorKyAgIHN0YXRlIG9mIFBBUkVOVF9UWVBFLiAgKi8KKysKKytzdGF0aWMgc3RydWN0IHR5 cGUgKgorK2FsbG9jX3R5cGVfYXNfcGFyZW50IChzdHJ1Y3QgdHlwZSAqcGFyZW50X3R5cGUpCisr eworKyAgc3RydWN0IHR5cGUgKm5ld190eXBlID0gYWxsb2NfdHlwZV9jb3B5IChwYXJlbnRfdHlw ZSk7CisrCisrI2lmIDAKKysgIGlmIChUWVBFX0RJU0NBUkRBQkxFIChwYXJlbnRfdHlwZSkpCisr ICAgIHNldF90eXBlX2FzX2Rpc2NhcmRhYmxlIChuZXdfdHlwZSk7CisrI2VuZGlmCisrCisrICBy ZXR1cm4gbmV3X3R5cGU7CisrfQorKworIC8qIEFsbG9jYXRlIGEgbmV3IEdEQkFSQ0gtYXNzb2Np YXRlZCB0eXBlIHN0cnVjdHVyZSBhbmQgZmlsbCBpdAorICAgIHdpdGggc29tZSBkZWZhdWx0cy4g IFNwYWNlIGZvciB0aGUgdHlwZSBzdHJ1Y3R1cmUgaXMgYWxsb2NhdGVkCisgICAgb24gdGhlIGhl YXAuICAqLworQEAgLTMwMCw3ICszNDksNyBAQCBtYWtlX3BvaW50ZXJfdHlwZSAoc3RydWN0IHR5 cGUgKnR5cGUsIHN0cnVjdCB0eXBlICoqdHlwZXB0cikKKyAKKyAgIGlmICh0eXBlcHRyID09IDAg fHwgKnR5cGVwdHIgPT0gMCkJLyogV2UnbGwgbmVlZCB0byBhbGxvY2F0ZSBvbmUuICAqLworICAg ICB7CistICAgICAgbnR5cGUgPSBhbGxvY190eXBlX2NvcHkgKHR5cGUpOworKyAgICAgIG50eXBl ID0gYWxsb2NfdHlwZV9hc19wYXJlbnQgKHR5cGUpOworICAgICAgIGlmICh0eXBlcHRyKQorIAkq dHlwZXB0ciA9IG50eXBlOworICAgICB9CitAQCAtMzc3LDcgKzQyNiw3IEBAIG1ha2VfcmVmZXJl bmNlX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlwZSAqKnR5cGVwdHIpCisgCisg ICBpZiAodHlwZXB0ciA9PSAwIHx8ICp0eXBlcHRyID09IDApCS8qIFdlJ2xsIG5lZWQgdG8gYWxs b2NhdGUgb25lLiAgKi8KKyAgICAgeworLSAgICAgIG50eXBlID0gYWxsb2NfdHlwZV9jb3B5ICh0 eXBlKTsKKysgICAgICBudHlwZSA9IGFsbG9jX3R5cGVfYXNfcGFyZW50ICh0eXBlKTsKICAgICAg ICBpZiAodHlwZXB0cikKICAJKnR5cGVwdHIgPSBudHlwZTsKICAgICAgfQotQEAgLTc0OCw2ICs3 OTcsNyBAQCBjcmVhdGVfcmFuZ2VfdHlwZSAoc3RydWN0IHR5cGUgKnJlc3VsdF90CitAQCAtNzUw LDYgKzc5OSw3IEBAIGNyZWF0ZV9yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqcmVzdWx0X3R5cGUs IHN0cnVjdCB0eXBlICppbmRleF90eXBlLAogICAgICBUWVBFX1pBTExPQyAocmVzdWx0X3R5cGUs IHNpemVvZiAoc3RydWN0IHJhbmdlX2JvdW5kcykpOwogICAgVFlQRV9MT1dfQk9VTkQgKHJlc3Vs dF90eXBlKSA9IGxvd19ib3VuZDsKICAgIFRZUEVfSElHSF9CT1VORCAocmVzdWx0X3R5cGUpID0g aGlnaF9ib3VuZDsKQEAgLTM3NDEsNyArNDIxOSw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi9nZGJ0eXBlcy5jCiAgCiAgICBpZiAobG93X2JvdW5kID49IDApCiAgICAgIFRZUEVf VU5TSUdORUQgKHJlc3VsdF90eXBlKSA9IDE7Ci1AQCAtODkxLDI2ICs5NDEsMzEgQEAgY3JlYXRl X2FycmF5X3R5cGUgKHN0cnVjdCB0eXBlICpyZXN1bHRfdAorQEAgLTg5MywyNiArOTQzLDMxIEBA IGNyZWF0ZV9hcnJheV90eXBlIChzdHJ1Y3QgdHlwZSAqcmVzdWx0X3R5cGUsCiAgCiAgICBUWVBF X0NPREUgKHJlc3VsdF90eXBlKSA9IFRZUEVfQ09ERV9BUlJBWTsKICAgIFRZUEVfVEFSR0VUX1RZ UEUgKHJlc3VsdF90eXBlKSA9IGVsZW1lbnRfdHlwZTsKQEAgLTM3ODYsNyArNDI2NCw3IEBAIElu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9nZGJ0eXBlcy5jCiAgCiAgICByZXR1cm4gcmVz dWx0X3R5cGU7CiAgfQotQEAgLTE0MzksNiArMTQ5NCwxMDUgQEAgc3R1Yl9ub25hbWVfY29tcGxh aW50ICh2b2lkKQorQEAgLTE0NDEsNiArMTQ5NiwxMDUgQEAgc3R1Yl9ub25hbWVfY29tcGxhaW50 ICh2b2lkKQogICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBfKCJzdHViIHR5cGUg aGFzIE5VTEwgbmFtZSIpKTsKICB9CiAgCkBAIC0zODIzLDcgKzQzMDEsNyBAQCBJbmRleDogZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvZ2RidHlwZXMuYwogKyAgLyogSXQgbWF5IGhhcHBlbiBmb3Ig d3JvbmcgRFdBUkYgYW5ub3RhdGlvbnMgcmV0dXJuaW5nIGdhcmJhZ2UgZGF0YS4gICovCiArICBp ZiAoY291bnQgPCAwKQogKyAgICB3YXJuaW5nIChfKCJSYW5nZSBmb3IgdHlwZSAlcyBoYXMgaW52 YWxpZCBib3VuZHMgJXMuLiVzIiksCi0rCSAgICAgVFlQRV9OQU1FICh0eXBlKSwgcGxvbmdlc3Qg KFRZUEVfTE9XX0JPVU5EIChyYW5nZV90eXBlKSksCisrCSAgICAgVFlQRV9FUlJPUl9OQU1FICh0 eXBlKSwgcGxvbmdlc3QgKFRZUEVfTE9XX0JPVU5EIChyYW5nZV90eXBlKSksCiArCSAgICAgcGxv bmdlc3QgKFRZUEVfSElHSF9CT1VORCAocmFuZ2VfdHlwZSkpKTsKICsgIC8qIFRoZSBjb2RlIGJl bG93IGRvZXMgbm90IGhhbmRsZSBjb3VudCA9PSAwIHJpZ2h0LiAgKi8KICsgIGlmIChjb3VudCA8 PSAwKQpAQCAtMzg5Miw3ICs0MzcwLDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L2dkYnR5cGVzLmMKICAvKiBGaW5kIHRoZSByZWFsIHR5cGUgb2YgVFlQRS4gIFRoaXMgZnVuY3Rp b24gcmV0dXJucyB0aGUgcmVhbCB0eXBlLAogICAgIGFmdGVyIHJlbW92aW5nIGFsbCBsYXllcnMg b2YgdHlwZWRlZnMsIGFuZCBjb21wbGV0aW5nIG9wYXF1ZSBvciBzdHViCiAgICAgdHlwZXMuICBD b21wbGV0aW9uIGNoYW5nZXMgdGhlIFRZUEUgYXJndW1lbnQsIGJ1dCBzdHJpcHBpbmcgb2YKLUBA IC0xNjAxLDUyICsxNzU1LDM3IEBAIGNoZWNrX3R5cGVkZWYgKHN0cnVjdCB0eXBlICp0eXBlKQor QEAgLTE2MDcsNTIgKzE3NjEsMzcgQEAgY2hlY2tfdHlwZWRlZiAoc3RydWN0IHR5cGUgKnR5cGUp CiAgICAgICAgICB9CiAgICAgIH0KICAKQEAgLTM5NjYsNyArNDQ0NCw3IEBAIEluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi9nZGJ0eXBlcy5jCiAgCSAgVFlQRV9UQVJHRVRfU1RVQiAodHlw ZSkgPSAwOwogIAl9CiAgICAgICAgZWxzZSBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NP REVfUkFOR0UpCi1AQCAtMTY1NCw2ICsxNzkzLDcgQEAgY2hlY2tfdHlwZWRlZiAoc3RydWN0IHR5 cGUgKnR5cGUpCitAQCAtMTY2MCw2ICsxNzk5LDcgQEAgY2hlY2tfdHlwZWRlZiAoc3RydWN0IHR5 cGUgKnR5cGUpCiAgCSAgVFlQRV9MRU5HVEggKHR5cGUpID0gVFlQRV9MRU5HVEggKHRhcmdldF90 eXBlKTsKICAJICBUWVBFX1RBUkdFVF9TVFVCICh0eXBlKSA9IDA7CiAgCX0KQEAgLTM5NzQsNyAr NDQ1Miw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9nZGJ0eXBlcy5jCiAgICAg IH0KICAKICAgIHR5cGUgPSBtYWtlX3F1YWxpZmllZF90eXBlICh0eXBlLCBpbnN0YW5jZV9mbGFn cywgTlVMTCk7Ci1AQCAtMzI5MiwzMyArMzQzMiw0MiBAQCB0eXBlX3BhaXJfZXEgKGNvbnN0IHZv aWQgKml0ZW1fbGhzLCBjb25zCitAQCAtMzMwOSwzMyArMzQ0OSw0MiBAQCB0eXBlX3BhaXJfZXEg KGNvbnN0IHZvaWQgKml0ZW1fbGhzLCBjb25zdCB2b2lkICppdGVtX3JocykKICB9CiAgCiAgLyog QWxsb2NhdGUgdGhlIGhhc2ggdGFibGUgdXNlZCBieSBjb3B5X3R5cGVfcmVjdXJzaXZlIHRvIHdh bGsKQEAgLTQwMzIsNyArNDUxMCw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9n ZGJ0eXBlcy5jCiAgICAgIHJldHVybiB0eXBlOwogIAogICAgLyogVGhpcyB0eXBlIHNob3VsZG4n dCBiZSBwb2ludGluZyB0byBhbnkgdHlwZXMgaW4gb3RoZXIgb2JqZmlsZXM7Ci1AQCAtMzMzMyw5 ICszNDgyLDEwIEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmoKK0BA IC0zMzUwLDkgKzM0OTksMTAgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUsCiAgICBuZXdfdHlwZSA9IGFsbG9jX3R5cGVfYXJjaCAoZ2V0X3R5cGVfYXJjaCAo dHlwZSkpOwogIAogICAgLyogV2UgbXVzdCBhZGQgdGhlIG5ldyB0eXBlIHRvIHRoZSBoYXNoIHRh YmxlIGltbWVkaWF0ZWx5LCBpbiBjYXNlCkBAIC00MDQ2LDcgKzQ1MjQsNyBAQCBJbmRleDogZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvZ2RidHlwZXMuYwogICAgc3RvcmVkLT5vbGQgPSB0eXBlOwog ICAgc3RvcmVkLT5uZXcgPSBuZXdfdHlwZTsKICAgICpzbG90ID0gc3RvcmVkOwotQEAgLTMzNDYs NiArMzQ5NiwyMSBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqCitA QCAtMzM2Myw2ICszNTEzLDIxIEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlLAogICAgVFlQRV9PQkpGSUxFX09XTkVEIChuZXdfdHlwZSkgPSAwOwogICAgVFlQ RV9PV05FUiAobmV3X3R5cGUpLmdkYmFyY2ggPSBnZXRfdHlwZV9hcmNoICh0eXBlKTsKICAKQEAg LTQwNjgsNyArNDU0Niw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9nZGJ0eXBl cy5jCiAgICBpZiAoVFlQRV9OQU1FICh0eXBlKSkKICAgICAgVFlQRV9OQU1FIChuZXdfdHlwZSkg PSB4c3RyZHVwIChUWVBFX05BTUUgKHR5cGUpKTsKICAgIGlmIChUWVBFX1RBR19OQU1FICh0eXBl KSkKLUBAIC0zMzU0LDEyICszNTE5LDQ4IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBv YmpmaWxlICpvYmoKK0BAIC0zMzcxLDEyICszNTM2LDQ4IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogICAgVFlQRV9JTlNUQU5DRV9GTEFHUyAobmV3X3R5 cGUpID0gVFlQRV9JTlNUQU5DRV9GTEFHUyAodHlwZSk7CiAgICBUWVBFX0xFTkdUSCAobmV3X3R5 cGUpID0gVFlQRV9MRU5HVEggKHR5cGUpOwogIApAQCAtNDExNyw3ICs0NTk1LDcgQEAgSW5kZXg6 IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2dkYnR5cGVzLmMKICAgICAgICBUWVBFX0ZJRUxEUyAo bmV3X3R5cGUpID0gWENBTExPQyAobmZpZWxkcywgc3RydWN0IGZpZWxkKTsKICAgICAgICBmb3Ig KGkgPSAwOyBpIDwgbmZpZWxkczsgaSsrKQogIAl7Ci1AQCAtMzM2OCw4ICszNTY5LDggQEAgY29w eV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iagorQEAgLTMzODUsOCArMzU4Niw4 IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogIAkgIFRZ UEVfRklFTERfQklUU0laRSAobmV3X3R5cGUsIGkpID0gVFlQRV9GSUVMRF9CSVRTSVpFICh0eXBl LCBpKTsKICAJICBpZiAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpKSkKICAJICAgIFRZUEVfRklF TERfVFlQRSAobmV3X3R5cGUsIGkpCkBAIC00MTI4LDcgKzQ2MDYsNyBAQCBJbmRleDogZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvZ2RidHlwZXMuYwogIAkgIGlmIChUWVBFX0ZJRUxEX05BTUUgKHR5 cGUsIGkpKQogIAkgICAgVFlQRV9GSUVMRF9OQU1FIChuZXdfdHlwZSwgaSkgPSAKICAJICAgICAg eHN0cmR1cCAoVFlQRV9GSUVMRF9OQU1FICh0eXBlLCBpKSk7Ci1AQCAtMzM5NiwyNCArMzU5Nywx ODQgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iagorQEAgLTM0MTMs MjQgKzM2MTQsMTg0IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLAogIAl9CiAgICAgIH0KICAKQEAgLTQzMjAsNyArNDc5OCw3IEBAIEluZGV4OiBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi9nZGJ0eXBlcy5jCiAgICAvKiBNYXliZSBjb3B5IHRoZSB0eXBlX3Nw ZWNpZmljIGJpdHMuCiAgCiAgICAgICBOT1RFIGRyb3cvMjAwNS0xMi0wOTogV2UgZG8gbm90IGNv cHkgdGhlIEMrKy1zcGVjaWZpYyBiaXRzIGxpa2UKLUBAIC0zNDMwLDYgKzM3OTEsMTcgQEAgY29w eV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iagorQEAgLTM0NDcsNiArMzgwOCwx NyBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAgIHJl dHVybiBuZXdfdHlwZTsKICB9CiAgCkBAIC00MzM4LDcgKzQ4MTYsNyBAQCBJbmRleDogZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvZ2RidHlwZXMuYwogIC8qIE1ha2UgYSBjb3B5IG9mIHRoZSBnaXZl biBUWVBFLCBleGNlcHQgdGhhdCB0aGUgcG9pbnRlciAmIHJlZmVyZW5jZQogICAgIHR5cGVzIGFy ZSBub3QgcHJlc2VydmVkLgogICAgIAotQEAgLTM0NTIsNiArMzgyNCwyMDEgQEAgY29weV90eXBl IChjb25zdCBzdHJ1Y3QgdHlwZSAqdHlwZSkKK0BAIC0zNDY5LDYgKzM4NDEsMjAxIEBAIGNvcHlf dHlwZSAoY29uc3Qgc3RydWN0IHR5cGUgKnR5cGUpCiAgICByZXR1cm4gbmV3X3R5cGU7CiAgfQog IApAQCAtNDU0MCw3ICs1MDE4LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2dk YnR5cGVzLmMKICAKICAvKiBIZWxwZXIgZnVuY3Rpb25zIHRvIGluaXRpYWxpemUgYXJjaGl0ZWN0 dXJlLXNwZWNpZmljIHR5cGVzLiAgKi8KICAKLUBAIC0zOTg0LDYgKzQ1NTEsMTMgQEAgdm9pZAor QEAgLTQwMDEsNiArNDU2OCwxMyBAQCB2b2lkCiAgX2luaXRpYWxpemVfZ2RidHlwZXMgKHZvaWQp CiAgewogICAgZ2RidHlwZXNfZGF0YSA9IGdkYmFyY2hfZGF0YV9yZWdpc3Rlcl9wb3N0X2luaXQg KGdkYnR5cGVzX3Bvc3RfaW5pdCk7CkBAIC00NTU0LDEwICs1MDMyLDEwIEBAIEluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi9nZGJ0eXBlcy5jCiAgICBvYmpmaWxlX3R5cGVfZGF0YSA9IHJl Z2lzdGVyX29iamZpbGVfZGF0YSAoKTsKICAKICAgIGFkZF9zZXRzaG93X3ppbnRlZ2VyX2NtZCAo Im92ZXJsb2FkIiwgbm9fY2xhc3MsICZvdmVybG9hZF9kZWJ1ZywKLUluZGV4OiBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi9nZGJ0eXBlcy5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDEx MDcyMi5vcmlnL2dkYi9nZGJ0eXBlcy5oCTIwMTEtMDctMDUgMTU6MzY6NDEuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZ2RidHlwZXMuaAkyMDExLTA3LTI5IDIy OjUyOjAyLjAwMDAwMDAwMCArMDIwMAorZGlmZiAtLWdpdCBhL2dkYi9nZGJ0eXBlcy5oIGIvZ2Ri L2dkYnR5cGVzLmgKK2luZGV4IDY5ZjZiNDYuLjg4OWQzOWUgMTAwNjQ0CistLS0gYS9nZGIvZ2Ri dHlwZXMuaAorKysrIGIvZ2RiL2dkYnR5cGVzLmgKIEBAIC0yMTUsNiArMjE1LDExIEBAIGVudW0g dHlwZV9pbnN0YW5jZV9mbGFnX3ZhbHVlCiAgCiAgI2RlZmluZSBUWVBFX1RBUkdFVF9TVFVCKHQp CShUWVBFX01BSU5fVFlQRSAodCktPmZsYWdfdGFyZ2V0X3N0dWIpCkBAIC00NjIxLDcgKzUwOTks NyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZ2RidHlwZXMuaAogIC8qIENvbnN0 YW50IHR5cGUuICBJZiB0aGlzIGlzIHNldCwgdGhlIGNvcnJlc3BvbmRpbmcgdHlwZSBoYXMgYQog ICAgIGNvbnN0IG1vZGlmaWVyLiAgKi8KICAKLUBAIC00MDAsNiArNDQ5LDE1IEBAIHN0cnVjdCBt YWluX3R5cGUKK0BAIC00MDEsNiArNDUwLDE1IEBAIHN0cnVjdCBtYWluX3R5cGUKICAgIC8qIFRy dWUgaWYgdGhpcyB0eXBlIHdhcyBkZWNsYXJlZCB3aXRoICJjbGFzcyIgcmF0aGVyIHRoYW4KICAg ICAgICJzdHJ1Y3QiLiAgKi8KICAgIHVuc2lnbmVkIGludCBmbGFnX2RlY2xhcmVkX2NsYXNzIDog MTsKQEAgLTQ2MzcsNyArNTExNSw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9n ZGJ0eXBlcy5oCiAgCiAgICAvKiBBIGRpc2NyaW1pbmFudCB0ZWxsaW5nIHVzIHdoaWNoIGZpZWxk IG9mIHRoZSB0eXBlX3NwZWNpZmljIHVuaW9uCiAgICAgICBpcyBiZWluZyB1c2VkIGZvciB0aGlz IHR5cGUsIGlmIGFueS4gICovCi1AQCAtNDczLDYgKzUzMSwyMCBAQCBzdHJ1Y3QgbWFpbl90eXBl CitAQCAtNDc0LDYgKzUzMiwyMCBAQCBzdHJ1Y3QgbWFpbl90eXBlCiAgCiAgICBzdHJ1Y3QgdHlw ZSAqdGFyZ2V0X3R5cGU7CiAgCkBAIC00NjU4LDcgKzUxMzYsNyBAQCBJbmRleDogZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvZ2RidHlwZXMuaAogICAgLyogRm9yIHN0cnVjdHVyZSBhbmQgdW5pb24g dHlwZXMsIGEgZGVzY3JpcHRpb24gb2YgZWFjaCBmaWVsZC4KICAgICAgIEZvciBzZXQgYW5kIHBh c2NhbCBhcnJheSB0eXBlcywgdGhlcmUgaXMgb25lICJmaWVsZCIsCiAgICAgICB3aG9zZSB0eXBl IGlzIHRoZSBkb21haW4gdHlwZSBvZiB0aGUgc2V0IG9yIGFycmF5LgotQEAgLTU0NywxMyArNjE5 LDM0IEBAIHN0cnVjdCBtYWluX3R5cGUKK0BAIC01NTQsMTMgKzYyNiwzNCBAQCBzdHJ1Y3QgbWFp bl90eXBlCiAgCiAgICAgIHN0cnVjdCByYW5nZV9ib3VuZHMKICAgICAgewpAQCAtNDY5OCw3ICs1 MTc2LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2dkYnR5cGVzLmgKICAKICAg ICAgICAvKiBGbGFncyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHZhbHVlcyBvZiBsb3cgYW5kIGhp Z2ggYXJlCiAgICAgICAgICAgdmFsaWQuICBXaGVuIHRydWUsIHRoZSByZXNwZWN0aXZlIHJhbmdl IHZhbHVlIGlzCi1AQCAtOTI5LDkgKzEwMjIsOSBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0 X2F1eF90eXBlIChzdHJ1CitAQCAtMTAxMiw5ICsxMTA1LDkgQEAgZXh0ZXJuIHZvaWQgYWxsb2Nh dGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKik7CiAgI2RlZmluZSBUWVBFX1BPSU5URVJf VFlQRSh0aGlzdHlwZSkgKHRoaXN0eXBlKS0+cG9pbnRlcl90eXBlCiAgI2RlZmluZSBUWVBFX1JF RkVSRU5DRV9UWVBFKHRoaXN0eXBlKSAodGhpc3R5cGUpLT5yZWZlcmVuY2VfdHlwZQogICNkZWZp bmUgVFlQRV9DSEFJTih0aGlzdHlwZSkgKHRoaXN0eXBlKS0+Y2hhaW4KQEAgLTQ3MTEsNyArNTE4 OSw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9nZGJ0eXBlcy5oCiAgICAgY2Fs bHMgY2hlY2tfdHlwZWRlZiwgVFlQRV9MRU5HVEggKFZBTFVFX1RZUEUgKFgpKSBpcyBzYWZlLiAg Ki8KICAjZGVmaW5lIFRZUEVfTEVOR1RIKHRoaXN0eXBlKSAodGhpc3R5cGUpLT5sZW5ndGgKICAv KiBOb3RlIHRoYXQgVFlQRV9DT0RFIGNhbiBiZSBUWVBFX0NPREVfVFlQRURFRiwgc28gaWYgeW91 IHdhbnQgdGhlIHJlYWwKLUBAIC05MzksMTEgKzEwMzIsMTYgQEAgZXh0ZXJuIHZvaWQgYWxsb2Nh dGVfZ25hdF9hdXhfdHlwZSAoc3RydQorQEAgLTEwMjIsMTEgKzExMTUsMTYgQEAgZXh0ZXJuIHZv aWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKik7CiAgI2RlZmluZSBUWVBF X0NPREUodGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+Y29kZQogICNkZWZpbmUg VFlQRV9ORklFTERTKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSh0aGlzdHlwZSktPm5maWVsZHMK ICAjZGVmaW5lIFRZUEVfRklFTERTKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSh0aGlzdHlwZSkt PmZsZHNfYm5kcy5maWVsZHMKQEAgLTQ3MzAsNyArNTIwOCw3IEBAIEluZGV4OiBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi9nZGJ0eXBlcy5oCiAgI2RlZmluZSBUWVBFX0xPV19CT1VORF9VTkRFRklO RUQocmFuZ2VfdHlwZSkgXAogICAgIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+bG93X3Vu ZGVmaW5lZAogICNkZWZpbmUgVFlQRV9ISUdIX0JPVU5EX1VOREVGSU5FRChyYW5nZV90eXBlKSBc Ci1AQCAtOTYwLDcgKzEwNTgsMTQgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlw ZSAoc3RydQorQEAgLTEwNDMsNyArMTE0MSwxNCBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0 X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKICAgICAoVFlQRV9ISUdIX0JPVU5EKFRZUEVfSU5E RVhfVFlQRSgoYXJyYXl0eXBlKSkpKQogIAogICNkZWZpbmUgVFlQRV9BUlJBWV9MT1dFUl9CT1VO RF9WQUxVRShhcnJheXR5cGUpIFwKQEAgLTQ3NDYsNyArNTIyNCw3IEBAIEluZGV4OiBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi9nZGJ0eXBlcy5oCiAgCiAgLyogQysrICovCiAgCi1AQCAtMTM4NSw2 ICsxNDkwLDE4IEBAIGV4dGVybiBzdHJ1Y3QgdHlwZSAqY3JlYXRlX2FycmF5X3R5cGUgKHMKK0BA IC0xNDc5LDYgKzE1ODQsMTggQEAgZXh0ZXJuIHN0cnVjdCB0eXBlICpjcmVhdGVfYXJyYXlfdHlw ZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5cGUgKiwKICAJCQkJICAgICAgIHN0cnVjdCB0eXBl ICopOwogIGV4dGVybiBzdHJ1Y3QgdHlwZSAqbG9va3VwX2FycmF5X3JhbmdlX3R5cGUgKHN0cnVj dCB0eXBlICosIGludCwgaW50KTsKICAKQEAgLTQ3NjUsNyArNTI0Myw3IEBAIEluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi9nZGJ0eXBlcy5oCiAgZXh0ZXJuIHN0cnVjdCB0eXBlICpjcmVh dGVfc3RyaW5nX3R5cGUgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB0eXBlICosCiAgCQkJCQlzdHJ1 Y3QgdHlwZSAqKTsKICBleHRlcm4gc3RydWN0IHR5cGUgKmxvb2t1cF9zdHJpbmdfcmFuZ2VfdHlw ZSAoc3RydWN0IHR5cGUgKiwgaW50LCBpbnQpOwotQEAgLTE0MzAsNiArMTU0NywxMCBAQCBleHRl cm4gaW50IGlzX3B1YmxpY19hbmNlc3RvciAoc3RydWN0IHR5CitAQCAtMTUyNCw2ICsxNjQxLDEw IEBAIGV4dGVybiBpbnQgaXNfcHVibGljX2FuY2VzdG9yIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3Qg dHlwZSAqKTsKICAKICBleHRlcm4gaW50IGlzX3VuaXF1ZV9hbmNlc3RvciAoc3RydWN0IHR5cGUg Kiwgc3RydWN0IHZhbHVlICopOwogIApAQCAtNDc3Niw3ICs1MjU0LDcgQEAgSW5kZXg6IGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL2dkYnR5cGVzLmgKICAvKiBPdmVybG9hZCByZXNvbHV0aW9uICov CiAgCiAgI2RlZmluZSBMRU5HVEhfTUFUQ0goYnYpICgoYnYpLT5yYW5rWzBdKQotQEAgLTE1MDIs MTAgKzE2MjMsMTMgQEAgZXh0ZXJuIHZvaWQgbWFpbnRlbmFuY2VfcHJpbnRfdHlwZSAoY2hhcgor QEAgLTE1OTksMTAgKzE3MjAsMTMgQEAgZXh0ZXJuIHZvaWQgbWFpbnRlbmFuY2VfcHJpbnRfdHlw ZSAoY2hhciAqLCBpbnQpOwogIAogIGV4dGVybiBodGFiX3QgY3JlYXRlX2NvcGllZF90eXBlc19o YXNoIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CiAgCkBAIC00NzkyLDU1OSArNTI3MCwzODQg QEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2dkYnR5cGVzLmgKICsjZW5kaWYKICsK ICAjZW5kaWYgLyogR0RCVFlQRVNfSCAqLwotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L2kzODYtbGludXgtbmF0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9y aWcvZ2RiL2kzODYtbGludXgtbmF0LmMJMjAxMS0wMi0yNyAxNzoyNTozNy4wMDAwMDAwMDAgKzAx MDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9pMzg2LWxpbnV4LW5hdC5jCTIwMTEtMDct MjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCi1AQCAtNjQ5LDIyICs2NDksMTMgQEAgaTM4Nl9s aW51eF9zdG9yZV9pbmZlcmlvcl9yZWdpc3RlcnMgKHN0cgorZGlmZiAtLWdpdCBhL2dkYi9pMzg2 LWxpbnV4LW5hdC5jIGIvZ2RiL2kzODYtbGludXgtbmF0LmMKK2luZGV4IGE0OGU1OGUuLjllNjBm ZjQgMTAwNjQ0CistLS0gYS9nZGIvaTM4Ni1saW51eC1uYXQuYworKysrIGIvZ2RiL2kzODYtbGlu dXgtbmF0LmMKK0BAIC03MDksOCArNzA5LDggQEAgaTM4Nl9saW51eF9kcl9nZXRfc3RhdHVzICh2 b2lkKQorICAgcmV0dXJuIGkzODZfbGludXhfZHJfZ2V0IChpbmZlcmlvcl9wdGlkLCBEUl9TVEFU VVMpOwogIH0KLSAMCiAgCi0tLyogU3VwcG9ydCBmb3IgZGVidWcgcmVnaXN0ZXJzLiAgKi8KLS0K LS1zdGF0aWMgdW5zaWduZWQgbG9uZyBpMzg2X2xpbnV4X2RyW0RSX0NPTlRST0wgKyAxXTsKLS0K LSAvKiBHZXQgZGVidWcgcmVnaXN0ZXIgUkVHTlVNIHZhbHVlIGZyb20gb25seSB0aGUgb25lIExX UCBvZiBQVElELiAgKi8KLSAKLSBzdGF0aWMgdW5zaWduZWQgbG9uZwotLWkzODZfbGludXhfZHJf Z2V0IChwdGlkX3QgcHRpZCwgaW50IHJlZ251bSkKLStpMzg2X2xpbnV4X2RyX2dldCAoaW50IHRp ZCwgaW50IHJlZ251bSkKLSB7Ci0tICBpbnQgdGlkOwotICAgdW5zaWduZWQgbG9uZyB2YWx1ZTsK LSAKLS0gIHRpZCA9IFRJREdFVCAocHRpZCk7Ci0tICBpZiAodGlkID09IDApCi0tICAgIHRpZCA9 IFBJREdFVCAocHRpZCk7Ci0tCi0gICAvKiBGSVhNRToga2V0dGVuaXMvMjAwMS0wMy0yNzogQ2Fs bGluZyBwZXJyb3Jfd2l0aF9uYW1lIGlmIHRoZQotICAgICAgcHRyYWNlIGNhbGwgZmFpbHMgYnJl YWtzIGRlYnVnZ2luZyByZW1vdGUgdGFyZ2V0cy4gIFRoZSBjb3JyZWN0Ci0gICAgICB3YXkgdG8g Zml4IHRoaXMgaXMgdG8gYWRkIHRoZSBoYXJkd2FyZSBicmVha3BvaW50IGFuZCB3YXRjaHBvaW50 Ci1AQCAtNjg2LDE0ICs2NzcsOCBAQCBpMzg2X2xpbnV4X2RyX2dldCAocHRpZF90IHB0aWQsIGlu dCByZWduCi0gLyogU2V0IGRlYnVnIHJlZ2lzdGVyIFJFR05VTSB0byBWQUxVRSBpbiBvbmx5IHRo ZSBvbmUgTFdQIG9mIFBUSUQuICAqLworLS8qIENhbGxiYWNrIGZvciBpdGVyYXRlX292ZXJfbHdw cy4gIFVwZGF0ZSB0aGUgZGVidWcgcmVnaXN0ZXJzIG9mCistICAgTFdQLiAgKi8KKysvKiBDYWxs YmFjayBmb3IgbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzLiAgVXBkYXRlIHRoZSBk ZWJ1ZyByZWdpc3RlcnMKKysgICBvZiBMV1AuICAqLwogIAorIHN0YXRpYyBpbnQKKyB1cGRhdGVf ZGVidWdfcmVnaXN0ZXJzX2NhbGxiYWNrIChzdHJ1Y3QgbHdwX2luZm8gKmx3cCwgdm9pZCAqYXJn KQorQEAgLTczNiw5ICs3MzYsNyBAQCB1cGRhdGVfZGVidWdfcmVnaXN0ZXJzX2NhbGxiYWNrIChz dHJ1Y3QgbHdwX2luZm8gKmx3cCwgdm9pZCAqYXJnKQogIHN0YXRpYyB2b2lkCi0taTM4Nl9saW51 eF9kcl9zZXQgKHB0aWRfdCBwdGlkLCBpbnQgcmVnbnVtLCB1bnNpZ25lZCBsb25nIHZhbHVlKQot K2kzODZfbGludXhfZHJfc2V0IChpbnQgdGlkLCBpbnQgcmVnbnVtLCB1bnNpZ25lZCBsb25nIHZh bHVlKQorIGkzODZfbGludXhfZHJfc2V0X2NvbnRyb2wgKHVuc2lnbmVkIGxvbmcgY29udHJvbCkK ICB7Ci0tICBpbnQgdGlkOwotLQotLSAgdGlkID0gVElER0VUIChwdGlkKTsKLS0gIGlmICh0aWQg PT0gMCkKLS0gICAgdGlkID0gUElER0VUIChwdGlkKTsKKy0gIHB0aWRfdCBwaWRfcHRpZCA9IHBp ZF90b19wdGlkIChwdGlkX2dldF9waWQgKGluZmVyaW9yX3B0aWQpKTsKIC0KLSAgIGVycm5vID0g MDsKLSAgIHB0cmFjZSAoUFRSQUNFX1BPS0VVU0VSLCB0aWQsCi0gCSAgb2Zmc2V0b2YgKHN0cnVj dCB1c2VyLCB1X2RlYnVncmVnW3JlZ251bV0pLCB2YWx1ZSk7Ci1AQCAtNzAxLDM1ICs2ODYsNzgg QEAgaTM4Nl9saW51eF9kcl9zZXQgKHB0aWRfdCBwdGlkLCBpbnQgcmVnbgotICAgICBwZXJyb3Jf d2l0aF9uYW1lIChfKCJDb3VsZG4ndCB3cml0ZSBkZWJ1ZyByZWdpc3RlciIpKTsKKy0gIGl0ZXJh dGVfb3Zlcl9sd3BzIChwaWRfcHRpZCwgdXBkYXRlX2RlYnVnX3JlZ2lzdGVyc19jYWxsYmFjaywg TlVMTCk7CisrICBsaW51eF9uYXRfaXRlcmF0ZV93YXRjaHBvaW50X2x3cHMgKHVwZGF0ZV9kZWJ1 Z19yZWdpc3RlcnNfY2FsbGJhY2ssIE5VTEwpOworIH0KKyAKKyAvKiBTZXQgYWRkcmVzcyBSRUdO VU0gKHplcm8gYmFzZWQpIHRvIEFERFIgaW4gYWxsIExXUHMgb2YgdGhlIGN1cnJlbnQKK0BAIC03 NTEsNyArNzQ5LDcgQEAgaTM4Nl9saW51eF9kcl9zZXRfYWRkciAoaW50IHJlZ251bSwgQ09SRV9B RERSIGFkZHIpCisgCisgICBnZGJfYXNzZXJ0IChyZWdudW0gPj0gMCAmJiByZWdudW0gPD0gRFJf TEFTVEFERFIgLSBEUl9GSVJTVEFERFIpOworIAorLSAgaXRlcmF0ZV9vdmVyX2x3cHMgKHBpZF9w dGlkLCB1cGRhdGVfZGVidWdfcmVnaXN0ZXJzX2NhbGxiYWNrLCBOVUxMKTsKKysgIGxpbnV4X25h dF9pdGVyYXRlX3dhdGNocG9pbnRfbHdwcyAodXBkYXRlX2RlYnVnX3JlZ2lzdGVyc19jYWxsYmFj aywgTlVMTCk7CisgfQorIAorIC8qIENhbGxlZCB3aGVuIHJlc3VtaW5nIGEgdGhyZWFkLgorQEAg LTc3Myw2ICs3NzEsOSBAQCBpMzg2X2xpbnV4X3ByZXBhcmVfdG9fcmVzdW1lIChzdHJ1Y3QgbHdw X2luZm8gKmx3cCkKKyAgICAgICBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRlID0g aTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKCk7CisgICAgICAgaW50IGk7CisgCisrICAgICAgLyogU2Vl IGFtZDY0X2xpbnV4X3ByZXBhcmVfdG9fcmVzdW1lIGZvciBMaW51eCBrZXJuZWwgbm90ZSBvbgor KwkgaTM4Nl9saW51eF9kcl9zZXQgY2FsbHMgb3JkZXJpbmcuICAqLworKworICAgICAgIGZvciAo aSA9IERSX0ZJUlNUQUREUjsgaSA8PSBEUl9MQVNUQUREUjsgaSsrKQorIAlpZiAoc3RhdGUtPmRy X3JlZl9jb3VudFtpXSA+IDApCisgCSAgeworZGlmZiAtLWdpdCBhL2dkYi9pMzg2LWxpbnV4LXRk ZXAuYyBiL2dkYi9pMzg2LWxpbnV4LXRkZXAuYworaW5kZXggN2MzOTYyZS4uMzNmNmRjNiAxMDA2 NDQKKy0tLSBhL2dkYi9pMzg2LWxpbnV4LXRkZXAuYworKysrIGIvZ2RiL2kzODYtbGludXgtdGRl cC5jCitAQCAtOTA0LDYgKzkwNCwxNSBAQCBpMzg2X2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2Ri YXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpMzg2X2xpbnV4X2dldF9zeXNjYWxsX251bWJlcik7CisgCisg ICBzZXRfZ2RiYXJjaF9nZXRfc2lnaW5mb190eXBlIChnZGJhcmNoLCBsaW51eF9nZXRfc2lnaW5m b190eXBlKTsKKysKKysgIC8qIFN5c3RlbVRhcCB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucy4gICov CisrICBzZXRfZ2RiYXJjaF9zdGFwX2ludGVnZXJfcHJlZml4IChnZGJhcmNoLCAiJCIpOworKyAg c2V0X2dkYmFyY2hfc3RhcF9yZWdpc3Rlcl9wcmVmaXggKGdkYmFyY2gsICIlIik7CisrICBzZXRf Z2RiYXJjaF9zdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3ByZWZpeCAoZ2RiYXJjaCwgIigiKTsK KysgIHNldF9nZGJhcmNoX3N0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fc3VmaXggKGdkYmFyY2gs ICIpIik7CisrICBzZXRfZ2RiYXJjaF9zdGFwX2lzX3NpbmdsZV9vcGVyYW5kIChnZGJhcmNoLCBp Mzg2X3N0YXBfaXNfc2luZ2xlX29wZXJhbmQpOworKyAgc2V0X2dkYmFyY2hfc3RhcF9wYXJzZV9z cGVjaWFsX3Rva2VuIChnZGJhcmNoLAorKwkJCQkJaTM4Nl9zdGFwX3BhcnNlX3NwZWNpYWxfdG9r ZW4pOworIH0KKyAKKyAvKiBQcm92aWRlIGEgcHJvdG90eXBlIHRvIHNpbGVuY2UgLVdtaXNzaW5n LXByb3RvdHlwZXMuICAqLworZGlmZiAtLWdpdCBhL2dkYi9pMzg2LW5hdC5jIGIvZ2RiL2kzODYt bmF0LmMKK2luZGV4IDU5MzQwMWIuLmJiMzFkOWUgMTAwNjQ0CistLS0gYS9nZGIvaTM4Ni1uYXQu YworKysrIGIvZ2RiL2kzODYtbmF0LmMKK0BAIC0yNSw2ICsyNSw3IEBACisgI2luY2x1ZGUgImdk YmNtZC5oIgorICNpbmNsdWRlICJ0YXJnZXQuaCIKKyAjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgor KyNpbmNsdWRlICJpbmZlcmlvci5oIgorIAorIC8qIFN1cHBvcnQgZm9yIGhhcmR3YXJlIHdhdGNo cG9pbnRzIGFuZCBicmVha3BvaW50cyB1c2luZyB0aGUgaTM4NgorICAgIGRlYnVnIHJlZ2lzdGVy cy4KK0BAIC0xNzAsMTQgKzE3MSw4OCBAQCBpMzg2X2luaXRfZHJlZ3MgKHN0cnVjdCBpMzg2X2Rl YnVnX3JlZ19zdGF0ZSAqc3RhdGUpCisgICBzdGF0ZS0+ZHJfc3RhdHVzX21pcnJvciAgPSAwOwog IH0KICAKLS0vKiBTZXQgRFJfQ09OVFJPTCB0byBBRERSIGluIGFsbCBMV1BzIG9mIExXUF9MSVNU LiAgKi8KLSsvKiBIZWxwZXIgZm9yIGkzODZfbGludXhfZHJfc2V0X2NvbnRyb2wuICAqLworLS8q IFRoZSBsb2NhbCBtaXJyb3Igb2YgdGhlIGluZmVyaW9yJ3MgZGVidWcgcmVnaXN0ZXJzLiAgQ3Vy cmVudGx5IHRoaXMKKy0gICBpcyBhIGdsb2JhbCwgYnV0IGl0IHNob3VsZCByZWFsbHkgYmUgcGVy LWluZmVyaW9yLiAgKi8KKy1zdGF0aWMgc3RydWN0IGkzODZfZGVidWdfcmVnX3N0YXRlIGRyX21p cnJvcjsKKysvKiBQZXItaW5mZXJpb3IgZGF0YSBrZXkuICAqLworK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgaW5mZXJpb3JfZGF0YSAqaTM4Nl9pbmZlcmlvcl9kYXRhOworKworKy8qIFBlci1pbmZlcmlv ciBkYXRhLiAgKi8KKytzdHJ1Y3QgaTM4Nl9pbmZlcmlvcl9kYXRhCisrICB7CisrICAgIC8qIENv cHkgb2YgaTM4NiBoYXJkd2FyZSBkZWJ1ZyByZWdpc3RlcnMgZm9yIHBlcmZvcm1hbmNlIHJlYXNv bnMuICAqLworKyAgICBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgc3RhdGU7CisrICB9Owor KworKy8qIFBlci1pbmZlcmlvciBob29rIGZvciByZWdpc3Rlcl9pbmZlcmlvcl9kYXRhX3dpdGhf Y2xlYW51cC4gICovCiArCiArc3RhdGljIHZvaWQKLStpMzg2X2xpbnV4X2RyX3NldF9jb250cm9s X2NhbGxiYWNrIChpbnQgdGlkLCB2b2lkICpjb250cm9sX3ZvaWRwKQorK2kzODZfaW5mZXJpb3Jf ZGF0YV9jbGVhbnVwIChzdHJ1Y3QgaW5mZXJpb3IgKmluZiwgdm9pZCAqYXJnKQogK3sKLSsgIHVu c2lnbmVkIGxvbmcgY29udHJvbCA9ICoodW5zaWduZWQgbG9uZyAqKSBjb250cm9sX3ZvaWRwOwor KyAgc3RydWN0IGkzODZfaW5mZXJpb3JfZGF0YSAqaW5mX2RhdGEgPSBhcmc7CiArCi0rICBpMzg2 X2xpbnV4X2RyX3NldCAodGlkLCBEUl9DT05UUk9MLCBjb250cm9sKTsKKysgIHhmcmVlIChpbmZf ZGF0YSk7CiArfQogKwotK3N0YXRpYyB2b2lkIGkzODZfbGludXhfZHJfc2V0X2FkZHIgKGludCBy ZWdudW0sIENPUkVfQUREUiBhZGRyKTsKKysvKiBHZXQgZGF0YSBzcGVjaWZpYyBmb3IgSU5GRVJJ T1JfUFRJRCBMV1AuICBSZXR1cm4gc3BlY2lhbCBkYXRhIGFyZWEKKysgICBmb3IgcHJvY2Vzc2Vz IGJlaW5nIGRldGFjaGVkLiAgKi8KICsKLSsvKiBTZXQgRFJfQ09OVFJPTCB0byBBRERSIGluIGFs bCBMV1BzIG9mIENVUlJFTlRfSU5GRVJJT1IuICAqLwotIAotIHN0YXRpYyB2b2lkCi0gaTM4Nl9s aW51eF9kcl9zZXRfY29udHJvbCAodW5zaWduZWQgbG9uZyBjb250cm9sKQotIHsKLS0gIHN0cnVj dCBsd3BfaW5mbyAqbHA7Ci0tICBwdGlkX3QgcHRpZDsKLSsgIGludCBpbmZlcmlvcl9waWQgPSBw dGlkX2dldF9waWQgKGluZmVyaW9yX3B0aWQpOworK3N0YXRpYyBzdHJ1Y3QgaTM4Nl9pbmZlcmlv cl9kYXRhICoKKytpMzg2X2luZmVyaW9yX2RhdGFfZ2V0ICh2b2lkKQorK3sKICsgIHN0cnVjdCBp bmZlcmlvciAqaW5mID0gY3VycmVudF9pbmZlcmlvciAoKTsKLSAKLS0gIGkzODZfbGludXhfZHJb RFJfQ09OVFJPTF0gPSBjb250cm9sOwotLSAgQUxMX0xXUFMgKGxwLCBwdGlkKQotLSAgICBpMzg2 X2xpbnV4X2RyX3NldCAocHRpZCwgRFJfQ09OVFJPTCwgY29udHJvbCk7Ci0rICAvKiBUaGUgYW1k NjQgY291bnRlcnBhcnQgYW5kIGRlc2NyaXB0aW9uIGlzIGFtZDY0X2xpbnV4X2RyX3NldF9jb250 cm9sLiAgKi8KLSsgIGlmIChpbmYtPnBpZCAhPSBpbmZlcmlvcl9waWQpCisrICBzdHJ1Y3QgaTM4 Nl9pbmZlcmlvcl9kYXRhICppbmZfZGF0YTsKKysKKysgIGluZl9kYXRhID0gaW5mZXJpb3JfZGF0 YSAoaW5mLCBpMzg2X2luZmVyaW9yX2RhdGEpOworKyAgaWYgKGluZl9kYXRhID09IE5VTEwpCiAr ICAgIHsKLSsgICAgICBzdHJ1Y3QgaTM4Nl9kcl9taXJyb3IgKmRyX21pcnJvciA9IGkzODZfZHJf bWlycm9yX2dldCAoKTsKLSsgICAgICBpbnQgaTsKKysgICAgICBpbmZfZGF0YSA9IHh6YWxsb2Mg KHNpemVvZiAoKmluZl9kYXRhKSk7CisrICAgICAgc2V0X2luZmVyaW9yX2RhdGEgKGN1cnJlbnRf aW5mZXJpb3IgKCksIGkzODZfaW5mZXJpb3JfZGF0YSwgaW5mX2RhdGEpOworKyAgICB9CisrCisr ICBpZiAoaW5mLT5waWQgIT0gcHRpZF9nZXRfcGlkIChpbmZlcmlvcl9wdGlkKSkKKysgICAgewor KyAgICAgIC8qIElORkVSSU9SX1BUSUQgaXMgYmVpbmcgZGV0YWNoZWQgZnJvbSB0aGUgaW5mZXJp b3IgSU5GLgorKwkgUHJvdmlkZSBsb2NhbCBjYWNoZSBzcGVjaWZpYyBmb3IgdGhlIGRldGFjaGVk IExXUC4gICovCisrCisrICAgICAgc3RhdGljIHN0cnVjdCBpMzg2X2luZmVyaW9yX2RhdGEgZGV0 YWNoZWRfaW5mX2RhdGFfbG9jYWw7CisrICAgICAgc3RhdGljIGludCBkZXRhY2hlZF9pbmZfcGlk ID0gLTE7CiArCi0rICAgICAgaWYgKCFkcl9taXJyb3ItPmFkZHJfcHJlc2V0KQorKyAgICAgIGlm IChkZXRhY2hlZF9pbmZfcGlkICE9IHB0aWRfZ2V0X3BpZCAoaW5mZXJpb3JfcHRpZCkpCiArCXsK LSsJICBkcl9taXJyb3ItPmFkZHJfcHJlc2V0ID0gMTsKKysJICAvKiBSZWluaXRpYWxpemUgdGhl IGxvY2FsIGNhY2hlIGlmIElORkVSSU9SX1BUSUQgaXMKKysJICAgICBkaWZmZXJlbnQgZnJvbSB0 aGUgTFdQIGxhc3QgZGV0YWNoZWQuCisrIAorKwkgICAgIExpbnV4IGtlcm5lbCBiZWZvcmUgMi42 LjMzIGNvbW1pdAorKwkgICAgIDcyZjY3NGQyMDNjZDIzMDQyNjQzN2NkY2Y3ZGQ2ZjY4MWRhZDhi MGQKKysJICAgICB3aWxsIGluaGVyaXQgaGFyZHdhcmUgZGVidWcgcmVnaXN0ZXJzIGZyb20gcGFy ZW50CisrCSAgICAgb24gZm9yay92Zm9yay9jbG9uZS4gIE5ld2VyIExpbnV4IGtlcm5lbHMgY3Jl YXRlIHN1Y2ggdGFza3Mgd2l0aAorKwkgICAgIHplcm9lZCBkZWJ1ZyByZWdpc3RlcnMuCiArCi0r CSAgZm9yIChpID0gMDsgaSA8IERSX0xBU1RBRERSIC0gRFJfRklSU1RBRERSOyBpKyspCi0rCSAg ICBpMzg2X2xpbnV4X2RyX3NldF9hZGRyIChpLCBkcl9taXJyb3ItPmFkZHJbaV0pOwotKwl9Ci0r ICAgIH0KKysJICAgICBHREIgd2lsbCByZW1vdmUgYWxsIGJyZWFrcG9pbnRzIChhbmQgd2F0Y2hw b2ludHMpIGZyb20gdGhlIGZvcmtlZAorKwkgICAgIG9mZiBwcm9jZXNzLiAgV2UgYWxzbyBuZWVk IHRvIHJlc2V0IHRoZSBkZWJ1ZyByZWdpc3RlcnMgaW4gdGhhdAorKwkgICAgIHByb2Nlc3MgdG8g YmUgY29tcGF0aWJsZSB3aXRoIHRoZSBvbGRlciBMaW51eCBrZXJuZWxzLgogKwotKyAgbGludXhf bmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzIChpMzg2X2xpbnV4X2RyX3NldF9jb250cm9sX2Nh bGxiYWNrLAotKwkJCQkgICAgICZjb250cm9sKTsKLSB9Ci0gCi0tLyogU2V0IGFkZHJlc3MgUkVH TlVNICh6ZXJvIGJhc2VkKSB0byBBRERSIGluIGFsbCBMV1BzIG9mIExXUF9MSVNULiAgKi8KLSsv KiBIZWxwZXIgZm9yIGkzODZfbGludXhfZHJfc2V0X2FkZHIuICAqLworKwkgICAgIENvcHkgdGhl IGRlYnVnIHJlZ2lzdGVycyBtaXJyb3JzIGludG8gdGhlIG5ldyBwcm9jZXNzIHNvIHRoYXQgYWxs CisrCSAgICAgYnJlYWtwb2ludHMgYW5kIHdhdGNocG9pbnRzIGNhbiBiZSByZW1vdmVkIHRvZ2V0 aGVyLiAgVGhlIGRlYnVnCisrCSAgICAgcmVnaXN0ZXJzIG1pcnJvciB3aWxsIGJlY29tZSB6ZXJv ZWQgaW4gdGhlIGVuZCBiZWZvcmUgZGV0YWNoaW5nCisrCSAgICAgdGhlIGZvcmtlZCBvZmYgcHJv Y2Vzcy4gICovCiArCi0rc3RydWN0IGkzODZfbGludXhfZHJfc2V0X2FkZHJfZGF0YQotKyAgewot KyAgICBpbnQgcmVnbnVtOwotKyAgICBDT1JFX0FERFIgYWRkcjsKLSsgIH07CisrCSAgZGV0YWNo ZWRfaW5mX3BpZCA9IHB0aWRfZ2V0X3BpZCAoaW5mZXJpb3JfcHRpZCk7CisrCSAgbWVtY3B5ICgm ZGV0YWNoZWRfaW5mX2RhdGFfbG9jYWwsIGluZl9kYXRhLAorKwkJICBzaXplb2YgKGRldGFjaGVk X2luZl9kYXRhX2xvY2FsKSk7CisrCX0KICsKLStzdGF0aWMgdm9pZAotK2kzODZfbGludXhfZHJf c2V0X2FkZHJfY2FsbGJhY2sgKGludCB0aWQsIHZvaWQgKmRhdGFwX3ZvaWRwKQotK3sKLSsgIGNv bnN0IHN0cnVjdCBpMzg2X2xpbnV4X2RyX3NldF9hZGRyX2RhdGEgKmRhdGFwID0gZGF0YXBfdm9p ZHA7CisrICAgICAgcmV0dXJuICZkZXRhY2hlZF9pbmZfZGF0YV9sb2NhbDsKKysgICAgfQogKwot KyAgaTM4Nl9saW51eF9kcl9zZXQgKHRpZCwgRFJfRklSU1RBRERSICsgZGF0YXAtPnJlZ251bSwg ZGF0YXAtPmFkZHIpOworKyAgcmV0dXJuIGluZl9kYXRhOwogK30KICsKLSsvKiBTZXQgYWRkcmVz cyBSRUdOVU0gKHplcm8gYmFzZWQpIHRvIEFERFIgaW4gYWxsIExXUHMgb2YgQ1VSUkVOVF9JTkZF UklPUi4KLSsgICAqLworKy8qIEdldCBkZWJ1ZyByZWdpc3RlcnMgc3RhdGUgZm9yIElORkVSSU9S X1BUSUQsIHNlZQorKyAgIGkzODZfaW5mZXJpb3JfZGF0YV9nZXQuICAqLwogIAotIHN0YXRpYyB2 b2lkCi0gaTM4Nl9saW51eF9kcl9zZXRfYWRkciAoaW50IHJlZ251bSwgQ09SRV9BRERSIGFkZHIp Cisgc3RydWN0IGkzODZfZGVidWdfcmVnX3N0YXRlICoKKyBpMzg2X2RlYnVnX3JlZ19zdGF0ZSAo dm9pZCkKICB7Ci0tICBzdHJ1Y3QgbHdwX2luZm8gKmxwOwotLSAgcHRpZF90IHB0aWQ7Ci0rICBz dHJ1Y3QgaTM4Nl9saW51eF9kcl9zZXRfYWRkcl9kYXRhIGRhdGE7CistICByZXR1cm4gJmRyX21p cnJvcjsKKysgIHJldHVybiAmaTM4Nl9pbmZlcmlvcl9kYXRhX2dldCAoKS0+c3RhdGU7CisgfQog IAotICAgZ2RiX2Fzc2VydCAocmVnbnVtID49IDAgJiYgcmVnbnVtIDw9IERSX0xBU1RBRERSIC0g RFJfRklSU1RBRERSKTsKLSAKLS0gIGkzODZfbGludXhfZHJbRFJfRklSU1RBRERSICsgcmVnbnVt XSA9IGFkZHI7Ci0tICBBTExfTFdQUyAobHAsIHB0aWQpCi0tICAgIGkzODZfbGludXhfZHJfc2V0 IChwdGlkLCBEUl9GSVJTVEFERFIgKyByZWdudW0sIGFkZHIpOwotKyAgZGF0YS5yZWdudW0gPSBy ZWdudW07Ci0rICBkYXRhLmFkZHIgPSBhZGRyOwotKyAgbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hw b2ludF9sd3BzIChpMzg2X2xpbnV4X2RyX3NldF9hZGRyX2NhbGxiYWNrLCAmZGF0YSk7Ci0gfQot IAotLS8qIFNldCBhZGRyZXNzIFJFR05VTSAoemVybyBiYXNlZCkgdG8gemVybyBpbiBhbGwgTFdQ cyBvZiBMV1BfTElTVC4gICovCi0rLyogU2V0IGFkZHJlc3MgUkVHTlVNICh6ZXJvIGJhc2VkKSB0 byB6ZXJvIGluIGFsbCBMV1BzIG9mIENVUlJFTlRfSU5GRVJJT1IuCi0rICAgKi8KLSAKLSBzdGF0 aWMgdm9pZAotIGkzODZfbGludXhfZHJfcmVzZXRfYWRkciAoaW50IHJlZ251bSkKLUBAIC03NDIs MzYgKzc3MCw1NCBAQCBpMzg2X2xpbnV4X2RyX3Jlc2V0X2FkZHIgKGludCByZWdudW0pCi0gc3Rh dGljIHVuc2lnbmVkIGxvbmcKLSBpMzg2X2xpbnV4X2RyX2dldF9zdGF0dXMgKHZvaWQpCi0gewot LSAgcmV0dXJuIGkzODZfbGludXhfZHJfZ2V0IChpbmZlcmlvcl9wdGlkLCBEUl9TVEFUVVMpOwot KyAgaW50IHRpZDsKLSsKLSsgIHRpZCA9IFRJREdFVCAoaW5mZXJpb3JfcHRpZCk7Ci0rICBpZiAo dGlkID09IDApCi0rICAgIHRpZCA9IFBJREdFVCAoaW5mZXJpb3JfcHRpZCk7Ci0rCi0rICByZXR1 cm4gaTM4Nl9saW51eF9kcl9nZXQgKHRpZCwgRFJfU1RBVFVTKTsKLSB9Ci0gCi0tLyogVW5zZXQg TUFTSyBiaXRzIGluIERSX1NUQVRVUyBpbiBhbGwgTFdQcyBvZiBMV1BfTElTVC4gICovCi0rLyog SGVscGVyIGZvciBpMzg2X2xpbnV4X2RyX3Vuc2V0X3N0YXR1cy4gICovCi0gCi0gc3RhdGljIHZv aWQKLS1pMzg2X2xpbnV4X2RyX3Vuc2V0X3N0YXR1cyAodW5zaWduZWQgbG9uZyBtYXNrKQotK2kz ODZfbGludXhfZHJfdW5zZXRfc3RhdHVzX2NhbGxiYWNrIChpbnQgdGlkLCB2b2lkICptYXNrX3Zv aWRwKQorIC8qIFdoZXRoZXIgb3Igbm90IHRvIHByaW50IHRoZSBtaXJyb3JlZCBkZWJ1ZyByZWdp c3RlcnMuICAqLworQEAgLTIzMCw3ICszMDUsOSBAQCBzdGF0aWMgaW50IGkzODZfaGFuZGxlX25v bmFsaWduZWRfd2F0Y2hwb2ludCAoc3RydWN0IGkzODZfZGVidWdfcmVnX3N0YXRlICpzdGF0ZQor IHZvaWQKKyBpMzg2X2NsZWFudXBfZHJlZ3MgKHZvaWQpCiAgewotLSAgc3RydWN0IGx3cF9pbmZv ICpscDsKLS0gIHB0aWRfdCBwdGlkOwotLQotLSAgQUxMX0xXUFMgKGxwLCBwdGlkKQotLSAgICB7 Ci0tICAgICAgdW5zaWduZWQgbG9uZyB2YWx1ZTsKLSsgIHVuc2lnbmVkIGxvbmcgbWFzayA9ICoo dW5zaWduZWQgbG9uZyAqKSBtYXNrX3ZvaWRwOwotKyAgdW5zaWduZWQgbG9uZyB2YWx1ZTsKLSAg ICAgICAKLS0gICAgICB2YWx1ZSA9IGkzODZfbGludXhfZHJfZ2V0IChwdGlkLCBEUl9TVEFUVVMp OwotLSAgICAgIHZhbHVlICY9IH5tYXNrOwotLSAgICAgIGkzODZfbGludXhfZHJfc2V0IChwdGlk LCBEUl9TVEFUVVMsIHZhbHVlKTsKLS0gICAgfQotKyAgdmFsdWUgPSBpMzg2X2xpbnV4X2RyX2dl dCAodGlkLCBEUl9TVEFUVVMpOwotKyAgdmFsdWUgJj0gfm1hc2s7Ci0rICBpMzg2X2xpbnV4X2Ry X3NldCAodGlkLCBEUl9TVEFUVVMsIHZhbHVlKTsKLSt9CistICBpMzg2X2luaXRfZHJlZ3MgKCZk cl9taXJyb3IpOworKyAgc3RydWN0IGkzODZfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSA9IGkzODZf ZGVidWdfcmVnX3N0YXRlICgpOwogKwotKy8qIFVuc2V0IE1BU0sgYml0cyBpbiBEUl9TVEFUVVMg aW4gYWxsIExXUHMgb2YgQ1VSUkVOVF9JTkZFUklPUi4gICovCi0rCi0rc3RhdGljIHZvaWQKLStp Mzg2X2xpbnV4X2RyX3Vuc2V0X3N0YXR1cyAodW5zaWduZWQgbG9uZyBtYXNrKQotK3sKLSsgIGxp bnV4X25hdF9pdGVyYXRlX3dhdGNocG9pbnRfbHdwcyAoaTM4Nl9saW51eF9kcl91bnNldF9zdGF0 dXNfY2FsbGJhY2ssCi0rCQkJCSAgICAgJm1hc2spOworKyAgaTM4Nl9pbml0X2RyZWdzIChzdGF0 ZSk7CiAgfQogIAorIC8qIFByaW50IHRoZSB2YWx1ZXMgb2YgdGhlIG1pcnJvcmVkIGRlYnVnIHJl Z2lzdGVycy4gIFRoaXMgaXMgY2FsbGVkCitAQCAtNDk0LDIwICs1NzEsMjEgQEAgSW52YWxpZCB2 YWx1ZSAlZCBvZiBvcGVyYXRpb24gaW4gaTM4Nl9oYW5kbGVfbm9uYWxpZ25lZF93YXRjaHBvaW50 LlxuIiksCiAgc3RhdGljIHZvaWQKLSBpMzg2X2xpbnV4X25ld190aHJlYWQgKHB0aWRfdCBwdGlk KQotIHsKLS0gIGludCBpOwotKyAgc3RydWN0IGkzODZfZHJfbWlycm9yICpkcl9taXJyb3IgPSBp Mzg2X2RyX21pcnJvcl9nZXQgKCk7Ci0rICBpbnQgaSwgdGlkOwotKwotKyAgLyogVmVyaWZ5IERS X01JUlJPUiBpcyB2YWxpZC4gICovCi0rICBnZGJfYXNzZXJ0IChQSURHRVQgKHB0aWQpID09IFBJ REdFVCAoaW5mZXJpb3JfcHRpZCkpOwotKwotKyAgdGlkID0gVElER0VUIChwdGlkKTsKLSsgIGlm ICh0aWQgPT0gMCkKLSsgICAgdGlkID0gUElER0VUIChwdGlkKTsKLSAKLS0gIGZvciAoaSA9IERS X0ZJUlNUQUREUjsgaSA8PSBEUl9MQVNUQUREUjsgaSsrKQotLSAgICBpMzg2X2xpbnV4X2RyX3Nl dCAocHRpZCwgaSwgaTM4Nl9saW51eF9kcltpXSk7Ci0rICBmb3IgKGkgPSAwOyBpIDwgRFJfTEFT VEFERFIgLSBEUl9GSVJTVEFERFI7IGkrKykKLSsgICAgaTM4Nl9saW51eF9kcl9zZXQgKHRpZCwg RFJfRklSU1RBRERSICsgaSwgZHJfbWlycm9yLT5hZGRyW2ldKTsKLSAKLS0gIGkzODZfbGludXhf ZHJfc2V0IChwdGlkLCBEUl9DT05UUk9MLCBpMzg2X2xpbnV4X2RyW0RSX0NPTlRST0xdKTsKLSsg IGkzODZfbGludXhfZHJfc2V0ICh0aWQsIERSX0NPTlRST0wsIGRyX21pcnJvci0+Y29udHJvbCk7 Ci0gfQotIAwKLSAKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9pMzg2LW5hdC5jCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9pMzg2LW5hdC5jCTIw MTEtMDItMjYgMjM6MDQ6NTEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvaTM4Ni1uYXQuYwkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAotQEAg LTI1LDYgKzI1LDcgQEAKLSAjaW5jbHVkZSAiZ2RiY21kLmgiCi0gI2luY2x1ZGUgInRhcmdldC5o IgotICNpbmNsdWRlICJnZGJfYXNzZXJ0LmgiCi0rI2luY2x1ZGUgImluZmVyaW9yLmgiCi0gCi0g LyogU3VwcG9ydCBmb3IgaGFyZHdhcmUgd2F0Y2hwb2ludHMgYW5kIGJyZWFrcG9pbnRzIHVzaW5n IHRoZSBpMzg2Ci0gICAgZGVidWcgcmVnaXN0ZXJzLgotQEAgLTQ0LDcgKzQ1LDYgQEAgc3RydWN0 IGkzODZfZHJfbG93X3R5cGUgaTM4Nl9kcl9sb3c7Ci0gI2RlZmluZSBUQVJHRVRfSEFTX0RSX0xF Tl84IChpMzg2X2RyX2xvdy5kZWJ1Z19yZWdpc3Rlcl9sZW5ndGggPT0gOCkKLSAKLSAvKiBEZWJ1 ZyByZWdpc3RlcnMnIGluZGljZXMuICAqLwotLSNkZWZpbmUgRFJfTkFERFIJNAkvKiBUaGUgbnVt YmVyIG9mIGRlYnVnIGFkZHJlc3MgcmVnaXN0ZXJzLiAgKi8KLSAjZGVmaW5lIERSX1NUQVRVUwk2 CS8qIEluZGV4IG9mIGRlYnVnIHN0YXR1cyByZWdpc3RlciAoRFI2KS4gICovCi0gI2RlZmluZSBE Ul9DT05UUk9MCTcJLyogSW5kZXggb2YgZGVidWcgY29udHJvbCByZWdpc3RlciAoRFI3KS4gICov Ci0gCi1AQCAtMTExLDQ5ICsxMTEsNjAgQEAgc3RydWN0IGkzODZfZHJfbG93X3R5cGUgaTM4Nl9k cl9sb3c7Ci0gCi0gLyogVGhlIEkndGggZGVidWcgcmVnaXN0ZXIgaXMgdmFjYW50IGlmIGl0cyBM b2NhbCBhbmQgR2xvYmFsIEVuYWJsZQotICAgIGJpdHMgYXJlIHJlc2V0IGluIHRoZSBEZWJ1ZyBD b250cm9sIHJlZ2lzdGVyLiAgKi8KLS0jZGVmaW5lIEkzODZfRFJfVkFDQU5UKGkpIFwKLS0gICgo ZHJfY29udHJvbF9taXJyb3IgJiAoMyA8PCAoRFJfRU5BQkxFX1NJWkUgKiAoaSkpKSkgPT0gMCkK LSsKLStzdGF0aWMgaW5saW5lIGludAotK2kzODZfZHJfdmFjYW50IChzdHJ1Y3QgaTM4Nl9kcl9t aXJyb3IgKmRyX21pcnJvciwgaW50IGkpCi0rewotKyAgcmV0dXJuIChkcl9taXJyb3ItPmNvbnRy b2wgJiAoMyA8PCAoRFJfRU5BQkxFX1NJWkUgKiBpKSkpID09IDA7Ci0rfQotIAotIC8qIExvY2Fs bHkgZW5hYmxlIHRoZSBicmVhay93YXRjaHBvaW50IGluIHRoZSBJJ3RoIGRlYnVnIHJlZ2lzdGVy LiAgKi8KLS0jZGVmaW5lIEkzODZfRFJfTE9DQUxfRU5BQkxFKGkpIFwKLS0gIGRyX2NvbnRyb2xf bWlycm9yIHw9ICgxIDw8IChEUl9MT0NBTF9FTkFCTEVfU0hJRlQgKyBEUl9FTkFCTEVfU0laRSAq IChpKSkpCi0gCi0tLyogR2xvYmFsbHkgZW5hYmxlIHRoZSBicmVhay93YXRjaHBvaW50IGluIHRo ZSBJJ3RoIGRlYnVnIHJlZ2lzdGVyLiAgKi8KLS0jZGVmaW5lIEkzODZfRFJfR0xPQkFMX0VOQUJM RShpKSBcCi0tICBkcl9jb250cm9sX21pcnJvciB8PSAoMSA8PCAoRFJfR0xPQkFMX0VOQUJMRV9T SElGVCArIERSX0VOQUJMRV9TSVpFICogKGkpKSkKLStzdGF0aWMgaW5saW5lIHZvaWQKLStpMzg2 X2RyX2xvY2FsX2VuYWJsZSAoc3RydWN0IGkzODZfZHJfbWlycm9yICpkcl9taXJyb3IsIGludCBp KQotK3sKLSsgIGRyX21pcnJvci0+Y29udHJvbCB8PSAxIDw8IChEUl9MT0NBTF9FTkFCTEVfU0hJ RlQgKyBEUl9FTkFCTEVfU0laRSAqIGkpOwotK30KLSAKLSAvKiBEaXNhYmxlIHRoZSBicmVhay93 YXRjaHBvaW50IGluIHRoZSBJJ3RoIGRlYnVnIHJlZ2lzdGVyLiAgKi8KLS0jZGVmaW5lIEkzODZf RFJfRElTQUJMRShpKSBcCi0tICBkcl9jb250cm9sX21pcnJvciAmPSB+KDMgPDwgKERSX0VOQUJM RV9TSVpFICogKGkpKSkKLSsKLStzdGF0aWMgaW5saW5lIHZvaWQKLStpMzg2X2RyX2Rpc2FibGUg KHN0cnVjdCBpMzg2X2RyX21pcnJvciAqZHJfbWlycm9yLCBpbnQgaSkKLSt7Ci0rICBkcl9taXJy b3ItPmNvbnRyb2wgJj0gfigzIDw8IChEUl9FTkFCTEVfU0laRSAqIGkpKTsKLSt9Ci0gCi0gLyog U2V0IGluIERSNyB0aGUgUlcgYW5kIExFTiBmaWVsZHMgZm9yIHRoZSBJJ3RoIGRlYnVnIHJlZ2lz dGVyLiAgKi8KLS0jZGVmaW5lIEkzODZfRFJfU0VUX1JXX0xFTihpLHJ3bGVuKSBcCi0tICBkbyB7 IFwKLS0gICAgZHJfY29udHJvbF9taXJyb3IgJj0gfigweDBmIDw8IChEUl9DT05UUk9MX1NISUZU K0RSX0NPTlRST0xfU0laRSooaSkpKTsgICBcCi0tICAgIGRyX2NvbnRyb2xfbWlycm9yIHw9ICgo cndsZW4pIDw8IChEUl9DT05UUk9MX1NISUZUK0RSX0NPTlRST0xfU0laRSooaSkpKTsgXAotLSAg fSB3aGlsZSAoMCkKLSsKLStzdGF0aWMgaW5saW5lIHZvaWQKLStpMzg2X2RyX3NldF9yd19sZW4g KHN0cnVjdCBpMzg2X2RyX21pcnJvciAqZHJfbWlycm9yLCBpbnQgaSwgdW5zaWduZWQgcndsZW4p Ci0rewotKyAgZHJfbWlycm9yLT5jb250cm9sICY9IH4oMHgwZiA8PCAoRFJfQ09OVFJPTF9TSElG VCArIERSX0NPTlRST0xfU0laRSAqIGkpKTsKLSsgIGRyX21pcnJvci0+Y29udHJvbCB8PSByd2xl biA8PCAoRFJfQ09OVFJPTF9TSElGVCArIERSX0NPTlRST0xfU0laRSAqIGkpOwotK30KLSAKLSAv KiBHZXQgZnJvbSBEUjcgdGhlIFJXIGFuZCBMRU4gZmllbGRzIGZvciB0aGUgSSd0aCBkZWJ1ZyBy ZWdpc3Rlci4gICovCi0tI2RlZmluZSBJMzg2X0RSX0dFVF9SV19MRU4oaSkgXAotLSAgKChkcl9j b250cm9sX21pcnJvciA+PiAoRFJfQ09OVFJPTF9TSElGVCArIERSX0NPTlRST0xfU0laRSAqIChp KSkpICYgMHgwZikKLSsKLStzdGF0aWMgaW5saW5lIHVuc2lnbmVkCi0raTM4Nl9kcl9nZXRfcndf bGVuIChzdHJ1Y3QgaTM4Nl9kcl9taXJyb3IgKmRyX21pcnJvciwgaW50IGkpCi0rewotKyAgcmV0 dXJuICgoZHJfbWlycm9yLT5jb250cm9sID4+IChEUl9DT05UUk9MX1NISUZUICsgRFJfQ09OVFJP TF9TSVpFICogaSkpCi0rCSAgJiAweDBmKTsKLSt9Ci0gCi0gLyogTWFzayB0aGF0IHRoaXMgSSd0 aCB3YXRjaHBvaW50IGhhcyB0cmlnZ2VyZWQuICAqLwotICNkZWZpbmUgSTM4Nl9EUl9XQVRDSF9N QVNLKGkpCSgxIDw8IChpKSkKLSAKLSAvKiBEaWQgdGhlIHdhdGNocG9pbnQgd2hvc2UgYWRkcmVz cyBpcyBpbiB0aGUgSSd0aCByZWdpc3RlciBicmVhaz8gICovCi0tI2RlZmluZSBJMzg2X0RSX1dB VENIX0hJVChpKQkoZHJfc3RhdHVzX21pcnJvciAmIEkzODZfRFJfV0FUQ0hfTUFTSyAoaSkpCi0r c3RhdGljIGlubGluZSBpbnQKLStpMzg2X2RyX3dhdGNoX2hpdCAoc3RydWN0IGkzODZfZHJfbWly cm9yICpkcl9taXJyb3IsIGludCBpKQotK3sKLSsgIHJldHVybiAoZHJfbWlycm9yLT5zdGF0dXMg JiBJMzg2X0RSX1dBVENIX01BU0sgKGkpKSAhPSAwOwotK30KLSAKLSAvKiBBIG1hY3JvIHRvIGxv b3Agb3ZlciBhbGwgZGVidWcgcmVnaXN0ZXJzLiAgKi8KLSAjZGVmaW5lIEFMTF9ERUJVR19SRUdJ U1RFUlMoaSkJZm9yIChpID0gMDsgaSA8IERSX05BRERSOyBpKyspCi0gCi0tLyogTWlycm9yIHRo ZSBpbmZlcmlvcidzIERSaSByZWdpc3RlcnMuICBXZSBrZWVwIHRoZSBzdGF0dXMgYW5kCi0tICAg Y29udHJvbCByZWdpc3RlcnMgc2VwYXJhdGVkIGJlY2F1c2UgdGhleSBkb24ndCBob2xkIGFkZHJl c3Nlcy4gICovCi0tc3RhdGljIENPUkVfQUREUiBkcl9taXJyb3JbRFJfTkFERFJdOwotLXN0YXRp YyB1bnNpZ25lZCBsb25nIGRyX3N0YXR1c19taXJyb3IsIGRyX2NvbnRyb2xfbWlycm9yOwotLQot LS8qIFJlZmVyZW5jZSBjb3VudHMgZm9yIGVhY2ggZGVidWcgcmVnaXN0ZXIuICAqLwotLXN0YXRp YyBpbnQgZHJfcmVmX2NvdW50W0RSX05BRERSXTsKLS0KLSAvKiBXaGV0aGVyIG9yIG5vdCB0byBw cmludCB0aGUgbWlycm9yZWQgZGVidWcgcmVnaXN0ZXJzLiAgKi8KLSBzdGF0aWMgaW50IG1haW50 X3Nob3dfZHI7Ci0gCi1AQCAtMTk1LDIxICsyMDYsODAgQEAgc3RhdGljIGludCBpMzg2X2hhbmRs ZV9ub25hbGlnbmVkX3dhdGNocAotIAotIC8qIEltcGxlbWVudGF0aW9uLiAgKi8KLSAKLSsvKiBQ ZXItaW5mZXJpb3IgZGF0YSBrZXkuICAqLwotK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaW5mZXJpb3Jf ZGF0YSAqaTM4Nl9pbmZlcmlvcl9kYXRhOwotKwotK3N0cnVjdCBpMzg2X2luZmVyaW9yX2RhdGEK LSsgIHsKLSsgICAgLyogQ29weSBvZiBpMzg2IGhhcmR3YXJlIGRlYnVnIHJlZ2lzdGVycyBmb3Ig cGVyZm9ybWFuY2UgcmVhc29ucy4gICovCi0rICAgIHN0cnVjdCBpMzg2X2RyX21pcnJvciBkcl9t aXJyb3I7Ci0rICB9OwotKwotK3N0YXRpYyB2b2lkCi0raTM4Nl9pbmZlcmlvcl9kYXRhX2NsZWFu dXAgKHN0cnVjdCBpbmZlcmlvciAqaW5mLCB2b2lkICphcmcpCi0rewotKyAgc3RydWN0IGkzODZf aW5mZXJpb3JfZGF0YSAqaW5mX2RhdGEgPSBhcmc7Ci0rCi0rICB4ZnJlZSAoaW5mX2RhdGEpOwot K30KLSsKLStzdGF0aWMgc3RydWN0IGkzODZfaW5mZXJpb3JfZGF0YSAqCi0raTM4Nl9pbmZlcmlv cl9kYXRhX2dldCAodm9pZCkKLSt7Ci0rICBzdHJ1Y3QgaW5mZXJpb3IgKmluZiA9IGN1cnJlbnRf aW5mZXJpb3IgKCk7Ci0rICBzdHJ1Y3QgaTM4Nl9pbmZlcmlvcl9kYXRhICppbmZfZGF0YTsKLSsK LSsgIGluZl9kYXRhID0gaW5mZXJpb3JfZGF0YSAoaW5mLCBpMzg2X2luZmVyaW9yX2RhdGEpOwot KyAgaWYgKGluZl9kYXRhID09IE5VTEwpCi0rICAgIHsKLSsgICAgICBpbmZfZGF0YSA9IHh6YWxs b2MgKHNpemVvZiAoKmluZl9kYXRhKSk7Ci0rICAgICAgc2V0X2luZmVyaW9yX2RhdGEgKGN1cnJl bnRfaW5mZXJpb3IgKCksIGkzODZfaW5mZXJpb3JfZGF0YSwgaW5mX2RhdGEpOwotKyAgICB9Ci0r Ci0rICBpZiAoaW5mLT5waWQgIT0gcHRpZF9nZXRfcGlkIChpbmZlcmlvcl9wdGlkKSkKLSsgICAg ewotKyAgICAgIHN0YXRpYyBzdHJ1Y3QgaTM4Nl9pbmZlcmlvcl9kYXRhIGRldGFjaGVkX2luZl9k YXRhX2xvY2FsOwotKyAgICAgIHN0YXRpYyBpbnQgZGV0YWNoZWRfaW5mX3BpZCA9IC0xOwotKwot KyAgICAgIGlmIChkZXRhY2hlZF9pbmZfcGlkICE9IHB0aWRfZ2V0X3BpZCAoaW5mZXJpb3JfcHRp ZCkpCi0rCXsKLSsJICBkZXRhY2hlZF9pbmZfcGlkID0gcHRpZF9nZXRfcGlkIChpbmZlcmlvcl9w dGlkKTsKLSsKLSsJICAvKiBGb3JrZWQgcHJvY2Vzc2VzIGdldCBhIGNvcHkgb2YgdGhlIGRlYnVn IHJlZ2lzdGVycy4gICovCi0rCSAgbWVtY3B5ICgmZGV0YWNoZWRfaW5mX2RhdGFfbG9jYWwsIGlu Zl9kYXRhLAotKwkJICBzaXplb2YgKGRldGFjaGVkX2luZl9kYXRhX2xvY2FsKSk7Ci0rCSAgZGV0 YWNoZWRfaW5mX2RhdGFfbG9jYWwuZHJfbWlycm9yLmFkZHJfcHJlc2V0ID0gMDsKLSsJfQotKwot KyAgICAgIHJldHVybiAmZGV0YWNoZWRfaW5mX2RhdGFfbG9jYWw7Ci0rICAgIH0KLSsKLSsgIHJl dHVybiBpbmZfZGF0YTsKLSt9Ci0rCi0gLyogQ2xlYXIgdGhlIHJlZmVyZW5jZSBjb3VudHMgYW5k IGZvcmdldCBldmVyeXRoaW5nIHdlIGtuZXcgYWJvdXQgdGhlCi0gICAgZGVidWcgcmVnaXN0ZXJz LiAgKi8KLSAKLStzdHJ1Y3QgaTM4Nl9kcl9taXJyb3IgKgotK2kzODZfZHJfbWlycm9yX2dldCAo dm9pZCkKLSt7Ci0rICByZXR1cm4gJmkzODZfaW5mZXJpb3JfZGF0YV9nZXQgKCktPmRyX21pcnJv cjsKLSt9Ci0rCi0gdm9pZAotIGkzODZfY2xlYW51cF9kcmVncyAodm9pZCkKKyBpMzg2X3VwZGF0 ZV9pbmZlcmlvcl9kZWJ1Z19yZWdzIChzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKm5ld19z dGF0ZSkKICB7Ci0rICBzdHJ1Y3QgaTM4Nl9kcl9taXJyb3IgKmRyX21pcnJvciA9IGkzODZfZHJf bWlycm9yX2dldCAoKTsKKysgIHN0cnVjdCBpMzg2X2RlYnVnX3JlZ19zdGF0ZSAqc3RhdGUgPSBp Mzg2X2RlYnVnX3JlZ19zdGF0ZSAoKTsKICAgIGludCBpOwogIAotICAgQUxMX0RFQlVHX1JFR0lT VEVSUyhpKQorICAgQUxMX0RFQlVHX1JFR0lTVEVSUyAoaSkKICAgICAgewotLSAgICAgIGRyX21p cnJvcltpXSA9IDA7Ci0tICAgICAgZHJfcmVmX2NvdW50W2ldID0gMDsKLSsgICAgICBkcl9taXJy b3ItPmFkZHJbaV0gPSAwOwotKyAgICAgIGRyX21pcnJvci0+cmVmX2NvdW50W2ldID0gMDsKKy0g ICAgICBpZiAoSTM4Nl9EUl9WQUNBTlQgKG5ld19zdGF0ZSwgaSkgIT0gSTM4Nl9EUl9WQUNBTlQg KCZkcl9taXJyb3IsIGkpKQorKyAgICAgIGlmIChJMzg2X0RSX1ZBQ0FOVCAobmV3X3N0YXRlLCBp KSAhPSBJMzg2X0RSX1ZBQ0FOVCAoc3RhdGUsIGkpKQorIAlpMzg2X2RyX2xvdy5zZXRfYWRkciAo aSwgbmV3X3N0YXRlLT5kcl9taXJyb3JbaV0pOworICAgICAgIGVsc2UKKy0JZ2RiX2Fzc2VydCAo bmV3X3N0YXRlLT5kcl9taXJyb3JbaV0gPT0gZHJfbWlycm9yLmRyX21pcnJvcltpXSk7CisrCWdk Yl9hc3NlcnQgKG5ld19zdGF0ZS0+ZHJfbWlycm9yW2ldID09IHN0YXRlLT5kcl9taXJyb3JbaV0p OwogICAgICB9Ci0tICBkcl9jb250cm9sX21pcnJvciA9IDA7Ci0tICBkcl9zdGF0dXNfbWlycm9y ICA9IDA7Ci0rICBkcl9taXJyb3ItPmFkZHJfcHJlc2V0ID0gMDsKLSsgIGRyX21pcnJvci0+Y29u dHJvbCA9IDA7Ci0rICBkcl9taXJyb3ItPnN0YXR1cyA9IDA7CisgCistICBpZiAobmV3X3N0YXRl LT5kcl9jb250cm9sX21pcnJvciAhPSBkcl9taXJyb3IuZHJfY29udHJvbF9taXJyb3IpCisrICBp ZiAobmV3X3N0YXRlLT5kcl9jb250cm9sX21pcnJvciAhPSBzdGF0ZS0+ZHJfY29udHJvbF9taXJy b3IpCisgICAgIGkzODZfZHJfbG93LnNldF9jb250cm9sIChuZXdfc3RhdGUtPmRyX2NvbnRyb2xf bWlycm9yKTsKKyAKKy0gIGRyX21pcnJvciA9ICpuZXdfc3RhdGU7CisrICAqc3RhdGUgPSAqbmV3 X3N0YXRlOwogIH0KICAKLSAvKiBQcmludCB0aGUgdmFsdWVzIG9mIHRoZSBtaXJyb3JlZCBkZWJ1 ZyByZWdpc3RlcnMuICBUaGlzIGlzIGNhbGxlZAotQEAgLTIyMCw2ICsyOTAsNyBAQCBzdGF0aWMg dm9pZAotIGkzODZfc2hvd19kciAoY29uc3QgY2hhciAqZnVuYywgQ09SRV9BRERSIGFkZHIsCi0g CSAgICAgIGludCBsZW4sIGVudW0gdGFyZ2V0X2h3X2JwX3R5cGUgdHlwZSkKKyAvKiBJbnNlcnQg YSB3YXRjaHBvaW50IHRvIHdhdGNoIGEgbWVtb3J5IHJlZ2lvbiB3aGljaCBzdGFydHMgYXQKK0BA IC01MTgsMTAgKzU5NiwxMSBAQCBzdGF0aWMgaW50CisgaTM4Nl9pbnNlcnRfd2F0Y2hwb2ludCAo Q09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlLAorIAkJCXN0cnVjdCBleHByZXNzaW9u ICpjb25kKQogIHsKLSsgIHN0cnVjdCBpMzg2X2RyX21pcnJvciAqZHJfbWlycm9yID0gaTM4Nl9k cl9taXJyb3JfZ2V0ICgpOwotICAgaW50IGFkZHJfc2l6ZSA9IGdkYmFyY2hfYWRkcl9iaXQgKHRh cmdldF9nZGJhcmNoKSAvIDg7Ci0gICBpbnQgaTsKLSAKLUBAIC0yMzksMTMgKzMxMCwxNiBAQCBp Mzg2X3Nob3dfZHIgKGNvbnN0IGNoYXIgKmZ1bmMsIENPUkVfQURECi0gCQkJCTogIj8/dW5rbm93 bj8/IikpKSk7Ci0gICBwdXRzX3VuZmlsdGVyZWQgKCI6XG4iKTsKLSAgIHByaW50Zl91bmZpbHRl cmVkICgiXHRDT05UUk9MIChEUjcpOiAlcyAgICAgICAgICBTVEFUVVMgKERSNik6ICVzXG4iLAot LQkJICAgICBwaGV4IChkcl9jb250cm9sX21pcnJvciwgOCksIHBoZXggKGRyX3N0YXR1c19taXJy b3IsIDgpKTsKLSsJCSAgICAgcGhleCAoZHJfbWlycm9yLT5jb250cm9sLCA4KSwKLSsJCSAgICAg cGhleCAoZHJfbWlycm9yLT5zdGF0dXMsIDgpKTsKLSAgIEFMTF9ERUJVR19SRUdJU1RFUlMoaSkK LSAgICAgewotICAgICAgIHByaW50Zl91bmZpbHRlcmVkICgiXAotIFx0RFIlZDogYWRkcj0weCVz LCByZWYuY291bnQ9JWQgIERSJWQ6IGFkZHI9MHglcywgcmVmLmNvdW50PSVkXG4iLAotLQkJIGks IHBoZXggKGRyX21pcnJvcltpXSwgYWRkcl9zaXplKSwgZHJfcmVmX2NvdW50W2ldLAotLQkJIGkr MSwgcGhleCAoZHJfbWlycm9yW2krMV0sIGFkZHJfc2l6ZSksIGRyX3JlZl9jb3VudFtpKzFdKTsK LSsJCQkgaSwgcGhleCAoZHJfbWlycm9yLT5hZGRyW2ldLCBhZGRyX3NpemUpLAotKwkJCSBkcl9t aXJyb3ItPnJlZl9jb3VudFtpXSwgaSArIDEsCi0rCQkJIHBoZXggKGRyX21pcnJvci0+YWRkcltp ICsgMV0sIGFkZHJfc2l6ZSksCi0rCQkJIGRyX21pcnJvci0+cmVmX2NvdW50W2kgKyAxXSk7Ci0g ICAgICAgaSsrOwotICAgICB9CisrICBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRl ID0gaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKCk7CisgICBpbnQgcmV0dmFsOworICAgLyogV29yayBv biBhIGxvY2FsIGNvcHkgb2YgdGhlIGRlYnVnIHJlZ2lzdGVycywgYW5kIG9uIHN1Y2Nlc3MsCisg ICAgICBjb21taXQgdGhlIGNoYW5nZSBiYWNrIHRvIHRoZSBpbmZlcmlvci4gICovCistICBzdHJ1 Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgbG9jYWxfc3RhdGUgPSBkcl9taXJyb3I7CisrICBzdHJ1 Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgbG9jYWxfc3RhdGUgPSAqc3RhdGU7CisgCisgICBpZiAo dHlwZSA9PSBod19yZWFkKQorICAgICByZXR1cm4gMTsgLyogdW5zdXBwb3J0ZWQgKi8KK0BAIC01 NDIsNyArNjIxLDcgQEAgaTM4Nl9pbnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGlu dCBsZW4sIGludCB0eXBlLAorICAgICBpMzg2X3VwZGF0ZV9pbmZlcmlvcl9kZWJ1Z19yZWdzICgm bG9jYWxfc3RhdGUpOworIAorICAgaWYgKG1haW50X3Nob3dfZHIpCistICAgIGkzODZfc2hvd19k ciAoJmRyX21pcnJvciwgImluc2VydF93YXRjaHBvaW50IiwgYWRkciwgbGVuLCB0eXBlKTsKKysg ICAgaTM4Nl9zaG93X2RyIChzdGF0ZSwgImluc2VydF93YXRjaHBvaW50IiwgYWRkciwgbGVuLCB0 eXBlKTsKKyAKKyAgIHJldHVybiByZXR2YWw7CiAgfQotQEAgLTMxMyw2ICszODcsNyBAQCBJbnZh bGlkIGhhcmR3YXJlIGJyZWFrcG9pbnQgbGVuZ3RoICVkIGluCi0gc3RhdGljIGludAotIGkzODZf aW5zZXJ0X2FsaWduZWRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIHVuc2lnbmVkIGxlbl9y d19iaXRzKQorQEAgLTU1NCwxMCArNjMzLDExIEBAIHN0YXRpYyBpbnQKKyBpMzg2X3JlbW92ZV93 YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUsCisgCQkJc3RydWN0 IGV4cHJlc3Npb24gKmNvbmQpCiAgewotKyAgc3RydWN0IGkzODZfZHJfbWlycm9yICpkcl9taXJy b3IgPSBpMzg2X2RyX21pcnJvcl9nZXQgKCk7Ci0gICBpbnQgaTsKLSAKLSAgIGlmICghaTM4Nl9k cl9sb3cuc2V0X2FkZHIgfHwgIWkzODZfZHJfbG93LnNldF9jb250cm9sKQotQEAgLTMyMywxMSAr Mzk4LDEwIEBAIGkzODZfaW5zZXJ0X2FsaWduZWRfd2F0Y2hwb2ludCAoQ09SRV9BREQKLSAgICAg IHJldXNlIGl0IGZvciB0aGlzIHdhdGNocG9pbnQgYXMgd2VsbCAoYW5kIHNhdmUgYSByZWdpc3Rl cikuICAqLwotICAgQUxMX0RFQlVHX1JFR0lTVEVSUyhpKQotICAgICB7Ci0tICAgICAgaWYgKCFJ Mzg2X0RSX1ZBQ0FOVCAoaSkKLS0JICAmJiBkcl9taXJyb3JbaV0gPT0gYWRkcgotLQkgICYmIEkz ODZfRFJfR0VUX1JXX0xFTiAoaSkgPT0gbGVuX3J3X2JpdHMpCi0rICAgICAgaWYgKCFpMzg2X2Ry X3ZhY2FudCAoZHJfbWlycm9yLCBpKSAmJiBkcl9taXJyb3ItPmFkZHJbaV0gPT0gYWRkcgotKwkg ICYmIGkzODZfZHJfZ2V0X3J3X2xlbiAoZHJfbWlycm9yLCBpKSA9PSBsZW5fcndfYml0cykKLSAJ ewotLQkgIGRyX3JlZl9jb3VudFtpXSsrOwotKwkgIGRyX21pcnJvci0+cmVmX2NvdW50W2ldKys7 Ci0gCSAgcmV0dXJuIDA7Ci0gCX0KLSAgICAgfQotQEAgLTMzNSw3ICs0MDksNyBAQCBpMzg2X2lu c2VydF9hbGlnbmVkX3dhdGNocG9pbnQgKENPUkVfQURECi0gICAvKiBOZXh0LCBsb29rIGZvciBh IHZhY2FudCBkZWJ1ZyByZWdpc3Rlci4gICovCi0gICBBTExfREVCVUdfUkVHSVNURVJTKGkpCi0g ICAgIHsKLS0gICAgICBpZiAoSTM4Nl9EUl9WQUNBTlQgKGkpKQotKyAgICAgIGlmIChpMzg2X2Ry X3ZhY2FudCAoZHJfbWlycm9yLCBpKSkKLSAJYnJlYWs7Ci0gICAgIH0KLSAKLUBAIC0zNDYsOSAr NDIwLDkgQEAgaTM4Nl9pbnNlcnRfYWxpZ25lZF93YXRjaHBvaW50IChDT1JFX0FERAotICAgLyog Tm93IHNldCB1cCB0aGUgcmVnaXN0ZXIgSSB0byB3YXRjaCBvdXIgcmVnaW9uLiAgKi8KLSAKLSAg IC8qIFJlY29yZCB0aGUgaW5mbyBpbiBvdXIgbG9jYWwgbWlycm9yZWQgYXJyYXkuICAqLwotLSAg ZHJfbWlycm9yW2ldID0gYWRkcjsKLS0gIGRyX3JlZl9jb3VudFtpXSA9IDE7Ci0tICBJMzg2X0RS X1NFVF9SV19MRU4gKGksIGxlbl9yd19iaXRzKTsKLSsgIGRyX21pcnJvci0+YWRkcltpXSA9IGFk ZHI7Ci0rICBkcl9taXJyb3ItPnJlZl9jb3VudFtpXSA9IDE7Ci0rICBpMzg2X2RyX3NldF9yd19s ZW4gKGRyX21pcnJvciwgaSwgbGVuX3J3X2JpdHMpOwotICAgLyogTm90ZTogd2Ugb25seSBlbmFi bGUgdGhlIHdhdGNocG9pbnQgbG9jYWxseSwgaS5lLiBpbiB0aGUgY3VycmVudAotICAgICAgdGFz ay4gIEN1cnJlbnRseSwgbm8gaTM4NiB0YXJnZXQgYWxsb3dzIG9yIHN1cHBvcnRzIGdsb2JhbAot ICAgICAgd2F0Y2hwb2ludHM7IGhvd2V2ZXIsIGlmIGFueSB0YXJnZXQgd291bGQgd2FudCB0aGF0 IGluIHRoZQotQEAgLTM1NiwxMyArNDMwLDEzIEBAIGkzODZfaW5zZXJ0X2FsaWduZWRfd2F0Y2hw b2ludCAoQ09SRV9BREQKLSAgICAgIHRvIGVuYWJsZSB3YXRjaHBvaW50cyBnbG9iYWxseSBvciBs b2NhbGx5LCBhbmQgdGhlIGNvZGUgYmVsb3cKLSAgICAgIHNob3VsZCB1c2UgZ2xvYmFsIG9yIGxv Y2FsIGVuYWJsZSBhbmQgc2xvdy1kb3duIGZsYWdzIGFzCi0gICAgICBhcHByb3ByaWF0ZS4gICov Ci0tICBJMzg2X0RSX0xPQ0FMX0VOQUJMRSAoaSk7Ci0tICBkcl9jb250cm9sX21pcnJvciB8PSBE Ul9MT0NBTF9TTE9XRE9XTjsKLS0gIGRyX2NvbnRyb2xfbWlycm9yICY9IEkzODZfRFJfQ09OVFJP TF9NQVNLOwotKyAgaTM4Nl9kcl9sb2NhbF9lbmFibGUgKGRyX21pcnJvciwgaSk7Ci0rICBkcl9t aXJyb3ItPmNvbnRyb2wgfD0gRFJfTE9DQUxfU0xPV0RPV047Ci0rICBkcl9taXJyb3ItPmNvbnRy b2wgJj0gSTM4Nl9EUl9DT05UUk9MX01BU0s7Ci0gCi0gICAvKiBGaW5hbGx5LCBhY3R1YWxseSBw YXNzIHRoZSBpbmZvIHRvIHRoZSBpbmZlcmlvci4gICovCi0gICBpMzg2X2RyX2xvdy5zZXRfYWRk ciAoaSwgYWRkcik7Ci0tICBpMzg2X2RyX2xvdy5zZXRfY29udHJvbCAoZHJfY29udHJvbF9taXJy b3IpOwotKyAgaTM4Nl9kcl9sb3cuc2V0X2NvbnRyb2wgKGRyX21pcnJvci0+Y29udHJvbCk7Ci0g Ci0gICAvKiBPbmx5IGEgc2FuaXR5IGNoZWNrIGZvciBsZWZ0b3ZlciBiaXRzIChzZXQgcG9zc2li bHkgb25seSBieSBpbmZlcmlvcikuICAqLwotICAgaWYgKGkzODZfZHJfbG93LnVuc2V0X3N0YXR1 cykKLUBAIC0zODAsMjEgKzQ1NCwyMSBAQCBpMzg2X2luc2VydF9hbGlnbmVkX3dhdGNocG9pbnQg KENPUkVfQURECisrICBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRlID0gaTM4Nl9k ZWJ1Z19yZWdfc3RhdGUgKCk7CisgICBpbnQgcmV0dmFsOworICAgLyogV29yayBvbiBhIGxvY2Fs IGNvcHkgb2YgdGhlIGRlYnVnIHJlZ2lzdGVycywgYW5kIG9uIHN1Y2Nlc3MsCisgICAgICBjb21t aXQgdGhlIGNoYW5nZSBiYWNrIHRvIHRoZSBpbmZlcmlvci4gICovCistICBzdHJ1Y3QgaTM4Nl9k ZWJ1Z19yZWdfc3RhdGUgbG9jYWxfc3RhdGUgPSBkcl9taXJyb3I7CisrICBzdHJ1Y3QgaTM4Nl9k ZWJ1Z19yZWdfc3RhdGUgbG9jYWxfc3RhdGUgPSAqc3RhdGU7CisgCisgICBpZiAoKChsZW4gIT0g MSAmJiBsZW4gIT0yICYmIGxlbiAhPTQpICYmICEoVEFSR0VUX0hBU19EUl9MRU5fOCAmJiBsZW4g PT0gOCkpCisgICAgICAgfHwgYWRkciAlIGxlbiAhPSAwKQorQEAgLTU3NSw3ICs2NTUsNyBAQCBp Mzg2X3JlbW92ZV93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUs CisgICAgIGkzODZfdXBkYXRlX2luZmVyaW9yX2RlYnVnX3JlZ3MgKCZsb2NhbF9zdGF0ZSk7Cisg CisgICBpZiAobWFpbnRfc2hvd19kcikKKy0gICAgaTM4Nl9zaG93X2RyICgmZHJfbWlycm9yLCAi cmVtb3ZlX3dhdGNocG9pbnQiLCBhZGRyLCBsZW4sIHR5cGUpOworKyAgICBpMzg2X3Nob3dfZHIg KHN0YXRlLCAicmVtb3ZlX3dhdGNocG9pbnQiLCBhZGRyLCBsZW4sIHR5cGUpOworIAorICAgcmV0 dXJuIHJldHZhbDsKKyB9CitAQCAtNTg2LDExICs2NjYsMTIgQEAgaTM4Nl9yZW1vdmVfd2F0Y2hw b2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlLAogIHN0YXRpYyBpbnQKLSBp Mzg2X3JlbW92ZV9hbGlnbmVkX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCB1bnNpZ25lZCBs ZW5fcndfYml0cykKKyBpMzg2X3JlZ2lvbl9va19mb3Jfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFk ZHIsIGludCBsZW4pCiAgewotKyAgc3RydWN0IGkzODZfZHJfbWlycm9yICpkcl9taXJyb3IgPSBp Mzg2X2RyX21pcnJvcl9nZXQgKCk7Ci0gICBpbnQgaSwgcmV0dmFsID0gLTE7Ci0gCi0gICBBTExf REVCVUdfUkVHSVNURVJTKGkpCi0gICAgIHsKLS0gICAgICBpZiAoIUkzODZfRFJfVkFDQU5UIChp KQotLQkgICYmIGRyX21pcnJvcltpXSA9PSBhZGRyCi0tCSAgJiYgSTM4Nl9EUl9HRVRfUldfTEVO IChpKSA9PSBsZW5fcndfYml0cykKLSsgICAgICBpZiAoIWkzODZfZHJfdmFjYW50IChkcl9taXJy b3IsIGkpICYmIGRyX21pcnJvci0+YWRkcltpXSA9PSBhZGRyCi0rCSAgJiYgaTM4Nl9kcl9nZXRf cndfbGVuIChkcl9taXJyb3IsIGkpID09IGxlbl9yd19iaXRzKQotIAl7Ci0tCSAgaWYgKC0tZHJf cmVmX2NvdW50W2ldID09IDApIC8qIG5vIGxvbmdlciBpbiB1c2U/ICAqLwotKwkgIGlmICgtLWRy X21pcnJvci0+cmVmX2NvdW50W2ldID09IDApIC8qIG5vIGxvbmdlciBpbiB1c2U/ICAqLwotIAkg ICAgewotIAkgICAgICAvKiBSZXNldCBvdXIgbWlycm9yLiAgKi8KLS0JICAgICAgZHJfbWlycm9y W2ldID0gMDsKLS0JICAgICAgSTM4Nl9EUl9ESVNBQkxFIChpKTsKLSsJICAgICAgZHJfbWlycm9y LT5hZGRyW2ldID0gMDsKLSsJICAgICAgaTM4Nl9kcl9kaXNhYmxlIChkcl9taXJyb3IsIGkpOwot IAkgICAgICAvKiBSZXNldCBpdCBpbiB0aGUgaW5mZXJpb3IuICAqLwotLQkgICAgICBpMzg2X2Ry X2xvdy5zZXRfY29udHJvbCAoZHJfY29udHJvbF9taXJyb3IpOwotKwkgICAgICBpMzg2X2RyX2xv dy5zZXRfY29udHJvbCAoZHJfbWlycm9yLT5jb250cm9sKTsKLSAJICAgICAgaWYgKGkzODZfZHJf bG93LnJlc2V0X2FkZHIpCi0gCQlpMzg2X2RyX2xvdy5yZXNldF9hZGRyIChpKTsKLSAJICAgIH0K LUBAIC01NTYsMjYgKzYzMCwyNyBAQCBpMzg2X3JlZ2lvbl9va19mb3Jfd2F0Y2hwb2ludCAoQ09S RV9BRERSCisrICBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRlID0gaTM4Nl9kZWJ1 Z19yZWdfc3RhdGUgKCk7CisgICBpbnQgbnJlZ3M7CisgCisgICAvKiBDb21wdXRlIGhvdyBtYW55 IGFsaWduZWQgd2F0Y2hwb2ludHMgd2Ugd291bGQgbmVlZCB0byBjb3ZlciB0aGlzCisgICAgICBy ZWdpb24uICAqLworLSAgbnJlZ3MgPSBpMzg2X2hhbmRsZV9ub25hbGlnbmVkX3dhdGNocG9pbnQg KCZkcl9taXJyb3IsCisrICBucmVncyA9IGkzODZfaGFuZGxlX25vbmFsaWduZWRfd2F0Y2hwb2lu dCAoc3RhdGUsCisgCQkJCQkgICAgIFdQX0NPVU5ULCBhZGRyLCBsZW4sIGh3X3dyaXRlKTsKKyAg IHJldHVybiBucmVncyA8PSBEUl9OQUREUiA/IDEgOiAwOworIH0KK0BAIC02MDIsNiArNjgzLDcg QEAgaTM4Nl9yZWdpb25fb2tfZm9yX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVu KQogIHN0YXRpYyBpbnQKICBpMzg2X3N0b3BwZWRfZGF0YV9hZGRyZXNzIChzdHJ1Y3QgdGFyZ2V0 X29wcyAqb3BzLCBDT1JFX0FERFIgKmFkZHJfcCkKICB7Ci0rICBzdHJ1Y3QgaTM4Nl9kcl9taXJy b3IgKmRyX21pcnJvciA9IGkzODZfZHJfbWlycm9yX2dldCAoKTsKKysgIHN0cnVjdCBpMzg2X2Rl YnVnX3JlZ19zdGF0ZSAqc3RhdGUgPSBpMzg2X2RlYnVnX3JlZ19zdGF0ZSAoKTsKICAgIENPUkVf QUREUiBhZGRyID0gMDsKICAgIGludCBpOwogICAgaW50IHJjID0gMDsKLSAKLS0gIGRyX3N0YXR1 c19taXJyb3IgPSBpMzg2X2RyX2xvdy5nZXRfc3RhdHVzICgpOwotKyAgZHJfbWlycm9yLT5zdGF0 dXMgPSBpMzg2X2RyX2xvdy5nZXRfc3RhdHVzICgpOwotIAotICAgQUxMX0RFQlVHX1JFR0lTVEVS UyhpKQotICAgICB7Ci0tICAgICAgaWYgKEkzODZfRFJfV0FUQ0hfSElUIChpKQotKyAgICAgIGlm IChpMzg2X2RyX3dhdGNoX2hpdCAoZHJfbWlycm9yLCBpKQotIAkgIC8qIFRoaXMgc2Vjb25kIGNv bmRpdGlvbiBtYWtlcyBzdXJlIERSaSBpcyBzZXQgdXAgZm9yIGEgZGF0YQotIAkgICAgIHdhdGNo cG9pbnQsIG5vdCBhIGhhcmR3YXJlIGJyZWFrcG9pbnQuICBUaGUgcmVhc29uIGlzCi0gCSAgICAg dGhhdCBHREIgZG9lc24ndCBjYWxsIHRoZSB0YXJnZXRfc3RvcHBlZF9kYXRhX2FkZHJlc3MKLSAJ ICAgICBtZXRob2QgZXhjZXB0IGZvciBkYXRhIHdhdGNocG9pbnRzLiAgSW4gb3RoZXIgd29yZHMs IEknbQotIAkgICAgIGJlaW5nIHBhcmFub2lhYy4gICovCi0tCSAgJiYgSTM4Nl9EUl9HRVRfUldf TEVOIChpKSAhPSAwCi0rCSAgJiYgaTM4Nl9kcl9nZXRfcndfbGVuIChkcl9taXJyb3IsIGkpICE9 IDAKLSAJICAvKiBUaGlzIHRoaXJkIGNvbmRpdGlvbiBtYWtlcyBzdXJlIERSaSBpcyBub3QgdmFj YW50LCB0aGlzCi0gCSAgICAgYXZvaWRzIGZhbHNlIHBvc2l0aXZlcyBpbiB3aW5kb3dzLW5hdC5j LiAgKi8KLS0JICAmJiAhSTM4Nl9EUl9WQUNBTlQgKGkpKQotKwkgICYmICFpMzg2X2RyX3ZhY2Fu dCAoZHJfbWlycm9yLCBpKSkKLSAJewotLQkgIGFkZHIgPSBkcl9taXJyb3JbaV07Ci0rCSAgYWRk ciA9IGRyX21pcnJvci0+YWRkcltpXTsKK0BAIC02MTUsMjUgKzY5NywyNCBAQCBpMzg2X3N0b3Bw ZWRfZGF0YV9hZGRyZXNzIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLCBDT1JFX0FERFIgKmFkZHJf cCkKKyAgIHVuc2lnbmVkIGNvbnRyb2wgPSAwOworIAorICAgLyogSW4gbm9uLXN0b3AvYXN5bmMs IHRocmVhZHMgY2FuIGJlIHJ1bm5pbmcgd2hpbGUgd2UgY2hhbmdlIHRoZQorLSAgICAgZ2xvYmFs IGRyX21pcnJvciAoYW5kIGZyaWVuZHMpLiAgU2F5LCB3ZSBzZXQgYSB3YXRjaHBvaW50LCBhbmQK Ky0gICAgIGxldCB0aHJlYWRzIHJlc3VtZS4gIE5vdywgc2F5IHlvdSBkZWxldGUgdGhlIHdhdGNo cG9pbnQsIG9yCistICAgICBhZGQvcmVtb3ZlIHdhdGNocG9pbnRzIHN1Y2ggdGhhdCBkcl9taXJy b3IgY2hhbmdlcyB3aGlsZSB0aHJlYWRzCistICAgICBhcmUgcnVubmluZy4gIE9uIHRhcmdldHMg dGhhdCBzdXBwb3J0IG5vbi1zdG9wLAorLSAgICAgaW5zZXJ0aW5nL2RlbGV0aW5nIHdhdGNocG9p bnRzIHVwZGF0ZXMgdGhlIGdsb2JhbCBkcl9taXJyb3Igb25seS4KKy0gICAgIEl0IGRvZXMgbm90 IHVwZGF0ZSB0aGUgcmVhbCB0aHJlYWQncyBkZWJ1ZyByZWdpc3RlcnM7IHRoYXQncyBvbmx5Cist ICAgICBkb25lIHByaW9yIHRvIHJlc3VtZS4gIEluc3RlYWQsIGlmIHRocmVhZHMgYXJlIHJ1bm5p bmcgd2hlbiB0aGUKKy0gICAgIG1pcnJvciBjaGFuZ2VzLCBhIHRlbXBvcmFyeSBhbmQgdHJhbnNw YXJlbnQgc3RvcCBvbiBhbGwgdGhyZWFkcworLSAgICAgaXMgZm9yY2VkIHNvIHRoZXkgY2FuIGdl dCB0aGVpciBjb3B5IG9mIHRoZSBkZWJ1ZyByZWdpc3RlcnMKKy0gICAgIHVwZGF0ZWQgb24gcmUt cmVzdW1lLiAgTm93LCBzYXksIGEgdGhyZWFkIGhpdCBhIHdhdGNocG9pbnQgYmVmb3JlCistICAg ICBoYXZpbmcgYmVlbiB1cGRhdGVkIHdpdGggdGhlIG5ldyBkcl9taXJyb3IgY29udGVudHMsIGFu ZCB3ZQorLSAgICAgaGF2ZW4ndCB5ZXQgaGFuZGxlZCB0aGUgY29ycmVzcG9uZGluZyBTSUdUUkFQ LiAgSWYgd2UgdHJ1c3RlZAorLSAgICAgZHJfbWlycm9yIGJlbG93LCB3ZSdkIG1pc3Rha2UgdGhl IHJlYWwgdHJhcHBlZCBhZGRyZXNzIChmcm9tIHRoZQorLSAgICAgbGFzdCB0aW1lIHdlIGhhZCB1 cGRhdGVkIGRlYnVnIHJlZ2lzdGVycyBpbiB0aGUgdGhyZWFkKSB3aXRoCistICAgICB3aGF0ZXZl ciB3YXMgY3VycmVudGx5IGluIGRyX21pcnJvci4gIFNvIHRvIGZpeCB0aGlzLCBkcl9taXJyb3IK Ky0gICAgIGFsd2F5cyByZXByZXNlbnRzIGludGVudGlvbiwgd2hhdCB3ZSBfd2FudF8gdGhyZWFk cyB0byBoYXZlIGluCistICAgICBkZWJ1ZyByZWdpc3RlcnMuICBUbyBnZXQgYXQgdGhlIGFkZHJl c3MgYW5kIGNhdXNlIG9mIHRoZSB0cmFwLCB3ZQorLSAgICAgbmVlZCB0byByZWFkIHRoZSBzdGF0 ZSB0aGUgdGhyZWFkIHN0aWxsIGhhcyBpbiBpdHMgZGVidWcKKy0gICAgIHJlZ2lzdGVycy4KKysg ICAgIFNUQVRFIChhbmQgZnJpZW5kcykuICBTYXksIHdlIHNldCBhIHdhdGNocG9pbnQsIGFuZCBs ZXQgdGhyZWFkcworKyAgICAgcmVzdW1lLiAgTm93LCBzYXkgeW91IGRlbGV0ZSB0aGUgd2F0Y2hw b2ludCwgb3IgYWRkL3JlbW92ZQorKyAgICAgd2F0Y2hwb2ludHMgc3VjaCB0aGF0IFNUQVRFIGNo YW5nZXMgd2hpbGUgdGhyZWFkcyBhcmUgcnVubmluZy4KKysgICAgIE9uIHRhcmdldHMgdGhhdCBz dXBwb3J0IG5vbi1zdG9wLCBpbnNlcnRpbmcvZGVsZXRpbmcgd2F0Y2hwb2ludHMKKysgICAgIHVw ZGF0ZXMgdGhlIFNUQVRFIG9ubHkuICBJdCBkb2VzIG5vdCB1cGRhdGUgdGhlIHJlYWwgdGhyZWFk J3MKKysgICAgIGRlYnVnIHJlZ2lzdGVyczsgdGhhdCdzIG9ubHkgZG9uZSBwcmlvciB0byByZXN1 bWUuICBJbnN0ZWFkLCBpZgorKyAgICAgdGhyZWFkcyBhcmUgcnVubmluZyB3aGVuIHRoZSBtaXJy b3IgY2hhbmdlcywgYSB0ZW1wb3JhcnkgYW5kCisrICAgICB0cmFuc3BhcmVudCBzdG9wIG9uIGFs bCB0aHJlYWRzIGlzIGZvcmNlZCBzbyB0aGV5IGNhbiBnZXQgdGhlaXIKKysgICAgIGNvcHkgb2Yg dGhlIGRlYnVnIHJlZ2lzdGVycyB1cGRhdGVkIG9uIHJlLXJlc3VtZS4gIE5vdywgc2F5LAorKyAg ICAgYSB0aHJlYWQgaGl0IGEgd2F0Y2hwb2ludCBiZWZvcmUgaGF2aW5nIGJlZW4gdXBkYXRlZCB3 aXRoIHRoZSBuZXcKKysgICAgIFNUQVRFIGNvbnRlbnRzLCBhbmQgd2UgaGF2ZW4ndCB5ZXQgaGFu ZGxlZCB0aGUgY29ycmVzcG9uZGluZworKyAgICAgU0lHVFJBUC4gIElmIHdlIHRydXN0ZWQgU1RB VEUgYmVsb3csIHdlJ2QgbWlzdGFrZSB0aGUgcmVhbAorKyAgICAgdHJhcHBlZCBhZGRyZXNzIChm cm9tIHRoZSBsYXN0IHRpbWUgd2UgaGFkIHVwZGF0ZWQgZGVidWcKKysgICAgIHJlZ2lzdGVycyBp biB0aGUgdGhyZWFkKSB3aXRoIHdoYXRldmVyIHdhcyBjdXJyZW50bHkgaW4gU1RBVEUuCisrICAg ICBTbyB0byBmaXggdGhpcywgU1RBVEUgYWx3YXlzIHJlcHJlc2VudHMgaW50ZW50aW9uLCB3aGF0 IHdlIF93YW50XworKyAgICAgdGhyZWFkcyB0byBoYXZlIGluIGRlYnVnIHJlZ2lzdGVycy4gIFRv IGdldCBhdCB0aGUgYWRkcmVzcyBhbmQKKysgICAgIGNhdXNlIG9mIHRoZSB0cmFwLCB3ZSBuZWVk IHRvIHJlYWQgdGhlIHN0YXRlIHRoZSB0aHJlYWQgc3RpbGwgaGFzCisrICAgICBpbiBpdHMgZGVi dWcgcmVnaXN0ZXJzLgorIAorICAgICAgSW4gc3VtLCBhbHdheXMgZ2V0IHRoZSBjdXJyZW50IGRl YnVnIHJlZ2lzdGVyIHZhbHVlcyB0aGUgY3VycmVudAorICAgICAgdGhyZWFkIGhhcywgaW5zdGVh ZCBvZiB0cnVzdGluZyB0aGUgZ2xvYmFsIG1pcnJvci4gIElmIHRoZSB0aHJlYWQKK0BAIC02NjMs MTEgKzc0NCwxMSBAQCBpMzg2X3N0b3BwZWRfZGF0YV9hZGRyZXNzIChzdHJ1Y3QgdGFyZ2V0X29w cyAqb3BzLCBDT1JFX0FERFIgKmFkZHJfcCkKKyAJICBhZGRyID0gaTM4Nl9kcl9sb3cuZ2V0X2Fk ZHIgKGkpOwogIAkgIHJjID0gMTsKICAJICBpZiAobWFpbnRfc2hvd19kcikKLSAJICAgIGkzODZf c2hvd19kciAoIndhdGNocG9pbnRfaGl0IiwgYWRkciwgLTEsIGh3X3dyaXRlKTsKLUBAIC02ODks NiArNzY0LDEwIEBAIGkzODZfdXNlX3dhdGNocG9pbnRzIChzdHJ1Y3QgdGFyZ2V0X29wcworLQkg ICAgaTM4Nl9zaG93X2RyICgmZHJfbWlycm9yLCAid2F0Y2hwb2ludF9oaXQiLCBhZGRyLCAtMSwg aHdfd3JpdGUpOworKwkgICAgaTM4Nl9zaG93X2RyIChzdGF0ZSwgIndhdGNocG9pbnRfaGl0Iiwg YWRkciwgLTEsIGh3X3dyaXRlKTsKKyAJfQorICAgICB9CisgICBpZiAobWFpbnRfc2hvd19kciAm JiBhZGRyID09IDApCistICAgIGkzODZfc2hvd19kciAoJmRyX21pcnJvciwgInN0b3BwZWRfZGF0 YV9hZGRyIiwgMCwgMCwgaHdfd3JpdGUpOworKyAgICBpMzg2X3Nob3dfZHIgKHN0YXRlLCAic3Rv cHBlZF9kYXRhX2FkZHIiLCAwLCAwLCBod193cml0ZSk7CisgCisgICBpZiAocmMpCisgICAgICph ZGRyX3AgPSBhZGRyOworQEAgLTY4NywxMSArNzY4LDEyIEBAIHN0YXRpYyBpbnQKKyBpMzg2X2lu c2VydF9od19icmVha3BvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKyAJCQkgICBzdHJ1 Y3QgYnBfdGFyZ2V0X2luZm8gKmJwX3RndCkKKyB7CisrICBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdf c3RhdGUgKnN0YXRlID0gaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKCk7CisgICB1bnNpZ25lZCBsZW5f cncgPSBpMzg2X2xlbmd0aF9hbmRfcndfYml0cyAoMSwgaHdfZXhlY3V0ZSk7CisgICBDT1JFX0FE RFIgYWRkciA9IGJwX3RndC0+cGxhY2VkX2FkZHJlc3M7CisgICAvKiBXb3JrIG9uIGEgbG9jYWwg Y29weSBvZiB0aGUgZGVidWcgcmVnaXN0ZXJzLCBhbmQgb24gc3VjY2VzcywKKyAgICAgIGNvbW1p dCB0aGUgY2hhbmdlIGJhY2sgdG8gdGhlIGluZmVyaW9yLiAgKi8KKy0gIHN0cnVjdCBpMzg2X2Rl YnVnX3JlZ19zdGF0ZSBsb2NhbF9zdGF0ZSA9IGRyX21pcnJvcjsKKysgIHN0cnVjdCBpMzg2X2Rl YnVnX3JlZ19zdGF0ZSBsb2NhbF9zdGF0ZSA9ICpzdGF0ZTsKKyAgIGludCByZXR2YWwgPSBpMzg2 X2luc2VydF9hbGlnbmVkX3dhdGNocG9pbnQgKCZsb2NhbF9zdGF0ZSwKKyAJCQkJCSAgICAgICBh ZGRyLCBsZW5fcncpID8gRUJVU1kgOiAwOworIAorQEAgLTY5OSw3ICs3ODEsNyBAQCBpMzg2X2lu c2VydF9od19icmVha3BvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKyAgICAgaTM4Nl91 cGRhdGVfaW5mZXJpb3JfZGVidWdfcmVncyAoJmxvY2FsX3N0YXRlKTsKKyAKKyAgIGlmIChtYWlu dF9zaG93X2RyKQorLSAgICBpMzg2X3Nob3dfZHIgKCZkcl9taXJyb3IsICJpbnNlcnRfaHdicCIs IGFkZHIsIDEsIGh3X2V4ZWN1dGUpOworKyAgICBpMzg2X3Nob3dfZHIgKHN0YXRlLCAiaW5zZXJ0 X2h3YnAiLCBhZGRyLCAxLCBod19leGVjdXRlKTsKKyAKKyAgIHJldHVybiByZXR2YWw7CisgfQor QEAgLTcxMSwxMSArNzkzLDEyIEBAIHN0YXRpYyBpbnQKKyBpMzg2X3JlbW92ZV9od19icmVha3Bv aW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKyAJCQkgICBzdHJ1Y3QgYnBfdGFyZ2V0X2lu Zm8gKmJwX3RndCkKKyB7CisrICBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRlID0g aTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKCk7CisgICB1bnNpZ25lZCBsZW5fcncgPSBpMzg2X2xlbmd0 aF9hbmRfcndfYml0cyAoMSwgaHdfZXhlY3V0ZSk7CisgICBDT1JFX0FERFIgYWRkciA9IGJwX3Rn dC0+cGxhY2VkX2FkZHJlc3M7CisgICAvKiBXb3JrIG9uIGEgbG9jYWwgY29weSBvZiB0aGUgZGVi dWcgcmVnaXN0ZXJzLCBhbmQgb24gc3VjY2VzcywKKyAgICAgIGNvbW1pdCB0aGUgY2hhbmdlIGJh Y2sgdG8gdGhlIGluZmVyaW9yLiAgKi8KKy0gIHN0cnVjdCBpMzg2X2RlYnVnX3JlZ19zdGF0ZSBs b2NhbF9zdGF0ZSA9IGRyX21pcnJvcjsKKysgIHN0cnVjdCBpMzg2X2RlYnVnX3JlZ19zdGF0ZSBs b2NhbF9zdGF0ZSA9ICpzdGF0ZTsKKyAgIGludCByZXR2YWwgPSBpMzg2X3JlbW92ZV9hbGlnbmVk X3dhdGNocG9pbnQgKCZsb2NhbF9zdGF0ZSwKKyAJCQkJCSAgICAgICBhZGRyLCBsZW5fcncpOwor IAorQEAgLTcyMyw3ICs4MDYsNyBAQCBpMzg2X3JlbW92ZV9od19icmVha3BvaW50IChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCwKKyAgICAgaTM4Nl91cGRhdGVfaW5mZXJpb3JfZGVidWdfcmVncyAo JmxvY2FsX3N0YXRlKTsKKyAKKyAgIGlmIChtYWludF9zaG93X2RyKQorLSAgICBpMzg2X3Nob3df ZHIgKCZkcl9taXJyb3IsICJyZW1vdmVfaHdicCIsIGFkZHIsIDEsIGh3X2V4ZWN1dGUpOworKyAg ICBpMzg2X3Nob3dfZHIgKHN0YXRlLCAicmVtb3ZlX2h3YnAiLCBhZGRyLCAxLCBod19leGVjdXRl KTsKKyAKKyAgIHJldHVybiByZXR2YWw7CisgfQorQEAgLTc4OCw2ICs4NzEsMTAgQEAgaTM4Nl91 c2Vfd2F0Y2hwb2ludHMgKHN0cnVjdCB0YXJnZXRfb3BzICp0KQogICAgdC0+dG9fcmVtb3ZlX3dh dGNocG9pbnQgPSBpMzg2X3JlbW92ZV93YXRjaHBvaW50OwogICAgdC0+dG9faW5zZXJ0X2h3X2Jy ZWFrcG9pbnQgPSBpMzg2X2luc2VydF9od19icmVha3BvaW50OwogICAgdC0+dG9fcmVtb3ZlX2h3 X2JyZWFrcG9pbnQgPSBpMzg2X3JlbW92ZV9od19icmVha3BvaW50OwpAQCAtNTM1NSw1MyArNTY1 OCwzNzIgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2kzODYtbmF0LmMKICB9CiAg CiAgdm9pZAotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2kzODYtbmF0LmgKLT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2kzODYtbmF0LmgJMjAxMS0w MS0wOSAwNDowODo1Ni4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi9pMzg2LW5hdC5oCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCi1AQCAtNzgs NiArNzgsMjggQEAgc3RydWN0IGkzODZfZHJfbG93X3R5cGUKK2RpZmYgLS1naXQgYS9nZGIvaTM4 Ni10ZGVwLmMgYi9nZGIvaTM4Ni10ZGVwLmMKK2luZGV4IGE0ZTNhMjIuLjFlM2UyOWIgMTAwNjQ0 CistLS0gYS9nZGIvaTM4Ni10ZGVwLmMKKysrKyBiL2dkYi9pMzg2LXRkZXAuYworQEAgLTYwLDgg KzYwLDE0IEBACisgI2luY2x1ZGUgImZlYXR1cmVzL2kzODYvaTM4Ni1hdnguYyIKKyAjaW5jbHVk ZSAiZmVhdHVyZXMvaTM4Ni9pMzg2LW1teC5jIgogIAotIGV4dGVybiBzdHJ1Y3QgaTM4Nl9kcl9s b3dfdHlwZSBpMzg2X2RyX2xvdzsKKysjaW5jbHVkZSAic3RhcC1wcm9iZS5oIgorICNpbmNsdWRl ICJheC5oIgorICNpbmNsdWRlICJheC1nZGIuaCIKKysjaW5jbHVkZSAidXNlci1yZWdzLmgiCisr I2luY2x1ZGUgImNsaS9jbGktdXRpbHMuaCIKKysjaW5jbHVkZSAiZXhwcmVzc2lvbi5oIgorKyNp bmNsdWRlICJwYXJzZXItZGVmcy5oIgorKyNpbmNsdWRlIDxjdHlwZS5oPgorIAorIC8qIFJlZ2lz dGVyIG5hbWVzLiAgKi8KICAKLSsvKiBUaGUgbnVtYmVyIG9mIGRlYnVnIGFkZHJlc3MgcmVnaXN0 ZXJzLiAgKi8KLSsjZGVmaW5lIERSX05BRERSCTQKK0BAIC03MjQ1LDYgKzcyNTEsMzEyIEBAIGkz ODZfdmFsaWRhdGVfdGRlc2NfcCAoc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCwKKyAgIHJldHVy biB2YWxpZF9wOworIH0KKyAKKytpbnQKKytpMzg2X3N0YXBfaXNfc2luZ2xlX29wZXJhbmQgKHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBjb25zdCBjaGFyICpzKQorK3sKKysgIHJldHVybiAoKnMg PT0gJyQnIC8qIExpdGVyYWwgbnVtYmVyLiAgKi8KKysJICB8fCAoaXNkaWdpdCAoKnMpICYmIHNb MV0gPT0gJygnICYmIHNbMl0gPT0gJyUnKSAvKiBEaXNwbGFjZW1lbnQuICAqLworKwkgIHx8ICgq cyA9PSAnKCcgJiYgc1sxXSA9PSAnJScpIC8qIFJlZ2lzdGVyIGluZGlyZWN0aW9uLiAgKi8KKysJ ICB8fCAoKnMgPT0gJyUnICYmIGlzYWxwaGEgKHNbMV0pKSk7IC8qIFJlZ2lzdGVyIGFjY2Vzcy4g ICovCisrfQogKwotKy8qIENvcHkgb2YgaGFyZHdhcmUgZGVidWcgcmVnaXN0ZXJzIGZvciBwZXJm b3JtYW5jZSByZWFzb25zLiAgKi8KKytpbnQKKytpMzg2X3N0YXBfcGFyc2Vfc3BlY2lhbF90b2tl biAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisrCQkJICAgICAgIHN0cnVjdCBzdGFwX3BhcnNl X2luZm8gKnApCisreworKyAgY29uc3QgY2hhciAqcyA9IHAtPmFyZzsKICsKLStzdHJ1Y3QgaTM4 Nl9kcl9taXJyb3IKLSsgIHsKLSsgICAgLyogTWlycm9yIHRoZSBpbmZlcmlvcidzIERSaSByZWdp c3RlcnMuICBXZSBrZWVwIHRoZSBzdGF0dXMgYW5kCi0rICAgICAgIGNvbnRyb2wgcmVnaXN0ZXJz IHNlcGFyYXRlZCBiZWNhdXNlIHRoZXkgZG9uJ3QgaG9sZCBhZGRyZXNzZXMuICAqLwotKyAgICBD T1JFX0FERFIgYWRkcltEUl9OQUREUl07CisrICAvKiBJbiBvcmRlciB0byBwYXJzZSBzcGVjaWFs IHRva2Vucywgd2UgdXNlIGEgc3RhdGUtbWFjaGluZSB0aGF0IGdvCisrICAgICB0aHJvdWdoIGV2 ZXJ5IGtub3duIHRva2VuIGFuZCB0cnkgdG8gZ2V0IGEgbWF0Y2guICAqLworKyAgZW51bQorKyAg ICB7CisrICAgICAgVFJJUExFVCwKKysgICAgICBUSFJFRV9BUkdfRElTUExBQ0VNRU5ULAorKyAg ICAgIERPTkUKKysgICAgfSBjdXJyZW50X3N0YXRlOwogKwotKyAgICAvKiBBbGwgdGhlIEFERFIg aGFyZHdhcmUgcmVnaXN0ZXJzIGhhdmUgYmVlbiB3cml0dGVuIGF0IGxlYXN0IG9uY2UuICAqLwot KyAgICB1bnNpZ25lZCBhZGRyX3ByZXNldCA6IDE7CisrICBjdXJyZW50X3N0YXRlID0gVFJJUExF VDsKICsKLSsgICAgLyogUmVmZXJlbmNlIGNvdW50cyBmb3IgZWFjaCBkZWJ1ZyByZWdpc3Rlci4g ICovCi0rICAgIGludCByZWZfY291bnRbRFJfTkFERFJdOworKyAgLyogVGhlIHNwZWNpYWwgdG9r ZW5zIHRvIGJlIHBhcnNlZCBoZXJlIGFyZToKICsKLSsgICAgdW5zaWduZWQgbG9uZyBzdGF0dXMs IGNvbnRyb2w7Ci0rICB9OworKyAgICAgLSBgcmVnaXN0ZXIgYmFzZSArIChyZWdpc3RlciBpbmRl eCAqIHNpemUpICsgb2Zmc2V0JywgYXMgcmVwcmVzZW50ZWQKKysgICAgIGluIGAoJXJjeCwlcmF4 LDgpJywgb3IgYFtPRkZTRVRdKEJBU0VfUkVHLElOREVYX1JFR1ssU0laRV0pJy4KICsKLStleHRl cm4gc3RydWN0IGkzODZfZHJfbWlycm9yICppMzg2X2RyX21pcnJvcl9nZXQgKHZvaWQpOworKyAg ICAgLSBPcGVyYW5kcyBvZiB0aGUgZm9ybSBgLTgrMysxKCVyYnApJywgd2hpY2ggbXVzdCBiZSBp bnRlcnByZXRlZCBhcworKyAgICAgYCooLTggKyAzIC0gMSArICh2b2lkICopICRlYXgpJy4gICov CiArCi0gLyogVXNlIHRoaXMgZnVuY3Rpb24gdG8gc2V0IGkzODZfZHJfbG93IGRlYnVnX3JlZ2lz dGVyX2xlbmd0aCBmaWVsZAotICAgIHJhdGhlciB0aGFuIHNldHRpbmcgaXQgZGlyZWN0bHkgdG8g Y2hlY2sgdGhhdCB0aGUgbGVuZ3RoIGlzIG9ubHkKLSAgICBzZXQgb25jZS4gIEl0IGFsc28gZW5h YmxlcyB0aGUgJ21haW50IHNldC9zaG93IHNob3ctZGVidWctcmVncycgCi1JbmRleDogZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvaW5mcnVuLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIw MTEwNzIyLm9yaWcvZ2RiL2luZnJ1bi5jCTIwMTEtMDctMjIgMDE6NDY6MDkuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvaW5mcnVuLmMJMjAxMS0wNy0yOSAyMjo1 MjowMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC01NSw2ICs1NSw4IEBACi0gI2luY2x1ZGUgImppdC5o IgotICNpbmNsdWRlICJ0cmFjZXBvaW50LmgiCisrICB3aGlsZSAoY3VycmVudF9zdGF0ZSAhPSBE T05FKQorKyAgICB7CisrICAgICAgY29uc3QgY2hhciAqcyA9IHAtPmFyZzsKKysKKysgICAgICBz d2l0Y2ggKGN1cnJlbnRfc3RhdGUpCisrCXsKKysJY2FzZSBUUklQTEVUOgorKwkgICAgeworKwkg ICAgICBpZiAoaXNkaWdpdCAoKnMpIHx8ICpzID09ICctJyB8fCAqcyA9PSAnKycpCisrCQl7Cisr CQkgIGludCBnb3RfbWludXNbM107CisrCQkgIGludCBpOworKwkJICBsb25nIGRpc3BsYWNlbWVu dHNbM107CisrCQkgIGNvbnN0IGNoYXIgKnN0YXJ0OworKwkJICBjaGFyICpyZWduYW1lOworKwkJ ICBpbnQgbGVuOworKwkJICBzdHJ1Y3Qgc3Rva2VuIHN0cjsKKysKKysJCSAgZ290X21pbnVzWzBd ID0gMDsKKysJCSAgaWYgKCpzID09ICcrJykKKysJCSAgICArK3M7CisrCQkgIGVsc2UgaWYgKCpz ID09ICctJykKKysJCSAgICB7CisrCQkgICAgICArK3M7CisrCQkgICAgICBnb3RfbWludXNbMF0g PSAxOworKwkJICAgIH0KKysKKysJCSAgZGlzcGxhY2VtZW50c1swXSA9IHN0cnRvbCAocywgKGNo YXIgKiopICZzLCAxMCk7CisrCisrCQkgIGlmICgqcyAhPSAnKycgJiYgKnMgIT0gJy0nKQorKwkJ ICAgIC8qIFdlIGFyZSBub3QgZGVhbGluZyB3aXRoIGEgdHJpcGxldC4gICovCisrCQkgICAgYnJl YWs7CisrCisrCQkgIGdvdF9taW51c1sxXSA9IDA7CisrCQkgIGlmICgqcyA9PSAnKycpCisrCQkg ICAgKytzOworKwkJICBlbHNlCisrCQkgICAgeworKwkJICAgICAgKytzOworKwkJICAgICAgZ290 X21pbnVzWzFdID0gMTsKKysJCSAgICB9CisrCisrCQkgIGRpc3BsYWNlbWVudHNbMV0gPSBzdHJ0 b2wgKHMsIChjaGFyICoqKSAmcywgMTApOworKworKwkJICBpZiAoKnMgIT0gJysnICYmICpzICE9 ICctJykKKysJCSAgICAvKiBXZSBhcmUgbm90IGRlYWxpbmcgd2l0aCBhIHRyaXBsZXQuICAqLwor KwkJICAgIGJyZWFrOworKworKwkJICBnb3RfbWludXNbMl0gPSAwOworKwkJICBpZiAoKnMgPT0g JysnKQorKwkJICAgICsrczsKKysJCSAgZWxzZQorKwkJICAgIHsKKysJCSAgICAgICsrczsKKysJ CSAgICAgIGdvdF9taW51c1syXSA9IDE7CisrCQkgICAgfQorKworKwkJICBkaXNwbGFjZW1lbnRz WzJdID0gc3RydG9sIChzLCAoY2hhciAqKikgJnMsIDEwKTsKKysKKysJCSAgaWYgKCpzICE9ICco JyB8fCBzWzFdICE9ICclJykKKysJCSAgICBicmVhazsKKysKKysJCSAgcyArPSAyOworKwkJICBz dGFydCA9IHM7CisrCisrCQkgIHdoaWxlIChpc2FsbnVtICgqcykpCisrCQkgICAgKytzOworKwor KwkJICBpZiAoKnMrKyAhPSAnKScpCisrCQkgICAgYnJlYWs7CisrCisrCQkgIGxlbiA9IHMgLSBz dGFydDsKKysJCSAgcmVnbmFtZSA9IGFsbG9jYSAobGVuICsgMSk7CisrCisrCQkgIHN0cm5jcHkg KHJlZ25hbWUsIHN0YXJ0LCBsZW4pOworKwkJICByZWduYW1lW2xlbl0gPSAnXDAnOworKworKwkJ ICBpZiAodXNlcl9yZWdfbWFwX25hbWVfdG9fcmVnbnVtIChnZGJhcmNoLAorKwkJCQkJCSAgIHJl Z25hbWUsIGxlbikgPT0gLTEpCisrCQkgICAgZXJyb3IgKF8oIkludmFsaWQgcmVnaXN0ZXIgbmFt ZSBgJXMnICIKKysJCQkgICAgICJvbiBleHByZXNzaW9uIGAlcycuIiksCisrCQkJICAgcmVnbmFt ZSwgcC0+c2F2ZWRfYXJnKTsKKysKKysJCSAgZm9yIChpID0gMDsgaSA8IDM7IGkrKykKKysJCSAg ICB7CisrCQkgICAgICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfTE9ORyk7CisrCQkgICAgICB3 cml0ZV9leHBfZWx0X3R5cGUKKysJCQkoYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9s b25nKTsKKysJCSAgICAgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAoZGlzcGxhY2VtZW50c1tpXSk7 CisrCQkgICAgICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfTE9ORyk7CisrCQkgICAgICBpZiAo Z290X21pbnVzW2ldKQorKwkJCXdyaXRlX2V4cF9lbHRfb3Bjb2RlIChVTk9QX05FRyk7CisrCQkg ICAgfQorKworKwkJICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfUkVHSVNURVIpOworKwkJICBz dHIucHRyID0gcmVnbmFtZTsKKysJCSAgc3RyLmxlbmd0aCA9IGxlbjsKKysJCSAgd3JpdGVfZXhw X3N0cmluZyAoc3RyKTsKKysJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKE9QX1JFR0lTVEVSKTsK KysJCSAgCisrCQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChVTk9QX0NBU1QpOworKwkJICB3cml0 ZV9leHBfZWx0X3R5cGUgKGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fZGF0YV9wdHIp OworKwkJICB3cml0ZV9leHBfZWx0X29wY29kZSAoVU5PUF9DQVNUKTsKKysKKysJCSAgd3JpdGVf ZXhwX2VsdF9vcGNvZGUgKEJJTk9QX0FERCk7CisrCQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChC SU5PUF9BREQpOworKwkJICB3cml0ZV9leHBfZWx0X29wY29kZSAoQklOT1BfQUREKTsKKysKKysJ CSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKFVOT1BfQ0FTVCk7CisrCQkgIHdyaXRlX2V4cF9lbHRf dHlwZSAobG9va3VwX3BvaW50ZXJfdHlwZSAocC0+YXJnX3R5cGUpKTsKKysJCSAgd3JpdGVfZXhw X2VsdF9vcGNvZGUgKFVOT1BfQ0FTVCk7CisrCisrCQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChV Tk9QX0lORCk7CisrCisrCQkgIHAtPmFyZyA9IHM7CisrCisrCQkgIHJldHVybiAxOworKwkJfQor KwkgICAgICBicmVhazsKKysJICAgIH0KKysJY2FzZSBUSFJFRV9BUkdfRElTUExBQ0VNRU5UOgor KwkgICAgeworKwkgICAgICBpZiAoaXNkaWdpdCAoKnMpIHx8ICpzID09ICcoJyB8fCAqcyA9PSAn LScgfHwgKnMgPT0gJysnKQorKwkJeworKwkJICBpbnQgb2Zmc2V0X21pbnVzID0gMDsKKysJCSAg bG9uZyBvZmZzZXQgPSAwOworKwkJICBpbnQgc2l6ZV9taW51cyA9IDA7CisrCQkgIGxvbmcgc2l6 ZSA9IDA7CisrCQkgIGNvbnN0IGNoYXIgKnN0YXJ0OworKwkJICBjaGFyICpiYXNlOworKwkJICBp bnQgbGVuX2Jhc2U7CisrCQkgIGNoYXIgKmluZGV4OworKwkJICBpbnQgbGVuX2luZGV4OworKwkJ ICBzdHJ1Y3Qgc3Rva2VuIGJhc2VfdG9rZW4sIGluZGV4X3Rva2VuOworKworKwkJICBpZiAoKnMg PT0gJysnKQorKwkJICAgICsrczsKKysJCSAgZWxzZSBpZiAoKnMgPT0gJy0nKQorKwkJICAgIHsK KysJCSAgICAgICsrczsKKysJCSAgICAgIG9mZnNldF9taW51cyA9IDE7CisrCQkgICAgfQorKwor KwkJICBpZiAob2Zmc2V0X21pbnVzICYmICFpc2RpZ2l0ICgqcykpCisrCQkgICAgYnJlYWs7Cisr CisrCQkgIGlmIChpc2RpZ2l0ICgqcykpCisrCQkgICAgb2Zmc2V0ID0gc3RydG9sIChzLCAoY2hh ciAqKikgJnMsIDEwKTsKKysKKysJCSAgaWYgKCpzICE9ICcoJyB8fCBzWzFdICE9ICclJykKKysJ CSAgICBicmVhazsKKysKKysJCSAgcyArPSAyOworKwkJICBzdGFydCA9IHM7CisrCisrCQkgIHdo aWxlIChpc2FsbnVtICgqcykpCisrCQkgICAgKytzOworKworKwkJICBpZiAoKnMgIT0gJywnIHx8 IHNbMV0gIT0gJyUnKQorKwkJICAgIGJyZWFrOworKworKwkJICBsZW5fYmFzZSA9IHMgLSBzdGFy dDsKKysJCSAgYmFzZSA9IGFsbG9jYSAobGVuX2Jhc2UgKyAxKTsKKysJCSAgc3RybmNweSAoYmFz ZSwgc3RhcnQsIGxlbl9iYXNlKTsKKysJCSAgYmFzZVtsZW5fYmFzZV0gPSAnXDAnOworKworKwkJ ICBpZiAodXNlcl9yZWdfbWFwX25hbWVfdG9fcmVnbnVtIChnZGJhcmNoLAorKwkJCQkJCSAgIGJh c2UsIGxlbl9iYXNlKSA9PSAtMSkKKysJCSAgICBlcnJvciAoXygiSW52YWxpZCByZWdpc3RlciBu YW1lIGAlcycgIgorKwkJCSAgICAgIm9uIGV4cHJlc3Npb24gYCVzJy4iKSwKKysJCQkgICBiYXNl LCBwLT5zYXZlZF9hcmcpOworKworKwkJICBzICs9IDI7CisrCQkgIHN0YXJ0ID0gczsKKysKKysJ CSAgd2hpbGUgKGlzYWxudW0gKCpzKSkKKysJCSAgICArK3M7CisrCisrCQkgIGxlbl9pbmRleCA9 IHMgLSBzdGFydDsKKysJCSAgaW5kZXggPSBhbGxvY2EgKGxlbl9pbmRleCArIDEpOworKwkJICBz dHJuY3B5IChpbmRleCwgc3RhcnQsIGxlbl9pbmRleCk7CisrCQkgIGluZGV4W2xlbl9pbmRleF0g PSAnXDAnOworKworKwkJICBpZiAodXNlcl9yZWdfbWFwX25hbWVfdG9fcmVnbnVtIChnZGJhcmNo LAorKwkJCQkJCSAgIGluZGV4LCBsZW5faW5kZXgpID09IC0xKQorKwkJICAgIGVycm9yIChfKCJJ bnZhbGlkIHJlZ2lzdGVyIG5hbWUgYCVzJyAiCisrCQkJICAgICAib24gZXhwcmVzc2lvbiBgJXMn LiIpLAorKwkJCSAgIGluZGV4LCBwLT5zYXZlZF9hcmcpOworKworKwkJICBpZiAoKnMgIT0gJywn ICYmICpzICE9ICcpJykKKysJCSAgICBicmVhazsKKysKKysJCSAgaWYgKCpzID09ICcsJykKKysJ CSAgICB7CisrCQkgICAgICArK3M7CisrCQkgICAgICBpZiAoKnMgPT0gJysnKQorKwkJCSsrczsK KysJCSAgICAgIGVsc2UgaWYgKCpzID09ICctJykKKysJCQl7CisrCQkJICArK3M7CisrCQkJICBz aXplX21pbnVzID0gMTsKKysJCQl9CisrCisrCQkgICAgICBzaXplID0gc3RydG9sIChzLCAoY2hh ciAqKikgJnMsIDEwKTsKKysKKysJCSAgICAgIGlmICgqcyAhPSAnKScpCisrCQkJYnJlYWs7Cisr CQkgICAgfQorKworKwkJICArK3M7CisrCisrCQkgIGlmIChvZmZzZXQpCisrCQkgICAgeworKwkJ ICAgICAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKE9QX0xPTkcpOworKwkJICAgICAgd3JpdGVfZXhw X2VsdF90eXBlCisrCQkJKGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fbG9uZyk7Cisr CQkgICAgICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKG9mZnNldCk7CisrCQkgICAgICB3cml0ZV9l eHBfZWx0X29wY29kZSAoT1BfTE9ORyk7CisrCQkgICAgICBpZiAob2Zmc2V0X21pbnVzKQorKwkJ CXdyaXRlX2V4cF9lbHRfb3Bjb2RlIChVTk9QX05FRyk7CisrCQkgICAgfQorKworKwkJICB3cml0 ZV9leHBfZWx0X29wY29kZSAoT1BfUkVHSVNURVIpOworKwkJICBiYXNlX3Rva2VuLnB0ciA9IGJh c2U7CisrCQkgIGJhc2VfdG9rZW4ubGVuZ3RoID0gbGVuX2Jhc2U7CisrCQkgIHdyaXRlX2V4cF9z dHJpbmcgKGJhc2VfdG9rZW4pOworKwkJICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfUkVHSVNU RVIpOworKwkJICAKKysJCSAgaWYgKG9mZnNldCkKKysJCSAgICB3cml0ZV9leHBfZWx0X29wY29k ZSAoQklOT1BfQUREKTsKKysKKysJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKE9QX1JFR0lTVEVS KTsKKysJCSAgaW5kZXhfdG9rZW4ucHRyID0gaW5kZXg7CisrCQkgIGluZGV4X3Rva2VuLmxlbmd0 aCA9IGxlbl9pbmRleDsKKysJCSAgd3JpdGVfZXhwX3N0cmluZyAoaW5kZXhfdG9rZW4pOworKwkJ ICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfUkVHSVNURVIpOworKworKwkJICBpZiAoc2l6ZSkK KysJCSAgICB7CisrCQkgICAgICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfTE9ORyk7CisrCQkg ICAgICB3cml0ZV9leHBfZWx0X3R5cGUKKysJCQkoYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVp bHRpbl9sb25nKTsKKysJCSAgICAgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAoc2l6ZSk7CisrCQkg ICAgICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfTE9ORyk7CisrCQkgICAgICBpZiAoc2l6ZV9t aW51cykKKysJCQl3cml0ZV9leHBfZWx0X29wY29kZSAoVU5PUF9ORUcpOworKwkJICAgICAgd3Jp dGVfZXhwX2VsdF9vcGNvZGUgKEJJTk9QX01VTCk7CisrCQkgICAgfQorKworKwkJICB3cml0ZV9l eHBfZWx0X29wY29kZSAoQklOT1BfQUREKTsKKysKKysJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUg KFVOT1BfQ0FTVCk7CisrCQkgIHdyaXRlX2V4cF9lbHRfdHlwZSAobG9va3VwX3BvaW50ZXJfdHlw ZSAocC0+YXJnX3R5cGUpKTsKKysJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKFVOT1BfQ0FTVCk7 CisrCisrCQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChVTk9QX0lORCk7CisrCisrCQkgIHAtPmFy ZyA9IHM7CisrCisrCQkgIHJldHVybiAxOworKwkJfQorKwkgICAgICBicmVhazsKKysJICAgIH0K KysJfQorKworKyAgICAgIC8qIEFkdmFuY2luZyB0byB0aGUgbmV4dCBzdGF0ZS4gICovCisrICAg ICAgKytjdXJyZW50X3N0YXRlOworKyAgICB9CisrCisrICByZXR1cm4gMDsKKyt9CisrCisgDAor IHN0YXRpYyBzdHJ1Y3QgZ2RiYXJjaCAqCisgaTM4Nl9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJh cmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2hfbGlzdCAqYXJjaGVzKQorZGlmZiAtLWdpdCBh L2dkYi9pMzg2LXRkZXAuaCBiL2dkYi9pMzg2LXRkZXAuaAoraW5kZXggZGUxMWY2OC4uMmE4NGFk YyAxMDA2NDQKKy0tLSBhL2dkYi9pMzg2LXRkZXAuaAorKysrIGIvZ2RiL2kzODYtdGRlcC5oCitA QCAtMzgwLDYgKzM4MCwxNSBAQCBleHRlcm4gdm9pZCBpMzg2X3N2cjRfaW5pdF9hYmkgKHN0cnVj dCBnZGJhcmNoX2luZm8sIHN0cnVjdCBnZGJhcmNoICopOworIAorIGV4dGVybiBpbnQgaTM4Nl9w cm9jZXNzX3JlY29yZCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBDT1JFX0FERFIgYWRk cik7CisrCisrLyogU3lzdGVtVGFwIHJlbGF0ZWQgZnVuY3Rpb25zLiAgKi8KKysKKytleHRlcm4g aW50IGkzODZfc3RhcF9pc19zaW5nbGVfb3BlcmFuZCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gs CisrCQkJCQljb25zdCBjaGFyICpzKTsKKysKKytleHRlcm4gaW50IGkzODZfc3RhcF9wYXJzZV9z cGVjaWFsX3Rva2VuIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKysJCQkJCSAgc3RydWN0IHN0 YXBfcGFyc2VfaW5mbyAqcCk7CisrCisgDAorIAorIC8qIEZ1bmN0aW9ucyBhbmQgdmFyaWFibGVz IGV4cG9ydGVkIGZyb20gaTM4NmJzZC10ZGVwLmMuICAqLworZGlmZiAtLWdpdCBhL2dkYi9pbmZy dW4uYyBiL2dkYi9pbmZydW4uYworaW5kZXggNWEwZjFkMi4uYjJkMzUwZCAxMDA2NDQKKy0tLSBh L2dkYi9pbmZydW4uYworKysrIGIvZ2RiL2luZnJ1bi5jCitAQCAtNTcsNiArNTcsOCBAQAogICNp bmNsdWRlICJjb250aW51YXRpb25zLmgiCisgI2luY2x1ZGUgImludGVycHMuaCIKKyAjaW5jbHVk ZSAic2tpcC5oIgogKyNpbmNsdWRlICJzdGFwLXByb2JlLmgiCiArI2luY2x1ZGUgIm9iamZpbGVz LmgiCiAgCiAgLyogUHJvdG90eXBlcyBmb3IgbG9jYWwgZnVuY3Rpb25zICovCiAgCi1AQCAtMjM0 MSw3ICsyMzQzLDcgQEAgc3RhdGljIHZvaWQgaGFuZGxlX3N0ZXBfaW50b19mdW5jdGlvbiAocwor QEAgLTIzODEsNyArMjM4Myw3IEBAIHN0YXRpYyB2b2lkIGhhbmRsZV9zdGVwX2ludG9fZnVuY3Rp b24gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAogIHN0YXRpYyB2b2lkIGhhbmRsZV9zdGVwX2lu dG9fZnVuY3Rpb25fYmFja3dhcmQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAogIAkJCQkJCXN0 cnVjdCBleGVjdXRpb25fY29udHJvbF9zdGF0ZSAqZWNzKTsKICBzdGF0aWMgdm9pZCBjaGVja19l eGNlcHRpb25fcmVzdW1lIChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKiwKQEAgLTU0 MTAsNyArNjAzMiw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9pbmZydW4uYwog IAogIHN0YXRpYyB2b2lkIHN0b3Bfc3RlcHBpbmcgKHN0cnVjdCBleGVjdXRpb25fY29udHJvbF9z dGF0ZSAqZWNzKTsKICBzdGF0aWMgdm9pZCBwcmVwYXJlX3RvX3dhaXQgKHN0cnVjdCBleGVjdXRp b25fY29udHJvbF9zdGF0ZSAqZWNzKTsKLUBAIC00Mjg1LDkgKzQyODcsMTcgQEAgcHJvY2Vzc19l dmVudF9zdG9wX3Rlc3Q6CitAQCAtNDQxOSw5ICs0NDIxLDE3IEBAIHByb2Nlc3NfZXZlbnRfc3Rv cF90ZXN0OgogIAogIAlpZiAod2hhdC5pc19sb25nam1wKQogIAkgIHsKQEAgLTU0MzEsNyArNjA1 Myw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9pbmZydW4uYwogIAkgICAgICB7 CiAgCQlpZiAoZGVidWdfaW5mcnVuKQogIAkJICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRs b2csCi1AQCAtNDMwNSwxMiArNDMxNSw3IEBAIHByb2Nlc3NfZXZlbnRfc3RvcF90ZXN0OgorQEAg LTQ0MzksMTIgKzQ0NDksNyBAQCBwcm9jZXNzX2V2ZW50X3N0b3BfdGVzdDoKICAJICAgIGluc2Vy dF9sb25nam1wX3Jlc3VtZV9icmVha3BvaW50IChnZGJhcmNoLCBqbXBfYnVmX3BjKTsKICAJICB9 CiAgCWVsc2UKQEAgLTU0NDUsNyArNjA2Nyw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi9pbmZydW4uYwogIAlrZWVwX2dvaW5nIChlY3MpOwogIAlyZXR1cm47CiAgCi1AQCAtNTQy MywxNSArNTQyOCw2NSBAQCBpbnNlcnRfZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50IChzdHJ1 CitAQCAtNTUyNiwxNSArNTUzMSw2NSBAQCBpbnNlcnRfZXhjZXB0aW9uX3Jlc3VtZV9icmVha3Bv aW50IChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwLAogICAgICB9CiAgfQogIApAQCAtNTUxMiw3ICs2 MTM0LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2luZnJ1bi5jCiAgCiAgICBU UllfQ0FUQ0ggKGUsIFJFVFVSTl9NQVNLX0VSUk9SKQogICAgICB7Ci1AQCAtNjQzNCw3ICs2NDg5 LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBsdmFsX2Z1bmNzIHNpZ2luZm9fdgorQEAgLTY1NjUs NyArNjYyMCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbHZhbF9mdW5jcyBzaWdpbmZvX3ZhbHVl X2Z1bmNzID0KICAgICBpZiB0aGVyZSdzIG5vIG9iamVjdCBhdmFpbGFibGUuICAqLwogIAogIHN0 YXRpYyBzdHJ1Y3QgdmFsdWUgKgpAQCAtNTUyMiw3ICs2MTQ0LDcgQEAgSW5kZXg6IGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL2luZnJ1bi5jCiAgewogICAgaWYgKHRhcmdldF9oYXNfc3RhY2sKICAg ICAgICAmJiAhcHRpZF9lcXVhbCAoaW5mZXJpb3JfcHRpZCwgbnVsbF9wdGlkKQotQEAgLTY5Mjks NiArNjk4NSwxNSBAQCBzaG93X3NjaGVkdWxlX211bHRpcGxlIChzdHJ1Y3QgdWlfZmlsZSAqCitA QCAtNzA2MCw2ICs3MTE2LDE1IEBAIHNob3dfc2NoZWR1bGVfbXVsdGlwbGUgKHN0cnVjdCB1aV9m aWxlICpmaWxlLCBpbnQgZnJvbV90dHksCiAgCQkJICAgICJvZiBhbGwgcHJvY2Vzc2VzIGlzICVz LlxuIiksIHZhbHVlKTsKICB9CiAgCkBAIC01NTM4LDcgKzYxNjAsNyBAQCBJbmRleDogZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvaW5mcnVuLmMKICB2b2lkCiAgX2luaXRpYWxpemVfaW5mcnVuICh2 b2lkKQogIHsKLUBAIC03MjA0LDcgKzcyNjksNyBAQCBUZWxscyBnZGIgd2hldGhlciB0byBkZXRh Y2ggdGhlIGNoaWxkIG9mCitAQCAtNzM0OCw3ICs3NDEzLDcgQEAgZW5hYmxlZCBieSBkZWZhdWx0 IG9uIHNvbWUgcGxhdGZvcm1zLiIpLAogICAgICAgdmFsdWUgd2l0aCBhIHZvaWQgdHlwZWQgdmFs dWUsIGFuZCB3aGVuIHdlIGdldCBoZXJlLCBnZGJhcmNoCiAgICAgICBpc24ndCBpbml0aWFsaXpl ZCB5ZXQuICBBdCB0aGlzIHBvaW50LCB3ZSdyZSBxdWl0ZSBzdXJlIHRoZXJlCiAgICAgICBpc24n dCBhbm90aGVyIGNvbnZlbmllbmNlIHZhcmlhYmxlIG9mIHRoZSBzYW1lIG5hbWUuICAqLwpAQCAt NTU0NywxMjkgKzYxNjksMjE3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9pbmZy dW4uYwogIAogICAgYWRkX3NldHNob3dfYm9vbGVhbl9jbWQgKCJvYnNlcnZlciIsIG5vX2NsYXNz LAogIAkJCSAgICZvYnNlcnZlcl9tb2RlXzEsIF8oIlwKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi9saW5lc3BlYy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5v cmlnL2dkYi9saW5lc3BlYy5jCTIwMTEtMDctMDUgMjI6MzA6MTkuMDAwMDAwMDAwICswMjAwCi0r KysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvbGluZXNwZWMuYwkyMDExLTA3LTI5IDIyOjUyOjAy LjAwMDAwMDAwMCArMDIwMAotQEAgLTQzLDYgKzQzLDcgQEAKLSAjaW5jbHVkZSAiYXJjaC11dGls cy5oIgotICNpbmNsdWRlIDxjdHlwZS5oPgorZGlmZiAtLWdpdCBhL2dkYi9saW5lc3BlYy5jIGIv Z2RiL2xpbmVzcGVjLmMKK2luZGV4IDg1MjE4NTEuLjU2YTgzN2MgMTAwNjQ0CistLS0gYS9nZGIv bGluZXNwZWMuYworKysrIGIvZ2RiL2xpbmVzcGVjLmMKK0BAIC00NSw2ICs0NSw3IEBACiAgI2lu Y2x1ZGUgImNsaS9jbGktdXRpbHMuaCIKKyAjaW5jbHVkZSAiZmlsZW5hbWVzLmgiCisgI2luY2x1 ZGUgImFkYS1sYW5nLmgiCiArI2luY2x1ZGUgInN0YXAtcHJvYmUuaCIKICAKLSAvKiBQcm90b3R5 cGVzIGZvciBsb2NhbCBmdW5jdGlvbnMuICAqLwotIAotQEAgLTc4Myw2ICs3ODQsNyBAQCBrZWVw X25hbWVfaW5mbyAoY2hhciAqcCwgaW50IG9uX2JvdW5kYXJ5CisgdHlwZWRlZiBzdHJ1Y3Qgc3lt dGFiICpzeW10YWJfcDsKKyBERUZfVkVDX1AgKHN5bXRhYl9wKTsKK0BAIC04MDQsNiArODA1LDcg QEAga2VlcF9uYW1lX2luZm8gKGNoYXIgKnAsIGludCBvbl9ib3VuZGFyeSkKICAgICBQQyByZXR1 cm5lZCBpcyAwLgogICAgIEZJTEU6RlVOQ1RJT04gLS0gbGlrZXdpc2UsIGJ1dCBwcmVmZXIgZnVu Y3Rpb25zIGluIHRoYXQgZmlsZS4KICAgICAqRVhQUiAtLSBsaW5lIGluIHdoaWNoIGFkZHJlc3Mg RVhQUiBhcHBlYXJzLgotKyAgIHByb2JlOltPQkpGSUxFOl1bUFJPVklERVI6XU5BTUUgLS0gYSBz eXN0ZW10YXAgc3RhdGljIHByb2JlCisrICAgLXAgW09CSkZJTEU6XVtQUk9WSURFUjpdTkFNRSAt LSBhIHN5c3RlbXRhcCBzdGF0aWMgcHJvYmUKICAKICAgICBUaGlzIG1heSBhbGwgYmUgZm9sbG93 ZWQgYnkgYW4gImlmIEVYUFIiLCB3aGljaCB3ZSBpZ25vcmUuCiAgCi1AQCAtODUxLDYgKzg1Myw5 IEBAIGRlY29kZV9saW5lXzEgKGNoYXIgKiphcmdwdHIsIGludCBmdW5maXIKLSAgIGlmICgqKmFy Z3B0ciA9PSAnKicpCi0gICAgIHJldHVybiBkZWNvZGVfaW5kaXJlY3QgKGFyZ3B0cik7CitAQCAt ODc0LDYgKzg3Niw5IEBAIGRlY29kZV9saW5lX2ludGVybmFsIChzdHJ1Y3QgbGluZXNwZWNfc3Rh dGUgKnNlbGYsIGNoYXIgKiphcmdwdHIpCisgICAgICAgcmV0dXJuIGRlY29kZV9pbmRpcmVjdCAo c2VsZiwgYXJncHRyKTsKKyAgICAgfQogIAotKyAgaWYgKHN0cm5jbXAgKCphcmdwdHIsICJwcm9i ZToiLCA2KSA9PSAwKQotKyAgICByZXR1cm4gcGFyc2Vfc3RhcF9wcm9iZSAoYXJncHRyLCBjYW5v bmljYWwpOworKyAgaWYgKHN0cm5jbXAgKCphcmdwdHIsICItcCIsIDIpID09IDAgJiYgaXNzcGFj ZSAoKCphcmdwdHIpWzJdKSkKKysgICAgcmV0dXJuIHBhcnNlX3N0YXBfcHJvYmUgKGFyZ3B0ciwg c2VsZi0+Y2Fub25pY2FsKTsKICsKICAgIGlzX3F1b3RlZCA9IChzdHJjaHIgKGdldF9nZGJfY29t cGxldGVyX3F1b3RlX2NoYXJhY3RlcnMgKCksCiAgCQkgICAgICAgKiphcmdwdHIpICE9IE5VTEwp OwogIAotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2xpbmVzcGVjLmgKLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2xpbmVzcGVjLmgJMjAxMS0wNC0w NCAxOTo0MTowNy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9s aW5lc3BlYy5oCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCi1AQCAtMzAsNiAr MzAsMTAgQEAgc3RydWN0IGxpbmVzcGVjX3Jlc3VsdAotICAgICAgZGlzcGxheSBtZWNoYW5pc20g d291bGQgZG8gdGhlIHdyb25nIHRoaW5nLiAgKi8KLSAgIGludCBzcGVjaWFsX2Rpc3BsYXk7Ci0g Ci0rICAvKiBJZiBub24temVybywgdGhlIGxpbmVzcGVjIHJlc3VsdCBzaG91bGQgYmUgY29uc2lk ZXJlZCB0byBiZSBhCi0rICAgICAicHJlLWV4cGFuZGVkIiBtdWx0aS1sb2NhdGlvbiBsaW5lc3Bl Yy4gICovCi0rICBpbnQgcHJlX2V4cGFuZGVkOwotKwotICAgLyogSWYgbm9uLU5VTEwsIGFuIGFy cmF5IG9mIGNhbm9uaWNhbCBuYW1lcyBmb3IgcmV0dXJuZWQKLSAgICAgIHN5bXRhYl9hbmRfbGlu ZSBvYmplY3RzLiAgVGhlIGFycmF5IGhhcyBhcyBtYW55IGVsZW1lbnRzIGFzIHRoZQotICAgICAg YG5lbHRzJyBmaWVsZCBpbiB0aGUgc3ltdGFic19hbmRfbGluZSByZXR1cm5lZCBieSBkZWNvZGVf bGluZV8xLgotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2xpbnV4LW5hdC5jCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9saW51eC1uYXQuYwkyMDEx LTA3LTIyIDAxOjQ2OjA5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL2xpbnV4LW5hdC5jCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCi1AQCAt MTI0MSw2ICsxMjQxLDY0IEBAIGl0ZXJhdGVfb3Zlcl9sd3BzIChwdGlkX3QgZmlsdGVyLAotICAg cmV0dXJuIE5VTEw7CitkaWZmIC0tZ2l0IGEvZ2RiL2xpbnV4LW5hdC5jIGIvZ2RiL2xpbnV4LW5h dC5jCitpbmRleCBlNWY3YzNlLi4wOWQ3YzFlIDEwMDY0NAorLS0tIGEvZ2RiL2xpbnV4LW5hdC5j CisrKysgYi9nZGIvbGludXgtbmF0LmMKK0BAIC0yODksNiArMjg5LDcgQEAgc3RhdGljIHZvaWQg cmVzdG9yZV9jaGlsZF9zaWduYWxzX21hc2sgKHNpZ3NldF90ICpwcmV2X21hc2spOworIHN0cnVj dCBsd3BfaW5mbzsKKyBzdGF0aWMgc3RydWN0IGx3cF9pbmZvICphZGRfbHdwIChwdGlkX3QgcHRp ZCk7Cisgc3RhdGljIHZvaWQgcHVyZ2VfbHdwX2xpc3QgKGludCBwaWQpOworK3N0YXRpYyB2b2lk IGRlbGV0ZV9sd3AgKHB0aWRfdCBwdGlkKTsKKyBzdGF0aWMgc3RydWN0IGx3cF9pbmZvICpmaW5k X2x3cF9waWQgKHB0aWRfdCBwdGlkKTsKKyAKKyAMCitAQCAtNTg1LDYgKzU4NiwzMSBAQCBsaW51 eF9jaGlsZF9wb3N0X3N0YXJ0dXBfaW5mZXJpb3IgKHB0aWRfdCBwdGlkKQorICAgbGludXhfZW5h YmxlX3RyYWNlc3lzZ29vZCAocHRpZCk7CiAgfQogIAotKy8qIEhlbHBlciBmb3IgbGludXhfbmF0 X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzLiAgKi8KLSsKLStzdHJ1Y3QgaXRlcmF0ZV93YXRjaHBv aW50X2x3cHNfZGF0YQotKyAgewotKyAgICBsaW51eF9uYXRfaXRlcmF0ZV93YXRjaHBvaW50X2x3 cHNfZnR5cGUgY2FsbGJhY2s7Ci0rICAgIHZvaWQgKmNhbGxiYWNrX2RhdGE7Ci0rICB9OworKy8q IFJldHVybiB0aGUgbnVtYmVyIG9mIGtub3duIExXUHMgaW4gdGhlIHRnaWQgZ2l2ZW4gYnkgUElE LiAgKi8KICsKICtzdGF0aWMgaW50Ci0raXRlcmF0ZV93YXRjaHBvaW50X2x3cHNfY2FsbGJhY2sg KHN0cnVjdCBsd3BfaW5mbyAqbHAsIHZvaWQgKmRhdGFwX3ZvaWRwKQorK251bV9sd3BzIChpbnQg cGlkKQogK3sKLSsgIHN0cnVjdCBpdGVyYXRlX3dhdGNocG9pbnRfbHdwc19kYXRhICpkYXRhcCA9 IGRhdGFwX3ZvaWRwOwotKyAgaW50IHRpZDsKKysgIGludCBjb3VudCA9IDA7CisrICBzdHJ1Y3Qg bHdwX2luZm8gKmxwOwogKwotKyAgdGlkID0gVElER0VUIChscC0+cHRpZCk7Ci0rICBpZiAodGlk ID09IDApCi0rICAgIHRpZCA9IFBJREdFVCAobHAtPnB0aWQpOworKyAgZm9yIChscCA9IGx3cF9s aXN0OyBscDsgbHAgPSBscC0+bmV4dCkKKysgICAgaWYgKHB0aWRfZ2V0X3BpZCAobHAtPnB0aWQp ID09IHBpZCkKKysgICAgICBjb3VudCsrOworKworKyAgcmV0dXJuIGNvdW50OworK30KICsKLSsg IGRhdGFwLT5jYWxsYmFjayAodGlkLCBkYXRhcC0+Y2FsbGJhY2tfZGF0YSk7CisrLyogQ2FsbCBk ZWxldGVfbHdwIHdpdGggcHJvdG90eXBlIGNvbXBhdGlibGUgZm9yIG1ha2VfY2xlYW51cC4gICov CiArCi0rICAvKiBDb250aW51ZSB0aGUgdHJhdmVyc2FsLiAgKi8KLSsgIHJldHVybiAwOworK3N0 YXRpYyB2b2lkCisrZGVsZXRlX2x3cF9jbGVhbnVwICh2b2lkICpscF92b2lkcCkKKyt7CisrICBz dHJ1Y3QgbHdwX2luZm8gKmxwID0gbHBfdm9pZHA7CisrCisrICBkZWxldGVfbHdwIChscC0+cHRp ZCk7CiArfQogKwotKy8qIEl0ZXJhdGUgbGlrZSBpdGVyYXRlX292ZXJfbHdwcyBkb2VzIGV4Y2Vw dCB3aGVuIGZvcmtpbmctb2ZmIGEgY2hpbGQgY2FsbAotKyAgIENBTExCQUNLIHdpdGggQ0FMTEJB Q0tfREFUQSBzcGVjaWZpY2FsbHkgb25seSBmb3IgdGhhdCBuZXcgY2hpbGQgUElELgorIHN0YXRp YyBpbnQKKyBsaW51eF9jaGlsZF9mb2xsb3dfZm9yayAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywg aW50IGZvbGxvd19jaGlsZCkKKyB7CitAQCAtNjMxLDYgKzY1Nyw4IEBAIGhvbGRpbmcgdGhlIGNo aWxkIHN0b3BwZWQuICBUcnkgXCJzZXQgZGV0YWNoLW9uLWZvcmtcIiBvciBcCisgICAgICAgLyog RGV0YWNoIG5ldyBmb3JrZWQgcHJvY2Vzcz8gICovCisgICAgICAgaWYgKGRldGFjaF9mb3JrKQor IAl7CisrCSAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbjsKKysKKyAJICAvKiBCZWZvcmUgZGV0 YWNoaW5nIGZyb20gdGhlIGNoaWxkLCByZW1vdmUgYWxsIGJyZWFrcG9pbnRzCisgCSAgICAgZnJv bSBpdC4gIElmIHdlIGZvcmtlZCwgdGhlbiB0aGlzIGhhcyBhbHJlYWR5IGJlZW4gdGFrZW4KKyAJ ICAgICBjYXJlIG9mIGJ5IGluZnJ1bi5jLiAgSWYgd2UgdmZvcmtlZCBob3dldmVyLCBhbnkKK0BA IC02NTMsNyArNjgxLDI4IEBAIGhvbGRpbmcgdGhlIGNoaWxkIHN0b3BwZWQuICBUcnkgXCJzZXQg ZGV0YWNoLW9uLWZvcmtcIiBvciBcCisgCQkJCWNoaWxkX3BpZCk7CisgCSAgICB9CisgCisrCSAg b2xkX2NoYWluID0gc2F2ZV9pbmZlcmlvcl9wdGlkICgpOworKwkgIGluZmVyaW9yX3B0aWQgPSBw dGlkX2J1aWxkIChjaGlsZF9waWQsIGNoaWxkX3BpZCwgMCk7CisrCisrCSAgY2hpbGRfbHAgPSBh ZGRfbHdwIChpbmZlcmlvcl9wdGlkKTsKKysJICBjaGlsZF9scC0+c3RvcHBlZCA9IDE7CisrCSAg Y2hpbGRfbHAtPmxhc3RfcmVzdW1lX2tpbmQgPSByZXN1bWVfc3RvcDsKKysJICBtYWtlX2NsZWFu dXAgKGRlbGV0ZV9sd3BfY2xlYW51cCwgY2hpbGRfbHApOwogKwotKyAgIER1cmluZyBgc2V0IGZv bGxvdy1mb3JrLW1vZGUgY2hpbGQnIHRoZSBjYWxsIGlzIGFsc28gbWFkZSBmb3IgdGhlIG5ldyBj aGlsZAotKyAgIFBJRDsgcGFyZW50IHdhdGNocG9pbnRzIGdldCBkZXRhY2hlZCBlbHNld2hlcmUg KGR1cmluZyB0YXJnZXRfZGV0YWNoKS4gICovCisrCSAgLyogQ0hJTERfTFAgaGFzIG5ldyBQSUQs IHRoZXJlZm9yZSBsaW51eF9uYXRfbmV3X3RocmVhZCBpcyBub3QgY2FsbGVkIGZvciBpdC4KKysJ ICAgICBTZWUgaTM4Nl9pbmZlcmlvcl9kYXRhX2dldCBmb3IgdGhlIExpbnV4IGtlcm5lbCBzcGVj aWZpY3MuCisrCSAgICAgRW5zdXJlIGxpbnV4X25hdF9wcmVwYXJlX3RvX3Jlc3VtZSB3aWxsIHJl c2V0IHRoZSBoYXJkd2FyZSBkZWJ1ZworKwkgICAgIHJlZ2lzdGVycy4gIEl0IGlzIGRvbmUgYnkg dGhlIGxpbnV4X25hdF9uZXdfdGhyZWFkIGNhbGwsIHdoaWNoIGlzCisrCSAgICAgYmVpbmcgc2tp cHBlZCBpbiBhZGRfbHdwIGFib3ZlIGZvciB0aGUgZmlyc3QgbHdwIG9mIGEgcGlkLiAgKi8KKysJ ICBnZGJfYXNzZXJ0IChudW1fbHdwcyAoR0VUX1BJRCAoY2hpbGRfbHAtPnB0aWQpKSA9PSAxKTsK KysJICBpZiAobGludXhfbmF0X25ld190aHJlYWQgIT0gTlVMTCkKKysJICAgIGxpbnV4X25hdF9u ZXdfdGhyZWFkIChjaGlsZF9scCk7CisrCisrCSAgaWYgKGxpbnV4X25hdF9wcmVwYXJlX3RvX3Jl c3VtZSAhPSBOVUxMKQorKwkgICAgbGludXhfbmF0X3ByZXBhcmVfdG9fcmVzdW1lIChjaGlsZF9s cCk7CisgCSAgcHRyYWNlIChQVFJBQ0VfREVUQUNILCBjaGlsZF9waWQsIDAsIDApOworKworKwkg IGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOworIAl9CisgICAgICAgZWxzZQorIAl7CitAQCAtNjcx LDYgKzcyMCw5IEBAIGhvbGRpbmcgdGhlIGNoaWxkIHN0b3BwZWQuICBUcnkgXCJzZXQgZGV0YWNo LW9uLWZvcmtcIiBvciBcCisgCSAgc2F2ZV9jdXJyZW50X3Byb2dyYW1fc3BhY2UgKCk7CisgCisg CSAgaW5mZXJpb3JfcHRpZCA9IHB0aWRfYnVpbGQgKGNoaWxkX3BpZCwgY2hpbGRfcGlkLCAwKTsK KysJICByZWluaXRfZnJhbWVfY2FjaGUgKCk7CisrCSAgcmVnaXN0ZXJzX2NoYW5nZWQgKCk7Cisr CisgCSAgYWRkX3RocmVhZCAoaW5mZXJpb3JfcHRpZCk7CisgCSAgY2hpbGRfbHAgPSBhZGRfbHdw IChpbmZlcmlvcl9wdGlkKTsKKyAJICBjaGlsZF9scC0+c3RvcHBlZCA9IDE7CitAQCAtODYyLDYg KzkxNCw5IEBAIGhvbGRpbmcgdGhlIGNoaWxkIHN0b3BwZWQuICBUcnkgXCJzZXQgZGV0YWNoLW9u LWZvcmtcIiBvciBcCisgCSBpbmZvcm1pbmcgdGhlIHNvbGliIGxheWVyIGFib3V0IHRoaXMgbmV3 IHByb2Nlc3MuICAqLworIAorICAgICAgIGluZmVyaW9yX3B0aWQgPSBwdGlkX2J1aWxkIChjaGls ZF9waWQsIGNoaWxkX3BpZCwgMCk7CisrICAgICAgcmVpbml0X2ZyYW1lX2NhY2hlICgpOworKyAg ICAgIHJlZ2lzdGVyc19jaGFuZ2VkICgpOworKworICAgICAgIGFkZF90aHJlYWQgKGluZmVyaW9y X3B0aWQpOworICAgICAgIGNoaWxkX2xwID0gYWRkX2x3cCAoaW5mZXJpb3JfcHRpZCk7CisgICAg ICAgY2hpbGRfbHAtPnN0b3BwZWQgPSAxOworQEAgLTExMTIsMjEgKzExNjcsNiBAQCBwdXJnZV9s d3BfbGlzdCAoaW50IHBpZCkKKyAgICAgfQorIH0KKyAKKy0vKiBSZXR1cm4gdGhlIG51bWJlciBv ZiBrbm93biBMV1BzIGluIHRoZSB0Z2lkIGdpdmVuIGJ5IFBJRC4gICovCistCistc3RhdGljIGlu dAorLW51bV9sd3BzIChpbnQgcGlkKQorLXsKKy0gIGludCBjb3VudCA9IDA7CistICBzdHJ1Y3Qg bHdwX2luZm8gKmxwOworLQorLSAgZm9yIChscCA9IGx3cF9saXN0OyBscDsgbHAgPSBscC0+bmV4 dCkKKy0gICAgaWYgKHB0aWRfZ2V0X3BpZCAobHAtPnB0aWQpID09IHBpZCkKKy0gICAgICBjb3Vu dCsrOworLQorLSAgcmV0dXJuIGNvdW50OworLX0KKy0KKyAvKiBBZGQgdGhlIExXUCBzcGVjaWZp ZWQgYnkgUElEIHRvIHRoZSBsaXN0LiAgUmV0dXJuIGEgcG9pbnRlciB0byB0aGUKKyAgICBzdHJ1 Y3R1cmUgZGVzY3JpYmluZyB0aGUgbmV3IExXUC4gIFRoZSBMV1Agc2hvdWxkIGFscmVhZHkgYmUg c3RvcHBlZAorICAgICh3aXRoIGFuIGV4Y2VwdGlvbiBmb3IgdGhlIHZlcnkgZmlyc3QgTFdQKS4g ICovCitAQCAtMTIzNiw2ICsxMjc2LDQ2IEBAIGl0ZXJhdGVfb3Zlcl9sd3BzIChwdGlkX3QgZmls dGVyLAorICAgcmV0dXJuIE5VTEw7CisgfQorIAorKy8qIEl0ZXJhdGUgbGlrZSBpdGVyYXRlX292 ZXJfbHdwcyBkb2VzIGV4Y2VwdCB3aGVuIGZvcmtpbmctb2ZmIGEgY2hpbGQgY2FsbAorKyAgIENB TExCQUNLIHdpdGggQ0FMTEJBQ0tfREFUQSBzcGVjaWZpY2FsbHkgb25seSBmb3IgdGhhdCBuZXcg Y2hpbGQgUElELiAgKi8KICsKICt2b2lkCiArbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9s d3BzCiArICAobGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzX2Z0eXBlIGNhbGxiYWNr LCB2b2lkICpjYWxsYmFja19kYXRhKQogK3sKLSsgIHN0cnVjdCBpdGVyYXRlX3dhdGNocG9pbnRf bHdwc19kYXRhIGRhdGE7CiArICBpbnQgaW5mZXJpb3JfcGlkID0gcHRpZF9nZXRfcGlkIChpbmZl cmlvcl9wdGlkKTsKICsgIHN0cnVjdCBpbmZlcmlvciAqaW5mID0gY3VycmVudF9pbmZlcmlvciAo KTsKICsKLSsgIGRhdGEuY2FsbGJhY2sgPSBjYWxsYmFjazsKLSsgIGRhdGEuY2FsbGJhY2tfZGF0 YSA9IGNhbGxiYWNrX2RhdGE7Ci0rCiArICBpZiAoaW5mLT5waWQgPT0gaW5mZXJpb3JfcGlkKQog KyAgICB7Ci0rICAgICAgLyogU3RhbmRhcmQgbW9kZS4gIEl0ZXJhdGUgYWxsIHRoZSB0aHJlYWRz IG9mIHRoZSBjdXJyZW50IGluZmVyaW9yLgotKwkgV2l0aG91dCBzcGVjaWZ5aW5nIElORkVSSU9S X1BJRCBpdCB3b3VsZCBpdGVyYXRlIGFsbCB0aGUgdGhyZWFkcyBvZgotKwkgYWxsIHRoZSBpbmZl cmlvcnMsIHdoaWNoIGlzIGluYXBwcm9wcmlhdGUgZm9yIHdhdGNocG9pbnRzLiAgKi8KKysgICAg ICAvKiBJdGVyYXRlIGFsbCB0aGUgdGhyZWFkcyBvZiB0aGUgY3VycmVudCBpbmZlcmlvci4gIFdp dGhvdXQgc3BlY2lmeWluZworKwkgSU5GRVJJT1JfUElEIGl0IHdvdWxkIGl0ZXJhdGUgYWxsIHRo cmVhZHMgb2YgYWxsIGluZmVyaW9ycywgd2hpY2ggaXMKKysJIGluYXBwcm9wcmlhdGUgZm9yIHdh dGNocG9pbnRzLiAgKi8KICsKLSsgICAgICBpdGVyYXRlX292ZXJfbHdwcyAocGlkX3RvX3B0aWQg KGluZmVyaW9yX3BpZCksCi0rCQkJIGl0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzX2NhbGxiYWNrLCAm ZGF0YSk7CisrICAgICAgaXRlcmF0ZV9vdmVyX2x3cHMgKHBpZF90b19wdGlkIChpbmZlcmlvcl9w aWQpLCBjYWxsYmFjaywgY2FsbGJhY2tfZGF0YSk7CiArICAgIH0KICsgIGVsc2UKICsgICAgewog KyAgICAgIC8qIERldGFjaGluZyBhIG5ldyBjaGlsZCBQSUQgdGVtcG9yYXJpbHkgcHJlc2VudCBp biBJTkZFUklPUl9QSUQuICAqLwogKwotKyAgICAgIGNhbGxiYWNrIChpbmZlcmlvcl9waWQsIGNh bGxiYWNrX2RhdGEpOworKyAgICAgIHN0cnVjdCBsd3BfaW5mbyAqY2hpbGRfbHA7CisrICAgICAg c3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbjsKKysgICAgICBwaWRfdCBjaGlsZF9waWQgPSBHRVRf UElEIChpbmZlcmlvcl9wdGlkKTsKKysgICAgICBwdGlkX3QgY2hpbGRfcHRpZCA9IHB0aWRfYnVp bGQgKGNoaWxkX3BpZCwgY2hpbGRfcGlkLCAwKTsKKysKKysgICAgICBnZGJfYXNzZXJ0ICghaXNf bHdwIChpbmZlcmlvcl9wdGlkKSk7CisrICAgICAgZ2RiX2Fzc2VydCAoZmluZF9sd3BfcGlkIChj aGlsZF9wdGlkKSA9PSBOVUxMKTsKKysgICAgICBjaGlsZF9scCA9IGFkZF9sd3AgKGNoaWxkX3B0 aWQpOworKyAgICAgIGNoaWxkX2xwLT5zdG9wcGVkID0gMTsKKysgICAgICBjaGlsZF9scC0+bGFz dF9yZXN1bWVfa2luZCA9IHJlc3VtZV9zdG9wOworKyAgICAgIG9sZF9jaGFpbiA9IG1ha2VfY2xl YW51cCAoZGVsZXRlX2x3cF9jbGVhbnVwLCBjaGlsZF9scCk7CisrCisrICAgICAgY2FsbGJhY2sg KGNoaWxkX2xwLCBjYWxsYmFja19kYXRhKTsKKysKKysgICAgICBkb19jbGVhbnVwcyAob2xkX2No YWluKTsKICsgICAgfQogK30KICsKICAvKiBVcGRhdGUgb3VyIGludGVybmFsIHN0YXRlIHdoZW4g Y2hhbmdpbmcgZnJvbSBvbmUgY2hlY2twb2ludCB0bwogICAgIGFub3RoZXIgaW5kaWNhdGVkIGJ5 IE5FV19QVElELiAgV2UgY2FuIG9ubHkgc3dpdGNoIHNpbmdsZS10aHJlYWRlZAogICAgIGFwcGxp Y2F0aW9ucywgc28gd2Ugb25seSBjcmVhdGUgb25lIG5ldyBMV1AsIGFuZCB0aGUgcHJldmlvdXMg bGlzdAotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2xpbnV4LW5hdC5oCi09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9saW51eC1uYXQuaAkyMDExLTAx LTA1IDIzOjIyOjQ5LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L2xpbnV4LW5hdC5oCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCi1AQCAtMTQw LDYgKzE0MCwxMSBAQCBzdHJ1Y3QgbHdwX2luZm8gKml0ZXJhdGVfb3Zlcl9sd3BzIChwdGlkCitk aWZmIC0tZ2l0IGEvZ2RiL2xpbnV4LW5hdC5oIGIvZ2RiL2xpbnV4LW5hdC5oCitpbmRleCAzMzcy N2Q2Li45OTE1ZjJmIDEwMDY0NAorLS0tIGEvZ2RiL2xpbnV4LW5hdC5oCisrKysgYi9nZGIvbGlu dXgtbmF0LmgKK0BAIC0xNTksNiArMTU5LDEyIEBAIHN0cnVjdCBsd3BfaW5mbyAqaXRlcmF0ZV9v dmVyX2x3cHMgKHB0aWRfdCBmaWx0ZXIsCiAgCQkJCQkJICAgICB2b2lkICopLCAKICAJCQkJICAg IHZvaWQgKmRhdGEpOwogIAotK3R5cGVkZWYgdm9pZCAoKmxpbnV4X25hdF9pdGVyYXRlX3dhdGNo cG9pbnRfbHdwc19mdHlwZSkgKGludCB0aWQsIHZvaWQgKmRhdGEpOworK3R5cGVkZWYgaW50ICgq bGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzX2Z0eXBlKSAoc3RydWN0IGx3cF9pbmZv ICpsd3AsCisrCQkJCQkJCXZvaWQgKmFyZyk7CiArCiArZXh0ZXJuIHZvaWQgbGludXhfbmF0X2l0 ZXJhdGVfd2F0Y2hwb2ludF9sd3BzCiArICAobGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9s d3BzX2Z0eXBlIGNhbGxiYWNrLCB2b2lkICpjYWxsYmFja19kYXRhKTsKQEAgLTU2NzcsMTEgKzYz ODcsMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2xpbnV4LW5hdC5oCiAgLyog Q3JlYXRlIGEgcHJvdG90eXBlIGdlbmVyaWMgR05VL0xpbnV4IHRhcmdldC4gIFRoZSBjbGllbnQg Y2FuCiAgICAgb3ZlcnJpZGUgaXQgd2l0aCBsb2NhbCBtZXRob2RzLiAgKi8KICBzdHJ1Y3QgdGFy Z2V0X29wcyAqIGxpbnV4X3RhcmdldCAodm9pZCk7Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvbWFjaG9yZWFkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9y aWcvZ2RiL21hY2hvcmVhZC5jCTIwMTEtMDctMDEgMjA6MzY6NDUuMDAwMDAwMDAwICswMjAwCi0r KysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvbWFjaG9yZWFkLmMJMjAxMS0wNy0yOSAyMjo1Mjow Mi4wMDAwMDAwMDAgKzAyMDAKLUBAIC04NDIsNiArODQyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBzeW1fZm5zIG1hY2hvX3N5bV9mbgorZGlmZiAtLWdpdCBhL2dkYi9tYWNob3JlYWQuYyBiL2dk Yi9tYWNob3JlYWQuYworaW5kZXggNDZiODg0Mi4uNjhhYWU0NiAxMDA2NDQKKy0tLSBhL2dkYi9t YWNob3JlYWQuYworKysrIGIvZ2RiL21hY2hvcmVhZC5jCitAQCAtMTAzMiw2ICsxMDMyLDcgQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBzeW1fZm5zIG1hY2hvX3N5bV9mbnMgPSB7CiAgICBkZWZhdWx0 X3N5bWZpbGVfc2VnbWVudHMsCS8qIEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20gYSBmaWxl LiAgKi8KICAgIE5VTEwsCiAgICBtYWNob19zeW1maWxlX3JlbG9jYXRlLAkvKiBSZWxvY2F0ZSBh IGRlYnVnIHNlY3Rpb24uICAqLwpAQCAtNTY4OSwxMCArNjM5OSwxMCBAQCBJbmRleDogZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvbWFjaG9yZWFkLmMKICAgICZwc3ltX2Z1bmN0aW9ucwogIH07CiAg Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvbWFpbi5jCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9tYWluLmMJMjAxMS0wNi0xMyAxMjo1NToyNi4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9tYWluLmMJMjAxMS0w Ny0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKK2RpZmYgLS1naXQgYS9nZGIvbWFpbi5jIGIv Z2RiL21haW4uYworaW5kZXggMjg4ZWM0Yi4uMzhiNzY5OSAxMDA2NDQKKy0tLSBhL2dkYi9tYWlu LmMKKysrKyBiL2dkYi9tYWluLmMKIEBAIC0zOSw2ICszOSw3IEBACiAgCiAgI2luY2x1ZGUgImlu dGVycHMuaCIKQEAgLTU3MDEsNyArNjQxMSw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi9tYWluLmMKICAjaW5jbHVkZSAic291cmNlLmgiCiAgI2luY2x1ZGUgImNsaS9jbGktY21k cy5oIgogICNpbmNsdWRlICJweXRob24vcHl0aG9uLmgiCi1AQCAtMjYyLDYgKzI2Myw4IEBAIGNh cHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCitAQCAtMjY2LDYgKzI2Nyw4IEBAIGNhcHR1cmVkX21h aW4gKHZvaWQgKmRhdGEpCiAgICBjaGFyICpjZGFyZyA9IE5VTEw7CiAgICBjaGFyICp0dHlhcmcg PSBOVUxMOwogIApAQCAtNTcxMCw3ICs2NDIwLDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL21haW4uYwogICAgLyogVGhlc2UgYXJlIHN0YXRpYyBzbyB0aGF0IHdlIGNhbiB0YWtl IHRoZWlyIGFkZHJlc3MgaW4gYW4KICAgICAgIGluaXRpYWxpemVyLiAgKi8KICAgIHN0YXRpYyBp bnQgcHJpbnRfaGVscDsKLUBAIC00NTIsMTAgKzQ1NSwxNCBAQCBjYXB0dXJlZF9tYWluICh2b2lk ICpkYXRhKQorQEAgLTQ1OSwxMCArNDYyLDE0IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEp CiAgICAgICAgeyJhcmdzIiwgbm9fYXJndW1lbnQsICZzZXRfYXJncywgMX0sCiAgICAgICAgeyJs IiwgcmVxdWlyZWRfYXJndW1lbnQsIDAsICdsJ30sCiAgICAgICAgeyJyZXR1cm4tY2hpbGQtcmVz dWx0Iiwgbm9fYXJndW1lbnQsICZyZXR1cm5fY2hpbGRfcmVzdWx0LCAxfSwKQEAgLTU3MjYsNyAr NjQzNiw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9tYWluLmMKICAgICAgICB7 CiAgCWludCBvcHRpb25faW5kZXg7CiAgCi1AQCAtNDczLDYgKzQ4MCw5IEBAIGNhcHR1cmVkX21h aW4gKHZvaWQgKmRhdGEpCitAQCAtNDgwLDYgKzQ4Nyw5IEBAIGNhcHR1cmVkX21haW4gKHZvaWQg KmRhdGEpCiAgCSAgY2FzZSAwOgogIAkgICAgLyogTG9uZyBvcHRpb24gdGhhdCBqdXN0IHNldHMg YSBmbGFnLiAgKi8KICAJICAgIGJyZWFrOwpAQCAtNTczNiw3ICs2NDQ2LDcgQEAgSW5kZXg6IGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL21haW4uYwogIAkgIGNhc2UgT1BUX1NFOgogIAkgICAgc3lt YXJnID0gb3B0YXJnOwogIAkgICAgZXhlY2FyZyA9IG9wdGFyZzsKLUBAIC02NjgsNyArNjc4LDMx IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCitAQCAtNjc1LDcgKzY4NSwzMSBAQCBjYXB0 dXJlZF9tYWluICh2b2lkICpkYXRhKQogIAogICAgLyogTm93IHRoYXQgZ2RiX2luaXQgaGFzIGNy ZWF0ZWQgdGhlIGluaXRpYWwgaW5mZXJpb3IsIHdlJ3JlIGluCiAgICAgICBwb3NpdGlvbiB0byBz ZXQgYXJncyBmb3IgdGhhdCBpbmZlcmlvci4gICovCkBAIC01NzY5LDcgKzY0NzksNyBAQCBJbmRl eDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvbWFpbi5jCiAgICAgIHsKICAgICAgICAvKiBUaGUg cmVtYWluaW5nIG9wdGlvbnMgYXJlIHRoZSBjb21tYW5kLWxpbmUgb3B0aW9ucyBmb3IgdGhlCiAg CSBpbmZlcmlvci4gIFRoZSBmaXJzdCBvbmUgaXMgdGhlIHN5bS9leGVjIGZpbGUsIGFuZCB0aGUg cmVzdAotQEAgLTkxNyw3ICs5NTEsOCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQorQEAg LTkyNCw3ICs5NTgsOCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQogIAogICAgLyogUmVh ZCBpbiB0aGUgb2xkIGhpc3RvcnkgYWZ0ZXIgYWxsIHRoZSBjb21tYW5kIGZpbGVzIGhhdmUgYmVl bgogICAgICAgcmVhZC4gICovCkBAIC01Nzc5LDcgKzY0ODksNyBAQCBJbmRleDogZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvbWFpbi5jCiAgCiAgICBpZiAoYmF0Y2hfZmxhZykKICAgICAgewotQEAg LTkyOCwxMyArOTYzLDI1IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCitAQCAtOTM1LDEz ICs5NzAsMjUgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKICAgIC8qIFNob3cgdGltZSBh bmQvb3Igc3BhY2UgdXNhZ2UuICAqLwogICAgZG9fY2xlYW51cHMgKHByZV9zdGF0X2NoYWluKTsK ICAKQEAgLTU3OTAsNyArNjUwMCw4IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9t YWluLmMKIC0gIHdoaWxlICgxKQogKyNpZiBIQVZFX1BZVEhPTgogKyAgaWYgKHB5dGhvbl9zY3Jp cHQpCi0rICAgIHsKKyAgICAgeworLSAgICAgIGNhdGNoX2Vycm9ycyAoY2FwdHVyZWRfY29tbWFu ZF9sb29wLCAwLCAiIiwgUkVUVVJOX01BU0tfQUxMKTsKICsgICAgICBleHRlcm4gaW50IHBhZ2lu YXRpb25fZW5hYmxlZDsKICsgICAgICBwYWdpbmF0aW9uX2VuYWJsZWQgPSAwOwogKyAgICAgIHJ1 bl9weXRob25fc2NyaXB0IChhcmdjIC0gb3B0aW5kLCAmYXJndltvcHRpbmRdKTsKQEAgLTU3OTgs OCArNjUwOSw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9tYWluLmMKICsgICAg fQogKyAgZWxzZQogKyNlbmRpZgotICAgICB7Ci0tICAgICAgY2F0Y2hfZXJyb3JzIChjYXB0dXJl ZF9jb21tYW5kX2xvb3AsIDAsICIiLCBSRVRVUk5fTUFTS19BTEwpOworKyAgICB7CiArICAgICAg LyogTk9URTogY2FnbmV5LzE5OTktMTEtMDc6IFRoZXJlIGlzIHByb2JhYmx5IG5vIHJlYXNvbiBm b3Igbm90CiArCSBtb3ZpbmcgdGhpcyBsb29wIGFuZCB0aGUgY29kZSBmb3VuZCBpbiBjYXB0dXJl ZF9jb21tYW5kX2xvb3AoKQogKwkgaW50byB0aGUgY29tbWFuZF9sb29wKCkgcHJvcGVyLiAgVGhl IG1haW4gdGhpbmcgaG9sZGluZyBiYWNrIHRoYXQKQEAgLTU4MTEsNyArNjUyMSw3IEBAIEluZGV4 OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9tYWluLmMKICAgICAgfQogICAgLyogTm8gZXhpdCAt LSBleGl0IGlzIHRocm91Z2ggcXVpdF9jb21tYW5kLiAgKi8KICB9Ci1AQCAtOTY2LDcgKzEwMTMs MTIgQEAgcHJpbnRfZ2RiX2hlbHAgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCitAQCAtOTczLDcg KzEwMjAsMTIgQEAgcHJpbnRfZ2RiX2hlbHAgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCiAgICBm cHV0c191bmZpbHRlcmVkIChfKCJcCiAgVGhpcyBpcyB0aGUgR05VIGRlYnVnZ2VyLiAgVXNhZ2U6 XG5cblwKICAgICAgZ2RiIFtvcHRpb25zXSBbZXhlY3V0YWJsZS1maWxlIFtjb3JlLWZpbGUgb3Ig cHJvY2Vzcy1pZF1dXG5cCkBAIC01ODI1LDcgKzY1MzUsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvbWFpbi5jCiAgT3B0aW9uczpcblxuXAogICIpLCBzdHJlYW0pOwogICAgZnB1 dHNfdW5maWx0ZXJlZCAoXygiXAotQEAgLTEwMDQsNyArMTA1NiwxMyBAQCBPcHRpb25zOlxuXG5c CitAQCAtMTAxMSw3ICsxMDYzLDEzIEBAIE9wdGlvbnM6XG5cblwKICAgIC0tbncJCSAgICAgRG8g bm90IHVzZSBhIHdpbmRvdyBpbnRlcmZhY2UuXG5cCiAgICAtLW54ICAgICAgICAgICAgICAgRG8g bm90IHJlYWQgIiksIHN0cmVhbSk7CiAgICBmcHV0c191bmZpbHRlcmVkIChnZGJpbml0LCBzdHJl YW0pOwpAQCAtNTg0MCwxMSArNjU1MCwxMSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvbWFpbi5jCiAgICAtLXF1aWV0ICAgICAgICAgICAgRG8gbm90IHByaW50IHZlcnNpb24gbnVt YmVyIG9uIHN0YXJ0dXAuXG5cCiAgICAtLXJlYWRub3cgICAgICAgICAgRnVsbHkgcmVhZCBzeW1i b2wgZmlsZXMgb24gZmlyc3QgYWNjZXNzLlxuXAogICIpLCBzdHJlYW0pOwotSW5kZXg6IGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL21pL21pLWNtZC12YXIuYwotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvbWkvbWktY21kLXZhci5jCTIwMTEtMDYtMjcgMjE6MjE6 NTEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvbWkvbWktY21k LXZhci5jCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCi1AQCAtNzA3LDcgKzcw Nyw2IEBAIG1pX2NtZF92YXJfdXBkYXRlIChjaGFyICpjb21tYW5kLCBjaGFyICoKK2RpZmYgLS1n aXQgYS9nZGIvbWkvbWktY21kLXZhci5jIGIvZ2RiL21pL21pLWNtZC12YXIuYworaW5kZXggNDhm OGE3ZC4uZTlhNGRiNyAxMDA2NDQKKy0tLSBhL2dkYi9taS9taS1jbWQtdmFyLmMKKysrKyBiL2dk Yi9taS9taS1jbWQtdmFyLmMKK0BAIC03MjEsNyArNzIxLDYgQEAgbWlfY21kX3Zhcl91cGRhdGUg KGNoYXIgKmNvbW1hbmQsIGNoYXIgKiphcmd2LCBpbnQgYXJnYykKICAgICAgfQogICAgZWxzZQog ICAgICB7CkBAIC01ODUyLDExICs2NTYyLDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi9taS9taS1jbWQtdmFyLmMKICAgICAgICBzdHJ1Y3QgdmFyb2JqICp2YXIgPSB2YXJvYmpf Z2V0X2hhbmRsZSAobmFtZSk7CiAgCiAgICAgICAgdmFyb2JqX3VwZGF0ZV9vbmUgKHZhciwgcHJp bnRfdmFsdWVzLCAxIC8qIGV4cGxpY2l0ICovKTsKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi9taXBzcmVhZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmln L2dkYi9taXBzcmVhZC5jCTIwMTEtMDQtMTkgMjA6MDQ6MDcuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvbWlwc3JlYWQuYwkyMDExLTA3LTI5IDIyOjUyOjAyLjAw MDAwMDAwMCArMDIwMAotQEAgLTQwMiw2ICs0MDIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHN5 bV9mbnMgZWNvZmZfc3ltX2ZuCitkaWZmIC0tZ2l0IGEvZ2RiL21pcHNyZWFkLmMgYi9nZGIvbWlw c3JlYWQuYworaW5kZXggMWNkMzI5OS4uNDZkZTA5NyAxMDA2NDQKKy0tLSBhL2dkYi9taXBzcmVh ZC5jCisrKysgYi9nZGIvbWlwc3JlYWQuYworQEAgLTQwMiw2ICs0MDIsNyBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IHN5bV9mbnMgZWNvZmZfc3ltX2ZucyA9CiAgICBkZWZhdWx0X3N5bWZpbGVfc2Vn bWVudHMsCS8qIEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20gYSBmaWxlLiAgKi8KICAgIE5V TEwsCiAgICBkZWZhdWx0X3N5bWZpbGVfcmVsb2NhdGUsCS8qIFJlbG9jYXRlIGEgZGVidWcgc2Vj dGlvbi4gICovCkBAIC01ODY0LDExICs2NTc0LDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi9taXBzcmVhZC5jCiAgICAmcHN5bV9mdW5jdGlvbnMKICB9OwogIAotSW5kZXg6IGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL29iamZpbGVzLmMKLT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4z LjUwLjIwMTEwNzIyLm9yaWcvZ2RiL29iamZpbGVzLmMJMjAxMS0wNi0xNCAxODo0OTo0MS4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9vYmpmaWxlcy5jCTIwMTEt MDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCi1AQCAtODQyLDYgKzg0MiwxMSBAQCBvYmpm aWxlX3JlbG9jYXRlMSAoc3RydWN0IG9iamZpbGUgKm9iamZpCitkaWZmIC0tZ2l0IGEvZ2RiL29i amZpbGVzLmMgYi9nZGIvb2JqZmlsZXMuYworaW5kZXggMjI5ZTY0MS4uNTZiOGEzMSAxMDA2NDQK Ky0tLSBhL2dkYi9vYmpmaWxlcy5jCisrKysgYi9nZGIvb2JqZmlsZXMuYworQEAgLTgxMyw2ICs4 MTMsMTEgQEAgb2JqZmlsZV9yZWxvY2F0ZTEgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogIAkJ CQlvYmpfc2VjdGlvbl9hZGRyIChzKSk7CiAgICAgIH0KICAKQEAgLTU4ODAsMTAgKzY1OTAsMTAg QEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL29iamZpbGVzLmMKICAgIC8qIERhdGEg Y2hhbmdlZC4gICovCiAgICByZXR1cm4gMTsKICB9Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvcC12YWxwcmludC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5v cmlnL2dkYi9wLXZhbHByaW50LmMJMjAxMS0wMy0xNSAxNzowMDo1Ni4wMDAwMDAwMDAgKzAxMDAK LSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9wLXZhbHByaW50LmMJMjAxMS0wNy0yOSAyMjo1 MjowMi4wMDAwMDAwMDAgKzAyMDAKK2RpZmYgLS1naXQgYS9nZGIvcC12YWxwcmludC5jIGIvZ2Ri L3AtdmFscHJpbnQuYworaW5kZXggZTU1YjEyMi4uNmI0YWRmYiAxMDA2NDQKKy0tLSBhL2dkYi9w LXZhbHByaW50LmMKKysrKyBiL2dkYi9wLXZhbHByaW50LmMKIEBAIC0zOSw2ICszOSw3IEBACiAg I2luY2x1ZGUgImNwLWFiaS5oIgogICNpbmNsdWRlICJjcC1zdXBwb3J0LmgiCkBAIC01ODkyLDcg KzY2MDIsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcC12YWxwcmludC5jCiAg DAogIAogIC8qIFNlZSB2YWxfcHJpbnQgZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIHZhcmlvdXMg cGFyYW1ldGVycyBvZiB0aGlzCi1AQCAtNjMsOCArNjQsMzEgQEAgcGFzY2FsX3ZhbF9wcmludCAo c3RydWN0IHR5cGUgKnR5cGUsIGNvbgorQEAgLTYzLDggKzY0LDMxIEBAIHBhc2NhbF92YWxfcHJp bnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKICAgIHN0cnVj dCB0eXBlICpjaGFyX3R5cGU7CiAgICBMT05HRVNUIHZhbDsKICAgIENPUkVfQUREUiBhZGRyOwpA QCAtNTkyNSw3ICs2NjM1LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3AtdmFs cHJpbnQuYwogICAgc3dpdGNoIChUWVBFX0NPREUgKHR5cGUpKQogICAgICB7CiAgICAgIGNhc2Ug VFlQRV9DT0RFX0FSUkFZOgotQEAgLTEyMCw4ICsxNDQsOCBAQCBwYXNjYWxfdmFsX3ByaW50IChz dHJ1Y3QgdHlwZSAqdHlwZSwgY29uCitAQCAtMTIwLDggKzE0NCw4IEBAIHBhc2NhbF92YWxfcHJp bnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKICAJCXsKICAJ CSAgaSA9IDA7CiAgCQl9CkBAIC01OTM2LDcgKzY2NDYsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvcC12YWxwcmludC5jCiAgCQkJCQlvcmlnaW5hbF92YWx1ZSwgb3B0aW9ucywg aSk7CiAgCSAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIn0iKTsKICAJICAgIH0KLUBA IC0xNjAsNiArMTg0LDcgQEAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNv bgorQEAgLTE2MCw2ICsxODQsNyBAQCBwYXNjYWxfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlw ZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAgCSAgLyogVHJ5IHRvIHByaW50IHdoYXQgZnVu Y3Rpb24gaXQgcG9pbnRzIHRvLiAgKi8KICAJICBwcmludF9hZGRyZXNzX2RlbWFuZ2xlIChnZGJh cmNoLCBhZGRyLCBzdHJlYW0sIGRlbWFuZ2xlKTsKICAJICAvKiBSZXR1cm4gdmFsdWUgaXMgaXJy ZWxldmFudCBleGNlcHQgZm9yIHN0cmluZyBwb2ludGVycy4gICovCkBAIC01OTQ0LDI3ICs2NjU0 LDEwNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcC12YWxwcmludC5jCiAgCSAg cmV0dXJuICgwKTsKICAJfQogIAotQEAgLTI1MSw2ICsyNzYsNyBAQCBwYXNjYWxfdmFsX3ByaW50 IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uCi0gICAgICAgLyogUmV0dXJuIG51bWJlciBvZiBjaGFy YWN0ZXJzIHByaW50ZWQsIGluY2x1ZGluZyB0aGUgdGVybWluYXRpbmcKLSAJICdcMCcgaWYgd2Ug cmVhY2hlZCB0aGUgZW5kLiAgdmFsX3ByaW50X3N0cmluZyB0YWtlcyBjYXJlIGluY2x1ZGluZwot IAkgdGhlIHRlcm1pbmF0aW5nICdcMCcgaWYgbmVjZXNzYXJ5LiAgKi8KLSsgICAgICBkb19jbGVh bnVwcyAoYmFja190byk7Ci0gICAgICAgcmV0dXJuIGk7CitAQCAtMjUxLDYgKzI3Niw3IEBAIHBh c2NhbF92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRk ciwKKyAgICAgICAvKiBSZXR1cm4gbnVtYmVyIG9mIGNoYXJhY3RlcnMgcHJpbnRlZCwgaW5jbHVk aW5nIHRoZSB0ZXJtaW5hdGluZworIAkgJ1wwJyBpZiB3ZSByZWFjaGVkIHRoZSBlbmQuICB2YWxf cHJpbnRfc3RyaW5nIHRha2VzIGNhcmUgaW5jbHVkaW5nCisgCSB0aGUgdGVybWluYXRpbmcgJ1ww JyBpZiBuZWNlc3NhcnkuICAqLworKyAgICAgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKKyAgICAg ICByZXR1cm4gaTsKKyAKKyAgICAgICBicmVhazsKK0BAIC01NzYsNiArNjAyLDcgQEAgcGFzY2Fs X3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAor IAkgICAgIFRZUEVfQ09ERSAodHlwZSkpOworICAgICB9CisgICBnZGJfZmx1c2ggKHN0cmVhbSk7 CisrICBkb19jbGVhbnVwcyAoYmFja190byk7CisgICByZXR1cm4gKDApOworIH0KKyAMCitkaWZm IC0tZ2l0IGEvZ2RiL3BhcnNlLmMgYi9nZGIvcGFyc2UuYworaW5kZXggN2QxNTdmZS4uNmRkYWY4 NiAxMDA2NDQKKy0tLSBhL2dkYi9wYXJzZS5jCisrKysgYi9nZGIvcGFyc2UuYworQEAgLTEyNCw4 ICsxMjQsNiBAQCBzaG93X3BhcnNlcmRlYnVnIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZy b21fdHR5LAorIAorIHN0YXRpYyB2b2lkIGZyZWVfZnVuY2FsbHMgKHZvaWQgKmlnbm9yZSk7Cisg Cistc3RhdGljIGludCBwcmVmaXhpZnlfZXhwcmVzc2lvbiAoc3RydWN0IGV4cHJlc3Npb24gKik7 CistCisgc3RhdGljIGludCBwcmVmaXhpZnlfc3ViZXhwIChzdHJ1Y3QgZXhwcmVzc2lvbiAqLCBz dHJ1Y3QgZXhwcmVzc2lvbiAqLCBpbnQsCisgCQkJICAgICBpbnQpOworIAorQEAgLTc3Miw3ICs3 NzAsNyBAQCBjb3B5X25hbWUgKHN0cnVjdCBzdG9rZW4gdG9rZW4pCisgICAgcmV0dXJuIHRoZSBp bmRleCBvZiB0aGUgc3ViZXhwcmVzc2lvbiB3aGljaCBpcyB0aGUgbGVmdC1oYW5kLXNpZGUKKyAg ICBvZiB0aGUgc3RydWN0IG9wZXJhdGlvbiBhdCBFWFBPVVRfTEFTVF9TVFJVQ1QuICAqLworIAor LXN0YXRpYyBpbnQKKytpbnQKKyBwcmVmaXhpZnlfZXhwcmVzc2lvbiAoc3RydWN0IGV4cHJlc3Np b24gKmV4cHIpCisgeworICAgaW50IGxlbiA9IHNpemVvZiAoc3RydWN0IGV4cHJlc3Npb24pICsg RVhQX0VMRU1fVE9fQllURVMgKGV4cHItPm5lbHRzKTsKK0BAIC0xMDc1LDYgKzEwNzMsMzEgQEAg cGFyc2VfZXhwXzEgKGNoYXIgKipzdHJpbmdwdHIsIHN0cnVjdCBibG9jayAqYmxvY2ssIGludCBj b21tYSkKKyAgIHJldHVybiBwYXJzZV9leHBfaW5fY29udGV4dCAoc3RyaW5ncHRyLCBibG9jaywg Y29tbWEsIDAsIE5VTEwpOworIH0KKyAKKyt2b2lkCisraW5pdGlhbGl6ZV9leHBvdXQgKGludCBp bml0aWFsX3NpemUsIGNvbnN0IHN0cnVjdCBsYW5ndWFnZV9kZWZuICpsYW5nLAorKwkJICAgc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2gpCisreworKyAgZXhwb3V0X3NpemUgPSBpbml0aWFsX3NpemU7 CisrICBleHBvdXRfcHRyID0gMDsKKysgIGV4cG91dCA9IChzdHJ1Y3QgZXhwcmVzc2lvbiAqKQor KyAgICB4bWFsbG9jIChzaXplb2YgKHN0cnVjdCBleHByZXNzaW9uKSArIEVYUF9FTEVNX1RPX0JZ VEVTIChleHBvdXRfc2l6ZSkpOworKyAgZXhwb3V0LT5sYW5ndWFnZV9kZWZuID0gbGFuZzsKKysg IGV4cG91dC0+Z2RiYXJjaCA9IGdkYmFyY2g7CisrfQorKworK3ZvaWQKKytyZWFsbG9jYXRlX2V4 cG91dCAodm9pZCkKKyt7CisrICAvKiBSZWNvcmQgdGhlIGFjdHVhbCBudW1iZXIgb2YgZXhwcmVz c2lvbiBlbGVtZW50cywgYW5kIHRoZW4KKysgICAgIHJlYWxsb2NhdGUgdGhlIGV4cHJlc3Npb24g bWVtb3J5IHNvIHRoYXQgd2UgZnJlZSB1cCBhbnkKKysgICAgIGV4Y2VzcyBlbGVtZW50cy4gICov CisrCisrICBleHBvdXQtPm5lbHRzID0gZXhwb3V0X3B0cjsKKysgIGV4cG91dCA9IChzdHJ1Y3Qg ZXhwcmVzc2lvbiAqKQorKyAgICB4cmVhbGxvYyAoKGNoYXIgKikgZXhwb3V0LAorKwkgICAgICBz aXplb2YgKHN0cnVjdCBleHByZXNzaW9uKSArIEVYUF9FTEVNX1RPX0JZVEVTIChleHBvdXRfcHRy KSk7CisrfQorKworIC8qIEFzIGZvciBwYXJzZV9leHBfMSwgZXhjZXB0IHRoYXQgaWYgVk9JRF9D T05URVhUX1AsIHRoZW4KKyAgICBubyB2YWx1ZSBpcyBleHBlY3RlZCBmcm9tIHRoZSBleHByZXNz aW9uLgorICAgIE9VVF9TVUJFWFAgaXMgc2V0IHdoZW4gYXR0ZW1wdGluZyB0byBjb21wbGV0ZSBh IGZpZWxkIG5hbWU7IGluIHRoaXMKK0BAIC0xMTUyLDEyICsxMTc1LDcgQEAgcGFyc2VfZXhwX2lu X2NvbnRleHQgKGNoYXIgKipzdHJpbmdwdHIsIHN0cnVjdCBibG9jayAqYmxvY2ssIGludCBjb21t YSwKKyAgIGVsc2UKKyAgICAgbGFuZyA9IGN1cnJlbnRfbGFuZ3VhZ2U7CisgCistICBleHBvdXRf c2l6ZSA9IDEwOworLSAgZXhwb3V0X3B0ciA9IDA7CistICBleHBvdXQgPSAoc3RydWN0IGV4cHJl c3Npb24gKikKKy0gICAgeG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgZXhwcmVzc2lvbikgKyBFWFBf RUxFTV9UT19CWVRFUyAoZXhwb3V0X3NpemUpKTsKKy0gIGV4cG91dC0+bGFuZ3VhZ2VfZGVmbiA9 IGxhbmc7CistICBleHBvdXQtPmdkYmFyY2ggPSBnZXRfY3VycmVudF9hcmNoICgpOworKyAgaW5p dGlhbGl6ZV9leHBvdXQgKDEwLCBsYW5nLCBnZXRfY3VycmVudF9hcmNoICgpKTsKICAKLSAgICAg ICBicmVhazsKLUBAIC01NjcsNiArNTkzLDcgQEAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5 cGUgKnR5cGUsIGNvbgotIAkgICAgIFRZUEVfQ09ERSAodHlwZSkpOwotICAgICB9Ci0gICBnZGJf Zmx1c2ggKHN0cmVhbSk7Ci0rICBkb19jbGVhbnVwcyAoYmFja190byk7Ci0gICByZXR1cm4gKDAp OwotIH0KLSAMCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcGFyc2UuYwotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvcGFyc2UuYwkyMDExLTA2LTE3 IDIyOjI0OjIyLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Bh cnNlLmMJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xNTAxLDYgKzE1 MDEsNyBAQCBwYXJzZXJfZnByaW50ZiAoRklMRSAqeCwgY29uc3QgY2hhciAqeSwKKyAgIFRSWV9D QVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19BTEwpCisgICAgIHsKK0BAIC0xMTc1LDE0ICsxMTkz LDcgQEAgcGFyc2VfZXhwX2luX2NvbnRleHQgKGNoYXIgKipzdHJpbmdwdHIsIHN0cnVjdCBibG9j ayAqYmxvY2ssIGludCBjb21tYSwKKyAKKyAgIGRpc2NhcmRfY2xlYW51cHMgKG9sZF9jaGFpbik7 CisgCistICAvKiBSZWNvcmQgdGhlIGFjdHVhbCBudW1iZXIgb2YgZXhwcmVzc2lvbiBlbGVtZW50 cywgYW5kIHRoZW4KKy0gICAgIHJlYWxsb2NhdGUgdGhlIGV4cHJlc3Npb24gbWVtb3J5IHNvIHRo YXQgd2UgZnJlZSB1cCBhbnkKKy0gICAgIGV4Y2VzcyBlbGVtZW50cy4gICovCistCistICBleHBv dXQtPm5lbHRzID0gZXhwb3V0X3B0cjsKKy0gIGV4cG91dCA9IChzdHJ1Y3QgZXhwcmVzc2lvbiAq KQorLSAgICB4cmVhbGxvYyAoKGNoYXIgKikgZXhwb3V0LAorLQkgICAgICBzaXplb2YgKHN0cnVj dCBleHByZXNzaW9uKSArIEVYUF9FTEVNX1RPX0JZVEVTIChleHBvdXRfcHRyKSk7CisrICByZWFs bG9jYXRlX2V4cG91dCAoKTsKKyAKKyAgIC8qIENvbnZlcnQgZXhwcmVzc2lvbiBmcm9tIHBvc3Rm aXggZm9ybSBhcyBnZW5lcmF0ZWQgYnkgeWFjYworICAgICAgcGFyc2VyLCB0byBhIHByZWZpeCBm b3JtLiAgKi8KK0BAIC0xNTAyLDYgKzE1MTMsNyBAQCBwYXJzZXJfZnByaW50ZiAoRklMRSAqeCwg Y29uc3QgY2hhciAqeSwgLi4uKQogIAogIGludAogIG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJkIChz dHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLApAQCAtNTk3Miw3ICs2NzYyLDcgQEAgSW5k ZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3BhcnNlLmMKICAJCQkgaW50ICgqb2JqZmlsZV9m dW5jKSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiAgCQkJCQkgICAgICB2b2lkICpkYXRhKSwK ICAJCQkgdm9pZCAqZGF0YSkKLUBAIC0xNTQyLDcgKzE1NDMsNyBAQCBvcGVyYXRvcl9jaGVja19z dGFuZGFyZCAoc3RydWN0IGV4cHJlc3NpCitAQCAtMTU0Myw3ICsxNTU1LDcgQEAgb3BlcmF0b3Jf Y2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCiAgCSAgICBz dHJ1Y3QgdHlwZSAqdHlwZSA9IGVsdHNbcG9zICsgMiArIGFyZ10udHlwZTsKICAJICAgIHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlID0gVFlQRV9PQkpGSUxFICh0eXBlKTsKICAKQEAgLTU5ODEsNyAr Njc3MSw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9wYXJzZS5jCiAgCSAgICAg IHJldHVybiAxOwogIAkgIH0KICAgICAgICB9Ci1AQCAtMTU2MCw3ICsxNTYxLDggQEAgb3BlcmF0 b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaQorQEAgLTE1NjEsNyArMTU3Myw4IEBA IG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9z LAogIAogIAkvKiBDaGVjayBvYmpmaWxlIHdoZXJlIHRoZSB2YXJpYWJsZSBpdHNlbGYgaXMgcGxh Y2VkLgogIAkgICBTWU1CT0xfT0JKX1NFQ1RJT04gKHN5bWJvbCkgbWF5IGJlIE5VTEwuICAqLwpA QCAtNTk5MSw3ICs2NzgxLDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3BhcnNl LmMKICAJICByZXR1cm4gMTsKICAKICAJLyogQ2hlY2sgb2JqZmlsZSB3aGVyZSBpcyBwbGFjZWQg dGhlIGNvZGUgdG91Y2hpbmcgdGhlIHZhcmlhYmxlLiAgKi8KLUBAIC0xNTczLDI0ICsxNTc1LDI3 IEBAIG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2kKK0BAIC0xNTc0LDI0 ICsxNTg3LDI3IEBAIG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAq ZXhwLCBpbnQgcG9zLAogIAogICAgLyogSW52b2tlIGNhbGxiYWNrcyBmb3IgVFlQRSBhbmQgT0JK RklMRSBpZiB0aGV5IHdlcmUgc2V0IGFzIG5vbi1OVUxMLiAgKi8KICAKQEAgLTYwMjcsNyArNjgx Nyw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9wYXJzZS5jCiAgCSAgICAgaW50 ICgqb2JqZmlsZV9mdW5jKSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmRhdGEpLAog IAkgICAgIHZvaWQgKmRhdGEpCiAgewotQEAgLTE2MDUsNyArMTYxMCw5IEBAIGV4cF9pdGVyYXRl IChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAorQEAgLTE2MDYsNyArMTYyMiw5IEBAIGV4cF9pdGVy YXRlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAogIAogICAgICAgIHBvcyA9IGVuZHBvcyAtIG9w bGVuOwogICAgICAgIGlmIChleHAtPmxhbmd1YWdlX2RlZm4tPmxhX2V4cF9kZXNjLT5vcGVyYXRv cl9jaGVjayAoZXhwLCBwb3MsCkBAIC02MDM4LDcgKzY4MjgsNyBAQCBJbmRleDogZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvcGFyc2UuYwogIAlyZXR1cm4gMTsKICAKICAgICAgICBlbmRwb3MgPSBw b3M7Ci1AQCAtMTYzNiw4ICsxNjQzLDI5IEBAIGV4cF91c2VzX29iamZpbGUgKHN0cnVjdCBleHBy ZXNzaW9uICpleHAKK0BAIC0xNjM3LDggKzE2NTUsMjkgQEAgZXhwX3VzZXNfb2JqZmlsZSAoc3Ry dWN0IGV4cHJlc3Npb24gKmV4cCwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCiAgewogICAgZ2Ri X2Fzc2VydCAob2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZV9iYWNrbGluayA9PSBOVUxM KTsKICAKQEAgLTYwNjksMTEgKzY4NTksMzYgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL3BhcnNlLmMKICAKICB2b2lkCiAgX2luaXRpYWxpemVfcGFyc2UgKHZvaWQpCi1JbmRleDog Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcGFyc2VyLWRlZnMuaAotPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvcGFyc2VyLWRlZnMuaAkyMDExLTAxLTEwIDIxOjM4 OjQ5LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3BhcnNlci1k ZWZzLmgJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xOTQsNiArMTk0 LDggQEAgZXh0ZXJuIHZvaWQgb3BlcmF0b3JfbGVuZ3RoX3N0YW5kYXJkIChjbworZGlmZiAtLWdp dCBhL2dkYi9wYXJzZXItZGVmcy5oIGIvZ2RiL3BhcnNlci1kZWZzLmgKK2luZGV4IGJjYTgwMTQu LmVjYzQzNmUgMTAwNjQ0CistLS0gYS9nZGIvcGFyc2VyLWRlZnMuaAorKysrIGIvZ2RiL3BhcnNl ci1kZWZzLmgKK0BAIC0xMzEsNiArMTMxLDI0IEBAIHVuaW9uIHR5cGVfc3RhY2tfZWx0CisgZXh0 ZXJuIHVuaW9uIHR5cGVfc3RhY2tfZWx0ICp0eXBlX3N0YWNrOworIGV4dGVybiBpbnQgdHlwZV9z dGFja19kZXB0aCwgdHlwZV9zdGFja19zaXplOworIAorKy8qIEFsbG9jYXRlIGFuZCBpbml0aWFs aXplIGBleHBvdXQnIGFuZCBpdHMgcmVsYXRlZCB2YXJpYWJsZXMgYGV4cG91dF9zaXplJworKyAg IGFuZCBgZXhwb3V0X3B0cicuCisrCisrICAgVGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSBpbml0 aWFsIHNpemUgdG8gYmUgdXNlZCBmb3IgeG1hbGxvYy4gIFRoZSBzZWNvbmQKKysgICBhcmd1bWVu dCBpcyB0aGUgbGFuZ3VhZ2UgcmVsYXRlZCB0byB0aGUgZXhwcmVzc2lvbi4gIFRoZSB0aGlyZCBh cmd1bWVudCBpcworKyAgIGNvcnJlc3BvbmRpbmcgZ2RiYXJjaC4gICovCisrCisrZXh0ZXJuIHZv aWQgaW5pdGlhbGl6ZV9leHBvdXQgKGludCwgY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gKiwK KysJCQkgICAgICAgc3RydWN0IGdkYmFyY2ggKik7CisrCisrLyogUmVhbGxvY2F0ZSBgZXhwb3V0 JyBpbiBvcmRlciB0byBmcmVlIGV4Y2Vzc2l2ZSBlbGVtZW50cyB0aGF0IG1pZ2h0IGhhdmUKKysg ICBiZWVuIGNyZWF0ZWQgZHVyaW5nIHRoZSBwYXJzaW5nLiAgU2V0IHRoZSBudW1iZXIgb2YgZWxl bWVudHMKKysgICBhY2NvcmRpbmdseS4gICovCisrCisrZXh0ZXJuIHZvaWQgcmVhbGxvY2F0ZV9l eHBvdXQgKHZvaWQpOworKworK2V4dGVybiBpbnQgcHJlZml4aWZ5X2V4cHJlc3Npb24gKHN0cnVj dCBleHByZXNzaW9uICpleHByKTsKKysKKyBleHRlcm4gdm9pZCB3cml0ZV9leHBfZWx0X29wY29k ZSAoZW51bSBleHBfb3Bjb2RlKTsKKyAKKyBleHRlcm4gdm9pZCB3cml0ZV9leHBfZWx0X3N5bSAo c3RydWN0IHN5bWJvbCAqKTsKK0BAIC0xOTIsNiArMjEwLDggQEAgZXh0ZXJuIHZvaWQgb3BlcmF0 b3JfbGVuZ3RoX3N0YW5kYXJkIChjb25zdCBzdHJ1Y3QgZXhwcmVzc2lvbiAqLCBpbnQsIGludCAq LAogIAkJCQkgICAgICBpbnQgKik7CiAgCiAgZXh0ZXJuIGludCBvcGVyYXRvcl9jaGVja19zdGFu ZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKQEAgLTYwODIsNyArNjg5Nyw3 IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9wYXJzZXItZGVmcy5oCiAgCQkJCSAg ICBpbnQgKCpvYmpmaWxlX2Z1bmMpCiAgCQkJCSAgICAgIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwgdm9pZCAqZGF0YSksCiAgCQkJCSAgICB2b2lkICpkYXRhKTsKLUBAIC0yOTEsNiArMjkzLDcg QEAgc3RydWN0IGV4cF9kZXNjcmlwdG9yCitAQCAtMjg5LDYgKzMwOSw3IEBAIHN0cnVjdCBleHBf ZGVzY3JpcHRvcgogICAgICAgICB2YWx1ZSBzaG91bGQgYmUgaW1tZWRpYXRlbHkgcmV0dXJuZWQg dG8gdGhlIGNhbGxlci4gIE90aGVyd2lzZSB6ZXJvCiAgICAgICAgIHNob3VsZCBiZSByZXR1cm5l ZC4gICovCiAgICAgIGludCAoKm9wZXJhdG9yX2NoZWNrKSAoc3RydWN0IGV4cHJlc3Npb24gKmV4 cCwgaW50IHBvcywKQEAgLTYwOTAsNyArNjkwNSw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi9wYXJzZXItZGVmcy5oCiAgCQkJICAgaW50ICgqb2JqZmlsZV9mdW5jKSAoc3RydWN0 IG9iamZpbGUgKm9iamZpbGUsCiAgCQkJCQkJdm9pZCAqZGF0YSksCiAgCQkJICAgdm9pZCAqZGF0 YSk7Ci1AQCAtMzI5LDQgKzMzMiwxMCBAQCBleHRlcm4gdm9pZCBwYXJzZXJfZnByaW50ZiAoRklM RSAqLCBjb25zCitAQCAtMzI3LDQgKzM0OCwxMCBAQCBleHRlcm4gdm9pZCBwYXJzZXJfZnByaW50 ZiAoRklMRSAqLCBjb25zdCBjaGFyICosIC4uLikgQVRUUklCVVRFX1BSSU5URiAoMiwgMyk7CiAg CiAgZXh0ZXJuIGludCBleHBfdXNlc19vYmpmaWxlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CiAgCkBAIC02MTAxLDExMyArNjkxNiwyNDkgQEAgSW5k ZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3BhcnNlci1kZWZzLmgKICsjZW5kaWYKICsKICAj ZW5kaWYgLyogUEFSU0VSX0RFRlNfSCAqLwotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L3BwYy1saW51eC1uYXQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3Jp Zy9nZGIvcHBjLWxpbnV4LW5hdC5jCTIwMTEtMDUtMDYgMjA6NDY6MzEuMDAwMDAwMDAwICswMjAw Ci0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHBjLWxpbnV4LW5hdC5jCTIwMTEtMDctMjkg MjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCi1AQCAtMTY0Nyw2ICsxNjQ3LDE0IEBAIHBwY19saW51 eF9yYW5nZWRfYnJlYWtfbnVtX3JlZ2lzdGVycyAoc3QKLSAJICAyIDogLTEpOworZGlmZiAtLWdp dCBhL2dkYi9wcGMtbGludXgtbmF0LmMgYi9nZGIvcHBjLWxpbnV4LW5hdC5jCitpbmRleCBjYzI5 YWQ4Li45NDkwMGM5IDEwMDY0NAorLS0tIGEvZ2RiL3BwYy1saW51eC1uYXQuYworKysrIGIvZ2Ri L3BwYy1saW51eC1uYXQuYworQEAgLTE0NjksMTQgKzE0NjksMTMgQEAgcHBjX2xpbnV4X2Nhbl91 c2VfaHdfYnJlYWtwb2ludCAoaW50IHR5cGUsIGludCBjbnQsIGludCBvdCkKKyAgIGlmICghaGF2 ZV9wdHJhY2VfYm9va2VfaW50ZXJmYWNlICgpKQorICAgICB7CisgICAgICAgaW50IHRpZDsKKy0g ICAgICBwdGlkX3QgcHRpZCA9IGluZmVyaW9yX3B0aWQ7CisgCisgICAgICAgLyogV2UgbmVlZCB0 byBrbm93IHdoZXRoZXIgcHRyYWNlIHN1cHBvcnRzIFBUUkFDRV9TRVRfREVCVUdSRUcKKyAJIGFu ZCB3aGV0aGVyIHRoZSB0YXJnZXQgaGFzIERBQlIuICBJZiBlaXRoZXIgYW5zd2VyIGlzIG5vLCB0 aGUKKyAJIHB0cmFjZSBjYWxsIHdpbGwgcmV0dXJuIC0xLiAgRmFpbCBpbiB0aGF0IGNhc2UuICAq LworLSAgICAgIHRpZCA9IFRJREdFVCAocHRpZCk7CisrICAgICAgdGlkID0gVElER0VUIChpbmZl cmlvcl9wdGlkKTsKKyAgICAgICBpZiAodGlkID09IDApCistCXRpZCA9IFBJREdFVCAocHRpZCk7 CisrCXRpZCA9IFBJREdFVCAoaW5mZXJpb3JfcHRpZCk7CisgCisgICAgICAgaWYgKHB0cmFjZSAo UFRSQUNFX1NFVF9ERUJVR1JFRywgdGlkLCAwLCAwKSA9PSAtMSkKKyAJcmV0dXJuIDA7CitAQCAt MTU2Nyw4ICsxNTY2LDkgQEAgYm9va2VfZmluZF90aHJlYWRfcG9pbnRzX2J5X3RpZCAoaW50IHRp ZCwgaW50IGFsbG9jX25ldykKKyAvKiBUaGlzIGZ1bmN0aW9uIGlzIGEgZ2VuZXJpYyB3cmFwcGVy IHRoYXQgaXMgcmVzcG9uc2libGUgZm9yIGluc2VydGluZyBhCisgICAgKnBvaW50IChpLmUuLCBj YWxsaW5nIGBwdHJhY2UnIGluIG9yZGVyIHRvIGlzc3VlIHRoZSByZXF1ZXN0IHRvIHRoZQorICAg IGtlcm5lbCkgYW5kIHJlZ2lzdGVyaW5nIGl0IGludGVybmFsbHkgaW4gR0RCLiAgKi8KKysKKyBz dGF0aWMgdm9pZAorLWJvb2tlX2luc2VydF9wb2ludCAoc3RydWN0IHBwY19od19icmVha3BvaW50 ICpiLCBpbnQgdGlkKQorK2Jvb2tlX2luc2VydF9wb2ludCAoc3RydWN0IGx3cF9pbmZvICpscCwg c3RydWN0IHBwY19od19icmVha3BvaW50ICpiKQorIHsKKyAgIGludCBpOworICAgbG9uZyBzbG90 OworQEAgLTE1ODEsMTIgKzE1ODEsMTIgQEAgYm9va2VfaW5zZXJ0X3BvaW50IChzdHJ1Y3QgcHBj X2h3X2JyZWFrcG9pbnQgKmIsIGludCB0aWQpCisgICBtZW1jcHkgKHAsIGIsIHNpemVvZiAoc3Ry dWN0IHBwY19od19icmVha3BvaW50KSk7CisgCisgICBlcnJubyA9IDA7CistICBzbG90ID0gcHRy YWNlIChQUENfUFRSQUNFX1NFVEhXREVCVUcsIHRpZCwgMCwgcCk7CisrICBzbG90ID0gcHRyYWNl IChQUENfUFRSQUNFX1NFVEhXREVCVUcsIFRJREdFVCAobHAtPnB0aWQpLCAwLCBwKTsKKyAgIGlm IChzbG90IDwgMCkKKyAgICAgcGVycm9yX3dpdGhfbmFtZSAoXygiVW5leHBlY3RlZCBlcnJvciBz ZXR0aW5nIGJyZWFrcG9pbnQgb3Igd2F0Y2hwb2ludCIpKTsKKyAKKyAgIC8qIEV2ZXJ5dGhpbmcg d2VudCBmaW5lLCBzbyB3ZSBoYXZlIHRvIHJlZ2lzdGVyIHRoaXMgKnBvaW50LiAgKi8KKy0gIHQg PSBib29rZV9maW5kX3RocmVhZF9wb2ludHNfYnlfdGlkICh0aWQsIDEpOworKyAgdCA9IGJvb2tl X2ZpbmRfdGhyZWFkX3BvaW50c19ieV90aWQgKFRJREdFVCAobHAtPnB0aWQpLCAxKTsKKyAgIGdk Yl9hc3NlcnQgKHQgIT0gTlVMTCk7CisgICBod19icmVha3MgPSB0LT5od19icmVha3M7CisgCitA QCAtMTYwNCwxNyArMTYwNCwzMyBAQCBib29rZV9pbnNlcnRfcG9pbnQgKHN0cnVjdCBwcGNfaHdf YnJlYWtwb2ludCAqYiwgaW50IHRpZCkKKyAgIGRpc2NhcmRfY2xlYW51cHMgKGMpOwogIH0KICAK LStzdGF0aWMgdm9pZAotK2Jvb2tlX2luc2VydF9wb2ludF9jYWxsYmFjayAoaW50IHRpZCwgdm9p ZCAqcHBfdm9pZHApCi0rewotKyAgc3RydWN0IHBwY19od19icmVha3BvaW50ICpwcCA9IHBwX3Zv aWRwOworLS8qIFRoaXMgZnVuY3Rpb24gaXMgYSBnZW5lcmljIHdyYXBwZXIgdGhhdCBpcyByZXNw b25zaWJsZSBmb3IgcmVtb3ZpbmcgYQorLSAgICpwb2ludCAoaS5lLiwgY2FsbGluZyBgcHRyYWNl JyBpbiBvcmRlciB0byBpc3N1ZSB0aGUgcmVxdWVzdCB0byB0aGUKKy0gICBrZXJuZWwpLCBhbmQg dW5yZWdpc3RlcmluZyBpdCBpbnRlcm5hbGx5IGF0IEdEQi4gICovCistc3RhdGljIHZvaWQKKy1i b29rZV9yZW1vdmVfcG9pbnQgKHN0cnVjdCBwcGNfaHdfYnJlYWtwb2ludCAqYiwgaW50IHRpZCkK KysvKiBDYWxsYmFjayBmb3IgbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzCisrICAg Y2FsbGluZyBib29rZV9pbnNlcnRfcG9pbnQuICAqLworKworK3N0YXRpYyBpbnQKKytib29rZV9p bnNlcnRfcG9pbnRfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAqbHAsIHZvaWQgKmJfdm9pZHAp CisgeworKyAgc3RydWN0IHBwY19od19icmVha3BvaW50ICpiID0gYl92b2lkcDsKICsKLSsgIGJv b2tlX2luc2VydF9wb2ludCAocHAsIHRpZCk7CisrICBib29rZV9pbnNlcnRfcG9pbnQgKGxwLCBi KTsKKysKKysgIC8qIENvbnRpbnVlIHRoZSB0cmF2ZXJzYWwuICAqLworKyAgcmV0dXJuIDA7CiAr fQogKwotIC8qIEluc2VydCB0aGUgaGFyZHdhcmUgYnJlYWtwb2ludCBkZXNjcmliZWQgYnkgQlBf VEdULiAgUmV0dXJucyAwIGZvcgotICAgIHN1Y2Nlc3MsIDEgaWYgaGFyZHdhcmUgYnJlYWtwb2lu dHMgYXJlIG5vdCBzdXBwb3J0ZWQgb3IgLTEgZm9yIGZhaWx1cmUuICAqLworKy8qIFRoaXMgZnVu Y3Rpb24gaXMgYSBjYWxsYmFjayBmb3IgbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3Bz IHRoYXQgaXMKKysgICByZXNwb25zaWJsZSBmb3IgcmVtb3ZpbmcgYSAqcG9pbnQgKGkuZS4sIGNh bGxpbmcgYHB0cmFjZScgaW4gb3JkZXIgdG8gaXNzdWUKKysgICB0aGUgcmVxdWVzdCB0byB0aGUg a2VybmVsKSwgYW5kIHVucmVnaXN0ZXJpbmcgaXQgaW50ZXJuYWxseSBhdCBHREIuICAqLworKwor K3N0YXRpYyBpbnQKKytib29rZV9yZW1vdmVfcG9pbnRfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5m byAqbHAsIHZvaWQgKmJfdm9pZHApCisreworKyAgc3RydWN0IHBwY19od19icmVha3BvaW50ICpi ID0gYl92b2lkcDsKKyAgIGludCBpOworICAgc3RydWN0IGh3X2JyZWFrX3R1cGxlICpod19icmVh a3M7CisgICBzdHJ1Y3QgdGhyZWFkX3BvaW50cyAqdDsKKyAKKy0gIHQgPSBib29rZV9maW5kX3Ro cmVhZF9wb2ludHNfYnlfdGlkICh0aWQsIDApOworKyAgdCA9IGJvb2tlX2ZpbmRfdGhyZWFkX3Bv aW50c19ieV90aWQgKFRJREdFVCAobHAtPnB0aWQpLCAwKTsKKyAgIGdkYl9hc3NlcnQgKHQgIT0g TlVMTCk7CisgICBod19icmVha3MgPSB0LT5od19icmVha3M7CisgCitAQCAtMTYyOCwxMyArMTY0 NCwxNyBAQCBib29rZV9yZW1vdmVfcG9pbnQgKHN0cnVjdCBwcGNfaHdfYnJlYWtwb2ludCAqYiwg aW50IHRpZCkKKyAgICAgIGJyZWFrcG9pbnRzL3dhdGNocG9pbnRzIGFzICJvbmUtc2hvdCIsIHRo YXQgaXMsIHRoZXkgYXJlIGF1dG9tYXRpY2FsbHkKKyAgICAgIGRlbGV0ZWQgd2hlbiBoaXQuICAq LworICAgZXJybm8gPSAwOworLSAgaWYgKHB0cmFjZSAoUFBDX1BUUkFDRV9ERUxIV0RFQlVHLCB0 aWQsIDAsIGh3X2JyZWFrc1tpXS5zbG90KSA8IDApCisrICBpZiAocHRyYWNlIChQUENfUFRSQUNF X0RFTEhXREVCVUcsIFRJREdFVCAobHAtPnB0aWQpLCAwLCBod19icmVha3NbaV0uc2xvdCkKKysg ICAgICA8IDApCisgICAgIGlmIChlcnJubyAhPSBFTk9FTlQpCisgICAgICAgcGVycm9yX3dpdGhf bmFtZSAoXygiVW5leHBlY3RlZCBlcnJvciBkZWxldGluZyAiCisgCQkJICAiYnJlYWtwb2ludCBv ciB3YXRjaHBvaW50IikpOworIAorICAgeGZyZWUgKGh3X2JyZWFrc1tpXS5od19icmVhayk7Cisg ICBod19icmVha3NbaV0uaHdfYnJlYWsgPSBOVUxMOworKworKyAgLyogQ29udGludWUgdGhlIHRy YXZlcnNhbC4gICovCisrICByZXR1cm4gMDsKKyB9CiAgCi1AQCAtMTY1NCw4ICsxNjYyLDYgQEAg c3RhdGljIGludAorIC8qIFJldHVybiB0aGUgbnVtYmVyIG9mIHJlZ2lzdGVycyBuZWVkZWQgZm9y IGEgcmFuZ2VkIGJyZWFrcG9pbnQuICAqLworQEAgLTE2NTQsNyArMTY3NCw2IEBAIHN0YXRpYyBp bnQKICBwcGNfbGludXhfaW5zZXJ0X2h3X2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLAogIAkJCQkgIHN0cnVjdCBicF90YXJnZXRfaW5mbyAqYnBfdGd0KQogIHsKLS0gIHB0aWRf dCBwdGlkOwogLSAgc3RydWN0IGx3cF9pbmZvICpscDsKICAgIHN0cnVjdCBwcGNfaHdfYnJlYWtw b2ludCBwOwogIAogICAgaWYgKCFoYXZlX3B0cmFjZV9ib29rZV9pbnRlcmZhY2UgKCkpCi1AQCAt MTY4MSwxOCArMTY4NywyMyBAQCBwcGNfbGludXhfaW5zZXJ0X2h3X2JyZWFrcG9pbnQgKHN0cnVj dCBnCitAQCAtMTY4MCw4ICsxNjk5LDcgQEAgcHBjX2xpbnV4X2luc2VydF9od19icmVha3BvaW50 IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKICAgICAgICBwLmFkZHIyID0gMDsKICAgICAgfQog IAotLSAgQUxMX0xXUFMgKGxwLCBwdGlkKQotLSAgICBib29rZV9pbnNlcnRfcG9pbnQgKCZwLCBU SURHRVQgKHB0aWQpKTsKKy0gIEFMTF9MV1BTIChscCkKKy0gICAgYm9va2VfaW5zZXJ0X3BvaW50 ICgmcCwgVElER0VUIChscC0+cHRpZCkpOwogKyAgbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2lu dF9sd3BzIChib29rZV9pbnNlcnRfcG9pbnRfY2FsbGJhY2ssICZwKTsKICAKICAgIHJldHVybiAw OwogIH0KLSAKLStzdGF0aWMgdm9pZAotK2Jvb2tlX3JlbW92ZV9wb2ludF9jYWxsYmFjayAoaW50 IHRpZCwgdm9pZCAqcHBfdm9pZHApCi0rewotKyAgc3RydWN0IHBwY19od19icmVha3BvaW50ICpw cCA9IHBwX3ZvaWRwOwotKwotKyAgYm9va2VfcmVtb3ZlX3BvaW50IChwcCwgdGlkKTsKLSt9Ci0r Ci0gc3RhdGljIGludAorQEAgLTE2OTAsNyArMTcwOCw2IEBAIHN0YXRpYyBpbnQKICBwcGNfbGlu dXhfcmVtb3ZlX2h3X2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAogIAkJCQkg IHN0cnVjdCBicF90YXJnZXRfaW5mbyAqYnBfdGd0KQogIHsKLS0gIHB0aWRfdCBwdGlkOwogLSAg c3RydWN0IGx3cF9pbmZvICpscDsKICAgIHN0cnVjdCBwcGNfaHdfYnJlYWtwb2ludCBwOwogIAog ICAgaWYgKCFoYXZlX3B0cmFjZV9ib29rZV9pbnRlcmZhY2UgKCkpCi1AQCAtMTcxOCw4ICsxNzI5 LDcgQEAgcHBjX2xpbnV4X3JlbW92ZV9od19icmVha3BvaW50IChzdHJ1Y3QgZworQEAgLTE3MTYs OCArMTczMyw3IEBAIHBwY19saW51eF9yZW1vdmVfaHdfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gsCiAgICAgICAgcC5hZGRyMiA9IDA7CiAgICAgIH0KICAKLS0gIEFMTF9MV1BT IChscCwgcHRpZCkKLS0gICAgYm9va2VfcmVtb3ZlX3BvaW50ICgmcCwgVElER0VUIChwdGlkKSk7 CistICBBTExfTFdQUyAobHApCistICAgIGJvb2tlX3JlbW92ZV9wb2ludCAoJnAsIFRJREdFVCAo bHAtPnB0aWQpKTsKICsgIGxpbnV4X25hdF9pdGVyYXRlX3dhdGNocG9pbnRfbHdwcyAoYm9va2Vf cmVtb3ZlX3BvaW50X2NhbGxiYWNrLCAmcCk7CiAgCiAgICByZXR1cm4gMDsKICB9Ci1AQCAtMjAw NCw2ICsyMDE0LDE1IEBAIHBwY19saW51eF9jYW5fYWNjZWxfd2F0Y2hwb2ludF9jb25kaXRpb24K K0BAIC0xNzQ2LDcgKzE3NjIsNiBAQCBzdGF0aWMgaW50CisgcHBjX2xpbnV4X2luc2VydF9tYXNr X3dhdGNocG9pbnQgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsIENPUkVfQUREUiBhZGRyLAorIAkJ CQkgIENPUkVfQUREUiBtYXNrLCBpbnQgcncpCisgeworLSAgc3RydWN0IGx3cF9pbmZvICpscDsK KyAgIHN0cnVjdCBwcGNfaHdfYnJlYWtwb2ludCBwOworIAorICAgZ2RiX2Fzc2VydCAoaGF2ZV9w dHJhY2VfYm9va2VfaW50ZXJmYWNlICgpKTsKK0BAIC0xNzU5LDggKzE3NzQsNyBAQCBwcGNfbGlu dXhfaW5zZXJ0X21hc2tfd2F0Y2hwb2ludCAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywgQ09SRV9B RERSIGFkZHIsCisgICBwLmFkZHIyID0gbWFzazsKKyAgIHAuY29uZGl0aW9uX3ZhbHVlID0gMDsK KyAKKy0gIEFMTF9MV1BTIChscCkKKy0gICAgYm9va2VfaW5zZXJ0X3BvaW50ICgmcCwgVElER0VU IChscC0+cHRpZCkpOworKyAgbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzIChib29r ZV9pbnNlcnRfcG9pbnRfY2FsbGJhY2ssICZwKTsKKyAKKyAgIHJldHVybiAwOworIH0KK0BAIC0x Nzc0LDcgKzE3ODgsNiBAQCBzdGF0aWMgaW50CisgcHBjX2xpbnV4X3JlbW92ZV9tYXNrX3dhdGNo cG9pbnQgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsIENPUkVfQUREUiBhZGRyLAorIAkJCQkgIENP UkVfQUREUiBtYXNrLCBpbnQgcncpCisgeworLSAgc3RydWN0IGx3cF9pbmZvICpscDsKKyAgIHN0 cnVjdCBwcGNfaHdfYnJlYWtwb2ludCBwOworIAorICAgZ2RiX2Fzc2VydCAoaGF2ZV9wdHJhY2Vf Ym9va2VfaW50ZXJmYWNlICgpKTsKK0BAIC0xNzg3LDggKzE4MDAsNyBAQCBwcGNfbGludXhfcmVt b3ZlX21hc2tfd2F0Y2hwb2ludCAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywgQ09SRV9BRERSIGFk ZHIsCisgICBwLmFkZHIyID0gbWFzazsKKyAgIHAuY29uZGl0aW9uX3ZhbHVlID0gMDsKKyAKKy0g IEFMTF9MV1BTIChscCkKKy0gICAgYm9va2VfcmVtb3ZlX3BvaW50ICgmcCwgVElER0VUIChscC0+ cHRpZCkpOworKyAgbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzIChib29rZV9yZW1v dmVfcG9pbnRfY2FsbGJhY2ssICZwKTsKKyAKKyAgIHJldHVybiAwOworIH0KK0BAIC0xNzk4LDEw ICsxODEwLDE2IEBAIHN0YXRpYyBpbnQKKyBjYW5fdXNlX3dhdGNocG9pbnRfY29uZF9hY2NlbCAo dm9pZCkKKyB7CisgICBzdHJ1Y3QgdGhyZWFkX3BvaW50cyAqcDsKKy0gIGludCB0aWQgPSBUSURH RVQgKGluZmVyaW9yX3B0aWQpOworICAgaW50IGNudCA9IGJvb2tlX2RlYnVnX2luZm8ubnVtX2Nv bmRpdGlvbl9yZWdzLCBpOworICAgQ09SRV9BRERSIHRtcF92YWx1ZTsKKyAKKysgIC8qIE92ZXJs b2FkIHRocmVhZCBpZCBvbnRvIHByb2Nlc3MgaWQuICAqLworKyAgaW50IHRpZCA9IFRJREdFVCAo aW5mZXJpb3JfcHRpZCk7CisrCisrICAvKiBObyB0aHJlYWQgaWQsIGp1c3QgdXNlIHByb2Nlc3Mg aWQuICAqLworKyAgaWYgKHRpZCA9PSAwKQorKyAgICB0aWQgPSBQSURHRVQgKGluZmVyaW9yX3B0 aWQpOworKworICAgaWYgKCFoYXZlX3B0cmFjZV9ib29rZV9pbnRlcmZhY2UgKCkgfHwgY250ID09 IDApCisgICAgIHJldHVybiAwOworIAorQEAgLTIwMDAsNiArMjAxOCwyMiBAQCBwcGNfbGludXhf Y2FuX2FjY2VsX3dhdGNocG9pbnRfY29uZGl0aW9uIChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwg aW50IHJ3LAogIAkgICYmIGNoZWNrX2NvbmRpdGlvbiAoYWRkciwgY29uZCwgJmRhdGFfdmFsdWUs ICZsZW4pKTsKICB9CiAgCi0rc3RhdGljIHZvaWQKLStzZXRfc2F2ZWRfZGFicl92YWx1ZV9jYWxs YmFjayAoaW50IHRpZCwgdm9pZCAqcmV0cF92b2lkcCkKKysvKiBDYWxsYmFjayBmb3IgbGludXhf bmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzIHNldHRpbmcgUkVUUF9WT0lEUCBieQorKyAgIFBU UkFDRV9TRVRfREVCVUdSRUcgZm9yIExQLiAgKi8KKysKKytzdGF0aWMgaW50Cisrc2V0X3NhdmVk X2RhYnJfdmFsdWVfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAqbHAsIHZvaWQgKnJldHBfdm9p ZHApCiArewogKyAgaW50ICpyZXRwID0gcmV0cF92b2lkcDsKICsKLSsgIGlmIChwdHJhY2UgKFBU UkFDRV9TRVRfREVCVUdSRUcsIHRpZCwgMCwgc2F2ZWRfZGFicl92YWx1ZSkgPCAwKQorKyAgaWYg KHB0cmFjZSAoUFRSQUNFX1NFVF9ERUJVR1JFRywgVElER0VUIChscC0+cHRpZCksIDAsIHNhdmVk X2RhYnJfdmFsdWUpCisrICAgICAgPCAwKQogKyAgICAqcmV0cCA9IC0xOworKworKyAgLyogQ29u dGludWUgdGhlIHRyYXZlcnNhbC4gICovCisrICByZXR1cm4gMDsKICt9CiArCiAgLyogU2V0IHVw IFAgd2l0aCB0aGUgcGFyYW1ldGVycyBuZWNlc3NhcnkgdG8gcmVxdWVzdCBhIHdhdGNocG9pbnQg Y292ZXJpbmcKICAgICBMRU4gYnl0ZXMgc3RhcnRpbmcgYXQgQUREUiBhbmQgaWYgcG9zc2libGUg d2l0aCBjb25kaXRpb24gZXhwcmVzc2lvbiBDT05ECiAgICAgZXZhbHVhdGVkIGJ5IGhhcmR3YXJl LiAgSU5TRVJUIHRlbGxzIGlmIHdlIGFyZSBjcmVhdGluZyBhIHJlcXVlc3QgZm9yCi1AQCAtMjA1 OCw4ICsyMDc3LDYgQEAgc3RhdGljIGludAorQEAgLTIwNTUsNyArMjA4OSw2IEBAIHN0YXRpYyBp bnQKICBwcGNfbGludXhfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVu LCBpbnQgcncsCiAgCQkJICAgICBzdHJ1Y3QgZXhwcmVzc2lvbiAqY29uZCkKICB7CiAtICBzdHJ1 Y3QgbHdwX2luZm8gKmxwOwotLSAgcHRpZF90IHB0aWQ7CiAgICBpbnQgcmV0ID0gLTE7CiAgCiAg ICBpZiAoaGF2ZV9wdHJhY2VfYm9va2VfaW50ZXJmYWNlICgpKQotQEAgLTIwNjgsOCArMjA4NSw3 IEBAIHBwY19saW51eF9pbnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGEKK0BAIC0yMDY0LDgg KzIwOTcsNyBAQCBwcGNfbGludXhfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBp bnQgbGVuLCBpbnQgcncsCiAgCiAgICAgICAgY3JlYXRlX3dhdGNocG9pbnRfcmVxdWVzdCAoJnAs IGFkZHIsIGxlbiwgcncsIGNvbmQsIDEpOwogIAotLSAgICAgIEFMTF9MV1BTIChscCwgcHRpZCkK LS0JYm9va2VfaW5zZXJ0X3BvaW50ICgmcCwgVElER0VUIChwdGlkKSk7CistICAgICAgQUxMX0xX UFMgKGxwKQorLQlib29rZV9pbnNlcnRfcG9pbnQgKCZwLCBUSURHRVQgKGxwLT5wdGlkKSk7CiAr ICAgICAgbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzIChib29rZV9pbnNlcnRfcG9p bnRfY2FsbGJhY2ssICZwKTsKICAKICAgICAgICByZXQgPSAwOwogICAgICB9Ci1AQCAtMjExMiwx MiArMjEyOCw4IEBAIHBwY19saW51eF9pbnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGEKK0BA IC0yMTA4LDEyICsyMTQwLDggQEAgcHBjX2xpbnV4X2luc2VydF93YXRjaHBvaW50IChDT1JFX0FE RFIgYWRkciwgaW50IGxlbiwgaW50IHJ3LAogIAogICAgICAgIHNhdmVkX2RhYnJfdmFsdWUgPSBk YWJyX3ZhbHVlOwogIAotLSAgICAgIEFMTF9MV1BTIChscCwgcHRpZCkKLS0JaWYgKHB0cmFjZSAo UFRSQUNFX1NFVF9ERUJVR1JFRywgVElER0VUIChwdGlkKSwgMCwKKy0gICAgICBBTExfTFdQUyAo bHApCistCWlmIChwdHJhY2UgKFBUUkFDRV9TRVRfREVCVUdSRUcsIFRJREdFVCAobHAtPnB0aWQp LCAwLAogLQkJICAgIHNhdmVkX2RhYnJfdmFsdWUpIDwgMCkKIC0JICByZXR1cm4gLTE7CiAtCkBA IC02MjE2LDIxICs3MTY3LDIwIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9wcGMt bGludXgtbmF0LmMKICAgICAgfQogIAogICAgcmV0dXJuIHJldDsKLUBAIC0yMTI3LDggKzIxMzks NiBAQCBzdGF0aWMgaW50CitAQCAtMjEyMyw3ICsyMTUxLDYgQEAgc3RhdGljIGludAogIHBwY19s aW51eF9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCBydywK ICAJCQkgICAgIHN0cnVjdCBleHByZXNzaW9uICpjb25kKQogIHsKIC0gIHN0cnVjdCBsd3BfaW5m byAqbHA7Ci0tICBwdGlkX3QgcHRpZDsKICAgIGludCByZXQgPSAtMTsKICAKICAgIGlmIChoYXZl X3B0cmFjZV9ib29rZV9pbnRlcmZhY2UgKCkpCi1AQCAtMjEzNywyMCArMjE0NywxNiBAQCBwcGNf bGludXhfcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBhCitAQCAtMjEzMiwyMCArMjE1OSwx NiBAQCBwcGNfbGludXhfcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVu LCBpbnQgcncsCiAgCiAgICAgICAgY3JlYXRlX3dhdGNocG9pbnRfcmVxdWVzdCAoJnAsIGFkZHIs IGxlbiwgcncsIGNvbmQsIDApOwogIAotLSAgICAgIEFMTF9MV1BTIChscCwgcHRpZCkKLS0JYm9v a2VfcmVtb3ZlX3BvaW50ICgmcCwgVElER0VUIChwdGlkKSk7CistICAgICAgQUxMX0xXUFMgKGxw KQorLQlib29rZV9yZW1vdmVfcG9pbnQgKCZwLCBUSURHRVQgKGxwLT5wdGlkKSk7CiArICAgICAg bGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzIChib29rZV9yZW1vdmVfcG9pbnRfY2Fs bGJhY2ssICZwKTsKICAKICAgICAgICByZXQgPSAwOwpAQCAtNjIzOCw4ICs3MTg4LDggQEAgSW5k ZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3BwYy1saW51eC1uYXQuYwogICAgZWxzZQogICAg ICB7CiAgICAgICAgc2F2ZWRfZGFicl92YWx1ZSA9IDA7Ci0tICAgICAgQUxMX0xXUFMgKGxwLCBw dGlkKQotLQlpZiAocHRyYWNlIChQVFJBQ0VfU0VUX0RFQlVHUkVHLCBUSURHRVQgKHB0aWQpLCAw LAorLSAgICAgIEFMTF9MV1BTIChscCkKKy0JaWYgKHB0cmFjZSAoUFRSQUNFX1NFVF9ERUJVR1JF RywgVElER0VUIChscC0+cHRpZCksIDAsCiAtCQkgICAgc2F2ZWRfZGFicl92YWx1ZSkgPCAwKQog LQkgIHJldHVybiAtMTsKICAKQEAgLTYyNDgsMTEgKzcxOTgsMTQ1IEBAIEluZGV4OiBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi9wcGMtbGludXgtbmF0LmMKICAgICAgfQogIAogICAgcmV0dXJuIHJl dDsKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9wcmludGNtZC5jCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9wcmludGNtZC5jCTIwMTEtMDMtMjIg MTU6Mzk6NDAuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHJp bnRjbWQuYwkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAotQEAgLTk3NSw2ICs5 NzUsMTEgQEAgcHJpbnRfY29tbWFuZF8xIChjaGFyICpleHAsIGludCBpbnNwZWN0LAorQEAgLTIx NzIsNyArMjE5NSw3IEBAIHBwY19saW51eF9uZXdfdGhyZWFkIChzdHJ1Y3QgbHdwX2luZm8gKmxw KQorICAgICAgIC8qIENvcHkgdGhhdCB0aHJlYWQncyBicmVha3BvaW50cyBhbmQgd2F0Y2hwb2lu dHMgdG8gdGhlIG5ldyB0aHJlYWQuICAqLworICAgICAgIGZvciAoaSA9IDA7IGkgPCBtYXhfc2xv dHNfbnVtYmVyOyBpKyspCisgCWlmIChod19icmVha3NbaV0uaHdfYnJlYWspCistCSAgYm9va2Vf aW5zZXJ0X3BvaW50IChod19icmVha3NbaV0uaHdfYnJlYWssIHRpZCk7CisrCSAgYm9va2VfaW5z ZXJ0X3BvaW50IChscCwgaHdfYnJlYWtzW2ldLmh3X2JyZWFrKTsKKyAgICAgfQorICAgZWxzZQor ICAgICBwdHJhY2UgKFBUUkFDRV9TRVRfREVCVUdSRUcsIHRpZCwgMCwgc2F2ZWRfZGFicl92YWx1 ZSk7CitAQCAtMjIzMCw3ICsyMjUzLDE0IEBAIHBwY19saW51eF9zdG9wcGVkX2RhdGFfYWRkcmVz cyAoc3RydWN0IHRhcmdldF9vcHMgKnRhcmdldCwgQ09SRV9BRERSICphZGRyX3ApCisgICAgICAg LyogVGhlIGluZGV4IChvciBzbG90KSBvZiB0aGUgKnBvaW50IGlzIHBhc3NlZCBpbiB0aGUgc2lf ZXJybm8gZmllbGQuICAqLworICAgICAgIGludCBzbG90ID0gc2lnaW5mb19wLT5zaV9lcnJubzsK KyAKKy0gICAgICB0ID0gYm9va2VfZmluZF90aHJlYWRfcG9pbnRzX2J5X3RpZCAoVElER0VUIChp bmZlcmlvcl9wdGlkKSwgMCk7CisrICAgICAgLyogT3ZlcmxvYWQgdGhyZWFkIGlkIG9udG8gcHJv Y2VzcyBpZC4gICovCisrICAgICAgaW50IHRpZCA9IFRJREdFVCAoaW5mZXJpb3JfcHRpZCk7Cisr CisrICAgICAgLyogTm8gdGhyZWFkIGlkLCBqdXN0IHVzZSBwcm9jZXNzIGlkLiAgKi8KKysgICAg ICBpZiAodGlkID09IDApCisrCXRpZCA9IFBJREdFVCAoaW5mZXJpb3JfcHRpZCk7CisrCisrICAg ICAgdCA9IGJvb2tlX2ZpbmRfdGhyZWFkX3BvaW50c19ieV90aWQgKHRpZCwgMCk7CisgCisgICAg ICAgLyogRmluZCBvdXQgaWYgdGhpcyAqcG9pbnQgaXMgYSBoYXJkd2FyZSBicmVha3BvaW50Lgor IAkgSWYgc28sIHdlIHNob3VsZCByZXR1cm4gMC4gICovCitkaWZmIC0tZ2l0IGEvZ2RiL3BwYy1s aW51eC10ZGVwLmMgYi9nZGIvcHBjLWxpbnV4LXRkZXAuYworaW5kZXggMDdkZDk5MC4uMWU4ZTZk NiAxMDA2NDQKKy0tLSBhL2dkYi9wcGMtbGludXgtdGRlcC5jCisrKysgYi9nZGIvcHBjLWxpbnV4 LXRkZXAuYworQEAgLTY2LDYgKzY2LDE0IEBACisgI2luY2x1ZGUgImZlYXR1cmVzL3JzNjAwMC9w b3dlcnBjLWlzYTIwNS12c3g2NGwuYyIKKyAjaW5jbHVkZSAiZmVhdHVyZXMvcnM2MDAwL3Bvd2Vy cGMtZTUwMGwuYyIKKyAKKysjaW5jbHVkZSAic3RhcC1wcm9iZS5oIgorKyNpbmNsdWRlICJheC5o IgorKyNpbmNsdWRlICJheC1nZGIuaCIKKysjaW5jbHVkZSAiY2xpL2NsaS11dGlscy5oIgorKyNp bmNsdWRlICJwYXJzZXItZGVmcy5oIgorKyNpbmNsdWRlICJ1c2VyLXJlZ3MuaCIKKysjaW5jbHVk ZSA8Y3R5cGUuaD4KKysKKyAvKiBUaGUgc3lzY2FsbCdzIFhNTCBmaWxlbmFtZSBmb3IgUFBDIGFu ZCBQUEM2NC4gICovCisgI2RlZmluZSBYTUxfU1lTQ0FMTF9GSUxFTkFNRV9QUEMgInN5c2NhbGxz L3BwYy1saW51eC54bWwiCisgI2RlZmluZSBYTUxfU1lTQ0FMTF9GSUxFTkFNRV9QUEM2NCAic3lz Y2FsbHMvcHBjNjQtbGludXgueG1sIgorQEAgLTExOTMsNiArMTIwMSw2NSBAQCBwcGNfbGludXhf Y29yZV9yZWFkX2Rlc2NyaXB0aW9uIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKyAgICAgfQor IH0KKyAKKytzdGF0aWMgaW50CisrcHBjX3N0YXBfaXNfc2luZ2xlX29wZXJhbmQgKHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoLCBjb25zdCBjaGFyICpzKQorK3sKKysgIHJldHVybiAoKnMgPT0gJ2kn IC8qIExpdGVyYWwgbnVtYmVyLiAgKi8KKysJICB8fCAoaXNkaWdpdCAoKnMpICYmIHNbMV0gPT0g JygnCisrCSAgICAgICYmIGlzZGlnaXQgKHNbMl0pKSAvKiBEaXNwbGFjZW1lbnQuICAqLworKwkg IHx8ICgqcyA9PSAnKCcgJiYgaXNkaWdpdCAoc1sxXSkpIC8qIFJlZ2lzdGVyIGluZGlyZWN0aW9u LiAgKi8KKysJICB8fCBpc2RpZ2l0ICgqcykpOyAvKiBSZWdpc3RlciB2YWx1ZS4gICovCisrfQor KworK3N0YXRpYyBpbnQKKytwcGNfc3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuIChzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCwKKysJCQkgICAgICBzdHJ1Y3Qgc3RhcF9wYXJzZV9pbmZvICpwKQorK3sK KysgIGlmIChpc2RpZ2l0ICgqcC0+YXJnKSkKKysgICAgeworKyAgICAgIC8qIFRoaXMgdGVtcG9y YXJ5IHBvaW50ZXIgaXMgbmVlZGVkIGJlY2F1c2Ugd2UgaGF2ZSB0byBkbyBhIGxvb2thaGVhZC4K KysJICBXZSBjb3VsZCBiZSBkZWFsaW5nIHdpdGggYSByZWdpc3RlciBkaXNwbGFjZW1lbnQsIGFu ZCBpbiBzdWNoIGNhc2UKKysJICB3ZSB3b3VsZCBub3QgbmVlZCB0byBkbyBhbnl0aGluZy4gICov CisrICAgICAgY29uc3QgY2hhciAqcyA9IHAtPmFyZzsKKysgICAgICBjaGFyICpyZWduYW1lOwor KyAgICAgIGludCBsZW47CisrICAgICAgc3RydWN0IHN0b2tlbiBzdHI7CisrCisrICAgICAgd2hp bGUgKGlzZGlnaXQgKCpzKSkKKysJKytzOworKworKyAgICAgIGlmICgqcyA9PSAnKCcpCisrCS8q IEl0IGlzIGEgcmVnaXN0ZXIgZGlzcGxhY2VtZW50IGluZGVlZC4gIFJldHVybmluZyAwIG1lYW5z IHdlIGFyZQorKwkgICBkZWZlcnJpbmcgdGhlIHRyZWF0bWVudCBvZiB0aGlzIGNhc2UgdG8gdGhl IGdlbmVyaWMgcGFyc2VyLiAgKi8KKysJcmV0dXJuIDA7CisrCisrICAgICAgbGVuID0gcyAtIHAt PmFyZzsKKysgICAgICByZWduYW1lID0gYWxsb2NhIChsZW4gKyAyKTsKKysgICAgICByZWduYW1l WzBdID0gJ3InOworKworKyAgICAgIHN0cm5jcHkgKHJlZ25hbWUgKyAxLCBwLT5hcmcsIGxlbik7 CisrICAgICAgKytsZW47CisrICAgICAgcmVnbmFtZVtsZW5dID0gJ1wwJzsKKysKKysgICAgICBp ZiAodXNlcl9yZWdfbWFwX25hbWVfdG9fcmVnbnVtIChnZGJhcmNoLCByZWduYW1lLCBsZW4pID09 IC0xKQorKwllcnJvciAoXygiSW52YWxpZCByZWdpc3RlciBuYW1lIGAlcycgb24gZXhwcmVzc2lv biBgJXMnLiIpLAorKwkgICAgICAgcmVnbmFtZSwgcC0+c2F2ZWRfYXJnKTsKKysKKysgICAgICB3 cml0ZV9leHBfZWx0X29wY29kZSAoT1BfUkVHSVNURVIpOworKyAgICAgIHN0ci5wdHIgPSByZWdu YW1lOworKyAgICAgIHN0ci5sZW5ndGggPSBsZW47CisrICAgICAgd3JpdGVfZXhwX3N0cmluZyAo c3RyKTsKKysgICAgICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfUkVHSVNURVIpOworKworKyAg ICAgIHAtPmFyZyA9IHM7CisrICAgIH0KKysgIGVsc2UKKysgICAgLyogQWxsIHRoZSBvdGhlciB0 b2tlbnMgc2hvdWxkIGJlIGhhbmRsZWQgY29ycmVjdGx5IGJ5IHRoZSBnZW5lcmljCisrICAgICAg IHBhcnNlci4gICovCisrICAgIHJldHVybiAwOworKworKyAgcmV0dXJuIDE7CisrfQorIAorIC8q IENlbGwvQi5FLiBhY3RpdmUgU1BFIGNvbnRleHQgdHJhY2tpbmcgc3VwcG9ydC4gICovCisgCitA QCAtMTUxMCw2ICsxNTc3LDE1IEBAIHBwY19saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hf aW5mbyBpbmZvLAorICAgLyogR2V0IHRoZSBzeXNjYWxsIG51bWJlciBmcm9tIHRoZSBhcmNoJ3Mg cmVnaXN0ZXIuICAqLworICAgc2V0X2dkYmFyY2hfZ2V0X3N5c2NhbGxfbnVtYmVyIChnZGJhcmNo LCBwcGNfbGludXhfZ2V0X3N5c2NhbGxfbnVtYmVyKTsKKyAKKysgIC8qIFN5c3RlbVRhcCBmdW5j dGlvbnMuICAqLworKyAgc2V0X2dkYmFyY2hfc3RhcF9pbnRlZ2VyX3ByZWZpeCAoZ2RiYXJjaCwg ImkiKTsKKysgIHNldF9nZGJhcmNoX3N0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fcHJlZml4IChn ZGJhcmNoLCAiKCIpOworKyAgc2V0X2dkYmFyY2hfc3RhcF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9z dWZpeCAoZ2RiYXJjaCwgIikiKTsKKysgIHNldF9nZGJhcmNoX3N0YXBfZ2RiX3JlZ2lzdGVyX3By ZWZpeCAoZ2RiYXJjaCwgInIiKTsKKysgIHNldF9nZGJhcmNoX3N0YXBfaXNfc2luZ2xlX29wZXJh bmQgKGdkYmFyY2gsIHBwY19zdGFwX2lzX3NpbmdsZV9vcGVyYW5kKTsKKysgIHNldF9nZGJhcmNo X3N0YXBfcGFyc2Vfc3BlY2lhbF90b2tlbiAoZ2RiYXJjaCwKKysJCQkJCXBwY19zdGFwX3BhcnNl X3NwZWNpYWxfdG9rZW4pOworKworICAgaWYgKHRkZXAtPndvcmRzaXplID09IDQpCisgICAgIHsK KyAgICAgICAvKiBVbnRpbCBOb3ZlbWJlciAyMDAxLCBnY2MgZGlkIG5vdCBjb21wbHkgd2l0aCB0 aGUgMzIgYml0IFN5c1YKK2RpZmYgLS1naXQgYS9nZGIvcHJpbnRjbWQuYyBiL2dkYi9wcmludGNt ZC5jCitpbmRleCA1YTUyMmY0Li4zNmI5MzJkIDEwMDY0NAorLS0tIGEvZ2RiL3ByaW50Y21kLmMK KysrKyBiL2dkYi9wcmludGNtZC5jCitAQCAtNTEsNiArNTEsNyBAQAorICNpbmNsdWRlICJjaGFy c2V0LmgiCisgI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKKyAjaW5jbHVkZSAiY2xpL2NsaS11dGls cy5oIgorKyNpbmNsdWRlICJkd2FyZjJsb2MuaCIKKyAKKyAjaWZkZWYgVFVJCisgI2luY2x1ZGUg InR1aS90dWkuaCIJCS8qIEZvciB0dWlfYWN0aXZlIGV0IGFsLiAgICovCitAQCAtOTczLDYgKzk3 NCwxMSBAQCBwcmludF9jb21tYW5kXzEgKGNoYXIgKmV4cCwgaW50IGluc3BlY3QsIGludCB2b2lk cHJpbnQpCiAgICBlbHNlCiAgICAgIHZhbCA9IGFjY2Vzc192YWx1ZV9oaXN0b3J5ICgwKTsKICAK QEAgLTYyNjQsNyArNzM0OCwxNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHJp bnRjbWQuYwogICAgaWYgKHZvaWRwcmludCB8fCAodmFsICYmIHZhbHVlX3R5cGUgKHZhbCkgJiYK ICAJCSAgICBUWVBFX0NPREUgKHZhbHVlX3R5cGUgKHZhbCkpICE9IFRZUEVfQ09ERV9WT0lEKSkK ICAgICAgewotQEAgLTE0NzYsNiArMTQ4MSwyNCBAQCB4X2NvbW1hbmQgKGNoYXIgKmV4cCwgaW50 IGZyb21fdHR5KQorQEAgLTEwNjEsNiArMTA2Nyw5IEBAIG91dHB1dF9jb21tYW5kIChjaGFyICpl eHAsIGludCBmcm9tX3R0eSkKKyAKKyAgIHZhbCA9IGV2YWx1YXRlX2V4cHJlc3Npb24gKGV4cHIp OworIAorKyAgaWYgKFZBTFVFX0xWQUwgKHZhbCkgPT0gbHZhbF9tZW1vcnkpCisrICAgIG9iamVj dF9hZGRyZXNzX3NldCAodmFsdWVfcmF3X2FkZHJlc3MgKHZhbCkpOworKworICAgYW5ub3RhdGVf dmFsdWVfYmVnaW4gKHZhbHVlX3R5cGUgKHZhbCkpOworIAorICAgZ2V0X2Zvcm1hdHRlZF9wcmlu dF9vcHRpb25zICgmb3B0cywgZm9ybWF0KTsKK0BAIC0xNDc0LDYgKzE0ODMsMjQgQEAgeF9jb21t YW5kIChjaGFyICpleHAsIGludCBmcm9tX3R0eSkKICAJc2V0X2ludGVybmFsdmFyIChsb29rdXBf aW50ZXJuYWx2YXIgKCJfXyIpLCBsYXN0X2V4YW1pbmVfdmFsdWUpOwogICAgICB9CiAgfQpAQCAt NjI4OSw3ICs3MzgzLDE4IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9wcmludGNt ZC5jCiAgDAogIAogIC8qIEFkZCBhbiBleHByZXNzaW9uIHRvIHRoZSBhdXRvLWRpc3BsYXkgY2hh aW4uCi1AQCAtMjg3MCw0ICsyODkzLDggQEAgU2hvdyBwcmludGluZyBvZiBzb3VyY2UgZmlsZW5h bWUgYW5kIGxpbgorQEAgLTE5NzMsNiArMjAwMCwxMCBAQCBwcmludF92YXJpYWJsZV9hbmRfdmFs dWUgKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBzeW1ib2wgKnZhciwKKyAgICAgICBzdHJ1Y3Qg dmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRzOworIAorICAgICAgIHZhbCA9IHJlYWRfdmFyX3ZhbHVl ICh2YXIsIGZyYW1lKTsKKysKKysgICAgICBtYWtlX2NsZWFudXBfcmVzdG9yZV9zZWxlY3RlZF9m cmFtZSAoKTsKKysgICAgICBzZWxlY3RfZnJhbWUgKGZyYW1lKTsKKysKKyAgICAgICBnZXRfdXNl cl9wcmludF9vcHRpb25zICgmb3B0cyk7CisgICAgICAgb3B0cy5kZXJlZl9yZWYgPSAxOworICAg ICAgIGNvbW1vbl92YWxfcHJpbnQgKHZhbCwgc3RyZWFtLCBpbmRlbnQsICZvcHRzLCBjdXJyZW50 X2xhbmd1YWdlKTsKK0BAIC0yODg2LDQgKzI5MTcsOCBAQCBTaG93IHByaW50aW5nIG9mIHNvdXJj ZSBmaWxlbmFtZSBhbmQgbGluZSBudW1iZXIgd2l0aCA8c3ltYm9sPi4iKSwgTlVMTCwKICAgIGFk ZF9jb20gKCJldmFsIiwgbm9fY2xhc3MsIGV2YWxfY29tbWFuZCwgXygiXAogIENvbnZlcnQgXCJw cmludGYgZm9ybWF0IHN0cmluZ1wiLCBhcmcxLCBhcmcyLCBhcmczLCAuLi4sIGFyZ24gdG9cblwK ICBhIGNvbW1hbmQgbGluZSwgYW5kIGNhbGwgaXQuIikpOwpAQCAtNjI5OCwxMCArNzQwMywxMSBA QCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHJpbnRjbWQuYwogKyAgb2JzZXJ2ZXJf YXR0YWNoX21hcmtfdXNlZCAocHJpbnRfdHlwZXNfbWFya191c2VkKTsKICsjZW5kaWYKICB9Ci1J bmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL2xpYi9nZGIvRnJhbWVJdGVyYXRv ci5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAw MDAwMCArMDAwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3B5dGhvbi9saWIvZ2RiL0Zy YW1lSXRlcmF0b3IucHkJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKK2RpZmYg LS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvRnJhbWVJdGVyYXRvci5weSBiL2dkYi9weXRob24v bGliL2dkYi9GcmFtZUl0ZXJhdG9yLnB5CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAw MDAwMC4uNTY1NDU0NgorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL0Zy YW1lSXRlcmF0b3IucHkKIEBAIC0wLDAgKzEsMzMgQEAKICsjIEl0ZXJhdG9yIG92ZXIgZnJhbWVz LgogKwpAQCAtNjMzNiwxMCArNzQ0MiwxMSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvcHl0aG9uL2xpYi9nZGIvRnJhbWVJdGVyYXRvci5weQogKyAgICAgICAgICAgIHJhaXNlIFN0 b3BJdGVyYXRpb24KICsgICAgICAgIHNlbGYuZnJhbWUgPSByZXN1bHQub2xkZXIgKCkKICsgICAg ICAgIHJldHVybiByZXN1bHQKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9weXRob24v bGliL2dkYi9GcmFtZVdyYXBwZXIucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0w MS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi9weXRob24vbGliL2dkYi9GcmFtZVdyYXBwZXIucHkJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAw MDAwMDAgKzAyMDAKK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvRnJhbWVXcmFwcGVy LnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1lV3JhcHBlci5weQorbmV3IGZpbGUgbW9kZSAx MDA2NDQKK2luZGV4IDAwMDAwMDAuLmI3OTBhNTQKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi9w eXRob24vbGliL2dkYi9GcmFtZVdyYXBwZXIucHkKIEBAIC0wLDAgKzEsMTEyIEBACiArIyBXcmFw cGVyIEFQSSBmb3IgZnJhbWVzLgogKwpAQCAtNjQ1MywxMCArNzU2MCwxMSBAQCBJbmRleDogZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL2xpYi9nZGIvRnJhbWVXcmFwcGVyLnB5CiArCiAr ICAgIGRlZiBfX2dldGF0dHJfXyAoc2VsZiwgbmFtZSk6CiArICAgICAgICByZXR1cm4gZ2V0YXR0 ciAoc2VsZi5mcmFtZSwgbmFtZSkKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9weXRo b24vbGliL2dkYi9iYWNrdHJhY2UucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0w MS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi9weXRob24vbGliL2dkYi9iYWNrdHJhY2UucHkJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAw MDAgKzAyMDAKK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvYmFja3RyYWNlLnB5IGIv Z2RiL3B5dGhvbi9saWIvZ2RiL2JhY2t0cmFjZS5weQorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2lu ZGV4IDAwMDAwMDAuLjZiYjRmYjEKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi9weXRob24vbGli L2dkYi9iYWNrdHJhY2UucHkKIEBAIC0wLDAgKzEsNDIgQEAKICsjIEZpbHRlcmluZyBiYWNrdHJh Y2UuCiArCkBAIC02NTAwLDc0ICs3NjA4LDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi9weXRob24vbGliL2dkYi9iYWNrdHJhY2UucHkKICsgICAgICAgIHJldHVybiBpdGVyCiAr ICAgIHJldHVybiBmcmFtZV9maWx0ZXIgKGl0ZXIpCiArCi1JbmRleDogZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9hbGlhcy5weQotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvYWxpYXMucHkJMjAxMS0w Ny0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsNTkgQEAKLSsjIEFsaWFz IGNvbW1hbmQuCi0rCi0rIyBDb3B5cmlnaHQgKEMpIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y Ci0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot KyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK2ltcG9ydCBn ZGIKLSsKLStjbGFzcyBBbGlhc0ltcGxlbWVudGF0aW9uIChnZGIuQ29tbWFuZCk6Ci0rICAgIGRl ZiBfX2luaXRfXyAoc2VsZiwgbmFtZSwgcmVhbCwgZG9jKToKLSsgICAgICAgICMgSGF2ZSB0byBz ZXQgX19kb2NfXyBiZWZvcmUgdGhlIHN1cGVyIGluaXQgY2FsbC4KLSsgICAgICAgICMgSXQgd291 bGQgYmUgbmljZSBpZiBnZGIncyBoZWxwIGxvb2tlZCB1cCBfX2RvY19fIGR5bmFtaWNhbGx5Lgot KyAgICAgICAgc2VsZi5fX2RvY19fID0gZG9jCi0rICAgICAgICAjIE5vdGU6IG5vIGdvb2Qgd2F5 IHRvIGNvbXBsZXRlIDooCi0rICAgICAgICBzdXBlciAoQWxpYXNJbXBsZW1lbnRhdGlvbiwgc2Vs ZikuX19pbml0X18gKG5hbWUsIGdkYi5DT01NQU5EX05PTkUpCi0rICAgICAgICBzZWxmLnJlYWwg PSByZWFsCi0rCi0rICAgIGRlZiBpbnZva2Uoc2VsZiwgYXJnLCBmcm9tX3R0eSk6Ci0rICAgICAg ICBnZGIuZXhlY3V0ZSAoc2VsZi5yZWFsICsgJyAnICsgYXJnLCBmcm9tX3R0eSkKLSsKLStjbGFz cyBBbGlhc0NvbW1hbmQgKGdkYi5Db21tYW5kKToKLSsgICAgIiIiQWxpYXMgb25lIGNvbW1hbmQg dG8gYW5vdGhlci4KLStJbiB0aGUgc2ltcGxlc3QgZm9ybSwgdGhlIGZpcnN0IHdvcmQgaXMgdGhl IG5hbWUgb2YgdGhlIGFsaWFzLCBhbmQKLSt0aGUgcmVtYWluaW5nIHdvcmRzIGFyZSB0aGUgdGhl IGV4cGFuc2lvbi4KLStBbiAnPScgYnkgaXRzZWxmIGNhbiBiZSB1c2VkIHRvIGRlZmluZSBhIG11 bHRpLXdvcmQgYWxpYXM7IHdvcmRzCi0rYmVmb3JlIHRoZSAnPScgYXJlIHRoZSBuYW1lIG9mIHRo ZSBuZXcgY29tbWFuZC4iIiIKLSsKLSsgICAgZGVmIF9faW5pdF9fIChzZWxmKToKLSsgICAgICAg ICMgQ29tcGxldGlvbiBpcyBub3QgcXVpdGUgcmlnaHQgaGVyZS4KLSsgICAgICAgIHN1cGVyIChB bGlhc0NvbW1hbmQsIHNlbGYpLl9faW5pdF9fICgiYWxpYXMiLCBnZGIuQ09NTUFORF9OT05FLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYi5DT01QTEVU RV9DT01NQU5EKQotKwotKyAgICBkZWYgaW52b2tlIChzZWxmLCBhcmcsIGZyb21fdHR5KToKLSsg ICAgICAgIHNlbGYuZG9udF9yZXBlYXQgKCkKLSsgICAgICAgICMgV2l0aG91dCBzb21lIGZvcm0g b2YgcXVvdGluZyB3ZSBjYW4ndCBhbGlhcyBhIG11bHRpLXdvcmQKLSsgICAgICAgICMgY29tbWFu ZCB0byBhbm90aGVyIGNvbW1hbmQuCi0rICAgICAgICBhcmdzID0gYXJnLnNwbGl0KCkKLSsgICAg ICAgIHRyeToKLSsgICAgICAgICAgICBzdGFydCA9IGFyZ3MuaW5kZXggKCc9JykKLSsgICAgICAg ICAgICBlbmQgPSBzdGFydCArIDEKLSsgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotKyAgICAg ICAgICAgIHN0YXJ0ID0gMQotKyAgICAgICAgICAgIGVuZCA9IDEKLSsgICAgICAgIHRhcmdldCA9 ICIgIi5qb2luKGFyZ3NbZW5kOl0pCi0rICAgICAgICBBbGlhc0ltcGxlbWVudGF0aW9uICgiICIu am9pbiAoYXJnc1swOnN0YXJ0XSksIHRhcmdldCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJUaGlzIGNvbW1hbmQgaXMgYW4gYWxpYXMgZm9yICclcycuIiAlIHRhcmdldCkKLSsKLStB bGlhc0NvbW1hbmQoKQotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3B5dGhvbi9saWIv Z2RiL2NvbW1hbmQvYmFja3RyYWNlLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAt MDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9iYWNrdHJhY2UucHkJMjAxMS0wNy0yOSAyMjo1Mjow Mi4wMDAwMDAwMDAgKzAyMDAKK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFu ZC9iYWNrdHJhY2UucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9iYWNrdHJhY2UucHkK K25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5lZWVhOTA5CistLS0gL2Rldi9u dWxsCisrKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9iYWNrdHJhY2UucHkKIEBAIC0w LDAgKzEsMTA2IEBACiArIyBOZXcgYmFja3RyYWNlIGNvbW1hbmQuCiArCkBAIC02Njc1LDEwICs3 NzIwLDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9weXRob24vbGliL2dkYi9j b21tYW5kL2JhY2t0cmFjZS5weQogKyAgICAgICAgICAgIHBhaXJbMV0uZGVzY3JpYmUgKHN5cy5z dGRvdXQsIGZ1bGwpCiArCiArRmlsdGVyaW5nQmFja3RyYWNlKCkKLUluZGV4OiBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL2lnbm9yZV9lcnJvcnMucHkKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAw MDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL2ln bm9yZV9lcnJvcnMucHkJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKK2RpZmYg LS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9pZ25vcmVfZXJyb3JzLnB5IGIvZ2Ri L3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvaWdub3JlX2Vycm9ycy5weQorbmV3IGZpbGUgbW9kZSAx MDA2NDQKK2luZGV4IDAwMDAwMDAuLjZmYTQ4ZmYKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi9w eXRob24vbGliL2dkYi9jb21tYW5kL2lnbm9yZV9lcnJvcnMucHkKIEBAIC0wLDAgKzEsMzcgQEAK ICsjIElnbm9yZSBlcnJvcnMgaW4gdXNlciBjb21tYW5kcy4KICsKQEAgLTY3MTcsMTAgKzc3NjMs MTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1h bmQvaWdub3JlX2Vycm9ycy5weQogKyAgICAgICAgICAgIHBhc3MKICsKICtJZ25vcmVFcnJvcnND b21tYW5kICgpCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL2xpYi9nZGIv Y29tbWFuZC9wYWhvbGUucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAw MDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9weXRo b24vbGliL2dkYi9jb21tYW5kL3BhaG9sZS5weQkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAw MCArMDIwMAorZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3BhaG9sZS5w eSBiL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3BhaG9sZS5weQorbmV3IGZpbGUgbW9kZSAx MDA2NDQKK2luZGV4IDAwMDAwMDAuLjIxYTBiZjAKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi9w eXRob24vbGliL2dkYi9jb21tYW5kL3BhaG9sZS5weQogQEAgLTAsMCArMSw3NSBAQAogKyMgcGFo b2xlIGNvbW1hbmQgZm9yIGdkYgogKwpAQCAtNjc5NywxMCArNzg0NCwxMSBAQCBJbmRleDogZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9wYWhvbGUucHkKICsg ICAgICAgIHNlbGYucGFob2xlICh0eXBlLCAwLCAnJykKICsKICtQYWhvbGUoKQotSW5kZXg6IGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvcmVxdWlyZS5weQot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCAr MDAwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQv cmVxdWlyZS5weQkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAorZGlmZiAtLWdp dCBhL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3JlcXVpcmUucHkgYi9nZGIvcHl0aG9uL2xp Yi9nZGIvY29tbWFuZC9yZXF1aXJlLnB5CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAw MDAwMC4uMWZiYzFlOAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2Nv bW1hbmQvcmVxdWlyZS5weQogQEAgLTAsMCArMSw1NyBAQAogKyMgRGVtYW5kLWxvYWRpbmcgY29t bWFuZHMuCiArCkBAIC02ODU5LDEwICs3OTA3LDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3JlcXVpcmUucHkKICtSZXF1aXJlQ29tbWFu ZCgpCiArUmVxdWlyZVN1YmNvbW1hbmQoImNvbW1hbmQiKQogK1JlcXVpcmVTdWJjb21tYW5kKCJm dW5jdGlvbiIpCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL2xpYi9nZGIv Y29tbWFuZC91cHRvLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6 MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9u L2xpYi9nZGIvY29tbWFuZC91cHRvLnB5CTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICsw MjAwCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvdXB0by5weSBiL2dk Yi9weXRob24vbGliL2dkYi9jb21tYW5kL3VwdG8ucHkKK25ldyBmaWxlIG1vZGUgMTAwNjQ0Citp bmRleCAwMDAwMDAwLi5mYWY1NGVkCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvcHl0aG9uL2xp Yi9nZGIvY29tbWFuZC91cHRvLnB5CiBAQCAtMCwwICsxLDEyOSBAQAogKyMgdXB0byBjb21tYW5k LgogKwpAQCAtNjk5MywxNiArODA0MiwxOCBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC91cHRvLnB5CiArVXB0b1NvdXJjZUNvbW1hbmQgKCkK ICtVcHRvT2JqZWN0Q29tbWFuZCAoKQogK1VwdG9XaGVyZUNvbW1hbmQgKCkKLUluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi9weXRob24vbGliL2dkYi9mdW5jdGlvbi9fX2luaXRfXy5weQot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCAr MDAwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9u L19faW5pdF9fLnB5CTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCitkaWZmIC0t Z2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL19faW5pdF9fLnB5IGIvZ2RiL3B5dGhv bi9saWIvZ2RiL2Z1bmN0aW9uL19faW5pdF9fLnB5CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5k ZXggMDAwMDAwMC4uOGIxMzc4OQorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3B5dGhvbi9saWIv Z2RiL2Z1bmN0aW9uL19faW5pdF9fLnB5CiBAQCAtMCwwICsxIEBACiArCi1JbmRleDogZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vY2FsbGVyX2lzLnB5Ci09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICsw MDAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24v Y2FsbGVyX2lzLnB5CTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCitkaWZmIC0t Z2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL2NhbGxlcl9pcy5weSBiL2dkYi9weXRo b24vbGliL2dkYi9mdW5jdGlvbi9jYWxsZXJfaXMucHkKK25ldyBmaWxlIG1vZGUgMTAwNjQ0Citp bmRleCAwMDAwMDAwLi4yYjljNWM3CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvcHl0aG9uL2xp Yi9nZGIvZnVuY3Rpb24vY2FsbGVyX2lzLnB5CiBAQCAtMCwwICsxLDU4IEBACiArIyBDYWxsZXIt aXMgZnVuY3Rpb25zLgogKwpAQCAtNzA2MiwxMCArODExMywxMSBAQCBJbmRleDogZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vY2FsbGVyX2lzLnB5CiArCiAr Q2FsbGVySXMoKQogK0NhbGxlck1hdGNoZXMoKQotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL2luX3Njb3BlLnB5Ci09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g L2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5fc2NvcGUucHkJMjAx MS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9u L2xpYi9nZGIvZnVuY3Rpb24vaW5fc2NvcGUucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rp b24vaW5fc2NvcGUucHkKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5kZWJi M2JiCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5f c2NvcGUucHkKIEBAIC0wLDAgKzEsNDcgQEAKICsjIEluLXNjb3BlIGZ1bmN0aW9uLgogKwpAQCAt NzExNCwyMCArODE2NiwyMCBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9u L2xpYi9nZGIvZnVuY3Rpb24vaW5fc2NvcGUucHkKICsJcmV0dXJuIHdhbnRlZCA9PSBmb3VuZAog KwogK0luU2NvcGUgKCkKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9weXRob24vcHkt dHlwZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9weXRo b24vcHktdHlwZS5jCTIwMTEtMDYtMjQgMjE6NDc6MzcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL3B5LXR5cGUuYwkyMDExLTA3LTI5IDIyOjUyOjAy LjAwMDAwMDAwMCArMDIwMAotQEAgLTI5LDYgKzI5LDggQEAKLSAjaW5jbHVkZSAibGFuZ3VhZ2Uu aCIKK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LXR5cGUuYyBiL2dkYi9weXRob24vcHktdHlw ZS5jCitpbmRleCA1MGY5YjcyLi43NTRkNDUxIDEwMDY0NAorLS0tIGEvZ2RiL3B5dGhvbi9weS10 eXBlLmMKKysrKyBiL2dkYi9weXRob24vcHktdHlwZS5jCitAQCAtMzAsNiArMzAsOCBAQAogICNp bmNsdWRlICJ2ZWMuaCIKICAjaW5jbHVkZSAiYmNhY2hlLmgiCisgI2luY2x1ZGUgImR3YXJmMmxv Yy5oIgogKyNpbmNsdWRlICJvYnNlcnZlci5oIgogKyNpbmNsdWRlICJnZGJfYXNzZXJ0LmgiCiAg CiAgdHlwZWRlZiBzdHJ1Y3QgcHl0eV90eXBlX29iamVjdAogIHsKLUBAIC0zNywxMSArMzksMTkg QEAgdHlwZWRlZiBzdHJ1Y3QgcHl0eV90eXBlX29iamVjdAorQEAgLTM4LDExICs0MCwxOSBAQCB0 eXBlZGVmIHN0cnVjdCBweXR5X3R5cGVfb2JqZWN0CiAgCiAgICAvKiBJZiBhIFR5cGUgb2JqZWN0 IGlzIGFzc29jaWF0ZWQgd2l0aCBhbiBvYmpmaWxlLCBpdCBpcyBrZXB0IG9uIGEKICAgICAgIGRv dWJseS1saW5rZWQgbGlzdCwgcm9vdGVkIGluIHRoZSBvYmpmaWxlLiAgVGhpcyBsZXRzIHVzIGNv cHkgdGhlCkBAIC03MTQ4LDcgKzgyMDAsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvcHl0aG9uL3B5LXR5cGUuYwogIHN0YXRpYyBQeVR5cGVPYmplY3QgdHlwZV9vYmplY3RfdHlw ZTsKICAKICAvKiBBIEZpZWxkIG9iamVjdC4gICovCi1AQCAtOTE5LDggKzkyOSw2MyBAQCB0eXB5 X3JpY2hjb21wYXJlIChQeU9iamVjdCAqc2VsZiwgUHlPYmplCitAQCAtMTE1MCw4ICsxMTYwLDYz IEBAIHR5cHlfcmljaGNvbXBhcmUgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb3RoZXIsIGlu dCBvcCkKICAKICAMCiAgCkBAIC03MjEyLDcgKzgyNjQsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvcHl0aG9uL3B5LXR5cGUuYwogIHN0YXRpYyB2b2lkCiAgc2F2ZV9vYmpmaWxl X3R5cGVzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdm9pZCAqZGF0dW0pCiAgewotQEAgLTkz OCwxMiArMTAwMywxMyBAQCBzYXZlX29iamZpbGVfdHlwZXMgKHN0cnVjdCBvYmpmaWxlICpvYmpm CitAQCAtMTE2OSwxMiArMTIzNCwxMyBAQCBzYXZlX29iamZpbGVfdHlwZXMgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLCB2b2lkICpkYXR1bSkKICAgICAgewogICAgICAgIHR5cGVfb2JqZWN0ICpu ZXh0ID0gb2JqLT5uZXh0OwogIApAQCAtNzIzMCw3ICs4MjgyLDcgQEAgSW5kZXg6IGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL3B5dGhvbi9weS10eXBlLmMKICAKICAgICAgICBvYmogPSBuZXh0Owog ICAgICB9Ci1AQCAtOTU0LDQzICsxMDIwLDI4IEBAIHNhdmVfb2JqZmlsZV90eXBlcyAoc3RydWN0 IG9iamZpbGUgKm9iamYKK0BAIC0xMTg1LDQzICsxMjUxLDI4IEBAIHNhdmVfb2JqZmlsZV90eXBl cyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmRhdHVtKQogIH0KICAKICBzdGF0aWMg dm9pZApAQCAtNzI0Miw3ICs4Mjk0LDggQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L3B5dGhvbi9weS10eXBlLmMKIC0gIGlmICh0eXBlICYmIFRZUEVfT0JKRklMRSAodHlwZSkpCiAt ICAgIHsKIC0gICAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IFRZUEVfT0JKRklMRSAodHlw ZSk7Ci0tCisrICB0eXBlX29iamVjdCAqdHlwZV9vYmogPSAodHlwZV9vYmplY3QgKikgb2JqOwor IAogLSAgICAgIG9iai0+bmV4dCA9IG9iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlweV9vYmpmaWxl X2RhdGFfa2V5KTsKIC0gICAgICBpZiAob2JqLT5uZXh0KQogLQlvYmotPm5leHQtPnByZXYgPSBv Ymo7CkBAIC03MjUwLDggKzgzMDMsNiBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv cHl0aG9uL3B5LXR5cGUuYwogLSAgICB9CiAtICBlbHNlCiAtICAgIG9iai0+bmV4dCA9IE5VTEw7 Ci0rICB0eXBlX29iamVjdCAqdHlwZV9vYmogPSAodHlwZV9vYmplY3QgKikgb2JqOwotKwogKyAg dHlweV91bmxpbmsgKHR5cGVfb2JqKTsKICsKICsgIHR5cGVfb2JqLT5vYl90eXBlLT50cF9mcmVl IChvYmopOwpAQCAtNzI4Nyw5ICs4MzM4LDkgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL3B5dGhvbi9weS10eXBlLmMKICB9CiArI2VuZGlmCiAgCi0gLyogQ3JlYXRlIGEgbmV3IFR5 cGUgcmVmZXJyaW5nIHRvIFRZUEUuICAqLwotIFB5T2JqZWN0ICoKLUBAIC0xMDAwLDcgKzEwNTEs MTAgQEAgdHlwZV90b190eXBlX29iamVjdCAoc3RydWN0IHR5cGUgKnR5cGUpCisgLyogUmV0dXJu IG51bWJlciBvZiBmaWVsZHMgKCJsZW5ndGgiIG9mIHRoZSBmaWVsZCBkaWN0aW9uYXJ5KS4gICov CisgCitAQCAtMTQ0NCw3ICsxNDk1LDEwIEBAIHR5cGVfdG9fdHlwZV9vYmplY3QgKHN0cnVjdCB0 eXBlICp0eXBlKQogIAogICAgdHlwZV9vYmogPSBQeU9iamVjdF9OZXcgKHR5cGVfb2JqZWN0LCAm dHlwZV9vYmplY3RfdHlwZSk7CiAgICBpZiAodHlwZV9vYmopCkBAIC03MzAxLDcgKzgzNTIsNyBA QCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL3B5LXR5cGUuYwogIAogICAg cmV0dXJuIChQeU9iamVjdCAqKSB0eXBlX29iajsKICB9Ci1AQCAtMTA3NCw2ICsxMTI4LDEwIEBA IGdkYnB5X2luaXRpYWxpemVfdHlwZXMgKHZvaWQpCitAQCAtMTUyNCw2ICsxNTc4LDEwIEBAIGdk YnB5X2luaXRpYWxpemVfdHlwZXMgKHZvaWQpCiAgCiAgICBQeV9JTkNSRUYgKCZmaWVsZF9vYmpl Y3RfdHlwZSk7CiAgICBQeU1vZHVsZV9BZGRPYmplY3QgKGdkYl9tb2R1bGUsICJGaWVsZCIsIChQ eU9iamVjdCAqKSAmZmllbGRfb2JqZWN0X3R5cGUpOwpAQCAtNzMxMiwxMCArODM2MywxMCBAQCBJ bmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL3B5LXR5cGUuYwogIH0KICAKICAM Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL3B5LXZhbHVlLmMKLT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3B5dGhvbi9weS12YWx1ZS5j CTIwMTEtMDYtMjcgMjE6MjE6NTEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvcHl0aG9uL3B5LXZhbHVlLmMJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAg KzAyMDAKK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LXZhbHVlLmMgYi9nZGIvcHl0aG9uL3B5 LXZhbHVlLmMKK2luZGV4IDA0ZTM1NWEuLmE3ZDU5MmEgMTAwNjQ0CistLS0gYS9nZGIvcHl0aG9u L3B5LXZhbHVlLmMKKysrKyBiL2dkYi9weXRob24vcHktdmFsdWUuYwogQEAgLTI4LDYgKzI4LDcg QEAKICAjaW5jbHVkZSAiaW5mY2FsbC5oIgogICNpbmNsdWRlICJleHByZXNzaW9uLmgiCkBAIC03 MzI0LDcgKzgzNzUsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL3B5 LXZhbHVlLmMKICAKICAjaWZkZWYgSEFWRV9QWVRIT04KICAKLUBAIC0xMjA4LDYgKzEyMDksMTkg QEAgZ2RicHlfaXNfdmFsdWVfb2JqZWN0IChQeU9iamVjdCAqb2JqKQorQEAgLTEyODEsNiArMTI4 MiwxOSBAQCBnZGJweV9pc192YWx1ZV9vYmplY3QgKFB5T2JqZWN0ICpvYmopCiAgICByZXR1cm4g UHlPYmplY3RfVHlwZUNoZWNrIChvYmosICZ2YWx1ZV9vYmplY3RfdHlwZSk7CiAgfQogIApAQCAt NzM0NCw3ICs4Mzk1LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3B5dGhvbi9w eS12YWx1ZS5jCiAgdm9pZAogIGdkYnB5X2luaXRpYWxpemVfdmFsdWVzICh2b2lkKQogIHsKLUBA IC0xMjE4LDYgKzEyMzIsMTAgQEAgZ2RicHlfaW5pdGlhbGl6ZV92YWx1ZXMgKHZvaWQpCitAQCAt MTI5MSw2ICsxMzA1LDEwIEBAIGdkYnB5X2luaXRpYWxpemVfdmFsdWVzICh2b2lkKQogICAgUHlN b2R1bGVfQWRkT2JqZWN0IChnZGJfbW9kdWxlLCAiVmFsdWUiLCAoUHlPYmplY3QgKikgJnZhbHVl X29iamVjdF90eXBlKTsKICAKICAgIHZhbHVlc19pbl9weXRob24gPSBOVUxMOwpAQCAtNzM1NSwx MSArODQwNiwxMSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL3B5LXZh bHVlLmMKICB9CiAgCiAgDAotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3B5dGhvbi9w eXRob24uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvcHl0 aG9uL3B5dGhvbi5jCTIwMTEtMDctMjEgMTM6MDM6NDcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL3B5dGhvbi5jCTIwMTEtMDctMjkgMjI6NTI6MDIu MDAwMDAwMDAwICswMjAwCi1AQCAtNDksOSArNDksMTIgQEAgc3RhdGljIGludCBnZGJweV9zaG91 bGRfcHJpbnRfc3RhY2sgPSAwOworZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHl0aG9uLmMgYi9n ZGIvcHl0aG9uL3B5dGhvbi5jCitpbmRleCAxM2FjMTVlLi4wZGI0MWVlIDEwMDY0NAorLS0tIGEv Z2RiL3B5dGhvbi9weXRob24uYworKysrIGIvZ2RiL3B5dGhvbi9weXRob24uYworQEAgLTY2LDEw ICs2NiwxMyBAQCBzdGF0aWMgY29uc3QgY2hhciAqZ2RicHlfc2hvdWxkX3ByaW50X3N0YWNrID0g cHl0aG9uX2V4Y3BfbWVzc2FnZTsKICAjaW5jbHVkZSAibGluZXNwZWMuaCIKICAjaW5jbHVkZSAi c291cmNlLmgiCiAgI2luY2x1ZGUgInZlcnNpb24uaCIKQEAgLTczNjgsMTEgKzg0MTksMTIgQEAg SW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3B5dGhvbi9weXRob24uYwogICNpbmNsdWRl ICJ0YXJnZXQuaCIKICAjaW5jbHVkZSAiZ2RidGhyZWFkLmgiCiAgI2luY2x1ZGUgIm9ic2VydmVy LmgiCisgI2luY2x1ZGUgImludGVycHMuaCIKICsjaW5jbHVkZSAiZXZlbnQtdG9wLmgiCiAgCiAg c3RhdGljIFB5TWV0aG9kRGVmIEdkYk1ldGhvZHNbXTsKICAKLUBAIC04NDksNiArODUyLDUzIEBA IGdkYnB5X3ByaW50X3N0YWNrICh2b2lkKQorQEAgLTk0Niw2ICs5NDksNTMgQEAgZ2RicHlfcHJp bnRfc3RhY2sgKHZvaWQpCiAgCiAgLyogUmV0dXJuIHRoZSBjdXJyZW50IFByb2dzcGFjZS4KICAg ICBUaGVyZSBhbHdheXMgaXMgb25lLiAgKi8KQEAgLTc0MjQsMzUgKzg0NzYsMjE1IEBAIEluZGV4 OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9weXRob24vcHl0aG9uLmMKICsMCiArCiAgCi0gc3Rh dGljIFB5T2JqZWN0ICoKLSBnZGJweV9nZXRfY3VycmVudF9wcm9nc3BhY2UgKFB5T2JqZWN0ICp1 bnVzZWQxLCBQeU9iamVjdCAqdW51c2VkMikKLUBAIC0xMzMzLDYgKzEzODMsOCBAQCBzdGF0aWMg UHlNZXRob2REZWYgR2RiTWV0aG9kc1tdID0KLSAgICAgIkdldCBhIHZhbHVlIGZyb20gaGlzdG9y eSIgfSwKLSAgIHsgImV4ZWN1dGUiLCAoUHlDRnVuY3Rpb24pIGV4ZWN1dGVfZ2RiX2NvbW1hbmQs IE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICJFeGVjdXRlIGEgZ2RiIGNvbW1h bmQiIH0sCi0rICB7ICJjbGkiLCBnZGJweV9jbGksIE1FVEhfTk9BUkdTLAotKyAgICAiRW50ZXIg dGhlIGdkYiBDTEkiIH0sCi0gICB7ICJwYXJhbWV0ZXIiLCBnZGJweV9wYXJhbWV0ZXIsIE1FVEhf VkFSQVJHUywKLSAgICAgIlJldHVybiBhIGdkYiBwYXJhbWV0ZXIncyB2YWx1ZSIgfSwKLSAKLUlu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9weXRob24vcHl0aG9uLmgKLT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3B5dGhvbi9weXRob24uaAkyMDExLTAz LTE0IDE3OjA5OjU0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L3B5dGhvbi9weXRob24uaAkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAotQEAg LTMyLDYgKzMyLDggQEAgdm9pZCBldmFsX3B5dGhvbl9mcm9tX2NvbnRyb2xfY29tbWFuZCAocwor IHN0YXRpYyBQeU9iamVjdCAqCisgZ2RicHlfZ2V0X2N1cnJlbnRfcHJvZ3NwYWNlIChQeU9iamVj dCAqdW51c2VkMSwgUHlPYmplY3QgKnVudXNlZDIpCitAQCAtMTM4Myw2ICsxNDMzLDggQEAgc3Rh dGljIFB5TWV0aG9kRGVmIEdkYk1ldGhvZHNbXSA9CisgICAgICJHZXQgYSB2YWx1ZSBmcm9tIGhp c3RvcnkiIH0sCisgICB7ICJleGVjdXRlIiwgKFB5Q0Z1bmN0aW9uKSBleGVjdXRlX2dkYl9jb21t YW5kLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAiRXhlY3V0ZSBhIGdkYiBj b21tYW5kIiB9LAorKyAgeyAiY2xpIiwgZ2RicHlfY2xpLCBNRVRIX05PQVJHUywKKysgICAgIkVu dGVyIHRoZSBnZGIgQ0xJIiB9LAorICAgeyAicGFyYW1ldGVyIiwgZ2RicHlfcGFyYW1ldGVyLCBN RVRIX1ZBUkFSR1MsCisgICAgICJSZXR1cm4gYSBnZGIgcGFyYW1ldGVyJ3MgdmFsdWUiIH0sCisg CitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weXRob24uaCBiL2dkYi9weXRob24vcHl0aG9uLmgK K2luZGV4IGFlNTVjYzIuLjg4MDg4NjYgMTAwNjQ0CistLS0gYS9nZGIvcHl0aG9uL3B5dGhvbi5o CisrKysgYi9nZGIvcHl0aG9uL3B5dGhvbi5oCitAQCAtMzIsNiArMzIsOCBAQCB2b2lkIGV2YWxf cHl0aG9uX2Zyb21fY29udHJvbF9jb21tYW5kIChzdHJ1Y3QgY29tbWFuZF9saW5lICopOworIAor IHZvaWQgc291cmNlX3B5dGhvbl9zY3JpcHQgKGNvbnN0IGNoYXIgKmZpbGUpOworIAorK3ZvaWQg cnVuX3B5dGhvbl9zY3JpcHQgKGludCBhcmdjLCBjaGFyICoqYXJndik7CisrCisgaW50IGFwcGx5 X3ZhbF9wcmV0dHlfcHJpbnRlciAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2 YWxhZGRyLAorIAkJCSAgICAgIGludCBlbWJlZGRlZF9vZmZzZXQsIENPUkVfQUREUiBhZGRyZXNz LAorIAkJCSAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCByZWN1cnNlLAorZGlmZiAt LWdpdCBhL2dkYi9yZW1vdGUuYyBiL2dkYi9yZW1vdGUuYworaW5kZXggOWJmZWJkMi4uNDRhZWFh ZSAxMDA2NDQKKy0tLSBhL2dkYi9yZW1vdGUuYworKysrIGIvZ2RiL3JlbW90ZS5jCitAQCAtOTg4 Niw3ICs5ODg2LDcgQEAgcmVtb3RlX2Rvd25sb2FkX3RyYWNlcG9pbnQgKHN0cnVjdCBicF9sb2Nh dGlvbiAqbG9jKQorICAgY2hhciAqKnN0ZXBwaW5nX2FjdGlvbnM7CisgICBpbnQgbmR4OworICAg c3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbiA9IE5VTEw7CistICBzdHJ1Y3QgYWdlbnRfZXhwciAq YWV4cHI7CisrICBzdHJ1Y3QgYWdlbnRfZXhwciAqYWV4cHIgPSBOVUxMOworICAgc3RydWN0IGNs ZWFudXAgKmFleHByX2NoYWluID0gTlVMTDsKKyAgIGNoYXIgKnBrdDsKKyAgIHN0cnVjdCBicmVh a3BvaW50ICpiID0gbG9jLT5vd25lcjsKK2RpZmYgLS1naXQgYS9nZGIvczM5MC1uYXQuYyBiL2dk Yi9zMzkwLW5hdC5jCitpbmRleCA2MzgxNjc1Li44ODM2MjBjIDEwMDY0NAorLS0tIGEvZ2RiL3Mz OTAtbmF0LmMKKysrKyBiL2dkYi9zMzkwLW5hdC5jCitAQCAtNDM4LDExICs0MzgsMzYgQEAgc3Ry dWN0IHdhdGNoX2FyZWEKKyAgIENPUkVfQUREUiBoaV9hZGRyOworIH07CisgCistc3RhdGljIHN0 cnVjdCB3YXRjaF9hcmVhICp3YXRjaF9iYXNlID0gTlVMTDsKKysvKiBQZXItaW5mZXJpb3IgZGF0 YSBrZXkuICAqLworKworK3N0cnVjdCBzMzkwX2luZmVyaW9yX2RhdGEKKysgIHsKKysgICAgc3Ry dWN0IHdhdGNoX2FyZWEgKndhdGNoX2Jhc2U7CisrICB9OworKworK3N0YXRpYyBzdHJ1Y3QgczM5 MF9pbmZlcmlvcl9kYXRhICoKKytzMzkwX2luZmVyaW9yX2RhdGFfZ2V0ICh2b2lkKQorK3sKKysg IC8qIEludGVybWVkaWF0ZSBwYXRjaCBzdHViLiAgKi8KKysgIHN0YXRpYyBzdHJ1Y3QgaTM4Nl9p bmZlcmlvcl9kYXRhIGluZl9kYXRhX2xvY2FsOworKyAgc3RydWN0IGluZmVyaW9yICppbmYgPSBj dXJyZW50X2luZmVyaW9yICgpOworKyAgc3RydWN0IGkzODZfaW5mZXJpb3JfZGF0YSAqaW5mX2Rh dGEgPSAmaW5mX2RhdGFfbG9jYWw7CisrCisrICByZXR1cm4gaW5mLT5waWQgPT0gcHRpZF9nZXRf cGlkIChpbmZlcmlvcl9wdGlkKSA/IGluZl9kYXRhIDogTlVMTDsKKyt9CisrCisrc3RhdGljIHN0 cnVjdCB3YXRjaF9hcmVhICoKKytzMzkwX3dhdGNoX2Jhc2VfZ2V0ICh2b2lkKQorK3sKKysgIHN0 cnVjdCBzMzkwX2luZmVyaW9yX2RhdGEgKmluZmVyaW9yX2RhdGEgPSBzMzkwX2luZmVyaW9yX2Rh dGFfZ2V0ICgpOworKworKyAgcmV0dXJuIGluZmVyaW9yX2RhdGEgPyBpbmZlcmlvcl9kYXRhLT53 YXRjaF9iYXNlIDogTlVMTDsKKyt9CisgCisgc3RhdGljIGludAorIHMzOTBfc3RvcHBlZF9ieV93 YXRjaHBvaW50ICh2b2lkKQorIHsKKysgIHN0cnVjdCB3YXRjaF9hcmVhICp3YXRjaF9iYXNlID0g czM5MF93YXRjaF9iYXNlX2dldCAoKTsKKyAgIHBlcl9sb3djb3JlX2JpdHMgcGVyX2xvd2NvcmU7 CisgICBwdHJhY2VfYXJlYSBwYXJlYTsKKyAgIGludCByZXN1bHQ7CitAQCAtNDcxLDkgKzQ5Niwx MyBAQCBzMzkwX3N0b3BwZWRfYnlfd2F0Y2hwb2ludCAodm9pZCkKKyAgIHJldHVybiByZXN1bHQ7 CisgfQorIAorKy8qIFVwZGF0ZSBoYXJkd2FyZSByZWdpc3RlcnMgb2YgdGhpcyBzcGVjaWZpYyBM UC4gIExQIG11c3QgYmVsb25nIHRvCisrICAgQ1VSUkVOVF9JTkZFUklPUi4gICovCisrCisgc3Rh dGljIHZvaWQKKyBzMzkwX2ZpeF93YXRjaF9wb2ludHMgKHN0cnVjdCBsd3BfaW5mbyAqbHApCisg eworKyAgc3RydWN0IHdhdGNoX2FyZWEgKndhdGNoX2Jhc2U7CisgICBpbnQgdGlkOworIAorICAg cGVyX3N0cnVjdCBwZXJfaW5mbzsKK0BAIC00ODIsOSArNTExLDIwIEBAIHMzOTBfZml4X3dhdGNo X3BvaW50cyAoc3RydWN0IGx3cF9pbmZvICpscCkKKyAgIENPUkVfQUREUiB3YXRjaF9sb19hZGRy ID0gKENPUkVfQUREUiktMSwgd2F0Y2hfaGlfYWRkciA9IDA7CisgICBzdHJ1Y3Qgd2F0Y2hfYXJl YSAqYXJlYTsKKyAKKy0gIHRpZCA9IFRJREdFVCAobHAtPnB0aWQpOworLSAgaWYgKHRpZCA9PSAw KQorLSAgICB0aWQgPSBQSURHRVQgKGxwLT5wdGlkKTsKKysgIGdkYl9hc3NlcnQgKGxwID09IE5V TEwgfHwgY3VycmVudF9pbmZlcmlvciAoKS0+cGlkID09IFBJREdFVCAobHAtPnB0aWQpKTsKKysK KysgIGlmIChscCA9PSBOVUxMKQorKyAgICB7CisrICAgICAgdGlkID0gUElER0VUIChpbmZlcmlv cl9wdGlkKTsKKysgICAgICB3YXRjaF9iYXNlID0gTlVMTDsKKysgICAgfQorKyAgZWxzZQorKyAg ICB7CisrICAgICAgdGlkID0gVElER0VUIChscC0+cHRpZCk7CisrICAgICAgaWYgKHRpZCA9PSAw KQorKwl0aWQgPSBQSURHRVQgKGxwLT5wdGlkKTsKKysgICAgICB3YXRjaF9iYXNlID0gczM5MF93 YXRjaF9iYXNlX2dldCAoKTsKKysgICAgfQorIAorICAgZm9yIChhcmVhID0gd2F0Y2hfYmFzZTsg YXJlYTsgYXJlYSA9IGFyZWEtPm5leHQpCisgICAgIHsKK0BAIC01MTUsNiArNTU1LDE4IEBAIHMz OTBfZml4X3dhdGNoX3BvaW50cyAoc3RydWN0IGx3cF9pbmZvICpscCkKKyAgICAgcGVycm9yX3dp dGhfbmFtZSAoXygiQ291bGRuJ3QgbW9kaWZ5IHdhdGNocG9pbnQgc3RhdHVzIikpOworIH0KKyAK KysvKiBDYWxsYmFjayBmb3IgbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzLAorKyAg IHRvIGNhbGwgczM5MF9maXhfd2F0Y2hfcG9pbnRzLiAgKi8KKysKKytzdGF0aWMgaW50CisrczM5 MF9maXhfd2F0Y2hfcG9pbnRzX2l0ZXJhdGUgKHN0cnVjdCBsd3BfaW5mbyAqbHAsIHZvaWQgKmFy ZykKKyt7CisrICBzMzkwX2ZpeF93YXRjaF9wb2ludHMgKGxwKTsKKysKKysgIC8qIENvbnRpbnVl IHRoZSB0cmF2ZXJzYWwuICAqLworKyAgcmV0dXJuIDA7CisrfQorKworIHN0YXRpYyBpbnQKKyBz MzkwX2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUs CisgCQkJc3RydWN0IGV4cHJlc3Npb24gKmNvbmQpCitAQCAtNTMxLDggKzU4Myw4IEBAIHMzOTBf aW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgdHlwZSwKKyAg IGFyZWEtPm5leHQgPSB3YXRjaF9iYXNlOworICAgd2F0Y2hfYmFzZSA9IGFyZWE7CisgCistICBB TExfTFdQUyAobHApCistICAgIHMzOTBfZml4X3dhdGNoX3BvaW50cyAobHApOworKyAgbGludXhf bmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzIChzMzkwX2ZpeF93YXRjaF9wb2ludHNfaXRlcmF0 ZSwgTlVMTCk7CisrCisgICByZXR1cm4gMDsKKyB9CisgCitAQCAtNTU5LDggKzYxMSw4IEBAIHMz OTBfcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgdHlwZSwK KyAgICpwYXJlYSA9IGFyZWEtPm5leHQ7CisgICB4ZnJlZSAoYXJlYSk7CisgCistICBBTExfTFdQ UyAobHApCistICAgIHMzOTBfZml4X3dhdGNoX3BvaW50cyAobHApOworKyAgbGludXhfbmF0X2l0 ZXJhdGVfd2F0Y2hwb2ludF9sd3BzIChzMzkwX2ZpeF93YXRjaF9wb2ludHNfaXRlcmF0ZSwgTlVM TCk7CisrCisgICByZXR1cm4gMDsKKyB9CisgCitkaWZmIC0tZ2l0IGEvZ2RiL3MzOTAtdGRlcC5j IGIvZ2RiL3MzOTAtdGRlcC5jCitpbmRleCBjZDBlZjljLi44NTgzMDUxIDEwMDY0NAorLS0tIGEv Z2RiL3MzOTAtdGRlcC5jCisrKysgYi9nZGIvczM5MC10ZGVwLmMKK0BAIC01Niw2ICs1NiwxMiBA QAorICNpbmNsdWRlICJmZWF0dXJlcy9zMzkweC1saW51eDY0djEuYyIKKyAjaW5jbHVkZSAiZmVh dHVyZXMvczM5MHgtbGludXg2NHYyLmMiCisgCisrI2luY2x1ZGUgInN0YXAtcHJvYmUuaCIKKysj aW5jbHVkZSAiYXguaCIKKysjaW5jbHVkZSAiYXgtZ2RiLmgiCisrI2luY2x1ZGUgInVzZXItcmVn cy5oIgorKyNpbmNsdWRlICJjbGkvY2xpLXV0aWxzLmgiCisrI2luY2x1ZGUgPGN0eXBlLmg+Cisg CisgLyogVGhlIHRkZXAgc3RydWN0dXJlLiAgKi8KKyAKK0BAIC0yOTU0LDYgKzI5NjAsMTUgQEAg czM5MF9hZGRyZXNzX2NsYXNzX25hbWVfdG9fdHlwZV9mbGFncyAoc3RydWN0IGdkYmFyY2ggKmdk YmFyY2gsCisgICAgIHJldHVybiAwOworIH0KKyAKKytzdGF0aWMgaW50CisrczM5MF9zdGFwX2lz X3NpbmdsZV9vcGVyYW5kIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgY29uc3QgY2hhciAqcykK Kyt7CisrICByZXR1cm4gKChpc2RpZ2l0ICgqcykgJiYgc1sxXSA9PSAnKCcgJiYgc1syXSA9PSAn JScpIC8qIERpc3BsYWNlbWVudAorKwkJCQkJCQkgIG9yIGluZGlyZWN0aW9uLiAgKi8KKysJICB8 fCAqcyA9PSAnJScgLyogUmVnaXN0ZXIgYWNjZXNzLiAgKi8KKysJICB8fCBpc2RpZ2l0ICgqcykp OyAvKiBMaXRlcmFsIG51bWJlci4gICovCisrfQorKworIC8qIFNldCB1cCBnZGJhcmNoIHN0cnVj dC4gICovCisgCisgc3RhdGljIHN0cnVjdCBnZGJhcmNoICoKK0BAIC0zMjg0LDYgKzMyOTksMTIg QEAgczM5MF9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdk YmFyY2hfbGlzdCAqYXJjaGVzKQogIAotIHZvaWQgc291cmNlX3B5dGhvbl9zY3JpcHQgKEZJTEUg KnN0cmVhbSwgY29uc3QgY2hhciAqZmlsZSk7CisgICBzZXRfZ2RiYXJjaF9nZXRfc2lnaW5mb190 eXBlIChnZGJhcmNoLCBsaW51eF9nZXRfc2lnaW5mb190eXBlKTsKICAKLSt2b2lkIHJ1bl9weXRo b25fc2NyaXB0IChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworKyAgLyogU3lzdGVtVGFwIGZ1bmN0 aW9ucy4gICovCisrICBzZXRfZ2RiYXJjaF9zdGFwX3JlZ2lzdGVyX3ByZWZpeCAoZ2RiYXJjaCwg IiUiKTsKKysgIHNldF9nZGJhcmNoX3N0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fcHJlZml4IChn ZGJhcmNoLCAiKCIpOworKyAgc2V0X2dkYmFyY2hfc3RhcF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9z dWZpeCAoZ2RiYXJjaCwgIikiKTsKKysgIHNldF9nZGJhcmNoX3N0YXBfaXNfc2luZ2xlX29wZXJh bmQgKGdkYmFyY2gsIHMzOTBfc3RhcF9pc19zaW5nbGVfb3BlcmFuZCk7CiArCi0gaW50IGFwcGx5 X3ZhbF9wcmV0dHlfcHJpbnRlciAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2 YWxhZGRyLAotIAkJCSAgICAgIGludCBlbWJlZGRlZF9vZmZzZXQsIENPUkVfQUREUiBhZGRyZXNz LAotIAkJCSAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCByZWN1cnNlLAotSW5kZXg6 IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3NvbXJlYWQuYwotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvc29tcmVhZC5jCTIwMTEtMDMtMDcgMTc6MTc6MjkuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc29tcmVhZC5jCTIwMTEt MDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCi1AQCAtNDM5LDYgKzQzOSw3IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3Qgc3ltX2ZucyBzb21fc3ltX2ZucworICAgcmV0dXJuIGdkYmFyY2g7Cisg fQorIAorZGlmZiAtLWdpdCBhL2dkYi9zb21yZWFkLmMgYi9nZGIvc29tcmVhZC5jCitpbmRleCA3 MGZjM2EzLi5lNWM4YzlmIDEwMDY0NAorLS0tIGEvZ2RiL3NvbXJlYWQuYworKysrIGIvZ2RiL3Nv bXJlYWQuYworQEAgLTQyNyw2ICs0MjcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHN5bV9mbnMg c29tX3N5bV9mbnMgPQogICAgZGVmYXVsdF9zeW1maWxlX3NlZ21lbnRzLAkvKiBHZXQgc2VnbWVu dCBpbmZvcm1hdGlvbiBmcm9tIGEgZmlsZS4gICovCiAgICBOVUxMLAogICAgZGVmYXVsdF9zeW1m aWxlX3JlbG9jYXRlLAkvKiBSZWxvY2F0ZSBhIGRlYnVnIHNlY3Rpb24uICAqLwpAQCAtNzQ2MCwz NyArODY5MiwyNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc29tcmVhZC5jCiAg ICAmcHN5bV9mdW5jdGlvbnMKICB9OwogIAotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L3N0YWNrLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3N0 YWNrLmMJMjAxMS0wNi0yNyAyMToyMTo1MC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi9zdGFjay5jCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAw Ci1AQCAtMzY2LDYgKzM2Niw3IEBAIHByaW50X2ZyYW1lX2FyZ3MgKHN0cnVjdCBzeW1ib2wgKmZ1 bmMsIHMKLSAJICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGxhbmd1 YWdlX2RlZm4gKmxhbmd1YWdlOwotIAkJICBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRz OwotKwkJICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluOwotIAotICAgICAgICAgICAgICAgICAg IC8qIFVzZSB0aGUgYXBwcm9wcmlhdGUgbGFuZ3VhZ2UgdG8gZGlzcGxheSBvdXIgc3ltYm9sLAot ICAgICAgICAgICAgICAgICAgICAgIHVubGVzcyB0aGUgdXNlciBmb3JjZWQgdGhlIGxhbmd1YWdl IHRvIGEgc3BlY2lmaWMKLUBAIC0zNzgsNyArMzc5LDEzIEBAIHByaW50X2ZyYW1lX2FyZ3MgKHN0 cnVjdCBzeW1ib2wgKmZ1bmMsIHMKLSAJCSAgZ2V0X3Jhd19wcmludF9vcHRpb25zICgmb3B0cyk7 Ci0gCQkgIG9wdHMuZGVyZWZfcmVmID0gMDsKLSAJCSAgb3B0cy5zdW1tYXJ5ID0gc3VtbWFyeTsK LSsKLSsJCSAgLyogRnJhbWUgbWF5IGJlIG5lZWRlZCBmb3IgY2hlY2tfdHlwZWRlZiBvZiBUWVBF X0RZTkFNSUMuICAqLwotKwkJICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXBfcmVzdG9yZV9zZWxl Y3RlZF9mcmFtZSAoKTsKLSsJCSAgc2VsZWN0X2ZyYW1lIChmcmFtZSk7Ci0gCQkgIGNvbW1vbl92 YWxfcHJpbnQgKHZhbCwgc3RiLT5zdHJlYW0sIDIsICZvcHRzLCBsYW5ndWFnZSk7Ci0rCQkgIGRv X2NsZWFudXBzIChvbGRfY2hhaW4pOwotKwotIAkJICB1aV9vdXRfZmllbGRfc3RyZWFtICh1aW91 dCwgInZhbHVlIiwgc3RiKTsKLSAJICAgICAgICB9Ci0gCSAgICAgIGVsc2UKLUluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi9zdGFwLXByb2JlLmMKLT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251 bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi9zdGFwLXByb2JlLmMJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAy MDAKLUBAIC0wLDAgKzEsMjA0MiBAQAorZGlmZiAtLWdpdCBhL2dkYi9zdGFjay5jIGIvZ2RiL3N0 YWNrLmMKK2luZGV4IGM1YzU0ZGIuLjlmYzNiNzQgMTAwNjQ0CistLS0gYS9nZGIvc3RhY2suYwor KysrIGIvZ2RiL3N0YWNrLmMKK0BAIC01MTEsNiArNTExLDEwIEBAIHByaW50X2ZyYW1lX2FyZ3Mg KHN0cnVjdCBzeW1ib2wgKmZ1bmMsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKKyAgIHN0YiA9 IHVpX291dF9zdHJlYW1fbmV3ICh1aW91dCk7CisgICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXBf dWlfb3V0X3N0cmVhbV9kZWxldGUgKHN0Yik7CisgCisrICAvKiBGcmFtZSBtYXkgYmUgbmVlZGVk IGZvciBjaGVja190eXBlZGVmIG9mIFRZUEVfRFlOQU1JQy4gICovCisrICBtYWtlX2NsZWFudXBf cmVzdG9yZV9zZWxlY3RlZF9mcmFtZSAoKTsKKysgIHNlbGVjdF9mcmFtZSAoZnJhbWUpOworKwor ICAgaWYgKGZ1bmMpCisgICAgIHsKKyAgICAgICBzdHJ1Y3QgYmxvY2sgKmIgPSBTWU1CT0xfQkxP Q0tfVkFMVUUgKGZ1bmMpOworZGlmZiAtLWdpdCBhL2dkYi9zdGFwLXByb2JlLmMgYi9nZGIvc3Rh cC1wcm9iZS5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNzRmZDllOQor LS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3N0YXAtcHJvYmUuYworQEAgLTAsMCArMSwxNjcxIEBA CiArLyogU3lzdGVtVGFwIHByb2JlIHN1cHBvcnQgZm9yIEdEQi4KICsKICsgICBDb3B5cmlnaHQg KEMpIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCkBAIC03NTE4LDIzICs4NzQw LDMwIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zdGFwLXByb2JlLmMKICsjaW5j bHVkZSAib2JqZmlsZXMuaCIKICsjaW5jbHVkZSAiYXJjaC11dGlscy5oIgogKyNpbmNsdWRlICJj b21tYW5kLmgiCisrI2luY2x1ZGUgImdkYmNtZC5oIgogKyNpbmNsdWRlICJmaWxlbmFtZXMuaCIK ICsjaW5jbHVkZSAidmFsdWUuaCIKICsjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgogKyNpbmNsdWRl ICJheC5oIgogKyNpbmNsdWRlICJheC1nZGIuaCIKLSsjaW5jbHVkZSAidXNlci1yZWdzLmgiCiAr I2luY2x1ZGUgImNvbXBsYWludHMuaCIKICsjaW5jbHVkZSAiY2xpL2NsaS11dGlscy5oIgogKyNp bmNsdWRlICJsaW5lc3BlYy5oIgorKyNpbmNsdWRlICJ1c2VyLXJlZ3MuaCIKKysjaW5jbHVkZSAi cGFyc2VyLWRlZnMuaCIKKysjaW5jbHVkZSAibGFuZ3VhZ2UuaCIKICsKICsjaW5jbHVkZSA8Y3R5 cGUuaD4KICsKLSsvKiBUaGlzIGRlZmluZSBpcyB1c2VkIHRvIGluZm9ybSB3aGV0aGVyIHdlIGFy ZSBjb21waWxpbmcgYW4gYWdlbnQKLSsgICBleHByZXNzaW9uIG9yIG5vdC4gICovCisrLyogVGhl IG1heGltdW0gbnVtYmVyIG9mIGFyZ3VtZW50cyB0aGF0IGEgcHJvYmUgY2FuIGhhdmUsCisrICAg YXMgZGVmaW5lZCBpbiA8c3lzL3NkdC5oPi4gICovCisrCisrI2RlZmluZSBTVEFQX01BWF9BUkdT IDEyCisrCisrLyogU2hvdWxkIHdlIGRpc3BsYXkgZGVidWcgaW5mb3JtYXRpb24gZm9yIHRoZSBw cm9iZSdzIGFyZ3VtZW50IGV4cHJlc3Npb24KKysgICBwYXJzaW5nPyAgKi8KICsKLSsjZGVmaW5l IFNUQVBfQ09NUElMSU5HX0FHRU5UX0VYUFJfUChldmFsX2luZm8pIFwKLSsgIChldmFsX2luZm8t PmFleHByICE9IE5VTEwpCisrc3RhdGljIGludCBzdGFwX2V4cHJlc3Npb25fZGVidWcgPSAwOwog KwogKy8qIFRoZSB2YXJpb3VzIHBvc3NpYmlsaXRpZXMgb2YgYml0bmVzcyBkZWZpbmVkIGZvciBh IHByb2JlJ3MgYXJndW1lbnQuCiArCkBAIC03NTYyLDE0ICs4NzkxLDEyIEBAIEluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi9zdGFwLXByb2JlLmMKICsgIC8qIFRoZSBiaXRuZXNzIG9mIHRo aXMgYXJndW1lbnQuICAqLwogKyAgZW51bSBzdGFwX2FyZ19iaXRuZXNzIGJpdG5lc3M7CiArCi0r ICAvKiBUaGUgc3RyaW5nIHJlcHJlc2VudGluZyB0aGlzIGFyZ3VtZW50LiAgKi8KLSsgIGNoYXIg KmFyZ19zdHI7Ci0rfTsKLSsKLSsvKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgYXJndW1lbnRzIHRo YXQgYSBwcm9iZSBjYW4gaGF2ZSwKLSsgICBhcyBkZWZpbmVkIGluIDxzeXMvc2R0Lmg+LiAgKi8K KysgIC8qIFRoZSBjb3JyZXNwb25kaW5nIGBzdHJ1Y3QgdHlwZSAqJyB0byB0aGUgYml0bmVzcy4g ICovCisrICBzdHJ1Y3QgdHlwZSAqYXR5cGU7CiArCi0rI2RlZmluZSBTVEFQX01BWF9BUkdTIDEw CisrICAvKiBUaGUgYXJndW1lbnQgY29udmVydGVkIHRvIGFuIGludGVybmFsIEdEQiBleHByZXNz aW9uLiAgKi8KKysgIHN0cnVjdCBleHByZXNzaW9uICphZXhwcjsKKyt9OwogKwogKy8qIFN0cnVj dHVyZSB0aGF0IGhvbGRzIGluZm9ybWF0aW9uIGFib3V0IGFsbCBhcmd1bWVudHMgb2YgYSBwcm9i ZS4gICovCiArCkBAIC03NTgxLDQ5NCArODgwOCwxMTcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL3N0YXAtcHJvYmUuYwogKyAgLyogVGhlIHByb2JlIHRvIHdoaWNoIHRoZXNlIGFy Z3VtZW50cyBiZWxvbmcuICAqLwogKyAgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlOwogKwotKyAg LyogSW5mb3JtYXRpb24gYWJvdXQgZWFjaCBhcmd1bWVudC4gICovCi0rICBzdHJ1Y3Qgc3RhcF9w cm9iZV9hcmcgKmFyZzsKLSt9OwotKwotKy8qIFN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zIGFsbCB0 aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIHRvIGV2YWx1YXRlCi0rICAgYW4gZXhwcmVzc2lvbi4g ICovCi0rCi0rc3RydWN0IHN0YXBfZXZhbHVhdGlvbl9pbmZvCi0rewotKyAgLyogVGhlIGNvbnN0 YW50IHBvaW50ZXIgd2hpY2ggaG9sZHMgdGhlIGV4cHJlc3Npb24uIFRoaXMgaXMgcHJpbWFyaWx5 Ci0rICAgICB1c2VkIGZvciBwcmludGluZyBlcnJvciBtZXNzYWdlcy4gIEV2YWx1YXRpb24gZnVu Y3Rpb25zIHNob3VsZAotKyAgICAgbm90IG1vZGlmeSB0aGlzIHBvaW50ZXIgZGlyZWN0bHk7IGlu c3RlYWQsIHRoZXkgc2hvdWxkIHVzZSB0aGUKLSsgICAgIEVYUF9CVUZGRVIgcG9pbnRlciBiZWxv dy4gICovCi0rICBjb25zdCBjaGFyICpzYXZlZF9leHByOwotKwotKyAgLyogTW9kaWZpYWJsZSB2 ZXJzaW9uIG9mIHRoZSBhYm92ZSBwb2ludGVyLiAgKi8KLSsgIGNoYXIgKmV4cF9idWY7Ci0rCi0r ICAvKiBUaGUgcG9pbnRlciB0byB0aGUgY3VycmVudCBnZGJhcmNoLiAgKi8KLSsgIHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoOwotKwotKyAgLyogVGhlIHBvaW50ZXIgdG8gdGhlIGN1cnJlbnQgZnJh bWUsIHVzZWQgd2hlbiBhY2Nlc3NpbmcgcmVnaXN0ZXJzJwotKyAgICAgY29udGVudHMuICAqLwot KyAgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lOwotKwotKyAgLyogVGhlIGJpdG5lc3Mgc3BlY2lm aWVkIGZvciB0aGlzIGFyZ3VtZW50LiAgKi8KLSsgIGVudW0gc3RhcF9hcmdfYml0bmVzcyBiaXRu ZXNzOwotKwotKyAgLyogSWYgdGhlIGFib3ZlIGZsYWcgaXMgdHJ1ZSAob25lKSwgdGhpcyBmaWVs ZCB3aWxsIGNvbnRhaW4gdGhlCi0rICAgICBwb2ludGVyIHRvIHRoZSBhZ2VudCBleHByZXNzaW9u LiAgKi8KLSsgIHN0cnVjdCBhZ2VudF9leHByICphZXhwcjsKLSsKLSsgIC8qIFRoZSB2YWx1ZSB3 ZSBhcmUgbW9kaWZ5aW5nIChmb3IgYWdlbnQgZXhwcmVzc2lvbikuICAqLwotKyAgc3RydWN0IGF4 c192YWx1ZSAqYXZhbHVlOworKyAgLyogSW5mb3JtYXRpb24gYWJvdXQgZWFjaCBhcmd1bWVudC4g IFRoaXMgaXMgYW4gYXJyYXkgb2YgYHN0YXBfcHJvYmVfYXJnJywKKysgICAgIHdpdGggZWFjaCBl bnRyeSByZXByZXNlbnRpbmcgb25lIGFyZ3VtZW50LiAgKi8KKysgIHN0cnVjdCBzdGFwX3Byb2Jl X2FyZyAqYXJnczsKICt9OwogKwotKy8qIFRoaXMgZHVtbXkgdmFyaWFibGUgaXMgdXNlZCB3aGVu IHBhcnNpbmcgYSBwcm9iZSdzIGFyZ3VtZW50IGZhaWxzLgotKyAgIEluIHRoaXMgY2FzZSwgdGhl IG51bWJlciBvZiBhcmd1bWVudHMgZm9yIHRoaXMgcHJvYmUgaXMgemVybywgc28gdGhhdCdzCi0r ICAgd2h5IHRoaXMgdmFyaWFibGUgaXMgdXNlZnVsLiAgKi8KLSsKLStzdGF0aWMgc3RydWN0IHN0 YXBfYXJnc19pbmZvIGR1bW15X3N0YXBfYXJnc19pbmZvID0KLSsgIHsgMCwgTlVMTCwgTlVMTCB9 OwotKwotK3N0YXRpYyBzdHJ1Y3QgdmFsdWUgKnN0YXBfZXZhbHVhdGVfcHJvYmVfYXJndW1lbnRf MgotKyAgKHN0cnVjdCBzdGFwX2V2YWx1YXRpb25faW5mbyAqZXZhbF9pbmZvLAotKyAgIHN0cnVj dCB2YWx1ZSAqbGhzLCBpbnQgcHJlYyk7Ci0rCi0rc3RhdGljIHN0cnVjdCB2YWx1ZSAqc3RhcF9l dmFsdWF0ZV9jb25kaXRpb25hbGx5Ci0rICAoc3RydWN0IHN0YXBfZXZhbHVhdGlvbl9pbmZvICpl dmFsX2luZm8pOwotKwotKy8qIEhlbHBlciBmdW5jdGlvbiB3aGljaCBkZWNpZGVzIHRvIHNraXAg d2hpdGVzcGFjZXMgb3Igbm90IGluIGEgcHJvYmUncwotKyAgIGFyZ3VtZW50IHN0cmluZy4gIEJh c2ljYWxseSwgaWYgd2UgYXJlIGluc2lkZSBhIHBhcmVudGhlc2lzIGV4cHJlc3Npb24KLSsgICAo aS5lLiwgaW5zaWRlIGEgc3ViZXhwcmVzc2lvbiksIHdlIGNhbiBza2lwIHdoaXRlc3BhY2VzOyBv dGhlcndpc2Ugd2UKLSsgICBjYW5ub3QuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc3RhcF9za2lw X3doaXRlc3BhY2VfY29uZCAoY2hhciAqKnMsIGludCBpbnNpZGVfcGFyZW4pCi0rewotKyAgaWYg KGluc2lkZV9wYXJlbikKLSsgICAgKnMgPSBza2lwX3NwYWNlcyAoKnMpOwotK30KLSsKLSsvKiBI ZWxwZXIgZnVuY3Rpb24gd2hpY2ggcGFyc2VzIGEgc2luZ2xlIGFyZ3VtZW50IGluIGEgcHJvYmUn cyBhcmd1bWVudAotKyAgIHN0cmluZywgYmFzZWQgb24gdmFyaW91cyBydWxlcyAod2hpY2ggY2Fu IGJlIGxlYXJuZWQgZnJvbSB0aGUgYGdhcycKLSsgICBtYW51YWwpLiAgSXQgcmV0dXJucyAxIG9u IHN1Y2Nlc3MsIG9yIDAgb3RoZXJ3aXNlLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0rc3RhcF9wYXJz ZV9hcmcgKGNvbnN0IGNoYXIgKipwKQotK3sKLSsgIGNoYXIgKmN1ciA9IChjaGFyICopICpwOwot KyAgaW50IGRvbmUgPSAwOwotKyAgaW50IHBhcmVuX29wZW4gPSAwOwotKwotKyAgd2hpbGUgKCFk b25lKQotKyAgICB7Ci0rICAgICAgc3dpdGNoICgqY3VyKQotKwl7Ci0rCWNhc2UgJyAnOiBjYXNl IDA6Ci0rCSAgLyogSWYgd2UncmUgaGVyZSwgdGhlbiB3ZSBoYXZlIGFscmVhZHkgcGFyc2VkIGV2 ZXJ5dGhpbmcKLSsJICAgICBmcm9tIHRoaXMgYXJndW1lbnQuICAqLwotKwkgIGlmIChwYXJlbl9v cGVuKQotKwkgICAgcmV0dXJuIDA7Ci0rCSAgZG9uZSA9IDE7Ci0rCSAgYnJlYWs7Ci0rCi0rCWNh c2UgJygnOgotKwkgICsrcGFyZW5fb3BlbjsKLSsJICArK2N1cjsKLSsJICBzdGFwX3NraXBfd2hp dGVzcGFjZV9jb25kICgmY3VyLCBwYXJlbl9vcGVuKTsKLSsJICBicmVhazsKLSsKLSsJY2FzZSAn KSc6Ci0rCSAgaWYgKCFwYXJlbl9vcGVuKQotKwkgICAgcmV0dXJuIDA7Ci0rCi0rCSAgLS1wYXJl bl9vcGVuOwotKwkgICsrY3VyOwotKwkgIGlmIChwYXJlbl9vcGVuKQotKwkgICAgY3VyID0gc2tp cF9zcGFjZXMgKGN1cik7Ci0rCSAgYnJlYWs7Ci0rCi0rCWNhc2UgJysnOiBjYXNlICctJzoKLSsJ Y2FzZSAnKic6IGNhc2UgJy8nOgotKwljYXNlICc+JzogY2FzZSAnPCc6IGNhc2UgJ3wnOiBjYXNl ICcmJzoKLSsJY2FzZSAnXic6IGNhc2UgJyEnOgotKwkgICAgewotKwkgICAgICBjaGFyIGMgPSAq Y3VyOwotKwotKwkgICAgICArK2N1cjsKLSsJICAgICAgc3dpdGNoICgqY3VyKQotKwkJewotKwkJ Y2FzZSAnPic6Ci0rCQkgIGlmIChjICE9ICc8JyAmJiBjICE9ICc+JykKLSsJCSAgICByZXR1cm4g MDsKLSsKLSsJCSAgKytjdXI7Ci0rCQkgIGJyZWFrOwotKwotKwkJY2FzZSAnPCc6Ci0rCQkgIGlm IChjICE9ICc8JykKLSsJCSAgICByZXR1cm4gMDsKLSsKLSsJCSAgKytjdXI7Ci0rCQkgIGJyZWFr OwotKwotKwkJY2FzZSAnPSc6Ci0rCQkgIGlmIChjICE9ICc9JyAmJiBjICE9ICc8JyAmJiBjICE9 ICc+JyAmJiBjICE9ICchJykKLSsJCSAgICByZXR1cm4gMDsKLSsKLSsJCSAgKytjdXI7Ci0rCQkg IGJyZWFrOwotKwotKwkJY2FzZSAnfCc6Ci0rCQkgIGlmIChjICE9ICd8JykKLSsJCSAgICByZXR1 cm4gMDsKLSsKLSsJCSAgKytjdXI7Ci0rCQkgIGJyZWFrOwotKwotKwkJY2FzZSAnJic6Ci0rCQkg IGlmIChjICE9ICcmJykKLSsJCSAgICByZXR1cm4gMDsKLSsKLSsJCSAgKytjdXI7Ci0rCQkgIGJy ZWFrOwotKwotKwkJZGVmYXVsdDoKLSsJCSAgYnJlYWs7Ci0rCQl9Ci0rCSAgICAgIC8qIEluZml4 IG9wZXJhdG9ycyB0YWtlIHR3byBhcmd1bWVudHMsIG9uZSBvbiBlaXRoZXIKLSsJCSBzaWRlLiAg U2tpcHBpbmcgdGhlIHdoaXRlc3BhY2VzIHRoYXQgbWF5IGhhcHBlbiBvbiB0aGUKLSsJCSByaWdo dCBzaWRlLiAgKi8KLSsJICAgICAgc3RhcF9za2lwX3doaXRlc3BhY2VfY29uZCAoJmN1ciwgcGFy ZW5fb3Blbik7Ci0rCSAgICB9Ci0rCSAgYnJlYWs7Ci0rCi0rCWNhc2UgJyUnOgotKwkgICAgewot KwkgICAgICArK2N1cjsKLSsJICAgICAgc3RhcF9za2lwX3doaXRlc3BhY2VfY29uZCAoJmN1ciwg cGFyZW5fb3Blbik7Ci0rCSAgICAgIGlmICgqY3VyID49ICdhJyAmJiAqY3VyIDw9ICd6JykKLSsJ CXsKLSsJCSAgLyogV2UncmUgZGVhbGluZyB3aXRoIGEgcmVnaXN0ZXIgbmFtZS4gICovCi0rCQkg IHdoaWxlIChpc2FsbnVtICgqY3VyKSkKLSsJCSAgICArK2N1cjsKLSsKLSsJCSAgc3RhcF9za2lw X3doaXRlc3BhY2VfY29uZCAoJmN1ciwgcGFyZW5fb3Blbik7Ci0rCi0rCQkgIC8qIFNvbWUgcmVn aXN0ZXJzIChlLmcuIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVyIHN0YWNrCi0rCQkgICAgIHJlZ2lz dGVycyBvbiBJbnRlbCBpMzg2KSBoYXZlIHRoZSBmb2xsb3dpbmcgc3ludGF4OgotKwotKwkJICAg ICBgJXN0KDApJywgYCVzdCgxKScsIGFuZCBzbyBvbi4KLSsKLSsJCSAgICAgU28gaXQncyBvayB0 byBleHBlY3QgcGFyZW50aGVzaXMgaGVyZS4gICovCi0rCQkgIGlmICgqY3VyID09ICcoJykKLSsJ CSAgICB7Ci0rCQkgICAgICArK2N1cjsKLSsJCSAgICAgIHN0YXBfc2tpcF93aGl0ZXNwYWNlX2Nv bmQgKCZjdXIsIHBhcmVuX29wZW4pOwotKwkJICAgICAgaWYgKCFpc2RpZ2l0ICgqY3VyKSkKLSsJ CQkvKiBUaGlzIGlzIGFuIGVycm9yLCBzaW5jZSB3ZSBvbmx5IGV4cGVjdCBudW1iZXJzCi0rCQkJ ICAgaW5zaWRlIHRoaXMgcGFyZW50aGVzaXMuICAqLwotKwkJCXJldHVybiAwOwotKwkJICAgICAg KytjdXI7Ci0rCQkgICAgICBzdGFwX3NraXBfd2hpdGVzcGFjZV9jb25kICgmY3VyLCBwYXJlbl9v cGVuKTsKLSsJCSAgICAgIGlmICgqY3VyICE9ICcpJykKLSsJCQkvKiBXZSBvbmx5IGV4cGVjdCBv bmUgbnVtYmVyLiAgKi8KLSsJCQlyZXR1cm4gMDsKLSsJCSAgICAgICsrY3VyOwotKwkJICAgICAg c3RhcF9za2lwX3doaXRlc3BhY2VfY29uZCAoJmN1ciwgcGFyZW5fb3Blbik7Ci0rCQkgICAgfQot KwkJfQotKwkgICAgfQotKwkgIGJyZWFrOwotKwotKwljYXNlICckJzoKLSsJICAgIHsKLSsJICAg ICAgLyogVGhpcyBpcyBhbiBpbnRlZ2VyIGNvbnN0YW50LiAgKi8KLSsJICAgICAgKytjdXI7Ci0r CSAgICAgIHN0YXBfc2tpcF93aGl0ZXNwYWNlX2NvbmQgKCZjdXIsIHBhcmVuX29wZW4pOwotKwot KwkgICAgICB3aGlsZSAoaXNkaWdpdCAoKmN1cikpCi0rCQkrK2N1cjsKLSsKLSsJICAgICAgc3Rh cF9za2lwX3doaXRlc3BhY2VfY29uZCAoJmN1ciwgcGFyZW5fb3Blbik7Ci0rCSAgICB9Ci0rCSAg YnJlYWs7Ci0rCi0rCWNhc2UgJzAnOiBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOiBjYXNl ICc0JzoKLSsJY2FzZSAnNSc6IGNhc2UgJzYnOiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzkn OgotKwkgICAgewotKwkgICAgICBjaGFyICpvbGQgPSBjdXI7Ci0rCi0rCSAgICAgIC8qIE51bWJl ci4gICovCi0rCSAgICAgIHdoaWxlIChpc2RpZ2l0ICgqY3VyKSkKLSsJCSsrY3VyOwotKwotKwkg ICAgICAvKiBXZSBoYXZlIHRvIGRvIGEgbG9va2FoZWFkIGhlcmUsIGJlY2F1c2UgdGhlIHVzZXIg bWF5Ci0rCQkgaW5wdXQgYDIgKyAyJyAod2l0aCBzcGFjZXMpLCBhbmQgdGhpcyBpcyBub3QgYW4g ZXJyb3IuICAqLwotKwkgICAgICBjdXIgPSBza2lwX3NwYWNlcyAoY3VyKTsKLSsKLSsJICAgICAg c3dpdGNoICgqY3VyKQotKwkJewotKwkJY2FzZSAnKyc6IGNhc2UgJy0nOgotKwkJICAvKiBXZSBt YXkgZmluZCB0aGUgYEAnIHNpZ24sIGFuZCBpdCBtZWFucyB0aGF0IHRoZQotKwkJICAgICBhcmd1 bWVudCBoYXMgZmluaXNoZWQsIHNvIHdlIHNob3VsZG4ndCBhZHZhbmNlIHRoZQotKwkJICAgICBw b2ludGVyLiAgKi8KLSsJCSAgaWYgKGN1clsxXSAmJiAoY3VyWzFdID09ICc0JyB8fCBjdXJbMV0g PT0gJzgnKQotKwkJICAgICAgJiYgY3VyWzJdICYmIGN1clsyXSA9PSAnQCcpCi0rCQkgICAgewot KwkJICAgICAgY3VyID0gb2xkOwotKwkJICAgICAgZ290byBmaW47Ci0rCQkgICAgfQotKwkJICBi cmVhazsKLSsKLSsJCWNhc2UgJyonOiBjYXNlICcvJzogY2FzZSAnPic6IGNhc2UgJzwnOgotKwkJ Y2FzZSAnfCc6IGNhc2UgJyYnOiBjYXNlICdeJzogY2FzZSAnISc6Ci0rCQkgIC8qIFRoaXMgaXMg YSBiaW5hcnkgb3BlcmF0aW9uLCB3aGljaCBtZWFucyB3ZSdsbAotKwkJICAgICBoYXZlIHRvIGZp bmQgYW5vdGhlciBudW1iZXIgYWZ0ZXIgdGhlIG9wZXJhdG9yLiAgKi8KLSsJCSAgYnJlYWs7Ci0r Ci0rCQljYXNlICcoJzoKLSsJCSAgLyogV2UgbWF5IGFsc28gaGF2ZSBzZW50ZW5jZXMgaW4gdGhl IGZvcm06Ci0rCi0rCQkgICAgIGA0ICglcmF4KScgICovCi0rCQkgIGJyZWFrOwotKwkJfQotKwkg ICAgfQotK2ZpbjoKLSsJICBicmVhazsKLSsJfQotKyAgICB9Ci0rCi0rICAqcCA9IGN1cjsKLSsK LSsgIHJldHVybiAxOwotK30KLSsKLSsvKiBIZWxwZXIgZnVuY3Rpb24gd2hpY2ggaXMgcmVzcG9u c2libGUgZm9yIGZyZWVpbmcgdGhlIHNwYWNlIGFsbG9jYXRlZCB0bwotKyAgIGhvbGQgaW5mb3Jt YXRpb24gYWJvdXQgYSBwcm9iZSdzIGFyZ3VtZW50cy4gICovCi0rCi0rc3RhdGljIHZvaWQKLStz dGFwX2ZyZWVfYXJnc19pbmZvICh2b2lkICphcmdzX2luZm9fcHRyKQotK3sKLSsgIHN0cnVjdCBz dGFwX2FyZ3NfaW5mbyAqYSA9IChzdHJ1Y3Qgc3RhcF9hcmdzX2luZm8gKikgYXJnc19pbmZvX3B0 cjsKLSsgIGludCBpOwotKwotKyAgZm9yIChpID0gMDsgaSA8IGEtPm5fYXJnczsgaSsrKQotKyAg ICB4ZnJlZSAoYS0+YXJnW2ldLmFyZ19zdHIpOwotKwotKyAgeGZyZWUgKGEtPmFyZyk7Ci0rICB4 ZnJlZSAoYSk7Ci0rfQotKwotKy8qIEZ1bmN0aW9uIHdoaWNoIHBhcnNlcyBhbiBhcmd1bWVudCBz dHJpbmcgZnJvbSBQUk9CRSwgY29ycmVjdGx5IHNwbGl0dGluZwotKyAgIHRoZSBhcmd1bWVudHMg YW5kIHN0b3JpbmcgdGhlaXIgaW5mb3JtYXRpb24gaW4gcHJvcGVybHkgd2F5cy4gIFRoaXMgZnVu Y3Rpb24KLSsgICBvbmx5IHNlcGFyYXRlcyB0aGUgYXJndW1lbnRzLCBidXQgZG9lcyBub3QgZXZh bHVhdGUgdGhlbS4KLSsKLSsgICBDb25zaWRlciB0aGUgZm9sbG93aW5nIGFyZ3VtZW50IHN0cmlu ZzoKLSsKLSsgICBgNEAlZWF4IDRAJDEwJwotKwotKyAgIFdlIGhhdmUgdHdvIGFyZ3VtZW50cywg YCVlYXgnIGFuZCBgJDEwJywgYm90aCB3aXRoIDMyLWJpdCB1bnNpZ25lZCBiaXRuZXNzLgotKyAg IFRoaXMgZnVuY3Rpb24gYmFzaWNhbGx5IGhhbmRsZXMgdGhlbSwgcHJvcGVybHkgZmlsbGluZyBz b21lIHN0cnVjdHVyZXMgd2l0aAotKyAgIHRoaXMgaW5mb3JtYXRpb24uICAqLwotKwotK3N0YXRp YyB2b2lkCi0rc3RhcF9wYXJzZV9wcm9iZV9hcmd1bWVudHMgKHN0cnVjdCBzdGFwX3Byb2JlICpw cm9iZSkKLSt7Ci0rICBzdHJ1Y3Qgc3RhcF9hcmdzX2luZm8gKmFyZ3NfaW5mbzsKLSsgIHN0cnVj dCBjbGVhbnVwICpiYWNrX3RvOwotKyAgY29uc3QgY2hhciAqY3VyID0gcHJvYmUtPmFyZ3M7Ci0r ICBpbnQgY3VycmVudF9hcmcgPSAtMTsKLSsgIC8qIFRoaXMgaXMgYSBzdGF0ZS1tYWNoaW5lIHBh cnNlciwgd2hpY2ggbWVhbnMgd2Ugd2lsbCBhbHdheXMgYmUKLSsgICAgIGluIGEga25vd24gc3Rh dGUgd2hlbiBwYXJzaW5nIGFuIGFyZ3VtZW50LiAgVGhlIHN0YXRlIGNvdWxkIGJlCi0rICAgICBl aXRoZXIgYE5FV19BUkcnIGlmIHdlIGFyZSBwYXJzaW5nIGEgbmV3IGFyZ3VtZW50LCBgQklUTkVT UycgaWYKLSsgICAgIHdlIGFyZSBwYXJzaW5nIHRoZSBiaXRuZXNzLWRlZmluaXRpb24gcGFydCAo aS5lLiwgYDRAJyksIG9yCi0rICAgICBgUEFSU0VfQVJHJyBpZiB3ZSBhcmUgYWN0dWFsbHkgcGFy c2luZyB0aGUgYXJndW1lbnQgcGFydC4gICovCi0rICBlbnVtCi0rICAgIHsKLSsgICAgICBORVdf QVJHLAotKyAgICAgIEJJVE5FU1MsCi0rICAgICAgUEFSU0VfQVJHLAotKyAgICB9IGN1cnJlbnRf c3RhdGU7Ci0rCi0rICAvKiBGb3Igbm93LCB3ZSBhc3N1bWUgZXZlcnl0aGluZyBpcyBub3QgZ29p bmcgdG8gd29yay4gICovCi0rICBwcm9iZS0+cGFyc2VkX2FyZ3MgPSAmZHVtbXlfc3RhcF9hcmdz X2luZm87Ci0rCi0rICBpZiAoIWN1ciB8fCAhKmN1ciB8fCAqY3VyID09ICc6JykKLSsgICAgcmV0 dXJuOwotKwotKyAgYXJnc19pbmZvID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3Qgc3RhcF9hcmdz X2luZm8pKTsKLSsgIGFyZ3NfaW5mby0+bl9hcmdzID0gMDsKLSsgIGJhY2tfdG8gPSBtYWtlX2Ns ZWFudXAgKHN0YXBfZnJlZV9hcmdzX2luZm8sIGFyZ3NfaW5mbyk7Ci0rICBhcmdzX2luZm8tPmFy ZyA9IHhjYWxsb2MgKFNUQVBfTUFYX0FSR1MsIHNpemVvZiAoc3RydWN0IHN0YXBfcHJvYmVfYXJn KSk7Ci0rCi0rICAvKiBPaywgbGV0J3Mgc3RhcnQuICAqLwotKyAgY3VycmVudF9zdGF0ZSA9IE5F V19BUkc7Ci0rCi0rICB3aGlsZSAoKmN1cikKLSsgICAgewotKyAgICAgIHN3aXRjaCAoY3VycmVu dF9zdGF0ZSkKLSsJewotKwljYXNlIE5FV19BUkc6Ci0rCSAgKytjdXJyZW50X2FyZzsKLSsKLSsJ ICBpZiAoY3VycmVudF9hcmcgPj0gU1RBUF9NQVhfQVJHUykKLSsJICAgIHsKLSsJICAgICAgY29t cGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAotKwkJCSBfKCJwcm9iZSBgJXMnIGhhcyBtb3Jl IGFyZ3VtZW50cyB0aGFuIHRoZSBtYXhpbXVtICIKLSsJCQkgICAiYWxsb3dlZCIpLCBwcm9iZS0+ bmFtZSk7Ci0rCSAgICAgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKLSsJICAgICAgcmV0dXJuOwot KwkgICAgfQotKwotKwkgIGN1cnJlbnRfc3RhdGUgPSBCSVRORVNTOwotKwkgIGJyZWFrOwotKwot KwljYXNlIEJJVE5FU1M6Ci0rCSAgICB7Ci0rCSAgICAgIGVudW0gc3RhcF9hcmdfYml0bmVzcyBi OwotKwkgICAgICBpbnQgZ290X21pbnVzID0gMDsKLSsKLSsJICAgICAgLyogV2UgZXhwZWN0IHRv IGZpbmQgc29tZXRoaW5nIGxpa2U6Ci0rCi0rCQkgTkBPUAotKwotKwkJIFdoZXJlIGBOJyBjYW4g YmUgWyssLV1bNCw4XS4gIFRoaXMgaXMgbm90IG1hbmRhdG9yeSwgc28KLSsJCSB3ZSBjaGVjayBp dCBoZXJlLiAgSWYgd2UgZG9uJ3QgZmluZCBpdCwgZ28gdG8gdGhlIG5leHQKLSsJCSBzdGF0ZS4g ICovCi0rCSAgICAgIGlmICgoKmN1ciA9PSAnLScgJiYgY3VyWzFdICYmIGN1clsyXSAhPSAnQCcp Ci0rCQkgICYmIGN1clsxXSAhPSAnQCcpCi0rCQl7Ci0rCQkgIGN1cnJlbnRfc3RhdGUgPSBQQVJT RV9BUkc7Ci0rCQkgIGFyZ3NfaW5mby0+YXJnW2N1cnJlbnRfYXJnXS5iaXRuZXNzCi0rCQkgICAg PSBTVEFQX0FSR19CSVRORVNTX1VOREVGSU5FRDsKLSsJCSAgYnJlYWs7Ci0rCQl9Ci0rCi0rCSAg ICAgIGlmICgqY3VyID09ICctJykKLSsJCXsKLSsJCSAgLyogRGlzY2FyZCB0aGUgYC0nLiAgKi8K LSsJCSAgKytjdXI7Ci0rCQkgIGdvdF9taW51cyA9IDE7Ci0rCQl9Ci0rCi0rCSAgICAgIGlmICgq Y3VyID09ICc0JykKLSsJCWIgPSBnb3RfbWludXMgPyBTVEFQX0FSR19CSVRORVNTXzMyQklUX1NJ R05FRAotKwkJICA6IFNUQVBfQVJHX0JJVE5FU1NfMzJCSVRfVU5TSUdORUQ7Ci0rCSAgICAgIGVs c2UgaWYgKCpjdXIgPT0gJzgnKQotKwkJYiA9IGdvdF9taW51cyA/IFNUQVBfQVJHX0JJVE5FU1Nf NjRCSVRfU0lHTkVECi0rCQkgIDogU1RBUF9BUkdfQklUTkVTU182NEJJVF9VTlNJR05FRDsKLSsJ ICAgICAgZWxzZQotKwkJewotKwkJICAvKiBXZSBoYXZlIGFuIGVycm9yLCBiZWNhdXNlIHdlIGRv bid0IGV4cGVjdCBhbnl0aGluZwotKwkJICAgICBleGNlcHQgNCBhbmQgOC4gICovCi0rCQkgIGNv bXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKLSsJCQkgICAgIF8oInVucmVjb2duaXplZCBi aXRuZXNzIGAlYycgZm9yIHByb2JlIGAlcyciKSwKLSsJCQkgICAgICpjdXIsIHByb2JlLT5uYW1l KTsKLSsJCSAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOwotKwkJICByZXR1cm47Ci0rCQl9CisrLyog V2hlbiBwYXJzaW5nIHRoZSBhcmd1bWVudHMsIHdlIGhhdmUgdG8gZXN0YWJsaXNoIGRpZmZlcmVu dCBwcmVjZWRlbmNlcworKyAgIGZvciB0aGUgdmFyaW91cyBraW5kcyBvZiBhc20gb3BlcmF0b3Jz LiAgVGhpcyBlbnVtZXJhdGlvbiByZXByZXNlbnRzIHRob3NlCisrICAgcHJlY2VkZW5jZXMuCiAr Ci0rCSAgICAgIGFyZ3NfaW5mby0+YXJnW2N1cnJlbnRfYXJnXS5iaXRuZXNzID0gYjsKLSsJICAg ICAgLyogRGlzY2FyZCB0aGUgbnVtYmVyIGFuZCB0aGUgYEAnIHNpZ24uICAqLwotKwkgICAgICBj dXIgKz0gMjsKLSsJICAgICAgLyogTW92ZSBvbi4gICovCi0rCSAgICAgIGN1cnJlbnRfc3RhdGUg PSBQQVJTRV9BUkc7Ci0rCSAgICB9Ci0rCSAgYnJlYWs7CisrICAgVGhpcyBsb2dpYyBiZWhpbmQg dGhpcyBpcyBhdmFpbGFibGUgYXQKKysgICA8aHR0cDovL3NvdXJjZXdhcmUub3JnL2JpbnV0aWxz L2RvY3MvYXMvSW5maXgtT3BzLmh0bWwjSW5maXgtT3BzPiwgb3IgdXNpbmcKKysgICB0aGUgY29t bWFuZCAiaW5mbyAnKGFzKUluZml4IE9wcyciLiAgKi8KICsKLSsJY2FzZSBQQVJTRV9BUkc6Ci0r CSAgICB7Ci0rCSAgICAgIGNvbnN0IGNoYXIgKnN0YXJ0ID0gY3VyOworK2VudW0gc3RhcF9vcGVy YW5kX3ByZWMKKyt7CisrICAvKiBMb3dlc3QgcHJlY2VkZW5jZSwgdXNlZCBmb3Igbm9uLXJlY29n bml6ZWQgb3BlcmFuZHMgb3IgZm9yIHRoZSBiZWdpbm5pbmcKKysgICAgIG9mIHRoZSBwYXJzaW5n IHByb2Nlc3MuICAqLworKyAgU1RBUF9PUEVSQU5EX1BSRUNfTk9ORSA9IDAsCiArCi0rCSAgICAg IGlmICghc3RhcF9wYXJzZV9hcmcgKCZjdXIpKQotKwkJewotKwkJICAvKiBXZSBoYXZlIHRyaWVk IHRvIHBhcnNlIHRoaXMgYXJndW1lbnQsIGJ1dCBpdCdzCi0rCQkgICAgIG1hbGZvcm1lZC4gIFRo aXMgaXMgYW4gZXJyb3IuICAqLwotKwkJICBkb19jbGVhbnVwcyAoYmFja190byk7Ci0rCQkgIHJl dHVybjsKLSsJCX0KKysgIC8qIFByZWNlZGVuY2Ugb2YgbG9naWNhbCBPUi4gICovCisrICBTVEFQ X09QRVJBTkRfUFJFQ19MT0dJQ0FMX09SLAogKwotKwkgICAgICBhcmdzX2luZm8tPmFyZ1tjdXJy ZW50X2FyZ10uYXJnX3N0cgotKwkJPSBzYXZlc3RyaW5nIChzdGFydCwgY3VyIC0gc3RhcnQpOwot KwkgICAgICArK2FyZ3NfaW5mby0+bl9hcmdzOwotKwkgICAgICAvKiBTdGFydCBpdCBvdmVyIGFn YWluLiAgKi8KLSsJICAgICAgY3VyID0gc2tpcF9zcGFjZXMgKChjaGFyICopIGN1cik7Ci0rCSAg ICAgIGN1cnJlbnRfc3RhdGUgPSBORVdfQVJHOwotKwkgICAgfQotKwkgIGJyZWFrOwotKwl9Cisr ICAvKiBQcmVjZWRlbmNlIG9mIGxvZ2ljYWwgQU5ELiAgKi8KKysgIFNUQVBfT1BFUkFORF9QUkVD X0xPR0lDQUxfQU5ELAogKwotKyAgICAgIGlmICghKmN1ciAmJiBjdXJyZW50X3N0YXRlICE9IE5F V19BUkcpCi0rCXsKLSsJICAvKiBXZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGFyZ3VtZW50IHN0 cmluZywgYnV0IHdlJ3JlCi0rCSAgICAgc3RpbGwgaW4gdGhlIG1pZGRsZSBvZiB0aGUgcHJvY2Vz cyBvZiBwYXJzaW5nIGFuIGFyZ3VtZW50LgotKwkgICAgIEl0IG1lYW5zIHRoZSBhcmd1bWVudCBz dHJpbmcgaXMgbWFsZm9ybWVkLiAgKi8KLSsJICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWlu dHMsCi0rCQkgICAgIF8oIm1hbGZvcm1lZCBhcmd1bWVudCBmb3IgcHJvYmUgYCVzJyIpLAotKwkJ ICAgICBwcm9iZS0+bmFtZSk7Ci0rCSAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOwotKwkgIHJldHVy bjsKLSsJfQotKyAgICB9CisrICAvKiBQcmVjZWRlbmNlIG9mIGFkZGl0aXZlIChwbHVzLCBtaW51 cykgYW5kIGNvbXBhcmF0aXZlIChlcXVhbCwgbGVzcywKKysgICAgIGdyZWF0ZXItdGhhbiwgZXRj KSBvcGVyYW5kcy4gICovCisrICBTVEFQX09QRVJBTkRfUFJFQ19BRERfQ01QLAogKwotKyAgYXJn c19pbmZvLT5hcmcgPSB4cmVhbGxvYyAoYXJnc19pbmZvLT5hcmcsCi0rCQkJICAgICAgYXJnc19p bmZvLT5uX2FyZ3MKLSsJCQkgICAgICAqIHNpemVvZiAoc3RydWN0IHN0YXBfcHJvYmVfYXJnKSk7 Ci0rICBhcmdzX2luZm8tPnByb2JlID0gcHJvYmU7CisrICAvKiBQcmVjZWRlbmNlIG9mIGJpdHdp c2Ugb3BlcmFuZHMgKGJpdHdpc2UgT1IsIFhPUiwgYml0d2lzZSBBTkQsCisrICAgICBsb2dpY2Fs IE5PVCkuICAqLworKyAgU1RBUF9PUEVSQU5EX1BSRUNfQklUV0lTRSwKICsKLSsgIHByb2JlLT5w YXJzZWRfYXJncyA9IGFyZ3NfaW5mbzsKKysgIC8qIFByZWNlZGVuY2Ugb2YgbXVsdGlwbGljYXRp dmUgb3BlcmFuZHMgKG11bHRpcGxpY2F0aW9uLCBkaXZpc2lvbiwKKysgICAgIHJlbWFpbmRlciwg bGVmdCBzaGlmdCBhbmQgcmlnaHQgc2hpZnQpLiAgKi8KKysgIFNUQVBfT1BFUkFORF9QUkVDX01V TAorK307CiArCi0rICBkaXNjYXJkX2NsZWFudXBzIChiYWNrX3RvKTsKLSt9CisrLyogVGhpcyBk dW1teSB2YXJpYWJsZSBpcyB1c2VkIHdoZW4gcGFyc2luZyBhIHByb2JlJ3MgYXJndW1lbnQgZmFp bHMuCisrICAgSW4gdGhpcyBjYXNlLCB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgdGhpcyBw cm9iZSBpcyB6ZXJvLCBzbyB0aGF0J3MKKysgICB3aHkgdGhpcyB2YXJpYWJsZSBpcyB1c2VmdWwu ICAqLwogKwotKy8qIFNlZSBkZWZpbml0aW9uIGluIHN0YXAtcHJvYmUuaC4gICovCisrc3RhdGlj IHN0cnVjdCBzdGFwX2FyZ3NfaW5mbyBkdW1teV9zdGFwX2FyZ3NfaW5mbyA9CisrICB7IDAsIE5V TEwsIE5VTEwgfTsKICsKLStpbnQKLStzdGFwX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCAoY29u c3Qgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlKQotK3sKLSsgIGlmICghcHJvYmUtPnBhcnNlZF9h cmdzKQotKyAgICBzdGFwX3BhcnNlX3Byb2JlX2FyZ3VtZW50cyAoKHN0cnVjdCBzdGFwX3Byb2Jl ICopIHByb2JlKTsKKytzdGF0aWMgdm9pZCBzdGFwX3BhcnNlX2FyZ3VtZW50XzEgKHN0cnVjdCBz dGFwX3BhcnNlX2luZm8gKnAsIGludCBoYXNfbGhzLAorKwkJCQkgICBlbnVtIHN0YXBfb3BlcmFu ZF9wcmVjIHByZWMpOwogKwotKyAgcmV0dXJuIHByb2JlLT5wYXJzZWRfYXJncy0+bl9hcmdzOwor K3N0YXRpYyB2b2lkIHN0YXBfcGFyc2VfYXJndW1lbnRfY29uZGl0aW9uYWxseSAoc3RydWN0IHN0 YXBfcGFyc2VfaW5mbyAqcCk7CisrCisrLyogUmV0dXJucyAxIGlmICpTIGlzIGFuIG9wZXJhdG9y LCB6ZXJvIG90aGVyd2lzZS4gICovCisrCisrc3RhdGljIGludCBzdGFwX2lzX29wZXJhdG9yIChj aGFyIG9wKTsKKysKKytzdGF0aWMgdm9pZAorK3Nob3dfc3RhcGV4cHJlc3Npb25kZWJ1ZyAoc3Ry dWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKKysJCQkgIHN0cnVjdCBjbWRfbGlzdF9l bGVtZW50ICpjLCBjb25zdCBjaGFyICp2YWx1ZSkKKyt7CisrICBmcHJpbnRmX2ZpbHRlcmVkIChm aWxlLCBfKCJTeXN0ZW1UYXAgUHJvYmUgZXhwcmVzc2lvbiBkZWJ1Z2dpbmcgaXMgJXMuXG4iKSwK KysJCSAgICB2YWx1ZSk7CiArfQogKwotKy8qIFJldHVybnMgdGhlIG9wZXJhdG9yIHByZWNlZGVu Y2UgbGV2ZWwgb2YgT1AsIG9yIHplcm8gaWYgdGhlIG9wZXJhdG9yCi0rICAgY29kZSB3YXMgbm90 IHJlY29nbml6ZWQuCi0rICAgVGhlIGxldmVscyB3ZXJlIHRha2VuIGZyb20gdGhlIGdhcyBtYW51 YWwuICAqLworKy8qIFJldHVybnMgdGhlIG9wZXJhdG9yIHByZWNlZGVuY2UgbGV2ZWwgb2YgT1As IG9yIFNUQVBfT1BFUkFORF9QUkVDX05PTkUKKysgICBpZiB0aGUgb3BlcmF0b3IgY29kZSB3YXMg bm90IHJlY29nbml6ZWQuICAqLwogKwotK3N0YXRpYyBpbnQKKytzdGF0aWMgZW51bSBzdGFwX29w ZXJhbmRfcHJlYwogK3N0YXBfZ2V0X29wZXJhdG9yX3ByZWMgKGVudW0gZXhwX29wY29kZSBvcCkK ICt7CiArICBzd2l0Y2ggKG9wKQogKyAgICB7CiArICAgIGNhc2UgQklOT1BfTE9HSUNBTF9PUjoK LSsgICAgICByZXR1cm4gMTsKKysgICAgICByZXR1cm4gU1RBUF9PUEVSQU5EX1BSRUNfTE9HSUNB TF9PUjsKICsKICsgICAgY2FzZSBCSU5PUF9MT0dJQ0FMX0FORDoKLSsgICAgICByZXR1cm4gMjsK KysgICAgICByZXR1cm4gU1RBUF9PUEVSQU5EX1BSRUNfTE9HSUNBTF9BTkQ7CiArCi0rICAgIGNh c2UgQklOT1BfQUREOiBjYXNlIEJJTk9QX1NVQjoKLSsgICAgY2FzZSBCSU5PUF9FUVVBTDogY2Fz ZSBCSU5PUF9OT1RFUVVBTDoKLSsgICAgY2FzZSBCSU5PUF9MRVNTOiBjYXNlIEJJTk9QX0xFUToK LSsgICAgY2FzZSBCSU5PUF9HVFI6IGNhc2UgQklOT1BfR0VROgotKyAgICAgIHJldHVybiAzOwor KyAgICBjYXNlIEJJTk9QX0FERDoKKysgICAgY2FzZSBCSU5PUF9TVUI6CisrICAgIGNhc2UgQklO T1BfRVFVQUw6CisrICAgIGNhc2UgQklOT1BfTk9URVFVQUw6CisrICAgIGNhc2UgQklOT1BfTEVT UzoKKysgICAgY2FzZSBCSU5PUF9MRVE6CisrICAgIGNhc2UgQklOT1BfR1RSOgorKyAgICBjYXNl IEJJTk9QX0dFUToKKysgICAgICByZXR1cm4gU1RBUF9PUEVSQU5EX1BSRUNfQUREX0NNUDsKICsK LSsgICAgY2FzZSBCSU5PUF9CSVRXSVNFX0lPUjogY2FzZSBCSU5PUF9CSVRXSVNFX0FORDoKLSsg ICAgY2FzZSBCSU5PUF9CSVRXSVNFX1hPUjogY2FzZSBVTk9QX0xPR0lDQUxfTk9UOgotKyAgICAg IHJldHVybiA0OworKyAgICBjYXNlIEJJTk9QX0JJVFdJU0VfSU9SOgorKyAgICBjYXNlIEJJTk9Q X0JJVFdJU0VfQU5EOgorKyAgICBjYXNlIEJJTk9QX0JJVFdJU0VfWE9SOgorKyAgICBjYXNlIFVO T1BfTE9HSUNBTF9OT1Q6CisrICAgICAgcmV0dXJuIFNUQVBfT1BFUkFORF9QUkVDX0JJVFdJU0U7 CiArCi0rICAgIGNhc2UgQklOT1BfTVVMOiBjYXNlIEJJTk9QX0RJVjogY2FzZSBCSU5PUF9SRU06 Ci0rICAgIGNhc2UgQklOT1BfTFNIOiBjYXNlIEJJTk9QX1JTSDoKLSsgICAgICByZXR1cm4gNTsK KysgICAgY2FzZSBCSU5PUF9NVUw6CisrICAgIGNhc2UgQklOT1BfRElWOgorKyAgICBjYXNlIEJJ Tk9QX1JFTToKKysgICAgY2FzZSBCSU5PUF9MU0g6CisrICAgIGNhc2UgQklOT1BfUlNIOgorKyAg ICAgIHJldHVybiBTVEFQX09QRVJBTkRfUFJFQ19NVUw7CiArCiArICAgIGRlZmF1bHQ6Ci0rICAg ICAgcmV0dXJuIDA7CisrICAgICAgcmV0dXJuIFNUQVBfT1BFUkFORF9QUkVDX05PTkU7CiArICAg IH0KICt9CiArCi0rLyogR2l2ZW4gUywgdGhpcyBmdW5jdGlvbiByZWFkcyB0aGUgb3BlcmF0b3Ig aW4gaXQgYW5kIGZpbGxzIHRoZSBPUAotKyAgIHBvaW50ZXIgd2l0aCBpdHMgY29kZS4gIFJldHVy bnMgMSBvbiBzdWNjZXNzLCB6ZXJvIGlmIHRoZSBvcGVyYXRvcgotKyAgIHdhcyBub3QgcmVjb2du aXplZC4gICovCisrLyogR2l2ZW4gUywgcmVhZCB0aGUgb3BlcmF0b3IgaW4gaXQgYW5kIGZpbGxz IHRoZSBPUCBwb2ludGVyIHdpdGggaXRzIGNvZGUuCisrICAgUmV0dXJuIDEgb24gc3VjY2Vzcywg emVybyBpZiB0aGUgb3BlcmF0b3Igd2FzIG5vdCByZWNvZ25pemVkLiAgKi8KICsKICtzdGF0aWMg aW50Ci0rc3RhcF9nZXRfb3Bjb2RlIChjaGFyICoqcywgZW51bSBleHBfb3Bjb2RlICpvcCkKKytz dGFwX2dldF9vcGNvZGUgKGNvbnN0IGNoYXIgKipzLCBlbnVtIGV4cF9vcGNvZGUgKm9wKQogK3sK LSsgIGNoYXIgYyA9ICoqczsKKysgIGNvbnN0IGNoYXIgYyA9ICoqczsKICsgIGludCByZXQgPSAx OwogKwogKyAgKnMgKz0gMTsKQEAgLTgwODQsMTYgKzg5MzQsNyBAQCBJbmRleDogZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvc3RhcC1wcm9iZS5jCiArICAgICAgYnJlYWs7CiArCiArICAgIGNhc2Ug JyUnOgotKyAgICAgIHsKLSsJaWYgKGlzYWxwaGEgKCoqcykpCi0rCSAgewotKwkgICAgLyogRGVh bGluZyB3aXRoIGEgcmVnaXN0ZXIgbmFtZS4gICovCi0rCSAgICByZXQgPSAwOwotKwkgICAgYnJl YWs7Ci0rCSAgfQotKwotKwkqb3AgPSBCSU5PUF9SRU07Ci0rICAgICAgfQorKyAgICAgICpvcCA9 IEJJTk9QX1JFTTsKICsgICAgYnJlYWs7CiArCiArICAgIGNhc2UgJzwnOgpAQCAtODE4MSw2NDkg KzkwMjIsNDQ3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zdGFwLXByb2JlLmMK ICsgIHJldHVybiByZXQ7CiArfQogKwotKy8qIEdpdmVuIHRoZSBvcGVyYXRvciBPUENPREUsIHRo aXMgZnVuY3Rpb24gZ2VuZXJhdGVzIGFnZW50IGJ5dGVjb2RlCi0rICAgZm9yIGl0LiAgKi8KKysv KiBHaXZlbiB0aGUgYml0bmVzcyBvZiB0aGUgYXJndW1lbnQsIHJlcHJlc2VudGVkIGJ5IEIsIHJl dHVybiB0aGUKKysgICBjb3JyZXNwb25kaW5nIGBzdHJ1Y3QgdHlwZSAqJy4gICovCiArCi0rc3Rh dGljIHZvaWQKLStzdGFwX29wY29kZV90b19heCAoc3RydWN0IHN0YXBfZXZhbHVhdGlvbl9pbmZv ICpldmFsX2luZm8sCi0rCQkgICBlbnVtIGV4cF9vcGNvZGUgb3Bjb2RlKQorK3N0YXRpYyBzdHJ1 Y3QgdHlwZSAqCisrc3RhcF9nZXRfZXhwZWN0ZWRfYXJndW1lbnRfdHlwZSAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gsCisrCQkJCSBlbnVtIHN0YXBfYXJnX2JpdG5lc3MgYikKICt7Ci0rICBzdHJ1 Y3QgYWdlbnRfZXhwciAqZXhwciA9IGV2YWxfaW5mby0+YWV4cHI7Ci0rCi0rICBzd2l0Y2ggKG9w Y29kZSkKKysgIHN3aXRjaCAoYikKICsgICAgewotKyAgICBjYXNlIEJJTk9QX01VTDoKLSsgICAg ICBheF9zaW1wbGUgKGV4cHIsIGFvcF9tdWwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNl IEJJTk9QX0RJVjoKLSsgICAgICBheF9zaW1wbGUgKGV4cHIsIGFvcF9kaXZfc2lnbmVkKTsKLSsg ICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBCSU5PUF9SRU06Ci0rICAgICAgYXhfc2ltcGxlIChl eHByLCBhb3BfcmVtX3Vuc2lnbmVkKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBCSU5P UF9MRVNTOgotKyAgICAgIGF4X3NpbXBsZSAoZXhwciwgYW9wX2xlc3Nfc2lnbmVkKTsKLSsgICAg ICBicmVhazsKLSsKLSsgICAgY2FzZSBCSU5PUF9MRVE6Ci0rICAgICAgLyogQSA8PSBCIGlzICEo QiA8IEEpICovCi0rICAgICAgYXhfc2ltcGxlIChleHByLCBhb3Bfc3dhcCk7Ci0rICAgICAgYXhf c2ltcGxlIChleHByLCBhb3BfbGVzc19zaWduZWQpOwotKyAgICAgIGF4X3NpbXBsZSAoZXhwciwg YW9wX2xvZ19ub3QpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIEJJTk9QX0dUUjoKLSsg ICAgICAvKiBBID4gQiBpcyBCIDwgQSAqLwotKyAgICAgIGF4X3NpbXBsZSAoZXhwciwgYW9wX3N3 YXApOwotKyAgICAgIGF4X3NpbXBsZSAoZXhwciwgYW9wX2xlc3Nfc2lnbmVkKTsKLSsgICAgICBi cmVhazsKLSsKLSsgICAgY2FzZSBCSU5PUF9HRVE6Ci0rICAgICAgLyogQSA+PSBCIGlzICEoQSA8 IEIpICovCi0rICAgICAgYXhfc2ltcGxlIChleHByLCBhb3BfbGVzc19zaWduZWQpOwotKyAgICAg IGF4X3NpbXBsZSAoZXhwciwgYW9wX2xvZ19ub3QpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBj YXNlIEJJTk9QX05PVEVRVUFMOgotKyAgICAgIGF4X3NpbXBsZSAoZXhwciwgYW9wX2VxdWFsKTsK LSsgICAgICBheF9zaW1wbGUgKGV4cHIsIGFvcF9sb2dfbm90KTsKLSsgICAgICBicmVhazsKLSsK LSsgICAgY2FzZSBCSU5PUF9MU0g6Ci0rICAgICAgYXhfc2ltcGxlIChleHByLCBhb3BfbHNoKTsK LSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBCSU5PUF9SU0g6Ci0rICAgICAgYXhfc2ltcGxl IChleHByLCBhb3BfcnNoX3Vuc2lnbmVkKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBC SU5PUF9CSVRXSVNFX0lPUjoKLSsgICAgICBheF9zaW1wbGUgKGV4cHIsIGFvcF9iaXRfb3IpOwot KyAgICAgIGJyZWFrOwotKyAgICAgCi0rICAgIGNhc2UgQklOT1BfTE9HSUNBTF9PUjoKLSsgICAg ICBlcnJvciAoXygiT3BlcmF0b3IgbG9naWNhbC1vciAoYHx8Jykgbm90IHN1cHBvcnRlZCB5ZXQu IikpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIEJJTk9QX0JJVFdJU0VfQU5EOgotKyAg ICAgIGF4X3NpbXBsZSAoZXhwciwgYW9wX2JpdF9hbmQpOwotKyAgICAgIGJyZWFrOwotKwotKyAg ICBjYXNlIEJJTk9QX0xPR0lDQUxfQU5EOgotKyAgICAgIGVycm9yIChfKCJPcGVyYXRvciBsb2dp Y2FsLWFuZCAoYCYmJykgbm90IHN1cHBvcnRlZCB5ZXQuIikpOwotKyAgICAgIGJyZWFrOwotKwot KyAgICBjYXNlIEJJTk9QX0JJVFdJU0VfWE9SOgotKyAgICAgIGF4X3NpbXBsZSAoZXhwciwgYW9w X2JpdF94b3IpOwotKyAgICAgIGJyZWFrOworKyAgICBjYXNlIFNUQVBfQVJHX0JJVE5FU1NfVU5E RUZJTkVEOgorKyAgICAgIGlmIChnZGJhcmNoX2FkZHJfYml0IChnZGJhcmNoKSA9PSAzMikKKysJ cmV0dXJuIGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fdWludDMyOworKyAgICAgIGVs c2UKKysJcmV0dXJuIGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fdWludDY0OwogKwot KyAgICBjYXNlIFVOT1BfTE9HSUNBTF9OT1Q6Ci0rICAgICAgYXhfc2ltcGxlIChleHByLCBhb3Bf bG9nX25vdCk7Ci0rICAgICAgYnJlYWs7CisrICAgIGNhc2UgU1RBUF9BUkdfQklUTkVTU18zMkJJ VF9TSUdORUQ6CisrICAgICAgcmV0dXJuIGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5f aW50MzI7CiArCi0rICAgIGNhc2UgQklOT1BfQUREOgotKyAgICAgIGF4X3NpbXBsZSAoZXhwciwg YW9wX2FkZCk7Ci0rICAgICAgYnJlYWs7CisrICAgIGNhc2UgU1RBUF9BUkdfQklUTkVTU18zMkJJ VF9VTlNJR05FRDoKKysgICAgICByZXR1cm4gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRp bl91aW50MzI7CiArCi0rICAgIGNhc2UgQklOT1BfU1VCOgotKyAgICAgIGF4X3NpbXBsZSAoZXhw ciwgYW9wX3N1Yik7Ci0rICAgICAgYnJlYWs7CisrICAgIGNhc2UgU1RBUF9BUkdfQklUTkVTU182 NEJJVF9TSUdORUQ6CisrICAgICAgcmV0dXJuIGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0 aW5faW50NjQ7CiArCi0rICAgIGNhc2UgQklOT1BfRVFVQUw6Ci0rICAgICAgYXhfc2ltcGxlIChl eHByLCBhb3BfZXF1YWwpOwotKyAgICAgIGJyZWFrOworKyAgICBjYXNlIFNUQVBfQVJHX0JJVE5F U1NfNjRCSVRfVU5TSUdORUQ6CisrICAgICAgcmV0dXJuIGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCkt PmJ1aWx0aW5fdWludDY0OwogKwogKyAgICBkZWZhdWx0OgotKyAgICAgIGVycm9yIChfKCJJbnZh bGlkIG9wZXJhdG9yLiIpKTsKKysgICAgICBpbnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElO RV9fLAorKwkJICAgICAgXygiVW5kZWZpbmVkIGJpdG5lc3MgZm9yIHByb2JlLiIpKTsKKysgICAg ICBicmVhazsKICsgICAgfQogK30KICsKLSsvKiBSZXR1cm5zIDEgaWYgKlMgaXMgYW4gb3BlcmF0 b3IsIHplcm8gb3RoZXJ3aXNlLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0rc3RhcF9pc19vcGVyYXRv ciAoY2hhciAqcykKLSt7Ci0rICBjaGFyIG9wOwotKwotKyAgaWYgKCFzIHx8ICEqcykKLSsgICAg cmV0dXJuIDA7Ci0rCi0rICBvcCA9ICpzOwotKwotKyAgaWYgKCpzID09ICclJyAmJiBpc2FscGhh IChzWzFdKSkKLSsgICAgLyogUmVnaXN0ZXIgbmFtZS4gICovCi0rICAgIHJldHVybiAwOwotKwot KyAgcmV0dXJuIChvcCA9PSAnKycgfHwgb3AgPT0gJy0nIHx8IG9wID09ICcqJyB8fCBvcCA9PSAn LycKLSsJICB8fCBvcCA9PSAnPicgfHwgb3AgPT0gJzwnIHx8IG9wID09ICchJyB8fCBvcCA9PSAn XicKLSsJICB8fCBvcCA9PSAnfCcgfHwgb3AgPT0gJyYnIHx8IG9wID09ICclJyB8fCBvcCA9PSAn PScpOwotK30KLSsKLSsvKiBUaGlzIGZ1bmN0aW9uIGZldGNoZXMgdGhlIHZhbHVlIG9mIHRoZSBy ZWdpc3RlciB3aG9zZQotKyAgIG5hbWUgc3RhcnRzIGluIHRoZSBleHByZXNzaW9uIGJ1ZmZlci4g IEl0IGFsc28gYXBwbGllcyBhbnkgcmVnaXN0ZXIKLSsgICBkaXNwbGFjZW1lbnRzIChlLmcuLCBg LTQoJWVheCknKSwgYW5kIGluZGlyZWN0cyB0aGUgY29udGVudHMgb2YgdGhlCi0rICAgcmVnaXN0 ZXIgKGUuZy4sIGAoJWVheCknKS4gIEl0IHJldHVybnMgUkVUIGlmIHRoZSBvcGVyYXRpb24gaGFz IHN1Y2NlZWRlZCwKLSsgICBvciBjYWxscyBgZXJyb3InIG90aGVyd2lzZS4gICovCi0rCi0rc3Rh dGljIHN0cnVjdCB2YWx1ZSAqCi0rc3RhcF9mZXRjaF9yZWdfdmFsdWUgKHN0cnVjdCBzdGFwX2V2 YWx1YXRpb25faW5mbyAqZXZhbF9pbmZvLAotKwkJICAgICAgc3RydWN0IHZhbHVlICpkaXNwbGFj ZW1lbnQpCi0reworK3N0YXRpYyB2b2lkCisrc3RhcF9wYXJzZV9yZWdpc3Rlcl9vcGVyYW5kIChz dHJ1Y3Qgc3RhcF9wYXJzZV9pbmZvICpwKQorK3sKKysgIC8qIFNpbXBsZSBmbGFnIHRvIGluZGlj YXRlIHdoZXRoZXIgd2UgaGF2ZSBzZWVuIGEgbWludXMgc2lnbmFsIGJlZm9yZQorKyAgICAgY2Vy dGFpbiBudW1iZXIuICAqLworKyAgaW50IGdvdF9taW51cyA9IDA7CisrICAvKiBGbGFncyB0byBp bmRpY2F0ZSB3aGV0aGVyIHRoaXMgcmVnaXN0ZXIgYWNjZXNzIGlzIGJlaW5nIGRpc3BsYWNlZCBh bmQvb3IKKysgICAgIGluZGlyZWN0ZWQuICAqLworKyAgaW50IGRpc3BfcCA9IDAsIGluZGlyZWN0 X3AgPSAwOworKyAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBwLT5nZGJhcmNoOworKyAgLyog TmVlZGVkIHRvIGdlbmVyYXRlIHRoZSByZWdpc3RlciBuYW1lIGFzIGEgcGFydCBvZiBhbiBleHBy ZXNzaW9uLiAgKi8KKysgIHN0cnVjdCBzdG9rZW4gc3RyOworKyAgLyogVmFyaWFibGVzIHVzZWQg dG8gZXh0cmFjdCB0aGUgcmVnaXN0ZXIgbmFtZSBmcm9tIHRoZSBwcm9iZSdzCisrICAgICBhcmd1 bWVudC4gICovCiArICBjb25zdCBjaGFyICpzdGFydDsKLSsgIGNoYXIgKnMgPSBldmFsX2luZm8t PmV4cF9idWY7Ci0rICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGV2YWxfaW5mby0+Z2RiYXJj aDsKLSsgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSA9IGV2YWxfaW5mby0+ZnJhbWU7Ci0rICBl bnVtIHN0YXBfYXJnX2JpdG5lc3MgYml0bmVzcyA9IGV2YWxfaW5mby0+Yml0bmVzczsKICsgIGNo YXIgKnJlZ25hbWU7Ci0rICBpbnQgbGVuLCByZWdudW0sIGluZGlyZWN0X3AgPSAwOwotKyAgc3Ry dWN0IHZhbHVlICpyZXQgPSBOVUxMOwotKyAgCi0rICAvKiBUaGUgZnVuY3Rpb24gd2hpY2ggY2Fs bGVkIHVzIGRpZCBub3QgY2hlY2sgaWYgdGhlIGV4cHJlc3Npb24KLSsgICAgIGJ1ZmZlciB3YXMg ZW1wdHkuICAqLwotKyAgZ2RiX2Fzc2VydCAocyAmJiAqcyk7Ci0rCi0rICBpZiAoU1RBUF9DT01Q SUxJTkdfQUdFTlRfRVhQUl9QIChldmFsX2luZm8pKQotKyAgICAvKiBJZiB3ZSBhcmUgY29tcGls aW5nLCB3ZSBjYW5ub3QgcmV0dXJuIE5VTEwgYmVjYXVzZSB0aGF0IHdvdWxkCi0rICAgICAgIGxl YWQgdG8gZXJyb3JzIGluIGZ1dHVyZSBldmFsdWF0aW9ucy4gIFRoYXQncyB3aHkgd2UganVzdCBt YWtlCi0rICAgICAgIHRoaXMgZHVtbXkgdmFsdWUsIHJlcHJlc2VudGluZyB0aGF0IHRoZSByZXR1 cm4gdmFsdWUgb2YgdGhpcwotKyAgICAgICBmdW5jdGlvbiBpcyBub3QgTlVMTC4gICovCi0rICAg IHJldCA9IHZhbHVlX2Zyb21fbG9uZ2VzdCAoYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRp bl9pbnQsIDApOwotKwotKyAgLyogVmFsaWQgcmVnaXN0ZXIgbmFtZSBvbiB4ODYgcGxhdGZvcm1z IGFyZToKLSsKLSsgICAgIFtwYXJlbl0le2EtejAtOX1bcGFyZW5dCi0rCi0rICAgICBMZXQncyBj aGVjayBmb3IgdGhhdCBoZXJlLiAgKi8KLSsgIGlmICgqcyA9PSAnKCcpCisrICBpbnQgbGVuOwor KworKyAgLyogUHJlZml4ZXMgZm9yIHRoZSBwYXJzZXIuICAqLworKyAgY29uc3QgY2hhciAqcmVn X3ByZWZpeCA9IGdkYmFyY2hfc3RhcF9yZWdpc3Rlcl9wcmVmaXggKGdkYmFyY2gpOworKyAgY29u c3QgY2hhciAqcmVnX2luZF9wcmVmaXgKKysgICAgPSBnZGJhcmNoX3N0YXBfcmVnaXN0ZXJfaW5k aXJlY3Rpb25fcHJlZml4IChnZGJhcmNoKTsKKysgIGNvbnN0IGNoYXIgKmdkYl9yZWdfcHJlZml4 ID0gZ2RiYXJjaF9zdGFwX2dkYl9yZWdpc3Rlcl9wcmVmaXggKGdkYmFyY2gpOworKyAgaW50IHJl Z19wcmVmaXhfbGVuID0gcmVnX3ByZWZpeCA/IHN0cmxlbiAocmVnX3ByZWZpeCkgOiAwOworKyAg aW50IHJlZ19pbmRfcHJlZml4X2xlbiA9IHJlZ19pbmRfcHJlZml4ID8gc3RybGVuIChyZWdfaW5k X3ByZWZpeCkgOiAwOworKyAgaW50IGdkYl9yZWdfcHJlZml4X2xlbiA9IGdkYl9yZWdfcHJlZml4 ID8gc3RybGVuIChnZGJfcmVnX3ByZWZpeCkgOiAwOworKworKyAgLyogU3VmaXhlcyBmb3IgdGhl IHBhcnNlci4gICovCisrICBjb25zdCBjaGFyICpyZWdfc3VmaXggPSBnZGJhcmNoX3N0YXBfcmVn aXN0ZXJfc3VmaXggKGdkYmFyY2gpOworKyAgY29uc3QgY2hhciAqcmVnX2luZF9zdWZpeAorKyAg ICA9IGdkYmFyY2hfc3RhcF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9zdWZpeCAoZ2RiYXJjaCk7Cisr ICBjb25zdCBjaGFyICpnZGJfcmVnX3N1Zml4ID0gZ2RiYXJjaF9zdGFwX2dkYl9yZWdpc3Rlcl9z dWZpeCAoZ2RiYXJjaCk7CisrICBpbnQgcmVnX3N1Zml4X2xlbiA9IHJlZ19zdWZpeCA/IHN0cmxl biAocmVnX3N1Zml4KSA6IDA7CisrICBpbnQgcmVnX2luZF9zdWZpeF9sZW4gPSByZWdfaW5kX3N1 Zml4ID8gc3RybGVuIChyZWdfaW5kX3N1Zml4KSA6IDA7CisrICBpbnQgZ2RiX3JlZ19zdWZpeF9s ZW4gPSBnZGJfcmVnX3N1Zml4ID8gc3RybGVuIChnZGJfcmVnX3N1Zml4KSA6IDA7CisrCisrICAv KiBDaGVja2luZyBmb3IgYSBkaXNwbGFjZW1lbnQgYXJndW1lbnQuICAqLworKyAgaWYgKCpwLT5h cmcgPT0gJysnKQorKyAgICAvKiBJZiBpdCdzIGEgcGx1cyBzaWduLCB3ZSBkb24ndCBuZWVkIHRv IGRvIGFueXRoaW5nLCBqdXN0IGFkdmFuY2UgdGhlCisrICAgICAgIHBvaW50ZXIuICAqLworKyAg ICArK3AtPmFyZzsKKysKKysgIGlmICgqcC0+YXJnID09ICctJykKICsgICAgewotKyAgICAgICsr czsKLSsgICAgICBpZiAoISpzIHx8ICpzICE9ICclJwotKwkgIHx8ICgqcyA9PSAnJScgJiYgIWlz YWxwaGEgKHNbMV0pKSkKLSsJZXJyb3IgKF8oIkludmFsaWQgcmVnaXN0ZXIgbmFtZSBvbiBleHBy ZXNzaW9uIGAlcycuIiksCi0rCSAgICAgICBldmFsX2luZm8tPnNhdmVkX2V4cHIpOwotKyAgICAg ICsrczsKLSsgICAgICAvKiBUaGUgcHJlc2VuY2Ugb2YgcGFyZW50aGVzaXMgbWVhbnMgdGhhdCB3 ZSB3YW50IHRvIGluZGlyZWN0Ci0rCSB0aGUgcmVnaXN0ZXIuICAqLwotKyAgICAgIGluZGlyZWN0 X3AgPSAxOworKyAgICAgIGdvdF9taW51cyA9IDE7CisrICAgICAgKytwLT5hcmc7CiArICAgIH0K LSsgIGVsc2UgaWYgKCpzID09ICclJykKKysKKysgIGlmIChpc2RpZ2l0ICgqcC0+YXJnKSkKICsg ICAgewotKyAgICAgICsrczsKLSsgICAgICBpZiAoISpzIHx8ICFpc2FscGhhICgqcykpCi0rCWVy cm9yIChfKCJJbnZhbGlkIHJlZ2lzdGVyIG5hbWUgb24gZXhwcmVzc2lvbiBgJXMnLiIpLAotKwkg ICAgICAgZXZhbF9pbmZvLT5zYXZlZF9leHByKTsKKysgICAgICAvKiBUaGUgdmFsdWUgb2YgdGhl IGRpc3BsYWNlbWVudC4gICovCisrICAgICAgbG9uZyBkaXNwbGFjZW1lbnQ7CisrCisrICAgICAg ZGlzcF9wID0gMTsKKysgICAgICBkaXNwbGFjZW1lbnQgPSBzdHJ0b2wgKHAtPmFyZywgKGNoYXIg KiopICZwLT5hcmcsIDEwKTsKKysKKysgICAgICAvKiBHZW5lcmF0aW5nIHRoZSBleHByZXNzaW9u IGZvciB0aGUgZGlzcGxhY2VtZW50LiAgKi8KKysgICAgICB3cml0ZV9leHBfZWx0X29wY29kZSAo T1BfTE9ORyk7CisrICAgICAgd3JpdGVfZXhwX2VsdF90eXBlIChidWlsdGluX3R5cGUgKGdkYmFy Y2gpLT5idWlsdGluX2xvbmcpOworKyAgICAgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAoZGlzcGxh Y2VtZW50KTsKKysgICAgICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfTE9ORyk7CisrICAgICAg aWYgKGdvdF9taW51cykKKysJd3JpdGVfZXhwX2VsdF9vcGNvZGUgKFVOT1BfTkVHKTsKICsgICAg fQotKyAgZWxzZQotKyAgICBlcnJvciAoXygiSW52YWxpZCByZWdpc3RlciBuYW1lIG9uIGV4cHJl c3Npb24gYCVzJy4iKSwKLSsJICAgZXZhbF9pbmZvLT5zYXZlZF9leHByKTsKLSsKLSsgIGlmIChk aXNwbGFjZW1lbnQgJiYgIWluZGlyZWN0X3ApCi0rICAgIC8qIFdlIGNhbm5vdCBhcHBseSBkaXNw bGFjZW1lbnQgdG8gbm9uLWluZGlyZWN0IHJlZ2lzdGVyIGFjY2Vzcy4gICovCi0rICAgIGVycm9y IChfKCJUcnlpbmcgdG8gYXBwbHkgZGlzcGxhY2VtZW50IHdpdGhvdXQgaW5kaXJlY3RpbmcgcmVn aXN0ZXIgIgotKwkgICAgICJvbiBleHByZXNzaW9uIGAlcycuIiksIGV2YWxfaW5mby0+c2F2ZWRf ZXhwcik7Ci0rCi0rICAvKiBPaywgbGV0J3MgY2FsY3VsYXRlIHRoZSBzaXplIG9mIHRoZSByZWdp c3RlciBuYW1lLiAgKi8KLSsgIHN0YXJ0ID0gczsKLSsgIHdoaWxlIChpc2FsbnVtICgqcykpCi0r ICAgICsrczsKICsKLSsgIGxlbiA9IHMgLSBzdGFydDsKLSsKLSsgIGlmIChpbmRpcmVjdF9wICYm ICpzID09ICcpJykKLSsgICAgKytzOwotKwotKyAgcmVnbmFtZSA9IGFsbG9jYSAobGVuICsgMSk7 Ci0rICBzdHJuY3B5IChyZWduYW1lLCBzdGFydCwgbGVuKTsKLSsgIHJlZ25hbWVbbGVuXSA9ICdc MCc7Ci0rCi0rICAvKiBUcmFuc2xhdGluZyB0aGUgcmVnaXN0ZXIgbmFtZSBpbnRvIHRoZSBjb3Jy ZXNwb25kaW5nIG51bWJlci4gICovCi0rICByZWdudW0gPSB1c2VyX3JlZ19tYXBfbmFtZV90b19y ZWdudW0gKGdkYmFyY2gsIHJlZ25hbWUsIGxlbik7Ci0rCi0rICBpZiAocmVnbnVtID09IC0xKQot KyAgICBlcnJvciAoXygiSW52YWxpZCByZWdpc3RlciBuYW1lIGAlcycgb24gZXhwcmVzc2lvbiBg JXMnLiIpLAotKwkgICByZWduYW1lLCBldmFsX2luZm8tPnNhdmVkX2V4cHIpOwotKwotKyAgaWYg KFNUQVBfQ09NUElMSU5HX0FHRU5UX0VYUFJfUCAoZXZhbF9pbmZvKSkKLSsgICAgYXhfcmVnIChl dmFsX2luZm8tPmFleHByLCByZWdudW0pOwotKyAgZWxzZQotKyAgICByZXQgPSB2YWx1ZV9vZl9y ZWdpc3RlciAocmVnbnVtLCBmcmFtZSk7Ci0rCi0rICBpZiAoaW5kaXJlY3RfcCkKKysgIC8qIEdl dHRpbmcgcmlkIG9mIHJlZ2lzdGVyIGluZGlyZWN0aW9uIHByZWZpeC4gICovCisrICBpZiAocmVn X2luZF9wcmVmaXgKKysgICAgICAmJiBzdHJuY21wIChwLT5hcmcsIHJlZ19pbmRfcHJlZml4LCBy ZWdfaW5kX3ByZWZpeF9sZW4pID09IDApCiArICAgIHsKLSsgICAgICBzdHJ1Y3QgdHlwZSAqdCA9 IE5VTEw7Ci0rICAgICAgZW51bSBhZ2VudF9vcCBhb3AgPSBhb3BfcmVmMzI7CisrICAgICAgaW5k aXJlY3RfcCA9IDE7CisrICAgICAgcC0+YXJnICs9IHJlZ19pbmRfcHJlZml4X2xlbjsKKysgICAg fQogKwotKyAgICAgIC8qIElmIHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQgdGhhdCB0aGUgcmVnaXN0 ZXIgbXVzdCBiZSBpbmRpcmVjdGVkLAotKwkgd2Ugc2hvdWxkIGtub3cgd2hhdCdzIHRoZSBjb3Jy ZWN0IHR5cGUgdG8gY2FzdCBpdCBiZWZvcmUgbWFraW5nCi0rCSB0aGUgaW5kaXJlY3Rpb24uICBU aGlzIHR5cGUgY29ycmVzcG9uZHMgdG8gdGhlIGJpdG5lc3Mgc3BlY2lmaWVkCi0rCSBiZWZvcmUg dGhlIGBAJyBzaWduIG9uIHRoZSBhcmd1bWVudCBzdHJpbmcsIG9yIGl0IGRlZmF1bHRzIHRvCi0r CSBgdW5zaWduZWQgbG9uZycgaWYgdGhlIGBAJyB3ZXJlIG5vdCBwcmVzZW50LiAgKi8KKysgIGlm IChkaXNwX3AgJiYgIWluZGlyZWN0X3ApCisrICAgIGVycm9yIChfKCJJbnZhbGlkIHJlZ2lzdGVy IGRpc3BsYWNlbWVudCBzeW50YXggb24gZXhwcmVzc2lvbiBgJXMnLiIpLAorKwkgICBwLT5zYXZl ZF9hcmcpOwogKwotKyAgICAgIHN3aXRjaCAoYml0bmVzcykKLSsJewotKwljYXNlIFNUQVBfQVJH X0JJVE5FU1NfVU5ERUZJTkVEOgotKwkgIGlmIChTVEFQX0NPTVBJTElOR19BR0VOVF9FWFBSX1Ag KGV2YWxfaW5mbykpCi0rCSAgICB7Ci0rCSAgICAgIGlmIChnZGJhcmNoX2FkZHJfYml0IChnZGJh cmNoKSA9PSAzMikKLSsJCWFvcCA9IGFvcF9yZWYzMjsKLSsJICAgICAgZWxzZQotKwkJYW9wID0g YW9wX3JlZjY0OwotKwkgICAgfQotKwkgIGVsc2UKLSsJICAgIHsKLSsJICAgICAgaWYgKGdkYmFy Y2hfYWRkcl9iaXQgKGdkYmFyY2gpID09IDMyKQotKwkJdCA9IGxvb2t1cF9wb2ludGVyX3R5cGUK LSsJCSAgKGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fdWludDMyKTsKLSsJICAgICAg ZWxzZQotKwkJdCA9IGxvb2t1cF9wb2ludGVyX3R5cGUKLSsJCSAgKGJ1aWx0aW5fdHlwZSAoZ2Ri YXJjaCktPmJ1aWx0aW5fdWludDY0KTsKLSsJICAgIH0KLSsJICBicmVhazsKKysgIC8qIEdldHRp bmcgcmlkIG9mIHJlZ2lzdGVyIHByZWZpeC4gICovCisrICBpZiAocmVnX3ByZWZpeCAmJiBzdHJu Y21wIChwLT5hcmcsIHJlZ19wcmVmaXgsIHJlZ19wcmVmaXhfbGVuKSA9PSAwKQorKyAgICBwLT5h cmcgKz0gcmVnX3ByZWZpeF9sZW47CiArCi0rCWNhc2UgU1RBUF9BUkdfQklUTkVTU18zMkJJVF9T SUdORUQ6Ci0rCSAgaWYgKFNUQVBfQ09NUElMSU5HX0FHRU5UX0VYUFJfUCAoZXZhbF9pbmZvKSkK LSsJICAgIGFvcCA9IGFvcF9yZWYzMjsKLSsJICBlbHNlCi0rCSAgICB0ID0gbG9va3VwX3BvaW50 ZXJfdHlwZQotKwkgICAgICAoYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9pbnQzMik7 Ci0rCSAgYnJlYWs7CisrICAvKiBOb3cgd2Ugc2hvdWxkIGhhdmUgb25seSB0aGUgcmVnaXN0ZXIg bmFtZS4gIExldCdzIGV4dHJhY3QgaXQgYW5kIGdldAorKyAgICAgdGhlIGFzc29jaWF0ZWQgbnVt YmVyLiAgKi8KKysgIHN0YXJ0ID0gcC0+YXJnOwogKwotKwljYXNlIFNUQVBfQVJHX0JJVE5FU1Nf MzJCSVRfVU5TSUdORUQ6Ci0rCSAgaWYgKFNUQVBfQ09NUElMSU5HX0FHRU5UX0VYUFJfUCAoZXZh bF9pbmZvKSkKLSsJICAgIGFvcCA9IGFvcF9yZWYzMjsKLSsJICBlbHNlCi0rCSAgICB0ID0gbG9v a3VwX3BvaW50ZXJfdHlwZQotKwkgICAgICAoYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRp bl91aW50MzIpOwotKwkgIGJyZWFrOworKyAgLyogV2UgYXNzdW1lIHRoZSByZWdpc3RlciBuYW1l IGlzIGNvbXBvc2VkIGJ5IGxldHRlcnMgYW5kIG51bWJlcnMuICAqLworKyAgd2hpbGUgKGlzYWxu dW0gKCpwLT5hcmcpKQorKyAgICArK3AtPmFyZzsKICsKLSsJY2FzZSBTVEFQX0FSR19CSVRORVNT XzY0QklUX1NJR05FRDoKLSsJICBpZiAoU1RBUF9DT01QSUxJTkdfQUdFTlRfRVhQUl9QIChldmFs X2luZm8pKQotKwkgICAgYW9wID0gYW9wX3JlZjY0OwotKwkgIGVsc2UKLSsJICAgIHQgPSBsb29r dXBfcG9pbnRlcl90eXBlCi0rCSAgICAgIChidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGlu X2ludDY0KTsKLSsJICBicmVhazsKKysgIGxlbiA9IHAtPmFyZyAtIHN0YXJ0OwogKwotKwljYXNl IFNUQVBfQVJHX0JJVE5FU1NfNjRCSVRfVU5TSUdORUQ6Ci0rCSAgaWYgKFNUQVBfQ09NUElMSU5H X0FHRU5UX0VYUFJfUCAoZXZhbF9pbmZvKSkKLSsJICAgIGFvcCA9IGFvcF9yZWY2NDsKLSsJICBl bHNlCi0rCSAgICB0ID0gbG9va3VwX3BvaW50ZXJfdHlwZQotKwkgICAgICAoYnVpbHRpbl90eXBl IChnZGJhcmNoKS0+YnVpbHRpbl91aW50NjQpOwotKwkgIGJyZWFrOworKyAgcmVnbmFtZSA9IGFs bG9jYSAobGVuICsgZ2RiX3JlZ19wcmVmaXhfbGVuICsgZ2RiX3JlZ19zdWZpeF9sZW4gKyAxKTsK KysgIHJlZ25hbWVbMF0gPSAnXDAnOwogKwotKwlkZWZhdWx0OgotKwkgIGludGVybmFsX2Vycm9y IChfX0ZJTEVfXywgX19MSU5FX18sCi0rCQkJICBfKCJVbmRlZmluZWQgYml0bmVzcyBmb3IgcHJv YmUuIikpOwotKwkgIGJyZWFrOwotKwl9CisrICAvKiBXZSBvbmx5IGFkZCB0aGUgR0RCJ3MgcmVn aXN0ZXIgcHJlZml4L3N1Zml4IGlmIHdlIGFyZSBkZWFsaW5nIHdpdGgKKysgICAgIGEgbnVtZXJp YyByZWdpc3Rlci4gICovCisrICBpZiAoZ2RiX3JlZ19wcmVmaXggJiYgaXNkaWdpdCAoKnN0YXJ0 KSkKKysgICAgeworKyAgICAgIHN0cm5jcHkgKHJlZ25hbWUsIGdkYl9yZWdfcHJlZml4LCBnZGJf cmVnX3ByZWZpeF9sZW4pOworKyAgICAgIHN0cm5jcHkgKHJlZ25hbWUgKyBnZGJfcmVnX3ByZWZp eF9sZW4sIHN0YXJ0LCBsZW4pOwogKwotKyAgICAgIGlmIChkaXNwbGFjZW1lbnQpCi0rCXsKLSsJ ICBpZiAoU1RBUF9DT01QSUxJTkdfQUdFTlRfRVhQUl9QIChldmFsX2luZm8pKQotKwkgICAgewot KwkgICAgICBheF9jb25zdF9sIChldmFsX2luZm8tPmFleHByLCB2YWx1ZV9hc19sb25nIChkaXNw bGFjZW1lbnQpKTsKLSsJICAgICAgYXhfc2ltcGxlIChldmFsX2luZm8tPmFleHByLCBhb3BfYWRk KTsKLSsJICAgIH0KLSsJICBlbHNlCi0rCSAgICByZXQgPSB2YWx1ZV9wdHJhZGQgKHJldCwgdmFs dWVfYXNfbG9uZyAoZGlzcGxhY2VtZW50KSk7Ci0rCX0KKysgICAgICBpZiAoZ2RiX3JlZ19zdWZp eCkKKysJc3RybmNweSAocmVnbmFtZSArIGdkYl9yZWdfcHJlZml4X2xlbiArIGxlbiwKKysJCSBn ZGJfcmVnX3N1Zml4LCBnZGJfcmVnX3N1Zml4X2xlbik7CiArCi0rICAgICAgaWYgKFNUQVBfQ09N UElMSU5HX0FHRU5UX0VYUFJfUCAoZXZhbF9pbmZvKSkKLSsJewotKwkgIGlmICh0cmFjZV9rbHVk Z2UpCi0rCSAgICB7Ci0rCSAgICAgIGdkYl9hc3NlcnQgKGFvcCA9PSBhb3BfcmVmMzIgfHwgYW9w ID09IGFvcF9yZWY2NCk7Ci0rCSAgICAgIGF4X3RyYWNlX3F1aWNrIChldmFsX2luZm8tPmFleHBy LCBhb3AgPT0gYW9wX3JlZjMyID8gNCA6IDgpOwotKwkgICAgfQotKwkgIGF4X3NpbXBsZSAoZXZh bF9pbmZvLT5hZXhwciwgYW9wKTsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIHJldCA9IHZh bHVlX2Nhc3QgKHQsIHJldCk7Ci0rCSAgcmV0ID0gdmFsdWVfaW5kIChyZXQpOwotKwl9CisrICAg ICAgbGVuICs9IGdkYl9yZWdfcHJlZml4X2xlbiArIGdkYl9yZWdfc3VmaXhfbGVuOwogKyAgICB9 CisrICBlbHNlCisrICAgIHN0cm5jcHkgKHJlZ25hbWUsIHN0YXJ0LCBsZW4pOwogKwotKyAgLyog VXBkYXRpbmcgdGhlIGV4cHJlc3Npb24gYnVmZmVyIHBvaW50ZXIsIGJlY2F1c2Ugd2UgaGF2ZSBt YWRlCi0rICAgICBzb21lIG1vZGlmaWNhdGlvbnMgdG8gaXQgYmVmb3JlLiAgKi8KLSsgIGV2YWxf aW5mby0+ZXhwX2J1ZiA9IHM7Ci0rCi0rICByZXR1cm4gcmV0OwotK30KLSsKLSsvKiBUaGlzIGZ1 bmN0aW9uIHRyaWVzIHRvIGV2YWx1YXRlIGEgc2luZ2xlIG9wZXJhbmQgb2YgdGhlIGV4cHJlc3Np b24uCi0rCi0rICAgU2luZ2xlIG9wZXJhbmRzIGNhbiBiZToKLSsKLSsgICAtIHVuYXJ5IG9wZXJh dG9ycyBgLScgYW5kIGB+JzsKLSsgICAtIGludGVnZXIgY29uc3RhbnRzIChiZWdpbm5pbmcgd2l0 aCBgJCcpOwotKyAgIC0gcmVnaXN0ZXIgYWNjZXNzLCB3aXRoL291dCBkaXNwbGFjZW1lbnQgYW5k IGluZGlyZWN0aW9uLiAgKi8KLSsKLStzdGF0aWMgc3RydWN0IHZhbHVlICoKLStzdGFwX2V2YWx1 YXRlX3NpbmdsZV9vcGVyYW5kIChzdHJ1Y3Qgc3RhcF9ldmFsdWF0aW9uX2luZm8gKmV2YWxfaW5m bykKLSt7Ci0rICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGV2YWxfaW5mby0+Z2RiYXJjaDsK LSsgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSA9IGV2YWxfaW5mby0+ZnJhbWU7Ci0rICBlbnVt IHN0YXBfYXJnX2JpdG5lc3MgYml0bmVzcyA9IGV2YWxfaW5mby0+Yml0bmVzczsKLSsgIHN0cnVj dCB2YWx1ZSAqcmVzID0gTlVMTDsKKysgIHJlZ25hbWVbbGVuXSA9ICdcMCc7CisrICAvKiBJcyB0 aGlzIGEgdmFsaWQgcmVnaXN0ZXIgbmFtZT8gICovCisrICBpZiAodXNlcl9yZWdfbWFwX25hbWVf dG9fcmVnbnVtIChnZGJhcmNoLCByZWduYW1lLCBsZW4pID09IC0xKQorKyAgICBlcnJvciAoXygi SW52YWxpZCByZWdpc3RlciBuYW1lIGAlcycgb24gZXhwcmVzc2lvbiBgJXMnLiIpLAorKwkgICBy ZWduYW1lLCBwLT5zYXZlZF9hcmcpOwogKwotKyAgaWYgKFNUQVBfQ09NUElMSU5HX0FHRU5UX0VY UFJfUCAoZXZhbF9pbmZvKSkKLSsgICAgLyogSWYgd2UgYXJlIGNvbXBpbGluZywgd2UgY2Fubm90 IHJldHVybiBOVUxMIGJlY2F1c2UgdGhhdCB3b3VsZAotKyAgICAgICBsZWFkIHRvIGVycm9ycyBp biBmdXR1cmUgZXZhbHVhdGlvbnMuICBUaGF0J3Mgd2h5IHdlIGp1c3QgbWFrZQotKyAgICAgICB0 aGlzIGR1bW15IHZhbHVlLCByZXByZXNlbnRpbmcgdGhhdCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRo aXMKLSsgICAgICAgZnVuY3Rpb24gaXMgbm90IE5VTEwuICAqLwotKyAgICByZXMgPSB2YWx1ZV9m cm9tX2xvbmdlc3QgKGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5faW50LCAwKTsKKysg IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9SRUdJU1RFUik7CisrICBzdHIucHRyID0gcmVnbmFt ZTsKKysgIHN0ci5sZW5ndGggPSBsZW47CisrICB3cml0ZV9leHBfc3RyaW5nIChzdHIpOworKyAg d3JpdGVfZXhwX2VsdF9vcGNvZGUgKE9QX1JFR0lTVEVSKTsKICsKLSsgIHN3aXRjaCAoKmV2YWxf aW5mby0+ZXhwX2J1ZikKKysgIGlmIChpbmRpcmVjdF9wKQogKyAgICB7Ci0rICAgIGNhc2UgJy0n OiBjYXNlICd+JzoKLSsJewotKwkgIGNoYXIgYyA9ICpldmFsX2luZm8tPmV4cF9idWY7Ci0rCi0r CSAgLyogVGhpcyBpcyBhbiB1bmFyeSBvcGVyYXRvciAoZWl0aGVyIGAtJyBvciBgficpLgorKyAg ICAgIGlmIChkaXNwX3ApCisrCXdyaXRlX2V4cF9lbHRfb3Bjb2RlIChCSU5PUF9BREQpOwogKwot KwkgICAgIElmIGl0IGlzIGZvbGxvd2VkIGJ5IGEgcGFyZW50aGVzaXMsIGFuZCB0aGlzIHBhcmVu dGhlc2lzCi0rCSAgICAgaXMgTk9UIGZvbGxvd2VkIGJ5IGEgYCUnLCB0aGVuIHdlIGFyZSBkZWFs aW5nIHdpdGggYW4gZXhwcmVzc2lvbgotKwkgICAgIGxpa2UgYC0oMiArIDMpJyBvciBgfigyICsg MyknLiAgV2UganVzdCBoYXZlIHRvIHRyZWF0IHNlcGFyYXRlbHkKLSsJICAgICBhbmQgcmV0dXJu IHRoZSByZXN1bHQgYWZ0ZXIgYXBwbHlpbmcgdGhlIG9wZXJhdGlvbiAoYC0nIG9yIGB+JykuCisr ICAgICAgLyogQ2FzdGluZyB0byB0aGUgZXhwZWN0ZWQgdHlwZS4gICovCisrICAgICAgd3JpdGVf ZXhwX2VsdF9vcGNvZGUgKFVOT1BfQ0FTVCk7CisrICAgICAgd3JpdGVfZXhwX2VsdF90eXBlIChs b29rdXBfcG9pbnRlcl90eXBlIChwLT5hcmdfdHlwZSkpOworKyAgICAgIHdyaXRlX2V4cF9lbHRf b3Bjb2RlIChVTk9QX0NBU1QpOwogKwotKwkgICAgIElmIGl0IGlzIGZvbGxvd2VkIGJ5IGEgZGln aXQsIHRoZW4gd2UgaGF2ZSBvbmx5IG9uZSBjaG9pY2U6ICBpdAotKwkgICAgIGlzIGEgZGlzcGxh Y2VtZW50IGFyZ3VtZW50IGZvciBhIHJlZ2lzdGVyIGFjY2VzcywgbGlrZQotKwkgICAgIGAtNCgl ZWF4KScuICBJdCBhbHNvIG1lYW5zIHRoYXQgdGhlIG9wZXJhdG9yIGNhbiAqb25seSogYmUgYC0n LAotKwkgICAgIGFuZCB0aGUgY2hhcmFjdGVycyBpbW1lZGlhdGVseSBhZnRlciB0aGUgbnVtYmVy ICptdXN0KiBiZSBgKCUnLgorKyAgICAgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChVTk9QX0lORCk7 CisrICAgIH0KICsKLSsJICAgICBJZiBpdCBpcyBmb2xsb3dlZCBieSBhIGAkJywgdGhlbiBpdCBp cyBhbiBpbnRlZ2VyIGNvbnN0YW50LCBhbmQKLSsJICAgICB3ZSBzaG91bGQgYXBwbHkgdGhlIGNv cnJlY3Qgb3BlcmF0aW9uIHRvIGl0LiAgKi8KKysgIC8qIEdldHRpbmcgcmlkIG9mIHRoZSByZWdp c3RlciBuYW1lIHN1Zml4LiAgKi8KKysgIGlmIChyZWdfc3VmaXgpCisrICAgIHsKKysgICAgICBp ZiAoc3RybmNtcCAocC0+YXJnLCByZWdfc3VmaXgsIHJlZ19zdWZpeF9sZW4pICE9IDApCisrCWVy cm9yIChfKCJNaXNzaW5nIHJlZ2lzdGVyIG5hbWUgc3VmaXggYCVzJyBvbiBleHByZXNzaW9uIGAl cycuIiksCisrCSAgICAgICByZWdfc3VmaXgsIHAtPnNhdmVkX2FyZyk7CiArCi0rCSAgKytldmFs X2luZm8tPmV4cF9idWY7Ci0rCSAgZXZhbF9pbmZvLT5leHBfYnVmID0gc2tpcF9zcGFjZXMgKGV2 YWxfaW5mby0+ZXhwX2J1Zik7Ci0rCSAgaWYgKCpldmFsX2luZm8tPmV4cF9idWYKLSsJICAgICAg JiYgKmV2YWxfaW5mby0+ZXhwX2J1ZiA9PSAnKCcKLSsJICAgICAgJiYgZXZhbF9pbmZvLT5leHBf YnVmWzFdICE9ICclJykKLSsJICAgIHsKLSsJICAgICAgc3RydWN0IHZhbHVlICp0bXBfcmVzOwor KyAgICAgIHAtPmFyZyArPSByZWdfc3VmaXhfbGVuOworKyAgICB9CiArCi0rCSAgICAgIC8qIFdl J3JlIG5vdCBkZWFsaW5nIHdpdGggYSByZWdpc3RlciBuYW1lLCBidXQgd2l0aCBhbgotKwkJIGV4 cHJlc3Npb24gbGlrZSBgLSgyICsgMyknIG9yIGB+KDIgKyAzKScuICBXZSBmaXJzdCBoYXZlCi0r CQkgdG8gZXZhbHVhdGUgdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGV4cHJlc3Npb24gKGkuZS4sIHRo ZQotKwkJIHBhcmVudGhlc2lzKSwgYW5kIHRoZW4gYXBwbHkgdGhlIHNwZWNpZmllZCBvcGVyYXRp b24KLSsJCSAoZWl0aGVyIGAtJyBvciBgficpIHRvIGl0LiAgKi8KLSsJICAgICAgdG1wX3JlcyA9 IHN0YXBfZXZhbHVhdGVfY29uZGl0aW9uYWxseSAoZXZhbF9pbmZvKTsKKysgIC8qIEdldHRpbmcg cmlkIG9mIHRoZSByZWdpc3RlciBpbmRpcmVjdGlvbiBzdWZpeC4gICovCisrICBpZiAoaW5kaXJl Y3RfcCAmJiByZWdfaW5kX3N1Zml4KQorKyAgICB7CisrICAgICAgaWYgKHN0cm5jbXAgKHAtPmFy ZywgcmVnX2luZF9zdWZpeCwgcmVnX2luZF9zdWZpeF9sZW4pICE9IDApCisrCWVycm9yIChfKCJN aXNzaW5nIGluZGlyZWN0aW9uIHN1Zml4IGAlcycgb24gZXhwcmVzc2lvbiBgJXMnLiIpLAorKwkg ICAgICAgcmVnX2luZF9zdWZpeCwgcC0+c2F2ZWRfYXJnKTsKICsKLSsJICAgICAgaWYgKGMgPT0g Jy0nKQotKwkJewotKwkJICBpZiAoU1RBUF9DT01QSUxJTkdfQUdFTlRfRVhQUl9QIChldmFsX2lu Zm8pKQotKwkJICAgIHsKLSsJCSAgICAgIC8qIFdlIGhhdmUgdG8gYWRkIGAtMScgdG8gdGhlIHN0 YWNrLCBhbmQgbXVsdGlwbHkKLSsJCQkgdGhlIHR3byB2YWx1ZXMuICAqLwotKwkJICAgICAgYXhf Y29uc3RfbCAoZXZhbF9pbmZvLT5hZXhwciwgLTEpOwotKwkJICAgICAgYXhfc2ltcGxlIChldmFs X2luZm8tPmFleHByLCBhb3BfbXVsKTsKLSsJCSAgICB9Ci0rCQkgIGVsc2UKLSsJCSAgICByZXMg PSB2YWx1ZV9uZWcgKHRtcF9yZXMpOwotKwkJfQotKwkgICAgICBlbHNlCi0rCQl7Ci0rCQkgIGlm IChTVEFQX0NPTVBJTElOR19BR0VOVF9FWFBSX1AgKGV2YWxfaW5mbykpCi0rCQkgICAgYXhfc2lt cGxlIChldmFsX2luZm8tPmFleHByLCBhb3BfYml0X25vdCk7Ci0rCQkgIGVsc2UKLSsJCSAgICBy ZXMgPSB2YWx1ZV9jb21wbGVtZW50ICh0bXBfcmVzKTsKLSsJCX0KLSsJICAgIH0KLSsJICBlbHNl IGlmIChpc2RpZ2l0ICgqZXZhbF9pbmZvLT5leHBfYnVmKSkKLSsJICAgIHsKLSsJICAgICAgaW50 IG51bWJlcjsKLSsKLSsJICAgICAgLyogVGhpcyBpcyBhIG51bWJlciwgc28gaXQgTVVTVCBiZSBh IHJlZ2lzdGVyIGRpc3BsYWNlbWVudC4KLSsJCSBUaGUgb25seSBvcGVyYXRvciBhbGxvd2VkIGhl cmUgaXMgYC0nLCBpdCBNVVNUIGJlCi0rCQkgZm9sbG93ZWQgYnkgYSBudW1iZXIsIGFuZCB0aGUg bnVtYmVyIE1VU1QgYmUgZm9sbG93ZWQgYnkKLSsJCSBgKCUnLiAgKi8KLSsJICAgICAgaWYgKGMg IT0gJy0nKQotKwkJZXJyb3IgKF8oIkludmFsaWQgb3BlcmF0b3IgYCVjJyBmb3IgcmVnaXN0ZXIg ZGlzcGxhY2VtZW50ICIKLSsJCQkgIm9uIGV4cHJlc3Npb24gYCVzJy4iKSwgYywgZXZhbF9pbmZv LT5zYXZlZF9leHByKTsKLSsKLSsJICAgICAgbnVtYmVyID0gc3RydG9sIChldmFsX2luZm8tPmV4 cF9idWYsCi0rCQkJICAgICAgICZldmFsX2luZm8tPmV4cF9idWYsIDApICogLTE7Ci0rCi0rCSAg ICAgIGlmICghKmV2YWxfaW5mby0+ZXhwX2J1ZgotKwkJICB8fCAqZXZhbF9pbmZvLT5leHBfYnVm ICE9ICcoJwotKwkJICB8fCAoKmV2YWxfaW5mby0+ZXhwX2J1ZiA9PSAnKCcKLSsJCSAgICAgICYm IGV2YWxfaW5mby0+ZXhwX2J1ZlsxXSAhPSAnJScpKQotKwkJZXJyb3IgKF8oIkludmFsaWQgbWV0 aG9kIG9mIGluZGlyZWN0aW5nIGEgcmVnaXN0ZXIgb24gIgotKwkJCSAiZXhwcmVzc2lvbiBgJXMn LiIpLCBldmFsX2luZm8tPnNhdmVkX2V4cHIpOwotKwotKwkgICAgICByZXMKLSsJCT0gdmFsdWVf ZnJvbV9sb25nZXN0IChidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2ludCwKLSsJCQkJ ICAgICAgbnVtYmVyKTsKLSsKLSsJICAgICAgcmVzID0gc3RhcF9mZXRjaF9yZWdfdmFsdWUgKGV2 YWxfaW5mbywgcmVzKTsKLSsJICAgIH0KLSsJICBlbHNlIGlmICgqZXZhbF9pbmZvLT5leHBfYnVm ID09ICckJykKLSsJICAgIHsKLSsJICAgICAgaW50IG51bWJlcjsKLSsKLSsJICAgICAgLyogTGFz dCBjYXNlLiAgV2UgYXJlIGRlYWxpbmcgd2l0aCBhbiBpbnRlZ2VyIGNvbnN0YW50LCBzbwotKwkJ IHdlIG11c3QgcmVhZCBpdCBhbmQgdGhlbiBhcHBseSB0aGUgbmVjZXNzYXJ5IG9wZXJhdGlvbiwK LSsJCSBlaXRoZXIgYC0nIG9yIGB+Jy4gICovCi0rCSAgICAgICsrZXZhbF9pbmZvLT5leHBfYnVm OwotKwkgICAgICBudW1iZXIgPSBzdHJ0b2wgKGV2YWxfaW5mby0+ZXhwX2J1ZiwKLSsJCQkgICAg ICAgJmV2YWxfaW5mby0+ZXhwX2J1ZiwgMCk7Ci0rCi0rCSAgICAgIGlmICghU1RBUF9DT01QSUxJ TkdfQUdFTlRfRVhQUl9QIChldmFsX2luZm8pKQotKwkJcmVzCi0rCQkgID0gdmFsdWVfZnJvbV9s b25nZXN0IChidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2ludCwKLSsJCQkJCW51bWJl cik7Ci0rCSAgICAgIGVsc2UKLSsJCWF4X2NvbnN0X2wgKGV2YWxfaW5mby0+YWV4cHIsIG51bWJl cik7CisrICAgICAgcC0+YXJnICs9IHJlZ19pbmRfc3VmaXhfbGVuOworKyAgICB9CisrfQogKwot KwkgICAgICBldmFsX2luZm8tPmV4cF9idWYgPSBza2lwX3NwYWNlcyAoZXZhbF9pbmZvLT5leHBf YnVmKTsKKytzdGF0aWMgdm9pZAorK3N0YXBfcGFyc2Vfc2luZ2xlX29wZXJhbmQgKHN0cnVjdCBz dGFwX3BhcnNlX2luZm8gKnApCisreworKyAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBwLT5n ZGJhcmNoOworKyAgLyogUHJlZml4ZXMgZm9yIHRoZSBwYXJzZXIuICAqLworKyAgY29uc3QgY2hh ciAqY29uc3RfcHJlZml4ID0gZ2RiYXJjaF9zdGFwX2ludGVnZXJfcHJlZml4IChnZGJhcmNoKTsK KysgIGNvbnN0IGNoYXIgKnJlZ19wcmVmaXggPSBnZGJhcmNoX3N0YXBfcmVnaXN0ZXJfcHJlZml4 IChnZGJhcmNoKTsKKysgIGNvbnN0IGNoYXIgKnJlZ19pbmRfcHJlZml4CisrICAgID0gZ2RiYXJj aF9zdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3ByZWZpeCAoZ2RiYXJjaCk7CisrICBpbnQgY29u c3RfcHJlZml4X2xlbiA9IGNvbnN0X3ByZWZpeCA/IHN0cmxlbiAoY29uc3RfcHJlZml4KSA6IDA7 CisrICBpbnQgcmVnX3ByZWZpeF9sZW4gPSByZWdfcHJlZml4ID8gc3RybGVuIChyZWdfcHJlZml4 KSA6IDA7CisrICBpbnQgcmVnX2luZF9wcmVmaXhfbGVuID0gcmVnX2luZF9wcmVmaXggPyBzdHJs ZW4gKHJlZ19pbmRfcHJlZml4KSA6IDA7CisrCisrICAvKiBTdWZpeGVzIGZvciB0aGUgcGFyc2Vy LiAgKi8KKysgIGNvbnN0IGNoYXIgKmNvbnN0X3N1Zml4ID0gZ2RiYXJjaF9zdGFwX2ludGVnZXJf c3VmaXggKGdkYmFyY2gpOworKyAgY29uc3QgY2hhciAqcmVnX3N1Zml4ID0gZ2RiYXJjaF9zdGFw X3JlZ2lzdGVyX3N1Zml4IChnZGJhcmNoKTsKKysgIGNvbnN0IGNoYXIgKnJlZ19pbmRfc3VmaXgK KysgICAgPSBnZGJhcmNoX3N0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fc3VmaXggKGdkYmFyY2gp OworKyAgaW50IGNvbnN0X3N1Zml4X2xlbiA9IGNvbnN0X3N1Zml4ID8gc3RybGVuIChjb25zdF9z dWZpeCkgOiAwOworKyAgaW50IHJlZ19zdWZpeF9sZW4gPSByZWdfc3VmaXggPyBzdHJsZW4gKHJl Z19zdWZpeCkgOiAwOworKyAgaW50IHJlZ19pbmRfc3VmaXhfbGVuID0gcmVnX2luZF9zdWZpeCA/ IHN0cmxlbiAocmVnX2luZF9zdWZpeCkgOiAwOworKworKyAgLyogV2UgZmlyc3QgdHJ5IHRvIHBh cnNlIHRoaXMgdG9rZW4gYXMgYSAic3BlY2lhbCB0b2tlbiIuICAqLworKyAgaWYgKGdkYmFyY2hf c3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuX3AgKGdkYmFyY2gpKQorKyAgICB7CisrICAgICAgaW50 IHJldCA9IGdkYmFyY2hfc3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuIChnZGJhcmNoLCBwKTsKICsK LSsJICAgICAgaWYgKGMgPT0gJy0nKQotKwkJewotKwkJICBpZiAoU1RBUF9DT01QSUxJTkdfQUdF TlRfRVhQUl9QIChldmFsX2luZm8pKQotKwkJICAgIGF4X3NpbXBsZSAoZXZhbF9pbmZvLT5hZXhw ciwgYW9wX2xvZ19ub3QpOwotKwkJICBlbHNlCi0rCQkgICAgcmVzID0gdmFsdWVfbmVnIChyZXMp OwotKwkJfQotKwkgICAgICBlbHNlCi0rCQl7Ci0rCQkgIGlmIChTVEFQX0NPTVBJTElOR19BR0VO VF9FWFBSX1AgKGV2YWxfaW5mbykpCi0rCQkgICAgYXhfc2ltcGxlIChldmFsX2luZm8tPmFleHBy LCBhb3BfYml0X25vdCk7Ci0rCQkgIGVsc2UKLSsJCSAgICByZXMgPSB2YWx1ZV9jb21wbGVtZW50 IChyZXMpOwotKwkJfQotKwkgICAgfQotKwkgIGVsc2UKLSsJICAgIGVycm9yIChfKCJJbnZhbGlk IG9wZXJhbmQgdG8gdW5hcnkgb3BlcmF0b3IgYCVjJyBvbiAiCi0rCQkgICAgICJleHByZXNzaW9u IGAlcycuIiksIGMsIGV2YWxfaW5mby0+c2F2ZWRfZXhwcik7Ci0rCX0KLSsgICAgICBicmVhazsK KysgICAgICBpZiAocmV0KQorKwkvKiBJZiB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBhYm92ZSBm dW5jdGlvbiBpcyBub3QgemVybywKKysJICAgaXQgbWVhbnMgaXQgc3VjY2Vzc2Z1bGx5IHBhcnNl ZCB0aGUgc3BlY2lhbCB0b2tlbi4KICsKLSsgICAgY2FzZSAnMCc6IGNhc2UgJzEnOiBjYXNlICcy JzogY2FzZSAnMyc6IGNhc2UgJzQnOgotKyAgICBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcn OiBjYXNlICc4JzogY2FzZSAnOSc6Ci0rICAgICAgewotKwlpbnQgbnVtYmVyID0gc3RydG9sIChl dmFsX2luZm8tPmV4cF9idWYsICZldmFsX2luZm8tPmV4cF9idWYsIDApOworKwkgICBJZiBpdCBp cyBOVUxMLCB3ZSB0cnkgdG8gcGFyc2UgaXQgdXNpbmcgb3VyIG1ldGhvZC4gICovCisrCXJldHVy bjsKKysgICAgfQogKwotKwkvKiBUaGlzIGlzIGEgcmVnaXN0ZXIgZGlzcGxhY2VtZW50IHdpdGgg YSBwb3NpdGl2ZSB2YWx1ZS4gIFdlIHJlYWQKLSsJICAgdGhlIG51bWJlciwgYW5kIHRoZW4gY2hl Y2sgZm9yIHRoZSBtYW5kYXRvcnkgYCglJyBwYXJ0LiAgKi8KLSsJaWYgKCEqZXZhbF9pbmZvLT5l eHBfYnVmCi0rCSAgICB8fCAhKCpldmFsX2luZm8tPmV4cF9idWYgPT0gJygnCi0rCQkgJiYgZXZh bF9pbmZvLT5leHBfYnVmWzFdID09ICclJykpCi0rCSAgZXJyb3IgKF8oIkludmFsaWQgcmVnaXN0 ZXIgYWNjZXNzIG9uIGV4cHJlc3Npb24gYCVzJy4iKSwKLSsJCSBldmFsX2luZm8tPnNhdmVkX2V4 cHIpOworKyAgaWYgKCpwLT5hcmcgPT0gJy0nIHx8ICpwLT5hcmcgPT0gJ34nIHx8ICpwLT5hcmcg PT0gJysnKQorKyAgICB7CisrICAgICAgY2hhciBjID0gKnAtPmFyZzsKKysgICAgICAvKiBXZSB1 c2UgdGhpcyB2YXJpYWJsZSB0byBkbyBhIGxvb2thaGVhZC4gICovCisrICAgICAgY29uc3QgY2hh ciAqdG1wID0gcC0+YXJnOwogKwotKwlyZXMgPSB2YWx1ZV9mcm9tX2xvbmdlc3QgKGJ1aWx0aW5f dHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5faW50LAotKwkJCQkgIG51bWJlcik7CisrICAgICAgKyt0 bXA7CiArCi0rCXJlcyA9IHN0YXBfZmV0Y2hfcmVnX3ZhbHVlIChldmFsX2luZm8sIHJlcyk7Ci0r ICAgICAgfQotKyAgICBicmVhazsKKysgICAgICAvKiBUaGlzIGlzIGFuIHVuYXJ5IG9wZXJhdGlv bi4gIEhlcmUgaXMgYSBsaXN0IG9mIGFsbG93ZWQgdG9rZW5zCisrCSBoZXJlOgogKwotKyAgICBj YXNlICckJzoKLSsgICAgICB7Ci0rCWludCBudW1iZXI7CisrCSAtIG51bWVyaWMgbGl0ZXJhbDsK KysJIC0gbnVtYmVyIChmcm9tIHJlZ2lzdGVyIGRpc3BsYWNlbWVudCkKKysJIC0gc3ViZXhwcmVz c2lvbiAoYmVnaW5uaW5nIHdpdGggYCgnKQogKwotKwkvKiBUaGlzIGlzIGFuIGludGVnZXIgY29u c3RhbnQuICBXZSBqdXN0IGhhdmUgdG8gcmVhZCB0aGUgbnVtYmVyCi0rCSAgIGFuZCByZXR1cm4g aXQuICAqLwotKwkrK2V2YWxfaW5mby0+ZXhwX2J1ZjsKLSsJZXZhbF9pbmZvLT5leHBfYnVmID0g c2tpcF9zcGFjZXMgKGV2YWxfaW5mby0+ZXhwX2J1Zik7CisrCSBXZSBoYW5kbGUgdGhlIHJlZ2lz dGVyIGRpc3BsYWNlbWVudCBoZXJlLCBhbmQgdGhlIG90aGVyIGNhc2VzCisrCSByZWN1cnNpdmVs eS4gICovCisrICAgICAgaWYgKGlzZGlnaXQgKCp0bXApKQorKwl7CisrCSAgaW50IG51bWJlciA9 IHN0cnRvbCAodG1wLCAoY2hhciAqKikgJnRtcCwgMTApOwogKwotKwludW1iZXIgPSBzdHJ0b2wg KGV2YWxfaW5mby0+ZXhwX2J1ZiwgJmV2YWxfaW5mby0+ZXhwX2J1ZiwgMCk7CisrCSAgaWYgKHAt Pmluc2lkZV9wYXJlbl9wKQorKwkgICAgdG1wID0gc2tpcF9zcGFjZXNfY29uc3QgKHRtcCk7Cisr CSAgaWYgKCFyZWdfaW5kX3ByZWZpeAorKwkgICAgICB8fCBzdHJuY21wICh0bXAsIHJlZ19pbmRf cHJlZml4LCByZWdfaW5kX3ByZWZpeF9sZW4pICE9IDApCisrCSAgICBnb3RvIG5vdF9kaXNwbGFj ZW1lbnQ7CiArCi0rCWlmIChTVEFQX0NPTVBJTElOR19BR0VOVF9FWFBSX1AgKGV2YWxfaW5mbykp Ci0rCSAgYXhfY29uc3RfbCAoZXZhbF9pbmZvLT5hZXhwciwgbnVtYmVyKTsKLSsJZWxzZQotKwkg IHJlcyA9IHZhbHVlX2Zyb21fbG9uZ2VzdCAoYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRp bl9pbnQsCi0rCQkJCSAgICBudW1iZXIpOworKwkgIC8qIElmIHdlIGFyZSBoZXJlLCBpdCBtZWFu cyBpdCBpcyBhIGRpc3BsYWNlbWVudC4gIFRoZSBvbmx5CisrCSAgICAgb3BlcmF0aW9ucyBhbGxv d2VkIGhlcmUgYXJlIGAtJyBhbmQgYCsnLiAgKi8KKysJICBpZiAoYyA9PSAnficpCisrCSAgICBl cnJvciAoXygiSW52YWxpZCBvcGVyYXRvciBgJWMnIGZvciByZWdpc3RlciBkaXNwbGFjZW1lbnQg IgorKwkJICAgICAib24gZXhwcmVzc2lvbiBgJXMnLiIpLCBjLCBwLT5zYXZlZF9hcmcpOwogKwot KwlldmFsX2luZm8tPmV4cF9idWYgPSBza2lwX3NwYWNlcyAoZXZhbF9pbmZvLT5leHBfYnVmKTsK LSsgICAgICB9Ci0rICAgIGJyZWFrOworKwkgIHN0YXBfcGFyc2VfcmVnaXN0ZXJfb3BlcmFuZCAo cCk7CisrCX0KKysgICAgICBlbHNlCisrbm90X2Rpc3BsYWNlbWVudDoKKysJeworKwkgIHAtPmFy ZyA9IHRtcDsKKysJICBzdGFwX3BhcnNlX2FyZ3VtZW50X2NvbmRpdGlvbmFsbHkgKHApOworKwkg IGlmIChjID09ICctJykKKysJICAgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChVTk9QX05FRyk7Cisr CSAgZWxzZSBpZiAoYyA9PSAnficpCisrCSAgICB3cml0ZV9leHBfZWx0X29wY29kZSAoVU5PUF9D T01QTEVNRU5UKTsKKysJfQorKyAgICB9CisrICBlbHNlIGlmIChpc2RpZ2l0ICgqcC0+YXJnKSkK KysgICAgeworKyAgICAgIC8qIEEgdGVtcG9yYXJ5IHZhcmlhYmxlLCBuZWVkZWQgZm9yIGxvb2th aGVhZC4gICovCisrICAgICAgY29uc3QgY2hhciAqdG1wID0gcC0+YXJnOworKyAgICAgIGxvbmcg bnVtYmVyOworKworKyAgICAgIC8qIFdlIGNhbiBiZSBkZWFsaW5nIHdpdGggYSBudW1lcmljIGNv bnN0YW50IChpZiBgY29uc3RfcHJlZml4JyBpcworKwkgTlVMTCksIG9yIHdpdGggYSByZWdpc3Rl ciBkaXNwbGFjZW1lbnQuICAqLworKyAgICAgIG51bWJlciA9IHN0cnRvbCAodG1wLCAoY2hhciAq KikgJnRtcCwgMTApOworKworKyAgICAgIGlmIChwLT5pbnNpZGVfcGFyZW5fcCkKKysJdG1wID0g c2tpcF9zcGFjZXNfY29uc3QgKHRtcCk7CisrICAgICAgaWYgKCFjb25zdF9wcmVmaXggJiYgcmVn X2luZF9wcmVmaXgKKysJICAmJiBzdHJuY21wICh0bXAsIHJlZ19pbmRfcHJlZml4LCByZWdfaW5k X3ByZWZpeF9sZW4pICE9IDApCisrCXsKKysJICAvKiBXZSBhcmUgZGVhbGluZyB3aXRoIGEgbnVt ZXJpYyBjb25zdGFudC4gICovCisrCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKE9QX0xPTkcpOwor KwkgIHdyaXRlX2V4cF9lbHRfdHlwZSAoYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9s b25nKTsKKysJICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKG51bWJlcik7CisrCSAgd3JpdGVfZXhw X2VsdF9vcGNvZGUgKE9QX0xPTkcpOwogKwotKyAgICBjYXNlICcoJzogY2FzZSAnJSc6Ci0rICAg ICAgewotKwkvKiBSZWdpc3RlciBhY2Nlc3MsIHdpdGggb3Igd2l0aG91dCBpbmRpcmVjdGlvbi4g ICovCi0rCXJlcyA9IHN0YXBfZmV0Y2hfcmVnX3ZhbHVlIChldmFsX2luZm8sIC8qZGlzcGxhY2Vt ZW50PSovTlVMTCk7Ci0rCWV2YWxfaW5mby0+ZXhwX2J1ZiA9IHNraXBfc3BhY2VzIChldmFsX2lu Zm8tPmV4cF9idWYpOwotKyAgICAgIH0KLSsgICAgYnJlYWs7CisrCSAgcC0+YXJnID0gdG1wOwog KwotKyAgICBkZWZhdWx0OgotKyAgICAgIHsKLSsJZXJyb3IgKF8oIk9wZXJhdG9yIGAlYycgbm90 IHJlY29nbml6ZWQgb24gZXhwcmVzc2lvbiBgJXMnLiIpLAotKwkgICAgICAgKmV2YWxfaW5mby0+ ZXhwX2J1ZiwgZXZhbF9pbmZvLT5zYXZlZF9leHByKTsKLSsgICAgICB9CisrCSAgaWYgKGNvbnN0 X3N1Zml4KQorKwkgICAgeworKwkgICAgICBpZiAoc3RybmNtcCAocC0+YXJnLCBjb25zdF9zdWZp eCwgY29uc3Rfc3VmaXhfbGVuKSA9PSAwKQorKwkJcC0+YXJnICs9IGNvbnN0X3N1Zml4X2xlbjsK KysJICAgICAgZWxzZQorKwkJZXJyb3IgKF8oIkludmFsaWQgY29uc3RhbnQgc3VmaXggb24gZXhw cmVzc2lvbiBgJXMnLiIpLAorKwkJICAgICAgIHAtPnNhdmVkX2FyZyk7CisrCSAgICB9CisrCX0K KysgICAgICBlbHNlIGlmIChyZWdfaW5kX3ByZWZpeAorKwkgICAgICAgJiYgc3RybmNtcCAodG1w LCByZWdfaW5kX3ByZWZpeCwgcmVnX2luZF9wcmVmaXhfbGVuKSA9PSAwKQorKwlzdGFwX3BhcnNl X3JlZ2lzdGVyX29wZXJhbmQgKHApOworKyAgICAgIGVsc2UKKysJZXJyb3IgKF8oIlVua25vd24g bnVtZXJpYyB0b2tlbiBvbiBleHByZXNzaW9uIGAlcycuIiksCisrCSAgICAgICBwLT5zYXZlZF9h cmcpOwogKyAgICB9CisrICBlbHNlIGlmIChjb25zdF9wcmVmaXgKKysJICAgJiYgc3RybmNtcCAo cC0+YXJnLCBjb25zdF9wcmVmaXgsIGNvbnN0X3ByZWZpeF9sZW4pID09IDApCisrICAgIHsKKysg ICAgICAvKiBXZSBhcmUgZGVhbGluZyB3aXRoIGEgbnVtZXJpYyBjb25zdGFudC4gICovCisrICAg ICAgbG9uZyBudW1iZXI7CiArCi0rICByZXR1cm4gcmVzOwotK30KKysgICAgICBwLT5hcmcgKz0g Y29uc3RfcHJlZml4X2xlbjsKKysgICAgICBudW1iZXIgPSBzdHJ0b2wgKHAtPmFyZywgKGNoYXIg KiopICZwLT5hcmcsIDEwKTsKICsKLSsvKiBUaGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZv ciBjaGVja2luZyB0aGUgbmVjZXNzYXJ5IHR5cGUgb2YgZXZhbHVhdGlvbgotKyAgIGRlcGVuZGlu ZyBvbiB3aGF0IGlzIHRoZSBuZXh0ICJ0aGluZyIgaW4gdGhlIGJ1ZmZlci4gIFZhbGlkIHZhbHVl cyBhcmU6CisrICAgICAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKE9QX0xPTkcpOworKyAgICAgIHdy aXRlX2V4cF9lbHRfdHlwZSAoYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9sb25nKTsK KysgICAgICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKG51bWJlcik7CisrICAgICAgd3JpdGVfZXhw X2VsdF9vcGNvZGUgKE9QX0xPTkcpOwogKwotKyAgIC0gVW5hcnkgb3BlcmF0b3JzOwotKyAgIC0g SW50ZWdlciBjb25zdGFudHM7Ci0rICAgLSBSZWdpc3RlciBkaXNwbGFjZW1lbnQsIGluZGlyZWN0 aW9uLCBhbmQgZGlyZWN0IGFjY2VzczsKLSsgICAtIFBhcmVudGhlc2l6ZWQgb3BlcmFuZC4gICov CisrICAgICAgaWYgKGNvbnN0X3N1Zml4KQorKwl7CisrCSAgaWYgKHN0cm5jbXAgKHAtPmFyZywg Y29uc3Rfc3VmaXgsIGNvbnN0X3N1Zml4X2xlbikgPT0gMCkKKysJICAgIHAtPmFyZyArPSBjb25z dF9zdWZpeF9sZW47CisrCSAgZWxzZQorKwkgICAgZXJyb3IgKF8oIkludmFsaWQgY29uc3RhbnQg c3VmaXggb24gZXhwcmVzc2lvbiBgJXMnLiIpLAorKwkJICAgcC0+c2F2ZWRfYXJnKTsKKysJfQor KyAgICB9CisrICBlbHNlIGlmICgocmVnX3ByZWZpeAorKwkgICAgJiYgc3RybmNtcCAocC0+YXJn LCByZWdfcHJlZml4LCByZWdfcHJlZml4X2xlbikgPT0gMCkKKysJICAgfHwgKHJlZ19pbmRfcHJl Zml4CisrCSAgICAgICAmJiBzdHJuY21wIChwLT5hcmcsIHJlZ19pbmRfcHJlZml4LCByZWdfaW5k X3ByZWZpeF9sZW4pID09IDApKQorKyAgICBzdGFwX3BhcnNlX3JlZ2lzdGVyX29wZXJhbmQgKHAp OworKyAgZWxzZQorKyAgICBlcnJvciAoXygiT3BlcmF0b3IgYCVjJyBub3QgcmVjb2duaXplZCBv biBleHByZXNzaW9uIGAlcycuIiksCisrCSAgICpwLT5hcmcsIHAtPnNhdmVkX2FyZyk7CisrfQog KwotK3N0YXRpYyBzdHJ1Y3QgdmFsdWUgKgotK3N0YXBfZXZhbHVhdGVfY29uZGl0aW9uYWxseSAo c3RydWN0IHN0YXBfZXZhbHVhdGlvbl9pbmZvICpldmFsX2luZm8pCi0rewotKyAgY2hhciAqcyA9 IGV2YWxfaW5mby0+ZXhwX2J1ZjsKLSsgIHN0cnVjdCB2YWx1ZSAqcmV0ID0gTlVMTDsKLSsKLSsg IGlmICgqcyA9PSAnLScgfHwgKnMgPT0gJ34nIC8qIFVuYXJ5IG9wZXJhdG9ycy4gICovCi0rICAg ICAgfHwgKnMgPT0gJyQnIC8qIE51bWJlciAoaW50ZWdlciBjb25zdGFudCkuICAqLwotKyAgICAg IHx8IChpc2RpZ2l0ICgqcykgJiYgc1sxXSA9PSAnKCcgJiYgc1syXSA9PSAnJScpIC8qIERpc3Bs YWNlbWVudC4gICovCi0rICAgICAgfHwgKCpzID09ICcoJyAmJiBzWzFdID09ICclJykgLyogUmVn aXN0ZXIgaW5kaXJlY3Rpb24uICAqLwotKyAgICAgIHx8ICgqcyA9PSAnJScgJiYgaXNhbHBoYSAo c1sxXSkpKSAvKiBSZWdpc3RlciB2YWx1ZS4gICovCi0rICAgIC8qIFRoaXMgaXMgYSBzaW5nbGUg b3BlcmFuZCwgc28ganVzdCBldmFsdWF0ZSBpdCBhbmQgcmV0dXJuLiAgKi8KLSsgICAgcmV0ID0g c3RhcF9ldmFsdWF0ZV9zaW5nbGVfb3BlcmFuZCAoZXZhbF9pbmZvKTsKLSsgIGVsc2UgaWYgKCpz ID09ICcoJykKKytzdGF0aWMgdm9pZAorK3N0YXBfcGFyc2VfYXJndW1lbnRfY29uZGl0aW9uYWxs eSAoc3RydWN0IHN0YXBfcGFyc2VfaW5mbyAqcCkKKyt7CisrICBpZiAoKnAtPmFyZyA9PSAnLScg fHwgKnAtPmFyZyA9PSAnficgfHwgKnAtPmFyZyA9PSAnKycgLyogVW5hcnkuICAqLworKyAgICAg IHx8IGdkYmFyY2hfc3RhcF9pc19zaW5nbGVfb3BlcmFuZCAocC0+Z2RiYXJjaCwgcC0+YXJnKSkK KysgICAgc3RhcF9wYXJzZV9zaW5nbGVfb3BlcmFuZCAocCk7CisrICBlbHNlIGlmICgqcC0+YXJn ID09ICcoJykKICsgICAgewogKyAgICAgIC8qIFdlIGFyZSBkZWFsaW5nIHdpdGggYSBwYXJlbnRo ZXNpemVkIG9wZXJhbmQuICBJdCBtZWFucyB3ZQotKwkgaGF2ZSB0byBldmFsdWF0ZSBpdCBhcyBp dCB3YXMgYSBzZXBhcmF0ZSBleHByZXNzaW9uLCB3aXRob3V0CisrCSBoYXZlIHRvIHBhcnNlIGl0 IGFzIGl0IHdhcyBhIHNlcGFyYXRlIGV4cHJlc3Npb24sIHdpdGhvdXQKICsJIGxlZnQtc2lkZSBv ciBwcmVjZWRlbmNlLiAgKi8KLSsgICAgICArK2V2YWxfaW5mby0+ZXhwX2J1ZjsKLSsgICAgICBl dmFsX2luZm8tPmV4cF9idWYgPSBza2lwX3NwYWNlcyAoZXZhbF9pbmZvLT5leHBfYnVmKTsKKysg ICAgICArK3AtPmFyZzsKKysgICAgICBwLT5hcmcgPSBza2lwX3NwYWNlc19jb25zdCAocC0+YXJn KTsKKysgICAgICArK3AtPmluc2lkZV9wYXJlbl9wOwogKwotKyAgICAgIHJldCA9IHN0YXBfZXZh bHVhdGVfcHJvYmVfYXJndW1lbnRfMiAoZXZhbF9pbmZvLAotKwkJCQkJICAgIC8qbGhzPSovTlVM TCwgLypwcmVjPSovMCk7CisrICAgICAgc3RhcF9wYXJzZV9hcmd1bWVudF8xIChwLCAwLCBTVEFQ X09QRVJBTkRfUFJFQ19OT05FKTsKICsKLSsgICAgICBpZiAoKmV2YWxfaW5mby0+ZXhwX2J1ZiAh PSAnKScpCisrICAgICAgLS1wLT5pbnNpZGVfcGFyZW5fcDsKKysgICAgICBpZiAoKnAtPmFyZyAh PSAnKScpCiArCWVycm9yIChfKCJNaXNzaWduIGNsb3NlLXBhcmVuIG9uIGV4cHJlc3Npb24gYCVz Jy4iKSwKLSsJICAgICAgIGV2YWxfaW5mby0+c2F2ZWRfZXhwcik7CisrCSAgICAgICBwLT5zYXZl ZF9hcmcpOwogKwotKyAgICAgICsrZXZhbF9pbmZvLT5leHBfYnVmOwotKyAgICAgIGV2YWxfaW5m by0+ZXhwX2J1ZiA9IHNraXBfc3BhY2VzIChldmFsX2luZm8tPmV4cF9idWYpOworKyAgICAgICsr cC0+YXJnOworKyAgICAgIGlmIChwLT5pbnNpZGVfcGFyZW5fcCkKKysJcC0+YXJnID0gc2tpcF9z cGFjZXNfY29uc3QgKHAtPmFyZyk7CiArICAgIH0KICsgIGVsc2UKLSsgICAgZXJyb3IgKF8oIkNh bm5vdCBldmFsdWF0ZSBleHByZXNzaW9uIGAlcycuIiksCi0rCSAgIGV2YWxfaW5mby0+c2F2ZWRf ZXhwcik7Ci0rCi0rICByZXR1cm4gcmV0OworKyAgICBlcnJvciAoXygiQ2Fubm90IHBhcnNlIGV4 cHJlc3Npb24gYCVzJy4iKSwgcC0+c2F2ZWRfYXJnKTsKICt9CiArCi0rLyogRXZhbHVhdGlvbiBm dW5jdGlvbiBmb3IgcHJvYmUncyBhcmd1bWVudCBleHByZXNzaW9ucy4gIExIUyByZXByZXNlbnRz Ci0rICAgdGhlIGxlZnQgc2lkZSBvZiB0aGUgZXhwcmVzc2lvbiwgYW5kIFBSRUMgaXMgdGhlIHBy ZWNlZGVuY2Ugb2YgdGhlCi0rICAgbGFzdCBvcGVyYXRvciBpZGVudGlmaWVkIGJlZm9yZSBjYWxs aW5nIHRoZSBmdW5jdGlvbi4gICovCi0rCi0rc3RhdGljIHN0cnVjdCB2YWx1ZSAqCi0rc3RhcF9l dmFsdWF0ZV9wcm9iZV9hcmd1bWVudF8yIChzdHJ1Y3Qgc3RhcF9ldmFsdWF0aW9uX2luZm8gKmV2 YWxfaW5mbywKLSsJCQkJc3RydWN0IHZhbHVlICpsaHMsIGludCBwcmVjKQorK3N0YXRpYyB2b2lk Cisrc3RhcF9wYXJzZV9hcmd1bWVudF8xIChzdHJ1Y3Qgc3RhcF9wYXJzZV9pbmZvICpwLCBpbnQg aGFzX2xocywKKysJCSAgICAgICBlbnVtIHN0YXBfb3BlcmFuZF9wcmVjIHByZWMpCiArewotKyAg c3RydWN0IHZhbHVlICpyaHMgPSBOVUxMOwotKyAgaW50IGNvbXBpbGluZ19wID0gU1RBUF9DT01Q SUxJTkdfQUdFTlRfRVhQUl9QIChldmFsX2luZm8pOwotKwotKyAgLyogVGhpcyBpcyBhbiBvcGVy YXRvci1wcmVjZWRlbmNlIHBhcnNlciBhbmQgZXZhbHVhdG9yLgorKyAgLyogVGhpcyBpcyBhbiBv cGVyYXRvci1wcmVjZWRlbmNlIHBhcnNlci4KICsKICsgICAgIFdlIHdvcmsgd2l0aCBsZWZ0LSBh bmQgcmlnaHQtc2lkZXMgb2YgZXhwcmVzc2lvbnMsIGFuZAotKyAgICAgZXZhbHVhdGUgdGhlbSBk ZXBlbmRpbmcgb24gdGhlIHByZWNlZGVuY2Ugb2YgdGhlIG9wZXJhdG9ycworKyAgICAgcGFyc2Ug dGhlbSBkZXBlbmRpbmcgb24gdGhlIHByZWNlZGVuY2Ugb2YgdGhlIG9wZXJhdG9ycwogKyAgICAg d2UgZmluZC4gICovCiArCi0rICBldmFsX2luZm8tPmV4cF9idWYgPSBza2lwX3NwYWNlcyAoZXZh bF9pbmZvLT5leHBfYnVmKTsKKysgIGlmIChwLT5pbnNpZGVfcGFyZW5fcCkKKysgICAgcC0+YXJn ID0gc2tpcF9zcGFjZXNfY29uc3QgKHAtPmFyZyk7CiArCi0rICBpZiAoIWxocykKKysgIGlmICgh aGFzX2xocykKICsgICAgLyogV2Ugd2VyZSBjYWxsZWQgd2l0aG91dCBhIGxlZnQtc2lkZSwgZWl0 aGVyIGJlY2F1c2UgdGhpcyBpcyB0aGUKLSsgICAgICAgZmlyc3QgY2FsbCwgb3IgYmVjYXVzZSB3 ZSB3ZXJlIGNhbGxlZCB0byBldmFsdWF0ZSBhIHBhcmVudGhlc2l6ZWQKLSsgICAgICAgZXhwcmVz c2lvbi4gIEl0IGRvZXNuJ3QgcmVhbGx5IG1hdHRlcjsgd2UgaGF2ZSB0byBldmFsdWF0ZSB0aGUK KysgICAgICAgZmlyc3QgY2FsbCwgb3IgYmVjYXVzZSB3ZSB3ZXJlIGNhbGxlZCB0byBwYXJzZSBh IHBhcmVudGhlc2l6ZWQKKysgICAgICAgZXhwcmVzc2lvbi4gIEl0IGRvZXNuJ3QgcmVhbGx5IG1h dHRlcjsgd2UgaGF2ZSB0byBwYXJzZSB0aGUKICsgICAgICAgbGVmdC1zaWRlIGluIG9yZGVyIHRv IGNvbnRpbnVlIHRoZSBwcm9jZXNzLiAgKi8KLSsgICAgbGhzID0gc3RhcF9ldmFsdWF0ZV9jb25k aXRpb25hbGx5IChldmFsX2luZm8pOworKyAgICBzdGFwX3BhcnNlX2FyZ3VtZW50X2NvbmRpdGlv bmFsbHkgKHApOwogKwotKyAgLyogU3RhcnQgdG8gZXZhbHVhdGUgdGhlIHJpZ2h0LXNpZGUsIGFu ZCB0byAiam9pbiIgbGVmdCBhbmQgcmlnaHQgc2lkZXMKKysgIC8qIFN0YXJ0IHRvIHBhcnNlIHRo ZSByaWdodC1zaWRlLCBhbmQgdG8gImpvaW4iIGxlZnQgYW5kIHJpZ2h0IHNpZGVzCiArICAgICBk ZXBlbmRpbmcgb24gdGhlIG9wZXJhdGlvbiBzcGVjaWZpZWQuCiArCiArICAgICBUaGlzIGxvb3Ag c2hhbGwgY29udGludWUgdW50aWwgd2UgcnVuIG91dCBvZiBjaGFyYWN0ZXJzIGluIHRoZSBpbnB1 dCwKICsgICAgIG9yIHVudGlsIHdlIGZpbmQgYSBjbG9zZS1wYXJlbnRoZXNpcywgd2hpY2ggbWVh bnMgdGhhdCB3ZSd2ZSByZWFjaGVkCiArICAgICB0aGUgZW5kIG9mIGEgc3ViLWV4cHJlc3Npb24u ICAqLwotKyAgd2hpbGUgKGV2YWxfaW5mby0+ZXhwX2J1ZgotKwkgJiYgKmV2YWxfaW5mby0+ZXhw X2J1ZgotKwkgJiYgKmV2YWxfaW5mby0+ZXhwX2J1ZiAhPSAnKScpCisrICB3aGlsZSAocC0+YXJn ICYmICpwLT5hcmcgJiYgKnAtPmFyZyAhPSAnKScgJiYgIWlzc3BhY2UgKCpwLT5hcmcpKQogKyAg ICB7Ci0rICAgICAgY2hhciAqdG1wX2V4cF9idWY7CisrICAgICAgY29uc3QgY2hhciAqdG1wX2V4 cF9idWY7CiArICAgICAgZW51bSBleHBfb3Bjb2RlIG9wY29kZTsKLSsgICAgICBpbnQgY3VyX3By ZWM7CisrICAgICAgZW51bSBzdGFwX29wZXJhbmRfcHJlYyBjdXJfcHJlYzsKICsKLSsgICAgICBp ZiAoIXN0YXBfaXNfb3BlcmF0b3IgKGV2YWxfaW5mby0+ZXhwX2J1ZikpCi0rCWVycm9yIChfKCJJ bnZhbGlkIG9wZXJhdG9yIGAlYycgb24gZXhwcmVzc2lvbiBgJXMnLiIpLAotKwkgICAgICAgKmV2 YWxfaW5mby0+ZXhwX2J1ZiwgZXZhbF9pbmZvLT5zYXZlZF9leHByKTsKKysgICAgICBpZiAoIXN0 YXBfaXNfb3BlcmF0b3IgKCpwLT5hcmcpKQorKwllcnJvciAoXygiSW52YWxpZCBvcGVyYXRvciBg JWMnIG9uIGV4cHJlc3Npb24gYCVzJy4iKSwgKnAtPmFyZywKKysJICAgICAgIHAtPnNhdmVkX2Fy Zyk7CiArCiArICAgICAgLyogV2UgaGF2ZSB0byBzYXZlIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRo ZSBleHByZXNzaW9uIGJ1ZmZlciBiZWNhdXNlCiArCSB0aGUgYHN0YXBfZ2V0X29wY29kZScgbW9k aWZpZXMgaXQgaW4gb3JkZXIgdG8gZ2V0IHRoZSBjdXJyZW50CiArCSBvcGVyYXRvci4gIElmIHRo aXMgb3BlcmF0b3IncyBwcmVjZWRlbmNlIGlzIGxvd2VyIHRoYW4gUFJFQywgd2UKICsJIHNob3Vs ZCByZXR1cm4gYW5kIG5vdCBhZHZhbmNlIHRoZSBleHByZXNzaW9uIGJ1ZmZlciBwb2ludGVyLiAg Ki8KLSsgICAgICB0bXBfZXhwX2J1ZiA9IGV2YWxfaW5mby0+ZXhwX2J1ZjsKKysgICAgICB0bXBf ZXhwX2J1ZiA9IHAtPmFyZzsKICsgICAgICBzdGFwX2dldF9vcGNvZGUgKCZ0bXBfZXhwX2J1Ziwg Jm9wY29kZSk7CiArCiArICAgICAgY3VyX3ByZWMgPSBzdGFwX2dldF9vcGVyYXRvcl9wcmVjIChv cGNvZGUpOwogKyAgICAgIGlmIChjdXJfcHJlYyA8IHByZWMpCiArCS8qIElmIHRoZSBwcmVjZWRl bmNlIG9mIHRoZSBvcGVyYXRvciB0aGF0IHdlIGFyZSBzZWVpbmcgbm93IGlzCiArCSAgIGxvd2Vy IHRoYW4gdGhlIHByZWNlZGVuY2Ugb2YgdGhlIGZpcnN0IG9wZXJhdG9yIHNlZW4gYmVmb3JlCi0r CSAgIHRoaXMgZXZhbHVhdGlvbiBwcm9jZXNzIGJlZ2FuLCBpdCBtZWFucyB3ZSBzaG91bGQgc3Rv cCBldmFsdWF0aW5nCisrCSAgIHRoaXMgcGFyc2luZyBwcm9jZXNzIGJlZ2FuLCBpdCBtZWFucyB3 ZSBzaG91bGQgc3RvcCBwYXJzaW5nCiArCSAgIGFuZCByZXR1cm4uICAqLwogKwlicmVhazsKICsK LSsgICAgICBldmFsX2luZm8tPmV4cF9idWYgPSB0bXBfZXhwX2J1ZjsKLSsgICAgICBldmFsX2lu Zm8tPmV4cF9idWYgPSBza2lwX3NwYWNlcyAoZXZhbF9pbmZvLT5leHBfYnVmKTsKKysgICAgICBw LT5hcmcgPSB0bXBfZXhwX2J1ZjsKKysgICAgICBpZiAocC0+aW5zaWRlX3BhcmVuX3ApCisrCXAt PmFyZyA9IHNraXBfc3BhY2VzX2NvbnN0IChwLT5hcmcpOwogKwotKyAgICAgIC8qIEV2YWx1YXRl IHRoZSByaWdodC1zaWRlIG9mIHRoZSBleHByZXNzaW9uLiAgKi8KLSsgICAgICByaHMgPSBzdGFw X2V2YWx1YXRlX2NvbmRpdGlvbmFsbHkgKGV2YWxfaW5mbyk7CisrICAgICAgLyogUGFyc2UgdGhl IHJpZ2h0LXNpZGUgb2YgdGhlIGV4cHJlc3Npb24uICAqLworKyAgICAgIHN0YXBfcGFyc2VfYXJn dW1lbnRfY29uZGl0aW9uYWxseSAocCk7CiArCi0rICAgICAgLyogV2hpbGUgd2Ugc3RpbGwgaGF2 ZSBvcGVyYXRvcnMsIHRyeSB0byBldmFsdWF0ZSBhbm90aGVyCisrICAgICAgLyogV2hpbGUgd2Ug c3RpbGwgaGF2ZSBvcGVyYXRvcnMsIHRyeSB0byBwYXJzZSBhbm90aGVyCiArCSByaWdodC1zaWRl LCBidXQgdXNpbmcgdGhlIGN1cnJlbnQgcmlnaHQtc2lkZSBhcyBhIGxlZnQtc2lkZS4gICovCi0r ICAgICAgd2hpbGUgKCpldmFsX2luZm8tPmV4cF9idWYKLSsJICAgICAmJiBzdGFwX2lzX29wZXJh dG9yIChldmFsX2luZm8tPmV4cF9idWYpKQorKyAgICAgIHdoaWxlICgqcC0+YXJnICYmIHN0YXBf aXNfb3BlcmF0b3IgKCpwLT5hcmcpKQogKwl7CiArCSAgZW51bSBleHBfb3Bjb2RlIGxvb2thaGVh ZF9vcGNvZGU7Ci0rCSAgaW50IGxvb2thaGVhZF9wcmVjOworKwkgIGVudW0gc3RhcF9vcGVyYW5k X3ByZWMgbG9va2FoZWFkX3ByZWM7CiArCiArCSAgLyogU2F2aW5nIHRoZSBjdXJyZW50IGV4cHJl c3Npb24gYnVmZmVyIHBvc2l0aW9uLiAgVGhlIGV4cGxhbmF0aW9uCiArCSAgICAgaXMgdGhlIHNh bWUgYXMgYWJvdmUuICAqLwotKwkgIHRtcF9leHBfYnVmID0gZXZhbF9pbmZvLT5leHBfYnVmOwor KwkgIHRtcF9leHBfYnVmID0gcC0+YXJnOwogKwkgIHN0YXBfZ2V0X29wY29kZSAoJnRtcF9leHBf YnVmLCAmbG9va2FoZWFkX29wY29kZSk7CiArCSAgbG9va2FoZWFkX3ByZWMgPSBzdGFwX2dldF9v cGVyYXRvcl9wcmVjIChsb29rYWhlYWRfb3Bjb2RlKTsKICsKQEAgLTg4MzIsMTU4ICs5NDcxLDM1 NSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc3RhcC1wcm9iZS5jCiArCSAgICAg ICB0aGFuIHRoZSBmaXJzdCBvbmUsIGp1c3QgYWJhbmRvbiB0aGUgYXR0ZW1wdC4gICovCiArCSAg ICBicmVhazsKICsKLSsJICByaHMgPSBzdGFwX2V2YWx1YXRlX3Byb2JlX2FyZ3VtZW50XzIgKGV2 YWxfaW5mbywKLSsJCQkJCQlyaHMsIGxvb2thaGVhZF9wcmVjKTsKKysJICAvKiBQYXJzZSB0aGUg cmlnaHQtc2lkZSBvZiB0aGUgZXhwcmVzc2lvbiwgYnV0IHNpbmNlIHdlIGFscmVhZHkKKysJICAg ICBoYXZlIGEgbGVmdC1zaWRlIGF0IHRoaXMgcG9pbnQsIHNldCBgaGFzX2xocycgdG8gMS4gICov CisrCSAgc3RhcF9wYXJzZV9hcmd1bWVudF8xIChwLCAxLCBsb29rYWhlYWRfcHJlYyk7CiArCX0K ICsKLSsgICAgICAvKiBOb3csICJqb2luIiBib3RoIGxlZnQgYW5kIHJpZ2h0IHNpZGVzIGludG8g b25lIGxlZnQtc2lkZSwgdXNpbmcKLSsJIHRoZSBzcGVjaWZpZWQgb3BlcmF0b3IuICAqLwotKyAg ICAgIGlmIChjb21waWxpbmdfcCkKLSsJc3RhcF9vcGNvZGVfdG9fYXggKGV2YWxfaW5mbywgb3Bj b2RlKTsKLSsgICAgICBlbHNlCi0rCWxocyA9IHZhbHVlX2Jpbm9wIChsaHMsIHJocywgb3Bjb2Rl KTsKKysgICAgICB3cml0ZV9leHBfZWx0X29wY29kZSAob3Bjb2RlKTsKKysgICAgfQorK30KKysK KysvKiBQYXJzZSBhIHByb2JlJ3MgYXJndW1lbnQuCisrCisrICAgQXNzdW1pbmcgdGhhdDoKKysK KysgICBMUCA9IGxpdGVyYWwgaW50ZWdlciBwcmVmaXgKKysgICBMUyA9IGxpdGVyYWwgaW50ZWdl ciBzdWZpeAorKworKyAgIFJQID0gcmVnaXN0ZXIgcHJlZml4CisrICAgUlMgPSByZWdpc3RlciBz dWZpeAorKworKyAgIFJJUCA9IHJlZ2lzdGVyIGluZGlyZWN0aW9uIHByZWZpeAorKyAgIFJJUyA9 IHJlZ2lzdGVyIGluZGlyZWN0aW9uIHN1Zml4CisrCisrICAgVGhpcyByb3V0aW5lIGFzc3VtZXMg dGhhdCBhcmd1bWVudHMnIHRva2VucyBhcmUgb2YgdGhlIGZvcm06CisrCisrICAgLSBbTFBdIE5V TUJFUiBbTFNdCisrICAgLSBbUlBdIFJFR0lTVEVSIFtSU10KKysgICAtIFtSSVBdIFtSUF0gUkVH SVNURVIgW1JTXSBbUklTXQorKyAgIC0gSWYgd2UgZmluZCBhIG51bWJlciB3aXRob3V0IExQLCB3 ZSB0cnkgdG8gcGFyc2UgaXQgYXMgYSBsaXRlcmFsIGludGVnZXIKKysgICBjb25zdGFudCAoaWYg TFAgPT0gTlVMTCksIG9yIGFzIGEgcmVnaXN0ZXIgZGlzcGxhY2VtZW50LgorKyAgIC0gV2UgY291 bnQgcGFyZW50aGVzaXMsIGFuZCBvbmx5IHNraXAgd2hpdGVzcGFjZXMgaWYgd2UgYXJlIGluc2lk ZSB0aGVtLgorKyAgIC0gSWYgd2UgZmluZCBhbiBvcGVyYXRvciwgd2Ugc2tpcCBpdC4KKysKKysg ICBUaGlzIGZ1bmN0aW9uIGNhbiBhbHNvIGNhbGwgYSBzcGVjaWFsIGZ1bmN0aW9uIHRoYXQgd2ls bCB0cnkgdG8gbWF0Y2gKKysgICB1bmtub3duIHRva2Vucy4gIEl0IHdpbGwgcmV0dXJuIDEgaWYg dGhlIGFyZ3VtZW50IGhhcyBiZWVuIHBhcnNlZAorKyAgIHN1Y2Nlc3NmdWxseSwgb3IgemVybyBv dGhlcndpc2UuICAqLworKworK3N0YXRpYyBpbnQKKytzdGFwX3BhcnNlX2FyZ3VtZW50IChjb25z dCBjaGFyICoqYXJnLCBzdHJ1Y3QgdHlwZSAqYXR5cGUsCisrCQkgICAgIHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoKQorK3sKKysgIHN0cnVjdCBzdGFwX3BhcnNlX2luZm8gcDsKKysgIHZvbGF0aWxl IHN0cnVjdCBnZGJfZXhjZXB0aW9uIGU7CisrCisrICAvKiBXZSBuZWVkIHRvIGluaXRpYWxpemUg dGhlIGV4cHJlc3Npb24gYnVmZmVyLCBpbiBvcmRlciB0byBiZWdpbgorKyAgICAgb3VyIHBhcnNp bmcgZWZmb3J0cy4gIFRoZSBsYW5ndWFnZSBoZXJlIGRvZXMgbm90IG1hdHRlciwgc2luY2Ugd2UK KysgICAgIGFyZSB1c2luZyBvdXIgb3duIHBhcnNlci4gICovCisrICBpbml0aWFsaXplX2V4cG91 dCAoMTAsIGN1cnJlbnRfbGFuZ3VhZ2UsIGdkYmFyY2gpOworKworKyAgcC5zYXZlZF9hcmcgPSAq YXJnOworKyAgcC5hcmcgPSAqYXJnOworKyAgcC5hcmdfdHlwZSA9IGF0eXBlOworKyAgcC5nZGJh cmNoID0gZ2RiYXJjaDsKKysgIHAuaW5zaWRlX3BhcmVuX3AgPSAwOworKworKyAgVFJZX0NBVENI IChlLCBSRVRVUk5fTUFTS19FUlJPUikKKysgICAgeworKyAgICAgIHN0YXBfcGFyc2VfYXJndW1l bnRfMSAoJnAsIDAsIFNUQVBfT1BFUkFORF9QUkVDX05PTkUpOwogKyAgICB9CisrICBpZiAoZS5y ZWFzb24gPCAwKQorKyAgICB7CisrICAgICAgeGZyZWUgKGV4cG91dCk7CisrICAgICAgcmV0dXJu IDA7CisrICAgIH0KKysKKysgIGdkYl9hc3NlcnQgKHAuaW5zaWRlX3BhcmVuX3AgPT0gMCk7CiAr Ci0rICByZXR1cm4gbGhzOworKyAgLyogQ2FzdGluZyB0aGUgZmluYWwgZXhwcmVzc2lvbiB0byB0 aGUgYXBwcm9wcmlhdGUgdHlwZS4gICovCisrICB3cml0ZV9leHBfZWx0X29wY29kZSAoVU5PUF9D QVNUKTsKKysgIHdyaXRlX2V4cF9lbHRfdHlwZSAoYXR5cGUpOworKyAgd3JpdGVfZXhwX2VsdF9v cGNvZGUgKFVOT1BfQ0FTVCk7CisrCisrICByZWFsbG9jYXRlX2V4cG91dCAoKTsKKysKKysgIHAu YXJnID0gc2tpcF9zcGFjZXNfY29uc3QgKHAuYXJnKTsKKysgICphcmcgPSBwLmFyZzsKKysKKysg IHJldHVybiAxOwogK30KICsKLSsvKiBUaGlzIGZ1bmN0aW9uIGZpbGxzIHRoZSBuZWNlc3Nhcnkg YXJndW1lbnRzIGZvciB0aGUgZXZhbHVhdGlvbiBmdW5jdGlvbgotKyAgIHRvIHdvcmsuICAqLwor Ky8qIEhlbHBlciBmdW5jdGlvbiB3aGljaCBpcyByZXNwb25zaWJsZSBmb3IgZnJlZWluZyB0aGUg c3BhY2UgYWxsb2NhdGVkIHRvCisrICAgaG9sZCBpbmZvcm1hdGlvbiBhYm91dCBhIHByb2JlJ3Mg YXJndW1lbnRzLiAgKi8KICsKLStzdGF0aWMgc3RydWN0IHZhbHVlICoKLStzdGFwX2V2YWx1YXRl X3Byb2JlX2FyZ3VtZW50XzEgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotKwkJCQljb25zdCBz dHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmUsCi0rCQkJCXN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwK LSsJCQkJaW50IG4pCisrc3RhdGljIHZvaWQKKytzdGFwX2ZyZWVfYXJnc19pbmZvICh2b2lkICph cmdzX2luZm9fcHRyKQorK3sKKysgIHN0cnVjdCBzdGFwX2FyZ3NfaW5mbyAqYSA9IChzdHJ1Y3Qg c3RhcF9hcmdzX2luZm8gKikgYXJnc19pbmZvX3B0cjsKKysgIGludCBpOworKworKyAgZm9yIChp ID0gMDsgaSA8IGEtPm5fYXJnczsgaSsrKQorKyAgICB4ZnJlZSAoYS0+YXJnc1tpXS5hZXhwcik7 CisrCisrICB4ZnJlZSAoYS0+YXJncyk7CisrICB4ZnJlZSAoYSk7CisrfQorKworKy8qIEZ1bmN0 aW9uIHdoaWNoIHBhcnNlcyBhbiBhcmd1bWVudCBzdHJpbmcgZnJvbSBQUk9CRSwgY29ycmVjdGx5 IHNwbGl0dGluZworKyAgIHRoZSBhcmd1bWVudHMgYW5kIHN0b3JpbmcgdGhlaXIgaW5mb3JtYXRp b24gaW4gcHJvcGVybHkgd2F5cy4KKysKKysgICBDb25zaWRlciB0aGUgZm9sbG93aW5nIGFyZ3Vt ZW50IHN0cmluZyAoeDg2IHN5bnRheCk6CisrCisrICAgYDRAJWVheCA0QCQxMCcKKysKKysgICBX ZSBoYXZlIHR3byBhcmd1bWVudHMsIGAlZWF4JyBhbmQgYCQxMCcsIGJvdGggd2l0aCAzMi1iaXQg dW5zaWduZWQgYml0bmVzcy4KKysgICBUaGlzIGZ1bmN0aW9uIGJhc2ljYWxseSBoYW5kbGVzIHRo ZW0sIHByb3Blcmx5IGZpbGxpbmcgc29tZSBzdHJ1Y3R1cmVzIHdpdGgKKysgICB0aGlzIGluZm9y bWF0aW9uLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3N0YXBfcGFyc2VfcHJvYmVfYXJndW1lbnRz IChzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmUpCiArewotKyAgc3RydWN0IHN0YXBfZXZhbHVhdGlv bl9pbmZvIGV2YWxfaW5mbzsKLSsgIGNoYXIgKnMgPSAoY2hhciAqKSBwcm9iZS0+cGFyc2VkX2Fy Z3MtPmFyZ1tuXS5hcmdfc3RyOwotKyAgc3RydWN0IHZhbHVlICpyZXMsICp2c1s0XTsKKysgIHN0 cnVjdCBzdGFwX2FyZ3NfaW5mbyAqYXJnc19pbmZvOworKyAgc3RydWN0IGNsZWFudXAgKmJhY2tf dG87CisrICBjb25zdCBjaGFyICpjdXIgPSBwcm9iZS0+YXJnczsKKysgIGludCBjdXJyZW50X2Fy ZyA9IC0xOworKyAgLyogVGhpcyBpcyBhIHN0YXRlLW1hY2hpbmUgcGFyc2VyLCB3aGljaCBtZWFu cyB3ZSB3aWxsIGFsd2F5cyBiZQorKyAgICAgaW4gYSBrbm93biBzdGF0ZSB3aGVuIHBhcnNpbmcg YW4gYXJndW1lbnQuICBUaGUgc3RhdGUgY291bGQgYmUKKysgICAgIGVpdGhlciBgTkVXX0FSRycg aWYgd2UgYXJlIHBhcnNpbmcgYSBuZXcgYXJndW1lbnQsIGBCSVRORVNTJyBpZgorKyAgICAgd2Ug YXJlIHBhcnNpbmcgdGhlIGJpdG5lc3MtZGVmaW5pdGlvbiBwYXJ0IChpLmUuLCBgNEAnKSwgb3IK KysgICAgIGBQQVJTRV9BUkcnIGlmIHdlIGFyZSBhY3R1YWxseSBwYXJzaW5nIHRoZSBhcmd1bWVu dCBwYXJ0LiAgKi8KKysgIGVudW0KKysgICAgeworKyAgICAgIE5FV19BUkcsCisrICAgICAgQklU TkVTUywKKysgICAgICBQQVJTRV9BUkcsCisrICAgIH0gY3VycmVudF9zdGF0ZTsKKysKKysgIC8q IEZvciBub3csIHdlIGFzc3VtZSBldmVyeXRoaW5nIGlzIG5vdCBnb2luZyB0byB3b3JrLiAgKi8K KysgIHByb2JlLT5wYXJzZWRfYXJncyA9ICZkdW1teV9zdGFwX2FyZ3NfaW5mbzsKKysKKysgIGlm ICghY3VyIHx8ICEqY3VyIHx8ICpjdXIgPT0gJzonKQorKyAgICByZXR1cm47CisrCisrICBhcmdz X2luZm8gPSB4bWFsbG9jIChzaXplb2YgKHN0cnVjdCBzdGFwX2FyZ3NfaW5mbykpOworKyAgYXJn c19pbmZvLT5uX2FyZ3MgPSAwOworKyAgYmFja190byA9IG1ha2VfY2xlYW51cCAoc3RhcF9mcmVl X2FyZ3NfaW5mbywgYXJnc19pbmZvKTsKKysgIGFyZ3NfaW5mby0+YXJncyA9IHhjYWxsb2MgKFNU QVBfTUFYX0FSR1MsIHNpemVvZiAoc3RydWN0IHN0YXBfcHJvYmVfYXJnKSk7CisrCisrICAvKiBP aywgbGV0J3Mgc3RhcnQuICAqLworKyAgY3VycmVudF9zdGF0ZSA9IE5FV19BUkc7CisrCisrICB3 aGlsZSAoKmN1cikKKysgICAgeworKyAgICAgIHN3aXRjaCAoY3VycmVudF9zdGF0ZSkKKysJewor KwljYXNlIE5FV19BUkc6CisrCSAgKytjdXJyZW50X2FyZzsKKysKKysJICBpZiAoY3VycmVudF9h cmcgPj0gU1RBUF9NQVhfQVJHUykKKysJICAgIHsKKysJICAgICAgY29tcGxhaW50ICgmc3ltZmls ZV9jb21wbGFpbnRzLAorKwkJCSBfKCJwcm9iZSBgJXMnIGhhcyBtb3JlIGFyZ3VtZW50cyB0aGFu IHRoZSBtYXhpbXVtICIKKysJCQkgICAiYWxsb3dlZCIpLCBwcm9iZS0+bmFtZSk7CisrCSAgICAg IGRvX2NsZWFudXBzIChiYWNrX3RvKTsKKysJICAgICAgcmV0dXJuOworKwkgICAgfQorKworKwkg IGN1cnJlbnRfc3RhdGUgPSBCSVRORVNTOworKwkgIGJyZWFrOworKworKwljYXNlIEJJVE5FU1M6 CisrCSAgICB7CisrCSAgICAgIGVudW0gc3RhcF9hcmdfYml0bmVzcyBiOworKwkgICAgICBpbnQg Z290X21pbnVzID0gMDsKKysKKysJICAgICAgLyogV2UgZXhwZWN0IHRvIGZpbmQgc29tZXRoaW5n IGxpa2U6CisrCisrCQkgTkBPUAorKworKwkJIFdoZXJlIGBOJyBjYW4gYmUgWyssLV1bNCw4XS4g IFRoaXMgaXMgbm90IG1hbmRhdG9yeSwgc28KKysJCSB3ZSBjaGVjayBpdCBoZXJlLiAgSWYgd2Ug ZG9uJ3QgZmluZCBpdCwgZ28gdG8gdGhlIG5leHQKKysJCSBzdGF0ZS4gICovCisrCSAgICAgIGlm ICgoKmN1ciA9PSAnLScgJiYgY3VyWzFdICYmIGN1clsyXSAhPSAnQCcpCisrCQkgICYmIGN1clsx XSAhPSAnQCcpCisrCQl7CisrCQkgIGN1cnJlbnRfc3RhdGUgPSBQQVJTRV9BUkc7CisrCQkgIGFy Z3NfaW5mby0+YXJnc1tjdXJyZW50X2FyZ10uYml0bmVzcworKwkJICAgID0gU1RBUF9BUkdfQklU TkVTU19VTkRFRklORUQ7CisrCQkgIGJyZWFrOworKwkJfQorKworKwkgICAgICBpZiAoKmN1ciA9 PSAnLScpCisrCQl7CisrCQkgIC8qIERpc2NhcmQgdGhlIGAtJy4gICovCisrCQkgICsrY3VyOwor KwkJICBnb3RfbWludXMgPSAxOworKwkJfQorKworKwkgICAgICBpZiAoKmN1ciA9PSAnNCcpCisr CQliID0gZ290X21pbnVzID8gU1RBUF9BUkdfQklUTkVTU18zMkJJVF9TSUdORUQKKysJCSAgOiBT VEFQX0FSR19CSVRORVNTXzMyQklUX1VOU0lHTkVEOworKwkgICAgICBlbHNlIGlmICgqY3VyID09 ICc4JykKKysJCWIgPSBnb3RfbWludXMgPyBTVEFQX0FSR19CSVRORVNTXzY0QklUX1NJR05FRAor KwkJICA6IFNUQVBfQVJHX0JJVE5FU1NfNjRCSVRfVU5TSUdORUQ7CisrCSAgICAgIGVsc2UKKysJ CXsKKysJCSAgLyogV2UgaGF2ZSBhbiBlcnJvciwgYmVjYXVzZSB3ZSBkb24ndCBleHBlY3QgYW55 dGhpbmcKKysJCSAgICAgZXhjZXB0IDQgYW5kIDguICAqLworKwkJICBjb21wbGFpbnQgKCZzeW1m aWxlX2NvbXBsYWludHMsCisrCQkJICAgICBfKCJ1bnJlY29nbml6ZWQgYml0bmVzcyBgJWMnIGZv ciBwcm9iZSBgJXMnIiksCisrCQkJICAgICAqY3VyLCBwcm9iZS0+bmFtZSk7CisrCQkgIGRvX2Ns ZWFudXBzIChiYWNrX3RvKTsKKysJCSAgcmV0dXJuOworKwkJfQorKworKwkgICAgICBhcmdzX2lu Zm8tPmFyZ3NbY3VycmVudF9hcmddLmJpdG5lc3MgPSBiOworKwkgICAgICBhcmdzX2luZm8tPmFy Z3NbY3VycmVudF9hcmddLmF0eXBlCisrCQk9IHN0YXBfZ2V0X2V4cGVjdGVkX2FyZ3VtZW50X3R5 cGUgKHByb2JlLT5nZGJhcmNoLCBiKTsKKysJICAgICAgLyogRGlzY2FyZCB0aGUgbnVtYmVyIGFu ZCB0aGUgYEAnIHNpZ24uICAqLworKwkgICAgICBjdXIgKz0gMjsKKysJICAgICAgLyogTW92ZSBv bi4gICovCisrCSAgICAgIGN1cnJlbnRfc3RhdGUgPSBQQVJTRV9BUkc7CisrCSAgICB9CisrCSAg YnJlYWs7CisrCisrCWNhc2UgUEFSU0VfQVJHOgorKwkgICAgeworKwkgICAgICBpZiAoIXN0YXBf cGFyc2VfYXJndW1lbnQgKCZjdXIsCisrCQkJCQlhcmdzX2luZm8tPmFyZ3NbY3VycmVudF9hcmdd LmF0eXBlLAorKwkJCQkJcHJvYmUtPmdkYmFyY2gpKQorKwkJeworKwkJICAvKiBXZSBoYXZlIHRy aWVkIHRvIHBhcnNlIHRoaXMgYXJndW1lbnQsIGJ1dCBpdCdzCisrCQkgICAgIG1hbGZvcm1lZC4g IFRoaXMgaXMgYW4gZXJyb3IuICAqLworKwkJICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWlu dHMsCisrCQkJICAgICBfKCJtYWxmb3JtZWQgYXJndW1lbnQgZm9yIHByb2JlIGAlcyciKSwKKysJ CQkgICAgIHByb2JlLT5uYW1lKTsKKysJCSAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOworKwkJICBy ZXR1cm47CisrCQl9CisrCisrCSAgICAgIGlmIChzdGFwX2V4cHJlc3Npb25fZGVidWcpCisrCQlk dW1wX3Jhd19leHByZXNzaW9uIChleHBvdXQsIGdkYl9zdGRsb2csCisrCQkJCSAgICAgImJlZm9y ZSBjb252ZXJzaW9uIHRvIHByZWZpeCBmb3JtIik7CisrCisrCSAgICAgIHByZWZpeGlmeV9leHBy ZXNzaW9uIChleHBvdXQpOworKworKwkgICAgICBpZiAoc3RhcF9leHByZXNzaW9uX2RlYnVnKQor KwkJZHVtcF9wcmVmaXhfZXhwcmVzc2lvbiAoZXhwb3V0LCBnZGJfc3RkbG9nKTsKKysKKysJICAg ICAgYXJnc19pbmZvLT5hcmdzW2N1cnJlbnRfYXJnXS5hZXhwciA9IGV4cG91dDsKKysJICAgICAg ZXhwb3V0ID0gTlVMTDsKKysKKysJICAgICAgKythcmdzX2luZm8tPm5fYXJnczsKKysJICAgICAg LyogU3RhcnQgaXQgb3ZlciBhZ2Fpbi4gICovCisrCSAgICAgIGN1ciA9IHNraXBfc3BhY2VzX2Nv bnN0IChjdXIpOworKwkgICAgICBjdXJyZW50X3N0YXRlID0gTkVXX0FSRzsKKysJICAgIH0KKysJ ICBicmVhazsKKysJfQorKworKyAgICAgIGlmICghKmN1ciAmJiBjdXJyZW50X3N0YXRlICE9IE5F V19BUkcpCisrCXsKKysJICAvKiBXZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGFyZ3VtZW50IHN0 cmluZywgYnV0IHdlJ3JlCisrCSAgICAgc3RpbGwgaW4gdGhlIG1pZGRsZSBvZiB0aGUgcHJvY2Vz cyBvZiBwYXJzaW5nIGFuIGFyZ3VtZW50LgorKwkgICAgIEl0IG1lYW5zIHRoZSBhcmd1bWVudCBz dHJpbmcgaXMgbWFsZm9ybWVkLiAgKi8KKysJICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWlu dHMsCisrCQkgICAgIF8oIm1hbGZvcm1lZCBhcmd1bWVudCBmb3IgcHJvYmUgYCVzJyIpLAorKwkJ ICAgICBwcm9iZS0+bmFtZSk7CisrCSAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOworKwkgIHJldHVy bjsKKysJfQorKyAgICB9CisrCisrICBhcmdzX2luZm8tPmFyZ3MgPSB4cmVhbGxvYyAoYXJnc19p bmZvLT5hcmdzLAorKwkJCSAgICAgIGFyZ3NfaW5mby0+bl9hcmdzCisrCQkJICAgICAgKiBzaXpl b2YgKHN0cnVjdCBzdGFwX3Byb2JlX2FyZykpOworKyAgYXJnc19pbmZvLT5wcm9iZSA9IHByb2Jl OworKworKyAgcHJvYmUtPnBhcnNlZF9hcmdzID0gYXJnc19pbmZvOworKworKyAgZGlzY2FyZF9j bGVhbnVwcyAoYmFja190byk7CisrfQorKworKy8qIFNlZSBkZWZpbml0aW9uIGluIHN0YXAtcHJv YmUuaC4gICovCiArCi0rICAvKiBGaWxsaW5nIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBmb3IgZXZh bHVhdGlvbiBmdW5jdGlvbi4gICovCi0rICBldmFsX2luZm8uc2F2ZWRfZXhwciA9IHM7Ci0rICBl dmFsX2luZm8uZXhwX2J1ZiA9IHM7Ci0rICBldmFsX2luZm8uZ2RiYXJjaCA9IGdldF9vYmpmaWxl X2FyY2ggKG9iamZpbGUpOwotKyAgZXZhbF9pbmZvLmZyYW1lID0gZnJhbWU7Ci0rICBldmFsX2lu Zm8uYml0bmVzcyA9IHByb2JlLT5wYXJzZWRfYXJncy0+YXJnW25dLmJpdG5lc3M7Ci0rICAvKiBX ZSBhcmUgbm90IGNvbXBpbGluZyB0byBhbiBhZ2VudCBleHByZXNzaW9uLiAgKi8KLSsgIGV2YWxf aW5mby5hZXhwciA9IE5VTEw7Ci0rICBldmFsX2luZm8uYXZhbHVlID0gTlVMTDsKKytpbnQKKytz dGFwX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCAoc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlKQor K3sKKysgIGlmICghcHJvYmUtPnBhcnNlZF9hcmdzKQorKyAgICBzdGFwX3BhcnNlX3Byb2JlX2Fy Z3VtZW50cyAocHJvYmUpOwogKwotKyAgcmVzID0gc3RhcF9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVu dF8yICgmZXZhbF9pbmZvLAotKwkJCQkJLypsaHM9Ki9OVUxMLCAvKnByZWM9Ki8wKTsKKysgIHJl dHVybiBwcm9iZS0+cGFyc2VkX2FyZ3MtPm5fYXJnczsKKyt9CiArCi0rICBpZiAoIXJlcykKLSsg ICAgZXJyb3IgKF8oIkNvdWxkIG5vdCBldmFsdWF0ZSBleHByZXNzaW9uIGAlcycuIiksCi0rCSAg IGV2YWxfaW5mby5zYXZlZF9leHByKTsKKysvKiBSZXR1cm4gMSBpZiBPUCBpcyBhIHZhbGlkIG9w ZXJhdG9yIGluc2lkZSBhIHByb2JlIGFyZ3VtZW50LCBvciB6ZXJvCisrICAgb3RoZXJ3aXNlLiAg Ki8KICsKLSsgIHJldHVybiByZXM7Cisrc3RhdGljIGludAorK3N0YXBfaXNfb3BlcmF0b3IgKGNo YXIgb3ApCisreworKyAgcmV0dXJuIChvcCA9PSAnKycgfHwgb3AgPT0gJy0nIHx8IG9wID09ICcq JyB8fCBvcCA9PSAnLycKKysJICB8fCBvcCA9PSAnPicgfHwgb3AgPT0gJzwnIHx8IG9wID09ICch JyB8fCBvcCA9PSAnXicKKysJICB8fCBvcCA9PSAnfCcgfHwgb3AgPT0gJyYnIHx8IG9wID09ICcl JyB8fCBvcCA9PSAnPScpOwogK30KICsKICsvKiBTZWUgZGVmaW5pdGlvbiBpbiBzdGFwLXByb2Jl LmguICAqLwogKwogK3N0cnVjdCB2YWx1ZSAqCiArc3RhcF9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVu dCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0rCQkJICAgICAgY29uc3Qgc3RydWN0IHN0YXBf cHJvYmUgKnByb2JlLAorKwkJCSAgICAgIHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSwKICsJCQkg ICAgICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCiArCQkJICAgICAgaW50IG4pCiAreworKyAg aW50IHBvcyA9IDA7CisrCiArICBpZiAoIXByb2JlLT5wYXJzZWRfYXJncykKLSsgICAgc3RhcF9w YXJzZV9wcm9iZV9hcmd1bWVudHMgKChzdHJ1Y3Qgc3RhcF9wcm9iZSAqKSBwcm9iZSk7CisrICAg IHN0YXBfcGFyc2VfcHJvYmVfYXJndW1lbnRzIChwcm9iZSk7CiArCi0rICBpZiAoIXByb2JlLT5w YXJzZWRfYXJncy0+YXJnCisrICBpZiAoIXByb2JlLT5wYXJzZWRfYXJncy0+YXJncwogKyAgICAg IHx8IG4gPj0gcHJvYmUtPnBhcnNlZF9hcmdzLT5uX2FyZ3MpCiArICAgIHJldHVybiBOVUxMOwog KwotKyAgcmV0dXJuIHN0YXBfZXZhbHVhdGVfcHJvYmVfYXJndW1lbnRfMSAob2JqZmlsZSwgcHJv YmUsIGZyYW1lLCBuKTsKLSt9Ci0rCi0rLyogSGVscGVyIGZ1bmN0aW9uIHdoaWNoIGNvbXBpbGVz IHRoZSBwcm9iZSdzIGFyZ3VtZW50IE4gaW50byBhbgotKyAgIGFnZW50IGV4cHJlc3Npb24sIHN1 aXRhYmxlIGZvciB1c2luZyB3aXRoIHRyYWNlcG9pbnRzLiAgKi8KLSsKLStzdGF0aWMgdm9pZAot K3N0YXBfY29tcGlsZV90b19heF8xIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJCSAgICAg IGNvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSwKLSsJCSAgICAgIHN0cnVjdCBhZ2VudF9l eHByICpleHByLAotKwkJICAgICAgc3RydWN0IGF4c192YWx1ZSAqdmFsdWUsCi0rCQkgICAgICBp bnQgbikKLSt7Ci0rICBzdHJ1Y3Qgc3RhcF9ldmFsdWF0aW9uX2luZm8gZXZhbF9pbmZvOwotKyAg c3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBleHByLT5nZGJhcmNoOwotKyAgY2hhciAqcyA9IChj aGFyICopIHByb2JlLT5wYXJzZWRfYXJncy0+YXJnW25dLmFyZ19zdHI7Ci0rCi0rICAvKiBGaWxs aW5nIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBmb3IgZXZhbHVhdGlvbiBmdW5jdGlvbi4gICovCi0r ICBldmFsX2luZm8uc2F2ZWRfZXhwciA9IHM7Ci0rICBldmFsX2luZm8uZXhwX2J1ZiA9IHM7Ci0r ICBldmFsX2luZm8uZ2RiYXJjaCA9IGV4cHItPmdkYmFyY2g7Ci0rICBldmFsX2luZm8uZnJhbWUg PSBOVUxMOwotKyAgZXZhbF9pbmZvLmJpdG5lc3MgPSBwcm9iZS0+cGFyc2VkX2FyZ3MtPmFyZ1tu XS5iaXRuZXNzOwotKyAgLyogV2UgYXJlIGNvbXBpbGluZyB0byBhbiBhZ2VudCBleHByZXNzaW9u LiAgKi8KLSsgIGV2YWxfaW5mby5hZXhwciA9IGV4cHI7Ci0rICBldmFsX2luZm8uYXZhbHVlID0g dmFsdWU7Ci0rCi0rICAvKiBXZSBjYW4gYWx3YXlzIHVzZSB0aGlzIGtpbmQuICAqLwotKyAgdmFs dWUtPmtpbmQgPSBheHNfcnZhbHVlOwotKwotKyAgLyogRmlndXJpbmcgb3V0IHRoZSBjb3JyZWN0 IHR5cGUgZm9yIHRoaXMgYXhzX3ZhbHVlLiAgKi8KLSsgIHN3aXRjaCAoZXZhbF9pbmZvLmJpdG5l c3MpCi0rICAgIHsKLSsgICAgY2FzZSBTVEFQX0FSR19CSVRORVNTX1VOREVGSU5FRDoKLSsgICAg ICBpZiAoZ2RiYXJjaF9hZGRyX2JpdCAoZ2RiYXJjaCkgPT0gMzIpCi0rCXZhbHVlLT50eXBlID0g YnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl91aW50MzI7Ci0rICAgICAgZWxzZQotKwl2 YWx1ZS0+dHlwZSA9IGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fdWludDY0OwotKyAg ICAgIGJyZWFrOwotKwotKyAgICBjYXNlIFNUQVBfQVJHX0JJVE5FU1NfMzJCSVRfU0lHTkVEOgot KyAgICAgIHZhbHVlLT50eXBlID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9pbnQz MjsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBTVEFQX0FSR19CSVRORVNTXzMyQklUX1VO U0lHTkVEOgotKyAgICAgIHZhbHVlLT50eXBlID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVp bHRpbl91aW50MzI7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgU1RBUF9BUkdfQklUTkVT U182NEJJVF9TSUdORUQ6Ci0rICAgICAgdmFsdWUtPnR5cGUgPSBidWlsdGluX3R5cGUgKGdkYmFy Y2gpLT5idWlsdGluX2ludDY0OwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIFNUQVBfQVJH X0JJVE5FU1NfNjRCSVRfVU5TSUdORUQ6Ci0rICAgICAgdmFsdWUtPnR5cGUgPSBidWlsdGluX3R5 cGUgKGdkYmFyY2gpLT5idWlsdGluX3VpbnQ2NDsKLSsgICAgICBicmVhazsKLSsKLSsgICAgZGVm YXVsdDoKLSsgICAgICBpbnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLAotKwkJICAg ICAgXygiVW5kZWZpbmVkIGJpdG5lc3MgZm9yIHByb2JlLiIpKTsKLSsgICAgICBicmVhazsKLSsg ICAgfQorKyAgLyogVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBvbiBzb21lIGFyY2hpdGVjdHVyZXMg KGUuZy4sIEFSTSkgd2UgbmVlZAorKyAgICAgdGhlIGZyYW1lJ3MgZ2RiYXJjaCBpbiBvcmRlciB0 byBjb21wdXRlIHRoZSB2YWx1ZSBvZiB0aGUgZnJhbWUKKysgICAgIHBvaW50ZXIuICAqLworKyAg cHJvYmUtPnBhcnNlZF9hcmdzLT5hcmdzW25dLmFleHByLT5nZGJhcmNoID0gZ2V0X2ZyYW1lX2Fy Y2ggKGZyYW1lKTsKICsKLSsgIHN0YXBfZXZhbHVhdGVfcHJvYmVfYXJndW1lbnRfMiAoJmV2YWxf aW5mbywKLSsJCQkJICAvKmxocz0qL05VTEwsIC8qcHJlYz0qLzApOworKyAgcmV0dXJuIGV2YWx1 YXRlX3N1YmV4cF9zdGFuZGFyZCAocHJvYmUtPnBhcnNlZF9hcmdzLT5hcmdzW25dLmF0eXBlLAor KwkJCQkgICBwcm9iZS0+cGFyc2VkX2FyZ3MtPmFyZ3Nbbl0uYWV4cHIsCisrCQkJCSAgICZwb3Ms IEVWQUxfTk9STUFMKTsKICt9CiArCiArLyogU2VlIGRlZmluaXRpb24gaW4gc3RhcC1wcm9iZS5o LiAgKi8KICsKICt2b2lkCiArc3RhcF9jb21waWxlX3RvX2F4IChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwKLSsJCSAgICBjb25zdCBzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmUsCisrCQkgICAgc3Ry dWN0IHN0YXBfcHJvYmUgKnByb2JlLAogKwkJICAgIHN0cnVjdCBhZ2VudF9leHByICpleHByLAog KwkJICAgIHN0cnVjdCBheHNfdmFsdWUgKnZhbHVlLAogKwkJICAgIGludCBuKQogK3sKKysgIHVu aW9uIGV4cF9lbGVtZW50ICpwYzsKKysKICsgIGlmICghcHJvYmUtPnBhcnNlZF9hcmdzKQotKyAg ICBzdGFwX3BhcnNlX3Byb2JlX2FyZ3VtZW50cyAoKHN0cnVjdCBzdGFwX3Byb2JlICopIHByb2Jl KTsKKysgICAgc3RhcF9wYXJzZV9wcm9iZV9hcmd1bWVudHMgKHByb2JlKTsKICsKLSsgIGlmICgh cHJvYmUtPnBhcnNlZF9hcmdzLT5hcmcKKysgIGlmICghcHJvYmUtPnBhcnNlZF9hcmdzLT5hcmdz CiArICAgICAgfHwgbiA+PSBwcm9iZS0+cGFyc2VkX2FyZ3MtPm5fYXJncykKICsgICAgcmV0dXJu OwogKwotKyAgc3RhcF9jb21waWxlX3RvX2F4XzEgKG9iamZpbGUsIHByb2JlLCBleHByLCB2YWx1 ZSwgbik7CisrICBwYyA9IHByb2JlLT5wYXJzZWRfYXJncy0+YXJnc1tuXS5hZXhwci0+ZWx0czsK KysgIGdlbl9leHByIChwcm9iZS0+cGFyc2VkX2FyZ3MtPmFyZ3Nbbl0uYWV4cHIsICZwYywgZXhw ciwgdmFsdWUpOworKworKyAgcmVxdWlyZV9ydmFsdWUgKGV4cHIsIHZhbHVlKTsKKysgIHZhbHVl LT50eXBlID0gcHJvYmUtPnBhcnNlZF9hcmdzLT5hcmdzW25dLmF0eXBlOwogK30KICsKICtzdHJ1 Y3QgdmFsdWUgKgogK3N0YXBfc2FmZV9ldmFsdWF0ZV9hdF9wYyAoc3RydWN0IGZyYW1lX2luZm8g KmZyYW1lLCBpbnQgbikKICt7Ci0rICBjb25zdCBzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmU7Cisr ICBzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmU7CiArICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsK ICsgIGludCBuX3Byb2JlczsKICsKQEAgLTkwMTgsOSArOTg1NCw5IEBAIEluZGV4OiBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi9zdGFwLXByb2JlLmMKICsgICAgcmV0dXJuOwogKwogKyAgZm9yIChp ID0gMDsgaSA8IHBhcnNlZF9hcmdzLT5uX2FyZ3M7IGkrKykKLSsgICAgeGZyZWUgKHBhcnNlZF9h cmdzLT5hcmdbaV0uYXJnX3N0cik7CisrICAgIHhmcmVlIChwYXJzZWRfYXJncy0+YXJnc1tpXS5h ZXhwcik7CiArCi0rICB4ZnJlZSAocGFyc2VkX2FyZ3MtPmFyZyk7CisrICB4ZnJlZSAocGFyc2Vk X2FyZ3MtPmFyZ3MpOwogKyAgeGZyZWUgKHBhcnNlZF9hcmdzKTsKICt9CiArCkBAIC05MDMwLDcg Kzk4NjYsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc3RhcC1wcm9iZS5jCiAr c3RydWN0IHN0YXBfcHJvYmVfYW5kX29iamZpbGUKICt7CiArICAvKiBUaGUgcHJvYmUuICAqLwot KyAgY29uc3Qgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlOworKyAgc3RydWN0IHN0YXBfcHJvYmUg KnByb2JlOwogKyAgLyogVGhlIHByb2JlJ3Mgb2JqZmlsZS4gICovCiArICBzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZTsKICt9OwpAQCAtOTA4MSw3ICs5OTE3LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL3N0YXAtcHJvYmUuYwogKwogKyAgQUxMX09CSkZJTEVTIChvYmpmaWxlKQog KyAgewotKyAgICBjb25zdCBzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmVzOworKyAgICBzdHJ1Y3Qg c3RhcF9wcm9iZSAqcHJvYmVzOwogKyAgICBpbnQgaSwgbnVtX3Byb2JlczsKICsKICsgICAgaWYg KCEgb2JqZmlsZS0+c2YgfHwgISBvYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2ZucykKQEAgLTkxNzQs NyArMTAwMTAsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc3RhcC1wcm9iZS5j CiArCiArICBpdGVtcyA9IGNvbGxlY3RfcHJvYmVzIChvYmpuYW1lLCBwcm92aWRlciwgcHJvYmUp OwogKyAgbWFrZV9jbGVhbnVwIChWRUNfY2xlYW51cCAoc3RhcF9lbnRyeSksICZpdGVtcyk7Ci0r ICBtYWtlX2NsZWFudXBfdWlfb3V0X3RhYmxlX2JlZ2luX2VuZCAodWlvdXQsIDUsCisrICBtYWtl X2NsZWFudXBfdWlfb3V0X3RhYmxlX2JlZ2luX2VuZCAoY3VycmVudF91aW91dCwgNSwKICsJCQkJ ICAgICAgIFZFQ19sZW5ndGggKHN0YXBfZW50cnksIGl0ZW1zKSwKICsJCQkJICAgICAgICJTeXN0 ZW1UYXBQcm9iZXMiKTsKICsKQEAgLTkxODYsMzEgKzEwMDIyLDMxIEBAIEluZGV4OiBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi9zdGFwLXByb2JlLmMKICsKICsgIGFkZHJfd2lkdGggPSA0ICsgKGdk YmFyY2hfcHRyX2JpdCAoZ2V0X2N1cnJlbnRfYXJjaCAoKSkgLyA0KTsKICsKLSsgIHVpX291dF90 YWJsZV9oZWFkZXIgKHVpb3V0LCAxMCwgdWlfbGVmdCwgInByb3ZpZGVyIiwgXygiUHJvdmlkZXIi KSk7Ci0rICB1aV9vdXRfdGFibGVfaGVhZGVyICh1aW91dCwgMTAsIHVpX2xlZnQsICJuYW1lIiwg XygiTmFtZSIpKTsKLSsgIHVpX291dF90YWJsZV9oZWFkZXIgKHVpb3V0LCBhZGRyX3dpZHRoIC0g MSwgdWlfbGVmdCwgImFkZHIiLCBfKCJXaGVyZSIpKTsKLSsgIHVpX291dF90YWJsZV9oZWFkZXIg KHVpb3V0LCBhZGRyX3dpZHRoIC0gMSwgdWlfbGVmdCwgInNlbWFwaG9yZSIsCisrICB1aV9vdXRf dGFibGVfaGVhZGVyIChjdXJyZW50X3Vpb3V0LCAxMCwgdWlfbGVmdCwgInByb3ZpZGVyIiwgXygi UHJvdmlkZXIiKSk7CisrICB1aV9vdXRfdGFibGVfaGVhZGVyIChjdXJyZW50X3Vpb3V0LCAxMCwg dWlfbGVmdCwgIm5hbWUiLCBfKCJOYW1lIikpOworKyAgdWlfb3V0X3RhYmxlX2hlYWRlciAoY3Vy cmVudF91aW91dCwgYWRkcl93aWR0aCAtIDEsIHVpX2xlZnQsICJhZGRyIiwgXygiV2hlcmUiKSk7 CisrICB1aV9vdXRfdGFibGVfaGVhZGVyIChjdXJyZW50X3Vpb3V0LCBhZGRyX3dpZHRoIC0gMSwg dWlfbGVmdCwgInNlbWFwaG9yZSIsCiArCQkgICAgICAgXygiU2VtYXBob3JlIikpOwotKyAgdWlf b3V0X3RhYmxlX2hlYWRlciAodWlvdXQsIDMwLCB1aV9sZWZ0LCAib2JqZWN0IiwgXygiT2JqZWN0 IikpOwotKyAgdWlfb3V0X3RhYmxlX2JvZHkgKHVpb3V0KTsKKysgIHVpX291dF90YWJsZV9oZWFk ZXIgKGN1cnJlbnRfdWlvdXQsIDMwLCB1aV9sZWZ0LCAib2JqZWN0IiwgXygiT2JqZWN0IikpOwor KyAgdWlfb3V0X3RhYmxlX2JvZHkgKGN1cnJlbnRfdWlvdXQpOwogKwogKyAgZm9yIChpID0gMDsg VkVDX2l0ZXJhdGUgKHN0YXBfZW50cnksIGl0ZW1zLCBpLCBlbnRyeSk7ICsraSkKICsgICAgewog KyAgICAgIHN0cnVjdCBjbGVhbnVwICppbm5lcjsKICsKLSsgICAgICBpbm5lciA9IG1ha2VfY2xl YW51cF91aV9vdXRfdHVwbGVfYmVnaW5fZW5kICh1aW91dCwgInByb2JlIik7CisrICAgICAgaW5u ZXIgPSBtYWtlX2NsZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAoY3VycmVudF91aW91dCwg InByb2JlIik7CiArCi0rICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJwcm92aWRl ciIsIGVudHJ5LT5wcm9iZS0+cHJvdmlkZXIpOwotKyAgICAgIHVpX291dF9maWVsZF9zdHJpbmcg KHVpb3V0LCAibmFtZSIsIGVudHJ5LT5wcm9iZS0+bmFtZSk7Ci0rICAgICAgdWlfb3V0X2ZpZWxk X2NvcmVfYWRkciAodWlvdXQsICJhZGRyIiwgZ2V0X2N1cnJlbnRfYXJjaCAoKSwKKysgICAgICB1 aV9vdXRfZmllbGRfc3RyaW5nIChjdXJyZW50X3Vpb3V0LCAicHJvdmlkZXIiLCBlbnRyeS0+cHJv YmUtPnByb3ZpZGVyKTsKKysgICAgICB1aV9vdXRfZmllbGRfc3RyaW5nIChjdXJyZW50X3Vpb3V0 LCAibmFtZSIsIGVudHJ5LT5wcm9iZS0+bmFtZSk7CisrICAgICAgdWlfb3V0X2ZpZWxkX2NvcmVf YWRkciAoY3VycmVudF91aW91dCwgImFkZHIiLCBnZXRfY3VycmVudF9hcmNoICgpLAogKwkJCSAg ICAgIGVudHJ5LT5wcm9iZS0+YWRkcmVzcyk7CiArICAgICAgaWYgKGVudHJ5LT5wcm9iZS0+c2Vt X2FkZHIgPT0gMCkKLSsJdWlfb3V0X2ZpZWxkX3NraXAgKHVpb3V0LCAic2VtYXBob3JlIik7Cisr CXVpX291dF9maWVsZF9za2lwIChjdXJyZW50X3Vpb3V0LCAic2VtYXBob3JlIik7CiArICAgICAg ZWxzZQotKyAgICAgIHVpX291dF9maWVsZF9jb3JlX2FkZHIgKHVpb3V0LCAic2VtYXBob3JlIiwg Z2V0X2N1cnJlbnRfYXJjaCAoKSwKKysgICAgICB1aV9vdXRfZmllbGRfY29yZV9hZGRyIChjdXJy ZW50X3Vpb3V0LCAic2VtYXBob3JlIiwgZ2V0X2N1cnJlbnRfYXJjaCAoKSwKICsJCQkgICAgICBl bnRyeS0+cHJvYmUtPnNlbV9hZGRyKTsKLSsgICAgICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91 dCwgIm9iamVjdCIsIGVudHJ5LT5vYmpmaWxlLT5uYW1lKTsKLSsgICAgICB1aV9vdXRfdGV4dCAo dWlvdXQsICJcbiIpOworKyAgICAgIHVpX291dF9maWVsZF9zdHJpbmcgKGN1cnJlbnRfdWlvdXQs ICJvYmplY3QiLCBlbnRyeS0+b2JqZmlsZS0+bmFtZSk7CisrICAgICAgdWlfb3V0X3RleHQgKGN1 cnJlbnRfdWlvdXQsICJcbiIpOwogKwogKyAgICAgIGRvX2NsZWFudXBzIChpbm5lcik7CiArICAg IH0KQEAgLTkyMTksNyArMTAwNTUsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv c3RhcC1wcm9iZS5jCiArICBkb19jbGVhbnVwcyAoY2xlYW51cCk7CiArCiArICBpZiAoISBhbnlf Zm91bmQpCi0rICAgIHVpX291dF9tZXNzYWdlICh1aW91dCwgMCwgXygiTm8gcHJvYmVzIG1hdGNo ZWQuXG4iKSk7CisrICAgIHVpX291dF9tZXNzYWdlIChjdXJyZW50X3Vpb3V0LCAwLCBfKCJObyBw cm9iZXMgbWF0Y2hlZC5cbiIpKTsKICt9CiArCiArDApAQCAtOTIzMSw3ICsxMDA2Nyw3IEBAIElu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zdGFwLXByb2JlLmMKICsJCQljb25zdCBjaGFy ICpwcm92aWRlciwKICsJCQljb25zdCBjaGFyICpuYW1lKQogK3sKLSsgIGNvbnN0IHN0cnVjdCBz dGFwX3Byb2JlICpwcm9iZXM7CisrICBzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmVzOwogKyAgaW50 IGksIG51bV9wcm9iZXM7CiArICBWRUMgKHN0YXBfcHJvYmVfcCkgKnJlc3VsdCA9IE5VTEw7CiAr CkBAIC05MjU4LDggKzEwMDk0LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3N0 YXAtcHJvYmUuYwogK3N0cnVjdCBzeW10YWJzX2FuZF9saW5lcwogK3BhcnNlX3N0YXBfcHJvYmUg KGNoYXIgKiphcmdwdHIsIHN0cnVjdCBsaW5lc3BlY19yZXN1bHQgKmNhbm9uaWNhbCkKICt7Ci0r ICBjaGFyICpmdWxsX2FyZyA9IGV4dHJhY3RfYXJnIChhcmdwdHIpOwotKyAgY2hhciAqYXJnID0g eHN0cmR1cCAoZnVsbF9hcmcpOworKyAgY2hhciAqYXJnX3N0YXJ0LCAqYXJnX2VuZCwgKmFyZzsK ICsgIGNoYXIgKm9iamZpbGVfbmFtZSA9IE5VTEwsICpwcm92aWRlciA9IE5VTEwsICpuYW1lLCAq cDsKICsgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwOwogKyAgc3RydWN0IHN5bXRhYnNfYW5kX2xp bmVzIHJlc3VsdDsKQEAgLTkyNjgsMTcgKzEwMTAzLDI3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi9zdGFwLXByb2JlLmMKICsgIHJlc3VsdC5zYWxzID0gTlVMTDsKICsgIHJlc3Vs dC5uZWx0cyA9IDA7CiArCi0rICAvKiBUaGUgY2FsbGVyIGVuc3VyZWQgdGhhdCB0aGlzIHN0YXJ0 cyB3aXRoICdwcm9iZTonLiAgKi8KLSsgIGdkYl9hc3NlcnQgKGFyZyAmJiBzdHJuY21wIChhcmcs ICJwcm9iZToiLCA2KSA9PSAwKTsKKysgIGFyZ19zdGFydCA9ICphcmdwdHI7CisrICAvKiBUaGUg Y2FsbGVyIGVuc3VyZWQgdGhhdCB0aGlzIHN0YXJ0cyB3aXRoICctcCcuICAqLworKyAgZ2RiX2Fz c2VydCAoYXJnX3N0YXJ0ICYmIHN0cm5jbXAgKGFyZ19zdGFydCwgIi1wIiwgMikgPT0gMCk7Cisr ICBhcmdfZW5kID0gYXJnX3N0YXJ0ICsgMjsKKysgIGFyZ19lbmQgPSBza2lwX3NwYWNlcyAoYXJn X2VuZCk7CisrCisrICBpZiAoISphcmdfZW5kKQorKyAgICBlcnJvciAoXygiYXJndW1lbnQgdG8g YC1wJyBtaXNzaW5nIikpOworKworKyAgYXJnID0gYXJnX2VuZDsKKysgIGFyZ19lbmQgPSBza2lw X3RvX3NwYWNlIChhcmdfZW5kKTsKKysKKysgIC8qIFdlIG1ha2UgYSBjb3B5IGhlcmUgc28gd2Ug Y2FuIHdyaXRlIG92ZXIgcGFydHMgd2l0aCBpbXB1bml0eS4gICovCisrICBhcmcgPSBzYXZlc3Ry aW5nIChhcmcsIGFyZ19lbmQgLSBhcmcpOwogKyAgY2xlYW51cCA9IG1ha2VfY2xlYW51cCAoeGZy ZWUsIGFyZyk7Ci0rICBtYWtlX2NsZWFudXAgKHhmcmVlLCBmdWxsX2FyZyk7Ci0rICBhcmcgKz0g NjsKICsKICsgIC8qIEV4dHJhY3QgZWFjaCB3b3JkIGZyb20gdGhlIGFyZ3VtZW50LCBzZXBhcmF0 ZWQgYnkgIjoicy4gICovCiArICBwID0gc3RyY2hyIChhcmcsICc6Jyk7CiArICBpZiAocCA9PSBO VUxMKQogKyAgICB7Ci0rICAgICAgLyogVGhpcyBpcyBgcHJvYmU6bmFtZScuICAqLworKyAgICAg IC8qIFRoaXMgaXMgYC1wIG5hbWUnLiAgKi8KICsgICAgICBuYW1lID0gYXJnOwogKyAgICB9CiAr ICBlbHNlCkBAIC05Mjg5LDEzICsxMDEzNCwxMyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvc3RhcC1wcm9iZS5jCiArICAgICAgcCA9IHN0cmNociAoaG9sZCwgJzonKTsKICsgICAg ICBpZiAocCA9PSBOVUxMKQogKwl7Ci0rCSAgLyogVGhpcyBpcyBgcHJvYmU6cHJvdmlkZXI6bmFt ZScuICAqLworKwkgIC8qIFRoaXMgaXMgYC1wIHByb3ZpZGVyOm5hbWUnLiAgKi8KICsJICBwcm92 aWRlciA9IGFyZzsKICsJICBuYW1lID0gaG9sZDsKICsJfQogKyAgICAgIGVsc2UKICsJewotKwkg IC8qIFRoaXMgaXMgYHByb2JlOm9iamZpbGU6cHJvdmlkZXI6bmFtZScuICAqLworKwkgIC8qIFRo aXMgaXMgYC1wIG9iamZpbGU6cHJvdmlkZXI6bmFtZScuICAqLwogKwkgICpwID0gJ1wwJzsKICsJ ICBvYmpmaWxlX25hbWUgPSBhcmc7CiArCSAgcHJvdmlkZXIgPSBob2xkOwpAQCAtOTMxMCwxMiAr MTAxNTUsOSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc3RhcC1wcm9iZS5jCiAr ICBpZiAob2JqZmlsZV9uYW1lICYmICpvYmpmaWxlX25hbWUgPT0gJ1wwJykKICsgICAgZXJyb3Ig KF8oImludmFsaWQgb2JqZmlsZSBuYW1lIikpOwogKwotKyAgaWYgKGNhbm9uaWNhbCkKLSsgICAg Y2Fub25pY2FsLT5jYW5vbmljYWwgPSBOVUxMOwotKwogKyAgQUxMX09CSkZJTEVTIChvYmpmaWxl KQogKyAgewotKyAgICBjb25zdCBzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmVzOworKyAgICBzdHJ1 Y3Qgc3RhcF9wcm9iZSAqcHJvYmVzOwogKyAgICBpbnQgaSwgbnVtX3Byb2JlczsKICsKICsgICAg aWYgKCEgb2JqZmlsZS0+c2YgfHwgISBvYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2ZucykKQEAgLTkz NDksMTMgKzEwMTkxLDYgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3N0YXAtcHJv YmUuYwogKwlzYWwtPnNlY3Rpb24gPSBmaW5kX3BjX292ZXJsYXkgKHNhbC0+cGMpOwogKwlzYWwt PnBzcGFjZSA9IGN1cnJlbnRfcHJvZ3JhbV9zcGFjZTsKICsJc2FsLT5zZW1hcGhvcmUgPSBwcm9i ZXNbaV0uc2VtX2FkZHI7Ci0rCi0rCWlmIChjYW5vbmljYWwpCi0rCSAgewotKwkgICAgY2Fub25p Y2FsLT5jYW5vbmljYWwgPSB4cmVhbGxvYyAoY2Fub25pY2FsLT5jYW5vbmljYWwsCi0rCQkJCQkg ICAgIHJlc3VsdC5uZWx0cyAqIHNpemVvZiAoY2hhciAqKSk7Ci0rCSAgICBjYW5vbmljYWwtPmNh bm9uaWNhbFtyZXN1bHQubmVsdHMgLSAxXSA9IHhzdHJkdXAgKGZ1bGxfYXJnKTsKLSsJICB9CiAr ICAgICAgfQogKyAgfQogKwpAQCAtOTM3Miw4ICsxMDIwNywxMCBAQCBJbmRleDogZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvc3RhcC1wcm9iZS5jCiArICAgIHsKICsgICAgICBjYW5vbmljYWwtPnNw ZWNpYWxfZGlzcGxheSA9IDE7CiArICAgICAgY2Fub25pY2FsLT5wcmVfZXhwYW5kZWQgPSAxOwor KyAgICAgIGNhbm9uaWNhbC0+YWRkcl9zdHJpbmcgPSBzYXZlc3RyaW5nICgqYXJncHRyLCBhcmdf ZW5kIC0gKmFyZ3B0cik7CiArICAgIH0KICsKKysgICphcmdwdHIgPSBhcmdfZW5kOwogKyAgZG9f Y2xlYW51cHMgKGNsZWFudXApOwogKwogKyAgcmV0dXJuIHJlc3VsdDsKQEAgLTkzODMsMTQgKzEw MjIwLDE0IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zdGFwLXByb2JlLmMKICsK ICsvKiBTZWUgZGVmaW5pdGlvbiBpbiBzdGFwLXByb2JlLmguICAqLwogKwotK2NvbnN0IHN0cnVj dCBzdGFwX3Byb2JlICoKKytzdHJ1Y3Qgc3RhcF9wcm9iZSAqCiArZmluZF9wcm9iZV9ieV9wYyAo Q09SRV9BRERSIHBjLCBzdHJ1Y3Qgb2JqZmlsZSAqKm9iamZpbGVfb3V0KQogK3sKICsgIHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlOwogKwogKyAgQUxMX09CSkZJTEVTIChvYmpmaWxlKQogKyAgewot KyAgICBjb25zdCBzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmVzOworKyAgICBzdHJ1Y3Qgc3RhcF9w cm9iZSAqcHJvYmVzOwogKyAgICBpbnQgaSwgbnVtX3Byb2JlczsKICsgICAgc3RhcF9lbnRyeSBl bnRyeTsKICsKQEAgLTk0MjMsMTEgKzEwMjYwLDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi9zdGFwLXByb2JlLmMKICsgIENPUkVfQUREUiBwYyA9IGdldF9mcmFtZV9wYyAoZnJh bWUpOwogKyAgaW50IHNlbCA9IChpbnQpICh1aW50cHRyX3QpIGRhdGE7CiArICBzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZTsKLSsgIGNvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICpwY19wcm9iZTsKKysg IHN0cnVjdCBzdGFwX3Byb2JlICpwY19wcm9iZTsKICsgIGludCBuX3Byb2JlczsKICsKLSsgIC8q IFNFTD09MTAgbWVhbnMgIl9wcm9iZV9hcmdjIi4gICovCi0rICBnZGJfYXNzZXJ0IChzZWwgPj0g MCAmJiBzZWwgPD0gU1RBUF9NQVhfQVJHUyk7CisrICAvKiBTRUw9PS0xIG1lYW5zICJfcHJvYmVf YXJnYyIuICAqLworKyAgZ2RiX2Fzc2VydCAoc2VsID49IC0xICYmIHNlbCA8PSBTVEFQX01BWF9B UkdTKTsKICsKICsgIHBjX3Byb2JlID0gZmluZF9wcm9iZV9ieV9wYyAocGMsICZvYmpmaWxlKTsK ICsgIGlmIChwY19wcm9iZSA9PSBOVUxMKQpAQCAtOTQzNiw3ICsxMDI3Myw3IEBAIEluZGV4OiBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zdGFwLXByb2JlLmMKICsgIG5fcHJvYmVzCiArICAgID0g b2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnMtPnN5bV9nZXRfcHJvYmVfYXJndW1lbnRfY291bnQg KG9iamZpbGUsCiArCQkJCQkJCQlwY19wcm9iZSk7Ci0rICBpZiAoc2VsID09IDEwKQorKyAgaWYg KHNlbCA9PSAtMSkKICsgICAgcmV0dXJuIHZhbHVlX2Zyb21fbG9uZ2VzdCAoYnVpbHRpbl90eXBl IChhcmNoKS0+YnVpbHRpbl9pbnQsIG5fcHJvYmVzKTsKICsKICsgIGlmIChzZWwgPj0gbl9wcm9i ZXMpCkBAIC05NDU4LDExICsxMDI5NSwxMSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvc3RhcC1wcm9iZS5jCiArICBDT1JFX0FERFIgcGMgPSBleHByLT5zY29wZTsKICsgIGludCBz ZWwgPSAoaW50KSAodWludHB0cl90KSBkYXRhOwogKyAgc3RydWN0IG9iamZpbGUgKm9iamZpbGU7 Ci0rICBjb25zdCBzdHJ1Y3Qgc3RhcF9wcm9iZSAqcGNfcHJvYmU7CisrICBzdHJ1Y3Qgc3RhcF9w cm9iZSAqcGNfcHJvYmU7CiArICBpbnQgbl9wcm9iZXM7CiArCi0rICAvKiBTRUw9PTEwIG1lYW5z ICJfcHJvYmVfYXJnYyIuICAqLwotKyAgZ2RiX2Fzc2VydCAoc2VsID49IDAgJiYgc2VsIDw9IDEw KTsKKysgIC8qIFNFTD09LTEgbWVhbnMgIl9wcm9iZV9hcmdjIi4gICovCisrICBnZGJfYXNzZXJ0 IChzZWwgPj0gLTEgJiYgc2VsIDw9IFNUQVBfTUFYX0FSR1MpOwogKwogKyAgcGNfcHJvYmUgPSBm aW5kX3Byb2JlX2J5X3BjIChwYywgJm9iamZpbGUpOwogKyAgaWYgKHBjX3Byb2JlID09IE5VTEwp CkBAIC05NDcxLDcgKzEwMzA4LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3N0 YXAtcHJvYmUuYwogKyAgbl9wcm9iZXMKICsgICAgPSBvYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2Zu cy0+c3ltX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCAob2JqZmlsZSwKICsJCQkJCQkJCXBjX3By b2JlKTsKLSsgIGlmIChzZWwgPT0gMTApCisrICBpZiAoc2VsID09IC0xKQogKyAgICB7CiArICAg ICAgdmFsdWUtPmtpbmQgPSBheHNfcnZhbHVlOwogKyAgICAgIHZhbHVlLT50eXBlID0gYnVpbHRp bl90eXBlIChleHByLT5nZGJhcmNoKS0+YnVpbHRpbl9pbnQ7CkBAIC05NTEwLDggKzEwMzQ3LDE4 IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zdGFwLXByb2JlLmMKICtOQU1FIG1h dGNoZXMgdGhlIHByb2JlIG5hbWVzLlxuXAogK09CSkVDVCBtYXRjaCB0aGUgZXhlY3V0YWJsZSBv ciBzaGFyZWQgbGlicmFyeSBuYW1lLiIpKTsKICsKKysgIGFkZF9zZXRzaG93X3ppbnRlZ2VyX2Nt ZCAoInN0YXAtZXhwcmVzc2lvbiIsIGNsYXNzX21haW50ZW5hbmNlLAorKwkJCSAgICAmc3RhcF9l eHByZXNzaW9uX2RlYnVnLAorKwkJCSAgICBfKCJTZXQgU3lzdGVtVGFwIGV4cHJlc3Npb24gZGVi dWdnaW5nLiIpLAorKwkJCSAgICBfKCJTaG93IFN5c3RlbVRhcCBleHByZXNzaW9uIGRlYnVnZ2lu Zy4iKSwKKysJCQkgICAgXygiV2hlbiBub24temVybywgdGhlIGludGVybmFsIHJlcHJlc2VudGF0 aW9uICIKKysJCQkgICAgICAib2YgU3lzdGVtVGFwIGV4cHJlc3Npb25zIHdpbGwgYmUgcHJpbnRl ZC4iKSwKKysJCQkgICAgTlVMTCwKKysJCQkgICAgc2hvd19zdGFwZXhwcmVzc2lvbmRlYnVnLAor KwkJCSAgICAmc2V0ZGVidWdsaXN0LCAmc2hvd2RlYnVnbGlzdCk7CisrCiArICBjcmVhdGVfaW50 ZXJuYWx2YXJfdHlwZV9sYXp5ICgiX3Byb2JlX2FyZ2MiLCAmcHJvYmVfZnVuY3MsCi0rCQkJCSh2 b2lkICopICh1aW50cHRyX3QpIDEwKTsKKysJCQkJKHZvaWQgKikgKHVpbnRwdHJfdCkgLTEpOwog KyAgY3JlYXRlX2ludGVybmFsdmFyX3R5cGVfbGF6eSAoIl9wcm9iZV9hcmcwIiwgJnByb2JlX2Z1 bmNzLAogKwkJCQkodm9pZCAqKSAodWludHB0cl90KSAwKTsKICsgIGNyZWF0ZV9pbnRlcm5hbHZh cl90eXBlX2xhenkgKCJfcHJvYmVfYXJnMSIsICZwcm9iZV9mdW5jcywKQEAgLTk1MzIsMTIgKzEw Mzc5LDE3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zdGFwLXByb2JlLmMKICsJ CQkJKHZvaWQgKikgKHVpbnRwdHJfdCkgOCk7CiArICBjcmVhdGVfaW50ZXJuYWx2YXJfdHlwZV9s YXp5ICgiX3Byb2JlX2FyZzkiLCAmcHJvYmVfZnVuY3MsCiArCQkJCSh2b2lkICopICh1aW50cHRy X3QpIDkpOwotK30KLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zdGFwLXByb2JlLmgK LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAg KzAwMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zdGFwLXByb2JlLmgJMjAxMS0wNy0y OSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsMTE0IEBACisrICBjcmVhdGVf aW50ZXJuYWx2YXJfdHlwZV9sYXp5ICgiX3Byb2JlX2FyZzEwIiwgJnByb2JlX2Z1bmNzLAorKwkJ CQkodm9pZCAqKSAodWludHB0cl90KSAxMCk7CisrICBjcmVhdGVfaW50ZXJuYWx2YXJfdHlwZV9s YXp5ICgiX3Byb2JlX2FyZzExIiwgJnByb2JlX2Z1bmNzLAorKwkJCQkodm9pZCAqKSAodWludHB0 cl90KSAxMSk7CisrfQorZGlmZiAtLWdpdCBhL2dkYi9zdGFwLXByb2JlLmggYi9nZGIvc3RhcC1w cm9iZS5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uOWI2ZGM3YQorLS0t IC9kZXYvbnVsbAorKysrIGIvZ2RiL3N0YXAtcHJvYmUuaAorQEAgLTAsMCArMSwxNDQgQEAKICsv KiBTeXN0ZW1UYXAgcHJvYmUgc3VwcG9ydCBmb3IgR0RCLgogKwogKyAgIENvcHlyaWdodCAoQykg MjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KQEAgLTk1OTEsOSArMTA0NDMsMzkg QEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3N0YXAtcHJvYmUuaAogKyAgLyogUHJv YmUncyBhcmd1bWVudHMgYWZ0ZXIgcGFyc2luZy4gIFRoaXMgaXMgYW4gb3BhcXVlIHN0cnVjdHVy ZSB0aGF0CiArICAgICB3aWxsIGhvbGQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGFyZ3VtZW50cyBw b2ludGVkIGJ5IEFSR1MuICAqLwogKyAgc3RydWN0IHN0YXBfYXJnc19pbmZvICpwYXJzZWRfYXJn czsKKysKKysgIC8qIGdkYmFyY2ggc3RydWN0dXJlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHByb2Jl LiAgKi8KKysgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoOworK307CisrCisrLyogU3RydWN0dXJl IHdoaWNoIGhvbGRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwYXJzaW5nIHByb2Nlc3Mgb2Ygb25l IHByb2JlJ3MKKysgICBhcmd1bWVudC4gICovCisrCisrc3RydWN0IHN0YXBfcGFyc2VfaW5mbwor K3sKKysgIC8qIFRoZSBwcm9iZSdzIGFyZ3VtZW50IGluIGEgc3RyaW5nIGZvcm1hdC4gICovCisr ICBjb25zdCBjaGFyICphcmc7CisrCisrICAvKiBBIHBvaW50ZXIgdG8gdGhlIGZ1bGwgY2hhaW4g b2YgYXJndW1lbnRzLiAgVGhpcyBpcyB1c2VmdWwgZm9yIHByaW50aW5nCisrICAgICBlcnJvciBt ZXNzYWdlcy4gIFRoZSBwYXJzZXIgZnVuY3Rpb25zIHNob3VsZCBub3QgbW9kaWZ5IHRoaXMgYXJn dW1lbnQKKysgICAgIGRpcmVjdGx5OyBpbnN0ZWFkLCB0aGV5IHNob3VsZCB1c2UgdGhlIEFSRyBw b2ludGVyIGFib3ZlLiAgKi8KKysgIGNvbnN0IGNoYXIgKnNhdmVkX2FyZzsKKysKKysgIC8qIFRo ZSBleHBlY3RlZCBhcmd1bWVudCB0eXBlIChiaXRuZXNzKSwgYXMgZGVmaW5lZCBpbiB0aGUgcHJv YmUncworKyAgICAgYXJndW1lbnQuICBGb3IgaW5zdGFuY2UsIGlmIHRoZSBhcmd1bWVudCBiZWdp bnMgd2l0aCBgLThAJywgaXQgbWVhbnMKKysgICAgIHRoZSBiaXRuZXNzIGlzIDY0LWJpdCBzaWdu ZWQuICBJbiB0aGlzIGNhc2UsIEFSR19UWVBFIHdvdWxkIHJlcHJlc2VudAorKyAgICAgdGhlIHR5 cGUgYGludDY0X3QnLiAgKi8KKysgIHN0cnVjdCB0eXBlICphcmdfdHlwZTsKKysKKysgIC8qIEEg cG9pbnRlciB0byB0aGUgY3VycmVudCBnZGJhcmNoLiAgKi8KKysgIHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoOworKworKyAgLyogR3JlYXRlciB0aGFuIHplcm8gaWYgd2UgYXJlIGluc2lkZSBhIHBh cmVudGhlc2l6ZWQgZXhwcmVzc2lvbi4gIFVzZWZ1bAorKyAgICAgZm9yIGtub3dpbmcgd2hlbiB0 byBza2lwIHNwYWNlcyBvciBub3QuICAqLworKyAgaW50IGluc2lkZV9wYXJlbl9wOwogK307CiAr Ci0rdHlwZWRlZiBjb25zdCBzdHJ1Y3Qgc3RhcF9wcm9iZSAqc3RhcF9wcm9iZV9wOworK3R5cGVk ZWYgc3RydWN0IHN0YXBfcHJvYmUgKnN0YXBfcHJvYmVfcDsKICtERUZfVkVDX1AgKHN0YXBfcHJv YmVfcCk7CiArCiArLyogQSBoZWxwZXIgZm9yIGxpbmVzcGVjIHRoYXQgZGVjb2RlcyBhIHN0YXAg cHJvYmUgc3BlY2lmaWNhdGlvbi4gIEl0CkBAIC05NjE1LDMxICsxMDQ5NywzMSBAQCBJbmRleDog Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc3RhcC1wcm9iZS5oCiArICAgZm91bmQsIHNldCAqT0JK RklMRV9PVVQgdG8gdGhlIHByb2JlJ3Mgb2JqZmlsZSwgYW5kIHJldHVybiB0aGUKICsgICBwcm9i ZS4gIElmIG5vIHByb2JlIGlzIGZvdW5kLCByZXR1cm4gTlVMTC4gICovCiArCi0rZXh0ZXJuIGNv bnN0IHN0cnVjdCBzdGFwX3Byb2JlICpmaW5kX3Byb2JlX2J5X3BjIChDT1JFX0FERFIgcGMsCi0r CQkJCQkJICBzdHJ1Y3Qgb2JqZmlsZSAqKm9iamZpbGVfb3V0KTsKKytleHRlcm4gc3RydWN0IHN0 YXBfcHJvYmUgKmZpbmRfcHJvYmVfYnlfcGMgKENPUkVfQUREUiBwYywKKysJCQkJCSAgICBzdHJ1 Y3Qgb2JqZmlsZSAqKm9iamZpbGVfb3V0KTsKICsKICsvKiBHaXZlbiBQUk9CRSwgcmV0dXJucyB0 aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBwcmVzZW50IGluIHRoYXQgcHJvYmUncwogKyAgIGFyZ3Vt ZW50IHN0cmluZy4gICovCiArCi0rZXh0ZXJuIGludCBzdGFwX2dldF9wcm9iZV9hcmd1bWVudF9j b3VudCAoY29uc3Qgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlKTsKKytleHRlcm4gaW50IHN0YXBf Z2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50IChzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmUpOwogKwog Ky8qIEdpdmVuIFBBUlNFRF9BUkdTLCBmcmVlcyB0aGUgc3BhY2UgYWxsb2NhdGVkIHRvIGhvbGQg aW5mb3JtYXRpb24gYWJvdXQKICsgICB0aGUgcHJvYmUncyBwYXJzZWQgYXJndW1lbnRzLiAgKi8K ICsKICtleHRlcm4gdm9pZCBzdGFwX2ZyZWVfcGFyc2VkX2FyZ3MgKHN0cnVjdCBzdGFwX2FyZ3Nf aW5mbyAqcGFyc2VkX2FyZ3MpOwogKwotKy8qIEV2YWx1YXRlcyB0aGUgcHJvYmUncyBhcmd1bWVu dCBOLCByZXR1cm5pbmcgYSB2YWx1ZSBjb3JyZXNwb25kaW5nCisrLyogRXZhbHVhdGUgdGhlIHBy b2JlJ3MgYXJndW1lbnQgTiwgcmV0dXJuaW5nIGEgdmFsdWUgY29ycmVzcG9uZGluZwogKyAgIHRv IGl0LiAgKi8KICsKICtleHRlcm4gc3RydWN0IHZhbHVlICpzdGFwX2V2YWx1YXRlX3Byb2JlX2Fy Z3VtZW50IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJCQkJCQkgICBjb25zdCBzdHJ1Y3Qg c3RhcF9wcm9iZSAqcHJvYmUsCisrCQkJCQkJICAgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlLAog KwkJCQkJCSAgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKICsJCQkJCQkgICBpbnQgbik7CiAr CiArLyogQ29tcGlsZSB0aGUgcHJvYmUncyBhcmd1bWVudCBOIHRvIGFnZW50IGV4cHJlc3Npb24u ICAqLwogKwogK2V4dGVybiB2b2lkIHN0YXBfY29tcGlsZV90b19heCAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUsCi0rCQkJCWNvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSwKKysJCQkJc3Ry dWN0IHN0YXBfcHJvYmUgKnByb2JlLAogKwkJCQlzdHJ1Y3QgYWdlbnRfZXhwciAqZXhwciwKICsJ CQkJc3RydWN0IGF4c192YWx1ZSAqdmFsdWUsCiArCQkJCWludCBuKTsKQEAgLTk2NTIsMTAgKzEw NTM0LDEwIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zdGFwLXByb2JlLmgKICsJ CQkJCSAgICAgICBpbnQgbik7CiArCiArI2VuZGlmIC8qICFkZWZpbmVkIChTVEFQX1BST0JFX0gp ICovCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc3ltZmlsZS5oCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9zeW1maWxlLmgJMjAxMS0wNy0yOSAy Mjo1MjowMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zeW1m aWxlLmgJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKK2RpZmYgLS1naXQgYS9n ZGIvc3ltZmlsZS5oIGIvZ2RiL3N5bWZpbGUuaAoraW5kZXggOTE2MDVhMi4uYzViNDkwNiAxMDA2 NDQKKy0tLSBhL2dkYi9zeW1maWxlLmgKKysrKyBiL2dkYi9zeW1maWxlLmgKIEBAIC0zMSw2ICsz MSwxMSBAQCBzdHJ1Y3Qgb2JqZmlsZTsKICBzdHJ1Y3Qgb2JqX3NlY3Rpb247CiAgc3RydWN0IG9i c3RhY2s7CkBAIC05NjY4LDggKzEwNTUwLDggQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL3N5bWZpbGUuaAogIAogIC8qIENvbXBhcmlzb24gZnVuY3Rpb24gZm9yIHN5bWJvbCBsb29r IHVwcy4gICovCiAgCi1AQCAtMjk0LDYgKzI5OSw1MiBAQCBzdHJ1Y3QgcXVpY2tfc3ltYm9sX2Z1 bmN0aW9ucwotIAkJCQlzeW1ib2xfZmlsZW5hbWVfZnR5cGUgKmZ1biwgdm9pZCAqZGF0YSk7CitA QCAtMzAxLDYgKzMwNiw1MiBAQCBzdHJ1Y3QgcXVpY2tfc3ltYm9sX2Z1bmN0aW9ucworIAkJCQlp bnQgbmVlZF9mdWxsbmFtZSk7CiAgfTsKICAKICsvKiBTdHJ1Y3R1cmUgb2YgZnVuY3Rpb25zIHVz ZWQgZm9yIFN5c3RlbVRhcCBwcm9iZSBzdXBwb3J0LiAgSWYgb25lIG9mCkBAIC05Njc5LDcgKzEw NTYxLDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3N5bWZpbGUuaAogK3sKICsg IC8qIElmIG5vbi1OVUxMLCByZXR1cm4gYW4gYXJyYXkgb2YgU3lzdGVtVGFwIHByb2JlIG9iamVj dHMuICBUaGUKICsgICAgIG51bWJlciBvZiBvYmplY3RzIGlzIHJldHVybmVkIGluICpOVU1fUFJP QkVTLiAgKi8KLSsgIGNvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICooKnN5bV9nZXRfcHJvYmVzKSAo c3RydWN0IG9iamZpbGUgKiwKKysgIHN0cnVjdCBzdGFwX3Byb2JlICooKnN5bV9nZXRfcHJvYmVz KSAoc3RydWN0IG9iamZpbGUgKiwKICsJCQkJCSAgICAgIGludCAqbnVtX3Byb2Jlcyk7CiArCiAr ICAvKiBSZXR1cm4gdGhlIG51bWJlciBvZiBhcmd1bWVudHMgYXZhaWxhYmxlIHRvIFBST0JFLiAg UFJPQkUgd2lsbApAQCAtOTY4Nyw3ICsxMDU2OSw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi9zeW1maWxlLmgKICsgICAgIElmIHlvdSBwcm92aWRlIGFuIGltcGxlbWVudGF0aW9u IG9mIHN5bV9nZXRfcHJvYmVzLCB5b3UgbXVzdAogKyAgICAgaW1wbGVtZW50IHRoaXMgbWV0aG9k IGFzIHdlbGwuICAqLwogKyAgaW50ICgqc3ltX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCkgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotKwkJCQkgICAgICAgY29uc3Qgc3RydWN0IHN0YXBfcHJv YmUgKnByb2JlKTsKKysJCQkJICAgICAgIHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSk7CiArCiAr ICAvKiBFdmFsdWF0ZSB0aGUgTnRoIGFyZ3VtZW50IGF2YWlsYWJsZSB0byBQUk9CRS4gIFBST0JF IHdpbGwgaGF2ZQogKyAgICAgY29tZSBmcm9tIGEgY2FsbCB0byB0aGlzIG9iamZpbGUncyBzeW1f Z2V0X3Byb2JlcyBtZXRob2QuICBOIHdpbGwKQEAgLTk2OTcsNyArMTA1NzksNyBAQCBJbmRleDog Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc3ltZmlsZS5oCiArICAgICBpbXBsZW1lbnRhdGlvbiBv ZiBzeW1fZ2V0X3Byb2JlcywgeW91IG11c3QgaW1wbGVtZW50IHRoaXMgbWV0aG9kCiArICAgICBh cyB3ZWxsLiAgKi8KICsgIHN0cnVjdCB2YWx1ZSAqKCpzeW1fZXZhbHVhdGVfcHJvYmVfYXJndW1l bnQpIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJCQkJCQljb25zdCBzdHJ1Y3Qgc3RhcF9w cm9iZSAqcHJvYmUsCisrCQkJCQkJc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlLAogKwkJCQkJCXN0 cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKICsJCQkJCQlpbnQgbik7CiArCkBAIC05NzA3LDcgKzEw NTg5LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3N5bWZpbGUuaAogKyAgICAg YXZhaWxhYmxlIHRvIHRoaXMgcHJvYmUuICBFWFBSIGFuZCBWQUxVRSBhcmUgdGhlIGFnZW50IGV4 cHJlc3Npb24KICsgICAgIHRoYXQgaXMgYmVpbmcgdXBkYXRlZC4gICovCiArICB2b2lkICgqc3lt X2NvbXBpbGVfdG9fYXgpIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJCQkgICAgIGNvbnN0 IHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSwKKysJCQkgICAgIHN0cnVjdCBzdGFwX3Byb2JlICpw cm9iZSwKICsJCQkgICAgIHN0cnVjdCBhZ2VudF9leHByICpleHByLAogKwkJCSAgICAgc3RydWN0 IGF4c192YWx1ZSAqdmFsdWUsCiArCQkJICAgICBpbnQgbik7CkBAIC05NzIxLDcgKzEwNjAzLDcg QEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3N5bWZpbGUuaAogIC8qIFN0cnVjdHVy ZSB0byBrZWVwIHRyYWNrIG9mIHN5bWJvbCByZWFkaW5nIGZ1bmN0aW9ucyBmb3IgdmFyaW91cwog ICAgIG9iamVjdCBmaWxlIHR5cGVzLiAgKi8KICAKLUBAIC0zNjQsNiArNDE1LDEwIEBAIHN0cnVj dCBzeW1fZm5zCitAQCAtMzcxLDYgKzQyMiwxMCBAQCBzdHJ1Y3Qgc3ltX2ZucwogIAogICAgYmZk X2J5dGUgKigqc3ltX3JlbG9jYXRlKSAoc3RydWN0IG9iamZpbGUgKiwgYXNlY3Rpb24gKnNlY3Rw LCBiZmRfYnl0ZSAqYnVmKTsKICAKQEAgLTk3MzIsMTEgKzEwNjE0LDExIEBAIEluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi9zeW1maWxlLmgKICAgIC8qIFRoZSAicXVpY2siIChha2EgcGFy dGlhbCkgc3ltYm9sIGZ1bmN0aW9ucyBmb3IgdGhpcyBzeW1ib2wKICAgICAgIHJlYWRlci4gICov CiAgICBjb25zdCBzdHJ1Y3QgcXVpY2tfc3ltYm9sX2Z1bmN0aW9ucyAqcWY7Ci1JbmRleDogZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvc3ltdGFiLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUw LjIwMTEwNzIyLm9yaWcvZ2RiL3N5bXRhYi5jCTIwMTEtMDctMjEgMTc6MTM6MjkuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc3ltdGFiLmMJMjAxMS0wNy0yOSAy Mjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC03NzYsNiArNzc2LDcgQEAgaW5pdF9zYWwgKHN0 cnVjdCBzeW10YWJfYW5kX2xpbmUgKnNhbCkKK2RpZmYgLS1naXQgYS9nZGIvc3ltdGFiLmMgYi9n ZGIvc3ltdGFiLmMKK2luZGV4IDFlYTQyNTMuLmVhODNmNzggMTAwNjQ0CistLS0gYS9nZGIvc3lt dGFiLmMKKysrKyBiL2dkYi9zeW10YWIuYworQEAgLTgzNCw2ICs4MzQsNyBAQCBpbml0X3NhbCAo c3RydWN0IHN5bXRhYl9hbmRfbGluZSAqc2FsKQogICAgc2FsLT5lbmQgPSAwOwogICAgc2FsLT5l eHBsaWNpdF9wYyA9IDA7CiAgICBzYWwtPmV4cGxpY2l0X2xpbmUgPSAwOwpAQCAtOTc0NCwxMSAr MTA2MjYsMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3N5bXRhYi5jCiAgfQog IAwKICAKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zeW10YWIuaAotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvc3ltdGFiLmgJMjAxMS0wNi0zMCAw MDoxOToyNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zeW10 YWIuaAkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAotQEAgLTExMTUsNiArMTEx NSwxMCBAQCBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lCitkaWZmIC0tZ2l0IGEvZ2RiL3N5bXRhYi5o IGIvZ2RiL3N5bXRhYi5oCitpbmRleCBiYmM3ZjJiLi44ZTQxNTM5IDEwMDY0NAorLS0tIGEvZ2Ri L3N5bXRhYi5oCisrKysgYi9nZGIvc3ltdGFiLmgKK0BAIC0xMDU3LDYgKzEwNTcsMTAgQEAgc3Ry dWN0IHN5bXRhYl9hbmRfbGluZQogICAgQ09SRV9BRERSIGVuZDsKICAgIGludCBleHBsaWNpdF9w YzsKICAgIGludCBleHBsaWNpdF9saW5lOwpAQCAtOTc1OSwxMCArMTA2NDEsMjcgQEAgSW5kZXg6 IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3N5bXRhYi5oCiAgfTsKICAKICBleHRlcm4gdm9pZCBp bml0X3NhbCAoc3RydWN0IHN5bXRhYl9hbmRfbGluZSAqc2FsKTsKLUluZGV4OiBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLWZvby5T Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAw ICswMDAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4 Nl82NC12bGEtcG9pbnRlci1mb28uUwkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIw MAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFkYS9wYWNrZWRfYXJyYXkuZXhwIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuYWRhL3BhY2tlZF9hcnJheS5leHAKK2luZGV4IGVmN2M4YjQuLmQ0 NjcyNjUgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5hZGEvcGFja2VkX2FycmF5LmV4 cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYWRhL3BhY2tlZF9hcnJheS5leHAKK0BAIC02NCw1 ICs2NCwxMSBAQCBnZGJfdGVzdF9tdWx0aXBsZSAiJHRlc3QiICIkdGVzdCIgeworICAgICAgICAg IyBhcmUuICBPYnNlcnZlZCB3aXRoIChGU0YgR05VIEFkYSA0LjUuMyAyMDExMDEyNCkuCisgICAg ICAgICB4ZmFpbCAkdGVzdAorICAgICB9CisrICAgIC1yZSAiPSBcXChcXClcW1xyXG5cXSskZ2Ri X3Byb21wdCAkIiB7CisrCSMgYXJjaGVyLWphbmtyYXRvY2h2aWwtdmxhIHJlc29sdmVzIGl0IGFz IGEgZHluYW1pYyB0eXBlIHJlc29sdmVkIGFzIGFuCisrCSMgZW1wdHkgYXJyYXkgWzAuLi0xXS4K KysJIyBEV19BVF91cHBlcl9ib3VuZCA6IChEV19PUF9mYnJlZzogLTQ4OyBEV19PUF9kZXJlZikK KysgICAgICAgIHhmYWlsICR0ZXN0CisrICAgIH0KKyB9CisgCitkaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXItZm9vLlMgYi9nZGIvdGVzdHN1aXRl L2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci1mb28uUworbmV3IGZpbGUgbW9kZSAxMDA2NDQK K2luZGV4IDAwMDAwMDAuLjgzZmFhZjYKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLWZvby5TCiBAQCAtMCwwICsxLDQ1NyBAQAog KwkuZmlsZQkieDg2XzY0LXZsYS1wb2ludGVyLmMiCiArCS5zZWN0aW9uCS5kZWJ1Z19hYmJyZXYs IiIsQHByb2diaXRzCkBAIC0xMDIyMSwxMCArMTExMjAsMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXItZm9vLlMK ICsJLnN0cmluZwkiR05VIEMgNC4zLjIgMjAwODExMDUgKFJlZCBIYXQgNC4zLjItNykiCiArCS5p ZGVudAkiR0NDOiAoR05VKSA0LjMuMiAyMDA4MTEwNSAoUmVkIEhhdCA0LjMuMi03KSIKICsJLnNl Y3Rpb24JLm5vdGUuR05VLXN0YWNrLCIiLEBwcm9nYml0cwotSW5kZXg6IGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuYwotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAot KysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxh LXBvaW50ZXIuYwkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAorZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLmMgYi9nZGIvdGVz dHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci5jCituZXcgZmlsZSBtb2RlIDEwMDY0 NAoraW5kZXggMDAwMDAwMC4uZmUyYzhmNworLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuYwogQEAgLTAsMCArMSw0MyBAQAogKy8q IFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCiArCkBAIC0x MDI2OSwxMCArMTExNjksMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuYwogK30KICsKICsjZW5kaWYKLUluZGV4 OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1w b2ludGVyLmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAw LjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuZXhwCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAw MDAwICswMjAwCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxh LXBvaW50ZXIuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIu ZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZDI0M2NmMQorLS0tIC9k ZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIu ZXhwCiBAQCAtMCwwICsxLDY2IEBACiArIyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KICsKQEAgLTEwMzQwLDEwICsxMTI0MSwxMSBAQCBJbmRleDogZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci5l eHAKICsKICtnZGJfdGVzdCAid2hhdGlzICphcnJheSIgInR5cGUgPSBjaGFyIFxcXFs3OFxcXF0i ICJzZWNvbmQ6IHdoYXRpcyAqYXJyYXkiCiArZ2RiX3Rlc3QgInB0eXBlICphcnJheSIgInR5cGUg PSBjaGFyIFxcXFs3OFxcXF0iICJzZWNvbmQ6IHB0eXBlICphcnJheSIKLUluZGV4OiBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLWZv by5TCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAw MDAwICswMDAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNo L3g4Nl82NC12bGEtdHlwZWRlZi1mb28uUwkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCAr MDIwMAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBl ZGVmLWZvby5TIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYtZm9v LlMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi42NmY3YTM5CistLS0gL2Rl di9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi1m b28uUwogQEAgLTAsMCArMSw0NTUgQEAKICsJLmZpbGUJIng4Nl82NC12bGEtdHlwZWRlZi5jIgog Kwkuc2VjdGlvbgkuZGVidWdfYWJicmV2LCIiLEBwcm9nYml0cwpAQCAtMTA4MDAsMTAgKzExNzAy LDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gv eDg2XzY0LXZsYS10eXBlZGVmLWZvby5TCiArCS5zdHJpbmcJIkdOVSBDIDQuMy4yIDIwMDgxMTA1 IChSZWQgSGF0IDQuMy4yLTcpIgogKwkuaWRlbnQJIkdDQzogKEdOVSkgNC4zLjIgMjAwODExMDUg KFJlZCBIYXQgNC4zLjItNykiCiArCS5zZWN0aW9uCS5ub3RlLkdOVS1zdGFjaywiIixAcHJvZ2Jp dHMKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2 XzY0LXZsYS10eXBlZGVmLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAw MDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0 c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLmMJMjAxMS0wNy0yOSAyMjo1MjowMi4w MDAwMDAwMDAgKzAyMDAKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82 NC12bGEtdHlwZWRlZi5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVk ZWYuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmI4MDljNGUKKy0tLSAv ZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVm LmMKIEBAIC0wLDAgKzEsNDMgQEAKICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0 aGUgR05VIGRlYnVnZ2VyLgogKwpAQCAtMTA4NDgsMTAgKzExNzUxLDExIEBAIEluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVm LmMKICt9CiArCiArI2VuZGlmCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1 aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi5leHAKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2 L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLmV4cAky MDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4 IDAwMDAwMDAuLmIwNTQxMWUKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLmV4cAogQEAgLTAsMCArMSw2NCBAQAogKyMgQ29weXJp Z2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCkBAIC0xMDkxNywxMCAr MTE4MjEsMTAgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIu YXJjaC94ODZfNjQtdmxhLXR5cGVkZWYuZXhwCiArZ2RiX3Rlc3QgIndoYXRpcyBhcnJheSIgInR5 cGUgPSBhcnJheV90IiAic2Vjb25kOiB3aGF0aXMgYXJyYXkiCiArCiArZ2RiX3Rlc3QgInB0eXBl IGFycmF5IiAidHlwZSA9IGNoYXIgXFxcWzc4XFxcXSIgInNlY29uZDogcHR5cGUgYXJyYXkiCi1J bmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4 LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9hcnJheWlkeC5jCTIwMTEtMDEtMDEgMTY6MzM6NDAuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4 LmMJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKK2RpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fy cmF5aWR4LmMKK2luZGV4IDZjMTU4YmYuLjczOWNlMzQgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2FycmF5aWR4LmMKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJy YXlpZHguYwogQEAgLTE3LDYgKzE3LDEzIEBACiAgCiAgaW50IGFycmF5W10gPSB7MSwgMiwgMywg NH07CkBAIC0xMDkzNSwxMCArMTE4MzksMTAgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5jCiAgaW50CiAgbWFpbiAodm9pZCkKICB7 Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5 aWR4LmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmV4cAkyMDExLTAxLTAxIDE2OjMzOjQwLjAwMDAwMDAw MCArMDEwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9h cnJheWlkeC5leHAJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKK2RpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmV4cCBiL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvYXJyYXlpZHguZXhwCitpbmRleCBkOGVlNWMwLi5kZTRiYTc1IDEwMDY0NAorLS0t IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5leHAKKysrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvYXJyYXlpZHguZXhwCiBAQCAtNTcsNCArNTcsMTIgQEAgZ2RiX3Rlc3QgInBy aW50IGFycmF5IiBcCiAgICAgICAgICAgIlxce1xcXFswXFxcXSA9IDEsIFxcXFsxXFxcXSA9IDIs IFxcXFsyXFxcXSA9IDMsIFxcXFszXFxcXSA9IDRcXH0iIFwKICAgICAgICAgICAiUHJpbnQgYXJy YXkgd2l0aCBhcnJheS1pbmRleGVzIG9uIgpAQCAtMTA5NTMsMTEgKzExODU3LDExIEBAIEluZGV4 OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguZXhw CiArCXVuc3VwcG9ydGVkICIkdGVzdCAobm8gR0NDKSIKICsgICAgfQogK30KLUluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZGVmYXVsdC5leHAKLT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9kZWZhdWx0LmV4cAkyMDExLTA1LTIwIDE2OjM3OjIwLjAwMDAwMDAwMCArMDIwMAotKysrIGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9kZWZhdWx0LmV4cAkyMDEx LTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAotQEAgLTYwNyw2ICs2MDcsMTcgQEAgZ2Ri X3Rlc3RfbGlzdF9leGFjdCAic2hvdyBjb252ZW5pZW5jZSIgIgorZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvZGVmYXVsdC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Rl ZmF1bHQuZXhwCitpbmRleCBlMjNhYzIxLi5mOTkyMjFmIDEwMDY0NAorLS0tIGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9kZWZhdWx0LmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9k ZWZhdWx0LmV4cAorQEAgLTYxMSw2ICs2MTEsMTkgQEAgZ2RiX3Rlc3RfbGlzdF9leGFjdCAic2hv dyBjb252ZW5pZW5jZSIgInNob3cgY29udmVuaWVuY2UiIFwKICAJeyRfc2RhdGEgPSB2b2lkfSBc CiAgCXskX3NpZ2luZm8gPSB2b2lkfSBcCiAgCXskX3RocmVhZCA9IDB9IFwKQEAgLTEwOTcyLDEz ICsxMTg3NiwxNiBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2RlZmF1bHQuZXhwCiArCXskX3Byb2JlX2FyZzcgPSA8ZXJyb3I6IE5vIGZyYW1lIHNl bGVjdGVkPn0gXAogKwl7JF9wcm9iZV9hcmc4ID0gPGVycm9yOiBObyBmcmFtZSBzZWxlY3RlZD59 IFwKICsJeyRfcHJvYmVfYXJnOSA9IDxlcnJvcjogTm8gZnJhbWUgc2VsZWN0ZWQ+fSBcCisrCXsk X3Byb2JlX2FyZzEwID0gPGVycm9yOiBObyBmcmFtZSBzZWxlY3RlZD59IFwKKysJeyRfcHJvYmVf YXJnMTEgPSA8ZXJyb3I6IE5vIGZyYW1lIHNlbGVjdGVkPn0gXAogICAgICB9CiAgCiAgI3Rlc3Qg c2hvdyBkaXJlY3RvcmllcwotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVzcy5jCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g L2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVsZC1h ZGRyZXNzLmMJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKK2RpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVsZC1hZGRyZXNzLmMgYi9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVsZC1hZGRyZXNzLmMKK25ldyBm aWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5lZWI3Yjg1CistLS0gL2Rldi9udWxsCisr KysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVsZC1hZGRyZXNzLmMK IEBAIC0wLDAgKzEsMjAgQEAKICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUg R05VIGRlYnVnZ2VyLgogKwpAQCAtMTEwMDAsMTAgKzExOTA3LDExIEBAIEluZGV4OiBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW50ZXJuYWwtdmFyLWZpZWxkLWFk ZHJlc3MuYwogK3N0cnVjdCB7CiArICBpbnQgZmllbGQ7CiArfSBzdGF0aWNzdHJ1Y3QgPSB7IDEg fTsKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW50 ZXJuYWwtdmFyLWZpZWxkLWFkZHJlc3MuZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5 NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVsZC1hZGRyZXNzLmV4cAky MDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvaW50ZXJuYWwtdmFyLWZpZWxkLWFkZHJlc3MuZXhwIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVzcy5leHAKK25ldyBmaWxlIG1v ZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi42ZDgyZTczCistLS0gL2Rldi9udWxsCisrKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVsZC1hZGRyZXNzLmV4cAogQEAg LTAsMCArMSwyNiBAQAogKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCiArCkBAIC0xMTAzMSwxMSArMTE5MzksMTIgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVzcy5l eHAKICsKICtnZGJfdGVzdCB7c2V0ICR2YXJzdHJ1Y3QgPSBzdGF0aWNzdHJ1Y3R9CiArZ2RiX3Rl c3Qge3AgJHZhcnN0cnVjdC5maWVsZH0gIiA9IDEiCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3N0YXAtcHJvYmUuYwotPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9k ZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zdGFwLXByb2JlLmMJMjAxMS0wNy0y OSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsNjkgQEAKK2RpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3N0YXAtcHJvYmUuYyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2Uvc3RhcC1wcm9iZS5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4u MjM2ZGE5NgorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zdGFw LXByb2JlLmMKK0BAIC0wLDAgKzEsMTA4IEBACiArLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9m IEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKICsgICBDb3B5cmlnaHQgMjAxMSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KQEAgLTExMDYyLDYgKzExOTcxLDExIEBAIEluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc3RhcC1wcm9iZS5jCiArX19l eHRlbnNpb25fXyB1bnNpZ25lZCBzaG9ydCB0ZXN0ZV90d29fc2VtYXBob3JlIF9fYXR0cmlidXRl X18gKCh1bnVzZWQpKSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5wcm9iZXMiKSkpOwogKyNk ZWZpbmUgVEVTVDIgdGVzdGVfdHdvX3NlbWFwaG9yZQogKworK19fZXh0ZW5zaW9uX18gdW5zaWdu ZWQgc2hvcnQgdGVzdGVfbTRfc2VtYXBob3JlIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSBfX2F0 dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5wcm9iZXMiKSkpOworKworK19fZXh0ZW5zaW9uX18gdW5z aWduZWQgc2hvcnQgdGVzdGVfcHN0cl9zZW1hcGhvcmUgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkp IF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLnByb2JlcyIpKSk7CisrCisrX19leHRlbnNpb25f XyB1bnNpZ25lZCBzaG9ydCB0ZXN0ZV9wc19zZW1hcGhvcmUgX19hdHRyaWJ1dGVfXyAoKHVudXNl ZCkpIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLnByb2JlcyIpKSk7CiArI2Vsc2UKICsKICsj ZGVmaW5lIFRFU1QgMQpAQCAtMTEwNzYsNDAgKzExOTkwLDc1IEBAIEluZGV4OiBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc3RhcC1wcm9iZS5jCiArI2Vycm9yICJu b3QgdXNpbmcgU3lzdGVtVGFwIHYzIHByb2JlcyIKICsjZW5kaWYKICsKLSt2b2lkCisrc3RydWN0 IGZ1bmNzCisreworKyAgaW50IHZhbDsKKysKKysgIGNvbnN0IGNoYXIgKigqcHMpIChpbnQpOwor K307CisrCisrc3RhdGljIHZvaWQKICttMSAodm9pZCkKICt7CiArICBpZiAoVEVTVDIpCiArICAg IFNUQVBfUFJPQkUgKHRlc3RlLCB0d28pOwogK30KICsKLSt2b2lkCisrc3RhdGljIHZvaWQKICtt MiAodm9pZCkKICt7CiArICBpZiAoVEVTVDIpCiArICAgIFNUQVBfUFJPQkUgKHRlc3RlLCB0d28p OwogK30KICsKLStpbnQKKytzdGF0aWMgaW50CiArZiAoaW50IHgpCiArewogKyAgaWYgKFRFU1Qp Ci0rICAgIFNUQVBfUFJPQkUxKHRlc3RlLCB1c2VyLCB4KTsKKysgICAgU1RBUF9QUk9CRTEgKHRl c3RlLCB1c2VyLCB4KTsKICsgIHJldHVybiB4KzU7CiArfQogKworK3N0YXRpYyBjb25zdCBjaGFy ICoKKytwc3RyIChpbnQgdmFsKQorK3sKKysgIGNvbnN0IGNoYXIgKmEgPSAiVGhpcyBpcyBhIHRl c3QgbWVzc2FnZS4iOworKyAgY29uc3QgY2hhciAqYiA9ICJUaGlzIGlzIGFub3RoZXIgdGVzdCBt ZXNzYWdlLiI7CisrCisrICBTVEFQX1BST0JFMyAodGVzdGUsIHBzLCBhLCBiLCB2YWwpOworKwor KyAgcmV0dXJuIHZhbCA9PSAwID8gYSA6IGI7CisrfQorKworK3N0YXRpYyB2b2lkCisrbTQgKGNv bnN0IHN0cnVjdCBmdW5jcyAqZnMsIGludCB2KQorK3sKKysgIFNUQVBfUFJPQkUzICh0ZXN0ZSwg bTQsIGZzLT52YWwsIGZzLT5wcyAodiksIHYpOworK30KKysKICtpbnQKICttYWluKCkKICt7Ci0r ICBmKGYoMjMpKTsKLSsgIG0xKCk7Ci0rICBtMigpOworKyAgc3RydWN0IGZ1bmNzIGZzOworKwor KyAgZnMudmFsID0gNDI7CisrICBmcy5wcyA9IHBzdHI7CisrCisrICBmIChmICgyMykpOworKyAg bTEgKCk7CisrICBtMiAoKTsKKysKKysgIG00ICgmZnMsIDApOworKyAgbTQgKCZmcywgMSk7Cisr CisrICByZXR1cm4gMDsgLyogbGFzdCBicmVhayBoZXJlICovCiArfQotSW5kZXg6IGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zdGFwLXByb2JlLmV4cAotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAot KysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zdGFwLXByb2Jl LmV4cAkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSw3MiBA QAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc3RhcC1wcm9iZS5leHAgYi9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3N0YXAtcHJvYmUuZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0 NAoraW5kZXggMDAwMDAwMC4uNDY4ZWZiOQorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9zdGFwLXByb2JlLmV4cAorQEAgLTAsMCArMSwxODcgQEAKICsjIENvcHly aWdodCAoQykgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsjIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CkBAIC0xMTEzNSw5ICsxMjA4NCw5IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc3RhcC1wcm9iZS5leHAKICsKICsgICAgaWYgeyRhcmcg IT0gIiJ9IHsKICsgICAgCXNldCBhcmcgImFkZGl0aW9uYWxfZmxhZ3M9JGFyZyIKLSsJc2V0IGFk ZGVuZHVtICIsIHdpdGggc2VtYXBob3JlIgorKwlzZXQgYWRkZW5kdW0gIiwgd2l0aCBzZW1hcGhv cmUsIG5vdCBvcHRpbWl6ZWQiCiArICAgIH0gZWxzZSB7Ci0rCXNldCBhZGRlbmR1bSAiLCBubyBz ZW1hcGhvcmUiCisrCXNldCBhZGRlbmR1bSAiLCBubyBzZW1hcGhvcmUsIG5vdCBvcHRpbWl6ZWQi CiArICAgIH0KICsKICsgICAgaWYge1twcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4 cCAke3Rlc3RmaWxlfSAke3Rlc3RmaWxlfS5jIFwKQEAgLTExMTU2LDIzICsxMjEwNSwxMzUgQEAg SW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zdGFwLXBy b2JlLmV4cAogKwkidGVzdGUgKnVzZXIgKiRoZXggLioiIFwKICsJImluZm8gcHJvYmVzJGFkZGVu ZHVtIgogKyAgICAKLSsgICAgaWYge1tydW50byAicHJvYmU6dGVzdGU6dXNlciJdfSB7Ci0rCXBh c3MgInJ1biB0byBwcm9iZTp0ZXN0ZTp1c2VyJGFkZGVuZHVtIgorKyAgICBpZiB7W3J1bnRvICIt cCB0ZXN0ZTp1c2VyIl19IHsKKysJcGFzcyAicnVuIHRvIC1wIHRlc3RlOnVzZXIkYWRkZW5kdW0i CisrICAgIH0gZWxzZSB7CisrCWZhaWwgInJ1biB0byAtcCB0ZXN0ZTp1c2VyJGFkZGVuZHVtIgor KyAgICB9CisrCisrICAgICMgVGVzdCBwcm9iZSBhcmd1bWVudHMuCisrICAgIGdkYl90ZXN0ICJw cmludCBcJF9wcm9iZV9hcmdjIiAiID0gMSIgXAorKyAgICAicHJpbnQgXCRfcHJvYmVfYXJnYyBm b3IgcHJvYmUgdXNlciRhZGRlbmR1bSIKKysgICAgZ2RiX3Rlc3QgInByaW50IFwkX3Byb2JlX2Fy ZzAgPT0geCIgIiA9IDEiIFwKKysgICAgImNoZWNrIFwkX3Byb2JlX2FyZzAgZm9yIHByb2JlIHVz ZXIkYWRkZW5kdW0iCisrICAgIGdkYl90ZXN0ICJwcmludCBcJF9wcm9iZV9hcmcxIiBcCisrICAg IAkiSW52YWxpZCBwcm9iZSBhcmd1bWVudCAxIC0tIHByb2JlIGhhcyAxIGFyZ3VtZW50cyBhdmFp bGFibGUiIFwKKysgICAgCSJjaGVjayBcJF9wcm9iZV9hcmcxIGZvciBwcm9iZSB1c2VyJGFkZGVu ZHVtIgorKworKyAgICAjIFNldCBhIGJyZWFrcG9pbnQgd2l0aCBtdWx0aXBsZSBwcm9iZSBsb2Nh dGlvbnMuCisrICAgIGdkYl90ZXN0ICJicmVhayAtcCB0ZXN0ZTp0d28iIFwKKysJIkJyZWFrcG9p bnQgXFswLTlcXSsgYXQgJGhleC4qMiBsb2NhdGlvbnMuKiIgXAorKwkic2V0IG11bHRpLWxvY2F0 aW9uIHByb2JlIGJyZWFrcG9pbnQgKHByb2JlIHR3bykkYWRkZW5kdW0iCisrCisrICAgICMgUmVp bml0IEdEQiwgc2V0IGEgYnJlYWtwb2ludCBvbiBwcm9iZSBtNC4KKysgICAgZGVsZXRlX2JyZWFr cG9pbnRzCisrICAgIHJlcnVuX3RvX21haW4KKysgICAgaWYge1tydW50byAiLXAgdGVzdGU6bTQi XX0geworKyAgICAgIHBhc3MgInJ1biB0byAtcCB0ZXN0ZTptNCRhZGRlbmR1bSIKKysgICAgfSBl bHNlIHsKKysgICAgICBmYWlsICJydW4gdG8gLXAgdGVzdGU6bTQkYWRkZW5kdW0iCisrICAgIH0K KysKKysgICAgIyBUZXN0aW5nIHByb2JlIGFyZ3VtZW50cy4KKysgICAgZ2RiX3Rlc3QgInByaW50 IFwkX3Byb2JlX2FyZ2MiICIgPSAzIiBcCisrICAgICJwcmludCBcJF9wcm9iZV9hcmdjIGZvciBw cm9iZSBtNCRhZGRlbmR1bSIKKysgICAgZ2RiX3Rlc3QgInByaW50IFwkX3Byb2JlX2FyZzAiICIg PSA0MiIgXAorKyAgICAiY2hlY2sgXCRfcHJvYmVfYXJnMCBmb3IgcHJvYmUgbTQkYWRkZW5kdW0i CisrICAgIGdkYl90ZXN0ICJwcmludCAoY29uc3QgY2hhciAqKSBcJF9wcm9iZV9hcmcxIiBcCisr ICAgICIgPSAkaGV4IC5UaGlzIGlzIGEgdGVzdCBtZXNzYWdlLioiIFwKKysgICAgImNoZWNrIFwk X3Byb2JlX2FyZzEgZm9yIHByb2JlIG00JGFkZGVuZHVtIgorKyAgICBnZGJfdGVzdCAicHJpbnQg XCRfcHJvYmVfYXJnMiA9PSB2IiAiID0gMSIgXAorKyAgICAiY2hlY2sgXCRfcHJvYmVfYXJnMiBm b3IgcHJvYmUgbTQkYWRkZW5kdW0iCisrCisrICAgICMgUmVpbml0IEdEQiwgc2V0IGEgYnJlYWtw b2ludCBvbiBwcm9iZSBwcy4KKysgICAgZGVsZXRlX2JyZWFrcG9pbnRzCisrICAgIHJlcnVuX3Rv X21haW4KKysgICAgaWYge1tydW50byAiLXAgdGVzdGU6cHMiXX0geworKyAgICAgIHBhc3MgInJ1 biB0byAtcCB0ZXN0ZTptNCRhZGRlbmR1bSIKKysgICAgfSBlbHNlIHsKKysgICAgICBmYWlsICJy dW4gdG8gLXAgdGVzdGU6bTQkYWRkZW5kdW0iCisrICAgIH0KKysKKysgICAgZ2RiX3Rlc3QgInBy aW50IFwkX3Byb2JlX2FyZ2MiICIgPSAzIiBcCisrICAgICJwcmludCBcJF9wcm9iZV9hcmdjIGZv ciBwcm9iZSBwcyRhZGRlbmR1bSIKKysgICAgZ2RiX3Rlc3QgInByaW50IChjb25zdCBjaGFyICop IFwkX3Byb2JlX2FyZzEiIFwKKysgICAgIiA9ICRoZXggLlRoaXMgaXMgYW5vdGhlciB0ZXN0IG1l c3NhZ2UuKiIgXAorKyAgICAicHJpbnQgXCRfcHJvYmVfYXJnMSBmb3IgcHJvYmUgcHMkYWRkZW5k dW0iCisrCisrICAgIHJldHVybiAwCisrfQorKworK3Byb2Mgc3RhcF90ZXN0X25vX2RlYnVnaW5m byB7eyBhcmcgIiIgfX0geworKyAgICBnbG9iYWwgdGVzdGZpbGUgaGV4CisrCisrICAgIGlmIHsk YXJnICE9ICIifSB7CisrICAgIAlzZXQgYXJnICJhZGRpdGlvbmFsX2ZsYWdzPSRhcmciCisrCXNl dCBhZGRlbmR1bSAiLCB3aXRoIHNlbWFwaG9yZSwgb3B0aW1pemVkIgorKyAgICB9IGVsc2Ugewor KwlzZXQgYWRkZW5kdW0gIiwgbm8gc2VtYXBob3JlLCBvcHRpbWl6ZWQiCisrICAgIH0KKysKKysg ICAgaWYge1twcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAk e3Rlc3RmaWxlfS5jIFwKKysJICAgeyRhcmcgbm9kZWJ1ZyBvcHRpbWl6ZT0tTzJ9XX0geworKwly ZXR1cm4gLTEKKysgICAgfQorKworKyAgICBpZiB7W3J1bnRvICItcCB0ZXN0ZTp1c2VyIl19IHsK KysJcGFzcyAicnVuIHRvIC1wIHRlc3RlOnVzZXIkYWRkZW5kdW0iCiArICAgIH0gZWxzZSB7Ci0r CWZhaWwgInJ1biB0byBwcm9iZTp0ZXN0ZTp1c2VyJGFkZGVuZHVtIgorKwlmYWlsICJydW4gdG8g LXAgdGVzdGU6dXNlciRhZGRlbmR1bSIKICsgICAgfQogKwogKyAgICAjIFRlc3QgcHJvYmUgYXJn dW1lbnRzLgotKyAgICBnZGJfdGVzdCAicHJpbnQgXCRfcHJvYmVfYXJnYyIgIiA9IDEiICJwcmlu dCBcJF9wcm9iZV9hcmdjJGFkZGVuZHVtIgotKyAgICBnZGJfdGVzdCAicHJpbnQgXCRfcHJvYmVf YXJnMCA9PSB4IiAiID0gMSIgImNoZWNrIFwkX3Byb2JlX2FyZzAkYWRkZW5kdW0iCisrICAgIGdk Yl90ZXN0ICJwcmludCBcJF9wcm9iZV9hcmdjIiAiID0gMSIgXAorKyAgICAicHJpbnQgXCRfcHJv YmVfYXJnYyBmb3IgcHJvYmUgdXNlciRhZGRlbmR1bSIKKysgICAgZ2RiX3Rlc3QgInByaW50IFwk X3Byb2JlX2FyZzAgPT0gMjMiICIgPSAxIiBcCisrICAgICJjaGVjayBcJF9wcm9iZV9hcmcwIGZv ciBwcm9iZSB1c2VyJGFkZGVuZHVtIgogKyAgICBnZGJfdGVzdCAicHJpbnQgXCRfcHJvYmVfYXJn MSIgXAogKyAgICAJIkludmFsaWQgcHJvYmUgYXJndW1lbnQgMSAtLSBwcm9iZSBoYXMgMSBhcmd1 bWVudHMgYXZhaWxhYmxlIiBcCi0rICAgIAkiY2hlY2sgXCRfcHJvYmVfYXJnMSRhZGRlbmR1bSIK KysgICAgCSJjaGVjayBcJF9wcm9iZV9hcmcxIGZvciBwcm9iZSB1c2VyJGFkZGVuZHVtIgogKwog KyAgICAjIFNldCBhIGJyZWFrcG9pbnQgd2l0aCBtdWx0aXBsZSBwcm9iZSBsb2NhdGlvbnMuCi0r ICAgIGdkYl90ZXN0ICJicmVhayBwcm9iZTp0ZXN0ZTp0d28iIFwKLSsJIkJyZWFrcG9pbnQgLiog YXQgJGhleC4qMiBsb2NhdGlvbnMuKiIgXAotKwkic2V0IG11bHRpLWxvY2F0aW9uIHByb2JlIGJy ZWFrcG9pbnQkYWRkZW5kdW0iCisrICAgICMgSW4gdGhpcyBzY2VuYXJpbywgd2UgbWF5IGV4cGVj dCBtb3JlIHRoYW4gMiBsb2NhdGlvbnMgYmVjYXVzZSBvZgorKyAgICAjIHRoZSBvcHRpbWl6YXRp b25zIChpbmxpbmluZywgbG9vcCB1bnJvbGxpbmcsIGV0YykuCisrICAgIGdkYl90ZXN0ICJicmVh ayAtcCB0ZXN0ZTp0d28iIFwKKysJIkJyZWFrcG9pbnQgLiogYXQgJGhleC4qXFswLTlcXSsgbG9j YXRpb25zLioiIFwKKysJInNldCBtdWx0aS1sb2NhdGlvbiBwcm9iZSBicmVha3BvaW50IChwcm9i ZSB0d28pJGFkZGVuZHVtIgorKworKyAgICAjIFJlaW5pdCBHREIsIHNldCBhIGJyZWFrcG9pbnQg b24gcHJvYmUgbTQuCisrICAgIGRlbGV0ZV9icmVha3BvaW50cworKyAgICByZXJ1bl90b19tYWlu CisrICAgIGlmIHtbcnVudG8gIi1wIHRlc3RlOm00Il19IHsKKysgICAgICBwYXNzICJydW4gdG8g LXAgdGVzdGU6bTQkYWRkZW5kdW0iCisrICAgIH0gZWxzZSB7CisrICAgICAgZmFpbCAicnVuIHRv IC1wIHRlc3RlOm00JGFkZGVuZHVtIgorKyAgICB9CisrCisrICAgICMgVGVzdGluZyBwcm9iZSBh cmd1bWVudHMuCisrICAgIGdkYl90ZXN0ICJwcmludCBcJF9wcm9iZV9hcmdjIiAiID0gMyIgXAor KyAgICAicHJpbnQgXCRfcHJvYmVfYXJnYyBmb3IgcHJvYmUgbTQkYWRkZW5kdW0iCisrICAgIGdk Yl90ZXN0ICJwcmludCBcJF9wcm9iZV9hcmcwIiAiID0gNDIiIFwKKysgICAgImNoZWNrIFwkX3By b2JlX2FyZzAgZm9yIHByb2JlIG00JGFkZGVuZHVtIgorKyAgICBnZGJfdGVzdCAicHJpbnQgKGNv bnN0IGNoYXIgKikgXCRfcHJvYmVfYXJnMSIgXAorKyAgICAiID0gJGhleCAuVGhpcyBpcyBhIHRl c3QgbWVzc2FnZS4qIiBcCisrICAgICJjaGVjayBcJF9wcm9iZV9hcmcxIGZvciBwcm9iZSBtNCRh ZGRlbmR1bSIKKysgICAgZ2RiX3Rlc3QgInByaW50IFwkX3Byb2JlX2FyZzIgPT0gMCIgIiA9IDEi IFwKKysgICAgImNoZWNrIFwkX3Byb2JlX2FyZzIgZm9yIHByb2JlIG00JGFkZGVuZHVtIgorKwor KyAgICAjIFJlaW5pdCBHREIsIHNldCBhIGJyZWFrcG9pbnQgb24gcHJvYmUgcHMuCisrICAgIGRl bGV0ZV9icmVha3BvaW50cworKyAgICByZXJ1bl90b19tYWluCisrICAgIGlmIHtbcnVudG8gIi1w IHRlc3RlOnBzIl19IHsKKysgICAgICBwYXNzICJydW4gdG8gLXAgdGVzdGU6bTQkYWRkZW5kdW0i CisrICAgIH0gZWxzZSB7CisrICAgICAgZmFpbCAicnVuIHRvIC1wIHRlc3RlOm00JGFkZGVuZHVt IgorKyAgICB9CisrCisrICAgIGdkYl90ZXN0ICJwcmludCBcJF9wcm9iZV9hcmdjIiAiID0gMyIg XAorKyAgICAicHJpbnQgXCRfcHJvYmVfYXJnYyBmb3IgcHJvYmUgcHMkYWRkZW5kdW0iCisrICAg IGdkYl90ZXN0ICJwcmludCAoY29uc3QgY2hhciAqKSBcJF9wcm9iZV9hcmcxIiBcCisrICAgICIg PSAkaGV4IC5UaGlzIGlzIGFub3RoZXIgdGVzdCBtZXNzYWdlLioiIFwKKysgICAgInByaW50IFwk X3Byb2JlX2FyZzEgZm9yIHByb2JlIHBzJGFkZGVuZHVtIgogKwogKyAgICByZXR1cm4gMAogK30K QEAgLTExMTgxLDExICsxMjI0Miw5NiBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL3N0YXAtcHJvYmUuZXhwCiArICAgIHVudGVzdGVkIHN0YXAtcHJv YmUuZXhwCiArICAgIHJldHVybiAtMQogK30KKysKICtzdGFwX3Rlc3QgIi1EVVNFX1BST0JFUyIK LUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLW92 ZXJmbG93LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4w MDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvdmxhLW92ZXJmbG93LmMJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAK KytzdGFwX3Rlc3Rfbm9fZGVidWdpbmZvCisrc3RhcF90ZXN0X25vX2RlYnVnaW5mbyAiLURVU0Vf UFJPQkVTIgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLWZyYW1lLmMg Yi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1mcmFtZS5jCituZXcgZmlsZSBtb2RlIDEwMDY0 NAoraW5kZXggMDAwMDAwMC4uNTc1MGY2OAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS92bGEtZnJhbWUuYworQEAgLTAsMCArMSwzMSBAQAorKy8qIFRoaXMgdGVz dGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCisrCisrICAgQ29weXJpZ2h0 IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysKKytp bnQKKyttYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisreworKyAgY2hhciBzWzIgKyBhcmdj XTsKKysgIHZvaWQgKCpmKSAoY2hhciAqKSA9IDA7CisrCisrICBtZW1zZXQgKHMsIDAsIHNpemVv ZiAocykpOworKyAgc1swXSA9ICdYJzsKKysKKysgIGYgKHMpOworKyAgcmV0dXJuIDA7CisrfQor ZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLWZyYW1lLmV4cCBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLWZyYW1lLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2lu ZGV4IDAwMDAwMDAuLjQ3NzM2YzcKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvdmxhLWZyYW1lLmV4cAorQEAgLTAsMCArMSwzOCBAQAorKyMgQ29weXJpZ2h0IDIw MTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIworKyMgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysj IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KKysKKytzZXQgdGVzdGZpbGUgdmxhLWZyYW1lCisrc2V0IGV4ZWN1dGFibGUg JHt0ZXN0ZmlsZX0KKysKKytpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4 cCAke2V4ZWN1dGFibGV9XSB9IHsKKysgICAgcmV0dXJuIC0xCisrfQorKworK2lmICFbcnVudG9f bWFpbl0geworKyAgICByZXR1cm4gLTEKKyt9CisrCisrc2V0IHRlc3QgImNvbnRpbnVlIgorK2dk Yl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKKysgICAgLXJlICJDb250aW51aW5nXFwuXHJc blxyXG5Qcm9ncmFtIHJlY2VpdmVkIHNpZ25hbCBTSUdTRUdWLCBTZWdtZW50YXRpb24gZmF1bHRc XC5cclxuMHgwKyBpbiBcXD9cXD8gXFwoXFwpXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJcGFzcyAk dGVzdAorKyAgICB9CisrICAgIC1yZSAiXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJdW50ZXN0ZWQg JHt0ZXN0ZmlsZX0uZXhwCisrCXJldHVybgorKyAgICB9CisrfQorKworK2dkYl90ZXN0ICJidCBm dWxsIiAiXHJcbiArcyA9IFwiWFxcXFwwMDBcIlxyXG4uKiIKK2RpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92 bGEtb3ZlcmZsb3cuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmM1ZDVl ZTAKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLW92ZXJm bG93LmMKIEBAIC0wLDAgKzEsMzAgQEAKICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RC LCB0aGUgR05VIGRlYnVnZ2VyLgogKwpAQCAtMTEyMTcsMTAgKzEyMzYzLDExIEBAIEluZGV4OiBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLW92ZXJmbG93LmMK ICsKICsgIHJldHVybiAwOwogK30KLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvdmxhLW92ZXJmbG93LmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVs bAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtb3ZlcmZsb3cuZXhwCTIwMTEtMDctMjkg MjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS92bGEtb3ZlcmZsb3cuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtb3ZlcmZs b3cuZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMjRhNjA4ZgorLS0t IC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtb3ZlcmZsb3cuZXhw CiBAQCAtMCwwICsxLDEwOSBAQAogKyMgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCiArCkBAIC0xMTMzMSwxMCArMTI0NzgsMTEgQEAgSW5kZXg6IGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtb3ZlcmZsb3cuZXhwCiArZ2Ri X3Rlc3QgImJ0IiAiaW4gXFteIFxdKmFib3J0IFxcKC4qIGluIG1haW4gXFwoLioiICJCYWNrdHJh Y2UgYWZ0ZXIgYWJvcnQoKSIKICsKICt2ZXJib3NlIC1sb2cgImtiX2ZvdW5kIGluIGJ0IGFmdGVy IGFib3J0KCkgPSBbZXhwciBbbWVtb3J5X3ZfcGFnZXNfZ2V0XSAqICRwYWdlc2l6ZSAvIDEwMjRd IgotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEu YwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAw MCArMDAwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92 bGEuYwkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAorZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5j CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZTFmM2VkMQorLS0tIC9kZXYv bnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEuYwogQEAgLTAsMCArMSw1NSBA QAogKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCiAr CkBAIC0xMTM5MSwxMCArMTI1MzksMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEuYwogKyAgZm9vICg3OCk7CiArICByZXR1cm4gMDsKICt9 Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5l eHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAw MDAgKzAwMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv dmxhLmV4cAkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAorZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv dmxhLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjVkYTczNzgKKy0t LSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmV4cAogQEAgLTAs MCArMSw2MiBAQAogKyMgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCiArCkBAIC0xMTQ1OCwxMSArMTI2MDcsMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEuZXhwCiArZ2RiX3Rlc3QgInAgdGVtcDEiICIg PSAnMScgPHJlcGVhdHMgNzggdGltZXM+IiAic2Vjb25kOiBwcmludCB0ZW1wMSIKICtnZGJfdGVz dCAicCB0ZW1wMiIgIiA9ICcyJyA8cmVwZWF0cyA3OCB0aW1lcz4iICJzZWNvbmQ6IHByaW50IHRl bXAyIgogK2dkYl90ZXN0ICJwIHRlbXAzIiAiID0gJzMnIDxyZXBlYXRzIDQ4IHRpbWVzPiIgInNl Y29uZDogcHJpbnQgdGVtcDMiCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1 aXRlL2dkYi5jcC9uZXh0b3ZlcnRocm93LmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAu MjAxMTA3MjIub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uZXh0b3ZlcnRocm93LmV4cAkyMDEx LTAxLTAxIDE2OjMzOjQ0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmV4dG92ZXJ0aHJvdy5leHAJMjAxMS0wNy0yOSAyMjo1Mjow Mi4wMDAwMDAwMDAgKzAyMDAKLUBAIC01Myw2ICs1MywxNyBAQCBnZGJfdGVzdF9tdWx0aXBsZSAi cHJpbnQgX1Vud2luZF9EZWJ1Z0hvCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Av bmV4dG92ZXJ0aHJvdy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uZXh0b3ZlcnRocm93LmV4 cAoraW5kZXggY2M5ZmU4Ni4uMmYxNmFmMSAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmNwL25leHRvdmVydGhyb3cuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uZXh0b3Zl cnRocm93LmV4cAorQEAgLTU4LDYgKzU4LDE3IEBAIGdkYl90ZXN0X211bHRpcGxlICJwcmludCBf VW53aW5kX0RlYnVnSG9vayIgImNoZWNrIGZvciB1bndpbmRlciBob29rIiB7CiAgICAgIH0KICB9 CiAgaWYgeyEkb2t9IHsKQEAgLTExNDgwLDEwICsxMjYyOSwxMSBAQCBJbmRleDogZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uZXh0b3ZlcnRocm93LmV4cAogICAgICB1 bnN1cHBvcnRlZCAibmV4dG92ZXJ0aHJvdy5leHAgY291bGQgbm90IGZpbmQgX1Vud2luZF9EZWJ1 Z0hvb2siCiAgICAgIHJldHVybiAtMQogIH0KLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYm91bmQtbG9jbGlzdC5TCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWJvdW5kLWxvY2xp c3QuUwkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAorZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYm91bmQtbG9jbGlzdC5TIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZHdhcmYyL2R3Mi1ib3VuZC1sb2NsaXN0LlMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0Citp bmRleCAwMDAwMDAwLi5hYWMzYmFhCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5kd2FyZjIvZHcyLWJvdW5kLWxvY2xpc3QuUwogQEAgLTAsMCArMSwyNDYgQEAKICsvKiBU aGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwpAQCAtMTE3 MzEsMTAgKzEyODgxLDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3Vp dGUvZ2RiLmR3YXJmMi9kdzItYm91bmQtbG9jbGlzdC5TCiArCS5zdHJpbmcJCSJjaGFyIgogKy5M dWludF9zdHI6CiArCS5zdHJpbmcJCSJ1bnNpZ25lZCBpbnQiCi1JbmRleDogZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWJvdW5kLWxvY2xpc3QuZXhwCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICsw MDAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcy LWJvdW5kLWxvY2xpc3QuZXhwCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCitk aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1ib3VuZC1sb2NsaXN0LmV4 cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYm91bmQtbG9jbGlzdC5leHAKK25ldyBm aWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi44MTVlZDkzCistLS0gL2Rldi9udWxsCisr KysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWJvdW5kLWxvY2xpc3QuZXhwCiBAQCAt MCwwICsxLDU0IEBACiArIyBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KICsKQEAgLTExNzkwLDEwICsxMjk0MSwxMSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWJvdW5kLWxvY2xpc3QuZXhwCiArCiAr IyBUaGUgcmVnaXN0ZXIgY29udGFpbnMgdW5wcmVkaWN0YWJsZSB2YWx1ZSAtIHRoZSBhcnJheSBz aXplLgogK2dkYl90ZXN0ICJwdHlwZSByZWdfc3RyaW5nIiB7dHlwZSA9IGNoYXIgXFstP1swLTld K1xdfQotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYy L2R3Mi1zdHJpcHBlZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6 MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1 aXRlL2dkYi5kd2FyZjIvZHcyLXN0cmlwcGVkLmMJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAw MDAgKzAyMDAKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cmlw cGVkLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cmlwcGVkLmMKK25ldyBmaWxl IG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4xZjAyZDkwCistLS0gL2Rldi9udWxsCisrKysg Yi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cmlwcGVkLmMKIEBAIC0wLDAgKzEsNDIg QEAKICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgog KwpAQCAtMTE4MzcsMTAgKzEyOTg5LDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RyaXBwZWQuYwogKyAgZnVuYzEgKDEsIDIpOwog KyAgcmV0dXJuIDA7CiArfQotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZHdhcmYyL2R3Mi1zdHJpcHBlZC5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJ MTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RyaXBwZWQuZXhwCTIwMTEtMDctMjkg MjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu ZHdhcmYyL2R3Mi1zdHJpcHBlZC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0 cmlwcGVkLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjFjNmU4NGEK Ky0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RyaXBw ZWQuZXhwCiBAQCAtMCwwICsxLDc5IEBACiArIyBDb3B5cmlnaHQgMjAwNiBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KICsKQEAgLTExOTIxLDEwICsxMzA3NCwxMSBAQCBJbmRleDogZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cmlwcGVkLmV4 cAogK2dkYl90ZXN0ICJzdGVwIiBcCiArICAgICAgICAgImZ1bmMuKiBcXCguKlxcKSBhdCAuKiIg XAogKyAgICAgICAgICJzdGVwIgotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJ1Y3QtbWVtYmVyLWRhdGEtbG9jYXRpb24uUwotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAot KysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJ1 Y3QtbWVtYmVyLWRhdGEtbG9jYXRpb24uUwkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCAr MDIwMAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RydWN0LW1l bWJlci1kYXRhLWxvY2F0aW9uLlMgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVj dC1tZW1iZXItZGF0YS1sb2NhdGlvbi5TCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAw MDAwMC4uNWZjZGQ4NAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdh cmYyL2R3Mi1zdHJ1Y3QtbWVtYmVyLWRhdGEtbG9jYXRpb24uUwogQEAgLTAsMCArMSw4MyBAQAog Ky8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCiArCkBA IC0xMjAwOSwxMCArMTMxNjMsMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rl c3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJ1Y3QtbWVtYmVyLWRhdGEtbG9jYXQKICsKICsJLmJ5 dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KICsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3Ig Ki8KLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9k dzItc3RydWN0LW1lbWJlci1kYXRhLWxvY2F0aW9uLmV4cAotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYv bnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJ1Y3QtbWVtYmVyLWRhdGEt bG9jYXRpb24uZXhwCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCitkaWZmIC0t Z2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJ1Y3QtbWVtYmVyLWRhdGEtbG9j YXRpb24uZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJ1Y3QtbWVtYmVyLWRh dGEtbG9jYXRpb24uZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uYzQx MTUxYworLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1z dHJ1Y3QtbWVtYmVyLWRhdGEtbG9jYXRpb24uZXhwCiBAQCAtMCwwICsxLDM3IEBACiArIyBDb3B5 cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKQEAgLTEyMDUxLDEw ICsxMzIwNiwxMSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dk Yi5kd2FyZjIvZHcyLXN0cnVjdC1tZW1iZXItZGF0YS1sb2NhdAogK2NsZWFuX3Jlc3RhcnQgJGJp bmZpbGUKICsKICtnZGJfdGVzdCAicHR5cGUgc3RydWN0IHNvbWVfc3RydWN0IiAidHlwZSA9IHN0 cnVjdCBzb21lX3N0cnVjdCB7XFtcclxuIFx0XF0qdm9pZCBmaWVsZDtcW1xyXG4gXHRcXSp9Igot SW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2Fy Zi1zdHJpZGUuZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6 MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5leHAJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAw MDAgKzAyMDAKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R3YXJmLXN0 cmlkZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5leHAKK25l dyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5kN2I4YmVhCistLS0gL2Rldi9udWxs CisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5leHAKIEBAIC0w LDAgKzEsNDIgQEAKICsjIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgogKwpAQCAtMTIwOTgsMTAgKzEzMjU0LDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmV4cAogK2dkYl9jb250 aW51ZV90b19icmVha3BvaW50ICJicmVhay1oZXJlIiAiLipicmVhay1oZXJlLioiCiArZ2RiX3Rl c3QgInAgYzQwcHQoMSkiICIgPSAnMC1oZWxsby4qIgogK2dkYl90ZXN0ICJwIGM0MHB0KDIpIiAi ID0gJzEtaGVsbG8uKiIKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmY5MAotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkx OTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZjkwCTIwMTEtMDctMjkg MjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9kd2FyZi1zdHJpZGUuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2Fy Zi1zdHJpZGUuZjkwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZTQ5MmIz YQorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1z dHJpZGUuZjkwCiBAQCAtMCwwICsxLDQwIEBACiArISBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KICshCkBAIC0xMjE0MywxMCArMTMzMDAsMTEgQEAgSW5kZXg6 IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJp ZGUuZjkwCiArICBwcmludCAqLCBjNDBwdCAgISBicmVhay1oZXJlCiArCiArZW5kIHByb2dyYW0g cmVwcm8KLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vZHluYW1pYy1vdGhlci1mcmFtZS1zdHViLmY5MAotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVs bAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1lLXN0dWIu ZjkwCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCitkaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1lLXN0dWIuZjkwIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1lLXN0dWIuZjkwCituZXcg ZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMjYxY2UxNworLS0tIC9kZXYvbnVsbAor KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1lLXN0dWIu ZjkwCiBAQCAtMCwwICsxLDI0IEBACiArISBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KICshCkBAIC0xMjE3MiwxMCArMTMzMzAsMTEgQEAgSW5kZXg6IGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZy YW1lLXN0dWIuZjkKICsgIHJlYWwgOjogZHVtbXkKICsgIGR1bW15ID0gMQogK2VuZCBzdWJyb3V0 aW5lIGJhcgotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9keW5hbWljLW90aGVyLWZyYW1lLmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkx OTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1lLmV4cAkyMDEx LTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vZHluYW1pYy1vdGhlci1mcmFtZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUuZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAor aW5kZXggMDAwMDAwMC4uZmE0MWI4MAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1lLmV4cAogQEAgLTAsMCArMSwzNyBAQAog KyMgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCkBAIC0x MjIxNCwxMCArMTMzNzMsMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1lLmV4cAogK30KICsKICtnZGJfdGVz dCAiYnQiIHtmb28gXChzdHJpbmc9J2hlbGxvJy4qfQotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1lLmY5MAotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAw MAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5h bWljLW90aGVyLWZyYW1lLmY5MAkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAor ZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy1vdGhlci1mcmFt ZS5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUuZjkw CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMmJjNjM3ZAorLS0tIC9kZXYv bnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1l LmY5MAogQEAgLTAsMCArMSwzNiBAQAogKyEgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCiArIQpAQCAtMTIyNTUsMTEgKzEzNDE1LDEyIEBAIEluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy1vdGhlci1m cmFtZS5mOTAKICsgIGVuZCBpbnRlcmZhY2UKICsgIGNhbGwgZm9vICgnaGVsbG8nKQogK2VuZAot SW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5h bWljLmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAw MDAwMDAwMCArMDAwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9keW5hbWljLmV4cAkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAot QEAgLTAsMCArMSwxNDUgQEAKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L2R5bmFtaWMuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmV4cAorbmV3 IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmU3OWU5NGEKKy0tLSAvZGV2L251bGwK KysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5leHAKK0BAIC0wLDAgKzEs MTUyIEBACiArIyBDb3B5cmlnaHQgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K ICsKICsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CkBAIC0xMjMyNyw2ICsxMzQ4OCwxMyBAQCBJbmRleDogZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZXhwCiArZ2Ri X3Rlc3QgInAgdmFydiIgIlxcJFxbMC05XF0qID0gKDwob2JqZWN0fHRoZSBhcnJheSkgaXMgbm90 IGFzc29jaWF0ZWQ+fC4qKENhbm5vdCBhY2Nlc3MgaXR8VW5hYmxlIHRvIGFjY2VzcyB0aGUgb2Jq ZWN0KSBiZWNhdXNlIHRoZSBvYmplY3QgaXMgbm90IGFzc29jaWF0ZWQuKSIgInAgdmFydiB1bmFz c29jaWF0ZWQiCiArZ2RiX3Rlc3QgInB0eXBlIHZhcnYiICJ0eXBlID0gKDwob2JqZWN0fHRoZSBh cnJheSkgaXMgbm90IGFzc29jaWF0ZWQ+fC4qKENhbm5vdCBhY2Nlc3MgaXR8VW5hYmxlIHRvIGFj Y2VzcyB0aGUgb2JqZWN0KSBiZWNhdXNlIHRoZSBvYmplY3QgaXMgbm90IGFzc29jaWF0ZWQuKSIg InB0eXBlIHZhcnYgdW5hc3NvY2lhdGVkIgogKworK3NldCB0ZXN0ICJvdXRwdXQgdmFyeCIKKytn ZGJfdGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7CisrICAgIC1yZSAiXm91dHB1dCB2YXJ4XHJc blxbKCkgLDY3ODkuXF0qJGdkYl9wcm9tcHQgJCIgeworKwlwYXNzICR0ZXN0CisrICAgIH0KKyt9 CisrCiArZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcnYtYXNzb2NpYXRl ZCJdCiArZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcnYtYXNzb2NpYXRlZCIKICtnZGJf dGVzdCAicCB2YXJ4KDMsIDcsIDE5KSIgIlxcJFxbMC05XF0qID0gNiIgInAgdmFyeCgzLCA3LCAx OSkgd2l0aCB2YXJ2IGFzc29jaWF0ZWQiCkBAIC0xMjQwNSwxMCArMTM1NzMsMTEgQEAgSW5kZXg6 IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmV4 cAogK2dkYl90ZXN0ICJwIHZhcnQoMyw4KSIgIlxcJFxbMC05XF0qID0gOSIKICsjIG1hcHMgdG8g Zm9vOjp2YXJ5KDEsMykKICtnZGJfdGVzdCAicCB2YXJ0KDIsOSkiICJcXCRcWzAtOVxdKiA9IDEw IgotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9k eW5hbWljLmY5MAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAw LjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9keW5hbWljLmY5MAkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIw MAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5mOTAgYi9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZjkwCituZXcgZmlsZSBtb2RlIDEwMDY0 NAoraW5kZXggMDAwMDAwMC4uMGY0MzU2NAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmY5MAogQEAgLTAsMCArMSw5OCBAQAogKyEgQ29weXJp Z2h0IDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArIQpAQCAtMTI1MDgsMTAg KzEzNjc3LDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vZHluYW1pYy5mOTAKICsgIGlmICh4ICgxLCAxKSAubmUuIDggLm9yLiB4ICgyLCAy KSAubmUuIDkgLm9yLiB4ICgxLCAyKSAubmUuIDQpIGNhbGwgYWJvcnQKICsgIGlmICh4ICgzLCAx KSAubmUuIDEwKSBjYWxsIGFib3J0CiArZW5kCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0cmluZy5leHAKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2 L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4cAkyMDExLTA3LTI5 IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vc3RyaW5nLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4 cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjM5ZGUyYzQKKy0tLSAvZGV2 L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4cAogQEAgLTAs MCArMSw1OSBAQAogKyMgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCiArCkBAIC0xMjU3MiwxMCArMTM3NDIsMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZXhwCiArZ2RiX2NvbnRpbnVlX3Rv X2JyZWFrcG9pbnQgInZhci1maW5pc2giCiArZ2RiX3Rlc3QgInAgZSIgIlxcJFxbMC05XF0qID0g J2UgICAnIiAicCBlIHJlLXNldCIKICtnZGJfdGVzdCAicCBmIiAiXFwkXFswLTlcXSogPSBcXChc XCggJ2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAn XFwpIFxcKCAnZjIgICcsICdmICAgJywgJ2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAnLCAn ZiAgICdcXCkgXFwoICdmICAgJywgJ2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAnLCAnZiAg ICcsICdmICAgJ1xcKSBcXCkiICJwICpmIHJlLXNldCIKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmY5MAotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZjkwCTIwMTEt MDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJp bmcuZjkwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMjI2ZGM1ZAorLS0t IC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZjkwCiBA QCAtMCwwICsxLDM3IEBACiArISBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KICshCkBAIC0xMjYxNCwxMCArMTM3ODUsMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZjkwCiArICBoID0gJ2gn CiArICBjYWxsIGZvbyAoZywgaCkKICtlbmQKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3VicmFuZ2UuZXhwCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rl di9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YnJhbmdlLmV4cAkyMDExLTA3 LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vc3VicmFuZ2UuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJy YW5nZS5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5jODE5ZTIzCist LS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YnJhbmdlLmV4 cAogQEAgLTAsMCArMSw2MCBAQAogKyMgQ29weXJpZ2h0IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCiArCkBAIC0xMjY3OSwxMCArMTM4NTEsMTEgQEAgSW5kZXg6IGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJyYW5nZS5leHAKICtkZWxl dGVfYnJlYWtwb2ludHMKICtnZGJfdW5sb2FkCiArZ2RiX3Rlc3Qge3AgJGEgKDMsIDI6Mil9IHsg PSBcKDIzXCl9Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL3N1YnJhbmdlLmY5MAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAx IDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJyYW5nZS5mOTAJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAw MDAwMDAgKzAyMDAKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YnJh bmdlLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3VicmFuZ2UuZjkwCituZXcgZmls ZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNDc0N2VhOQorLS0tIC9kZXYvbnVsbAorKysr IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJyYW5nZS5mOTAKIEBAIC0wLDAgKzEsMjgg QEAKICshIENvcHlyaWdodCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKyEK QEAgLTEyNzEyLDEwICsxMzg4NSwxMCBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YnJhbmdlLmY5MAogKyAgcHRyID0+IGEKICsgIHdyaXRl ICgqLCopIGEgICAgICAgICAgICAgICAgICEgYnJlYWstc3RhdGljCiArZW5kCi1JbmRleDogZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmdk Yi9zZWxmdGVzdC5leHAJMjAxMS0wNy0yOSAyMjo1MjowMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAJMjAx MS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0 LmV4cAoraW5kZXggMzBhNzFkZC4uNGJiOGU3ZCAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUv Z2RiLmdkYi9zZWxmdGVzdC5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVz dC5leHAKIEBAIC05Miw2ICs5MiwxMCBAQCBwcm9jIGRvX3N0ZXBzX2FuZF9uZXh0cyB7fSB7CiAg CQlzZXQgZGVzY3JpcHRpb24gInN0ZXAgb3ZlciB0dHlhcmcgaW5pdGlhbGl6YXRpb24iCiAgCQlz ZXQgY29tbWFuZCAic3RlcCIKQEAgLTEyNzI3LDEwICsxMzkwMCwxMSBAQCBJbmRleDogZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwCiAgCSAgICAt cmUgIi4qcHJlX3N0YXRfY2hhaW4gPSBtYWtlX2NvbW1hbmRfc3RhdHNfY2xlYW51cC4qJGdkYl9w cm9tcHQgJCIgewogIAkJc2V0IGRlc2NyaXB0aW9uICJuZXh0IG92ZXIgbWFrZV9jb21tYW5kX3N0 YXRzX2NsZWFudXAgYW5kIGV2ZXJ5dGhpbmcgaXQgY2FsbHMiCiAgCQlzZXQgY29tbWFuZCAibmV4 dCIKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pMi12 YXItc3RhbGUtdHlwZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6 MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1 aXRlL2dkYi5taS9taTItdmFyLXN0YWxlLXR5cGUuYwkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAw MDAwMCArMDIwMAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pMi12YXItc3Rh bGUtdHlwZS5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkyLXZhci1zdGFsZS10eXBlLmMKK25l dyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5lYmNlZDNjCistLS0gL2Rldi9udWxs CisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5taS9taTItdmFyLXN0YWxlLXR5cGUuYwogQEAgLTAs MCArMSwyNiBAQAogKy8qIENvcHlyaWdodCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgogKwpAQCAtMTI3NTgsMTAgKzEzOTMyLDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pMi12YXItc3RhbGUtdHlwZS5jCiArCiArICByZXR1 cm4gMDsKICt9Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5t aS9taTItdmFyLXN0YWxlLXR5cGUuZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAt MDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvdGVzdHN1aXRlL2dkYi5taS9taTItdmFyLXN0YWxlLXR5cGUuZXhwCTIwMTEtMDctMjkgMjI6 NTI6MDIuMDAwMDAwMDAwICswMjAwCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkv bWkyLXZhci1zdGFsZS10eXBlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pMi12YXItc3Rh bGUtdHlwZS5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi43NGExMDRl CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5taS9taTItdmFyLXN0YWxl LXR5cGUuZXhwCiBAQCAtMCwwICsxLDU3IEBACiArIyBDb3B5cmlnaHQgMjAxMSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KICsjCkBAIC0xMjgyMCwxNCArMTM5OTUsMTUgQEAgSW5kZXg6 IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkyLXZhci1zdGFsZS10 eXBlLmV4cAogK21pX2NyZWF0ZV92YXJvYmogInZsYSIgInZsYSIgImNyZWF0ZSBsb2NhbCB2YXJp YWJsZSB2bGEiCiArCiArbWlfZ2RiX3Rlc3QgIi12YXItdXBkYXRlICoiICJcXF5kb25lLGNoYW5n ZWxpc3Q9LioiICItdmFyLXVwZGF0ZSAqIgotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L3Rlc3RzdWl0ZS9nZGIubXVsdGkvd2F0Y2hwb2ludC1tdWx0aS5jCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g L2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5tdWx0aS93YXRjaHBvaW50LW11bHRpLmMJ MjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsNTkgQEAKK2Rp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5tdWx0aS93YXRjaHBvaW50LW11bHRpLmMgYi9n ZGIvdGVzdHN1aXRlL2dkYi5tdWx0aS93YXRjaHBvaW50LW11bHRpLmMKK25ldyBmaWxlIG1vZGUg MTAwNjQ0CitpbmRleCAwMDAwMDAwLi41MTY5N2IwCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIv dGVzdHN1aXRlL2dkYi5tdWx0aS93YXRjaHBvaW50LW11bHRpLmMKK0BAIC0wLDAgKzEsNTEgQEAK ICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwot KyAgIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIENv cHlyaWdodCAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwogKyAgIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CiArICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTEyODQ4LDE0ICsxNDAyNCw3IEBAIEluZGV4OiBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLm11bHRpL3dhdGNocG9pbnQtbXVs dGkuYwogK3N0YXRpYyB2b2xhdGlsZSBpbnQgYSwgYiwgYzsKICsKICtzdGF0aWMgdm9pZAotK21h cmtlcl9leGl0MSAodm9pZCkKLSt7Ci0rICBhID0gMTsKLSt9Ci0rCi0rLyogV29ya2Fyb3VuZCBQ UiBicmVha3BvaW50cy8xMjI3MiBieSB0d28gZGlmZmVyZW50IGJyZWFrcG9pbnQgbG9jYXRpb25z LiAgKi8KLStzdGF0aWMgdm9pZAotK21hcmtlcl9leGl0MiAodm9pZCkKKyttYXJrZXJfZXhpdCAo dm9pZCkKICt7CiArICBhID0gMTsKICt9CkBAIC0xMjg4MCwxNyArMTQwNDksMTcgQEAgSW5kZXg6 IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIubXVsdGkvd2F0Y2hwb2ludC1t dWx0aS5jCiArICBpID0gcHRocmVhZF9qb2luICh0aHJlYWQsIE5VTEwpOwogKyAgYXNzZXJ0IChp ID09IDApOwogKwotKyAgbWFya2VyX2V4aXQxICgpOwotKyAgbWFya2VyX2V4aXQyICgpOworKyAg bWFya2VyX2V4aXQgKCk7CiArICByZXR1cm4gMDsKICt9Ci1JbmRleDogZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5tdWx0aS93YXRjaHBvaW50LW11bHRpLmV4cAotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAot KysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIubXVsdGkvd2F0Y2hwb2lu dC1tdWx0aS5leHAJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAg KzEsMTEzIEBACi0rIyBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KLSsKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5tdWx0aS93YXRjaHBvaW50LW11 bHRpLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLm11bHRpL3dhdGNocG9pbnQtbXVsdGkuZXhwCitu ZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZDdkYWVlYworLS0tIC9kZXYvbnVs bAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIubXVsdGkvd2F0Y2hwb2ludC1tdWx0aS5leHAKK0BA IC0wLDAgKzEsOTIgQEAKKysjIENvcHlyaWdodCAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgorKyMKICsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiArIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogKyMgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IK QEAgLTEyOTA0LDcgKzE0MDczLDggQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rl c3RzdWl0ZS9nZGIubXVsdGkvd2F0Y2hwb2ludC1tdWx0aS5leHAKICsjIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiArIyBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KICsKLStpZiB7IFtpc19yZW1vdGUgdGFyZ2V0XSB8fCAhW2lzbmF0aXZlXSB9 IHRoZW4geworK2lmIFtpc19yZW1vdGUgdGFyZ2V0XSB7CisrICAgICMgSXQgaXMgS0ZBSUwuCiAr ICAgIGNvbnRpbnVlCiArfQogKwpAQCAtMTI5NDksNjMgKzE0MTE5LDQyIEBAIEluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLm11bHRpL3dhdGNocG9pbnQtbXVsdGku ZXhwCiArIyBEbyBub3QgdXNlIHNpbXBsZSBoYXJkd2FyZSB3YXRjaHBvaW50ICgid2F0Y2giKSBh cyBpdHMgZmFsc2UgaGl0IG1heSBiZQogKyMgdW5ub3RpY2VkIGJ5IEdEQiBpZiBpdCByZWFkcyBp dCBzdGlsbCBoYXMgdGhlIHNhbWUgdmFsdWUuCiArZ2RiX3Rlc3QgImF3YXRjaCBjIiAiSGFyZHdh cmUgYWNjZXNzIFxcKHJlYWQvd3JpdGVcXCkgd2F0Y2hwb2ludCBcWzAtOVxdKzogYyIKLSsjIE5l dmVyIGtlZXAvdXNlIGFueSBub24taHcgYnJlYWtwb2ludHMgdG8gd29ya2Fyb3VuZCBhIG11bHRp LWluZmVyaW9yIGJ1Zy4KLSsjIFVzZSBgKicgdG8gd29ya2Fyb3VuZCBhIG11bHRpLWluZmVyaW9y IGJ1Zy4KLStzZXQgdGVzdCAiaGJyZWFrICptYXJrZXJfZXhpdDIiCisrCisrZ2RiX2JyZWFrcG9p bnQgIm1hcmtlcl9leGl0IgorKworK2dkYl90ZXN0ICJpbmZlcmlvciAxIiAid2l0Y2hpbmcgdG8g aW5mZXJpb3IgMSAuKiIKKysKKytzZXQgaGF2ZV9hd2F0Y2hfYiAwCisrc2V0IHRlc3QgImF3YXRj aCBiIgogK2dkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKLSsgICAgLXJlICJIYXJkd2Fy ZSBhc3Npc3RlZCBicmVha3BvaW50IFxbMC05XF0rIGF0IC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsK KysgICAgLXJlICJIYXJkd2FyZSBhY2Nlc3MgXFwocmVhZC93cml0ZVxcKSB3YXRjaHBvaW50IFxb MC05XF0rOiBiXHJcbiRnZGJfcHJvbXB0ICQiIHsKICsJcGFzcyAkdGVzdAorKwlzZXQgaGF2ZV9h d2F0Y2hfYiAxCiArICAgIH0KLSsgICAgLXJlICIoTm8gaGFyZHdhcmUgYnJlYWtwb2ludCBzdXBw b3J0IGluIHRoZSB0YXJnZXRcXC58SGFyZHdhcmUgYnJlYWtwb2ludHMgdXNlZCBleGNlZWRzIGxp bWl0XFwuKVxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCXBhc3MgJHRlc3QKLSsJdW50ZXN0ZWQgJHt0 ZXN0ZmlsZX0uZXhwCisrICAgIC1yZSAiVGhlcmUgYXJlIG5vdCBlbm91Z2ggYXZhaWxhYmxlIGhh cmR3YXJlIHJlc291cmNlcyBmb3IgdGhpcyB3YXRjaHBvaW50XFwuXHJcbiRnZGJfcHJvbXB0ICQi IHsKKysJdW50ZXN0ZWQgJHRlc3QKICsJcmV0dXJuCiArICAgIH0KICt9CiArCi0rZ2RiX3Rlc3Qg ImluZmVyaW9yIDEiICJ3aXRjaGluZyB0byBpbmZlcmlvciAxIC4qIgotKwotK2dkYl90ZXN0ICJh d2F0Y2ggYiIgIkhhcmR3YXJlIGFjY2VzcyBcXChyZWFkL3dyaXRlXFwpIHdhdGNocG9pbnQgXFsw LTlcXSs6IGIiCi0rZ2RiX3Rlc3QgImhicmVhayAqbWFya2VyX2V4aXQxIiB7SGFyZHdhcmUgYXNz aXN0ZWQgYnJlYWtwb2ludCBbMC05XSsgYXQgLip9Ci0rCiArZ2RiX3Rlc3QgImluZmVyaW9yIDIi ICJ3aXRjaGluZyB0byBpbmZlcmlvciAyIC4qIgogKwogKyMgRkFJTCB3b3VsZCBiZSBhIGhpdCBv biB3YXRjaHBvaW50IGZvciBgYicgLSB0aGF0IG9uZSBpcyBmb3IgdGhlIG90aGVyCiArIyBpbmZl cmlvci4KICtnZGJfdGVzdCAiY29udGludWUiICJIYXJkd2FyZSBhY2Nlc3MgXFwocmVhZC93cml0 ZVxcKSB3YXRjaHBvaW50IFxbMC05XF0rOiBjXHJcblxyXG5PbGQgdmFsdWUgPSAwXHJcbk5ldyB2 YWx1ZSA9IDNcclxuLioiICJjYXRjaCBjIgogKwotK3NldCB0ZXN0ICJjYXRjaCBtYXJrZXJfZXhp dDIiCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgImNvbnRpbnVlIiAkdGVzdCB7Ci0rICAgIC1yZSAiQnJl YWtwb2ludCBcWzAtOVxdKywgbWFya2VyX2V4aXQyIC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJ c2V0dXBfa2ZhaWwgYnJlYWtwb2ludHMvMTIzMTIgKi0qLSoKLSsJcGFzcyAkdGVzdAotKyAgICB9 Ci0rICAgIC1yZSAiSGFyZHdhcmUgYWNjZXNzIFxcKHJlYWQvd3JpdGVcXCkgd2F0Y2hwb2ludCBc WzAtOVxdKzogY1xyXG5cclxuVmFsdWUgPSAzXHJcbiguKiBpbiApP1xcKj8oX19HSV8pP19fbnB0 bF9kZWF0aF9ldmVudCAuKlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCXNldHVwX2tmYWlsIGJyZWFr cG9pbnRzLzEyMzEyICotKi0qCi0rCWZhaWwgJHRlc3QKLSsgICAgfQotK30KKytnZGJfdGVzdCAi Y29udGludWUiICJCcmVha3BvaW50IFxbMC05XF0rLCBtYXJrZXJfZXhpdCAuKiIgImNhdGNoIG1h cmtlcl9leGl0IGluIGluZmVyaW9yIDIiCiArCiArZ2RiX3Rlc3QgImluZmVyaW9yIDEiICJ3aXRj aGluZyB0byBpbmZlcmlvciAxIC4qIgogKwogK2dkYl90ZXN0ICJjb250aW51ZSIgIkhhcmR3YXJl IGFjY2VzcyBcXChyZWFkL3dyaXRlXFwpIHdhdGNocG9pbnQgXFswLTlcXSs6IGJcclxuXHJcbk9s ZCB2YWx1ZSA9IDBcclxuTmV3IHZhbHVlID0gMlxyXG4uKiIgImNhdGNoIGIiCiArCi0rc2V0IHRl c3QgImNhdGNoIG1hcmtlcl9leGl0MSIKLStnZGJfdGVzdF9tdWx0aXBsZSAiY29udGludWUiICR0 ZXN0IHsKLSsgICAgLXJlICJCcmVha3BvaW50IFxbMC05XF0rLCBtYXJrZXJfZXhpdDEgLipcclxu JGdkYl9wcm9tcHQgJCIgewotKwlzZXR1cF9rZmFpbCBicmVha3BvaW50cy8xMjMxMiAqLSotKgot KwlwYXNzICR0ZXN0Ci0rICAgIH0KLSsgICAgLXJlICJIYXJkd2FyZSBhY2Nlc3MgXFwocmVhZC93 cml0ZVxcKSB3YXRjaHBvaW50IFxbMC05XF0rOiBiXHJcblxyXG5WYWx1ZSA9IDJcclxuKC4qIGlu ICk/XFwqPyhfX0dJXyk/X19ucHRsX2RlYXRoX2V2ZW50IC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsK LSsJc2V0dXBfa2ZhaWwgYnJlYWtwb2ludHMvMTIzMTIgKi0qLSoKLSsJZmFpbCAkdGVzdAotKyAg ICB9Ci0rfQotKwotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIu b3B0L2FycmF5LWZyb20tcmVnaXN0ZXItZnVuYy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxs CTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci1mdW5jLmMJMjAx MS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKKytnZGJfdGVzdCAiY29udGludWUiICJC cmVha3BvaW50IFxbMC05XF0rLCBtYXJrZXJfZXhpdCAuKiIgImNhdGNoIG1hcmtlcl9leGl0IGlu IGluZmVyaW9yIDEiCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZy b20tcmVnaXN0ZXItZnVuYy5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZyb20tcmVn aXN0ZXItZnVuYy5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNzI5ZjQ1 NworLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZyb20t cmVnaXN0ZXItZnVuYy5jCiBAQCAtMCwwICsxLDIyIEBACiArLyogVGhpcyBmaWxlIGlzIHBhcnQg b2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwpAQCAtMTMwMjksMTAgKzE0MTc4LDExIEBAIElu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9t LXJlZ2lzdGVyLWZ1bmMuYwogK3sKICsgIHJldHVybiBhcnJbMF07CiArfQotSW5kZXg6IGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZyb20tcmVnaXN0ZXIu YwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAw MCArMDAwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2Fy cmF5LWZyb20tcmVnaXN0ZXIuYwkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAor ZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLmMg Yi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci5jCituZXcgZmlsZSBt b2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMzA5MGU3ZQorLS0tIC9kZXYvbnVsbAorKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZyb20tcmVnaXN0ZXIuYwogQEAgLTAsMCArMSwy OCBAQAogKy8qIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsK QEAgLTEzMDYyLDEwICsxNDIxMiwxMSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv dGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci5jCiArCiArICByZXR1cm4gMDsK ICt9Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJy YXktZnJvbS1yZWdpc3Rlci5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0w MSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90 ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLmV4cAkyMDExLTA3LTI5IDIyOjUy OjAyLjAwMDAwMDAwMCArMDIwMAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9h cnJheS1mcm9tLXJlZ2lzdGVyLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9t LXJlZ2lzdGVyLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmYyZGU3 MTgKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9t LXJlZ2lzdGVyLmV4cAogQEAgLTAsMCArMSwzMyBAQAogKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArIwpAQCAtMTMxMDAsMTAgKzE0MjUxLDExIEBAIElu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9t LXJlZ2lzdGVyLmV4cAogKyMgU2VlbiByZWdyZXNzaW9uOgogKyMgQWRkcmVzcyByZXF1ZXN0ZWQg Zm9yIGlkZW50aWZpZXIgImFyciIgd2hpY2ggaXMgaW4gcmVnaXN0ZXIgJHJkaQogK2dkYl90ZXN0 ICJwIGFyclxbMFxdIiAiXFwkXFswLTlcXSsgPSA0MiIKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi90ZXN0c3VpdGUvZ2RiLnBhc2NhbC9hcnJheXMuZXhwCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g L2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5wYXNjYWwvYXJyYXlzLmV4cAkyMDExLTA3 LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLnBhc2NhbC9hcnJheXMuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucGFzY2FsL2FycmF5cy5l eHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5jY2M2ZTFlCistLS0gL2Rl di9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5wYXNjYWwvYXJyYXlzLmV4cAogQEAgLTAs MCArMSwxMDQgQEAKICsjIENvcHlyaWdodCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgogKyMKQEAgLTEzMjA5LDEwICsxNDM2MSwxMSBAQCBJbmRleDogZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5wYXNjYWwvYXJyYXlzLmV4cAogK30KICtnZGJf dGVzdCAicHJpbnQgRHluQXJyQ2hhciIgIi4qID0gJ2FiY2RlZmdoaWprbG0nIiAiUHJpbnQgZHlu YW1pYyBhcnJheSBvZiBjaGFyIgogKwotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rl c3RzdWl0ZS9nZGIucGFzY2FsL2FycmF5cy5wYXMKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJ MTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi90ZXN0c3VpdGUvZ2RiLnBhc2NhbC9hcnJheXMucGFzCTIwMTEtMDctMjkgMjI6NTI6 MDIuMDAwMDAwMDAwICswMjAwCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucGFzY2Fs L2FycmF5cy5wYXMgYi9nZGIvdGVzdHN1aXRlL2dkYi5wYXNjYWwvYXJyYXlzLnBhcworbmV3IGZp bGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjI5NTYwMmQKKy0tLSAvZGV2L251bGwKKysr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnBhc2NhbC9hcnJheXMucGFzCiBAQCAtMCwwICsxLDgyIEBA CiArewogKyBDb3B5cmlnaHQgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KQEAgLTEzMjk2LDExICsxNDQ0OSwxMSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvdGVzdHN1aXRlL2dkYi5wYXNjYWwvYXJyYXlzLnBhcwogKyAgcyA6PSAndGVzdCcjMCdzdHJp bmcnOwogKyAgd3JpdGVsbihzKTsgeyBzZXQgYnJlYWtwb2ludCAyIGhlcmUgfQogK2VuZC4KLUlu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFt ZS5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3Rlc3Rz dWl0ZS9nZGIucHl0aG9uL3B5LWZyYW1lLmV4cAkyMDExLTAyLTI2IDE1OjA2OjI4LjAwMDAwMDAw MCArMDEwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9u L3B5LWZyYW1lLmV4cAkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAotQEAgLTc4 LDggKzc4LDYgQEAgZ2RiX3Rlc3QgInB5dGhvbiBwcmludCBiZnJhbWUgPT0gZ2RiLm5ldworZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZS5leHAgYi9nZGIvdGVz dHN1aXRlL2dkYi5weXRob24vcHktZnJhbWUuZXhwCitpbmRleCAxY2I1NzNlLi4zNjA1ZWU1IDEw MDY0NAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZyYW1lLmV4cAorKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZyYW1lLmV4cAorQEAgLTc4LDggKzc4LDYgQEAg Z2RiX3Rlc3QgInB5dGhvbiBwcmludCBiZnJhbWUgPT0gZ2RiLm5ld2VzdF9mcmFtZSgpIiBUcnVl IFwKICAKICBnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwID09IGYxIiAiID0g RmFsc2UiICJ0ZXN0IGVxdWFsaXR5IGNvbXBhcmlzb24gKGZhbHNlKSIKICBnZGJfdGVzdCAicHl0 aG9uIHByaW50ICdyZXN1bHQgPScsIGYwID09IGYwIiAiID0gVHJ1ZSIgInRlc3QgZXF1YWxpdHkg Y29tcGFyaXNvbiAodHJ1ZSkiCkBAIC0xMzMwOSwxNyArMTQ0NjIsMTcgQEAgSW5kZXg6IGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZyYW1lLmV4cAogIGdk Yl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAuaXNfdmFsaWQgKCkiICIgPSBUcnVl IiAidGVzdCBGcmFtZS5pc192YWxpZCIKICBnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQg PScsIGYwLm5hbWUgKCkiICIgPSBmMiIgInRlc3QgRnJhbWUubmFtZSIKICBnZGJfdGVzdCAicHl0 aG9uIHByaW50ICdyZXN1bHQgPScsIGYwLnR5cGUgKCkgPT0gZ2RiLk5PUk1BTF9GUkFNRSIgIiA9 IFRydWUiICJ0ZXN0IEZyYW1lLnR5cGUiCi1AQCAtOTQsMyArOTIsNSBAQCBnZGJfdGVzdCAicHl0 aG9uIHByaW50ICdyZXN1bHQgPScsIGYwLnJlCitAQCAtOTQsMyArOTIsNSBAQCBnZGJfdGVzdCAi cHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwLnJlYWRfdmFyICgndmFyaWFibGVfd2hpY2hfc3Vy ZWx5X2RvZXNudF9leAogIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAucmVh ZF92YXIgKCdhJykiICIgPSAxIiAidGVzdCBGcmFtZS5yZWFkX3ZhciAtIHN1Y2Nlc3MiCiAgCiAg Z2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBnZGIuc2VsZWN0ZWRfZnJhbWUgKCkg PT0gZjEiICIgPSBUcnVlIiAidGVzdCBnZGIuc2VsZWN0ZWRfZnJhbWUiCiArCiArZ2RiX3Rlc3Qg InB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBmMC5ibG9jayAoKSIgIjxnZGIuQmxvY2sgb2JqZWN0 IGF0IDB4XFtcWzp4ZGlnaXQ6XF1cXSs+IiAidGVzdCBGcmFtZS5ibG9jayIKLUluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS12YWx1ZS5leHAKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIu cHl0aG9uL3B5LXZhbHVlLmV4cAkyMDExLTA0LTI0IDExOjA0OjM4LjAwMDAwMDAwMCArMDIwMAot KysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXZhbHVl LmV4cAkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAotQEAgLTMxOSw2ICszMTks MTUgQEAgcHJvYyB0ZXN0X3ZhbHVlX2FmdGVyX2RlYXRoIHt9IHsKK2RpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi5weXRob24vcHktdmFsdWUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0 aG9uL3B5LXZhbHVlLmV4cAoraW5kZXggNTlkNzlhZS4uNzViN2Q3MiAxMDA2NDQKKy0tLSBhL2dk Yi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS12YWx1ZS5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLnB5dGhvbi9weS12YWx1ZS5leHAKK0BAIC0zNjQsNiArMzY0LDE1IEBAIHByb2MgdGVzdF92 YWx1ZV9hZnRlcl9kZWF0aCB7fSB7CiAgICAgICJwcmludCB2YWx1ZSdzIHR5cGUiCiAgfQogIApA QCAtMTMzMzUsMjIgKzE0NDg4LDIzIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90 ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS12YWx1ZS5leHAKICAjIFJlZ3Jlc3Npb24gdGVzdCBmb3Ig aW52YWxpZCBzdWJzY3JpcHQgb3BlcmF0aW9ucy4gIFRoZSBidWcgd2FzIHRoYXQKICAjIHRoZSB0 eXBlIG9mIHRoZSB2YWx1ZSB3YXMgbm90IGJlaW5nIGNoZWNrZWQgYmVmb3JlIGFsbG93aW5nIGEK ICAjIHN1YnNjcmlwdCBvcGVyYXRpb24gdG8gcHJvY2VlZC4KLUBAIC00NTYsNiArNDY1LDcgQEAg dGVzdF92YWx1ZV9pbl9pbmZlcmlvcgorQEAgLTUwMCw2ICs1MDksNyBAQCB0ZXN0X3ZhbHVlX2lu X2luZmVyaW9yCiAgdGVzdF9pbmZlcmlvcl9mdW5jdGlvbl9jYWxsCiAgdGVzdF9sYXp5X3N0cmlu Z3MKICB0ZXN0X3ZhbHVlX2FmdGVyX2RlYXRoCiArdGVzdF9jYXN0X3JlZ3Jlc3Npb24KICAKLSAj IFRoZSBmb2xsb3dpbmcgdGVzdCByZWNvbXBpbGVzIHRoZSBiaW5hcnkgdG8gdGVzdCBlaXRoZXIg QyBvciBDKysKLSAjIHZhbHVlcy4gCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVz dHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1jaGlsZC5jCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9y ay1jaGlsZC5jCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsx LDEyNyBAQAorICMgVGVzdCBlaXRoZXIgQyBvciBDKysgdmFsdWVzLiAKKyB0ZXN0X3N1YnNjcmlw dF9yZWdyZXNzaW9uICIke2JpbmZpbGV9IiAiYyIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRl L2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1jaGlsZC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu dGhyZWFkcy93YXRjaHBvaW50LWZvcmstY2hpbGQuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2lu ZGV4IDAwMDAwMDAuLjdhN2UwN2YKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLWNoaWxkLmMKK0BAIC0wLDAgKzEsMTI5IEBACiAr LyogVGVzdCBjYXNlIGZvciBmb3Jnb3R0ZW4gaHctd2F0Y2hwb2ludHMgYWZ0ZXIgZm9yaygpLW9m ZiBvZiBhIHByb2Nlc3MuCiArCi0rICAgQ29weXJpZ2h0IDIwMDgsIDIwMDksIDIwMTAgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgQ29weXJpZ2h0IDIwMTIgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCiArCiArICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgogKwpA QCAtMTMzNzgsNiArMTQ1MzIsOCBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVz dHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1jaGlsZC5jCiArCiArI2luY2x1ZGUg IndhdGNocG9pbnQtZm9yay5oIgogKworKy8qIGBwaWRfdCcgbWF5IG5vdCBiZSBhdmFpbGFibGUu ICAqLworKwogK3N0YXRpYyB2b2xhdGlsZSBpbnQgdXNyMV9nb3Q7CiArCiArc3RhdGljIHZvaWQK QEAgLTEzMzg5LDcgKzE0NTQ1LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rl c3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstY2hpbGQuYwogK3ZvaWQKICtmb3Jr b2ZmIChpbnQgbnIpCiArewotKyAgcGlkX3QgY2hpbGQsIHNhdmVfcGFyZW50ID0gZ2V0cGlkICgp OworKyAgaW50IGNoaWxkLCBzYXZlX3BhcmVudCA9IGdldHBpZCAoKTsKICsgIGludCBpOwogKyAg c3RydWN0IHNpZ2FjdGlvbiBhY3QsIG9sZGFjdDsKICsjaWZkZWYgVEhSRUFECkBAIC0xMzQ3NSwx NCArMTQ2MzEsMTUgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9n ZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstY2hpbGQuYwogKyAgaSA9IHNpZ2FjdGlvbiAoU0lH VVNSMSwgJm9sZGFjdCwgTlVMTCk7CiArICBhc3NlcnQgKGkgPT0gMCk7CiArfQotSW5kZXg6IGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZv cmstbXQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAw MDAwMDAwMCArMDAwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIu dGhyZWFkcy93YXRjaHBvaW50LWZvcmstbXQuYwkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAw MCArMDIwMAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2lu dC1mb3JrLW10LmMgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1t dC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uYmZkZDg5ZgorLS0tIC9k ZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmst bXQuYwogQEAgLTAsMCArMSwxNzQgQEAKICsvKiBUZXN0IGNhc2UgZm9yIGZvcmdvdHRlbiBody13 YXRjaHBvaW50cyBhZnRlciBmb3JrKCktb2ZmIG9mIGEgcHJvY2Vzcy4KICsKLSsgICBDb3B5cmln aHQgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysgICBD b3B5cmlnaHQgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsgICBUaGlz IGZpbGUgaXMgcGFydCBvZiBHREIuCiArCkBAIC0xMzY1NCwxNCArMTQ4MTEsMTUgQEAgSW5kZXg6 IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50 LWZvcmstbXQuYwogKyAgbWFya19leGl0ICgpOwogKyAgcmV0dXJuIDA7CiArfQotSW5kZXg6IGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZv cmstcGFyZW50LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDow MC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUv Z2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLXBhcmVudC5jCTIwMTEtMDctMjkgMjI6NTI6MDIu MDAwMDAwMDAwICswMjAwCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93 YXRjaHBvaW50LWZvcmstcGFyZW50LmMgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNo cG9pbnQtZm9yay1wYXJlbnQuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAu LjliYmY0MzgKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMv d2F0Y2hwb2ludC1mb3JrLXBhcmVudC5jCiBAQCAtMCwwICsxLDc0IEBACiArLyogVGVzdCBjYXNl IGZvciBmb3Jnb3R0ZW4gaHctd2F0Y2hwb2ludHMgYWZ0ZXIgZm9yaygpLW9mZiBvZiBhIHByb2Nl c3MuCiArCi0rICAgQ29weXJpZ2h0IDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCisrICAgQ29weXJpZ2h0IDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCiArCiArICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgogKwpAQCAtMTM3MzMsMTQg KzE0ODkxLDE1IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2Ri LnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLXBhcmVudC5jCiArICAgICAgbWFya2VyICgpOwogKyAg ICB9CiArfQotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhy ZWFkcy93YXRjaHBvaW50LWZvcmstc3QuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcw LTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstc3QuYwkyMDExLTA3LTI5 IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2Ri LnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLXN0LmMgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRz L3dhdGNocG9pbnQtZm9yay1zdC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAw MC4uMTdjYzA1OAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFk cy93YXRjaHBvaW50LWZvcmstc3QuYwogQEAgLTAsMCArMSw2MSBAQAogKy8qIFRlc3QgY2FzZSBm b3IgZm9yZ290dGVuIGh3LXdhdGNocG9pbnRzIGFmdGVyIGZvcmsoKS1vZmYgb2YgYSBwcm9jZXNz LgogKwotKyAgIENvcHlyaWdodCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgorKyAgIENvcHlyaWdodCAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgogKwogKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KICsKQEAgLTEzNzk5LDEzICsx NDk1OCwxNCBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi50 aHJlYWRzL3dhdGNocG9pbnQtZm9yay1zdC5jCiArICBtYXJrX2V4aXQgKCk7CiArICByZXR1cm4g MDsKICt9Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJl YWRzL3dhdGNocG9pbnQtZm9yay5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0w MS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLmV4cAkyMDExLTA3LTI5IDIy OjUyOjAyLjAwMDAwMDAwMCArMDIwMAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnRo cmVhZHMvd2F0Y2hwb2ludC1mb3JrLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0 Y2hwb2ludC1mb3JrLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjJl MDEzNDQKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0 Y2hwb2ludC1mb3JrLmV4cAogQEAgLTAsMCArMSwxNDkgQEAKLSsjIENvcHlyaWdodCAyMDA4LCAy MDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKworKyMgQ29weXJpZ2h0 IDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIwogKyMgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK ICsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CiArIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgpAQCAtMTM5NTMsMTQgKzE1MTEzLDE1IEBAIElu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hw b2ludC1mb3JrLmV4cAogK30gZWxzZSB7CiArICAgIHVudGVzdGVkICJjaGlsZCIKICt9Ci1JbmRl eDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9p bnQtZm9yay5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAu MDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dk Yi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5oCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAw ICswMjAwCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50 LWZvcmsuaCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLmgKK25l dyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5jYjEwOWZhCistLS0gL2Rldi9udWxs CisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5oCiBAQCAt MCwwICsxLDMyIEBACiArLyogVGVzdCBjYXNlIGZvciBmb3Jnb3R0ZW4gaHctd2F0Y2hwb2ludHMg YWZ0ZXIgZm9yaygpLW9mZiBvZiBhIHByb2Nlc3MuCiArCi0rICAgQ29weXJpZ2h0IDIwMDgsIDIw MDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgQ29weXJpZ2h0IDIw MTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCiArICAgVGhpcyBmaWxlIGlzIHBh cnQgb2YgR0RCLgogKwpAQCAtMTM5OTAsMTAgKzE1MTUxLDExIEBAIEluZGV4OiBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLmgKICsK ICtleHRlcm4gdm9pZCBtYXJrZXIgKHZvaWQpOwogK2V4dGVybiB2b2lkIGZvcmtvZmYgKGludCBu cik7Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi50cmFjZS9z dGFwLXRyYWNlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDow MC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUv Z2RiLnRyYWNlL3N0YXAtdHJhY2UuYwkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIw MAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnRyYWNlL3N0YXAtdHJhY2UuYyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLnRyYWNlL3N0YXAtdHJhY2UuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQK K2luZGV4IDAwMDAwMDAuLjI3ZjMxN2UKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLnRyYWNlL3N0YXAtdHJhY2UuYwogQEAgLTAsMCArMSw3MSBAQAogKy8qIFRoaXMgdGVz dGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCiArCkBAIC0xNDA2NiwxMCAr MTUyMjgsMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIu dHJhY2Uvc3RhcC10cmFjZS5jCiArCiArICByZXR1cm4gMDsKICt9Ci1JbmRleDogZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi50cmFjZS9zdGFwLXRyYWNlLmV4cAotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAot KysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudHJhY2Uvc3RhcC10cmFj ZS5leHAJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKK2RpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi50cmFjZS9zdGFwLXRyYWNlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2Ri LnRyYWNlL3N0YXAtdHJhY2UuZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAw MC4uYjBmMWQ3ZAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIudHJhY2Uv c3RhcC10cmFjZS5leHAKIEBAIC0wLDAgKzEsMTI5IEBACiArIyBDb3B5cmlnaHQgMjAxMQogKyMg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCkBAIC0xNDE5MiwxOCArMTUzNTUsMTggQEAg SW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudHJhY2Uvc3RhcC10 cmFjZS5leHAKICsgICAgcmV0dXJuIDE7CiArfQogKwotK2dkYl9jb2xsZWN0X3Byb2JlX2FyZyAi cHJvYmUgYXJncyB3aXRob3V0IHNlbWFwaG9yZSIgInByb2JlOnVzZXIiICIyMyIKKytnZGJfY29s bGVjdF9wcm9iZV9hcmcgInByb2JlIGFyZ3Mgd2l0aG91dCBzZW1hcGhvcmUiICItcCB1c2VyIiAi MjMiCiArZ2RiX2V4aXQKICsKICtjb21waWxlX3N0YXBfYmluICItRFVTRV9QUk9CRVMiCi0rZ2Ri X2NvbGxlY3RfcHJvYmVfYXJnICJwcm9iZSBhcmdzIHdpdGggc2VtYXBob3JlIiAicHJvYmU6dHdv IiAiNDYiCisrZ2RiX2NvbGxlY3RfcHJvYmVfYXJnICJwcm9iZSBhcmdzIHdpdGggc2VtYXBob3Jl IiAiLXAgdHdvIiAiNDYiCiArCiArIyBGaW5pc2hlZCEKICtnZGJfdGVzdCAidGZpbmQgbm9uZSIg Ii4qIiAiIgotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2Ri LmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvdGVzdHN1 aXRlL2xpYi9nZGIuZXhwCTIwMTEtMDctMTUgMTY6MTE6MjIuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTEtMDctMjkg MjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9saWIv Z2RiLmV4cCBiL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKK2luZGV4IGZjN2UyMjMuLjNlYTVj ZTAgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCisrKysgYi9nZGIvdGVz dHN1aXRlL2xpYi9nZGIuZXhwCiBAQCAtMTQxLDYgKzE0MSwxMSBAQCBwcm9jIGdkYl91bmxvYWQg e30gewogIAkgICAgc2VuZF9nZGIgInlcbiIKICAJICAgIGV4cF9jb250aW51ZQpAQCAtMTQyMTYs MTAgKzE1Mzc5LDEwIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUv bGliL2dkYi5leHAKICAJLXJlICJEaXNjYXJkIHN5bWJvbCB0YWJsZSBmcm9tIC4qeSBvciBuLiok IiB7CiAgCSAgICBzZW5kX2dkYiAieVxuIgogIAkgICAgZXhwX2NvbnRpbnVlCi1JbmRleDogZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2xpYi9wYXNjYWwuZXhwCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL3Bhc2NhbC5l eHAJMjAxMS0wMS0wMSAxNjozMzo1Mi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi90ZXN0c3VpdGUvbGliL3Bhc2NhbC5leHAJMjAxMS0wNy0yOSAyMjo1MjowMi4w MDAwMDAwMDAgKzAyMDAKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2xpYi9wYXNjYWwuZXhw IGIvZ2RiL3Rlc3RzdWl0ZS9saWIvcGFzY2FsLmV4cAoraW5kZXggODkxZGEzNy4uMjM2YzVjYSAx MDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvbGliL3Bhc2NhbC5leHAKKysrKyBiL2dkYi90ZXN0 c3VpdGUvbGliL3Bhc2NhbC5leHAKIEBAIC0zNyw2ICszNyw5IEBAIHByb2MgcGFzY2FsX2luaXQg e30gewogICAgICBnbG9iYWwgcGFzY2FsX2NvbXBpbGVyX2lzX2ZwYwogICAgICBnbG9iYWwgZ3Bj X2NvbXBpbGVyCkBAIC0xNDI1MSwxMSArMTU0MTQsMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL3Rlc3RzdWl0ZS9saWIvcGFzY2FsLmV4cAogICAgICB9CiAgICAgIHNldCBwYXNj YWxfaW5pdF9kb25lIDEKICB9ICAgCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGhy ZWFkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3RocmVh ZC5jCTIwMTEtMDUtMzAgMjA6MDQ6MzIuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvdGhyZWFkLmMJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAK LUBAIC0xNDQxLDcgKzE0NDEsOCBAQCB1cGRhdGVfdGhyZWFkX2xpc3QgKHZvaWQpCitkaWZmIC0t Z2l0IGEvZ2RiL3RocmVhZC5jIGIvZ2RiL3RocmVhZC5jCitpbmRleCA4Y2NhODNkLi41NGFkZjdl IDEwMDY0NAorLS0tIGEvZ2RiL3RocmVhZC5jCisrKysgYi9nZGIvdGhyZWFkLmMKK0BAIC0xNDMy LDcgKzE0MzIsOCBAQCB1cGRhdGVfdGhyZWFkX2xpc3QgKHZvaWQpCiAgICAgbm8gdGhyZWFkIGlz IHNlbGVjdGVkLCBvciBubyB0aHJlYWRzIGV4aXN0LiAgKi8KICAKICBzdGF0aWMgc3RydWN0IHZh bHVlICoKQEAgLTE0MjY1LDcgKzE1NDI4LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL3RocmVhZC5jCiAgewogICAgc3RydWN0IHRocmVhZF9pbmZvICp0cCA9IGZpbmRfdGhyZWFk X3B0aWQgKGluZmVyaW9yX3B0aWQpOwogIAotQEAgLTE0NTIsNiArMTQ1MywxNSBAQCB0aHJlYWRf aWRfbWFrZV92YWx1ZSAoc3RydWN0IGdkYmFyY2ggKmdkCitAQCAtMTQ0Myw2ICsxNDQ0LDE1IEBA IHRocmVhZF9pZF9tYWtlX3ZhbHVlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IGlu dGVybmFsdmFyICp2YXIpCiAgLyogQ29tbWFuZHMgd2l0aCBhIHByZWZpeCBvZiBgdGhyZWFkJy4g ICovCiAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKnRocmVhZF9jbWRfbGlzdCA9IE5VTEw7CiAg CkBAIC0xNDI4MSwxOCArMTU0NDQsMTggQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L3RocmVhZC5jCiAgdm9pZAogIF9pbml0aWFsaXplX3RocmVhZCAodm9pZCkKICB7Ci1AQCAtMTQ5 Nyw1ICsxNTA3LDUgQEAgU2hvdyBwcmludGluZyBvZiB0aHJlYWQgZXZlbnRzIChzdWNoIGFzCitA QCAtMTQ4OCw1ICsxNDk4LDUgQEAgU2hvdyBwcmludGluZyBvZiB0aHJlYWQgZXZlbnRzIChzdWNo IGFzIHRocmVhZCBzdGFydCBhbmQgZXhpdCkuIiksIE5VTEwsCiAgICAgICAgICAgc2hvd19wcmlu dF90aHJlYWRfZXZlbnRzLAogICAgICAgICAgICZzZXRwcmludGxpc3QsICZzaG93cHJpbnRsaXN0 KTsKICAKIC0gIGNyZWF0ZV9pbnRlcm5hbHZhcl90eXBlX2xhenkgKCJfdGhyZWFkIiwgdGhyZWFk X2lkX21ha2VfdmFsdWUpOwogKyAgY3JlYXRlX2ludGVybmFsdmFyX3R5cGVfbGF6eSAoIl90aHJl YWQiLCAmdGhyZWFkX2Z1bmNzLCBOVUxMKTsKICB9Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvdG9wLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2Ri L3RvcC5jCTIwMTEtMDctMjEgMTM6MDM6NDUuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvdG9wLmMJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAK LUBAIC0zNDcsNiArMzQ3LDkgQEAgcHJlcGFyZV9leGVjdXRlX2NvbW1hbmQgKHZvaWQpCitkaWZm IC0tZ2l0IGEvZ2RiL3RvcC5jIGIvZ2RiL3RvcC5jCitpbmRleCBjNTkzNzY5Li5hNGI3YjA5IDEw MDY0NAorLS0tIGEvZ2RiL3RvcC5jCisrKysgYi9nZGIvdG9wLmMKK0BAIC0zNTEsNiArMzUxLDkg QEAgcHJlcGFyZV9leGVjdXRlX2NvbW1hbmQgKHZvaWQpCiAgCiAgICBtYXJrID0gdmFsdWVfbWFy ayAoKTsKICAgIGNsZWFudXAgPSBtYWtlX2NsZWFudXBfdmFsdWVfZnJlZV90b19tYXJrIChtYXJr KTsKQEAgLTE0MzAyLDM5ICsxNTQ2NSw1NiBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvdG9wLmMKICAKICAgIC8qIFdpdGggbXVsdGlwbGUgdGhyZWFkcyBydW5uaW5nIHdoaWxlIHRo ZSBvbmUgd2UncmUgZXhhbWluaW5nIGlzCiAgICAgICBzdG9wcGVkLCB0aGUgZGNhY2hlIGNhbiBn ZXQgc3RhbGUgd2l0aG91dCB1cyBiZWluZyBhYmxlIHRvIGRldGVjdAotSW5kZXg6IGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL3RyYWNlcG9pbnQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAu MjAxMTA3MjIub3JpZy9nZGIvdHJhY2Vwb2ludC5jCTIwMTEtMDctMDcgMTU6MzI6NTUuMDAwMDAw MDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdHJhY2Vwb2ludC5jCTIwMTEt MDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCi1AQCAtMTYwOSw2ICsxNjA5LDggQEAgc3Rh cnRfdHJhY2luZyAodm9pZCkKK2RpZmYgLS1naXQgYS9nZGIvdHJhY2Vwb2ludC5jIGIvZ2RiL3Ry YWNlcG9pbnQuYworaW5kZXggNzlhNjRhMy4uZGM3NDE2MiAxMDA2NDQKKy0tLSBhL2dkYi90cmFj ZXBvaW50LmMKKysrKyBiL2dkYi90cmFjZXBvaW50LmMKK0BAIC02ODQsNyArNjg0LDcgQEAgdmFs aWRhdGVfYWN0aW9ubGluZSAoY2hhciAqKmxpbmUsIHN0cnVjdCBicmVha3BvaW50ICpiKQorICAg c3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbiA9IE5VTEw7CisgICBjaGFyICpwLCAqdG1wX3A7Cisg ICBzdHJ1Y3QgYnBfbG9jYXRpb24gKmxvYzsKKy0gIHN0cnVjdCBhZ2VudF9leHByICphZXhwcjsK KysgIHN0cnVjdCBhZ2VudF9leHByICphZXhwciA9IE5VTEw7CisgICBzdHJ1Y3QgdHJhY2Vwb2lu dCAqdCA9IChzdHJ1Y3QgdHJhY2Vwb2ludCAqKSBiOworIAorICAgLyogSWYgRU9GIGlzIHR5cGVk LCAqbGluZSBpcyBOVUxMLiAgKi8KK0BAIC0xMzUzLDcgKzEzNTMsNyBAQCBlbmNvZGVfYWN0aW9u c18xIChzdHJ1Y3QgY29tbWFuZF9saW5lICphY3Rpb24sCisgICBpbnQgaTsKKyAgIHN0cnVjdCB2 YWx1ZSAqdGVtcHZhbDsKKyAgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjbWQ7CistICBzdHJ1 Y3QgYWdlbnRfZXhwciAqYWV4cHI7CisrICBzdHJ1Y3QgYWdlbnRfZXhwciAqYWV4cHIgPSBOVUxM OwogIAotICAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChicmVha3BvaW50X3AsIHRwX3ZlYywg aXgsIHQpOyBpeCsrKQorICAgZm9yICg7IGFjdGlvbjsgYWN0aW9uID0gYWN0aW9uLT5uZXh0KQog ICAgICB7CitAQCAtMTcxNyw2ICsxNzE3LDcgQEAgc3RhcnRfdHJhY2luZyAoY2hhciAqbm90ZXMp CisgICBmb3IgKGl4ID0gMDsgVkVDX2l0ZXJhdGUgKGJyZWFrcG9pbnRfcCwgdHBfdmVjLCBpeCwg Yik7IGl4KyspCisgICAgIHsKKyAgICAgICBzdHJ1Y3QgdHJhY2Vwb2ludCAqdCA9IChzdHJ1Y3Qg dHJhY2Vwb2ludCAqKSBiOwogKyAgICAgIHN0cnVjdCBicF9sb2NhdGlvbiAqbG9jOworIAorICAg ICAgIGlmIChiLT5lbmFibGVfc3RhdGUgPT0gYnBfZW5hYmxlZCkKKyAJYW55X2VuYWJsZWQgPSAx OworQEAgLTE3NzksNiArMTc4MCw5IEBAIHN0YXJ0X3RyYWNpbmcgKGNoYXIgKm5vdGVzKQorIAl9 CisgCisgICAgICAgdC0+bnVtYmVyX29uX3RhcmdldCA9IGItPm51bWJlcjsKICsKLSAgICAgICBp ZiAoKHQtPnR5cGUgPT0gYnBfZmFzdF90cmFjZXBvaW50Ci0gCSAgID8gIW1heV9pbnNlcnRfZmFz dF90cmFjZXBvaW50cwotIAkgICA6ICFtYXlfaW5zZXJ0X3RyYWNlcG9pbnRzKSkKLUBAIC0xNjE3 LDYgKzE2MTksOSBAQCBzdGFydF90cmFjaW5nICh2b2lkKQotICAgICAgIHQtPm51bWJlcl9vbl90 YXJnZXQgPSAwOwotICAgICAgIHRhcmdldF9kb3dubG9hZF90cmFjZXBvaW50ICh0KTsKLSAgICAg ICB0LT5udW1iZXJfb25fdGFyZ2V0ID0gdC0+bnVtYmVyOwotKwotKyAgICAgIGZvciAobG9jID0g dC0+bG9jOyBsb2M7IGxvYyA9IGxvYy0+bmV4dCkKKysgICAgICBmb3IgKGxvYyA9IGItPmxvYzsg bG9jOyBsb2MgPSBsb2MtPm5leHQpCiArCW1vZGlmeV9zZW1hcGhvcmUgKGxvYywgMSk7CiAgICAg IH0KICAgIFZFQ19mcmVlIChicmVha3BvaW50X3AsIHRwX3ZlYyk7CiAgCi1AQCAtMTY3OCw3ICsx NjgzLDI4IEBAIHRyYWNlX3N0b3BfY29tbWFuZCAoY2hhciAqYXJncywgaW50IGZyb20KLSB2b2lk Ci0gc3RvcF90cmFjaW5nICh2b2lkKQorQEAgLTE4NTEsOSArMTg1NSwyOCBAQCB2b2lkCisgc3Rv cF90cmFjaW5nIChjaGFyICpub3RlKQogIHsKKyAgIGludCByZXQ7CiArICBWRUMoYnJlYWtwb2lu dF9wKSAqdHBfdmVjID0gTlVMTDsKICsgIGludCBpeDsKICsgIHN0cnVjdCBicmVha3BvaW50ICp0 OwotKworIAogICAgdGFyZ2V0X3RyYWNlX3N0b3AgKCk7Ci0rCisgCiArICB0cF92ZWMgPSBhbGxf dHJhY2Vwb2ludHMgKCk7CiArICBmb3IgKGl4ID0gMDsgVkVDX2l0ZXJhdGUgKGJyZWFrcG9pbnRf cCwgdHBfdmVjLCBpeCwgdCk7IGl4KyspCiArICAgIHsKQEAgLTE0MzUxLDEwICsxNTUzMSwxMCBA QCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdHJhY2Vwb2ludC5jCiArCiArICBWRUNf ZnJlZSAoYnJlYWtwb2ludF9wLCB0cF92ZWMpOwogKwotICAgLyogU2hvdWxkIGNoYW5nZSBpbiBy ZXNwb25zZSB0byByZXBseT8gICovCi0gICBjdXJyZW50X3RyYWNlX3N0YXR1cyAoKS0+cnVubmlu ZyA9IDA7Ci0gfQotQEAgLTQ1MjEsNyArNDU0Nyw4IEBAIGluZm9fc3RhdGljX3RyYWNlcG9pbnRf bWFya2Vyc19jb21tYW5kICgKKyAgIGlmICghbm90ZSkKKyAgICAgbm90ZSA9IHRyYWNlX3N0b3Bf bm90ZXM7CisgICByZXQgPSB0YXJnZXRfc2V0X3RyYWNlX25vdGVzIChOVUxMLCBOVUxMLCBub3Rl KTsKK0BAIC00OTI1LDcgKzQ5NDgsOCBAQCBpbmZvX3N0YXRpY190cmFjZXBvaW50X21hcmtlcnNf Y29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCiAgICAgYXZhaWxhYmxlLiAgKi8KICAK ICBzdGF0aWMgc3RydWN0IHZhbHVlICoKQEAgLTE0MzY0LDcgKzE1NTQ0LDcgQEAgSW5kZXg6IGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL3RyYWNlcG9pbnQuYwogIHsKICAgIExPTkdFU1Qgc2l6ZTsK ICAgIGdkYl9ieXRlICpidWY7Ci1AQCAtNDcwMCw2ICs0NzI3LDE1IEBAIHRyYWNlZnJhbWVfYXZh aWxhYmxlX21lbW9yeSAoVkVDKG1lbV9yYW4KK0BAIC01MTA0LDYgKzUxMjgsMTUgQEAgdHJhY2Vm cmFtZV9hdmFpbGFibGVfbWVtb3J5IChWRUMobWVtX3JhbmdlX3MpICoqcmVzdWx0LAogICAgcmV0 dXJuIDA7CiAgfQogIApAQCAtMTQzODAsNyArMTU1NjAsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvdHJhY2Vwb2ludC5jCiAgLyogbW9kdWxlIGluaXRpYWxpemF0aW9uICovCiAg dm9pZAogIF9pbml0aWFsaXplX3RyYWNlcG9pbnQgKHZvaWQpCi1AQCAtNDcxMCw3ICs0NzQ2LDcg QEAgX2luaXRpYWxpemVfdHJhY2Vwb2ludCAodm9pZCkKK0BAIC01MTE0LDcgKzUxNDcsNyBAQCBf aW5pdGlhbGl6ZV90cmFjZXBvaW50ICh2b2lkKQogICAgICAgdmFsdWUgd2l0aCBhIHZvaWQgdHlw ZWQgdmFsdWUsIGFuZCB3aGVuIHdlIGdldCBoZXJlLCBnZGJhcmNoCiAgICAgICBpc24ndCBpbml0 aWFsaXplZCB5ZXQuICBBdCB0aGlzIHBvaW50LCB3ZSdyZSBxdWl0ZSBzdXJlIHRoZXJlCiAgICAg ICBpc24ndCBhbm90aGVyIGNvbnZlbmllbmNlIHZhcmlhYmxlIG9mIHRoZSBzYW1lIG5hbWUuICAq LwpAQCAtMTQzODksMTAgKzE1NTY5LDEwIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi90cmFjZXBvaW50LmMKICAKICAgIHRyYWNlZnJhbWVfbnVtYmVyID0gLTE7CiAgICB0cmFjZXBv aW50X251bWJlciA9IC0xOwotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3R5cGVwcmlu dC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi90eXBlcHJp bnQuYwkyMDExLTAxLTExIDIyOjUzOjI1LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL3R5cGVwcmludC5jCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICsw MjAwCitkaWZmIC0tZ2l0IGEvZ2RiL3R5cGVwcmludC5jIGIvZ2RiL3R5cGVwcmludC5jCitpbmRl eCBjZjQxNThkLi5mMTU3OTYyIDEwMDY0NAorLS0tIGEvZ2RiL3R5cGVwcmludC5jCisrKysgYi9n ZGIvdHlwZXByaW50LmMKIEBAIC0zNiw2ICszNiw3IEBACiAgI2luY2x1ZGUgImdkYl9zdHJpbmcu aCIKICAjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgpAQCAtMTQ0MDUsNyArMTU1ODUsNyBAQCBJbmRl eDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdHlwZXByaW50LmMKICB0eXBlX3ByaW50IChzdHJ1 Y3QgdHlwZSAqdHlwZSwgY2hhciAqdmFyc3RyaW5nLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAog IAkgICAgaW50IHNob3cpCiAgewotKyAgaWYgKHNob3cgPj0gMCkKKysgIGlmIChzaG93ID49IDAg JiYgY3VycmVudF9sYW5ndWFnZS0+bGFfbGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfYWRhKQogKyAgICB0 eXBlID0gY2hlY2tfdHlwZWRlZiAodHlwZSk7CiArCiAgICBMQV9QUklOVF9UWVBFICh0eXBlLCB2 YXJzdHJpbmcsIHN0cmVhbSwgc2hvdywgMCk7CkBAIC0xNDQ0NiwxMSArMTU2MjYsMTEgQEAgSW5k ZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3R5cGVwcmludC5jCiAgfQogIAogIHN0YXRpYyB2 b2lkCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdXRpbHMuYwotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvdXRpbHMuYwkyMDExLTA3LTIyIDAxOjQ2 OjA5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3V0aWxzLmMJ MjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xODc0LDYgKzE4NzQsMzYg QEAgc2V0X2JhdGNoX2ZsYWdfYW5kX21ha2VfY2xlYW51cF9yZXN0b3JlXworZGlmZiAtLWdpdCBh L2dkYi91dGlscy5jIGIvZ2RiL3V0aWxzLmMKK2luZGV4IGQ1NWU2ZjEuLmJlN2M3MmIgMTAwNjQ0 CistLS0gYS9nZGIvdXRpbHMuYworKysrIGIvZ2RiL3V0aWxzLmMKK0BAIC0xOTA2LDYgKzE5MDYs MzYgQEAgc2V0X2JhdGNoX2ZsYWdfYW5kX21ha2VfY2xlYW51cF9yZXN0b3JlX3BhZ2VfaW5mbyAo dm9pZCkKICAgIHJldHVybiBiYWNrX3RvOwogIH0KICAKQEAgLTE0NDg3LDExICsxNTY2NywxMSBA QCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdXRpbHMuYwogIC8qIFNldCB0aGUgc2Ny ZWVuIHNpemUgYmFzZWQgb24gTElORVNfUEVSX1BBR0UgYW5kIENIQVJTX1BFUl9MSU5FLiAgKi8K ICAKICBzdGF0aWMgdm9pZAotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3ZhbGFyaXRo LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3ZhbGFyaXRo LmMJMjAxMS0wMi0xOCAyMDoxMDo0Ni4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi92YWxhcml0aC5jCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAw Ci1AQCAtMTk4LDcgKzE5OCwxMCBAQCB2YWx1ZV9zdWJzY3JpcHRlZF9ydmFsdWUgKHN0cnVjdCB2 YWx1ZSAqCitkaWZmIC0tZ2l0IGEvZ2RiL3ZhbGFyaXRoLmMgYi9nZGIvdmFsYXJpdGguYworaW5k ZXggMzI1MGNjNy4uMjJkYTA2NyAxMDA2NDQKKy0tLSBhL2dkYi92YWxhcml0aC5jCisrKysgYi9n ZGIvdmFsYXJpdGguYworQEAgLTE5OCw3ICsxOTgsMTAgQEAgdmFsdWVfc3Vic2NyaXB0ZWRfcnZh bHVlIChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBMT05HRVNUIGluZGV4LCBpbnQgbG93ZXJib3VuZCkK ICAgIHN0cnVjdCB0eXBlICphcnJheV90eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAo YXJyYXkpKTsKICAgIHN0cnVjdCB0eXBlICplbHRfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVf VEFSR0VUX1RZUEUgKGFycmF5X3R5cGUpKTsKICAgIHVuc2lnbmVkIGludCBlbHRfc2l6ZSA9IFRZ UEVfTEVOR1RIIChlbHRfdHlwZSk7CkBAIC0xNDUxNCwxMCArMTU2OTQsMTAgQEAgSW5kZXg6IGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL3ZhbGFyaXRoLmMKICAgIHJldHVybiBiaW5vcF90eXBlc191 c2VyX2RlZmluZWRfcCAob3AsIHZhbHVlX3R5cGUgKGFyZzEpLCB2YWx1ZV90eXBlIChhcmcyKSk7 CiAgfQogIAotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3ZhbG9wcy5jCi09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi92YWxvcHMuYwkyMDExLTA3LTE0 IDE3OjAwOjIwLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Zh bG9wcy5jCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCitkaWZmIC0tZ2l0IGEv Z2RiL3ZhbG9wcy5jIGIvZ2RiL3ZhbG9wcy5jCitpbmRleCAyOWQxZmJkLi40NGNkZDQ5IDEwMDY0 NAorLS0tIGEvZ2RiL3ZhbG9wcy5jCisrKysgYi9nZGIvdmFsb3BzLmMKIEBAIC00Nyw2ICs0Nyw3 IEBACiAgI2luY2x1ZGUgIm9iamZpbGVzLmgiCiAgI2luY2x1ZGUgInN5bXRhYi5oIgpAQCAtMTQ1 MjYsNyArMTU3MDYsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdmFsb3BzLmMK ICAKICBleHRlcm4gaW50IG92ZXJsb2FkX2RlYnVnOwogIC8qIExvY2FsIGZ1bmN0aW9ucy4gICov Ci1AQCAtOTE1LDYgKzkxNiw2NSBAQCB2YWx1ZV9vbmUgKHN0cnVjdCB0eXBlICp0eXBlLCBlbnVt IGx2YWxfCitAQCAtOTE3LDYgKzkxOCw2NSBAQCB2YWx1ZV9vbmUgKHN0cnVjdCB0eXBlICp0eXBl KQogICAgcmV0dXJuIHZhbDsKICB9CiAgCkBAIC0xNDU5Miw3ICsxNTc3Miw3IEBAIEluZGV4OiBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi92YWxvcHMuYwogIC8qIEhlbHBlciBmdW5jdGlvbiBmb3Ig dmFsdWVfYXQsIHZhbHVlX2F0X2xhenksIGFuZCB2YWx1ZV9hdF9sYXp5X3N0YWNrLiAgKi8KICAK ICBzdGF0aWMgc3RydWN0IHZhbHVlICoKLUBAIC0xMDExLDEyICsxMDcxLDIwIEBAIHZhbHVlX2Zl dGNoX2xhenkgKHN0cnVjdCB2YWx1ZSAqdmFsKQorQEAgLTEwMTMsMTIgKzEwNzMsMjAgQEAgdmFs dWVfZmV0Y2hfbGF6eSAoc3RydWN0IHZhbHVlICp2YWwpCiAgICAgIH0KICAgIGVsc2UgaWYgKFZB TFVFX0xWQUwgKHZhbCkgPT0gbHZhbF9tZW1vcnkpCiAgICAgIHsKQEAgLTE0NjE4LDcgKzE1Nzk4 LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3ZhbG9wcy5jCiAgICAgIH0KICAg IGVsc2UgaWYgKFZBTFVFX0xWQUwgKHZhbCkgPT0gbHZhbF9yZWdpc3RlcikKICAgICAgewotQEAg LTE1MjgsNyArMTU5NiwxOCBAQCBhZGRyZXNzX29mX3ZhcmlhYmxlIChzdHJ1Y3Qgc3ltYm9sICp2 YXIsCitAQCAtMTUzMCw3ICsxNTk4LDE4IEBAIGFkZHJlc3Nfb2ZfdmFyaWFibGUgKHN0cnVjdCBz eW1ib2wgKnZhciwgc3RydWN0IGJsb2NrICpiKQogICAgaWYgKChWQUxVRV9MVkFMICh2YWwpID09 IGx2YWxfbWVtb3J5ICYmIHZhbHVlX2xhenkgKHZhbCkpCiAgICAgICAgfHwgVFlQRV9DT0RFICh0 eXBlKSA9PSBUWVBFX0NPREVfRlVOQykKICAgICAgewpAQCAtMTQ2MzgsNyArMTU4MTgsNyBAQCBJ bmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdmFsb3BzLmMKICAKICAgICAgICByZXR1cm4g dmFsdWVfZnJvbV9wb2ludGVyIChsb29rdXBfcG9pbnRlcl90eXBlICh0eXBlKSwgYWRkcik7CiAg ICAgIH0KLUBAIC0xNjM1LDYgKzE3MTQsNyBAQCBzdHJ1Y3QgdmFsdWUgKgorQEAgLTE2MzcsNiAr MTcxNiw3IEBAIHN0cnVjdCB2YWx1ZSAqCiAgdmFsdWVfY29lcmNlX2FycmF5IChzdHJ1Y3QgdmFs dWUgKmFyZzEpCiAgewogICAgc3RydWN0IHR5cGUgKnR5cGUgPSBjaGVja190eXBlZGVmICh2YWx1 ZV90eXBlIChhcmcxKSk7CkBAIC0xNDY0Niw3ICsxNTgyNiw3IEBAIEluZGV4OiBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi92YWxvcHMuYwogIAogICAgLyogSWYgdGhlIHVzZXIgdHJpZXMgdG8gZG8g c29tZXRoaW5nIHJlcXVpcmluZyBhIHBvaW50ZXIgd2l0aCBhbgogICAgICAgYXJyYXkgdGhhdCBo YXMgbm90IHlldCBiZWVuIHB1c2hlZCB0byB0aGUgdGFyZ2V0LCB0aGVuIHRoaXMgd291bGQKLUBA IC0xNjQ0LDggKzE3MjQsMTIgQEAgdmFsdWVfY29lcmNlX2FycmF5IChzdHJ1Y3QgdmFsdWUgKmFy ZzEpCitAQCAtMTY0Niw4ICsxNzI2LDEyIEBAIHZhbHVlX2NvZXJjZV9hcnJheSAoc3RydWN0IHZh bHVlICphcmcxKQogICAgaWYgKFZBTFVFX0xWQUwgKGFyZzEpICE9IGx2YWxfbWVtb3J5KQogICAg ICBlcnJvciAoXygiQXR0ZW1wdCB0byB0YWtlIGFkZHJlc3Mgb2YgdmFsdWUgbm90IGxvY2F0ZWQg aW4gbWVtb3J5LiIpKTsKICAKQEAgLTE0NjYwLDcgKzE1ODQwLDcgQEAgSW5kZXg6IGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL3ZhbG9wcy5jCiAgfQogIAogIC8qIEdpdmVuIGEgdmFsdWUgd2hpY2gg aXMgYSBmdW5jdGlvbiwgcmV0dXJuIGEgdmFsdWUgd2hpY2ggaXMgYSBwb2ludGVyCi1AQCAtMzY3 Niw2ICszNzYwLDggQEAgdmFsdWVfc2xpY2UgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIGludCBsbwor QEAgLTM2OTYsNiArMzc4MCw4IEBAIHZhbHVlX3NsaWNlIChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBp bnQgbG93Ym91bmQsIGludCBsZW5ndGgpCiAgCQkJCQlUWVBFX1RBUkdFVF9UWVBFIChyYW5nZV90 eXBlKSwKICAJCQkJCWxvd2JvdW5kLCAKICAJCQkJCWxvd2JvdW5kICsgbGVuZ3RoIC0gMSk7CkBA IC0xNDY2OSwxMCArMTU4NDksMTAgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Zh bG9wcy5jCiAgICBpZiAoVFlQRV9DT0RFIChhcnJheV90eXBlKSA9PSBUWVBFX0NPREVfQklUU1RS SU5HKQogICAgICB7CiAgICAgICAgaW50IGk7Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvdmFscHJpbnQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9n ZGIvdmFscHJpbnQuYwkyMDExLTA2LTI5IDE3OjMyOjM5LjAwMDAwMDAwMCArMDIwMAotKysrIGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL3ZhbHByaW50LmMJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAw MDAwMDAgKzAyMDAKK2RpZmYgLS1naXQgYS9nZGIvdmFscHJpbnQuYyBiL2dkYi92YWxwcmludC5j CitpbmRleCBiNGFjNGVjLi4zNzc5MDVlIDEwMDY0NAorLS0tIGEvZ2RiL3ZhbHByaW50LmMKKysr KyBiL2dkYi92YWxwcmludC5jCiBAQCAtMzksNiArMzksNyBAQAogICNpbmNsdWRlICJnZGJfb2Jz dGFjay5oIgogICNpbmNsdWRlICJjaGFyc2V0LmgiCkBAIC0xNDY4OSw3ICsxNTg2OSw3IEBAIElu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi92YWxwcmludC5jCiAgICAgIGNhc2UgVFlQRV9D T0RFX0JJVFNUUklORzoKICAgICAgICByZXR1cm4gMDsKICAgICAgZGVmYXVsdDoKLUBAIC0xMTk2 LDYgKzExOTYsNyBAQCB2YWxfcHJpbnRfYXJyYXlfZWxlbWVudHMgKHN0cnVjdCB0eXBlICp0CitA QCAtMTIwMCw2ICsxMjAwLDcgQEAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChzdHJ1Y3QgdHlw ZSAqdHlwZSwKICB7CiAgICB1bnNpZ25lZCBpbnQgdGhpbmdzX3ByaW50ZWQgPSAwOwogICAgdW5z aWduZWQgbGVuOwpAQCAtMTQ2OTcsNyArMTU4NzcsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvdmFscHJpbnQuYwogICAgc3RydWN0IHR5cGUgKmVsdHR5cGUsICppbmRleF90eXBl OwogICAgdW5zaWduZWQgZWx0bGVuOwogICAgLyogUG9zaXRpb24gb2YgdGhlIGFycmF5IGVsZW1l bnQgd2UgYXJlIGV4YW1pbmluZyB0byBzZWUKLUBAIC0xMjA0LDkgKzEyMDUsMzMgQEAgdmFsX3By aW50X2FycmF5X2VsZW1lbnRzIChzdHJ1Y3QgdHlwZSAqdAorQEAgLTEyMDgsOSArMTIwOSwzMyBA QCB2YWxfcHJpbnRfYXJyYXlfZWxlbWVudHMgKHN0cnVjdCB0eXBlICp0eXBlLAogICAgLyogTnVt YmVyIG9mIHJlcGV0aXRpb25zIHdlIGhhdmUgZGV0ZWN0ZWQgc28gZmFyLiAgKi8KICAgIHVuc2ln bmVkIGludCByZXBzOwogICAgTE9OR0VTVCBsb3dfYm91bmQsIGhpZ2hfYm91bmQ7CkBAIC0xNDcz Myw3ICsxNTkxMyw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi92YWxwcmludC5j CiAgICBpbmRleF90eXBlID0gVFlQRV9JTkRFWF9UWVBFICh0eXBlKTsKICAKICAgIGlmIChnZXRf YXJyYXlfYm91bmRzICh0eXBlLCAmbG93X2JvdW5kLCAmaGlnaF9ib3VuZCkpCi1AQCAtMTI5Myw2 ICsxMzE4LDggQEAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChzdHJ1Y3QgdHlwZSAqdAorQEAg LTEyOTcsNiArMTMyMiw4IEBAIHZhbF9wcmludF9hcnJheV9lbGVtZW50cyAoc3RydWN0IHR5cGUg KnR5cGUsCiAgICAgIHsKICAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIuLi4iKTsK ICAgICAgfQpAQCAtMTQ3NDIsMTAgKzE1OTIyLDEwIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi92YWxwcmludC5jCiAgfQogIAogIC8qIFJlYWQgTEVOIGJ5dGVzIG9mIHRhcmdldCBt ZW1vcnkgYXQgYWRkcmVzcyBNRU1BRERSLCBwbGFjaW5nIHRoZQotSW5kZXg6IGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL3ZhbHVlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIy Lm9yaWcvZ2RiL3ZhbHVlLmMJMjAxMS0wNy0xNCAxNzowMDoyMC4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi92YWx1ZS5jCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAw MDAwMDAwICswMjAwCitkaWZmIC0tZ2l0IGEvZ2RiL3ZhbHVlLmMgYi9nZGIvdmFsdWUuYworaW5k ZXggZDAyYmMyNy4uYzgzZTFhOCAxMDA2NDQKKy0tLSBhL2dkYi92YWx1ZS5jCisrKysgYi9nZGIv dmFsdWUuYwogQEAgLTQzLDYgKzQzLDcgQEAKICAjaW5jbHVkZSAicHl0aG9uL3B5dGhvbi5oIgog ICNpbmNsdWRlIDxjdHlwZS5oPgpAQCAtMTQ3NTQsNyArMTU5MzQsNyBAQCBJbmRleDogZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvdmFsdWUuYwogIAogIC8qIFByb3RvdHlwZXMgZm9yIGV4cG9ydGVk IGZ1bmN0aW9ucy4gICovCiAgCi1AQCAtMTM1NCwxMiArMTM1NSwxNSBAQCB2b2lkCitAQCAtMTM4 NywxMiArMTM4OCwxNSBAQCB2b2lkCiAgc2V0X3ZhbHVlX2NvbXBvbmVudF9sb2NhdGlvbiAoc3Ry dWN0IHZhbHVlICpjb21wb25lbnQsCiAgCQkJICAgICAgY29uc3Qgc3RydWN0IHZhbHVlICp3aG9s ZSkKICB7CkBAIC0xNDc3MCw3ICsxNTk1MCw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi92YWx1ZS5jCiAgICBpZiAod2hvbGUtPmx2YWwgPT0gbHZhbF9jb21wdXRlZCkKICAgICAg ewogICAgICAgIGNvbnN0IHN0cnVjdCBsdmFsX2Z1bmNzICpmdW5jcyA9IHdob2xlLT5sb2NhdGlv bi5jb21wdXRlZC5mdW5jczsKLUBAIC0xMzY3LDYgKzEzNzEsMTIgQEAgc2V0X3ZhbHVlX2NvbXBv bmVudF9sb2NhdGlvbiAoc3RydWN0IHZhbAorQEAgLTE0MDAsNiArMTQwNCwxMiBAQCBzZXRfdmFs dWVfY29tcG9uZW50X2xvY2F0aW9uIChzdHJ1Y3QgdmFsdWUgKmNvbXBvbmVudCwKICAgICAgICBp ZiAoZnVuY3MtPmNvcHlfY2xvc3VyZSkKICAgICAgICAgIGNvbXBvbmVudC0+bG9jYXRpb24uY29t cHV0ZWQuY2xvc3VyZSA9IGZ1bmNzLT5jb3B5X2Nsb3N1cmUgKHdob2xlKTsKICAgICAgfQpAQCAt MTQ3ODMsNyArMTU5NjMsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdmFsdWUu YwogIH0KICAKICAMCi1AQCAtMTUwMCw2ICsxNTEwLDMxIEBAIHNob3dfdmFsdWVzIChjaGFyICpu dW1fZXhwLCBpbnQgZnJvbV90dHkKK0BAIC0xNTMzLDYgKzE1NDMsMzEgQEAgc2hvd192YWx1ZXMg KGNoYXIgKm51bV9leHAsIGludCBmcm9tX3R0eSkKICAgICAgICBudW1fZXhwWzFdID0gJ1wwJzsK ICAgICAgfQogIH0KQEAgLTE0ODE1LDcgKzE1OTk1LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL3ZhbHVlLmMKICAMCiAgLyogSW50ZXJuYWwgdmFyaWFibGVzLiAgVGhlc2UgYXJl IHZhcmlhYmxlcyB3aXRoaW4gdGhlIGRlYnVnZ2VyCiAgICAgdGhhdCBob2xkIHZhbHVlcyBhc3Np Z25lZCBieSBkZWJ1Z2dlciBjb21tYW5kcy4KLUBAIC0xNTQ1LDcgKzE1ODAsMTQgQEAgc3RydWN0 IGludGVybmFsdmFyCitAQCAtMTU3OCw3ICsxNjEzLDE0IEBAIHN0cnVjdCBpbnRlcm5hbHZhcgog ICAgICAgIHN0cnVjdCB2YWx1ZSAqdmFsdWU7CiAgCiAgICAgICAgLyogVGhlIGNhbGwtYmFjayBy b3V0aW5lIHVzZWQgd2l0aCBJTlRFUk5BTFZBUl9NQUtFX1ZBTFVFLiAgKi8KQEAgLTE0ODMxLDcg KzE2MDExLDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3ZhbHVlLmMKICAKICAg ICAgICAvKiBUaGUgaW50ZXJuYWwgZnVuY3Rpb24gdXNlZCB3aXRoIElOVEVSTkFMVkFSX0ZVTkNU SU9OLiAgKi8KICAgICAgICBzdHJ1Y3QKLUBAIC0xNjQ0LDE4ICsxNjg2LDM5IEBAIGNyZWF0ZV9p bnRlcm5hbHZhciAoY29uc3QgY2hhciAqbmFtZSkKK0BAIC0xNjc3LDE4ICsxNzE5LDM5IEBAIGNy ZWF0ZV9pbnRlcm5hbHZhciAoY29uc3QgY2hhciAqbmFtZSkKICAvKiBDcmVhdGUgYW4gaW50ZXJu YWwgdmFyaWFibGUgd2l0aCBuYW1lIE5BTUUgYW5kIHJlZ2lzdGVyIEZVTiBhcyB0aGUKICAgICBm dW5jdGlvbiB0aGF0IHZhbHVlX29mX2ludGVybmFsdmFyIHVzZXMgdG8gY3JlYXRlIGEgdmFsdWUg d2hlbmV2ZXIKICAgICB0aGlzIHZhcmlhYmxlIGlzIHJlZmVyZW5jZWQuICBOQU1FIHNob3VsZCBu b3Qgbm9ybWFsbHkgaW5jbHVkZSBhCkBAIC0xNDg3NCw3ICsxNjA1NCw3IEBAIEluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi92YWx1ZS5jCiAgLyogTG9vayB1cCBhbiBpbnRlcm5hbCB2YXJp YWJsZSB3aXRoIG5hbWUgTkFNRS4gIE5BTUUgc2hvdWxkIG5vdAogICAgIG5vcm1hbGx5IGluY2x1 ZGUgYSBkb2xsYXIgc2lnbi4KICAKLUBAIC0xNzI4LDcgKzE3OTEsOCBAQCB2YWx1ZV9vZl9pbnRl cm5hbHZhciAoc3RydWN0IGdkYmFyY2ggKmdkCitAQCAtMTc2MSw3ICsxODI0LDggQEAgdmFsdWVf b2ZfaW50ZXJuYWx2YXIgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgaW50ZXJuYWx2 YXIgKnZhcikKICAgICAgICBicmVhazsKICAKICAgICAgY2FzZSBJTlRFUk5BTFZBUl9NQUtFX1ZB TFVFOgpAQCAtMTQ4ODQsNyArMTYwNjQsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvdmFsdWUuYwogICAgICAgIGJyZWFrOwogIAogICAgICBkZWZhdWx0OgotQEAgLTE5MjQsNiAr MTk4OCwxMSBAQCBjbGVhcl9pbnRlcm5hbHZhciAoc3RydWN0IGludGVybmFsdmFyICp2CitAQCAt MTk1Nyw2ICsyMDIxLDExIEBAIGNsZWFyX2ludGVybmFsdmFyIChzdHJ1Y3QgaW50ZXJuYWx2YXIg KnZhcikKICAgICAgICB4ZnJlZSAodmFyLT51LnN0cmluZyk7CiAgICAgICAgYnJlYWs7CiAgCkBA IC0xNDg5Niw3ICsxNjA3Niw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi92YWx1 ZS5jCiAgICAgIGRlZmF1bHQ6CiAgICAgICAgYnJlYWs7CiAgICAgIH0KLUBAIC0xOTc4LDYgKzIw NDcsMzggQEAgY2FsbF9pbnRlcm5hbF9mdW5jdGlvbiAoc3RydWN0IGdkYmFyY2ggKgorQEAgLTIw MTEsNiArMjA4MCwzOCBAQCBjYWxsX2ludGVybmFsX2Z1bmN0aW9uIChzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCwKICAgIHJldHVybiAoKmlmbi0+aGFuZGxlcikgKGdkYmFyY2gsIGxhbmd1YWdlLCBp Zm4tPmNvb2tpZSwgYXJnYywgYXJndik7CiAgfQogIApAQCAtMTQ5MzUsNyArMTYxMTUsNyBAQCBJ bmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdmFsdWUuYwogIC8qIFRoZSAnZnVuY3Rpb24n IGNvbW1hbmQuICBUaGlzIGRvZXMgbm90aGluZyAtLSBpdCBpcyBqdXN0IGEKICAgICBwbGFjZWhv bGRlciB0byBsZXQgImhlbHAgZnVuY3Rpb24gTkFNRSIgd29yay4gIFRoaXMgaXMgYWxzbyB1c2Vk IGFzCiAgICAgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBzdWItY29tbWFuZCB0aGF0IGlzIGNy ZWF0ZWQgd2hlbgotQEAgLTIwMjUsMTEgKzIxMjYsMTAgQEAgcHJlc2VydmVfb25lX3ZhbHVlIChz dHJ1Y3QgdmFsdWUgKnZhbHVlLAorQEAgLTIwNTgsMTEgKzIxNTksMTAgQEAgcHJlc2VydmVfb25l X3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnZhbHVlLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAJ CSAgICBodGFiX3QgY29waWVkX3R5cGVzKQogIHsKICAgIGlmIChUWVBFX09CSkZJTEUgKHZhbHVl LT50eXBlKSA9PSBvYmpmaWxlKQpAQCAtMTQ5NDksNyArMTYxMjksNyBAQCBJbmRleDogZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvdmFsdWUuYwogIAkJCQkJCSBjb3BpZWRfdHlwZXMpOwogIH0KICAK LUBAIC0yMDQ0LDcgKzIxNDQsNyBAQCBwcmVzZXJ2ZV9vbmVfaW50ZXJuYWx2YXIgKHN0cnVjdCBp bnRlcm5hCitAQCAtMjA3Nyw3ICsyMTc3LDcgQEAgcHJlc2VydmVfb25lX2ludGVybmFsdmFyIChz dHJ1Y3QgaW50ZXJuYWx2YXIgKnZhciwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiAgICAgIGNh c2UgSU5URVJOQUxWQVJfSU5URUdFUjoKICAgICAgICBpZiAodmFyLT51LmludGVnZXIudHlwZSAm JiBUWVBFX09CSkZJTEUgKHZhci0+dS5pbnRlZ2VyLnR5cGUpID09IG9iamZpbGUpCiAgCXZhci0+ dS5pbnRlZ2VyLnR5cGUKQEAgLTE0OTU4LDM5ICsxNjEzOCwxNCBAQCBJbmRleDogZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvdmFsdWUuYwogICAgICAgIGJyZWFrOwogIAogICAgICBjYXNlIElOVEVS TkFMVkFSX1ZBTFVFOgotQEAgLTIwOTUsMTQgKzIxOTUsMjIgQEAgc2hvd19jb252ZW5pZW5jZSAo Y2hhciAqaWdub3JlLCBpbnQgZnJvbQotICAgZ2V0X3VzZXJfcHJpbnRfb3B0aW9ucyAoJm9wdHMp OwotICAgZm9yICh2YXIgPSBpbnRlcm5hbHZhcnM7IHZhcjsgdmFyID0gdmFyLT5uZXh0KQotICAg ICB7Ci0rICAgICAgdm9sYXRpbGUgc3RydWN0IGdkYl9leGNlcHRpb24gZTsKLSsKLSAgICAgICBp ZiAoIXZhcnNlZW4pCi0gCXsKLSAJICB2YXJzZWVuID0gMTsKLSAJfQotICAgICAgIHByaW50Zl9m aWx0ZXJlZCAoKCIkJXMgPSAiKSwgdmFyLT5uYW1lKTsKLS0gICAgICB2YWx1ZV9wcmludCAodmFs dWVfb2ZfaW50ZXJuYWx2YXIgKGdkYmFyY2gsIHZhciksIGdkYl9zdGRvdXQsCi0tCQkgICAmb3B0 cyk7Ci0tICAgICAgcHJpbnRmX2ZpbHRlcmVkICgoIlxuIikpOwotKwotKyAgICAgIFRSWV9DQVRD SCAoZSwgUkVUVVJOX01BU0tfRVJST1IpCi0rCXsKLSsJICB2YWx1ZV9wcmludCAodmFsdWVfb2Zf aW50ZXJuYWx2YXIgKGdkYmFyY2gsIHZhciksIGdkYl9zdGRvdXQsCi0rCQkgICAgICAgJm9wdHMp OwotKwkgIHByaW50Zl9maWx0ZXJlZCAoKCJcbiIpKTsKLSsJfQotKyAgICAgIGlmIChlLnJlYXNv biA8IDApCi0rCXByaW50Zl9maWx0ZXJlZCAoXygiPGVycm9yOiAlcz5cbiIpLCBlLm1lc3NhZ2Up OwotICAgICB9Ci0gICBpZiAoIXZhcnNlZW4pCi0gICAgIHByaW50Zl91bmZpbHRlcmVkIChfKCJO byBkZWJ1Z2dlciBjb252ZW5pZW5jZSB2YXJpYWJsZXMgbm93IGRlZmluZWQuXG4iCi1AQCAtMzA3 NSw3ICszMTgzLDI0IEBAIHZhbHVlX2Zyb21faGlzdG9yeV9yZWYgKGNoYXIgKmgsIGNoYXIgKioK K0BAIC0zMTM5LDkgKzMyMzksMjYgQEAgY29lcmNlX3JlZl9pZl9jb21wdXRlZCAoY29uc3Qgc3Ry dWN0IHZhbHVlICphcmcpCiAgc3RydWN0IHZhbHVlICoKICBjb2VyY2VfcmVmIChzdHJ1Y3QgdmFs dWUgKmFyZykKICB7CiAtICBzdHJ1Y3QgdHlwZSAqdmFsdWVfdHlwZV9hcmdfdG1wID0gY2hlY2tf dHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnKSk7CiArICBzdHJ1Y3QgdHlwZSAqdmFsdWVfdHlwZV9h cmdfdG1wOwotKworICAgc3RydWN0IHZhbHVlICpyZXR2YWw7CisgCiArICBpZiAoVFlQRV9EWU5B TUlDICh2YWx1ZV90eXBlIChhcmcpKSkKICsgICAgewogKyAgICAgIHN0cnVjdCBjbGVhbnVwICpj bGVhbnVwcyA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVhbnVwLCBOVUxMKTsKQEAgLTE1MDA3LDEw ICsxNjE2MiwxMSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdmFsdWUuYwogKyAg ICB9CiArICBlbHNlCiArICAgIHZhbHVlX3R5cGVfYXJnX3RtcCA9IGNoZWNrX3R5cGVkZWYgKHZh bHVlX3R5cGUgKGFyZykpOwotIAotICAgaWYgKFRZUEVfQ09ERSAodmFsdWVfdHlwZV9hcmdfdG1w KSA9PSBUWVBFX0NPREVfUkVGKQotICAgICBhcmcgPSB2YWx1ZV9hdF9sYXp5IChUWVBFX1RBUkdF VF9UWVBFICh2YWx1ZV90eXBlX2FyZ190bXApLAotQEAgLTMxNzMsNCArMzI5OCwxMCBAQCBWQVJJ QUJMRSBpcyBhbHJlYWR5IGluaXRpYWxpemVkLiIpKTsKKysKKyAgIHJldHZhbCA9IGNvZXJjZV9y ZWZfaWZfY29tcHV0ZWQgKGFyZyk7CisgICBpZiAocmV0dmFsKQorICAgICByZXR1cm4gcmV0dmFs OworQEAgLTMyNDMsNCArMzM2MCwxMCBAQCBWQVJJQUJMRSBpcyBhbHJlYWR5IGluaXRpYWxpemVk LiIpKTsKICAgIGFkZF9wcmVmaXhfY21kICgiZnVuY3Rpb24iLCBub19jbGFzcywgZnVuY3Rpb25f Y29tbWFuZCwgXygiXAogIFBsYWNlaG9sZGVyIGNvbW1hbmQgZm9yIHNob3dpbmcgaGVscCBvbiBj b252ZW5pZW5jZSBmdW5jdGlvbnMuIiksCiAgCQkgICZmdW5jdGlvbmxpc3QsICJmdW5jdGlvbiAi LCAwLCAmY21kbGlzdCk7CkBAIC0xNTAyMSwxMSArMTYxNzcsMTEgQEAgSW5kZXg6IGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL3ZhbHVlLmMKICsgIG9ic2VydmVyX2F0dGFjaF9tYXJrX3VzZWQgKHZh bHVlX3R5cGVzX21hcmtfdXNlZCk7CiArI2VuZGlmCiAgfQotSW5kZXg6IGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL3ZhbHVlLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9y aWcvZ2RiL3ZhbHVlLmgJMjAxMS0wNy0xNCAxNzowMDoyMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi92YWx1ZS5oCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAw MDAwICswMjAwCi1AQCAtNDc1LDYgKzQ3NSwxMCBAQCBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1 ZV9mcm9tX2RlY2Zsb2F0CitkaWZmIC0tZ2l0IGEvZ2RiL3ZhbHVlLmggYi9nZGIvdmFsdWUuaAor aW5kZXggMTY3ODQ3Zi4uY2NkNjhmYyAxMDA2NDQKKy0tLSBhL2dkYi92YWx1ZS5oCisrKysgYi9n ZGIvdmFsdWUuaAorQEAgLTQ5MCw2ICs0OTAsMTAgQEAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFs dWVfZnJvbV9kZWNmbG9hdCAoc3RydWN0IHR5cGUgKnR5cGUsCiAgCQkJCQkgIGNvbnN0IGdkYl9i eXRlICpkZWNieXRlcyk7CiAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfZnJvbV9oaXN0b3J5 X3JlZiAoY2hhciAqLCBjaGFyICoqKTsKICAKQEAgLTE1MDM2LDcgKzE2MTkyLDcgQEAgSW5kZXg6 IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3ZhbHVlLmgKICBleHRlcm4gc3RydWN0IHZhbHVlICp2 YWx1ZV9hdCAoc3RydWN0IHR5cGUgKnR5cGUsIENPUkVfQUREUiBhZGRyKTsKICBleHRlcm4gc3Ry dWN0IHZhbHVlICp2YWx1ZV9hdF9sYXp5IChzdHJ1Y3QgdHlwZSAqdHlwZSwgQ09SRV9BRERSIGFk ZHIpOwogIAotQEAgLTcwMCwxMCArNzA0LDUyIEBAIGV4dGVybiBzdHJ1Y3QgaW50ZXJuYWx2YXIg Kmxvb2t1cF9vbmx5X2kKK0BAIC03MTksMTAgKzcyMyw1MiBAQCBleHRlcm4gc3RydWN0IGludGVy bmFsdmFyICpsb29rdXBfb25seV9pbnRlcm5hbHZhciAoY29uc3QgY2hhciAqbmFtZSk7CiAgCiAg ZXh0ZXJuIHN0cnVjdCBpbnRlcm5hbHZhciAqY3JlYXRlX2ludGVybmFsdmFyIChjb25zdCBjaGFy ICpuYW1lKTsKICAKQEAgLTE1MDkyLDExICsxNjI0OCwxMSBAQCBJbmRleDogZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvdmFsdWUuaAogIAogIGV4dGVybiBzdHJ1Y3QgaW50ZXJuYWx2YXIgKmxvb2t1 cF9pbnRlcm5hbHZhciAoY29uc3QgY2hhciAqbmFtZSk7CiAgCi1JbmRleDogZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvd2luZG93cy10ZGVwLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIw MTEwNzIyLm9yaWcvZ2RiL3dpbmRvd3MtdGRlcC5jCTIwMTEtMDctMTQgMTc6MDA6MjAuMDAwMDAw MDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvd2luZG93cy10ZGVwLmMJMjAx MS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0yNjgsNyArMjY4LDcgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBsdmFsX2Z1bmNzIHRsYl92YWx1ZQorZGlmZiAtLWdpdCBhL2dkYi93 aW5kb3dzLXRkZXAuYyBiL2dkYi93aW5kb3dzLXRkZXAuYworaW5kZXggNWU4MGFhZi4uZjVlZTVm ZiAxMDA2NDQKKy0tLSBhL2dkYi93aW5kb3dzLXRkZXAuYworKysrIGIvZ2RiL3dpbmRvd3MtdGRl cC5jCitAQCAtMjY4LDcgKzI2OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbHZhbF9mdW5jcyB0 bGJfdmFsdWVfZnVuY3MgPQogICAgIGlmIHRoZXJlJ3Mgbm8gb2JqZWN0IGF2YWlsYWJsZS4gICov CiAgCiAgc3RhdGljIHN0cnVjdCB2YWx1ZSAqCkBAIC0xNTEyOCwxMSArMTYyODQsMTEgQEAgSW5k ZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3dpbmRvd3MtdGRlcC5jCiAtICBjcmVhdGVfaW50 ZXJuYWx2YXJfdHlwZV9sYXp5ICgiX3RsYiIsIHRsYl9tYWtlX3ZhbHVlKTsKICsgIGNyZWF0ZV9p bnRlcm5hbHZhcl90eXBlX2xhenkgKCJfdGxiIiwgJnRsYl9mdW5jcywgTlVMTCk7CiAgfQotSW5k ZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3hjb2ZmcmVhZC5jCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi94Y29mZnJlYWQuYwkyMDExLTA3LTI5IDIyOjUy OjAwLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3hjb2ZmcmVh ZC5jCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCi1AQCAtMzEyNSw2ICszMTI1 LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzeW1fZm5zIHhjb2ZmX3N5bV9mbgorZGlmZiAtLWdp dCBhL2dkYi94Y29mZnJlYWQuYyBiL2dkYi94Y29mZnJlYWQuYworaW5kZXggZDc3NjBlZS4uOGE4 ZjVmYyAxMDA2NDQKKy0tLSBhL2dkYi94Y29mZnJlYWQuYworKysrIGIvZ2RiL3hjb2ZmcmVhZC5j CitAQCAtMzEyNSw2ICszMTI1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzeW1fZm5zIHhjb2Zm X3N5bV9mbnMgPQogICAgZGVmYXVsdF9zeW1maWxlX3NlZ21lbnRzLAkvKiBHZXQgc2VnbWVudCBp bmZvcm1hdGlvbiBmcm9tIGEgZmlsZS4gICovCiAgICBhaXhfcHJvY2Vzc19saW5lbm9zLAogICAg ZGVmYXVsdF9zeW1maWxlX3JlbG9jYXRlLAkvKiBSZWxvY2F0ZSBhIGRlYnVnIHNlY3Rpb24uICAq LwoKZGlmZiAtLWdpdCBhL2dkYi1iejU0MTg2Ni1yd2F0Y2gtYmVmb3JlLXJ1bi5wYXRjaCBiL2dk Yi1iejU0MTg2Ni1yd2F0Y2gtYmVmb3JlLXJ1bi5wYXRjaAppbmRleCBhODFkNjI3Li43Y2MyYTM4 IDEwMDY0NAotLS0gYS9nZGItYno1NDE4NjYtcndhdGNoLWJlZm9yZS1ydW4ucGF0Y2gKKysrIGIv Z2RiLWJ6NTQxODY2LXJ3YXRjaC1iZWZvcmUtcnVuLnBhdGNoCkBAIC0xLDIwICsxLDIwIEBACi1J bmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvY29uZmlnL2kzODYvbGludXg2NC5taAorSW5k ZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2NvbmZpZy9pMzg2L2xpbnV4NjQubWgKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2NvbmZpZy9pMzg2L2xpbnV4 NjQubWgJMjAxMS0wNy0yMiAwMTo0NjoxMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi9jb25maWcvaTM4Ni9saW51eDY0Lm1oCTIwMTEtMDctMjIgMTk6MzI6NDEu MDAwMDAwMDAwICswMjAwCi1AQCAtMyw3ICszLDcgQEAgTkFUREVQRklMRVM9IGluZi1wdHJhY2Uu byBmb3JrLWNoaWxkLm8gXAotIAlpMzg2LW5hdC5vIGFtZDY0LW5hdC5vIGFtZDY0LWxpbnV4LW5h dC5vIFwKKy0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL2NvbmZpZy9pMzg2L2xpbnV4 NjQubWgJMjAxMS0wOC0yNCAxNDowNzoyNi4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUw LjIwMTExMjE4L2dkYi9jb25maWcvaTM4Ni9saW51eDY0Lm1oCTIwMTEtMTItMTkgMDE6NDA6NDku NDkyNjI1ODM3ICswMTAwCitAQCAtNCw3ICs0LDcgQEAgTkFUREVQRklMRVM9IGluZi1wdHJhY2Uu byBmb3JrLWNoaWxkLm8gXAogIAlsaW51eC1uYXQubyBsaW51eC1vc2RhdGEubyBcCi0gCXByb2Mt c2VydmljZS5vIGxpbnV4LXRocmVhZC1kYi5vIGxpbnV4LWZvcmsubworIAlwcm9jLXNlcnZpY2Uu byBsaW51eC10aHJlYWQtZGIubyBsaW51eC1mb3JrLm8gXAorIAlsaW51eC1wcm9jZnMubwogLU5B VF9GSUxFPSBjb25maWcvbm0tbGludXguaAogK05BVF9GSUxFPSBubS1saW51eDY0LmgKICBOQVRf Q0RFUFMgPSAkKHNyY2RpcikvcHJvYy1zZXJ2aWNlLmxpc3QKICAKICAjIFRoZSBkeW5hbWljYWxs eSBsb2FkZWQgbGlidGhyZWFkX2RiIG5lZWRzIGFjY2VzcyB0byBzeW1ib2xzIGluIHRoZQotSW5k ZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2NvbmZpZy9pMzg2L2xpbnV4Lm1oCitJbmRleDog Z2RiLTcuNC41MC4yMDExMTIxOC9nZGIvY29uZmlnL2kzODYvbGludXgubWgKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2NvbmZpZy9pMzg2L2xpbnV4Lm1oCTIw MTEtMDctMjIgMDE6NDY6MTAuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvY29uZmlnL2kzODYvbGludXgubWgJMjAxMS0wNy0yMiAxOTozMjoyMS4wMDAwMDAwMDAg KzAyMDAKKy0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL2NvbmZpZy9pMzg2L2xpbnV4 Lm1oCTIwMTEtMDgtMjQgMTQ6MDc6MjYuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4y MDExMTIxOC9nZGIvY29uZmlnL2kzODYvbGludXgubWgJMjAxMS0xMi0xOSAwMTo0MDozMi40NTM2 ODkwMDYgKzAxMDAKIEBAIC0xLDYgKzEsNiBAQAogICMgSG9zdDogSW50ZWwgMzg2IHJ1bm5pbmcg R05VL0xpbnV4LgogIApAQCAtMjMsMTAgKzIzLDEwIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi9jb25maWcvaTM4Ni9saW51eC5taAogIE5BVERFUEZJTEVTPSBpbmYtcHRyYWNlLm8g Zm9yay1jaGlsZC5vIFwKICAJaTM4Ni1uYXQubyBpMzg2LWxpbnV4LW5hdC5vIFwKICAJcHJvYy1z ZXJ2aWNlLm8gbGludXgtdGhyZWFkLWRiLm8gXAotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL2NvbmZpZy9pMzg2L25tLWxpbnV4LmgKK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dk Yi9jb25maWcvaTM4Ni9ubS1saW51eC5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAt MDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvY29uZmlnL2kzODYvbm0tbGludXguaAkyMDExLTA3LTIyIDE5OjMyOjIxLjAwMDAwMDAwMCAr MDIwMAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2NvbmZpZy9pMzg2L25tLWxpbnV4LmgJ MjAxMS0xMi0xOSAwMTo0MDozMi40NTQ2ODkwMDIgKzAxMDAKIEBAIC0wLDAgKzEsMjggQEAKICsv KiBOYXRpdmUgc3VwcG9ydCBmb3IgR05VL0xpbnV4IGkzODYuCiArCkBAIC01NiwxMCArNTYsMTAg QEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2NvbmZpZy9pMzg2L25tLWxpbnV4LmgK ICsjZGVmaW5lIHRhcmdldF9jYW5fdXNlX2hhcmR3YXJlX3dhdGNocG9pbnQodHlwZSwgY250LCBv dCkgMQogKwogKyNlbmRpZiAvKiBOTV9MSU5VWDY0X0ggKi8KLUluZGV4OiBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi9jb25maWcvaTM4Ni9ubS1saW51eDY0LmgKK0luZGV4OiBnZGItNy40LjUwLjIw MTExMjE4L2dkYi9jb25maWcvaTM4Ni9ubS1saW51eDY0LmgKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2 L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi9jb25maWcvaTM4Ni9ubS1saW51eDY0LmgJMjAxMS0wNy0yMiAxOTozMjoy MS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9jb25maWcvaTM4 Ni9ubS1saW51eDY0LmgJMjAxMS0xMi0xOSAwMTo0MDozMi40NTU2ODg5OTggKzAxMDAKIEBAIC0w LDAgKzEsMjggQEAKICsvKiBOYXRpdmUgc3VwcG9ydCBmb3IgR05VL0xpbnV4IGFtZDY0LgogKwpA QCAtODksMTEgKzg5LDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jb25maWcv aTM4Ni9ubS1saW51eDY0LmgKICsjZGVmaW5lIHRhcmdldF9jYW5fdXNlX2hhcmR3YXJlX3dhdGNo cG9pbnQodHlwZSwgY250LCBvdCkgMQogKwogKyNlbmRpZiAvKiBOTV9MSU5VWDY0X0ggKi8KLUlu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90YXJnZXQuaAorSW5kZXg6IGdkYi03LjQuNTAu MjAxMTEyMTgvZ2RiL3RhcmdldC5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcy Mi5vcmlnL2dkYi90YXJnZXQuaAkyMDExLTA2LTA2IDE0OjQ3OjA3LjAwMDAwMDAwMCArMDIwMAot KysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3RhcmdldC5oCTIwMTEtMDctMjIgMTk6MzI6MjEu MDAwMDAwMDAwICswMjAwCi1AQCAtMTM0OSw4ICsxMzQ5LDEwIEBAIGV4dGVybiBjaGFyICp0YXJn ZXRfdGhyZWFkX25hbWUgKHN0cnVjdCAKKy0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2Ri L3RhcmdldC5oCTIwMTEtMTItMDYgMjE6MDM6MTMuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcu NC41MC4yMDExMTIxOC9nZGIvdGFyZ2V0LmgJMjAxMS0xMi0xOSAwMTo0MDozMi40NTY2ODg5OTUg KzAxMDAKK0BAIC0xMzkxLDggKzEzOTEsMTAgQEAgZXh0ZXJuIGNoYXIgKnRhcmdldF90aHJlYWRf bmFtZSAoc3RydWN0CiAgICAgYnBfaGFyZHdhcmVfYnJlYWtwb2ludC4gIENOVCBpcyB0aGUgbnVt YmVyIG9mIHN1Y2ggd2F0Y2hwb2ludHMgdXNlZCBzbyBmYXIKICAgICAoaW5jbHVkaW5nIHRoaXMg b25lPykuICBPVEhFUlRZUEUgaXMgd2hvIGtub3dzIHdoYXQuLi4gICovCiAgCkBAIC0xMDQsMTAg KzEwNCwxMCBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGFyZ2V0LmgKICAKICAv KiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGVidWcgcmVnaXN0ZXJzIG5lZWRlZCB0byB3YXRjaCB0 aGUgZ2l2ZW4KICAgICBtZW1vcnkgcmVnaW9uLCBvciB6ZXJvIGlmIG5vdCBzdXBwb3J0ZWQuICAq LwotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRj aHBvaW50LWh3LWJlZm9yZS1ydW4uZXhwCitJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQtaHctYmVmb3JlLXJ1bi5leHAKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsr KyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1o dy1iZWZvcmUtcnVuLmV4cAkyMDExLTA3LTIyIDE5OjMyOjIxLjAwMDAwMDAwMCArMDIwMAorKysr IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LWh3 LWJlZm9yZS1ydW4uZXhwCTIwMTEtMTItMTkgMDE6NDA6MzIuNDY0Njg4OTY1ICswMTAwCiBAQCAt MCwwICsxLDQwIEBACiArIyBDb3B5cmlnaHQgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KICsKCmRpZmYgLS1naXQgYS9nZGItYno1OTIwMzEtc2lnaW5mby1sb3N0LTRv ZjUucGF0Y2ggYi9nZGItYno1OTIwMzEtc2lnaW5mby1sb3N0LTRvZjUucGF0Y2gKaW5kZXggNjM5 YjM3ZC4uMzgxMGZlYyAxMDA2NDQKLS0tIGEvZ2RiLWJ6NTkyMDMxLXNpZ2luZm8tbG9zdC00b2Y1 LnBhdGNoCisrKyBiL2dkYi1iejU5MjAzMS1zaWdpbmZvLWxvc3QtNG9mNS5wYXRjaApAQCAtNzgs MTEgKzc4LDExIEBAIGdkYi90ZXN0c3VpdGUvCiAJKiBnZGIudGhyZWFkcy9zaWdzdGVwLXRocmVh ZHMuZXhwOiBOZXcgZmlsZS4KIAkqIGdkYi50aHJlYWRzL3NpZ3N0ZXAtdGhyZWFkcy5jOiBOZXcg ZmlsZS4KIAotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL2xpbnV4LW5hdC5jCitJbmRl eDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvbGludXgtbmF0LmMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy4yLjUwLjIwMTEwMTE3Lm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIwMTEtMDEtMTcgMTU6NTM6 MTQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvbGludXgtbmF0 LmMJMjAxMS0wMS0xNyAxNjowNTo1Ny4wMDAwMDAwMDAgKzAxMDAKLUBAIC0yODAzLDYgKzI4MDMs OCBAQCBzdG9wX3dhaXRfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAqbHAsCistLS0gZ2RiLTcu NC41MC4yMDExMTIxOC5vcmlnL2dkYi9saW51eC1uYXQuYwkyMDExLTEyLTE5IDAxOjI1OjQyLjAw MDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2xpbnV4LW5hdC5jCTIw MTEtMTItMTkgMDI6MTc6MDUuNDEyNjA3NzM1ICswMTAwCitAQCAtMjg0Myw2ICsyODQzLDggQEAg c3RvcF93YWl0X2NhbGxiYWNrIChzdHJ1Y3QgbHdwX2luZm8gKmxwLAogICAgICB7CiAgICAgICAg aW50IHN0YXR1czsKICAKQEAgLTkxLDcgKzkxLDcgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAx MTcvZ2RiL2xpbnV4LW5hdC5jCiAgICAgICAgc3RhdHVzID0gd2FpdF9sd3AgKGxwKTsKICAgICAg ICBpZiAoc3RhdHVzID09IDApCiAgCXJldHVybiAwOwotQEAgLTI4MjgsMTEwICsyODMwLDYxIEBA IHN0b3Bfd2FpdF9jYWxsYmFjayAoc3RydWN0IGx3cF9pbmZvICpscCwKK0BAIC0yODY4LDExMCAr Mjg3MCw2MSBAQCBzdG9wX3dhaXRfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAqbHAsCiAgCiAg ICAgICAgaWYgKFdTVE9QU0lHIChzdGF0dXMpICE9IFNJR1NUT1ApCiAgCXsKQEAgLTE0Niw5ICsx NDYsNyBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvbGludXgtbmF0LmMKIC0JCQkJ CXN0YXR1c190b19zdHIgKChpbnQpIHN0YXR1cykpOwogLQkJICBraWxsX2x3cCAoR0VUX0xXUCAo bHAtPnB0aWQpLCBXU1RPUFNJRyAobHAtPnN0YXR1cykpOwogLQkJfQotKwkgIC8qIFNhdmUgdGhl IHRyYXAncyBzaWdpbmZvIGluIGNhc2Ugd2UgbmVlZCBpdCBsYXRlci4gICovCi0rCSAgc2F2ZV9z aWdpbmZvIChscCk7Ci0gCistCiAtCSAgICAgIC8qIFNhdmUgdGhlIHNpZ3RyYXAgZXZlbnQuICAq LwogLQkgICAgICBscC0+c3RhdHVzID0gc3RhdHVzOwogLQkgICAgICByZXR1cm4gMDsKQEAgLTE1 Nyw3ICsxNTUsOCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvbGludXgtbmF0LmMK IC0JICAgIHsKIC0JICAgICAgLyogVGhlIHRocmVhZCB3YXMgc3RvcHBlZCB3aXRoIGEgc2lnbmFs IG90aGVyIHRoYW4KIC0JICAgICAgICAgU0lHU1RPUCwgYW5kIGRpZG4ndCBhY2NpZGVudGFsbHkg dHJpcCBhIGJyZWFrcG9pbnQuICAqLwotKwkgIHNhdmVfc2lndHJhcCAobHApOworKwkgIC8qIFNh dmUgdGhlIHRyYXAncyBzaWdpbmZvIGluIGNhc2Ugd2UgbmVlZCBpdCBsYXRlci4gICovCisrCSAg c2F2ZV9zaWdpbmZvIChscCk7CiAgCiAtCSAgICAgIGlmIChkZWJ1Z19saW51eF9uYXQpCiAtCQl7 CkBAIC0xNzQsNyArMTczLDggQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL2xpbnV4 LW5hdC5jCiAtCQkJCSAgICAiU1dDOiBQVFJBQ0VfQ09OVCAlcywgMCwgMCAoJXMpXG4iLAogLQkJ CQkgICAgdGFyZ2V0X3BpZF90b19zdHIgKGxwLT5wdGlkKSwKIC0JCQkJICAgIGVycm5vID8gc2Fm ZV9zdHJlcnJvciAoZXJybm8pIDogIk9LIik7Ci0tCisrCSAgc2F2ZV9zaWd0cmFwIChscCk7Cisg CiAtCSAgICAgIC8qIEhvbGQgdGhpcyBldmVudC93YWl0c3RhdHVzIHdoaWxlIHdlIGNoZWNrIHRv IHNlZSBpZgogLQkgICAgICAgICB0aGVyZSBhcmUgYW55IG1vcmUgKHdlIHN0aWxsIHdhbnQgdG8g Z2V0IHRoYXQgU0lHU1RPUCkuICAqLwogLQkgICAgICBzdG9wX3dhaXRfY2FsbGJhY2sgKGxwLCBO VUxMKTsKQEAgLTI0OCwxMSArMjQ4LDExIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dk Yi9saW51eC1uYXQuYwogIAkgIGxwLT5zaWduYWxsZWQgPSAwOwogIAl9CiAgICAgIH0KLUBAIC0z NTE0LDUyICszNDY3LDYgQEAgcmV0cnk6CitAQCAtMzYyNyw1NCArMzU4MCw2IEBAIHJldHJ5Ogog IAlscCA9IE5VTEw7CiAgICAgIH0KICAKLS0gIGlmIChscCAmJiBscC0+c2lnbmFsbGVkKQorLSAg aWYgKGxwICYmIGxwLT5zaWduYWxsZWQgJiYgbHAtPmxhc3RfcmVzdW1lX2tpbmQgIT0gcmVzdW1l X3N0b3ApCiAtICAgIHsKIC0gICAgICAvKiBBIHBlbmRpbmcgU0lHU1RPUCBtYXkgaW50ZXJmZXJl IHdpdGggdGhlIG5vcm1hbCBzdHJlYW0gb2YKIC0gICAgICAgICBldmVudHMuICBJbiBhIHR5cGlj YWwgY2FzZSB3aGVyZSBpbnRlcmZlcmVuY2UgaXMgYSBwcm9ibGVtLApAQCAtMjY2LDYgKzI2Niw4 IEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9saW51eC1uYXQuYwogLSAgICAgIC8q IFJlc3VtZSB0aGUgdGhyZWFkLiAgSXQgc2hvdWxkIGhhbHQgaW1tZWRpYXRlbHkgcmV0dXJuaW5n IHRoZQogLSAgICAgICAgIHBlbmRpbmcgU0lHU1RPUC4gICovCiAtICAgICAgcmVnaXN0ZXJzX2No YW5nZWQgKCk7CistICAgICAgaWYgKGxpbnV4X25hdF9wcmVwYXJlX3RvX3Jlc3VtZSAhPSBOVUxM KQorLQlsaW51eF9uYXRfcHJlcGFyZV90b19yZXN1bWUgKGxwKTsKIC0gICAgICBsaW51eF9vcHMt PnRvX3Jlc3VtZSAobGludXhfb3BzLCBwaWRfdG9fcHRpZCAoR0VUX0xXUCAobHAtPnB0aWQpKSwK IC0JCQkgICAgbHAtPnN0ZXAsIFRBUkdFVF9TSUdOQUxfMCk7CiAtICAgICAgaWYgKGRlYnVnX2xp bnV4X25hdCkKQEAgLTMwMSwxMCArMzAzLDEwIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3 L2dkYi9saW51eC1uYXQuYwogICAgaWYgKCF0YXJnZXRfY2FuX2FzeW5jX3AgKCkpCiAgICAgIHsK ICAgICAgICAvKiBDYXVzZXMgU0lHSU5UIHRvIGJlIHBhc3NlZCBvbiB0byB0aGUgYXR0YWNoZWQg cHJvY2Vzcy4gICovCi1JbmRleDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvdGVzdHN1aXRlL2dk Yi50aHJlYWRzL3NpZ2luZm8tdGhyZWFkcy5jCitJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9n ZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ2luZm8tdGhyZWFkcy5jCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAt LS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2Ri LTcuMi41MC4yMDExMDExNy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ2luZm8tdGhyZWFk cy5jCTIwMTEtMDEtMTcgMTY6MDI6NDAuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4y MDExMTIxOC9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ2luZm8tdGhyZWFkcy5jCTIwMTEt MTItMTkgMDI6MTY6MzUuMjM2NzIwMjcyICswMTAwCiBAQCAtMCwwICsxLDQ0NyBAQAogKy8qIFRo aXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCiArCkBAIC03NTMs MTAgKzc1NSwxMCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvdGVzdHN1aXRlL2dk Yi50aHJlYWRzL3NpZ2luZm8tdGhyZWFkcy5jCiArCiArICByZXR1cm4gRVhJVF9TVUNDRVNTOwog K30KLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMv c2lnaW5mby10aHJlYWRzLmV4cAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3Rz dWl0ZS9nZGIudGhyZWFkcy9zaWdpbmZvLXRocmVhZHMuZXhwCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rl di9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi41 MC4yMDExMDExNy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ2luZm8tdGhyZWFkcy5leHAJ MjAxMS0wMS0xNyAxNjowMjo0MC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTEx MjE4L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc2lnaW5mby10aHJlYWRzLmV4cAkyMDExLTEy LTE5IDAyOjE2OjM1LjIzNzcyMDI2OCArMDEwMAogQEAgLTAsMCArMSw5NCBAQAogKyMgQ29weXJp Z2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCkBAIC04NTIsMTAgKzg1 NCwxMCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvdGVzdHN1aXRlL2dkYi50aHJl YWRzL3NpZ2luZm8tdGhyZWFkcy5leHAKICt9CiArCiArZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9p bnQgYnJlYWstYXQtZXhpdCAiLipicmVhay1hdC1leGl0LioiCi1JbmRleDogZ2RiLTcuMi41MC4y MDExMDExNy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ3N0ZXAtdGhyZWFkcy5jCitJbmRl eDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ3N0ZXAt dGhyZWFkcy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAu MDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvdGVzdHN1aXRlL2dk Yi50aHJlYWRzL3NpZ3N0ZXAtdGhyZWFkcy5jCTIwMTEtMDEtMTcgMTY6MDI6NDAuMDAwMDAwMDAw ICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRz L3NpZ3N0ZXAtdGhyZWFkcy5jCTIwMTEtMTItMTkgMDI6MTY6MzUuMjM3NzIwMjY4ICswMTAwCiBA QCAtMCwwICsxLDU0IEBACiArLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdO VSBkZWJ1Z2dlci4KICsKQEAgLTkxMSwxMCArOTEzLDEwIEBAIEluZGV4OiBnZGItNy4yLjUwLjIw MTEwMTE3L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc2lnc3RlcC10aHJlYWRzLmMKICsgIHN0 YXJ0IChOVUxMKTsJLyogbWFpbi1zdGFydCAqLwogKyAgcmV0dXJuIDA7CiArfQotSW5kZXg6IGdk Yi03LjIuNTAuMjAxMTAxMTcvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zaWdzdGVwLXRocmVh ZHMuZXhwCitJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRlL2dkYi50aHJl YWRzL3NpZ3N0ZXAtdGhyZWFkcy5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0w MS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMTE3L2dk Yi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc2lnc3RlcC10aHJlYWRzLmV4cAkyMDExLTAxLTE3IDE2 OjAyOjQwLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3Rz dWl0ZS9nZGIudGhyZWFkcy9zaWdzdGVwLXRocmVhZHMuZXhwCTIwMTEtMTItMTkgMDI6MTY6MzUu MjM3NzIwMjY4ICswMTAwCiBAQCAtMCwwICsxLDc0IEBACiArIyBDb3B5cmlnaHQgMjAxMCBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKCmRpZmYgLS1naXQgYS9nZGItYno1OTIwMzEt c2lnaW5mby1sb3N0LTVvZjUucGF0Y2ggYi9nZGItYno1OTIwMzEtc2lnaW5mby1sb3N0LTVvZjUu cGF0Y2gKaW5kZXggYjgyMTJiYi4uOGY0ZTQ0MCAxMDA2NDQKLS0tIGEvZ2RiLWJ6NTkyMDMxLXNp Z2luZm8tbG9zdC01b2Y1LnBhdGNoCisrKyBiL2dkYi1iejU5MjAzMS1zaWdpbmZvLWxvc3QtNW9m NS5wYXRjaApAQCAtMjYsMjcgKzI2LDI3IEBAIGdkYi8KIAkobGludXhfbmF0X3NldF9zaWdpbmZv X2ZpeHVwKTogVXNlIFBUUkFDRV9HRVRTSUdJTkZPLgogCSogbGludXgtbmF0LmggKHN0cnVjdCBs d3BfaW5mbykgPHNpZ2luZm8+OiBSZW1vdmUuCiAKLUluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2 L2dkYi9saW51eC1uYXQuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2xpbnV4LW5h dC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9saW51eC1u YXQuYwkyMDEwLTExLTE2IDA5OjEyOjI2LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAu MjAxMDExMTYvZ2RiL2xpbnV4LW5hdC5jCTIwMTAtMTEtMTYgMDk6MTM6MjEuMDAwMDAwMDAwICsw MTAwCi1AQCAtMTg1MCw3ICsxODUwLDYgQEAgcmVzdW1lX2NhbGxiYWNrIChzdHJ1Y3QgbHdwX2lu Zm8gKmxwLCB2bwotIAkJCSAgICB0YXJnZXRfcGlkX3RvX3N0ciAobHAtPnB0aWQpKTsKLSAgICAg ICBscC0+c3RvcHBlZCA9IDA7Ci0gICAgICAgbHAtPnN0ZXAgPSAwOwotLSAgICAgIG1lbXNldCAo JmxwLT5zaWdpbmZvLCAwLCBzaXplb2YgKGxwLT5zaWdpbmZvKSk7Ci0gICAgICAgbHAtPnN0b3Bw ZWRfYnlfd2F0Y2hwb2ludCA9IDA7Ci0gICAgIH0KLSAgIGVsc2UgaWYgKGxwLT5zdG9wcGVkICYm IGRlYnVnX2xpbnV4X25hdCkKLUBAIC0xOTkzLDcgKzE5OTIsNiBAQCBsaW51eF9uYXRfcmVzdW1l IChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzCi0gICBwdGlkID0gcGlkX3RvX3B0aWQgKEdFVF9MV1Ag KGxwLT5wdGlkKSk7Ci0gCistLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi9saW51eC1u YXQuYwkyMDExLTEyLTE5IDAyOjE3OjA1LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAu MjAxMTEyMTgvZ2RiL2xpbnV4LW5hdC5jCTIwMTEtMTItMTkgMDI6MTc6NDMuMTg4NDY2ODU0ICsw MTAwCitAQCAtMTg4Myw3ICsxODgzLDYgQEAgcmVzdW1lX2x3cCAoc3RydWN0IGx3cF9pbmZvICps cCwgaW50IHN0ZQorIAkJCQlzdGVwLCBUQVJHRVRfU0lHTkFMXzApOworIAkgIGxwLT5zdG9wcGVk ID0gMDsKKyAJICBscC0+c3RlcCA9IHN0ZXA7CistCSAgbWVtc2V0ICgmbHAtPnNpZ2luZm8sIDAs IHNpemVvZiAobHAtPnNpZ2luZm8pKTsKKyAJICBscC0+c3RvcHBlZF9ieV93YXRjaHBvaW50ID0g MDsKKyAJfQorICAgICAgIGVsc2UKK0BAIC0yMDI3LDcgKzIwMjYsNiBAQCBsaW51eF9uYXRfcmVz dW1lIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzCisgICBpZiAobGludXhfbmF0X3ByZXBhcmVfdG9f cmVzdW1lICE9IE5VTEwpCisgICAgIGxpbnV4X25hdF9wcmVwYXJlX3RvX3Jlc3VtZSAobHApOwog ICAgbGludXhfb3BzLT50b19yZXN1bWUgKGxpbnV4X29wcywgcHRpZCwgc3RlcCwgc2lnbm8pOwog LSAgbWVtc2V0ICgmbHAtPnNpZ2luZm8sIDAsIHNpemVvZiAobHAtPnNpZ2luZm8pKTsKICAgIGxw LT5zdG9wcGVkX2J5X3dhdGNocG9pbnQgPSAwOwogIAogICAgaWYgKGRlYnVnX2xpbnV4X25hdCkK LUBAIC0yNTAzLDIyICsyNTAxLDYgQEAgd2FpdF9sd3AgKHN0cnVjdCBsd3BfaW5mbyAqbHApCitA QCAtMjYxMiwyMiArMjYxMCw2IEBAIHdhaXRfbHdwIChzdHJ1Y3QgbHdwX2luZm8gKmxwKQogICAg cmV0dXJuIHN0YXR1czsKICB9CiAgCkBAIC02OSw3ICs2OSw3IEBAIEluZGV4OiBnZGItNy4yLjUw LjIwMTAxMTE2L2dkYi9saW51eC1uYXQuYwogIC8qIFNlbmQgYSBTSUdTVE9QIHRvIExQLiAgKi8K ICAKICBzdGF0aWMgaW50Ci1AQCAtMjc4Nyw5ICsyNzY5LDYgQEAgc3RvcF93YWl0X2NhbGxiYWNr IChzdHJ1Y3QgbHdwX2luZm8gKmxwLAorQEAgLTI4NzIsOSArMjg1NCw2IEBAIHN0b3Bfd2FpdF9j YWxsYmFjayAoc3RydWN0IGx3cF9pbmZvICpscCwKICAJewogIAkgIC8qIFRoZSB0aHJlYWQgd2Fz IHN0b3BwZWQgd2l0aCBhIHNpZ25hbCBvdGhlciB0aGFuIFNJR1NUT1AuICAqLwogIApAQCAtNzks NyArNzksNyBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvbGludXgtbmF0LmMKICAJ ICBzYXZlX3NpZ3RyYXAgKGxwKTsKICAKICAJICBpZiAoZGVidWdfbGludXhfbmF0KQotQEAgLTMx NTUsMTIgKzMxMzQsNyBAQCBsaW51eF9uYXRfZmlsdGVyX2V2ZW50IChpbnQgbHdwaWQsIGludCBz CitAQCAtMzI3OCwxMiArMzI1Nyw3IEBAIGxpbnV4X25hdF9maWx0ZXJfZXZlbnQgKGludCBsd3Bp ZCwgaW50IHMKICAgICAgfQogIAogICAgaWYgKGxpbnV4X25hdF9zdGF0dXNfaXNfZXZlbnQgKHN0 YXR1cykpCkBAIC05Myw3ICs5Myw3IEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9s aW51eC1uYXQuYwogIAogICAgLyogQ2hlY2sgaWYgdGhlIHRocmVhZCBoYXMgZXhpdGVkLiAgKi8K ICAgIGlmICgoV0lGRVhJVEVEIChzdGF0dXMpIHx8IFdJRlNJR05BTEVEIChzdGF0dXMpKQotQEAg LTM3NjMsNyArMzczNyw2IEBAIHJlc3VtZV9zdG9wcGVkX3Jlc3VtZWRfbHdwcyAoc3RydWN0IGx3 cF8KK0BAIC0zOTYxLDcgKzM5MzUsNiBAQCByZXN1bWVfc3RvcHBlZF9yZXN1bWVkX2x3cHMgKHN0 cnVjdCBsd3BfCiAgICAgICAgbGludXhfb3BzLT50b19yZXN1bWUgKGxpbnV4X29wcywgcGlkX3Rv X3B0aWQgKEdFVF9MV1AgKGxwLT5wdGlkKSksCiAgCQkJICAgIGxwLT5zdGVwLCBUQVJHRVRfU0lH TkFMXzApOwogICAgICAgIGxwLT5zdG9wcGVkID0gMDsKQEAgLTEwMSw3ICsxMDEsNyBAQCBJbmRl eDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvbGludXgtbmF0LmMKICAgICAgICBscC0+c3RvcHBl ZF9ieV93YXRjaHBvaW50ID0gMDsKICAgICAgfQogIAotQEAgLTU5MzIsMTEgKzU5MDUsMTkgQEAg bGludXhfbmF0X3NldF9zaWdpbmZvX2ZpeHVwIChzdHJ1Y3QgdGFyZworQEAgLTYwMjksMTEgKzYw MDIsMTkgQEAgbGludXhfbmF0X3NldF9wcmVwYXJlX3RvX3Jlc3VtZSAoc3RydWN0CiAgc3RydWN0 IHNpZ2luZm8gKgogIGxpbnV4X25hdF9nZXRfc2lnaW5mbyAocHRpZF90IHB0aWQpCiAgewpAQCAt MTI0LDExICsxMjQsMTEgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2xpbnV4LW5h dC5jCiAgfQogIAogIC8qIFByb3ZpZGUgYSBwcm90b3R5cGUgdG8gc2lsZW5jZSAtV21pc3Npbmct cHJvdG90eXBlcy4gICovCi1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvbGludXgtbmF0 LmgKK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9saW51eC1uYXQuaAogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvbGludXgtbmF0LmgJMjAxMC0xMS0x NiAwNzo1NDozNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9s aW51eC1uYXQuaAkyMDEwLTExLTE2IDA5OjEyOjQ0LjAwMDAwMDAwMCArMDEwMAotQEAgLTU4LDEw ICs1OCw2IEBAIHN0cnVjdCBsd3BfaW5mbworLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9n ZGIvbGludXgtbmF0LmgJMjAxMS0xMi0xOCAyMzo0MDo1OS4wMDAwMDAwMDAgKzAxMDAKKysrKyBn ZGItNy40LjUwLjIwMTExMjE4L2dkYi9saW51eC1uYXQuaAkyMDExLTEyLTE5IDAyOjE3OjIxLjM1 NTU0ODI3NiArMDEwMAorQEAgLTc3LDEwICs3Nyw2IEBAIHN0cnVjdCBsd3BfaW5mbwogICAgLyog VGhlIGtpbmQgb2Ygc3RlcHBpbmcgb2YgdGhpcyBMV1AuICAqLwogICAgZW51bSByZXN1bWVfc3Rl cCBzdGVwOwogIAoKZGlmZiAtLWdpdCBhL2dkYi1jb3JlLW9wZW4tdmRzby13YXJuaW5nLnBhdGNo IGIvZ2RiLWNvcmUtb3Blbi12ZHNvLXdhcm5pbmcucGF0Y2gKaW5kZXggODdjY2MwYi4uYTQyMTM2 NyAxMDA2NDQKLS0tIGEvZ2RiLWNvcmUtb3Blbi12ZHNvLXdhcm5pbmcucGF0Y2gKKysrIGIvZ2Ri LWNvcmUtb3Blbi12ZHNvLXdhcm5pbmcucGF0Y2gKQEAgLTMzLDM2ICszMywzNSBAQCBnZGIvCiAK IFsgQ29udGV4dCBiYWNrcG9ydC4gIF0KIAotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L3NvbGliLXN2cjQuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3NvbGliLXN2cjQu YwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvc29saWItc3Zy NC5jCTIwMTEtMDctMjIgMTk6MjY6NDYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvc29saWItc3ZyNC5jCTIwMTEtMDctMjIgMTk6Mjk6MzYuMDAwMDAwMDAwICsw MjAwCi1AQCAtMTE5Nyw4ICsxMTk3LDE4IEBAIHN2cjRfY3VycmVudF9zb3MgKHZvaWQpCi0gCSAg dGFyZ2V0X3JlYWRfc3RyaW5nIChsbV9uYW1lIChuZXcpLCAmYnVmZmVyLAotIAkJCSAgICAgIFNP X05BTUVfTUFYX1BBVEhfU0laRSAtIDEsICZlcnJjb2RlKTsKLSAJICBpZiAoZXJyY29kZSAhPSAw KQotLQkgICAgd2FybmluZyAoXygiQ2FuJ3QgcmVhZCBwYXRobmFtZSBmb3IgbG9hZCBtYXA6ICVz LiIpLAotLQkJICAgICBzYWZlX3N0cmVycm9yIChlcnJjb2RlKSk7Ci0rCSAgICB7Ci0rCSAgICAg IC8qIER1cmluZyB0aGUgZmlyc3QgZXZlciBEU08gbGlzdCByZWFkaW5nIHNvbWUgc3RyaW5ncyBt YXkgYmUKLSsJCSB1bnJlYWRhYmxlIGFzIHJlc2lkaW5nIGluIHRoZSBsZC5zbyByZWFkb25seSBt ZW1vcnkgbm90IGJlaW5nCi0rCQkgcHJlc2VudCBpbiBhIGR1bXBlZCBjb3JlIGZpbGUuICBEZWxh eSB0aGUgZXJyb3IgY2hlY2sgYWZ0ZXIKLSsJCSB0aGUgZmlyc3QgcGFzcyBvZiBEU08gbGlzdCBz Y2FubmluZyB3aGVuIGxkLnNvIHNob3VsZCBiZQotKwkJIGFscmVhZHkgbWFwcGVkIGluIGFuZCBh bGwgdGhlIERTTyBsaXN0IGxfbmFtZSBtZW1vcnkgZ2V0cwotKwkJIHJlYWRhYmxlLiAgKi8KKy0t LSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL3NvbGliLXN2cjQuYwkyMDExLTEyLTE5IDAx OjE0OjMxLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3NvbGli LXN2cjQuYwkyMDExLTEyLTE5IDAxOjMxOjEwLjEwNjc1MjE2NCArMDEwMAorQEAgLTEyMjIsOCAr MTIyMiwxNyBAQCBzdnI0X3JlYWRfc29fbGlzdCAoQ09SRV9BRERSIGxtLCBzdHJ1Y3QKKyAJCQkg IFNPX05BTUVfTUFYX1BBVEhfU0laRSAtIDEsICZlcnJjb2RlKTsKKyAgICAgICBpZiAoZXJyY29k ZSAhPSAwKQorIAl7CistCSAgd2FybmluZyAoXygiQ2FuJ3QgcmVhZCBwYXRobmFtZSBmb3IgbG9h ZCBtYXA6ICVzLiIpLAorLQkJICAgc2FmZV9zdHJlcnJvciAoZXJyY29kZSkpOworKwkgIC8qIER1 cmluZyB0aGUgZmlyc3QgZXZlciBEU08gbGlzdCByZWFkaW5nIHNvbWUgc3RyaW5ncyBtYXkgYmUK KysJICAgICB1bnJlYWRhYmxlIGFzIHJlc2lkaW5nIGluIHRoZSBsZC5zbyByZWFkb25seSBtZW1v cnkgbm90IGJlaW5nCisrCSAgICAgcHJlc2VudCBpbiBhIGR1bXBlZCBjb3JlIGZpbGUuICBEZWxh eSB0aGUgZXJyb3IgY2hlY2sgYWZ0ZXIKKysJICAgICB0aGUgZmlyc3QgcGFzcyBvZiBEU08gbGlz dCBzY2FubmluZyB3aGVuIGxkLnNvIHNob3VsZCBiZQorKwkgICAgIGFscmVhZHkgbWFwcGVkIGlu IGFuZCBhbGwgdGhlIERTTyBsaXN0IGxfbmFtZSBtZW1vcnkgZ2V0cworKwkgICAgIHJlYWRhYmxl LiAgKi8KICsKLSsJICAgICAgaWYgKG1hc3Rlcl9zb19saXN0ICgpICE9IE5VTEwpCi0rCQl3YXJu aW5nIChfKCJDYW4ndCByZWFkIHBhdGhuYW1lIGZvciBsb2FkIG1hcDogJXMuIiksCi0rCQkJIHNh ZmVfc3RyZXJyb3IgKGVycmNvZGUpKTsKLSsJICAgIH0KLSAJICBlbHNlCi0gCSAgICB7Ci0gCSAg ICAgIHN0cnVjdCBidWlsZF9pZCAqYnVpbGRfaWQ7Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvc29saWIuYworKwkgIGlmIChtYXN0ZXJfc29fbGlzdCAoKSAhPSBOVUxMKQorKwkgICAg d2FybmluZyAoXygiQ2FuJ3QgcmVhZCBwYXRobmFtZSBmb3IgbG9hZCBtYXA6ICVzLiIpLAorKwkJ ICAgICBzYWZlX3N0cmVycm9yIChlcnJjb2RlKSk7CisrCisgCSAgZG9fY2xlYW51cHMgKG9sZF9j aGFpbik7CisgCSAgY29udGludWU7CisgCX0KK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dk Yi9zb2xpYi5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9z b2xpYi5jCTIwMTEtMDYtMzAgMjE6Mjk6NTQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvc29saWIuYwkyMDExLTA3LTIyIDE5OjI5OjEwLjAwMDAwMDAwMCArMDIw MAotQEAgLTcwNiw2ICs3MDYsNyBAQCB1cGRhdGVfc29saWJfbGlzdCAoaW50IGZyb21fdHR5LCBz dHJ1Y3QgCistLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi9zb2xpYi5jCTIwMTEtMDkt MTIgMjE6MDA6MjIuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIv c29saWIuYwkyMDExLTEyLTE5IDAxOjI5OjA0LjgxNTIyNzg5OCArMDEwMAorQEAgLTY3Niw2ICs2 NzYsNyBAQCB1cGRhdGVfc29saWJfbGlzdCAoaW50IGZyb21fdHR5LCBzdHJ1Y3QKICAgIHN0cnVj dCB0YXJnZXRfc29fb3BzICpvcHMgPSBzb2xpYl9vcHMgKHRhcmdldF9nZGJhcmNoKTsKICAgIHN0 cnVjdCBzb19saXN0ICppbmZlcmlvciA9IG9wcy0+Y3VycmVudF9zb3MoKTsKICAgIHN0cnVjdCBz b19saXN0ICpnZGIsICoqZ2RiX2xpbms7CkBAIC03MCw3ICs2OSw3IEBAIEluZGV4OiBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi9zb2xpYi5jCiAgCiAgICAvKiBXZSBjYW4gcmVhY2ggaGVyZSBkdWUg dG8gY2hhbmdpbmcgc29saWItc2VhcmNoLXBhdGggb3IgdGhlCiAgICAgICBzeXNyb290LCBiZWZv cmUgaGF2aW5nIGFueSBpbmZlcmlvci4gICovCi1AQCAtODQ2LDYgKzg0NywxMiBAQCB1cGRhdGVf c29saWJfbGlzdCAoaW50IGZyb21fdHR5LCBzdHJ1Y3QgCitAQCAtODE3LDYgKzgxOCwxMiBAQCB1 cGRhdGVfc29saWJfbGlzdCAoaW50IGZyb21fdHR5LCBzdHJ1Y3QKICAJICBvYnNlcnZlcl9ub3Rp Znlfc29saWJfbG9hZGVkIChpKTsKICAJfQogIAoKZGlmZiAtLWdpdCBhL2dkYi1kbG9wZW4tc2tp cF9pbmxpbmVfZnJhbWVzLXBlcmYucGF0Y2ggYi9nZGItZGxvcGVuLXNraXBfaW5saW5lX2ZyYW1l cy1wZXJmLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTQxZGQyLi4wMDAw MDAwCi0tLSBhL2dkYi1kbG9wZW4tc2tpcF9pbmxpbmVfZnJhbWVzLXBlcmYucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi1kaWZmIC0tZ2l0IGEvZ2RiL2luZnJ1bi5jIGIvZ2Ri L2luZnJ1bi5jCi1pbmRleCA5MWUwZmMyLi4xZDdjODA4IDEwMDY0NAotLS0tIGEvZ2RiL2luZnJ1 bi5jCi0rKysgYi9nZGIvaW5mcnVuLmMKLUBAIC0zMTExLDYgKzMxMTEsNTYgQEAgZmlsbF9pbl9z dG9wX2Z1bmMgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotICAgICB9Ci0gfQotIAotKy8qIEFy Z3VtZW50IGZvciBhdF9zb2xpYl9ldmVudF9icmVha3BvaW50X2hlbHBlci4gICovCi0rCi0rc3Ry dWN0IHNvbGliX2V2ZW50X2JyZWFrcG9pbnRfaGVscGVyX2FyZwotK3sKLSsgIENPUkVfQUREUiBw cmV2X3BjOwotKyAgaW50IHNobGliX2JwX2NvdW50OwotKyAgaW50IG90aGVyX2JwX2NvdW50Owot K307Ci0rCi0rLyogSGVscGVyIGZvciBhdF9zb2xpYl9ldmVudF9icmVha3BvaW50LiAgKi8KLSsK LStzdGF0aWMgaW50Ci0rYXRfc29saWJfZXZlbnRfYnJlYWtwb2ludF9oZWxwZXIgKHN0cnVjdCBi cmVha3BvaW50ICpiLCB2b2lkICphcmdwKQotK3sKLSsgIHN0cnVjdCBzb2xpYl9ldmVudF9icmVh a3BvaW50X2hlbHBlcl9hcmcgKmFyZwotKyAgICA9IChzdHJ1Y3Qgc29saWJfZXZlbnRfYnJlYWtw b2ludF9oZWxwZXJfYXJnICopIGFyZ3A7IAotKyAgc3RydWN0IGJwX2xvY2F0aW9uICpsb2M7Ci0r Ci0rICBmb3IgKGxvYyA9IGItPmxvYzsgbG9jOyBsb2MgPSBsb2MtPm5leHQpCi0rICAgIHsKLSsg ICAgICBpZiAobG9jLT5wc3BhY2UgPT0gY3VycmVudF9wcm9ncmFtX3NwYWNlCi0rCSAgJiYgKGxv Yy0+YWRkcmVzcyA9PSBzdG9wX3BjIHx8IGxvYy0+YWRkcmVzcyA9PSBhcmctPnByZXZfcGMpKQot Kwl7Ci0rCSAgaWYgKGItPnR5cGUgPT0gYnBfc2hsaWJfZXZlbnQpCi0rCSAgICBhcmctPnNobGli X2JwX2NvdW50Kys7Ci0rCSAgZWxzZQotKwkgICAgewotKwkgICAgICBhcmctPm90aGVyX2JwX2Nv dW50Kys7Ci0rCSAgICAgIHJldHVybiAxOyAvKiBxdWljayBleGl0ICovCi0rCSAgICB9Ci0rCX0K LSsgICAgfQotKwotKyAgcmV0dXJuIDA7IC8qIGNhcnJ5IG9uIGxvb2tpbmcgKi8KLSt9Ci0rCi0r LyogTm9uemVybyBpZiB0aGUgbG9jYXRpb24gc3RvcG9lZCBhdCBpcyB0aGUgc2hsaWIgZXZlbnQg YnJlYWtwb2ludC4gICovCi0rCi0rc3RhdGljIGludAotK2F0X3NvbGliX2V2ZW50X2JyZWFrcG9p bnQgKHN0cnVjdCBleGVjdXRpb25fY29udHJvbF9zdGF0ZSAqZWNzKQotK3sKLSsgIHN0cnVjdCBz b2xpYl9ldmVudF9icmVha3BvaW50X2hlbHBlcl9hcmcgYXJnOwotKyAgYXJnLnByZXZfcGMgPSBl Y3MtPmV2ZW50X3RocmVhZC0+cHJldl9wYzsKLSsgIGFyZy5zaGxpYl9icF9jb3VudCA9IGFyZy5v dGhlcl9icF9jb3VudCA9IDA7Ci0rCi0rICBpdGVyYXRlX292ZXJfYnJlYWtwb2ludHMgKGF0X3Nv bGliX2V2ZW50X2JyZWFrcG9pbnRfaGVscGVyLCAmYXJnKTsKLSsKLSsgIHJldHVybiBhcmcuc2hs aWJfYnBfY291bnQgJiYgIWFyZy5vdGhlcl9icF9jb3VudDsKLSt9Ci0rCi0gLyogR2l2ZW4gYW4g ZXhlY3V0aW9uIGNvbnRyb2wgc3RhdGUgdGhhdCBoYXMgYmVlbiBmcmVzaGx5IGZpbGxlZCBpbgot ICAgIGJ5IGFuIGV2ZW50IGZyb20gdGhlIGluZmVyaW9yLCBmaWd1cmUgb3V0IHdoYXQgaXQgbWVh bnMgYW5kIHRha2UKLSAgICBhcHByb3ByaWF0ZSBhY3Rpb24uICAqLwotQEAgLTM5NjQsMTEgKzQw MTQsMjMgQEAgaGFuZGxlX2luZmVyaW9yX2V2ZW50IChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xf c3RhdGUgKmVjcykKLSAgIGVjcy0+cmFuZG9tX3NpZ25hbCA9IDA7Ci0gICBzdG9wcGVkX2J5X3Jh bmRvbV9zaWduYWwgPSAwOwotIAotLSAgLyogSGlkZSBpbmxpbmVkIGZ1bmN0aW9ucyBzdGFydGlu ZyBoZXJlLCB1bmxlc3Mgd2UganVzdCBwZXJmb3JtZWQgc3RlcGkgb3IKLS0gICAgIG5leHRpLiAg QWZ0ZXIgc3RlcGkgYW5kIG5leHRpLCBhbHdheXMgc2hvdyB0aGUgaW5uZXJtb3N0IGZyYW1lIChu b3QgYW55Ci0tICAgICBpbmxpbmUgZnVuY3Rpb24gY2FsbCBzaXRlcykuICAqLwotLSAgaWYgKGVj cy0+ZXZlbnRfdGhyZWFkLT5jb250cm9sLnN0ZXBfcmFuZ2VfZW5kICE9IDEpCi0tICAgIHNraXBf aW5saW5lX2ZyYW1lcyAoZWNzLT5wdGlkKTsKLSsgIC8qIElmIHdlIGhhdmUgc3RvcHBlZCBhdCB0 aGUgc29saWIgZXZlbnQgYnJlYWtwb2ludCBhbmQKLSsgICAgIHN0b3Bfb25fc29saWJfZXZlbnRz IGlzIG5vdCBzZXQgdGhlbiB3ZSBjYW4gYXZvaWQgY2FsbGluZwotKyAgICAgYW55dGhpbmcgdGhh dCBjYWxscyBmaW5kX3BjX3NlY3Rpb24uICBUaGlzIHNhdmVzIGEgbG90Ci0rICAgICBvZiB0aW1l IHdoZW4gdGhlIGluZmVyaW9yIGxvYWRzIGEgbG90IG9mIHNoYXJlZCBsaWJyYXJpZXMsCi0rICAg ICBiZWNhdXNlIG90aGVyd2lzZSB0aGUgc2VjdGlvbiBtYXAgZ2V0cyByZWdlbmVyYXRlZCBldmVy eQotKyAgICAgdGltZSB3ZSBzdG9wLiAgKi8KLSsgIGlmIChzdG9wX29uX3NvbGliX2V2ZW50cwot KyAgICAgIHx8IGVjcy0+ZXZlbnRfdGhyZWFkLT5zdXNwZW5kLnN0b3Bfc2lnbmFsICE9IFRBUkdF VF9TSUdOQUxfVFJBUAotKyAgICAgIHx8IHN0b3BfYWZ0ZXJfdHJhcAotKyAgICAgIHx8ICFhdF9z b2xpYl9ldmVudF9icmVha3BvaW50IChlY3MpKQotKyAgICB7Ci0rICAgICAgLyogSGlkZSBpbmxp bmVkIGZ1bmN0aW9ucyBzdGFydGluZyBoZXJlLCB1bmxlc3Mgd2UganVzdAotKwkgcGVyZm9ybWVk IHN0ZXBpIG9yIG5leHRpLiAgQWZ0ZXIgc3RlcGkgYW5kIG5leHRpLCBhbHdheXMgc2hvdwotKwkg dGhlIGlubmVybW9zdCBmcmFtZSAobm90IGFueSBpbmxpbmUgZnVuY3Rpb24gY2FsbCBzaXRlcyku ICAqLwotKyAgICAgIGlmIChlY3MtPmV2ZW50X3RocmVhZC0+Y29udHJvbC5zdGVwX3JhbmdlX2Vu ZCAhPSAxKQotKwlza2lwX2lubGluZV9mcmFtZXMgKGVjcy0+cHRpZCk7Ci0rICAgIH0KLSAKLSAg IGlmIChlY3MtPmV2ZW50X3RocmVhZC0+c3VzcGVuZC5zdG9wX3NpZ25hbCA9PSBUQVJHRVRfU0lH TkFMX1RSQVAKLSAgICAgICAmJiBlY3MtPmV2ZW50X3RocmVhZC0+Y29udHJvbC50cmFwX2V4cGVj dGVkCgpkaWZmIC0tZ2l0IGEvZ2RiLWdjYzQ2LXN0ZGFyZy1wcm9sb2d1ZS5wYXRjaCBiL2dkYi1n Y2M0Ni1zdGRhcmctcHJvbG9ndWUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IGQwZjMxOGUuLjAwMDAwMDAKLS0tIGEvZ2RiLWdjYzQ2LXN0ZGFyZy1wcm9sb2d1ZS5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDY1NSArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwv Z2RiLXBhdGNoZXMvMjAxMS0wNy9tc2cwMDY0NS5odG1sCi1TdWJqZWN0OiBbcGF0Y2hdIHdvcmth cm91bmQgZ2NjNDY6IHByb2xvZ3VlIHNraXAgc2tpcHMgdG9vIGZhciAoUFIgMTI0MzUpICMyCi0K LUhpLAotCi10aGlzIGlzIGFuIGltcHJvdmVkIHBhdGNoIG9mIGEgZm9ybWVyOgotCVtwYXRjaF0g d29ya2Fyb3VuZCBnY2M0NjogcHJvbG9ndWUgc2tpcCBza2lwcyB0b28gZmFyIChQUiAxMjQzNSkK LQlodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMS0wMy9tc2cwMTEwOC5o dG1sCi0JY2FuY2VsL0ZZSTogUmU6IFtwYXRjaF0gd29ya2Fyb3VuZCBnY2M0NjogcHJvbG9ndWUg c2tpcCBza2lwcyB0b28gZmFyIChQUiAxMjQzNSkKLQlodHRwOi8vc291cmNld2FyZS5vcmcvbWwv Z2RiLXBhdGNoZXMvMjAxMS0wMy9tc2cwMTEyMy5odG1sCi0KLUZvciBleGFtcGxlIGBicmVhayBl cnJvcicgZG9lcyBub3Qgd29yayBmb3IgZGVidWdnaW5nIEdEQiB3aXRoIGdjYy00LjYueC4KLQot QXMgZ2NjLTQuNi4wIGFuZCBub3cgZXZlbiA0LjYuMSBzdGlsbCBoYXMgdGhpcyBidWcgYW5kIEkg aGF2ZSBzZWVuIGEgdXNlcihzPykKLW9uIG5vbi1GZWRvcmEgcGxhdGZvcm0gYXNraW5nIGFib3V0 IHRoaXMgYnVnIGFuZCBhcyB0aGVyZSBtYXkgYmUgZW5vdWdoCi1iaW5hcmllcyBvdXQgdGhlcmUg KGFsdGhvdWdoIGl0IGFmZmVjdHMgb25seSAtTzAgLWcgY29tcGlsYXRpb24pIGNvZGVkIGl0Ci1w cm9wZXJseSBJIGhhdmUgY29kZWQgdGhlIHdvcmthcm91bmQgcHJvcGVybHkgdGhpcyB0aW1lLgot Ci1JdCBkb2VzIG5vdCBzb2x2ZSBvdmVybGF5cyB3ZWxsLCBidXQgdGhlIGNvZGUganVzdCBkb2Vz IG5vdCB3b3JrIGZvciBvdmVybGF5cywKLWl0IGhhcyBubyBvdGhlciBuZWdhdGl2ZSBlZmZlY3Qu Ci0KLUkgd2lsbCB1cGRhdGUgdGhlIGNvZGUgYWZ0ZXIgRlNGIGdjYyBnZXRzIGZpeGVkIHRvIG1p bmltaXplIHRoZSB3b3JrYXJvdW5kLgotCi1ObyByZWdyZXNzaW9ucyBvbiB7eDg2XzY0LHg4Nl82 NC1tMzIsaTY4Nn0tZmVkb3JhMTZwcmUtbGludXgtZ251LgotCi1JIHdvdWxkIHdlbGNvbWUgYSBj b21tZW50IHdoZXRoZXIgaXQgaXMgc3VpdGFibGUgZm9yIEZTRiBHREIuCi0KLQotVGhhbmtzLAot SmFuCi0KLQotZ2RiLwotMjAxMS0wNy0yMiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPgotCi0JUFIgYnJlYWtwb2ludHMvMTI0MzUKLQkqIGFtZDY0LXRkZXAuYyAo YW1kNjRfc2tpcF9wcm9sb2d1ZSk6IE5ldyB2YXJpYWJsZXMgc3RhcnRfcGNfc2FsLAotCW5leHRf c2FsLCBidWYsIG9mZnNldCBhbmQgeG1tcmVnLiAgQWR2YW5jZSBQQyBpZiBpdCBzZWVzIHRoZSBQ Ui4KLQkqIGR3YXJmMnJlYWQuYyAocHJvY2Vzc19mdWxsX2NvbXBfdW5pdCk6IEluaXRpYWxpemUK LQlhbWQ2NF9wcm9sb2d1ZV9saW5lX2J1Zy4KLQkqIHN5bXRhYi5oIChzdHJ1Y3Qgc3ltdGFiKTog TmV3IGZpZWxkIGFtZDY0X3Byb2xvZ3VlX2xpbmVfYnVnLgotCi1nZGIvdGVzdHN1aXRlLwotMjAx MS0wNy0yMiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0J UFIgYnJlYWtwb2ludHMvMTI0MzUKLQkqIGdkYi5hcmNoL2FtZDY0LXByb2xvZ3VlLXhtbS5jOiBO ZXcgZmlsZS4KLQkqIGdkYi5hcmNoL2FtZDY0LXByb2xvZ3VlLXhtbS5leHA6IE5ldyBmaWxlLgot CSogZ2RiLmFyY2gvYW1kNjQtcHJvbG9ndWUteG1tLnM6IE5ldyBmaWxlLgotCi0tLS0gYS9nZGIv YW1kNjQtdGRlcC5jCi0rKysgYi9nZGIvYW1kNjQtdGRlcC5jCi1AQCAtMTkwMiw2ICsxOTAyLDkg QEAgYW1kNjRfc2tpcF9wcm9sb2d1ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQURE UiBzdGFydF9wYykKLSB7Ci0gICBzdHJ1Y3QgYW1kNjRfZnJhbWVfY2FjaGUgY2FjaGU7Ci0gICBD T1JFX0FERFIgcGM7Ci0rICBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHN0YXJ0X3BjX3NhbCwgbmV4 dF9zYWw7Ci0rICBnZGJfYnl0ZSBidWZbNCArIDggKiA3XTsKLSsgIGludCBvZmZzZXQsIHhtbXJl ZzsKLSAKLSAgIGFtZDY0X2luaXRfZnJhbWVfY2FjaGUgKCZjYWNoZSk7Ci0gICBwYyA9IGFtZDY0 X2FuYWx5emVfcHJvbG9ndWUgKGdkYmFyY2gsIHN0YXJ0X3BjLCAweGZmZmZmZmZmZmZmZmZmZmZM TCwKLUBAIC0xOTA5LDcgKzE5MTIsNzEgQEAgYW1kNjRfc2tpcF9wcm9sb2d1ZSAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBzdGFydF9wYykKLSAgIGlmIChjYWNoZS5mcmFtZWxl c3NfcCkKLSAgICAgcmV0dXJuIHN0YXJ0X3BjOwotIAotLSAgcmV0dXJuIHBjOwotKyAgLyogR0ND IFBSIGRlYnVnLzQ4ODI3IHByb2R1Y2VkIGZhbHNlIHByb2xvZ3VlIGVuZDoKLSsgICAgIDg0IGMw ICAgICAgICAgICAgICAgIHRlc3QgICAlYWwsJWFsCi0rICAgICA3NCAyMyAgICAgICAgICAgICAg ICBqZSAgICAgYWZ0ZXIKLSsgICAgIDwtLSBoZXJlIGlzIDAgbGluZXMgYWR2YW5jZSAtIHRoZSBm YWxzZSBwcm9sb2d1ZSBlbmQgbWFya2VyLgotKyAgICAgMGYgMjkgODUgNzAgZmYgZmYgZmYgbW92 YXBzICV4bW0wLC0weDkwKCVyYnApCi0rICAgICAwZiAyOSA0ZCA4MCAgICAgICAgICBtb3ZhcHMg JXhtbTEsLTB4ODAoJXJicCkKLSsgICAgIDBmIDI5IDU1IDkwICAgICAgICAgIG1vdmFwcyAleG1t MiwtMHg3MCglcmJwKQotKyAgICAgMGYgMjkgNWQgYTAgICAgICAgICAgbW92YXBzICV4bW0zLC0w eDYwKCVyYnApCi0rICAgICAwZiAyOSA2NSBiMCAgICAgICAgICBtb3ZhcHMgJXhtbTQsLTB4NTAo JXJicCkKLSsgICAgIDBmIDI5IDZkIGMwICAgICAgICAgIG1vdmFwcyAleG1tNSwtMHg0MCglcmJw KQotKyAgICAgMGYgMjkgNzUgZDAgICAgICAgICAgbW92YXBzICV4bW02LC0weDMwKCVyYnApCi0r ICAgICAwZiAyOSA3ZCBlMCAgICAgICAgICBtb3ZhcHMgJXhtbTcsLTB4MjAoJXJicCkKLSsgICAg IGFmdGVyOiAgKi8KLSsKLSsgIGlmIChwYyA9PSBzdGFydF9wYykKLSsgICAgcmV0dXJuIHBjOwot KwotKyAgc3RhcnRfcGNfc2FsID0gZmluZF9wY19zZWN0X2xpbmUgKHN0YXJ0X3BjLCBOVUxMLCAw KTsKLSsgIGlmIChzdGFydF9wY19zYWwuc3ltdGFiID09IE5VTEwKLSsgICAgICB8fCAhc3RhcnRf cGNfc2FsLnN5bXRhYi0+YW1kNjRfcHJvbG9ndWVfbGluZV9idWcKLSsgICAgICB8fCBzdGFydF9w Y19zYWwucGMgIT0gc3RhcnRfcGMgfHwgcGMgPj0gc3RhcnRfcGNfc2FsLmVuZCkKLSsgICAgcmV0 dXJuIHBjOwotKwotKyAgbmV4dF9zYWwgPSBmaW5kX3BjX3NlY3RfbGluZSAoc3RhcnRfcGNfc2Fs LmVuZCwgTlVMTCwgMCk7Ci0rICBpZiAobmV4dF9zYWwubGluZSAhPSBzdGFydF9wY19zYWwubGlu ZSkKLSsgICAgcmV0dXJuIHBjOwotKwotKyAgLyogU1RBUlRfUEMgY2FuIGJlIGZyb20gb3Zlcmxh eWVkIG1lbW9yeSwgaWdub3JlZCBoZXJlLiAgKi8KLSsgIGlmICh0YXJnZXRfcmVhZF9tZW1vcnkg KG5leHRfc2FsLnBjIC0gNCwgYnVmLCBzaXplb2YgKGJ1ZikpICE9IDApCi0rICAgIHJldHVybiBw YzsKLSsKLSsgIC8qIHRlc3QgJWFsLCVhbCAqLwotKyAgaWYgKGJ1ZlswXSAhPSAweDg0IHx8IGJ1 ZlsxXSAhPSAweGMwKQotKyAgICByZXR1cm4gcGM7Ci0rICAvKiBqZSBBRlRFUiAqLwotKyAgaWYg KGJ1ZlsyXSAhPSAweDc0KQotKyAgICByZXR1cm4gcGM7Ci0rCi0rICBvZmZzZXQgPSA0OwotKyAg Zm9yICh4bW1yZWcgPSAwOyB4bW1yZWcgPCA4OyB4bW1yZWcrKykKLSsgICAgewotKyAgICAgIC8q IG1vdmFwcyAleG1tcmVnPywtMHg/PyglcmJwKSAqLwotKyAgICAgIGlmIChidWZbb2Zmc2V0XSAh PSAweDBmIHx8IGJ1ZltvZmZzZXQgKyAxXSAhPSAweDI5Ci0rICAgICAgICAgIHx8IChidWZbb2Zm c2V0ICsgMl0gJiAwYjAwMTExMTExKSAhPSAoeG1tcmVnIDw8IDMgfCAwYjEwMSkpCi0rCXJldHVy biBwYzsKLSsKLSsgICAgICBpZiAoKGJ1ZltvZmZzZXQgKyAyXSAmIDBiMTEwMDAwMDApID09IDBi MDEwMDAwMDApCi0rCXsKLSsJICAvKiA4LWJpdCBkaXNwbGFjZW1lbnQuICAqLwotKwkgIG9mZnNl dCArPSA0OwotKwl9Ci0rICAgICAgZWxzZSBpZiAoKGJ1ZltvZmZzZXQgKyAyXSAmIDBiMTEwMDAw MDApID09IDBiMTAwMDAwMDApCi0rCXsKLSsJICAvKiAzMi1iaXQgZGlzcGxhY2VtZW50LiAgKi8K LSsJICBvZmZzZXQgKz0gNzsKLSsJfQotKyAgICAgIGVsc2UKLSsJcmV0dXJuIHBjOwotKyAgICB9 Ci0rCi0rICAvKiBqZSBBRlRFUiAqLwotKyAgaWYgKG9mZnNldCAtIDQgIT0gYnVmWzNdKQotKyAg ICByZXR1cm4gcGM7Ci0rCi0rICByZXR1cm4gbmV4dF9zYWwuZW5kOwotIH0KLSAMCi0gCi0tLS0g YS9nZGIvZHdhcmYycmVhZC5jCi0rKysgYi9nZGIvZHdhcmYycmVhZC5jCi1AQCAtNDgxOCw2ICs0 ODE4LDkgQEAgcHJvY2Vzc19mdWxsX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0 YSAqcGVyX2N1KQotIAotICAgICAgIGlmIChnY2NfNF9taW5vciA+PSA1KQotIAlzeW10YWItPmVw aWxvZ3VlX3Vud2luZF92YWxpZCA9IDE7Ci0rCi0rICAgICAgaWYgKGdjY180X21pbm9yID49IDYp Ci0rCXN5bXRhYi0+YW1kNjRfcHJvbG9ndWVfbGluZV9idWcgPSAxOwotICAgICB9Ci0gCi0gICBp ZiAoZHdhcmYyX3Blcl9vYmpmaWxlLT51c2luZ19pbmRleCkKLS0tLSBhL2dkYi9zeW10YWIuaAot KysrIGIvZ2RiL3N5bXRhYi5oCi1AQCAtNzg0LDYgKzc4NCwxMSBAQCBzdHJ1Y3Qgc3ltdGFiCi0g Ci0gICB1bnNpZ25lZCBpbnQgZXBpbG9ndWVfdW53aW5kX3ZhbGlkIDogMTsKLSAKLSsgIC8qIEF0 IGxlYXN0IEdDQyA0LjYuMCBhbmQgNC42LjEgY2FuIHByb2R1Y2UgaW52YWxpZCBmYWxzZSBwcm9s b2d1ZSBhbmQgbWFya2VyCi0rICAgICBvbiBhbWQ2NC4gIFRoaXMgZmxhZyBpcyBzZXQgaW5kZXBl bmRlbnRseSBvZiB0aGUgc3ltdGFiIGFyY2guICAqLwotKwotKyAgdW5zaWduZWQgYW1kNjRfcHJv bG9ndWVfbGluZV9idWcgOiAxOwotKwotICAgLyogVGhlIG1hY3JvIHRhYmxlIGZvciB0aGlzIHN5 bXRhYi4gIExpa2UgdGhlIGJsb2NrdmVjdG9yLCB0aGlzCi0gICAgICBtYXkgYmUgc2hhcmVkIGJl dHdlZW4gZGlmZmVyZW50IHN5bXRhYnMgLS0tIGFuZCBub3JtYWxseSBpcyBmb3IKLSAgICAgIGFs bCB0aGUgc3ltdGFicyBpbiBhIGdpdmVuIGNvbXBpbGF0aW9uIHVuaXQuICAqLwotLS0tIC9kZXYv bnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC9hbWQ2NC1wcm9sb2d1ZS14bW0uYwot QEAgLTAsMCArMSwzOCBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBH TlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwot KwotK3N0YXRpYyB2b2xhdGlsZSBpbnQgdiwgZmFpbDsKLSsKLStzdGF0aWMgdm9pZAotK2Z1bmMg KGludCBpLCAuLi4pCi0rewotKyAgdiA9IGk7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rbWFya2Vy ICh2b2lkKQotK3sKLSt9Ci0rCi0raW50Ci0rbWFpbiAodm9pZCkKLSt7Ci0rICBmdW5jICgxKTsK LSsgIGZhaWwgPSAxOwotKyAgbWFya2VyICgpOwotKyAgcmV0dXJuIDA7Ci0rfQotLS0tIC9kZXYv bnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC9hbWQ2NC1wcm9sb2d1ZS14bW0uZXhw Ci1AQCAtMCwwICsxLDQ2IEBACi0rIyBDb3B5cmlnaHQgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotKyMgVGVz dCBHQ0MgUFIgZGVidWcvNDg4Mjcgd29ya2Fyb3VuZCBpbiBHREIuCi0rCi0rc2V0IHRlc3RmaWxl ICJhbWQ2NC1wcm9sb2d1ZS14bW0iCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0ucwotK3NldCBj c3JjZmlsZSAke3Rlc3RmaWxlfS5jCi0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8k e3Rlc3RmaWxlfS54Ci0rc2V0IG9wdHMge30KLSsKLStpZiBbaW5mbyBleGlzdHMgQ09NUElMRV0g ewotKyAgICAjIG1ha2UgY2hlY2sgUlVOVEVTVEZMQUdTPSdnZGIuYXJjaC9hbWQ2NC1wcm9sb2d1 ZS14bW0uZXhwIENPTVBJTEU9MScKLSsgICAgc2V0IHNyY2ZpbGUgJHtjc3JjZmlsZX0KLSsgICAg bGFwcGVuZCBvcHRzIGRlYnVnIG9wdGltaXplPS1PMAotK30gZWxzZWlmIHsgIVtpc3RhcmdldCB4 ODZfNjQtKi0qIF0gfHwgIVtpc19scDY0X3RhcmdldF0gfSB7Ci0rICAgIHZlcmJvc2UgIlNraXBw aW5nIGFtZDY0LXByb2xvZ3VlLXhtbSB0ZXN0LiIKLSsgICAgcmV0dXJuIDAKLSt9Ci0rCi0raWYg e1twcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAkc3JjZmls ZSAkb3B0c119IHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2lmICFbcnVudG9fbWFpbl0gewot KyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rZ2RiX2JyZWFrcG9pbnQgImZ1bmMiCi0rZ2RiX2JyZWFr cG9pbnQgIm1hcmtlciIKLSsKLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiZnVuYyIKLSsK LStnZGJfdGVzdCAicCBmYWlsIiAiID0gMCIgInN0b3BwZWQgYXQgZnVuYyIKLS0tLSAvZGV2L251 bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvYW1kNjQtcHJvbG9ndWUteG1tLnMKLUBA IC0wLDAgKzEsNDAwIEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdO VSBkZWJ1Z2dlci4KLSsgICAgICAJCi0rICAgQ29weXJpZ2h0IDIwMTEgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAg IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsg ICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u ICAqLwotKyAgICAgIAkKLSsvKiBUaGlzIGZpbGUgaXMgY29tcGlsZWQgZnJvbSBnZGIuYXJjaC9h bWQ2NC1wcm9sb2d1ZS14bW0uYwotKyAgIHVzaW5nIC1nIC1kQSAtUy4gICovCi0rCi0rCS5maWxl CSJhbWQ2NC1wcm9sb2d1ZS14bW0uYyIKLSsJLnRleHQKLSsuTHRleHQwOgotKwkubG9jYWwJdgot KwkuY29tbQl2LDQsNAotKwkubG9jYWwJZmFpbAotKwkuY29tbQlmYWlsLDQsNAotKwkudHlwZQlm dW5jLCBAZnVuY3Rpb24KLStmdW5jOgotKy5MRkIwOgotKwkuZmlsZSAxICJnZGIuYXJjaC9hbWQ2 NC1wcm9sb2d1ZS14bW0uYyIKLSsJIyBnZGIuYXJjaC9hbWQ2NC1wcm9sb2d1ZS14bW0uYzoyMgot KwkubG9jIDEgMjIgMAotKwkuY2ZpX3N0YXJ0cHJvYwotKwkjIGJhc2ljIGJsb2NrIDIKLSsJcHVz aHEJJXJicAotKwkuY2ZpX2RlZl9jZmFfb2Zmc2V0IDE2Ci0rCS5jZmlfb2Zmc2V0IDYsIC0xNgot Kwltb3ZxCSVyc3AsICVyYnAKLSsJLmNmaV9kZWZfY2ZhX3JlZ2lzdGVyIDYKLSsJc3VicQkkNzIs ICVyc3AKLSsJbW92cQklcnNpLCAtMTY4KCVyYnApCi0rCW1vdnEJJXJkeCwgLTE2MCglcmJwKQot Kwltb3ZxCSVyY3gsIC0xNTIoJXJicCkKLSsJbW92cQklcjgsIC0xNDQoJXJicCkKLSsJbW92cQkl cjksIC0xMzYoJXJicCkKLSsJdGVzdGIJJWFsLCAlYWwKLSsJamUJLkwyCi0rCSMgYmFzaWMgYmxv Y2sgMwotKwkjIGdkYi5hcmNoL2FtZDY0LXByb2xvZ3VlLXhtbS5jOjIyCi0rCS5sb2MgMSAyMiAw Ci0rCW1vdmFwcwkleG1tMCwgLTEyOCglcmJwKQotKwltb3ZhcHMJJXhtbTEsIC0xMTIoJXJicCkK LSsJbW92YXBzCSV4bW0yLCAtOTYoJXJicCkKLSsJbW92YXBzCSV4bW0zLCAtODAoJXJicCkKLSsJ bW92YXBzCSV4bW00LCAtNjQoJXJicCkKLSsJbW92YXBzCSV4bW01LCAtNDgoJXJicCkKLSsJbW92 YXBzCSV4bW02LCAtMzIoJXJicCkKLSsJbW92YXBzCSV4bW03LCAtMTYoJXJicCkKLSsuTDI6Ci0r CSMgYmFzaWMgYmxvY2sgNAotKwltb3ZsCSVlZGksIC0xODAoJXJicCkKLSsJIyBnZGIuYXJjaC9h bWQ2NC1wcm9sb2d1ZS14bW0uYzoyMwotKwkubG9jIDEgMjMgMAotKwltb3ZsCS0xODAoJXJicCks ICVlYXgKLSsJbW92bAklZWF4LCB2KCVyaXApCi0rCSMgZ2RiLmFyY2gvYW1kNjQtcHJvbG9ndWUt eG1tLmM6MjQKLSsJLmxvYyAxIDI0IDAKLSsJbGVhdmUKLSsJLmNmaV9kZWZfY2ZhIDcsIDgKLSsJ cmV0Ci0rCS5jZmlfZW5kcHJvYwotKy5MRkUwOgotKwkuc2l6ZQlmdW5jLCAuLWZ1bmMKLSsJLnR5 cGUJbWFya2VyLCBAZnVuY3Rpb24KLSttYXJrZXI6Ci0rLkxGQjE6Ci0rCSMgZ2RiLmFyY2gvYW1k NjQtcHJvbG9ndWUteG1tLmM6MjgKLSsJLmxvYyAxIDI4IDAKLSsJLmNmaV9zdGFydHByb2MKLSsJ IyBiYXNpYyBibG9jayAyCi0rCXB1c2hxCSVyYnAKLSsJLmNmaV9kZWZfY2ZhX29mZnNldCAxNgot KwkuY2ZpX29mZnNldCA2LCAtMTYKLSsJbW92cQklcnNwLCAlcmJwCi0rCS5jZmlfZGVmX2NmYV9y ZWdpc3RlciA2Ci0rCSMgZ2RiLmFyY2gvYW1kNjQtcHJvbG9ndWUteG1tLmM6MjkKLSsJLmxvYyAx IDI5IDAKLSsJcG9wcQklcmJwCi0rCS5jZmlfZGVmX2NmYSA3LCA4Ci0rCXJldAotKwkuY2ZpX2Vu ZHByb2MKLSsuTEZFMToKLSsJLnNpemUJbWFya2VyLCAuLW1hcmtlcgotKwkuZ2xvYmwJbWFpbgot KwkudHlwZQltYWluLCBAZnVuY3Rpb24KLSttYWluOgotKy5MRkIyOgotKwkjIGdkYi5hcmNoL2Ft ZDY0LXByb2xvZ3VlLXhtbS5jOjMzCi0rCS5sb2MgMSAzMyAwCi0rCS5jZmlfc3RhcnRwcm9jCi0r CSMgYmFzaWMgYmxvY2sgMgotKwlwdXNocQklcmJwCi0rCS5jZmlfZGVmX2NmYV9vZmZzZXQgMTYK LSsJLmNmaV9vZmZzZXQgNiwgLTE2Ci0rCW1vdnEJJXJzcCwgJXJicAotKwkuY2ZpX2RlZl9jZmFf cmVnaXN0ZXIgNgotKwkjIGdkYi5hcmNoL2FtZDY0LXByb2xvZ3VlLXhtbS5jOjM0Ci0rCS5sb2Mg MSAzNCAwCi0rCW1vdmwJJDEsICVlZGkKLSsJbW92bAkkMCwgJWVheAotKwljYWxsCWZ1bmMKLSsJ IyBnZGIuYXJjaC9hbWQ2NC1wcm9sb2d1ZS14bW0uYzozNQotKwkubG9jIDEgMzUgMAotKwltb3Zs CSQxLCBmYWlsKCVyaXApCi0rCSMgZ2RiLmFyY2gvYW1kNjQtcHJvbG9ndWUteG1tLmM6MzYKLSsJ LmxvYyAxIDM2IDAKLSsJY2FsbAltYXJrZXIKLSsJIyBnZGIuYXJjaC9hbWQ2NC1wcm9sb2d1ZS14 bW0uYzozNwotKwkubG9jIDEgMzcgMAotKwltb3ZsCSQwLCAlZWF4Ci0rCSMgZ2RiLmFyY2gvYW1k NjQtcHJvbG9ndWUteG1tLmM6MzgKLSsJLmxvYyAxIDM4IDAKLSsJcG9wcQklcmJwCi0rCS5jZmlf ZGVmX2NmYSA3LCA4Ci0rCXJldAotKwkuY2ZpX2VuZHByb2MKLSsuTEZFMjoKLSsJLnNpemUJbWFp biwgLi1tYWluCi0rLkxldGV4dDA6Ci0rCS5zZWN0aW9uCS5kZWJ1Z19pbmZvLCIiLEBwcm9nYml0 cwotKy5MZGVidWdfaW5mbzA6Ci0rCS5sb25nCTB4YzAJIyBMZW5ndGggb2YgQ29tcGlsYXRpb24g VW5pdCBJbmZvCi0rCS52YWx1ZQkweDQJIyBEV0FSRiB2ZXJzaW9uIG51bWJlcgotKwkubG9uZwku TGRlYnVnX2FiYnJldjAJIyBPZmZzZXQgSW50byBBYmJyZXYuIFNlY3Rpb24KLSsJLmJ5dGUJMHg4 CSMgUG9pbnRlciBTaXplIChpbiBieXRlcykKLSsJLnVsZWIxMjggMHgxCSMgKERJRSAoMHhiKSBE V19UQUdfY29tcGlsZV91bml0KQotKwkubG9uZwkuTEFTRjEJIyBEV19BVF9wcm9kdWNlcjogIkdO VSBDIDQuNi4xIDIwMTEwNzE1IChSZWQgSGF0IDQuNi4xLTMpIgotKwkuYnl0ZQkweDEJIyBEV19B VF9sYW5ndWFnZQotKwkubG9uZwkuTEFTRjIJIyBEV19BVF9uYW1lOiAiZ2RiLmFyY2gvYW1kNjQt cHJvbG9ndWUteG1tLmMiCi0rCS5sb25nCS5MQVNGMwkjIERXX0FUX2NvbXBfZGlyOiAiIgotKwku cXVhZAkuTHRleHQwCSMgRFdfQVRfbG93X3BjCi0rCS5xdWFkCS5MZXRleHQwCSMgRFdfQVRfaGln aF9wYwotKwkubG9uZwkuTGRlYnVnX2xpbmUwCSMgRFdfQVRfc3RtdF9saXN0Ci0rCS51bGViMTI4 IDB4MgkjIChESUUgKDB4MmQpIERXX1RBR19zdWJwcm9ncmFtKQotKwkubG9uZwkuTEFTRjQJIyBE V19BVF9uYW1lOiAiZnVuYyIKLSsJLmJ5dGUJMHgxCSMgRFdfQVRfZGVjbF9maWxlIChnZGIuYXJj aC9hbWQ2NC1wcm9sb2d1ZS14bW0uYykKLSsJLmJ5dGUJMHgxNQkjIERXX0FUX2RlY2xfbGluZQot KwkJCSMgRFdfQVRfcHJvdG90eXBlZAotKwkucXVhZAkuTEZCMAkjIERXX0FUX2xvd19wYwotKwku cXVhZAkuTEZFMAkjIERXX0FUX2hpZ2hfcGMKLSsJLnVsZWIxMjggMHgxCSMgRFdfQVRfZnJhbWVf YmFzZQotKwkuYnl0ZQkweDljCSMgRFdfT1BfY2FsbF9mcmFtZV9jZmEKLSsJCQkjIERXX0FUX0dO VV9hbGxfY2FsbF9zaXRlcwotKwkubG9uZwkweDU5CSMgRFdfQVRfc2libGluZwotKwkudWxlYjEy OCAweDMJIyAoRElFICgweDRhKSBEV19UQUdfZm9ybWFsX3BhcmFtZXRlcikKLSsJLmFzY2lpICJp XDAiCSMgRFdfQVRfbmFtZQotKwkuYnl0ZQkweDEJIyBEV19BVF9kZWNsX2ZpbGUgKGdkYi5hcmNo L2FtZDY0LXByb2xvZ3VlLXhtbS5jKQotKwkuYnl0ZQkweDE1CSMgRFdfQVRfZGVjbF9saW5lCi0r CS5sb25nCTB4NTkJIyBEV19BVF90eXBlCi0rCS51bGViMTI4IDB4MwkjIERXX0FUX2xvY2F0aW9u Ci0rCS5ieXRlCTB4OTEJIyBEV19PUF9mYnJlZwotKwkuc2xlYjEyOCAtMTk2Ci0rCS51bGViMTI4 IDB4NAkjIChESUUgKDB4NTcpIERXX1RBR191bnNwZWNpZmllZF9wYXJhbWV0ZXJzKQotKwkuYnl0 ZQkwCSMgZW5kIG9mIGNoaWxkcmVuIG9mIERJRSAweDJkCi0rCS51bGViMTI4IDB4NQkjIChESUUg KDB4NTkpIERXX1RBR19iYXNlX3R5cGUpCi0rCS5ieXRlCTB4NAkjIERXX0FUX2J5dGVfc2l6ZQot KwkuYnl0ZQkweDUJIyBEV19BVF9lbmNvZGluZwotKwkuYXNjaWkgImludFwwIgkjIERXX0FUX25h bWUKLSsJLnVsZWIxMjggMHg2CSMgKERJRSAoMHg2MCkgRFdfVEFHX3N1YnByb2dyYW0pCi0rCS5s b25nCS5MQVNGNQkjIERXX0FUX25hbWU6ICJtYXJrZXIiCi0rCS5ieXRlCTB4MQkjIERXX0FUX2Rl Y2xfZmlsZSAoZ2RiLmFyY2gvYW1kNjQtcHJvbG9ndWUteG1tLmMpCi0rCS5ieXRlCTB4MWIJIyBE V19BVF9kZWNsX2xpbmUKLSsJCQkjIERXX0FUX3Byb3RvdHlwZWQKLSsJLnF1YWQJLkxGQjEJIyBE V19BVF9sb3dfcGMKLSsJLnF1YWQJLkxGRTEJIyBEV19BVF9oaWdoX3BjCi0rCS51bGViMTI4IDB4 MQkjIERXX0FUX2ZyYW1lX2Jhc2UKLSsJLmJ5dGUJMHg5YwkjIERXX09QX2NhbGxfZnJhbWVfY2Zh Ci0rCQkJIyBEV19BVF9HTlVfYWxsX2NhbGxfc2l0ZXMKLSsJLnVsZWIxMjggMHg3CSMgKERJRSAo MHg3OSkgRFdfVEFHX3N1YnByb2dyYW0pCi0rCQkJIyBEV19BVF9leHRlcm5hbAotKwkubG9uZwku TEFTRjYJIyBEV19BVF9uYW1lOiAibWFpbiIKLSsJLmJ5dGUJMHgxCSMgRFdfQVRfZGVjbF9maWxl IChnZGIuYXJjaC9hbWQ2NC1wcm9sb2d1ZS14bW0uYykKLSsJLmJ5dGUJMHgyMAkjIERXX0FUX2Rl Y2xfbGluZQotKwkJCSMgRFdfQVRfcHJvdG90eXBlZAotKwkubG9uZwkweDU5CSMgRFdfQVRfdHlw ZQotKwkucXVhZAkuTEZCMgkjIERXX0FUX2xvd19wYwotKwkucXVhZAkuTEZFMgkjIERXX0FUX2hp Z2hfcGMKLSsJLnVsZWIxMjggMHgxCSMgRFdfQVRfZnJhbWVfYmFzZQotKwkuYnl0ZQkweDljCSMg RFdfT1BfY2FsbF9mcmFtZV9jZmEKLSsJCQkjIERXX0FUX0dOVV9hbGxfdGFpbF9jYWxsX3NpdGVz Ci0rCS51bGViMTI4IDB4OAkjIChESUUgKDB4OTYpIERXX1RBR192YXJpYWJsZSkKLSsJLmFzY2lp ICJ2XDAiCSMgRFdfQVRfbmFtZQotKwkuYnl0ZQkweDEJIyBEV19BVF9kZWNsX2ZpbGUgKGdkYi5h cmNoL2FtZDY0LXByb2xvZ3VlLXhtbS5jKQotKwkuYnl0ZQkweDEyCSMgRFdfQVRfZGVjbF9saW5l Ci0rCS5sb25nCTB4YTkJIyBEV19BVF90eXBlCi0rCS51bGViMTI4IDB4OQkjIERXX0FUX2xvY2F0 aW9uCi0rCS5ieXRlCTB4MwkjIERXX09QX2FkZHIKLSsJLnF1YWQJdgotKwkudWxlYjEyOCAweDkJ IyAoRElFICgweGE5KSBEV19UQUdfdm9sYXRpbGVfdHlwZSkKLSsJLmxvbmcJMHg1OQkjIERXX0FU X3R5cGUKLSsJLnVsZWIxMjggMHhhCSMgKERJRSAoMHhhZSkgRFdfVEFHX3ZhcmlhYmxlKQotKwku bG9uZwkuTEFTRjAJIyBEV19BVF9uYW1lOiAiZmFpbCIKLSsJLmJ5dGUJMHgxCSMgRFdfQVRfZGVj bF9maWxlIChnZGIuYXJjaC9hbWQ2NC1wcm9sb2d1ZS14bW0uYykKLSsJLmJ5dGUJMHgxMgkjIERX X0FUX2RlY2xfbGluZQotKwkubG9uZwkweGE5CSMgRFdfQVRfdHlwZQotKwkudWxlYjEyOCAweDkJ IyBEV19BVF9sb2NhdGlvbgotKwkuYnl0ZQkweDMJIyBEV19PUF9hZGRyCi0rCS5xdWFkCWZhaWwK LSsJLmJ5dGUJMAkjIGVuZCBvZiBjaGlsZHJlbiBvZiBESUUgMHhiCi0rCS5zZWN0aW9uCS5kZWJ1 Z19hYmJyZXYsIiIsQHByb2diaXRzCi0rLkxkZWJ1Z19hYmJyZXYwOgotKwkudWxlYjEyOCAweDEJ IyAoYWJicmV2IGNvZGUpCi0rCS51bGViMTI4IDB4MTEJIyAoVEFHOiBEV19UQUdfY29tcGlsZV91 bml0KQotKwkuYnl0ZQkweDEJIyBEV19jaGlsZHJlbl95ZXMKLSsJLnVsZWIxMjggMHgyNQkjIChE V19BVF9wcm9kdWNlcikKLSsJLnVsZWIxMjggMHhlCSMgKERXX0ZPUk1fc3RycCkKLSsJLnVsZWIx MjggMHgxMwkjIChEV19BVF9sYW5ndWFnZSkKLSsJLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0 YTEpCi0rCS51bGViMTI4IDB4MwkjIChEV19BVF9uYW1lKQotKwkudWxlYjEyOCAweGUJIyAoRFdf Rk9STV9zdHJwKQotKwkudWxlYjEyOCAweDFiCSMgKERXX0FUX2NvbXBfZGlyKQotKwkudWxlYjEy OCAweGUJIyAoRFdfRk9STV9zdHJwKQotKwkudWxlYjEyOCAweDExCSMgKERXX0FUX2xvd19wYykK LSsJLnVsZWIxMjggMHgxCSMgKERXX0ZPUk1fYWRkcikKLSsJLnVsZWIxMjggMHgxMgkjIChEV19B VF9oaWdoX3BjKQotKwkudWxlYjEyOCAweDEJIyAoRFdfRk9STV9hZGRyKQotKwkudWxlYjEyOCAw eDEwCSMgKERXX0FUX3N0bXRfbGlzdCkKLSsJLnVsZWIxMjggMHgxNwkjIChEV19GT1JNX3NlY19v ZmZzZXQpCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkudWxlYjEyOCAweDIJIyAoYWJicmV2IGNv ZGUpCi0rCS51bGViMTI4IDB4MmUJIyAoVEFHOiBEV19UQUdfc3VicHJvZ3JhbSkKLSsJLmJ5dGUJ MHgxCSMgRFdfY2hpbGRyZW5feWVzCi0rCS51bGViMTI4IDB4MwkjIChEV19BVF9uYW1lKQotKwku dWxlYjEyOCAweGUJIyAoRFdfRk9STV9zdHJwKQotKwkudWxlYjEyOCAweDNhCSMgKERXX0FUX2Rl Y2xfZmlsZSkKLSsJLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0rCS51bGViMTI4IDB4 M2IJIyAoRFdfQVRfZGVjbF9saW5lKQotKwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkK LSsJLnVsZWIxMjggMHgyNwkjIChEV19BVF9wcm90b3R5cGVkKQotKwkudWxlYjEyOCAweDE5CSMg KERXX0ZPUk1fZmxhZ19wcmVzZW50KQotKwkudWxlYjEyOCAweDExCSMgKERXX0FUX2xvd19wYykK LSsJLnVsZWIxMjggMHgxCSMgKERXX0ZPUk1fYWRkcikKLSsJLnVsZWIxMjggMHgxMgkjIChEV19B VF9oaWdoX3BjKQotKwkudWxlYjEyOCAweDEJIyAoRFdfRk9STV9hZGRyKQotKwkudWxlYjEyOCAw eDQwCSMgKERXX0FUX2ZyYW1lX2Jhc2UpCi0rCS51bGViMTI4IDB4MTgJIyAoRFdfRk9STV9leHBy bG9jKQotKwkudWxlYjEyOCAweDIxMTcJIyAoRFdfQVRfR05VX2FsbF9jYWxsX3NpdGVzKQotKwku dWxlYjEyOCAweDE5CSMgKERXX0ZPUk1fZmxhZ19wcmVzZW50KQotKwkudWxlYjEyOCAweDEJIyAo RFdfQVRfc2libGluZykKLSsJLnVsZWIxMjggMHgxMwkjIChEV19GT1JNX3JlZjQpCi0rCS5ieXRl CTAKLSsJLmJ5dGUJMAotKwkudWxlYjEyOCAweDMJIyAoYWJicmV2IGNvZGUpCi0rCS51bGViMTI4 IDB4NQkjIChUQUc6IERXX1RBR19mb3JtYWxfcGFyYW1ldGVyKQotKwkuYnl0ZQkwCSMgRFdfY2hp bGRyZW5fbm8KLSsJLnVsZWIxMjggMHgzCSMgKERXX0FUX25hbWUpCi0rCS51bGViMTI4IDB4OAkj IChEV19GT1JNX3N0cmluZykKLSsJLnVsZWIxMjggMHgzYQkjIChEV19BVF9kZWNsX2ZpbGUpCi0r CS51bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQotKwkudWxlYjEyOCAweDNiCSMgKERXX0FU X2RlY2xfbGluZSkKLSsJLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0rCS51bGViMTI4 IDB4NDkJIyAoRFdfQVRfdHlwZSkKLSsJLnVsZWIxMjggMHgxMwkjIChEV19GT1JNX3JlZjQpCi0r CS51bGViMTI4IDB4MgkjIChEV19BVF9sb2NhdGlvbikKLSsJLnVsZWIxMjggMHgxOAkjIChEV19G T1JNX2V4cHJsb2MpCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkudWxlYjEyOCAweDQJIyAoYWJi cmV2IGNvZGUpCi0rCS51bGViMTI4IDB4MTgJIyAoVEFHOiBEV19UQUdfdW5zcGVjaWZpZWRfcGFy YW1ldGVycykKLSsJLmJ5dGUJMAkjIERXX2NoaWxkcmVuX25vCi0rCS5ieXRlCTAKLSsJLmJ5dGUJ MAotKwkudWxlYjEyOCAweDUJIyAoYWJicmV2IGNvZGUpCi0rCS51bGViMTI4IDB4MjQJIyAoVEFH OiBEV19UQUdfYmFzZV90eXBlKQotKwkuYnl0ZQkwCSMgRFdfY2hpbGRyZW5fbm8KLSsJLnVsZWIx MjggMHhiCSMgKERXX0FUX2J5dGVfc2l6ZSkKLSsJLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0 YTEpCi0rCS51bGViMTI4IDB4M2UJIyAoRFdfQVRfZW5jb2RpbmcpCi0rCS51bGViMTI4IDB4Ygkj IChEV19GT1JNX2RhdGExKQotKwkudWxlYjEyOCAweDMJIyAoRFdfQVRfbmFtZSkKLSsJLnVsZWIx MjggMHg4CSMgKERXX0ZPUk1fc3RyaW5nKQotKwkuYnl0ZQkwCi0rCS5ieXRlCTAKLSsJLnVsZWIx MjggMHg2CSMgKGFiYnJldiBjb2RlKQotKwkudWxlYjEyOCAweDJlCSMgKFRBRzogRFdfVEFHX3N1 YnByb2dyYW0pCi0rCS5ieXRlCTAJIyBEV19jaGlsZHJlbl9ubwotKwkudWxlYjEyOCAweDMJIyAo RFdfQVRfbmFtZSkKLSsJLnVsZWIxMjggMHhlCSMgKERXX0ZPUk1fc3RycCkKLSsJLnVsZWIxMjgg MHgzYQkjIChEV19BVF9kZWNsX2ZpbGUpCi0rCS51bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGEx KQotKwkudWxlYjEyOCAweDNiCSMgKERXX0FUX2RlY2xfbGluZSkKLSsJLnVsZWIxMjggMHhiCSMg KERXX0ZPUk1fZGF0YTEpCi0rCS51bGViMTI4IDB4MjcJIyAoRFdfQVRfcHJvdG90eXBlZCkKLSsJ LnVsZWIxMjggMHgxOQkjIChEV19GT1JNX2ZsYWdfcHJlc2VudCkKLSsJLnVsZWIxMjggMHgxMQkj IChEV19BVF9sb3dfcGMpCi0rCS51bGViMTI4IDB4MQkjIChEV19GT1JNX2FkZHIpCi0rCS51bGVi MTI4IDB4MTIJIyAoRFdfQVRfaGlnaF9wYykKLSsJLnVsZWIxMjggMHgxCSMgKERXX0ZPUk1fYWRk cikKLSsJLnVsZWIxMjggMHg0MAkjIChEV19BVF9mcmFtZV9iYXNlKQotKwkudWxlYjEyOCAweDE4 CSMgKERXX0ZPUk1fZXhwcmxvYykKLSsJLnVsZWIxMjggMHgyMTE3CSMgKERXX0FUX0dOVV9hbGxf Y2FsbF9zaXRlcykKLSsJLnVsZWIxMjggMHgxOQkjIChEV19GT1JNX2ZsYWdfcHJlc2VudCkKLSsJ LmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS51bGViMTI4IDB4NwkjIChhYmJyZXYgY29kZSkKLSsJLnVs ZWIxMjggMHgyZQkjIChUQUc6IERXX1RBR19zdWJwcm9ncmFtKQotKwkuYnl0ZQkwCSMgRFdfY2hp bGRyZW5fbm8KLSsJLnVsZWIxMjggMHgzZgkjIChEV19BVF9leHRlcm5hbCkKLSsJLnVsZWIxMjgg MHgxOQkjIChEV19GT1JNX2ZsYWdfcHJlc2VudCkKLSsJLnVsZWIxMjggMHgzCSMgKERXX0FUX25h bWUpCi0rCS51bGViMTI4IDB4ZQkjIChEV19GT1JNX3N0cnApCi0rCS51bGViMTI4IDB4M2EJIyAo RFdfQVRfZGVjbF9maWxlKQotKwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLSsJLnVs ZWIxMjggMHgzYgkjIChEV19BVF9kZWNsX2xpbmUpCi0rCS51bGViMTI4IDB4YgkjIChEV19GT1JN X2RhdGExKQotKwkudWxlYjEyOCAweDI3CSMgKERXX0FUX3Byb3RvdHlwZWQpCi0rCS51bGViMTI4 IDB4MTkJIyAoRFdfRk9STV9mbGFnX3ByZXNlbnQpCi0rCS51bGViMTI4IDB4NDkJIyAoRFdfQVRf dHlwZSkKLSsJLnVsZWIxMjggMHgxMwkjIChEV19GT1JNX3JlZjQpCi0rCS51bGViMTI4IDB4MTEJ IyAoRFdfQVRfbG93X3BjKQotKwkudWxlYjEyOCAweDEJIyAoRFdfRk9STV9hZGRyKQotKwkudWxl YjEyOCAweDEyCSMgKERXX0FUX2hpZ2hfcGMpCi0rCS51bGViMTI4IDB4MQkjIChEV19GT1JNX2Fk ZHIpCi0rCS51bGViMTI4IDB4NDAJIyAoRFdfQVRfZnJhbWVfYmFzZSkKLSsJLnVsZWIxMjggMHgx OAkjIChEV19GT1JNX2V4cHJsb2MpCi0rCS51bGViMTI4IDB4MjExNgkjIChEV19BVF9HTlVfYWxs X3RhaWxfY2FsbF9zaXRlcykKLSsJLnVsZWIxMjggMHgxOQkjIChEV19GT1JNX2ZsYWdfcHJlc2Vu dCkKLSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS51bGViMTI4IDB4OAkjIChhYmJyZXYgY29kZSkK LSsJLnVsZWIxMjggMHgzNAkjIChUQUc6IERXX1RBR192YXJpYWJsZSkKLSsJLmJ5dGUJMAkjIERX X2NoaWxkcmVuX25vCi0rCS51bGViMTI4IDB4MwkjIChEV19BVF9uYW1lKQotKwkudWxlYjEyOCAw eDgJIyAoRFdfRk9STV9zdHJpbmcpCi0rCS51bGViMTI4IDB4M2EJIyAoRFdfQVRfZGVjbF9maWxl KQotKwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLSsJLnVsZWIxMjggMHgzYgkjIChE V19BVF9kZWNsX2xpbmUpCi0rCS51bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQotKwkudWxl YjEyOCAweDQ5CSMgKERXX0FUX3R5cGUpCi0rCS51bGViMTI4IDB4MTMJIyAoRFdfRk9STV9yZWY0 KQotKwkudWxlYjEyOCAweDIJIyAoRFdfQVRfbG9jYXRpb24pCi0rCS51bGViMTI4IDB4MTgJIyAo RFdfRk9STV9leHBybG9jKQotKwkuYnl0ZQkwCi0rCS5ieXRlCTAKLSsJLnVsZWIxMjggMHg5CSMg KGFiYnJldiBjb2RlKQotKwkudWxlYjEyOCAweDM1CSMgKFRBRzogRFdfVEFHX3ZvbGF0aWxlX3R5 cGUpCi0rCS5ieXRlCTAJIyBEV19jaGlsZHJlbl9ubwotKwkudWxlYjEyOCAweDQ5CSMgKERXX0FU X3R5cGUpCi0rCS51bGViMTI4IDB4MTMJIyAoRFdfRk9STV9yZWY0KQotKwkuYnl0ZQkwCi0rCS5i eXRlCTAKLSsJLnVsZWIxMjggMHhhCSMgKGFiYnJldiBjb2RlKQotKwkudWxlYjEyOCAweDM0CSMg KFRBRzogRFdfVEFHX3ZhcmlhYmxlKQotKwkuYnl0ZQkwCSMgRFdfY2hpbGRyZW5fbm8KLSsJLnVs ZWIxMjggMHgzCSMgKERXX0FUX25hbWUpCi0rCS51bGViMTI4IDB4ZQkjIChEV19GT1JNX3N0cnAp Ci0rCS51bGViMTI4IDB4M2EJIyAoRFdfQVRfZGVjbF9maWxlKQotKwkudWxlYjEyOCAweGIJIyAo RFdfRk9STV9kYXRhMSkKLSsJLnVsZWIxMjggMHgzYgkjIChEV19BVF9kZWNsX2xpbmUpCi0rCS51 bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQotKwkudWxlYjEyOCAweDQ5CSMgKERXX0FUX3R5 cGUpCi0rCS51bGViMTI4IDB4MTMJIyAoRFdfRk9STV9yZWY0KQotKwkudWxlYjEyOCAweDIJIyAo RFdfQVRfbG9jYXRpb24pCi0rCS51bGViMTI4IDB4MTgJIyAoRFdfRk9STV9leHBybG9jKQotKwku Ynl0ZQkwCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkuc2VjdGlvbgkuZGVidWdfYXJhbmdlcywi IixAcHJvZ2JpdHMKLSsJLmxvbmcJMHgyYwkjIExlbmd0aCBvZiBBZGRyZXNzIFJhbmdlcyBJbmZv Ci0rCS52YWx1ZQkweDIJIyBEV0FSRiBWZXJzaW9uCi0rCS5sb25nCS5MZGVidWdfaW5mbzAJIyBP ZmZzZXQgb2YgQ29tcGlsYXRpb24gVW5pdCBJbmZvCi0rCS5ieXRlCTB4OAkjIFNpemUgb2YgQWRk cmVzcwotKwkuYnl0ZQkwCSMgU2l6ZSBvZiBTZWdtZW50IERlc2NyaXB0b3IKLSsJLnZhbHVlCTAJ IyBQYWQgdG8gMTYgYnl0ZSBib3VuZGFyeQotKwkudmFsdWUJMAotKwkucXVhZAkuTHRleHQwCSMg QWRkcmVzcwotKwkucXVhZAkuTGV0ZXh0MC0uTHRleHQwCSMgTGVuZ3RoCi0rCS5xdWFkCTAKLSsJ LnF1YWQJMAotKwkuc2VjdGlvbgkuZGVidWdfbGluZSwiIixAcHJvZ2JpdHMKLSsuTGRlYnVnX2xp bmUwOgotKwkuc2VjdGlvbgkuZGVidWdfc3RyLCJNUyIsQHByb2diaXRzLDEKLSsuTEFTRjM6Ci0r CS5zdHJpbmcJIiIKLSsuTEFTRjA6Ci0rCS5zdHJpbmcJImZhaWwiCi0rLkxBU0Y0OgotKwkuc3Ry aW5nCSJmdW5jIgotKy5MQVNGMToKLSsJLnN0cmluZwkiR05VIEMgNC42LjEgMjAxMTA3MTUgKFJl ZCBIYXQgNC42LjEtMykiCi0rLkxBU0YyOgotKwkuc3RyaW5nCSJnZGIuYXJjaC9hbWQ2NC1wcm9s b2d1ZS14bW0uYyIKLSsuTEFTRjU6Ci0rCS5zdHJpbmcJIm1hcmtlciIKLSsuTEFTRjY6Ci0rCS5z dHJpbmcJIm1haW4iCi0rCS5pZGVudAkiR0NDOiAoR05VKSA0LjYuMSAyMDExMDcxNSAoUmVkIEhh dCA0LjYuMS0zKSIKLSsJLnNlY3Rpb24JLm5vdGUuR05VLXN0YWNrLCIiLEBwcm9nYml0cwotCgpk aWZmIC0tZ2l0IGEvZ2RiLWdjYzQ3LWdjb3JlLXplcm8ucGF0Y2ggYi9nZGItZ2NjNDctZ2NvcmUt emVyby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGYwZmYxCi0t LSAvZGV2L251bGwKKysrIGIvZ2RiLWdjYzQ3LWdjb3JlLXplcm8ucGF0Y2gKQEAgLTAsMCArMSwx MTggQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9iaW51dGlscy8yMDExLTEyL21zZzAwMjk4 Lmh0bWwKK1N1YmplY3Q6IFtwYXRjaF0gRml4IHplcm8gcmVnaXN0ZXJzIGNvcmUgZmlsZXMgdy9n Y2MtNC43CisKK0hlbGxvIEguSi4sCisKK3RoZXJlIGlzIGEgcmVncmVzc2lvbiBieToKKwljb21t aXQgMmM5YzU1NjYxN2E3ZGU4NjU3YzI1YjUxMmQyNzJjMjZiMDcwYWUyMgorCUF1dGhvcjogSC5K LiBMdSA8aGpsLnRvb2xzQGdtYWlsLmNvbT4KKwlEYXRlOiAgIFRodSBKdW4gMTYgMjI6MDg6MTAg MjAxMSArMDAwMAorCSAgICBTdXBvcnQgeDMyIGdjb3JlLgorCit3aGVuIGJ1aWx0IHdpdGggLU8y IGJ5CisJZ2NjIChHQ0MpIDQuNy4wIDIwMTExMjIzIChleHBlcmltZW50YWwpCisJKG5vdCBieSA0 LjYueCkKKworYXMgdGhlIGNvZGUgdmlvbGF0ZXMgSVNPIEM5OSA2LjIuNCBpdGVtIDUgYnkgdXNp bmcgbG9jYWwgdmFyaWFibGUgb3V0c2lkZSBvZgoraXRzIGJsb2NrLCBHQ0Mgb3B0aW1pemVzIG91 dCB0aGUgc2Vjb25kIG1lbWNweSwga2VlcGluZyB0aGVyZSBvbmx5IHRoYXQKK21lbXNldC4KKwor Li9nZGIgLW54IC4vZ2RiIC1leCBzdGFydCAtZXggJ2djb3JlIDEnIC1leCAnc2V0IGNvbmZpcm0g bm8nIC1leCBxO2dkYiAtbnggLi9nZGIgLi8xIC1leCBxCit3aWxsIHByaW50OgorQ29yZSB3YXMg Z2VuZXJhdGVkIGJ5IGAuLi4vZ2RiL2dkYicuCisjMCAgMHgwMDAwMDAwMDAwMDAwMDAwIGluID8/ ICgpCisKK05vIHJlZ3Jlc3Npb25zIG9uIHg4Nl82NC1mZWRvcmExNi1saW51eC1nbnUuCisKK1By b2JhYmx5IG9idmlvdXMsIE9LIHRvIGNoZWNrIGl0IGluPworCisKK1RoYW5rcywKK0phbgorCisK K2JmZC8KKzIwMTEtMTItMjMgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4KKworCUZpeCB6ZXJvIHJlZ2lzdGVycyBjb3JlIGZpbGVzIHdoZW4gYnVpbHQgYnkgZ2Nj LTQuNy4KKwkqIGVsZjY0LXg4Ni02NC5jIChlbGZfeDg2XzY0X3dyaXRlX2NvcmVfbm90ZSk6IFJl bW92ZSB2YXJpYWJsZXMgcCBhbmQKKwlzaXplLiAgQ2FsbCBlbGZjb3JlX3dyaXRlX25vdGUgZm9y IHRoZSBsb2NhbCB2YXJpYWJsZXMuICBSZW1vdmUgdGhlCisJZmluYWwgZWxmY29yZV93cml0ZV9u b3RlIGNhbGwuICBBZGQgTk9UUkVBQ0hFRCBjb21tZW50cy4KKworLS0tIGEvYmZkL2VsZjY0LXg4 Ni02NC5jCisrKysgYi9iZmQvZWxmNjQteDg2LTY0LmMKK0BAIC00MjAsOCArNDIwLDYgQEAgZWxm X3g4Nl82NF93cml0ZV9jb3JlX25vdGUgKGJmZCAqYWJmZCwgY2hhciAqYnVmLCBpbnQgKmJ1ZnNp eiwKKyAJCQkgICAgaW50IG5vdGVfdHlwZSwgLi4uKQorIHsKKyAgIGNvbnN0IHN0cnVjdCBlbGZf YmFja2VuZF9kYXRhICpiZWQgPSBnZXRfZWxmX2JhY2tlbmRfZGF0YSAoYWJmZCk7CistICBjb25z dCB2b2lkICpwOworLSAgaW50IHNpemU7CisgICB2YV9saXN0IGFwOworICAgY29uc3QgY2hhciAq Zm5hbWUsICpwc2FyZ3M7CisgICBsb25nIHBpZDsKK0BAIC00NDUsOCArNDQzLDggQEAgZWxmX3g4 Nl82NF93cml0ZV9jb3JlX25vdGUgKGJmZCAqYWJmZCwgY2hhciAqYnVmLCBpbnQgKmJ1ZnNpeiwK KyAJICBtZW1zZXQgKCZkYXRhLCAwLCBzaXplb2YgKGRhdGEpKTsKKyAJICBzdHJuY3B5IChkYXRh LnByX2ZuYW1lLCBmbmFtZSwgc2l6ZW9mIChkYXRhLnByX2ZuYW1lKSk7CisgCSAgc3RybmNweSAo ZGF0YS5wcl9wc2FyZ3MsIHBzYXJncywgc2l6ZW9mIChkYXRhLnByX3BzYXJncykpOworLQkgIHAg PSAoY29uc3Qgdm9pZCAqKSAmZGF0YTsKKy0JICBzaXplID0gc2l6ZW9mIChkYXRhKTsKKysJICBy ZXR1cm4gZWxmY29yZV93cml0ZV9ub3RlIChhYmZkLCBidWYsIGJ1ZnNpeiwgIkNPUkUiLCBub3Rl X3R5cGUsCisrCQkJCSAgICAgJmRhdGEsIHNpemVvZiAoZGF0YSkpOworIAl9CisgICAgICAgZWxz ZQorIAl7CitAQCAtNDU0LDEwICs0NTIsMTAgQEAgZWxmX3g4Nl82NF93cml0ZV9jb3JlX25vdGUg KGJmZCAqYWJmZCwgY2hhciAqYnVmLCBpbnQgKmJ1ZnNpeiwKKyAJICBtZW1zZXQgKCZkYXRhLCAw LCBzaXplb2YgKGRhdGEpKTsKKyAJICBzdHJuY3B5IChkYXRhLnByX2ZuYW1lLCBmbmFtZSwgc2l6 ZW9mIChkYXRhLnByX2ZuYW1lKSk7CisgCSAgc3RybmNweSAoZGF0YS5wcl9wc2FyZ3MsIHBzYXJn cywgc2l6ZW9mIChkYXRhLnByX3BzYXJncykpOworLQkgIHAgPSAoY29uc3Qgdm9pZCAqKSAmZGF0 YTsKKy0JICBzaXplID0gc2l6ZW9mIChkYXRhKTsKKysJICByZXR1cm4gZWxmY29yZV93cml0ZV9u b3RlIChhYmZkLCBidWYsIGJ1ZnNpeiwgIkNPUkUiLCBub3RlX3R5cGUsCisrCQkJCSAgICAgJmRh dGEsIHNpemVvZiAoZGF0YSkpOworIAl9CistICAgICAgYnJlYWs7CisrICAgICAgLyogTk9UUkVB Q0hFRCAqLworIAorICAgICBjYXNlIE5UX1BSU1RBVFVTOgorICAgICAgIHZhX3N0YXJ0IChhcCwg bm90ZV90eXBlKTsKK0BAIC00NzUsOCArNDczLDggQEAgZWxmX3g4Nl82NF93cml0ZV9jb3JlX25v dGUgKGJmZCAqYWJmZCwgY2hhciAqYnVmLCBpbnQgKmJ1ZnNpeiwKKyAJICAgICAgcHJzdGF0LnBy X3BpZCA9IHBpZDsKKyAJICAgICAgcHJzdGF0LnByX2N1cnNpZyA9IGN1cnNpZzsKKyAJICAgICAg bWVtY3B5ICgmcHJzdGF0LnByX3JlZywgZ3JlZ3MsIHNpemVvZiAocHJzdGF0LnByX3JlZykpOwor LQkgICAgICBwID0gKGNvbnN0IHZvaWQgKikgJnByc3RhdDsKKy0JICAgICAgc2l6ZSA9IHNpemVv ZiAocHJzdGF0KTsKKysJICAgICAgcmV0dXJuIGVsZmNvcmVfd3JpdGVfbm90ZSAoYWJmZCwgYnVm LCBidWZzaXosICJDT1JFIiwgbm90ZV90eXBlLAorKwkJCQkJICZwcnN0YXQsIHNpemVvZiAocHJz dGF0KSk7CisgCSAgICB9CisgCSAgZWxzZQorIAkgICAgeworQEAgLTQ4NSw4ICs0ODMsOCBAQCBl bGZfeDg2XzY0X3dyaXRlX2NvcmVfbm90ZSAoYmZkICphYmZkLCBjaGFyICpidWYsIGludCAqYnVm c2l6LAorIAkgICAgICBwcnN0YXQucHJfcGlkID0gcGlkOworIAkgICAgICBwcnN0YXQucHJfY3Vy c2lnID0gY3Vyc2lnOworIAkgICAgICBtZW1jcHkgKCZwcnN0YXQucHJfcmVnLCBncmVncywgc2l6 ZW9mIChwcnN0YXQucHJfcmVnKSk7CistCSAgICAgIHAgPSAoY29uc3Qgdm9pZCAqKSAmcHJzdGF0 OworLQkgICAgICBzaXplID0gc2l6ZW9mIChwcnN0YXQpOworKwkgICAgICByZXR1cm4gZWxmY29y ZV93cml0ZV9ub3RlIChhYmZkLCBidWYsIGJ1ZnNpeiwgIkNPUkUiLCBub3RlX3R5cGUsCisrCQkJ CQkgJnByc3RhdCwgc2l6ZW9mIChwcnN0YXQpKTsKKyAJICAgIH0KKyAJfQorICAgICAgIGVsc2UK K0BAIC00OTYsMTQgKzQ5NCwxMSBAQCBlbGZfeDg2XzY0X3dyaXRlX2NvcmVfbm90ZSAoYmZkICph YmZkLCBjaGFyICpidWYsIGludCAqYnVmc2l6LAorIAkgIHByc3RhdC5wcl9waWQgPSBwaWQ7Cisg CSAgcHJzdGF0LnByX2N1cnNpZyA9IGN1cnNpZzsKKyAJICBtZW1jcHkgKCZwcnN0YXQucHJfcmVn LCBncmVncywgc2l6ZW9mIChwcnN0YXQucHJfcmVnKSk7CistCSAgcCA9IChjb25zdCB2b2lkICop ICZwcnN0YXQ7CistCSAgc2l6ZSA9IHNpemVvZiAocHJzdGF0KTsKKysJICByZXR1cm4gZWxmY29y ZV93cml0ZV9ub3RlIChhYmZkLCBidWYsIGJ1ZnNpeiwgIkNPUkUiLCBub3RlX3R5cGUsCisrCQkJ CSAgICAgJnByc3RhdCwgc2l6ZW9mIChwcnN0YXQpKTsKKyAJfQorLSAgICAgIGJyZWFrOworICAg ICB9CistCistICByZXR1cm4gZWxmY29yZV93cml0ZV9ub3RlIChhYmZkLCBidWYsIGJ1ZnNpeiwg IkNPUkUiLCBub3RlX3R5cGUsIHAsCistCQkJICAgICBzaXplKTsKKysgIC8qIE5PVFJFQUNIRUQg Ki8KKyB9CisgI2VuZGlmCisgDAorCgpkaWZmIC0tZ2l0IGEvZ2RiLWdkYi1hZGQtaW5kZXgtc2Ny aXB0LnBhdGNoIGIvZ2RiLWdkYi1hZGQtaW5kZXgtc2NyaXB0LnBhdGNoCmluZGV4IDFjMTQ1YWMu LmMxNWRmNjggMTAwNjQ0Ci0tLSBhL2dkYi1nZGItYWRkLWluZGV4LXNjcmlwdC5wYXRjaAorKysg Yi9nZGItZ2RiLWFkZC1pbmRleC1zY3JpcHQucGF0Y2gKQEAgLTQwLDE2ICs0MCwxNiBAQCBTdWJq ZWN0OiBbUEFUQ0ggNC80XSBhZGQgZ2RiLWFkZC1pbmRleAogIDUgZmlsZXMgY2hhbmdlZCwgNTcg aW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMoLSkKICBjcmVhdGUgbW9kZSAxMDA3NTUgZ2RiL2dk Yi1hZGQtaW5kZXgKIAotSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL01ha2VmaWxlLmlu CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEwMy9nZGIvTWFrZWZpbGUuaW4KID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL01ha2VmaWxlLmluCTIwMTAtMTEtMTYg MDg6MDM6MTcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvTWFr ZWZpbGUuaW4JMjAxMC0xMS0xNiAwODo0Nzo0NS4wMDAwMDAwMDAgKzAxMDAKLUBAIC05ODYsNyAr OTg2LDE2IEBAIGluc3RhbGwtb25seTogaW5zdGFsbC1nc3RhY2sgJChDT05GSUdfSU4KLSAJCSQo U0hFTEwpICQoc3JjZGlyKS8uLi9ta2luc3RhbGxkaXJzIFwKLSAJCQkkKERFU1RESVIpJChtYW4x ZGlyKSA7IFwKKy0tLSBnZGItNy40LjUwLjIwMTIwMTAzLm9yaWcvZ2RiL01ha2VmaWxlLmluCTIw MTItMDEtMDMgMDU6NTM6MjUuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEw My9nZGIvTWFrZWZpbGUuaW4JMjAxMi0wMS0wMyAxNToyNDoyNS42OTM1NDM0MzUgKzAxMDAKK0BA IC0xMDMzLDcgKzEwMzMsMTYgQEAgaW5zdGFsbC1vbmx5OiBpbnN0YWxsLWdzdGFjayAkKENPTkZJ R19JTgogIAkJJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS9nZGIuMSBcCi0tCQkJJChERVNURElS KSQobWFuMWRpcikvJCR0cmFuc2Zvcm1lZF9uYW1lLjEKLSsJCQkkKERFU1RESVIpJChtYW4xZGly KS8kJHRyYW5zZm9ybWVkX25hbWUuMTsgXAorIAkJCSQoREVTVERJUikkKG1hbjFkaXIpLyQkdHJh bnNmb3JtZWRfbmFtZS4xIDsgXAorIAkJJChTSEVMTCkgJChzcmNkaXIpLy4uL21raW5zdGFsbGRp cnMgJChERVNURElSKSQoaW5jbHVkZWRpcikvZ2RiIDsgXAorLQkJJChJTlNUQUxMX0RBVEEpIGpp dC1yZWFkZXIuaCAkKERFU1RESVIpJChpbmNsdWRlZGlyKS9nZGIvaml0LXJlYWRlci5oCisrCQkk KElOU1RBTExfREFUQSkgaml0LXJlYWRlci5oICQoREVTVERJUikkKGluY2x1ZGVkaXIpL2dkYi9q aXQtcmVhZGVyLmg7IFwKICsJdHJhbnNmb3JtZWRfbmFtZT1gdD0nJChwcm9ncmFtX3RyYW5zZm9y bV9uYW1lKSc7IFwKICsJCQkgIGVjaG8gZ2RiLWFkZC1pbmRleCB8IHNlZCAtZSAiJCR0ImAgOyBc CiArCQlpZiB0ZXN0ICJ4JCR0cmFuc2Zvcm1lZF9uYW1lIiA9IHg7IHRoZW4gXApAQCAtNjAsMTMg KzYwLDEzIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9NYWtlZmlsZS5pbgogKwkJ JChJTlNUQUxMX1BST0dSQU0pICQoc3JjZGlyKS9nZGItYWRkLWluZGV4IFwKICsJCQkkKERFU1RE SVIpJChiaW5kaXIpLyQkdHJhbnNmb3JtZWRfbmFtZSQoRVhFRVhUKQogIAlAJChNQUtFKSBETz1p bnN0YWxsICJET0RJUlM9JChTVUJESVJTKSIgJChGTEFHU19UT19QQVNTKSBzdWJkaXJfZG8KLSAu UEhPTlk6IGluc3RhbGwtdHVpCi0gaW5zdGFsbC10dWk6Ci1JbmRleDogZ2RiLTcuMi41MC4yMDEw MTExNi9nZGIvZG9jL2dkYi50ZXhpbmZvCisgCisgaW5zdGFsbC1weXRob246CitJbmRleDogZ2Ri LTcuNC41MC4yMDEyMDEwMy9nZGIvZG9jL2dkYi50ZXhpbmZvCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMC0xMS0xNiAwODow NDoxOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9kb2MvZ2Ri LnRleGluZm8JMjAxMC0xMS0xNiAwODo1NjozMC4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xNTUwMCw2 ICsxNTUwMCwxNCBAQCBUaGVyZSBhcmUgY3VycmVudGx5IHNvbWUgbGltaXRhdGlvbiBvbiBpCist LS0gZ2RiLTcuNC41MC4yMDEyMDEwMy5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wMS0w MyAxNToyMDo1NC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi9k b2MvZ2RiLnRleGluZm8JMjAxMi0wMS0wMyAxNToyMzo0My4yOTUyMzE5NDYgKzAxMDAKK0BAIC0x NjIyOCw2ICsxNjIyOCwxNCBAQCBUaGVyZSBhcmUgY3VycmVudGx5IHNvbWUgbGltaXRhdGlvbiBv biBpCiAgZm9yIERXQVJGIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiwgbm90IHN0YWJzLiAgQW5kLCB0 aGV5IGRvIG5vdAogIGN1cnJlbnRseSB3b3JrIGZvciBwcm9ncmFtcyB1c2luZyBBZGEuCiAgCkBA IC04MSwxMCArODEsMTAgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2RvYy9nZGIu dGV4aW5mbwogIEBub2RlIFN5bWJvbCBFcnJvcnMKICBAc2VjdGlvbiBFcnJvcnMgUmVhZGluZyBT eW1ib2wgRmlsZXMKICAKLUluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9nZGItYWRkLWlu ZGV4CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEwMy9nZGIvZ2RiLWFkZC1pbmRleAogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAot KysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2dkYi1hZGQtaW5kZXgJMjAxMC0xMS0xNiAwODo0 Nzo0NS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi9nZGItYWRk LWluZGV4CTIwMTItMDEtMDMgMTU6MjM6NDMuMjk2MjMxOTQyICswMTAwCiBAQCAtMCwwICsxLDMw IEBACiArIyEgL2Jpbi9zaAogKwoKZGlmZiAtLWdpdCBhL2dkYi1pbXBscHRyLTY0Yml0LTFvZjIu cGF0Y2ggYi9nZGItaW1wbHB0ci02NGJpdC0xb2YyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCBlMjQ1OTVkLi4wMDAwMDAwCi0tLSBhL2dkYi1pbXBscHRyLTY0Yml0LTFvZjIu cGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUu b3JnL21sL2dkYi1wYXRjaGVzLzIwMTEtMDkvbXNnMDA0NTAuaHRtbAotU3ViamVjdDogW3BhdGNo IDEvMl0gQ29kZSBjbGVhbnVwOiBVbmlmeSBkd2FyZjJfcGVyX2N1X2FkZHJfc2l6ZSwgZHdhcmYy X3Blcl9jdV9vZmZzZXRfc2l6ZQotCi1IaSwKLQotdGhpcyBpcyBtb3JlIHJhdGhlciBmb3IgcGF0 Y2ggMi8yLCBpdCBoYXMgcG9zaXRpdmUgTG9DIGNoYW5nZSBidXQgc3RpbGwKLUkgd291bGQgZmlu ZCBpdCBhcHBsaWNhYmxlIGV2ZW4gb24gaXRzIG93bi4KLQotTm8gZnVuY3Rpb25hbGl0eSBjaGFu Z2UgaW50ZW5kZWQuCi0KLQotVGhhbmtzLAotSmFuCi0KLQotZ2RiLwotMjAxMS0wOS0yNiAgSmFu IEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JQ29kZSBjbGVhbnVw LgotCSogZHdhcmYycmVhZC5jIChwZXJfY3VfaGVhZGVyX3JlYWRfaW4pOiBOZXcgZnVuY3Rpb24u Ci0JKGR3YXJmMl9wZXJfY3VfYWRkcl9zaXplLCBkd2FyZjJfcGVyX2N1X29mZnNldF9zaXplKTog VXNlIGl0LCB3aXRoIG5ldwotCXZhcmlhYmxlcyBjdV9oZWFkZXJfbG9jYWwgYW5kIGN1X2hlYWRl cnAuCi0KLS0tLSBhL2dkYi9kd2FyZjJyZWFkLmMKLSsrKyBiL2dkYi9kd2FyZjJyZWFkLmMKLUBA IC0xNTE4NywyNiArMTUxODcsNDIgQEAgZHdhcmYyX3Blcl9jdV9vYmpmaWxlIChzdHJ1Y3QgZHdh cmYyX3Blcl9jdV9kYXRhICpwZXJfY3UpCi0gICByZXR1cm4gb2JqZmlsZTsKLSB9Ci0gCi0rLyog UmV0dXJuIGNvbXBfdW5pdF9oZWFkIGZvciBQRVJfQ1UsIGVpdGhlciBhbHJlYWR5IGF2YWlsYWJs ZSBpbiBQRVJfQ1UtPkNVCi0rICAgKENVX0hFQURFUlAgaXMgdW51c2VkIGluIHN1Y2ggY2FzZSkg b3IgcHJlcGFyZSBhIHRlbXBvcmFyeSBjb3B5IGF0Ci0rICAgQ1VfSEVBREVSUCBmaXJzdC4gICov Ci0rCi0rc3RhdGljIGNvbnN0IHN0cnVjdCBjb21wX3VuaXRfaGVhZCAqCi0rcGVyX2N1X2hlYWRl cl9yZWFkX2luIChzdHJ1Y3QgY29tcF91bml0X2hlYWQgKmN1X2hlYWRlcnAsCi0rCQkgICAgICAg c3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1KQotK3sKLSsgIHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlOwotKyAgc3RydWN0IGR3YXJmMl9wZXJfb2JqZmlsZSAqcGVyX29iamZpbGU7Ci0r ICBnZGJfYnl0ZSAqaW5mb19wdHI7Ci0rCi0rICBpZiAocGVyX2N1LT5jdSkKLSsgICAgcmV0dXJu ICZwZXJfY3UtPmN1LT5oZWFkZXI7Ci0rCi0rICBvYmpmaWxlID0gcGVyX2N1LT5vYmpmaWxlOwot KyAgcGVyX29iamZpbGUgPSBvYmpmaWxlX2RhdGEgKG9iamZpbGUsIGR3YXJmMl9vYmpmaWxlX2Rh dGFfa2V5KTsKLSsgIGluZm9fcHRyID0gcGVyX29iamZpbGUtPmluZm8uYnVmZmVyICsgcGVyX2N1 LT5vZmZzZXQ7Ci0rCi0rICBtZW1zZXQgKGN1X2hlYWRlcnAsIDAsIHNpemVvZiAoKmN1X2hlYWRl cnApKTsKLSsgIHJlYWRfY29tcF91bml0X2hlYWQgKGN1X2hlYWRlcnAsIGluZm9fcHRyLCBvYmpm aWxlLT5vYmZkKTsKLSsKLSsgIHJldHVybiBjdV9oZWFkZXJwOwotK30KLSsKLSAvKiBSZXR1cm4g dGhlIGFkZHJlc3Mgc2l6ZSBnaXZlbiBpbiB0aGUgY29tcGlsYXRpb24gdW5pdCBoZWFkZXIgZm9y IENVLiAgKi8KLSAKLSBDT1JFX0FERFIKLSBkd2FyZjJfcGVyX2N1X2FkZHJfc2l6ZSAoc3RydWN0 IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1KQotIHsKLS0gIGlmIChwZXJfY3UtPmN1KQotLSAg ICByZXR1cm4gcGVyX2N1LT5jdS0+aGVhZGVyLmFkZHJfc2l6ZTsKLS0gIGVsc2UKLS0gICAgewot LSAgICAgIC8qIElmIHRoZSBDVSBpcyBub3QgY3VycmVudGx5IHJlYWQgaW4sIHdlIHJlLXJlYWQg aXRzIGhlYWRlci4gICovCi0tICAgICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBwZXJfY3Ut Pm9iamZpbGU7Ci0tICAgICAgc3RydWN0IGR3YXJmMl9wZXJfb2JqZmlsZSAqcGVyX29iamZpbGUK LS0JPSBvYmpmaWxlX2RhdGEgKG9iamZpbGUsIGR3YXJmMl9vYmpmaWxlX2RhdGFfa2V5KTsKLS0g ICAgICBnZGJfYnl0ZSAqaW5mb19wdHIgPSBwZXJfb2JqZmlsZS0+aW5mby5idWZmZXIgKyBwZXJf Y3UtPm9mZnNldDsKLS0gICAgICBzdHJ1Y3QgY29tcF91bml0X2hlYWQgY3VfaGVhZGVyOwotKyAg c3RydWN0IGNvbXBfdW5pdF9oZWFkIGN1X2hlYWRlcl9sb2NhbDsKLSsgIGNvbnN0IHN0cnVjdCBj b21wX3VuaXRfaGVhZCAqY3VfaGVhZGVycDsKLSAKLS0gICAgICBtZW1zZXQgKCZjdV9oZWFkZXIs IDAsIHNpemVvZiBjdV9oZWFkZXIpOwotLSAgICAgIHJlYWRfY29tcF91bml0X2hlYWQgKCZjdV9o ZWFkZXIsIGluZm9fcHRyLCBvYmpmaWxlLT5vYmZkKTsKLS0gICAgICByZXR1cm4gY3VfaGVhZGVy LmFkZHJfc2l6ZTsKLS0gICAgfQotKyAgY3VfaGVhZGVycCA9IHBlcl9jdV9oZWFkZXJfcmVhZF9p biAoJmN1X2hlYWRlcl9sb2NhbCwgcGVyX2N1KTsKLSsKLSsgIHJldHVybiBjdV9oZWFkZXJwLT5h ZGRyX3NpemU7Ci0gfQotIAotIC8qIFJldHVybiB0aGUgb2Zmc2V0IHNpemUgZ2l2ZW4gaW4gdGhl IGNvbXBpbGF0aW9uIHVuaXQgaGVhZGVyIGZvciBDVS4gICovCi1AQCAtMTUyMTQsMjEgKzE1MjMw LDEyIEBAIGR3YXJmMl9wZXJfY3VfYWRkcl9zaXplIChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRh ICpwZXJfY3UpCi0gaW50Ci0gZHdhcmYyX3Blcl9jdV9vZmZzZXRfc2l6ZSAoc3RydWN0IGR3YXJm Ml9wZXJfY3VfZGF0YSAqcGVyX2N1KQotIHsKLS0gIGlmIChwZXJfY3UtPmN1KQotLSAgICByZXR1 cm4gcGVyX2N1LT5jdS0+aGVhZGVyLm9mZnNldF9zaXplOwotLSAgZWxzZQotLSAgICB7Ci0tICAg ICAgLyogSWYgdGhlIENVIGlzIG5vdCBjdXJyZW50bHkgcmVhZCBpbiwgd2UgcmUtcmVhZCBpdHMg aGVhZGVyLiAgKi8KLS0gICAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IHBlcl9jdS0+b2Jq ZmlsZTsKLS0gICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9vYmpmaWxlICpwZXJfb2JqZmlsZQotLQk9 IG9iamZpbGVfZGF0YSAob2JqZmlsZSwgZHdhcmYyX29iamZpbGVfZGF0YV9rZXkpOwotLSAgICAg IGdkYl9ieXRlICppbmZvX3B0ciA9IHBlcl9vYmpmaWxlLT5pbmZvLmJ1ZmZlciArIHBlcl9jdS0+ b2Zmc2V0OwotLSAgICAgIHN0cnVjdCBjb21wX3VuaXRfaGVhZCBjdV9oZWFkZXI7Ci0rICBzdHJ1 Y3QgY29tcF91bml0X2hlYWQgY3VfaGVhZGVyX2xvY2FsOwotKyAgY29uc3Qgc3RydWN0IGNvbXBf dW5pdF9oZWFkICpjdV9oZWFkZXJwOwotIAotLSAgICAgIG1lbXNldCAoJmN1X2hlYWRlciwgMCwg c2l6ZW9mIGN1X2hlYWRlcik7Ci0tICAgICAgcmVhZF9jb21wX3VuaXRfaGVhZCAoJmN1X2hlYWRl ciwgaW5mb19wdHIsIG9iamZpbGUtPm9iZmQpOwotLSAgICAgIHJldHVybiBjdV9oZWFkZXIub2Zm c2V0X3NpemU7Ci0tICAgIH0KLSsgIGN1X2hlYWRlcnAgPSBwZXJfY3VfaGVhZGVyX3JlYWRfaW4g KCZjdV9oZWFkZXJfbG9jYWwsIHBlcl9jdSk7Ci0rCi0rICByZXR1cm4gY3VfaGVhZGVycC0+b2Zm c2V0X3NpemU7Ci0gfQotIAotIC8qIFJldHVybiB0aGUgdGV4dCBvZmZzZXQgb2YgdGhlIENVLiAg VGhlIHJldHVybmVkIG9mZnNldCBjb21lcyBmcm9tCi0KCmRpZmYgLS1naXQgYS9nZGItaW1wbHB0 ci02NGJpdC0yb2YyLnBhdGNoIGIvZ2RiLWltcGxwdHItNjRiaXQtMm9mMi5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDE4MDY3NC4uMDAwMDAwMAotLS0gYS9nZGItaW1wbHB0 ci02NGJpdC0yb2YyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDExICswLDAgQEAKLWh0dHA6 Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDExLTA5L21zZzAwNDUxLmh0bWwKLVN1 YmplY3Q6IFtwYXRjaCAyLzJdIEZpeCBEV19PUF9HTlVfaW1wbGljaXRfcG9pbnRlciBmb3IgRFdB UkYzMiB2Mysgb24gNjQtYml0IGFyY2hlcwotCi1IaSwKLQotb24gNjQtYml0IHRhcmdldHMgRFdB UkYtMysgaXMgdXNlZCBEV19PUF9HTlVfaW1wbGljaXRfcG9pbnRlciBkb2VzIG5vdCB3b3JrLgot Ci1EV0FSRi0yIHNheXM6Ci0JVGhpcyB0eXBlIG9mIHJlZmVyZW5jZSAoRFdfRk9STV9yZWZfYWRk cikgaXMgdGhlIHNpemUgb2YgYW4gYWRkcmVzcyBvbgotCXRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJl OyAKLURXQVJGLTMgc2F5czoKLQkxLjUuMSBVcHdhcmQgQ29tcGF0aWJpbGl0eQotCVJlZmVyZW5j ZXMgdGhhdCB1c2UgdGhlIGF0dHJpYnV0ZSBmb3JtIERXX0ZPUk1fcmVmX2FkZHIgYXJlIHNwZWNp ZmllZAotCXRvIGJlIGZvdXIgYnl0ZXMgaW4gdGhlIERXQVJGIDMyLWJpdCBmb3JtYXQgYW5kIGVp Z2h0IGJ5dGVzIGluIHRoZQotCURXQVJGIDY0LWJpdCBmb3JtYXQsIHdoaWxlIERXQVJGIFZlcnNp b24gMiBzcGVjaWZpZXMgdGhhdCBzdWNoCi0JcmVmZXJlbmNlcyBoYXZlIHRoZSBzYW1lIHNpemUg YXMgYW4gYWRkcmVzcyBvbiB0aGUgdGFyZ2V0IHN5c3RlbSAoc2VlCi0JU2VjdGlvbnMgNy40IGFu ZCA3LjUuNCkuCi0KLQkoRFdfRk9STV9yZWZfYWRkcikKLQlJbiB0aGUgMzItYml0IERXQVJGIGZv cm1hdCwgdGhpcyBvZmZzZXQgaXMgYSA0LWJ5dGUgdW5zaWduZWQgdmFsdWU7IGluCi0JdGhlIDY0 LWJpdCBEV0FSRiBmb3JtYXQsIGl0IGlzIGFuIDgtYnl0ZSB1bnNpZ25lZCB2YWx1ZSAoc2VlIFNl Y3Rpb24KLQk3LjQpLgotCi1HREIgY3VycmVudGx5IHBhcnNlZCBEV19PUF9HTlVfaW1wbGljaXRf cG9pbnRlciB0aGUgRFdBUkYtMiB3YXksIGJlaW5nCi1pbmNvbXBhdGlibGUgd2l0aCBEV0FSRi0z Ky4KLQotSSB0aGluayBEV19PUF9HTlVfaW1wbGljaXRfcG9pbnRlciBkb2VzIG5vdCBtYWtlIHNl bnNlIHRvIGJlIHVzZWQgZnJvbQotLmRlYnVnX2ZyYW1lIChEV0FSRi01IGlzIG5vdCB5ZXQgcmVs ZWFzZWQgdG8gc2F5IG1vcmUpIHNvIGZvciAuZGVidWdfZnJhbWUgaXRzCi11c2UgaXMganVzdCBu b3QgcGVybWl0dGVkICh0aGUgY29kZSB3b3VsZCBiZSBtb3JlIGNvbXBsaWNhdGVkIG90aGVyd2lz ZSkuCi0KLU5vIHJlZ3Jlc3Npb25zIG9uIHt4ODZfNjQseDg2XzY0LW0zMixpNjg2fS1mZWRvcmEx NnByZS1saW51eC1nbnUuCi0KLQotVGhhbmtzLAotSmFuCi0KLQotZ2RiLwotMjAxMS0wOS0yNiAg SmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JRml4IERXX09Q X0dOVV9pbXBsaWNpdF9wb2ludGVyIGZvciBEV0FSRjMyIHYzKyBvbiA2NC1iaXQgYXJjaGVzLgot CSogZHdhcmYyLWZyYW1lLmMgKGV4ZWN1dGVfc3RhY2tfb3ApOiBJbml0aWFsaXplIGN0eC0+cmVm X2FkZHJfc2l6ZS4KLQkqIGR3YXJmMmV4cHIuYyAoZXhlY3V0ZV9zdGFja19vcCkgPERXX09QX0dO VV9pbXBsaWNpdF9wb2ludGVyPjogVXNlCi0JY3R4LT5yZWZfYWRkcl9zaXplLiAgSGFuZGxlIGl0 cyBpbnZhbGlkIHZhbHVlLgotCSogZHdhcmYyZXhwci5oIChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250 ZXh0KTogTmV3IGZpZWxkIHJlZl9hZGRyX3NpemUuCi0JKiBkd2FyZjJsb2MuYyAoZHdhcmYyX2V2 YWx1YXRlX2xvY19kZXNjX2Z1bGwpCi0JKGR3YXJmMl9sb2NfZGVzY19uZWVkc19mcmFtZSk6IElu aXRpYWxpemUgY3R4LT5yZWZfYWRkcl9zaXplLgotCSogZHdhcmYybG9jLmggKGR3YXJmMl9wZXJf Y3VfcmVmX2FkZHJfc2l6ZSk6IE5ldyBkZWNsYXJhdGlvbi4KLQkqIGR3YXJmMnJlYWQuYyAoZGVj b2RlX2xvY2Rlc2MpOiBJbml0aWFsaXplIGN0eC0+cmVmX2FkZHJfc2l6ZS4KLQkoZHdhcmYyX3Bl cl9jdV9yZWZfYWRkcl9zaXplKTogTmV3IGZ1bmN0aW9uLgotCi1nZGIvdGVzdHN1aXRlLwotMjAx MS0wOS0yNiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0J Rml4IERXX09QX0dOVV9pbXBsaWNpdF9wb2ludGVyIGZvciBEV0FSRjMyIHYzKyBvbiA2NC1iaXQg YXJjaGVzLgotCSogZ2RiLmR3YXJmMi9pbXBscHRyLTY0Yml0LlM6IE5ldyBmaWxlLgotCSogZ2Ri LmR3YXJmMi9pbXBscHRyLTY0Yml0LmV4cDogTmV3IGZpbGUuCi0KLS0tLSBhL2dkYi9kd2FyZjIt ZnJhbWUuYwotKysrIGIvZ2RiL2R3YXJmMi1mcmFtZS5jCi1AQCAtMzcxLDYgKzM3MSw3IEBAIGV4 ZWN1dGVfc3RhY2tfb3AgKGNvbnN0IGdkYl9ieXRlICpleHAsIFVMT05HRVNUIGxlbiwgaW50IGFk ZHJfc2l6ZSwKLSAKLSAgIGN0eC0+Z2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoICh0aGlzX2ZyYW1l KTsKLSAgIGN0eC0+YWRkcl9zaXplID0gYWRkcl9zaXplOwotKyAgY3R4LT5yZWZfYWRkcl9zaXpl ID0gLTE7Ci0gICBjdHgtPm9mZnNldCA9IG9mZnNldDsKLSAgIGN0eC0+YmF0b24gPSB0aGlzX2Zy YW1lOwotICAgY3R4LT5mdW5jcyA9ICZkd2FyZjJfZnJhbWVfY3R4X2Z1bmNzOwotLS0tIGEvZ2Ri L2R3YXJmMmV4cHIuYwotKysrIGIvZ2RiL2R3YXJmMmV4cHIuYwotQEAgLTcwOSwxMCArNzA5LDE0 IEBAIGV4ZWN1dGVfc3RhY2tfb3AgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwKLSAJ ICAgIFVMT05HRVNUIGRpZTsKLSAJICAgIExPTkdFU1QgbGVuOwotIAotKwkgICAgaWYgKGN0eC0+ cmVmX2FkZHJfc2l6ZSA9PSAtMSkKLSsJICAgICAgZXJyb3IgKF8oIkRXQVJGLTIgZXhwcmVzc2lv biBlcnJvcjogRFdfT1BfR05VX2ltcGxpY2l0X3BvaW50ZXIgIgotKwkJICAgICAgICJpcyBub3Qg YWxsb3dlZCBpbiBmcmFtZSBjb250ZXh0IikpOwotKwotIAkgICAgLyogVGhlIHJlZmVycmVkLXRv IERJRS4gICovCi0tCSAgICBjdHgtPmxlbiA9IGV4dHJhY3RfdW5zaWduZWRfaW50ZWdlciAob3Bf cHRyLCBjdHgtPmFkZHJfc2l6ZSwKLSsJICAgIGN0eC0+bGVuID0gZXh0cmFjdF91bnNpZ25lZF9p bnRlZ2VyIChvcF9wdHIsIGN0eC0+cmVmX2FkZHJfc2l6ZSwKLSAJCQkJCQkgYnl0ZV9vcmRlcik7 Ci0tCSAgICBvcF9wdHIgKz0gY3R4LT5hZGRyX3NpemU7Ci0rCSAgICBvcF9wdHIgKz0gY3R4LT5y ZWZfYWRkcl9zaXplOwotIAotIAkgICAgLyogVGhlIGJ5dGUgb2Zmc2V0IGludG8gdGhlIGRhdGEu ICAqLwotIAkgICAgb3BfcHRyID0gcmVhZF9zbGViMTI4IChvcF9wdHIsIG9wX2VuZCwgJmxlbik7 Ci0tLS0gYS9nZGIvZHdhcmYyZXhwci5oCi0rKysgYi9nZGIvZHdhcmYyZXhwci5oCi1AQCAtMTI1 LDYgKzEyNSwxMCBAQCBzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0Ci0gICAvKiBUYXJnZXQgYWRk cmVzcyBzaXplIGluIGJ5dGVzLiAgKi8KLSAgIGludCBhZGRyX3NpemU7Ci0gCi0rICAvKiBEV19G T1JNX3JlZl9hZGRyIHNpemUgaW4gYnl0ZXMuICBJZiAtMSBEV0FSRiBpcyBleGVjdXRlZCBmcm9t IGEgZnJhbWUKLSsgICAgIGNvbnRleHQgYW5kIG9wZXJhdGlvbnMgZGVwZW5kaW5nIG9uIERXX0ZP Uk1fcmVmX2FkZHIgYXJlIG5vdCBhbGxvd2VkLiAgKi8KLSsgIGludCByZWZfYWRkcl9zaXplOwot KwotICAgLyogT2Zmc2V0IHVzZWQgdG8gcmVsb2NhdGUgRFdfT1BfYWRkciBhcmd1bWVudC4gICov Ci0gICBDT1JFX0FERFIgb2Zmc2V0OwotIAotLS0tIGEvZ2RiL2R3YXJmMmxvYy5jCi0rKysgYi9n ZGIvZHdhcmYybG9jLmMKLUBAIC0xMTE4LDYgKzExMTgsNyBAQCBkd2FyZjJfZXZhbHVhdGVfbG9j X2Rlc2NfZnVsbCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwK LSAKLSAgIGN0eC0+Z2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOwotICAgY3R4 LT5hZGRyX3NpemUgPSBkd2FyZjJfcGVyX2N1X2FkZHJfc2l6ZSAocGVyX2N1KTsKLSsgIGN0eC0+ cmVmX2FkZHJfc2l6ZSA9IGR3YXJmMl9wZXJfY3VfcmVmX2FkZHJfc2l6ZSAocGVyX2N1KTsKLSAg IGN0eC0+b2Zmc2V0ID0gZHdhcmYyX3Blcl9jdV90ZXh0X29mZnNldCAocGVyX2N1KTsKLSAgIGN0 eC0+YmF0b24gPSAmYmF0b247Ci0gICBjdHgtPmZ1bmNzID0gJmR3YXJmX2V4cHJfY3R4X2Z1bmNz OwotQEAgLTEzOTgsNiArMTM5OSw3IEBAIGR3YXJmMl9sb2NfZGVzY19uZWVkc19mcmFtZSAoY29u c3QgZ2RiX2J5dGUgKmRhdGEsIHVuc2lnbmVkIHNob3J0IHNpemUsCi0gCi0gICBjdHgtPmdkYmFy Y2ggPSBnZXRfb2JqZmlsZV9hcmNoIChvYmpmaWxlKTsKLSAgIGN0eC0+YWRkcl9zaXplID0gZHdh cmYyX3Blcl9jdV9hZGRyX3NpemUgKHBlcl9jdSk7Ci0rICBjdHgtPnJlZl9hZGRyX3NpemUgPSBk d2FyZjJfcGVyX2N1X3JlZl9hZGRyX3NpemUgKHBlcl9jdSk7Ci0gICBjdHgtPm9mZnNldCA9IGR3 YXJmMl9wZXJfY3VfdGV4dF9vZmZzZXQgKHBlcl9jdSk7Ci0gICBjdHgtPmJhdG9uID0gJmJhdG9u OwotICAgY3R4LT5mdW5jcyA9ICZuZWVkc19mcmFtZV9jdHhfZnVuY3M7Ci0tLS0gYS9nZGIvZHdh cmYybG9jLmgKLSsrKyBiL2dkYi9kd2FyZjJsb2MuaAotQEAgLTM5LDYgKzM5LDEwIEBAIHN0cnVj dCBvYmpmaWxlICpkd2FyZjJfcGVyX2N1X29iamZpbGUgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2Rh dGEgKmN1KTsKLSAvKiBSZXR1cm4gdGhlIGFkZHJlc3Mgc2l6ZSBnaXZlbiBpbiB0aGUgY29tcGls YXRpb24gdW5pdCBoZWFkZXIgZm9yIENVLiAgKi8KLSBDT1JFX0FERFIgZHdhcmYyX3Blcl9jdV9h ZGRyX3NpemUgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1KTsKLSAKLSsvKiBSZXR1cm4g dGhlIERXX0ZPUk1fcmVmX2FkZHIgc2l6ZSBnaXZlbiBpbiB0aGUgY29tcGlsYXRpb24gdW5pdCBo ZWFkZXIgZm9yCi0rICAgQ1UuICAqLwotK2ludCBkd2FyZjJfcGVyX2N1X3JlZl9hZGRyX3NpemUg KHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1KTsKLSsKLSAvKiBSZXR1cm4gdGhlIG9mZnNl dCBzaXplIGdpdmVuIGluIHRoZSBjb21waWxhdGlvbiB1bml0IGhlYWRlciBmb3IgQ1UuICAqLwot IGludCBkd2FyZjJfcGVyX2N1X29mZnNldF9zaXplIChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRh ICpjdSk7Ci0gCi0tLS0gYS9nZGIvZHdhcmYycmVhZC5jCi0rKysgYi9nZGIvZHdhcmYycmVhZC5j Ci1AQCAtMTUyMzgsNiArMTUyMzksMjIgQEAgZHdhcmYyX3Blcl9jdV9vZmZzZXRfc2l6ZSAoc3Ry dWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1KQotICAgcmV0dXJuIGN1X2hlYWRlcnAtPm9m ZnNldF9zaXplOwotIH0KLSAKLSsvKiBTZWUgaXRzIGR3YXJmMmxvYy5oIGRlY2xhcmF0aW9uLiAg Ki8KLSsKLStpbnQKLStkd2FyZjJfcGVyX2N1X3JlZl9hZGRyX3NpemUgKHN0cnVjdCBkd2FyZjJf cGVyX2N1X2RhdGEgKnBlcl9jdSkKLSt7Ci0rICBzdHJ1Y3QgY29tcF91bml0X2hlYWQgY3VfaGVh ZGVyX2xvY2FsOwotKyAgY29uc3Qgc3RydWN0IGNvbXBfdW5pdF9oZWFkICpjdV9oZWFkZXJwOwot KwotKyAgY3VfaGVhZGVycCA9IHBlcl9jdV9oZWFkZXJfcmVhZF9pbiAoJmN1X2hlYWRlcl9sb2Nh bCwgcGVyX2N1KTsKLSsKLSsgIGlmIChjdV9oZWFkZXJwLT52ZXJzaW9uID09IDIpCi0rICAgIHJl dHVybiBjdV9oZWFkZXJwLT5hZGRyX3NpemU7Ci0rICBlbHNlCi0rICAgIHJldHVybiBjdV9oZWFk ZXJwLT5vZmZzZXRfc2l6ZTsKLSt9Ci0rCi0gLyogUmV0dXJuIHRoZSB0ZXh0IG9mZnNldCBvZiB0 aGUgQ1UuICBUaGUgcmV0dXJuZWQgb2Zmc2V0IGNvbWVzIGZyb20KLSAgICB0aGlzIENVJ3Mgb2Jq ZmlsZS4gIElmIHRoaXMgb2JqZmlsZSBjYW1lIGZyb20gYSBzZXBhcmF0ZSBkZWJ1Z2luZm8KLSAg ICBmaWxlLCB0aGVuIHRoZSBvZmZzZXQgbWF5IGJlIGRpZmZlcmVudCBmcm9tIHRoZSBjb3JyZXNw b25kaW5nCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvaW1w bHB0ci02NGJpdC5TCi1AQCAtMCwwICsxLDE5NyBAQAotKy8qIENvcHlyaWdodCAyMDEwLCAyMDEx IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot KyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsJLnNlY3Rpb24JLmRlYnVnX2luZm8KLStkOgotKwkv KiBMZW5ndGggb2YgQ29tcGlsYXRpb24gVW5pdCBJbmZvICovCi0rI2lmIE9GRlNFVF9TSVpFID09 IDQKLSsjIGRlZmluZSBPRkZTRVQgLjRieXRlCi0rCS40Ynl0ZQlkZWJ1Z19lbmQgLSAxZgotKyNl bGlmIE9GRlNFVF9TSVpFID09IDgKLSsjIGRlZmluZSBPRkZTRVQgLjhieXRlCi0rCS40Ynl0ZQkw eGZmZmZmZmZmCi0rCS44Ynl0ZQlkZWJ1Z19lbmQgLSAxZgotKyNlbHNlCi0rIyBlcnJvcgotKyNl bmRpZgotKyNpZiBBRERSX1NJWkUgPT0gNAotKyMgZGVmaW5lIEFERFIgLjRieXRlCi0rI2VsaWYg QUREUl9TSVpFID09IDgKLSsjIGRlZmluZSBBRERSIC44Ynl0ZQotKyNlbHNlCi0rIyBlcnJvcgot KyNlbmRpZgotKyNpZiBSRUZfQUREUl9TSVpFID09IDQKLSsjIGRlZmluZSBSRUZfQUREUiAuNGJ5 dGUKLSsjZWxpZiBSRUZfQUREUl9TSVpFID09IDgKLSsjIGRlZmluZSBSRUZfQUREUiAuOGJ5dGUK LSsjZWxzZQotKyMgZXJyb3IKLSsjZW5kaWYKLSsxOgotKwkuMmJ5dGUJRFdBUkZfVkVSU0lPTgkv KiBEV0FSRiB2ZXJzaW9uIG51bWJlciAqLwotKwlPRkZTRVQJLkxkZWJ1Z19hYmJyZXYwCS8qIE9m ZnNldCBJbnRvIEFiYnJldi4gU2VjdGlvbiAqLwotKwkuYnl0ZQlBRERSX1NJWkUJLyogUG9pbnRl ciBTaXplIChpbiBieXRlcykgKi8KLSsKLSsJLnVsZWIxMjggMHgxCS8qIChESUUgKDB4YikgRFdf VEFHX2NvbXBpbGVfdW5pdCkgKi8KLSsJLmFzY2lpICJHTlUgQyA0LjQuM1wwIgkvKiBEV19BVF9w cm9kdWNlciAqLwotKwkuYnl0ZQkweDEJLyogRFdfQVRfbGFuZ3VhZ2UgKi8KLSsJLmFzY2lpICIx LmNcMCIJLyogRFdfQVRfbmFtZSAqLwotKwotKy5MdHlwZV9pbnQ6Ci0rCS51bGViMTI4IDB4Nwkv KiBEV19UQUdfYmFzZV90eXBlICovCi0rCS5ieXRlCTB4NAkvKiBEV19BVF9ieXRlX3NpemUgKi8K LSsJLmJ5dGUJMHg1CS8qIERXX0FUX2VuY29kaW5nICovCi0rCS5hc2NpaSAiaW50XDAiCS8qIERX X0FUX25hbWUgKi8KLSsKLSsuTHR5cGVfc3RydWN0OgotKwkudWxlYjEyOCAweDIJLyogRFdfVEFH X3N0cnVjdHVyZV90eXBlICovCi0rCS5hc2NpaSAic1wwIgkvKiBEV19BVF9uYW1lICovCi0rCS5i eXRlCTQJLyogRFdfQVRfYnl0ZV9zaXplICovCi0rCi0rCS51bGViMTI4IDB4MwkvKiBEV19UQUdf bWVtYmVyICovCi0rCS5hc2NpaSAiZlwwIgkvKiBEV19BVF9uYW1lICovCi0rCS40Ynl0ZQkuTHR5 cGVfaW50IC0gZAkvKiBEV19BVF90eXBlICovCi0rCS5ieXRlCTAJLyogRFdfQVRfZGF0YV9tZW1i ZXJfbG9jYXRpb24gKi8KLSsKLSsJLmJ5dGUJMHgwCS8qIGVuZCBvZiBjaGlsZHJlbiBvZiBEV19U QUdfc3RydWN0dXJlX3R5cGUgKi8KLSsKLSsJLnVsZWIxMjgJNgkJCS8qIEFiYnJldjogRFdfVEFH X3N1YnByb2dyYW0gKi8KLSsJLmFzY2lpCQkibWFpblwwIgkJLyogRFdfQVRfbmFtZSAqLwotKwlB RERSCQltYWluCQkJLyogRFdfQVRfbG93X3BjICovCi0rCUFERFIJCW1haW4gKyAweDEwMAkJLyog RFdfQVRfaGlnaF9wYyAqLwotKwkuNGJ5dGUJCS5MdHlwZV9pbnQgLSBkCQkvKiBEV19BVF90eXBl ICovCi0rCS5ieXRlCQkxCQkJLyogRFdfQVRfZXh0ZXJuYWwgKi8KLSsKLSsuTHR5cGVfc3RydWN0 cHRyOgotKwkudWxlYjEyOCAweDUJLyogRFdfVEFHX3BvaW50ZXJfdHlwZSAqLwotKwkuYnl0ZQlB RERSX1NJWkUJLyogRFdfQVRfYnl0ZV9zaXplICovCi0rCS40Ynl0ZQkuTHR5cGVfc3RydWN0IC0g ZAkvKiBEV19BVF90eXBlICovCi0rCi0rLkx2YXJfb3V0OgotKwkudWxlYjEyOCAweDQJLyogKERX X1RBR192YXJpYWJsZSkgKi8KLSsJLmFzY2lpICJ2XDAiCS8qIERXX0FUX25hbWUgKi8KLSsJLmJ5 dGUJMmYgLSAxZgkvKiBEV19BVF9sb2NhdGlvbjogRFdfRk9STV9ibG9jazEgKi8KLSsxOgotKwku Ynl0ZQkweDllCS8qIERXX09QX2ltcGxpY2l0X3ZhbHVlICovCi0rCS51bGViMTI4ICAyZiAtIDNm Ci0rMzoKLSsJLmJ5dGUJMSwgMSwgMSwgMQotKzI6Ci0rCS40Ynl0ZQkuTHR5cGVfc3RydWN0IC0g ZAkvKiBEV19BVF90eXBlICovCi0rCi0rCS51bGViMTI4IDB4NAkvKiAoRFdfVEFHX3ZhcmlhYmxl KSAqLwotKwkuYXNjaWkgInBcMCIJLyogRFdfQVRfbmFtZSAqLwotKwkuYnl0ZQkyZiAtIDFmCS8q IERXX0FUX2xvY2F0aW9uOiBEV19GT1JNX2Jsb2NrMSAqLwotKzE6Ci0rCS5ieXRlCTB4ZjIJLyog RFdfT1BfR05VX2ltcGxpY2l0X3BvaW50ZXIgKi8KLSsJUkVGX0FERFIJLkx2YXJfb3V0IC0gZAkv KiByZWZlcmVuY2VkIERJRSAqLwotKwkuc2xlYjEyOAkwCS8qIG9mZnNldCAqLwotKzI6Ci0rCS40 Ynl0ZQkuTHR5cGVfc3RydWN0cHRyIC0gZAkvKiBEV19BVF90eXBlICovCi0rCi0rCS5ieXRlCTB4 MAkvKiBlbmQgb2YgY2hpbGRyZW4gb2YgbWFpbiAqLwotKwotKwkuYnl0ZQkweDAJLyogZW5kIG9m IGNoaWxkcmVuIG9mIENVICovCi0rZGVidWdfZW5kOgotKwotKwkuc2VjdGlvbgkuZGVidWdfYWJi cmV2Ci0rLkxkZWJ1Z19hYmJyZXYwOgotKwotKwkudWxlYjEyOCAweDEJLyogKGFiYnJldiBjb2Rl KSAqLwotKwkudWxlYjEyOCAweDExCS8qIChUQUc6IERXX1RBR19jb21waWxlX3VuaXQpICovCi0r CS5ieXRlCTB4MQkvKiBEV19jaGlsZHJlbl95ZXMgKi8KLSsJLnVsZWIxMjggMHgyNQkvKiAoRFdf QVRfcHJvZHVjZXIpICovCi0rCS51bGViMTI4IDB4OAkvKiAoRFdfRk9STV9zdHJpbmcpICovCi0r CS51bGViMTI4IDB4MTMJLyogKERXX0FUX2xhbmd1YWdlKSAqLwotKwkudWxlYjEyOCAweGIJLyog KERXX0ZPUk1fZGF0YTEpICovCi0rCS51bGViMTI4IDB4MwkvKiAoRFdfQVRfbmFtZSkgKi8KLSsJ LnVsZWIxMjggMHg4CS8qIChEV19GT1JNX3N0cmluZykgKi8KLSsJLmJ5dGUJMHgwCi0rCS5ieXRl CTB4MAotKwotKwkudWxlYjEyOCAweDIJLyogKGFiYnJldiBjb2RlKSAqLwotKwkudWxlYjEyOCAw eDEzCS8qIChUQUc6IERXX1RBR19zdHJ1Y3R1cmVfdHlwZSkgKi8KLSsJLmJ5dGUJMHgxCS8qIERX X2NoaWxkcmVuX3llcyAqLwotKwkudWxlYjEyOCAweDMJLyogKERXX0FUX25hbWUpICovCi0rCS51 bGViMTI4IDB4OAkvKiAoRFdfRk9STV9zdHJpbmcpICovCi0rCS51bGViMTI4IDB4YgkvKiAoRFdf QVRfYnl0ZV9zaXplKSAqLwotKwkudWxlYjEyOCAweGIJLyogKERXX0ZPUk1fZGF0YTEpICovCi0r CS5ieXRlCTAKLSsJLmJ5dGUJMAotKwotKwkudWxlYjEyOCAweDMJLyogKGFiYnJldiBjb2RlKSAq LwotKwkudWxlYjEyOCAweGQJLyogKFRBRzogRFdfVEFHX21lbWJlcikgKi8KLSsJLmJ5dGUJMAkv KiBEV19jaGlsZHJlbl9ubyAqLwotKwkudWxlYjEyOCAweDMJLyogKERXX0FUX25hbWUpICovCi0r CS51bGViMTI4IDB4OAkvKiAoRFdfRk9STV9zdHJpbmcpICovCi0rCS51bGViMTI4IDB4NDkJLyog KERXX0FUX3R5cGUpICovCi0rCS51bGViMTI4IDB4MTMJLyogKERXX0ZPUk1fcmVmNCkgKi8KLSsJ LnVsZWIxMjggMHgzOAkvKiAoRFdfQVRfZGF0YV9tZW1iZXJfbG9jYXRpb24pICovCi0rCS51bGVi MTI4IDB4YgkvKiAoRFdfRk9STV9kYXRhMSkgKi8KLSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCi0r CS51bGViMTI4IDB4NAkvKiAoYWJicmV2IGNvZGUpICovCi0rCS51bGViMTI4IDB4MzQJLyogKFRB RzogRFdfVEFHX3ZhcmlhYmxlKSAqLwotKwkuYnl0ZQkweDAJLyogRFdfY2hpbGRyZW5feWVzICov Ci0rCS51bGViMTI4IDB4MwkvKiAoRFdfQVRfbmFtZSkgKi8KLSsJLnVsZWIxMjggMHg4CS8qIChE V19GT1JNX3N0cmluZykgKi8KLSsJLnVsZWIxMjggMHgwMgkvKiAoRFdfQVRfbG9jYXRpb24pICov Ci0rCS51bGViMTI4IDB4YQkvKiAoRFdfRk9STV9ibG9jazEpICovCi0rCS51bGViMTI4IDB4NDkJ LyogKERXX0FUX3R5cGUpICovCi0rCS51bGViMTI4IDB4MTMJLyogKERXX0ZPUk1fcmVmNCkgKi8K LSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwotKwkudWxlYjEyOCAweDUJLyogKGFiYnJldiBj b2RlKSAqLwotKwkudWxlYjEyOCAweGYJLyogKFRBRzogRFdfVEFHX3BvaW50ZXJfdHlwZSkgKi8K LSsJLmJ5dGUJMHgwCS8qIERXX2NoaWxkcmVuX25vICovCi0rCS51bGViMTI4IDB4YgkvKiAoRFdf QVRfYnl0ZV9zaXplKSAqLwotKwkudWxlYjEyOCAweGIJLyogKERXX0ZPUk1fZGF0YTEpICovCi0r CS51bGViMTI4IDB4NDkJLyogKERXX0FUX3R5cGUpICovCi0rCS51bGViMTI4IDB4MTMJLyogKERX X0ZPUk1fcmVmNCkgKi8KLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwotKwkudWxlYjEyOAk2 CQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgyZQkJCS8qIERXX1RBR19zdWJwcm9n cmFtICovCi0rCS5ieXRlCQkxCQkJLyogaGFzX2NoaWxkcmVuICovCi0rCS51bGViMTI4CTB4MwkJ CS8qIERXX0FUX25hbWUgKi8KLSsJLnVsZWIxMjgJMHg4CQkJLyogRFdfRk9STV9zdHJpbmcgKi8K LSsJLnVsZWIxMjgJMHgxMQkJCS8qIERXX0FUX2xvd19wYyAqLwotKwkudWxlYjEyOAkweDEJCQkv KiBEV19GT1JNX2FkZHIgKi8KLSsJLnVsZWIxMjgJMHgxMgkJCS8qIERXX0FUX2hpZ2hfcGMgKi8K LSsJLnVsZWIxMjgJMHgxCQkJLyogRFdfRk9STV9hZGRyICovCi0rCS51bGViMTI4CTB4NDkJCQkv KiBEV19BVF90eXBlICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiBEV19GT1JNX3JlZjQgKi8KLSsJ LnVsZWIxMjgJMHgzZgkJCS8qIERXX0FUX2V4dGVybmFsICovCi0rCS51bGViMTI4CTB4YwkJCS8q IERXX0ZPUk1fZmxhZyAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwkuYnl0 ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwotKwkudWxlYjEyOCAweDcJLyogKGFiYnJldiBj b2RlKSAqLwotKwkudWxlYjEyOCAweDI0CS8qIChUQUc6IERXX1RBR19iYXNlX3R5cGUpICovCi0r CS5ieXRlCTAJLyogRFdfY2hpbGRyZW5fbm8gKi8KLSsJLnVsZWIxMjggMHhiCS8qIChEV19BVF9i eXRlX3NpemUpICovCi0rCS51bGViMTI4IDB4YgkvKiAoRFdfRk9STV9kYXRhMSkgKi8KLSsJLnVs ZWIxMjggMHgzZQkvKiAoRFdfQVRfZW5jb2RpbmcpICovCi0rCS51bGViMTI4IDB4YgkvKiAoRFdf Rk9STV9kYXRhMSkgKi8KLSsJLnVsZWIxMjggMHgzCS8qIChEV19BVF9uYW1lKSAqLwotKwkudWxl YjEyOCAweDgJLyogKERXX0ZPUk1fc3RyaW5nKSAqLwotKwkuYnl0ZQkwCi0rCS5ieXRlCTAKLSsK LSsJLmJ5dGUJMHgwCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2Fy ZjIvaW1wbHB0ci02NGJpdC5leHAKLUBAIC0wLDAgKzEsNTEgQEAKLSsjIENvcHlyaWdodCAyMDEx IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KLStsb2FkX2xpYiBkd2FyZi5leHAKLSsKLSsjIFRoaXMgdGVzdCBjYW4gb25seSBi ZSBydW4gb24gdGFyZ2V0cyB3aGljaCBzdXBwb3J0IERXQVJGLTIgYW5kIHVzZSBnYXMuCi0raWYg eyFbZHdhcmYyX3N1cHBvcnRdfSB7Ci0rICAgIHJldHVybiAwICAKLSt9Ci0rCi0rc2V0IHRlc3Rm aWxlICJpbXBscHRyLTY0Yml0IgotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LlMKLStzZXQgbWFp bmZpbGUgbWFpbi5jCi0rCi0rcHJvYyB0ZXN0IHsgZHdhcmZfdmVyc2lvbiBvZmZzZXRfc2l6ZSBh ZGRyX3NpemUgcmVmX2FkZHJfc2l6ZSB9IHsKLSsgICAgZ2xvYmFsIHRlc3RmaWxlIHNyY2ZpbGUg bWFpbmZpbGUKLSsKLSsgICAgc2V0IG9wdHMge30KLSsgICAgZm9yZWFjaCBuIHsgZHdhcmZfdmVy c2lvbiBvZmZzZXRfc2l6ZSBhZGRyX3NpemUgcmVmX2FkZHJfc2l6ZSB9IHsKLSsJbGFwcGVuZCBv cHRzICJhZGRpdGlvbmFsX2ZsYWdzPS1EW3N0cmluZyB0b3VwcGVyICRuXT1bZXhwciAiXCQkbiJd IgotKyAgICB9Ci0rCi0rICAgIHNldCBuYW1lICJkJHtkd2FyZl92ZXJzaW9ufW8ke29mZnNldF9z aXplfWEke2FkZHJfc2l6ZX1yJHtyZWZfYWRkcl9zaXplfSIKLSsgICAgc2V0IGV4ZWN1dGFibGUg JHt0ZXN0ZmlsZX0tJHtuYW1lfQotKyAgICBpZiBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3Rm aWxlfS5leHAgJGV4ZWN1dGFibGUgIiR7c3JjZmlsZX0gJHttYWluZmlsZX0iICRvcHRzXSB7Ci0r CXJldHVybiAtMQotKyAgICB9Ci0rCi0rICAgIGlmICFbcnVudG9fbWFpbl0gewotKwlyZXR1cm4g LTEKLSsgICAgfQotKwotKyAgICBnZGJfdGVzdCAicC94IHAtPmYiICIgPSAweDEwMTAxMDEiICRu YW1lCi0rfQotKwotKyMgICAgRFdBUkZfVkVSU0lPTiBPRkZTRVRfU0laRSBBRERSX1NJWkUgUkVG X0FERFJfU0laRQotK3Rlc3QgMiA4IDQgNAotK3Rlc3QgMiA0IDggOAotK3Rlc3QgMyA4IDQgOAot K3Rlc3QgMyA0IDggNAotCgpkaWZmIC0tZ2l0IGEvZ2RiLW9wdGltaXplZC1vdXQtaW50ZXJuYWwt ZXJyb3IucGF0Y2ggYi9nZGItb3B0aW1pemVkLW91dC1pbnRlcm5hbC1lcnJvci5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU4OGNlNi4uMDAwMDAwMAotLS0gYS9nZGItb3B0 aW1pemVkLW91dC1pbnRlcm5hbC1lcnJvci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwMiAr MCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMS0wOS9tc2cw MDQ0OS5odG1sCi1TdWJqZWN0OiBbcGF0Y2hdIEZpeCBpbnRlcm5hbCBlcnJvciBvbiBvcHRpbWl6 ZWQtb3V0IHZhbHVlcyAocmVncmVzc2lvbiBieSBtZSkKLQotSGksCi0KLXNpbmNlOgotCVJlOiBb cGF0Y2hdIENvZGUgY2xlYW51cDogSW50cm9kdWNlIGFsbG9jYXRlX29wdGltaXplZF9vdXRfdmFs dWUKLQlodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMS0wNy9tc2cwMDMy Ny5odG1sCi0JYWNmZTg1ZjU2MDc1OTEwYTNiYTVlOGI3NjE4OWUwNzcwMDc5YjhkMQotY2FuIG9j Y3VyOgotCShnZGIpIHAgcC0+ZgotCXZhbG9wcy5jOjExMTg6IGludGVybmFsLWVycm9yOiBVbmV4 cGVjdGVkIGxhenkgdmFsdWUgdHlwZS4KLQlBIHByb2JsZW0gaW50ZXJuYWwgdG8gR0RCIGhhcyBi ZWVuIGRldGVjdGVkLAotCi1pbiB0aGF0IG1haWwgcmVmZXJlbmNlZCBhYm92ZToKLSMgSXQgaXMg dHJ1ZSBpdCB3b3VsZCBiZSBkZWZpbml0ZWx5IGEgYnVnIGluIGEgY29kZSBpbmNvbXBhdGlibGUg d2l0aCBzdWNoCi0jIGNoYW5nZSBzbyBvbmUgbWF5IHJhdGhlciBmaXggdGhhdCBwb3NzaWJsZSBy ZWdyZXNzaW9uIHRoZXJlLgotCi1zbyB0aGlzIHRlc3RjYXNlIGV4cGxvaXRzIHN1Y2ggY2FzZS4g IFRoZSBwcm9ibGVtIGlzIGZvcm1lcmx5IHRoZSBjb2RlCi1hbGxvY2F0ZWQgKGluIHNvbWUgY2Fz ZXMpIG9wdGltaXplZCBvdXQgdmFsdWVzIGFzIG5vbi1sYXp5IG9uZXMuICBOb3cgdGhleSBhcmUK LWFsbG9jYXRlZCBhbGwgYXMgbGF6eSAoKikgd2hpY2ggYnJlYWtzIHNvbWUgY29kZSBub3QgZXhw ZWN0aW5nIGxhenkgdmFsdWVzLgotCi0oKikgU3VjaCBsYXp5IG9wdGltaXplZCBvdXQgdmFsdWUg c3RpbGwgZ2V0cyBzaWxlbnRseSBhbGxvY2F0ZV92YWx1ZV9jb250ZW50cwotICAgIGJ5IHZhbHVl X2ZldGNoX2xhenksIGFsbG9jYXRlX3ZhbHVlX2NvbnRlbnRzIHNob3VsZCBiZSBzdXBwcmVzc2Vk IGluIHN1Y2gKLSAgICBjYXNlOyBzdWNoIG1vcmUgcmFkaWNhbCBjaGFuZ2UgaGFzIG5ldmVyIGJl ZW4gbWFkZS4KLQotRm9ybWVybHkgKGluY2wuIGdkYi03LjMpIGRpZDoKLQkoZ2RiKSBwIHAtPmYK LQkkMSA9IDAKLXdoaWNoIHdhcyBhbHNvIHdyb25nLCAoKHN0cnVjdCAqKSA8b3B0aW1pemVkIG91 dD4pLT5maWVsZCBzaG91bGQgYmUgSU1PIHN0aWxsCi08b3B0aW1pemVkIG91dD47IGp1c3QgaXQg YmVjYW1lIGludGVybmFsLWVycm9yIG5vdy4KLQotR0RCIHVzdWFsbHkgZG9lcyByZXF1aXJlX25v dF9vcHRpbWl6ZWRfb3V0IHRocm93aW5nIGVycm9yKCkgd2hlbiBpdCBtZWV0cyBhbnkKLWZpcnN0 IDxvcHRpbWl6ZWQgb3V0PiB2YWx1ZS4gIEkgaGF2ZSBqdXN0IHByb2R1Y2VkIG5ldyBvcHRpbWl6 ZWQgdmFsdWUKLWluc3RlYWQ7IHJlcXVpcmVfbm90X29wdGltaXplZF9vdXQgaXMgbm90IGV4cG9y dGVkIGFuZCBJIGZpbmQgaXQgYmV0dGVyIHRoaXMKLXdheS4KLQotRm9sbG93aW5nIHRoZSBydWxl IHRoYXQgaXQgaXMgYmV0dGVyIGlmIEdEQiBkb2VzIHNvbWV0aGluZyB3cm9uZyByYXRoZXIgdGhl bgotaXQgdGhyb3dzIGludGVybmFsLWVycm9yIHRvIG1ha2UgdGhlIHBhdGNoIGZyb20gSnVseSBh Ym92ZSBmdWxseSBzYWZlIG9uZQotd291bGQgaGF2ZSB0byBjaGFuZ2UgYWxsb2NhdGVfb3B0aW1p emVkX291dF92YWx1ZSB0byBhbGxvY2F0ZSBldmVyeXRoaW5nIGFzCi1ub24tbGF6eS4gIEkgZmlu ZCB0aGF0IGFzIGEgdG9vIHVnbHkgd29ya2Fyb3VuZCBvZiB0aGUgY29kZWJhc2UuCi0KLU5vIHJl Z3Jlc3Npb25zIG9uIHt4ODZfNjQseDg2XzY0LW0zMixpNjg2fS1mZWRvcmExNnByZS1saW51eC1n bnUuCi0KLQotQW5kcmUsIGRvIHlvdSBzdGlsbCBzZWUgdGhlIGJ1ZyBldmVuIHdpdGggdGhpcyBw YXRjaD8KLQotCi1UaGFua3MsCi1KYW4KLQotCi1nZGIvCi0yMDExLTA5LTI2ICBKYW4gS3JhdG9j aHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQlGaXggaW50ZXJuYWwgZXJyb3Ig cmVncmVzc2lvbi4KLQkqIHZhbHVlLmMgKHZhbHVlX3ByaW1pdGl2ZV9maWVsZCk6IEhhbmRsZSB2 YWx1ZV9vcHRpbWl6ZWRfb3V0LiAgTW92ZQotCXBhY2tlZCBiaXRmaWVsZHMgY29tbWVudC4KLQot Z2RiL3Rlc3RzdWl0ZS8KLTIwMTEtMDktMjYgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2 aWxAcmVkaGF0LmNvbT4KLQotCUZpeCBpbnRlcm5hbCBlcnJvciByZWdyZXNzaW9uLgotCSogZ2Ri LmR3YXJmMi9pbXBscHRyLW9wdGltaXplZC1vdXQuUzogTmV3IGZpbGUuCi0JKiBnZGIuZHdhcmYy L2ltcGxwdHItb3B0aW1pemVkLW91dC5leHA6IE5ldyBmaWxlLgotCi0tLS0gYS9nZGIvdmFsdWUu YwotKysrIGIvZ2RiL3ZhbHVlLmMKLUBAIC0yNDgyLDE2ICsyNDgyLDE5IEBAIHZhbHVlX3ByaW1p dGl2ZV9maWVsZCAoc3RydWN0IHZhbHVlICphcmcxLCBpbnQgb2Zmc2V0LAotICAgICAgZGVzY3Jp cHRpb24gY29ycmVjdGx5LiAgKi8KLSAgIGNoZWNrX3R5cGVkZWYgKHR5cGUpOwotIAotLSAgLyog SGFuZGxlIHBhY2tlZCBmaWVsZHMgKi8KLS0KLS0gIGlmIChUWVBFX0ZJRUxEX0JJVFNJWkUgKGFy Z190eXBlLCBmaWVsZG5vKSkKLSsgIGlmICh2YWx1ZV9vcHRpbWl6ZWRfb3V0IChhcmcxKSkKLSsg ICAgdiA9IGFsbG9jYXRlX29wdGltaXplZF9vdXRfdmFsdWUgKHR5cGUpOwotKyAgZWxzZSBpZiAo VFlQRV9GSUVMRF9CSVRTSVpFIChhcmdfdHlwZSwgZmllbGRubykpCi0gICAgIHsKLS0gICAgICAv KiBDcmVhdGUgYSBuZXcgdmFsdWUgZm9yIHRoZSBiaXRmaWVsZCwgd2l0aCBiaXRwb3MgYW5kIGJp dHNpemUKLSsgICAgICAvKiBIYW5kbGUgcGFja2VkIGZpZWxkcy4KLSsKLSsJIENyZWF0ZSBhIG5l dyB2YWx1ZSBmb3IgdGhlIGJpdGZpZWxkLCB3aXRoIGJpdHBvcyBhbmQgYml0c2l6ZQotIAkgc2V0 LiAgSWYgcG9zc2libGUsIGFycmFuZ2Ugb2Zmc2V0IGFuZCBiaXRwb3Mgc28gdGhhdCB3ZSBjYW4K LSAJIGRvIGEgc2luZ2xlIGFsaWduZWQgcmVhZCBvZiB0aGUgc2l6ZSBvZiB0aGUgY29udGFpbmlu ZyB0eXBlLgotIAkgT3RoZXJ3aXNlLCBhZGp1c3Qgb2Zmc2V0IHRvIHRoZSBieXRlIGNvbnRhaW5p bmcgdGhlIGZpcnN0Ci0gCSBiaXQuICBBc3N1bWUgdGhhdCB0aGUgYWRkcmVzcywgb2Zmc2V0LCBh bmQgZW1iZWRkZWQgb2Zmc2V0Ci0gCSBhcmUgc3VmZmljaWVudGx5IGFsaWduZWQuICAqLwotKwot ICAgICAgIGludCBiaXRwb3MgPSBUWVBFX0ZJRUxEX0JJVFBPUyAoYXJnX3R5cGUsIGZpZWxkbm8p OwotICAgICAgIGludCBjb250YWluZXJfYml0c2l6ZSA9IFRZUEVfTEVOR1RIICh0eXBlKSAqIDg7 Ci0gCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvaW1wbHB0 ci1vcHRpbWl6ZWQtb3V0LlMKLUBAIC0wLDAgKzEsMTY2IEBACi0rLyogQ29weXJpZ2h0IDIwMTAs IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK LSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKwkuc2VjdGlvbgkuZGVidWdfaW5mbwotK2Q6 Ci0rCS5sb25nCWRlYnVnX2VuZCAtIDFmCS8qIExlbmd0aCBvZiBDb21waWxhdGlvbiBVbml0IElu Zm8gKi8KLSsxOgotKwkuMmJ5dGUJMHgzCS8qIERXQVJGIHZlcnNpb24gbnVtYmVyICovCi0rCS5s b25nCS5MZGVidWdfYWJicmV2MAkvKiBPZmZzZXQgSW50byBBYmJyZXYuIFNlY3Rpb24gKi8KLSsJ LmJ5dGUJMHg0CS8qIFBvaW50ZXIgU2l6ZSAoaW4gYnl0ZXMpICovCi0rCS51bGViMTI4IDB4MQkv KiAoRElFICgweGIpIERXX1RBR19jb21waWxlX3VuaXQpICovCi0rCS5hc2NpaSAiR05VIEMgNC40 LjNcMCIJLyogRFdfQVRfcHJvZHVjZXIgKi8KLSsJLmJ5dGUJMHgxCS8qIERXX0FUX2xhbmd1YWdl ICovCi0rCS5hc2NpaSAiMS5jXDAiCS8qIERXX0FUX25hbWUgKi8KLSsKLSsuTHR5cGVfaW50Ogot KwkudWxlYjEyOCAweDcJLyogRFdfVEFHX2Jhc2VfdHlwZSAqLwotKwkuYnl0ZQkweDQJLyogRFdf QVRfYnl0ZV9zaXplICovCi0rCS5ieXRlCTB4NQkvKiBEV19BVF9lbmNvZGluZyAqLwotKwkuYXNj aWkgImludFwwIgkvKiBEV19BVF9uYW1lICovCi0rCi0rLkx0eXBlX3N0cnVjdDoKLSsJLnVsZWIx MjggMHgyCS8qIERXX1RBR19zdHJ1Y3R1cmVfdHlwZSAqLwotKwkuYXNjaWkgInNcMCIJLyogRFdf QVRfbmFtZSAqLwotKwkuYnl0ZQk0CS8qIERXX0FUX2J5dGVfc2l6ZSAqLwotKwotKwkudWxlYjEy OCAweDMJLyogRFdfVEFHX21lbWJlciAqLwotKwkuYXNjaWkgImZcMCIJLyogRFdfQVRfbmFtZSAq LwotKwkuNGJ5dGUJLkx0eXBlX2ludCAtIGQJLyogRFdfQVRfdHlwZSAqLwotKwkuYnl0ZQkwCS8q IERXX0FUX2RhdGFfbWVtYmVyX2xvY2F0aW9uICovCi0rCi0rCS5ieXRlCTB4MAkvKiBlbmQgb2Yg Y2hpbGRyZW4gb2YgRFdfVEFHX3N0cnVjdHVyZV90eXBlICovCi0rCi0rCS51bGViMTI4CTYJCQkv KiBBYmJyZXY6IERXX1RBR19zdWJwcm9ncmFtICovCi0rCS5hc2NpaQkJIm1haW5cMCIJCS8qIERX X0FUX25hbWUgKi8KLSsJLjRieXRlCQltYWluCQkJLyogRFdfQVRfbG93X3BjICovCi0rCS40Ynl0 ZQkJbWFpbiArIDB4MTAwCQkvKiBEV19BVF9oaWdoX3BjICovCi0rCS40Ynl0ZQkJLkx0eXBlX2lu dCAtIGQJCS8qIERXX0FUX3R5cGUgKi8KLSsJLmJ5dGUJCTEJCQkvKiBEV19BVF9leHRlcm5hbCAq LwotKwotKy5MdHlwZV9zdHJ1Y3RwdHI6Ci0rCS51bGViMTI4IDB4NQkvKiBEV19UQUdfcG9pbnRl cl90eXBlICovCi0rCS5ieXRlCTB4NAkvKiBEV19BVF9ieXRlX3NpemUgKi8KLSsJLmxvbmcJLkx0 eXBlX3N0cnVjdCAtIGQJLyogRFdfQVRfdHlwZSAqLwotKwotKy5MdmFyX291dDoKLSsJLnVsZWIx MjggMHg0CS8qIChEV19UQUdfdmFyaWFibGUpICovCi0rCS5hc2NpaSAidlwwIgkvKiBEV19BVF9u YW1lICovCi0rCS5ieXRlCTAJLyogRFdfQVRfbG9jYXRpb246IERXX0ZPUk1fYmxvY2sxICovCi0r CS40Ynl0ZQkuTHR5cGVfc3RydWN0IC0gZAkvKiBEV19BVF90eXBlICovCi0rCi0rCS51bGViMTI4 IDB4NAkvKiAoRFdfVEFHX3ZhcmlhYmxlKSAqLwotKwkuYXNjaWkgInBcMCIJLyogRFdfQVRfbmFt ZSAqLwotKwkuYnl0ZQkyZiAtIDFmCS8qIERXX0FUX2xvY2F0aW9uOiBEV19GT1JNX2Jsb2NrMSAq LwotKzE6Ci0rCS5ieXRlCTB4ZjIJLyogRFdfT1BfR05VX2ltcGxpY2l0X3BvaW50ZXIgKi8KLSsJ LjRieXRlCS5MdmFyX291dCAtIGQJLyogcmVmZXJlbmNlZCBESUUgKi8KLSsJLnNsZWIxMjgJMAkv KiBvZmZzZXQgKi8KLSsyOgotKwkuNGJ5dGUJLkx0eXBlX3N0cnVjdHB0ciAtIGQJLyogRFdfQVRf dHlwZSAqLwotKwotKwkuYnl0ZQkweDAJLyogZW5kIG9mIGNoaWxkcmVuIG9mIG1haW4gKi8KLSsK LSsJLmJ5dGUJMHgwCS8qIGVuZCBvZiBjaGlsZHJlbiBvZiBDVSAqLwotK2RlYnVnX2VuZDoKLSsK LSsJLnNlY3Rpb24JLmRlYnVnX2FiYnJldgotKy5MZGVidWdfYWJicmV2MDoKLSsKLSsJLnVsZWIx MjggMHgxCS8qIChhYmJyZXYgY29kZSkgKi8KLSsJLnVsZWIxMjggMHgxMQkvKiAoVEFHOiBEV19U QUdfY29tcGlsZV91bml0KSAqLwotKwkuYnl0ZQkweDEJLyogRFdfY2hpbGRyZW5feWVzICovCi0r CS51bGViMTI4IDB4MjUJLyogKERXX0FUX3Byb2R1Y2VyKSAqLwotKwkudWxlYjEyOCAweDgJLyog KERXX0ZPUk1fc3RyaW5nKSAqLwotKwkudWxlYjEyOCAweDEzCS8qIChEV19BVF9sYW5ndWFnZSkg Ki8KLSsJLnVsZWIxMjggMHhiCS8qIChEV19GT1JNX2RhdGExKSAqLwotKwkudWxlYjEyOCAweDMJ LyogKERXX0FUX25hbWUpICovCi0rCS51bGViMTI4IDB4OAkvKiAoRFdfRk9STV9zdHJpbmcpICov Ci0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsKLSsJLnVsZWIxMjggMHgyCS8qIChhYmJyZXYg Y29kZSkgKi8KLSsJLnVsZWIxMjggMHgxMwkvKiAoVEFHOiBEV19UQUdfc3RydWN0dXJlX3R5cGUp ICovCi0rCS5ieXRlCTB4MQkvKiBEV19jaGlsZHJlbl95ZXMgKi8KLSsJLnVsZWIxMjggMHgzCS8q IChEV19BVF9uYW1lKSAqLwotKwkudWxlYjEyOCAweDgJLyogKERXX0ZPUk1fc3RyaW5nKSAqLwot KwkudWxlYjEyOCAweGIJLyogKERXX0FUX2J5dGVfc2l6ZSkgKi8KLSsJLnVsZWIxMjggMHhiCS8q IChEV19GT1JNX2RhdGExKSAqLwotKwkuYnl0ZQkwCi0rCS5ieXRlCTAKLSsKLSsJLnVsZWIxMjgg MHgzCS8qIChhYmJyZXYgY29kZSkgKi8KLSsJLnVsZWIxMjggMHhkCS8qIChUQUc6IERXX1RBR19t ZW1iZXIpICovCi0rCS5ieXRlCTAJLyogRFdfY2hpbGRyZW5fbm8gKi8KLSsJLnVsZWIxMjggMHgz CS8qIChEV19BVF9uYW1lKSAqLwotKwkudWxlYjEyOCAweDgJLyogKERXX0ZPUk1fc3RyaW5nKSAq LwotKwkudWxlYjEyOCAweDQ5CS8qIChEV19BVF90eXBlKSAqLwotKwkudWxlYjEyOCAweDEzCS8q IChEV19GT1JNX3JlZjQpICovCi0rCS51bGViMTI4IDB4MzgJLyogKERXX0FUX2RhdGFfbWVtYmVy X2xvY2F0aW9uKSAqLwotKwkudWxlYjEyOCAweGIJLyogKERXX0ZPUk1fZGF0YTEpICovCi0rCS5i eXRlCTAKLSsJLmJ5dGUJMAotKwotKwkudWxlYjEyOCAweDQJLyogKGFiYnJldiBjb2RlKSAqLwot KwkudWxlYjEyOCAweDM0CS8qIChUQUc6IERXX1RBR192YXJpYWJsZSkgKi8KLSsJLmJ5dGUJMHgw CS8qIERXX2NoaWxkcmVuX3llcyAqLwotKwkudWxlYjEyOCAweDMJLyogKERXX0FUX25hbWUpICov Ci0rCS51bGViMTI4IDB4OAkvKiAoRFdfRk9STV9zdHJpbmcpICovCi0rCS51bGViMTI4IDB4MDIJ LyogKERXX0FUX2xvY2F0aW9uKSAqLwotKwkudWxlYjEyOCAweGEJLyogKERXX0ZPUk1fYmxvY2sx KSAqLwotKwkudWxlYjEyOCAweDQ5CS8qIChEV19BVF90eXBlKSAqLwotKwkudWxlYjEyOCAweDEz CS8qIChEV19GT1JNX3JlZjQpICovCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsKLSsJLnVs ZWIxMjggMHg1CS8qIChhYmJyZXYgY29kZSkgKi8KLSsJLnVsZWIxMjggMHhmCS8qIChUQUc6IERX X1RBR19wb2ludGVyX3R5cGUpICovCi0rCS5ieXRlCTB4MAkvKiBEV19jaGlsZHJlbl9ubyAqLwot KwkudWxlYjEyOCAweGIJLyogKERXX0FUX2J5dGVfc2l6ZSkgKi8KLSsJLnVsZWIxMjggMHhiCS8q IChEV19GT1JNX2RhdGExKSAqLwotKwkudWxlYjEyOCAweDQ5CS8qIChEV19BVF90eXBlKSAqLwot KwkudWxlYjEyOCAweDEzCS8qIChEV19GT1JNX3JlZjQpICovCi0rCS5ieXRlCTB4MAotKwkuYnl0 ZQkweDAKLSsKLSsJLnVsZWIxMjgJNgkJCS8qIEFiYnJldiBjb2RlICovCi0rCS51bGViMTI4CTB4 MmUJCQkvKiBEV19UQUdfc3VicHJvZ3JhbSAqLwotKwkuYnl0ZQkJMQkJCS8qIGhhc19jaGlsZHJl biAqLwotKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICovCi0rCS51bGViMTI4CTB4OAkJ CS8qIERXX0ZPUk1fc3RyaW5nICovCi0rCS51bGViMTI4CTB4MTEJCQkvKiBEV19BVF9sb3dfcGMg Ki8KLSsJLnVsZWIxMjgJMHgxCQkJLyogRFdfRk9STV9hZGRyICovCi0rCS51bGViMTI4CTB4MTIJ CQkvKiBEV19BVF9oaWdoX3BjICovCi0rCS51bGViMTI4CTB4MQkJCS8qIERXX0ZPUk1fYWRkciAq LwotKwkudWxlYjEyOAkweDQ5CQkJLyogRFdfQVRfdHlwZSAqLwotKwkudWxlYjEyOAkweDEzCQkJ LyogRFdfRk9STV9yZWY0ICovCi0rCS51bGViMTI4CTB4M2YJCQkvKiBEV19BVF9leHRlcm5hbCAq LwotKwkudWxlYjEyOAkweGMJCQkvKiBEV19GT1JNX2ZsYWcgKi8KLSsJLmJ5dGUJCTB4MAkJCS8q IFRlcm1pbmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsKLSsJLnVs ZWIxMjggMHg3CS8qIChhYmJyZXYgY29kZSkgKi8KLSsJLnVsZWIxMjggMHgyNAkvKiAoVEFHOiBE V19UQUdfYmFzZV90eXBlKSAqLwotKwkuYnl0ZQkwCS8qIERXX2NoaWxkcmVuX25vICovCi0rCS51 bGViMTI4IDB4YgkvKiAoRFdfQVRfYnl0ZV9zaXplKSAqLwotKwkudWxlYjEyOCAweGIJLyogKERX X0ZPUk1fZGF0YTEpICovCi0rCS51bGViMTI4IDB4M2UJLyogKERXX0FUX2VuY29kaW5nKSAqLwot KwkudWxlYjEyOCAweGIJLyogKERXX0ZPUk1fZGF0YTEpICovCi0rCS51bGViMTI4IDB4MwkvKiAo RFdfQVRfbmFtZSkgKi8KLSsJLnVsZWIxMjggMHg4CS8qIChEV19GT1JNX3N0cmluZykgKi8KLSsJ LmJ5dGUJMAotKwkuYnl0ZQkwCi0rCi0rCS5ieXRlCTB4MAotLS0tIC9kZXYvbnVsbAotKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2ltcGxwdHItb3B0aW1pemVkLW91dC5leHAKLUBAIC0w LDAgKzEsMzcgQEAKLSsjIENvcHlyaWdodCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLStsb2FkX2xpYiBkd2FyZi5l eHAKLSsKLSsjIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gb24gdGFyZ2V0cyB3aGljaCBzdXBw b3J0IERXQVJGLTIgYW5kIHVzZSBnYXMuCi0raWYgeyFbZHdhcmYyX3N1cHBvcnRdfSB7Ci0rICAg IHJldHVybiAwICAKLSt9Ci0rCi0rc2V0IHRlc3RmaWxlICJpbXBscHRyLW9wdGltaXplZC1vdXQi Ci0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uUwotK3NldCBtYWluZmlsZSBtYWluLmMKLStzZXQg ZXhlY3V0YWJsZSAke3Rlc3RmaWxlfQotK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0v JHtleGVjdXRhYmxlfQotKwotK2lmIFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4 cCAkZXhlY3V0YWJsZSAiJHtzcmNmaWxlfSAke21haW5maWxlfSIge31dIHsKLSsgICAgcmV0dXJu IC0xCi0rfQotKwotKyMgRFdfT1BfR05VX2ltcGxpY2l0X3BvaW50ZXIgaW1wbGVtZW50YXRpb24g cmVxdWlyZXMgYSB2YWxpZCBmcmFtZS4KLStpZiAhW3J1bnRvX21haW5dIHsKLSsgICAgcmV0dXJu IC0xCi0rfQotKwotK2dkYl90ZXN0ICJwIHAtPmYiICIgPSA8b3B0aW1pemVkIG91dD4iCi0KCmRp ZmYgLS1naXQgYS9nZGItcmhlbDUtY29tcGF0LnBhdGNoIGIvZ2RiLXJoZWw1LWNvbXBhdC5wYXRj aAppbmRleCA3ZGVmZGRiLi45ZjRjYmEzIDEwMDY0NAotLS0gYS9nZGItcmhlbDUtY29tcGF0LnBh dGNoCisrKyBiL2dkYi1yaGVsNS1jb21wYXQucGF0Y2gKQEAgLTEsMTEgKzEsMTEgQEAKIGdkYi9s aW51eC1uYXQuYzoKIC0gV29ya2Fyb3VuZCBSSEVMLTUga2VybmVscyBmb3IgZGV0YWNoaW5nIFNJ R1NUT1BwZWQgcHJvY2Vzc2VzIChCWiA0OTg1OTUpLgogCi1JbmRleDogZ2RiLTcuMi41MC4yMDEx MDMyOC9nZGIvZWxmcmVhZC5jCitJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvZWxmcmVh ZC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDMyOC5vcmlnL2dkYi9lbGZyZWFk LmMJMjAxMS0wMy0yOCAxODo0NjoxNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjUwLjIw MTEwMzI4L2dkYi9lbGZyZWFkLmMJMjAxMS0wMy0yOCAxODo0ODoxOS4wMDAwMDAwMDAgKzAyMDAK LUBAIC0xMDgzLDcgKzEwODMsNyBAQCBlbGZfZ251X2lmdW5jX3Jlc29sdmVyX3JldHVybl9zdG9w IChzdHJ1CistLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi9lbGZyZWFkLmMJMjAxMS0x Mi0xOSAwMTo0MTozMS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTExMjE4L2dk Yi9lbGZyZWFkLmMJMjAxMS0xMi0xOSAwMjozMTozMC45OTgyNDE3NjAgKzAxMDAKK0BAIC0xMDUz LDcgKzEwNTMsNyBAQCBlbGZfZ251X2lmdW5jX3Jlc29sdmVyX3JldHVybl9zdG9wIChzdHJ1CiAg I2RlZmluZSBCVUlMRF9JRF9WRVJCT1NFX05PTkUgMAogICNkZWZpbmUgQlVJTERfSURfVkVSQk9T RV9GSUxFTkFNRVMgMQogICNkZWZpbmUgQlVJTERfSURfVkVSQk9TRV9CSU5BUllfUEFSU0UgMgpA QCAtMTQsNyArMTQsNyBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDMyOC9nZGIvZWxmcmVhZC5j CiAgc3RhdGljIHZvaWQKICBzaG93X2J1aWxkX2lkX3ZlcmJvc2UgKHN0cnVjdCB1aV9maWxlICpm aWxlLCBpbnQgZnJvbV90dHksCiAgCQkgICAgICAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMs IGNvbnN0IGNoYXIgKnZhbHVlKQotQEAgLTIxNzMsOCArMjE3MywxMCBAQCBmaW5kX3NlcGFyYXRl X2RlYnVnX2ZpbGVfYnlfYnVpbGRpZCAoc3RyCitAQCAtMjE3Miw4ICsyMTcyLDEwIEBAIGZpbmRf c2VwYXJhdGVfZGVidWdfZmlsZV9ieV9idWlsZGlkIChzdHIKICAgICAgICBpZiAoYnVpbGRfaWRf bmFtZSAhPSBOVUxMCiAgCSAgJiYgZmlsZW5hbWVfY21wIChidWlsZF9pZF9uYW1lLCBvYmpmaWxl LT5uYW1lKSA9PSAwKQogICAgICAgICAgewpAQCAtMjUsMTEgKzI1LDExIEBAIEluZGV4OiBnZGIt Ny4yLjUwLjIwMTEwMzI4L2dkYi9lbGZyZWFkLmMKICAJICB4ZnJlZSAoYnVpbGRfaWRfbmFtZSk7 CiAgCX0KICAgICAgICBlbHNlIGlmIChidWlsZF9pZF9uYW1lICE9IE5VTEwpCi1JbmRleDogZ2Ri LTcuMi41MC4yMDExMDMyOC9nZGIvY29yZWxvdy5jCitJbmRleDogZ2RiLTcuNC41MC4yMDExMTIx OC9nZGIvY29yZWxvdy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDMyOC5vcmln L2dkYi9jb3JlbG93LmMJMjAxMS0wMy0yOCAxODo0NjoxNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNy4yLjUwLjIwMTEwMzI4L2dkYi9jb3JlbG93LmMJMjAxMS0wMy0yOCAxODo0Nzo1Ni4wMDAw MDAwMDAgKzAyMDAKLUBAIC0yODIsNyArMjgyLDcgQEAgYWRkX3RvX3RocmVhZF9saXN0IChiZmQg KmFiZmQsIGFzZWN0aW9uIAorLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvY29yZWxv dy5jCTIwMTEtMTItMTkgMDE6MTY6MTUuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4y MDExMTIxOC9nZGIvY29yZWxvdy5jCTIwMTEtMTItMTkgMDI6MzE6MzAuOTk4MjQxNzYwICswMTAw CitAQCAtMjgyLDcgKzI4Miw3IEBAIGFkZF90b190aHJlYWRfbGlzdCAoYmZkICphYmZkLCBhc2Vj dGlvbgogICAgICBpbmZlcmlvcl9wdGlkID0gcHRpZDsJCQkvKiBZZXMsIG1ha2UgaXQgY3VycmVu dC4gICovCiAgfQogIApAQCAtMzgsMzIgKzM4LDMgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAz MjgvZ2RiL2NvcmVsb3cuYwogIAogIHN0YXRpYyB2b2lkCiAgYnVpbGRfaWRfbG9jYXRlX2V4ZWMg KGludCBmcm9tX3R0eSkKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzI4L2dkYi9saW51eC1uYXQu YwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMTAzMjgub3JpZy9nZGIvbGludXgtbmF0 LmMJMjAxMS0wMy0yOCAxODo0NjoxNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjUwLjIw MTEwMzI4L2dkYi9saW51eC1uYXQuYwkyMDExLTAzLTI4IDE4OjQ3OjU2LjAwMDAwMDAwMCArMDIw MAotQEAgLTE3NzQsOCArMTc3NCwyMiBAQCBnZXRfcGVuZGluZ19zdGF0dXMgKHN0cnVjdCBsd3Bf aW5mbyAqbHAsCi0gCQkJICAgIHRhcmdldF9zaWduYWxfdG9fc3RyaW5nIChzaWdubykpOwotICAg ICB9Ci0gCi0tICBpZiAoKnN0YXR1cyA9PSAwICYmIEdFVF9QSUQgKGxwLT5wdGlkKSA9PSBwaWRf d2FzX3N0b3BwZWQpCi0tICAgICpzdGF0dXMgPSBXX1NUT1BDT0RFIChTSUdTVE9QKTsKLSsgIC8q IFdvcmthcm91bmQgUkhFTC01IGtlcm5lbCB3aGljaCBoYXMgdW5yZWxpYWJsZSBQVFJBQ0VfREVU QUNILCBTSUdTVE9QICh0aGF0Ci0rICAgICBtYW55IFRJRHMgYXJlIGxlZnQgdW5zdG9wcGVkKS4g IFNlZSBSSCBCdWcgNDk2NzMyLiAgKi8KLSsgIGlmIChHRVRfUElEIChscC0+cHRpZCkgPT0gcGlk X3dhc19zdG9wcGVkKQotKyAgICB7Ci0rICAgICAgaW50IGVycjsKLSsKLSsgICAgICBlcnJubyA9 IDA7Ci0rICAgICAgZXJyID0ga2lsbF9sd3AgKEdFVF9MV1AgKGxwLT5wdGlkKSwgU0lHU1RPUCk7 Ci0rICAgICAgaWYgKGRlYnVnX2xpbnV4X25hdCkKLSsJewotKwkgIGZwcmludGZfdW5maWx0ZXJl ZCAoZ2RiX3N0ZGxvZywKLSsJCQkgICAgICAiU0M6ICBsd3Aga2lsbCAlZCAlc1xuIiwKLSsJCQkg ICAgICBlcnIsCi0rCQkJICAgICAgZXJybm8gPyBzYWZlX3N0cmVycm9yIChlcnJubykgOiAiRVJS Tk8tT0siKTsKLSsJfQotKyAgICB9Ci0gCi0gICByZXR1cm4gMDsKLSB9CgpkaWZmIC0tZ2l0IGEv Z2RiLXJoZWw1LWdjYzQ0LnBhdGNoIGIvZ2RiLXJoZWw1LWdjYzQ0LnBhdGNoCmluZGV4IGE1YTY1 NjcuLmNjYmIzMGEgMTAwNjQ0Ci0tLSBhL2dkYi1yaGVsNS1nY2M0NC5wYXRjaAorKysgYi9nZGIt cmhlbDUtZ2NjNDQucGF0Y2gKQEAgLTEsMTAgKzEsMTAgQEAKIFNvbWUgZnVuY3Rpb25hbGl0eSBp cyBhdmFpbGFibGUgb24gUkhFTC01LjQrIG9ubHkgd2l0aCBnY2M0NCBhbmQgZ2ZvcnRyYW40NCBh cwogdGhlIGRlZmF1bHQgZ2NjIGFuZCBnZm9ydHJhbiBiaW5hcmllcyBhcmUgZnJvbSBnY2MtNC4x LgogCi1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3Zs YS5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv dmxhLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL3ZsYS5leHAJMjAxMC0xMS0xNiAwOToyNjo1MC4wMDAwMDAwMDAgKzAx MDAKLSsrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmV4 cAkyMDEwLTExLTE2IDA5OjI3OjIwLjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjQuNTAuMjAx MTEyMTgub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5leHAJMjAxMS0xMi0xOCAyMzoz NToyMy4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvdmxhLmV4cAkyMDExLTEyLTE5IDAyOjI3OjE2Ljc0NTMyNzg0NCArMDEwMAog QEAgLTE2LDcgKzE2LDI1IEBACiAgc2V0IHRlc3RmaWxlIHZsYQogIHNldCBzcmNmaWxlICR7dGVz dGZpbGV9LmMKQEAgLTMyLDExICszMiwxMSBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5leHAKICAgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNv bXBpbGUgdGVzdCBwcm9ncmFtIgogICAgICByZXR1cm4gLTEKICB9Ci1JbmRleDogZ2RiLTcuMi41 MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC5leHAKK0luZGV4 OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJw LmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC5leHAJMjAxMC0xMC0xMiAyMDo0MTowNi4wMDAwMDAw MDAgKzAyMDAKLSsrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv YnJlYWstaW50ZXJwLmV4cAkyMDEwLTExLTE2IDA5OjI4OjQwLjAwMDAwMDAwMCArMDEwMAotQEAg LTMzLDkgKzMzLDI5IEBAIGlmIFtnZXRfY29tcGlsZXJfaW5mbyAke2JpbmZpbGVfbGlifV0gewor LS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFr LWludGVycC5leHAJMjAxMS0xMi0xOSAwMjoyMTo1Ni4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGIt Ny40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAky MDExLTEyLTE5IDAyOjI3OjE2Ljc0NTMyNzg0NCArMDEwMAorQEAgLTM0LDkgKzM0LDI5IEBAIGlm IFtnZXRfY29tcGlsZXJfaW5mbyAke2JpbmZpbGVfbGlifV0gewogICAgICByZXR1cm4gLTEKICB9 CiAgCkBAIC02NywxMCArNjcsMTAgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCiAgICAgIHJldHVybiAtMQogIH0KICAK LUluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29t bW9uLWJsb2NrLmV4cAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4y MDEwMTExNi5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJsb2NrLmV4cAky MDEwLTExLTE2IDA5OjI2OjU0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMDEx MTYvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZXhwCTIwMTAtMTEtMTYg MDk6Mjc6MjAuMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJsb2NrLmV4cAkyMDExLTEyLTE5IDAxOjMx OjI0LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZXhwCTIwMTEtMTItMTkgMDI6Mjc6MTYuNzQ2MzI3 ODQwICswMTAwCiBAQCAtMjAsNyArMjAsMjUgQEAgc2V0IHRlc3RmaWxlICJjb21tb24tYmxvY2si CiAgc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCiAgc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7 c3ViZGlyfS8ke3Rlc3RmaWxlfQpAQCAtOTgsMTAgKzk4LDEwIEBAIEluZGV4OiBnZGItNy4yLjUw LjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJsb2NrLmV4cAogICAg ICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2ZpbGV9IgogICAgICByZXR1cm4gLTEK ICB9Ci1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L2R3YXJmLXN0cmlkZS5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIu NTAuMjAxMDExMTYub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5l eHAJMjAxMC0xMS0xNiAwOToyNjo1MC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIw MTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmV4cAkyMDEwLTEx LTE2IDA5OjI3OjIwLjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3Jp Zy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5leHAJMjAxMS0xMi0xOCAy MzozNToyMy4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmV4cAkyMDExLTEyLTE5IDAyOjI3OjE2Ljc0 NjMyNzg0MCArMDEwMAogQEAgLTI3LDcgKzI3LDI1IEBACiAgc2V0IHRlc3RmaWxlIGR3YXJmLXN0 cmlkZQogIHNldCBzcmNmaWxlICR7dGVzdGZpbGV9LmY5MApAQCAtMTI5LDEwICsxMjksMTAgQEAg SW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2Fy Zi1zdHJpZGUuZXhwCiAgICAgIHJldHVybiAtMQogIH0KICAKLUluZGV4OiBnZGItNy4yLjUwLjIw MTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5leHAKK0luZGV4OiBnZGIt Ny40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5leHAKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9keW5hbWljLmV4cAkyMDEwLTExLTE2IDA5OjI2OjUwLjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWlj LmV4cAkyMDEwLTExLTE2IDA5OjI3OjIwLjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjQuNTAu MjAxMTEyMTgub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZXhwCTIwMTEt MTItMTggMjM6MzU6MjMuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDExMTIxOC9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZXhwCTIwMTEtMTItMTkgMDI6Mjc6MTYu NzQ2MzI3ODQwICswMTAwCiBAQCAtMjUsNyArMjUsMjUgQEAgc2V0IHRlc3RmaWxlICJkeW5hbWlj IgogIHNldCBzcmNmaWxlICR7dGVzdGZpbGV9LmY5MAogIHNldCBiaW5maWxlICR7b2JqZGlyfS8k e3N1YmRpcn0vJHt0ZXN0ZmlsZX0KQEAgLTE2MCwxMCArMTYwLDEwIEBAIEluZGV4OiBnZGItNy4y LjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5leHAKICAgICAg dW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgJHtzcmNmaWxlfSIKICAgICAgcmV0dXJuIC0xCiAg fQotSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9s aWJyYXJ5LW1vZHVsZS5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1bGUuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu Mi41MC4yMDEwMTExNi5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1 bGUuZXhwCTIwMTAtMDYtMDMgMDA6NDE6NTYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi41 MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnktbW9kdWxlLmV4cAky MDEwLTExLTE2IDA5OjI3OjIwLjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjQuNTAuMjAxMTEy MTgub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnktbW9kdWxlLmV4cAkyMDEx LTExLTMwIDA5OjI0OjMyLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTgv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9saWJyYXJ5LW1vZHVsZS5leHAJMjAxMS0xMi0xOSAw MjozMToxMC45OTEzMTgwMjYgKzAxMDAKIEBAIC0yNSwxNiArMjUsMzQgQEAgaWYgW2dldF9jb21w aWxlcl9pbmZvIG5vdC11c2VkXSB7CiAgICAgcmV0dXJuIC0xCiAgfQpAQCAtMTg2LDkgKzE4Niw5 IEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v bGlicmFyeS1tb2R1bGUuZXhwCiAgIyBqdXN0IGZvciB0aGUgbGlua2luZyBwaGFzZSAoYW5kIG5v dCB0aGUgc291cmNlIGNvbXBpbGF0aW9uIHBoYXNlKS4gIEFuZCBhbnkKICAjIHdhcm5pbmdzIG9u IGlnbm9yZWQgJGxpYmZpbGUgYWJvcnQgdGhlIHByb2Nlc3MuCiAgCi0taWYgIHsgW2dkYl9jb21w aWxlIFtsaXN0ICRzcmNkaXIvJHN1YmRpci8kc3JjZmlsZSAkb2JqZGlyLyRzdWJkaXIvJGxpYmZp bGVdICRvYmpkaXIvJHN1YmRpci8kYmluZmlsZSBleGVjdXRhYmxlIHtkZWJ1ZyBmOTB9XSAhPSAi IiB9IHsKKy1pZiAgeyBbZ2RiX2NvbXBpbGUgJHNyY2Rpci8kc3ViZGlyLyRzcmNmaWxlICRvYmpk aXIvJHN1YmRpci8kYmluZmlsZSBleGVjdXRhYmxlIFtsaXN0IGRlYnVnIGY5MCBzaGxpYj0kb2Jq ZGlyLyRzdWJkaXIvJGxpYmZpbGVdXSAhPSAiIiB9IHsKICtzZXQgZXJyMSBbZ2RiX2NvbXBpbGVf c2hsaWIgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNsaWJmaWxlfSIgJG9iamRpci8kc3ViZGly LyRsaWJmaWxlIHtkZWJ1ZyBmOTB9XQotK3NldCBlcnIyIFtnZGJfY29tcGlsZSBbbGlzdCAkc3Jj ZGlyLyRzdWJkaXIvJHNyY2ZpbGUgJG9iamRpci8kc3ViZGlyLyRsaWJmaWxlXSAkb2JqZGlyLyRz dWJkaXIvJGJpbmZpbGUgZXhlY3V0YWJsZSB7ZGVidWcgZjkwfV0KKytzZXQgZXJyMiBbZ2RiX2Nv bXBpbGUgJHNyY2Rpci8kc3ViZGlyLyRzcmNmaWxlICRvYmpkaXIvJHN1YmRpci8kYmluZmlsZSBl eGVjdXRhYmxlIFtsaXN0IGRlYnVnIGY5MCBzaGxpYj0kb2JqZGlyLyRzdWJkaXIvJGxpYmZpbGVd XQogKwogK3Vuc2V0X2JvYXJkX2luZm8gZjkwY29tcGlsZXIKICtpZiBbaW5mbyBleGlzdHMgb2xk X2Y5MGNvbXBpbGVyXSB7CkBAIC0yMDMsMTAgKzIwMywxMCBAQCBJbmRleDogZ2RiLTcuMi41MC4y MDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnktbW9kdWxlLmV4cAogICAg ICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2ZpbGV9IgogICAgICByZXR1cm4gLTEK ICB9Ci1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L21vZHVsZS5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vbW9kdWxlLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMDExMTYu b3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL21vZHVsZS5leHAJMjAxMC0wOS0yMiAyMToy Mjo0NC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vbW9kdWxlLmV4cAkyMDEwLTExLTE2IDA5OjI3OjIwLjAwMDAwMDAwMCAr MDEwMAorLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL21vZHVsZS5leHAJMjAxMS0wNi0zMCAwMDowNToxNi4wMDAwMDAwMDAgKzAyMDAKKysrKyBn ZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbW9kdWxlLmV4cAky MDExLTEyLTE5IDAyOjI3OjE2Ljc0NzMyNzgzNiArMDEwMAogQEAgLTE2LDcgKzE2LDI1IEBACiAg c2V0IHRlc3RmaWxlICJtb2R1bGUiCiAgc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCkBAIC0y MzQsMTAgKzIzNCwxMCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL21vZHVsZS5leHAKICAgICAgcmV0dXJuIC0xCiAgfQogIAotSW5kZXg6IGdk Yi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZXhwCitJ bmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0cmlu Zy5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZXhwCTIwMTAtMTEtMTYgMDk6MjY6NTAuMDAwMDAwMDAw ICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L3N0cmluZy5leHAJMjAxMC0xMS0xNiAwOToyNzoyMC4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGIt Ny40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZXhw CTIwMTEtMTItMTggMjM6MzU6MjMuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDEx MTIxOC9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0cmluZy5leHAJMjAxMS0xMi0xOSAwMjoy NzoxNi43NDczMjc4MzYgKzAxMDAKIEBAIC0yMyw3ICsyMywyNSBAQCBzZXQgdGVzdGZpbGUgInN0 cmluZyIKICBzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5mOTAKICBzZXQgYmluZmlsZSAke29iamRp cn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CkBAIC0yNjUsMTAgKzI2NSwxMCBAQCBJbmRleDogZ2Ri LTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0cmluZy5leHAKICAg ICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgJHtzcmNmaWxlfSIKICAgICAgcmV0dXJuIC0x CiAgfQotSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9vbXAtc3RlcC5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vb21wLXN0ZXAuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDEw MTExNi5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21wLXN0ZXAuZXhwCTIwMTAtMTEt MTYgMDk6MjY6NTQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL29tcC1zdGVwLmV4cAkyMDEwLTExLTE2IDA5OjI3OjIwLjAw MDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL29tcC1zdGVwLmV4cAkyMDExLTEyLTE5IDAxOjMxOjI0LjAwMDAwMDAwMCAr MDEwMAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9v bXAtc3RlcC5leHAJMjAxMS0xMi0xOSAwMjoyNzoxNi43NDgzMjc4MzIgKzAxMDAKIEBAIC0xNSw3 ICsxNSwyNiBAQAogIAogIHNldCB0ZXN0ZmlsZSAib21wLXN0ZXAiCkBAIC0yOTcsMTAgKzI5Nywx MCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L29tcC1zdGVwLmV4cAogICAgICByZXR1cm4gLTEKICB9CiAgCi1JbmRleDogZ2RiLTcuMi41MC4y MDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Rlcml2ZWQtdHlwZS5leHAKK0luZGV4 OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZGVyaXZlZC10 eXBlLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL2Rlcml2ZWQtdHlwZS5leHAJMjAxMC0wMS0wMSAwODozMjowMi4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vZGVyaXZlZC10eXBlLmV4cAkyMDEwLTExLTE2IDA5OjI3OjIwLjAwMDAwMDAwMCAr MDEwMAorLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL2Rlcml2ZWQtdHlwZS5leHAJMjAxMS0wNi0yOSAxOTo1MDo0Ny4wMDAwMDAwMDAgKzAyMDAK KysrKyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZGVyaXZl ZC10eXBlLmV4cAkyMDExLTEyLTE5IDAyOjI3OjE2Ljc0ODMyNzgzMiArMDEwMAogQEAgLTI4LDgg KzI4LDI2IEBAIHNldCB0ZXN0ZmlsZSAiZGVyaXZlZC10eXBlIgogIHNldCBzcmNmaWxlICR7dGVz dGZpbGV9LmY5MAogIHNldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0K QEAgLTMzMCwxMCArMzMwLDEwIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vZGVyaXZlZC10eXBlLmV4cAogICAgICByZXR1cm4gLTEKICB9CiAg Ci1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1 YmFycmF5LmV4cAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9zdWJhcnJheS5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTAxMTE2 Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJhcnJheS5leHAJMjAxMC0wMS0wMSAw ODozMjowMi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vc3ViYXJyYXkuZXhwCTIwMTAtMTEtMTYgMDk6Mjc6MjAuMDAwMDAw MDAwICswMTAwCistLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vc3ViYXJyYXkuZXhwCTIwMTEtMDYtMjkgMTk6NTA6NDcuMDAwMDAwMDAwICswMjAw CisrKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YmFy cmF5LmV4cAkyMDExLTEyLTE5IDAyOjI3OjE2Ljc0ODMyNzgzMiArMDEwMAogQEAgLTI4LDggKzI4 LDI2IEBAIHNldCB0ZXN0ZmlsZSAic3ViYXJyYXkiCiAgc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0u ZgogIHNldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KQEAgLTM2Mywx MCArMzYzLDEwIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vc3ViYXJyYXkuZXhwCiAgICAgIHJldHVybiAtMQogIH0KICAKLUluZGV4OiBnZGIt Ny4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvdGxzLXNlcGRlYnVnLmV4 cAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy90 bHMtc2VwZGVidWcuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmln L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvdGxzLXNlcGRlYnVnLmV4cAkyMDEwLTExLTE2IDA5 OjI2OjUxLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3Rz dWl0ZS9nZGIudGhyZWFkcy90bHMtc2VwZGVidWcuZXhwCTIwMTAtMTEtMTYgMDk6Mjc6MjAuMDAw MDAwMDAwICswMTAwCistLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi90ZXN0c3VpdGUv Z2RiLnRocmVhZHMvdGxzLXNlcGRlYnVnLmV4cAkyMDExLTEyLTE5IDAwOjI4OjExLjAwMDAwMDAw MCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFk cy90bHMtc2VwZGVidWcuZXhwCTIwMTEtMTItMTkgMDI6Mjc6MTYuNzQ4MzI3ODMyICswMTAwCiBA QCAtMzIsNyArMzIsMjUgQEAgc2V0IGJpbnNoYXJlZGRlYnVnZmlsZSAke29iamRpcn0vJHtzdWJk aQogIAogICMgRklYTUU6IGdjYyBkZXBlbmRlbmN5ICgtV2wsLXNvbmFtZSkuCkBAIC0zOTQsMTEg KzM5NCwxMSBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi50 aHJlYWRzL3Rscy1zZXBkZWJ1Zy5leHAKICAgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUg dGVzdCBsaWJyYXJ5IgogICAgICByZXR1cm4gLTEKICB9Ci1JbmRleDogZ2RiLTcuMi41MC4yMDEw MTExNi9nZGIvdGVzdHN1aXRlL2xpYi9wcmVsaW5rLXN1cHBvcnQuZXhwCitJbmRleDogZ2RiLTcu NC41MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRlL2xpYi9wcmVsaW5rLXN1cHBvcnQuZXhwCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL3By ZWxpbmstc3VwcG9ydC5leHAJMjAxMC0xMC0xMiAyMDoxMjo0OS4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvbGliL3ByZWxpbmstc3VwcG9ydC5l eHAJMjAxMC0xMS0xNiAwOToyNzoyMC4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xMTgsOSArMTE4LDMx IEBAIHByb2MgZmlsZV9jb3B5IHtzcmMgZGVzdH0geworLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgu b3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9wcmVsaW5rLXN1cHBvcnQuZXhwCTIwMTEtMTItMTkgMDI6 MjE6NTYuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1 aXRlL2xpYi9wcmVsaW5rLXN1cHBvcnQuZXhwCTIwMTEtMTItMTkgMDI6Mjc6MTYuNzQ5MzI3ODI4 ICswMTAwCitAQCAtMTE5LDkgKzExOSwzMSBAQCBwcm9jIGZpbGVfY29weSB7c3JjIGRlc3R9IHsK ICBwcm9jIGJ1aWxkX2V4ZWN1dGFibGVfb3duX2xpYnMge3Rlc3RuYW1lIGV4ZWN1dGFibGUgc291 cmNlcyBvcHRpb25zIHtpbnRlcnAgIiJ9IHtkaXIgIiJ9fSB7CiAgICAgIGdsb2JhbCBvYmpkaXIg c3ViZGlyCiAgCkBAIC00MTUsNyArNDE1LDcgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYv Z2RiL3Rlc3RzdWl0ZS9saWIvcHJlbGluay1zdXBwb3J0LmV4cAogKwl1bnNldF9ib2FyZF9pbmZv IGNvbXBpbGVyCiArICAgIH0gZWxzZWlmIFtpbmZvIGV4aXN0cyBvbGRfY29tcGlsZXJdIHsKICsJ dW5zZXQgb2xkX2NvbXBpbGVyCi0gICAgIH0KKysgICAgfQogKyAgICBzZXRfYm9hcmRfaW5mbyBj b21waWxlciBnY2M0NAogKwogKyAgICBzZXQgZXJyIFtidWlsZF9leGVjdXRhYmxlICR0ZXN0bmFt ZSAkZXhlY3V0YWJsZSAkc291cmNlcyAkb3B0aW9uc10KQEAgLTQyMyw3ICs0MjMsNyBAQCBJbmRl eDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2xpYi9wcmVsaW5rLXN1cHBvcnQu ZXhwCiArICAgIHVuc2V0X2JvYXJkX2luZm8gY29tcGlsZXIKICsgICAgaWYgW2luZm8gZXhpc3Rz IG9sZF9jb21waWxlcl0gewogKwlzZXRfYm9hcmRfaW5mbyBjb21waWxlciAkb2xkX2NvbXBpbGVy Ci0rICAgIH0KKyAgICAgfQogKwogKyAgICBpZiB7ICRlcnIgPT0gLTEgfSB7CiArCXJldHVybiAi IiAgIAoKZGlmZiAtLWdpdCBhL2dkYi10dWktc3RyaXAtc3RlcGkucGF0Y2ggYi9nZGItdHVpLXN0 cmlwLXN0ZXBpLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNGJkY2IwLi4w MDAwMDAwCi0tLSBhL2dkYi10dWktc3RyaXAtc3RlcGkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAt MSw3MyArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMS0w OC9tc2cwMDI4My5odG1sCi1TdWJqZWN0OiBbcGF0Y2hdIFRVSTogUGVybWl0IHN0ZXBpIG9uIHN0 cmlwcGVkIGNvZGUKLQotSGksCi0KLW5pY2sgPGNpbm9sdD4gb24gI2dkYkBmcmVlbm9kZSBjb21w bGFpbmVkIG9uZSBjYW5ub3Qgc3RlcGkgb24gc3RyaXBwZWQgYmluYXJ5LgotCi1lY2hvIC1lICcj aW5jbHVkZTx1bmlzdGQuaD5cbmludCBtYWluKHZvaWQpe3JldHVybiBhbGFybSgwKTt9J3xnY2Mg LVdhbGwgLXMgLXggYyAtOy4vZ2RidHVpIC4vYS5vdXQgLW54IC1leCAnbGF5b3V0IGFzbScgLWV4 ICdiIGFsYXJtJyAtZXggciAtZXggZmluaQotd2lsbDoKLQkweDdmZmZmN2FlMjVjMCA8YWxhcm0+ ICAgICAgICAgIG1vdiAgICAkMHgyNSwlZWF4Ci0JLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCShnZGIpIHAveCAkcGMKLQkkMSA9IDB4NDAwNGQyCi0J KGdkYikgc3RlcGkKLQlObyBmdW5jdGlvbiBjb250YWlucyBwcm9ncmFtIGNvdW50ZXIgZm9yIHNl bGVjdGVkIGZyYW1lLgotCShnZGIpIHAveCAkcGMKLQkkMiA9IDB4NDAwNGQyCi0KLVRoYXQgaXMg dGhlIHdpbmRvdyBzdGlsbCBkaXNwbGF5cyBzdGFsZSBjb250ZW50LCBzdGVwaSBkb2VzIG5vdCB3 b3JrIGF0IGFsbC4KLQotIzAgIHRocm93X3ZlcnJvciAoZXJyb3I9R0VORVJJQ19FUlJPUiwgZm10 PTB4ZTczZDIwICJObyBmdW5jdGlvbiBjb250YWlucyBwcm9ncmFtIGNvdW50ZXIgZm9yIHNlbGVj dGVkIGZyYW1lLiIsIGFwPTB4N2ZmZmRiZDNiMGE4KSBhdCBleGNlcHRpb25zLmM6NDAwCi0jMSAg aW4gZXJyb3IgKHN0cmluZz0weGU3M2QyMCAiTm8gZnVuY3Rpb24gY29udGFpbnMgcHJvZ3JhbSBj b3VudGVyIGZvciBzZWxlY3RlZCBmcmFtZS4iKSBhdCB1dGlscy5jOjc4MAotIzIgIGluIHR1aV9z aG93X2ZyYW1lX2luZm8gKGZpPTB4M2VjYTFlMCkgYXQgLi90dWkvdHVpLXN0YWNrLmM6MzgzCi0j MyAgaW4gdHVpX3NlbGVjdGVkX2ZyYW1lX2xldmVsX2NoYW5nZWRfaG9vayAobGV2ZWw9MCkgYXQg Li90dWkvdHVpLWhvb2tzLmM6MjE4Ci0jNCAgaW4gc2VsZWN0X2ZyYW1lIChmaT0weDNlY2ExZTAp IGF0IGZyYW1lLmM6MTM5NgotIzUgIGluIHJlc3RvcmVfc2VsZWN0ZWRfZnJhbWUgKGFfZnJhbWVf aWQ9Li4uLCBmcmFtZV9sZXZlbD0wKSBhdCB0aHJlYWQuYzoxMDQ5Ci0jNiAgaW4gZG9fcmVzdG9y ZV9jdXJyZW50X3RocmVhZF9jbGVhbnVwIChhcmc9MHg0NTZkY2EwKSBhdCB0aHJlYWQuYzoxMTE2 Ci0jNyAgaW4gZG9fbXlfY2xlYW51cHMgKHBteV9jaGFpbj0weDFjODY1ZjAsIG9sZF9jaGFpbj0w eDQ1NmRlOTApIGF0IHV0aWxzLmM6NTE1Ci0jOCAgaW4gZG9fY2xlYW51cHMgKG9sZF9jaGFpbj0w eDQ1NmRlOTApIGF0IHV0aWxzLmM6NDk3Ci0jOSAgaW4gaW5zZXJ0X2JyZWFrcG9pbnRfbG9jYXRp b25zICgpIGF0IGJyZWFrcG9pbnQuYzoyMDIxCi0jMTAgaW4gaW5zZXJ0X2JyZWFrcG9pbnRzICgp IGF0IGJyZWFrcG9pbnQuYzoxOTE5Ci0jMTEgaW4gcHJvY2VlZCAoYWRkcj0xODQ0Njc0NDA3Mzcw OTU1MTYxNSwgc2lnZ25hbD1UQVJHRVRfU0lHTkFMX0RFRkFVTFQsIHN0ZXA9MSkgYXQgaW5mcnVu LmM6MjE1NgotIzEyIGluIHN0ZXBfb25jZSAoc2tpcF9zdWJyb3V0aW5lcz0wLCBzaW5nbGVfaW5z dD0xLCBjb3VudD0xLCB0aHJlYWQ9LTEpIGF0IGluZmNtZC5jOjEwNjgKLSMxMyBpbiBzdGVwXzEg KHNraXBfc3Vicm91dGluZXM9MCwgc2luZ2xlX2luc3Q9MSwgY291bnRfc3RyaW5nPTB4MCkgYXQg aW5mY21kLmM6OTAzCi0jMTQgaW4gc3RlcGlfY29tbWFuZCAoY291bnRfc3RyaW5nPTB4MCwgZnJv bV90dHk9MSkgYXQgaW5mY21kLmM6ODM5Ci0KLVdpdGggdGhlIGZpeCBzdGVwaSB3b3JrcyBhbmQg dGhlIHdpbmRvdyBjb3JyZWN0bHkgZGlzcGxheXM6Ci0JMHg0MDA0ZDIgICAgICAgIHBvcCAgICAl cmJwICAgICAgICAgICAgICAgIAotCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KLQotSSBoYXZlbid0IGZvdW5kIGFueSBUVUkgdGVzdHN1aXRlLgotCi1J IHdpbGwgY2hlY2sgaXQgaW4gKGFmdGVyIHJlZ3Jlc3Npb24gdGVzdGluZyg/KSkgaW4gc29tZSB0 aW1lLgotCi0KLVRoYW5rcywKLUphbgotCi0KLWdkYi8KLTIwMTEtMDgtMTQgIEphbiBLcmF0b2No dmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCUZpeCBUVUkgc3RlcGkgb24gY29k ZSB3aXRob3V0IHN5bWJvbHMuCi0JKiB0dWkvdHVpLXN0YWNrLmMgKHR1aV9zaG93X2ZyYW1lX2lu Zm8pOiBSZW1vdmUgZXJyb3IsIHNldCBMT1cgZm9yCi0JY3VycmVudCBQQyBpbnN0ZWFkLgotCi0t LS0gYS9nZGIvdHVpL3R1aS1zdGFjay5jCi0rKysgYi9nZGIvdHVpL3R1aS1zdGFjay5jCi1AQCAt MzgwLDggKzM4MCwxMSBAQCB0dWlfc2hvd19mcmFtZV9pbmZvIChzdHJ1Y3QgZnJhbWVfaW5mbyAq ZmkpCi0gCSAgICB7Ci0gCSAgICAgIGlmIChmaW5kX3BjX3BhcnRpYWxfZnVuY3Rpb24gKGdldF9m cmFtZV9wYyAoZmkpLCAoY2hhciAqKikgTlVMTCwKLSAJCQkJCSAgICAmbG93LCAoQ09SRV9BRERS KSAwKSA9PSAwKQotLQkJZXJyb3IgKF8oIk5vIGZ1bmN0aW9uIGNvbnRhaW5zIHByb2dyYW0gIgot LQkJCSAiY291bnRlciBmb3Igc2VsZWN0ZWQgZnJhbWUuIikpOwotKwkJewotKwkJICAvKiBUaGVy ZSBpcyBubyBzeW1ib2wgYXZhaWxhYmxlIGZvciBjdXJyZW50IFBDLiAgVGhlcmUgaXMgbm8KLSsJ CSAgICAgc2FmZSB3YXkgaG93IHRvICJkaXNhc3NlbWJsZSBiYWNrd2FyZHMiLiAgKi8KLSsJCSAg bG93ID0gZ2V0X2ZyYW1lX3BjIChmaSk7Ci0rCQl9Ci0gCSAgICAgIGVsc2UKLSAJCWxvdyA9IHR1 aV9nZXRfbG93X2Rpc2Fzc2VtYmx5X2FkZHJlc3MgKGdldF9mcmFtZV9hcmNoIChmaSksCi0gCQkJ CQkJICAgICAgIGxvdywgZ2V0X2ZyYW1lX3BjIChmaSkpOwotCgpkaWZmIC0tZ2l0IGEvZ2RiLXVw c3RyZWFtLnBhdGNoIGIvZ2RiLXVwc3RyZWFtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCBjODFmNzJhLi4wMDAwMDAwCi0tLSBhL2dkYi11cHN0cmVhbS5wYXRjaAorKysgL2Rl di9udWxsCkBAIC0xLDE0ODUgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2JpbnV0 aWxzLWN2cy8yMDExLTA3L21zZzAwMTE2Lmh0bWwKLQotIyMjIHNyYy9pbmNsdWRlL0NoYW5nZUxv ZwkyMDExLzA3LzIyIDE0OjM3OjUwCTEuNTQ2Ci0jIyMgc3JjL2luY2x1ZGUvQ2hhbmdlTG9nCTIw MTEvMDcvMjIgMjA6Mzc6NTAJMS41NDcKLSMjIC0xLDUgKzEsOCBAQAotIDIwMTEtMDctMjIgIEph a3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgotIAotKwkqIGR3YXJmMi5oIChEV19BVF9H TlVfbWFjcm9zKTogTmV3LgotKwkoZW51bSBkd2FyZl9tYWNyb19yZWNvcmRfdHlwZSk6IE5ldyBl bnVtLiAgQWRkIERXX01BQ1JPX0dOVV8qLgotKwotIAlQUiBjKysvNDk3NTYKLSAJKiBsaWJpYmVy dHkuaCAoc3RhY2tfbGltaXRfaW5jcmVhc2UpOiBOZXcgcHJvdG90eXBlLgotIAotLS0tIHNyYy9p bmNsdWRlL2R3YXJmMi5oCTIwMTEvMDYvMjIgMTU6MDM6MTkJMS4yNgotKysrIHNyYy9pbmNsdWRl L2R3YXJmMi5oCTIwMTEvMDcvMjIgMjA6Mzc6NTAJMS4yNwotQEAgLTM2Niw2ICszNjYsOCBAQAot ICAgICBEV19BVF9HTlVfYWxsX3RhaWxfY2FsbF9zaXRlcyA9IDB4MjExNiwKLSAgICAgRFdfQVRf R05VX2FsbF9jYWxsX3NpdGVzID0gMHgyMTE3LAotICAgICBEV19BVF9HTlVfYWxsX3NvdXJjZV9j YWxsX3NpdGVzID0gMHgyMTE4LAotKyAgICAvKiBTZWN0aW9uIG9mZnNldCBpbnRvIC5kZWJ1Z19t YWNybyBzZWN0aW9uLiAgKi8KLSsgICAgRFdfQVRfR05VX21hY3JvcyA9IDB4MjExOSwKLSAgICAg LyogVk1TIGV4dGVuc2lvbnMuICAqLwotICAgICBEV19BVF9WTVNfcnRuYmVnX3BkX2FkZHJlc3Mg PSAweDIyMDEsCi0gICAgIC8qIEdOQVQgZXh0ZW5zaW9ucy4gICovCi1AQCAtODc5LDYgKzg4MSwy MCBAQAotICAgICBEV19NQUNJTkZPX2VuZF9maWxlID0gNCwKLSAgICAgRFdfTUFDSU5GT192ZW5k b3JfZXh0ID0gMjU1Ci0gICB9OwotKwotKy8qIE5hbWVzIGFuZCBjb2RlcyBmb3IgbmV3IHN0eWxl IG1hY3JvIGluZm9ybWF0aW9uLiAgKi8KLStlbnVtIGR3YXJmX21hY3JvX3JlY29yZF90eXBlCi0r ICB7Ci0rICAgIERXX01BQ1JPX0dOVV9kZWZpbmUgPSAxLAotKyAgICBEV19NQUNST19HTlVfdW5k ZWYgPSAyLAotKyAgICBEV19NQUNST19HTlVfc3RhcnRfZmlsZSA9IDMsCi0rICAgIERXX01BQ1JP X0dOVV9lbmRfZmlsZSA9IDQsCi0rICAgIERXX01BQ1JPX0dOVV9kZWZpbmVfaW5kaXJlY3QgPSA1 LAotKyAgICBEV19NQUNST19HTlVfdW5kZWZfaW5kaXJlY3QgPSA2LAotKyAgICBEV19NQUNST19H TlVfdHJhbnNwYXJlbnRfaW5jbHVkZSA9IDcsCi0rICAgIERXX01BQ1JPX0dOVV9sb191c2VyID0g MHhlMCwKLSsgICAgRFdfTUFDUk9fR05VX2hpX3VzZXIgPSAweGZmCi0rICB9OwotIAwKLSAvKiBA QEAgRm9yIHVzZSB3aXRoIEdOVSBmcmFtZSB1bndpbmQgaW5mb3JtYXRpb24uICAqLwotIAotCi0K LQotRllJOiBpbXBsZW1lbnQgbmV3IERXQVJGIG1hY3JvIHByb3Bvc2FsCi1odHRwOi8vc291cmNl d2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMS0wNy9tc2cwMDczMi5odG1sCi1odHRwOi8vc291 cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDExLTA3L21zZzAwMjEyLmh0bWwKLQotIyMjIHNyYy9n ZGIvQ2hhbmdlTG9nCTIwMTEvMDcvMjYgMTU6MjQ6MDEJMS4xMzIyNAotIyMjIHNyYy9nZGIvQ2hh bmdlTG9nCTIwMTEvMDcvMjYgMTc6MDQ6MjEJMS4xMzIyNQotIyMgLTEsMyArMSwyMCBAQAotKzIw MTEtMDctMjYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KLSsKLSsJKiBzeW1maWxl LmggKHN0cnVjdCBkd2FyZjJfZGVidWdfc2VjdGlvbnMpIDxtYWNybz46IE5ldyBmaWVsZC4KLSsJ KiBkd2FyZjJyZWFkLmMgKHJlYWRfaW5kaXJlY3Rfc3RyaW5nX2F0X29mZnNldCk6IE5ldyBmdW5j dGlvbi4KLSsJKHJlYWRfaW5kaXJlY3Rfc3RyaW5nKTogVXNlIGl0LgotKwkoZHdhcmZfZGVjb2Rl X21hY3JvX2J5dGVzKTogTmV3IGZ1bmN0aW9uLCB0YWtlbiBmcm9tCi0rCWR3YXJmX2RlY29kZV9t YWNyb3MuICBIYW5kbGUgRFdfTUFDUk9fR05VXyouCi0rCShkd2FyZl9kZWNvZGVfbWFjcm9zKTog VXNlIGl0LiAgaGFuZGxlIERXX01BQ1JPX0dOVV8qLgotKwkoZHdhcmZfcGFyc2VfbWFjcm9faGVh ZGVyLCBza2lwX2Zvcm1fYnl0ZXMsIHNraXBfdW5rbm93bl9vcGNvZGUpOgotKwlOZXcgZnVuY3Rp b25zLgotKwkoc3RydWN0IGR3YXJmMl9wZXJfb2JqZmlsZSkgPG1hY3JvPjogTmV3IGZpZWxkLgot KwkoZHdhcmYyX2VsZl9uYW1lcyk6IEFkZCAuZGVidWdfbWFjcm8uCi0rCShkd2FyZjJfbWFjcm9z X3Rvb19sb25nX2NvbXBsYWludCk6IEFkZCAnc2VjdGlvbicgYXJndW1lbnQuCi0rCShkd2FyZjJf bG9jYXRlX3NlY3Rpb25zKTogSGFuZGxlIG5ldyBzZWN0aW9uLgotKwkocmVhZF9maWxlX3Njb3Bl KTogSGFuZGxlIERXX0FUX0dOVV9tYWNyb3MuCi0rCShkd2FyZjJfcGVyX29iamZpbGVfZnJlZSk6 IFVubWFwIHRoZSAuZGVidWdfbWFjcm8gc2VjdGlvbi4KLSsKLSAyMDExLTA3LTI2ICBQYXVsIFBs dXpobmlrb3YgIDxwcGx1emhuaWtvdkBnb29nbGUuY29tPgotIAotIAkqIE5FV1M6IE1lbnRpb24g ZGNhY2hlIGNvbmZpZ3VyYXRpb24uCi0tLS0gc3JjL2dkYi9kd2FyZjJyZWFkLmMJMjAxMS8wNy8y MCAxNToxMzo0OQkxLjU1NAotKysrIHNyYy9nZGIvZHdhcmYycmVhZC5jCTIwMTEvMDcvMjYgMTc6 MDQ6MjMJMS41NTUKLUBAIC0xODcsNiArMTg3LDcgQEAKLSAgIHN0cnVjdCBkd2FyZjJfc2VjdGlv bl9pbmZvIGxpbmU7Ci0gICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyBsb2M7Ci0gICBzdHJ1 Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyBtYWNpbmZvOwotKyAgc3RydWN0IGR3YXJmMl9zZWN0aW9u X2luZm8gbWFjcm87Ci0gICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyBzdHI7Ci0gICBzdHJ1 Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyByYW5nZXM7Ci0gICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25f aW5mbyBmcmFtZTsKLUBAIC0yNjQsNiArMjY1LDcgQEAKLSAgIHsgIi5kZWJ1Z19saW5lIiwgIi56 ZGVidWdfbGluZSIgfSwKLSAgIHsgIi5kZWJ1Z19sb2MiLCAiLnpkZWJ1Z19sb2MiIH0sCi0gICB7 ICIuZGVidWdfbWFjaW5mbyIsICIuemRlYnVnX21hY2luZm8iIH0sCi0rICB7ICIuZGVidWdfbWFj cm8iLCAiLnpkZWJ1Z19tYWNybyIgfSwKLSAgIHsgIi5kZWJ1Z19zdHIiLCAiLnpkZWJ1Z19zdHIi IH0sCi0gICB7ICIuZGVidWdfcmFuZ2VzIiwgIi56ZGVidWdfcmFuZ2VzIiB9LAotICAgeyAiLmRl YnVnX3R5cGVzIiwgIi56ZGVidWdfdHlwZXMiIH0sCi1AQCAtODU4LDEwICs4NjAsMTEgQEAKLSB9 Ci0gCi0gc3RhdGljIHZvaWQKLS1kd2FyZjJfbWFjcm9zX3Rvb19sb25nX2NvbXBsYWludCAodm9p ZCkKLStkd2FyZjJfbWFjcm9zX3Rvb19sb25nX2NvbXBsYWludCAoc3RydWN0IGR3YXJmMl9zZWN0 aW9uX2luZm8gKnNlY3Rpb24pCi0gewotICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRz LAotLQkgICAgIF8oIm1hY3JvIGluZm8gcnVucyBvZmYgZW5kIG9mIGAuZGVidWdfbWFjaW5mbycg c2VjdGlvbiIpKTsKLSsJICAgICBfKCJtYWNybyBpbmZvIHJ1bnMgb2ZmIGVuZCBvZiBgJXMnIHNl Y3Rpb24iKSwKLSsJICAgICBzZWN0aW9uLT5hc2VjdGlvbi0+bmFtZSk7Ci0gfQotIAotIHN0YXRp YyB2b2lkCi1AQCAtMTIzMyw3ICsxMjM2LDkgQEAKLSAJCQkJIHN0cnVjdCBkd2FyZjJfY3UgKik7 Ci0gCi0gc3RhdGljIHZvaWQgZHdhcmZfZGVjb2RlX21hY3JvcyAoc3RydWN0IGxpbmVfaGVhZGVy ICosIHVuc2lnbmVkIGludCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy ICosIGJmZCAqLCBzdHJ1Y3QgZHdhcmYyX2N1ICopOwotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNoYXIgKiwgYmZkICosIHN0cnVjdCBkd2FyZjJfY3UgKiwKLSsJCQkJIHN0cnVj dCBkd2FyZjJfc2VjdGlvbl9pbmZvICosCi0rCQkJCSBpbnQpOwotIAotIHN0YXRpYyBpbnQgYXR0 cl9mb3JtX2lzX2Jsb2NrIChzdHJ1Y3QgYXR0cmlidXRlICopOwotIAotQEAgLTE0MzgsNiArMTQ0 MywxMSBAQAotICAgICAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+bWFjaW5mby5hc2VjdGlvbiA9IHNl Y3RwOwotICAgICAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+bWFjaW5mby5zaXplID0gYmZkX2dldF9z ZWN0aW9uX3NpemUgKHNlY3RwKTsKLSAgICAgfQotKyAgZWxzZSBpZiAoc2VjdGlvbl9pc19wIChz ZWN0cC0+bmFtZSwgJm5hbWVzLT5tYWNybykpCi0rICAgIHsKLSsgICAgICBkd2FyZjJfcGVyX29i amZpbGUtPm1hY3JvLmFzZWN0aW9uID0gc2VjdHA7Ci0rICAgICAgZHdhcmYyX3Blcl9vYmpmaWxl LT5tYWNyby5zaXplID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3RwKTsKLSsgICAgfQotICAg ZWxzZSBpZiAoc2VjdGlvbl9pc19wIChzZWN0cC0+bmFtZSwgJm5hbWVzLT5zdHIpKQotICAgICB7 Ci0gICAgICAgZHdhcmYyX3Blcl9vYmpmaWxlLT5zdHIuYXNlY3Rpb24gPSBzZWN0cDsKLUBAIC01 NjQxLDEzICs1NjUxLDI4IEBACi0gICAgICByZWZlcnMgdG8gaW5mb3JtYXRpb24gaW4gdGhlIGxp bmUgbnVtYmVyIGluZm8gc3RhdGVtZW50IHByb2dyYW0KLSAgICAgIGhlYWRlciwgc28gd2UgY2Fu IG9ubHkgcmVhZCBpdCBpZiB3ZSd2ZSByZWFkIHRoZSBoZWFkZXIKLSAgICAgIHN1Y2Nlc3NmdWxs eS4gICovCi0tICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfbWFjcm9faW5mbywgY3Up OwotKyAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX0dOVV9tYWNyb3MsIGN1KTsKLSAg IGlmIChhdHRyICYmIGN1LT5saW5lX2hlYWRlcikKLSAgICAgewotLSAgICAgIHVuc2lnbmVkIGlu dCBtYWNyb19vZmZzZXQgPSBEV19VTlNORCAoYXR0cik7Ci0rICAgICAgaWYgKGR3YXJmMl9hdHRy IChkaWUsIERXX0FUX21hY3JvX2luZm8sIGN1KSkKLSsJY29tcGxhaW50ICgmc3ltZmlsZV9jb21w bGFpbnRzLAotKwkJICAgXygiQ1UgcmVmZXJzIHRvIGJvdGggRFdfQVRfR05VX21hY3JvcyBhbmQg RFdfQVRfbWFjcm9faW5mbyIpKTsKLSsKLSsgICAgICBkd2FyZl9kZWNvZGVfbWFjcm9zIChjdS0+ bGluZV9oZWFkZXIsIERXX1VOU05EIChhdHRyKSwKLSsJCQkgICBjb21wX2RpciwgYWJmZCwgY3Us Ci0rCQkJICAgJmR3YXJmMl9wZXJfb2JqZmlsZS0+bWFjcm8sIDEpOwotKyAgICB9Ci0rICBlbHNl Ci0rICAgIHsKLSsgICAgICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfbWFjcm9faW5m bywgY3UpOwotKyAgICAgIGlmIChhdHRyICYmIGN1LT5saW5lX2hlYWRlcikKLSsJewotKwkgIHVu c2lnbmVkIGludCBtYWNyb19vZmZzZXQgPSBEV19VTlNORCAoYXR0cik7Ci0gCi0tICAgICAgZHdh cmZfZGVjb2RlX21hY3JvcyAoY3UtPmxpbmVfaGVhZGVyLCBtYWNyb19vZmZzZXQsCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29tcF9kaXIsIGFiZmQsIGN1KTsKLSsJICBkd2FyZl9kZWNv ZGVfbWFjcm9zIChjdS0+bGluZV9oZWFkZXIsIG1hY3JvX29mZnNldCwKLSsJCQkgICAgICAgY29t cF9kaXIsIGFiZmQsIGN1LAotKwkJCSAgICAgICAmZHdhcmYyX3Blcl9vYmpmaWxlLT5tYWNpbmZv LCAwKTsKLSsJfQotICAgICB9Ci0gICBkb19jbGVhbnVwcyAoYmFja190byk7Ci0gfQotQEAgLTEw MjYyLDMyICsxMDI4NywzMiBAQAotIH0KLSAKLSBzdGF0aWMgY2hhciAqCi0tcmVhZF9pbmRpcmVj dF9zdHJpbmcgKGJmZCAqYWJmZCwgZ2RiX2J5dGUgKmJ1ZiwKLS0JCSAgICAgIGNvbnN0IHN0cnVj dCBjb21wX3VuaXRfaGVhZCAqY3VfaGVhZGVyLAotLQkJICAgICAgdW5zaWduZWQgaW50ICpieXRl c19yZWFkX3B0cikKLStyZWFkX2luZGlyZWN0X3N0cmluZ19hdF9vZmZzZXQgKGJmZCAqYWJmZCwg TE9OR0VTVCBzdHJfb2Zmc2V0KQotIHsKLS0gIExPTkdFU1Qgc3RyX29mZnNldCA9IHJlYWRfb2Zm c2V0IChhYmZkLCBidWYsIGN1X2hlYWRlciwgYnl0ZXNfcmVhZF9wdHIpOwotLQotICAgZHdhcmYy X3JlYWRfc2VjdGlvbiAoZHdhcmYyX3Blcl9vYmpmaWxlLT5vYmpmaWxlLCAmZHdhcmYyX3Blcl9v YmpmaWxlLT5zdHIpOwotICAgaWYgKGR3YXJmMl9wZXJfb2JqZmlsZS0+c3RyLmJ1ZmZlciA9PSBO VUxMKQotLSAgICB7Ci0tICAgICAgZXJyb3IgKF8oIkRXX0ZPUk1fc3RycCB1c2VkIHdpdGhvdXQg LmRlYnVnX3N0ciBzZWN0aW9uIFtpbiBtb2R1bGUgJXNdIiksCi0tCQkgICAgICBiZmRfZ2V0X2Zp bGVuYW1lIChhYmZkKSk7Ci0tICAgICAgcmV0dXJuIE5VTEw7Ci0tICAgIH0KLSsgICAgZXJyb3Ig KF8oIkRXX0ZPUk1fc3RycCB1c2VkIHdpdGhvdXQgLmRlYnVnX3N0ciBzZWN0aW9uIFtpbiBtb2R1 bGUgJXNdIiksCi0rCSAgIGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpKTsKLSAgIGlmIChzdHJfb2Zm c2V0ID49IGR3YXJmMl9wZXJfb2JqZmlsZS0+c3RyLnNpemUpCi0tICAgIHsKLS0gICAgICBlcnJv ciAoXygiRFdfRk9STV9zdHJwIHBvaW50aW5nIG91dHNpZGUgb2YgIgotLQkgICAgICAgIi5kZWJ1 Z19zdHIgc2VjdGlvbiBbaW4gbW9kdWxlICVzXSIpLAotLQkgICAgIGJmZF9nZXRfZmlsZW5hbWUg KGFiZmQpKTsKLS0gICAgICByZXR1cm4gTlVMTDsKLS0gICAgfQotKyAgICBlcnJvciAoXygiRFdf Rk9STV9zdHJwIHBvaW50aW5nIG91dHNpZGUgb2YgIgotKwkgICAgICIuZGVidWdfc3RyIHNlY3Rp b24gW2luIG1vZHVsZSAlc10iKSwKLSsJICAgYmZkX2dldF9maWxlbmFtZSAoYWJmZCkpOwotICAg Z2RiX2Fzc2VydCAoSE9TVF9DSEFSX0JJVCA9PSA4KTsKLSAgIGlmIChkd2FyZjJfcGVyX29iamZp bGUtPnN0ci5idWZmZXJbc3RyX29mZnNldF0gPT0gJ1wwJykKLSAgICAgcmV0dXJuIE5VTEw7Ci0g ICByZXR1cm4gKGNoYXIgKikgKGR3YXJmMl9wZXJfb2JqZmlsZS0+c3RyLmJ1ZmZlciArIHN0cl9v ZmZzZXQpOwotIH0KLSAKLStzdGF0aWMgY2hhciAqCi0rcmVhZF9pbmRpcmVjdF9zdHJpbmcgKGJm ZCAqYWJmZCwgZ2RiX2J5dGUgKmJ1ZiwKLSsJCSAgICAgIGNvbnN0IHN0cnVjdCBjb21wX3VuaXRf aGVhZCAqY3VfaGVhZGVyLAotKwkJICAgICAgdW5zaWduZWQgaW50ICpieXRlc19yZWFkX3B0cikK LSt7Ci0rICBMT05HRVNUIHN0cl9vZmZzZXQgPSByZWFkX29mZnNldCAoYWJmZCwgYnVmLCBjdV9o ZWFkZXIsIGJ5dGVzX3JlYWRfcHRyKTsKLSsKLSsgIHJldHVybiByZWFkX2luZGlyZWN0X3N0cmlu Z19hdF9vZmZzZXQgKGFiZmQsIHN0cl9vZmZzZXQpOwotK30KLSsKLSBzdGF0aWMgdW5zaWduZWQg bG9uZwotIHJlYWRfdW5zaWduZWRfbGViMTI4IChiZmQgKmFiZmQsIGdkYl9ieXRlICpidWYsIHVu c2lnbmVkIGludCAqYnl0ZXNfcmVhZF9wdHIpCi0gewotQEAgLTE0NjY5LDExNyArMTQ2OTQsMjA1 IEBACi0gICAgIGR3YXJmMl9tYWNyb19tYWxmb3JtZWRfZGVmaW5pdGlvbl9jb21wbGFpbnQgKGJv ZHkpOwotIH0KLSAKLSsvKiBTa2lwIHNvbWUgYnl0ZXMgZnJvbSBCWVRFUyBhY2NvcmRpbmcgdG8g dGhlIGZvcm0gZ2l2ZW4gaW4gRk9STS4KLSsgICBSZXR1cm5zIHRoZSBuZXcgcG9pbnRlci4gICov Ci0gCi0tc3RhdGljIHZvaWQKLS1kd2FyZl9kZWNvZGVfbWFjcm9zIChzdHJ1Y3QgbGluZV9oZWFk ZXIgKmxoLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAotLSAgICAgICAgICAgICAgICAgICAgIGNoYXIg KmNvbXBfZGlyLCBiZmQgKmFiZmQsCi0tICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGR3YXJm Ml9jdSAqY3UpCi0rc3RhdGljIGdkYl9ieXRlICoKLStza2lwX2Zvcm1fYnl0ZXMgKGJmZCAqYWJm ZCwgZ2RiX2J5dGUgKmJ5dGVzLAotKwkJIGVudW0gZHdhcmZfZm9ybSBmb3JtLAotKwkJIHVuc2ln bmVkIGludCBvZmZzZXRfc2l6ZSwKLSsJCSBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqc2Vj dGlvbikKLSB7Ci0tICBnZGJfYnl0ZSAqbWFjX3B0ciwgKm1hY19lbmQ7Ci0tICBzdHJ1Y3QgbWFj cm9fc291cmNlX2ZpbGUgKmN1cnJlbnRfZmlsZSA9IDA7Ci0tICBlbnVtIGR3YXJmX21hY2luZm9f cmVjb3JkX3R5cGUgbWFjaW5mb190eXBlOwotLSAgaW50IGF0X2NvbW1hbmRsaW5lOwotKyAgdW5z aWduZWQgaW50IGJ5dGVzX3JlYWQ7Ci0gCi0tICBkd2FyZjJfcmVhZF9zZWN0aW9uIChkd2FyZjJf cGVyX29iamZpbGUtPm9iamZpbGUsCi0tCQkgICAgICAgJmR3YXJmMl9wZXJfb2JqZmlsZS0+bWFj aW5mbyk7Ci0tICBpZiAoZHdhcmYyX3Blcl9vYmpmaWxlLT5tYWNpbmZvLmJ1ZmZlciA9PSBOVUxM KQotKyAgc3dpdGNoIChmb3JtKQotICAgICB7Ci0tICAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9j b21wbGFpbnRzLCBfKCJtaXNzaW5nIC5kZWJ1Z19tYWNpbmZvIHNlY3Rpb24iKSk7Ci0tICAgICAg cmV0dXJuOwotKyAgICBjYXNlIERXX0ZPUk1fZGF0YTE6Ci0rICAgIGNhc2UgRFdfRk9STV9mbGFn OgotKyAgICAgICsrYnl0ZXM7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgRFdfRk9STV9k YXRhMjoKLSsgICAgICBieXRlcyArPSAyOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIERX X0ZPUk1fZGF0YTQ6Ci0rICAgICAgYnl0ZXMgKz0gNDsKLSsgICAgICBicmVhazsKLSsKLSsgICAg Y2FzZSBEV19GT1JNX2RhdGE4OgotKyAgICAgIGJ5dGVzICs9IDg7Ci0rICAgICAgYnJlYWs7Ci0r Ci0rICAgIGNhc2UgRFdfRk9STV9zdHJpbmc6Ci0rICAgICAgcmVhZF9kaXJlY3Rfc3RyaW5nIChh YmZkLCBieXRlcywgJmJ5dGVzX3JlYWQpOwotKyAgICAgIGJ5dGVzICs9IGJ5dGVzX3JlYWQ7Ci0r ICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgRFdfRk9STV9zZWNfb2Zmc2V0OgotKyAgICBjYXNl IERXX0ZPUk1fc3RycDoKLSsgICAgICBieXRlcyArPSBvZmZzZXRfc2l6ZTsKLSsgICAgICBicmVh azsKLSsKLSsgICAgY2FzZSBEV19GT1JNX2Jsb2NrOgotKyAgICAgIGJ5dGVzICs9IHJlYWRfdW5z aWduZWRfbGViMTI4IChhYmZkLCBieXRlcywgJmJ5dGVzX3JlYWQpOwotKyAgICAgIGJ5dGVzICs9 IGJ5dGVzX3JlYWQ7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgRFdfRk9STV9ibG9jazE6 Ci0rICAgICAgYnl0ZXMgKz0gMSArIHJlYWRfMV9ieXRlIChhYmZkLCBieXRlcyk7Ci0rICAgICAg YnJlYWs7Ci0rICAgIGNhc2UgRFdfRk9STV9ibG9jazI6Ci0rICAgICAgYnl0ZXMgKz0gMiArIHJl YWRfMl9ieXRlcyAoYWJmZCwgYnl0ZXMpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIERXX0ZP Uk1fYmxvY2s0OgotKyAgICAgIGJ5dGVzICs9IDQgKyByZWFkXzRfYnl0ZXMgKGFiZmQsIGJ5dGVz KTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBEV19GT1JNX3NkYXRhOgotKyAgICBjYXNl IERXX0ZPUk1fdWRhdGE6Ci0rICAgICAgYnl0ZXMgPSBza2lwX2xlYjEyOCAoYWJmZCwgYnl0ZXMp OwotKyAgICAgIGJyZWFrOwotKwotKyAgICBkZWZhdWx0OgotKyAgICAgIHsKLSsgICAgICBjb21w bGFpbjoKLSsJY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAotKwkJICAgXygiaW52YWxp ZCBmb3JtIDB4JXggaW4gYCVzJyIpLAotKwkJICAgZm9ybSwKLSsJCSAgIHNlY3Rpb24tPmFzZWN0 aW9uLT5uYW1lKTsKLSsJcmV0dXJuIE5VTEw7Ci0rICAgICAgfQotICAgICB9Ci0gCi0tICAvKiBG aXJzdCBwYXNzOiBGaW5kIHRoZSBuYW1lIG9mIHRoZSBiYXNlIGZpbGVuYW1lLgotLSAgICAgVGhp cyBmaWxlbmFtZSBpcyBuZWVkZWQgaW4gb3JkZXIgdG8gcHJvY2VzcyBhbGwgbWFjcm9zIHdob3Nl IGRlZmluaXRpb24KLS0gICAgIChvciB1bmRlZmluaXRpb24pIGNvbWVzIGZyb20gdGhlIGNvbW1h bmQgbGluZS4gIFRoZXNlIG1hY3JvcyBhcmUgZGVmaW5lZAotLSAgICAgYmVmb3JlIHRoZSBmaXJz dCBEV19NQUNJTkZPX3N0YXJ0X2ZpbGUgZW50cnksIGFuZCB5ZXQgc3RpbGwgbmVlZCB0byBiZQot LSAgICAgYXNzb2NpYXRlZCB0byB0aGUgYmFzZSBmaWxlLgotKyAgcmV0dXJuIGJ5dGVzOwotK30K LSAKLS0gICAgIFRvIGRldGVybWluZSB0aGUgYmFzZSBmaWxlIG5hbWUsIHdlIHNjYW4gdGhlIG1h Y3JvIGRlZmluaXRpb25zIHVudGlsIHdlCi0tICAgICByZWFjaCB0aGUgZmlyc3QgRFdfTUFDSU5G T19zdGFydF9maWxlIGVudHJ5LiAgV2UgdGhlbiBpbml0aWFsaXplCi0tICAgICBDVVJSRU5UX0ZJ TEUgYWNjb3JkaW5nbHkgc28gdGhhdCBhbnkgbWFjcm8gZGVmaW5pdGlvbiBmb3VuZCBiZWZvcmUg dGhlCi0tICAgICBmaXJzdCBEV19NQUNJTkZPX3N0YXJ0X2ZpbGUgY2FuIHN0aWxsIGJlIGFzc29j aWF0ZWQgdG8gdGhlIGJhc2UgZmlsZS4gICovCi0rLyogQSBoZWxwZXIgZm9yIGR3YXJmX2RlY29k ZV9tYWNyb3MgdGhhdCBoYW5kbGVzIHNraXBwaW5nIGFuIHVua25vd24KLSsgICBvcGNvZGUuICBS ZXR1cm5zIGFuIHVwZGF0ZWQgcG9pbnRlciB0byB0aGUgbWFjcm8gZGF0YSBidWZmZXI7IG9yLAot KyAgIG9uIGVycm9yLCBpc3N1ZXMgYSBjb21wbGFpbnQgYW5kIHJldHVybnMgTlVMTC4gICovCi0g Ci0tICBtYWNfcHRyID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5tYWNpbmZvLmJ1ZmZlciArIG9mZnNl dDsKLS0gIG1hY19lbmQgPSBkd2FyZjJfcGVyX29iamZpbGUtPm1hY2luZm8uYnVmZmVyCi0tICAg ICsgZHdhcmYyX3Blcl9vYmpmaWxlLT5tYWNpbmZvLnNpemU7Ci0rc3RhdGljIGdkYl9ieXRlICoK LStza2lwX3Vua25vd25fb3Bjb2RlICh1bnNpZ25lZCBpbnQgb3Bjb2RlLAotKwkJICAgICBnZGJf Ynl0ZSAqKm9wY29kZV9kZWZpbml0aW9ucywKLSsJCSAgICAgZ2RiX2J5dGUgKm1hY19wdHIsCi0r CQkgICAgIGJmZCAqYWJmZCwKLSsJCSAgICAgdW5zaWduZWQgaW50IG9mZnNldF9zaXplLAotKwkJ ICAgICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqc2VjdGlvbikKLSt7Ci0rICB1bnNpZ25l ZCBpbnQgYnl0ZXNfcmVhZCwgaTsKLSsgIHVuc2lnbmVkIGxvbmcgYXJnOwotKyAgZ2RiX2J5dGUg KmRlZm47Ci0gCi0tICBkbwotKyAgaWYgKG9wY29kZV9kZWZpbml0aW9uc1tvcGNvZGVdID09IE5V TEwpCi0gICAgIHsKLS0gICAgICAvKiBEbyB3ZSBhdCBsZWFzdCBoYXZlIHJvb20gZm9yIGEgbWFj aW5mbyB0eXBlIGJ5dGU/ICAqLwotLSAgICAgIGlmIChtYWNfcHRyID49IG1hY19lbmQpCi0tICAg ICAgICB7Ci0tCSAgLyogQ29tcGxhaW50IGlzIHByaW50ZWQgZHVyaW5nIHRoZSBzZWNvbmQgcGFz cyBhcyBHREIgd2lsbCBwcm9iYWJseQotLQkgICAgIHN0b3AgdGhlIGZpcnN0IHBhc3MgZWFybGll ciB1cG9uIGZpbmRpbmcKLS0JICAgICBEV19NQUNJTkZPX3N0YXJ0X2ZpbGUuICAqLwotLQkgIGJy ZWFrOwotLSAgICAgICAgfQotKyAgICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywK LSsJCSBfKCJ1bnJlY29nbml6ZWQgRFdfTUFDRklOTyBvcGNvZGUgMHgleCIpLAotKwkJIG9wY29k ZSk7Ci0rICAgICAgcmV0dXJuIE5VTEw7Ci0rICAgIH0KLSAKLS0gICAgICBtYWNpbmZvX3R5cGUg PSByZWFkXzFfYnl0ZSAoYWJmZCwgbWFjX3B0cik7Ci0tICAgICAgbWFjX3B0cisrOwotKyAgZGVm biA9IG9wY29kZV9kZWZpbml0aW9uc1tvcGNvZGVdOwotKyAgYXJnID0gcmVhZF91bnNpZ25lZF9s ZWIxMjggKGFiZmQsIGRlZm4sICZieXRlc19yZWFkKTsKLSsgIGRlZm4gKz0gYnl0ZXNfcmVhZDsK LSAKLS0gICAgICBzd2l0Y2ggKG1hY2luZm9fdHlwZSkKLS0gICAgICAgIHsKLS0gICAgICAgICAg LyogQSB6ZXJvIG1hY2luZm8gdHlwZSBpbmRpY2F0ZXMgdGhlIGVuZCBvZiB0aGUgbWFjcm8KLS0g ICAgICAgICAgICAgaW5mb3JtYXRpb24uICAqLwotLSAgICAgICAgY2FzZSAwOgotLQkgIGJyZWFr OwotKyAgZm9yIChpID0gMDsgaSA8IGFyZzsgKytpKQotKyAgICB7Ci0rICAgICAgbWFjX3B0ciA9 IHNraXBfZm9ybV9ieXRlcyAoYWJmZCwgbWFjX3B0ciwgZGVmbltpXSwgb2Zmc2V0X3NpemUsIHNl Y3Rpb24pOwotKyAgICAgIGlmIChtYWNfcHRyID09IE5VTEwpCi0rCXsKLSsJICAvKiBza2lwX2Zv cm1fYnl0ZXMgYWxyZWFkeSBpc3N1ZWQgdGhlIGNvbXBsYWludC4gICovCi0rCSAgcmV0dXJuIE5V TEw7Ci0rCX0KLSsgICAgfQotIAotLQljYXNlIERXX01BQ0lORk9fZGVmaW5lOgotLQljYXNlIERX X01BQ0lORk9fdW5kZWY6Ci0tCSAgLyogT25seSBza2lwIHRoZSBkYXRhIGJ5IE1BQ19QVFIuICAq LwotLQkgIHsKLS0JICAgIHVuc2lnbmVkIGludCBieXRlc19yZWFkOwotKyAgcmV0dXJuIG1hY19w dHI7Ci0rfQotIAotLQkgICAgcmVhZF91bnNpZ25lZF9sZWIxMjggKGFiZmQsIG1hY19wdHIsICZi eXRlc19yZWFkKTsKLS0JICAgIG1hY19wdHIgKz0gYnl0ZXNfcmVhZDsKLS0JICAgIHJlYWRfZGly ZWN0X3N0cmluZyAoYWJmZCwgbWFjX3B0ciwgJmJ5dGVzX3JlYWQpOwotLQkgICAgbWFjX3B0ciAr PSBieXRlc19yZWFkOwotLQkgIH0KLS0JICBicmVhazsKLSsvKiBBIGhlbHBlciBmdW5jdGlvbiB3 aGljaCBwYXJzZXMgdGhlIGhlYWRlciBvZiBhIG1hY3JvIHNlY3Rpb24uCi0rICAgSWYgdGhlIG1h Y3JvIHNlY3Rpb24gaXMgdGhlIGV4dGVuZGVkIChmb3Igbm93IGNhbGxlZCAiR05VIikgdHlwZSwK LSsgICB0aGVuIHRoaXMgdXBkYXRlcyAqT0ZGU0VUX1NJWkUuICBSZXR1cm5zIGEgcG9pbnRlciB0 byBqdXN0IGFmdGVyCi0rICAgdGhlIGhlYWRlciwgb3IgaXNzdWVzIGEgY29tcGxhaW50IGFuZCBy ZXR1cm5zIE5VTEwgb24gZXJyb3IuICAqLwotIAotLQljYXNlIERXX01BQ0lORk9fc3RhcnRfZmls ZToKLS0JICB7Ci0tCSAgICB1bnNpZ25lZCBpbnQgYnl0ZXNfcmVhZDsKLS0JICAgIGludCBsaW5l LCBmaWxlOwotK3N0YXRpYyBnZGJfYnl0ZSAqCi0rZHdhcmZfcGFyc2VfbWFjcm9faGVhZGVyIChn ZGJfYnl0ZSAqKm9wY29kZV9kZWZpbml0aW9ucywKLSsJCQkgIGJmZCAqYWJmZCwKLSsJCQkgIGdk Yl9ieXRlICptYWNfcHRyLAotKwkJCSAgdW5zaWduZWQgaW50ICpvZmZzZXRfc2l6ZSwKLSsJCQkg IGludCBzZWN0aW9uX2lzX2dudSkKLSt7Ci0rICBtZW1zZXQgKG9wY29kZV9kZWZpbml0aW9ucywg MCwgMjU2ICogc2l6ZW9mIChnZGJfYnl0ZSAqKSk7Ci0gCi0tCSAgICBsaW5lID0gcmVhZF91bnNp Z25lZF9sZWIxMjggKGFiZmQsIG1hY19wdHIsICZieXRlc19yZWFkKTsKLS0JICAgIG1hY19wdHIg Kz0gYnl0ZXNfcmVhZDsKLS0JICAgIGZpbGUgPSByZWFkX3Vuc2lnbmVkX2xlYjEyOCAoYWJmZCwg bWFjX3B0ciwgJmJ5dGVzX3JlYWQpOwotLQkgICAgbWFjX3B0ciArPSBieXRlc19yZWFkOwotKyAg aWYgKHNlY3Rpb25faXNfZ251KQotKyAgICB7Ci0rICAgICAgdW5zaWduZWQgaW50IHZlcnNpb24s IGZsYWdzOwotIAotLQkgICAgY3VycmVudF9maWxlID0gbWFjcm9fc3RhcnRfZmlsZSAoZmlsZSwg bGluZSwgY3VycmVudF9maWxlLAotLQkJCQkJICAgICBjb21wX2RpciwgbGgsIGN1LT5vYmpmaWxl KTsKLS0JICB9Ci0tCSAgYnJlYWs7Ci0rICAgICAgdmVyc2lvbiA9IHJlYWRfMl9ieXRlcyAoYWJm ZCwgbWFjX3B0cik7Ci0rICAgICAgaWYgKHZlcnNpb24gIT0gNCkKLSsJewotKwkgIGNvbXBsYWlu dCAoJnN5bWZpbGVfY29tcGxhaW50cywKLSsJCSAgICAgXygidW5yZWNvZ25pemVkIHZlcnNpb24g YCVkJyBpbiAuZGVidWdfbWFjcm8gc2VjdGlvbiIpLAotKwkJICAgICB2ZXJzaW9uKTsKLSsJICBy ZXR1cm4gTlVMTDsKLSsJfQotKyAgICAgIG1hY19wdHIgKz0gMjsKLSAKLS0JY2FzZSBEV19NQUNJ TkZPX2VuZF9maWxlOgotLQkgIC8qIE5vIGRhdGEgdG8gc2tpcCBieSBNQUNfUFRSLiAgKi8KLS0J ICBicmVhazsKLSsgICAgICBmbGFncyA9IHJlYWRfMV9ieXRlIChhYmZkLCBtYWNfcHRyKTsKLSsg ICAgICArK21hY19wdHI7Ci0rICAgICAgKm9mZnNldF9zaXplID0gKGZsYWdzICYgMSkgPyA4IDog NDsKLSAKLS0JY2FzZSBEV19NQUNJTkZPX3ZlbmRvcl9leHQ6Ci0tCSAgLyogT25seSBza2lwIHRo ZSBkYXRhIGJ5IE1BQ19QVFIuICAqLwotLQkgIHsKLS0JICAgIHVuc2lnbmVkIGludCBieXRlc19y ZWFkOwotKyAgICAgIGlmICgoZmxhZ3MgJiAyKSAhPSAwKQotKwkvKiBXZSBkb24ndCBuZWVkIHRo ZSBsaW5lIHRhYmxlIG9mZnNldC4gICovCi0rCW1hY19wdHIgKz0gKm9mZnNldF9zaXplOwotIAot LQkgICAgcmVhZF91bnNpZ25lZF9sZWIxMjggKGFiZmQsIG1hY19wdHIsICZieXRlc19yZWFkKTsK LS0JICAgIG1hY19wdHIgKz0gYnl0ZXNfcmVhZDsKLS0JICAgIHJlYWRfZGlyZWN0X3N0cmluZyAo YWJmZCwgbWFjX3B0ciwgJmJ5dGVzX3JlYWQpOwotLQkgICAgbWFjX3B0ciArPSBieXRlc19yZWFk OwotLQkgIH0KLS0JICBicmVhazsKLSsgICAgICAvKiBWZW5kb3Igb3Bjb2RlIGRlc2NyaXB0aW9u cy4gICovCi0rICAgICAgaWYgKChmbGFncyAmIDQpICE9IDApCi0rCXsKLSsJICB1bnNpZ25lZCBp bnQgaSwgY291bnQ7Ci0gCi0tCWRlZmF1bHQ6Ci0tCSAgYnJlYWs7Ci0rCSAgY291bnQgPSByZWFk XzFfYnl0ZSAoYWJmZCwgbWFjX3B0cik7Ci0rCSAgKyttYWNfcHRyOwotKwkgIGZvciAoaSA9IDA7 IGkgPCBjb3VudDsgKytpKQotKwkgICAgewotKwkgICAgICB1bnNpZ25lZCBpbnQgb3Bjb2RlLCBi eXRlc19yZWFkOwotKwkgICAgICB1bnNpZ25lZCBsb25nIGFyZzsKLSsKLSsJICAgICAgb3Bjb2Rl ID0gcmVhZF8xX2J5dGUgKGFiZmQsIG1hY19wdHIpOwotKwkgICAgICArK21hY19wdHI7Ci0rCSAg ICAgIG9wY29kZV9kZWZpbml0aW9uc1tvcGNvZGVdID0gbWFjX3B0cjsKLSsJICAgICAgYXJnID0g cmVhZF91bnNpZ25lZF9sZWIxMjggKGFiZmQsIG1hY19wdHIsICZieXRlc19yZWFkKTsKLSsJICAg ICAgbWFjX3B0ciArPSBieXRlc19yZWFkOwotKwkgICAgICBtYWNfcHRyICs9IGFyZzsKLSsJICAg IH0KLSAJfQotLSAgICB9IHdoaWxlIChtYWNpbmZvX3R5cGUgIT0gMCAmJiBjdXJyZW50X2ZpbGUg PT0gTlVMTCk7Ci0rICAgIH0KLSAKLS0gIC8qIFNlY29uZCBwYXNzOiBQcm9jZXNzIGFsbCBlbnRy aWVzLgotKyAgcmV0dXJuIG1hY19wdHI7Ci0rfQotIAotLSAgICAgVXNlIHRoZSBBVF9DT01NQU5E X0xJTkUgZmxhZyB0byBkZXRlcm1pbmUgd2hldGhlciB3ZSBhcmUgc3RpbGwgcHJvY2Vzc2luZwot LSAgICAgY29tbWFuZC1saW5lIG1hY3JvIGRlZmluaXRpb25zL3VuZGVmaW5pdGlvbnMuICBUaGlz IGZsYWcgaXMgdW5zZXQgd2hlbiB3ZQotLSAgICAgcmVhY2ggdGhlIGZpcnN0IERXX01BQ0lORk9f c3RhcnRfZmlsZSBlbnRyeS4gICovCi0rLyogQSBoZWxwZXIgZm9yIGR3YXJmX2RlY29kZV9tYWNy b3MgdGhhdCBoYW5kbGVzIHRoZSBHTlUgZXh0ZW5zaW9ucywKLSsgICBpbmNsdWRpbmcgRFdfR05V X01BQ0lORk9fdHJhbnNwYXJlbnRfaW5jbHVkZS4gICovCi0rCi0rc3RhdGljIHZvaWQKLStkd2Fy Zl9kZWNvZGVfbWFjcm9fYnl0ZXMgKGJmZCAqYWJmZCwgZ2RiX2J5dGUgKm1hY19wdHIsIGdkYl9i eXRlICptYWNfZW5kLAotKwkJCSAgc3RydWN0IG1hY3JvX3NvdXJjZV9maWxlICpjdXJyZW50X2Zp bGUsCi0rCQkJICBzdHJ1Y3QgbGluZV9oZWFkZXIgKmxoLCBjaGFyICpjb21wX2RpciwKLSsJCQkg IHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICpzZWN0aW9uLAotKwkJCSAgaW50IHNlY3Rpb25f aXNfZ251LAotKwkJCSAgdW5zaWduZWQgaW50IG9mZnNldF9zaXplLAotKwkJCSAgc3RydWN0IG9i amZpbGUgKm9iamZpbGUpCi0rewotKyAgZW51bSBkd2FyZl9tYWNyb19yZWNvcmRfdHlwZSBtYWNp bmZvX3R5cGU7Ci0rICBpbnQgYXRfY29tbWFuZGxpbmU7Ci0rICBnZGJfYnl0ZSAqb3Bjb2RlX2Rl ZmluaXRpb25zWzI1Nl07Ci0gCi0tICBtYWNfcHRyID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5tYWNp bmZvLmJ1ZmZlciArIG9mZnNldDsKLSsgIG1hY19wdHIgPSBkd2FyZl9wYXJzZV9tYWNyb19oZWFk ZXIgKG9wY29kZV9kZWZpbml0aW9ucywgYWJmZCwgbWFjX3B0ciwKLSsJCQkJICAgICAgJm9mZnNl dF9zaXplLCBzZWN0aW9uX2lzX2dudSk7Ci0rICBpZiAobWFjX3B0ciA9PSBOVUxMKQotKyAgICB7 Ci0rICAgICAgLyogV2UgYWxyZWFkeSBpc3N1ZWQgYSBjb21wbGFpbnQuICAqLwotKyAgICAgIHJl dHVybjsKLSsgICAgfQotIAotICAgLyogRGV0ZXJtaW5lcyBpZiBHREIgaXMgc3RpbGwgYmVmb3Jl IGZpcnN0IERXX01BQ0lORk9fc3RhcnRfZmlsZS4gIElmIHRydWUKLSAgICAgIEdEQiBpcyBzdGls bCByZWFkaW5nIHRoZSBkZWZpbml0aW9ucyBmcm9tIGNvbW1hbmQgbGluZS4gIEZpcnN0Ci1AQCAt MTQ3OTUsMTMgKzE0OTA4LDE1IEBACi0gICAgICAgLyogRG8gd2UgYXQgbGVhc3QgaGF2ZSByb29t IGZvciBhIG1hY2luZm8gdHlwZSBieXRlPyAgKi8KLSAgICAgICBpZiAobWFjX3B0ciA+PSBtYWNf ZW5kKQotIAl7Ci0tCSAgZHdhcmYyX21hY3Jvc190b29fbG9uZ19jb21wbGFpbnQgKCk7Ci0rCSAg ZHdhcmYyX21hY3Jvc190b29fbG9uZ19jb21wbGFpbnQgKHNlY3Rpb24pOwotIAkgIGJyZWFrOwot IAl9Ci0gCi0gICAgICAgbWFjaW5mb190eXBlID0gcmVhZF8xX2J5dGUgKGFiZmQsIG1hY19wdHIp OwotICAgICAgIG1hY19wdHIrKzsKLSAKLSsgICAgICAvKiBOb3RlIHRoYXQgd2UgcmVseSBvbiB0 aGUgZmFjdCB0aGF0IHRoZSBjb3JyZXNwb25kaW5nIEdOVSBhbmQKLSsJIERXQVJGIGNvbnN0YW50 cyBhcmUgdGhlIHNhbWUuICAqLwotICAgICAgIHN3aXRjaCAobWFjaW5mb190eXBlKQotIAl7Ci0g CSAgLyogQSB6ZXJvIG1hY2luZm8gdHlwZSBpbmRpY2F0ZXMgdGhlIGVuZCBvZiB0aGUgbWFjcm8K LUBAIC0xNDgwOSwyOSArMTQ5MjQsNDUgQEAKLSAJY2FzZSAwOgotIAkgIGJyZWFrOwotIAotLSAg ICAgICAgY2FzZSBEV19NQUNJTkZPX2RlZmluZToKLS0gICAgICAgIGNhc2UgRFdfTUFDSU5GT191 bmRlZjoKLSsgICAgICAgIGNhc2UgRFdfTUFDUk9fR05VX2RlZmluZToKLSsgICAgICAgIGNhc2Ug RFdfTUFDUk9fR05VX3VuZGVmOgotKwljYXNlIERXX01BQ1JPX0dOVV9kZWZpbmVfaW5kaXJlY3Q6 Ci0rCWNhc2UgRFdfTUFDUk9fR05VX3VuZGVmX2luZGlyZWN0OgotICAgICAgICAgICB7Ci0gICAg ICAgICAgICAgdW5zaWduZWQgaW50IGJ5dGVzX3JlYWQ7Ci0gICAgICAgICAgICAgaW50IGxpbmU7 Ci0gICAgICAgICAgICAgY2hhciAqYm9keTsKLSsJICAgIGludCBpc19kZWZpbmU7Ci0gCi0tICAg ICAgICAgICAgbGluZSA9IHJlYWRfdW5zaWduZWRfbGViMTI4IChhYmZkLCBtYWNfcHRyLCAmYnl0 ZXNfcmVhZCk7Ci0tICAgICAgICAgICAgbWFjX3B0ciArPSBieXRlc19yZWFkOwotLSAgICAgICAg ICAgIGJvZHkgPSByZWFkX2RpcmVjdF9zdHJpbmcgKGFiZmQsIG1hY19wdHIsICZieXRlc19yZWFk KTsKLS0gICAgICAgICAgICBtYWNfcHRyICs9IGJ5dGVzX3JlYWQ7Ci0rCSAgICBsaW5lID0gcmVh ZF91bnNpZ25lZF9sZWIxMjggKGFiZmQsIG1hY19wdHIsICZieXRlc19yZWFkKTsKLSsJICAgIG1h Y19wdHIgKz0gYnl0ZXNfcmVhZDsKLSsKLSsJICAgIGlmIChtYWNpbmZvX3R5cGUgPT0gRFdfTUFD Uk9fR05VX2RlZmluZQotKwkJfHwgbWFjaW5mb190eXBlID09IERXX01BQ1JPX0dOVV91bmRlZikK LSsJICAgICAgewotKwkJYm9keSA9IHJlYWRfZGlyZWN0X3N0cmluZyAoYWJmZCwgbWFjX3B0ciwg JmJ5dGVzX3JlYWQpOwotKwkJbWFjX3B0ciArPSBieXRlc19yZWFkOwotKwkgICAgICB9Ci0rCSAg ICBlbHNlCi0rCSAgICAgIHsKLSsJCUxPTkdFU1Qgc3RyX29mZnNldDsKLSsKLSsJCXN0cl9vZmZz ZXQgPSByZWFkX29mZnNldF8xIChhYmZkLCBtYWNfcHRyLCBvZmZzZXRfc2l6ZSk7Ci0rCQltYWNf cHRyICs9IG9mZnNldF9zaXplOwotIAotKwkJYm9keSA9IHJlYWRfaW5kaXJlY3Rfc3RyaW5nX2F0 X29mZnNldCAoYWJmZCwgc3RyX29mZnNldCk7Ci0rCSAgICAgIH0KLSsKLSsJICAgIGlzX2RlZmlu ZSA9IChtYWNpbmZvX3R5cGUgPT0gRFdfTUFDUk9fR05VX2RlZmluZQotKwkJCSB8fCBtYWNpbmZv X3R5cGUgPT0gRFdfTUFDUk9fR05VX2RlZmluZV9pbmRpcmVjdCk7Ci0gICAgICAgICAgICAgaWYg KCEgY3VycmVudF9maWxlKQotIAkgICAgICB7Ci0gCQkvKiBEV0FSRiB2aW9sYXRpb24gYXMgbm8g bWFpbiBzb3VyY2UgaXMgcHJlc2VudC4gICovCi0gCQljb21wbGFpbnQgKCZzeW1maWxlX2NvbXBs YWludHMsCi0gCQkJICAgXygiZGVidWcgaW5mbyB3aXRoIG5vIG1haW4gc291cmNlIGdpdmVzIG1h Y3JvICVzICIKLSAJCQkgICAgICJvbiBsaW5lICVkOiAlcyIpLAotLQkJCSAgIG1hY2luZm9fdHlw ZSA9PSBEV19NQUNJTkZPX2RlZmluZSA/Ci0tCQkJICAgICBfKCJkZWZpbml0aW9uIikgOgotLQkJ CSAgICAgICBtYWNpbmZvX3R5cGUgPT0gRFdfTUFDSU5GT191bmRlZiA/Ci0tCQkJCSBfKCJ1bmRl ZmluaXRpb24iKSA6Ci0tCQkJCSBfKCJzb21ldGhpbmctb3Itb3RoZXIiKSwgbGluZSwgYm9keSk7 Ci0rCQkJICAgaXNfZGVmaW5lID8gXygiZGVmaW5pdGlvbiIpIDogXygidW5kZWZpbml0aW9uIiks Ci0rCQkJICAgbGluZSwgYm9keSk7Ci0gCQlicmVhazsKLSAJICAgICAgfQotIAkgICAgaWYgKChs aW5lID09IDAgJiYgIWF0X2NvbW1hbmRsaW5lKQotQEAgLTE0ODM5LDIxICsxNDk3MCwyMSBAQAot IAkgICAgICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsCi0gCQkJIF8oImRlYnVnIGlu Zm8gZ2l2ZXMgJXMgbWFjcm8gJXMgd2l0aCAlcyBsaW5lICVkOiAlcyIpLAotIAkJCSBhdF9jb21t YW5kbGluZSA/IF8oImNvbW1hbmQtbGluZSIpIDogXygiaW4tZmlsZSIpLAotLQkJCSBtYWNpbmZv X3R5cGUgPT0gRFdfTUFDSU5GT19kZWZpbmUgPwotLQkJCSAgIF8oImRlZmluaXRpb24iKSA6Ci0t CQkJICAgICBtYWNpbmZvX3R5cGUgPT0gRFdfTUFDSU5GT191bmRlZiA/Ci0tCQkJICAgICAgIF8o InVuZGVmaW5pdGlvbiIpIDoKLS0JCQkgICAgICAgXygic29tZXRoaW5nLW9yLW90aGVyIiksCi0r CQkJIGlzX2RlZmluZSA/IF8oImRlZmluaXRpb24iKSA6IF8oInVuZGVmaW5pdGlvbiIpLAotIAkJ CSBsaW5lID09IDAgPyBfKCJ6ZXJvIikgOiBfKCJub24temVybyIpLCBsaW5lLCBib2R5KTsKLSAK LS0JICAgIGlmIChtYWNpbmZvX3R5cGUgPT0gRFdfTUFDSU5GT19kZWZpbmUpCi0rCSAgICBpZiAo aXNfZGVmaW5lKQotIAkgICAgICBwYXJzZV9tYWNyb19kZWZpbml0aW9uIChjdXJyZW50X2ZpbGUs IGxpbmUsIGJvZHkpOwotLQkgICAgZWxzZSBpZiAobWFjaW5mb190eXBlID09IERXX01BQ0lORk9f dW5kZWYpCi0tCSAgICAgIG1hY3JvX3VuZGVmIChjdXJyZW50X2ZpbGUsIGxpbmUsIGJvZHkpOwot KwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQlnZGJfYXNzZXJ0IChtYWNpbmZvX3R5cGUgPT0gRFdf TUFDUk9fR05VX3VuZGVmCi0rCQkJICAgIHx8IG1hY2luZm9fdHlwZSA9PSBEV19NQUNST19HTlVf dW5kZWZfaW5kaXJlY3QpOwotKwkJbWFjcm9fdW5kZWYgKGN1cnJlbnRfZmlsZSwgbGluZSwgYm9k eSk7Ci0rCSAgICAgIH0KLSAgICAgICAgICAgfQotICAgICAgICAgICBicmVhazsKLSAKLS0gICAg ICAgIGNhc2UgRFdfTUFDSU5GT19zdGFydF9maWxlOgotKyAgICAgICAgY2FzZSBEV19NQUNST19H TlVfc3RhcnRfZmlsZToKLSAgICAgICAgICAgewotICAgICAgICAgICAgIHVuc2lnbmVkIGludCBi eXRlc19yZWFkOwotICAgICAgICAgICAgIGludCBsaW5lLCBmaWxlOwotQEAgLTE0ODczLDE3ICsx NTAwNCwxOCBAQAotIAotIAkgICAgaWYgKGF0X2NvbW1hbmRsaW5lKQotIAkgICAgICB7Ci0tCQkv KiBUaGlzIERXX01BQ0lORk9fc3RhcnRfZmlsZSB3YXMgZXhlY3V0ZWQgaW4gdGhlIHBhc3Mgb25l LiAgKi8KLSsJCS8qIFRoaXMgRFdfTUFDUk9fR05VX3N0YXJ0X2ZpbGUgd2FzIGV4ZWN1dGVkIGlu IHRoZQotKwkJICAgcGFzcyBvbmUuICAqLwotIAkJYXRfY29tbWFuZGxpbmUgPSAwOwotIAkgICAg ICB9Ci0gCSAgICBlbHNlCi0gCSAgICAgIGN1cnJlbnRfZmlsZSA9IG1hY3JvX3N0YXJ0X2ZpbGUg KGZpbGUsIGxpbmUsCi0gCQkJCQkgICAgICAgY3VycmVudF9maWxlLCBjb21wX2RpciwKLS0JCQkJ CSAgICAgICBsaCwgY3UtPm9iamZpbGUpOwotKwkJCQkJICAgICAgIGxoLCBvYmpmaWxlKTsKLSAg ICAgICAgICAgfQotICAgICAgICAgICBicmVhazsKLSAKLS0gICAgICAgIGNhc2UgRFdfTUFDSU5G T19lbmRfZmlsZToKLSsgICAgICAgIGNhc2UgRFdfTUFDUk9fR05VX2VuZF9maWxlOgotICAgICAg ICAgICBpZiAoISBjdXJyZW50X2ZpbGUpCi0gCSAgICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBs YWludHMsCi0gCQkgICAgICAgXygibWFjcm8gZGVidWcgaW5mbyBoYXMgYW4gdW5tYXRjaGVkICIK LUBAIC0xNDg5Myw3ICsxNTAyNSw3IEBACi0gICAgICAgICAgICAgICBjdXJyZW50X2ZpbGUgPSBj dXJyZW50X2ZpbGUtPmluY2x1ZGVkX2J5OwotICAgICAgICAgICAgICAgaWYgKCEgY3VycmVudF9m aWxlKQotICAgICAgICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAgICAgZW51bSBkd2FyZl9t YWNpbmZvX3JlY29yZF90eXBlIG5leHRfdHlwZTsKLSsgICAgICAgICAgICAgICAgICBlbnVtIGR3 YXJmX21hY3JvX3JlY29yZF90eXBlIG5leHRfdHlwZTsKLSAKLSAgICAgICAgICAgICAgICAgICAv KiBHQ0MgY2lyY2EgTWFyY2ggMjAwMiBkb2Vzbid0IHByb2R1Y2UgdGhlIHplcm8KLSAgICAgICAg ICAgICAgICAgICAgICB0eXBlIGJ5dGUgbWFya2luZyB0aGUgZW5kIG9mIHRoZSBjb21waWxhdGlv bgotQEAgLTE0OTAzLDcgKzE1MDM1LDcgQEAKLSAgICAgICAgICAgICAgICAgICAvKiBEbyB3ZSBh dCBsZWFzdCBoYXZlIHJvb20gZm9yIGEgbWFjaW5mbyB0eXBlIGJ5dGU/ICAqLwotICAgICAgICAg ICAgICAgICAgIGlmIChtYWNfcHRyID49IG1hY19lbmQpCi0gICAgICAgICAgICAgICAgICAgICB7 Ci0tCQkgICAgICBkd2FyZjJfbWFjcm9zX3Rvb19sb25nX2NvbXBsYWludCAoKTsKLSsJCSAgICAg IGR3YXJmMl9tYWNyb3NfdG9vX2xvbmdfY29tcGxhaW50IChzZWN0aW9uKTsKLSAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAgfQotIAotQEAgLTE0OTIw LDIzICsxNTA1MiwxOTkgQEAKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIGJyZWFrOwotIAot KwljYXNlIERXX01BQ1JPX0dOVV90cmFuc3BhcmVudF9pbmNsdWRlOgotKwkgIHsKLSsJICAgIExP TkdFU1Qgb2Zmc2V0OwotKwotKwkgICAgb2Zmc2V0ID0gcmVhZF9vZmZzZXRfMSAoYWJmZCwgbWFj X3B0ciwgb2Zmc2V0X3NpemUpOwotKwkgICAgbWFjX3B0ciArPSBvZmZzZXRfc2l6ZTsKLSsKLSsJ ICAgIGR3YXJmX2RlY29kZV9tYWNyb19ieXRlcyAoYWJmZCwKLSsJCQkJICAgICAgc2VjdGlvbi0+ YnVmZmVyICsgb2Zmc2V0LAotKwkJCQkgICAgICBtYWNfZW5kLCBjdXJyZW50X2ZpbGUsCi0rCQkJ CSAgICAgIGxoLCBjb21wX2RpciwKLSsJCQkJICAgICAgc2VjdGlvbiwgc2VjdGlvbl9pc19nbnUs Ci0rCQkJCSAgICAgIG9mZnNldF9zaXplLCBvYmpmaWxlKTsKLSsJICB9Ci0rCSAgYnJlYWs7Ci0r Ci0gICAgICAgICBjYXNlIERXX01BQ0lORk9fdmVuZG9yX2V4dDoKLS0gICAgICAgICAgewotLSAg ICAgICAgICAgIHVuc2lnbmVkIGludCBieXRlc19yZWFkOwotLSAgICAgICAgICAgIGludCBjb25z dGFudDsKLSsJICBpZiAoIXNlY3Rpb25faXNfZ251KQotKwkgICAgewotKwkgICAgICB1bnNpZ25l ZCBpbnQgYnl0ZXNfcmVhZDsKLSsJICAgICAgaW50IGNvbnN0YW50OwotIAotLSAgICAgICAgICAg IGNvbnN0YW50ID0gcmVhZF91bnNpZ25lZF9sZWIxMjggKGFiZmQsIG1hY19wdHIsICZieXRlc19y ZWFkKTsKLS0gICAgICAgICAgICBtYWNfcHRyICs9IGJ5dGVzX3JlYWQ7Ci0tICAgICAgICAgICAg cmVhZF9kaXJlY3Rfc3RyaW5nIChhYmZkLCBtYWNfcHRyLCAmYnl0ZXNfcmVhZCk7Ci0tICAgICAg ICAgICAgbWFjX3B0ciArPSBieXRlc19yZWFkOwotKwkgICAgICBjb25zdGFudCA9IHJlYWRfdW5z aWduZWRfbGViMTI4IChhYmZkLCBtYWNfcHRyLCAmYnl0ZXNfcmVhZCk7Ci0rCSAgICAgIG1hY19w dHIgKz0gYnl0ZXNfcmVhZDsKLSsJICAgICAgcmVhZF9kaXJlY3Rfc3RyaW5nIChhYmZkLCBtYWNf cHRyLCAmYnl0ZXNfcmVhZCk7Ci0rCSAgICAgIG1hY19wdHIgKz0gYnl0ZXNfcmVhZDsKLSAKLS0g ICAgICAgICAgICAvKiBXZSBkb24ndCByZWNvZ25pemUgYW55IHZlbmRvciBleHRlbnNpb25zLiAg Ki8KLS0gICAgICAgICAgfQotLSAgICAgICAgICBicmVhazsKLSsJICAgICAgLyogV2UgZG9uJ3Qg cmVjb2duaXplIGFueSB2ZW5kb3IgZXh0ZW5zaW9ucy4gICovCi0rCSAgICAgIGJyZWFrOwotKwkg ICAgfQotKwkgIC8qIEZBTExUSFJPVUdIICovCi0rCi0rCWRlZmF1bHQ6Ci0rCSAgbWFjX3B0ciA9 IHNraXBfdW5rbm93bl9vcGNvZGUgKG1hY2luZm9fdHlwZSwgb3Bjb2RlX2RlZmluaXRpb25zLAot KwkJCQkJIG1hY19wdHIsIGFiZmQsIG9mZnNldF9zaXplLAotKwkJCQkJIHNlY3Rpb24pOwotKwkg IGlmIChtYWNfcHRyID09IE5VTEwpCi0rCSAgICByZXR1cm47Ci0rCSAgYnJlYWs7Ci0gICAgICAg ICB9Ci0gICAgIH0gd2hpbGUgKG1hY2luZm9fdHlwZSAhPSAwKTsKLSB9Ci0gCi0rc3RhdGljIHZv aWQKLStkd2FyZl9kZWNvZGVfbWFjcm9zIChzdHJ1Y3QgbGluZV9oZWFkZXIgKmxoLCB1bnNpZ25l ZCBpbnQgb2Zmc2V0LAotKyAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmNvbXBfZGlyLCBiZmQg KmFiZmQsCi0rICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGR3YXJmMl9jdSAqY3UsCi0rCQkg ICAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICpzZWN0aW9uLAotKwkJICAgICBpbnQgc2Vj dGlvbl9pc19nbnUpCi0rewotKyAgZ2RiX2J5dGUgKm1hY19wdHIsICptYWNfZW5kOwotKyAgc3Ry dWN0IG1hY3JvX3NvdXJjZV9maWxlICpjdXJyZW50X2ZpbGUgPSAwOwotKyAgZW51bSBkd2FyZl9t YWNyb19yZWNvcmRfdHlwZSBtYWNpbmZvX3R5cGU7Ci0rICB1bnNpZ25lZCBpbnQgb2Zmc2V0X3Np emUgPSBjdS0+aGVhZGVyLm9mZnNldF9zaXplOwotKyAgZ2RiX2J5dGUgKm9wY29kZV9kZWZpbml0 aW9uc1syNTZdOwotKwotKyAgZHdhcmYyX3JlYWRfc2VjdGlvbiAoZHdhcmYyX3Blcl9vYmpmaWxl LT5vYmpmaWxlLCBzZWN0aW9uKTsKLSsgIGlmIChzZWN0aW9uLT5idWZmZXIgPT0gTlVMTCkKLSsg ICAgewotKyAgICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywgXygibWlzc2luZyAl cyBzZWN0aW9uIiksCi0rCQkgc2VjdGlvbi0+YXNlY3Rpb24tPm5hbWUpOwotKyAgICAgIHJldHVy bjsKLSsgICAgfQotKwotKyAgLyogRmlyc3QgcGFzczogRmluZCB0aGUgbmFtZSBvZiB0aGUgYmFz ZSBmaWxlbmFtZS4KLSsgICAgIFRoaXMgZmlsZW5hbWUgaXMgbmVlZGVkIGluIG9yZGVyIHRvIHBy b2Nlc3MgYWxsIG1hY3JvcyB3aG9zZSBkZWZpbml0aW9uCi0rICAgICAob3IgdW5kZWZpbml0aW9u KSBjb21lcyBmcm9tIHRoZSBjb21tYW5kIGxpbmUuICBUaGVzZSBtYWNyb3MgYXJlIGRlZmluZWQK LSsgICAgIGJlZm9yZSB0aGUgZmlyc3QgRFdfTUFDSU5GT19zdGFydF9maWxlIGVudHJ5LCBhbmQg eWV0IHN0aWxsIG5lZWQgdG8gYmUKLSsgICAgIGFzc29jaWF0ZWQgdG8gdGhlIGJhc2UgZmlsZS4K LSsKLSsgICAgIFRvIGRldGVybWluZSB0aGUgYmFzZSBmaWxlIG5hbWUsIHdlIHNjYW4gdGhlIG1h Y3JvIGRlZmluaXRpb25zIHVudGlsIHdlCi0rICAgICByZWFjaCB0aGUgZmlyc3QgRFdfTUFDSU5G T19zdGFydF9maWxlIGVudHJ5LiAgV2UgdGhlbiBpbml0aWFsaXplCi0rICAgICBDVVJSRU5UX0ZJ TEUgYWNjb3JkaW5nbHkgc28gdGhhdCBhbnkgbWFjcm8gZGVmaW5pdGlvbiBmb3VuZCBiZWZvcmUg dGhlCi0rICAgICBmaXJzdCBEV19NQUNJTkZPX3N0YXJ0X2ZpbGUgY2FuIHN0aWxsIGJlIGFzc29j aWF0ZWQgdG8gdGhlIGJhc2UgZmlsZS4gICovCi0rCi0rICBtYWNfcHRyID0gc2VjdGlvbi0+YnVm ZmVyICsgb2Zmc2V0OwotKyAgbWFjX2VuZCA9IHNlY3Rpb24tPmJ1ZmZlciArIHNlY3Rpb24tPnNp emU7Ci0rCi0rICBtYWNfcHRyID0gZHdhcmZfcGFyc2VfbWFjcm9faGVhZGVyIChvcGNvZGVfZGVm aW5pdGlvbnMsIGFiZmQsIG1hY19wdHIsCi0rCQkJCSAgICAgICZvZmZzZXRfc2l6ZSwgc2VjdGlv bl9pc19nbnUpOwotKyAgaWYgKG1hY19wdHIgPT0gTlVMTCkKLSsgICAgewotKyAgICAgIC8qIFdl IGFscmVhZHkgaXNzdWVkIGEgY29tcGxhaW50LiAgKi8KLSsgICAgICByZXR1cm47Ci0rICAgIH0K LSsKLSsgIGRvCi0rICAgIHsKLSsgICAgICAvKiBEbyB3ZSBhdCBsZWFzdCBoYXZlIHJvb20gZm9y IGEgbWFjaW5mbyB0eXBlIGJ5dGU/ICAqLwotKyAgICAgIGlmIChtYWNfcHRyID49IG1hY19lbmQp Ci0rICAgICAgICB7Ci0rCSAgLyogQ29tcGxhaW50IGlzIHByaW50ZWQgZHVyaW5nIHRoZSBzZWNv bmQgcGFzcyBhcyBHREIgd2lsbCBwcm9iYWJseQotKwkgICAgIHN0b3AgdGhlIGZpcnN0IHBhc3Mg ZWFybGllciB1cG9uIGZpbmRpbmcKLSsJICAgICBEV19NQUNJTkZPX3N0YXJ0X2ZpbGUuICAqLwot KwkgIGJyZWFrOwotKyAgICAgICAgfQotKwotKyAgICAgIG1hY2luZm9fdHlwZSA9IHJlYWRfMV9i eXRlIChhYmZkLCBtYWNfcHRyKTsKLSsgICAgICBtYWNfcHRyKys7Ci0rCi0rICAgICAgLyogTm90 ZSB0aGF0IHdlIHJlbHkgb24gdGhlIGZhY3QgdGhhdCB0aGUgY29ycmVzcG9uZGluZyBHTlUgYW5k Ci0rCSBEV0FSRiBjb25zdGFudHMgYXJlIHRoZSBzYW1lLiAgKi8KLSsgICAgICBzd2l0Y2ggKG1h Y2luZm9fdHlwZSkKLSsgICAgICAgIHsKLSsgICAgICAgICAgLyogQSB6ZXJvIG1hY2luZm8gdHlw ZSBpbmRpY2F0ZXMgdGhlIGVuZCBvZiB0aGUgbWFjcm8KLSsgICAgICAgICAgICAgaW5mb3JtYXRp b24uICAqLwotKyAgICAgICAgY2FzZSAwOgotKwkgIGJyZWFrOwotKwotKwljYXNlIERXX01BQ1JP X0dOVV9kZWZpbmU6Ci0rCWNhc2UgRFdfTUFDUk9fR05VX3VuZGVmOgotKwkgIC8qIE9ubHkgc2tp cCB0aGUgZGF0YSBieSBNQUNfUFRSLiAgKi8KLSsJICB7Ci0rCSAgICB1bnNpZ25lZCBpbnQgYnl0 ZXNfcmVhZDsKLSsKLSsJICAgIHJlYWRfdW5zaWduZWRfbGViMTI4IChhYmZkLCBtYWNfcHRyLCAm Ynl0ZXNfcmVhZCk7Ci0rCSAgICBtYWNfcHRyICs9IGJ5dGVzX3JlYWQ7Ci0rCSAgICByZWFkX2Rp cmVjdF9zdHJpbmcgKGFiZmQsIG1hY19wdHIsICZieXRlc19yZWFkKTsKLSsJICAgIG1hY19wdHIg Kz0gYnl0ZXNfcmVhZDsKLSsJICB9Ci0rCSAgYnJlYWs7Ci0rCi0rCWNhc2UgRFdfTUFDUk9fR05V X3N0YXJ0X2ZpbGU6Ci0rCSAgewotKwkgICAgdW5zaWduZWQgaW50IGJ5dGVzX3JlYWQ7Ci0rCSAg ICBpbnQgbGluZSwgZmlsZTsKLSsKLSsJICAgIGxpbmUgPSByZWFkX3Vuc2lnbmVkX2xlYjEyOCAo YWJmZCwgbWFjX3B0ciwgJmJ5dGVzX3JlYWQpOwotKwkgICAgbWFjX3B0ciArPSBieXRlc19yZWFk OwotKwkgICAgZmlsZSA9IHJlYWRfdW5zaWduZWRfbGViMTI4IChhYmZkLCBtYWNfcHRyLCAmYnl0 ZXNfcmVhZCk7Ci0rCSAgICBtYWNfcHRyICs9IGJ5dGVzX3JlYWQ7Ci0rCi0rCSAgICBjdXJyZW50 X2ZpbGUgPSBtYWNyb19zdGFydF9maWxlIChmaWxlLCBsaW5lLCBjdXJyZW50X2ZpbGUsCi0rCQkJ CQkgICAgIGNvbXBfZGlyLCBsaCwgY3UtPm9iamZpbGUpOwotKwkgIH0KLSsJICBicmVhazsKLSsK LSsJY2FzZSBEV19NQUNST19HTlVfZW5kX2ZpbGU6Ci0rCSAgLyogTm8gZGF0YSB0byBza2lwIGJ5 IE1BQ19QVFIuICAqLwotKwkgIGJyZWFrOwotKwotKwljYXNlIERXX01BQ1JPX0dOVV9kZWZpbmVf aW5kaXJlY3Q6Ci0rCWNhc2UgRFdfTUFDUk9fR05VX3VuZGVmX2luZGlyZWN0OgotKwkgIHsKLSsJ ICAgIHVuc2lnbmVkIGludCBieXRlc19yZWFkOwotKwotKwkgICAgcmVhZF91bnNpZ25lZF9sZWIx MjggKGFiZmQsIG1hY19wdHIsICZieXRlc19yZWFkKTsKLSsJICAgIG1hY19wdHIgKz0gYnl0ZXNf cmVhZDsKLSsJICAgIG1hY19wdHIgKz0gb2Zmc2V0X3NpemU7Ci0rCSAgfQotKwkgIGJyZWFrOwot KwotKwljYXNlIERXX01BQ1JPX0dOVV90cmFuc3BhcmVudF9pbmNsdWRlOgotKwkgIC8qIE5vdGUg dGhhdCwgYWNjb3JkaW5nIHRvIHRoZSBzcGVjLCBhIHRyYW5zcGFyZW50IGluY2x1ZGUKLSsJICAg ICBjaGFpbiBjYW5ub3QgY2FsbCBEV19NQUNST19HTlVfc3RhcnRfZmlsZS4gIFNvLCB3ZSBjYW4g anVzdAotKwkgICAgIHNraXAgdGhpcyBvcGNvZGUuICAqLwotKwkgIG1hY19wdHIgKz0gb2Zmc2V0 X3NpemU7Ci0rCSAgYnJlYWs7Ci0rCi0rCWNhc2UgRFdfTUFDSU5GT192ZW5kb3JfZXh0OgotKwkg IC8qIE9ubHkgc2tpcCB0aGUgZGF0YSBieSBNQUNfUFRSLiAgKi8KLSsJICBpZiAoIXNlY3Rpb25f aXNfZ251KQotKwkgICAgewotKwkgICAgICB1bnNpZ25lZCBpbnQgYnl0ZXNfcmVhZDsKLSsKLSsJ ICAgICAgcmVhZF91bnNpZ25lZF9sZWIxMjggKGFiZmQsIG1hY19wdHIsICZieXRlc19yZWFkKTsK LSsJICAgICAgbWFjX3B0ciArPSBieXRlc19yZWFkOwotKwkgICAgICByZWFkX2RpcmVjdF9zdHJp bmcgKGFiZmQsIG1hY19wdHIsICZieXRlc19yZWFkKTsKLSsJICAgICAgbWFjX3B0ciArPSBieXRl c19yZWFkOwotKwkgICAgfQotKwkgIC8qIEZBTExUSFJPVUdIICovCi0rCi0rCWRlZmF1bHQ6Ci0r CSAgbWFjX3B0ciA9IHNraXBfdW5rbm93bl9vcGNvZGUgKG1hY2luZm9fdHlwZSwgb3Bjb2RlX2Rl ZmluaXRpb25zLAotKwkJCQkJIG1hY19wdHIsIGFiZmQsIG9mZnNldF9zaXplLAotKwkJCQkJIHNl Y3Rpb24pOwotKwkgIGlmIChtYWNfcHRyID09IE5VTEwpCi0rCSAgICByZXR1cm47Ci0rCSAgYnJl YWs7Ci0rCX0KLSsgICAgfSB3aGlsZSAobWFjaW5mb190eXBlICE9IDAgJiYgY3VycmVudF9maWxl ID09IE5VTEwpOwotKwotKyAgLyogU2Vjb25kIHBhc3M6IFByb2Nlc3MgYWxsIGVudHJpZXMuCi0r Ci0rICAgICBVc2UgdGhlIEFUX0NPTU1BTkRfTElORSBmbGFnIHRvIGRldGVybWluZSB3aGV0aGVy IHdlIGFyZSBzdGlsbCBwcm9jZXNzaW5nCi0rICAgICBjb21tYW5kLWxpbmUgbWFjcm8gZGVmaW5p dGlvbnMvdW5kZWZpbml0aW9ucy4gIFRoaXMgZmxhZyBpcyB1bnNldCB3aGVuIHdlCi0rICAgICBy ZWFjaCB0aGUgZmlyc3QgRFdfTUFDSU5GT19zdGFydF9maWxlIGVudHJ5LiAgKi8KLSsKLSsgIGR3 YXJmX2RlY29kZV9tYWNyb19ieXRlcyAoYWJmZCwgc2VjdGlvbi0+YnVmZmVyICsgb2Zmc2V0LCBt YWNfZW5kLAotKwkJCSAgICBjdXJyZW50X2ZpbGUsIGxoLCBjb21wX2Rpciwgc2VjdGlvbiwgc2Vj dGlvbl9pc19nbnUsCi0rCQkJICAgIG9mZnNldF9zaXplLCBjdS0+b2JqZmlsZSk7Ci0rfQotKwot IC8qIENoZWNrIGlmIHRoZSBhdHRyaWJ1dGUncyBmb3JtIGlzIGEgRFdfRk9STV9ibG9jayoKLSAg ICBpZiBzbyByZXR1cm4gdHJ1ZSBlbHNlIGZhbHNlLiAgKi8KLSBzdGF0aWMgaW50Ci1AQCAtMTU2 NjMsNiArMTU5NzEsNyBAQAotICAgbXVubWFwX3NlY3Rpb25fYnVmZmVyICgmZGF0YS0+bGluZSk7 Ci0gICBtdW5tYXBfc2VjdGlvbl9idWZmZXIgKCZkYXRhLT5sb2MpOwotICAgbXVubWFwX3NlY3Rp b25fYnVmZmVyICgmZGF0YS0+bWFjaW5mbyk7Ci0rICBtdW5tYXBfc2VjdGlvbl9idWZmZXIgKCZk YXRhLT5tYWNybyk7Ci0gICBtdW5tYXBfc2VjdGlvbl9idWZmZXIgKCZkYXRhLT5zdHIpOwotICAg bXVubWFwX3NlY3Rpb25fYnVmZmVyICgmZGF0YS0+cmFuZ2VzKTsKLSAgIG11bm1hcF9zZWN0aW9u X2J1ZmZlciAoJmRhdGEtPmZyYW1lKTsKLS0tLSBzcmMvZ2RiL3N5bWZpbGUuaAkyMDExLzA2LzEw IDIxOjQ4OjA0CTEuOTMKLSsrKyBzcmMvZ2RiL3N5bWZpbGUuaAkyMDExLzA3LzI2IDE3OjA0OjIz CTEuOTQKLUBAIC01ODIsNiArNTgyLDcgQEAKLSAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9uYW1l cyBsaW5lOwotICAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX25hbWVzIGxvYzsKLSAgIHN0cnVjdCBk d2FyZjJfc2VjdGlvbl9uYW1lcyBtYWNpbmZvOwotKyAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX25h bWVzIG1hY3JvOwotICAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX25hbWVzIHN0cjsKLSAgIHN0cnVj dCBkd2FyZjJfc2VjdGlvbl9uYW1lcyByYW5nZXM7Ci0gICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25f bmFtZXMgdHlwZXM7Ci0KLQotCi1SZTogRllJOiBpbXBsZW1lbnQgbmV3IERXQVJGIG1hY3JvIHBy b3Bvc2FsCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMS0wNy9tc2cw MDc1OS5odG1sCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDExLTA3L21zZzAw MjI0Lmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTEvMDcvMjYgMjE6MDk6MDUJMS4x MzIyOQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTEvMDcvMjcgMTQ6NDU6MzYJMS4xMzIzMAot IyMgLTEsMyArMSwxMCBAQAotKzIwMTEtMDctMjcgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0 LmNvbT4KLSsKLSsJKiB4Y29mZnJlYWQuYyAoZHdhcmYyX3hjb2ZmX25hbWVzKTogQWRkICdtYWNy bycgYW5kICdzZW50aW5lbCcKLSsJZW50cmllcy4KLSsJKiBzeW1maWxlLmggKHN0cnVjdCBkd2Fy ZjJfZGVidWdfc2VjdGlvbnMpIDxzZW50aW5lbD46IE5ldyBmaWVsZC4KLSsJKiBkd2FyZjJyZWFk LmMgKGR3YXJmMl9lbGZfbmFtZXMpOiBBZGQgc2VudGluZWwgZW50cnkuCi0rCi0gMjAxMS0wNy0y NiAgU3RlcmxpbmcgQXVndXN0aW5lICA8c2F1Z3VzdGluZUBnb29nbGUuY29tPgotIAotIAkqIGNs aS9jbGktZHVtcC5jIChkdW1wX2JpbmFyeV9maWxlKTogQ2hhbmdlIHBhcmFtZXRlciB0eXBlIHRv Ci0tLS0gc3JjL2dkYi9kd2FyZjJyZWFkLmMJMjAxMS8wNy8yNiAxNzowNDoyMwkxLjU1NQotKysr IHNyYy9nZGIvZHdhcmYycmVhZC5jCTIwMTEvMDcvMjcgMTQ6NDU6MzcJMS41NTYKLUBAIC0yNzEs NyArMjcxLDggQEAKLSAgIHsgIi5kZWJ1Z190eXBlcyIsICIuemRlYnVnX3R5cGVzIiB9LAotICAg eyAiLmRlYnVnX2ZyYW1lIiwgIi56ZGVidWdfZnJhbWUiIH0sCi0gICB7ICIuZWhfZnJhbWUiLCBO VUxMIH0sCi0tICB7ICIuZ2RiX2luZGV4IiwgIi56Z2RiX2luZGV4IiB9Ci0rICB7ICIuZ2RiX2lu ZGV4IiwgIi56Z2RiX2luZGV4IiB9LAotKyAgMjMKLSB9OwotIAotIC8qIGxvY2FsIGRhdGEgdHlw ZXMgKi8KLS0tLSBzcmMvZ2RiL3N5bWZpbGUuaAkyMDExLzA3LzI2IDE3OjA0OjIzCTEuOTQKLSsr KyBzcmMvZ2RiL3N5bWZpbGUuaAkyMDExLzA3LzI3IDE0OjQ1OjM3CTEuOTUKLUBAIC01ODksNiAr NTg5LDkgQEAKLSAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9uYW1lcyBmcmFtZTsKLSAgIHN0cnVj dCBkd2FyZjJfc2VjdGlvbl9uYW1lcyBlaF9mcmFtZTsKLSAgIHN0cnVjdCBkd2FyZjJfc2VjdGlv bl9uYW1lcyBnZGJfaW5kZXg7Ci0rICAvKiBUaGlzIGZpZWxkIGhhcyBubyBtZWFuaW5nLCBidXQg ZXhpc3RzIHNvbGVseSB0byBjYXRjaCBjaGFuZ2VzIHRvCi0rICAgICB0aGlzIHN0cnVjdHVyZSB3 aGljaCBhcmUgbm90IHJlZmxlY3RlZCBpbiBzb21lIGluc3RhbmNlLiAgKi8KLSsgIGludCBzZW50 aW5lbDsKLSB9OwotIAotIGV4dGVybiBpbnQgZHdhcmYyX2hhc19pbmZvIChzdHJ1Y3Qgb2JqZmls ZSAqLAotLS0tIHNyYy9nZGIveGNvZmZyZWFkLmMJMjAxMS8wNi8wNyAxMjozMTowNwkxLjg5Ci0r Kysgc3JjL2dkYi94Y29mZnJlYWQuYwkyMDExLzA3LzI3IDE0OjQ1OjM3CTEuOTAKLUBAIC0xNjAs MTIgKzE2MCwxNCBAQAotICAgeyAiLmR3bGluZSIsIE5VTEwgfSwKLSAgIHsgIi5kd2xvYyIsIE5V TEwgfSwKLSAgIHsgTlVMTCwgTlVMTCB9LCAvKiBkZWJ1Z19tYWNpbmZvICovCi0rICB7IE5VTEws IE5VTEwgfSwgLyogZGVidWdfbWFjcm8gKi8KLSAgIHsgIi5kd3N0ciIsIE5VTEwgfSwKLSAgIHsg Ii5kd3JuZ2VzIiwgTlVMTCB9LAotICAgeyBOVUxMLCBOVUxMIH0sIC8qIGRlYnVnX3R5cGVzICov Ci0gICB7ICIuZHdmcmFtZSIsIE5VTEwgfSwKLSAgIHsgTlVMTCwgTlVMTCB9LCAvKiBlaF9mcmFt ZSAqLwotLSAgeyBOVUxMLCBOVUxMIH0gLyogZ2RiX2luZGV4ICovCi0rICB7IE5VTEwsIE5VTEwg fSwgLyogZ2RiX2luZGV4ICovCi0rICAyMwotIH07Ci0gCi0gc3RhdGljIHZvaWQKLQotCi0KLVtw YXRjaF1bcHl0aG9uXSBGaXggc2lnc2VndiB3aGVuIGEgcHJpbnRlciBmYWlscyB0byByZXR1cm4g YSB2YWx1ZSBhbmQgc3RyaW5nX3ByaW50IGlzIHNldC4KLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9t bC9nZGItcGF0Y2hlcy8yMDExLTA3L21zZzAwNzE5Lmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9y Zy9tbC9nZGItY3ZzLzIwMTEtMDcvbXNnMDAyMzQuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VM b2cJMjAxMS8wNy8yNyAxOTozMTozMAkxLjEzMjM2Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAx MS8wNy8yOCAxMDozNjozNwkxLjEzMjM3Ci0jIyAtMSwzICsxLDggQEAKLSsyMDExLTA3LTI4ICBQ aGlsIE11bGRvb24gIDxwbXVsZG9vbkByZWRoYXQuY29tPgotKwotKwkqIHZhcm9iai5jICh2YWx1 ZV9nZXRfcHJpbnRfdmFsdWUpOiBNb3ZlIGhpbnQgY2hlY2sgbGF0ZXIgaW50byB0aGUKLSsJZnVu Y3Rpb24uICBDb21tZW50IGZ1bmN0aW9uLiAgRnJlZSB0aGV2YWx1ZSBiZWZvcmUgcmV1c2luZyBp dC4KLSsKLSAyMDExLTA3LTI3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhh dC5jb20+Ci0gCSAgICBQZWRybyBBbHZlcyAgPHBlZHJvQGNvZGVzb3VyY2VyeS5jb20+Ci0gCi0t LS0gc3JjL2dkYi92YXJvYmouYwkyMDExLzA3LzE4IDA5OjIxOjQzCTEuMTgwCi0rKysgc3JjL2dk Yi92YXJvYmouYwkyMDExLzA3LzI4IDEwOjM2OjQwCTEuMTgxCi1AQCAtMjYxMCwyNSArMjYxMCwy MSBAQAotIAotIAlpZiAoUHlPYmplY3RfSGFzQXR0ciAodmFsdWVfZm9ybWF0dGVyLCBnZGJweV90 b19zdHJpbmdfY3N0KSkKLSAJICB7Ci0tCSAgICBjaGFyICpoaW50OwotIAkgICAgc3RydWN0IHZh bHVlICpyZXBsYWNlbWVudDsKLSAJICAgIFB5T2JqZWN0ICpvdXRwdXQgPSBOVUxMOwotIAotLQkg ICAgaGludCA9IGdkYnB5X2dldF9kaXNwbGF5X2hpbnQgKHZhbHVlX2Zvcm1hdHRlcik7Ci0tCSAg ICBpZiAoaGludCkKLS0JICAgICAgewotLQkJaWYgKCFzdHJjbXAgKGhpbnQsICJzdHJpbmciKSkK LS0JCSAgc3RyaW5nX3ByaW50ID0gMTsKLS0JCXhmcmVlIChoaW50KTsKLS0JICAgICAgfQotLQot IAkgICAgb3V0cHV0ID0gYXBwbHlfdmFyb2JqX3ByZXR0eV9wcmludGVyICh2YWx1ZV9mb3JtYXR0 ZXIsCi0gCQkJCQkJICAmcmVwbGFjZW1lbnQsCi0gCQkJCQkJICBzdGIpOwotKwotKwkgICAgLyog SWYgd2UgaGF2ZSBzdHJpbmcgbGlrZSBvdXRwdXQgLi4uICAqLwotIAkgICAgaWYgKG91dHB1dCkK LSAJICAgICAgewotIAkJbWFrZV9jbGVhbnVwX3B5X2RlY3JlZiAob3V0cHV0KTsKLSAKLSsJCS8q IElmIHRoaXMgaXMgYSBsYXp5IHN0cmluZywgZXh0cmFjdCBpdC4gIEZvciBsYXp5Ci0rCQkgICBz dHJpbmdzIHdlIGFsd2F5cyBwcmludCBhcyBhIHN0cmluZywgc28gc2V0Ci0rCQkgICBzdHJpbmdf cHJpbnQuICAqLwotIAkJaWYgKGdkYnB5X2lzX2xhenlfc3RyaW5nIChvdXRwdXQpKQotIAkJICB7 Ci0gCQkgICAgZ2RicHlfZXh0cmFjdF9sYXp5X3N0cmluZyAob3V0cHV0LCAmc3RyX2FkZHIsICZ0 eXBlLAotQEAgLTI2MzgsMTIgKzI2MzQsMjcgQEAKLSAJCSAgfQotIAkJZWxzZQotIAkJICB7Ci0r CQkgICAgLyogSWYgaXQgaXMgYSByZWd1bGFyIChub24tbGF6eSkgc3RyaW5nLCBleHRyYWN0Ci0r CQkgICAgICAgaXQgYW5kIGNvcHkgdGhlIGNvbnRlbnRzIGludG8gVEhFVkFMVUUuICBJZiB0aGUK LSsJCSAgICAgICBoaW50IHNheXMgdG8gcHJpbnQgaXQgYXMgYSBzdHJpbmcsIHNldAotKwkJICAg ICAgIHN0cmluZ19wcmludC4gIE90aGVyd2lzZSBqdXN0IHJldHVybiB0aGUgZXh0cmFjdGVkCi0r CQkgICAgICAgc3RyaW5nIGFzIGEgdmFsdWUuICAqLwotKwotIAkJICAgIFB5T2JqZWN0ICpweV9z dHIKLSAJCSAgICAgID0gcHl0aG9uX3N0cmluZ190b190YXJnZXRfcHl0aG9uX3N0cmluZyAob3V0 cHV0KTsKLSAKLSAJCSAgICBpZiAocHlfc3RyKQotIAkJICAgICAgewotIAkJCWNoYXIgKnMgPSBQ eVN0cmluZ19Bc1N0cmluZyAocHlfc3RyKTsKLSsJCQljaGFyICpoaW50OwotKwotKwkJCWhpbnQg PSBnZGJweV9nZXRfZGlzcGxheV9oaW50ICh2YWx1ZV9mb3JtYXR0ZXIpOwotKwkJCWlmIChoaW50 KQotKwkJCSAgewotKwkJCSAgICBpZiAoIXN0cmNtcCAoaGludCwgInN0cmluZyIpKQotKwkJCSAg ICAgIHN0cmluZ19wcmludCA9IDE7Ci0rCQkJICAgIHhmcmVlIChoaW50KTsKLSsJCQkgIH0KLSAK LSAJCQlsZW4gPSBQeVN0cmluZ19TaXplIChweV9zdHIpOwotIAkJCXRoZXZhbHVlID0geG1lbWR1 cCAocywgbGVuICsgMSwgbGVuICsgMSk7Ci1AQCAtMjY2Miw2ICsyNjczLDkgQEAKLSAJCSAgICAg IGdkYnB5X3ByaW50X3N0YWNrICgpOwotIAkJICB9Ci0gCSAgICAgIH0KLSsJICAgIC8qIElmIHRo ZSBwcmludGVyIHJldHVybmVkIGEgcmVwbGFjZW1lbnQgdmFsdWUsIHNldCBWQUxVRQotKwkgICAg ICAgdG8gUkVQTEFDRU1FTlQuICBJZiB0aGVyZSBpcyBub3QgYSByZXBsYWNlbWVudCB2YWx1ZSwK LSsJICAgICAgIGp1c3QgdXNlIHRoZSB2YWx1ZSBwYXNzZWQgdG8gdGhpcyBmdW5jdGlvbi4gICov Ci0gCSAgICBpZiAocmVwbGFjZW1lbnQpCi0gCSAgICAgIHZhbHVlID0gcmVwbGFjZW1lbnQ7Ci0g CSAgfQotQEAgLTI2NzIsMTIgKzI2ODYsMTggQEAKLSAgIGdldF9mb3JtYXR0ZWRfcHJpbnRfb3B0 aW9ucyAoJm9wdHMsIGZvcm1hdF9jb2RlWyhpbnQpIGZvcm1hdF0pOwotICAgb3B0cy5kZXJlZl9y ZWYgPSAwOwotICAgb3B0cy5yYXcgPSAxOwotKwotKyAgLyogSWYgdGhlIFRIRVZBTFVFIGhhcyBj b250ZW50cywgaXQgaXMgYSByZWd1bGFyIHN0cmluZy4gICovCi0gICBpZiAodGhldmFsdWUpCi0g ICAgIExBX1BSSU5UX1NUUklORyAoc3RiLCB0eXBlLCB0aGV2YWx1ZSwgbGVuLCBlbmNvZGluZywg MCwgJm9wdHMpOwotICAgZWxzZSBpZiAoc3RyaW5nX3ByaW50KQotKyAgICAvKiBPdGhlcndpc2Us IGlmIHN0cmluZ19wcmludCBpcyBzZXQsIGFuZCBpdCBpcyBub3QgYSByZWd1bGFyCi0rICAgICAg IHN0cmluZywgaXQgaXMgYSBsYXp5IHN0cmluZy4gICovCi0gICAgIHZhbF9wcmludF9zdHJpbmcg KHR5cGUsIGVuY29kaW5nLCBzdHJfYWRkciwgbGVuLCBzdGIsICZvcHRzKTsKLSAgIGVsc2UKLSsg ICAgLyogQWxsIG90aGVyIGNhc2VzLiAgKi8KLSAgICAgY29tbW9uX3ZhbF9wcmludCAodmFsdWUs IHN0YiwgMCwgJm9wdHMsIGN1cnJlbnRfbGFuZ3VhZ2UpOwotKwotICAgdGhldmFsdWUgPSB1aV9m aWxlX3hzdHJkdXAgKHN0YiwgTlVMTCk7Ci0gCi0gICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsK LSMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJMjAxMS8wNy8yNyAyMToxODozOQkxLjI4 MTYKLSMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJMjAxMS8wNy8yOCAxMDozNjo0MAkx LjI4MTcKLSMjIC0xLDMgKzEsMTAgQEAKLSsyMDExLTA3LTI4ICBQaGlsIE11bGRvb24gIDxwbXVs ZG9vbkByZWRoYXQuY29tPgotKwotKwkqIGdkYi5weXRob24vcHktbWkuZXhwOiBUZXN0IHByaW50 ZXJzIHJldHVybmluZyBzdHJpbmcgaGludCwgYW5kCi0rCWFsc28gbm90IHJldHVybmluZyBhIHZh bHVlLgotKwkqIGdkYi5weXRob24vcHktcHJldHR5cHJpbnQuYzogQWRkIHRlc3RjYXNlIGZvciBh Ym92ZS4KLSsJKiBnZGIucHl0aG9uL3B5LXByZXR0eXByaW50LnB5OiBBZGQgdGVzdCBwcmludGVy IGZvciBhYm92ZS4KLSsKLSAyMDExLTA3LTI3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+Ci0gCi0gCSogZ2RiLmR3YXJmMi9kdzItc2ltcGxlLWxvY2Rlc2MuUzog Q2hhbmdlIERXQVJGIHZlcnNpb24gdG8gMy4KLS0tLSBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0 aG9uL3B5LW1pLmV4cAkyMDExLzA3LzI2IDE4OjM4OjU1CTEuMTMKLSsrKyBzcmMvZ2RiL3Rlc3Rz dWl0ZS9nZGIucHl0aG9uL3B5LW1pLmV4cAkyMDExLzA3LzI4IDEwOjM2OjQwCTEuMTQKLUBAIC0y ODQsNiArMjg0LDEzIEBAIG1pX2xpc3RfdmFyb2JqX2NoaWxkcmVuIG5zdHlwZTIgewotICAgICB7 IHtuc3R5cGUyLjxlcnJvciBhdCAwPn0gezxlcnJvciBhdCAwPn0gNiB7Y2hhciBcWzZcXX0gfQot IH0gImxpc3QgY2hpbGRyZW4gYWZ0ZXIgc2V0dGluZyBleGNlcHRpb24gZmxhZyIKLSAKLSttaV9j cmVhdGVfdmFyb2JqIG1lIG1lIFwKLSsgICJjcmVhdGUgbWUgdmFyb2JqIgotKwotK21pX2dkYl90 ZXN0ICItdmFyLWV2YWx1YXRlLWV4cHJlc3Npb24gbWUiIFwKLSsJIlxcXmRvbmUsdmFsdWU9XCI8 ZXJyb3IgcmVhZGluZyB2YXJpYWJsZTogQ2Fubm90IGFjY2VzcyBtZW1vcnkuPi4qXCIiIFwKLSsJ ImV2YWx1YXRlIG1lIHZhcm9iaiIKLSsKLSAjIEMrKyBNSSB0ZXN0cwotIGdkYl9leGl0Ci0gaWYg IHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZp bGV9IiBcCi0tLS0gc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1wcmV0dHlwcmludC5j CTIwMTEvMDQvMjkgMTI6NDU6NDYJMS4xMgotKysrIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5weXRo b24vcHktcHJldHR5cHJpbnQuYwkyMDExLzA3LzI4IDEwOjM2OjQwCTEuMTMKLUBAIC0xNDksNiAr MTQ5LDExIEBACi0gCi0gdHlwZWRlZiBzdHJ1Y3QganVzdGNoaWxkcmVuIG5vc3RyaW5nX3R5cGU7 Ci0gCi0rc3RydWN0IG1lbW9yeV9lcnJvcgotK3sKLSsgIGNvbnN0IGNoYXIgKnM7Ci0rfTsKLSsK LSBzdHJ1Y3QgY29udGFpbmVyCi0gewotICAgc3RyaW5nIG5hbWU7Ci1AQCAtMjI3LDYgKzIzMiw3 IEBACi0gICAvKiBDbGVhcmluZyBieSBiZWluZyBgc3RhdGljJyBjb3VsZCBpbnZva2UgYW4gb3Ro ZXIgR0RCIEMrKyBidWcuICAqLwotICAgc3RydWN0IG51bGxzdHIgbnVsbHN0cjsKLSAgIG5vc3Ry aW5nX3R5cGUgbnN0eXBlLCBuc3R5cGUyOwotKyAgc3RydWN0IG1lbW9yeV9lcnJvciBtZTsKLSAg IHN0cnVjdCBucyBucywgbnMyOwotICAgc3RydWN0IGxhenlzdHJpbmcgZXN0cmluZywgZXN0cmlu ZzI7Ci0gICBzdHJ1Y3QgaGludF9lcnJvciBoaW50X2Vycm9yOwotQEAgLTIzNCw2ICsyNDAsOCBA QAotICAgbnN0eXBlLmVsZW1lbnRzID0gbmFycmF5OwotICAgbnN0eXBlLmxlbiA9IDA7Ci0gCi0r ICBtZS5zID0gImJsYWgiOwotKwotICAgaW5pdF9zcygmc3MsIDEsIDIpOwotICAgaW5pdF9zcyhz c2ErMCwgMywgNCk7Ci0gICBpbml0X3NzKHNzYSsxLCA1LCA2KTsKLS0tLSBzcmMvZ2RiL3Rlc3Rz dWl0ZS9nZGIucHl0aG9uL3B5LXByZXR0eXByaW50LnB5CTIwMTEvMDQvMTEgMTc6NDA6NDEJMS4x MQotKysrIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktcHJldHR5cHJpbnQucHkJMjAx MS8wNy8yOCAxMDozNjo0MAkxLjEyCi1AQCAtMTcsNiArMTcsNyBAQAotICMgcHJpbnRlcnMuCi0g Ci0gaW1wb3J0IHJlCi0raW1wb3J0IGdkYgotIAotICMgVGVzdCByZXR1cm5pbmcgYSBWYWx1ZSBm cm9tIGEgcHJpbnRlci4KLSBjbGFzcyBzdHJpbmdfcHJpbnQ6Ci1AQCAtMTg2LDYgKzE4NywxOCBA QAotICAgICAgICAgeWllbGQgJ3MnLCBzZWxmLnZhbFsncyddCi0gICAgICAgICB5aWVsZCAneCcs IHNlbGYudmFsWyd4J10KLSAKLStjbGFzcyBNZW1vcnlFcnJvclN0cmluZzoKLSsgICAgIlJhaXNl IGFuIGVycm9yIgotKwotKyAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsKToKLSsgICAgICAgIHNl bGYudmFsID0gdmFsCi0rCi0rICAgIGRlZiB0b19zdHJpbmcoc2VsZik6Ci0rICAgICAgICByYWlz ZSBnZGIuTWVtb3J5RXJyb3IgKCJDYW5ub3QgYWNjZXNzIG1lbW9yeS4iKTsKLSsKLSsgICAgZGVm IGRpc3BsYXlfaGludCAoc2VsZik6Ci0rICAgICAgICByZXR1cm4gJ3N0cmluZycKLSsKLSBkZWYg bG9va3VwX2Z1bmN0aW9uICh2YWwpOgotICAgICAiTG9vay11cCBhbmQgcmV0dXJuIGEgcHJldHR5 LXByaW50ZXIgdGhhdCBjYW4gcHJpbnQgdmFsLiIKLSAKLUBAIC0yNjEsNiArMjc0LDggQEAKLSAg ICAgcHJldHR5X3ByaW50ZXJzX2RpY3RbcmUuY29tcGlsZSAoJ15zdHJ1Y3QgaGludF9lcnJvciQn KV0gID0gcHBfaGludF9lcnJvcgotICAgICBwcmV0dHlfcHJpbnRlcnNfZGljdFtyZS5jb21waWxl ICgnXmhpbnRfZXJyb3IkJyldICA9IHBwX2hpbnRfZXJyb3IKLSAKLSsgICAgcHJldHR5X3ByaW50 ZXJzX2RpY3RbcmUuY29tcGlsZSAoJ15tZW1vcnlfZXJyb3IkJyldICA9IE1lbW9yeUVycm9yU3Ry aW5nCi0rCi0gcHJldHR5X3ByaW50ZXJzX2RpY3QgPSB7fQotIAotIHJlZ2lzdGVyX3ByZXR0eV9w cmludGVycyAoKQotCi0KLQotY29tbWl0IDg0YmUyYjRkMGE1NWM5NTY5N2M5ZWNjNzJiYjMxYzJm YmQzMTYxMjcKLUF1dGhvcjogaWFuIDxpYW5AMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcy YjA1NGE0PgotRGF0ZTogICBUdWUgSnVsIDI2IDE0OjI4OjIzIDIwMTEgKzAwMDAKLQotICAgIAkq IGNwLWRlbWFuZ2xlLmMgKGRfcHJpbnRfaW5pdCk6IEluaXRpYWxpemUgcGFja19pbmRleCBmaWVs ZC4KLSAgICAJKGRfcHJpbnRfY29tcCk6IENoZWNrIGZvciBOVUxMIHRlbXBsYXRlIGFyZ3VtZW50 LgotICAgIAkqIHRlc3RzdWl0ZS9kZW1hbmdsZS1leHBlY3RlZDogQWRkIHRlc3QgY2FzZS4KLSAg ICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBzdm4rc3NoOi8vZ2NjLmdudS5vcmcvc3ZuL2djYy90 cnVua0AxNzY3OTEgMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0Ci0KLSMjIyBh L2xpYmliZXJ0eS9DaGFuZ2VMb2cKLSMjIyBiL2xpYmliZXJ0eS9DaGFuZ2VMb2cKLSMjIC0xLDMg KzEsOSBAQAotKzIwMTEtMDctMjYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW50QGdvb2dsZS5jb20+ Ci0rCi0rCSogY3AtZGVtYW5nbGUuYyAoZF9wcmludF9pbml0KTogSW5pdGlhbGl6ZSBwYWNrX2lu ZGV4IGZpZWxkLgotKwkoZF9wcmludF9jb21wKTogQ2hlY2sgZm9yIE5VTEwgdGVtcGxhdGUgYXJn dW1lbnQuCi0rCSogdGVzdHN1aXRlL2RlbWFuZ2xlLWV4cGVjdGVkOiBBZGQgdGVzdCBjYXNlLgot KwotIDIwMTEtMDctMjIgIEdlcmFsZCBQZmVpZmVyICA8Z2VyYWxkQHBmZWlmZXIuY29tPgotIAot IAlQUiB0YXJnZXQvNDk4MTcKLS0tLSBhL2xpYmliZXJ0eS9jcC1kZW1hbmdsZS5jCi0rKysgYi9s aWJpYmVydHkvY3AtZGVtYW5nbGUuYwotQEAgLTEsNSArMSw1IEBACi0gLyogRGVtYW5nbGVyIGZv ciBnKysgVjMgQUJJLgotLSAgIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwg MjAwNywgMjAwOCwgMjAwOSwgMjAxMAotKyAgIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAw NSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMQotICAgIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgotICAgIFdyaXR0ZW4gYnkgSWFuIExhbmNlIFRheWxvciA8aWFuQHdh c2FiaXN5c3RlbXMuY29tPi4KLSAKLUBAIC0zMzA2LDYgKzMzMDYsNyBAQCBkX3ByaW50X2luaXQg KHN0cnVjdCBkX3ByaW50X2luZm8gKmRwaSwgZGVtYW5nbGVfY2FsbGJhY2tyZWYgY2FsbGJhY2ss Ci0gICBkcGktPmxhc3RfY2hhciA9ICdcMCc7Ci0gICBkcGktPnRlbXBsYXRlcyA9IE5VTEw7Ci0g ICBkcGktPm1vZGlmaWVycyA9IE5VTEw7Ci0rICBkcGktPnBhY2tfaW5kZXggPSAwOwotICAgZHBp LT5mbHVzaF9jb3VudCA9IDA7Ci0gCi0gICBkcGktPmNhbGxiYWNrID0gY2FsbGJhY2s7Ci1AQCAt Mzg5Myw2ICszODk0LDEzIEBAIGRfcHJpbnRfY29tcCAoc3RydWN0IGRfcHJpbnRfaW5mbyAqZHBp LCBpbnQgb3B0aW9ucywKLSAJICAgIHN0cnVjdCBkZW1hbmdsZV9jb21wb25lbnQgKmEgPSBkX2xv b2t1cF90ZW1wbGF0ZV9hcmd1bWVudCAoZHBpLCBzdWIpOwotIAkgICAgaWYgKGEgJiYgYS0+dHlw ZSA9PSBERU1BTkdMRV9DT01QT05FTlRfVEVNUExBVEVfQVJHTElTVCkKLSAJICAgICAgYSA9IGRf aW5kZXhfdGVtcGxhdGVfYXJndW1lbnQgKGEsIGRwaS0+cGFja19pbmRleCk7Ci0rCi0rCSAgICBp ZiAoYSA9PSBOVUxMKQotKwkgICAgICB7Ci0rCQlkX3ByaW50X2Vycm9yIChkcGkpOwotKwkJcmV0 dXJuOwotKwkgICAgICB9Ci0rCi0gCSAgICBzdWIgPSBhOwotIAkgIH0KLSAKLS0tLSBhL2xpYmli ZXJ0eS90ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQKLSsrKyBiL2xpYmliZXJ0eS90ZXN0c3Vp dGUvZGVtYW5nbGUtZXhwZWN0ZWQKLUBAIC00MDEwLDYgKzQwMTAsMTIgQEAgSzwxLCAmUzo6bT46 OmYoKQotIF9aTjFLSUxpMUVYYWRMX1pOMVMxbUVFRUUxZkV2Ci0gSzwxLCAmUzo6bT46OmYoKQot ICMKLSsjIFVzZWQgdG8gY3Jhc2ggLS0gYmludXRpbHMgUFIgMTMwMzAuCi0rLS1mb3JtYXQ9Z251 LXYzCi0rX1pTdDEwX0NvbnN0cnVjdEkxMENlbGxCb3JkZXJJUzBfRUV2UFRfRHBPVDBfCi0rX1pT dDEwX0NvbnN0cnVjdEkxMENlbGxCb3JkZXJJUzBfRUV2UFRfRHBPVDBfCi0rX1pTdDEwX0NvbnN0 cnVjdEkxMENlbGxCb3JkZXJJUzBfRUV2UFRfRHBPVDBfCi0rIwotICMgQWRhIChHTkFUKSB0ZXN0 cy4KLSAjCi0gIyBTaW1wbGUgdGVzdC4KLQotCi0KLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9n ZGItY3ZzLzIwMTEtMDgvbXNnMDAwNDcuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAx MS8wOC8wOCAyMTo0MToxMgkxLjEzMjU5Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMS8wOC8w OSAxMjo0NTozOQkxLjEzMjYwCi0jIyAtMSwzICsxLDEzIEBACi0rMjAxMS0wOC0wOSAgUGhpbCBN dWxkb29uICA8cG11bGRvb25AcmVkaGF0LmNvbT4KLSsKLSsJKiBweXRob24vbGliL2dkYi9fX2lu aXRfXy5weTogQXV0by1sb2FkIGZpbGVzIGluIGNvbW1hbmQgYW5kCi0rCWZ1bmN0aW9uIGRpcmVj dG9yaWVzLgotKwkqIHB5dGhvbi9weXRob24uYyAoZmluaXNoX3B5dGhvbl9pbml0aWFsaXphdGlv bik6IFVzZQotKwlvcy5wYXRoLmpvaW4uCi0rCSogcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9wcmV0 dHlfcHJpbnRlcnMucHk6IFNlbGYgcmVnaXN0ZXIKLSsJY29tbWFuZC4KLSsJKiBORVdTOiBEb2N1 bWVudCBhdXRvLWxvYWRpbmcuCi0rCi0gMjAxMS0wOC0wOCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4u a3JhdG9jaHZpbEByZWRoYXQuY29tPgotIAotIAkqIGR3YXJmMmxvYy5jIChkd2FyZjJfZXZhbHVh dGVfbG9jX2Rlc2NfZnVsbCkgPERXQVJGX1ZBTFVFX1NUQUNLPgotLS0tIHNyYy9nZGIvTkVXUwky MDExLzA3LzI2IDIwOjU3OjUzCTEuNDQ2Ci0rKysgc3JjL2dkYi9ORVdTCTIwMTEvMDgvMDkgMTI6 NDU6MzkJMS40NDcKLUBAIC0yMyw2ICsyMywxMSBAQAotICAgKiogQSBwcm9tcHQgc3Vic2l0dXRp b24gaG9vayAocHJvbXB0X2hvb2spIGlzIG5vdyBhdmFpbGFibGUgdG8gdGhlCi0gICAgICBQeXRo b24gQVBJLgotIAotKyAgKiogUHl0aG9uIGNvbW1hbmRzIGFuZCBjb252ZW5pZW5jZS1mdW5jdGlv bnMgbG9jYXRlZCBpbgotKyAgICAnZGF0YS1kaXJlY3RvcnknL3B5dGhvbi9nZGIvY29tbWFuZCBh bmQKLSsgICAgJ2RhdGEtZGlyZWN0b3J5Jy9weXRob24vZ2RiL2Z1bmN0aW9uIGFyZSBub3cgYXV0 b21hdGljYWxseSBsb2FkZWQKLSsgICAgIG9uIEdEQiBzdGFydC11cC4KLSsKLSAqIGxpYnRocmVh ZC1kYi1zZWFyY2gtcGF0aCBub3cgc3VwcG9ydHMgdHdvIHNwZWNpYWwgdmFsdWVzOiAkc2RpciBh bmQgJHBkaXIuCi0gICAkc2RpciBzcGVjaWZpZXMgdGhlIGRlZmF1bHQgc3lzdGVtIGxvY2F0aW9u cyBvZiBzaGFyZWQgbGlicmFyaWVzLgotICAgJHBkaXIgc3BlY2lmaWVzIHRoZSBkaXJlY3Rvcnkg d2hlcmUgdGhlIGxpYnB0aHJlYWQgdXNlZCBieSB0aGUgYXBwbGljYXRpb24KLSMjIyBzcmMvZ2Ri L2RvYy9DaGFuZ2VMb2cJMjAxMS8wNy8yNiAxNjo1OToyMwkxLjEyMDIKLSMjIyBzcmMvZ2RiL2Rv Yy9DaGFuZ2VMb2cJMjAxMS8wOC8wOSAxMjo0NTozOQkxLjEyMDMKLSMjIC0xLDMgKzEsOCBAQAot KzIwMTEtMDgtMDkgIFBoaWwgTXVsZG9vbiAgPHBtdWxkb29uQHJlZGhhdC5jb20+Ci0rCi0rCSog Z2RiLnRleGluZm8gKFB5dGhvbik6IERvY3VtZW50IGNvbW1hbmQgYW5kIGZ1bmN0aW9uCi0rCWF1 dG8tbG9hZGluZy4KLSsKLSAyMDExLTA3LTI2ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+Ci0gCSAgICBFbGkgWmFyZXRza2lpICA8ZWxpekBnbnUub3JnPgotIAot LS0tIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTEvMDcvMjYgMjA6NTc6NTQJMS44NTEKLSsr KyBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDExLzA4LzA5IDEyOjQ1OjM5CTEuODUyCi1AQCAt MjA4NDUsNiArMjA4NDUsMTIgQEAKLSBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBQeXRo b24gU2VhcmNoIFBhdGggaW4gb3JkZXIgdG8gYWxsb3cKLSB0aGUgUHl0aG9uIGludGVycHJldGVy IHRvIGxvY2F0ZSBhbGwgc2NyaXB0cyBpbnN0YWxsZWQgYXQgdGhpcyBsb2NhdGlvbi4KLSAKLStB ZGRpdGlvbmFsbHksIEB2YWx1ZXtHREJOfSBjb21tYW5kcyBhbmQgY29udmVuaWVuY2UgZnVuY3Rp b25zIHdoaWNoCi0rYXJlIHdyaXR0ZW4gaW4gUHl0aG9uIGFuZCBhcmUgbG9jYXRlZCBpbiB0aGUK LStAZmlsZXtAdmFye2RhdGEtZGlyZWN0b3J5fS9weXRob24vZ2RiL2NvbW1hbmR9IG9yCi0rQGZp bGV7QHZhcntkYXRhLWRpcmVjdG9yeX0vcHl0aG9uL2dkYi9mdW5jdGlvbn0gZGlyZWN0b3JpZXMg YXJlCi0rYXV0b21hdGljYWxseSBpbXBvcnRlZCB3aGVuIEB2YWx1ZXtHREJOfSBzdGFydHMuCi0r Ci0gQG1lbnUKLSAqIFB5dGhvbiBDb21tYW5kczo6ICAgICAgICAgICAgIEFjY2Vzc2luZyBQeXRo b24gZnJvbSBAdmFsdWV7R0RCTn0uCi0gKiBQeXRob24gQVBJOjogICAgICAgICAgICAgICAgICBB Y2Nlc3NpbmcgQHZhbHVle0dEQk59IGZyb20gUHl0aG9uLgotLS0tIHNyYy9nZGIvcHl0aG9uL3B5 dGhvbi5jCTIwMTEvMDcvMjIgMDk6MjI6NTAJMS42OAotKysrIHNyYy9nZGIvcHl0aG9uL3B5dGhv bi5jCTIwMTEvMDgvMDkgMTI6NDU6NDAJMS42OQotQEAgLTEzMDIsMTMgKzEzMDIsMTMgQEAKLSAg IHN5cy5wYXRoLmluc2VydCAoMCwgZ2RiLlBZVEhPTkRJUilcblwKLSBcblwKLSAgICMgVGVsbCBw eXRob24gd2hlcmUgdG8gZmluZCBzdWJtb2R1bGVzIG9mIGdkYi5cblwKLS0gIGdkYi5fX3BhdGhf XyA9IFtnZGIuUFlUSE9ORElSICsgJy9nZGInXVxuXAotKyAgZ2RiLl9fcGF0aF9fID0gW29zLnBh dGguam9pbiAoZ2RiLlBZVEhPTkRJUiwgJ2dkYicpXVxuXAotIFxuXAotICAgIyBUaGUgZ2RiIG1v ZHVsZSBpcyBpbXBsZW1lbnRlZCBpbiBDIHJhdGhlciB0aGFuIGluIFB5dGhvbi4gIEFzIGEgcmVz dWx0LFxuXAotICAgIyB0aGUgYXNzb2NpYXRlZCBfX2luaXQucHlfXyBzY3JpcHQgaXMgbm90IG5v dCBleGVjdXRlZCBieSBkZWZhdWx0IHdoZW5cblwKLSAgICMgdGhlIGdkYiBtb2R1bGUgZ2V0cyBp bXBvcnRlZC4gIEV4ZWN1dGUgdGhhdCBzY3JpcHQgbWFudWFsbHkgaWYgaXRcblwKLSAgICMgZXhp c3RzLlxuXAotLSAgaXB5ID0gZ2RiLlBZVEhPTkRJUiArICcvZ2RiL19faW5pdF9fLnB5J1xuXAot KyAgaXB5ID0gb3MucGF0aC5qb2luIChnZGIuUFlUSE9ORElSLCAnZ2RiJywgJ19faW5pdF9fLnB5 JylcblwKLSAgIGlmIG9zLnBhdGguZXhpc3RzIChpcHkpOlxuXAotICAgICBleGVjZmlsZSAoaXB5 KVxuXAotIFxuXAotLS0tIHNyYy9nZGIvcHl0aG9uL2xpYi9nZGIvX19pbml0X18ucHkJMjAxMS8w MS8wMSAxNTozMzoyNgkxLjMKLSsrKyBzcmMvZ2RiL3B5dGhvbi9saWIvZ2RiL19faW5pdF9fLnB5 CTIwMTEvMDgvMDkgMTI6NDU6NDAJMS40Ci1AQCAtMTMsNiArMTMsMjkgQEAKLSAjIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl Ci0gIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4KLSAKLS1pbXBvcnQgZ2RiLmNvbW1hbmQucHJldHR5X3ByaW50ZXJz Ci0raW1wb3J0IHRyYWNlYmFjawotIAotLWdkYi5jb21tYW5kLnByZXR0eV9wcmludGVycy5yZWdp c3Rlcl9wcmV0dHlfcHJpbnRlcl9jb21tYW5kcygpCi0rIyBBdXRvLWxvYWQgYWxsIGZ1bmN0aW9u cy9jb21tYW5kcy4KLSsKLSsjIE1vZHVsZXMgdG8gYXV0by1sb2FkLCBhbmQgdGhlIHBhdGhzIHdo ZXJlIHRob3NlIG1vZHVsZXMgZXhpc3QuCi0rCi0rbW9kdWxlX2RpY3QgPSB7Ci0rICAnZ2RiLmZ1 bmN0aW9uJzogb3MucGF0aC5qb2luKGdkYi5QWVRIT05ESVIsICdnZGInLCAnZnVuY3Rpb24nKSwK LSsgICdnZGIuY29tbWFuZCc6IG9zLnBhdGguam9pbihnZGIuUFlUSE9ORElSLCAnZ2RiJywgJ2Nv bW1hbmQnKQotK30KLSsKLSsjIEl0ZXJhdGUgdGhlIGRpY3Rpb25hcnksIGNvbGxhdGluZyB0aGUg UHl0aG9uIGZpbGVzIGluIGVhY2ggbW9kdWxlCi0rIyBwYXRoLiAgQ29uc3RydWN0IHRoZSBtb2R1 bGUgbmFtZSwgYW5kIGltcG9ydC4KLSsKLStmb3IgbW9kdWxlLCBsb2NhdGlvbiBpbiBtb2R1bGVf ZGljdC5pdGVyaXRlbXMoKToKLSsgIGlmIG9zLnBhdGguZXhpc3RzKGxvY2F0aW9uKToKLSsgICAg IHB5X2ZpbGVzID0gZmlsdGVyKGxhbWJkYSB4OiB4LmVuZHN3aXRoKCcucHknKSBhbmQgeCAhPSAn X19pbml0X18ucHknLAotKyAgICAgICAgICAgICAgICAgICAgICAgb3MubGlzdGRpcihsb2NhdGlv bikpCi0rCi0rICAgICBmb3IgcHlfZmlsZSBpbiBweV9maWxlczoKLSsgICAgICAgIyBDb25zdHJ1 Y3QgZnJvbSBmb28ucHksIGdkYi5tb2R1bGUuZm9vCi0rICAgICAgIHB5X2ZpbGUgPSBtb2R1bGUg KyAnLicgKyBweV9maWxlWzotM10KLSsgICAgICAgdHJ5OgotKyAgICAgICAgIGV4ZWMoJ2ltcG9y dCAnICsgcHlfZmlsZSkKLSsgICAgICAgZXhjZXB0OgotKyAgICAgICAgIHByaW50ID4+IHN5cy5z dGRlcnIsIHRyYWNlYmFjay5mb3JtYXRfZXhjKCkKLS0tLSBzcmMvZ2RiL3B5dGhvbi9saWIvZ2Ri L2NvbW1hbmQvcHJldHR5X3ByaW50ZXJzLnB5CTIwMTEvMDEvMDEgMTU6MzM6MjcJMS40Ci0rKysg c3JjL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3ByZXR0eV9wcmludGVycy5weQkyMDExLzA4 LzA5IDEyOjQ1OjQwCTEuNQotQEAgLTM2OCwzICszNjgsNSBAQAotICAgICBJbmZvUHJldHR5UHJp bnRlcigpCi0gICAgIEVuYWJsZVByZXR0eVByaW50ZXIoKQotICAgICBEaXNhYmxlUHJldHR5UHJp bnRlcigpCi0rCi0rcmVnaXN0ZXJfcHJldHR5X3ByaW50ZXJfY29tbWFuZHMoKQotCi0KLQotaHR0 cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTEtMDgvbXNnMDA1MDUuaHRtbAot U3ViamVjdDogZml4ICJpbmZvIG9zIHByb2Nlc3NlcyIgcmFjZSAtPiBjcmFzaCAoZXh0LXJ1bi5l eHAgcmFjeSBGQUlMKQotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMS0wOC9t c2cwMDExNi5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDExLzA4LzI2IDE3OjU4OjU3 CTEuMTMyODEKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDExLzA4LzI2IDE4OjU4OjAyCTEuMTMy ODIKLSMjIC0xLDMgKzEsOCBAQAotKzIwMTEtMDgtMjYgIFBlZHJvIEFsdmVzICA8cGVkcm9AY29k ZXNvdXJjZXJ5LmNvbT4KLSsKLSsJKiBjb21tb24vbGludXgtb3NkYXRhLmMgKGdldF9jb3Jlc191 c2VkX2J5X3Byb2Nlc3MpOiBEb24ndCBhc3N1bWUKLSsJb3BlbmluZyAvcHJvYy9QSUQvdGFzayBh bHdheXMgc3VjY2VlZHMuCi0rCi0gMjAxMS0wOC0yNiAgQWxla3NhbmRhciBSaXN0b3Zza2kgPGFy aXN0b3Zza2lAcW54LmNvbT4KLSAKLSAJKiBsaW5lc3BlYy5jIChzeW10YWJfZnJvbV9maWxlbmFt ZSk6IENoZWNrIGZvciB0aGUgZW5kIG9mIHN0cmluZy4KLS0tLSBzcmMvZ2RiL2NvbW1vbi9saW51 eC1vc2RhdGEuYwkyMDExLzA3LzIxIDIzOjQ2OjA5CTEuMQotKysrIHNyYy9nZGIvY29tbW9uL2xp bnV4LW9zZGF0YS5jCTIwMTEvMDgvMjYgMTg6NTg6MDQJMS4yCi1AQCAtMjU5LDI3ICsyNTksMjkg QEAKLSAKLSAgIHNwcmludGYgKHRhc2tkaXIsICIvcHJvYy8lZC90YXNrIiwgcGlkKTsKLSAgIGRp ciA9IG9wZW5kaXIgKHRhc2tkaXIpOwotLQotLSAgd2hpbGUgKChkcCA9IHJlYWRkaXIgKGRpcikp ICE9IE5VTEwpCi0rICBpZiAoZGlyKQotICAgICB7Ci0tICAgICAgcGlkX3QgdGlkOwotLSAgICAg IGludCBjb3JlOwotKyAgICAgIHdoaWxlICgoZHAgPSByZWFkZGlyIChkaXIpKSAhPSBOVUxMKQot Kwl7Ci0rCSAgcGlkX3QgdGlkOwotKwkgIGludCBjb3JlOwotIAotLSAgICAgIGlmICghaXNkaWdp dCAoZHAtPmRfbmFtZVswXSkKLS0JICB8fCBOQU1FTEVOIChkcCkgPiBzaXplb2YgKCI0Mjk0OTY3 Mjk1IikgLSAxKQotLQljb250aW51ZTsKLSsJICBpZiAoIWlzZGlnaXQgKGRwLT5kX25hbWVbMF0p Ci0rCSAgICAgIHx8IE5BTUVMRU4gKGRwKSA+IHNpemVvZiAoIjQyOTQ5NjcyOTUiKSAtIDEpCi0r CSAgICBjb250aW51ZTsKLSAKLS0gICAgICB0aWQgPSBhdG9pIChkcC0+ZF9uYW1lKTsKLS0gICAg ICBjb3JlID0gbGludXhfY29tbW9uX2NvcmVfb2ZfdGhyZWFkIChwdGlkX2J1aWxkIChwaWQsIHRp ZCwgMCkpOwotKwkgIHRpZCA9IGF0b2kgKGRwLT5kX25hbWUpOwotKwkgIGNvcmUgPSBsaW51eF9j b21tb25fY29yZV9vZl90aHJlYWQgKHB0aWRfYnVpbGQgKHBpZCwgdGlkLCAwKSk7Ci0gCi0tICAg ICAgaWYgKGNvcmUgPj0gMCkKLS0JewotLQkgICsrY29yZXNbY29yZV07Ci0tCSAgKyt0YXNrX2Nv dW50OwotKwkgIGlmIChjb3JlID49IDApCi0rCSAgICB7Ci0rCSAgICAgICsrY29yZXNbY29yZV07 Ci0rCSAgICAgICsrdGFza19jb3VudDsKLSsJICAgIH0KLSAJfQotLSAgICB9Ci0gCi0tICBjbG9z ZWRpciAoZGlyKTsKLSsgICAgICBjbG9zZWRpciAoZGlyKTsKLSsgICAgfQotIAotICAgcmV0dXJu IHRhc2tfY291bnQ7Ci0gfQotCi0KLQotRml4IGZvciBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5j b20vc2hvd19idWcuY2dpP2lkPTc1MDM0MQotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1w YXRjaGVzLzIwMTEtMTAvbXNnMDA1NzAuaHRtbAotCi0KLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9t bC9nZGItY3ZzLzIwMTEtMTAvbXNnMDAxNTQuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJ MjAxMS8xMC8yMCAxMzozNDoxMwkxLjEzNDQ2Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMS8x MC8yMCAyMDowNjoxMQkxLjEzNDQ3Ci0jIyAtMSwzICsxLDE1IEBACi0rMjAxMS0xMC0yMCAgQWxl a3NhbmRhciBSaXN0b3Zza2kgIDxhcmlzdG92c2tpQHFueC5jb20+Ci0rCi0rCSogY3AtbmFtZXNw YWNlLmMgKGNwX3NjYW5fZm9yX2Fub255bW91c19uYW1lc3BhY2VzKTogQ2hhbmdlZCBmdW5jdGlv bgotKwlhcmd1bWVudHMgYnkgYWRkaW5nIE9CSkZJTEUuICBJbnN0ZWFkIG9mIGdldHRpbmcgb2Jq ZmlsZSBmcm9tCi0rCXN5bWJvbCdzIHN5bXRhYiwgdXNlIG5ldyBhcmd1bWVudCBPQkpGSUxFLgot KwkqIGNwLXN1cHBvcnQuaCAoY3Bfc2Nhbl9mb3JfYW5vbnltb3VzX25hbWVzcGFjZXMpOiBDaGFu Z2VkIGZ1bmN0aW9uCi0rCWFyZ3VtZW50cyBieSBhZGRpbmcgT0JKRklMRS4KLSsJKiBnZGIvZHdh cmYycmVhZC5jIChuZXdfc3ltYm9sX2Z1bGwpOiBDaGFuZ2UgY2FsbCB0bwotKwljcF9zY2FuX2Zv cl9hbm9ueW1vdXNfbmFtZXNwYWNlcyB0byBtYXRjaCBuZXcgc2lnbmF0dXJlLgotKwkqIGdkYi9z dGFic3JlYWQuYyAoZGVmaW5lX3N5bWJvbCk6IENoYW5nZSBjYWxsIHRvCi0rCWNwX3NjYW5fZm9y X2Fub255bW91c19uYW1lc3BhY2VzIHRvIG1hdGNoIG5ldyBzaWduYXR1cmUuCi0rCi0gMjAxMS0x MC0yMCAgUGhpbCBNdWxkb29uICA8cG11bGRvb25AcmVkaGF0LmNvbT4KLSAKLSAgICAgICAgIFBS IHB5dGhvbi8xMzMwOAotLS0tIHNyYy9nZGIvY3AtbmFtZXNwYWNlLmMJMjAxMS8wNi8yOSAyMjow NToxNQkxLjU0Ci0rKysgc3JjL2dkYi9jcC1uYW1lc3BhY2UuYwkyMDExLzEwLzIwIDIwOjA2OjEz CTEuNTUKLUBAIC01Myw3ICs1Myw4IEBACi0gICAgYW5vbnltb3VzIG5hbWVzcGFjZTsgaWYgc28s IGFkZCBhbiBhcHByb3ByaWF0ZSB1c2luZyBkaXJlY3RpdmUuICAqLwotIAotIHZvaWQKLS1jcF9z Y2FuX2Zvcl9hbm9ueW1vdXNfbmFtZXNwYWNlcyAoY29uc3Qgc3RydWN0IHN5bWJvbCAqc3ltYm9s KQotK2NwX3NjYW5fZm9yX2Fub255bW91c19uYW1lc3BhY2VzIChjb25zdCBzdHJ1Y3Qgc3ltYm9s ICpjb25zdCBzeW1ib2wsCi0rCQkJCSAgc3RydWN0IG9iamZpbGUgKmNvbnN0IG9iamZpbGUpCi0g ewotICAgaWYgKFNZTUJPTF9ERU1BTkdMRURfTkFNRSAoc3ltYm9sKSAhPSBOVUxMKQotICAgICB7 Ci1AQCAtOTYsNyArOTcsNyBAQAotIAkJIG5hbWVzcGFjZSBnaXZlbiBieSB0aGUgcHJldmlvdXMg Y29tcG9uZW50IGlmIHRoZXJlIGlzCi0gCQkgb25lLCBvciB0byB0aGUgZ2xvYmFsIG5hbWVzcGFj ZSBpZiB0aGVyZSBpc24ndC4gICovCi0gCSAgICAgIGNwX2FkZF91c2luZ19kaXJlY3RpdmUgKGRl c3QsIHNyYywgTlVMTCwgTlVMTCwgTlVMTCwKLS0JICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJlNZTUJPTF9TWU1UQUIgKHN5bWJvbCktPm9iamZpbGUtPm9iamZpbGVfb2JzdGFjayk7Ci0r CSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2sp OwotIAkgICAgfQotIAkgIC8qIFRoZSAiKyAyIiBpcyBmb3IgdGhlICI6OiIuICAqLwotIAkgIHBy ZXZpb3VzX2NvbXBvbmVudCA9IG5leHRfY29tcG9uZW50ICsgMjsKLS0tLSBzcmMvZ2RiL2NwLXN1 cHBvcnQuaAkyMDExLzA4LzE4IDE2OjE3OjM4CTEuNDUKLSsrKyBzcmMvZ2RiL2NwLXN1cHBvcnQu aAkyMDExLzEwLzIwIDIwOjA2OjEzCTEuNDYKLUBAIC0xOTcsNyArMTk3LDggQEAKLSAJCQkJY29u c3QgY2hhciAqcHJvY2Vzc2luZ19jdXJyZW50X3ByZWZpeCwKLSAJCQkJaW50IHByb2Nlc3Npbmdf aGFzX25hbWVzcGFjZV9pbmZvKTsKLSAKLS1leHRlcm4gdm9pZCBjcF9zY2FuX2Zvcl9hbm9ueW1v dXNfbmFtZXNwYWNlcyAoY29uc3Qgc3RydWN0IHN5bWJvbCAqc3ltYm9sKTsKLStleHRlcm4gdm9p ZCBjcF9zY2FuX2Zvcl9hbm9ueW1vdXNfbmFtZXNwYWNlcyAoY29uc3Qgc3RydWN0IHN5bWJvbCAq c3ltYm9sLAotKwkJCQkJICAgICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOwotIAotIGV4dGVy biBzdHJ1Y3Qgc3ltYm9sICpjcF9sb29rdXBfc3ltYm9sX25vbmxvY2FsIChjb25zdCBjaGFyICpu YW1lLAotIAkJCQkJCSBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAotLS0tIHNyYy9nZGIvZHdh cmYycmVhZC5jCTIwMTEvMTAvMjAgMDE6MTE6MzQJMS41NzYKLSsrKyBzcmMvZ2RiL2R3YXJmMnJl YWQuYwkyMDExLzEwLzIwIDIwOjA2OjEzCTEuNTc3Ci1AQCAtMTE5OTIsNyArMTE5OTIsNyBAQAot IAkgbmFtZXNwYWNlcyBiYXNlZCBvbiB0aGUgZGVtYW5nbGVkIG5hbWUuICAqLwotICAgICAgIGlm ICghcHJvY2Vzc2luZ19oYXNfbmFtZXNwYWNlX2luZm8KLSAJICAmJiBjdS0+bGFuZ3VhZ2UgPT0g bGFuZ3VhZ2VfY3BsdXMpCi0tCWNwX3NjYW5fZm9yX2Fub255bW91c19uYW1lc3BhY2VzIChzeW0p OwotKwljcF9zY2FuX2Zvcl9hbm9ueW1vdXNfbmFtZXNwYWNlcyAoc3ltLCBvYmpmaWxlKTsKLSAg ICAgfQotICAgcmV0dXJuIChzeW0pOwotIH0KLS0tLSBzcmMvZ2RiL3N0YWJzcmVhZC5jCTIwMTEv MDUvMTggMTY6MzA6MzYJMS4xMzgKLSsrKyBzcmMvZ2RiL3N0YWJzcmVhZC5jCTIwMTEvMTAvMjAg MjA6MDY6MTQJMS4xMzkKLUBAIC03MjksNyArNzI5LDcgQEAKLSAJU1lNQk9MX1NFVF9OQU1FUyAo c3ltLCBzdHJpbmcsIHAgLSBzdHJpbmcsIDEsIG9iamZpbGUpOwotIAotICAgICAgIGlmIChTWU1C T0xfTEFOR1VBR0UgKHN5bSkgPT0gbGFuZ3VhZ2VfY3BsdXMpCi0tCWNwX3NjYW5fZm9yX2Fub255 bW91c19uYW1lc3BhY2VzIChzeW0pOwotKwljcF9zY2FuX2Zvcl9hbm9ueW1vdXNfbmFtZXNwYWNl cyAoc3ltLCBvYmpmaWxlKTsKLSAKLSAgICAgfQotICAgcCsrOwoKZGlmZiAtLWdpdCBhL2dkYi12 bGEtZnJhbWUtc2V0LnBhdGNoIGIvZ2RiLXZsYS1mcmFtZS1zZXQucGF0Y2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDg3ZGRjYTEuLjAwMDAwMDAKLS0tIGEvZ2RiLXZsYS1mcmFtZS1z ZXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi1jb21taXQgNTFkYWI5ZTQx ODc0MWFjNzA2NWNkNWE2ZWM5YjU3Mjg1ZTkwMjI3YwotaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQu Y29tL3Nob3dfYnVnLmNnaT9pZD03Mzg0ODIKLQotLS0tIGEvZ2RiL3ByaW50Y21kLmMKLSsrKyBi L2dkYi9wcmludGNtZC5jCi1AQCAtMTk4MSw2ICsxOTgxLDEwIEBAIHByaW50X3ZhcmlhYmxlX2Fu ZF92YWx1ZSAoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHN5bWJvbCAqdmFyLAotICAgICAgIHN0 cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zIG9wdHM7Ci0gCi0gICAgICAgdmFsID0gcmVhZF92YXJf dmFsdWUgKHZhciwgZnJhbWUpOwotKwotKyAgICAgIG1ha2VfY2xlYW51cF9yZXN0b3JlX3NlbGVj dGVkX2ZyYW1lICgpOwotKyAgICAgIHNlbGVjdF9mcmFtZSAoZnJhbWUpOwotKwotICAgICAgIGdl dF91c2VyX3ByaW50X29wdGlvbnMgKCZvcHRzKTsKLSAgICAgICBjb21tb25fdmFsX3ByaW50ICh2 YWwsIHN0cmVhbSwgaW5kZW50LCAmb3B0cywgY3VycmVudF9sYW5ndWFnZSk7Ci0gICAgIH0KLS0t LSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLWZyYW1lLmMKLUBA IC0wLDAgKzEsMzEgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05V IGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws Ci0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsK LSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rCi0raW50Ci0rbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiph cmd2KQotK3sKLSsgIGNoYXIgc1syICsgYXJnY107Ci0rICB2b2lkICgqZikgKGNoYXIgKikgPSAw OwotKwotKyAgbWVtc2V0IChzLCAwLCBzaXplb2YgKHMpKTsKLSsgIHNbMF0gPSAnWCc7Ci0rCi0r ICBmIChzKTsKLSsgIHJldHVybiAwOwotK30KLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvdmxhLWZyYW1lLmV4cAotQEAgLTAsMCArMSwzOCBAQAotKyMgQ29weXJp Z2h0IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIwotKyMgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl Ci0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4KLSsKLStzZXQgdGVzdGZpbGUgdmxhLWZyYW1lCi0rc2V0IGV4ZWN1 dGFibGUgJHt0ZXN0ZmlsZX0KLSsKLStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZp bGV9LmV4cCAke2V4ZWN1dGFibGV9XSB9IHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2lmICFb cnVudG9fbWFpbl0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rc2V0IHRlc3QgImNvbnRpbnVl IgotK2dkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKLSsgICAgLXJlICJDb250aW51aW5n XFwuXHJcblxyXG5Qcm9ncmFtIHJlY2VpdmVkIHNpZ25hbCBTSUdTRUdWLCBTZWdtZW50YXRpb24g ZmF1bHRcXC5cclxuMHgwKyBpbiBcXD9cXD8gXFwoXFwpXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJ cGFzcyAkdGVzdAotKyAgICB9Ci0rICAgIC1yZSAiXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJdW50 ZXN0ZWQgJHt0ZXN0ZmlsZX0uZXhwCi0rCXJldHVybgotKyAgICB9Ci0rfQotKwotK2dkYl90ZXN0 ICJidCBmdWxsIiAiXHJcbiArcyA9IFwiWFxcXFwwMDBcIlxyXG4uKiIKCmRpZmYgLS1naXQgYS9n ZGIuc3BlYyBiL2dkYi5zcGVjCmluZGV4IDU1MmM3NmMuLjRkZjNhYzMgMTAwNjQ0Ci0tLSBhL2dk Yi5zcGVjCisrKyBiL2dkYi5zcGVjCkBAIC0yMywxMSArMjMsMTEgQEAgTmFtZTogZ2RiJXs/X3dp dGhfZGVidWc6LWRlYnVnfQogIyBTZXQgdmVyc2lvbiB0byBjb250ZW50cyBvZiBnZGIvdmVyc2lv bi5pbi4KICMgTk9URTogdGhlIEZTRiBnZGIgdmVyc2lvbnMgYXJlIG51bWJlcmVkIE4uTSBmb3Ig b2ZmaWNpYWwgcmVsZWFzZXMsIGxpa2UgNi4zCiAjIGFuZCwgc2luY2UgSmFudWFyeSAyMDA1LCBY LlkuWi5kYXRlIGZvciBkYWlseSBzbmFwc2hvdHMsIGxpa2UgNi4zLjUwLjIwMDUwMTEyICMgKGRh aWx5IHNuYXBzaG90IGZyb20gbWFpbGluZSksIG9yIDYuMy4wLjIwMDQwMTEyIChoZWFkIG9mIHRo ZSByZWxlYXNlIGJyYW5jaCkuCi1WZXJzaW9uOiA3LjMuNTAuMjAxMTA3MjIKK1ZlcnNpb246IDcu NC41MC4yMDEyMDEwMwogCiAjIFRoZSByZWxlYXNlIGFsd2F5cyBjb250YWlucyBhIGxlYWRpbmcg cmVzZXJ2ZWQgbnVtYmVyLCBzdGFydCBpdCBhdCAxLgogIyBgdXBzdHJlYW0nIGlzIG5vdCBhIHBh cnQgb2YgYG5hbWUnIHRvIHN0YXkgZnVsbHkgcnBtIGRlcGVuZGVuY2llcyBjb21wYXRpYmxlIGZv ciB0aGUgdGVzdGluZy4KLVJlbGVhc2U6IDExJXs/X3dpdGhfdXBzdHJlYW06LnVwc3RyZWFtfSV7 P2Rpc3R9CitSZWxlYXNlOiAxJXs/X3dpdGhfdXBzdHJlYW06LnVwc3RyZWFtfSV7P2Rpc3R9CiAK IExpY2Vuc2U6IEdQTHYzKyBhbmQgR1BMdjMrIHdpdGggZXhjZXB0aW9ucyBhbmQgR1BMdjIrIGFu ZCBHUEx2Misgd2l0aCBleGNlcHRpb25zIGFuZCBHUEwrIGFuZCBMR1BMdjIrIGFuZCBCU0QgYW5k IFB1YmxpYyBEb21haW4KIEdyb3VwOiBEZXZlbG9wbWVudC9EZWJ1Z2dlcnMKQEAgLTEwOCwxMSAr MTA4LDYgQEAgUGF0Y2gyOiBnZGItNi4zLXJoLXRlc3R2ZXJzaW9uLTIwMDQxMjAyLnBhdGNoCiAj PWlhNjQKIFBhdGNoMzogZ2RiLTYuMy1yaC10ZXN0bGlidW53aW5kLTIwMDQxMjAyLnBhdGNoCiAK LSMgVXNlIGNvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIG9uIHRoZSBzb2xpYiBicmVha3BvaW50 IGFkZHJlc3M7Ci0jIHNpbXBsaWZpZXMgYW5kIG1ha2VzIG1vcmUgY29uc2lzdGVudCB0aGUgbG9n aWMuCi0jPW1heWJlcHVzaCtwcGM6IFdyaXRlIG5ldyB0ZXN0Y2FzZS4KLVBhdGNoMTA0OiBnZGIt Ni4zLXBwY2RvdHNvbGliLTIwMDQxMDIyLnBhdGNoCi0KICMgQmV0dGVyIHBhcnNlIDY0LWJpdCBQ UEMgc3lzdGVtIGNhbGwgcHJvbG9ndWVzLgogIz1tYXliZXB1c2grcHBjOiBXcml0ZSBuZXcgdGVz dGNhc2UuCiBQYXRjaDEwNTogZ2RiLTYuMy1wcGM2NHN5c2NhbGwtMjAwNDA2MjIucGF0Y2gKQEAg LTE1OCwxMiArMTUzLDYgQEAgUGF0Y2gxMzY6IGdkYi02LjMtdGVzdC1tb3ZlZGlyLTIwMDUwMTI1 LnBhdGNoCiAjPWlhNjQKIFBhdGNoMTQwOiBnZGItNi4zLWdjb3JlLXRocmVhZC0yMDA1MDIwNC5w YXRjaAogCi0jIFN0b3Agd2hpbGUgaW50ZW50aW9uYWxseSBzdGVwcGluZyBhbmQgdGhlIHRocmVh ZCBleGl0IGlzIG1ldC4KLSM9cHVzaAotUGF0Y2gxNDE6IGdkYi02LjYtc3RlcC10aHJlYWQtZXhp dC5wYXRjaAotIz1wdXNoCi1QYXRjaDI1OTogZ2RiLTYuMy1zdGVwLXRocmVhZC1leGl0LTIwMDUw MjExLXRlc3QucGF0Y2gKLQogIyBUZXN0IHNpYmxpbmcgdGhyZWFkcyB0byBzZXQgdGhyZWFkZWQg d2F0Y2hwb2ludHMgZm9yIHg4NiBhbmQgeDg2LTY0CiAjPWZlZG9yYXRlc3QKIFBhdGNoMTQ1OiBn ZGItNi4zLXRocmVhZGVkLXdhdGNocG9pbnRzMi0yMDA1MDIyNS5wYXRjaApAQCAtMjYwLDcgKzI0 OSw3IEBAIFBhdGNoMjMxOiBnZGItNi4zLWJ6MjAyNjg5LWV4ZWMtZnJvbS1wdGhyZWFkLXRlc3Qu cGF0Y2gKIAogIyBCYWNrcG9ydGVkIGZpeHVwcyBwb3N0IHRoZSBzb3VyY2UgdGFyYmFsbC4KICNY ZHJvcDogSnVzdCBiYWNrcG9ydHMuCi1QYXRjaDIzMjogZ2RiLXVwc3RyZWFtLnBhdGNoCisjUGF0 Y2gyMzI6IGdkYi11cHN0cmVhbS5wYXRjaAogCiAjIFRlc3RjYXNlIGZvciBQUEMgUG93ZXI2L0RG UCBpbnN0cnVjdGlvbnMgZGlzYXNzZW1ibHkgKEJaIDIzMDAwMCkuCiAjPWZlZG9yYXRlc3QrcHBj CkBAIC0zNTgsMTAgKzM0Nyw2IEBAIFBhdGNoMzE3OiBnZGItNi44LXNwYXJjNjQtc2lsZW5jZS1t ZW1jcHktY2hlY2sucGF0Y2gKICM9ZmVkb3JhdGVzdAogUGF0Y2gzMjA6IGdkYi02LjUtc2VjdGlv bi1udW0tZml4dXAtdGVzdC5wYXRjaAogCi0jIENyZWF0ZSBhIHNpbmdsZSBiaW5hcnkgYGdkYicg YXV0b2RldGVjdGluZyAtLXR1aSBieSBpdHMgYXJndlswXS4KLSM9cHVzaCt3b3JrOiBJSVJDIFRv bSB0b2xkIGFyZ3ZbMF0gc2hvdWxkIG5vdCBiZSB1c2VkIGJ5IEdOVSBwcm9ncmFtcywgYWxzbyBk cm9wIGxpYmdkYi5hLgotUGF0Y2gzMjY6IGdkYi02LjgtdHVpLXNpbmdsZWJpbmFyeS5wYXRjaAot CiAjIEZpeCBQUlBTSU5GTyBpbiB0aGUgY29yZSBmaWxlcyBkdW1wZWQgYnkgZ2NvcmUgKEJaIDI1 NDIyOSkuCiAjPXB1c2gKIFBhdGNoMzI5OiBnZGItNi44LWJ6MjU0MjI5LWdjb3JlLXBycHNpbmZv LnBhdGNoCkBAIC0zNzEsMTMgKzM1Niw5IEBAIFBhdGNoMzI5OiBnZGItNi44LWJ6MjU0MjI5LWdj b3JlLXBycHNpbmZvLnBhdGNoCiBQYXRjaDMzMDogZ2RiLTYuOC1iejQzNjAzNy1yZWctbm8tbG9u Z2VyLWFjdGl2ZS5wYXRjaAogCiAjIE1ha2UgdGhlIEdEQiBxdWl0IHByb2Nlc3Npbmcgbm9uLWFi b3J0YWJsZSB0byBjbGVhbnVwIGV2ZXJ5dGhpbmcgcHJvcGVybHkuCi0jPXB1c2g6IFVzZWZ1bCBv bmx5IGFmdGVyIGdkYi02LjgtYXR0YWNoLXNpZ25hbGxlZC1kZXRhY2gtc3RvcHBlZC5wYXRjaCAu CisjPXB1c2g6IEl0IHdhcyB1c2VmdWwgb25seSBhZnRlciBnZGItNi44LWF0dGFjaC1zaWduYWxs ZWQtZGV0YWNoLXN0b3BwZWQucGF0Y2ggLgogUGF0Y2gzMzE6IGdkYi02LjgtcXVpdC1uZXZlci1h Ym9ydHMucGF0Y2gKIAotIyBGaXggYXR0YWNoaW5nIHRvIHN0b3BwZWQgcHJvY2Vzc2VzIGFuZC9v ciBwZW5kaW5nIHNpZ25hbHMuCi0jPXB1c2grd29yawotUGF0Y2gzMzc6IGdkYi02LjgtYXR0YWNo LXNpZ25hbGxlZC1kZXRhY2gtc3RvcHBlZC5wYXRjaAotCiAjIFRlc3QgdGhlIHdhdGNocG9pbnRz IGNvbmRpdGlvbmFscyB3b3Jrcy4KICM9ZmVkb3JhdGVzdAogUGF0Y2gzNDM6IGdkYi02Ljgtd2F0 Y2hwb2ludC1jb25kaXRpb25hbHMtdGVzdC5wYXRjaApAQCAtNTEzLDEwICs0OTQsNiBAQCBQYXRj aDU0NzogZ2RiLXRlc3QtZHcyLWFyYW5nZXMucGF0Y2gKICMgPWZlZG9yYXRlc3QKIFBhdGNoNTQ4 OiBnZGItdGVzdC1leHByLWN1bXVsYXRpdmUtYXJjaGVyLnBhdGNoCiAKLSMgV29ya2Fyb3VuZCBn Y2MtNC42IHN0ZGFyZyBmYWxzZSBwcm9sb2d1ZSBlbmQgKEdEQiBQUiAxMjQzNSArIEdDQyBQUiA0 NzQ3MSkuCi0jID1wdXNoCi1QYXRjaDU1NjogZ2RiLWdjYzQ2LXN0ZGFyZy1wcm9sb2d1ZS5wYXRj aAotCiAjIFRvb2xjaGFpbiBvbiBzcGFyYyBpcyBzbGlnaHRseSBicm9rZW4gYW5kIGRlYnVnaW5m byBmaWxlcyBhcmUgZ2VuZXJhdGVkCiAjIHdpdGggbm9uIDY0Yml0IGFsaWduZWQgdGFibGVzL29m ZnNldHMuCiAjIFNlZSBmb3IgZXhhbXBsZSByZWFkZWxmIC1TIC4uL1h2bmMuZGVidWcuCkBAIC01 MzAsMzIgKzUwNywxOSBAQCBQYXRjaDU1NjogZ2RiLWdjYzQ2LXN0ZGFyZy1wcm9sb2d1ZS5wYXRj aAogIyByZWJ1aWxkIHRvIGZpeCBpdCwgd2UgbmVlZCB0byBiZSBhYmxlIHRvIHVzZSBnZGIgOikK IFBhdGNoNTc5OiBnZGItNy4yLjUwLXNwYXJjLWFkZC13b3JrYXJvdW5kLXRvLWJyb2tlbi1kZWJ1 Zy1maWxlcy5wYXRjaAogCi0jIEltcHJvdmUgR0RCIHBlcmZvcm1hbmNlIG9uIGluZmVyaW9yIGRs b3BlbiBjYWxscyAoR2FyeSBCZW5zb24sIEJaIDY5ODAwMSkuCi1QYXRjaDYxNzogZ2RiLWRsb3Bl bi1za2lwX2lubGluZV9mcmFtZXMtcGVyZi5wYXRjaAotCiAjIEZpeCBkbG9wZW4gb2YgbGlicHRo cmVhZC5zbywgcGF0Y2hlZCBnbGliYyByZXF1aXJlZCAoR2FyeSBCZW5zb24sIEJaIDY2OTQzMiku Ci1QYXRjaDYxODogZ2RiLWRsb3Blbi1zdGFwLXByb2JlLnBhdGNoCisjRklYTUU6UGF0Y2g2MTg6 IGdkYi1kbG9wZW4tc3RhcC1wcm9iZS5wYXRjaAogUGF0Y2g2MTk6IGdkYi1kbG9wZW4tc3RhcC1w cm9iZS10ZXN0LnBhdGNoCiAKICMgV29yayBhcm91bmQgUFIgbGliYy8xMzA5NyAibGludXgtdmRz by5zby4xIiB3YXJuaW5nIG1lc3NhZ2UuCiBQYXRjaDYyNzogZ2RiLWdsaWJjLXZkc28td29ya2Fy b3VuZC5wYXRjaAogCi0jIFtUVUldIEZpeCBzdGVwaSBvbiBzdHJpcHBlZCBjb2RlLgotUGF0Y2g2 Mjg6IGdkYi10dWktc3RyaXAtc3RlcGkucGF0Y2gKLQotIyBbdmxhXSBGaXggVkxBIGFycmF5cyBk aXNwbGF5ZWQgaW4gYGJ0IGZ1bGwnIChCWiA3Mzg0ODIpLgotUGF0Y2g2Mjk6IGdkYi12bGEtZnJh bWUtc2V0LnBhdGNoCi0KLSMgRml4IERXX09QX0dOVV9pbXBsaWNpdF9wb2ludGVyIGZvciBEV0FS RjMyIHYzKyBvbiA2NC1iaXQgYXJjaGVzLgotUGF0Y2g2MzA6IGdkYi1pbXBscHRyLTY0Yml0LTFv ZjIucGF0Y2gKLVBhdGNoNjMxOiBnZGItaW1wbHB0ci02NGJpdC0yb2YyLnBhdGNoCi0KLSMgRml4 IGludGVybmFsIGVycm9yIG9uIHNvbWUgb3B0aW1pemVkLW91dCB2YWx1ZXMuCi1QYXRjaDYzMjog Z2RiLW9wdGltaXplZC1vdXQtaW50ZXJuYWwtZXJyb3IucGF0Y2gKLQogIyBIYWNrIGZvciBwcm9w ZXIgUElFIHJ1biBvZiB0aGUgdGVzdHN1aXRlLgogUGF0Y2g2MzQ6IGdkYi1ydW50ZXN0LXBpZS1v dmVycmlkZS5wYXRjaAogCisjIEZpeCB6ZXJvIHJlZ2lzdGVycyBjb3JlIGZpbGVzIHcvZ2NjLTQu Ny4KK1BhdGNoNjM4OiBnZGItZ2NjNDctZ2NvcmUtemVyby5wYXRjaAorCiBCdWlsZFJlcXVpcmVz OiBuY3Vyc2VzLWRldmVsJXs/X2lzYX0gdGV4aW5mbyBnZXR0ZXh0IGZsZXggYmlzb24gZXhwYXQt ZGV2ZWwlez9faXNhfQogIyAtLXdpdGhvdXQtc3lzdGVtLXJlYWRsaW5lCiAjIFJlcXVpcmVzOiBy ZWFkbGluZSV7P19pc2F9CkBAIC03MTUsMTIgKzY3OSwxMSBAQCBybSAtZiBnZGIvanYtZXhwLmMg Z2RiL20yLWV4cC5jIGdkYi9vYmpjLWV4cC5jIGdkYi9wLWV4cC5jCiAKICVpZiAwJXshP193aXRo X3Vwc3RyZWFtOjF9CiAKLSVwYXRjaDIzMiAtcDEKKyNwYXRjaDIzMiAtcDEKICVwYXRjaDM0OSAt cDEKICVwYXRjaDEgLXAxCiAlcGF0Y2gzIC1wMQogCi0lcGF0Y2gxMDQgLXAxCiAlcGF0Y2gxMDUg LXAxCiAlcGF0Y2gxMTEgLXAxCiAlcGF0Y2gxMTIgLXAxCkBAIC03MzAsOCArNjkzLDYgQEAgcm0g LWYgZ2RiL2p2LWV4cC5jIGdkYi9tMi1leHAuYyBnZGIvb2JqYy1leHAuYyBnZGIvcC1leHAuYwog JXBhdGNoMTMzIC1wMQogJXBhdGNoMTM2IC1wMQogJXBhdGNoMTQwIC1wMQotJXBhdGNoMTQxIC1w MQotJXBhdGNoMjU5IC1wMQogJXBhdGNoMTQ1IC1wMQogJXBhdGNoMTUzIC1wMQogJXBhdGNoMTU3 IC1wMQpAQCAtNzc5LDExICs3NDAsOSBAQCBybSAtZiBnZGIvanYtZXhwLmMgZ2RiL20yLWV4cC5j IGdkYi9vYmpjLWV4cC5jIGdkYi9wLWV4cC5jCiAlcGF0Y2gzMTUgLXAxCiAlcGF0Y2gzMTcgLXAx CiAlcGF0Y2gzMjAgLXAxCi0lcGF0Y2gzMjYgLXAxCiAlcGF0Y2gzMjkgLXAxCiAlcGF0Y2gzMzAg LXAxCiAlcGF0Y2gzMzEgLXAxCi0lcGF0Y2gzMzcgLXAxCiAlcGF0Y2gzNDMgLXAxCiAlcGF0Y2gz NDggLXAxCiAlcGF0Y2gzNjAgLXAxCkBAIC04MTcsMTggKzc3NiwxMiBAQCBybSAtZiBnZGIvanYt ZXhwLmMgZ2RiL20yLWV4cC5jIGdkYi9vYmpjLWV4cC5jIGdkYi9wLWV4cC5jCiAlcGF0Y2g1NDIg LXAxCiAlcGF0Y2g1NDcgLXAxCiAlcGF0Y2g1NDggLXAxCi0lcGF0Y2g1NTYgLXAxCiAlcGF0Y2g1 NzkgLXAxCi0lcGF0Y2g2MTcgLXAxCi0lcGF0Y2g2MTggLXAxCisjRklYTUU6cGF0Y2g2MTggLXAx CiAlcGF0Y2g2MTkgLXAxCiAlcGF0Y2g2MjcgLXAxCi0lcGF0Y2g2MjggLXAxCi0lcGF0Y2g2Mjkg LXAxCi0lcGF0Y2g2MzAgLXAxCi0lcGF0Y2g2MzEgLXAxCi0lcGF0Y2g2MzIgLXAxCiAlcGF0Y2g2 MzQgLXAxCislcGF0Y2g2MzggLXAxCiAKICVwYXRjaDM5MyAtcDEKICVwYXRjaDMzNSAtcDEKQEAg LTExMDYsMTIgKzEwNTksNiBAQCBtYWtlICV7P19zbXBfbWZsYWdzfSBpbnN0YWxsIERFU1RESVI9 JFJQTV9CVUlMRF9ST09UCiBjcCAkUlBNX0JVSUxEX0RJUi8le2dkYl9zcmN9L2dkYi9nZGJfZ2Nv cmUuc2ggJFJQTV9CVUlMRF9ST09UJXtfYmluZGlyfS9nY29yZQogY2htb2QgNzU1ICRSUE1fQlVJ TERfUk9PVCV7X2JpbmRpcn0vZ2NvcmUKIAotIyBSZW1vdmUgdGhlIGdkYi9nZGJ0dWkgYmluYXJp ZXMgZHVwbGljaXR5LgotdGVzdCAteCAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9L2Jpbi9nZGJ0 dWkKLWxuIC1zZiBnZGIgJFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS9iaW4vZ2RidHVpCi1jbXAg JFJQTV9CVUlMRF9ST09UJXtfbWFuZGlyfS8qL2dkYi4xICRSUE1fQlVJTERfUk9PVCV7X21hbmRp cn0vKi9nZGJ0dWkuMQotbG4gLXNmIGdkYi4xICRSUE1fQlVJTERfUk9PVCV7X21hbmRpcn0vKi9n ZGJ0dWkuMQotCiBta2RpciAtcCAkUlBNX0JVSUxEX1JPT1Qle19zeXNjb25mZGlyfS9nZGJpbml0 LmQKIHNlZCAncyMlJXtfc3lzY29uZmRpcn0jJXtfc3lzY29uZmRpcn0jZycgPCV7U09VUkNFNH0g PiRSUE1fQlVJTERfUk9PVCV7X3N5c2NvbmZkaXJ9L2dkYmluaXQKIApAQCAtMTIxNSwxMSArMTE2 Miw5IEBAIGZpCiAlZG9jIENPUFlJTkczIENPUFlJTkcgQ09QWUlORy5MSUIgUkVBRE1FIE5FV1MK ICV7X2JpbmRpcn0vZ2NvcmUKICV7X2JpbmRpcn0vZ2RiCi0le19iaW5kaXJ9L2dkYnR1aQogJXtf c3lzY29uZmRpcn0vZ2RiaW5pdAogJXtfc3lzY29uZmRpcn0vZ2RiaW5pdC5kCiAle19tYW5kaXJ9 LyovZ2RiLjEqCi0le19tYW5kaXJ9LyovZ2RidHVpLjEqCiAlaWYgMCV7IT9fd2l0aF91cHN0cmVh bToxfQogJXtfYmluZGlyfS9nc3RhY2sKICV7X21hbmRpcn0vKi9nc3RhY2suMSoKQEAgLTEyNTIs NiArMTE5Nyw5IEBAIGZpCiAle19pbmZvZGlyfS9nZGIuaW5mbyoKIAogJWNoYW5nZWxvZworKiBU dWUgSmFuICAzIDIwMTIgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ IC0gNy40LjUwLjIwMTIwMTAzLTEuZmMxNworLSBSZWJhc2UgdG8gRlNGIEdEQiA3LjQuNTAuMjAx MjAxMDMuCisKICogTW9uIE5vdiAyOCAyMDExIEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPiAtIDcuMy41MC4yMDExMDcyMi0xMS5mYzE3CiAtIE5vIGxvbmdlciBidWls ZCBidW5kbGVkIGxpYnN0ZGMrKyBwcmV0dHkgcHJpbnRlcnMgb24gUkhFTHMgPj0gNy4KIAoKZGlm ZiAtLWdpdCBhL3NvdXJjZXMgYi9zb3VyY2VzCmluZGV4IDkzMzA0NTcuLmIzZmEyYTYgMTAwNjQ0 Ci0tLSBhL3NvdXJjZXMKKysrIGIvc291cmNlcwpAQCAtMSwyICsxLDIgQEAKIDA0ZTVjNGIxYjll NjMzNDIyY2M0ODk5MGZlNjE5NThkICBsaWJzdGRjKystdjMtcHl0aG9uLXIxNTU5NzgudGFyLmJ6 MgotYzU1NTQ5MzA1M2EzMDljOGFhMjA1OTJlYTk1NmY5ZTUgIGdkYi03LjMuNTAuMjAxMTA3MjIu dGFyLmJ6MgorZWQ2MWFlMTk2NDgzYzg5YzBjNDg1YzQ0OTdkOWY4MTUgIGdkYi03LjQuNTAuMjAx MjAxMDMudGFyLmJ6Mgo=