From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] gdb-17.2-rebase-f44: - iFort compat. - case insensitive DWARF not in lowercase (BZ 645773). Date: Sat, 27 Jun 2026 23:54:45 GMT Message-ID: <178260448518.1.15990111169032872049.rpms-gdb-1bcf9b660433@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: 1bcf9b66043337ff64ba1a7a093256dc5682ff09 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2RiCkJyYW5jaCA6 IGdkYi0xNy4yLXJlYmFzZS1mNDQKQ29tbWl0IDogMWJjZjliNjYwNDMzMzdmZjY0YmExYTdhMDkz MjU2ZGM1NjgyZmYwOQpBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4KRGF0ZSAgIDogMjAxMC0xMS0xNlQwNTo1NDoxOCswMTowMApTdGF0cyAgOiArNjkz NS8tNDE5IGluIDQxIGZpbGUocykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5v cmcvcnBtcy9nZGIvYy8xYmNmOWI2NjA0MzMzN2ZmNjRiYTFhN2EwOTMyNTZkYzU2ODJmZjA5P2Jy YW5jaD1nZGItMTcuMi1yZWJhc2UtZjQ0CgpMb2c6Ci0gaUZvcnQgY29tcGF0LiAtIGNhc2UgaW5z ZW5zaXRpdmUgRFdBUkYgbm90IGluIGxvd2VyY2FzZSAoQlogNjQ1NzczKS4KCi0tLQpkaWZmIC0t Z2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUKaW5kZXggNGIwZTRiNC4uODE4YjFlNiAxMDA2 NDQKLS0tIGEvLmdpdGlnbm9yZQorKysgYi8uZ2l0aWdub3JlCkBAIC0xICsxIEBACi1nZGItNy4x LjkwLjIwMTAwNzIxLnRhci5iejIKK2dkYi03LjIudGFyLmJ6MgoKZGlmZiAtLWdpdCBhL2dkYi02 LjMtZ3N0YWNrLTIwMDUwNDExLnBhdGNoIGIvZ2RiLTYuMy1nc3RhY2stMjAwNTA0MTEucGF0Y2gK aW5kZXggMTAwYjg3Ny4uMmQ5OTQyOCAxMDA2NDQKLS0tIGEvZ2RiLTYuMy1nc3RhY2stMjAwNTA0 MTEucGF0Y2gKKysrIGIvZ2RiLTYuMy1nc3RhY2stMjAwNTA0MTEucGF0Y2gKQEAgLTQsMTAgKzQs MTEgQEAKIAl0byBpbnN0YWxsIGFuZCB1bmluc3RhbGwuCiAJKiBnc3RhY2suc2gsIGdzdGFjay4x OiBOZXcgZmlsZXMuCiAKLWRpZmYgLXVwIC1ydU5wIGdkYi03LjAuMS1lbXB0eS9nZGIvTWFrZWZp bGUuaW4gZ2RiLTcuMC4xL2dkYi9NYWtlZmlsZS5pbgotLS0tIGdkYi03LjAuMS1lbXB0eS9nZGIv TWFrZWZpbGUuaW4JMjAxMC0wNC0wNyAyMDozNjowNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ny4wLjEvZ2RiL01ha2VmaWxlLmluCTIwMTAtMDQtMDcgMjA6MzY6NDIuMDAwMDAwMDAwICswMjAw Ci1AQCAtOTg5LDcgKzk4OSw3IEBAIGluc3RhbGw6IGFsbCBpbnN0YWxsLW9ubHkgCitJbmRleDog Z2RiLTcuMi9nZGIvTWFrZWZpbGUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4yLm9yaWcvZ2Ri L01ha2VmaWxlLmluCTIwMTAtMDktMDMgMDk6Mzc6NTUuMDAwMDAwMDAwICswMjAwCisrKysgZ2Ri LTcuMi9nZGIvTWFrZWZpbGUuaW4JMjAxMC0wOS0wMyAwOTozODo0NS4wMDAwMDAwMDAgKzAyMDAK K0BAIC0xMDEwLDcgKzEwMTAsNyBAQCBpbnN0YWxsOiBhbGwgaW5zdGFsbC1vbmx5IAogIAogICMg VGhlICJpbnN0YWxsLW9ubHkiIHRhcmdldCBhbHNvIGluc3RhbGxzIHRoZSBzeXNjYWxscycgWE1M IGZpbGVzIGluCiAgIyB0aGUgc3lzdGVtLgpAQCAtMTYsMTAgKzE3LDExIEBAIGRpZmYgLXVwIC1y dU5wIGdkYi03LjAuMS1lbXB0eS9nZGIvTWFrZWZpbGUuaW4gZ2RiLTcuMC4xL2dkYi9NYWtlZmls ZS5pbgogIAl0cmFuc2Zvcm1lZF9uYW1lPWB0PSckKHByb2dyYW1fdHJhbnNmb3JtX25hbWUpJzsg XAogIAkJCSAgZWNobyBnZGIgfCBzZWQgLWUgIiQkdCJgIDsgXAogIAkJaWYgdGVzdCAieCQkdHJh bnNmb3JtZWRfbmFtZSIgPSB4OyB0aGVuIFwKLUBAIC0xMDIxLDkgKzEwMjEsMjYgQEAgaW5zdGFs bC10dWk6Ci0gCQkJJChERVNURElSKSQobWFuMWRpcikgOyBcCi0gCQkkKElOU1RBTExfREFUQSkg JChzcmNkaXIpL2dkYi4xIFwKLSAJCQkkKERFU1RESVIpJChtYW4xZGlyKS8kJHRyYW5zZm9ybWVk X25hbWUuMQorQEAgLTEwNDYsNyArMTA0NiwyNSBAQCBpbnN0YWxsLXR1aToKKyBpbnN0YWxsLXB5 dGhvbjoKKyAJJChTSEVMTCkgJChzcmNkaXIpLy4uL21raW5zdGFsbGRpcnMgJChERVNURElSKSQo R0RCX0RBVEFESVIpL3B5dGhvbi9nZGIKKyAKKy11bmluc3RhbGw6IGZvcmNlICQoQ09ORklHX1VO SU5TVEFMTCkKICtHU1RBQ0s9Z3N0YWNrCiArLlBIT05ZOiBpbnN0YWxsLWdzdGFjawogK2luc3Rh bGwtZ3N0YWNrOgpAQCAtMzcsMTQgKzM5LDEyIEBAIGRpZmYgLXVwIC1ydU5wIGdkYi03LjAuMS1l bXB0eS9nZGIvTWFrZWZpbGUuaW4gZ2RiLTcuMC4xL2dkYi9NYWtlZmlsZS5pbgogKwkJCSQoREVT VERJUikkKG1hbjFkaXIpIDsgXAogKwkJOiAkKElOU1RBTExfREFUQSkgJChzcmNkaXIpL2dzdGFj ay4xIFwKICsJCQkkKERFU1RESVIpJChtYW4xZGlyKS8kJHRyYW5zZm9ybWVkX25hbWUuMQotIAot IAotLXVuaW5zdGFsbDogZm9yY2UgJChDT05GSUdfVU5JTlNUQUxMKQorKwogK3VuaW5zdGFsbDog Zm9yY2UgdW5pbnN0YWxsLWdzdGFjayAkKENPTkZJR19VTklOU1RBTEwpCiAgCXRyYW5zZm9ybWVk X25hbWU9YHQ9JyQocHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSknOyBcCiAgCQkJICBlY2hvIGdkYiB8 IHNlZCAtZSAkJHRgIDsgXAogIAkJaWYgdGVzdCAieCQkdHJhbnNmb3JtZWRfbmFtZSIgPSB4OyB0 aGVuIFwKLUBAIC0xMDQ1LDYgKzEwNjIsMTcgQEAgdW5pbnN0YWxsLXR1aToKK0BAIC0xMDY4LDYg KzEwODYsMTcgQEAgdW5pbnN0YWxsLXR1aToKICAJCWZpIDsgXAogIAkJcm0gLWYgJChERVNURElS KSQoYmluZGlyKS8kJHRyYW5zZm9ybWVkX25hbWUkKEVYRUVYVCkgXAogIAkJICAgICAgJChERVNU RElSKSQobWFuMWRpcikvJCR0cmFuc2Zvcm1lZF9uYW1lLjEKQEAgLTYyLDkgKzYyLDEwIEBAIGRp ZmYgLXVwIC1ydU5wIGdkYi03LjAuMS1lbXB0eS9nZGIvTWFrZWZpbGUuaW4gZ2RiLTcuMC4xL2dk Yi9NYWtlZmlsZS5pbgogIAogICMgVGhlIEMrKyBuYW1lIHBhcnNlciBjYW4gYmUgYnVpbHQgc3Rh bmRhbG9uZSBmb3IgdGVzdGluZy4KICB0ZXN0LWNwLW5hbWUtcGFyc2VyLm86IGNwLW5hbWUtcGFy c2VyLmMKLWRpZmYgLXVwIC1ydU5wIGdkYi03LjAuMS1lbXB0eS9nZGIvZ3N0YWNrLnNoIGdkYi03 LjAuMS9nZGIvZ3N0YWNrLnNoCi0tLS0gZ2RiLTcuMC4xLWVtcHR5L2dkYi9nc3RhY2suc2gJMTk3 MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjEvZ2RiL2dzdGFj ay5zaAkyMDEwLTA0LTA3IDIwOjM2OjQ3LjAwMDAwMDAwMCArMDIwMAorSW5kZXg6IGdkYi03LjIv Z2RiL2dzdGFjay5zaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAw OjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjIvZ2RiL2dzdGFjay5zaAkyMDEwLTA5LTAz IDA5OjM4OjEyLjAwMDAwMDAwMCArMDIwMAogQEAgLTAsMCArMSw0OCBAQAogKyMhL2Jpbi9zaAog KwpAQCAtMTE0LDggKzExNSwxMCBAQCBkaWZmIC11cCAtcnVOcCBnZGItNy4wLjEtZW1wdHkvZ2Ri L2dzdGFjay5zaCBnZGItNy4wLjEvZ2RiL2dzdGFjay5zaAogKyAgICAtZSAncy9eXCgoZ2RiKSBc KSovLycgXAogKyAgICAtZSAnL14jL3AnIFwKICsgICAgLWUgJy9eVGhyZWFkL3AnCi0tLS0gL2Rl di9udWxsCTIwMTAtMDQtMDcgMDY6MjA6NTIuMjg5OTk0NTA4ICswMjAwCi0rKysgZ2RiLTcuMC4x L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ3N0YWNrLmV4cAkyMDEwLTA0LTA3IDIxOjUzOjU3LjAw MDAwMDAwMCArMDIwMAorSW5kZXg6IGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nc3Rh Y2suZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAw MDAwMDAwICswMDAwCisrKysgZ2RiLTcuMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dzdGFjay5l eHAJMjAxMC0wOS0wMyAwOTozODoxMi4wMDAwMDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEsNzEgQEAK ICsjIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsK QEAgLTE4OCw4ICsxOTEsMTAgQEAgZGlmZiAtdXAgLXJ1TnAgZ2RiLTcuMC4xLWVtcHR5L2dkYi9n c3RhY2suc2ggZ2RiLTcuMC4xL2dkYi9nc3RhY2suc2gKICtnZGJfZXhpdAogKwogK3JlbW90ZV9l eGVjIGhvc3QgImtpbGwgLTkgJHBpZCIKLS0tLSAvZGV2L251bGwJMjAxMC0wNC0wNyAwNjoyMDo1 Mi4yODk5OTQ1MDggKzAyMDAKLSsrKyBnZGItNy4wLjEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9n c3RhY2suYwkyMDEwLTA0LTA3IDIxOjQ2OjUyLjAwMDAwMDAwMCArMDIwMAorSW5kZXg6IGdkYi03 LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nc3RhY2suYworPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYv bnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9nc3RhY2suYwkyMDEwLTA5LTAzIDA5OjM4OjEyLjAwMDAwMDAw MCArMDIwMAogQEAgLTAsMCArMSw0MyBAQAogKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBH REIsIHRoZSBHTlUgZGVidWdnZXIuCiArCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuMy1yZWFkbmV2ZXIt MjAwNTA5MDcucGF0Y2ggYi9nZGItNi4zLXJlYWRuZXZlci0yMDA1MDkwNy5wYXRjaAppbmRleCAw YmRmOTQ4Li43Y2RjMGY3IDEwMDY0NAotLS0gYS9nZGItNi4zLXJlYWRuZXZlci0yMDA1MDkwNy5w YXRjaAorKysgYi9nZGItNi4zLXJlYWRuZXZlci0yMDA1MDkwNy5wYXRjaApAQCAtMTMsOCArMTMs OCBAQAogCiBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvZG9jL2dkYi50ZXhpbmZvCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcyMS5vcmlnL2dkYi9kb2MvZ2RiLnRleGlu Zm8JMjAxMC0wNy0yMiAxMTo1NzowOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIw MTAwNzIxL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMC0wNy0yMiAxMTo1NzozNC4wMDAwMDAwMDAg KzAyMDAKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzIxLm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5mbwky MDEwLTA3LTIzIDIwOjU4OjUyLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3 MjEvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEwLTA3LTIzIDIwOjU5OjE1LjAwMDAwMDAwMCArMDIw MAogQEAgLTk5OCw2ICs5OTgsMTIgQEAgUmVhZCBlYWNoIHN5bWJvbCBmaWxlJ3MgZW50aXJlIHN5 bWJvbCB0YQogIHRoZSBkZWZhdWx0LCB3aGljaCBpcyB0byByZWFkIGl0IGluY3JlbWVudGFsbHkg YXMgaXQgaXMgbmVlZGVkLgogIFRoaXMgbWFrZXMgc3RhcnR1cCBzbG93ZXIsIGJ1dCBtYWtlcyBm dXR1cmUgb3BlcmF0aW9ucyBmYXN0ZXIuCkBAIC0zMCw4ICszMCw4IEBAIEluZGV4OiBnZGItNy4x LjkwLjIwMTAwNzIxL2dkYi9kb2MvZ2RiLnRleGluZm8KICBAbm9kZSBNb2RlIE9wdGlvbnMKIElu ZGV4OiBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi9tYWluLmMKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny4xLjkwLjIwMTAwNzIxLm9yaWcvZ2RiL21haW4uYwkyMDEwLTA3LTIyIDExOjU3OjEwLjAwMDAw MDAwMCArMDIwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MjEvZ2RiL21haW4uYwkyMDEwLTA3LTIy IDExOjU3OjQ5LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjEuOTAuMjAxMDA3MjEub3JpZy9n ZGIvbWFpbi5jCTIwMTAtMDctMjMgMjA6NTg6NTUuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcu MS45MC4yMDEwMDcyMS9nZGIvbWFpbi5jCTIwMTAtMDctMjMgMjA6NTk6MTUuMDAwMDAwMDAwICsw MjAwCiBAQCAtMzkxLDYgKzM5MSw3IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCiAgICAg ICAgeyJ4ZGIiLCBub19hcmd1bWVudCwgJnhkYl9jb21tYW5kcywgMX0sCiAgICAgICAgeyJkYngi LCBub19hcmd1bWVudCwgJmRieF9jb21tYW5kcywgMX0sCkBAIC01MCw4ICs1MCw4IEBAIEluZGV4 OiBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi9tYWluLmMKICAgIC0tc2U9RklMRSAgICAgICAgICBV c2UgRklMRSBhcyBzeW1ib2wgZmlsZSBhbmQgZXhlY3V0YWJsZSBmaWxlLlxuXAogSW5kZXg6IGdk Yi03LjEuOTAuMjAxMDA3MjEvZ2RiL3N5bWZpbGUuYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEu OTAuMjAxMDA3MjEub3JpZy9nZGIvc3ltZmlsZS5jCTIwMTAtMDctMjIgMTE6NTc6MDkuMDAwMDAw MDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvc3ltZmlsZS5jCTIwMTAtMDct MjIgMTE6NTc6MzQuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMS45MC4yMDEwMDcyMS5vcmln L2dkYi9zeW1maWxlLmMJMjAxMC0wNy0yMyAyMDo1ODo1Mi4wMDAwMDAwMDAgKzAyMDAKKysrKyBn ZGItNy4xLjkwLjIwMTAwNzIxL2dkYi9zeW1maWxlLmMJMjAxMC0wNy0yMyAyMDo1OToxNS4wMDAw MDAwMDAgKzAyMDAKIEBAIC04MCw2ICs4MCw3IEBAIHN0YXRpYyB2b2lkIGNsZWFyX3N5bXRhYl91 c2Vyc19jbGVhbnVwICgKICAKICAvKiBHbG9iYWwgdmFyaWFibGVzIG93bmVkIGJ5IHRoaXMgZmls ZSAqLwpAQCAtNjIsMTcgKzYyLDE3IEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi9z eW1maWxlLmMKICAKIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi9kd2FyZjJyZWFkLmMK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy4xLjkwLjIwMTAwNzIxLm9yaWcvZ2RiL2R3YXJmMnJlYWQu YwkyMDEwLTA3LTIyIDExOjU3OjEwLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEuOTAuMjAx MDA3MjEvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTA3LTIyIDExOjU4OjA1LjAwMDAwMDAwMCArMDIw MAotQEAgLTUzLDYgKzUzLDcgQEAKLSAjaW5jbHVkZSAicHN5bXByaXYuaCIKKy0tLSBnZGItNy4x LjkwLjIwMTAwNzIxLm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTA3LTIzIDIwOjU4OjUzLjAw MDAwMDAwMCArMDIwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3MjEvZ2RiL2R3YXJmMnJlYWQuYwky MDEwLTA3LTIzIDIwOjU5OjI2LjAwMDAwMDAwMCArMDIwMAorQEAgLTU0LDYgKzU0LDcgQEAKICAj aW5jbHVkZSAiZXhjZXB0aW9ucy5oIgogICNpbmNsdWRlICJnZGJfc3RhdC5oIgorICNpbmNsdWRl ICJjb21wbGV0ZXIuaCIKICsjaW5jbHVkZSAidG9wLmgiCiAgCiAgI2luY2x1ZGUgPGZjbnRsLmg+ CiAgI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKLUBAIC0xMjgyLDggKzEyODMsOSBAQCBkd2FyZjJf aGFzX2luZm8gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlCitAQCAtMTI4Myw4ICsxMjg0LDkgQEAg ZHdhcmYyX2hhc19pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZQogICAgICAgIGJmZF9tYXBf b3Zlcl9zZWN0aW9ucyAob2JqZmlsZS0+b2JmZCwgZHdhcmYyX2xvY2F0ZV9zZWN0aW9ucywgTlVM TCk7CiAgICAgICAgZHdhcmYyX3Blcl9vYmpmaWxlLT5vYmpmaWxlID0gb2JqZmlsZTsKICAgICAg fQpAQCAtODcsNyArODcsNyBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvZHdhcmYy cmVhZC5jCiBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvdG9wLmgKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K IC0tLSBnZGItNy4xLjkwLjIwMTAwNzIxLm9yaWcvZ2RiL3RvcC5oCTIwMTAtMDQtMDcgMTg6NTQ6 MzkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvdG9wLmgJMjAx MC0wNy0yMiAxMTo1NzozNC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzIx L2dkYi90b3AuaAkyMDEwLTA3LTIzIDIwOjU5OjE1LjAwMDAwMDAwMCArMDIwMAogQEAgLTYxLDYg KzYxLDcgQEAgZXh0ZXJuIHZvaWQgc2V0X3Byb21wdCAoY2hhciAqKTsKICAKICAvKiBGcm9tIHJh bmRvbSBwbGFjZXMuICAqLwoKZGlmZiAtLWdpdCBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBt LWxpYnJwbS13b3JrYXJvdW5kLnBhdGNoIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0tbGli cnBtLXdvcmthcm91bmQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u NTgwN2FjZQotLS0gL2Rldi9udWxsCisrKyBiL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLWxp YnJwbS13b3JrYXJvdW5kLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKKy0tLSAuL2dkYi9lbGZyZWFk LmMJMjAxMC0xMC0xNCAxNzowNzo0NS4wMDAwMDAwMDAgKzAyMDAKKysrKyAuL2dkYi9lbGZyZWFk LmMJMjAxMC0xMC0xNCAxNzowNjozMC4wMDAwMDAwMDAgKzAyMDAKK0BAIC0xMzgyLDYgKzEzODIs MTggQEAgYnVpbGRfaWRfdG9fZmlsZW5hbWUgKHN0cnVjdCBidWlsZF9pZCAqYgorICNpbmNsdWRl IDxkbGZjbi5oPgorICNlbmRpZgorIAorKy8qIFdvcmthcm9kdW4gaHR0cHM6Ly9idWd6aWxsYS5y ZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD02NDMwMzEKKysgICBsaWJycG0gbXVzdCBub3QgZXhp dCgpIGFuIGFwcGxpY2F0aW9uIG9uIFNJR0lOVAorKworKyAgIEVuYWJsZSBvciBkaXNhYmxlIGEg c2lnbmFsIGhhbmRsZXIuICBTSUdOVU06IHNpZ25hbCB0byBlbmFibGUgKG9yIGRpc2FibGUKKysg ICBpZiBuZWdhdGl2ZSkuICBIQU5ETEVSOiBzYV9zaWdhY3Rpb24gaGFuZGxlciAob3IgTlVMTCB0 byB1c2UKKysgICBycG1zcUhhbmRsZXIoKSkuICBSZXR1cm5zOiBuby4gb2YgcmVmcywgLTEgb24g ZXJyb3IuICAqLworK2ludAorK3JwbXNxRW5hYmxlIChpbnQgc2lnbnVtLCAvKiBycG1zcUFjdGlv bl90IGhhbmRsZXIgKi8gdm9pZCAqaGFuZGxlcikKKyt7CisrICByZXR1cm4gMDsKKyt9CisrCisg LyogVGhpcyBNSVNTSU5HX1JQTV9IQVNIIHRyYWNrZXIgaXMgdXNlZCB0byBjb2xsZWN0IGFsbCB0 aGUgbWlzc2luZyBycG0gZmlsZXMKKyAgICBhbmQgYXZvaWQgdGhlaXIgZHVwbGljaXRpZXMgZHVy aW5nIGEgc2luZ2xlIGluZmVyaW9yIHJ1bi4gICovCisgCistLS0gLi9nZGIvcHJvYy1zZXJ2aWNl Lmxpc3QJMjAxMC0wNS0yOCAyMDo1MDozMC4wMDAwMDAwMDAgKzAyMDAKKysrKyAuL2dkYi9wcm9j LXNlcnZpY2UubGlzdAkyMDEwLTEwLTE0IDE3OjA2OjMwLjAwMDAwMDAwMCArMDIwMAorQEAgLTM3 LDQgKzM3LDcgQEAKKyAgIHBzX3BzdG9wOworICAgcHNfcHRyZWFkOworICAgcHNfcHR3cml0ZTsK KysKKysgIC8qIGdkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLnBhdGNoICovCisrICBycG1zcUVu YWJsZTsKKyB9OwoKZGlmZiAtLWdpdCBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLnBhdGNo IGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0ucGF0Y2gKaW5kZXggZTExZmIzYy4uMzA4MzJj NiAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0ucGF0Y2gKKysrIGIvZ2Ri LTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0ucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1JbmRleDogZ2Ri LTcuMS45MC4yMDEwMDcyMS9nZGIvZXZlbnQtdG9wLmMKK0luZGV4OiBnZGItNy4yL2dkYi9ldmVu dC10b3AuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MjEub3JpZy9nZGIvZXZl bnQtdG9wLmMJMjAxMC0wNi0yNiAwODo0NDo0Ny4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4x LjkwLjIwMTAwNzIxL2dkYi9ldmVudC10b3AuYwkyMDEwLTA3LTIyIDExOjU4OjI0LjAwMDAwMDAw MCArMDIwMAorLS0tIGdkYi03LjIub3JpZy9nZGIvZXZlbnQtdG9wLmMJMjAxMC0wNi0yNiAwODo0 NDo0Ny4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4yL2dkYi9ldmVudC10b3AuYwkyMDEwLTEw LTA2IDIyOjM5OjMyLjAwMDAwMDAwMCArMDIwMAogQEAgLTMzLDYgKzMzLDcgQEAKICAjaW5jbHVk ZSAiY2xpL2NsaS1zY3JpcHQuaCIgICAgIC8qIGZvciByZXNldF9jb21tYW5kX25lc3RfZGVwdGgg Ki8KICAjaW5jbHVkZSAibWFpbi5oIgpAQCAtMjgsMTAgKzI4LDEwIEBAIEluZGV4OiBnZGItNy4x LjkwLjIwMTAwNzIxL2dkYi9ldmVudC10b3AuYwogICAgLyogRWFjaCBpbnRlcnByZXRlciBoYXMg aXRzIG93biBydWxlcyBvbiBkaXNwbGF5aW5nIHRoZSBjb21tYW5kCiAgICAgICBwcm9tcHQuICAq LwogICAgaWYgKCFjdXJyZW50X2ludGVycF9kaXNwbGF5X3Byb21wdF9wICgpKQotSW5kZXg6IGdk Yi03LjEuOTAuMjAxMDA3MjEvZ2RiL2VsZnJlYWQuYworSW5kZXg6IGdkYi03LjIvZ2RiL2VsZnJl YWQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MjEub3JpZy9nZGIvZWxmcmVh ZC5jCTIwMTAtMDctMjIgMTE6NTg6MTQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4y MDEwMDcyMS9nZGIvZWxmcmVhZC5jCTIwMTAtMDctMjIgMTE6NTg6MjQuMDAwMDAwMDAwICswMjAw CistLS0gZ2RiLTcuMi5vcmlnL2dkYi9lbGZyZWFkLmMJMjAxMC0xMC0wNiAyMjozOTozMi4wMDAw MDAwMDAgKzAyMDAKKysrKyBnZGItNy4yL2dkYi9lbGZyZWFkLmMJMjAxMC0xMC0wNiAyMjozOTo1 Mi4wMDAwMDAwMDAgKzAyMDAKIEBAIC00Miw2ICs0Miw3IEBACiAgI2luY2x1ZGUgImdkYmNvcmUu aCIKICAjaW5jbHVkZSAiZ2RiY21kLmgiCkBAIC00MCw3ICs0MCw3IEBAIEluZGV4OiBnZGItNy4x LjkwLjIwMTAwNzIxL2dkYi9lbGZyZWFkLmMKICAKICBleHRlcm4gdm9pZCBfaW5pdGlhbGl6ZV9l bGZyZWFkICh2b2lkKTsKICAKLUBAIC0xMzcxLDggKzEzNzIsMzUzIEBAIGJ1aWxkX2lkX3RvX2Zp bGVuYW1lIChzdHJ1Y3QgYnVpbGRfaWQgKmIKK0BAIC0xMzcxLDggKzEzNzIsMzYxIEBAIGJ1aWxk X2lkX3RvX2ZpbGVuYW1lIChzdHJ1Y3QgYnVpbGRfaWQgKmIKICAgIHJldHVybiByZXR2YWw7CiAg fQogIApAQCAtMTEzLDkgKzExMywxNyBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIv ZWxmcmVhZC5jCiArIyBkZWZpbmUgcnBtdHNJbml0SXRlcmF0b3JfcCBycG10c0luaXRJdGVyYXRv cgogKyNlbmRpZgkvKiAhRExPUEVOX0xJQlJQTSAqLwogKwotKyAgaWYgKGZpbGVuYW1lID09IE5V TEwpCisrICBnZGJfYXNzZXJ0IChmaWxlbmFtZSAhPSBOVUxMKTsKKysKKysgIGlmIChzdHJjbXAg KGZpbGVuYW1lLCBCVUlMRF9JRF9NQUlOX0VYRUNVVEFCTEVfRklMRU5BTUUpID09IDApCiArICAg IHJldHVybiAwOwogKworKyAgaWYgKGZpbGVuYW1lWzBdICE9ICcvJykKKysgICAgeworKyAgICAg IHdhcm5pbmcgKF8oIklnbm9yaW5nIG5vbi1hYnNvbHV0ZSBmaWxlbmFtZTogPCVzPiIpLCBmaWxl bmFtZSk7CisrICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysKICsgIGlmICghcnBtX2luaXRfZG9u ZSkKICsgICAgewogKyAgICAgIHN0YXRpYyBpbnQgaW5pdF90cmllZDsKQEAgLTM5NSw3ICs0MDMs NyBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvZWxmcmVhZC5jCiAgICAgYXZvaWRh bmNlLiAgKi8KICAKICBzdHJ1Y3QgbWlzc2luZ19maWxlcGFpcgotQEAgLTE0MjYsMTEgKzE3NzIs MTcgQEAgbWlzc2luZ19maWxlcGFpcl9jaGFuZ2UgKHZvaWQpCitAQCAtMTQyNiwxMSArMTc4MCwx NyBAQCBtaXNzaW5nX2ZpbGVwYWlyX2NoYW5nZSAodm9pZCkKICAgICAgICAvKiBBbGwgdGhlaXIg bWVtb3J5IGNhbWUganVzdCBmcm9tIG1pc3NpbmdfZmlsZXBhaXJfT0JTVEFDSy4gICovCiAgICAg ICAgbWlzc2luZ19maWxlcGFpcl9oYXNoID0gTlVMTDsKICAgICAgfQpAQCAtNDEzLDcgKzQyMSw3 IEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi9lbGZyZWFkLmMKICAgIG1pc3Npbmdf ZmlsZXBhaXJfY2hhbmdlICgpOwogIH0KICAKLUBAIC0xNDk3LDE0ICsxODQ5LDM0IEBAIGRlYnVn X3ByaW50X21pc3NpbmcgKGNvbnN0IGNoYXIgKmJpbmFyeSwKK0BAIC0xNDk3LDE0ICsxODU3LDM1 IEBAIGRlYnVnX3ByaW50X21pc3NpbmcgKGNvbnN0IGNoYXIgKmJpbmFyeSwKICAKICAgICpzbG90 ID0gbWlzc2luZ19maWxlcGFpcjsKICAKQEAgLTQzOSw3ICs0NDcsOCBAQCBJbmRleDogZ2RiLTcu MS45MC4yMDEwMDcyMS9nZGIvZWxmcmVhZC5jCiArCX0KICsgICAgfQogKyAgaWYgKG1pc3Npbmdf ZXhlYyAhPSBNSVNTSU5HX0VYRUNfRU5MSVNURUQpCi0rICAgIGlmIChtaXNzaW5nX3JwbV9lbmxp c3QgKGJpbmFyeSkgPT0gMCAmJiBtaXNzaW5nX3JwbV9lbmxpc3QgKGRlYnVnKSA9PSAwKQorKyAg ICBpZiAoKGJpbmFyeVswXSA9PSAwIHx8IG1pc3NpbmdfcnBtX2VubGlzdCAoYmluYXJ5KSA9PSAw KQorKwkmJiAoZGVidWcgPT0gTlVMTCB8fCBtaXNzaW5nX3JwbV9lbmxpc3QgKGRlYnVnKSA9PSAw KSkKICsjZW5kaWYJLyogSEFWRV9MSUJSUE0gKi8KICsgICAgICB7CiArCS8qIFdlIGRvIG5vdCBj b2xsZWN0IGFuZCBmbHVzaCB0aGVzZSBtZXNzYWdlcyBhcyBlYWNoIHN1Y2ggbWVzc2FnZQpAQCAt NDU1LDIyICs0NjQsMjMgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjEvZ2RiL2VsZnJlYWQu YwogIH0KICAKICBzdGF0aWMgY2hhciAqCi1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIv c3ltZmlsZS5oCitJbmRleDogZ2RiLTcuMi9nZGIvc3ltZmlsZS5oCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuMS45MC4yMDEwMDcyMS5vcmlnL2dkYi9zeW1maWxlLmgJMjAxMC0wNy0yMiAxMTo1ODox NC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi9zeW1maWxlLmgJ MjAxMC0wNy0yMiAxMTo1ODoyNC4wMDAwMDAwMDAgKzAyMDAKLUBAIC01NzcsNiArNTc3LDcgQEAg ZXh0ZXJuIHN0cnVjdCBidWlsZF9pZCAqYnVpbGRfaWRfYWRkcl9nZQorLS0tIGdkYi03LjIub3Jp Zy9nZGIvc3ltZmlsZS5oCTIwMTAtMTAtMDYgMjI6Mzk6MzIuMDAwMDAwMDAwICswMjAwCisrKysg Z2RiLTcuMi9nZGIvc3ltZmlsZS5oCTIwMTAtMTAtMDYgMjI6Mzk6NTIuMDAwMDAwMDAwICswMjAw CitAQCAtNTc3LDYgKzU3Nyw4IEBAIGV4dGVybiBzdHJ1Y3QgYnVpbGRfaWQgKmJ1aWxkX2lkX2Fk ZHJfZ2UKICBleHRlcm4gY2hhciAqYnVpbGRfaWRfdG9fZmlsZW5hbWUgKHN0cnVjdCBidWlsZF9p ZCAqYnVpbGRfaWQsCiAgCQkJCSAgIGNoYXIgKipsaW5rX3JldHVybiwgaW50IGFkZF9kZWJ1Z19z dWZmaXgpOwogIGV4dGVybiB2b2lkIGRlYnVnX3ByaW50X21pc3NpbmcgKGNvbnN0IGNoYXIgKmJp bmFyeSwgY29uc3QgY2hhciAqZGVidWcpOwogK2V4dGVybiB2b2lkIGRlYnVnX2ZsdXNoX21pc3Np bmcgKHZvaWQpOworKyNkZWZpbmUgQlVJTERfSURfTUFJTl9FWEVDVVRBQkxFX0ZJTEVOQU1FIF8o InRoZSBtYWluIGV4ZWN1dGFibGUgZmlsZSIpCiAgCiAgLyogRnJvbSBkd2FyZjJyZWFkLmMgKi8K ICAKLUluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAK K0luZGV4OiBnZGItNy4yL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy4xLjkwLjIwMTAwNzIxLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDEw LTA3LTIyIDExOjU4OjE0LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MjEv Z2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDEwLTA3LTIyIDExOjU4OjI0LjAwMDAwMDAwMCAr MDIwMAorLS0tIGdkYi03LjIub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTAtMTAt MDYgMjI6Mzk6MzIuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi9nZGIvdGVzdHN1aXRlL2xp Yi9nZGIuZXhwCTIwMTAtMTAtMDYgMjI6Mzk6MzIuMDAwMDAwMDAwICswMjAwCiBAQCAtMTM1OSw3 ICsxMzU5LDcgQEAgcHJvYyBkZWZhdWx0X2dkYl9zdGFydCB7IH0gewogIAkgICAgd2FybmluZyAi Q291bGRuJ3Qgc2V0IHRoZSB3aWR0aCB0byAwLiIKICAJfQpAQCAtNDgwLDEwICs0OTAsMTAgQEAg SW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAogICAg ICBzZW5kX2dkYiAic2V0IGJ1aWxkLWlkLXZlcmJvc2UgMFxuIgogICAgICBnZGJfZXhwZWN0IDEw IHsKICAJLXJlICIkZ2RiX3Byb21wdCAkIiB7Ci1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMS9n ZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAorSW5kZXg6IGdkYi03LjIvZ2RiL3Rlc3Rz dWl0ZS9saWIvbWktc3VwcG9ydC5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLjkwLjIwMTAw NzIxLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAxMC0wNy0yMiAxMTo1 ODoxNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi90ZXN0c3Vp dGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTAtMDctMjIgMTE6NTg6MjQuMDAwMDAwMDAwICswMjAw CistLS0gZ2RiLTcuMi5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTAt MTAtMDYgMjI6Mzk6MzIuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi9nZGIvdGVzdHN1aXRl L2xpYi9taS1zdXBwb3J0LmV4cAkyMDEwLTEwLTA2IDIyOjM5OjMyLjAwMDAwMDAwMCArMDIwMAog QEAgLTIyMSw3ICsyMjEsNyBAQCBwcm9jIGRlZmF1bHRfbWlfZ2RiX3N0YXJ0IHsgYXJncyB9IHsK ICAJICAgIH0KICAgICAgCX0KQEAgLTQ5MywxMCArNTAzLDEwIEBAIEluZGV4OiBnZGItNy4xLjkw LjIwMTAwNzIxL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCiAgICAgIHNlbmRfZ2Ri ICIxOTAtZ2RiLXNldCBidWlsZC1pZC12ZXJib3NlIDBcbiIKICAgICAgZ2RiX2V4cGVjdCAxMCB7 CiAgCS1yZSAiLioxOTAtZ2RiLXNldCBidWlsZC1pZC12ZXJib3NlIDBcclxuMTkwXFxcXmRvbmVc clxuJG1pX2dkYl9wcm9tcHQkIiB7Ci1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvdHVp L3R1aS1pbnRlcnAuYworSW5kZXg6IGdkYi03LjIvZ2RiL3R1aS90dWktaW50ZXJwLmMKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4xLjkwLjIwMTAwNzIxLm9yaWcvZ2RiL3R1aS90dWktaW50ZXJwLmMJ MjAxMC0wNS0xOCAwMDoyMTo0My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAw NzIxL2dkYi90dWkvdHVpLWludGVycC5jCTIwMTAtMDctMjIgMTE6NTg6MjQuMDAwMDAwMDAwICsw MjAwCistLS0gZ2RiLTcuMi5vcmlnL2dkYi90dWkvdHVpLWludGVycC5jCTIwMTAtMDUtMTggMDA6 MjE6NDMuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi9nZGIvdHVpL3R1aS1pbnRlcnAuYwky MDEwLTEwLTA2IDIyOjM5OjMyLjAwMDAwMDAwMCArMDIwMAogQEAgLTMwLDYgKzMwLDcgQEAKICAj aW5jbHVkZSAidHVpL3R1aS5oIgogICNpbmNsdWRlICJ0dWkvdHVpLWlvLmgiCkBAIC01MTQsMTAg KzUyNCwxMCBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvdHVpL3R1aS1pbnRlcnAu YwogICAgICAgIC8qIFRlbGwgcmVhZGxpbmUgd2hhdCB0aGUgcHJvbXB0IHRvIGRpc3BsYXkgaXMg YW5kIHdoYXQgZnVuY3Rpb24KICAgICAgICAgICBpdCB3aWxsIG5lZWQgdG8gY2FsbCBhZnRlciBh IHdob2xlIGxpbmUgaXMgcmVhZC4gVGhpcyBhbHNvCiAgICAgICAgICAgZGlzcGxheXMgdGhlIGZp cnN0IHByb21wdC4gICovCi1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvYWNsb2NhbC5t NAorSW5kZXg6IGdkYi03LjIvZ2RiL2FjbG9jYWwubTQKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4x LjkwLjIwMTAwNzIxLm9yaWcvZ2RiL2FjbG9jYWwubTQJMjAxMC0wNS0yMyAwMjo1Njo1OS4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi9hY2xvY2FsLm00CTIwMTAt MDctMjIgMTE6NTg6MjQuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMi5vcmlnL2dkYi9hY2xv Y2FsLm00CTIwMTAtMDUtMjMgMDI6NTY6NTkuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi9n ZGIvYWNsb2NhbC5tNAkyMDEwLTEwLTA2IDIyOjM5OjMyLjAwMDAwMDAwMCArMDIwMAogQEAgLTE5 LDYgKzE5LDE2MiBAQCBZb3UgaGF2ZSBhbm90aGVyIHZlcnNpb24gb2YgYXV0b2NvbmYuICBJCiAg SWYgeW91IGhhdmUgcHJvYmxlbXMsIHlvdSBtYXkgbmVlZCB0byByZWdlbmVyYXRlIHRoZSBidWls ZCBzeXN0ZW0gZW50aXJlbHkuCiAgVG8gZG8gc28sIHVzZSB0aGUgcHJvY2VkdXJlIGRvY3VtZW50 ZWQgYnkgdGhlIHBhY2thZ2UsIHR5cGljYWxseSBgYXV0b3JlY29uZicuXSldKQpAQCAtNjgxLDEw ICs2OTEsMTAgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjEvZ2RiL2FjbG9jYWwubTQKICAj IENvcHlyaWdodCAoQykgMjAwMiwgMjAwMywgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCAgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIwogICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdh cmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KLUluZGV4OiBnZGItNy4xLjkwLjIwMTAw NzIxL2dkYi9jb25maWcuaW4KK0luZGV4OiBnZGItNy4yL2dkYi9jb25maWcuaW4KID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy4xLjkwLjIwMTAwNzIxLm9yaWcvZ2RiL2NvbmZpZy5pbgkyMDEwLTA3LTIy IDExOjU3OjA5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MjEvZ2RiL2Nv bmZpZy5pbgkyMDEwLTA3LTIyIDExOjU4OjI0LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjIu b3JpZy9nZGIvY29uZmlnLmluCTIwMTAtMTAtMDYgMjI6Mzk6MzEuMDAwMDAwMDAwICswMjAwCisr KysgZ2RiLTcuMi9nZGIvY29uZmlnLmluCTIwMTAtMTAtMDYgMjI6Mzk6MzIuMDAwMDAwMDAwICsw MjAwCiBAQCAtNDYsNiArNDYsOSBAQAogIC8qIERlZmluZSB0byBCRkQncyBkZWZhdWx0IHRhcmdl dCB2ZWN0b3IuICovCiAgI3VuZGVmIERFRkFVTFRfQkZEX1ZFQwpAQCAtNzA1LDEwICs3MTUsMTAg QEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjEvZ2RiL2NvbmZpZy5pbgogIC8qIERlZmluZSBp ZiBsaWJ1bndpbmQgbGlicmFyeSBpcyBiZWluZyB1c2VkLiAqLwogICN1bmRlZiBIQVZFX0xJQlVO V0lORAogIAotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjEvZ2RiL2NvbmZpZ3VyZQorSW5kZXg6 IGdkYi03LjIvZ2RiL2NvbmZpZ3VyZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3 MjEub3JpZy9nZGIvY29uZmlndXJlCTIwMTAtMDctMjIgMTE6NTc6MDkuMDAwMDAwMDAwICswMjAw Ci0rKysgZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvY29uZmlndXJlCTIwMTAtMDctMjIgMTE6NTk6 MTMuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMi5vcmlnL2dkYi9jb25maWd1cmUJMjAxMC0x MC0wNiAyMjozOTozMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4yL2dkYi9jb25maWd1cmUJ MjAxMC0xMC0wNiAyMjozOTozMi4wMDAwMDAwMDAgKzAyMDAKIEBAIC02NzksNiArNjc5LDkgQEAg UkVQT1JUX0JVR1NfVE8KICBQS0dWRVJTSU9OCiAgVEFSR0VUX09CUwpAQCAtMTI0MiwxMCArMTI1 MiwxMCBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvY29uZmlndXJlCiAgCiAgCiAg Ci1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvY29uZmlndXJlLmFjCitJbmRleDogZ2Ri LTcuMi9nZGIvY29uZmlndXJlLmFjCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcy MS5vcmlnL2dkYi9jb25maWd1cmUuYWMJMjAxMC0wNy0yMiAxMTo1NzowOS4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi9jb25maWd1cmUuYWMJMjAxMC0wNy0yMiAx MTo1OTowNC4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4yLm9yaWcvZ2RiL2NvbmZpZ3VyZS5h YwkyMDEwLTEwLTA2IDIyOjM5OjMxLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjIvZ2RiL2Nv bmZpZ3VyZS5hYwkyMDEwLTEwLTA2IDIyOjM5OjMyLjAwMDAwMDAwMCArMDIwMAogQEAgLTE1Miw2 ICsxNTIsMTk4IEBAIGVsc2UKICBmaQogIEFDX1NVQlNUKHB5dGhvbmRpcikKQEAgLTE0NDUsMTAg KzE0NTUsMTAgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjEvZ2RiL2NvbmZpZ3VyZS5hYwog IAogIEFDX0NPTkZJR19TVUJESVJTKGRvYyB0ZXN0c3VpdGUpCiAgCi1JbmRleDogZ2RiLTcuMS45 MC4yMDEwMDcyMS9nZGIvYWNpbmNsdWRlLm00CitJbmRleDogZ2RiLTcuMi9nZGIvYWNpbmNsdWRl Lm00CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcyMS5vcmlnL2dkYi9hY2luY2x1 ZGUubTQJMjAxMC0wNS0yNyAwNTo0MDo0NS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkw LjIwMTAwNzIxL2dkYi9hY2luY2x1ZGUubTQJMjAxMC0wNy0yMiAxMTo1ODoyNC4wMDAwMDAwMDAg KzAyMDAKKy0tLSBnZGItNy4yLm9yaWcvZ2RiL2FjaW5jbHVkZS5tNAkyMDEwLTA1LTI3IDA1OjQw OjQ1LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjIvZ2RiL2FjaW5jbHVkZS5tNAkyMDEwLTEw LTA2IDIyOjM5OjMyLjAwMDAwMDAwMCArMDIwMAogQEAgLTEsMyArMSw1IEBACiArIyBzZXJpYWwg MQogKwpAQCAtMTQ2NCwzICsxNDc0LDE2IEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzIxL2dk Yi9hY2luY2x1ZGUubTQKICAjIEBkZWZtYWMgQUNfUFJPR19DQ19TVERDCiAgIyBAbWFpbmRleCBQ Uk9HX0NDX1NUREMKICAjIEBvdmluZGV4IENDCitJbmRleDogZ2RiLTcuMi9nZGIvY29yZWxvdy5j Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLS0gZ2RiLTcuMi5vcmlnL2dkYi9jb3JlbG93LmMJMjAxMC0xMC0wNiAy MjozOTozOS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4yL2dkYi9jb3JlbG93LmMJMjAxMC0x MC0wNiAyMjozOTo1Mi4wMDAwMDAwMDAgKzAyMDAKK0BAIC0zMzEsNyArMzMxLDcgQEAgYnVpbGRf aWRfbG9jYXRlX2V4ZWMgKGludCBmcm9tX3R0eSkKKyAgICAgICAgIHN5bWZpbGVfb2JqZmlsZS0+ ZmxhZ3MgfD0gT0JKRl9CVUlMRF9JRF9DT1JFX0xPQURFRDsKKyAgICAgfQorICAgZWxzZQorLSAg ICBkZWJ1Z19wcmludF9taXNzaW5nIChfKCJ0aGUgbWFpbiBleGVjdXRhYmxlIGZpbGUiKSwgYnVp bGRfaWRfZmlsZW5hbWUpOworKyAgICBkZWJ1Z19wcmludF9taXNzaW5nIChCVUlMRF9JRF9NQUlO X0VYRUNVVEFCTEVfRklMRU5BTUUsIGJ1aWxkX2lkX2ZpbGVuYW1lKTsKKyAKKyAgIGRvX2NsZWFu dXBzIChiYWNrX3RvKTsKKyAKCmRpZmYgLS1naXQgYS9nZGItNi44LWJ6NDU3MTg3LWxhcmdlZmls ZS10ZXN0LnBhdGNoIGIvZ2RiLTYuOC1iejQ1NzE4Ny1sYXJnZWZpbGUtdGVzdC5wYXRjaApvbGQg bW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CgpkaWZmIC0tZ2l0IGEvZ2RiLWFyY2hlci5wYXRj aCBiL2dkYi1hcmNoZXIucGF0Y2gKaW5kZXggNmM4Y2Q1Ni4uNDNmZGE5ZSAxMDA2NDQKLS0tIGEv Z2RiLWFyY2hlci5wYXRjaAorKysgYi9nZGItYXJjaGVyLnBhdGNoCkBAIC0yLDcgKzIsNyBAQCBo dHRwOi8vc291cmNld2FyZS5vcmcvZ2RiL3dpa2kvUHJvamVjdEFyY2hlcgogaHR0cDovL3NvdXJj ZXdhcmUub3JnL2dkYi93aWtpL0FyY2hlckJyYW5jaE1hbmFnZW1lbnQKIAogR0lUIHNuYXBzaG90 OgotY29tbWl0IDIwMmY0ZDBlM2FmOGQ4YThkN2MwYjQwOGQ5ZTBhOGNiNjlmOTEyYjYKK2NvbW1p dCA3NGZmZjU4ZDAwNzZmZTk3YzZjOTlkNjVmYTU4MTI2MzE1MjY2NjQ2CiAKIGJyYW5jaCBgYXJj aGVyJyAtIHRoZSBtZXJnZSBvZiBicmFuY2hlczoKIGFyY2hlci1qYW5rcmF0b2NodmlsLXZsYQpA QCAtMTUsNyArMTUsNyBAQCBhcmNoZXItdHJvbWV5LW9wdGlvbmFsLXBzeW10YWIgKGNoZXJyeS1w aWNrZWQgZnJvbSBwb3N0LTcuMiBtYXN0ZXIpCiAKIAogZGlmZiAtLWdpdCBhL2dkYi9NYWtlZmls ZS5pbiBiL2dkYi9NYWtlZmlsZS5pbgotaW5kZXggNmRiYjI4NC4uNjEzM2RhMyAxMDA2NDQKK2lu ZGV4IGYwN2JjOGIuLjM3MDNkY2EgMTAwNjQ0CiAtLS0gYS9nZGIvTWFrZWZpbGUuaW4KICsrKyBi L2dkYi9NYWtlZmlsZS5pbgogQEAgLTE2OSw2ICsxNjksMTIgQEAgVEFSR0VUX1NZU1RFTV9ST09U ID0gQFRBUkdFVF9TWVNURU1fUk9PVEAKQEAgLTU3LDcgKzU3LDcgQEAgaW5kZXggNmRiYjI4NC4u NjEzM2RhMyAxMDA2NDQKICAKICAjIEhlYWRlciBmaWxlcyB0aGF0IGFscmVhZHkgaGF2ZSBzcmNk aXIgaW4gdGhlbSwgb3Igd2hpY2ggYXJlIGluIG9iamRpci4KICAKLUBAIC0xMjk5LDYgKzEzMDUs MTIgQEAgc3RhbXAtaDogJChzcmNkaXIpL2NvbmZpZy5pbiBjb25maWcuc3RhdHVzCitAQCAtMTMw MSw2ICsxMzA3LDEyIEBAIHN0YW1wLWg6ICQoc3JjZGlyKS9jb25maWcuaW4gY29uZmlnLnN0YXR1 cwogIAkgIENPTkZJR19MSU5LUz0gXAogIAkgICQoU0hFTEwpIGNvbmZpZy5zdGF0dXMKICAKQEAg LTcwLDcgKzcwLDcgQEAgaW5kZXggNmRiYjI4NC4uNjEzM2RhMyAxMDA2NDQKICBjb25maWcuc3Rh dHVzOiAkKHNyY2RpcikvY29uZmlndXJlIGNvbmZpZ3VyZS50Z3QgY29uZmlndXJlLmhvc3QKICAJ JChTSEVMTCkgY29uZmlnLnN0YXR1cyAtLXJlY2hlY2sKICAKLUBAIC0yMDIyLDYgKzIwMzQsMTAg QEAgcHktZnVuY3Rpb24ubzogJChzcmNkaXIpL3B5dGhvbi9weS1mdW5jdGlvbi5jCitAQCAtMjAy NCw2ICsyMDM2LDEwIEBAIHB5LWZ1bmN0aW9uLm86ICQoc3JjZGlyKS9weXRob24vcHktZnVuY3Rp b24uYwogIAkkKENPTVBJTEUpICQoUFlUSE9OX0NGTEFHUykgJChzcmNkaXIpL3B5dGhvbi9weS1m dW5jdGlvbi5jCiAgCSQoUE9TVENPTVBJTEUpCiAgCkBAIC04MSw3ICs4MSw3IEBAIGluZGV4IDZk YmIyODQuLjYxMzNkYTMgMTAwNjQ0CiAgcHktaW5mZXJpb3IubzogJChzcmNkaXIpL3B5dGhvbi9w eS1pbmZlcmlvci5jCiAgCSQoQ09NUElMRSkgJChQWVRIT05fQ0ZMQUdTKSAkKHNyY2RpcikvcHl0 aG9uL3B5LWluZmVyaW9yLmMKICAJJChQT1NUQ09NUElMRSkKLUBAIC0yMDcwLDYgKzIwODYsMzYg QEAgcHktdmFsdWUubzogJChzcmNkaXIpL3B5dGhvbi9weS12YWx1ZS5jCitAQCAtMjA3Miw2ICsy MDg4LDM2IEBAIHB5LXZhbHVlLm86ICQoc3JjZGlyKS9weXRob24vcHktdmFsdWUuYwogIAkkKENP TVBJTEUpICQoUFlUSE9OX0NGTEFHUykgJChzcmNkaXIpL3B5dGhvbi9weS12YWx1ZS5jCiAgCSQo UE9TVENPTVBJTEUpCiAgCkBAIC0yODksNyArMjg5LDcgQEAgaW5kZXggMDM0OGJmNC4uZjAxZDBl ZSAxMDA2NDQKICAKICAvKiBSZXR1cm4gdGhlIGlubmVybW9zdCBzdGFjayBmcmFtZSBleGVjdXRp bmcgaW5zaWRlIG9mIEJMT0NLLAogZGlmZiAtLWdpdCBhL2dkYi9icmVha3BvaW50LmMgYi9nZGIv YnJlYWtwb2ludC5jCi1pbmRleCA0YWZmZTBhLi41ODRjNjhlIDEwMDY0NAoraW5kZXggNmE2ODY0 Yy4uNWRmMzM2ZCAxMDA2NDQKIC0tLSBhL2dkYi9icmVha3BvaW50LmMKICsrKyBiL2dkYi9icmVh a3BvaW50LmMKIEBAIC02Miw2ICs2Miw3IEBACkBAIC0xMzQ5LDcgKzEzNDksNyBAQCBpbmRleCAx ZmM0NTdkLi5mNGM4NDZhIDEwMDY0NAogICN1bmRlZiBQWVRIT05fUEFUSF9SRUxPQ0FUQUJMRQog IAogZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1cmUgYi9nZGIvY29uZmlndXJlCi1pbmRleCA5NGVi OWI5Li5lNDlkYTA4IDEwMDc1NQoraW5kZXggMDQxZmZjMS4uODI0M2FiYiAxMDA3NTUKIC0tLSBh L2dkYi9jb25maWd1cmUKICsrKyBiL2dkYi9jb25maWd1cmUKIEBAIC02NzksNiArNjc5LDggQEAg UkVQT1JUX0JVR1NfVE8KQEAgLTE0NTQsMTcgKzE0NTQsMTYgQEAgaW5kZXggOTRlYjliOS4uZTQ5 ZGEwOCAxMDA3NTUKICAKICAKICBzdWJkaXJzPSIkc3ViZGlycyBkb2MgdGVzdHN1aXRlIgotQEAg LTEwODgxLDYgKzEwOTU1LDggQEAgJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9QWVRIT04gMSIgPj5j b25mZGVmcy5oCi0gICBDT05GSUdfT0JTPSIkQ09ORklHX09CUyBcJChTVUJESVJfUFlUSE9OX09C UykiCitAQCAtMTA5MTksNiArMTA5OTMsNyBAQCAkYXNfZWNobyAiI2RlZmluZSBIQVZFX1BZVEhP TiAxIiA+PmNvbmZkZWZzLmgKICAgIENPTkZJR19ERVBTPSIkQ09ORklHX0RFUFMgXCQoU1VCRElS X1BZVEhPTl9ERVBTKSIKICAgIENPTkZJR19TUkNTPSIkQ09ORklHX1NSQ1MgXCQoU1VCRElSX1BZ VEhPTl9TUkNTKSIKLSsgIENPTkZJR19JTlNUQUxMPSIkQ09ORklHX0lOU1RBTEwgaW5zdGFsbC1w eXRob24iCisgICBDT05GSUdfSU5TVEFMTD0iJENPTkZJR19JTlNUQUxMIGluc3RhbGwtcHl0aG9u IgogKyAgQ09ORklHX1VOSU5TVEFMTD0iJENPTkZJR19VTklOU1RBTEwgdW5pbnN0YWxsLXB5dGhv biIKICAgIEVOQUJMRV9DRkxBR1M9IiRFTkFCTEVfQ0ZMQUdTIFwkKFNVQkRJUl9QWVRIT05fQ0ZM QUdTKSIKICAKICAgICMgRmxhZ3MgbmVlZGVkIHRvIGNvbXBpbGUgUHl0aG9uIGNvZGUgKHRha2Vu IGZyb20gcHl0aG9uLWNvbmZpZyAtLWNmbGFncykuCiBkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3Vy ZS5hYyBiL2dkYi9jb25maWd1cmUuYWMKLWluZGV4IDkzMDA1NDQuLjM4MDQ3M2EgMTAwNjQ0Citp bmRleCBiNjljM2I2Li40ZTg5NTU4IDEwMDY0NAogLS0tIGEvZ2RiL2NvbmZpZ3VyZS5hYwogKysr IGIvZ2RiL2NvbmZpZ3VyZS5hYwogQEAgLTEwOCw2ICsxMDgsNTEgQEAgQVNfSEVMUF9TVFJJTkco Wy0td2l0aC1yZWxvY2F0ZWQtc291cmNlcz1QQVRIXSwgW2F1dG9tYXRpY2FsbHkgcmVsb2NhdGUg dGhpcyBwYXQKQEAgLTE1MTksMzEgKzE1MTgsMTYgQEAgaW5kZXggOTMwMDU0NC4uMzgwNDczYSAx MDA2NDQKICBBQ19DT05GSUdfU1VCRElSUyhkb2MgdGVzdHN1aXRlKQogIAogICMgQ2hlY2sgd2hl dGhlciB0byBzdXBwb3J0IGFsdGVybmF0aXZlIHRhcmdldCBjb25maWd1cmF0aW9ucwotQEAgLTgy OCw2ICs4NzMsOCBAQCBpZiB0ZXN0ICIke2hhdmVfbGlicHl0aG9ufSIgIT0gbm87IHRoZW4KLSAg IENPTkZJR19PQlM9IiRDT05GSUdfT0JTIFwkKFNVQkRJUl9QWVRIT05fT0JTKSIKK0BAIC04MzMs NiArODc4LDcgQEAgaWYgdGVzdCAiJHtoYXZlX2xpYnB5dGhvbn0iICE9IG5vOyB0aGVuCiAgICBD T05GSUdfREVQUz0iJENPTkZJR19ERVBTIFwkKFNVQkRJUl9QWVRIT05fREVQUykiCiAgICBDT05G SUdfU1JDUz0iJENPTkZJR19TUkNTIFwkKFNVQkRJUl9QWVRIT05fU1JDUykiCi0rICBDT05GSUdf SU5TVEFMTD0iJENPTkZJR19JTlNUQUxMIGluc3RhbGwtcHl0aG9uIgorICAgQ09ORklHX0lOU1RB TEw9IiRDT05GSUdfSU5TVEFMTCBpbnN0YWxsLXB5dGhvbiIKICsgIENPTkZJR19VTklOU1RBTEw9 IiRDT05GSUdfVU5JTlNUQUxMIHVuaW5zdGFsbC1weXRob24iCiAgICBFTkFCTEVfQ0ZMQUdTPSIk RU5BQkxFX0NGTEFHUyBcJChTVUJESVJfUFlUSE9OX0NGTEFHUykiCiAgCiAgICAjIEZsYWdzIG5l ZWRlZCB0byBjb21waWxlIFB5dGhvbiBjb2RlICh0YWtlbiBmcm9tIHB5dGhvbi1jb25maWcgLS1j ZmxhZ3MpLgotZGlmZiAtLWdpdCBhL2dkYi9kb2MvQ2hhbmdlTG9nIGIvZ2RiL2RvYy9DaGFuZ2VM b2cKLWluZGV4IDA0ZjE2ODMuLmEyYTZlMzAgMTAwNjQ0Ci0tLS0gYS9nZGIvZG9jL0NoYW5nZUxv ZwotKysrIGIvZ2RiL2RvYy9DaGFuZ2VMb2cKLUBAIC0xLDUgKzEsOSBAQAotIDIwMTAtMDctMTMg IFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KLSAKLSsJKiBnZGIudGV4aW5mbyAoSW5k ZXggRmlsZXMpOiBOZXcgbm9kZS4KLSsKLSsyMDEwLTA3LTEzICBUb20gVHJvbWV5ICA8dHJvbWV5 QHJlZGhhdC5jb20+Ci0rCi0gCSogZ2RiLnRleGluZm8gKEdEQi9NSSBWYXJpYWJsZSBPYmplY3Rz KTogUmVtb3ZlIGV4dHJhICdmb3InLgotIAotIDIwMTAtMDctMDEgIFBlZHJvIEFsdmVzICA8cGVk cm9AY29kZXNvdXJjZXJ5LmNvbT4KIGRpZmYgLS1naXQgYS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIv Z2RiL2RvYy9nZGIudGV4aW5mbwotaW5kZXggMTI5NzE3NS4uYzAzMGI2NSAxMDA2NDQKK2luZGV4 IDY1ZDQ4OTkuLjk2NzY3YjAgMTAwNjQ0CiAtLS0gYS9nZGIvZG9jL2dkYi50ZXhpbmZvCiArKysg Yi9nZGIvZG9jL2dkYi50ZXhpbmZvCiBAQCAtMTE2Miw2ICsxMTYyLDE2IEBAIGZvciByZW1vdGUg ZGVidWdnaW5nLgpAQCAtMTU2Myw3ICsxNTQ3LDcgQEAgaW5kZXggMTI5NzE3NS4uYzAzMGI2NSAx MDA2NDQKICBAYyByZXNvbHZlIHRoZSBzaXR1YXRpb24gb2YgdGhlc2UgZXZlbnR1YWxseQogIEBp dGVtIC10dWkKICBAY2luZGV4IEBjb2Rley0tdHVpfQotQEAgLTE0MjgyLDYgKzE0MjkyLDcgQEAg cHJvZ3JhbS4gIFRvIGRlYnVnIGEgY29yZSBkdW1wIG9mIGEgcHJldmlvdXMgcnVuLCB5b3UgbXVz dCBhbHNvIHRlbGwKK0BAIC0xNDMwOCw2ICsxNDMxOCw3IEBAIHByb2dyYW0uICBUbyBkZWJ1ZyBh IGNvcmUgZHVtcCBvZiBhIHByZXZpb3VzIHJ1biwgeW91IG11c3QgYWxzbyB0ZWxsCiAgQG1lbnUK ICAqIEZpbGVzOjogICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmRzIHRvIHNwZWNpZnkgZmls ZXMKICAqIFNlcGFyYXRlIERlYnVnIEZpbGVzOjogICAgICAgIERlYnVnZ2luZyBpbmZvcm1hdGlv biBpbiBzZXBhcmF0ZSBmaWxlcwpAQCAtMTU3MSw3ICsxNTU1LDcgQEAgaW5kZXggMTI5NzE3NS4u YzAzMGI2NSAxMDA2NDQKICAqIFN5bWJvbCBFcnJvcnM6OiAgICAgICAgICAgICAgIEVycm9ycyBy ZWFkaW5nIHN5bWJvbCBmaWxlcwogICogRGF0YSBGaWxlczo6ICAgICAgICAgICAgICAgICAgR0RC IGRhdGEgZmlsZXMKICBAZW5kIG1lbnUKLUBAIC0xNTE3MSw2ICsxNTE4Miw0NiBAQCBnbnVfZGVi dWdsaW5rX2NyYzMyICh1bnNpZ25lZCBsb25nIGNyYywKK0BAIC0xNTE5Nyw2ICsxNTIwOCw0NiBA QCBnbnVfZGVidWdsaW5rX2NyYzMyICh1bnNpZ25lZCBsb25nIGNyYywKICBUaGlzIGNvbXB1dGF0 aW9uIGRvZXMgbm90IGFwcGx5IHRvIHRoZSBgYGJ1aWxkIElEJycgbWV0aG9kLgogIAogIApAQCAt MTYxOCw3ICsxNjAyLDcgQEAgaW5kZXggMTI5NzE3NS4uYzAzMGI2NSAxMDA2NDQKICBAbm9kZSBT eW1ib2wgRXJyb3JzCiAgQHNlY3Rpb24gRXJyb3JzIFJlYWRpbmcgU3ltYm9sIEZpbGVzCiAgCi1A QCAtMjAzMTAsOCArMjAzNjEsNiBAQCBjb250YWluaW5nIEBjb2Rle2VuZH0uICBGb3IgZXhhbXBs ZToKK0BAIC0yMDM0OSw4ICsyMDQwMCw2IEBAIGNvbnRhaW5pbmcgQGNvZGV7ZW5kfS4gIEZvciBl eGFtcGxlOgogIAogIEBzbWFsbGV4YW1wbGUKICAoQHZhbHVle0dEQlB9KSBweXRob24KQEAgLTE2 MjcsNyArMTYxMSw3IEBAIGluZGV4IDEyOTcxNzUuLmMwMzBiNjUgMTAwNjQ0CiAgPnByaW50IDIz CiAgPmVuZAogIDIzCi1AQCAtMjAzMjQsNiArMjAzNzMsMTQgQEAgaW4gYSBQeXRob24gc2NyaXB0 LiAgVGhpcyBjYW4gYmUgY29udHJvbGxlZCB1c2luZyBAY29kZXttYWludCBzZXQKK0BAIC0yMDM2 Myw2ICsyMDQxMiwxNCBAQCBpbiBhIFB5dGhvbiBzY3JpcHQuICBUaGlzIGNhbiBiZSBjb250cm9s bGVkIHVzaW5nIEBjb2Rle21haW50IHNldAogIHB5dGhvbiBwcmludC1zdGFja306IGlmIEBjb2Rl e29ufSwgdGhlIGRlZmF1bHQsIHRoZW4gUHl0aG9uIHN0YWNrCiAgcHJpbnRpbmcgaXMgZW5hYmxl ZDsgaWYgQGNvZGV7b2ZmfSwgdGhlbiBQeXRob24gc3RhY2sgcHJpbnRpbmcgaXMKICBkaXNhYmxl ZC4KQEAgLTE2NDIsNyArMTYyNiw3IEBAIGluZGV4IDEyOTcxNzUuLmMwMzBiNjUgMTAwNjQ0CiAg QGVuZCB0YWJsZQogIAogIEl0IGlzIGFsc28gcG9zc2libGUgdG8gZXhlY3V0ZSBhIFB5dGhvbiBz Y3JpcHQgZnJvbSB0aGUgQHZhbHVle0dEQk59Ci1AQCAtMjAzNDUsNiArMjA0MDIsMTQgQEAgYW5k IHRodXMgaXMgYWx3YXlzIGF2YWlsYWJsZS4KK0BAIC0yMDM4NCw2ICsyMDQ0MSwxNCBAQCBhbmQg dGh1cyBpcyBhbHdheXMgYXZhaWxhYmxlLgogIEBjaW5kZXggcHl0aG9uIGFwaQogIEBjaW5kZXgg cHJvZ3JhbW1pbmcgaW4gcHl0aG9uCiAgCkBAIC0xNjU3LDcgKzE2NDEsNyBAQCBpbmRleCAxMjk3 MTc1Li5jMDMwYjY1IDEwMDY0NAogIEBjaW5kZXggcHl0aG9uIHN0ZG91dAogIEBjaW5kZXggcHl0 aG9uIHBhZ2luYXRpb24KICBBdCBzdGFydHVwLCBAdmFsdWV7R0RCTn0gb3ZlcnJpZGVzIFB5dGhv bidzIEBjb2Rle3N5cy5zdGRvdXR9IGFuZAotQEAgLTIwMzU2LDcgKzIwNDIxLDcgQEAgc2l0dWF0 aW9uLCBhIFB5dGhvbiBAY29kZXtLZXlib2FyZEludGVycnVwdH0gZXhjZXB0aW9uIGlzIHRocm93 bi4KK0BAIC0yMDM5NSw3ICsyMDQ2MCw3IEBAIHNpdHVhdGlvbiwgYSBQeXRob24gQGNvZGV7S2V5 Ym9hcmRJbnRlcnJ1cHR9IGV4Y2VwdGlvbiBpcyB0aHJvd24uCiAgQG1lbnUKICAqIEJhc2ljIFB5 dGhvbjo6ICAgICAgICAgICAgICAgIEJhc2ljIFB5dGhvbiBGdW5jdGlvbnMuCiAgKiBFeGNlcHRp b24gSGFuZGxpbmc6OgpAQCAtMTY2Niw3ICsxNjUwLDcgQEAgaW5kZXggMTI5NzE3NS4uYzAzMGI2 NSAxMDA2NDQKICAqIFR5cGVzIEluIFB5dGhvbjo6ICAgICAgICAgICAgIFB5dGhvbiByZXByZXNl bnRhdGlvbiBvZiB0eXBlcy4KICAqIFByZXR0eSBQcmludGluZyBBUEk6OiAgICAgICAgIFByZXR0 eS1wcmludGluZyB2YWx1ZXMuCiAgKiBTZWxlY3RpbmcgUHJldHR5LVByaW50ZXJzOjogICBIb3cg R0RCIGNob29zZXMgYSBwcmV0dHktcHJpbnRlci4KLUBAIC0yMDQxNSw2ICsyMDQ4MCwxMiBAQCBS ZXR1cm4gYSBzZXF1ZW5jZSBob2xkaW5nIGFsbCBvZiBAdmFsdWV7R0RCTn0ncyBicmVha3BvaW50 cy4KK0BAIC0yMDQ1Niw2ICsyMDUyMSwxMiBAQCBSZXR1cm4gYSBzZXF1ZW5jZSBob2xkaW5nIGFs bCBvZiBAdmFsdWV7R0RCTn0ncyBicmVha3BvaW50cy4KICBAeHJlZntCcmVha3BvaW50cyBJbiBQ eXRob259LCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICBAZW5kIGRlZnVuCiAgCkBAIC0xNjc5LDcg KzE2NjMsNyBAQCBpbmRleCAxMjk3MTc1Li5jMDMwYjY1IDEwMDY0NAogIEBmaW5kZXggZ2RiLnBh cmFtZXRlcgogIEBkZWZ1biBwYXJhbWV0ZXIgcGFyYW1ldGVyCiAgUmV0dXJuIHRoZSB2YWx1ZSBv ZiBhIEB2YWx1ZXtHREJOfSBwYXJhbWV0ZXIuICBAdmFye3BhcmFtZXRlcn0gaXMgYQotQEAgLTIw NDMxLDYgKzIwNTAyLDcgQEAgYSBQeXRob24gdmFsdWUgb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUs IGFuZCByZXR1cm5lZC4KK0BAIC0yMDQ3Miw2ICsyMDU0Myw3IEBAIGEgUHl0aG9uIHZhbHVlIG9m IHRoZSBhcHByb3ByaWF0ZSB0eXBlLCBhbmQgcmV0dXJuZWQuCiAgQGRlZnVuIGhpc3RvcnkgbnVt YmVyCiAgUmV0dXJuIGEgdmFsdWUgZnJvbSBAdmFsdWV7R0RCTn0ncyB2YWx1ZSBoaXN0b3J5IChA cHhyZWZ7VmFsdWUKICBIaXN0b3J5fSkuICBAdmFye251bWJlcn0gaW5kaWNhdGVzIHdoaWNoIGhp c3RvcnkgZWxlbWVudCB0byByZXR1cm4uCkBAIC0xNjg3LDcgKzE2NzEsNyBAQCBpbmRleCAxMjk3 MTc1Li5jMDMwYjY1IDEwMDY0NAogIElmIEB2YXJ7bnVtYmVyfSBpcyBuZWdhdGl2ZSwgdGhlbiBA dmFsdWV7R0RCTn0gd2lsbCB0YWtlIGl0cyBhYnNvbHV0ZSB2YWx1ZQogIGFuZCBjb3VudCBiYWNr d2FyZCBmcm9tIHRoZSBsYXN0IGVsZW1lbnQgKGkuZS4sIHRoZSBtb3N0IHJlY2VudCBlbGVtZW50 KSB0bwogIGZpbmQgdGhlIHZhbHVlIHRvIHJldHVybi4gIElmIEB2YXJ7bnVtYmVyfSBpcyB6ZXJv LCB0aGVuIEB2YWx1ZXtHREJOfSB3aWxsCi1AQCAtMjA0NTUsNiArMjA1MjcsMjEgQEAgY29tcHV0 ZSB2YWx1ZXMsIGZvciBleGFtcGxlLCBpdCBpcyB0aGUgb25seSB3YXkgdG8gZ2V0IHRoZSB2YWx1 ZSBvZiBhCitAQCAtMjA0OTYsNiArMjA1NjgsMjEgQEAgY29tcHV0ZSB2YWx1ZXMsIGZvciBleGFt cGxlLCBpdCBpcyB0aGUgb25seSB3YXkgdG8gZ2V0IHRoZSB2YWx1ZSBvZiBhCiAgY29udmVuaWVu Y2UgdmFyaWFibGUgKEBweHJlZntDb252ZW5pZW5jZSBWYXJzfSkgYXMgYSBAY29kZXtnZGIuVmFs dWV9LgogIEBlbmQgZGVmdW4KICAKQEAgLTE4OTQsNyArMTg3OCw3IEBAIGluZGV4IDYxYjhmMDAu LmQ5NGMwM2MgMTAwNjQ0CiAgICAvKiBUaGUgY3VycmVudCBkZXB0aCBvZiBkd2FyZiBleHByZXNz aW9uIHJlY3Vyc2lvbiwgdmlhIERXX09QX2NhbGwqLAogICAgICAgRFdfT1BfZmJyZWcsIERXX09Q X3B1c2hfb2JqZWN0X2FkZHJlc3MsIGV0Yy4sIGFuZCB0aGUgbWF4aW11bQogZGlmZiAtLWdpdCBh L2dkYi9kd2FyZjJsb2MuYyBiL2dkYi9kd2FyZjJsb2MuYwotaW5kZXggMmE4ZTU1Ny4uYmU3NDQx MiAxMDA2NDQKK2luZGV4IGY1OWJjNDAuLjdmZjBlZjkgMTAwNjQ0CiAtLS0gYS9nZGIvZHdhcmYy bG9jLmMKICsrKyBiL2dkYi9kd2FyZjJsb2MuYwogQEAgLTQ4LDYgKzQ4LDEyIEBAIHN0YXRpYyB2 b2lkCkBAIC0yMTcyLDcgKzIxNTYsNyBAQCBpbmRleCAyYThlNTU3Li5iZTc0NDEyIDEwMDY0NAog IAkgICAgcmV0dmFsID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOwogIAkgICAgVkFMVUVfTFZBTCAo cmV0dmFsKSA9IGx2YWxfbWVtb3J5OwogIAkgICAgc2V0X3ZhbHVlX2xhenkgKHJldHZhbCwgMSk7 Ci1AQCAtMjU4NiwxMSArMjc0NCw1MSBAQCBsb2NsaXN0X3RyYWNlcG9pbnRfdmFyX3JlZiAoc3Ry dWN0IHN5bWJvbCAqc3ltYm9sLCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKK0BAIC0yNTkwLDEx ICsyNzQ4LDUxIEBAIGxvY2xpc3RfdHJhY2Vwb2ludF92YXJfcmVmIChzdHJ1Y3Qgc3ltYm9sICpz eW1ib2wsIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAogIAkJCSBkbGJhdG9uLT5wZXJfY3UpOwog IH0KICAKQEAgLTIyNDYsMTkgKzIyMzAsMjAgQEAgaW5kZXggODI2YmM0NS4uMWU3ZDhkYyAxMDA2 NDQKICAKICAjZW5kaWYgLyogZHdhcmYybG9jLmggKi8KIGRpZmYgLS1naXQgYS9nZGIvZHdhcmYy cmVhZC5jIGIvZ2RiL2R3YXJmMnJlYWQuYwotaW5kZXggMTYzODFkZS4uMzFhN2Q4MyAxMDA2NDQK K2luZGV4IDFlNzUyMzUuLmQ1NGUyNjYgMTAwNjQ0CiAtLS0gYS9nZGIvZHdhcmYycmVhZC5jCiAr KysgYi9nZGIvZHdhcmYycmVhZC5jCi1AQCAtNTEsNiArNTEsOCBAQAorQEAgLTUxLDYgKzUxLDkg QEAKICAjaW5jbHVkZSAidHlwZXByaW50LmgiCiAgI2luY2x1ZGUgImp2LWxhbmcuaCIKICAjaW5j bHVkZSAicHN5bXByaXYuaCIKICsjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgogKyNpbmNsdWRlICJn ZGJfc3RhdC5oIgorKyNpbmNsdWRlICJjb21wbGV0ZXIuaCIKICAKICAjaW5jbHVkZSA8ZmNudGwu aD4KICAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgotQEAgLTEyOSw2ICsxMzEsMzMgQEAgc3RydWN0 IGR3YXJmMl9zZWN0aW9uX2luZm8KK0BAIC0xMjksNiArMTMyLDMzIEBAIHN0cnVjdCBkd2FyZjJf c2VjdGlvbl9pbmZvCiAgICBpbnQgcmVhZGluOwogIH07CiAgCkBAIC0yMjkyLDcgKzIyNzcsNyBA QCBpbmRleCAxNjM4MWRlLi4zMWE3ZDgzIDEwMDY0NAogIHN0cnVjdCBkd2FyZjJfcGVyX29iamZp bGUKICB7CiAgICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyBpbmZvOwotQEAgLTE0MSw2ICsx NzAsNyBAQCBzdHJ1Y3QgZHdhcmYyX3Blcl9vYmpmaWxlCitAQCAtMTQxLDYgKzE3MSw3IEBAIHN0 cnVjdCBkd2FyZjJfcGVyX29iamZpbGUKICAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvIHR5 cGVzOwogICAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gZnJhbWU7CiAgICBzdHJ1Y3QgZHdh cmYyX3NlY3Rpb25faW5mbyBlaF9mcmFtZTsKQEAgLTIzMDAsNyArMjI4NSw3IEBAIGluZGV4IDE2 MzgxZGUuLjMxYTdkODMgMTAwNjQ0CiAgCiAgICAvKiBCYWNrIGxpbmsuICAqLwogICAgc3RydWN0 IG9iamZpbGUgKm9iamZpbGU7Ci1AQCAtMTYzLDYgKzE5MywxMiBAQCBzdHJ1Y3QgZHdhcmYyX3Bl cl9vYmpmaWxlCitAQCAtMTYzLDYgKzE5NCwxMiBAQCBzdHJ1Y3QgZHdhcmYyX3Blcl9vYmpmaWxl CiAgICAvKiBBIGZsYWcgaW5kaWNhdGluZyB3ZXRoZXIgdGhpcyBvYmpmaWxlIGhhcyBhIHNlY3Rp b24gbG9hZGVkIGF0IGEKICAgICAgIFZNQSBvZiAwLiAgKi8KICAgIGludCBoYXNfc2VjdGlvbl9h dF96ZXJvOwpAQCAtMjMxMyw3ICsyMjk4LDcgQEAgaW5kZXggMTYzODFkZS4uMzFhN2Q4MyAxMDA2 NDQKICB9OwogIAogIHN0YXRpYyBzdHJ1Y3QgZHdhcmYyX3Blcl9vYmpmaWxlICpkd2FyZjJfcGVy X29iamZpbGU7Ci1AQCAtMTgyLDYgKzIxOCw3IEBAIHN0YXRpYyBzdHJ1Y3QgZHdhcmYyX3Blcl9v YmpmaWxlICpkd2FyZjJfcGVyX29iamZpbGU7CitAQCAtMTgyLDYgKzIxOSw3IEBAIHN0YXRpYyBz dHJ1Y3QgZHdhcmYyX3Blcl9vYmpmaWxlICpkd2FyZjJfcGVyX29iamZpbGU7CiAgI2RlZmluZSBU WVBFU19TRUNUSU9OICAgICJkZWJ1Z190eXBlcyIKICAjZGVmaW5lIEZSQU1FX1NFQ1RJT04gICAg ImRlYnVnX2ZyYW1lIgogICNkZWZpbmUgRUhfRlJBTUVfU0VDVElPTiAiZWhfZnJhbWUiCkBAIC0y MzIxLDcgKzIzMDYsNyBAQCBpbmRleCAxNjM4MWRlLi4zMWE3ZDgzIDEwMDY0NAogIAogIC8qIGxv Y2FsIGRhdGEgdHlwZXMgKi8KICAKLUBAIC0zMDcsNiArMzQ0LDMyIEBAIHN0cnVjdCBkd2FyZjJf Y3UKK0BAIC0zMDcsNiArMzQ1LDMyIEBAIHN0cnVjdCBkd2FyZjJfY3UKICAgIHVuc2lnbmVkIGlu dCBoYXNfbmFtZXNwYWNlX2luZm8gOiAxOwogIH07CiAgCkBAIC0yMzU0LDcgKzIzMzksNyBAQCBp bmRleCAxNjM4MWRlLi4zMWE3ZDgzIDEwMDY0NAogIC8qIFBlcnNpc3RlbnQgZGF0YSBoZWxkIGZv ciBhIGNvbXBpbGF0aW9uIHVuaXQsIGV2ZW4gd2hlbiBub3QKICAgICBwcm9jZXNzaW5nIGl0LiAg V2UgcHV0IGEgcG9pbnRlciB0byB0aGlzIHN0cnVjdHVyZSBpbiB0aGUKICAgICByZWFkX3N5bXRh Yl9wcml2YXRlIGZpZWxkIG9mIHRoZSBwc3ltdGFiLiAgSWYgd2UgZW5jb3VudGVyCi1AQCAtMzQ3 LDEwICs0MTAsMjEgQEAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YQorQEAgLTM0NywxMCArNDEx LDIxIEBAIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEKICAgICAgIGl0LiAgKi8KICAgIGh0YWJf dCB0eXBlX2hhc2g7CiAgCkBAIC0yMzgwLDcgKzIzNjUsNyBAQCBpbmRleCAxNjM4MWRlLi4zMWE3 ZDgzIDEwMDY0NAogIH07CiAgCiAgLyogRW50cnkgaW4gdGhlIHNpZ25hdHVyZWRfdHlwZXMgaGFz aCB0YWJsZS4gICovCi1AQCAtMTA4Myw2ICsxMTU3LDkgQEAgc3RhdGljIGludCBhdHRyX2Zvcm1f aXNfc2VjdGlvbl9vZmZzZXQgKHN0cnVjdCBhdHRyaWJ1dGUgKik7CitAQCAtMTA4Myw2ICsxMTU4 LDkgQEAgc3RhdGljIGludCBhdHRyX2Zvcm1faXNfc2VjdGlvbl9vZmZzZXQgKHN0cnVjdCBhdHRy aWJ1dGUgKik7CiAgCiAgc3RhdGljIGludCBhdHRyX2Zvcm1faXNfY29uc3RhbnQgKHN0cnVjdCBh dHRyaWJ1dGUgKik7CiAgCkBAIC0yMzkwLDcgKzIzNzUsNyBAQCBpbmRleCAxNjM4MWRlLi4zMWE3 ZDgzIDEwMDY0NAogIHN0YXRpYyB2b2lkIGR3YXJmMl9zeW1ib2xfbWFya19jb21wdXRlZCAoc3Ry dWN0IGF0dHJpYnV0ZSAqYXR0ciwKICAJCQkJCSBzdHJ1Y3Qgc3ltYm9sICpzeW0sCiAgCQkJCQkg c3RydWN0IGR3YXJmMl9jdSAqY3UpOwotQEAgLTExMTMsNiArMTE5MCw5IEBAIHN0YXRpYyB2b2lk IGFnZV9jYWNoZWRfY29tcF91bml0cyAodm9pZCk7CitAQCAtMTExMyw2ICsxMTkxLDkgQEAgc3Rh dGljIHZvaWQgYWdlX2NhY2hlZF9jb21wX3VuaXRzICh2b2lkKTsKICAKICBzdGF0aWMgdm9pZCBm cmVlX29uZV9jYWNoZWRfY29tcF91bml0ICh2b2lkICopOwogIApAQCAtMjQwMCw3ICsyMzg1LDcg QEAgaW5kZXggMTYzODFkZS4uMzFhN2Q4MyAxMDA2NDQKICBzdGF0aWMgc3RydWN0IHR5cGUgKnNl dF9kaWVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICosIHN0cnVjdCB0eXBlICosCiAgCQkJCSAgc3Ry dWN0IGR3YXJmMl9jdSAqKTsKICAKLUBAIC0xMTMyLDYgKzEyMTIsNTYgQEAgc3RhdGljIHZvaWQg ZHdhcmYyX2NsZWFyX21hcmtzIChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICopOworQEAgLTEx MzIsNiArMTIxMyw1NiBAQCBzdGF0aWMgdm9pZCBkd2FyZjJfY2xlYXJfbWFya3MgKHN0cnVjdCBk d2FyZjJfcGVyX2N1X2RhdGEgKik7CiAgCiAgc3RhdGljIHN0cnVjdCB0eXBlICpnZXRfZGllX3R5 cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSk7CiAgCkBAIC0y NDU3LDcgKzI0NDIsNyBAQCBpbmRleCAxNjM4MWRlLi4zMWE3ZDgzIDEwMDY0NAogIC8qIFRyeSB0 byBsb2NhdGUgdGhlIHNlY3Rpb25zIHdlIG5lZWQgZm9yIERXQVJGIDIgZGVidWdnaW5nCiAgICAg aW5mb3JtYXRpb24gYW5kIHJldHVybiB0cnVlIGlmIHdlIGhhdmUgZW5vdWdoIHRvIGRvIHNvbWV0 aGluZy4gICovCiAgCi1AQCAtMTIzMCw2ICsxMzYwLDExIEBAIGR3YXJmMl9sb2NhdGVfc2VjdGlv bnMgKGJmZCAqYWJmZCwgYXNlY3Rpb24gKnNlY3RwLCB2b2lkICppZ25vcmVfcHRyKQorQEAgLTEy MzAsNiArMTM2MSwxMSBAQCBkd2FyZjJfbG9jYXRlX3NlY3Rpb25zIChiZmQgKmFiZmQsIGFzZWN0 aW9uICpzZWN0cCwgdm9pZCAqaWdub3JlX3B0cikKICAgICAgICBkd2FyZjJfcGVyX29iamZpbGUt PnR5cGVzLmFzZWN0aW9uID0gc2VjdHA7CiAgICAgICAgZHdhcmYyX3Blcl9vYmpmaWxlLT50eXBl cy5zaXplID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3RwKTsKICAgICAgfQpAQCAtMjQ2OSwx NyArMjQ1NCwxMyBAQCBpbmRleCAxNjM4MWRlLi4zMWE3ZDgzIDEwMDY0NAogIAogICAgaWYgKChi ZmRfZ2V0X3NlY3Rpb25fZmxhZ3MgKGFiZmQsIHNlY3RwKSAmIFNFQ19MT0FEKQogICAgICAgICYm IGJmZF9zZWN0aW9uX3ZtYSAoYWJmZCwgc2VjdHApID09IDApCi1AQCAtMTM0OSw5MSArMTQ4NCw5 NDQgQEAgZHdhcmYyX3JlYWRfc2VjdGlvbiAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVj dCBkd2FyZjJfc2VjdGlvbl9pbmZvICppbmZvKQotICAgICAgICAgfQotICAgICB9CitAQCAtMTM1 Myw4NyArMTQ4OSw5NDAgQEAgZHdhcmYyX3JlYWRfc2VjdGlvbiAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUsIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICppbmZvKQorICAgaWYgKHBhZ2VzaXpl ID09IDApCisgICAgIHBhZ2VzaXplID0gZ2V0cGFnZXNpemUgKCk7CiAgCi0tI2lmZGVmIEhBVkVf TU1BUAotLSAgaWYgKHBhZ2VzaXplID09IDApCi0tICAgIHBhZ2VzaXplID0gZ2V0cGFnZXNpemUg KCk7Ci0rI2lmZGVmIEhBVkVfTU1BUAotKyAgaWYgKHBhZ2VzaXplID09IDApCi0rICAgIHBhZ2Vz aXplID0gZ2V0cGFnZXNpemUgKCk7Ci0rCistICAvKiBPbmx5IHRyeSB0byBtbWFwIHNlY3Rpb25z IHdoaWNoIGFyZSBsYXJnZSBlbm91Z2g6IHdlIGRvbid0IHdhbnQgdG8KKy0gICAgIHdhc3RlIHNw YWNlIGR1ZSB0byBmcmFnbWVudGF0aW9uLiAgQWxzbywgb25seSB0cnkgbW1hcCBmb3Igc2VjdGlv bnMKKy0gICAgIHdpdGhvdXQgcmVsb2NhdGlvbnMuICAqLwogKyAgLyogT25seSB0cnkgdG8gbW1h cCBzZWN0aW9ucyB3aGljaCBhcmUgbGFyZ2UgZW5vdWdoOiB3ZSBkb24ndCB3YW50IHRvCiArICAg ICB3YXN0ZSBzcGFjZSBkdWUgdG8gZnJhZ21lbnRhdGlvbi4gIEFsc28sIG9ubHkgdHJ5IG1tYXAg Zm9yIHNlY3Rpb25zCiArICAgICB3aXRob3V0IHJlbG9jYXRpb25zLiAgKi8KQEAgLTMyOTYsMTMg KzMyNzcsMTAgQEAgaW5kZXggMTYzODFkZS4uMzFhN2Q4MyAxMDA2NDQKICsgIG9mZnNldF90eXBl IGl0ZXI7CiArICBkdzJfc2V0dXAgKG9iamZpbGUpOwogIAotLSAgLyogT25seSB0cnkgdG8gbW1h cCBzZWN0aW9ucyB3aGljaCBhcmUgbGFyZ2UgZW5vdWdoOiB3ZSBkb24ndCB3YW50IHRvCi0tICAg ICB3YXN0ZSBzcGFjZSBkdWUgdG8gZnJhZ21lbnRhdGlvbi4gIEFsc28sIG9ubHkgdHJ5IG1tYXAg Zm9yIHNlY3Rpb25zCi0tICAgICB3aXRob3V0IHJlbG9jYXRpb25zLiAgKi8KKy0gIGlmIChpbmZv LT5zaXplID4gNCAqIHBhZ2VzaXplICYmIChzZWN0cC0+ZmxhZ3MgJiBTRUNfUkVMT0MpID09IDAp CiArICBpZiAoIWR3YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGUpCiArICAgIHJldHVybjsK LSAKLS0gIGlmIChpbmZvLT5zaXplID4gNCAqIHBhZ2VzaXplICYmIChzZWN0cC0+ZmxhZ3MgJiBT RUNfUkVMT0MpID09IDApCisrCiArICBmb3IgKGl0ZXIgPSAwOwogKyAgICAgICBpdGVyIDwgZHdh cmYyX3Blcl9vYmpmaWxlLT5pbmRleF90YWJsZS0+aW5kZXhfdGFibGVfc2xvdHM7CiArICAgICAg ICsraXRlcikKQEAgLTM0NzksNyArMzQ1NywxNSBAQCBpbmRleCAxNjM4MWRlLi4zMWE3ZDgzIDEw MDY0NAogIC8qIEJ1aWxkIGEgcGFydGlhbCBzeW1ib2wgdGFibGUuICAqLwogIAogIHZvaWQKLUBA IC0xODk3LDcgKzI4ODUsNyBAQCBwcm9jZXNzX3BzeW10YWJfY29tcF91bml0IChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwKK0BAIC0xNjk5LDYgKzI2ODgsNyBAQCBjcmVhdGVfZGVidWdfdHlwZXNf aGFzaF90YWJsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCisgICAgICAgdHlwZV9zaWctPnNp Z25hdHVyZSA9IHNpZ25hdHVyZTsKKyAgICAgICB0eXBlX3NpZy0+b2Zmc2V0ID0gb2Zmc2V0Owor ICAgICAgIHR5cGVfc2lnLT50eXBlX29mZnNldCA9IHR5cGVfb2Zmc2V0OworKyAgICAgIHR5cGVf c2lnLT5wZXJfY3Uub2JqZmlsZSA9IG9iamZpbGU7CisgCisgICAgICAgc2xvdCA9IGh0YWJfZmlu ZF9zbG90ICh0eXBlc19odGFiLCB0eXBlX3NpZywgSU5TRVJUKTsKKyAgICAgICBnZGJfYXNzZXJ0 IChzbG90ICE9IE5VTEwpOworQEAgLTE4OTcsNyArMjg4Nyw3IEBAIHByb2Nlc3NfcHN5bXRhYl9j b21wX3VuaXQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogICAgLyogU3RvcmUgdGhlIGZ1bmN0 aW9uIHRoYXQgcmVhZHMgaW4gdGhlIHJlc3Qgb2YgdGhlIHN5bWJvbCB0YWJsZSAqLwogICAgcHN0 LT5yZWFkX3N5bXRhYiA9IGR3YXJmMl9wc3ltdGFiX3RvX3N5bXRhYjsKICAKQEAgLTM0ODgsNyAr MzQ3NCw3IEBAIGluZGV4IDE2MzgxZGUuLjMxYTdkODMgMTAwNjQ0CiAgCiAgICBkd2FyZjJfZmlu ZF9iYXNlX2FkZHJlc3MgKGNvbXBfdW5pdF9kaWUsICZjdSk7CiAgCi1AQCAtMjE4Miw2ICszMTcw LDcgQEAgY3JlYXRlX2FsbF9jb21wX3VuaXRzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKK0BA IC0yMTgyLDYgKzMxNzIsNyBAQCBjcmVhdGVfYWxsX2NvbXBfdW5pdHMgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlKQogICAgICAgIG1lbXNldCAodGhpc19jdSwgMCwgc2l6ZW9mICgqdGhpc19jdSkp OwogICAgICAgIHRoaXNfY3UtPm9mZnNldCA9IG9mZnNldDsKICAgICAgICB0aGlzX2N1LT5sZW5n dGggPSBsZW5ndGggKyBpbml0aWFsX2xlbmd0aF9zaXplOwpAQCAtMzQ5Niw3ICszNDgyLDcgQEAg aW5kZXggMTYzODFkZS4uMzFhN2Q4MyAxMDA2NDQKICAKICAgICAgICBpZiAobl9jb21wX3VuaXRz ID09IG5fYWxsb2NhdGVkKQogIAl7Ci1AQCAtMjYxMyw3ICszNjAyLDcgQEAgYWRkX3BhcnRpYWxf c3VicHJvZ3JhbSAoc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnBkaSwKK0BAIC0yNjEzLDcgKzM2 MDQsNyBAQCBhZGRfcGFydGlhbF9zdWJwcm9ncmFtIChzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAq cGRpLAogIAkgICAgICBhZGRybWFwX3NldF9lbXB0eSAob2JqZmlsZS0+cHN5bXRhYnNfYWRkcm1h cCwKICAJCQkJIHBkaS0+bG93cGMgKyBiYXNlYWRkciwKICAJCQkJIHBkaS0+aGlnaHBjIC0gMSAr IGJhc2VhZGRyLApAQCAtMzUwNSw3ICszNDkxLDcgQEAgaW5kZXggMTYzODFkZS4uMzFhN2Q4MyAx MDA2NDQKICAJICAgIH0KICAgICAgICAgICAgaWYgKCFwZGktPmlzX2RlY2xhcmF0aW9uKQogIAkg ICAgLyogSWdub3JlIHN1YnByb2dyYW0gRElFcyB0aGF0IGRvIG5vdCBoYXZlIGEgbmFtZSwgdGhl eSBhcmUKLUBAIC0yODg1LDcgKzM4NzQsNiBAQCBsb2NhdGVfcGRpX3NpYmxpbmcgKHN0cnVjdCBw YXJ0aWFsX2RpZV9pbmZvICpvcmlnX3BkaSwKK0BAIC0yODg1LDcgKzM4NzYsNiBAQCBsb2NhdGVf cGRpX3NpYmxpbmcgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpvcmlnX3BkaSwKICBzdGF0aWMg dm9pZAogIGR3YXJmMl9wc3ltdGFiX3RvX3N5bXRhYiAoc3RydWN0IHBhcnRpYWxfc3ltdGFiICpw c3QpCiAgewpAQCAtMzUxMyw3ICszNDk5LDcgQEAgaW5kZXggMTYzODFkZS4uMzFhN2Q4MyAxMDA2 NDQKICAgIGlmIChwc3QgIT0gTlVMTCkKICAgICAgewogICAgICAgIGlmIChwc3QtPnJlYWRpbikK LUBAIC0yOTU4LDcgKzM5NDYsOSBAQCBwcm9jZXNzX3F1ZXVlIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSkKK0BAIC0yOTU4LDcgKzM5NDgsOSBAQCBwcm9jZXNzX3F1ZXVlIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSkKICAgICAgIG1heSBsb2FkIGEgbmV3IENVLCBhZGRpbmcgaXQgdG8gdGhlIGVu ZCBvZiB0aGUgcXVldWUuICAqLwogICAgZm9yIChpdGVtID0gZHdhcmYyX3F1ZXVlOyBpdGVtICE9 IE5VTEw7IGR3YXJmMl9xdWV1ZSA9IGl0ZW0gPSBuZXh0X2l0ZW0pCiAgICAgIHsKQEAgLTM1MjQs NyArMzUxMCw3IEBAIGluZGV4IDE2MzgxZGUuLjMxYTdkODMgMTAwNjQ0CiAgCXByb2Nlc3NfZnVs bF9jb21wX3VuaXQgKGl0ZW0tPnBlcl9jdSk7CiAgCiAgICAgICAgaXRlbS0+cGVyX2N1LT5xdWV1 ZWQgPSAwOwotQEAgLTMwMzUsMjIgKzQwMjUsNyBAQCBwc3ltdGFiX3RvX3N5bXRhYl8xIChzdHJ1 Y3QgcGFydGlhbF9zeW10YWIgKnBzdCkKK0BAIC0zMDM1LDIyICs0MDI3LDcgQEAgcHN5bXRhYl90 b19zeW10YWJfMSAoc3RydWN0IHBhcnRpYWxfc3ltdGFiICpwc3QpCiAgICAgICAgcmV0dXJuOwog ICAgICB9CiAgCkBAIC0zNTQ4LDcgKzM1MzQsNyBAQCBpbmRleCAxNjM4MWRlLi4zMWE3ZDgzIDEw MDY0NAogIH0KICAKICAvKiBMb2FkIHRoZSBESUVzIGFzc29jaWF0ZWQgd2l0aCBQRVJfQ1UgaW50 byBtZW1vcnkuICAqLwotQEAgLTMxMzAsOSArNDEwNSw4IEBAIGxvYWRfZnVsbF9jb21wX3VuaXQg KHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSwgc3RydWN0IG9iamZpbGUgKm9iamZp bGUpCitAQCAtMzEzMCw5ICs0MTA3LDggQEAgbG9hZF9mdWxsX2NvbXBfdW5pdCAoc3RydWN0IGR3 YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1LCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKICBzdGF0 aWMgdm9pZAogIHByb2Nlc3NfZnVsbF9jb21wX3VuaXQgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2Rh dGEgKnBlcl9jdSkKICB7CkBAIC0zNTU5LDcgKzM1NDUsNyBAQCBpbmRleCAxNjM4MWRlLi4zMWE3 ZDgzIDEwMDY0NAogICAgQ09SRV9BRERSIGxvd3BjLCBoaWdocGM7CiAgICBzdHJ1Y3Qgc3ltdGFi ICpzeW10YWI7CiAgICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKLUBAIC0zMTY1LDggKzQxMzks MTUgQEAgcHJvY2Vzc19mdWxsX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAq cGVyX2N1KQorQEAgLTMxNjUsOCArNDE0MSwxNSBAQCBwcm9jZXNzX2Z1bGxfY29tcF91bml0IChz dHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UpCiAgICAgIHsKICAgICAgICBzeW10YWIt Pmxhbmd1YWdlID0gY3UtPmxhbmd1YWdlOwogICAgICB9CkBAIC0zNTc3LDcgKzM1NjMsNyBAQCBp bmRleCAxNjM4MWRlLi4zMWE3ZDgzIDEwMDY0NAogIAogICAgZG9fY2xlYW51cHMgKGJhY2tfdG8p OwogIH0KLUBAIC0zNTU5LDYgKzQ1NDAsNDYgQEAgZnJlZV9jdV9saW5lX2hlYWRlciAodm9pZCAq YXJnKQorQEAgLTM1NTcsNiArNDU0MCw0NiBAQCBmcmVlX2N1X2xpbmVfaGVhZGVyICh2b2lkICph cmcpCiAgfQogIAogIHN0YXRpYyB2b2lkCkBAIC0zNjI0LDcgKzM2MTAsNyBAQCBpbmRleCAxNjM4 MWRlLi4zMWE3ZDgzIDEwMDY0NAogIHJlYWRfZmlsZV9zY29wZSAoc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogIHsKICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl ID0gY3UtPm9iamZpbGU7Ci1AQCAtMzU4NCwzNSArNDYwNSw3IEBAIHJlYWRfZmlsZV9zY29wZSAo c3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTM1ODIsMzUg KzQ2MDUsNyBAQCByZWFkX2ZpbGVfc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3Qg ZHdhcmYyX2N1ICpjdSkKICAgIGxvd3BjICs9IGJhc2VhZGRyOwogICAgaGlnaHBjICs9IGJhc2Vh ZGRyOwogIApAQCAtMzY2MSw3ICszNjQ3LDcgQEAgaW5kZXggMTYzODFkZS4uMzFhN2Q4MyAxMDA2 NDQKICAKICAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9sYW5ndWFnZSwgY3UpOwog ICAgaWYgKGF0dHIpCi1AQCAtNTUzMSw2ICs2NTI0LDI5IEBAIHByb2Nlc3NfZW51bWVyYXRpb25f c2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC01 NTI5LDYgKzY1MjQsMjkgQEAgcHJvY2Vzc19lbnVtZXJhdGlvbl9zY29wZSAoc3RydWN0IGRpZV9p bmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgbmV3X3N5bWJvbCAoZGllLCB0aGlz X3R5cGUsIGN1KTsKICB9CiAgCkBAIC0zNjkxLDcgKzM2NzcsNyBAQCBpbmRleCAxNjM4MWRlLi4z MWE3ZDgzIDEwMDY0NAogIC8qIEV4dHJhY3QgYWxsIGluZm9ybWF0aW9uIGZyb20gYSBEV19UQUdf YXJyYXlfdHlwZSBESUUgYW5kIHB1dCBpdCBpbgogICAgIHRoZSBESUUncyB0eXBlIGZpZWxkLiAg Rm9yIG5vdywgdGhpcyBvbmx5IGhhbmRsZXMgb25lIGRpbWVuc2lvbmFsCiAgICAgYXJyYXlzLiAg Ki8KLUBAIC01NTQ0LDcgKzY1NjAsNyBAQCByZWFkX2FycmF5X3R5cGUgKHN0cnVjdCBkaWVfaW5m byAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC01NTQyLDcgKzY1NjAsNyBAQCByZWFk X2FycmF5X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkK ICAgIHN0cnVjdCB0eXBlICplbGVtZW50X3R5cGUsICpyYW5nZV90eXBlLCAqaW5kZXhfdHlwZTsK ICAgIHN0cnVjdCB0eXBlICoqcmFuZ2VfdHlwZXMgPSBOVUxMOwogICAgc3RydWN0IGF0dHJpYnV0 ZSAqYXR0cjsKQEAgLTM3MDAsNyArMzY4Niw3IEBAIGluZGV4IDE2MzgxZGUuLjMxYTdkODMgMTAw NjQ0CiAgICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKICAgIGNoYXIgKm5hbWU7CiAgCi1AQCAt NTU5NywxNyArNjYxMywxMSBAQCByZWFkX2FycmF5X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGll LCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC01NTk1LDE3ICs2NjEzLDExIEBAIHJlYWRfYXJy YXlfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAg dHlwZSA9IGVsZW1lbnRfdHlwZTsKICAKICAgIGlmIChyZWFkX2FycmF5X29yZGVyIChkaWUsIGN1 KSA9PSBEV19PUkRfY29sX21ham9yKQpAQCAtMzcyMyw3ICszNzA5LDcgQEAgaW5kZXggMTYzODFk ZS4uMzFhN2Q4MyAxMDA2NDQKICAKICAgIC8qIFVuZGVyc3RhbmQgRHdhcmYyIHN1cHBvcnQgZm9y IHZlY3RvciB0eXBlcyAobGlrZSB0aGV5IG9jY3VyIG9uCiAgICAgICB0aGUgUG93ZXJQQyB3LyBB bHRpVmVjKS4gIEdjYyBqdXN0IGFkZHMgYW5vdGhlciBhdHRyaWJ1dGUgdG8gdGhlCi1AQCAtNjA2 MSwyOSArNzA3MSwxMTQgQEAgcmVhZF90YWdfc3RyaW5nX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAq ZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC02MDU5LDI5ICs3MDcxLDExNCBAQCByZWFk X3RhZ19zdHJpbmdfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3Ug KmN1KQogICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfb2JqZmlsZV9hcmNoIChvYmpm aWxlKTsKICAgIHN0cnVjdCB0eXBlICp0eXBlLCAqcmFuZ2VfdHlwZSwgKmluZGV4X3R5cGUsICpj aGFyX3R5cGU7CiAgICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwpAQCAtMzg1Miw3ICszODM4LDcg QEAgaW5kZXggMTYzODFkZS4uMzFhN2Q4MyAxMDA2NDQKICAgIGNoYXJfdHlwZSA9IGxhbmd1YWdl X3N0cmluZ19jaGFyX3R5cGUgKGN1LT5sYW5ndWFnZV9kZWZuLCBnZGJhcmNoKTsKICAgIHR5cGUg PSBjcmVhdGVfc3RyaW5nX3R5cGUgKE5VTEwsIGNoYXJfdHlwZSwgcmFuZ2VfdHlwZSk7CiAgCi1A QCAtNjMyNiw2MCArNzQyMSwxMzYgQEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtNjMyNCw2MCArNzQyMSwxMzYgQEAg cmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9j dSAqY3UpCiAgICBzdHJ1Y3QgdHlwZSAqYmFzZV90eXBlOwogICAgc3RydWN0IHR5cGUgKnJhbmdl X3R5cGU7CiAgICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwpAQCAtNDAyMyw3ICs0MDA5LDcgQEAg aW5kZXggMTYzODFkZS4uMzFhN2Q4MyAxMDA2NDQKICAgICAgfQogIAogICAgLyogRHdhcmYtMiBz cGVjaWZpY2F0aW9ucyBleHBsaWNpdGx5IGFsbG93cyB0byBjcmVhdGUgc3VicmFuZ2UgdHlwZXMK LUBAIC02NDIxLDIwICs3NTkyLDQxIEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9p bmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTY0MTksMjAgKzc1OTIsNDEgQEAg cmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9j dSAqY3UpCiAgCX0KICAgICAgfQogIApAQCAtNDA3Nyw3ICs0MDYzLDcgQEAgaW5kZXggMTYzODFk ZS4uMzFhN2Q4MyAxMDA2NDQKICAKICAgIG5hbWUgPSBkd2FyZjJfbmFtZSAoZGllLCBjdSk7CiAg ICBpZiAobmFtZSkKLUBAIC04NzE0LDEwICs5OTA2LDEyIEBAIHZhcl9kZWNvZGVfbG9jYXRpb24g KHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBzeW1ib2wgKnN5bSwKK0BAIC04NzEyLDEw ICs5OTA2LDEyIEBAIHZhcl9kZWNvZGVfbG9jYXRpb24gKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIs IHN0cnVjdCBzeW1ib2wgKnN5bSwKICAgICAgIChpLmUuIHdoZW4gdGhlIHZhbHVlIG9mIGEgcmVn aXN0ZXIgb3IgbWVtb3J5IGxvY2F0aW9uIGlzCiAgICAgICByZWZlcmVuY2VkLCBvciBhIHRocmVh ZC1sb2NhbCBibG9jaywgZXRjLikuICBUaGVuIGFnYWluLCBpdCBtaWdodAogICAgICAgbm90IGJl IHdvcnRod2hpbGUuICBJJ20gYXNzdW1pbmcgdGhhdCBpdCBpc24ndCB1bmxlc3MgcGVyZm9ybWFu Y2UKQEAgLTQwOTIsNyArNDA3OCw3IEBAIGluZGV4IDE2MzgxZGUuLjMxYTdkODMgMTAwNjQ0CiAg fQogIAogIC8qIEdpdmVuIGEgcG9pbnRlciB0byBhIERXQVJGIGluZm9ybWF0aW9uIGVudHJ5LCBm aWd1cmUgb3V0IGlmIHdlIG5lZWQKLUBAIC04NzQ4LDYgKzk5NDIsOCBAQCBuZXdfc3ltYm9sIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3Ug KmN1KQorQEAgLTg3NDYsNiArOTk0Miw4IEBAIG5ld19zeW1ib2wgKHN0cnVjdCBkaWVfaW5mbyAq ZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgCQkJCQkgICAg IHNpemVvZiAoc3RydWN0IHN5bWJvbCkpOwogICAgICAgIE9CSlNUQVQgKG9iamZpbGUsIG5fc3lt cysrKTsKICAgICAgICBtZW1zZXQgKHN5bSwgMCwgc2l6ZW9mIChzdHJ1Y3Qgc3ltYm9sKSk7CkBA IC00MTAxLDcgKzQwODcsNyBAQCBpbmRleCAxNjM4MWRlLi4zMWE3ZDgzIDEwMDY0NAogIAogICAg ICAgIC8qIENhY2hlIHRoaXMgc3ltYm9sJ3MgbmFtZSBhbmQgdGhlIG5hbWUncyBkZW1hbmdsZWQg Zm9ybSAoaWYgYW55KS4gICovCiAgICAgICAgU1lNQk9MX0xBTkdVQUdFIChzeW0pID0gY3UtPmxh bmd1YWdlOwotQEAgLTkzNzksNiArMTA1NzUsOSBAQCByZWFkX3R5cGVfZGllIChzdHJ1Y3QgZGll X2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtOTM3NSw2ICsxMDU3Myw5IEBA IHJlYWRfdHlwZV9kaWUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpj dSkKICAgICAgICBicmVhazsKICAgICAgfQogIApAQCAtNDExMSw3ICs0MDk3LDcgQEAgaW5kZXgg MTYzODFkZS4uMzFhN2Q4MyAxMDA2NDQKICAgIHJldHVybiB0aGlzX3R5cGU7CiAgfQogIAotQEAg LTExOTgzLDY3ICsxMzE4MiwxMDIgQEAgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChzdHJ1Y3QgYXR0 cmlidXRlICphdHRyKQorQEAgLTExOTc5LDY3ICsxMzE4MCwxMDIgQEAgYXR0cl9mb3JtX2lzX2Nv bnN0YW50IChzdHJ1Y3QgYXR0cmlidXRlICphdHRyKQogICAgICB9CiAgfQogIApAQCAtNDI2Myw3 ICs0MjQ5LDcgQEAgaW5kZXggMTYzODFkZS4uMzFhN2Q4MyAxMDA2NDQKICAgICAgfQogIH0KICAK LUBAIC0xMjA1NCw3ICsxMzI4OCw3IEBAIGR3YXJmMl9zeW1ib2xfbWFya19jb21wdXRlZCAoc3Ry dWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3ltLAorQEAgLTEyMDUwLDcgKzEz Mjg2LDcgQEAgZHdhcmYyX3N5bWJvbF9tYXJrX2NvbXB1dGVkIChzdHJ1Y3QgYXR0cmlidXRlICph dHRyLCBzdHJ1Y3Qgc3ltYm9sICpzeW0sCiAgc3RydWN0IG9iamZpbGUgKgogIGR3YXJmMl9wZXJf Y3Vfb2JqZmlsZSAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1KQogIHsKQEAgLTQy NzIsNyArNDI1OCw3IEBAIGluZGV4IDE2MzgxZGUuLjMxYTdkODMgMTAwNjQ0CiAgCiAgICAvKiBS ZXR1cm4gdGhlIG1hc3RlciBvYmpmaWxlLCBzbyB0aGF0IHdlIGNhbiByZXBvcnQgYW5kIGxvb2sg dXAgdGhlCiAgICAgICBjb3JyZWN0IGZpbGUgY29udGFpbmluZyB0aGlzIHZhcmlhYmxlLiAgKi8K LUBAIC0xMjA3NCw3ICsxMzMwOCw3IEBAIGR3YXJmMl9wZXJfY3VfYWRkcl9zaXplIChzdHJ1Y3Qg ZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UpCitAQCAtMTIwNzAsNyArMTMzMDYsNyBAQCBkd2Fy ZjJfcGVyX2N1X2FkZHJfc2l6ZSAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1KQog ICAgZWxzZQogICAgICB7CiAgICAgICAgLyogSWYgdGhlIENVIGlzIG5vdCBjdXJyZW50bHkgcmVh ZCBpbiwgd2UgcmUtcmVhZCBpdHMgaGVhZGVyLiAgKi8KQEAgLTQyODEsNyArNDI2Nyw3IEBAIGlu ZGV4IDE2MzgxZGUuLjMxYTdkODMgMTAwNjQ0CiAgICAgICAgc3RydWN0IGR3YXJmMl9wZXJfb2Jq ZmlsZSAqcGVyX29iamZpbGUKICAJPSBvYmpmaWxlX2RhdGEgKG9iamZpbGUsIGR3YXJmMl9vYmpm aWxlX2RhdGFfa2V5KTsKICAgICAgICBnZGJfYnl0ZSAqaW5mb19wdHIgPSBwZXJfb2JqZmlsZS0+ aW5mby5idWZmZXIgKyBwZXJfY3UtPm9mZnNldDsKLUBAIC0xMjA5Niw3ICsxMzMzMCw3IEBAIGR3 YXJmMl9wZXJfY3Vfb2Zmc2V0X3NpemUgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9j dSkKK0BAIC0xMjA5Miw3ICsxMzMyOCw3IEBAIGR3YXJmMl9wZXJfY3Vfb2Zmc2V0X3NpemUgKHN0 cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSkKICAgIGVsc2UKICAgICAgewogICAgICAg IC8qIElmIHRoZSBDVSBpcyBub3QgY3VycmVudGx5IHJlYWQgaW4sIHdlIHJlLXJlYWQgaXRzIGhl YWRlci4gICovCkBAIC00MjkwLDcgKzQyNzYsNyBAQCBpbmRleCAxNjM4MWRlLi4zMWE3ZDgzIDEw MDY0NAogICAgICAgIHN0cnVjdCBkd2FyZjJfcGVyX29iamZpbGUgKnBlcl9vYmpmaWxlCiAgCT0g b2JqZmlsZV9kYXRhIChvYmpmaWxlLCBkd2FyZjJfb2JqZmlsZV9kYXRhX2tleSk7CiAgICAgICAg Z2RiX2J5dGUgKmluZm9fcHRyID0gcGVyX29iamZpbGUtPmluZm8uYnVmZmVyICsgcGVyX2N1LT5v ZmZzZXQ7Ci1AQCAtMTIxMTYsNyArMTMzNTAsNyBAQCBkd2FyZjJfcGVyX2N1X29mZnNldF9zaXpl IChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UpCitAQCAtMTIxMTIsNyArMTMzNDgs NyBAQCBkd2FyZjJfcGVyX2N1X29mZnNldF9zaXplIChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRh ICpwZXJfY3UpCiAgQ09SRV9BRERSCiAgZHdhcmYyX3Blcl9jdV90ZXh0X29mZnNldCAoc3RydWN0 IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1KQogIHsKQEAgLTQyOTksNyArNDI4NSw3IEBAIGlu ZGV4IDE2MzgxZGUuLjMxYTdkODMgMTAwNjQ0CiAgCiAgICByZXR1cm4gQU5PRkZTRVQgKG9iamZp bGUtPnNlY3Rpb25fb2Zmc2V0cywgU0VDVF9PRkZfVEVYVCAob2JqZmlsZSkpOwogIH0KLUBAIC0x MjMzOCw2ICsxMzU3MiwzMCBAQCBkd2FyZjJfZnJlZV9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSkKK0BAIC0xMjMzNCw2ICsxMzU3MCwzMCBAQCBkd2FyZjJfZnJlZV9vYmpmaWxlIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKICAgIC8qIENhY2hlZCBESUUgdHJlZXMgdXNlIHhtYWxs b2MgYW5kIHRoZSBjb21wX3VuaXRfb2JzdGFjay4gICovCiAgICBmcmVlX2NhY2hlZF9jb21wX3Vu aXRzIChOVUxMKTsKICAKQEAgLTQzMzAsNyArNDMxNiw3IEBAIGluZGV4IDE2MzgxZGUuLjMxYTdk ODMgMTAwNjQ0CiAgICAvKiBFdmVyeXRoaW5nIGVsc2Ugc2hvdWxkIGJlIG9uIHRoZSBvYmpmaWxl IG9ic3RhY2suICAqLwogIH0KICAKLUBAIC0xMjM3Miw2ICsxMzYzMCwzMSBAQCBvZmZzZXRfYW5k X3R5cGVfZXEgKGNvbnN0IHZvaWQgKml0ZW1fbGhzLCBjb25zdCB2b2lkICppdGVtX3JocykKK0BA IC0xMjM2OCw2ICsxMzYyOCwzMSBAQCBvZmZzZXRfYW5kX3R5cGVfZXEgKGNvbnN0IHZvaWQgKml0 ZW1fbGhzLCBjb25zdCB2b2lkICppdGVtX3JocykKICAgIHJldHVybiBvZnNfbGhzLT5vZmZzZXQg PT0gb2ZzX3Jocy0+b2Zmc2V0OwogIH0KICAKQEAgLTQzNjIsNyArNDM0OCw3IEBAIGluZGV4IDE2 MzgxZGUuLjMxYTdkODMgMTAwNjQ0CiAgLyogU2V0IHRoZSB0eXBlIGFzc29jaWF0ZWQgd2l0aCBE SUUgdG8gVFlQRS4gIFNhdmUgaXQgaW4gQ1UncyBoYXNoCiAgICAgdGFibGUgaWYgbmVjZXNzYXJ5 LiAgRm9yIGNvbnZlbmllbmNlLCByZXR1cm4gVFlQRS4KICAKLUBAIC0xMjM5NSw2ICsxMzY3OCw4 IEBAIHNldF9kaWVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBl LCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC0xMjM5MSw2ICsxMzY3Niw4IEBAIHNldF9kaWVf dHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdh cmYyX2N1ICpjdSkKICB7CiAgICBzdHJ1Y3QgZHdhcmYyX29mZnNldF9hbmRfdHlwZSAqKnNsb3Qs IG9mczsKICAKQEAgLTQzNzEsOCArNDM1Nyw4IEBAIGluZGV4IDE2MzgxZGUuLjMxYTdkODMgMTAw NjQ0CiAgICAvKiBGb3IgQWRhIHR5cGVzLCBtYWtlIHN1cmUgdGhhdCB0aGUgZ25hdC1zcGVjaWZp YyBkYXRhIGlzIGFsd2F5cwogICAgICAgaW5pdGlhbGl6ZWQgKGlmIG5vdCBhbHJlYWR5IHNldCku ICBUaGVyZSBhcmUgYSBmZXcgdHlwZXMgd2hlcmUKICAgICAgIHdlIHNob3VsZCBub3QgYmUgZG9p bmcgc28sIGJlY2F1c2UgdGhlIHR5cGUtc3BlY2lmaWMgYXJlYSBpcwotQEAgLTEyNTkyLDggKzEz ODc3LDU2NyBAQCBkd2FyZjJfcGVyX29iamZpbGVfZnJlZSAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUsIHZvaWQgKmQpCi0gICBtdW5tYXBfc2VjdGlvbl9idWZmZXIgKCZkYXRhLT5sb2MpOworQEAg LTEyNTkxLDggKzEzODc4LDU2NyBAQCBkd2FyZjJfcGVyX29iamZpbGVfZnJlZSAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUsIHZvaWQgKmQpCisgICBtdW5tYXBfc2VjdGlvbl9idWZmZXIgKCZkYXRh LT50eXBlcyk7CiAgICBtdW5tYXBfc2VjdGlvbl9idWZmZXIgKCZkYXRhLT5mcmFtZSk7CiAgICBt dW5tYXBfc2VjdGlvbl9idWZmZXIgKCZkYXRhLT5laF9mcmFtZSk7CiArICBtdW5tYXBfc2VjdGlv bl9idWZmZXIgKCZkYXRhLT5nZGJfaW5kZXgpOwpAQCAtNDUzNyw4ICs0NTIzLDggQEAgaW5kZXgg MTYzODFkZS4uMzFhN2Q4MyAxMDA2NDQKICsJcmV0dXJuICZzeW10YWItPmRhdGFbaW5kZXhdOwog KyAgICAgIGluZGV4ID0gKGluZGV4ICsgc3RlcCkgJiAoc3ltdGFiLT5zaXplIC0gMSk7CiArICAg IH0KLSt9Ci0rCisgfQorIAogKy8qIEV4cGFuZCBTWU1UQUIncyBoYXNoIHRhYmxlLiAgKi8KICtz dGF0aWMgdm9pZAogK2hhc2hfZXhwYW5kIChzdHJ1Y3QgbWFwcGVkX3N5bXRhYiAqc3ltdGFiKQpA QCAtNDkwNyw3ICs0ODkzLDcgQEAgaW5kZXggMTYzODFkZS4uMzFhN2Q4MyAxMDA2NDQKICsgIHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlOwogKwogKyAgaWYgKCFhcmcgfHwgISphcmcpCi0rICAgIGVy cm9yIChfKCJ1c2FnZTogbWFpbnRlbmFuY2Ugc2F2ZS1nZGItaW5kZXggRElSRUNUT1JZIikpOwor KyAgICBlcnJvciAoXygidXNhZ2U6IHNhdmUgZ2RiLWluZGV4IERJUkVDVE9SWSIpKTsKICsKICsg IEFMTF9PQkpGSUxFUyAob2JqZmlsZSkKICsgIHsKQEAgLTQ5MzIsMjEgKzQ5MTgsMzEgQEAgaW5k ZXggMTYzODFkZS4uMzFhN2Q4MyAxMDA2NDQKICsJCQkgICAgIG9iamZpbGUtPm5hbWUpOwogKyAg ICAgIH0KICsgIH0KLSB9Ci0gCisrfQorKwogKwwKICsKICBpbnQgZHdhcmYyX2Fsd2F5c19kaXNh c3NlbWJsZTsKICAKICBzdGF0aWMgdm9pZAotQEAgLTEyNjU3LDQgKzE0NTAxLDggQEAgVGhlIHZh bHVlIGlzIHRoZSBtYXhpbXVtIGRlcHRoIHRvIHByaW50LiIpLAorQEAgLTEyNjA5LDYgKzE0NDU1 LDggQEAgdm9pZCBfaW5pdGlhbGl6ZV9kd2FyZjJfcmVhZCAodm9pZCk7Cisgdm9pZAorIF9pbml0 aWFsaXplX2R3YXJmMl9yZWFkICh2b2lkKQorIHsKKysgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50 ICpjOworKworICAgZHdhcmYyX29iamZpbGVfZGF0YV9rZXkKKyAgICAgPSByZWdpc3Rlcl9vYmpm aWxlX2RhdGFfd2l0aF9jbGVhbnVwIChOVUxMLCBkd2FyZjJfcGVyX29iamZpbGVfZnJlZSk7Cisg CitAQCAtMTI2NTYsNCArMTQ1MDQsOSBAQCBUaGUgdmFsdWUgaXMgdGhlIG1heGltdW0gZGVwdGgg dG8gcHJpbnQuIiksCiAgCQkJICAgIE5VTEwsCiAgCQkJICAgIE5VTEwsCiAgCQkJICAgICZzZXRk ZWJ1Z2xpc3QsICZzaG93ZGVidWdsaXN0KTsKICsKLSsgIGFkZF9jbWQgKCJnZGItaW5kZXgiLCBj bGFzc19maWxlcywgc2F2ZV9nZGJfaW5kZXhfY29tbWFuZCwKLSsJICAgXygiU2F2ZSBhIC5nZGIt aW5kZXggZmlsZSIpLAotKwkgICAmc2F2ZV9jbWRsaXN0KTsKKysgIGMgPSBhZGRfY21kICgiZ2Ri LWluZGV4IiwgY2xhc3NfZmlsZXMsIHNhdmVfZ2RiX2luZGV4X2NvbW1hbmQsCisrCSAgICAgICBf KCJTYXZlIGEgLmdkYi1pbmRleCBmaWxlIiksCisrCSAgICAgICAmc2F2ZV9jbWRsaXN0KTsKKysg IHNldF9jbWRfY29tcGxldGVyIChjLCBmaWxlbmFtZV9jb21wbGV0ZXIpOwogIH0KIGRpZmYgLS1n aXQgYS9nZGIvZWxmcmVhZC5jIGIvZ2RiL2VsZnJlYWQuYwogaW5kZXggOGMwMDkzOC4uYTI1MGM1 OCAxMDA2NDQKQEAgLTYxMTMsNyArNjEwOSw3IEBAIGluZGV4IGUwY2ExMmMuLmRlNjMxMWEgMTAw NjQ0CiAgICBlbHNlCiAgICAgIHsKIGRpZmYgLS1naXQgYS9nZGIvZ2RiY21kLmggYi9nZGIvZ2Ri Y21kLmgKLWluZGV4IDZhMjMwYzAuLmQ4N2E4MTMgMTAwNjQ0CitpbmRleCA3ODE1MWRkLi5kYTEx Njg2IDEwMDY0NAogLS0tIGEvZ2RiL2dkYmNtZC5oCiArKysgYi9nZGIvZ2RiY21kLmgKIEBAIC0x MjQsNiArMTI0LDEwIEBAIGV4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqc2V0Y2hlY2ts aXN0OwpAQCAtNjEyNSw4ICs2MTIxLDggQEAgaW5kZXggNmEyMzBjMC4uZDg3YTgxMyAxMDA2NDQK ICtleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKnNhdmVfY21kbGlzdDsKICsKICBleHRl cm4gdm9pZCBleGVjdXRlX2NvbW1hbmQgKGNoYXIgKiwgaW50KTsKKyBleHRlcm4gY2hhciAqZXhl Y3V0ZV9jb21tYW5kX3RvX3N0cmluZyAoY2hhciAqcCwgaW50IGZyb21fdHR5KTsKICAKLSBlbnVt IGNvbW1hbmRfY29udHJvbF90eXBlIGV4ZWN1dGVfY29udHJvbF9jb21tYW5kIChzdHJ1Y3QgY29t bWFuZF9saW5lICopOwogZGlmZiAtLWdpdCBhL2dkYi9nZGJpbml0LmluIGIvZ2RiL2dkYmluaXQu aW4KIGluZGV4IGZmYjdmNTMuLmEyZTdlOTQgMTAwNjQ0CiAtLS0gYS9nZGIvZ2RiaW5pdC5pbgpA QCAtNzcwOCw3ICs3NzA0LDcgQEAgaW5kZXggNWFiZWM2OC4uZTMwOTI3NyAxMDA2NDQKICAKICBl eHRlcm4gdm9pZCBub3RpY2VfbmV3X2luZmVyaW9yIChwdGlkX3QsIGludCwgaW50KTsKIGRpZmYg LS1naXQgYS9nZGIvaW5mcnVuLmMgYi9nZGIvaW5mcnVuLmMKLWluZGV4IDU3ZjJhYjguLjU3NjJh N2YgMTAwNjQ0CitpbmRleCA1NGIxZDlmLi41OGQwNDVhIDEwMDY0NAogLS0tIGEvZ2RiL2luZnJ1 bi5jCiArKysgYi9nZGIvaW5mcnVuLmMKIEBAIC00NSw2ICs0NSw4IEBACkBAIC04NTkyLDcgKzg1 ODgsNyBAQCBpbmRleCBiYjc5YWUxLi5mYmJkNjAwIDEwMDY0NAogKwogICNlbmRpZiAvKiBQQVJT RVJfREVGU19IICovCiBkaWZmIC0tZ2l0IGEvZ2RiL3BwYy1saW51eC1uYXQuYyBiL2dkYi9wcGMt bGludXgtbmF0LmMKLWluZGV4IGU4ZDk2ZjYuLjhiZjA5N2MgMTAwNjQ0CitpbmRleCAxOGRkZWU3 Li42NTJiMDJhIDEwMDY0NAogLS0tIGEvZ2RiL3BwYy1saW51eC1uYXQuYwogKysrIGIvZ2RiL3Bw Yy1saW51eC1uYXQuYwogQEAgLTIwMTAsNiArMjAxMCwyNCBAQCBwcGNfbGludXhfcmVtb3ZlX3dh dGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgcncsCkBAIC04Njc1LDcgKzg2 NzEsNyBAQCBpbmRleCA1ZmZhMDk5Li41OGQ5Yzc5IDEwMDY0NAogKyAgb2JzZXJ2ZXJfYXR0YWNo X21hcmtfdXNlZCAocHJpbnRfdHlwZXNfbWFya191c2VkKTsKICB9CiBkaWZmIC0tZ2l0IGEvZ2Ri L3BzeW10YWIuYyBiL2dkYi9wc3ltdGFiLmMKLWluZGV4IDM2N2NmMWUuLmMxMjA4OTQgMTAwNjQ0 CitpbmRleCA5N2E0ZWVjLi5mY2UxOWM5IDEwMDY0NAogLS0tIGEvZ2RiL3BzeW10YWIuYwogKysr IGIvZ2RiL3BzeW10YWIuYwogQEAgLTQyMSw2ICs0MjEsMTQgQEAgbG9va3VwX3N5bWJvbF9hdXhf cHN5bXRhYnMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLApAQCAtMTAzNDEsNyArMTAzMzcsNyBA QCBpbmRleCAyYjhkMzAxLi4wYWY5OWM4IDEwMDY0NAogIAogIGV4dGVybiBQeU9iamVjdCAqZ2Ri cHlfZ2RiZXJyb3JfZXhjOwogZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHl0aG9uLmMgYi9nZGIv cHl0aG9uL3B5dGhvbi5jCi1pbmRleCA2NjgwMTI2Li4yZWVlMzFmIDEwMDY0NAoraW5kZXggNzM0 NmZiYS4uMzQ3MDhjNCAxMDA2NDQKIC0tLSBhL2dkYi9weXRob24vcHl0aG9uLmMKICsrKyBiL2dk Yi9weXRob24vcHl0aG9uLmMKIEBAIC0yOCw2ICsyOCw3IEBACkBAIC0xMDM3MCw3ICsxMDM2Niw3 IEBAIGluZGV4IDY2ODAxMjYuLjJlZWUzMWYgMTAwNjQ0CiAgCiAgc3RhdGljIFB5TWV0aG9kRGVm IEdkYk1ldGhvZHNbXTsKICAKLUBAIC00MTMsNiArNDIxLDEwNSBAQCBleGVjdXRlX2dkYl9jb21t YW5kIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKK0BAIC0z NzQsNiArMzgyLDEwNSBAQCBleGVjdXRlX2dkYl9jb21tYW5kIChQeU9iamVjdCAqc2VsZiwgUHlP YmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKICAgIFB5X1JFVFVSTl9OT05FOwogIH0KICAKQEAg LTEwNDc2LDcgKzEwNDcyLDcgQEAgaW5kZXggNjY4MDEyNi4uMmVlZTMxZiAxMDA2NDQKICAvKiBQ YXJzZSBhIHN0cmluZyBhbmQgZXZhbHVhdGUgaXQgYXMgYW4gZXhwcmVzc2lvbi4gICovCiAgc3Rh dGljIFB5T2JqZWN0ICoKICBnZGJweV9wYXJzZV9hbmRfZXZhbCAoUHlPYmplY3QgKnNlbGYsIFB5 T2JqZWN0ICphcmdzKQotQEAgLTQ1Myw2ICs1NjAsMTE0IEBAIHNvdXJjZV9weXRob25fc2NyaXB0 IChGSUxFICpzdHJlYW0sIGNvbnN0IGNoYXIgKmZpbGUpCitAQCAtNDE0LDYgKzUyMSwxMTQgQEAg c291cmNlX3B5dGhvbl9zY3JpcHQgKEZJTEUgKnN0cmVhbSwgY29uc3QgY2hhciAqZmlsZSkKICAK ICAMCiAgCkBAIC0xMDU5MSw3ICsxMDU4Nyw3IEBAIGluZGV4IDY2ODAxMjYuLjJlZWUzMWYgMTAw NjQ0CiAgLyogUHJpbnRpbmcuICAqLwogIAogIC8qIEEgcHl0aG9uIGZ1bmN0aW9uIHRvIHdyaXRl IGEgc2luZ2xlIHN0cmluZyB1c2luZyBnZGIncyBmaWx0ZXJlZAotQEAgLTQ5OCw2ICs3MTMsNTMg QEAgZ2RicHlfcHJpbnRfc3RhY2sgKHZvaWQpCitAQCAtNDU5LDYgKzY3NCw1MyBAQCBnZGJweV9w cmludF9zdGFjayAodm9pZCkKICAKICAvKiBSZXR1cm4gdGhlIGN1cnJlbnQgUHJvZ3NwYWNlLgog ICAgIFRoZXJlIGFsd2F5cyBpcyBvbmUuICAqLwpAQCAtMTA2NDUsNyArMTA2NDEsNyBAQCBpbmRl eCA2NjgwMTI2Li4yZWVlMzFmIDEwMDY0NAogIAogIHN0YXRpYyBQeU9iamVjdCAqCiAgZ2RicHlf Z2V0X2N1cnJlbnRfcHJvZ3NwYWNlIChQeU9iamVjdCAqdW51c2VkMSwgUHlPYmplY3QgKnVudXNl ZDIpCi1AQCAtNzU5LDYgKzEwMjEsNyBAQCBFbmFibGVzIG9yIGRpc2FibGVzIHByaW50aW5nIG9m IFB5dGhvbiBzdGFjayB0cmFjZXMuIiksCitAQCAtNzIwLDYgKzk4Miw3IEBAIEVuYWJsZXMgb3Ig ZGlzYWJsZXMgcHJpbnRpbmcgb2YgUHl0aG9uIHN0YWNrIHRyYWNlcy4iKSwKICAgIGdkYnB5X2lu aXRpYWxpemVfbGF6eV9zdHJpbmcgKCk7CiAgICBnZGJweV9pbml0aWFsaXplX3RocmVhZCAoKTsK ICAgIGdkYnB5X2luaXRpYWxpemVfaW5mZXJpb3IgKCk7CkBAIC0xMDY1Myw3ICsxMDY0OSw3IEBA IGluZGV4IDY2ODAxMjYuLjJlZWUzMWYgMTAwNjQ0CiAgCiAgICBQeVJ1bl9TaW1wbGVTdHJpbmcg KCJpbXBvcnQgZ2RiIik7CiAgICBQeVJ1bl9TaW1wbGVTdHJpbmcgKCJnZGIucHJldHR5X3ByaW50 ZXJzID0gW10iKTsKLUBAIC04MjYsNiArMTA4OSw4IEBAIHN0YXRpYyBQeU1ldGhvZERlZiBHZGJN ZXRob2RzW10gPQorQEAgLTc4Nyw2ICsxMDUwLDggQEAgc3RhdGljIFB5TWV0aG9kRGVmIEdkYk1l dGhvZHNbXSA9CiAgICAgICJHZXQgYSB2YWx1ZSBmcm9tIGhpc3RvcnkiIH0sCiAgICB7ICJleGVj dXRlIiwgKFB5Q0Z1bmN0aW9uKSBleGVjdXRlX2dkYl9jb21tYW5kLCBNRVRIX1ZBUkFSR1MgfCBN RVRIX0tFWVdPUkRTLAogICAgICAiRXhlY3V0ZSBhIGdkYiBjb21tYW5kIiB9LApAQCAtMTA2NjIs MTMgKzEwNjU4LDEzIEBAIGluZGV4IDY2ODAxMjYuLjJlZWUzMWYgMTAwNjQ0CiAgICB7ICJwYXJh bWV0ZXIiLCBnZGJweV9wYXJhbWV0ZXIsIE1FVEhfVkFSQVJHUywKICAgICAgIlJldHVybiBhIGdk YiBwYXJhbWV0ZXIncyB2YWx1ZSIgfSwKICAKLUBAIC04NjQsMTEgKzExMjksMjEgQEAgYSBib29s ZWFuIGluZGljYXRpbmcgaWYgbmFtZSBpcyBhIGZpZWxkIG9mIHRoZSBjdXJyZW50IGltcGxpZWQg YXJndW1lbnRcblwKK0BAIC04MjUsMTEgKzEwOTAsMjEgQEAgYSBib29sZWFuIGluZGljYXRpbmcg aWYgbmFtZSBpcyBhIGZpZWxkIG9mIHRoZSBjdXJyZW50IGltcGxpZWQgYXJndW1lbnRcblwKICBg dGhpcycgKHdoZW4gdGhlIGN1cnJlbnQgbGFuZ3VhZ2UgaXMgb2JqZWN0LW9yaWVudGVkKS4iIH0s CiAgICB7ICJibG9ja19mb3JfcGMiLCBnZGJweV9ibG9ja19mb3JfcGMsIE1FVEhfVkFSQVJHUywK ICAgICAgIlJldHVybiB0aGUgYmxvY2sgY29udGFpbmluZyB0aGUgZ2l2ZW4gcGMgdmFsdWUsIG9y IE5vbmUuIiB9LAotKyAgeyAic29saWJfYWRkcmVzcyAoTG9uZykgLT4gU3RyaW5nLlxuXAorKyAg eyAic29saWJfYWRkcmVzcyIsIGdkYnB5X3NvbGliX2FkZHJlc3MsIE1FVEhfVkFSQVJHUywKKysg ICAgInNvbGliX2FkZHJlc3MgKExvbmcpIC0+IFN0cmluZy5cblwKICtSZXR1cm4gdGhlIG5hbWUg b2YgdGhlIHNoYXJlZCBsaWJyYXJ5IGhvbGRpbmcgYSBnaXZlbiBhZGRyZXNzLCBvciBOb25lLiIg fSwKLSsKICsgIHsgImRlY29kZV9saW5lIiwgZ2RicHlfZGVjb2RlX2xpbmUsIE1FVEhfVkFSQVJH UywKICsgICAgIkRlY29kZSBhIHN0cmluZyBhcmd1bWVudCB0aGUgd2F5IHRoYXQgJ2JyZWFrJyBv ciAnZWRpdCcgZG9lcy5cblwKICtSZXR1cm4gYSB0dXBsZSBob2xkaW5nIHRoZSBmaWxlIG5hbWUg KG9yIE5vbmUpIGFuZCBsaW5lIG51bWJlciAob3IgTm9uZSkuXG5cCkBAIC0xMDcxMiw3ICsxMDcw OCw3IEBAIGluZGV4IDFmMTM1ZDQuLjQ4OTgzOGQgMTAwNjQ0CiAgCiAgLyogR2l2ZW4gYW4gZXhl Y3V0YWJsZSdzIEFCRkQgYW5kIHRhcmdldCwgY29tcHV0ZSB0aGUgZW50cnktcG9pbnQKIGRpZmYg LS1naXQgYS9nZGIvc3ltZmlsZS5jIGIvZ2RiL3N5bWZpbGUuYwotaW5kZXggYWI1MWZhNC4uYmFi ZTljZiAxMDA2NDQKK2luZGV4IDQyZjdhZTMuLjM3MWRiMGQgMTAwNjQ0CiAtLS0gYS9nZGIvc3lt ZmlsZS5jCiArKysgYi9nZGIvc3ltZmlsZS5jCiBAQCAtMTA1OSw2ICsxMDU5LDkgQEAgc3ltYm9s X2ZpbGVfYWRkX3dpdGhfYWRkcnNfb3Jfb2Zmc2V0cyAoYmZkICphYmZkLApAQCAtMTA3MzQsNyAr MTA3MzAsNyBAQCBpbmRleCBhYjUxZmE0Li5iYWJlOWNmIDEwMDY0NAogICAgICB7CiAgICAgICAg aWYgKGZyb21fdHR5IHx8IGluZm9fdmVyYm9zZSkKICAJewotQEAgLTE1MzUsNyArMTUzOCw3IEBA IHN5bWJvbF9maWxlX2NvbW1hbmQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKK0BAIC0xNTMz LDcgKzE1MzYsNyBAQCBzeW1ib2xfZmlsZV9jb21tYW5kIChjaGFyICphcmdzLCBpbnQgZnJvbV90 dHkpCiAgdm9pZAogIHNldF9pbml0aWFsX2xhbmd1YWdlICh2b2lkKQogIHsKQEAgLTEwNzQzLDcg KzEwNzM5LDcgQEAgaW5kZXggYWI1MWZhNC4uYmFiZTljZiAxMDA2NDQKICAgIGVudW0gbGFuZ3Vh Z2UgbGFuZyA9IGxhbmd1YWdlX3Vua25vd247CiAgCiAgICBmaWxlbmFtZSA9IGZpbmRfbWFpbl9m aWxlbmFtZSAoKTsKLUBAIC0yNjYyLDcgKzI2NjUsNyBAQCBpbml0X2ZpbGVuYW1lX2xhbmd1YWdl X3RhYmxlICh2b2lkKQorQEAgLTI2NjAsNyArMjY2Myw3IEBAIGluaXRfZmlsZW5hbWVfbGFuZ3Vh Z2VfdGFibGUgKHZvaWQpCiAgfQogIAogIGVudW0gbGFuZ3VhZ2UKQEAgLTEwODA0LDcgKzEwODAw LDcgQEAgaW5kZXggNjJlNmI5Ny4uMDBkYzYxMyAxMDA2NDQKICAJICBtc190eXBlID0gJ1MnOwog IAkgIGJyZWFrOwogZGlmZiAtLWdpdCBhL2dkYi9zeW10YWIuYyBiL2dkYi9zeW10YWIuYwotaW5k ZXggOTQ3MmMyNC4uYzNiMTc5MiAxMDA2NDQKK2luZGV4IDJjNGM5ZTQuLjI4ZjA0NTAgMTAwNjQ0 CiAtLS0gYS9nZGIvc3ltdGFiLmMKICsrKyBiL2dkYi9zeW10YWIuYwogQEAgLTEyOTUsMTYgKzEy OTUsMjUgQEAgbG9va3VwX3N5bWJvbF9hdXhfc3ltdGFicyAoaW50IGJsb2NrX2luZGV4LCBjb25z dCBjaGFyICpuYW1lLApAQCAtMTA5NzMsNyArMTA5NjksNyBAQCBpbmRleCBiZWRjMTBhLi5kYzI4 NGU0IDEwMDY0NAogIC8qIHN5bXRhYi5jICovCiAgCiBkaWZmIC0tZ2l0IGEvZ2RiL3RhcmdldC5j IGIvZ2RiL3RhcmdldC5jCi1pbmRleCA4NjJkZjRlLi5hOGYxYmRkIDEwMDY0NAoraW5kZXggNGNh YmNiZC4uMzRiM2I2MCAxMDA2NDQKIC0tLSBhL2dkYi90YXJnZXQuYwogKysrIGIvZ2RiL3Rhcmdl dC5jCiBAQCAtMTIzLDYgKzEyMyw4IEBAIHN0YXRpYyBpbnQgZGVidWdfdG9faW5zZXJ0X3dhdGNo cG9pbnQgKENPUkVfQUREUiwgaW50LCBpbnQsCkBAIC0xMTAwMyw3ICsxMDk5OSw3IEBAIGluZGV4 IDg2MmRmNGUuLmE4ZjFiZGQgMTAwNjQ0CiAgICBkZV9mYXVsdCAodG9fc3RvcHBlZF9ieV93YXRj aHBvaW50LAogIAkgICAgKGludCAoKikgKHZvaWQpKQogIAkgICAgcmV0dXJuX3plcm8pOwotQEAg LTM0NDEsNiArMzQ0NywxOSBAQCBkZWJ1Z190b19yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERS IGFkZHIsIGludCBsZW4sIGludCB0eXBlLAorQEAgLTM0NDAsNiArMzQ0NiwxOSBAQCBkZWJ1Z190 b19yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlLAog ICAgcmV0dXJuIHJldHZhbDsKICB9CiAgCkBAIC0xMTAyMyw3ICsxMTAxOSw3IEBAIGluZGV4IDg2 MmRmNGUuLmE4ZjFiZGQgMTAwNjQ0CiAgc3RhdGljIHZvaWQKICBkZWJ1Z190b190ZXJtaW5hbF9p bml0ICh2b2lkKQogIHsKLUBAIC0zNjg4LDYgKzM3MDcsNyBAQCBzZXR1cF90YXJnZXRfZGVidWcg KHZvaWQpCitAQCAtMzY4Nyw2ICszNzA2LDcgQEAgc2V0dXBfdGFyZ2V0X2RlYnVnICh2b2lkKQog ICAgY3VycmVudF90YXJnZXQudG9fcmVtb3ZlX2h3X2JyZWFrcG9pbnQgPSBkZWJ1Z190b19yZW1v dmVfaHdfYnJlYWtwb2ludDsKICAgIGN1cnJlbnRfdGFyZ2V0LnRvX2luc2VydF93YXRjaHBvaW50 ID0gZGVidWdfdG9faW5zZXJ0X3dhdGNocG9pbnQ7CiAgICBjdXJyZW50X3RhcmdldC50b19yZW1v dmVfd2F0Y2hwb2ludCA9IGRlYnVnX3RvX3JlbW92ZV93YXRjaHBvaW50OwpAQCAtMTQyMTAsNyAr MTQyMDYsNyBAQCBpbmRleCAwMDAwMDAwLi4yMjZkYzVkCiArICBjYWxsIGZvbyAoZywgaCkKICtl bmQKIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAotaW5kZXggMWFlZDI1Mi4uNTkzYWE1NSAx MDA2NDQKK2luZGV4IGZjOGJjY2MuLmUwNTM4MTMgMTAwNjQ0CiAtLS0gYS9nZGIvdGVzdHN1aXRl L2dkYi5nZGIvc2VsZnRlc3QuZXhwCiArKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRl c3QuZXhwCiBAQCAtOTIsNiArOTIsMTAgQEAgcHJvYyBkb19zdGVwc19hbmRfbmV4dHMge30gewpA QCAtMTQ4NDYsNiArMTQ4NDIsMzYgQEAgaW5kZXggYTI0YmMxMS4uZTMwNDNiYyAxMDA2NDQKICAK ICAjIFRoZSBmb2xsb3dpbmcgdGVzdCByZWNvbXBpbGVzIHRoZSBiaW5hcnkgdG8gdGVzdCBlaXRo ZXIgQyBvciBDKysKICAjIHZhbHVlcy4gCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu cHl0aG9uL3JoNjM0MTA4LXNvbGliX2FkZHJlc3MuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0 aG9uL3JoNjM0MTA4LXNvbGliX2FkZHJlc3MuZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5k ZXggMDAwMDAwMC4uNzAzMTlmZgorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIucHl0aG9uL3JoNjM0MTA4LXNvbGliX2FkZHJlc3MuZXhwCitAQCAtMCwwICsxLDI0IEBACisr IyBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisr IyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworKyMgaHR0cHM6Ly9i dWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD02MzQxMDgKKysKKytnZGJfZXhpdAor K2dkYl9zdGFydAorKworKyMgU2tpcCBhbGwgdGVzdHMgaWYgUHl0aG9uIHNjcmlwdGluZyBpcyBu b3QgZW5hYmxlZC4KKytpZiB7IFtza2lwX3B5dGhvbl90ZXN0c10gfSB7IGNvbnRpbnVlIH0KKysK KytnZGJfdGVzdCAicHl0aG9uIHByaW50IGdkYi5zb2xpYl9hZGRyZXNzKC0xKSIgIk5vbmUiICJn ZGIuc29saWJfYWRkcmVzcyBleGlzdHMiCiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu dGhyZWFkcy93YXRjaHBvaW50LWZvcmstZm9ya29mZi5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhy ZWFkcy93YXRjaHBvaW50LWZvcmstZm9ya29mZi5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAogaW5k ZXggMDAwMDAwMC4uNGRjMzA4YgpAQCAtMTUzOTAsNyArMTU0MTYsNyBAQCBpbmRleCAwMDAwMDAw Li4xZGM5M2FiCiArICAgIHRlc3QgY2hpbGQgRk9MTE9XX0NISUxECiArfQogZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAgYi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCi1p bmRleCBiNWIzMzYyLi5kOTE2ZTk0IDEwMDY0NAoraW5kZXggMjBlMmZiNy4uYjI3ZDI1YyAxMDA2 NDQKIC0tLSBhL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKICsrKyBiL2dkYi90ZXN0c3VpdGUv bGliL2dkYi5leHAKIEBAIC0yNyw2ICsyNyw3IEBAIGlmIHskdG9vbCA9PSAiIn0gewpAQCAtMTU0 OTYsNyArMTU1MjIsNyBAQCBpbmRleCAwMDAwMDAwLi5iOGU5ODM2CiArICAgIHJldHVybiAwCiAr fQogZGlmZiAtLWdpdCBhL2dkYi90aHJlYWQuYyBiL2dkYi90aHJlYWQuYwotaW5kZXggMmZkYzdm OS4uMmE1ZDBmMSAxMDA2NDQKK2luZGV4IDBiMjkxYmEuLmFlM2U0ZmYgMTAwNjQ0CiAtLS0gYS9n ZGIvdGhyZWFkLmMKICsrKyBiL2dkYi90aHJlYWQuYwogQEAgLTkwLDYgKzkwLDE2IEBAIGRlbGV0 ZV9zdGVwX3Jlc3VtZV9icmVha3BvaW50IChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwKQpAQCAtMTU1 MzAsNyArMTU1NTYsNyBAQCBpbmRleCAyZmRjN2Y5Li4yYTVkMGYxIDEwMDY0NAogIAogICAgZGlz Y2FyZF9hbGxfaW50ZXJtZWRpYXRlX2NvbnRpbnVhdGlvbnNfdGhyZWFkICh0cCk7CiBkaWZmIC0t Z2l0IGEvZ2RiL3RvcC5jIGIvZ2RiL3RvcC5jCi1pbmRleCA5MzQ0N2ZlLi5kNjg3NWE3IDEwMDY0 NAoraW5kZXggYjI5ZTY4ZC4uOGVkYWM3MCAxMDA2NDQKIC0tLSBhL2dkYi90b3AuYwogKysrIGIv Z2RiL3RvcC5jCiBAQCAtMzM3LDYgKzMzNyw3IEBAIHZvaWQKCmRpZmYgLS1naXQgYS9nZGItYno1 NTUwNzYtZ2NvcmUtc21hbGwtaGVpZ2h0LnBhdGNoIGIvZ2RiLWJ6NTU1MDc2LWdjb3JlLXNtYWxs LWhlaWdodC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hY2FkNjZi Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWJ6NTU1MDc2LWdjb3JlLXNtYWxsLWhlaWdodC5wYXRj aApAQCAtMCwwICsxLDEyIEBACistLS0gYS9nZGIvZ2RiX2djb3JlLnNoCisrKysgYi9nZGIvZ2Ri X2djb3JlLnNoCitAQCAtNjQsNiArNjQsOSBAQCBmb3IgcGlkIGluICQqCisgZG8KKyAJIyBXcml0 ZSBnZGIgc2NyaXB0IGZvciBwaWQgJHBpZC4gIAorIAljYXQgPj4kdG1wZmlsZSA8PEVPRgorK3Nl dCBwYWdpbmF0aW9uIG9mZgorK3NldCB3aWR0aCAwCisrc2V0IGhlaWdodCAwCisgYXR0YWNoICRw aWQKKyBnY29yZSAkbmFtZS4kcGlkCisgZGV0YWNoCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NTY4MjQ4 LW9vbS1pcy1lcnJvci5wYXRjaCBiL2dkYi1iejU2ODI0OC1vb20taXMtZXJyb3IucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmFhZjUyMgotLS0gL2Rldi9udWxsCisr KyBiL2dkYi1iejU2ODI0OC1vb20taXMtZXJyb3IucGF0Y2gKQEAgLTAsMCArMSw2OSBAQAoraHR0 cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDYvbXNnMDAwMDUuaHRtbAor U3ViamVjdDogW3JmYyBwYXRjaF0gbm9tZW06IGludGVybmFsX2Vycm9yIC0+IGVycm9yCisKK0hp LAorCit1bmZvcnR1bmF0ZWx5IEkgc2VlIHRoaXMgcHJvYmxlbSByZXByb2R1Y2libGUgb25seSB3 aXRoIHRoZQorYXJjaGVyLWphbmtyYXRvY2h2aWwtdmxhIGJyYW5jaCAoVkxBID0gVmFyaWFibGUg TGVuZ3RoIEFycmF5cyAtIGNoYXJbdmFyXSkuCitPVE9IIHRoaXMgYnJhbmNoIEkgaG9wZWZ1bGx5 IHN1Ym1pdCBpbiBzb21lIGZvcm0gZm9yIEZTRiBHREIgbGF0ZXIuCisKK0luIHRoaXMgY2FzZSAo YSBnZW5lcmFsIHByb2JsZW0gYnV0IHRlc3RlZCBmb3IgZXhhbXBsZSBvbiBGZWRvcmEgMTMgaTY4 Nik6CisKK2ludAorbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICBjaGFyIGFbYXJn Y107CisgIHJldHVybiBhWzBdOworfQorCisoZ2RiKSBzdGFydAorKGdkYikgcHJpbnQgYQorLi4v Li4vZ2RiL3V0aWxzLmM6MTI1MTogaW50ZXJuYWwtZXJyb3I6IHZpcnR1YWwgbWVtb3J5IGV4aGF1 c3RlZDogY2FuJ3QgYWxsb2NhdGUgNDI5NDk1MTY4OSBieXRlcy4KKworSXQgaXMgYXBwYXJlbnRs eSBiZWNhdXNlIGJvdW5kYXJ5IGZvciB0aGUgdmFyaWFibGUgYGEnIGlzIG5vdCBpbml0aWFsaXpl ZAordGhlcmUuICBVc2VycyBub3RpY2UgaXQgZHVlIHRvIEVjbGlwc2UtQ0RUIHRyeWluZyB0byBh dXRvbWF0aWNhbGx5IGRpc3BsYXkgYWxsCit0aGUgbG9jYWwgdmFyaWFibGVzIG9uIGVhY2ggc3Rl cC4KKworCitBcHBhcmVudGwgbm8gcmVncmVzc2lvbnMgb24ge3g4Nl82NCx4ODZfNjQtbTMyLGk2 ODZ9LWZlZG9yYTEzLWxpbnV4LWdudS4KK0J1dCBpcyBhbm9uZSBhd2FyZSBvZiB0aGUgcmVhc29u cyB0byB1c2UgaW50ZXJuYWxfZXJyb3IgdGhlcmU/CitJIGZpbmQgc2ltcGxlIGVycm9yIGFzIGEg cGVyZmVjdGx5IHJlYXNvbmFibGUgdGhlcmUuCisoaGlzdG9yeSBvbmx5IHRyYWNrcyBpdCBzaW5j ZSB0aGUgaW5pdGlhbCBpbXBvcnQpCisKK0lJUkMgdGhpcyBpZGVhIGhhcyBiZWVuIGRpc2N1c3Nl ZCB3aXRoIFRvbSBUcm9tZXksIG5vdCBzdXJlIG9mIGl0cyBvcmlnaW4uCisKK0kgdW5kZXJzdGFu ZCBpdCBtYXkgYmUgb2ZmdG9waWMgZm9yIEZTRiBHREIgYnV0IGZyb20gc29tZSBHREIgY3Jhc2hl cyBJIGFtIG5vdAorc3VyZSBpZiBpdCBjYW4gaGFwcGVuIG9ubHkgZHVlIHRvIHRoZSBWTEEgdmFy aWFibGVzLgorCisKK1RoYW5rcywKK0phbgorCisKK2dkYi8KKzIwMTAtMDYtMDEgIEphbiBLcmF0 b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKwkgICAgVG9tIFRyb21leSAgPHRy b21leUByZWRoYXQuY29tPgorCisJKiB1dGlscy5jIChub21lbSk6IENoYW5nZSBpbnRlcm5hbF9l cnJvciB0byBlcnJvci4KKworLS0tIGEvZ2RiL3V0aWxzLmMKKysrKyBiL2dkYi91dGlscy5jCitA QCAtMTI2NSwxNSArMTI2NSw5IEBAIHZvaWQKKyBub21lbSAobG9uZyBzaXplKQorIHsKKyAgIGlm IChzaXplID4gMCkKKy0gICAgeworLSAgICAgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19M SU5FX18sCistCQkgICAgICBfKCJ2aXJ0dWFsIG1lbW9yeSBleGhhdXN0ZWQ6IGNhbid0IGFsbG9j YXRlICVsZCBieXRlcy4iKSwKKy0JCSAgICAgIHNpemUpOworLSAgICB9CisrICAgIGVycm9yIChf KCJ2aXJ0dWFsIG1lbW9yeSBleGhhdXN0ZWQ6IGNhbid0IGFsbG9jYXRlICVsZCBieXRlcy4iKSwg c2l6ZSk7CisgICBlbHNlCistICAgIHsKKy0gICAgICBpbnRlcm5hbF9lcnJvciAoX19GSUxFX18s IF9fTElORV9fLCBfKCJ2aXJ0dWFsIG1lbW9yeSBleGhhdXN0ZWQuIikpOworLSAgICB9CisrICAg IGVycm9yIChfKCJ2aXJ0dWFsIG1lbW9yeSBleGhhdXN0ZWQuIikpOworIH0KKyAKKyAvKiBUaGUg eG1hbGxvYygpIChsaWJpYmVydHkuaCkgZmFtaWx5IG9mIG1lbW9yeSBtYW5hZ2VtZW50IHJvdXRp bmVzLgorCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NTkyMDMxLXNpZ2luZm8tbG9zdC0xb2Y1LnBhdGNo IGIvZ2RiLWJ6NTkyMDMxLXNpZ2luZm8tbG9zdC0xb2Y1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjE2Yzc4OWYKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYno1OTIw MzEtc2lnaW5mby1sb3N0LTFvZjUucGF0Y2gKQEAgLTAsMCArMSw4NyBAQAoraHR0cDovL3NvdXJj ZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDgvbXNnMDA1NTkuaHRtbAoraHR0cDovL3Nv dXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMC0wOC9tc2cwMDE5OS5odG1sCisKKyMjIyBzcmMv Z2RiL0NoYW5nZUxvZwkyMDEwLzA4LzMxIDE4OjA4OjQyCTEuMTIxMjkKKyMjIyBzcmMvZ2RiL0No YW5nZUxvZwkyMDEwLzA4LzMxIDE4OjExOjQ4CTEuMTIxMzAKKyMjIC0xLDUgKzEsMTQgQEAKKyAy MDEwLTA4LTMxICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Cisg CisrCU1ha2UgbGludXhfZ2V0X3NpZ2luZm9fdHlwZSBgdHlwZSAqJyB1bmlxdWUuCisrCSogbGlu dXgtdGRlcC5jIChsaW51eF9nZGJhcmNoX2RhdGFfaGFuZGxlLCBzdHJ1Y3QgbGludXhfZ2RiYXJj aF9kYXRhKQorKwkoaW5pdF9saW51eF9nZGJhcmNoX2RhdGEsIGdldF9saW51eF9nZGJhcmNoX2Rh dGEpOiBOZXcuCisrCShsaW51eF9nZXRfc2lnaW5mb190eXBlKTogTmV3IHZhcmlhYmxlIGxpbnV4 X2dkYmFyY2hfZGF0YS4gIEluaXRpYWxpemUKKysJaXQuICBVc2UgbGludXhfZ2RiYXJjaF9kYXRh LT5zaWdpbmZvX3R5cGUgYXMgYSBwZXJzaXN0ZW50IHN0b3JhZ2UuCisrCShfaW5pdGlhbGl6ZV9s aW51eF90ZGVwKTogTmV3LgorKworKzIwMTAtMDgtMzEgIEphbiBLcmF0b2NodmlsICA8amFuLmty YXRvY2h2aWxAcmVkaGF0LmNvbT4KKysKKyAJQ29kZSBjbGVhbnVwLgorIAkqIGRlZnMuaCAoZmlu ZF9tZW1vcnlfcmVnaW9uX2Z0eXBlKTogTmV3IHR5cGVkZWYuCisgCShleGVjX3NldF9maW5kX21l bW9yeV9yZWdpb25zKTogVXNlIGl0LgorSW5kZXg6IGdkYi03LjIvZ2RiL2xpbnV4LXRkZXAuYwor PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0tIGdkYi03LjIub3JpZy9nZGIvbGludXgtdGRlcC5jCTIwMTAtMDktMjUg MTU6MzA6NTAuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi9nZGIvbGludXgtdGRlcC5jCTIw MTAtMDktMjUgMTU6MzE6NTQuMDAwMDAwMDAwICswMjAwCitAQCAtMjYsMTggKzI2LDQyIEBACisg I2luY2x1ZGUgInZhbHVlLmgiCisgI2luY2x1ZGUgImluZmNhbGwuaCIKKyAKKytzdGF0aWMgc3Ry dWN0IGdkYmFyY2hfZGF0YSAqbGludXhfZ2RiYXJjaF9kYXRhX2hhbmRsZTsKKysKKytzdHJ1Y3Qg bGludXhfZ2RiYXJjaF9kYXRhCisrICB7CisrICAgIHN0cnVjdCB0eXBlICpzaWdpbmZvX3R5cGU7 CisrICB9OworKworK3N0YXRpYyB2b2lkICoKKytpbml0X2xpbnV4X2dkYmFyY2hfZGF0YSAoc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2gpCisreworKyAgcmV0dXJuIEdEQkFSQ0hfT0JTVEFDS19aQUxM T0MgKGdkYmFyY2gsIHN0cnVjdCBsaW51eF9nZGJhcmNoX2RhdGEpOworK30KKysKKytzdGF0aWMg c3RydWN0IGxpbnV4X2dkYmFyY2hfZGF0YSAqCisrZ2V0X2xpbnV4X2dkYmFyY2hfZGF0YSAoc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2gpCisreworKyAgcmV0dXJuIGdkYmFyY2hfZGF0YSAoZ2RiYXJj aCwgbGludXhfZ2RiYXJjaF9kYXRhX2hhbmRsZSk7CisrfQorKworIC8qIFRoaXMgZnVuY3Rpb24g aXMgc3VpdGFibGUgZm9yIGFyY2hpdGVjdHVyZXMgdGhhdCBkb24ndAorICAgIGV4dGVuZC9vdmVy cmlkZSB0aGUgc3RhbmRhcmQgc2lnaW5mbyBzdHJ1Y3R1cmUuICAqLworIAorIHN0cnVjdCB0eXBl ICoKKyBsaW51eF9nZXRfc2lnaW5mb190eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKKyB7 CisrICBzdHJ1Y3QgbGludXhfZ2RiYXJjaF9kYXRhICpsaW51eF9nZGJhcmNoX2RhdGE7CisgICBz dHJ1Y3QgdHlwZSAqaW50X3R5cGUsICp1aW50X3R5cGUsICpsb25nX3R5cGUsICp2b2lkX3B0cl90 eXBlOworICAgc3RydWN0IHR5cGUgKnVpZF90eXBlLCAqcGlkX3R5cGU7CisgICBzdHJ1Y3QgdHlw ZSAqc2lndmFsX3R5cGUsICpjbG9ja190eXBlOworICAgc3RydWN0IHR5cGUgKnNpZ2luZm9fdHlw ZSwgKnNpZmllbGRzX3R5cGU7CisgICBzdHJ1Y3QgdHlwZSAqdHlwZTsKKyAKKysgIGxpbnV4X2dk YmFyY2hfZGF0YSA9IGdldF9saW51eF9nZGJhcmNoX2RhdGEgKGdkYmFyY2gpOworKyAgaWYgKGxp bnV4X2dkYmFyY2hfZGF0YS0+c2lnaW5mb190eXBlICE9IE5VTEwpCisrICAgIHJldHVybiBsaW51 eF9nZGJhcmNoX2RhdGEtPnNpZ2luZm9fdHlwZTsKKysKKyAgIGludF90eXBlID0gYXJjaF9pbnRl Z2VyX3R5cGUgKGdkYmFyY2gsIGdkYmFyY2hfaW50X2JpdCAoZ2RiYXJjaCksCisgCQkJIAkwLCAi aW50Iik7CisgICB1aW50X3R5cGUgPSBhcmNoX2ludGVnZXJfdHlwZSAoZ2RiYXJjaCwgZ2RiYXJj aF9pbnRfYml0IChnZGJhcmNoKSwKK0BAIC0xMzcsNiArMTYxLDggQEAgbGludXhfZ2V0X3NpZ2lu Zm9fdHlwZSAoc3RydWN0IGdkYmFyY2ggKgorIAkJCQkgICAgICAgIl9zaWZpZWxkcyIsIHNpZmll bGRzX3R5cGUsCisgCQkJCSAgICAgICBUWVBFX0xFTkdUSCAobG9uZ190eXBlKSk7CisgCisrICBs aW51eF9nZGJhcmNoX2RhdGEtPnNpZ2luZm9fdHlwZSA9IHNpZ2luZm9fdHlwZTsKKysKKyAgIHJl dHVybiBzaWdpbmZvX3R5cGU7CisgfQorIAorQEAgLTE1NCwzICsxODAsMTAgQEAgbGludXhfaGFz X3NoYXJlZF9hZGRyZXNzX3NwYWNlICh2b2lkKQorIAorICAgcmV0dXJuIHRhcmdldF9pc191Y2xp bnV4OworIH0KKysKKyt2b2lkCisrX2luaXRpYWxpemVfbGludXhfdGRlcCAodm9pZCkKKyt7Cisr ICBsaW51eF9nZGJhcmNoX2RhdGFfaGFuZGxlID0KKysgICAgZ2RiYXJjaF9kYXRhX3JlZ2lzdGVy X3Bvc3RfaW5pdCAoaW5pdF9saW51eF9nZGJhcmNoX2RhdGEpOworK30KCmRpZmYgLS1naXQgYS9n ZGItYno1OTIwMzEtc2lnaW5mby1sb3N0LTJvZjUucGF0Y2ggYi9nZGItYno1OTIwMzEtc2lnaW5m by1sb3N0LTJvZjUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzUx ODRlMAotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1iejU5MjAzMS1zaWdpbmZvLWxvc3QtMm9mNS5w YXRjaApAQCAtMCwwICsxLDEzOSBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRj aGVzLzIwMTAtMDkvbXNnMDA0MzAuaHRtbAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1j dnMvMjAxMC0wOS9tc2cwMDE1Mi5odG1sCisKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzA5 LzI0IDExOjE1OjUxCTEuMTIxOTkKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzA5LzI0IDEz OjQxOjQyCTEuMTIyMDAKKyMjIC0xLDUgKzEsMTIgQEAKKyAyMDEwLTA5LTI0ICBQZWRybyBBbHZl cyAgPHBlZHJvQGNvZGVzb3VyY2VyeS5jb20+CisgCisrCSogYW1kNjQtbGludXgtbmF0LmMgKGNv bXBhdF9zaWdpbmZvX2Zyb21fc2lnaW5mbykKKysJKHNpZ2luZm9fZnJvbV9jb21wYXRfc2lnaW5m byk6IEFsc28gY29weSBzaV9waWQgYW5kIHNpX3VpZCB3aGVuCisrCXNpX2NvZGUgaXMgPCAwLiAg Q2hlY2sgZm9yIHNpX2NvZGUgPT0gU0lfVElNRVIgYmVmb3JlIGNoZWNraW5nIGZvcgorKwlzaV9j b2RlIDwgMC4KKysKKysyMDEwLTA5LTI0ICBQZWRybyBBbHZlcyAgPHBlZHJvQGNvZGVzb3VyY2Vy eS5jb20+CisrCisgCSogb2JqZmlsZXMuaCAoQUxMX09CSlNFQ1RJT05TKTogSGFuZGxlIGJyZWFr cyBpbiB0aGUgaW5uZXIgbG9vcC4KKyAKKyAyMDEwLTA5LTIyICBKb2VsIEJyb2JlY2tlciAgPGJy b2JlY2tlckBhZGFjb3JlLmNvbT4KKy0tLSBzcmMvZ2RiL2FtZDY0LWxpbnV4LW5hdC5jCTIwMTAv MDQvMjIgMjA6MDI6NTUJMS4zMgorKysrIHNyYy9nZGIvYW1kNjQtbGludXgtbmF0LmMJMjAxMC8w OS8yNCAxMzo0MTo0MwkxLjMzCitAQCAtNTc0LDggKzU3NCwxMCBAQAorICAgdG8tPnNpX2Vycm5v ID0gZnJvbS0+c2lfZXJybm87CisgICB0by0+c2lfY29kZSA9IGZyb20tPnNpX2NvZGU7CisgCist ICBpZiAodG8tPnNpX2NvZGUgPCAwKQorKyAgaWYgKHRvLT5zaV9jb2RlID09IFNJX1RJTUVSKQor ICAgICB7CisrICAgICAgdG8tPmNwdF9zaV90aW1lcmlkID0gZnJvbS0+c2lfdGltZXJpZDsKKysg ICAgICB0by0+Y3B0X3NpX292ZXJydW4gPSBmcm9tLT5zaV9vdmVycnVuOworICAgICAgIHRvLT5j cHRfc2lfcHRyID0gKGludHB0cl90KSBmcm9tLT5zaV9wdHI7CisgICAgIH0KKyAgIGVsc2UgaWYg KHRvLT5zaV9jb2RlID09IFNJX1VTRVIpCitAQCAtNTgzLDEwICs1ODUsMTAgQEAKKyAgICAgICB0 by0+Y3B0X3NpX3BpZCA9IGZyb20tPnNpX3BpZDsKKyAgICAgICB0by0+Y3B0X3NpX3VpZCA9IGZy b20tPnNpX3VpZDsKKyAgICAgfQorLSAgZWxzZSBpZiAodG8tPnNpX2NvZGUgPT0gU0lfVElNRVIp CisrICBlbHNlIGlmICh0by0+c2lfY29kZSA8IDApCisgICAgIHsKKy0gICAgICB0by0+Y3B0X3Np X3RpbWVyaWQgPSBmcm9tLT5zaV90aW1lcmlkOworLSAgICAgIHRvLT5jcHRfc2lfb3ZlcnJ1biA9 IGZyb20tPnNpX292ZXJydW47CisrICAgICAgdG8tPmNwdF9zaV9waWQgPSBmcm9tLT5zaV9waWQ7 CisrICAgICAgdG8tPmNwdF9zaV91aWQgPSBmcm9tLT5zaV91aWQ7CisgICAgICAgdG8tPmNwdF9z aV9wdHIgPSAoaW50cHRyX3QpIGZyb20tPnNpX3B0cjsKKyAgICAgfQorICAgZWxzZQorQEAgLTYy OCw4ICs2MzAsMTAgQEAKKyAgIHRvLT5zaV9lcnJubyA9IGZyb20tPnNpX2Vycm5vOworICAgdG8t PnNpX2NvZGUgPSBmcm9tLT5zaV9jb2RlOworIAorLSAgaWYgKHRvLT5zaV9jb2RlIDwgMCkKKysg IGlmICh0by0+c2lfY29kZSA9PSBTSV9USU1FUikKKyAgICAgeworKyAgICAgIHRvLT5zaV90aW1l cmlkID0gZnJvbS0+Y3B0X3NpX3RpbWVyaWQ7CisrICAgICAgdG8tPnNpX292ZXJydW4gPSBmcm9t LT5jcHRfc2lfb3ZlcnJ1bjsKKyAgICAgICB0by0+c2lfcHRyID0gKHZvaWQgKikgKGludHB0cl90 KSBmcm9tLT5jcHRfc2lfcHRyOworICAgICB9CisgICBlbHNlIGlmICh0by0+c2lfY29kZSA9PSBT SV9VU0VSKQorQEAgLTYzNywxMCArNjQxLDEwIEBACisgICAgICAgdG8tPnNpX3BpZCA9IGZyb20t PmNwdF9zaV9waWQ7CisgICAgICAgdG8tPnNpX3VpZCA9IGZyb20tPmNwdF9zaV91aWQ7CisgICAg IH0KKy0gIGVsc2UgaWYgKHRvLT5zaV9jb2RlID09IFNJX1RJTUVSKQorKyAgaWYgKHRvLT5zaV9j b2RlIDwgMCkKKyAgICAgeworLSAgICAgIHRvLT5zaV90aW1lcmlkID0gZnJvbS0+Y3B0X3NpX3Rp bWVyaWQ7CistICAgICAgdG8tPnNpX292ZXJydW4gPSBmcm9tLT5jcHRfc2lfb3ZlcnJ1bjsKKysg ICAgICB0by0+c2lfcGlkID0gZnJvbS0+Y3B0X3NpX3BpZDsKKysgICAgICB0by0+c2lfdWlkID0g ZnJvbS0+Y3B0X3NpX3VpZDsKKyAgICAgICB0by0+c2lfcHRyID0gKHZvaWQgKikgKGludHB0cl90 KSBmcm9tLT5jcHRfc2lfcHRyOworICAgICB9CisgICBlbHNlCisjIyMgc3JjL2dkYi9nZGJzZXJ2 ZXIvQ2hhbmdlTG9nCTIwMTAvMDkvMTMgMTk6MTE6MDMJMS40MzEKKyMjIyBzcmMvZ2RiL2dkYnNl cnZlci9DaGFuZ2VMb2cJMjAxMC8wOS8yNCAxMzo0MTo0MwkxLjQzMgorIyMgLTEsMyArMSwxMCBA QAorKzIwMTAtMDktMjQgIFBlZHJvIEFsdmVzICA8cGVkcm9AY29kZXNvdXJjZXJ5LmNvbT4KKysK KysJKiBsaW51eC14ODYtbG93LmMgKGNvbXBhdF9zaWdpbmZvX2Zyb21fc2lnaW5mbykKKysJKHNp Z2luZm9fZnJvbV9jb21wYXRfc2lnaW5mbyk6IEFsc28gY29weSBzaV9waWQgYW5kIHNpX3VpZCB3 aGVuCisrCXNpX2NvZGUgaXMgPCAwLiAgQ2hlY2sgZm9yIHNpX2NvZGUgPT0gU0lfVElNRVIgYmVm b3JlIGNoZWNraW5nIGZvcgorKwlzaV9jb2RlIDwgMC4KKysKKyAyMDEwLTA5LTEzICBKb2VsIEJy b2JlY2tlciAgPGJyb2JlY2tlckBhZGFjb3JlLmNvbT4KKyAKKyAJKiBseW54LWkzODYtbG93LmM6 IE5ldyBmaWxlLgorLS0tIHNyYy9nZGIvZ2Ric2VydmVyL2xpbnV4LXg4Ni1sb3cuYwkyMDEwLzA4 LzI3IDAwOjE2OjQ4CTEuMjMKKysrKyBzcmMvZ2RiL2dkYnNlcnZlci9saW51eC14ODYtbG93LmMJ MjAxMC8wOS8yNCAxMzo0MTo0MwkxLjI0CitAQCAtNzkyLDggKzc5MiwxMCBAQAorICAgdG8tPnNp X2Vycm5vID0gZnJvbS0+c2lfZXJybm87CisgICB0by0+c2lfY29kZSA9IGZyb20tPnNpX2NvZGU7 CisgCistICBpZiAodG8tPnNpX2NvZGUgPCAwKQorKyAgaWYgKHRvLT5zaV9jb2RlID09IFNJX1RJ TUVSKQorICAgICB7CisrICAgICAgdG8tPmNwdF9zaV90aW1lcmlkID0gZnJvbS0+c2lfdGltZXJp ZDsKKysgICAgICB0by0+Y3B0X3NpX292ZXJydW4gPSBmcm9tLT5zaV9vdmVycnVuOworICAgICAg IHRvLT5jcHRfc2lfcHRyID0gKGludHB0cl90KSBmcm9tLT5zaV9wdHI7CisgICAgIH0KKyAgIGVs c2UgaWYgKHRvLT5zaV9jb2RlID09IFNJX1VTRVIpCitAQCAtODAxLDEwICs4MDMsMTAgQEAKKyAg ICAgICB0by0+Y3B0X3NpX3BpZCA9IGZyb20tPnNpX3BpZDsKKyAgICAgICB0by0+Y3B0X3NpX3Vp ZCA9IGZyb20tPnNpX3VpZDsKKyAgICAgfQorLSAgZWxzZSBpZiAodG8tPnNpX2NvZGUgPT0gU0lf VElNRVIpCisrICBlbHNlIGlmICh0by0+c2lfY29kZSA8IDApCisgICAgIHsKKy0gICAgICB0by0+ Y3B0X3NpX3RpbWVyaWQgPSBmcm9tLT5zaV90aW1lcmlkOworLSAgICAgIHRvLT5jcHRfc2lfb3Zl cnJ1biA9IGZyb20tPnNpX292ZXJydW47CisrICAgICAgdG8tPmNwdF9zaV9waWQgPSBmcm9tLT5z aV9waWQ7CisrICAgICAgdG8tPmNwdF9zaV91aWQgPSBmcm9tLT5zaV91aWQ7CisgICAgICAgdG8t PmNwdF9zaV9wdHIgPSAoaW50cHRyX3QpIGZyb20tPnNpX3B0cjsKKyAgICAgfQorICAgZWxzZQor QEAgLTg0Niw4ICs4NDgsMTAgQEAKKyAgIHRvLT5zaV9lcnJubyA9IGZyb20tPnNpX2Vycm5vOwor ICAgdG8tPnNpX2NvZGUgPSBmcm9tLT5zaV9jb2RlOworIAorLSAgaWYgKHRvLT5zaV9jb2RlIDwg MCkKKysgIGlmICh0by0+c2lfY29kZSA9PSBTSV9USU1FUikKKyAgICAgeworKyAgICAgIHRvLT5z aV90aW1lcmlkID0gZnJvbS0+Y3B0X3NpX3RpbWVyaWQ7CisrICAgICAgdG8tPnNpX292ZXJydW4g PSBmcm9tLT5jcHRfc2lfb3ZlcnJ1bjsKKyAgICAgICB0by0+c2lfcHRyID0gKHZvaWQgKikgKGlu dHB0cl90KSBmcm9tLT5jcHRfc2lfcHRyOworICAgICB9CisgICBlbHNlIGlmICh0by0+c2lfY29k ZSA9PSBTSV9VU0VSKQorQEAgLTg1NSwxMCArODU5LDEwIEBACisgICAgICAgdG8tPnNpX3BpZCA9 IGZyb20tPmNwdF9zaV9waWQ7CisgICAgICAgdG8tPnNpX3VpZCA9IGZyb20tPmNwdF9zaV91aWQ7 CisgICAgIH0KKy0gIGVsc2UgaWYgKHRvLT5zaV9jb2RlID09IFNJX1RJTUVSKQorKyAgZWxzZSBp ZiAodG8tPnNpX2NvZGUgPCAwKQorICAgICB7CistICAgICAgdG8tPnNpX3RpbWVyaWQgPSBmcm9t LT5jcHRfc2lfdGltZXJpZDsKKy0gICAgICB0by0+c2lfb3ZlcnJ1biA9IGZyb20tPmNwdF9zaV9v dmVycnVuOworKyAgICAgIHRvLT5zaV9waWQgPSBmcm9tLT5jcHRfc2lfcGlkOworKyAgICAgIHRv LT5zaV91aWQgPSBmcm9tLT5jcHRfc2lfdWlkOworICAgICAgIHRvLT5zaV9wdHIgPSAodm9pZCAq KSAoaW50cHRyX3QpIGZyb20tPmNwdF9zaV9wdHI7CisgICAgIH0KKyAgIGVsc2UKCmRpZmYgLS1n aXQgYS9nZGItYno1OTIwMzEtc2lnaW5mby1sb3N0LTNvZjUucGF0Y2ggYi9nZGItYno1OTIwMzEt c2lnaW5mby1sb3N0LTNvZjUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uZTQ1YzgzZAotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1iejU5MjAzMS1zaWdpbmZvLWxvc3Qt M29mNS5wYXRjaApAQCAtMCwwICsxLDI1OSBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dk Yi1wYXRjaGVzLzIwMTAtMDkvbXNnMDA0MzguaHRtbAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21s L2dkYi1jdnMvMjAxMC0wOS9tc2cwMDE1Ni5odG1sCisKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwky MDEwLzA5LzI0IDE2OjExOjQ0CTEuMTIyMDMKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzA5 LzI0IDE4OjM1OjIwCTEuMTIyMDQKKyMjIC0xLDMgKzEsMTYgQEAKKysyMDEwLTA5LTI0ICBKYW4g S3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisrCisrCUZpeCBsb3N0IHNp Z2luZm9fdCBmb3IgaW5mZXJpb3IgY2FsbHMuCisrCSogaW5mcnVuLmMKKysJKHN0cnVjdCBpbmZl cmlvcl90aHJlYWRfc3RhdGUpIDxzaWdpbmZvX2dkYmFyY2gsIHNpZ2luZm9fZGF0YT46IE5ldy4K KysJKHNhdmVfaW5mZXJpb3JfdGhyZWFkX3N0YXRlKTogTmV3IHZhcmlhYmxlcyByZWdjYWNoZSwg Z2RiYXJjaCBhbmQKKysJc2lnaW5mb19kYXRhLiAgSW5pdGlhbGl6ZSBTSUdJTkZPX0RBVEEgaWYg Z2RiYXJjaF9nZXRfc2lnaW5mb190eXBlX3AuCisrCU1vdmUgSU5GX1NUQVRFIGFsbG9jYXRpb24g bGF0ZXIsIHByZS1jbGVhciBpdC4gIEluaXRpYWxpemUgUkVHSVNURVJTCisrCXVzaW5nIFJFR0NB Q0hFLgorKwkocmVzdG9yZV9pbmZlcmlvcl90aHJlYWRfc3RhdGUpOiBOZXcgdmFyaWFibGVzIHJl Z2NhY2hlIGFuZCBnZGJhcmNoLgorKwlSZXN0b3JlIFNJR0lORk9fREFUQSBmb3IgbWF0Y2hpbmcg R0RCQVJDSC4gIFJlc3RvcmUgUkVHSVNURVJTIHVzaW5nCisrCVJFR0NBQ0hFLiAgRnJlZSBhbHNv IFNJR0lORk9fREFUQS4KKysKKyAyMDEwLTA5LTI0ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhh dC5jb20+CisgCisgCSogZHdhcmYycmVhZC5jIChkdzJfZXhwYW5kX3N5bXRhYnNfbWF0Y2hpbmcp OiBBZGQgbWlzc2luZworLS0tIHNyYy9nZGIvaW5mcnVuLmMJMjAxMC8wOS8wNiAxNDoyMjowNwkx LjQ1MAorKysrIHNyYy9nZGIvaW5mcnVuLmMJMjAxMC8wOS8yNCAxODozNToyNwkxLjQ1MQorQEAg LTYwMzcsMTggKzYwMzcsNTcgQEAKKyAgIGVudW0gdGFyZ2V0X3NpZ25hbCBzdG9wX3NpZ25hbDsK KyAgIENPUkVfQUREUiBzdG9wX3BjOworICAgc3RydWN0IHJlZ2NhY2hlICpyZWdpc3RlcnM7Cisr CisrICAvKiBGb3JtYXQgb2YgU0lHSU5GTyBvciBOVUxMIGlmIGl0IGlzIG5vdCBwcmVzZW50LiAg Ki8KKysgIHN0cnVjdCBnZGJhcmNoICpzaWdpbmZvX2dkYmFyY2g7CisrCisrICAvKiBUaGUgaW5m ZXJpb3IgZm9ybWF0IGRlcGVuZHMgb24gU0lHSU5GT19HREJBUkNIIGFuZCBpdCBoYXMgYSBsZW5n dGggb2YKKysgICAgIFRZUEVfTEVOR1RIIChnZGJhcmNoX2dldF9zaWdpbmZvX3R5cGUgKCkpLiAg Rm9yIGRpZmZlcmVudCBnZGJhcmNoIHRoZQorKyAgICAgY29udGVudCB3b3VsZCBiZSBpbnZhbGlk LiAgKi8KKysgIGdkYl9ieXRlICpzaWdpbmZvX2RhdGE7CisgfTsKKyAKKyBzdHJ1Y3QgaW5mZXJp b3JfdGhyZWFkX3N0YXRlICoKKyBzYXZlX2luZmVyaW9yX3RocmVhZF9zdGF0ZSAodm9pZCkKKyB7 CistICBzdHJ1Y3QgaW5mZXJpb3JfdGhyZWFkX3N0YXRlICppbmZfc3RhdGUgPSBYTUFMTE9DIChz dHJ1Y3QgaW5mZXJpb3JfdGhyZWFkX3N0YXRlKTsKKysgIHN0cnVjdCBpbmZlcmlvcl90aHJlYWRf c3RhdGUgKmluZl9zdGF0ZTsKKyAgIHN0cnVjdCB0aHJlYWRfaW5mbyAqdHAgPSBpbmZlcmlvcl90 aHJlYWQgKCk7CisrICBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlID0gZ2V0X2N1cnJlbnRfcmVn Y2FjaGUgKCk7CisrICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9yZWdjYWNoZV9hcmNo IChyZWdjYWNoZSk7CisrICBnZGJfYnl0ZSAqc2lnaW5mb19kYXRhID0gTlVMTDsKKysKKysgIGlm IChnZGJhcmNoX2dldF9zaWdpbmZvX3R5cGVfcCAoZ2RiYXJjaCkpCisrICAgIHsKKysgICAgICBz dHJ1Y3QgdHlwZSAqdHlwZSA9IGdkYmFyY2hfZ2V0X3NpZ2luZm9fdHlwZSAoZ2RiYXJjaCk7Cisr ICAgICAgc2l6ZV90IGxlbiA9IFRZUEVfTEVOR1RIICh0eXBlKTsKKysgICAgICBzdHJ1Y3QgY2xl YW51cCAqYmFja190bzsKKysKKysgICAgICBzaWdpbmZvX2RhdGEgPSB4bWFsbG9jIChsZW4pOwor KyAgICAgIGJhY2tfdG8gPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBzaWdpbmZvX2RhdGEpOworKwor KyAgICAgIGlmICh0YXJnZXRfcmVhZCAoJmN1cnJlbnRfdGFyZ2V0LCBUQVJHRVRfT0JKRUNUX1NJ R05BTF9JTkZPLCBOVUxMLAorKwkJICAgICAgIHNpZ2luZm9fZGF0YSwgMCwgbGVuKSA9PSBsZW4p CisrCWRpc2NhcmRfY2xlYW51cHMgKGJhY2tfdG8pOworKyAgICAgIGVsc2UKKysJeworKwkgIC8q IEVycm9ycyBpZ25vcmVkLiAgKi8KKysJICBkb19jbGVhbnVwcyAoYmFja190byk7CisrCSAgc2ln aW5mb19kYXRhID0gTlVMTDsKKysJfQorKyAgICB9CisrCisrICBpbmZfc3RhdGUgPSBYWkFMTE9D IChzdHJ1Y3QgaW5mZXJpb3JfdGhyZWFkX3N0YXRlKTsKKysKKysgIGlmIChzaWdpbmZvX2RhdGEp CisrICAgIHsKKysgICAgICBpbmZfc3RhdGUtPnNpZ2luZm9fZ2RiYXJjaCA9IGdkYmFyY2g7Cisr ICAgICAgaW5mX3N0YXRlLT5zaWdpbmZvX2RhdGEgPSBzaWdpbmZvX2RhdGE7CisrICAgIH0KKyAK KyAgIGluZl9zdGF0ZS0+c3RvcF9zaWduYWwgPSB0cC0+c3RvcF9zaWduYWw7CisgICBpbmZfc3Rh dGUtPnN0b3BfcGMgPSBzdG9wX3BjOworIAorLSAgaW5mX3N0YXRlLT5yZWdpc3RlcnMgPSByZWdj YWNoZV9kdXAgKGdldF9jdXJyZW50X3JlZ2NhY2hlICgpKTsKKysgIGluZl9zdGF0ZS0+cmVnaXN0 ZXJzID0gcmVnY2FjaGVfZHVwIChyZWdjYWNoZSk7CisgCisgICByZXR1cm4gaW5mX3N0YXRlOwor IH0KK0BAIC02MDU5LDE2ICs2MDk4LDI5IEBACisgcmVzdG9yZV9pbmZlcmlvcl90aHJlYWRfc3Rh dGUgKHN0cnVjdCBpbmZlcmlvcl90aHJlYWRfc3RhdGUgKmluZl9zdGF0ZSkKKyB7CisgICBzdHJ1 Y3QgdGhyZWFkX2luZm8gKnRwID0gaW5mZXJpb3JfdGhyZWFkICgpOworKyAgc3RydWN0IHJlZ2Nh Y2hlICpyZWdjYWNoZSA9IGdldF9jdXJyZW50X3JlZ2NhY2hlICgpOworKyAgc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2ggPSBnZXRfcmVnY2FjaGVfYXJjaCAocmVnY2FjaGUpOworIAorICAgdHAtPnN0 b3Bfc2lnbmFsID0gaW5mX3N0YXRlLT5zdG9wX3NpZ25hbDsKKyAgIHN0b3BfcGMgPSBpbmZfc3Rh dGUtPnN0b3BfcGM7CisgCisrICBpZiAoaW5mX3N0YXRlLT5zaWdpbmZvX2dkYmFyY2ggPT0gZ2Ri YXJjaCkKKysgICAgeworKyAgICAgIHN0cnVjdCB0eXBlICp0eXBlID0gZ2RiYXJjaF9nZXRfc2ln aW5mb190eXBlIChnZGJhcmNoKTsKKysgICAgICBzaXplX3QgbGVuID0gVFlQRV9MRU5HVEggKHR5 cGUpOworKworKyAgICAgIC8qIEVycm9ycyBpZ25vcmVkLiAgKi8KKysgICAgICB0YXJnZXRfd3Jp dGUgKCZjdXJyZW50X3RhcmdldCwgVEFSR0VUX09CSkVDVF9TSUdOQUxfSU5GTywgTlVMTCwKKysJ CSAgICBpbmZfc3RhdGUtPnNpZ2luZm9fZGF0YSwgMCwgbGVuKTsKKysgICAgfQorKworICAgLyog VGhlIGluZmVyaW9yIGNhbiBiZSBnb25lIGlmIHRoZSB1c2VyIHR5cGVzICJwcmludCBleGl0KDAp IgorICAgICAgKGFuZCBwZXJoYXBzIG90aGVyIHRpbWVzKS4gICovCisgICBpZiAodGFyZ2V0X2hh c19leGVjdXRpb24pCisgICAgIC8qIE5COiBUaGUgcmVnaXN0ZXIgd3JpdGUgZ29lcyB0aHJvdWdo IHRvIHRoZSB0YXJnZXQuICAqLworLSAgICByZWdjYWNoZV9jcHkgKGdldF9jdXJyZW50X3JlZ2Nh Y2hlICgpLCBpbmZfc3RhdGUtPnJlZ2lzdGVycyk7CisrICAgIHJlZ2NhY2hlX2NweSAocmVnY2Fj aGUsIGluZl9zdGF0ZS0+cmVnaXN0ZXJzKTsKKyAgIHJlZ2NhY2hlX3hmcmVlIChpbmZfc3RhdGUt PnJlZ2lzdGVycyk7CisrICB4ZnJlZSAoaW5mX3N0YXRlLT5zaWdpbmZvX2RhdGEpOworICAgeGZy ZWUgKGluZl9zdGF0ZSk7CisgfQorIAorIyMjIHNyYy9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwky MDEwLzA5LzIyIDIwOjA4OjA0CTEuMjQ1NgorIyMjIHNyYy9nZGIvdGVzdHN1aXRlL0NoYW5nZUxv ZwkyMDEwLzA5LzI0IDE4OjM1OjI4CTEuMjQ1NworIyMgLTEsMyArMSw5IEBACisrMjAxMC0wOS0y NCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorKworKwlGaXgg bG9zdCBzaWdpbmZvX3QgZm9yIGluZmVyaW9yIGNhbGxzLgorKwkqIGdkYi5iYXNlL3NpZ2luZm8t aW5mY2FsbC5leHA6IE5ldyBmaWxlLgorKwkqIGdkYi5iYXNlL3NpZ2luZm8taW5mY2FsbC5jOiBO ZXcgZmlsZS4KKysKKyAyMDEwLTA5LTIyICBKb2VsIEJyb2JlY2tlciAgPGJyb2JlY2tlckBhZGFj b3JlLmNvbT4KKyAKKyAJKiBnZGIuZHdhcmYyL2R3Mi1jb25zdC5TOiBNaW5vciAoc3BhY2UpIHJl Zm9ybWF0dGluZy4KKy0tLSBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWdpbmZvLWluZmNh bGwuYworKysrIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ2luZm8taW5mY2FsbC5jCTIw MTAtMDktMjUgMTM6MjU6MjUuMDA3MTY5MDAwICswMDAwCitAQCAtMCwwICsxLDc5IEBACisrLyog VGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysKKysgICBD b3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisr ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrI2luY2x1ZGUgPHNpZ25hbC5o PgorKyNpbmNsdWRlIDxhc3NlcnQuaD4KKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUg PHVuaXN0ZC5oPgorKworKyNpZm5kZWYgU0FfU0lHSU5GTworKyMgZXJyb3IgIlNBX1NJR0lORk8g aXMgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdCIKKysjZW5kaWYKKysKKytzdGF0aWMgaW50CisrY2Fs bG1lICh2b2lkKQorK3sKKysgIHJldHVybiA0MjsKKyt9CisrCisrc3RhdGljIGludAorK3Bhc3Mg KHZvaWQpCisreworKyAgcmV0dXJuIDE7CisrfQorKworK3N0YXRpYyBpbnQKKytmYWlsICh2b2lk KQorK3sKKysgIHJldHVybiAxOworK30KKysKKytzdGF0aWMgdm9pZAorK2hhbmRsZXIgKGludCBz aWcsIHNpZ2luZm9fdCAqc2lnaW5mbywgdm9pZCAqY29udGV4dCkKKyt7CisrICBhc3NlcnQgKHNp ZyA9PSBTSUdVU1IxKTsKKysgIGFzc2VydCAoc2lnaW5mby0+c2lfc2lnbm8gPT0gU0lHVVNSMSk7 CisrICBpZiAoc2lnaW5mby0+c2lfcGlkID09IGdldHBpZCAoKSkKKysgICAgcGFzcyAoKTsKKysg IGVsc2UKKysgICAgZmFpbCAoKTsKKyt9CisrCisraW50CisrbWFpbiAodm9pZCkKKyt7CisrICBz dHJ1Y3Qgc2lnYWN0aW9uIHNhOworKyAgaW50IGk7CisrCisrICBjYWxsbWUgKCk7CisrCisrICBt ZW1zZXQgKCZzYSwgMCwgc2l6ZW9mIChzYSkpOworKyAgc2Euc2Ffc2lnYWN0aW9uID0gaGFuZGxl cjsKKysgIHNhLnNhX2ZsYWdzID0gU0FfU0lHSU5GTzsKKysKKysgIGkgPSBzaWdlbXB0eXNldCAo JnNhLnNhX21hc2spOworKyAgYXNzZXJ0IChpID09IDApOworKworKyAgaSA9IHNpZ2FjdGlvbiAo U0lHVVNSMSwgJnNhLCBOVUxMKTsKKysgIGFzc2VydCAoaSA9PSAwKTsKKysKKysgIGkgPSByYWlz ZSAoU0lHVVNSMSk7CisrICBhc3NlcnQgKGkgPT0gMCk7CisrCisrICBzbGVlcCAoNjAwKTsKKysg IHJldHVybiAwOworK30KKy0tLSBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWdpbmZvLWlu ZmNhbGwuZXhwCisrKysgc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnaW5mby1pbmZjYWxs LmV4cAkyMDEwLTA5LTI1IDEzOjI1OjI1LjM1NzcyNDAwMCArMDAwMAorQEAgLTAsMCArMSw0NyBA QAorKyMgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisr IyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIwor KyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworK2lmIFt0YXJnZXRfaW5mbyBleGlzdHMg Z2RiLG5vc2lnbmFsc10geworKyAgICB2ZXJib3NlICJTa2lwcGluZyBzaWdpbmZvLWluZmNhbGwu ZXhwIGJlY2F1c2Ugb2Ygbm9zaWduYWxzLiIKKysgICAgY29udGludWUKKyt9CisrCisrc2V0IHRl c3RmaWxlIHNpZ2luZm8taW5mY2FsbAorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKKytzZXQg ZXhlY3V0YWJsZSAke3Rlc3RmaWxlfQorK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0 ZmlsZX0uZXhwICRleGVjdXRhYmxlXSB9IHsKKysgICAgcmV0dXJuIC0xCisrfQorKworK2lmICFb cnVudG9fbWFpbl0geworKyAgICByZXR1cm4gLTEKKyt9CisrCisrZ2RiX2JyZWFrcG9pbnQgInBh c3MiCisrZ2RiX2JyZWFrcG9pbnQgImZhaWwiCisrCisrZ2RiX3Rlc3QgImNvbnRpbnVlIiAiUHJv Z3JhbSByZWNlaXZlZCBzaWduYWwgU0lHVVNSMSwgLioiICJjb250aW51ZSB0byBTSUdVU1IxIgor KworK2dkYl90ZXN0ICJwIGNhbGxtZSAoKSIgIiA9IDQyIgorKworK3NldCB0ZXN0ICJjb250aW51 ZSB0byB0aGUgaGFuZGxlciIKKytnZGJfdGVzdF9tdWx0aXBsZSAiY29udGludWUiICR0ZXN0IHsK KysgICAgLXJlICJCcmVha3BvaW50IFxbMC05XF0rLFxbXlxyXG5cXSogcGFzcyAuKlxyXG4kZ2Ri X3Byb21wdCAkIiB7CisrCXBhc3MgJHRlc3QKKysgICAgfQorKyAgICAtcmUgIkJyZWFrcG9pbnQg XFswLTlcXSssXFteXHJcblxdKiBmYWlsIC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJZmFpbCAk dGVzdAorKyAgICB9CisrfQoKZGlmZiAtLWdpdCBhL2dkYi1iejU5MjAzMS1zaWdpbmZvLWxvc3Qt NG9mNS5wYXRjaCBiL2dkYi1iejU5MjAzMS1zaWdpbmZvLWxvc3QtNG9mNS5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzNhYjMzCi0tLSAvZGV2L251bGwKKysrIGIv Z2RiLWJ6NTkyMDMxLXNpZ2luZm8tbG9zdC00b2Y1LnBhdGNoCkBAIC0wLDAgKzEsOTkyIEBACito dHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wOS9tc2cwMDM2MC5odG1s CitTdWJqZWN0OiBbcGF0Y2ggMy80XSMzIGxpbnV4LW5hdDogRG8gbm90IHJlc3Bhd24gc2lnbmFs cworCitIaSwKKworbGludXgtbmF0LmMgaXMgZml4ZWQgdG8gbmV2ZXIgcmVzcGF3biBzaWduYWxz OyBwb3NzaWJseSBrZWVwaW5nIFNJR1NUT1AKK3BlbmRpbmcsIGFzIGlzIGRvbmUgaW4gY3VycmVu dCBpbiBGU0YgZ2Ric2VydmVyIGFuZCBhcyBzdWdnZXN0ZWQgYnkgUGVkcm86CisJaHR0cDovL3Nv dXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDgvbXNnMDA1NDQuaHRtbAorCitUaGUg bGFzdCBsaW51eC1uYXQuYyByZW1vdmVkIHBhdGNoIGNodW5rIGNvbWVzIGZyb20gdGhlIGluaXRp YWwgaW1wbGVtZW50YXRpb24KK2J5IE1hcmsgS2V0dGVuaXM6CisJW1BBVENIXSBOZXcgTGludXgg dGhyZWFkcyBzdXBwb3J0CisJaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIw MDAtMDkvbXNnMDAwMjAuaHRtbAorCTkyMjgwYTc1ZTAxNzY4M2JmOGU0ZjMzOWY0Zjg1NjQwYjA3 MDA1MDkKK0l0IGdldHMgaW4gcGFydCByZWltcGxlbWVudGVkIGludG8gdGhlIG5ldyBzdG9wX3dh aXRfY2FsbGJhY2sgPGlmIChscC0+c3RlcCk+CitwYXJ0IGFuZCBwYXJ0aWFsbHkganVzdCBub3Qg bmVlZGVkIGFzIGN1cnJlbnRseSBHREIgbmV2ZXIgZHJvcHMgdGhlIHNpZ25hbHMgYXMKK2l0IGRv ZXMgbm90IFBUUkFDRV9DT05UIHRoZSB0aHJlYWQ7IHNpZ25hbCBpcyBrZXB0IGZvciBwcm9jZXNz aW5nOgorCSJSQzogTm90IHJlc3VtaW5nIHNpYmxpbmcgJXMgKGhhcyBwZW5kaW5nKVxuIgorCitJ biBzdG9wX3dhaXRfY2FsbGJhY2sgSSBiZWxpZXZlIGJyZWFrcG9pbnRzIGNhbmNlbGxhdGlvbiBp cyBub3QgbmVlZGVkIGhlcmUsCitpdCB3b3VsZCBiZSBkb25lIGxhdGVyLgorCisKK1RoZSB0ZXN0 Y2FzZSBzaWdzdGVwLXRocmVhZHMuZXhwIHdhcyB3cml0dGVuIHRvIGNhdGNoIGEgcmVncmVzc2lv bi1saWtlCithcHBlYXJhbmNlIHRoZW4gdGhlIG5ldyA8aWYgKGxwLT5zdGVwKT4gcGFydCBvZiBz dG9wX3dhaXRfY2FsbGJhY2sgZ2V0cworcmVtb3ZlZC4gIFN0aWxsIHRoZSB0ZWNhc2UgZmFpbHMg ZXZlbiB3aXRoIEZTRiBIRUFEOgorCiszMiAgICAgICAgdmFyKys7ICAgICAgICAgICAgICAgIC8q IHN0ZXAtMSAqLworKGdkYikgc3RlcAorUHJvZ3JhbSByZWNlaXZlZCBzaWduYWwgU0lHVVNSMSwg VXNlciBkZWZpbmVkIHNpZ25hbCAxLgorUHJvZ3JhbSByZWNlaXZlZCBzaWduYWwgU0lHVVNSMSwg VXNlciBkZWZpbmVkIHNpZ25hbCAxLgorMzEgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAv KiBzdGVwLTAgKi8KKworVGhlcmUgaXMgbm8gcmVhc29uIHdoeSBpdCBzaG91bGRuJ3Qgc3RvcCBv biBsaW5lIDMzLCBiZXR3ZWVuIGxpbmUgMzIgYW5kIGxpbmUKKzMzIG5vIHNpZ25hbCB3b3VsZCBv Y2N1ci4gIFN0ZXBwaW5nIG9mIHRoZSBjdXJyZW50IHRocmVhZCBzaG91bGQgbm90IGJlCithZmZl Y3RlZCBieSB3aGF0ZXZlciBoYXBwZW5zIGluIHRoZSBvdGhlciB0aHJlYWRzIGFzIHNlbGVjdF9l dmVudF9sd3AgaGFzOgorICAvKiBHaXZlIHByZWZlcmVuY2UgdG8gYW55IExXUCB0aGF0IGlzIGJl aW5nIHNpbmdsZS1zdGVwcGVkLiAgKi8KKworVGhlcmUgaXMgYSBwcm9ibGVtIHRoYXQgd2l0aCBG U0YgSEVBRCBHREIgZG9lcyBQVFJBQ0VfU0lOR0xFU1RFUCBmb3IgdGhyZWFkIEEsCitQVFJBQ0Vf Q09OVCBmb3IgdGhyZWFkIEIgKGJlY2F1c2Ugb2Ygc2V0IHNjaGVkdWxlci1sb2NraW5nIG9mZiks IHRocmVhZCBCIGhpdHMKK1NJR1VTUjEsIHNvIEdEQiB0a2lsbHMgdGhyZWFkIEEgd2l0aCBTSUdT VE9QIGFuZCBpdCBjYW4gcmVjZWl2ZSBTSUdTVE9QIGZvcgordGhyZWFkIEEgYmVmb3JlIHRoZSBT SUdUUkFQIGZvciBjb21wbGV0ZWQgUFRSQUNFX1NJTkdMRVNURVAuICBBdCB0aGF0IG1vbWVudAor c2VsZWN0X2V2ZW50X2x3cC4gZm9yZ2V0cyBpdCB3YXMgc3RlcHBpbmcgdGhyZWFkIEEgYmVjYXVz ZSB0aGVyZSBpcyBubyBwZW5kaW5nCitTSUdUUkFQIGV2ZW50LiAgY3VycmVudGx5X3N0ZXBwaW5n IHN0aWxsIHJlbWVtYmVycyB0aHJlYWQgQSB3YXMgc3RlcHBpbmcgc28gaXQKK3dpbGwgbGF0ZXIg c3RvcCBidXQgYXMgdGhyZWFkIEEgd2FzIFBUUkFDRV9DT05ULWVkIGluIHRoZSBtZWFudGltZSBp dCBpcyB0b28KK2xhdGUuCisKK1RoZXJlIGlzIHRoZSBuZXcgPGlmIChscC0+c3RlcCk+IHBhcnQg b2Ygc3RvcF93YWl0X2NhbGxiYWNrIHRvIGFsd2F5cyB0cmFjawordGhyZWFkIEEgaXMgc3RlcHBp bmcuICBEdWUgdG8gZGlmZmVyZW50IHNjaGVkdWxpbmcgd2l0aG91dCB0aGlzIHBhcnQgdGhlCitj aGFuZ2VkIEdEQiB3b3VsZCB2ZXJ5IHJhcmVseSBzdG9wIGluIHRoaXMgdGVzdGNhc2Ugb3RoZXJ3 aXNlLCBtYWtpbmcgaXQgbG9vaworYXMgYSByZWdyZXNzaW9uLgorCitJIGhhdmUgc29tZSBhbm90 aGVyIHBhdGNoIEkgbWF5IHBvc3Qgc2VwYXJhdGVseSBhcyBpZiBtdWx0aXBsZSBzaWduYWxzIGhh cHBlbgorYmVzaWRlcyBTSUdUUkFQIEdEQiBzdGlsbCBtYXkgc3dpdGNoIGZyb20gdGhyZWFkIEEg YXdheSAoYXMgbm90IGNvbnNpZGVyaW5nIGl0CitzdGVwcGluZykgdG8gdGhyZWFkIEIgZm9yIFNJ R1VTUiBhbmQgYWNjaWRlbnRhbGx5IFBUUkFDRV9DT05UIHRocmVhZCBBLgorQnV0IEkgZG8gbm90 IGZpbmQgdGhpcyBhcyBhIHByZXJlcXVpc2l0ZSBmb3IgdGhpcyBwYXRjaHNldC4KKworCisKK1Ro YW5rcywKK0phbgorCisKK2dkYi8KKzIwMTAtMDktMjAgIEphbiBLcmF0b2NodmlsICA8amFuLmty YXRvY2h2aWxAcmVkaGF0LmNvbT4KKworCSogbGludXgtbmF0LmMgKHN0b3Bfd2FpdF9jYWxsYmFj ayk6IE5ldyBnZGJfYXNzZXJ0LiAgUmVtb3ZlIHNpZ25hbHMKKwlyZXNwYXduaW5nOyBrZWVwIFRQ IHdpdGggU0lHTkFMTEVELiAgTmV3IGRlYnVnZ2luZyBtZXNzYWdlICJTV0M6CisJRGVsYXllZCBT SUdTVE9QIGNhdWdodCBmb3IgJXMuIi4gIENhdGNoIG5leHQgc2lnbmFsIGlmIFNJR1NUT1AgaGFz CisJYmVlbiBjYXVnaHQgYW5kIExQLT5TVEVQIGlzIHNldC4KKwkobGludXhfbmF0X3dhaXRfMSkg PGxwICYmIGxwLT5zaWduYWxsZWQ+OiBSZW1vdmUuCisKK2dkYi90ZXN0c3VpdGUvCisyMDEwLTA5 LTIwICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisKKwkqIGdk Yi50aHJlYWRzL3NpZ2luZm8tdGhyZWFkcy5leHA6IE5ldyBmaWxlLgorCSogZ2RiLnRocmVhZHMv c2lnaW5mby10aHJlYWRzLmM6IE5ldyBmaWxlLgorCSogZ2RiLnRocmVhZHMvc2lnc3RlcC10aHJl YWRzLmV4cDogTmV3IGZpbGUuCisJKiBnZGIudGhyZWFkcy9zaWdzdGVwLXRocmVhZHMuYzogTmV3 IGZpbGUuCisKK0luZGV4OiBnZGItNy4yL2dkYi9saW51eC1uYXQuYworPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0t IGdkYi03LjIub3JpZy9nZGIvbGludXgtbmF0LmMJMjAxMC0wOS0yNSAxNTozMDo1NC4wMDAwMDAw MDAgKzAyMDAKKysrKyBnZGItNy4yL2dkYi9saW51eC1uYXQuYwkyMDEwLTA5LTI1IDE1OjM3OjIz LjAwMDAwMDAwMCArMDIwMAorQEAgLTI3MDIsNiArMjcwMiw4IEBAIHN0b3Bfd2FpdF9jYWxsYmFj ayAoc3RydWN0IGx3cF9pbmZvICpscCwKKyAgICAgeworICAgICAgIGludCBzdGF0dXM7CisgCisr ICAgICAgZ2RiX2Fzc2VydCAobHAtPnJlc3VtZWQpOworKworICAgICAgIHN0YXR1cyA9IHdhaXRf bHdwIChscCk7CisgICAgICAgaWYgKHN0YXR1cyA9PSAwKQorIAlyZXR1cm4gMDsKK0BAIC0yNzI2 LDExMCArMjcyOCw2MSBAQCBzdG9wX3dhaXRfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAqbHAs CisgCisgICAgICAgaWYgKFdTVE9QU0lHIChzdGF0dXMpICE9IFNJR1NUT1ApCisgCXsKKy0JICBp ZiAoV1NUT1BTSUcgKHN0YXR1cykgPT0gU0lHVFJBUCkKKy0JICAgIHsKKy0JICAgICAgLyogSWYg YSBMV1Agb3RoZXIgdGhhbiB0aGUgTFdQIHRoYXQgd2UncmUgcmVwb3J0aW5nIGFuCistCSAgICAg ICAgIGV2ZW50IGZvciBoYXMgaGl0IGEgR0RCIGJyZWFrcG9pbnQgKGFzIG9wcG9zZWQgdG8KKy0J ICAgICAgICAgc29tZSByYW5kb20gdHJhcCBzaWduYWwpLCB0aGVuIGp1c3QgYXJyYW5nZSBmb3Ig aXQgdG8KKy0JICAgICAgICAgaGl0IGl0IGFnYWluIGxhdGVyLiAgV2UgZG9uJ3Qga2VlcCB0aGUg U0lHVFJBUCBzdGF0dXMKKy0JICAgICAgICAgYW5kIGRvbid0IGZvcndhcmQgdGhlIFNJR1RSQVAg c2lnbmFsIHRvIHRoZSBMV1AuICBXZQorLQkgICAgICAgICB3aWxsIGhhbmRsZSB0aGUgY3VycmVu dCBldmVudCwgZXZlbnR1YWxseSB3ZSB3aWxsCistCSAgICAgICAgIHJlc3VtZSBhbGwgTFdQcywg YW5kIHRoaXMgb25lIHdpbGwgZ2V0IGl0cyBicmVha3BvaW50CistCSAgICAgICAgIHRyYXAgYWdh aW4uCistCistCSAgICAgICAgIElmIHdlIGRvIG5vdCBkbyB0aGlzLCB0aGVuIHdlIHJ1biB0aGUg cmlzayB0aGF0IHRoZQorLQkgICAgICAgICB1c2VyIHdpbGwgZGVsZXRlIG9yIGRpc2FibGUgdGhl IGJyZWFrcG9pbnQsIGJ1dCB0aGUKKy0JICAgICAgICAgdGhyZWFkIHdpbGwgaGF2ZSBhbHJlYWR5 IHRyaXBwZWQgb24gaXQuICAqLworLQorLQkgICAgICAvKiBTYXZlIHRoZSB0cmFwJ3Mgc2lnaW5m byBpbiBjYXNlIHdlIG5lZWQgaXQgbGF0ZXIuICAqLworLQkgICAgICBzYXZlX3NpZ2luZm8gKGxw KTsKKy0KKy0JICAgICAgc2F2ZV9zaWd0cmFwIChscCk7CistCistCSAgICAgIC8qIE5vdyByZXN1 bWUgdGhpcyBMV1AgYW5kIGdldCB0aGUgU0lHU1RPUCBldmVudC4gKi8KKy0JICAgICAgZXJybm8g PSAwOworLQkgICAgICBwdHJhY2UgKFBUUkFDRV9DT05ULCBHRVRfTFdQIChscC0+cHRpZCksIDAs IDApOworLQkgICAgICBpZiAoZGVidWdfbGludXhfbmF0KQorLQkJeworLQkJICBmcHJpbnRmX3Vu ZmlsdGVyZWQgKGdkYl9zdGRsb2csCistCQkJCSAgICAgICJQVFJBQ0VfQ09OVCAlcywgMCwgMCAo JXMpXG4iLAorLQkJCQkgICAgICB0YXJnZXRfcGlkX3RvX3N0ciAobHAtPnB0aWQpLAorLQkJCQkg ICAgICBlcnJubyA/IHNhZmVfc3RyZXJyb3IgKGVycm5vKSA6ICJPSyIpOworLQorLQkJICBmcHJp bnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCistCQkJCSAgICAgICJTV0M6IENhbmRpZGF0ZSBT SUdUUkFQIGV2ZW50IGluICVzXG4iLAorLQkJCQkgICAgICB0YXJnZXRfcGlkX3RvX3N0ciAobHAt PnB0aWQpKTsKKy0JCX0KKy0JICAgICAgLyogSG9sZCB0aGlzIGV2ZW50L3dhaXRzdGF0dXMgd2hp bGUgd2UgY2hlY2sgdG8gc2VlIGlmCistCQkgdGhlcmUgYXJlIGFueSBtb3JlICh3ZSBzdGlsbCB3 YW50IHRvIGdldCB0aGF0IFNJR1NUT1ApLiAqLworLQkgICAgICBzdG9wX3dhaXRfY2FsbGJhY2sg KGxwLCBOVUxMKTsKKysJICAvKiBUaGUgdGhyZWFkIHdhcyBzdG9wcGVkIHdpdGggYSBzaWduYWwg b3RoZXIgdGhhbiBTSUdTVE9QLiAgKi8KKyAKKy0JICAgICAgLyogSG9sZCB0aGUgU0lHVFJBUCBm b3IgaGFuZGxpbmcgYnkgbGludXhfbmF0X3dhaXQuICBJZgorLQkJIHRoZXJlJ3MgYW5vdGhlciBl dmVudCwgdGhyb3cgaXQgYmFjayBpbnRvIHRoZQorLQkJIHF1ZXVlLiAqLworLQkgICAgICBpZiAo bHAtPnN0YXR1cykKKy0JCXsKKy0JCSAgaWYgKGRlYnVnX2xpbnV4X25hdCkKKy0JCSAgICBmcHJp bnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCistCQkJCQkiU1dDOiBraWxsICVzLCAlc1xuIiwK Ky0JCQkJCXRhcmdldF9waWRfdG9fc3RyIChscC0+cHRpZCksCistCQkJCQlzdGF0dXNfdG9fc3Ry ICgoaW50KSBzdGF0dXMpKTsKKy0JCSAga2lsbF9sd3AgKEdFVF9MV1AgKGxwLT5wdGlkKSwgV1NU T1BTSUcgKGxwLT5zdGF0dXMpKTsKKy0JCX0KKysJICAvKiBTYXZlIHRoZSB0cmFwJ3Mgc2lnaW5m byBpbiBjYXNlIHdlIG5lZWQgaXQgbGF0ZXIuICAqLworKwkgIHNhdmVfc2lnaW5mbyAobHApOwor IAorLQkgICAgICAvKiBTYXZlIHRoZSBzaWd0cmFwIGV2ZW50LiAqLworLQkgICAgICBscC0+c3Rh dHVzID0gc3RhdHVzOworLQkgICAgICByZXR1cm4gMDsKKy0JICAgIH0KKy0JICBlbHNlCistCSAg ICB7CistCSAgICAgIC8qIFRoZSB0aHJlYWQgd2FzIHN0b3BwZWQgd2l0aCBhIHNpZ25hbCBvdGhl ciB0aGFuCistCSAgICAgICAgIFNJR1NUT1AsIGFuZCBkaWRuJ3QgYWNjaWRlbnRhbGx5IHRyaXAg YSBicmVha3BvaW50LiAqLworKwkgIHNhdmVfc2lndHJhcCAobHApOworIAorLQkgICAgICBpZiAo ZGVidWdfbGludXhfbmF0KQorLQkJeworLQkJICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRs b2csCistCQkJCSAgICAgICJTV0M6IFBlbmRpbmcgZXZlbnQgJXMgaW4gJXNcbiIsCistCQkJCSAg ICAgIHN0YXR1c190b19zdHIgKChpbnQpIHN0YXR1cyksCistCQkJCSAgICAgIHRhcmdldF9waWRf dG9fc3RyIChscC0+cHRpZCkpOworLQkJfQorLQkgICAgICAvKiBOb3cgcmVzdW1lIHRoaXMgTFdQ IGFuZCBnZXQgdGhlIFNJR1NUT1AgZXZlbnQuICovCistCSAgICAgIGVycm5vID0gMDsKKy0JICAg ICAgcHRyYWNlIChQVFJBQ0VfQ09OVCwgR0VUX0xXUCAobHAtPnB0aWQpLCAwLCAwKTsKKy0JICAg ICAgaWYgKGRlYnVnX2xpbnV4X25hdCkKKy0JCWZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxv ZywKKy0JCQkJICAgICJTV0M6IFBUUkFDRV9DT05UICVzLCAwLCAwICglcylcbiIsCistCQkJCSAg ICB0YXJnZXRfcGlkX3RvX3N0ciAobHAtPnB0aWQpLAorLQkJCQkgICAgZXJybm8gPyBzYWZlX3N0 cmVycm9yIChlcnJubykgOiAiT0siKTsKKy0KKy0JICAgICAgLyogSG9sZCB0aGlzIGV2ZW50L3dh aXRzdGF0dXMgd2hpbGUgd2UgY2hlY2sgdG8gc2VlIGlmCistCSAgICAgICAgIHRoZXJlIGFyZSBh bnkgbW9yZSAod2Ugc3RpbGwgd2FudCB0byBnZXQgdGhhdCBTSUdTVE9QKS4gKi8KKy0JICAgICAg c3RvcF93YWl0X2NhbGxiYWNrIChscCwgTlVMTCk7CisrCSAgaWYgKGRlYnVnX2xpbnV4X25hdCkK KysJICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKKysJCQkJIlNXQzogUGVuZGlu ZyBldmVudCAlcyBpbiAlc1xuIiwKKysJCQkJc3RhdHVzX3RvX3N0ciAoKGludCkgc3RhdHVzKSwK KysJCQkJdGFyZ2V0X3BpZF90b19zdHIgKGxwLT5wdGlkKSk7CisgCistCSAgICAgIC8qIElmIHRo ZSBscC0+c3RhdHVzIGZpZWxkIGlzIHN0aWxsIGVtcHR5LCB1c2UgaXQgdG8KKy0JCSBob2xkIHRo aXMgZXZlbnQuICBJZiBub3QsIHRoZW4gdGhpcyBldmVudCBtdXN0IGJlCistCQkgcmV0dXJuZWQg dG8gdGhlIGV2ZW50IHF1ZXVlIG9mIHRoZSBMV1AuICAqLworLQkgICAgICBpZiAobHAtPnN0YXR1 cykKKy0JCXsKKy0JCSAgaWYgKGRlYnVnX2xpbnV4X25hdCkKKy0JCSAgICB7CistCQkgICAgICBm cHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCistCQkJCQkgICJTV0M6IGtpbGwgJXMsICVz XG4iLAorLQkJCQkJICB0YXJnZXRfcGlkX3RvX3N0ciAobHAtPnB0aWQpLAorLQkJCQkJICBzdGF0 dXNfdG9fc3RyICgoaW50KSBzdGF0dXMpKTsKKy0JCSAgICB9CistCQkgIGtpbGxfbHdwIChHRVRf TFdQIChscC0+cHRpZCksIFdTVE9QU0lHIChzdGF0dXMpKTsKKy0JCX0KKy0JICAgICAgZWxzZQor LQkJbHAtPnN0YXR1cyA9IHN0YXR1czsKKy0JICAgICAgcmV0dXJuIDA7CistCSAgICB9CisrCSAg LyogU2F2ZSB0aGUgc2lndHJhcCBldmVudC4gKi8KKysJICBscC0+c3RhdHVzID0gc3RhdHVzOwor KwkgIGdkYl9hc3NlcnQgKCEgbHAtPnN0b3BwZWQpOworKwkgIGdkYl9hc3NlcnQgKGxwLT5zaWdu YWxsZWQpOworKwkgIGxwLT5zdG9wcGVkID0gMTsKKyAJfQorICAgICAgIGVsc2UKKyAJeworIAkg IC8qIFdlIGNhdWdodCB0aGUgU0lHU1RPUCB0aGF0IHdlIGludGVuZGVkIHRvIGNhdGNoLCBzbwor IAkgICAgIHRoZXJlJ3Mgbm8gU0lHU1RPUCBwZW5kaW5nLiAgKi8KKy0JICBscC0+c3RvcHBlZCA9 IDE7CisrCisrCSAgaWYgKGRlYnVnX2xpbnV4X25hdCkKKysJICAgIGZwcmludGZfdW5maWx0ZXJl ZCAoZ2RiX3N0ZGxvZywKKysJCQkJIlNXQzogRGVsYXllZCBTSUdTVE9QIGNhdWdodCBmb3IgJXMu XG4iLAorKwkJCQl0YXJnZXRfcGlkX3RvX3N0ciAobHAtPnB0aWQpKTsKKysKKysJICBpZiAobHAt PnN0ZXApCisrCSAgICB7CisrCSAgICAgIC8qIExQLT5TVEFUVVMgaXMgMCBoZXJlLiAgVGhhdCBt ZWFucyBTSUdUUkFQIGZyb20KKysJCSBQVFJBQ0VfU0lOR0xFU1RFUCBzdGlsbCBoYXMgdG8gYmUg ZGVsaXZlcmVkIGZvciB0aGlzIGluZmVyaW9yCisrCQkgc3RvcC4gIENhdGNoaW5nIHRoZSBTSUdU UkFQIGV2ZW50IGlzIGltcG9ydGFudCB0byBwcmV2ZW50CisrCQkgc3RhcnZhdGlvbiBpbiBzZWxl Y3RfZXZlbnRfbHdwLiAgKi8KKysKKysJICAgICAgcmVnaXN0ZXJzX2NoYW5nZWQgKCk7CisrCSAg ICAgIGxpbnV4X29wcy0+dG9fcmVzdW1lIChsaW51eF9vcHMsIHBpZF90b19wdGlkIChHRVRfTFdQ IChscC0+cHRpZCkpLAorKwkJCQkgICAgMSwgVEFSR0VUX1NJR05BTF8wKTsKKysJICAgICAgaWYg KGRlYnVnX2xpbnV4X25hdCkKKysJCWZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKKysJ CQkJICAgICJTV0M6ICVzICVzLCAwLCAwIChkaXNjYXJkIFNJR1NUT1ApXG4iLAorKwkJCQkgICAg IlBUUkFDRV9TSU5HTEVTVEVQIiwKKysJCQkJICAgIHRhcmdldF9waWRfdG9fc3RyIChscC0+cHRp ZCkpOworKworKwkgICAgICBscC0+c3RvcHBlZCA9IDA7CisrCSAgICAgIGdkYl9hc3NlcnQgKGxw LT5yZXN1bWVkKTsKKysJICAgICAgc3RvcF93YWl0X2NhbGxiYWNrIChscCwgTlVMTCk7CisrCSAg ICAgIGdkYl9hc3NlcnQgKGxwLT5zdG9wcGVkKTsKKysJICAgIH0KKysJICBlbHNlCisrCSAgICBs cC0+c3RvcHBlZCA9IDE7CisrCisrCSAgLyogUmVzZXQgU0lHTkFMTEVEIG9ubHkgYWZ0ZXIgdGhl IHN0b3Bfd2FpdF9jYWxsYmFjayBjYWxsIGFib3ZlIGFzCisrCSAgICAgaXQgZG9lcyBnZGJfYXNz ZXJ0IG9uIFNJR05BTExFRC4gICovCisgCSAgbHAtPnNpZ25hbGxlZCA9IDA7CisgCX0KKyAgICAg fQorQEAgLTM0MTYsNTIgKzMzNjksNiBAQCByZXRyeToKKyAJbHAgPSBOVUxMOworICAgICB9Cisg CistICBpZiAobHAgJiYgbHAtPnNpZ25hbGxlZCkKKy0gICAgeworLSAgICAgIC8qIEEgcGVuZGlu ZyBTSUdTVE9QIG1heSBpbnRlcmZlcmUgd2l0aCB0aGUgbm9ybWFsIHN0cmVhbSBvZgorLSAgICAg ICAgIGV2ZW50cy4gIEluIGEgdHlwaWNhbCBjYXNlIHdoZXJlIGludGVyZmVyZW5jZSBpcyBhIHBy b2JsZW0sCistICAgICAgICAgd2UgaGF2ZSBhIFNJR1NUT1Agc2lnbmFsIHBlbmRpbmcgZm9yIExX UCBBIHdoaWxlCistICAgICAgICAgc2luZ2xlLXN0ZXBwaW5nIGl0LCBlbmNvdW50ZXIgYW4gZXZl bnQgaW4gTFdQIEIsIGFuZCB0YWtlIHRoZQorLSAgICAgICAgIHBlbmRpbmcgU0lHU1RPUCB3aGls ZSB0cnlpbmcgdG8gc3RvcCBMV1AgQS4gIEFmdGVyIHByb2Nlc3NpbmcKKy0gICAgICAgICB0aGUg ZXZlbnQgaW4gTFdQIEIsIExXUCBBIGlzIGNvbnRpbnVlZCwgYW5kIHdlJ2xsIG5ldmVyIHNlZQor LSAgICAgICAgIHRoZSBTSUdUUkFQIGFzc29jaWF0ZWQgd2l0aCB0aGUgbGFzdCB0aW1lIHdlIHdl cmUKKy0gICAgICAgICBzaW5nbGUtc3RlcHBpbmcgTFdQIEEuICAqLworLQorLSAgICAgIC8qIFJl c3VtZSB0aGUgdGhyZWFkLiAgSXQgc2hvdWxkIGhhbHQgaW1tZWRpYXRlbHkgcmV0dXJuaW5nIHRo ZQorLSAgICAgICAgIHBlbmRpbmcgU0lHU1RPUC4gICovCistICAgICAgcmVnaXN0ZXJzX2NoYW5n ZWQgKCk7CistICAgICAgbGludXhfb3BzLT50b19yZXN1bWUgKGxpbnV4X29wcywgcGlkX3RvX3B0 aWQgKEdFVF9MV1AgKGxwLT5wdGlkKSksCistCQkJICAgIGxwLT5zdGVwLCBUQVJHRVRfU0lHTkFM XzApOworLSAgICAgIGlmIChkZWJ1Z19saW51eF9uYXQpCistCWZwcmludGZfdW5maWx0ZXJlZCAo Z2RiX3N0ZGxvZywKKy0JCQkgICAgIkxMVzogJXMgJXMsIDAsIDAgKGV4cGVjdCBTSUdTVE9QKVxu IiwKKy0JCQkgICAgbHAtPnN0ZXAgPyAiUFRSQUNFX1NJTkdMRVNURVAiIDogIlBUUkFDRV9DT05U IiwKKy0JCQkgICAgdGFyZ2V0X3BpZF90b19zdHIgKGxwLT5wdGlkKSk7CistICAgICAgbHAtPnN0 b3BwZWQgPSAwOworLSAgICAgIGdkYl9hc3NlcnQgKGxwLT5yZXN1bWVkKTsKKy0KKy0gICAgICAv KiBDYXRjaCB0aGUgcGVuZGluZyBTSUdTVE9QLiAgKi8KKy0gICAgICBzdGF0dXMgPSBscC0+c3Rh dHVzOworLSAgICAgIGxwLT5zdGF0dXMgPSAwOworLQorLSAgICAgIHN0b3Bfd2FpdF9jYWxsYmFj ayAobHAsIE5VTEwpOworLQorLSAgICAgIC8qIElmIHRoZSBscC0+c3RhdHVzIGZpZWxkIGlzbid0 IGVtcHR5LCB3ZSBjYXVnaHQgYW5vdGhlciBzaWduYWwKKy0JIHdoaWxlIGZsdXNoaW5nIHRoZSBT SUdTVE9QLiAgUmV0dXJuIGl0IGJhY2sgdG8gdGhlIGV2ZW50CistCSBxdWV1ZSBvZiB0aGUgTFdQ LCBhcyB3ZSBhbHJlYWR5IGhhdmUgYW4gZXZlbnQgdG8gaGFuZGxlLiAgKi8KKy0gICAgICBpZiAo bHAtPnN0YXR1cykKKy0JeworLQkgIGlmIChkZWJ1Z19saW51eF9uYXQpCistCSAgICBmcHJpbnRm X3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCistCQkJCSJMTFc6IGtpbGwgJXMsICVzXG4iLAorLQkJ CQl0YXJnZXRfcGlkX3RvX3N0ciAobHAtPnB0aWQpLAorLQkJCQlzdGF0dXNfdG9fc3RyIChscC0+ c3RhdHVzKSk7CistCSAga2lsbF9sd3AgKEdFVF9MV1AgKGxwLT5wdGlkKSwgV1NUT1BTSUcgKGxw LT5zdGF0dXMpKTsKKy0JfQorLQorLSAgICAgIGxwLT5zdGF0dXMgPSBzdGF0dXM7CistICAgIH0K Ky0KKyAgIGlmICghdGFyZ2V0X2Nhbl9hc3luY19wICgpKQorICAgICB7CisgICAgICAgLyogQ2F1 c2VzIFNJR0lOVCB0byBiZSBwYXNzZWQgb24gdG8gdGhlIGF0dGFjaGVkIHByb2Nlc3MuICAqLwor SW5kZXg6IGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zaWdpbmZvLXRocmVhZHMu YworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAw MCArMDAwMAorKysrIGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zaWdpbmZvLXRo cmVhZHMuYwkyMDEwLTA5LTI1IDE1OjMyOjMyLjAwMDAwMDAwMCArMDIwMAorQEAgLTAsMCArMSw0 NDcgQEAKKysvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2Vy LgorKworKyAgIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor KworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysjZGVmaW5l IF9HTlVfU09VUkNFCisrI2luY2x1ZGUgPHB0aHJlYWQuaD4KKysjaW5jbHVkZSA8c3RkaW8uaD4K KysjaW5jbHVkZSA8bGltaXRzLmg+CisrI2luY2x1ZGUgPGVycm5vLmg+CisrI2luY2x1ZGUgPHN0 ZGxpYi5oPgorKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8YXNzZXJ0Lmg+CisrI2lu Y2x1ZGUgPHN5cy90eXBlcy5oPgorKyNpbmNsdWRlIDxzaWduYWwuaD4KKysjaW5jbHVkZSA8dW5p c3RkLmg+CisrI2luY2x1ZGUgPGFzbS91bmlzdGQuaD4KKysKKysjZGVmaW5lIGdldHRpZCgpIHN5 c2NhbGwgKF9fTlJfZ2V0dGlkKQorKyNkZWZpbmUgdGdraWxsKHRnaWQsIHRpZCwgc2lnKSBzeXNj YWxsIChfX05SX3Rna2lsbCwgdGdpZCwgdGlkLCBzaWcpCisrCisrLyogVGVybWluYXRlIGFsd2F5 cyBpbiB0aGUgbWFpbiB0YXNrLCBpdCBjYW4gbG9jayB1cCB3aXRoIFNJR1NUT1BwZWQgR0RCCisr ICAgb3RoZXJ3aXNlLiAgKi8KKysjZGVmaW5lIFRJTUVPVVQgKGdldHRpZCAoKSA9PSBnZXRwaWQo KSA/IDEwIDogMTUpCisrCisrc3RhdGljIHBpZF90IHRocmVhZDFfdGlkOworK3N0YXRpYyBwdGhy ZWFkX2NvbmRfdCB0aHJlYWQxX3RpZF9jb25kID0gUFRIUkVBRF9DT05EX0lOSVRJQUxJWkVSOwor K3N0YXRpYyBwdGhyZWFkX211dGV4X3QgdGhyZWFkMV90aWRfbXV0ZXggPSBQVEhSRUFEX0VSUk9S Q0hFQ0tfTVVURVhfSU5JVElBTElaRVJfTlA7Cisrc3RhdGljIGludCB0aHJlYWQxX3NpZ3VzcjFf aGl0OworK3N0YXRpYyBpbnQgdGhyZWFkMV9zaWd1c3IyX2hpdDsKKysKKytzdGF0aWMgcGlkX3Qg dGhyZWFkMl90aWQ7Cisrc3RhdGljIHB0aHJlYWRfY29uZF90IHRocmVhZDJfdGlkX2NvbmQgPSBQ VEhSRUFEX0NPTkRfSU5JVElBTElaRVI7Cisrc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCB0aHJlYWQy X3RpZF9tdXRleCA9IFBUSFJFQURfRVJST1JDSEVDS19NVVRFWF9JTklUSUFMSVpFUl9OUDsKKytz dGF0aWMgaW50IHRocmVhZDJfc2lndXNyMV9oaXQ7Cisrc3RhdGljIGludCB0aHJlYWQyX3NpZ3Vz cjJfaGl0OworKworK3N0YXRpYyBwdGhyZWFkX211dGV4X3QgdGVybWluYXRlX211dGV4ID0gUFRI UkVBRF9FUlJPUkNIRUNLX01VVEVYX0lOSVRJQUxJWkVSX05QOworKworKy8qIERvIG5vdCB1c2Ug YWxhcm0gYXMgaXQgd291bGQgY3JlYXRlIGEgcHRyYWNlIGV2ZW50IHdoaWNoIHdvdWxkIGhhbmcg dXAgdXMgaWYKKysgICB3ZSBhcmUgYmVpbmcgdHJhY2VkIGJ5IEdEQiB3aGljaCB3ZSBzdG9wcGVk IG91cnNlbHZlcy4gICovCisrCisrc3RhdGljIHZvaWQgdGltZWRfbXV0ZXhfbG9jayAocHRocmVh ZF9tdXRleF90ICptdXRleCkKKyt7CisrICBpbnQgaTsKKysgIHN0cnVjdCB0aW1lc3BlYyBzdGFy dCwgbm93OworKworKyAgaSA9IGNsb2NrX2dldHRpbWUgKENMT0NLX01PTk9UT05JQywgJnN0YXJ0 KTsKKysgIGFzc2VydCAoaSA9PSAwKTsKKysKKysgIGRvCisrICAgIHsKKysgICAgICBpID0gcHRo cmVhZF9tdXRleF90cnlsb2NrIChtdXRleCk7CisrICAgICAgaWYgKGkgPT0gMCkKKysJcmV0dXJu OworKyAgICAgIGFzc2VydCAoaSA9PSBFQlVTWSk7CisrCisrICAgICAgaSA9IGNsb2NrX2dldHRp bWUgKENMT0NLX01PTk9UT05JQywgJm5vdyk7CisrICAgICAgYXNzZXJ0IChpID09IDApOworKyAg ICAgIGFzc2VydCAobm93LnR2X3NlYyA+PSBzdGFydC50dl9zZWMpOworKyAgICB9CisrICB3aGls ZSAobm93LnR2X3NlYyAtIHN0YXJ0LnR2X3NlYyA8IFRJTUVPVVQpOworKworKyAgZnByaW50ZiAo c3RkZXJyLCAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIGludGVybmFsIGxvY2shXG4iKTsKKysgIGV4 aXQgKEVYSVRfRkFJTFVSRSk7CisrfQorKworK3N0YXRpYyB2b2lkCisraGFuZGxlciAoaW50IHNp Z25vLCBzaWdpbmZvX3QgKnNpZ2luZm8sIHZvaWQgKmV4Y2VwdGlvbikKKyt7CisrICBpbnQgKnZh cnA7CisrCisrICBhc3NlcnQgKHNpZ2luZm8tPnNpX3NpZ25vID09IHNpZ25vKTsKKysgIGFzc2Vy dCAoc2lnaW5mby0+c2lfY29kZSA9PSBTSV9US0lMTCk7CisrICBhc3NlcnQgKHNpZ2luZm8tPnNp X3BpZCA9PSBnZXRwaWQgKCkpOworKworKyAgaWYgKGdldHRpZCAoKSA9PSB0aHJlYWQxX3RpZCkK KysgICAgeworKyAgICAgIGlmIChzaWdubyA9PSBTSUdVU1IxKQorKwl2YXJwID0gJnRocmVhZDFf c2lndXNyMV9oaXQ7CisrICAgICAgZWxzZSBpZiAoc2lnbm8gPT0gU0lHVVNSMikKKysJdmFycCA9 ICZ0aHJlYWQxX3NpZ3VzcjJfaGl0OworKyAgICAgIGVsc2UKKysJYXNzZXJ0ICgwKTsKKysgICAg fQorKyAgZWxzZSBpZiAoZ2V0dGlkICgpID09IHRocmVhZDJfdGlkKQorKyAgICB7CisrICAgICAg aWYgKHNpZ25vID09IFNJR1VTUjEpCisrCXZhcnAgPSAmdGhyZWFkMl9zaWd1c3IxX2hpdDsKKysg ICAgICBlbHNlIGlmIChzaWdubyA9PSBTSUdVU1IyKQorKwl2YXJwID0gJnRocmVhZDJfc2lndXNy Ml9oaXQ7CisrICAgICAgZWxzZQorKwlhc3NlcnQgKDApOworKyAgICB9CisrICBlbHNlCisrICAg IGFzc2VydCAoMCk7CisrCisrICBpZiAoKnZhcnApCisrICAgIHsKKysgICAgICBmcHJpbnRmIChz dGRlcnIsICJTaWduYWwgJWQgZm9yIFRJRCAlbHUgaGFzIGJlZW4gYWxyZWFkeSBoaXQhXG4iLCBz aWdubywKKysJICAgICAgICh1bnNpZ25lZCBsb25nKSBnZXR0aWQgKCkpOworKyAgICAgIGV4aXQg KEVYSVRfRkFJTFVSRSk7CisrICAgIH0KKysgICp2YXJwID0gMTsKKyt9CisrCisrc3RhdGljIHZv aWQgKgorK3RocmVhZDFfZnVuYyAodm9pZCAqdW51c2VkKQorK3sKKysgIGludCBpOworKworKyAg dGltZWRfbXV0ZXhfbG9jayAoJnRocmVhZDFfdGlkX211dGV4KTsKKysKKysgIC8qIFRIUkVBRDFf VElEX01VVEVYIG11c3QgYmUgYWxyZWFkeSBsb2NrZWQgdG8gYXZvaWQgcmFjZS4gICovCisrICB0 aHJlYWQxX3RpZCA9IGdldHRpZCAoKTsKKysKKysgIGkgPSBwdGhyZWFkX2NvbmRfc2lnbmFsICgm dGhyZWFkMV90aWRfY29uZCk7CisrICBhc3NlcnQgKGkgPT0gMCk7CisrICBpID0gcHRocmVhZF9t dXRleF91bmxvY2sgKCZ0aHJlYWQxX3RpZF9tdXRleCk7CisrICBhc3NlcnQgKGkgPT0gMCk7Cisr CisrICAvKiBCZSBzdXJlIHRoZSAidCAodHJhY2luZyBzdG9wKSIgdGVzdCBjYW4gcHJvY2VlZCBm b3IgYm90aCB0aHJlYWRzLiAgKi8KKysgIHRpbWVkX211dGV4X2xvY2sgKCZ0ZXJtaW5hdGVfbXV0 ZXgpOworKyAgaSA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrICgmdGVybWluYXRlX211dGV4KTsKKysg IGFzc2VydCAoaSA9PSAwKTsKKysKKysgIGlmICghIHRocmVhZDFfc2lndXNyMV9oaXQpCisrICAg IHsKKysgICAgICBmcHJpbnRmIChzdGRlcnIsICJUaHJlYWQgMSBzaWduYWwgU0lHVVNSMSBub3Qg aGl0IVxuIik7CisrICAgICAgZXhpdCAoRVhJVF9GQUlMVVJFKTsKKysgICAgfQorKyAgaWYgKCEg dGhyZWFkMV9zaWd1c3IyX2hpdCkKKysgICAgeworKyAgICAgIGZwcmludGYgKHN0ZGVyciwgIlRo cmVhZCAxIHNpZ25hbCBTSUdVU1IyIG5vdCBoaXQhXG4iKTsKKysgICAgICBleGl0IChFWElUX0ZB SUxVUkUpOworKyAgICB9CisrCisrICByZXR1cm4gTlVMTDsKKyt9CisrCisrc3RhdGljIHZvaWQg KgorK3RocmVhZDJfZnVuYyAodm9pZCAqdW51c2VkKQorK3sKKysgIGludCBpOworKworKyAgdGlt ZWRfbXV0ZXhfbG9jayAoJnRocmVhZDJfdGlkX211dGV4KTsKKysKKysgIC8qIFRIUkVBRDJfVElE X01VVEVYIG11c3QgYmUgYWxyZWFkeSBsb2NrZWQgdG8gYXZvaWQgcmFjZS4gICovCisrICB0aHJl YWQyX3RpZCA9IGdldHRpZCAoKTsKKysKKysgIGkgPSBwdGhyZWFkX2NvbmRfc2lnbmFsICgmdGhy ZWFkMl90aWRfY29uZCk7CisrICBhc3NlcnQgKGkgPT0gMCk7CisrICBpID0gcHRocmVhZF9tdXRl eF91bmxvY2sgKCZ0aHJlYWQyX3RpZF9tdXRleCk7CisrICBhc3NlcnQgKGkgPT0gMCk7CisrCisr ICAvKiBCZSBzdXJlIHRoZSAidCAodHJhY2luZyBzdG9wKSIgdGVzdCBjYW4gcHJvY2VlZCBmb3Ig Ym90aCB0aHJlYWRzLiAgKi8KKysgIHRpbWVkX211dGV4X2xvY2sgKCZ0ZXJtaW5hdGVfbXV0ZXgp OworKyAgaSA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrICgmdGVybWluYXRlX211dGV4KTsKKysgIGFz c2VydCAoaSA9PSAwKTsKKysKKysgIGlmICghIHRocmVhZDJfc2lndXNyMV9oaXQpCisrICAgIHsK KysgICAgICBmcHJpbnRmIChzdGRlcnIsICJUaHJlYWQgMiBzaWduYWwgU0lHVVNSMSBub3QgaGl0 IVxuIik7CisrICAgICAgZXhpdCAoRVhJVF9GQUlMVVJFKTsKKysgICAgfQorKyAgaWYgKCEgdGhy ZWFkMl9zaWd1c3IyX2hpdCkKKysgICAgeworKyAgICAgIGZwcmludGYgKHN0ZGVyciwgIlRocmVh ZCAyIHNpZ25hbCBTSUdVU1IyIG5vdCBoaXQhXG4iKTsKKysgICAgICBleGl0IChFWElUX0ZBSUxV UkUpOworKyAgICB9CisrCisrICByZXR1cm4gTlVMTDsKKyt9CisrCisrc3RhdGljIGNvbnN0IGNo YXIgKgorK3Byb2Nfc3RyaW5nIChjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqbGlu ZSkKKyt7CisrICBGSUxFICpmOworKyAgc3RhdGljIGNoYXIgYnVmW0xJTkVfTUFYXTsKKysgIHNp emVfdCBsaW5lX2xlbiA9IHN0cmxlbiAobGluZSk7CisrCisrICBmID0gZm9wZW4gKGZpbGVuYW1l LCAiciIpOworKyAgaWYgKGYgPT0gTlVMTCkKKysgICAgeworKyAgICAgIGZwcmludGYgKHN0ZGVy ciwgImZvcGVuIChcIiVzXCIpIGZvciBcIiVzXCI6ICVzXG4iLCBmaWxlbmFtZSwgbGluZSwKKysJ ICAgICAgIHN0cmVycm9yIChlcnJubykpOworKyAgICAgIGV4aXQgKEVYSVRfRkFJTFVSRSk7Cisr ICAgIH0KKysgIHdoaWxlIChlcnJubyA9IDAsIGZnZXRzIChidWYsIHNpemVvZiAoYnVmKSwgZikp CisrICAgIHsKKysgICAgICBjaGFyICpzOworKworKyAgICAgIHMgPSBzdHJjaHIgKGJ1ZiwgJ1xu Jyk7CisrICAgICAgYXNzZXJ0IChzICE9IE5VTEwpOworKyAgICAgICpzID0gMDsKKysKKysgICAg ICBpZiAoc3RybmNtcCAoYnVmLCBsaW5lLCBsaW5lX2xlbikgIT0gMCkKKysJY29udGludWU7Cisr CisrICAgICAgaWYgKGZjbG9zZSAoZikpCisrCXsKKysJICBmcHJpbnRmIChzdGRlcnIsICJmY2xv c2UgKFwiJXNcIikgZm9yIFwiJXNcIjogJXNcbiIsIGZpbGVuYW1lLCBsaW5lLAorKwkJICAgc3Ry ZXJyb3IgKGVycm5vKSk7CisrCSAgZXhpdCAoRVhJVF9GQUlMVVJFKTsKKysJfQorKworKyAgICAg IHJldHVybiAmYnVmW2xpbmVfbGVuXTsKKysgICAgfQorKyAgaWYgKGVycm5vICE9IDApCisrICAg IHsKKysgICAgICBmcHJpbnRmIChzdGRlcnIsICJmZ2V0cyAoXCIlc1wiOiAlc1xuIiwgZmlsZW5h bWUsIHN0cmVycm9yIChlcnJubykpOworKyAgICAgIGV4aXQgKEVYSVRfRkFJTFVSRSk7CisrICAg IH0KKysgIGZwcmludGYgKHN0ZGVyciwgIlwiJXNcIjogTm8gbGluZSBcIiVzXCIgZm91bmQuXG4i LCBmaWxlbmFtZSwgbGluZSk7CisrICBleGl0IChFWElUX0ZBSUxVUkUpOworK30KKysKKytzdGF0 aWMgdW5zaWduZWQgbG9uZworK3Byb2NfdWxvbmcgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25z dCBjaGFyICpsaW5lKQorK3sKKysgIGNvbnN0IGNoYXIgKnMgPSBwcm9jX3N0cmluZyAoZmlsZW5h bWUsIGxpbmUpOworKyAgbG9uZyByZXR2YWw7CisrICBjaGFyICplbmQ7CisrCisrICBlcnJubyA9 IDA7CisrICByZXR2YWwgPSBzdHJ0b2wgKHMsICZlbmQsIDEwKTsKKysgIGlmIChyZXR2YWwgPCAw IHx8IHJldHZhbCA+PSBMT05HX01BWCB8fCAoZW5kICYmICplbmQpKQorKyAgICB7CisrICAgICAg ZnByaW50ZiAoc3RkZXJyLCAiXCIlc1wiOlwiJXNcIjogJWxkLCAlc1xuIiwgZmlsZW5hbWUsIGxp bmUsIHJldHZhbCwKKysJICAgICAgIHN0cmVycm9yIChlcnJubykpOworKyAgICAgIGV4aXQgKEVY SVRfRkFJTFVSRSk7CisrICAgIH0KKysgIHJldHVybiByZXR2YWw7CisrfQorKworK3N0YXRpYyB2 b2lkCisrc3RhdGVfd2FpdCAocGlkX3QgcHJvY2VzcywgY29uc3QgY2hhciAqd2FudGVkKQorK3sK KysgIGNoYXIgKmZpbGVuYW1lOworKyAgaW50IGk7CisrICBzdHJ1Y3QgdGltZXNwZWMgc3RhcnQs IG5vdzsKKysgIGNvbnN0IGNoYXIgKnN0YXRlOworKworKyAgaSA9IGFzcHJpbnRmICgmZmlsZW5h bWUsICIvcHJvYy8lbHUvc3RhdHVzIiwgKHVuc2lnbmVkIGxvbmcpIHByb2Nlc3MpOworKyAgYXNz ZXJ0IChpID4gMCk7CisrCisrICBpID0gY2xvY2tfZ2V0dGltZSAoQ0xPQ0tfTU9OT1RPTklDLCAm c3RhcnQpOworKyAgYXNzZXJ0IChpID09IDApOworKworKyAgZG8KKysgICAgeworKyAgICAgIHN0 YXRlID0gcHJvY19zdHJpbmcgKGZpbGVuYW1lLCAiU3RhdGU6XHQiKTsKKysKKysgICAgICAvKiB0 b3J2YWxkcy9saW51eC0yLjYuZ2l0IDQ2NDc2M2NmMWM2ZGY2MzJkY2NjOGYyZjRjN2U1MDE2MzE1 NGEyYzAKKysJIGhhcyBjaGFuZ2VkICJUICh0cmFjaW5nIHN0b3ApIiB0byAidCAodHJhY2luZyBz dG9wKSIuICBNYWtlIHRoZSBHREIKKysJIHRlc3RjYXNlIGJhY2t3YXJkIGNvbXBhdGlibGUgd2l0 aCBvbGRlciBMaW51eCBrZXJuZWxzLiAgKi8KKysgICAgICBpZiAoc3RyY21wIChzdGF0ZSwgIlQg KHRyYWNpbmcgc3RvcCkiKSA9PSAwKQorKwlzdGF0ZSA9ICJ0ICh0cmFjaW5nIHN0b3ApIjsKKysK KysgICAgICBpZiAoc3RyY21wIChzdGF0ZSwgd2FudGVkKSA9PSAwKQorKwl7CisrCSAgZnJlZSAo ZmlsZW5hbWUpOworKwkgIHJldHVybjsKKysJfQorKworKyAgICAgIGlmIChzY2hlZF95aWVsZCAo KSkKKysJeworKwkgIHBlcnJvciAoInNjaGVkX3lpZWxkKCkiKTsKKysJICBleGl0IChFWElUX0ZB SUxVUkUpOworKwl9CisrCisrICAgICAgaSA9IGNsb2NrX2dldHRpbWUgKENMT0NLX01PTk9UT05J QywgJm5vdyk7CisrICAgICAgYXNzZXJ0IChpID09IDApOworKyAgICAgIGFzc2VydCAobm93LnR2 X3NlYyA+PSBzdGFydC50dl9zZWMpOworKyAgICB9CisrICB3aGlsZSAobm93LnR2X3NlYyAtIHN0 YXJ0LnR2X3NlYyA8IFRJTUVPVVQpOworKworKyAgZnByaW50ZiAoc3RkZXJyLCAiVGltZWQgb3V0 IHdhaXRpbmcgZm9yIFBJRCAlbHUgXCIlc1wiIChub3cgaXQgaXMgXCIlc1wiKSFcbiIsCisrCSAg ICh1bnNpZ25lZCBsb25nKSBwcm9jZXNzLCB3YW50ZWQsIHN0YXRlKTsKKysgIGV4aXQgKEVYSVRf RkFJTFVSRSk7CisrfQorKworK3N0YXRpYyB2b2xhdGlsZSBwaWRfdCB0cmFjZXIgPSAwOworK3N0 YXRpYyBwdGhyZWFkX3QgdGhyZWFkMSwgdGhyZWFkMjsKKysKKytzdGF0aWMgdm9pZAorK2NsZWFu dXAgKHZvaWQpCisreworKyAgcHJpbnRmICgiUmVzdW1pbmcgR0RCIFBJRCAlbHUuXG4iLCAodW5z aWduZWQgbG9uZykgdHJhY2VyKTsKKysKKysgIGlmICh0cmFjZXIpCisrICAgIHsKKysgICAgICBp bnQgaTsKKysgICAgICBpbnQgdHJhY2VyX3NhdmUgPSB0cmFjZXI7CisrCisrICAgICAgdHJhY2Vy ID0gMDsKKysKKysgICAgICBpID0ga2lsbCAodHJhY2VyX3NhdmUsIFNJR0NPTlQpOworKyAgICAg IGFzc2VydCAoaSA9PSAwKTsKKysgICAgfQorK30KKysKKytpbnQKKyttYWluIChpbnQgYXJnYywg Y2hhciAqKmFyZ3YpCisreworKyAgaW50IGk7CisrICBpbnQgc3RhbmRhbG9uZSA9IDA7CisrICBz dHJ1Y3Qgc2lnYWN0aW9uIGFjdDsKKysKKysgIGlmIChhcmdjID09IDIgJiYgc3RyY21wIChhcmd2 WzFdLCAiLXMiKSA9PSAwKQorKyAgICBzdGFuZGFsb25lID0gMTsKKysgIGVsc2UKKysgICAgYXNz ZXJ0IChhcmdjID09IDEpOworKworKyAgc2V0YnVmIChzdGRvdXQsIE5VTEwpOworKworKyAgdGlt ZWRfbXV0ZXhfbG9jayAoJnRocmVhZDFfdGlkX211dGV4KTsKKysgIHRpbWVkX211dGV4X2xvY2sg KCZ0aHJlYWQyX3RpZF9tdXRleCk7CisrCisrICB0aW1lZF9tdXRleF9sb2NrICgmdGVybWluYXRl X211dGV4KTsKKysKKysgIGVycm5vID0gMDsKKysgIG1lbXNldCAoJmFjdCwgMCwgc2l6ZW9mIChh Y3QpKTsKKysgIGFjdC5zYV9zaWdhY3Rpb24gPSBoYW5kbGVyOworKyAgYWN0LnNhX2ZsYWdzID0g U0FfUkVTVEFSVCB8IFNBX1NJR0lORk87CisrICBpID0gc2lnZW1wdHlzZXQgKCZhY3Quc2FfbWFz ayk7CisrICBhc3NlcnRfcGVycm9yIChlcnJubyk7CisrICBhc3NlcnQgKGkgPT0gMCk7CisrICBp ID0gc2lnYWN0aW9uIChTSUdVU1IxLCAmYWN0LCBOVUxMKTsKKysgIGFzc2VydF9wZXJyb3IgKGVy cm5vKTsKKysgIGFzc2VydCAoaSA9PSAwKTsKKysgIGkgPSBzaWdhY3Rpb24gKFNJR1VTUjIsICZh Y3QsIE5VTEwpOworKyAgYXNzZXJ0X3BlcnJvciAoZXJybm8pOworKyAgYXNzZXJ0IChpID09IDAp OworKworKyAgaSA9IHB0aHJlYWRfY3JlYXRlICgmdGhyZWFkMSwgTlVMTCwgdGhyZWFkMV9mdW5j LCBOVUxMKTsKKysgIGFzc2VydCAoaSA9PSAwKTsKKysKKysgIGkgPSBwdGhyZWFkX2NyZWF0ZSAo JnRocmVhZDIsIE5VTEwsIHRocmVhZDJfZnVuYywgTlVMTCk7CisrICBhc3NlcnQgKGkgPT0gMCk7 CisrCisrICBpZiAoIXN0YW5kYWxvbmUpCisrICAgIHsKKysgICAgICB0cmFjZXIgPSBwcm9jX3Vs b25nICgiL3Byb2Mvc2VsZi9zdGF0dXMiLCAiVHJhY2VyUGlkOlx0Iik7CisrICAgICAgaWYgKHRy YWNlciA9PSAwKQorKwl7CisrCSAgZnByaW50ZiAoc3RkZXJyLCAiVGhlIHRlc3RjYXNlIG11c3Qg YmUgcnVuIGJ5IEdEQiFcbiIpOworKwkgIGV4aXQgKEVYSVRfRkFJTFVSRSk7CisrCX0KKysgICAg ICBpZiAodHJhY2VyICE9IGdldHBwaWQgKCkpCisrCXsKKysJICBmcHJpbnRmIChzdGRlcnIsICJU aGUgdGVzdGNhc2UgcGFyZW50IG11c3QgYmUgb3VyIEdEQiB0cmFjZXIhXG4iKTsKKysJICBleGl0 IChFWElUX0ZBSUxVUkUpOworKwl9CisrICAgIH0KKysKKysgIC8qIFNJR0NPTlQgb3VyIGRlYnVn Z2VyIGluIHRoZSBjYXNlIG9mIG91ciBjcmFzaCBhcyB3ZSB3b3VsZCBkZWFkbG9jaworKyAgICAg b3RoZXJ3aXNlLiAgKi8KKysKKysgIGF0ZXhpdCAoY2xlYW51cCk7CisrCisrICBwcmludGYgKCJT dG9wcGluZyBHREIgUElEICVsdS5cbiIsICh1bnNpZ25lZCBsb25nKSB0cmFjZXIpOworKworKyAg aWYgKHRyYWNlcikKKysgICAgeworKyAgICAgIGkgPSBraWxsICh0cmFjZXIsIFNJR1NUT1ApOwor KyAgICAgIGFzc2VydCAoaSA9PSAwKTsKKysgICAgICBzdGF0ZV93YWl0ICh0cmFjZXIsICJUIChz dG9wcGVkKSIpOworKyAgICB9CisrCisrICAvKiBUaHJlYWRzIGFyZSBub3cgd2FpdGluZyBhdCB0 aW1lZF9tdXRleF9sb2NrICh0aHJlYWQxX3RpZF9tdXRleCkgYW5kIHNvCisrICAgICB0aGV5IGNv dWxkIG5vdCB0cmlnZ2VyIHRoZSBzaWduYWxzIGJlZm9yZSBHREIgZ2V0cyB1bnN0b3BwZWQgbGF0 ZXIuCisrICAgICBUaHJlYWRzIGdldCByZXN1bWVkIGF0IHB0aHJlYWRfY29uZF93YWl0IGJlbG93 LiAgVXNlIGB3aGlsZScgbG9vcHMgZm9yCisrICAgICBwcm90ZWN0aW9uIGFnYWluc3Qgc3B1cmlv dXMgcHRocmVhZF9jb25kX3dhaXQgd2FrZXVwcy4gICovCisrCisrICBwcmludGYgKCJXYWl0aW5n IHRpbGwgdGhlIHRocmVhZHMgaW5pdGlhbGl6ZSB0aGVpciBUSURzLlxuIik7CisrCisrICB3aGls ZSAodGhyZWFkMV90aWQgPT0gMCkKKysgICAgeworKyAgICAgIGkgPSBwdGhyZWFkX2NvbmRfd2Fp dCAoJnRocmVhZDFfdGlkX2NvbmQsICZ0aHJlYWQxX3RpZF9tdXRleCk7CisrICAgICAgYXNzZXJ0 IChpID09IDApOworKyAgICB9CisrCisrICB3aGlsZSAodGhyZWFkMl90aWQgPT0gMCkKKysgICAg eworKyAgICAgIGkgPSBwdGhyZWFkX2NvbmRfd2FpdCAoJnRocmVhZDJfdGlkX2NvbmQsICZ0aHJl YWQyX3RpZF9tdXRleCk7CisrICAgICAgYXNzZXJ0IChpID09IDApOworKyAgICB9CisrCisrICBw cmludGYgKCJUaHJlYWQgMSBUSUQgPSAlbHUsIHRocmVhZCAyIFRJRCA9ICVsdSwgUElEID0gJWx1 LlxuIiwKKysJICAodW5zaWduZWQgbG9uZykgdGhyZWFkMV90aWQsICh1bnNpZ25lZCBsb25nKSB0 aHJlYWQyX3RpZCwKKysJICAodW5zaWduZWQgbG9uZykgZ2V0cGlkICgpKTsKKysKKysgIGVycm5v ID0gMDsKKysgIGkgPSB0Z2tpbGwgKGdldHBpZCAoKSwgdGhyZWFkMV90aWQsIFNJR1VTUjEpOwor KyAgYXNzZXJ0X3BlcnJvciAoZXJybm8pOworKyAgYXNzZXJ0IChpID09IDApOworKyAgaSA9IHRn a2lsbCAoZ2V0cGlkICgpLCB0aHJlYWQxX3RpZCwgU0lHVVNSMik7CisrICBhc3NlcnRfcGVycm9y IChlcnJubyk7CisrICBhc3NlcnQgKGkgPT0gMCk7CisrICBpID0gdGdraWxsIChnZXRwaWQgKCks IHRocmVhZDJfdGlkLCBTSUdVU1IxKTsKKysgIGFzc2VydF9wZXJyb3IgKGVycm5vKTsKKysgIGFz c2VydCAoaSA9PSAwKTsKKysgIGkgPSB0Z2tpbGwgKGdldHBpZCAoKSwgdGhyZWFkMl90aWQsIFNJ R1VTUjIpOworKyAgYXNzZXJ0X3BlcnJvciAoZXJybm8pOworKyAgYXNzZXJ0IChpID09IDApOwor KworKyAgcHJpbnRmICgiV2FpdGluZyB0aWxsIHRoZSB0aHJlYWRzIGdldCB0cmFwcGVkIGJ5IHRo ZSBzaWduYWxzLlxuIik7CisrCisrICBpZiAodHJhY2VyKQorKyAgICB7CisrICAgICAgLyogczM5 MHgtdW5rbm93bi1saW51eC1nbnUgd2lsbCBmYWlsIHdpdGggIlIgKHJ1bm5pbmcpIi4gICovCisr CisrICAgICAgc3RhdGVfd2FpdCAodGhyZWFkMV90aWQsICJ0ICh0cmFjaW5nIHN0b3ApIik7Cisr CisrICAgICAgc3RhdGVfd2FpdCAodGhyZWFkMl90aWQsICJ0ICh0cmFjaW5nIHN0b3ApIik7Cisr ICAgIH0KKysKKysgIGNsZWFudXAgKCk7CisrCisrICBwcmludGYgKCJKb2luaW5nIHRoZSB0aHJl YWRzLlxuIik7CisrCisrICBpID0gcHRocmVhZF9tdXRleF91bmxvY2sgKCZ0ZXJtaW5hdGVfbXV0 ZXgpOworKyAgYXNzZXJ0IChpID09IDApOworKworKyAgaSA9IHB0aHJlYWRfam9pbiAodGhyZWFk MSwgTlVMTCk7CisrICBhc3NlcnQgKGkgPT0gMCk7CisrCisrICBpID0gcHRocmVhZF9qb2luICh0 aHJlYWQyLCBOVUxMKTsKKysgIGFzc2VydCAoaSA9PSAwKTsKKysKKysgIHByaW50ZiAoIkV4aXRp bmcuXG4iKTsJLyogYnJlYWstYXQtZXhpdCAqLworKworKyAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsK Kyt9CitJbmRleDogZ2RiLTcuMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ2luZm8tdGhy ZWFkcy5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4w MDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc2ln aW5mby10aHJlYWRzLmV4cAkyMDEwLTA5LTI1IDE1OjMyOjMyLjAwMDAwMDAwMCArMDIwMAorQEAg LTAsMCArMSw5NCBAQAorKyMgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisr IyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworK3NldCB0ZXN0Zmls ZSAic2lnaW5mby10aHJlYWRzIgorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKKytzZXQgYmlu ZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CisraWYge1tnZGJfY29tcGlsZV9w dGhyZWFkcyAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAke2JpbmZpbGV9IGV4ZWN1 dGFibGUgW2xpc3QgZGVidWcgYWRkaXRpb25hbF9mbGFncz0tbHJ0XV0gIT0gIiIgfSB7CisrICAg IHJldHVybiAtMQorK30KKysKKytjbGVhbl9yZXN0YXJ0ICR0ZXN0ZmlsZQorKworK2lmICFbcnVu dG9fbWFpbl0geworKyAgICByZXR1cm4gLTEKKyt9CisrCisrIyBgbm9zdG9wIG5vcHJpbnQgcGFz cycgY291bGQgaW4gc29tZSBjYXNlcyByZXBvcnQgZmFsc2UgUEFTUyBkdWUgdG8gdGhlCisrIyAo cHJlZW1wdCAnaGFuZGxlJykgY29kZSBwYXRoLgorKworK2dkYl90ZXN0ICJoYW5kbGUgU0lHVVNS MSBzdG9wIHByaW50IHBhc3MiICJTaWduYWxcWyBcdFxdK1N0b3BcWyBcdFxdK1ByaW50XFsgXHRc XStQYXNzIHRvIHByb2dyYW1cWyBcdFxdK0Rlc2NyaXB0aW9uXHJcblNJR1VTUjFcWyBcdFxdK1ll c1xbIFx0XF0rWWVzXFsgXHRcXStZZXNcWyBcdFxdLioiCisrZ2RiX3Rlc3QgImhhbmRsZSBTSUdV U1IyIHN0b3AgcHJpbnQgcGFzcyIgIlNpZ25hbFxbIFx0XF0rU3RvcFxbIFx0XF0rUHJpbnRcWyBc dFxdK1Bhc3MgdG8gcHJvZ3JhbVxbIFx0XF0rRGVzY3JpcHRpb25cclxuU0lHVVNSMlxbIFx0XF0r WWVzXFsgXHRcXStZZXNcWyBcdFxdK1llc1xbIFx0XF0uKiIKKysKKytnZGJfYnJlYWtwb2ludCBb Z2RiX2dldF9saW5lX251bWJlciAiYnJlYWstYXQtZXhpdCJdCisrCisrc2V0IHRlc3QgImdldCBw aWQiCisrZ2RiX3Rlc3RfbXVsdGlwbGUgInAgZ2V0cGlkICgpIiAkdGVzdCB7CisrICAgIC1yZSAi ID0gKFxbMC05XF0rKVxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCXNldCBwaWQgJGV4cGVjdF9vdXQo MSxzdHJpbmcpCisrCXBhc3MgJHRlc3QKKysgICAgfQorK30KKysKKytmb3Ige3NldCBzaWdjb3Vu dCAwfSB7JHNpZ2NvdW50IDwgNH0ge2luY3Igc2lnY291bnR9IHsKKysgICAgc2V0IHRlc3QgImNh dGNoIHNpZ25hbCAkc2lnY291bnQiCisrICAgIHNldCBzaWd1c3IgIiIKKysgICAgZ2RiX3Rlc3Rf bXVsdGlwbGUgImNvbnRpbnVlIiAkdGVzdCB7CisrCS1yZSAiUHJvZ3JhbSByZWNlaXZlZCBzaWdu YWwgU0lHVVNSKFxbMTJcXSksIFVzZXIgZGVmaW5lZCBzaWduYWwgXFsxMlxdXFwuXHJcbi4qXHJc biRnZGJfcHJvbXB0ICQiIHsKKysJICAgIHNldCBzaWd1c3IgJGV4cGVjdF9vdXQoMSxzdHJpbmcp CisrCSAgICBwYXNzICR0ZXN0CisrCX0KKysgICAgfQorKyAgICBpZiB7JHNpZ3VzciA9PSAiIn0g eworKwlyZXR1cm4gLTEKKysgICAgfQorKworKyAgICBzZXQgdGVzdCAic2lnbmFsICRzaWdjb3Vu dCBzaV9zaWdubyIKKysgICAgaWYgeyRzaWd1c3IgPT0gMX0geworKwlzZXQgc2lnbm8gMTAKKysg ICAgfSBlbHNlIHsKKysJc2V0IHNpZ25vIDEyCisrICAgIH0KKysgICAgZ2RiX3Rlc3RfbXVsdGlw bGUge3AgJF9zaWdpbmZvLnNpX3NpZ25vfSAkdGVzdCB7CisrCS1yZSAiID0gJHNpZ25vXHJcbiRn ZGJfcHJvbXB0ICQiIHsKKysJICAgIHBhc3MgJHRlc3QKKysJfQorKwktcmUgIkF0dGVtcHQgdG8g ZXh0cmFjdCBhIGNvbXBvbmVudCBvZiBhIHZhbHVlIHRoYXQgaXMgbm90IGEgc3RydWN0dXJlXFwu XHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJICAgIHVuc3VwcG9ydGVkICR0ZXN0CisrCX0KKysgICAg fQorKworKyAgICBzZXQgdGVzdCAic2lnbmFsICRzaWdjb3VudCBzaV9jb2RlIGlzIFNJX1RLSUxM IgorKyAgICBnZGJfdGVzdF9tdWx0aXBsZSB7cCAkX3NpZ2luZm8uc2lfY29kZX0gJHRlc3Qgewor KwktcmUgIiA9IC02XHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJICAgIHBhc3MgJHRlc3QKKysJfQor KwktcmUgIkF0dGVtcHQgdG8gZXh0cmFjdCBhIGNvbXBvbmVudCBvZiBhIHZhbHVlIHRoYXQgaXMg bm90IGEgc3RydWN0dXJlXFwuXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJICAgIHVuc3VwcG9ydGVk ICR0ZXN0CisrCX0KKysgICAgfQorKworKyAgICBzZXQgdGVzdCAic2lnbmFsICRzaWdjb3VudCBz aV9waWQiCisrICAgIGdkYl90ZXN0X211bHRpcGxlIHtwICRfc2lnaW5mby5fc2lmaWVsZHMuX2tp bGwuc2lfcGlkfSAkdGVzdCB7CisrCS1yZSAiID0gJHBpZFxyXG4kZ2RiX3Byb21wdCAkIiB7Cisr CSAgICBwYXNzICR0ZXN0CisrCX0KKysJLXJlICJBdHRlbXB0IHRvIGV4dHJhY3QgYSBjb21wb25l bnQgb2YgYSB2YWx1ZSB0aGF0IGlzIG5vdCBhIHN0cnVjdHVyZVxcLlxyXG4kZ2RiX3Byb21wdCAk IiB7CisrCSAgICB1bnN1cHBvcnRlZCAkdGVzdAorKwl9CisrICAgIH0KKyt9CisrCisrZ2RiX2Nv bnRpbnVlX3RvX2JyZWFrcG9pbnQgYnJlYWstYXQtZXhpdCAiLipicmVhay1hdC1leGl0LioiCitJ bmRleDogZ2RiLTcuMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ3N0ZXAtdGhyZWFkcy5j Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAw ICswMDAwCisrKysgZ2RiLTcuMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ3N0ZXAtdGhy ZWFkcy5jCTIwMTAtMDktMjUgMTU6MzI6MzIuMDAwMDAwMDAwICswMjAwCitAQCAtMCwwICsxLDU0 IEBACisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4K KysKKysgICBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysK KysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrI2luY2x1ZGUg PHB0aHJlYWQuaD4KKysjaW5jbHVkZSA8YXNzZXJ0Lmg+CisrI2luY2x1ZGUgPHNpZ25hbC5oPgor KworKyNpbmNsdWRlIDxhc20vdW5pc3RkLmg+CisrI2luY2x1ZGUgPHVuaXN0ZC5oPgorKyNkZWZp bmUgdGdraWxsKHRnaWQsIHRpZCwgc2lnKSBzeXNjYWxsIChfX05SX3Rna2lsbCwgKHRnaWQpLCAo dGlkKSwgKHNpZykpCisrI2RlZmluZSBnZXR0aWQoKSBzeXNjYWxsIChfX05SX2dldHRpZCkKKysK KytzdGF0aWMgdm9sYXRpbGUgaW50IHZhcjsKKysKKytzdGF0aWMgdm9pZAorK2hhbmRsZXIgKGlu dCBzaWdubykJLyogc3RlcC0wICovCisrewkJCS8qIHN0ZXAtMCAqLworKyAgdmFyKys7CQkvKiBz dGVwLTEgKi8KKysgIHRna2lsbCAoZ2V0cGlkICgpLCBnZXR0aWQgKCksIFNJR1VTUjEpOwkvKiBz dGVwLTIgKi8KKyt9CisrCisrc3RhdGljIHZvaWQgKgorK3N0YXJ0ICh2b2lkICphcmcpCisrewor KyAgc2lnbmFsIChTSUdVU1IxLCBoYW5kbGVyKTsKKysgIHRna2lsbCAoZ2V0cGlkICgpLCBnZXR0 aWQgKCksIFNJR1VTUjEpOworKyAgYXNzZXJ0ICgwKTsKKysKKysgIHJldHVybiBOVUxMOworK30K KysKKytpbnQKKyttYWluICh2b2lkKQorK3sKKysgIHB0aHJlYWRfdCB0aHJlYWQ7CisrCisrICBw dGhyZWFkX2NyZWF0ZSAoJnRocmVhZCwgTlVMTCwgc3RhcnQsIE5VTEwpOworKyAgc3RhcnQgKE5V TEwpOwkvKiBtYWluLXN0YXJ0ICovCisrICByZXR1cm4gMDsKKyt9CitJbmRleDogZ2RiLTcuMi9n ZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ3N0ZXAtdGhyZWFkcy5leHAKKz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBn ZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc2lnc3RlcC10aHJlYWRzLmV4cAkyMDEw LTA5LTI1IDE1OjMyOjMyLjAwMDAwMDAwMCArMDIwMAorQEAgLTAsMCArMSw3NCBAQAorKyMgQ29w eXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgorKworK3NldCB0ZXN0ZmlsZSBzaWdzdGVwLXRocmVhZHMKKytz ZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCisrc2V0IGV4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0KKytz ZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7ZXhlY3V0YWJsZX0KKysKKytpZiB7IFtn ZGJfY29tcGlsZV9wdGhyZWFkcyAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHti aW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKKysgICAgdW50ZXN0ZWQgJHt0 ZXN0ZmlsZX0uZXhwCisrICAgIHJldHVybiAtMQorK30KKysKKytjbGVhbl9yZXN0YXJ0ICRleGVj dXRhYmxlCisrCisraWYgIVtydW50b19tYWluXSB7CisrICAgIHJldHVybiAtMTsKKyt9CisrCisr IyBgbm9wcmludCcgd291bGQgbm90IHRlc3QgdGhlIGZ1bGwgbG9naWMgb2YgR0RCLgorK2dkYl90 ZXN0ICJoYW5kbGUgU0lHVVNSMSBub3N0b3AgcHJpbnQgcGFzcyIgIlxyXG5TSUdVU1IxXFsgXHRc XStOb1xbIFx0XF0rWWVzXFsgXHRcXStZZXNcWyBcdFxdLioiCisrCisrZ2RiX3Rlc3Rfbm9fb3V0 cHV0ICJzZXQgc2NoZWR1bGVyLWxvY2tpbmcgb2ZmIgorKworK2dkYl9icmVha3BvaW50IFtnZGJf Z2V0X2xpbmVfbnVtYmVyICJzdGVwLTEiXQorK2dkYl90ZXN0X25vX291dHB1dCB7c2V0ICRzdGVw MT0kYnBudW19CisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInN0ZXAtMSIgIi4qIHN0ZXAt MSAuKiIKKytnZGJfdGVzdF9ub19vdXRwdXQge2Rpc2FibGUgJHN0ZXAxfQorKworKyMgMSBhcyB3 ZSBhcmUgbm93IHN0b3BwZWQgYXQgdGhlIGBzdGVwLTEnIGxhYmVsLgorK3NldCBzdGVwX2F0IDEK Kytmb3Ige3NldCBpIDB9IHskaSA8IDEwMH0ge2luY3IgaX0geworKyAgICBzZXQgdGVzdCAic3Rl cCAkaSIKKysgICAgIyBQcmVzdW1lIHRoaXMgc3RlcCBmYWlsZWQgLSBhcyBpbiB0aGUgY2FzZSBv ZiBhIHRpbWVvdXQuCisrICAgIHNldCBmYWlsZWQgMQorKyAgICBnZGJfdGVzdF9tdWx0aXBsZSAi c3RlcCIgJHRlc3QgeworKwktcmUgIlxyXG5Qcm9ncmFtIHJlY2VpdmVkIHNpZ25hbCBTSUdVU1Ix LCBVc2VyIGRlZmluZWQgc2lnbmFsIDEuXHJcbiIgeworKwkgICAgZXhwX2NvbnRpbnVlIC1jb250 aW51ZV90aW1lcgorKwl9CisrCS1yZSAic3RlcC0oXFswMTJcXSkuKlxyXG4kZ2RiX3Byb21wdCAk IiB7CisrCSAgICBzZXQgbm93ICRleHBlY3Rfb3V0KDEsc3RyaW5nKQorKwkgICAgaWYgeyRzdGVw X2F0ID09IDIgJiYgJG5vdyA9PSAxfSB7CisrCQlzZXQgZmFpbGVkIDAKKysJICAgIH0gZWxzZWlm IHskc3RlcF9hdCA9PSAxICYmICRub3cgPT0gMn0geworKwkJc2V0IGZhaWxlZCAwCisrCQkjIENv bnRpbnVlIG92ZXIgdGhlIHJlLXNpZ25hbGxpbmcgYmFjayB0byB0aGUgaGFuZGxlIGVudHJ5Lgor KwkJZ2RiX3Rlc3Rfbm9fb3V0cHV0IHtlbmFibGUgJHN0ZXAxfSAiIgorKwkJZ2RiX3Rlc3QgImNv bnRpbnVlIiAiIHN0ZXAtMSAuKiIgIiIKKysJCXNldCBub3cgMQorKwkJZ2RiX3Rlc3Rfbm9fb3V0 cHV0IHtkaXNhYmxlICRzdGVwMX0gIiIKKysJICAgIH0gZWxzZSAgeworKwkJZmFpbCAkdGVzdAor KwkgICAgfQorKwkgICAgc2V0IHN0ZXBfYXQgJG5vdworKwl9CisrICAgIH0KKysgICAgaWYgJGZh aWxlZCB7CisrCXJldHVybgorKyAgICB9CisrfQorKyMgV2UgY2FuIG5ldmVyIHJlbGlhYmx5IHNh eSB0aGUgcmFjeSBwcm9ibGVtYXRpYyBjYXNlIGhhcyBiZWVuIHRlc3RlZC4KKytwYXNzICJzdGVw IgoKZGlmZiAtLWdpdCBhL2dkYi1iejU5MjAzMS1zaWdpbmZvLWxvc3QtNW9mNS5wYXRjaCBiL2dk Yi1iejU5MjAzMS1zaWdpbmZvLWxvc3QtNW9mNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi42YmY5M2VmCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWJ6NTkyMDMxLXNp Z2luZm8tbG9zdC01b2Y1LnBhdGNoCkBAIC0wLDAgKzEsMTQxIEBACitodHRwOi8vc291cmNld2Fy ZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wOS9tc2cwMDM2MS5odG1sCitTdWJqZWN0OiBbcGF0 Y2ggNC80XSMzIFJlbW92ZSByZWR1bmRhbnQgbHAtPnNpZ2luZm8KKworSGksCisKK3RoaXMgaXMg YSBzaW1wbGlmaWNhdGlvbiB3aGljaCBzaG91bGQgbm90IGFmZmVjdCBHREIgYmVoYXZpb3IuICBB cyBsaW51eC1uYXQKK25vdyBzdG9wcyBvbiBlYWNoIHJlY2VpdmVkIHNpZ25hbCB3aXRob3V0IGFu eSByZW9yZGVyaW5nIG9mIHRoZW0gdGhlbgorUFRSQUNFX0dFVFNJR0lORk8gaXMgZW5vdWdoIHRv IGFjY2VzcyBzaWdpbmZvLCB3aXRob3V0IGFueSBuZWVkIHRvIGNvcHkgaXQgaW4KK2FkdmFuY2Uu CisKKworVGhhbmtzLAorSmFuCisKKworZ2RiLworMjAxMC0wOS0yMCAgSmFuIEtyYXRvY2h2aWwg IDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorCisJKiBsaW51eC1uYXQuYyAocmVzdW1lX2Nh bGxiYWNrKSA8bHAtPnN0b3BwZWQgJiYgbHAtPnN0YXR1cyA9PSAwPgorCShsaW51eF9uYXRfcmVz dW1lKTogUmVtb3ZlIExQLT5TSUdJTkZPIGNsZWFyaW5nLgorCShzYXZlX3NpZ2luZm8pOiBSZW1v dmUuCisJKHN0b3Bfd2FpdF9jYWxsYmFjaykgPFdTVE9QU0lHIChzdGF0dXMpICE9IFNJR1NUT1A+ CisJKGxpbnV4X25hdF9maWx0ZXJfZXZlbnQpIDxsaW51eF9uYXRfc3RhdHVzX2lzX2V2ZW50IChz dGF0dXMpPjogUmVtb3ZlCisJdGhlIHNhdmVfc2lnaW5mbyBjYWxsLgorCShyZXN1bWVfc3RvcHBl ZF9yZXN1bWVkX2x3cHMpOiBSZW1vdmUgTFAtPlNJR0lORk8gY2xlYXJpbmcuCisJKGxpbnV4X25h dF9zZXRfc2lnaW5mb19maXh1cCk6IFVzZSBQVFJBQ0VfR0VUU0lHSU5GTy4KKwkqIGxpbnV4LW5h dC5oIChzdHJ1Y3QgbHdwX2luZm8pIDxzaWdpbmZvPjogUmVtb3ZlLgorCitJbmRleDogZ2RiLTcu Mi9nZGIvbGludXgtbmF0LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4yLm9yaWcvZ2RiL2xpbnV4 LW5hdC5jCTIwMTAtMDktMjUgMTU6Mzc6MjMuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi9n ZGIvbGludXgtbmF0LmMJMjAxMC0wOS0yNSAxNTozODoxOC4wMDAwMDAwMDAgKzAyMDAKK0BAIC0x ODUxLDcgKzE4NTEsNiBAQCByZXN1bWVfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAqbHAsIHZv CisgCQkJICAgIHRhcmdldF9waWRfdG9fc3RyIChscC0+cHRpZCkpOworICAgICAgIGxwLT5zdG9w cGVkID0gMDsKKyAgICAgICBscC0+c3RlcCA9IDA7CistICAgICAgbWVtc2V0ICgmbHAtPnNpZ2lu Zm8sIDAsIHNpemVvZiAobHAtPnNpZ2luZm8pKTsKKyAgICAgICBscC0+c3RvcHBlZF9ieV93YXRj aHBvaW50ID0gMDsKKyAgICAgfQorICAgZWxzZSBpZiAobHAtPnN0b3BwZWQgJiYgZGVidWdfbGlu dXhfbmF0KQorQEAgLTE5OTMsNyArMTk5Miw2IEBAIGxpbnV4X25hdF9yZXN1bWUgKHN0cnVjdCB0 YXJnZXRfb3BzICpvcHMKKyAgIHB0aWQgPSBwaWRfdG9fcHRpZCAoR0VUX0xXUCAobHAtPnB0aWQp KTsKKyAKKyAgIGxpbnV4X29wcy0+dG9fcmVzdW1lIChsaW51eF9vcHMsIHB0aWQsIHN0ZXAsIHNp Z25vKTsKKy0gIG1lbXNldCAoJmxwLT5zaWdpbmZvLCAwLCBzaXplb2YgKGxwLT5zaWdpbmZvKSk7 CisgICBscC0+c3RvcHBlZF9ieV93YXRjaHBvaW50ID0gMDsKKyAKKyAgIGlmIChkZWJ1Z19saW51 eF9uYXQpCitAQCAtMjQ4MywyMiArMjQ4MSw2IEBAIHdhaXRfbHdwIChzdHJ1Y3QgbHdwX2luZm8g KmxwKQorICAgcmV0dXJuIHN0YXR1czsKKyB9CisgCistLyogU2F2ZSB0aGUgbW9zdCByZWNlbnQg c2lnaW5mbyBmb3IgTFAuICBUaGlzIGlzIGN1cnJlbnRseSBvbmx5IGNhbGxlZAorLSAgIGZvciBT SUdUUkFQOyBzb21lIHBvcnRzIHVzZSB0aGUgc2lfYWRkciBmaWVsZCBmb3IKKy0gICB0YXJnZXRf c3RvcHBlZF9kYXRhX2FkZHJlc3MuICBJbiB0aGUgZnV0dXJlLCBpdCBtYXkgYWxzbyBiZSB1c2Vk IHRvCistICAgcmVzdG9yZSB0aGUgc2lnaW5mbyBvZiByZXF1ZXVlZCBzaWduYWxzLiAgKi8KKy0K Ky1zdGF0aWMgdm9pZAorLXNhdmVfc2lnaW5mbyAoc3RydWN0IGx3cF9pbmZvICpscCkKKy17Cist ICBlcnJubyA9IDA7CistICBwdHJhY2UgKFBUUkFDRV9HRVRTSUdJTkZPLCBHRVRfTFdQIChscC0+ cHRpZCksCistCSAgKFBUUkFDRV9UWVBFX0FSRzMpIDAsICZscC0+c2lnaW5mbyk7CistCistICBp ZiAoZXJybm8gIT0gMCkKKy0gICAgbWVtc2V0ICgmbHAtPnNpZ2luZm8sIDAsIHNpemVvZiAobHAt PnNpZ2luZm8pKTsKKy19CistCisgLyogU2VuZCBhIFNJR1NUT1AgdG8gTFAuICAqLworIAorIHN0 YXRpYyBpbnQKK0BAIC0yNzMwLDkgKzI3MTIsNiBAQCBzdG9wX3dhaXRfY2FsbGJhY2sgKHN0cnVj dCBsd3BfaW5mbyAqbHAsCisgCXsKKyAJICAvKiBUaGUgdGhyZWFkIHdhcyBzdG9wcGVkIHdpdGgg YSBzaWduYWwgb3RoZXIgdGhhbiBTSUdTVE9QLiAgKi8KKyAKKy0JICAvKiBTYXZlIHRoZSB0cmFw J3Mgc2lnaW5mbyBpbiBjYXNlIHdlIG5lZWQgaXQgbGF0ZXIuICAqLworLQkgIHNhdmVfc2lnaW5m byAobHApOworLQorIAkgIHNhdmVfc2lndHJhcCAobHApOworIAorIAkgIGlmIChkZWJ1Z19saW51 eF9uYXQpCitAQCAtMzEwMiwxMiArMzA4MSw3IEBAIGxpbnV4X25hdF9maWx0ZXJfZXZlbnQgKGlu dCBsd3BpZCwgaW50IHMKKyAgICAgfQorIAorICAgaWYgKFdJRlNUT1BQRUQgKHN0YXR1cykgJiYg V1NUT1BTSUcgKHN0YXR1cykgPT0gU0lHVFJBUCkKKy0gICAgeworLSAgICAgIC8qIFNhdmUgdGhl IHRyYXAncyBzaWdpbmZvIGluIGNhc2Ugd2UgbmVlZCBpdCBsYXRlci4gICovCistICAgICAgc2F2 ZV9zaWdpbmZvIChscCk7CistCistICAgICAgc2F2ZV9zaWd0cmFwIChscCk7CistICAgIH0KKysg ICAgc2F2ZV9zaWd0cmFwIChscCk7CisgCisgICAvKiBDaGVjayBpZiB0aGUgdGhyZWFkIGhhcyBl eGl0ZWQuICAqLworICAgaWYgKChXSUZFWElURUQgKHN0YXR1cykgfHwgV0lGU0lHTkFMRUQgKHN0 YXR1cykpCitAQCAtMzcwNiw3ICszNjgwLDYgQEAgcmVzdW1lX3N0b3BwZWRfcmVzdW1lZF9sd3Bz IChzdHJ1Y3QgbHdwXworICAgICAgIGxpbnV4X29wcy0+dG9fcmVzdW1lIChsaW51eF9vcHMsIHBp ZF90b19wdGlkIChHRVRfTFdQIChscC0+cHRpZCkpLAorIAkJCSAgICBscC0+c3RlcCwgVEFSR0VU X1NJR05BTF8wKTsKKyAgICAgICBscC0+c3RvcHBlZCA9IDA7CistICAgICAgbWVtc2V0ICgmbHAt PnNpZ2luZm8sIDAsIHNpemVvZiAobHAtPnNpZ2luZm8pKTsKKyAgICAgICBscC0+c3RvcHBlZF9i eV93YXRjaHBvaW50ID0gMDsKKyAgICAgfQorIAorQEAgLTU4NzgsMTEgKzU4NTEsMTkgQEAgbGlu dXhfbmF0X3NldF9zaWdpbmZvX2ZpeHVwIChzdHJ1Y3QgdGFyZworIHN0cnVjdCBzaWdpbmZvICoK KyBsaW51eF9uYXRfZ2V0X3NpZ2luZm8gKHB0aWRfdCBwdGlkKQorIHsKKy0gIHN0cnVjdCBsd3Bf aW5mbyAqbHAgPSBmaW5kX2x3cF9waWQgKHB0aWQpOworKyAgc3RhdGljIHN0cnVjdCBzaWdpbmZv IHNpZ2luZm87CisrICBpbnQgcGlkOworIAorLSAgZ2RiX2Fzc2VydCAobHAgIT0gTlVMTCk7Cisr ICBwaWQgPSBHRVRfTFdQIChwdGlkKTsKKysgIGlmIChwaWQgPT0gMCkKKysgICAgcGlkID0gR0VU X1BJRCAocHRpZCk7CisrCisrICBlcnJubyA9IDA7CisrICBwdHJhY2UgKFBUUkFDRV9HRVRTSUdJ TkZPLCBwaWQsIChQVFJBQ0VfVFlQRV9BUkczKSAwLCAmc2lnaW5mbyk7CisrICBpZiAoZXJybm8g IT0gMCkKKysgICAgbWVtc2V0ICgmc2lnaW5mbywgMCwgc2l6ZW9mIChzaWdpbmZvKSk7CisgCist ICByZXR1cm4gJmxwLT5zaWdpbmZvOworKyAgcmV0dXJuICZzaWdpbmZvOworIH0KKyAKKyAvKiBQ cm92aWRlIGEgcHJvdG90eXBlIHRvIHNpbGVuY2UgLVdtaXNzaW5nLXByb3RvdHlwZXMuICAqLwor SW5kZXg6IGdkYi03LjIvZ2RiL2xpbnV4LW5hdC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMi5v cmlnL2dkYi9saW51eC1uYXQuaAkyMDEwLTA5LTI1IDE1OjMwOjUwLjAwMDAwMDAwMCArMDIwMAor KysrIGdkYi03LjIvZ2RiL2xpbnV4LW5hdC5oCTIwMTAtMDktMjUgMTU6Mzc6NTcuMDAwMDAwMDAw ICswMjAwCitAQCAtNTgsMTAgKzU4LDYgQEAgc3RydWN0IGx3cF9pbmZvCisgICAvKiBUaGUga2lu ZCBvZiBzdGVwcGluZyBvZiB0aGlzIExXUC4gICovCisgICBlbnVtIHJlc3VtZV9zdGVwIHN0ZXA7 CisgCistICAvKiBOb24temVybyBzaV9zaWdubyBpZiB0aGlzIExXUCBzdG9wcGVkIHdpdGggYSB0 cmFwLiAgc2lfYWRkciBtYXkKKy0gICAgIGJlIHRoZSBhZGRyZXNzIG9mIGEgaGFyZHdhcmUgd2F0 Y2hwb2ludC4gICovCistICBzdHJ1Y3Qgc2lnaW5mbyBzaWdpbmZvOworLQorICAgLyogU1RPUFBF RF9CWV9XQVRDSFBPSU5UIGlzIG5vbi16ZXJvIGlmIHRoaXMgTFdQIHN0b3BwZWQgd2l0aCBhIGRh dGEKKyAgICAgIHdhdGNocG9pbnQgdHJhcC4gICovCisgICBpbnQgc3RvcHBlZF9ieV93YXRjaHBv aW50OwoKZGlmZiAtLWdpdCBhL2dkYi1iejYyMzc0OS1nY29yZS1yZWxyby5wYXRjaCBiL2dkYi1i ejYyMzc0OS1nY29yZS1yZWxyby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi40MDE1YTdhCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWJ6NjIzNzQ5LWdjb3JlLXJlbHJv LnBhdGNoCkBAIC0wLDAgKzEsMTY5IEBACitnZGI6CitodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5j b20vc2hvd19idWcuY2dpP2lkPTYyMzc0OQora2VybmVsOgoraHR0cHM6Ly9idWd6aWxsYS5yZWRo YXQuY29tL3Nob3dfYnVnLmNnaT9pZD02MzY5MzcKKworaHR0cDovL3NvdXJjZXdhcmUub3JnL21s L2dkYi1wYXRjaGVzLzIwMTAtMDkvbXNnMDAzOTUuaHRtbAorU3ViamVjdDogUmU6IFtwYXRjaF0g Rml4IGdjb3JlIHdyaXRlciBmb3IgLVdsLC16LHJlbHJvIChQUiBjb3JlZmlsZXMvMTE4MDQpCisK K2dkYi90ZXN0c3VpdGUvCisyMDEwLTA5LTIyICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+CisKKwlGaXggZ2NvcmUgd3JpdGVyIGZvciAtV2wsLXoscmVscm8uCisJ KiBnZGIuYmFzZS9nY29yZS1yZWxyby5leHA6IE5ldyBmaWxlLgorCSogZ2RiLmJhc2UvZ2NvcmUt cmVscm8tbWFpbi5jOiBOZXcgZmlsZS4KKwkqIGdkYi5iYXNlL2djb3JlLXJlbHJvLWxpYi5jOiBO ZXcgZmlsZS4KKworLS0tIC4vZ2RiL2djb3JlLmMJMjAxMC0wOS0yMyAyMDoxNDo1Ni4wMDAwMDAw MDAgKzAyMDAKKysrKyAuL2dkYi9nY29yZS5jCTIwMTAtMDktMjMgMjA6Mzc6NTYuMDAwMDAwMDAw ICswMjAwCitAQCAtNDAxLDYgKzQwMSw3IEBAIGdjb3JlX2NyZWF0ZV9jYWxsYmFjayAoQ09SRV9B RERSIHZhZGRyLCAKKyAKKyAgIGlmICh3cml0ZSA9PSAwICYmICFzb2xpYl9rZWVwX2RhdGFfaW5f Y29yZSAodmFkZHIsIHNpemUpKQorICAgICB7CisrI2lmIDAgLyogaHR0cHM6Ly9idWd6aWxsYS5y ZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD02MzY5MzcgICovCisgICAgICAgLyogU2VlIGlmIHRo aXMgcmVnaW9uIG9mIG1lbW9yeSBsaWVzIGluc2lkZSBhIGtub3duIGZpbGUgb24gZGlzay4KKyAJ IElmIHNvLCB3ZSBjYW4gYXZvaWQgY29weWluZyBpdHMgY29udGVudHMgYnkgY2xlYXJpbmcgU0VD X0xPQUQuICAqLworICAgICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOworQEAgLTQzMyw2ICs0 MzQsNyBAQCBnY29yZV9jcmVhdGVfY2FsbGJhY2sgKENPUkVfQUREUiB2YWRkciwgCisgCX0KKyAK KyAgICAga2VlcDoKKysjZW5kaWYKKyAgICAgICBmbGFncyB8PSBTRUNfUkVBRE9OTFk7CisgICAg IH0KKyAKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2NvcmUt cmVscm8tbGliLmMKK0BAIC0wLDAgKzEsMjEgQEAKKysvKiBDb3B5cmlnaHQgMjAxMCBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIu CisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJ ZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworK3ZvaWQK KytsaWIgKHZvaWQpCisreworK30KKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvZ2NvcmUtcmVscm8tbWFpbi5jCitAQCAtMCwwICsxLDI1IEBACisrLyogQ29weXJp Z2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBmaWxl IGlzIHBhcnQgb2YgR0RCLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysg ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisr ICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LiAgKi8KKysKKytleHRlcm4gdm9pZCBsaWIgKHZvaWQpOworKworK2ludAorK21haW4gKHZvaWQp CisreworKyAgbGliICgpOworKyAgcmV0dXJuIDA7CisrfQorLS0tIC9kZXYvbnVsbAorKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nY29yZS1yZWxyby5leHAKK0BAIC0wLDAgKzEsODAgQEAK KysjIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysj IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKytpZiB7W3NraXBfc2hsaWJfdGVzdHNdfSB7 CisrICAgIHJldHVybiAwCisrfQorKworK3NldCB0ZXN0ZmlsZSAiZ2NvcmUtcmVscm8iCisrc2V0 IHNyY21haW5maWxlICR7dGVzdGZpbGV9LW1haW4uYworK3NldCBzcmNsaWJmaWxlICR7dGVzdGZp bGV9LWxpYi5jCisrc2V0IGxpYmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS1s aWIuc28KKytzZXQgb2JqZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LW1haW4u bworK3NldCBleGVjdXRhYmxlICR7dGVzdGZpbGV9LW1haW4KKytzZXQgYmluZmlsZSAke29iamRp cn0vJHtzdWJkaXJ9LyR7ZXhlY3V0YWJsZX0KKytzZXQgZ2NvcmVmaWxlICR7b2JqZGlyfS8ke3N1 YmRpcn0vJHtleGVjdXRhYmxlfS5nY29yZQorKworK2lmIHsgW2dkYl9jb21waWxlX3NobGliICR7 c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNsaWJmaWxlfSAke2xpYmZpbGV9IHtkZWJ1Z31dICE9ICIi CisrICAgICB8fCBbZ2RiX2NvbXBpbGUgJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY21haW5maWxl fSAke29iamZpbGV9IG9iamVjdCB7ZGVidWd9XSAhPSAiIiB9IHsKKysgICAgIHVudGVzdGVkICR7 dGVzdGZpbGV9LmV4cAorKyAgICAgcmV0dXJuIC0xCisrfQorK3NldCBvcHRzIFtsaXN0IGRlYnVn IHNobGliPSR7bGliZmlsZX0gYWRkaXRpb25hbF9mbGFncz0tV2wsLXoscmVscm9dCisraWYgeyBb Z2RiX2NvbXBpbGUgJHtvYmpmaWxlfSAke2JpbmZpbGV9IGV4ZWN1dGFibGUgJG9wdHNdICE9ICIi IH0geworKyAgICAgdW5zdXBwb3J0ZWQgIi1XbCwteixyZWxybyBjb21waWxhdGlvbiBmYWlsZWQi CisrICAgICByZXR1cm4gLTEKKyt9CisrCisrY2xlYW5fcmVzdGFydCAkZXhlY3V0YWJsZQorK2dk Yl9sb2FkX3NobGlicyAkbGliZmlsZQorKworKyMgRG9lcyB0aGlzIGdkYiBzdXBwb3J0IGdjb3Jl PworK3NldCB0ZXN0ICJoZWxwIGdjb3JlIgorK2dkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0 IHsKKysgICAgLXJlICJVbmRlZmluZWQgY29tbWFuZDogLmdjb3JlLipcclxuJGdkYl9wcm9tcHQg JCIgeworKwkjIGdjb3JlIGNvbW1hbmQgbm90IHN1cHBvcnRlZCAtLSBub3RoaW5nIHRvIHRlc3Qg aGVyZS4KKysJdW5zdXBwb3J0ZWQgImdkYiBkb2VzIG5vdCBzdXBwb3J0IGdjb3JlIG9uIHRoaXMg dGFyZ2V0IgorKwlyZXR1cm4gLTE7CisrICAgIH0KKysgICAgLXJlICJTYXZlIGEgY29yZSBmaWxl IC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJcGFzcyAkdGVzdAorKyAgICB9CisrfQorKworK2lm IHsgIVtydW50byBsaWJdIH0gdGhlbiB7CisrICAgIHJldHVybiAtMQorK30KKysKKytzZXQgZXNj YXBlZGZpbGVuYW1lIFtzdHJpbmdfdG9fcmVnZXhwICR7Z2NvcmVmaWxlfV0KKysKKytzZXQgdGVz dCAic2F2ZSBhIGNvcmVmaWxlIgorK2dkYl90ZXN0X211bHRpcGxlICJnY29yZSAke2djb3JlZmls ZX0iICR0ZXN0IHsKKysgICAgLXJlICJTYXZlZCBjb3JlZmlsZSAke2VzY2FwZWRmaWxlbmFtZX1c clxuJGdkYl9wcm9tcHQgJCIgeworKwlwYXNzICR0ZXN0CisrICAgIH0KKysgICAgLXJlICJDYW4n dCBjcmVhdGUgYSBjb3JlZmlsZVxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCXVuc3VwcG9ydGVkICR0 ZXN0CisrCXJldHVybiAtMQorKyAgICB9CisrfQorKworKyMgTm93IHJlc3RhcnQgZ2RiIGFuZCBs b2FkIHRoZSBjb3JlZmlsZS4KKysKKytjbGVhbl9yZXN0YXJ0ICRleGVjdXRhYmxlCisrZ2RiX2xv YWRfc2hsaWJzICRsaWJmaWxlCisrCisrZ2RiX3Rlc3QgImNvcmUgJHtnY29yZWZpbGV9IiAiQ29y ZSB3YXMgZ2VuZXJhdGVkIGJ5IC4qIiAicmUtbG9hZCBnZW5lcmF0ZWQgY29yZWZpbGUiCisrCisr Z2RiX3Rlc3QgImZyYW1lIiAiIzAgXFteXHJcblxdKiBsaWIgLioiICJsaWJyYXJ5IGdvdCBsb2Fk ZWQiCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NjI3NDMyLWxvb3Atc3RhdGljLXNlbGYtY2xhc3MucGF0 Y2ggYi9nZGItYno2Mjc0MzItbG9vcC1zdGF0aWMtc2VsZi1jbGFzcy5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTAzZjE3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2Ri LWJ6NjI3NDMyLWxvb3Atc3RhdGljLXNlbGYtY2xhc3MucGF0Y2gKQEAgLTAsMCArMSwyODAgQEAK K2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTA5L21zZzAwNDQwLmh0 bWwKK1N1YmplY3Q6IFtwYXRjaF0gRml4IGluZmluaXRlIGxvb3AgY3Jhc2ggb24gc2VsZi1yZWZl cmVuY2luZyBjbGFzcworCitIaSwKKworY2xhc3MgQyB7IHN0YXRpYyBDIHM7IH07IGlzIGEgcHJv YmxlbSBmb3IgR0RCIGFzIGl0IHJlZmVyZW5jZXMgaXRzZWxmIGFuZCBpdAorY2FuIGNyYXNoLiAg RG93bnN0cmVhbSBCdWc6CisJaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNn aT9pZD02Mjc0MzIKKworIzMgIDB4MDAwMDAwMDAwMDViMmNjNSBpbiBnbnV2M19wYXNzX2J5X3Jl ZmVyZW5jZSAodHlwZT0weDEwNDRkM2M4KSBhdCAuLi8uLi9nZGIvZ251LXYzLWFiaS5jOjg0MAor IzQgIDB4MDAwMDAwMDAwMDViMmNjNSBpbiBnbnV2M19wYXNzX2J5X3JlZmVyZW5jZSAodHlwZT0w eDEwNDRkM2M4KSBhdCAuLi8uLi9nZGIvZ251LXYzLWFiaS5jOjg0MAorWy4uLl0KKworTm8gcmVn cmVzc2lvbnMgb24ge3g4Nl82NCx4ODZfNjQtbTMyLGk2ODZ9LWZlZG9yYTEzLWxpbnV4LWdudS4K KworRllJIHRoZSAuY2MgZmlsZSBpcyBub3QgcmVwcm9kdWNpYmxlIG9uIC0gYW5kIG9ubHkgb24g LSBGZWRvcmEgMTQgR0NDLCBmaWxlZDoKKwlodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hv d19idWcuY2dpP2lkPTYzNzMxNQorCitJIHdvdWxkIGV2ZW4gY2hlY2sgaXQgaW4gaW4gc29tZSB0 aW1lLgorCisKK1RoYW5rcywKK0phbgorCisKK2dkYi8KKzIwMTAtMDktMjQgIEphbiBLcmF0b2No dmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKworCUZpeCBHREIgY3Jhc2ggb24gaW5m ZXJpb3IgY2FsbHMgd2l0aCBzZWxmLXJlZmVyZW5jaW5nIGNsYXNzZXMuCisJKiBnbnUtdjMtYWJp LmMgKGdudXYzX3Bhc3NfYnlfcmVmZXJlbmNlKTogRG8gbm90IGNhbGwgaXRzZWxmIG9uIHN0YXRp YworCW1lbWJlciBmaWVsZHMuCisKK2dkYi90ZXN0c3VpdGUvCisyMDEwLTA5LTI0ICBKYW4gS3Jh dG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisKKwlGaXggR0RCIGNyYXNoIG9u IGluZmVyaW9yIGNhbGxzIHdpdGggc2VsZi1yZWZlcmVuY2luZyBjbGFzc2VzLgorCSogZ2RiLmR3 YXJmMi9kdzItY3AtaW5mY2FsbC1yZWYtc3RhdGljLmV4cDogTmV3IGZpbGUuCisJKiBnZGIuZHdh cmYyL2R3Mi1jcC1pbmZjYWxsLXJlZi1zdGF0aWMtbWFpbi5jOiBOZXcgZmlsZS4KKwkqIGdkYi5k d2FyZjIvZHcyLWNwLWluZmNhbGwtcmVmLXN0YXRpYy5TOiBOZXcgZmlsZS4KKworLS0tIGEvZ2Ri L2dudS12My1hYmkuYworKysrIGIvZ2RiL2dudS12My1hYmkuYworQEAgLTgzNSw5ICs4MzUsMTAg QEAgZ251djNfcGFzc19ieV9yZWZlcmVuY2UgKHN0cnVjdCB0eXBlICp0eXBlKQorICAgICAgYnkg cmVmZXJlbmNlLCBzbyBkb2VzIHRoaXMgY2xhc3MuICBTaW1pbGFybHkgZm9yIG1lbWJlcnMsIHdo aWNoCisgICAgICBhcmUgY29uc3RydWN0ZWQgd2hlbmV2ZXIgdGhpcyBjbGFzcyBpcy4gIFdlIGRv IG5vdCBuZWVkIHRvIHdvcnJ5CisgICAgICBhYm91dCByZWN1cnNpdmUgbG9vcHMgaGVyZSwgc2lu Y2Ugd2UgYXJlIG9ubHkgbG9va2luZyBhdCBtZW1iZXJzCistICAgICBvZiBjb21wbGV0ZSBjbGFz cyB0eXBlLiAgKi8KKysgICAgIG9mIGNvbXBsZXRlIGNsYXNzIHR5cGUuICBBbHNvIGlnbm9yZSBh bnkgc3RhdGljIG1lbWJlcnMuICAqLworICAgZm9yIChmaWVsZG51bSA9IDA7IGZpZWxkbnVtIDwg VFlQRV9ORklFTERTICh0eXBlKTsgZmllbGRudW0rKykKKy0gICAgaWYgKGdudXYzX3Bhc3NfYnlf cmVmZXJlbmNlIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGZpZWxkbnVtKSkpCisrICAgIGlmIChU WVBFX0ZJRUxEX0xPQ19LSU5EICh0eXBlLCBmaWVsZG51bSkgPT0gRklFTERfTE9DX0tJTkRfQklU UE9TCisrICAgICAgICAmJiBnbnV2M19wYXNzX2J5X3JlZmVyZW5jZSAoVFlQRV9GSUVMRF9UWVBF ICh0eXBlLCBmaWVsZG51bSkpKQorICAgICAgIHJldHVybiAxOworIAorICAgcmV0dXJuIDA7Cist LS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWNwLWluZmNh bGwtcmVmLXN0YXRpYy1tYWluLmMKK0BAIC0wLDAgKzEsNTEgQEAKKysvKiBUaGlzIHRlc3RjYXNl IGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAgIENvcHlyaWdodCAyMDEw IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor KyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysvKiBjbGFzcyBDCisrICAgICB7CisrICAgICBwdWJs aWM6CisrICAgICAgIHN0YXRpYyBDIHM7CisrICAgICB9OworKyAgIEMgQzo6czsKKysgICBDIGYo KQorKyAgIHsKKysgICAgIHJldHVybiBDOjpzOworKyAgIH0gICovCisrCisrYXNtICgiLmdsb2Js IGN1X3RleHRfc3RhcnQiKTsKKythc20gKCJjdV90ZXh0X3N0YXJ0OiIpOworKworK2FzbSAoIi5n bG9ibCBmX3N0YXJ0Iik7CisrYXNtICgiZl9zdGFydDoiKTsKKysKKyt2b2lkCisrZiAodm9pZCkK Kyt7CisrfQorKworK2FzbSAoIi5nbG9ibCBmX2VuZCIpOworK2FzbSAoImZfZW5kOiIpOworKwor K2ludAorK21haW4gKHZvaWQpCisreworKyAgZiAoKTsKKysgIHJldHVybiAwOworK30KKysKKyth c20gKCIuZ2xvYmwgY3VfdGV4dF9lbmQiKTsKKythc20gKCJjdV90ZXh0X2VuZDoiKTsKKy0tLSAv ZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItY3AtaW5mY2FsbC1y ZWYtc3RhdGljLlMKK0BAIC0wLDAgKzEsMTE1IEBACisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0 IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5cmlnaHQgMjAxMCBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4gICovCisrCisrLyogRGVidWcgaW5mb3JtYXRpb24gKi8KKysKKysJLnNlY3Rpb24g LmRlYnVnX2luZm8KKysuTGN1MV9iZWdpbjoKKysJLyogQ1UgaGVhZGVyICovCisrCS40Ynl0ZQku TGN1MV9lbmQgLSAuTGN1MV9zdGFydAkJLyogTGVuZ3RoIG9mIENvbXBpbGF0aW9uIFVuaXQgKi8K KysuTGN1MV9zdGFydDoKKysJLjJieXRlCTIJCQkJLyogRFdBUkYgVmVyc2lvbiAqLworKwkuNGJ5 dGUJLkxhYmJyZXYxX2JlZ2luCQkJLyogT2Zmc2V0IGludG8gYWJicmV2IHNlY3Rpb24gKi8KKysJ LmJ5dGUJNAkJCQkvKiBQb2ludGVyIHNpemUgKi8KKysKKysJLyogQ1UgZGllICovCisrCS51bGVi MTI4IDEJCQkJLyogQWJicmV2OiBEV19UQUdfY29tcGlsZV91bml0ICovCisrCS40Ynl0ZQljdV90 ZXh0X3N0YXJ0CQkJLyogRFdfQVRfbG93X3BjICovCisrCS40Ynl0ZQljdV90ZXh0X2VuZAkJCS8q IERXX0FUX2hpZ2hfcGMgKi8KKysJLmFzY2lpCSJmaWxlMS50eHRcMCIJCQkvKiBEV19BVF9uYW1l ICovCisrCS5hc2NpaQkiR05VIEMgMy4zLjNcMCIJCQkvKiBEV19BVF9wcm9kdWNlciAqLworKwku Ynl0ZQk0CQkJCS8qIERXX0FUX2xhbmd1YWdlIChEV19MQU5HX0NfcGx1c19wbHVzKSAqLworKwor Ky5MdHlwZV9jbGFzczoKKysJLnVsZWIxMjgJMwkJCS8qIEFiYnJldjogRFdfVEFHX2NsYXNzX3R5 cGUgKi8KKysJLmFzY2lpCQkiQ1wwIgkJCS8qIERXX0FUX25hbWUgKi8KKysKKysJLnVsZWIxMjgJ NAkJCS8qIEFiYnJldjogRFdfVEFHX21lbWJlciAqLworKwkuYXNjaWkJCSJzXDAiCQkJLyogRFdf QVRfbmFtZSAqLworKwkuNGJ5dGUJCS5MdHlwZV9jbGFzcy0uTGN1MV9iZWdpbiAvKiBEV19BVF90 eXBlICovCisrCS5ieXRlCQkxCQkJLyogRFdfQVRfZGVjbGFyYXRpb24gKi8KKysJLmJ5dGUJCTEJ CQkvKiBEV19BVF9leHRlcm5hbCAqLworKworKwkuYnl0ZQkJMAkJCS8qIEVuZCBvZiBjaGlsZHJl biBvZiBEV19UQUdfY2xhc3NfdHlwZSAqLworKworKwkudWxlYjEyOAk1CQkJLyogQWJicmV2OiBE V19UQUdfc3VicHJvZ3JhbSAqLworKwkuYXNjaWkJCSJmXDAiCQkJLyogRFdfQVRfbmFtZSAqLwor KwkuNGJ5dGUJCS5MdHlwZV9jbGFzcy0uTGN1MV9iZWdpbiAvKiBEV19BVF90eXBlICovCisrCS40 Ynl0ZQkJZl9zdGFydAkJCS8qIERXX0FUX2xvd19wYyAqLworKwkuNGJ5dGUJCWZfZW5kCQkJLyog RFdfQVRfaGlnaF9wYyAqLworKworKwkuYnl0ZQkJMAkJCS8qIEVuZCBvZiBjaGlsZHJlbiBvZiBD VSAqLworKworKy5MY3UxX2VuZDoKKysKKysvKiBBYmJyZXYgdGFibGUgKi8KKysJLnNlY3Rpb24g LmRlYnVnX2FiYnJldgorKy5MYWJicmV2MV9iZWdpbjoKKysJLnVsZWIxMjgJMQkJCS8qIEFiYnJl diBjb2RlICovCisrCS51bGViMTI4CTB4MTEJCQkvKiBEV19UQUdfY29tcGlsZV91bml0ICovCisr CS5ieXRlCQkxCQkJLyogaGFzX2NoaWxkcmVuICovCisrCS51bGViMTI4CTB4MTEJCQkvKiBEV19B VF9sb3dfcGMgKi8KKysJLnVsZWIxMjgJMHgxCQkJLyogRFdfRk9STV9hZGRyICovCisrCS51bGVi MTI4CTB4MTIJCQkvKiBEV19BVF9oaWdoX3BjICovCisrCS51bGViMTI4CTB4MQkJCS8qIERXX0ZP Uk1fYWRkciAqLworKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICovCisrCS51bGViMTI4 CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCisrCS51bGViMTI4CTB4MjUJCQkvKiBEV19BVF9w cm9kdWNlciAqLworKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLworKwkudWxl YjEyOAkweDEzCQkJLyogRFdfQVRfbGFuZ3VhZ2UgKi8KKysJLnVsZWIxMjgJMHhiCQkJLyogRFdf Rk9STV9kYXRhMSAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJ MHgwCQkJLyogVGVybWluYXRvciAqLworKworKwkudWxlYjEyOAkzCQkJLyogQWJicmV2IGNvZGUg Ki8KKysJLnVsZWIxMjgJMHgyCQkJLyogRFdfVEFHX2NsYXNzX3R5cGUgKi8KKysJLmJ5dGUJCTEJ CQkvKiBoYXNfY2hpbGRyZW4gKi8KKysJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAqLwor KwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLworKwkuYnl0ZQkJMHgwCQkJLyog VGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKworKwkudWxl YjEyOAk0CQkJLyogQWJicmV2IGNvZGUgKi8KKysJLnVsZWIxMjgJMHhkCQkJLyogRFdfVEFHX21l bWJlciAqLworKwkuYnl0ZQkJMAkJCS8qIGhhc19jaGlsZHJlbiAqLworKwkudWxlYjEyOAkweDMJ CQkvKiBEV19BVF9uYW1lICovCisrCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICov CisrCS51bGViMTI4CTB4NDkJCQkvKiBEV19BVF90eXBlICovCisrCS51bGViMTI4CTB4MTMJCQkv KiBEV19GT1JNX3JlZjQgKi8KKysJLnVsZWIxMjgJMHgzYwkJCS8qIERXX0FUX2RlY2xhcmF0aW9u ICovCisrCS51bGViMTI4CTB4YwkJCS8qIERXX0ZPUk1fZmxhZyAqLworKwkudWxlYjEyOAkweDNm CQkJLyogRFdfQVRfZXh0ZXJuYWwgKi8KKysJLnVsZWIxMjgJMHhjCQkJLyogRFdfRk9STV9mbGFn ICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrCS5ieXRlCQkweDAJCQkvKiBU ZXJtaW5hdG9yICovCisrCisrCS51bGViMTI4CTUJCQkvKiBBYmJyZXYgY29kZSAqLworKwkudWxl YjEyOAkweDJlCQkJLyogRFdfVEFHX3N1YnByb2dyYW0gKi8KKysJLmJ5dGUJCTAJCQkvKiBoYXNf Y2hpbGRyZW4gKi8KKysJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAqLworKwkudWxlYjEy OAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLworKwkudWxlYjEyOAkweDQ5CQkJLyogRFdfQVRf dHlwZSAqLworKwkudWxlYjEyOAkweDEzCQkJLyogRFdfRk9STV9yZWY0ICovCisrCS51bGViMTI4 CTB4MTEJCQkvKiBEV19BVF9sb3dfcGMgKi8KKysJLnVsZWIxMjgJMHgxCQkJLyogRFdfRk9STV9h ZGRyICovCisrCS51bGViMTI4CTB4MTIJCQkvKiBEV19BVF9oaWdoX3BjICovCisrCS51bGViMTI4 CTB4MQkJCS8qIERXX0ZPUk1fYWRkciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAq LworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKworKwkuYnl0ZQkJMHgwCQkJLyog VGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworLS0tIC9kZXYv bnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1jcC1pbmZjYWxsLXJlZi1z dGF0aWMuZXhwCitAQCAtMCwwICsxLDQ5IEBACisrIyBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor KyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIwor KyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisr CisrIyBDaGVjayB0aGF0IEdEQiBjYW4gY2FsbCBDKysgZnVuY3Rpb25zIHdob3NlIHBhcmFtZXRl cnMgb3IgcmV0dXJuIHZhbHVlcyBoYXZlCisrIyB0eXBlIGNvbnRhaW5pbmcgYSBzdGF0aWMgbWVt YmVyIG9mIHRoZSBzYW1lIHR5cGUuCisrCisrIyBTdGlsbCBubyBDKysgY29tcGlsZXIgaXMgdXNl ZC4KKytpZiB7IFtza2lwX2NwbHVzX3Rlc3RzXSB9IHsgY29udGludWUgfQorKworKyMgVGhpcyB0 ZXN0IGNhbiBvbmx5IGJlIHJ1biBvbiB0YXJnZXRzIHdoaWNoIHN1cHBvcnQgRFdBUkYtMiBhbmQg dXNlIGdhcy4KKysjIEZvciBub3cgcGljayBhIHNhbXBsaW5nIG9mIGxpa2VseSB0YXJnZXRzLgor K2lmIHshW2lzdGFyZ2V0ICotKi1saW51eCpdCisrICAgICYmICFbaXN0YXJnZXQgKi0qLWdudSpd CisrICAgICYmICFbaXN0YXJnZXQgKi0qLWVsZipdCisrICAgICYmICFbaXN0YXJnZXQgKi0qLW9w ZW5ic2QqXQorKyAgICAmJiAhW2lzdGFyZ2V0IGFybS0qLWVhYmkqXQorKyAgICAmJiAhW2lzdGFy Z2V0IHBvd2VycGMtKi1lYWJpKl19IHsKKysgICAgcmV0dXJuIDAgIAorK30KKysKKytzZXQgdGVz dGZpbGUgImR3Mi1jcC1pbmZjYWxsLXJlZi1zdGF0aWMiCisraWYgeyBbcHJlcGFyZV9mb3JfdGVz dGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gW2xpc3QgJHt0ZXN0ZmlsZX0tbWFpbi5j ICR7dGVzdGZpbGV9LlNdIHt9XSB9IHsKKysgICAgcmV0dXJuIC0xCisrfQorKworK2lmICFbcnVu dG9fbWFpbl0gdGhlbiB7CisrICAgIHJldHVybiAtMQorK30KKysKKysjIG1haW4gaXMgbm90IHBy b3ZpZGVkIGJ5IERXQVJGLgorK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGxhbmd1YWdlIGMrKyIK KysKKysjIFRoZXJlIGFyZSBubyBtYW5nbGVkIG5hbWVzIGluIERXQVJGIHRvIHN1Z2dlc3QgdGhl IHYzIEFCSS4KKytnZGJfdGVzdF9ub19vdXRwdXQgInNldCBjcC1hYmkgZ251LXYzIgorKworKyMg R0RCIGNvdWxkIGNyYXNoLiAgVGhlcmUgaXMgbm8gRFdfQVRfbG9jYXRpb24gc28gaXQgaXMgPG9w dGltaXplZCBvdXQ+LgorK2dkYl90ZXN0ICJwIGYoKSIgeyA9IHtzdGF0aWMgcyA9IDxvcHRpbWl6 ZWQgb3V0Pn19CisKCmRpZmYgLS1naXQgYS9nZGItYno2MzExNTgtY3h4LXRoaXMtbG9va3VwLnBh dGNoIGIvZ2RiLWJ6NjMxMTU4LWN4eC10aGlzLWxvb2t1cC5wYXRjaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi4wZDdhZTA1Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWJ6NjMx MTU4LWN4eC10aGlzLWxvb2t1cC5wYXRjaApAQCAtMCwwICsxLDE0IEBACitodHRwczovL2J1Z3pp bGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTYzMTE1OAoraHR0cDovL3NvdXJjZXdhcmUu b3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDkvbXNnMDAyMjkuaHRtbAorU3ViamVjdDogW3BhdGNo XSBQUiAxMTk5MiAiUmVncmVzc2lvbjogQysrIHRoaXMgc2NvcGUgc29tZXRpbWVzIGRvZXMgbm90 IHdvcmsiCisKKy0tLSBnZGItNy4yL2dkYi9jLWV4cC55Lm9yaWcJMjAxMC0wOC0xOSAxNzo1MDow MC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4yL2dkYi9jLWV4cC55CTIwMTAtMDktMTEgMjA6 MzA6MTUuMDAwMDAwMDAwICswMjAwCitAQCAtMjQyMiw2ICsyNDIyLDcgQEAgY2xhc3NpZnlfbmFt ZSAoc3RydWN0IGJsb2NrICpibG9jaykKKyAKKyAgIGlmIChzeW0gPT0gTlVMTAorICAgICAgICYm IHBhcnNlX2xhbmd1YWdlLT5sYV9sYW5ndWFnZSA9PSBsYW5ndWFnZV9jcGx1cworKyAgICAgICYm ICFpc19hX2ZpZWxkX29mX3RoaXMKKyAgICAgICAmJiAhbG9va3VwX21pbmltYWxfc3ltYm9sIChj b3B5LCBOVUxMLCBOVUxMKSkKKyAgICAgcmV0dXJuIFVOS05PV05fQ1BQX05BTUU7CisgCgpkaWZm IC0tZ2l0IGEvZ2RiLWJ6NjMxNTc1LWdkYi1pbmRleC1ub2JpdHMucGF0Y2ggYi9nZGItYno2MzE1 NzUtZ2RiLWluZGV4LW5vYml0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi43MDdhNjEzCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWJ6NjMxNTc1LWdkYi1pbmRleC1u b2JpdHMucGF0Y2gKQEAgLTAsMCArMSw2MSBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dk Yi1wYXRjaGVzLzIwMTAtMDkvbXNnMDAxODMuaHRtbAorU3ViamVjdDogW3BhdGNoXSAuZ2RiX2lu ZGV4OiBEbyBub3QgY3Jhc2ggb24gTk9CSVRTCisKK0hpLAorCitlbGZ1dGlscy0wLjE0OCBzdGls bCBkbyBub3QgY29udGFpbiBwYXRjaCBvZiBpdHMgR0lUCis4MDRlOWNhNGQ2NDRlNjRhNjEyNTMw N2NiZjBhMGI4OTQ3N2Q3NjExIHdoZXJlIHRoZSAuZ2RiX2luZGV4IHNlY3Rpb24gaGFzIGJlZW4K K2Fsc28gc3BsaXQgaW50byB0aGUgc2VwYXJhdGUgZGVidWcgaW5mbyBmaWxlLgorCitEdWUgdG8g aXQgYmluYXJpZXMgc3BsaXQgdXNpbmcgZWxmdXRpbHMtMC4xNDggY29udGFpbgorICBbMzhdIC5n ZGJfaW5kZXggICAgICAgIE5PQklUUyAgICAgICAgICAgMDAwMDAwMDAwMDAwMDAwMCAgMDAwMDMz OGMKK2luc3RlYWQgb2YgZXhwZWN0ZWQKKyAgWzI4XSAuZ2RiX2luZGV4ICAgICAgICBQUk9HQklU UyAgICAgICAgIDAwMDAwMDAwMDAwMDAwMDAgIDAwMDAyMTFjCisKK2FuZCBkdWUgdG8gaXQgR0RC IHdoaWxlIHJlYWRpbmcgdGhlIGZpbGUgY2FuIGVycm9yKCkgYnk6CitSZWFkaW5nIHN5bWJvbHMg ZnJvbSB4LmRlYnVnLi4uRHdhcmYgRXJyb3I6IENhbid0IHJlYWQgRFdBUkYgZGF0YSBmcm9tICd4 LmRlYnVnJworCit3aGljaCBzaG91bGQgbm90IGJlIGZhdGFsIGJ1dCBkdWUgdG8gc29tZSBvdGhl ciBidWdzIHRoZXJlaW4gaXQgY2FuIGNyYXNoIEdEQi4KKworVGhlIHdyb25nIHNlcGFyYXRlIGRl YnVnIGluZm8gZmlsZSBpcyBmb3IgZXhhbXBsZToKK2h0dHA6Ly9rb2ppcGtncy5mZWRvcmFwcm9q ZWN0Lm9yZy9wYWNrYWdlcy9nbGliYy8yLjEyLjkwLzEwL3g4Nl82NC9nbGliYy1kZWJ1Z2luZm8t Mi4xMi45MC0xMC54ODZfNjQucnBtCisvdXNyL2xpYi9kZWJ1Zy9saWI2NC9saWJ1dGlsLTIuMTIu OTAuc28uZGVidWcKKworT0sgdG8gY2hlY2staW4/CisKK0l0IGRvZXMgbm90IGF0dGVtcHQgdG8g dXNlIC5nZGJfaW5kZXggZnJvbSB0aGUgbWFpbiBiaW5hcnksIGl0IHdpbGwganVzdAorZGlzYWJs ZSAuZ2RiX2luZGV4IHVzYWdlIG9uIHRoZXNlIGJpbmFyaWVzLgorCisKK1RoYW5rcywKK0phbgor CisKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTAtMDkvbXNnMDAwNjIuaHRt bAorCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMC8wOS8wOCAxOTowOTo0MgkxLjEyMTYyCisj IyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMC8wOS8wOCAxOTo0OToyOAkxLjEyMTYzCisjIyAtMSwz ICsxLDcgQEAKKysyMDEwLTA5LTA4ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJl ZGhhdC5jb20+CisrCisrCSogZHdhcmYycmVhZC5jIChkd2FyZjJfcmVhZF9pbmRleCk6IFJldHVy biBvbiBubyBTRUNfSEFTX0NPTlRFTlRTLgorKworIDIwMTAtMDktMDggIERhbmllbCBKYWNvYm93 aXR6ICA8ZGFuQGNvZGVzb3VyY2VyeS5jb20+CisgCisgCSogZHdhcmYycmVhZC5jIChyZWFkX3N0 cnVjdHVyZV90eXBlKTogTW92ZSBwcm9jZXNzaW5nIG9mCistLS0gc3JjL2dkYi9kd2FyZjJyZWFk LmMJMjAxMC8wOS8wOCAxOTowOTo0MgkxLjQ1MgorKysrIHNyYy9nZGIvZHdhcmYycmVhZC5jCTIw MTAvMDkvMDggMTk6NDk6MjgJMS40NTMKK0BAIC0xOTA0LDYgKzE5MDQsMTMgQEAKKyAgIGlmIChk d2FyZjJfcGVyX29iamZpbGUtPmdkYl9pbmRleC5hc2VjdGlvbiA9PSBOVUxMCisgICAgICAgfHwg ZHdhcmYyX3Blcl9vYmpmaWxlLT5nZGJfaW5kZXguc2l6ZSA9PSAwKQorICAgICByZXR1cm4gMDsK KysKKysgIC8qIE9sZGVyIGVsZnV0aWxzIHN0cmlwIHZlcnNpb25zIGNvdWxkIGtlZXAgdGhlIHNl Y3Rpb24gaW4gdGhlIG1haW4KKysgICAgIGV4ZWN1dGFibGUgd2hpbGUgc3BsaXR0aW5nIGl0IGZv ciB0aGUgc2VwYXJhdGUgZGVidWcgaW5mbyBmaWxlLiAgKi8KKysgIGlmICgoYmZkX2dldF9maWxl X2ZsYWdzIChkd2FyZjJfcGVyX29iamZpbGUtPmdkYl9pbmRleC5hc2VjdGlvbikKKysgICAgICAg JiBTRUNfSEFTX0NPTlRFTlRTKSA9PSAwKQorKyAgICByZXR1cm4gMDsKKysKKyAgIGR3YXJmMl9y ZWFkX3NlY3Rpb24gKG9iamZpbGUsICZkd2FyZjJfcGVyX29iamZpbGUtPmdkYl9pbmRleCk7Cisg CisgICBhZGRyID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5nZGJfaW5kZXguYnVmZmVyOwoKZGlmZiAt LWdpdCBhL2dkYi1iejYzNDY2MC1nZGJweS1sb2FkLW9uLWF0dGFjaC5wYXRjaCBiL2dkYi1iejYz NDY2MC1nZGJweS1sb2FkLW9uLWF0dGFjaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi4yMjIzNzc2Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWJ6NjM0NjYwLWdkYnB5 LWxvYWQtb24tYXR0YWNoLnBhdGNoCkBAIC0wLDAgKzEsNjEgQEAKK2h0dHA6Ly9zb3VyY2V3YXJl Lm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTA5L21zZzAwMzY1Lmh0bWwKK1N1YmplY3Q6IFtwYXRj aF0gcHl0aG9uOiBsb2FkICotZ2RiLnB5IGZvciBzaGxpYnMgZHVyaW5nIGF0dGFjaAorCitIaSwK KworY3VycmVudGx5IGlmIHlvdSBhdHRhY2ggdG8gb3IgbG9hZCBhIGNvcmUgZmlsZSBmb3IgZXhl Y3V0YWJsZSwgaXRzIC1nZGIucHkKK3NjcmlwdCBpcyBsb2FkZWQuICBCdXQgbm9uZSAtZ2RiLnB5 IGZvciB0aGUgc2hhcmVkIGxpYnJhcmllcy4KKworU3Bhd25lZCBvciB3aXRoIHRoZSBmaXggKGxp YnN0ZGMrKy1nZGIucHkpOgorIzEgIDB4MDAwMDAwMDAwMDQwMDdiNSBpbiBmIChzPSJhIikgYXQg MS5DOjQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXiBpcyBzdGQ6OnN0cmluZworCitB dHRhY2hlZC9jb3JlIHdpdGhvdXQgdGhlIGZpeDoKKyMxICAweDAwMDAwMDAwMDA0MDA3YjUgaW4g ZiAocz0uLi4pIGF0IDEuQzo0CisKK05vIHJlZ3Jlc3Npb25zIG9uIHt4ODZfNjQseDg2XzY0LW0z MixpNjg2fS1mZWRvcmExMy1saW51eC1nbnUuCisKK01vc3RseSBvYnZpb3VzLCBJIHdpbGwgY2hl Y2sgaXQgaW4gbGF0ZXIuCisKKworVGhhbmtzLAorSmFuCisKKworZ2RiLworMjAxMC0wOS0yMiAg SmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorCisJKiBtYWluLmM6 IEluY2x1ZGUgb2JqZmlsZXMuaC4KKwkoY2FwdHVyZWRfbWFpbik6IE5ldyB2YXJpYWJsZSBvYmpm aWxlLiAgQ2FsbAorCWxvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIGZvciBBTExfT0JKRklM RVMuCisKKy0tLSAuL2dkYi9tYWluLmMJMjAxMC0wOS0yMiAxMDo1MTozMi4wMDAwMDAwMDAgKzAy MDAKKysrKyAuL2dkYi9tYWluLmMJMjAxMC0wOS0yMiAxMDo1MDo0NC4wMDAwMDAwMDAgKzAyMDAK K0BAIC00Myw2ICs0Myw3IEBACisgI2luY2x1ZGUgInNvdXJjZS5oIgorICNpbmNsdWRlICJjbGkv Y2xpLWNtZHMuaCIKKyAjaW5jbHVkZSAicHl0aG9uL3B5dGhvbi5oIgorKyNpbmNsdWRlICJvYmpm aWxlcy5oIgorIAorIC8qIFRoZSBzZWxlY3RlZCBpbnRlcnByZXRlci4gIFRoaXMgd2lsbCBiZSB1 c2VkIGFzIGEgc2V0IGNvbW1hbmQKKyAgICB2YXJpYWJsZSwgc28gaXQgc2hvdWxkIGFsd2F5cyBi ZSBtYWxsb2MnZWQgLSBzaW5jZQorQEAgLTMyMyw2ICszMjQsNyBAQCBjYXB0dXJlZF9tYWluICh2 b2lkICpkYXRhKQorIAorICAgaW50IGk7CisgICBpbnQgc2F2ZV9hdXRvX2xvYWQ7CisrICBzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKKyAKKyAgIHN0cnVjdCBjbGVhbnVwICpwcmVfc3RhdF9jaGFp biA9IG1ha2VfY29tbWFuZF9zdGF0c19jbGVhbnVwICgwKTsKKyAKK0BAIC05NTcsOCArOTU5LDgg QEAgQ2FuJ3QgYXR0YWNoIHRvIHByb2Nlc3MgYW5kIHNwZWNpZnkgYSBjbworICAgICAgV2Ugd2Fp dCB1bnRpbCBub3cgYmVjYXVzZSBpdCBpcyBjb21tb24gdG8gYWRkIHRvIHRoZSBzb3VyY2Ugc2Vh cmNoCisgICAgICBwYXRoIGluIGxvY2FsX2dkYmluaXQuICAqLworICAgZ2RicHlfZ2xvYmFsX2F1 dG9fbG9hZCA9IHNhdmVfYXV0b19sb2FkOworLSAgaWYgKHN5bWZpbGVfb2JqZmlsZSAhPSBOVUxM KQorLSAgICBsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAoc3ltZmlsZV9vYmpmaWxlKTsK KysgIEFMTF9PQkpGSUxFUyAob2JqZmlsZSkKKysgICAgbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29i amZpbGUgKG9iamZpbGUpOworIAorICAgZm9yIChpID0gMDsgaSA8IG5jbWQ7IGkrKykKKyAgICAg eworCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NjM3NzcwLWlmdW5jLXdhdGNocG9pbnQtZGVsZXRlLnBh dGNoIGIvZ2RiLWJ6NjM3NzcwLWlmdW5jLXdhdGNocG9pbnQtZGVsZXRlLnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3MDE1ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9n ZGItYno2Mzc3NzAtaWZ1bmMtd2F0Y2hwb2ludC1kZWxldGUucGF0Y2gKQEAgLTAsMCArMSwxMTEg QEAKK2NvbW1pdCAzMGZlZGFkZjIyNGE4YzExOTU3NWZjYzhhNmNlZDUxZjBkNGFlZTlmCitBdXRo b3I6IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorRGF0ZTogICBX ZWQgU2VwIDI5IDAxOjI1OjM5IDIwMTAgKzAyMDAKKworICAgIEZpeCB0aGUgY3Jhc2guCisKK2Nv bW1pdCBkMTAxY2U1OTdmMmQ2MTQzZTlmMDIzYTQ0NDQzNTJiY2VmZmIyNjc5CitBdXRob3I6IEph biBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorRGF0ZTogICBXZWQgU2Vw IDI5IDAwOjQyOjM3IDIwMTAgKzAyMDAKKworICAgIE5ldyB0ZXN0Y2FzZSBmb3I6IGh0dHBzOi8v YnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NjM3NzcwCisKK2RpZmYgLS1naXQg YS9nZGIvYnJlYWtwb2ludC5jIGIvZ2RiL2JyZWFrcG9pbnQuYworaW5kZXggZGU1MTIzMS4uMThi Nzg2OCAxMDA2NDQKKy0tLSBhL2dkYi9icmVha3BvaW50LmMKKysrKyBiL2dkYi9icmVha3BvaW50 LmMKK0BAIC0xMDU2MCw2ICsxMDU2MCwxMSBAQCBtYXBfYnJlYWtwb2ludF9udW1iZXJzIChjaGFy ICphcmdzLCB2b2lkICgqZnVuY3Rpb24pIChzdHJ1Y3QgYnJlYWtwb2ludCAqLAorIAkJICAgIC8q IEZVTkNUSU9OIGNhbiBiZSBhbHNvIGRlbGV0ZV9icmVha3BvaW50LiAgKi8KKyAJCSAgICBuZXh0 X3JlbGF0ZWRfYiA9IHJlbGF0ZWRfYnJlYWtwb2ludC0+cmVsYXRlZF9icmVha3BvaW50OworIAkJ ICAgIGZ1bmN0aW9uIChyZWxhdGVkX2JyZWFrcG9pbnQsIGRhdGEpOworKworKwkJICAgIC8qIEZv ciBkZWxldGVfYnJlYWtwb2ludCBvZiB0aGUgbGFzdCBlbnRyeSBvZiB0aGUgcmluZyB3ZQorKwkJ ICAgICAgIHdlcmUgdHJhdmVyc2luZyB3ZSB3b3VsZCBuZXZlciBnZXQgYmFjayB0byBCLiAgKi8K KysJCSAgICBpZiAobmV4dF9yZWxhdGVkX2IgPT0gcmVsYXRlZF9icmVha3BvaW50KQorKwkJICAg ICAgYnJlYWs7CisgCQkgICAgcmVsYXRlZF9icmVha3BvaW50ID0gbmV4dF9yZWxhdGVkX2I7Cisg CQkgIH0KKyAJCXdoaWxlIChyZWxhdGVkX2JyZWFrcG9pbnQgIT0gYik7CitkaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LWRlbGV0ZS5jIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS93YXRjaHBvaW50LWRlbGV0ZS5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5k ZXggMDAwMDAwMC4uMDMxZWY5MgorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS93YXRjaHBvaW50LWRlbGV0ZS5jCitAQCAtMCwwICsxLDMzIEBACisrLyogVGhpcyB0 ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5cmln aHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAg IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrdm9pZAorK2Z1bmMgKHZvaWQpCisrewor KyAgdm9sYXRpbGUgaW50IHggPSAwOworKworKyAgeCsrOwkvKiBicmVhay1oZXJlICovCisrICB4 Kys7CisrfQorKworK2ludAorK21haW4gKHZvaWQpCisreworKyAgZnVuYyAoKTsKKysKKysgIHJl dHVybiAwOworK30KK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9p bnQtZGVsZXRlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1kZWxldGUu ZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNDViYzY1MAorLS0tIC9k ZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LWRlbGV0ZS5l eHAKK0BAIC0wLDAgKzEsMzggQEAKKysjIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKytzZXQg dGVzdGZpbGUgIndhdGNocG9pbnQtZGVsZXRlIgorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMK KytzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CisrCisraWYgeyBb cHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxl fV0gfSB7CisrICAgIHVudGVzdGVkICR7dGVzdGZpbGV9LmV4cAorKyAgICByZXR1cm4gLTEKKyt9 CisrCisrIyBJdCBpcyBtb3JlIGNvbXBhdGlibGUgdGhpcyB3YXkuCisrZ2RiX3Rlc3Rfbm9fb3V0 cHV0ICJzZXQgY2FuLXVzZS1ody13YXRjaHBvaW50cyAwIgorKworK2lmICFbcnVudG9fbWFpbl0g eworKyAgICByZXR1cm4gLTEKKyt9CisrCisrIyBFbnN1cmUgdGhlcmUgaXMgYSBwYXJlbnQgZnJh bWUgdG8gY3JlYXRlIHJlbGF0ZWQgYnBfd2F0Y2hwb2ludF9zY29wZS4KKytnZGJfYnJlYWtwb2lu dCBbZ2RiX2dldF9saW5lX251bWJlciAiYnJlYWstaGVyZSJdCisrZ2RiX2NvbnRpbnVlX3RvX2Jy ZWFrcG9pbnQgImJyZWFrLWhlcmUiICIuKiBicmVhay1oZXJlIC4qIgorKworK2dkYl90ZXN0ICJ3 YXRjaCB4IiB7V2F0Y2hwb2ludCBbMC05XSs6IHh9CisrCisrZ2RiX3Rlc3Rfbm9fb3V0cHV0IHtk ZWxldGUgJGJwbnVtfQoKZGlmZiAtLWdpdCBhL2dkYi1iejY0Mjg3OS1lbGZyZWFkLXNpZ2ludC1z dGFsZS5wYXRjaCBiL2dkYi1iejY0Mjg3OS1lbGZyZWFkLXNpZ2ludC1zdGFsZS5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTA3OWVmCi0tLSAvZGV2L251bGwKKysr IGIvZ2RiLWJ6NjQyODc5LWVsZnJlYWQtc2lnaW50LXN0YWxlLnBhdGNoCkBAIC0wLDAgKzEsODUg QEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTA5L21zZzAwMTky Lmh0bWwKK1N1YmplY3Q6IFtwYXRjaF0gRml4IEVMRiBzdGFsZSByZWZlcmVuY2UgIFtSZTogW3Bh dGNoXSAuZ2RiX2luZGV4OiBEbyBub3QgY3Jhc2ggb24gTk9CSVRTXQorCitPbiBXZWQsIDA4IFNl cCAyMDEwIDIxOjQwOjEyICswMjAwLCBUb20gVHJvbWV5IHdyb3RlOgorPiA+Pj4+PiAiSmFuIiA9 PSBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gd3JpdGVzOgorPiAK Kz4gSmFuPiB3aGljaCBzaG91bGQgbm90IGJlIGZhdGFsIGJ1dCBkdWUgdG8gc29tZSBvdGhlciBi dWdzIHRoZXJlaW4gaXQgY2FuCis+IEphbj4gY3Jhc2ggR0RCLgorPiAKKz4gSSBhbSBjdXJpb3Vz IGFib3V0IHRoZXNlIG90aGVyIGJ1Z3MuCisKKysgICAgICAvKiBNZW1vcnkgZ2V0cyBwZXJtYW5l bnRseSByZWZlcmVuY2VkIGZyb20gQUJGRCBhZnRlcgorKwkgYmZkX2dldF9zeW50aGV0aWNfc3lt dGFiIHNvIGl0IG11c3Qgbm90IGdldCBmcmVlZCBiZWZvcmUgQUJGRCBnZXRzLgorKwkgSXQgaGFw cGVucyBvbmx5IGluIHRoZSBjYXNlIHdoZW4gZWxmX3NsdXJwX3JlbG9jX3RhYmxlIHNlZXMKKysJ IGFzZWN0aW9uLT5yZWxvY2F0aW9uIE5VTEwuICBEZXRlcm1pbmluZyB3aGljaCBzZWN0aW9uIGlz IGFzZWN0aW9uIGlzCisrCSBkb25lIGJ5IF9iZmRfZWxmX2dldF9zeW50aGV0aWNfc3ltdGFiIHdo aWNoIGlzIGFsbCBhIGJmZAorKwkgaW1wbGVtZW50YXRpb24gZGV0YWlsLCB0aG91Z2guICAqLwor CitUaGF0IGlzIGZyb206CisKKyMwICBpbiBlbGZfc2x1cnBfcmVsb2NfdGFibGVfZnJvbV9zZWN0 aW9uIChhYmZkLCBhc2VjdCwgcmVsX2hkciwgcmVsb2NfY291bnQ9MTE3MCwgcmVsZW50cywgc3lt Ym9scywgZHluYW1pYz0xKSBhdCBlbGZjb2RlLmg6MTQ4MgorIzEgIGluIGJmZF9lbGY2NF9zbHVy cF9yZWxvY190YWJsZSAoYWJmZCwgYXNlY3QsIHN5bWJvbHMsIGR5bmFtaWM9MSkgYXQgZWxmY29k ZS5oOjE1NjMKKyMyICBpbiBfYmZkX2VsZl9nZXRfc3ludGhldGljX3N5bXRhYiAoYWJmZCwgc3lt Y291bnQ9MCwgc3ltcywgZHluc3ltY291bnQ9MTc5MiwgZHluc3ltcywgcmV0KSBhdCBlbGYuYzo5 MjY5CisjMyAgaW4gZWxmX3N5bWZpbGVfcmVhZCAob2JqZmlsZSwgc3ltZmlsZV9mbGFncz02KSBh dCBlbGZyZWFkLmM6ODA5CisKK1doZXJlCisJICBlbGZjb2RlLmg6ZWxmX3NsdXJwX3JlbG9jX3Rh YmxlX2Zyb21fc2VjdGlvbgorY29udGFpbnMKKyAgICAgICAgICBwcyA9IHN5bWJvbHMgKyBFTEZf Ul9TWU0gKHJlbGEucl9pbmZvKSAtIDE7CisgICAgICAgICAgcmVsZW50LT5zeW1fcHRyX3B0ciA9 IHBzOworCitgc3ltYm9scycgaGVyZSBpcyBlbGZfc3ltZmlsZV9yZWFkJ3MgYGR5bl9zeW1ib2xf dGFibGUnLiAgYGR5bl9zeW1ib2xfdGFibGUnCitnb3QgaW1tZWRpYXRlbHkgeGZyZWUnZCBidXQg dGhlIGZyZWVkIG1lbW9yeSByZW1haW5lZCByZWZlcmVuY2VkIGJ5Cithc2VjdC0+cmVsb2NhdGlv biAoY29udGFpbmluZyB0aGUgUkVMRU5UIG1lbW9yeSBhYm92ZSwgc3RvcmVkIHRoZXJlIGJ5Citl bGZfc2x1cnBfcmVsb2NfdGFibGUpLgorCithc2VjdC0+cmVsb2NhdGlvbiBwcm9iYWJseSBkb2Vz IG5vdCBnZXQgdXNlZCBpZiBBQkZEIGlzIG5vdCBiZWluZyByZWFkLWluIHRoZQorc2Vjb25kIHRp bWUsIHdoaWNoIGhhcHBlbnMgb25seSBpZiBPQkpGSUxFIGlzIGJlaW5nIGNyZWF0ZWQgdGhlIHNl Y29uZCB0aW1lLAord2hpY2ggaGFwcGVucyBkdWUgdG8gdGhlIGVycm9yIGNhbGwgaW4gdGhlIHBy ZXZpb3VzIG1haWwuCisKKworSSB3YXMgY3VyaW91cyB0aGVyZSBlbGZfc3ltZmlsZV9yZWFkIHVz ZXMgMCBmb3IgQ09QWV9OQU1FUyBpbiBhIHNpbWlsYXIgY2FzZToKKyAgICAgIGVsZl9zeW10YWJf cmVhZCAob2JqZmlsZSwgU1RfUkVHVUxBUiwgc3ltY291bnQsIHN5bWJvbF90YWJsZSwgMCk7Cit3 aGVyZSBTWU1CT0xfVEFCTEUgaXMgYWxzbyBpbW1lZGlhdGVseSB4ZnJlZWQuICBCdXQgdGhhdCBz ZWVtcyB0byBiZSBjb3JyZWN0IGFzCitlbGZfc2x1cnBfc3ltYm9sX3RhYmxlIHVzZXMgCisgICAg ICBzeW1iYXNlID0gKGVsZl9zeW1ib2xfdHlwZSAqKSBiZmRfemFsbG9jIChhYmZkLCBhbXQpOwor Zm9yIHRoZSBjb250ZW50IHdoZXJlIGxhdGVyIGVsZnJlYWQuYydzIFNZTUJPTF9UQUJMRSBwb2lu dHMgdG8uICBPbmx5IHRoZQorcG9pbnRlcnMgZ2V0IHhmcmVlZCB3aGljaCBpcyBPSy4KKworCitO byByZWdyZXNzaW9ucyBvbiB7eDg2XzY0LHg4Nl82NC1tMzIsaTY4Nn0tZmVkb3JhMTRzbmFwc2hv dC1saW51eC1nbnUuCisKKworVGhhbmtzLAorSmFuCisKKworZ2RiLworMjAxMC0wOS0wOSAgSmFu IEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorCisJRml4IHN0YWxlIG1l bW9yeSByZWZlcmVuY2VzLgorCSogZWxmcmVhZC5jOiBJbmNsdWRlIGxpYmJmZC5oLgorCShlbGZf c3ltZmlsZV9yZWFkKTogUmVwbGFjZSB4bWFsbG9jIGJ5IGJmZF9hbGxvYywgZHJvcCB4ZnJlZSwg bmV3CisJY29tbWVudC4KKworLS0tIGEvZ2RiL2VsZnJlYWQuYworKysrIGIvZ2RiL2VsZnJlYWQu YworQEAgLTc5Miw4ICs3OTMsMTQgQEAgZWxmX3N5bWZpbGVfcmVhZCAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUsIGludCBzeW1maWxlX2ZsYWdzKQorIAorICAgaWYgKHN0b3JhZ2VfbmVlZGVkID4g MCkKKyAgICAgeworLSAgICAgIGR5bl9zeW1ib2xfdGFibGUgPSAoYXN5bWJvbCAqKikgeG1hbGxv YyAoc3RvcmFnZV9uZWVkZWQpOworLSAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGR5bl9zeW1i b2xfdGFibGUpOworKyAgICAgIC8qIE1lbW9yeSBnZXRzIHBlcm1hbmVudGx5IHJlZmVyZW5jZWQg ZnJvbSBBQkZEIGFmdGVyCisrCSBiZmRfZ2V0X3N5bnRoZXRpY19zeW10YWIgc28gaXQgbXVzdCBu b3QgZ2V0IGZyZWVkIGJlZm9yZSBBQkZEIGdldHMuCisrCSBJdCBoYXBwZW5zIG9ubHkgaW4gdGhl IGNhc2Ugd2hlbiBlbGZfc2x1cnBfcmVsb2NfdGFibGUgc2VlcworKwkgYXNlY3Rpb24tPnJlbG9j YXRpb24gTlVMTC4gIERldGVybWluaW5nIHdoaWNoIHNlY3Rpb24gaXMgYXNlY3Rpb24gaXMKKysJ IGRvbmUgYnkgX2JmZF9lbGZfZ2V0X3N5bnRoZXRpY19zeW10YWIgd2hpY2ggaXMgYWxsIGEgYmZk CisrCSBpbXBsZW1lbnRhdGlvbiBkZXRhaWwsIHRob3VnaC4gICovCisrCisrICAgICAgZHluX3N5 bWJvbF90YWJsZSA9IGJmZF9hbGxvYyAoYWJmZCwgc3RvcmFnZV9uZWVkZWQpOworICAgICAgIGR5 bnN5bWNvdW50ID0gYmZkX2Nhbm9uaWNhbGl6ZV9keW5hbWljX3N5bXRhYiAob2JqZmlsZS0+b2Jm ZCwKKyAJCQkJCQkgICAgIGR5bl9zeW1ib2xfdGFibGUpOworIAorCgpkaWZmIC0tZ2l0IGEvZ2Ri LWJ6NjQ1NzczLWlmb3J0LWNhc2UtMW9mMy5wYXRjaCBiL2dkYi1iejY0NTc3My1pZm9ydC1jYXNl LTFvZjMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWM5Zjg4ZAot LS0gL2Rldi9udWxsCisrKyBiL2dkYi1iejY0NTc3My1pZm9ydC1jYXNlLTFvZjMucGF0Y2gKQEAg LTAsMCArMSwzMTMgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEw LTExL21zZzAwMDg0Lmh0bWwKK1N1YmplY3Q6IFtuZXcgdGVzdGNhc2VdIFJlZ3Jlc3Npb24gNy4x LT43LjIgZm9yIGlGb3J0ICBbUmU6IFtSRkEtdjJdIGR3YXJmIGRlYnVnIGZvcm1hdDogU3VwcG9y dCBEV19BVF92YXJpYWJsZV9wYXJhbWV0ZXIgYXR0cmlidXRlXQorCitPbiBGcmksIDIxIE1heSAy MDEwIDIyOjQ1OjM1ICswMjAwLCBQaWVycmUgTXVsbGVyIHdyb3RlOgorPiAgIFRoYW5rcywgSSBj b21taXR0ZWQgdGhlIHBhdGNoLgorCitjb21taXQgNTcwZDVkMDFkZTM1ZWZmYWRhMjc3YTY5NTUy YzA5MDNhNDkyODI0MQorQXV0aG9yOiBQaWVycmUgTXVsbGVyIDxtdWxsZXJAaWNzLnUtc3RyYXNi Zy5mcj4KK0RhdGU6ICAgRnJpIE1heSAyMSAyMDo0NToxOCAyMDEwICswMDAwCisKKwkqIGR3YXJm MnJlYWQuYyAobmV3X3N5bWJvbCk6IEhhbmRsZSBEV19BVF92YXJpYWJsZV9wYXJhbWV0ZXIKKwlh dHRyaWJ1dGUuCisKKworUGxlYXNlIHJldmVydCB0aGlzIHBhdGNoLgorCis+RnJvbSB0aGUgRFdB UkYtNCBkZXNjcmlwdGlvbiBvZiBEV19BVF92YXJpYWJsZV9wYXJhbWV0ZXIgSSBkbyBub3QgdGhp bmsgaXQKK2NoYW5nZXMgdGhlIGRhdGEgc3RydWN0dXJlcyBtZWFuaW5nIGluIGFueSB3YXkuICBJ dCBqdXN0IHN0YXRlcyB3aGljaCBkYXRhIGNhbgorYmUgbW9kaWZpZWQgYnkgd2hvbS4gIEkgZG8g bm90IHRoaW5rIHRoaXMgaXMgdXNlZnVsIGZvciBHREIgaW4gYW55IHdheS4KKworCis+ID4gSSB0 aGluayBpdCB3b3VsZCBiZSBpbXByb3ZlZCBieSBhIHRlc3QgY2FzZSwgYnV0IHRoYXQgaXMgdXAg dG8geW91LgorPiAKKz4gICBUaGlzIHRlc3Qgd291bGQgYmUgcGFzY2FsIHNwZWNpZmljIGFueWhv dywKKworSSBiZWxpZXZlIHRoZSBQYXNjYWwgY29tcGlsZXIgc2hvdWxkIGdlbmVyYXRlIGRpZmZl cmVudCBkZWJ1ZyBpbmZvLiAgRm9yIHRoZQorYHZhcicga2V5d29yZCB5b3UgY2FuIGVpdGhlciAo YSkgdXNlIERXX1RBR19yZWZlcmVuY2VfdHlwZSBhbmQgcG9pbnQKK0RXX0FUX2xvY2F0aW9uIGF0 IHRoZSBwb2ludGVyIG9yIChiKSB1c2UgRFdfT1BfZGVyZWYgKGFzIGlGb3J0IGRvZXMpIG9uIHRo ZQorcGFzc2VkIHBvaW50ZXIgYW5kIHBvaW50IERXX0FUX2xvY2F0aW9uIGF0IHRoZSB2YWx1ZSBp dHNlbGYuCitEV19BVF92YXJpYWJsZV9wYXJhbWV0ZXIgd291bGQgYmUgdHJ1ZSBvbmx5IGZvciB0 aGUgKGEpIGNob2ljZS4KKworMQkgIHN1YnJvdXRpbmUgZiAoaSkKKzIJICBpbnRlZ2VyIGkKKzMJ ICBpID0gMgorNAkgIGVuZAorNQkgIHByb2dyYW0gdmFycGFyYW0KKzYJICBpbnRlZ2VyIG0KKzcJ ICBtID0gMQorOAkgIGNhbGwgZiAobSkKKzkJICB3cml0ZSgqLCopIG0KKzEwCSAgZW5kCisKK2Zv ciBpRm9ydCAxMS4xIDIwMTAwODA2IGl0IHJlZ3Jlc3NlZCB0aGlzIGNvZGUsIEdEQi03LjEgZGlz cGxheWVkOgorCitCcmVha3BvaW50IDEsIGYgKGk9MSkgYXQgdmFycGFyYW0uZjkwOjMKKzMJICBp ID0gMgorKGdkYikgcCBpCiskMSA9IDEKKword2hpbGUgR0RCLTcuMiBkaXNwbGF5czoKKworQnJl YWtwb2ludCAyLCBmIChpPUAweDEpIGF0IHZhcnBhcmFtLmY5MDozCiszCSAgaSA9IDIKKyhnZGIp IHAgaQorJDEgPSAoUkVGIFRPIC0+ICggSU5URUdFUig0KSApKSBAMHgxOiA8ZXJyb3IgcmVhZGlu ZyB2YXJpYWJsZT4KKworKG5vdGUgdGhhdCBgMHgxJyBHREIgY29uc2lkZXJzIGFzIGFuIGFkZHJl c3MgaGVyZSkKKworCisKK0EgbmV3IHRlc3RjYXNlIGZvciB0aGUgaUZvcnQgdXNhZ2UgY2FzZSBp cyBhdHRhY2hlZC4KKworTm8gcmVncmVzc2lvbnMgb24ge3g4Nl82NCx4ODZfNjQtbTMyLGk2ODZ9 LWZlZG9yYTE0c25hcHNob3QtbGludXgtZ251LgorCitJIHdpbGwgdGhlbiBjaGVjay1pbiB0aGUg dGVzdGNhc2Ugb3IgeW91IGNhbiBvciBzby4KKworCitSZWdhcmRzLAorSmFuCisKKworZ2RiLwor MjAxMC0xMS0wNCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgor CisJUmV2ZXJ0OgorCTIwMTAtMDUtMjEgIFBpZXJyZSBNdWxsZXIgIDxtdWxsZXJAaWNzLnUtc3Ry YXNiZy5mcj4KKwkqIGR3YXJmMnJlYWQuYyAobmV3X3N5bWJvbCk6IEhhbmRsZSBEV19BVF92YXJp YWJsZV9wYXJhbWV0ZXIKKwlhdHRyaWJ1dGUuCisKK2dkYi90ZXN0c3VpdGUvCisyMDEwLTExLTA0 ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisKKwkqIGR3Mi1p Zm9ydC1wYXJhbWV0ZXItZGVidWcuUzogTmV3IGZpbGUuCisJKiBkdzItaWZvcnQtcGFyYW1ldGVy LmM6IE5ldyBmaWxlLgorCSogZHcyLWlmb3J0LXBhcmFtZXRlci5leHA6IE5ldyBmaWxlLgorCitJ bmRleDogZ2RiLTcuMi9nZGIvZHdhcmYycmVhZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMi5v cmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0xMS0wNyAwNToyNDowMS4wMDAwMDAwMDAgKzAxMDAK KysrKyBnZGItNy4yL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0xMS0wNyAwNTozNjozNC4wMDAwMDAw MDAgKzAxMDAKK0BAIC0xMDQ3NCwxNCArMTA0NzQsNiBAQCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGll X2luZm8gKmRpZSwgc3RydWN0CisgCSAgICB7CisgCSAgICAgIGR3YXJmMl9jb25zdF92YWx1ZSAo YXR0ciwgc3ltLCBjdSk7CisgCSAgICB9CistCSAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERX X0FUX3ZhcmlhYmxlX3BhcmFtZXRlciwgY3UpOworLQkgIGlmIChhdHRyICYmIERXX1VOU05EIChh dHRyKSkKKy0JICAgIHsKKy0JICAgICAgc3RydWN0IHR5cGUgKnJlZl90eXBlOworLQorLQkgICAg ICByZWZfdHlwZSA9IGxvb2t1cF9yZWZlcmVuY2VfdHlwZSAoU1lNQk9MX1RZUEUgKHN5bSkpOwor LQkgICAgICBTWU1CT0xfVFlQRSAoc3ltKSA9IHJlZl90eXBlOworLQkgICAgfQorIAorIAkgIGFk ZF9zeW1ib2xfdG9fbGlzdCAoc3ltLCBjdS0+bGlzdF9pbl9zY29wZSk7CisgCSAgYnJlYWs7CitJ bmRleDogZ2RiLTcuMi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWlmb3J0LXBhcmFtZXRl ci1kZWJ1Zy5TCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAu MDAwMDAwMDAwICswMDAwCisrKysgZ2RiLTcuMi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcy LWlmb3J0LXBhcmFtZXRlci1kZWJ1Zy5TCTIwMTAtMTEtMDcgMDU6MzY6MTguMDAwMDAwMDAwICsw MTAwCitAQCAtMCwwICsxLDEyMiBAQAorKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIs IHRoZSBHTlUgZGVidWdnZXIuCisrCisrICAgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAg IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysg ICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u ICAqLworKworKwkuc2VjdGlvbiAuZGVidWdfaW5mbworKy5MY3UxX2JlZ2luOgorKwkvKiBDVSBo ZWFkZXIgKi8KKysJLjRieXRlCS5MY3UxX2VuZCAtIC5MY3UxX3N0YXJ0CQkvKiBMZW5ndGggb2Yg Q29tcGlsYXRpb24gVW5pdCAqLworKy5MY3UxX3N0YXJ0OgorKwkuMmJ5dGUJMgkJCQkvKiBEV0FS RiBWZXJzaW9uICovCisrCS40Ynl0ZQkuTGFiYnJldjFfYmVnaW4JCQkvKiBPZmZzZXQgaW50byBh YmJyZXYgc2VjdGlvbiAqLworKwkuYnl0ZQk0CQkJCS8qIFBvaW50ZXIgc2l6ZSAqLworKworKwkv KiBDVSBkaWUgKi8KKysJLnVsZWIxMjggMQkJCQkvKiBBYmJyZXY6IERXX1RBR19jb21waWxlX3Vu aXQgKi8KKysJLmFzY2lpCSJmaWxlMS50eHRcMCIJCQkvKiBEV19BVF9uYW1lICovCisrCS5hc2Np aQkiR05VIEMgMy4zLjNcMCIJCQkvKiBEV19BVF9wcm9kdWNlciAqLworKwkuYnl0ZQkxCQkJCS8q IERXX0FUX2xhbmd1YWdlIChDKSAqLworKwkuNGJ5dGUJZnVuYwkJCQkvKiBEV19BVF9sb3dfcGMg Ki8KKysJLjRieXRlCW1haW4JCQkJLyogRFdfQVRfaGlnaF9wYyAqLworKworKwkudWxlYjEyOAky CQkJLyogQWJicmV2OiBEV19UQUdfc3VicHJvZ3JhbSAqLworKwkuYnl0ZQkJMQkJCS8qIERXX0FU X2V4dGVybmFsICovCisrCS5hc2NpaQkJImZ1bmNcMCIJCS8qIERXX0FUX25hbWUgKi8KKysJLjRi eXRlCQlmdW5jCQkJLyogRFdfQVRfbG93X3BjICovCisrCS40Ynl0ZQkJbWFpbgkJCS8qIERXX0FU X2hpZ2hfcGMgKi8KKysKKysJLnVsZWIxMjgJMwkJCS8qIEFiYnJldjogRFdfVEFHX2Zvcm1hbF9w YXJhbWV0ZXIgKi8KKysJLmFzY2lpCQkicGFyYW1cMCIJCS8qIERXX0FUX25hbWUgKi8KKysJLmJ5 dGUJCTEJCQkvKiBEV19BVF92YXJpYWJsZV9wYXJhbWV0ZXIgKi8KKysJLjRieXRlCQkuTHR5cGVf aW50IC0gLkxjdTFfYmVnaW4JLyogRFdfQVRfdHlwZSAqLworKwkuYnl0ZQkJMmYgLSAxZgkJCS8q IERXX0FUX2xvY2F0aW9uICovCisrMToJLmJ5dGUJCTMJCQkvKiAgIERXX09QX2FkZHIgKi8KKysJ LjRieXRlCQlwdHIJCQkvKiAgIDxhZGRyPiAqLworKwkuYnl0ZQkJMHg2CQkJLyogICBEV19PUF9k ZXJlZiAqLworKzI6CisrCisrCS5ieXRlCQkwCQkJLyogRW5kIG9mIGNoaWxkcmVuIG9mIGZ1bmMg Ki8KKysKKysuTHR5cGVfaW50OgorKwkudWxlYjEyOAk0CQkJLyogQWJicmV2OiBEV19UQUdfYmFz ZV90eXBlICovCisrCS5hc2NpaQkJImludFwwIgkJCS8qIERXX0FUX25hbWUgKi8KKysJLmJ5dGUJ CTQJCQkvKiBEV19BVF9ieXRlX3NpemUgKi8KKysJLmJ5dGUJCTUJCQkvKiBEV19BVF9lbmNvZGlu ZyAqLworKworKwkuYnl0ZQkJMAkJCS8qIEVuZCBvZiBjaGlsZHJlbiBvZiBDVSAqLworKy5MY3Ux X2VuZDoKKysKKysvKiBBYmJyZXYgdGFibGUgKi8KKysJLnNlY3Rpb24gLmRlYnVnX2FiYnJldgor Ky5MYWJicmV2MV9iZWdpbjoKKysJLnVsZWIxMjgJMQkJCS8qIEFiYnJldiBjb2RlICovCisrCS51 bGViMTI4CTB4MTEJCQkvKiBEV19UQUdfY29tcGlsZV91bml0ICovCisrCS5ieXRlCQkxCQkJLyog aGFzX2NoaWxkcmVuICovCisrCS51bGViMTI4CTB4MwkJCS8qIERXX0FUX25hbWUgKi8KKysJLnVs ZWIxMjgJMHg4CQkJLyogRFdfRk9STV9zdHJpbmcgKi8KKysJLnVsZWIxMjgJMHgyNQkJCS8qIERX X0FUX3Byb2R1Y2VyICovCisrCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCisr CS51bGViMTI4CTB4MTMJCQkvKiBEV19BVF9sYW5ndWFnZSAqLworKwkudWxlYjEyOAkweGIJCQkv KiBEV19GT1JNX2RhdGExICovCisrCS51bGViMTI4CTB4MTEJCQkvKiBEV19BVF9sb3dfcGMgKi8K KysJLnVsZWIxMjgJMHgxCQkJLyogRFdfRk9STV9hZGRyICovCisrCS51bGViMTI4CTB4MTIJCQkv KiBEV19BVF9oaWdoX3BjICovCisrCS51bGViMTI4CTB4MQkJCS8qIERXX0ZPUk1fYWRkciAqLwor KwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWlu YXRvciAqLworKworKwkudWxlYjEyOAkyCQkJLyogQWJicmV2IGNvZGUgKi8KKysJLnVsZWIxMjgJ MHgyZQkJCS8qIERXX1RBR19zdWJwcm9ncmFtICovCisrCS5ieXRlCQkxCQkJLyogaGFzX2NoaWxk cmVuICovCisrCS51bGViMTI4CTB4M2YJCQkvKiBEV19BVF9leHRlcm5hbCAqLworKwkudWxlYjEy OAkweGMJCQkvKiBEV19GT1JNX2ZsYWcgKi8KKysJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFt ZSAqLworKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLworKwkudWxlYjEyOAkw eDExCQkJLyogRFdfQVRfbG93X3BjICovCisrCS51bGViMTI4CTB4MQkJCS8qIERXX0ZPUk1fYWRk ciAqLworKwkudWxlYjEyOAkweDEyCQkJLyogRFdfQVRfaGlnaF9wYyAqLworKwkudWxlYjEyOAkw eDEJCQkvKiBEV19GT1JNX2FkZHIgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8K KysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysKKysJLnVsZWIxMjgJMwkJCS8qIEFi YnJldiBjb2RlICovCisrCS51bGViMTI4CTB4MDUJCQkvKiBEV19UQUdfZm9ybWFsX3BhcmFtZXRl ciAqLworKwkuYnl0ZQkJMAkJCS8qIGhhc19jaGlsZHJlbiAqLworKwkudWxlYjEyOAkweDMJCQkv KiBEV19BVF9uYW1lICovCisrCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCisr CS51bGViMTI4CTB4NGIJCQkvKiBEV19BVF92YXJpYWJsZV9wYXJhbWV0ZXIgKi8KKysJLnVsZWIx MjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLworKwkudWxlYjEyOAkweDQ5CQkJLyogRFdfQVRf dHlwZSAqLworKwkudWxlYjEyOAkweDEzCQkJLyogRFdfRk9STV9yZWY0ICovCisrCS51bGViMTI4 CTB4MgkJCS8qIERXX0FUX2xvY2F0aW9uICovCisrCS51bGViMTI4CTB4YQkJCS8qIERXX0ZPUk1f YmxvY2sxICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrCS5ieXRlCQkweDAJ CQkvKiBUZXJtaW5hdG9yICovCisrCisrCS51bGViMTI4CTQJCQkvKiBBYmJyZXYgY29kZSAqLwor KwkudWxlYjEyOAkweDI0CQkJLyogRFdfVEFHX2Jhc2VfdHlwZSAqLworKwkuYnl0ZQkJMAkJCS8q IGhhc19jaGlsZHJlbiAqLworKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICovCisrCS51 bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCisrCS51bGViMTI4CTB4YgkJCS8qIERX X0FUX2J5dGVfc2l6ZSAqLworKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCisr CS51bGViMTI4CTB4M2UJCQkvKiBEV19BVF9lbmNvZGluZyAqLworKwkudWxlYjEyOAkweGIJCQkv KiBEV19GT1JNX2RhdGExICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrCS5i eXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5h dG9yICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCitJbmRleDogZ2RiLTcuMi9n ZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWlmb3J0LXBhcmFtZXRlci5jCis9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysg Z2RiLTcuMi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWlmb3J0LXBhcmFtZXRlci5jCTIw MTAtMTEtMDcgMDU6MzY6MTguMDAwMDAwMDAwICswMTAwCitAQCAtMCwwICsxLDMxIEBACisrLyog VGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysKKysgICBD b3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisr ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisraW50IHZhbHVlID0gMHhkZWFk ZjAwZDsKKytpbnQgKnB0ciA9ICZ2YWx1ZTsKKysKKyt2b2lkCisrZnVuYyAodm9pZCkKKyt7Cisr fQorKworK2ludAorK21haW4gKHZvaWQpCisreworKyAgZnVuYyAoKTsKKysgIHJldHVybiAwOwor K30KK0luZGV4OiBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItaWZvcnQtcGFy YW1ldGVyLmV4cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAw LjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3 Mi1pZm9ydC1wYXJhbWV0ZXIuZXhwCTIwMTAtMTEtMDcgMDU6MzY6MTguMDAwMDAwMDAwICswMTAw CitAQCAtMCwwICsxLDQwIEBACisrIyBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwg b3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws CisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrIyBWZXJp ZnkgRFdfQVRfdmFyaWFibGVfcGFyYW1ldGVyIGRvZXMgbm90IG1vZGlmeSB0aGUgZGF0YSBzdHJ1 Y3R1cmVzIG1lYW5pbmcKKysjIGZvciBHREIsIGFzIGJlaW5nIHVzZWQgYnkgaUZvcnQuCisrCisr IyBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIG9uIHRhcmdldHMgd2hpY2ggc3VwcG9ydCBEV0FS Ri0yIGFuZCB1c2UgZ2FzLgorKyMgRm9yIG5vdyBwaWNrIGEgc2FtcGxpbmcgb2YgbGlrZWx5IHRh cmdldHMuCisraWYgeyFbaXN0YXJnZXQgKi0qLWxpbnV4Kl0KKysgICAgJiYgIVtpc3RhcmdldCAq LSotZ251Kl0KKysgICAgJiYgIVtpc3RhcmdldCAqLSotZWxmKl0KKysgICAgJiYgIVtpc3Rhcmdl dCAqLSotb3BlbmJzZCpdCisrICAgICYmICFbaXN0YXJnZXQgYXJtLSotZWFiaSpdCisrICAgICYm ICFbaXN0YXJnZXQgcG93ZXJwYy0qLWVhYmkqXX0geworKyAgICByZXR1cm4gMAorK30KKysKKytz ZXQgdGVzdGZpbGUgImR3Mi1pZm9ydC1wYXJhbWV0ZXIiCisrCisraWYgeyBbcHJlcGFyZV9mb3Jf dGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gW2xpc3QgJHt0ZXN0ZmlsZX0uYyAk e3Rlc3RmaWxlfS1kZWJ1Zy5TXSB7bm9kZWJ1Z31dIH0geworKyAgICByZXR1cm4gLTEKKyt9Cisr CisraWYgIVtydW50byBmdW5jXSB7CisrICAgIHJldHVybiAtMQorK30KKysKKytnZGJfdGVzdCAi cC94IHBhcmFtIiAiID0gMHhkZWFkZjAwZCIKCmRpZmYgLS1naXQgYS9nZGItYno2NDU3NzMtaWZv cnQtY2FzZS0yb2YzLnBhdGNoIGIvZ2RiLWJ6NjQ1NzczLWlmb3J0LWNhc2UtMm9mMy5wYXRjaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODcxYTcwCi0tLSAvZGV2L251bGwK KysrIGIvZ2RiLWJ6NjQ1NzczLWlmb3J0LWNhc2UtMm9mMy5wYXRjaApAQCAtMCwwICsxLDIwNCBA QAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMTEvbXNnMDAxMDcu aHRtbAorU3ViamVjdDogW3BhdGNoIDEvMl0gQ29kZSBjbGVhbnVwOiBOZXcgaW5pdF9vbmVfY29t cF91bml0CisKK0hpLAorCit1bmlmeSBzb21lIGNvZGUgaW50byBhIGZ1bmN0aW9uLCB0byBiZSBl eHRlbmRlZCBpbiB0aGUgbmV4dCBwYXRjaC4KKworCitUaGFua3MsCitKYW4KKworCitnZGIvCisy MDEwLTExLTA2ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisK KwlDb2RlIGNsZWFudXAuCisJKiBkd2FyZjJyZWFkLmMgKGFsbG9jX29uZV9jb21wX3VuaXQpOiBS ZW5hbWUgcHJvdG90eXBlIHRvIC4uLgorCShpbml0X29uZV9jb21wX3VuaXQpOiAuLi4gdGhpcyBv bmUuCisJKHByZXBhcmVfb25lX2NvbXBfdW5pdCk6IE5ldyBwcm90b3R5cGUuCisJKGR3Ml9yZXF1 aXJlX2xpbmVfaGVhZGVyLCBwcm9jZXNzX3BzeW10YWJfY29tcF91bml0KTogVXNlCisJaW5pdF9v bmVfY29tcF91bml0LgorCShwcm9jZXNzX3BzeW10YWJfY29tcF91bml0KTogVXNlIHByZXBhcmVf b25lX2NvbXBfdW5pdC4KKwkobG9hZF9wYXJ0aWFsX2NvbXBfdW5pdCk6IFJlbW92ZSB2YXJpYWJs ZSBhdHRyLiAgVXNlCisJaW5pdF9vbmVfY29tcF91bml0IHdpdGggeG1hbGxvYy4gIFVzZSBwcmVw YXJlX29uZV9jb21wX3VuaXQuCisJKGxvYWRfZnVsbF9jb21wX3VuaXQpOiBVc2UgaW5pdF9vbmVf Y29tcF91bml0IHdpdGggeG1hbGxvYy4gIFVzZQorCXByZXBhcmVfb25lX2NvbXBfdW5pdC4KKwko cmVhZF9zaWduYXR1cmVkX3R5cGUpOiBSZW1vdmUgdmFyaWFibGUgYXR0ci4gIFVzZSBpbml0X29u ZV9jb21wX3VuaXQuCisJVXNlIHByZXBhcmVfb25lX2NvbXBfdW5pdC4KKwkoYWxsb2Nfb25lX2Nv bXBfdW5pdCk6IFJlbmFtZSB0byAuLi4KKwkoaW5pdF9vbmVfY29tcF91bml0KTogLi4uIGhlcmUg YW5kIHJlbW92ZSB0aGVyZSBjYWxsb2MsIG5ldyBwYXJhbWV0ZXIKKwljdS4KKwkocHJlcGFyZV9v bmVfY29tcF91bml0KTogTmV3IGZ1bmN0aW9uLgorCitJbmRleDogZ2RiLTcuMi9nZGIvZHdhcmYy cmVhZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMi5vcmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAx MC0xMS0wNyAwNTozNjozNC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yL2dkYi9kd2FyZjJy ZWFkLmMJMjAxMC0xMS0wNyAwNTozODoyMS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xMjE0LDcgKzEy MTQsMTEgQEAgc3RhdGljIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmR3YXJmMgorIHN0YXRp YyBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpkd2FyZjJfZmluZF9jb21wX3VuaXQKKyAgICh1 bnNpZ25lZCBpbnQgb2Zmc2V0LCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CisgCistc3RhdGlj IHN0cnVjdCBkd2FyZjJfY3UgKmFsbG9jX29uZV9jb21wX3VuaXQgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlKTsKKytzdGF0aWMgdm9pZCBpbml0X29uZV9jb21wX3VuaXQgKHN0cnVjdCBkd2FyZjJf Y3UgKmN1LAorKwkJCQlzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CisrCisrc3RhdGljIHZvaWQg cHJlcGFyZV9vbmVfY29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwKKysJCQkJICAgc3Ry dWN0IGRpZV9pbmZvICpjb21wX3VuaXRfZGllKTsKKyAKKyBzdGF0aWMgdm9pZCBmcmVlX29uZV9j b21wX3VuaXQgKHZvaWQgKik7CisgCitAQCAtMTk4MCwxMCArMTk4NCw3IEBAIGR3Ml9yZXF1aXJl X2xpbmVfaGVhZGVyIChzdHJ1Y3Qgb2JqZmlsZSAKKyAgICAgcmV0dXJuOworICAgdGhpc19jdS0+ di5xdWljay0+cmVhZF9saW5lcyA9IDE7CisgCistICBtZW1zZXQgKCZjdSwgMCwgc2l6ZW9mIChj dSkpOworLSAgY3Uub2JqZmlsZSA9IG9iamZpbGU7CistICBvYnN0YWNrX2luaXQgKCZjdS5jb21w X3VuaXRfb2JzdGFjayk7CistCisrICBpbml0X29uZV9jb21wX3VuaXQgKCZjdSwgb2JqZmlsZSk7 CisgICBjbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAoZnJlZV9zdGFja19jb21wX3VuaXQsICZjdSk7 CisgCisgICBkd2FyZjJfcmVhZF9zZWN0aW9uIChvYmpmaWxlLCAmZHdhcmYyX3Blcl9vYmpmaWxl LT5pbmZvKTsKK0BAIC0yOTc4LDEwICsyOTc5LDcgQEAgcHJvY2Vzc19wc3ltdGFiX2NvbXBfdW5p dCAoc3RydWN0IG9iamZpbAorICAgQ09SRV9BRERSIGJlc3RfbG93cGMgPSAwLCBiZXN0X2hpZ2hw YyA9IDA7CisgICBzdHJ1Y3QgZGllX3JlYWRlcl9zcGVjcyByZWFkZXJfc3BlY3M7CisgCistICBt ZW1zZXQgKCZjdSwgMCwgc2l6ZW9mIChjdSkpOworLSAgY3Uub2JqZmlsZSA9IG9iamZpbGU7Cist ICBvYnN0YWNrX2luaXQgKCZjdS5jb21wX3VuaXRfb2JzdGFjayk7CistCisrICBpbml0X29uZV9j b21wX3VuaXQgKCZjdSwgb2JqZmlsZSk7CisgICBiYWNrX3RvX2lubmVyID0gbWFrZV9jbGVhbnVw IChmcmVlX3N0YWNrX2NvbXBfdW5pdCwgJmN1KTsKKyAKKyAgIGluZm9fcHRyID0gcGFydGlhbF9y ZWFkX2NvbXBfdW5pdF9oZWFkICgmY3UuaGVhZGVyLCBpbmZvX3B0ciwKK0BAIC0zMDM1LDEyICsz MDMzLDcgQEAgcHJvY2Vzc19wc3ltdGFiX2NvbXBfdW5pdCAoc3RydWN0IG9iamZpbAorICAgICAg IHJldHVybiBpbmZvX3B0cjsKKyAgICAgfQorIAorLSAgLyogU2V0IHRoZSBsYW5ndWFnZSB3ZSdy ZSBkZWJ1Z2dpbmcuICAqLworLSAgYXR0ciA9IGR3YXJmMl9hdHRyIChjb21wX3VuaXRfZGllLCBE V19BVF9sYW5ndWFnZSwgJmN1KTsKKy0gIGlmIChhdHRyKQorLSAgICBzZXRfY3VfbGFuZ3VhZ2Ug KERXX1VOU05EIChhdHRyKSwgJmN1KTsKKy0gIGVsc2UKKy0gICAgc2V0X2N1X2xhbmd1YWdlIChs YW5ndWFnZV9taW5pbWFsLCAmY3UpOworKyAgcHJlcGFyZV9vbmVfY29tcF91bml0ICgmY3UsIGNv bXBfdW5pdF9kaWUpOworIAorICAgLyogQWxsb2NhdGUgYSBuZXcgcGFydGlhbCBzeW1ib2wgdGFi bGUgc3RydWN0dXJlLiAgKi8KKyAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoY29tcF91bml0X2RpZSwg RFdfQVRfbmFtZSwgJmN1KTsKK0BAIC0zMjYzLDcgKzMyNTYsOCBAQCBsb2FkX3BhcnRpYWxfY29t cF91bml0IChzdHJ1Y3QgZHdhcmYyX3BlCisgICBpbmZvX3B0ciA9IGR3YXJmMl9wZXJfb2JqZmls ZS0+aW5mby5idWZmZXIgKyB0aGlzX2N1LT5vZmZzZXQ7CisgICBiZWdfb2ZfY29tcF91bml0ID0g aW5mb19wdHI7CisgCistICBjdSA9IGFsbG9jX29uZV9jb21wX3VuaXQgKG9iamZpbGUpOworKyAg Y3UgPSB4bWFsbG9jIChzaXplb2YgKCpjdSkpOworKyAgaW5pdF9vbmVfY29tcF91bml0IChjdSwg b2JqZmlsZSk7CisgCisgICAvKiA/Pz8gTWlzc2luZyBjbGVhbnVwIGZvciBDVT8gICovCisgCitA QCAtMzI5MCwxMiArMzI4NCw3IEBAIGxvYWRfcGFydGlhbF9jb21wX3VuaXQgKHN0cnVjdCBkd2Fy ZjJfcGUKKyAgIGluZm9fcHRyID0gcmVhZF9mdWxsX2RpZSAoJnJlYWRlcl9zcGVjcywgJmNvbXBf dW5pdF9kaWUsIGluZm9fcHRyLAorIAkJCSAgICAmaGFzX2NoaWxkcmVuKTsKKyAKKy0gIC8qIFNl dCB0aGUgbGFuZ3VhZ2Ugd2UncmUgZGVidWdnaW5nLiAgKi8KKy0gIGF0dHIgPSBkd2FyZjJfYXR0 ciAoY29tcF91bml0X2RpZSwgRFdfQVRfbGFuZ3VhZ2UsIGN1KTsKKy0gIGlmIChhdHRyKQorLSAg ICBzZXRfY3VfbGFuZ3VhZ2UgKERXX1VOU05EIChhdHRyKSwgY3UpOworLSAgZWxzZQorLSAgICBz ZXRfY3VfbGFuZ3VhZ2UgKGxhbmd1YWdlX21pbmltYWwsIGN1KTsKKysgIHByZXBhcmVfb25lX2Nv bXBfdW5pdCAoY3UsIGNvbXBfdW5pdF9kaWUpOworIAorICAgLyogQ2hlY2sgaWYgY29tcCB1bml0 IGhhc19jaGlsZHJlbi4KKyAgICAgIElmIHNvLCByZWFkIHRoZSByZXN0IG9mIHRoZSBwYXJ0aWFs IHN5bWJvbHMgZnJvbSB0aGlzIGNvbXAgdW5pdC4KK0BAIC00MjI3LDcgKzQyMTYsOCBAQCBsb2Fk X2Z1bGxfY29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX3Blcl9jCisgICBpbmZvX3B0ciA9IGR3YXJm Ml9wZXJfb2JqZmlsZS0+aW5mby5idWZmZXIgKyBvZmZzZXQ7CisgICBiZWdfb2ZfY29tcF91bml0 ID0gaW5mb19wdHI7CisgCistICBjdSA9IGFsbG9jX29uZV9jb21wX3VuaXQgKG9iamZpbGUpOwor KyAgY3UgPSB4bWFsbG9jIChzaXplb2YgKCpjdSkpOworKyAgaW5pdF9vbmVfY29tcF91bml0IChj dSwgb2JqZmlsZSk7CisgCisgICAvKiBJZiBhbiBlcnJvciBvY2N1cnMgd2hpbGUgbG9hZGluZywg cmVsZWFzZSBvdXIgc3RvcmFnZS4gICovCisgICBmcmVlX2N1X2NsZWFudXAgPSBtYWtlX2NsZWFu dXAgKGZyZWVfb25lX2NvbXBfdW5pdCwgY3UpOworQEAgLTQyNTQsMTEgKzQyNDQsNyBAQCBsb2Fk X2Z1bGxfY29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX3Blcl9jCisgICAgICBhbGwgb2JqZmlsZXMg bmVlZGVkIGZvciByZWZlcmVuY2VzIGhhdmUgYmVlbiBsb2FkZWQgeWV0LCBhbmQgc3ltYm9sCisg ICAgICB0YWJsZSBwcm9jZXNzaW5nIGlzbid0IGluaXRpYWxpemVkLiAgQnV0IHdlIGhhdmUgdG8g c2V0IHRoZSBDVSBsYW5ndWFnZSwKKyAgICAgIG9yIHdlIHdvbid0IGJlIGFibGUgdG8gYnVpbGQg dHlwZXMgY29ycmVjdGx5LiAgKi8KKy0gIGF0dHIgPSBkd2FyZjJfYXR0ciAoY3UtPmRpZXMsIERX X0FUX2xhbmd1YWdlLCBjdSk7CistICBpZiAoYXR0cikKKy0gICAgc2V0X2N1X2xhbmd1YWdlIChE V19VTlNORCAoYXR0ciksIGN1KTsKKy0gIGVsc2UKKy0gICAgc2V0X2N1X2xhbmd1YWdlIChsYW5n dWFnZV9taW5pbWFsLCBjdSk7CisrICBwcmVwYXJlX29uZV9jb21wX3VuaXQgKGN1LCBjdS0+ZGll cyk7CisgCisgICAvKiBTaW1pbGFybHksIGlmIHdlIGRvIG5vdCByZWFkIHRoZSBwcm9kdWNlciwg d2UgY2FuIG5vdCBhcHBseQorICAgICAgcHJvZHVjZXItc3BlY2lmaWMgaW50ZXJwcmV0YXRpb24u ICAqLworQEAgLTEyNjE3LDE3ICsxMjYwMywxNSBAQCByZWFkX3NpZ25hdHVyZWRfdHlwZSAoc3Ry dWN0IG9iamZpbGUgKm9iCisgICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdTsKKyAgIFVMT05HRVNUIHNp Z25hdHVyZTsKKyAgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvLCAqZnJlZV9jdV9jbGVhbnVwOwor LSAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKKyAKKyAgIGR3YXJmMl9yZWFkX3NlY3Rpb24gKG9i amZpbGUsICZkd2FyZjJfcGVyX29iamZpbGUtPnR5cGVzKTsKKyAgIHR5cGVzX3B0ciA9IGR3YXJm Ml9wZXJfb2JqZmlsZS0+dHlwZXMuYnVmZmVyICsgdHlwZV9zaWctPm9mZnNldDsKKyAKKyAgIGdk Yl9hc3NlcnQgKHR5cGVfc2lnLT5wZXJfY3UuY3UgPT0gTlVMTCk7CisgCistICBjdSA9IHhtYWxs b2MgKHNpemVvZiAoc3RydWN0IGR3YXJmMl9jdSkpOworLSAgbWVtc2V0IChjdSwgMCwgc2l6ZW9m IChzdHJ1Y3QgZHdhcmYyX2N1KSk7CistICBvYnN0YWNrX2luaXQgKCZjdS0+Y29tcF91bml0X29i c3RhY2spOworLSAgY3UtPm9iamZpbGUgPSBvYmpmaWxlOworKyAgY3UgPSB4bWFsbG9jIChzaXpl b2YgKCpjdSkpOworKyAgaW5pdF9vbmVfY29tcF91bml0IChjdSwgb2JqZmlsZSk7CisrCisgICB0 eXBlX3NpZy0+cGVyX2N1LmN1ID0gY3U7CisgICBjdS0+cGVyX2N1ID0gJnR5cGVfc2lnLT5wZXJf Y3U7CisgCitAQCAtMTI2NTksMTEgKzEyNjQzLDcgQEAgcmVhZF9zaWduYXR1cmVkX3R5cGUgKHN0 cnVjdCBvYmpmaWxlICpvYgorICAgICAgYWxsIG9iamZpbGVzIG5lZWRlZCBmb3IgcmVmZXJlbmNl cyBoYXZlIGJlZW4gbG9hZGVkIHlldCwgYW5kIHN5bWJvbAorICAgICAgdGFibGUgcHJvY2Vzc2lu ZyBpc24ndCBpbml0aWFsaXplZC4gIEJ1dCB3ZSBoYXZlIHRvIHNldCB0aGUgQ1UgbGFuZ3VhZ2Us CisgICAgICBvciB3ZSB3b24ndCBiZSBhYmxlIHRvIGJ1aWxkIHR5cGVzIGNvcnJlY3RseS4gICov CistICBhdHRyID0gZHdhcmYyX2F0dHIgKGN1LT5kaWVzLCBEV19BVF9sYW5ndWFnZSwgY3UpOwor LSAgaWYgKGF0dHIpCistICAgIHNldF9jdV9sYW5ndWFnZSAoRFdfVU5TTkQgKGF0dHIpLCBjdSk7 CistICBlbHNlCistICAgIHNldF9jdV9sYW5ndWFnZSAobGFuZ3VhZ2VfbWluaW1hbCwgY3UpOwor KyAgcHJlcGFyZV9vbmVfY29tcF91bml0IChjdSwgY3UtPmRpZXMpOworIAorICAgZG9fY2xlYW51 cHMgKGJhY2tfdG8pOworIAorQEAgLTEzNzU1LDE1ICsxMzczNSwyOSBAQCBkd2FyZjJfZmluZF9j b21wX3VuaXQgKHVuc2lnbmVkIGludCBvZmZzCisgICByZXR1cm4gdGhpc19jdTsKKyB9CisgCist LyogTWFsbG9jIHNwYWNlIGZvciBhIGR3YXJmMl9jdSBmb3IgT0JKRklMRSBhbmQgaW5pdGlhbGl6 ZSBpdC4gICovCisrLyogSW5pdGlhbGl6ZSBkd2FyZjJfY3UgQ1UgZm9yIE9CSkZJTEUgaW4gYSBw cmUtYWxsb2NhdGVkIHNwYWNlLiAgKi8KKyAKKy1zdGF0aWMgc3RydWN0IGR3YXJmMl9jdSAqCist YWxsb2Nfb25lX2NvbXBfdW5pdCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCisrc3RhdGljIHZv aWQKKytpbml0X29uZV9jb21wX3VuaXQgKHN0cnVjdCBkd2FyZjJfY3UgKmN1LCBzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSkKKyB7CistICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSA9IHhjYWxsb2MgKDEs IHNpemVvZiAoc3RydWN0IGR3YXJmMl9jdSkpOworKyAgbWVtc2V0IChjdSwgMCwgc2l6ZW9mICgq Y3UpKTsKKyAgIGN1LT5vYmpmaWxlID0gb2JqZmlsZTsKKyAgIG9ic3RhY2tfaW5pdCAoJmN1LT5j b21wX3VuaXRfb2JzdGFjayk7CistICByZXR1cm4gY3U7CisrfQorKworKy8qIEluaXRpYWlsaXpl IGJhc2ljIGZpZWxkcyBvZiBkd2FyZl9jdSBDVSBhY2NvcmRpbmcgdG8gRElFIENPTVBfVU5JVF9E SUUuICAqLworKworK3N0YXRpYyB2b2lkCisrcHJlcGFyZV9vbmVfY29tcF91bml0IChzdHJ1Y3Qg ZHdhcmYyX2N1ICpjdSwgc3RydWN0IGRpZV9pbmZvICpjb21wX3VuaXRfZGllKQorK3sKKysgIHN0 cnVjdCBhdHRyaWJ1dGUgKmF0dHI7CisrCisrICAvKiBTZXQgdGhlIGxhbmd1YWdlIHdlJ3JlIGRl YnVnZ2luZy4gICovCisrICBhdHRyID0gZHdhcmYyX2F0dHIgKGNvbXBfdW5pdF9kaWUsIERXX0FU X2xhbmd1YWdlLCBjdSk7CisrICBpZiAoYXR0cikKKysgICAgc2V0X2N1X2xhbmd1YWdlIChEV19V TlNORCAoYXR0ciksIGN1KTsKKysgIGVsc2UKKysgICAgc2V0X2N1X2xhbmd1YWdlIChsYW5ndWFn ZV9taW5pbWFsLCBjdSk7CisgfQorIAorIC8qIFJlbGVhc2Ugb25lIGNhY2hlZCBjb21waWxhdGlv biB1bml0LCBDVS4gIFdlIHVubGluayBpdCBmcm9tIHRoZSB0cmVlCgpkaWZmIC0tZ2l0IGEvZ2Ri LWJ6NjQ1NzczLWlmb3J0LWNhc2UtM29mMy5wYXRjaCBiL2dkYi1iejY0NTc3My1pZm9ydC1jYXNl LTNvZjMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDg0ZjlkMgot LS0gL2Rldi9udWxsCisrKyBiL2dkYi1iejY0NTc3My1pZm9ydC1jYXNlLTNvZjMucGF0Y2gKQEAg LTAsMCArMSw0NDggQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEw LTExL21zZzAwMTA4Lmh0bWwKK1N1YmplY3Q6IFtwYXRjaCAyLzJdIGlGb3J0IGNvbXBhdC46IGNh c2UgaW5zZW5zaXRpdmUgc3ltYm9scyAoUFIgMTEzMTMpCisKK0hpLAorCitpRm9ydCAoSW50ZWwg Rm9ydHJhbiBjb21waWxlcikgcHJvZHVjZXMgRElFcyBsaWtlOgorCisgPDE+PDFkYz46IEFiYnJl diBOdW1iZXI6IDYgKERXX1RBR19tb2R1bGUpCisgICAgPDFlMD4gICBEV19BVF9uYW1lICAgICAg ICA6IE1PRDEgICAgCisKK0J1dCBGb3J0cmFuIGlzIGNhc2UgaW5zZW5zaXRpdmUsIHRoZXJlZm9y ZSBHREIgbG93ZXJjYXNlcyBhbnkgdXNlciBpbnB1dAorZmlyc3QuICBTeW1ib2xzIGNhbm5vdCBt YXRjaC4gIGdmb3J0cmFuIGFsd2F5cyBwcm9kdWNlcyBsb3dlcmNhc2VkIERJRSBuYW1lcy4KKwor SSB3YXMgdG9sZCBieSBKYWt1YiBKZWxpbmVrIEdDQyBmcm9udGVuZCB3aWxsIG5ldmVyIGJlIHBy b3Blcmx5IGNhc2UKK3ByZXNlcnZpbmcgLSB0byBvdXRwdXQgIk1vZDEiIGlmIHVzZXIgc3RhdGVk IGl0IGluIHN1Y2ggY2FzZSBpbiB0aGUgc291cmNlcy4KKworVGhlcmVmb3JlIEdEQiB3aWxsIG5v dyBsb3dlcmNhc2UgYW55IGNhc2UgaW5zZW5zaXRpdmUgc3ltYm9sIG5hbWVzIG9uIHRoZWlyCity ZWFkLWluIGZyb20gRFdBUkYuCisKK0VMRiBzeW1ib2wgdGFibGVzIGFyZSBjdXJyZW50bHkgbm90 IHRvdWNoZWQgLSB0aGVpciBtYXRjaGluZyB0byB0aGVpciBDVSAoYW5kCit0aHVzIHRvIHRoZWly IERXX0FUX2lkZW50aWZpZXJfY2FzZSAvIERXX0FUX2xhbmd1YWdlKSBpcyBleHBlbnNpdmUgYW5k IGl0IGRvZXMKK25vdCBzZWVtIHRvIG1lIHRvIGJlIG5lZWRlZCBmb3IgaUZvcnQgYXMgb25seSB0 aGUgbW9kdWxlIG5hbWVzIGFyZSB1cHBlcmNhc2VkCit0aGVyZS4KKworRm9yIHRoZSBpRm9ydCBj b21wYXRpYmlsaXR5IHRoZXJlIGlzIGFsc28gbmVlZGVkOgorCVtuZXcgdGVzdGNhc2VdIFJlZ3Jl c3Npb24gNy4xLT43LjIgZm9yIGlGb3J0IFtSZTogW1JGQS12Ml0gZHdhcmYgZGVidWcgZm9ybWF0 OiBTdXBwb3J0IERXX0FUX3ZhcmlhYmxlX3BhcmFtZXRlciBhdHRyaWJ1dGVdCisJaHR0cDovL3Nv dXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMTEvbXNnMDAwODQuaHRtbAorCitObyBy ZWdyZXNzaW9ucyBvbiB7eDg2XzY0LHg4Nl82NC1tMzIsaTY4Nn0tZmVkb3JhMTRzbmFwc2hvdC1s aW51eC1nbnUuCisKKworVGhhbmtzLAorSmFuCisKKworZ2RiLworMjAxMC0xMS0wNyAgSmFuIEty YXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorCisJUFIgMTEzMTMgLSBjYXNl IGluc2Vuc2l0aXZlIGlkZW50aWZpZXJzIGluIERXQVJGIG5vdCBpbiBsb3dlcmNhc2UuCisJKiBk d2FyZjJyZWFkLmM6IEluY2x1ZGUgY3R5cGUuaC4KKwkoc3RydWN0IGR3YXJmMl9jdSkgPGNhc2Vf c2Vuc2l0aXZpdHk+OiBOZXcuCisJKHN0cnVjdCBhdHRyaWJ1dGUpIDxzdHJpbmdfaXNfY2Fub25p Y2FsPjogVXBkYXRlIHRoZSBjb21tZW50LgorCShjYW5vbmljYWxfY2FzZSk6IE5ldyBkZWNsYXJh dGlvbi4KKwkocmVhZF9wYXJ0aWFsX2RpZSk6IENhbGwgY2Fub25pY2FsX2Nhc2UuCisJKGNhbm9u aWNhbF9jYXNlKTogTmV3IGZ1bmN0aW9uLgorCShkd2FyZjJfY2Fub25pY2FsaXplX25hbWUpOiBV cGRhdGUgdGhlIGZ1bmN0aW9uIGNvbW1lbnQuICBDYWxsCisJY2Fub25pY2FsX2Nhc2UsIGFkanVz dCB0aGUgb2JzdGFjayBhbGxvY2F0aW9uLgorCShkd2FyZjJfbmFtZSk6IENhbGwgY2Fub25pY2Fs X2Nhc2UsIHNldCBEV19TVFJJTkdfSVNfQ0FOT05JQ0FMLgorCShpbml0X29uZV9jb21wX3VuaXQs IHByZXBhcmVfb25lX2NvbXBfdW5pdCk6IFNldCBjdS0+Y2FzZV9zZW5zaXRpdml0eS4KKworZ2Ri L3Rlc3RzdWl0ZS8KKzIwMTAtMTEtMDcgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4KKworCVBSIDExMzEzIC0gY2FzZSBpbnNlbnNpdGl2ZSBpZGVudGlmaWVycyBp biBEV0FSRiBub3QgaW4gbG93ZXJjYXNlLgorCSogZ2RiLmR3YXJmMi9kdzItY2FzZS1pbnNlbnNp dGl2ZS1kZWJ1Zy5TOiBOZXcuCisJKiBnZGIuZHdhcmYyL2R3Mi1jYXNlLWluc2Vuc2l0aXZlLmM6 IE5ldy4KKwkqIGdkYi5kd2FyZjIvZHcyLWNhc2UtaW5zZW5zaXRpdmUuZXhwOiBOZXcuCisJKiBn ZGIubWkvbWktdmFyLWNoaWxkLWYuZXhwIChtaV9ydW50byk6IFVzZSBsb3dlcmNhc2UgbWFpbl9f LgorCitJbmRleDogZ2RiLTcuMi9nZGIvZHdhcmYycmVhZC5jCis9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2Ri LTcuMi5vcmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0xMS0wNyAwNTozODoyMS4wMDAwMDAwMDAg KzAxMDAKKysrKyBnZGItNy4yL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0xMS0wNyAwNTozODo0Ny4w MDAwMDAwMDAgKzAxMDAKK0BAIC01NSw2ICs1NSw3IEBACisgI2luY2x1ZGUgImdkYl9zdGF0Lmgi CisgI2luY2x1ZGUgImNvbXBsZXRlci5oIgorICNpbmNsdWRlICJ0b3AuaCIKKysjaW5jbHVkZSA8 Y3R5cGUuaD4KKyAKKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSAiZ2RiX3N0cmluZy5o IgorQEAgLTM3Niw2ICszNzcsMTAgQEAgc3RydWN0IGR3YXJmMl9jdQorICAgICAgRElFcyBmb3Ig bmFtZXNwYWNlcywgd2UgZG9uJ3QgbmVlZCB0byB0cnkgdG8gaW5mZXIgdGhlbQorICAgICAgZnJv bSBtYW5nbGVkIG5hbWVzLiAgKi8KKyAgIHVuc2lnbmVkIGludCBoYXNfbmFtZXNwYWNlX2luZm8g OiAxOworKworKyAgLyogQXJlIGlkZW50aWZpZXJzIGluIHRoaXMgQ1UgY2FzZSBzZW5zaXRpdmUg b3Igc2hvdWxkIHRoZXkgYmUgbG93ZXJjYXNlZAorKyAgICAgYmVmb3JlIHN0b3JpbmcgdGhlbSBp bnRvIEdEQiBzeW1ib2wgdGFibGVzPyAgKi8KKysgIGVudW0gY2FzZV9zZW5zaXRpdml0eSBjYXNl X3NlbnNpdGl2aXR5OworIH07CisgCisgLyogV2hlbiB1c2luZyB0aGUgaW5kZXggKGFuZCB0aHVz IG5vdCB1c2luZyBwc3ltdGFicyksIGVhY2ggQ1UgaGFzIGFuCitAQCAtNjIxLDkgKzYyNiwxMCBA QCBzdHJ1Y3QgYXR0cmlidXRlCisgICAgIEVOVU1fQklURklFTEQoZHdhcmZfYXR0cmlidXRlKSBu YW1lIDogMTY7CisgICAgIEVOVU1fQklURklFTEQoZHdhcmZfZm9ybSkgZm9ybSA6IDE1OworIAor LSAgICAvKiBIYXMgRFdfU1RSSU5HIGFscmVhZHkgYmVlbiB1cGRhdGVkIGJ5IGR3YXJmMl9jYW5v bmljYWxpemVfbmFtZT8gIFRoaXMKKy0gICAgICAgZmllbGQgc2hvdWxkIGJlIGluIHUuc3RyIChl eGlzdGluZyBvbmx5IGZvciBEV19TVFJJTkcpIGJ1dCBpdCBpcyBrZXB0CistICAgICAgIGhlcmUg Zm9yIGJldHRlciBzdHJ1Y3QgYXR0cmlidXRlIGFsaWdubWVudC4gICovCisrICAgIC8qIEhhcyBE V19TVFJJTkcgYWxyZWFkeSBiZWVuIHVwZGF0ZWQgYnkgZHdhcmYyX2Nhbm9uaWNhbGl6ZV9uYW1l IG9yCisrICAgICAgIGNhbm9uaWNhbF9jYXNlPyAgVGhpcyBmaWVsZCBzaG91bGQgYmUgaW4gdS5z dHIgKGV4aXN0aW5nIG9ubHkgZm9yCisrICAgICAgIERXX1NUUklORykgYnV0IGl0IGlzIGtlcHQg aGVyZSBmb3IgYmV0dGVyIHN0cnVjdCBhdHRyaWJ1dGUgYWxpZ25tZW50LgorKyAgICAgICAqLwor ICAgICB1bnNpZ25lZCBpbnQgc3RyaW5nX2lzX2Nhbm9uaWNhbCA6IDE7CisgCisgICAgIHVuaW9u CitAQCAtMTEwOSw2ICsxMTE1LDkgQEAgc3RhdGljIGdkYl9ieXRlICpyZWFkX2Z1bGxfZGllIChj b25zdCBzdAorIAorIHN0YXRpYyB2b2lkIHByb2Nlc3NfZGllIChzdHJ1Y3QgZGllX2luZm8gKiwg c3RydWN0IGR3YXJmMl9jdSAqKTsKKyAKKytzdGF0aWMgY2hhciAqY2Fub25pY2FsX2Nhc2UgKGNo YXIgKm5hbWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAorKwkJCSAgICAgc3RydWN0IG9ic3RhY2sg Km9ic3RhY2spOworKworIHN0YXRpYyBjaGFyICpkd2FyZjJfY2Fub25pY2FsaXplX25hbWUgKGNo YXIgKiwgc3RydWN0IGR3YXJmMl9jdSAqLAorIAkJCQkgICAgICAgc3RydWN0IG9ic3RhY2sgKik7 CisgCitAQCAtODU4OSw3ICs4NTk4LDggQEAgcmVhZF9wYXJ0aWFsX2RpZSAoc3RydWN0IHBhcnRp YWxfZGllX2luZgorIAkgICAgY2FzZSBEV19UQUdfZW51bWVyYXRvcjoKKyAJICAgICAgLyogVGhl c2UgdGFncyBhbHdheXMgaGF2ZSBzaW1wbGUgaWRlbnRpZmllcnMgYWxyZWFkeTsgbm8gbmVlZAor IAkJIHRvIGNhbm9uaWNhbGl6ZSB0aGVtLiAgKi8KKy0JICAgICAgcGFydF9kaWUtPm5hbWUgPSBE V19TVFJJTkcgKCZhdHRyKTsKKysJICAgICAgcGFydF9kaWUtPm5hbWUgPSBjYW5vbmljYWxfY2Fz ZSAoRFdfU1RSSU5HICgmYXR0ciksIGN1LAorKwkJCQkJICAgICAgICZjdS0+b2JqZmlsZS0+b2Jq ZmlsZV9vYnN0YWNrKTsKKyAJICAgICAgYnJlYWs7CisgCSAgICBkZWZhdWx0OgorIAkgICAgICBw YXJ0X2RpZS0+bmFtZQorQEAgLTExMDQzLDcgKzExMDUzLDM2IEBAIHNpYmxpbmdfZGllIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSkKKyAgIHJldHVybiBkaWUtPnNpYmxpbmc7CisgfQorIAorLS8qIEdl dCBuYW1lIG9mIGEgZGllLCByZXR1cm4gTlVMTCBpZiBub3QgZm91bmQuICAqLworKy8qIENvbnZl cnQgTkFNRSB0byB0aGUgbG93ZXIgY2FzZSBpZiBDVSBpcyBjYXNlX3NlbnNpdGl2ZV9vZmYuICBB bGxvY2F0ZQorKyAgIG1lbW9yeSBvbiBPQlNUQUNLIGlmIG5lZWRlZCwgb3RoZXJ3aXNlIHJldHVy biB0aGUgTkFNRSBwb2ludGVyLiAgKi8KKysKKytzdGF0aWMgY2hhciAqCisrY2Fub25pY2FsX2Nh c2UgKGNoYXIgKm5hbWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAorKwkJc3RydWN0IG9ic3RhY2sg Km9ic3RhY2spCisreworKyAgY2hhciAqcmV0dmFsOworKyAgaW50IGk7CisrCisrICBpZiAoY3Ut PmNhc2Vfc2Vuc2l0aXZpdHkgPT0gY2FzZV9zZW5zaXRpdmVfb24pCisrICAgIHJldHVybiBuYW1l OworKworKyAgZm9yIChpID0gMDsgbmFtZVtpXSAhPSAwOyBpKyspCisrICAgIGlmICh0b2xvd2Vy IChuYW1lW2ldKSAhPSBuYW1lW2ldKQorKyAgICAgIGJyZWFrOworKyAgaWYgKG5hbWVbaV0gPT0g MCkKKysgICAgcmV0dXJuIG5hbWU7CisrCisrICByZXR2YWwgPSBvYnN0YWNrX2FsbG9jIChvYnN0 YWNrLCBzdHJsZW4gKG5hbWUpICsgMSk7CisrCisrICBmb3IgKGkgPSAwOyBuYW1lW2ldICE9IDA7 IGkrKykKKysgICAgcmV0dmFsW2ldID0gdG9sb3dlciAobmFtZVtpXSk7CisrICByZXR2YWxbaV0g PSAwOworKworKyAgcmV0dXJuIHJldHZhbDsKKyt9CisrCisrLyogR2V0IG5hbWUgb2YgYSBkaWUs IHJldHVybiBOVUxMIGlmIG5vdCBmb3VuZC4gIGNhbm9uaWNhbF9jYXNlIGlzIGFsd2F5cworKyAg IGFscmVhZHkgY2FsbGVkIGZvciB0aGUgcmV0dXJuZWQgc3RyaW5nLiAgKi8KKyAKKyBzdGF0aWMg Y2hhciAqCisgZHdhcmYyX2Nhbm9uaWNhbGl6ZV9uYW1lIChjaGFyICpuYW1lLCBzdHJ1Y3QgZHdh cmYyX2N1ICpjdSwKK0BAIC0xMTA1NSwxNCArMTEwOTQsMjYgQEAgZHdhcmYyX2Nhbm9uaWNhbGl6 ZV9uYW1lIChjaGFyICpuYW1lLCBzdAorIAorICAgICAgIGlmIChjYW5vbl9uYW1lICE9IE5VTEwp CisgCXsKKy0JICBpZiAoc3RyY21wIChjYW5vbl9uYW1lLCBuYW1lKSAhPSAwKQorLQkgICAgbmFt ZSA9IG9ic2F2ZXN0cmluZyAoY2Fub25fbmFtZSwgc3RybGVuIChjYW5vbl9uYW1lKSwKKysJICBj aGFyICpjYXNlZF9uYW1lOworKworKwkgIGNhc2VkX25hbWUgPSBjYW5vbmljYWxfY2FzZSAoY2Fu b25fbmFtZSwgY3UsIG9ic3RhY2spOworKworKwkgIC8qIFB1c2ggQ0FTRURfTkFNRSBvbiBPQlNU QUNLIG9ubHkgaWYgaXQgaXNuJ3QgYWxyZWFkeSBwdXNoZWQgdGhlcmUKKysJICAgICBieSBjYW5v bmljYWxfY2FzZSBhbmQgaWYgaXQgd2FzIGFsbG9jYXRlZCB1c2luZyB4bWFsbG9jIGJ5CisrCSAg ICAgY3BfY2Fub25pY2FsaXplX3N0cmluZy4gICovCisrCSAgaWYgKHN0cmNtcCAoY2Fub25fbmFt ZSwgY2FzZWRfbmFtZSkgPT0gMAorKwkgICAgICAmJiBzdHJjbXAgKGNhbm9uX25hbWUsIG5hbWUp ICE9IDApCisrCSAgICBuYW1lID0gb2JzYXZlc3RyaW5nIChjYXNlZF9uYW1lLCBzdHJsZW4gKGNh c2VkX25hbWUpLAorIAkJCQkgb2JzdGFjayk7CisrCSAgZWxzZQorKwkgICAgbmFtZSA9IGNhc2Vk X25hbWU7CisgCSAgeGZyZWUgKGNhbm9uX25hbWUpOworKworKwkgIHJldHVybiBuYW1lOworIAl9 CisgICAgIH0KKyAKKy0gIHJldHVybiBuYW1lOworKyAgcmV0dXJuIGNhbm9uaWNhbF9jYXNlIChu YW1lLCBjdSwgb2JzdGFjayk7CisgfQorIAorIC8qIEdldCBuYW1lIG9mIGEgZGllLCByZXR1cm4g TlVMTCBpZiBub3QgZm91bmQuICAqLworQEAgLTExMDg4LDcgKzExMTM5LDEzIEBAIGR3YXJmMl9u YW1lIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWMKKyAgICAgY2FzZSBEV19UQUdfZW51bWVy YXRpb25fdHlwZToKKyAgICAgY2FzZSBEV19UQUdfZW51bWVyYXRvcjoKKyAgICAgICAvKiBUaGVz ZSB0YWdzIGFsd2F5cyBoYXZlIHNpbXBsZSBpZGVudGlmaWVycyBhbHJlYWR5OyBubyBuZWVkCist CSB0byBjYW5vbmljYWxpemUgdGhlbS4gICovCisrCSB0byBjYWxsIGR3YXJmMl9jYW5vbmljYWxp emVfbmFtZSBmb3IgdGhlbS4gICovCisrICAgICAgaWYgKCFEV19TVFJJTkdfSVNfQ0FOT05JQ0FM IChhdHRyKSkKKysJeworKwkgIERXX1NUUklORyAoYXR0cikgPSBjYW5vbmljYWxfY2FzZSAoRFdf U1RSSU5HIChhdHRyKSwgY3UsCisrCQkJCQkgICAgICZjdS0+b2JqZmlsZS0+b2JqZmlsZV9vYnN0 YWNrKTsKKysJICBEV19TVFJJTkdfSVNfQ0FOT05JQ0FMIChhdHRyKSA9IDE7CisrCX0KKyAgICAg ICByZXR1cm4gRFdfU1RSSU5HIChhdHRyKTsKKyAKKyAgICAgY2FzZSBEV19UQUdfc3VicHJvZ3Jh bToKK0BAIC0xMzc0Myw2ICsxMzgwMCw3IEBAIGluaXRfb25lX2NvbXBfdW5pdCAoc3RydWN0IGR3 YXJmMl9jdSAqY3UKKyAgIG1lbXNldCAoY3UsIDAsIHNpemVvZiAoKmN1KSk7CisgICBjdS0+b2Jq ZmlsZSA9IG9iamZpbGU7CisgICBvYnN0YWNrX2luaXQgKCZjdS0+Y29tcF91bml0X29ic3RhY2sp OworKyAgY3UtPmNhc2Vfc2Vuc2l0aXZpdHkgPSBjYXNlX3NlbnNpdGl2ZV9vbjsKKyB9CisgCisg LyogSW5pdGlhaWxpemUgYmFzaWMgZmllbGRzIG9mIGR3YXJmX2N1IENVIGFjY29yZGluZyB0byBE SUUgQ09NUF9VTklUX0RJRS4gICovCitAQCAtMTM3NTgsNiArMTM4MTYsMTMgQEAgcHJlcGFyZV9v bmVfY29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX2N1IAorICAgICBzZXRfY3VfbGFuZ3VhZ2UgKERX X1VOU05EIChhdHRyKSwgY3UpOworICAgZWxzZQorICAgICBzZXRfY3VfbGFuZ3VhZ2UgKGxhbmd1 YWdlX21pbmltYWwsIGN1KTsKKysKKysgIGF0dHIgPSBkd2FyZjJfYXR0ciAoY29tcF91bml0X2Rp ZSwgRFdfQVRfaWRlbnRpZmllcl9jYXNlLCBjdSk7CisrICBpZiAoYXR0cikKKysgICAgY3UtPmNh c2Vfc2Vuc2l0aXZpdHkgPSAoRFdfVU5TTkQgKGF0dHIpID09IERXX0lEX2Nhc2Vfc2Vuc2l0aXZl CisrCQkJICAgID8gY2FzZV9zZW5zaXRpdmVfb24gOiBjYXNlX3NlbnNpdGl2ZV9vZmYpOworKyAg ZWxzZQorKyAgICBjdS0+Y2FzZV9zZW5zaXRpdml0eSA9IGN1LT5sYW5ndWFnZV9kZWZuLT5sYV9j YXNlX3NlbnNpdGl2aXR5OworIH0KKyAKKyAvKiBSZWxlYXNlIG9uZSBjYWNoZWQgY29tcGlsYXRp b24gdW5pdCwgQ1UuICBXZSB1bmxpbmsgaXQgZnJvbSB0aGUgdHJlZQorSW5kZXg6IGdkYi03LjIv Z2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1jYXNlLWluc2Vuc2l0aXZlLWRlYnVnLlMKKz09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAw MDAKKysrKyBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItY2FzZS1pbnNlbnNp dGl2ZS1kZWJ1Zy5TCTIwMTAtMTEtMDcgMDU6Mzg6MzUuMDAwMDAwMDAwICswMTAwCitAQCAtMCww ICsxLDEyMiBAQAorKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVi dWdnZXIuCisrCisrICAgQ29weXJpZ2h0IDIwMDQsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uICAqLworKworKwkuc2VjdGlvbiAuZGVidWdfaW5mbworKy5MY3UxX2JlZ2lu OgorKwkvKiBDVSBoZWFkZXIgKi8KKysJLjRieXRlCS5MY3UxX2VuZCAtIC5MY3UxX3N0YXJ0CQkv KiBMZW5ndGggb2YgQ29tcGlsYXRpb24gVW5pdCAqLworKy5MY3UxX3N0YXJ0OgorKwkuMmJ5dGUJ MgkJCQkvKiBEV0FSRiBWZXJzaW9uICovCisrCS40Ynl0ZQkuTGFiYnJldjFfYmVnaW4JCQkvKiBP ZmZzZXQgaW50byBhYmJyZXYgc2VjdGlvbiAqLworKwkuYnl0ZQk0CQkJCS8qIFBvaW50ZXIgc2l6 ZSAqLworKworKwkvKiBDVSBkaWUgKi8KKysJLnVsZWIxMjggMgkJCQkvKiBBYmJyZXY6IERXX1RB R19jb21waWxlX3VuaXQgKi8KKysJLmFzY2lpCSJmaWxlMS50eHRcMCIJCQkvKiBEV19BVF9uYW1l ICovCisrCS5hc2NpaQkiR05VIEMgMy4zLjNcMCIJCQkvKiBEV19BVF9wcm9kdWNlciAqLworKwku Ynl0ZQkyCQkJCS8qIERXX0FUX2xhbmd1YWdlIChEV19MQU5HX0MpICovCisrCS5ieXRlCTMJCQkJ LyogRFdfQVRfaWRlbnRpZmllcl9jYXNlIChEV19JRF9jYXNlX2luc2Vuc2l0aXZlKSAqLworKwku NGJ5dGUJCUZVTkNfYXR0cgkJLyogRFdfQVRfbG93X3BjICovCisrCS40Ynl0ZQkJRlVOQ19sYW5n IAkJLyogRFdfQVRfaGlnaF9wYyAqLworKworKwkudWxlYjEyOAkzCQkJLyogQWJicmV2OiBEV19U QUdfc3VicHJvZ3JhbSAqLworKwkuYnl0ZQkJMQkJCS8qIERXX0FUX2V4dGVybmFsICovCisrCS5h c2NpaQkJIkZVTkNfYXR0clwwIgkJLyogRFdfQVRfbmFtZSAqLworKwkuNGJ5dGUJCUZVTkNfYXR0 cgkJLyogRFdfQVRfbG93X3BjICovCisrCS40Ynl0ZQkJRlVOQ19sYW5nIAkJLyogRFdfQVRfaGln aF9wYyAqLworKworKwkuYnl0ZQkJMAkJCS8qIEVuZCBvZiBjaGlsZHJlbiBvZiBDVSAqLworKy5M Y3UxX2VuZDoKKysKKysuTGN1Ml9iZWdpbjoKKysJLyogQ1UgaGVhZGVyICovCisrCS40Ynl0ZQku TGN1Ml9lbmQgLSAuTGN1Ml9zdGFydAkJLyogTGVuZ3RoIG9mIENvbXBpbGF0aW9uIFVuaXQgKi8K KysuTGN1Ml9zdGFydDoKKysJLjJieXRlCTIJCQkJLyogRFdBUkYgVmVyc2lvbiAqLworKwkuNGJ5 dGUJLkxhYmJyZXYxX2JlZ2luCQkJLyogT2Zmc2V0IGludG8gYWJicmV2IHNlY3Rpb24gKi8KKysJ LmJ5dGUJNAkJCQkvKiBQb2ludGVyIHNpemUgKi8KKysKKysJLyogQ1UgZGllICovCisrCS51bGVi MTI4IDEJCQkJLyogQWJicmV2OiBEV19UQUdfY29tcGlsZV91bml0ICovCisrCS5hc2NpaQkiZmls ZTEudHh0XDAiCQkJLyogRFdfQVRfbmFtZSAqLworKwkuYXNjaWkJIkdOVSBDIDMuMy4zXDAiCQkJ LyogRFdfQVRfcHJvZHVjZXIgKi8KKysJLmJ5dGUJOAkJCQkvKiBEV19BVF9sYW5ndWFnZSAoRFdf TEFOR19Gb3J0cmFuOTApICovCisrCS40Ynl0ZQkJRlVOQ19sYW5nCQkvKiBEV19BVF9sb3dfcGMg Ki8KKysJLjRieXRlCQltYWluCQkJLyogRFdfQVRfaGlnaF9wYyAqLworKworKwkudWxlYjEyOAkz CQkJLyogQWJicmV2OiBEV19UQUdfc3VicHJvZ3JhbSAqLworKwkuYnl0ZQkJMQkJCS8qIERXX0FU X2V4dGVybmFsICovCisrCS5hc2NpaQkJIkZVTkNfbGFuZ1wwIgkJLyogRFdfQVRfbmFtZSAqLwor KwkuNGJ5dGUJCUZVTkNfbGFuZwkJLyogRFdfQVRfbG93X3BjICovCisrCS40Ynl0ZQkJbWFpbgkJ CS8qIERXX0FUX2hpZ2hfcGMgKi8KKysKKysJLmJ5dGUJCTAJCQkvKiBFbmQgb2YgY2hpbGRyZW4g b2YgQ1UgKi8KKysuTGN1Ml9lbmQ6CisrCisrLyogQWJicmV2IHRhYmxlICovCisrCS5zZWN0aW9u IC5kZWJ1Z19hYmJyZXYKKysuTGFiYnJldjFfYmVnaW46CisrCS51bGViMTI4CTEJCQkvKiBBYmJy ZXYgY29kZSAqLworKwkudWxlYjEyOAkweDExCQkJLyogRFdfVEFHX2NvbXBpbGVfdW5pdCAqLwor KwkuYnl0ZQkJMQkJCS8qIGhhc19jaGlsZHJlbiAqLworKwkudWxlYjEyOAkweDMJCQkvKiBEV19B VF9uYW1lICovCisrCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCisrCS51bGVi MTI4CTB4MjUJCQkvKiBEV19BVF9wcm9kdWNlciAqLworKwkudWxlYjEyOAkweDgJCQkvKiBEV19G T1JNX3N0cmluZyAqLworKwkudWxlYjEyOAkweDEzCQkJLyogRFdfQVRfbGFuZ3VhZ2UgKi8KKysJ LnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLworKwkudWxlYjEyOAkweDExCQkJLyog RFdfQVRfbG93X3BjICovCisrCS51bGViMTI4CTB4MQkJCS8qIERXX0ZPUk1fYWRkciAqLworKwku dWxlYjEyOAkweDEyCQkJLyogRFdfQVRfaGlnaF9wYyAqLworKwkudWxlYjEyOAkweDEJCQkvKiBE V19GT1JNX2FkZHIgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysJLmJ5dGUJ CTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysKKysJLnVsZWIxMjgJMgkJCS8qIEFiYnJldiBjb2Rl ICovCisrCS51bGViMTI4CTB4MTEJCQkvKiBEV19UQUdfY29tcGlsZV91bml0ICovCisrCS5ieXRl CQkxCQkJLyogaGFzX2NoaWxkcmVuICovCisrCS51bGViMTI4CTB4MwkJCS8qIERXX0FUX25hbWUg Ki8KKysJLnVsZWIxMjgJMHg4CQkJLyogRFdfRk9STV9zdHJpbmcgKi8KKysJLnVsZWIxMjgJMHgy NQkJCS8qIERXX0FUX3Byb2R1Y2VyICovCisrCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3Ry aW5nICovCisrCS51bGViMTI4CTB4MTMJCQkvKiBEV19BVF9sYW5ndWFnZSAqLworKwkudWxlYjEy OAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCisrCS51bGViMTI4CTB4NDIJCQkvKiBEV19BVF9p ZGVudGlmaWVyX2Nhc2UgKi8KKysJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLwor KwkudWxlYjEyOAkweDExCQkJLyogRFdfQVRfbG93X3BjICovCisrCS51bGViMTI4CTB4MQkJCS8q IERXX0ZPUk1fYWRkciAqLworKwkudWxlYjEyOAkweDEyCQkJLyogRFdfQVRfaGlnaF9wYyAqLwor KwkudWxlYjEyOAkweDEJCQkvKiBEV19GT1JNX2FkZHIgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIFRl cm1pbmF0b3IgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysKKysJLnVsZWIx MjgJMwkJCS8qIEFiYnJldiBjb2RlICovCisrCS51bGViMTI4CTB4MmUJCQkvKiBEV19UQUdfc3Vi cHJvZ3JhbSAqLworKwkuYnl0ZQkJMAkJCS8qIGhhc19jaGlsZHJlbiAqLworKwkudWxlYjEyOAkw eDNmCQkJLyogRFdfQVRfZXh0ZXJuYWwgKi8KKysJLnVsZWIxMjgJMHhjCQkJLyogRFdfRk9STV9m bGFnICovCisrCS51bGViMTI4CTB4MwkJCS8qIERXX0FUX25hbWUgKi8KKysJLnVsZWIxMjgJMHg4 CQkJLyogRFdfRk9STV9zdHJpbmcgKi8KKysJLnVsZWIxMjgJMHgxMQkJCS8qIERXX0FUX2xvd19w YyAqLworKwkudWxlYjEyOAkweDEJCQkvKiBEV19GT1JNX2FkZHIgKi8KKysJLnVsZWIxMjgJMHgx MgkJCS8qIERXX0FUX2hpZ2hfcGMgKi8KKysJLnVsZWIxMjgJMHgxCQkJLyogRFdfRk9STV9hZGRy ICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrCS5ieXRlCQkweDAJCQkvKiBU ZXJtaW5hdG9yICovCisrCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrCS5ieXRl CQkweDAJCQkvKiBUZXJtaW5hdG9yICovCitJbmRleDogZ2RiLTcuMi9nZGIvdGVzdHN1aXRlL2dk Yi5kd2FyZjIvZHcyLWNhc2UtaW5zZW5zaXRpdmUuYworPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVs bAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjIvZ2RiL3Rl c3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1jYXNlLWluc2Vuc2l0aXZlLmMJMjAxMC0xMS0wNyAwNToz ODozNS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0wLDAgKzEsMzYgQEAKKysvKiBUaGlzIHRlc3RjYXNl IGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAgIENvcHlyaWdodCAyMDA0 LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor KworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysvKiBUaGlz IG9uZSBpcyBEV19MQU5HX0MgYnV0IGl0IHVzZXMgRFdfSURfY2FzZV9pbnNlbnNpdGl2ZS4gICov CisrCisrdm9pZAorK0ZVTkNfYXR0ciAodm9pZCkKKyt7CisrfQorKworKy8qIFRoaXMgb25lIGhh cyBubyBEV19BVF9pZGVudGlmaWVyX2Nhc2UgYnV0IGl0IGlzIERXX0xBTkdfRm9ydHJhbjkwLiAg Ki8KKysKKyt2b2lkCisrRlVOQ19sYW5nICh2b2lkKQorK3sKKyt9CisrCisraW50CisrbWFpbigp CisreworKyAgcmV0dXJuIDA7CisrfQorSW5kZXg6IGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIu ZHdhcmYyL2R3Mi1jYXNlLWluc2Vuc2l0aXZlLmV4cAorPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVs bAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjIvZ2RiL3Rl c3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1jYXNlLWluc2Vuc2l0aXZlLmV4cAkyMDEwLTExLTA3IDA1 OjM4OjM1LjAwMDAwMDAwMCArMDEwMAorQEAgLTAsMCArMSw0MSBAQAorKyMgQ29weXJpZ2h0IDIw MTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgorKworKyMgVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBvbiB0YXJnZXRzIHdo aWNoIHN1cHBvcnQgRFdBUkYtMiBhbmQgdXNlIGdhcy4KKysjIEZvciBub3cgcGljayBhIHNhbXBs aW5nIG9mIGxpa2VseSB0YXJnZXRzLgorK2lmIHshW2lzdGFyZ2V0ICotKi1saW51eCpdCisrICAg ICYmICFbaXN0YXJnZXQgKi0qLWdudSpdCisrICAgICYmICFbaXN0YXJnZXQgKi0qLWVsZipdCisr ICAgICYmICFbaXN0YXJnZXQgKi0qLW9wZW5ic2QqXQorKyAgICAmJiAhW2lzdGFyZ2V0IGFybS0q LWVhYmkqXQorKyAgICAmJiAhW2lzdGFyZ2V0IHBvd2VycGMtKi1lYWJpKl19IHsKKysgICAgcmV0 dXJuIDAKKyt9CisrCisrc2V0IHRlc3RmaWxlICJkdzItY2FzZS1pbnNlbnNpdGl2ZSIKKysKKytp ZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSBbbGlz dCAke3Rlc3RmaWxlfS5jICR7dGVzdGZpbGV9LWRlYnVnLlNdIHtub2RlYnVnfV0gfSB7CisrICAg IHJldHVybiAtMQorK30KKysKKytnZGJfdGVzdF9ub19vdXRwdXQgInNldCBsYW5ndWFnZSBmb3J0 cmFuIgorKworK2lmIHtbZ2RiX2JyZWFrcG9pbnQgImZ1TkNfYXR0ciJdID09IDF9IHsKKysgICAg cGFzcyAic2V0dGluZyBicmVha3BvaW50IGF0IGZ1TkNfYXR0ciIKKyt9CisrCisraWYge1tnZGJf YnJlYWtwb2ludCAiZnVOQ19sYW5nIl0gPT0gMX0geworKyAgICBwYXNzICJzZXR0aW5nIGJyZWFr cG9pbnQgYXQgZnVOQ19sYW5nIgorK30KK0luZGV4OiBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2Ri Lm1pL21pLXZhci1jaGlsZC1mLmV4cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjIub3JpZy9nZGIv dGVzdHN1aXRlL2dkYi5taS9taS12YXItY2hpbGQtZi5leHAJMjAxMC0wMS0wMSAwODozMjowMy4w MDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLXZhci1j aGlsZC1mLmV4cAkyMDEwLTExLTA3IDA1OjM4OjM1LjAwMDAwMDAwMCArMDEwMAorQEAgLTM2LDcg KzM2LDcgQEAgaWYge1tnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8keworIG1pX2dk Yl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgorIG1pX2dkYl9sb2FkICR7YmluZmls ZX0KKyAKKy1taV9ydW50byBNQUlOX18KKyttaV9ydW50byBtYWluX18KKyAKKyBtaV9nZGJfdGVz dCAiLXZhci1jcmVhdGUgYXJyYXkgKiBhcnJheSIgXAorICAgICAiXFxeZG9uZSxuYW1lPVwiYXJy YXlcIixudW1jaGlsZD1cIjNcIix2YWx1ZT1cIi4qXCIsdHlwZT1cImludGVnZXIgXFwoMiwtMTox XFwpXCIiIFwKCmRpZmYgLS1naXQgYS9nZGItZXhlYy1waWUtYW1kNjQucGF0Y2ggYi9nZGItZXhl Yy1waWUtYW1kNjQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg0 MDNhZAotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1leGVjLXBpZS1hbWQ2NC5wYXRjaApAQCAtMCww ICsxLDQxOCBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDkv bXNnMDA1MTkuaHRtbAorU3ViamVjdDogW3BhdGNoXSBGaXggaW5mZXJpb3IgZXhlY2wgb2YgbmV3 IFBJRSB4ODZfNjQKKworSGksCisKK2djYyAtbyAxIDEuYyAtV2FsbCAtZyAtZlBJRSAtcGllOyBn ZGIgLW54IC4vMSAtZXggJ2IgbWFpbicgLWV4IHIgLWV4IGMgCisKK1N0YXJ0aW5nIHByb2dyYW06 IC4uLi9nZGIvMSAKK0JyZWFrcG9pbnQgMSwgbWFpbiAoYXJnYz0xLCBhcmd2PTB4N2ZmZmZmZmZk ZmY4KSBhdCAxLmM6NworNwkgIHNldGJ1ZiAoc3Rkb3V0LCBOVUxMKTsKK0NvbnRpbnVpbmcuCity ZS1leGVjCitwcm9jZXNzIDI4MDU2IGlzIGV4ZWN1dGluZyBuZXcgcHJvZ3JhbTogLi4uL2dkYi8x CitFcnJvciBpbiByZS1zZXR0aW5nIGJyZWFrcG9pbnQgMTogQ2Fubm90IGFjY2VzcyBtZW1vcnkg YXQgYWRkcmVzcyAweDgwYworZXhpdAorUHJvZ3JhbSBleGl0ZWQgbm9ybWFsbHkuCisoZ2RiKSBf CisKK3doaWxlIGl0IHNob3VsZCBiZToKKworcmUtZXhlYworcHJvY2VzcyAyODA5NSBpcyBleGVj dXRpbmcgbmV3IHByb2dyYW06IC4uLi9nZGIvMQorQnJlYWtwb2ludCAxLCBtYWluIChhcmdjPTIs IGFyZ3Y9MHg3ZmZmZmZmZmUwMDgpIGF0IDEuYzo3Cis3CSAgc2V0YnVmIChzdGRvdXQsIE5VTEwp OworKGdkYikgXworCitUaGUgZXJyb3IgY29tZXMgZnJvbToKKwordGhyb3dfZXJyb3IgPC0gbWVt b3J5X2Vycm9yIDwtIHJlYWRfbWVtb3J5IDwtIHJlYWRfbWVtb3J5X3Vuc2lnbmVkX2ludGVnZXIg PC0KK2FtZDY0X2FuYWx5emVfcHJvbG9ndWUgPC0gYW1kNjRfc2tpcF9wcm9sb2d1ZSA8LSBnZGJh cmNoX3NraXBfcHJvbG9ndWUgPC0KK3NraXBfcHJvbG9ndWVfc2FsIDwtIGZpbmRfZnVuY3Rpb25f c3RhcnRfc2FsIDwtIHN5bWJvbF9mb3VuZCA8LSBkZWNvZGVfdmFyaWFibGUKKzwtIGRlY29kZV9s aW5lXzEgPC0gYnJlYWtwb2ludF9yZV9zZXRfb25lIDwtIGNhdGNoX2Vycm9ycyA8LSBicmVha3Bv aW50X3JlX3NldAorPC0gY2xlYXJfc3ltdGFiX3VzZXJzIDwtIG5ld19zeW1maWxlX29iamZpbGUg PC0KK3N5bWJvbF9maWxlX2FkZF93aXRoX2FkZHJzX29yX29mZnNldHMgPC0gc3ltYm9sX2ZpbGVf YWRkX2Zyb21fYmZkIDwtCitzeW1ib2xfZmlsZV9hZGQgPC0gc3ltYm9sX2ZpbGVfYWRkX21haW5f MSA8LSBzeW1ib2xfZmlsZV9hZGRfbWFpbiA8LQorZm9sbG93X2V4ZWMKKworCitJIHVuZGVyc3Rh bmQgdGhpcyBoYWNrIGlzIG5vdCBuaWNlLCB0aGUgY29ycmVjdCB3YXkgd291bGQgYmUgdG8gdW5p ZnkgbW9yZQorZm9sbG93X2V4ZWMgd2l0aCBwb3N0X2NyZWF0ZV9pbmZlcmlvci4gIEJ1dCBJIGNv dWxkIGJyZWFrIGl0IGZvciBub24tR05VL0xpbnV4Cit0YXJnZXRzIGEgbG90LgorCitObyByZWdy ZXNzaW9ucyBvbiB7eDg2XzY0LHg4Nl82NC1tMzIsaTY4Nn0tZmVkb3JhMTRzbmFwc2hvdC1saW51 eC1nbnUuCisKKworVGhhbmtzLAorSmFuCisKKworZm9yIHRoZSBkZW1vIGFib3ZlOgorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8YXNzZXJ0Lmg+ CisjaW5jbHVkZSA8c3RkaW8uaD4KK2ludAorbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQor eworICBzZXRidWYgKHN0ZG91dCwgTlVMTCk7CisgIGlmIChhcmdjID09IDEpCisgICAgeworICAg ICAgcHV0cyAoInJlLWV4ZWMiKTsKKyAgICAgIGV4ZWNsICgiL3Byb2Mvc2VsZi9leGUiLCBhcmd2 WzBdLCAiZm9vIiwgTlVMTCk7CisgICAgICBhc3NlcnQgKDApOworICAgIH0KKyAgcHV0cyAoImV4 aXQiKTsKKyAgcmV0dXJuIDA7Cit9CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCitnZGIvCisy MDEwLTA5LTMwICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisK KwkqIGluZnJ1bi5jIChmb2xsb3dfZXhlYyk6IFJlcGxhY2Ugc3ltYm9sX2ZpbGVfYWRkX21haW4g YnkKKwlzeW1ib2xfZmlsZV9hZGQgd2l0aCBTWU1GSUxFX0RFRkVSX0JQX1JFU0VULCBzZXRfaW5p dGlhbF9sYW5ndWFnZSBhbmQKKwlicmVha3BvaW50X3JlX3NldC4KKwkqIG0zMnItcm9tLmMgKG0z MnJfbG9hZCwgbTMycl91cGxvYWRfY29tbWFuZCk6IFVzZSBwYXJhbWV0ZXIgMCBmb3IKKwljbGVh cl9zeW10YWJfdXNlcnMuCisJKiBvYmpmaWxlcy5jIChmcmVlX2FsbF9vYmpmaWxlcyk6IExpa2V3 aXNlLgorCSogcmVtb3RlLW0zMnItc2RpLmMgKG0zMnJfbG9hZCk6IExpa2V3aXNlLgorCSogc29s aWItc29tLmMgKHNvbV9zb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayk6IExpa2V3aXNlLgorCSog c3ltZmlsZS5jIChuZXdfc3ltZmlsZV9vYmpmaWxlKTogTmV3IGNvbW1lbnQgZm9yIGFkZF9mbGFn cy4gIENhbGwKKwljbGVhcl9zeW10YWJfdXNlcnMgd2l0aCBBRERfRkxBR1MuCisJKHJlcmVhZF9z eW1ib2xzKTogVXNlIHBhcmFtZXRlciAwIGZvciBjbGVhcl9zeW10YWJfdXNlcnMuCisJKGNsZWFy X3N5bXRhYl91c2Vycyk6IE5ldyBwYXJhbWV0ZXIgYWRkX2ZsYWdzLiAgRG8gbm90IGNhbGwKKwli cmVha3BvaW50X3JlX3NldCBpZiBTWU1GSUxFX0RFRkVSX0JQX1JFU0VULgorCShjbGVhcl9zeW10 YWJfdXNlcnNfY2xlYW51cCk6IFVzZSBwYXJhbWV0ZXIgMCBmb3IgY2xlYXJfc3ltdGFiX3VzZXJz LgorCSogc3ltdGFiLmggKGNsZWFyX3N5bXRhYl91c2Vycyk6IE5ldyBwYXJhbWV0ZXIgYWRkX2Zs YWdzLgorCitnZGIvdGVzdHN1aXRlLworMjAxMC0wOS0zMCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4u a3JhdG9jaHZpbEByZWRoYXQuY29tPgorCisJKiBnZGIuYmFzZS9waWUtZXhlY2wuZXhwOiBOZXcg ZmlsZS4KKwkqIGdkYi5iYXNlL3BpZS1leGVjbC5jOiBOZXcgZmlsZS4KKworSW5kZXg6IGdkYi03 LjIvZ2RiL2luZnJ1bi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMi5vcmlnL2dkYi9pbmZydW4u YwkyMDEwLTEwLTEyIDE4OjI3OjU4LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjIvZ2RiL2lu ZnJ1bi5jCTIwMTAtMTAtMTIgMTg6Mjk6MjQuMDAwMDAwMDAwICswMjAwCitAQCAtODQwLDggKzg0 MCwxNSBAQCBmb2xsb3dfZXhlYyAocHRpZF90IHBpZCwgY2hhciAqZXhlY2RfcGF0CisgICAvKiBU aGF0IGEub3V0IGlzIG5vdyB0aGUgb25lIHRvIHVzZS4gKi8KKyAgIGV4ZWNfZmlsZV9hdHRhY2gg KGV4ZWNkX3BhdGhuYW1lLCAwKTsKKyAKKy0gIC8qIExvYWQgdGhlIG1haW4gZmlsZSdzIHN5bWJv bHMuICAqLworLSAgc3ltYm9sX2ZpbGVfYWRkX21haW4gKGV4ZWNkX3BhdGhuYW1lLCAwKTsKKysg IC8qIFNZTUZJTEVfREVGRVJfQlBfUkVTRVQgaXMgdXNlZCBhcyB0aGUgcHJvcGVyIGRpc3BsYWNl bWVudCBmb3IgUElFCisrICAgICAoUG9zaXRpb24gSW5kZXBlbmRlbnQgRXhlY3V0YWJsZSkgbWFp biBzeW1ib2wgZmlsZSB3aWxsIGdldCBhcHBsaWVkIGJ5CisrICAgICBzb2xpYl9jcmVhdGVfaW5m ZXJpb3JfaG9vayBiZWxvdy4gIGJyZWFrcG9pbnRfcmVfc2V0IHdvdWxkIGZhaWwgdG8gaW5zZXJ0 CisrICAgICB0aGUgYnJlYWtwb2ludHMgd2l0aCB0aGUgemVybyBkaXNwbGFjZW1lbnQuICAqLwor KworKyAgc3ltYm9sX2ZpbGVfYWRkIChleGVjZF9wYXRobmFtZSwgU1lNRklMRV9NQUlOTElORSB8 IFNZTUZJTEVfREVGRVJfQlBfUkVTRVQsCisrCQkgICBOVUxMLCAwKTsKKysKKysgIHNldF9pbml0 aWFsX2xhbmd1YWdlICgpOworIAorICNpZmRlZiBTT0xJQl9DUkVBVEVfSU5GRVJJT1JfSE9PSwor ICAgU09MSUJfQ1JFQVRFX0lORkVSSU9SX0hPT0sgKFBJREdFVCAoaW5mZXJpb3JfcHRpZCkpOwor QEAgLTg1MSw2ICs4NTgsOCBAQCBmb2xsb3dfZXhlYyAocHRpZF90IHBpZCwgY2hhciAqZXhlY2Rf cGF0CisgCisgICBqaXRfaW5mZXJpb3JfY3JlYXRlZF9ob29rICgpOworIAorKyAgYnJlYWtwb2lu dF9yZV9zZXQgKCk7CisrCisgICAvKiBSZWluc2VydCBhbGwgYnJlYWtwb2ludHMuICAoVGhvc2Ug d2hpY2ggd2VyZSBzeW1ib2xpYyBoYXZlCisgICAgICBiZWVuIHJlc2V0IHRvIHRoZSBwcm9wZXIg YWRkcmVzcyBpbiB0aGUgbmV3IGEub3V0LCB0aGFua3MKKyAgICAgIHRvIHN5bWJvbF9maWxlX2Nv bW1hbmQuLi4pICovCitJbmRleDogZ2RiLTcuMi9nZGIvbTMyci1yb20uYworPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0tIGdkYi03LjIub3JpZy9nZGIvbTMyci1yb20uYwkyMDEwLTAxLTAxIDA4OjMxOjM3LjAwMDAw MDAwMCArMDEwMAorKysrIGdkYi03LjIvZ2RiL20zMnItcm9tLmMJMjAxMC0xMC0xMiAxODoyOToy NC4wMDAwMDAwMDAgKzAyMDAKK0BAIC0xODgsNyArMTg4LDcgQEAgbTMycl9sb2FkIChjaGFyICpm aWxlbmFtZSwgaW50IGZyb21fdHR5KQorICAgICAgdGhlIHN0YWNrIG1heSBub3QgYmUgdmFsaWQs IGFuZCB0aGluZ3Mgd291bGQgZ2V0IGhvcnJpYmx5CisgICAgICBjb25mdXNlZC4uLiAqLworIAor LSAgY2xlYXJfc3ltdGFiX3VzZXJzICgpOworKyAgY2xlYXJfc3ltdGFiX3VzZXJzICgwKTsKKyB9 CisgCisgc3RhdGljIHZvaWQKK0BAIC01NTEsNyArNTUxLDcgQEAgbTMycl91cGxvYWRfY29tbWFu ZCAoY2hhciAqYXJncywgaW50IGZybworICAgICAgdGhlIHN0YWNrIG1heSBub3QgYmUgdmFsaWQs IGFuZCB0aGluZ3Mgd291bGQgZ2V0IGhvcnJpYmx5CisgICAgICBjb25mdXNlZC4uLiAqLworIAor LSAgY2xlYXJfc3ltdGFiX3VzZXJzICgpOworKyAgY2xlYXJfc3ltdGFiX3VzZXJzICgwKTsKKyB9 CisgCisgLyogUHJvdmlkZSBhIHByb3RvdHlwZSB0byBzaWxlbmNlIC1XbWlzc2luZy1wcm90b3R5 cGVzLiAgKi8KK0luZGV4OiBnZGItNy4yL2dkYi9vYmpmaWxlcy5jCis9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0g Z2RiLTcuMi5vcmlnL2dkYi9vYmpmaWxlcy5jCTIwMTAtMTAtMTIgMTg6Mjc6NTYuMDAwMDAwMDAw ICswMjAwCisrKysgZ2RiLTcuMi9nZGIvb2JqZmlsZXMuYwkyMDEwLTEwLTEyIDE4OjI5OjM5LjAw MDAwMDAwMCArMDIwMAorQEAgLTY5OSw3ICs2OTksNyBAQCBmcmVlX2FsbF9vYmpmaWxlcyAodm9p ZCkKKyAgIHsKKyAgICAgZnJlZV9vYmpmaWxlIChvYmpmaWxlKTsKKyAgIH0KKy0gIGNsZWFyX3N5 bXRhYl91c2VycyAoKTsKKysgIGNsZWFyX3N5bXRhYl91c2VycyAoMCk7CisgfQorIAwKKyAvKiBS ZWxvY2F0ZSBPQkpGSUxFIHRvIE5FV19PRkZTRVRTLiAgVGhlcmUgc2hvdWxkIGJlIE9CSkZJTEUt Pk5VTV9TRUNUSU9OUworSW5kZXg6IGdkYi03LjIvZ2RiL3JlbW90ZS1tMzJyLXNkaS5jCis9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLS0gZ2RiLTcuMi5vcmlnL2dkYi9yZW1vdGUtbTMyci1zZGkuYwkyMDEwLTA3LTA3 IDE4OjE1OjE2LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjIvZ2RiL3JlbW90ZS1tMzJyLXNk aS5jCTIwMTAtMTAtMTIgMTg6Mjk6MjQuMDAwMDAwMDAwICswMjAwCitAQCAtMTM3Nyw3ICsxMzc3 LDcgQEAgbTMycl9sb2FkIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCisgICAgICBtaWdodCBi ZSB0byBjYWxsIG5vcm1hbF9zdG9wLCBleGNlcHQgdGhhdCB0aGUgc3RhY2sgbWF5IG5vdCBiZSB2 YWxpZCwKKyAgICAgIGFuZCB0aGluZ3Mgd291bGQgZ2V0IGhvcnJpYmx5IGNvbmZ1c2VkLi4uICov CisgCistICBjbGVhcl9zeW10YWJfdXNlcnMgKCk7CisrICBjbGVhcl9zeW10YWJfdXNlcnMgKDAp OworIAorICAgaWYgKCFub3N0YXJ0KQorICAgICB7CitJbmRleDogZ2RiLTcuMi9nZGIvc29saWIt c29tLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4yLm9yaWcvZ2RiL3NvbGliLXNvbS5jCTIwMTAt MDUtMTcgMDE6NDk6NTguMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi9nZGIvc29saWItc29t LmMJMjAxMC0xMC0xMiAxODoyOToyNC4wMDAwMDAwMDAgKzAyMDAKK0BAIC0zNTQsNyArMzU0LDcg QEAga2VlcF9nb2luZzoKKyAgIC8qIE1ha2UgdGhlIGJyZWFrcG9pbnQgYXQgIl9zdGFydCIgYSBz aGFyZWQgbGlicmFyeSBldmVudCBicmVha3BvaW50LiAgKi8KKyAgIGNyZWF0ZV9zb2xpYl9ldmVu dF9icmVha3BvaW50ICh0YXJnZXRfZ2RiYXJjaCwgYW5hZGRyKTsKKyAKKy0gIGNsZWFyX3N5bXRh Yl91c2VycyAoKTsKKysgIGNsZWFyX3N5bXRhYl91c2VycyAoMCk7CisgfQorIAorIHN0YXRpYyB2 b2lkCitJbmRleDogZ2RiLTcuMi9nZGIvc3ltZmlsZS5jCis9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcu Mi5vcmlnL2dkYi9zeW1maWxlLmMJMjAxMC0xMC0xMiAxODoyNzo1Ny4wMDAwMDAwMDAgKzAyMDAK KysrKyBnZGItNy4yL2dkYi9zeW1maWxlLmMJMjAxMC0xMC0xMiAxODoyOToyNC4wMDAwMDAwMDAg KzAyMDAKK0BAIC0xMDM2LDcgKzEwMzYsNyBAQCBzeW1zX2Zyb21fb2JqZmlsZSAoc3RydWN0IG9i amZpbGUgKm9iamZpCisgCisgLyogUGVyZm9ybSByZXF1aXJlZCBhY3Rpb25zIGFmdGVyIGVpdGhl ciByZWFkaW5nIGluIHRoZSBpbml0aWFsCisgICAgc3ltYm9scyBmb3IgYSBuZXcgb2JqZmlsZSwg b3IgbWFwcGluZyBpbiB0aGUgc3ltYm9scyBmcm9tIGEgcmV1c2FibGUKKy0gICBvYmpmaWxlLiAq LworKyAgIG9iamZpbGUuICBBRERfRkxBR1MgaXMgYSBiaXRtYXNrIG9mIGVudW0gc3ltZmlsZV9h ZGRfZmxhZ3MuICAqLworIAorIHZvaWQKKyBuZXdfc3ltZmlsZV9vYmpmaWxlIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwgaW50IGFkZF9mbGFncykKK0BAIC0xMDQ5LDcgKzEwNDksNyBAQCBuZXdf c3ltZmlsZV9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqCisgICAgICAgLyogT0ssIG1ha2Ug aXQgdGhlICJyZWFsIiBzeW1ib2wgZmlsZS4gICovCisgICAgICAgc3ltZmlsZV9vYmpmaWxlID0g b2JqZmlsZTsKKyAKKy0gICAgICBjbGVhcl9zeW10YWJfdXNlcnMgKCk7CisrICAgICAgY2xlYXJf c3ltdGFiX3VzZXJzIChhZGRfZmxhZ3MpOworICAgICB9CisgICBlbHNlIGlmICgoYWRkX2ZsYWdz ICYgU1lNRklMRV9ERUZFUl9CUF9SRVNFVCkgPT0gMCkKKyAgICAgeworQEAgLTI1MjcsNyArMjUy Nyw3IEBAIHJlcmVhZF9zeW1ib2xzICh2b2lkKQorICAgICAgIC8qIE5vdGlmeSBvYmpmaWxlcyB0 aGF0IHdlJ3ZlIG1vZGlmaWVkIG9iamZpbGUgc2VjdGlvbnMuICAqLworICAgICAgIG9iamZpbGVz X2NoYW5nZWQgKCk7CisgCistICAgICAgY2xlYXJfc3ltdGFiX3VzZXJzICgpOworKyAgICAgIGNs ZWFyX3N5bXRhYl91c2VycyAoMCk7CisgICAgICAgLyogQXQgbGVhc3Qgb25lIG9iamZpbGUgaGFz IGNoYW5nZWQsIHNvIHdlIGNhbiBjb25zaWRlciB0aGF0CisgICAgICAgICAgdGhlIGV4ZWN1dGFi bGUgd2UncmUgZGVidWdnaW5nIGhhcyBjaGFuZ2VkIHRvby4gICovCisgICAgICAgb2JzZXJ2ZXJf bm90aWZ5X2V4ZWN1dGFibGVfY2hhbmdlZCAoKTsKK0BAIC0yNzQ1LDEwICsyNzQ1LDEwIEBAIGFs bG9jYXRlX3N5bXRhYiAoY2hhciAqZmlsZW5hbWUsIHN0cnVjdCAKKyAMCisgCisgLyogUmVzZXQg YWxsIGRhdGEgc3RydWN0dXJlcyBpbiBnZGIgd2hpY2ggbWF5IGNvbnRhaW4gcmVmZXJlbmNlcyB0 byBzeW1ib2wKKy0gICB0YWJsZSBkYXRhLiAgKi8KKysgICB0YWJsZSBkYXRhLiAgQUREX0ZMQUdT IGlzIGEgYml0bWFzayBvZiBlbnVtIHN5bWZpbGVfYWRkX2ZsYWdzLiAgKi8KKyAKKyB2b2lkCist Y2xlYXJfc3ltdGFiX3VzZXJzICh2b2lkKQorK2NsZWFyX3N5bXRhYl91c2VycyAoaW50IGFkZF9m bGFncykKKyB7CisgICAvKiBTb21lZGF5LCB3ZSBzaG91bGQgZG8gYmV0dGVyIHRoYW4gdGhpcywg Ynkgb25seSBibG93aW5nIGF3YXkKKyAgICAgIHRoZSB0aGluZ3MgdGhhdCByZWFsbHkgbmVlZCB0 byBiZSBibG93bi4gICovCitAQCAtMjc1OCw3ICsyNzU4LDggQEAgY2xlYXJfc3ltdGFiX3VzZXJz ICh2b2lkKQorICAgY2xlYXJfY3VycmVudF9zb3VyY2Vfc3ltdGFiX2FuZF9saW5lICgpOworIAor ICAgY2xlYXJfZGlzcGxheXMgKCk7CistICBicmVha3BvaW50X3JlX3NldCAoKTsKKysgIGlmICgo YWRkX2ZsYWdzICYgU1lNRklMRV9ERUZFUl9CUF9SRVNFVCkgPT0gMCkKKysgICAgYnJlYWtwb2lu dF9yZV9zZXQgKCk7CisgICBzZXRfZGVmYXVsdF9icmVha3BvaW50ICgwLCBOVUxMLCAwLCAwLCAw KTsKKyAgIGNsZWFyX3BjX2Z1bmN0aW9uX2NhY2hlICgpOworICAgb2JzZXJ2ZXJfbm90aWZ5X25l d19vYmpmaWxlIChOVUxMKTsKK0BAIC0yNzc3LDcgKzI3NzgsNyBAQCBjbGVhcl9zeW10YWJfdXNl cnMgKHZvaWQpCisgc3RhdGljIHZvaWQKKyBjbGVhcl9zeW10YWJfdXNlcnNfY2xlYW51cCAodm9p ZCAqaWdub3JlKQorIHsKKy0gIGNsZWFyX3N5bXRhYl91c2VycyAoKTsKKysgIGNsZWFyX3N5bXRh Yl91c2VycyAoMCk7CisgfQorIAwKKyAvKiBPVkVSTEFZUzoKK0luZGV4OiBnZGItNy4yL2dkYi9z eW10YWIuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjIub3JpZy9nZGIvc3ltdGFiLmgJMjAxMC0x MC0xMiAxODoyNzo1Ni4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4yL2dkYi9zeW10YWIuaAky MDEwLTEwLTEyIDE4OjI5OjI0LjAwMDAwMDAwMCArMDIwMAorQEAgLTExNzAsNyArMTE3MCw3IEBA IGV4dGVybiB2b2lkIHNraXBfcHJvbG9ndWVfc2FsIChzdHJ1Y3Qgc3kKKyAKKyAvKiBzeW1maWxl LmMgKi8KKyAKKy1leHRlcm4gdm9pZCBjbGVhcl9zeW10YWJfdXNlcnMgKHZvaWQpOworK2V4dGVy biB2b2lkIGNsZWFyX3N5bXRhYl91c2VycyAoaW50IGFkZF9mbGFncyk7CisgCisgZXh0ZXJuIGVu dW0gbGFuZ3VhZ2UgZGVkdWNlX2xhbmd1YWdlX2Zyb21fZmlsZW5hbWUgKGNvbnN0IGNoYXIgKik7 CisgCitJbmRleDogZ2RiLTcuMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3BpZS1leGVjbC5jCis9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICsw MDAwCisrKysgZ2RiLTcuMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3BpZS1leGVjbC5jCTIwMTAt MTAtMTIgMTg6Mjk6MjQuMDAwMDAwMDAwICswMjAwCitAQCAtMCwwICsxLDUxIEBACisrLyogVGhp cyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5 cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQor KyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrI2luY2x1ZGUgPHN0ZGlvLmg+Cisr I2luY2x1ZGUgPHVuaXN0ZC5oPgorKyNpbmNsdWRlIDxhc3NlcnQuaD4KKysKKytzdGF0aWMgdm9p ZCBwaWVfZXhlY2xfbWFya2VyICh2b2lkKTsKKysKKytpbnQKKyttYWluIChpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCisreworKyAgc2V0YnVmIChzdGRvdXQsIE5VTEwpOworKworKyNpZiBCSU4gPT0g MQorKyAgaWYgKGFyZ2MgPT0gMikKKysgICAgeworKyAgICAgIHByaW50ZiAoInBpZS1leGVjbDog cmUtZXhlYzogJXNcbiIsIGFyZ3ZbMV0pOworKyAgICAgIGV4ZWNsIChhcmd2WzFdLCBhcmd2WzFd LCBOVUxMKTsKKysgICAgICBhc3NlcnQgKDApOworKyAgICB9CisrI2VuZGlmCisrCisrICBwaWVf ZXhlY2xfbWFya2VyICgpOworKworKyAgcmV0dXJuIDA7CisrfQorKworKy8qIHBpZV9leGVjbF9t YXJrZXIgbXVzdCBiZSBvbiBhIGRpZmZlcmVudCBhZGRyZXNzIHRoYW4gaW4gYHBpZS1leGVjbDIu YycuICAqLworKworK3ZvbGF0aWxlIGludCB2OworKworK3N0YXRpYyB2b2lkCisrcGllX2V4ZWNs X21hcmtlciAodm9pZCkKKyt7CisrICB2ID0gMTsKKyt9CitJbmRleDogZ2RiLTcuMi9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL3BpZS1leGVjbC5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJ MTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy4yL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvcGllLWV4ZWNsLmV4cAkyMDEwLTEwLTEyIDE4OjI5OjI0LjAwMDAwMDAw MCArMDIwMAorQEAgLTAsMCArMSw5NCBAQAorKyMgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysj IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysj IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKwor KyMgVGhlIHByb2JsZW0gd2FzIGR1ZSB0byBhbWQ2NF9za2lwX3Byb2xvZ3VlIGF0dGVtcHRpbmcg dG8gYWNjZXNzIGluZmVyaW9yCisrIyBtZW1vcnkgYmVmb3JlIHRoZSBQSUUgKFBvc2l0aW9uIElu ZGVwZW5kZW50IEV4ZWN1dGFibGUpIGdldHMgcmVsb2NhdGVkLgorKworK2lmIHsgIVtpc3Rhcmdl dCAqLWxpbnV4Kl19IHsKKysgICAgY29udGludWUKKyt9CisrCisrc2V0IHRlc3RmaWxlICJwaWUt ZXhlY2wiCisrc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYworK3NldCBleGVjdXRhYmxlMSAke3Rl c3RmaWxlfTEKKytzZXQgZXhlY3V0YWJsZTIgJHt0ZXN0ZmlsZX0yCisrc2V0IGJpbmZpbGUxICR7 b2JqZGlyfS8ke3N1YmRpcn0vJHtleGVjdXRhYmxlMX0KKytzZXQgYmluZmlsZTIgJHtvYmpkaXJ9 LyR7c3ViZGlyfS8ke2V4ZWN1dGFibGUyfQorKworKyMgVXNlIGNvbmRpdGlvbmFsIGNvbXBpbGF0 aW9uIGFjY29yZGluZyB0byBgQklOJyBhcyBHREIgcmVtZW1iZXJzIHRoZSBzb3VyY2UKKysjIGZp bGUgbmFtZSBvZiB0aGUgYnJlYWtwb2ludC4KKysKKytzZXQgb3B0cyBbbGlzdCBkZWJ1ZyB7YWRk aXRpb25hbF9mbGFncz0tZlBJRSAtcGllfV0KKytpZiB7W2J1aWxkX2V4ZWN1dGFibGUgJHt0ZXN0 ZmlsZX0uZXhwICRleGVjdXRhYmxlMSAkc3JjZmlsZSBbY29uY2F0ICRvcHRzIHthZGRpdGlvbmFs X2ZsYWdzPS1EQklOPTF9XV0gPT0gIiIKKysgICAgfHwgW2J1aWxkX2V4ZWN1dGFibGUgJHt0ZXN0 ZmlsZX0uZXhwICRleGVjdXRhYmxlMiAkc3JjZmlsZSBbY29uY2F0ICRvcHRzIHthZGRpdGlvbmFs X2ZsYWdzPS1EQklOPTJ9XV0gPT0gIiJ9IHsKKysgICAgcmV0dXJuIC0xCisrfQorKworK2NsZWFu X3Jlc3RhcnQgJHtleGVjdXRhYmxlMX0KKysKKytnZGJfdGVzdF9ub19vdXRwdXQgInNldCBhcmdz ICR7YmluZmlsZTJ9IgorKworK2lmICFbcnVudG9fbWFpbl0geworKyAgICByZXR1cm4gLTEKKyt9 CisrCisrIyBEbyBub3Qgc3RvcCBvbiBgbWFpbicgYWZ0ZXIgcmUtZXhlYy4KKytkZWxldGVfYnJl YWtwb2ludHMKKysKKytnZGJfYnJlYWtwb2ludCAicGllX2V4ZWNsX21hcmtlciIKKytnZGJfdGVz dCAiaW5mbyBicmVha3BvaW50cyIgIi4qIiAiIgorKworK3NldCBhZGRyMSAiIgorK3NldCB0ZXN0 ICJwaWVfZXhlY2xfbWFya2VyIGFkZHJlc3MgZmlyc3QiCisrZ2RiX3Rlc3RfbXVsdGlwbGUgInAv eCAmcGllX2V4ZWNsX21hcmtlciIgJHRlc3QgeworKyAgICAtcmUgIiA9ICgweFxbMC05YS1mXF0r KVxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCXNldCBhZGRyMSAkZXhwZWN0X291dCgxLHN0cmluZykK KysJcGFzcyAkdGVzdAorKyAgICB9CisrfQorK3ZlcmJvc2UgLWxvZyAiYWRkcjEgaXMgJGFkZHIx IgorKworK3NldCB0ZXN0ICJjb250aW51ZSIKKytnZGJfdGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVz dCB7CisrICAgIC1yZSAiRXJyb3IgaW4gcmUtc2V0dGluZyBicmVha3BvaW50IiB7CisrCWZhaWwg JHRlc3QKKysgICAgfQorKyAgICAtcmUgIkNhbm5vdCBhY2Nlc3MgbWVtb3J5IiB7CisrCWZhaWwg JHRlc3QKKysgICAgfQorKyAgICAtcmUgInBpZS1leGVjbDogcmUtZXhlYy4qZXhlY3V0aW5nIG5l dyBwcm9ncmFtLipcclxuQnJlYWtwb2ludCBcWzAtOVxdKyxcW15cclxuXF0qIHBpZV9leGVjbF9t YXJrZXIgLipcclxuJGdkYl9wcm9tcHQgJCIgeworKwlwYXNzICR0ZXN0CisrICAgIH0KKyt9Cisr CisrZ2RiX3Rlc3QgImluZm8gYnJlYWtwb2ludHMiICIuKiIgIiIKKysKKytzZXQgYWRkcjIgIiIK KytzZXQgdGVzdCAicGllX2V4ZWNsX21hcmtlciBhZGRyZXNzIHNlY29uZCIKKytnZGJfdGVzdF9t dWx0aXBsZSAicC94ICZwaWVfZXhlY2xfbWFya2VyIiAkdGVzdCB7CisrICAgIC1yZSAiID0gKDB4 XFswLTlhLWZcXSspXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJc2V0IGFkZHIyICRleHBlY3Rfb3V0 KDEsc3RyaW5nKQorKwlwYXNzICR0ZXN0CisrICAgIH0KKyt9CisrdmVyYm9zZSAtbG9nICJhZGRy MiBpcyAkYWRkcjIiCisrCisrIyBFbnN1cmUgd2UgY2Fubm90IGdldCBhIGZhbHNlIFBBU1MgYW5k IHRoZSBpbmZlcmlvciBoYXMgcmVhbGx5IGNoYW5nZWQuCisrc2V0IHRlc3QgInBpZV9leGVjbF9t YXJrZXIgYWRkcmVzcyBoYXMgY2hhbmdlZCIKKytpZiBbc3RyaW5nIGVxdWFsICRhZGRyMSAkYWRk cjJdIHsKKysgICAgZmFpbCAkdGVzdAorK30gZWxzZSB7CisrICAgIHBhc3MgJHRlc3QKKyt9Cgpk aWZmIC0tZ2l0IGEvZ2RiLWZhbHNlLWdjYy13YXJuaW5nLnBhdGNoIGIvZ2RiLWZhbHNlLWdjYy13 YXJuaW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyYWQwOGMK LS0tIC9kZXYvbnVsbAorKysgYi9nZGItZmFsc2UtZ2NjLXdhcm5pbmcucGF0Y2gKQEAgLTAsMCAr MSwxMSBAQAorLS0tIGdkYi03LjEuOTAuMjAxMDA4MDYvZ2RiL2luZmNhbGwuYy5vcmlnCTIwMTAt MDgtMTAgMDA6MzQ6MTAuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDgwNi9n ZGIvaW5mY2FsbC5jCTIwMTAtMDgtMTAgMDA6MzY6MDMuMDAwMDAwMDAwICswMjAwCitAQCAtMjg0 LDcgKzI4NCw3IEBAIGZpbmRfZnVuY3Rpb25fYWRkciAoc3RydWN0IHZhbHVlICpmdW5jdGkKKyAg IHN0cnVjdCB0eXBlICpmdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGZ1bmN0aW9u KSk7CisgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF90eXBlX2FyY2ggKGZ0eXBlKTsK KyAgIHN0cnVjdCB0eXBlICp2YWx1ZV90eXBlID0gTlVMTDsKKy0gIENPUkVfQUREUiBmdW5hZGRy OworKyAgQ09SRV9BRERSIGZ1bmFkZHIgPSAwOwkvKiBHQ0MgZmFsc2UgLWZwcm9maWxlLXVzZSB3 YXJuaW5nLiAgKi8KKyAKKyAgIC8qIElmIGl0J3MgYSBtZW1iZXIgZnVuY3Rpb24sIGp1c3QgbG9v ayBhdCB0aGUgZnVuY3Rpb24KKyAgICAgIHBhcnQgb2YgaXQuICAqLwoKZGlmZiAtLWdpdCBhL2dk Yi1nZGItYWRkLWluZGV4LXNjcmlwdC5wYXRjaCBiL2dkYi1nZGItYWRkLWluZGV4LXNjcmlwdC5w YXRjaAppbmRleCBkYTE0OWVjLi5jNzcwYTc3IDEwMDY0NAotLS0gYS9nZGItZ2RiLWFkZC1pbmRl eC1zY3JpcHQucGF0Y2gKKysrIGIvZ2RiLWdkYi1hZGQtaW5kZXgtc2NyaXB0LnBhdGNoCkBAIC0x MDksNyArMTA5LDcgQEAgaW5kZXggMDAwMDAwMC4uYzlhMDNiMAogK2Rpcj0iJHtmaWxlJS8qfSIK ICsKICsjIFdlIGRvbid0IGNhcmUgaWYgZ2RiIGdpdmVzIGFuIGVycm9yLgotK2dkYiAtLWJhdGNo LXNpbGVudCAtZXggImZpbGUgJGZpbGUiIC1leCAic2F2ZSBnZGItaW5kZXggJGRpciIKKytnZGIg LW54IC0tYmF0Y2gtc2lsZW50IC1leCAiZmlsZSAkZmlsZSIgLWV4ICJzYXZlIGdkYi1pbmRleCAk ZGlyIgogKwogK2lmIHRlc3QgLWYgIiR7ZmlsZX0uZ2RiLWluZGV4IjsgdGhlbgogKyAgIG9iamNv cHkgLS1hZGQtc2VjdGlvbiAuZ2RiX2luZGV4PSIke2ZpbGV9LmdkYi1pbmRleCIgLS1zZXQtc2Vj dGlvbi1mbGFncyAuZ2RiX2luZGV4PXJlYWRvbmx5ICIkZmlsZSIgIiRmaWxlIgoKZGlmZiAtLWdp dCBhL2dkYi1nZGJpbmRleC1hZGEtcmVncmVzc2lvbi5wYXRjaCBiL2dkYi1nZGJpbmRleC1hZGEt cmVncmVzc2lvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDY3 ZDU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWdkYmluZGV4LWFkYS1yZWdyZXNzaW9uLnBhdGNo CkBAIC0wLDAgKzEsNTAgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8y MDEwLTA5L21zZzAwMjczLmh0bWwKK1N1YmplY3Q6IFtwYXRjaF0gLmdkYl9pbmRleDogRml4IEFk YSByZWdyZXNzaW9uCisKK0hpLAorCitvbiBhIHN5c3RlbSB3aXRoIGxpYnJhcmllcyB1c2luZyAu Z2RiX2luZGV4IGFsbCB0aGUgQWRhIHRlc3RjYXNlcyBGQUlMOgorCitSdW5uaW5nIC4vZ2RiLmFk YS9wcmludF9wYy5leHAgLi4uCitGQUlMOiBnZGIuYWRhL3ByaW50X3BjLmV4cDogc3RhcnQgaW5m ZXJpb3IgKEdEQiBpbnRlcm5hbCBlcnJvcikKK0ZBSUw6IGdkYi5hZGEvcHJpbnRfcGMuZXhwOiBw IC94ICRwYworCitkd2FyZjJyZWFkLmM6MjM3NDogaW50ZXJuYWwtZXJyb3I6IG1hcF9hZGFfc3lt dGFicyBjYWxsZWQgdmlhIGluZGV4IG1ldGhvZAorCitGQUlsIGlzIG9uIEZlZG9yYSAxNCBzbmFw c2hvdCB1c2luZyBnY2MtZGVidWdpbmZvLTQuNS4xLTMuZmMxNC54ODZfNjQgZmlsZToKKwkvdXNy L2xpYi9kZWJ1Zy9saWI2NC9saWJnY2Nfcy00LjUuMS0yMDEwMDkwNy5zby4xLmRlYnVnCisKK1Ro ZSByZWdyZXNzaW9ucyBnZXQgZml4ZWQgb24geDg2XzY0LWZlZG9yYTE0c25hcHNob3QtbGludXgt Z251IGJ5IHRoZSBhdHRhY2hlZAorcGF0Y2guICBObyByZWdyZXNzaW9ucyBvbiB7eDg2XzY0LHg4 Nl82NC1tMzIsaTY4Nn0tZmVkb3JhMTRzbmFwc2hvdC1saW51eC1nbnUuCisKK0R1cmluZyBteSB0 ZXN0cyB3aXRoIGBzZXQgbGFuZ3VhZ2UgYWRhJyBJIGNvdWxkIG5vdCBsb29rdXAgbm9uLUFkYSBz eW1ib2xzCithbnl3YXkgc28gSSBiZWxpZXZlIHRoZSBwYXRjaCBpcyBPSyBidXQgc3VyZSBpdCBu ZWVkcyBhbiBBZGEtd2lzZSByZXZpZXcuCisKKworVGhhbmtzLAorSmFuCisKKworZ2RiLworMjAx MC0wOS0xNCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorCisJ KiBkd2FyZjJyZWFkLmMgKGR3Ml9tYXBfYWRhX3N5bXRhYnMpOiBSZW1vdmUgdGhlIGludGVybmFs X2Vycm9yLgorCVVwZGF0ZSB0aGUgY29tbWVudC4KKworLS0tIGEvZ2RiL2R3YXJmMnJlYWQuYwor KysrIGIvZ2RiL2R3YXJmMnJlYWQuYworQEAgLTIzNjksMTAgKzIzNjksOSBAQCBkdzJfbWFwX2Fk YV9zeW10YWJzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKyAJCSAgICAgZG9tYWluX2VudW0g bmFtZXNwYWNlLCBpbnQgd2lsZCwKKyAJCSAgICAgdm9pZCAqZGF0YSkKKyB7CistICAvKiBGb3Ig bm93LCB3ZSBkb24ndCBzdXBwb3J0IEFkYSwgc28gdGhpcyBmdW5jdGlvbiBjYW4ndCBiZQorLSAg ICAgcmVhY2hlZC4gICovCistICBpbnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLAor LQkJICBfKCJtYXBfYWRhX3N5bXRhYnMgY2FsbGVkIHZpYSBpbmRleCBtZXRob2QiKSk7CisrICAv KiBGb3Igbm93LCB3ZSBkb24ndCBzdXBwb3J0IEFkYS4gIFN0aWxsIHRoZSBmdW5jdGlvbiBjYW4g YmUgY2FsbGVkIGlmIHRoZQorKyAgICAgY3VycmVudCBsYW5ndWFnZSBpcyBBZGEgZm9yIGEgbm9u LUFkYSBvYmpmaWxlIHVzaW5nIEdOVSBpbmRleC4gIEFzIEFkYQorKyAgICAgZG9lcyBub3QgbG9v ayBmb3Igbm9uLUFkYSBzeW1ib2xzIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGp1c3QgcmV0dXJuLiAg Ki8KKyB9CisgCisgc3RhdGljIHZvaWQKKwoKZGlmZiAtLWdpdCBhL2dkYi1nZGJpbmRleC1iaWdl bmRpYW4ucGF0Y2ggYi9nZGItZ2RiaW5kZXgtYmlnZW5kaWFuLnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkZDRmNGYKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItZ2Ri aW5kZXgtYmlnZW5kaWFuLnBhdGNoCkBAIC0wLDAgKzEsOTYgQEAKK2h0dHA6Ly9zb3VyY2V3YXJl Lm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTA5L21zZzAwNDM0Lmh0bWwKK2h0dHA6Ly9zb3VyY2V3 YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTAtMDkvbXNnMDAxNTUuaHRtbAorCisjIyMgc3JjL2dkYi9D aGFuZ2VMb2cJMjAxMC8wOS8yNCAxNDo0Nzo1MgkxLjEyMjAyCisjIyMgc3JjL2dkYi9DaGFuZ2VM b2cJMjAxMC8wOS8yNCAxNjoxMTo0NAkxLjEyMjAzCisjIyAtMSwzICsxLDkgQEAKKysyMDEwLTA5 LTI0ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CisrCisrCSogZHdhcmYycmVhZC5j IChkdzJfZXhwYW5kX3N5bXRhYnNfbWF0Y2hpbmcpOiBBZGQgbWlzc2luZworKwlNQVlCRV9TV0FQ cy4KKysJKGR3Ml9tYXBfc3ltYm9sX25hbWVzKTogTGlrZXdpc2UuCisrCisgMjAxMC0wOS0yNCAg U2FtaSBXYWdpYWFsbGEgIDxzd2FnaWFhbEByZWRoYXQuY29tPgorIAorIAkqIHZhbG9wcy5jIChm aW5kX29sb2FkX2NoYW1wX25hbWVzcGFjZV9sb29wKTogcmVwbGFjZSBpbmNvcnJlY3QKKy0tLSBz cmMvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLzA5LzIyIDE5OjIyOjQ0CTEuNDYwCisrKysgc3JjL2dk Yi9kd2FyZjJyZWFkLmMJMjAxMC8wOS8yNCAxNjoxMTo0NgkxLjQ2MQorQEAgLTIzODIsMTAgKzIz ODIsMTIgQEAKKyB7CisgICBpbnQgaTsKKyAgIG9mZnNldF90eXBlIGl0ZXI7CisrICBzdHJ1Y3Qg bWFwcGVkX2luZGV4ICppbmRleDsKKyAKKyAgIGR3Ml9zZXR1cCAob2JqZmlsZSk7CisgICBpZiAo IWR3YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGUpCisgICAgIHJldHVybjsKKysgIGluZGV4 ID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmRleF90YWJsZTsKKyAKKyAgIGZvciAoaSA9IDA7IGkg PCAoZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHMKKyAJCSAgICsgZHdhcmYyX3Blcl9v YmpmaWxlLT5uX3R5cGVfY29tcF91bml0cyk7ICsraSkKK0BAIC0yNDExLDI4ICsyNDEzLDI0IEBA CisgCX0KKyAgICAgfQorIAorLSAgZm9yIChpdGVyID0gMDsKKy0gICAgICAgaXRlciA8IGR3YXJm Ml9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGUtPmluZGV4X3RhYmxlX3Nsb3RzOworLSAgICAgICAr K2l0ZXIpCisrICBmb3IgKGl0ZXIgPSAwOyBpdGVyIDwgaW5kZXgtPmluZGV4X3RhYmxlX3Nsb3Rz OyArK2l0ZXIpCisgICAgIHsKKyAgICAgICBvZmZzZXRfdHlwZSBpZHggPSAyICogaXRlcjsKKyAg ICAgICBjb25zdCBjaGFyICpuYW1lOworICAgICAgIG9mZnNldF90eXBlICp2ZWMsIHZlY19sZW4s IHZlY19pZHg7CisgCistICAgICAgaWYgKGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGUt PmluZGV4X3RhYmxlW2lkeF0gPT0gMAorLQkgICYmIGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhf dGFibGUtPmluZGV4X3RhYmxlW2lkeCArIDFdID09IDApCisrICAgICAgaWYgKGluZGV4LT5pbmRl eF90YWJsZVtpZHhdID09IDAgJiYgaW5kZXgtPmluZGV4X3RhYmxlW2lkeCArIDFdID09IDApCisg CWNvbnRpbnVlOworIAorLSAgICAgIG5hbWUgPSAoZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmRleF90 YWJsZS0+Y29uc3RhbnRfcG9vbAorLQkgICAgICArIGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhf dGFibGUtPmluZGV4X3RhYmxlW2lkeF0pOworKyAgICAgIG5hbWUgPSBpbmRleC0+Y29uc3RhbnRf cG9vbCArIE1BWUJFX1NXQVAgKGluZGV4LT5pbmRleF90YWJsZVtpZHhdKTsKKyAKKyAgICAgICBp ZiAoISAoKm5hbWVfbWF0Y2hlcikgKG5hbWUsIGRhdGEpKQorIAljb250aW51ZTsKKyAKKyAgICAg ICAvKiBUaGUgbmFtZSB3YXMgbWF0Y2hlZCwgbm93IGV4cGFuZCBjb3JyZXNwb25kaW5nIENVcyB0 aGF0IHdlcmUKKyAJIG1hcmtlZC4gICovCistICAgICAgdmVjID0gKG9mZnNldF90eXBlICopIChk d2FyZjJfcGVyX29iamZpbGUtPmluZGV4X3RhYmxlLT5jb25zdGFudF9wb29sCistCQkJICAgICAr IGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGUtPmluZGV4X3RhYmxlW2lkeCArIDFdKTsK KysgICAgICB2ZWMgPSAob2Zmc2V0X3R5cGUgKikgKGluZGV4LT5jb25zdGFudF9wb29sCisrCQkJ ICAgICArIE1BWUJFX1NXQVAgKGluZGV4LT5pbmRleF90YWJsZVtpZHggKyAxXSkpOworICAgICAg IHZlY19sZW4gPSBNQVlCRV9TV0FQICh2ZWNbMF0pOworICAgICAgIGZvciAodmVjX2lkeCA9IDA7 IHZlY19pZHggPCB2ZWNfbGVuOyArK3ZlY19pZHgpCisgCXsKK0BAIC0yNDc2LDI1ICsyNDc0LDI0 IEBACisgCQkgICAgICB2b2lkICpkYXRhKQorIHsKKyAgIG9mZnNldF90eXBlIGl0ZXI7CisrICBz dHJ1Y3QgbWFwcGVkX2luZGV4ICppbmRleDsKKysKKyAgIGR3Ml9zZXR1cCAob2JqZmlsZSk7Cisg CisgICBpZiAoIWR3YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGUpCisgICAgIHJldHVybjsK KysgIGluZGV4ID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmRleF90YWJsZTsKKyAKKy0gIGZvciAo aXRlciA9IDA7CistICAgICAgIGl0ZXIgPCBkd2FyZjJfcGVyX29iamZpbGUtPmluZGV4X3RhYmxl LT5pbmRleF90YWJsZV9zbG90czsKKy0gICAgICAgKytpdGVyKQorKyAgZm9yIChpdGVyID0gMDsg aXRlciA8IGluZGV4LT5pbmRleF90YWJsZV9zbG90czsgKytpdGVyKQorICAgICB7CisgICAgICAg b2Zmc2V0X3R5cGUgaWR4ID0gMiAqIGl0ZXI7CisgICAgICAgY29uc3QgY2hhciAqbmFtZTsKKyAg ICAgICBvZmZzZXRfdHlwZSAqdmVjLCB2ZWNfbGVuLCB2ZWNfaWR4OworIAorLSAgICAgIGlmIChk d2FyZjJfcGVyX29iamZpbGUtPmluZGV4X3RhYmxlLT5pbmRleF90YWJsZVtpZHhdID09IDAKKy0J ICAmJiBkd2FyZjJfcGVyX29iamZpbGUtPmluZGV4X3RhYmxlLT5pbmRleF90YWJsZVtpZHggKyAx XSA9PSAwKQorKyAgICAgIGlmIChpbmRleC0+aW5kZXhfdGFibGVbaWR4XSA9PSAwICYmIGluZGV4 LT5pbmRleF90YWJsZVtpZHggKyAxXSA9PSAwKQorIAljb250aW51ZTsKKyAKKy0gICAgICBuYW1l ID0gKGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGUtPmNvbnN0YW50X3Bvb2wKKy0JICAg ICAgKyBkd2FyZjJfcGVyX29iamZpbGUtPmluZGV4X3RhYmxlLT5pbmRleF90YWJsZVtpZHhdKTsK KysgICAgICBuYW1lID0gKGluZGV4LT5jb25zdGFudF9wb29sICsgTUFZQkVfU1dBUCAoaW5kZXgt PmluZGV4X3RhYmxlW2lkeF0pKTsKKyAKKyAgICAgICAoKmZ1bikgKG5hbWUsIGRhdGEpOworICAg ICB9CgpkaWZmIC0tZ2l0IGEvZ2RiLWdkYmluZGV4LXYxLXRvLXYyLnBhdGNoIGIvZ2RiLWdkYmlu ZGV4LXYxLXRvLXYyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJh N2I5YjcKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItZ2RiaW5kZXgtdjEtdG8tdjIucGF0Y2gKQEAg LTAsMCArMSw2ODkgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTAtMDcv bXNnMDAxMzkuaHRtbAorCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMC8wNy8yMyAyMToxMDo1 NAkxLjEyMDEzCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMC8wNy8yMyAyMjoxNToxMwkxLjEy MDE0CisjIyAtMSwzICsxLDMxIEBACisrMjAxMC0wNy0yMyAgVG9tIFRyb21leSAgPHRyb21leUBy ZWRoYXQuY29tPgorKworKwkqIGR3YXJmMnJlYWQuYyAoc3RydWN0IGR3YXJmMl9wZXJfb2JqZmls ZSkgPG5fdHlwZV9jb21wX3VuaXRzLAorKwl0eXBlX2NvbXBfdW5pdHM+OiBOZXcgZmllbGRzLgor KwkoZHcyX2dldF9jdSk6IE5ldyBmdW5jdGlvbi4KKysJKGNyZWF0ZV9jdXNfZnJvbV9pbmRleCk6 IFJlbW92ZSB1bnVzZWQgYXJndW1lbnQuCisrCShjcmVhdGVfc2lnbmF0dXJlZF90eXBlX2hhc2hf ZnJvbV9pbmRleCk6IE5ldyBmdW5jdGlvbi4KKysJKGNyZWF0ZV9hZGRybWFwX2Zyb21faW5kZXgp OiBVcGRhdGUuCisrCShkd2FyZjJfcmVhZF9pbmRleCk6IEhhbmRsZSB2ZXJzaW9uIDIuCisrCShk dzJfZmluZF9sYXN0X3NvdXJjZV9zeW10YWIsIGR3Ml9mb3JnZXRfY2FjaGVkX3NvdXJjZV9pbmZv KQorKwkoZHcyX2xvb2t1cF9zeW10YWIsIGR3Ml9kb19leHBhbmRfc3ltdGFic19tYXRjaGluZykK KysJKGR3Ml9wcmludF9zdGF0cywgZHcyX2V4cGFuZF9hbGxfc3ltdGFicykKKysJKGR3Ml9leHBh bmRfc3ltdGFic193aXRoX2ZpbGVuYW1lLCBkdzJfZmluZF9zeW1ib2xfZmlsZSkKKysJKGR3Ml9l eHBhbmRfc3ltdGFic19tYXRjaGluZywgZHcyX21hcF9zeW1ib2xfZmlsZW5hbWVzKTogVXBkYXRl LgorKwkoZHdhcmYyX2luaXRpYWxpemVfb2JqZmlsZSk6IENhbGwgY3JlYXRlX2RlYnVnX3R5cGVz X2hhc2hfdGFibGUuCisrCShhbGxvY2F0ZV9zaWduYXR1cmVkX3R5cGVfaGFzaF90YWJsZSk6IE5l dyBmdW5jdGlvbi4KKysJKGFkZF9zaWduYXR1cmVkX3R5cGVfY3VfdG9fbGlzdCk6IExpa2V3aXNl LgorKwkoY3JlYXRlX2RlYnVnX3R5cGVzX2hhc2hfdGFibGUpOiBVc2UgdGhlbS4gIFNldCB0eXBl X2NvbXBfdW5pdHMuCisrCShyZWFkX3NpZ25hdHVyZWRfdHlwZSk6IEVuc3VyZSBzZWN0aW9uIGRh dGEgaXMgYXZhaWxhYmxlLgorKwkoYWRkX2FkZHJlc3NfZW50cnkpOiBEb24ndCByZWNvcmQgZW1w dHkgcmFuZ2VzLgorKwkoc3RydWN0IHNpZ25hdHVyZWRfdHlwZV9pbmRleF9kYXRhKTogTmV3Lgor Kwkod3JpdGVfb25lX3NpZ25hdHVyZWRfdHlwZSk6IE5ldyBmdW5jdGlvbi4KKysJKHdyaXRlX3Bz eW10YWJzX3RvX2luZGV4KTogV3JpdGUgdHlwZSBDVXMuCisrCShzYXZlX2dkYl9pbmRleF9jb21t YW5kKTogVXBkYXRlIGNvbW1lbnQuCisrCShwcm9jZXNzX3R5cGVfY29tcF91bml0KTogTW92ZSBp bml0aXRhbGl6YXRpb24gb2YKKysJZnJvbV9kZWJ1Z190eXBlcy4uLgorKwkoY3JlYXRlX2RlYnVn X3R5cGVzX2hhc2hfdGFibGUpOiAuLi4gaGVyZS4KKysKKyAyMDEwLTA3LTIzICBKYW4gS3JhdG9j aHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisgCisgCSogZ2RiX2djb3JlLnNoICh0 bXBmaWxlKTogUmVtb3ZlIHRoZSB2YXJpYWJsZSwgaXRzIGluaXRpYWxpemF0aW9uLAorSW5kZXg6 IGdkYi03LjIvZ2RiL2R3YXJmMnJlYWQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjIub3JpZy9n ZGIvZHdhcmYycmVhZC5jCTIwMTAtMTAtMTIgMTg6MTA6NDcuMDAwMDAwMDAwICswMjAwCisrKysg Z2RiLTcuMi9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMTAtMTIgMTg6MTE6MTYuMDAwMDAwMDAwICsw MjAwCitAQCAtMTg0LDYgKzE4NCwxMiBAQCBzdHJ1Y3QgZHdhcmYyX3Blcl9vYmpmaWxlCisgICAv KiBUaGUgbnVtYmVyIG9mIGNvbXBpbGF0aW9uIHVuaXRzIGluIEFMTF9DT01QX1VOSVRTLiAgKi8K KyAgIGludCBuX2NvbXBfdW5pdHM7CisgCisrICAvKiBUaGUgbnVtYmVyIG9mIC5kZWJ1Z190eXBl cy1yZWxhdGVkIENVcy4gICovCisrICBpbnQgbl90eXBlX2NvbXBfdW5pdHM7CisrCisrICAvKiBU aGUgLmRlYnVnX3R5cGVzLXJlbGF0ZWQgQ1VzLiAgKi8KKysgIHN0cnVjdCBkd2FyZjJfcGVyX2N1 X2RhdGEgKip0eXBlX2NvbXBfdW5pdHM7CisrCisgICAvKiBBIGNoYWluIG9mIGNvbXBpbGF0aW9u IHVuaXRzIHRoYXQgYXJlIGN1cnJlbnRseSByZWFkIGluLCBzbyB0aGF0CisgICAgICB0aGV5IGNh biBiZSBmcmVlZCBsYXRlci4gICovCisgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpyZWFk X2luX2NoYWluOworQEAgLTEyMjYsNiArMTIzMiw4IEBAIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqc2V0 X2RpZV90eXBlIChzdHJ1Y3QKKyAKKyBzdGF0aWMgdm9pZCBjcmVhdGVfYWxsX2NvbXBfdW5pdHMg KHN0cnVjdCBvYmpmaWxlICopOworIAorK3N0YXRpYyBpbnQgY3JlYXRlX2RlYnVnX3R5cGVzX2hh c2hfdGFibGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsKKysKKyBzdGF0aWMgdm9pZCBsb2Fk X2Z1bGxfY29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICosCisgCQkJCSBzdHJ1 Y3Qgb2JqZmlsZSAqKTsKKyAKK0BAIC0xMjY5LDYgKzEyNzcsOCBAQCBzdGF0aWMgdm9pZCBpbml0 X2N1X2RpZV9yZWFkZXIgKHN0cnVjdCBkCisgc3RhdGljIGNvbnN0IGNoYXIgKmR3YXJmMl9waHlz bmFtZSAoY2hhciAqbmFtZSwgc3RydWN0IGRpZV9pbmZvICpkaWUsCisgCQkJCSAgICBzdHJ1Y3Qg ZHdhcmYyX2N1ICpjdSk7CisgCisrc3RhdGljIGh0YWJfdCBhbGxvY2F0ZV9zaWduYXR1cmVkX3R5 cGVfaGFzaF90YWJsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOworKworICNpZiBXT1JEU19C SUdFTkRJQU4KKyAKKyAvKiBDb252ZXJ0IFZBTFVFIGJldHdlZW4gYmlnLSBhbmQgbGl0dGxlLWVu ZGlhbi4gICovCitAQCAtMTY0Niw2ICsxNjU2LDE4IEBAIGR3Ml9pbnN0YW50aWF0ZV9zeW10YWIg KHN0cnVjdCBvYmpmaWxlICoKKyAgIHJldHVybiBwZXJfY3UtPnYucXVpY2stPnN5bXRhYjsKKyB9 CisgCisrLyogUmV0dXJuIHRoZSBDVSBnaXZlbiBpdHMgaW5kZXguICAqLworK3N0YXRpYyBzdHJ1 Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICoKKytkdzJfZ2V0X2N1IChpbnQgaW5kZXgpCisreworKyAg aWYgKGluZGV4ID49IGR3YXJmMl9wZXJfb2JqZmlsZS0+bl9jb21wX3VuaXRzKQorKyAgICB7Cisr ICAgICAgaW5kZXggLT0gZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHM7CisrICAgICAg cmV0dXJuIGR3YXJmMl9wZXJfb2JqZmlsZS0+dHlwZV9jb21wX3VuaXRzW2luZGV4XTsKKysgICAg fQorKyAgcmV0dXJuIGR3YXJmMl9wZXJfb2JqZmlsZS0+YWxsX2NvbXBfdW5pdHNbaW5kZXhdOwor K30KKysKKyAvKiBBIGhlbHBlciBmdW5jdGlvbiB0aGF0IGtub3dzIGhvdyB0byByZWFkIGEgNjQt Yml0IHZhbHVlIGluIGEgd2F5CisgICAgdGhhdCBkb2Vzbid0IG1ha2UgZ2RiIGRpZS4gIFJldHVy bnMgMSBpZiB0aGUgY29udmVyc2lvbiB3ZW50IG9rLCAwCisgICAgb3RoZXJ3aXNlLiAgKi8KK0BA IC0xNjcyLDExICsxNjk0LDEwIEBAIGV4dHJhY3RfY3VfdmFsdWUgKGNvbnN0IGNoYXIgKmJ5dGVz LCBVTE8KKyAgICB0aGUgQ1Ugb2JqZWN0cyBmb3IgdGhpcyBvYmpmaWxlLiAgUmV0dXJuIDAgaWYg c29tZXRoaW5nIHdlbnQgd3JvbmcsCisgICAgMSBpZiBldmVyeXRoaW5nIHdlbnQgb2suICAqLwor IHN0YXRpYyBpbnQKKy1jcmVhdGVfY3VzX2Zyb21faW5kZXggKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLCBzdHJ1Y3QgbWFwcGVkX2luZGV4ICppbmRleCwKKy0JCSAgICAgICBjb25zdCBnZGJfYnl0 ZSAqY3VfbGlzdCwgb2Zmc2V0X3R5cGUgY3VfbGlzdF9lbGVtZW50cykKKytjcmVhdGVfY3VzX2Zy b21faW5kZXggKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBjb25zdCBnZGJfYnl0ZSAqY3VfbGlz dCwKKysJCSAgICAgICBvZmZzZXRfdHlwZSBjdV9saXN0X2VsZW1lbnRzKQorIHsKKyAgIG9mZnNl dF90eXBlIGk7CistICBjb25zdCBjaGFyICplbnRyeTsKKyAKKyAgIGR3YXJmMl9wZXJfb2JqZmls ZS0+bl9jb21wX3VuaXRzID0gY3VfbGlzdF9lbGVtZW50cyAvIDI7CisgICBkd2FyZjJfcGVyX29i amZpbGUtPmFsbF9jb21wX3VuaXRzCitAQCAtMTcwNyw2ICsxNzI4LDU4IEBAIGNyZWF0ZV9jdXNf ZnJvbV9pbmRleCAoc3RydWN0IG9iamZpbGUgKm8KKyAgIHJldHVybiAxOworIH0KKyAKKysvKiBD cmVhdGUgdGhlIHNpZ25hdHVyZWQgdHlwZSBoYXNoIHRhYmxlIGZyb20gdGhlIGluZGV4LiAgKi8K KytzdGF0aWMgaW50CisrY3JlYXRlX3NpZ25hdHVyZWRfdHlwZV9oYXNoX2Zyb21faW5kZXggKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorKwkJCQkJY29uc3QgZ2RiX2J5dGUgKmJ5dGVzLAorKwkJ CQkJb2Zmc2V0X3R5cGUgZWxlbWVudHMpCisreworKyAgb2Zmc2V0X3R5cGUgaTsKKysgIGh0YWJf dCB0eXBlX2hhc2g7CisrCisrICBkd2FyZjJfcGVyX29iamZpbGUtPm5fdHlwZV9jb21wX3VuaXRz ID0gZWxlbWVudHMgLyAzOworKyAgZHdhcmYyX3Blcl9vYmpmaWxlLT50eXBlX2NvbXBfdW5pdHMK KysgICAgPSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAorKwkJICAg ICBkd2FyZjJfcGVyX29iamZpbGUtPm5fdHlwZV9jb21wX3VuaXRzCisrCQkgICAgICogc2l6ZW9m IChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICopKTsKKysKKysgIHR5cGVfaGFzaCA9IGFsbG9j YXRlX3NpZ25hdHVyZWRfdHlwZV9oYXNoX3RhYmxlIChvYmpmaWxlKTsKKysKKysgIGZvciAoaSA9 IDA7IGkgPCBlbGVtZW50czsgaSArPSAzKQorKyAgICB7CisrICAgICAgc3RydWN0IHNpZ25hdHVy ZWRfdHlwZSAqdHlwZV9zaWc7CisrICAgICAgVUxPTkdFU1Qgb2Zmc2V0LCB0eXBlX29mZnNldCwg c2lnbmF0dXJlOworKyAgICAgIHZvaWQgKipzbG90OworKworKyAgICAgIGlmICghZXh0cmFjdF9j dV92YWx1ZSAoYnl0ZXMsICZvZmZzZXQpCisrCSAgfHwgIWV4dHJhY3RfY3VfdmFsdWUgKGJ5dGVz ICsgOCwgJnR5cGVfb2Zmc2V0KSkKKysJcmV0dXJuIDA7CisrICAgICAgc2lnbmF0dXJlID0gZXh0 cmFjdF91bnNpZ25lZF9pbnRlZ2VyIChieXRlcyArIDE2LCA4LCBCRkRfRU5ESUFOX0xJVFRMRSk7 CisrICAgICAgYnl0ZXMgKz0gMyAqIDg7CisrCisrICAgICAgdHlwZV9zaWcgPSBPQlNUQUNLX1pB TExPQyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKKysJCQkJIHN0cnVjdCBzaWduYXR1cmVk X3R5cGUpOworKyAgICAgIHR5cGVfc2lnLT5zaWduYXR1cmUgPSBzaWduYXR1cmU7CisrICAgICAg dHlwZV9zaWctPm9mZnNldCA9IG9mZnNldDsKKysgICAgICB0eXBlX3NpZy0+dHlwZV9vZmZzZXQg PSB0eXBlX29mZnNldDsKKysgICAgICB0eXBlX3NpZy0+cGVyX2N1LmZyb21fZGVidWdfdHlwZXMg PSAxOworKyAgICAgIHR5cGVfc2lnLT5wZXJfY3Uub2Zmc2V0ID0gb2Zmc2V0OworKyAgICAgIHR5 cGVfc2lnLT5wZXJfY3Uub2JqZmlsZSA9IG9iamZpbGU7CisrICAgICAgdHlwZV9zaWctPnBlcl9j dS52LnF1aWNrCisrCT0gT0JTVEFDS19aQUxMT0MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ss CisrCQkJICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9xdWlja19kYXRhKTsKKysKKysgICAgICBzbG90 ID0gaHRhYl9maW5kX3Nsb3QgKHR5cGVfaGFzaCwgdHlwZV9zaWcsIElOU0VSVCk7CisrICAgICAg KnNsb3QgPSB0eXBlX3NpZzsKKysKKysgICAgICBkd2FyZjJfcGVyX29iamZpbGUtPnR5cGVfY29t cF91bml0c1tpIC8gM10gPSAmdHlwZV9zaWctPnBlcl9jdTsKKysgICAgfQorKworKyAgZHdhcmYy X3Blcl9vYmpmaWxlLT5zaWduYXR1cmVkX3R5cGVzID0gdHlwZV9oYXNoOworKworKyAgcmV0dXJu IDE7CisrfQorKworIC8qIFJlYWQgdGhlIGFkZHJlc3MgbWFwIGRhdGEgZnJvbSB0aGUgbWFwcGVk IGluZGV4LCBhbmQgdXNlIGl0IHRvCisgICAgcG9wdWxhdGUgdGhlIG9iamZpbGUncyBwc3ltdGFi c19hZGRybWFwLiAgKi8KKyBzdGF0aWMgdm9pZAorQEAgLTE3MzgsNyArMTgxMSw3IEBAIGNyZWF0 ZV9hZGRybWFwX2Zyb21faW5kZXggKHN0cnVjdCBvYmpmaWwKKyAgICAgICBpdGVyICs9IDQ7Cisg ICAgICAgCisgICAgICAgYWRkcm1hcF9zZXRfZW1wdHkgKG11dGFibGVfbWFwLCBsbyArIGJhc2Vh ZGRyLCBoaSArIGJhc2VhZGRyIC0gMSwKKy0JCQkgZHdhcmYyX3Blcl9vYmpmaWxlLT5hbGxfY29t cF91bml0c1tjdV9pbmRleF0pOworKwkJCSBkdzJfZ2V0X2N1IChjdV9pbmRleCkpOworICAgICB9 CisgCisgICBvYmpmaWxlLT5wc3ltdGFic19hZGRybWFwID0gYWRkcm1hcF9jcmVhdGVfZml4ZWQg KG11dGFibGVfbWFwLAorQEAgLTE4MDUsOCArMTg3OCw5IEBAIGR3YXJmMl9yZWFkX2luZGV4IChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmkKKyAgIGNoYXIgKmFkZHI7CisgICBzdHJ1Y3QgbWFwcGVkX2lu ZGV4ICptYXA7CisgICBvZmZzZXRfdHlwZSAqbWV0YWRhdGE7CistICBjb25zdCBnZGJfYnl0ZSAq Y3VfbGlzdDsKKy0gIG9mZnNldF90eXBlIGN1X2xpc3RfZWxlbWVudHM7CisrICBjb25zdCBnZGJf Ynl0ZSAqY3VfbGlzdCwgKnR5cGVzX2xpc3Q7CisrICBvZmZzZXRfdHlwZSB2ZXJzaW9uLCBjdV9s aXN0X2VsZW1lbnRzLCB0eXBlc19saXN0X2VsZW1lbnRzOworKyAgaW50IGk7CisgCisgICBpZiAo ZHdhcmYyX3Blcl9vYmpmaWxlLT5nZGJfaW5kZXguYXNlY3Rpb24gPT0gTlVMTAorICAgICAgIHx8 IGR3YXJmMl9wZXJfb2JqZmlsZS0+Z2RiX2luZGV4LnNpemUgPT0gMCkKK0BAIC0xODIyLDI2ICsx ODk2LDU4IEBAIGR3YXJmMl9yZWFkX2luZGV4IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmkKKyAKKyAg IGFkZHIgPSBkd2FyZjJfcGVyX29iamZpbGUtPmdkYl9pbmRleC5idWZmZXI7CisgICAvKiBWZXJz aW9uIGNoZWNrLiAgKi8KKy0gIGlmIChNQVlCRV9TV0FQICgqKG9mZnNldF90eXBlICopIGFkZHIp ICE9IDEpCisrICB2ZXJzaW9uID0gTUFZQkVfU1dBUCAoKihvZmZzZXRfdHlwZSAqKSBhZGRyKTsK KysgIGlmICh2ZXJzaW9uID09IDEpCisrICAgIHsKKysgICAgICAvKiBJbmRleCB2ZXJzaW9uIDEg bmVnbGVjdGVkIHRvIGFjY291bnQgZm9yIC5kZWJ1Z190eXBlcy4gIFNvLAorKwkgaWYgd2Ugc2Vl IC5kZWJ1Z190eXBlcywgd2UgY2Fubm90IHVzZSB0aGlzIGluZGV4LiAgKi8KKysgICAgICBpZiAo ZHdhcmYyX3Blcl9vYmpmaWxlLT50eXBlcy5hc2VjdGlvbiAhPSBOVUxMCisrCSAgJiYgZHdhcmYy X3Blcl9vYmpmaWxlLT50eXBlcy5zaXplICE9IDApCisrCXJldHVybiAwOworKyAgICB9CisrICBl bHNlIGlmICh2ZXJzaW9uICE9IDIpCisgICAgIHJldHVybiAwOworIAorICAgbWFwID0gT0JTVEFD S19aQUxMT0MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHN0cnVjdCBtYXBwZWRfaW5kZXgp OworICAgbWFwLT50b3RhbF9zaXplID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5nZGJfaW5kZXguc2l6 ZTsKKyAKKyAgIG1ldGFkYXRhID0gKG9mZnNldF90eXBlICopIChhZGRyICsgc2l6ZW9mIChvZmZz ZXRfdHlwZSkpOworLSAgY3VfbGlzdCA9IGFkZHIgKyBNQVlCRV9TV0FQIChtZXRhZGF0YVswXSk7 CistICBjdV9saXN0X2VsZW1lbnRzID0gKChNQVlCRV9TV0FQIChtZXRhZGF0YVsxXSkgLSBNQVlC RV9TV0FQIChtZXRhZGF0YVswXSkpCisrCisrICBpID0gMDsKKysgIGN1X2xpc3QgPSBhZGRyICsg TUFZQkVfU1dBUCAobWV0YWRhdGFbaV0pOworKyAgY3VfbGlzdF9lbGVtZW50cyA9ICgoTUFZQkVf U1dBUCAobWV0YWRhdGFbaSArIDFdKSAtIE1BWUJFX1NXQVAgKG1ldGFkYXRhW2ldKSkKKyAJCSAg ICAgIC8gOCk7CistICBtYXAtPmFkZHJlc3NfdGFibGUgPSBhZGRyICsgTUFZQkVfU1dBUCAobWV0 YWRhdGFbMV0pOworLSAgbWFwLT5hZGRyZXNzX3RhYmxlX3NpemUgPSAoTUFZQkVfU1dBUCAobWV0 YWRhdGFbMl0pCistCQkJICAgICAtIE1BWUJFX1NXQVAgKG1ldGFkYXRhWzFdKSk7CistICBtYXAt PmluZGV4X3RhYmxlID0gKG9mZnNldF90eXBlICopIChhZGRyICsgTUFZQkVfU1dBUCAobWV0YWRh dGFbMl0pKTsKKy0gIG1hcC0+aW5kZXhfdGFibGVfc2xvdHMgPSAoKE1BWUJFX1NXQVAgKG1ldGFk YXRhWzNdKQorLQkJCSAgICAgLSBNQVlCRV9TV0FQIChtZXRhZGF0YVsyXSkpCisrICArK2k7Cisr CisrICBpZiAodmVyc2lvbiA9PSAyKQorKyAgICB7CisrICAgICAgdHlwZXNfbGlzdCA9IGFkZHIg KyBNQVlCRV9TV0FQIChtZXRhZGF0YVtpXSk7CisrICAgICAgdHlwZXNfbGlzdF9lbGVtZW50cyA9 ICgoTUFZQkVfU1dBUCAobWV0YWRhdGFbaSArIDFdKQorKwkJCSAgICAgIC0gTUFZQkVfU1dBUCAo bWV0YWRhdGFbaV0pKQorKwkJCSAgICAgLyA4KTsKKysgICAgICArK2k7CisrICAgIH0KKysKKysg IG1hcC0+YWRkcmVzc190YWJsZSA9IGFkZHIgKyBNQVlCRV9TV0FQIChtZXRhZGF0YVtpXSk7Cisr ICBtYXAtPmFkZHJlc3NfdGFibGVfc2l6ZSA9IChNQVlCRV9TV0FQIChtZXRhZGF0YVtpICsgMV0p CisrCQkJICAgICAtIE1BWUJFX1NXQVAgKG1ldGFkYXRhW2ldKSk7CisrICArK2k7CisrCisrICBt YXAtPmluZGV4X3RhYmxlID0gKG9mZnNldF90eXBlICopIChhZGRyICsgTUFZQkVfU1dBUCAobWV0 YWRhdGFbaV0pKTsKKysgIG1hcC0+aW5kZXhfdGFibGVfc2xvdHMgPSAoKE1BWUJFX1NXQVAgKG1l dGFkYXRhW2kgKyAxXSkKKysJCQkgICAgIC0gTUFZQkVfU1dBUCAobWV0YWRhdGFbaV0pKQorIAkJ CSAgICAvICgyICogc2l6ZW9mIChvZmZzZXRfdHlwZSkpKTsKKy0gIG1hcC0+Y29uc3RhbnRfcG9v bCA9IGFkZHIgKyBNQVlCRV9TV0FQIChtZXRhZGF0YVszXSk7CisrICArK2k7CisgCistICBpZiAo IWNyZWF0ZV9jdXNfZnJvbV9pbmRleCAob2JqZmlsZSwgbWFwLCBjdV9saXN0LCBjdV9saXN0X2Vs ZW1lbnRzKSkKKysgIG1hcC0+Y29uc3RhbnRfcG9vbCA9IGFkZHIgKyBNQVlCRV9TV0FQIChtZXRh ZGF0YVtpXSk7CisrCisrICBpZiAoIWNyZWF0ZV9jdXNfZnJvbV9pbmRleCAob2JqZmlsZSwgY3Vf bGlzdCwgY3VfbGlzdF9lbGVtZW50cykpCisrICAgIHJldHVybiAwOworKworKyAgaWYgKHZlcnNp b24gPT0gMgorKyAgICAgICYmIHR5cGVzX2xpc3RfZWxlbWVudHMKKysgICAgICAmJiAhY3JlYXRl X3NpZ25hdHVyZWRfdHlwZV9oYXNoX2Zyb21faW5kZXggKG9iamZpbGUsIHR5cGVzX2xpc3QsCisr CQkJCQkJICB0eXBlc19saXN0X2VsZW1lbnRzKSkKKyAgICAgcmV0dXJuIDA7CisgCisgICBjcmVh dGVfYWRkcm1hcF9mcm9tX2luZGV4IChvYmpmaWxlLCBtYXApOworQEAgLTE5NjgsOCArMjA3NCw3 IEBAIGR3Ml9maW5kX2xhc3Rfc291cmNlX3N5bXRhYiAoc3RydWN0IG9iamYKKyAgIGludCBpbmRl eDsKKyAgIGR3Ml9zZXR1cCAob2JqZmlsZSk7CisgICBpbmRleCA9IGR3YXJmMl9wZXJfb2JqZmls ZS0+bl9jb21wX3VuaXRzIC0gMTsKKy0gIHJldHVybiBkdzJfaW5zdGFudGlhdGVfc3ltdGFiIChv YmpmaWxlLAorLQkJCQkgZHdhcmYyX3Blcl9vYmpmaWxlLT5hbGxfY29tcF91bml0c1tpbmRleF0p OworKyAgcmV0dXJuIGR3Ml9pbnN0YW50aWF0ZV9zeW10YWIgKG9iamZpbGUsIGR3Ml9nZXRfY3Ug KGluZGV4KSk7CisgfQorIAorIHN0YXRpYyB2b2lkCitAQCAtMTk3OCw5ICsyMDgzLDEwIEBAIGR3 Ml9mb3JnZXRfY2FjaGVkX3NvdXJjZV9pbmZvIChzdHJ1Y3Qgb2IKKyAgIGludCBpOworIAorICAg ZHcyX3NldHVwIChvYmpmaWxlKTsKKy0gIGZvciAoaSA9IDA7IGkgPCBkd2FyZjJfcGVyX29iamZp bGUtPm5fY29tcF91bml0czsgKytpKQorKyAgZm9yIChpID0gMDsgaSA8IChkd2FyZjJfcGVyX29i amZpbGUtPm5fY29tcF91bml0cworKwkJICAgKyBkd2FyZjJfcGVyX29iamZpbGUtPm5fdHlwZV9j b21wX3VuaXRzKTsgKytpKQorICAgICB7CistICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0 YSAqY3UgPSBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzW2ldOworKyAgICAgIHN0 cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1ID0gZHcyX2dldF9jdSAoaSk7CisgCisgICAgICAg aWYgKGN1LT52LnF1aWNrLT5mdWxsX25hbWVzKQorIAl7CitAQCAtMjAwMiwxMCArMjEwOCwxMSBA QCBkdzJfbG9va3VwX3N5bXRhYiAoc3RydWN0IG9iamZpbGUgKm9iamZpCisgICBzdHJ1Y3QgZHdh cmYyX3Blcl9jdV9kYXRhICpiYXNlX2N1ID0gTlVMTDsKKyAKKyAgIGR3Ml9zZXR1cCAob2JqZmls ZSk7CistICBmb3IgKGkgPSAwOyBpIDwgZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHM7 ICsraSkKKysgIGZvciAoaSA9IDA7IGkgPCAoZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5p dHMKKysJCSAgICsgZHdhcmYyX3Blcl9vYmpmaWxlLT5uX3R5cGVfY29tcF91bml0cyk7ICsraSkK KyAgICAgeworICAgICAgIGludCBqOworLSAgICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEg KmN1ID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5hbGxfY29tcF91bml0c1tpXTsKKysgICAgICBzdHJ1 Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpjdSA9IGR3Ml9nZXRfY3UgKGkpOworIAorICAgICAgIGlm IChjdS0+di5xdWljay0+c3ltdGFiKQorIAljb250aW51ZTsKK0BAIC0yMDk3LDggKzIyMDQsOCBA QCBkdzJfZG9fZXhwYW5kX3N5bXRhYnNfbWF0Y2hpbmcgKHN0cnVjdCBvCisgCSAgZm9yIChpID0g MDsgaSA8IGxlbjsgKytpKQorIAkgICAgeworIAkgICAgICBvZmZzZXRfdHlwZSBjdV9pbmRleCA9 IE1BWUJFX1NXQVAgKHZlY1tpICsgMV0pOworLQkgICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9k YXRhICpjdTsKKy0JICAgICAgY3UgPSBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRz W2N1X2luZGV4XTsKKysJICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqY3UgPSBkdzJf Z2V0X2N1IChjdV9pbmRleCk7CisrCisgCSAgICAgIGR3Ml9pbnN0YW50aWF0ZV9zeW10YWIgKG9i amZpbGUsIGN1KTsKKyAJICAgIH0KKyAJfQorQEAgLTIxMjAsOSArMjIyNywxMCBAQCBkdzJfcHJp bnRfc3RhdHMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlCisgCisgICBkdzJfc2V0dXAgKG9iamZp bGUpOworICAgY291bnQgPSAwOworLSAgZm9yIChpID0gMDsgaSA8IGR3YXJmMl9wZXJfb2JqZmls ZS0+bl9jb21wX3VuaXRzOyArK2kpCisrICBmb3IgKGkgPSAwOyBpIDwgKGR3YXJmMl9wZXJfb2Jq ZmlsZS0+bl9jb21wX3VuaXRzCisrCQkgICArIGR3YXJmMl9wZXJfb2JqZmlsZS0+bl90eXBlX2Nv bXBfdW5pdHMpOyArK2kpCisgICAgIHsKKy0gICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRh ICpjdSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+YWxsX2NvbXBfdW5pdHNbaV07CisrICAgICAgc3Ry dWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqY3UgPSBkdzJfZ2V0X2N1IChpKTsKKyAKKyAgICAgICBp ZiAoIWN1LT52LnF1aWNrLT5zeW10YWIpCisgCSsrY291bnQ7CitAQCAtMjE1Niw5ICsyMjY0LDEx IEBAIGR3Ml9leHBhbmRfYWxsX3N5bXRhYnMgKHN0cnVjdCBvYmpmaWxlICoKKyAgIGludCBpOwor IAorICAgZHcyX3NldHVwIChvYmpmaWxlKTsKKy0gIGZvciAoaSA9IDA7IGkgPCBkd2FyZjJfcGVy X29iamZpbGUtPm5fY29tcF91bml0czsgKytpKQorKworKyAgZm9yIChpID0gMDsgaSA8IChkd2Fy ZjJfcGVyX29iamZpbGUtPm5fY29tcF91bml0cworKwkJICAgKyBkd2FyZjJfcGVyX29iamZpbGUt Pm5fdHlwZV9jb21wX3VuaXRzKTsgKytpKQorICAgICB7CistICAgICAgc3RydWN0IGR3YXJmMl9w ZXJfY3VfZGF0YSAqY3UgPSBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzW2ldOwor KyAgICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1ID0gZHcyX2dldF9jdSAoaSk7Cisg CisgICAgICAgZHcyX2luc3RhbnRpYXRlX3N5bXRhYiAob2JqZmlsZSwgY3UpOworICAgICB9CitA QCAtMjE3MSwxMCArMjI4MSwxMSBAQCBkdzJfZXhwYW5kX3N5bXRhYnNfd2l0aF9maWxlbmFtZSAo c3RydWN0CisgICBpbnQgaTsKKyAKKyAgIGR3Ml9zZXR1cCAob2JqZmlsZSk7CistICBmb3IgKGkg PSAwOyBpIDwgZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHM7ICsraSkKKysgIGZvciAo aSA9IDA7IGkgPCAoZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHMKKysJCSAgICsgZHdh cmYyX3Blcl9vYmpmaWxlLT5uX3R5cGVfY29tcF91bml0cyk7ICsraSkKKyAgICAgeworICAgICAg IGludCBqOworLSAgICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1ID0gZHdhcmYyX3Bl cl9vYmpmaWxlLT5hbGxfY29tcF91bml0c1tpXTsKKysgICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9j dV9kYXRhICpjdSA9IGR3Ml9nZXRfY3UgKGkpOworIAorICAgICAgIGlmIChjdS0+di5xdWljay0+ c3ltdGFiKQorIAljb250aW51ZTsKK0BAIC0yMjE1LDcgKzIzMjYsNyBAQCBkdzJfZmluZF9zeW1i b2xfZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iCisgICAgICBzaG91bGQgYmUgcmV3cml0dGVuIHNv IHRoYXQgaXQgZG9lc24ndCByZXF1aXJlIGEgY3VzdG9tIGhvb2suICBJdAorICAgICAgY291bGQg anVzdCB1c2UgdGhlIG9yZGluYXJ5IHN5bWJvbCB0YWJsZXMuICAqLworICAgLyogdmVjWzBdIGlz IHRoZSBsZW5ndGgsIHdoaWNoIG11c3QgYWx3YXlzIGJlID4wLiAgKi8KKy0gIGN1ID0gZHdhcmYy X3Blcl9vYmpmaWxlLT5hbGxfY29tcF91bml0c1tNQVlCRV9TV0FQICh2ZWNbMV0pXTsKKysgIGN1 ID0gZHcyX2dldF9jdSAoTUFZQkVfU1dBUCAodmVjWzFdKSk7CisgCisgICBkdzJfcmVxdWlyZV9s aW5lX2hlYWRlciAob2JqZmlsZSwgY3UpOworICAgaWYgKCFjdS0+di5xdWljay0+bGluZXMpCitA QCAtMjI1MywxMCArMjM2NCwxMSBAQCBkdzJfZXhwYW5kX3N5bXRhYnNfbWF0Y2hpbmcgKHN0cnVj dCBvYmpmCisgICBpZiAoIWR3YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGUpCisgICAgIHJl dHVybjsKKyAKKy0gIGZvciAoaSA9IDA7IGkgPCBkd2FyZjJfcGVyX29iamZpbGUtPm5fY29tcF91 bml0czsgKytpKQorKyAgZm9yIChpID0gMDsgaSA8IChkd2FyZjJfcGVyX29iamZpbGUtPm5fY29t cF91bml0cworKwkJICAgKyBkd2FyZjJfcGVyX29iamZpbGUtPm5fdHlwZV9jb21wX3VuaXRzKTsg KytpKQorICAgICB7CisgICAgICAgaW50IGo7CistICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3Vf ZGF0YSAqY3UgPSBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzW2ldOworKyAgICAg IHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1ID0gZHcyX2dldF9jdSAoaSk7CisgCisgICAg ICAgY3UtPnYucXVpY2stPm1hcmsgPSAwOworICAgICAgIGlmIChjdS0+di5xdWljay0+c3ltdGFi KQorQEAgLTIzMDEsOCArMjQxMyw5IEBAIGR3Ml9leHBhbmRfc3ltdGFic19tYXRjaGluZyAoc3Ry dWN0IG9iamYKKyAgICAgICB2ZWNfbGVuID0gTUFZQkVfU1dBUCAodmVjWzBdKTsKKyAgICAgICBm b3IgKHZlY19pZHggPSAwOyB2ZWNfaWR4IDwgdmVjX2xlbjsgKyt2ZWNfaWR4KQorIAl7CistCSAg c3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqY3UKKy0JICAgID0gZHdhcmYyX3Blcl9vYmpmaWxl LT5hbGxfY29tcF91bml0c1tNQVlCRV9TV0FQICh2ZWNbdmVjX2lkeCArIDFdKV07CisrCSAgc3Ry dWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqY3U7CisrCisrCSAgY3UgPSBkdzJfZ2V0X2N1IChNQVlC RV9TV0FQICh2ZWNbdmVjX2lkeCArIDFdKSk7CisgCSAgaWYgKGN1LT52LnF1aWNrLT5tYXJrKQor IAkgICAgZHcyX2luc3RhbnRpYXRlX3N5bXRhYiAob2JqZmlsZSwgY3UpOworIAl9CitAQCAtMjM3 MiwxMCArMjQ4NSwxMSBAQCBkdzJfbWFwX3N5bWJvbF9maWxlbmFtZXMgKHN0cnVjdCBvYmpmaWxl CisgICBpbnQgaTsKKyAKKyAgIGR3Ml9zZXR1cCAob2JqZmlsZSk7CistICBmb3IgKGkgPSAwOyBp IDwgZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHM7ICsraSkKKysgIGZvciAoaSA9IDA7 IGkgPCAoZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHMKKysJCSAgICsgZHdhcmYyX3Bl cl9vYmpmaWxlLT5uX3R5cGVfY29tcF91bml0cyk7ICsraSkKKyAgICAgeworICAgICAgIGludCBq OworLSAgICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1ID0gZHdhcmYyX3Blcl9vYmpm aWxlLT5hbGxfY29tcF91bml0c1tpXTsKKysgICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRh ICpjdSA9IGR3Ml9nZXRfY3UgKGkpOworIAorICAgICAgIGlmIChjdS0+di5xdWljay0+c3ltdGFi KQorIAljb250aW51ZTsKK0BAIC0yNDM2LDEwICsyNTUwLDEyIEBAIGR3YXJmMl9pbml0aWFsaXpl X29iamZpbGUgKHN0cnVjdCBvYmpmaWwKKyAKKyAgICAgICBkd2FyZjJfcGVyX29iamZpbGUtPnVz aW5nX2luZGV4ID0gMTsKKyAgICAgICBjcmVhdGVfYWxsX2NvbXBfdW5pdHMgKG9iamZpbGUpOwor KyAgICAgIGNyZWF0ZV9kZWJ1Z190eXBlc19oYXNoX3RhYmxlIChvYmpmaWxlKTsKKyAKKy0gICAg ICBmb3IgKGkgPSAwOyBpIDwgZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHM7ICsraSkK KysgICAgICBmb3IgKGkgPSAwOyBpIDwgKGR3YXJmMl9wZXJfb2JqZmlsZS0+bl9jb21wX3VuaXRz CisrCQkgICAgICAgKyBkd2FyZjJfcGVyX29iamZpbGUtPm5fdHlwZV9jb21wX3VuaXRzKTsgKytp KQorIAl7CistCSAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqY3UgPSBkd2FyZjJfcGVyX29i amZpbGUtPmFsbF9jb21wX3VuaXRzW2ldOworKwkgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEg KmN1ID0gZHcyX2dldF9jdSAoaSk7CisgCisgCSAgY3UtPnYucXVpY2sgPSBPQlNUQUNLX1pBTExP QyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKKyAJCQkJCXN0cnVjdCBkd2FyZjJfcGVyX2N1 X3F1aWNrX2RhdGEpOworQEAgLTI2NTMsNiArMjc2OSwzNCBAQCBlcV90eXBlX3NpZ25hdHVyZSAo Y29uc3Qgdm9pZCAqaXRlbV9saHMsCisgICByZXR1cm4gbGhzLT5zaWduYXR1cmUgPT0gcmhzLT5z aWduYXR1cmU7CisgfQorIAorKy8qIEFsbG9jYXRlIGEgaGFzaCB0YWJsZSBmb3Igc2lnbmF0dXJl ZCB0eXBlcy4gICovCisrCisrc3RhdGljIGh0YWJfdAorK2FsbG9jYXRlX3NpZ25hdHVyZWRfdHlw ZV9oYXNoX3RhYmxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyt7CisrICByZXR1cm4gaHRh Yl9jcmVhdGVfYWxsb2NfZXggKDQxLAorKwkJCSAgICAgICBoYXNoX3R5cGVfc2lnbmF0dXJlLAor KwkJCSAgICAgICBlcV90eXBlX3NpZ25hdHVyZSwKKysJCQkgICAgICAgTlVMTCwKKysJCQkgICAg ICAgJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKKysJCQkgICAgICAgaGFzaHRhYl9vYnN0YWNr X2FsbG9jYXRlLAorKwkJCSAgICAgICBkdW1teV9vYnN0YWNrX2RlYWxsb2NhdGUpOworK30KKysK KysvKiBBIGhlbHBlciBmdW5jdGlvbiB0byBhZGQgYSBzaWduYXR1cmVkIHR5cGUgQ1UgdG8gYSBs aXN0LiAgKi8KKysKKytzdGF0aWMgaW50CisrYWRkX3NpZ25hdHVyZWRfdHlwZV9jdV90b19saXN0 ICh2b2lkICoqc2xvdCwgdm9pZCAqZGF0dW0pCisreworKyAgc3RydWN0IHNpZ25hdHVyZWRfdHlw ZSAqc2lndCA9ICpzbG90OworKyAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqKipkYXRhcCA9 IGRhdHVtOworKworKyAgKipkYXRhcCA9ICZzaWd0LT5wZXJfY3U7CisrICArKypkYXRhcDsKKysK KysgIHJldHVybiAxOworK30KKysKKyAvKiBDcmVhdGUgdGhlIGhhc2ggdGFibGUgb2YgYWxsIGVu dHJpZXMgaW4gdGhlIC5kZWJ1Z190eXBlcyBzZWN0aW9uLgorICAgIFRoZSByZXN1bHQgaXMgemVy byBpZiB0aGVyZSBpcyBhbiBlcnJvciAoZS5nLiBtaXNzaW5nIC5kZWJ1Z190eXBlcyBzZWN0aW9u KSwKKyAgICBvdGhlcndpc2Ugbm9uLXplcm8uCSovCitAQCAtMjY2Miw2ICsyODA2LDcgQEAgY3Jl YXRlX2RlYnVnX3R5cGVzX2hhc2hfdGFibGUgKHN0cnVjdCBvYgorIHsKKyAgIGdkYl9ieXRlICpp bmZvX3B0cjsKKyAgIGh0YWJfdCB0eXBlc19odGFiOworKyAgc3RydWN0IGR3YXJmMl9wZXJfY3Vf ZGF0YSAqKml0ZXI7CisgCisgICBkd2FyZjJfcmVhZF9zZWN0aW9uIChvYmpmaWxlLCAmZHdhcmYy X3Blcl9vYmpmaWxlLT50eXBlcyk7CisgICBpbmZvX3B0ciA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+ dHlwZXMuYnVmZmVyOworQEAgLTI2NzIsMTMgKzI4MTcsNyBAQCBjcmVhdGVfZGVidWdfdHlwZXNf aGFzaF90YWJsZSAoc3RydWN0IG9iCisgICAgICAgcmV0dXJuIDA7CisgICAgIH0KKyAKKy0gIHR5 cGVzX2h0YWIgPSBodGFiX2NyZWF0ZV9hbGxvY19leCAoNDEsCistCQkJCSAgICAgaGFzaF90eXBl X3NpZ25hdHVyZSwKKy0JCQkJICAgICBlcV90eXBlX3NpZ25hdHVyZSwKKy0JCQkJICAgICBOVUxM LAorLQkJCQkgICAgICZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCistCQkJCSAgICAgaGFzaHRh Yl9vYnN0YWNrX2FsbG9jYXRlLAorLQkJCQkgICAgIGR1bW15X29ic3RhY2tfZGVhbGxvY2F0ZSk7 CisrICB0eXBlc19odGFiID0gYWxsb2NhdGVfc2lnbmF0dXJlZF90eXBlX2hhc2hfdGFibGUgKG9i amZpbGUpOworIAorICAgaWYgKGR3YXJmMl9kaWVfZGVidWcpCisgICAgIGZwcmludGZfdW5maWx0 ZXJlZCAoZ2RiX3N0ZGxvZywgIlNpZ25hdHVyZWQgdHlwZXM6XG4iKTsKK0BAIC0yNzI2LDYgKzI4 NjUsNyBAQCBjcmVhdGVfZGVidWdfdHlwZXNfaGFzaF90YWJsZSAoc3RydWN0IG9iCisgICAgICAg dHlwZV9zaWctPm9mZnNldCA9IG9mZnNldDsKKyAgICAgICB0eXBlX3NpZy0+dHlwZV9vZmZzZXQg PSB0eXBlX29mZnNldDsKKyAgICAgICB0eXBlX3NpZy0+cGVyX2N1Lm9iamZpbGUgPSBvYmpmaWxl OworKyAgICAgIHR5cGVfc2lnLT5wZXJfY3UuZnJvbV9kZWJ1Z190eXBlcyA9IDE7CisgCisgICAg ICAgc2xvdCA9IGh0YWJfZmluZF9zbG90ICh0eXBlc19odGFiLCB0eXBlX3NpZywgSU5TRVJUKTsK KyAgICAgICBnZGJfYXNzZXJ0IChzbG90ICE9IE5VTEwpOworQEAgLTI3NDAsNiArMjg4MCwxNiBA QCBjcmVhdGVfZGVidWdfdHlwZXNfaGFzaF90YWJsZSAoc3RydWN0IG9iCisgCisgICBkd2FyZjJf cGVyX29iamZpbGUtPnNpZ25hdHVyZWRfdHlwZXMgPSB0eXBlc19odGFiOworIAorKyAgZHdhcmYy X3Blcl9vYmpmaWxlLT5uX3R5cGVfY29tcF91bml0cyA9IGh0YWJfZWxlbWVudHMgKHR5cGVzX2h0 YWIpOworKyAgZHdhcmYyX3Blcl9vYmpmaWxlLT50eXBlX2NvbXBfdW5pdHMKKysgICAgPSBvYnN0 YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAorKwkJICAgICBkd2FyZjJfcGVy X29iamZpbGUtPm5fdHlwZV9jb21wX3VuaXRzCisrCQkgICAgICogc2l6ZW9mIChzdHJ1Y3QgZHdh cmYyX3Blcl9jdV9kYXRhICopKTsKKysgIGl0ZXIgPSAmZHdhcmYyX3Blcl9vYmpmaWxlLT50eXBl X2NvbXBfdW5pdHNbMF07CisrICBodGFiX3RyYXZlcnNlX25vcmVzaXplICh0eXBlc19odGFiLCBh ZGRfc2lnbmF0dXJlZF90eXBlX2N1X3RvX2xpc3QsICZpdGVyKTsKKysgIGdkYl9hc3NlcnQgKGl0 ZXIgLSAmZHdhcmYyX3Blcl9vYmpmaWxlLT50eXBlX2NvbXBfdW5pdHNbMF0KKysJICAgICAgPT0g ZHdhcmYyX3Blcl9vYmpmaWxlLT5uX3R5cGVfY29tcF91bml0cyk7CisrCisgICByZXR1cm4gMTsK KyB9CisgCitAQCAtMzAwOCw3ICszMTU4LDYgQEAgcHJvY2Vzc190eXBlX2NvbXBfdW5pdCAodm9p ZCAqKnNsb3QsIHZvaQorICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqdGhpc19jdTsKKyAK KyAgIHRoaXNfY3UgPSAmZW50cnktPnBlcl9jdTsKKy0gIHRoaXNfY3UtPmZyb21fZGVidWdfdHlw ZXMgPSAxOworIAorICAgZ2RiX2Fzc2VydCAoZHdhcmYyX3Blcl9vYmpmaWxlLT50eXBlcy5yZWFk aW4pOworICAgcHJvY2Vzc19wc3ltdGFiX2NvbXBfdW5pdCAob2JqZmlsZSwgdGhpc19jdSwKK0BA IC0xMjQ4MywxMyArMTI2MzIsMTYgQEAgc3RhdGljIHZvaWQKKyByZWFkX3NpZ25hdHVyZWRfdHlw ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisgCQkgICAgICBzdHJ1Y3Qgc2lnbmF0dXJlZF90 eXBlICp0eXBlX3NpZykKKyB7CistICBnZGJfYnl0ZSAqdHlwZXNfcHRyID0gZHdhcmYyX3Blcl9v YmpmaWxlLT50eXBlcy5idWZmZXIgKyB0eXBlX3NpZy0+b2Zmc2V0OworKyAgZ2RiX2J5dGUgKnR5 cGVzX3B0cjsKKyAgIHN0cnVjdCBkaWVfcmVhZGVyX3NwZWNzIHJlYWRlcl9zcGVjczsKKyAgIHN0 cnVjdCBkd2FyZjJfY3UgKmN1OworICAgVUxPTkdFU1Qgc2lnbmF0dXJlOworICAgc3RydWN0IGNs ZWFudXAgKmJhY2tfdG8sICpmcmVlX2N1X2NsZWFudXA7CisgICBzdHJ1Y3QgYXR0cmlidXRlICph dHRyOworIAorKyAgZHdhcmYyX3JlYWRfc2VjdGlvbiAob2JqZmlsZSwgJmR3YXJmMl9wZXJfb2Jq ZmlsZS0+dHlwZXMpOworKyAgdHlwZXNfcHRyID0gZHdhcmYyX3Blcl9vYmpmaWxlLT50eXBlcy5i dWZmZXIgKyB0eXBlX3NpZy0+b2Zmc2V0OworKworICAgZ2RiX2Fzc2VydCAodHlwZV9zaWctPnBl cl9jdS5jdSA9PSBOVUxMKTsKKyAKKyAgIGN1ID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgZHdh cmYyX2N1KSk7CitAQCAtMTQ0MDIsNiArMTQ1NTQsMTAgQEAgYWRkX2FkZHJlc3NfZW50cnkgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaQorICAgY2hhciBhZGRyWzhdOworICAgQ09SRV9BRERSIGJhc2Vh ZGRyOworIAorKyAgLyogRG9uJ3QgYm90aGVyIHJlY29yZGluZyBlbXB0eSByYW5nZXMuICAqLwor KyAgaWYgKHBzdC0+dGV4dGxvdyA9PSBwc3QtPnRleHRoaWdoKQorKyAgICByZXR1cm47CisrCisg ICBiYXNlYWRkciA9IEFOT0ZGU0VUIChvYmpmaWxlLT5zZWN0aW9uX29mZnNldHMsIFNFQ1RfT0ZG X1RFWFQgKG9iamZpbGUpKTsKKyAKKyAgIHN0b3JlX3Vuc2lnbmVkX2ludGVnZXIgKGFkZHIsIDgs IEJGRF9FTkRJQU5fTElUVExFLCBwc3QtPnRleHRsb3cgLSBiYXNlYWRkcik7CitAQCAtMTQ0NDcs MTMgKzE0NjAzLDUzIEBAIHVubGlua19pZl9zZXQgKHZvaWQgKnApCisgICAgIHVubGluayAoKmZp bGVuYW1lKTsKKyB9CisgCisrLyogQSBoZWxwZXIgc3RydWN0IHVzZWQgd2hlbiBpdGVyYXRpbmcg b3ZlciBkZWJ1Z190eXBlcy4gICovCisrc3RydWN0IHNpZ25hdHVyZWRfdHlwZV9pbmRleF9kYXRh CisreworKyAgc3RydWN0IG9iamZpbGUgKm9iamZpbGU7CisrICBzdHJ1Y3QgbWFwcGVkX3N5bXRh YiAqc3ltdGFiOworKyAgc3RydWN0IG9ic3RhY2sgKnR5cGVzX2xpc3Q7CisrICBpbnQgY3VfaW5k ZXg7CisrfTsKKysKKysvKiBBIGhlbHBlciBmdW5jdGlvbiB0aGF0IHdyaXRlcyBhIHNpbmdsZSBz aWduYXR1cmVkX3R5cGUgdG8gYW4KKysgICBvYnN0YWNrLiAgKi8KKytzdGF0aWMgaW50Cisrd3Jp dGVfb25lX3NpZ25hdHVyZWRfdHlwZSAodm9pZCAqKnNsb3QsIHZvaWQgKmQpCisreworKyAgc3Ry dWN0IHNpZ25hdHVyZWRfdHlwZV9pbmRleF9kYXRhICppbmZvID0gZDsKKysgIHN0cnVjdCBzaWdu YXR1cmVkX3R5cGUgKmVudHJ5ID0gKHN0cnVjdCBzaWduYXR1cmVkX3R5cGUgKikgKnNsb3Q7Cisr ICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpjdSA9ICZlbnRyeS0+cGVyX2N1OworKyAgc3Ry dWN0IHBhcnRpYWxfc3ltdGFiICpwc3ltdGFiID0gY3UtPnYucHN5bXRhYjsKKysgIGdkYl9ieXRl IHZhbFs4XTsKKysKKysgIHdyaXRlX3BzeW1ib2xzIChpbmZvLT5zeW10YWIsCisrCQkgIGluZm8t Pm9iamZpbGUtPmdsb2JhbF9wc3ltYm9scy5saXN0ICsgcHN5bXRhYi0+Z2xvYmFsc19vZmZzZXQs CisrCQkgIHBzeW10YWItPm5fZ2xvYmFsX3N5bXMsIGluZm8tPmN1X2luZGV4KTsKKysgIHdyaXRl X3BzeW1ib2xzIChpbmZvLT5zeW10YWIsCisrCQkgIGluZm8tPm9iamZpbGUtPnN0YXRpY19wc3lt Ym9scy5saXN0ICsgcHN5bXRhYi0+c3RhdGljc19vZmZzZXQsCisrCQkgIHBzeW10YWItPm5fc3Rh dGljX3N5bXMsIGluZm8tPmN1X2luZGV4KTsKKysKKysgIHN0b3JlX3Vuc2lnbmVkX2ludGVnZXIg KHZhbCwgOCwgQkZEX0VORElBTl9MSVRUTEUsIGVudHJ5LT5vZmZzZXQpOworKyAgb2JzdGFja19n cm93IChpbmZvLT50eXBlc19saXN0LCB2YWwsIDgpOworKyAgc3RvcmVfdW5zaWduZWRfaW50ZWdl ciAodmFsLCA4LCBCRkRfRU5ESUFOX0xJVFRMRSwgZW50cnktPnR5cGVfb2Zmc2V0KTsKKysgIG9i c3RhY2tfZ3JvdyAoaW5mby0+dHlwZXNfbGlzdCwgdmFsLCA4KTsKKysgIHN0b3JlX3Vuc2lnbmVk X2ludGVnZXIgKHZhbCwgOCwgQkZEX0VORElBTl9MSVRUTEUsIGVudHJ5LT5zaWduYXR1cmUpOwor KyAgb2JzdGFja19ncm93IChpbmZvLT50eXBlc19saXN0LCB2YWwsIDgpOworKworKyAgKytpbmZv LT5jdV9pbmRleDsKKysKKysgIHJldHVybiAxOworK30KKysKKyAvKiBDcmVhdGUgYW4gaW5kZXgg ZmlsZSBmb3IgT0JKRklMRSBpbiB0aGUgZGlyZWN0b3J5IERJUi4gICovCisgc3RhdGljIHZvaWQK KyB3cml0ZV9wc3ltdGFic190b19pbmRleCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGNvbnN0 IGNoYXIgKmRpcikKKyB7CisgICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cDsKKyAgIGNoYXIgKmZp bGVuYW1lLCAqY2xlYW51cF9maWxlbmFtZTsKKy0gIHN0cnVjdCBvYnN0YWNrIGNvbnRlbnRzLCBh ZGRyX29ic3RhY2ssIGNvbnN0YW50X3Bvb2wsIHN5bXRhYl9vYnN0YWNrLCBjdV9saXN0OworKyAg c3RydWN0IG9ic3RhY2sgY29udGVudHMsIGFkZHJfb2JzdGFjaywgY29uc3RhbnRfcG9vbCwgc3lt dGFiX29ic3RhY2s7CisrICBzdHJ1Y3Qgb2JzdGFjayBjdV9saXN0LCB0eXBlc19jdV9saXN0Owor ICAgaW50IGk7CisgICBGSUxFICpvdXRfZmlsZTsKKyAgIHN0cnVjdCBtYXBwZWRfc3ltdGFiICpz eW10YWI7CitAQCAtMTQ0ODksNiArMTQ2ODUsMTIgQEAgd3JpdGVfcHN5bXRhYnNfdG9faW5kZXgg KHN0cnVjdCBvYmpmaWxlIAorICAgb2JzdGFja19pbml0ICgmY3VfbGlzdCk7CisgICBtYWtlX2Ns ZWFudXBfb2JzdGFja19mcmVlICgmY3VfbGlzdCk7CisgCisrICBvYnN0YWNrX2luaXQgKCZ0eXBl c19jdV9saXN0KTsKKysgIG1ha2VfY2xlYW51cF9vYnN0YWNrX2ZyZWUgKCZ0eXBlc19jdV9saXN0 KTsKKysKKysgIC8qIFRoZSBsaXN0IGlzIGFscmVhZHkgc29ydGVkLCBzbyB3ZSBkb24ndCBuZWVk IHRvIGRvIGFkZGl0aW9uYWwKKysgICAgIHdvcmsgaGVyZS4gIEFsc28sIHRoZSBkZWJ1Z190eXBl cyBlbnRyaWVzIGRvIG5vdCBhcHBlYXIgaW4KKysgICAgIGFsbF9jb21wX3VuaXRzLCBidXQgb25s eSBpbiB0aGVpciBvd24gaGFzaCB0YWJsZS4gICovCisgICBmb3IgKGkgPSAwOyBpIDwgZHdhcmYy X3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHM7ICsraSkKKyAgICAgeworICAgICAgIHN0cnVjdCBk d2FyZjJfcGVyX2N1X2RhdGEgKmN1ID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5hbGxfY29tcF91bml0 c1tpXTsKK0BAIC0xNDUxMCw2ICsxNDcxMiwxOSBAQCB3cml0ZV9wc3ltdGFic190b19pbmRleCAo c3RydWN0IG9iamZpbGUgCisgICAgICAgb2JzdGFja19ncm93ICgmY3VfbGlzdCwgdmFsLCA4KTsK KyAgICAgfQorIAorKyAgLyogV3JpdGUgb3V0IHRoZSAuZGVidWdfdHlwZSBlbnRyaWVzLCBpZiBh bnkuICAqLworKyAgaWYgKGR3YXJmMl9wZXJfb2JqZmlsZS0+c2lnbmF0dXJlZF90eXBlcykKKysg ICAgeworKyAgICAgIHN0cnVjdCBzaWduYXR1cmVkX3R5cGVfaW5kZXhfZGF0YSBzaWdfZGF0YTsK KysKKysgICAgICBzaWdfZGF0YS5vYmpmaWxlID0gb2JqZmlsZTsKKysgICAgICBzaWdfZGF0YS5z eW10YWIgPSBzeW10YWI7CisrICAgICAgc2lnX2RhdGEudHlwZXNfbGlzdCA9ICZ0eXBlc19jdV9s aXN0OworKyAgICAgIHNpZ19kYXRhLmN1X2luZGV4ID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2Nv bXBfdW5pdHM7CisrICAgICAgaHRhYl90cmF2ZXJzZV9ub3Jlc2l6ZSAoZHdhcmYyX3Blcl9vYmpm aWxlLT5zaWduYXR1cmVkX3R5cGVzLAorKwkJCSAgICAgIHdyaXRlX29uZV9zaWduYXR1cmVkX3R5 cGUsICZzaWdfZGF0YSk7CisrICAgIH0KKysKKyAgIG9ic3RhY2tfaW5pdCAoJmNvbnN0YW50X3Bv b2wpOworICAgbWFrZV9jbGVhbnVwX29ic3RhY2tfZnJlZSAoJmNvbnN0YW50X3Bvb2wpOworICAg b2JzdGFja19pbml0ICgmc3ltdGFiX29ic3RhY2spOworQEAgLTE0NTE4LDExICsxNDczMywxMSBA QCB3cml0ZV9wc3ltdGFic190b19pbmRleCAoc3RydWN0IG9iamZpbGUgCisgCisgICBvYnN0YWNr X2luaXQgKCZjb250ZW50cyk7CisgICBtYWtlX2NsZWFudXBfb2JzdGFja19mcmVlICgmY29udGVu dHMpOworLSAgc2l6ZV9vZl9jb250ZW50cyA9IDUgKiBzaXplb2YgKG9mZnNldF90eXBlKTsKKysg IHNpemVfb2ZfY29udGVudHMgPSA2ICogc2l6ZW9mIChvZmZzZXRfdHlwZSk7CisgICB0b3RhbF9s ZW4gPSBzaXplX29mX2NvbnRlbnRzOworIAorICAgLyogVGhlIHZlcnNpb24gbnVtYmVyLiAgKi8K Ky0gIHZhbCA9IE1BWUJFX1NXQVAgKDEpOworKyAgdmFsID0gTUFZQkVfU1dBUCAoMik7CisgICBv YnN0YWNrX2dyb3cgKCZjb250ZW50cywgJnZhbCwgc2l6ZW9mICh2YWwpKTsKKyAKKyAgIC8qIFRo ZSBvZmZzZXQgb2YgdGhlIENVIGxpc3QgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGZpbGUuICAqLwor QEAgLTE0NTMwLDYgKzE0NzQ1LDExIEBAIHdyaXRlX3BzeW10YWJzX3RvX2luZGV4IChzdHJ1Y3Qg b2JqZmlsZSAKKyAgIG9ic3RhY2tfZ3JvdyAoJmNvbnRlbnRzLCAmdmFsLCBzaXplb2YgKHZhbCkp OworICAgdG90YWxfbGVuICs9IG9ic3RhY2tfb2JqZWN0X3NpemUgKCZjdV9saXN0KTsKKyAKKysg IC8qIFRoZSBvZmZzZXQgb2YgdGhlIHR5cGVzIENVIGxpc3QgZnJvbSB0aGUgc3RhcnQgb2YgdGhl IGZpbGUuICAqLworKyAgdmFsID0gTUFZQkVfU1dBUCAodG90YWxfbGVuKTsKKysgIG9ic3RhY2tf Z3JvdyAoJmNvbnRlbnRzLCAmdmFsLCBzaXplb2YgKHZhbCkpOworKyAgdG90YWxfbGVuICs9IG9i c3RhY2tfb2JqZWN0X3NpemUgKCZ0eXBlc19jdV9saXN0KTsKKysKKyAgIC8qIFRoZSBvZmZzZXQg b2YgdGhlIGFkZHJlc3MgdGFibGUgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGZpbGUuICAqLworICAg dmFsID0gTUFZQkVfU1dBUCAodG90YWxfbGVuKTsKKyAgIG9ic3RhY2tfZ3JvdyAoJmNvbnRlbnRz LCAmdmFsLCBzaXplb2YgKHZhbCkpOworQEAgLTE0NTQ5LDYgKzE0NzY5LDcgQEAgd3JpdGVfcHN5 bXRhYnNfdG9faW5kZXggKHN0cnVjdCBvYmpmaWxlIAorIAorICAgd3JpdGVfb2JzdGFjayAob3V0 X2ZpbGUsICZjb250ZW50cyk7CisgICB3cml0ZV9vYnN0YWNrIChvdXRfZmlsZSwgJmN1X2xpc3Qp OworKyAgd3JpdGVfb2JzdGFjayAob3V0X2ZpbGUsICZ0eXBlc19jdV9saXN0KTsKKyAgIHdyaXRl X29ic3RhY2sgKG91dF9maWxlLCAmYWRkcl9vYnN0YWNrKTsKKyAgIHdyaXRlX29ic3RhY2sgKG91 dF9maWxlLCAmc3ltdGFiX29ic3RhY2spOworICAgd3JpdGVfb2JzdGFjayAob3V0X2ZpbGUsICZj b25zdGFudF9wb29sKTsKK0BAIC0xNDU3MywxOCArMTQ3OTQsMzMgQEAgd3JpdGVfcHN5bXRhYnNf dG9faW5kZXggKHN0cnVjdCBvYmpmaWxlIAorIAorICAgIDEuIFRoZSBmaWxlIGhlYWRlci4gIFRo aXMgaXMgYSBzZXF1ZW5jZSBvZiB2YWx1ZXMsIG9mIG9mZnNldF90eXBlCisgICAgdW5sZXNzIG90 aGVyd2lzZSBub3RlZDoKKy0gICBbMF0gVGhlIHZlcnNpb24gbnVtYmVyLiAgQ3VycmVudGx5IDEu CisrICAgWzBdIFRoZSB2ZXJzaW9uIG51bWJlci4gIEN1cnJlbnRseSAxIG9yIDIuICBUaGUgZGlm ZmVyZW5jZXMgYXJlCisrICAgbm90ZWQgYmVsb3cuICBWZXJzaW9uIDEgZGlkIG5vdCBhY2NvdW50 IGZvciAuZGVidWdfdHlwZXMgc2VjdGlvbnM7CisrICAgdGhlIHByZXNlbmNlIG9mIGEgLmRlYnVn X3R5cGVzIHNlY3Rpb24gaW52YWxpZGF0ZXMgYW55IHZlcnNpb24gMQorKyAgIGluZGV4IHRoYXQg bWF5IGV4aXN0LgorICAgIFsxXSBUaGUgb2Zmc2V0LCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgZmls ZSwgb2YgdGhlIENVIGxpc3QuCisrICAgWzEuNV0gSW4gdmVyc2lvbiAyLCB0aGUgb2Zmc2V0LCBm cm9tIHRoZSBzdGFydCBvZiB0aGUgZmlsZSwgb2YgdGhlCisrICAgdHlwZXMgQ1UgbGlzdC4gIFRo aXMgb2Zmc2V0IGRvZXMgbm90IGFwcGVhciBpbiB2ZXJzaW9uIDEuICBOb3RlCisrICAgdGhhdCB0 aGlzIGNhbiBiZSBlbXB0eSwgaW4gd2hpY2ggY2FzZSB0aGlzIG9mZnNldCB3aWxsIGJlIGVxdWFs IHRvCisrICAgdGhlIG5leHQgb2Zmc2V0LgorICAgIFsyXSBUaGUgb2Zmc2V0LCBmcm9tIHRoZSBz dGFydCBvZiB0aGUgZmlsZSwgb2YgdGhlIGFkZHJlc3Mgc2VjdGlvbi4KKyAgICBbM10gVGhlIG9m ZnNldCwgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGZpbGUsIG9mIHRoZSBzeW1ib2wgdGFibGUuCisg ICAgWzRdIFRoZSBvZmZzZXQsIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBmaWxlLCBvZiB0aGUgY29u c3RhbnQgcG9vbC4KKyAKKyAgICAyLiBUaGUgQ1UgbGlzdC4gIFRoaXMgaXMgYSBzZXF1ZW5jZSBv ZiBwYWlycyBvZiA2NC1iaXQKKy0gICBsaXR0bGUtZW5kaWFuIHZhbHVlcy4gIFRoZSBmaXJzdCBl bGVtZW50IGluIGVhY2ggcGFpciBpcyB0aGUgb2Zmc2V0CistICAgb2YgYSBDVSBpbiB0aGUgLmRl YnVnX2luZm8gc2VjdGlvbi4gIFRoZSBzZWNvbmQgZWxlbWVudCBpbiBlYWNoCistICAgcGFpciBp cyB0aGUgbGVuZ3RoIG9mIHRoYXQgQ1UuICBSZWZlcmVuY2VzIHRvIGEgQ1UgZWxzZXdoZXJlIGlu IHRoZQorLSAgIG1hcCBhcmUgZG9uZSB1c2luZyBhIENVIGluZGV4LCB3aGljaCBpcyBqdXN0IHRo ZSAwLWJhc2VkIGluZGV4IGludG8KKy0gICB0aGlzIHRhYmxlLgorKyAgIGxpdHRsZS1lbmRpYW4g dmFsdWVzLCBzb3J0ZWQgYnkgdGhlIENVIG9mZnNldC4gIFRoZSBmaXJzdCBlbGVtZW50CisrICAg aW4gZWFjaCBwYWlyIGlzIHRoZSBvZmZzZXQgb2YgYSBDVSBpbiB0aGUgLmRlYnVnX2luZm8gc2Vj dGlvbi4gIFRoZQorKyAgIHNlY29uZCBlbGVtZW50IGluIGVhY2ggcGFpciBpcyB0aGUgbGVuZ3Ro IG9mIHRoYXQgQ1UuICBSZWZlcmVuY2VzCisrICAgdG8gYSBDVSBlbHNld2hlcmUgaW4gdGhlIG1h cCBhcmUgZG9uZSB1c2luZyBhIENVIGluZGV4LCB3aGljaCBpcworKyAgIGp1c3QgdGhlIDAtYmFz ZWQgaW5kZXggaW50byB0aGlzIHRhYmxlLiAgTm90ZSB0aGF0IGlmIHRoZXJlIGFyZQorKyAgIHR5 cGUgQ1VzLCB0aGVuIGNvbmNlcHR1YWxseSBDVXMgYW5kIHR5cGUgQ1VzIGZvcm0gYSBzaW5nbGUg bGlzdCBmb3IKKysgICB0aGUgcHVycG9zZXMgb2YgQ1UgaW5kaWNlcy4KKysKKysgICAyLjUgVGhl IHR5cGVzIENVIGxpc3QuICBUaGlzIGRvZXMgbm90IGFwcGVhciBpbiBhIHZlcnNpb24gMSBpbmRl eC4KKysgICBUaGlzIGlzIGEgc2VxdWVuY2Ugb2YgdHJpcGxldHMgb2YgNjQtYml0IGxpdHRsZS1l bmRpYW4gdmFsdWVzLiAgSW4KKysgICBhIHRyaXBsZXQsIHRoZSBmaXJzdCB2YWx1ZSBpcyB0aGUg Q1Ugb2Zmc2V0LCB0aGUgc2Vjb25kIHZhbHVlIGlzCisrICAgdGhlIHR5cGUgb2Zmc2V0IGluIHRo ZSBDVSwgYW5kIHRoZSB0aGlyZCB2YWx1ZSBpcyB0aGUgdHlwZQorKyAgIHNpZ25hdHVyZS4gIFRo ZSB0eXBlcyBDVSBsaXN0IGlzIG5vdCBzb3J0ZWQuCisgCisgICAgMy4gVGhlIGFkZHJlc3Mgc2Vj dGlvbi4gIFRoZSBhZGRyZXNzIHNlY3Rpb24gY29uc2lzdHMgb2YgYSBzZXF1ZW5jZQorICAgIG9m IGFkZHJlc3MgZW50cmllcy4gIEVhY2ggYWRkcmVzcyBlbnRyeSBoYXMgdGhyZWUgZWxlbWVudHMu CgpkaWZmIC0tZ2l0IGEvZ2RiLWdkYmluZGV4LXYyLXRvLXYzLnBhdGNoIGIvZ2RiLWdkYmluZGV4 LXYyLXRvLXYzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiZDcw NDUKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItZ2RiaW5kZXgtdjItdG8tdjMucGF0Y2gKQEAgLTAs MCArMSwyNzggQEAKK0ZZSTogaW5kZXggcHJlLWV4cGFuc2lvbiBmaXgKK2h0dHA6Ly9zb3VyY2V3 YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTA5L21zZzAwNDUyLmh0bWwKK2h0dHA6Ly9zb3Vy Y2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTAtMDkvbXNnMDAxNjUuaHRtbAorCisjIyMgc3JjL2dk Yi9DaGFuZ2VMb2cJMjAxMC8wOS8yNyAxNzo0MTozNQkxLjEyMjA2CisjIyMgc3JjL2dkYi9DaGFu Z2VMb2cJMjAxMC8wOS8yNyAxODo0MjozNQkxLjEyMjA3CisjIyAtMSw1ICsxLDE3IEBACisgMjAx MC0wOS0yNyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgorIAorKwkqIGR3YXJmMnJl YWQuYyAoZHdhcmYyX3JlYWRfaW5kZXgpOiBPbmx5IGFsbG93IHZlcnNpb24gMy4KKysJKHdyaXRl X3BzeW1ib2xzKTogQWRkICdwc3ltc19zZWVuJyBhbmQgJ2lzX3N0YXRpYycgYXJndW1lbnRzLgor KwlPbmx5IGVtaXQgYSBnaXZlbiBwc3ltYm9sIG9uY2UuCisrCShzdHJ1Y3Qgc2lnbmF0dXJlZF90 eXBlX2luZGV4X2RhdGEpIDxwc3ltc19zZWVuPjogTmV3IGZpZWxkLgorKwkod3JpdGVfb25lX3Np Z25hdHVyZWRfdHlwZSk6IFVwZGF0ZS4KKysJKGNsZWFudXBfaHRhYik6IE5ldyBmdW5jdGlvbi4K KysJKHdyaXRlX3BzeW10YWJzX3RvX2luZGV4KTogVXBkYXRlLiAgQ3JlYXRlIHBzeW1zX3NlZW4g aGFzaC4gIEJ1bXAKKysJdmVyc2lvbiB0byAzLgorKwkoc2F2ZV9nZGJfaW5kZXhfY29tbWFuZCk6 IFVwZGF0ZSBpbmRleCBkb2N1bWVudGF0aW9uLgorKworKzIwMTAtMDktMjcgIFRvbSBUcm9tZXkg IDx0cm9tZXlAcmVkaGF0LmNvbT4KKysKKyAJKiBiY2FjaGUuYyAoZXhwYW5kX2hhc2hfdGFibGUp OiBVc2UgaGFzaF9mdW5jdGlvbiwgbm90IGhhc2guCisgCisgMjAxMC0wOS0yNyAgVG9tIFRyb21l eSAgPHRyb21leUByZWRoYXQuY29tPgorSW5kZXg6IGdkYi03LjIvZ2RiL2R3YXJmMnJlYWQuYwor PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0tIGdkYi03LjIub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMTAtMTIg MTg6MTE6MjcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi9nZGIvZHdhcmYycmVhZC5jCTIw MTAtMTAtMTIgMTg6MTI6MDMuMDAwMDAwMDAwICswMjAwCitAQCAtMTg5NywxNSArMTg5NywxMCBA QCBkd2FyZjJfcmVhZF9pbmRleCAoc3RydWN0IG9iamZpbGUgKm9iamZpCisgICBhZGRyID0gZHdh cmYyX3Blcl9vYmpmaWxlLT5nZGJfaW5kZXguYnVmZmVyOworICAgLyogVmVyc2lvbiBjaGVjay4g ICovCisgICB2ZXJzaW9uID0gTUFZQkVfU1dBUCAoKihvZmZzZXRfdHlwZSAqKSBhZGRyKTsKKy0g IGlmICh2ZXJzaW9uID09IDEpCistICAgIHsKKy0gICAgICAvKiBJbmRleCB2ZXJzaW9uIDEgbmVn bGVjdGVkIHRvIGFjY291bnQgZm9yIC5kZWJ1Z190eXBlcy4gIFNvLAorLQkgaWYgd2Ugc2VlIC5k ZWJ1Z190eXBlcywgd2UgY2Fubm90IHVzZSB0aGlzIGluZGV4LiAgKi8KKy0gICAgICBpZiAoZHdh cmYyX3Blcl9vYmpmaWxlLT50eXBlcy5hc2VjdGlvbiAhPSBOVUxMCistCSAgJiYgZHdhcmYyX3Bl cl9vYmpmaWxlLT50eXBlcy5zaXplICE9IDApCistCXJldHVybiAwOworLSAgICB9CistICBlbHNl IGlmICh2ZXJzaW9uICE9IDIpCisrICAvKiBWZXJzaW9ucyBlYXJsaWVyIHRoYW4gMyBlbWl0dGVk IGV2ZXJ5IGNvcHkgb2YgYSBwc3ltYm9sLiAgVGhpcworKyAgICAgY2F1c2VzIHRoZSBpbmRleCB0 byBiZWhhdmUgdmVyeSBwb29ybHkgZm9yIGNlcnRhaW4gcmVxdWVzdHMuICBTbywKKysgICAgIGl0 IHNlZW1zIGJldHRlciB0byBqdXN0IGlnbm9yZSBzdWNoIGluZGljZXMuICAqLworKyAgaWYgKHZl cnNpb24gPCAzKQorICAgICByZXR1cm4gMDsKKyAKKyAgIG1hcCA9IE9CU1RBQ0tfWkFMTE9DICgm b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBzdHJ1Y3QgbWFwcGVkX2luZGV4KTsKK0BAIC0xOTE5 LDE0ICsxOTE0LDExIEBAIGR3YXJmMl9yZWFkX2luZGV4IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmkK KyAJCSAgICAgIC8gOCk7CisgICArK2k7CisgCistICBpZiAodmVyc2lvbiA9PSAyKQorLSAgICB7 CistICAgICAgdHlwZXNfbGlzdCA9IGFkZHIgKyBNQVlCRV9TV0FQIChtZXRhZGF0YVtpXSk7Cist ICAgICAgdHlwZXNfbGlzdF9lbGVtZW50cyA9ICgoTUFZQkVfU1dBUCAobWV0YWRhdGFbaSArIDFd KQorLQkJCSAgICAgIC0gTUFZQkVfU1dBUCAobWV0YWRhdGFbaV0pKQorLQkJCSAgICAgLyA4KTsK Ky0gICAgICArK2k7CistICAgIH0KKysgIHR5cGVzX2xpc3QgPSBhZGRyICsgTUFZQkVfU1dBUCAo bWV0YWRhdGFbaV0pOworKyAgdHlwZXNfbGlzdF9lbGVtZW50cyA9ICgoTUFZQkVfU1dBUCAobWV0 YWRhdGFbaSArIDFdKQorKwkJCSAgLSBNQVlCRV9TV0FQIChtZXRhZGF0YVtpXSkpCisrCQkJIC8g OCk7CisrICArK2k7CisgCisgICBtYXAtPmFkZHJlc3NfdGFibGUgPSBhZGRyICsgTUFZQkVfU1dB UCAobWV0YWRhdGFbaV0pOworICAgbWFwLT5hZGRyZXNzX3RhYmxlX3NpemUgPSAoTUFZQkVfU1dB UCAobWV0YWRhdGFbaSArIDFdKQorQEAgLTE5NDQsOCArMTkzNiw3IEBAIGR3YXJmMl9yZWFkX2lu ZGV4IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmkKKyAgIGlmICghY3JlYXRlX2N1c19mcm9tX2luZGV4 IChvYmpmaWxlLCBjdV9saXN0LCBjdV9saXN0X2VsZW1lbnRzKSkKKyAgICAgcmV0dXJuIDA7Cisg CistICBpZiAodmVyc2lvbiA9PSAyCistICAgICAgJiYgdHlwZXNfbGlzdF9lbGVtZW50cworKyAg aWYgKHR5cGVzX2xpc3RfZWxlbWVudHMKKyAgICAgICAmJiAhY3JlYXRlX3NpZ25hdHVyZWRfdHlw ZV9oYXNoX2Zyb21faW5kZXggKG9iamZpbGUsIHR5cGVzX2xpc3QsCisgCQkJCQkJICB0eXBlc19s aXN0X2VsZW1lbnRzKSkKKyAgICAgcmV0dXJuIDA7CitAQCAtMTQ1NjgsMTUgKzE0NTU5LDM4IEBA IGFkZF9hZGRyZXNzX2VudHJ5IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmkKKyAvKiBBZGQgYSBsaXN0 IG9mIHBhcnRpYWwgc3ltYm9scyB0byBTWU1UQUIuICAqLworIHN0YXRpYyB2b2lkCisgd3JpdGVf cHN5bWJvbHMgKHN0cnVjdCBtYXBwZWRfc3ltdGFiICpzeW10YWIsCisrCQlodGFiX3QgcHN5bXNf c2VlbiwKKyAJCXN0cnVjdCBwYXJ0aWFsX3N5bWJvbCAqKnBzeW1wLAorIAkJaW50IGNvdW50LAor LQkJb2Zmc2V0X3R5cGUgY3VfaW5kZXgpCisrCQlvZmZzZXRfdHlwZSBjdV9pbmRleCwKKysJCWlu dCBpc19zdGF0aWMpCisgeworICAgZm9yICg7IGNvdW50LS0gPiAwOyArK3BzeW1wKQorICAgICB7 CisrICAgICAgdm9pZCAqKnNsb3QsICpsb29rdXA7CisrCisgICAgICAgaWYgKFNZTUJPTF9MQU5H VUFHRSAoKnBzeW1wKSA9PSBsYW5ndWFnZV9hZGEpCisgCWVycm9yIChfKCJBZGEgaXMgbm90IGN1 cnJlbnRseSBzdXBwb3J0ZWQgYnkgdGhlIGluZGV4IikpOworLSAgICAgIGFkZF9pbmRleF9lbnRy eSAoc3ltdGFiLCBTWU1CT0xfTkFUVVJBTF9OQU1FICgqcHN5bXApLCBjdV9pbmRleCk7CisrCisr ICAgICAgLyogV2Ugb25seSB3YW50IHRvIGFkZCBhIGdpdmVuIHBzeW1ib2wgb25jZS4gIEhvd2V2 ZXIsIHdlIGFsc28KKysJIHdhbnQgdG8gYWNjb3VudCBmb3Igd2hldGhlciBpdCBpcyBnbG9iYWwg b3Igc3RhdGljLiAgU28sIHdlCisrCSBtYXkgYWRkIGl0IHR3aWNlLCB1c2luZyBzbGlnaHRseSBk aWZmZXJlbnQgdmFsdWVzLiAgKi8KKysgICAgICBpZiAoaXNfc3RhdGljKQorKwl7CisrCSAgdWlu dHB0cl90IHZhbCA9IDEgfCAodWludHB0cl90KSAqcHN5bXA7CisrCisrCSAgbG9va3VwID0gKHZv aWQgKikgdmFsOworKwl9CisrICAgICAgZWxzZQorKwlsb29rdXAgPSAqcHN5bXA7CisrCisrICAg ICAgLyogT25seSBhZGQgYSBnaXZlbiBwc3ltYm9sIG9uY2UuICAqLworKyAgICAgIHNsb3QgPSBo dGFiX2ZpbmRfc2xvdCAocHN5bXNfc2VlbiwgbG9va3VwLCBJTlNFUlQpOworKyAgICAgIGlmICgh KnNsb3QpCisrCXsKKysJICAqc2xvdCA9IGxvb2t1cDsKKysJICBhZGRfaW5kZXhfZW50cnkgKHN5 bXRhYiwgU1lNQk9MX05BVFVSQUxfTkFNRSAoKnBzeW1wKSwgY3VfaW5kZXgpOworKwl9CisgICAg IH0KKyB9CisgCitAQCAtMTQ2MDYsNiArMTQ2MjAsNyBAQCBzdHJ1Y3Qgc2lnbmF0dXJlZF90eXBl X2luZGV4X2RhdGEKKyAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOworICAgc3RydWN0IG1hcHBl ZF9zeW10YWIgKnN5bXRhYjsKKyAgIHN0cnVjdCBvYnN0YWNrICp0eXBlc19saXN0OworKyAgaHRh Yl90IHBzeW1zX3NlZW47CisgICBpbnQgY3VfaW5kZXg7CisgfTsKKyAKK0BAIC0xNDYyMSwxMSAr MTQ2MzYsMTUgQEAgd3JpdGVfb25lX3NpZ25hdHVyZWRfdHlwZSAodm9pZCAqKnNsb3QsIAorICAg Z2RiX2J5dGUgdmFsWzhdOworIAorICAgd3JpdGVfcHN5bWJvbHMgKGluZm8tPnN5bXRhYiwKKysJ CSAgaW5mby0+cHN5bXNfc2VlbiwKKyAJCSAgaW5mby0+b2JqZmlsZS0+Z2xvYmFsX3BzeW1ib2xz Lmxpc3QgKyBwc3ltdGFiLT5nbG9iYWxzX29mZnNldCwKKy0JCSAgcHN5bXRhYi0+bl9nbG9iYWxf c3ltcywgaW5mby0+Y3VfaW5kZXgpOworKwkJICBwc3ltdGFiLT5uX2dsb2JhbF9zeW1zLCBpbmZv LT5jdV9pbmRleCwKKysJCSAgMCk7CisgICB3cml0ZV9wc3ltYm9scyAoaW5mby0+c3ltdGFiLAor KwkJICBpbmZvLT5wc3ltc19zZWVuLAorIAkJICBpbmZvLT5vYmpmaWxlLT5zdGF0aWNfcHN5bWJv bHMubGlzdCArIHBzeW10YWItPnN0YXRpY3Nfb2Zmc2V0LAorLQkJICBwc3ltdGFiLT5uX3N0YXRp Y19zeW1zLCBpbmZvLT5jdV9pbmRleCk7CisrCQkgIHBzeW10YWItPm5fc3RhdGljX3N5bXMsIGlu Zm8tPmN1X2luZGV4LAorKwkJICAxKTsKKyAKKyAgIHN0b3JlX3Vuc2lnbmVkX2ludGVnZXIgKHZh bCwgOCwgQkZEX0VORElBTl9MSVRUTEUsIGVudHJ5LT5vZmZzZXQpOworICAgb2JzdGFja19ncm93 IChpbmZvLT50eXBlc19saXN0LCB2YWwsIDgpOworQEAgLTE0NjM5LDYgKzE0NjU4LDE0IEBAIHdy aXRlX29uZV9zaWduYXR1cmVkX3R5cGUgKHZvaWQgKipzbG90LCAKKyAgIHJldHVybiAxOworIH0K KyAKKysvKiBBIGNsZWFudXAgZnVuY3Rpb24gZm9yIGFuIGh0YWJfdC4gICovCisrCisrc3RhdGlj IHZvaWQKKytjbGVhbnVwX2h0YWIgKHZvaWQgKmFyZykKKyt7CisrICBodGFiX2RlbGV0ZSAoYXJn KTsKKyt9CisrCisgLyogQ3JlYXRlIGFuIGluZGV4IGZpbGUgZm9yIE9CSkZJTEUgaW4gdGhlIGRp cmVjdG9yeSBESVIuICAqLworIHN0YXRpYyB2b2lkCisgd3JpdGVfcHN5bXRhYnNfdG9faW5kZXgg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBjb25zdCBjaGFyICpkaXIpCitAQCAtMTQ2NTMsNiAr MTQ2ODAsNyBAQCB3cml0ZV9wc3ltdGFic190b19pbmRleCAoc3RydWN0IG9iamZpbGUgCisgICBv ZmZzZXRfdHlwZSB2YWwsIHNpemVfb2ZfY29udGVudHMsIHRvdGFsX2xlbjsKKyAgIHN0cnVjdCBz dGF0IHN0OworICAgY2hhciBidWZbOF07CisrICBodGFiX3QgcHN5bXNfc2VlbjsKKyAKKyAgIGlm ICghb2JqZmlsZS0+cHN5bXRhYnMpCisgICAgIHJldHVybjsKK0BAIC0xNDY4NSw2ICsxNDcxMywx MCBAQCB3cml0ZV9wc3ltdGFic190b19pbmRleCAoc3RydWN0IG9iamZpbGUgCisgICBvYnN0YWNr X2luaXQgKCZ0eXBlc19jdV9saXN0KTsKKyAgIG1ha2VfY2xlYW51cF9vYnN0YWNrX2ZyZWUgKCZ0 eXBlc19jdV9saXN0KTsKKyAKKysgIHBzeW1zX3NlZW4gPSBodGFiX2NyZWF0ZV9hbGxvYyAoMTAw LCBodGFiX2hhc2hfcG9pbnRlciwgaHRhYl9lcV9wb2ludGVyLAorKwkJCQkgIE5VTEwsIHhjYWxs b2MsIHhmcmVlKTsKKysgIG1ha2VfY2xlYW51cCAoY2xlYW51cF9odGFiLCBwc3ltc19zZWVuKTsK KysKKyAgIC8qIFRoZSBsaXN0IGlzIGFscmVhZHkgc29ydGVkLCBzbyB3ZSBkb24ndCBuZWVkIHRv IGRvIGFkZGl0aW9uYWwKKyAgICAgIHdvcmsgaGVyZS4gIEFsc28sIHRoZSBkZWJ1Z190eXBlcyBl bnRyaWVzIGRvIG5vdCBhcHBlYXIgaW4KKyAgICAgIGFsbF9jb21wX3VuaXRzLCBidXQgb25seSBp biB0aGVpciBvd24gaGFzaCB0YWJsZS4gICovCitAQCAtMTQ2OTUsMTEgKzE0NzI3LDE1IEBAIHdy aXRlX3BzeW10YWJzX3RvX2luZGV4IChzdHJ1Y3Qgb2JqZmlsZSAKKyAgICAgICBnZGJfYnl0ZSB2 YWxbOF07CisgCisgICAgICAgd3JpdGVfcHN5bWJvbHMgKHN5bXRhYiwKKysJCSAgICAgIHBzeW1z X3NlZW4sCisgCQkgICAgICBvYmpmaWxlLT5nbG9iYWxfcHN5bWJvbHMubGlzdCArIHBzeW10YWIt Pmdsb2JhbHNfb2Zmc2V0LAorLQkJICAgICAgcHN5bXRhYi0+bl9nbG9iYWxfc3ltcywgaSk7Cisr CQkgICAgICBwc3ltdGFiLT5uX2dsb2JhbF9zeW1zLCBpLAorKwkJICAgICAgMCk7CisgICAgICAg d3JpdGVfcHN5bWJvbHMgKHN5bXRhYiwKKysJCSAgICAgIHBzeW1zX3NlZW4sCisgCQkgICAgICBv YmpmaWxlLT5zdGF0aWNfcHN5bWJvbHMubGlzdCArIHBzeW10YWItPnN0YXRpY3Nfb2Zmc2V0LAor LQkJICAgICAgcHN5bXRhYi0+bl9zdGF0aWNfc3ltcywgaSk7CisrCQkgICAgICBwc3ltdGFiLT5u X3N0YXRpY19zeW1zLCBpLAorKwkJICAgICAgMSk7CisgCisgICAgICAgYWRkX2FkZHJlc3NfZW50 cnkgKG9iamZpbGUsICZhZGRyX29ic3RhY2ssIHBzeW10YWIsIGkpOworIAorQEAgLTE0NzE3LDYg KzE0NzUzLDcgQEAgd3JpdGVfcHN5bXRhYnNfdG9faW5kZXggKHN0cnVjdCBvYmpmaWxlIAorICAg ICAgIHNpZ19kYXRhLm9iamZpbGUgPSBvYmpmaWxlOworICAgICAgIHNpZ19kYXRhLnN5bXRhYiA9 IHN5bXRhYjsKKyAgICAgICBzaWdfZGF0YS50eXBlc19saXN0ID0gJnR5cGVzX2N1X2xpc3Q7Cisr ICAgICAgc2lnX2RhdGEucHN5bXNfc2VlbiA9IHBzeW1zX3NlZW47CisgICAgICAgc2lnX2RhdGEu Y3VfaW5kZXggPSBkd2FyZjJfcGVyX29iamZpbGUtPm5fY29tcF91bml0czsKKyAgICAgICBodGFi X3RyYXZlcnNlX25vcmVzaXplIChkd2FyZjJfcGVyX29iamZpbGUtPnNpZ25hdHVyZWRfdHlwZXMs CisgCQkJICAgICAgd3JpdGVfb25lX3NpZ25hdHVyZWRfdHlwZSwgJnNpZ19kYXRhKTsKK0BAIC0x NDczNCw3ICsxNDc3MSw3IEBAIHdyaXRlX3BzeW10YWJzX3RvX2luZGV4IChzdHJ1Y3Qgb2JqZmls ZSAKKyAgIHRvdGFsX2xlbiA9IHNpemVfb2ZfY29udGVudHM7CisgCisgICAvKiBUaGUgdmVyc2lv biBudW1iZXIuICAqLworLSAgdmFsID0gTUFZQkVfU1dBUCAoMik7CisrICB2YWwgPSBNQVlCRV9T V0FQICgzKTsKKyAgIG9ic3RhY2tfZ3JvdyAoJmNvbnRlbnRzLCAmdmFsLCBzaXplb2YgKHZhbCkp OworIAorICAgLyogVGhlIG9mZnNldCBvZiB0aGUgQ1UgbGlzdCBmcm9tIHRoZSBzdGFydCBvZiB0 aGUgZmlsZS4gICovCitAQCAtMTQ3OTEsMTggKzE0ODI4LDE2IEBAIHdyaXRlX3BzeW10YWJzX3Rv X2luZGV4IChzdHJ1Y3Qgb2JqZmlsZSAKKyAKKyAgICAxLiBUaGUgZmlsZSBoZWFkZXIuICBUaGlz IGlzIGEgc2VxdWVuY2Ugb2YgdmFsdWVzLCBvZiBvZmZzZXRfdHlwZQorICAgIHVubGVzcyBvdGhl cndpc2Ugbm90ZWQ6CistICAgWzBdIFRoZSB2ZXJzaW9uIG51bWJlci4gIEN1cnJlbnRseSAxIG9y IDIuICBUaGUgZGlmZmVyZW5jZXMgYXJlCistICAgbm90ZWQgYmVsb3cuICBWZXJzaW9uIDEgZGlk IG5vdCBhY2NvdW50IGZvciAuZGVidWdfdHlwZXMgc2VjdGlvbnM7CistICAgdGhlIHByZXNlbmNl IG9mIGEgLmRlYnVnX3R5cGVzIHNlY3Rpb24gaW52YWxpZGF0ZXMgYW55IHZlcnNpb24gMQorLSAg IGluZGV4IHRoYXQgbWF5IGV4aXN0LgorKworKyAgIFswXSBUaGUgdmVyc2lvbiBudW1iZXIsIGN1 cnJlbnRseSAzLiAgVmVyc2lvbnMgMSBhbmQgMiBhcmUKKysgICBvYnNvbGV0ZS4KKyAgICBbMV0g VGhlIG9mZnNldCwgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGZpbGUsIG9mIHRoZSBDVSBsaXN0Lgor LSAgIFsxLjVdIEluIHZlcnNpb24gMiwgdGhlIG9mZnNldCwgZnJvbSB0aGUgc3RhcnQgb2YgdGhl IGZpbGUsIG9mIHRoZQorLSAgIHR5cGVzIENVIGxpc3QuICBUaGlzIG9mZnNldCBkb2VzIG5vdCBh cHBlYXIgaW4gdmVyc2lvbiAxLiAgTm90ZQorLSAgIHRoYXQgdGhpcyBjYW4gYmUgZW1wdHksIGlu IHdoaWNoIGNhc2UgdGhpcyBvZmZzZXQgd2lsbCBiZSBlcXVhbCB0bworLSAgIHRoZSBuZXh0IG9m ZnNldC4KKy0gICBbMl0gVGhlIG9mZnNldCwgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGZpbGUsIG9m IHRoZSBhZGRyZXNzIHNlY3Rpb24uCistICAgWzNdIFRoZSBvZmZzZXQsIGZyb20gdGhlIHN0YXJ0 IG9mIHRoZSBmaWxlLCBvZiB0aGUgc3ltYm9sIHRhYmxlLgorLSAgIFs0XSBUaGUgb2Zmc2V0LCBm cm9tIHRoZSBzdGFydCBvZiB0aGUgZmlsZSwgb2YgdGhlIGNvbnN0YW50IHBvb2wuCisrICAgWzJd IFRoZSBvZmZzZXQsIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBmaWxlLCBvZiB0aGUgdHlwZXMgQ1Ug bGlzdC4KKysgICBOb3RlIHRoYXQgdGhpcyBzZWN0aW9uIGNhbiBiZSBlbXB0eSwgaW4gd2hpY2gg Y2FzZSB0aGlzIG9mZnNldCB3aWxsCisrICAgYmUgZXF1YWwgdG8gdGhlIG5leHQgb2Zmc2V0Lgor KyAgIFszXSBUaGUgb2Zmc2V0LCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgZmlsZSwgb2YgdGhlIGFk ZHJlc3Mgc2VjdGlvbi4KKysgICBbNF0gVGhlIG9mZnNldCwgZnJvbSB0aGUgc3RhcnQgb2YgdGhl IGZpbGUsIG9mIHRoZSBzeW1ib2wgdGFibGUuCisrICAgWzVdIFRoZSBvZmZzZXQsIGZyb20gdGhl IHN0YXJ0IG9mIHRoZSBmaWxlLCBvZiB0aGUgY29uc3RhbnQgcG9vbC4KKyAKKyAgICAyLiBUaGUg Q1UgbGlzdC4gIFRoaXMgaXMgYSBzZXF1ZW5jZSBvZiBwYWlycyBvZiA2NC1iaXQKKyAgICBsaXR0 bGUtZW5kaWFuIHZhbHVlcywgc29ydGVkIGJ5IHRoZSBDVSBvZmZzZXQuICBUaGUgZmlyc3QgZWxl bWVudAorQEAgLTE0ODEzLDE5ICsxNDg0OCwxOSBAQCB3cml0ZV9wc3ltdGFic190b19pbmRleCAo c3RydWN0IG9iamZpbGUgCisgICAgdHlwZSBDVXMsIHRoZW4gY29uY2VwdHVhbGx5IENVcyBhbmQg dHlwZSBDVXMgZm9ybSBhIHNpbmdsZSBsaXN0IGZvcgorICAgIHRoZSBwdXJwb3NlcyBvZiBDVSBp bmRpY2VzLgorIAorLSAgIDIuNSBUaGUgdHlwZXMgQ1UgbGlzdC4gIFRoaXMgZG9lcyBub3QgYXBw ZWFyIGluIGEgdmVyc2lvbiAxIGluZGV4LgorLSAgIFRoaXMgaXMgYSBzZXF1ZW5jZSBvZiB0cmlw bGV0cyBvZiA2NC1iaXQgbGl0dGxlLWVuZGlhbiB2YWx1ZXMuICBJbgorLSAgIGEgdHJpcGxldCwg dGhlIGZpcnN0IHZhbHVlIGlzIHRoZSBDVSBvZmZzZXQsIHRoZSBzZWNvbmQgdmFsdWUgaXMKKy0g ICB0aGUgdHlwZSBvZmZzZXQgaW4gdGhlIENVLCBhbmQgdGhlIHRoaXJkIHZhbHVlIGlzIHRoZSB0 eXBlCistICAgc2lnbmF0dXJlLiAgVGhlIHR5cGVzIENVIGxpc3QgaXMgbm90IHNvcnRlZC4KKysg ICAzLiBUaGUgdHlwZXMgQ1UgbGlzdC4gIFRoaXMgaXMgYSBzZXF1ZW5jZSBvZiB0cmlwbGV0cyBv ZiA2NC1iaXQKKysgICBsaXR0bGUtZW5kaWFuIHZhbHVlcy4gIEluIGEgdHJpcGxldCwgdGhlIGZp cnN0IHZhbHVlIGlzIHRoZSBDVQorKyAgIG9mZnNldCwgdGhlIHNlY29uZCB2YWx1ZSBpcyB0aGUg dHlwZSBvZmZzZXQgaW4gdGhlIENVLCBhbmQgdGhlCisrICAgdGhpcmQgdmFsdWUgaXMgdGhlIHR5 cGUgc2lnbmF0dXJlLiAgVGhlIHR5cGVzIENVIGxpc3QgaXMgbm90CisrICAgc29ydGVkLgorIAor LSAgIDMuIFRoZSBhZGRyZXNzIHNlY3Rpb24uICBUaGUgYWRkcmVzcyBzZWN0aW9uIGNvbnNpc3Rz IG9mIGEgc2VxdWVuY2UKKysgICA0LiBUaGUgYWRkcmVzcyBzZWN0aW9uLiAgVGhlIGFkZHJlc3Mg c2VjdGlvbiBjb25zaXN0cyBvZiBhIHNlcXVlbmNlCisgICAgb2YgYWRkcmVzcyBlbnRyaWVzLiAg RWFjaCBhZGRyZXNzIGVudHJ5IGhhcyB0aHJlZSBlbGVtZW50cy4KKyAgICBbMF0gVGhlIGxvdyBh ZGRyZXNzLiAgVGhpcyBpcyBhIDY0LWJpdCBsaXR0bGUtZW5kaWFuIHZhbHVlLgorICAgIFsxXSBU aGUgaGlnaCBhZGRyZXNzLiAgVGhpcyBpcyBhIDY0LWJpdCBsaXR0bGUtZW5kaWFuIHZhbHVlLgor ICAgIFsyXSBUaGUgQ1UgaW5kZXguICBUaGlzIGlzIGFuIG9mZnNldF90eXBlIHZhbHVlLgorIAor LSAgIDQuIFRoZSBzeW1ib2wgdGFibGUuICBUaGlzIGlzIGEgaGFzaCB0YWJsZS4gIFRoZSBzaXpl IG9mIHRoZSBoYXNoCisrICAgNS4gVGhlIHN5bWJvbCB0YWJsZS4gIFRoaXMgaXMgYSBoYXNoIHRh YmxlLiAgVGhlIHNpemUgb2YgdGhlIGhhc2gKKyAgICB0YWJsZSBpcyBhbHdheXMgYSBwb3dlciBv ZiAyLiAgVGhlIGluaXRpYWwgaGFzaCBhbmQgdGhlIHN0ZXAgYXJlCisgICAgY3VycmVudGx5IGRl ZmluZWQgYnkgdGhlIGBmaW5kX3Nsb3QnIGZ1bmN0aW9uLgorIAorQEAgLTE0ODQ3LDcgKzE0ODgy LDcgQEAgd3JpdGVfcHN5bXRhYnNfdG9faW5kZXggKHN0cnVjdCBvYmpmaWxlIAorICAgIGVsZW1l bnQgaW4gdGhlIGhhc2ggdGFibGUgaXMgdXNlZCB0byBpbmRpY2F0ZSB3aGljaCBDVXMgZGVmaW5l IHRoZQorICAgIHN5bWJvbC4KKyAKKy0gICA1LiBUaGUgY29uc3RhbnQgcG9vbC4gIFRoaXMgaXMg c2ltcGx5IGEgYnVuY2ggb2YgYnl0ZXMuICBJdCBpcworKyAgIDYuIFRoZSBjb25zdGFudCBwb29s LiAgVGhpcyBpcyBzaW1wbHkgYSBidW5jaCBvZiBieXRlcy4gIEl0IGlzCisgICAgb3JnYW5pemVk IHNvIHRoYXQgYWxpZ25tZW50IGlzIGNvcnJlY3Q6IENVIHZlY3RvcnMgYXJlIHN0b3JlZAorICAg IGZpcnN0LCBmb2xsb3dlZCBieSBzdHJpbmdzLiAgKi8KKyBzdGF0aWMgdm9pZAoKZGlmZiAtLWdp dCBhL2dkYi1wcjEyMDI4LWRvdWJsZS1mcmVlLnBhdGNoIGIvZ2RiLXByMTIwMjgtZG91YmxlLWZy ZWUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGViMjExNQotLS0g L2Rldi9udWxsCisrKyBiL2dkYi1wcjEyMDI4LWRvdWJsZS1mcmVlLnBhdGNoCkBAIC0wLDAgKzEs OTkgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTA5L21zZzAw MzIxLmh0bWwKK1N1YmplY3Q6IFtwYXRjaF0gUFIgMTIwMjggIkdEQiBjcmFzaGVzIG9uIGEgZG91 YmxlIGZyZWUgZHVyaW5nIG92ZXJsb2FkIHJlc29sdXRpb24iCisKK29sZF9jbGVhbnVwcyB3YXMg YmVpbmcgc2V0IHR3aWNlIG1ha2luZyB0aGUgbGF0ZXIgY2FsbCB0byAKK2Rpc2NhcmRfY2xlYW51 cHMgaWdub3JlIHRoZSBmaXJzdCAnbWFrZV9jbGVhbnVwJyByZXF1ZXN0LgorCitUaGUgcGF0Y2gg aXMgcHJvcG9zZWQgZm9yIGJvdGggaGVhZCBhbmQgdGhlIDcuMiBicmFuY2guCisKK1RoaXMgaGFz IGJlZW4gcmVncmVzc2lvbiB0ZXN0ZWQgb24geDg2NjQgd2l0aCBnY2MtNC40LjQtMTAuZmMxMwor CisKK0ZpeCBQUiAxMjAyODogIkdEQiBjcmFzaGVzIG9uIGEgZG91YmxlIGZyZWUgZHVyaW5nIG92 ZXJsb2FkIHJlc29sdXRpb24gIgorCisyMDEwLTA5LTE2ICBTYW1pIFdhZ2lhYWxsYSAgPHN3YWdp YWFsQHJlZGhhdC5jb20+CisKKwlQUiBDKysvMTIwMjgKKwkqIHZhbG9wcy5jIChmaW5kX29sb2Fk X2NoYW1wX25hbWVzcGFjZV9sb29wKTogcmVtb3ZlZCBpbmNvcnJlY3QKKwknb2xkX2NsZWFudXBz JyByZWFzc2lnbm1lbnQuCisKKzIwMTAtMDktMTYgIFNhbWkgV2FnaWFhbGxhICA8c3dhZ2lhYWxA cmVkaGF0LmNvbT4KKworCSogZ2RiLmNwL3ByMTIwMjguY2M6IE5ldy4KKwkqIGdkYi5jcC9wcjEy MDI4LmV4cDogTmV3LgorCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcHIxMjAy OC5jYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3ByMTIwMjguY2MKK25ldyBmaWxlIG1vZGUgMTAw NjQ0CitpbmRleCAwMDAwMDAwLi4wZmNhYjZiCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5jcC9wcjEyMDI4LmNjCitAQCAtMCwwICsxLDIxIEBACisrY2xhc3MgQXt9Owor K2NsYXNzIEJ7fTsKKytjbGFzcyBDOiBwdWJsaWMgQiB7fTsKKysKKytuYW1lc3BhY2UgRHsKKysg IGludCBmb28gKEEpIHsgcmV0dXJuIDExOyB9CisrICBpbnQgZm9vIChDKSB7IHJldHVybiAxMjsg fQorK30KKysKKytpbnQgbWFpbigpCisreworKyAgQSBhOworKyAgQiBiOworKyAgQyBjOworKwor KyAgRDo6Zm9vIChhKTsKKysgIC8vICBEOjpmb28gKGIpOworKyAgRDo6Zm9vIChjKTsKKysKKysg IHJldHVybiAwOworK30KK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9wcjEyMDI4 LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3ByMTIwMjguZXhwCituZXcgZmlsZSBtb2RlIDEw MDY0NAoraW5kZXggMDAwMDAwMC4uNzQ2YzZiNQorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuY3AvcHIxMjAyOC5leHAKK0BAIC0wLDAgKzEsMjkgQEAKKysjIENvcHlyaWdo dCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisr IyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4KKysKKytzZXQgdGVzdGZpbGUgcHIxMjAyOAorK3NldCBzcmNmaWxlICR7 dGVzdGZpbGV9LmNjCisraWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAg JHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfSB7ZGVidWcgYysrfV0gfSB7CisrICAgIHJldHVybiAtMQor K30KKysKKysjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworKwor K2lmICFbcnVudG9fbWFpbl0gdGhlbiB7CisrICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJy ZWFrcG9pbnQgbWFpbiIKKysgICAgY29udGludWUKKyt9CisrCisrZ2RiX3Rlc3QgInAgRDo6Zm9v KGIpIiAiQ2Fubm90IHJlc29sdmUgZnVuY3Rpb24gZm9vIHRvIGFueSBvdmVybG9hZGVkIGluc3Rh bmNlIgorZGlmZiAtLWdpdCBhL2dkYi92YWxvcHMuYyBiL2dkYi92YWxvcHMuYworaW5kZXggN2Zi YWQxMC4uNGU4M2EwNCAxMDA2NDQKKy0tLSBhL2dkYi92YWxvcHMuYworKysrIGIvZ2RiL3ZhbG9w cy5jCitAQCAtMjcxNSw3ICsyNzE1LDcgQEAgZmluZF9vbG9hZF9jaGFtcF9uYW1lc3BhY2VfbG9v cCAoc3RydWN0IHR5cGUgKiphcmdfdHlwZXMsIGludCBuYXJncywKKyAgICAgIGZ1bmN0aW9uIHN5 bWJvbCB0byBzdGFydCBvZmYgd2l0aC4pICAqLworIAorICAgb2xkX2NsZWFudXBzID0gbWFrZV9j bGVhbnVwICh4ZnJlZSwgKm9sb2FkX3N5bXMpOworLSAgb2xkX2NsZWFudXBzID0gbWFrZV9jbGVh bnVwICh4ZnJlZSwgKm9sb2FkX2NoYW1wX2J2KTsKKysgIG1ha2VfY2xlYW51cCAoeGZyZWUsICpv bG9hZF9jaGFtcF9idik7CisgICBuZXdfbmFtZXNwYWNlID0gYWxsb2NhIChuYW1lc3BhY2VfbGVu ICsgMSk7CisgICBzdHJuY3B5IChuZXdfbmFtZXNwYWNlLCBxdWFsaWZpZWRfbmFtZSwgbmFtZXNw YWNlX2xlbik7CisgICBuZXdfbmFtZXNwYWNlW25hbWVzcGFjZV9sZW5dID0gJ1wwJzsKCmRpZmYg LS1naXQgYS9nZGItcHl0aG9uLWVycm9yLXN0YXRlLnBhdGNoIGIvZ2RiLXB5dGhvbi1lcnJvci1z dGF0ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kM2RmNTE4Ci0t LSAvZGV2L251bGwKKysrIGIvZ2RiLXB5dGhvbi1lcnJvci1zdGF0ZS5wYXRjaApAQCAtMCwwICsx LDU5MiBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMTAvbXNn MDAxNzUuaHRtbAorU3ViamVjdDogUmU6IFtwYXRjaF0gcHl0aG9uOiBzYXZlL3Jlc3RvcmUvZml4 IGVycm9yIHN0YXRlCisKK09uIEZyaSwgMDggT2N0IDIwMTAgMjI6MDg6MjcgKzAyMDAsIERvdWcg RXZhbnMgd3JvdGU6Cis+IFRoZSBjb21tZW50IGFib3ZlIHRoaXMgY29kZSBzYXlzOgorPiAKKz4g ICAvKiBOb3RlOiBJZiBhbiBleGNlcHRpb24gb2NjdXJzIHB5dGhvbiB3aWxsIHByaW50IHRoZSB0 cmFjZWJhY2sgYW5kCis+ICAgICAgY2xlYXIgdGhlIGVycm9yIGluZGljYXRvci4gICovCis+IAor PiBJU1RNIHRoYXQgZWl0aGVyIHRoaXMgY29tbWVudCBpcyB3cm9uZyBvciB0aGUgYWJvdmUgcGF0 Y2ggaXMgd3JvbmcsIG9yCis+IHNvbWUgY29tYmluYXRpb24gdGhlcmVvZi4KKworVGhpcyBjb21t ZW50IGlzIHJpZ2h0LCBQeXRob24gaGFzIG5vIGJ1ZyB0aGVyZSwgb3RoZXIgZ2RiL3B5dGhvbi8g Y29kZSBoYXMKK2J1Z3MuICBUaGF0IGlzIHNvbWUgZ2RiL3B5dGhvbi8gY29kZSByZXR1cm5lZCBz dWNjZXNzIHZhbHVlIHdoaWxlIHN0aWxsCitsZWF2aW5nIHRoZSBweXRob24gZXhjZXB0aW9uIHNl dC4gIFN1Y2ggY2FzZSBpcyB1bmRlZmluZWQgYW5kIHVuY2hlY2tlZCBieQorUHl0aG9uLiAgUHl0 aG9uIGVycm9yIHN0YXRlIGRvZXMgbm90IGZvbGxvdyB0aGUgZXJybm8gUE9TSVggc2VtYW50aWNz CisJVGhlIHNldHRpbmcgb2YgZXJybm8gYWZ0ZXIgYSBzdWNjZXNzZnVsIGNhbGwgdG8gYSBmdW5j dGlvbiBpcworCXVuc3BlY2lmaWVkIFsuLi5dLgorYXMgUHl0aG9uIHJlcXVpcmVzIGluc3RlYWQ6 CisJVGhlIFB5dGhvbiBlcnJvciBzdGF0ZSBhZnRlciBhIHN1Y2Nlc3NmdWwgY2FsbCB0byBhIGZ1 bmN0aW9uIG11c3QgYmUKKwljbGVhcmVkLgorCitJIGhhdmUgY2hlY2tlZCBjYWxsZXJzIG9mIHRo ZXNlIGZ1bmN0aW9ucywgYXMgYSBjbG9zdXJlIG9uIHRoZSBjYWxsZXJzIG9mIHRoZQordG9wIHB5 LXV0aWxzLmMgZnVuY3Rpb25zLiAgVGhhdCBkb2VzIG5vdCBtZWFuIHRoaXMgUHl0aG9uIGVycm9y IHN0YXRlIGhhbmRsaW5nCit2ZXJpZmljYXRpb24gaXMgY29tcGxldGU6CisJcHl0aG9uX3N0cmlu Z190b191bmljb2RlIHVuaWNvZGVfdG9fZW5jb2RlZF9zdHJpbmcKKwl1bmljb2RlX3RvX2VuY29k ZWRfcHl0aG9uX3N0cmluZyB1bmljb2RlX3RvX3RhcmdldF9zdHJpbmcKKwl1bmljb2RlX3RvX3Rh cmdldF9weXRob25fc3RyaW5nIHB5dGhvbl9zdHJpbmdfdG9fdGFyZ2V0X3N0cmluZworCXB5dGhv bl9zdHJpbmdfdG9fdGFyZ2V0X3B5dGhvbl9zdHJpbmcgcHl0aG9uX3N0cmluZ190b19ob3N0X3N0 cmluZworCXRhcmdldF9zdHJpbmdfdG9fdW5pY29kZSBnZGJweV9vYmpfdG9fc3RyaW5nIGdkYnB5 X2V4Y2VwdGlvbl90b19zdHJpbmcKKwlnZXRfYWRkcl9mcm9tX3B5dGhvbiBjb252ZXJ0X3ZhbHVl X2Zyb21fcHl0aG9uIGZyYXB5X3JlYWRfdmFyCisJZ2RicHlfZ2V0X2Rpc3BsYXlfaGludCB2YWxw eV9nZXRpdGVtIEZJWE1FIHNldF9wYXJhbWV0ZXJfdmFsdWUKKwljb21wdXRlX2VudW1fdmFsdWVz IGluZnB5X3JlYWRfbWVtb3J5IGluZnB5X3dyaXRlX21lbW9yeQorCWluZnB5X3NlYXJjaF9tZW1v cnkgdmFscHlfbmV3IHZhbHB5X2NhbGwgdmFscHlfYmlub3AgdmFscHlfcmljaGNvbXBhcmUKKwlw cmV0dHlfcHJpbnRfb25lX3ZhbHVlIHNldF9hdHRyIHBhcm1weV9pbml0CisKK1RoZXJlZm9yZSBJ IGhhdmUgcmVtb3ZlZCB0aGUgY2hlY2sgYWZ0ZXIgUHlSdW5fU2ltcGxlRmlsZS4KKworTm8gcmVn cmVzc2lvbnMgb24ge3g4Nl82NCx4ODZfNjQtbTMyLGk2ODZ9LWZlZG9yYTE0c25hcHNob3QtbGlu dXgtZ251LgorCisKK1RoYW5rcywKK0phbgorCisKK2dkYi8KKzIwMTAtMTAtMDkgIEphbiBLcmF0 b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKworCSogcHl0aG9uL3B5LWJyZWFr cG9pbnQuYyAoYnBweV9zZXRfY29uZGl0aW9uKTogTmV3IGNvbW1lbnQuCisJKiBweXRob24vcHkt Y21kLmMgKGNtZHB5X2Z1bmN0aW9uKTogQ2FsbCBhbHNvIGdkYnB5X3ByaW50X3N0YWNrIGZvcgor CWZhaWxlZCBQeVVuaWNvZGVfRGVjb2RlLgorCShjbWRweV9jb21wbGV0ZXIpOiBTa2lwIGVsZW1l bnQgZm9yIGZhaWxlZAorCXB5dGhvbl9zdHJpbmdfdG9faG9zdF9zdHJpbmcuCisJKGNtZHB5X2lu aXQpOiBSZXR1cm4gLTEgb24gZmFpbGVkIHB5dGhvbl9zdHJpbmdfdG9faG9zdF9zdHJpbmcuCisJ KiBweXRob24vcHktZnJhbWUuYyAoZnJhcHlfcmVhZF92YXIpOiBFeHRlbmQgdGhlIGZ1bmN0aW9u IGNvbW1lbnQuCisJKiBweXRob24vcHktZnVuY3Rpb24uYyAoZm5weV9pbml0KTogUmV0dXJuIC0x IG9uIGZhaWxlZAorCXB5dGhvbl9zdHJpbmdfdG9faG9zdF9zdHJpbmcuCisJKiBweXRob24vcHkt aW5mZXJpb3IuYyAoaW5mcHlfcmVhZF9tZW1vcnksIGluZnB5X3dyaXRlX21lbW9yeSk6IEV4dGVu ZAorCXRoZSBmdW5jdGlvbiBjb21tZW50LgorCShpbmZweV9zZWFyY2hfbWVtb3J5KTogRXh0ZW5k IHRoZSBmdW5jdGlvbiBjb21tZW50LiAgUmVtb3ZlIHRoZQorCVB5RXJyX1NldFN0cmluZyBjYWxs IG9uIGFscmVhZHkgc2V0IGVycm9yIHN0YXRlLgorCSogcHl0aG9uL3B5LXBhcmFtLmMgKHNldF9w YXJhbWV0ZXJfdmFsdWUpOiBFeHRlbmQgdGhlIGZ1bmN0aW9uCisJY29tbWVudC4gIFJldHVybiAt MSBvbiBmYWlsZWQgcHl0aG9uX3N0cmluZ190b19ob3N0X3N0cmluZywgdHdpY2UuCisJKHNldF9h dHRyKTogRXh0ZW5kIHRoZSBmdW5jdGlvbiBjb21tZW50LgorCShjb21wdXRlX2VudW1fdmFsdWVz KTogRXh0ZW5kIHRoZSBmdW5jdGlvbiBjb21tZW50LiAgTmV3IHZhcmlhYmxlCisJYmFja190by4g IFByb3RlY3Qgc2VsZi0+ZW51bWVyYXRpb24gYnkgQkFDS19UTyBjbGVhbnVwcy4gIFJldHVybiAw IG9uCisJZmFpbGVkIHB5dGhvbl9zdHJpbmdfdG9faG9zdF9zdHJpbmcuCisJKGdldF9kb2Nfc3Ry aW5nKTogQ2FsbCBnZGJweV9wcmludF9zdGFjayBvbiBmYWlsZWQKKwlweXRob25fc3RyaW5nX3Rv X2hvc3Rfc3RyaW5nLgorCShwYXJtcHlfaW5pdCk6IEV4dGVuZCB0aGUgZnVuY3Rpb24gY29tbWVu dC4KKwkqIHB5dGhvbi9weS1wcmV0dHlwcmludC5jIChwcmV0dHlfcHJpbnRfb25lX3ZhbHVlKTog TGlrZXdpc2UuCisJKGdkYnB5X2dldF9kaXNwbGF5X2hpbnQsIHByaW50X2NoaWxkcmVuKTogQ2Fs bCBnZGJweV9wcmludF9zdGFjayBvbgorCWZhaWxlZCBweXRob25fc3RyaW5nX3RvX2hvc3Rfc3Ry aW5nLgorCSogcHl0aG9uL3B5LXZhbHVlLmMgKHZhbHB5X25ldywgdmFscHlfZ2V0aXRlbSwgdmFs cHlfY2FsbCkKKwkodmFscHlfYmlub3AsIHZhbHB5X3JpY2hjb21wYXJlKTogRXh0ZW5kIHRoZSBm dW5jdGlvbiBjb21tZW50LgorCSogcHl0aG9uL3B5dGhvbi5jCisJKHN0cnVjdCBweXRob25fZW52 KSA8ZXJyb3JfdHlwZSwgZXJyb3JfdmFsdWUsIGVycm9yX3RyYWNlYmFjaz46IE5ldworCWZpZWxk cy4KKwkocmVzdG9yZV9weXRob25fZW52KTogSGFuZGxlIFB5RXJyX09jY3VycmVkLiAgQ2FsbCBQ eUVycl9SZXN0b3JlLgorCShlbnN1cmVfcHl0aG9uX2Vudik6IENhbGwgUHlFcnJfRmV0Y2guCisJ KiB2YXJvYmouYyAodXBkYXRlX2R5bmFtaWNfdmFyb2JqX2NoaWxkcmVuKTogQ2FsbCBnZGJweV9w cmludF9zdGFjayBvbgorCWZhaWxlZCBjb252ZXJ0X3ZhbHVlX2Zyb21fcHl0aG9uLgorCSh2YWx1 ZV9nZXRfcHJpbnRfdmFsdWUpOiBDYWxsIGdkYnB5X3ByaW50X3N0YWNrIG9uIGZhaWxlZAorCXB5 dGhvbl9zdHJpbmdfdG9fdGFyZ2V0X3B5dGhvbl9zdHJpbmcuCisKK2dkYi90ZXN0c3VpdGUvCisy MDEwLTEwLTA5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisK KwkqIGdkYi5weXRob24vcHktZXJyb3IuZXhwOiBOZXcgZmlsZS4KKwkqIGdkYi5weXRob24vcHkt ZXJyb3IucHk6IE5ldyBmaWxlLgorCitJbmRleDogZ2RiLTcuMi9nZGIvcHl0aG9uL3B5LWJyZWFr cG9pbnQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjIub3JpZy9nZGIvcHl0aG9uL3B5LWJyZWFr cG9pbnQuYwkyMDEwLTEwLTEyIDE4OjI3OjU0LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjIv Z2RiL3B5dGhvbi9weS1icmVha3BvaW50LmMJMjAxMC0xMC0xMiAxODoyODo1OC4wMDAwMDAwMDAg KzAyMDAKK0BAIC00MjAsNiArNDIwLDkgQEAgYnBweV9nZXRfY29uZGl0aW9uIChQeU9iamVjdCAq c2VsZiwgdm9pZAorICAgcmV0dXJuIFB5U3RyaW5nX0RlY29kZSAoc3RyLCBzdHJsZW4gKHN0ciks IGhvc3RfY2hhcnNldCAoKSwgTlVMTCk7CisgfQorIAorKy8qIFJldHVybnMgMCBvbiBzdWNjZXNz LiAgUmV0dXJucyAtMSBvbiBlcnJvciwgd2l0aCBhIHB5dGhvbiBleGNlcHRpb24gc2V0LgorKyAg ICovCisrCisgc3RhdGljIGludAorIGJwcHlfc2V0X2NvbmRpdGlvbiAoUHlPYmplY3QgKnNlbGYs IFB5T2JqZWN0ICpuZXd2YWx1ZSwgdm9pZCAqY2xvc3VyZSkKKyB7CitJbmRleDogZ2RiLTcuMi9n ZGIvcHl0aG9uL3B5LWNtZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMi5vcmlnL2dkYi9weXRo b24vcHktY21kLmMJMjAxMC0xMC0xMiAxODoyNzo1NC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGIt Ny4yL2dkYi9weXRob24vcHktY21kLmMJMjAxMC0xMC0xMiAxODoyODo1OC4wMDAwMDAwMDAgKzAy MDAKK0BAIC0xMzgsNyArMTM4LDEwIEBAIGNtZHB5X2Z1bmN0aW9uIChzdHJ1Y3QgY21kX2xpc3Rf ZWxlbWVudCAKKyAgICAgYXJncyA9ICIiOworICAgYXJnb2JqID0gUHlVbmljb2RlX0RlY29kZSAo YXJncywgc3RybGVuIChhcmdzKSwgaG9zdF9jaGFyc2V0ICgpLCBOVUxMKTsKKyAgIGlmICghIGFy Z29iaikKKy0gICAgZXJyb3IgKF8oIkNvdWxkIG5vdCBjb252ZXJ0IGFyZ3VtZW50cyB0byBQeXRo b24gc3RyaW5nLiIpKTsKKysgICAgeworKyAgICAgIGdkYnB5X3ByaW50X3N0YWNrICgpOworKyAg ICAgIGVycm9yIChfKCJDb3VsZCBub3QgY29udmVydCBhcmd1bWVudHMgdG8gUHl0aG9uIHN0cmlu Zy4iKSk7CisrICAgIH0KKyAKKyAgIHR0eW9iaiA9IGZyb21fdHR5ID8gUHlfVHJ1ZSA6IFB5X0Zh bHNlOworICAgUHlfSU5DUkVGICh0dHlvYmopOworQEAgLTI1NSw2ICsyNTgsMTIgQEAgY21kcHlf Y29tcGxldGVyIChzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudAorIAkgICAgICBjb250aW51ZTsKKyAJ ICAgIH0KKyAJICByZXN1bHRbb3V0XSA9IHB5dGhvbl9zdHJpbmdfdG9faG9zdF9zdHJpbmcgKGVs dCk7CisrCSAgaWYgKHJlc3VsdFtvdXRdID09IE5VTEwpCisrCSAgICB7CisrCSAgICAgIC8qIFNr aXAgcHJvYmxlbSBlbGVtZW50cy4gICovCisrCSAgICAgIFB5RXJyX0NsZWFyICgpOworKwkgICAg ICBjb250aW51ZTsKKysJICAgIH0KKyAJICArK291dDsKKyAJfQorICAgICAgIHJlc3VsdFtvdXRd ID0gTlVMTDsKK0BAIC00NjUsNyArNDc0LDE1IEBAIGNtZHB5X2luaXQgKFB5T2JqZWN0ICpzZWxm LCBQeU9iamVjdCAqYXIKKyAgICAgICBQeU9iamVjdCAqZHNfb2JqID0gUHlPYmplY3RfR2V0QXR0 ciAoc2VsZiwgZ2RicHlfZG9jX2NzdCk7CisgCisgICAgICAgaWYgKGRzX29iaiAmJiBnZGJweV9p c19zdHJpbmcgKGRzX29iaikpCistCWRvY3N0cmluZyA9IHB5dGhvbl9zdHJpbmdfdG9faG9zdF9z dHJpbmcgKGRzX29iaik7CisrCXsKKysJICBkb2NzdHJpbmcgPSBweXRob25fc3RyaW5nX3RvX2hv c3Rfc3RyaW5nIChkc19vYmopOworKwkgIGlmIChkb2NzdHJpbmcgPT0gTlVMTCkKKysJICAgIHsK KysJICAgICAgeGZyZWUgKGNtZF9uYW1lKTsKKysJICAgICAgeGZyZWUgKHBmeF9uYW1lKTsKKysJ ICAgICAgcmV0dXJuIC0xOworKwkgICAgfQorKwl9CisgICAgIH0KKyAgIGlmICghIGRvY3N0cmlu ZykKKyAgICAgZG9jc3RyaW5nID0geHN0cmR1cCAoXygiVGhpcyBjb21tYW5kIGlzIG5vdCBkb2N1 bWVudGVkLiIpKTsKK0luZGV4OiBnZGItNy4yL2dkYi9weXRob24vcHktZnJhbWUuYworPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0tIGdkYi03LjIub3JpZy9nZGIvcHl0aG9uL3B5LWZyYW1lLmMJMjAxMC0wNi0yOCAy MzoxNjowMy4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4yL2dkYi9weXRob24vcHktZnJhbWUu YwkyMDEwLTEwLTEyIDE4OjI4OjU4LjAwMDAwMDAwMCArMDIwMAorQEAgLTM4NSw3ICszODUsOCBA QCBmcmFweV9maW5kX3NhbCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0CisgICAgc3RhcnQgdGhl IHNlYXJjaCBmcm9tIHRoYXQgYmxvY2ssIG90aGVyd2lzZSBzZWFyY2ggZnJvbSB0aGUgZnJhbWUn cworICAgIGN1cnJlbnQgYmxvY2sgKGRldGVybWluZWQgYnkgZXhhbWluaW5nIHRoZSByZXN1bWUg YWRkcmVzcyBvZiB0aGUKKyAgICBmcmFtZSkuICBUaGUgdmFyaWFibGUgYXJndW1lbnQgbXVzdCBi ZSBhIHN0cmluZyBvciBhbiBpbnN0YW5jZSBvZiBhCistICAgZ2RiLlN5bWJvbC4gIFRoZSBibG9j ayBhcmd1bWVudCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIGdkYi5CbG9jay4gICovCisrICAgZ2Ri LlN5bWJvbC4gIFRoZSBibG9jayBhcmd1bWVudCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIGdkYi5C bG9jay4gIFJldHVybnMKKysgICBOVUxMIG9uIGVycm9yLCB3aXRoIGEgcHl0aG9uIGV4Y2VwdGlv biBzZXQuICAqLworIHN0YXRpYyBQeU9iamVjdCAqCisgZnJhcHlfcmVhZF92YXIgKFB5T2JqZWN0 ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKyB7CitJbmRleDogZ2RiLTcuMi9nZGIvcHl0aG9uL3B5 LWZ1bmN0aW9uLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4yLm9yaWcvZ2RiL3B5dGhvbi9weS1m dW5jdGlvbi5jCTIwMTAtMDUtMTcgMjM6MjM6MjUuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcu Mi9nZGIvcHl0aG9uL3B5LWZ1bmN0aW9uLmMJMjAxMC0xMC0xMiAxODoyODo1OC4wMDAwMDAwMDAg KzAyMDAKK0BAIC0xMTMsNyArMTEzLDE0IEBAIGZucHlfaW5pdCAoUHlPYmplY3QgKnNlbGYsIFB5 T2JqZWN0ICphcmcKKyAgICAgeworICAgICAgIFB5T2JqZWN0ICpkc19vYmogPSBQeU9iamVjdF9H ZXRBdHRyU3RyaW5nIChzZWxmLCAiX19kb2NfXyIpOworICAgICAgIGlmIChkc19vYmogJiYgZ2Ri cHlfaXNfc3RyaW5nIChkc19vYmopKQorLQlkb2NzdHJpbmcgPSBweXRob25fc3RyaW5nX3RvX2hv c3Rfc3RyaW5nIChkc19vYmopOworKwl7CisrCSAgZG9jc3RyaW5nID0gcHl0aG9uX3N0cmluZ190 b19ob3N0X3N0cmluZyAoZHNfb2JqKTsKKysJICBpZiAoZG9jc3RyaW5nID09IE5VTEwpCisrCSAg ICB7CisrCSAgICAgIFB5X0RFQ1JFRiAoc2VsZik7CisrCSAgICAgIHJldHVybiAtMTsKKysJICAg IH0KKysJfQorICAgICB9CisgICBpZiAoISBkb2NzdHJpbmcpCisgICAgIGRvY3N0cmluZyA9IHhz dHJkdXAgKF8oIlRoaXMgZnVuY3Rpb24gaXMgbm90IGRvY3VtZW50ZWQuIikpOworSW5kZXg6IGdk Yi03LjIvZ2RiL3B5dGhvbi9weS1pbmZlcmlvci5jCis9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMi5v cmlnL2dkYi9weXRob24vcHktaW5mZXJpb3IuYwkyMDEwLTA2LTI4IDIzOjE2OjAzLjAwMDAwMDAw MCArMDIwMAorKysrIGdkYi03LjIvZ2RiL3B5dGhvbi9weS1pbmZlcmlvci5jCTIwMTAtMTAtMTIg MTg6Mjg6NTguMDAwMDAwMDAwICswMjAwCitAQCAtMjkzLDcgKzI5Myw4IEBAIGdkYnB5X2luZmVy aW9ycyAoUHlPYmplY3QgKnVudXNlZCwgUHlPYmoKKyAKKyAvKiBJbXBsZW1lbnRhdGlvbiBvZiBn ZGIucmVhZF9tZW1vcnkgKGFkZHJlc3MsIGxlbmd0aCkuCisgICAgUmV0dXJucyBhIFB5dGhvbiBi dWZmZXIgb2JqZWN0IHdpdGggTEVOR1RIIGJ5dGVzIG9mIHRoZSBpbmZlcmlvcidzCistICAgbWVt b3J5IGF0IEFERFJFU1MuICBCb3RoIGFyZ3VtZW50cyBhcmUgaW50ZWdlcnMuICAqLworKyAgIG1l bW9yeSBhdCBBRERSRVNTLiAgQm90aCBhcmd1bWVudHMgYXJlIGludGVnZXJzLiAgUmV0dXJucyBO VUxMIG9uIGVycm9yLAorKyAgIHdpdGggYSBweXRob24gZXhjZXB0aW9uIHNldC4gICovCisgc3Rh dGljIFB5T2JqZWN0ICoKKyBpbmZweV9yZWFkX21lbW9yeSAoUHlPYmplY3QgKnNlbGYsIFB5T2Jq ZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCisgeworQEAgLTM2MSw3ICszNjIsOCBAQCBpbmZweV9y ZWFkX21lbW9yeSAoUHlPYmplY3QgKnNlbGYsIFB5T2JqCisgICAgV3JpdGVzIHRoZSBjb250ZW50 cyBvZiBCVUZGRVIgKGEgUHl0aG9uIG9iamVjdCBzdXBwb3J0aW5nIHRoZSByZWFkCisgICAgYnVm ZmVyIHByb3RvY29sKSBhdCBBRERSRVNTIGluIHRoZSBpbmZlcmlvcidzIG1lbW9yeS4gIFdyaXRl IExFTkdUSAorICAgIGJ5dGVzIGZyb20gQlVGRkVSLCBvciBpdHMgZW50aXJlIGNvbnRlbnRzIGlm IHRoZSBhcmd1bWVudCBpcyBub3QKKy0gICBwcm92aWRlZC4gIFRoZSBmdW5jdGlvbiByZXR1cm5z IG5vdGhpbmcuICAqLworKyAgIHByb3ZpZGVkLiAgVGhlIGZ1bmN0aW9uIHJldHVybnMgbm90aGlu Zy4gIFJldHVybnMgTlVMTCBvbiBlcnJvciwgd2l0aAorKyAgIGEgcHl0aG9uIGV4Y2VwdGlvbiBz ZXQuICAqLworIHN0YXRpYyBQeU9iamVjdCAqCisgaW5mcHlfd3JpdGVfbWVtb3J5IChQeU9iamVj dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKKyB7CitAQCAtNDczLDcgKzQ3 NSw4IEBAIGdldF9jaGFyX2J1ZmZlciAoUHlPYmplY3QgKnNlbGYsIFB5X3NzaXoKKyAgICBzZWFy Y2ggZnJvbSBBRERSRVNTLiAgUEFUVEVSTiBpcyB0aGUgcGF0dGVybiB0byBzZWFyY2ggZm9yIChh bmQKKyAgICBtdXN0IGJlIGEgUHl0aG9uIG9iamVjdCBzdXBwb3J0aW5nIHRoZSBidWZmZXIgcHJv dG9jb2wpLgorICAgIFJldHVybnMgYSBQeXRob24gTG9uZyBvYmplY3QgaG9sZGluZyB0aGUgYWRk cmVzcyB3aGVyZSB0aGUgcGF0dGVybgorLSAgIHdhcyBsb2NhdGVkLCBvciBpZiB0aGUgcGF0dGVy biB3YXMgbm90IGZvdW5kLCByZXR1cm5zIE5vbmUuICAqLworKyAgIHdhcyBsb2NhdGVkLCBvciBp ZiB0aGUgcGF0dGVybiB3YXMgbm90IGZvdW5kLCByZXR1cm5zIE5vbmUuICBSZXR1cm5zIE5VTEwK KysgICBvbiBlcnJvciwgd2l0aCBhIHB5dGhvbiBleGNlcHRpb24gc2V0LiAgKi8KKyBzdGF0aWMg UHlPYmplY3QgKgorIGluZnB5X3NlYXJjaF9tZW1vcnkgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVj dCAqYXJncywgUHlPYmplY3QgKmt3KQorIHsKK0BAIC01MTEsMTIgKzUxNCw3IEBAIGluZnB5X3Nl YXJjaF9tZW1vcnkgKFB5T2JqZWN0ICpzZWxmLCBQeU8KKyAJfQorICAgICB9CisgICBlbHNlCist ICAgIHsKKy0gICAgICBQeUVycl9TZXRTdHJpbmcgKFB5RXhjX1J1bnRpbWVFcnJvciwKKy0JCSAg ICAgICBfKCJDYW5ub3QgZ2V0IHNlYXJjaCBhZGRyZXNzL3JhbmdlIGZyb20gUHl0aG9uLiIpKTsK Ky0KKy0gICAgICByZXR1cm4gTlVMTDsKKy0gICAgfQorKyAgICByZXR1cm4gTlVMTDsKKyAKKyAg IGlmICghUHlPYmplY3RfQ2hlY2tSZWFkQnVmZmVyIChwYXR0ZXJuKSkKKyAgICAgeworSW5kZXg6 IGdkYi03LjIvZ2RiL3B5dGhvbi9weS1wYXJhbS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMi5v cmlnL2dkYi9weXRob24vcHktcGFyYW0uYwkyMDEwLTA1LTE3IDIzOjIzOjI1LjAwMDAwMDAwMCAr MDIwMAorKysrIGdkYi03LjIvZ2RiL3B5dGhvbi9weS1wYXJhbS5jCTIwMTAtMTAtMTIgMTg6Mjg6 NTguMDAwMDAwMDAwICswMjAwCitAQCAtMTEwLDggKzExMCw4IEBAIGdldF9hdHRyIChQeU9iamVj dCAqb2JqLCBQeU9iamVjdCAqYXR0cl8KKyAgIHJldHVybiBQeU9iamVjdF9HZW5lcmljR2V0QXR0 ciAob2JqLCBhdHRyX25hbWUpOworIH0KKyAKKy0vKiBTZXQgYSBwYXJhbWV0ZXIgdmFsdWUgZnJv bSBhIFB5dGhvbiB2YWx1ZS4gIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xCistICAgb24gZmFpbHVy ZS4gICovCisrLyogU2V0IGEgcGFyYW1ldGVyIHZhbHVlIGZyb20gYSBQeXRob24gdmFsdWUuICBS ZXR1cm4gMCBvbiBzdWNjZXNzLiAgUmV0dXJucworKyAgIC0xIG9uIGVycm9yLCB3aXRoIGEgcHl0 aG9uIGV4Y2VwdGlvbiBzZXQuICAqLworIHN0YXRpYyBpbnQKKyBzZXRfcGFyYW1ldGVyX3ZhbHVl IChwYXJtcHlfb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUpCisgeworQEAgLTE0Miw3ICsx NDIsMTEgQEAgc2V0X3BhcmFtZXRlcl92YWx1ZSAocGFybXB5X29iamVjdCAqc2VsZgorIAkgICAg c2VsZi0+dmFsdWUuc3RyaW5ndmFsID0gTlVMTDsKKyAJfQorICAgICAgIGVsc2UKKy0Jc2VsZi0+ dmFsdWUuc3RyaW5ndmFsID0gcHl0aG9uX3N0cmluZ190b19ob3N0X3N0cmluZyAodmFsdWUpOwor Kwl7CisrCSAgc2VsZi0+dmFsdWUuc3RyaW5ndmFsID0gcHl0aG9uX3N0cmluZ190b19ob3N0X3N0 cmluZyAodmFsdWUpOworKwkgIGlmIChzZWxmLT52YWx1ZS5zdHJpbmd2YWwgPT0gTlVMTCkKKysJ ICAgIHJldHVybiAtMTsKKysJfQorICAgICAgIGJyZWFrOworIAorICAgICBjYXNlIHZhcl9lbnVt OgorQEAgLTE1OCw2ICsxNjIsOCBAQCBzZXRfcGFyYW1ldGVyX3ZhbHVlIChwYXJtcHlfb2JqZWN0 ICpzZWxmCisgCSAgfQorIAorIAlzdHIgPSBweXRob25fc3RyaW5nX3RvX2hvc3Rfc3RyaW5nICh2 YWx1ZSk7CisrCWlmIChzdHIgPT0gTlVMTCkKKysJICByZXR1cm4gLTE7CisgCWZvciAoaSA9IDA7 IHNlbGYtPmVudW1lcmF0aW9uW2ldOyArK2kpCisgCSAgaWYgKCEgc3RyY21wIChzZWxmLT5lbnVt ZXJhdGlvbltpXSwgc3RyKSkKKyAJICAgIGJyZWFrOworQEAgLTI1OCw3ICsyNjQsNyBAQCBzZXRf cGFyYW1ldGVyX3ZhbHVlIChwYXJtcHlfb2JqZWN0ICpzZWxmCisgICByZXR1cm4gMDsKKyB9Cisg CistLyogU2V0IGFuIGF0dHJpYnV0ZS4gICovCisrLyogU2V0IGFuIGF0dHJpYnV0ZS4gIFJldHVy bnMgLTEgb24gZXJyb3IsIHdpdGggYSBweXRob24gZXhjZXB0aW9uIHNldC4gICovCisgc3RhdGlj IGludAorIHNldF9hdHRyIChQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqYXR0cl9uYW1lLCBQeU9i amVjdCAqdmFsKQorIHsKK0BAIC0zNTgsMTIgKzM2NCwxMyBAQCBhZGRfc2V0c2hvd19nZW5lcmlj IChpbnQgcGFybWNsYXNzLCBlbnVtCisgICAgIH0KKyB9CisgCistLyogQSBoZWxwZXIgd2hpY2gg Y29tcHV0ZXMgZW51bSB2YWx1ZXMuICBSZXR1cm5zIDEgb24gc3VjY2VzcywgMCBvbgorLSAgIGVy cm9yLiAgKi8KKysvKiBBIGhlbHBlciB3aGljaCBjb21wdXRlcyBlbnVtIHZhbHVlcy4gIFJldHVy bnMgMSBvbiBzdWNjZXNzLiAgUmV0dXJucyAwIG9uCisrICAgZXJyb3IsIHdpdGggYSBweXRob24g ZXhjZXB0aW9uIHNldC4gICovCisgc3RhdGljIGludAorIGNvbXB1dGVfZW51bV92YWx1ZXMgKHBh cm1weV9vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICplbnVtX3ZhbHVlcykKKyB7CisgICBQeV9zc2l6 ZV90IHNpemUsIGk7CisrICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKKyAKKyAgIGlmICghIGVu dW1fdmFsdWVzKQorICAgICB7CitAQCAtMzkwLDYgKzM5Nyw3IEBAIGNvbXB1dGVfZW51bV92YWx1 ZXMgKHBhcm1weV9vYmplY3QgKnNlbGYKKyAgICAgfQorIAorICAgc2VsZi0+ZW51bWVyYXRpb24g PSB4bWFsbG9jICgoc2l6ZSArIDEpICogc2l6ZW9mIChjaGFyICopKTsKKysgIGJhY2tfdG8gPSBt YWtlX2NsZWFudXAgKGZyZWVfY3VycmVudF9jb250ZW50cywgJnNlbGYtPmVudW1lcmF0aW9uKTsK KyAgIG1lbXNldCAoc2VsZi0+ZW51bWVyYXRpb24sIDAsIChzaXplICsgMSkgKiBzaXplb2YgKGNo YXIgKikpOworIAorICAgZm9yIChpID0gMDsgaSA8IHNpemU7ICsraSkKK0BAIC0zOTcsMTYgKzQw NSwyNyBAQCBjb21wdXRlX2VudW1fdmFsdWVzIChwYXJtcHlfb2JqZWN0ICpzZWxmCisgICAgICAg UHlPYmplY3QgKml0ZW0gPSBQeVNlcXVlbmNlX0dldEl0ZW0gKGVudW1fdmFsdWVzLCBpKTsKKyAK KyAgICAgICBpZiAoISBpdGVtKQorLQlyZXR1cm4gMDsKKysJeworKwkgIGRvX2NsZWFudXBzIChi YWNrX3RvKTsKKysJICByZXR1cm4gMDsKKysJfQorICAgICAgIGlmICghIGdkYnB5X2lzX3N0cmlu ZyAoaXRlbSkpCisgCXsKKysJICBkb19jbGVhbnVwcyAoYmFja190byk7CisgCSAgUHlFcnJfU2V0 U3RyaW5nIChQeUV4Y19SdW50aW1lRXJyb3IsIAorIAkJCSAgIF8oIlRoZSBlbnVtZXJhdGlvbiBp dGVtIG5vdCBhIHN0cmluZy4iKSk7CisgCSAgcmV0dXJuIDA7CisgCX0KKyAgICAgICBzZWxmLT5l bnVtZXJhdGlvbltpXSA9IHB5dGhvbl9zdHJpbmdfdG9faG9zdF9zdHJpbmcgKGl0ZW0pOworKyAg ICAgIGlmIChzZWxmLT5lbnVtZXJhdGlvbltpXSA9PSBOVUxMKQorKwl7CisrCSAgZG9fY2xlYW51 cHMgKGJhY2tfdG8pOworKwkgIHJldHVybiAwOworKwl9CisrICAgICAgbWFrZV9jbGVhbnVwICh4 ZnJlZSwgKGNoYXIgKikgc2VsZi0+ZW51bWVyYXRpb25baV0pOworICAgICB9CisgCisrICBkaXNj YXJkX2NsZWFudXBzIChiYWNrX3RvKTsKKyAgIHJldHVybiAxOworIH0KKyAKK0BAIC00MjIsNyAr NDQxLDExIEBAIGdldF9kb2Nfc3RyaW5nIChQeU9iamVjdCAqb2JqZWN0LCBQeU9iamUKKyAgICAg ICBQeU9iamVjdCAqZHNfb2JqID0gUHlPYmplY3RfR2V0QXR0ciAob2JqZWN0LCBhdHRyKTsKKyAK KyAgICAgICBpZiAoZHNfb2JqICYmIGdkYnB5X2lzX3N0cmluZyAoZHNfb2JqKSkKKy0JcmVzdWx0 ID0gcHl0aG9uX3N0cmluZ190b19ob3N0X3N0cmluZyAoZHNfb2JqKTsKKysJeworKwkgIHJlc3Vs dCA9IHB5dGhvbl9zdHJpbmdfdG9faG9zdF9zdHJpbmcgKGRzX29iaik7CisrCSAgaWYgKHJlc3Vs dCA9PSBOVUxMKQorKwkgICAgZ2RicHlfcHJpbnRfc3RhY2sgKCk7CisrCX0KKyAgICAgfQorICAg aWYgKCEgcmVzdWx0KQorICAgICByZXN1bHQgPSB4c3RyZHVwIChfKCJUaGlzIGNvbW1hbmQgaXMg bm90IGRvY3VtZW50ZWQuIikpOworQEAgLTQ0OSw4ICs0NzIsOSBAQCBnZXRfZG9jX3N0cmluZyAo UHlPYmplY3QgKm9iamVjdCwgUHlPYmplCisgCisgICAgVGhlIGRvY3VtZW50YXRpb24gZm9yIHRo ZSBwYXJhbWV0ZXIgaXMgdGFrZW4gZnJvbSB0aGUgZG9jIHN0cmluZworICAgIGZvciB0aGUgcHl0 aG9uIGNsYXNzLgorLSAgIAorLSovCisrCisrICAgUmV0dXJucyAtMSBvbiBlcnJvciwgd2l0aCBh IHB5dGhvbiBleGNlcHRpb24gc2V0LiAgKi8KKysKKyBzdGF0aWMgaW50CisgcGFybXB5X2luaXQg KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCisgeworSW5k ZXg6IGdkYi03LjIvZ2RiL3B5dGhvbi9weS1wcmV0dHlwcmludC5jCis9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0g Z2RiLTcuMi5vcmlnL2dkYi9weXRob24vcHktcHJldHR5cHJpbnQuYwkyMDEwLTEwLTEyIDE4OjI3 OjU3LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjIvZ2RiL3B5dGhvbi9weS1wcmV0dHlwcmlu dC5jCTIwMTAtMTAtMTIgMTg6Mjg6NTguMDAwMDAwMDAwICswMjAwCitAQCAtMTg1LDggKzE4NSw4 IEBAIGZpbmRfcHJldHR5X3ByaW50ZXIgKFB5T2JqZWN0ICp2YWx1ZSkKKyAgICBpcyByZXR1cm5l ZC4gIElmIHRoZSBmdW5jdGlvbiByZXR1cm5zIFB5X05PTkUgdGhhdCBtZWFucyB0aGUgcHJldHR5 CisgICAgcHJpbnRlciByZXR1cm5lZCB0aGUgUHl0aG9uIE5vbmUgYXMgYSB2YWx1ZS4gIE90aGVy d2lzZSwgaWYgdGhlCisgICAgZnVuY3Rpb24gcmV0dXJucyBhIHZhbHVlLCAgKk9VVF9WQUxVRSBp cyBzZXQgdG8gdGhlIHZhbHVlLCBhbmQgTlVMTAorLSAgIGlzIHJldHVybmVkLiAgT24gZXJyb3Is ICpPVVRfVkFMVUUgaXMgc2V0IHRvIE5VTEwsIGFuZCBOVUxMIGlzCistICAgcmV0dXJuZWQuICAq LworKyAgIGlzIHJldHVybmVkLiAgT24gZXJyb3IsICpPVVRfVkFMVUUgaXMgc2V0IHRvIE5VTEws IE5VTEwgaXMKKysgICByZXR1cm5lZCwgd2l0aCBhIHB5dGhvbiBleGNlcHRpb24gc2V0LiAgKi8K KyAKKyBzdGF0aWMgUHlPYmplY3QgKgorIHByZXR0eV9wcmludF9vbmVfdmFsdWUgKFB5T2JqZWN0 ICpwcmludGVyLCBzdHJ1Y3QgdmFsdWUgKipvdXRfdmFsdWUpCitAQCAtMjMyLDcgKzIzMiwxMSBA QCBnZGJweV9nZXRfZGlzcGxheV9oaW50IChQeU9iamVjdCAqcHJpbnRlCisgICBpZiAoaGludCkK KyAgICAgeworICAgICAgIGlmIChnZGJweV9pc19zdHJpbmcgKGhpbnQpKQorLQlyZXN1bHQgPSBw eXRob25fc3RyaW5nX3RvX2hvc3Rfc3RyaW5nIChoaW50KTsKKysJeworKwkgIHJlc3VsdCA9IHB5 dGhvbl9zdHJpbmdfdG9faG9zdF9zdHJpbmcgKGhpbnQpOworKwkgIGlmIChyZXN1bHQgPT0gTlVM TCkKKysJICAgIGdkYnB5X3ByaW50X3N0YWNrICgpOworKwl9CisgICAgICAgUHlfREVDUkVGICho aW50KTsKKyAgICAgfQorICAgZWxzZQorQEAgLTU3NCw3ICs1NzgsMTAgQEAgcHJpbnRfY2hpbGRy ZW4gKFB5T2JqZWN0ICpwcmludGVyLCBjb25zdAorIAkgIGVsc2UKKyAJICAgIHsKKyAJICAgICAg b3V0cHV0ID0gcHl0aG9uX3N0cmluZ190b19ob3N0X3N0cmluZyAocHlfdik7CistCSAgICAgIGZw dXRzX2ZpbHRlcmVkIChvdXRwdXQsIHN0cmVhbSk7CisrCSAgICAgIGlmICghb3V0cHV0KQorKwkJ Z2RicHlfcHJpbnRfc3RhY2sgKCk7CisrCSAgICAgIGVsc2UKKysJCWZwdXRzX2ZpbHRlcmVkIChv dXRwdXQsIHN0cmVhbSk7CisgCSAgICAgIHhmcmVlIChvdXRwdXQpOworIAkgICAgfQorIAl9CitJ bmRleDogZ2RiLTcuMi9nZGIvcHl0aG9uL3B5LXZhbHVlLmMKKz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGIt Ny4yLm9yaWcvZ2RiL3B5dGhvbi9weS12YWx1ZS5jCTIwMTAtMTAtMTIgMTg6Mjc6NTQuMDAwMDAw MDAwICswMjAwCisrKysgZ2RiLTcuMi9nZGIvcHl0aG9uL3B5LXZhbHVlLmMJMjAxMC0xMC0xMiAx ODoyODo1OC4wMDAwMDAwMDAgKzAyMDAKK0BAIC0xMTQsNyArMTE0LDggQEAgbm90ZV92YWx1ZSAo dmFsdWVfb2JqZWN0ICp2YWx1ZV9vYmopCisgICB2YWx1ZXNfaW5fcHl0aG9uID0gdmFsdWVfb2Jq OworIH0KKyAKKy0vKiBDYWxsZWQgd2hlbiBhIG5ldyBnZGIuVmFsdWUgb2JqZWN0IG5lZWRzIHRv IGJlIGFsbG9jYXRlZC4gICovCisrLyogQ2FsbGVkIHdoZW4gYSBuZXcgZ2RiLlZhbHVlIG9iamVj dCBuZWVkcyB0byBiZSBhbGxvY2F0ZWQuICBSZXR1cm5zIE5VTEwgb24KKysgICBlcnJvciwgd2l0 aCBhIHB5dGhvbiBleGNlcHRpb24gc2V0LiAgKi8KKyBzdGF0aWMgUHlPYmplY3QgKgorIHZhbHB5 X25ldyAoUHlUeXBlT2JqZWN0ICpzdWJ0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmtl eXdvcmRzKQorIHsKK0BAIC0zMzQsNyArMzM1LDcgQEAgdmFscHlfbGVuZ3RoIChQeU9iamVjdCAq c2VsZikKKyB9CisgCisgLyogR2l2ZW4gc3RyaW5nIG5hbWUgb2YgYW4gZWxlbWVudCBpbnNpZGUg c3RydWN0dXJlLCByZXR1cm4gaXRzIHZhbHVlCistICAgb2JqZWN0LiAgKi8KKysgICBvYmplY3Qu ICBSZXR1cm5zIE5VTEwgb24gZXJyb3IsIHdpdGggYSBweXRob24gZXhjZXB0aW9uIHNldC4gICov Cisgc3RhdGljIFB5T2JqZWN0ICoKKyB2YWxweV9nZXRpdGVtIChQeU9iamVjdCAqc2VsZiwgUHlP YmplY3QgKmtleSkKKyB7CitAQCAtNDY4LDcgKzQ2OSw4IEBAIGVudW0gdmFscHlfb3Bjb2RlCisg ICAoKFRZUEVfQ09ERSAoVFlQRSkgPT0gVFlQRV9DT0RFX1JFRikgPyAoVFlQRV9UQVJHRVRfVFlQ RSAoVFlQRSkpIDogKFRZUEUpKQorIAorIC8qIFJldHVybnMgYSB2YWx1ZSBvYmplY3Qgd2hpY2gg aXMgdGhlIHJlc3VsdCBvZiBhcHBseWluZyB0aGUgb3BlcmF0aW9uCistICAgc3BlY2lmaWVkIGJ5 IE9QQ09ERSB0byB0aGUgZ2l2ZW4gYXJndW1lbnRzLiAgKi8KKysgICBzcGVjaWZpZWQgYnkgT1BD T0RFIHRvIHRoZSBnaXZlbiBhcmd1bWVudHMuICBSZXR1cm5zIE5VTEwgb24gZXJyb3IsIHdpdGgK KysgICBhIHB5dGhvbiBleGNlcHRpb24gc2V0LiAgKi8KKyBzdGF0aWMgUHlPYmplY3QgKgorIHZh bHB5X2Jpbm9wIChlbnVtIHZhbHB5X29wY29kZSBvcGNvZGUsIFB5T2JqZWN0ICpzZWxmLCBQeU9i amVjdCAqb3RoZXIpCisgeworQEAgLTcyMyw3ICs3MjUsOCBAQCB2YWxweV94b3IgKFB5T2JqZWN0 ICpzZWxmLCBQeU9iamVjdCAqb3RoCisgICByZXR1cm4gdmFscHlfYmlub3AgKFZBTFBZX0JJVFhP Uiwgc2VsZiwgb3RoZXIpOworIH0KKyAKKy0vKiBJbXBsZW1lbnRzIGNvbXBhcmlzb24gb3BlcmF0 aW9ucyBmb3IgdmFsdWUgb2JqZWN0cy4gICovCisrLyogSW1wbGVtZW50cyBjb21wYXJpc29uIG9w ZXJhdGlvbnMgZm9yIHZhbHVlIG9iamVjdHMuICBSZXR1cm5zIE5VTEwgb24gZXJyb3IsCisrICAg d2l0aCBhIHB5dGhvbiBleGNlcHRpb24gc2V0LiAgKi8KKyBzdGF0aWMgUHlPYmplY3QgKgorIHZh bHB5X3JpY2hjb21wYXJlIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm90aGVyLCBpbnQgb3Ap CisgeworSW5kZXg6IGdkYi03LjIvZ2RiL3B5dGhvbi9weXRob24uYworPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0t IGdkYi03LjIub3JpZy9nZGIvcHl0aG9uL3B5dGhvbi5jCTIwMTAtMTAtMTIgMTg6Mjc6NTQuMDAw MDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi9nZGIvcHl0aG9uL3B5dGhvbi5jCTIwMTAtMTAtMTIg MTg6Mjg6NTguMDAwMDAwMDAwICswMjAwCitAQCAtODIsNiArODIsNyBAQCBzdHJ1Y3QgcHl0aG9u X2VudgorICAgUHlHSUxTdGF0ZV9TVEFURSBzdGF0ZTsKKyAgIHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoOworICAgY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gKmxhbmd1YWdlOworKyAgUHlPYmpl Y3QgKmVycm9yX3R5cGUsICplcnJvcl92YWx1ZSwgKmVycm9yX3RyYWNlYmFjazsKKyB9OworIAor IHN0YXRpYyB2b2lkCitAQCAtODksNiArOTAsMTYgQEAgcmVzdG9yZV9weXRob25fZW52ICh2b2lk ICpwKQorIHsKKyAgIHN0cnVjdCBweXRob25fZW52ICplbnYgPSAoc3RydWN0IHB5dGhvbl9lbnYg KilwOworIAorKyAgLyogTGVmdG92ZXIgUHl0aG9uIGVycm9yIGlzIGZvcmJpZGRlbiBieSBQeXRo b24gRXhjZXB0aW9uIEhhbmRsaW5nLiAgKi8KKysgIGlmIChQeUVycl9PY2N1cnJlZCAoKSkKKysg ICAgeworKyAgICAgIC8qIFRoaXMgb3JkZXIgaXMgc2ltaWxhciB0byB0aGUgb25lIGNhbGxpbmcg ZXJyb3IgYWZ0ZXJ3YXJkcy4gKi8KKysgICAgICBnZGJweV9wcmludF9zdGFjayAoKTsKKysgICAg ICB3YXJuaW5nIChfKCJpbnRlcm5hbCBlcnJvcjogVW5oYW5kbGVkIFB5dGhvbiBleGNlcHRpb24i KSk7CisrICAgIH0KKysKKysgIFB5RXJyX1Jlc3RvcmUgKGVudi0+ZXJyb3JfdHlwZSwgZW52LT5l cnJvcl92YWx1ZSwgZW52LT5lcnJvcl90cmFjZWJhY2spOworKworICAgUHlHSUxTdGF0ZV9SZWxl YXNlIChlbnYtPnN0YXRlKTsKKyAgIHB5dGhvbl9nZGJhcmNoID0gZW52LT5nZGJhcmNoOworICAg cHl0aG9uX2xhbmd1YWdlID0gZW52LT5sYW5ndWFnZTsKK0BAIC0xMTEsNiArMTIyLDkgQEAgZW5z dXJlX3B5dGhvbl9lbnYgKHN0cnVjdCBnZGJhcmNoICpnZGJhcgorICAgcHl0aG9uX2dkYmFyY2gg PSBnZGJhcmNoOworICAgcHl0aG9uX2xhbmd1YWdlID0gbGFuZ3VhZ2U7CisgCisrICAvKiBTYXZl IGl0IGFuZCBlbnN1cmUgISBQeUVycl9PY2N1cnJlZCAoKSBhZnRlcndhcmRzLiAgKi8KKysgIFB5 RXJyX0ZldGNoICgmZW52LT5lcnJvcl90eXBlLCAmZW52LT5lcnJvcl92YWx1ZSwgJmVudi0+ZXJy b3JfdHJhY2ViYWNrKTsKKysgIAorICAgcmV0dXJuIG1ha2VfY2xlYW51cCAocmVzdG9yZV9weXRo b25fZW52LCBlbnYpOworIH0KKyAKK0luZGV4OiBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLnB5 dGhvbi9weS1lcnJvci5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAw MDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLnB5 dGhvbi9weS1lcnJvci5leHAJMjAxMC0xMC0xMiAxODoyODo1OC4wMDAwMDAwMDAgKzAyMDAKK0BA IC0wLDAgKzEsNTYgQEAKKysjIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwg b3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws CisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrIyBUZXN0 IGVycm9yIHdoaWxlIGxvYWRpbmcgKi1nZGIucHkuICBJQk0xMDQ3IGlzIGNob3NlbiBhcyBwb3Nz aWJseSBzdXBwb3J0ZWQKKysjIGJ5IGdsaWJjIGJ1dCB1bnN1cHBvcnRlZCBieSBQeXRob24KKysK KytzZXQgdGVzdGZpbGUgInB5LWVycm9yIgorKworK2xvYWRfbGliIGdkYi1weXRob24uZXhwCisr CisrIyBTdGFydCB3aXRoIGEgZnJlc2ggZ2RiLgorK2dkYl9leGl0CisrZ2RiX3N0YXJ0CisrCisr IyBTa2lwIGFsbCB0ZXN0cyBpZiBQeXRob24gc2NyaXB0aW5nIGlzIG5vdCBlbmFibGVkLgorK2lm IHsgW3NraXBfcHl0aG9uX3Rlc3RzXSB9IHsgY29udGludWUgfQorKworK3NldCBjaGFyc2V0ICJJ Qk0xMDQ3IgorKworK3NldCB0ZXN0MiAibWFpbiByZWFjaGVkIgorKworK3NldCB0ZXN0ICJzZXQg aG9zdC1jaGFyc2V0ICRjaGFyc2V0IgorK3NldCB0ZXN0X3JlZ2V4IFtzdHJpbmdfdG9fcmVnZXhw ICR0ZXN0XQorK2dkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKKysgICAgLXJlICJeJHRl c3RfcmVnZXhcclxuJGdkYl9wcm9tcHQgJCIgeworKwlwYXNzICR0ZXN0CisrICAgIH0KKysgICAg LXJlICJeJHRlc3RfcmVnZXhcclxuVW5kZWZpbmVkIGl0ZW06IFwiJGNoYXJzZXRcIlxcLlxyXG4k Z2RiX3Byb21wdCAkIiB7CisrCXhmYWlsICR0ZXN0CisrCXVudGVzdGVkICR0ZXN0MgorKwlzZXQg dGVzdDIgIiIKKysgICAgfQorK30KKysKKytpZiB7JHRlc3QyID09ICIifSB7CisrICAgIHJldHVy biAwCisrfQorKworK3NldCByZW1vdGVfcHl0aG9uX2ZpbGUgW3JlbW90ZV9kb3dubG9hZCBob3N0 ICR7c3JjZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0ucHldCisrCisrIyBhcmdjPUxvb2t1cEVy cm9yOiB1bmtub3duIGVuY29kaW5nOiBJQk0xMDQ3CisrZ2RiX3Rlc3QgInNvdXJjZSAkcmVtb3Rl X3B5dGhvbl9maWxlIiAiVHJhY2ViYWNrLipDbGFzc05hbWUuKlxyXG5Mb29rdXBFcnJvcjogdW5r bm93biBlbmNvZGluZzogJGNoYXJzZXQiICR0ZXN0MgorKworK2dkYl90ZXN0ICJwIDEiICIgPSAx IiAibm8gZGVsYXllZCBlcnJvciIKK0luZGV4OiBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLnB5 dGhvbi9weS1lcnJvci5weQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAw OjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0 aG9uL3B5LWVycm9yLnB5CTIwMTAtMTAtMTIgMTg6Mjg6NTguMDAwMDAwMDAwICswMjAwCitAQCAt MCwwICsxLDI1IEBACisrIyBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y CisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor KyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworK2ltcG9ydCBn ZGIKKysKKytjbGFzcyBDbGFzc05hbWUoZ2RiLkNvbW1hbmQpOgorKyAgICAnYScKKysgICAgZGVm IF9faW5pdF9fKHNlbGYpOgorKyAgICAgICAgZ2RiLkNvbW1hbmQuX19pbml0X18gKHNlbGYsICJD bGFzc05hbWUiLCBnZGIuQ09NTUFORF9EQVRBLCBwcmVmaXg9VHJ1ZSkKKysgICAgZGVmIGludm9r ZShzZWxmLCBhcmdzLCBmcm9tX3R0eSk6CisrICAgICAgICBwcmludAorKworK0NsYXNzTmFtZSgp CitJbmRleDogZ2RiLTcuMi9nZGIvdmFyb2JqLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4yLm9y aWcvZ2RiL3Zhcm9iai5jCTIwMTAtMTAtMTIgMTg6Mjc6NTQuMDAwMDAwMDAwICswMjAwCisrKysg Z2RiLTcuMi9nZGIvdmFyb2JqLmMJMjAxMC0xMC0xMiAxODoyODo1OC4wMDAwMDAwMDAgKzAyMDAK K0BAIC0xMDU0LDYgKzEwNTQsOCBAQCB1cGRhdGVfZHluYW1pY192YXJvYmpfY2hpbGRyZW4gKHN0 cnVjdCB2CisgCSAgICBlcnJvciAoXygiSW52YWxpZCBpdGVtIGZyb20gdGhlIGNoaWxkIGxpc3Qi KSk7CisgCisgCSAgdiA9IGNvbnZlcnRfdmFsdWVfZnJvbV9weXRob24gKHB5X3YpOworKwkgIGlm ICh2ID09IE5VTEwpCisrCSAgICBnZGJweV9wcmludF9zdGFjayAoKTsKKyAJICBpbnN0YWxsX2R5 bmFtaWNfY2hpbGQgKHZhciwgY2FuX21lbnRpb24gPyBjaGFuZ2VkIDogTlVMTCwKKyAJCQkJIGNh bl9tZW50aW9uID8gbmV3IDogTlVMTCwKKyAJCQkJIGNhbl9tZW50aW9uID8gdW5jaGFuZ2VkIDog TlVMTCwKK0BAIC0yNTQyLDYgKzI1NDQsOCBAQCB2YWx1ZV9nZXRfcHJpbnRfdmFsdWUgKHN0cnVj dCB2YWx1ZSAqdmFsCisgCQkJdHlwZSA9IGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5f Y2hhcjsKKyAJCQlQeV9ERUNSRUYgKHB5X3N0cik7CisgCQkgICAgICB9CisrCQkgICAgZWxzZQor KwkJICAgICAgZ2RicHlfcHJpbnRfc3RhY2sgKCk7CisgCQkgIH0KKyAJCVB5X0RFQ1JFRiAob3V0 cHV0KTsKKyAJICAgICAgfQoKZGlmZiAtLWdpdCBhL2dkYi10ZXN0c3VpdGUtbGliLXB5dGhvbi5w YXRjaCBiL2dkYi10ZXN0c3VpdGUtbGliLXB5dGhvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi41YTRhNTYwCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXRlc3RzdWl0 ZS1saWItcHl0aG9uLnBhdGNoCkBAIC0wLDAgKzEsNzUgQEAKK2FkMjBlNWViMTVkMDM3YTMxZTNi NDg0ZTlmNTc1NDJkYzkyN2MwYTkKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIw MTAtMTAvbXNnMDAwMDUuaHRtbAorCisjIyMgc3JjL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCTIw MTAvMDkvMzAgMTg6NTg6MDcJMS4yNDYyCisjIyMgc3JjL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9n CTIwMTAvMTAvMDEgMTc6MDM6NDkJMS4yNDYzCisjIyAtMSwzICsxLDE5IEBACisrMjAxMC0xMC0w MSAgRG91ZyBFdmFucyAgPGRqZUBnb29nbGUuY29tPgorKworKwkqIGxpYi9nZGItcHl0aG9uLmV4 cDogTmV3IGZpbGUuCisrCSogZ2RiLnB5dGhvbi9weS1ibG9jay5leHA6IFVzZSBpdC4KKysJKiBn ZGIucHl0aG9uL3B5LWJyZWFrcG9pbnQuZXhwOiBEaXR0by4KKysJKiBnZGIucHl0aG9uL3B5LWZy YW1lLmV4cDogRGl0dG8uCisrCSogZ2RiLnB5dGhvbi9weS1pbmZlcmlvci5leHA6IERpdHRvLgor KwkqIGdkYi5weXRob24vcHktcGFyYW0uZXhwOiBEaXR0by4KKysJKiBnZGIucHl0aG9uL3B5LXBy ZXR0eXByaW50LmV4cDogRGl0dG8uCisrCSogZ2RiLnB5dGhvbi9weS1zaGFyZWQuZXhwOiBEaXR0 by4KKysJKiBnZGIucHl0aG9uL3B5LXN5bWJvbC5leHA6IERpdHRvLgorKwkqIGdkYi5weXRob24v cHktc3ltdGFiLmV4cDogRGl0dG8uCisrCSogZ2RiLnB5dGhvbi9weS10eXBlLmV4cDogRGl0dG8u CisrCSogZ2RiLnB5dGhvbi9weS12YWx1ZS5leHA6IERpdHRvLgorKwkqIGdkYi5weXRob24vcHl0 aG9uLmV4cDogRGl0dG8uCisrCisgMjAxMC0wOS0zMCAgVG9tIFRyb21leSAgPHRyb21leUByZWRo YXQuY29tPgorIAorIAkqIGdkYi5iYXNlL2Fub24uZXhwOiBOZXcgZmlsZS4KKy0tLSBzcmMvZ2Ri L3Rlc3RzdWl0ZS9saWIvZ2RiLXB5dGhvbi5leHAKKysrKyBzcmMvZ2RiL3Rlc3RzdWl0ZS9saWIv Z2RiLXB5dGhvbi5leHAJMjAxMC0xMC0xMiAxNzo1ODozNS45MDQ0NjgwMDAgKzAwMDAKK0BAIC0w LDAgKzEsNDcgQEAKKysjIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKysjIFV0aWxpdGllcyBm b3IgcHl0aG9uLXNjcmlwdGluZyByZWxhdGVkIHRlc3RzLgorKworKyMgUnVuIGEgY29tbWFuZCBp biBHREIsIGFuZCByZXBvcnQgYSBmYWlsdXJlIGlmIGEgUHl0aG9uIGV4Y2VwdGlvbiBpcyB0aHJv d24uCisrIyBJZiByZXBvcnRfcGFzcyBpcyB0cnVlLCByZXBvcnQgYSBwYXNzIGlmIG5vIGV4Y2Vw dGlvbiBpcyB0aHJvd24uCisrCisrcHJvYyBnZGJfcHlfdGVzdF9zaWxlbnRfY21kIHsgY21kIG5h bWUgcmVwb3J0X3Bhc3MgfSB7CisrICAgIGdsb2JhbCBnZGJfcHJvbXB0CisrCisrICAgIGdkYl90 ZXN0X211bHRpcGxlICRjbWQgJG5hbWUgeworKwktcmUgIlRyYWNlYmFjay4qJGdkYl9wcm9tcHQg JCIgeyBmYWlsICRuYW1lIH0KKysJLXJlICIkZ2RiX3Byb21wdCAkIiAgICAgICAgICAgIHsgaWYg JHJlcG9ydF9wYXNzIHsgcGFzcyAkbmFtZSB9IH0KKysgICAgfQorK30KKysKKysjIFVzYWdlOiBn ZGJfcHlfdGVzdF9tdWx0aXBsZSBOQU1FIElOUFVUIFJFU1VMVCB7SU5QVVQgUkVTVUxUfS4uLgor KyMgUnVuIGEgdGVzdCBuYW1lZCBOQU1FLCBjb25zaXN0aW5nIG9mIG11bHRpcGxlIGxpbmVzIG9m IGlucHV0LgorKyMgQWZ0ZXIgZWFjaCBpbnB1dCBsaW5lIElOUFVULCBzZWFyY2ggZm9yIHJlc3Vs dCBsaW5lIFJFU1VMVC4KKysjIFN1Y2NlZWQgaWYgYWxsIHJlc3VsdHMgYXJlIHNlZW47IGZhaWwg b3RoZXJ3aXNlLgorKworK3Byb2MgZ2RiX3B5X3Rlc3RfbXVsdGlwbGUgeyBuYW1lIGFyZ3MgfSB7 CisrICAgIGdsb2JhbCBnZGJfcHJvbXB0CisrICAgIGZvcmVhY2gge2lucHV0IHJlc3VsdH0gJGFy Z3MgeworKwlpZiB7W2dkYl90ZXN0X211bHRpcGxlICRpbnB1dCAiJG5hbWUgLSAkaW5wdXQiIHsK KysJICAgIC1yZSAiXFtcclxuXF0qKCRyZXN1bHQpXFtcclxuXF0rKCRnZGJfcHJvbXB0IHwgKj4p JCIgeworKwkJcGFzcyAiJG5hbWUgLSAkaW5wdXQiCisrCSAgICB9CisrCX1dfSB7CisrCSAgICBy ZXR1cm4gMQorKwl9CisrICAgIH0KKysgICAgcmV0dXJuIDAKKyt9CgpkaWZmIC0tZ2l0IGEvZ2Ri LXVwc3RyZWFtLnBhdGNoIGIvZ2RiLXVwc3RyZWFtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLmFkM2QxMGMKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItdXBzdHJlYW0u cGF0Y2gKQEAgLTAsMCArMSw0NjcgQEAKK2h0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93 X2J1Zy5jZ2k/aWQ9NjEwOTg2CitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEw LTA4L21zZzAwMTEyLmh0bWwKKworIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTAvMDgvMTggMjI6 NTc6NDUJMS4xMjA5NworIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTAvMDgvMTkgMDc6MzQ6MjYJ MS4xMjA5OAorIyMgLTEsMyArMSw5IEBACisrMjAxMC0wOC0xOSAgSmFuIEtyYXRvY2h2aWwgIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorKworKwkqIHZhcm9iai5jICh2YXJvYmpfY3JlYXRl KTogUmVwbGFjZSB2YXJpYWJsZSBvbGRfZmkgd2l0aCBvbGRfaWQsCisrCWluaXRpYWxpemUgaXQg YnkgbnVsbF9mcmFtZV9pZCwgd3JhcCBpdHMgdXNhZ2UgYnkgZ2V0X2ZyYW1lX2lkLAorKwlmcmFt ZV9pZF9wIGFuZCBmcmFtZV9maW5kX2J5X2lkLgorKworIDIwMTAtMDgtMTggIFRvbSBUcm9tZXkg IDx0cm9tZXlAcmVkaGF0LmNvbT4KKyAKKyAJUFIgcHl0aG9uLzExOTAwOgorLS0tIHNyYy9nZGIv dmFyb2JqLmMJMjAxMC8wOC8wNiAxNDoxNzo1NgkxLjE1OQorKysrIHNyYy9nZGIvdmFyb2JqLmMJ MjAxMC8wOC8xOSAwNzozNDoyNwkxLjE2MAorQEAgLTUyNCw3ICs1MjQsNyBAQCB2YXJvYmpfY3Jl YXRlIChjaGFyICpvYmpuYW1lLAorIHsKKyAgIHN0cnVjdCB2YXJvYmogKnZhcjsKKyAgIHN0cnVj dCBmcmFtZV9pbmZvICpmaTsKKy0gIHN0cnVjdCBmcmFtZV9pbmZvICpvbGRfZmkgPSBOVUxMOwor KyAgc3RydWN0IGZyYW1lX2lkIG9sZF9pZCA9IG51bGxfZnJhbWVfaWQ7CisgICBzdHJ1Y3QgYmxv Y2sgKmJsb2NrOworICAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbjsKKyAKK0BAIC02MTEsNyAr NjExLDcgQEAKKyAKKyAJICB2YXItPnJvb3QtPmZyYW1lID0gZ2V0X2ZyYW1lX2lkIChmaSk7Cisg CSAgdmFyLT5yb290LT50aHJlYWRfaWQgPSBwaWRfdG9fdGhyZWFkX2lkIChpbmZlcmlvcl9wdGlk KTsKKy0JICBvbGRfZmkgPSBnZXRfc2VsZWN0ZWRfZnJhbWUgKE5VTEwpOworKwkgIG9sZF9pZCA9 IGdldF9mcmFtZV9pZCAoZ2V0X3NlbGVjdGVkX2ZyYW1lIChOVUxMKSk7CisgCSAgc2VsZWN0X2Zy YW1lIChmaSk7CSAKKyAJfQorIAorQEAgLTYzOSw4ICs2MzksOCBAQAorICAgICAgIHZhci0+cm9v dC0+cm9vdHZhciA9IHZhcjsKKyAKKyAgICAgICAvKiBSZXNldCB0aGUgc2VsZWN0ZWQgZnJhbWUg Ki8KKy0gICAgICBpZiAob2xkX2ZpICE9IE5VTEwpCistCXNlbGVjdF9mcmFtZSAob2xkX2ZpKTsK KysgICAgICBpZiAoZnJhbWVfaWRfcCAob2xkX2lkKSkKKysJc2VsZWN0X2ZyYW1lIChmcmFtZV9m aW5kX2J5X2lkIChvbGRfaWQpKTsKKyAgICAgfQorIAorICAgLyogSWYgdGhlIHZhcmlhYmxlIG9i amVjdCBuYW1lIGlzIG51bGwsIHRoYXQgbWVhbnMgdGhpcworCisKKworaHR0cHM6Ly9idWd6aWxs YS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD02Mjc1MDYKK1JlOiBbcGF0Y2hdIEZpeCBuZXN0 aW5nIG9mIHVpX291dF9yZWRpcmVjdAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRj aGVzLzIwMTAtMDkvbXNnMDAxMjIuaHRtbAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1j dnMvMjAxMC0wOS9tc2cwMDAzMS5odG1sCisKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzA5 LzAzIDAxOjI5OjA5CTEuMTIxNDkKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzA5LzAzIDE1 OjQxOjU5CTEuMTIxNTAKKyMjIC0xLDMgKzEsMjcgQEAKKysyMDEwLTA5LTAzICBKYW4gS3JhdG9j aHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisrCisrCSogYnJlYWtwb2ludC5jIChz YXZlX2JyZWFrcG9pbnRzKTogVXNlIFJFVFVSTl9NQVNLX0FMTC4KKysJKiBjbGktb3V0LmM6IElu Y2x1ZGUgdmVjLmguCisrCShjbGlfZmllbGRfZm10LCBjbGlfc3BhY2VzLCBjbGlfdGV4dCwgY2xp X21lc3NhZ2UsIGNsaV9mbHVzaCk6IE5ldworKwl2YXJpYWJsZSBzdHJlYW0sIGluaXRpYWxpemUg aXQsIHVzZSBpdC4KKysJKGNsaV9yZWRpcmVjdCk6IE5ldyBmdW5jdGlvbiBjb21tZW50LiAgUmVw bGFjZSB0aGUgc3RyZWFtIGFuZAorKwlvcmlnaW5hbF9zdHJlYW0gZmllbGRzIGJ5IHRoZSBuZXcg c3RyZWFtcyBmaWVsZC4gIFJlbW92ZSB0aGUKKysJb3JpZ2luYWxfc3RyZWFtICE9IE5VTEwgY29u ZGl0aW9uYWwsIGFzc2VydCBlcnJvciBvbiBOVUxMIGluc3RlYWQuCisrCShvdXRfZmllbGRfZm10 LCBmaWVsZF9zZXBhcmF0b3IpOiBOZXcgdmFyaWFibGUgc3RyZWFtLCBpbml0aWFsaXplIGl0LCB1 c2UgaXQuCisrCShjbGlfb3V0X2RhdGFfY3Rvcik6IEFzc2VydCBub24tTlVMTCBzdHJlYW0uICBS ZXBsYWNlIHRoZSBzdHJlYW0gYW5kCisrCW9yaWdpbmFsX3N0cmVhbSBmaWVsZHMgYnkgdGhlIG5l dyBzdHJlYW1zIGZpZWxkLgorKwkoY2xpX291dF9zZXRfc3RyZWFtKTogUmVwbGFjZSB0aGUgc3Ry ZWFtIGZpZWxkIGJ5IHRoZSBuZXcgc3RyZWFtcworKwlmaWVsZC4KKysJKiBjbGktb3V0Lmg6IElu Y2x1ZGUgdmVjLmguCisrCSh1aV9maWxlcCk6IE5ldyB0eXBlZGVmLCBjYWxsIERFRl9WRUNfUCBm b3IgaXQuCisrCShzdHJ1Y3QgY2xpX3VpX291dF9kYXRhKTogUmVwbGFjZSB0aGUgc3RyZWFtIGFu ZCBvcmlnaW5hbF9zdHJlYW0KKysJZmllbGRzIGJ5IHRoZSBuZXcgc3RyZWFtcyBmaWVsZC4KKysJ KiBjbGkvY2xpLWxvZ2dpbmcuYyAoc2V0X2xvZ2dpbmdfcmVkaXJlY3QpOiBDYWxsIHVpX291dF9y ZWRpcmVjdCB3aXRoCisrCU5VTEwgZmlyc3QuICBFeHRlbmQgdGhlIGNvbW1lbnQuCisrCShoYW5k bGVfcmVkaXJlY3Rpb25zKTogQ2FsbCB1aV9vdXRfcmVkaXJlY3Qgd2l0aCBvdXRwdXQuCisrCSog cHl0aG9uL3B5LWJyZWFrcG9pbnQuYyAoYnBweV9nZXRfY29tbWFuZHMpOiBNb3ZlIHVpX291dF9y ZWRpcmVjdAorKwljYWxscyBvdXRzaWRlIG9mIHRoZSBUUllfQ0FUQ0ggYmxvY2suCisrCisKK1sg Y2xpL2NsaS1sb2dnaW5nLmMgcmVtb3ZlZC4gIF0KKworLS0tIHNyYy9nZGIvYnJlYWtwb2ludC5j CTIwMTAvMDgvMzAgMDk6NDk6MTIJMS41MTEKKysrKyBzcmMvZ2RiL2JyZWFrcG9pbnQuYwkyMDEw LzA5LzAzIDE1OjQyOjAyCTEuNTEyCitAQCAtMTE0ODcsNyArMTE0ODcsNyBAQAorIAlmcHJpbnRm X3VuZmlsdGVyZWQgKGZwLCAiICBjb21tYW5kc1xuIik7CisgCQorIAl1aV9vdXRfcmVkaXJlY3Qg KHVpb3V0LCBmcCk7CistCVRSWV9DQVRDSCAoZXgsIFJFVFVSTl9NQVNLX0VSUk9SKQorKwlUUllf Q0FUQ0ggKGV4LCBSRVRVUk5fTUFTS19BTEwpCisgCSAgeworIAkgICAgcHJpbnRfY29tbWFuZF9s aW5lcyAodWlvdXQsIHRwLT5jb21tYW5kcy0+Y29tbWFuZHMsIDIpOworIAkgIH0KKy0tLSBzcmMv Z2RiL2NsaS1vdXQuYwkyMDEwLzA1LzEzIDIzOjUzOjMyCTEuMzAKKysrKyBzcmMvZ2RiL2NsaS1v dXQuYwkyMDEwLzA5LzAzIDE1OjQyOjAyCTEuMzEKK0BAIC0yNiw2ICsyNiw3IEBACisgI2luY2x1 ZGUgImNsaS1vdXQuaCIKKyAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgorICNpbmNsdWRlICJnZGJf YXNzZXJ0LmgiCisrI2luY2x1ZGUgInZlYy5oIgorIAorIHR5cGVkZWYgc3RydWN0IGNsaV91aV9v dXRfZGF0YSBjbGlfb3V0X2RhdGE7CisgCitAQCAtMjI0LDExICsyMjUsMTMgQEAKKyAJICAgICAg IHZhX2xpc3QgYXJncykKKyB7CisgICBjbGlfb3V0X2RhdGEgKmRhdGEgPSB1aV9vdXRfZGF0YSAo dWlvdXQpOworKyAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbTsKKyAKKyAgIGlmIChkYXRhLT5zdXBw cmVzc19vdXRwdXQpCisgICAgIHJldHVybjsKKyAKKy0gIHZmcHJpbnRmX2ZpbHRlcmVkIChkYXRh LT5zdHJlYW0sIGZvcm1hdCwgYXJncyk7CisrICBzdHJlYW0gPSBWRUNfbGFzdCAodWlfZmlsZXAs IGRhdGEtPnN0cmVhbXMpOworKyAgdmZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgZm9ybWF0LCBh cmdzKTsKKyAKKyAgIGlmIChhbGlnbiAhPSB1aV9ub2FsaWduKQorICAgICBmaWVsZF9zZXBhcmF0 b3IgKCk7CitAQCAtMjM4LDIwICsyNDEsMjYgQEAKKyBjbGlfc3BhY2VzIChzdHJ1Y3QgdWlfb3V0 ICp1aW91dCwgaW50IG51bXNwYWNlcykKKyB7CisgICBjbGlfb3V0X2RhdGEgKmRhdGEgPSB1aV9v dXRfZGF0YSAodWlvdXQpOworKyAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbTsKKyAKKyAgIGlmIChk YXRhLT5zdXBwcmVzc19vdXRwdXQpCisgICAgIHJldHVybjsKKy0gIHByaW50X3NwYWNlc19maWx0 ZXJlZCAobnVtc3BhY2VzLCBkYXRhLT5zdHJlYW0pOworKworKyAgc3RyZWFtID0gVkVDX2xhc3Qg KHVpX2ZpbGVwLCBkYXRhLT5zdHJlYW1zKTsKKysgIHByaW50X3NwYWNlc19maWx0ZXJlZCAobnVt c3BhY2VzLCBzdHJlYW0pOworIH0KKyAKKyBzdGF0aWMgdm9pZAorIGNsaV90ZXh0IChzdHJ1Y3Qg dWlfb3V0ICp1aW91dCwgY29uc3QgY2hhciAqc3RyaW5nKQorIHsKKyAgIGNsaV9vdXRfZGF0YSAq ZGF0YSA9IHVpX291dF9kYXRhICh1aW91dCk7CisrICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtOwor IAorICAgaWYgKGRhdGEtPnN1cHByZXNzX291dHB1dCkKKyAgICAgcmV0dXJuOworLSAgZnB1dHNf ZmlsdGVyZWQgKHN0cmluZywgZGF0YS0+c3RyZWFtKTsKKysKKysgIHN0cmVhbSA9IFZFQ19sYXN0 ICh1aV9maWxlcCwgZGF0YS0+c3RyZWFtcyk7CisrICBmcHV0c19maWx0ZXJlZCAoc3RyaW5nLCBz dHJlYW0pOworIH0KKyAKKyBzdGF0aWMgdm9pZCBBVFRSSUJVVEVfUFJJTlRGICgzLCAwKQorQEAg LTI2Miw4ICsyNzEsMTMgQEAKKyAKKyAgIGlmIChkYXRhLT5zdXBwcmVzc19vdXRwdXQpCisgICAg IHJldHVybjsKKysKKyAgIGlmICh1aV9vdXRfZ2V0X3ZlcmJsdmwgKHVpb3V0KSA+PSB2ZXJib3Np dHkpCistICAgIHZmcHJpbnRmX3VuZmlsdGVyZWQgKGRhdGEtPnN0cmVhbSwgZm9ybWF0LCBhcmdz KTsKKysgICAgeworKyAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0gPSBWRUNfbGFzdCAodWlf ZmlsZXAsIGRhdGEtPnN0cmVhbXMpOworKworKyAgICAgIHZmcHJpbnRmX3VuZmlsdGVyZWQgKHN0 cmVhbSwgZm9ybWF0LCBhcmdzKTsKKysgICAgfQorIH0KKyAKKyBzdGF0aWMgdm9pZAorQEAgLTI4 MCwyNSArMjk0LDI0IEBACisgY2xpX2ZsdXNoIChzdHJ1Y3QgdWlfb3V0ICp1aW91dCkKKyB7Cisg ICBjbGlfb3V0X2RhdGEgKmRhdGEgPSB1aV9vdXRfZGF0YSAodWlvdXQpOworKyAgc3RydWN0IHVp X2ZpbGUgKnN0cmVhbSA9IFZFQ19sYXN0ICh1aV9maWxlcCwgZGF0YS0+c3RyZWFtcyk7CisgCist ICBnZGJfZmx1c2ggKGRhdGEtPnN0cmVhbSk7CisrICBnZGJfZmx1c2ggKHN0cmVhbSk7CisgfQor IAorKy8qIE9VVFNUUkVBTSBhcyBub24tTlVMTCB3aWxsIHB1c2ggT1VUU1RSRUFNIG9uIHRoZSBz dGFjayBvZiBvdXRwdXQgc3RyZWFtcworKyAgIGFuZCBtYWtlIGl0IHRoZXJlZm9yZSBhY3RpdmUu ICBPVVRTVFJFQU0gYXMgTlVMTCB3aWxsIHBvcCB0aGUgbGFzdCBwdXNoZWQKKysgICBvdXRwdXQg c3RyZWFtOyBpdCBpcyBhbiBpbnRlcm5hbCBlcnJvciBpZiBpdCBkb2VzIG5vdCBleGlzdC4gICov CisrCisgc3RhdGljIGludAorIGNsaV9yZWRpcmVjdCAoc3RydWN0IHVpX291dCAqdWlvdXQsIHN0 cnVjdCB1aV9maWxlICpvdXRzdHJlYW0pCisgeworICAgY2xpX291dF9kYXRhICpkYXRhID0gdWlf b3V0X2RhdGEgKHVpb3V0KTsKKyAKKyAgIGlmIChvdXRzdHJlYW0gIT0gTlVMTCkKKy0gICAgewor LSAgICAgIGRhdGEtPm9yaWdpbmFsX3N0cmVhbSA9IGRhdGEtPnN0cmVhbTsKKy0gICAgICBkYXRh LT5zdHJlYW0gPSBvdXRzdHJlYW07CistICAgIH0KKy0gIGVsc2UgaWYgKGRhdGEtPm9yaWdpbmFs X3N0cmVhbSAhPSBOVUxMKQorLSAgICB7CistICAgICAgZGF0YS0+c3RyZWFtID0gZGF0YS0+b3Jp Z2luYWxfc3RyZWFtOworLSAgICAgIGRhdGEtPm9yaWdpbmFsX3N0cmVhbSA9IE5VTEw7CistICAg IH0KKysgICAgVkVDX3NhZmVfcHVzaCAodWlfZmlsZXAsIGRhdGEtPnN0cmVhbXMsIG91dHN0cmVh bSk7CisrICBlbHNlCisrICAgIFZFQ19wb3AgKHVpX2ZpbGVwLCBkYXRhLT5zdHJlYW1zKTsKKyAK KyAgIHJldHVybiAwOworIH0KK0BAIC0zMTUsMTAgKzMyOCwxMSBAQAorIAkgICAgICAgY29uc3Qg Y2hhciAqZm9ybWF0LC4uLikKKyB7CisgICBjbGlfb3V0X2RhdGEgKmRhdGEgPSB1aV9vdXRfZGF0 YSAodWlvdXQpOworKyAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSA9IFZFQ19sYXN0ICh1aV9maWxl cCwgZGF0YS0+c3RyZWFtcyk7CisgICB2YV9saXN0IGFyZ3M7CisgCisgICB2YV9zdGFydCAoYXJn cywgZm9ybWF0KTsKKy0gIHZmcHJpbnRmX2ZpbHRlcmVkIChkYXRhLT5zdHJlYW0sIGZvcm1hdCwg YXJncyk7CisrICB2ZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCBmb3JtYXQsIGFyZ3MpOworIAor ICAgdmFfZW5kIChhcmdzKTsKKyB9CitAQCAtMzI5LDggKzM0Myw5IEBACisgZmllbGRfc2VwYXJh dG9yICh2b2lkKQorIHsKKyAgIGNsaV9vdXRfZGF0YSAqZGF0YSA9IHVpX291dF9kYXRhICh1aW91 dCk7CisrICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtID0gVkVDX2xhc3QgKHVpX2ZpbGVwLCBkYXRh LT5zdHJlYW1zKTsKKyAKKy0gIGZwdXRjX2ZpbHRlcmVkICgnICcsIGRhdGEtPnN0cmVhbSk7Cisr ICBmcHV0Y19maWx0ZXJlZCAoJyAnLCBzdHJlYW0pOworIH0KKyAKKyAvKiBUaGlzIGlzIHRoZSBD TEkgdWktb3V0IGltcGxlbWVudGF0aW9uIGZ1bmN0aW9ucyB2ZWN0b3IgKi8KK0BAIC0zNjQsOCAr Mzc5LDExIEBACisgdm9pZAorIGNsaV9vdXRfZGF0YV9jdG9yIChjbGlfb3V0X2RhdGEgKnNlbGYs IHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCisgeworLSAgc2VsZi0+c3RyZWFtID0gc3RyZWFtOwor LSAgc2VsZi0+b3JpZ2luYWxfc3RyZWFtID0gTlVMTDsKKysgIGdkYl9hc3NlcnQgKHN0cmVhbSAh PSBOVUxMKTsKKysKKysgIHNlbGYtPnN0cmVhbXMgPSBOVUxMOworKyAgVkVDX3NhZmVfcHVzaCAo dWlfZmlsZXAsIHNlbGYtPnN0cmVhbXMsIHN0cmVhbSk7CisrCisgICBzZWxmLT5zdXBwcmVzc19v dXRwdXQgPSAwOworIH0KKyAKK0BAIC0zODUsOCArNDAzLDEwIEBACisgY2xpX291dF9zZXRfc3Ry ZWFtIChzdHJ1Y3QgdWlfb3V0ICp1aW91dCwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKKyB7Cisg ICBjbGlfb3V0X2RhdGEgKmRhdGEgPSB1aV9vdXRfZGF0YSAodWlvdXQpOworLSAgc3RydWN0IHVp X2ZpbGUgKm9sZCA9IGRhdGEtPnN0cmVhbTsKKysgIHN0cnVjdCB1aV9maWxlICpvbGQ7CisrICAK KysgIG9sZCA9IFZFQ19wb3AgKHVpX2ZpbGVwLCBkYXRhLT5zdHJlYW1zKTsKKysgIFZFQ19xdWlj a19wdXNoICh1aV9maWxlcCwgZGF0YS0+c3RyZWFtcywgc3RyZWFtKTsKKyAKKy0gIGRhdGEtPnN0 cmVhbSA9IHN0cmVhbTsKKyAgIHJldHVybiBvbGQ7CisgfQorLS0tIHNyYy9nZGIvY2xpLW91dC5o CTIwMTAvMDQvMTggMDA6MTE6NTUJMS4xMQorKysrIHNyYy9nZGIvY2xpLW91dC5oCTIwMTAvMDkv MDMgMTU6NDI6MDIJMS4xMgorQEAgLTIyLDE0ICsyMiwxOSBAQAorICNkZWZpbmUgQ0xJX09VVF9I CisgCisgI2luY2x1ZGUgInVpLW91dC5oIgorKyNpbmNsdWRlICJ2ZWMuaCIKKysKKysvKiBVc2Vk IGZvciBjbGlfdWlfb3V0X2RhdGEtPnN0cmVhbXMuICAqLworKworK3R5cGVkZWYgc3RydWN0IHVp X2ZpbGUgKnVpX2ZpbGVwOworK0RFRl9WRUNfUCAodWlfZmlsZXApOworIAorIC8qIFRoZXNlIGFy ZSBleHBvcnRlZCBzbyB0aGF0IHRoZXkgY2FuIGJlIGV4dGVuZGVkIGJ5IG90aGVyIGB1aV9vdXQn CisgICAgaW1wbGVtZW50YXRpb25zLCBsaWtlIFRVSSdzLiAgKi8KKyAKKyBzdHJ1Y3QgY2xpX3Vp X291dF9kYXRhCisgICB7CistICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW07CistICAgIHN0cnVj dCB1aV9maWxlICpvcmlnaW5hbF9zdHJlYW07CisrICAgIFZFQyAodWlfZmlsZXApICpzdHJlYW1z OworICAgICBpbnQgc3VwcHJlc3Nfb3V0cHV0OworICAgfTsKKyAKKy0tLSBzcmMvZ2RiL3B5dGhv bi9weS1icmVha3BvaW50LmMJMjAxMC8wNy8wMSAxMDozNjoxMgkxLjQKKysrKyBzcmMvZ2RiL3B5 dGhvbi9weS1icmVha3BvaW50LmMJMjAxMC8wOS8wMyAxNTo0MjowMwkxLjUKK0BAIC00NzQsMTIg KzQ3NCwxMiBAQAorICAgc3RyaW5nX2ZpbGUgPSBtZW1fZmlsZW9wZW4gKCk7CisgICBjaGFpbiA9 IG1ha2VfY2xlYW51cF91aV9maWxlX2RlbGV0ZSAoc3RyaW5nX2ZpbGUpOworIAorKyAgdWlfb3V0 X3JlZGlyZWN0ICh1aW91dCwgc3RyaW5nX2ZpbGUpOworICAgVFJZX0NBVENIIChleGNlcHQsIFJF VFVSTl9NQVNLX0FMTCkKKyAgICAgeworLSAgICAgIHVpX291dF9yZWRpcmVjdCAodWlvdXQsIHN0 cmluZ19maWxlKTsKKyAgICAgICBwcmludF9jb21tYW5kX2xpbmVzICh1aW91dCwgYnJlYWtwb2lu dF9jb21tYW5kcyAoYnApLCAwKTsKKy0gICAgICB1aV9vdXRfcmVkaXJlY3QgKHVpb3V0LCBOVUxM KTsKKyAgICAgfQorKyAgdWlfb3V0X3JlZGlyZWN0ICh1aW91dCwgTlVMTCk7CisgICBjbWRzdHIg PSB1aV9maWxlX3hzdHJkdXAgKHN0cmluZ19maWxlLCAmbGVuZ3RoKTsKKyAgIEdEQl9QWV9IQU5E TEVfRVhDRVBUSU9OIChleGNlcHQpOworIAorIyMjIHNyYy9nZGIvdGVzdHN1aXRlL0NoYW5nZUxv ZwkyMDEwLzA5LzAyIDE1OjE5OjU2CTEuMjQzNQorIyMjIHNyYy9nZGIvdGVzdHN1aXRlL0NoYW5n ZUxvZwkyMDEwLzA5LzAzIDE1OjQyOjA0CTEuMjQzNgorIyMgLTEsMyArMSw3IEBACisrMjAxMC0w OS0wMyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorKworKwkq IGdkYi5iYXNlL3VpLXJlZGlyZWN0LmV4cDogTmV3IGZpbGUuCisrCisgMjAxMC0wOS0wMiAgSmFu IEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorICAgICAgICAgICAgIEpv ZWwgQnJvYmVja2VyICA8YnJvYmVja2VyQGFkYWNvcmUuY29tPgorIAorLS0tIHNyYy9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL3VpLXJlZGlyZWN0LmV4cAorKysrIHNyYy9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL3VpLXJlZGlyZWN0LmV4cAkyMDEwLTA5LTExIDE4OjQyOjQwLjA0MDkxMDAwMCArMDAw MAorQEAgLTAsMCArMSw0MSBAQAorKyMgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKytp ZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nIHVpLXJlZGlyZWN0LmV4cCB1aS1yZWRpcmVjdCBzdGFy dC5jXSB9IHsKKysgICAgcmV0dXJuIC0xCisrfQorKworK2dkYl9icmVha3BvaW50IG1haW4KKysK KytzZXQgdGVzdCAiY29tbWFuZHMiCisrZ2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3QgJHRlc3Qgewor KyAgICAtcmUgIkVuZCB3aXRoIGEgbGluZSBzYXlpbmcganVzdCBcImVuZFwiXFwuXHJcbj4kIiB7 CisrCXBhc3MgJHRlc3QKKysgICAgfQorK30KKysKKytzZXQgdGVzdCAicHJpbnQgMSIKKytnZGJf dGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7CisrICAgIC1yZSAiXHJcbj4kIiB7CisrCXBhc3Mg JHRlc3QKKysgICAgfQorK30KKytnZGJfdGVzdF9ub19vdXRwdXQgImVuZCIKKysKKytnZGJfdGVz dF9ub19vdXRwdXQgInNldCBsb2dnaW5nIGZpbGUgL2Rldi9udWxsIgorK2dkYl90ZXN0ICJzZXQg bG9nZ2luZyBvbiIgIkNvcHlpbmcgb3V0cHV0IHRvIC9kZXYvbnVsbFxcLiIKKytnZGJfdGVzdCAi c2F2ZSBicmVha3BvaW50cyAvZGV2L251bGwiICJTYXZlZCB0byBmaWxlICcvZGV2L251bGwnXFwu IgorK2dkYl90ZXN0ICJzZXQgbG9nZ2luZyBvZmYiICJEb25lIGxvZ2dpbmcgdG8gL2Rldi9udWxs XFwuIgorK2dkYl90ZXN0ICJoZWxwIiAiTGlzdCBvZiBjbGFzc2VzIG9mIGNvbW1hbmRzOi4qIgor CisKKworaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD02Mjc1MDYK K1JlOiBbcGF0Y2hdIEZpeCB1aW91dCBmb3IgZXhlY3V0ZV9jb21tYW5kX3RvX3N0cmluZworaHR0 cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDkvbXNnMDAyMzUuaHRtbAor aHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMC0wOS9tc2cwMDA4MC5odG1sCisK KyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzA5LzEwIDE2OjE3OjExCTEuMTIxNzAKKyMjIyBz cmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzA5LzExIDE2OjAwOjIwCTEuMTIxNzEKKyMjIC0xLDMgKzEs MjEgQEAKKysyMDEwLTA5LTExICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhh dC5jb20+CisrCSAgICBQYXVsIEJvbGxlICA8cGVib2xsZUB0aXNjYWxpLm5sPgorKworKwlSZWRp cmVjdCBhbHNvIHVpb3V0IGFuZCBzdGR0YXJneyxlcnJ9IGluIGV4ZWN1dGVfY29tbWFuZF90b19z dHJpbmcuCisrCSogY2xpLWxvZ2dpbmcuYyAoc3RydWN0IHNhdmVkX291dHB1dF9maWxlcykgPHRh cmdlcnI+OiBOZXcuCisrCShzZXRfbG9nZ2luZ19yZWRpcmVjdCwgcG9wX291dHB1dF9maWxlcywg aGFuZGxlX3JlZGlyZWN0aW9ucyk6CisrCVJlZGlyZWN0IGFsc28gZ2RiX3N0ZHRhcmdlcnIuCisr CSogZGVmcy5oIChzdHJ1Y3QgdWlfb3V0LCBtYWtlX2NsZWFudXBfdWlfb3V0X3JlZGlyZWN0X3Bv cCk6IE5ldworKwlkZWNsYXJhdGlvbnMuCisrCSogZXZlbnQtdG9wLmMgKGdkYl9zZXR1cF9yZWFk bGluZSwgZ2RiX2Rpc2FibGVfcmVhZGxpbmUpOiBSZWRpcmVjdAorKwlhbHNvIGdkYl9zdGR0YXJn ZXJyLgorKwkqIHRvcC5jIChleGVjdXRlX2NvbW1hbmRfdG9fc3RyaW5nKTogTW92ZSBtYWtlX2Ns ZWFudXBfdWlfZmlsZV9kZWxldGUKKysJdG8gdGhlIHRvcC4gIFJlZGlyZWN0IGFsc28gZ2RiX3N0 ZGxvZywgZ2RiX3N0ZHRhcmcgYW5kIGdkYl9zdGR0YXJnZXJyLgorKwlVc2UgdWlfb3V0X3JlZGly ZWN0LCByZWdpc3RlciBtYWtlX2NsZWFudXBfdWlfb3V0X3JlZGlyZWN0X3BvcC4KKysJKiB0dWkv dHVpLWlvLmMgKHR1aV9zZXR1cF9pbyk6IFJlZGlyZWN0IGFsc28gZ2RiX3N0ZHRhcmdlcnIuCisr CSogdXRpbHMuYyAoZG9fdWlfb3V0X3JlZGlyZWN0X3BvcCwgbWFrZV9jbGVhbnVwX3VpX291dF9y ZWRpcmVjdF9wb3ApOgorKwlOZXcgZnVuY3Rpb25zLgorKworCisjIyMgc3JjL2dkYi90ZXN0c3Vp dGUvQ2hhbmdlTG9nCTIwMTAvMDkvMTAgMjA6Mjk6MjUJMS4yNDQ0CisjIyMgc3JjL2dkYi90ZXN0 c3VpdGUvQ2hhbmdlTG9nCTIwMTAvMDkvMTEgMTY6MDA6MjYJMS4yNDQ1CisjIyAtMSwzICsxLDgg QEAKKysyMDEwLTA5LTExICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+CisrCisrCSogZ2RiLnB5dGhvbi9weXRob24uZXhwIChzZXQgaGVpZ2h0IDAsIGNvbGxlY3Qg aGVscCBmcm9tIHVpb3V0KQorKwkodmVyaWZ5IGhlbHAgdG8gdWlvdXQpOiBOZXcgdGVzdHMuCisr CisKK1sgZ2RiX3N0ZHRhcmdlcnIgaGFuZGxpbmcgZHJvcHBlZC4gIF0KKworLS0tIHNyYy9nZGIv ZGVmcy5oCTIwMTAvMDgvMzEgMTg6MDg6NDMJMS4yNzgKKysrKyBzcmMvZ2RiL2RlZnMuaAkyMDEw LzA5LzExIDE2OjAwOjI1CTEuMjc5CitAQCAtMzM3LDYgKzMzNywxMCBAQAorIHN0cnVjdCB1aV9m aWxlOworIGV4dGVybiBzdHJ1Y3QgY2xlYW51cCAqbWFrZV9jbGVhbnVwX3VpX2ZpbGVfZGVsZXRl IChzdHJ1Y3QgdWlfZmlsZSAqKTsKKyAKKytzdHJ1Y3QgdWlfb3V0OworK2V4dGVybiBzdHJ1Y3Qg Y2xlYW51cCAqCisrICBtYWtlX2NsZWFudXBfdWlfb3V0X3JlZGlyZWN0X3BvcCAoc3RydWN0IHVp X291dCAqdWlvdXQpOworKworIHN0cnVjdCBzZWN0aW9uX2FkZHJfaW5mbzsKKyBleHRlcm4gc3Ry dWN0IGNsZWFudXAgKihtYWtlX2NsZWFudXBfZnJlZV9zZWN0aW9uX2FkZHJfaW5mbyAKKyAgICAg ICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHNlY3Rpb25fYWRkcl9pbmZvICopKTsKKy0tLSBz cmMvZ2RiL3RvcC5jCTIwMTAvMDgvMDcgMTU6MDA6MzcJMS4xODMKKysrKyBzcmMvZ2RiL3RvcC5j CTIwMTAvMDkvMTEgMTY6MDA6MjUJMS4xODQKK0BAIC00NzUsMTIgKzQ3NSwyMyBAQAorIAorICAg c3RyX2ZpbGUgPSBtZW1fZmlsZW9wZW4gKCk7CisgCisrICBtYWtlX2NsZWFudXBfdWlfZmlsZV9k ZWxldGUgKHN0cl9maWxlKTsKKyAgIG1ha2VfY2xlYW51cF9yZXN0b3JlX3VpX2ZpbGUgKCZnZGJf c3Rkb3V0KTsKKyAgIG1ha2VfY2xlYW51cF9yZXN0b3JlX3VpX2ZpbGUgKCZnZGJfc3RkZXJyKTsK Ky0gIG1ha2VfY2xlYW51cF91aV9maWxlX2RlbGV0ZSAoc3RyX2ZpbGUpOworKyAgbWFrZV9jbGVh bnVwX3Jlc3RvcmVfdWlfZmlsZSAoJmdkYl9zdGRsb2cpOworKyAgbWFrZV9jbGVhbnVwX3Jlc3Rv cmVfdWlfZmlsZSAoJmdkYl9zdGR0YXJnKTsKKysgIG1ha2VfY2xlYW51cF9yZXN0b3JlX3VpX2Zp bGUgKCZnZGJfc3RkdGFyZ2Vycik7CisrCisrICBpZiAodWlfb3V0X3JlZGlyZWN0ICh1aW91dCwg c3RyX2ZpbGUpIDwgMCkKKysgICAgd2FybmluZyAoXygiQ3VycmVudCBvdXRwdXQgcHJvdG9jb2wg ZG9lcyBub3Qgc3VwcG9ydCByZWRpcmVjdGlvbiIpKTsKKysgIGVsc2UKKysgICAgbWFrZV9jbGVh bnVwX3VpX291dF9yZWRpcmVjdF9wb3AgKHVpb3V0KTsKKyAKKyAgIGdkYl9zdGRvdXQgPSBzdHJf ZmlsZTsKKyAgIGdkYl9zdGRlcnIgPSBzdHJfZmlsZTsKKysgIGdkYl9zdGRsb2cgPSBzdHJfZmls ZTsKKysgIGdkYl9zdGR0YXJnID0gc3RyX2ZpbGU7CisrICBnZGJfc3RkdGFyZ2VyciA9IHN0cl9m aWxlOworIAorICAgZXhlY3V0ZV9jb21tYW5kIChwLCBmcm9tX3R0eSk7CisgCistLS0gc3JjL2dk Yi91dGlscy5jCTIwMTAvMDgvMDcgMTU6MDA6MzcJMS4yMzkKKysrKyBzcmMvZ2RiL3V0aWxzLmMJ MjAxMC8wOS8xMSAxNjowMDoyNQkxLjI0MAorQEAgLTMxMSw2ICszMTEsMjYgQEAKKyAgIHJldHVy biBtYWtlX215X2NsZWFudXAgKCZjbGVhbnVwX2NoYWluLCBkb191aV9maWxlX2RlbGV0ZSwgYXJn KTsKKyB9CisgCisrLyogSGVscGVyIGZ1bmN0aW9uIGZvciBtYWtlX2NsZWFudXBfdWlfb3V0X3Jl ZGlyZWN0X3BvcC4gICovCisrCisrc3RhdGljIHZvaWQKKytkb191aV9vdXRfcmVkaXJlY3RfcG9w ICh2b2lkICphcmcpCisreworKyAgc3RydWN0IHVpX291dCAqdWlvdXQgPSBhcmc7CisrCisrICBp ZiAodWlfb3V0X3JlZGlyZWN0ICh1aW91dCwgTlVMTCkgPCAwKQorKyAgICB3YXJuaW5nIChfKCJD YW5ub3QgcmVzdG9yZSByZWRpcmVjdGlvbiBvZiB0aGUgY3VycmVudCBvdXRwdXQgcHJvdG9jb2wi KSk7CisrfQorKworKy8qIFJldHVybiBhIG5ldyBjbGVhbnVwIHRoYXQgcG9wcyB0aGUgbGFzdCBy ZWRpcmVjdGlvbiBieSB1aV9vdXRfcmVkaXJlY3QKKysgICB3aXRoIE5VTEwgcGFyYW1ldGVyLiAg Ki8KKysKKytzdHJ1Y3QgY2xlYW51cCAqCisrbWFrZV9jbGVhbnVwX3VpX291dF9yZWRpcmVjdF9w b3AgKHN0cnVjdCB1aV9vdXQgKnVpb3V0KQorK3sKKysgIHJldHVybiBtYWtlX215X2NsZWFudXAg KCZjbGVhbnVwX2NoYWluLCBkb191aV9vdXRfcmVkaXJlY3RfcG9wLCB1aW91dCk7CisrfQorKwor IHN0YXRpYyB2b2lkCisgZG9fZnJlZV9zZWN0aW9uX2FkZHJfaW5mbyAodm9pZCAqYXJnKQorIHsK Ky0tLSBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weXRob24uZXhwLW9yaWcJMjAx MC0wOC0wOSAyMToyMzowMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4yL2dkYi90ZXN0c3Vp dGUvZ2RiLnB5dGhvbi9weXRob24uZXhwCTIwMTAtMDktMTEgMjA6NDk6MjIuMDAwMDAwMDAwICsw MjAwCitAQCAtMTEwLDMgKzExMCw5IEBAIGdkYl90ZXN0X211bHRpcGxlICJweXRob24gcHJpbnQg XCJcXG5cIiAKKyAgICAgfQorIH0KKyBnZGJfdGVzdCAicSIgIlF1aXQiICJ2ZXJpZnkgcGFnaW5h dGlvbiBhZnRlcndhcmRzOiBxIgorKworK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGhlaWdodCAw IgorKworK2dkYl90ZXN0X25vX291dHB1dCAicHl0aG9uIGEgPSBnZGIuZXhlY3V0ZSgnaGVscCcs IHRvX3N0cmluZz1UcnVlKSIgImNvbGxlY3QgaGVscCBmcm9tIHVpb3V0IgorKworK2dkYl90ZXN0 ICJweXRob24gcHJpbnQgYSIgIi4qYWxpYXNlcyAtLSBBbGlhc2VzIG9mIG90aGVyIGNvbW1hbmRz LioiICJ2ZXJpZnkgaGVscCB0byB1aW91dCIKCmRpZmYgLS1naXQgYS9nZGIuc3BlYyBiL2dkYi5z cGVjCmluZGV4IDM2MDRjMzIuLmE3MDkxMjAgMTAwNjQ0Ci0tLSBhL2dkYi5zcGVjCisrKyBiL2dk Yi5zcGVjCkBAIC0zLDYgKzMsOCBAQAogIyAtLXdpdGggZGVidWc6IEJ1aWxkIHdpdGhvdXQgb3B0 aW1pemF0aW9ucyBhbmQgd2l0aG91dCBzcGxpdHRpbmcgdGhlIGRlYnVnaW5mby4KICMgLS13aXRo IHVwc3RyZWFtOiBObyBGZWRvcmEgc3BlY2lmaWMgcGF0Y2hlcyBnZXQgYXBwbGllZC4KICMgLS13 aXRob3V0IHB5dGhvbjogTm8gcHl0aG9uIHN1cHBvcnQuCisjIC0td2l0aCBwcm9maWxlOiBnY2Mg LWZwcm9maWxlLWdlbmVyYXRlIC8gLWZwcm9maWxlLXVzZTogQmVmb3JlIGJldHRlcgorIyAgICAg ICAgICAgICAgICAgd29ya2xvYWQgZ2V0cyBydW4gaXQgZGVjcmVhc2VzIHRoZSBnZW5lcmFsIHBl cmZvcm1hbmNlIG5vdy4KIAogIyBSSEVMLTUgd2FzIHRoZSBsYXN0IG5vdCBwcm92aWRpbmcgYC9l dGMvcnBtL21hY3Jvcy5kaXN0Jy4KICVpZiAwJXshP2Rpc3Q6MX0KQEAgLTEyLDE3ICsxNCw2IEBA CiAlZW5kaWYKICMgUkhFTC01IEJyZXcgZG9lcyBub3Qgc2V0ICV7ZWw1fS4KICVpZiAiJXtkaXN0 fSIgPT0gIi5lbDUiCi0jIFJIRUwtNSBwcGMqIHB5dGhvbiAuc28gZmlsZXMgYXJlIHNoaXBwZWQg b25seSBhcyBwcGMgYnV0IGdkYiBpcyBwcGM2NCB0aGVyZS4KLSMgQnJldyBidWlsZHMgaXQgZmlu ZSBhcyBpdHMgcHBjNjQgYnVpbGRyb290IGhhcyBmdWxsIHBwYzY0IHBhY2thZ2Ugc2V0LgotIyBN YWtlIHRoaXMgY29uZGl0aW9uYWwgc28gdGhhdCBCcmV3LWJ1aWx0IEdEQiBoYXMgbm8gcHl0aG9u IG9uIGFueSBhcmNoIGJ1dAotIyBHREIgcmVidWlsdCBvbiBuYXRpdmUgbm9uLXBwYzY0IGhvc3Qg ZG9lcyBoYXZlIGl0LgotJWlmIDAleyE/ZWw1OjF9Ci0lZGVmaW5lIF93aXRob3V0X3B5dGhvbiAx Ci0lZWxzZQotJWlmYXJjaCBwcGM2NAotJWRlZmluZSBfd2l0aG91dF9weXRob24gMQotJWVuZGlm Ci0lZW5kaWYKICVkZWZpbmUgZWw1IDEKICVlbmRpZgogCkBAIC0zMiwxMSArMjMsMTEgQEAgTmFt ZTogZ2RiJXs/X3dpdGhfZGVidWc6LWRlYnVnfQogIyBTZXQgdmVyc2lvbiB0byBjb250ZW50cyBv ZiBnZGIvdmVyc2lvbi5pbi4KICMgTk9URTogdGhlIEZTRiBnZGIgdmVyc2lvbnMgYXJlIG51bWJl cmVkIE4uTSBmb3Igb2ZmaWNpYWwgcmVsZWFzZXMsIGxpa2UgNi4zCiAjIGFuZCwgc2luY2UgSmFu dWFyeSAyMDA1LCBYLlkuWi5kYXRlIGZvciBkYWlseSBzbmFwc2hvdHMsIGxpa2UgNi4zLjUwLjIw MDUwMTEyICMgKGRhaWx5IHNuYXBzaG90IGZyb20gbWFpbGluZSksIG9yIDYuMy4wLjIwMDQwMTEy IChoZWFkIG9mIHRoZSByZWxlYXNlIGJyYW5jaCkuCi1WZXJzaW9uOiA3LjEuOTAuMjAxMDA3MjEK K1ZlcnNpb246IDcuMgogCiAjIFRoZSByZWxlYXNlIGFsd2F5cyBjb250YWlucyBhIGxlYWRpbmcg cmVzZXJ2ZWQgbnVtYmVyLCBzdGFydCBpdCBhdCAxLgogIyBgdXBzdHJlYW0nIGlzIG5vdCBhIHBh cnQgb2YgYG5hbWUnIHRvIHN0YXkgZnVsbHkgcnBtIGRlcGVuZGVuY2llcyBjb21wYXRpYmxlIGZv ciB0aGUgdGVzdGluZy4KLVJlbGVhc2U6IDYlez9fd2l0aF91cHN0cmVhbToudXBzdHJlYW19JXtk aXN0fQorUmVsZWFzZTogMjUlez9fd2l0aF91cHN0cmVhbToudXBzdHJlYW19JXtkaXN0fQogCiBM aWNlbnNlOiBHUEx2MysgYW5kIEdQTHYzKyB3aXRoIGV4Y2VwdGlvbnMgYW5kIEdQTHYyKyBhbmQg R1BMdjIrIHdpdGggZXhjZXB0aW9ucyBhbmQgR1BMKyBhbmQgTEdQTHYyKyBhbmQgR0ZETCBhbmQg QlNEIGFuZCBQdWJsaWMgRG9tYWluCiBHcm91cDogRGV2ZWxvcG1lbnQvRGVidWdnZXJzCkBAIC03 MiwzNTQgKzYzLDU3OCBAQCBQcm92aWRlczogcHN0YWNrID0gMS4yLTcuMi4yLjEKICVlbmRpZiAj IDAleyE/X3dpdGhfdXBzdHJlYW06MX0KICVlbmRpZiAjIDAleyE/ZWw1OjF9CiAKKyMgZXUtc3Ry aXA6IC1nIHJlY29nbml6ZXMgLmdkYl9pbmRleCBhcyBhIGRlYnVnZ2luZyBzZWN0aW9uLiAoIzYz MTk5NykKK0NvbmZsaWN0czogZWxmdXRpbHMgPCAwLjE0OQorCiAjIEdEQiBwYXRjaGVzIGhhdmUg dGhlIGZvcm1hdCBgZ2RiLTx2ZXJzaW9uPi1iejxyZWQtaGF0LWJ6LSM+LTxkZXNjPi5wYXRjaCcu CiAjIFRoZXkgc2hvdWxkIGJlIGNyZWF0ZWQgdXNpbmcgcGF0Y2ggbGV2ZWwgMTogZGlmZiAtdXAg Li9nZGIgKG9yIGdkYi02LjMvZ2RiKS4KIAorIz0KKyNwdXNoPVNob3VsZCBiZSBwdXNoZWQgdXBz dHJlYW0uCisjbWF5YmVwdXNoPVNob3VsZCBiZSBwdXNoZWQgdXBzdHJlYW0gdW5sZXNzIGl0IGdv dCBvYnNvbGV0ZWQgdGhlcmUuCisjZmVkb3JhPVNob3VsZCBzdGF5IGFzIGEgRmVkb3JhIHBhdGNo LgorI2lhNjQ9RHJvcCBhZnRlciBSSEVMLTUgcmViYXNlcyBhbmQgcmVidWlsZHMgYXJlIG5vIGxv bmdlciBtZWFuaW5nZnVsLgorI2ZlZG9yYXRlc3Q9S2VlcCBpdCBpbiBGZWRvcmEgb25seSBhcyBh IHJlZ3Jlc3Npb24gdGVzdCBzYWZldHkuCisjK3BwYz1TcGVjaWZpYyBmb3IgcHBjMzIvcHBjNjQv cHBjKgorIyt3b3JrPVJlcXVpcmVzIHNvbWUgbm9udHJpdmlhbCB3b3JrLgorCiAjIENsZWFudXAg YW55IGxlZnRvdmVyIHRlc3RzdWl0ZSBwcm9jZXNzZXMgYXMgaXQgbWF5IHN0dWNrIG1vY2soMSkg YnVpbGRzLgorIz1wdXNoCiBTb3VyY2UyOiBnZGItb3JwaGFucmlwcGVyLmMKIAogIyBNYW4gcGFn ZSBmb3IgZ3N0YWNrKDEpLgorIz1wdXNoCiBTb3VyY2UzOiBnZGItZ3N0YWNrLm1hbgogCiAjIFdv cmsgYXJvdW5kIG91dC1vZi1kYXRlIGRlamFnbnUgdGhhdCBkb2VzIG5vdCBoYXZlIEtGQUlMCisj PWRyb3A6IFRoYXQgZGVqYWdudSBpcyB0b28gb2xkIHRvIGJlIHN1cHBvcnRlZC4KIFBhdGNoMTog Z2RiLTYuMy1yaC1kdW1teWtmYWlsLTIwMDQxMjAyLnBhdGNoCiAKICMgTWF0Y2ggdGhlIEZlZG9y YSdzIHZlcnNpb24gaW5mby4KKyM9ZmVkb3JhCiBQYXRjaDI6IGdkYi02LjMtcmgtdGVzdHZlcnNp b24tMjAwNDEyMDIucGF0Y2gKIAogIyBDaGVjayB0aGF0IGxpYnVud2luZCB3b3JrcyAtIG5ldyB0 ZXN0IHRoZW4gZml4CisjPWlhNjQKIFBhdGNoMzogZ2RiLTYuMy1yaC10ZXN0bGlidW53aW5kLTIw MDQxMjAyLnBhdGNoCiAKICMgVXNlIGNvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIG9uIHRoZSBz b2xpYiBicmVha3BvaW50IGFkZHJlc3M7CiAjIHNpbXBsaWZpZXMgYW5kIG1ha2VzIG1vcmUgY29u c2lzdGVudCB0aGUgbG9naWMuCisjPW1heWJlcHVzaCtwcGM6IFdyaXRlIG5ldyB0ZXN0Y2FzZS4K IFBhdGNoMTA0OiBnZGItNi4zLXBwY2RvdHNvbGliLTIwMDQxMDIyLnBhdGNoCiAKICMgQmV0dGVy IHBhcnNlIDY0LWJpdCBQUEMgc3lzdGVtIGNhbGwgcHJvbG9ndWVzLgorIz1tYXliZXB1c2grcHBj OiBXcml0ZSBuZXcgdGVzdGNhc2UuCiBQYXRjaDEwNTogZ2RiLTYuMy1wcGM2NHN5c2NhbGwtMjAw NDA2MjIucGF0Y2gKIAogIyBTdG9wIGEgYmFja3RyYWNlIHdoZW4gYSB6ZXJvIFBDIGlzIGVuY291 bnRlcmVkLgorIz1tYXliZXB1c2g6IFdyaXRlIG5ldyB0ZXN0Y2FzZS4KIFBhdGNoMTA2OiBnZGIt Ni4zLWZyYW1lcGN6ZXJvLTIwMDQwOTI3LnBhdGNoCiAKICMgSW5jbHVkZSB0aGUgcGMncyBzZWN0 aW9uIHdoZW4gZG9pbmcgYSBzeW1ib2wgbG9va3VwIHNvIHRoYXQgdGhlCiAjIGNvcnJlY3Qgc3lt Ym9sIGlzIGZvdW5kLgorIz1tYXliZXB1c2g6IFdyaXRlIG5ldyB0ZXN0Y2FzZS4KIFBhdGNoMTEx OiBnZGItNi4zLXBwYzY0ZGlzcGxheXN5bWJvbC0yMDA0MTEyNC5wYXRjaAogCiAjIEZpeCB1cHN0 cmVhbSBgc2V0IHNjaGVkdWxlci1sb2NraW5nIHN0ZXAnIHZzLiB1cHN0cmVhbSBQUEMgYXRvbWlj IHNlcXMuCisjPW1heWJlcHVzaCt3b3JrOiBJdCBpcyBhIGJpdCBkaWZmaWN1bHQgcGF0Y2gsIGEg cGFydCBpcyBwcGMgc3BlY2lmaWMuCiBQYXRjaDExMjogZ2RiLTYuNi1zY2hlZHVsZXJfbG9ja2lu Zy1zdGVwLXN3LXdhdGNocG9pbnRzMi5wYXRjaAogIyBNYWtlIHVwc3RyZWFtIGBzZXQgc2NoZWR1 bGVyLWxvY2tpbmcgc3RlcCcgYXMgZGVmYXVsdC4KKyM9bWF5YmVwdXNoK3dvcms6IEhvdyBtdWNo IGlzIHNjaGVkdWxlci1sb2NraW5nIHJlbGV2YW50IGFmdGVyIG5vbi1zdG9wPwogUGF0Y2gyNjA6 IGdkYi02LjYtc2NoZWR1bGVyX2xvY2tpbmctc3RlcC1pcy1kZWZhdWx0LnBhdGNoCiAKICMgQWRk IGEgd3JhcHBlciBzY3JpcHQgdG8gR0RCIHRoYXQgaW1wbGVtZW50cyBwc3RhY2sgdXNpbmcgdGhl CiAjIC0tcmVhZG5ldmVyIG9wdGlvbi4KKyM9cHVzaCt3b3JrOiB3aXRoIGdkYmluZGV4IG1heWJl IC0tcmVhZG5ldmVyIHNob3VsZCBubyBsb25nZXIgYmUgdXNlZC4KIFBhdGNoMTE4OiBnZGItNi4z LWdzdGFjay0yMDA1MDQxMS5wYXRjaAogCiAjIFZTWVNDQUxMIGFuZCBQSUUKKyM9ZmVkb3JhdGVz dAogUGF0Y2gxMjI6IGdkYi02LjMtdGVzdC1waWUtMjAwNTAxMDcucGF0Y2gKKyM9bWF5YmVwdXNo OiBNYXkgZ2V0IG9ic29sZXRlZCBieSBUb20ncyB1bnJlbG9jYXRlZCBvYmpmaWxlcyBwYXRjaC4K IFBhdGNoMzg5OiBnZGItYXJjaGVyLXBpZS1hZGRvbnMucGF0Y2gKKyM9cHVzaCt3b3JrOiBCcmVh a3BvaW50cyBkaXNhYmxpbmcgbWF0Y2hpbmcgc2hvdWxkIG5vdCBiZSBiYXNlZCBvbiBhZGRyZXNz LgogUGF0Y2gzOTQ6IGdkYi1hcmNoZXItcGllLWFkZG9ucy1rZWVwLWRpc2FibGVkLnBhdGNoCiAK ICMgR2V0IHNlbGZ0ZXN0IHdvcmtpbmcgd2l0aCBzZXAtZGVidWctaW5mbworIz1tYXliZXB1c2gK IFBhdGNoMTI1OiBnZGItNi4zLXRlc3Qtc2VsZi0yMDA1MDExMC5wYXRjaAogCiAjIFRlc3Qgc3Vw cG9ydCBvZiBtdWx0aXBsZSBkZXN0cnVjdG9ycyBqdXN0IGxpa2UgbXVsdGlwbGUgY29uc3RydWN0 b3JzCisjPWZlZG9yYXRlc3QKIFBhdGNoMTMzOiBnZGItNi4zLXRlc3QtZHRvcmZpeC0yMDA1MDEy MS5wYXRjaAogCiAjIEZpeCB0byBzdXBwb3J0IGV4ZWN1dGFibGUgbW92aW5nCisjPWZlZG9yYXRl c3QKIFBhdGNoMTM2OiBnZGItNi4zLXRlc3QtbW92ZWRpci0yMDA1MDEyNS5wYXRjaAogCi0jIEZp eCB0byBzdXBwb3J0IHVud2luZGluZyBzeXNjYWxscyBpbiBpYTY0IGNvcmVmaWxlcwotIyBQYXRj aDEzODogZ2RiLTYuMy1pYTY0LWNvcmVmaWxlLWZpeC0yMDA1MDEyNy5wYXRjaAotCiAjIEZpeCBn Y29yZSBmb3IgdGhyZWFkcworIz1pYTY0CiBQYXRjaDE0MDogZ2RiLTYuMy1nY29yZS10aHJlYWQt MjAwNTAyMDQucGF0Y2gKIAogIyBTdG9wIHdoaWxlIGludGVudGlvbmFsbHkgc3RlcHBpbmcgYW5k IHRoZSB0aHJlYWQgZXhpdCBpcyBtZXQuCisjPXB1c2gKIFBhdGNoMTQxOiBnZGItNi42LXN0ZXAt dGhyZWFkLWV4aXQucGF0Y2gKKyM9cHVzaAogUGF0Y2gyNTk6IGdkYi02LjMtc3RlcC10aHJlYWQt ZXhpdC0yMDA1MDIxMS10ZXN0LnBhdGNoCiAKICMgUHJldmVudCBnZGIgZnJvbSBiZWluZyBwdXNo ZWQgaW50byBiYWNrZ3JvdW5kCisjPW1heWJlcHVzaAogUGF0Y2gxNDI6IGdkYi02LjMtdGVybWlu YWwtZml4LTIwMDUwMjE0LnBhdGNoCiAKICMgVGVzdCBzaWJsaW5nIHRocmVhZHMgdG8gc2V0IHRo cmVhZGVkIHdhdGNocG9pbnRzIGZvciB4ODYgYW5kIHg4Ni02NAorIz1mZWRvcmF0ZXN0CiBQYXRj aDE0NTogZ2RiLTYuMy10aHJlYWRlZC13YXRjaHBvaW50czItMjAwNTAyMjUucGF0Y2gKIAogIyBG aXggcHJpbnRpbmcgb2YgaW5oZXJpdGVkIG1lbWJlcnMKKyM9bWF5YmVwdXNoCiBQYXRjaDE0ODog Z2RiLTYuMy1pbmhlcml0YW5jZS0yMDA1MDMyNC5wYXRjaAogCiAjIERvIG5vdCBpc3N1ZSB3YXJu aW5nIG1lc3NhZ2UgYWJvdXQgZmlyc3QgcGFnZSBvZiBzdG9yYWdlIGZvciBpYTY0IGdjb3JlCisj PWlhNjQKIFBhdGNoMTUzOiBnZGItNi4zLWlhNjQtZ2NvcmUtcGFnZTAtMjAwNTA0MjEucGF0Y2gK IAogIyBTZWN1cml0eSBlcnJhdGEgZm9yIHVudHJ1c3RlZCAuZ2RiaW5pdAorIz1wdXNoCiBQYXRj aDE1NzogZ2RiLTYuMy1zZWN1cml0eS1lcnJhdGEtMjAwNTA2MTAucGF0Y2gKIAogIyBJQTY0IHNp Z3RyYW1wIHByZXYgcmVnaXN0ZXIgcGF0Y2gKKyM9aWE2NAogUGF0Y2gxNTg6IGdkYi02LjMtaWE2 NC1zaWd0cmFtcC1mcmFtZS0yMDA1MDcwOC5wYXRjaAogCiAjIElBNjQgZ2NvcmUgc3BlZWQtdXAg cGF0Y2gKKyM9aWE2NAogUGF0Y2gxNjA6IGdkYi02LjMtaWE2NC1nY29yZS1zcGVlZHVwLTIwMDUw NzE0LnBhdGNoCiAKICMgTm90aWZ5IG9ic2VydmVycyB0aGF0IHRoZSBpbmZlcmlvciBoYXMgYmVl biBjcmVhdGVkCisjPWZlZG9yYXRlc3QKIFBhdGNoMTYxOiBnZGItNi4zLWluZmVyaW9yLW5vdGlm aWNhdGlvbi0yMDA1MDcyMS5wYXRjaAogCiAjIEZpeCBpYTY0IGluZm8gZnJhbWUgYnVnCisjPWlh NjQKIFBhdGNoMTYyOiBnZGItNi4zLWlhNjQtaW5mby1mcmFtZS1maXgtMjAwNTA3MjUucGF0Y2gK IAogIyBWZXJpZnkgcHJpbnRpbmcgb2YgaW5oZXJpdGVkIG1lbWJlcnMgdGVzdAorIz1mZWRvcmF0 ZXN0CiBQYXRjaDE2MzogZ2RiLTYuMy1pbmhlcml0YW5jZXRlc3QtMjAwNTA3MjYucGF0Y2gKIAog IyBBZGQgcmVhZG5ldmVyIG9wdGlvbgorIz1wdXNoCiBQYXRjaDE2NDogZ2RiLTYuMy1yZWFkbmV2 ZXItMjAwNTA5MDcucGF0Y2gKIAogIyBGaXggaWE2NCBnZGIgcHJvYmxlbSB3aXRoIHVzZXItc3Bl Y2lmaWVkIFNJR0lMTCBoYW5kbGluZworIz1pYTY0CiBQYXRjaDE2OTogZ2RiLTYuMy1pYTY0LXNp Z2lsbC0yMDA1MTExNS5wYXRjaAogCiAjIEFsbG93IG9wdGlvbiB0byBjb250aW51ZSBiYWNrdHJh Y2luZyBwYXN0IGEgemVybyBwYyB2YWx1ZQorIz1tYXliZXB1c2gKIFBhdGNoMTcwOiBnZGItNi4z LWJ0LXBhc3QtemVyby0yMDA1MTIwMS5wYXRjaAogCiAjIFVzZSBiaWdnZXIgbnVtYmVycyB0aGFu IGludC4KKyM9cHVzaAogUGF0Y2gxNzY6IGdkYi02LjMtbGFyZ2UtY29yZS0yMDA1MTIwNi5wYXRj aAogCiAjIEZpeCBkZWJ1Z2luZm8gYWRkcmVzc2VzIHJlc29sdmluZyBmb3IgLS1lbWl0LXJlbG9j cyBMaW51eCBrZXJuZWxzIChCWiAyMDM2NjEpLgorIz1wdXNoK3dvcms6IFRoZXJlIHdhcyBzb21l IG1haWwgdGhyZWFkIGFib3V0IGl0LCB0aGlzIHBhdGNoIG1heSBiZSBhIGhhY2suCiBQYXRjaDE4 ODogZ2RiLTYuNS1iejIwMzY2MS1lbWl0LXJlbG9jcy5wYXRjaAogCiAjIFNlY3VyaXR5IHBhdGNo OiBhdm9pZCBzdGFjayBvdmVyZmxvd3MgaW4gZHdhcmYgZXhwcmVzc2lvbiBjb21wdXRhdGlvbi4K ICMgQ1ZFLTIwMDYtNDE0NgorIz1wdXNoCiBQYXRjaDE5MDogZ2RiLTYuNS1kd2FyZi1zdGFjay1v dmVyZmxvdy5wYXRjaAogCiAjIFN1cHBvcnQgVExTIHN5bWJvbHMgKCtgZXJybm8nIHN1Z2dlc3Rp b24gaWYgbm8gcHRocmVhZCBpcyBmb3VuZCkgKEJaIDE4NTMzNykuCisjPXB1c2grd29yazogSXQg c2hvdWxkIGJlIHJlcGxhY2VkIGJ5IGV4aXN0aW5nIHVuY29tbWl0dGVkIFJvbGFuZCdzIGdsaWJj IHBhdGNoIGZvciBUTFMgd2l0aG91dCBsaWJwdGhyZWFkcy4KIFBhdGNoMTk0OiBnZGItNi41LWJ6 MTg1MzM3LXJlc29sdmUtdGxzLXdpdGhvdXQtZGVidWdpbmZvLXYyLnBhdGNoCiAKICMgRml4IFRM UyBzeW1ib2xzIHJlc29sdmluZyBmb3Igc2hhcmVkIGxpYnJhcmllcyB3aXRoIGEgcmVsYXRpdmUg cGF0aG5hbWUuCiAjIFRoZSB0ZXN0c3VpdGUgbmVlZHMgYGdkYi02LjUtdGxzLW9mLXNlcGFyYXRl LWRlYnVnaW5mby5wYXRjaCcuCisjPWZlZG9yYXRlc3Qrd29yazogT25lIHNob3VsZCByZWNoZWNr IGlmIGl0IGlzIHJlYWxseSBmaXhlZCB1cHN0cmVhbS4KIFBhdGNoMTk2OiBnZGItNi41LXNoYXJl ZGxpYnJhcnktcGF0aC5wYXRjaAogCiAjIFN1Z2dlc3QgZml4aW5nIHlvdXIgdGFyZ2V0IGFyY2hp dGVjdHVyZSBmb3IgZ2Ric2VydmVyKDEpIChCWiAxOTA4MTApLgogIyBGSVhNRTogSXQgY291bGQg YmUgYXV0b2RldGVjdGVkLgorIz1wdXNoK3dvcms6IFRoZXJlIGFyZSBtb3JlIHN1Y2ggZXJyb3Ig Y2FzZXMgdGhhdCBjYW4gaGFwcGVuLgogUGF0Y2gxOTk6IGdkYi02LjUtYnoxOTA4MTAtZ2Ric2Vy dmVyLWFyY2gtYWR2aWNlLnBhdGNoCiAKICMgVGVzdGNhc2UgZm9yIGRlYWRsb2NraW5nIG9uIGxh c3QgYWRkcmVzcyBzcGFjZSBieXRlOyBmb3IgY29ycnVwdGVkIGJhY2t0cmFjZXMuCisjPWZlZG9y YXRlc3QKIFBhdGNoMjExOiBnZGItNi41LWxhc3QtYWRkcmVzcy1zcGFjZS1ieXRlLXRlc3QucGF0 Y2gKIAogIyBJbXByb3ZlZCB0ZXN0c3VpdGUgcmVzdWx0cyBieSB0aGUgdGVzdHN1aXRlIHByb3Zp ZGVkIGJ5IHRoZSBjb3VydGVzeSBvZiBCRUEuCisjPWZlZG9yYXRlc3Qrd29yazogRm9yIHVwc3Ry ZWFtIGl0IHNob3VsZCBiZSByZXdyaXR0ZW4gYXMgYSBkZWphZ251IHRlc3QsIHRoZSB0ZXN0IG9m IG5vICI/PyIgd2FzIHVzZWZ1bC4KIFBhdGNoMjA4OiBnZGItNi41LUJFQS10ZXN0c3VpdGUucGF0 Y2gKIAogIyBGaXggcmVhZGxpbmUgc2VnZmF1bHQgb24gZXhjZXNzaXZlbHkgbG9uZyBoYW5kLXR5 cGVkIGxpbmVzLgorIz1kcm9wOiBBZnRlciB1cHN0cmVhbSdzIHJlYWRsaW5lIHJlYmFzZSBpdCB3 aWxsIGJlIG9ic29sZXRlLgogUGF0Y2gyMDk6IGdkYi02LjUtcmVhZGxpbmUtbG9uZy1saW5lLWNy YXNoLnBhdGNoCisjPWZlZG9yYXRlc3QKIFBhdGNoMjEzOiBnZGItNi41LXJlYWRsaW5lLWxvbmct bGluZS1jcmFzaC10ZXN0LnBhdGNoCiAKICMgRml4IGJvZ3VzIDB4MCB1bndpbmQgb2YgdGhlIHRo cmVhZCdzIHRvcG1vc3QgZnVuY3Rpb24gY2xvbmUoMykgKEJaIDIxNjcxMSkuCisjPWZlZG9yYXRl c3QKIFBhdGNoMjE0OiBnZGItNi41LWJ6MjE2NzExLWNsb25lLWlzLW91dGVybW9zdC5wYXRjaAog CiAjIFRlc3Qgc2lkZWVmZmVjdHMgb2Ygc2tpcHBpbmcgcHBjIC5zbyBsaWJzIHRyYW1wb2xpbmVz IChCWiAyMTgzNzkpLgorIz1mZWRvcmF0ZXN0CiBQYXRjaDIxNjogZ2RiLTYuNS1iejIxODM3OS1w cGMtc29saWItdHJhbXBvbGluZS10ZXN0LnBhdGNoCiAKICMgRml4IGxvY2t1cCBvbiB0cmFtcG9s aW5lIHZzLiBpdHMgZnVuY3Rpb24gbG9va3VwOyB1bnJlcHJvZHVjaWJsZSAoQlogMjE4Mzc5KS4K KyM9cHVzaAogUGF0Y2gyMTc6IGdkYi02LjUtYnoyMTgzNzktc29saWItdHJhbXBvbGluZS1sb29r dXAtbG9jay1maXgucGF0Y2gKIAogIyBGaW5kIHN5bWJvbHMgcHJvcGVybHkgYXQgdGhlaXIgb3Jp Z2luYWwgKGluY2x1ZGVkKSBmaWxlIChCWiAxMDk5MjEpLgorIz1mZWRvcmF0ZXN0CiBQYXRjaDIy NTogZ2RiLTYuNS1iejEwOTkyMS1EV19BVF9kZWNsX2ZpbGUtdGVzdC5wYXRjaAogCiAjIFVwZGF0 ZSBQUEMgdW53aW5kaW5nIHBhdGNoZXMgdG8gdGhlaXIgdXBzdHJlYW0gdmFyaWFudHMgKEJaIDE0 MDUzMikuCisjPWZlZG9yYXRlc3QrcHBjCiBQYXRjaDIyOTogZ2RiLTYuMy1iejE0MDUzMi1wcGMt dW53aW5kaW5nLXRlc3QucGF0Y2gKIAogIyBUZXN0Y2FzZSBmb3IgZXhlYygpIGZyb20gdGhyZWFk ZWQgcHJvZ3JhbSAoQlogMjAyNjg5KS4KKyM9ZmVkb3JhdGVzdAogUGF0Y2gyMzE6IGdkYi02LjMt YnoyMDI2ODktZXhlYy1mcm9tLXB0aHJlYWQtdGVzdC5wYXRjaAogCiAjIEJhY2twb3J0ZWQgZml4 dXBzIHBvc3QgdGhlIHNvdXJjZSB0YXJiYWxsLgotI1BhdGNoMjMyOiBnZGItdXBzdHJlYW0ucGF0 Y2gKKyM9ZHJvcDogSnVzdCBiYWNrcG9ydHMuCitQYXRjaDIzMjogZ2RiLXVwc3RyZWFtLnBhdGNo CiAKICMgVGVzdGNhc2UgZm9yIFBQQyBQb3dlcjYvREZQIGluc3RydWN0aW9ucyBkaXNhc3NlbWJs eSAoQlogMjMwMDAwKS4KKyM9ZmVkb3JhdGVzdCtwcGMKIFBhdGNoMjM0OiBnZGItNi42LWJ6MjMw MDAwLXBvd2VyNi1kaXNhc3NlbWJseS10ZXN0LnBhdGNoCiAKICMgVGVtcG9yYXJ5IHN1cHBvcnQg Zm9yIHNoYXJlZCBsaWJyYXJpZXMgPjJHQiBvbiA2NGJpdCBob3N0cy4gKEJaIDIzMTgzMikKKyM9 cHVzaCt3b3JrOiBVcHN0cmVhbSBzaG91bGQgaGF2ZSBiYWNrd2FyZCBjb21wYXQuIEFQSTogbGli Yy1hbHBoYTogPDIwMDcwMTI3MTA0NTM5LkdBOTQ0NEAuKj4KIFBhdGNoMjM1OiBnZGItNi4zLWJ6 MjMxODMyLW9ic3RhY2stMmdiLnBhdGNoCiAKICMgRml4IGRlYnVnZ2luZyBHREIgaXRzZWxmIC0g dGhlIGNvbXBpbGVkIGluIHNvdXJjZSBmaWxlcyBwYXRocyAoQlogMjI1NzgzKS4KKyM9cHVzaAog UGF0Y2gyNDE6IGdkYi02LjYtYnoyMjU3ODMtZ2RiLWRlYnVnaW5mby1wYXRocy5wYXRjaAogCiAj IEFsbG93IHJ1bm5pbmcgYC91c3IvYmluL2djb3JlJyB3aXRoIHByb3ZpZGVkIGJ1dCBpbmFjY2Vz c2libGUgdHR5IChCWiAyMjk1MTcpLgorIz1mZWRvcmF0ZXN0OiBEcm9wIHRoZSBvYnNvbGV0ZWQg Z2RiX2djb3JlLnNoIGNoYW5nZS4KIFBhdGNoMjQ1OiBnZGItNi42LWJ6MjI5NTE3LWdjb3JlLXdp dGhvdXQtdGVybWluYWwucGF0Y2gKIAogIyBOb3RpZnkgdXNlciBvZiBhIGNoaWxkIGZvcmtlZCBw cm9jZXNzIGJlaW5nIGRldGFjaGVkIChCWiAyMzUxOTcpLgorIz1wdXNoOiBUaGlzIGlzIG1vcmUg YWJvdXQgZGlzY3Vzc2lvbiBpZi93aGF0IHNob3VsZCBiZSBwcmludGVkLgogUGF0Y2gyNDc6IGdk Yi02LjYtYnoyMzUxOTctZm9yay1kZXRhY2gtaW5mby5wYXRjaAogCiAjIEF2b2lkIHRvbyBsb25n IHRpbWVvdXRzIG9uIGZhaWxpbmcgY2FzZXMgb2YgImFubm90YTEuZXhwIGFubm90YTMuZXhwIi4K KyM9cHVzaAogUGF0Y2gyNTQ6IGdkYi02LjYtdGVzdHN1aXRlLXRpbWVvdXRzLnBhdGNoCiAKICMg U3VwcG9ydCBmb3Igc3RlcHBpbmcgb3ZlciBQUEMgYXRvbWljIGluc3RydWN0aW9uIHNlcXVlbmNl cyAoQlogMjM3NTcyKS4KKyM9ZmVkb3JhdGVzdAogUGF0Y2gyNTg6IGdkYi02LjYtYnoyMzc1NzIt cHBjLWF0b21pYy1zZXF1ZW5jZS10ZXN0LnBhdGNoCiAKICMgTGluayB3aXRoIGxpYnJlYWRsaW5l IHByb3ZpZGVkIGJ5IHRoZSBvcGVyYXRpbmcgc3lzdGVtLgorIz1wdXNoCiBQYXRjaDI2MTogZ2Ri LTYuNi1yZWFkbGluZS1zeXN0ZW0ucGF0Y2gKIAogIyBUZXN0IGtlcm5lbCBWRFNPIGRlY29kaW5n IHdoaWxlIGF0dGFjaGluZyB0byBhbiBpMzg2IHByb2Nlc3MuCisjPWZlZG9yYXRlc3QKIFBhdGNo MjYzOiBnZGItNi4zLWF0dGFjaC1zZWUtdmRzby10ZXN0LnBhdGNoCiAKICMgRG8gbm90IGhhbmcg b24gZXhpdCBvZiBhIHRocmVhZCBncm91cCBsZWFkZXIgKEJaIDI0NzM1NCkuCisjPXB1c2gKIFBh dGNoMjY1OiBnZGItNi42LWJ6MjQ3MzU0LWxlYWRlci1leGl0LWZpeC5wYXRjaAorIz1wdXNoCiBQ YXRjaDI2NjogZ2RiLTYuNi1iejI0NzM1NC1sZWFkZXItZXhpdC10ZXN0LnBhdGNoCiAKICMgVGVz dCBsZWZ0b3ZlciB6b21iaWUgcHJvY2VzcyAoQlogMjQzODQ1KS4KKyM9ZmVkb3JhdGVzdAogUGF0 Y2gyNzE6IGdkYi02LjUtYnoyNDM4NDUtc3RhbGUtdGVzdGluZy16b21iaWUtdGVzdC5wYXRjaAog CiAjIE5ldyBsb2NhdGluZyBvZiB0aGUgbWF0Y2hpbmcgYmluYXJpZXMgZnJvbSB0aGUgcHVyZSBj b3JlIGZpbGUgKGJ1aWxkLWlkKS4KKyM9cHVzaAogUGF0Y2gyNzQ6IGdkYi02LjYtYnVpbGRpZC1s b2NhdGUucGF0Y2gKKyM9cHVzaAogUGF0Y2gzNTM6IGdkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBt LnBhdGNoCisjPXB1c2gKIFBhdGNoNDE1OiBnZGItNi42LWJ1aWxkaWQtbG9jYXRlLWNvcmUtYXMt YXJnLnBhdGNoCisjIFdvcmthcm91bmQgbGlicnBtIEJaIDY0MzAzMSBkdWUgdG8gaXRzIHVuZXhw ZWN0ZWQgZXhpdCgpIGNhbGxzIChCWiA2NDI4NzkpLgorIz1wdXNoCitQYXRjaDUxOTogZ2RiLTYu Ni1idWlsZGlkLWxvY2F0ZS1ycG0tbGlicnBtLXdvcmthcm91bmQucGF0Y2gKIAogIyBGaXggZGlz cGxheWluZyBvZiBudW1lcmljIGNoYXIgYXJyYXlzIGFzIHN0cmluZ3MgKEJaIDIyNDEyOCkuCisj PWZlZG9yYXRlc3Q6IEJ1dCBpdCBpcyBmYWlsaW5nIGFueXdheSwgb25lIHNob3VsZCBjaGVjayB0 aGUgYmVoYXZpb3IgbW9yZS4KIFBhdGNoMjgyOiBnZGItNi43LWNoYXJzaWduLXRlc3QucGF0Y2gK IAogIyBUZXN0IFBQQyBoaWRpbmcgb2YgY2FsbC12b2xhdGlsZSBwYXJhbWV0ZXIgcmVnaXN0ZXIu CisjPWZlZG9yYXRlc3QrcHBjCiBQYXRjaDI4NDogZ2RiLTYuNy1wcGMtY2xvYmJlcmVkLXJlZ2lz dGVycy1PMi10ZXN0LnBhdGNoCiAKICMgVGVzdHN1aXRlIGZpeGVzIGZvciBtb3JlIHN0YWJsZS9j b21wYXJhYmxlIHJlc3VsdHMuCisjPXB1c2gKIFBhdGNoMjg3OiBnZGItNi43LXRlc3RzdWl0ZS1z dGFibGUtcmVzdWx0cy5wYXRjaAogCiAjIFRlc3QgaWE2NCBtZW1vcnkgbGVha3Mgb2YgdGhlIGNv ZGUgdXNpbmcgbGlidW53aW5kLgorIz1mZWRvcmF0ZXN0CiBQYXRjaDI4OTogZ2RiLTYuNS1pYTY0 LWxpYnVud2luZC1sZWFrLXRlc3QucGF0Y2gKIAogIyBUZXN0IGhpZGluZyB1bmV4cGVjdGVkIGJy ZWFrcG9pbnRzIG9uIGludGVudGlvbmFsIHN0ZXAgY29tbWFuZHMuCisjPWZlZG9yYXRlc3QKIFBh dGNoMjkwOiBnZGItNi41LW1pc3NlZC10cmFwLW9uLXN0ZXAtdGVzdC5wYXRjaAogCiAjIFN1cHBv cnQgRFdfVEFHX2ludGVyZmFjZV90eXBlIHRoZSBzYW1lIHdheSBhcyBEV19UQUdfY2xhc3NfdHlw ZSAoQlogNDI2NjAwKS4KKyM9bWF5YmVwdXNoCiBQYXRjaDI5MzogZ2RiLTYuNy1iejQyNjYwMC1E V19UQUdfaW50ZXJmYWNlX3R5cGUtZml4LnBhdGNoCisjPWZlZG9yYXRlc3QKIFBhdGNoMjk0OiBn ZGItNi43LWJ6NDI2NjAwLURXX1RBR19pbnRlcmZhY2VfdHlwZS10ZXN0LnBhdGNoCiAKICMgVGVz dCBnY29yZSBtZW1vcnkgYW5kIHRpbWUgcmVxdWlyZW1lbnRzIGZvciBsYXJnZSBpbmZlcmlvcnMu CisjPWZlZG9yYXRlc3QKIFBhdGNoMjk2OiBnZGItNi41LWdjb3JlLWJ1ZmZlci1saW1pdC10ZXN0 LnBhdGNoCiAKICMgVGVzdCBkZWJ1Z2dpbmcgc3RhdGljYWxseSBsaW5rZWQgdGhyZWFkZWQgaW5m ZXJpb3JzIChCWiAyMzk2NTIpLgogIyAgLSBJdCByZXF1aXJlcyByZWNlbnQgZ2xpYmMgdG8gd29y ayBpbiB0aGlzIGNhc2UgcHJvcGVybHkuCisjPWZlZG9yYXRlc3QKIFBhdGNoMjk4OiBnZGItNi42 LXRocmVhZHMtc3RhdGljLXRlc3QucGF0Y2gKIAogIyBGaXggI2luY2x1ZGUgPGFzbS9wdHJhY2Uu aD4gb24ga2VybmVsLWhlYWRlcnMtMi42LjI1LTAuNDAucmMxLmdpdDIuZmM5Lng4Nl82NC4KKyM9 cHVzaAogUGF0Y2gzMDQ6IGdkYi02Ljcta2VybmVsLWhlYWRlcnMtY29tcGF0LnBhdGNoCiAKICMg VGVzdCBHQ09SRSBmb3Igc2htaWQgMCBzaGFyZWQgbWVtb3J5IG1hcHBpbmdzLgorIz1mZWRvcmF0 ZXN0OiBCdXQgaXQgaXMgYnJva2VuIGFueXdheSwgc29tZXRpbWVzIHRoZSBjYXNlIGJlaW5nIHRl c3RlZCBpcyBub3QgcmVwcm9kdWNpYmxlLgogUGF0Y2gzMDk6IGdkYi02LjMtbWFwcGluZy16ZXJv LWlub2RlLXRlc3QucGF0Y2gKIAogIyBUZXN0IGEgY3Jhc2ggb24gYGZvY3VzIGNtZCcsIGBmb2N1 cyBwcmV2JyBjb21tYW5kcy4KKyM9ZmVkb3JhdGVzdAogUGF0Y2gzMTE6IGdkYi02LjMtZm9jdXMt Y21kLXByZXYtdGVzdC5wYXRjaAogCiAjIFRlc3QgdmFyaW91cyBmb3JtcyBvZiB0aHJlYWRzIHRy YWNraW5nIGFjcm9zcyBleGVjKCkgKEJaIDQ0Mjc2NSkuCisjPWZlZG9yYXRlc3QKIFBhdGNoMzE1 OiBnZGItNi44LWJ6NDQyNzY1LXRocmVhZGVkLWV4ZWMtdGVzdC5wYXRjaAogCiAjIFNpbGVuY2Ug bWVtY3B5IGNoZWNrIHdoaWNoIHJldHVybnMgZmFsc2UgcG9zaXRpdmUgKHNwYXJjNjQpCisjPXB1 c2g6IEJ1dCBpdCBpcyBqdXN0IGEgR0NDIHdvcmthcm91bmQsIGxvb2sgdXAgdGhlIGV4aXN0aW5n IEdDQyBQUiBmb3IgaXQuCiBQYXRjaDMxNzogZ2RiLTYuOC1zcGFyYzY0LXNpbGVuY2UtbWVtY3B5 LWNoZWNrLnBhdGNoCiAKICMgRml4IG1lbW9yeSB0cmFzaGluZyBvbiBiaW5hcmllcyBmcm9tIEdD QyBBZGEgKHdvcmthcm91bmQgR0NDIFBSIDM1OTk4KS4KKyM9cHVzaAogUGF0Y2gzMTg6IGdkYi02 LjgtZ2NjMzU5OTgtYWRhLW1lbW9yeS10cmFzaC5wYXRjaAogCiAjIFRlc3QgYSBjcmFzaCBvbiBs aWJyYXJpZXMgbWlzc2luZyB0aGUgLnRleHQgc2VjdGlvbi4KKyM9ZmVkb3JhdGVzdAogUGF0Y2gz MjA6IGdkYi02LjUtc2VjdGlvbi1udW0tZml4dXAtdGVzdC5wYXRjaAogCiAjIEZpeCBjb21wYXRp YmlsaXR5IHdpdGggcmVjZW50IGdsaWJjIGhlYWRlcnMuCisjPXB1c2gKIFBhdGNoMzI0OiBnZGIt Ni44LWdsaWJjLWhlYWRlcnMtY29tcGF0LnBhdGNoCiAKICMgQ3JlYXRlIGEgc2luZ2xlIGJpbmFy eSBgZ2RiJyBhdXRvZGV0ZWN0aW5nIC0tdHVpIGJ5IGl0cyBhcmd2WzBdLgorIz1wdXNoK3dvcms6 IElJUkMgVG9tIHRvbGQgYXJndlswXSBzaG91bGQgbm90IGJlIHVzZWQgYnkgR05VIHByb2dyYW1z LCBhbHNvIGRyb3AgbGliZ2RiLmEuCiBQYXRjaDMyNjogZ2RiLTYuOC10dWktc2luZ2xlYmluYXJ5 LnBhdGNoCiAKICMgRml4IFBSUFNJTkZPIGluIHRoZSBjb3JlIGZpbGVzIGR1bXBlZCBieSBnY29y ZSAoQlogMjU0MjI5KS4KKyM9cHVzaAogUGF0Y2gzMjk6IGdkYi02LjgtYnoyNTQyMjktZ2NvcmUt cHJwc2luZm8ucGF0Y2gKIAogIyBGaXggcmVnaXN0ZXIgYXNzaWdubWVudHMgd2l0aCBubyBHREIg c3RhY2sgZnJhbWVzIChCWiA0MzYwMzcpLgorIz1wdXNoK3dvcms6IFRoaXMgZml4IGlzIGluY29y cmVjdC4KIFBhdGNoMzMwOiBnZGItNi44LWJ6NDM2MDM3LXJlZy1uby1sb25nZXItYWN0aXZlLnBh dGNoCiAKICMgTWFrZSB0aGUgR0RCIHF1aXQgcHJvY2Vzc2luZyBub24tYWJvcnRhYmxlIHRvIGNs ZWFudXAgZXZlcnl0aGluZyBwcm9wZXJseS4KKyM9cHVzaDogVXNlZnVsIG9ubHkgYWZ0ZXIgZ2Ri LTYuOC1hdHRhY2gtc2lnbmFsbGVkLWRldGFjaC1zdG9wcGVkLnBhdGNoIC4KIFBhdGNoMzMxOiBn ZGItNi44LXF1aXQtbmV2ZXItYWJvcnRzLnBhdGNoCiAKICMgU3VwcG9ydCBEV19UQUdfY29uc3Rh bnQgZm9yIEZvcnRyYW4gaW4gcmVjZW50IEZlZG9yYS9SSCBHQ0NzLgorIz1wdXNoCiBQYXRjaDMz MjogZ2RiLTYuOC1mb3J0cmFuLXRhZy1jb25zdGFudC5wYXRjaAogCiAjIEZpeCBhdHRhY2hpbmcg dG8gc3RvcHBlZCBwcm9jZXNzZXMgYW5kL29yIHBlbmRpbmcgc2lnbmFscy4KKyM9cHVzaCt3b3Jr CiBQYXRjaDMzNzogZ2RiLTYuOC1hdHRhY2gtc2lnbmFsbGVkLWRldGFjaC1zdG9wcGVkLnBhdGNo CiAKICMgVGVzdCB0aGUgd2F0Y2hwb2ludHMgY29uZGl0aW9uYWxzIHdvcmtzLgorIz1mZWRvcmF0 ZXN0CiBQYXRjaDM0MzogZ2RiLTYuOC13YXRjaHBvaW50LWNvbmRpdGlvbmFscy10ZXN0LnBhdGNo CiAKICMgRml4IHJlc29sdmluZyBvZiB2YXJpYWJsZXMgYXQgbG9jYXRpb25zIGxpc3RzIGluIHBy ZWxpbmtlZCBsaWJzIChCWiA0NjY5MDEpLgorIz1mZWRvcmF0ZXN0CiBQYXRjaDM0ODogZ2RiLTYu OC1iejQ2NjkwMS1iYWNrdHJhY2UtZnVsbC1wcmVsaW5rZWQucGF0Y2gKIAogIyBUaGUgbWVyZ2Vk IGJyYW5jaCBgYXJjaGVyJyBvZjogaHR0cDovL3NvdXJjZXdhcmUub3JnL2dkYi93aWtpL1Byb2pl Y3RBcmNoZXIKKyM9cHVzaAorI2FyY2hlci1qYW5rcmF0b2NodmlsLXZsYQorIz1wdXNoCisjYXJj aGVyLWphbmtyYXRvY2h2aWwtd2F0Y2hwb2ludDMKKyM9cHVzaAorI2FyY2hlci1qYW5rcmF0b2No dmlsLWlmdW5jCisjPXB1c2gKKyNhcmNoZXItcG11bGRvb24tbmV4dC1vdmVyLXRocm93MgorIz1t YXliZXB1c2gKKyNhcmNoZXItdHJvbWV5LXB5dGhvbgorIz1tYXliZXB1c2gKKyNhcmNoZXItdHJv bWV5LW9wdGlvbmFsLXBzeW10YWIKIFBhdGNoMzQ5OiBnZGItYXJjaGVyLnBhdGNoCisjPW1heWJl cHVzaAogUGF0Y2g0MjA6IGdkYi1hcmNoZXItYWRhLnBhdGNoCiAKICMgRml4IHBhcnNpbmcgZWxm NjQtaTM4NiBmaWxlcyBmb3Iga2R1bXAgUEFFIHZtY29yZSBkdW1wcyAoQlogNDU3MTg3KS4KICMg LSBUdXJuIG9uIDY0LWJpdCBCRkQgc3VwcG9ydCwgZ2xvYmFsbHkgZW5hYmxlIEFDX1NZU19MQVJH RUZJTEUuCisjPWZlZG9yYXRlc3QKIFBhdGNoMzYwOiBnZGItNi44LWJ6NDU3MTg3LWxhcmdlZmls ZS10ZXN0LnBhdGNoCiAKICMgTmV3IHRlc3QgZm9yIHN0ZXAtcmVzdW1lIGJyZWFrcG9pbnQgcGxh Y2VkIGluIG11bHRpcGxlIHRocmVhZHMgYXQgb25jZS4KKyM9ZmVkb3JhdGVzdAogUGF0Y2gzODE6 IGdkYi1zaW11bHRhbmVvdXMtc3RlcC1yZXN1bWUtYnJlYWtwb2ludC10ZXN0LnBhdGNoCiAKICMg Rml4IEdOVS9MaW51eCBjb3JlIG9wZW46IENhbid0IHJlYWQgcGF0aG5hbWUgZm9yIGxvYWQgbWFw OiBJbnB1dC9vdXRwdXQgZXJyb3IuCisjPXB1c2grd29yazogSXQgc2hvdWxkIGJlIGluIGdsaWJj OiBsaWJjLWFscGhhOiA8MjAwOTEwMDQxNjE3MDYuR0EyNzQ1MEAuKj4KIFBhdGNoMzgyOiBnZGIt Y29yZS1vcGVuLXZkc28td2FybmluZy5wYXRjaAogCiAjIEZpeCBzeXNjYWxsIHJlc3RhcnRzIGZv ciBhbWQ2NC0+aTM4NiBiaWFyY2guCisjPXB1c2gKIFBhdGNoMzkxOiBnZGIteDg2XzY0LWkzODYt c3lzY2FsbC1yZXN0YXJ0LnBhdGNoCiAKICMgRml4IHN0ZXBwaW5nIHdpdGggT01QIHBhcmFsbGVs IEZvcnRyYW4gc2VjdGlvbnMgKEJaIDUzMzE3NikuCisjPXB1c2grd29yazogSXQgcmVxdWlyZXMg c29tZSBiZXR0ZXIgRFdBUkYgYW5ub3RhdGlvbnMuCiBQYXRjaDM5MjogZ2RiLWJ6NTMzMTc2LWZv cnRyYW4tb21wLXN0ZXAucGF0Y2gKIAogIyBVc2UgZ2ZvcnRyYW40NCB3aGVuIHJ1bm5pbmcgdGhl IHRlc3RzdWl0ZSBvbiBSSEVMLTUuCisjPWZlZG9yYXRlc3QKIFBhdGNoMzkzOiBnZGItcmhlbDUt Z2NjNDQucGF0Y2gKIAogIyBEaXNhYmxlIHdhcm5pbmcgbWVzc2FnZXMgbmV3IGZvciBnZGItNi44 KyBmb3IgUkhFTC01IGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCiAjIFdvcmthcm91bmQgUkhFTC01 IGtlcm5lbHMgZm9yIGRldGFjaGluZyBTSUdTVE9QcGVkIHByb2Nlc3NlcyAoQlogNDk4NTk1KS4K KyM9ZmVkb3JhdGVzdAogUGF0Y2gzMzU6IGdkYi1yaGVsNS1jb21wYXQucGF0Y2gKIAogIyBGaXgg cmVncmVzc2lvbiBieSBweXRob24gb24gaWE2NCBkdWUgdG8gc3RhbGUgY3VycmVudCBmcmFtZS4K KyM9cHVzaAogUGF0Y2gzOTc6IGdkYi1mb2xsb3ctY2hpbGQtc3RhbGUtcGFyZW50LnBhdGNoCiAK ICMgV29ya2Fyb3VuZCBjY2FjaGUgbWFraW5nIGxpbmVubyBub24temVybyBmb3IgY29tbWFuZC1s aW5lIGRlZmluaXRpb25zLgorIz1kcm9wOiBjY2FjaGUgaXMgcmFyZWx5IHVzZWQgYW5kIGl0IGlz IGV2ZW4gZml4ZWQgbm93LgogUGF0Y2g0MDM6IGdkYi1jY2FjaGUtd29ya2Fyb3VuZC5wYXRjaAog CiAjIEltcGxlbWVudCBgaW5mbyBjb21tb24nIGZvciBGb3J0cmFuLgorIz1wdXNoCiBQYXRjaDQw NDogZ2RiLWZvcnRyYW4tY29tbW9uLXJlZHVjZS5wYXRjaAorIz1wdXNoCiBQYXRjaDQwNTogZ2Ri LWZvcnRyYW4tY29tbW9uLnBhdGNoCiAKICMgVGVzdGNhc2UgZm9yICJEbyBub3QgbWFrZSB1cCBs aW5lIGluZm9ybWF0aW9uIiBmaXggYnkgRGFuaWVsIEphY29ib3dpdHouCisjPWZlZG9yYXRlc3QK IFBhdGNoNDA3OiBnZGItbGluZW5vLW1ha2V1cC10ZXN0LnBhdGNoCiAKICMgVGVzdCBwb3dlcjcg cHBjIGRpc2Fzc2VtYmx5LgorIz1mZWRvcmF0ZXN0K3BwYwogUGF0Y2g0MDg6IGdkYi1wcGMtcG93 ZXI3LXRlc3QucGF0Y2gKIAogIyBSZXZlcnQ6IEFkZCAtV3VudXNlZC1mdW5jdGlvbiB0byBjb21w aWxlIGZsYWdzLgorIz1kcm9wCiBQYXRjaDQxMjogZ2RiLXVudXNlZC1yZXZlcnQucGF0Y2gKIAog IyBGaXggaTM4Nit4ODZfNjQgcndhdGNoK2F3YXRjaCBiZWZvcmUgcnVuLCByZWdyZXNzaW9uIGFn YWluc3QgNi44IChCWiA1NDE4NjYpLgorIz1wdXNoK3dvcms6IEl0IHNob3VsZCBiZSBmaXhlZCBw cm9wZXJseSBpbnN0ZWFkLgogUGF0Y2g0MTc6IGdkYi1iejU0MTg2Ni1yd2F0Y2gtYmVmb3JlLXJ1 bi5wYXRjaAogCiAjIEZpeCBjcmFzaCBvbiBDKysgdHlwZXMgaW4gc29tZSBkZWJ1ZyBpbmZvIGZp bGVzIChCWiA1NzUyOTIsIEtlaXRoIFNlaXR6KS4KICMgVGVtcG9yYXJpbHkgd29ya2Fyb3VuZCB0 aGUgY3Jhc2ggb2YgQlogNTc1MjkyIGFzIHRoZXJlIHdhcyBub3cgQlogNTg1NDQ1LgogIyBSZS1l bmFibGUgdGhlIEJaIDU3NTI5MiBhbmQgQlogNTg1NDQ1IEMrKyBmaXggdXNpbmcgYW4gdXBkYXRl ZCBwYXRjaC4KKyM9bWF5YmVwdXNoOiBOb3Qgc3VyZSBpZiBhbGwgdGhlIHBhcnRzIGFyZSB1cHN0 cmVhbS4KIFBhdGNoNDUxOiBnZGItYno1NzUyOTItZGVsYXllZC1waHlzbmFtZS5wYXRjaAogCiAj IEZpeCBjcmFzaCB3aGVuIHVzaW5nIEdOVSBJRlVOQyBjYWxsIGZyb20gYnJlYWtwb2ludCBjb25k aXRpb24uCisjPWRyb3A6IEFmdGVyIGFyY2hlci1qYW5rcmF0b2NodmlsLWlmdW5jIGdldHMgaW4g dGhpcyBvbmUgZ2V0cyBvYnNvbGV0ZWQuCiBQYXRjaDQ1NDogZ2RiLWJ6NTM5NTkwLWdudS1pZnVu Yy1maXgtY29uZC5wYXRjaAogCiAjIFdvcmthcm91bmQgbm9uLXN0b3AgbW9yaWJ1bmQgbG9jYXRp b25zIGV4cGxvaXRlZCBieSBrZXJuZWwgdXRyYWNlIChCWiA1OTA2MjMpLgorIz1wdXNoK3dvcms6 IEN1cnJlbnRseSBpdCBpcyBzdGlsbCBub3QgZnVsbHkgc2FmZS4KIFBhdGNoNDU5OiBnZGItbW9y aWJ1bmQtdXRyYWNlLXdvcmthcm91bmQucGF0Y2gKIAogIyBSZW1vdmUgY29yZSBmaWxlIHdoZW4g c3RhcnRpbmcgYSBwcm9jZXNzIChCWiA1OTQ1NjApLgorIz1tYXliZXB1c2gKIFBhdGNoNDYxOiBn ZGItYno1OTQ1NjAtY29yZS12cy1wcm9jZXNzLnBhdGNoCiAKICMgRml4IGZvbGxvdy1leGVjIGZv ciBDKysgcHJvZ3JhbXMgKGJ1Z3JlcG9ydGVkIGJ5IE1hcnRpbiBTdHJhbnNreSkuCisjPWZlZG9y YXRlc3QKIFBhdGNoNDcwOiBnZGItYXJjaGVyLW5leHQtb3Zlci10aHJvdy1jeHgtZXhlYy5wYXRj aAogCiAjIEJhY2twb3J0IERXQVJGLTQgc3VwcG9ydCAoQlogNjAxODg3LCBUb20gVHJvbWV5KS4K KyM9ZmVkb3JhdGVzdAogUGF0Y2g0NzU6IGdkYi1iejYwMTg4Ny1kd2FyZjQtcmgtdGVzdC5wYXRj aAogCiAjIFByaW50IDJEIEMrKyB2ZWN0b3JzIGFzIG1hdHJpY2VzIChCWiA1NjI3NjMsIHNvdXJj ZXdhcmUxMDY1OSwgQ2hyaXMgTW9sbGVyKS4KKyM9cHVzaCt3b3JrOiBUaGVyZSBhcmUgc29tZSBv dXRzdGFuZGluZyBpc3N1ZXMsIGNoZWNrIHRoZSBtYWlscy4KIFBhdGNoNDg2OiBnZGItYno1NjI3 NjMtcHJldHR5LXByaW50LTJkLXZlY3RvcnMucGF0Y2gKKyM9cHVzaCt3b3JrOiBUaGVyZSBhcmUg c29tZSBvdXRzdGFuZGluZyBpc3N1ZXMsIGNoZWNrIHRoZSBtYWlscy4KIFBhdGNoNDg3OiBnZGIt Yno1NjI3NjMtcHJldHR5LXByaW50LTJkLXZlY3RvcnMtbGlic3RkY3h4LnBhdGNoCiAKICMgRml4 IHByZWxpbmtlZCBleGVjdXRhYmxlcyB3aXRoIHNlcGRlYnVnIGFuZCBjb3B5IHJlbG9jYXRpb25z IChCWiA2MTQ2NTkpLgorIz1kcm9wOiBVcHN0cmVhbWVkLgogUGF0Y2g0ODk6IGdkYi1iejYxNDY1 OS1wcmVsaW5rLWR5bmJzcy5wYXRjaAogCiAjIFByb3ZpZGUgL3Vzci9iaW4vZ2RiLWFkZC1pbmRl eCBmb3IgcnBtLWJ1aWxkIChUb20gVHJvbWV5KS4KKyM9ZHJvcDogUmUtY2hlY2sgYWdhaW5zdCB0 aGUgdXBzdHJlYW0gdmVyc2lvbi4KIFBhdGNoNDkxOiBnZGItZ2RiLWFkZC1pbmRleC1zY3JpcHQu cGF0Y2gKIAorIyBGaXggZ2NvcmUgZnJvbSB2ZXJ5IHNtYWxsIHRlcm1pbmFsIHdpbmRvd3MgKEJa IDU1NTA3NikuCisjPWRyb3A6IFVwc3RyZWFtZWQuCitQYXRjaDQ5MzogZ2RiLWJ6NTU1MDc2LWdj b3JlLXNtYWxsLWhlaWdodC5wYXRjaAorCisjIE91dCBvZiBtZW1vcnkgaXMganVzdCBhbiBlcnJv ciwgbm90IGZhdGFsICh1bmluaXRpYWxpemVkIFZMUyB2YXJzLCBCWiA1NjgyNDgpLgorIz1kcm9w K3dvcms6IEluZmVyaW9yIG9iamVjdHMgc2hvdWxkIGJlIHJlYWQgaW4gcGFydHMsIHRoZW4gdGhp cyBwYXRjaCBnZXRzIG9ic29sZXRlZC4KK1BhdGNoNDk2OiBnZGItYno1NjgyNDgtb29tLWlzLWVy cm9yLnBhdGNoCisKKyMgV29ya2Fyb3VuZCBmYWxzZSBHQ0Mgd2FybmluZyhzKS4KKyM9cHVzaAor UGF0Y2g0OTc6IGdkYi1mYWxzZS1nY2Mtd2FybmluZy5wYXRjaAorCisjIERvIG5vdCBjcmFzaCBv biBicm9rZW4gc2VwYXJhdGUgZGVidWdpbmZvIGR1ZSB0byBvbGQgZWxmdXRpbHMgKEJaIDYzMTU3 NSkuCisjPWRyb3A6IFVwc3RyZWFtZWQuCitQYXRjaDQ5OTogZ2RiLWJ6NjMxNTc1LWdkYi1pbmRl eC1ub2JpdHMucGF0Y2gKKworIyBGaXggc3ltYm9sIGxvb2t1cCBtaXNzZXMgbWV0aG9kcyBvZiBj dXJyZW50IGNsYXNzIChCWiA2MzExNTgsIFNhbWkgV2FnaWFhbGxhKS4KKyM9bWF5YmVwdXNoCitQ YXRjaDUwMDogZ2RiLWJ6NjMxMTU4LWN4eC10aGlzLWxvb2t1cC5wYXRjaAorCisjIEZpeCBBZGEg cmVncmVzc2lvbiB3aGVuIGFueSAuZ2RiX2luZGV4IGxpYnJhcnkgaXMgcHJlc2VudC4KKyM9ZHJv cDogVXBzdHJlYW1lZC4KK1BhdGNoNTAxOiBnZGItZ2RiaW5kZXgtYWRhLXJlZ3Jlc3Npb24ucGF0 Y2gKKworIyBweXRob246IGxvYWQgKi1nZGIucHkgZm9yIHNobGlicyBkdXJpbmcgYXR0YWNoIChC WiA2MzQ2NjApLgorIz1kcm9wOiBVcHN0cmVhbWVkLgorUGF0Y2g1MDI6IGdkYi1iejYzNDY2MC1n ZGJweS1sb2FkLW9uLWF0dGFjaC5wYXRjaAorCisjIEZpeCBkb3VibGUgZnJlZSBjcmFzaCBkdXJp bmcgb3ZlcmxvYWQgcmVzb2x1dGlvbiAoUFIgMTIwMjgsIFNhbWkgV2FnaWFhbGxhKS4KKyM9ZHJv cDogVXBzdHJlYW1lZC4KK1BhdGNoNTAzOiBnZGItcHIxMjAyOC1kb3VibGUtZnJlZS5wYXRjaAor CisjIEZpeCBnY29yZSB3cml0ZXIgZm9yIC1XbCwteixyZWxybyAoUFIgY29yZWZpbGVzLzExODA0 KS4KKyM9cHVzaDogVGhlcmUgaXMgZGlmZmVyZW50IHBhdGNoIG9uIGdkYi1wYXRjaGVzLCB3YWl0 aW5nIG5vdyBmb3IgcmVzb2x1dGlvbiBpbiBrZXJuZWwuCitQYXRjaDUwNDogZ2RiLWJ6NjIzNzQ5 LWdjb3JlLXJlbHJvLnBhdGNoCisKKyMgRml4IGluZmluaXRlIGxvb3AgY3Jhc2ggb24gc2VsZi1y ZWZlcmVuY2luZyBjbGFzcyAoQlogNjI3NDMyKS4KKyM9ZHJvcDogVXBzdHJlYW1lZC4KK1BhdGNo NTA2OiBnZGItYno2Mjc0MzItbG9vcC1zdGF0aWMtc2VsZi1jbGFzcy5wYXRjaAorCisjIEZpeCBs b3N0IHNpZ2luZm9fdCBpbiBsaW51eC1uYXQgKEJaIDU5MjAzMSkuCisjPWRyb3A6IFVwc3RyZWFt ZWQuCitQYXRjaDUwNzogZ2RiLWJ6NTkyMDMxLXNpZ2luZm8tbG9zdC0xb2Y1LnBhdGNoCisjPWRy b3A6IFVwc3RyZWFtZWQuCitQYXRjaDUwODogZ2RiLWJ6NTkyMDMxLXNpZ2luZm8tbG9zdC0yb2Y1 LnBhdGNoCisjPWRyb3A6IFVwc3RyZWFtZWQuCitQYXRjaDUwOTogZ2RiLWJ6NTkyMDMxLXNpZ2lu Zm8tbG9zdC0zb2Y1LnBhdGNoCisjPXB1c2gKK1BhdGNoNTEwOiBnZGItYno1OTIwMzEtc2lnaW5m by1sb3N0LTRvZjUucGF0Y2gKKyM9cHVzaAorUGF0Y2g1MTE6IGdkYi1iejU5MjAzMS1zaWdpbmZv LWxvc3QtNW9mNS5wYXRjaAorCisjIEZpeCAuZ2RiX2luZGV4IGZvciBiaWctZW5kaWFuIGhvc3Rz IChUb20gVHJvbWV5KS4KKyM9ZHJvcDogVXBzdHJlYW1lZC4KK1BhdGNoNTE0OiBnZGItZ2RiaW5k ZXgtdjEtdG8tdjIucGF0Y2gKKyM9ZHJvcDogVXBzdHJlYW1lZC4KK1BhdGNoNTEyOiBnZGItZ2Ri aW5kZXgtYmlnZW5kaWFuLnBhdGNoCisjPWRyb3A6IFVwc3RyZWFtZWQuCitQYXRjaDUxNTogZ2Ri LWdkYmluZGV4LXYyLXRvLXYzLnBhdGNoCisKKyMgW2lmdW5jXSBGaXggY3Jhc2ggb24gZGVsZXRp bmcgd2F0Y2hwb2ludCBvZiBhbiBhdXRvdmFyaWFibGUgKEJaIDYzNzc3MCkuCisjPWRyb3A6IEEg cGFydCBvZiBhcmNoZXItamFua3JhdG9jaHZpbC1pZnVuYyB3b3JrLgorUGF0Y2g1MTM6IGdkYi1i ejYzNzc3MC1pZnVuYy13YXRjaHBvaW50LWRlbGV0ZS5wYXRjaAorCisjIEZpeCBweXRob24gc3Rh bGUgZXJyb3Igc3RhdGUsIGFsc28gZml4IGl0cyBzYXZlL3Jlc3RvcmUgKEJaIDYzOTA4OSkuCisj PWRyb3A6IEp1c3QgYSBiYWNrcG9ydC4KK1BhdGNoNTE4OiBnZGItdGVzdHN1aXRlLWxpYi1weXRo b24ucGF0Y2gKKyM9ZHJvcDogVXBzdHJlYW1lZC4KK1BhdGNoNTE2OiBnZGItcHl0aG9uLWVycm9y LXN0YXRlLnBhdGNoCisKKyMgRml4IGluZmVyaW9yIGV4ZWMgb2YgbmV3IFBJRSB4ODZfNjQgKEJa IDYzODk3OSkuCisjPWRyb3A6IFVwc3RyZWFtZWQuCitQYXRjaDUxNzogZ2RiLWV4ZWMtcGllLWFt ZDY0LnBhdGNoCisKKyMgRml4IGNyYXNoIG9uIENUUkwtQyB3aGlsZSByZWFkaW5nIGFuIEVMRiBz eW1ib2wgZmlsZSAoQlogNjQyODc5KS4KKyM9cHVzaAorUGF0Y2g1MjA6IGdkYi1iejY0Mjg3OS1l bGZyZWFkLXNpZ2ludC1zdGFsZS5wYXRjaAorCisjIGlGb3J0IGNvbXBhdC4gLSBjYXNlIGluc2Vu c2l0aXZlIERXQVJGIG5vdCBpbiBsb3dlcmNhc2UgKEJaIDY0NTc3MykuCitQYXRjaDUyMjogZ2Ri LWJ6NjQ1NzczLWlmb3J0LWNhc2UtMW9mMy5wYXRjaAorUGF0Y2g1MjM6IGdkYi1iejY0NTc3My1p Zm9ydC1jYXNlLTJvZjMucGF0Y2gKK1BhdGNoNTI0OiBnZGItYno2NDU3NzMtaWZvcnQtY2FzZS0z b2YzLnBhdGNoCisKIEJ1aWxkUmVxdWlyZXM6IG5jdXJzZXMtZGV2ZWwlez9faXNhfSB0ZXhpbmZv IGdldHRleHQgZmxleCBiaXNvbiBleHBhdC1kZXZlbCV7P19pc2F9CiBSZXF1aXJlczogcmVhZGxp bmUlez9faXNhfQogQnVpbGRSZXF1aXJlczogcmVhZGxpbmUtZGV2ZWwlez9faXNhfQpAQCAtNDM0 LDEzICs2NDksMTEgQEAgQnVpbGRSZXF1aXJlczogemxpYi1kZXZlbCV7P19pc2F9CiAlaWYgMCV7 IT9lbDU6MX0KIFJlcXVpcmVzOiBweXRob24tbGlicyV7P19pc2F9CiAlZWxzZQotUmVxdWlyZXM6 IHB5dGhvbiV7P19pc2F9CisjIFRoaXMgUkhFTC01LjYgcHl0aG9uIHZlcnNpb24gZ290IHNwbGl0 IG91dCBweXRob24tbGlicyBmb3IgcHBjNjQuCisjIFJIRUwtNSBycG0gZG9lcyBub3Qgc3VwcG9y dCAuJXtfYXJjaH0gZGVwZW5kZW5jaWVzLgorUmVxdWlyZXM6IHB5dGhvbi1saWJzLSV7X2FyY2h9 ID49IDIuNC4zLTMyLmVsNQogJWVuZGlmCiBCdWlsZFJlcXVpcmVzOiBweXRob24tZGV2ZWwlez9f aXNhfQotIyBUZW1wb3JhcmlseSBiZWZvcmUgcHl0aG9uIGZpbGVzIGdldCBtb3ZlZCB0byBsaWJz dGRjKysucnBtCi0jIGxpYnN0ZGMrKyV7Yml0c19vdGhlcn0gaXMgbm90IHByZXNlbnQgaW4gS29q aSwgdGhlIC5zcGVjIHNjcmlwdCBnZW5lcmF0aW5nCi0jIGdkYi9weXRob24vbGlic3RkY3h4LyBh bHNvIGRvZXMgbm90IGRlcGVuZCBvbiB0aGUgJXtiaXRzX290aGVyfSBmaWxlcy4KLUJ1aWxkUmVx dWlyZXM6IGxpYnN0ZGMrKyV7P19pc2F9CiAlZW5kaWYgIyAwJXshP193aXRob3V0X3B5dGhvbjox fQogCiAlaWYgMCV7P193aXRoX3Rlc3RzdWl0ZToxfQpAQCAtNTU2LDcgKzc2OSw3IEBAIHJtIC1m IGdkYi9qdi1leHAuYyBnZGIvbTItZXhwLmMgZ2RiL29iamMtZXhwLmMgZ2RiL3AtZXhwLmMKIAog JWlmIDAleyE/X3dpdGhfdXBzdHJlYW06MX0KIAotI3BhdGNoMjMyIC1wMQorJXBhdGNoMjMyIC1w MQogJXBhdGNoMzQ5IC1wMQogJXBhdGNoNDIwIC1wMQogJXBhdGNoMSAtcDEKQEAgLTY2OSw4ICs4 ODIsMzUgQEAgcm0gLWYgZ2RiL2p2LWV4cC5jIGdkYi9tMi1leHAuYyBnZGIvb2JqYy1leHAuYyBn ZGIvcC1leHAuYwogIyBUaGlzIHBhdGNoIHNob3VsZCBiZSBhcHBsaWVkIHRvIGdjYy00LjUrLnNy Yy5ycG06CiAjcGF0Y2g0ODcgLXAxCiAlcGF0Y2g0MTUgLXAxCislcGF0Y2g1MTkgLXAxCiAlcGF0 Y2g0ODkgLXAxCiAlcGF0Y2g0OTEgLXAxCislcGF0Y2g0OTMgLXAxCislcGF0Y2g0OTYgLXAxCisl cGF0Y2g0OTcgLXAxCislcGF0Y2g0OTkgLXAxCislcGF0Y2g1MDAgLXAxCislcGF0Y2g1MDEgLXAx CislcGF0Y2g1MDIgLXAxCislcGF0Y2g1MDMgLXAxCislcGF0Y2g1MDQgLXAxCislcGF0Y2g1MDYg LXAxCislcGF0Y2g1MDcgLXAxCislcGF0Y2g1MDggLXAxCislcGF0Y2g1MDkgLXAxCislcGF0Y2g1 MTAgLXAxCislcGF0Y2g1MTEgLXAxCislcGF0Y2g1MTQgLXAxCislcGF0Y2g1MTIgLXAxCislcGF0 Y2g1MTUgLXAxCislcGF0Y2g1MTMgLXAxCislcGF0Y2g1MTYgLXAxCislcGF0Y2g1MTcgLXAxCisl cGF0Y2g1MTggLXAxCislcGF0Y2g1MjAgLXAxCislcGF0Y2g1MjIgLXAxCislcGF0Y2g1MjMgLXAx CislcGF0Y2g1MjQgLXAxCiAKICVwYXRjaDM5MyAtcDEKICVwYXRjaDMzNSAtcDEKQEAgLTcwNyw5 ICs5NDcsMTEgQEAgcm0gLWYgZ2RiL2RvYy8qLmluZm8tKgogIyBidWlsdC4KICMgSW5pdGlhbGx5 IHdlJ3JlIGluIHRoZSAle2dkYl9zcmN9IGRpcmVjdG9yeS4KIAotcm0gLWZyICV7Z2RiX2J1aWxk fQotbWtkaXIgJXtnZGJfYnVpbGR9Ci1jZCAle2dkYl9idWlsZH0KK2ZvciBmcHJvZmlsZSBpbiAl ez9fd2l0aF9wcm9maWxlOi1mcHJvZmlsZX0gIiIKK2RvCisKK21rZGlyICV7Z2RiX2J1aWxkfSRm cHJvZmlsZQorY2QgJXtnZGJfYnVpbGR9JGZwcm9maWxlCiAKICMgZzc3IGV4ZWN1dGFibGUgaXMg bm8gbG9uZ2VyIHByZXNlbnQgaW4gRmVkb3JhIGdjYy00LngrLgogZzc3PSJgd2hpY2ggZ2ZvcnRy YW4gMj4vZGV2L251bGwgfHwgdHJ1ZWAiCkBAIC03NzYsNyArMTAxOCw1NiBAQCAkKDogUkhFTC01 IGxpYnJwbSBoYXMgaW5jb21wYXRpYmxlIEFQSS4gKQkJCVwKIAkle190YXJnZXRfcGxhdGZvcm19 CiAlZW5kaWYKIAotbWFrZSAlez9fc21wX21mbGFnc30KK2lmIFsgLXogIiV7IT9fd2l0aF9wcm9m aWxlOm5vfSIgXQordGhlbgorICAjIFJ1biBhbGwgdGhlIGNvbmZpZ3VyZSB0ZXN0cyBiZWluZyBp bmNvbXBhdGlibGUgd2l0aCAkRlBST0ZJTEVfQ0ZMQUdTLgorICBtYWtlICV7P19zbXBfbWZsYWdz fSBjb25maWd1cmUtaG9zdCBjb25maWd1cmUtdGFyZ2V0CisgIG1ha2UgJXs/X3NtcF9tZmxhZ3N9 IGNsZWFuCisKKyAgIyBXb3JrYXJvdW5kIC1mcHJvZmlsZS11c2U6CisgICMgbGludXgteDg2LWxv dy5jOjIyMjU6IEVycm9yOiBzeW1ib2wgYHN0YXJ0X2kzODZfZ290bycgaXMgYWxyZWFkeSBkZWZp bmVkCisgIG1ha2UgJXs/X3NtcF9tZmxhZ3N9IC1DIGdkYi9nZGJzZXJ2ZXIgbGludXgteDg2LWxv dy5vCitmaQorCisjIEdsb2JhbCBDRkxBR1Mgd291bGQgZmFpbCBvbjoKKyMgY29uZnRlc3QuYzox OjE6IGVycm9yOiBjb3ZlcmFnZSBtaXNtYXRjaCBmb3IgZnVuY3Rpb24gJ21haW4nIHdoaWxlIHJl YWRpbmcgY291bnRlciAnYXJjcycKK2lmIFsgIiRmcHJvZmlsZSIgPSAiLWZwcm9maWxlIiBdCit0 aGVuCisgIEZQUk9GSUxFX0NGTEFHUz0nLWZwcm9maWxlLWdlbmVyYXRlJworZWxpZiBbIC16ICIl eyE/X3dpdGhfcHJvZmlsZTpub30iIF0KK3RoZW4KKyAgRlBST0ZJTEVfQ0ZMQUdTPSctZnByb2Zp bGUtdXNlJworICAjIFdlIGNhbm5vdCB1c2UgLWZwcm9maWxlLWRpciBhcyB0aGUgYmFyZSBmaWxl bmFtZXMgY2xhc2guCisgIChjZCAuLi8le2dkYl9idWlsZH0tZnByb2ZpbGU7CisgICAjIEl0IHdh cyAzMzMgb24geDg2XzY0LgorICAgdGVzdCAkKGZpbmQgLW5hbWUgIiouZ2NkYSJ8d2MgLWwpIC1n dCAzMDAKKyAgIGZpbmQgLW5hbWUgIiouZ2NkYSIgfCB3aGlsZSByZWFkIC1yIGkKKyAgIGRvCisg ICAgIGxuICRpIC4uLyV7Z2RiX2J1aWxkfS8kaQorICAgZG9uZQorICApCitlbHNlCisgIEZQUk9G SUxFX0NGTEFHUz0iIgorZmkKKworbWFrZSAlez9fc21wX21mbGFnc30gQ0ZMQUdTPSIkQ0ZMQUdT ICRGUFJPRklMRV9DRkxBR1MiIExERkxBR1M9IiRGUFJPRklMRV9DRkxBR1MiCisKK2lmIFsgIiRm cHJvZmlsZSIgPSAiLWZwcm9maWxlIiBdCit0aGVuCisgIGNkIGdkYgorICBjcCAtcCBnZGIgZ2Ri LXdpdGhpbmRleAorICBQQVRIPSIkUFdEOiRQQVRIIiBzaCAuLi8uLi9nZGIvZ2RiLWFkZC1pbmRl eCAkUFdEL2dkYi13aXRoaW5kZXgKKyAgLi9nZGIgLW54IC1leCBxIC4vZ2RiLXdpdGhpbmRleAor ICAuL2dkYiAtbnggLXJlYWRub3cgLWV4IHEgLi9nZGItd2l0aGluZGV4CisgIGNkIC4uCitmaQor CitjZCAuLgorCitkb25lCSMgZnByb2ZpbGUKKworY2QgJXtnZGJfYnVpbGR9CisKIG1ha2UgJXs/ X3NtcF9tZmxhZ3N9IGluZm8KIAogZ3JlcCAnI2RlZmluZSBIQVZFX1pMSUJfSCAxJyBnZGIvY29u ZmlnLmgKQEAgLTg5MCwyMiArMTE4MSwxMSBAQCBsbiAtc2YgZ2RiICRSUE1fQlVJTERfUk9PVCV7 X3ByZWZpeH0vYmluL2dkYnR1aQogY21wICRSUE1fQlVJTERfUk9PVCV7X21hbmRpcn0vKi9nZGIu MSAkUlBNX0JVSUxEX1JPT1Qle19tYW5kaXJ9LyovZ2RidHVpLjEKIGxuIC1zZiBnZGIuMSAkUlBN X0JVSUxEX1JPT1Qle19tYW5kaXJ9LyovZ2RidHVpLjEKIAotIyBEaXNhYmxlZCBub3cgZm9yIEYt MTQgYmVmb3JlIHJlYmFzZS4KLSMlaWYgMCV7IT9fd2l0aG91dF9weXRob246MX0KLSMjIFRlbXBv cmFyaWx5IG5vdzoKLSNmb3IgTElCIGluIGxpYiBsaWI2NDtkbwotIyAgTElCUEFUSD0iJFJQTV9C VUlMRF9ST09UJXtfZGF0YWRpcn0vZ2RiL2F1dG8tbG9hZCV7X3ByZWZpeH0vJExJQiIKLSMgIG1r ZGlyIC1wICRMSUJQQVRICi0jICAjIGJhc2VuYW1lIGlzIGJlaW5nIHJ1biBvbmx5IGZvciB0aGUg bmF0aXZlIChub24tYmlhcmNoKSBmaWxlLgotIyAgc2VkIC1lICdzLEBweXRob25kaXJALCV7X2Rh dGFkaXJ9L2dkYi9weXRob24sJwkJXAotIyAgICAgIC1lICdzLEB0b29sZXhlY2xpYmRpckAsJXtf cHJlZml4fS8nIiRMSUIsIgkJXAotIyAgICAgIDwgJFJQTV9CVUlMRF9ESVIvJXtnZGJfc3JjfS8l e2xpYnN0ZGN4eHB5dGhvbn0vaG9vay5pbglcCi0jICAgICAgPiAkTElCUEFUSC8kKGJhc2VuYW1l ICV7X3ByZWZpeH0vJXtfbGlifS9saWJzdGRjKysuc28uNi4qKS1nZGIucHkKLSNkb25lCi0jdGVz dCAhIC1lICRSUE1fQlVJTERfUk9PVCV7X2RhdGFkaXJ9L2dkYi9weXRob24vbGlic3RkY3h4Ci0j Y3AgLWEgJFJQTV9CVUlMRF9ESVIvJXtnZGJfc3JjfS8le2xpYnN0ZGN4eHB5dGhvbn0vbGlic3Rk Y3h4CVwKLSMgICAgICAkUlBNX0JVSUxEX1JPT1Qle19kYXRhZGlyfS9nZGIvcHl0aG9uL2xpYnN0 ZGN4eAotIyVlbmRpZiAjIDAleyE/X3dpdGhvdXRfcHl0aG9uOjF9Citmb3IgaSBpbiBgZmluZCAk UlBNX0JVSUxEX1JPT1Qle19kYXRhZGlyfS9nZGIvcHl0aG9uL2dkYiAtbmFtZSAiKi5weSJgCitk bworICAjIEZpbGVzIGNvdWxkIGJlIGFsc28gcGF0Y2hlZCBnZXR0aW5nIHRoZSBjdXJyZW50IHRp bWUuCisgIHRvdWNoIC1yICRSUE1fQlVJTERfRElSLyV7Z2RiX3NyY30vZ2RiL0NoYW5nZUxvZyAk aQorZG9uZQogCiAjIFJlbW92ZSB0aGUgZmlsZXMgdGhhdCBhcmUgcGFydCBvZiBhIGdkYiBidWls ZCBidXQgdGhhdCBhcmUgb3duZWQgYW5kCiAjIHByb3ZpZGVkIGJ5IG90aGVyIHBhY2thZ2VzLgpA QCAtOTk1LDEwICsxMjc1LDExNCBAQCBmaQogJWVuZGlmCiAle19iaW5kaXJ9L2dkYnNlcnZlcgog JXtfbWFuZGlyfS8qL2dkYnNlcnZlci4xKgorJWlmbmFyY2ggczM5MCBzMzkweCAle3NwYXJjfQog JXtfbGliZGlyfS9saWJpbnByb2N0cmFjZS5zbwogJWVuZGlmCislZW5kaWYKIAogJWNoYW5nZWxv ZworKiBTdW4gTm92ICA3IDIwMTAgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhh dC5jb20+IC0gNy4yLTI1LmZjMTQKKy0gaUZvcnQgY29tcGF0LiAtIGNhc2UgaW5zZW5zaXRpdmUg RFdBUkYgbm90IGluIGxvd2VyY2FzZSAoQlogNjQ1NzczKS4KKworKiBUaHUgT2N0IDE0IDIwMTAg SmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4yLTI0LmZjMTQK Ky0gQWRkIGdkYi5zcGVjIGNvbW1lbnRzIG9uIHRoZSAqLnBhdGNoIGZpbGVzIHVwc3RyZWFtIG1l cmdlIHN0YXR1cy4KKworKiBUaHUgT2N0IDE0IDIwMTAgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0 b2NodmlsQHJlZGhhdC5jb20+IC0gNy4yLTIzLmZjMTQKKy0gV29ya2Fyb3VuZCBsaWJycG0gQlog NjQzMDMxIGR1ZSB0byBpdHMgdW5leHBlY3RlZCBleGl0KCkgY2FsbHMgKEJaIDY0Mjg3OSkuCist IEZpeCBjcmFzaCBvbiBDVFJMLUMgd2hpbGUgcmVhZGluZyBhbiBFTEYgc3ltYm9sIGZpbGUgKEJa IDY0Mjg3OSkuCisKKyogVHVlIE9jdCAxMiAyMDEwIEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9j aHZpbEByZWRoYXQuY29tPiAtIDcuMi0yMi5mYzE0CistIHRlc3RzdWl0ZTogUHJvdmlkZSBtaXNz aW5nIGxpYi9nZGItcHl0aG9uLmV4cCAoZm9yIEJaIDYzOTA4OSkuCisKKyogVHVlIE9jdCAxMiAy MDEwIEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcuMi0yMS5m YzE0CistIEZpeCBweXRob24gc3RhbGUgZXJyb3Igc3RhdGUsIGFsc28gZml4IGl0cyBzYXZlL3Jl c3RvcmUgKEJaIDYzOTA4OSkuCistIEZpeCBpbmZlcmlvciBleGVjIG9mIG5ldyBQSUUgeDg2XzY0 IChCWiA2Mzg5NzkpLgorCisqIFR1ZSBPY3QgMTIgMjAxMCBKYW4gS3JhdG9jaHZpbCA8amFuLmty YXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjItMjAuZmMxNAorLSBGaXh1cCBSZWxlYXNlIGZvciAy MC5mYzE0LgorCisqIFR1ZSBPY3QgMTIgMjAxMCBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2 aWxAcmVkaGF0LmNvbT4gLSA3LjItMTkuZmMxNAorLSBVc2UgLmdkYl9pbmRleCB2MyB0byBmaXgg ZXhjZXNzaXZlIHJlc291cmNlcyBycW1udHMgKEJaIDY0MDYzNCwgVG9tIFRyb21leSkuCisKKyog V2VkIE9jdCAgNiAyMDEwIEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29t PiAtIDcuMi0xOC5mYzE0CistIEZpeCBmYWxzZSB3YXJuaW5nOiBub24tYWJzb2x1dGUgZmlsZW5h bWU6IDx0aGUgbWFpbiBleGVjLiBmaWxlPiAoQlogNjQwNjQ4KS4KKworKiBUaHUgU2VwIDMwIDIw MTAgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4yLTE3LmZj MTQKKy0gTmV3IENvbmZsaWN0czogZWxmdXRpbHMgPCAwLjE0OSBkdWUgdG8gdGhlIC5nZGJfaW5k ZXggLmRlYnVnIHN1cHBvcnQuCisKKyogV2VkIFNlcCAyOSAyMDEwIEphbiBLcmF0b2NodmlsIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcuMi0xNi5mYzE0CistIFtpZnVuY10gRml4IGNy YXNoIG9uIGRlbGV0aW5nIHdhdGNocG9pbnQgb2YgYW4gYXV0b3ZhcmlhYmxlIChCWiA2Mzc3NzAp LgorCisqIE1vbiBTZXAgMjcgMjAxMCBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4gLSA3LjItMTUuZmMxNAorLSBSZXZlcnQgdGhlIC1PMCBzd2l0Y2ggZm9ybWVybHkg dG8gd29ya2Fyb3VuZCBHQ0MgQlogNjM0NzU3IChjbW92ZSBidWcpLgorLSBSZW1vdmUgbm8gbG9u Z2VyIHVzZWQgQnVpbGRSZXF1aXJlczogbGlic3RkYysrLgorLSBSZW1vdmUgY29tbWVudGVkIG91 dCBweXRob24gbGlic3RkYysrIC5zcGVjIGNvZGUuCisKKyogU2F0IFNlcCAyNSAyMDEwIEphbiBL cmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcuMi0xNC5mYzE0CistIEZp eHVwICV7X2RhdGFkaXJ9L2dkYi9weXRob24vZ2RiIHRpbWVzdGFtcHMgZm9yIG11bHRpbGliIGNv bmZsaWN0cy4KKworKiBTYXQgU2VwIDI1IDIwMTAgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+IC0gNy4yLTEzLmZjMTQKKy0gRml4IC5nZGJfaW5kZXggZm9yIGJpZy1l bmRpYW4gaG9zdHMgKFRvbSBUcm9tZXkpLgorCisqIFNhdCBTZXAgMjUgMjAxMCBKYW4gS3JhdG9j aHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjItMTIuZmMxNAorLSBGaXggbG9z dCBzaWdpbmZvX3QgaW4gbGludXgtbmF0IChCWiA1OTIwMzEpLgorCisqIFNhdCBTZXAgMjUgMjAx MCBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjItMTEuZmMx NAorLSBGaXggaW5maW5pdGUgbG9vcCBjcmFzaCBvbiBzZWxmLXJlZmVyZW5jaW5nIGNsYXNzIChC WiA2Mjc0MzIpLgorCisqIFRodSBTZXAgMjMgMjAxMCBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRv Y2h2aWxAcmVkaGF0LmNvbT4gLSA3LjItMTAuZmMxNAorLSBnY29yZS8tV2wsLXoscmVscm86IEFs d2F5cyB3cml0ZSBvdXQgYWxsIHRoZSBwYWdlcyB1bnRpbCBrZXJuZWwgZ2V0cyBhIGZpeC4KKwor KiBXZWQgU2VwIDIyIDIwMTAgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+IC0gNy4yLTkuZmMxNAorLSBGaXggZ2NvcmUgd3JpdGVyIGZvciAtV2wsLXoscmVscm8gKFBS IGNvcmVmaWxlcy8xMTgwNCkuCisKKyogV2VkIFNlcCAyMiAyMDEwIEphbiBLcmF0b2NodmlsIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcuMi04LmZjMTQKKy0gRW5hYmxlIHB5dGhvbiBi eSBkZWZhdWx0IGV2ZW4gaW4gQnJldyBhbmQgb24gYWxsIHRoZSBhcmNoZXMgKEJaIDYwOTE1Nyku CisKKyogV2VkIFNlcCAyMiAyMDEwIEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRo YXQuY29tPiAtIDcuMi03LmZjMTQKKy0gcHl0aG9uOiBsb2FkICotZ2RiLnB5IGZvciBzaGxpYnMg ZHVyaW5nIGF0dGFjaCAoQlogNjM0NjYwKS4KKy0gRml4IGRvdWJsZSBmcmVlIGNyYXNoIGR1cmlu ZyBvdmVybG9hZCByZXNvbHV0aW9uIChQUiAxMjAyOCwgU2FtaSBXYWdpYWFsbGEpLgorCisqIFNh dCBTZXAgMTggMjAxMCBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4g LSA3LjItNi5mYzE0CistIEZpeCBweXRob24gZ2RiLnNvbGliX2FkZHJlc3MgKEJaIDYzNDEwOCwg Zml4IGJ5IFBoaWwgTXVsZG9vbikuCistIFRlbXBvcmFyaWx5IGJ1aWxkIHdpdGggLU8wIHRvIHdv cmthcm91bmQgR0NDIEJaIDYzNDc1NyAoY21vdmUgYnVnKS4KKworKiBUdWUgU2VwIDE0IDIwMTAg SmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4yLTUuZmMxNAor LSBGaXggQWRhIHJlZ3Jlc3Npb24gd2hlbiBhbnkgLmdkYl9pbmRleCBsaWJyYXJ5IGlzIHByZXNl bnQuCisKKyogU2F0IFNlcCAxMSAyMDEwIEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEBy ZWRoYXQuY29tPiAtIDcuMi00LmZjMTQKKy0gRml4IHN5bWJvbCBsb29rdXAgbWlzc2VzIG1ldGhv ZHMgb2YgY3VycmVudCBjbGFzcyAoQlogNjMxMTU4LCBTYW1pIFdhZ2lhYWxsYSkuCistIEZpeCBw eXRob24gZ2RiLmV4ZWN1dGUtdG9fc3RyaW5nIHJlZGlyZWN0aW9uIChCWiA2Mjc1MDYsIHdpdGgg UGF1bCBCb2xsZSkuCisKKyogV2VkIFNlcCAgOCAyMDEwIEphbiBLcmF0b2NodmlsIDxqYW4ua3Jh dG9jaHZpbEByZWRoYXQuY29tPiAtIDcuMi0zLmZjMTQKKy0gRG8gbm90IGNyYXNoIG9uIGJyb2tl biBzZXBhcmF0ZSBkZWJ1Z2luZm8gZHVlIHRvIG9sZCBlbGZ1dGlscyAoQlogNjMxNTc1KS4KKwor KiBTYXQgU2VwIDA0IDIwMTAgRGVubmlzIEdpbG1vcmUgPGRlbm5pc0BhdXNpbC51cz4gLSA3LjIt Mi5mYzE0CistIGxpYmlucHJvY3RyYWNlIGRvZXNudCBleGlzdCBvbiBzcGFyYyBhcmNoZXMKKwor KiBGcmkgU2VwICAzIDIwMTAgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+IC0gNy4yLTEuZmMxNAorLSBGb3JtYWwgdXBkYXRlIHRvIHRoZSBmaW5hbCBGU0YgR0RCIHJl bGVhc2UuCisKKyogVHVlIEF1ZyAyNCAyMDEwIERhbiBIb3LDoWsgPGRhblthdF1kYW5ueS5jej4g LSA3LjEuOTAuMjAxMDA4MDYtMTIuZmMxNAorLSBsaWJpbnByb2N0cmFjZSBkb2Vzbid0IGV4aXN0 IG9uIHMzOTAoeCkKKworKiBUaHUgQXVnIDE5IDIwMTAgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0 b2NodmlsQHJlZGhhdC5jb20+IC0gNy4xLjkwLjIwMTAwODA2LTExLmZjMTQKKy0gRml4IGNyYXNo IG9uIE1JIHZhcmlhYmxlIGNhbGxpbmcgaW5mZXJpb3IgZnVuY3Rpb24gKEJaIDYxMDk4NikuCisK KyogVHVlIEF1ZyAxMCAyMDEwIEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQu Y29tPiAtIDcuMS45MC4yMDEwMDgwNi0xMC5mYzE0CistIEZpeCAvdXNyL2Jpbi9nZGItYWRkLWlu ZGV4IG1pc3NpbmcgLW54IGZvciBnZGIuCistIE5ldyBvcHRpb24gLS13aXRoIHByb2ZpbGUgKGRp c2FibGVkIGJ5IGRlZmF1bHQgLSBtaXNzaW5nIHdvcmtsb2FkLCBCWiA2MTU2MDMpLgorCisqIFNh dCBBdWcgIDcgMjAxMCBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4g LSA3LjEuOTAuMjAxMDA4MDYtOS5mYzE0CistIEZpeCBweXRob24gZ2RiLmV4ZWN1dGUgdG9fc3Ry aW5nIHBhZ2luYXRpb24gKEJaIDYyMDkzMCkuCisKKyogRnJpIEF1ZyAgNiAyMDEwIEphbiBLcmF0 b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcuMS45MC4yMDEwMDgwNi04LmZj MTQKKy0gT3V0IG9mIG1lbW9yeSBpcyBqdXN0IGFuIGVycm9yLCBub3QgZmF0YWwgKHVuaW5pdGlh bGl6ZWQgVkxTIHZhcnMsIEJaIDU2ODI0OCkuCisKKyogRnJpIEF1ZyAgNiAyMDEwIEphbiBLcmF0 b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcuMS45MC4yMDEwMDgwNi03LmZj MTQKKy0gRml4IGdjb3JlIGZyb20gdmVyeSBzbWFsbCB0ZXJtaW5hbCB3aW5kb3dzIChCWiA1NTUw NzYpLgorLSBGaXggZmFsc2UgYGZpbGVzeXN0ZW0nIGRlYnVnaW5mbyBycG0gcmVxdWVzdCAoQlog NTk5NTk4KS4KKwogKiBXZWQgSnVsIDI4IDIwMTAgTWFtb3J1IFRhc2FrYSA8bXRhc2FrYUBpb2Eu cy51LXRva3lvLmFjLmpwPiAtIDcuMS45MC4yMDEwMDcyMS02LmZjMTQKIC0gUmVidWlsZCBhZ2Fp bnN0IHB5dGhvbiAyLjcKIAoKZGlmZiAtLWdpdCBhL2dkYjJmYWlsLnNoIGIvZ2RiMmZhaWwuc2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDkzOWMxZTcuLjAwMDAwMDAKLS0tIGEvZ2Ri MmZhaWwuc2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0jIS9iaW4vc2gKLQotaWYg dGVzdCAiJCMiIC1lcSAwCi10aGVuCi0gICAgZWNobyA+JjIgIlVzYWdlOiAkMCBbIC9tbnQvYnJl dy9wYWNrYWdlcy9nZGIvVkVSU0lPTi9ESVNUL2RhdGEvbG9ncy9BUkNIL2J1aWxkLmxvZyBdIgot ICAgIGVjaG8gPiYyICIgICAgICAgWyAvbW50L2JyZXcvc2NyYXRjaC9VU0VSTkFNRS90YXNrX1RB U0tJRC9sb2dzL0FSQ0gvYnVpbGQubG9nIF0iCi0gICAgZWNobyA+JjIgIiAgICAgICBbIC9tbnQv YnJldy93b3JrL3Rhc2tzL1RBU0tJRC9idWlsZC5sb2cgXSAuLi4iCi0gICAgZXhpdCAxCi1maQot Ci1pZiBbIC1kIHRlc3RzIF07dGhlbgotCWlmIFsgISAtZiB0ZXN0cy8udjIgXTt0aGVuCi0JCWVj aG8gPiYyICJEaXJlY3Rvcnkgd2lsbCBiZSBkZWxldGVkITogdGVzdHMiCi0JCWV4aXQgMQotCWZp Ci0Jcm0gLXJmIHRlc3RzCi1maQotbWtkaXIgdGVzdHMKLXRvdWNoIHRlc3RzLy52MgkjIE1hcmtl ciBmb3IgdGhpcyB0ZW1wb3JhcnkgZGlyZWN0b3J5IHR5cGUKLQotZmluZCAiJEAiIC1wYXRoICcq L2J1aWxkLmxvZycgLXByaW50IHwgd2hpbGUgcmVhZCBmCi1kbwotICAgIGVjaG8gIiRmIiA+JjIK LSAgICB2ZXI9YGVjaG8gIiRmIiB8IHNlZCAtbiAtZSAncyxeLipnZGIvXChbLTAtOVwuXSpcKS9c KFteL10qXCkvZGF0YS9sb2dzL1woW14vXSpcKS8uKiQsLVwxLHAnYAotICAgIHJlbD1gZWNobyAi JGYiIHwgc2VkIC1uIC1lICdzLF4uKmdkYi9cKFstMC05XC5dKlwpL1woW14vXSpcKS9kYXRhL2xv Z3MvXChbXi9dKlwpLy4qJCwtXDIscCdgCi0gICAgaXNhPWBlY2hvICIkZiIgfCBzZWQgLW4gLWUg J3MsXi4qZ2RiL1woWy0wLTlcLl0qXCkvXChbXi9dKlwpL2RhdGEvbG9ncy9cKFteL10qXCkvLiok LC5cMyxwJ2AKLSAgICBpZiB0ZXN0IC16ICIkdmVyIiA7IHRoZW4KLSAgICB2ZXI9YGVjaG8gIiRm IiB8IHNlZCAtbiAtZSAncyxeLiovc2NyYXRjaC8uKi90YXNrX1woWzAtOV0qXCkvbG9ncy9cKFte L10qXCkvLiokLC1cMSxwJ2AKLSAgICBmaQotICAgIGlmIHRlc3QgLXogIiR2ZXIiIDsgdGhlbgot ICAgIHZlcj1gZWNobyAiJGYiIHwgc2VkIC1uIC1lICdzLF4uKi9idWlsZC1cKFswLTldKlwpLy4q JCwtXDEscCdgCi0gICAgZmkKLSAgICBpZiB0ZXN0IC16ICIkaXNhIiA7IHRoZW4KLSAgICBpc2E9 YGVjaG8gIiRmIiB8IHNlZCAtbiAtZSAncyxeLiovc2NyYXRjaC8uKi90YXNrX1woWzAtOV0qXCkv bG9ncy9cKFteL10qXCkvLiokLC1cMixwJ2AKLSAgICBmaQotICAgIGlmIHRlc3QgLXogIiR2ZXIi IDsgdGhlbgotICAgIHZlcj1gZWNobyAiJGYiIHwgc2VkIC1uIC1lICdzLF4uKi93b3JrL3Rhc2tz L1woWzAtOV0qXCkvLiokLC1cMSxwJ2AKLSAgICBmaQotICAgICMgYmVnaW4gNjQ0IGdkYi1pMzg2 LXJlZGhhdC1saW51eC1nbnUudGFyLmJ6MgotICAgIGZvciB0IGluIHN1bSBsb2cgOyBkbwotCWlm IHRlc3QgLXogIiRpc2EiIDsgdGhlbgotCQlpc2E9YHV1ZGVjb2RlIDwgIiRmIiAtbyAvZGV2L3N0 ZG91dCB8IGJ1bnppcDIgXAotCQl8IHRhciAtdCAtZiAtICJnZGItKi1yZWRoYXQtbGludXgtZ251 LiR0IiAyPiYxIFwKLQkJfCBzZWQgLW4gJ3MvXmdkYi1cKC4qXCktcmVkaGF0LWxpbnV4LWdudVsu XS4qJC8tXDEvcCcgXAotCQlgCi0JZmkKLQlsaW5lPSJnZGIke3Zlcn0ke3JlbH0ke2lzYX0iCi0J dXVkZWNvZGUgPCAiJGYiIC1vIC9kZXYvc3Rkb3V0IHwgYnVuemlwMiBcCi0JICAgIHwgdGFyIC14 cHZ2TyAtZiAtICJnZGItKi1yZWRoYXQtbGludXgtZ251LiR0IiBcCi0JICAgID4gInRlc3RzLyRs aW5lLiR0IgotICAgIGRvbmUKLWRvbmUKLQotKCBjZCB0ZXN0cyAmJiAvaG9tZS9jeWdudXMvY2Fn bmV5L2Jpbi9kby1hbmFsaXplLXRlc3RzICouc3VtICkKLQotZWNobyAiJFBXRC90ZXN0cy8qLmh0 bWwiCi1scyAtMSB0ZXN0cy8qLmh0bWwgMT4mMgoKZGlmZiAtLWdpdCBhL2dkYjJwYXRjaC5zaCBi L2dkYjJwYXRjaC5zaApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYWY4ODhlMy4uMDAw MDAwMAotLS0gYS9nZGIycGF0Y2guc2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0j IS9iaW4vc2gKLQotIyBHZW5lcmF0ZSBhIHBhdGNoIHRoYXQgYnJpbmdzIHRoZSBtb3N0IHJlY2Vu dCBzbmFwc2hvdCB1cC10by1kYXRlCi0KLSNicmFuY2g9SEVBRAotZGF0ZT0nLUQgMjAwNC0wNi0w Ny1nbXQnCi1kaXI9YGVjaG8gImN2cyR7YnJhbmNofSR7ZGF0ZX0iIHwgdHIgJyAnICctJ2AKLXBh dGNoPWdkYi1gc2VkIC1uIC1lICdzL15WZXJzaW9uOlsJIF0qXCguKlwpJC9cMS9wJyBnZGIuc3Bl Y2AKLQotaWYgdGVzdCAhIC1kICR7ZGlyfS9zcmMKLXRoZW4KLSAgKCBta2RpciAtcCAke2Rpcn0g JiYgY2QgJHtkaXJ9ICYmIGN2cyBcCi0JLWQgOnBzZXJ2ZXI6YW5vbmN2c0Bzb3VyY2VzLnJlZGhh dC5jb206L2N2cy9zcmMgXAotCWNoZWNrb3V0ICR7YnJhbmNofSAke2RhdGV9IGdkYiApCi1maQot Ci0oIGNkICR7ZGlyfS9zcmMgJiYgY3ZzIGRpZmYgLU51IC1yIEJBU0UgLUQgYGRhdGUgLXUgKyIl WS0lbS0lZC1nbXQiYCAuL2dkYiApIHwgc2VkIC1lICcKLS9eSW5kZXg6IC4qXC92ZXJzaW9uXC5p biQvLC9eSW5kZXgvIGQKLS9eSW5kZXg6L2QKLS9ePT09PS9kCi0vXlJDUy9kCi0vXnJldHJpZXZp bmcvZAotL15kaWZmL2QKLS9eLS0tIC9OCi0vXi0tLS4qIFwvZGV2XC9udWxsLyB7Ci0gIHAKLSAg ZAotfQotL14tLS0gXC5cLy8gewotICBzL14tLS0gXChbLWEtekEtWlwvXC4wLTlcK10qXCkvLS0t IFwxLjEvCi0gIHAKLSAgZAotfQotJyB8IHRlZSAkcGF0Y2gtc3luYy1gZGF0ZSAtdSArJVklbSVk YAotCi1leGl0Ci0KLSMgcy9eLS0tIFwoWy1hLXpBLVpcL1wuMC05XCtdKlwpLy0tLSBcMS4xLwot IyBzL15bXCtdW1wrXVtcK10gXChbLWEtekEtWlwvXC4wLTlcK10qXCkvKysrIFwxLwotCgpkaWZm IC0tZ2l0IGEvZ2RiY29tcGFyZSBiL2dkYmNvbXBhcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1 CmluZGV4IGFiYTQ0OTMuLjAwMDAwMDAKLS0tIGEvZ2RiY29tcGFyZQorKysgL2Rldi9udWxsCkBA IC0xLDcxICswLDAgQEAKLSMhIC91c3IvYmluL3BlcmwKLSMgJElkOiBnZGJjb21wYXJlLHYgMS41 IDIwMDgvMDMvMDEgMDg6MDE6NTcgamtyYXRvY2ggRXhwICQKLQotCi11c2Ugc3RyaWN0OwotdXNl IHdhcm5pbmdzOwotdXNlIERhdGE6OkR1bXBlcjsKLQotbXkgJHJldmVyc2U9c2hpZnQgQEFSR1Yg aWYgKCRBUkdWWzBdfHwiIikgZXEgIi1yIjsKLW15ICRzdWZmaXg9c2hpZnQgQEFSR1YgaWYgKCRB UkdWWzBdfHwiIik9fi9eKD86c3VtfGxvZykkLzsKLSRzdWZmaXh8fD0ic3VtIjsKLQotbG9jYWwg KkRJUjsKLW9wZW5kaXIgRElSLCJ0ZXN0cyIgb3IgZGllICJvcGVuZGlyOiAkISI7Ci1teSAlYXJj aDsKLWZvciBteSAkbmFtZSAoc29ydCByZWFkZGlyKERJUikpIHsKLQkjIG5leHQgaWYgJG5hbWUh fi9eZ2RiLS4qWy0uXShbXi0uXSspWy5dJHN1ZmZpeCQvbzsKLQluZXh0IGlmICRuYW1lIX4vXlxk Ky0oLiopWy5dJHN1ZmZpeCQvbzsKLQlwdXNoIEB7JGFyY2h7JDF9fSwkbmFtZTsKLX0KLWNsb3Nl ZGlyIERJUiBvciBkaWUgImNsb3NlZGlyOiAkISI7Ci0KLWZvciAodmFsdWVzKCVhcmNoKSkgewot CW5leHQgaWYgMj09QCRfOwotCXdhcm4gIlNpbmdsZSBlbGVtZW50OiAiLiR7JF99WzBdLiJcbiIg aWYgMT09QCRfOwotCWRpZSAiTm90IDIgZWxlbWVudHM6XG4iLkR1bXBlcigkXykgaWYgMSE9QCRf OwotfQotCi1zeXN0ZW0oInJtIC1mIHRlc3RzL2dkYmNvbXBhcmUtKi5kaWZmIikgYW5kIGRpZTsK LQotZm9yIG15ICRhcmNoIChzb3J0IGtleXMoJWFyY2gpKSB7Ci0JbmV4dCBpZiAyIT1AeyRhcmNo eyRhcmNofX07Ci0JIyBzdWIgdHJhbnMgeyByZXR1cm4geyIuIj0+MCwiLSI9PjF9LT57KCRfWzBd PX4vKFstLl0pW14tLl0rWy5dXHcrJC8pWzBdfS4kX1swXTsgfTsKLQlzdWIgdHJhbnMgeyByZXR1 cm4gJF9bMF07IH07Ci0JbXkgQHNvcnRlZD1zb3J0IHsgbXkgJGExPXRyYW5zICRhOyBteSAkYjE9 dHJhbnMgJGI7ICgkYjEgY21wICRhMSkgKiAoJHJldmVyc2UgPyAtMSA6ICsxKTsgfSBAeyRhcmNo eyRhcmNofX07Ci0JZG8geyBzeXN0ZW0gJF8gYW5kIGRpZSAkXzsgfSBmb3IgImRpZmYgLXUgdGVz dHMvJyIuJHNvcnRlZFsxXS4iJyB0ZXN0cy8nIi4kc29ydGVkWzBdLiInID50ZXN0cy9nZGJjb21w YXJlLSckYXJjaCcuJyRzdWZmaXgnLmRpZmY7dHJ1ZSI7Ci19Ci0KLXN5c3RlbSgidmltIHRlc3Rz L2dkYmNvbXBhcmUtKi4nJHN1ZmZpeCcuZGlmZiIpOwotCi1fX0VORF9fOwotCi0tcnctcnctci0t ICAxIGprcmF0b2NoIGprcmF0b2NoIDI4MjA1OTkgRGVjIDExIDE2OjIzIGdkYi00NTA4OTQtaTM4 Ni5sb2cKLS1ydy1ydy1yLS0gIDEgamtyYXRvY2ggamtyYXRvY2ggIDY2MTY1NyBEZWMgMTEgMTY6 MjMgZ2RiLTQ1MDg5NC1pMzg2LnN1bQotLXJ3LXJ3LXItLSAgMSBqa3JhdG9jaCBqa3JhdG9jaCAz MjM4MDg4IERlYyAxMSAxNjoyMyBnZGItNDUwODk0LWlhNjQubG9nCi0tcnctcnctci0tICAxIGpr cmF0b2NoIGprcmF0b2NoICA2NjI3OTYgRGVjIDExIDE2OjIzIGdkYi00NTA4OTQtaWE2NC5zdW0K LS1ydy1ydy1yLS0gIDEgamtyYXRvY2ggamtyYXRvY2ggMjk1OTMzOSBEZWMgMTEgMTY6MjMgZ2Ri LTQ1MDg5NC1wcGMubG9nCi0tcnctcnctci0tICAxIGprcmF0b2NoIGprcmF0b2NoICA2NzgxMTQg RGVjIDExIDE2OjIzIGdkYi00NTA4OTQtcHBjLnN1bQotLXJ3LXJ3LXItLSAgMSBqa3JhdG9jaCBq a3JhdG9jaCAyOTMyNzYwIERlYyAxMSAxNjoyMyBnZGItNDUwODk0LXBwYzY0LmxvZwotLXJ3LXJ3 LXItLSAgMSBqa3JhdG9jaCBqa3JhdG9jaCAgNjc0MDQ4IERlYyAxMSAxNjoyMyBnZGItNDUwODk0 LXBwYzY0LnN1bQotLXJ3LXJ3LXItLSAgMSBqa3JhdG9jaCBqa3JhdG9jaCAyODU1MjcwIERlYyAx MSAxNjoyMyBnZGItNDUwODk0LXMzOTAubG9nCi0tcnctcnctci0tICAxIGprcmF0b2NoIGprcmF0 b2NoICA2NjYwNzkgRGVjIDExIDE2OjIzIGdkYi00NTA4OTQtczM5MC5zdW0KLS1ydy1ydy1yLS0g IDEgamtyYXRvY2ggamtyYXRvY2ggMjg4MzAyNyBEZWMgMTEgMTY6MjMgZ2RiLTQ1MDg5NC1zMzkw eC5sb2cKLS1ydy1ydy1yLS0gIDEgamtyYXRvY2ggamtyYXRvY2ggIDY2ODI3OSBEZWMgMTEgMTY6 MjMgZ2RiLTQ1MDg5NC1zMzkweC5zdW0KLS1ydy1ydy1yLS0gIDEgamtyYXRvY2ggamtyYXRvY2gg MjkxMTEzOCBEZWMgMTEgMTY6MjMgZ2RiLTQ1MDg5NC14ODZfNjQubG9nCi0tcnctcnctci0tICAx IGprcmF0b2NoIGprcmF0b2NoICA2NjY5OTkgRGVjIDExIDE2OjIzIGdkYi00NTA4OTQteDg2XzY0 LnN1bQotLXJ3LXJ3LXItLSAgMSBqa3JhdG9jaCBqa3JhdG9jaCAyODgyMjU3IERlYyAxMSAxNjoy MyBnZGItNi41LTEzLmZjNi5pMzg2LmxvZwotLXJ3LXJ3LXItLSAgMSBqa3JhdG9jaCBqa3JhdG9j aCAgNjY3OTI5IERlYyAxMSAxNjoyMyBnZGItNi41LTEzLmZjNi5pMzg2LnN1bQotLXJ3LXJ3LXIt LSAgMSBqa3JhdG9jaCBqa3JhdG9jaCAzMzExNDI3IERlYyAxMSAxNjoyMyBnZGItNi41LTEzLmZj Ni5pYTY0LmxvZwotLXJ3LXJ3LXItLSAgMSBqa3JhdG9jaCBqa3JhdG9jaCAgNjY5MjIxIERlYyAx MSAxNjoyMyBnZGItNi41LTEzLmZjNi5pYTY0LnN1bQotLXJ3LXJ3LXItLSAgMSBqa3JhdG9jaCBq a3JhdG9jaCAzMDI1MTI2IERlYyAxMSAxNjoyMyBnZGItNi41LTEzLmZjNi5wcGMubG9nCi0tcnct cnctci0tICAxIGprcmF0b2NoIGprcmF0b2NoICA2ODQ1NzcgRGVjIDExIDE2OjIzIGdkYi02LjUt MTMuZmM2LnBwYy5zdW0KLS1ydy1ydy1yLS0gIDEgamtyYXRvY2ggamtyYXRvY2ggMzI2NzYxMSBE ZWMgMTEgMTY6MjMgZ2RiLTYuNS0xMy5mYzYucHBjNjQubG9nCi0tcnctcnctci0tICAxIGprcmF0 b2NoIGprcmF0b2NoICA2ODIzNDggRGVjIDExIDE2OjIzIGdkYi02LjUtMTMuZmM2LnBwYzY0LnN1 bQotLXJ3LXJ3LXItLSAgMSBqa3JhdG9jaCBqa3JhdG9jaCAyOTEyOTYzIERlYyAxMSAxNjoyMyBn ZGItNi41LTEzLmZjNi5zMzkwLmxvZwotLXJ3LXJ3LXItLSAgMSBqa3JhdG9jaCBqa3JhdG9jaCAg NjcyNTA1IERlYyAxMSAxNjoyMyBnZGItNi41LTEzLmZjNi5zMzkwLnN1bQotLXJ3LXJ3LXItLSAg MSBqa3JhdG9jaCBqa3JhdG9jaCAyOTQyMjk3IERlYyAxMSAxNjoyMyBnZGItNi41LTEzLmZjNi5z MzkweC5sb2cKLS1ydy1ydy1yLS0gIDEgamtyYXRvY2ggamtyYXRvY2ggIDY3NDY3NiBEZWMgMTEg MTY6MjMgZ2RiLTYuNS0xMy5mYzYuczM5MHguc3VtCi0tcnctcnctci0tICAxIGprcmF0b2NoIGpr cmF0b2NoIDI5NzQ4ODAgRGVjIDExIDE2OjIzIGdkYi02LjUtMTMuZmM2Lng4Nl82NC5sb2cKLS1y dy1ydy1yLS0gIDEgamtyYXRvY2ggamtyYXRvY2ggIDY3MzM5NiBEZWMgMTEgMTY6MjMgZ2RiLTYu NS0xMy5mYzYueDg2XzY0LnN1bQotCgpkaWZmIC0tZ2l0IGEvZ2RicGF0Y2hubyBiL2dkYnBhdGNo bm8KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGIzNTU2MTguLjAwMDAwMDAKLS0tIGEv Z2RicGF0Y2hubworKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotIyEgL2Jpbi9zaAotIyAk SWQ6IGdkYnBhdGNobm8sdiAxLjEgMjAwNi8xMi8yOSAyMDozNTo0MyBqa3JhdG9jaCBFeHAgJAot IyBQcmludCB0aGUgZmlyc3QgdW51c2VkIHBhdGNoIG51bWJlciBhY3Jvc3MgYWxsIHRoZSBjdXJy ZW50IHBhY2thZ2UncyBicmFuY2hlcy4KLQotZWNobyAkWzErJChjYXQgLi4vKi8qLnNwZWN8c2Vk IC1uICdzL15bIyAlXSpwYXRjaFwoWzAtOV0qXCkuKiQvXDEvcCd8c29ydCAtcm51fGhlYWQgLW4x KV0KCmRpZmYgLS1naXQgYS9zb3VyY2VzIGIvc291cmNlcwppbmRleCA4MmNlZDYyLi42YzJkNzM0 IDEwMDY0NAotLS0gYS9zb3VyY2VzCisrKyBiL3NvdXJjZXMKQEAgLTEgKzEgQEAKLTI2YzY0MzI1 MjFlZmEyOTZiZjhiZGNhZTQ2NWMwNDhiICBnZGItNy4xLjkwLjIwMTAwNzIxLnRhci5iejIKKzY0 MjYwZTZjNTY5NzllZTc1MGEwMTA1NWYxNjA5MWE1ICBnZGItNy4yLnRhci5iejIK